+
    i8                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHt ^ RIt^ RIHtHt ^ RIHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	I H!t! ^ R
IH"t" ^ RI#H$t$H%t% ]PL                  ! ]'4      t(R t)]
PT                  ! R4      t+R t,R t-R t.R t/ ! R R4      t0R t1R t2RRRRRR/t3R t4R t5 ! R R]4      t6 ! R R]4      t7]t8R t9]Pt                   ! R! R"]4      4       t;R# )#    N)BytesIO)Image)cbookfont_manager)_BackendFigureCanvasBaseFigureManagerBaseRendererBase)MixedModeRenderer)rgb2hex)UTC)Path)_path)Affine2DAffine2DBasec                 r    V P                  R R4      p V P                  RR4      p V P                  RR4      p V # )&&amp;<&lt;>&gt;replacess   &/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/matplotlib/backends/backend_svg.py_escape_cdatar   E   s7    			#wA			#vA			#vAH    z-(?=-)c                 D    \        V 4      p \        P                  R V 4      # )z- )r   _escape_xml_commentsubr   s   &r   _escape_commentr#   O   s    aA""4++r   c                     V P                  R R4      p V P                  RR4      p V P                  RR4      p V P                  RR4      p V P                  RR	4      p V # )
r   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                     R V 9  d   R \        V 4      ,           R ,           # RV 9  d   R\        V 4      ,           R,           # R \        V 4      ,           R ,           # )r&   r%   )r   r'   r   s   &r   _quote_escape_attribr)   ]   sS    ,/qLC-""S( +,/qLC-""S(+.##c)+r   c                F    V R P                  R4      P                  R4      # )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                   p   a  ] tR t^kt o RtR tRR lt/ 3R ltR tR t	RR lt
R	 tR/ 3R
 ltR tRtV tR# )	XMLWriterz=
Parameters
----------
file : writable text file-like object
c                    VP                   V n        \        VR 4      '       d   VP                  V n        ^ V n        . V n        . V n        RV n        R# )flushNz@                                                                )write_XMLWriter__writehasattrr4   _XMLWriter__open_XMLWriter__tags_XMLWriter__data_XMLWriter__indentation)selffiles   &&r   __init__XMLWriter.__init__r   sB    zz4!!DJ%r   c                .   V P                   '       d3   V'       d   V P                  R 4       MV P                  R4       ^ V n         V P                  '       d?   RP                  V P                  4      pV P                  \	        V4      4       . V n        R# R# )>
r    N)r8   r6   r:   joinr   )r<   indentdatas   && r   __flushXMLWriter.__flush{   se    ;;;U#S!DK;;;774;;'DLLt,-DK r   c                   V P                  4        \        V4      p. V n        V P                  P	                  V4       V P                  V P                  R\        V P                  4      ^,
           4       V P                  RV 24       / VCVCP                  4        F<  w  rEV'       g   K  \        V4      p\        V4      pV P                  RV RV 24       K>  	  ^V n
        \        V P                  4      ^,
          # )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.
Nr    =)_XMLWriter__flushr   r:   r9   appendr6   r;   lenitemsr)   r8   )r<   tagattribextrakvs   &&&,  r   startXMLWriter.start   s    & 	C 3T''(=T[[)9A)=>?qY'v''--/DAq!!$(+q1QC[)	 0
 4;;!##r   c                    V P                  4        V P                  V P                  R\        V P                  4       4       V P                  R\        V4       R24       R# )z\
Add a comment to the output stream.

Parameters
----------
comment : str
    Comment text.
Nz<!-- z -->
)rK   r6   r;   rM   r9   r#   )r<   comments   &&r   rW   XMLWriter.comment   sK     	T''(9T[[)9:;u_W56f=>r   c                <    V P                   P                  V4       R# )z`
Add character data to the output stream.

Parameters
----------
text : str
    Character data.
N)r:   rL   )r<   texts   &&r   rE   XMLWriter.data   s     	4 r   Nc                r   V'       d^   V P                   '       g   Q RV R24       h\        V4      V P                   R
,          8X  g   Q RV P                   R
,           RV 24       hMV P                   '       g   Q R4       hV P                   P                  4       pV P                  '       d   V P	                  V4       M,V P
                  '       d   ^ V n        V P                  R4       R# V'       d2   V P                  V P                  R\        V P                   4       4       V P                  RV R	24       R# )z
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()z/>
Nz</rA   )	r9   r   popr:   rK   r8   r6   r;   rM   )r<   rO   rD   s   &&&r   endXMLWriter.end   s     ;;;8/#a 88; %R8 >B0u=>8 ;;;2 22;kkoo;;;LL [[[DKLL LL++,=S-=>?r#c]#r   c                ^    \        V P                  4      V8  d   V P                  4        K,  R# )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)rM   r9   r`   )r<   ids   &&r   closeXMLWriter.close   s#     $++#HHJ $r   c                    V P                   ! W3/ VB  V'       d   V P                  V4       V P                  RR7       R# )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)rD   N)rT   rE   r`   )r<   rO   rZ   rP   rQ   s   &&&&,r   elementXMLWriter.element   s1     	

3(%(IIdOr   c                    R# )zFlush the output stream.N r<   s   &r   r4   XMLWriter.flush   s    r   )__data__indentation__open__tags__writer4   T)NT)__name__
__module____qualname____firstlineno____doc__r>   rK   rT   rW   rE   r`   rd   rg   r4   __static_attributes____classdictcell__)__classdict__s   @r   r2   r2   k   sI     & !# $B?	!$: !%R 	 r   r2   c           
      l   . pV  F  w  r#VR 8X  d   VR8X  g$   VR8X  g   VR8X  d   VR	8X  g   VR8X  d
   VR
8X  d   K8  VR8X  d'   \        V\        4      '       d   VP                  4       pVP                  RP	                  VRP                  R V 4       4      4      4       K  	  RP                  V4      # )scale	translaterotatematrixz{}({})rI   c              3   8   "   T F  p\        V4      x  K  	  R # 5iNr0   ).0r/   s   & r   	<genexpr>&_generate_transform.<locals>.<genexpr>  s     >1+A..   )   )r   r   )r   r   )r   )
isinstancer   	to_valuesrL   formatrC   )transform_listpartstypevalues   &   r   _generate_transformr      s    E%GO$%6/;&5F?8#8
5, ? ?OO%EX__#((>>>@ 	A & 88E?r   c                 N    R P                  R V P                  4        4       4      # )z; c              3   4   "   T F  w  rV R V 2x  K  	  R# 5i)z: Nrj   )r   rR   rS   s   &  r   r    _generate_css.<locals>.<genexpr>
  s     <^TQs"QC[^s   )rC   rN   rP   s   &r   _generate_cssr   	  s    99<V\\^<<<r   
projectingsquarebuttroundc                 h    \        V \        4      '       g   \        R V R\        V 4       R24      hR# )Invalid type for z metadata. Expected str, not r-   N)r   str	TypeErrorr   )infokeys   &&r   _check_is_strr     s;    dC  +C50M:,a) * 	* !r   c           	          \         P                  ! V 4      '       d=   V  F4  p\        V\        4      '       d   K  \	        R V R\        V4       R24      h	  R# \	        R V R\        V 4       R24      h)r   z) metadata. Expected iterable of str, not r-   z0 metadata. Expected str or iterable of str, not N)npiterabler   r   r   r   )infosr   r   s   && r   _check_is_iterable_of_strr     s    	{{5DdC(("3C5 988<T
|1!F G G 
 +C5 1004U}A? @ 	@r   c                   $  a a ] tR tRt oR&RR/V 3R llltR tR tR tR tR	 t	R
 t
R tR tR tR tR tR tR'R ltR tR tR(R ltR'R ltR'R ltV 3R ltR tR tR tR tR'R ltR tR tR'R ltR'R  lt R)R! lt!R" t"R# t#R$ t$R%t%Vt&V ;t'# )*RendererSVGi!  Nmetadatac                 < Wn         W n        \        V4      V n        WPn        Vf&   \        VRR4      p\        V\        4      '       g   RpW@n        / V n	        \        P                  ! 4       V n        / V n        / V n        / V n        ^ V n        / V n        RV n        ^ V n        \(        S	V `U  4        \-        4       V n        \1        V4      p\1        V4      pVP3                  \4        4       V P                  P7                  RV R2V R2RV RV 2RR	\8        P:                  R
,          RR/R7      V n        V P?                  V4       V PA                  4        R # )NnamerB   Fsvgptz0 0 rI   zhttp://www.w3.org/2000/svgz1.1zsvg.idzxmlns:xlinkzhttp://www.w3.org/1999/xlink)widthheightviewBoxxmlnsversionrc   rP   )!r   r   r2   writer	image_dpigetattrr   r   basename_groupd	itertoolscount_image_counter_clip_path_ids_clipd_markers_path_collection_id_hatchd_has_gouraud_n_gradientssuperr>   dict
_glyph_mapr0   r5   	svgPrologrT   mplrcParams	_start_id_write_metadata_write_default_style)
r<   r   r   	svgwriterr   r   r   
str_height	str_width	__class__s
   &&&&&&$  r   r>   RendererSVG.__init__"  sB   
	*"y&"5Hh,, 'oo/ #$ !&%f-
$U+		"**Kr" \$9+Qzl3.||H%!#AB + D 	X&!!#r   c                    WP                   9  d#   \        V P                   4      V P                   V&   V P                   V,          # )a^  
Returns a stable and unique identifier for the *clippath* argument
object within the current rendering context.

This allows plots that include custom clip paths to produce identical
SVG output on each render, provided that the :rc:`svg.hashsalt` config
setting and the ``SOURCE_DATE_EPOCH`` build-time environment variable
are set to fixed values.
)r   rM   )r<   clippaths   &&r   _get_clippath_idRendererSVG._get_clippath_idJ  s<     ...,/0C0C,DD)""8,,r   c                    V P                  4        V P                  4        V P                  P                  V P                  4       V P                  P                  4        R # r   )_write_clips_write_hatchesr   rd   r   r4   rk   s   &r   finalizeRendererSVG.finalizeX  s@    $..)r   c                t	  a Vf   / pRRRRRR\         P                   R2/VCpV P                  oRV9   d)   VR,          p\        VR4       SP	                  R	VR
7       VP                  RR 4      pVEeC   \        V\        4      '       d   V.pEM\        V\        P                  \        P                  34      '       d   VP                  4       .pM\        P                  ! V4      '       d   . pV F  p\        V\        4      '       d   VP                  V4       K,  \        V\        P                  \        P                  34      '       d"   VP                  VP                  4       4       K}  \        R\        V4       R24      h	  M\        R\        V4       R24      hRP!                  V4      VR&   MRV9  d   \"        P$                  ! R4      pV'       dj   \        P                  P'                  \)        V4      \        P*                  P,                  4      pVP/                  \0        R7      P                  4       VR&   M/\        P                  P3                  4       P                  4       VR&   R pV3R lpVP5                  RR 4      pVe   V! V4      pSP	                  RRV/R7       R FR  p	VP5                  V	R 4      p
V
f   K  V! V4      p\        W4       SP	                  RV	P7                  4        2V
R
7       KT  	  R  F  p	VP5                  V	R 4      pVf   K  \        V\        4      '       d   V.p\9        W4       V! V4      pSP;                  RV	P7                  4        24       V F8  pSP;                  R4       SP	                  RVR
7       SP=                  R4       K:  	  SP=                  RV	P7                  4        24       K  	  VP5                  RR 4      pVe   \        V\        4      '       d   V.p\9        VR4       V! V4      pSP;                  R4       SP;                  R4       V F  pSP	                  RVR
7       K  	  SP=                  R4       SP=                  R4       Ve   SP?                  V4       V'       d"   \A        RRP!                  V4      ,           4      hR # )!NFormatzimage/svg+xmlTypez&http://purl.org/dc/dcmitype/StillImageCreatorzMatplotlib vz, https://matplotlib.org/Titletitle)rZ   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           	         < V e   V # SP                  R4      p SP                  RRRRRRR/R	7       SP                  R
4       V # )Nr   zrdf:RDFzxmlns:dcz http://purl.org/dc/elements/1.1/zxmlns:cczhttp://creativecommons.org/ns#z	xmlns:rdfz+http://www.w3.org/1999/02/22-rdf-syntax-ns#r   zcc:Work)rT   )midr   s   &r   ensure_metadata4RendererSVG._write_metadata.<locals>.ensure_metadata  sU    
,,z*CLL><J,L 
 LL#Jr   zdc:typezrdf:resourcer   zdc:zcc:Agentzdc:titleKeywordsz
dc:subjectzrdf:Bagzrdf:liz.Unknown metadata key(s) passed to SVG writer: ,)	r   Coverager   Descriptionr   
IdentifierLanguageRelationSource)r   Contributor	PublisherRights)!r   __version__r   r   rg   getr   r   datetimedate	isoformatr   r   rL   r   r   rC   osgetenvfromtimestampinttimezoneutcr   r   todayr_   lowerr   rT   r`   rd   
ValueError)r<   r   r   r   datesdr   r   urir   r   agentsagentkeywordskeywordr   s   &&             @r   r   RendererSVG._write_metadata^  s    Ho<s//HI	

 
 hW%E%)NN7N/ ||FD)$$$D8#4#4hmm"DEE)*T""A!!S))Q#A(9(98=='IJJQ[[]3'##'7)1./ /    #448J<q!B C C  #xxHV8# 9901D((66s4y(BSBSBWBWX#'<<s<#;#E#E#G #+#4#4#:#:#<#F#F#H 
	 ll64(?!#&CNN9nc-BNCDC<<T*D%c*d(SYY[M2>D EC\\#t,F~&#&& %f2!#&CLL3syy{m,-Z(z6

:&   JJSYY[M*+! E& <<
D1(C(($:%h
;!#&CLL&LL##xg6 $JJy!JJ|$?LLM XXh/0 1 1 r   c                    V P                   p\        R RRR/4      pVP                  R4       VP                  RRRV,          R7       VP	                  R4       R	# )
stroke-linejoinr   stroke-linecapr   defsstyleztext/cssz*{%s})r   rZ   N)r   r   rT   rg   r`   )r<   r   default_styles   &  r   r    RendererSVG._write_default_style  sU    %wf'& ' 	VwZg6MN

6r   c                f   \         P                  R ,          pVf   \        \        P                  ! 4       4      p\
        P                  ! 4       pVP                  VP                  R4      4       VP                  \        V4      P                  R4      4       V VP                  4       R,           2# )zsvg.hashsaltutf8:N
   N)
r   r   r   uuiduuid4hashlibsha256updateencode	hexdigest)r<   r   contentsaltms   &&&  r   _make_idRendererSVG._make_id  s|    ||N+<tzz|$DNN	V$%	W$$V,-c*+,,r   c                x    V\        4       P                  ^R4      P                  ^ V P                  4      ,           # r   r^   )r   r|   r}   r   )r<   	transforms   &&r   _make_flip_transform RendererSVG._make_flip_transform  s-    8:++Ar2<<QLLLr   c                Z   Ve   \        V4      pVP                  4       pVe   \        V4      pVP                  4       pVP                  4       W#V3pV P                  P                  V4      pVf7   V P                  RV4      pVP                  4       W#V3V3V P                  V&   V# Vw  rvV# )z
Create a new hatch pattern
h)tupleget_hatch_colorget_hatch_linewidth	get_hatchr   r   r  get_hatch_path)r<   gcrgbFaceedgelwdictkeyoid_s   &&&     r   
_get_hatchRendererSVG._get_hatch  s     GnG!!#;D##%<<>7"5llw';--W-C&(&7&7&97"%Ms$SDLL! 
 FA
r   c                ^   \        V P                  4      '       g   R # ^HpV P                  pVP                  R4       V P                  P	                  4        EF@  w  w  r4rVpVP                  RVRRR\        V4      \        V4      R7       V P                  V\        4       P                  V4      P                  RR4      P                  ^ V4      RR7      pVf   R	p	M\        V4      p	VP                  R
RR\        V^,           4      \        V^,           4      V	R7       R\        V4      R\        V4      R\        V4      RRRR/p
V^,          ^8  d   \        V^,          4      V
R&   VP                  RV\        V
4      R7       VP                  R4       EKC  	  VP                  R4       R # )Nr	  patternuserSpaceOnUser,   )rc   patternUnitsr/   yr   r         ?Fsimplifynonerect)r/   r5  r   r   fillr;  strokestroke-widthr  r   r  miterstroke-opacitypath)r   r
        )rM   r   r   rT   valuesr   _convert_pathr   r|   r}   r   rg   r   r`   )r<   
HATCH_SIZEr   r@  facer<  r+  r-  	path_datar;  hatch_styles   &          r   r   RendererSVG._write_hatches  s   4<<  
V-1\\-@-@-B)$TcLL-C
O:  ( **
z"55d#3IIa4L	 +  I
 |t}NNC
1$5:a<(	   GFOgfo"CG$f%wK ay1}03F1I,-NN#K0  
 JJy!G .CH 	

6r   c                v   / pVP                  4       pVP                  4       eY   RV P                  W4       R2VR&   Ve<   \        V4      ^8X  d,   V^,          R8w  d   V'       g   \	        V^,          4      VR&   MjVf   RVR&   M`\        VR,          4      R8w  d   \        V4      VR&   \        V4      ^8X  d,   V^,          R8w  d   V'       g   \	        V^,          4      VR&   V'       d2   VP                  4       R8w  d   \	        VP                  4       4      VR&   VP                  4       w  rVVe3   R	P                  R
 V 4       4      VR&   \	        \        V4      4      VR&   VP                  4       pV'       d   VP                  4       p\        V4      VR&   V'       g$   V^,          R8w  d   \	        V^,          4      VR&   VR8w  d   \	        V4      VR&   VP                  4       R8w  d   VP                  4       VR&   VP                  4       R8w  d   \        VP                  4       ,          VR&   V# )z=Generate a style string from the GraphicsContext and rgbFace.url(#r]   r;  r6  fill-opacityr9  :N   Nopacityr   c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   r   )r   vals   & r   r   .RendererSVG._get_style_dict.<locals>.<genexpr>G  s      2614# %%r   zstroke-dasharrayzstroke-dashoffsetr<  r?  r=  r   r  r   r  )r   r   r   )get_forced_alphar&  r/  rM   r0   r#  r   	get_alpha
get_dashesrC   floatget_linewidthget_rgbget_joinstyleget_capstyle_capstyle_d)	r<   r(  r)  rP   forced_alphaoffsetseq	linewidthrgbs	   &&&      r   _get_style_dictRendererSVG._get_style_dict-  s   **,<<>%$T__R%A$B!DF6N#G(9gajC>O()9'!*)E~&!'v%2%,W%5F6NLA%'!**; ,-=gaj-IF>*BLLNc1 0 @F9mmo?), 261426 *6F%&*:5=*IF&'$$&	**,C&s|F8CFcM+;CF+C'(C)9))D~&!W,,.,<,<,>() F*+6r7H+I'(r   c                6    \        V P                  W4      4      # r   )r   r_  )r<   r(  r)  s   &&&r   
_get_styleRendererSVG._get_styleZ  s    T11">??r   c                   VP                  4       pVP                  4       w  r4Ve/   V P                  V4      pV P                  V4      \	        V4      3pM3Ve.   VP
                  w  rgrV P                  Wy,           ,
          pWgW3pM/ # V P                  P                  V4      p
V
f;   V P                  RV4      pVe   W43V3V P                  V&   MW[3V P                  V&   MV
w  rRRV R2/# )Npz	clip-pathrJ  r]   )
get_clip_rectangleget_clip_pathr  r   r   boundsr   r   r   r  )r<   r(  cliprectr   clippath_transr,  r/   r5  wr"  clipr-  r.  s   &&           r   _get_clip_attrsRendererSVG._get_clip_attrs]  s    ((*#%#3#3#5 !66~FN,,X6N8KLG!!JA!QS!AQlGI{{w'<--W-C#)1(BC'HG$(/~G$FAuSE^,,r   c           
        \        V P                  4      '       g   R # V P                  pVP                  R4       V P                  P	                  4        F  w  r#VP                  RVR7       \        V4      ^8X  d,   Vw  rEV P                  WERR7      pVP                  RVR7       M?Vw  rxrVP                  R\        V4      \        V4      \        V	4      \        V
4      R	7       VP                  R4       K  	  VP                  R4       R # )
Nr	  clipPathrc   Fr7  r@  r   r:  r/   r5  r   r   )	rM   r   r   rT   rB  rC  rg   r0   r`   )r<   r   rl  r-  r   rj  rF  r/   r5  rk  r"  s   &          r   r   RendererSVG._write_clipst  s    4;;V++-IDLLL,4yA~+/( ..u / >	v3!
a&q)&q)*1-+A.  0 JJz" .  	

6r   c                   V'       d    V P                   P                  R VR7       R# V P                  P                  V^ 4      ^,           V P                  V&   V P                   P                  R V RV P                  V,          R 2R7       R# )grq  r.  r   N)r   rT   r   r   )r<   r   gids   &&&r   
open_groupRendererSVG.open_group  sl    KKcc*"ll..q!4q8DLLOKKc1T\\!_Q,?&@Ar   c                <    V P                   P                  R 4       R# )rv  N)r   r`   )r<   r   s   &&r   close_groupRendererSVG.close_group  s    r   c                :    \         P                  R ,          '       * # )zimage.composite_image)r   r   rk   s   &r   option_image_nocomposite$RendererSVG.option_image_nocomposite  s    << 7888r   c           
         V'       d   R R V P                   V P                  3pMRp\        P                  ! WW4V^. ROR4      P	                  R4      # )        NFascii)   M   L   Q   C   z)r   r   r   convert_to_stringdecode)r<   r@  r  rl  r8  sketchs   &&&&&&r   rC  RendererSVG._convert_path  sK    djj$++6DD&&TVQ*E3396'?	Cr   c           	     .   V P                  V4      pVR J ;'       d    VP                  4       R J pVP                  ;'       d    TpV P                  W%WgVP	                  4       R7      pVP                  4       e-   V P                  P                  RRVP                  4       /4       V P                  P                  ! RRV/V P                  V4      BRV P                  W4      /B  VP                  4       e   V P                  P                  R4       R # R # )N)rl  r8  r  a
xlink:hrefr   r
  )r@  )r  r'  should_simplifyrC  get_sketch_paramsget_urlr   rT   rg   rm  rb  r`   )	r<   r(  r@  r  r)  trans_and_fliprl  r8  rF  s	   &&&&&    r   	draw_pathRendererSVG.draw_path  s    229=4??B$5$5$74$?''00D&&t'') ' +	 ::<#KKcL"**,#?@ 	@i 	@43G3G3K 	@"&//"">	@::<#KKOOC  $r   c           	     .   \        VP                  4      '       g   R # V P                  pV P                  VV\	        4       P                  RR4      ,           RR7      pV P                  W4      p	V\        V	4      3p
V P                  P                  V
4      p\        V	P                  4        UUu/ uF   w  rVP                  R4      '       g   K  WbK"  	  upp4      p	VfW   V P                  RV
4      pVP                  R4       VP                  RWV	R7       VP                  R4       WP                  V
&   VP                  ! R/ V P!                  V4      B  VP#                  4       e-   V P                  P                  R
RVP#                  4       /4       V P%                  V4      pRRV 2/p^ ^ V P&                  ^H,          V P(                  ^H,          3pVP+                  VVRR7       Fd  w  pp\        V4      '       g   K  VRR  w  pp\-        V4      VR&   \-        V4      VR&   V P/                  W4      VR&   VP                  RVR7       Kf  	  VP#                  4       e   V P                  P                  R
4       VP                  R	4       R # u uppi )Nr6  Fr7  r<  r  r	  r@  )rc   r   r
  rv  r  r  #)rl  r8  r/   r5  r
  user   rA  rv  )rM   verticesr   rC  r   r|   r_  r   r   r   rN   
startswithr  rT   rg   r`   rm  r  r  r   r   iter_segmentsr0   rb  )r<   r(  marker_pathmarker_transr@  transr)  r   rF  r
  r,  r-  rR   rS   r  rP   rl  r  coder/   r5  s   &&&&&&&              r   draw_markersRendererSVG.draw_markers  s9    4==!!&&8:++C66 ' 	 $$R1mE23mm( 9!"h!7  $qt 9 : ;--W-CLL NN6ceNDJJv%(MM'"5D0045::<#KKcL"**,#?@2259!C5	*1djjmT[[^4"00TE 1 ;NHd8}}}1.q1s.q1s"&//"">wuV4; ::<#KKOOC 

359s   .J
J
c                
  < \        V4      ^ 8  d   \        V^ ,          P                  4      M^ pV P                  W4WWV4      pV^	V,          ,           ^,           V^,           V,          8  pV'       g   \        S V `  WW4WVWxWWV4      # V P
                  p. pVP                  R4       \        V P                  W#V4      4       F  w  pw  pp\        VP                  4       4      P                  RR4      pV P                  VVRR7      pRP                  V P                  VV P                  RV4      4      pVP!                  RVVR7       VP#                  V4       K  	  VP%                  R4       V P'                  VVWVWxWWV4       F  w  pppppVP)                  4       pVe   VP                  R
RV/R7       V P+                  V4      pV'       d   VP                  ! R/ VB  RRV 2R\-        V4      R\-        V P.                  V,
          4      RV P1                  VV4      /pVP!                  RVR7       V'       d   VP%                  R4       Vf   K  VP%                  R
4       K  	  V ;P                  ^,          un        R	# )r   r	  r6  Fr7  zC{:x}_{:x}_{}rB   r@  )rc   r   Nr  r  r   rv  r  r/   r5  r
  r  rA  r  )rM   r  _iter_collection_uses_per_pathr   draw_path_collectionr   rT   	enumerate_iter_collection_raw_pathsr   
get_matrixr|   rC  r   r   r  rg   rL   r`   _iter_collectionr  rm  r0   r   rb  )!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_attrsrP   r   s!   &&&&&&&&&&&&&&                  r   r   RendererSVG.draw_path_collection  s^    .1Z!^3uQx(();;7
D q=((1,1/MM 	%7/ez	! ! 
V$-d.M.M /9 %: A i !5!5!78>>sDII""4U"CA!((((!T]]2q-ACCNN6cQN/c"%: 	

6-1-B-BJ
O.5)BGS' ++-CS,)<=--c2J/J/'m%b)%dkkB&67g6	F NN5N0

3

3).5, 	  A% r   c                <   \         P                  ! V^ R7      pVR(,          ^ 8X  d   R# V P                  pVP                  R4       \	        ^4       EF  pW,          w  rgW^,           ^,          ,          w  rW^,           ^,          ,          w  rW%,          pW8X  d   TpTpMqW8X  d   TpT	pMfW,
          W,
          ,          pWV,          ,
          pRV,          ) pVVV,          ,
          pV) V,           VV,
          ,          pVV,          V,           pVP                  RRV P
                  R RVR	 2R
\        V4      \        V4      \        V4      \        V4      R7       VP                  RR\        R\        V4      R\        VR(,          4      /4      R7       VP                  RR\        R\        V4      RR/4      R7       VP                  R4       EK  	  VP                  R4       R\        X4       R\        X4       R\        X4       R\        X	4       R\        X
4       R\        X4       R2pVP                  RR	VR\        V4      RRRR/R7       VP                  RRRR RRRR!R"/R7       VP                  RR	VRR#V P
                  R R$2RR/R7       VP                  RR	VRR#V P
                  R R%2R!R&RR/R7       VP                  RR	VRR#V P
                  R R'2R!R&RR/R7       VP                  R4       V ;P
                  ^,          un        R# ))r   )axisNr	  r6  linearGradientGRr/   r.  r   r3  )rc   gradientUnitsx1y1x2y2stop1z
stop-colorzstop-opacity)r[  r
  r,   zM r   z L rI   z Zr@  r;  rK  zshape-rendering
crispEdgesr   rv  r<  r9  r=  filterzurl(#colorMat)zurl(#GRz_0)z_1)zurl(#colorAdd)z_2)r^   )r   averager   rT   ranger   r0   rg   r   r   r`   )r<   transformed_pointscolors	avg_colorr   r  r  r  r  r  x3y3
rgba_colorxbybm1b1m2b2dpaths   &&&                 r   _draw_gouraud_triangle"RendererSVG._draw_gouraud_triangle  sr    JJvA.	R=AVqA'*FB'Q!4FB'Q!4FBJxg"'*7^Rx[27^cBh27+"Wr\LL ))!,AaU3.#B',<R,@#B',<R,@  B NN# ')"4"$4Z^$D%F G  H NN#\7:3F$2C%9 :  ; JJ'(M P 	

6 &r*+1-=b-A,B'+,A.>r.B-C%b)*!,<R,@+AE 	GI."C%|5 	 	6 	 &&)< "24 	 	5 	gd&7&7%:#>%|5 	 	6 	gd&7&7%:#>.%|5 	 	6 	gd&7&7%:#>.%|5 	 	6 	

3Qr   c           	     N   V P                   pVP                  ! R/ V P                  V4      B  VP                  4       pV P	                  V4      pV P
                  '       g   RV n        VP                  RRR7       VP                  RRR/RR	R
R
R7       VP                  R4       VP                  RRR7       VP                  RRR/RR7       VP                  R4       \        W#4       F&  w  rxV P                  VP                  V4      V4       K(  	  VP                  R 4       R# )rv  Tr  colorAddrq  feCompositeinSourceGraphicBackgroundImage
arithmeticr  )rP   in2operatork2k3colorMatfeColorMatrixr   r   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 )rP   rB  Nr  )r   rT   rm  frozenr  r   rg   r`   zipr  r  )	r<   r(  triangles_arraycolors_arrayr  r   r  pointsr  s	   &&&&&    r   draw_gouraud_triangles"RendererSVG.draw_gouraud_triangles  s$   5D0045$$&	229=    $DLL   NNo.%%3    JJx LL   NN)S  U JJx !/@NF''(@(@(H&Q A

3r   c                    R # rr   rj   rk   s   &r   option_scale_imageRendererSVG.option_scale_image      r   c                (    V P                   R ,          # )      R@)r   rk   s   &r   get_image_magnification#RendererSVG.get_image_magnification  s    ~~$$r   c           
        VP                   R ,          w  rgV^ 8X  g   V^ 8X  d   R# V P                  V4      pV'       d   V P                  P                  ! R/ VB  VP	                  4       p	V	e    V P                  P                  RRV	/R7       / p
VP                  4       p\        P                  R,          '       d   \        4       p\        P                  ! V4      P                  VRR7       T;'       g!    V P                  R	VP                  4       4      pR
\        P                  ! VP                  4       4      P!                  R4      ,           V
R&   MV P"                  f   \%        R4      hV P"                   R\'        V P(                  4       R2p\*        P-                  RV4       \        P                  ! V4      P                  V4       T;'       g    RV P                  R	V4      ,           pWR&   WR&   Vf   RV,          V P.                  ,          pRV,          V P.                  ,          pV P                  P1                  R	\3        RR^ V) 33.4      \5        V4      \5        V P6                  V,
          V,
          ) 4      \5        V4      \5        V4      V
R7       MVP9                  4       pVR8w  d   \5        V4      V
R&   \;        4       P=                  RV,          RV,          4      V,           \;        4       P?                  W#4      P=                  RR4      P?                  RV P6                  4      ,           p\3        RVPA                  4       3.4      V
R&   RV
R&   V P                  P1                  R	\5        V4      \5        V4      V
R7       V	e   V P                  PC                  R4       V'       d   V P                  PC                  R4       R# R# ) :N   NNrv  r  r  r   zsvg.image_inlinepng)r   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_rc   r  r}   )r  r/   r5  r   r   rP   r6  rM  r  r   r  z5image-rendering:crisp-edges;image-rendering:pixelatedr
  )r   r   rP   r  )r|   r  rA  )"shaperm  r   rT   r  get_gidr   r   r   r   	fromarraysaver  getvaluebase64	b64encoder  r   r   nextr   _logr   r   rg   r   r0   r   rR  r   r|   r}   r  r`   )r<   r(  r/   r5  imr  r"  rk  r  r  rP   r-  buffilenamealphaflippeds   &&&&&&          r   
draw_imageRendererSVG.draw_image  sA    xx|6Q!V))"-
 KK0Z0jjl?KKc<*=>jjl<<*++)COOB$$S$7??w?C*  077@A <  }}$  "F G G--tD4G4G/H.INHII<hGOOB$$X.AAw!AAC#+< tq4>>)Aq4>>)AKK-&q1"g(>/@ A"1%"T[[1_q%8#9:&q)2B12E    LLNE|$4U$;y! 
  q#'2
1sD!3,-  #6GNN,-.#0F;, 7O KK&q)2B12E   
 ?KKOOC KKOOC  r   c           	        V P                   pV'       d   VP                  R4       VP                  4        F[  w  pw  rEV P                  V4      pV P	                  \        V^@,          V4      RR7      pVP                  RW6\        R.4      R7       K]  	  VP                  R4       V P                  P                  V4       R# R# )zV
Emit definitions for not-yet-defined glyphs, and record them as having
been defined.
r	  Fr7  r@  )rc   r   r  N)r|   )g      ?)r   rT   rN   _adjust_char_idrC  r   rg   r   r`   r   r  )r<   glyph_map_newr   char_idr  codesrF  s   &&     r   _update_glyph_map_defs"RendererSVG._update_glyph_map_defs  s    
 LL .;.A.A.C**(..w7 ..B. / @	w13G2HI  K /D JJvOO""=1 r   c                &    VP                  R R4      # )z%20r.  r   )r<   r  s   &&r   r  RendererSVG._adjust_char_id  s    uc**r   c	           
        V P                   p	V	P                  V4       V P                  p
V P                  p\	        VP                  4       4      pVP                  4       p/ pVR 8w  d   WR&   VP                  4       '       d   VP                  4       MVP                  4       ^,          pV^8w  d   \        V4      VR&   WP                  ,          pR\        V4      R\        RW#33RV) 33RVV) 33.4      /pV	P                  RVR	7       V'       gw   VP                  V4      pVP                  VWJR
R7      pVw  pppV P!                  V4       V F3  w  ppppV	P#                  R\        RVV33RV33.4      RRV 2/R7       K5  	  MVR8X  d   VP%                  WTV
R
R7      pMVP'                  WTV
R
R7      pVw  pppV P!                  V4       V FD  w  ppppV P)                  V4      pV	P#                  R\        RVV33RV33.4      RRV 2/R7       KF  	  V F8  w  pp\+        VV4      pV P-                  VRR7      pV	P#                  RVR7       K:  	  V	P/                  R4       R# )#000000r;  rM  r
  r  r}   r~   r|   rv  r   T)	glyph_mapreturn_new_glyphs_onlyr  r  r  )r  rP   TeXFr7  r@  rr  N)r   rW   r   
_text2pathr   rV  get_size_in_pointsrQ  rR  r0   
FONT_SCALEr   r   rT   	_get_fontget_glyphs_with_fontr  rg   get_glyphs_texget_glyphs_mathtextr  r   rC  r`   ) r<   r(  r/   r5  r   propangleismathmtextr   r  	text2pathcolorfontsizer
  r  
font_scalerP   font_glyphs
glyph_infor  rectsglyph_id	xposition	ypositionr|   r  vertsr  r@  rF  s    &&&&&&&&&                       r   _draw_text_as_pathRendererSVG._draw_text_as_path  s   qOO	OO	

%**,I!&M"$"5"5"7"7RZZ\!_A:/6E) 4 44
]5),qf%UF9%:
{34.6 7
 	S(&&t,D44aT 5 KG/6,Ju''69C5)Y1$y)&<= 5(+3  )AhZ.9  ; :D #22y 3 O $77y 8 O/6,Ju''68B4Iu..w71$y)&<= 5(+3  )AgY-8  : 9C !&uE5) ..te.D	v3 !&
 	

3r   c	           
     t  a'a( V P                   p	\        VP                  4       4      p
/ p/ pV
R 8w  d   WR&   VP                  4       '       d   VP	                  4       MVP                  4       ^,          pV^8w  d   \        V4      VR&   V'       Eg   / pVP                  4       R8w  d   VP                  4       VR&   VP                  4       R8w  d   VP                  4       VR&   \        P                  VP                  4       ,          pVR8w  d   V VR&   R o(V(3R	 lo'V'3R
 lp\        VP                  4       4       R2VR&   RP                  \        P                  V! V4      4      4      VR&   VP                  4       R8w  d   VP                  4       VR&   \!        / VCVC4      VR&   V'       Edt   V^ 8X  g   VP#                  4       R8X  EdW   VP%                  4       pVP'                  VP)                  4       4      w  ppV P*                  V,
          p\,        P.                  ! V4      p\,        P0                  ! \,        P2                  ! V4      \,        P4                  ! V4      .4      p\,        P6                  ! VVV,
          VV,
          .4      pVVV^ ,          ,          ,           pVVV^,          ,          ,           pRRRRRR/pVVP9                  4       ,          VR&   \        V4      VR&   \        V4      VR&   \!        / VCVC4      VR&   \;        RV) VV33.4      VR&   M\;        RW#33RV) 33.4      VR&   V	P=                  RWNR7       R&# V	P?                  V4       V P@                  PB                  PE                  V^HV4      w  pppppV	PG                  R \!        / VCVC4      \;        RW#33RV) 33.4      R!7       V	PG                  R4       / pV EF  w  ppp p!p"\        PH                  ! V4      p#/ pV#PJ                  R8w  d   V#PJ                  VR&   V#PL                  R8w  d   V#PL                  VR&   V#PN                  R8w  d   V#PN                   VR&   \        V4       R2VR&   V#PP                  : VR&   V#PR                  R8w  d   V#PR                  VR&   \!        / VCVC4      p$V ^ 8X  d   ^p VPU                  V$. 4      PW                  V!V") V 34       EK  	  VPY                  4        FS  w  p$p%V%P[                  4        V% F7  w  r#p&V	P=                  R"\]        V&4      \        V4      \        V4      V$R#7       K9  	  KU  	  V	P_                  R4       V FI  w  r#ppV	P=                  R$\        V4      \        V) ^,
          4      \        V4      \        V4      R%7       KK  	  V	P_                  R 4       R&# )'r  r;  rM  normalz
font-stylezfont-varianti  zfont-weightc                     V R9   d   R# T # )sansz
sans-serif)r;  z
sans serifrj   )r   s   &r   _normalize_sans7RendererSVG._draw_text_as_text.<locals>._normalize_sanss  s    '+/E'E|O4Or   c              3      <"   S! V 4      p V \         P                  9   d1   \         P                  P                  V 4       F  pS! V4      x  K  	  V x  R # 5ir   )fmfont_family_aliasesFontManager_expand_aliases)fnr   r<  s   & r   _expand_family_entry<RendererSVG._draw_text_as_text.<locals>._expand_family_entryv  sL     $R(/// !# > >r B-d33 !C s   AAc                    < V P                  4        UUu. uF4  pS! V4       F%  pV\        P                  9   d   TM
\        V4      NK'  	  K6  	  upp# u uppi r   )
get_familyr?  r@  repr)r&  entryr   rD  s   &  r   _get_all_quoted_names=RendererSVG._draw_text_as_text.<locals>._get_all_quoted_names  s^     &*__%6A%6E$8$?D !%(>(> >DJN$? O%6A A As   :Apxz	font-sizez, zfont-familyzfont-stretchr
  anchorleftrT   rightr`   centermiddleztext-anchorr/   r5  r~   r  r}   rZ   r   rv  )r
  r  tspan)r/   r5  r
  r:  rs  N)0r   r   rV  rQ  rR  r0   	get_styleget_variantr?  weight_dict
get_weightget_sizerC   r   fromkeysget_stretchr   get_rotation_modeget_transformr  get_unitless_positionr   r   deg2radarraysincosdotget_har   rg   rW   r  mathtext_parserparserT   ttfFontPropertyr
  variantweightr   stretch
setdefaultrL   rN   sortchrr`   ))r<   r(  r/   r5  r   r&  r'  r(  r)  r   r+  
font_stylecolor_styler  rP   rg  rJ  r  axay	angle_raddir_vertv_offsetha_mpl_to_svgr   r   descentglyphsr1  spansr.  r,  thetextnew_xnew_yrI  r
  charstrD  r<  s)   &&&&&&&&&                              @@r   _draw_text_as_textRendererSVG._draw_text_as_textU  sl    

%
I"'"$"5"5"7"7RZZ\!_A:%5e%<K	"vF ~~8++/>>+;
<(!X--1-=-=-?
>*^^DOO$56F}/5h
=)P
A *:$--/)J(K2&NJ{#(,		3D9:)J}% !X--1-=-=-?
>*+,Iz,I[,IJF7Ou%1*(?(?(AX(M
 "//1	",,U-H-H-JKB[[2%
 JJu-	88RVVI%6y8I$JK66(a"fB,@A(Xa[00(Xa[00!''5!)8!5,9%,,.,I
=).r2s.r2s"/0M:0M0M"Nw&9B/0;2 '3{# ': 1&)y);+ ',{# NN61N4 NN1 //55aTB 2E67FE
 LL,-J
-Jk-JK#6)A62&%	284 $5   LL  E9?5h**40
;;(*/4{{J|,==H,16J~.<<3&38<<.J}--=h-G,H*K
;'/4zzn
=)==H,16J~.%&C&C{&CDb="G  +22EE673KL# :@& !&u

$GA!NNA*1-*1-# # %  % !. JJv',#eV&q)&r!t,*51+F3   (- JJsOr   c	           
        V P                  V4      p	V	'       d   V P                  P                  ! R/ V	B  VP                  4       e-   V P                  P                  RRVP                  4       /4       \        P
                  R,          R8X  d   V P                  WW4WVWx4       MV P                  WW4WVWx4       VP                  4       e   V P                  P                  R4       V	'       d   V P                  P                  R 4       R# R# )rv  Nr  r  zsvg.fonttyper@  r  )	rm  r   rT   r  r   r   r6  r|  r`   )
r<   r(  r/   r5  r   r&  r'  r(  r)  r  s
   &&&&&&&&& r   	draw_textRendererSVG.draw_text  s     ))"-
 KK0Z0::<#KKcL"**,#?@<<'61##B1fL##B1fL::<#KKOOC KKOOC  r   c                    R # rr   rj   rk   s   &r   flipyRendererSVG.flipy	  r  r   c                2    V P                   V P                  3# r   )r   r   rk   s   &r   get_canvas_width_height#RendererSVG.get_canvas_width_height  s    zz4;;&&r   c                :    V P                   P                  WV4      # r   )r  get_text_width_height_descent)r<   r   r&  r(  s   &&&&r   r  )RendererSVG.get_text_width_height_descent  s    <<QfMMr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )NH   r   )NNNN)FN)(rs   rt   ru   rv   r>   r   r   r   r   r  r  r/  r   r_  rb  rm  r   rx  r{  r~  rC  r  r  r  r  r  r  r  r  r  r  r6  r|  r  r  r  r  rx   ry   __classcell__r   rz   s   @@r   r   r   !  s     &$!&$ &$P-y1v-M&*X+Z@-..B9C! )V8&tfPB%L!\2&+EN[z!.'N Nr   r   c                   `   a a ] tR tRt oRRRR/t^HtRRRR/R ltR	 tR
 tV 3R lt	Rt
VtV ;t# )FigureCanvasSVGi  r   zScalable Vector Graphicssvgzbbox_inches_restoreNr   c               <   \         P                  ! VRRR7      ;_uu_ 4       p\         P                  ! V4      '       g   \        P                  ! R4      ! V4      pV P
                  P                  p^HV P
                  n        V P
                  P                  4       w  rgV^H,          V^H,          r\        V P
                  WgV\        WWEVR7      VR7      p
V P
                  P                  V
4       V
P                  4        RRR4       R#   + '       g   i     R# ; i)aa  
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_
rk  zutf-8)encoding)r   r   )r  N)r   open_file_cmfile_requires_unicodecodecs	getwriterfiguredpiget_size_inchesr   r   drawr   )r<   r  r  r   fhr  r   r   rk  r"  renderers   &&$$       r   	print_svgFigureCanvasSVG.print_svg  s    @ #@@B..r22%%g.r2++//C DKKO KK779ME2:v{q(UCA"hG$79H KKX& A@@@s   CD

D	c           	     6   \         P                  ! VR 4      ;_uu_ 4       p\        P                  ! RVR7      ;_uu_ 4       pV P                  ! V3/ VB uuRRR4       uuRRR4       #   + '       g   i     M; i RRR4       R#   + '       g   i     R# ; i)wbrk  )modefileobjN)r   r  gzipGzipFiler  )r<   r  kwargsr  
gzipwriters   &&,  r   
print_svgzFigureCanvasSVG.print_svgzJ  sd      400Bmmb11Z>>*77 21 10111 1000s#   !BA)	
B)A94BB	c                    R # )r   rj   rk   s   &r   get_default_filetype$FigureCanvasSVG.get_default_filetypeO  s    r   c                T   < V P                   P                  4        \        SV `  4       # r   )r  draw_without_renderingr   r  )r<   r   s   &r   r  FigureCanvasSVG.drawR  s    **,w|~r   rj   )rs   rt   ru   rv   	filetypes	fixed_dpir  r  r  r  rx   ry   r  r  s   @@r   r  r    sG     235I I,  ,  , \8
 r   r  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                   2    ] tR tRt]P
                  t]tRt	R# )_BackendSVGia  rj   N)
rs   rt   ru   rv   r   r   backend_versionr  FigureCanvasrx   rj   r   r   r  r  a  s    ooO"Lr   r  )<r  r  r   r  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   	getLoggerrs   r	  r   compiler!   r#   r'   r)   r0   r2   r   r   rY  r   r   r   r  FigureManagerSVGr   exportr  rj   r   r   <module>r     s           	 	     0B B ? %      8 "R jj+ ,
+,M M`= XvvwH*@rN, rNj>& >B % 	 
#( # #r   