%%
%% This is file `xypdf-cu.tex',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% xypdf.dtx  (with options: `curve')
%% 
%% The xypdf package for TeX and LaTeX
%% Copyright (c) 2010 by Daniel Müllner (M\"ullner)
%% <http://danifold.net>
%% --------------------------------------------------------------------------
%% 
%% This program is free software: you can redistribute it and/or modify it
%% under the terms of the GNU General Public License as published by the Free
%% Software Foundation, either version 2 of the License, or (at your option)
%% any later version.
%% 
%% This program is distributed in the hope that it will be useful, but
%% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
%% or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
%% for more details.
%% 
%% The GNU General Public License is available at
%% <http://www.gnu.org/licenses/>.
%% 
%% --------------------------------------------------------------------------
%% 
%% This file is part of the xypdf package for TeX and LaTeX2e. The xypdf
%% package may be distributed and/or modified under the conditions of the
%% GNU General Public License as published by the Free Software Foundation,
%% either version 2 of the License, or (at your option) any later version.
%% The distribution consists of the following files:
%% 
%%    xypdf.dtx  -  Documented source code
%%    xypdf.ins  -  Installation script
%%    xypdf.pdf  -  Documentation (generated from xypdf.dtx)
%% 
%% The files with the TeX code are generated by the following command:
%% 
%%    latex xypdf.ins
%% 
%% This generates the files xypdf.tex, xypdf-co.tex, xypdf-cu.tex,
%% xypdf-fr.tex, xypdf-li.tex and xypdf-ro.tex.
%% 
%% --------------------------------------------------------------------------
%% 
%% The xypdf package improves the output quality of the Xy-pic package when
%% PDF documents are generated. It produces generic PDF code for graphical
%% elements like lines, curves and circles instead of approximating these
%% elements with glyphs in special fonts as the original Xy-pic package does.
%% The xypdf package works with both TeX and LaTeX in the occurrences of
%% pdfTeX, XeTeX and eTeX with dvipdfm(x) to generate PDF files. It is being
%% integrated and distributed together with Xy-pic, starting with Xy-pic
%% version 3.8.
%% 
%% The copyright for the xypdf package is by its author, Daniel Müllner
%% (Muellner, M\"ullner).
%% 
\xycatcodes
\expandafter\let\csname xypdf-cu@loaded\endcsname\@empty
\newcommand*\xP@tempvar[2]{\@ifdefinable#1\relax
\let#1#2}
\newcommand*\xP@oldornewdimen[2]{\@ifundefined{#2}{\xP@newdimen#1}{\expandafter\xP@tempvar\expandafter#1\csname#2\endcsname}}
\xP@tempvar\xP@bigdim\quotPTK@
\xP@tempvar\xP@parA\L@p
\xP@tempvar\xP@velA\U@p
\xP@tempvar\xP@parB\R@p
\xP@tempvar\xP@velB\D@p
\xP@tempvar\xP@parC\X@origin
\xP@tempvar\xP@velC\Y@origin
\xP@tempvar\xP@parD\X@xbase
\xP@tempvar\xP@velD\Y@xbase
\xP@tempvar\xP@parE\X@ybase
\xP@tempvar\xP@velE\Y@ybase
\xP@tempvar\xP@lenA\X@min
\xP@tempvar\xP@lenB\Y@min
\xP@tempvar\xP@partlen\X@max
\xP@tempvar\xP@oldpartlen\Y@max
\xP@tempvar\xP@tolerance\almostz@
\xP@tempvar\xP@A\L@p
\xP@tempvar\xP@B\U@p
\xP@tempvar\xP@C\R@p
\xP@tempvar\xP@D\D@p
\xP@tempvar\xP@E\X@origin
\xP@tempvar\xP@F\Y@origin
\xP@tempvar\xP@G\X@xbase
\xP@tempvar\xP@H\Y@xbase
\xP@tempvar\xP@I\X@ybase
\xP@tempvar\xP@J\Y@ybase
\xP@tempvar\xP@K\X@min
\xP@tempvar\xP@L\Y@min
\xP@tempvar\xP@fa\X@max
\xP@tempvar\xP@fd\Y@max
\xP@tempvar\xP@tm\almostz@
\xP@tempvar\xP@xm\K@dXdY
\xP@tempvar\xP@ym\K@dYdX
\xP@tempvar\xP@off\splineval@
\xP@tempvar\xP@ta\splinedepth@
\xP@tempvar\xP@tb\splinetol@
\xP@tempvar\xP@tc\splinelength@
\xP@tempvar\xP@M\L@
\@tempcnta\count11\relax
\xP@oldornewdimen\xP@oldobj{normallineskiplimit}
\xP@oldornewdimen\xP@Tax{@savsk}
\xP@oldornewdimen\xP@Tay{lower@bound}
\xP@oldornewdimen\xP@Tdx{upper@bound}
\xP@oldornewdimen\xP@Tdy{leftmargin}
\xP@oldornewdimen\xP@Tmx{rightmargin}
\xP@oldornewdimen\xP@Tmy{listparindent}
\xP@oldornewdimen\xP@xa{itemindent}
\xP@oldornewdimen\xP@ya{labelwidth}
\xP@oldornewdimen\xP@xb{labelsep}
\xP@oldornewdimen\xP@yb{linewidth}
\xP@oldornewdimen\xP@xc{@totalleftmargin}
\xP@oldornewdimen\xP@yc{leftmargini}
\xP@oldornewdimen\xP@xd{leftmarginii}
\xP@oldornewdimen\xP@yd{leftmarginiii}
\count11\@tempcnta
\xP@tempvar\xP@a\X@ybase
\xP@tempvar\xP@b\Y@ybase
\xP@tempvar\xP@c\X@min
\xP@tempvar\xP@valA\Y@min
\xP@tempvar\xP@valB\X@max
\xP@tempvar\xP@devA\Y@max
\xP@tempvar\xP@devB\almostz@
\xP@tempvar\xP@ti\K@dXdY
\xP@tempvar\xP@tip\K@dYdX
\xP@tempvar\xP@sa\xP@Tax
\xP@tempvar\xP@sb\xP@Tay
\xP@tempvar\xP@sc\xP@Tdx
\xP@tempvar\xP@Ab\xP@Tdy
\xP@tempvar\xP@AAb\xP@Tmx
\xP@tempvar\xP@Aba\xP@Tmy
\xP@tempvar\xP@Abb\xP@xa
\xP@tempvar\xP@Abc\xP@ya
\xP@tempvar\xP@AAba\xP@xb
\xP@tempvar\xP@AAbb\xP@yb
\xP@tempvar\xP@AAbc\xP@xc
\xP@tempvar\xP@dta\xP@yc
\xP@tempvar\xP@dtb\xP@xd
\xP@tempvar\xP@dtc\xP@yd
\xP@tempvar\xP@temppar\X@origin
\xP@tempvar\xP@tempvel\Y@origin
\xP@tempvar\xP@posX\X@xbase
\xP@tempvar\xP@posY\Y@xbase
\xP@tempvar\xP@oldpar\X@ybase
\xP@tempvar\xP@lastpar\Y@ybase
\xP@tempvar\xP@tempvel@\X@min
\xP@tempvar\xP@parinc\Y@min
\xP@tempvar\xP@squiglen\almostz@
\xP@tempvar\xP@scaleone\K@
\xP@tempvar\xP@scaletwo\KK@
\xP@tempvar\xP@scalethree\Direction
\xP@hook{curve}{splinesolid@}
\newcommand*\xP@splinesolid@{\xP@spline\xP@setsolidpat}
\xP@hook{curve}{splinedashed@}
\newcommand*\xP@splinedashed@{\xP@spline\xP@setdashpat}
\xP@hook{curve}{splinedotted@}
\newcommand*\xP@splinedotted@{\xP@spline\xP@setdottedpat}
\newcommand*\xP@spline[1]{\readsplineparams@
\ifdim\dimen5<\dimen7
\xP@preparespline
\ifdim\@tempdimb>\z@
#1\xP@stroke{\xP@coor\X@p\Y@p m \xP@coor\L@c\U@c\xP@coor\R@c\D@c\xP@coor\X@c\Y@c c}\xP@savec
\fi
\fi
}
\newcommand*\xP@preparespline{\ifx\splineinfo@\squineinfo@
\L@c\dimexpr(\X@p+2\A@)/3\relax
\U@c\dimexpr(\Y@p+2\B@)/3\relax
\R@c\dimexpr(\X@c+2\A@)/3\relax
\D@c\dimexpr(\Y@c+2\B@)/3\relax
\fi
\xP@shavespline
\xP@bezierlength
}
\newcommand*\xP@inibigdim{\xP@bigdim5040pt}
\newcommand*\xP@shavespline{\xP@shaveprec{\dimen5*\xP@bigdim/\p@}{\dimen7*\xP@bigdim/\p@}}
\newcommand*\xP@shaveprec[2]{{\xP@inibigdim
\A@\dimexpr#1\relax
\B@\dimexpr#2\relax
\@tempswatrue
\ifdim\A@=\z@\ifdim\B@=\xP@bigdim\@tempswafalse\fi\fi
\if@tempswa
\L@p\dimexpr\L@c-\X@p\relax
\U@p\dimexpr\R@c-\L@p-\L@c\relax
\R@p\dimexpr\X@c-3\R@c+3\L@c-\X@p\relax
\D@p\dimexpr\U@c-\Y@p\relax
\X@min\dimexpr\D@c-\D@p-\U@c\relax
\Y@min\dimexpr\Y@c-3\D@c+3\U@c-\Y@p\relax
\xdef\@gtempa{\X@p\the\dimexpr\X@p+(3\L@p+(3\U@p+\R@p*\A@/\xP@bigdim)*\A@/\xP@bigdim)*\A@/\xP@bigdim\relax
\Y@p\the\dimexpr\Y@p+(3\D@p+(3\X@min+\Y@min*\A@/\xP@bigdim)*\A@/\xP@bigdim)*\A@/\xP@bigdim\relax
\L@c\the\dimexpr\X@p+(2\A@+\B@)*\L@p/\xP@bigdim+((\A@+2\B@)*\U@p/\xP@bigdim+\R@p*\A@/\xP@bigdim*\B@/\xP@bigdim)*\A@/\xP@bigdim\relax
\U@c\the\dimexpr\Y@p+(2\A@+\B@)*\D@p/\xP@bigdim+((\A@+2\B@)*\X@min/\xP@bigdim+\Y@min*\A@/\xP@bigdim*\B@/\xP@bigdim)*\A@/\xP@bigdim\relax
\R@c\the\dimexpr\X@p+(2\B@+\A@)*\L@p/\xP@bigdim+((\B@+2\A@)*\U@p/\xP@bigdim+\R@p*\B@/\xP@bigdim*\A@/\xP@bigdim)*\B@/\xP@bigdim\relax
\D@c\the\dimexpr\Y@p+(2\B@+\A@)*\D@p/\xP@bigdim+((\B@+2\A@)*\X@min/\xP@bigdim+\Y@min*\B@/\xP@bigdim*\A@/\xP@bigdim)*\B@/\xP@bigdim\relax
\X@c\the\dimexpr\X@p+(3\L@p+(3\U@p+\R@p*\B@/\xP@bigdim)*\B@/\xP@bigdim)*\B@/\xP@bigdim\relax
\Y@c\the\dimexpr\Y@p+(3\D@p+(3\X@min+\Y@min*\B@/\xP@bigdim)*\B@/\xP@bigdim)*\B@/\xP@bigdim\relax}\else
\global\let\@gtempa\relax
\fi
}\@gtempa
}
\newcommand*\xP@bezierlength{{\xP@inibigdim
\@tempdimb\z@
\xP@parA\z@
\xP@velocity\z@\xP@velA
\xP@parC.5\xP@bigdim
\xP@velocity\xP@parC\xP@velC
\xP@velocity\xP@bigdim\xP@velE
\xP@oldpartlen\dimexpr(\xP@velA+4\xP@velC+\xP@velE)/6\relax
\xP@tolerance\xP@max{1sp}{\dimexpr\xP@oldpartlen/100000\relax}\xP@arclength\xP@parC\xP@velC\xP@bigdim\xP@velE\xP@oldpartlen
\global\dimen@i\@tempdimb
}\@tempdimb\dimen@i
}
\newcommand*\xP@velocity[2]{{\@tempdima\dimexpr#1\relax
\xP@tangent
\global\dimen@i\@tempdimb
}#2\dimen@i
}
\newcommand*\xP@tangent{\d@X3\xP@precbeziertan\X@p\L@c\R@c\X@c\@tempdima
\d@Y3\xP@precbeziertan\Y@p\U@c\D@c\Y@c\@tempdima
\xP@veclen
}
\newcommand*\xP@tangentvec[1]{{\@tempdima#1\relax
\xP@tangent
\ifdim\@tempdimb=\z@
\L@p\dimexpr\X@c-\X@p+(\L@c-\R@c)*3\relax
\U@p\dimexpr\Y@c-\Y@p+(\U@c-\D@c)*3\relax
\d@X\dimexpr\L@p*\@tempdima/\xP@bigdim+(\X@p-2\L@c+\R@c)\relax
\d@Y\dimexpr\U@p*\@tempdima/\xP@bigdim+(\Y@p-2\U@c+\D@c)\relax
\xP@veclen
\ifdim\@tempdimb=\z@
\d@X\L@p
\d@Y\U@p
\xP@veclen
\ifdim\@tempdimb=\z@
\xP@warning{xypdf}{Cannot determine a tangent vector to a curve}\@tempdimb\p@
\fi
\fi
\fi
\global\dimen@i\d@X
\global\dimen3\d@Y
\global\dimen5\@tempdimb
}\d@X\dimen@i
\d@Y\dimen3\relax
\@tempdimb\dimen5\relax
}
\newcommand*\xP@arclength[5]{\xP@parE#3\xP@velE#4\xP@parC#1\xP@velC#2\xP@oldpartlen#5\xP@parB\dimexpr(\xP@parC+\xP@parA)/2\relax
\xP@velocity\xP@parB\xP@velB
\xP@parD\dimexpr(\xP@parE+\xP@parC)/2\relax
\xP@velocity\xP@parD\xP@velD
\xP@lenA
\dimexpr(\xP@velA+4\xP@velB+\xP@velC)/6*(\xP@parC-\xP@parA)/\xP@bigdim\relax
\xP@lenB
\dimexpr(\xP@velC+4\xP@velD+\xP@velE)/6*(\xP@parE-\xP@parC)/\xP@bigdim\relax
\xP@partlen\dimexpr\xP@lenA+\xP@lenB\relax
{\@tempdima\dimexpr\xP@oldpartlen-\xP@partlen\relax
\expandafter}\ifdim\ifdim\@tempdima<\z@-\fi\@tempdima>\xP@tolerance
\edef\next@{\noexpand\xP@arclength\xP@parB\xP@velB\xP@parC\xP@velC\xP@lenA
\noexpand\xP@arclength{\the\xP@parD}{\the\xP@velD}{\the\xP@parE}{\the\xP@velE}{\the\xP@lenB}}\else
\xP@parA\xP@parE
\xP@velA\xP@velE
\advance\@tempdimb\xP@partlen
\DN@{}\fi
\next@
}
\xP@hook{curve}{@crv@}
\newcommand*\xP@@crv@[2]{\DN@{#1#2}\ifx\next@\@empty \edef\next@{\crv@defaultshape}\ifx\bstartPLACE@\@empty\xdef\crvSTYLE@@{{\crv@defaultshape}}\fi
\else
\ifx\bstartPLACE@\@empty\gdef\crvSTYLE@@{#1{#2}}\fi
\fi
\ifx\next@\@empty\crv@noobject \DN@{\crv@{}{\xy@@crvaddstack@}}\else\def\tmp@{-}\ifx\next@\tmp@ \DN@{\crv@{}{\xy@@crvaddstack@}}\else\def\tmp@{=}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir{=}}}\else\def\tmp@{2-}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir{2.}}}\else\def\tmp@{3-}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir{3.}}}\else\def\tmp@{--}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@specialtemplate@{--}}\else\def\tmp@{==}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir2{--}}}\else\def\tmp@{2--}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir2{--}}}\else\def\tmp@{3--}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir3{--}}}\else\def\tmp@{.}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@specialtemplate@{.}}\else\def\tmp@{:}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir{:}}}\else\def\tmp@{2.}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir{:}}}\else\def\tmp@{3.}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir3{.}}}\else\def\tmp@{~}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir{~}}}\else\def\tmp@{2~}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir2{~}}}\else\def\tmp@{3~}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir3{~}}}\else\def\tmp@{~~}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir{~~}}}\else\def\tmp@{2~~}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir2{~~}}}\else\def\tmp@{3~~}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@normaltemplate{\dir3{~~}}}\else\def\tmp@{..}\ifx\next@\tmp@
\DN@{\expandafter\crv@\crv@specialtemplate@{.}}\else
\DN@{\expandafter\crv@\crv@othertemplate{\dir#1{#2}}}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\next@}
\xP@hook{curve}{xysplinespecialcases@}
\newcommand*\xP@xysplinespecialcases@{\ifx\@empty\xycrvdrop@
\ifx\@empty\xycrvconn@\DN@{\splinesolid@}\else\DN@{ \dir{-}}\ifx\next@\xycrvconn@\DN@{\splinesolid@}\else\DN@{ \dir2{-}}\ifx\next@\xycrvconn@\DN@{\splinedoubled@}\else\DN@{ \dir{=}}\ifx\next@\xycrvconn@\DN@{\splineribboned@}\else\DN@{ \dir{2.}}\ifx\next@\xycrvconn@\DN@{\splinedoubled@}\else\DN@{ \dir3{-}}\ifx\next@\xycrvconn@\DN@{\splinetrebled@}\else\DN@{ \dir{3.}}\ifx\next@\xycrvconn@\DN@{\splinetrebled@}\else\DN@{ \dir{--}}\ifx\next@\xycrvconn@\DN@{\splinedashed@}\else\DN@{ \dir{.}}\ifx\next@\xycrvconn@\DN@{\splinedotted@}\else\DN@{ \dir{:}}\ifx\next@\xycrvconn@\DN@{\splinedbldotted@}\else\DN@{ \dir2{.}}\ifx\next@\xycrvconn@\DN@{\splinedbldotted@}\else\DN@{ \dir3{.}}\ifx\next@\xycrvconn@\DN@{\xP@splinetrbldotted}\else\DN@{ \dir2{--}}\ifx\next@\xycrvconn@\DN@{\xP@splinedbldashed}\else\DN@{ \dir3{--}}\ifx\next@\xycrvconn@\DN@{\xP@splinetrbldashed}\else\DN@{ \dir{~}}\ifx\next@\xycrvconn@\DN@{\xP@splinesquiggled}\else\DN@{ \dir2{~}}\ifx\next@\xycrvconn@\DN@{\xP@splinedblsquiggled}\else\DN@{ \dir3{~}}\ifx\next@\xycrvconn@\DN@{\xP@splinetrblsquiggled}\else\DN@{ \dir{~~}}\ifx\next@\xycrvconn@\DN@{\xP@splinebrokensquiggled}\else\DN@{ \dir2{~~}}\ifx\next@\xycrvconn@\DN@{\xP@splinebrokendblsquiggled}\else\DN@{ \dir3{~~}}\ifx\next@\xycrvconn@\DN@{\xP@splinebrokentrblsquiggled}\else\ifdim\splinetol@>\z@\else\splinedefaulttol@\fi
\DN@{\splineset@@}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
\else
\DN@{\splineset@@}\fi
\ifInvisible@\DN@{}\fi
\next@
}
\xP@hook{curve}{splinedoubled@}
\newcommand*\xP@splinedoubled@{\xP@checkspline\xP@splinemultsolid\xP@doublestroke}
\xP@hook{curve}{splineribboned@}
\@ifdefinable\xP@splineribboned@\relax
\let\xP@splineribboned@\xP@splinedoubled@
\xP@hook{curve}{splinetrebled@}
\newcommand*\xP@splinetrebled@{\xP@checkspline\xP@splinemultsolid\xP@trblstroke}
\newcommand*\xP@doublestroke{\xydashh@/2,-\xydashh@/2}
\newcommand*\xP@trblstroke{\xydashh@,\z@,-\xydashh@}
\newcommand*\xP@checkspline[1]{\readsplineparams@
\let\next@\@gobble
\ifdim\dimen5<\dimen7
\xP@preparespline
\ifdim\@tempdimb>\z@
\ifdim\@tempdimb<2\dimexpr\xP@preclw\relax
\let\next@\xP@splinemultsolid
\else
\let\next@#1\fi
\fi
\fi
\next@
}
\newcommand*\xP@splinemultsolid[1]{{\xP@inibigdim
\@temptokena{}\xP@setsolidpat
\@for\@tempa:={#1}\do{\xP@paintsolid\z@\xP@bigdim}\xP@stroke{\the\@temptokena}}}
\newcommand*\xP@paintsolid[2]{{\xP@savepts
\xP@a#1\relax
\xP@c#2\relax
\xP@movetotrue
\xP@paintsolid@
\xdef\@gtempa{\the\@temptokena}}\@temptokena\expandafter{\@gtempa}}
\newcommand*\xP@paintsolid@{\xP@b\xP@c
\xP@off\dimexpr\@tempa\relax
\ifdim\xP@off=\z@
\xP@shaveprec\xP@a\xP@c
\else
\loop
\xP@restorepts
\xP@offsetsegment
\xP@testoffset
\unless\ifxP@offsetok
\xP@b\dimexpr\xP@a+(\xP@b-\xP@a)*7/10\relax
\repeat
\fi
\xP@append\@temptokena{\ifxP@moveto\xP@coor\X@p\Y@p m \fi
\xP@coor\L@c\U@c\xP@coor\R@c\D@c\xP@coor\X@c\Y@c c }\xP@movetofalse
\ifdim\xP@b<\xP@c\relax
\xP@a\xP@b
\expandafter\xP@paintsolid@
\fi
}
\@ifdefinable\ifxP@moveto\relax
\@ifdefinable\xP@movetotrue\relax
\@ifdefinable\xP@movetofalse\relax
\newif\ifxP@moveto
\newcommand*\xP@savepts{\xP@xa\X@p
\xP@ya\Y@p
\xP@xb\L@c
\xP@yb\U@c
\xP@xc\R@c
\xP@yc\D@c
\xP@xd\X@c
\xP@yd\Y@c
}
\newcommand*\xP@restorepts{\X@p\xP@xa
\Y@p\xP@ya
\L@c\xP@xb
\U@c\xP@yb
\R@c\xP@xc
\D@c\xP@yc
\X@c\xP@xd
\Y@c\xP@yd
}
\@ifdefinable\xP@tmx\relax
\@ifdefinable\xP@tmy\relax
\newcommand*\xP@Tmxy{*\xP@Tmx/\xP@Tmy}
\newcommand*\xP@Tmyx{*\xP@Tmy/\xP@Tmx}
\newcommand*\xP@Tmzero{*\z@}
\newcommand*\xP@offsetsegment{{\xP@tangentvec\xP@a
\xP@xa\dimexpr\xP@precbezierpoly\X@p\L@c\R@c\X@c\xP@a/8+\d@Y*\xP@off/\@tempdimb\relax
\xP@ya\dimexpr\xP@precbezierpoly\Y@p\U@c\D@c\Y@c\xP@a/8-\d@X*\xP@off/\@tempdimb\relax
\xP@scaleT
\xP@Tax\d@X
\xP@Tay\d@Y
\xP@E\@tempdimb
\xP@tangentvec\xP@b
\xP@xd\dimexpr\xP@precbezierpoly\X@p\L@c\R@c\X@c\xP@b/8+\d@Y*\xP@off/\@tempdimb\relax
\xP@yd\dimexpr\xP@precbezierpoly\Y@p\U@c\D@c\Y@c\xP@b/8-\d@X*\xP@off/\@tempdimb\relax
\xP@scaleT
\xP@Tdx-\d@X
\xP@Tdy-\d@Y
\xP@F\@tempdimb
\xP@M\z@
\xP@Max\xP@M\xP@Tdx
\xP@Max\xP@M\xP@Tdy
\xP@L\dimexpr\xP@Tax*\xP@Tdx/\xP@M+\xP@Tay*\xP@Tdy/\xP@M\relax
\xP@tm\dimexpr(\xP@a+\xP@b)/2\relax
\ifdim\xP@L>\dimexpr\xP@E*\xP@F/\xP@M*49/50\relax
\d@X-\dimexpr\xP@Tay+\xP@Tdy\relax
\d@Y\dimexpr\xP@Tax+\xP@Tdx\relax
\xP@veclen
\xP@A\dimexpr\X@c-\X@p\relax
\xP@B\dimexpr\Y@c-\Y@p\relax
\xP@M\z@
\xP@Max\xP@M\xP@A
\xP@Max\xP@M\xP@B
\ifdim\xP@M=\z@
\xP@A\dimexpr\R@c-\L@c\relax
\xP@B\dimexpr\D@c-\U@c\relax
\xP@Max\xP@M\xP@A
\xP@Max\xP@M\xP@B
\fi
\xP@M\dimexpr\d@X*\xP@A/\xP@M+\d@Y*\xP@B/\xP@M\relax
\ifdim\xP@M<\z@
\multiply\d@X\m@ne
\multiply\d@Y\m@ne
\fi
\else
\xP@tangentvec\xP@tm
\fi
\xP@xm\dimexpr\xP@precbezierpoly\X@p\L@c\R@c\X@c\xP@tm+8\d@Y*\xP@off/\@tempdimb\relax
\xP@ym\dimexpr\xP@precbezierpoly\Y@p\U@c\D@c\Y@c\xP@tm-8\d@X*\xP@off/\@tempdimb\relax
\xP@Tmx\d@X
\xP@Tmy\d@Y
\xP@ifabsless\xP@Tmy\xP@Tmx
\let\xP@tmy\xP@Tmyx
\let\xP@tmx\@empty
\else
\ifdim\xP@Tmy=\z@
\let\xP@tmx\xP@Tmzero
\let\xP@tmy\xP@Tmzero
\else
\let\xP@tmy\@empty
\let\xP@tmx\xP@Tmxy
\fi
\fi
\xP@fa\p@
\xP@fd\p@
\xP@tm\p@
\count@\z@
\loop
\xP@offsetpoints
\@tempswafalse
\ifnum10>\count@
\xP@objfun\xP@oldobj
\ifdim\xP@oldobj>\xP@maxobjfun\relax\@tempswatrue\fi
\fi
\if@tempswa
\xP@offsetloop
\repeat
\xdef\@gtempa{\X@p\the\xP@xa\Y@p\the\xP@ya
\L@c\the\xP@xb\U@c\the\xP@yb\R@c\the\xP@xc\D@c\the\xP@yc
\X@c\the\xP@xd\Y@c\the\xP@yd\relax}}\@gtempa
}
\newcommand*\xP@scaleT{\xP@B6.28\xP@off
\xP@abs\xP@B
\xP@C\dimexpr\d@X*\xP@B/\@tempdimb\relax
\xP@D\dimexpr\d@Y*\xP@B/\@tempdimb\relax
\xP@A\dimexpr\xP@b-\xP@a\relax
\d@X\dimexpr\xP@C+\d@X*\xP@A/\xP@bigdim\relax
\d@Y\dimexpr\xP@D+\d@Y*\xP@A/\xP@bigdim\relax
\@tempdimb\dimexpr\xP@B+\@tempdimb*\xP@A/\xP@bigdim\relax
}
\newcommand*\xP@offsetloop{\xP@C\dimexpr\xP@C/2\relax
\xP@G\dimexpr\xP@G/2\relax
\xP@ta\dimexpr2\p@-\xP@tm\relax
\xP@tb\dimexpr\xP@tm*\xP@ta/\p@\relax
\xP@A\dimexpr\xP@Tax*\xP@tb/\p@*\xP@ta/\p@\relax
\xP@B\dimexpr\xP@Tdx*\xP@tb/\p@*\xP@tm/\p@\relax
\xP@E\dimexpr\xP@Tay*\xP@tb/\p@*\xP@ta/\p@\relax
\xP@F\dimexpr\xP@Tdy*\xP@tb/\p@*\xP@tm/\p@\relax
\xP@tb\dimexpr2\p@-3\xP@tm\relax
\xP@tc\dimexpr\xP@tb+2\p@\relax
\xP@I\dimexpr(2\xP@Tay\xP@tmx-2\xP@Tax\xP@tmy)*\xP@tb/\p@*\xP@ta/\p@\relax
\xP@J\dimexpr(2\xP@Tdy\xP@tmx-2\xP@Tdx\xP@tmy)*\xP@tc/\p@*\xP@tm/\p@\relax
\xP@K\dimexpr((\xP@yd-\xP@ya+(\xP@yb-\xP@yc)*3)
*\xP@tm/\p@+(\xP@yc-2\xP@yb+\xP@ya)*2)*12\xP@tmx
-((\xP@xd-\xP@xa+(\xP@xb-\xP@xc)*3)
*\xP@tm/\p@+(\xP@xc-2\xP@xb+\xP@xa)*2)*12\xP@tmy\relax
\xP@solvelinearsystem
\ifxP@validsol
\xP@correctsol
\ifdim\xP@ta=\z@
\ifdim\xP@tb=\z@
\ifdim\xP@tc=\z@
\xP@validsolfalse
\fi\fi\fi
\fi
\ifxP@validsol
\else
\xP@applinsys
\advance\xP@fa-\xP@ta
\advance\xP@fd-\xP@tb
\advance\xP@tm-\xP@tc
\ifdim\xP@tm<\z@\xP@tm\z@\fi
\ifdim\xP@tm>2\p@\xP@tm2\p@\fi
\fi
\advance\count@\@ne
}
\newcommand*\xP@maxsol{3pt}
\newcommand*\xP@correctsol{\xP@M\z@
\xP@Max\xP@M\xP@ta
\xP@Max\xP@M\xP@tb
\xP@Max\xP@M\xP@tc
\ifdim\xP@M>\xP@maxsol
\xP@ta\dimexpr\xP@maxsol*\xP@ta/\xP@M\relax
\xP@tb\dimexpr\xP@maxsol*\xP@tb/\xP@M\relax
\xP@tc\dimexpr\xP@maxsol*\xP@tc/\xP@M\relax
\fi
\advance\xP@fa-\xP@ta
\advance\xP@fd-\xP@tb
\xP@M\xP@tm
\advance\xP@tm-\xP@tc
\ifdim\xP@tm<\z@\xP@tm\z@\fi
\ifdim\xP@tm>2\p@\xP@tm2\p@\fi
{\xP@offsetpoints
\xP@objfun\xP@M
\expandafter}\ifdim\xP@M>\xP@oldobj
\advance\xP@fa\xP@ta
\advance\xP@fd\xP@tb
\xP@tm\xP@M
\xP@validsolfalse
\fi
}
\newcommand*\xP@objfun[1]{\xP@D\dimexpr\xP@bezierpoly\xP@xa\xP@xb\xP@xc\xP@xd\xP@tm-\xP@xm\relax
\xP@H\dimexpr\xP@bezierpoly\xP@ya\xP@yb\xP@yc\xP@yd\xP@tm-\xP@ym\relax
\xP@C\xP@beziertan\xP@xa\xP@xb\xP@xc\xP@xd\xP@tm
\xP@G\xP@beziertan\xP@ya\xP@yb\xP@yc\xP@yd\xP@tm
\xP@L\dimexpr\xP@G\xP@tmx-\xP@C\xP@tmy\relax
#1\z@
\xP@Max#1\xP@D
\xP@Max#1\xP@H
\xP@Max#1\xP@L
#1\ifdim#1>4843165sp
\maxdimen
\else
\dimexpr\xP@D*\xP@D/\p@+\xP@H*\xP@H/\p@+\xP@L*\xP@L/\p@\relax
\fi
}
\newcommand*\xP@offsetpoints{\xP@xb\dimexpr\xP@xa+\xP@Tax*\xP@fa/196608\relax
\xP@yb\dimexpr\xP@ya+\xP@Tay*\xP@fa/196608\relax
\xP@xc\dimexpr\xP@xd+\xP@Tdx*\xP@fd/196608\relax
\xP@yc\dimexpr\xP@yd+\xP@Tdy*\xP@fd/196608\relax
}
\newcommand*\xP@bezierpoly[5]{\dimexpr(((#4-#1+(#2-#3)*3)*#5/\p@+(#1-2#2+#3)*6)*#5/\p@+(#2-#1)*12)*#5/\p@
+#1*8\relax
}
\newcommand*\xP@precbezierpoly[5]{\dimexpr(((#4-#1+(#2-#3)*3)*2*#5/\xP@bigdim+(#1-2#2+#3)*6)*2*#5/\xP@bigdim
+(#2-#1)*12)*2*#5/\xP@bigdim+#1*8\relax
}
\newcommand*\xP@beziertan[5]{\dimexpr((#4-#1+(#2-#3)*3)*3*#5/32768+(#1-2#2+#3)*24)*#5/\p@+(#2-#1)*24\relax
}
\newcommand*\xP@precbeziertan[5]{\dimexpr((#4-#1+(#2-#3)*3)*#5/\xP@bigdim+(#1-2#2+#3)*2)*#5/\xP@bigdim
+#2-#1\relax
}
\@ifdefinable\xP@varone\relax
\@ifdefinable\xP@vartwo\relax
\@ifdefinable\xP@varthree\relax
\@ifdefinable\ifxP@validsol\relax
\@ifdefinable\xP@validsoltrue\relax
\@ifdefinable\xP@validsolfalse\relax
\newif\ifxP@validsol
\newcommand*\xP@solvelinearsystem{{\xP@scalerow\xP@A\xP@B\xP@C\xP@D
\xP@scalerow\xP@E\xP@F\xP@G\xP@H
\xP@scalerow\xP@I\xP@J\xP@K\xP@L
\xP@scalecol\xP@A\xP@E\xP@I\xP@scaleone
\xP@scalecol\xP@B\xP@F\xP@J\xP@scaletwo
\xP@scalecol\xP@C\xP@G\xP@K\xP@scalethree
\let\xP@varone\xP@ta
\let\xP@vartwo\xP@tb
\let\xP@varthree\xP@tc
\count@\m@ne
\@tempcnta\m@ne
\xP@ifabsless\xP@A\xP@B\@tempcnta\z@\xP@M\xP@B
\else\xP@M\xP@A\fi
\xP@ifabsless\xP@M\xP@C\@tempcnta\@ne\xP@M\xP@C\fi
\xP@ifabsless\xP@M\xP@E\@tempcnta\m@ne\count@\z@\xP@M\xP@E\fi
\xP@ifabsless\xP@M\xP@F\@tempcnta\z@\count@\z@\xP@M\xP@F\fi
\xP@ifabsless\xP@M\xP@G\@tempcnta\@ne\count@\z@\xP@M\xP@G\fi
\xP@ifabsless\xP@M\xP@I\@tempcnta\m@ne\count@\@ne\xP@M\xP@I\fi
\xP@ifabsless\xP@M\xP@J\@tempcnta\z@\count@\@ne\xP@M\xP@J\fi
\xP@ifabsless\xP@M\xP@K\@tempcnta\@ne\count@\@ne\fi
\ifcase\count@
\xP@swapdim\xP@A\xP@E
\xP@swapdim\xP@B\xP@F
\xP@swapdim\xP@C\xP@G
\xP@swapdim\xP@D\xP@H
\or
\xP@swapdim\xP@A\xP@I
\xP@swapdim\xP@B\xP@J
\xP@swapdim\xP@C\xP@K
\xP@swapdim\xP@D\xP@L
\fi
\ifcase\@tempcnta
\xP@swapdim\xP@A\xP@B
\xP@swapdim\xP@E\xP@F
\xP@swapdim\xP@I\xP@J
\let\xP@varone\xP@tb
\let\xP@vartwo\xP@ta
\xP@swapnum\xP@scaleone\xP@scaletwo
\or
\xP@swapdim\xP@A\xP@C
\xP@swapdim\xP@E\xP@G
\xP@swapdim\xP@I\xP@K
\let\xP@varone\xP@tc
\let\xP@varthree\xP@ta
\xP@swapnum\xP@scaleone\xP@scalethree
\fi
\multiply\xP@E\m@ne
\multiply\xP@I\m@ne
\ifdim\xP@A=\z@
\else
\advance\xP@F\dimexpr\xP@B*\xP@E/\xP@A\relax
\advance\xP@G\dimexpr\xP@C*\xP@E/\xP@A\relax
\advance\xP@H\dimexpr\xP@D*\xP@E/\xP@A\relax
\advance\xP@J\dimexpr\xP@B*\xP@I/\xP@A\relax
\advance\xP@K\dimexpr\xP@C*\xP@I/\xP@A\relax
\advance\xP@L\dimexpr\xP@D*\xP@I/\xP@A\relax
\fi
\count@\m@ne
\xP@ifabsless\xP@F\xP@G\@tempcnta\z@\xP@M\xP@G
\else\@tempcnta\m@ne\xP@M\xP@F\fi
\xP@ifabsless\xP@M\xP@J\@tempcnta\m@ne\count@\z@\xP@M\xP@J\fi
\xP@ifabsless\xP@M\xP@K\@tempcnta\z@\count@\z@\fi
\ifnum\count@=\z@
\xP@swapdim\xP@F\xP@J
\xP@swapdim\xP@G\xP@K
\xP@swapdim\xP@H\xP@L
\fi
\ifnum\@tempcnta=\z@
\xP@swapdim\xP@B\xP@C
\xP@swapdim\xP@F\xP@G
\xP@swapdim\xP@J\xP@K
\let\@tempa\xP@varthree
\let\xP@varthree\xP@vartwo
\let\xP@vartwo\@tempa
\xP@swapnum\xP@scaletwo\xP@scalethree
\fi
\ifdim\xP@F=\z@
\else
\advance\xP@K\dimexpr-\xP@G*\xP@J/\xP@F\relax
\advance\xP@L\dimexpr-\xP@H*\xP@J/\xP@F\relax
\fi
\xP@ifabsless{\dimexpr\xP@L/60\relax}{\dimexpr\xP@K/\xP@scalethree\relax}\xP@validsoltrue
\xP@varthree\dimexpr\xP@L*(\xP@scalethree*\p@)/\xP@K\relax
\else
\xP@validsolfalse
\fi
\xP@checkabs{\xP@H/8191}{\xP@F/\xP@scaletwo}\xP@checkabs{\xP@G/\xP@scalethree/136}{\xP@F/\xP@scaletwo}\ifxP@validsol
\xP@vartwo\dimexpr\xP@H*(\xP@scaletwo*\p@)/\xP@F
-\xP@varthree*\xP@scaletwo/\xP@scalethree*\xP@G/\xP@F\relax
\xP@checkabs\xP@vartwo{60pt}\fi
\xP@checkabs{\xP@D/5461}{\xP@A/\xP@scaleone}\xP@checkabs{\xP@B/\xP@scaletwo/91}{\xP@A/\xP@scaleone}\xP@checkabs{\xP@C/\xP@scalethree/91}{\xP@A/\xP@scaleone}\ifxP@validsol
\xP@varone\dimexpr\xP@D*(\xP@scaleone*\p@)/\xP@A
-\xP@vartwo*\xP@scaleone/\xP@scaletwo*\xP@B/\xP@A
-\xP@varthree*\xP@scaleone/\xP@scalethree*\xP@C/\xP@A\relax
\xP@checkabs\xP@varone{60pt}\fi
\xdef\@gtempa{\ifxP@validsol
\xP@ta\the\xP@ta\relax
\xP@tb\the\xP@tb\relax
\xP@tc\the\xP@tc\relax
\noexpand\xP@validsoltrue
\else
\noexpand\xP@validsolfalse
\fi
}}\@gtempa
}
\newcommand*\xP@scalerow[4]{\xP@M\z@
\xP@Max\xP@M#1\xP@Max\xP@M#2\xP@Max\xP@M#3\xP@Max\xP@M#4\count@134217727
\loop
\divide\xP@M\tw@
\ifdim\xP@M>\z@
\divide\count@\tw@
\repeat
\advance\count@\@ne
\multiply#1\count@
\multiply#2\count@
\multiply#3\count@
\multiply#4\count@
}
\newcommand*\xP@scalecol[4]{\xP@M\z@
\xP@Max\xP@M#1\xP@Max\xP@M#2\xP@Max\xP@M#3#416777215
\loop
\divide\xP@M\tw@
\ifdim\xP@M>\z@
\divide#4\tw@
\repeat
\advance#4\@ne
\multiply#1#4\multiply#2#4\multiply#3#4}
\newcommand*\xP@checkabs[2]{\xP@ifabsless{\dimexpr#1\relax}{\dimexpr#2\relax}\else\xP@validsolfalse\fi}
\newcommand*\xP@applinsys{{\xP@applinsys@
\xP@ta\xP@dta
\xP@tb\xP@dtb
\xP@tc\xP@dtc
\xP@checkapp
\if@tempswa
\xP@modobj
\xP@applinsys@
\xP@checkapp
\if@tempswa
\xP@modsol
\xP@modobj
\xP@applinsys@
\xP@modsol
\fi
\fi
\xdef\@gtempa{\xP@ta\the\xP@ta\relax
\xP@tb\the\xP@tb\relax
\xP@tc\the\xP@tc\relax
}}\@gtempa
}
\newcommand*\xP@checkapp{\@tempswatrue
\ifdim\xP@dta=\z@
\ifdim\xP@dtb=\z@
\ifdim\xP@dtc=\z@
\@tempswafalse
\fi\fi\fi
}
\newcommand*\xP@modobj{\advance\xP@D
\dimexpr-\xP@A*\xP@dta/\p@-\xP@B*\xP@dtb/\p@-\xP@C*\xP@dtc/\p@\relax
\advance\xP@H
\dimexpr-\xP@E*\xP@dta/\p@-\xP@F*\xP@dtb/\p@-\xP@G*\xP@dtc/\p@\relax
\advance\xP@L
\dimexpr-\xP@I*\xP@dta/\p@-\xP@J*\xP@dtb/\p@-\xP@K*\xP@dtc/\p@\relax
}
\newcommand*\xP@modsol{\advance\xP@ta\xP@dta
\advance\xP@tb\xP@dtb
\advance\xP@tc\xP@dtc
}
\newcommand*\xP@applinsys@{{\xP@sa\z@
\xP@Max\xP@sa\xP@A
\xP@Max\xP@sa\xP@B
\xP@Max\xP@sa\xP@C
\xP@Max\xP@sa\xP@E
\xP@Max\xP@sa\xP@F
\xP@Max\xP@sa\xP@G
\xP@Max\xP@sa\xP@I
\xP@Max\xP@sa\xP@J
\xP@Max\xP@sa\xP@K
\xP@sa\ifdim\xP@sa<5460pt\thr@@\xP@sa\else\maxdimen\fi
\xP@sb\z@
\xP@Max\xP@sb\xP@D
\xP@Max\xP@sb\xP@H
\xP@Max\xP@sb\xP@L
\ifdim\xP@sb>\z@
\xP@D\dimexpr\xP@D*\maxdimen/\xP@sb\relax
\xP@H\dimexpr\xP@H*\maxdimen/\xP@sb\relax
\xP@L\dimexpr\xP@L*\maxdimen/\xP@sb\relax
\fi
\xP@Aba\dimexpr\xP@A*\xP@D/\xP@sa+\xP@E*\xP@H/\xP@sa+\xP@I*\xP@L/\xP@sa\relax
\xP@Abb\dimexpr\xP@B*\xP@D/\xP@sa+\xP@F*\xP@H/\xP@sa+\xP@J*\xP@L/\xP@sa\relax
\xP@Abc\dimexpr\xP@C*\xP@D/\xP@sa+\xP@G*\xP@H/\xP@sa+\xP@K*\xP@L/\xP@sa\relax
\xP@AAba\dimexpr\xP@A*\xP@Aba/\xP@sa+\xP@B*\xP@Abb/\xP@sa
+\xP@C*\xP@Abc/\xP@sa\relax
\xP@AAbb\dimexpr\xP@E*\xP@Aba/\xP@sa+\xP@F*\xP@Abb/\xP@sa
+\xP@G*\xP@Abc/\xP@sa\relax
\xP@AAbc\dimexpr\xP@I*\xP@Aba/\xP@sa+\xP@J*\xP@Abb/\xP@sa
+\xP@K*\xP@Abc/\xP@sa\relax
\xP@sc\z@
\xP@Max\xP@sc\xP@Aba
\xP@Max\xP@sc\xP@Abb
\xP@Max\xP@sc\xP@Abc
\xP@Max\xP@sc\xP@AAba
\xP@Max\xP@sc\xP@AAbb
\xP@Max\xP@sc\xP@AAbc
\ifdim\xP@sc=\z@
\xP@AAb\z@
\else
\xP@Ab\dimexpr\xP@Aba*\xP@bigdim/\xP@sc*\xP@Aba/\xP@sc
+\xP@Abb*\xP@bigdim/\xP@sc*\xP@Abb/\xP@sc
+\xP@Abc*\xP@bigdim/\xP@sc*\xP@Abc/\xP@sc
\relax
\xP@AAb\dimexpr\xP@AAba*\xP@bigdim/\xP@sc*\xP@AAba/\xP@sc
+\xP@AAbb*\xP@bigdim/\xP@sc*\xP@AAbb/\xP@sc
+\xP@AAbc*\xP@bigdim/\xP@sc*\xP@AAbc/\xP@sc
\relax
\fi
\xdef\@gtempa{\ifdim\xP@AAb=\z@
\xP@dta\z@
\xP@dtb\z@
\xP@dtc\z@
\else
\xP@dta\the\dimexpr\xP@Aba*\xP@sb/\xP@sa*\p@/\xP@AAb*\xP@Ab/\maxdimen
\relax
\xP@dtb\the\dimexpr\xP@Abb*\xP@sb/\xP@sa*\p@/\xP@AAb*\xP@Ab/\maxdimen
\relax
\xP@dtc\the\dimexpr\xP@Abc*\xP@sb/\xP@sa*\p@/\xP@AAb*\xP@Ab/\maxdimen
\relax
\fi
}}\@gtempa
}
\@ifdefinable\ifxP@offsetok\relax
\@ifdefinable\xP@offsetoktrue\relax
\@ifdefinable\xP@offsetokfalse\relax
\newif\ifxP@offsetok
\newcommand*\xP@maxdev{.1pt}
\newcommand*\xP@maxobjfun{.005pt}
\newcommand*\xP@testoffset{{\gdef\xP@afteroffsetok{\xP@offsetoktrue}\def\xP@offsetokif{\ifdim\xP@ti<1.85pt}\xP@ti.1pt
\loop
\xP@tip\dimexpr\xP@a+(\xP@b-\xP@a)*\xP@ti/131072\relax
\L@p\xP@precbezierpoly\xP@xa\xP@xb\xP@xc\xP@xd\xP@tip
\U@p\xP@precbezierpoly\xP@ya\xP@yb\xP@yc\xP@yd\xP@tip
\xP@valA\dimexpr\xP@bezierpoly\X@p\L@c\R@c\X@c\xP@ti-\L@p\relax
\xP@valB\dimexpr\xP@bezierpoly\Y@p\U@c\D@c\Y@c\xP@ti-\U@p\relax
\d@X3\xP@precbeziertan\xP@xa\xP@xb\xP@xc\xP@xd\xP@tip
\d@Y3\xP@precbeziertan\xP@ya\xP@yb\xP@yc\xP@yd\xP@tip
\xP@veclen
\@tempdimc\dimexpr(\xP@b-\xP@a)*\@tempdimb/\xP@bigdim\relax
\xP@abs\@tempdimc
\ifdim.01pt<\@tempdimc
\xP@devA\dimexpr\xP@valA*\d@X/\@tempdimb+\xP@valB*\d@Y/\@tempdimb\relax
\xP@devB\dimexpr\xP@valA*\d@Y/\@tempdimb-\xP@valB*\d@X/\@tempdimb-8\xP@off
\relax
\xP@abs\xP@devA
\xP@abs\xP@devB
\@tempdima\dimexpr\xP@devA+\xP@devB\relax
\else
\ifdim\@tempdimc=\z@
\@tempdima\z@
\else
{\d@X\xP@valA
\d@Y\xP@valB
\xP@veclen@
\global\dimen@i\@tempdimb
}\@tempdima\dimen@i
\advance\@tempdima\ifdim\xP@off>\z@-\fi8\xP@off
\xP@abs\@tempdima
\fi
\fi
\ifdim\@tempdima>\xP@maxdev
\divide\L@p-8\relax
\divide\U@p-8\relax
{\xP@transformcoor\X@p\Y@p
\xP@transformcoor\L@c\U@c
\xP@transformcoor\R@c\D@c
\xP@transformcoor\X@c\Y@c
\xP@findzero
}\fi
\xP@offsetokif
\advance\xP@ti.1pt
\repeat
\expandafter}\xP@afteroffsetok
}
\newcommand*\xP@afteroffsetok{}
\newcommand*\xP@offsetokif{}
\newcommand*\xP@transformcoor[2]{\advance#1\L@p
\advance#2\U@p
\@tempdima\dimexpr#1*\d@X/\@tempdimb+#2*\d@Y/\@tempdimb\relax
#2\dimexpr#2*\d@X/\@tempdimb-#1*\d@Y/\@tempdimb\relax
#1\@tempdima
}
\newcommand*\xP@findzero{\xP@setleftvalue{.05}\xP@setrightvalue{.05}\ifdim\xP@valB<\z@\xP@reversecoeff\fi
\ifdim\xP@valA>\z@
\@tempswatrue
\@for\@tempa:={.1,.15,.2,.25,.35,.5,1.1}\do{\if@tempswa
\xP@setleftvalue\@tempa
\ifdim\xP@valA<\z@\@tempswafalse\fi
\if@tempswa
\xP@setrightvalue\@tempa
\ifdim\xP@valB<\z@
\@tempswafalse
\xP@reversecoeff
\fi
\fi
\fi
}\if@tempswa
\L@p\xP@ti
\xP@valA\xP@bezierpoly\X@p\L@c\R@c\X@c\L@p
\ifdim\xP@valA<\z@
\xP@setrightvalue{.05}\else
\U@p\L@p
\xP@valB\xP@valA
\fi
\fi
\fi
\loop
\ifnum\numexpr\U@p-\L@p\relax>\@ne
\xP@ti\dimexpr(\L@p+\U@p)/2\relax
\xP@devA\xP@bezierpoly\X@p\L@c\R@c\X@c\xP@ti
\ifdim\xP@devA>\z@
\U@p\xP@ti
\xP@valB\xP@devA
\else
\L@p\xP@ti
\xP@valA\xP@devA
\fi
\repeat
\xP@ifabsless\xP@valB\xP@valA
\L@p\U@p
\xP@valA\xP@valB
\fi
\xP@valB\dimexpr\xP@bezierpoly\Y@p\U@c\D@c\Y@c\L@p+8\xP@off\relax
\xP@abs\xP@valA
\xP@abs\xP@valB
\ifdim\dimexpr\xP@valA+\xP@valB\relax>\xP@maxdev\relax
\xP@failed
\fi
}
\newcommand*\xP@failed{\global\let\xP@offsetokif\iffalse
\gdef\xP@afteroffsetok{\xP@offsetokfalse}}
\newcommand*\xP@reversecoeff{\multiply\X@p\m@ne
\multiply\L@c\m@ne
\multiply\R@c\m@ne
\multiply\X@c\m@ne
\multiply\xP@valA\m@ne
\multiply\xP@valB\m@ne
}
\newcommand*\xP@setleftvalue[1]{\L@p\dimexpr\xP@ti-#1\p@\relax
\ifdim\L@p<-.1pt\L@p-.1pt\fi
\xP@valA\xP@bezierpoly\X@p\L@c\R@c\X@c\L@p
}
\newcommand*\xP@setrightvalue[1]{\U@p\dimexpr\xP@ti+#1\p@\relax
\ifdim\U@p>2.1\p@\U@p2.1\p@\fi
\xP@valB\xP@bezierpoly\X@p\L@c\R@c\X@c\U@p
}
\newcommand*\xP@splinedbldashed{\xP@checkspline\xP@splinemultdashed\xP@doublestroke}
\newcommand*\xP@splinetrbldashed{\xP@checkspline\xP@splinemultdashed\xP@trblstroke}
\newcommand*\xP@splinemultdashed[1]{\xP@testcont\xP@dashmacro
\@tempcnta
\ifxP@splinecont
\numexpr2*((\@tempdimb-\xydashl@/3)/(2*\xydashl@))\relax
\else
\numexpr2*((\@tempdimb+\xydashl@)/(2*\xydashl@))-1\relax
\fi
\ifnum\@tempcnta>\@ne
\xP@splinemultdashed@#1\else
\ifnum\@tempcnta=\@ne
\xP@splinemultsolid#1
\else
\xP@savec
\fi
\fi
\global\let\xP@lastpattern\xP@dashmacro
}
\newcommand*\xP@splinemultdashed@[1]{{\xP@inibigdim
\@tempdima\dimexpr\@tempdimb/\@tempcnta\relax
\xP@temppar\z@
\toks@{}\xP@savec
\ifodd\@tempcnta
\else
\xP@slide
\fi
\@tempcnta\z@
\loop
\advance\@tempcnta\@ne
\xP@append\toks@{\ifodd\@tempcnta\noexpand\xP@paintdash\fi
{\the\xP@temppar}}\xP@oldpar\xP@temppar
\xP@slide
\ifdim\xP@temppar<\xP@bigdim
\repeat
\xP@lastpar
\ifodd\@tempcnta
\xP@temppar
\xP@append\toks@{{\the\xP@temppar}}\else
\xP@oldpar
\fi
\@temptokena{}\xP@setsolidpat
\global\let\xP@lastpattern\xP@dashmacro
\@for\@tempa:={#1}\do{\the\toks@}\xP@stroke{\the\@temptokena}}}
\newcommand*\xP@paintdash[2]{\xP@paintsolid{\dimexpr#1*\xP@bigdim/\xP@lastpar\relax}{\dimexpr#2*\xP@bigdim/\xP@lastpar\relax}}
\xP@hook{curve}{splinedbldotted@}
\newcommand*\xP@splinedbldotted@{\let\xP@normalmult\@ne
\xP@checkspline\xP@splinemultdotted\xP@doublestroke}
\newcommand*\xP@splinetrbldotted{\let\xP@normalmult\tw@
\xP@checkspline\xP@splinemultdotted\xP@trblstroke}
\newcommand*\xP@multidottedpat{\def\xP@pattern{0 J [\xP@coor\xP@preclw{\xydashh@-\xP@preclw}]0 d}\global\let\xP@lastpattern\xP@dotmacro
}
\@ifdefinable\xP@normalmult\relax
\newcommand\xP@splinemultdotted[1]{{\xP@inibigdim
\xP@temppar\z@
\xP@testcont\xP@dotmacro
\ifxP@splinecont
\@tempdimc\dimexpr\@tempdimb/(\@tempdimb/131072+1)\relax
\@tempdima\dimexpr\@tempdimc-\xP@preclw/2\relax
\xP@slide
\@tempdima\@tempdimc
\else
\@tempdima\dimexpr\xP@preclw/2\relax
\xP@slide
\@tempdima\dimexpr\@tempdimb-\xP@preclw\relax
\ifdim\@tempdima<\z@\@tempdima\z@\fi
\@tempdima\dimexpr\@tempdima/(\@tempdima/131072+1)\relax
\fi
\xP@savec
\toks@{}\ifdim\xP@temppar<\xP@bigdim
\loop
\xP@append\toks@{\noexpand\xP@paintdot{\the\xP@temppar}}\xP@oldpar\xP@temppar
\xP@slide
\ifdim\xP@temppar<\xP@bigdim
\repeat
\xP@velocity\xP@bigdim\xP@tempvel
\ifdim
\ifdim\xP@preclw<\xP@tempvel
\dimexpr2\xP@bigdim-\xP@oldpar-\xP@preclw*\xP@bigdim/\xP@tempvel\relax
\else
-\maxdimen
\fi<\xP@temppar
\xP@temppar\xP@oldpar
\else
\xP@append\toks@{\noexpand\xP@paintdot{\the\xP@temppar}}\fi
\@tempdima\dimexpr\xP@preclw/2\relax
\xP@slide
\xP@lastpar\xP@temppar
\@temptokena{}\the\toks@
\xP@multidottedpat
\xP@stroke{\the\@temptokena}\else
\global\let\xP@lastpattern\@empty
\fi
}}
\newcommand*\xP@slide{{\xP@slide@
\global\dimen@i\xP@temppar
}\xP@temppar\dimen@i
}
\newcommand*\xP@slide@{\xP@velocity\xP@temppar\xP@tempvel
\@tempdimc\dimexpr\xP@bigdim*\@tempdima/\@tempdimb\relax
\count@\z@
\@tempswatrue
\loop
\xP@velocity{\xP@temppar+\@tempdimc}\xP@tempvel@
\ifdim\dimexpr\@tempdima*4/13\relax>\xP@tempvel@
\@tempswafalse
\else
\xP@parinc\dimexpr\@tempdima*\xP@bigdim/\xP@tempvel@
-(\xP@tempvel+\xP@tempvel@)/2*\@tempdimc/\xP@tempvel@\relax
\advance\@tempdimc\xP@parinc
\ifdim\@tempdimc>.12\xP@bigdim
\@tempswafalse
\else
\ifdim\xP@parinc=\z@
\@tempswafalse
\else
\ifnum\count@=9\relax
\@tempswafalse
\fi
\fi
\fi
\fi
\if@tempswa
\advance\count@\@ne
\repeat
\ifdim\xP@temppar<5461pt
\ifdim\@tempdimc>.1\xP@bigdim
\@tempswatrue
\fi
\fi
\if@tempswa
{\dimen5\xP@temppar
\advance\xP@temppar.1\xP@bigdim
\ifdim\xP@temppar>5461pt\xP@temppar5461pt\fi
\dimen7\xP@temppar
\xP@shaveprec{\dimen5}{\dimen7}\xP@bezierlength
\global\dimen@i\dimexpr\@tempdima-\@tempdimb\relax
\global\dimen3\xP@temppar
}\@tempdima\dimen@i
\xP@temppar\dimen3\relax
\expandafter\xP@slide@
\else
\advance\xP@temppar\@tempdimc
\fi
}
\newcommand*\xP@paintdot[1]{\@tempdima\dimexpr#1*\xP@bigdim/\xP@lastpar\relax
\xP@tangent
\xP@posX\dimexpr\xP@precbezierpoly\X@p\L@c\R@c\X@c\@tempdima/8\relax
\xP@posY\dimexpr\xP@precbezierpoly\Y@p\U@c\D@c\Y@c\@tempdima/8\relax
\@tempdima\dimexpr(\xydashh@+\xP@preclw/\xP@normalmult)/2\relax
\L@p\dimexpr\d@Y*\@tempdima/\@tempdimb\relax
\U@p\dimexpr-\d@X*\@tempdima/\@tempdimb\relax
\xP@append\@temptokena{\xP@coor{\xP@posX+\L@p*\xP@normalmult}{\xP@posY+\U@p*\xP@normalmult}m \xP@coor{\xP@posX-\L@p*(\xP@normalmult+\@ne)}{\xP@posY-\U@p*(\xP@normalmult+\@ne)}l }}
\newcommand*\xP@splinesquiggled{\xP@checkspline\xP@splinesquiggled@\z@}
\newcommand*\xP@splinedblsquiggled{\xP@checkspline\xP@splinesquiggled@\xP@doublestroke}
\newcommand*\xP@splinetrblsquiggled{\xP@checkspline\xP@splinesquiggled@\xP@trblstroke}
\newcommand*\xP@splinesquiggled@[1]{{\xP@inibigdim
\xP@testcont\xP@oddsquigglemacro
\ifxP@splinecont
\def\xP@squigsign{-}\else
\let\xP@squigsign\@empty
\fi
\xP@savec
\@tempcnta=\numexpr\@tempdimb/\xybsqll@\relax
\ifnum\@tempcnta<\tw@\@tempcnta\tw@\fi
\multiply\@tempcnta\tw@
\@tempdima\dimexpr\@tempdimb/\@tempcnta\relax
\xP@squiglen\@tempdima
\xP@temppar\z@
\toks@{}\@tempcnta\z@
\loop
\advance\@tempcnta\@ne
\xP@append\toks@{\noexpand\xP@paintsquiggle{\the\xP@temppar}}\xP@oldpar\xP@temppar
\xP@slide
\ifdim\xP@temppar<\xP@bigdim
\repeat
\xP@lastpar
\ifodd\@tempcnta
\xP@oldpar
\advance\@tempcnta\m@ne
\else
\xP@temppar
\xP@append\toks@{\noexpand\xP@paintsquiggle{\the\xP@temppar}}\fi
\@temptokena{}\xP@setsolidpat
\global\expandafter\let\expandafter\xP@lastpattern
\ifodd\numexpr\@tempcnta/2\if\xP@squigsign-+1\fi\relax
\xP@oddsquigglemacro
\else
\xP@evensquigglemacro
\fi
\@for\@tempa:={#1}\do{\let\xP@dosquiggle\xP@dosquiggle@
\count@\z@
\the\toks@
}\xP@stroke{\the\@temptokena}}}
\newcommand*\xP@paintsquiggle[1]{\xP@squigglevectors{#1}\xP@dosquiggle
\ifnum\count@=\thr@@\relax\count@\z@\else\advance\count@\@ne\fi
}
\newcommand*\xP@squigglevectors[1]{\@tempdima\dimexpr#1*\xP@bigdim/\xP@lastpar\relax
\xP@tangent
\xP@posX\dimexpr\xP@precbezierpoly\X@p\L@c\R@c\X@c\@tempdima/8-\d@Y*(\@tempa)/\@tempdimb\relax
\xP@posY\dimexpr\xP@precbezierpoly\Y@p\U@c\D@c\Y@c\@tempdima/8+\d@X*(\@tempa)/\@tempdimb\relax
\L@p\dimexpr\d@X*\xP@squiglen/\@tempdimb\relax
\U@p\dimexpr\d@Y*\xP@squiglen/\@tempdimb\relax
\R@p\dimexpr\L@p*543339720/1311738121\relax
\D@p\dimexpr\U@p*543339720/1311738121\relax
\X@min\dimexpr\L@p*362911648/967576667\relax
\Y@min\dimexpr\U@p*362911648/967576667\relax
\X@max\dimexpr(\L@p+\xP@squigsign\U@p)*173517671/654249180\relax
\Y@max\dimexpr(\L@p-\xP@squigsign\U@p)*173517671/654249180\relax
}
\@ifdefinable\xP@dosquiggle@\relax
\newcommand*\xP@dosquiggle@{\edef\next@{\xP@coor{\xP@posX}{\xP@posY}m
\xP@coor{\xP@posX+\Y@max}{\xP@posY+\xP@squigsign\X@max}}\let\xP@dosquiggle\xP@dosquiggle@@
}
\newcommand*\xP@dosquiggle@@{\xP@append\@temptokena{\next@\expandafter\xP@coor
\ifcase\count@
{\xP@posX-\Y@max}{\xP@posY-\xP@squigsign\X@max}\xP@coor\xP@posX\xP@posY
\or
{\xP@posX-\xP@squigsign\D@p-\X@min}{\xP@posY+\xP@squigsign\R@p-\Y@min}\xP@coor{\xP@posX-\xP@squigsign\D@p}{\xP@posY+\xP@squigsign\R@p}\or
{\xP@posX-\X@max}{\xP@posY+\xP@squigsign\Y@max}\xP@coor\xP@posX\xP@posY
\or
{\xP@posX+\xP@squigsign\D@p-\X@min}{\xP@posY-\xP@squigsign\R@p-\Y@min}\xP@coor{\xP@posX+\xP@squigsign\D@p}{\xP@posY-\xP@squigsign\R@p}\fi c }\edef\next@{\expandafter\xP@coor
\ifcase\count@
{\xP@posX+\Y@max}{\xP@posY+\xP@squigsign\X@max}\or
{\xP@posX-\xP@squigsign\D@p+\X@min}{\xP@posY+\xP@squigsign\R@p+\Y@min}\or
{\xP@posX+\X@max}{\xP@posY-\xP@squigsign\Y@max}\or
{\xP@posX+\xP@squigsign\D@p+\X@min}{\xP@posY-\xP@squigsign\R@p+\Y@min}\fi
}}
\newcommand*\xP@splinebrokensquiggled{\xP@checkspline\xP@splinebrokensquiggled@\z@}
\newcommand*\xP@splinebrokendblsquiggled{\xP@checkspline\xP@splinebrokensquiggled@\xP@doublestroke}
\newcommand*\xP@splinebrokentrblsquiggled{\xP@checkspline\xP@splinebrokensquiggled@\xP@trblstroke}
\newcommand*\xP@splinebrokensquiggled@[1]{{\xP@inibigdim
\xP@testcont\xP@brokensquigglemacro
\ifxP@splinecont
\let\xP@squigsign\@firstoftwo
\else
\let\xP@squigsign\@secondoftwo
\fi
\xP@savec
\@tempcnta\numexpr(\@tempdimb\xP@squigsign{}{+2*\xybsqll@})/(4*\xybsqll@)\relax
\ifnum\@tempcnta<\@ne\@tempcnta\@ne\fi
\@tempdima\dimexpr\@tempdimb/(8*\@tempcnta\xP@squigsign{}{-4})\relax
\xP@squiglen\@tempdima
\xP@temppar\z@
\xP@squigsign{\xP@slide\xP@slide\xP@slide\xP@slide}{}\count@\z@
\toks@{}\loop
\xP@append\toks@{\noexpand\xP@paintbrokensquiggle{\the\xP@temppar}}\xP@slide
\xP@append\toks@{{\the\xP@temppar}}\xP@slide
\xP@append\toks@{{\the\xP@temppar}}\xP@slide
\xP@append\toks@{{\the\xP@temppar}}\xP@slide
\xP@append\toks@{{\the\xP@temppar}}\xP@lastpar\xP@temppar
\advance\count@\@ne
\ifnum\count@<\@tempcnta
\xP@slide
\xP@slide
\xP@slide
\xP@slide
\repeat
\@temptokena{}\xP@setsolidpat
\global\let\xP@lastpattern\xP@brokensquigglemacro
\let\xP@squigsign\@empty
\@for\@tempa:={#1}\do{\the\toks@}\xP@stroke{\the\@temptokena}}}
\newcommand*\xP@paintbrokensquiggle[5]{\xP@squigglevectors{#1}\xP@append\@temptokena{\xP@coor\xP@posX\xP@posY m \xP@coor{\xP@posX+\Y@max}{\xP@posY+\X@max}}\xP@squigglevectors{#2}\xP@append\@temptokena{\xP@coor{\xP@posX-\D@p-\X@min}{\xP@posY+\R@p-\Y@min}\xP@coor{\xP@posX-\D@p}{\xP@posY+\R@p}c \xP@coor{\xP@posX-\D@p+\X@min}{\xP@posY+\R@p+\Y@min}}\xP@squigglevectors{#3}\xP@append\@temptokena{\xP@coor{\xP@posX-\X@max}{\xP@posY+\Y@max}\xP@coor\xP@posX\xP@posY c \xP@coor{\xP@posX+\X@max}{\xP@posY-\Y@max}}\xP@squigglevectors{#4}\xP@append\@temptokena{\xP@coor{\xP@posX+\D@p-\X@min}{\xP@posY-\R@p-\Y@min}\xP@coor{\xP@posX+\D@p}{\xP@posY-\R@p}c \xP@coor{\xP@posX+\D@p+\X@min}{\xP@posY-\R@p+\Y@min}}\xP@squigglevectors{#5}\xP@append\@temptokena{\xP@coor{\xP@posX-\Y@max}{\xP@posY-\X@max}\xP@coor\xP@posX\xP@posY c }}
\xyendinput
%%
%% End of file `xypdf-cu.tex'.
