Ë
    µ2ÚiÞÂ  ã                   óö  — 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 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jL                  e'«      Z(d„ Z) e
jT                  d«      Z+d„ Z,d„ Z-d„ Z.d„ Z/ G d„ d«      Z0d„ Z1d„ Z2ddddœZ3d„ Z4d„ Z5 G d„ de«      Z6 G d„ de«      Z7eZ8d Z9ejt                   G d!„ d"e«      «       Z;y)#é    N)ÚBytesIO)ÚImage)ÚcbookÚfont_manager)Ú_BackendÚFigureCanvasBaseÚFigureManagerBaseÚRendererBase)ÚMixedModeRenderer)Úrgb2hex)ÚUTC)ÚPath)Ú_path)ÚAffine2DÚAffine2DBasec                 ór   — | j                  dd«      } | j                  dd«      } | j                  dd«      } | S )Nú&ú&amp;ú<ú&lt;ú>ú&gt;©Úreplace©Úss    úV/var/www/html/acx/venv/lib/python3.12/site-packages/matplotlib/backends/backend_svg.pyÚ_escape_cdatar   E   s7   € Ø	�	‰	�#�wÓ€AØ	�	‰	�#�vÓ€AØ	�	‰	�#�vÓ€AØ€Hó    z-(?=-)c                 óD   — t        | «      } t        j                  d| «      S )Nz- )r   Ú_escape_xml_commentÚsubr   s    r   Ú_escape_commentr#   O   s   € Ü�aÓ€AÜ×"Ñ" 4¨Ó+Ð+r   c                 óº   — | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  d	d
«      } | S )Nr   r   ú'z&apos;ú"z&quot;r   r   r   r   r   r   s    r   Ú_escape_attribr'   T   sW   € Ø	�	‰	�#�wÓ€AØ	�	‰	�#�xÓ €AØ	�	‰	�#�xÓ €AØ	�	‰	�#�vÓ€AØ	�	‰	�#�vÓ€AØ€Hr   c                 óx   — d| vrdt        | «      z   dz   S d| vrdt        | «      z   dz   S dt        | «      z   dz   S )Nr&   r%   )r   r'   r   s    r   Ú_quote_escape_attribr)   ]   sS   € Ø,/°q©LˆC”- Ó"Ñ" SÑ(ð +Ø,/°q©LˆC”- Ó"Ñ" SÑ(ð+à”. Ó#Ñ# cÑ)ð+r   c                 óF   — | d›j                  d«      j                  d«      S )zˆ
    Create a short string representation of a float, which is %f
    formatting with trailing zeros and the decimal point removed.
    ÚfÚ0ú.)Úrstrip)Úxs    r   Ú_short_float_fmtr0   c   s"   € ð
 �ˆU�?‰?˜3Ó×&Ñ& sÓ+Ð+r   c                   óT   — 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y)Ú	XMLWriterzM
    Parameters
    ----------
    file : writable text file-like object
    c                 ó˜   — |j                   | _        t        |d«      r|j                  | _        d| _        g | _        g | _        d| _        y )NÚflushr   z@                                                                )ÚwriteÚ_XMLWriter__writeÚhasattrr4   Ú_XMLWriter__openÚ_XMLWriter__tagsÚ_XMLWriter__dataÚ_XMLWriter__indentation)ÚselfÚfiles     r   Ú__init__zXMLWriter.__init__r   s?   € Ø—z‘zˆŒÜ�4˜Ô!ØŸ™ˆDŒJØˆŒØˆŒØˆŒØ%ˆÕr   c                 ó  — | j                   r,|r| j                  d«       n| j                  d«       d| _         | j                  r=dj                  | j                  «      }| j                  t	        |«      «       g | _        y y )Nú>
r   r   Ú )r8   r6   r:   Újoinr   )r<   ÚindentÚdatas      r   Ú__flushzXMLWriter.__flush{   sa   € à�;Š;ÙØ—‘˜UÕ#à—‘˜SÔ!ØˆDŒKØ�;Š;Ø—7‘7˜4Ÿ;™;Ó'ˆDØ�L‰Lœ tÓ,Ô-ØˆD�Kð r   c                 óâ  — | j                  «        t        |«      }g | _        | j                  j	                  |«       | j                  | j                  dt        | j                  «      dz
   «       | j                  d|› �«       i |¥|¥j                  «       D ]5  \  }}|sŒ	t        |«      }t        |«      }| j                  d|› d|› �«       Œ7 d| _
        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é   r   ú ú=)Ú_XMLWriter__flushr   r:   r9   Úappendr6   r;   ÚlenÚitemsr)   r8   )r<   ÚtagÚattribÚextraÚkÚvs         r   ÚstartzXMLWriter.startˆ   sÜ   € ð& 	�‰ŒÜ˜CÓ ˆØˆŒØ�‰×Ñ˜3ÔØ�‰�T×'Ñ'Ð(=¬¨T¯[©[Ó)9¸AÑ)=Ð>Ô?Ø�‰�q˜˜�YÔØ'�vÐ' Ð'×-Ñ-Ó/ò 	*‰DˆAˆqÚÜ! !Ó$�Ü(¨Ó+�Ø—‘˜q   1 Q C˜[Õ)ð		*ð
 ˆŒÜ�4—;‘;Ó !Ñ#Ð#r   c                 óÂ   — | j                  «        | j                  | j                  dt        | j                  «       «       | j                  dt        |«      › d�«       y)zŒ
        Add a comment to the output stream.

        Parameters
        ----------
        comment : str
            Comment text.
        Nz<!-- z -->
)rJ   r6   r;   rL   r9   r#   )r<   Úcomments     r   rU   zXMLWriter.comment©   sK   € ð 	�‰ŒØ�‰�T×'Ñ'Ð(9¬¨T¯[©[Ó)9Ð:Ô;Ø�‰�uœ_¨WÓ5Ð6°fÐ=Õ>r   c                 ó:   — | j                   j                  |«       y)z�
        Add character data to the output stream.

        Parameters
        ----------
        text : str
            Character data.
        N)r:   rK   )r<   Útexts     r   rD   zXMLWriter.data¶   s   € ð 	�‰×Ñ˜4Õ r   Nc                 ó  — |rL| j                   sJ d|› d�«       ‚t        |«      | j                   d   k(  s-J d| j                   d   › d|› �«       ‚| j                   sJ d«       ‚| j                   j                  «       }| j                  r| j	                  |«       n%| j
                  rd| _        | j                  d«       y	|r1| j                  | j                  d	t        | j                   «       «       | j                  d
|› d�«       y	)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.
        indent : bool, default: True
        zunbalanced end(ú)éÿÿÿÿzexpected end(z), got zunbalanced end()r   z/>
Nz</r@   )	r9   r   Úpopr:   rJ   r8   r6   r;   rL   )r<   rN   rC   s      r   ÚendzXMLWriter.endÁ   sê   € ñ Ø—;’;Ð8 /°#°°aÐ 8Ó8�;Ü  Ó%¨¯©°R©Ò8ð >Ø §¡¨B¡Ð0°¸°uÐ=ó>Ð8ð —;’;Ð2Ð 2Ó2�;Ø�k‰k�o‰oÓˆØ�;Š;Ø�L‰L˜Õ Ø�[Š[ØˆDŒKØ�L‰L˜Ô ØÙØ�L‰L˜×+Ñ+Ð,=¬S°·±Ó-=Ð>Ô?Ø�‰�r˜#˜˜c�]Õ#r   c                 óˆ   — t        | j                  «      |kD  r*| j                  «        t        | j                  «      |kD  rŒ)yy)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)rL   r9   r\   )r<   Úids     r   ÚclosezXMLWriter.closeÞ   s1   € ô �$—+‘+Ó Ò#Ø�H‰HŒJô �$—+‘+Ó Õ#r   c                 óv   —  | j                   ||fi |¤Ž |r| j                  |«       | j                  d¬«       y)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)rC   N)rS   rD   r\   )r<   rN   rW   rO   rP   s        r   ÚelementzXMLWriter.elementë   s5   € ð 	ˆ�
‰
�3˜Ñ( %Ò(ÙØ�I‰I�dŒOØ�‰˜ˆÕr   c                  ó   — y)zFlush the output stream.N© ©r<   s    r   r4   zXMLWriter.flushö   s   € àr   )T©NT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r>   rJ   rS   rU   rD   r\   r_   ra   r4   rc   r   r   r2   r2   k   sA   „ ñò&óð !#ó $òB?ò	!ó$ò:ð !%¨Ró 	ór   r2   c           
      ó<  — g }| D ]…  \  }}|dk(  r
|dk(  s|dk(  s|dk(  r|dk(  s
|dk(  r|dk(  rŒ*|dk(  r t        |t        «      r|j                  «       }|j                  d	j	                  |d
j                  d„ |D «       «      «      «       Œ‡ d
j                  |«      S )NÚscale)rG   )rG   rG   Ú	translate)r   r   Úrotate)r   Úmatrixz{}({})rH   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N©r0   )Ú.0r/   s     r   ú	<genexpr>z&_generate_transform.<locals>.<genexpr>  s   è ø€ Ò>°1Ô+¨A×.Ñ>ùó   ‚)Ú
isinstancer   Ú	to_valuesrK   ÚformatrB   )Útransform_listÚpartsÚtypeÚvalues       r   Ú_generate_transformr|   û   s¨   € Ø€EØ%ò A‰ˆˆeØ�GŠO ¨$¢°%¸6²/Ø˜;Ò&¨5°Fª?Ø˜8Ò#¨°ªØØ�8Ò¤
¨5´,Ô ?Ø—O‘OÓ%ˆEØ�‰�X—_‘_Ø�#—(‘(Ñ>¸Ô>Ó>ó@õ 	AðAð �8‰8�E‹?Ðr   c                 óN   — dj                  d„ | j                  «       D «       «      S )Nz; c              3   ó0   K  — | ]  \  }}|› d |› �–— Œ y­w)z: Nrc   )rr   rQ   rR   s      r   rs   z _generate_css.<locals>.<genexpr>
  s   è ø€ Ò<¡T Q¨˜�s˜"˜Q˜C”[Ñ<ùs   ‚)rB   rM   ©rO   s    r   Ú_generate_cssr€   	  s   € Ø�9‰9Ñ<¨V¯\©\«^Ô<Ó<Ð<r   ÚsquareÚbuttÚround)Ú
projectingr‚   rƒ   c                 óZ   — t        | t        «      st        d|› dt        | «      › d�«      ‚y )NúInvalid type for z metadata. Expected str, not r-   )ru   ÚstrÚ	TypeErrorrz   )ÚinfoÚkeys     r   Ú_check_is_strr‹     s8   € Ü�dœCÔ ÜÐ+¨C¨5Ð0MÜ ›:˜, að)ó *ð 	*ð !r   c           	      óÈ   — t        j                  | «      r3| D ]-  }t        |t        «      rŒt	        d|› dt        |«      › d�«      ‚ y t	        d|› dt        | «      › d�«      ‚)Nr†   z) metadata. Expected iterable of str, not r-   z0 metadata. Expected str or iterable of str, not )ÚnpÚiterableru   r‡   rˆ   rz   )ÚinfosrŠ   r‰   s      r   Ú_check_is_iterable_of_strr�     s‚   € Ü	‡{�{�5ÔØò 	GˆDÜ˜d¤CÕ(ÜÐ"3°C°5ð 98Ü8<¸T»
°|À1ð!Fó Gð Gñ	Gô
 Ð+¨C¨5ð 10Ü04°U³¨}¸Að?ó @ð 	@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)Úmetadatac          
      óp  •— || _         || _        t        |«      | _        || _        |€t        |dd«      }t        |t        «      sd}|| _        i | _	        t        j                  «       | _        i | _        i | _        d| _        i | _        d| _        d| _        t&        ‰	| �Q  «        t+        «       | _        t/        |«      }t/        |«      }|j1                  t2        «       | j                  j5                  d|› d�|› d�d|› d|› �d	d
ddi¬«      | _        | j9                  |«       | j;                  «        y )NÚnamerA   r   FÚsvgÚptz0 0 rH   zhttp://www.w3.org/2000/svgz1.1zxmlns:xlinkzhttp://www.w3.org/1999/xlink)ÚwidthÚheightÚviewBoxÚxmlnsÚversionrO   )r˜   r™   r2   ÚwriterÚ	image_dpiÚgetattrru   r‡   ÚbasenameÚ_groupdÚ	itertoolsÚcountÚ_image_counterÚ_clipdÚ_markersÚ_path_collection_idÚ_hatchdÚ_has_gouraudÚ_n_gradientsÚsuperr>   ÚdictÚ
_glyph_mapr0   r5   Ú	svgPrologrS   Ú	_start_idÚ_write_metadataÚ_write_default_style)
r<   r˜   r™   Ú	svgwriterr    rž   r“   Ú
str_heightÚ	str_widthÚ	__class__s
            €r   r>   zRendererSVG.__init__"  s3  ø€ àˆŒ
ØˆŒÜ 	Ó*ˆŒØ"ˆŒàÐÜ˜y¨&°"Ó5ˆHÜ˜h¬Ô,Ø�Ø ˆŒàˆŒÜ'Ÿo™oÓ/ˆÔØˆŒØˆŒØ#$ˆÔ ØˆŒØ!ˆÔØˆÔä‰ÑÔÜ›&ˆŒÜ% fÓ-ˆ
Ü$ UÓ+ˆ	Ø�‰œ	Ô"ØŸ™×*Ñ*ØØ�K˜rÐ"Ø �\ Ð$Ø˜9˜+ Q z lÐ3Ø.ØØ!Ð#AÐBð +ó DˆŒð 	×Ñ˜XÔ&Ø×!Ñ!Õ#r   c                 óÂ   — | j                  «        | j                  «        | j                  j                  | j                  «       | j                  j                  «        y rp   )Ú_write_clipsÚ_write_hatchesr�   r_   r¯   r4   rd   s    r   ÚfinalizezRendererSVG.finalizeH  s@   € Ø×ÑÔØ×ÑÔØ�‰×Ñ˜$Ÿ.™.Ô)Ø�‰×ÑÕr   c                 ó¬  ‡— |€i }dddt         j                  › d�dœ|¥}| j                  Šd|v r$|d   }t        |d«       ‰j	                  d|¬«       |j                  d	d «      }|��t        |t        «      r|g}nöt        |t        j                  t        j                  f«      r|j                  «       g}nºt        j                  |«      r�g }|D ]…  }t        |t        «      r|j                  |«       Œ%t        |t        j                  t        j                  f«      r |j                  |j                  «       «       Œot        d
t        |«      › d�«      ‚ nt        dt        |«      › d�«      ‚dj!                  |«      |d	<   n³d	|vr¯t#        j$                  d«      }|rit        j                  j'                  t)        |«      t        j*                  j,                  «      }|j/                  t0        ¬«      j                  «       |d	<   n/t        j                  j3                  «       j                  «       |d	<   d }ˆfd„}|j5                  dd «      }|� ||«      }‰j	                  dd|i¬«       dD ]O  }	|j5                  |	d «      }
|
€Œ ||«      }t        |
|	«       ‰j	                  d|	j7                  «       › �|
¬«       ŒQ dD ]¾  }	|j5                  |	d «      }|€Œt        |t        «      r|g}t9        ||	«        ||«      }‰j;                  d|	j7                  «       › �«       |D ]7  }‰j;                  d«       ‰j	                  d|¬«       ‰j=                  d«       Œ9 ‰j=                  d|	j7                  «       › �«       ŒÀ |j5                  dd «      }|�…t        |t        «      r|g}t9        |d«        ||«      }‰j;                  d«       ‰j;                  d«       |D ]  }‰j	                  d|¬«       Œ ‰j=                  d«       ‰j=                  d«       |�‰j?                  |«       |rtA        ddj!                  |«      z   «      ‚y ) Nzimage/svg+xmlz&http://purl.org/dc/dcmitype/StillImagezMatplotlib vz, https://matplotlib.org/)ÚFormatÚTypeÚCreatorÚTitleÚtitle)rW   Ú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 ‰j                  d«      } ‰j                  dddddœ¬«       ‰j                  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)rS   )Úmidr�   s    €r   Úensure_metadataz4RendererSVG._write_metadata.<locals>.ensure_metadata†  sL   ø€ ØˆØ�
Ø—,‘,˜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‹   ra   Úgetru   r‡   ÚdatetimeÚdateÚ	isoformatr�   rŽ   rK   rˆ   rz   rB   ÚosÚgetenvÚfromtimestampÚintÚtimezoneÚutcr   r   Útodayr[   Úlowerr�   rS   r\   r_   Ú
ValueError)r<   r“   r¿   rÖ   ÚdatesÚdrÅ   rÆ   ÚurirŠ   r‰   ÚagentsÚagentÚkeywordsÚkeywordr�   s                  @r   r°   zRendererSVG._write_metadataN  s  ø€ ð ÐØˆHà%Ø<àœsŸ™Ð/Ð/HÐIñ	
ð
 ð
ˆð —‘ˆà�hÑØ˜WÑ%ˆEÜ˜% Ô)Ø�N‰N˜7¨ˆNÔ/ð �|‰|˜F DÓ)ˆØÑÜ˜$¤Ô$Ø˜‘Ü˜D¤8×#4Ñ#4´h·m±mÐ"DÔEØŸ™Ó)Ð*‘Ü—‘˜TÔ"Ø�Øò 	/�AÜ! !¤SÔ)ØŸ™ Q�Ü# A¬×(9Ñ(9¼8¿=¹=Ð'IÔJØŸ™ Q§[¡[£]Õ3ä'ð#ä#'¨£7 )¨1ð.ó/ð /ñ	/ô  ð #4ä48¸³J°<¸qð!Bó Cð Cð  #Ÿx™x¨›ˆH�VÒØ˜8Ñ#ô —9‘9Ð0Ó1ˆDÙÜ×(Ñ(×6Ñ6´s¸4³yÄ(×BSÑBS×BWÑBWÓX�Ø#'§<¡<´s <Ó#;×#EÑ#EÓ#G�˜Ò ä#+×#4Ñ#4×#:Ñ#:Ó#<×#FÑ#FÓ#H�˜Ñ àˆô
	ð �l‰l˜6 4Ó(ˆØˆ?Ù! #Ó&ˆCØ�N‰N˜9¨n¸cÐ-BˆNÔCðDò 	?ˆCà—<‘<  TÓ*ˆDØÑÙ% cÓ*�Ü˜d CÔ(Ø—‘  S§Y¡Y£[ MÐ2¸�Õ>ð	?ð Eò 	,ˆCØ—\‘\ # tÓ,ˆFØˆ~Øä˜&¤#Ô&Ø ˜�ä% f¨cÔ2á! #Ó&ˆCØ�L‰L˜3˜sŸy™y›{˜mÐ,Ô-Øò '�Ø—‘˜ZÔ(Ø—‘˜z°�Ô6Ø—
‘
˜:Õ&ð'ð �J‰J˜˜SŸY™Y›[˜MÐ*Õ+ð!	,ð& —<‘< 
¨DÓ1ˆØÐÜ˜(¤CÔ(Ø$˜:�Ü% h°
Ô;á! #Ó&ˆCØ�L‰L˜Ô&Ø�L‰L˜Ô#Ø#ò 7�Ø—‘˜x¨g�Õ6ð7à�J‰J�yÔ!Ø�J‰J�|Ô$àˆ?Ø�L‰L˜ÔáÜÐMØ ŸX™X hÓ/ñ0ó 1ð 1ð r   c                 óª   — | j                   }t        dddœ«      }|j                  d«       |j                  ddd|z  ¬«       |j	                  d«       y )	Nrƒ   r‚   )ústroke-linejoinústroke-linecapÚdefsÚstyleztext/cssz*{%s})rz   rW   )r�   r€   rS   ra   r\   )r<   r�   Údefault_styles      r   r±   z RendererSVG._write_default_styleÉ  sQ   € Ø—‘ˆÜ%Ø&Ø$ñ'&ó 'ˆð 	�‰�VÔØ�‰�w Z°gÀÑ6MˆÔNØ�
‰
�6Õr   c                 óN  — t         j                  d   }|€t        t        j                  «       «      }t        j                  «       }|j                  |j                  d«      «       |j                  t        |«      j                  d«      «       |› |j                  «       d d › �S )Nzsvg.hashsaltÚutf8é
   )
rÒ   ÚrcParamsr‡   ÚuuidÚuuid4ÚhashlibÚsha256ÚupdateÚencodeÚ	hexdigest)r<   rz   ÚcontentÚsaltÚms        r   Ú_make_idzRendererSVG._make_idÒ  s~   € Ü�|‰|˜NÑ+ˆØˆ<Ü”t—z‘z“|Ó$ˆDÜ�N‰NÓˆØ	�‰�—‘˜VÓ$Ô%Ø	�‰”�W“×$Ñ$ VÓ,Ô-Ø�˜Ÿ™› c rÐ*Ð+Ð,Ð,r   c                 óp   — |t        «       j                  dd«      j                  d| j                  «      z   S )NrG   rZ   r   )r   rk   rl   r™   )r<   Ú	transforms     r   Ú_make_flip_transformz RendererSVG._make_flip_transformÛ  s-   € Øœ8›:×+Ñ+¨A¨rÓ2×<Ñ<¸QÀÇÁÓLÑLÐLr   c                 ó0  — |�t        |«      }|j                  «       }|�t        |«      }|j                  «       ||f}| j                  j	                  |«      }|€6| j                  d|«      }|j                  «       ||f|f| j                  |<   |S |\  }}|S )z,
        Create a new hatch pattern
        Úh)ÚtupleÚget_hatch_colorÚ	get_hatchr¨   rÔ   rü   Úget_hatch_path)r<   ÚgcÚrgbFaceÚedgeÚdictkeyÚoidÚ_s          r   Ú
_get_hatchzRendererSVG._get_hatchÞ  s¥   € ð ÐÜ˜G“nˆGØ×!Ñ!Ó#ˆØÐÜ˜“;ˆDØ—<‘<“> 7¨DÐ1ˆØ�l‰l×Ñ˜wÓ'ˆØˆ;Ø—-‘-  WÓ-ˆCØ&(×&7Ñ&7Ó&9¸7ÀDÐ%IÈ3Ð$OˆD�L‰L˜Ñ!ð ˆ
ð ‰FˆAˆsØˆ
r   c                 ó>  — t        | j                  «      sy d}| j                  }|j                  d«       | j                  j	                  «       D �]9  \  \  }}}}|j                  d|dddt        |«      t        |«      ¬«       | j                  |t        «       j                  |«      j                  dd«      j                  d	|«      d
¬«      }|€d}nt        |«      }|j                  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<   |j                  d|t        |	«      ¬«       |j                  d«       �Œ< |j                  d«       y )NéH   rë   ÚpatternÚuserSpaceOnUser,   )r^   ÚpatternUnitsr/   Úyr˜   r™   ç      ð?ç      ð¿r   F©ÚsimplifyÚnoneÚrectrG   )r/   r  r˜   r™   Úfillzhatch.linewidthr‚   Úmiter)r  Ústrokeústroke-widthrê   ré   é   ústroke-opacityÚpath)râ   rì   )rL   r¨   r�   rS   Úvaluesr‡   Ú_convert_pathr   rk   rl   r   ra   rÒ   rñ   r€   r\   )
r<   Ú
HATCH_SIZEr�   r  Úfacer  r
  Ú	path_datar  Úhatch_styles
             r   r¸   zRendererSVG._write_hatchesð  s•  € Ü�4—<‘<Ô ØØˆ
Ø—‘ˆØ�‰�VÔØ)-¯©×)<Ñ)<Ó)>ó #	"Ñ%Ñ ˆT�4˜ #Ø�L‰LØØØ-Ø˜¤C¨
£OÜ˜:“ð ô (ð ×*Ñ*ØÜ“
ß‘�zÓ"§5¡5¨¨dÓ#3·I±I¸aÀÓ4LØð	 +ó  ˆIð
 ˆ|Ø‘ä˜t“}�Ø�N‰NØØ˜¤C¨
°1©Ó$5Ü˜: a™<Ó(Øð	 ô ô $ F›OÜ% f›oÜ$'¬¯©Ð5FÑ(GÓ$HØ&,Ø'.ñˆKð �a‰y˜1Š}Ü03°F¸1±I³�Ð,Ñ-Ø�N‰NØØÜ# KÓ0ð ô ð
 �J‰J�yÖ!ðG#	"ðH 	�
‰
�6Õr   c                 óÆ  — i }|j                  «       }|j                  «       �Ed| j                  ||«      › d�|d<   |�zt        |«      dk(  rl|d   dk7  rd|sbt	        |d   «      |d<   nP|€d	|d<   nHt        |dd «      d
k7  rt        |«      |d<   t        |«      dk(  r|d   dk7  r|st	        |d   «      |d<   |r/|j                  «       dk7  rt	        |j                  «       «      |d<   |j                  «       \  }}|�2dj                  d„ |D «       «      |d<   t	        t        |«      «      |d<   |j                  «       }|rŸ|j                  «       }t        |«      |d<   |s|d   dk7  rt	        |d   «      |d<   |dk7  rt	        |«      |d<   |j                  «       dk7  r|j                  «       |d<   |j                  «       dk7  rt        |j                  «          |d<   |S )z=Generate a style string from the GraphicsContext and rgbFace.Núurl(#rY   r  é   r  r  úfill-opacityr  )r   r   r   ÚopacityrÑ   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wrp   rq   )rr   Úvals     r   rs   z.RendererSVG._get_style_dict.<locals>.<genexpr>6  s   è ø€ ò 26Ø*-Ô  ×%ñ26ùrt   zstroke-dasharrayzstroke-dashoffsetr  r  r  rƒ   ré   r‚   rê   )Úget_forced_alphar  r  rL   r0   r  r   Ú	get_alphaÚ
get_dashesrB   ÚfloatÚget_linewidthÚget_rgbÚget_joinstyleÚget_capstyleÚ_capstyle_d)	r<   r  r  rO   Úforced_alphaÚoffsetÚseqÚ	linewidthÚrgbs	            r   Ú_get_style_dictzRendererSVG._get_style_dict  sí  € àˆà×*Ñ*Ó,ˆà�<‰<‹>Ð%Ø$ T§_¡_°R¸Ó%AÐ$BÀ!ÐDˆF�6‰NØÐ#¬¨G«¸Ò(9¸gÀa¹jÈCÒ>OÙ(Ü)9¸'À!¹*Ó)E��~Ò&àˆØ!'��v’ä˜  !˜Ó%¨Ò2Ü%,¨WÓ%5�F˜6‘NÜ˜“L AÒ%¨'°!©*¸Ò*;Ù ,Ü-=¸gÀa¹jÓ-I�F˜>Ñ*á˜BŸL™L›N¨cÒ1Ü 0°·±³Ó @ˆF�9Ñà—m‘m“o‰ˆ�Øˆ?Ø),¯©ñ 26Ø14ô26ó *6ˆFÐ%Ñ&ä*:¼5À»=Ó*IˆFÐ&Ñ'à×$Ñ$Ó&ˆ	ÙØ—*‘*“,ˆCÜ& s›|ˆF�8ÑÙ C¨¡F¨c¢MÜ+;¸CÀ¹FÓ+C�Ð'Ñ(Ø˜CÒÜ)9¸)Ó)D��~Ñ&Ø×ÑÓ! WÒ,Ø,.×,<Ñ,<Ó,>�Ð(Ñ)Ø�‰Ó  FÒ*Ü+6°r·±Ó7HÑ+I�Ð'Ñ(àˆr   c                 ó8   — t        | j                  ||«      «      S rp   )r€   r;  )r<   r  r  s      r   Ú
_get_stylezRendererSVG._get_styleI  s   € Ü˜T×1Ñ1°"°gÓ>Ó?Ð?r   c                 óÀ  — |j                  «       }|j                  «       \  }}|�(| j                  |«      }t        |«      t	        |«      f}n.|�*|j
                  \  }}}}	| j                  ||	z   z
  }||||	f}ni S | j                  j                  |«      }
|
€:| j                  d|«      }|�||f|f| j                  |<   n||f| j                  |<   n|
\  }
}dd|› d�iS )NÚpz	clip-pathr'  rY   )
Úget_clip_rectangleÚget_clip_pathrÿ   r^   r‡   Úboundsr™   r¥   rÔ   rü   )r<   r  ÚcliprectÚclippathÚclippath_transr	  r/   r  Úwr  Úclipr
  s               r   Ú_get_clip_attrszRendererSVG._get_clip_attrsL  sú   € Ø×(Ñ(Ó*ˆØ#%×#3Ñ#3Ó#5Ñ ˆ�.ØÐØ!×6Ñ6°~ÓFˆNÜ˜(“|¤S¨Ó%8Ð9‰GØÐ!Ø!Ÿ™‰JˆAˆq�!�QØ—‘˜Q˜q™SÑ!ˆAØ˜!˜Q �l‰GàˆIØ�{‰{�‰˜wÓ'ˆØˆ<Ø—-‘-  WÓ-ˆCØÐ#Ø)1°>Ð(BÀCÐ'H�—‘˜GÒ$à(/° ~�—‘˜GÒ$à‰IˆD�#Ø˜u S E¨˜^Ð,Ð,r   c           
      ó  — t        | j                  «      sy | j                  }|j                  d«       | j                  j	                  «       D ]¥  \  }}|j                  d|¬«       t        |«      dk(  r-|\  }}| j                  ||d¬«      }|j                  d|¬«       nA|\  }}}	}
|j                  d	t        |«      t        |«      t        |	«      t        |
«      ¬
«       |j                  d«       Œ§ |j                  d«       y )Nrë   ÚclipPath©r^   é   Fr  r  ©râ   r  ©r/   r  r˜   r™   )	rL   r¥   r�   rS   r   r!  ra   r0   r\   )r<   r�   rG  r
  rD  rE  r$  r/   r  rF  r  s              r   r·   zRendererSVG._write_clipsc  sô   € Ü�4—;‘;ÔØØ—‘ˆØ�‰�VÔØŸ™×+Ñ+Ó-ò 	#‰IˆD�#Ø�L‰L˜¨ˆLÔ,Ü�4‹y˜AŠ~Ø+/Ñ(�˜.Ø ×.Ñ.Ø˜n°uð /ó >�	à—‘˜v¨�Õ3à!‘
��1�a˜Ø—‘ØÜ& qÓ)Ü& qÓ)Ü*¨1Ó-Ü+¨AÓ.ð ô 0ð �J‰J�zÕ"ð	#ð  	�
‰
�6Õr   c                 óü   — |r| j                   j                  d|¬«       y | j                  j                  |d«      dz   | j                  |<   | j                   j                  d|› d| j                  |   d›�¬«       y )NÚgrK  r   rG   r  râ   )r�   rS   r¡   rÔ   )r<   r   Úgids      r   Ú
open_groupzRendererSVG.open_groupz  sl   € áØ�K‰K×Ñ˜c cÐÕ*à"Ÿl™l×.Ñ.¨q°!Ó4°qÑ8ˆD�L‰L˜‰OØ�K‰K×Ñ˜c¨¨¨1¨T¯\©\¸!©_¸QÐ,?Ð&@ÐÕAr   c                 ó:   — | j                   j                  d«       y )NrP  )r�   r\   )r<   r   s     r   Úclose_groupzRendererSVG.close_group‚  s   € à�‰�‰˜Õr   c                 ó*   — t         j                  d    S )Nzimage.composite_image)rÒ   rñ   rd   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«      j	                  d«      S )Nç        é   )ó   Mó   Ló   Qó   Có   zFÚascii)r˜   r™   r   Úconvert_to_stringÚdecode)r<   r  rþ   rG  r  Úsketchs         r   r!  zRendererSVG._convert_pathŠ  sO   € áØ˜˜dŸj™j¨$¯+©+Ð6‰DàˆDÜ×&Ñ&Ø�)˜T 8¨V°QÚ*¨Eó3ç39±6¸'³?ð	Cr   c           	      ó  — | j                  |«      }|d u xr |j                  «       d u }|j                  xr |}| j                  |||||j	                  «       ¬«      }|j                  «       �,| j                  j                  dd|j                  «       i«        | j                  j                  dd|i| j                  |«      ¤d| j                  ||«      i¤Ž |j                  «       �| j                  j                  d«       y y )N)rG  r  rb  Úaú
xlink:hrefrâ   rì   )r  )rÿ   r  Úshould_simplifyr!  Úget_sketch_paramsÚget_urlr�   rS   ra   rH  r=  r\   )	r<   r  r  rþ   r  Útrans_and_fliprG  r  r$  s	            r   Ú	draw_pathzRendererSVG.draw_path”  sú   € à×2Ñ2°9Ó=ˆØ˜4�Ò? B×$5Ñ$5Ó$7¸4Ð$?ˆØ×'Ñ'Ò0¨DˆØ×&Ñ&Ø�. t°hØ×'Ñ'Ó)ð 'ó +ˆ	ð �:‰:‹<Ð#Ø�K‰K×Ñ˜c L°"·*±*³,Ð#?Ô@Øˆ�‰×Ññ 	@ ið 	@°4×3GÑ3GÈÓ3Kñ 	@Ø"&§/¡/°"°gÓ">ó	@à�:‰:‹<Ð#Ø�K‰K�O‰O˜CÕ ð $r   c           	      ó  — t        |j                  «      sy | j                  }| j                  ||t	        «       j                  dd«      z   d¬«      }| j                  ||«      }	|t        |	«      f}
| j                  j                  |
«      }t        |	j                  «       D ��ci c]  \  }}|j                  d«      r||“Œ c}}«      }	|€X| j                  d|
«      }|j                  d«       |j                  d|||	¬	«       |j                  d«       || j                  |
<    |j                  di | j!                  |«      ¤Ž | j#                  |«      }dd|› �i}dd| j$                  dz  | j&                  dz  f}|j)                  ||d¬«      D ]]  \  }}t        |«      sŒ|dd  \  }}t+        |«      |d<   t+        |«      |d<   | j-                  ||«      |d<   |j                  d|¬«       Œ_ |j                  d
«       y c c}}w )Nr  r  Fr  r  rû   rë   r  )r^   râ   rì   rP  re  ú#r   r  )rG  r  éþÿÿÿr/   r  rì   Úuser   ©rP  )rL   Úverticesr�   r!  r   rk   r;  r€   r¦   rÔ   rM   Ú
startswithrü   rS   ra   r\   rH  rÿ   r˜   r™   Úiter_segmentsr0   r=  )r<   r  Úmarker_pathÚmarker_transr  Útransr  r�   r$  rì   r	  r
  rQ   rR   ri  rO   rG  rp  Úcoder/   r  s                        r   Údraw_markerszRendererSVG.draw_markers¤  sú  € ô �4—=‘=Ô!Øà—‘ˆØ×&Ñ&ØØœ8›:×+Ñ+¨C°Ó6Ñ6Øð 'ó ˆ	ð ×$Ñ$ R¨Ó1ˆØœm¨EÓ2Ð3ˆØ�m‰m×Ñ Ó(ˆÜ°·±³÷ 9©¨¨1Ø!"§¡¨hÔ!7ð  ! !™tó 9ó :ˆð ˆ;Ø—-‘-  WÓ-ˆCØ�L‰L˜Ô Ø�N‰N˜6 c¨Y¸eˆNÔDØ�J‰J�vÔØ%(ˆD�M‰M˜'Ñ"àˆ�‰Ñ5˜D×0Ñ0°Ó4Ò5Ø×2Ñ2°5Ó9ˆØ ! C 5 	Ð*ˆØ�1�d—j‘j ‘m T§[¡[°¡^Ð4ˆØ"×0Ñ0Ø T°Eð 1ó ;ò 	5‰NˆH�dä�8�}Ø  �}‘��1Ü.¨qÓ1��s‘Ü.¨qÓ1��s‘Ø"&§/¡/°"°gÓ">��w‘Ø—‘˜u¨V�Õ4ð	5ð 	�
‰
�3�ùó-9s   Â$H
c                 ó¢  •— t        |«      dkD  rt        |d   j                  «      nd}| j                  |||||«      }|d|z  z   dz   |dz   |z  k  }|st        ‰ | �  |||||||||	|
|||«      S | j
                  }g }|j                  d«       t        | j                  |||«      «      D ]—  \  }\  }}t        |j                  «       «      j                  dd«      }| j                  ||d¬	«      }d
j                  | j                  || j                  d|«      «      }|j!                  d||¬«       |j#                  |«       Œ™ |j%                  d«       | j'                  |||||||	|
|||«      D ]Ç  \  }}}}}|j)                  «       }|�|j                  dd|i¬«       | j+                  |«      }|r |j                  di |¤Ž d|› �t-        |«      t-        | j.                  |z
  «      | j1                  ||«      dœ}|j!                  d|¬«       |r|j%                  d«       |€Œ·|j%                  d«       ŒÉ | xj                  dz  c_        y )Nr   é	   r  é   rë   r  r  Fr  zC{:x}_{:x}_{}rA   r  )r^   râ   rd  re  r   rP  rl  )re  r/   r  rì   rn  rG   ro  )rL   rp  Ú_iter_collection_uses_per_pathr«   Údraw_path_collectionr�   rS   Ú	enumerateÚ_iter_collection_raw_pathsr   Ú
get_matrixrk   r!  rw   r§   rü   ra   rK   r\   Ú_iter_collectionrh  rH  r0   r™   r=  )!r<   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_attrsrO   rµ   s!                                   €r   r|  z RendererSVG.draw_path_collectionË  s{  ø€ ô .1°«Z¸!ª^”3�u˜Q‘x×(Ñ(Ô)ÀˆØ×;Ñ;Ø�> 7¨J¸
óDˆð �q˜=Ñ(Ñ(¨1Ñ,°¸1±ÀÑ/MÑMð 	á%Ü‘7Ñ/ØÐ$ e¨^Ø˜ z°:Ø˜J¨°dØó	!ð !ð —‘ˆØˆ
Ø�‰�VÔÜ$-¨d×.MÑ.MØ  %¨ó/9ó %:ò 	#Ñ ˆAÑ ��iä  ×!5Ñ!5Ó!7Ó8×>Ñ>¸sÀDÓIˆIØ×"Ñ" 4¨¸UÐ"ÓCˆAØ!×(Ñ(Ø×(Ñ(¨!¨T¯]©]¸2¸qÓ-AóCˆCà�N‰N˜6 c¨QˆNÔ/Ø×Ñ˜cÕ"ð	#ð 	�
‰
�6Ôà-1×-BÑ-BØ�J ¨Ø˜J¨
°JØ˜d Oó.5ò 	 Ñ)ˆB��G˜S 'ð —+‘+“-ˆCØˆØ—‘˜S¨,¸Ð)<�Ô=Ø×-Ñ-¨cÓ2ˆJÙØ�—‘Ñ/ JÒ/à ! ' ˜mÜ% bÓ)Ü% d§k¡k°BÑ&6Ó7ØŸ™¨¨gÓ6ñ	ˆFð �N‰N˜5¨ˆNÔ0ÙØ—
‘
˜3”Ø‰Ø—
‘
˜3•ð)	 ð, 	× Ò  AÑ%Ö r   c                 ó,   — | j                  ||||«       y rp   )Ú_draw_gouraud_triangle)r<   r  ÚpointsÚcolorsru  s        r   Údraw_gouraud_trianglez!RendererSVG.draw_gouraud_triangle  s   € à×#Ñ# B¨°¸Õ>r   c                 óà  — | j                   }| j                  s~d| _        |j                  dd¬«       |j                  dddidd	d
d
¬«       |j	                  d«       |j                  dd¬«       |j                  dddid¬«       |j	                  d«       t        j                  |d¬«      }|d   dk(  ry | j                  |«      }|j                  |«      }|j                  d«       t        d«      D �]2  }	||	   \  }
}||	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   }|j                  dd| j                  d›d|	d›�dt        |
«      t        |«      t        |«      t        |«      ¬ «       |j                  d!d
t        t        |«      t        |d   «      d"œ«      ¬#«       |j                  d!d$t        t        |«      d$d"œ«      ¬#«       |j	                  d«       �Œ5 |j	                  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  }|j                  d*|t        |«      d
d+d,œ¬-«       |j                  d.d/d$d+d0d1œ¬-«       |j                  d*|d2| j                  d›d3�d+d4œ¬-«       |j                  d*|d2| j                  d›d5�d6d+d7œ¬-«       |j                  d*|d2| j                  d›d8�d6d+d7œ¬-«       |j	                  d.«       | xj                  dz  c_
        y )9NTÚfilterÚcolorAddrK  ÚfeCompositeÚinÚSourceGraphicÚBackgroundImageÚ
arithmeticÚ1)rO   Úin2ÚoperatorÚk2Úk3ÚcolorMatÚfeColorMatrixrz   rn   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 )rO   r   r   )ÚaxisrZ   rë   r  rG   rL  r  ÚlinearGradientÚGRr/   r  râ   r  )r^   ÚgradientUnitsÚx1Úy1Úx2Úy2Ústop)z
stop-colorzstop-opacity)r7  rì   r,   zM rÑ   z L rH   z Zr  Ú
crispEdges)râ   r  r)  úshape-renderingr   rP  r  zurl(#colorMat))r  r  r¶  rž  zurl(#GRz_0))râ   r  r¶  z_1)zurl(#colorAdd))râ   r  rž  r¶  z_2))r�   r©   rS   ra   r\   r�   Úaveragerÿ   rþ   Úrangerª   r0   r€   r   )r<   r  rš  r›  ru  r�   Ú	avg_colorri  Útpointsr‘  r°  r±  r²  r³  Úx3Úy3Ú
rgba_colorÚxbÚybÚm1Úb1Úm2Úb2Údpaths                           r   r™  z"RendererSVG._draw_gouraud_triangle	  s5  € ð —‘ˆØ× Ò Ø $ˆDÔØ�L‰LØØð ô ð �N‰NØØ˜oÐ.Ø%Ø%Ø˜3ð ô  ð �J‰J�xÔ à�L‰LØØð ô ð �N‰NØØ Ð)ð3ð ô 4ð
 �J‰J�xÔ ä—J‘J˜v¨AÔ.ˆ	Ø�R‰=˜AÒàà×2Ñ2°5Ó9ˆØ ×*Ñ*¨6Ó2ˆà�‰�VÔÜ�q“ó &	)ˆAØ˜Q‘Z‰FˆB�Ø˜a !™e q™[Ñ)‰FˆB�Ø˜a !™e q™[Ñ)‰FˆB�Ø ™ˆJà�RŠxØ�Ø‘Ø�r’Ø�Ø‘à˜2‘g " r¡'Ñ*�Ø˜2 ™7‘^�Ø˜R‘x�[�Ø˜2 ™7‘^�Ø�c˜B‘h 2¨¡7Ñ+�Ø˜"‘W˜r‘\�à�L‰LØ Ø˜×)Ñ)¨!Ð,¨A¨a°¨UÐ3Ø.Ü# BÓ'Ô,<¸RÓ,@Ü# BÓ'Ô,<¸RÓ,@ð ô Bð �N‰NØØÜ#Ü")¨)Ó"4Ü$4°ZÀ±^Ó$Dñ%Fó Gð ô Hð �N‰NØØÜ#´7¸:Ó3FØ47ñ%9ó :ð ô ;ð �J‰JÐ'Ö(ðM&	)ðP 	�
‰
�6Ôð Ô'¨Ó+Ñ+¨CÑ/Ô2BÀ2Ó2FÑFˆØ�Ô)¨"Ó-Ñ-°Ñ3Ô6FÀrÓ6JÑJÑJˆØ�Ô'¨Ó+Ñ+¨cÑ1Ô4DÀRÓ4HÑHÈ4ÑOÑOˆà�‰ØØÜ# IÓ.Ø$'Ø'3ñ5ð 	ô 	6ð 	�‰ØØ"(Ø(+Ø+7Ø"2ñ4ð 	ô 	5ð 	�‰ØØØ% d×&7Ñ&7¸Ð%:¸#Ð>Ø'3ñ5ð 	ô 	6ð 	�‰ØØØ% d×&7Ñ&7¸Ð%:¸#Ð>Ø.Ø'3ñ5ð 	ô 	6ð 	�‰ØØØ% d×&7Ñ&7¸Ð%:¸#Ð>Ø.Ø'3ñ5ð 	ô 	6ð 	�
‰
�3Œà×Ò˜QÑÖr   c                 ó   —  | j                   j                  di | j                  |«      ¤Ž |j                  «       }t	        ||«      D ]  \  }}| j                  ||||«       Œ | j                   j                  d«       y )NrP  ro  )r�   rS   rH  ÚfrozenÚzipr™  r\   )r<   r  Útriangles_arrayÚcolors_arrayrþ   ÚtriÚcols          r   Údraw_gouraud_trianglesz"RendererSVG.draw_gouraud_triangles‹  sr   € àˆ�‰×ÑÑ: ×!5Ñ!5°bÓ!9Ò:Ø×$Ñ$Ó&ˆ	Ü˜O¨\Ó:ò 	A‰HˆC�Ø×'Ñ'¨¨C°°iÕ@ð	Aà�‰�‰˜Õr   c                  ó   — yre   rc   rd   s    r   Úoption_scale_imagezRendererSVG.option_scale_image“  ó   € àr   c                 ó    — | j                   dz  S )Nç      R@)rž   rd   s    r   Úget_image_magnificationz#RendererSVG.get_image_magnification—  s   € Ø�~‰~ Ñ$Ð$r   c           
      óæ  — |j                   d d \  }}|dk(  s|dk(  ry | j                  |«      }|r | j                  j                  d i |¤Ž |j	                  «       }	|	�| j                  j                  dd|	i¬«       i }
|j                  «       }t        j                  d   r�t        «       }t        j                  |«      j                  |d¬	«       |xs  | j                  d
|j                  «       «      }dt        j                  |j                  «       «      j!                  d«      z   |
d<   n”| j"                  €t%        d«      ‚| j"                  › dt'        | j(                  «      › d�}t*        j-                  d|«       t        j                  |«      j                  |«       |xs d| j                  d
|«      z   }||
d<   ||
d<   |€Œd|z  | j.                  z  }d|z  | j.                  z  }| j                  j1                  d
t3        ddd| ffg«      t5        |«      t5        | j6                  |z
  |z
   «      t5        |«      t5        |«      |
¬«       nà|j9                  «       }|dk7  rt5        |«      |
d<   t;        «       j=                  d|z  d|z  «      |z   t;        «       j?                  ||«      j=                  dd«      j?                  d| j6                  «      z   }t3        d|jA                  «       fg«      |
d<   d|
d<   | j                  j1                  d
t5        |«      t5        |«      |
¬«       |	�| j                  jC                  d«       |r| j                  jC                  d«       y y )!NrL  r   rP  rd  re  r   zsvg.image_inlineÚpng)rw   Úimagezdata:image/png;base64,
r_  zLCannot save image data to filesystem when writing SVG to an in-memory bufferz.imagez.pngz$Writing image file for inclusion: %sÚIm_r^   rÑ  )rk   )rG   rZ   rl   )rþ   r/   r  r˜   r™   rO   r  r*  r  rX  rn   rþ   z5image-rendering:crisp-edges;image-rendering:pixelatedrì   )r˜   r™   rO   ro  )"ÚshaperH  r�   rS   rh  Úget_gidrÒ   rñ   r   r   Ú	fromarrayÚsaverü   ÚgetvalueÚbase64Ú	b64encodera  r    rà   Únextr¤   Ú_logr‰   rž   ra   r|   r0   r™   r.  r   rk   rl   rÆ  r\   )r<   r  r/   r  Úimrþ   r  rF  r—  r–  rO   r
  ÚbufÚfilenameÚalphaÚflippeds                   r   Ú
draw_imagezRendererSVG.draw_imageš  sD  € ð �x‰x˜˜ˆ|‰ˆˆ1à�Š6�Q˜!’VØà×)Ñ)¨"Ó-ˆ
Ùð ˆD�K‰K×ÑÑ0 ZÒ0à�j‰j‹lˆØˆ?Ø�K‰K×Ñ˜c¨<¸Ð*=ÐÔ>àˆØ�j‰j‹lˆÜ�<‰<Ð*Ò+Ü“)ˆCÜ�O‰O˜BÓ×$Ñ$ S°Ð$Ô7ØÒ?˜Ÿ™ w°·±³Ó?ˆCà*Ü× Ñ  §¡£Ó0×7Ñ7¸Ó@ñAð �<Ò ð �}‰}Ð$Ü ð "Fó Gð GàŸ-™-˜¨¬t°D×4GÑ4GÓ/HÐ.IÈÐNˆHÜ�I‰IÐ<¸hÔGÜ�O‰O˜BÓ×$Ñ$ XÔ.ØÒA˜ §¡¨w¸Ó!AÑAˆCØ#+ˆF�<Ñ Øˆˆt‰àÐØ�q‘˜4Ÿ>™>Ñ)ˆAØ�q‘˜4Ÿ>™>Ñ)ˆAà�K‰K×ÑØÜ-Ø&¨°q¸1¸"°gÐ(>ð/@ó Aä" 1Ó%Ü" T§[¡[°1¡_°qÑ%8Ð#9Ó:Ü& qÓ)Ô2BÀ1Ó2EØð  õ ð —L‘L“NˆEØ˜Š|Ü$4°UÓ$;��yÑ!ô “
× Ñ   q¡¨#°©'Ó2Øñä“
ß‘˜1˜a“ß‘�s˜DÓ!ß‘˜3 §¡Ó,ñ-ð ô #6Ø˜GŸN™NÓ,Ð-Ð.ó#0ˆF�;Ñð,ð �7‰Oð �K‰K×ÑØÜ& qÓ)Ô2BÀ1Ó2EØð  ô ð
 ˆ?Ø�K‰K�O‰O˜CÔ ÙØ�K‰K�O‰O˜CÕ ð r   c           	      ór  — | j                   }|r©|j                  d«       |j                  «       D ]X  \  }\  }}| j                  |«      }| j	                  t        |dz  |«      d¬«      }|j                  d||t        dg«      ¬«       ŒZ |j                  d«       | j                  j                  |«       yy)	zn
        Emit definitions for not-yet-defined glyphs, and record them as having
        been defined.
        rë   é@   Fr  r  )rk   )g      �?)r^   râ   rþ   N)r�   rS   rM   Ú_adjust_char_idr!  r   ra   r|   r\   r­   rö   )r<   Úglyph_map_newr�   Úchar_idrp  Úcodesr$  s          r   Ú_update_glyph_map_defsz"RendererSVG._update_glyph_map_defsè  sÀ   € ð
 —‘ˆÙØ�L‰L˜Ô Ø.;×.AÑ.AÓ.Cò KÑ*�Ñ*˜( EØ×.Ñ.¨wÓ7�à ×.Ñ.Ü˜ B™¨Ó.¸ð /ó @�	à—‘Ø˜w¨)Ü1Ð3GÐ2HÓIð õ KðKð �J‰J�vÔØ�O‰O×"Ñ" =Õ1ð r   c                 ó&   — |j                  dd«      S )Nz%20r  r   )r<   rê  s     r   rè  zRendererSVG._adjust_char_idû  s   € Ø�‰˜u cÓ*Ð*r   c	           	      óÆ  — | j                   }	|	j                  |«       | j                  }
| j                  }t	        |j                  «       «      }|j                  «       }i }|dk7  r||d<   |j                  «       r|j                  «       n|j                  «       d   }|dk7  rt        |«      |d<   ||j                  z  }t        |«      t        d||ffd| ffd|| ffg«      d	œ}|	j                  d
|¬«       |sŠ|j                  |«      }|j                  |||
d¬«      }|\  }}}| j!                  |«       |D ]G  \  }}}}dd|› �i}|dk7  rt        |«      |d<   |dk7  rt        |«      |d<   |	j#                  d|¬«       ŒI nË|dk(  r|j%                  |||
d¬«      }n|j'                  |||
d¬«      }|\  }}}| j!                  |«       |D ]C  \  }}}}| j)                  |«      }|	j#                  dt        d||ffd|ffg«      dd|› �i¬«       ŒE |D ]7  \  }}t+        ||«      }| j-                  |d¬«      }|	j#                  d|¬«       Œ9 |	j/                  d
«       y )Nú#000000r  r  rG   r*  rl   rm   rk   ©rì   rþ   rP  r   T)Ú	glyph_mapÚreturn_new_glyphs_onlyre  rl  rX  r/   r  rn  ÚTeX)rþ   rO   Fr  r  rM  )r�   rU   r­   Ú
_text2pathr   r2  Úget_size_in_pointsr-  r.  r0   Ú
FONT_SCALEr€   r|   rS   Ú	_get_fontÚget_glyphs_with_fontrì  ra   Úget_glyphs_texÚget_glyphs_mathtextrè  r   r!  r\   ) r<   r  r/   r  r   ÚpropÚangleÚismathÚmtextr�   rñ  Ú	text2pathÚcolorÚfontsizerì   rã  Ú
font_scalerO   ÚfontÚ_glyphsÚ
glyph_inforé  ÚrectsÚglyph_idÚ	xpositionÚ	ypositionrk   rê  Úvertsrë  r  r$  s                                    r   Ú_draw_text_as_pathzRendererSVG._draw_text_as_pathþ  sÐ  € à—‘ˆà�‰�qÔà—O‘Oˆ	à—O‘Oˆ	Ü˜Ÿ
™
›Ó%ˆØ×*Ñ*Ó,ˆàˆØ�IÒØ!ˆE�&‰MØ"$×"5Ñ"5Ô"7�—‘”¸R¿Z¹Z»\È!¹_ˆØ�AŠ:Ü/°Ó6ˆE�)ÑØ 	× 4Ñ 4Ñ4ˆ
ä" 5Ó)Ü,Ø˜q !˜fÐ%Ø˜U˜F˜9Ð%Ø˜:¨
 {Ð3Ð4ð.6ó 7ñ
ˆð 	�‰�S ˆÔ(áØ×&Ñ& tÓ,ˆDØ×4Ñ4Ø�a 9ÀTð 5ó KˆGà/6Ñ,ˆJ˜ uØ×'Ñ'¨Ô6à9Cò 5Ñ5�˜) Y°Ø&¨!¨H¨:¨Ð7�Ø Ò#Ü"2°9Ó"=�F˜3‘KØ Ò#Ü"2°9Ó"=�F˜3‘KØ—‘˜u¨V�Õ4ñ5ð ˜ŠØ#×2Ñ2Ø˜! yÈð 3ó O‘ð $×7Ñ7Ø˜! yÈð 8ó O�à/6Ñ,ˆJ˜ uØ×'Ñ'¨Ô6à8Bò :Ñ4�˜ I¨uØ×.Ñ.¨wÓ7�Ø—‘ØÜ1Ø$ y°)Ð&<Ð=Ø  5 (Ð+ð3ó ð )¨A¨g¨Y¨-Ð8ð õ :ð:ð !&ò 4‘��uÜ˜E 5Ó)�Ø ×.Ñ.¨t¸eÐ.ÓD�	Ø—‘˜v¨�Õ3ð4ð
 	�
‰
�3�r   c	                 ó6  ‡'‡(— | j                   }	t        |j                  «       «      }
i }|
dk7  r|
|d<   |j                  «       r|j	                  «       n|j                  «       d   }|dk7  rt        |«      |d<   |�s¶i }g }|j                  «       dk7  r|j                  |j                  «       «       |j                  «       dk7  r|j                  |j                  «       «       t        j                  |j                  «          }|dk7  r|j                  |› «       d„ Š(ˆ(fd	„Š'ˆ'fd
„}|j                  t        |j                  «       «      › d�dj                  t        j!                   ||«      «      «      g«       dj                  |«      |d<   |j#                  «       dk7  r|j#                  «       |d<   t%        |«      |d<   |�r<|dk(  s|j'                  «       dk(  �r#|j)                  «       }|j+                  |j-                  «       «      \  }}| j.                  |z
  }t1        j2                  |«      }t1        j4                  t1        j6                  |«      t1        j8                  |«      g«      }t1        j:                  |||z
  ||z
  g«      }|||d   z  z   }|||d   z  z   }ddddœ}||j=                  «          |d<   t        |«      |d<   t        |«      |d<   t%        |«      |d<   t?        d| ||ffg«      |d<   nt?        d||ffd| ffg«      |d<   |	jA                  d||¬«       y |	jC                  |«       | jD                  jF                  jI                  |d|«      \  }}}}}|	jK                  d t%        |«      t?        d||ffd| ffg«      ¬!«       |	jK                  d«       i }|D �]1  \  }}} }!}"t        jL                  |«      }#g }|#jN                  dk7  r|j                  |#jN                  «       |#jP                  dk7  r|j                  |#jP                  «       |#jR                  dk7  r|j                  |#jR                  › «       |j                  t        |«      › d�|#jT                  ›g«       ddj                  |«      i}|#jV                  dk7  r|#jV                  |d<   t%        |«      }| d"k(  rd#} |jY                  |g «      j                  |!|" | f«       �Œ4 |j[                  «       D ]©  \  }}$|$j]                  «        t_        |$D ���%ch c]  \  }}}%|’Œ
 c}%}}«      dk(  rta        |$d   d   «      }&ndj                  d$„ |$D «       «      }&|dj                  d%„ |$D «       «      |&d&œ}|	jA                  d'd(j                  d)„ |$D «       «      |¬«       Œ« |	jc                  d«       |D ]E  \  }}}}|	jA                  d*t        |«      t        | dz
  «      t        |«      t        |«      ¬+«       ŒG |	jc                  d «       y c c}%}}w ),Nrï  r  r  rG   r*  Únormali�  c                 ó   — | dv rdS | S )N)Úsansz
sans serifz
sans-serifrc   )r•   s    r   Ú_normalize_sansz7RendererSVG._draw_text_as_text.<locals>._normalize_sans\  s   € Ø'+Ð/EÑ'E�|ÐOÈ4ÐOr   c              3   ó¦   •K  —  ‰| «      } | t         j                  v r.t         j                  j                  | «      D ]  } ‰|«      –— Œ | –— y ­wrp   )ÚfmÚfont_family_aliasesÚFontManagerÚ_expand_aliases)Úfnr•   r  s     €r   Ú_expand_family_entryz<RendererSVG._draw_text_as_text.<locals>._expand_family_entry_  sQ   øè ø€ Ù$ RÓ(�àœ×/Ñ/Ñ/ô !#§¡× >Ñ >¸rÓ Bò 4˜Ù-¨dÓ3Ó3ð4ð “ùs   ƒAAc                 ó¤   •— | j                  «       D ��cg c].  } ‰|«      D ]!  }|t        j                  v r|n
t        |«      ‘Œ# Œ0 c}}S c c}}w rp   )Ú
get_familyr  r  Úrepr)rû  Úentryr•   r  s      €r   Ú_get_all_quoted_namesz=RendererSVG._draw_text_as_text.<locals>._get_all_quoted_namesk  s`   ø€ ð &*§_¡_Ó%6÷AØ!Ù$8¸Ó$?òAà ð !%¬×(>Ñ(>Ñ >™ÄDÈÃJÑNð AÐNó Að Aùó As   •3AÚpxz, rH   r  zfont-stretchrì   r   ÚanchorrS   r\   Úmiddle)ÚleftÚrightÚcenterztext-anchorr/   r  rm   rþ   rl   rW   r   r  rP  rð  é    é    c              3   ó8   K  — | ]  }t        |d    «      –— Œ y­w)rG   N)r‡   ©rr   Úcs     r   rs   z1RendererSVG._draw_text_as_text.<locals>.<genexpr>Ì  s   è ø€ Ò!;°¤# a¨¡d§)Ñ!;ùó   ‚c              3   ó8   K  — | ]  }t        |d    «      –— Œ y­w)r   Nrq   r&  s     r   rs   z1RendererSVG._draw_text_as_text.<locals>.<genexpr>Ð  s   è ø€ Ò!H¸QÔ"2°1°Q±4×"8Ñ!Hùr(  )rì   r/   r  ÚtspanrA   c              3   ó8   K  — | ]  }t        |d    «      –— Œ y­w)rL  N)Úchrr&  s     r   rs   z1RendererSVG._draw_text_as_text.<locals>.<genexpr>Ö  s   è ø€ Ò5¨!œC  !¡ŸIÑ5ùr(  r  rN  )2r�   r   r2  r-  r.  r0   Ú	get_stylerK   Úget_variantr  Úweight_dictÚ
get_weightÚextendÚget_sizerB   r¬   ÚfromkeysÚget_stretchr€   Úget_rotation_modeÚget_transformrþ   Úget_unitless_positionr™   r�   Údeg2radÚarrayÚsinÚcosÚdotÚget_har|   ra   rU   rô  Úmathtext_parserÚparserS   ÚttfFontPropertyrì   ÚvariantÚweightr•   ÚstretchÚ
setdefaultrM   ÚsortrL   r‡   r\   ))r<   r  r/   r  r   rû  rü  rý  rþ  r�   r   rì   rã  rO   Ú
font_partsrB  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ÚtÚysr  r  s)                                          @@r   Ú_draw_text_as_textzRendererSVG._draw_text_as_textD  sê  ù€ Ø—‘ˆä˜Ÿ
™
›Ó%ˆØˆØ�IÒØ!ˆE�&‰Mà"$×"5Ñ"5Ô"7�—‘”¸R¿Z¹Z»\È!¹_ˆØ�AŠ:Ü/°Ó6ˆE�)ÑâØˆFàˆJØ�~‰~Ó 8Ò+Ø×!Ñ! $§.¡.Ó"2Ô3Ø×ÑÓ! XÒ-Ø×!Ñ! $×"2Ñ"2Ó"4Ô5Ü—^‘^ D§O¡OÓ$5Ñ6ˆFØ˜Š}Ø×!Ñ! V HÔ.òPô
ôAð ×ÑÜ# D§M¡M£OÓ4Ð5°RÐ8à—	‘	œ$Ÿ-™-Ñ(=¸dÓ(CÓDÓEðô ð
  ŸH™H ZÓ0ˆE�&‰MØ×ÑÓ! XÒ-Ø(,×(8Ñ(8Ó(:��nÑ%Ü+¨EÓ2ˆF�7‰Oâ˜% 1š*¨×(?Ñ(?Ó(AÀXÓ(Mð
 "×/Ñ/Ó1�	Ø"×,Ñ,¨U×-HÑ-HÓ-JÓK‘��BØ—[‘[ 2Ñ%�ô
 ŸJ™J uÓ-�	ÜŸ8™8¤R§V¡V¨IÓ%6¼¿¹¸yÓ8IÐ$JÓK�ÜŸ6™6 (¨a°"©f¸¸B¹Ð,@ÓA�Ø˜( X¨a¡[Ñ0Ñ0�Ø˜( X¨a¡[Ñ0Ñ0�à)0¸5Ø+3ñ!5�à'4°U·\±\³^Ñ'D��mÑ$ä.¨rÓ2��s‘Ü.¨rÓ2��s‘Ü"/°Ó"6��w‘Ü&9Ø  ¨¨BÐ/Ð0ð;2ó '3��{Ò#ô ':Ø  1 a &Ð)Ø  ˜yÐ)ð;+ó ',��{Ñ#ð �N‰N˜6 1¨VˆNÕ4ð �N‰N˜1Ôð —‘×/Ñ/×5Ñ5°a¸¸TÓBñ 2ˆE�6˜7 F¨Eð
 �L‰L˜Ü,¨UÓ3Ü#6Ø)¨A¨q¨6Ð2Ø&¨%¨¨	Ð2ð84ó $5ð ô ð �L‰L˜Ô ð ˆEØ9?ó MÑ5��h ¨°Ü×*Ñ*¨4Ó0�Ø�
Ø—;‘; (Ò*Ø×%Ñ% e§k¡kÔ2Ø—=‘= HÒ,Ø×%Ñ% e§m¡mÔ4Ø—<‘< 3Ò&Ø×%Ñ%¨¯©¨Ô8Ø×!Ñ!Ü'¨Ó1Ð2°"Ð5Ø—z‘z�nð#ô ð   §¡¨*Ó!5Ð6�Ø—=‘= HÒ,Ø,1¯M©M�E˜.Ñ)Ü% eÓ,�Ø˜b’=Ø"�GØ× Ñ  ¨Ó+×2Ñ2°E¸E¸6À7Ð3KÖLð'Mð* !&§¡£ò #‘��uØ—
‘
”ä¨×/Ð/™g˜a  AšÔ/Ó0°AÒ5Ü˜U 1™X a™[Ó)‘BàŸ™Ñ!;°UÔ!;Ó;�Bð #ØŸ™Ñ!HÀ%Ô!HÓHØñ�ð —‘ØØ—G‘GÑ5¨uÔ5Ó5Ø!ð õ #ð#ð& �J‰J�vÔà',ò Ñ#��1�e˜VØ—‘ØÜ& qÓ)Ü&¨ r¨!¡tÓ,Ü*¨5Ó1Ü+¨FÓ3ð õ ðð �J‰J�s�Oùô7 0s   ÔXc	           
      óú  — | j                  |«      }	|	r | j                  j                  di |	¤Ž |j                  «       �,| j                  j                  dd|j                  «       i«       t        j
                  d   dk(  r| j                  ||||||||«       n| j                  ||||||||«       |j                  «       �| j                  j                  d«       |	r| j                  j                  d«       y y )NrP  rd  re  zsvg.fonttyper  ro  )	rH  r�   rS   rh  rÒ   rñ   r  rV  r\   )
r<   r  r/   r  r   rû  rü  rý  rþ  r—  s
             r   Ú	draw_textzRendererSVG.draw_textæ  sØ   € ð ×)Ñ)¨"Ó-ˆ
Ùð ˆD�K‰K×ÑÑ0 ZÒ0à�:‰:‹<Ð#Ø�K‰K×Ñ˜c L°"·*±*³,Ð#?Ô@ä�<‰<˜Ñ'¨6Ò1Ø×#Ñ# B¨¨1¨a°°u¸fÀeÕLà×#Ñ# B¨¨1¨a°°u¸fÀeÔLà�:‰:‹<Ð#Ø�K‰K�O‰O˜CÔ áØ�K‰K�O‰O˜CÕ ð r   c                  ó   — yre   rc   rd   s    r   ÚflipyzRendererSVG.flipyý  rÏ  r   c                 ó2   — | j                   | j                  fS rp   )r˜   r™   rd   s    r   Úget_canvas_width_heightz#RendererSVG.get_canvas_width_height  s   € à�z‰z˜4Ÿ;™;Ð&Ð&r   c                 ó<   — | j                   j                  |||«      S rp   )rô  Úget_text_width_height_descent)r<   r   rû  rý  s       r   r^  z)RendererSVG.get_text_width_height_descent  s   € à�‰×<Ñ<¸QÀÀfÓMÐMr   )Nr  rp   )NNNN)FN)%rf   rg   rh   r>   r¹   r°   r±   rü   rÿ   r  r¸   r;  r=  rH  r·   rR  rT  rV  r!  rj  rw  r|  rœ  r™  rÌ  rÎ  rÒ  rå  rì  rè  r  rV  rX  rZ  r\  r^  Ú__classcell__©rµ   s   @r   r’   r’   !  sÕ   ø„ ð$$Ø!ö$$òLòy1òvò-òMòò$*òX+òZ@ò-ò.ó.Bòò9ð GKØ!óCó!ð" GKó%ôN8&òt?ò@òDòò%óL!ò\2ò&+óDóL`óD!ò.ò'ö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
                  j                  «       \  }}|dz  |dz  }	}t        | j
                  |||t        ||	|||¬«      |¬«      }
| j
                  j                  |
«       |
j                  «        ddd«       y# 1 sw Y   yxY w)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_
        rF  zutf-8)Úencodingr  )rž   r“   )rd  N)r   Úopen_file_cmÚfile_requires_unicodeÚcodecsÚ	getwriterÚfigureÚdpiÚget_size_inchesr   r’   Údrawr¹   )r<   râ  rd  r“   Úfhrl  r˜   r™   rF  r  Úrenderers              r   Ú	print_svgzFigureCanvasSVG.print_svg  sÜ   € ô@ ×Ñ ¨#¸Ô@ð 	 ÀBÜ×.Ñ.¨rÔ2Ø.”V×%Ñ% gÓ.¨rÓ2�Ø—+‘+—/‘/ˆCØ ˆD�K‰KŒOØ ŸK™K×7Ñ7Ó9‰MˆE�6Ø˜2‘:˜v¨™{ˆqˆAÜ(Ø—‘˜U F¨CÜ˜A˜q "°¸hÔGØ$7ô9ˆHð �K‰K×Ñ˜XÔ&Ø×ÑÔ÷	 ÷ 	 ñ 	 ús   ™CC5Ã5C>c                 óì   — t        j                  |d«      5 }t        j                  d|¬«      5 } | j                  |fi |¤Žcd d d «       cd d d «       S # 1 sw Y   nxY wd d d «       y # 1 sw Y   y xY w)NÚwbrF  )ÚmodeÚfileobj)r   rg  ÚgzipÚGzipFilerq  )r<   râ  Úkwargsro  Ú
gzipwriters        r   Ú
print_svgzzFigureCanvasSVG.print_svgz>  sg   € Ü×Ñ ¨$Ó/ð 	8°2Ü—‘ 3°Ô3ð	8Ø7AØ!�4—>‘> *Ñ7°Ñ7÷	8÷ 	8÷ 	8ó 	8ú÷ 	8÷ 	8ñ 	8ús"   —A*¯AÁ	A*ÁA	ÁA*Á*A3c                  ó   — y)Nr–   rc   rd   s    r   Úget_default_filetypez$FigureCanvasSVG.get_default_filetypeC  s   € Ør   c                 óT   •— | j                   j                  «        t        ‰| �  «       S rp   )rk  Údraw_without_renderingr«   rn  )r<   rµ   s    €r   rn  zFigureCanvasSVG.drawF  s   ø€ Ø�‰×*Ñ*Ô,Ü‰w‰|‹~Ðr   )
rf   rg   rh   Ú	filetypesÚ	fixed_dpirq  rz  r|  rn  r_  r`  s   @r   rb  rb  
  s6   ø„ Ø2Ø3ñ5€Ið €Ià9=Èô , ò\8ò
÷ð r   rb  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y)Ú_BackendSVGN)rf   rg   rh   rÒ   rÓ   Úbackend_versionrb  ÚFigureCanvasrc   r   r   r‚  r‚  U  s   „ à—o‘o€OØ"�Lr   r‚  )<rÜ  ri  rÕ   rv  rô   Úior   r¢   ÚloggingrØ   Úrerò   Únumpyr�   ÚPILr   Ú
matplotlibrÒ   r   r   r  Úmatplotlib.backend_basesr   r   r	   r
   Ú!matplotlib.backends.backend_mixedr   Úmatplotlib.colorsr   Úmatplotlib.datesr   Úmatplotlib.pathr   r   Úmatplotlib.transformsr   r   Ú	getLoggerrf   rß  r   Úcompiler!   r#   r'   r)   r0   r2   r|   r€   r5  r‹   r�   r’   rb  ÚFigureManagerSVGr®   Úexportr‚  rc   r   r   ú<module>r•     s  ðÛ Û Û Û Û Ý Û Û Û 	Û 	Û ã Ý ã ß 0÷Bó Bå ?Ý %Ý  Ý  Ý ß 8ð €w×Ñ˜Ó"€òRð !�b—j‘j Ó+Ð ò,ò
ò+ò,÷Mñ Mò`ò=ð &¨vÀÑH€ò*ò@ôfN�,ô fNôR>Ð&ô >ðB %Ð ð€	ð 
‡�ô#�(ó #ó ñ#r   