ó
    [hC¥ ã                  óL  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKJr  SSKrSSKJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%  SSK&r'SSK(J)r)  SSK*J+r+J,r,J-r-J.r.  SS	K/J0r0J1r1J2r2  SS
K3J4r4J5r5J6r6J7r7  SSK8J9r:  SSKJ;r<  \:" \<5      Rz                  S:  a  SSKJ>r?  OSSKJ?r?  \R€                  (       a  SSKAJBrB  SSK3JCrC  \Rˆ                  " 5         \RŠ                  " S5      rFS„S jrG " S S\5      rHS\HlI         " S S\5      rJS\JlI         " S S5      rK " S S\5      rL " S S\5      rM " S S\Rœ                  5      rO " S  S!\O\R                   S"9rQ " S# S$\Q5      rR " S% S&\Q5      rS " S' S(\S\R                   S"9rT " S) S*\T5      rU " S+ S,\T5      rV " S- S.\S5      rW " S/ S0\W5      rXS1rYS2rZ " S3 S45      r[ " S5 S6\[5      r\ " S7 S8\[5      r] " S9 S:\[5      r^ " S; S<\[5      r_ " S= S>\[5      r`0 S?\`_S@\`_SA\__SB\\_SC\\_SD\\_SE\\_SF\\_SG\\_SH\\_SI\]_SJ\]_SK\]_SL\]_SM\]_SN\]_SO\]_\`\`SP.EraS…SR jrb " SS ST5      rc " SU SV\c5      rd " SW SX\d5      re " SY SZ\d5      rf " S[ S\\c5      rg " S] S^\g5      rh " S_ S`\d5      ri " Sa Sb\i5      rj " Sc Sd\i5      rk " Se Sf\d5      rl " Sg Sh\l5      rm " Si Sj\l5      rn " Sk Sl\5      ro\o" SmSnSSmS5      \o" SmSnSoSmS5      \o" SmSnSSmS5      \o" SmSmSSnS5      \o" SmSmSSnSo5      \o" SmSmSSnS5      \o" SmSmSSmS5      \o" SmSnSSpS5      Sq.\olp         " Sr Ss\c5      rq " St Su\j5      rr " Sv Sw\k5      rs " Sx Sy\c5      rt " Sz S{\j5      ru " S| S}\j5      rvS†S‡S~ jjrwSˆS jrx " S€ SQ5      ryS‰S� jrz " S‚ Sƒ5      r{g)Šz.
Implementation details for :mod:`.mathtext`.
é    )ÚannotationsN)Ú
NamedTuple)ÚEmptyÚForwardÚLiteralÚNotAnyÚoneOfÚ	OneOrMoreÚOptionalÚParseBaseExceptionÚParseExceptionÚParseExpressionÚParseFatalExceptionÚParserElementÚParseResultsÚQuotedStringÚRegexÚ	StringEndÚ
ZeroOrMoreÚpyparsing_commonÚGroupé   )Úcbook)Úlatex_to_bakomaÚstix_glyph_fixesÚstix_virtual_fontsÚtex2uni)ÚFontPropertiesÚfindfontÚget_font)ÚFT2FontÚFT2ImageÚKerningÚ	LoadFlags)Úparse)Ú__version__é   )Ú
nestedExpr)Únested_expr)ÚIterable)ÚGlyphzmatplotlib.mathtextc                ó°   •  [        U 5      $ ! [         a     Of = f [        U R                  S5         $ ! [         a  n[        U < S35      UeSnAff = f)zË
Return the integer index (from the Unicode table) of *symbol*.

Parameters
----------
symbol : str
    A single (Unicode) character, a TeX command (e.g. r'\pi') or a Type1
    symbol name (e.g. 'phi').
Ú\z5 is not a valid Unicode character or TeX/Type1 symbolN)ÚordÚ	TypeErrorr   ÚstripÚKeyErrorÚ
ValueError)ÚsymbolÚerrs     Úc/home/gothic/public_html/Fooocus/fooocus_env/lib64/python3.13/site-packages/matplotlib/_mathtext.pyÚget_unicode_indexr6   5   sg   € ðÜ�6‹{ÐøÜó ÙðúðÜ�v—|‘| DÓ)Ñ*Ð*øÜó ÜØ‰jÐMÐNóàð	ûðús!   ‚
 �
™ž6 ¶
AÁ AÁAc                  óL   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	\S
'   Srg)ÚVectorParseéK   zô
The namedtuple type returned by ``MathTextParser("path").parse(...)``.

Attributes
----------
width, height, depth : float
    The global metrics.
glyphs : list
    The glyphs including their positions.
rect : list
    The list of rectangles.
ÚfloatÚwidthÚheightÚdepthz.list[tuple[FT2Font, float, int, float, float]]Úglyphsz'list[tuple[float, float, float, float]]Úrects© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú__static_attributes__r@   ó    r5   r8   r8   K   s$   ‡ ñð ƒLØƒMØƒLØ:Ó:Ø2Ö2rI   r8   c                  óV   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S'   S	\S
'   Srg)ÚRasterParseéa   zè
The namedtuple type returned by ``MathTextParser("agg").parse(...)``.

Attributes
----------
ox, oy : float
    The offsets are always zero.
width, height, depth : float
    The global metrics.
image : FT2Image
    A raster image.
r:   ÚoxÚoyr;   r<   r=   r"   Úimager@   NrA   r@   rI   r5   rK   rK   a   s'   ‡ ñð 	ƒIØƒIØƒLØƒMØƒLØ†OrI   rK   c                  ó6   • \ rS rSrSrSS jrS	S jrS
S jrSrg)ÚOutputéx   zÂ
Result of `ship`\ping a box: lists of positioned glyphs and rectangles.

This class is not exposed to end users, but converted to a `VectorParse` or
a `RasterParse` by `.MathTextParser.parse`.
c                ó,   • Xl         / U l        / U l        g ©N©Úboxr>   r?   )ÚselfrV   s     r5   Ú__init__ÚOutput.__init__€   s   € ØŒØ;=ˆŒØ>@ˆ�
rI   c                ó   • [        [        R                  U R                  R                  U R                  R
                  U R                  R                  /5      u  pnU R                   VVVs/ s H:  u  pEnUR                  UR                  UR                  XBU-
  UR                  -   4PM<     nnnnU R                   VV	V
Vs/ s H  u  p‰p«X‚U-
  X¨-
  X¹-
  4PM     nn
n	nn[        XU-   X7U5      $ s  snnnf s  snn
n	nf rT   )ÚmapÚnpÚceilrV   r;   r<   r=   r>   ÚfontÚfontsizeÚnumÚoffsetr?   r8   )rW   ÚwÚhÚdrM   rN   ÚinfoÚgsÚx1Úy1Úx2Úy2Úrss                r5   Ú	to_vectorÚOutput.to_vector…   sÛ   € ÜÜ�G‰G�d—h‘h—n‘n d§h¡h§o¡o°t·x±x·~±~ÐFóH‰ˆˆað #'§+¢+õ/Ú"-‘,�"˜$ð �y‰y˜$Ÿ-™-¨¯©°2¸2±vÀÇÁÑ7KÓLÙ"-ð 	ò /ð %)§J¢Jö0Ú$.‘.�"˜"ð �r‘6˜2™7 B¡GÓ,Ù$.ð 	ó 0ä˜1 !™e Q¨BÓ/Ð/ùô	/ùõ0s   Á-AC1ÃC8
c               ój  • [        / U R                   VVVs/ s H  u  p#oBUR                  R                  -   PM      snnnQU R                   VVVVs/ s H  u  pVpxUPM
     snnnnQSP5      S-
  n	[        / U R                   VVVs/ s H  u  p#oCUR                  R
                  -
  PM      snnnQU R                   VVVVs/ s H  u  pVpxUPM
     snnnnQSP5      S-
  n
[        / U R                   VVVs/ s H  u  p#oBUR                  R                  -   PM      snnnQU R                   VVVVs/ s H  u  pVpxUPM
     snnnnQSP5      S-   n[        / U R                   VVVs/ s H  u  p#oCUR                  R                  -
  PM      snnnQU R                   VVVVs/ s H  u  pVpxUPM
     snnnnQSP5      S-   nX¹-
  nXÊ-
  U R                  R                  -
  nXÊ-
  U R                  R                  -
  n[        [        [        R                  " U5      5      [        [        R                  " U[        US5      -   5      5      5      n[!        U R                  U	* U
* 45      nUR                   HU  u  p#nUR"                  R%                  U[        U5      [        X4R                  R&                  -
  5      UR(                  US9  MW     UR                   HŠ  u  pVpx[        [        X†-
  5      S-
  S5      nUS:X  a  X†-   S-  n[        UUS-   S-  -
  5      nO[        U5      nUR+                  [        U5      U[        [        R                  " U5      5      UU-   5        MŒ     [-        SSXÞU-   UU5      $ s  snnnf s  snnnnf s  snnnf s  snnnnf s  snnnf s  snnnnf s  snnnf s  snnnnf )Nr   r   )Úantialiasedé   )Úminr>   ÚmetricsÚxminr?   ÚymaxÚmaxÚxmaxÚyminrV   r=   r<   r"   Úintr\   r]   Úshipr^   Údraw_glyph_to_bitmapÚicebergÚglyphÚdraw_rect_filledrK   )rW   ro   rM   rN   re   rg   rh   ri   rj   rs   rw   rv   rt   rb   rc   rd   rO   Úshiftedr<   ÚcenterÚys                        r5   Ú	to_rasterÚOutput.to_rasterŽ   s3  € ô ð ?ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð ?Ø/3¯zªzÖ:ªz™^˜R R“b©zÔ:ð?Ø<=ð?ó @ØBCñDˆäð ?ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð ?Ø/3¯zªzÖ:ªz™^˜R R“b©zÔ:ð?Ø<=ð?ó @ØBCñDˆäð ?ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð ?Ø/3¯zªzÖ:ªz™^˜R R“b©zÔ:ð?Ø<=ð?ó @ØBCñDˆäð ?ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð ?Ø/3¯zªzÖ:ªz™^˜R R“b©zÔ:ð?Ø<=ð?ó @ØBCñDˆà‰KˆØ‰K˜$Ÿ(™(Ÿ.™.Ñ(ˆØ‰K˜$Ÿ(™(Ÿ/™/Ñ)ˆÜœœRŸWšW Q›Z›¬#¬b¯gªg°a¼#¸aÀ»)±mÓ.DÓ*EÓFˆô �t—x‘x 4 %¨$¨ Ó0ˆà#ŸNœN‰LˆB�DØ�I‰I×*Ñ*Ø”s˜2“w¤ B¯©×)=Ñ)=Ñ$=Ó >ÀÇ
Á
Ø'ð +ó )ñ +ð &Ÿmœm‰NˆB�BÜœ˜R™W›¨Ñ)¨1Ó-ˆFØ˜‹{Ø™' Q™�Ü˜ &¨1¡*°Ñ!1Ñ1Ó2‘ä˜“G�Ø×"Ñ"¤3 r£7¨A¬s´2·7²7¸2³;Ó/?ÀÀVÁÖLñ ,ô ˜1˜a ¨¡E¨1¨eÓ4Ð4ùô? NùÝ:ùÜMùÝ:ùÜMùÝ:ùÜMùÝ:s/   —%M9ÁN Â%NÃNÃ7%NÄ2NÅ'%N&Æ"N-rU   N)rV   ÚBox)Úreturnr8   )ro   Úboolr„   rK   )	rB   rC   rD   rE   rF   rX   rl   r�   rH   r@   rI   r5   rQ   rQ   x   s   † ñôAô
0÷"5rI   rQ   c                  ót   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   Srg)ÚFontMetricsé³   a  
Metrics of a font.

Attributes
----------
advance : float
    The advance distance (in points) of the glyph.
height : float
    The height of the glyph in points.
width : float
    The width of the glyph in points.
xmin, xmax, ymin, ymax : float
    The ink rectangle of the glyph.
iceberg : float
    The distance from the baseline to the top of the glyph. (This corresponds to
    TeX's definition of "height".)
slanted : bool
    Whether the glyph should be considered as "slanted" (currently used for kerning
    sub/superscripts).
r:   Úadvancer<   r;   rs   rv   rw   rt   r{   r…   Úslantedr@   NrA   r@   rI   r5   r‡   r‡   ³   s6   ‡ ñð( ƒNØƒMØƒLØ
ƒKØ
ƒKØ
ƒKØ
ƒKØƒNØ†MrI   r‡   c                  ó\   • \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   S\S'   Srg)ÚFontInfoéÓ   r!   r^   r:   r_   ÚstrÚpostscript_namer‡   rr   rx   r`   r+   r|   ra   r@   N©rB   rC   rD   rE   rG   rH   r@   rI   r5   rŒ   rŒ   Ó   s'   ‡ Ø
ƒMØƒOØÓØÓØ	ƒHØƒLØ†MrI   rŒ   c                  óÔ   • \ rS rSrSrSS jr            SS jrSS jr    SS jr    SS jr	          SS jr
          SS	 jrSS
 jrSS jr    SS jrSrg)ÚFontséÝ   zå
An abstract base class for a system of fonts to use for mathtext.

The class must be able to take symbol keys and font file names and
return the character metrics.  It also delegates to a backend class
to do the actual drawing.
c                ó   • Xl         X l        g)a>  
Parameters
----------
default_font_prop : `~.font_manager.FontProperties`
    The default non-math font, or the base font for Unicode (generic)
    font rendering.
load_glyph_flags : `.ft2font.LoadFlags`
    Flags passed to the glyph loader (e.g. ``FT_Load_Glyph`` and
    ``FT_Load_Char`` for FreeType-based fonts).
N©Údefault_font_propÚload_glyph_flags)rW   r–   r—   s      r5   rX   ÚFonts.__init__æ   s   € ð "3ÔØ 0ÕrI   c
                ó   • g)z‡
Get the kerning distance for font between *sym1* and *sym2*.

See `~.Fonts.get_metrics` for a detailed description of the parameters.
ç        r@   )
rW   Úfont1Ú
fontclass1Úsym1Ú	fontsize1Úfont2Ú
fontclass2Úsym2Ú	fontsize2Údpis
             r5   Úget_kernÚFonts.get_kernô   s   € ð rI   c                ó   • [         erT   ©ÚNotImplementedError)rW   r^   s     r5   Ú	_get_fontÚFonts._get_fontþ   s   € Ü!Ð!rI   c                ó   • [         erT   r§   )rW   r^   Ú
font_classÚsymr_   r£   s         r5   Ú	_get_infoÚFonts._get_info  ó   € ä!Ð!rI   c                ó@   • U R                  XX4U5      nUR                  $ )a{  
Parameters
----------
font : str
    One of the TeX font names: "tt", "it", "rm", "cal", "sf", "bf",
    "default", "regular", "bb", "frak", "scr".  "default" and "regular"
    are synonyms and use the non-math font.
font_class : str
    One of the TeX font names (as for *font*), but **not** "bb",
    "frak", or "scr".  This is used to combine two font classes.  The
    only supported combination currently is ``get_metrics("frak", "bf",
    ...)``.
sym : str
    A symbol in raw TeX form, e.g., "1", "x", or "\sigma".
fontsize : float
    Font size in points.
dpi : float
    Rendering dots-per-inch.

Returns
-------
FontMetrics
)r®   rr   )rW   r^   r¬   r­   r_   r£   re   s          r5   Úget_metricsÚFonts.get_metrics  s    € ð2 �~‰~˜d°¸sÓCˆØ�|‰|ÐrI   c	                ód   • U R                  XEXgU5      n	UR                  R                  X#U	45        g)z„
At position (*ox*, *oy*), draw the glyph specified by the remaining
parameters (see `get_metrics` for their detailed description).
N)r®   r>   Úappend)
rW   ÚoutputrM   rN   r^   r¬   r­   r_   r£   re   s
             r5   Úrender_glyphÚFonts.render_glyph!  s,   € ð �~‰~˜d°¸sÓCˆØ�‰×Ñ˜b d˜^Õ,rI   c                ó>   • UR                   R                  X#XE45        g)z<
Draw a filled rectangle from (*x1*, *y1*) to (*x2*, *y2*).
N)r?   rµ   ©rW   r¶   rg   rh   ri   rj   s         r5   Úrender_rect_filledÚFonts.render_rect_filled*  s   € ð
 	�‰×Ñ˜R RÐ,Õ-rI   c                ó   • [        5       e)z6
Get the xheight for the given *font* and *fontsize*.
r§   ©rW   r^   r_   r£   s       r5   Úget_xheightÚFonts.get_xheight1  s   € ô "Ó#Ð#rI   c                ó   • [        5       e)z~
Get the line thickness that matches the given font.  Used as a
base unit for drawing lines such as in a fraction or radical.
r§   r¾   s       r5   Úget_underline_thicknessÚFonts.get_underline_thickness7  s   € ô
 "Ó#Ð#rI   c                ó
   • X4/$ )zê
Override if your font provides multiple sizes of the same
symbol.  Should return a list of symbols matching *sym* in
various sizes.  The expression renderer will select the most
appropriate size for a given situation from this list.
r@   ©rW   Úfontnamer­   s      r5   Ú!get_sized_alternatives_for_symbolÚ'Fonts.get_sized_alternatives_for_symbol>  s   € ð �Ð Ð rI   r•   N©r–   r   r—   r$   ©r›   rŽ   rœ   rŽ   r�   rŽ   rž   r:   rŸ   rŽ   r    rŽ   r¡   rŽ   r¢   r:   r£   r:   r„   r:   )r^   rŽ   r„   r!   )r^   rŽ   r¬   rŽ   r­   rŽ   r_   r:   r£   r:   r„   rŒ   )r^   rŽ   r¬   rŽ   r­   rŽ   r_   r:   r£   r:   r„   r‡   )r¶   rQ   rM   r:   rN   r:   r^   rŽ   r¬   rŽ   r­   rŽ   r_   r:   r£   r:   r„   ÚNone©r¶   rQ   rg   r:   rh   r:   ri   r:   rj   r:   r„   rË   ©r^   rŽ   r_   r:   r£   r:   r„   r:   ©rÆ   rŽ   r­   rŽ   r„   zlist[tuple[str, str]])rB   rC   rD   rE   rF   rX   r¤   r©   r®   r²   r·   r»   r¿   rÂ   rÇ   rH   r@   rI   r5   r’   r’   Ý   sé   † ñô1ðØðØ),ðØ47ðØDIðàðà %ôô"ð"Øð"Ø!)ô"ðØðØ#.ôð8-Ø!$ð-Ø+.ð-Ø:?ð-ØFKð-ØPTô-ð.Ø$ð.Ø*/ð.Ø5:ð.Ø@Eð.ØJNô.ô$ô$ð!Ø/2ð!Ø7L÷!rI   r’   c                  ó¬   ^ • \ rS rSrSrSU 4S jjrSS jr    SS jr    SS jr    SS jr	SS jr
SS	 jr            SU 4S
 jjrSrU =r$ )ÚTruetypeFontsiI  zU
A generic base class for all font setups that use Truetype fonts
(through FT2Font).
c                ó  >• [         TU ]  X5        [        R                  " U R                  5      U l        0 U l        0 U l        [        U R                  5      n[        U5      nX@R
                  S'   X@R
                  S'   g )NÚdefaultÚregular)
ÚsuperrX   Ú	functoolsÚcacher®   Ú_fontsÚfontmapr   r–   r    )rW   r–   r—   ÚfilenameÚdefault_fontÚ	__class__s        €r5   rX   ÚTruetypeFonts.__init__O  se   ø€ Ü‰ÑÐ*Ô=ä"Ÿš¨¯©Ó8ˆŒØˆŒØ-/ˆŒä˜D×2Ñ2Ó3ˆÜ Ó)ˆØ!-�‰�IÑØ!-�‰�IÒrI   c                óÞ  • XR                   ;   a  U R                   U   nO[        R                  " [        U5      nU R                  R                  U5      nUc{  [        R                  R                  U5      (       aW  [        U5      nX0R                  U'   X0R                  UR                  '   X0R                  UR                  R                  5       '   [        R                  " [        U5      $ rT   )rØ   ÚTÚcastrŽ   r×   ÚgetÚosÚpathÚexistsr    r�   Úlowerr!   )rW   r^   ÚbasenameÚcached_fonts       r5   r©   ÚTruetypeFonts._get_font[  sª   € Ø—<‘<ÓØ—|‘| DÑ)‰Hô —v’vœc 4Ó(ˆHØ—k‘k—o‘o hÓ/ˆØÑ¤2§7¡7§>¡>°(×#;Ñ#;Ü" 8Ó,ˆKØ$/�K‰K˜Ñ!Ø7B�K‰K˜×3Ñ3Ñ4Ø?J�K‰K˜×3Ñ3×9Ñ9Ó;Ñ<Ü�vŠv”g˜{Ó+Ð+rI   c                ó`   • UR                   S:X  a  UR                  S-  S-  US-  U-  S-  -   $ g)NÚCmex10é@   rp   r'   éH   rš   )r�   r<   )rW   r^   r|   r_   r£   s        r5   Ú_get_offsetÚTruetypeFonts._get_offsetj  s:   € à×Ñ 8Ó+Ø—L‘L 2Ñ%¨Ñ)¨h°q©j¸3Ñ.>¸rÑ.AÑBÐBØrI   c                ó   • [         erT   r§   )rW   rÆ   r¬   r­   s       r5   Ú
_get_glyphÚTruetypeFonts._get_glyphp  r°   rI   c                óš  • U R                  XU5      u  pgnUR                  XE5        UR                  XpR                  S9n	S U	R                   5       u  p«pÍU R                  XiXE5      n[        U	R                  S-  U	R                  S-  U	R                  S-  U
UX¾-   XÞ-   U	R                  S-  U-   US9	n[        UUUR                  UUU	US9$ )N)Úflagsc              3  ó*   #   • U  H	  oS -  v •  M     g7f)rê   Nr@   )Ú.0Úvals     r5   Ú	<genexpr>Ú*TruetypeFonts._get_info.<locals>.<genexpr>{  s   é € Ð!A²j¨s¨¦(²jùs   ‚é   rê   )	r‰   r<   r;   rs   rv   rw   rt   r{   rŠ   )r^   r_   r�   rr   r`   r|   ra   )rï   Úset_sizeÚ	load_charr—   Úbboxrì   r‡   ÚlinearHoriAdvancer<   r;   ÚhoriBearingYrŒ   r�   )rW   rÆ   r¬   r­   r_   r£   r^   r`   rŠ   r|   rs   rw   rv   rt   ra   rr   s                   r5   r®   ÚTruetypeFonts._get_infou  sÞ   € à!Ÿ_™_¨XÀ3ÓGÑˆ�7Ø�‰�hÔ$Ø—‘˜s×*?Ñ*?�Ð@ˆá!A°e·j²jÓ!AÑˆ�DØ×!Ñ! $¨xÓ=ˆÜØ×+Ñ+¨eÑ3Ø—<‘< "Ñ$Ø—+‘+ Ñ"ØØØ‘Ø‘à×&Ñ&¨Ñ+¨fÑ4Øñ
ˆô ØØØ ×0Ñ0ØØØØñ
ð 	
rI   c                óü   • U R                  U5      nUR                  X#5        UR                  S5      nUc1  U R                  U[        R
                  S   SX#5      nUR                  $ US   S-  US-  -  US-  -  nU$ )NÚpcltúmathtext.defaultÚxÚxHeightg      P@g      (@g      Y@)r©   rù   Úget_sfnt_tabler²   ÚmplÚrcParamsr{   )rW   rÆ   r_   r£   r^   r   rr   r  s           r5   r¿   ÚTruetypeFonts.get_xheight”  s„   € Ø�~‰~˜hÓ'ˆØ�‰�hÔ$Ø×"Ñ" 6Ó*ˆØ‰<à×&Ñ&Øœ#Ÿ,™,Ð'9Ñ:¸CÀóPˆGà—?‘?Ð"Ø˜	‘? TÑ)¨h¸©oÑ>À#ÈÁ+ÑNˆØˆrI   c                ó   • SU-  U-  S-  $ )Ng      °?g      R@r@   r¾   s       r5   rÂ   Ú%TruetypeFonts.get_underline_thickness   s   € ð  Ñ(¨3Ñ.°$Ñ6Ð6rI   c
                ó  >• X:X  ao  XH:X  aj  U R                  XX4U	5      n
U R                  XVXxU	5      nU
R                  nUR                  U
R                  UR                  [        R
                  5      S-  $ [        TU ]  XX4XVXxU	5	      $ )Nrê   )r®   r^   Úget_kerningr`   r#   ÚDEFAULTrÔ   r¤   )rW   r›   rœ   r�   rž   rŸ   r    r¡   r¢   r£   Úinfo1Úinfo2r^   rÛ   s                €r5   r¤   ÚTruetypeFonts.get_kern¦  s�   ø€ ð ‹>˜iÓ4Ø—N‘N 5°dÀsÓKˆEØ—N‘N 5°dÀsÓKˆEØ—:‘:ˆDØ×#Ñ# E§I¡I¨u¯y©y¼'¿/¹/ÓJÈRÑOÐOÜ‰wÑ °4Ø %°4ÀCóIð 	IrI   )r×   r®   rØ   rÉ   )r^   z	str | intr„   r!   )
r^   r!   r|   r+   r_   r:   r£   r:   r„   r:   ©rÆ   rŽ   r¬   rŽ   r­   rŽ   r„   ztuple[FT2Font, int, bool])rÆ   rŽ   r¬   rŽ   r­   rŽ   r_   r:   r£   r:   r„   rŒ   )rÆ   rŽ   r_   r:   r£   r:   r„   r:   rÍ   rÊ   )rB   rC   rD   rE   rF   rX   r©   rì   rï   r®   r¿   rÂ   r¤   rH   Ú__classcell__©rÛ   s   @r5   rÐ   rÐ   I  s�   ø† ñ÷

.ô,ðØðØ#(ôð"Øð"Ø 9ô"ð

Øð
Ø!)ô
ô>
ô7ð	IØð	IØ),ð	IØ47ð	IØDIð	Iàð	Ià %÷	Iõ 	IrI   rÐ   )Ú	metaclassc                  ó|  ^ • \ rS rSrSrSSSSSSS	S
.rS8U 4S jjr\" SR                  5       5      r	    S9S jr
0 S/ SQ_S/ SQ_S/ SQ_S/ SQ_S/ SQ_S/ SQ_S/ SQ_S/ SQ_S/ SQ_S / S!Q_S"/ S#Q_S$/ S%Q_S&/ S'Q_S(/ S)Q_S*/ S+Q_S,/ S-Q_S./ S/Q_S0S1/S2S3/S4.ErS5 H  u  rr\\   \\'   M         S:S6 jrS7rU =r$ );ÚBakomaFontsi²  z–
Use the Bakoma TrueType fonts for rendering.

Symbols are strewn about a number of font files, each of which has
its own proprietary 8-bit encoding.
Úcmsy10Úcmr10Úcmtt10Úcmmi10Úcmb10Úcmss10Úcmex10)ÚcalÚrmÚttÚitÚbfÚsfÚexc                óØ   >• [        X5      U l        [        TU ]  X5        U R                  R                  5        H,  u  p4[        U5      nXPR                  U'   XPR                  U'   M.     g rT   )Ú	StixFontsÚ_stix_fallbackrÔ   rX   Ú_fontmapÚitemsr   rØ   )rW   r–   r—   Úkeyrõ   ÚfullpathrÛ   s         €r5   rX   ÚBakomaFonts.__init__Ã  sY   ø€ Ü'Ð(9ÓLˆÔä‰ÑÐ*Ô=ØŸ™×+Ñ+Ö-‰HˆCÜ “}ˆHØ (�L‰L˜ÑØ (�L‰L˜Óò .rI   ú
\int \ointc                ó|  • S nXR                   ;   aA  U[        ;   a7  [        U   u  pVUS:H  =(       d    X0R                  ;   nU R                  U5      nO3[	        U5      S:X  a$  US:H  nU R                  U5      nUb  [        U5      nUb  UR                  W5      S:w  a  XFW4$ U R                  R                  XU5      $ )Nr  r   r   r   )	rØ   r   Ú_slanted_symbolsr©   Úlenr.   Úget_char_indexr&  rï   )rW   rÆ   r¬   r­   r^   rå   r`   rŠ   s           r5   rï   ÚBakomaFonts._get_glyphÎ  s¸   € àˆØ—|‘|Ó#¨¬Ó(>Ü+¨CÑ0‰MˆHØ 8Ñ+×L°×7LÑ7LÑ0LˆGØ—>‘> (Ó+‰DÜ�‹X˜‹]Ø 4Ñ'ˆGØ—>‘> (Ó+ˆDØÑÜ˜#“h�ØÑ × 3Ñ 3°CÓ 8¸AÓ =Ø˜gÐ%Ð%à×&Ñ&×1Ñ1°(ÈÓLÐLrI   Ú())r  r2  )r#  ô   Â¡)r#  ô   Â³)r#  ô   Âµ)r#  ô   ÃƒÚ)))r  r7  )r#  ô   Â¢)r#  ô   Â´)r#  ô   Â¶)r#  Ú!Ú{))r  r<  )r#  ô   Â©)r#  Ún)r#  ô   Â½)r#  r2  Ú}))r  r@  )r#  ô   Âª)r#  Úo)r#  ô   Â¾)r#  r7  Ú[))r  rD  )r#  ô   Â£)r#  rc   )r#  Ú"Ú]))r  rG  )r#  ô   Â¤)r#  Úi)r#  Ú#z\lfloor))r#  ô   Â¥)r#  Új)r#  ô   Â¹)r#  Ú$z\rfloor))r#  ô   Â¦)r#  Úk)r#  ô   Âº)r#  Ú%z\lceil))r#  ô   Â§)r#  Úl)r#  ô   Â»)r#  Ú&z\rceil))r#  ô   Â¨)r#  Úm)r#  ô   Â¼)r#  Ú'z\langle))r#  ô   Â­©r#  ÚD)r#  ô   Â¿)r#  Ú*z\rangle))r#  ô   Â®©r#  ÚE)r#  ô   Ã€)r#  Ú+ú	\__sqrt__))r#  Úp)r#  Úq)r#  Úr)r#  Úsz
\backslash))r#  ô   Â²)r#  Ú/)r#  ô   Ã‚)r#  Ú-rk  ))r  rk  )r#  ô   Â±)r#  Ú.)r#  ô   Ã‹)r#  Ú,z\widehat))r  Ú^)r#  Úb)r#  Úc)r#  rd   z
\widetilde))r  Ú~)r#  Úe)r#  Úf)r#  Úg)r  rc   r\  )r  rI  ra  )Ú<Ú>)
)z
\leftparenr2  )z\rightparentr7  )z
\leftbracer<  )z\rightbracer@  )z\leftbracketrD  )z\rightbracketrG  )ú\{r<  )ú\}r@  )ú\[rD  )ú\]rG  c                ó>   • U R                   R                  X!U4/5      $ rT   )Ú_size_alternativesrà   rÅ   s      r5   rÇ   Ú-BakomaFonts.get_sized_alternatives_for_symbol  s    € à×&Ñ&×*Ñ*¨3¸C°Ð0AÓBÐBrI   )r&  rÉ   r  rÎ   )rB   rC   rD   rE   rF   r'  rX   ÚsetÚsplitr.  rï   r€  ÚaliasÚtargetrÇ   rH   r  r  s   @r5   r  r  ²  s¼  ø† ñð ØØØØØØñ€H÷)ñ ˜=×.Ñ.Ó0Ó1ÐðMØðMØ 9ôMð('
Øò 8ð'
ð 	ò 8ð'
ð
 	ò 8ð'
ð 	ò 8ð'
ð 	ò (ð'
ð 	ò (ð'
ð 	ò 8ð'
ð" 	ò 8ð#'
ð& 	ò 8ð''
ð* 	ò 8ð+'
ð. 	ò 8ð/'
ð2 	ò 8ð3'
ð6 	ò 8ð7'
ð: 	ò 8ð;'
ð> 	ò 8ð?'
ðB 	ò (ðC'
ðF 	ò (ðG'
ðJ % kÐ2Ø$ kÐ2òM'
ÐóR	(‰ˆˆvð %7°vÑ$>Ð˜5Ó!ñ	(ðCØ/2ðCØ7L÷Cò CrI   r  c                  óœ   ^ • \ rS rSrSrSSS.rSU 4S jjr\" SR                  5       5      r	    SS jr
    SS	 jr    SS
 jrSrU =r$ )ÚUnicodeFontsi  aD  
An abstract base class for handling Unicode fonts.

While some reasonably complete Unicode fonts (such as DejaVu) may
work in some situations, the only Unicode font I'm aware of with a
complete set of math symbols is STIX.

This class will "fallback" on the Bakoma fonts when a required
symbol cannot be found in the font.
é£   é¡   )é×   i"  c                ó^  >• [         R                  S   n[        [        [        S.R                  U5      nU(       a  U" X5      OS U l        [        TU ]!  X5        SR                  5        H2  n[         R                  SU-      n[        U5      nXpR                  U'   M4     [        S5      n[        U5      nXpR                  S'   [        U R                  [        5      (       aJ  SSS	S
SSS.nUR                  5        H,  u  pš[        U
5      nX°R                  U	'   X°R                  U
'   M.     g g )Nzmathtext.fallback)ÚstixÚstixsansÚcmzcal rm tt it bf sf bfitz	mathtext.r  r#  ÚSTIXGeneralÚSTIXSizeOneSymÚSTIXSizeTwoSymÚSTIXSizeThreeSymÚSTIXSizeFourSymÚSTIXSizeFiveSym)r   r   rp   r'   é   é   )r  r  r%  ÚStixSansFontsr  rà   Ú_fallback_fontrÔ   rX   rƒ  r   rØ   r   Ú
isinstancer(  )rW   r–   r—   Úfallback_rcÚfont_clsÚtexfontÚpropr^   ÚstixsizedaltfontsÚsizeÚnamer*  rÛ   s               €r5   rX   ÚUnicodeFonts.__init__0  s$  ø€ ä—l‘lÐ#6Ñ7ˆäÜ%Üñ0
÷ ‰#ˆkÓ
ð	 	ö #+ñ  (Ð(9ÔLØ04ð 	Ôô 	‰ÑÐ*Ô=Ø0×6Ñ6Ö8ˆGÜ—<‘< ¨gÑ 5Ñ6ˆDÜ˜D“>ˆDØ$(�L‰L˜Ó!ñ 9ô ˜hÓ'ˆÜ˜‹~ˆØ!�‰�TÑô �d×)Ñ)¬9×5Ñ5à!Ø$Ø$Ø&Ø%Ø%ñ!'Ðð 0×5Ñ5Ö7‘
�Ü# D›>�Ø%-—‘˜TÑ"Ø%-—‘˜TÓ"ò 8ð 6rI   r,  c                ó   • X4$ rT   r@   )rW   rÆ   r¬   Úuniindexs       r5   Ú_map_virtual_fontÚUnicodeFonts._map_virtual_fontU  s   € àÐ!Ð!rI   c                óÈ  •  [        U5      nSnU R                  XU5      u  pUnU(       aö  US:X  aZ  US:  aT  [        U5      n[        R                  " U5      S   S:w  d*  [        R                  " U5      R                  S	5      (       a  S
nUS:H  =(       d    X0R                  ;   nSnU R                  U5      n	U	bf  X@R                  ;   a>  U	R                  S:X  a.  [        [         R"                  " S5      5      n	U R                  U   nU	R%                  U5      n
U
S:w  a  SnU(       Gd  U R&                  (       a—  US;   a!  [)        U R&                  [*        5      (       a  S
nU R&                  R-                  XU5      nUS   R                  nU[/        [0        R2                  R5                  5       5      ;   a  Sn[        R7                  SX<5        U$ US;   a'  [)        U [*        5      (       a  U R-                  S
X#5      $ [        R	                  SXcU5        U R                  S
5      n	SnSnW	UW4$ ! [         a'    [        S5      nSn[        R	                  SU5         GNQf = f)NTÚ?Fz!No TeX to Unicode mapping for %a.r   rø   r   ÚLzGREEK CAPITALr  r  zfonts/ttf/cmsy10.ttf)r   rÓ   zComputer ModernzSubstituting symbol %s from %szNFont %r does not have a glyph for %a [U+%x], substituting with a dummy symbol.é¤   )r6   r2   r.   Ú_logÚwarningr¤  ÚchrÚunicodedataÚcategoryr   Ú
startswithr.  r©   Ú_cmr10_substitutionsÚfamily_namer    r   Ú_get_data_pathr0  r˜  r™  r%  rï   Úlistr  r'  Úvaluesre   )rW   rÆ   r¬   r­   r£  Úfound_symbolÚnew_fontnameÚcharrŠ   r^   Ú
glyphindexrx  Úfamilys                r5   rï   ÚUnicodeFonts._get_glyphY  s@  € ð	CÜ(¨Ó-ˆHØˆLð "×3Ñ3Ø (ó,Ñˆð  ˆö Ø˜4Ó H¨wÓ$6Ü˜8“}�Ü×(Ò(¨Ó.¨qÑ1°SÓ8Ü&×+Ò+¨DÓ1×<Ñ<¸_×MÑMØ#'�Là# tÑ+×L°×7LÑ7LÑ0LˆGØ ˆLØ—>‘> ,Ó/ˆDØÑØ× 9Ñ 9Ó9Ø ×,Ñ,°Ó7Ü#Ü×,Ò,Ð-CÓDóF�Dà#×8Ñ8¸ÑB�HØ!×0Ñ0°Ó:�
Ø “?Ø#'�LçØ×"×"ØÐ 1Ó1Ü& t×':Ñ':¼I×FÑFØ#�Hà×'Ñ'×2Ñ2°8ÈÓM�Ø˜1™×)Ñ)�ØœT¤+×"6Ñ"6×"=Ñ"=Ó"?Ó@Ó@Ø.�FÜ—	‘	Ð:¸CÔHØ�ð Ð 1Ó1Ü& t¬Y×7Ñ7ØŸ?™?¨4°ÓAÐAÜ—‘ð Aà)°ô:ð —~‘~ dÓ+�Ø�Ø�à�X˜wÐ&Ð&øôq ó 	CÜ˜3“xˆHØ ˆLÜ�L‰LÐ<¸c×Bð	Cús   ‚H0 È0-I!É I!c                ób   • U R                   (       a  U R                   R                  X5      $ X4/$ rT   )r˜  rÇ   rÅ   s      r5   rÇ   Ú.UnicodeFonts.get_sized_alternatives_for_symbol˜  s2   € à××Ø×&Ñ&×HÑHØóð à�Ð Ð rI   )r˜  rÉ   ©rÆ   rŽ   r¬   rŽ   r£  rx   r„   ztuple[str, int]r  rÎ   )rB   rC   rD   rE   rF   r°  rX   r‚  rƒ  r.  r¤  rï   rÇ   rH   r  r  s   @r5   r‡  r‡    sy   ø† ñ	ð ØñÐ÷
!.ñF ˜=×.Ñ.Ó0Ó1Ðð"Ø$'ð"Ø,;ô"ð='Øð='Ø 9ô='ð~!Ø/2ð!Ø7L÷!ò !rI   r‡  c                  óN   ^ • \ rS rSr% 0 rS\S'   SS jr    SU 4S jjrSrU =r	$ )	ÚDejaVuFontsi   údict[str | int, str]r'  c                ó’  • [        U [        5      (       a  [        X5      U l        O[	        X5      U l        [        X5      U l        [        R                  XU5        U R                  R                  SSSSSS.5        U R                  R                  5        H,  u  p4[        U5      nXPR                  U'   XPR                  U'   M.     g )Nr�  r‘  r’  r“  r”  )r   rp   r'   r•  r–  )r™  ÚDejaVuSerifFontsr%  r˜  r—  r  ÚbakomarÐ   rX   r'  Úupdater(  r   rØ   ©rW   r–   r—   r)  r   r*  s         r5   rX   ÚDejaVuFonts.__init__£  s¬   € ä�dÔ,×-Ñ-Ü"+Ð,=Ó"PˆDÕä"/Ð0AÓ"TˆDÔÜ!Ð"3ÓFˆŒÜ×Ñ˜tÐ8HÔIà�‰×ÑØØØ!Ø Ø ñ
ô 	ð Ÿ™×,Ñ,Ö.‰IˆCÜ “~ˆHØ (�L‰L˜ÑØ!)�L‰L˜Óò /rI   c                óô   >• US:X  a  U R                   R                  XU5      $ [        U5      nU R                  S5      nUb'  UR	                  U5      nUS:w  a  [
        TU ]  SX#5      $ [
        TU ]  XU5      $ )Nú\primer#  r   )rÃ  rï   r6   r©   r0  rÔ   )rW   rÆ   r¬   r­   r£  r^   r¸  rÛ   s          €r5   rï   ÚDejaVuFonts._get_glyph¸  s   ø€ ð �)ÓØ—;‘;×)Ñ)¨(ÀÓDÐDô )¨Ó-ˆHØ—>‘> $Ó'ˆDØÑØ!×0Ñ0°Ó:�
Ø “?Ü ™7Ñ-¨d°JÓDÐDä‘7Ñ% h¸CÓ@Ð@rI   )r˜  rÃ  rÉ   r  )
rB   rC   rD   rE   r'  rG   rX   rï   rH   r  r  s   @r5   r¿  r¿     s1   ø‡ Ø%'€HÐ"Ó'ô*ð*AØðAØ 9÷Aõ ArI   r¿  c            	      ó.   • \ rS rSrSrSSSSSSS	SS
.rSrg)rÂ  iÉ  zj
A font handling class for the DejaVu Serif fonts

If a glyph is not found it will fallback to Stix Serif
úDejaVu SerifzDejaVu Serif:italiczDejaVu Serif:weight=boldzDejaVu Serif:italic:boldúDejaVu SansúDejaVu Sans MonozDejaVu Serif Display©r  r   r!  Úbfitr"  r  r#  r   r@   N©rB   rC   rD   rE   rF   r'  rH   r@   rI   r5   rÂ  rÂ  É  s(   † ñð Ø#Ø(Ø*ØØ Ø$Øñ	ƒHrI   rÂ  c            	      ó.   • \ rS rSrSrSSSSSSSSS	.rS
rg)ÚDejaVuSansFontsiÛ  zh
A font handling class for the DejaVu Sans fonts

If a glyph is not found it will fallback to Stix Sans
rÌ  zDejaVu Sans:italiczDejaVu Sans:weight=boldzDejaVu Sans:italic:boldrÍ  zDejaVu Sans DisplayrÎ  r@   NrÐ  r@   rI   r5   rÒ  rÒ  Û  s(   † ñð Ø"Ø'Ø)ØØ Ø#Øñ	ƒHrI   rÒ  c                  óœ   • \ rS rSr% SrSSSSSSS	SS
SSSSS.rS\S'   SrSrSS jr	    SS jr
\R                        SS j5       rSrg)r%  ií  aE  
A font handling class for the STIX fonts.

In addition to what UnicodeFonts provides, this class:

- supports "virtual fonts" which are complete alpha numeric
  character sets with different font styles at special Unicode
  code points, such as "Blackboard".

- handles sized alternative characters for the STIXSizeX fonts.
r�  zSTIXGeneral:italiczSTIXGeneral:weight=boldzSTIXGeneral:italic:boldÚSTIXNonUnicodezSTIXNonUnicode:italiczSTIXNonUnicode:weight=boldr�  r‘  r’  r“  r”  )r  r   r!  rÏ  ÚnonunirmÚnonuniitÚnonunibfr   r   rp   r'   r•  r–  rÀ  r'  NFc                óÄ   • [         R                  XU5        U R                  R                  5        H,  u  p4[	        U5      nXPR
                  U'   XPR
                  U'   M.     g rT   )rÐ   rX   r'  r(  r   rØ   rÅ  s         r5   rX   ÚStixFonts.__init__  sM   € Ü×Ñ˜tÐ8HÔIØŸ™×,Ñ,Ö.‰IˆCÜ “~ˆHØ (�L‰L˜ÑØ!)�L‰L˜Óò /rI   c                ó”  • [         R                  " U5      nU R                  (       a  Uc  US;  a  [         S   nSnOSn[        U[        5      (       a   XB   nO[        U[        5      (       a  UnOS nUb‚  Sn[        U5      nXx:  a+  Xx-   S-  n	Xi   n
X:S   :  a  U	nOX:S   ::  a  OU	S-   nXx:  a  M+  W
S   Us=::  a	  U
S   ::  a  O  OX:S   -
  U
S	   -   nU
S   nOU(       d  Sn[        R                  S
   nUS;   a  [        R                  " X35      nUS;   a  SUs=::  a  S::  a
  O  X4$ SU-   nX4$ ! [
         a    US   n NÒf = f)N)rÓ   rÒ   r"  TFr  r   rp   r   r'   r  )r  r   )r   r  r!  rÏ  i à  iÿø  Únonuni)r   rà   Ú_sansr™  Údictr1   r³  r/  r  r  r   )rW   rÆ   r¬   r£  Úfont_mappingÚdoing_sans_conversionÚmappingÚloÚhiÚmidÚranges              r5   r¤  ÚStixFonts._map_virtual_font  s‚  € ô *×-Ò-¨hÓ7ˆØ�J�J˜<Ñ/ØÐ$:Ó:Ü-¨dÑ3ˆLØ$(Ñ!à$)Ð!ä�l¤D×)Ñ)ð-Ø&Ñ2‘ô ˜¤d×+Ñ+Ø"‰GàˆGàÑàˆBÜ�W“ˆBØ“'Ø‘u˜q‘j�Ø™�Ø A™hÓ&Ø‘BØ q¡Ó)Øà˜q™�Bð •'ð �Q‰x˜8Õ/ u¨Q¡xÖ/Ø#¨A¡hÑ.°°q±Ñ9�Ø  ™8‘Þ*à�ÜŸ<™<Ð(:Ñ;�ð �|Ó#Ü'×+Ò+¨HÓ?ˆHð Ð1Ó1°fÀÕ6RÈFÕ6Rð Ð!Ð!ð   (Ñ*ˆHàÐ!Ð!øôK ó -Ø& tÑ,’ð-ús   ÁD5 Ä5EÅEc                ó2  • SSSSSSS.nUR                  X"5      n [        U5      n[        S5       Vs/ s H6  nU R	                  U5      R                  U5      S	:w  d  M)  U[        U5      4PM8     nnUS
:X  a  US S nU$ ! [         a    X4/s $ f = fs  snf )Nr<  r@  rD  rG  u   âŸ¨u   âŸ©)r{  r|  r}  r~  ry  rz  é   r   re  éÿÿÿÿ)rà   r6   r2   rä  r©   r0  r¬  )rW   rÆ   r­   Úfixesr£  rI  Úalternativess          r5   rÇ   Ú+StixFonts.get_sized_alternatives_for_symbolH  sÀ   € ð ˜s¨3°sØ6Ø7ñ
ˆð
 �i‰i˜Ó!ˆð	%Ü(¨Ó-ˆHô 5:¸!´Hó L²H¨qØŸ>™>¨!Ó,×;Ñ;¸HÓEÈÑJó +˜œC ›MÓ*±Hˆð Lð �,ÓØ'¨¨Ð,ˆLØÐøô ó 	%Ø�OÐ$Ò$ð	%üòLs   œB  ´(BÁ BÂ BÂBr@   rÉ   r½  )rÆ   rŽ   r­   rŽ   r„   z-list[tuple[str, str]] | list[tuple[int, str]])rB   rC   rD   rE   rF   r'  rG   r˜  rÜ  rX   r¤  rÕ   rÖ   rÇ   rH   r@   rI   r5   r%  r%  í  s›   ‡ ñ
ð Ø"Ø'Ø)Ø$Ø+Ø0ØØØØØØñ&€HÐ"ó ð €NØ€Eô*ð4"Ø$'ð4"Ø,;ô4"ðl ‡_�_ðàðð ðð Góó órI   r%  c                  ó   • \ rS rSrSrSrSrg)r—  i`  zX
A font handling class for the STIX fonts (that uses sans-serif
characters by default).
Tr@   N)rB   rC   rD   rE   rF   rÜ  rH   r@   rI   r5   r—  r—  `  s   † ñð ƒErI   r—  çffffffæ?rç  c                  óŠ   • \ rS rSr% SrSrS\S'   SrS\S'   SrS\S	'   S
r	S\S'   Sr
S\S'   SrS\S'   SrS\S'   SrS\S'   Srg)ÚFontConstantsBasei‡  zÄ
A set of constants that controls how certain things, such as sub-
and superscripts are laid out.  These are all metrics that can't
be reliably retrieved from the font metrics in the font itself.
çš™™™™™©?zT.ClassVar[float]Úscript_spacegš™™™™™Ù?Úsubdroprí  Úsup1ç333333Ó?Úsub1ç      à?Úsub2gš™™™™™™?Údeltaçš™™™™™É?Údelta_slantedçš™™™™™¹?Údelta_integralr@   N)rB   rC   rD   rE   rF   rñ  rG   rò  ró  rõ  r÷  rø  rú  rü  rH   r@   rI   r5   rï  rï  ‡  so   ‡ ñð '+€LÐ#Ó*ð "%€GÐÓ$ð "€DÐ
Ó!ð "€DÐ
Ó!ð "€DÐ
Ó!ð  %€EÐÓ$ð
 (+€MÐ$Ó*ð ),€NÐ%Ö+rI   rï  c                  ó4   • \ rS rSrSrSrSrSrSrSr	Sr
SrSrg)ÚComputerModernFontConstantsi«  g333333³?rù  gÍÌÌÌÌÌÜ?rô  r@   N)rB   rC   rD   rE   rñ  rò  ró  rõ  r÷  rø  rú  rü  rH   r@   rI   r5   rþ  rþ  «  s*   † Ø€LØ€GØ€DØ€DØ€DØ€EØ€MØƒNrI   rþ  c                  ó,   • \ rS rSrSrSrSrSrSrSr	Sr
g)	ÚSTIXFontConstantsi¶  rû  çš™™™™™é?ç333333ã?rð  rô  r@   N)rB   rC   rD   rE   rñ  ró  r÷  rø  rú  rü  rH   r@   rI   r5   r   r   ¶  s    † Ø€LØ€DØ€DØ€EØ€MØƒNrI   r   c                  ó$   • \ rS rSrSrSrSrSrSrg)ÚSTIXSansFontConstantsi¿  rð  r  r  rô  r@   N)	rB   rC   rD   rE   rñ  ró  rú  rü  rH   r@   rI   r5   r  r  ¿  s   † Ø€LØ€DØ€MØƒNrI   r  c                  ó   • \ rS rSrSrg)ÚDejaVuSerifFontConstantsiÆ  r@   N©rB   rC   rD   rE   rH   r@   rI   r5   r  r  Æ  ó   † ÚrI   r  c                  ó   • \ rS rSrSrg)ÚDejaVuSansFontConstantsiÊ  r@   Nr  r@   rI   r5   r
  r
  Ê  r  rI   r
  rÌ  rÍ  rË  r  r  r  r  r  r  r  r�  rÔ  r”  r“  r’  r‘  r�  )zBitstream Vera SanszBitstream VeraÚParserStatec                óð   • [         R                  U R                  R                  U R                  5      R
                  [        5      nU[        L a%  [        U R                  [        5      (       a  [        $ U$ rT   )Ú_font_constant_mappingrà   Úfontsetr©   r^   r±  rï  r   r™  r—  r  )ÚstateÚ	constantss     r5   Ú_get_font_constant_setr  ç  sZ   € Ü&×*Ñ*Ø�‰×Ñ §
¡
Ó+×7Ñ7Ô9JóL€Ið 	Ô&Ò&Ü�u—}‘}¤m×4Ñ4Ü$Ð$ØÐrI   c                  óJ   • \ rS rSrSrS
S jrSS jrSS jrS
S jrSS jr	Sr
g	)ÚNodeiò  zA node in the TeX box model.c                ó   • SU l         g ©Nr   ©rŸ  ©rW   s    r5   rX   ÚNode.__init__õ  s	   € Øˆ�	rI   c                ó,   • [        U 5      R                  $ rT   )ÚtyperB   r  s    r5   Ú__repr__ÚNode.__repr__ø  s   € Ü�D‹z×"Ñ"Ð"rI   c                ó   • g©Nrš   r@   )rW   Únexts     r5   r  ÚNode.get_kerningû  s   € ØrI   c                ó.   • U =R                   S-  sl         g)zr
Shrinks one level smaller.  There are only three levels of
sizes, after which things will no longer get smaller.
r   Nr  r  s    r5   ÚshrinkÚNode.shrinkþ  s   € ð
 	�	Š	�Q‰Ž	rI   c                ó   • g)zRender this node.Nr@   ©rW   r¶   r  r€   s       r5   ÚrenderÚNode.render  s   � rI   r  N©r„   rË   ©r„   rŽ   ©r  zNode | Noner„   r:   ©r¶   rQ   r  r:   r€   r:   r„   rË   )rB   rC   rD   rE   rF   rX   r  r  r"  r&  rH   r@   rI   r5   r  r  ò  s   † Ù&ôô#ôô÷ rI   r  c                  ó^   ^ • \ rS rSrSrSU 4S jjrSU 4S jjr          S	S jrSrU =r	$ )
rƒ   i	  z A node with a physical location.c                óF   >• [         TU ]  5         Xl        X l        X0l        g rT   )rÔ   rX   r;   r<   r=   )rW   r;   r<   r=   rÛ   s       €r5   rX   ÚBox.__init__  s   ø€ Ü‰ÑÔØŒ
ØŒØ�
rI   c                óâ   >• [         TU ]  5         U R                  [        :  aL  U =R                  [
        -  sl        U =R                  [
        -  sl        U =R                  [
        -  sl        g g rT   )rÔ   r"  rŸ  ÚNUM_SIZE_LEVELSr;   ÚSHRINK_FACTORr<   r=   ©rW   rÛ   s    €r5   r"  Ú
Box.shrink  sH   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø�JŠJœ=Ñ(�JØ�KŠKœ=Ñ(�KØ�JŠJœ=Ñ(ŽJð 'rI   c                ó   • g rT   r@   rº   s         r5   r&  Ú
Box.render  s   € àrI   )r=   r<   r;   )r;   r:   r<   r:   r=   r:   r„   rË   r(  rÌ   )
rB   rC   rD   rE   rF   rX   r"  r&  rH   r  r  s   @r5   rƒ   rƒ   	  sB   ø† Ù*÷÷)ðØðØ#ðØ).ðØ49ðØ>B÷ò rI   rƒ   c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚVboxi  z$A box with only height (zero width).c                ó&   >• [         TU ]  SX5        g r  ©rÔ   rX   )rW   r<   r=   rÛ   s      €r5   rX   ÚVbox.__init__!  s   ø€ Ü‰Ñ˜˜VÕ+rI   r@   )r<   r:   r=   r:   ©rB   rC   rD   rE   rF   rX   rH   r  r  s   @r5   r7  r7    s   ø† Ù.÷,õ ,rI   r7  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚHboxi%  z.A box with only width (zero height and depth).c                ó(   >• [         TU ]  USS5        g r  r9  ©rW   r;   rÛ   s     €r5   rX   ÚHbox.__init__(  s   ø€ Ü‰Ñ˜  BÕ'rI   r@   ©r;   r:   r;  r  s   @r5   r=  r=  %  s   ø† Ù8÷(õ (rI   r=  c                  ór   ^ • \ rS rSrSrSU 4S jjrSS jrSS jrSS jrSS jr	SS jr
SU 4S	 jjrS
rU =r$ )ÚChari,  aÚ  
A single character.

Unlike TeX, the font information and metrics are stored with each `Char`
to make it easier to lookup the font metrics when needed.  Note that TeX
boxes have a width, height, and depth, unlike Type1 and TrueType which use
a full bounding box and an advance in the x-direction.  The metrics must
be converted to the TeX model, and the advance (if different from width)
must be converted into a `Kern` node when the `Char` is added to its parent
`Hlist`.
c                óø   >• [         TU ]  5         Xl        UR                  U l        UR                  U l        UR
                  U l        UR                  U l        UR                  U l        U R                  5         g rT   )	rÔ   rX   rt  r  r^   r¬   r_   r£   Ú_update_metrics)rW   rt  r  rÛ   s      €r5   rX   ÚChar.__init__9  sZ   ø€ Ü‰ÑÔØŒØ—}‘}ˆŒØ—J‘JˆŒ	Ø×*Ñ*ˆŒØŸ™ˆŒØ—9‘9ˆŒð 	×ÑÕrI   c                ó    • SU R                   -  $ )Nz`%s`©rt  r  s    r5   r  ÚChar.__repr__E  s   € Ø˜Ÿ™‰ÐrI   c                óx  • U R                   R                  U R                  U R                  U R                  U R
                  U R                  5      =ol        U R                  S:X  a  UR                  U l	        OUR                  U l	        UR                  U l        UR                  UR                  -
  * U l        g )NÚ )r  r²   r^   r¬   rt  r_   r£   Ú_metricsr‰   r;   r{   r<   r=   ©rW   rr   s     r5   rE  ÚChar._update_metricsH  s�   € Ø"&§,¡,×":Ñ":Ø�I‰I�t—‘¨¯©°·±¸t¿x¹xó#Ið 	Iˆ”-à�6‰6�S‹=Ø Ÿ™ˆD�Jà Ÿ™ˆDŒJØ—o‘oˆŒØ—‘¨¯©Ñ7Ð8ˆ�
rI   c                ó.   • U R                   R                  $ rT   )rL  rŠ   r  s    r5   Ú
is_slantedÚChar.is_slantedR  s   € Ø�}‰}×$Ñ$Ð$rI   c                óx  • U R                   R                  U R                  -
  nSn[        U[        5      (       a}  U R
                  R                  U R                  U R                  U R                  U R                  UR                  UR                  UR                  UR                  U R                  5	      nX#-   $ )z¤
Return the amount of kerning between this and the given character.

This method is called when characters are strung together into `Hlist`
to create `Kern` nodes.
rš   )rL  r‰   r;   r™  rC  r  r¤   r^   r¬   rt  r_   r£   )rW   r  r‰   Úkerns       r5   r  ÚChar.get_kerningU  s…   € ð —-‘-×'Ñ'¨$¯*©*Ñ4ˆØˆÜ�dœD×!Ñ!Ø—<‘<×(Ñ(Ø—	‘	˜4Ÿ?™?¨D¯F©F°D·M±MØ—	‘	˜4Ÿ?™?¨D¯F©F°D·M±MØ—‘óˆDð ‰~ÐrI   c           
     óª   • U R                   R                  XUU R                  U R                  U R                  U R
                  U R                  5        g rT   )r  r·   r^   r¬   rt  r_   r£   r%  s       r5   r&  ÚChar.rendere  s9   € Ø�‰×!Ñ!Ø�qØ�I‰I�t—‘¨¯©°·±¸t¿x¹xõ	IrI   c                ó  >• [         TU ]  5         U R                  [        :  ae  U =R                  [
        -  sl        U =R                  [
        -  sl        U =R                  [
        -  sl        U =R                  [
        -  sl        g g rT   )	rÔ   r"  rŸ  r0  r_   r1  r;   r<   r=   r2  s    €r5   r"  ÚChar.shrinkj  sV   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø�MŠMœ]Ñ*�MØ�JŠJœ]Ñ*�JØ�KŠKœ]Ñ*�KØ�JŠJœ]Ñ*ŽJð	 'rI   )
rL  rt  r=   r£   r^   r¬   r  r_   r<   r;   )rt  rŽ   r  r  r)  r(  )r„   r…   r*  r+  )rB   rC   rD   rE   rF   rX   r  rE  rP  r  r&  r"  rH   r  r  s   @r5   rC  rC  ,  s1   ø† ñ
÷
ôô9ô%ôô I÷
+õ +rI   rC  c                  óD   ^ • \ rS rSrSrSS jrSU 4S jjrSS jrSrU =r	$ )	ÚAccentis  zŽ
The font metrics need to be dealt with differently for accents,
since they are already offset correctly from the baseline in
TrueType fonts.
c                ó8  • U R                   R                  U R                  U R                  U R                  U R
                  U R                  5      =ol        UR                  UR                  -
  U l
        UR                  UR                  -
  U l        SU l        g r  )r  r²   r^   r¬   rt  r_   r£   rL  rv   rs   r;   rt   rw   r<   r=   rM  s     r5   rE  ÚAccent._update_metricsy  sm   € Ø"&§,¡,×":Ñ":Ø�I‰I�t—‘¨¯©°·±¸t¿x¹xó#Ið 	Iˆ”-à—\‘\ G§L¡LÑ0ˆŒ
Ø—l‘l W§\¡\Ñ1ˆŒØˆ�
rI   c                óB   >• [         TU ]  5         U R                  5         g rT   )rÔ   r"  rE  r2  s    €r5   r"  ÚAccent.shrink€  s   ø€ Ü‰‰ÔØ×ÑÕrI   c           
     ó  • U R                   R                  XU R                  R                  -
  X0R                  R                  -   U R
                  U R                  U R                  U R                  U R                  5        g rT   )
r  r·   rL  rs   rw   r^   r¬   rt  r_   r£   r%  s       r5   r&  ÚAccent.render„  sU   € Ø�‰×!Ñ!Ø˜Ÿ™×*Ñ*Ñ*¨A·±×0BÑ0BÑ,BØ�I‰I�t—‘¨¯©°·±¸t¿x¹xõ	IrI   )rL  r=   r<   r;   r(  r+  )
rB   rC   rD   rE   rF   rE  r"  r&  rH   r  r  s   @r5   rZ  rZ  s  s   ø† ñô
÷÷Iò IrI   rZ  c                  ób   ^ • \ rS rSrSrSU 4S jjrS	U 4S jjr    S
S jrSU 4S jjrSr	U =r
$ )ÚListiŠ  z0A list of nodes (either horizontal or vertical).c                ór   >• [         TU ]  SSS5        SU l        / UQU l        SU l        SU l        SU l        g )Nrš   r   )rÔ   rX   Úshift_amountÚchildrenÚglue_setÚ	glue_signÚ
glue_order©rW   ÚelementsrÛ   s     €r5   rX   ÚList.__init__�  s<   ø€ Ü‰Ñ˜˜R Ô$ØˆÔØ#˜(˜ˆŒàˆŒØˆŒØˆ�rI   c                ó  >• SR                  [        TU ]	  5       U R                  U R                  U R
                  U R                  SR                  U R                   Vs/ s H  n[        U5      PM     sn5      5      $ s  snf )Nz/{}<w={:.02f} h={:.02f} d={:.02f} s={:.02f}>[{}]z, )
ÚformatrÔ   r  r;   r<   r=   rd  Újoinre  Úrepr)rW   r  rÛ   s     €r5   r  ÚList.__repr__–  se   ø€ Ø@×GÑGÜ‰GÑÓØ�J‰J˜Ÿ™Ø�J‰J˜×)Ñ)Ø�I‰I¨¯ªÓ6ª 1”t˜A–w©Ñ6Ó7ó	9ð 	9ùò 7s   ÁA?c                ó`  ^• [        U4S j[        [        T5      5      S S S2    5       S5      =U l        nX l        TU   S:w  a  UTU   -  U l        OSU l        SU l        US:X  aG  [        U R                  5      (       a,  [        R                  SU[        U 5      R                  U 5        g g g )Nc              3  ó>   >#   • U  H  nTU   S :w  d  M  Uv •  M     g7f)r   Nr@   )rô   rI  Útotalss     €r5   rö   Ú!List._set_glue.<locals>.<genexpr>¡  s   øé € ÐCÒ0�1°F¸1±IÀ±N�Q‰QÒ0ùs   ƒ”	rè  r   rš   z	%s %s: %r)r  rä  r/  rh  rg  rf  Ú
glue_ratiore  rª  r«  r  rB   )rW   r  Úsignrs  Ú
error_typerB  s      `  r5   Ú	_set_glueÚList._set_glue�  s£   ø€ ä"äCœœc &›kÓ*©4¨R¨4Ò0ÓCÀQóHð 	HˆŒ˜!ð ŒØ�!‰9˜‹?Ø  q¡	™MˆD�MàˆDŒNØ ˆDŒOØ�‹6Ü�4—=‘=×!Ñ!Ü—‘˜[Ø'¬¨d«×)<Ñ)<¸dõDð "ð rI   c                óö   >• U R                    H  nUR                  5         M     [        TU ]  5         U R                  [        :  a3  U =R
                  [        -  sl        U =R                  [        -  sl        g g rT   )re  r"  rÔ   rŸ  r0  rd  r1  rf  )rW   ÚchildrÛ   s     €r5   r"  ÚList.shrink­  sT   ø€ Ø—]”]ˆEØ�L‰LŽNñ #ä‰‰ÔØ�9‰9”Ó&Ø×Ò¤Ñ.ÕØ�MŠM¤Ñ.ŽMð 'rI   )re  rh  ru  rf  rg  rd  )rj  úT.Sequence[Node]r)  )
r  r:   rv  rx   rs  zlist[float]rw  rŽ   r„   rË   r(  )rB   rC   rD   rE   rF   rX   r  rx  r"  rH   r  r  s   @r5   rb  rb  Š  s2   ø† Ù:÷÷9ðDØ!ðDØ&*ôD÷ /õ /rI   rb  c                  ób   ^ • \ rS rSrSr   S   SU 4S jjjrS	S jr  S
   SS jjrSrU =r	$ )ÚHlisti¶  zA horizontal list of boxes.c                óp   >• [         TU ]  U5        U(       a  U R                  5         U R                  X#S9  g )N)rb   rX  )rÔ   rX   rS  Úhpack)rW   rj  rb   rX  Údo_kernrÛ   s        €r5   rX   ÚHlist.__init__¹  s,   ø€ ô 	‰Ñ˜Ô"ÞØ�I‰IŒKØ�
‰
�Qˆ
ÒrI   c                óV  • / n[        U R                  5      nU(       a‹  [        U5       Hu  nU R                  U   nX2S-
  :  a  U R                  US-      nOSnUR                  U5        UR	                  U5      nUS:w  d  MY  [        U5      nUR                  U5        Mw     Xl        gg)zÓ
Insert `Kern` nodes between `Char` nodes to set kerning.

The `Char` nodes themselves determine the amount of kerning they need
(in `~Char.get_kerning`), and this function just creates the correct
linked list.
r   Nrš   )r/  re  rä  rµ   r  ÚKern)rW   Únew_childrenÚnum_childrenrI  Úelemr  Úkerning_distancerS  s           r5   rS  Ú
Hlist.kernÁ  s¥   € ð ˆÜ˜4Ÿ=™=Ó)ˆÞÜ˜<Ö(�Ø—}‘} QÑ'�Ø aÑ'Ó'ØŸ=™=¨¨Q©Ñ/‘Dà�Dà×#Ñ# DÔ)Ø#'×#3Ñ#3°DÓ#9Ð Ø# rÕ)ÜÐ 0Ó1�DØ ×'Ñ'¨Ö-ñ )ð )�Mð rI   c                óZ  • SnSnSnS/S-  nS/S-  nU R                    GH�  n[        U[        5      (       a:  XXR                  -  n[	        X8R
                  5      n[	        XHR                  5      nMS  [        U[        5      (       a�  XXR                  -  n[        R                  " UR
                  5      (       dg  [        R                  " UR                  5      (       d?  [        USS5      n	[	        X8R
                  U	-
  5      n[	        XHR                  U	-   5      nMÿ  GM  GM  [        U[        5      (       a]  UR                  n
XZR                  -  nXjR                  ==   U
R                  -  ss'   XzR                  ==   U
R                   -  ss'   GMw  [        U["        5      (       d  GM�  XXR                  -  nGM      X0l        X@l        US:X  a  X-  nXl        X-
  nUS:X  a  SU l        SU l        SU l        gUS:”  a  U R+                  USUS5        gU R+                  US	US
5        g)a™  
Compute the dimensions of the resulting boxes, and adjust the glue if
one of those dimensions is pre-specified.  The computed sizes normally
enclose all of the material inside the new box; but some items may
stick out if negative glue is used, if the box is overfull, or if a
``\vbox`` includes other boxes that have been shifted left.

Parameters
----------
w : float, default: 0
    A width.
m : {'exactly', 'additional'}, default: 'additional'
    Whether to produce a box whose width is 'exactly' *w*; or a box
    with the natural width of the contents, plus *w* ('additional').

Notes
-----
The defaults produce a box with the natural width of the contents.
rš   r•  rd  Ú
additionalr   Nr   ÚOverfulrè  ÚUnderful)re  r™  rC  r;   ru   r<   r=   rƒ   r\   ÚisinfÚgetattrÚGlueÚ	glue_specÚstretch_orderÚstretchÚshrink_orderr"  r…  rg  rh  ru  rx  )rW   rb   rX  rc   rd   r  Útotal_stretchÚtotal_shrinkrf  ri  r’  s              r5   r�  ÚHlist.hpackÚ  sÃ  € ð0 ˆØˆØˆØ˜˜q™ˆØ�t˜a‘xˆØ—•ˆAÜ˜!œT×"Ñ"Ø—W‘W‘�Ü˜Ÿ8™8Ó$�Ü˜Ÿ7™7“O’Ü˜Aœs×#Ñ#Ø—W‘W‘�Ü—x’x §¡×)Ñ)´"·(²(¸1¿7¹7×2CÑ2CÜ  >°2Ó6�AÜ˜AŸx™x¨!™|Ó,�AÜ˜AŸw™w¨™{Ó+’Aò 3DÒ)ô ˜Aœt×$Ñ$ØŸK™K�	Ø—_‘_Ñ$�Ø×5Ñ5Ó6¸)×:KÑ:KÑKÓ6Ø×3Ñ3Ó4¸	×8HÑ8HÑHÖ4Ü˜Aœt×$Ô$Ø—W‘W‘“ñ# ð$ ŒØŒ
à�ÓØ‰FˆAØŒ
Ø‰Eˆà�‹7ØˆDŒNØˆDŒOØ ˆDŒOØØˆr‹6Ø�N‰N˜1˜a °	Õ:à�N‰N˜1˜b ,°
Õ;rI   )re  r=   rh  ru  rg  r<   r;   )rš   rŒ  T)rj  r}  rb   r:   rX  ú"T.Literal['additional', 'exactly']r‚  r…   r(  ©rš   rŒ  )rb   r:   rX  r™  r„   rË   )
rB   rC   rD   rE   rF   rX   rS  r�  rH   r  r  s   @r5   r  r  ¶  sP   ø† Ù%à>AØ9EØ!%ðØ6ðà÷ð ô)ð2  #Ø6Bð?<Ø3ð?<ØGK÷?<ó ?<rI   r  c                  ól   ^ • \ rS rSrSr  S S	U 4S jjjrSS\R                  4     S
S jjrSr	U =r
$ )ÚVlisti  zA vertical list of boxes.rš   rŒ  c                óB   >• [         TU ]  U5        U R                  X#S9  g )N)rc   rX  )rÔ   rX   Úvpack)rW   rj  rc   rX  rÛ   s       €r5   rX   ÚVlist.__init__  s   ø€ ä‰Ñ˜Ô"Ø�
‰
�Qˆ
ÒrI   c                óÒ  • SnSnSnS/S-  nS/S-  nU R                    GHF  n	[        U	[        5      (       ak  XeU	R                  -   -  nU	R                  n[
        R                  " U	R                  5      (       d'  [        U	SS5      n
[        XIR                  U
-   5      nM‚  M„  [        U	[        5      (       ab  Xe-  nSnU	R                  nXkR                  -  nX{R                  ==   UR                  -  ss'   X‹R                  ==   UR                  -  ss'   Mû  [        U	[         5      (       a  XeU	R                  -   -  nSnGM&  [        U	["        5      (       d  GM>  [%        S5      e   X@l        XS:”  a  XeU-
  -  nX0l        OXPl        US:X  a  X-  nXl        X-
  nUS:X  a  SU l        SU l        SU l        gUS:”  a  U R-                  USUS	5        gU R-                  US
US5        g)aó  
Compute the dimensions of the resulting boxes, and to adjust the glue
if one of those dimensions is pre-specified.

Parameters
----------
h : float, default: 0
    A height.
m : {'exactly', 'additional'}, default: 'additional'
    Whether to produce a box whose height is 'exactly' *h*; or a box
    with the natural height of the contents, plus *h* ('additional').
l : float, default: np.inf
    The maximum height.

Notes
-----
The defaults produce a box with the natural height of the contents.
rš   r•  rd  z1Internal mathtext error: Char node found in VlistrŒ  r   Nr   r�  rè  rŽ  )re  r™  rƒ   r<   r=   r\   r�  r;   r�  ru   r‘  r’  r“  r”  r•  r"  r…  rC  ÚRuntimeErrorrg  rh  ru  rx  )rW   rc   rX  rT  rb   rd   r  r–  r—  rf  ri  r’  s               r5   rž  ÚVlist.vpack$  sÀ  € ð0 ˆØˆØˆØ˜˜q™ˆØ�t˜a‘xˆØ—•ˆAÜ˜!œS×!Ñ!Ø˜Ÿ™‘\Ñ!�Ø—G‘G�Ü—x’x §¡×(Ñ(Ü  >°2Ó6�AÜ˜AŸw™w¨™{Ó+’Añ )ô ˜Aœt×$Ñ$Ø‘�Ø�ØŸK™K�	Ø—_‘_Ñ$�Ø×5Ñ5Ó6¸)×:KÑ:KÑKÓ6Ø×3Ñ3Ó4¸	×8HÑ8HÑHÕ4Ü˜Aœt×$Ñ$Ø˜Ÿ™‘[Ñ �Ø“Ü˜Aœt×$Ô$Ü"ØGóIð Iñ% ð* Œ
Ø‹5Ø�Q‘‰JˆAØ�JàŒJà�ÓØ‰FˆAØŒØ‰Eˆà�‹6ØˆDŒNØˆDŒOØ ˆDŒOØàˆr‹6Ø�N‰N˜1˜a °	Õ:à�N‰N˜1˜b ,°
Õ;rI   )r=   rh  ru  rg  r<   r;   rš  )rj  r}  rc   r:   rX  r™  )rc   r:   rX  r™  rT  r:   r„   rË   )rB   rC   rD   rE   rF   rX   r\   Úinfrž  rH   r  r  s   @r5   rœ  rœ    sT   ø† Ù#à>AØ9EðØ6÷ð ð
  #Ø6BØŸ™ðG<Ø3ðG<àðG<à$(÷G<ó G<rI   rœ  c                  óN   ^ • \ rS rSrSrSU 4S jjr          SS jrSrU =r$ )ÚRulein  a}  
A solid black rectangle.

It has *width*, *depth*, and *height* fields just as in an `Hlist`.
However, if any of these dimensions is inf, the actual value will be
determined by running the rule up to the boundary of the innermost
enclosing box.  This is called a "running dimension".  The width is never
running in an `Hlist`; the height and depth are never running in a `Vlist`.
c                óH   >• [         TU ]  XU5        UR                  U l        g rT   )rÔ   rX   r  )rW   r;   r<   r=   r  rÛ   s        €r5   rX   ÚRule.__init__y  s   ø€ Ü‰Ñ˜¨Ô.Ø—}‘}ˆ�rI   c                óH   • U R                   R                  XX2U-   X5-   5        g rT   )r  r»   )rW   r¶   r  r€   rb   rc   s         r5   r&  ÚRule.render}  s   € à�‰×'Ñ'¨°1¸!±e¸Q¹UÕCrI   )r  )r;   r:   r<   r:   r=   r:   r  r  )r¶   rQ   r  r:   r€   r:   rb   r:   rc   r:   r„   rË   )	rB   rC   rD   rE   rF   rX   r&  rH   r  r  s   @r5   r¥  r¥  n  sF   ø† ñ÷%ðDØðDØ!ðDØ&+ðDØ05ðDØ:>÷Dò DrI   r¥  c                  ó4   ^ • \ rS rSrSrSSU 4S jjjrSrU =r$ )ÚHrulei‚  z.Convenience class to create a horizontal rule.c                óv   >• Uc  UR                  5       nUS-  =p4[        TU ]	  [        R                  X4U5        g )Nrö  ©Úget_current_underline_thicknessrÔ   rX   r\   r£  )rW   r  Ú	thicknessr<   r=   rÛ   s        €r5   rX   ÚHrule.__init__…  s8   ø€ ØÑØ×=Ñ=Ó?ˆIØ" S™Ð(ˆÜ‰ÑœŸ™ °Õ6rI   r@   rT   )r  r  r¯  úfloat | Noner;  r  s   @r5   r«  r«  ‚  s   ø† Ù8÷7÷ 7rI   r«  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚVruleiŒ  z,Convenience class to create a vertical rule.c                ó‚   >• UR                  5       n[        TU ]	  U[        R                  [        R                  U5        g rT   r­  )rW   r  r¯  rÛ   s      €r5   rX   ÚVrule.__init__�  s,   ø€ Ø×9Ñ9Ó;ˆ	Ü‰Ñ˜¤B§F¡F¬B¯F©F°EÕ:rI   r@   )r  r  r;  r  s   @r5   r³  r³  Œ  s   ø† Ù6÷;õ ;rI   r³  c                  óH   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S	rg
)Ú	_GlueSpeci”  r:   r;   r”  rx   r“  r"  r•  r@   Nr�   r@   rI   r5   r·  r·  ”  s   ‡ ØƒLØƒNØÓØƒMØÖrI   r·  rš   ç      ð?rp   g      ð¿)ÚfilÚfillÚfilllÚneg_filÚneg_fillÚ	neg_filllÚemptyÚssc                  óD   ^ • \ rS rSrSr  SU 4S jjrSU 4S jjrSrU =r$ )r‘  i¨  zú
Most of the information in this object is stored in the underlying
``_GlueSpec`` class, which is shared between multiple glue objects.
(This is a memory optimization which probably doesn't matter anymore, but
it's easier to stick to what TeX does.)
c                óÆ   >• [         TU ]  5         [        U[        5      (       a  [        R
                  U   nO#[        U[        5      (       a  UnO[        S5      eX l        g )Nz.glue_type must be a glue spec name or instance)rÔ   rX   r™  rŽ   r·  Ú_namedr2   r’  )rW   Ú	glue_typer’  rÛ   s      €r5   rX   ÚGlue.__init__°  sP   ø€ ô 	‰ÑÔÜ�i¤×%Ñ%Ü!×(Ñ(¨Ñ3‰IÜ˜	¤9×-Ñ-Ø!‰IäÐMÓNÐNØ"�rI   c                ó®   >• [         TU ]  5         U R                  [        :  a2  U R                  nUR                  UR                  [        -  S9U l        g g )N©r;   )rÔ   r"  rŸ  r0  r’  Ú_replacer;   r1  )rW   rx  rÛ   s     €r5   r"  ÚGlue.shrink½  sB   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø—‘ˆAØŸZ™Z¨a¯g©g¼Ñ.E˜ZÐFˆD�Nð 'rI   )r’  )rÄ  z`_GlueSpec | T.Literal['fil', 'fill', 'filll', 'neg_fil', 'neg_fill', 'neg_filll', 'empty', 'ss']r(  )	rB   rC   rD   rE   rF   rX   r"  rH   r  r  s   @r5   r‘  r‘  ¨  s$   ø† ñð#ðA÷#÷Gõ GrI   r‘  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )Ú	HCenterediÄ  z`
A convenience class to create an `Hlist` whose contents are
centered within its enclosing box.
c                óP   >• [         TU ]  [        S5      /UQ[        S5      PSS9  g )NrÀ  F©r‚  ©rÔ   rX   r‘  ri  s     €r5   rX   ÚHCentered.__init__Ê  s*   ø€ Ü‰Ñœ$˜t›*Ð< xÐ<´°d³Ð<ÀeÐÒLrI   r@   ©rj  z
list[Node]r;  r  s   @r5   rË  rË  Ä  s   ø† ñ÷
Mõ MrI   rË  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )Ú	VCenterediÎ  z_
A convenience class to create a `Vlist` whose contents are
centered within its enclosing box.
c                óR   >• [         TU ]  [        S5      /UQ[        S5      P5        g )NrÀ  rÎ  ri  s     €r5   rX   ÚVCentered.__init__Ô  s%   ø€ Ü‰Ñœ$˜t›*Ð< xÐ<´°d³Ð<Õ=rI   r@   rÐ  r;  r  s   @r5   rÒ  rÒ  Î  s   ø† ñ÷
>õ >rI   rÒ  c                  óR   ^ • \ rS rSrSrSrSrSU 4S jjrS	S jrS
U 4S jjr	Sr
U =r$ )r…  iØ  a}  
A `Kern` node has a width field to specify a (normally
negative) amount of spacing. This spacing correction appears in
horizontal lists between letters like A and V when the font
designer said that it looks better to move them closer together or
further apart. A kern node can also appear in a vertical list,
when its *width* denotes additional spacing in the vertical
direction.
r   c                ó.   >• [         TU ]  5         Xl        g rT   )rÔ   rX   r;   r?  s     €r5   rX   ÚKern.__init__æ  s   ø€ Ü‰ÑÔØ�
rI   c                ó    • SU R                   -  $ )Nzk%.02frÇ  r  s    r5   r  ÚKern.__repr__ê  s   € Ø˜$Ÿ*™*Ñ$Ð$rI   c                ó~   >• [         TU ]  5         U R                  [        :  a  U =R                  [
        -  sl        g g rT   )rÔ   r"  rŸ  r0  r;   r1  r2  s    €r5   r"  ÚKern.shrinkí  s,   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø�JŠJœ-Ñ'ŽJð 'rI   rÇ  rA  r)  r(  )rB   rC   rD   rE   rF   r<   r=   rX   r  r"  rH   r  r  s   @r5   r…  r…  Ø  s(   ø† ñð €FØ€E÷ô%÷(õ (rI   r…  c                  ó<   ^ • \ rS rSrSr S   SU 4S jjjrSrU =r$ )ÚAutoHeightCharió  a  
A character as close to the given height and depth as possible.

When using a font with multiple height versions of some characters (such as
the BaKoMa fonts), the correct glyph will be selected, otherwise this will
always just return a scaled version of the glyph.
c                ó|  >• UR                   R                  UR                  U5      nUR                   R                  UR                  UR                  UR
                  5      nUR                  5       nX#-   n	U H;  u  p«X¤l        [        X´5      nUR                  UR                  -   U	SU-  -
  :¼  d  M;    O   SnUR                  S:w  d  [        U5      S:X  aN  Uc  U	WR                  UR                  -   -  nU=R                  U-  sl        [        WU5      nX<R                  -
  n[        TU ]1  W/5        XÐl        g )Nrù  rš   r   r   )r  rÇ   r^   r¿   r_   r£   ÚcopyrC  r<   r=   r/  rÔ   rX   rd  )rW   rt  r<   r=   r  ÚalwaysÚfactorrê  r  Útarget_totalrÆ   r­   r·  ÚshiftrÛ   s                 €r5   rX   ÚAutoHeightChar.__init__ü  s  ø€ à—}‘}×FÑFØ�J‰J˜óˆð —-‘-×+Ñ+Ø�J‰J˜Ÿ™¨¯	©	ó3ˆð —
‘
“ˆØ‘~ˆÛ)‰MˆHØ!ŒJÜ˜Ó#ˆDð �{‰{˜TŸZ™ZÑ'¨<¸#À¹-Ñ+GÕGÙñ *ð ˆØ�:‰:˜‹?œc ,Ó/°1Ó4Ø‰~Ø%¨¯©°t·z±zÑ)AÑB�Ø�NŠN˜fÑ$�NÜ˜˜UÓ#ˆDàŸZ™ZÑ'ˆEä‰Ñ˜$˜Ô Ø!ÕrI   )rd  )FN)rt  rŽ   r<   r:   r=   r:   r  r  rà  r…   rá  r±  r;  r  s   @r5   rÝ  rÝ  ó  s(   ø† ñð ?Cð"Øð"Ø/;÷"ö "rI   rÝ  c                  ó:   ^ • \ rS rSrSrS\4 SU 4S jjjrSrU =r$ )ÚAutoWidthChari  zÿ
A character as close to the given width as possible.

When using a font with multiple width versions of some characters (such as
the BaKoMa fonts), the correct glyph will be selected, otherwise this will
always just return a scaled version of the glyph.
Fc                ód  >• UR                   R                  UR                  U5      nUR                  5       nU H%  u  pxXsl        U" Xƒ5      n	U	R                  U:¼  d  M%    O   UW	R                  -  n
U=R
                  U
-  sl        U" WU5      n	[        TU ]  U	/5        U	R                  U l        g rT   )r  rÇ   r^   rß  r;   r_   rÔ   rX   )rW   rt  r;   r  rà  Ú
char_classrê  rÆ   r­   r·  rá  rÛ   s              €r5   rX   ÚAutoWidthChar.__init__$  s›   ø€ à—}‘}×FÑFØ�J‰J˜óˆð —
‘
“ˆÛ)‰MˆHØ!ŒJÙ˜cÓ)ˆDØ�z‰z˜UÕ"Ùñ	 *ð ˜Ÿ™Ñ#ˆØ�Š˜&Ñ �Ù˜#˜uÓ%ˆä‰Ñ˜$˜Ô Ø—Z‘Zˆ�
rI   rÇ  )
rt  rŽ   r;   r:   r  r  rà  r…   rè  z
type[Char])	rB   rC   rD   rE   rF   rC  rX   rH   r  r  s   @r5   ræ  ræ    s$   ø† ñð QVØ*.ð Ø'÷ ö  rI   ræ  c           	     óà   ^^^^^^	^
^• Uu  p#SmSmUmX0R                   -   m	[        U 5      m
SS jmSUUUUUU	U
U4S jjmSUUUUUU	U
U4S jjm[        U [        5      (       d   eT" U 5        T
$ )a“  
Ship out *box* at offset *xy*, converting it to an `Output`.

Since boxes can be inside of boxes inside of boxes, the main work of `ship`
is done by two mutually recursive routines, `hlist_out` and `vlist_out`,
which traverse the `Hlist` nodes and `Vlist` nodes inside of horizontal
and vertical boxes.  The global variables used in TeX to store state as it
processes have become local variables here.
rš   c                ó&   • U S:  a  S$ U S:”  a  S$ U $ )Ng    eÍÍÁg    eÍÍAr@   )Úvalues    r5   ÚclampÚship.<locals>.clampI  s   € Ø˜t“|ˆtÐH°¸³¨ÐHÀ5ÐHrI   c                ó|  >• SnSnU R                   nU R                  nTnTnU R                   GHŠ  n[        U[        5      (       a*  UR                  TTT-   TT-   5        TUR                  -  mMC  [        U[        5      (       a  TUR                  -  mMi  [        U[        5      (       a�  [        UR                  5      S:X  a  TUR                  -  mM¨  TnXWR                  -   m[        U[        5      (       a	  T" U5        O%[        U[        5      (       a	  T" U5        O S5       eX‡R                  -   mUmGM  [        U[        5      (       a¦  UR                  n	UR                  n
UR                  n[         R"                  " U	5      (       a  U R                  n	[         R"                  " U
5      (       a  U R                  n
U	S:”  a&  US:”  a   XZ-   mUR                  TTT-   TT-   X¹5        UmTU-  mGMÉ  [        U[$        5      (       d  GMá  UR&                  nUR                  U-
  nUS:w  a  US:X  a=  UR(                  U:X  a,  X,R*                  -  n[-        T" U R.                  U-  5      5      nO<UR0                  U:X  a,  X,R2                  -  n[-        T" U R.                  U-  5      5      nX±-  nTU-  mGM�     g )Nr   rš   úunreachable coder   )rh  rg  re  r™  rC  r&  r;   r…  rb  r/  rd  r  rœ  rƒ   r<   r=   r\   r�  r‘  r’  r“  r”  Úroundrf  r•  r"  )rV   Úcur_gÚcur_gluerh  rg  Ú	base_lineÚ	left_edgerf  ÚedgeÚrule_heightÚ
rule_depthÚ
rule_widthr’  rí  Úcur_hÚcur_vÚ	hlist_outÚoff_hÚoff_vr¶   Ú	vlist_outs                €€€€€€€€r5   rü  Úship.<locals>.hlist_outL  sP  ø€ ð ˆØˆØ—^‘^ˆ
Ø—M‘Mˆ	Øˆ	Øˆ	à—•ˆAÜ˜!œT×"Ñ"Ø—‘˜ ¨¡°¸±Ô>Ø˜Ÿ™Ñ ’Ü˜Aœt×$Ñ$Ø˜Ÿ™Ñ ’Ü˜Aœt×$Ñ$ä�q—z‘z“? aÓ'Ø˜QŸW™WÑ$’Eà �DØ%¯©Ñ6�EÜ! !¤U×+Ñ+Ù! !�Ü# A¤u×-Ñ-á! !�à8Ð&8Ó8˜uØ §7¡7™N�EØ%“EÜ˜Aœs×#Ñ#àŸh™h�ØŸW™W�
ØŸW™W�
Ü—8’8˜K×(Ñ(Ø"%§*¡*�KÜ—8’8˜J×'Ñ'Ø!$§¡�JØ “? z°A£~Ø%Ñ2�EØ—H‘H˜VØ" U™]¨E°E©MØ'ô6ð &�EØ˜Ñ#“Ü˜Aœt×$Ô$àŸK™K�	Ø&Ÿ_™_¨uÑ4�
Ø “>Ø  A“~Ø$×2Ñ2°jÓ@Ø$×(9Ñ(9Ñ9˜HÜ$)©%°·±¸xÑ0GÓ*HÓ$I˜EøØ"×/Ñ/°:Ó=Ø ×$4Ñ$4Ñ4˜Ü %¡e¨C¯L©L¸8Ñ,CÓ&DÓ E˜ØÑ#�
Ø˜Ñ#“òg rI   c                ón  >• SnSnU R                   nU R                  nTnTU R                  -  mTnU R                   GHt  n[	        U[
        5      (       a  TUR                  -  mM*  [	        U[        5      (       a¼  [        UR                  5      S:X  a  TUR                  UR                  -   -  mMv  TUR                  -  mXWR                  -   mTnU R                  Ul        [	        U[        5      (       a	  T" U5        O%[	        U[        5      (       a	  T" U5        O S5       eX‡R                  -   mUmMû  [	        U[        5      (       aƒ  UR                  n	UR                  n
UR                  n[        R                  " U5      (       a  U R                  nXš-  n	U	S:”  a+  U
S:”  a"  TU	-  mUR!                  TTT-   TT-   X¹5        GM�  GM�  GM“  [	        U["        5      (       a¬  UR$                  nUR                  U-
  n	US:w  a  US:X  a=  UR&                  U:X  a,  X,R(                  -  n[+        T" U R,                  U-  5      5      nO<UR.                  U:X  a,  X,R0                  -  n[+        T" U R,                  U-  5      5      nX‘-  n	TU	-  mGMT  [	        U[2        5      (       d  GMl  [5        S5      e   g )Nr   rš   rð  r   z1Internal mathtext error: Char node found in vlist)rh  rg  r<   re  r™  r…  r;   rb  r/  r=   rd  r  rœ  rƒ   r\   r�  r&  r‘  r’  r“  r”  rñ  rf  r•  r"  rC  r¡  )rV   rò  ró  rh  rg  rõ  Útop_edgerf  Úsave_vr÷  rø  rù  r’  rí  rú  rû  rü  rý  rþ  r¶   rÿ  s                €€€€€€€€r5   rÿ  Úship.<locals>.vlist_out‹  sW  ø€ ð ˆØˆØ—^‘^ˆ
Ø—M‘Mˆ	Øˆ	Ø�—‘ÑˆØˆà—•ˆAÜ˜!œT×"Ñ"Ø˜Ÿ™Ñ ’Ü˜Aœt×$Ñ$Ü�q—z‘z“? aÓ'Ø˜QŸX™X¨¯©Ñ/Ñ/’Eà˜QŸX™XÑ%�EØ%¯©Ñ6�EØ"�FØ!Ÿi™i�A”GÜ! !¤U×+Ñ+Ù! !�Ü# A¤u×-Ñ-Ù! !�à8Ð&8Ó8˜uØ"§W¡WÑ,�EØ%’EÜ˜Aœs×#Ñ#ØŸh™h�ØŸW™W�
ØŸW™W�
Ü—8’8˜J×'Ñ'Ø!$§¡�JØÑ)�Ø “? z°A£~Ø˜[Ñ(�EØ—H‘H˜VØ" U™]¨E°E©MØ'÷6ò (6’?ô
 ˜Aœt×$Ñ$ØŸK™K�	Ø'Ÿo™o°Ñ5�Ø “>Ø  A“~Ø$×2Ñ2°jÓ@Ø$×(9Ñ(9Ñ9˜HÜ$)©%°·±¸xÑ0GÓ*HÓ$I˜EøØ"×/Ñ/°:Ó=Ø ×$4Ñ$4Ñ4˜Ü %¡e¨C¯L©L¸8Ñ,CÓ&DÓ E˜ØÑ$�Ø˜Ñ$“Ü˜Aœt×$Ô$Ü"ØGóIð Iò[ rI   )rì  r:   r„   r:   )rV   r  r„   rË   )rV   rœ  r„   rË   )r<   rQ   r™  r  )rV   ÚxyrM   rN   rí  rú  rû  rü  rý  rþ  r¶   rÿ  s       @@@@@@@@r5   ry   ry   8  sn   ÿ€ ð �F€BØ€EØ€EØ€EØ—‘‰O€EÜ�C‹[€FôI÷=$ö =$÷~9Iö 9Iôv �cœ5×!Ñ!Ð!Ð!Ùˆc„NØ€MrI   c                óF   ^ • SU 4S jjn[        5       R                  U5      $ )z$Helper class to raise parser errors.c                ó   >• [        XT5      erT   ©r   )ri  ÚlocÚtoksÚmsgs      €r5   Úraise_errorÚError.<locals>.raise_errorÑ  s   ø€ Ü! !¨#Ó.Ð.rI   ©ri  rŽ   r	  rx   r
  r   r„   úT.Any)r   ÚsetParseAction)r  r  s   ` r5   ÚErrorr  Ï  s   ø€ ÷/ô ‹7×!Ñ! +Ó.Ð.rI   c                  óv   • \ rS rSrSr  S
S jrSS jr\SS j5       r\R                  SS j5       rSS jr
Srg	)r  i×  zè
Parser state.

States are pushed and popped from a stack as necessary, and the "current"
state is always at the top of the stack.

Upon entering and leaving a group { } or math/non-math, the stack is pushed
and popped accordingly.
c                ó@   • Xl         X l        X0l        X@l        XPl        g rT   )r  Ú_fontr¬   r_   r£   )rW   r  r^   r¬   r_   r£   s         r5   rX   ÚParserState.__init__â  s   € àŒØŒ
Ø$ŒØ ŒØ�rI   c                ó.   • [         R                   " U 5      $ rT   )rß  r  s    r5   rß  ÚParserState.copyê  s   € Ü�yŠy˜‹ÐrI   c                ó   • U R                   $ rT   )r  r  s    r5   r^   ÚParserState.fontí  s   € à�z‰zÐrI   c                ó(   • US;   a  Xl         Xl        g )N)r  r   r!  rÏ  )r¬   r  )rW   r   s     r5   r^   r  ñ  s   € àÐ-Ó-Ø"ŒOØ�
rI   c                óx   • U R                   R                  U R                  U R                  U R                  5      $ )z.Return the underline thickness for this state.)r  rÂ   r^   r_   r£   r  s    r5   r®  Ú+ParserState.get_current_underline_thickness÷  s,   € à�|‰|×3Ñ3Ø�I‰I�t—}‘} d§h¡hó0ð 	0rI   )r  r£   r¬   r  r_   N)
r  r’   r^   rŽ   r¬   rŽ   r_   r:   r£   r:   ©r„   r  r)  )r   rŽ   r„   rË   )r„   r:   )rB   rC   rD   rE   rF   rX   rß  Úpropertyr^   Úsetterr®  rH   r@   rI   r5   r  r  ×  sJ   † ñðØôôð óó ðð 
‡[�[óó ð÷
0rI   c                ó´   ^• SU4S jjmU R                  SS5      S   nX:X  a!  USR                  S T" U5       5       5      -   OU nX![        SU 35      -  -
  $ )	a�  
Helper to define TeX commands.

``cmd("\cmd", args)`` is equivalent to
``"\cmd" - (args | Error("Expected \cmd{arg}{...}"))`` where the names in
the error message are taken from element names in *args*.  If *expr*
already includes arguments (e.g. "\cmd{arg}{...}"), then they are stripped
when constructing the parse element, but kept (and *expr* is used as is) in
the error message.
c              3  óÄ   >#   • [        U [        5      (       a$  U R                   H  nT" U5       S h  v•N   M     g U R                  (       a  U R                  v •  g g  N*7frT   )r™  r   ÚexprsÚresultsName)ÚeltÚexprÚnamess     €r5   r&  Úcmd.<locals>.names	  sI   øé € Ü�cœ?×+Ñ+ØŸ	œ	�Ù  ›;×&Ò&ò "à�_�_Ø—/‘/Ó!ð ñ 'ùs   ƒ0A ³A´+A r<  r   r   Ú c              3  ó,   #   • U  H
  nS U-  v •  M     g7f)z{%s}Nr@   )rô   r   s     r5   rö   Úcmd.<locals>.<genexpr>  s   é € ÐB²k¨d˜F TžM²kùs   ‚z	Expected )r$  r   r„   zT.Generator[str, None, None])rƒ  rn  r  )r%  ÚargsÚcsnamer4   r&  s       @r5   Úcmdr-  ý  sc   ø€ ÷"ð �Z‰Z˜˜QÓ Ñ"€Fà‹nð �B—G‘GÑB±e¸D´kÓBÓBÒBØ"&ð àœE I¨c¨UÐ"3Ó4Ñ4Ñ5Ð5rI   c                  ó@  ^• \ rS rSrSr " S S\R                  5      r\" SR                  5       5      r
\" SR                  5       5      r\" SR                  5       5      r\
\-  \-  r\" SR                  5       5      r\" S	R                  5       5      r\" S
R                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\\-  \-  r\" \" \" S5      \" S5      S-   5       V VVVs/ s HA  n[4        R6                  " [9        U5      5      R                  5       S   R;                  5       PMC     snnnn 5      r\" \R@                  5      r!ShS jr"SiS jr#SjS jr$ShS jr%ShS jr&SkS jr'SlS jr(SmS jr)SmS jr*\+" \,RZ                  5      r.SmS jr/SnS jr0S S S S!S!S"S#S#S$SS%S&S'.r1SmS( jr2SmS) jr3    SoS* jr4SpS+ jr50 S,S-_S.S/_S0S1_S2S3_S4S5_S6S7_S8S9_S:S;_S<S=_S>S?_S@SA_SBS;_SCS3_SDS5_SES7_SFS9_SGS-_SHSISJSK.Er6\" SLR                  5       5      r7SmSM jr8SpSN jr9SpSO jr:SmSP jr;SmSQ jr<SmSR jr=\=r>SqSS jr?SpST jr@SmSU jrASrSV jrBSrSW jrCSrSX jrDSpU4SY jjrE      SsSZ jrFSmS[ jrGSmS\ jrHSmS] jrISmS^ jrJSmS_ jrKSpS` jrL\L=rMrNSmSa jrOSmSb jrP      StSc jrQSmSd jrRSmSe jrSSmSf jrTSgrUU=rV$ s  snnnn f )uÚParseri  zÅ
A pyparsing-based parser for strings containing math expressions.

Raw text may also appear outside of pairs of ``$``.

The grammar is based directly on that in TeX, though it cuts a few corners.
c                  ó$   • \ rS rSrSrSrSrSrSrg)ÚParser._MathStylei  r   r   rp   r'   r@   N)	rB   rC   rD   rE   ÚDISPLAYSTYLEÚ	TEXTSTYLEÚSCRIPTSTYLEÚSCRIPTSCRIPTSTYLErH   r@   rI   r5   Ú
_MathStyler1    s   † ØˆØˆ	ØˆØÓrI   r6  uÂ  + * - âˆ’
      \pm             \sqcap                   \rhd
      \mp             \sqcup                   \unlhd
      \times          \vee                     \unrhd
      \div            \wedge                   \oplus
      \ast            \setminus                \ominus
      \star           \wr                      \otimes
      \circ           \diamond                 \oslash
      \bullet         \bigtriangleup           \odot
      \cdot           \bigtriangledown         \bigcirc
      \cap            \triangleleft            \dagger
      \cup            \triangleright           \ddagger
      \uplus          \lhd                     \amalg
      \dotplus        \dotminus                \Cap
      \Cup            \barwedge                \boxdot
      \boxminus       \boxplus                 \boxtimes
      \curlyvee       \curlywedge              \divideontimes
      \doublebarwedge \leftthreetimes          \rightthreetimes
      \slash          \veebar                  \barvee
      \cupdot         \intercal                \amalg
      \circledcirc    \circleddash             \circledast
      \boxbar         \obar                    \merge
      \minuscolon     \dotsminusdots
      aF  
      = < > :
      \leq          \geq          \equiv       \models
      \prec         \succ         \sim         \perp
      \preceq       \succeq       \simeq       \mid
      \ll           \gg           \asymp       \parallel
      \subset       \supset       \approx      \bowtie
      \subseteq     \supseteq     \cong        \Join
      \sqsubset     \sqsupset     \neq         \smile
      \sqsubseteq   \sqsupseteq   \doteq       \frown
      \in           \ni           \propto      \vdash
      \dashv        \dots         \doteqdot    \leqq
      \geqq         \lneqq        \gneqq       \lessgtr
      \leqslant     \geqslant     \eqgtr       \eqless
      \eqslantless  \eqslantgtr   \lesseqgtr   \backsim
      \backsimeq    \lesssim      \gtrsim      \precsim
      \precnsim     \gnsim        \lnsim       \succsim
      \succnsim     \nsim         \lesseqqgtr  \gtreqqless
      \gtreqless    \subseteqq    \supseteqq   \subsetneqq
      \supsetneqq   \lessapprox   \approxeq    \gtrapprox
      \precapprox   \succapprox   \precnapprox \succnapprox
      \npreccurlyeq \nsucccurlyeq \nsqsubseteq \nsqsupseteq
      \sqsubsetneq  \sqsupsetneq  \nlesssim    \ngtrsim
      \nlessgtr     \ngtrless     \lnapprox    \gnapprox
      \napprox      \approxeq     \approxident \lll
      \ggg          \nparallel    \Vdash       \Vvdash
      \nVdash       \nvdash       \vDash       \nvDash
      \nVDash       \oequal       \simneqq     \triangle
      \triangleq         \triangleeq         \triangleleft
      \triangleright     \ntriangleleft      \ntriangleright
      \trianglelefteq    \ntrianglelefteq    \trianglerighteq
      \ntrianglerighteq  \blacktriangleleft  \blacktriangleright
      \equalparallel     \measuredrightangle \varlrtriangle
      \Doteq        \Bumpeq       \Subset      \Supset
      \backepsilon  \because      \therefore   \bot
      \top          \bumpeq       \circeq      \coloneq
      \curlyeqprec  \curlyeqsucc  \eqcirc      \eqcolon
      \eqsim        \fallingdotseq \gtrdot     \gtrless
      \ltimes       \rtimes       \lessdot     \ne
      \ncong        \nequiv       \ngeq        \ngtr
      \nleq         \nless        \nmid        \notin
      \nprec        \nsubset      \nsubseteq   \nsucc
      \nsupset      \nsupseteq    \pitchfork   \preccurlyeq
      \risingdotseq \subsetneq    \succcurlyeq \supsetneq
      \varpropto    \vartriangleleft \scurel
      \vartriangleright \rightangle \equal     \backcong
      \eqdef        \wedgeq       \questeq     \between
      \veeeq        \disin        \varisins    \isins
      \isindot      \varisinobar  \isinobar    \isinvb
      \isinE        \nisd         \varnis      \nis
      \varniobar    \niobar       \bagmember   \ratio
      \Equiv        \stareq       \measeq      \arceq
      \rightassert  \rightModels  \smallin     \smallowns
      \notsmallowns \nsimeqa­  
     \leftarrow \longleftarrow \uparrow \Leftarrow \Longleftarrow
     \Uparrow \rightarrow \longrightarrow \downarrow \Rightarrow
     \Longrightarrow \Downarrow \leftrightarrow \updownarrow
     \longleftrightarrow \updownarrow \Leftrightarrow
     \Longleftrightarrow \Updownarrow \mapsto \longmapsto \nearrow
     \hookleftarrow \hookrightarrow \searrow \leftharpoonup
     \rightharpoonup \swarrow \leftharpoondown \rightharpoondown
     \nwarrow \rightleftharpoons \leadsto \dashrightarrow
     \dashleftarrow \leftleftarrows \leftrightarrows \Lleftarrow
     \Rrightarrow \twoheadleftarrow \leftarrowtail \looparrowleft
     \leftrightharpoons \curvearrowleft \circlearrowleft \Lsh
     \upuparrows \upharpoonleft \downharpoonleft \multimap
     \leftrightsquigarrow \rightrightarrows \rightleftarrows
     \rightrightarrows \rightleftarrows \twoheadrightarrow
     \rightarrowtail \looparrowright \rightleftharpoons
     \curvearrowright \circlearrowright \Rsh \downdownarrows
     \upharpoonright \downharpoonright \rightsquigarrow \nleftarrow
     \nrightarrow \nLeftarrow \nRightarrow \nleftrightarrow
     \nLeftrightarrow \to \Swarrow \Searrow \Nwarrow \Nearrow
     \leftsquigarrow \overleftarrow \overleftrightarrow \cwopencirclearrow
     \downzigzagarrow \cupleftarrow \rightzigzagarrow \twoheaddownarrow
     \updownarrowbar \twoheaduparrow \rightarrowbar \updownarrows
     \barleftarrow \mapsfrom \mapsdown \mapsup \Ldsh \Rdsh
     z, ; . ! \ldotp \cdotpz}
       \sum \prod \coprod \bigcap \bigcup \bigsqcup \bigvee
       \bigwedge \bigodot \bigotimes \bigoplus \biguplus
       zlim liminf limsup sup max minz.\int \oint \iint \oiint \iiint \oiiint \iiiintz3rm cal it tt sf bf bfit default bb frak scr regularz¢
      arccos csc ker min arcsin deg lg Pr arctan det lim sec arg dim
      liminf sin cos exp limsup sinh cosh gcd ln sup cot hom log tan
      coth inf max tanhzn
      | \| / \backslash \uparrow \downarrow \updownarrow \Uparrow
      \Downarrow \Updownarrow . \vert \Vertz[
      ( [ \{ < \lfloor \langle \lceil \lbrace \leftbrace \lbrack \leftparen \lgroup
      z]
      ) ] \} > \rfloor \rangle \rceil \rbrace \rightbrace \rbrack \rightparen \rgroup
      u   Î±u   Ï‰r   rè  c                ó6  ^ ^• [         R                  " 5       mSCUU 4S jjnSDS jn[        S5      Tl        [	        T R
                  5      " S5      Tl        [	        T R                   Vs/ s H  n[        UR                  5      PM     sn5      " S5      Tl
        [        SSR                  S	R                  [        [        R                  [         5      5      5      -   5      " S
5      R#                  5       Tl        [        S5      " S5      Tl        U" ST R(                  5      Tl        [-        S[	        T R(                  5      " S5      -   5      S-   Tl        [1        S5      Tl        [	        T R4                  5      Tl        [9        5       Tl        [9        5       Tl        [9        5       Tl        [9        5       Tl         [9        5       Tl!        [9        5       Tl"        T=R>                  TR<                  -  sl        U" 5         T=RB                  S[G        TRD                  5      " S5      -   S-   -  sl!        T=R@                  S[I        TRD                  5      " S5      -   S-   -  sl         [K        SSTR                  S5      -   S-   5      Tl&        U" S/ T RN                  QT RP                  Q5      TR?                  S
5      -
  Tl)        U" ST RT                  5      Tl+        TR.                  [G        TRD                  5      " S5      -   TR2                  -   Tl,        TR.                  [G        TRD                  5      " S5      -   [[        5       -   Tl.        [K        STRA                  S5      TRA                  S5      -   5      Tl/        [K        STRA                  S5      TRA                  S5      -   5      Tl0        [K        STRA                  S5      TRA                  S5      -   5      Tl1        [K        SS[-        TR6                  5      " S5      -   S-   S-   [-        TR6                  5      " S5      -   S-   S-   TR                  S5      -   S-   S-   [-        TR                  5      " S5      -   S-   TRA                  S5      -   TRA                  S5      -   5      Tl2        [K        S[-        S[I        [g        S5      TRD                  -   5      " S 5      -   S-   5      TRA                  S!5      -   5      Tl4        [K        S"TRA                  S#5      5      Tl5        [K        S$TRC                  S%5      TRC                  S#5      -   5      Tl6        [K        S&TRC                  S%5      TRC                  S#5      -   5      Tl7        [K        S'[q        SS(SS)95      Tl9        [K        S*[u        SS[w        [I        TRD                  5      5      [G        [1        S+5      Ry                  5       5      -   S,9" S-5      5      Tl=        [-        TR<                  5      " S.5      [I        [	        S/S0/5      TR<                  -
  5      " S15      -   [        S25      " S35      -   [        S45      " S35      -  TR?                  S.5      [        S25      " S35      -   -  Tl>        TR                  TRL                  -  TR*                  -  TR|                  -  Tl?        T=RD                  TR~                  TR:                  -  TR\                  -  TR&                  -  -  sl"        [K        S5S[G        TR~                  5      " S5      -   S-   5      Tl@        [K        S6S[G        TR~                  5      " S!5      -   S-   5      TlA        T=R<                  TRR                  TR$                  -  TRV                  -  TR€                  -  TRX                  -  TR^                  -  TR`                  -  TRb                  -  TRd                  -  TRl                  -  TRn                  -  TRh                  -  TRj                  -  TRr                  -  TR‚                  -  TRz                  -  -  sl        S7TR7                  S85      […        S95      -  -
  nT=R:                  S:TR7                  S;5      […        S95      -  -
  [G        TR~                  TR:                  -  U-  5      " S<5      -   S=-   TR7                  S>5      […        S95      -  -
  -  sl        [I        TRD                  5      TlC        [q        S?S(S@SA9TlD        [        SB5      R#                  5       TlE        TRŠ                  [G        TRˆ                  TRŠ                  -   5      -   [[        5       -   TlF        U" 5         TRŒ                  T lG        TR†                  T lH        S@T lI        g s  snf )ENc                 ó  >• [        T5      R                  5        Hb  u  pU R                  S5      (       a  M  U S;  a  UR                  U 5        [	        TU 5      (       d  MG  UR                  [        TU 5      5        Md     g )NÚ_)ÚtokenÚ	placeableÚ
auto_delim)Úvarsr(  r¯  ÚsetNameÚhasattrr  r�  )r)  rõ   rf  rW   s     €€r5   Úset_names_and_parse_actionsÚ4Parser.__init__.<locals>.set_names_and_parse_actions¹  sa   ø€ Ü  ›GŸM™MžO‘�Ø—~‘~ c×*Ó*ð Ð"FÓFØŸ™ CÔ(ä˜t S×)Ó)Ø×*Ñ*¬7°4¸Ó+=Ö>ò ,rI   Úgroupc                óx  • / n/ nU H?  nUS   R                  5       (       a  UR                  U5        M.  UR                  U5        MA     [        SR                  U SR	                  [        [        R                  U5      5      U(       a  SOSSR	                  [        [        R                  U5      5      S95      $ )Nrè  z<\\(?P<{group}>(?:{alpha})(?![A-Za-z]){additional}{nonalpha})Ú|r(  )rB  ÚalpharŒ  Únonalpha)Úisalpharµ   r   rm  rn  r[   ÚreÚescape)rB  r&  Úends_with_alphaÚends_with_nonalphar   s        r5   ÚcsnamesÚ Parser.__init__.<locals>.csnamesÈ  s¢   € Ø ˆOØ!#ÐÛ�Ø˜‘8×#Ñ#×%Ñ%Ø#×*Ñ*¨4Ö0à&×-Ñ-¨dÖ3ñ	 ô
 ØO×VÑVØØŸ(™(¤3¤r§y¡y°/Ó#BÓCÞ&8™s¸bØ ŸX™X¤c¬"¯)©)Ð5GÓ&HÓIð	 Wð óð rI   z[-+]?([0-9]+\.?[0-9]*|\.[0-9]+)ÚspaceÚstyle_literalzI[a-zA-Z0-9 +\-*/<>=:,.;!\?&'@()\[\]|\U00000080-\U0001ffff]|\\[%${}\[\]_|]z|\\(?:{})(?![A-Za-z])rD  r­   z\\[A-Za-z]+r   r^   z\mathr<  r@  z\hspaceÚaccentz\fracr`   Údenz\dfracz\binomz\genfracÚldelimÚrdelimÚrulesizeÚstylez\sqrt{value}rD  rG  Úrootrì  z	\overlineÚbodyz\oversetÚ
annotationz	\undersetz\textr-   )ÚendQuoteCharz	\substackz\\)ÚopenerÚcloserÚcontentÚpartsÚnucleusr9  rr  Úsubsuperz'*Úapostrophesz'+z\operatornamez\boldsymbolú\middleÚmdelimzExpected a delimiterz\leftÚleftrã  z\rightÚrightrN  F)ÚunquoteResultsz(?:(?:\\[$])|[^$])*r(  )rB  rŽ   r&  zIterable[str]r„   r   )JÚtypesÚSimpleNamespacer   Úfloat_literalr	   Ú_space_widthsrN  r6  rŽ   rì  rO  rm  rn  r[   rH  rI  r   ÚleaveWhitespacer3   Úunknown_symbolÚ
_fontnamesr^   r   Ústart_groupr   Ú	end_groupÚ_delimsÚdelimr   r<  r;  Únamed_placeableÚrequired_groupÚoptional_groupr:  r   r
   r-  ÚcustomspaceÚ_accent_mapÚ_wide_accentsrP  Ú_function_namesÚfunctionrB  r   Úunclosed_groupÚfracÚdfracÚbinomÚgenfracr   ÚsqrtÚoverlineÚoversetÚundersetr   Útextr)   r   ÚsuppressÚsubstackr_  ÚsimpleÚoperatornameÚ
boldsymbolr  ÚmathÚmath_stringÚnon_mathÚmainÚ_expressionÚ_math_expressionÚ_in_subscript_or_superscript)rW   r@  rL  rv  rb  rf  s   `    @r5   rX   ÚParser.__init__¶  s`  ù€ Ü×!Ò!Ó#ˆ÷
	?ð 
	?ô	ô" !Ð!CÓDˆŒÜ  ×!3Ñ!3Ô4°WÓ=ˆŒä Ø#'§?¢?Ó3¢?˜aŒS�—‘Ž\¡?Ñ3ô5Ø5DóFˆŒô !ðà&×-Ñ-Ø—‘œœRŸY™Y¬Ó0Ó1ó3ñ3ô
ð
 ó÷
 !‘Ó"ð 	
Œô ! Ô0°Ó8ˆÔá" 6¨4¯?©?Ó;ˆŒÜ# H¬u°T·_±_Ô/EÀfÓ/MÑ$MÓNÐQTÑTˆŒÜ" 3›<ˆŒä  §¡Ó.ˆŒô %›YˆŒÜ$›YˆŒÜ$›YˆÔÜ$›YˆÔÜ$›YˆÔÜ$›YˆŒð 	
×Ò˜aŸk™kÑ)Õá#Ô%à	×Ò˜S¤:¨a¯g©gÔ#6°wÓ#?Ñ?À#ÑEÑEÕØ	×Ò˜S¤9¨Q¯W©WÔ#5°gÓ#>Ñ>ÀÑDÑDÕä˜J¨¨a¯o©o¸gÓ.FÑ(FÈÑ(LÓMˆŒñ �HÐF × 0Ñ 0ÐF°4×3EÑ3EÐFÓGØ×Ñ Ó&ñ'ð 	
Œñ ˜V T×%9Ñ%9Ó:ˆŒ
à—-‘-¤*¨Q¯W©WÔ"5°gÓ">Ñ>ÀÇÁÑLˆŒØŸM™M¬J°q·w±wÔ,?ÀÓ,HÑHÌ9Ë;ÑVˆÔä�h × 0Ñ 0°Ó 7¸!×:JÑ:JÈ5Ó:QÑ QÓRˆŒÜ�i ×!1Ñ!1°%Ó!8¸1×;KÑ;KÈEÓ;RÑ!RÓSˆŒÜ�i ×!1Ñ!1°%Ó!8¸1×;KÑ;KÈEÓ;RÑ!RÓSˆŒäØØ”(˜1Ÿ7™7Ô# HÓ-Ñ-°Ñ3ØñÜ˜QŸW™WÔ% hÓ/ñ0Ø25ñ6àñà—O‘O JÓ/ñ0à25ñ6ð ñô ˜QŸ_™_Ô-¨gÓ6ñ7ð :=ñ=ð ×Ñ˜uÓ%ñ	&ð
 ×Ñ˜uÓ%ñ&ó'ˆŒ	ô ØÜ�Sœ9¤V¨C£[°1·7±7Ñ%:Ô;¸FÓCÑCÀcÑIÓJØ×Ñ˜wÓ'ñ(ó)ˆŒô
 ˜ q×'7Ñ'7¸Ó'?Ó@ˆŒ
äØØ×Ñ˜\Ó*¨Q×-=Ñ-=¸fÓ-EÑEóGˆŒ	ô ØØ×Ñ˜\Ó*¨Q×-=Ñ-=¸fÓ-EÑEóGˆŒ
ô �Xœ|¨C°ÀCÑHÓIˆŒä˜Ü&¨c¸#Ü/4´Y¸q¿w¹wÓ5GÓ/HÜ'1´'¸&³/×2JÑ2JÓ2LÓ'Mñ0NòOàOVóXóYˆŒ
ô �a—k‘kÔ" 9Ó-Üœ  S˜zÓ*¨Q¯[©[Ñ8Ô9¸*ÓEñFä�TŒ{˜=Ó)ñ*ô �DŒk˜-Ó(ñ)ð × Ñ  Ó+¬e°D¬k¸-Ó.HÑHñ	Jð 	
Œ
ð —7‘7˜QŸ]™]Ñ*¨Q¯V©VÑ3°a·j±jÑ@ˆŒà	�ŠØ�H‰HØ�l‰lñà×Ññð ×Ñññ	
�ô Ð-¨s´ZÀÇÁÔ5IÈ&Ó5QÑ/QÐTWÑ/WÓXˆŒäØ˜C¤*¨Q¯X©XÔ"6°wÓ"?Ñ?À#ÑEóGˆŒð 	
�ŠØ�H‰HØ�h‰hñð �j‰jñð �n‰nñ	ð
 �g‰gñð �f‰fñð �g‰gñð �g‰gñð �i‰iñ	ð �i‰iñ
ð �j‰jñð �f‰fñð �j‰jñð �f‰fñð �l‰lñð  �j‰jñ!ñ	
�ð( ˜qŸw™w xÓ0´5Ð9OÓ3PÑPÑQˆØ	�ŠØ˜Ÿ™ ›¬%Ð0FÓ*GÑGÑHÜ˜Ÿ™ A§L¡LÑ0°6Ñ9Ô:¸5ÓAñBàñàŸ7™7 7Ó+¬eÐ4JÓ.KÑKñMñ	
�ô $ A§G¡GÓ,ˆŒÜ& s¨DÀÑGˆŒÜÐ 6Ó7×GÑGÓIˆŒ
à�J‰Jœ A§M¡M°A·J±JÑ$>Ó?Ñ?Ä)Ã+ÑMð 	
Œñ 	$Ô%àŸ6™6ˆÔØ !§¡ˆÔð -2ˆÕ)ùòa 4s   Á)fc                ól  • [        USSX45      /U l        0 U l         U R                  R	                  U5      n/ U l        SU l	        0 U l        [        R                  " 5         [        R                  " [        US   5      $ ! [
         a)  n[        S[        R                  " US5      -   5      SeSnAff = f)z‘
Parse expression *s* using the given *fonts_object* for
output, at the given *fontsize* and *dpi*.

Returns the parse tree of `Node` instances.
rÒ   r  Ú
r   NF)r  Ú_state_stackÚ_em_width_cacherŒ  ÚparseStringr   r2   r   ÚexplainrŽ  r   Ú
resetCacherÞ   rß   r  )rW   ri  Úfonts_objectr_   r£   Úresultr4   s          r5   r%   ÚParser.parseo  s¯   € ô ˜ i°°xÓEðGˆÔàFHˆÔð	NØ×%Ñ%×1Ñ1°!Ó4ˆFð ˆÔØ,1ˆÔ)à!ˆÔÜ× Ò Ô"Ü�vŠv”e˜V A™YÓ'Ð'øô "ó 	Nä˜T¤N×$:Ò$:¸3ÀÓ$BÑBÓCÈÐMûð	Nús   �B  Â 
B3Â
$B.Â.B3c                ó    • U R                   S   $ )z&Get the current `State` of the parser.rè  )r’  r  s    r5   Ú	get_stateÚParser.get_state…  s   € à× Ñ  Ñ$Ð$rI   c                ó8   • U R                   R                  5         g)zPop a `State` off of the stack.N)r’  Úpopr  s    r5   Ú	pop_stateÚParser.pop_state‰  s   € à×Ñ×ÑÕrI   c                ór   • U R                   R                  U R                  5       R                  5       5        g)z=Push a new `State` onto the stack, copying the current state.N)r’  rµ   r›  rß  r  s    r5   Ú
push_stateÚParser.push_state�  s&   € à×Ñ× Ñ  §¡Ó!1×!6Ñ!6Ó!8Õ9rI   c                ó6   • [        UR                  5       5      /$ rT   )r  ÚasList©rW   r
  s     r5   r‹  ÚParser.main‘  s   € Ü�d—k‘k“mÓ$Ð%Ð%rI   c                óB   • U R                   R                  US   SS SS9$ )Nr   r   rè  T)ÚparseAll)r�  r”  r¦  s     r5   r‰  ÚParser.math_string”  s(   € Ø×$Ñ$×0Ñ0°°a±¸¸2°ÈÐ0ÐNÐNrI   c                óZ   • [        UR                  5       5      nU R                  5         U/$ rT   )r  r¥  rŸ  )rW   r
  Úhlists      r5   rˆ  ÚParser.math—  s#   € Ü�d—k‘k“mÓ$ˆØ�‰ÔØˆwˆrI   c                ó  • US   R                  SS5      nU Vs/ s H  n[        X0R                  5       5      PM     nn[        U5      nU R	                  5         [
        R                  S   U R                  5       l        U/$ s  snf )Nr   z\$rN  r  )ÚreplacerC  r›  r  r¢  r  r  r^   )rW   r
  ri  rt  Úsymbolsr¬  s         r5   rŠ  ÚParser.non_mathœ  sn   € Ø�‰G�O‰O˜E 3Ó'ˆÙ67Ó8²a°”4˜Ÿ>™>Ó+Ö,±aˆÐ8Ü�g“ˆà�‰ÔÜ #§¡Ð-?Ñ @ˆ�‰ÓÔØˆwˆùò 9s   š#Bc           	     óÐ   • U R                  5         U R                  5       nSUl        [        US    Vs/ s H  n[	        X25      PM     sn5      nU R                  5         U/$ s  snf )Nr  r   )r¢  r›  r^   r  rC  rŸ  )rW   r
  r  rt  r¬  s        r5   r‚  ÚParser.text§  sV   € Ø�‰ÔØ—‘Ó ˆØˆŒ
Ü¨t°AªwÓ7ªw¨!”t˜A–~©wÑ7Ó8ˆØ�‰ÔØˆwˆùò 8s   ´A#c                óz  • U R                  5       nUR                  UR                  UR                  4nU R                  R                  U5      nUc^  UR                  R                  S[        R                  S   SUR                  UR                  5      nUR                  nX@R                  U'   [        XA-  5      $ )Nr   r  rX  )r›  r^   r_   r£   r“  rà   r  r²   r  r  r‰   r…  )rW   Ú
percentager  r)  r;   rr   s         r5   Ú_make_spaceÚParser._make_space¯  sœ   € ð —‘Ó ˆØ�z‰z˜5Ÿ>™>¨5¯9©9Ð5ˆØ×$Ñ$×(Ñ(¨Ó-ˆØ‰=Ø—m‘m×/Ñ/Ø”c—l‘lÐ#5Ñ6¸Ø—‘ §	¡	ó+ˆGð —O‘OˆEØ(-× Ñ  Ñ%Ü�EÑ&Ó'Ð'rI   g…¶œKqUÅ?gý0Bx´qÌ?g‚çÞÃ%ÇÑ?g¾¤1ZGUÕ?rö  rp   g…¶œKqUÅ¿)ú\,z
\thinspacez\/z\>z\:z\;z\ ru  z\enspacez\quadz\qquadz\!c                óN   • U R                   US      nU R                  U5      nU/$ ©NrN  )ri  r¶  )rW   r
  r`   rV   s       r5   rN  ÚParser.spaceÏ  s-   € Ø× Ñ   g¡Ñ/ˆØ×Ñ˜sÓ#ˆØˆuˆrI   c                ó,   • U R                  US   5      /$ rº  )r¶  r¦  s     r5   rt  ÚParser.customspaceÔ  s   € Ø× Ñ   g¡Ó/Ð0Ð0rI   c                óX  • US   nUS:X  a  Sn [        X@R                  5       5      nX@R                  ;   aª  [        S US U S S S2    5       S5      nU R                  (       dN  X@R                  ;   aB  [        US U R                  5       5      S:X  d  US	1U R                  kU R                  k;   a  U/$ [        U R                  S
5      UU R                  S
5      /SS9/$ X@R                  ;   a—  [        S US U S S S2    5       S5      n[        S XS-   S   5       S5      nUS:X  a  US	:X  a	  US:X  a  U/$ US:X  a-  UR                  5       (       a  UR                  5       (       a  U/$ [        XPR                  S
5      /SS9/$ U/$ ! [         a  n[        XSU-  5      UeS nAff = f)Nr­   rm  u   âˆ’zUnknown symbol: %sc              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7f©rK  Nr@   ©rô   rt  s     r5   rö   Ú Parser.symbol.<locals>.<genexpr>ê  ó   é € ÐCª A¸s¹(Ÿa™aªùó   ‚	�	rè  r(  r   r<  rù  TrÍ  c              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7frÀ  r@   rÁ  s     r5   rö   rÂ  ø  rÃ  rÄ  c              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7frÀ  r@   rÁ  s     r5   rö   rÂ  ù  s   é € ÐAª A¸S¹Ÿa™aªùrÄ  r   rq  r@  ro  )rC  r›  r2   r   Ú_spaced_symbolsr  rŽ  Ú_binary_operatorsr/  rƒ  Ú_left_delimsÚ_relation_symbolsr  r¶  Ú_punctuation_symbolsÚisdigit)	rW   ri  r	  r
  rt  r·  r4   Ú	prev_charÚ	next_chars	            r5   r3   ÚParser.symbol×  sé  € à�‰KˆØ�‹8ð !ˆAð	IÜ˜Ÿ>™>Ó+Ó,ˆDð
 ×$Ñ$Ó$ô ÑC¨¨4¨C¨±°2°ªÓCÀRÓHˆIð ×1×1Ø×/Ñ/Ó/Ü˜˜$˜3˜Ÿ™›Ó(¨AÓ-°Øð?JØ"×/Ñ/ð?JØ26×2HÑ2Hð?Jó 2Jà�v�ä˜t×/Ñ/°Ó4Ø#Ø#×/Ñ/°Ó4ð6ð '+ñ,ð -ð -ð ×+Ñ+Ó+ÜÑC¨¨4¨C¨±°2°ªÓCÀRÓHˆIÜÑA¨°©7¨8©ÓAÀ2ÓFˆIð �C‹xØ Ó#¨	°SÓ(8Ø ˜6�Mð �C‹x˜I×-Ñ-×/Ñ/°I×4EÑ4E×4GÑ4GØ�v�ä˜t×%5Ñ%5°cÓ%:Ð;ÀTÑJÐKÐKØˆvˆøôE ó 	IÜ% aØ&:¸QÑ&>ó@ØEHðIûð	Iús   �F
 Æ

F)ÆF$Æ$F)c                ó&   • [        XSUS    35      e)NzUnknown symbol: r   r  ©rW   ri  r	  r
  s       r5   rk  ÚParser.unknown_symbol	  s   € Ü! !Ð,<¸TÀ&¹\¸NÐ*KÓLÐLrI   Úhatz\circumflexaccentÚbrevez\combiningbreveÚbarz\combiningoverlineÚgravez\combininggraveaccentÚacutez\combiningacuteaccentÚtildez\combiningtildeÚdotz\combiningdotaboveÚddotz\combiningdiaeresisÚdddotz\combiningthreedotsaboveÚddddotz\combiningfourdotsaboveÚvecz\combiningrightarrowaboverF  Ú`rZ  ru  ro  rr  z\rightarrowz
\leftarrowz\circ)ÚoverrightarrowÚoverleftarrowÚmathringzwidehat widetilde widebarc                óö  • U R                  5       nUR                  5       nUS   nUS   nX@R                  ;   a  [        SU-   UR                  U[
        S9nO[        U R                  U   U5      nUS:X  a   UR                  5         UR                  5         [        [        UR                  S-  5      U/5      nUR                  UR                  S5        [        U[        SUS	-  5      [        U/5      /5      $ )
NrP  r­   r-   )rè  rá  g      @Úexactlyrš   ç       @)r›  r®  rv  ræ  r;   rZ  ru  r"  rË  r=  r�  rœ  r7  r  )rW   r
  r  r¯  rP  r­   Ú
accent_boxÚcentereds           r5   rP  ÚParser.accent#	  sé   € Ø—‘Ó ˆØ×9Ñ9Ó;ˆ	Ø�h‘ˆØ�5‰kˆà×'Ñ'Ó'Ü&Ø�v‘˜sŸy™y¨%¼FñD‰Jô   × 0Ñ 0°Ñ 8¸%Ó@ˆJØ�ZÓØ×ÑÔØ×ÑÔÜœd 3§9¡9¨s¡?Ó3°ZÐ@ÓAˆØ�‰�s—y‘y )Ô,ÜØÜ�R˜ S™Ó)Ü�s�e“ðó ð 	rI   c                ó>   • U R                  XU5      nUS   Ul        U$ )Nr   )r†  Úfunction_name)rW   ri  r	  r
  r¬  s        r5   rx  ÚParser.function9	  s%   € Ø×!Ñ! !¨$Ó/ˆØ" 6™lˆÔØˆrI   c                óð  • U R                  5         U R                  5       nSUl        / nUS   nU H„  n[        U[        5      (       a*  SUl        UR                  5         UR                  U5        MB  [        U[        5      (       a  UR                  [	        Xt5      5        Ms  UR                  U5        M†     U[        U5      -   S-   n[        U[        5      (       a  U[        S5      -  n[        S XS   5       S5      n	U R                  SS1-  n
Xš;  a0  X`R                  ;  a!  XPR                  U R                  S	   5      /-  nU R                  5         U	S
;   a  SU l        OSU l        [#        U5      $ )Nr  r   r   zoperatorname{}c              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7frÀ  r@   rÁ  s     r5   rö   Ú&Parser.operatorname.<locals>.<genexpr>Q	  s   é € ÐCÒ%6 ¸s¹(Ÿ!™!Ò%6ùrÄ  r(  rr  r9  r¸  >   rr  r9  TF)r¢  r›  r^   r™  rC  rE  rµ   rŽ   r/  r   r  ro  Ú_overunder_functionsr¶  ri  rŸ  rŽ  r  )rW   ri  r	  r
  r  Ú
hlist_listr   rt  Únext_char_locrÎ  Ú
delimiterss              r5   r†  ÚParser.operatorname>	  sN  € Ø�‰ÔØ—‘Ó ˆØˆŒ
Ø!#ˆ
à�F‰|ˆÛˆAÜ˜!œT×"Ñ"Ø�”Ø×!Ñ!Ô#Ø×!Ñ! !Ö$Ü˜Aœs×#Ñ#Ø×!Ñ!¤$ q£.Ö1à×!Ñ! !Ö$ñ ð œc $›i™¨!Ñ+ˆÜ�dœL×)Ñ)ØœSÐ!1Ó2Ñ2ˆMÜÑC Q ~Ñ%6ÓCÀRÓHˆ	Ø—\‘\ S¨# JÑ.ˆ
ØÓ'Ø×5Ñ5Ó5à×+Ñ+¨D×,>Ñ,>¸uÑ,EÓFÐGÑGˆJØ�‰Ôð ˜
Ó"Ø04ˆDÕ-à05ˆDÔ-ä�ZÓ Ð rI   c                óš   • U R                  5         UR                  S5      (       a$  UR                  S5      U R                  5       l        / $ ©Nr^   )r¢  rà   r›  r^   r¦  s     r5   rm  ÚParser.start_groupa	  s8   € Ø�‰Ôà�8‰8�F×ÑØ$(§H¡H¨VÓ$4ˆD�N‰NÓÔ!Øˆ	rI   c                ó>   • [        UR                  S/ 5      5      nU/$ ©NrB  ©r  rà   )rW   r
  Úgrps      r5   rB  ÚParser.grouph	  s   € Ü�D—H‘H˜W bÓ)Ó*ˆØˆuˆrI   c                ó8   • [        UR                  S/ 5      5      $ r÷  rø  r¦  s     r5   rr  ÚParser.required_groupl	  s   € Ü�T—X‘X˜g rÓ*Ó+Ð+rI   c                ó&   • U R                  5         / $ rT   )rŸ  r  s    r5   rn  ÚParser.end_groupq	  s   € Ø�‰ÔØˆ	rI   c                ó.   • [        U[        U5      S5      e)NzExpected '}')r   r/  rÑ  s       r5   ry  ÚParser.unclosed_groupu	  s   € Ü! !¤S¨£V¨^Ó<Ð<rI   c                ó6   • US   U R                  5       l        / $ rô  )r›  r^   r¦  s     r5   r^   ÚParser.fontx	  s   € Ø $ V¡ˆ�‰ÓÔØˆ	rI   c                óÞ   • [        U[        5      (       a  UR                  U R                  ;   $ [        U[        5      (       a*  [        US5      (       a  UR                  U R                  ;   $ g)Nré  F)r™  rC  rt  Ú_overunder_symbolsr  r?  ré  rî  ©rW   r^  s     r5   Úis_overunderÚParser.is_overunder|	  sW   € Ü�gœt×$Ñ$Ø—9‘9 × 7Ñ 7Ñ7Ð7Ü˜¤×'Ñ'¬G°G¸_×,MÑ,MØ×(Ñ(¨D×,EÑ,EÑEÐEØrI   c                ó`   • [        U[        5      (       a  UR                  U R                  ;   $ g©NF)r™  rC  rt  Ú_dropsub_symbolsr  s     r5   Ú
is_dropsubÚParser.is_dropsubƒ	  s'   € Ü�gœt×$Ñ$Ø—9‘9 × 5Ñ 5Ñ5Ð5ØrI   c                óN   • [        U[        5      (       a  UR                  5       $ gr	  )r™  rC  rP  r  s     r5   rP  ÚParser.is_slantedˆ	  s!   € Ü�gœt×$Ñ$Ø×%Ñ%Ó'Ð'ØrI   c           	     ó  >• UR                  S[        S5      5      nUR                  S/ 5      n[        UR                  S/ 5      5      nU(       d	  U(       d  U$ S =pxU(       a4  UtpšnU	S:X  a  Ub  [        S5      eU
nOUb  [        S5      eU
nU(       a  M4  U R	                  5       nUR
                  R                  UR                  UR                  UR                  5      nUR
                  R                  UR                  UR                  UR                  5      nU(       am  Uc  [        / 5      n[        U5       H0  nUR                  R                  U R                  XSS	05      5        M2     UR!                  5         UR#                  5         U R%                  U5      (       GaO  / nS
nUR&                  nUb&  UR)                  5         [+        UUR&                  5      nUb&  UR)                  5         [+        UUR&                  5      nUS-  nUb;  [-        U/5      nUR#                  US5        UR                  U[/        SU5      /5        [-        U/5      nUR#                  US5        UR1                  U5        UbW  [-        U/5      nUR#                  US5        UR                  [/        SU5      U/5        UR2                  U-   UR4                  -   n[7        U5      nUUl        [        U/5      nU/$ Un[;        U[        5      (       a‰  UR                  n[        U5      (       ab  [;        US   [<        5      (       a  [?        US   S5      (       a  US S nUS   n[?        US5      (       a  UR@                  RB                  Ul        [        USS9nO<[;        U[D        5      (       a  UR@                  RB                  Ul        [        U/5      n[G        U5      nUR2                  nSnU RI                  U5      (       a  UR4                  nURJ                  U-  nURJ                  U-  nU RM                  U5      (       a„  UURJ                  U-  -  nUURN                  UUS-  S-  -
  -  -  nU RI                  U5      (       a?  SURJ                  -  URP                  -
  U-  nSURJ                  -  URP                  -   U-  nOSnUc€  [        [=        U5      [R        RT                  " [V        U5      /5      nUR)                  5         U RI                  U5      (       a  UURX                  U-  -   nOURZ                  U-  nUUl        GO3[        [=        U5      U/5      nUR)                  5         U RI                  U5      (       a  UURX                  U-  -
  nOUR\                  U-  nUc	  U* Ul        OÉ[        [=        U5      U/5      n U R)                  5         U RI                  U5      (       a  UURX                  U-  -   nOUR^                  U-  nSU-  UUR4                  -
  U R2                  U-
  -
  -
  n!U!S
:”  a  UU!-  n[7        U[=        UUR4                  -
  U R2                  U-
  -
  5      U /5      nUUl        U RI                  U5      (       d"  U=R&                  UR`                  U-  -  sl        UU/n"U Rb                  (       a)  U"U Re                  U Rf                  S   5      /-  n"SU l1        [        U"5      nU/$ )Nr^  r   r_  r`  r9  zDouble subscriptzDouble superscriptr­   rÈ  rš   ç      @rã  rè  éþÿÿÿrL  FrÍ  rä  r'   r¸  )4rà   r=  r/  r   r›  r  rÂ   r^   r_   r£   r¿   r  rä  re  Úextendr3   rS  r�  r  r;   r"  ru   rË  r7  rµ   r<   r=   rœ  rd  r™  r…  r?  rL  r‰   rC  r  r  rø  rP  rú  rü  rÞ   rß   r  rò  rõ  ró  r÷  rñ  rŽ  r¶  ri  )$rW   ri  r	  r
  r^  r_  ÚnapostrophesÚsubrÔ   ÚopÚargr  Úrule_thicknessr  rI  Úvlistrã  r;   Úvgapr¬  Úvltr˜  Ú	last_charr†  r  Ú	lc_heightÚlc_baselineÚ	superkernÚsubkernr  Ú
shift_downÚshift_upr€   ÚclrÚspaced_nucleusrÛ   s$                                      €r5   r_  ÚParser.subsuper�	  s>  ø€ Ø—(‘(˜9¤d¨1£gÓ.ˆØ—8‘8˜J¨Ó+ˆÜ˜4Ÿ8™8 M°2Ó6Ó7ˆæ¦ØˆNàÐˆÞØ!)ÐˆB�hØ�S‹yØ‘?Ü-Ð.@ÓAÐAØ‘àÑ$Ü-Ð.BÓCÐCØ�÷ ˆhð —‘Ó ˆØŸ™×>Ñ>Ø�J‰J˜Ÿ™¨¯	©	ó3ˆà—-‘-×+Ñ+Ø�J‰J˜Ÿ™¨¯	©	ó3ˆö Ø‰}Ü˜b›	�Ü˜<Ö(�Ø—‘×%Ñ% d§k¡k°!¸5À)Ð:LÓ&MÖNñ )ð �J‰JŒLØ�K‰KŒMð ×Ñ˜W×%Ò%ØˆEØˆEØ—M‘MˆEØÑ Ø—‘”Ü˜E 5§;¡;Ó/�Ø‰Ø—
‘
”Ü˜E 3§9¡9Ó-�à! CÑ'ˆDØÑ Ü! 5 'Ó*�Ø—‘˜E 9Ô-Ø—‘˜e¤T¨!¨T£]Ð3Ô4Ü˜w˜iÓ(ˆEØ�K‰K˜˜yÔ)Ø�L‰L˜ÔØ‰Ü! 3 %Ó(�Ø—‘˜E 9Ô-Ø—‘œd 1 d›m¨UÐ3Ô4ØŸ™ tÑ+¨g¯m©mÑ;�Ü˜“,ˆCØ$ˆCÔÜ˜C˜5“\ˆFØ�8ˆOð ˆ	Ü�gœu×%Ñ%Ø"×+Ñ+ˆLÜ�<× Ñ ä˜|¨BÑ/´×6Ñ6Ü ¨RÑ 0°*×=Ñ=Ø#/°°Ð#4�LØ(¨Ñ,�	Ü˜9 j×1Ñ1Ø&/×&8Ñ&8×&@Ñ&@�I”Oä˜L°%Ñ8‰Gä˜'¤4×(Ñ(Ø"+×"4Ñ"4×"<Ñ"<�	”Ü˜W˜IÓ&ˆGô +¨5Ó1ˆ	Ø×&Ñ&ˆ	ØˆØ�?‰?˜9×%Ñ%Ø#Ÿ/™/ˆKð —O‘O gÑ-ˆ	Ø—/‘/ GÑ+ˆØ�?‰?˜9×%Ñ%Ø˜Ÿ™¨7Ñ2Ñ2ˆIØ˜)×1Ñ1Ø$ w°¡|°bÑ'8Ñ8ñ:ñ ;ˆIà�‰˜y×)Ñ)Ø˜yŸ™Ñ.Ø$×3Ñ3ñ4Ø7@ñA�à §¡Ñ0Ø&×5Ñ5ñ6Ø9BñC‘	ð �ð ‰=ô
 ”t˜G“}¤a§f¢f¬T°3Ó&7Ð8Ó9ˆAØ�H‰HŒJØ�‰˜y×)Ñ)Ø(¨9×+<Ñ+<¸wÑ+FÑF‘
à&Ÿ^™^¨gÑ5�
Ø'ˆAŽNä”t˜I“¨Ð.Ó/ˆAØ�H‰HŒJØ�‰˜y×)Ñ)Ø$ y×'8Ñ'8¸7Ñ'BÑB‘à$Ÿ>™>¨GÑ3�Ø‰{Ø"* �•äœ4 ›=¨#Ð.Ó/�Ø—‘”
Ø—?‘? 9×-Ñ-Ø!,¨y×/@Ñ/@À7Ñ/JÑ!J‘Jà!*§¡°'Ñ!9�Jà˜^Ñ+Ø! A§G¡GÑ+°·±¸:Ñ0EÑFñH�à˜“8Ø ‘O�HÜØÜ˜( Q§W¡WÑ,°·±¸JÑ1FÑGÓHØðó �ð ",�”à�‰˜y×)Ñ)Ø�GŠG�y×-Ñ-°Ñ7Ñ7�Gð " 1˜ˆØ×,×,Ø˜t×/Ñ/°×0BÑ0BÀ5Ñ0IÓJÐKÑKˆNØ05ˆDÔ-ä�~Ó&ˆØˆxˆrI   c           
     óÔ  • U R                  5       nUR                  5       n[        UR                  5       H#  n	UR	                  5         UR	                  5         M%     [        U/5      n
[        U/5      n[        UR                  UR                  5      nU
R                  US5        UR                  US5        [        U
[        SUS-  5      [        Xs5      [        SUS-  5      U/5      nUR                  R                  UR                  [        R                   S   SUR"                  UR$                  5      nUR&                  UR(                  UR*                  -   S-  US-  -
  -
  nXýl        [/        U[1        US-  5      /5      /nU(       d  U(       aQ  US:X  a  S	nUS:X  a  S	nU R3                  U[4        R6                  " [8        [:        [<        -  [>        -     U5      U5      $ U$ )
Nrã  r   rä  r  Ú=rp   r  r(  ro  ) r›  r®  rä  rì  r"  rË  ru   r;   r�  rœ  r7  r«  r  r²   r^   r  r  r_   r£   r<   rt   rw   rd  r  r=  Ú_auto_sized_delimiterrÞ   rß   r³  rƒ   rC  rŽ   )rW   rR  rS  ÚrulerU  r`   rQ  r  r¯  r9  ÚcnumÚcdenr;   r  rr   rã  r˜  s                    r5   Ú_genfracÚParser._genfrac3
  sª  € à—‘Ó ˆØ×9Ñ9Ó;ˆ	ä�u—{‘{Ö#ˆAØ�J‰JŒLØ�J‰JŽLñ $ô ˜#˜ÓˆÜ˜#˜ÓˆÜ�C—I‘I˜sŸy™yÓ)ˆØ�
‰
�5˜)Ô$Ø�
‰
�5˜)Ô$Ü�tÜ˜A˜y¨3™Ó/Ü˜UÓ)Ü˜A˜y¨3™Ó/Øð	ó ˆð —-‘-×+Ñ+Ø�J‰JœŸ™Ð%7Ñ8Ø�—‘ §¡ó,ˆð —‘Ø—<‘< '§,¡,Ñ.°!Ñ3Ø˜c‘/ñ"ñ#ˆð #Ôä˜¤ Y°¡^Ó 4Ð5Ó6Ð7ˆÞ–VØ˜‹|Ø�Ø˜‹|Ø�Ø×-Ñ-¨fÜ./¯fªf´T¼#Ä¹*ÄsÑ:JÑ5KØ5;ó/=à.4ó6ð 6ð ˆrI   c                ó<   • U R                  [        US   5      5      $ )NrO  )r6  rx   r¦  s     r5   rO  ÚParser.style_literal]
  s   € Ø�‰œs 4¨Ñ#8Ó9Ó:Ð:rI   c           	     óÈ   • U R                  UR                  SS5      UR                  SS5      US   UR                  SU R                  R                  5      US   US   5      $ )NrR  r(  rS  rT  rU  r`   rQ  )r+  rà   r6  r3  r¦  s     r5   r}  ÚParser.genfrac`
  sZ   € Ø�}‰}Ø�H‰H�X˜rÓ" D§H¡H¨X°rÓ$:Ø�Ñ˜dŸh™h w°·±×0IÑ0IÓJØ�‰K˜˜e™ó&ð 	&rI   c           	     óš   • U R                  SSU R                  5       R                  5       U R                  R                  US   US   5      $ ©Nr(  r`   rQ  )r+  r›  r®  r6  r3  r¦  s     r5   rz  ÚParser.fracf
  sE   € Ø�}‰}Ø��D—N‘NÓ$×DÑDÓFØ�O‰O×%Ñ% t¨E¡{°D¸±KóAð 	ArI   c           	     óš   • U R                  SSU R                  5       R                  5       U R                  R                  US   US   5      $ r2  )r+  r›  r®  r6  r2  r¦  s     r5   r{  ÚParser.dfrack
  sE   € Ø�}‰}Ø��D—N‘NÓ$×DÑDÓFØ�O‰O×(Ñ(¨$¨u©+°t¸E±{óDð 	DrI   c           	     ób   • U R                  SSSU R                  R                  US   US   5      $ )Nr2  r7  r   r`   rQ  )r+  r6  r3  r¦  s     r5   r|  ÚParser.binomp
  s5   € Ø�}‰}Ø��aØ�O‰O×%Ñ% t¨E¡{°D¸±KóAð 	ArI   c                óô  • US   nUS   nU R                  5       R                  5       nUR                  5         [        U/5      n[        U/5      n[	        UR
                  UR
                  5      n	UR                  U	S5        UR                  U	S5        US-  n
XS-      S:X  a;  [        U[        SU
5      U/5      nUR                  UR                  -   U
-   Ul        U$ [        U[        SU
5      U/5      nU$ )NrX  rW  rã  r'   r   Úur   )r›  r®  r"  rË  ru   r;   r�  rœ  r7  r=   r<   rd  )rW   ri  r	  r
  rX  rW  r¯  Úcentered_annotationÚcentered_bodyr;   r  r  s               r5   Ú_gensetÚParser._gensetu
  s  € Ø˜,Ñ'ˆ
Ø�F‰|ˆØ—N‘NÓ$×DÑDÓFˆ	à×ÑÔÜ'¨¨Ó5ÐÜ! 4 &Ó)ˆÜÐ'×-Ñ-¨}×/BÑ/BÓCˆØ×!Ñ! %¨Ô3Ø×Ñ˜E 9Ô-à˜1‰}ˆØ�1‰W‰:˜ÓÜØÜ�Q˜“Ø#ðó ˆEð "/×!4Ñ!4Ð7J×7QÑ7QÑ!QÐTXÑ!XˆEÔð ˆô Ø#Ü�Q˜“Øðó ˆEð ˆrI   c                ór  • UR                  S5      nUS   nU R                  5       nUR                  5       nUR                  UR                  -
  US-  -   nUR
                  UR                  -   n[        SXgUSS9nUR                  UR                  -
  nUR
                  UR                  -   n[        [        SU-  5      U[        SU-  5      /5      n	[        [        U5      [        S5      U	/5      n
U
R                  XdR                  UR                  -  S	-  -   S
U5        U(       d  [        UR                   S-  SS5      nO+[        U5      nUR#                  5         UR#                  5         [        [        U/5      /5      nU* S-  Ul        [        U[%        UR                   * S-  5      UU
/5      nU/$ )NrV  rì  g      @re  T)rà  rp   rº  ç     À’@rã  rö  rš   r  )rà   r›  r®  r<   rd  r=   rÝ  r  r=  rœ  r«  r‘  rž  r_   r£   rƒ   r;   r"  r…  )rW   r
  rV  rW  r  r¯  r<   r=   ÚcheckÚpadded_bodyÚ	rightsideÚ
root_vlistr¬  s                r5   r~  ÚParser.sqrt—
  sŽ  € Ø�x‰x˜ÓˆØ�G‰}ˆØ—‘Ó ˆØ×9Ñ9Ó;ˆ	ð —‘˜t×0Ñ0Ñ0°9¸s±?ÑBˆØ—
‘
˜T×.Ñ.Ñ.ˆÜ˜|¨V¸EÈ$ÑOˆØ—‘ × 2Ñ 2Ñ2ˆØ—‘˜e×0Ñ0Ñ0ˆô œT ! i¡-Ó0°$¼¸QÀ¹]Ó8KÐLÓMˆÜœ5 ›<¬¨f«°{ÐCÓDˆ	à�‰˜§.¡.°5·9±9Ñ"<ÀÑ!NÑNØ! 5ô	*ö
 Ü�u—{‘{ SÑ(¨"¨bÓ1‰Dä˜“;ˆDØ�K‰KŒMØ�K‰KŒMäœE 4 &›M˜?Ó+ˆ
Ø#) '¨C¡-ˆ
Ôä�zä˜UŸ[™[˜L¨3Ñ.Ó/ØØ ð	"ó #ˆð
 ˆwˆrI   c                óŒ  • US   nU R                  5       nUR                  5       nUR                  UR                  -
  US-  -   nUR                  UR                  -   n[        [        U5      [        S5      [        U/5      /5      nUR                  XSR                  UR                  -  S-  -   SU5        [        U/5      nU/$ )NrW  r  rº  r?  rã  )r›  r®  r<   rd  r=   rœ  r«  r‘  r  rž  r_   r£   )	rW   r
  rW  r  r¯  r<   r=   rB  r¬  s	            r5   r  ÚParser.overline¿
  s¶   € Ø�F‰|ˆà—‘Ó ˆØ×9Ñ9Ó;ˆ	à—‘˜t×0Ñ0Ñ0°9¸s±?ÑBˆØ—
‘
˜T×.Ñ.Ñ.ˆô œ5 ›<¬¨f«´u¸d¸V³}ÐEÓFˆ	ð 	�‰˜§.¡.°5·9±9Ñ"<ÀÑ!NÑNØ! 5ô	*ô �y�kÓ"ˆØˆwˆrI   c           
     ó@  • U R                  5       n[        U5      (       Ga  [        U Vs/ s H&  n[        U[        5      (       a  M  UR
                  PM(     sn5      n[        U Vs/ s H&  n[        U[        5      (       a  M  UR                  PM(     sn5      nS n[        U5       HW  u  pšU
S:X  d  M  [        R                  " [        X)S-      5      nUS:w  a  [        X¶XtUS9X)S-   '   OUR                  U5        X)	 MY     [        R                  " [        [        [        -     U5      nOSnSnSn/ n/ nUS:w  a  UR                  [        XXtUS95        UR!                  U5        US:w  a  UR                  [        X6XtUS95        [#        U5      nU$ s  snf s  snf )Nra  r   ro  )rá  r   r¸  )r›  r/  ru   r™  rŽ   r<   r=   Ú	enumeraterÞ   rß   rÝ  Úremover³  rƒ   rC  rµ   r  r  )rW   ÚfrontÚmiddleÚbackr  r  r<   r=   rá  ÚidxÚelrt  Úmiddle_partr]  r¬  s                  r5   r'  ÚParser._auto_sized_delimiterÒ
  sf  € ð —‘Ó ˆÜˆv�;Š;Ü©FÓMªF q¼*ÀQÌ×:L›(˜!Ÿ(œ(©FÑMÓNˆFÜ©&ÓKª& Q¼
À1Äc×8J›˜Ÿœ©&ÑKÓLˆEØˆFÜ$ VÖ,‘�Ø˜Õ#ÜŸšœs F°©7¡OÓ4�AØ˜C“xÜ*8Ø !¨5Àñ+H˜ Q™wšð Ÿ™ aÔ(Øšñ -ô Ÿ&š&¤¤c¬D¡jÑ!1°6Ó:‰KàˆFØˆEØˆFØˆKàˆà�C‹<Ø�L‰LÜ˜u¨eÀ6ÑJôLà�‰�[Ô!Ø�3‹;Ø�L‰LÜ˜t¨UÀ&ÑIôKä�e“ˆØˆùò? NùÚKs   «FÁFÁ(FÂFc                óf   • U R                  US   SU;   a  US   R                  5       O/ US   5      $ )Nrc  rã  rd  )r'  r¥  r¦  s     r5   r<  ÚParser.auto_delimø
  s;   € Ø×)Ñ)Ø�‰Là$)¨T£MˆD�‰K×ÑÔ °rØ�‰Mó	ð 	rI   c                óž  • U R                  5         U R                  5       n/ nUS   nU GH  n[        U[        5      (       aN  UR                  S   n[        U[
        5      (       a  SUl        UR                  5         UR                  U5        Mg  [        U[
        5      (       ax  SUl        UR                  U R                  ;   d  UR                  SS  U R                  ;   a  SUl        UR                  5         UR                  5         UR                  U5        Mô  UR                  U5        GM     U R                  5         [        U5      $ )Nrì  r   r!  rÏ  )r¢  r›  r™  r  re  rC  r^   rE  rµ   rt  Ú_latin_alphabetsÚ_small_greekrŸ  )rW   r
  r  r¬  r   rt  rP  s          r5   r‡  ÚParser.boldsymbolÿ
  sþ   € Ø�‰ÔØ—‘Ó ˆØˆØ�G‰}ˆÜˆAÜ˜!œU×#Ñ#Ø—J‘J˜q‘M�Ü˜a¤×&Ñ&Ø!�A”FØ×%Ñ%Ô'Ø—‘˜Q–Ü˜Aœt×$Ñ$Ø�”Ø—C‘C˜4×0Ñ0Ó0Ø—3‘3�q�r�7˜d×/Ñ/Ó/Ø#�A”FØ×%Ñ%Ô'Ø×!Ñ!Ô#Ø—‘˜Q–à—‘˜Q—ñ! ð" 	�‰Ôä�U‹|ÐrI   c                óü  • US   nU R                  5       nUR                  5       nUS    Vs/ s H  n[        U5      PM     nn[        [	        S U5      5      n/ nU H2  n	[        U	/5      n
U
R                  US5        UR                  U
5        M4     [        U[        SUS-  5      /[        U5      -  5       VVs/ s H  nU  H  nUPM     M     nnnUS	 [        U5      n[        U/5      /nU$ s  snf s  snnf )Nr]  r   c                ó   • U R                   $ rT   rÇ  rH  s    r5   Ú<lambda>Ú!Parser.substack.<locals>.<lambda>  s   €  a§g¢grI   rã  rp   rè  )r›  r®  r  ru   r[   rË  r�  rµ   Úzipr7  r/  rœ  )rW   r
  r]  r  r¯  rP  r¬  Ú	max_widthr  r  ÚcpÚpairrõ   Ústackr  r˜  s                   r5   r„  ÚParser.substack  s  € Ø�W‘ˆØ—‘Ó ˆØ×9Ñ9Ó;ˆ	à#(¨¢8Ó,¢8˜a”�q–¡8ˆÐ,ÜœÑ-¨uÓ5Ó6ˆ	àˆÛˆCÜ˜C˜5Ó!ˆBØ�H‰H�Y 	Ô*Ø�L‰L˜Öñ ô ! ¬¨a°¸Q±Ó)?Ð(@Ä3ÀuÃ:Ñ(MÔNô"ÚN�TÜ �Só á ñ ÙNð 	ñ "ð �"ˆIÜ�E‹lˆÜ˜˜“,�ˆØˆùò -ùó"s   ­C3Â=C8)r“  rŒ  rŽ  r�  r’  r(  )
ri  rŽ   r—  r’   r_   r:   r£   r:   r„   r  r  )r
  r   r„   zlist[Hlist])r
  r   r„   r   )r
  r   r„   r  )rµ  r:   r„   r…  )ri  rŽ   r	  rx   r
  zParseResults | dict[str, str]r„   r  r  )r„   r  )r^  r  r„   r…   )rR  rŽ   rS  rŽ   r(  r±  rU  r6  r`   r  rQ  r  r„   r  )rJ  rŽ   rK  zlist[Box | Char | str]rL  rŽ   r„   r  )WrB   rC   rD   rE   rF   ÚenumÚEnumr6  r‚  rƒ  rÈ  rÊ  Ú_arrow_symbolsrÇ  rË  r  rî  r
  rl  rw  Ú_ambi_delimsrÉ  Ú_right_delimsro  rä  r.   r­  r   r¬  rä   rU  ÚstringÚascii_lettersrT  rX   r%   r›  rŸ  r¢  r‹  r‰  rˆ  rŠ  Ústaticmethodr   ÚconvertToFloatrh  r‚  r¶  ri  rN  rt  r3   rk  ru  rv  rP  rx  r†  rm  rB  rr  rs  rn  ry  r^   r  r  rP  r_  r+  rO  r}  rz  r{  r|  r<  r€  r�  r~  r  r'  r<  r‡  r„  rH   r  )rô   rI  r­  r¬  rÛ   s   0000@r5   r/  r/    sf  ø† ñô�T—Y‘Yô ñ ð
÷0 ‰%‹'ó3Ðñ6 ð 5÷j  %™u›wók5(Ðñn ð 	÷0 
‰‹ó1€Nð4 (Ð*;Ñ;¸nÑL€OáÐ7×=Ñ=Ó?Ó@Ðáð ÷ ‰5‹7óÐñ
 Ð>×DÑDÓFÓGÐáÐL×RÑRÓTÓUÐáð 3ß38±5³7ó<€Jñ ð ÷ !™5›7ó$€Oñ
 ð /ç/4©u«wó8€Lñ ð 
ç
‰%‹'ó€Lñ ð 
ç
‰%‹'ó€Mð ˜]Ñ*¨\Ñ9€GáÙ™SÐ!?Ó@Ù Ð!?Ó@À1ÑDôFöGòFð JKœ×(Ò(¬¨Q«Ó0×6Ñ6Ó8¸Ñ<×BÑBÖDñFôGó H€Lñ ˜6×/Ñ/Ó0Ðôw2ôr(ô,%ô ô:ô&ôOôô
ñ !Ð!1×!@Ñ!@ÓA€Môô(ð$ ØØØØØØØØØØØñ€Môô
1ð.Ø2ð.Ø7<ô.ô`MðØÐ/ðàÐ-ðð 	Ð0ðð 	Ð3ð	ð
 	Ð3ðð 	Ð-ðð 	Ð0ðð 	Ð1ðð 	Ð6ðð 	Ð5ðð 	Ð7ðð 	Ð1ðð 	Ð3ðð 	Ð3ðð 	Ð-ðð  	Ð0ð!ð" 	Ð/ð#ð$ *Ø(Ø#ò)€Kñ. Ð4×:Ñ:Ó<Ó=€Môô,ô
!!ôFôô,ð $€Nôô=ôôôô
÷
dðL(Øð(Ø"'ð(Ø,1ô(ôT;ô&ôAô
Dô
Aô
ð@ !Ð €Gˆhô&ôPð&$Ø&<ð$à$'ð$à,1ô$ôLô÷4ò ùõQGs   ÅALr/  )r3   rŽ   r„   rx   )r  r  r„   ztype[FontConstantsBase]))r   r   )rV   rƒ   r  ztuple[float, float]r„   rQ   )r  rŽ   r„   r   )r%  rŽ   r+  r   r„   r   )|rF   Ú
__future__r   Úabcrß  ra  rÕ   Úloggingrá   rH  rf  r­  rf  ÚtypingrÞ   r   Únumpyr\   Ú	pyparsingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú
matplotlibr  r(  r   Ú_mathtext_datar   r   r   r   Úfont_managerr   r   r    Úft2fontr!   r"   r#   r$   Úpackaging.versionr%   Úparse_versionr&   Úpyparsing_versionÚmajorr(   r)   ÚTYPE_CHECKINGÚcollections.abcr*   r+   ÚenablePackratÚ	getLoggerrª  r6   r8   rC   rK   rQ   r‡   rŒ   ÚABCr’   ÚABCMetarÐ   r  r‡  r¿  rÂ  rÒ  r%  r—  r1  r0  rï  rþ  r   r  r  r
  r  r  r  rƒ   r7  r=  rC  rZ  rb  r  rœ  r¥  r«  r³  r·  rÃ  r‘  rË  rÒ  r…  rÝ  ræ  ry   r  r  r-  r/  r@   rI   r5   Ú<module>r~     sœ  ðñõ #ã 
Û Û Û Û Û 	Û 	Û Û Û Û Ý ã ÷÷ ÷ ÷ ÷ ñ ó Ý ÷Dó Dç <Ñ <ß :Ó :å 4Ý 6ÙÐ"Ó#×)Ñ)¨AÓ-Þ3å%à‡?‡?Ý(Ýà × Ò Ô Ø×ÒÐ.Ó/€ôô,3�*ô 3ð& /€Ô ô�*ô ð( /€Ô ÷85ñ 85ôv�*ô ô@ˆzô ôi!ˆC�G‰Gô i!ôXfI�E S§[¡[ò fIôRgC�-ô gCôTA!�=ô A!ôH&A�,¨#¯+©+ò &AôR�{ô ô$�kô ô$p�ô pôf�Iô ðB €ð €÷!,ñ !,ôHÐ"3ô ôÐ)ô ôÐ-ô ô	Ð0ô 	ô	Ð/ô 	ð
ØÐ*ðàÐ/ðð Ð,ðð Ð(ð	ð
 Ð)ðð Ð)ðð Ð(ðð Ð)ðð Ð)ðð Ð)ðð Ð$ðð Ð'ðð Ð(ðð Ð(ðð Ð)ðð  Ð'ð!ð" Ð'ð#ð& 3Ø-ò)Ð ô0÷ ñ  ô.ˆ$ô ô*,ˆ3ô ,ô(ˆ3ô (ôD+ˆ4ô D+ôNIˆTô Iô.)/ˆ3ô )/ôXc<ˆDô c<ôLO<ˆDô O<ôdDˆ3ô Dô(7ˆDô 7ô;ˆDô ;ô�
ô ñ ˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨QÓ/ñ	€	Ô ôGˆ4ô Gô8M�ô Mô>�ô >ô(ˆ4ô (ô6%"�Uô %"ôP �Eô  ö:Pôn/÷#0ñ #0ôL6÷2Wò WrI   