§
    ‡ÛgÕÅ  ã                   óH  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlmZ d dlZd dlmZmZmZ d dlmZmZmZmZ d dlmZ d dlmZ d dlm Z  d d	l!m"Z" d d
lm#Z# d dl$m%Z%m&Z&  ej'        e(¦  «        Z) ej*        dd¬¦  «        d„ ¦   «         Z+d„ Z, e
j-        d¦  «        Z. ej*        dd¬¦  «        d„ ¦   «         Z/d„ Z0 ej*        dd¬¦  «        d„ ¦   «         Z1d„ Z2d„ Z3 ej*        dd¬¦  «        d„ ¦   «         Z4d„ Z5 G d„ d¦  «        Z6d„ Z7 ej*        d¦  «        d/d„¦   «         Z8d „ Z9 ej*        d¦  «        d/d!„¦   «         Z:d"d#d$d%œZ;d&„ Z<d'„ Z= G d(„ d)e¦  «        Z> G d*„ d+e¦  «        Z?eZ@d,ZAejB         G d-„ d.e¦  «        ¦   «         ZCdS )0é    N)ÚBytesIO)ÚImage)Ú_apiÚcbookÚfont_manager)Ú_BackendÚFigureCanvasBaseÚFigureManagerBaseÚRendererBase)ÚMixedModeRenderer)Úrgb2hex)ÚUTC)ÚPath)Ú_path)ÚAffine2DÚAffine2DBasez3.6z a vendored copy of _escape_cdata)Úalternativec                 ó    — t          | ¦  «        S ©N)Ú_escape_cdata©Úss    úU/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/backends/backend_svg.pyÚescape_cdatar   E   s   € å˜ÑÔÐó    c                 óŠ   — |                       dd¦  «        } |                       dd¦  «        } |                       dd¦  «        } | S )Nú&ú&amp;ú<ú&lt;ú>ú&gt;©Úreplacer   s    r   r   r   J   s@   € Ø	�	Š	�#�wÑÔ€AØ	�	Š	�#�vÑÔ€AØ	�	Š	�#�vÑÔ€AØ€Hr   z-(?=-)z"a vendored copy of _escape_commentc                 ó6   — t                                | ¦  «        S r   )Ú_escape_commentÚsubr   s    r   Úescape_commentr(   T   s   € å×Ò˜qÑ!Ô!Ð!r   c                 óV   — t          | ¦  «        } t                               d| ¦  «        S )Nz- )r   Ú_escape_xml_commentr'   r   s    r   r&   r&   Y   s%   € Ý�aÑÔ€AÝ×"Ò" 4¨Ñ+Ô+Ð+r   z!a vendored copy of _escape_attribc                 ó    — t          | ¦  «        S r   )Ú_escape_attribr   s    r   Úescape_attribr-   ^   s   € å˜!ÑÔÐr   c                 óâ   — |                       dd¦  «        } |                       dd¦  «        } |                       dd¦  «        } |                       dd¦  «        } |                       d	d
¦  «        } | S )Nr   r   ú'z&apos;ú"z&quot;r   r    r!   r"   r#   r   s    r   r,   r,   c   sf   € Ø	�	Š	�#�wÑÔ€AØ	�	Š	�#�xÑ Ô €AØ	�	Š	�#�xÑ Ô €AØ	�	Š	�#�vÑÔ€AØ	�	Š	�#�vÑÔ€AØ€Hr   c                 ó�   — d| vrdt          | ¦  «        z   dz   n-d| vrdt          | ¦  «        z   dz   ndt          | ¦  «        z   dz   S )Nr0   r/   )r   r,   r   s    r   Ú_quote_escape_attribr2   l   s\   € Ø,/°q¨L¨LˆC•- Ñ"Ô"Ñ" SÑ(Ð(Ø,/°q¨L¨LˆC•- Ñ"Ô"Ñ" SÑ(Ð(Ø•. Ñ#Ô#Ñ# cÑ)ð+r   z#a vendored copy of _short_float_fmtc                 ó    — t          | ¦  «        S r   ©Ú_short_float_fmt©Úxs    r   Úshort_float_fmtr8   r   s   € å˜AÑÔÐr   c                 óx   — d                      | ¦  «                             d¦  «                             d¦  «        S )zˆ
    Create a short string representation of a float, which is %f
    formatting with trailing zeros and the decimal point removed.
    z{0:f}Ú0ú.)ÚformatÚrstripr6   s    r   r5   r5   w   s2   € ð
 �>Š>˜!ÑÔ×#Ò# CÑ(Ô(×/Ò/°Ñ4Ô4Ð4r   c                   óV   — e Zd ZdZd„ Zdd„Zi fd„Zd„ Zd„ Zdd	„Z	d
„ Z
di fd„Zd„ ZdS )Ú	XMLWriterzM
    Parameters
    ----------
    file : writable text file-like object
    c                 óŽ   — |j         | _        t          |d¦  «        r|j        | _        d| _        g | _        g | _        d| _        d S )NÚflushr   z@                                                                )ÚwriteÚ_XMLWriter__writeÚhasattrrA   Ú_XMLWriter__openÚ_XMLWriter__tagsÚ_XMLWriter__dataÚ_XMLWriter__indentation)ÚselfÚfiles     r   Ú__init__zXMLWriter.__init__†   sI   € Ø”zˆŒÝ�4˜Ñ!Ô!ð 	$ØœˆDŒJØˆŒØˆŒØˆŒØ%ˆÔÐÐr   Tc                 ó  — | j         r4|r|                      d¦  «         n|                      d¦  «         d| _         | j        rEd                     | j        ¦  «        }|                      t	          |¦  «        ¦  «         g | _        d S d S )Nz>
r!   r   Ú )rE   rC   rG   Újoinr   )rI   ÚindentÚdatas      r   Ú__flushzXMLWriter.__flush�   sŽ   € àŒ;ð 	Øð "Ø—’˜UÑ#Ô#Ð#Ð#à—’˜SÑ!Ô!Ð!ØˆDŒKØŒ;ð 	Ø—7’7˜4œ;Ñ'Ô'ˆDØ�LŠL� tÑ,Ô,Ñ-Ô-Ð-ØˆDŒKˆKˆKð	ð 	r   c                 ó  — |                       ¦   «          t          |¦  «        }g | _        | j                             |¦  «         |                      | j        dt          | j        ¦  «        dz
  …         ¦  «         |                      d|z  ¦  «         i |¥|¥                     ¦   «         D ]@\  }}|r9t          |¦  «        }t          |¦  «        }|                      d|›d|›�¦  «         ŒAd| _
        t          | j        ¦  «        dz
  S )a&  
        Open a new element.  Attributes can be given as keyword
        arguments, or as a string/string dictionary. The method returns
        an opaque identifier that can be passed to the :meth:`close`
        method, to close all open elements up to and including this one.

        Parameters
        ----------
        tag
            Element tag.
        attrib
            Attribute dictionary.  Alternatively, attributes can be given as
            keyword arguments.

        Returns
        -------
        An element identifier.
        Né   z<%sú ú=)Ú_XMLWriter__flushr   rG   rF   ÚappendrC   rH   ÚlenÚitemsr2   rE   )rI   ÚtagÚattribÚextraÚkÚvs         r   ÚstartzXMLWriter.startœ   s  € ð& 	�Š‰ŒˆÝ˜CÑ Ô ˆØˆŒØŒ×Ò˜3ÑÔÐØ�Š�TÔ'Ð(=­¨T¬[Ñ)9Ô)9¸AÑ)=Ð(=Ô>Ñ?Ô?Ð?Ø�Š�U˜S‘[Ñ!Ô!Ð!Ø'�vÐ' Ð'×-Ò-Ñ/Ô/ð 	0ð 	0‰DˆAˆqØð 0Ý! !Ñ$Ô$�Ý(¨Ñ+Ô+�Ø—’�¨¨¨¨A¨AÐ.Ñ/Ô/Ð/øØˆŒÝ�4”;ÑÔ !Ñ#Ð#r   c                 óà   — |                       ¦   «          |                      | j        dt          | j        ¦  «        …         ¦  «         |                      dt          |¦  «        z  ¦  «         dS )zŒ
        Add a comment to the output stream.

        Parameters
        ----------
        comment : str
            Comment text.
        Nz<!-- %s -->
)rV   rC   rH   rX   rF   r&   )rI   Úcomments     r   ra   zXMLWriter.comment½   s`   € ð 	�Š‰ŒˆØ�Š�TÔ'Ð(9­¨T¬[Ñ)9Ô)9Ð(9Ô:Ñ;Ô;Ð;Ø�Š�_¥°wÑ'?Ô'?Ñ?Ñ@Ô@Ð@Ð@Ð@r   c                 ó:   — | j                              |¦  «         dS )z�
        Add character data to the output stream.

        Parameters
        ----------
        text : str
            Character data.
        N)rG   rW   )rI   Útexts     r   rP   zXMLWriter.dataÊ   s    € ð 	Œ×Ò˜4Ñ Ô Ð Ð Ð r   Nc                 ó  — |rN| j         sJ d|z  ¦   «         ‚t          |¦  «        | j         d         k    sJ d| j         d         ›d|›�¦   «         ‚n| j         s
J d¦   «         ‚| j                              ¦   «         }| j        r|                      |¦  «         n%| j        rd| _        |                      d¦  «         dS |r4|                      | j        dt          | j         ¦  «        …         ¦  «         |                      d	|z  ¦  «         dS )
a  
        Close the current element (opened by the most recent call to
        :meth:`start`).

        Parameters
        ----------
        tag
            Element tag.  If given, the tag must match the start tag.  If
            omitted, the current element is closed.
        zunbalanced end(%s)éÿÿÿÿzexpected end(z), got zunbalanced end()r   z/>
Nz</%s>
)	rF   r   ÚpoprG   rV   rE   rC   rH   rX   )rI   rZ   rO   s      r   ÚendzXMLWriter.endÕ   s)  € ð ð 	3Ø”;Ð:Ð:Ð 4°sÑ :Ñ:Ô:Ð:Ý  Ñ%Ô%¨¬°R¬Ò8Ð8Ð8Ð8Ø.2¬k¸"¬o¨o¨o¸s¸sÐCñ 9Ô8Ð8Ð8ð ”;Ð2Ð2Ð 2Ñ2Ô2Ð2ØŒk�oŠoÑÔˆØŒ;ð 	Ø�LŠL˜Ñ Ô Ð Ð ØŒ[ð 	ØˆDŒKØ�LŠL˜Ñ Ô Ð ØˆFØð 	@Ø�LŠL˜Ô+Ð,=­S°´Ñ-=Ô-=Ð,=Ô>Ñ?Ô?Ð?Ø�Š�Y ‘_Ñ%Ô%Ð%Ð%Ð%r   c                 ó’   — t          | j        ¦  «        |k    r.|                      ¦   «          t          | j        ¦  «        |k    °,dS dS )zï
        Close open elements, up to (and including) the element identified
        by the given identifier.

        Parameters
        ----------
        id
            Element identifier, as returned by the :meth:`start` method.
        N)rX   rF   rg   )rI   Úids     r   ÚclosezXMLWriter.closeñ   sI   € õ �$”+ÑÔ Ò#Ð#Ø�HŠH‰JŒJˆJõ �$”+ÑÔ Ò#Ð#Ð#Ð#Ð#Ð#r   c                 ó~   —  | j         ||fi |¤Ž |r|                      |¦  «         |                      d¬¦  «         dS )z³
        Add an entire element.  This is the same as calling :meth:`start`,
        :meth:`data`, and :meth:`end` in sequence. The *text* argument can be
        omitted.
        F)rO   N)r_   rP   rg   )rI   rZ   rc   r[   r\   s        r   ÚelementzXMLWriter.elementþ   sQ   € ð 	ˆŒ
�3˜Ð(Ð( %Ð(Ð(Ð(Øð 	Ø�IŠI�d‰OŒOˆOØ�Š˜ˆÑÔÐÐÐr   c                 ó   — dS )zFlush the output stream.N© ©rI   s    r   rA   zXMLWriter.flush	  s   € àˆr   )T©NT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rK   rV   r_   ra   rP   rg   rj   rl   rA   rn   r   r   r?   r?      sÉ   € € € € € ðð ð&ð &ð &ðð ð ð ð !#ð $ð $ð $ð $ðBAð Að Að	!ð 	!ð 	!ð&ð &ð &ð &ð8ð ð ð !%¨Rð 	ð 	ð 	ð 	ðð ð ð ð r   r?   c           	      ód  — g }| D ]—\  }}|dk    r|dk    s|dk    s|dk    r|dk    s|dk    r|dk    rŒ0|dk    r)t          |t          ¦  «        r|                     ¦   «         }|                     |›d	d
                     d„ |D ¦   «         ¦  «        ›d�¦  «         Œ˜d
                     |¦  «        S )NÚscale)rS   )rS   rS   Ú	translate)r   r   Úrotate)r   Úmatrixú(rT   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r4   )Ú.0r7   s     r   ú	<genexpr>z&_generate_transform.<locals>.<genexpr>  s+   è è € Ð>Ð>°1Õ+¨AÑ.Ô.Ð>Ð>Ð>Ð>Ð>Ð>r   ú))Ú
isinstancer   Ú	to_valuesrW   rN   )Útransform_listÚpartsÚtypeÚvalues       r   Ú_generate_transformr…     sæ   € Ø€EØ%ð Að A‰ˆˆeØ�GŠOˆO ¨$¢ °%¸6²/°/Ø˜;Ò&Ð&¨5°Fª?¨?Ø˜8Ò#Ð#¨°ª¨ØØ�8ÒÐ¥
¨5µ,Ñ ?Ô ?ÐØ—O’OÑ%Ô%ˆEØ�ŠØˆDˆD�#—(’(Ð>Ð>¸Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>ð@ñ 	Aô 	Að 	Að 	Aà�8Š8�E‰?Œ?Ðr   c                 ó$   — t          | pg ¦  «        S r   )r…   )r�   s    r   Úgenerate_transformr‡     s   € å˜~Ð3°Ñ4Ô4Ð4r   c                 ód   — d                      d„ |                      ¦   «         D ¦   «         ¦  «        S )Nz; c              3   ó*   K  — | ]\  }}|› d |› �V — ŒdS )z: Nrn   ©r|   r]   r^   s      r   r}   z _generate_css.<locals>.<genexpr>"  s0   è è € Ð<Ð<¡T Q¨˜�[�[˜Q�[�[Ð<Ð<Ð<Ð<Ð<Ð<r   )rN   rY   ©r[   s    r   Ú_generate_cssrŒ   !  s+   € Ø�9Š9Ð<Ð<¨V¯\ª\©^¬^Ð<Ñ<Ô<Ñ<Ô<Ð<r   c                 ó$   — t          | pi ¦  «        S r   )rŒ   r‹   s    r   Úgenerate_cssrŽ   %  s   € å˜˜ 2Ñ&Ô&Ð&r   ÚsquareÚbuttÚround)Ú
projectingr�   r‘   c                 óv   — t          | t          ¦  «        s#t          d|› dt          | ¦  «        › d�¦  «        ‚d S )NúInvalid type for z metadata. Expected str, not r;   )r   ÚstrÚ	TypeErrorrƒ   )ÚinfoÚkeys     r   Ú_check_is_strr™   -  sY   € Ý�d�CÑ Ô ð *Ýð )¨Cð )ð )Ý ™:œ:ð)ð )ð )ñ *ô *ð 	*ð*ð *r   c           	      óî   — t          j        | ¦  «        r?| D ]:}t          |t          ¦  «        s#t	          d|› dt          |¦  «        › d�¦  «        ‚Œ;d S t	          d|› dt          | ¦  «        › d�¦  «        ‚)Nr”   z) metadata. Expected iterable of str, not r;   z0 metadata. Expected str or iterable of str, not )ÚnpÚiterabler   r•   r–   rƒ   )Úinfosr˜   r—   s      r   Ú_check_is_iterable_of_strrž   3  sÏ   € Ý	„{�5ÑÔð @Øð 	Gð 	GˆDÝ˜d¥CÑ(Ô(ð GÝð !F°Cð !Fð !FÝ8<¸T¹
¼
ð!Fð !Fð !Fñ Gô Gð GðGð	Gð 	Gõ
 ð ?¨Cð ?ð ?Ý04°U±´ð?ð ?ð ?ñ @ô @ð 	@r   c                   ó   ‡ — e Zd Zd&ddœˆ fd„Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd'd„Zd„ Zd„ Z	 	 d(d„Zd'd„Z	 d'd„Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd'd„Zd„ Zd„ Zd'd„Zd'd „Zd)d"„Z d#„ Z!d$„ Z"d%„ Z#ˆ xZ$S )*ÚRendererSVGNéH   )Úmetadatac          
      óÞ  •— || _         || _        t          |¦  «        | _        || _        |€(t          |dd¦  «        }t          |t          ¦  «        sd}|| _        i | _	        t          j        ¦   «         | _        i | _        i | _        d| _        i | _        d| _        d| _        t'          ¦   «                              ¦   «          t+          ¦   «         | _        t/          |¦  «        }t/          |¦  «        }|                     t2          ¦  «         | j                             dd|z  d|z  d|›d|›�d	d
ddi¬¦  «        | _        |                      |¦  «         |                      ¦   «          d S )NÚnamerM   r   FÚsvgz%sptz0 0 rT   zhttp://www.w3.org/2000/svgz1.1zxmlns:xlinkzhttp://www.w3.org/1999/xlink)ÚwidthÚheightÚviewBoxÚxmlnsÚversionr[   )r¦   r§   r?   ÚwriterÚ	image_dpiÚgetattrr   r•   ÚbasenameÚ_groupdÚ	itertoolsÚcountÚ_image_counterÚ_clipdÚ_markersÚ_path_collection_idÚ_hatchdÚ_has_gouraudÚ_n_gradientsÚsuperrK   ÚdictÚ
_glyph_mapr5   rB   Ú	svgPrologr_   Ú	_start_idÚ_write_metadataÚ_write_default_style)
rI   r¦   r§   Ú	svgwriterr®   r¬   r¢   Ú
str_heightÚ	str_widthÚ	__class__s
            €r   rK   zRendererSVG.__init__?  sn  ø€ àˆŒ
ØˆŒÝ 	Ñ*Ô*ˆŒØ"ˆŒàÐÝ˜y¨&°"Ñ5Ô5ˆHÝ˜h­Ñ,Ô,ð Ø�Ø ˆŒàˆŒÝ'œoÑ/Ô/ˆÔØˆŒØˆŒØ#$ˆÔ ØˆŒØ!ˆÔØˆÔå‰Œ×ÒÑÔÐÝ™&œ&ˆŒÝ% fÑ-Ô-ˆ
Ý$ UÑ+Ô+ˆ	Ø�Š�	Ñ"Ô"Ð"Øœ×*Ò*ØØ˜9Ñ$Ø˜JÑ&Ð&Ø#, 9 9¨j¨jÐ9Ø.ØØ!Ð#AÐBð +ñ Dô DˆŒð 	×Ò˜XÑ&Ô&Ð&Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#r   c                 óÆ   — |                       ¦   «          |                      ¦   «          | j                             | j        ¦  «         | j                             ¦   «          d S r   )Ú_write_clipsÚ_write_hatchesr«   rj   r½   rA   ro   s    r   ÚfinalizezRendererSVG.finalizee  sX   € Ø×ÒÑÔÐØ×ÒÑÔÐØŒ×Ò˜$œ.Ñ)Ô)Ð)ØŒ×ÒÑÔÐÐÐr   c                 óÒ	  ‡— |€i }dddt           j        › d�dœ|¥}| j        Šd|v r/|d         }t          |d¦  «         ‰                     d|¬¦  «         |                     d	d ¦  «        }|��Ct          |t          ¦  «        r|g}�nt          |t          j        t          j	        f¦  «        r| 
                    ¦   «         g}nÔt          j        |¦  «        r g }|D ]š}t          |t          ¦  «        r|                     |¦  «         Œ-t          |t          j        t          j	        f¦  «        r(|                     | 
                    ¦   «         ¦  «         Œ{t          d
t          |¦  «        › d�¦  «        ‚n t          dt          |¦  «        › d�¦  «        ‚d                     |¦  «        |d	<   nªd	|vr¦t#          j        d¦  «        }|r]t          j                             t)          |¦  «        ¦  «        }|                     t,          ¬¦  «         
                    ¦   «         |d	<   n3t          j                             ¦   «          
                    ¦   «         |d	<   d }ˆfd„}|                     dd ¦  «        }|�$ ||¦  «        }‰                     dd|i¬¦  «         dD ]a}	|                     |	d ¦  «        }
|
�G ||¦  «        }t          |
|	¦  «         ‰                     d|	                     ¦   «         › �|
¬¦  «         ŒbdD ]è}	|                     |	d ¦  «        }|€Œt          |t          ¦  «        r|g}t5          ||	¦  «          ||¦  «        }‰                     d|	                     ¦   «         › �¦  «         |D ]C}‰                     d¦  «         ‰                     d|¬¦  «         ‰                     d¦  «         ŒD‰                     d|	                     ¦   «         › �¦  «         Œé|                     dd ¦  «        }|�£t          |t          ¦  «        r|g}t5          |d¦  «          ||¦  «        }‰                     d¦  «         ‰                     d¦  «         |D ]}‰                     d|¬¦  «         Œ‰                     d¦  «         ‰                     d¦  «         |�‰                     |¦  «         |r%t=          dd                     |¦  «        z   ¦  «        ‚d S ) Nzimage/svg+xmlz&http://purl.org/dc/dcmitype/StillImagezMatplotlib vz, https://matplotlib.org/)ÚFormatÚTypeÚCreatorÚTitleÚtitle)rc   ÚDatezQInvalid type for Date metadata. Expected iterable of str, date, or datetime, not r;   z[Invalid type for Date metadata. Expected str, date, datetime, or iterable of the same, not ú/ÚSOURCE_DATE_EPOCH)Útzinfoc                 óš   •— | �| S ‰                      d¦  «        } ‰                      dddddœ¬¦  «         ‰                      d¦  «         | S )	Nr¢   zrdf:RDFz http://purl.org/dc/elements/1.1/zhttp://creativecommons.org/ns#z+http://www.w3.org/1999/02/22-rdf-syntax-ns#)zxmlns:dczxmlns:ccz	xmlns:rdfr‹   zcc:Work)r_   )Úmidr«   s    €r   Úensure_metadataz4RendererSVG._write_metadata.<locals>.ensure_metadata£  sd   ø€ ØˆØ�
Ø—,’,˜zÑ*Ô*ˆCØ�LŠL˜Ø>Ø<ØJð,ð ,ˆLñ ô ð ð
 �LŠL˜Ñ#Ô#Ð#ØˆJr   rÊ   zdc:typezrdf:resourcer‹   )	rÌ   ÚCoveragerÎ   ÚDescriptionrÉ   Ú
IdentifierÚLanguageÚRelationÚSourcezdc:)rË   ÚContributorÚ	PublisherÚRightszcc:Agentzdc:titleÚKeywordsz
dc:subjectzrdf:Bagzrdf:liz.Unknown metadata key(s) passed to SVG writer: ú,)ÚmplÚ__version__r«   r™   rl   Úgetr   r•   ÚdatetimeÚdateÚ	isoformatr›   rœ   rW   r–   rƒ   rN   ÚosÚgetenvÚutcfromtimestampÚintr$   r   Útodayrf   Úlowerrž   r_   rg   rj   Ú
ValueError)rI   r¢   rÍ   rä   ÚdatesÚdrÓ   rÔ   Úurir˜   r—   ÚagentsÚagentÚkeywordsÚkeywordr«   s                  @r   r¾   zRendererSVG._write_metadatak  sa  ø€ ð ÐØˆHà%Ø<àI�sœÐIÐIÐIð	
ð 
ð
 ð
ˆð ”ˆà�hÐÐØ˜WÔ%ˆEÝ˜% Ñ)Ô)Ð)Ø�NŠN˜7¨ˆNÑ/Ô/Ð/ð �|Š|˜F DÑ)Ô)ˆØÑÝ˜$¥Ñ$Ô$ð CØ˜�‘Ý˜D¥8Ô#4µh´mÐ"DÑEÔEð CØŸšÑ)Ô)Ð*��Ý”˜TÑ"Ô"ð CØ�Øð 	/ð 	/�AÝ! !¥SÑ)Ô)ð /ØŸš Q™œ˜˜Ý# A­Ô(9½8¼=Ð'IÑJÔJð /ØŸš Q§[¢[¡]¤]Ñ3Ô3Ð3Ð3å'ð.å#'¨¡7¤7ð.ð .ð .ñ/ô /ð /ð	/õ  ð !Bå48¸±J´Jð!Bð !Bð !Bñ Cô Cð Cð  #Ÿxšx¨™œˆH�VÑÐØ˜8Ð#Ð#õ ”9Ð0Ñ1Ô1ˆDØð IÝÔ(×9Ò9½#¸d¹)¼)ÑDÔD�Ø#'§<¢<µs <Ñ#;Ô#;×#EÒ#EÑ#GÔ#G�˜Ñ Ð å#+Ô#4×#:Ò#:Ñ#<Ô#<×#FÒ#FÑ#HÔ#H�˜Ñ àˆð
	ð 
	ð 
	ð 
	ð 
	ð �lŠl˜6 4Ñ(Ô(ˆØˆ?Ø!�/ #Ñ&Ô&ˆCØ�NŠN˜9¨n¸cÐ-BˆNÑCÔCÐCðDð 	?ð 	?ˆCà—<’<  TÑ*Ô*ˆDØÐØ%�o cÑ*Ô*�Ý˜d CÑ(Ô(Ð(Ø—’Ð2 S§Y¢Y¡[¤[Ð2Ð2¸�Ñ>Ô>Ð>øð Eð 	,ð 	,ˆCØ—\’\ # tÑ,Ô,ˆFØˆ~Øå˜&¥#Ñ&Ô&ð "Ø ˜�å% f¨cÑ2Ô2Ð2à!�/ #Ñ&Ô&ˆCØ�LŠLÐ,˜sŸyšy™{œ{Ð,Ð,Ñ-Ô-Ð-Øð 'ð '�Ø—’˜ZÑ(Ô(Ð(Ø—’˜z°�Ñ6Ô6Ð6Ø—
’
˜:Ñ&Ô&Ð&Ð&Ø�JŠJÐ*˜SŸYšY™[œ[Ð*Ð*Ñ+Ô+Ð+Ð+ð —<’< 
¨DÑ1Ô1ˆØÐÝ˜(¥CÑ(Ô(ð &Ø$˜:�Ý% h°
Ñ;Ô;Ð;à!�/ #Ñ&Ô&ˆCØ�LŠL˜Ñ&Ô&Ð&Ø�LŠL˜Ñ#Ô#Ð#Ø#ð 7ð 7�Ø—’˜x¨g�Ñ6Ô6Ð6Ð6Ø�JŠJ�yÑ!Ô!Ð!Ø�JŠJ�|Ñ$Ô$Ð$àˆ?Ø�LŠL˜ÑÔÐàð 	1ÝÐMØ ŸXšX hÑ/Ô/ñ0ñ 1ô 1ð 1ð	1ð 	1r   c                 óÂ   — | j         }t          dddœ¦  «        }|                     d¦  «         |                     ddd|z  ¬¦  «         |                     d¦  «         d S )	Nr‘   r�   )ústroke-linejoinústroke-linecapÚdefsÚstyleztext/cssz*{%s})rƒ   rc   )r«   rŒ   r_   rl   rg   )rI   r«   Údefault_styles      r   r¿   z RendererSVG._write_default_styleæ  sq   € Ø”ˆÝ%Ø&Ø$ð'&ð '&ñ 'ô 'ˆð 	�Š�VÑÔÐØ�Š�w Z°gÀÑ6MˆÑNÔNÐNØ�
Š
�6ÑÔÐÐÐr   c                 óŠ  — t           j        d         }|€ t          t          j        ¦   «         ¦  «        }t          j        ¦   «         }|                     |                     d¦  «        ¦  «         |                     t          |¦  «                             d¦  «        ¦  «         |›| 	                    ¦   «         d d…         ›�S )Nzsvg.hashsaltÚutf8é
   )
rà   ÚrcParamsr•   ÚuuidÚuuid4ÚhashlibÚsha256ÚupdateÚencodeÚ	hexdigest)rI   rƒ   ÚcontentÚsaltÚms        r   Ú_make_idzRendererSVG._make_idï  s˜   € ÝŒ|˜NÔ+ˆØˆ<Ý•t”z‘|”|Ñ$Ô$ˆDÝŒNÑÔˆØ	�Š�—’˜VÑ$Ô$Ñ%Ô%Ð%Ø	�Š•�W‘”×$Ò$ VÑ,Ô,Ñ-Ô-Ð-Ø˜˜qŸ{š{™}œ}¨S¨b¨SÔ1Ð1Ð2Ð2r   c                 ó~   — |t          ¦   «                              dd¦  «                             d| j        ¦  «        z   S )NrS   re   r   )r   rv   rw   r§   )rI   Ú	transforms     r   Ú_make_flip_transformz RendererSVG._make_flip_transformø  s3   € Ø�8™:œ:×+Ò+¨A¨rÑ2Ô2×<Ò<¸QÀÄÑLÔLÑLÐLr   c                 óR  — |�t          |¦  «        }|                     ¦   «         }|�t          |¦  «        }|                     ¦   «         ||f}| j                             |¦  «        }|€8|                      d|¦  «        }|                     ¦   «         ||f|f| j        |<   n|\  }}|S )z,
        Create a new hatch pattern
        NÚh)ÚtupleÚget_hatch_colorÚ	get_hatchr¶   râ   r  Úget_hatch_path)rI   ÚgcÚrgbFaceÚedgeÚdictkeyÚoidÚ_s          r   Ú
_get_hatchzRendererSVG._get_hatchû  s­   € ð ÐÝ˜G‘n”nˆGØ×!Ò!Ñ#Ô#ˆØÐÝ˜‘;”;ˆDØ—<’<‘>”> 7¨DÐ1ˆØŒl×Ò˜wÑ'Ô'ˆØˆ;Ø—-’-  WÑ-Ô-ˆCØ&(×&7Ò&7Ñ&9Ô&9¸7ÀDÐ%IÈ3Ð$OˆDŒL˜Ñ!Ð!à‰FˆAˆsØˆ
r   c                 óä  — t          | j        ¦  «        sd S d}| j        }|                     d¦  «         | j                             ¦   «         D �]‹\  \  }}}}|                     d|dddt          |¦  «        t          |¦  «        ¬¦  «         |                      |t          ¦   «                              |¦  «                             dd¦  «         	                    d	|¦  «        d
¬¦  «        }|€d}nt          |¦  «        }|                     dddt          |dz   ¦  «        t          |dz   ¦  «        |¬¦  «         t          |¦  «        t          |¦  «        t          t          j        d         ¦  «        dddœ}	|d         dk     rt          |d         ¦  «        |	d<   |                     d|t          |	¦  «        ¬¦  «         |                     d¦  «         �Œ�|                     d¦  «         d S )Nr¡   r÷   ÚpatternÚuserSpaceOnUser:   )ri   ÚpatternUnitsr7   Úyr¦   r§   ç      ð?ç      ð¿r   F©ÚsimplifyÚnoneÚrectrS   )r7   r  r¦   r§   Úfillzhatch.linewidthr�   Úmiter)r$  Ústrokeústroke-widthrö   rõ   é   ústroke-opacityÚpath)rî   rø   )rX   r¶   r«   r_   Úvaluesr•   Ú_convert_pathr   rv   rw   r   rl   rà   rý   rŒ   rg   )
rI   Ú
HATCH_SIZEr«   r*  Úfacer&  r  Ú	path_datar$  Úhatch_styles
             r   rÆ   zRendererSVG._write_hatches  s   € Ý�4”<Ñ Ô ð 	ØˆFØˆ
Ø”ˆØ�Š�VÑÔÐØ)-¬×)<Ò)<Ñ)>Ô)>ð #	"ñ #	"Ñ%Ñ ˆT�4˜ #Ø�LŠLØØØ-Ø˜¥C¨
¡O¤OÝ˜:‘”ð ñ (ô (ð (ð ×*Ò*ØÝ‘
”
ß’�zÑ"Ô"§5¢5¨¨dÑ#3Ô#3·I²I¸aÀÑ4LÔ4LØð	 +ñ  ô  ˆIð
 ˆ|Ø��å˜t‘}”}�Ø�NŠNØØ˜¥C¨
°1©Ñ$5Ô$5Ý˜: a™<Ñ(Ô(Øð	 ñ ô ð õ $ F™OœOÝ% f™oœoÝ$'­¬Ð5FÔ(GÑ$HÔ$HØ&,Ø'.ðð ˆKð �aŒy˜1Š}ˆ}Ý03°F¸1´I±´�Ð,Ñ-Ø�NŠNØØÝ# KÑ0Ô0ð ñ ô ð ð
 �JŠJ�yÑ!Ô!Ð!Ñ!Ø�
Š
�6ÑÔÐÐÐr   c                 óÜ  — i }|                      ¦   «         }|                     ¦   «         �Xd|                      ||¦  «        z  |d<   |�9t          |¦  «        dk    r&|d         dk    r|st	          |d         ¦  «        |d<   nn|€d|d<   nft          |dd…         ¦  «        d	k    rt          |¦  «        |d<   t          |¦  «        dk    r&|d         dk    r|st	          |d         ¦  «        |d<   |r<|                     ¦   «         dk    r$t	          |                     ¦   «         ¦  «        |d
<   |                     ¦   «         \  }}|�Ad 	                    d„ |D ¦   «         ¦  «        |d<   t	          t          |¦  «        ¦  «        |d<   |                     ¦   «         }|rÍ|                     ¦   «         }t          |¦  «        |d<   |s$|d         dk    rt	          |d         ¦  «        |d<   |dk    rt	          |¦  «        |d<   |                     ¦   «         dk    r|                     ¦   «         |d<   |                     ¦   «         dk    r"t          |                     ¦   «                  |d<   |S )z=Generate a style string from the GraphicsContext and rgbFace.Nzurl(#%s)r$  é   r(  r  úfill-opacityr"  )r   r   r   Úopacityrß   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   r4   )r|   Úvals     r   r}   z.RendererSVG._get_style_dict.<locals>.<genexpr>S  s<   è è € ð 26ð 26Ø*-Õ  Ñ%Ô%ð26ð 26ð 26ð 26ð 26ð 26r   zstroke-dasharrayzstroke-dashoffsetr&  r)  r'  r‘   rõ   r�   rö   )Úget_forced_alphar  r  rX   r5   r  r   Ú	get_alphaÚ
get_dashesrN   ÚfloatÚget_linewidthÚget_rgbÚget_joinstyleÚget_capstyleÚ_capstyle_d)	rI   r  r  r[   Úforced_alphaÚoffsetÚseqÚ	linewidthÚrgbs	            r   Ú_get_style_dictzRendererSVG._get_style_dict9  sz  € àˆà×*Ò*Ñ,Ô,ˆà�<Š<‰>Œ>Ð%Ø'¨$¯/ª/¸"¸gÑ*FÔ*FÑFˆF�6‰NØÐ#­¨G©¬¸Ò(9Ð(9¸gÀa¼jÈCÒ>OÐ>OØ(ð ?På)9¸'À!¼*Ñ)EÔ)E��~Ñ&øàˆØ!'��v‘�å˜  ! œÑ%Ô%¨Ò2Ð2Ý%,¨WÑ%5Ô%5�F˜6‘NÝ˜‘L”L AÒ%Ð%¨'°!¬*¸Ò*;Ð*;Ø ,ð +<å-=¸gÀa¼jÑ-IÔ-I�F˜>Ñ*àð 	A˜BŸLšL™NœN¨cÒ1Ð1Ý 0°·²±´Ñ @Ô @ˆF�9Ñà—m’m‘o”o‰ˆ�Øˆ?Ø),¯ªð 26ð 26Ø14ð26ñ 26ô 26ñ *6ô *6ˆFÐ%Ñ&å*:½5À¹=¼=Ñ*IÔ*IˆFÐ&Ñ'à×$Ò$Ñ&Ô&ˆ	Øð 
	JØ—*’*‘,”,ˆCÝ& s™|œ|ˆF�8ÑØð D C¨¤F¨c¢M MÝ+;¸CÀ¼FÑ+CÔ+C�Ð'Ñ(Ø˜CÒÐÝ)9¸)Ñ)DÔ)D��~Ñ&Ø×ÒÑ!Ô! WÒ,Ð,Ø,.×,<Ò,<Ñ,>Ô,>�Ð(Ñ)Ø�ŠÑ Ô  FÒ*Ð*Ý+6°r·²Ñ7HÔ7HÔ+I�Ð'Ñ(àˆr   c                 óH   — t          |                      ||¦  «        ¦  «        S r   )rŒ   rE  )rI   r  r  s      r   Ú
_get_stylezRendererSVG._get_stylef  s    € Ý˜T×1Ò1°"°gÑ>Ô>Ñ?Ô?Ð?r   c                 óÆ  — |                      ¦   «         }|                     ¦   «         \  }}|�4|                      |¦  «        }t          |¦  «        t	          |¦  «        f}n$|� |j        \  }}}}	| j        ||	z   z
  }||||	f}ni S | j                             |¦  «        }
|
€4|  	                    d|¦  «        }|�||f|f| j        |<   n||f| j        |<   n|
\  }
}dd|› d�iS )NÚpz	clip-pathzurl(#r~   )
Úget_clip_rectangleÚget_clip_pathr  ri   r•   Úboundsr§   r³   râ   r  )rI   r  ÚcliprectÚclippathÚclippath_transr  r7   r  Úwr  Úclipr  s               r   Ú_get_clip_attrszRendererSVG._get_clip_attrsi  s  € Ø×(Ò(Ñ*Ô*ˆØ#%×#3Ò#3Ñ#5Ô#5Ñ ˆ�.ØÐØ!×6Ò6°~ÑFÔFˆNÝ˜(‘|”|¥S¨Ñ%8Ô%8Ð9ˆGˆGØÐ!Ø!œ‰JˆAˆq�!�QØ”˜Q˜q™SÑ!ˆAØ˜!˜Q �lˆGˆGàˆIØŒ{�Š˜wÑ'Ô'ˆØˆ<Ø—-’-  WÑ-Ô-ˆCØÐ#Ø)1°>Ð(BÀCÐ'H�”˜GÑ$Ð$à(/° ~�”˜GÑ$Ð$à‰IˆD�#Ø˜^ S˜^˜^˜^Ð,Ð,r   c           
      ód  — t          | j        ¦  «        sd S | j        }|                     d¦  «         | j                             ¦   «         D ]Î\  }}|                     d|¬¦  «         t          |¦  «        dk    r5|\  }}|                      ||d¬¦  «        }|                     d|¬¦  «         nU|\  }}}	}
|                     d	t          |¦  «        t          |¦  «        t          |	¦  «        t          |
¦  «        ¬
¦  «         |                     d¦  «         ŒÏ|                     d¦  «         d S )Nr÷   ÚclipPath©ri   é   Fr   r*  ©rî   r#  ©r7   r  r¦   r§   )	rX   r³   r«   r_   r+  r,  rl   r5   rg   )rI   r«   rQ  r  rN  rO  r/  r7   r  rP  r  s              r   rÅ   zRendererSVG._write_clips€  sB  € Ý�4”;ÑÔð 	ØˆFØ”ˆØ�Š�VÑÔÐØœ×+Ò+Ñ-Ô-ð 	#ð 	#‰IˆD�#Ø�LŠL˜¨ˆLÑ,Ô,Ð,Ý�4‰yŒy˜AŠ~ˆ~Ø+/Ñ(�˜.Ø ×.Ò.Ø˜n°uð /ñ >ô >�	à—’˜v¨�Ñ3Ô3Ð3Ð3à!‘
��1�a˜Ø—’ØÝ& qÑ)Ô)Ý& qÑ)Ô)Ý*¨1Ñ-Ô-Ý+¨AÑ.Ô.ð ñ 0ô 0ð 0ð �JŠJ�zÑ"Ô"Ð"Ð"Ø�
Š
�6ÑÔÐÐÐr   c                 óê   — |r| j                              d|¬¦  «         d S | j                             |d¦  «        dz   | j        |<   | j                              dd|| j        |         fz  ¬¦  «         d S )NÚgrU  r   rS   z%s_%d)r«   r_   r¯   râ   )rI   r   Úgids      r   Ú
open_groupzRendererSVG.open_group—  s   € àð 	FØŒK×Ò˜c cÐÑ*Ô*Ð*Ð*Ð*à"œl×.Ò.¨q°!Ñ4Ô4°qÑ8ˆDŒL˜‰OØŒK×Ò˜c g°°D´LÀ´OÐ0DÑ&DÐÑEÔEÐEÐEÐEr   c                 ó:   — | j                              d¦  «         d S )NrZ  )r«   rg   )rI   r   s     r   Úclose_groupzRendererSVG.close_groupŸ  s   € àŒ�Š˜ÑÔÐÐÐr   c                 ó(   — t           j        d          S )Nzimage.composite_image)rà   rý   ro   s    r   Úoption_image_nocompositez$RendererSVG.option_image_nocomposite£  s   € å”<Ð 7Ô8Ð8Ð8r   c           
      óŒ   — |rdd| j         | j        f}nd }t          j        |||||dg d¢d¦  «                             d¦  «        S )Nç        é   )ó   Mó   Ló   Qó   Có   zFÚascii)r¦   r§   r   Úconvert_to_stringÚdecode)rI   r*  r
  rQ  r!  Úsketchs         r   r,  zRendererSVG._convert_path§  s\   € àð 	Ø˜˜dœj¨$¬+Ð6ˆDˆDàˆDÝÔ&Ø�)˜T 8¨V°QØ*Ð*Ð*¨Eñ3ô 3ç39²6¸'±?´?ð	Cr   c           	      ó2  — |                       |¦  «        }|d u o|                     ¦   «         d u }|j        o|}|                      |||||                     ¦   «         ¬¦  «        }|                     ¦   «         �/| j                             dd|                     ¦   «         i¦  «          | j        j        dd|i|  	                    |¦  «        ¤d|  
                    ||¦  «        i¤Ž |                     ¦   «         �| j                             d¦  «         d S d S )N)rQ  r!  rl  Úaú
xlink:hrefr*  rî   rø   )r*  )r  r  Úshould_simplifyr,  Úget_sketch_paramsÚget_urlr«   r_   rl   rR  rG  rg   )	rI   r  r*  r
  r  Útrans_and_fliprQ  r!  r/  s	            r   Ú	draw_pathzRendererSVG.draw_path±  s;  € à×2Ò2°9Ñ=Ô=ˆØ˜4�Ð? B×$5Ò$5Ñ$7Ô$7¸4Ð$?ˆØÔ'Ð0¨DˆØ×&Ò&Ø�. t°hØ×'Ò'Ñ)Ô)ð 'ñ +ô +ˆ	ð �:Š:‰<Œ<Ð#ØŒK×Ò˜c L°"·*²*±,´,Ð#?Ñ@Ô@Ð@ØˆŒÔð 	@ð 	@ ið 	@°4×3GÒ3GÈÑ3KÔ3Kð 	@ð 	@Ø"&§/¢/°"°gÑ">Ô">ð	@ð 	@ð 	@ð 	@à�:Š:‰<Œ<Ð#ØŒK�OŠO˜CÑ Ô Ð Ð Ð ð $Ð#r   c                 óB  — t          |j        ¦  «        sd S | j        }|                      ||t	          ¦   «                              dd¦  «        z   d¬¦  «        }|                      ||¦  «        }	|t          |	¦  «        f}
| j         	                    |
¦  «        }t          d„ |	 
                    ¦   «         D ¦   «         ¦  «        }	|€c|                      d|
¦  «        }|                     d¦  «         |                     d|||	¬	¦  «         |                     d¦  «         || j        |
<    |j        di |                      |¦  «        ¤Ž |                      |¦  «        }dd|z  i}dd| j        dz  | j        dz  f}|                     ||d¬¦  «        D ]u\  }}t          |¦  «        ra|dd …         \  }}t)          |¦  «        |d<   t)          |¦  «        |d<   |                      ||¦  «        |d<   |                     d|¬¦  «         Œv|                     d
¦  «         d S )Nr  r  Fr   c                 óD   — i | ]\  }}|                      d ¦  «        ¯||“ŒS )r&  )Ú
startswithrŠ   s      r   ú
<dictcomp>z,RendererSVG.draw_markers.<locals>.<dictcomp>Ð  s>   € ð 9ð 9ð 9©¨¨1Ø!"§¢¨hÑ!7Ô!7ð9˜q !ð 9ð 9ð 9r   r  r÷   r*  )ri   rî   rø   rZ  ro  ú#%sr   r¡   )rQ  r!  éþÿÿÿr7   r  rø   Úuser‹   ©rZ  )rX   Úverticesr«   r,  r   rv   rE  rŒ   r´   râ   rY   r  r_   rl   rg   rR  r  r¦   r§   Úiter_segmentsr5   rG  )rI   r  Úmarker_pathÚmarker_transr*  Útransr  r«   r/  rø   r  r  rs  r[   rQ  r}  Úcoder7   r  s                      r   Údraw_markerszRendererSVG.draw_markersÁ  sD  € õ �4”=Ñ!Ô!ð 	ØˆFà”ˆØ×&Ò&ØØ�8™:œ:×+Ò+¨C°Ñ6Ô6Ñ6Øð 'ñ ô ˆ	ð ×$Ò$ R¨Ñ1Ô1ˆØ�m¨EÑ2Ô2Ð3ˆØŒm×Ò Ñ(Ô(ˆÝð 9ð 9°·²±´ð 9ñ 9ô 9ñ :ô :ˆð ˆ;Ø—-’-  WÑ-Ô-ˆCØ�LŠL˜Ñ Ô Ð Ø�NŠN˜6 c¨Y¸eˆNÑDÔDÐDØ�JŠJ�vÑÔÐØ%(ˆDŒM˜'Ñ"àˆŒÐ5Ð5˜D×0Ò0°Ñ4Ô4Ð5Ð5Ð5Ø×2Ò2°5Ñ9Ô9ˆØ ¨¡Ð,ˆØ�1�d”j ‘m T¤[°¡^Ð4ˆØ"×0Ò0Ø T°Eð 1ñ ;ô ;ð 	5ð 	5‰NˆH�då�8‰}Œ}ð 5Ø   ”}‘��1Ý.¨qÑ1Ô1��s‘Ý.¨qÑ1Ô1��s‘Ø"&§/¢/°"°gÑ">Ô">��w‘Ø—’˜u¨V�Ñ4Ô4Ð4øØ�
Š
�3‰Œˆˆˆr   c                 ó6  •— t          |¦  «        dk    rt          |d         j        ¦  «        nd}|                      |||||¦  «        }|d|z  z   dz   |dz   |z  k     }|s-t          ¦   «                              |||||||||	|
|||¦  «        S | j        }g }|                     d¦  «         t          |                      |||¦  «        ¦  «        D ]£\  }\  }}t          | 
                    ¦   «         ¦  «                             dd¦  «        }|                      ||d¬	¦  «        }d
| j        ||                      d|¦  «        fz  }|                     d||¬¦  «         |                     |¦  «         Œ¤|                     d¦  «         |                      |||||||	|
|||¦  «        D ]à\  }}}}}|                     ¦   «         }|�|                     dd|i¬¦  «         |                      |¦  «        }|r |j        di |¤Ž d|z  t+          |¦  «        t+          | j        |z
  ¦  «        |                      ||¦  «        dœ}|                     d|¬¦  «         |r|                     d¦  «         |�|                     d¦  «         Œá| xj        dz  c_        d S )Nr   é	   r(  é   r÷   r  r  Fr   z	C%x_%x_%srM   r*  )ri   rî   rn  ro  r‹   rZ  ry  )ro  r7   r  rø   r{  rS   r|  )rX   r}  Ú_iter_collection_uses_per_pathr¹   Údraw_path_collectionr«   r_   Ú	enumerateÚ_iter_collection_raw_pathsr   Ú
get_matrixrv   r,  rµ   r  rl   rW   rg   Ú_iter_collectionrr  rR  r5   r§   rG  )!rI   r  Úmaster_transformÚpathsÚall_transformsÚoffsetsÚoffset_transÚ
facecolorsÚ
edgecolorsÚ
linewidthsÚ
linestylesÚantialiasedsÚurlsÚoffset_positionÚlen_pathÚuses_per_pathÚshould_do_optimizationr«   Ú
path_codesÚir*  r
  rî   r  ÚxoÚyoÚpath_idÚgc0r  ÚurlÚ
clip_attrsr[   rÃ   s!                                   €r   rˆ  z RendererSVG.draw_path_collectionè  s  ø€ õ .1°©Z¬Z¸!ª^¨^•3�u˜Q”xÔ(Ñ)Ô)Ð)ÀˆØ×;Ò;Ø�> 7¨J¸
ñDô Dˆð �q˜=Ñ(Ñ(¨1Ñ,°¸1±ÀÑ/MÒMð 	à%ð 	!Ý‘7”7×/Ò/ØÐ$ e¨^Ø˜ z°:Ø˜J¨°dØñ	!ô !ð !ð ”ˆØˆ
Ø�Š�VÑÔÐÝ$-¨d×.MÒ.MØ  %¨ñ/9ô /9ñ %:ô %:ð 	#ð 	#Ñ ˆAÑ ��iå  ×!5Ò!5Ñ!7Ô!7Ñ8Ô8×>Ò>¸sÀDÑIÔIˆIØ×"Ò" 4¨¸UÐ"ÑCÔCˆAØØÔ(¨!¨T¯]ª]¸2¸qÑ-AÔ-Að!Cñ CˆCà�NŠN˜6 c¨QˆNÑ/Ô/Ð/Ø×Ò˜cÑ"Ô"Ð"Ð"Ø�
Š
�6ÑÔÐà-1×-BÒ-BØ�J ¨Ø˜J¨
°JØ˜d Oñ.5ô .5ð 	 ð 	 Ñ)ˆB��G˜S 'ð —+’+‘-”-ˆCØˆØ—’˜S¨,¸Ð)<�Ñ=Ô=Ð=Ø×-Ò-¨cÑ2Ô2ˆJØð 0Ø�”Ð/Ð/ JÐ/Ð/Ð/à# g™oÝ% bÑ)Ô)Ý% d¤k°BÑ&6Ñ7Ô7ØŸš¨¨gÑ6Ô6ð	ð ˆFð �NŠN˜5¨ˆNÑ0Ô0Ð0Øð  Ø—
’
˜3‘”�ØˆØ—
’
˜3‘”�øàÐ Ô  AÑ%Ð Ô Ð Ð r   c                 ó6   — |                       ||||¦  «         d S r   )Ú_draw_gouraud_triangle)rI   r  ÚpointsÚcolorsr�  s        r   Údraw_gouraud_trianglez!RendererSVG.draw_gouraud_triangle"  s"   € à×#Ò# B¨°¸Ñ>Ô>Ð>Ð>Ð>r   c                 óØ  — | j         }| j        s–d| _        |                     dd¬¦  «         |                     dddidd	d
d
¬¦  «         |                     d¦  «         |                     dd¬¦  «         |                     dddid¬¦  «         |                     d¦  «         t          j        |d¬¦  «        }|d         dk    rd S |                      |¦  «        }|                     |¦  «        }|                     d¦  «         t          d¦  «        D �]o}	||	         \  }
}||	dz   dz           \  }}||	dz   dz           \  }}||	         }||k    r|}|}n@||k    r|
}|}n5||z
  ||z
  z  }|||z  z
  }d|z   }|||
z  z
  }| |z   ||z
  z  }||z  |z   }|                     dd| j
        |	fz  dt          |
¦  «        t          |¦  «        t          |¦  «        t          |¦  «        ¬¦  «         |                     dd
t          t          |¦  «        t          |d         ¦  «        dœ¦  «        ¬ ¦  «         |                     dd!t          t          |¦  «        d!dœ¦  «        ¬ ¦  «         |                     d¦  «         �Œq|                     d¦  «         d"t          |
¦  «        z   d#z   t          |¦  «        z   }|d$t          |¦  «        z   d#z   t          |¦  «        z   z  }|d%t          |¦  «        z   d#z   t          |¦  «        z   d&z   z  }|                     d'|t          |¦  «        d
d(d)œ¬*¦  «         |                     d+d,d!d(d-d.œ¬*¦  «         |                     d'|d/| j
        z  d(d0œ¬*¦  «         |                     d'|d1| j
        z  d2d(d3œ¬*¦  «         |                     d'|d4| j
        z  d2d(d3œ¬*¦  «         |                     d+¦  «         | xj
        dz  c_
        d S )5NTÚfilterÚcolorAddrU  ÚfeCompositeÚinÚSourceGraphicÚBackgroundImageÚ
arithmeticÚ1)r[   Úin2ÚoperatorÚk2Úk3ÚcolorMatÚfeColorMatrixrƒ   ry   z61 0 0 0 0 
0 1 0 0 0 
0 0 1 0 0 
1 1 1 1 0 
0 0 0 0 1 )r[   r+  r   )Úaxisre   r÷   r(  rS   rV  r  ÚlinearGradientzGR%x_%dr  )ri   ÚgradientUnitsÚx1Úy1Úx2Úy2Ústop)z
stop-colorzstop-opacity)rA  rø   r:   zM rß   z L rT   z Zr*  Ú
crispEdges)rî   r$  r3  úshape-renderingr‹   rZ  r"  zurl(#colorMat))r&  r'  rÁ  rª  zurl(#GR%x_0))rî   r$  rÁ  zurl(#GR%x_1)zurl(#colorAdd))rî   r$  rª  rÁ  zurl(#GR%x_2))r«   r·   r_   rl   rg   r›   Úaverager  r
  Úranger¸   r5   rŒ   r   )rI   r  r¦  r§  r�  r«   Ú	avg_colorrs  Útpointsr�  r»  r¼  r½  r¾  Úx3Úy3Ú
rgba_colorÚxbÚybÚm1Úb1Úm2Úb2Údpaths                           r   r¥  z"RendererSVG._draw_gouraud_triangle&  s$  € ð ”ˆØÔ ð 	!Ø $ˆDÔØ�LŠLØØð ñ ô ð ð �NŠNØØ˜oÐ.Ø%Ø%Ø˜3ð ñ  ô  ð  ð �JŠJ�xÑ Ô Ð à�LŠLØØð ñ ô ð ð �NŠNØØ Ð)ð3ð ñ 4ô 4ð 4ð
 �JŠJ�xÑ Ô Ð å”J˜v¨AÐ.Ñ.Ô.ˆ	Ø�RŒ=˜AÒÐàˆFà×2Ò2°5Ñ9Ô9ˆØ ×*Ò*¨6Ñ2Ô2ˆà�Š�VÑÔÐÝ�q‘”ð &	)ñ &	)ˆAØ˜Q”Z‰FˆB�Ø˜a !™e q™[Ô)‰FˆB�Ø˜a !™e q™[Ô)‰FˆB�Ø œˆJà�RŠxˆxØ�Ø��Ø�r’�Ø�Ø��à˜2‘g " r¡'Ñ*�Ø˜2 ™7‘^�Ø˜R‘x�[�Ø˜2 ™7‘^�Ø�c˜B‘h 2¨¡7Ñ+�Ø˜"‘W˜r‘\�à�LŠLØ Ø Ô 1°1Ð5Ñ5Ø.Ý# BÑ'Ô'Õ,<¸RÑ,@Ô,@Ý# BÑ'Ô'Õ,<¸RÑ,@Ô,@ð ñ Bô Bð Bð �NŠNØØÝ#Ý")¨)Ñ"4Ô"4Ý$4°ZÀ´^Ñ$DÔ$Dð%Fð %Fñ Gô Gð ñ Hô Hð Hð �NŠNØØÝ#µ7¸:Ñ3FÔ3FØ47ð%9ð %9ñ :ô :ð ñ ;ô ;ð ;ð �JŠJÐ'Ñ(Ô(Ð(Ñ(à�
Š
�6ÑÔÐð Õ'¨Ñ+Ô+Ñ+¨CÑ/Õ2BÀ2Ñ2FÔ2FÑFˆØ�Õ)¨"Ñ-Ô-Ñ-°Ñ3Õ6FÀrÑ6JÔ6JÑJÑJˆØ�Õ'¨Ñ+Ô+Ñ+¨cÑ1Õ4DÀRÑ4HÔ4HÑHÈ4ÑOÑOˆà�ŠØØÝ# IÑ.Ô.Ø$'Ø'3ð5ð 5ð 	ñ 	6ô 	6ð 	6ð 	�ŠØØ"(Ø(+Ø+7Ø"2ð4ð 4ð 	ñ 	5ô 	5ð 	5ð 	�ŠØØØ*¨TÔ->Ñ>Ø'3ð5ð 5ð 	ñ 	6ô 	6ð 	6ð 	�ŠØØØ*¨TÔ->Ñ>Ø.Ø'3ð5ð 5ð 	ñ 	6ô 	6ð 	6ð 	�ŠØØØ*¨TÔ->Ñ>Ø.Ø'3ð5ð 5ð 	ñ 	6ô 	6ð 	6ð 	�
Š
�3‰ŒˆàÐÔ˜QÑÐÔÐÐr   c                 ó  —  | j         j        di |                      |¦  «        ¤Ž |                     ¦   «         }t	          ||¦  «        D ]\  }}|                      ||||¦  «         Œ| j                              d¦  «         d S )NrZ  r|  )r«   r_   rR  ÚfrozenÚzipr¥  rg   )rI   r  Útriangles_arrayÚcolors_arrayr
  ÚtriÚcols          r   Údraw_gouraud_trianglesz"RendererSVG.draw_gouraud_triangles¨  s’   € àˆŒÔÐ:Ð: ×!5Ò!5°bÑ!9Ô!9Ð:Ð:Ð:Ø×$Ò$Ñ&Ô&ˆ	Ý˜O¨\Ñ:Ô:ð 	Að 	A‰HˆC�Ø×'Ò'¨¨C°°iÑ@Ô@Ð@Ð@ØŒ�Š˜ÑÔÐÐÐr   c                 ó   — dS rp   rn   ro   s    r   Úoption_scale_imagezRendererSVG.option_scale_image°  ó   € àˆtr   c                 ó   — | j         dz  S )Nç      R@)r¬   ro   s    r   Úget_image_magnificationz#RendererSVG.get_image_magnification´  s   € ØŒ~ Ñ$Ð$r   c           
      ó–  — |j         d d…         \  }}|dk    s|dk    rd S |                      |¦  «        }|r | j        j        di |¤Ž |                     ¦   «         }	|	�| j                             dd|	i¬¦  «         i }
|                     ¦   «         }t          j        d         r¡t          ¦   «         }t          j
        |¦  «                             |d¬	¦  «         |p'|                      d
|                     ¦   «         ¦  «        }dt          j        |                     ¦   «         ¦  «                             d¦  «        z   |
d<   n¥| j        €t%          d¦  «        ‚d                     | j        t)          | j        ¦  «        ¦  «        }t,                               d|¦  «         t          j
        |¦  «                             |¦  «         |pd|                      d
|¦  «        z   }||
d<   ||
d<   |€‘d|z  | j        z  }d|z  | j        z  }| j                             d
t5          ddd| ffg¦  «        t7          |¦  «        t7          | j        |z
  |z
   ¦  «        t7          |¦  «        t7          |¦  «        |
¬¦  «         �n|                     ¦   «         }|dk    rt7          |¦  «        |
d<   t=          ¦   «                              d|z  d|z  ¦  «        |z   t=          ¦   «                               ||¦  «                             dd¦  «                              d| j        ¦  «        z   }t5          d| !                    ¦   «         fg¦  «        |
d<   d|
d<   | j                             d
t7          |¦  «        t7          |¦  «        |
¬¦  «         |	�| j         "                    d¦  «         |r| j         "                    d¦  «         d S d S ) NrV  r   rZ  rn  ro  r‹   zsvg.image_inlineÚpng)r<   Úimagezdata:image/png;base64,
ri  zLCannot save image data to filesystem when writing SVG to an in-memory bufferz{}.image{}.pngz$Writing image file for inclusion: %sÚIm_ri   rÜ  )rv   )rS   re   rw   )r
  r7   r  r¦   r§   r[   r  r4  r  rb  ry   r
  z5image-rendering:crisp-edges;image-rendering:pixelatedrø   )r¦   r§   r[   r|  )#ÚshaperR  r«   r_   rr  Úget_gidrà   rý   r   r   Ú	fromarrayÚsaver  ÚgetvalueÚbase64Ú	b64encoderk  r®   rì   r<   Únextr²   Ú_logr—   r¬   rl   r…   r5   r§   r8  r   rv   rw   rÑ  rg   )rI   r  r7   r  Úimr
  r  rP  r£  r¢  r[   r  ÚbufÚfilenameÚalphaÚflippeds                   r   Ú
draw_imagezRendererSVG.draw_image·  së  € ð Œx˜˜˜Œ|‰ˆˆ1à�Š6ˆ6�Q˜!’V�VØˆFà×)Ò)¨"Ñ-Ô-ˆ
Øð 	1ð ˆDŒKÔÐ0Ð0 ZÐ0Ð0Ð0à�jŠj‰lŒlˆØˆ?ØŒK×Ò˜c¨<¸Ð*=ÐÑ>Ô>Ð>àˆØ�jŠj‰lŒlˆÝŒ<Ð*Ô+ð 	,Ý‘)”)ˆCÝŒO˜BÑÔ×$Ò$ S°Ð$Ñ7Ô7Ð7ØÐ?˜Ÿš w°·²±´Ñ?Ô?ˆCà*ÝÔ  §¢¡¤Ñ0Ô0×7Ò7¸Ñ@Ô@ñAð �<Ñ Ð ð Œ}Ð$Ý ð "Fñ Gô Gð Gà'×.Ò.Ø”�t DÔ$7Ñ8Ô8ñ:ô :ˆHå�IŠIÐ<¸hÑGÔGÐGÝŒO˜BÑÔ×$Ò$ XÑ.Ô.Ð.ØÐA˜ §¢¨w¸Ñ!AÔ!AÑAˆCØ#+ˆF�<Ñ Øˆˆt‰àÐØ�q‘˜4œ>Ñ)ˆAØ�q‘˜4œ>Ñ)ˆAàŒK×ÒØÝ-Ø&¨°q¸1¸"°gÐ(>ð/@ñ Aô Aå" 1Ñ%Ô%Ý" T¤[°1¡_°qÑ%8Ð#9Ñ:Ô:Ý& qÑ)Ô)Õ2BÀ1Ñ2EÔ2EØð  ñ ô ð ñ ð —L’L‘N”NˆEØ˜Š|ˆ|Ý$4°UÑ$;Ô$;��yÑ!õ ‘
”
× Ò   q¡¨#°©'Ñ2Ô2Øñå‘
”
ß’˜1˜a‘”ß’�s˜DÑ!Ô!ß’˜3 ¤Ñ,Ô,ñ-ð õ #6Ø˜GŸNšNÑ,Ô,Ð-Ð.ñ#0ô #0ˆF�;Ñð,ð �7‰Oð ŒK×ÒØÝ& qÑ)Ô)Õ2BÀ1Ñ2EÔ2EØð  ñ ô ð ð
 ˆ?ØŒK�OŠO˜CÑ Ô Ð Øð 	!ØŒK�OŠO˜CÑ Ô Ð Ð Ð ð	!ð 	!r   c           	      ó¦  — | j         }|rÇ|                     d¦  «         |                     ¦   «         D ]l\  }\  }}|                      |¦  «        }|                      t          |dz  |¦  «        d¬¦  «        }|                     d||t          dg¦  «        ¬¦  «         Œm|                     d¦  «         | j	         
                    |¦  «         dS dS )	zn
        Emit definitions for not-yet-defined glyphs, and record them as having
        been defined.
        r÷   é@   Fr   r*  )rv   )g      �?)ri   rî   r
  N)r«   r_   rY   Ú_adjust_char_idr,  r   rl   r…   rg   r»   r  )rI   Úglyph_map_newr«   Úchar_idr}  Úcodesr/  s          r   Ú_update_glyph_map_defsz"RendererSVG._update_glyph_map_defs  s  € ð
 ”ˆØð 	2Ø�LŠL˜Ñ Ô Ð Ø.;×.AÒ.AÑ.CÔ.Cð Kð KÑ*�Ñ*˜( EØ×.Ò.¨wÑ7Ô7�à ×.Ò.Ý˜ B™¨Ñ.Ô.¸ð /ñ @ô @�	à—’Ø˜w¨)Ý1Ð3GÐ2HÑIÔIð ñ Kô Kð Kð Kð �JŠJ�vÑÔÐØŒO×"Ò" =Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2r   c                 ó.   — |                      dd¦  «        S )Nz%20r  r#   )rI   rõ  s     r   ró  zRendererSVG._adjust_char_id  s   € Ø�Š˜u cÑ*Ô*Ð*r   c	           	      ó|  — | j         }	|	                     |¦  «         | j        }
| j        }t	          |                     ¦   «         ¦  «        }|                     ¦   «         }i }|dk    r||d<   |                     ¦   «         r|                     ¦   «         n|                     ¦   «         d         }|dk    rt          |¦  «        |d<   ||j
        z  }t          |¦  «        t          d||ffd| ffd|| ffg¦  «        d	œ}|	                     d
|¬¦  «         |s¢|                     |¦  «        }|                     |||
d¬¦  «        }|\  }}}|                      |¦  «         |D ]U\  }}}}dd|z  i}|dk    rt          |¦  «        |d<   |dk    rt          |¦  «        |d<   |	                     d|¬¦  «         ŒVnì|dk    r|                     |||
d¬¦  «        }n|                     |||
d¬¦  «        }|\  }}}|                      |¦  «         |D ]O\  }}}}|                      |¦  «        }|	                     dt          d||ffd|ffg¦  «        dd|z  i¬¦  «         ŒP|D ]C\  }}t+          ||¦  «        }|                      |d¬¦  «        }|	                     d|¬¦  «         ŒD|	                     d
¦  «         d S )Nú#000000r$  r(  rS   r4  rw   rx   rv   ©rø   r
  rZ  r‹   T)Ú	glyph_mapÚreturn_new_glyphs_onlyro  ry  rb  r7   r  r{  ÚTeX)r
  r[   Fr   r*  rW  )r«   ra   r»   Ú
_text2pathr   r<  Úget_size_in_pointsr7  r8  r5   Ú
FONT_SCALErŒ   r…   r_   Ú	_get_fontÚget_glyphs_with_fontr÷  rl   Úget_glyphs_texÚget_glyphs_mathtextró  r   r,  rg   ) rI   r  r7   r  r   ÚpropÚangleÚismathÚmtextr«   rü  Ú	text2pathÚcolorÚfontsizerø   rî  Ú
font_scaler[   ÚfontÚ_glyphsÚ
glyph_inforô  ÚrectsÚglyph_idÚ	xpositionÚ	ypositionrv   rõ  Úvertsrö  r*  r/  s                                    r   Ú_draw_text_as_pathzRendererSVG._draw_text_as_path  si  € à”ˆà�Š�qÑÔÐà”Oˆ	à”Oˆ	Ý˜Ÿ
š
™œÑ%Ô%ˆØ×*Ò*Ñ,Ô,ˆàˆØ�IÒÐØ!ˆE�&‰MØ"$×"5Ò"5Ñ"7Ô"7ÐL�—’‘”�¸R¿ZºZ¹\¼\È!¼_ˆØ�AŠ:ˆ:Ý/°Ñ6Ô6ˆE�)ÑØ 	Ô 4Ñ4ˆ
å" 5Ñ)Ô)Ý,Ø˜q !˜fÐ%Ø˜U˜F˜9Ð%Ø˜:¨
 {Ð3Ð4ð.6ñ 7ô 7ð
ð 
ˆð 	�Š�S ˆÑ(Ô(Ð(àð &	4Ø×&Ò& tÑ,Ô,ˆDØ×4Ò4Ø�a 9ÀTð 5ñ Kô KˆGà/6Ñ,ˆJ˜ uØ×'Ò'¨Ñ6Ô6Ð6à9Cð 5ð 5Ñ5�˜) Y°Ø&¨°Ñ(8Ð9�Ø Ò#Ð#Ý"2°9Ñ"=Ô"=�F˜3‘KØ Ò#Ð#Ý"2°9Ñ"=Ô"=�F˜3‘KØ—’˜u¨V�Ñ4Ô4Ð4Ð4ð5ð ˜ŠˆØ#×2Ò2Ø˜! yÈð 3ñ Oô O��ð $×7Ò7Ø˜! yÈð 8ñ Oô O�à/6Ñ,ˆJ˜ uØ×'Ò'¨Ñ6Ô6Ð6à8Bð <ð <Ñ4�˜ I¨uØ×.Ò.¨wÑ7Ô7�Ø—’ØÝ1Ø$ y°)Ð&<Ð=Ø  5 (Ð+ð3ñ ô ð )¨%°'©/Ð:ð ñ <ô <ð <ð <ð !&ð 4ð 4‘��uÝ˜E 5Ñ)Ô)�Ø ×.Ò.¨t¸eÐ.ÑDÔD�	Ø—’˜v¨�Ñ3Ô3Ð3Ð3à�
Š
�3‰Œˆˆˆr   c	           
      óÒ  ‡&‡'— | j         }	t          |                     ¦   «         ¦  «        }
i }|
dk    r|
|d<   |                     ¦   «         r|                     ¦   «         n|                     ¦   «         d         }|dk    rt          |¦  «        |d<   |�s/i }g }|                     ¦   «         dk    r'|                     |                     ¦   «         ¦  «         |                     ¦   «         dk    r'|                     |                     ¦   «         ¦  «         t          j
        |                     ¦   «                  }|dk    r|                     |› ¦  «         d„ Š'ˆ'fd	„Š&ˆ&fd
„}|                     t          |                     ¦   «         ¦  «        › d�d                     t                                ||¦  «        ¦  «        ¦  «        g¦  «         d                     |¦  «        |d<   |                     ¦   «         dk    r|                     ¦   «         |d<   t%          |¦  «        |d<   |�ra|dk    s|                     ¦   «         dk    �rB|                     ¦   «         }|                     |                     ¦   «         ¦  «        \  }}| j        |z
  }t1          j        |¦  «        }t1          j        t1          j        |¦  «        t1          j        |¦  «        g¦  «        }t1          j        |||z
  ||z
  g¦  «        }|||d         z  z   }|||d         z  z   }ddddœ}||                     ¦   «                  |d<   t          |¦  «        |d<   t          |¦  «        |d<   t%          |¦  «        |d<   t?          d| ||ffg¦  «        |d<   nt?          d||ffd| ffg¦  «        |d<   |	                      d||¬¦  «         d S |	 !                    |¦  «         | j"        j#         $                    |d|¦  «        \  }}}}}|	 %                    d t%          |¦  «        t?          d||ffd| ffg¦  «        ¬!¦  «         |	 %                    d¦  «         i }|D �],\  }}} }!}"t          j&        |¦  «        }#g }|#j'        dk    r|                     |#j'        ¦  «         |#j(        dk    r|                     |#j(        ¦  «         |#j)        dk    r|                     |#j)        › ¦  «         |                     t          |¦  «        › d�|#j*        ›g¦  «         dd                     |¦  «        i}|#j+        dk    r
|#j+        |d<   t%          |¦  «        }| d"k    rd#} | ,                    |g ¦  «                             |!|" | f¦  «         �Œ.| -                    ¦   «         D ]É\  }}$|$ .                    ¦   «          t_          d$„ |$D ¦   «         ¦  «        dk    rta          |$d         d         ¦  «        }%nd                     d%„ |$D ¦   «         ¦  «        }%|d                     d&„ |$D ¦   «         ¦  «        |%d'œ}|	                      d(d)                     d*„ |$D ¦   «         ¦  «        |¬¦  «         ŒÊ|	 1                    d¦  «         |D ]Y\  }}}}|	                      d+t          |¦  «        t          | dz
  ¦  «        t          |¦  «        t          |¦  «        ¬,¦  «         ŒZ|	 1                    d ¦  «         d S )-Nrú  r$  r(  rS   r4  Únormali�  c                 ó   — | dv rdn| S )N)Úsansz
sans serifz
sans-serifrn   )r¤   s    r   Ú_normalize_sansz7RendererSVG._draw_text_as_text.<locals>._normalize_sansz  s   € Ø'+Ð/EÐ'EÐ'E�|�|È4ÐOr   c              3   ó¤   •K  —  ‰| ¦  «        } | t           j        v r/t           j                             | ¦  «        D ]} ‰|¦  «        V — Œ| V — d S r   )ÚfmÚfont_family_aliasesÚFontManagerÚ_expand_aliases)Úfnr¤   r  s     €r   Ú_expand_family_entryz<RendererSVG._draw_text_as_text.<locals>._expand_family_entry}  sm   øè è € Ø$�_ RÑ(Ô(�à�Ô/Ð/Ð/õ !#¤× >Ò >¸rÑ BÔ Bð 4ð 4˜Ø-˜o¨dÑ3Ô3Ð3Ð3Ð3Ð3ð �����r   c                 óD   •— ˆfd„|                       ¦   «         D ¦   «         S )Nc                 ój   •— g | ]/} ‰|¦  «        D ]!}|t           j        v r|nt          |¦  «        ‘Œ"Œ0S rn   )r  r  Úrepr)r|   Úentryr¤   r"  s      €r   ú
<listcomp>zQRendererSVG._draw_text_as_text.<locals>._get_all_quoted_names.<locals>.<listcomp>‹  si   ø€ ð Að Að AØ!Ø$8Ð$8¸Ñ$?Ô$?ðAð Aà ð !%­Ô(>Ð >Ð >˜˜ÅDÈÁJÄJð Að Að Að Ar   )Ú
get_family)r  r"  s    €r   Ú_get_all_quoted_namesz=RendererSVG._draw_text_as_text.<locals>._get_all_quoted_names‰  s@   ø€ ðAð Að Að AØ%)§_¢_Ñ%6Ô%6ðAñ Aô Að Ar   Úpxz, rT   r  zfont-stretchrø   r   Úanchorr_   rg   Úmiddle)ÚleftÚrightÚcenterztext-anchorr7   r  rx   r
  rw   rc   r‹   r¡   rZ  rû  é    é    c                 ó   — h | ]\  }}}|’Œ	S rn   rn   )r|   r7   r  Úts       r   ú	<setcomp>z1RendererSVG._draw_text_as_text.<locals>.<setcomp>ç  s   € Ð/Ð/Ð/™g˜a  A˜Ð/Ð/Ð/r   c              3   ó@   K  — | ]}t          |d          ¦  «        V — ŒdS )rS   N)r•   ©r|   Úcs     r   r}   z1RendererSVG._draw_text_as_text.<locals>.<genexpr>ê  s,   è è € Ð!;Ð!;°¥# a¨¤d¡)¤)Ð!;Ð!;Ð!;Ð!;Ð!;Ð!;r   c              3   ó@   K  — | ]}t          |d          ¦  «        V — ŒdS )r   Nr4   r6  s     r   r}   z1RendererSVG._draw_text_as_text.<locals>.<genexpr>î  s/   è è € Ð!HÐ!H¸QÕ"2°1°Q´4Ñ"8Ô"8Ð!HÐ!HÐ!HÐ!HÐ!HÐ!Hr   )rø   r7   r  ÚtspanrM   c              3   ó@   K  — | ]}t          |d          ¦  «        V — ŒdS )rV  N)Úchrr6  s     r   r}   z1RendererSVG._draw_text_as_text.<locals>.<genexpr>ô  s,   è è € Ð5Ð5¨!�C  !¤™IœIÐ5Ð5Ð5Ð5Ð5Ð5r   r#  rX  )2r«   r   r<  r7  r8  r5   Ú	get_stylerW   Úget_variantr  Úweight_dictÚ
get_weightÚextendÚget_sizerN   rº   ÚfromkeysÚget_stretchrŒ   Úget_rotation_modeÚget_transformr
  Úget_unitless_positionr§   r›   Údeg2radÚarrayÚsinÚcosÚdotÚget_har…   rl   ra   rÿ  Úmathtext_parserÚparser_   ÚttfFontPropertyrø   ÚvariantÚweightr¤   ÚstretchÚ
setdefaultrY   ÚsortrX   r•   rg   )(rI   r  r7   r  r   r  r  r  r	  r«   r  rø   rî  r[   Ú
font_partsrQ  r)  r
  ÚaxÚayÚ	angle_radÚdir_vertÚv_offsetÚha_mpl_to_svgr¦   r§   ÚdescentÚglyphsr  Úspansr  r  ÚthetextÚnew_xÚnew_yr&  ÚcharsÚysr"  r  s(                                         @@r   Ú_draw_text_as_textzRendererSVG._draw_text_as_textb  s†  øø€ Ø”ˆå˜Ÿ
š
™œÑ%Ô%ˆØˆØ�IÒÐØ!ˆE�&‰Mà"$×"5Ò"5Ñ"7Ô"7ÐL�—’‘”�¸R¿ZºZ¹\¼\È!¼_ˆØ�AŠ:ˆ:Ý/°Ñ6Ô6ˆE�)Ñàñ T	ØˆFàˆJØ�~Š~ÑÔ 8Ò+Ð+Ø×!Ò! $§.¢.Ñ"2Ô"2Ñ3Ô3Ð3Ø×ÒÑ!Ô! XÒ-Ð-Ø×!Ò! $×"2Ò"2Ñ"4Ô"4Ñ5Ô5Ð5Ý”^ D§O¢OÑ$5Ô$5Ô6ˆFØ˜Š}ˆ}Ø×!Ò! V +Ñ.Ô.Ð.ðPð Pð Pð
ð 
ð 
ð 
ð 
ðAð Að Að Að Að ×ÒÝ# D§M¢M¡O¤OÑ4Ô4Ð8Ð8Ð8à—	’	�$Ÿ-š-Ð(=Ð(=¸dÑ(CÔ(CÑDÔDÑEÔEðñ ô ð ð
  ŸHšH ZÑ0Ô0ˆE�&‰MØ×ÒÑ!Ô! XÒ-Ð-Ø(,×(8Ò(8Ñ(:Ô(:��nÑ%Ý+¨EÑ2Ô2ˆF�7‰Oàñ ,˜% 1š*˜*¨×(?Ò(?Ñ(AÔ(AÀXÒ(MÑ(Mð
 "×/Ò/Ñ1Ô1�	Ø"×,Ò,¨U×-HÒ-HÑ-JÔ-JÑKÔK‘��BØ”[ 2Ñ%�õ
 œJ uÑ-Ô-�	Ýœ8¥R¤V¨IÑ%6Ô%6½¼¸yÑ8IÔ8IÐ$JÑKÔK�Ýœ6 (¨a°"©f¸¸B¹Ð,@ÑAÔA�Ø˜( X¨a¤[Ñ0Ñ0�Ø˜( X¨a¤[Ñ0Ñ0�à)0¸5Ø+3ð!5ð !5�à'4°U·\²\±^´^Ô'D��mÑ$å.¨rÑ2Ô2��s‘Ý.¨rÑ2Ô2��s‘Ý"/°Ñ"6Ô"6��w‘Ý&9Ø  ¨¨BÐ/Ð0ð;2ñ '3ô '3��{Ñ#Ð#õ ':Ø  1 a &Ð)Ø  ˜yÐ)ð;+ñ ',ô ',��{Ñ#ð �NŠN˜6 1¨VˆNÑ4Ô4Ð4Ð4Ð4ð �NŠN˜1ÑÔÐð ”Ô/×5Ò5°a¸¸TÑBÔBñ 2ˆE�6˜7 F¨Eð
 �LŠL˜Ý,¨UÑ3Ô3Ý#6Ø)¨A¨q¨6Ð2Ø&¨%¨¨	Ð2ð84ñ $5ô $5ð ñ ô ð ð �LŠL˜Ñ Ô Ð ð ˆEØ9?ð Mñ MÑ5��h ¨°ÝÔ*¨4Ñ0Ô0�Ø�
Ø”; (Ò*Ð*Ø×%Ò% e¤kÑ2Ô2Ð2Ø”= HÒ,Ð,Ø×%Ò% e¤mÑ4Ô4Ð4Ø”< 3Ò&Ð&Ø×%Ò%¨¬Ð&7Ñ8Ô8Ð8Ø×!Ò!Ý'¨Ñ1Ô1Ð5Ð5Ð5Ø”zÐ%ð#ñ ô ð ð   §¢¨*Ñ!5Ô!5Ð6�Ø”= HÒ,Ð,Ø,1¬M�E˜.Ñ)Ý% eÑ,Ô,�Ø˜b’=�=Ø"�GØ× Ò  ¨Ñ+Ô+×2Ò2°E¸E¸6À7Ð3KÑLÔLÐLÑLà %§¢¡¤ð #ð #‘��uØ—
’
‘”�åÐ/Ð/¨Ð/Ñ/Ô/Ñ0Ô0°AÒ5Ð5Ý˜U 1œX aœ[Ñ)Ô)�B�BàŸšÐ!;Ð!;°UÐ!;Ñ!;Ô!;Ñ;Ô;�Bð #ØŸšÐ!HÐ!HÀ%Ð!HÑ!HÔ!HÑHÔHØðð �ð —’ØØ—G’GÐ5Ð5¨uÐ5Ñ5Ô5Ñ5Ô5Ø!ð ñ #ô #ð #ð #ð
 �JŠJ�vÑÔÐà',ð ð Ñ#��1�e˜VØ—’ØÝ& qÑ)Ô)Ý&¨ r¨!¡tÑ,Ô,Ý*¨5Ñ1Ô1Ý+¨FÑ3Ô3ð ñ ô ð ð ð �JŠJ�s‰OŒOˆOˆOˆOr   Fc	           
      ó  — |                       |¦  «        }	|	r | j        j        di |	¤Ž |                     ¦   «         �/| j                             dd|                     ¦   «         i¦  «         t          j        d         dk    r|                      ||||||||¦  «         n|                      ||||||||¦  «         |                     ¦   «         �| j                             d¦  «         |	r| j                             d¦  «         d S d S )NrZ  rn  ro  zsvg.fonttyper*  r|  )	rR  r«   r_   rr  rà   rý   r  rd  rg   )
rI   r  r7   r  r   r  r  r  r	  r£  s
             r   Ú	draw_textzRendererSVG.draw_text  s  € ð ×)Ò)¨"Ñ-Ô-ˆ
Øð 	1ð ˆDŒKÔÐ0Ð0 ZÐ0Ð0Ð0à�:Š:‰<Œ<Ð#ØŒK×Ò˜c L°"·*²*±,´,Ð#?Ñ@Ô@Ð@åŒ<˜Ô'¨6Ò1Ð1Ø×#Ò# B¨¨1¨a°°u¸fÀeÑLÔLÐLÐLà×#Ò# B¨¨1¨a°°u¸fÀeÑLÔLÐLà�:Š:‰<Œ<Ð#ØŒK�OŠO˜CÑ Ô Ð àð 	!ØŒK�OŠO˜CÑ Ô Ð Ð Ð ð	!ð 	!r   c                 ó   — dS rp   rn   ro   s    r   ÚflipyzRendererSVG.flipy  rÚ  r   c                 ó   — | j         | j        fS r   )r¦   r§   ro   s    r   Úget_canvas_width_heightz#RendererSVG.get_canvas_width_height  s   € àŒz˜4œ;Ð&Ð&r   c                 ó:   — | j                              |||¦  «        S r   )rÿ  Úget_text_width_height_descent)rI   r   r  r  s       r   rl  z)RendererSVG.get_text_width_height_descent#  s   € àŒ×<Ò<¸QÀÀfÑMÔMÐMr   )Nr¡   r   )NNNN)FN)%rq   rr   rs   rK   rÇ   r¾   r¿   r  r  r  rÆ   rE  rG  rR  rÅ   r\  r^  r`  r,  rt  rƒ  rˆ  r¨  r¥  r×  rÙ  rÝ  rð  r÷  ró  r  rd  rf  rh  rj  rl  Ú__classcell__©rÃ   s   @r   r    r    >  sž  ø€ € € € € ð$$Ø!ð$$ð $$ð $$ð $$ð $$ð $$ð $$ðLð ð ðy1ð y1ð y1ðvð ð ð3ð 3ð 3ðMð Mð Mðð ð ð$*ð *ð *ðX+ð +ð +ðZ@ð @ð @ð-ð -ð -ð.ð ð ð.Fð Fð Fð Fðð ð ð9ð 9ð 9ð GKØ!ðCð Cð Cð Cð!ð !ð !ð !ð" GKð%ð %ð %ð %ðN8&ð 8&ð 8&ð 8&ð 8&ðt?ð ?ð ?ð@ð @ð @ðDð ð ðð ð ð%ð %ð %ðM!ð M!ð M!ð M!ð^2ð 2ð 2ð&+ð +ð +ðDð Dð Dð DðL`ð `ð `ð `ðD!ð !ð !ð !ð.ð ð ð'ð 'ð 'ðNð Nð Nð Nð Nð Nð Nr   r    c                   óF   ‡ — e Zd ZdddœZdZdddœd„Zd„ Zd„ Zˆ fd	„Zˆ xZ	S )
ÚFigureCanvasSVGzScalable Vector Graphics)r¥   Úsvgzr¡   N)Úbbox_inches_restorer¢   c                óø  — t          j        |dd¬¦  «        5 }t          j        |¦  «        s t          j        d¦  «        |¦  «        }| j        j        }d| j        _        | j                             ¦   «         \  }}|dz  |dz  }	}t          | j        |||t          ||	|||¬¦  «        |¬¦  «        }
| j         
                    |
¦  «         |
                     ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )a  
        Parameters
        ----------
        filename : str or path-like or file-like
            Output target; if a string, a file will be opened for writing.

        metadata : dict[str, Any], optional
            Metadata in the SVG file defined as key-value pairs of strings,
            datetimes, or lists of strings, e.g., ``{'Creator': 'My software',
            'Contributor': ['Me', 'My Friend'], 'Title': 'Awesome'}``.

            The standard keys and their value types are:

            * *str*: ``'Coverage'``, ``'Description'``, ``'Format'``,
              ``'Identifier'``, ``'Language'``, ``'Relation'``, ``'Source'``,
              ``'Title'``, and ``'Type'``.
            * *str* or *list of str*: ``'Contributor'``, ``'Creator'``,
              ``'Keywords'``, ``'Publisher'``, and ``'Rights'``.
            * *str*, *date*, *datetime*, or *tuple* of same: ``'Date'``. If a
              non-*str*, then it will be formatted as ISO 8601.

            Values have been predefined for ``'Creator'``, ``'Date'``,
            ``'Format'``, and ``'Type'``. They can be removed by setting them
            to `None`.

            Information is encoded as `Dublin Core Metadata`__.

            .. _DC: https://www.dublincore.org/specifications/dublin-core/

            __ DC_
        rP  zutf-8)Úencodingr¡   )r¬   r¢   )rr  N)r   Úopen_file_cmÚfile_requires_unicodeÚcodecsÚ	getwriterÚfigureÚdpiÚget_size_inchesr   r    ÚdrawrÇ   )rI   rí  rr  r¢   Úfhrz  r¦   r§   rP  r  Úrenderers              r   Ú	print_svgzFigureCanvasSVG.print_svg.  sG  € õ@ Ô ¨#¸Ð@Ñ@Ô@ð 	 ÀBÝÔ.¨rÑ2Ô2ð 3Ø.•VÔ% gÑ.Ô.¨rÑ2Ô2�Ø”+”/ˆCØ ˆDŒKŒOØ œK×7Ò7Ñ9Ô9‰MˆE�6Ø˜2‘:˜v¨™{ˆqˆAÝ(Ø”˜U F¨CÝ˜A˜q "°¸hÐGÑGÔGØ$7ð9ñ 9ô 9ˆHð ŒK×Ò˜XÑ&Ô&Ð&Ø×ÒÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   ˜C
C/Ã/C3Ã6C3c                 óò   — t          j        |d¦  «        5 }t          j        d|¬¦  «        5 } | j        |fi |¤Žcd d d ¦  «         cd d d ¦  «         S # 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NÚwbrP  )ÚmodeÚfileobj)r   ru  ÚgzipÚGzipFiler  )rI   rí  Úkwargsr}  Ú
gzipwriters        r   Ú
print_svgzzFigureCanvasSVG.print_svgz\  s  € ÝÔ ¨$Ñ/Ô/ð 	8°2Ý” 3°Ð3Ñ3Ô3ð	8Ø7AØ!�4”> *Ð7Ð7°Ð7Ð7ð	8ð 	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s3   –A,­A»A,ÁA	ÁA,ÁA	ÁA,Á,A0Á3A0c                 ó   — dS )Nr¥   rn   ro   s    r   Úget_default_filetypez$FigureCanvasSVG.get_default_filetypea  s   € Øˆur   c                 óv   •— | j                              ¦   «          t          ¦   «                              ¦   «         S r   )ry  Údraw_without_renderingr¹   r|  )rI   rÃ   s    €r   r|  zFigureCanvasSVG.drawd  s)   ø€ ØŒ×*Ò*Ñ,Ô,Ð,Ý‰wŒw�|Š|‰~Œ~Ðr   )
rq   rr   rs   Ú	filetypesÚ	fixed_dpir  rˆ  rŠ  r|  rm  rn  s   @r   rp  rp  (  sŽ   ø€ € € € € Ø2Ø3ð5ð 5€Ið €Ià9=Èð , ð , ð , ð , ð , ð\8ð 8ð 8ð
ð ð ðð ð ð ð ð ð ð ð r   rp  zœ<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
c                   ó    — e Zd Zej        ZeZdS )Ú_BackendSVGN)rq   rr   rs   rà   rá   Úbackend_versionrp  ÚFigureCanvasrn   r   r   r�  r�  s  s   € € € € € à”o€OØ"€L€L€Lr   r�  r   )Drç  rw  rã   r„  r   Úior   r°   Úloggingræ   Úrerþ   Únumpyr›   ÚPILr   Ú
matplotlibrà   r   r   r   r  Úmatplotlib.backend_basesr   r	   r
   r   Ú!matplotlib.backends.backend_mixedr   Úmatplotlib.colorsr   Úmatplotlib.datesr   Úmatplotlib.pathr   r   Úmatplotlib.transformsr   r   Ú	getLoggerrq   rê  Ú
deprecatedr   r   Úcompiler*   r(   r&   r-   r,   r2   r8   r5   r?   r…   r‡   rŒ   rŽ   r?  r™   rž   r    rp  ÚFigureManagerSVGr¼   Úexportr�  rn   r   r   ú<module>r¤     s9  ðØ €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€à Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6ðBð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bð Bà ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø %Ð %Ð %Ð %Ð %Ð %Ø  Ð  Ð  Ð  Ð  Ð  Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8ð €wÔ˜Ñ"Ô"€ðR €„�Ð$FÐGÑGÔGðð ñ HÔGððð ð ð !�b”j Ñ+Ô+Ð ð €„�Ð$HÐIÑIÔIð"ð "ñ JÔIð"ð,ð ,ð ,ð
 €„�Ð$GÐHÑHÔHðð ñ IÔHððð ð ð+ð +ð +ð €„�Ð$IÐJÑJÔJðð ñ KÔJðð5ð 5ð 5ðLð Lð Lð Lð Lñ Lô Lð Lð^ð ð ð €„�ÑÔð5ð 5ð 5ñ Ôð5ð=ð =ð =ð €„�ÑÔð'ð 'ð 'ñ Ôð'ð &¨vÀÐHÐH€ð*ð *ð *ð@ð @ð @ðgNð gNð gNð gNð gN�,ñ gNô gNð gNðT>ð >ð >ð >ð >Ð&ñ >ô >ð >ðB %Ð ð€	ð 
„ð#ð #ð #ð #ð #�(ñ #ô #ñ „ð#ð #ð #r   