%%% $B!VC1=c!W$J2<@~N`%^%/%m(J
%%% (C) 2006--2007 T. Yoshinaga
%%%
%%% $B$3$N%U%!%$%k$O!V8=>u$N$^$^!W$GDs6!$5$l!$(J
%%% $B$3$N%U%!%$%k$,;HMQL\E*$K1h$C$?5!G=$rDs6!$9$k$3$H$OJ]>Z$5$l$^$;$s!%(J
%%% $B$^$?!$$3$N%U%!%$%k$r;HMQ$7$?$3$H$"$k$$$O;HMQ$G$-$J$+$C$?$3$H$K$h$j!$(J
%%% $BD>@\E*$"$k$$$O4V@\E*$K@8$8$?$$$+$J$kB;32$KBP$7$F$b!$(J
%%% $B$3$N%U%!%$%k$N:n@.<T$O$$$+$J$k@UG$$bIi$o$J$$$b$N$H$7$^$9!%(J
%%%
%%% $B2~JQ!&:FG[I[$K$D$$$F(J:
%%% $B$3$N%U%!%$%k$N:n@.<T0J30$,$3$N%U%!%$%k$N2~JQHG$r(J
%%% $B$3$N%U%!%$%k$HF10l$NL>>N$G:FG[I[$9$k$3$H$r6X$8$^$9!%(J
%%% $B$?$@$7!$!V2~JQ$r;\$5$J$$>uBV$G$N:FG[I[!W!$!V2~JQHG$NJL%U%!%$%kL>$G$N(J
%%% $B;HMQ!&:FG[I[!W$O!$0J2<$N(J 2 $B>r7o$K=>$&8B$j<+M3$G$9!%(J
%%% $B!&Ev3:$N2~JQHG$*$h$S$=$NGI@8J*$N%U%!%$%kL>$O$3$N%U%!%$%k$NL>>N(J
%%%   $B!J(Juline--.sty$B!K$H$O0[$J$k$b$N$K$9$k!%(J
%%% $B!&Ev3:$N2~JQHG$NGI@8J*$KBP$7$F$b$3$l$i(J 2 $B>r7o$r2]$9!%(J
%%% %%% $B>r7o=*$o$j(J
%%%
%%% $BMQK!(J:
%%% \uline[<options>]{<text>}
%%% <text>: $B2<@~$J$I$rIU2C$9$kBP>]$NJ8;zNs(J
%%% <options>:
%%% position=<dimen>:  $B2<@~$J$I$N4p=`0LCV$r@#K!(J <dimen> $B$N$H$3$m$K@_Dj(J
%%%                    $B!J%Y!<%9%i%$%s$N$H$3$m$,(J 0pt$B$G!$2#AH$_;~$N>e8~$-$,@5!K(J
%%% lines=<number>:    $B2<@~$J$I$NK\?t$r@5@0?t(J <number> $B$K@_Dj(J
%%% width=<dimen>:     $B2<@~$J$I$NB@$5$r@#K!(J <dimen> $B$K@_Dj(J
%%% linegap=<dimen>:   2 $B=E0J>e$N2<@~$J$I$G$N@~$N4V3V$r@#K!(J <dimen> $B$K@_Dj(J
%%% dashlength=<size>: $BGK@~$N7+$jJV$7%Q%?!<%s$N<B@~ItJ,$ND9$5$r(J <size> $B$K@_Dj(J
%%% dashgap=<gap>:     $BGK@~$N7+$jJV$7%Q%?!<%s$N6uGrItJ,$ND9$5$r(J <gap> $B$K@_Dj(J
%%% dotgap=<gap>:      $BE@@~$NE@$N4V3V$r(J <gap> $B$K@_Dj(J
%%% foreground:        $B2<@~$J$I$r!$$=$l$i$rIU2C$9$kBP>]$NJ8;zNs$NA0LL$KIA2h(J
%%% background:        $B2<@~$J$I$r!$$=$l$i$rIU2C$9$kBP>]$NJ8;zNs$NGX8e$KIA2h(J
%%% nomath:            <text> $BItJ,$K4^$^$l$k?t<0Cf$G$N9TJ,3d=hM}$rM^;_(J
%%% color=<colorname>: $B2<@~$J$I$N?'$r(J <colorname>$B!J?'L>!K$K@_Dj(J
%%% color={[<model>]<parameters>}:
%%% $B2<@~$J$I$N?'$r(J \color[<model>]{<parameters>} $B$G;XDj$5$l$k?'$K@_Dj(J
%%%
%%% \mline$B!$(J\oline $B$K$D$$$F$b=q<0$OF1$8$G$9!JC1$K(J \uline $B$,2<@~$r0z$/$N$KBP$7!$(J
%%% \mline$B!$(J\oline $B$O$=$l$>$lBG$A>C$7@~!$>e@~$r0z$/$N$,(J
%%% $B%G%U%)%k%H@_Dj$H$$$&DxEY$N0c$$$7$+$"$j$^$;$s!K!%(J
%%% $B$^$?!$(J\uline $B$J$I$K$D$$$F(J line => dash $B$H$9$l$PGK@~HG$K!$(J
%%% line => wave $B$H$9$l$PGH@~HG$K!$(Jline => dotline $B$H$9$l$PE@@~HG$K$J$j$^$9!%(J
%%% $BNc$($P!$(J\udash $B$OGK@~$N2<@~$r:n@.$7$^$9!%(J
%%% $B>\$7$$MQK!!&MQNc$*$h$SCm0U;v9`$K4X$7$F$O%^%K%e%"%k!J(Juline--.tex$B!K$r(J
%%% $B;2>H$7$F$/$@$5$$!%(J
%%% \version{2007/07/09}
\ProvidesPackage{uline--}[2007/07/09 v.2.3.4 ``simple'' underlines]
\edef\@uline@temp{\catcode"1B=\number\catcode"1B\relax}
\catcode"1B=12\relax
\newif\if@uline@altglue \@uline@altgluefalse
\def\UseAltLeaders{\@uline@altgluetrue}
\@onlypreamble\UseAltLeaders
%%% \UseAltLeaders $B$O!$J#?t$N?'$N2<@~$r=E$M$k>l9g$J$I$K$D$$$F2<@~$N=PNO$,(J
%%% $B68$&>l9g$K%j!<%@!<It$N=hM}$r!J?'$N=hM}$K4X$7$F$O!KL5Fq$J$b$N$K(J
%%% $B<h$j49$($k;X<($r9T$&%^%/%m$G$9!J$?$@$7!$=hM}$,=E$?$/$J$j!$$^$?!$(J
%%% $B2<@~It$K(J \@uline@altglue@unit $B$N(J 2 $BG\L$K~$NES@Z$l$,@8$8$k$3$H$,$"$j$^$9!K!%(J
%%% $B$^$?!$(J\UseAltLeaders $B$O%W%j%"%s%V%k%3%^%s%I$K$7$J$/$F$b$h$$$N$G$9$,!$(J
%%% \nonletter{\protect\UseAltLeaders} $B$N$h$&$J5-=R$rMQ$$$F(J
%%% $BFbB&$N(J \uline $B$J$I$K$@$1(J \UseAltLeaders $B;XDj$rE,MQ$5$;$k$H(J
%%% $B=hM}$,GKC>$9$k$?$a!$G0$N$?$a$K%W%j%"%s%V%k%3%^%s%I$H$7$F$$$^$9!%(J
\DeclareOption{altleaders}{\@uline@altgluetrue}
\let\@uline@uwave@adjust\relax
\DeclareOption{usepk}{\def\@uline@uwave@adjust{\kern-.3\p@}}
\DeclareOption{usetype1}{\let\@uline@uwave@adjust\@empty}
\DeclareOption{noverb}{%
   \AtEndOfPackage{\def\@uline@preprocess{\@uline@main@process}}}
\DeclareOption{autohyphenate}{%
   \AtEndOfPackage{\let\@uline@hyphenate\@uline@hyphenate@}}
\DeclareOption{nomath}{%
   \AtEndOfPackage{\let\@uline@process@math\@uline@process@math@}}
\DeclareOption{mathdelimcheck}{%
   \AtEndOfPackage{\let\@ulinepre@checktoken@\@ulinepre@checktoken@@}}%%% experimental
\newif\if@uline@useTPIC \@uline@useTPICfalse
\DeclareOption{tpic}{\@uline@useTPICtrue}
\ProcessOptions\relax
\expandafter\ifx\csname kernel@ifnextchar\endcsname\relax
   \let\kernel@ifnextchar\@ifnextchar
\fi
\DeclareRobustCommand*\uline{%
   \edef\@uline@linepos@default{%
      \iftdir \@ulineposition@tdir \else \@ulineposition@ydir \fi}%
   \let\@uline@default@thickness\@ulinewidth
   \let\@uline@default@options\@empty
   \@testopt{\@uline b}{}}
\DeclareRobustCommand*\mline{%
   \edef\@uline@linepos@default{%
      \iftdir \@mlineposition@tdir \else \@mlineposition@ydir \fi}%
   \let\@uline@default@thickness\@mlinewidth
   \let\@uline@default@options\@empty
   \@testopt{\@uline c}{}}
\DeclareRobustCommand*\oline{%
   \edef\@uline@linepos@default{%
      \iftdir \@olineposition@tdir \else \@olineposition@ydir \fi}%
   \let\@uline@default@thickness\@olinewidth
   \let\@uline@default@options\@empty
   \@testopt{\@uline t}{}}
\DeclareRobustCommand*\udash{%
   \edef\@uline@linepos@default{%
      \iftdir \@udashposition@tdir\else \@udashposition@ydir \fi}%
   \let\@uline@default@thickness\@udashwidth
   \def\@uline@default@options{type=dashline}%
   \@testopt{\@uline b}{}}
\DeclareRobustCommand*\mdash{%
   \edef\@uline@linepos@default{%
      \iftdir \@mdashposition@tdir \else \@mdashposition@ydir \fi}%
   \let\@uline@default@thickness\@mdashwidth
   \def\@uline@default@options{type=dashline}%
   \@testopt{\@uline c}{}}
\DeclareRobustCommand*\odash{%
   \edef\@uline@linepos@default{%
      \iftdir \@odashposition@tdir \else \@odashposition@ydir \fi}%
   \let\@uline@default@thickness\@odashwidth
   \def\@uline@default@options{type=dashline}%
   \@testopt{\@uline t}{}}
\DeclareRobustCommand*\uwave{%
   \edef\@uline@linepos@default{%
      \iftdir \@uwaveposition@tdir\else \@uwaveposition@ydir \fi}%
   \let\@uline@default@thickness\@uwavewidth
   \def\@uline@default@options{type=wavyline}%
   \@testopt{\@uline b}{}}
\DeclareRobustCommand*\mwave{%
   \edef\@uline@linepos@default{%
      \iftdir \@mwaveposition@tdir \else \@mwaveposition@ydir \fi}%
   \let\@uline@default@thickness\@mwavewidth
   \def\@uline@default@options{type=wavyline}%
   \@testopt{\@uline c}{}}
\DeclareRobustCommand*\owave{%
   \edef\@uline@linepos@default{%
      \iftdir \@owaveposition@tdir \else \@owaveposition@ydir \fi}%
   \let\@uline@default@thickness\@owavewidth
   \def\@uline@default@options{type=wavyline}%
   \@testopt{\@uline t}{}}
\DeclareRobustCommand*\udotline{%
   \edef\@uline@linepos@default{%
      \iftdir \@udotlineposition@tdir\else \@udotlineposition@ydir \fi}%
   \let\@uline@default@thickness\@udotlinewidth
   \def\@uline@default@options{type=dottedline}%
   \@testopt{\@uline b}{}}
\DeclareRobustCommand*\mdotline{%
   \edef\@uline@linepos@default{%
      \iftdir \@mdotlineposition@tdir \else \@mdotlineposition@ydir \fi}%
   \let\@uline@default@thickness\@mdotlinewidth
   \def\@uline@default@options{type=dottedline}%
   \@testopt{\@uline c}{}}
\DeclareRobustCommand*\odotline{%
   \edef\@uline@linepos@default{%
      \iftdir \@odotlineposition@tdir \else \@odotlineposition@ydir \fi}%
   \let\@uline@default@thickness\@odotlinewidth
   \def\@uline@default@options{type=dottedline}%
   \@testopt{\@uline t}{}}
\DeclareRobustCommand*\xout{%
   \edef\@uline@linepos@default{\z@}%
   \def\@uline@default@thickness{.4\p@}
   \def\@uline@default@options{type=xout}%
   \@testopt{\@uline u}{}}
\@tfor\@tempa:={line}{dash}{wave}{dotline}\do{%
   \@tfor\@tempb:=umo\do{%
      \edef\@tempc{%
         \noexpand\DeclareRobustCommand*%
            \expandafter\noexpand\csname \@tempb\@tempa position\endcsname[1]%
            {\noexpand\@uline@set@defaultposition{\@tempb\@tempa}{##1}}%
         \noexpand\DeclareRobustCommand*%
            \expandafter\noexpand\csname \@tempb\@tempa width\endcsname[1]%
            {\edef\expandafter
               \noexpand\csname @\@tempb\@tempa width\endcsname{##1}}}%
      \@tempc
      \csname \@tempb\@tempa width\endcsname{.4pt}}}
\udotlinewidth{1pt}\mdotlinewidth{1pt}\odotlinewidth{1pt}
\def\@uline@set@defaultposition#1#2{%
   \expandafter\edef\csname @#1position@tdir\endcsname{#2}%
   \expandafter\edef\csname @#1position@ydir\endcsname{#2}}
\def\@ulineposition@tdir{-.6zw}
\def\@ulineposition@ydir{-3pt}
\def\@mlineposition@tdir{0pt}
\edef\@mlineposition@ydir{%
   \expandafter\ifx\csname pfmtname\endcsname\relax .5ex\else .38zh\fi}
\def\@olineposition@tdir{.6zw}
\edef\@olineposition@ydir{%
   \expandafter\ifx\csname pfmtname\endcsname\relax 2ex\else 1zh\fi}
\@tfor\@tempa:={dash}{wave}{dotline}\do{%
   \@tfor\@tempb:=umo\do{%
      \expandafter\let
         \csname @\@tempb\@tempa position@tdir\expandafter\endcsname
         \csname @\@tempb lineposition@tdir\endcsname
      \expandafter\let
         \csname @\@tempb\@tempa position@ydir\expandafter\endcsname
         \csname @\@tempb lineposition@ydir\endcsname}}
\def\setulinestrut#1#2{%%% #1: height, #2: depth
   \def\@ulinestrutht{#1}%
   \def\@ulinestrutdp{#2}}
\setulinestrut{}{}%%% use default (see \@uline@setstrut)
\expandafter\ifx\csname pfmtname\endcsname\relax
   \def\@uline@setstrut{%
      \ifx\@ulinestrutht\@empty
         \def\@uline@strutht{.85\ht\strutbox}%
      \else
         \let\@uline@strutht\@ulinestrutht
      \fi
      \ifx\@ulinestrutdp\@empty
         \def\@uline@strutdp{.85\dp\strutbox}%
      \else
         \let\@uline@strutdp\@ulinestrutdp
      \fi}
   \expandafter\let\csname iftdir\expandafter\endcsname\csname iffalse\endcsname
   \let\tbaselineshift\dimen@ii
   \let\@uline@sample@jchar\@empty
   %%% $B0J2<$N(J 4 $B8D$O$3$A$i$KJ,4t$7$F$$$k>l9g$K$OMQ$$$i$l$J$$$O$:$G$9$,!$(J
   %%% $BG0$N$?$a$K%@%_!<$rMQ0U$7$^$9!%(J
   \def\prebreakpenalty{\z@ \begingroup \afterassignment\endgroup \count@=}
   \let\postbreakpenalty\prebreakpenalty
   \def\xspcode#1{\z@}
   \let\inhibitxspcode\xspcode
\else
   \edef\@uline@setstrut{%
      \expandafter\noexpand\csname iftdir\endcsname
         \expandafter\noexpand\csname ifmdir\endcsname
            \def\noexpand\@tempa{.8}%
            \def\noexpand\@tempb{\zstrutbox}%
         \expandafter\noexpand\csname else\endcsname
            \def\noexpand\@tempa{.8}%
            \def\noexpand\@tempb{\tstrutbox}%
         \expandafter\noexpand\csname fi\endcsname
      \expandafter\noexpand\csname else\endcsname
         \def\noexpand\@tempa{.85}%
         \def\noexpand\@tempb{\strutbox}%
      \expandafter\noexpand\csname fi\endcsname
      \noexpand\ifx\noexpand\@ulinestrutht\noexpand\@empty
         \edef\noexpand\@uline@strutht{\noexpand\@tempa\ht\noexpand\@tempb}%
      \noexpand\else
         \let\noexpand\@uline@strutht\noexpand\@ulinestrutht
      \noexpand\fi
      \noexpand\ifx\noexpand\@ulinestrutdp\noexpand\@empty
         \edef\noexpand\@uline@strutdp{\noexpand\@tempa\dp\noexpand\@tempb}%
      \noexpand\else
         \let\noexpand\@uline@strutdp\noexpand\@ulinestrutdp
      \noexpand\fi}
   \def\@uline@sample@jchar{$BG-(J}%%% $B%?%$%W(J 0 $B$NJ8;z$J$i2?$G$b$h$$(J
\fi
\newif\if@uline@check@first@glue
\newif\if@uline@inhibitglue
\newif\if@uline@group@head
\let\@uline@first@item@after@group\@empty
\let\@uline@text@command\text@command
\def\@uline@inner@text@command#1{%
   \let\check@icl\@empty
   \let\check@icr\@empty}
\def\@uline{%
   \ifmmode \expandafter\@math@uline
   \else    \expandafter\@text@uline
   \fi}
\def\@text@uline#1[#2]{%
   \ifvmode
      \leavevmode
      \@uline@check@first@gluefalse
   \else
      \@uline@check@first@gluetrue
   \fi
   \iftdir \setbox\z@\hbox{\@uline@sample@jchar}\fi
   \begingroup
   \@uline@init@data{#1}{#2}%
   \@uline@init@extra@data
   \def\@uline@main@process{\@text@uline@}%
   \@uline@preprocess}
\def\@text@uline@#1{%
   \begingroup
   \def\@tempa{\@text@uline@@{#1}}%
   \futurelet\@uline@first@item@after@group\@tempa}
\def\@text@uline@@#1{%
   \global\let\@uline@gtempa= %%% Do NOT remove this space.
      \@uline@first@item@after@group
   \@uline@redefine@commands
   \@uline@redefine@extra@commands
   \protected@edef\@tempa{#1}%
   \expandafter\endgroup\expandafter\@text@uline@@@
   \expandafter\@@uline\@tempa\@nnil
   \let\@uline@text@command\@uline@inner@text@command
   \@uline@restore@UrlCondition
   \expandafter\@uline@text
   \expandafter\endgroup\@uline@last@glue}
\def\@text@uline@@@{%
   \let\@uline@first@item@after@group= %%% Do NOT remove this space.
      \@uline@gtempa
   \global\let\@uline@gtempa\relax
   \let\highlight\@uline@@highlight@exec}
\def\@math@uline#1[#2]{%
   \let\@uline@math@init\@empty
   \ifnum\fam<\z@\else \edef\@uline@math@init{\fam=\the\fam\relax}\fi
   \hbox\bgroup
      \@uline@init@data{#1}{#2}%
      \@uline@init@extra@data
      \def\@uline@main@process{\@math@uline@}%
      \@uline@preprocess}
\def\@math@uline@#1{%
      \let\@uline@text@command\text@command
      \let\highlight\@uline@@highlight@exec
      \@uline@item{$\@uline@math@init #1$}%
      \egroup}
\def\@uline@preprocess{%
   \@tempcnta\m@ne
   \afterassignment\@ulinepre@bgroup
   \let\let@token=}
\def\@ulinepre@bgroup{%
   \advance\@tempcnta\@ne
   \toks@{}%
   \@ulinepre@loop}
\def\@ulinepre@loop{\futurelet\let@token\@ulinepre@loop@}
\def\@ulinepre@loop@{%
   \ifx\let@token\@sptoken       \let\@tempa\@ulinepre@addspace
   \else\ifx\let@token\bgroup    \let\@tempa\@ulinepre@xbgroup
   \else\ifx\let@token\egroup    \let\@tempa\@ulinepre@egroup
   \else\ifx\let@token\verb      \let\@tempa\@ulinepre@process@verb
   \else\ifx\let@token\index     \let\@tempa\@ulinepre@process@index
   \else\ifx\let@token\glossary  \let\@tempa\@ulinepre@process@glossary
   \else                         \let\@tempa\@ulinepre@checktoken
   \fi\fi\fi\fi\fi\fi
   \@tempa}
\let\@uline@urllike@cmds\@empty
\def\@ulinepre@checktoken#1{%
   \def\@ulinepre@next{\@ulinepre@checktoken@}%
   \def\@tempa{#1}%
   \@tfor\@tempb:=\nonletter\url\Url\do{%
      \ifx\@tempa\@tempb
         \edef\@ulinepre@next{%
            \expandafter\noexpand
               \csname
                  @ulinepre@%
                  \expandafter\expandafter\expandafter\@gobble
                  \expandafter\string\@tempb
               \endcsname}%
         \@break@tfor
      \fi}%
   \def\@tempb{\@tfor\@tempb:=}%
   \expandafter\@tempb\@uline@urllike@cmds\do{%
      \ifx\@tempa\@tempb
         \def\@ulinepre@next{\@ulinepre@urllike}%
         \@break@tfor
      \fi}%
   \@ulinepre@next#1}
\let\@ulinepre@skip@list\@empty
\def\@ulinepre@checktoken@@#1{%
   \if\noexpand#1\relax
      \expandafter\in@\expandafter#1\expandafter{\@ulinepre@skip@list}%
      \ifin@\else
         \expandafter\expandafter\expandafter\in@
         \expandafter\expandafter\expandafter#1%
         \expandafter\expandafter\expandafter{%
            \expandafter\@uline@commands@to@protect
            \@uline@math@commands@to@protect}%
         \ifin@\else
            \edef\@tempb{\meaning#1}%
            \edef\@tempx{\expandafter\strip@prefix\@tempb>>%
               \@uline@keyword@delimiter@}%
            \def\@tempy{\def\@tempy####1}%
            \expandafter\@tempy\@uline@keyword@delimiter@##2\@nil{%
               \def\@tempx{##1}\def\@tempy{##2}}%
            \expandafter\@tempy\@tempx\@nil
            \ifx\@tempx\@empty
               \@csc@t\@tempx\@gobble#1%
               \ifx\@tempx\@empty\else \ifx\@tempx\space\else
                  \def\@tempy##1\@nil{\def\@tempx{##1}}%
                  \afterassignment\@tempy
                  \count@=\@tempx\relax\@nil
                  \def\@tempy{\relax}%
                  \ifx\@tempx\@tempy
                     \global\@uline@append@tokens
                        \@uline@math@commands@to@protect#1%
                  \fi
               \fi\fi
            \fi
         \fi
         \global\@uline@append@tokens\@ulinepre@skip@list#1%
      \fi
   \fi
   \@ulinepre@addtoken#1}
\def\@ulinepre@addtoken#1{%
   \toks@\expandafter{\the\toks@#1}%
   \@ulinepre@loop}
\let\@ulinepre@checktoken@\@ulinepre@addtoken
\def\@ulinepre@nonletter#1#2{%
   \toks@\expandafter{\the\toks@#1{#2}}%
   \@ulinepre@loop}
\begingroup
\def\:{\def\@ulinepre@addspace}
\expandafter\endgroup\: {%
   \toks@\expandafter\expandafter\expandafter{%
      \expandafter\the\expandafter\toks@\space}%
   \@ulinepre@loop}
\def\@ulinepre@xbgroup{%
   \begingroup
   \afterassignment\@ulinepre@bgroup
   \let\let@token=}
\def\@ulinepre@egroup{%
   \ifnum\@tempcnta>\z@ \expandafter\@ulinepre@egroup@
   \else                \expandafter\@ulinepre@endprocess
   \fi}
\def\@ulinepre@egroup@{%
   \expandafter\endgroup
   \expandafter\toks@\expandafter\expandafter\expandafter{%
      \expandafter\the\expandafter\toks@\expandafter{\the\toks@}}%
   \afterassignment\@ulinepre@loop
   \let\let@token=}
\def\@ulinepre@endprocess{%
   \afterassignment\@ulinepre@endprocess@
   \let\let@token=}
\def\@ulinepre@endprocess@{%
   \expandafter\@uline@main@process\expandafter{\the\toks@}}
\def\@ulinepre@expandit#1{\expandafter\@ulinepre@loop#1}
\def\@ulinepre@process@verb#1{%
   \begingroup
   \let\do\@makeother \dospecials
   \let\do\@uline@do@noligs \verbatim@nolig@list
   \@ifstar
      {\@ulinepre@process@verb@\@uline@sobeyspaces}%
      {\@ulinepre@process@verb@\@uline@obeyspaces}}
\begingroup
\catcode`\ =\active%
\gdef\@uline@obeyspaces{\catcode`\ \active\def {\noexpand~}}%
\gdef\@uline@sobeyspaces{\catcode`\ \active\def {\char32\relax}}%
\endgroup
\def\@uline@do@noligs#1{%
  \catcode`#1\active
  \begingroup
     \lccode`\~`#1\relax
     \lowercase{\endgroup
        \edef~{\noexpand\noexpand\noexpand\leavevmode
           \kern\z@\char\number`#1\relax}}}
\def\@uline@verb@backslash{\@backslashchar}%
\AtBeginDocument{%
   \@ifpackageloaded{okuverb}{\def\@uline@verb@backslash{\noexpand\BS}}\relax}
\def\@ulinepre@process@verb@#1#2{%
   \catcode`\\=\active
   \begingroup
   \lccode`\~=`\\%
   \lowercase{%
      \endgroup
      \def~{\@uline@verb@backslash}}%
   \def\@tempa##1#2{%
      \def\@tempa{##1}%
      \@ulinepre@process@verb@@}%
   #1\@tempa}
\def\@ulinepre@process@verb@@{%
   \edef\@tempa{%
      \def\noexpand\@tempa{%
         \noexpand\texttt{\@tempa}}}%
   \expandafter\endgroup\@tempa
   \toks@\expandafter\expandafter\expandafter{%
      \expandafter\the\expandafter\toks@\@tempa}%
   \@ulinepre@loop}
\def\@ulinepre@process@index#1{%
   \let\@ulinepre@process@index@option\@empty
   \begingroup
   \@sanitize
   \@ulinepre@process@index@}
\AtBeginDocument{%
   \@ifpackageloaded{index}%
      {\let\@ulinepre@process@index\@ulinepre@process@index@with@option
       \def\@uline@index{\@uline@skip[1][o]}}%
      \relax}
\def\@ulinepre@process@index@with@option#1{%
   \@ifnextchar[%
      \@ulinepre@process@index@with@option@
      {\let\@ulinepre@process@index@option\@empty
      \begingroup \@sanitize \@ulinepre@process@index@}}
\def\@ulinepre@process@index@with@option@[#1]{%
   \def\@ulinepre@process@index@option{[{#1}]}%
   \begingroup \@sanitize \@ulinepre@process@index@}
\def\@ulinepre@process@index@#1{%
   \endgroup
   \expandafter\def\expandafter\@tempa\expandafter{%
      \expandafter\index\@ulinepre@process@index@option{#1}}%
   \toks@\expandafter\expandafter\expandafter{%
      \expandafter\the\expandafter\toks@\@tempa}%
   \@ulinepre@loop}
\def\@ulinepre@process@glossary#1{%
   \begingroup
   \@sanitize
   \@ulinepre@process@glossary@}
\def\@ulinepre@process@glossary@#1{%
   \endgroup
   \toks@\expandafter{\the\toks@\glossary{#1}}%
   \@ulinepre@loop}
\def\@ulinepre@urllike#1{%
   \toks@\expandafter{\the\toks@
      \noexpand\@uline@execit{\noexpand\@uline@save@UrlCondition}}%
   \expandafter\@ulinepre@loop#1}
\def\@ulinepre@url{\@ulinepre@addtoken}
\def\@ulinepre@url@{%
   \let\@ulinepre@url@extra@tokens\@empty
   \@ulinepre@url@@}
\def\@ulinepre@Url{\@ulinepre@addtoken}
\def\@ulinepre@Url@{%
   \def\@ulinepre@url@extra@tokens{%
      \endgroup
      \noexpand\@uline@execit{\noexpand\@uline@restore@UrlCondition}}%
   \@ulinepre@url@@}
\def\@uline@save@UrlCondition{%
   \let\@uline@prev@UrlLeft\UrlLeft
   \let\@uline@prev@UrlRight\UrlRight
   \let\@uline@prev@UrlFont\UrlFont
   \let\@uline@prev@UrlOrds\UrlOrds
   \let\@uline@prev@UrlBreaks\UrlBreaks
   \let\@uline@prev@UrlBigBreaks\UrlBigBreaks
   \let\@uline@prev@UrlNoBreaks\UrlNoBreaks
   \let\@uline@prev@UrlSpecials\UrlSpecials}
\def\@uline@restore@UrlCondition{%
   \let\UrlLeft\@uline@prev@UrlLeft
   \let\UrlRight\@uline@prev@UrlRight
   \let\UrlFont\@uline@prev@UrlFont
   \let\UrlOrds\@uline@prev@UrlOrds
   \let\UrlBreaks\@uline@prev@UrlBreaks
   \let\UrlBigBreaks\@uline@prev@UrlBigBreaks
   \let\UrlNoBreaks\@uline@prev@UrlNoBreaks
   \let\UrlSpecials\@uline@prev@UrlSpecials}
\def\@ulinepre@url@@#1{%%% #1: \url/\Url
   \begingroup
   \let\do\@makeother \dospecials
   \catcode`\{=\@ne \catcode`\}=\tw@ \catcode`\ =10\relax
   \@ifnextchar\bgroup\@ulinepre@normal@url\@ulinepre@verblike@url}
\def\@ulinepre@normal@url#1{%
   \def\@tempa{#1}\@onelevel@sanitize\@tempa
   \edef\@tempa{%
      \endgroup
      \def\noexpand\@tempa{\noexpand\url{\@tempa}}%
      \noexpand\@ulinepre@url@@@}%
   \@tempa}
\def\@ulinepre@verblike@url#1{%
   \catcode`\{=12 \catcode`\}=12\relax
   \def\@tempa##1#1{\@ulinepre@normal@url{##1}}%
   \@tempa}
\def\@ulinepre@url@@@{%
   \toks@\expandafter\expandafter\expandafter{%
      \expandafter\the\expandafter\toks@\@tempa}%
   \ifx\@ulinepre@url@extra@tokens\@empty\else
      \toks@\expandafter\expandafter\expandafter{%
         \expandafter\the\expandafter\toks@\@ulinepre@url@extra@tokens}%
   \fi
   \@ulinepre@loop}
\AtBeginDocument{%
   \@ifpackageloaded{url}%
      {\let\@ulinepre@url\@ulinepre@url@
       \let\@ulinepre@Url\@ulinepre@Url@
       \def\@tempa#1#2#3{%
          \@namedef{@uline@defaultCC@in@url\string#1}{#2}%
          \@namedef{@uline@default@in@url\string#1}{#3}}%
       \@tfor\@tempb:=%
          {\<3{\langle}}{\>1{\mathbin{\rangle}}}%
          {\_1{\_\penalty\@m}}{\|1{\mid}}%
          {\{3{\lbrace}}{\}1{\mathbin{\rbrace}}}%
          {\\1{\mathbin{\backslash}}}{\ 0{\ }}%
          {\~0{\raise.6ex\hbox{\m@th$\scriptstyle\sim$}}}%
          \do{\expandafter\@tempa\@tempb}%
       \@for\@tempa:=%
          UrlOrds,UrlBreaks,UrlBigBreaks,UrlNoBreaks,UrlSpecials%
          \do{\@ifundefined\@tempa{\@namedef\@tempa{}}\relax}%
       \count@\z@
       \@whilenum\count@<\@cclvi\do{%
          \@namedef{@uline@urlCC\the\count@}{0}%%% urlCC: character class in \url
          \advance\count@\@ne}%
       \@uline@append@tokens\@uline@init@extra@data{\@uline@save@UrlCondition}%
       \@uline@append@tokens\@uline@redefine@extra@commands{%
          \let\UrlLeft\relax\let\UrlRight\relax}}%
      \relax}
\def\@uline@init@data#1#2{%
   \@uline@inhibitgluefalse
   \@uline@group@headfalse
   \@suppress@hyphenationfalse
   \@uline@set@option{#1}{#2}%
   \@uline@setstrut
   \if@uline@altglue \let\@uline@glue\@uline@altglue \fi
   \escapechar`\\%
   \let\@uline@prevjchar\relax%%% $BFI$_<h$jCf$N2U=j$ND>A0$NOBJ8J8;z!JL$=PNO!K(J
   \let\@uline@prevword\@empty%%% $BFI$_<h$jCf$N2U=j$ND>A0$NHsOBJ8J8;z$NNs!JL$=PNO!K(J
   \let\@uline@previtem\@empty%%% $BFI$_<h$jCf$N2U=j$ND>A0$NJ8;z!JJ8;z4V%0%k!<$NB,Dj$J$I$K;HMQ!K(J
   \let\@uline@hyphen@stat\@empty
   \def\@uline@spacefactor{1000}%
   \let\@uline@curr@f@encoding\f@encoding
   \edef\@uline@curr@hyphenchar{\the\hyphenchar\font}%
   \edef\@uline@curr@fontdimeni{\the\fontdimen1\font}%
   \let\@uline@outer@slant\@uline@curr@fontdimeni
   \edef\@uline@curr@fontdimenii{\the\fontdimen2\font}%
   \edef\@uline@curr@fontdimeniii{\the\fontdimen3\font}%
   \edef\@uline@curr@fontdimeniv{\the\fontdimen4\font}%
   \edef\@uline@curr@fontdimenvii{\the\fontdimen7\font}%
   \let\@uline@extra@fontcommands\@empty
   \let\@uline@saved@protect\@empty
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@migrating@item\@empty
   \let\@uline@migrating@operation\@empty
   \global\@migrate@italiccorrfalse
   \let\@uline@last@glue\@empty
   \let\@uline@text\@empty}
\let\@uline@init@extra@data\@empty
\def\@uline@redefine@commands{%
   \def\({$}\def\){$}%
   \def\{{\noexpand\{}\def\}{\noexpand\}}%
   \let\@uline@reset@pattern\@empty
   \def\@uline@item{\noexpand\@uline@item}%
   \def\@uline@glue{\noexpand\@uline@glue}%
   \def\@uline@add@interchar@penalty{\noexpand\@uline@add@interchar@penalty}%
   \def\@uline@leaders{\noexpand\@uline@leaders}%
   \def\@uline@setcolor{\noexpand\@uline@setcolor}%
   \def\@uline@bou@init{\noexpand\@uline@bou@init}%
   \def\@uline@migrate@italiccorr{\noexpand\@uline@migrate@italiccorr}%
   \def\nonletter##1{\noexpand\nonletter{##1}}%
   \def\textcommand##1{\noexpand\textcommand{##1}}%
   \def\normalcolor{\noexpand\normalcolor}%
   \let\highlight\relax
   \def\ulineafterspace{\hspace}%
   \def\begin{\@uline@check@env\begin}%
   \def\end{\@uline@check@env\end}%
   \def\footnote{\nobreak\protect\footnote}%
   \def\footnotemark{\nobreak\protect\footnotemark}%
   \def\endnote{\nobreak\protect\endnote}%
   \def\endnotemark{\nobreak\protect\endnotemark}%
   \def\@noligs{\noexpand\@noligs}%
   \def\@vobeyspaces{\noexpand\@vobeyspaces}%
   \def\,{\noexpand\,}\let\thinspace\,%
   \def\:{\noexpand\:}\def\>{\noexpand\>}\let\medspace\:%
   \def\;{\noexpand\;}\let\thickspace\;%
   \def\!{\noexpand\!}\let\negthinspace\!%
   \def\negmedspace{\noexpand\negmedspace}%
   \def\negthickspace{\noexpand\negthickspace}%
   \def\@tempa##1{%
      \ifx##1\@nnil\else \def##1{\protect##1}\expandafter\@tempa \fi}%
   \expandafter\@tempa\@uline@commands@to@protect\@nnil
   \def\@tempa##1{%
      \ifx##1\@nnil\else \def##1{\noexpand##1}\expandafter\@tempa \fi}%
   \expandafter\@tempa\@uline@math@commands@to@protect\@nnil
   \let\@tempa\@empty
   \def\root##1\of{\noexpand\sqrt[##1]}%
   \def\buildrel##1\over##2{\stackrel{##1}{\kern\z@##2}}}
\def\@uline@check@env#1#2{%%% #1: \begin/\end, #2: environment name
   \expandafter\@uline@check@env@\csname#2\endcsname\math\@empty\@nil#1{#2}}
\def\@uline@check@env@#1\math#2\@nil#3#4{%
   \ifx#2\@empty \noexpand#3{#4}\else $\fi}
\let\@uline@redefine@extra@commands\@empty
\def\nonletter#1{#1}
\def\textcommand#1{#1}
\def\ulineafterspace#1{%
   \begingroup
   \def\@uline@temp{\hspace{#1}}%
   \futurelet\let@token\@ulineafterspace}
\def\@ulineafterspace{%
   \def\@uline@next{\@ulineafterspace@finish}%
   \if\noexpand\let@token\relax\else
      \ifx\let@token\bgroup\else
         \ifx\let@token\egroup\else
            \ifx\let@token\@sptoken\else
               \def\@uline@next{\@@ulineafterspace}%
            \fi
         \fi
      \fi
   \fi
   \@uline@next}
\def\@@ulineafterspace#1{%
   \def\@tempa{#1}\@onelevel@sanitize\@tempa
   \edef\@tempa{\count@=`\@tempa\relax}\@tempa
   \ifnum\prebreakpenalty\count@<\@M\else \let\@uline@temp\@empty \fi
   \@ulineafterspace@finish
   #1}
\def\@ulineafterspace@finish{\expandafter\endgroup\@uline@temp}
\def\@uline@set@option#1#2{%
   \def\@uline@line@alignment{#1}%
   \def\@uline@leader@type{solidline}%
   \def\@uline@linespec@type{rules}%
   \def\@uline@layer{foreground}%
   \let\@uline@linepos\@uline@linepos@default
   \def\@uline@lines{\@ne}%
   \edef\@uline@linegap{.8\p@}%
   \def\@uline@dashlength{3\p@}%
   \def\@uline@dashgap{\p@}%
   \def\@uline@dotgap{2\p@}%
   \let\@uline@thickness\@uline@default@thickness
   \let\@uline@colorstart\@empty
   \let\@uline@colorend\@empty
   \protected@edef\@tempa{#2\space}%
   \protected@edef\@tempa{\expandafter\zap@space\@tempa\@empty}%
   \ifx\@tempa\@empty
      \let\@tempa\@uline@default@options
   \else
      \toks@\expandafter{\@tempa}%
      \edef\@tempa{%
         \@uline@default@options
         \ifx\@uline@default@options\@empty\else ,\fi
         \the\toks@}%
   \fi
   \@for\@tempa:=\@tempa\do{\expandafter\@uline@set@option@\@tempa==\@nil}%
   \@tempdima\@uline@linepos\relax
   \@tempdimb\@uline@thickness\relax
   \dimen@\@tempdimb
   \advance\dimen@\@uline@linegap\relax
   \count@\@uline@lines\relax \advance\count@\m@ne
   \if b#1\relax
      \def\@tempsigna{-}%
      \def\@tempsignb{}%
   \else
      \def\@tempsigna{}%
      \def\@tempsignb{-}%
      \if c#1\relax
         \multiply\@tempdima\tw@
         \advance\@tempdima-\count@\dimen@
         \divide\@tempdima\tw@
      \fi
   \fi
   \advance\@tempdima.5\@tempdimb
   \advance\@tempdimb-\@tempdima
   \csname @uline@make@\@uline@leader@type\endcsname{#1}%
   \expandafter\ifx
      \csname @uline@linespec@\@uline@layer @patterns\endcsname
      \@empty
   \else
      \def\@uline@linespec@type{patterns}%
   \fi
   \edef\@uline@this@linespec{%
      \expandafter\noexpand
      \csname
         @uline@linespec%
         @\@uline@layer
         @\@uline@linespec@type
      \endcsname}%
   \toks@\expandafter\expandafter\expandafter{\@uline@this@linespec}%
   \expandafter\edef\@uline@this@linespec{%
      \the\toks@
      \@uline@colorstart \@tempa \@uline@colorend}%
   \edef\@uline@this@gluespec{%
      \expandafter\noexpand
      \csname
         @uline@gluespec%
         @\@uline@layer
      \endcsname}%
   \toks@\expandafter\expandafter\expandafter{\@uline@this@gluespec}%
   \if@uline@altglue
      \expandafter\edef\@uline@this@gluespec{%
         \the\toks@
         \expandafter\ifx\@uline@this@gluespec\@empty\else
            \kern-\@uline@altglue@unit
         \fi
         \@uline@colorstart \@tempb \@uline@colorend}%
   \else
      \edef\@tempa{%
         \expandafter\ifx\@uline@this@gluespec\@empty\else \nobreak\fi}%
      \expandafter\edef\@uline@this@gluespec{%
         \the\toks@
         \expandafter\ifx\@uline@this@gluespec\@empty\else
            \@tempa \hskip-\@uline@tempskip
         \fi
         \@uline@colorstart
         \@tempa \@tempb
         \@uline@colorend}%
   \fi}
\def\@uline@set@option@#1=#2=#3\@nil{%
   \def\@tempa{#1}%
   \ifx\@tempa\@empty\else
      \@ifundefined{@uline@opt@#1}%
         {\def\@uline@linepos{#1}}%
         {\@nameuse{@uline@opt@#1}{#2}}%
   \fi}
\def\@uline@opt@type#1{%
   \if@uline@altglue
      \def\@tempa{-noline}%
      \def\@tempb{#1}%
      \ifx\@tempa\@tempb
         \let\@uline@leader@type\@tempb
      \else
         \PackageWarning{uline--}{Only solid lines are available
            under \string\UseAltLeaders\MessageBreak
            or package option ``altleaders''. \space Option for\MessageBreak
            leader type is ignored}%
      \fi
   \else
      \def\@uline@leader@type{#1}%
   \fi}
\def\@uline@opt@position#1{\def\@uline@linepos{#1}}
\def\@uline@opt@lines#1{\def\@uline@lines{#1}}
\def\@uline@opt@width#1{\def\@uline@thickness{#1}}
\def\@uline@opt@linegap#1{\def\@uline@linegap{#1}}
\def\@uline@opt@dotgap#1{\def\@uline@dotgap{#1}}
\def\@uline@opt@dashlength#1{\def\@uline@dashlength{#1}}
\def\@uline@opt@dashgap#1{\def\@uline@dashgap{#1}}
\def\@uline@opt@nomath#1{\let\@uline@process@math\@uline@process@math@}
\def\@uline@opt@foreground{\@uline@set@layer{foreground}{background}}
\def\@uline@opt@background{\@uline@set@layer{background}{foreground}}
\def\@uline@set@layer#1#2#3{%
   \lowercase{\def\@tempa{#3}}%
   \ifx\@tempa\@empty
      \def\@tempa{true}%
   \else
     \expandafter\ifx\csname @tempswa\@tempa\endcsname\relax
         \def\@tempa{true}%
     \fi
   \fi
   \csname @tempswa\@tempa\endcsname
   \edef\@uline@layer{\if@tempswa #1\else #2\fi}}
\def\@uline@opt@color#1{%
   \@uline@parse@color#1[]\@nil
   \ifx\@uline@color@model\@empty
      \ifx\@uline@color@value\@empty\else
         \edef\@uline@colorstart{%
            \begingroup
            \noexpand\noexpand\noexpand\color{\@uline@color@value}%
            \noexpand\noexpand\noexpand\@uline@penalty@after@special}%
         \def\@uline@colorend{\endgroup}%
      \fi
   \else
      \edef\@uline@colorstart{%
         \begingroup
         \noexpand\noexpand\noexpand\color
            [\@uline@color@model]{\@uline@color@value}%
         \noexpand\noexpand\noexpand\@uline@penalty@after@special}%
      \def\@uline@colorend{\endgroup}%
   \fi}
\def\@uline@parse@color#1[#2]#3\@nil{%
   \def\@tempa{#2}%
   \ifx\@tempa\@empty
      \let\@uline@color@model\@empty
      \def\@uline@color@value{#1}%
   \else
      \def\@uline@color@model{#2}%
      \edef\@uline@color@value{\@uline@parse@color@#3[\@nil}%
   \fi}
\def\@uline@parse@color@#1[#2\@nil{#1}
\def\@uline@opt@color@without@colorpkg#1{%
   \PackageWarning{uline--}{Package ``color'' is not loaded.\MessageBreak
      Line color is ignored}%
   \global\let\@uline@opt@color\@gobble}
\AtBeginDocument{%
   \@ifpackageloaded{color}\relax
      {\global\let\@uline@opt@color\@uline@opt@color@without@colorpkg
       \global\let\@uline@place@setcolor\@uline@place@setcolor@without@colorpkg}}
\begingroup
\catcode`\-=11
\gdef\@uline@make@-noline#1{%
   \let\@tempa\@empty
   \if@uline@altglue \def\@tempb{\hbox to\@uline@altglue@unit{}}%
   \else             \def\@tempb{\hskip\@uline@tempskip}%
   \fi
   \let\@uline@colorstart\@empty
   \let\@uline@colorend\@empty}
\endgroup
\def\@uline@make@solidline#1{%
   \def\@tempaz{%
      \vrule \@width\@tempdima \@height\the\@tempdima \@depth\the\@tempdimb
      \kern-\@tempdima}%
   \edef\@tempa{\@tempaz}%
   \if@uline@altglue
      \def\@tempbz{%
         \vrule \@height\the\@tempdima \@depth\the\@tempdimb
                \@width\@uline@altglue@unit}%
   \else
      \def\@tempbz{%
         \leaders \vrule \@height\the\@tempdima \@depth\the\@tempdimb
                  \hskip\@uline@tempskip}%
   \fi
   \edef\@tempb{\@tempbz}%
   \@whilenum\count@>\z@\do{%
      \advance\count@\m@ne
      \advance\@tempdima\@tempsigna\dimen@
      \advance\@tempdimb\@tempsignb\dimen@
      \edef\@tempa{\@tempa \@tempaz}%
      \if@uline@altglue
         \edef\@tempb{\@tempb \kern-\@uline@altglue@unit \@tempbz}%
      \else
         \edef\@tempb{%
            \@tempb
            \nobreak \hskip-\@uline@tempskip
            \nobreak \@tempbz}%
      \fi}}%
\def\UlineMaxPatterns#1{%
   \afterassignment\remove@to@nnil
   \count@=0#1\relax\@nnil
   \ifnum\count@<\@ne \count@\@ne \fi
   \xdef\@uline@max@patterns{\the\count@}}
\@onlypreamble\UlineMaxPatterns
\def\@uline@max@patterns{5}
\def\@uline@prepare@boxes#1{%
   \count@=#1\relax
   \@whilenum\@uline@max@patterns>\count@\do{%
      \advance\count@\@ne
      \expandafter\newbox\csname @uline@pattern@\romannumeral\count@\endcsname}}
\@uline@prepare@boxes\z@
\AtBeginDocument{\@uline@prepare@boxes{5}}
\newcount\@uline@pattern@id \@uline@pattern@id=\z@
\def\@uline@get@pattern@box{%
   \ifnum\@uline@max@patterns>\@uline@pattern@id
      \advance\@uline@pattern@id\@ne
   \else
      \PackageWarning{uline--}{%
         Too many patterns are used simultaneously.\MessageBreak
         Some patterns will be lost}%
   \fi
   \edef\@uline@pattern@box{%
      \csname @uline@pattern@\romannumeral\@uline@pattern@id\endcsname}}
\def\@uline@make@dashline#1{%
   \@uline@get@pattern@box
   \setbox\@uline@pattern@box\hbox{%
      \kern-\@uline@overlap
      \@tempdimc\@uline@overlap\relax \multiply\@tempdimc\tw@
      \advance\@tempdimc\@uline@dashlength\relax
      \dimen@ii\@tempdimc
      \advance\dimen@ii\@uline@dashgap\relax
      \divide\@tempdimc\tw@
      \def\@tempz{%
         \vrule \@width\@tempdimc \@height\@tempdima \@depth\@tempdimb
         \kern\@uline@dashgap
         \vrule \@width\@tempdimc \@height\@tempdima \@depth\@tempdimb}%
      \@tempz
      \@whilenum\count@>\z@\do{%
         \advance\count@\m@ne
         \advance\@tempdima\@tempsigna\dimen@
         \advance\@tempdimb\@tempsignb\dimen@
         \kern-\dimen@ii \@tempz}%
      \kern-\@uline@overlap}%
   \@uline@set@pattern}
\font\@uline@uwavefont=lasy5
\AtBeginDocument{%
   \ifx\@uline@uwave@adjust\relax
      \@ifpackageloaded{type1cm}%
         {\global\let\@uline@uwave@adjust\@empty}%
         {\gdef\@uline@uwave@adjust{\kern-.3\p@}}%
   \fi}
\def\@uline@make@wavyline#1{%
   \@uline@get@pattern@box
   \setbox\@uline@pattern@box\hbox{%
      \setbox\z@\hbox{\@uline@uwavefont \tbaselineshift=\z@
         \@uline@uwave@adjust\char"3A \@uline@uwave@adjust}%
      \@tempdimb\ht\z@ \advance\@tempdimb\dp\z@
      \advance\@tempdimb-.28\p@%%% original line thickness (see lasy5.mf and cmsy5.mf)
      \dimen@ii\@tempdimb
      \if b\@uline@line@alignment\relax\else
         \dimen4=\@uline@thickness\relax
         \advance\@tempdimb-.5\dimen4\relax
         \if t\@uline@line@alignment\relax\else
            \divide\@tempdimb\tw@
         \fi
         \advance\@tempdima\@tempdimb
      \fi
      \setbox\z@\vbox to\z@{%
         \offinterlineskip
         \copy\z@
         \ht\z@.25\p@ \dp\z@\z@
         \@tempdimb\@uline@thickness\relax
         \ifdim\@tempdimb>.3\p@
            \advance\@tempdimb-.28\p@
            \dimen@\@tempdimb \divide\dimen@ 16384\relax%%% 16384sp = .25pt
            \count@\dimen@
            \advance\count@\@ne
            \dimen@.25\p@ \advance\@tempdimb-\count@\dimen@
            \@whilenum\count@>\@ne\do{\advance\count@\m@ne \copy\z@}%
            \kern\@tempdimb \copy\z@
         \fi
         \vss}%
      \advance\dimen@ii\@uline@thickness\relax
      \ht\z@\z@ \dp\z@\dimen@ii
      \raise\@tempdima\copy\z@
      \@whilenum\count@>\z@\do{%
         \advance\count@\m@ne
         \advance\@tempdima\@tempsigna\dimen@
         \kern-\wd\z@
         \raise\@tempdima\copy\z@}}%
   \@uline@set@pattern}
\def\@uline@make@dottedline#1{%
   \@uline@get@pattern@box
   \setbox\@uline@pattern@box\hbox{%
      \dimen@ii\@uline@thickness\relax
      \@tempdimc.5\dimen@ii
      \advance\@tempdima-\@tempdimc
      \advance\dimen@ii\@uline@dotgap\relax
      \kern.5\dimen@ii
      \@uline@make@dottedline@prepare@dot
      \@uline@make@dottedline@singledot
      \@whilenum\count@>\z@\do{%
         \advance\count@\m@ne
         \advance\@tempdima\@tempsigna\dimen@
         \@uline@make@dottedline@singledot}%
      \kern.5\dimen@ii}%
   \@uline@set@pattern}
\if@uline@useTPIC
   \def\@uline@make@dottedline@prepare@dot{%
      \advance\@tempdimc 2368sp\relax
      \ifdim\@tempdimc<4000\p@
         \multiply\@tempdimc 4
         \divide\@tempdimc 18945\relax
      \else
         \divide\@tempdimc 4736\relax
      \fi
      \@tempcnta\@tempdimc
      \edef\@uline@make@dottedline@singledot{%
         \raise\@tempdima\hbox{%
            \special{sh 1}%
            \special{ia 0 0 \the\@tempcnta\space \the\@tempcnta\space 0 7}}}}%
\else
   \def\@uline@loaded@circle@sizes{1000}
   \expandafter\let\csname @uline@C1000\endcsname\tencirc
   \def\@uline@make@dottedline@prepare@dot{%
      \begingroup
      \multiply\@tempdimc\tw@
      \ifdim\@tempdimc>120\p@ \@tempdimc120\p@ \fi
      \multiply\@tempdimc 125
      \count\tw@\@MM%%% max fuzz
      \@tempswafalse
      \@tempcnta\z@
      \@whilenum15>\@tempcnta\do{%
         \advance\@tempcnta\@ne
         \@tempdimb\@tempdimc       \divide\@tempdimb\@tempcnta
         \advance\@tempdimb 4096sp  \divide\@tempdimb 8192 %%% 8192sp = 1/8 pt
         \edef\@tempa{\number\@tempdimb}%
         \@expandtwoargs\in@{,\@tempa,}{,\@uline@loaded@circle@sizes,}%
         \ifin@
            \let\@tempb\@tempa
            \@tempcntb\@tempcnta
            \@tempswatrue
            \@tempcnta\@m%%% exit this loop
         \else
            \count@\@tempa\relax \advance\count@-\@m
            \ifnum\count@<\z@ \count@-\count@ \fi
            \ifnum\count@<\count\tw@
               \let\@tempb\@tempa
               \@tempcntb\@tempcnta
               \count\tw@\count@
            \fi
         \fi}%
      \if@tempswa\else
         \global\expandafter\font\csname @uline@C\@tempb\endcsname=%
            lcircle10 scaled \@tempb\relax
         \xdef\@uline@loaded@circle@sizes{\@uline@loaded@circle@sizes,\@tempb}%
      \fi
      \advance\@tempcntb 111\relax
      \edef\x{%
         \def\noexpand\@uline@make@dottedline@singledot{%
            \raise\@tempdima\vbox to\z@{\vss
               \hbox to\z@{\tbaselineshift=\z@
                  \csname @uline@C\@tempb\endcsname \char\the\@tempcntb\hss}%
               \vss}}}%
      \expandafter\endgroup\x}
\fi
\def\@uline@make@xout#1{%
   \@uline@get@pattern@box
   \setbox\@uline@pattern@box\hbox{/}%
   \@uline@set@pattern}
\def\@uline@set@pattern{%
   \def\@uline@linespec@type{patterns}%
   \let\@uline@discretionary\@uline@ignored@discretionary
   \let\@uline@hyphenate\relax
   \edef\@tempa{%
      \begingroup
      \dimen@\@tempdima
      \advance\dimen@\wd\@uline@pattern@box
      \kern-.5\wd\@uline@pattern@box \nobreak
      \leaders\copy\@uline@pattern@box\hskip\dimen@
      \advance\dimen@-.5\wd\@uline@pattern@box
      \kern-\dimen@
      \endgroup}%
   \edef\@tempb{%
      \begingroup
      \advance\@uline@tempskip\wd\@uline@pattern@box
      \hskip-.5\wd\@uline@pattern@box
      \leaders\copy\@uline@pattern@box\hskip\@uline@tempskip
      \hskip-.5\wd\@uline@pattern@box
      \endgroup}}
\expandafter\ifx\csname kanjiskip\endcsname\relax
   \def\@uline@KKglue{0pt plus.5pt minus.5pt}%
   \def\@uline@AKglue{.25em plus.1em minus.1em}%
\else
   \def\@uline@KKglue{\kanjiskip}%
   \def\@uline@AKglue{\xkanjiskip}%
\fi
\def\@uline@KKglueadjust{\z@ \@plus.5\p@ \@minus.5\p@}
\def\@uline@AKglueadjust{\z@ \@plus\p@ \@minus\p@}
%%% \let\@uline@KAglue\@uline@AKglue
\def\@uline@reset@pattern{%
   \let\@uline@text@command\text@command
   \let\@uline@item@command\@firstofone
   \let\@uline@textcolor\@empty
   \let\@uline@bgcolor\@empty
   \@uline@reset@pattern@}
\def\@uline@reset@pattern@{%
   \@uline@pattern@id\z@
   \let\@uline@linespec@foreground@rules\@empty
   \let\@uline@linespec@foreground@patterns\@empty
   \let\@uline@linespec@background@rules\@empty
   \let\@uline@linespec@background@patterns\@empty
   \let\@uline@gluespec@foreground\@empty
   \let\@uline@gluespec@background\@empty
   \let\@uline@extra@leader\@empty}
\@uline@reset@pattern
\def\@uline@item#1{%
   \ifvmode \leavevmode \fi
   \gdef\@uline@migrated@italiccorr{\z@}%
   \begingroup
   \iftdir \setbox\z@\hbox{\@uline@sample@jchar}\fi
   \ifx\@uline@textcolor\@empty
      \setbox\z@\hbox{\@uline@reset@pattern@
         \@uline@item@command{{#1}}}%
   \else
      \setbox\z@\hbox{\@uline@reset@pattern@
         {\@uline@textcolor\hbox{\@uline@item@command{{#1}}}}}%
   \fi
   \@tempdima\@uline@overlap\relax
   \@tempdimb\@tempdima
   \multiply\@tempdima\tw@
   \advance\@tempdima\wd\z@
   \advance\@tempdimb\wd\z@
   \hbox{%
      \ifx\@uline@bgcolor\@empty\else
         \begingroup
         \@uline@bgcolor
         \kern-\@uline@overlap
         \vrule \@width\@tempdima
                \@height\@uline@strutht \@depth\@uline@strutdp
         \kern-\@tempdimb
         \endgroup
      \fi
      \ifx\@uline@linespec@background@rules\@empty\else
         \kern-\@uline@overlap
         \@uline@linespec@background@rules
         \kern\@uline@overlap
      \fi
   \ifx\@uline@linespec@background@patterns\@empty\else
      \egroup
      \kern-\@uline@overlap
      \@uline@linespec@background@patterns
      \kern\@uline@overlap
      \hbox\bgroup
   \fi
      \box\z@
      \ifx\@uline@linespec@foreground@rules\@empty\else
         \kern-\@tempdimb \@uline@linespec@foreground@rules \kern\@tempdimb
      \fi}%
   \ifx\@uline@linespec@foreground@patterns\@empty\else
      \kern-\@tempdimb
      \@uline@linespec@foreground@patterns
      \kern\@tempdimb
      \null
   \fi
   \endgroup}
\gdef\@uline@migrated@italiccorr{\z@}
\def\@uline@migrate@italiccorr{%
   \dimen@\lastkern \unkern
   \xdef\@uline@migrated@italiccorr{\the\dimen@}}
\def\@uline@overlap{.1\p@}
\newskip\@uline@tempskip
\def\@uline@glue#1{%
   \ifhmode
      \@uline@lastpenalty\lastpenalty
      \@uline@tempskip#1\relax
      \advance\@uline@tempskip\@uline@migrated@italiccorr\relax
      \ifx\@uline@bgcolor\@empty\else
         \begingroup
         \@uline@bgcolor
         \leaders \vrule \@height\@uline@strutht \@depth\@uline@strutdp
                  \hskip\@uline@tempskip
         \nobreak \hskip-\@uline@tempskip \nobreak
         \endgroup
      \fi
      \ifx\@uline@gluespec@background\@empty\else
         \@uline@gluespec@background
         \def\@uline@glue@temp{\nobreak \hskip-\@uline@tempskip \nobreak}%
         \ifx\@uline@gluespec@foreground\@empty
            \ifx\@uline@extra@leader\@empty
               \let\@uline@glue@temp\relax
            \fi
         \fi
         \@uline@glue@temp
      \fi
      \ifx\@uline@extra@leader\@empty\else
         \begingroup
         \ifx\@uline@textcolor\@empty\else \@uline@textcolor\nobreak \fi
         \@uline@extra@leader\hskip\@uline@tempskip
         \ifx\@uline@gluespec@foreground\@empty\else
            \nobreak \hskip-\@uline@tempskip \nobreak
         \fi
         \endgroup
      \fi
      \@uline@gluespec@foreground
   \fi
   \gdef\@uline@migrated@italiccorr{\z@}}
\def\@uline@altglue#1{%
   \ifhmode
      \ifx\@uline@extra@leader\@empty \@uline@altglueA{#1}%
      \else                           \@uline@altglueB{#1}%
      \fi
   \fi
   \gdef\@uline@migrated@italiccorr{\z@}}
\def\@uline@altglueA#1{%
   \@uline@tempskip#1\relax
   \advance\@uline@tempskip\@uline@migrated@italiccorr\relax
   \leaders
      \hbox{%
         \@uline@altglue@highlight
         \ifx\@uline@gluespec@background\@empty\else
            \@uline@gluespec@background
            \ifx\@uline@gluespec@foreground\@empty\else
               \kern-\@uline@altglue@unit
            \fi
         \fi
         \@uline@gluespec@foreground}%
      \hskip\@uline@tempskip}
\def\@uline@altglueB#1{%
   \@uline@tempskip#1\relax
   \advance\@uline@tempskip\@uline@migrated@italiccorr\relax
   \def\@tempa{%
      \leaders
         \hbox{%
            \@uline@altglue@highlight
            \ifx\@uline@gluespec@background\@empty\else
               \@uline@gluespec@background
            \fi}%
         \hskip\@uline@tempskip
         \nobreak \hskip-\@uline@tempskip\nobreak}%
   \ifx\@uline@gluespec@background\@empty
      \ifx\@uline@bgcolor\@empty \let\@tempa\@empty \fi
   \fi
   \@tempa
   \begingroup
   \ifx\@uline@textcolor\@empty\else \@uline@textcolor\nobreak \fi
   \@uline@extra@leader\hskip\@uline@tempskip
   \endgroup
   \ifx\@uline@gluespec@foreground\@empty\else
      \nobreak \hskip-\@uline@tempskip\nobreak
      \leaders\hbox{\@uline@gluespec@foreground}\hskip\@uline@tempskip
   \fi}
\def\@uline@altglue@highlight{%
   \ifx\@uline@bgcolor\@empty\else
      \begingroup
      \@uline@bgcolor
      \vrule \@width\@uline@altglue@unit
             \@height\@uline@strutht \@depth\@uline@strutdp
      \endgroup
      \kern-\@uline@altglue@unit
   \fi}
\newcount\@uline@lastpenalty
\def\@uline@penalty@after@special{%
   \ifnum\@uline@lastpenalty>\z@ \penalty\@uline@lastpenalty \fi}
\def\@uline@altglue@unit{.2\p@}
\def\@uline@setcolor#1#2{%
   \def\@tempa{*}%
   \def\@tempb{#1}%
   \ifx\@tempa\@tempb
      \def\@uline@textcolor{\normalcolor}%
   \else
      \@uline@setcolor@\@uline@textcolor{#1}%
   \fi
   \@uline@setcolor@\@uline@bgcolor{#2}}
\def\@uline@setcolor@#1#2{%
   \def\@tempa{!}%
   \def\@tempb{#2}%
   \ifx\@tempa\@tempb
      \let#1\@empty
   \else
      \@uline@parse@color#2[]\@nil
      \ifx\@uline@color@model\@empty
         \ifx\@uline@color@value\@empty\else
            \edef#1{\noexpand\color{\@uline@color@value}}%
         \fi
      \else
         \edef#1{\noexpand\color[\@uline@color@model]{\@uline@color@value}}%
      \fi
   \fi}
\def\@uline@accents{\"\'\.\=\^\`\~\H\v\u\b\c\d\r\t\k}
\def\@uline@special@letters{%
   \AA\aa\AE\ae\DH\dh\DJ\dj\i\j\L\l\NG\ng\O\o\OE\oe\SS\ss\TH\th}
\begingroup
\def\x#1#2{[\noexpand#1\expandafter\noexpand\csname#2\endcsname]}
\def\xx#1#2{%
   [\noexpand#1\expandafter\noexpand\csname#2\endcsname]%
   [\expandafter\noexpand\csname \expandafter\@gobble\string#1\space\endcsname
    \expandafter\noexpand\csname#2\endcsname]}
%%% skip[<number of mandatory arguments>][<properties>] for items without underline
%%% normal[<number of mandatory arguments>][<properties>] for items with underline
%%% <properties>:
%%%    *: allows optional *,  o: first argument is optional,
%%%    j: treated as a Chinese character,  n: suppress glues at both sides
%%%    p: treated as a postfix for a Chinese character
\edef\y{%
   \def\noexpand\@uline@extra@commands{%
      \x{\relax}{skip[0][]}%
      \x{\begingroup}{skip[0][]}%
      \x{\endgroup}{skip[0][]}%
      \x{\discretionary}{discretionary}%
      \x{\protect}{protect}%
      \x{\ignorespaces}{ignorespaces}%
      \xx{\uline}{textcommandwithoption}%
      \xx{\mline}{textcommandwithoption}%
      \xx{\oline}{textcommandwithoption}%
      \xx{\udash}{textcommandwithoption}%
      \xx{\mdash}{textcommandwithoption}%
      \xx{\odash}{textcommandwithoption}%
      \xx{\uwave}{textcommandwithoption}%
      \xx{\mwave}{textcommandwithoption}%
      \xx{\owave}{textcommandwithoption}%
      \xx{\udotline}{textcommandwithoption}%
      \xx{\mdotline}{textcommandwithoption}%
      \xx{\odotline}{textcommandwithoption}%
      \xx{\xout}{textcommandwithoption}%
      \x{\@uline@item}{skip[1][]}%
      \x{\@uline@glue}{skip[1][]}%
      \x{\@uline@add@interchar@penalty}{skip[1][]}%
      \x{\@uline@leaders}{skip[2][]}%
      \x{\@uline@setcolor}{skip[2][]}%
      \x{\@uline@bou@init}{skip[1][]}%
      \x{\@uline@execit}{execit}%
      \x{\@uline@migrate@italiccorr}{skip[0][]}%
      \x{\nonletter}{skip[1][]}%
      \x{\penalty}{penalty}%
      \x{\nobreak}{expandit}%
      \x{\allowbreak}{expandit}%
      \x{\spacefactor}{@spacefactor}%
      \x{\inhibitglue}{inhibitglue}%
      \x{\ }{ctrlspace}%
      \xx{\nobreakspace}{nobreakspace}%
      \xx{\ulineposition}{skip[1][]}%
      \xx{\mlineposition}{skip[1][]}%
      \xx{\olineposition}{skip[1][]}%
      \xx{\udashposition}{skip[1][]}%
      \xx{\mdashposition}{skip[1][]}%
      \xx{\odashposition}{skip[1][]}%
      \xx{\uwaveposition}{skip[1][]}%
      \xx{\mwaveposition}{skip[1][]}%
      \xx{\owaveposition}{skip[1][]}%
      \xx{\udotlineposition}{skip[1][]}%
      \xx{\mdotlineposition}{skip[1][]}%
      \xx{\odotlineposition}{skip[1][]}%
      \xx{\ulinewidth}{skip[1][]}%
      \xx{\mlinewidth}{skip[1][]}%
      \xx{\olinewidth}{skip[1][]}%
      \xx{\udashwidth}{skip[1][]}%
      \xx{\mdashwidth}{skip[1][]}%
      \xx{\odashwidth}{skip[1][]}%
      \xx{\uwavewidth}{skip[1][]}%
      \xx{\mwavewidth}{skip[1][]}%
      \xx{\owavewidth}{skip[1][]}%
      \xx{\udotlinewidth}{skip[1][]}%
      \xx{\mdotlinewidth}{skip[1][]}%
      \xx{\odotlinewidth}{skip[1][]}%
      \x{\textcommand}{pkgtextcommand}%
      \x{\leavevmode}{skip[0][]}%
      \x{\frenchspacing}{skipandeval}%
      \x{\nonfrenchspacing}{skipandeval}%
      \x{\@noligs}{skip[0][]}%
      \x{\@vobeyspaces}{skip[0][]}%
      \xx{\text}{normal[1][n]}%
      \x{\mbox}{normal[1][n]}%
      \x{\fbox}{normal[1][n]}%
      \x{\frame}{normal[1][n]}%
      \x{\makebox}{makebox}%
      \x{\framebox}{makebox}%
      \x{\llap}{expandit}%
      \x{\rlap}{expandit}%
      \x{\hb@xt@}{expandit}%
      \x{\mathhexbox}{normal[3][n]}%
      \x{\hbox}{boxcmd}%
      \x{\vbox}{boxcmd}%
      \x{\vtop}{boxcmd}%
      \x{\box}{boxcopy}%
      \x{\copy}{boxcopy}%
      \x{\usebox}{usebox}%
      \x{\unhbox}{unhbox}%
      \x{\unhcopy}{unhcopy}%
      \x{\unvbox}{unvbox}%
      \x{\unvcopy}{unvcopy}%
      \x{\hrule}{hvrule}%
      \x{\vrule}{hvrule}%
      \x{\lineskip}{skipglue}%
      \x{\lineskiplimit}{skipdimen}%
      \x{\prevdepth}{skipdimen}%
      \x{\baselineskip}{skipglue}%
      \x{\nointerlineskip}{skip[0][]}%
      \x{\offinterlineskip}{skip[0][]}%
      \x{\phantom}{normal[1][n]}%
      \x{\hphantom}{normal[1][n]}%
      \x{\vphantom}{normal[1][n]}%
      \x{\smash}{smash}%
      \x{\label}{skip[1][]}%
      \x{\index}{index}%
      \x{\glossary}{skip[1][]}%
      \x{\G@refundefinedtrue}{skip[0][]}%
      \x{\nfss@text}{normal[1][n]}%
      \xx{\GenericWarning}{skip[2][]}%
      \xx{\ref}{normal[1][n]}%
      \xx{\pageref}{normal[1][n]}%
      \xx{\cite}{cite}%
      \x{\footnote}{footnote}%
      \x{\footnotemark}{normal[0][o]}%
      \x{\footnotetext}{footnotetext}%
      \x{\endnote}{endnote}%
      \x{\endnotemark}{normal[0][o]}%
      \x{\endnotetext}{endnotetext}%
      \x{\marginpar}{marginpar}%
      \xx{\ensuremath}{normal[1][n]}%
      \xx{\mathversion}{skip[1][]}%
      \x{\boldmath}{skip[0][]}%
      \x{\unboldmath}{skip[0][]}%
      \xx{\textnormal}{textcommand}%
      \xx{\textrm}{textcommand}%
      \xx{\textsf}{textcommand}%
      \xx{\texttt}{textcommand}%
      \xx{\textmd}{textcommand}%
      \xx{\textbf}{textcommand}%
      \xx{\textup}{textcommand}%
      \xx{\textsl}{textcommand}%
      \xx{\textit}{textcommand}%
      \xx{\textsc}{textcommand}%
      \xx{\emph}{textcommand}%
      \x{\underline}{normal[1][n]}%
      \x{\oldstylenums}{normal[1][n]}%
      \xx{\fontencoding}{addshape}%
      \xx{\fontfamily}{addshape}%
      \xx{\fontseries}{addshape}%
      \xx{\fontshape}{addshape}%
\expandafter\ifx\csname pfmtname\endcsname\relax\else
      \xx{\textgt}{textcommand}%
      \xx{\textmc}{textcommand}%
      \xx{\romanencoding}{addshape}%
      \xx{\romanfamily}{addshape}%
      \xx{\romanseries}{addshape}%
      \xx{\romanshape}{addshape}%
      \xx{\kanjiencoding}{addshape}%
      \xx{\kanjifamily}{addshape}%
      \xx{\kanjiseries}{addshape}%
      \xx{\kanjishape}{addshape}%
      \xx{\gtfamily}{fontchange}%
      \xx{\mcfamily}{fontchange}%
      \xx{\gt}{fontchange}%
      \xx{\mc}{fontchange}%
\fi
\expandafter\ifx\csname jfmtname\endcsname\relax\else
      \xx{\jfontencoding}{addshape}%
      \xx{\jfontfamily}{addshape}%
      \xx{\jfontseries}{addshape}%
      \xx{\jfontshape}{addshape}%
      \x{\dm}{fontchange}%
      \x{\min}{jTeXmin}%
      \x{\pmin}{fontchange}%
      \x{\dg}{fontchange}%
      \x{\goth}{fontchange}%
\fi
      \xx{\selectfont}{fontchange}%
      \xx{\rmfamily}{fontchange}%
      \xx{\sffamily}{fontchange}%
      \xx{\ttfamily}{fontchange}%
      \xx{\bfseries}{fontchange}%
      \xx{\mdseries}{fontchange}%
      \xx{\slshape}{fontchange}%
      \xx{\itshape}{fontchange}%
      \xx{\scshape}{fontchange}%
      \xx{\upshape}{fontchange}%
      \xx{\em}{fontchange}%
      \xx{\rm}{fontchange}%
      \xx{\sf}{fontchange}%
      \xx{\tt}{fontchange}%
      \xx{\bf}{fontchange}%
      \xx{\sl}{fontchange}%
      \xx{\it}{fontchange}%
      \xx{\sc}{fontchange}%
      \x{\tiny}{fontchange}%
      \x{\scriptsize}{fontchange}%
      \x{\footnotesize}{fontchange}%
      \x{\small}{fontchange}%
      \x{\normalsize}{fontchange}%
      \x{\large}{fontchange}%
      \x{\Large}{fontchange}%
      \x{\LARGE}{fontchange}%
      \x{\huge}{fontchange}%
      \x{\Huge}{fontchange}%
      \x{\fontsize}{fontsize}%
      \x{\linespread}{skip[1][]}%
      \x{\color}{color}%
      \x{\textcolor}{pkgtextcolor}%
      \x{\colorbox}{colorbox}%
      \x{\fcolorbox}{fcolorbox}%
      \x{\normalcolor}{normalcolor}%
      \x{\highlight}{highlight}%
      \x{\uppercase}{textcommand}%
      \xx{\MakeUppercase}{textcommand}%
      \x{\lowercase}{textcommand}%
      \xx{\MakeLowercase}{textcommand}%
      \x{\textcircled}{normal[1][n]}%
      \xx{\textsuperscript}{normal[1][n]}%
      \xx{\textsubscript}{normal[1][n]}%
      \x{\char}{primitivechar}%
      \x{\symbol}{normal[1][n]}%
      \x{\Pifont}{skip[1][]}%
      \x{\Pisymbol}{normal[2][n]}%
      \x{\MARU}{normal[1][jo]}%
      \x{\maru}{normal[1][jo]}%
      \xx{\UTF}{normal[1][jo]}%
      \xx{\CID}{normal[1][jo]}%
      \x{\MO}{normal[1][jo]}%
      \x{\TMO}{normal[1][jo]}%
      \x{\PMO}{normal[1][jo]}%
      \x{\ruby}{normal[2][jo]}%
      \x{\kintou}{normal[2][no]}%
      \x{\keytop}{normal[1][n]}%
      \x{\kenten}{bou}%
      \x{\bou}{bou}%
      \xx{\rensuji}{rensuji}%
      \x{\leaders}{process@leaders}%
      \x{\cleaders}{process@leaders}%
      \x{\xleaders}{process@leaders}%
      \x{\hrulefill}{expandit}%
      \x{\dotfill}{expandit}%
      \x{\Pifill}{expandit}%
      \x{\hskip}{hskip}%
      \x{\hfil}{primitive@hglue}%
      \x{\hfill}{primitive@hglue}%
      \x{\hfilneg}{primitive@hglue}%
      \x{\hss}{primitive@hglue}%
      \x{\vskip}{skipglue}%
      \x{\vfil}{skip[0][]}%
      \x{\vfill}{skip[0][]}%
      \x{\vfilneg}{skip[0][]}%
      \x{\vss}{skip[0][]}%
      \x{\thinspace}{textspace}%
      \x{\,}{textspace}%
      \x{\medspace}{textspace}%
      \x{\:}{textspace}%
      \x{\>}{textspace}%
      \x{\thickspace}{textspace}%
      \x{\;}{textspace}%
      \x{\negthinspace}{textspace}%
      \x{\!}{textspace}%
      \x{\negmedspace}{textspace}%
      \x{\negthickspace}{textspace}%
      \xx{\tmspace}{tmspace}%
      \x{\kern}{kern}%
      \xx{\hspace}{hspace}%
      \xx{\vspace}{skip[1][*]}%
      \x{\smallskip}{expandit}%
      \x{\medskip}{expandit}%
      \x{\bigskip}{expandit}%
      \x{\rule}{normal[2][no]}%
      \x{\raisebox}{raisebox}%
      \x{\\}{newline}%
      \xx{\newline}{Newline}%
      \x{\linebreak}{skipoption}%
      \x{\nolinebreak}{skipoption}%
      \x{\pagebreak}{skipoption}%
      \x{\nopagebreak}{skipoption}%
      \xx{\xspace}{xspace}%
      \x{\/}{italiccorr}%
      \x{\nocorr}{skip[0][]}%
      \x{\addtocounter}{skip[2][]}%
      \x{\setcounter}{skip[2][]}%
      \x{\stepcounter}{skip[1][]}%
      \x{\refstepcounter}{skip[1][]}%
      \x{\setlength}{setlength}%
      \x{\addtolength}{setlength}%
      \x{\string}{expandit}%
      \x{\special}{skip[1][]}%
      \x{\lbrack}{expandit}%
      \x{\rbrack}{expandit}%
      \x{\underbar}{normal[1][n]}%
      \x{\oalign}{normal[1][n]}%
      \x{\ooalign}{normal[1][n]}%
      \x{\let}{macrodef}%
      \x{\def}{macrodef}}%
   \def\noexpand\@uline@extra@commands@url{%
      \x{\url}{process@url}%
      \x{\urlstyle}{urlstyle}%
      \x{\UrlRight}{expandit}}%
   \def\noexpand\@uline@extra@commands@amsgen{%
      \x{\nobreakdash}{nobreakdash}%
      \xx{\dotso}{normal[0][n]}}%
   \def\noexpand\@uline@extra@commands@mathabx{%
      \x{\changenotsign}{skip[0][]}%
      \x{\maya}{normal[1][n]}%
      \x{\mayadigit}{normal[1][n]}}%
   \def\noexpand\@uline@extra@commands@fourier{%
      \x{\TakeFourierOrnament}{normal[1][n]}}%
\expandafter\ifx\csname pfmtname\endcsname\relax\else
   \def\noexpand\@uline@extra@commands@ajmacros{%
      \x{\ajHashigoTaka}{normal[0][j]}%
      \x{\ajTsuchiYoshi}{normal[0][j]}%
      \x{\ajTatsuSaki}{normal[0][j]}%
      \x{\ajMayuHama}{normal[0][j]}%
      \x{\ajMaru}{normal[1][*j]}%
      \x{\ajKuroMaru}{normal[1][*j]}%
      \x{\ajKaku}{normal[1][*j]}%
      \x{\ajKuroKaku}{normal[1][*j]}%
      \x{\ajMaruKaku}{normal[1][*j]}%
      \x{\ajKuroMaruKaku}{normal[1][*j]}%
      \x{\ajKakko}{normal[1][*j]}%
      \x{\ajRoman}{normal[1][*j]}%
      \x{\ajroman}{normal[1][j]}%
      \x{\ajPeriod}{normal[1][j]}%
      \x{\ajKakkoalph}{normal[1][j]}%
      \x{\ajKakkoYobi}{normal[1][j]}%
      \x{\ajKakkoroman}{normal[1][j]}%
      \x{\ajKakkoRoman}{normal[1][j]}%
      \x{\ajKakkoAlph}{normal[1][j]}%
      \x{\ajKakkoHira}{normal[1][j]}%
      \x{\ajKakkoKata}{normal[1][j]}%
      \x{\ajKakkoKansuji}{normal[1][j]}%
      \x{\ajMaruKansuji}{normal[1][j]}%
      \x{\ajNijuMaru}{normal[1][j]}%
      \x{\ajRecycle}{normal[1][j]}%
      \x{\ajHasenKakuAlph}{normal[1][j]}%
      \x{\ajCross}{normal[1][j]}%
      \x{\ajSlanted}{normal[1][*j]}%
      \x{\ajApostrophe}{normal[1][j]}%
      \x{\ajYear}{normal[1][j]}%
      \x{\ajSquareMark}{useoneargasjcharwithspecialoption}%
      \x{\ajHishi}{normal[1][j]}%
      \x{\ajMaruYobi}{normal[1][j]}%
      \x{\ajTsumekakko}{normal[1][j]}%
      \x{\ajTumekakko}{normal[1][j]}%
      \x{\ajNenrei}{normal[1][j]}%
      \x{\ajKosu}{normal[1][j]}%
      \x{\ajFrac}{normal[1][*j]}%
      \x{\aj$BH>3Q(J}{normal[1][j]}%
      \x{\ajLig}{normal[1][j]}%
      \x{\ajPICT}{normal[1][j]}%
      \x{\$B"((J}{normal[1][j]}%
      \x{\ajArrow}{normal[1][j]}%
      \x{\ajKunten}{normal[1][j]}%
      \x{\ajTsumesuji}{ajTsumesuji}%
      \x{\ajTumesuji}{ajTsumesuji}%
      \x{\ajQuote}{normal[2][j]}%
      \x{\ajnenrei}{normal[2][j]}}%
\fi
   \def\noexpand\@uline@extra@commands@sfkanbun{%
      \x{\fukutagyobox}{normal[1][n]}%%%?
      \x{\tagyobox}{normal[1][n]}%%%?
      \x{\kundoku}{SFkundoku}%
      \x{\kutoten}{normal[2][n]}%
      \x{\ongofu}{normal[2][j]}%
      \x{\kungofu}{normal[2][j]}%
      \x{\FuriKanji}{normal[3][j]}%
      \x{\furikanji}{normal[3][j]}%
      \x{\FuriKanjikt}{normal[3][j]}%
      \x{\furikanjikt}{normal[3][j]}}%
   \def\noexpand\@uline@extra@commands@furikana{%
      \x{\nakakintou}{normal[2][n]}%
      \x{\kana}{normal[2][jo]}%
      \x{\Kana}{SFKana}%
      \x{\KANA}{normal[5][j]}%
      \x{\KANAorig}{normal[5][j]}%
      \x{\KANAtop}{normal[5][j]}%
      \x{\KANAmatubi}{normal[5][j]}%
      \x{\KANAorigmatubi}{normal[5][j]}}%
   \def\noexpand\@uline@extra@commands@furiknkt{%
      \x{\nakakintou}{normal[2][n]}%
      \x{\katatsukiK}{normal[2][n]}%
      \x{\katatsukiR}{normal[2][n]}%
      \x{\kanakt}{normal[2][jo]}%
      \x{\Kanakt}{SFKana}%
      \x{\KANA}{normal[5][j]}%
      \x{\KANAkt}{normal[5][j]}%
      \x{\KANAktorig}{normal[5][j]}%
      \x{\KANAkttop}{normal[5][j]}%
      \x{\KANAktS}{normal[5][j]}%
      \x{\KANAktSorig}{normal[5][j]}%
      \x{\KANAktStop}{normal[5][j]}}%
   \def\expandafter\noexpand\csname @uline@extra@commands@kunten2e\endcsname{%
      \x{\sounyuu}{nosizeitem@withonearg}%
      \x{\tinysounyuu}{nosizeitem@withonearg}%
      \x{\hidarisounyuu}{nosizeitem@withonearg}%
      \x{\hidaritinysounyuu}{nosizeitem@withonearg}%
      \x{\kaou}{normal[0][j]}%
      \x{\ryakuou}{normal[0][j]}%
      \x{\odorii}{normal[0][j]}%
      \x{\odorihuku}{normal[0][j]}%
      \x{\miseketi}{normal[1][jo]}%
      \x{\zityuuii}{normal[1][jo]}%
      \x{\hyousyou}{normal[1][jo]}%
      \x{\nagahako}{normal[1][jo]}%
      \x{\uekakenagahako}{normal[1][jo]}%
      \x{\sitakakenagahako}{normal[1][jo]}%
      \x{\marusounyuu}{normal[1][jo]}%
      \x{\tinymarusounyuu}{normal[1][jo]}%
      \x{\MigiNakaFn}{normal[2][j]}%
      \x{\MigiNakaSc}{normal[2][j]}%
      \x{\MigiNakaSm}{normal[2][j]}%
      \x{\MigiNakaTn}{normal[2][j]}%
      \x{\MigiKataFn}{normal[2][j]}%
      \x{\MigiKataSc}{normal[2][j]}%
      \x{\MigiKataSm}{normal[2][j]}%
      \x{\MigiKataTn}{normal[2][j]}%
      \x{\MigiKintoFn}{normal[2][j]}%
      \x{\MigiKintoSc}{normal[2][j]}%
      \x{\MigiKintoSm}{normal[2][j]}%
      \x{\MigiKintoTn}{normal[2][j]}%
      \x{\HidariNakaFn}{normal[2][j]}%
      \x{\HidariNakaSc}{normal[2][j]}%
      \x{\HidariNakaSm}{normal[2][j]}%
      \x{\HidariNakaTn}{normal[2][j]}%
      \x{\HidariKataFn}{normal[2][j]}%
      \x{\HidariKataSc}{normal[2][j]}%
      \x{\HidariKataSm}{normal[2][j]}%
      \x{\HidariKataTn}{normal[2][j]}%
      \x{\HidariKintoFn}{normal[2][j]}%
      \x{\HidariKintoSc}{normal[2][j]}%
      \x{\HidariKintoSm}{normal[2][j]}%
      \x{\HidariKintoTn}{normal[2][j]}%
      \x{\rubyii}{normal[2][j]}%
      \x{\hidarirubyii}{normal[2][j]}%
      \x{\ukun}{normal[2][j]}%
      \x{\sakun}{normal[2][j]}%
      \x{\kanjiukun}{normal[2][j]}%
      \x{\kanjisakun}{normal[2][j]}%
      \x{\kintoruby}{normal[2][j]}%
      \x{\hidarikintoruby}{normal[2][j]}%
      \x{\kanjikintoruby}{normal[2][j]}%
      \x{\hidarikanjikintoruby}{normal[2][j]}%
      \x{\kanjiruby}{normal[2][j]}%
      \x{\rubyiii}{normal[2][j]}%
      \x{\sougyou}{normal[2][j]}%
      \x{\sougyoux}{normal[2][j]}%
      \x{\sougyouii}{normal[2][j]}%
      \x{\tunogaki}{normal[2][j]}%
      \x{\hukusougyou}{normal[2][j]}%
      \x{\miseketiii}{normal[2][j]}%
      \x{\zityuu}{normal[2][j]}%
      \x{\SayuuNakaFn}{normal[3][j]}%
      \x{\SayuuNakaSc}{normal[3][j]}%
      \x{\SayuuNakaSm}{normal[3][j]}%
      \x{\SayuuNakaTn}{normal[3][j]}%
      \x{\SayuuKataFn}{normal[3][j]}%
      \x{\SayuuKataSc}{normal[3][j]}%
      \x{\SayuuKataSm}{normal[3][j]}%
      \x{\SayuuKataTn}{normal[3][j]}%
      \x{\SayuuKintoFn}{normal[3][j]}%
      \x{\SayuuKintoSc}{normal[3][j]}%
      \x{\SayuuKintoSm}{normal[3][j]}%
      \x{\SayuuKintoTn}{normal[3][j]}%
      \x{\sangyouwari}{normal[3][j]}%
      \x{\yongyouwari}{normal[4][j]}%
      \x{\gogyouwari}{normal[5][j]}%
      \x{\reten}{normal[0][p]}%
      \x{\ititen}{normal[0][p]}%
      \x{\niten}{normal[0][p]}%
      \x{\santen}{normal[0][p]}%
      \x{\zyouten}{normal[0][p]}%
      \x{\tyuuten}{normal[0][p]}%
      \x{\geten}{normal[0][p]}%
      \x{\kouten}{normal[0][p]}%
      \x{\otuten}{normal[0][p]}%
      \x{\heiten}{normal[0][p]}%
      \x{\kaeriten}{normal[1][p]}%
      \x{\retenkana}{normal[1][p]}%
      \x{\migikogaki}{normal[1][p]}%
      \x{\hidarikogaki}{normal[1][p]}%
      \x{\migikogakiii}{normal[1][p]}%
      \x{\kanagaki}{normal[1][p]}%
      \x{\kokana}{normal[2][p]}}}%
%%% normal[<number of mandatory arguments>][<properties>]
%%% <properties>:
%%%    *: allows optional *,  o: first argument is optional,
%%%    1: mathop, 2: mathbin, 3: mathrel, 4: mathopen,
%%%    5: mathclose, 6: mathpunct, 7: mathinner
\edef\x{%
   \def\noexpand\@uline@extra@math@commands{%
      \x{\left}{left}%
      \x{\right}{right}%
      \x{\mathord}{setclass}%
      \x{\mathop}{setclass}%
      \x{\mathbin}{setclass}%
      \x{\mathrel}{setclass}%
      \x{\mathopen}{setclass}%
      \x{\mathclose}{setclass}%
      \x{\mathpunct}{setclass}%
      \x{\mathinner}{setclass}%
      \x{\mathaccent}{attachment}%
      \x{\mathchoice}{mathchoice}%
      \x{\displaystyle}{mathstyle}%
      \x{\textstyle}{mathstyle}%
      \x{\scriptstyle}{mathstyle}%
      \x{\scriptscriptstyle}{mathstyle}%
      \x{\limits}{limitctrl}%
      \x{\displaylimits}{limitctrl}%
      \x{\nolimits}{limitctrl}%
      \x{\radical}{attachment}%
      \x{\delimiter}{delimiter}%
      \x{\mskip}{mskip}%
      \x{\mkern}{mskip}%
      \x{\text}{normal[1][]}%
      \x{\phantom}{normal[1][]}%
      \x{\hphantom}{normal[1][]}%
      \x{\vphantom}{normal[1][]}%
      \x{\nfss@text}{normal[1][]}%
      \xx{\ensuremath}{ensuremath}%
      \x{\begin}{begin}%
      \x{\end}{end}%
      \x{\fam}{setmathgroup}%
      \x{\mathgroup}{setmathgroup}%
\expandafter\ifx\csname pfmtname\endcsname\relax\else
      \x{\jfam}{jfam}%
      \xx{\mathmc}{normal[1][]}%
      \xx{\mathgt}{normal[1][]}%
\fi
      \xx{\mathrm}{normal[1][]}%
      \xx{\mathnormal}{normal[1][]}%
      \xx{\mathcal}{normal[1][]}%
      \xx{\mathbf}{normal[1][]}%
      \xx{\mathsf}{normal[1][]}%
      \xx{\mathit}{normal[1][]}%
      \xx{\mathtt}{normal[1][]}%
      \xx{\sqrt}{sqrt}%
      \x{\sqrtsign}{expandit}%
      \xx{\not}{mathnot}%
      \x{\bmod}{mathbin}%
      \x{\pmod}{expandit}%
      \x{\big}{delimsize}%
      \x{\Big}{delimsize}%
      \x{\bigg}{delimsize}%
      \x{\Bigg}{delimsize}%
      \x{\bigl}{delimsizex}%
      \x{\Bigl}{delimsizex}%
      \x{\biggl}{delimsizex}%
      \x{\Biggl}{delimsizex}%
      \x{\bigm}{delimsizex}%
      \x{\Bigm}{delimsizex}%
      \x{\biggm}{delimsizex}%
      \x{\Biggm}{delimsizex}%
      \x{\bigr}{delimsizex}%
      \x{\Bigr}{delimsizex}%
      \x{\biggr}{delimsizex}%
      \x{\Biggr}{delimsizex}%
      \x{\smash}{smash}%
      \x{\cases}{normal[1][]}%
      \x{\matrix}{normal[1][]}%
      \x{\pmatrix}{normal[1][]}%
      \x{\bordermatrix}{normal[1][]}%
      \x{\stackrel}{expandit}%
      \x{\frac}{normal[2][]}%
      \x{\dfrac}{normal[2][]}%
      \x{\tfrac}{normal[2][]}%
      \x{\underline}{normal[1][]}%
      \xx{\overline}{normal[1][]}%
      \x{\int}{mathop}%
      \x{\oint}{mathop}%
      \xx{\cong}{mathrel}%
      \x{\ne}{mathrel}%
      \x{\neq}{mathrel}%
      \xx{\notin}{mathrel}%
      \xx{\rightleftharpoons}{mathrel}%
      \xx{\doteq}{mathrel}%
      \xx{\joinrel}{mathrel}%
      \xx{\relbar}{mathrel}%
      \xx{\Relbar}{mathrel}%
      \xx{\hookleftarrow}{mathrel}%
      \xx{\hookrightarrow}{mathrel}%
      \xx{\bowtie}{mathrel}%
      \xx{\models}{mathrel}%
      \xx{\Longrightarrow}{mathrel}%
      \xx{\Longleftarrow}{mathrel}%
      \xx{\longrightarrow}{mathrel}%
      \xx{\longleftarrow}{mathrel}%
      \xx{\mapsto}{mathrel}%
      \xx{\longmapsto}{mathrel}%
      \xx{\longleftrightarrow}{mathrel}%
      \xx{\Longleftrightarrow}{mathrel}%
      \xx{\iff}{expandit}%
      \xx{\ldots}{mathinner}%
      \xx{\cdots}{cdots}%
      \xx{\ddots}{mathinner}%
      \x{\mathellipsis}{expandit}%
      \x{\acute}{latex@mathaccent}%
      \x{\bar}{latex@mathaccent}%
      \x{\breve}{latex@mathaccent}%
      \x{\check}{latex@mathaccent}%
      \x{\ddot}{latex@mathaccent}%
      \x{\dot}{latex@mathaccent}%
      \x{\grave}{latex@mathaccent}%
      \x{\hat}{latex@mathaccent}%
      \x{\mathring}{latex@mathaccent}%
      \x{\tilde}{latex@mathaccent}%
      \x{\vec}{latex@mathaccent}%
      \x{\widehat}{wideaccent}%
      \x{\widetilde}{wideaccent}%
      \x{\skew}{normal[3][]}%
      \x{\overrightarrow}{normal[1][]}%
      \x{\overleftarrow}{normal[1][]}%
      \x{\overbrace}{normal[1][]}%
      \x{\underbrace}{normal[1][]}%
      \xx{\bm}{boldsymbol}%
      \xx{\boldsymbol}{boldsymbol}%
      \xx{\mathversion}{invalidcommandwithonearg}%
      \x{\boldmath}{invalidcommand}%
      \x{\unboldmath}{invalidcommand}%
      \xx{\selectfont}{invalidcommand@}%
      \x{\tiny}{invalidcommand}%
      \x{\scriptsize}{invalidcommand}%
      \x{\footnotesize}{invalidcommand}%
      \x{\small}{invalidcommand}%
      \x{\normalsize}{invalidcommand}%
      \x{\large}{invalidcommand}%
      \x{\Large}{invalidcommand}%
      \x{\LARGE}{invalidcommand}%
      \x{\huge}{invalidcommand}%
      \x{\Huge}{invalidcommand}%
      \xx{\gtfamily}{errorcommand}%
      \xx{\mcfamily}{errorcommand}%
      \xx{\rmfamily}{errorcommand}%
      \xx{\sffamily}{errorcommand}%
      \xx{\ttfamily}{errorcommand}%
      \xx{\bfseries}{errorcommand}%
      \xx{\mdseries}{errorcommand}%
      \xx{\slshape}{errorcommand}%
      \xx{\itshape}{errorcommand}%
      \xx{\scshape}{errorcommand}%
      \xx{\upshape}{errorcommand}%
      \xx{\em}{errorcommand}%
      \xx{\cal}{fontchange}%
      \xx{\mit}{fontchange}%
      \xx{\gt}{fontchange}%
      \xx{\mc}{fontchange}%
      \xx{\rm}{fontchange}%
      \xx{\sf}{fontchange}%
      \xx{\tt}{fontchange}%
      \xx{\bf}{fontchange}%
      \xx{\sl}{fontchange}%
      \xx{\it}{fontchange}%
      \xx{\sc}{fontchange}%
      \x{\uppercase}{changecase}%
      \x{\lowercase}{changecase}%
      \x{\setlength}{setlength}%
      \x{\addtolength}{setlength}%
      \x{\thinspace}{addmspace}%
      \x{\,}{addmspace}%
      \x{\medspace}{addmspace}%
      \x{\:}{addmspace}%
      \x{\>}{addmspace}%
      \x{\thickspace}{addmspace}%
      \x{\;}{addmspace}%
      \x{\negthinspace}{addmspace}%
      \x{\!}{addmspace}%
      \x{\negmedspace}{addmspace}%
      \x{\negthickspace}{addmspace}%
      \xx{\tmspace}{tmspace}%
      \x{\vcenter}{normal[1][]}%
      \x{\nonscript}{omit}%
      \x{\kenten}{bou}%
      \x{\bou}{bou}%
      \x{\url}{process@url}}%
   \def\noexpand\@uline@extra@math@commands@amsgen{%
      \x{\ilimits@}{limitctrl}%
      \x{\slimits@}{limitctrl}%
      \x{\varinjlim}{mathop}%
      \x{\varliminf}{mathop}%
      \x{\varlimsup}{mathop}%
      \x{\varprojlim}{mathop}%
      \xx{\qopname}{normal[3][1]}%
      \xx{\operatorname}{normal[1][*1]}%
      \x{\mod}{amsmod}%
      \x{\pod}{amspod}%
      \x{\bBigg@}{expandit}%
      \x{\Acute}{expandit}%
      \x{\Bar}{expandit}%
      \x{\Breve}{expandit}%
      \x{\Check}{expandit}%
      \x{\Ddot}{expandit}%
      \x{\Dot}{expandit}%
      \x{\Grave}{expandit}%
      \x{\Hat}{expandit}%
      \x{\Tilde}{expandit}%
      \x{\Vec}{expandit}%
      \x{\dddot}{normal[1][]}%
      \x{\ddddot}{normal[1][]}%
      \xx{\pmb}{normal[1][]}%
      \xx{\binom}{normal[2][]}%
      \x{\dbinom}{normal[2][]}%
      \x{\tbinom}{normal[2][]}%
      \xx{\genfrac}{normal[6][]}%
      \x{\DOTSB}{omit}%
      \x{\DOTSI}{omit}%
      \x{\DOTSX}{omit}%
      \x{\bigcap}{mathop}%
      \x{\bigcup}{mathop}%
      \x{\bigodot}{mathop}%
      \x{\bigoplus}{mathop}%
      \x{\bigotimes}{mathop}%
      \x{\bigsqcup}{mathop}%
      \x{\biguplus}{mathop}%
      \x{\bigvee}{mathop}%
      \x{\bigwedge}{mathop}%
      \x{\coprod}{mathop}%
      \x{\prod}{mathop}%
      \x{\sum}{mathop}%
      \x{\boxed}{normal[1][]}%
      \x{\implies}{expandit}%
      \x{\impliedby}{expandit}%
      \x{\And}{expandit}%
      \x{\colon}{expandit}%
      \x{\@cdots}{mathinner}%
      \x{\@ldots}{mathinner}%
      \x{\dotsi}{expandit}%
      \x{\dotsb}{amsdotsx}%
      \xx{\dotsc}{amsdotsx}%
      \x{\dotsm}{amsdotsx}%
      \xx{\dotso}{amsdotsx}%
      \xx{\dots}{amsdots}%
      \x{\iint}{mathop}%
      \x{\iiint}{mathop}%
      \x{\iiiint}{mathop}%
      \x{\idotsint}{mathop}%
      \x{\MultiIntegral}{normal[1][1]}%
      \x{\cfrac}{normal[2][o]}%
      \x{\overset}{uoset}%
      \x{\underset}{uoset}%
      \x{\sideset}{normal[3][1]}%
      \x{\overleftrightarrow}{normal[1][]}%
      \x{\underrightarrow}{normal[1][]}%
      \x{\underleftarrow}{normal[1][]}%
      \x{\underleftrightarrow}{normal[1][]}%
      \x{\xleftarrow}{normal[1][3o]}%
      \x{\xrightarrow}{normal[1][3o]}%
      \x{\substack}{normal[1][]}}%
   \def\noexpand\@uline@extra@math@commands@amsfonts{%
      \xx{\frak}{normal[1][]}%
      \xx{\Bbb}{normal[1][]}%
      \xx{\bold}{normal[1][]}%
      \x{\dasharrow}{mathrel}%
      \x{\dashleftarrow}{mathrel}%
      \x{\dashrightarrow}{mathrel}}%
   \def\noexpand\@uline@extra@math@commands@txpx{%
      \x{\mappedfrom}{mathrel}%
      \x{\longmappedfrom}{mathrel}%
      \x{\Mappedfrom}{mathrel}%
      \x{\Longmappedfrom}{mathrel}%
      \x{\Mapsto}{mathrel}%
      \x{\Longmapsto}{mathrel}%
      \x{\mmapsto}{mathrel}%
      \x{\longmmapsto}{mathrel}%
      \x{\mmappedfrom}{mathrel}%
      \x{\longmmappedfrom}{mathrel}%
      \x{\Mmapsto}{mathrel}%
      \x{\Longmmapsto}{mathrel}%
      \x{\Mmappedfrom}{mathrel}%
      \x{\Longmmappedfrom}{mathrel}%
      \x{\oiint}{mathop}%
      \x{\ointctrclockwise}{mathop}%
      \x{\ointclockwise}{mathop}%
      \x{\sqint}{mathop}%
      \x{\oiiint}{mathop}%
      \x{\varointctrclockwise}{mathop}%
      \x{\varointclockwise}{mathop}%
      \x{\fint}{mathop}%
      \x{\oiintctrclockwise}{mathop}%
      \x{\varoiintclockwise}{mathop}%
      \x{\oiintclockwise}{mathop}%
      \x{\varoiintctrclockwise}{mathop}%
      \x{\oiiintctrclockwise}{mathop}%
      \x{\varoiiintclockwise}{mathop}%
      \x{\oiiintclockwise}{mathop}%
      \x{\varoiiintctrclockwise}{mathop}%
      \x{\sqiint}{mathop}%
      \x{\sqiiint}{mathop}}%
   \def\noexpand\@uline@extra@math@commands@@txpx@shared{%
      \x{\iint}{mathop}%
      \x{\iiint}{mathop}%
      \x{\iiiint}{mathop}%
      \x{\idotsint}{mathop}}%
   \def\noexpand\@uline@extra@math@commands@mathabx{%
      \x{\bigcomplement}{mathop}%
      \x{\overgroup}{normal[1][]}%
      \x{\undergroup}{normal[1][]}%
      \x{\ring}{latex@mathaccent}%
      \x{\widecheck}{org@mathaccent}%
      \x{\widebar}{org@mathaccent}%
      \x{\widearrow}{org@mathaccent}%
      \x{\wideparen}{org@mathaccent}%
      \x{\widering}{normal[1][]}%
      \x{\widedot}{normal[1][]}%
      \x{\wideddot}{normal[1][]}%
      \x{\widedddot}{normal[1][]}%
      \x{\wideddddot}{normal[1][]}%
      \x{\varnot}{abx@varnot}}%
   \def\noexpand\@uline@extra@math@commands@@mathabx@shared{%
      \x{\dddot}{latex@mathaccent}%
      \x{\ddot}{latex@mathaccent}}%
   \def\noexpand\@uline@extra@math@commands@fourier{%
      \x{\dblbrackleft}{dblbrackleft}%
      \x{\dblbrackright}{dblbrackright}%
      \x{\othergreek}{normal[1][]}%
      \x{\wideparen}{org@mathaccent}%
      \x{\widearc}{org@mathaccent}%
      \x{\wideOarc}{org@mathaccent}%
      \x{\oiint}{mathop}%
      \x{\oiiint}{mathop}%
      \x{\slashint}{mathop}}%
   \def\noexpand\@uline@extra@math@commands@yhmath{%
      \x{\wideparen}{normal[1][]}%
      \x{\widering}{normal[1][]}%
      \x{\widetriangle}{normal[1][]}}%
   \def\noexpand\@uline@extra@math@commands@bm{%
      \xx{\hm}{boldsymbol}%
      \x{\heavysymbol}{boldsymbol}}%
   \def\noexpand\@uline@extra@math@commands@leftidx{%
      \x{\leftidx}{normal[3][]}%
      \x{\ltrans}{normal[1][]}}}
\expandafter\expandafter\expandafter\endgroup\expandafter\y\x
\def\@uline@commands@to@protect{%
   \\                 \[              \]             \*               \a
   \addtocounter      \addtolength    \asciibar      \boldmath        \bou
   \BS                \color          \colorbox      \endnotetext     \fbox
   \fcolorbox         \fontsize       \footnotesize  \footnotetext    \frame
   \framebox          \frenchspacing  \glossary      \hphantom        \Huge
   \huge              \index          \kenten        \keytop          \kintou
   \label             \LARGE          \Large         \large           \leavevmode
   \linebreak         \makebox        \marginpar     \MARU            \maru
   \mathhexbox        \mathstrut      \mbox          \MO              \nolinebreak
   \nonfrenchspacing  \nopagebreak    \normalsize    \oalign          \oldstylenums
   \ooalign           \openbox        \pagebreak     \phantom         \Pifont
   \Pisymbol          \PMO            \raisebox      \refstepcounter  \ruby
   \rule              \scriptsize     \setcounter    \setlength       \stepcounter
   \small             \smash          \strut         \symbol          \TeX
   \textcircled       \textcolor      \textsquare    \tiny            \TMO
   \unboldmath        \underbar       \underline     \vphantom}
\def\@uline@commands@to@protect@@jtex{\dm \min \dg \goth}
\def\@uline@math@commands@to@protect{%
   \|               \acute          \angle       \Arrowvert       \arrowvert
   \backslash       \bar            \bm          \bmod            \bordermatrix
   \bowtie          \Box            \bracevert   \breve           \cases
   \cdots           \check          \cline       \cong            \Diamond
   \ddot            \ddots          \dot         \doteq           \downarrow
   \Downarrow       \frac           \hbar        \hline           \hookleftarrow
   \hookrightarrow  \grave          \hat         \iff             \int
   \Join            \joinrel        \langle      \lbrace          \lceil
   \leadsto         \lfloor         \lgroup      \lhd             \lmoustache
   \Longleftarrow  \longleftarrow   \Longleftrightarrow   \longleftrightarrow
   \longmapsto     \Longrightarrow  \longrightarrow  \mapsto      \mathbf
   \mathcal        \mathellipsis    \mathit      \mathgt          \mathmc
   \mathnormal     \mathring        \mathrm      \mathsf          \mathsterling
   \mathtt         \mathunderscore  \matrix      \mho             \models
   \multicolumn    \ne              \neq         \notin           \oint
   \overbrace      \overleftarrow   \overline    \overrightarrow  \pmatrix
   \rangle         \rbrace          \rceil       \Relbar          \relbar
   \rfloor         \rgroup          \rhd      \rightleftharpoons  \rmoustache
   \skew           \sqsubset        \sqsupset    \surd            \tilde
   \underbrace     \unlhd           \unrhd       \Uparrow         \uparrow
   \Updownarrow    \updownarrow     \vec         \Vert            \vert
   \vdots          \widehat         \widetilde}
\def\@uline@commands@to@protect@url{\url \urlstyle}
\expandafter\ifx\csname pfmtname\endcsname\relax
   \let\@uline@commands@to@protect@ajmacros\@empty
\else
   \def\@uline@commands@to@protect@ajmacros{%
      \$B"((J            \aj$BH>3Q(J          \ajApostrophe     \ajArrow
      \ajCross       \ajFrac          \ajHasenKakuAlph  \ajHashigoTaka
      \ajHishi       \ajKakko         \ajKakkoalph      \ajKakkoAlph
      \ajKakkoHira   \ajKakkoKansuji  \ajKakkoKata      \ajKakkoroman
      \ajKakkoRoman  \ajKakkoYobi     \ajKaku           \ajKosu
      \ajKunten      \ajKuroKaku      \ajKuroMaru       \ajKuroMaruKaku
      \ajLig         \ajMaru          \ajMaruKaku       \ajMaruKansuji
      \ajMaruYobi    \ajMayuHama      \ajNenrei         \ajnenrei
      \ajNijuMaru    \ajPeriod        \ajPICT           \ajQuote
      \ajRecycle     \ajroman         \ajRoman          \ajSlanted
      \ajSquareMark  \ajTatsuSaki     \ajTsuchiYoshi    \ajTsumekakko
      \ajTsumesuji   \ajTumekakko     \ajTumesuji       \ajYear}
\fi
\def\@uline@commands@to@protect@sfkanbun{%
   \fukutagyobox  \FuriKanji  \FuriKanjikt  \furikanji  \furikanjikt
   \ichireten     \kundoku    \kungofu      \kungofuni  \kungofuno
   \kungofuge     \kutoten    \migishift    \ninojiten  \ongofu
   \ongofuge      \ongofuni   \ongofuno     \reten      \tagyobox
   \tudume        \uereten}
\def\@uline@commands@to@protect@furikana{%
   \KANA           \Kana    \kana        \KANAmatubi  \KANAorig
   \KANAorigmatubi \KANAtop \nakakintou}
\def\@uline@commands@to@protect@furiknkt{%
   \KANA        \KANAkt       \Kanakt      \kanakt     \KANAktorig
   \KANAktS     \KANAktSorig  \KANAktStop  \KANAkttop  \katatsukiK
   \katatsukiR  \nakakintou}
\@namedef{@uline@commands@to@protect@kunten2e}{%
   \geten              \gogyouwari       \heiten          \hidarikanjikintoruby
   \HidariKataFn       \HidariKataSc     \HidariKataSm    \HidariKataTn
   \HidariKintoFn      \hidarikintoruby  \HidariKintoSc   \HidariKintoSm
   \HidariKintoTn      \hidarikogaki     \HidariNakaFn    \HidariNakaSc
   \HidariNakaSm       \HidariNakaTn     \hidarirubyii    \hidarisounyuu
   \hidaritinysounyuu  \hukusougyou      \hyousyou        \ititen
   \kaeriten           \kanagaki         \kanjikintoruby  \kanjiruby
   \kanjisakun         \kanjiukun        \kaou            \kintoruby
   \kokana             \kouten           \marusounyuu     \MigiKataFn
   \MigiKataSc         \MigiKataSm       \MigiKataTn      \MigiKintoFn
   \MigiKintoSc        \MigiKintoSm      \MigiKintoTn     \migikogaki
   \migikogakiii       \MigiNakaFn       \MigiNakaSc      \MigiNakaSm
   \MigiNakaTn         \miseketi         \miseketiii      \nagahako
   \niten              \odorihuku        \odorii          \otuten
   \reten              \retenkana        \rubyii          \rubyiii
   \ryakuou            \sakun            \sangyouwari     \santen
   \SayuuKataFn        \SayuuKataSc      \SayuuKataSm     \SayuuKataTn
   \SayuuKintoFn       \SayuuKintoSc     \SayuuKintoSm    \SayuuKintoTn
   \SayuuNakaFn        \SayuuNakaSc      \SayuuNakaSm     \SayuuNakaTn
   \sitakakenagahako   \sougyou          \sougyouii       \sougyoux
   \sounyuu            \tinymarusounyuu  \tinysounyuu     \tunogaki
   \tyuuten            \uekakenagahako   \ukun            \yongyouwari
   \zityuu             \zityuuii         \zyouten}
\def\@uline@commands@to@protect@amsgen{\nobreakdash}
\def\@uline@math@commands@to@protect@amsgen{%
   \Acute       \And            \AmS             \Bar                 \bigcap
   \bigcup      \bigodot        \bigotimes       \bigoplus            \bigsqcup
   \biguplus    \bigvee         \bigwedge        \Breve               \Check
   \cfrac       \coprod         \dbinom          \ddddot              \dddot
   \Ddot        \dfrac          \Dot             \Grave               \Hat
   \hdotsfor    \iint           \iiint           \iiiint              \idotsint
   \implies     \impliedby      \leftroot        \lVert               \lvert
   \mod         \MultiIntegral  \nolimits@       \overleftrightarrow  \overset
   \pod         \prod           \rVert           \rvert               \sideset
   \substack    \sum     \underleftarrow  \underleftrightarrow  \underrightarrow
   \underset    \uproot         \tbinom          \tfrac               \Tilde
   \varinjlim   \varliminf      \varlimsup       \varprojlim          \Vec
   \xleftarrow  \xrightarrow}
\def\@uline@math@commands@to@protect@amsfonts{%
   \dasharrow   \dashleftarrow   \dashrightarrow   \llcorner   \lrcorner
   \ulcorner    \urcorner}
\def\@uline@commands@to@protect@mathpazo{\ppleuro}
\def\@uline@math@commands@to@protect@txpx{%
   \fint               \Lbag            \lbag              \llbracket   \oiiint
   \oiiintclockwise    \oiiintctrclockwise   \oiint        \oiintclockwise
   \oiintctrclockwise  \ointclockwise   \ointctrclockwise  \Rbag        \rbag
   \rrbracket          \sqiiint    \sqiint      \sqint     \varoiiintclockwise
   \varoiiintctrclockwise   \varoiintclockwise   \varoiintctrclockwise
   \varointclockwise   \varointctrclockwise}
\def\@uline@math@commands@to@protect@@txpx@shared{%
   \iint       \iiint      \iiiint   \idotsint   \llcorner
   \lrcorner   \ulcorner   \urcorner}
\def\@uline@commands@to@protect@mathabx{\changenotsign \maya \mayadigit}
\def\@uline@math@commands@to@protect@mathabx{%
   \bigcomplement   \ldbrack      \lfilet      \lsemantic   \not
   \overgroup       \rdbrack      \rfilet      \ring        \rsemantic
   \thickvert       \undergroup   \varnot      \widearrow   \widebar
   \widecheck       \wideddddot   \widedddot   \wideddot    \widedot
   \wideparen       \widering}
\def\@uline@math@commands@to@protect@@mathabx@shared{%
   \ddddot   \dddot}
\def\@uline@commands@to@protect@fourier{\TakeFourierOrnament}
\def\@uline@math@commands@to@protect@fourier{%
   \dblbrackleft   \dblbrackright   \llbracket   \oiiint   \oiint
   \othergreek     \rrbracket       \slashint    \VERT     \widearc
   \wideOarc       \wideparen}
\def\@uline@math@commands@to@protect@@fourier@shared{%
   \lVert   \lvert   \rVert   \rvert}
\def\@uline@math@commands@to@protect@yhmath{%
   \adots   \wideparen   \widering   \widetriangle}
\def\@uline@math@commands@to@protect@leftidx{\leftidx \ltrans}
\begingroup\catcode`\|=\active
\gdef\@pkgbraket@setup{%
   \def\@pkgbraket@change@vert##1{\mathcode`\|"8000\let|##1}%
   \def\Braket##1{\left<\protect\@Braket@setup{##1}\right>}%
   \def\@Braket@setup{\@pkgbraket@change@vert\BraVert}%
   \def\Set##1{\left\{\:{\protect\@Set@setup ##1}\:\right\}}%
   \def\@Set@setup{\@pkgbraket@change@vert\SetVert}%
   \def\set##1{\mathinner{\lbrace\,{\protect\@set@setup ##1}\,\rbrace}}%
   \def\@set@setup{\@pkgbraket@change@vert\midvert}}
\endgroup
\def\@uline@prepare#1#2{%
   \expandafter\global\expandafter\@uline@append@replacement@text
      \expandafter#1%
      \csname \expandafter\@gobble\string#1@#2\endcsname}
\def\@uline@x@prepare#1{%
   \@uline@x@prepare@\@uline@commands@to@protect{#1}%
   \@uline@x@prepare@\@uline@math@commands@to@protect{#1}%
   \@uline@x@prepare@\@uline@extra@commands{#1}%
   \@uline@x@prepare@\@uline@extra@math@commands{#1}}
\def\@uline@x@prepare@#1#2{%
   \expandafter\ifx\csname \expandafter\@gobble\string#1@#2\endcsname\relax\else
      \@uline@prepare#1{#2}%
   \fi}
\def\@uline@prepare@mathfont#1{%
   \expandafter\ifx\csname\expandafter\@gobble\string#1\endcsname\relax\else
      \edef\@tempa{%
         [\noexpand#1\expandafter\noexpand\csname normal[1][]\endcsname]%
         [\expandafter\noexpand
          \csname\expandafter\@gobble\string#1\space\endcsname
          \expandafter\noexpand\csname normal[1][]\endcsname]}%
      \@uline@append@replacement@text\@uline@extra@math@commands\@tempa
      \@uline@append@tokens\@uline@math@commands@to@protect{#1}%
   \fi}%
\def\@uline@prepare@{%
   \expandafter\ifx\csname jfmtname\endcsname\relax\else
      \@uline@append@replacement@text
         \@uline@commands@to@protect\@uline@commands@to@protect@@jtex
      \@uline@append@tokens\@uline@math@commands@to@protect{\min}%
      \@uline@append@replacement@text\@uline@extra@math@commands{[\min\mathop]}%
      \expandafter\ifx\csname pmin\endcsname\relax
         \expandafter\let\expandafter\pmin\csname min \endcsname
      \fi
      \@ifpackageloaded{amsgen}%
         {\newcommand*\@uline@jTeXmin[1]{\@@uline\pmin}}%
         {\let\@uline@jTeXmin\@uline@fontchange}%
   \fi
   \@tfor\@tempa:=\mathbb\mathfrak\mathrsfs\mathscr\mathbold\varmathbb\do{%
      \expandafter\@uline@prepare@mathfont\@tempa}%
   \@for\@tempa:=ajmacros,furikana,furiknkt,kunten2e,sfkanbun,url\do{%
      \@ifpackageloaded{\@tempa}%
         {\@uline@prepare\@uline@extra@commands\@tempa
          \@uline@prepare\@uline@commands@to@protect\@tempa}\relax
      \global\expandafter\let
         \csname @uline@extra@commands@\@tempa\endcsname\relax
      \global\expandafter\let
         \csname @uline@commands@to@protect@\@tempa\endcsname\relax}%
   \@ifpackageloaded{amsgen}%
      {\@uline@x@prepare{amsgen}%
       \def\@uline@smash{\@uline@normal[1][o]}%
       \def\@uline@math@smash{\@uline@math@normal[1][o]}%
       \def\@uline@math@latex@mathaccent{\@uline@math@normal[1][]}%
       \let\@uline@math@cdots\@uline@math@amsdotsx
       \@uline@append@tokens\@uline@x@get@scripts@checklist\nolimits@}\relax
   \@ifpackageloaded{amsfonts}%
      {\@uline@x@prepare{amsfonts}%
       \def\@uline@math@wideaccent{\@uline@math@normal[1][]}}\relax
   \@ifpackageloaded{mathpazo}{\@uline@x@prepare{mathpazo}}\relax
   \let\@tempa\@empty
   \@ifpackageloaded{txfonts}{\let\@tempa\relax}\relax
   \@ifpackageloaded{pxfonts}{\let\@tempa\relax}\relax
   \ifx\@tempa\relax
      \@uline@x@prepare{txpx}%
      \let\@uline@math@mathnot\@uline@math@txpx@mathnot
      \@ifpackageloaded{amsgen}\relax
         {\@uline@prepare\@uline@math@commands@to@protect{@txpx@shared}%
          \@uline@prepare\@uline@extra@math@commands{@txpx@shared}}%
   \fi
   \@ifpackageloaded{mathabx}%
      {\@uline@x@prepare{mathabx}%
       \let\@uline@math@mathnot\@uline@math@abx@mathnot
       \@ifpackageloaded{amsgen}\relax
          {\@uline@prepare\@uline@math@commands@to@protect{@mathabx@shared}%
           \@uline@prepare\@uline@extra@math@commands{@mathabx@shared}}}%
      \relax
   \@ifpackageloaded{fourier}%
      {\@uline@x@prepare{fourier}%
       \@uline@append@tokens\@uline@alt@parse@math@checklist{%
          {\oiint\DOTSI}{\oiiint\DOTSI}{\slashint\DOTSI}}%
       \@ifpackageloaded{amsgen}%
          {\global\@uline@append@tokens\@uline@math@commands@to@protect\widering
           \edef\@tempa{{[\noexpand\widering
              \expandafter\noexpand\csname normal[1][]\endcsname]}}%
           \global\expandafter\@uline@append@tokens
              \expandafter\@uline@extra@math@commands\@tempa}%
          {\@uline@prepare\@uline@math@commands@to@protect{@fourier@shared}}}%
       \relax
   \@ifpackageloaded{bm}{\@uline@prepare\@uline@extra@math@commands{bm}}\relax
   \@ifpackageloaded{yhmath}{\@uline@x@prepare{yhmath}}\relax
   \@ifpackageloaded{leftidx}{\@uline@x@prepare{leftidx}}\relax
   \@ifpackageloaded{braket}{\@pkgbraket@setup}\relax
   \@tfor\@tempa:=%
      \@uline@commands@to@protect@amsgen
      \@uline@math@commands@to@protect@amsgen
      \@uline@extra@commands@amsgen
      \@uline@extra@math@commands@amsgen
      \@uline@math@commands@to@protect@amsfonts
      \@uline@extra@math@commands@amsfonts
      \@uline@commands@to@protect@mathpazo
      \@uline@math@commands@to@protect@txpx
      \@uline@math@commands@to@protect@@txpx@shared
      \@uline@extra@math@commands@txpx
      \@uline@extra@math@commands@@txpx@shared
      \@uline@commands@to@protect@mathabx
      \@uline@math@commands@to@protect@mathabx
      \@uline@math@commands@to@protect@@mathabx@shared
      \@uline@extra@commands@mathabx
      \@uline@extra@math@commands@mathabx
      \@uline@extra@math@commands@@mathabx@shared
      \@uline@commands@to@protect@fourier
      \@uline@math@commands@to@protect@fourier
      \@uline@math@commands@to@protect@@fourier@shared
      \@uline@extra@commands@fourier
      \@uline@extra@math@commands@fourier
      \@uline@math@commands@to@protect@yhmath
      \@uline@extra@math@commands@yhmath
      \@uline@math@commands@to@protect@leftidx
      \@uline@extra@math@commands@leftidx
      \@uline@extra@math@commands@bm
      \do{\global\expandafter\let\@tempa\relax}}
\AtBeginDocument{\@uline@prepare@ \global\let\@uline@prepare@\relax}
\def\@uline@add@extra@cmds#1#2#3{%
   \def\@tempx##1##2\@nil{\noexpand##1}%
   \let\@tempy\@empty
   \def\@tempz{#3}%
   \@for\@tempa:=\@tempz\do{%
      \ifx\@tempa\@empty\else
         \@csc@t\@tempa\@firstofone\@tempa
         \edef\@tempb{\expandafter\@tempx\@tempa\@empty\@nil}%
         \ifx\@tempa\@tempb
            \if\expandafter\noexpand\@tempb\relax
               #2%
               \@csc@t\@tempy\@tempy\@tempb
            \fi
         \fi
      \fi}%
   \global\@csc@t#1#1\@tempy}
\def\AddTextCommandInUline{%
   \@uline@add@extra@cmds
      \@uline@extra@commands
      {\edef\@tempb{%
         [\expandafter\noexpand\@tempb\noexpand\textcommand]%
         [\expandafter\noexpand\csname
             \expandafter\expandafter\expandafter\@gobble
             \expandafter\string\@tempb\space
          \endcsname
          \noexpand\textcommand]}}}
\def\AddUrlLikeCommandInUline{\@uline@add@extra@cmds\@uline@urllike@cmds\relax}
\def\AddCommandInUline{%
   \def\@uline@add@cmd@proc{\@AddCommandInUline}%
   \let\@uline@add@cmd@checklist\@AddCommandInUline@checklist
   \@ifstar\@uline@add@cmd\@uline@add@cmd}
\def\AddMathCommandInUline{%
   \def\@uline@add@cmd@proc{\@AddMathCommandInUline}%
   \let\@uline@add@cmd@checklist\@AddMathCommandInUline@checklist
   \@ifstar\@uline@add@cmd\@uline@add@cmd}
\def\@uline@add@cmd#1{%
   \def\@uline@tempcmd{#1}%
   \@testopt\@@uline@add@cmd{0}}
\def\@@uline@add@cmd[#1]{%
   \def\@uline@args{#1}%
   \@ifnextchar[{\def\@uline@options{o}\@@@uline@add@cmd}
                {\let\@uline@options\@empty\@@@uline@add@cmd[]}}
\def\@@@uline@add@cmd[#1]#2{%
   \begingroup
   \@tempswafalse
   \let\@tempa\@uline@tempcmd
   \@csc@t\@tempb\@firstofone\@tempa
   \ifx\@tempa\@tempb
      \edef\@tempb{\expandafter\expandafter\expandafter\noexpand
         \expandafter\@car\@tempa\@empty\@nil}%
      \ifx\@tempa\@tempb
         \if\expandafter\noexpand\@tempb\relax \@tempswatrue \fi
      \fi
   \fi
   \if@tempswa
      \@onelevel@sanitize\@uline@args
      \afterassignment\remove@to@nnil
      \count@=0\@uline@args\relax\@nnil
      \ifx\@uline@options\@empty\else \advance\count@\m@ne \fi
      \ifnum\count@<\z@ \count@\z@ \fi
      \let\@uline@star@flag\@empty
      \let\@uline@item@type\@empty
      \lowercase{\def\@tempa{\@for\@tempa:=#2}}%
      \@tempa\do{%
         \edef\@tempa{\expandafter\@firstofone\@tempa\@empty}%
         \def\@tempb{\@tfor\@tempb:=}%
         \expandafter\@tempb\@uline@add@cmd@checklist\do{%
            \@csc@t\@tempc\@secondoftwo\@tempb
            \@csc@t\@tempb\@firstoftwo\@tempb
            \ifx\@tempa\@tempb \@tempc \@break@tfor \fi}}%
      \edef\@uline@options{\@uline@star@flag\@uline@item@type\@uline@options}%
      \edef\@tempa{\expandafter\noexpand
         \csname normal[\the\count@][\@uline@options]\endcsname}%
      \@tempswatrue
      \let\@tempd\@firstofone
      \edef\@tempb{\expandafter\expandafter\expandafter\@gobble
         \expandafter\string\@uline@tempcmd}%
      \expandafter\ifx\csname \@tempb\endcsname\relax\else
         \expandafter\ifx\csname \@tempb\space\endcsname\relax
            \@tempswafalse
         \else
            \edef\@tempc{\noexpand\protect
               \expandafter\noexpand\csname \@tempb\space\endcsname}%
            \expandafter\ifx\@uline@tempcmd\@tempc \let\@tempd\@gobble
            \else                                  \@tempswafalse
            \fi
         \fi
      \fi
      \edef\@uline@new@extra@commands@list{%
         \noexpand\@elt
            \expandafter\noexpand\@uline@tempcmd
            \expandafter\noexpand\@tempa
         \if@tempswa
            \noexpand\@elt
               \expandafter\noexpand\csname \@tempb\space\endcsname
               \expandafter\noexpand\@tempa
         \fi}%
      \edef\@uline@new@commands@to@protect{%
         \@tempd{%
            \expandafter\noexpand\@uline@tempcmd
            \if@tempswa
               \expandafter\noexpand\csname \@tempb\space\endcsname
            \fi}}%
      \@uline@add@cmd@proc
   \fi
   \endgroup}
\let\@uline@star@flag\relax
\let\@uline@item@type\relax
\edef\@AddCommandInUline@checklist{%
   {*{\def\@uline@star@flag{*}}}{{star}{\def\@uline@star@flag{*}}}%
   {s{\def\@uline@item@type{s}}}{{skip}{\def\@uline@item@type{s}}}%
   {n{\def\@uline@item@type{n}}}{{noglue}{\def\@uline@item@type{n}}}%
   {j{\def\@uline@item@type{j}}}{{kanji}{\def\@uline@item@type{j}}}%
\expandafter\ifx\csname pfmtname\endcsname\relax\else
   {{$B4A;z(J}{\def\@uline@item@type{j}}}%
\fi
   {p{\def\@uline@item@type{p}}}{{postfix}{\def\@uline@item@type{p}}}}
\edef\@AddMathCommandInUline@checklist{%
   {*{\def\@uline@star@flag{*}}}{{star}{\def\@uline@star@flag{*}}}%
   {\mathop{\def\@uline@item@type{1}}}{{op}{\def\@uline@item@type{1}}}%
   {\mathbin{\def\@uline@item@type{2}}}{{bin}{\def\@uline@item@type{2}}}%
   {\mathrel{\def\@uline@item@type{3}}}{{rel}{\def\@uline@item@type{3}}}%
   {\mathopen{\def\@uline@item@type{4}}}{{open}{\def\@uline@item@type{4}}}%
   {\mathclose{\def\@uline@item@type{5}}}{{close}{\def\@uline@item@type{5}}}%
   {\mathpunct{\def\@uline@item@type{6}}}{{punct}{\def\@uline@item@type{6}}}%
   {\mathinner{\def\@uline@item@type{7}}}{{inner}{\def\@uline@item@type{7}}}}
\def\@AddCommandInUline{%
   \@@AddCommandInUline
      \@uline@commands@to@protect
      \@uline@extra@commands}
\def\@AddMathCommandInUline{%
   \@@AddCommandInUline
      \@uline@math@commands@to@protect
      \@uline@extra@math@commands}
\def\@@AddCommandInUline#1#2{%
   \def\@tempa{\@tfor\@tempa:=}%
   \expandafter\@tempa\@uline@new@commands@to@protect\do{%
      \expandafter\expandafter\expandafter\in@
         \expandafter\@tempa\expandafter{#1}%
      \ifin@\else \global\@uline@append@replacement@text#1\@tempa \fi}%
   \def\@elt{\@AddCommandInUline@elt#2}%
   \@uline@new@extra@commands@list}
\def\@AddCommandInUline@elt#1#2#3{%
   \toks@{}%
   \def\@tempa##1[#2##2{%
      \toks@{##1[#2#3]}%
      \ifx##2\@nnil\else \expandafter\@tempb \fi}%
   \def\@tempb]##1[#2##2{%
      \toks@\expandafter{\the\toks@##1}%
      \ifx##2\@nnil\else \expandafter\@tempb \fi}%
   \expandafter\@tempa#1[#2\@nnil
   \xdef#1{\the\toks@}}
\def\@uline@unbreakable{$B!=!E!D(J}
\def\@@uline{\futurelet\let@token\@@@uline}
\def\@@@uline{%
   \let\@tempa\@uline@checktoken
   \ifx\let@token\@nnil
      \@uline@add@item
      \@uline@set@last@glue
      \let\@tempa\@gobble
   \else \ifx\let@token\@sptoken \let\@tempa\@uline@space
   \else \ifx\let@token\bgroup   \let\@tempa\@uline@bgroup
   \fi\fi\fi
   \@tempa}
\def\@uline@set@last@glue{%
   \ifx\@uline@previtem\relax\else
      \ifx\@uline@previtem\@empty\else
         \if@uline@inhibitglue\else
            \let\@tempa\@uline@previtem \@onelevel@sanitize\@tempa
            \edef\@tempa{\count@=`\@tempa}\@tempa\relax
            \ifnum\count@>\@cclv
               \@uline@check@Rglue\@uline@previtem
               \ifdim\dimen@>.05\p@
                   \edef\@uline@last@glue{\noexpand\ulineafterspace{\the\dimen@}}%
               \fi
            \fi
         \fi
      \fi
   \fi}
\newif\if@migrate@italiccorr
\global\@migrate@italiccorrfalse
\def\@uline@add@item{%
   \let\@tempa\@empty
   \let\@templist\@empty
   \ifx\@uline@prevjchar\relax\else
      \ifx\@uline@prevjchar\@empty
         \ifx\@uline@prevword\@empty\else
            \let\@tempa\@uline@prevword
            \@uline@hyphenate
         \fi
      \else
         \let\@tempa\@uline@prevjchar
      \fi
   \fi
   \ifx\@tempa\@empty\else
      \ifx\@templist\@empty
         \@csc@t\@tempa\@uline@prev@saved@protect\@tempa
         \expandafter\def\expandafter\@tempa\expandafter{%
            \expandafter\@uline@item\expandafter{\@tempa}}%
         \@uline@append@replacement@text\@uline@text\@tempa
      \else
         \edef\@tempa{%
            \def\noexpand\@tempa{%
               \noexpand\@uline@append@tokens\noexpand\@uline@text
                  {\discretionary
                   {\noexpand\@uline@item{\char\@uline@curr@hyphenchar}}{}{}}}}%
         \def\@tempb{\@tfor\@tempb:=}%
         \expandafter\@tempb\@templist\do{%
            \@tempa
            \expandafter\def\expandafter\@tempb\expandafter{%
               \expandafter\@uline@item\expandafter{\@tempb}}%
            \@uline@append@replacement@text\@uline@text\@tempb}%
      \fi
   \fi}
\newif\if@suppress@hyphenation
\let\@uline@hyphenate\relax
\def\@uline@hyphenate@{%
   \if@suppress@hyphenation\else
      \ifx\@uline@prev@saved@protect\@empty
         \ifnum\@uline@curr@hyphenchar<\z@\else
            \ifnum\@uline@curr@hyphenchar<\@cclvi
               \expandafter\@uline@exec@hyphenate\expandafter{\@tempa}%
            \fi
         \fi
      \fi
   \fi}
\newbox\@uline@g@tempbox
\def\@uline@exec@hyphenate#1{%
   \begingroup
   \@tempswatrue
   \begingroup
   \def\@tempa{\@tfor\@tempb:=}%
   \expandafter\@tempa\@uline@accents\do{\expandafter\let\@tempb\@firstofone}%
   \expandafter\@tempa\@uline@special@letters\do{\expandafter\def\@tempb{a}}%
   \protected@edef\@tempb{#1}\@onelevel@sanitize\@tempb
   \edef\@tempb{\def\noexpand\@tempb{\@tempb}}%
   \expandafter\endgroup\@tempb
   \def\@tempa{\@tfor\@tempa:=}%
   \expandafter\@tempa\@tempb\do{%
      \edef\@tempa{\count@=`\@tempa}\@tempa\relax
      \@tfor\@tempa:=\ \\\-\{\}\do{%
         \expandafter\ifnum\expandafter`\@tempa=\count@ \@tempswafalse \fi}%
      \if@tempswa\else \@break@tfor \fi}%
   \let\@tempa\@empty
   \if@tempswa
      \setbox\z@\vbox{\hsize\z@ \sloppy \hfuzz\maxdimen
         \leftskip\z@skip \rightskip\z@skip \parfillskip\z@skip
         \noindent\hskip\z@skip #1}%
      \global\setbox\@uline@g@tempbox\hbox{}%
      \setbox\z@\vbox{\unvbox\z@\@invert@lines}%
      \setbox\z@\hbox{#1}%
      \ifdim\wd\z@<\wd\@uline@g@tempbox
         \setbox\z@\hbox{%
            \unhbox\@uline@g@tempbox
            \let\@templist\@empty
            \def\@tempz{#1}%
            \setbox\tw@\box\voidb@x
            \@uline@find@breakpos
            \expandafter}\expandafter\toks@\expandafter{\@templist}%
         \edef\@tempa{\def\noexpand\@templist{\the\toks@}}%
      \fi
   \fi
   \expandafter\endgroup\@tempa}
\def\@invert@lines{%
  \unskip \unpenalty
  \setbox\z@\lastbox
  \ifvoid\z@\else
     \global\setbox\@uline@g@tempbox\hbox{%
        \unhbox\@uline@g@tempbox\hbox{\unhbox\z@\unskip}}%
     \expandafter\@invert@lines
  \fi}
\def\@uline@find@breakpos{%
   \ifx\@tempz\@empty\else
      \setbox\z@\lastbox
      \ifvoid\z@
         \expandafter\@uline@append@tokens\expandafter\@templist
            \expandafter{\expandafter{\@tempz}}%
      \else
         \@uline@find@breakpos@
         \setbox\tw@\box\z@
         \expandafter\expandafter\expandafter\@uline@find@breakpos
      \fi
   \fi}
\def\@uline@find@breakpos@{%
   \ifvoid\tw@\else
      \let\@tempa\@empty
      \loop
         \let\@tempx\@empty
         \expandafter\@uline@find@breakpos@@\@tempz\@nil
         \ifx\@tempz\@empty
            \dimen@\maxdimen
         \else
            \setbox4\hbox{\@tempa\char\hyphenchar\font}%
            \dimen@\wd4\relax
         \fi
      \ifdim\dimen@<\wd\tw@ \repeat
      \expandafter\@uline@append@tokens\expandafter\@templist
         \expandafter{\expandafter{\@tempa}}%
   \fi}
\def\@uline@find@breakpos@@#1{%
   \def\@tempy{#1}%
   \ifx\@tempy\@nnil
      \let\@uline@find@breakpos@next\@gobble
   \else
      \def\@tempyy{\@tfor\@tempyy:=}%
      \expandafter\@tempyy\@uline@accents\do{%
         \ifx\@tempy\@tempyy
            \let\@tempyy\relax
            \@break@tfor
         \fi}%
      \ifx\@tempyy\relax
         \def\@uline@find@breakpos@next{\@uline@find@breakpos@accent}%
      \else
         \def\@uline@find@breakpos@next{\@uline@find@breakpos@@@}%
      \fi
   \fi
   \@uline@find@breakpos@next{#1}}
\def\@uline@find@breakpos@accent#1{%
   \expandafter\def\expandafter\@tempx\expandafter{\@tempx#1}%
   \@uline@find@breakpos@@}
\def\@uline@find@breakpos@@@#1#2\@nil{%
   \ifx\@tempx\@empty
      \def\@tempx{#1}%
   \else
      \expandafter\def\expandafter\@tempx\expandafter{\@tempx{#1}}%
   \fi
   \@uline@append@replacement@text\@tempa\@tempx
   \def\@tempz{#2}}
\newif\if@uline@noAKglue
\def\@uline@add@glue{%
   \ifx\@uline@prevjchar\relax\else
      \@uline@noAKgluefalse
      \ifx\@uline@previtem\relax%%% after blank space etc.
         \let\@uline@previtem\@empty
         \@uline@noAKgluetrue
      \fi
      \ifx\@uline@currchar\relax%%% before blank space etc.
         \let\@uline@currchar\@empty
         \@uline@noAKgluetrue
      \fi
      \let\@uline@temp\@empty
      \ifx\@uline@previtem\@empty
         \ifx\@uline@currchar\@empty\else%%% after math-formula etc.
            \let\@tempa\@uline@currchar \@onelevel@sanitize\@tempa
            \edef\@tempa{\@tempcnta`\@tempa}\@tempa\relax
            \ifnum\@tempcnta>\@cclv
               \@uline@check@Lglue\@uline@currchar
               \@tempskipa\@uline@AKglue\relax
               \@tempswatrue
               \ifdim\dimen@<.05\p@
                  \ifnum\inhibitxspcode\@tempcnta<\tw@ \@tempswafalse \fi
                  \if@uline@noAKglue \@tempswafalse \fi
               \else
                  \if@uline@inhibitglue
                     \ifnum\inhibitxspcode\@tempcnta<\tw@ \@tempswafalse \fi
                     \if@uline@noAKglue \@tempswafalse \fi
                  \else
                     \@tempskipa\dimen@\relax
                     \if@uline@noAKglue\else
                        \advance\@tempskipa\@uline@AKglueadjust\relax
                     \fi
                  \fi
               \fi
               \if@tempswa
                  \@tempcntb\prebreakpenalty\@tempcnta
                  \@uline@interchar@penalty@\z@\@tempcntb
                  \@uline@add@glue@\@tempskipa
               \fi
            \fi
         \fi
      \else
         \let\@tempa\@uline@previtem \@onelevel@sanitize\@tempa
         \edef\@tempa{\@tempcnta`\@tempa}\@tempa\relax
         \ifx\@uline@currchar\@empty%%% before math-formula etc.
            \ifnum\@tempcnta>\@cclv
               \@uline@check@Rglue\@uline@previtem
               \@tempskipa\@uline@AKglue\relax
               \@tempswatrue
               \ifdim\dimen@<.05\p@
                  \ifodd\inhibitxspcode\@tempcnta\else \@tempswafalse \fi
                  \if@uline@noAKglue \@tempswafalse \fi
               \else
                  \if@uline@inhibitglue
                     \ifodd\inhibitxspcode\@tempcnta\else \@tempswafalse \fi
                     \if@uline@noAKglue \@tempswafalse \fi
                  \else
                     \@tempskipa\dimen@\relax
                     \if@uline@noAKglue\else
                        \advance\@tempskipa\@uline@AKglueadjust\relax
                     \fi
                  \fi
               \fi
               \if@tempswa
                  \@tempcntb\postbreakpenalty\@tempcnta
                  \@uline@interchar@penalty@\@tempcntb\z@
                  \@uline@add@glue@\@tempskipa
               \fi
            \fi
         \else
            \let\@tempa\@uline@currchar \@onelevel@sanitize\@tempa
            \edef\@tempa{\@tempcntb`\@tempa}\@tempa\relax
            \count@\postbreakpenalty\@tempcnta
            \edef\@uline@interchar@penalty@args{{\the\count@}}%
            \count@\prebreakpenalty\@tempcntb
            \edef\@uline@interchar@penalty@args{%
               \@uline@interchar@penalty@args{\the\count@}}%
            \ifnum\@tempcnta>\@cclv
               \ifnum\@tempcntb>\@cclv%%% Kanji-Kanji
                  \if@uline@inhibitglue\else
                     \setbox\z@\hbox{\@uline@previtem}%
                     \setbox\tw@\hbox{\@uline@currchar}%
                     \setbox4\hbox{\@uline@previtem\@uline@currchar}%
                     \dimen@\wd4\relax
                     \advance\dimen@-\wd\z@ \advance\dimen@-\wd\tw@
                  \fi
                  \@tempswatrue
                  \@expandtwoargs\in@\@uline@previtem\@uline@unbreakable
                  \ifin@\else \@tempswafalse \fi
                  \@expandtwoargs\in@\@uline@currchar\@uline@unbreakable
                  \ifin@\else \@tempswafalse \fi
                  \if@tempswa\else
                     \expandafter\@uline@interchar@penalty@
                        \@uline@interchar@penalty@args
                     \if@uline@inhibitglue
                        \@tempskipa\@uline@KKglue\relax
                     \else
                        \@tempskipa\@uline@KKglue\relax
                        \advance\@tempskipa-\dimen@\relax
                        \ifdim\@tempskipa<\z@ \@tempskipa-\@tempskipa \fi
                        \ifdim\@tempskipa<.05\p@
                           \@tempskipa\@uline@KKglue\relax
                        \else
                           \@tempskipa\@uline@KKglueadjust\relax
                           \advance\@tempskipa\dimen@\relax
                        \fi
                     \fi
                     \@uline@add@glue@\@tempskipa
                  \fi
               \else%%% Kanji-Alnum
                  \@uline@check@Rglue\@uline@previtem
                  \@tempskipa\@uline@AKglue\relax
                  \@tempswafalse
                  \if@uline@inhibitglue
                     \ifodd\inhibitxspcode\@tempcnta
                        \ifodd\xspcode\@tempcntb \@tempswatrue \fi
                     \fi
                  \else
                     \ifdim\dimen@<.05\p@
                        \ifodd\inhibitxspcode\@tempcnta
                           \ifodd\xspcode\@tempcntb \@tempswatrue \fi
                        \fi
                     \else
                        \@tempswatrue
                        \@tempskipa\@uline@AKglueadjust\relax
                        \advance\@tempskipa\dimen@\relax
                     \fi
                  \fi
                  \if@tempswa
                     \expandafter\@uline@interchar@penalty@
                        \@uline@interchar@penalty@args
                     \@uline@add@glue@\@tempskipa
                  \fi
               \fi
            \else
               \ifnum\@tempcntb>\@cclv%%% Alnum-Kanji
                  \@uline@check@Lglue\@uline@currchar
                  \@tempskipa\@uline@AKglue\relax
                  \@tempswafalse
                  \if@uline@inhibitglue
                     \ifnum\inhibitxspcode\@tempcntb>\@ne
                        \ifnum\xspcode\@tempcnta>\@ne \@tempswatrue \fi
                     \fi
                  \else
                     \ifdim\dimen@<.05\p@
                        \ifnum\inhibitxspcode\@tempcntb>\@ne
                           \ifnum\xspcode\@tempcnta>\@ne \@tempswatrue \fi
                        \fi
                     \else
                        \@tempswatrue
                        \@tempskipa\@uline@AKglueadjust\relax
                        \advance\@tempskipa\dimen@\relax
                     \fi
                  \fi
                  \if@tempswa
                     \expandafter\@uline@interchar@penalty@
                        \@uline@interchar@penalty@args
                     \@uline@add@glue@\@tempskipa
                  \else
                     \ifx\@uline@hyphen@stat\@uline@single@hyphen
                        \@uline@interchar@penalty@\z@\z@
                     \fi
                  \fi
               \fi
            \fi
         \fi
      \fi
      \@uline@add@glue@finish
   \fi
   \global\@migrate@italiccorrfalse}
\def\@uline@check@Lglue#1{%
   \setbox\z@\hbox{#1}%
   \setbox\tw@\hbox{\null#1}%
   \dimen@\wd\tw@ \advance\dimen@-\wd\z@}
\def\@uline@check@Rglue#1{%
   \setbox\z@\hbox{#1}%
   \setbox\tw@\hbox{#1\null}%
   \dimen@\wd\tw@ \advance\dimen@-\wd\z@}
\def\@uline@single@hyphen{-}
\def\@uline@add@glue@finish{%
   \if@uline@group@head
      \@uline@append@replacement@text\@uline@migrating@item\@uline@temp
      \ifx\@uline@temp\@empty\else
         \if@migrate@italiccorr
            \def\@uline@migrating@operation{\@uline@set@italiccorr@migration}%
         \fi
      \fi
   \else
      \ifx\@uline@temp\@empty\else
         \if@migrate@italiccorr \@uline@set@italiccorr@migration \fi
      \fi
      \@uline@append@replacement@text\@uline@text\@uline@temp
   \fi}
\def\@uline@add@glue@#1{%
   \if@migrate@italiccorr
      \@uline@set@italiccorr@migration
      \global\@migrate@italiccorrfalse
   \fi
   \skip@=#1\relax
   \edef\@tempz{\noexpand\@uline@glue{\the\skip@}}%
   \@uline@append@replacement@text\@uline@temp\@tempz}
\def\@uline@add@glue@@#1{%
   \let\@uline@temp\@empty
   \@uline@add@glue@{#1}%
   \@uline@add@glue@finish
   \global\@migrate@italiccorrfalse}
\def\@uline@interchar@penalty#1{\@uline@interchar@penalty@\z@{#1}}
\def\@uline@interchar@penalty@#1#2{%
   \ifnum#1=\z@\else
      \edef\@tempz{\penalty\number#1}%
      \edef\@tempz{\@tempz\space}%
      \@uline@append@replacement@text\@uline@temp\@tempz
   \fi
   \ifnum#2=\z@\else
      \edef\@tempz{\noexpand\@uline@add@interchar@penalty{\number#2}}%
      \@uline@append@replacement@text\@uline@temp\@tempz
   \fi}
\def\@uline@add@interchar@penalty#1{%
   \ifhmode
      \count@\lastpenalty
      \unpenalty
      \advance\count@#1\relax
      \penalty\count@
   \fi}
\newcount\@uline@charcode
\def\@uline@checktoken#1{%
   \def\@uline@next{\@@uline}%
   \def\@tempa{#1}%
   \let\@tempb\@tempa
   \@onelevel@sanitize\@tempb
   \edef\@tempc{\expandafter\@car\@tempb\@empty\@nil}%
   \edef\@tempb{\expandafter\@cdr\@tempb\@empty\@nil}%
   \ifx\@tempb\@empty
      \edef\@tempc{\@uline@charcode=`\@tempc\relax}\@tempc
      \ifnum\@uline@charcode<\@cclvi
         \@tempswafalse
         \ifnum      `\$=\@uline@charcode
            \def\@tempc{$}%
            \ifx\@tempa\@tempc \@tempswatrue \fi
         \fi
         \if@tempswa
            \def\@uline@next{\@uline@process@math\@empty}%
         \else
            \ifx\@uline@prevword\@empty
               \@uline@add@item
               \expandafter\def\expandafter\@uline@prevword
                  \expandafter{\@uline@saved@protect#1}%
               \def\@uline@currchar{#1}%
               \@uline@add@glue
            \else
               \@tempswafalse
               \ifx\@uline@hyphen@stat\@uline@single@hyphen
                  \ifnum`\-=\@uline@charcode\else \@tempswatrue \fi
               \fi
               \if@tempswa
                  \@suppress@hyphenationtrue
                  \@uline@add@item
                  \@uline@add@hyphenpenalty
                  \let\@uline@prevword\@empty
               \fi
               \expandafter\@uline@append@tokens\expandafter\@uline@prevword
                  \expandafter{\@uline@saved@protect#1}%
            \fi
            \let\@uline@prevjchar\@empty
            \def\@uline@previtem{#1}%
            \ifnum`\-=\@uline@charcode
               \def\@uline@hyphen@stat{-}%
               %%% %%% pp.123--456 $B$N(J en-dash $B$ND>8e$H$$$C$?2U=j$G$N9TJ,3d$r(J
               %%% %%% $BM^@)$9$k$J$i!$<!$N9T$N$h$&$K@_Dj!%(J
               %%% \edef\@uline@hyphen@stat{\@uline@hyphen@stat -}%
            \else
               \let\@uline@hyphen@stat\@empty
            \fi
            \let\@uline@prev@saved@protect\@empty
            \let\@uline@saved@protect\@empty
            \count@=\sfcode`#1\relax
            \ifnum\count@=\z@\else
               \@tempcnta\@uline@spacefactor\relax
               \edef\@uline@spacefactor{%
                  \ifnum\@tempcnta<\@m
                     \ifnum\count@>\@m 1000\else \the\count@ \fi
                  \else
                     \the\count@
                  \fi}%
            \fi
            \@uline@group@headfalse
            \global\@migrate@italiccorrfalse
         \fi
      \else
         \def\@tempa{%
            \@uline@add@item
            \def\@uline@currchar{#1}%
            \@uline@add@glue}%
         \ifx\@uline@prevword\@empty
            \ifx\@uline@prevjchar\relax
               \let\@tempa\@empty
               \if@uline@check@first@glue
                  \if@uline@inhibitglue\else
                     \def\@tempa{%
                        \setbox\z@\hbox{#1}%
                        \setbox\tw@\hbox{\null#1}%
                        \dimen@\wd\tw@ \advance\dimen@-\wd\z@
                        \ifdim\dimen@>.05\p@
                           \edef\@tempa{%
                              \noexpand\@uline@append@tokens
                              \noexpand\@uline@text
                              {\noexpand\hspace{\the\dimen@}}}%
                           \@tempa
                        \fi}%
                  \fi
               \fi
            \fi
         \fi
         \@tempa
         \def\@uline@prevjchar{#1}%
         \let\@uline@prevword\@empty
         \let\@uline@previtem\@uline@prevjchar
         \let\@uline@hyphen@stat\@empty
         \let\@uline@prev@saved@protect\@uline@saved@protect
         \let\@uline@saved@protect\@empty
         \def\@uline@spacefactor{1000}%
         \@uline@group@headfalse
         \@suppress@hyphenationfalse
      \fi
      \@uline@check@first@gluefalse
      \@uline@inhibitgluefalse
      \global\@migrate@italiccorrfalse
   \else
      \@uline@examine@cs
   \fi
   \@uline@next}
\def\@uline@add@hyphenpenalty{%
   \ifx\@uline@hyphen@stat\@uline@single@hyphen
      \edef\@uline@add@hyphenpenalty@{%
         \noexpand\@uline@append@tokens\noexpand\@uline@text
            {\penalty\the\hyphenpenalty\space}}%
      \@uline@add@hyphenpenalty@
   \fi}%
\let\@uline@skip@list\@empty
\def\@uline@examine@cs{%
   \def\@tempb{\a}%
   \ifx\@tempa\@tempb
      \def\@uline@next{\@uline@tabacckludge}%
   \else
      \def\@tempb{\@tfor\@tempb:=}%
      \expandafter\@tempb\@uline@accents\do{%
         \ifx\@tempa\@tempb
            \let\@tempb\relax
            \@break@tfor
         \fi}%
      \ifx\@tempb\relax
         \expandafter\def\expandafter\@uline@next\expandafter{%
            \expandafter\@uline@accent\@tempa}%
      \else
         \def\@tempb{\def\@tempb####1[}%
         \expandafter\@tempb\@tempa##2]##3\@nil{\def\@tempb{##2}}%
         \expandafter\def\expandafter\@tempc\expandafter{%
            \expandafter[\@tempa{}]}%
         \expandafter\expandafter\expandafter\@tempb
            \expandafter\@uline@extra@commands\@tempc\@nil
         \ifx\@tempb\@empty
            \def\@tempb{\expandafter\in@\@tempa}%
            \expandafter\@tempb\expandafter{\@uline@skip@list}%
            \ifin@
               \expandafter\@uline@add@special@item\expandafter{\@tempa}%
            \else
               \@uline@examine@cs@default
            \fi
         \else
            \edef\@uline@next{%
               \expandafter\noexpand
                  \csname
                      @uline@%
                      \expandafter\@uline@extract@command\@tempb
                  \endcsname
               \expandafter\noexpand\@tempa}%
         \fi
      \fi
   \fi}
\def\@uline@extract@command#1{%
   \expandafter\expandafter\expandafter\@uline@extract@command@
   \expandafter\@gobble\string#1[\relax\@nnil}
\def\@uline@extract@command@#1[#2{%
   \ifx#2\relax #1\expandafter\remove@to@nnil
   \else        #1\expandafter\@uline@extract@command@@
   \fi
   [#2}
\def\@uline@extract@command@@#1[\relax\@nnil#2\endcsname{\endcsname#1}
\def\@uline@examine@cs@default{%
   \expandafter\@uline@check@text@fontcmd\@tempa
   \ifcase\@uline@check@text@fontcmd@type\relax
      \expandafter\def\expandafter\@uline@next\expandafter{%
         \expandafter\@uline@fontchange\@tempa}%
      \expandafter\def\expandafter\@tempa\expandafter{%
         \expandafter[\@tempa\fontchange]}%
      \global\@uline@append@replacement@text\@uline@extra@commands\@tempa
   \or
      \expandafter\def\expandafter\@uline@next\expandafter{%
         \expandafter\@uline@textcommand\@tempa}%
      \expandafter\def\expandafter\@tempa\expandafter{%
         \expandafter[\@tempa\textcommand]}%
      \global\@uline@append@replacement@text\@uline@extra@commands\@tempa
   \else
      \global\@csc@t\@uline@skip@list\@uline@skip@list\@tempa
      \expandafter\@uline@add@special@item\expandafter{\@tempa}%
   \fi}
\def\@uline@check@text@fontcmd#1{%
   \begingroup
   \count@\m@ne
   \def\@tempa{#1}%
   \ifx\@tempa\@empty\else
      \expandafter\def\expandafter\@tempa\expandafter{\@firstofone#1}%
   \fi
   \def\@tempx##1##2\@nil{\noexpand##1}%
   \edef\@tempb{\@tempx#1\@empty\@nil}%
   \ifx\@tempa\@tempb
      \if\expandafter\noexpand\@tempb\relax
         \edef\@tempc{\expandafter\expandafter\expandafter\@gobble
            \expandafter\string\@tempb}%
         \edef\@tempc{\@tempc\space}%
         \edef\@tempc{\expandafter\zap@space\@tempc\@empty}%
         \expandafter\ifx\csname \@tempc\space\endcsname\relax\else
            \edef\@tempx{\noexpand\protect\expandafter\noexpand
               \csname \@tempc\space\endcsname}%
            \expandafter\ifx\csname \@tempc\endcsname\@tempx
               \edef\@tempc{\@tempc\space}%
            \fi
         \fi
         \ifx\@tempc\@empty\else
            \edef\@tempx{\expandafter\meaning\csname\@tempc\endcsname}%
            \def\@tempy##1->##2\@nil{\def\@tempy{##1}\def\@tempz{##2}}%
            \expandafter\@tempy\@tempx->\@nil
            \ifx\@tempz\@empty\else
               \edef\@tempa{\noexpand\in@{\string##2}{\@tempy}}%
               \@tempa
               \ifin@\else
                  \edef\@tempa{\noexpand\in@{\string##1}{\@tempy}}%
                  \@tempa
                  \ifin@
                     \edef\@tempa{\noexpand\in@{\string\check@icl}{\@tempx}}%
                     \@tempa
                     \ifin@
                        \edef\@tempa{\noexpand\in@{\string\nfss@text}{\@tempx}}%
                        \@tempa
                        \ifin@ \count@\@ne \fi
                     \fi
                  \else
                     \@uline@check@text@fontcmd@
                  \fi
               \fi
            \fi
         \fi
      \fi
   \fi
   \edef\@tempa{\def\noexpand\@uline@check@text@fontcmd@type{\the\count@}}%
   \expandafter\endgroup\@tempa}
\edef\@uline@keyword@macro{\expandafter\@gobble\string\macro:}
\def\@uline@check@text@fontcmd@{%
   \def\@tempz{\def\@tempz####1}%
   \expandafter\@tempz\@uline@keyword@macro##2\@nil{\def\@tempz{##2}}%
   \edef\@tempa{\noexpand\@tempz\@tempy\@uline@keyword@macro}%
   \@tempa\@nil
   \ifx\@tempz\@uline@keyword@macro
      \@tempswafalse
      \expandafter\expandafter\expandafter\def
      \expandafter\expandafter\expandafter\@tempx
      \expandafter\expandafter\expandafter{\csname\@tempc\endcsname}%
      \def\@tempa##1\not@math@alphabet##2\selectfont##3\@nil{%
         \expandafter\def\expandafter\@tempa\expandafter{##1}%
         \def\@tempb{##3}}%
      \expandafter\@tempa\expandafter\@empty\@tempx
         \not@math@alphabet\selectfont\@nil
      \ifx\@tempa\@empty
         \def\@tempa{\not@math@alphabet\selectfont}%
         \ifx\@tempb\@tempa \@tempswatrue \fi
      \fi
      \if@tempswa\else
         \def\@tempa##1\usefont##2##3##4##5##6\@nil{%
            \def\@tempa{##1}\def\@tempb{##6}}%
         \expandafter\@tempa\@tempx\usefont....\@nil
         \ifx\@tempa\@empty
            \def\@tempa{\usefont....}%
            \ifx\@tempb\@tempa \@tempswatrue \fi
         \fi
         \if@tempswa\else
            \let\@tempa\relax
            \expandafter\@uline@check@text@fontcmd@@\@tempx\@nnil
            \ifx\@tempa\@empty \@tempswatrue \fi
         \fi
      \fi
      \if@tempswa \count@\z@ \fi
   \fi}
\def\@uline@check@text@fontcmd@@{%
   \futurelet\let@token\@uline@check@text@fontcmd@@@}
\def\@uline@check@text@fontcmd@@@{%
   \def\@tempb{\remove@to@nnil}%
   \ifx     \let@token\@nnil
   \else\ifx\let@token\bgroup
   \else\ifx\let@token\@sptoken
   \else    \def\@tempb{\@uline@check@text@fontcmd@@@@}%
   \fi\fi\fi
   \@tempb}
\def\@uline@check@text@fontcmd@@@@#1{%
   \def\@tempb{\remove@to@nnil}%
   \ifx#1\selectfont
      \def\@tempb##1\@nnil{\def\@tempa{##1}}%
   \else
      \def\@tempbx##1{\@uline@check@text@fontcmd@@}%
      \def\@tempc{#1}%
      \def\@tempd{\@tfor\@tempd:=}%
      \expandafter\@tempd\@uline@check@text@fontcmd@checklist\do{%
         \ifx\@tempc\@tempd
            \let\@tempb\@tempbx
            \@break@tfor
         \fi}%
   \fi
   \@tempb}
\def\@uline@check@text@fontcmd@checklist{%
   \fontencoding \fontfamily \fontseries \fontshape}
\expandafter\ifx\csname pfmtname\endcsname\relax\else
   \expandafter\def\expandafter\@uline@check@text@fontcmd@checklist
   \expandafter{%
      \@uline@check@text@fontcmd@checklist
      \romanencoding \romanfamily \romanseries \romanshape
      \kanjiencoding \kanjifamily \kanjiseries \kanjishape}
\fi
\expandafter\ifx\csname jfmtname\endcsname\relax\else
   \expandafter\def\expandafter\@uline@check@text@fontcmd@checklist
   \expandafter{%
      \@uline@check@text@fontcmd@checklist
      \jfontencoding \jfontfamily \jfontseries \jfontshape}
\fi
\def\@uline@macrodef{\afterassignment\@@uline}
\def\@uline@execit#1#2{#2\@@uline}%%% #1: \@uline@execit
\def\@uline@add@special@item{\@uline@add@special@item@\@empty}
\def\@uline@add@special@item@without@AKglue{\@uline@add@special@item@\relax}
\def\@uline@add@special@item@#1#2{%
   \ifx\@uline@prevword\@empty
      \@uline@add@item
      \expandafter\def\expandafter\@uline@prevword\expandafter{%
         \@uline@saved@protect#2}%
      \let\@uline@currchar#1%
      \@uline@add@glue
   \else
      \ifx\@uline@hyphen@stat\@uline@single@hyphen
         \@uline@add@item
         \@uline@add@hyphenpenalty
         \let\@uline@prevword\@empty
      \fi
      \expandafter\@uline@append@tokens\expandafter\@uline@prevword
         \expandafter{\@uline@saved@protect#2}%
      \global\@migrate@italiccorrfalse
   \fi
   \let\@uline@prevjchar\@empty
   \let\@uline@previtem#1%
   \let\@uline@hyphen@stat\@empty
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@saved@protect\@empty
   \def\@uline@spacefactor{1000}%
   \@uline@group@headfalse
   \@uline@check@first@gluefalse
   \@uline@inhibitgluefalse}
\def\@uline@add@special@item@asjchar{%
   \@uline@add@special@item@asjchar@\@uline@sample@jchar}
\def\@uline@add@jcharpostfix{\@uline@add@special@item@asjchar@\relax}
\def\@uline@add@special@item@asjchar@#1#2{%
   \@uline@add@item
   \let\@uline@currchar#1%
   \@uline@add@glue
   \expandafter\def\expandafter\@uline@prevjchar\expandafter{%
      \@uline@saved@protect#2}%
   \let\@uline@prevword\@empty
   \let\@uline@previtem\@uline@sample@jchar
   \let\@uline@hyphen@stat\@empty
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@saved@protect\@empty
   \def\@uline@spacefactor{1000}%
   \@uline@group@headfalse
   \@uline@check@first@gluefalse
   \@uline@inhibitgluefalse
   \@suppress@hyphenationfalse}
\def\@uline@add@nonletter{%
   \@uline@add@nonletter@
      {\let\@uline@currchar\relax
       \@uline@add@glue}%
      {\@uline@check@Rglue{\@uline@previtem}%
       \ifdim\dimen@>\z@ \let\@uline@previtem\relax \fi}}
\def\@uline@add@nonletter@with@reset{%
   \@uline@add@nonletter@
      {\let\@uline@currchar\relax
       \@uline@add@glue}%
      {\let\@uline@previtem\relax}}
\def\@uline@add@newline{%
   \@uline@add@nonletter@
      \relax
      {\@suppress@hyphenationfalse
       \let\@uline@previtem\relax}}
\def\@uline@add@nonletter@#1#2#3{%
   \@uline@add@item
   \@uline@add@hyphenpenalty
   #1%
   \expandafter\@uline@append@tokens\expandafter\@uline@text\expandafter{%
      \@uline@saved@protect#3}%
   \ifx\@uline@prevjchar\relax\else \let\@uline@prevjchar\@empty \fi
   \let\@uline@prevword\@empty
   \let\@uline@hyphen@stat\@empty
   #2%
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@saved@protect\@empty
   \def\@uline@spacefactor{1000}%
   \@uline@group@headfalse
   \@uline@check@first@gluefalse
   \@uline@inhibitgluefalse}
\def\@uline@process@math#1${%%% #1: math formula (+ \@empty)
   \expandafter\@uline@parse@math\expandafter{#1}%
   \@@uline}
\def\@uline@process@math@\@empty#1${%%% #1: math formula
   \@uline@add@special@item{$#1$}%
   \@suppress@hyphenationfalse
   \@@uline}
\def\@uline@tabacckludge#1{\@uline@accent{\a#1}}
\def\@uline@accent#1#2{%%% #1: accent-macro, #2: (maybe) a letter
   \def\@tempa{#2}%
   \def\@tempb{\@nnil}%
   \ifx\@tempa\@tempb
      \@uline@add@special@item{#1{}}%
      \def\@tempa{\@@uline\@nnil}%
   \else
      \let\@tempb\@tempa \edef\@tempb{\@tempb\space}%
      \edef\@tempb{\expandafter\zap@space\@tempb\@empty}%
      \ifx\@tempb\@empty
         \@uline@add@special@item{#1{#2}}%
         \def\@tempa{\@@uline}%
      \else
         \def\@tempb{\@tfor\@tempb:=}%
         \expandafter\@tempb\@uline@accents\do{%
            \ifx\@tempa\@tempb
               \let\@tempb\relax
               \@break@tfor
            \fi}%
         \ifx\@tempb\relax
            \def\@tempa{\@uline@accent{#1#2}}%
         \else
            \let\@tempb\@tempa
            \@onelevel@sanitize\@tempb
            \edef\@tempc{\expandafter\@car\@tempb\@empty\@nil}%
            \edef\@tempb{\expandafter\@cdr\@tempb\@empty\@nil}%
            \ifx\@tempb\@empty
               \edef\@tempc{\count@=`\@tempc\relax}\@tempc
               \ifnum\count@<\@cclvi
                  \@uline@add@special@item{#1{#2}}%
               \else
                  \@uline@add@item
                  \@uline@add@hyphenpenalty
                  \def\@uline@currchar{#2}%
                  \@uline@add@glue
                  \def\@uline@prevjchar{#1{#2}}%
                  \let\@uline@prevword\@empty
                  \def\@uline@previtem{#2}%
                  \let\@uline@hyphen@stat\@empty
                  \let\@uline@prev@saved@protect\@uline@saved@protect
                  \let\@uline@saved@protect\@empty
                  \def\@uline@spacefactor{1000}%
                  \@uline@group@headfalse
                  \@uline@check@first@gluefalse
                  \@uline@inhibitgluefalse
               \fi
            \else
               \@uline@add@special@item{#1{#2}}%
            \fi
            \def\@tempa{\@@uline}%
         \fi
      \fi
   \fi
   \@tempa}
\def\@uline@bou#1{%  #1: \bou etc.
   \expandafter\def\expandafter\@uline@temp\expandafter{%
      \expandafter\@uline@textcommand@noitaliccorr\expandafter{%
         \expandafter\@uline@bou@init\expandafter{%
            \@uline@saved@protect#1}}}%
   \let\@uline@saved@protect\@empty
   \@uline@temp}
\def\@uline@bou@init{%
   \def\@tempa{\protect\phantom}%
   \ifx\@uline@item@command\@tempa \expandafter\@gobble
   \else                           \expandafter\@uline@bou@init@
   \fi}
\def\@uline@bou@init@#1#2{{\def\@uline@item@command{#1}#2}}
\let\@uline@textcommand@extratokens\@empty
\def\@uline@pkgtextcommand#1#2{\@uline@textcommand{#2}}% #1: \textcommand
\def\@uline@textcommand#1{%
   \def\@uline@textcommand@extratokens{%
      \@uline@execit{%
         \@uline@measure@glueparams{#1}%
         \let\@uline@first@item@after@group= %%% Do NOT remove this space.
            \@uline@first@item@after@curr@group
         \let\@uline@outer@slant\@uline@curr@outer@slant}%
      \nocorr}%
   \@uline@textcommand@{#1}}
\def\@uline@textcommand@#1#2{% #1: \textrm etc.
   \@uline@text@command{#2}%%% set \check@icl and \check@icr
   \def\@uline@extra@operation{\@uline@append@tokens\@uline@text{\nocorr}}%
   \def\@tempa{\@uline@textcommand@@{#1}{#2}}%
   \futurelet\let@token\@tempa}
\def\@uline@textcommand@noitaliccorr#1#2{%
   \let\check@icl\@empty
   \let\check@icr\@empty
   \let\@uline@extra@operation\@empty
   \def\@tempa{\@uline@textcommand@@{#1}{#2}}%
   \futurelet\let@token\@tempa}
\def\@uline@textcommand@@#1#2{%
   \ifx\@uline@hyphen@stat\@uline@single@hyphen \@suppress@hyphenationtrue \fi
   \@uline@add@item
   \ifx\check@icl\@empty\else \@uline@set@italiccorr@left{#1}{#2}\fi
   \@uline@set@italiccorr@right
   \@uline@add@hyphenpenalty
   \let\@uline@hyphen@stat\@empty
   \toks@\expandafter{\@uline@textcommand@extratokens#2}%
   \let\@uline@textcommand@extratokens\@empty
   \expandafter\def\expandafter\@tempa\expandafter{\@uline@saved@protect#1}%
   \@temptokena\expandafter{\@tempa}%
   \toks\tw@\expandafter{\@uline@extra@operation}%
   \edef\@tempa{%
      \noexpand\@uline@bgroup@{\the\toks@}{\the\toks\tw@}%
      \noexpand\@uline@after@group{\the\@temptokena}}%
   \@tempa}
\def\@uline@set@italiccorr@left#1#2{%
   \setbox\z@\hbox{\@uline@extra@fontcommands#1{%
      \xdef\@uline@gtempa{\the\fontdimen1\font}}}%
   \expandafter\def\expandafter\@tempa\expandafter{\@car#2\@empty\@nil}%
   \ifdim\@uline@gtempa>\z@\else
      \@tempswatrue
      \def\@tempb{\@tfor\@tempb:=}%
      \expandafter\@tempb\nocorrlist\do{\ifx\@tempa\@tempb \@tempswafalse \fi}%
      \if@tempswa \@uline@append@italiccorrL \fi
   \fi}
\def\@uline@set@italiccorr@right{%
   \ifx\let@token\@nnil
      \let\@uline@first@item@after@curr@group= %%% Do NOT remove this space.
         \@uline@first@item@after@group
      \let\@uline@curr@outer@slant\@uline@outer@slant
   \else
      \let\@uline@first@item@after@curr@group= %%% Do NOT remove this space.
         \let@token
      \let\@uline@curr@outer@slant\@uline@curr@fontdimeni
   \fi
   \ifx\check@icr\@empty\else
      \ifdim\@uline@curr@outer@slant>\z@\else
         \@tempswatrue
         \def\@tempa{\@tfor\@tempa:=}%
         \expandafter\@tempa\nocorrlist\do{%
            \expandafter\let\expandafter\@tempb\expandafter=\@tempa\relax
            \ifx\@tempb\@uline@first@item@after@curr@group \@tempswafalse \fi}%
         \if@tempswa
            \def\@tempa{\@uline@append@italiccorrR}%
            \@csc@t\@uline@extra@operation\@tempa\@uline@extra@operation
         \fi
      \fi
   \fi}
\def\@uline@append@italiccorrL{%
   \expandafter\@uline@get@last@item\@uline@text\@nnil
   \let\@uline@count@items@@item\@uline@append@italiccorr@@A
   \expandafter\@uline@append@italiccorr@\@uline@text\@nnil}
\def\@uline@append@italiccorrR{%
   \expandafter\@uline@get@last@item\@uline@text\@nnil
   \let\@uline@count@items@@item\@uline@append@italiccorr@@B
   \expandafter\@uline@append@italiccorr@\@uline@text\@nnil}
\def\@uline@set@italiccorr@migration{%
   \expandafter\@uline@get@last@item\@uline@text\@nnil
   \let\@uline@count@items@@item\@uline@append@italiccorr@@C
   \expandafter\@uline@append@italiccorr@\@uline@text\@nnil}
\def\@uline@remove@last@italiccorr{%
   \expandafter\@uline@get@last@item\@uline@text\@nnil
   \let\@uline@count@items@@item\@uline@append@italiccorr@@D
   \expandafter\@uline@append@italiccorr@\@uline@text\@nnil}
\newif\if@uline@after@item
\newif\if@uline@glue@follows@item
\def\@uline@get@last@item{%
   \@tempswafalse
   \global\@uline@after@itemfalse
   \global\@uline@glue@follows@itemfalse
   \count@\z@
   \@uline@count@items@}
\def\@uline@append@italiccorr@{%
   \@tempswatrue
   \let\@uline@text\@empty
   \@uline@count@items@}
\def\@uline@count@items@{\futurelet\@let@token\@uline@count@items@@}
\def\@uline@count@items@@{%
   \ifx      \@let@token\@nnil       \def\@tempa{\@gobble}%
   \else\ifx \@let@token\bgroup      \def\@tempa{\@uline@count@items@bgroup}%
   \else\ifx \@let@token\@sptoken    \def\@tempa{\@uline@count@items@space}%
   \else\ifx \@let@token\@uline@item \def\@tempa{\@uline@count@items@item}%
   \else                             \def\@tempa{\@uline@count@items@normal}%
   \fi\fi\fi\fi
   \@tempa}
\def\@uline@count@items@bgroup#1{%
   \begingroup
   \let\@uline@text\@empty
   \@uline@count@items@#1\@nnil
   \if@tempswa
      \toks@\expandafter{\@uline@text}%
      \edef\@tempa{%
         \noexpand\@uline@append@tokens\noexpand\@uline@text{{\the\toks@}}%
         \count@=\the\count@\relax}%
   \else
      \edef\@tempa{\count@=\the\count@\relax}%
   \fi
   \expandafter\endgroup\@tempa
   \@uline@count@items@}
\begingroup
\def\:{\def\@uline@count@items@space}
\expandafter\endgroup\: {%
   \if@tempswa \@uline@append@replacement@text\@uline@text\space \fi
   \@uline@count@items@}
\def\@uline@count@items@item#1#2{%%% #1: \@uline@item
   \if@tempswa
      \advance\count@\m@ne
      \@uline@count@items@@item{#2}%
   \else
      \advance\count@\@ne
      \global\@uline@after@itemtrue
      \global\@uline@glue@follows@itemfalse
   \fi
   \@uline@count@items@}
\def\@uline@append@italiccorr@@A#1{%
   \def\@tempa{\@uline@item{#1}}%
   \ifnum\count@=\z@
      \@uline@check@last@item\/{#1}%
      \ifx\@tempb\@empty
         \@uline@check@last@item\@uline@migrate@italiccorr{#1}%
         \ifx\@tempb\@empty
            \if@uline@glue@follows@item
               \def\@tempa{\@uline@item{#1\/\@uline@migrate@italiccorr}}%
            \else
               \def\@tempa{\@uline@item{#1\/}}%
               \global\@migrate@italiccorrtrue
            \fi
         \fi
      \else
         \@uline@check@last@item\@uline@migrate@italiccorr{#1}%
         \ifx\@tempb\@empty
            \if@uline@glue@follows@item
               \def\@tempa{\@uline@item{#1\@uline@migrate@italiccorr}}%
            \fi
         \fi
      \fi
   \fi
   \@uline@append@replacement@text\@uline@text\@tempa}
\def\@uline@append@italiccorr@@B#1{%
   \def\@tempa{\@uline@item{#1}}%
   \ifnum\count@=\z@
      \@uline@check@last@item\/{#1}%
      \ifx\@tempb\@empty
         \@uline@check@last@item\@uline@migrate@italiccorr{#1}%
         \ifx\@tempb\@empty
            \def\@tempa{\@uline@item{#1\/}}%
            \global\@migrate@italiccorrtrue
         \fi
      \fi
   \fi
   \@uline@append@replacement@text\@uline@text\@tempa}
\let\@uline@count@items@@item\@uline@append@italiccorr@@B
\def\@uline@append@italiccorr@@C#1{%
   \def\@tempa{\@uline@item{#1}}%
   \ifnum\count@=\z@
      \@uline@check@last@item\/{#1}%
      \ifx\@tempb\@empty\else
         \@uline@check@last@item\@uline@migrate@italiccorr{#1}%
         \ifx\@tempb\@empty
            \def\@tempa{\@uline@item{#1\@uline@migrate@italiccorr}}%
         \fi
      \fi
   \fi
   \@uline@append@replacement@text\@uline@text\@tempa}
\def\@uline@append@italiccorr@@D#1{%
   \def\@tempa{\@uline@item{#1}}%
   \ifnum\count@=\z@
      \def\@tempa{#1}%
      \@uline@check@last@item\@uline@migrate@italiccorr{#1}%
      \ifx\@tempb\@empty\else \let\@tempa\@tempc \fi
      \def\@tempc{\@uline@check@last@item\/}%
      \expandafter\@tempc\expandafter{\@tempa}%
      \ifx\@tempb\@empty\else \let\@tempa\@tempc \fi
      \toks@\expandafter{\@tempa}%
      \edef\@tempa{\noexpand\@uline@item{\the\toks@}}%
   \fi
   \@uline@append@replacement@text\@uline@text\@tempa}
\def\@uline@check@last@item#1#2{%
   \def\@uline@check@last@item@##1#1\@nil##2\@nnil{%
      \def\@tempc{##1}\def\@tempb{##2}}%
   \@uline@check@last@item@#2\@nil#1\@nil\@nnil}
\def\@uline@count@items@normal#1{%
   \if@tempswa
      \@uline@append@tokens\@uline@text{#1}%
   \else
      \if@uline@after@item
         \def\@tempa{#1}%
         \def\@tempb{\@uline@glue}%
         \ifx\@tempa\@tempb \global\@uline@glue@follows@itemtrue \fi
         \def\@tempb{\nocorr}%
         \ifx\@tempa\@tempb\else \global\@uline@after@itemfalse \fi
      \fi
   \fi
   \@uline@count@items@}
\def\@uline@checkopt#1{\@ifnextchar[{\@uline@checkopt@{#1}}{#1{}}}
\def\@uline@checkopt@#1[#2]{#1{[{#2}]}}
\def\@uline@textcommandwithoption#1{%%% #1: \uline etc.
   \@uline@checkopt{\@uline@textcommandwithoption@#1}}
\def\@uline@textcommandwithoption@#1#2{\@uline@textcommand@noitaliccorr{#1#2}}
\def\@uline@protect#1{%%% #1: \protect
   \def\@uline@saved@protect{\protect}%
   \@@uline}
\def\@uline@ignorespaces#1{\@ifnextchar[\@@uline\@@uline}%%% #1: \ignorespaces
\newcount\@uline@common@command@argcnt
\def\@uline@skip[#1][#2]{\@uline@normal[#1][#2s]}
\def\@uline@normal[#1][#2]#3{%
   \def\@tempb{\@uline@add@special@item}%
   \def\@uline@common@command@currarg{#3}%
   \@uline@common@command@argcnt#1\relax
   \let\@tempc\@firstofone
   \let\@tempd\@firstofone
   \@tfor\@tempa:=#2\do{%
      \if *\@tempa \def\@tempc{\noexpand\@uline@x@checkstar}\fi
      \if o\@tempa \def\@tempd{\noexpand\@uline@x@checkopt}\fi
      \if s\@tempa \def\@tempb{\@uline@add@nonletter}\fi
      \if j\@tempa \def\@tempb{\@uline@add@special@item@asjchar}\fi
      \if n\@tempa \def\@tempb{\@uline@add@special@item@without@AKglue}\fi
      \if p\@tempa \def\@tempb{\@uline@add@jcharpostfix}\fi}%
   \edef\@tempa{%
      \@tempc{\@tempd{%
         \noexpand\@uline@common@command@takearg
         {\expandafter\noexpand\@tempb}}}}%
   \@tempa}
\def\@uline@x@checkstar#1{%
   \@ifstar{\@uline@append@tokens\@uline@common@command@currarg{*}#1}{#1}}
\def\@uline@x@checkopt#1{%
   \def\@uline@x@checkopt@@{#1}%
   \@uline@checkopt\@uline@x@checkopt@}
\def\@uline@x@checkopt@#1{%
   \@uline@append@tokens\@uline@common@command@currarg{#1}%
   \@uline@x@checkopt@@}
\def\@uline@common@command@takearg{%
   \let\@uline@common@command@takearg@finish
       \@uline@common@command@takearg@finish@text
   \@uline@common@command@takearg@}
\def\@uline@common@command@takearg@#1{%
   \def\@uline@common@command@takearg@aftercmd{#1}%
   \@uline@common@command@takearg@loop}
\def\@uline@common@command@takearg@loop{%
   \ifnum\@uline@common@command@argcnt>\z@
      \advance\@uline@common@command@argcnt\m@ne
      \expandafter\@uline@common@command@takearg@loop@
   \else
      \expandafter\@uline@common@command@takearg@finish
   \fi}
\def\@uline@common@command@takearg@loop@#1{%
   \@uline@append@tokens\@uline@common@command@currarg{{#1}}%
   \@uline@common@command@takearg@loop}
\def\@uline@common@command@takearg@finish@text{%
   \@uline@common@command@takearg@finish@
   \@@uline}
\def\@uline@common@command@takearg@finish@{%
   \expandafter\@uline@common@command@takearg@aftercmd
   \expandafter{\@uline@common@command@currarg}}
\def\@uline@skipandeval#1{%%% #1: \frenchspacing/\nonfrenchspacing
   \@uline@add@nonletter{#1}%
   \@@uline\@uline@execit{#1}}
\def\@uline@skipdimen#1{%%% #1: \lineskiplimit etc.
   \def\@tempa{#1}%
   \let\@nnil\relax
   \afterassignment\@uline@skipdimen@
   \dimen@}
\def\@uline@skipdimen@{%
   \def\@nnil{\@nil}%
   \edef\@tempa{\@tempa\the\dimen@\relax}%
   \expandafter\@uline@add@newline\expandafter{\@tempa}%
   \@@uline}
\def\@uline@skipglue#1{%%% #1: \vskip etc.
   \def\@tempa{#1}%
   \let\@nnil\relax
   \afterassignment\@uline@skipglue@
   \skip@}
\def\@uline@skipglue@{%
   \def\@nnil{\@nil}%
   \edef\@tempa{\@tempa\the\skip@\relax}%
   \expandafter\@uline@add@newline\expandafter{\@tempa}%
   \@@uline}
\def\@uline@index{\@uline@skip[1][]}
\def\@uline@boxcmd#1#2#{%%% #1: \hbox etc.
   \@uline@boxcmd@{#1#2}}
\def\@uline@boxcmd@#1#2{%
   \@uline@add@special@item@without@AKglue{#1{#2}}%
   \@@uline}
\def\@uline@boxcopy#1{%%% #1: \box/\copy etc.
   \let\@nnil\relax
   \def\@tempa{#1}%
   \afterassignment\@uline@boxcopy@
   \count@=}
\def\@uline@boxcopy@{%
   \def\@nnil{\@nil}%
   \ifnum10>\count@
      \PackageWarning{uline--}{%
         Contents in a scratch box register (\string\box0 etc.)\MessageBreak
         may be broken}%
   \fi
   \edef\@tempa{{\@tempa\the\count@}}%
   \expandafter\@uline@add@special@item@without@AKglue\@tempa
   \@@uline}%
\def\@uline@usebox#1#2{%%% #1: \usebox
   \@uline@add@nonletter{\leavevmode}%
   \def\@tempa{\copy}%
   \count@=#2\relax
   \@uline@boxcopy@}
\def\@uline@unhbox#1{\@uline@unhbox@\unhbox\box\@empty}
\def\@uline@unhcopy#1{\@uline@unhbox@\unhcopy\copy\@empty}
\def\@uline@unvbox#1{\@uline@unhbox@\unvbox\box
   {\@uline@incompatible@direction@warning\unvbox}}
\def\@uline@unvcopy#1{\@uline@unhbox@\unvcopy\copy
   {\@uline@incompatible@direction@warning\unvcopy}}
\def\@uline@incompatible@direction@warning#1{%
   \string#1 cannot be used in horizontal direction.\MessageBreak}
\def\@uline@unhbox@#1#2#3{%
   \PackageWarning{uline--}{``unbox'' operation is not supported.\MessageBreak
      #3\string#1 is replaced with \string#2 here}%
   \@@uline#2}
\def\@uline@hvrule#1{%
   \def\@uline@rule@cmd{#1}%
   \let\@uline@rule@width\@empty
   \let\@uline@rule@height\@empty
   \let\@uline@rule@depth\@empty
   \let\@nnil\relax
   \def\@uline@read@rule@after@cmd{\@uline@putrule}%
   \@uline@read@rule@spec}
\def\@uline@read@rule@spec{%
   \let\@uline@tempword\@empty
   \@uline@read@rule@spec@getword}
\def\@uline@read@rule@spec@getword{%
   \futurelet\let@token\@uline@read@rule@spec@getword@}
\def\@uline@read@rule@spec@getword@{%
   \def\@tempa{\@uline@read@rule@spec@getword@@}%
   \ifx     \let@token\@sptoken
      \ifx\@uline@tempword\@empty
         \def\@tempa{\@uline@read@rule@spec@space}%
      \else
         \def\@tempa{\@uline@read@rule@spec@check@keyword}%
      \fi
   \else\ifx\let@token\bgroup
      \def\@tempa{\@uline@read@rule@spec@check@keyword}%
   \fi\fi
   \@tempa}
\def\@uline@read@rule@spec@getword@@#1{%
   \def\@tempa{#1}%
   \let\@tempb\@tempa
   \@onelevel@sanitize\@tempb
   \edef\@tempc{\expandafter\@car\@tempb\@empty\@nil}%
   \edef\@tempb{\expandafter\@cdr\@tempb\@empty\@nil}%
   \def\@tempa{\@uline@read@rule@spec@check@keyword#1}%
   \ifx\@tempb\@empty
      \edef\@tempc{\@tempcnta=`\@tempc\relax}\@tempc
      \@tempswafalse
      \ifnum`A>\@tempcnta\else \ifnum`Z<\@tempcnta\else \@tempswatrue \fi\fi
      \ifnum`a>\@tempcnta\else \ifnum`z<\@tempcnta\else \@tempswatrue \fi\fi
      \if@tempswa
         \expandafter\def\expandafter\@uline@tempword\expandafter{%
            \@uline@tempword#1}%
         \def\@tempa{\@uline@read@rule@spec@getword}%
      \fi
   \fi
   \@tempa}
\begingroup
\def\:{\def\@uline@read@rule@spec@space}
\expandafter\endgroup\: {\@uline@read@rule@spec@getword}
\def\@uline@read@rule@spec@check@keyword{%
   \let\@tempa\@uline@tempword
   \@onelevel@sanitize\@tempa
   \expandafter\lowercase\expandafter{%
      \expandafter\def\expandafter\@tempa\expandafter{\@tempa}}%
   \def\@tempb{\@uline@read@rule@after@cmd}%
   \ifx\@tempa\@empty\else
      \@uline@read@rule@spec@check@keyword@\@uline@keyword@width
      \if@tempswa
         \def\@tempb{\@uline@set@rule@spec\@uline@keyword@width}%
      \else
         \@uline@read@rule@spec@check@keyword@\@uline@keyword@height
         \if@tempswa
            \def\@tempb{\@uline@set@rule@spec\@uline@keyword@height}%
         \else
            \@uline@read@rule@spec@check@keyword@\@uline@keyword@depth
            \if@tempswa
               \def\@tempb{\@uline@set@rule@spec\@uline@keyword@depth}%
            \fi
         \fi
      \fi
   \fi
   \@tempb}
\def\@uline@read@rule@spec@check@keyword@#1{%
   \def\@tempc{\def\@tempc####1}%
   \expandafter\@tempc#1##2\@nil{\def\@tempc{##1}}%
   \expandafter\expandafter\expandafter\@tempc\expandafter\@tempa#1\@nil
   \ifx\@tempc\@empty\@tempswatrue \else \@tempswafalse \fi}
\def\@uline@set@rule@spec#1{%
   \let\@uline@set@rule@paramname#1%
   \csname @uline@set@rule@spec@cut@#1\expandafter\endcsname
      \@uline@tempword\@empty\@empty\@empty\@empty\@empty\@empty\@empty\@nil
   \afterassignment\@uline@set@rule@spec@
   \expandafter\dimen@\@uline@tempword}
\def\@uline@set@rule@spec@{%
   \expandafter\edef\csname @uline@rule@\@uline@set@rule@paramname\endcsname{%
      \the\dimen@}%
   \@uline@read@rule@spec}
\def\@uline@set@rule@spec@cut@width#1#2#3#4#5#6\@nil{%
   \edef\@uline@tempword{#6}}
\def\@uline@set@rule@spec@cut@height#1#2#3#4#5#6#7\@nil{%
   \edef\@uline@tempword{#7}}
\def\@uline@set@rule@spec@cut@depth#1#2#3#4#5#6\@nil{%
   \edef\@uline@tempword{#6}}
\def\@uline@putrule{%
   \def\@nnil{\@nil}%
   \edef\@tempa{%
      \expandafter\ifx\@uline@rule@cmd\hrule
         \noexpand\@uline@add@newline
      \else
         \noexpand\@uline@add@special@item@without@AKglue
      \fi
      {\expandafter\ifx\@uline@rule@cmd\vrule
         \noexpand\protect\noexpand\strut
       \fi
      \@uline@rule@cmd
      \@uline@rule@spec}}%
   \@tempa
   \expandafter\ifx\@uline@rule@cmd\hrule \@uline@remove@last@italiccorr \fi
   \expandafter\@@uline\@uline@tempword}
\def\@uline@rule@spec{%
   \ifx\@uline@rule@width\@empty\else
      \@width\space\@uline@rule@width\space
   \fi
   \ifx\@uline@rule@height\@empty\else
      \@height\space\@uline@rule@height\space
   \fi
   \ifx\@uline@rule@depth\@empty\else
      \@depth\space\@uline@rule@depth\space
   \fi}
\let\@uline@keyword@width\@width
\@onelevel@sanitize\@uline@keyword@width
\let\@uline@keyword@height\@height
\@onelevel@sanitize\@uline@keyword@height
\let\@uline@keyword@depth\@depth
\@onelevel@sanitize\@uline@keyword@depth
\def\@uline@smash{\@uline@normal[1][n]}
\def\@uline@useoneargasjcharwithspecialoption#1#2#{%%% #1: \ajSquareMark
   \@uline@useoneargasjcharwithspecialoption@{#1#2}}
\def\@uline@useoneargasjcharwithspecialoption@#1#2{%
   \@uline@add@special@item@asjchar{#1{#2}}%
   \@@uline}
\def\@uline@nosizeitem@withonearg#1#2{% #1: \sounyuu (in kunten2e package) etc.
   \let\@uline@saved@protect\@empty
   \@@uline\kern\z@\nonletter{\protect#1{#2}}\kern\z@}
\def\@uline@rensuji#1#2#{% #1: \rensuji
   \@uline@rensuji@{#1#2}}
\def\@uline@rensuji@#1#2{%
   \@uline@add@special@item{#1{#2}}%
   \@@uline}
\def\@uline@cite#1{% #1: \cite
   \@ifnextchar[{\@uline@cite@#1}{\@uline@cite@@#1}}
\def\@uline@cite@#1[#2]#3{%
   \@uline@add@special@item{#1[#2]{#3}}%
   \@@uline}
\def\@uline@cite@@#1#2{%
   \@uline@add@special@item{#1{#2}}%
   \@@uline}
\def\@uline@skipoption#1{%%% #1: \linebreak etc.
   \@ifnextchar[{\@uline@skipoption@{#1}}{\@uline@skipoption@@{#1}}}
\def\@uline@skipoption@#1[#2]{%
   \@uline@add@nonletter@with@reset{#1[#2]}%
   \@@uline}
\def\@uline@skipoption@@#1{%
   \@uline@add@nonletter{#1}%
   \@@uline}
\def\@uline@expandit#1{%
   \let\@uline@saved@protect\@empty
   \expandafter\@@uline#1}
\def\@uline@normalcolor#1{\@uline@color@{}{*}}%%% #1: \normalcolor
\def\@uline@color#1#2#{\@uline@color@{#2}}%%% #1: \color
\def\@uline@color@#1#2{%%% #1: color model (may be empty), #2: color
   \edef\@tempa{#2\space}%
   \edef\@tempa{\expandafter\zap@space\@tempa\@empty}%
   \edef\@tempa{%
      \noexpand\@uline@add@nonletter{\noexpand\@uline@setcolor{#1\@tempa}{}}}%
   \@tempa
   \@@uline}
\def\@uline@pkgtextcolor#1#2#{\@uline@pkgtextcolor@{#2}}%%% #1: \textcolor
\def\@uline@pkgtextcolor@#1#2#3{%
   \ifx\@uline@hyphen@stat\@uline@single@hyphen \@suppress@hyphenationtrue \fi
   \@uline@add@item
   \@uline@add@hyphenpenalty
   \begingroup
   \@uline@pkgtextcolor@init{#1}{#2}%
   \@uline@place@setcolor{\@uline@colorarg}{}%%% initialize \@uline@text
   \@uline@bgroup@@{#3}{}%%% \@uline@bgroup@@ puts \endgroup
   \@uline@after@group{}}
\def\@uline@pkgtextcolor@init#1#2{%
   \ifx\@uline@prevjchar\relax\else \let\@uline@prevjchar\@empty \fi
   \let\@uline@prevword\@empty
   \let\@uline@hyphen@stat\@empty
   \let\@uline@saved@protect\@empty
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@migrating@item\@empty
   \let\@uline@migrating@operation\@empty
   \@uline@group@headtrue
   \edef\@tempa{#2\space}%
   \edef\@uline@colorarg{#1\expandafter\zap@space\@tempa\@empty}}%
\def\@uline@place@setcolor#1#2{%
   \edef\@uline@text{\noexpand\@uline@setcolor{#1}{#2}}}
\def\@uline@place@setcolor@without@colorpkg#1#2{%
   \let\@uline@text\@empty}
\def\@uline@highlight#1#2#{\@uline@highlight@{#2}}%%% #1: \highlight
\def\@uline@highlight@#1#2#3{%
   \ifx\@uline@hyphen@stat\@uline@single@hyphen \@suppress@hyphenationtrue \fi
   \@uline@add@item
   \@uline@add@hyphenpenalty
   \begingroup
   \@uline@highlight@@#1\@nil{#2}%
   \@uline@place@setcolor{}{\@uline@colorarg}%%% initialize \@uline@text
   \def\@uline@tempb{\@uline@bgroup@@{#3}}%%% \@uline@bgroup@@ puts \endgroup
   \expandafter\@uline@tempb\@uline@tempa
   \@uline@after@group{}}
\def\@uline@highlight@@{%
   \@ifstar
      {\def\@uline@tempa{\@uline@highlight@put@phantom}%
       \@uline@highlight@@@}%
      {\def\@uline@tempa{{}}%
       \@uline@highlight@@@}}
\def\@uline@highlight@@@#1\@nil#2{\@uline@pkgtextcolor@init{#1}{#2}}
\def\@uline@highlight@put@phantom{%
   \toks@\expandafter{\@uline@text}%
   \edef\@uline@text{%
      \noexpand\@uline@bou@init{\noexpand\protect\noexpand\phantom}%
         {\the\toks@}}}
\def\@uline@@highlight@exec#1#{%
   \ifmmode
      \edef\@uline@@highlight@exec@next{%
         \noexpand\@uline@@highlight@exec@in@math%
            {\ifnum\fam<\z@\else \fam=\the\fam\relax \fi}{#1}}%
   \else
      \def\@uline@@highlight@exec@next{\@uline@@highlight@exec@{#1}}%
   \fi
   \@uline@@highlight@exec@next}
\def\@uline@@highlight@exec@#1#2#3{\uline[type=-noline]{\highlight#1{#2}{#3}}}
\def\@uline@@highlight@exec@in@math#1#2#3#4{%
   \mbox{\uline[type=-noline]{$#1\highlight#2{#3}{#4}$}}}
\def\@uline@colorbox#1#2#{\@uline@colorbox@{#1#2}}%%% #1: \colorbox
\def\@uline@colorbox@#1#2#3{%
   \@uline@add@special@item@without@AKglue{#1{#2}{#3}}%
   \@@uline}
\def\@uline@fcolorbox#1#2#{\@uline@fcolorbox@{#1#2}}%%% #1: \fcolorbox
\def\@uline@fcolorbox@#1#2#3#4{%
   \@uline@add@special@item@without@AKglue{#1{#2}{#3}{#4}}%
   \@@uline}
\def\@uline@primitivechar#1{%
   \let\@nnil\relax
   \afterassignment\@uline@primitivechar@
   \count@=}
\def\@uline@primitivechar@{%
   \def\@nnil{\@nil}%
   \edef\@tempa{%
      \noexpand\@uline@add@special@item@without@AKglue{\char\the\count@}}%
   \@tempa
   \@@uline}
\def\@uline@hskip#1{%
   \let\@nnil\relax
   \afterassignment\@uline@hskip@
   \skip@=}
\def\@uline@hskip@{%
   \edef\@uline@currspace{\the\skip@}%
   \def\@nnil{\@nil}%
   \@uline@space@}
\def\@uline@hspace#1{\@ifstar{\@@uline\penalty\@M #1}\@uline@hspace@}
\def\@uline@hspace@#1{%
   \def\@uline@currspace{#1}%
   \@uline@space@}
\def\@uline@textspace#1{%
   \@uline@add@special@item@without@AKglue{#1}%
   \@@uline}
\def\@uline@tmspace#1#2#3#4{%
   \let\@uline@saved@protect\@empty
   \@uline@add@special@item@without@AKglue{\kern#2#4\relax}%
   \@@uline}
\def\@uline@primitive@hglue#1{%%% #1: \hfil etc.
   \expandafter\let\expandafter\@uline@currspace
      \csname @uline@glue@amount@\expandafter\@gobbletwo\string#1\endcsname
   \@uline@space@}
\def\@uline@glue@amount@skip{}
\def\@uline@glue@amount@fil{\z@ \@plus 1fil}
\def\@uline@glue@amount@fill{\z@ \@plus 1fill}
\def\@uline@glue@amount@filneg{\z@ \@minus 1fil}
\def\@uline@glue@amount@ss{\z@ \@plus 1fil \@minus 1fil}
\def\@uline@kern#1{%
   \def\@tempa{#1}%
   \let\@nnil\relax
   \afterassignment\@uline@kern@
   \dimen@=}
\def\@uline@kern@{%
   \def\@nnil{\@nil}%
   \edef\@tempa{%
      \noexpand\@uline@add@special@item@without@AKglue{\@tempa\the\dimen@}}%
   \@tempa
   \@@uline}
\def\@uline@process@leaders#1#2{%%% #1: \leaders etc.
   \let\@nnil\relax
   \def\@uline@curr@leader@cmd{#1}%
   \def\@uline@curr@leader@box{#2}%
   \ifx     #2\hrule \def\@tempa{\@uline@leaders@getruleparams}%
   \else\ifx#2\vrule \def\@tempa{\@uline@leaders@getruleparams}%
   \else\ifx#2\copy  \def\@tempa{\@uline@leaders@getboxno}%
   \else\ifx#2\box   \def\@tempa{\@uline@leaders@getboxno}%
   \else             \def\@tempa{\@uline@leaders@getbox}%
   \fi\fi\fi\fi
   \@tempa}
\def\@uline@leaders@getruleparams{%
   \let\@uline@rule@width\@empty
   \let\@uline@rule@height\@empty
   \let\@uline@rule@depth\@empty
   \def\@uline@read@rule@after@cmd{\@uline@leaders@getruleparams@}%
   \@uline@read@rule@spec}
\def\@uline@leaders@getruleparams@{%
   \edef\@uline@curr@leader@box{%
      \@uline@curr@leader@box
      \@uline@rule@spec}%
   \@uline@leaders@getglue}
\def\@uline@leaders@getboxno{%
   \afterassignment\@uline@leaders@getboxno@
   \count@=}
\def\@uline@leaders@getboxno@{%
   \edef\@tempa{\the\count@}%
   \@csc@t\@uline@curr@leader@box\@uline@curr@leader@box\@tempa
   \@uline@leaders@getglue}
\def\@uline@leaders@getbox#1#{%
   \expandafter\def\expandafter\@uline@curr@leader@box\expandafter{%
      \@uline@curr@leader@box#1}%
   \@uline@leaders@getbox@}
\def\@uline@leaders@getbox@#1{%
   \expandafter\def\expandafter\@uline@curr@leader@box\expandafter{%
      \@uline@curr@leader@box{#1}}%
   \@uline@leaders@getglue}
\def\@uline@leaders@getglue#1{%
   \def\@tempa##1##2##3\@nil{##2}%
   \edef\@uline@leaders@dir{%
      \expandafter\@tempa\string#1\@empty\@empty\@empty\@nil}%
   \ifx\@uline@leaders@dir\@empty \def\@uline@leaders@dir{@}\fi
   \edef\@tempa{@uline@glue@amount@\expandafter\@gobbletwo\string#1}%
   \expandafter\ifx\csname\@tempa\endcsname\relax
      \let\@uline@leaders@glue\@empty
   \else
      \expandafter\let\expandafter\@uline@leaders@glue\csname\@tempa\endcsname
   \fi
   \ifx\@uline@leaders@glue\@empty \expandafter\@uline@leaders@getglue@
   \else                           \expandafter\@uline@leaders@getglue@@@
   \fi}
\def\@uline@leaders@getglue@{%
   \afterassignment\@uline@leaders@getglue@@
   \skip@=}
\def\@uline@leaders@getglue@@{%
   \edef\@uline@leaders@glue{\the\skip@}%
   \@uline@leaders@getglue@@@}
\def\@uline@leaders@getglue@@@{%
   \def\@nnil{\@nil}%
   \toks@\expandafter{\@uline@curr@leader@box}%
   \if h\@uline@leaders@dir\relax
      \@uline@add@item
      \@uline@add@hyphenpenalty
      \let\@uline@hyphen@stat\@empty
      \let\@uline@currchar\relax
      \@uline@add@glue
      \@uline@group@headfalse
      \edef\@tempa{%
         \noexpand\@uline@leaders
            {\@uline@curr@leader@cmd \the\toks@}%
            {\@uline@leaders@glue}}%
      \@uline@append@replacement@text\@uline@text\@tempa
      \let\@uline@prevjchar\@empty
      \let\@uline@prevword\@empty
      \let\@uline@previtem\relax
      \let\@uline@prev@saved@protect\@empty
      \let\@uline@saved@protect\@empty
      \@uline@check@first@gluefalse
      \@uline@inhibitgluefalse
   \else
      \edef\@tempa{%
         \@uline@curr@leader@cmd \the\toks@
         \vskip \@uline@leaders@glue\space}%
      \expandafter\@uline@add@newline\expandafter{\@tempa}%
      \@uline@remove@last@italiccorr
   \fi
   \@suppress@hyphenationfalse
   \@@uline}
\def\@uline@leaders#1#2{%
   \def\@uline@extra@leader{#1}%
   \@uline@glue{#2}%
   \let\@uline@extra@leader\@empty}
\def\@uline@makebox#1{% #1: \makebox/\framebox
   \def\@uline@temp{#1}%
   \@ifnextchar(%
      \@uline@makepicbox
      {\@ifnextchar[\@uline@@makebox{\@uline@makebox@{}{}}}}
\def\@uline@@makebox[#1]{\@uline@checkopt{\@uline@makebox@{[#1]}}}
\def\@uline@makepicbox(#1){\@uline@checkopt{\@uline@makebox@{(#1)}}}
\def\@uline@makebox@#1#2#3{%
   \expandafter\@uline@add@special@item@without@AKglue\expandafter{%
      \@uline@temp#1#2{#3}}%
   \@@uline}
\def\@uline@raisebox#1#2#3#{\@uline@raisebox@#1{#2}{#3}}
\def\@uline@raisebox@#1#2#3#4{%
   \@uline@add@special@item@without@AKglue{#1{#2}#3{#4}}%
   \@@uline}
\def\@uline@Newline#1{%
   \@uline@add@newline{#1}%
   \@uline@remove@last@italiccorr
   \@@uline}
\def\@uline@newline#1{%
   \@ifstar{\@uline@newline@{#1*}}%
           {\@uline@newline@{#1}}}
\def\@uline@newline@#1{%
   \@ifnextchar[{\@uline@newline@@{#1}}{\@uline@newline@@@{#1}}}
\def\@uline@newline@@#1[#2]{%
   \@uline@add@newline{#1[#2]}%
   \@uline@remove@last@italiccorr
   \@ifnextchar[\@@uline\@@uline}
\def\@uline@newline@@@#1{%
   \@uline@add@newline{#1}%
   \@uline@remove@last@italiccorr
   \@@uline}
\def\@uline@nobreakspace#1{\@@uline\penalty\@M\ }
\def\@uline@ctrlspace#1{%
   \begingroup
   \def\@uline@spacefactor{\@m}%
   \@uline@setspace
   \expandafter\endgroup\expandafter
   \def\expandafter\@uline@currspace\expandafter{\@uline@currspace}%
   \@uline@space@}
\def\@uline@xspace#1{\futurelet\@let@token\@uline@xspace@}
\def\@uline@xspace@{%
   \edef\@uline@temp{\@xspace}%
   \let\@uline@saved@protect\@empty
   \expandafter\@@uline\@uline@temp}
\def\@uline@penalty#1{%
   \let\@nnil\relax
   \afterassignment\@uline@penalty@
   \count@=}
\def\@uline@penalty@{%
   \def\@nnil{\@nil}%
   \edef\@tempa{\noexpand\@uline@add@nonletter{\penalty\the\count@\space}}%
   \@tempa
   \@@uline}
\def\@uline@@spacefactor#1{%
   \let\@nnil\relax
   \afterassignment\@uline@@spacefactor@
   \count@=}
\def\@uline@@spacefactor@{%
   \ifnum\count@>\z@ \edef\@uline@spacefactor{\the\count@}\fi
   \def\@nnil{\@nil}%
   \@@uline}
\def\@uline@inhibitglue#1{%
   \@uline@inhibitgluetrue
   \let\@uline@hyphen@stat\@empty
   \@@uline}
\def\@uline@italiccorr{\@uline@letterlike@{\global\@migrate@italiccorrtrue}}
\def\@uline@letterlike{\@uline@letterlike@\relax}
\def\@uline@letterlike@#1#2{%
   \ifx\@uline@prevword\@empty
      \@uline@add@item
      \expandafter\def\expandafter\@uline@prevword\expandafter{%
         \@uline@saved@protect#2}%
   \else
      \expandafter\@uline@append@tokens\expandafter\@uline@prevword
         \expandafter{\@uline@saved@protect#2}%
   \fi
   \let\@uline@prevjchar\@empty
   \let\@uline@hyphen@stat\@empty
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@saved@protect\@empty
   \@uline@group@headfalse
   \@uline@check@first@gluefalse
   \@uline@inhibitgluefalse
   #1%
   \@@uline}
\def\@uline@discretionary#1#2#3#4{% #1: \discretionary
   \let\@tempa\@empty
   \@uline@discretionary@{#2}%
   \@uline@discretionary@{#3}%
   \@uline@discretionary@{#4}%
   \@suppress@hyphenationtrue
   \expandafter\@uline@add@nonletter@with@reset
      \expandafter{\expandafter\discretionary\@tempa}%
   \@@uline}
\def\@uline@ignored@discretionary#1#2#3#4{\@@uline}
\def\@uline@discretionary@#1{%
   \def\@tempb{#1}%
   \ifx\@tempb\@empty
      \@uline@append@tokens\@tempa{{}}%
   \else
      \@uline@discretionary@@#1\@uline@item\@nil{#1}%
   \fi}
\def\@uline@discretionary@@#1\@uline@item#2\@nil#3{%
   \def\@uline@discretionary@temp{#2}%
   \ifx\@uline@discretionary@temp\@empty
      \@uline@append@tokens\@tempa{{\@uline@item{#3}}}%
   \else
      \@uline@append@tokens\@tempa{{#3}}%
   \fi}
\def\@uline@footnote#1{%%% #1: \footnote
   \@uline@checkopt\@uline@footnote@}
\def\@uline@footnote@#1#2{%
   \@uline@add@special@item{\ulinefootnotemark#1}%
   \@uline@add@nonletter{%
      \begingroup
      \@uline@reset@pattern
      \protect\footnotetext#1{#2}%
      \endgroup}%
   \@@uline}
\def\ulinefootnotemark{%
   \@ifnextchar[%
      \@xulinefootnotemark
     {\stepcounter\@mpfn
      \protected@xdef\@thefnmark{\thempfn}%
      \@footnotemark}}
\def\@xulinefootnotemark[#1]{%
   \begingroup
   \csname c@\@mpfn\endcsname #1\relax
   \unrestored@protected@xdef\@thefnmark{\thempfn}%
   \endgroup
   \@footnotemark}
\def\@uline@footnotetext#1{%
   \@uline@checkopt\@uline@footnotetext@}
\def\@uline@footnotetext@#1#2{%
   \let\@uline@saved@protect\@empty
   \@uline@add@nonletter{%
      \begingroup
      \@uline@reset@pattern
      \protect\footnotetext#1{#2}%
      \endgroup}%
   \@@uline}
\def\@uline@endnote#1{\@uline@checkopt\@uline@endnote@}%%% #1: \endnote
\def\@uline@endnote@#1#2{%
   \@uline@add@special@item{\endnotemark#1}%
   \def\@uline@saved@protect{\protect}%
   \@uline@endnotetext@{#1}{#2}}
\def\@uline@endnotetext#1{%%% #1: \endnotetext
   \@uline@checkopt\@uline@endnotetext@}
\def\@uline@endnotetext@#1#2{%
   \begingroup
   \let\protect\@uline@endnote@protect
   \edef\@tempa{\noexpand\endnotetext#1{#2}}%
   \expandafter\endgroup
   \expandafter\@uline@add@nonletter\expandafter{\@tempa}%
   \@@uline}
\def\@uline@endnote@protect#1{%
   \if\noexpand#1\relax
      \expandafter\@uline@endnote@protect@\string#1 \@nil
   \else
      \string#1%
   \fi}
\def\@uline@endnote@protect@#1 #2\@nil{#1 }
\def\@uline@marginpar#1{\@uline@checkopt\@uline@marginpar@}%%% #1: \marginpar
\def\@uline@marginpar@#1#2{%
   \let\@uline@saved@protect\@empty
   \@uline@add@nonletter{%
      \begingroup
      \@uline@reset@pattern
      \protect\marginpar#1{#2}%
      \endgroup}%
   \@@uline}
\def\@uline@ajTsumesuji#1#2#3{% #1: \ajTsumesuji etc., #2: *, 1, 2, 3, 4
   \@uline@add@special@item@asjchar{#1#2{#3}}%
   \@@uline}
\def\@uline@nobreakdash#1{%%% #1: \nobreakdash
   \let\@tempa\@empty
   \futurelet\let@token\@uline@nobreakdash@}
\def\@uline@nobreakdash@{\futurelet\let@token\@uline@nobreakdash@@}
\def\@uline@nobreakdash@@{%
   \ifx -\let@token
      \expandafter\def\expandafter\@tempa\expandafter{\@tempa-}%
      \expandafter\@firstoftwo
   \else
      \expandafter\@secondoftwo
   \fi
   {\expandafter\@uline@nobreakdash@\@gobble}\@uline@nobreakdash@@@}
\def\@uline@nobreakdash@@@{%
   \let\@uline@saved@protect\@empty
   \expandafter\@uline@add@special@item@without@AKglue\expandafter{\@tempa}%
   \@@uline}
\def\@uline@SFkundoku#1{\@testopt\@uline@SFkundoku@{1}}
\def\@uline@SFkundoku@[#1]#2#3#4#5{%
   \@testopt{\@uline@SFkundoku@@{[#1]{#2}{#3}{#4}{#5}}}{}}
\def\@uline@SFkundoku@@#1[#2]{%
   \@ifnextchar<%
      {\@uline@SFkundoku@@@{#1[{#2}]}}%
      {\@uline@SFkundoku@@@{#1[{#2}]}<>}}
\def\@uline@SFkundoku@@@#1<#2>{%
   \@ifnextchar(%
      {\@uline@SFkundoku@@@@{#1<{#2}>}}%
      {\@uline@SFkundoku@@@@{#1<{#2}>}()}}
\def\@uline@SFkundoku@@@@#1(#2){%
   \@uline@add@special@item@asjchar{\kundoku#1(#2)}%
   \@@uline}
\def\@uline@SFKana#1#2#{\@uline@SFKana@{#1#2}}
\def\@uline@SFKana@#1#2#3{%
   \let\@uline@saved@protect\@empty
   \def\@uline@tempz{#1}%
   \def\@uline@tempa{#2}%
   \def\@uline@tempb{#3}%
   \@uline@SFKana@loop
   \@@uline}
\def\@uline@SFKana@loop{%
   \@tempswatrue
   \ifx\@uline@tempa\@empty \ifx\@uline@tempb\@empty
      \@tempswafalse
   \fi\fi
   \if@tempswa
      \expandafter\@uline@SFKana@loop@
         \@uline@tempa,\@nil\@nnil\@uline@tempa\@uline@tempx
      \expandafter\@uline@SFKana@loop@
         \@uline@tempb,\@nil\@nnil\@uline@tempb\@uline@tempy
      \@csc@t\@uline@tempx\@uline@tempz\@uline@tempx
      \@csc@t\@uline@tempx\@uline@tempx\@uline@tempy
      \expandafter\@uline@add@special@item@asjchar\expandafter{\@uline@tempx}%
      \expandafter\@uline@SFKana@loop
   \fi}
\def\@uline@SFKana@loop@#1,#2\@nnil#3#4{%
   \ifx#3\@empty
      \def#4{{}}%
   \else
      \def#4{{#1}}%
      \def\@tempc{#2}%
      \ifx\@tempc\@nnil
         \let#3\@empty
      \else
         \expandafter\def\expandafter#3\expandafter{%
            \@uline@SFKana@loop@@#2,\@nil\@nnil}%
      \fi
   \fi}
\def\@uline@SFKana@loop@@#1,\@nil#2\@nnil{#1}
\newif\if@uline@in@urlarg
\def\@uline@process@url#1#2{% #1: \url
   \ifx\@uline@hyphen@stat\@uline@single@hyphen \@suppress@hyphenationtrue \fi
   \@uline@add@item
   \@uline@add@hyphenpenalty
   \let\@uline@hyphen@stat\@empty
   \@suppress@hyphenationfalse
   \begingroup
   \@uline@in@urlargtrue
   \@uline@ignore@primestrue
   \def\@uline@char@class{-1}%
   \let\@uline@hyphenate\relax
   \let\@uline@space\@uline@space@in@url
   \let\@uline@checktoken\@uline@checktoken@in@url
   \@uline@measure@glueparams{\UrlFont}%
   \@uline@init@char@table@for@url
   \def\@tempa\,##1\Url@retain{}%
   \expandafter\edef\csname @uline@urlchar32\endcsname{%
      \ifx\Url@nosp\@tempa\ \fi}%
   \def\do{\@uline@uline@set@url@charclass{0}}\UrlOrds
   \def\do{\@uline@uline@set@url@charclass{1}}\UrlBreaks
   \def\do{\@uline@uline@set@url@charclass{2}}\UrlBigBreaks
   \def\do{\@uline@uline@set@url@charclass{3}}\UrlNoBreaks
   \def\do{\@uline@examine@url@chardef}\UrlSpecials
   \def\do{\@uline@set@url@nolig}\verbatim@nolig@list
   \ifx\@uline@prevjchar\relax\else \let\@uline@prevjchar\@empty \fi
   \let\@uline@prevword\@empty
   \let\@uline@saved@protect\@empty
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@migrating@item\@empty
   \let\@uline@migrating@operation\@empty
   \let\@uline@text\@empty
   \@uline@group@headtrue
   \expandafter\def\expandafter\@tempa\expandafter{\UrlLeft#2\UrlRight}%
   \toks@\expandafter{\@tempa}%
   \@temptokena\expandafter{\UrlFont
      \nonletter{\protect\SetMathFontsForUrlInUline}}%
   \edef\@tempa{{\the\@temptokena\the\toks@}}%
   \expandafter\@uline@bgroup@@\@tempa{}%%% \@uline@bgroup@@ puts \endgroup
   \@uline@after@group{}}
\def\@uline@init@char@table@for@url{%
   \let\@uline@extra@urlchars\@uline@extra@urlchars@
   \@tfor\@tempa:=%
      {\<\textless{$\noexpand\protect\noexpand\langle$}<}%
      {\>\textgreater{$\noexpand\protect\noexpand\rangle$}>}%
      {\_\textunderscore\textunderscore{\string_}}%
      {\|\textbar\textbar{\string|}}%
      {\{\textbraceleft\textbraceleft{\expandafter\@gobble\string\{}}%
      {\}\textbraceright\textbraceright{\expandafter\@gobble\string\}}}%
      {\\\textbackslash\textbackslash{\expandafter\@gobble\string\\}}%
      {\~\textasciitilde\textasciitilde{\string~}}%
      {\$\textdollar\textdollar{\string$}}%
      {\^\textasciicircum\textasciicircum{\string^}}%
      {\*\textasteriskcentered\textasteriskcentered*}%
      \do{\expandafter\@uline@init@char@table@for@url@\@tempa}}
\def\@uline@extra@urlchars@{\ \<\>\_\|\{\}\\\~\$\^\*}
\def\@uline@init@char@table@for@url@#1#2#3#4{%
   \count@=`#1\relax
   \def\@uline@encoding@temp{OT1}%
   \expandafter\edef\csname @uline@urlchar\the\count@\endcsname{%
      \ifdim\@uline@curr@fontdimeniii=\z@
         #4%
      \else
         \ifx\@uline@encoding@temp\@uline@curr@f@encoding \noexpand#3%
         \else                                            \noexpand#2%
         \fi
      \fi}}
\def\@uline@uline@set@url@charclass#1#2{%
   \count@=`#2\relax
   \@tempcnta=#1\relax
   \@uline@uline@set@url@charclass@}
\def\@uline@uline@set@url@charclass@{%
   \expandafter\edef\csname @uline@urlCC\the\count@\endcsname{\the\@tempcnta}}
\def\@uline@set@url@nolig#1{%
   \count@=`#1\relax
   \@tempcnta=\csname @uline@urlCC\the\count@\endcsname\relax
   \advance\@tempcnta\sixt@@n
   \@uline@uline@set@url@charclass@}
\def\@uline@examine@url@chardef#1#2{%
   \count@=`#1\relax
   \def\@tempa{#2}%
   \expandafter\ifx\csname @uline@default@in@url\string#1\endcsname\@tempa
      \@tempcnta\csname @uline@defaultCC@in@url\string#1\endcsname\relax
   \else
      \@uline@append@tokens\@uline@extra@urlchars{#1}%
      \expandafter\def\csname @uline@urlchar\the\count@\endcsname{%
         \mbox{\protect\@uline@inner@url@init \protect\@uline@inner@url{#2}}}%
      \@tempcnta\z@
   \fi
   \@uline@uline@set@url@charclass@}
\def\@uline@inner@url@init{\let\UrlLeft\@empty \let\UrlRight\@empty}
\def\@uline@inner@url{\url}
\def\@uline@urlstyle#1#2{% #1: \urlstyle
   \def\@tempa{#2}%
   \def\@tempb{same}%
   \ifx\@tempa\@tempb \@uline@urlstyle@same
   \else              \urlstyle{#2}%
   \fi
   \@uline@add@nonletter{#1{#2}}%
   \@@uline}
\def\@uline@urlstyle@same{%
   \ifdim\@uline@curr@fontdimeniii=\z@ \url@ttstyle
   \else                               \url@rmstyle
   \fi
   \def\UrlFont{}}
\def\SetMathFontsForUrlInUline{%
   \setbox\z@\hbox{%
      \expandafter\ifx\csname S@\f@size\endcsname\relax
         \calculate@math@sizes
      \fi
      \csname S@\f@size\endcsname
      \edef\@uline@tempa{\textfont\z@\the\font}%
      %%% Following four lines might be omitted (see url.sty).
      \fontsize\sf@size\z@ \selectfont
      \edef\@uline@tempa{\@uline@tempa \scriptfont\z@\the\font}%
      \fontsize\ssf@size\z@ \selectfont
      \edef\@uline@tempa{\@uline@tempa \scriptscriptfont\z@\the\font}%
      \expandafter}\@uline@tempa
   \everymath{\fam\z@}}
\begingroup
\def\:{\def\@uline@space@in@url}
\expandafter\endgroup\: {%
   \expandafter\ifx\csname @uline@urlchar32\endcsname\@empty
      \expandafter\@@uline
   \else
      \expandafter\@uline@space@in@url@
   \fi}
\def\@uline@space@in@url@{%
   \begingroup
   \def\@uline@spacefactor{\@m}%
   \@uline@setspace
   \expandafter\endgroup\expandafter
   \def\expandafter\@uline@currspace\expandafter{\@uline@currspace}%
   \edef\@tempa{%
      \noexpand\@uline@add@nonletter{\penalty\number\Url@sppen\relax}}%
   \@tempa
   \let\@uline@hyphen@stat\@empty
   \let\@uline@currchar\relax
   \@uline@group@headfalse
   \@uline@add@glue@@\@uline@currspace
   \let\@uline@prevjchar\@empty
   \let\@uline@prevword\@empty
   \let\@uline@previtem\relax
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@saved@protect\@empty
   \@uline@check@first@gluefalse
   \@uline@inhibitgluefalse
   \@@uline}
\def\@uline@checktoken@in@url#1{%
   \def\@uline@next{\@@uline}%
   \def\@tempa{#1}%
   \let\@tempb\@tempa
   \@onelevel@sanitize\@tempb
   \edef\@tempc{\expandafter\@car\@tempb\@empty\@nil}%
   \edef\@tempb{\expandafter\@cdr\@tempb\@empty\@nil}%
   \ifx\@tempb\@empty
      \edef\@tempc{\@uline@charcode=`\@tempc\relax}\@tempc
      \ifnum\@uline@charcode<\@cclvi
         \ifcat\noexpand#1^\relax
            \def\@uline@next{%
               \@uline@get@scripts\@uline@set@scripts@in@url^}%
         \else
            \ifcat\noexpand#1_\relax
               \def\@uline@next{%
                  \@uline@get@scripts\@uline@set@scripts@in@url_}%
            \else
               \ifx#1~\relax
                  \def\@tempa##1\~##2\@nil{\def\@tempa{##2}}%
                  \expandafter\@tempa\UrlSpecials\~\@nil
                  \ifx\@tempa\@empty
                     \def\@uline@next{\@uline@add@nonbreak@space@in@url}%
                  \else
                     \@uline@process@normal@char@in@url{#1}%
                  \fi
               \else
                  \@uline@process@normal@char@in@url{#1}%
               \fi
            \fi
         \fi
      \else
         \def\@tempa{%
            \@uline@add@item
            \def\@uline@currchar{#1}}%
         \ifx\@uline@prevword\@empty
            \ifx\@uline@prevjchar\relax \let\@tempa\@empty \fi
         \fi
         \@tempa
         \@uline@add@penalty@in@url
         \def\@uline@prevjchar{#1}%
         \let\@uline@prevword\@empty
         \let\@uline@previtem\@uline@prevjchar
         \let\@uline@hyphen@stat\@empty
         \let\@uline@prev@saved@protect\@uline@saved@protect
         \let\@uline@saved@protect\@empty
         \def\@uline@spacefactor{1000}%
         \def\@uline@char@class{0}%
      \fi
      \@uline@group@headfalse
      \@uline@check@first@gluefalse
      \@uline@inhibitgluefalse
   \else
      \def\@uline@char@class{0}%
      \@uline@examine@cs
   \fi
   \@uline@next}
\def\@uline@process@normal@char@in@url#1{%
   \@tempcnta\csname @uline@urlCC\the\@uline@charcode\endcsname\relax
   \@tempswafalse
   \ifnum\@tempcnta<\sixt@@n\else
      \@tempswatrue
      \advance\@tempcnta-\sixt@@n
   \fi
   \let\@uline@curr@urlchar\relax
   \def\@tempa{\@tfor\@tempa:=}%
   \expandafter\@tempa\@uline@extra@urlchars\do{%
      \expandafter\@tempcntb\expandafter=\expandafter`\@tempa\relax
      \ifnum\@tempcntb=\@uline@charcode
         \expandafter\let\expandafter\@uline@curr@urlchar
            \csname @uline@urlchar\the\@uline@charcode\endcsname
         \@break@tfor
      \fi}%
   \ifx\@uline@curr@urlchar\relax \def\@uline@curr@urlchar{#1}\fi
   \ifx\@uline@prevword\@empty
      \@uline@add@item
   \else
      \@tempcntb\@uline@char@class\relax
      \ifnum\@tempcntb>\z@
         \ifnum\@tempcntb<\thr@@
            \ifnum\@tempcnta=\tw@\else
               \@uline@add@penalty@in@url
               \ifnum\@tempcnta=\@ne \@tempcnta\z@ \fi
            \fi
         \fi
      \fi
   \fi
   \@csc@t\@uline@curr@urlchar\@uline@saved@protect\@uline@curr@urlchar
   \@uline@append@replacement@text\@uline@prevword\@uline@curr@urlchar
   \if@tempswa \@uline@append@tokens\@uline@prevword{{}}\fi
   \let\@uline@prevjchar\@empty
   \def\@uline@previtem{#1}%
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@saved@protect\@empty
   \edef\@uline@char@class{\the\@tempcnta}}
\def\@uline@add@penalty@in@url{%
   \edef\@tempa{%
      \ifcase\@uline@char@class\relax
      \or
         \noexpand\@uline@add@nonletter{%
            \penalty\number
            \UrlBreakPenalty%%% \UrlBigBreakPenalty may do (see url.sty).
            \relax}%
      \or
         \noexpand\@uline@add@nonletter{%
            \penalty\number
            \UrlBigBreakPenalty%%% \UrlBreakPenalty may do (see url.sty).
            \relax}%
      \fi}%
   \@tempa}
\def\@uline@add@nonbreak@space@in@url{%
   \ifx\@uline@prevword\@empty \@uline@add@item \fi
   \expandafter\@uline@append@tokens\expandafter\@uline@prevword
      \expandafter{\@uline@saved@protect~}%
   \let\@uline@prevjchar\@empty
   \def\@uline@previtem{~}%
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@saved@protect\@empty
   \@@uline}
\def\@uline@set@scripts@in@url#1{%
%%% #1: \@@uline@get@scripts@limits (= macro containing subscripts/superscripts)
%%%     (see \@@@uline@get@scripts)
   \ifx\@uline@prevword\@empty \@uline@add@item \fi
   \expandafter\@uline@append@tokens\expandafter\@uline@prevword
      \expandafter{\expandafter$#1$}%
   \let\@uline@prevjchar\@empty
   \let\@uline@previtem\@empty
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@saved@protect\@empty
   \@@uline}
\begingroup
\def\:{\def\@uline@space}%
\expandafter\endgroup\: {%
   \@uline@setspace
   \@uline@space@}
\def\@uline@space@{\@uline@space@@ \@@uline}
\def\@uline@space@@{%
   \@uline@add@item
   \@uline@add@hyphenpenalty
   \let\@uline@hyphen@stat\@empty
   \let\@uline@currchar\relax
   \edef\@uline@space@temp{%
      \if@migrate@italiccorr \global\noexpand\@migrate@italiccorrtrue \fi}%
   \@uline@add@glue
   \@uline@group@headfalse
   \@uline@space@temp
   \@uline@add@glue@@\@uline@currspace
   \let\@uline@prevjchar\@empty
   \let\@uline@prevword\@empty
   \let\@uline@previtem\relax
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@saved@protect\@empty
   \@uline@check@first@gluefalse
   \@uline@inhibitgluefalse
   \@suppress@hyphenationfalse}
\def\@uline@math@space#1{\def\@uline@currspace{#1}\@uline@space@@}
\def\@uline@setspace{%
   \@tempswafalse
   \ifdim\xspaceskip=\z@\else
      \ifnum\@uline@spacefactor<2000\relax\else \@tempswatrue \fi
   \fi
   \if@tempswa
      \edef\@tempa{\the\xspaceskip\space}%
      \expandafter\@uline@setspace@\@tempa @ @ @ @ \@nil
      \@tempdima\@uline@natural@size\relax
   \else
      \ifdim\spaceskip=\z@
         \@tempdima\@uline@curr@fontdimenii\relax
         \ifnum\@uline@spacefactor<2000\relax \else
            \advance\@tempdima\@uline@curr@fontdimenvii\relax
         \fi
         \@tempdimb\@uline@curr@fontdimeniii\relax
         \def\@uline@stretch@unit{pt}%
         \@tempdimc\@uline@curr@fontdimeniv\relax
         \def\@uline@shrink@unit{pt}%
      \else
         \skip@\spaceskip
         \ifnum\@uline@spacefactor<2000\relax \else
            \advance\skip@\@uline@curr@fontdimenvii\relax
         \fi
         \edef\@tempa{\the\skip@\space}%
         \expandafter\@uline@setspace@\@tempa @ @ @ @ \@nil
         \@tempdima\@uline@natural@size\relax
      \fi
      \@uline@setspace@@\@tempa\@uline@spacefactor\@m
      \@uline@setspace@@\@tempb\@m\@uline@spacefactor
      \@tempdimb\@tempa\@tempdimb
      \@tempdimc\@tempb\@tempdimc
   \fi
   \edef\@uline@currspace{%
      \the\@tempdima\space
      \@plus\space\strip@pt\@tempdimb\@uline@stretch@unit\space
      \@minus\space\strip@pt\@tempdimc\@uline@shrink@unit}}
\def\@uline@setspace@#1 #2 #3 #4 #5 #6\@nil{%
   \def\@uline@natural@size{#1}%
   \def\@uline@stretch@unit{pt}%
   \def\@uline@shrink@unit{pt}%
   \def\@tempa{#2}%
   \ifx\@tempa\@uline@plus
      \@uline@setspace@check@unit\@tempdimb\@uline@stretch@unit{#3}%
      \def\@tempa{#4}%
      \ifx\@tempa\@uline@minus
         \@uline@setspace@check@unit\@tempdimc\@uline@shrink@unit{#5}%
      \else
         \@tempdimc\z@
      \fi
   \else
      \@tempdimb\z@
      \ifx\@tempa\@uline@minus
         \@uline@setspace@check@unit\@tempdimc\@uline@shrink@unit{#3}%
      \else
         \@tempdimc\z@
      \fi
   \fi}
\def\@uline@setspace@check@unit#1#2#3{%
   \edef\@uline@setspace@check@unit@tempa{%
      \noexpand\@uline@setspace@check@unit@#3\@uline@keyword@fil}%
   \@uline@setspace@check@unit@tempa\@nil
   \ifx\@uline@setspace@check@unit@tempb\@empty
      #1#3\relax
   \else
      #1\@uline@setspace@check@unit@tempa\p@
      \edef#2{\expandafter\@uline@setspace@check@unit@@
         \@uline@setspace@check@unit@tempb\@nil}%
   \fi}
\edef\@uline@keyword@fil{\expandafter\@gobble\string\fil}
\def\@tempa{\def\@uline@setspace@check@unit@##1}
\expandafter\@tempa\@uline@keyword@fil#2\@nil{%
   \def\@uline@setspace@check@unit@tempa{#1}%
   \def\@uline@setspace@check@unit@tempb{#2}}
\let\@tempa\@empty
\begingroup
\catcode`F=12
\lowercase{\endgroup \def\@uline@setspace@check@unit@@#1F#2\@nil{F#2#1}}
\edef\@uline@plus{\expandafter\@gobble\string\plus}
\edef\@uline@minus{\expandafter\@gobble\string\minus}
\def\@uline@setspace@@#1#2#3{%
   \begingroup
   \@tempcnta#2\relax \count@\@tempcnta
   \@tempcntb#3\relax
   \divide\count@\@tempcntb
   \edef\@tempa{\the\count@.}%
   \multiply\count@\@tempcntb \advance\@tempcnta-\count@
   \multiply\@tempcnta\@m     \divide\@tempcnta\@tempcntb
   \edef\@tempa{%
      \def\noexpand#1{%
         \@tempa
         \ifnum\@tempcnta<100 0\ifnum\@tempcnta<10 0\fi\fi
         \the\@tempcnta}}%
   \expandafter\endgroup\@tempa}
\def\@uline@measure@glueparams#1{%
   \setbox\z@\hbox{\@uline@extra@fontcommands#1{\@uline@measure@glueparams@}}%
   \@uline@gtempa
   \let\@uline@extra@fontcommands\@empty}
\edef\@uline@measure@glueparams@{%
   \xdef\noexpand\@uline@gtempa{%
      \def\noexpand\noexpand\noexpand\@uline@curr@f@encoding{%
         \noexpand\f@encoding}%
      \def\noexpand\noexpand\noexpand\@uline@curr@hyphenchar{%
         \noexpand\the\hyphenchar\font}%
      \def\noexpand\noexpand\noexpand\@uline@curr@fontdimeni{%
         \noexpand\the\fontdimen1\font}%
      \def\noexpand\noexpand\noexpand\@uline@curr@fontdimenii{%
         \noexpand\the\fontdimen2\font}%
      \def\noexpand\noexpand\noexpand\@uline@curr@fontdimeniii{%
         \noexpand\the\fontdimen3\font}%
      \def\noexpand\noexpand\noexpand\@uline@curr@fontdimeniv{%
         \noexpand\the\fontdimen4\font}%
      \def\noexpand\noexpand\noexpand\@uline@curr@fontdimenvii{%
         \noexpand\the\fontdimen7\font}%
      \spaceskip=\noexpand\the\spaceskip\relax
      \xspaceskip=\noexpand\the\xspaceskip\relax
      \expandafter\ifx\csname pfmtname\endcsname\relax\else
         \kanjiskip=\noexpand\the\kanjiskip\relax
         \xkanjiskip=\noexpand\the\xkanjiskip\relax
      \fi}}
\def\@uline@addshape#1#2{%%% #1: \fontshape etc.
   \expandafter\def\expandafter\@uline@extra@fontcommands\expandafter{%
      \@uline@extra@fontcommands#1{#2}}%
   \@uline@add@nonletter{#1{#2}}%
   \@@uline}
\def\@uline@fontchange#1{%%% #1: \normalsize etc.
   \@uline@add@nonletter{#1}%
   \@@uline\@uline@execit{\@uline@measure@glueparams{#1}}}
\def\@uline@fontsize#1#2#3{%%% #1: \fontsize
   \expandafter\def\expandafter\@uline@extra@fontcommands\expandafter{%
      \@uline@extra@fontcommands#1{#2}{#3}}%
   \@uline@add@nonletter{#1{#2}{#3}}%
   \@@uline}
\def\@uline@setlength#1#2#3{%%% #1: \setlength/\addtolength
   \@uline@add@nonletter{#1{#2}{#3}}%
   \@@uline\@uline@execit{\@uline@measure@glueparams{#1{#2}{#3}}}}
\def\@uline@bgroup#1{%
   \ifx\@uline@hyphen@stat\@uline@single@hyphen \@suppress@hyphenationtrue \fi
   \@uline@add@item
   \@uline@add@hyphenpenalty
   \let\@uline@hyphen@stat\@empty
   \@uline@bgroup@{#1}{}%
   \@uline@after@group{}}
\def\@uline@bgroup@#1#2{%
   \begingroup
   \ifx\@uline@prevjchar\relax\else \let\@uline@prevjchar\@empty \fi
   \let\@uline@prevword\@empty
   \let\@uline@saved@protect\@empty
   \let\@uline@prev@saved@protect\@empty
   \let\@uline@migrating@item\@empty
   \let\@uline@migrating@operation\@empty
   \let\@uline@text\@empty
   \@uline@group@headtrue
   \@uline@bgroup@@{#1}{#2}}%%% \@uline@bgroup@@ puts \endgroup
\def\@uline@bgroup@@#1#2{%
   \let\@uline@set@last@glue\relax
   \@@uline#1\@nnil
   #2%
   \toks@\expandafter{\@uline@text}%
   \@temptokena\expandafter{\@uline@migrating@item}%
   \toks\tw@\expandafter{\@uline@prevjchar}%
   \let\@uline@set@italiccorr@migration\relax
   \edef\@tempa{%
      \def\noexpand\@uline@inner@text{{\the\toks@}}%
      \def\noexpand\@uline@inner@migrating@item{\the\@temptokena}%
      \def\noexpand\@uline@inner@migrating@operation{%
         \@uline@migrating@operation}%
      \def\noexpand\@uline@reset@group@stat{%
         \if@uline@group@head\else \noexpand\@uline@group@headfalse \fi}%
      \ifx\@uline@prevjchar\relax
         \let\noexpand\@uline@prevjchar\relax
      \else
         \def\noexpand\@uline@prevjchar{\the\toks\tw@}%
      \fi
      \ifx\@uline@previtem\relax
         \let\noexpand\@uline@previtem\relax
      \else
         \def\noexpand\@uline@previtem{\@uline@previtem}%
      \fi
      \def\noexpand\@uline@hyphen@stat{\@uline@hyphen@stat}%
      \if@uline@inhibitglue \noexpand\@uline@inhibitgluetrue
      \else                 \noexpand\@uline@inhibitgluefalse
      \fi
      \def\noexpand\@uline@spacefactor{\@uline@spacefactor}%
      \if@suppress@hyphenation\else \noexpand\@suppress@hyphenationfalse \fi}%
   \expandafter\endgroup\@tempa}
\def\@uline@after@group#1{%
   \ifx\@uline@prevjchar\relax\else \let\@uline@prevjchar\@empty \fi
   \let\@uline@prevword\@empty
   \let\@uline@saved@protect\@empty
   \let\@uline@prev@saved@protect\@empty
   \if@uline@group@head
      \@csc@t\@uline@migrating@item
         \@uline@migrating@item\@uline@inner@migrating@item
      \let\@uline@migrating@operation\@uline@inner@migrating@operation
   \else
      \@uline@inner@migrating@operation
      \@uline@append@replacement@text\@uline@text\@uline@inner@migrating@item
   \fi
   \@uline@append@tokens\@uline@text{#1}%
   \@uline@append@replacement@text\@uline@text\@uline@inner@text
   \@uline@add@hyphenpenalty
   \let\@uline@hyphen@stat\@empty
   \@uline@reset@group@stat
   \@@uline}
\def\@uline@get@scripts#1{%
   \def\@uline@get@scripts@cmd{#1}%
   \@ifnextchar^\@@uline@get@scripts@u\@@uline@get@scripts@x}
\def\@@uline@get@scripts@x{%
   \@ifnextchar_\@@uline@get@scripts@l\@@uline@get@scripts@y}
\def\@@uline@get@scripts@y{%
   \@ifnextchar'%
      {\@@uline@get@scripts@primes\@@uline@get@scripts@u}%
      {\@@@uline@get@scripts{}{}}}
\newif\if@uline@ignore@primes \@uline@ignore@primesfalse
\def\@@uline@get@scripts@primes#1{%
   \if@uline@ignore@primes
      \def\@tempb{#1^{}}%
   \else
      \def\@@uline@get@scripts@primes@after@cmd{#1}%
      \let\@tempa\@empty
      \def\@tempb{\@@uline@get@scripts@primes@}%
   \fi
   \@tempb}
\def\@@uline@get@scripts@primes@{%
   \futurelet\let@token\@@uline@get@scripts@primes@@}
\def\@@uline@get@scripts@primes@@{%
   \ifx'\let@token
      \expandafter\def\expandafter\@tempa\expandafter{\@tempa\prime}%
      \expandafter\@@uline@get@scripts@prim@s@
   \else
      \ifx^\let@token
         \expandafter\expandafter\expandafter\@@uline@get@scripts@primes@@@
      \else
         \expandafter\expandafter\expandafter\@@uline@get@scripts@primes@finish
      \fi
   \fi}
\def\@@uline@get@scripts@prim@s@#1{\@@uline@get@scripts@primes@}%%% #1: '
\def\@@uline@get@scripts@primes@@@#1#2{%
   \expandafter\def\expandafter\@tempa\expandafter{\@tempa#2}%
   \@@uline@get@scripts@primes@finish}
\def\@@uline@get@scripts@primes@finish{%
   \expandafter\@@uline@get@scripts@primes@after@cmd
   \expandafter^\expandafter{\@tempa}}
\def\@@uline@get@scripts@u#1{% #1: ^ or \sp
   \@uline@get@scripts@check@math@fontcmd
      \@@uline@get@scripts@ux\@@uline@get@scripts@uy}
\def\@@uline@get@scripts@ux#1#2{%
   \@ifnextchar_%
      {\@@@uline@get@scripts@ul{#1{#2}}}%
      {\@@@uline@get@scripts{}{#1{#2}}}}
\def\@@uline@get@scripts@uy#1{%
   \@ifnextchar_{\@@@uline@get@scripts@ul{#1}}{\@@@uline@get@scripts{}{#1}}}
\def\@@uline@get@scripts@l#1{% #1: _ or \sb
   \@uline@get@scripts@check@math@fontcmd
      \@@uline@get@scripts@lx\@@uline@get@scripts@ly}
\def\@@uline@get@scripts@lx#1#2{%
   \@ifnextchar^%
      {\@@@uline@get@scripts@lu{#1{#2}}}%
      {\@ifnextchar'%
         {\@@uline@get@scripts@primes{\@@@uline@get@scripts@lu{#1{#2}}}}%
         {\@@@uline@get@scripts{#1{#2}}{}}}}
\def\@@uline@get@scripts@ly#1{%
   \@ifnextchar^%
      {\@@@uline@get@scripts@lu{#1}}%
      {\@ifnextchar'%
          {\@@uline@get@scripts@primes{\@@@uline@get@scripts@lu{#1}}}%
          {\@@@uline@get@scripts{#1}{}}}}
\def\@@@uline@get@scripts@ul#1#2{% #2: _ or \sb
   \@uline@get@scripts@check@math@fontcmd
      {\@@uline@get@scripts@ulx{#1}}{\@@uline@get@scripts@uly{#1}}}
\def\@@uline@get@scripts@ulx#1#2#3{%
   \@@@uline@get@scripts{#2{#3}}{#1}}
\def\@@uline@get@scripts@uly#1#2{\@@@uline@get@scripts{#2}{#1}}
\def\@@@uline@get@scripts@lu#1#2{% #2: ^ or \sp
   \@uline@get@scripts@check@math@fontcmd
      {\@@uline@get@scripts@lux{#1}}{\@@uline@get@scripts@luy{#1}}}
\def\@@uline@get@scripts@lux#1#2#3{\@@@uline@get@scripts{#1}{#2{#3}}}
\def\@@uline@get@scripts@luy#1#2{\@@@uline@get@scripts{#1}{#2}}
\def\@@@uline@get@scripts#1#2{%
   \def\@tempa{#1}%
   \def\@tempb{#2}%
   \ifx\@tempa\@empty
      \ifx\@tempb\@empty \def\@@uline@get@scripts@limits{}%
      \else              \def\@@uline@get@scripts@limits{^{#2}}%
      \fi
   \else
      \ifx\@tempb\@empty \def\@@uline@get@scripts@limits{_{#1}}%
      \else              \def\@@uline@get@scripts@limits{_{#1}^{#2}}%
      \fi
   \fi
   \@uline@get@scripts@cmd\@@uline@get@scripts@limits}
\newif\if@uline@check@math@fontcmd@tempsw
\let\@uline@get@scripts@saved@protect\@empty
\def\@uline@get@scripts@check@math@fontcmd#1#2#3{%
   \def\@tempa{#3}%
   \def\@tempb{\protect}%
   \ifx\@tempa\@tempb
      \def\@uline@get@scripts@saved@protect{\protect}%
      \def\@uline@get@scripts@next{%
         \@uline@get@scripts@check@math@fontcmd{#1}{#2}}%
   \else
      \@uline@check@math@fontcmd{#3}%
      \if@uline@check@math@fontcmd@tempsw \def\@tempa{#1}%
      \else                               \def\@tempa{#2}%
      \fi
      \expandafter\def\expandafter\@tempb\expandafter{%
         \expandafter{\@uline@get@scripts@saved@protect#3}}%
      \@csc@t\@uline@get@scripts@next\@tempa\@tempb
      \let\@uline@get@scripts@saved@protect\@empty
   \fi
   \@uline@get@scripts@next}
\def\@uline@x@get@scripts#1{%
   \def\@uline@get@scripts@cmd{%
      \@csc@t\@@uline@get@scripts@limits
         \@uline@get@scripts@limitctrl\@@uline@get@scripts@limits
      #1}%
   \let\@uline@get@scripts@limitctrl\@empty
   \@uline@x@get@scripts@}
\def\@uline@x@get@scripts@{\futurelet\@let@token\@uline@x@get@scripts@@}
\def\@uline@x@get@scripts@@{%
   \def\@tempa##1{\@uline@x@get@scripts@}%
   \def\@uline@x@get@scripts@next{\@uline@x@get@scripts@@@}%
   \def\@tempb{\@tfor\@tempb:=}%
   \expandafter\@tempb\@uline@x@get@scripts@checklist\do{%
      \expandafter\ifx\@tempb\@let@token
         \let\@uline@x@get@scripts@next\@tempa
         \@uline@append@replacement@text\@uline@get@scripts@limitctrl\@tempb
      \fi}%
   \@uline@x@get@scripts@next}
\def\@uline@x@get@scripts@checklist{\limits\displaylimits\nolimits}
\def\@uline@x@get@scripts@@@{%
   \@ifnextchar^\@@uline@get@scripts@u\@@uline@get@scripts@x}
\def\@uline@check@math@fontcmd#1{%
   \def\@tempa{#1}%
   \ifx\@tempa\@empty\else
      \expandafter\def\expandafter\@tempa\expandafter{\@firstofone#1}%
   \fi
   \def\@tempx##1##2\@nil{\noexpand##1}%
   \edef\@tempb{\@tempx#1\@empty\@nil}%
   \@uline@check@math@fontcmd@tempswfalse
   \ifx\@tempa\@tempb
      \if\expandafter\noexpand\@tempb\relax
         \edef\@tempc{\expandafter\expandafter\expandafter\@gobble
            \expandafter\string\@tempb}%
         \edef\@tempc{\@tempc\space}%
         \edef\@tempc{\expandafter\zap@space\@tempc\@empty}%
         \expandafter\ifx\csname \@tempc\space\endcsname\relax
            \expandafter\ifx\csname @\@tempc\endcsname\relax
               %%% for older version of LaTeX2e
               \ifx\@uline@get@scripts@saved@protect\@empty
                  \let\@tempc\@empty
               \fi
            \else
               \edef\@tempc{@\@tempc}%
            \fi
         \else
            \edef\@tempx{\expandafter\@gobble\string\mathrm}%
            \ifx\@tempx\@tempc \@uline@check@math@fontcmd@tempswtrue \fi
            \edef\@tempx{\expandafter\@gobble\string\mathbf}%
            \ifx\@tempx\@tempc \@uline@check@math@fontcmd@tempswtrue \fi
            \edef\@tempc{\@tempc\space}%
         \fi
         \ifx\@tempc\@empty\else
            \edef\@tempa{\noexpand\in@
               {\string\select@group}%
               {\expandafter\meaning\csname\@tempc\endcsname}}%
            \@tempa
            \ifin@
               \@uline@check@math@fontcmd@tempswtrue
            \else
               \edef\@tempa{\noexpand\in@
                  {\string\use@mathgroup}%
                  {\expandafter\meaning\csname\@tempc\endcsname}}%
               \@tempa
               \ifin@ \@uline@check@math@fontcmd@tempswtrue \fi
            \fi
            \if@uline@check@math@fontcmd@tempsw\else
               \edef\@tempa{\noexpand\in@
                  {\string\nfss@text}%
                  {\expandafter\meaning\csname\@tempc\endcsname}}%
               \@tempa
               \ifin@
                  \@uline@check@math@fontcmd@tempswtrue
               \else
                  \edef\@tempa{\expandafter\@gobble\string\text\space}%
                  \ifx\@tempa\@tempc \@uline@check@math@fontcmd@tempswtrue \fi
               \fi
            \fi
         \fi
      \fi
   \fi}
%
%%% math
\def\@uline@parse@math#1{%%% #1: math formula
   \begingroup
   \global\@migrate@italiccorrfalse
   \@uline@parse@math@set@math@glue
   \let\@uline@mathlist\@empty
   \let\@uline@parse@math@previtem\@empty
   \let\@uline@saved@protect\@empty
   \def\@uline@curr@mathgroup{}%
   \def\@uline@curr@mathstyle{}%
   \def\@uline@curr@math@itemtype{0}%
   \def\@uline@curr@math@item{}%
   \let\@uline@math@item@command\@empty
   \let\@uline@math@item@command@stack\@empty
   \let\@uline@examine@cs@default\relax
   \let\@@uline\@uline@parse@math@
   \let\@uline@add@special@item@\@uline@add@special@item@@in@math
   \let\@uline@add@special@item@asjchar@\@uline@add@special@item@asjchar@@in@math
   \let\@uline@add@nonletter@\@uline@add@nonletter@@in@math
   \let\@uline@accent\@uline@accent@in@math
   \let\@uline@textcommand\@uline@textcommand@in@math
   \let\@uline@textcommandwithoption\@uline@textcommandwithoption@in@math
   \def\@uline@skipandeval{\@uline@skip[0][]}%
   \let\@uline@remove@last@italiccorr\relax
   \let\@uline@pkgtextcolor@\@uline@pkgtextcolor@@in@math
   \let\@uline@highlight@\@uline@highlight@@in@math
   \let\@uline@primitivechar@\@uline@primitivechar@@in@math
   \let\@uline@space@\@uline@space@@in@math
   \let\@uline@kern@\@uline@kern@@in@math
   \let\@uline@leaders@getglue@@@\@uline@leaders@getglue@@@@in@math
   \let\@uline@Newline\@uline@Newline@in@math
   \let\@uline@newline@@\@uline@newline@@@in@math
   \let\@uline@newline@@@\@uline@newline@@@@in@math
   \let\@uline@letterlike@\@uline@letterlike@@in@math
   \let\@uline@highlight@put@phantom\@uline@highlight@put@phantom@in@math
   \@uline@check@toplevel@frac{#1}%
   \if@tempswa
      \def\@uline@mathlist{\@uline@math@elt{0}{}{#1}}%
      \expandafter\remove@to@nnil
   \fi
   \@uline@parse@math@#1\@nnil
   \edef\@uline@templist@end{%
      \ifdim\mathsurround=\z@\else
         \noexpand\@uline@math@space{\the\mathsurround}%
      \fi}%
   \def\@uline@templist{\@uline@add@nonletter{\begingroup}}%
   \@uline@append@replacement@text\@uline@templist\@uline@templist@end
   \let\@uline@curr@item\@empty
   \def\@uline@last@itemtype{-1}%
   \def\@uline@last@fam{}%
   \@uline@omit@math@penaltyfalse
   \@uline@mathlist
   \@uline@flush@math@item
   \@uline@append@replacement@text\@uline@templist\@uline@templist@end
   \@uline@append@tokens\@uline@templist{\@uline@add@nonletter{\endgroup}}%
   \expandafter\endgroup\@uline@templist\@empty}
\edef\@uline@frac@list{%
   \noexpand\primfrac\expandafter\noexpand\csname primfrac \endcsname
   \noexpand\over\noexpand\above\noexpand\atop
   \noexpand\overwithdelims\noexpand\abovewithdelims\noexpand\atopwithdelims
   \noexpand\choose\noexpand\brack\noexpand\brace}
\def\@uline@check@toplevel@frac#1{%
   \@tempswafalse
   \def\@tempa{\@tfor\@tempa:=}%
   \expandafter\@tempa\@uline@frac@list\do{%
      \def\@tempb{\def\@tempb####1}%
      \expandafter\@tempb\@tempa##2\@nil{\def\@tempb{##2}}%
      \def\@tempc{\@tempb#1}%
      \expandafter\@tempc\@tempa\@nil
      \ifx\@tempb\@empty\else
         \@tempswatrue
         \@break@tfor
      \fi}}
\def\@uline@parse@math@{\futurelet\let@token\@uline@parse@math@@}
\def\@uline@parse@math@@{%
   \def\@tempa{\@uline@parse@math@checktoken}%
   \ifx\let@token\@nnil
      \ifx\@uline@parse@math@previtem\@empty\else
         \def\@tempa##1##2##3##4{%
            \toks@{##4}%
            \count@##2\relax
            \ifnum\count@=\tw@ \count@\z@ \fi
            \edef\@tempa{%
               \noexpand\@uline@math@elt{\the\count@}{##3}{\the\toks@}}}%
         \expandafter\@tempa\@uline@parse@math@previtem
         \@uline@append@replacement@text\@uline@mathlist\@tempa
      \fi
      \def\@tempa{\@gobble}%
   \else
      \ifx      \let@token\@sptoken \let\@tempa\@uline@parse@math@space
      \else \ifx\let@token\bgroup   \let\@tempa\@uline@parse@math@bgroup
      \fi\fi
   \fi
   \@tempa}
\begingroup
\def\:{\def\@uline@parse@math@space}
\expandafter\endgroup\: {\@uline@parse@math@}
\def\@uline@parse@math@bgroup#1{%
   \@uline@parse@math@append@item\z@{\@uline@curr@mathgroup}{{#1}}%
   \@uline@parse@math@}
\def\@uline@parse@math@append@item#1#2#3{%
   \ifx\@uline@parse@math@previtem\@empty\else
      \@uline@append@replacement@text\@uline@mathlist\@uline@parse@math@previtem
   \fi
   \@uline@parse@math@append@item@{#1}{#3}%
   \ifx\@uline@math@item@command\@empty\else
      \@temptokena\expandafter{\@uline@math@item@command}%
   \fi
   \edef\@uline@parse@math@previtem{%
      \noexpand\@uline@math@elt{\number#1}{#2}%
      {\ifx\@uline@math@item@command\@empty \the\toks@
       \else                                \the\@temptokena{\the\toks@}%
       \fi}}%
   \let\@uline@saved@protect\@empty}
\def\@uline@parse@math@append@item@@#1#2{%
   \toks@\expandafter{\@uline@saved@protect#2}}
\def\@uline@parse@math@append@item@{\@uline@parse@math@append@item@@}
\def\@uline@parse@math@append@item@with@phantom#1#2{%
   \ifnum#1>7
      \toks@\expandafter{\@uline@saved@protect#2}%
   \else
      \toks@\expandafter{%
         \expandafter\phantom\expandafter{\@uline@saved@protect#2}}%
   \fi}
\def\@uline@parse@math@checktoken#1{%
   \def\@uline@next{\@uline@parse@math@}%
   \def\@tempa{#1}%
   \let\@tempb\@tempa
   \@onelevel@sanitize\@tempb
   \edef\@tempc{\expandafter\@car\@tempb\@empty\@nil}%
   \edef\@tempb{\expandafter\@cdr\@tempb\@empty\@nil}%
   \ifx\@tempb\@empty
      \edef\@tempc{\@uline@charcode=`\@tempc\relax}\@tempc
      \ifnum\@uline@charcode<\@cclvi
         \ifnum\@uline@charcode=`\'\relax
            \@uline@parse@math@prepare@next{0}{{}}{'}%
         \else
            \ifnum\@uline@charcode=`\^\relax
               \@uline@parse@math@prepare@next{0}{{}}{^}%
            \else
               \ifnum\@uline@charcode=`\_\relax
                  \@uline@parse@math@prepare@next{0}{{}}{_}%
               \else
                  \@tempcnta\mathcode\@uline@charcode
                  \divide\@tempcnta 4096\relax
                  \ifnum 7<\@tempcnta
                     \begingroup
                     \lccode`\~=\@uline@charcode
                     \lowercase{\expandafter\endgroup
                        \expandafter\def\expandafter\@uline@next
                        \expandafter{\expandafter\@uline@parse@math@~}}%
                  \else
                     \ifnum 6<\@tempcnta \@tempcnta\z@ \fi
                     \expandafter\@uline@parse@math@prepare@next
                        \expandafter{\the\@tempcnta}{#1}{}%
                  \fi
               \fi
            \fi
         \fi
      \else
         \@uline@parse@math@prepare@next{0}{#1}{}%
      \fi
   \else
      \let\@uline@next\@empty
      \@uline@examine@cs
      \@uline@examine@mathcs
   \fi
   \@uline@next}
\def\@uline@parse@math@prepare@next#1#2#3{%
   \def\@uline@curr@math@itemtype{#1}%
   \def\@uline@curr@math@item{#2}%
   \ifnum#1=\@ne
      \def\@uline@next{\@uline@x@get@scripts\@uline@add@math@item#3}%
   \else
      \def\@uline@next{\@uline@get@scripts\@uline@add@math@item#3}%
   \fi}
\def\@uline@examine@mathcs{%
   \edef\@tempb{\expandafter\meaning\@tempa}%
   \edef\@tempx{\@tempb\@uline@keyword@mathchar@}%
   \def\@tempy{\def\@tempy####1}%
   \expandafter\@tempy\@uline@keyword@mathchar@##2\@nil{%
      \def\@tempx{##1}\def\@tempy{##2}}%
   \expandafter\@tempy\@tempx\@nil
   \ifx\@tempx\@empty
      \def\@tempb{\mathchar}%
      \ifx\@tempa\@tempb
         \def\@uline@next{\@uline@math@mathchar\mathchar}%
      \else
         \afterassignment\remove@to@nnil
         \count@\@tempy\relax\@nnil
         \divide\count@ 4096\relax
         \ifnum 6<\count@ \count@\z@ \fi
         \edef\@tempb{{\the\count@}{\expandafter\noexpand\@tempa}{}}%
         \expandafter\@uline@parse@math@prepare@next\@tempb
      \fi
   \else
      \edef\@tempx{\expandafter\strip@prefix\@tempb>>%
         \@uline@keyword@qopname@}%
      \def\@tempy{\def\@tempy####1}%
      \expandafter\@tempy\@uline@keyword@qopname@##2\@nil{%
         \def\@tempx{##1}\def\@tempy{##2}}%
      \expandafter\@tempy\@tempx\@nil
      \ifx\@tempx\@empty
         \edef\@uline@next{%
            \noexpand\@uline@math@mathop\expandafter\noexpand\@tempa}%
      \else
         \edef\@tempx{\expandafter\strip@prefix\@tempb>>%
            \@uline@keyword@delimiter@}%
         \def\@tempy{\def\@tempy####1}%
         \expandafter\@tempy\@uline@keyword@delimiter@##2\@nil{%
            \def\@tempx{##1}\def\@tempy{##2}}%
         \expandafter\@tempy\@tempx\@nil
         \ifx\@tempx\@empty
            \edef\@uline@next{%
               \noexpand\@uline@math@expandit\expandafter\noexpand\@tempa}%
         \else
            \@uline@examine@mathcs@general
         \fi
      \fi
   \fi}%
\def\@uline@examine@mathcs@general{%
   \def\@tempb{\{}%
   \ifx\@tempa\@tempb
      \@uline@parse@math@prepare@next{4}{\{}{}%
   \else
      \def\@tempb{\}}%
      \ifx\@tempa\@tempb
         \@uline@parse@math@prepare@next{5}{\}}{}%
      \else
         \def\@tempb{\*}%
         \ifx\@tempa\@tempb
            \let\@uline@saved@protect\@empty
            \edef\@tempb{\*}%
            \edef\@uline@next{\noexpand\@uline@parse@math@\@tempb}%
         \else
            \def\@tempb{\def\@tempb####1[}%
            \expandafter\@tempb\@tempa##2]##3\@nil{\def\@tempb{##2}}%
            \expandafter\def\expandafter\@tempc\expandafter{%
               \expandafter[\@tempa{}]}%
            \expandafter\expandafter\expandafter\@tempb
               \expandafter\@uline@extra@math@commands\@tempc\@nil
            \ifx\@tempb\@empty
               \begingroup
               \let\@uline@get@scripts@saved@protect\@uline@saved@protect
               \expandafter\@uline@check@math@fontcmd\@tempa
               \edef\@tempa{%
                  \endgroup
                  \if@uline@check@math@fontcmd@tempsw
                     \let\noexpand\@tempb\relax
                  \fi}%
               \@tempa
               \ifx\@tempb\relax
                  \edef\@uline@next{%
                     \noexpand\@uline@math@normal[1][]%
                     \expandafter\noexpand\@tempa}%
               \else
                  \expandafter\if\expandafter\noexpand\@tempa^\relax
                     \@uline@parse@math@prepare@next{0}{{}}{^}%
                  \else
                     \expandafter\if\expandafter\noexpand\@tempa_\relax
                        \@uline@parse@math@prepare@next{0}{{}}{_}%
                     \fi
                  \fi
                  \ifx\@uline@next\@empty
                     \def\@tempb{\@uline@parse@math@prepare@next{0}}%
                     \expandafter\@tempb\expandafter{\@tempa}{}%
                  \fi
               \fi
            \else
               \edef\@uline@next{%
                  \expandafter\noexpand
                     \csname
                         @uline@math@%
                         \expandafter\@uline@extract@command\@tempb
                     \endcsname
                  \expandafter\noexpand\@tempa}%
            \fi
         \fi
      \fi
   \fi}
\edef\@uline@keyword@mathchar@{\string\mathchar}
\edef\@uline@keyword@qopname@{\string\qopname}
\edef\@uline@keyword@delimiter@{\string\delimiter}
\def\@uline@add@math@item#1{%%% #1: \@@uline@get@scripts@limits
   \@csc@t\@tempa\@uline@curr@math@item\@@uline@get@scripts@limits
   \ifx\@uline@curr@mathstyle\@empty\else
      \@csc@t\@tempa\@uline@curr@mathstyle\@tempa
      \expandafter\def\expandafter\@tempa\expandafter{\expandafter{\@tempa}}%
   \fi
   \ifx\@uline@parse@math@previtem\@empty
      \ifnum\@uline@curr@math@itemtype=\tw@
         \def\@uline@curr@math@itemtype{0}%
      \fi
   \fi
   \toks@\expandafter{\@tempa}%
   \edef\@tempa{{\@uline@curr@math@itemtype}{\@uline@curr@mathgroup}{\the\toks@}}%
   \expandafter\@uline@parse@math@append@item\@tempa
   \@uline@parse@math@}
\def\@uline@add@item@in@math#1{%
   \def\@uline@add@item@in@math@tempa{\@uline@parse@math@append@item{0}{}}%
   \expandafter\def\expandafter\@uline@add@item@in@math@tempb\expandafter{%
      \expandafter{\expandafter\hbox\expandafter{\@uline@saved@protect#1}}}%
   \let\@uline@saved@protect\@empty
   \expandafter\@uline@add@item@in@math@tempa\@uline@add@item@in@math@tempb}
\def\@uline@add@nonletter@in@math@#1{%
   \@uline@parse@math@append@item{\@uline@id@NONMATHITEM}{}{#1}}
\def\@uline@add@special@item@@in@math#1#2{\@uline@add@item@in@math{#2}}
\def\@uline@add@special@item@asjchar@@in@math#1#2{\@uline@add@item@in@math{#2}}
\def\@uline@add@nonletter@@in@math#1#2#3{\@uline@add@nonletter@in@math@{#3}}
\def\@uline@accent@in@math#1#2{%
   \def\@tempa{#2}%
   \def\@tempb{\@nnil}%
   \ifx\@tempa\@tempb
      \setbox\z@\hbox{$#1{}$}%%% produce error message
      \@uline@add@item@in@math{#1{}}%
      \def\@uline@next{\@uline@parse@math@\@nnil}%
   \else
      \setbox\z@\hbox{$#1{#2}$}%%% produce error message
      \@uline@add@item@in@math{#1{#2}}%
      \def\@uline@next{\@uline@parse@math@}%
   \fi
   \@uline@next}
\def\@uline@textcommand@in@math#1#2{%
   \def\@uline@curr@math@itemtype{0}%
   \expandafter\def\expandafter\@uline@curr@math@item\expandafter{%
      \expandafter{\@uline@saved@protect#1{#2}}}%
   \let\@uline@saved@protect\@empty
   \@uline@get@scripts\@uline@add@math@item}
\def\@uline@textcommandwithoption@in@math#1{%
   \@testopt{\@uline@textcommandwithoption@in@math@{#1}}{}}
\def\@uline@textcommandwithoption@in@math@#1[#2]#3{%
   \def\@uline@curr@math@itemtype{0}%
   \expandafter\def\expandafter\@uline@curr@math@item\expandafter{%
      \expandafter{\@uline@saved@protect#1[{#2}]{\hbox{$#3$}}}}%
   \let\@uline@saved@protect\@empty
   \@uline@get@scripts\@uline@add@math@item}
\def\@uline@pkgtextcolor@@in@math#1#2#3{%
   \def\@uline@curr@math@itemtype{0}%
   \expandafter\def\expandafter\@uline@curr@math@item\expandafter{%
      \expandafter{\@uline@saved@protect\textcolor#1{#2}{#3}}}%
   \let\@uline@saved@protect\@empty
   \@uline@get@scripts\@uline@add@math@item}
\def\@uline@highlight@@in@math#1#2#3{%
   \@uline@add@nonletter@in@math@{\begingroup}%
   \@uline@highlight@@#1\@nil{#2}%
   \edef\@tempa{%
      \noexpand\@uline@parse@math@append@item
      {\@uline@id@SPECIALITEM}{}{\noexpand\@uline@setcolor{}{\@uline@colorarg}}}%
   \@csc@t\@uline@highlight@cmdstack
      \@uline@parse@math@append@item@\@uline@highlight@cmdstack
   \@tempa
   \@uline@tempa
   \@uline@parse@math@#3%
   \@uline@execit{%
      \@uline@highlight@pop@cmdstack
      \@uline@add@nonletter@in@math@{\endgroup}}}
\let\@uline@highlight@cmdstack\@empty
\def\@uline@highlight@put@phantom@in@math{%
   \def\@uline@parse@math@append@item@{%
       \@uline@parse@math@append@item@with@phantom}}
\def\@uline@highlight@pop@cmdstack{%
   \ifx\@uline@highlight@cmdstack\@empty
      \def\@uline@parse@math@append@item@{\@uline@parse@math@append@item@@}%
   \else
      \def\@tempa##1##2\@nil{%
         \def\@uline@parse@math@append@item@{##1}%
         \def\@uline@highlight@cmdstack{##2}}%
      \expandafter\@tempa\@uline@highlight@cmdstack\@nil
   \fi}
\def\@uline@primitivechar@@in@math{%
   \def\@nnil{\@nil}%
   \ifnum\count@<\@cclvi
      \@tempcnta\mathcode\count@
      \divide\@tempcnta 4096\relax
      \ifnum 6<\@tempcnta \@tempcnta\z@ \fi
      \edef\@uline@curr@math@itemtype{\the\@tempcnta}%
      \edef\@uline@curr@math@item{{\char\the\count@}}%
   \else
      \def\@uline@curr@math@itemtype{0}%
      \edef\@uline@curr@math@item{{\char\the\count@}}%
   \fi
   \let\@uline@saved@protect\@empty
   \@uline@get@scripts\@uline@add@math@item}
\def\@uline@space@@in@math{%
   \let\@uline@saved@protect\@empty
   \edef\@tempa{\noexpand\@uline@parse@math@append@item
      {\@uline@id@GLUE}{}{\@uline@currspace}}%
   \@tempa
   \@uline@parse@math@}
\def\@uline@kern@@in@math{%
   \def\@nnil{\@nil}%
   \edef\@tempa{\noexpand\@uline@parse@math@append@item
      {\@uline@id@GLUE}{}{\the\dimen@}}%
   \@tempa
   \@uline@parse@math@}
\def\@uline@leaders@getglue@@@@in@math{%
   \def\@nnil{\@nil}%
   \toks@\expandafter{\@uline@curr@leader@box}%
   \edef\@tempa{%
      \noexpand\@uline@parse@math@append@item{\@uline@id@NONMATHITEM}{}%
         {\noexpand\@uline@leaders
            {\@uline@curr@leader@cmd \the\toks@}%
            {\@uline@leaders@glue}}}%
   \@tempa
   \@uline@parse@math@}
\def\@uline@Newline@in@math#1{%
   \@uline@parse@math@append@item{\@uline@id@SPECIALITEM}{}{#1}%
   \@uline@parse@math@}
\def\@uline@newline@@@in@math#1[#2]{%
   \@uline@parse@math@append@item{\@uline@id@SPECIALITEM}{}{#1[#2]}%
   \@ifnextchar[\@uline@parse@math@\@uline@parse@math@}
\def\@uline@newline@@@@in@math#1{%
   \@uline@parse@math@append@item{\@uline@id@SPECIALITEM}{}{#1}%
   \@uline@parse@math@}
\def\@uline@letterlike@@in@math#1#2{%
   \@uline@add@item@in@math{#2}%
   \@uline@parse@math@}
\def\@uline@parse@math@set@math@glue{%
   \begingroup
   \let\@uline@setspace@check@unit\@uline@setspace@check@mathunit
   \check@mathfonts
   \dimen@\fontdimen6\textfont2 \divide\dimen@ 18\relax
   \edef\@uline@mufactor{\strip@pt\dimen@}%
   \@uline@parse@math@set@math@glue@\@uline@abs@thinmuskip\thinmuskip
   \@uline@parse@math@set@math@glue@\@uline@abs@medmuskip\medmuskip
   \@uline@parse@math@set@math@glue@\@uline@abs@thickmuskip\thickmuskip
   \edef\@tempa{%
      \def\noexpand\@uline@mufactor{\@uline@mufactor}%
      \def\noexpand\@uline@abs@thinmuskip{\@uline@abs@thinmuskip}%
      \def\noexpand\@uline@abs@medmuskip{\@uline@abs@medmuskip}%
      \def\noexpand\@uline@abs@thickmuskip{\@uline@abs@thickmuskip}}%
   \expandafter\endgroup\@tempa}
\def\@uline@parse@math@set@math@glue@#1#2{%
   \edef\@tempa{\the#2\space}%
   \expandafter\@uline@setspace@\@tempa @ @ @ @ \@nil
   \expandafter\@uline@setspace@check@mathunit@\@uline@natural@size\relax
   \@tempdima\@uline@mufactor\dimen@
   \edef#1{%
      \the\@tempdima\space
      \@plus\space\strip@pt\@tempdimb\@uline@stretch@unit\space
      \@minus\space\strip@pt\@tempdimc\@uline@shrink@unit}}
\def\@uline@setspace@check@mathunit#1#2#3{%
   \edef\@uline@setspace@check@unit@tempa{%
      \noexpand\@uline@setspace@check@unit@#3\@uline@keyword@fil}%
   \@uline@setspace@check@unit@tempa\@nil
   \ifx\@uline@setspace@check@unit@tempb\@empty
      \@uline@setspace@check@mathunit@#3\relax
      #1\@uline@mufactor\dimen@
   \else
      #1\@uline@setspace@check@unit@tempa\p@
      \edef#2{\expandafter\@uline@setspace@check@unit@@
         \@uline@setspace@check@unit@tempb\@nil}%
   \fi}
\begingroup
\catcode`M=12 \catcode`U=12
\lowercase{\endgroup
   \def\@uline@setspace@check@mathunit@#1MU#2\relax{\dimen@#1\p@}}
\newif\if@uline@omit@math@penalty
\def\@uline@math@elt#1#2#3{%%% #1: class id, #2: \fam, #3: item
   \let\@uline@curr@math@glue\@empty
   \def\@uline@curr@itemtype{#1}%
   \ifcase#1\relax %%% case 0: \mathord
      \def\@uline@curr@fam{#2}%
      \ifx\@uline@last@fam\@uline@curr@fam\else
         \@uline@flush@math@item
         \let\@uline@last@fam\@uline@curr@fam
      \fi
      \ifcase\@uline@last@itemtype\relax
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@medmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thickmuskip
      \or \or
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \fi
   \or   %%% case 1: \mathop
      \ifcase\@uline@last@itemtype\relax
          \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@medmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thickmuskip
      \or
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \fi
   \or   %%% case 2: \mathbin
      \ifcase\@uline@last@itemtype\relax
          \let\@uline@curr@math@glue\@uline@abs@medmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
          \def\@uline@curr@itemtype{0}%
      \or \let\@uline@curr@math@glue\@uline@abs@medmuskip
          \def\@uline@curr@itemtype{0}%
      \or \let\@uline@curr@math@glue\@uline@abs@thickmuskip
          \def\@uline@curr@itemtype{0}%
      \or \def\@uline@curr@itemtype{0}%
      \or \let\@uline@curr@math@glue\@uline@abs@medmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
          \def\@uline@curr@itemtype{0}%
      \or \let\@uline@curr@math@glue\@uline@abs@medmuskip
      \fi
   \or   %%% case 3: \mathrel
      \ifcase\@uline@last@itemtype\relax
          \let\@uline@curr@math@glue\@uline@abs@thickmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thickmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thickmuskip
          \def\@uline@last@itemtype{0}%
      \or \or
      \or \let\@uline@curr@math@glue\@uline@abs@thickmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thickmuskip
      \fi
   \or   %%% case 4: \mathopen
      \ifcase\@uline@last@itemtype\relax
      \or
      \or \let\@uline@curr@math@glue\@uline@abs@medmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thickmuskip
      \or \or
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thickmuskip
      \fi
   \or   %%% case 5: \mathclose
      \ifcase\@uline@last@itemtype\relax
      \or \or \def\@uline@last@itemtype{0}%
      \or \or \or
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or
      \fi
   \or   %%% case 6: \mathpunct
      \ifcase\@uline@last@itemtype\relax
      \or \or \def\@uline@last@itemtype{0}%
      \or \or \or
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \fi
   \or   %%% case 7: \mathinner
      \ifcase\@uline@last@itemtype\relax
          \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@medmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thickmuskip
      \or
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thinmuskip
      \or \let\@uline@curr@math@glue\@uline@abs@thickmuskip
      \fi
   \or   %%% case 8: glue
      \@uline@flush@math@item
      \if@uline@omit@math@penalty\else
         \edef\@tempa{%
            \noexpand\@uline@add@nonletter{\penalty
               \ifcase\@uline@last@itemtype\space 10000%
               \or   10000%
               \or   \the\binoppenalty
               \or   \the\relpenalty
               \else 10000%
               \fi
               \space}}%
         \@uline@append@replacement@text\@uline@templist\@tempa
      \fi
      \@uline@omit@math@penaltytrue
      \@uline@append@tokens\@uline@templist{\@uline@math@space{#3}}%
      \expandafter\@gobbletwo
   \or   %%% case 9: non-math item
      \@uline@flush@math@item
      \def\@tempa##1\penalty{\afterassignment\remove@to@nnil\count@=}%
      \@tempa#3\penalty\z@\@nnil
      \ifnum\count@<\@M
         \def\@tempa##1\nolinebreak##2\@nil{\def\@tempa{##1}\def\@tempb{##2}}%
         \@tempa#3\nolinebreak\@nil
         \ifx\@tempb\@empty\else
            \def\@tempa{\kernel@ifnextchar[\@tempc{\@tempc[4]}}%
            \def\@tempc[##1]{\afterassignment\remove@to@nnil\count@=0##1\relax}%
            \expandafter\@tempa\@tempb\relax\@nnil
            \ifnum\count@>\thr@@
               \@uline@omit@math@penaltytrue
            \fi
         \fi
      \else
         \@uline@omit@math@penaltytrue
      \fi
      \@uline@append@tokens\@uline@templist{\@uline@add@nonletter{#3}}%
      \expandafter\@gobbletwo
   \else %%% case 10: non-math item, placed *after* following glue items
      \@uline@flush@math@item
      \@uline@append@tokens\@uline@templist{\@uline@place@after@glue{#3}}%
      \expandafter\@gobbletwo
   \fi
   \@uline@math@elt@{#3}}
\def\@uline@id@GLUE{8}
\def\@uline@id@NONMATHITEM{9}
\def\@uline@id@SPECIALITEM{10}
\def\@uline@math@elt@#1{%
   \ifx\@uline@curr@math@glue\@empty
      \@uline@append@tokens\@uline@curr@item{#1}%
   \else
      \@uline@flush@math@item
      \edef\@tempa{%
         \ifcase\@uline@last@itemtype\space 10000%
         \or   10000%
         \or   \the\binoppenalty
         \or   \the\relpenalty
         \else 10000%
         \fi}%
      \edef\@tempa{%
         \if@uline@omit@math@penalty\else
            \noexpand\@uline@add@nonletter{\penalty\@tempa\space}%
         \fi
         \noexpand\@uline@math@space{\@uline@curr@math@glue}}%
      \@uline@append@replacement@text\@uline@templist\@tempa
      \def\@uline@curr@item{#1}%
   \fi
   \@uline@omit@math@penaltyfalse
   \let\@uline@last@itemtype\@uline@curr@itemtype}
\def\@uline@flush@math@item{%
   \ifx\@uline@curr@item\@empty\else
      \toks@\expandafter{\@uline@curr@item}%
      \edef\@tempa{%
         \noexpand\@uline@add@special@item{%
            \m@th
            $\ifx\@uline@last@fam\@empty\else \fam=\@uline@last@fam\relax \fi
            \the\toks@$}}%
      \@uline@append@replacement@text\@uline@templist\@tempa
      \let\@uline@curr@item\@empty
   \fi}
\def\@uline@place@after@glue#1#2{%
   \def\@uline@place@after@glue@curr@item{#1}%
   \def\@uline@next{\@uline@place@after@glue@#2}%
   \def\@tempa{#2}%
   \def\@tempb{\@uline@math@space}%
   \ifx\@tempa\@tempb
      \def\@uline@next{\@uline@place@after@glue@@}%
   \else
      \def\@tempb{\@uline@add@nonletter}%
      \ifx\@tempa\@tempb
         \def\@uline@next{\@uline@place@after@glue@check@nonletter}%
      \else
         \def\@tempb{\@uline@place@after@glue}%
         \ifx\@tempa\@tempb
            \def\@uline@next{\@uline@place@after@glue@collect}%
         \fi
      \fi
   \fi
   \@uline@next}
\def\@uline@place@after@glue@collect#1{%
   \expandafter\@uline@place@after@glue\expandafter{%
      \@uline@place@after@glue@curr@item#1}}
\def\@uline@place@after@glue@{%
   \expandafter\@uline@add@nonletter
      \expandafter{\@uline@place@after@glue@curr@item}}
\def\@uline@place@after@glue@@#1{%
   \@uline@math@space{#1}%
   \expandafter\@uline@place@after@glue
      \expandafter{\@uline@place@after@glue@curr@item}}
\def\@uline@place@after@glue@check@nonletter#1{%
   \def\@tempd{%
      \expandafter\@uline@add@nonletter\expandafter{%
         \@uline@place@after@glue@curr@item #1}}%
   \def\@tempa##1\penalty##2\@nil{\def\@tempb{##1}\def\@tempc{##2}}%
   \@tempa#1\penalty\@nil
   \ifx\@tempb\@empty
      \expandafter\@tempa\@tempc\@nil
      \ifx\@tempc\@empty
         \@uline@add@nonletter{#1}%
         \def\@tempd{%
            \expandafter\@uline@place@after@glue\expandafter{%
               \@uline@place@after@glue@curr@item}}%
      \fi
   \else
      \def\@tempb{\begingroup}%
      \def\@tempc{#1}%
      \ifx\@tempc\@tempb
         \def\@tempd{%
            \expandafter\@uline@place@after@glue\expandafter{%
               \@uline@place@after@glue@curr@item#1}}%
      \fi
   \fi
   \@tempd}
\def\@uline@math@push@item@command{%
   \expandafter\def\expandafter\@tempa\expandafter{%
      \expandafter\@elt\expandafter{\@uline@math@item@command}}%
   \@csc@t\@uline@math@item@command@stack\@tempa\@uline@math@item@command@stack}
\def\@uline@math@pop@item@command{%
   \ifx\@uline@math@item@command@stack\@empty
      \let\@uline@math@item@command\@empty
   \else
      \expandafter\@uline@math@pop@item@command@
         \@uline@math@item@command@stack\@nil
   \fi}
\def\@uline@math@pop@item@command@\@elt#1#2\@nil{%
   \def\@uline@math@item@command{#1}%
   \def\@uline@math@item@command@stack{#2}}
\def\@uline@math@take@subformula#1{%
   \let\@uline@curr@subformula\@empty
   \let\@uline@take@subformula@saved@protect\@empty
   \def\@uline@math@take@subformula@aftercmd{#1}%
   \@uline@math@take@subformula@}
\def\@uline@math@take@subformula@{%
   \futurelet\let@token\@uline@math@take@subformula@@}
\def\@uline@math@take@subformula@@{%
   \ifx     \let@token\@nnil
      \ifx\@uline@curr@subformula\@empty \def\@uline@curr@subformula{{}}\fi
      \def\@tempa{\@uline@math@take@subformula@aftercmd}%
   \else\ifx\let@token\bgroup   \def\@tempa{\@uline@math@take@subformula@bgroup}%
   \else\ifx\let@token\@sptoken \def\@tempa{\@uline@math@take@subformula@space}%
   \else                        \def\@tempa{\@uline@math@take@subformula@@@}%
   \fi\fi\fi
   \@tempa}
\def\@uline@math@take@subformula@bgroup#1{%
   \def\@uline@curr@subformula{{#1}}%
   \@uline@math@take@subformula@aftercmd}
\begingroup
\def\:{\def\@uline@math@take@subformula@space}
\expandafter\endgroup\: {\@uline@math@take@subformula@}
\def\@uline@math@take@subformula@@@#1{%
   \def\@uline@math@take@subformula@next{\@uline@math@take@subformula@}%
   \def\@tempa{#1}%
   \def\@tempb{\protect}%
   \ifx\@tempa\@tempb
      \def\@uline@take@subformula@saved@protect{\protect}%
   \else
      \ifx#1\relax\else
         \@tfor\@tempb:=\char\mathchar\delimiter\do{%
            \ifx\@tempa\@tempb
               \let\@tempb\@empty
               \@break@tfor
            \fi}%
         \ifx\@tempb\@empty
            \def\@uline@math@take@subformula@next{%
               \@uline@math@take@subformula@getcode#1}%
         \else
            \@uline@check@math@fontcmd{#1}%
            \if@uline@check@math@fontcmd@tempsw
               \def\@uline@math@take@subformula@next{%
                  \@uline@math@take@subformula@mathfont#1}%
            \else
               \def\@uline@math@take@subformula@next{%
                  \@uline@math@take@subformula@normaltoken{#1}}%
            \fi
         \fi
      \fi
   \fi
   \@uline@math@take@subformula@next}
\def\@uline@math@take@subformula@mathfont#1#2{%
   \expandafter\def\expandafter\@uline@curr@subformula\expandafter{%
      \expandafter{\@uline@take@subformula@saved@protect#1{#2}}}%
   \@uline@math@take@subformula@aftercmd}
\def\@uline@math@take@subformula@normaltoken#1{%
   \expandafter\def\expandafter\@uline@curr@subformula\expandafter{%
      \expandafter{\@uline@take@subformula@saved@protect#1}}%
   \@uline@math@take@subformula@aftercmd}
\def\@uline@math@take@subformula@getcode#1{%
   \let\@nnil\relax
   \def\@uline@curr@subformula{#1}%
   \afterassignment\@uline@math@take@subformula@getcode@
   \count@=}
\def\@uline@math@take@subformula@getcode@{%
   \def\@nnil{\@nil}%
   \edef\@uline@curr@subformula{{\@uline@curr@subformula\the\count@\space}}%
   \@uline@math@take@subformula@aftercmd}
\def\@uline@get@delim#1{%
   \def\@uline@get@delim@aftercmd{#1}%
   \let\@uline@curr@delimiter\@empty
   \let\@uline@get@delim@saved@protect\@empty
   \@uline@get@delim@}
\def\@uline@get@delim@{\futurelet\let@token\@uline@get@delim@@}
\def\@uline@get@delim@@{%
   \ifx     \let@token\@nnil
      \ifx\@uline@curr@delimiter\@empty \def\@uline@curr@delimiter{.}\fi
      \def\@tempa{\@uline@get@delim@aftercmd}%
   \else\ifx\let@token\@sptoken \def\@tempa{\@uline@get@delim@space}%
   \else\ifx\let@token\bgroup   \def\@tempa{\@uline@get@delim@@@{}}%
   \else                        \def\@tempa{\@uline@get@delim@@@}%
   \fi\fi\fi
   \@tempa}
\begingroup
\def\:{\def\@uline@get@delim@space}
\expandafter\endgroup\: {\@uline@get@delim@}
\def\@uline@get@delim@@@#1{%
   \def\@tempa{#1}%
   \def\@tempb{\protect}%
   \ifx\@tempa\@tempb
      \def\@uline@get@delim@saved@protect{\protect}%
      \def\@tempx{\@uline@get@delim@}%
   \else
      \def\@tempb{\delimiter}%
      \ifx\@tempa\@tempb
         \def\@tempx{\@uline@get@delim@get@code}%
      \else
         \ifx\@tempa\@empty
            \def\@uline@curr@delimiter{.}%
            \def\@tempx{\@uline@get@delim@aftercmd}%
         \else
            \ifx#1\relax
               \def\@tempx{\@uline@get@delim@}%
            \else
               \expandafter\def\expandafter\@uline@curr@delimiter
                  \expandafter{\@uline@get@delim@saved@protect#1}%
               \def\@tempx{\@uline@get@delim@aftercmd}%
            \fi
         \fi
      \fi
   \fi
   \@tempx}
\def\@uline@get@delim@get@code{%
   \let\@nnil\relax
   \afterassignment\@uline@get@delim@get@code@
   \count@=}
\def\@uline@get@delim@get@code@{%
   \def\@nnil{\@nil}%
   \edef\@uline@curr@delimiter{\delimiter\the\count@\space}%
   \@uline@get@delim@aftercmd}
\def\@uline@parse@math@continue#1#2{%
   \def\@uline@curr@math@itemtype{#1}%
   \def\@uline@curr@math@item{#2}%
   \@uline@get@scripts\@uline@add@math@item}
\let\@uline@math@expandit\@uline@expandit
\def\@uline@math@mathchar#1{%%% #1: \mathchar
   \def\@uline@curr@math@item{#1}%
   \let\@nnil\relax
   \afterassignment\@uline@math@mathchar@
   \count@=}
\def\@uline@math@mathchar@{%
   \def\@nnil{\@nil}%
   \edef\@uline@curr@math@item{\@uline@curr@math@item\the\count@\space}%
   \divide\count@ 4096\relax
   \ifnum 6<\count@ \count@\z@ \fi
   \edef\@uline@curr@math@itemtype{\the\count@}%
   \@uline@get@scripts\@uline@add@math@item}
\def\@uline@math@delimiter#1{%%% #1: delimiter
   \def\@uline@curr@math@item{#1}%
   \let\@nnil\relax
   \afterassignment\@uline@math@delimiter@
   \count@=}
\def\@uline@math@delimiter@{%
   \def\@nnil{\@nil}%
   \edef\@uline@curr@math@item{\@uline@curr@math@item\the\count@\space}%
   \divide\count@ 16777216\relax
   \ifnum 6<\count@ \count@\z@ \fi
   \edef\@uline@curr@math@itemtype{\the\count@}%
   \@uline@get@scripts\@uline@add@math@item}
\def\@uline@math@setclass#1{%%% #1: \mathbin etc.
   \def\@uline@curr@math@item{#1}%
   \edef\@uline@curr@math@itemtype{%
      \ifx     #1\mathord   0%
      \else\ifx#1\mathop    1%
      \else\ifx#1\mathbin   2%
      \else\ifx#1\mathrel   3%
      \else\ifx#1\mathopen  4%
      \else\ifx#1\mathclose 5%
      \else\ifx#1\mathpunct 6%
      \else\ifx#1\mathinner 7%
      \else                 0%
      \fi\fi\fi\fi\fi\fi\fi\fi}%
   \@uline@math@take@subformula\@uline@math@setclass@}
\def\@uline@math@setclass@{%
   \@uline@append@replacement@text\@uline@curr@math@item\@uline@curr@subformula
   \ifnum\@uline@curr@math@itemtype=\@ne \expandafter\@uline@x@get@scripts
   \else                                 \expandafter\@uline@get@scripts
   \fi
   \@uline@add@math@item}
\def\@uline@math@attachment#1{%%% #1: \mathaccent/\radical
   \def\@uline@curr@math@item{#1}%
   \let\@nnil\relax
   \afterassignment\@uline@math@attachment@
   \count@=}
\def\@uline@math@attachment@{%
   \def\@nnil{\@nil}%
   \edef\@uline@curr@math@item{\@uline@curr@math@item\the\count@\space}%
   \def\@uline@curr@math@itemtype{0}%
   \@uline@math@take@subformula\@uline@math@attachment@@}
\def\@uline@math@attachment@@{%
   \@uline@append@replacement@text\@uline@curr@math@item\@uline@curr@subformula
   \@uline@get@scripts\@uline@add@math@item}
\def\@uline@math@addmspace#1{%%% #1: \thinspace etc.
   \def\@tempa{#1}%
   \skip@\z@skip
   \@tfor\@tempb:=%
      {\thinspace{}\@uline@abs@thinmuskip}%
      {\,{}\@uline@abs@thinmuskip}%
      {\medspace{}\@uline@abs@medmuskip}%
      {\:{}\@uline@abs@medmuskip}%
      {\>{}\@uline@abs@medmuskip}%
      {\thickspace{}\@uline@abs@thickmuskip}%
      {\;{}\@uline@abs@thickmuskip}%
      {\negthinspace-\@uline@abs@thinmuskip}%
      {\!-\@uline@abs@thinmuskip}%
      {\negmedspace-\@uline@abs@medmuskip}%
      {\negthickspace-\@uline@abs@thickmuskip}%
      \do{\expandafter\@uline@math@addmspace@\@tempb}%
   \let\@uline@saved@protect\@empty
   \edef\@tempa{\noexpand\@uline@parse@math@append@item
      {\@uline@id@GLUE}{}{\the\skip@}}%
   \@tempa
   \@uline@parse@math@}
\def\@uline@math@addmspace@#1#2#3{%
   \def\@tempb{#1}%
   \ifx\@tempa\@tempb
      \skip@#3\relax
      \if\relax#2\relax\else \skip@#2\skip@ \fi
      \@break@tfor
   \fi}
\def\@uline@math@tmspace#1#2#3#4{%
   \let\@uline@saved@protect\@empty
   \@uline@parse@math@\mskip#2#3\relax}
\def\@uline@math@mskip#1{%%% #1: \mskip/\mkern
   \let\@nnil\relax
   \afterassignment\@uline@math@mskip@
   \muskip\@cclv=}
\def\@uline@math@mskip@{%
   \def\@nnil{\@nil}%
   \begingroup
   \let\@uline@setspace@check@unit\@uline@setspace@check@mathunit
   \@uline@parse@math@set@math@glue@\@tempa{\muskip\@cclv}%
   \expandafter\endgroup
   \expandafter\def\expandafter\@tempa\expandafter{\@tempa}%
   \edef\@tempa{\noexpand\@uline@parse@math@append@item
      {\@uline@id@GLUE}{}{\@tempa}}%
   \@tempa
   \@uline@parse@math@}
\def\@uline@math@omit#1{%%% #1: \nonscript (not supported)
   \@uline@parse@math@}
\def\@uline@math@mathchoice#1#2#3#4#5{%%% #1: \mathchoice
   \@uline@parse@math@continue{0}{#1{#2}{#3}{#4}{#5}}}
\def\@uline@math@mathstyle#1{%%% #1: \textstyle etc.
   \def\@uline@curr@mathstyle{#1}%
   \let\@uline@saved@protect\@empty
   \@uline@parse@math@}
\def\@uline@math@setmathgroup#1{%%% #1: \fam/\mathgroup
   \let\@nnil\relax
   \let\@uline@saved@protect\@empty
   \afterassignment\@uline@math@setmathgroup@
   \count@}
\def\@uline@math@setmathgroup@{%
   \def\@nnil{\@nil}%
   \ifnum\count@<\z@
      \let\@uline@curr@mathgroup\@empty
   \else
      \edef\@uline@curr@mathgroup{\the\count@}%
   \fi
   \@uline@parse@math@}
\def\@uline@math@jfam#1{%%% #1: \jfam
   \let\@nnil\relax
   \let\@uline@saved@protect\@empty
   \afterassignment\@uline@math@jfam@
   \count@=}
\def\@uline@math@jfam@{%
   \def\@nnil{\@nil}%
   \ifnum\count@<\z@\else
      \edef\@tempa{%
         \noexpand\@uline@add@nonletter@in@math@{\jfam=\the\count@\relax}}%
      \@tempa
   \fi
   \@uline@parse@math@}
\def\@uline@math@limitctrl#1{%%% #1: \limits/\displaylimits/\nolimits
   \@uline@math@mathop{\mathop{}}#1}
\def\@uline@math@left#1{%%% #1: \left
   \count@\z@
   \def\@uline@curr@subformula{#1}%
   \@uline@math@left@\@empty}
\def\@uline@math@left@#1\right{%
   \@uline@math@left@@#1\left\@nil
   \expandafter\@uline@append@tokens
      \expandafter\@uline@curr@subformula\expandafter{#1\right}%
   \ifnum\count@>\z@
      \advance\count@\m@ne
      \expandafter\@firstoftwo
   \else
      \expandafter\@secondoftwo
   \fi
   {\@uline@math@left@\@empty}{\@uline@get@delim\@uline@math@left@@@}}
\def\@uline@math@left@@#1\left#2\@nil{%
   \def\@tempa{#2}%
   \ifx\@tempa\@empty
      \expandafter\@gobble
   \else
      \advance\count@\@ne
      \expandafter\@firstofone
   \fi
   {\@uline@math@left@@#2\@nil}}
\def\@uline@math@left@@@{%
   \@uline@append@replacement@text\@uline@curr@subformula\@uline@curr@delimiter
   \def\@tempa{\@uline@parse@math@continue{7}}%
   \expandafter\@tempa\expandafter{\@uline@curr@subformula}}
\def\@uline@math@right#1{%%% #1: \right
   \setbox\z@\hbox{$\right.$}%%% produce error message
   \let\@uline@saved@protect\@empty
   \@uline@parse@math@}
\def\@uline@math@begin#1#2{%%% #1: \begin
   \count@\z@
   \def\@uline@curr@env{#2}%
   \def\@uline@curr@subformula{\begin{#2}}%
   \@uline@math@begin@\@empty}
\def\@uline@math@begin@#1\end#2{%
   \@uline@math@begin@@#1\begin{end}\@nil
   \expandafter\@uline@append@tokens
      \expandafter\@uline@curr@subformula\expandafter{#1\end{#2}}%
   \def\@tempx{\@uline@math@begin@\@empty}%
   \def\@tempa{#2}%
   \ifx\@tempa\@uline@curr@env
      \ifnum\count@>\z@
         \advance\count@\m@ne
      \else
         \def\@tempx{\@uline@math@begin@@@}%
      \fi
   \fi
   \@tempx}
\def\@uline@math@begin@@#1\begin#2#3\@nil{%
   \def\@tempx{\@uline@math@begin@@#3\@nil}%
   \def\@tempa{#3}%
   \ifx\@tempa\@empty
      \let\@tempx\relax
   \else
      \def\@tempa{#2}%
      \ifx\@tempa\@uline@curr@env \advance\count@\@ne \fi
   \fi
   \@tempx}
\def\@uline@math@begin@@@{%
   \def\@tempa{\@uline@parse@math@continue{0}}%
   \expandafter\@tempa\expandafter{\@uline@curr@subformula}}
\def\@uline@math@end#1#2{%%% #1: \end (isolated)
   \@uline@parse@math@continue{0}{\end{#2}}}
\def\@uline@math@fontchange#1{%%% #1: \rm etc. (old style font change command)
   \setbox\z@\hbox{$#1\relax
      \xdef\@uline@gtempa{\the\fam}%
      \expandafter\ifx\csname pfmtname\endcsname\relax
         \global\let\@uline@gtempb\@empty
      \else
         \xdef\@uline@gtempb{\the\jfam}%
      \fi
      $}%
   \ifnum\@uline@gtempa<\z@\else
      \let\@uline@curr@mathgroup\@uline@gtempa
   \fi
   \ifx\@uline@gtempb\@empty\else
      \ifnum\@uline@gtempb<\z@\else
         \edef\@tempa{\noexpand\@uline@add@nonletter@in@math@
            {\jfam=\@uline@gtempb\relax}}%
         \@tempa
      \fi
   \fi
   \let\@uline@saved@protect\@empty
   \@uline@parse@math@}
%
%%% general
\def\@uline@math@normal[#1][#2]#3{%
   \def\@tempb{\@uline@parse@math@continue{\@tempe}}%
   \def\@uline@common@command@currarg{#3}%
   \@uline@common@command@argcnt#1\relax
   \let\@tempc\@firstofone
   \let\@tempd\@firstofone
   \def\@tempe{0}%
   \@tfor\@tempa:=#2\do{%
      \if *\@tempa \def\@tempc{\noexpand\@uline@x@checkstar}\fi
      \if o\@tempa \def\@tempd{\noexpand\@uline@x@checkopt}\fi
      \if 1\@tempa \def\@tempb{\@uline@math@mathop}\fi
      \if 2\@tempa \def\@tempe{2}\fi
      \if 3\@tempa \def\@tempe{3}\fi
      \if 4\@tempa \def\@tempe{4}\fi
      \if 5\@tempa \def\@tempe{5}\fi
      \if 6\@tempa \def\@tempe{6}\fi
      \if 7\@tempa \def\@tempe{7}\fi}%
   \edef\@tempa{%
      \@tempc{\@tempd{%
         \noexpand\@uline@common@math@command@takearg
         {\expandafter\noexpand\@tempb}}}}%
   \@tempa}
\def\@uline@common@math@command@takearg{%
   \def\@uline@common@command@takearg@finish{%
      \@uline@common@command@takearg@finish@}%
   \@uline@common@command@takearg@}
\def\@uline@math@mathop#1{%
   \def\@uline@curr@math@itemtype{1}%
   \def\@uline@curr@math@item{#1}%
   \@uline@x@get@scripts\@uline@add@math@item}
\def\@uline@math@mathbin#1{\@uline@parse@math@continue{2}{#1}}
\def\@uline@math@mathrel#1{\@uline@parse@math@continue{3}{#1}}
\def\@uline@math@mathopen#1{\@uline@parse@math@continue{4}{#1}}
\def\@uline@math@mathclose#1{\@uline@parse@math@continue{5}{#1}}
\def\@uline@math@mathpunct#1{\@uline@parse@math@continue{6}{#1}}
\def\@uline@math@mathinner#1{\@uline@parse@math@continue{7}{#1}}
\def\@uline@math@amspod#1#2{%
   \let\@uline@saved@protect\@empty
   \def\@tempa{\displaystyle}%
   \edef\@tempa{\penalty\z@
      \mkern \ifx\@uline@curr@mathstyle\@tempa 18\else 8\fi mu}%
   \expandafter\@uline@parse@math@\@tempa(#2)}
\def\@uline@math@amsmod#1#2{%
   \let\@uline@saved@protect\@empty
   \def\@tempa{\displaystyle}%
   \edef\@tempa{\penalty\z@
      \mkern \ifx\@uline@curr@mathstyle\@tempa 18\else 12\fi mu}%
   \expandafter\@uline@parse@math@\@tempa {\operator@font mod}\,\,#2}
\def\@uline@math@delimsize#1{%%% #1: \big etc.
   \@uline@get@delim{\@uline@math@delimsize@#1}}
\def\@uline@math@delimsize@#1{%
   \let\@uline@saved@protect\@empty
   \@csc@t\@tempa#1{\expandafter{\@uline@curr@delimiter}}%
   \expandafter\@uline@parse@math@\@tempa}
\def\@uline@math@delimsizex#1{%%% #1: \bigl etc.
   \@uline@get@delim{\@uline@math@delimsizex@#1}}
\def\@uline@math@delimsizex@#1{%
   \let\@uline@saved@protect\@empty
   \def\@tempx##1##2\@nil##3{% ##1: \mathopen etc. ##2: \big etc. ##3: delimiter
      \def\@tempa{##1{##2{##3}}}}%
   \expandafter\expandafter\expandafter\@tempx
   \expandafter#1\expandafter\@nil\expandafter{\@uline@curr@delimiter}%
   \expandafter\@uline@parse@math@\@tempa}
\def\@uline@math@sqrt#1{%
   \kernel@ifnextchar[%
      \@uline@math@sqrt@
      {\@uline@math@take@subformula{\@uline@math@sqrt@@{\sqrt}}}}
\def\@uline@math@sqrt@[#1]{%
   \@uline@math@take@subformula{\@uline@math@sqrt@@{\sqrt[#1]}}}
\def\@uline@math@sqrt@@#1{%
   \def\@tempa{\@uline@parse@math@continue{0}}%
   \def\@tempb##1{\@tempa{#1##1}}%
   \expandafter\@tempb\expandafter{\@uline@curr@subformula}}
\def\@uline@math@smash{\@uline@math@normal[1][]}
\def\@uline@math@ensuremath#1#2{%%% #1: \ensuremath
   \let\@uline@saved@protect\@empty
   \@uline@parse@math@#2}
\def\@uline@math@process@url#1{%%% #1: \url
   \GenericWarning{}{Warning: Command \string#1 invalid in math mode}%
   \let\@uline@saved@protect\@empty
   \@uline@parse@math@\texttt}
\def\@uline@math@changecase#1#2{%%% #1: \uppercase/\lowercase
   #1{\def\@tempa{#2}}%
   \let\@uline@saved@protect\@empty
   \expandafter\@uline@parse@math@\@tempa}
\def\@uline@math@setlength#1#2#3{%%% #1: \setlength/\addtolength
   \@uline@add@nonletter@in@math@{#1{#2}{#3}}%
   \@uline@parse@math@}
\def\@uline@math@bou#1#2{%%% #1: \bou/\kenten
   \def\@uline@curr@math@itemtype{0}%
   \expandafter\def\expandafter\@uline@curr@math@item\expandafter{%
      \expandafter\hbox\expandafter{\@uline@saved@protect#1{#2}}}%
   \let\@uline@saved@protect\@empty
   \@uline@get@scripts\@uline@add@math@item}
\def\@uline@math@latex@mathaccent#1{%%% #1: \hat etc.
   \@uline@math@take@subformula{\@uline@math@latex@mathaccent@{#1}}}
\def\@uline@math@latex@mathaccent@#1{%
   \def\@tempa##1{\@uline@parse@math@continue{0}{#1##1}}%
   \expandafter\@tempa\expandafter{\@uline@curr@subformula}}
\let\@uline@math@org@mathaccent\@uline@math@latex@mathaccent
\let\@uline@math@wideaccent\@uline@math@latex@mathaccent
\def\@uline@math@boldsymbol#1#2{%%% #1: \boldsymbol etc.
   \@uline@math@push@item@command
   \def\@tempa{#1}%
   \@csc@t\@uline@math@item@command\@uline@saved@protect\@tempa
   \let\@uline@saved@protect\@empty
   \@uline@parse@math@#2 \@uline@execit{\@uline@math@pop@item@command}}
\let\@uline@math@cdots\@uline@math@mathinner
\def\@uline@math@invalidcommandwithonearg#1#2{%%% #1: \mathversion
   \@font@warning{Command \noexpand#1invalid in math mode}%%% \@nomath#1
%%%   \@uline@add@nonletter@in@math@{#1{#2}}%
   \let\@uline@saved@protect\@empty
   \@uline@parse@math@}
\def\@uline@math@invalidcommand#1{%%% #1: \boldmath/\unboldmath/\normalsize etc.
   \@font@warning{Command \noexpand#1invalid in math mode}%%% \@nomath#1
   \@uline@math@invalidcommand@#1}
\def\@uline@math@invalidcommand@#1{%
%%%   \@uline@add@nonletter@in@math@{#1}%
   \@uline@parse@math@}
\def\@uline@math@errorcommand#1{%%% #1: \bfseries etc.
   \@latex@error{Command \noexpand#1invalid in math mode}\@ehc%%% \not@math@alphabet#1...
%%%   \@uline@add@nonletter@in@math@{#1}%
   \let\@uline@saved@protect\@empty
   \@uline@parse@math@}
%
%%% amsmath
\def\@uline@math@amsdots#1{%%% #1: \dots (under amsmath)
   \let\@uline@saved@protect\@empty
   \@uline@math@examine@following@item{\@uline@math@amsdots@{#1}}\@empty}
\def\@uline@math@amsdotsx#1{%%% #1: \dotsb etc.
   \let\@uline@saved@protect\@empty
   \@uline@math@examine@following@item{\@uline@math@amsdotsx@{#1}}\@empty}
\def\@uline@math@examine@following@item#1#2\@nnil{%
   \begingroup
   \let\@uline@parse@math@tempa\@empty
   \let\@uline@parse@math@append@item\@uline@alt@parse@math@append@item
   \let\@uline@parse@math@@\@uline@alt@parse@math@@
   \def\@uline@math@boldsymbol##1##2{\@uline@parse@math@##2}%
   \expandafter\@uline@parse@math@#2\@nnil
   \ifx\@uline@parse@math@tempa\@empty \def\@uline@parse@math@tempa{\relax}\fi
   \expandafter\endgroup\expandafter
   \def\expandafter\@uline@next@itemtype\expandafter{\@uline@parse@math@tempa}%
   \def\@tempa{#1}%
   \expandafter\@tempa#2\@nnil}%%% remove \@empty
\def\@uline@alt@parse@math@@{%
   \def\@tempa{\@uline@alt@parse@math@@check@special@token}%
   \ifx\let@token\@nnil
      \def\@uline@parse@math@tempa{\relax}%
      \def\@tempa{\@gobble}%
   \else
      \ifx\let@token\@sptoken
         \let\@tempa\@uline@parse@math@space
      \else \ifx\let@token\bgroup
         \def\@tempa{%
            \def\@uline@parse@math@tempa{0}%
            \remove@to@nnil}%
      \fi\fi
   \fi
   \@tempa}
\def\@uline@alt@parse@math@checklist{%
   {..}{,,}{;;}{\DOTSB\DOTSB}{\DOTSI\DOTSI}{\DOTSX\DOTSX}%
   {\int\DOTSI}{\oint\DOTSI}{\iint\DOTSI}{\iiint\DOTSI}%
   {\iiiint\DOTSI}{\idotsint\DOTSI}}
\def\@uline@alt@parse@math@@check@special@token#1{%
   \def\@tempa{\@uline@parse@math@checktoken#1}%
   \def\@tempb{#1}%
   \def\@tempc{\@tfor\@tempc:=}%
   \expandafter\@tempc\@uline@alt@parse@math@checklist\do{%
      \@csc@t\@tempd\@secondoftwo\@tempc
      \@csc@t\@tempc\@firstoftwo\@tempc
      \ifx\@tempb\@tempc
         \let\@uline@parse@math@tempa\@tempd
         \def\@tempa{\remove@to@nnil}%
         \@break@tfor
      \fi}%
   \@tempa}
\def\@uline@alt@parse@math@append@item#1#2#3{%
   \def\@uline@parse@math@tempa{#1}%
   \remove@to@nnil}
\def\@uline@math@amsdots@#1{%%% #1: \dots (in amsmath)
   \def\@tempa{\@ldots}%
   \def\@tempb{\DOTSB}%
   \ifx\@uline@next@itemtype\@tempb
      \def\@tempa{\@cdots}%
   \else
      \def\@tempb{\DOTSI}%
      \ifx\@uline@next@itemtype\@tempb
         \def\@tempa{\,\@cdots}%
      \else
         \def\@tempb{\DOTSX}%
         \ifx\@uline@next@itemtype\@tempb
            \def\@tempa{\@ldots\,}%
         \else
            \def\@tempb{\relax}%
            \ifx\@uline@next@itemtype\@tempb
               \def\@tempa{\@ldots\,}%
            \else
               \@onelevel@sanitize\@uline@next@itemtype
               \afterassignment\remove@to@nnil
               \count@0\@uline@next@itemtype\relax\@nnil
               \ifcase\count@
               \or \or \def\@tempa{\@cdots}%
               \or     \def\@tempa{\@cdots}%
               \or \or \def\@tempa{\@ldots\,}%
               \fi
            \fi
         \fi
      \fi
   \fi
   \expandafter\@uline@parse@math@\@tempa}
\edef\@uline@math@amsdotsx@checklist{%
   \noexpand\cdots \expandafter\noexpand\csname cdots \endcsname
   \noexpand\dotsb \noexpand\dotsm}
\def\@uline@math@amsdotsx@#1{%%% #1: \dotsb etc.
   \def\@tempa{\@ldots}%
   \def\@tempb{#1}%
   \def\@tempc{\@tfor\@tempc:=}%
   \expandafter\@tempc\@uline@math@amsdotsx@checklist\do{%
      \ifx\@tempb\@tempc
         \def\@tempa{\@cdots}%
         \@break@tfor
      \fi}%
   \edef\@tempc{\string\dotsc}%
   \@onelevel@sanitize\@tempb \edef\@tempb{\@tempb\@tempc}%
   \def\@tempd{\def\@tempd####1}%
   \expandafter\@tempd\@tempc##2\@nil{\def\@tempd{##1}}%
   \expandafter\@tempd\@tempb\@nil
   \let\@tempb\@empty
   \def\@tempc{,}%
   \ifx\@uline@next@itemtype\@tempc
      \ifx\@tempd\@empty\else \def\@tempb{\,}\fi
   \else
      \@tfor\@tempc:=.;5\DOTSX\relax\do{%
         \ifx\@uline@next@itemtype\@tempc
            \def\@tempb{\,}%
            \@break@tfor
         \fi}%
   \fi
   \@uline@append@replacement@text\@tempa\@tempb
   \expandafter\@uline@parse@math@\@tempa}
\def\@uline@math@uoset#1#2#3{%%% #1: \overset/\underset
   \binrel@{#3}%
   \edef\@tempa{%
      \noexpand\@uline@parse@math@continue
      {\ifx\binrel@@\mathbin 2\else \ifx\binrel@@\mathrel 3\else 0\fi\fi}}%
   \@tempa{#1{#2}{#3}}}
%
%%% txfonts/pxfonts
\let\@uline@math@mathnot\@uline@math@mathrel
\def\@uline@math@txpx@mathnot#1{%%% #1: \not (in txfonts/pxfonts)
   \def\@uline@curr@not{\not}%
   \def\@uline@curr@notsign{\n@tch@r}%
   \def\@uline@math@alt@mathnot@@checkcs{%
      \@uline@math@alt@mathnot@@common@checkcs}%
   \def\@uline@math@alt@mathnot@@checkchar{%
      \@uline@math@alt@mathnot@@txpx@checkchar}%
   \def\@uline@math@alt@mathnot@@avoid@infinite@loop{%
      \@uline@math@alt@mathnot@@txpx@avoid@infinite@loop}%
   \@uline@math@take@subformula{\@uline@math@alt@mathnot@{#1}}}%
\def\@uline@math@alt@mathnot@#1{%
   \def\@tempb##1##{%
      \def\@tempx{##1}%
      \afterassignment\@tempc
      \def\@tempa}%
   \def\@tempc##1\@nnil{\def\@tempy{##1}}%
   \expandafter\@tempb\@uline@curr@subformula{}\@nnil
   \@csc@t\@uline@temp\@uline@curr@notsign\@uline@curr@subformula
   \ifx\@tempx\@empty
      \ifx\@tempy\@empty
         \@csc@t\@uline@temp\@uline@curr@notsign\@tempa
         \ifx\@tempa\@empty\else
            \def\@tempb##1\protect##2\@nil{%
               \def\@tempx{##2}%
               \expandafter\def\expandafter\@tempy\expandafter{##1}}%
            \expandafter\@tempb\expandafter\@empty\@tempa\protect\@nil
            \ifx\@tempy\@empty
               \def\@tempb##1\protect\@nil{%
                  \expandafter\def\expandafter\@tempx\expandafter{##1}}%
               \expandafter\@tempb\expandafter\@empty\@tempx\@nil
               \ifx\@tempx\@empty\else
                  \@csc@t\@tempb\@firstofone\@tempx
                  \ifx\@tempb\@tempx
                     \@csc@t\@tempb\@car{\@tempx\@empty\@nil}%
                     \ifx\@tempb\@tempx
                        \@uline@math@alt@mathnot@@
                     \fi
                  \fi
               \fi
            \else
               \@csc@t\@tempb\@firstofone\@tempa
               \ifx\@tempa\@tempb
                  \@csc@t\@tempx\@car{\@tempa\@empty\@nil}%
                  \ifx\@tempa\@tempx
                     \@uline@math@alt@mathnot@@
                  \fi
               \fi
            \fi
         \fi
      \fi
   \fi
   \let\@uline@saved@protect\@empty
   \expandafter\@uline@parse@math@\@uline@temp}
\def\@uline@math@alt@mathnot@@{%
   \let\@uline@temp@\relax
   \expandafter\if\expandafter\noexpand\@tempx\relax
      \edef\@tempy{\expandafter\expandafter\expandafter\@gobble
         \expandafter\string\@tempx\space}%
      \edef\@tempy{\expandafter\zap@space\@tempy\@empty}%
      \@uline@math@alt@mathnot@@checkcs\@tempy
   \else
      \let\@tempy\@tempx
      \@onelevel@sanitize\@tempy
      \@uline@math@alt@mathnot@@checkchar\@tempy
   \fi
   \@uline@math@alt@mathnot@@avoid@infinite@loop}
\def\@uline@math@alt@mathnot@@common@checkcs#1{%
   \expandafter\ifx\csname not#1\endcsname\relax
      \expandafter\ifx\csname n#1\endcsname\relax\else
         \edef\@uline@temp@{\expandafter\noexpand\csname n#1\endcsname}%
      \fi
   \else
      \edef\@uline@temp@{\expandafter\noexpand\csname not#1\endcsname}%
   \fi}
\def\@uline@math@alt@mathnot@@txpx@checkchar#1{%
   \edef\@tempc{#1}%
   \@tfor\@tempa:={<\nless}{>\ngtr}{=\ne}\do{%
      \@csc@t\@tempb\@firstoftwo\@tempa
      \ifx\@tempb\@tempc \@csc@t\@uline@temp@\@secondoftwo\@tempa \fi}}%
\def\@uline@math@alt@mathnot@@txpx@avoid@infinite@loop{%
   \ifx\@uline@temp@\relax\else
      \edef\@tempa{\string\not\space}%
      \expandafter\let\expandafter\@tempb\@uline@temp@
      \edef\@tempb{\expandafter\strip@prefix\meaning\@tempb>>}%
      \@expandtwoargs\in@\@tempa\@tempb
      \ifin@\else \let\@uline@temp\@uline@temp@ \fi
   \fi}
%
%%% mathabx
\def\@uline@math@abx@mathnot#1{%%% #1: \not (in mathabx)
   \def\@uline@curr@not{\not}%
   \def\@uline@curr@notsign{\notsign}%
   \def\@uline@math@alt@mathnot@@checkcs{%
      \@uline@math@alt@mathnot@@common@checkcs}%
   \let\@uline@math@alt@mathnot@@checkchar\@gobble
   \def\@uline@math@alt@mathnot@@avoid@infinite@loop{%
      \@uline@math@alt@mathnot@@abx@avoid@infinite@loop}%
   \@uline@math@take@subformula{\@uline@math@alt@mathnot@{#1}}}%
\def\@uline@math@abx@varnot#1{%%% #1: \varnot (in mathabx)
   \def\@uline@curr@not{\varnot}%
   \def\@uline@curr@notsign{\varnotsign}%
   \def\@uline@math@alt@mathnot@@checkcs{%
      \@uline@math@alt@mathnot@@abxvar@checkcs}%
   \let\@uline@math@alt@mathnot@@checkchar\@gobble
   \def\@uline@math@alt@mathnot@@avoid@infinite@loop{%
      \@uline@math@alt@mathnot@@abx@avoid@infinite@loop}%
   \@uline@math@take@subformula{\@uline@math@alt@mathnot@{#1}}}%
\def\@uline@math@alt@mathnot@@abxvar@checkcs#1{%
   \expandafter\ifx\csname varnot#1\endcsname\relax\else
      \edef\@uline@temp@{\expandafter\noexpand\csname varnot#1\endcsname}%
   \fi}
\def\@uline@math@alt@mathnot@@abx@avoid@infinite@loop{%
   \ifx\@uline@temp@\relax\else
       \edef\@uline@temp{%
          \noexpand\@uline@execit{%
             \noexpand\@uline@parse@math@append@item
                {\@uline@id@NONMATHITEM}{}%
                {\begingroup
                 \noexpand\nonletter{%
                    \let\expandafter\noexpand\@uline@curr@not\relax}}}%
          \expandafter\noexpand\@uline@temp@
          \noexpand\@uline@execit{%
             \noexpand\@uline@parse@math@append@item
                {\@uline@id@NONMATHITEM}{}{\endgroup}}}%
   \fi}
%
%%% fourier
\def\@uline@math@dblbrackleft#1{%
   \PackageWarningNoLine{fourier}{The command \protect\dblbrackleft\space
      is deprecated.^^J Use \protect\llbracket\space instead}%%% produce same warning as original
   \@uline@parse@math@\llbracket}
\def\@uline@math@dblbrackright#1{%
   \PackageWarningNoLine{fourier}{The command \protect\dblbrackright\space
      is deprecated.^^J Use \protect\rrbracket\space instead}%%% produce same warning as original
   \@uline@parse@math@\rrbracket}
%
%%% tools
\def\@uline@append@tokens#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
\def\@uline@append@replacement@text#1#2{%
   \expandafter\@uline@append@tokens\expandafter#1\expandafter{#2}}
\def\@csc@t#1#2#3{%
   \expandafter\expandafter\expandafter\def
   \expandafter\expandafter\expandafter#1%
   \expandafter\expandafter\expandafter{\expandafter#2#3}}
\@uline@temp