
    P/Ph              	          d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmc mc mZ ddlmZ ddlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d g d	d
ddddddddddddddddddej'        dk    rdndfd ej'        dk    rd!ndfd"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1R D             Z(d2 d3D             Z)d4 ej*        d5fej+        d6fej,        d7fej-        d8fej.        d9fej/        d:fej0        d;ffD             Z1 e j2        d          d<             Z3d= Z4 G d> d?e          Z5 G d@ dAee"j6                  Z7 G dB dCe"j8                  Z9 G dD dEe          Z: G dF dGee"j;                  Z< G dH dIe"j=                  Z> G dJ dKee"j;                  Z? ej@        e7           G dL dMejA                              ZB ej@        e7           G dN dOejC                              ZD ej@        e7           G dP dQejE                              ZF ej@        e7           G dR dSejG                              ZH ej@        e7           G dT dUejI                              ZJe<e:_K        e?e:_L        ejM         G dV dWe                      ZNdS )X    N)_apibackend_toolscbook)Gcf)_BackendFigureCanvasBaseFigureManagerBaseNavigationToolbar2	TimerBasecursorsToolContainerBaseMouseButton
CloseEventKeyEventLocationEvent
MouseEventResizeEvent_allow_interrupt   )	qt_compat)QtCoreQtGui	QtWidgets__version__QT_API_to_int
_isdeletedc                 n    i | ]2\  }}t          t          t          j        j        |                    |3S  )r   getattrr   QtKey.0kvs      ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/backends/backend_qt.py
<dictcomp>r(      sA     ) ) ).2aGGFIM1%%&&) ) )    )
Key_Escapeescape)Key_Tabtab)Key_Backspace	backspace)
Key_Returnenter)	Key_Enterr1   )
Key_Insertinsert)
Key_Deletedelete)	Key_Pausepause)
Key_SysReqsysreq)	Key_Clearclear)Key_Homehome)Key_Endend)Key_Leftleft)Key_Upup)	Key_Rightright)Key_Downdown)
Key_PageUppageup)Key_PageDownpagedown)	Key_ShiftshiftKey_ControldarwincontrolcmdKey_Metameta)Key_Altalt)Key_CapsLock	caps_lock)Key_F1f1)Key_F2f2)Key_F3f3)Key_F4f4)Key_F5f5)Key_F6f6)Key_F7f7)Key_F8f8)Key_F9f9)Key_F10f10)rk   f11)Key_F12f12)Key_Super_Lsuper)Key_Super_Rrq   c           	          g | ]]\  }}t          t          t          j        j        |                    t          t          t          j        j        |                    f^S r   )r   r    r   r!   KeyboardModifierr"   )r$   modkeys      r'   
<listcomp>rw   C   sc     	 	 	 	S WVY/5566WVY]C(())+	 	 	r)   ))ControlModifierrO   )AltModifierrU   )ShiftModifierrM   )MetaModifierrS   c                 T    i | ]%\  }}|t          t          j        j        |          &S r   )r    r   r!   CursorShaper#   s      r'   r(   r(   M   s:     
 
 
-1QAwvy$a((
 
 
r)   SizeAllCursorPointingHandCursorArrowCursorCrossCursor
WaitCursorSizeHorCursorSizeVerCursorc                     t           j                                        } | St          j                                        st          d          t          dv rd}d}nt          dv rd}d}nt          d          |D ]}t          j	        
                    | d	          }||j                                        mt          j	        
                    | d
          }t          j        dt           dt          j                     d| d|                                 d	            n|dk    r@	 t           j                            t          j        j                   n# t$          $ r Y nw xY w	 t           j                            t          j        j        j                   n# t$          $ r Y nw xY wt          j        dg          } t          j        dk    rJt/          t1          j        d                    }t5          j        |          }|                     |           |                     d           t1          j                     |dk    r$|                     t          j        j                   | S )NzInvalid DISPLAY variable>   PyQt6PySide6)PyQt5PySide2   >   r   r   )r   r      zShould never be herez
.QtWidgetsz.QtCorezMatplotlib is using z which wraps z+ however an instantiated QApplication from z< exists.  Mixing Qt major versions may not work as expected.
matplotlibrP   images/matplotlib.svgT) r   QApplicationinstancempl_c_internal_utilsdisplay_is_validRuntimeErrorr   sysmodulesgetr   warn_externalr   qVersionsetAttributer!   AA_EnableHighDpiScalingAttributeError#setHighDpiScaleFactorRoundingPolicy HighDpiScaleFactorRoundingPolicyPassThroughplatformstrr   _get_data_pathr   QIconsetWindowIconsetQuitOnLastWindowClosed_setup_new_guiappAA_UseHighDpiPixmaps)appother_bindings
qt_versionbindingru   
other_coreimageicons           r'   _create_qAppr   \   s   

 
)
)
+
+C { $5577 	;9::: )))1NJJ+++1NJJ5666% 	 	G+//W"8"8"899C3#3#<#<#>#>#J [__-@-@-@AA
"96 9 9((9 9)09 9 "**,,9 9 9   ??&33FI4UVVVV!   	"FF	:FH H H H 	 	 	D	$l^44<8##,-DEEFFE;u%%Dd###%%d+++!!!??VY;<<<Js$   0.E 
E,+E,03F$ $
F10F1c                 4     d } fd}t          ||          S )zEA context manager that allows terminating a plot by sending a SIGINT.c                      t          j                                         t           j        j        j                  }|j        j         fd            }|S )Nc                  V    	                       d           d S # t          $ r Y d S w xY wNr   )recvBlockingIOError)rsocks   r'   _may_clear_sockzF_allow_interrupt_qt.<locals>.prepare_notifier.<locals>._may_clear_sock   s?    

1"    s    
(()r   QSocketNotifierfilenoTypeRead	activatedconnect)r   snr   s   `  r'   prepare_notifierz-_allow_interrupt_qt.<locals>.prepare_notifier   sV    #ELLNNF4J4O4TUU			 	 	 	 
		 	r)   c                  x    t           d          r                                                                    d S )NcloseAllWindows)hasattrr   quit)qapp_or_eventloops   r'   handle_sigintz*_allow_interrupt_qt.<locals>.handle_sigint   sA    $&788 	0--///     r)   )r   )r   r   r   s   `  r'   _allow_interrupt_qtr      s>    
  &! ! ! ! !
 ,m<<<r)   c                   @     e Zd ZdZ fdZd Zd Zd Zd Zd Z	 xZ
S )TimerQTz-Subclass of `.TimerBase` using QTimer events.c                     t          j                    | _        | j        j                            | j                    t                      j        |i | d S N)r   QTimer_timertimeoutr   	_on_timerrq   __init__selfargskwargs	__class__s      r'   r   zTimerQT.__init__   sO     moo##DN333$)&)))))r)   c                 Z    t          | j                  s|                                  d S d S r   )r   r   _timer_stopr   s    r'   __del__zTimerQT.__del__   s8     $+&& 		 	r)   c                 D    | j                             | j                   d S r   )r   setSingleShot_singler   s    r'   _timer_set_single_shotzTimerQT._timer_set_single_shot   s     !!$,/////r)   c                 D    | j                             | j                   d S r   )r   setInterval	_intervalr   s    r'   _timer_set_intervalzTimerQT._timer_set_interval   s     /////r)   c                 8    | j                                          d S r   )r   startr   s    r'   _timer_startzTimerQT._timer_start   s    r)   c                 8    | j                                          d S r   )r   stopr   s    r'   r   zTimerQT._timer_stop   s    r)   )__name__
__module____qualname____doc__r   r   r   r   r   r   __classcell__r   s   @r'   r   r      s        77* * * * *  0 0 00 0 0        r)   r   c                       e Zd ZdZeZ ej        d           Zd de	j
        fde	j        fde	j        fde	j        fde	j        ffD             Zd) fd
	Zd Zd Zd Zd Zd)dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!e"d             Z#e"d)d	dd            Z$d Z%d  Z&d*d"Z'd)d#Z( fd$Z)d% Z*d)d&Z+d' Z,d( Z- xZ.S )+FigureCanvasQTqtc                     t           S r   )FigureManagerQT)clss    r'   <lambda>zFigureCanvasQT.<lambda>   s    ? r)   c                 T    i | ]%\  }}t          t          j        j        |          |&S r   )r    r   r!   r   r#   s      r'   r(   zFigureCanvasQT.<dictcomp>   s:       15A	%q))1  r)   
LeftButtonRightButtonMiddleButtonXButton1XButton2Nc                    t                       t                                          |           d| _        d| _        d | _        d| _        |                     t          j	        j
        j                   |                     d            | j        |                                   t          j        t          j        d                    }|                     |           d S )N)figureFc                     d S r   r   painters    r'   r   z)FigureCanvasQT.__init__.<locals>.<lambda>   s    4 r)   Twhite)r   rq   r   _draw_pending_is_drawing_draw_rect_callback_in_resize_eventr   r   r!   WidgetAttributeWA_OpaquePaintEventsetMouseTrackingresizeget_width_heightr   QPaletteQColor
setPalette)r   r   paletter   s      r'   r   zFigureCanvasQT.__init__   s    '''" #7#7  %&)3GHHHd###T**,,--.g!6!677     r)   c                     |                      |                                 pd          rPt          j        |                                 |                                           }|                     |           d S d S r   )_set_device_pixel_ratiodevicePixelRatioFr   QResizeEventsizeresizeEventr   events     r'   _update_pixel_ratioz"FigureCanvasQT._update_pixel_ratio   sv    ''&&((-A/ / 	$
 &tyy{{DIIKK@@EU#####	$ 	$r)   c                     |                                   |@|j                            | j                    |j                            | j                    d S d S r   )r  physicalDotsPerInchChangedr   logicalDotsPerInchChanged)r   screens     r'   _update_screenzFigureCanvasQT._update_screen   s\      """-55d6NOOO,44T5MNNNNN r)   c                     |                                                                  }|j                            | j                   |                     |                                           d S r   )windowwindowHandlescreenChangedr   r  r  )r   r  r  s      r'   	showEventzFigureCanvasQT.showEvent  sY     ++--$$T%8999FMMOO,,,,,r)   c                 b    |                      t          j        t          |                     d S )N)cursor)	setCursorr   check_getitemcursord)r   r  s     r'   
set_cursorzFigureCanvasQT.set_cursor	  s*    t)'&AAABBBBBr)   c                    |2|                      t          j                                                  }nIt	          |d          r|                                }n$t	          |d          r|                                }|                                }| j        j        j	        | j
        z  |                                z
  }|| j
        z  || j
        z  fS )aI  
        Calculate mouse coordinates in physical pixels.

        Qt uses logical pixels, but the figure is scaled to physical
        pixels for rendering.  Transform to physical pixels so that
        all of the down-stream transforms work as expected.

        Also, the origin is different and needs to be corrected.
        Npositionpos)mapFromGlobalr   QCursorr&  r   r%  xr   bboxheightdevice_pixel_ratioy)r   r&  r)  r-  s       r'   mouseEventCoordszFigureCanvasQT.mouseEventCoords  s     ;$$U]%6%6%8%899CCS*%% 	,,..CCS%   	''))CEEGGK#d&==G4**A0G,GGGr)   c                    t           j                                                                        }| j        d S t          d| g|                     |          R |                     |          |d                                 d S )Nfigure_enter_event	modifiersguiEvent)	r   r   r   queryKeyboardModifiersr   r   r.  _mpl_modifiers_process)r   r  modss      r'   
enterEventzFigureCanvasQT.enterEvent#  s     %..00GGII;F*D 	&,,U33	& 	& $ 3 3D 9 9$	& 	& 	& '/hjjjjjr)   c                     t           j                                         | j        d S t	          d| g|                                 R |                                 |d                                 d S )Nfigure_leave_eventr1  )r   r   restoreOverrideCursorr   r   r.  r5  r6  r  s     r'   
leaveEventzFigureCanvasQT.leaveEvent.  s|    44666;F*D 	&,,..	& 	& $ 3 3 5 5$	& 	& 	& '/hjjjjjr)   c                    | j                             |                                          }|T| j        Ot	          d| g|                     |          |R |                                 |d                                 d S d S d S )Nbutton_press_eventr1  buttondr   buttonr   r   r.  r5  r6  r   r  rA  s      r'   mousePressEventzFigureCanvasQT.mousePressEvent7  s    !!%,,..11$+"9+T '--e44'6<' '!%!4!4!6!6 %' ' ' (0xzzzzz	 "9"9r)   c                    | j                             |                                          }|U| j        Pt	          d| g|                     |          |R d|                                 |d                                 d S d S d S )Nr>  T)dblclickr2  r3  r?  rB  s      r'   mouseDoubleClickEventz$FigureCanvasQT.mouseDoubleClickEvent?  s    !!%,,..11$+"9+T '--e44'6<' 'GK!%!4!4!6!6 %' ' ' (0xzzzzz	 "9"9r)   c                     | j         d S t          d| g|                     |          R |                     |                                          |                                 |d                                 d S )Nmotion_notify_event)buttonsr2  r3  )r   r   r.  _mpl_buttonsrI  r5  r6  r  s     r'   mouseMoveEventzFigureCanvasQT.mouseMoveEventG  s    ;F($ 	#))%00	# 	#,,U]]__==!0022!		# 	# 	# $,8:::::r)   c                    | j                             |                                          }|T| j        Ot	          d| g|                     |          |R |                                 |d                                 d S d S d S )Nbutton_release_eventr1  r?  rB  s      r'   mouseReleaseEventz FigureCanvasQT.mouseReleaseEventP  s    !!%,,..11$+"9-t '--e44'6<' '!%!4!4!6!6 %' ' ' (0xzzzzz	 "9"9r)   c                    |                                                                 s4t          j                                                                        dk    r*|                                                                dz  }n&|                                                                 }|rS| j        Nt          d| g| 
                    |          R ||                                 |d                                 d S d S d S )Nxcbx   scroll_event)stepr2  r3  )
pixelDeltaisNullr   r   r   platformName
angleDeltar-  r   r   r.  r5  r6  )r   r  stepss      r'   
wheelEventzFigureCanvasQT.wheelEventX  s    %%'' 	+)2244AACCuLL$$&&((**S0EE$$&&((**E 	2T[,~t '--e44' ';@!%!4!4!6!6 %' ' ' (0xzzzzz		2 	2,,r)   c                     |                      |          }|?| j        :t          d| |g|                                 R d|i                                 d S d S d S )Nkey_press_eventr3  _get_keyr   r   r.  r6  r   r  rv   s      r'   keyPressEventzFigureCanvasQT.keyPressEventf  sv    mmE""?t{6&%0022% % %#% %%-XZZZZZ ?66r)   c                     |                      |          }|?| j        :t          d| |g|                                 R d|i                                 d S d S d S )Nkey_release_eventr3  r\  r^  s      r'   keyReleaseEventzFigureCanvasQT.keyReleaseEventm  sv    mmE""?t{6($%0022% % %#% %%-XZZZZZ ?66r)   c                 *   | j         rd S | j        d S d| _         	 |                                                                | j        z  }|                                                                | j        z  }| j        j        }||z  }||z  }| j                            ||d           t          j	        
                    | |           t          d|                                            |                                  d| _         d S # d| _         w xY w)NTF)forwardresize_event)r  r   r  widthr,  r+  dpiset_size_inchesr   QWidgetr  r   r6  	draw_idle)r   r  whdpivalwinchhinchs          r'   r  zFigureCanvasQT.resizeEventt  s     	F;F $	*

""$$t'>>A

##%%(??A[_FJEJEK''ue'DDD))$666--66888NN$)D!!!ED!))))s   C%D	 		Dc                 Z    |                                  \  }}t          j        ||          S r   )r  r   QSize)r   rk  rl  s      r'   sizeHintzFigureCanvasQT.sizeHint  s)    $$&&1|Aq!!!r)   c                 ,    t          j        dd          S )N
   )r   rq  r   s    r'   minimumSizeHintzFigureCanvasQT.minimumSizeHint  s    |B###r)   c                 v     t                       fdt          j                                        D             S )Nc                 >    h | ]\  }}t          |          z  |S r   )r   )r$   maskrA  rI  s      r'   	<setcomp>z.FigureCanvasQT._mpl_buttons.<locals>.<setcomp>  s<     , , ,<44==7*, , , ,r)   )r   r   r@  items)rI  s   `r'   rJ  zFigureCanvasQT._mpl_buttons  sI    '"", , , ,>+A+G+G+I+I , , , 	,r)   excludec                      0t           j                                                                         t	                       fdt
          D             S )Nc                 n    g | ]1\  }}|k    |z  t           |                             d d          2S )rQ   ctrl)SPECIAL_KEYSreplace)r$   rx  rv   r|  r2  s      r'   rw   z1FigureCanvasQT._mpl_modifiers.<locals>.<listcomp>  sL     8 8 8D#c>>i$&6> S!)))V<<!>>r)   )r   r   r   keyboardModifiersr   _MODIFIER_KEYS)r2  r|  s   ``r'   r5  zFigureCanvasQT._mpl_modifiers  sg    !.7799KKMMII&&	8 8 8 8 8!/8 8 8 	8r)   c                 f   |                                 }|                     |          }	 t          |         }n`# t          $ rS |t          j        k    rY d S t          |          }d|v r|                    d           n|                                }Y nw xY wd	                    ||gz             S )Nr{  rN   +)
rv   r5  r  KeyErrorr   
maxunicodechrremovelowerjoin)r   r  	event_keyr7  rv   s        r'   r]  zFigureCanvasQT._get_key  s    IIKK	""9"55	" y)CC 	" 	" 	" 3>))tti..C $G$$$$iikk	"" xxu%%%s   : B=BBc                 f    t           j                                                                         d S r   )r   r   r   processEventsr   s    r'   flush_eventszFigureCanvasQT.flush_events  s)    ''))7799999r)   r   c                    t          | d          r(| j                                        rt          d          t	          j                    x| _        }|dk    r5t          j                            t          |dz            |j	                  }t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )N_event_loopzEvent loop already runningr   i  )r   r  	isRunningr   r   
QEventLoopr   
singleShotintr   r   r   _exec)r   r   
event_loop_s       r'   start_event_loopzFigureCanvasQT.start_event_loop  s    4'' 	=D,<,F,F,H,H 	=;<<<(.(9(;(;;:Q;;((Wt^)<)<joNNA ,, 	( 	(OJ'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   B??CCc                 \    t          | d          r| j                                         d S d S )Nr  )r   r  r   r  s     r'   stop_event_loopzFigureCanvasQT.stop_event_loop  s9    4'' 	$!!#####	$ 	$r)   c                     | j         rdS t          j        | d          5  t                                                       ddd           n# 1 swxY w Y   |                                  dS )z5Render the figure, and queue a request for a Qt draw.NT)r   )r   r   _setattr_cmrq   drawupdate)r   r   s    r'   r  zFigureCanvasQT.draw  s      	Ft666 	 	GGLLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   !AAAc                     t          | dd          s?t          | dd          s0d| _        t          j                            d| j                   dS dS dS )z9Queue redraw of the Agg buffer and request Qt paintEvent.r   Fr   Tr   N)r    r   r   r   r  
_draw_idler   s    r'   rj  zFigureCanvasQT.draw_idle  sh     ou55 	9mU33	9!%DM$$Q88888	9 	9 	9 	9r)   c                      | j         r j         j        } fd|j        D             \  }}}}||z   }                     |                                                                 |z
  ||           d S )Nc              3   F   K   | ]}t          |j        z            V  d S r   r  r,  r$   ptr   s     r'   	<genexpr>z&FigureCanvasQT.blit.<locals>.<genexpr>  s3      NNBc"t6677NNNNNNr)   )r   r*  boundsrepaintrectr+  )r   r*  lbrk  rl  ts   `      r'   blitzFigureCanvasQT.blit  s{    <DK<;#DNNNN$+NNN
1aEQ		**,,q0!Q77777r)   c                    |                                  5  | j        s	 d d d            d S d| _        |                                 dk    s|                                 dk    r	 d d d            d S 	 |                                  n## t
          $ r t          j                     Y nw xY wd d d            d S # 1 swxY w Y   d S )NFr   )_idle_draw_cntxr   r+  rf  r  	Exception	traceback	print_excr   s    r'   r  zFigureCanvasQT._draw_idle  sL   !!## 
	& 
	&% 
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& "'D{{}}!!TZZ\\Q%6%6
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	&&		 & & &#%%%%%&
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	& 
	&s:   	B68B61BB6B&#B6%B&&B66B:=B:c                      |' fd|D             \  }}|z   |z    fd}nd }| _                                           d S )Nc              3   F   K   | ]}t          |j        z            V  d S r   r  r  s     r'   r  z/FigureCanvasQT.drawRectangle.<locals>.<genexpr>  s3      MM"CT%< <==MMMMMMr)   c                 6   t          j        t          j        d          dj        z            }|                    ddg           t          j        d          dft          j        d          dffD ]\  }}|                    |           |                    |           |                     |           |                                |                                |                                |                                d S )Nblackr      r   r   )	r   QPenr  r,  setDashPatternsetDashOffsetsetColorsetPendrawLine)	r   pencoloroffsetr   x0x1y0y1s	       r'   r   z9FigureCanvasQT.drawRectangle.<locals>._draw_rect_callback  s0   jL))// 
 ""Aq6***g..2g..2& 5 5ME6 %%f---LL'''NN3''' $$RR444$$RR444$$RR444$$RR44445 5r)   c                     d S r   r   r   s    r'   r   z9FigureCanvasQT.drawRectangle.<locals>._draw_rect_callback  s    r)   )r   r  )	r   r  rk  rl  r   r  r  r  r  s	   `    @@@@r'   drawRectanglezFigureCanvasQT.drawRectangle  s     MMMMMMMLBAqaBaB5 5 5 5 5 5 5 5 5 5*  #6 r)   r   )r   )/r   r   r   required_interactive_frameworkr   
_timer_clsr   classpropertymanager_classr   LEFTRIGHTMIDDLEBACKFORWARDr@  r   r  r  r  r#  r.  r8  r<  rC  rF  rK  rN  rY  r_  rb  r  rr  ru  staticmethodrJ  r5  r]  r  r  r  r  rj  r  r  r  r   r   s   @r'   r   r      s       %)"J&D&'B'BCCM ;+,K-.[/0)*,-:
  G! ! ! ! ! ! $ $ $O O O- - -C C CH H H H,	1 	1 	11 1 12 2 22 2 2. . .2 2 22 2 20 0 00 0 0* * **" " "$ $ $ , , \, 8$ 8 8 8 8 \8& & &4: : :	( 	( 	( 	($ $ $ $
    
9 
9 
98 8 8 8& & &      r)   r   c                   <     e Zd Z ej                    Z fdZ xZS )
MainWindowc                 |    | j                                          t                                          |           d S r   )closingemitrq   
closeEvent)r   r  r   s     r'   r  zMainWindow.closeEvent$  s5    5!!!!!r)   )r   r   r   r   Signalr  r  r   r   s   @r'   r  r  !  sE        fmooG" " " " " " " " "r)   r  c                   b     e Zd ZdZ fdZd Zd Zd Zed             Z	d Z
d Zd	 Zd
 Z xZS )r   z
    Attributes
    ----------
    canvas : `FigureCanvas`
        The FigureCanvas instance
    num : int or str
        The Figure number
    toolbar : qt.QToolBar
        The qt.QToolBar
    window : qt.QMainWindow
        The qt.QMainWindow
    c                 t   t                      | _        t                                          ||           | j        j                            | j                   t          j        dk    rOt          t          j        d                    }t          j        |          }| j                            |           d| j        _        | j        rK| j                            | j                   | j                                                                        }nd}|                                }|                                }||z   }| j                            |                                |           | j                            | j                   t1          j                    r2| j                                         | j                                         | j                            t:          j        j        j                    | j        !                                 | j        "                                 d S )NrP   r   Fr   )#r  r  rq   r   r  r   _widgetclosedr   r   r   r   r   r   r   r   _destroyingtoolbar
addToolBarrr  r+  r  rf  setCentralWidgetcanvasr   is_interactiveshowrj  setFocusPolicyr   r!   FocusPolicyStrongFocussetFocusraise_)
r   r  numr   r   
tbs_heightcs	cs_heightr+  r   s
            r'   r   zFigureManagerQT.__init__7  s    ll%%%##D$6777<8##,-DEEFFE;u%%DK%%d+++"'< 	K""4<000..007799JJJ __IIKK	Z'288::v...$$T[111 	$KK!!### 	""69#8#DEEEr)   c                     | j                                         r| j                                          d S | j                                          d S r   )r  isFullScreen
showNormalshowFullScreenr   s    r'   full_screen_togglez"FigureManagerQT.full_screen_toggle_  sL    ;##%% 	)K""$$$$$K&&(((((r)   c                     t          d| j                                                   | j        j        rd S d| j        _        	 t          j        |            d S # t          $ r Y d S w xY w)Nclose_eventT)r   r  r6  r  r  r   destroyr   r   s    r'   r  zFigureManagerQT._widgetclosede  sy    =$+..77999;" 	F"&	K 	 	 	DD	s   A 
A'&A'c                    t          || j        j        z            }t          || j        j        z            }| j                                        | j                                        z
  }| j                                        | j                                        z
  }| j                            ||           | j                            ||z   ||z              d S r   )r  r  r,  r  rf  r+  r  )r   rf  r+  extra_widthextra_heights        r'   r  zFigureManagerQT.resizer  s     EDK::;;Vdk<<==k''))DK,=,=,?,??{))++dk.@.@.B.BB5&)))5;.0EFFFFFr)   c                     t           j                                        }|r>t          |          5  t	          j        |           d d d            d S # 1 swxY w Y   d S d S r   )r   r   r   r   r   r  )r   qapps     r'   start_main_loopzFigureManagerQT.start_main_loop|  s    %..00 	&$T** & &%%%& & & & & & & & & & & & & & & & & &	& 	&s   AAAc                     d| j         _        | j                                          t          j        d         r4| j                                          | j                                          d S d S )NFzfigure.raise_window)r  r  r  r   rcParamsactivateWindowr  r   s    r'   r  zFigureManagerQT.show  sh    "'<-. 	!K&&(((K     	! 	!r)   c                     t           j                                        d S | j        j        rd S d| j        _        | j        r| j                                         | j                                         d S NT)r   r   r   r  r  r  r  closer   r   s     r'   r  zFigureManagerQT.destroy  sp    !**,,4F;" 	F"&< 	#L  """r)   c                 4    | j                                         S r   )r  windowTitler   s    r'   get_window_titlez FigureManagerQT.get_window_title  s    {&&(((r)   c                 :    | j                             |           d S r   )r  setWindowTitle)r   titles     r'   set_window_titlez FigureManagerQT.set_window_title  s    ""5)))))r)   )r   r   r   r   r   r  r  r  classmethodr  r  r  r  r  r   r   s   @r'   r   r   )  s         & & & & &P) ) )  G G G & & [&! ! !	 	 	) ) )* * * * * * *r)   r   c                        e Zd Zg ej        Ze                    d eD                                 d          dz   d           ddZd Zd	 Z	d
 Z
 fdZ fdZd Zd Zd Zd Zd Zd Z xZS )NavigationToolbar2QTc                     g | ]^}}|S r   r   )r$   namer  s      r'   rw   zNavigationToolbar2QT.<listcomp>  s    (((($(((r)   Subplotsr   )	Customizez%Edit axis, curve and image parametersqt4_editor_optionsedit_parametersNTc                    t           j                            | |           |                     t          j                            t          t          j        j        j                  t          t          j        j        j	                  z                       || _
        i | _        d| _        | j        D ]\  }}}}||                                  t          | |          } t!          j        |          t!          j        |                    } t	          j                    |          }|                     |                     |dz             ||          }	|	| j        |<   |dv r|	                    d           ||	                    |           | j
        rt          j        d|           | _        | j                            t          j                            t          t          j        j        j                  t          t          j        j        j                  z                       | j                            t          j        t           j        j         j!        t           j        j         j"                             | #                    | j                  }
|
$                    d           tK          j        | |           dS )z9coordinates: should we show the coordinates on the right?N.png)zoompanT )&r   QToolBarr   setAllowedAreasr   r!   ToolBarArear   TopToolBarAreaBottomToolBarAreacoordinates_actions_subplot_dialog	toolitemsaddSeparatorr    	functoolswrapspartialSlot	addAction_iconsetCheckable
setToolTipQLabellocLabelsetAlignmentAlignmentFlag
AlignRightAlignVCentersetSizePolicyQSizePolicyPolicy	ExpandingIgnored	addWidget
setVisibler
   )r   r  parentr  texttooltip_text
image_filecallbackslotalabelActions              r'   r   zNavigationToolbar2QT.__init__  sv   ##D&111VY22FI)899FI);<<=> > 	? 	? 	? '#8< 	/ 	/4D,
H|!!####tX..,yt,,Y->t-D-DEE$v{}}T**NN4::j6.A#B#B#'/ /*+h'..NN4(((+LL...
  	)%,R66DMM&&vy'>'>	/:;;	/<==>(? (? @ @ @ M''	(=%,6%,4) )    ..77K""4(((#D&11111r)   c                 P   t          j        d|          }|                    |j                            dd                    }t          |                                r|n|          }t          j        |          }|	                    | 
                                pd           |                                                     |                                                                           dk     r|                                                     |                                           }|                    t          j        d          t$          j        j        j                  }|                    |           |                    |           t          j        |          S )z
        Construct a `.QIcon` from an image file *name*, including the extension
        and relative to Matplotlib's "images" data directory.
        imagesr  z
_large.pngr      r  )r   r   	with_namer  r  r   existsr   QPixmapsetDevicePixelRatior  r
  r  backgroundRolevalueforegroundRolecreateMaskFromColorr  r   r!   MaskModeMaskOutColorfillsetMaskr   )r   r  path_regular
path_largefilenamepm
icon_colorrx  s           r'   r%  zNavigationToolbar2QT._icon  s_    +Hd;;!++%%fl;;= =
Z%6%6%8%8JzzlKK]8$$
""$$)	+ 	+ 	+<<>> 3 3 5 566<<>>DD--d.A.A.C.CDDJ))W%%	"/1 1D GGJJJt{2r)   c                    | j         j                                        }|s:t          j                            | j                                         dd           d S t          |          dk    r|\  }nd |D             fdD             }t          |          D ]1\  }}|         |v r"|xx         dt          |          ddz  cc<   2t          j
                            | j                                         d	d
dd          \  }}|sd S |                    |                   }t          j        ||            d S )NErrorzThere are no Axes to edit.r   c           
      t   g | ]}|                                 p|                                p|                    d           pu|                    d          p`d                    t          d|                                |                                g                    pdt          |          j         dS )rB   rF   z - Nz<anonymous >)	get_label	get_titler  filter
get_xlabel
get_ylabeltyper   )r$   axs     r'   rw   z8NavigationToolbar2QT.edit_parameters.<locals>.<listcomp>  s             33V$$3 W%%3 

6$"--//(JKKLL	3
 3d2hh/222     r)   c                 F    g | ]}                     |          d k    |S )r   )count)r$   r  titless     r'   rw   z8NavigationToolbar2QT.edit_parameters.<locals>.<listcomp>  s9      F  F  FV\\%-@-@1-D-D-D-D-Dr)   z (id: z#x)r  zSelect Axes:r   F)r  r   get_axesr   QMessageBoxwarningr5  len	enumerateidQInputDialoggetItemindexfigureoptionsfigure_edit)r   axesr[  duplicate_titlesiitemokr^  s          @r'   r  z$NavigationToolbar2QT.edit_parameters  s   {!**,, 	*!))""$$g/KM M MFYY!^^CBB         F F  F  F  F#) F  F  F"4 7 72!9 0001III!6"R&&!6!6!6!66III -55""$$^VQ? ?HD"  fll4(()B!"d+++++r)   c                     d| j         v r.| j         d                             | j        j        dk               d| j         v r0| j         d                             | j        j        dk               d S d S )Nr  PANr  ZOOM)r  
setCheckedmoder  r   s    r'   _update_buttons_checkedz,NavigationToolbar2QT._update_buttons_checked  sr    DM!!M% ++DINe,CDDDT]""M&!,,TY^v-EFFFFF #"r)   c                 \     t                      j        |  |                                  d S r   )rq   r  ru  r   r   r   s     r'   r  zNavigationToolbar2QT.pan  s.    T$$&&&&&r)   c                 \     t                      j        |  |                                  d S r   )rq   r  ru  rw  s     r'   r  zNavigationToolbar2QT.zoom  s.    d$$&&&&&r)   c                 L    | j         r| j                            |           d S d S r   )r  r)  setTextr   ss     r'   set_messagez NavigationToolbar2QT.set_message  s3     	%M!!!$$$$$	% 	%r)   c                     | j         j        j        j        }||z
  }||z
  }d ||||z
  ||z
  fD             }| j                             |           d S )Nc                 ,    g | ]}t          |          S r   )r  )r$   vals     r'   rw   z8NavigationToolbar2QT.draw_rubberband.<locals>.<listcomp>  s    ???SC???r)   )r  r   r*  r+  r  )r   r  r  r  r  r  r+  r  s           r'   draw_rubberbandz$NavigationToolbar2QT.draw_rubberband  sd    #(/b[b[??RR"Wb2g$>???!!$'''''r)   c                 :    | j                             d            d S r   )r  r  r   s    r'   remove_rubberbandz&NavigationToolbar2QT.remove_rubberband!  s    !!$'''''r)   c                 `     j         Tt           j        j         j                                                   _          j                            d fd            j                                           j                             d            j                                           j         S )Nr  c                 6    j                                         S r   )r  reject)er   s    r'   r   z9NavigationToolbar2QT.configure_subplots.<locals>.<lambda>)  s    )=)D)D)F)F r)   T)	r  SubplotToolQtr  r   r5  mpl_connectupdate_from_current_subplotparssetModalr  r   s   `r'   configure_subplotsz'NavigationToolbar2QT.configure_subplots$  s    '#0"DK$6$6$8$8$: $:D K##FFFFH H H<<>>>%%d+++!!#####r)   c                 @   | j                                         }t          |                                          }| j                                         }t
          j                            t          j	        d                   }t
          j        
                    || j                                                   }g }d }|D ]G\  }	}
d
                    d |
D                       }|	 d| d}||
v r|}|                    |           Hd
                    |          }t          j                            | j                                         d|||          \  }}|r|dk    r,t
          j                            |          t          j	        d<   	 | j         j                            |           no# t(          $ rb}t          j                            | d	t/          |          t          j        j        j        t          j        j        j                   Y d }~nd }~ww xY w|S )
Nzsavefig.directory c                     g | ]}d |z  S )z*.%sr   )r$   exts     r'   rw   z4NavigationToolbar2QT.save_figure.<locals>.<listcomp>9  s    !?!?!?3&3,!?!?!?r)   z (r_  z;;zChoose a filename to save tor  zError saving file)r  get_supported_filetypes_groupedsortedrz  get_default_filetypeospath
expanduserr   r  r  get_default_filenameappendr   QFileDialoggetSaveFileNamer5  dirnamer   savefigr  ra  criticalr   StandardButtonOkNoButton)r   r   	filetypessorted_filetypesdefault_filetype	startpathr   filtersselectedFilterr  exts	exts_listrW  fnamer  s                  r'   save_figurez NavigationToolbar2QT.save_figure/  s   K??AA	!)//"3"344;;;==G&&s|4G'HII	Y(H(H(J(JKK* 	# 	#JD$!?!?$!?!?!?@@I,,	,,,F4''!'NN6""""))G$$!-==K  "@%^% %v  
	CB46GOOE4J4J01C"**51111 C C C%..-s1vv)8;)8AC C C C C C C CC
 s   F/ /
H9AHHc                    | j         j        dk    }| j         j        t          | j                   dz
  k     }d| j        v r | j        d                             |           d| j        v r"| j        d                             |           d S d S )Nr   r   backrd  )
_nav_stack_posrc  r  
setEnabled)r   can_backwardcan_forwards      r'   set_history_buttonsz(NavigationToolbar2QT.set_history_buttonsP  s    +a/o*S-A-AA-EET]""M&!,,\:::%%M)$//<<<<< &%r)   r  )r   r   r   r
   r  r4   rh  r   r%  r  ru  r  r  r}  r  r  r  r  r  r   r   s   @r'   r
  r
    s@       /$./I((i(((..z::Q>	23 3 3+2 +2 +2 +2Z  0, , ,<G G G' ' ' ' '' ' ' ' '% % %( ( (( ( (	$ 	$ 	$  B= = = = = = =r)   r
  c                   <     e Zd Z fdZd Zd Zd Zd Zd Z xZ	S )r  c           	      ^   t                                          |           |                     t          j        t          t          j        d                                         |                     d           i | _	        t          j                    }|                     |           dg dd| j        fgfdddgd	| j        fd
| j        fd| j        fgffD ]\  }}}t          j                    }|                    |           t          j        |          }|                    |           t          j        |          }	|D ]}
t          j                    x| j	        |
<   }|                    dd           |                    d           |                    d           |                    d           |j                            | j                   |	                    |
|           |                    d           |D ]w\  }
}t          j         |
          }|!                    d           |j"                            |           |                    |           |
dk    r|#                                 x|| _$        i | _%        d | _&        | '                                 d S )Nzimages/matplotlib.pngSubplotToolBorders)topbottomrB   rF   zExport valuesSpacingshspacewspacezTight layoutResetCloser   r   r  g{Gzt?F)(rq   r   r   r   r   r   r   r   setObjectName
_spinboxesr   QHBoxLayout	setLayout_export_values_tight_layout_resetr  QVBoxLayout	addLayout	QGroupBoxr3  QFormLayoutQDoubleSpinBoxsetRangesetDecimalssetSingleStepsetKeyboardTrackingvalueChangedr   _on_value_changedaddRow
addStretchQPushButtonsetAutoDefaultclickedr  _figure	_defaults_export_values_dialogr  )r   	targetfigr5  main_layoutgroup	spinboxesrI  layoutboxinnerr  spinboxmethodrA  r   s                 r'   r   zSubplotToolQt.__init__Z  s      5;$%<==>>@ @ 	A 	A 	A=)))+--{###333"D$789; H%!4#56DK(DJ')*	*+ 	& 	&%E9g *,,F!!&)))%e,,CS!!!)#..E! , ,2;2J2L2LL%  A&&&##A&&&%%e,,,++E222$,,T-CDDDT7++++a    ' & &f".t44%%e,,,&&v...  (((7??OO%%%& !%)",,.....r)   c                       fd j                                         D              _                                          d S )Nc                 L    i | ] \  }}|t          j        j        |          !S r   )r    r  subplotpars)r$   r  r  r   s      r'   r(   zASubplotToolQt.update_from_current_subplotpars.<locals>.<dictcomp>  sD     H H H+dG "74<+CT#J#J H H Hr)   )r  rz  r  r  r   s   `r'   r  z-SubplotToolQt.update_from_current_subplotpars  sS    H H H H/3/D/D/F/FH H Hr)   c                 ,   t          j                    | _        t          j                    }| j                            |           t          j                    }|                    d           |                    |           |                    d	                    d | j
                                        D                                  |                                }|                    t          j        |                                                                                              d|                                                                          dz              |                    |           | j                                         d S )NTz,
c              3   P   K   | ]!\  }}| d |                                 dV  "dS )=z.3NrE  r$   attrr  s      r'   r  z/SubplotToolQt._export_values.<locals>.<genexpr>  s[       E E(4 55555 E E E E E Er)   r      )r   QDialogr  r  r  QPlainTextEditsetReadOnlyr3  setPlainTextr  r  rz  maximumSize	setHeightr   QFontMetricsdocumentdefaultFontr  toPlainTextr+  setMaximumSizer  )r   r  r6  r  s       r'   r  zSubplotToolQt._export_values  ss    &/%6%8%8"&((",,V444'))JJ E E,0O,A,A,C,CE E E E E	F 	F 	F
 !!t}}::<<==T!T%%''((B7	8 	8 	8 	D!!!"'')))))r)   c                    | j         }dD ]q\  }}||                             ||                                         dz              ||                             ||                                         dz
             r | j        j        di d |                                D              | j        j                                         d S )N))r  r  )rB   rF   gMbP?c                 >    i | ]\  }}||                                 S r   r  r  s      r'   r(   z3SubplotToolQt._on_value_changed.<locals>.<dictcomp>  s&    LLLwtW]]__LLLr)   r   )	r  
setMinimumrE  
setMaximumr  subplots_adjustrz  r  rj  )r   r  r  highers       r'   r  zSubplotToolQt._on_value_changed  s    O	C 	J 	JME6f((5)9)?)?)A)AD)HIIIe''	&(9(?(?(A(AD(HIIII$$ 	N 	NLL)//:K:KLLL	N 	N 	N%%'''''r)   c                 `   | j                                          | j                                        D ]\\  }}|                    d           |                    t          | j         j        |                     |                    d           ]| j         j        	                                 d S )NTF)
r  tight_layoutr  rz  blockSignalssetValuer    r  r  rj  )r   r  r  s      r'   r  zSubplotToolQt._tight_layout  s    !!###!_2244 	( 	(MD'  &&&WT\%=tDDEEE  ''''%%'''''r)   c                    | j                                         D ]Z\  }}|                    dd           |                    d           |                    |           |                    d           [|                                  d S )Nr   r   TF)r  rz  r  r  r  r  )r   r  rE  s      r'   r  zSubplotToolQt._reset  s    "n2244 	( 	(NGUQ"""  &&&U###  ''''     r)   )
r   r   r   r   r  r  r  r  r  r   r   s   @r'   r  r  Y  s        */ */ */ */ */X  
* * **( ( (( ( (! ! ! ! ! ! !r)   r  c                   4    e Zd ZddZd Zd Zd Zd Zd ZdS )		ToolbarQtNc                 d   t          j        | |           t          j                            | |           |                     t
          j                            t          t
          j        j        j	                  t          t
          j        j        j
                  z                       t          j        d          }|                    t
          j                            t          t
          j        j        j                  t          t
          j        j        j                  z                       |                    t          j        t          j        j        j        t          j        j        j                             |                     |          | _        i | _        i | _        d S )Nr  )r   r   r   r  r  r   r!   r  r   r  r  r(  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  _message_action
_toolitems_groups)r   toolmanagerr5  message_labels       r'   r   zToolbarQt.__init__  sW   "4555##D&111VY22FI)899FI);<<=> > 	? 	? 	? "(,,""69#:#:FI+677FI+899:$; $; 	< 	< 	< 	##I$9!(2!(0%
 %
 	 	 	  $~~m<<r)   c                 8    t          j                   }|r.|                    t                               |                     |                               |r|                    |            fd}|r0|                    d           |j        	                    |           n|j
        	                    |            j                            g                                 |||            j                                     ||f           d S )Nc                  2                                     d S r   )trigger_tool)r  r   s   r'   handlerz'ToolbarQt.add_toolitem.<locals>.handler  s    d#####r)   T)r   QToolButtonsetIconr
  r%  rz  r'  r&  toggledr   r  r  
setdefault_add_to_groupr  )	r   r  r  r%  r8  descriptiontogglerA  r  s	   ``       r'   add_toolitemzToolbarQt.add_toolitem  s1    &t,, 	INN/55dJGGHHHt 	+k***	$ 	$ 	$ 	$ 	$ 	$ 	,%%%N""7++++N""7+++""4,,,5$999$$fg%677777r)   c                    | j                             |g           }|s/|                     | j                  }|                    |           ||         }|                     ||          }|                    ||           || j         |<   d S r   )r  r   insertSeparatorr  r  insertWidgetr4   )	r   r  r  rA  r%  grsepbeforewidgets	            r'   r  zToolbarQt._add_to_group  s    \eR(( 	&&t';<<CIIcNNNH""6622
		(F### Ur)   c                     || j         vrd S | j         |         D ]N\  }}|j                            |           |                    |           |j                            |           Od S r   )r  r  
disconnectrs  r   )r   r  r  rA  r  s        r'   toggle_toolitemzToolbarQt.toggle_toolitem  s{    t&&F#t4 	, 	,OFGN%%g...g&&&N""7++++	, 	,r)   c                 r    | j                             |g           D ]\  }}|                    d            d S r   )r  pop	setParent)r   r  rA  r  s       r'   remove_toolitemzToolbarQt.remove_toolitem  sH    #224<< 	# 	#OFGT""""	# 	#r)   c                 `    |                      | j                                      |           d S r   )widgetForActionr  rz  r{  s     r'   r}  zToolbarQt.set_message  s-    T122::1=====r)   r   )	r   r   r   r   r  r  r  r"  r}  r   r)   r'   r  r    ss           $8 8 8,! ! !, , ,# # #> > > > >r)   r  c                   $     e Zd Z fdZd Z xZS )ConfigureSubplotsQtc                 H     t                      j        |i | d | _        d S r   )rq   r   r  r   s      r'   r   zConfigureSubplotsQt.__init__   s-    $)&)))#r)   c                 :    t                               |            d S r   )r
  r  r   s     r'   triggerzConfigureSubplotsQt.trigger  s    //55555r)   )r   r   r   r   r)  r   r   s   @r'   r&  r&    sG        $ $ $ $ $6 6 6 6 6 6 6r)   r&  c                       e Zd Zd ZdS )SaveFigureQtc                 ^    t                               |                                            d S r   )r
  r  "_make_classic_style_pseudo_toolbarr   s     r'   r)  zSaveFigureQt.trigger
  s3    ((3355	7 	7 	7 	7 	7r)   Nr   r   r   r)  r   r)   r'   r+  r+    s#        7 7 7 7 7r)   r+  c                       e Zd Zd Zd ZdS )RubberbandQtc                 h    t                               |                                 d ||||           d S r   )r
  r  r-  )r   r  r  r  r  s        r'   r  zRubberbandQt.draw_rubberband  sB    ,,3355tRR	M 	M 	M 	M 	Mr)   c                 ^    t                               |                                            d S r   )r
  r  r-  r   s    r'   r  zRubberbandQt.remove_rubberband  s3    ..3355	7 	7 	7 	7 	7r)   N)r   r   r   r  r  r   r)   r'   r0  r0    s5        M M M7 7 7 7 7r)   r0  c                       e Zd Zd ZdS )HelpQtc                 l    t           j                            d d|                                            d S )NHelp)r   ra  information_get_help_htmlr   s     r'   r)  zHelpQt.trigger  s/    ))$8K8K8M8MNNNNNr)   Nr.  r   r)   r'   r4  r4    s(        O O O O Or)   r4  c                       e Zd Zd ZdS )ToolCopyToClipboardQTc                     | j                                         }t          j                                                                                            |           d S r   )r  grabr   r   r   	clipboard	setPixmap)r   r   r   pixmaps       r'   r)  zToolCopyToClipboardQT.trigger"  sJ    !!##''))3355??GGGGGr)   Nr.  r   r)   r'   r:  r:     s(        H H H H Hr)   r:  c                   (    e Zd ZeZeZeZej	        Z
dS )
_BackendQTN)r   r   r   r   backend_versionr   FigureCanvasr   FigureManagerr  mainloopr   r)   r'   rA  rA  +  s%        !O!L#M.HHHr)   rA  )Or   r  r   r  r   r   r   r   r   matplotlib._pylab_helpersr   matplotlib.backend_basesr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   +matplotlib.backends.qt_editor.figureoptionsbackends	qt_editorri  r  r   r   r   r   r   r   r   r   r   r  r  MOVEHANDPOINTERSELECT_REGIONWAITRESIZE_HORIZONTALRESIZE_VERTICALr"  	lru_cacher   r   r   ri  r   QMainWindowr  r   r  r
  r  r  r  _register_tool_classConfigureSubplotsBaser&  SaveFigureBaser+  RubberbandBaser0  ToolHelpBaser4  ToolCopyToClipboardBaser:  _toolbar2_class_toolmanager_toolbar_classexportrA  r   r)   r'   <module>r]     ss       				 



         1 1 1 1 1 1 1 1 1 1 ) ) ) ) ) )                               
 D C C C C C C C C C C C      H H H H H H H H H H H H H H H H H H) )'7 '7'7 	''7 	 	'7
 	'7 	!'7 	!'7 	'7 	!'7 	'7 	'7 	'7 	'7 	'7 	'7  	!'7" 	!#'7$ 	%%'7& 	''7* 
S\X%=%=		5I+'7, 
s|x77VVYG-'7. 	/'70 	&1'72 	3'74 	5'76 	7'78 	9'7: 	;'7< 	='7> 	?'7@ 	A'7B 	C'7D 	E'7F 	G'7H 	I'7J 	!K'7L 	!M'7 '7) ) )Z	 		 	 	
 
	'	+,	-(		.	|$		"O4		 /26
 
 
 Q6 6 6r= = =@    i   :K K K K K%y'8 K K K\
" " " " "& " " "p* p* p* p* p*' p* p* p*fz= z= z= z= z=-y/A z= z= z=z_! _! _! _! _!I% _! _! _!D@> @> @> @> @>!9#5 @> @> @>F $#N336 6 6 6 6-= 6 6 436 $#N337 7 7 7 7=/ 7 7 437 $#N337 7 7 7 7=/ 7 7 437 $#N33O O O O O]' O O 43O
 $#N33H H H H HMA H H 43H #7 -6 * 
/ / / / / / / / / /r)   