§
    èƒñjAF  ã                  óä   — d Z ddlmZ ddlmZmZmZ ddlmZ ddl	Z	ddl
Z
ddlm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mZmZmZmZ d e
j        ¦   «         v Zd„ Z G d„ d¦  «        Z dS )z* Matplotlib drawing backend for schemdraw é    )Úannotations)ÚOptionalÚSequenceÚBinaryIO)ÚBytesION)Úfont_managerÚ
transforms)ÚArcÚ	RectangleÚ	PathPatchÚPathé   )Úutil)ÚCapstyleÚ	JoinstyleÚ	LinestyleÚBBoxÚXYÚinlinec                ó   — | dk    rdS | S )zC Matplotlib uses 'projecting' rather than 'square' for some reason ÚsquareÚ
projecting© )Úcapstyles    úU/data/share/cad/hardware/.venv/lib/python3.11/site-packages/schemdraw/backends/mpl.pyÚfix_capstyler      s   € à�8ÒÐØˆ|Ø€Oó    c                  ó  ‡ — e Zd ZdZd„ Zddd„Zded„Zdfd„Zd„ Z	 	 	 dgdhd"„Z		 	 	 	 	 didjd1„Z
	 	 	 dkdld:„Z	 	 dmdnd=„Z	 	 dodpdD„Z	 	 	 	 dqdrdH„Z	 	 	 	 	 	 dsdtdK„Z	 	 	 	 dudvdR„Z	 dwdxdW„Zdydzd\„Zd]„ Zd{d_„Zded`„Zˆ fda„Zdb„ Zdc„ Zˆ xZS )|ÚFigureaG   Schemdraw figure on Matplotlib figure

        Args:
            bbox: Coordinate bounding box for drawing, used to
                override Matplotlib's autoscale
            inches_per_unit: Scale for the drawing
            showbbox: Draw bounding box and margin box
            ax: Existing Matplotlib axis to draw on
    c                ó˜  — |                      dd¦  «        | _        |                      dd ¦  «        | _        |                      dd¦  «        | _        |                      d¦  «        r4|                      d¦  «        | _        | j        j        | _        d| _        �nt          rt          j
        ¦   «         | _        nt          j        ¦   «         | _        | j                             ddd	d	¬
¦  «         | j                             ¦   «         | _        d| _        | j                             d¦  «         | j        j                             ¦   «                              d¦  «         | j        j                             ¦   «                              d¦  «         | j                             d¦  «         |                      dd¦  «        dz   | _        d S )NÚshowbboxFÚbboxÚinches_per_unitç      à?ÚaxTg        g      ð?)ÚleftÚbottomÚrightÚtopÚequalÚmargingš™™™™™¹?g¸…ëQ¸ž?)Úgetr!   r"   r#   r%   ÚfigureÚfigÚuserfigr   Úpltr   Úsubplots_adjustÚadd_subplotÚ
set_aspectÚaxesÚ	get_xaxisÚset_visibleÚ	get_yaxisÚset_frame_onr+   )ÚselfÚkwargss     r   Ú__init__zFigure.__init__$   s�  € ØŸ
š
 :¨uÑ5Ô5ˆŒØ—J’J˜v tÑ,Ô,ˆŒ	Ø%ŸzšzÐ*;¸RÑ@Ô@ˆÔØ�:Š:�dÑÔð 	(Ø—j’j Ñ&Ô&ˆDŒGØ”w”~ˆDŒHØˆDŒL‰Lõ ð (Ýœ:™<œ<�”�åœ:™<œ<�”ØŒH×$Ò$ØØØØð	 %ñ ô ð ð
 ”h×*Ò*Ñ,Ô,ˆDŒGØ ˆDŒLØŒG×Ò˜wÑ'Ô'Ð'ØŒGŒL×"Ò"Ñ$Ô$×0Ò0°Ñ7Ô7Ð7ØŒGŒL×"Ò"Ñ$Ô$×0Ò0°Ñ7Ô7Ð7ØŒG× Ò  Ñ'Ô'Ð'ð —j’j ¨2Ñ.Ô.°Ñ4ˆŒˆˆr   r"   r   c                ó   — || _         dS )z6 Set bounding box, to override Matplotlib's autoscale N)r"   )r9   r"   s     r   Úset_bboxzFigure.set_bboxD   s   € àˆŒ	ˆ	ˆ	r   ÚreturnÚNonec                ó˜   — t           sB|                      ¦   «          | j                             ¦   «          t	          j        ¦   «          dS dS )z¢ Display figure in interactive window. Does nothing
            when running inline (ie Jupyter) which shows the
            figure using _repr_ methods.
        N)r   Úgetfigr.   Úshowr0   ©r9   s    r   rB   zFigure.showH   sA   € õ
 ð 	Ø�KŠK‰MŒMˆMØŒH�MŠM‰OŒOˆOÝŒH‰JŒJˆJˆJˆJð	ð 	r   ÚcolorÚstrc                ó:   — | j                              |¦  «         dS )z! Set background color of drawing N)r.   Úset_facecolor)r9   rD   s     r   ÚbgcolorzFigure.bgcolorR   s   € àŒ×Ò˜uÑ%Ô%Ð%Ð%Ð%r   c                óò   — |rtt          |j        |j        ft          |j        |j        z
  ¦  «        t          |j        |j        z
  ¦  «        | j        j        ¬¦  «        }|                     |¦  «         dS dS )z# Set clipping region for the patch )Ú	transformN)	r   ÚxminÚymaxÚabsÚxmaxÚyminr%   Ú	transDataÚset_clip_path)r9   ÚpatchÚclipÚcliprects       r   ÚaddclipzFigure.addclipV   s~   € àð 	*Ý  $¤)¨T¬YÐ!7Ý!$ T¤Y¨t¬yÑ%8Ñ!9Ô!9½3¸t¼yÈÌÑ?RÑ;SÔ;SØ+/¬7Ô+<ð>ñ >ô >ˆHð ×Ò Ñ)Ô)Ð)Ð)Ð)ð		*ð 	*r   Úblackú-r   NÚroundÚxÚfloatÚyÚlsr   ÚlwÚfillúOptional[str]r   r   Ú	joinstyler   rS   úOptional[BBox]ÚzorderÚintc                ó  — | j                              |||
|||t          |¦  «        |¬¦  «        \  }|                      ||	¦  «         |r;| j                              ||||
dz
  ¬¦  «        \  }|                      ||	¦  «         dS dS )z Plot a path )rb   rD   r\   r]   Úsolid_capstyleÚsolid_joinstyleé   )rD   rb   N)r%   Úplotr   rU   r^   )r9   rY   r[   rD   r\   r]   r^   r   r`   rS   rb   Úps               r   rh   zFigure.plot^   s�   € ð ŒW�\Š\˜!˜Q v°U¸rÀbÝ)5°hÑ)?Ô)?Ø*3ð ñ 5ô 5‰ˆð 	�Š�Q˜ÑÔÐØð 	"Ø”—’˜a ¨$°v¸a±x�Ñ@Ô@‰BˆAØ�LŠL˜˜DÑ!Ô!Ð!Ð!Ð!ð	"ð 	"r   é   ú
sans-serifr   ÚcenterÚanchoré   ÚsÚfontsizeÚ
fontfamilyÚmathfontÚrotationÚhalignÚvalignÚrotation_modec                ó  — |
dk    rdn|
}
|                      d¦  «        s|                      d¦  «        r†|d„ t          j        j        D ¦   «         vrt          j                             |¦  «         d„ t          j        j        D ¦   «                              |¦  «        }t          j        j        |         j        }| j                             |||| j        j	        ||||d|||	|
|d¬	¦  «        }|  
                    ||¦  «         d
S )z Add text to the figure ÚbaseÚbaselinez.ttfÚotfc                ó   — g | ]	}|j         ‘Œ
S r   ©Úfname©Ú.0Úfs     r   ú
<listcomp>zFigure.text.<locals>.<listcomp>r   s   € Ð!TÐ!TÐ!T¨a !¤'Ð!TÐ!TÐ!Tr   c                ó   — g | ]	}|j         ‘Œ
S r   r|   r~   s     r   r�   zFigure.text.<locals>.<listcomp>t   s   € ÐEÐEÐE˜q�1”7ÐEÐEÐEr   rg   F)rJ   rD   rp   rq   Úmath_fontfamilyÚlinespacingrs   rv   ÚhorizontalalignmentÚverticalalignmentrb   Úclip_onN)Úendswithr   ÚfontManagerÚttflistÚaddfontÚindexÚnamer%   ÚtextrP   rU   )r9   ro   rY   r[   rD   rp   rq   rr   rs   rt   ru   rv   rS   rb   ÚidxÚts                   r   rŽ   zFigure.textj   s  € ð  &¨Ò/Ð/��°VˆØ×Ò˜vÑ&Ô&ð 	D¨*×*=Ò*=¸eÑ*DÔ*Dð 	DØÐ!TÐ!Tµ<Ô3KÔ3SÐ!TÑ!TÔ!TÐTÐTÝÔ(×0Ò0°Ñ<Ô<Ð<ØEÐE¥LÔ$<Ô$DÐEÑEÔE×KÒKÈJÑWÔWˆCÝ%Ô1Ô9¸#Ô>ÔCˆJàŒG�LŠL˜˜A˜q¨D¬GÔ,=ÀUØ"*°zØ)1¸qØ"*¸-Ø-3ÀvØ &°ð ñ 7ô 7ˆð 	�Š�Q˜ÑÔÐÐÐr   TFrg   ÚvertsúSequence[XY]ÚclosedÚboolÚhatchc                óÎ   — |rdnd}t          j        |||||du|||t          |¦  «        |	|¬¦  «        }| j                             |¦  «         |                      ||
¦  «         dS )z Draw a polynomial z///////N)
r“   ÚecÚfcr^   r]   r\   r•   r   r`   rb   )r0   ÚPolygonr   r%   Ú	add_patchrU   )r9   r‘   r“   rD   r^   r]   r\   r•   r   r`   rS   rb   Úhri   s                 r   ÚpolyzFigure.poly   s€   € ð Ð(ˆIˆI DˆÝŒK˜ f°Ø d°$Ð&6Ø "¨A½ÀXÑ8NÔ8NØ"+°Fð<ñ <ô <ˆð 	Œ×Ò˜!ÑÔÐØ�Š�Q˜ÑÔÐÐÐr   r   Úradiusc	           
     ó¢   — t          j        |||||du|||¬¦  «        }	| j                             |	¦  «         |                      |	|¦  «         dS )z Draw a circle N)Úxyr�   r—   r˜   r^   r]   r\   rb   )r0   ÚCircler%   rš   rU   )
r9   rl   r�   rD   r^   r]   r\   rS   rb   Úcircs
             r   ÚcirclezFigure.circle‹   sc   € õ Œz˜V¨F°uÀØ#¨4Ð/°B¸2ÀfðNñ Nô NˆàŒ×Ò˜$ÑÔÐØ�Š�T˜4Ñ Ô Ð Ð Ð r   ç333333Ã?ç      Ð?rŸ   ÚthetaÚ
arrowwidthÚarrowlengthc	           	     óÈ  — |dz  t          j        t          j        |¦  «        ¦  «        z  }	|dz  t          j        t          j        |¦  «        ¦  «        z  }
|\  }}t	          j        ||f¦  «        }t	          j        ||	z
  ||
z
  f¦  «        }t          j        |	dz  |
dz  z   ¦  «        }t	          j        ||z
  |dz  f¦  «                             |¦  «        |z   }t	          j        ||z
  | dz  f¦  «                             |¦  «        |z   }t          j	        |||fdd||du||¬¦  «        }| j
                             |¦  «         |                      ||¦  «         dS )z Draw an arrowhead r   TÚnoneN)r“   r—   r˜   r^   r]   rb   )ÚmathÚcosÚradiansÚsinr   ÚPointÚsqrtÚrotater0   r™   r%   rš   rU   )r9   rŸ   r¥   r¦   r§   rD   r]   rS   rb   ÚdxÚdyrY   r[   ÚheadÚtailÚfullenÚfin1Úfin2ri   s                      r   ÚarrowzFigure.arrow“   sd  € ð ˜‰]�TœX¥d¤l°5Ñ&9Ô&9Ñ:Ô:Ñ:ˆØ˜‰]�TœX¥d¤l°5Ñ&9Ô&9Ñ:Ô:Ñ:ˆØ‰ˆˆ1ÝŒz˜1˜a˜&Ñ!Ô!ˆÝŒz˜1˜R™4  2¡˜,Ñ'Ô'ˆÝ”˜2˜q™5 2 q¡5™=Ñ)Ô)ˆõ Œz˜6 KÑ/°¸A±Ð>Ñ?Ô?×FÒFÀuÑMÔMÐPTÑTˆÝŒz˜6 KÑ/°*°¸Q±Ð?Ñ@Ô@×GÒGÈÑNÔNÐQUÑUˆåŒK˜˜t TÐ*°4¸FØ  u°DÐ'8Ø fð.ñ .ô .ˆð 	Œ×Ò˜!ÑÔÐØ�Š�Q˜ÑÔÐÐÐr   ri   úSequence[util.Point]r¸   c           
     ó  — d„ |D ¦   «         }|��`d|v r¬t          j        |d         j        |d         j        z
  |d         j        |d         j        z
  ¦  «        }t	          j        |d         j        t          j        |¦  «        |z  dz  z
  |d         j        t          j        |¦  «        |z  dz  z
  f¦  «        |d<   d|v r¬t          j        |d         j        |d	         j        z
  |d         j        |d	         j        z
  ¦  «        }t	          j        |d         j        t          j        |¦  «        |z  dz  z
  |d         j        t          j        |¦  «        |z  dz  z
  f¦  «        |d<   t          |¦  «        d
k    r/t          j
        t          j        t          j        t          j        g}n#t          j
        t          j        t          j        g}t          t          ||¦  «        d|||t          |¦  «        | j        j        ¬¦  «        }| j                             |¦  «         |                      ||
¦  «         |��Gd|v rd|d         |d         z
  }t          j        t          j        |j        |j        ¦  «        ¦  «        }|                      |d         |||	||¬¦  «         n:|                     d¦  «        r%|                      |d         |	dz  ||d|
|¬¦  «         d|v re|d         |d	         z
  }t          j        t          j        |j        |j        ¦  «        ¦  «        }|                      |d         |||	||¬¦  «         dS |                     d¦  «        r)|                      |d         |	dz  ||d|
|¬¦  «         dS dS dS )z" Draw a cubic or quadratic bezier c                ó   — g | ]}|‘ŒS r   r   )r   Úp0s     r   r�   z!Figure.bezier.<locals>.<listcomp>±   s   € Ð"Ð"Ð"˜"�2Ð"Ð"Ð"r   Nú<r   rg   r   ú>éÿÿÿÿéþÿÿÿé   r©   )r˜   r—   r\   r]   r   rJ   )r§   r¦   rD   rb   Úo)r�   rD   r^   r]   rS   rb   )rª   Úatan2r[   rY   r   r®   r«   r­   Úlenr   ÚMOVETOÚCURVE4ÚCURVE3r   r   r%   rP   rš   rU   Údegreesr¸   Ú
startswithr¢   rˆ   )r9   ri   rD   r]   r\   r   rb   r¸   r§   r¦   rS   ÚlpointsÚth1Úth2ÚcodesÚcurveÚdeltar¥   s                     r   ÚbezierzFigure.bezierª   s†  € ð #Ð" Ð"Ñ"Ô"ˆØÑØ�eˆ|ˆ|Ý”j  1¤¤¨!¨A¬$¬&¡°!°A´$´&¸1¸Q¼4¼6±/ÑBÔB�Ý!œZ¨¨1¬¬µ$´(¸3±-´-À+Ñ2MÈaÑ2OÑ)OØ)*¨1¬¬µ$´(¸3±-´-À+Ñ2MÈaÑ2OÑ)Oð)Qñ Rô R�˜‘
à�eˆ|ˆ|Ý”j  2¤¤¨1¨R¬5¬7Ñ!2°A°b´E´G¸aÀ¼e¼gÑ4EÑFÔF�Ý"œj¨!¨B¬%¬'µD´H¸S±M´MÀKÑ4OÐPQÑ4QÑ*QØ*+¨B¬%¬'µD´H¸S±M´MÀKÑ4OÐPQÑ4QÑ*Qð*Sñ Tô T�˜‘õ ˆq‰6Œ6�QŠ;ˆ;Ý”[¥$¤+­t¬{½D¼KÐHˆEˆEå”[¥$¤+­t¬{Ð;ˆEÝ�$˜w¨Ñ.Ô.Ø#¨°"¸Ý#/°Ñ#9Ô#9Ø$(¤GÔ$5ð7ñ 7ô 7ˆð 	Œ×Ò˜%Ñ Ô Ð Ø�Š�U˜DÑ!Ô!Ð!àÑØ�eˆ|ˆ|Ø˜!œ˜q œt™�Ýœ¥T¤Z°´¸¼Ñ%AÔ%AÑBÔB�Ø—
’
˜1˜Qœ4 °KØ&0¸Àfð ñ Nô Nð Nð Nà×!Ò! #Ñ&Ô&ð 6Ø—’˜A˜aœD¨°A©¸UÈÐSTØ!%¨fð ñ 6ô 6ð 6ð �eˆ|ˆ|Ø˜"œ  "¤™�Ýœ¥T¤Z°´¸¼Ñ%AÔ%AÑBÔB�Ø—
’
˜1˜Rœ5 %°[Ø&0¸Àfð ñ Nô Nð Nð Nð Nà—’ Ñ$Ô$ð 6Ø—’˜A˜bœE¨*°Q©,¸eÈ%ÐTUØ!%¨fð ñ 6ô 6ð 6ð 6ð 6ð! Ðð6ð 6r   ÚpathúSequence[XY | str]c
                ó–  — t           j        gt           j        t           j        t           j        gt           j        t           j        gt           j        gt           j        gdœ}
d„ |D ¦   «         }d„ |D ¦   «         }g }|D ]6}|                     |
                     |t           j        g¦  «        ¦  «         Œ7|d         dk    r|                     d¦  «         t          t          ||¦  «        |€dn|||||d ut          |¦  «        ||| j        j        ¬¦
  «
        }| j                             |¦  «         |                      ||	¦  «         d S )	N)ÚMÚCÚQÚLÚZc                ó<   — g | ]}t          |t          ¦  «        °|‘ŒS r   ©Ú
isinstancerE   ©r   ri   s     r   r�   zFigure.path.<locals>.<listcomp>é   s'   € Ð<Ð<Ð<˜­°AµsÑ);Ô);Ð<�!Ð<Ð<Ð<r   c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS r   rÚ   rÜ   s     r   r�   zFigure.path.<locals>.<listcomp>ê   s'   € Ð;Ð;Ð;˜1­
°1µcÑ(:Ô(:Ð;�QÐ;Ð;Ð;r   r¿   rØ   )r   r   r©   )	r˜   r—   r\   r]   r^   r   r`   rb   rJ   )r   rÅ   rÆ   rÇ   ÚLINETOÚ	CLOSEPOLYÚextendr,   Úappendr   r   r%   rP   rš   rU   )r9   rÑ   rD   r]   r\   r^   r   r`   rb   rS   ÚCODESÚpointsÚstrcodesrÍ   ro   rÎ   s                   r   rÑ   zFigure.pathÚ   sK  € õ ”+�Ý”+�tœ{­D¬KÐ8Ý”+�tœ{Ð+Ý”+�Ý”.Ð!ð#ð #ˆð =Ð<˜TÐ<Ñ<Ô<ˆØ;Ð; Ð;Ñ;Ô;ˆØˆØð 	6ð 	6ˆAØ�LŠL˜Ÿš 1¥t¤{ mÑ4Ô4Ñ5Ô5Ð5Ð5à�BŒ<˜3ÒÐØ�MŠM˜&Ñ!Ô!Ð!å�$˜v uÑ-Ô-Ø'+ |˜V˜V¸Ø" r¨bØ $¨DÐ 0Ý#/°Ñ#9Ô#9Ø$-Ø!'Ø$(¤GÔ$5ð7ñ 7ô 7ˆð 	Œ×Ò˜%Ñ Ô Ð Ø�Š�U˜DÑ!Ô!Ð!Ð!Ð!r   éZ   ÚwidthÚheightÚtheta1Útheta2Úanglec                ón	  ‡‡‡— |
€Kt          ‰‰‰||||||	|¬¦
  «
        }| j                             |¦  «         |                      ||¦  «         �n5||k    r|dz  }||k    °t	          j        t          j        |¦  «        t          j        |¦  «        d¦  «        }ˆˆˆfd„|D ¦   «         }t          j	        |d||
|
du||	|¬¦  «        }|rŠt          j        ¦   «                              ‰d          ‰d	          ¦  «                             |¦  «                             ‰d         ‰d	         ¦  «        }|                     || j        j        z   ¦  «         | j                             |¦  «         |                      ||¦  «         |��,t          j        t          j        |¦  «        ¦  «        t          j        t          j        |¦  «        ¦  «        }}t          j        t          j        ‰‰z  |z  |¦  «        ¦  «        }t          j        t          j        |¦  «        ¦  «        t          j        t          j        |¦  «        ¦  «        }}t          j        t          j        ‰‰z  |z  |¦  «        ¦  «        }|d
v sd|v rÕt          j        t          j        |dz   ¦  «        ¦  «        dz  }t          j        t          j        |dz   ¦  «        ¦  «        dz  }t	          j        ‰d         ‰dz  t          j        t          j        |¦  «        ¦  «        z  z   ‰d	         ‰dz  t          j        t          j        |¦  «        ¦  «        z  z   f¦  «        }nÞ|dv sd|v rÖt          j        t          j        |dz   ¦  «        ¦  «         dz  }t          j        t          j        |dz   ¦  «        ¦  «         dz  }t	          j        ‰d         ‰dz  t          j        t          j        |¦  «        ¦  «        z  z   ‰d	         ‰dz  t          j        t          j        |¦  «        ¦  «        z  z   f¦  «        }t	          j        ||‰¦  «        }t	          j        ||f|¦  «        }| j                             |d         |d	         |d         |d	         dd||¬¦  «        }|                      ||¦  «         dS dS )z1 Draw an arc or ellipse, with optional arrowhead N)	ræ   rç   rè   ré   rê   rD   r]   r\   rb   ih  é2   c                óœ   •— g | ]H}‰d z  t          j        |¦  «        z  ‰d         z   ‰d z  t          j        |¦  «        z  ‰d         z   f‘ŒIS )r   r   rg   )rª   r«   r­   )r   Úthrl   rç   ræ   s     €€€r   r�   zFigure.arc.<locals>.<listcomp>  sk   ø€ ð Kð Kð KØ>@ð ˜Q‘w�tœx¨™|œ|Ñ+¨f°Q¬iÑ7Ø˜a‘x¥¤¨¡¤Ñ,¨v°a¬yÑ8ð:ð Kð Kð Kr   F)r“   r—   r˜   r^   r]   r\   rb   r   rg   )ÚccwÚbothr¾   rå   éd   r   )Úcwrð   r½   r£   r¤   )Ú
head_widthÚhead_lengthrD   rb   )r
   r%   rš   rU   r   Úlinspacerª   r¬   r0   r™   r	   ÚAffine2DÚ	translateÚ
rotate_degÚset_transformrP   r«   r­   rÈ   rÃ   r®   r°   r¸   )r9   rl   ræ   rç   rè   ré   rê   rD   r]   r\   r^   rb   rS   r¸   Úarcr¥   rã   rœ   ÚtrrY   r[   rÌ   rË   r±   r²   ro   ÚdarrowÚas    ```                        r   rú   z
Figure.arcý   s‚  øøø€ ð ˆ<Ý�f E°&ÀØ!¨°eØ˜b¨ð1ñ 1ô 1ˆCð ŒG×Ò˜cÑ"Ô"Ð"Ø�LŠL˜˜dÑ#Ô#Ð#Ñ#ð ˜6’/�/Ø˜#‘�ð ˜6’/�/õ ”M¥$¤,¨vÑ"6Ô"6½¼ÀVÑ8LÔ8LÈbÑQÔQˆEðKð Kð Kð Kð Kð KØDIðKñ Kô KˆFå”;˜v¨eØ!&Ø!%¨D¸Ð,<Ø!#¨°6ð;ñ ;ô ;ˆDð
 ð 9ÝÔ(Ñ*Ô*×4Ò4°f¸Q´i°ZÀ&ÈÄ)ÀÑLÔL×WÒWÐX]Ñ^Ô^×hÒhÐioÐpqÔirÐtzÐ{|Ôt}Ñ~Ô~�Ø×"Ò" 2 d¤gÔ&7Ñ#7Ñ8Ô8Ð8àŒG×Ò˜dÑ#Ô#Ð#Ø�LŠL˜˜tÑ$Ô$Ð$àÑÝ”8�DœL¨Ñ0Ô0Ñ1Ô1µ4´8½D¼LÈÑ<PÔ<PÑ3QÔ3QˆqˆAÝ”,�tœz¨5°©<¸Ñ*:¸AÑ>Ô>Ñ?Ô?ˆCÝ”8�DœL¨Ñ0Ô0Ñ1Ô1µ4´8½D¼LÈÑ<PÔ<PÑ3QÔ3QˆqˆAÝ”,�tœz¨5°©<¸Ñ*:¸AÑ>Ô>Ñ?Ô?ˆCØ˜Ð'Ð'¨3°%¨<¨<Ý”X�dœl¨3¨r©6Ñ2Ô2Ñ3Ô3°cÑ9�Ý”X�dœl¨6°"©9Ñ5Ô5Ñ6Ô6¸Ñ<�Ý”J  q¤	¨E°!©GµD´H½T¼\È#Ñ=NÔ=NÑ4OÔ4OÑ,OÑ OØ & q¤	¨F°1©HµT´X½d¼lÈ3Ñ>OÔ>OÑ5PÔ5PÑ,PÑ Pð Rñ Sô S��à˜.Ð(Ð(¨C°5¨L¨LÝ”h�tœ|¨C°©FÑ3Ô3Ñ4Ô4Ð4°sÑ:�Ý”h�tœ|¨C°©FÑ3Ô3Ñ4Ô4Ð4°sÑ:�å”J  q¤	¨E°!©GµD´H½T¼\È#Ñ=NÔ=NÑ4OÔ4OÑ,OÑ OØ & q¤	¨F°1©HµT´X½d¼lÈ3Ñ>OÔ>OÑ5PÔ5PÑ,PÑ Pð Rñ Sô S�õ ”˜A˜u fÑ-Ô-ˆAÝ”[ " b ¨5Ñ1Ô1ˆFà”—’˜a œd A a¤D¨&°¬)°V¸A´YÈ3Ø*-°UÀ6ð ñ Kô KˆAà�LŠL˜˜DÑ!Ô!Ð!Ð!Ð!ð- Ðr   Úimageústr | BinaryIOr°   Úimgfmtc                óô  — 	 |                      d¦  «        rt          d¦  «        ‚n# t          $ r Y nw xY w	 t          j        |¦  «        }n"# t
          $ r}	t          d¦  «        |	‚d}	~	ww xY wt          j        ¦   «                              |¦  «         	                    |d         |d         ¦  «        }
| j
                             |d|d|f|¬¦  «        }|                     |
| j
        j        z   ¦  «         dS )aÖ   Add an image to the figure
        
            Args:
                image: File name or open file pointer
                xy: Position for the image
                width: Image width in data coordinates
                height: Image height in data coordinates
                rotate: Image rotation in degrees
                zorder: Z-Order for image
                imgfmt: file format of image. Required if image is
                    open file pointer.
        Úsvgz.SVG images not supported in matplotlib backendNr   rg   )Úextentrb   )rˆ   Ú
ValueErrorÚAttributeErrorr0   ÚimreadÚSyntaxErrorr	   rö   rø   r÷   r%   Úimshowrù   rP   )r9   rþ   rŸ   ræ   rç   r°   rb   r   ÚimdatÚexrû   Úims               r   rþ   zFigure.image6  s  € ð	Ø�~Š~˜eÑ$Ô$ð SÝ Ð!QÑRÔRÐRðSøåð 	ð 	ð 	ØˆDð	øøøð	WÝ”J˜uÑ%Ô%ˆEˆEøÝð 	Wð 	Wð 	WÝÐMÑNÔNÐTVÐVøøøøð	Wøøøõ Ô Ñ"Ô"×-Ò-¨fÑ5Ô5×?Ò?ÀÀ1ÄÀrÈ!ÄuÑMÔMˆØŒW�^Š^˜E¨1¨e°Q¸Ð*?Èˆ^ÑOÔOˆØ
×Ò˜˜DœGÔ-Ñ-Ñ.Ô.Ð.Ð.Ð.s#   ‚$' §
4³4¸A Á
A,ÁA'Á'A,éH   r}   ÚtransparentÚdpic                óÂ   — |                       ¦   «         }|                     dddd¦  «         |                     |d||| j                             ¦   «         d¬¦  «         dS )z Save the figure to a file r   rg   Útight)Úbbox_inchesr  r  Úbbox_extra_artistsÚ
pad_inchesN)rA   r1   Úsavefigr%   Úget_default_bbox_extra_artists)r9   r}   r  r  r.   s        r   ÚsavezFigure.saveS  sl   € à�kŠk‰mŒmˆØ×Ò˜A˜q ! QÑ'Ô'Ð'Ø�Š�EØ 'Ø +°Ø'+¤w×'MÒ'MÑ'OÔ'OØ ð	 	ñ 	"ô 	"ð 	"ð 	"ð 	"r   c           	     ó¢  — | j         �r^|                      | j        j        | j        j        | j        j        | j        j        | j        j        f| j        j        | j        j        | j        j        | j        j        | j        j        fdd¬¦  «         |                      | j        j        | j        z
  | j        j        | j        z
  | j        j        | j        z   | j        j        | j        z   | j        j        | j        z
  f| j        j        | j        z
  | j        j        | j        z   | j        j        | j        z   | j        j        | j        z
  | j        j        | j        z
  fdd¬¦  «         | j        �s[| j        j        | j        z
  | j        j        | j        z   }}| j        j        | j        z
  | j        j        | j        z   }}| j	         
                    ||¦  «         | j	                             ||¦  «         ||z
  }||z
  }| j	        j                             ¦   «                              d¦  «         | j	        j                             ¦   «                              d¦  «         | j	                             d¦  «         	 | j	                             ¦   «                              | j        |z  | j        |z  ¦  «         n# t(          $ r Y nw xY w| j        S )z Get the Matplotlib figure Úredr$   )rD   r]   rV   F)r!   rh   r"   rK   rN   rO   rL   r+   r/   r%   Úset_xlimÚset_ylimr4   r5   r6   r7   r8   Ú
get_figureÚset_size_inchesr#   r  r.   )r9   Úx1Úx2Úy1Úy2Úwr›   s          r   rA   zFigure.getfig]  sØ  € àŒ=ñ 	,Ø�IŠI�t”y”~ t¤y¤~°t´y´~ÀtÄyÄ~ÐW[ÔW`ÔWeÐfØ”y”~ t¤y¤~°t´y´~ÀtÄyÄ~ÐW[ÔW`ÔWeÐfØ! bð ñ *ô *ð *ð �IŠI�t”y”~ d¤kÑ1°4´9´>À$Ä+Ñ3MÈtÌyÌ~Ð^bÔ^iÑOiÐkoÔktÔkyÐz~ô  {Fñ  lFð  HLô  HQô  HVð  W[ô  Wbñ  Hbð  cØ”y”~ d¤kÑ1°4´9´>À$Ä+Ñ3MÈtÌyÌ~Ð^bÔ^iÑOiÐkoÔktÔkyÐz~ô  {Fñ  lFð  HLô  HQô  HVð  W[ô  Wbñ  Hbð  cØ#¨ð ñ ,ô ,ð ,ð Œ|ñ 	Ø”Y”^ d¤kÑ1°4´9´>ÀDÄKÑ3O�ˆBØ”Y”^ d¤kÑ1°4´9´>ÀDÄKÑ3O�ˆBØŒG×Ò˜R Ñ$Ô$Ð$ØŒG×Ò˜R Ñ$Ô$Ð$Ø�2‘ˆAØ�2‘ˆAØŒGŒL×"Ò"Ñ$Ô$×0Ò0°Ñ7Ô7Ð7ØŒGŒL×"Ò"Ñ$Ô$×0Ò0°Ñ7Ô7Ð7ØŒG× Ò  Ñ'Ô'Ð'ðØ”×"Ò"Ñ$Ô$×4Ò4°TÔ5IÈ!Ñ5KØ59Ô5IÈ!Ñ5KñMô Mð Mð Møåð ð ð Ø�ðøøøàŒxˆs   É<=J: Ê:
KËKr  c                óÐ   — |                       ¦   «         }t          ¦   «         }|                     ||d| j                             ¦   «         d¬¦  «         |                     ¦   «         S )z) Get the image as SVG or PNG bytes array r  r   )Úformatr  r  r  )rA   r   r  r%   r  Úgetvalue)r9   Úextr.   Úoutputs       r   ÚgetimagezFigure.getimagex  s`   € à�kŠk‰mŒmˆÝ‘”ˆØ�Š�F 3Ø 'Ø'+¤w×'MÒ'MÑ'OÔ'OØ ð 	ñ 	"ô 	"ð 	"ð
 �ŠÑ Ô Ð r   c                ó8   — | j                              ¦   «          dS )z Remove everything N)r%   ÚclearrC   s    r   r)  zFigure.clearƒ  s   € àŒ�Š‰Œˆˆˆr   c                ó’   •— t          j        ¦   «         r|                      ¦   «          t          ¦   «                              ¦   «         S )N)r0   ÚisinteractiverB   ÚsuperÚ__repr__)r9   Ú	__class__s    €r   r-  zFigure.__repr__‡  s7   ø€ ÝÔÑÔð 	Ø�IŠI‰KŒKˆKÝ‰wŒw×ÒÑ!Ô!Ð!r   c                ó,   — |                       d¦  «        S )z  PNG representation for Jupyter Úpng)r'  rC   s    r   Ú
_repr_png_zFigure._repr_png_Œ  s   € à�}Š}˜UÑ#Ô#Ð#r   c                óP   — |                       d¦  «                             ¦   «         S )z  SVG representation for Jupyter r  )r'  ÚdecoderC   s    r   Ú
_repr_svg_zFigure._repr_svg_�  s    € à�}Š}˜UÑ#Ô#×*Ò*Ñ,Ô,Ð,r   )r"   r   )r>   r?   )rD   rE   r>   r?   )rV   rW   r   NrX   rX   Nr   )rY   rZ   r[   rZ   rD   rE   r\   r   r]   rZ   r^   r_   r   r   r`   r   rS   ra   rb   rc   r>   r?   )
rV   rj   rk   Nr   rl   rl   rm   Nrn   )ro   rE   rY   rZ   r[   rZ   rD   rE   rp   rZ   rq   rE   rr   r_   rs   rZ   rt   rE   ru   rE   rv   rE   rS   ra   r>   r?   )
TrV   Nr   rW   FrX   rX   Nrg   )r‘   r’   r“   r”   rD   rE   r^   r_   r]   rZ   r\   r   r•   r”   r   r   r`   r   rS   ra   rb   rc   r>   r?   )rV   Nr   rW   Nrg   )rl   r   r�   rZ   rD   rE   r^   r_   r]   rZ   r\   r   rS   ra   rb   rc   r>   r?   )r£   r¤   rV   r   Nrg   )rŸ   r   r¥   rZ   r¦   rZ   r§   rZ   rD   rE   r]   rZ   rS   ra   rb   rc   r>   r?   )	rV   r   rW   rX   rg   Nr¤   r£   N)ri   r¹   rD   rE   r]   rZ   r\   r   r   r   rb   rc   r¸   r_   r§   rZ   r¦   rZ   rS   ra   r>   r?   )rV   r   rW   NrX   rX   rg   N)rÑ   rÒ   rD   rE   r]   rZ   r\   r   r^   r_   r   r   r`   r   rb   rc   rS   ra   r>   r?   )
r   rå   r   rV   r   rW   Nrg   NN)rl   r   ræ   rZ   rç   rZ   rè   rZ   ré   rZ   rê   rZ   rD   rE   r]   rZ   r\   r   r^   r_   rb   rc   rS   ra   r¸   r_   r>   r?   )r   rg   N)rþ   rÿ   rŸ   r   ræ   rZ   rç   rZ   r°   rZ   rb   rc   r   r_   )Tr  )r}   rE   r  r”   r  rZ   r>   r?   )r  )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r;   r=   rB   rH   rU   rh   rŽ   rœ   r¢   r¸   rÐ   rÑ   rú   rþ   r  rA   r'  r)  r-  r1  r4  Ú__classcell__)r.  s   @r   r   r      sh  ø€ € € € € ðð ð5ð 5ð 5ð@ð ð ð ðð ð ð ð&ð &ð &ð &ð*ð *ð *ð NQØMTØXYð
"ð 
"ð 
"ð 
"ð 
"ð =DØ5AØ?@Ø3;ØPQð	ð ð ð ð ð* 8<ØqvØvwð
ð 
ð 
ð 
ð 
ð ]aØ^_ð!ð !ð !ð !ð !ð =@Ø^_ðð ð ð ð ð. <CØ_`Ø[_Ø&*ð.6ð .6ð .6ð .6ð .6ðb BEØ"&Ø!(Ø#*ØØ#'ð!"ð !"ð !"ð !"ð !"ðH CDØADØ"&ØQUð	7"ð 7"ð 7"ð 7"ð 7"ðt KOð/ð /ð /ð /ð /ð:"ð "ð "ð "ð "ðð ð ð6	!ð 	!ð 	!ð 	!ðð ð ð ð"ð "ð "ð "ð "ð
$ð $ð $ð-ð -ð -ð -ð -ð -ð -r   r   )!r8  Ú
__future__r   Útypingr   r   r   Úior   rª   Ú
matplotlibÚmatplotlib.pyplotÚpyplotr0   r   r	   Úmatplotlib.patchesr
   r   r   r   Ú r   Útypesr   r   r   r   r   Úget_backendr   r   r   r   r   r   ú<module>rD     sM  ðØ 0Ð 0à "Ð "Ð "Ð "Ð "Ð "Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð Ø €€€à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >à Ð Ð Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <à	Ð+�ZÔ+Ñ-Ô-Ð	-€ðð ð ðx-ð x-ð x-ð x-ð x-ñ x-ô x-ð x-ð x-ð x-r   