+
    ,i<I              	          R t ^ RIt^ RIt^ RIHtHt ^ RIt^ RIt^ RIt^ RI	H
t
 ^ RIt^ RIHt ^ RIHtHtHt ^ RIHt ^ RIHtHtHtHtHtHt ]P8                  ! ]4      t/ RR	bR
R	bRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRR bR!R"bR#R$bR%R&bR'R(b/ R)R*bR+R,bR-R.bR/R0bR1R2bR3R4bR5R6bR7R8bR9R:bR;R<bR=R>bR?R@bRARBbRCRDbRERFbRGRHbRIRJbCRKRLRMRNRORPRQRR/CtRS t  ! RT RU]PB                  4      t" ! RV RW]PB                  4      t# ! RX RY]PH                  4      t%0 R`mt& ! RZ R[]PN                  4      t( ! R\ R]]PR                  4      t*]PV                   ! R^ R_]4      4       t,R# )az7Displays Agg images in the browser, with interactivity.N)BytesIOStringIO)Path)Image)_apibackend_basesbackend_tools)backend_agg)_BackendMouseButtonKeyEventLocationEvent
MouseEventResizeEventAltaltAltGraphCapsLock	caps_lockControlcontrolMetametaNumLocknum_lock
ScrollLockscroll_lockShiftshiftSupersuperEnterenterTabtab	ArrowDowndown	ArrowLeftleft
ArrowRightrightArrowUpupEndendHomehomePageDownpagedownPageUppageup	Backspace	backspaceDeletedeleteInsertinsertEscapeescapePausepauseSelectselectDeaddeadF1f1F2f2F3f3F4f4F5f5F6f6F7f7F8f8F9f9F10f10F11f11F12f12c                    W P                  R4      ^,           R pRV 9   d#   \        V4      ^8X  d   V P                  RR4      p V\        9   d   \        V,          pV RV P                  R4       V,           p V # )zHandle key valueskNzshift+ )indexlenreplace_SPECIAL_KEYS_LUT)keyvalues   & I/usr/lib/python3/dist-packages/matplotlib/backends/backend_webagg_core.py_handle_keyre   E   sm    		#"#$E3u:?++h+C!!!%(
osyy~

&CJ    c                   D   a a ] tR t^Qt oV 3R ltR tR tR tRtVt	V ;t
# )TimerTornadoc                6   < R V n         \        SV `  ! V/ VB  R # N)_timerr    __init__selfargskwargs	__class__s   &*,rd   rl   TimerTornado.__init__R   s    $)&)rf   c                   ^ RI pV P                  4        V P                  '       dg   VP                  P                  P                  4       pVP                  \        P                  ! V P                  R7      V P                  4      V n        R# VP                  P                  V P                  \        V P                  R4      4      V n        V P                  P                  4        R# )    N)millisecondsư>)tornado_timer_stop_singleioloopIOLoopinstanceadd_timeoutdatetime	timedeltainterval	_on_timerrk   PeriodicCallbackmaxstartrn   rw   rz   s   &  rd   _timer_startTimerTornado._timer_startV   s    <<<^^**335F ,,""> DK "..99DMM4(*DK KKrf   c                   ^ RI pV P                  f   R# V P                  '       dA   VP                  P                  P                  4       pVP                  V P                  4       MV P                  P                  4        RV n        R# )rt   N)rw   rk   ry   rz   r{   r|   remove_timeoutstopr   s   &  rd   rx   TimerTornado._timer_stope   s\    ;;\\\^^**335F!!$++.KKrf   c                f    V P                   e#   V P                  4        V P                  4        R # R # rj   )rk   rx   r   rn   s   &rd   _timer_set_interval TimerTornado._timer_set_intervalq   s)    ;;" #rf   )rk   )__name__
__module____qualname____firstlineno__rl   r   rx   r   __static_attributes____classdictcell____classcell__rq   __classdict__s   @@rd   rh   rh   Q   s     * 
   rf   rh   c                   J   a a ] tR t^xt oV 3R ltR tR tR tR tRt	Vt
V ;t# )TimerAsyncioc                6   < R V n         \        SV `  ! V/ VB  R # rj   )_taskr    rl   rm   s   &*,rd   rl   TimerAsyncio.__init__y   s    
$)&)rf   c                   "     \         P                  ! V4      G Rj  xL
  V P                  4        V P                  '       d   R# KF   L*  \         P                   d     R# i ; i5iTN)asynciosleepr   ry   CancelledError)rn   r   s   &&rd   _timer_taskTimerAsyncio._timer_task}   sX     mmH--- <<<   .
 )) s8   A'A A	%A A'	A A$ A'#A$$A'c                    V P                  4        \        P                  ! V P                  \	        V P
                  R ,          R4      4      4      V n        R# )g     @@rv   N)rx   r   ensure_futurer   r   r   r   r   s   &rd   r   TimerAsyncio._timer_start   s>    **S!7>?

rf   c                d    V P                   e   V P                   P                  4        R V n         R # rj   )r   cancelr   s   &rd   rx   TimerAsyncio._timer_stop   s#    ::!JJ
rf   c                f    V P                   e#   V P                  4        V P                  4        R # R # rj   )r   rx   r   r   s   &rd   r    TimerAsyncio._timer_set_interval   s)    ::! "rf   )r   )r   r   r   r   rl   r   r   rx   r   r   r   r   r   s   @@rd   r   r   x   s#     *	

   rf   r   c                     a a ] tR t^t o]P
                  ! R 4      t]tRt	V 3R lt
R tV 3R ltRR ltR tR tR	 tR
 tR tR tR tR tR t];t;t;t;t;t;ttR t];tt R t!R t"R t#R t$R t%R t&R t'R t(Rt)Vt*V ;t+# )FigureCanvasWebAggCorec                    \         # rj   )FigureManagerWebAggclss   &rd   <lambda>FigureCanvasWebAggCore.<lambda>   s    3Frf   Fc                   < \         SV `  ! V/ VB  R V n        R V n        \        P
                  ! R4      V n        RV n        RV n        R# )TfullN)rt   rt   )NN)	r    rl   _png_is_old_force_fullnpempty
_last_buff_current_image_mode_last_mouse_xyrm   s   &*,rd   rl   FigureCanvasWebAggCore.__init__   sK    $)&)    ((6*
 $* *rf   c                     ^ RI Hp V! 4        R# )rt   )showN)matplotlib.pyplotr   )rn   r   s   & rd   r   FigureCanvasWebAggCore.show   s
    *rf   c                   < R V n          \        SV `	  4        V P                  P	                  4        R#   T P                  P	                  4        i ; ir   )r   r    drawmanagerrefresh_allrn   rq   s   &rd   r   FigureCanvasWebAggCore.draw   s:    	'GLNLL$$&DLL$$&s	   4 Ac                H    R V n         V P                  P                  4        R# r   )r   r   r   )rn   bboxs   &&rd   blitFigureCanvasWebAggCore.blit   s      "rf   c                (    V P                  R 4       R# )r   N)
send_eventr   s   &rd   	draw_idle FigureCanvasWebAggCore.draw_idle   s    rf   c                   \         P                  ! \        P                  P                  R \        P                  P
                  R\        P                  P                  R\        P                  P                  R\        P                  P                  R\        P                  P                  R\        P                  P                  R/VR7      pV P                  RVR7       R	# )
pointerdefault	crosshairmovewaitz	ew-resizez	ns-resize)cursorr   N)r   check_getitemr   CursorsHANDPOINTERSELECT_REGIONMOVEWAITRESIZE_HORIZONTALRESIZE_VERTICALr   )rn   r   s   &&rd   
set_cursor!FigureCanvasWebAggCore.set_cursor   s    ##!!&&	!!))9!!//!!&&!!&&!!33[!!11;%
  	0rf   c                    \         P                  ! RR.VR7       V P                  V8w  d   Wn        V P                  R4       R# R# )a  
Set the image mode for any subsequent images which will be sent
to the clients. The modes may currently be either 'full' or 'diff'.

Note: diff images may not contain transparency, therefore upon
draw this mode may be changed if the resulting image has any
transparent component.
r   diffmodeN)r   check_in_listr   handle_send_image_mode)rn   r   s   &&rd   set_image_mode%FigureCanvasWebAggCore.set_image_mode   s@     	FF+$7##t+'+$''- ,rf   c                   V P                   '       Ed   V P                  4       p\        P                  ! VP	                  4       4      pVP                  \        P                  4      P                  ^4      pV P                  '       gF   VP                  V P                  P                  8w  g!   VR,          ^8g  P                  4       '       d   V P                  R4       TpM6V P                  R4       W0P                  8g  p\        P                  ! WS^ 4      pVP                  4       V n
        RV n        RV n         VP                  \        P                  R7      P!                  . VP                  O^N54      p\#        4       ;_uu_ 4       p\$        P&                  ! V4      P)                  VRR7       VP+                  4       uuRRR4       # R#   + '       g   i     R# ; i)	   r   r   F)dtypepng)formatN)NNNr      )r   get_rendererr   asarraybuffer_rgbaviewuint32squeezer   shaper   anyr   wherecopyuint8reshaper   r   	fromarraysavegetvalue)rn   rendererpixelsbuffoutputr   datar   s   &       rd   get_diff_image%FigureCanvasWebAggCore.get_diff_image   s\   ((*HZZ 4 4 67F ;;ryy)11!4D   zzT__%:%:: w3.3355##F+##F+.$a0 #iikDO$D$D;;RXX;.667I7Iq7IJDc%**3u*=||~ 9 8 s   
7GG	c                X    VR ,          p\        V RV 2V P                  4      pV! V4      # )typehandle_)getattrhandle_unknown_event)rn   evente_typehandlers   &&  rd   handle_event#FigureCanvasWebAggCore.handle_event  s3    v$'& 2335u~rf   c                B    \         P                  R VR,          V4       R# )zUnhandled message type %s. %sr	  N)_logwarningrn   r  s   &&rd   r  +FigureCanvasWebAggCore.handle_unknown_event
  s    4eFmUKrf   c                    R # rj    r  s   &&rd   
handle_ack!FigureCanvasWebAggCore.handle_ack  s     	rf   c                &    V P                  4        R # rj   )r   r  s   &&rd   handle_draw"FigureCanvasWebAggCore.handle_draw  s    		rf   c                   VR ,          pVR,          pV P                  4       P                  V,
          pW#3V n        VR,          pVR,          ^,           p\        P                  ^3\        P
                  ^3\        P                  ^3\        P                  ^3\        P                  ^33 UUu0 uF  w  rVVR,          V,          '       g   K  VkK!  	  pppVR,          pVP                  R4      p	VR9   d(   \        VR,           WVXWR7      P                  4        R# VR	8X  d"   \        R
WVXRWR7      P                  4        R# VR8X  d'   \        RWW1R,          WR7      P                  4        R# VR8X  d(   \        VR,           WVWxV	R7      P                  4        R# VR9   d'   \        VR,           WVWR7      P                  4        R# R# u uppi )xyr	  buttonbuttons	modifiersguiEvent_event)r#  r$  dblclickbutton_press_eventT)r&  r#  r$  scrollscroll_eventstep)r*  r#  r$  motion_notify)r"  r#  r$  N)button_pressbutton_release)figure_enterfigure_leave)r   heightr   r   LEFTRIGHTMIDDLEBACKFORWARDgetr   _processr   )
rn   r  r  r   r  r!  maskr"  r#  r$  s
   &&        rd   _handle_mouse$FigureCanvasWebAggCore._handle_mouse  s   #J#J&&*dvx1$ !!1%""A&##Q'!!1%$$b)(
(|v y!D(( F ( 	 
 +&	99Z(77v($1f!*??Gxzz!+Ta$!*??Gxzx~tf!*??Gxz&v($1&h!77&8+Ta$-BBJ(* 81
s   /GGc                    \        VR ,          R,           V \        VR,          4      .V P                  O5RVP                  R4      / P	                  4        R# )r	  r%  rb   r$  N)r   re   r   r6  r7  r  s   &&rd   re   "FigureCanvasWebAggCore._handle_key@  sI    v)4U5\*	1-1-@-@	1))J/	119rf   c                J    \        V P                  VR ,          4      ! 4        R# )nameN)r  toolbarr  s   &&rd   handle_toolbar_button,FigureCanvasWebAggCore.handle_toolbar_buttonF  s    eFm,.rf   c                (   V P                   P                  4       pV'       g   R V P                  P                   2pV P	                  RVR7       RV n        V P                  '       d   V P                  P                  4        V P                  4        R# )zFigure figure_labellabelTN)	figure	get_labelr   numr   r   r?  set_history_buttonsr   )rn   r  rC  s   && rd   handle_refresh%FigureCanvasWebAggCore.handle_refreshJ  sk    {{,,.$T\\%5%5$67Ll;<<< LL,,.rf   c                   \        VP                  R R4      4      V P                  ,          p\        VP                  RR4      4      V P                  ,          pV P                  pVP	                  W$P
                  ,          W4P
                  ,          RR7       RV n        V P                  P                  ! VP                  P                  RR/  \        RV 4      P                  4        V P                  4        R# )	widthi   r0  F)forwardTrN  resize_eventN)intr6  device_pixel_ratiorF  set_size_inchesdpir   r   resizer   sizer   r7  r   )rn   r  r  r   figs   &&   rd   handle_resize$FigureCanvasWebAggCore.handle_resizeV  s    		'3'(4+B+BB		(C()D,C,CCkkAKWWeD  SXX]]:E:ND)224rf   c                @    V P                  R V P                  R7       R# )
image_moder   N)r   r   r  s   &&rd   r   -FigureCanvasWebAggCore.handle_send_image_moded  s    4+C+CDrf   c                H    V P                  VP                  R ^4      4       R# )rQ  N_handle_set_device_pixel_ratior6  r  s   &&rd   handle_set_device_pixel_ratio4FigureCanvasWebAggCore.handle_set_device_pixel_ratioh  s    ++EII6JA,NOrf   c                H    V P                  VP                  R ^4      4       R# )	dpi_ratioNr]  r  s   &&rd   handle_set_dpi_ratio+FigureCanvasWebAggCore.handle_set_dpi_ratiok  s    ++EIIk1,EFrf   c                f    V P                  V4      '       d   R V n        V P                  4        R# R# r   )_set_device_pixel_ratior   r   )rn   rQ  s   &&rd   r^  5FigureCanvasWebAggCore._handle_set_device_pixel_ratioo  s+    ''(:;;#DNN <rf   c                h    V P                   '       d    V P                   P                  ! V3/ VB  R # R # rj   )r   _send_event)rn   
event_typerp   s   &&,rd   r   !FigureCanvasWebAggCore.send_eventt  s'    <<<LL$$Z:6: rf   )r   r   r   r   r   rj   ),r   r   r   r   r   classpropertymanager_classr   
_timer_clssupports_blitrl   r   r   r   r   r   r   r  r  r  r  r  r9  handle_button_presshandle_button_releasehandle_dblclickhandle_figure_enterhandle_figure_leavehandle_motion_notifyhandle_scrollre   handle_key_presshandle_key_releaser@  rJ  rW  r   r_  rc  r^  r   r   r   r   r   s   @@rd   r   r      s     &&'FGMJ M+$
'# 1.&BL!MJ && &/ &/ &&1&4H< -87)/
EPG
; ;rf   r   c            
          aa ] tR tRt o. ]P
                  P                  ORN U UUUu. uF  w  rr#V\        9   g   K  WW#3NK  	  upppp tV3R ltR t	R t
R tR tV3R ltV3R ltR	 tR
tVtV;t# u upppp i )NavigationToolbar2WebAggi  c                4   < R V n         \        SV `	  V4       R# )r]   N)messager    rl   )rn   canvasrq   s   &&rd   rl   !NavigationToolbar2WebAgg.__init__  s     rf   c                l    WP                   8w  d   V P                  P                  R VR7       Wn         R# )r|  r|  N)r|  r}  r   )rn   r|  s   &&rd   set_message$NavigationToolbar2WebAgg.set_message  s(    ll"KK""9g">rf   c                B    V P                   P                  R W#WER7       R# )
rubberbandx0y0x1y1Nr}  r   )rn   r  r  r  r  r  s   &&&&&&rd   draw_rubberband(NavigationToolbar2WebAgg.draw_rubberband  s    |bHrf   c                F    V P                   P                  R RRRRR7       R# )r  r  Nr  r   s   &rd   remove_rubberband*NavigationToolbar2WebAgg.remove_rubberband  s    |rbRHrf   c                P    V P                   P                  R4       V P                  # )zSave the current figure.r   )r}  r   UNKNOWN_SAVED_STATUS)rn   ro   s   &*rd   save_figure$NavigationToolbar2WebAgg.save_figure  s     v&(((rf   c                   < \         SV `  4        V P                  P                  R V P                  P
                  R7       R# navigate_moder   N)r    panr}  r   r   r>  r   s   &rd   r  NavigationToolbar2WebAgg.pan  s+    TYY^^Drf   c                   < \         SV `  4        V P                  P                  R V P                  P
                  R7       R# r  )r    zoomr}  r   r   r>  r   s   &rd   r  NavigationToolbar2WebAgg.zoom  s+    TYY^^Drf   c                    V P                   P                  ^ 8  pV P                   P                  \        V P                   4      ^,
          8  pV P                  P	                  RWR7       R# )rt   history_buttons)BackForwardN)
_nav_stack_posr_   r}  r   )rn   can_backwardcan_forwards   &  rd   rI  ,NavigationToolbar2WebAgg.set_history_buttons  sV    ++a/oo**S-AA-EE0$0 	 	Grf   r  )DownloadzDownload plotfilesavedownload)r   r   r   r   r   NavigationToolbar2	toolitems_ALLOWED_TOOL_ITEMSrl   r  r  r  r  r  r  rI  r   r   r   )texttooltip_text
image_filename_of_methodrq   r   s   0000@@rd   rz  rz    s     C]--77 CACC ;D
 00	 	9Z8CI!
II)
EEG GIs
   A6
A6
rz  c                      a a ] tR tRt oRt]tRtV 3R ltR t	RR lt
R tR tR	 tR
 tR tR t]RR l4       t]R 4       tR tRtVtV ;t# )r   i  N
Matplotlibc                D   < \        4       V n        \        SV `  W4       R # rj   )setweb_socketsr    rl   )rn   r}  rH  rq   s   &&&rd   rl   FigureManagerWebAgg.__init__  s    5%rf   c                    R # rj   r  r   s   &rd   r   FigureManagerWebAgg.show  s    rf   c                    V P                  R WP                  P                  ,          W P                  P                  ,          3VR7       R# )rT  )rU  rN  N)ri  r}  rQ  )rn   whrN  s   &&&&rd   rT  FigureManagerWebAgg.resize  s@    kk444kk4446	 	 	rf   c                8    V P                  R VR7       Wn        R# )rC  rD  N)ri  _window_title)rn   titles   &&rd   set_window_title$FigureManagerWebAgg.set_window_title  s    u5"rf   c                    V P                   # rj   )r  r   s   &rd   get_window_title$FigureManagerWebAgg.get_window_title  s    !!!rf   c                   \        VR 4      '       g   Q h\        VR4      '       g   Q hV P                  P                  V4       V P                  ! V P                  P
                  P                  P                  !   V P                  R4       R# )send_binary	send_jsonrefreshN)	hasattrr  addrT  r}  rF  r   rU  ri  rn   
web_sockets   &&rd   add_web_socket"FigureManagerWebAgg.add_web_socket  sl    z=1111z;////Z(T[['',,112#rf   c                <    V P                   P                  V4       R # rj   )r  remover  s   &&rd   remove_web_socket%FigureManagerWebAgg.remove_web_socket  s    
+rf   c                <    V P                   P                  V4       R # rj   )r}  r  )rn   contents   &&rd   handle_jsonFigureManagerWebAgg.handle_json  s      )rf   c                    V P                   '       dG   V P                  P                  4       pVe'   V P                    F  pVP                  V4       K  	  R # R # R # rj   )r  r}  r  r  )rn   r   ss   &  rd   r   FigureManagerWebAgg.refresh_all  sL    ;;--/D))AMM$' *   rf   c                6   Vf   \        4       pMTpVP                  \        \        4      P                  R,          P                  RR7      4       . pV P                  P                   F2  w  rErgVf   VP                  . RO4       K  VP                  WEWg.4       K4  	  VP                  R\        P                  ! V4       R24       . p\        \        P                  4       P                  4       4       F  w  rVP                  V
^ ,          4       K  	  VP                  R\        P                  ! V4       R24       VP                  RP                  \        P                  ! \        P!                  4       4      4      4       Vf   VP#                  4       # R # )	Nzweb_backend/js/mpl.jszutf-8)encodingzmpl.toolbar_items = z;

zmpl.extensions = zmpl.default_extension = {};)r]   r]   r]   r]   )r   writer   __file__parent	read_text
ToolbarClsr  appendjsondumpssortedr   get_supported_filetypes_groupeditemsr   get_default_filetyper   )r   streamr  r  r>  tooltipimagemethod
extensionsfiletypeexts   &&         rd   get_javascript"FigureManagerWebAgg.get_javascript  sQ   >ZFFd8n++.EEii1	3 	,/NN,D,D(D5|  !12  $!?@	 -E
 	+DJJy,A+B%HI
#$:$C$C$E$)EG-MH c!f%- 	(J)?(@FG299JJ-BBDEG 	H >??$$ rf   c                    \         P                  P                  \         P                  P                  \        4      R 4      # )web_backend)ospathjoindirnamer  r   s   &rd   get_static_file_path(FigureManagerWebAgg.get_static_file_path  s$    ww||BGGOOH5}EErf   c                Z    R V/VCpV P                    F  pVP                  V4       K  	  R# )r	  N)r  r  )rn   rj  rp   payloadr  s   &&,  rd   ri  FigureManagerWebAgg._send_event  s-    :00!!AKK  "rf   )r  r  )Trj   )r   r   r   r   _toolbar2_classrz  r  r  rl   r   rT  r  r  r  r  r  r   classmethodr  r  ri  r   r   r   r   s   @@rd   r   r     su     O)J M&#"
$,*( % %< F F! !rf   r   c                       ] tR tRt]t]tRtR# )_BackendWebAggCoreAggi  r  N)	r   r   r   r   r   FigureCanvasr   FigureManagerr   r  rf   rd   r  r    s    )L'Mrf   r  >   Nr  backr0   r  rN  r  )-__doc__r   r~   ior   r   r  loggingr  pathlibr   numpyr   PILr   
matplotlibr   r   r   matplotlib.backendsr	   matplotlib.backend_basesr
   r   r   r   r   r   	getLoggerr   r  ra   re   	TimerBaserh   r   FigureCanvasAggr   r  r  rz  FigureManagerBaser   exportr  r  rf   rd   <module>r     s   =       	    9 9 +M M "%#UE %#%#%# 	%# V	%#
 
%# "=%# g%# g%# g%# E%# !&%# !&%# "7%# %# E%#  V!%#"  #%#$ x%%#& !+'%#( x)%#* x+%#, x-%#. g/%#0 x1%#2 V3%#4 45%#6 47%#8 49%#: 4;%#< 4=%#> 4?%#@ 4A%#B 4C%#D 4EEEK%# P	$ =** $ N  =**   F[;[88 [;| +G}?? +G\W!-99 W!t 
(H ( (rf   