
    dʩ                     @   d dl mZ d dlZd dlZd dlZd dlZd dlmc m	Z
 d dlmZ d dlZd dlmZmZ d dlmZ d dlmZ d dlmZ ej        Zej        d             Zej        d             Zej        d	             Zej        d
             Zej        d             Zej        d             Z ej        d             Z!ej        d             Z"ej        d             Z#ej        d             Z$ej        d             Z%ej        d             Z&ej        d             Z'ej        d             Z(ej        d             Z)ej        d             Z*ej        d             Z+ej        d             Z,ej        d             Z-ej        d             Z.ej        d             Z/ej        d             Z0ej        d             Z1ej        d             Z2ej        d             Z3ej        d              Z4ej        d!             Z5ej        d"             Z6ej        d#             Z7 G d$ d%          Z8ej9        :                    d&ej;        ej<        fej=        ej>        fej?        ej@        fejA        ejB        fejC        ejD        fejE        ejF        fg          d'             ZGej9        :                    d(g d)          d*             ZHej9        :                    d(g d+          ej9        :                    d,g d-          d.                         ZIej9        :                    d/g d0          d1             ZJej9        :                    d/g d2          d3             ZK G d4 d5          ZL G d6 d7          ZM G d8 d9          ZN G d: d;          ZO G d< d=          ZPd> ZQej9        :                    d?ejR        d@fejS        d@fejT        dAfejU        dAfejV        dAfejW        dAfejX        dBfejY        dCfejZ        dBfej[        dCfg
          dD             Z\ej9        :                    dEej]        ej^        ejS        ejU        ejW        ej_        ej`        eja        ejb        ejc        ej[        ejZ        ejd        eje        ejf        g          dF             Zgej9        :                    dGdHd g          dI             Zhej9        :                    dJd eji        g dK           eji        dLgdMdNgz  z             g          ej9        :                    dOdPdQg          dR                         Zje
jk        e
jl        ej9        :                    dOdPdSg          dT                                     Zmej9        :                    dUdVdWg          dX             Znej9        :                    dYg dZ          d[             Zoej9        :                    d\ejp        ejq        ejr        ejs        ejt         eued]d          g          ej9        :                    d^g d_          d`                         ZvdS )a    )partialN)is_integer_dtype)Seriesisna)nanops)DatetimeArrayc              #      K   |                                  5 }|                    t          dd           d V  d d d            d S # 1 swxY w Y   d S )N_USE_BOTTLENECKF)contextsetattrr   )monkeypatchms     T/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/test_nanops.pydisable_bottleneckr      s      					 !			&+U333                 s   !AA	A	c                      dS )N       r       r   	arr_shaper      s    5r   c                 f    t           j                            d           t          j        j        |  S )N+  )nprandomseedrandnr   s    r   	arr_floatr   $   s%    INN59?I&&r   c                     | | dz  z   S )N              ?r   r   s    r   arr_complexr#   *   s    y2~%%r   c                     t           j                            d           t           j                            dd|           S )Nr   
   r   r   r   randintr   s    r   arr_intr)   /   s0    INN59S"i000r   c                     t           j                            d           t           j                            dd|           dk    S )Nr   r      r'   r   s    r   arr_boolr,   5   s5    INN59Q9--22r   c                 P    t          j        |                               d          S )NSr   absastyper"   s    r   arr_strr2   ;        6)##C(((r   c                 P    t          j        |                               d          S )NUr/   r"   s    r   arr_utfr6   @   r3   r   c                     t           j                            d           t           j                            dd|                               d          S )Nr   r    N  M8[ns]r   r   r   r(   r1   r   s    r   arr_dater;   E   >    INN59Qy1188BBBr   c                     t           j                            d           t           j                            dd|                               d          S )Nr   r   r8   m8[ns]r:   r   s    r   
arr_tdeltar?   K   r<   r   c                 @    t          j        t           j        |           S N)r   tilenanr   s    r   arr_nanrD   Q   s    7269%%%r   c                 .    t          j        | |g          S rA   r   vstack)r   rD   s     r   arr_float_nanrH   V       9i)***r   c                 .    t          j        | |g          S rA   rF   )rD   r   s     r   arr_nan_float1rK   [   s    9gy)***r   c                 .    t          j        | | g          S rA   rF   rD   s    r   arr_nan_nanrN   `       9gw'(((r   c                      | t           j        z  S rA   )r   infr"   s    r   arr_infrR   e   s    rvr   c                 .    t          j        | |g          S rA   rF   )r   rR   s     r   arr_float_infrT   j   rI   r   c                 .    t          j        | |g          S rA   rF   rD   rR   s     r   arr_nan_infrW   o   rO   r   c                 0    t          j        | ||g          S rA   rF   )r   rD   rR   s      r   arr_float_nan_infrY   t   s    9i'2333r   c                 0    t          j        | | |g          S rA   rF   rV   s     r   arr_nan_nan_infr[   y   s    9gw0111r   c                 j   t          j        |                     d          |                    d          |                    d          |                    d          |                    d          |                    d          |                    d          |                    d          g          S )NO)r   rG   r1   )r   r)   r,   r#   r2   r6   r;   r?   s           r   arr_objr^   ~   s     9S!!NN3OOC  s##NN3NN3OOC  c""		
  r   c                 p    t          j        d          5  | | dz  z   cd d d            S # 1 swxY w Y   d S Nignoreinvalidr!   r   errstaterM   s    r   arr_nan_nanjrf      s    	X	&	&	& & &2%& & & & & & & & & & & & & & & & & &s   +//c                     t          j        d          5  t          j        | |g          cd d d            S # 1 swxY w Y   d S Nra   rb   r   re   rG   )r#   rf   s     r   arr_complex_nanrj          	X	&	&	& 6 6y+|4556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6   9= =c                 j    t          j        d          5  | dz  cd d d            S # 1 swxY w Y   d S r`   rd   )rR   s    r   arr_nan_infjrn      s    	X	&	&	&  |                 s   (,,c                     t          j        d          5  t          j        | |g          cd d d            S # 1 swxY w Y   d S rh   ri   )r#   rn   s     r   arr_complex_nan_infjrp      rk   rl   c                     | d d df         S Nr   r   r"   s    r   arr_float_1drs      s    QQQT?r   c                     | d d df         S rr   r   rM   s    r   
arr_nan_1dru      s    111a4=r   c                     | d d df         S rr   r   )rH   s    r   arr_float_nan_1drw      s    Ar   c                     | d d df         S rr   r   )arr_float1_nans    r   arr_float1_nan_1drz          !!!Q$r   c                     | d d df         S rr   r   )rK   s    r   arr_nan_float1_1dr}      r{   r   c                   d   e Zd Zd Zd Zd$dZ	 	 d%dZ	 d&dZ	 	 	 	 	 d'dZd$d	Z	e
j                            d
ej        ej        fej        ej        fg          d             Zd Zd Zd Ze
j                            d ed                    d             Ze
j                            d ed                    d             Zej        e
j                            d ed                    d                         Ze
j                            d
ej        ej        fej        ej         fg          d             Z!d(dZ"d Z#d Z$d(dZ%ej        d             Z&ej        d             Z'd Z(d Z)d Z*d Z+d Z,ej        d              Z-ej        d!             Z.ej        d"             Z/d# Z0dS ))TestnanopsDataFramec                 
   t           j                            d           dt          _        d}t          j        j        | | _        t          j        j        | | _        | j        | j        dz  z   | _        t           j        	                    dd|          | _
        t           j        	                    dd|          dk    | _        t          j        | j                                      d	          | _        t          j        | j                                      d
          | _        t           j        	                    dd|                              d          | _        t           j        	                    dd|                              d          | _        t          j        t           j        |          | _        t          j        | j        | j        g          | _        t          j        | j        | j        g          | _        t          j        | j        | j        g          | _        t          j        | j        | j        g          | _        | j        t           j        z  | _        t          j        | j        | j        g          | _        t          j        | j        | j        g          | _        t          j        | j        | j        | j        g          | _        t          j        | j        | j        | j        g          | _        t          j        | j                            d          | j
                            d          | j                            d          | j                            d          | j                            d          | j                            d          | j                            d          | j                            d          g          | _         t          j!        d          5  | j        | j        dz  z   | _"        t          j        | j        | j"        g          | _#        | j        dz  | _$        t          j        | j        | j$        g          | _%        d d d            n# 1 swxY w Y   | j        | _&        | j        | _'        | j        | _(        | j        | _)        | j        | _*        | j        | _+        | j        d d df         | _,        | j        d d df         | _-        | j        d d df         | _.        | j        d d df         | _/        | j        d d df         | _0        | j        d d df         | _1        d S )Nr   Fr   r!   r%   r&   r   r+   r.   r5   r8   r9   r>   r]   ra   rb   )2r   r   r   r   r
   r   r   
arr_float1r#   r(   r)   r,   r0   r1   r2   r6   r;   r?   rB   rC   rD   rG   rH   ry   rK   rN   rQ   rR   rT   rW   rY   r[   r^   re   rf   rj   rn   rp   arr_float_2darr_float1_2d
arr_nan_2darr_float_nan_2darr_float1_nan_2darr_nan_float1_2drs   arr_float1_1dru   rw   rz   r}   )selfr   s     r   setup_methodz TestnanopsDataFrame.setup_method   s   
	u!&	)4)/95>DOb,@@y((b)<<	))!Q	::a?vdn--44S99vdn--44S99	))!UI>>EEhOO)++Aui@@GGQQwrvy11Y'EFF i$,(GHH it(GHH9dlDL%ABB~.Y'EFF9dlDL%ABB!#DNDL$,+W!X!X!y$,dl)STTy%%c**##C(($$S)) '',,##C((##C(($$S))&&s++	
 
 [*** 	Y 	Y $t|b/@ @D#%9d.>@Q-R#S#SD  $r 1D(*	43CTEV2W(X(XD%	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y !N!_, $ 2!%!4!%!4 N111a40!_QQQT2,qqq!t, $ 2111a4 8!%!4QQQT!:!%!4QQQT!:s    A1Q==RRc                 (    t           t          _        d S rA   )use_bnr   r
   r   s    r   teardown_methodz#TestnanopsDataFrame.teardown_method  s    !'r   Tc                    t          |d|          }|dk    rPt          |d          r@|j        r9|j        |j        k    r)t	          j        ||j        d         gd          d         }	 t          j        |||           d S # t          $ rE t          |d          r|j	        dk    r t          |d          r|j	        j
        dvr |j	        j
        d	k    ro|j	        j
        d	k    r|                    |j	                  }nUt          t          d
          rdnd}|                    |          }|                    |          }n|j	        j
        d	k    r t          j        t	          j        |          t	          j        |          |           t          j        t	          j        |          t	          j        |          |           Y d S w xY w)Nasm8r   shapeaxischeck_dtypedtyper>   )cr]   r]   
complex128c16f8)getattrhasattrndimr   r   splittmassert_almost_equalAssertionErrorr   kindr1   realimag)r   targresr   r   
cast_dtypes         r   check_resultsz!TestnanopsDataFrame.check_results  s   c63'' AIIg&& 	  
ci''(3Aa888;C	Y"4+FFFFFF 	Y 	Y 	YtW%% $**@*@
 3(( CIN*,L,L y~$$:?c))**TZ00CC*1"l*C*C!MJ**Z00C;;z22DD C''"274=="'#,,KXXXX"274=="'#,,KXXXXXXX1	Ys   )B EGGNc                    t          t          |j                            d gz   D ]L}	|r|n|}
|r/|r-t          |
                                          r ||
fd|	i|}n ||
fd|	i|}|
j        t          k    r`|t          j        u s|t          j        u rDt          |t          j
                  r|                    t                    }nt          |          } ||f|	|d|}|                     |||	|           |r$ ||fd|	i|}|                     |||	|           |	$ ||fd|i|}|                     |||	|           |r$|	" ||fi |}|                     |||	|           N|j        dk    rd S t          j        |dd          }t          j        |dd          } | j        ||||f|||d	| d S )
Nr   r   skipnar   r      r   r   )r   r   empty_targfunc)listranger   r   allr   objectr   any
isinstancendarrayr1   boolr   takecheck_fun_data)r   testfunctargfunc	testarval	targarvalr   r   r   kwargsr   targartempvalr   r   
testarval2
targarval2s                  r   r   z"TestnanopsDataFrame.check_fun_data,  s    y~..//4&8 	M 	MD)/>IIYM D. DT--@-@-D-D-F-F D%~mII$I&IIxCCDCFCC"f,,BF""h"&&8&8 dBJ// &;;t,,DD::D(9I4II&IICtS$KHHH Mhy>>t>v>>""4d"LLL|hyBBB6BB""4d"LLL M$,hy33F33""4d"LLL>QF WY333
WY333
			

 #)		
 		
 		
 		
 		
 		
 		
r   c                     |}|                     d          r"t          | |d d                   r
|d d         }t          | |          }t          | |          }	 | j        ||||	f||d| d S )N_nan)r   r   )endswithr   r   r   )
r   r   r   testarr   r   r   targarr   r   s
             r   	check_funzTestnanopsDataFrame.check_fund  s     ??6"" 	!wtVCRC['A'A 	!CRC[FD&))	D&))			

 )	
 	
 	
 	
 	
 	
 	
r   c	                     | j         ||d|fi |	  | j         ||d|fi |	  | j         ||d|fi |	  | j         ||d|fi |	 | j                            d          | j                            d          | j                            d          g}
|r | j         ||d|fi |	 |rS | j         ||d|fi |	  | j         ||d|fi |	 |r | j         ||d	|fi |	 |
| j                            d          gz  }
|r? || j                    | j         ||d
|fi |	 |
| j                            d          gz  }
|rQ	  || j                    | j         ||d|fi |	 |
| j                            d          gz  }
n# t          $ r Y nw xY w|rIt          j
        |
          | _        |dk    rt          | j        ||          } | j         ||d|fi |	 d S d S )Nr   rH   r)   r,   r]   rD   r#   rj   rf   r;   r?   convert)funcallow_complexr^   )r   r   r1   r)   r,   r#   r;   r?   	TypeErrorr   rG   r^   r   _badobj_wrap)r   r   r   r   r   allow_all_nan
allow_dateallow_tdelta	allow_objr   objss              r   
check_funszTestnanopsDataFrame.check_funsw  s    	x;II&IIIx?FMMfMMMx9fGGGGGx:vHHHHHN!!#&&L$$M  %%
  	LDN8Xy&KKFKKK 	3DN8X}fOOOOODN8X/@&SSFSSS Ux>6TTVTTTT%,,S1122D 	0HT]###DN8Xz6LLVLLLT]))#..//D 	66))) x<RR6RRR//4455	      		L9T??DL I%%"%HM   DN8Xy&KKFKKKKK		L 		Ls   >E> >
F
Fc                     |j         j        dk    r-|r|                    d          }n|                    d          } ||fi |S )Nr]   r   r   )r   r   r1   )r   valuer   r   r   s        r   r   z TestnanopsDataFrame._badobj_wrap  sV    ;s"" +U++T**tE$$V$$$r   znan_op,np_opc                 :    |                      |||dd           d S )NF)r   r   )r   r   nan_opnp_opr   s       r   test_nan_funcsz"TestnanopsDataFrame.test_nan_funcs  s&     	vUuUUUUUr   c                 x    |                      t          j        t          j        |ddt          j                   d S )NF)r   r   r   )r   r   nansumr   sumr   r   s     r   test_nansumzTestnanopsDataFrame.test_nansum  s?    MF9 	 	
 	
 	
 	
 	
r   c                 b    |                      t          j        t          j        |dd           d S )NF)r   r   )r   r   nanmeanr   meanr   s     r   test_nanmeanz TestnanopsDataFrame.test_nanmean  s6    NBGVu 	 	
 	
 	
 	
 	
r   c           	          t          j        d          5  t          j        dt                     |                     t
          j        t          j        |ddd           d d d            d S # 1 swxY w Y   d S )NTrecordra   Fr   )r   r   r   )	warningscatch_warningssimplefilterRuntimeWarningr   r   	nanmedianr   medianr   s     r   test_nanmedianz"TestnanopsDataFrame.test_nanmedian  s    $D111 		 		!(N;;;OO 	# #    		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   A
A--A14A1ddof   c           	      f    |                      t          j        t          j        |ddd|           d S NFr   )r   r   r   r   )r   r   nanvarr   varr   r   r   s      r   test_nanvarzTestnanopsDataFrame.test_nanvar  @    MF 	 	
 	
 	
 	
 	
r   c           	      f    |                      t          j        t          j        |ddd|           d S r   )r   r   nanstdr   stdr   s      r   test_nanstdzTestnanopsDataFrame.test_nanstd  r   r   c                     ddl m} t          j        d          5  |                     t
          j        ||dddd|           d d d            d S # 1 swxY w Y   d S )Nr   )semra   rb   Fr   )r   r   r   r   r   )scipy.statsr   r   re   r   r   nansem)r   r   r   r   s       r   test_nansemzTestnanopsDataFrame.test_nansem  s     	$#####[*** 
	 
	OO# "#  	 	 	
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s   (AAAc                     t          j        d          5  t          j        dt                     |                     |||d           d d d            d S # 1 swxY w Y   d S )NTr   ra   Fr   )r   r   r   r   r   r   s       r   test_nanops_with_warningsz-TestnanopsDataFrame.test_nanops_with_warnings  s     $D111 	D 	D!(N;;;OOFE6UOCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   4AAAc                      |||          }t          j        ||          }t          |          }|j        rd||<   n8t	          |d          r|                                st	          |d          s|rd}|S )Nr   r   )r   minr   r   r   r   )r   r   r   r   r   nansnullnans          r   _argminmax_wrapz#TestnanopsDataFrame._argminmax_wrap
  s    d5$veT""t**8 	CLLGU##		 7E**	 		 C
r   c                    t          j        d          5  t          j        dt                     t	          | j        t          j                  }|                     t          j
        ||d           d d d            d S # 1 swxY w Y   d S NTr   ra   r   Fr  )r   r   r   r   r   r  r   argmaxr   r   	nanargmaxr   r   r   s      r   test_nanargmaxz"TestnanopsDataFrame.test_nanargmax      $D111 	M 	M!(N;;;4/bi@@@DOOF,dFeOLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M   ABBBc                    t          j        d          5  t          j        dt                     t	          | j        t          j                  }|                     t          j
        ||d           d d d            d S # 1 swxY w Y   d S r	  )r   r   r   r   r   r  r   argminr   r   	nanargminr  s      r   test_nanargminz"TestnanopsDataFrame.test_nanargmin  r  r  c                    t          |j        j        t          j                  s|                    d          } |||d          }t          |t          j                  r3d|t          j        ||          t          j        ||          k    <   |S t          j        |          t          j        |          k    rdS |S )Nr   F)r   biasr   r           )	r   r   typer   floatingr1   r   maxr  )r   valuesr   r   results        r   _skew_kurt_wrapz#TestnanopsDataFrame._skew_kurt_wrap%  s    &,+R[99 	)]]4((Ff4e444fbj)) 	MNF26&t,,,vD0I0I0IIJMVF^^rvf~~--3r   c           	          ddl m} t          | j        |          }t	          j        d          5  |                     t          j        ||ddd           d d d            d S # 1 swxY w Y   d S )Nr   )skewr
  ra   rb   Fr   r   r   )	r   r  r   r  r   re   r   r   nanskew)r   r   r  r   s       r   test_nanskewz TestnanopsDataFrame.test_nanskew1  s    $$$$$$t+$777[*** 	 	OO# "    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   &A%%A),A)c           	         ddl m} t          |d          }t          | j        |          }t	          j        d          5  |                     t          j        ||ddd	           d d d            d S # 1 swxY w Y   d S )
Nr   )kurtosisT)fisherr
  ra   rb   Fr   )	r   r$  r   r  r   re   r   r   nankurt)r   r   r$  func1r   s        r   test_nankurtz TestnanopsDataFrame.test_nankurt@  s    ((((((...t+%888[*** 	 	OO# "    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   &A66A:=A:c                 x    |                      t          j        t          j        |ddt          j                   d S )NF)r   r   r   )r   r   nanprodr   prodr   s     r   test_nanprodz TestnanopsDataFrame.test_nanprodP  s?    NG: 	 	
 	
 	
 	
 	
r   c                 
    || j         | j        fi |} || j         | j        fdt          | j                   dz
  i|}t          j        ||           t          j        ||            || j        | j        fi |} || j        | j        fdt          | j                   dz
  i|}t          j        ||           t          j        ||           t          j        }	 || j	        | j        fi |}
 || j         | j	        fi |} || j	        | j	        fi |} || j        | j
        fi |} || j        | j
        fdt          | j                   dz
  i|} || j         | j        fdt          | j                   dz   i|}t          j        |	|
           t          j        |	|           t          j        |	|           t          j        |	|           t          j        |	|           t          j        |	|           d S Nmin_periodsr   )r   r   lenr   r   r   r   r   rC   r   r   r   checkfuntarg0targ1r   res00res01res10res11targ2res20res21res22res23res24res25s                   r   check_nancorr_nancov_2dz+TestnanopsDataFrame.check_nancorr_nancov_2dZ     *D,>II&II
 
 D-..2
 	
 
 	ue,,,
ue,,,.0FQQ&QQ!"
 
 D-..2
 	
 
 	ue,,,
ue,,,$*<GGGG*DOFFvFF$/DDVDD.0FQQ&QQ!"
 
 D-..2
 	
 
 
 
 D-..2
 	
 
 	ue,,,
ue,,,
ue,,,
ue,,,
ue,,,
ue,,,,,r   c                 
    || j         | j        fi |} || j         | j        fdt          | j                   dz
  i|}t          j        ||           t          j        ||            || j        | j        fi |} || j        | j        fdt          | j                   dz
  i|}t          j        ||           t          j        ||           t          j        }	 || j	        | j        fi |}
 || j         | j	        fi |} || j	        | j	        fi |} || j        | j
        fi |} || j        | j
        fdt          | j                   dz
  i|} || j         | j        fdt          | j                   dz   i|}t          j        |	|
           t          j        |	|           t          j        |	|           t          j        |	|           t          j        |	|           t          j        |	|           d S r.  )rs   r   r0  r   r   rw   rz   r   rC   ru   r}   r1  s                   r   check_nancorr_nancov_1dz+TestnanopsDataFrame.check_nancorr_nancov_1d  rA  r   c                    t          j        | j        | j                  d         }t          j        | j        j        | j        j                  d         }|                     t          j        ||           t          j        | j        | j	                  d         }t          j        | j        j        | j	        j                  d         }| 
                    t          j        ||d           d S Nr   r   pearsonmethodr   corrcoefr   r   flatr@  r   nancorrrs   r   rC  r   r3  r4  s      r   test_nancorrz TestnanopsDataFrame.test_nancorr  s    D-t/ABB4HD-2D4F4KLLTR$$V^UEBBBD-t/ABB4HD-2D4F4KLLTR$$V^UE)$TTTTTr   c                    t          j        | j        | j                  d         }t          j        | j        j        | j        j                  d         }|                     t          j        ||d           t          j        | j        | j	                  d         }t          j        | j        j        | j	        j                  d         }| 
                    t          j        ||d           d S rE  rJ  rN  s      r   test_nancorr_pearsonz(TestnanopsDataFrame.test_nancorr_pearson  s    D-t/ABB4HD-2D4F4KLLTR$$V^UE)$TTTD-t/ABB4HD-2D4F4KLLTR$$V^UE)$TTTTTr   c                    ddl m}  || j        | j                  d         } || j        j        | j        j                  d         }|                     t          j        ||d            || j        | j	                  d         } || j        j        | j	        j                  d         }| 
                    t          j        ||d           d S )Nr   )
kendalltaukendallrH  )r   rS  r   r   rL  r@  r   rM  rs   r   rC  )r   rS  r3  r4  s       r   test_nancorr_kendallz(TestnanopsDataFrame.test_nancorr_kendall  s    ******
4,d.@AA!D
4,143E3JKKAN$$V^UE)$TTT
4,d.@AA!D
4,143E3JKKAN$$V^UE)$TTTTTr   c                    ddl m}  || j        | j                  d         } || j        j        | j        j                  d         }|                     t          j        ||d            || j        | j	                  d         } || j        j        | j	        j                  d         }| 
                    t          j        ||d           d S )Nr   )	spearmanrspearmanrH  )r   rW  r   r   rL  r@  r   rM  rs   r   rC  )r   rW  r3  r4  s       r   test_nancorr_spearmanz)TestnanopsDataFrame.test_nancorr_spearman  s    ))))))	$+T-?@@C	$+0$2D2IJJ1M$$V^UE*$UUU	$+T-?@@C	$+0$2D2IJJ1M$$V^UE*$UUUUUr   c                 `   t          j        | j        | j                  d         }t          j        | j        j        | j        j                  d         }d}t          j        t          |          5  |                     t          j
        ||d           d d d            d S # 1 swxY w Y   d S )NrF  z;Unknown method 'foo', expected one of 'kendall', 'spearman'matchfoorH  )r   rK  r   r   rL  pytestraises
ValueErrorrC  r   rM  )r   r3  r4  msgs       r   test_invalid_methodz'TestnanopsDataFrame.test_invalid_method  s    D-t/ABB4HD-2D4F4KLLTRK]:S111 	U 	U((e(TTT	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	Us   2$B##B'*B'c                    t          j        | j        | j                  d         }t          j        | j        j        | j        j                  d         }|                     t          j        ||           t          j        | j        | j	                  d         }t          j        | j        j        | j	        j                  d         }| 
                    t          j        ||           d S )NrF  )r   covr   r   rL  r@  r   nancovrs   r   rC  rN  s      r   test_nancovzTestnanopsDataFrame.test_nancov  s    t($*<==dCt(-t/A/FGGM$$V]E5AAAt($*<==dCt(-t/A/FGGM$$V]E5AAAAAr   )T)TNrA   )TTTTT)NN)1__name__
__module____qualname__r   r   r   r   r   r   r   r^  markparametrizer   nananyr   r   nanallr   r   r   r   r   r   r   r   tdskip_if_no_scipyr   nanminr  nanmaxr  r  r  r  r  r  r"  r(  r,  r@  rC  rO  rQ  rU  rY  rb  rf  r   r   r   r   r      s       >; >; >;@( ( (%Y %Y %Y %Y\ 6
 6
 6
 6
r BF
 
 
 
0 7L 7L 7L 7Lr% % % % [&-06="&2IJ V V V
 
 

 
 


 
 
 [VUU1XX..	
 	
 /.	
 [VUU1XX..	
 	
 /.	
 [VUU1XX..  /.  [&-06="&2IJ D D D
   M M MM M M
 
 
 
      
 
 
+- +- +-Z+- +- +-ZU U UU U U U U U V V V U U UB B B B Br   r   zop,nanopc                    |                      d          }|                      d          } |||          }|                      d          }|                      d          }|                      d          }	|                      d          }
|                      d          }|j        rc |||          }t          j        ||           |j        dk    rt	          j        ||g          }nt	          j        ||g          } ||	|
          }t          j        ||d           |} ||	|          }t          j        ||d           t	          j        |d	d
          }t	          j        |d	d
          }t	          j        |d	d
          }t	          j        |d	d
          }t	          j        |	d	d
          }	t	          j        |
d	d
          }
t	          j        |d	d
          }t	          j        |d	d
          }|j        ad S d S )Nr   rD   rN   rH   rK   r   Fr   r   r   r   )	getfixturevaluer   r   r   r   rG   hstackassert_numpy_array_equalr   )requestopnanopr   r   r   r3  rD   rN   rH   ry   rK   res0r4  res1r9  res2s                    r   test_nan_comparisonr|    s'    ''44I((55JBy*%%E%%i00G))-88K++O<<M,,_==N,,-=>>N
* +uY
++
ud+++:>>Iug.//EEIug.//Eu]N33
#E4UCCCCu]N33
#E4UCCCC GIqr222	WZ444
''12...gk12666qr:::<<<<<<qr***/ * + + + + +r   zarr, correct)
r#   F)r)   F)r,   F)r2   F)r6   Fr}  )rj   F)rf   F)rn   T)rp   Tc                    |                      |          }t          |dd          r[t          j        |          }|r|sJ n|rJ t	          |d          sd S t          j        |dd          }t          |dd          Yd S d S Nr   Tr   r   r   )rs  r   r   	_has_infsr   r   r   )rv  arrcorrectr   valry  s         r   test_has_infs_non_floatr    s      
!
!#
&
&C
#vt
$
$ '$$ 	KKKKOOOsF## 	E gc12&&& #vt
$
$ ' ' ' ' 'r   )	)r   F)rD   F)rH   F)rN   F)rT   T)rR   T)rW   T)rY   T)r[   Tr1   )Nf4f2c                 6   |                      |          }||                    |          }t          |dd          r[t          j        |          }|r|sJ n|rJ t          |d          sd S t          j        |dd          }t          |dd          Yd S d S r  )rs  r1   r   r   r  r   r   r   )rv  r  r  r1   r   r  ry  s          r   test_has_infs_floatsr  9  s      
!
!#
&
&Cjj  
#vt
$
$ '$$ 	KKKKOOOsF## 	E gc12&&& #vt
$
$ ' ' ' ' 'r   fixture)r   r#   r)   r,   r2   r6   c                 h    |                     |           }t          j        |j        d          sJ d S Ntestrs  r   _bn_ok_dtyper   r  rv  r   objs       r   test_bn_ok_dtyper  Z  s8     
!
!'
*
*Csy&1111111r   )r;   r?   r^   c                 h    |                     |           }t          j        |j        d          rJ d S r  r  r  s       r   test_bn_not_ok_dtyper  b  s8     
!
!'
*
*C"39f5555555r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestEnsureNumericc                     t          j        d          dk    sJ t          j        d          dk    sJ t          j        d          dk    sJ d S )Nr   皙?y      ?       @)r   _ensure_numericr   s    r   test_numeric_valuesz%TestEnsureNumeric.test_numeric_valuesp  s`    %a((A---- %c**c1111 %f--777777r   c                 d   t          j        g d          }t          j        t          j        |          |          sJ |                    t                    }t          j        t          j        |          |          sJ t          j        g dt                    }t          j        t          j        |          |          sJ t          j        g dt                    }d}t          j        t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )N)r   r+   r   )123r   )r]  barbazzCould not convert .* to numericr[  )
r   arrayallcloser   r  r1   r   r^  r_  r   )r   r  o_valuess_valuesra  s        r   test_ndarrayzTestEnsureNumeric.test_ndarrayz  sW   )))$${61&996BBBBB ==(({61(;;VDDDDD 8OOO6:::{61(;;VDDDDD 8111@@@0]9C000 	- 	-"8,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   D%%D),D)c                     t          j        t          j        d          d          sJ t          j        t          j        d          d          sJ t          j        t          j        d          d          sJ d S )Nr        ?z1.1r  z1+1jy      ?      ?)r   r  r   r  r   s    r   test_convertable_valuesz)TestEnsureNumeric.test_convertable_values  sq    {61#66<<<<<{61%88#>>>>>{61&996BBBBBBBr   c                    d}t          j        t          |          5  t          j        d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          j        i            d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        g            d d d            d S # 1 swxY w Y   d S )Nz Could not convert foo to numericr[  r]  z%argument must be a string or a number)r^  r_  r   r   r  )r   ra  s     r   test_non_convertable_valuesz-TestEnsureNumeric.test_non_convertable_values  s   0]9C000 	* 	*"5)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 6]9C000 	' 	'"2&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	']9C000 	' 	'"2&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's3   ?AA'BBB.CCCN)rg  rh  ri  r  r  r  r  r   r   r   r  r  o  sS        8 8 8- - -&C C C

' 
' 
' 
' 
'r   r  c                      e Zd Zej        d             Zej        d             Zd Zd Zd Z	d Z
d Zej                            d ed	                    ej                            d
 ed                    d                         Zej                            d
 ed                    d             Zed             ZdS )TestNanvarFixedValuesc                     dS )Ng      @r   r   s    r   variancezTestNanvarFixedValues.variance  s    sr   c                 @    | j                             |dz  d          S )N      ?i )scalesize)prngnormal)r   r  s     r   sampleszTestNanvarFixedValues.samples  s!    yhm&AAAr   c                 \    t          j        |          }t          j        ||d           d S )N{Gz?rtol)r   r   r   r   )r   r  r  actual_variances       r   test_nanvar_all_finitez,TestNanvarFixedValues.test_nanvar_all_finite  s/     -00
tDDDDDDr   c                 <   t           j        t          j        d|j        d         z            z  }||d d d<   t	          j        |d          }t          j        ||d           t	          j        |d          }t          j        |t           j        d           d S )Nr+   r   Tr   r  r  F)r   rC   onesr   r   r   r   r   )r   r  r  samples_testr  s        r   test_nanvar_nansz&TestNanvarFixedValues.test_nanvar_nans  s    vGM!,<(< = ==#SSqS -TBBB
tDDDD -UCCC
TBBBBBBr   c                 B   t           j        t          j        d|j        d         z            z  }||d d d<   t	          j        |d          }t          j        ||dz  d           t	          j        |d          }t          j        |t           j        d           d S )	Nr+   r   Tr  r  r  r  F)	r   rC   r  r   r   r   r   r   r   )r   r  r  r  
actual_stds        r   test_nanstd_nansz&TestNanvarFixedValues.test_nanstd_nans  s    vGM!,<(< = ==#SSqS]<===

z8S=tDDDD]<>>>

z26======r   c                     | j                             |j        d                   }t          j        ||g          }t          j        |d          }t          j        |t          j	        |dg          d           d S )Nr   r  r   r   UUUUUU?r  r  )
r  uniformr   r   rG   r   r   r   r   r  )r   r  r  samples_unifr  s        r   test_nanvar_axisz&TestNanvarFixedValues.test_nanvar_axis  s    y((gmA.>(??)Wl344 -a888
RXx&:;;$	
 	
 	
 	
 	
 	
r   c                 $   d}| j                             d|dz   f          }t          j        |d d df<   t	          j        |ddd                                          }t	          j        |ddd                                          }t	          j        |ddd	                                          }d
}t          j        ||d           t          j        ||dz
  |z  |z  d           t          j        ||dz
  |dz
  z  |z  d           d S )N   i'  r   r  r   Tr   )r   r   r   r+   r  r  r  r  g       @)	r  r  r   rC   r   r   r   r   r   )r   nr  
variance_0
variance_1
variance_2r   s          r   test_nanvar_ddofz&TestNanvarFixedValues.test_nanvar_ddof  s   )##%Q#882]74aHHHMMOO
]74aHHHMMOO
]74aHHHMMOO
 
z3T:::: 	zAGq=3+>TJJJJ 	zAGC+@3+FTRRRRRRr   r   r+   r   r   c                 d   t          j        d          }t          j        g dg dg dg          |d dd df<   t           j        x|d<   |d d df<   t          j        g dg dg dgg d	g d
g dgg          }t	          j        |d||          }t          j        |d d         |||f                    t          j        |d                   sJ t	          j	        |d||          }t          j        |d d         |||f         dz             t          j        |d                   sJ d S )N)   r  )g*f#?g| 9?gֆ?)gvZ?gן?gצʺ?)g6bڷ?gE-9?g$mxP?r   )gӞ?g/-:Ŭ?g??)g-ull?g(I0쓵?gM6?)g-ull?gF?gmɉM6?)g
^?g)܌	?g쵇Z&?)g@#)G?g/TS?g6܃?)g@#)G?g/TS?gSW_܃?T)r   r   r   r  )
r   emptyr  rC   r   r   r   r   isnanr   )r   r   r   r  r  r   r   s          r   test_ground_truthz'TestNanvarFixedValues.test_ground_truth  s    (6""(444444444
 
BQB &(V+
WQQQT] 8 988888888 988888888
 
  mGDt$GGG
s2A2wt(<===xA mGDt$GGG
s2A2wt(<(CDDDxAr   c                     t          dt          j        d          z            }|                    |          }|dk    sJ d S )Ni-r&   )r   r  )r   r   r  r   )r   r   datar  s       r   test_nanstd_roundoffz*TestNanvarFixedValues.test_nanstd_roundoff  sB     i"'"++-..t$$}}}}}}r   c                 @    t           j                            d          S Ni  r   r   RandomStater   s    r   r  zTestNanvarFixedValues.prng      y$$T***r   N)rg  rh  ri  r^  r  r  r  r  r  r  r  r  rj  rk  r   r  r  propertyr  r   r   r   r  r    sR        ^  ^ ^B B ^BE E EC C C> > >
 
 
S S S& [VUU1XX..[VUU1XX..$  $  /. /.$ L [VUU1XX..  /. + + X+ + +r   r  c                       e Zd Zej        d             Zej        d             Zej                            dg d          d             Z	d Z
d Zd Zd	 Zd
 Zed             ZdS )TestNanskewFixedValuesc                 R    t          j        t          j        ddd                    S Nr   r      r   sinlinspacer   s    r   r  zTestNanskewFixedValues.samples       vbk!Q,,---r   c                     dS )Ng5ȿr   r   s    r   actual_skewz"TestNanskewFixedValues.actual_skew      ""r   r  gfffff@g@g     @c                 l    |t          j        d          z  }t          j        |          }|dk    sJ d S Ni,  r  )r   r  r   r!  )r   r  r  r  s       r   test_constant_seriesz+TestNanskewFixedValues.test_constant_series  6     RWS\\!~d##s{{{{{{r   c                     d\  }}| j                             ||d          }t          j        |          dk     sJ d\  }}| j                             ||d          }t          j        |          dk    sJ d S N)333333?皙?d   r  r   )r  r  )r  betar   r!  r   alphar  left_tailedright_taileds        r   test_all_finitez&TestNanskewFixedValues.test_all_finite&      tinnUDsn;;~k**Q....ty~~eT~<<~l++a//////r   c                 X    t          j        |          }t          j        ||           d S rA   )r   r!  r   r   r   r  r  r  s       r   r  z(TestNanskewFixedValues.test_ground_truth/  *    ~g&&
t[11111r   c           	         t          j        |t           j        t          j        t	          |                    z  g          }t          j        |d          }t          j        |t          j	        |t           j        g                     d S Nr   r   )
r   rG   rC   r  r0  r   r!  r   r   r  r  s       r   	test_axisz TestNanskewFixedValues.test_axis3  k    )Wbfrws7||/D/D&DEFF~gA...
tRX{BF.C%D%DEEEEEr   c                     t          j        |t           j        g          }t          j        |d          }t          j        |          sJ d S NFr  )r   rt  rC   r   r!  r  )r   r  r  s      r   	test_nansz TestNanskewFixedValues.test_nans8  F    )Wbf-..~ge444x~~r   c                     t          j        |t           j        g          }t          j        |d          }t          j        ||           d S NTr  )r   rt  rC   r   r!  r   r   r  s       r   test_nans_skipnaz'TestNanskewFixedValues.test_nans_skipna=  E    )Wbf-..~gd333
t[11111r   c                 @    t           j                            d          S r  r  r   s    r   r  zTestNanskewFixedValues.prngB  r  r   N)rg  rh  ri  r^  r  r  r  rj  rk  r  r  r  r  r  r	  r  r  r   r   r   r  r             ^. . ^. ^# # ^# [U$<$<$<==  >=0 0 02 2 2F F F
  
2 2 2
 + + X+ + +r   r  c                       e Zd Zej        d             Zej        d             Zej                            dg d          d             Z	d Z
d Zd Zd	 Zd
 Zed             ZdS )TestNankurtFixedValuesc                 R    t          j        t          j        ddd                    S r  r  r   s    r   r  zTestNankurtFixedValues.samplesJ  r  r   c                     dS )Ng|vKr   r   s    r   actual_kurtz"TestNankurtFixedValues.actual_kurtN  r  r   r  r  c                 l    |t          j        d          z  }t          j        |          }|dk    sJ d S r  )r   r  r   r&  )r   r  r  kurts       r   r  z+TestNankurtFixedValues.test_constant_seriesR  r  r   c                     d\  }}| j                             ||d          }t          j        |          dk     sJ d\  }}| j                             ||d          }t          j        |          dk    sJ d S r  )r  r  r   r&  r  s        r   r  z&TestNankurtFixedValues.test_all_finiteY  r  r   c                 X    t          j        |          }t          j        ||           d S rA   )r   r&  r   r   r   r  r  r  s       r   r  z(TestNankurtFixedValues.test_ground_truthb  r  r   c           	         t          j        |t           j        t          j        t	          |                    z  g          }t          j        |d          }t          j        |t          j	        |t           j        g                     d S r   )
r   rG   rC   r  r0  r   r&  r   r   r  r  s       r   r  z TestNankurtFixedValues.test_axisf  r  r   c                     t          j        |t           j        g          }t          j        |d          }t          j        |          sJ d S r  )r   rt  rC   r   r&  r  )r   r  r  s      r   r  z TestNankurtFixedValues.test_nansk  r  r   c                     t          j        |t           j        g          }t          j        |d          }t          j        ||           d S r  )r   rt  rC   r   r&  r   r   r  s       r   r	  z'TestNankurtFixedValues.test_nans_skipnap  r
  r   c                 @    t           j                            d          S r  r  r   s    r   r  zTestNankurtFixedValues.prngu  r  r   N)rg  rh  ri  r^  r  r  r  rj  rk  r  r  r  r  r  r	  r  r  r   r   r   r  r  G  r  r   r  c                       e Zd Z ej        g d          d             Zd Zej                            dddg          d             Z	d	S )
TestDatetime64NaNOps)smsusns)paramsc                     |j         S rA   )param)r   rv  s     r   unitzTestDatetime64NaNOps.unit{  s
    }r   c                    t          j        dd                              |          }|d         }|t          |          t	          |          fD ]}t          j        |          }||k    sJ |                    dt           j                  }|t          |          t	          |          fD ]}t          j        |          }||k    sJ d S )Nz
2016-01-01r   )periodsr   )	pd
date_rangeas_unitr   r   r   r   insertNaT)r   r$  dtiexpectedr  r  dti2s          r   r   z!TestDatetime64NaNOps.test_nanmean  s    mL!444<<TBBq6s++VC[[9 	& 	&C^C((FX%%%%%zz!RV$$---vd||< 	& 	&C^C((FX%%%%%	& 	&r   constructorM8m8c                    | d| d}t          j        d                              t           j                                      |                              dd          }d|d<   t          j        |d	          }t          j        |          sJ |j	        |k    sJ t          j        |d
d          }t          j
        g d|j	                  }t          j        ||           t          j        |dd          }t          j
        |d         |d         |d         |d         g          }t          j        ||           d S )N[]   r  r   r+  )r   r   Fr  r   r   )r  r  r+  r  r   rF  )r   r   )r+   r   )r   aranger1   int64viewreshaper   r   isnatr   r  r   ru  )r   r/  r$  r   r  r  r-  s          r   test_nanmean_skipna_falsez.TestDatetime64NaNOps.test_nanmean_skipna_false  s3   (((((imm""28,,11%88@@AFFFE222x|u$$$$!E:::8MMM;;;
#FH555!E:::8SYD	3t9c&kJKK
#FH55555r   N)
rg  rh  ri  r^  r  r$  r   rj  rk  r;  r   r   r   r  r  z  s        V^222333  43
& & & []T4L996 6 :96 6 6r   r  c                  4   t           j        rt          j        dd          5  t          j        d          sJ 	 d d d            n# 1 swxY w Y   t          j        dd          5  t          j        d          rJ 	 d d d            d S # 1 swxY w Y   d S d S )Nuse_bottleneckTF)r   _BOTTLENECK_INSTALLEDr'  option_context
get_optionr   r   r   test_use_bottleneckrA    s.   # 7/66 	3 	3=!1222222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 /77 	7 	7}%5666666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7	7 7s#   AA
A
&BBBznumpy_op, expectedr&   g      @r   r  c                 J     | t          g d                    }||k    sJ d S )N)r   r+   r   r  )r   )numpy_opr-  r  s      r   test_numpy_opsrD    s6    " Xf\\\**++FXr   	operationc                     t          ddt          j        dt          j        dg          }|                                } | |          } | ||          }||k    sJ d S )Nr   r+   r   r  )mask)r   r   rC   r   )rE  serrG  median_expectedmedian_results        r   %test_nanops_independent_of_mask_paramrK    sg    , !Q261-
.
.C88::DinnOIc---Mm++++++r   	min_countr   c                 F    t          j        dd |           }d}||k    sJ d S )N)   %   Fr   check_below_min_count)rL  r  expected_results      r   5test_check_below_min_count_negative_or_zero_min_countrS    s4     )(D)DDFO_$$$$$$r   rG  )FFTT	   Fzmin_count, expected_result)r   F)e   Tc                 F    d}t          j        || |          }||k    sJ d S )N)r&   r&   rP  )rG  rL  rR  r   r  s        r   -test_check_below_min_count_positive_min_countrW    s4     E)%yAAF_$$$$$$r   )l   l$=O Tc                 H    d}t          j        |d |           }||k    sJ d S )N)i?" i  )rG  rL  rP  )rL  rR  r   r  s       r   &test_check_below_min_count_large_shaperY    s7    
 E)%diPPPF_$$$$$$r   r   r   r   c                 b    t          j        t          j        |           j        |          rJ d S rA   )r   r  r   r   r  )any_real_numpy_dtyper   s     r   test_check_bottleneck_disallowr\    s1     "28,@#A#A#FMMMMMMMr   r  )l          l       l   |H%[<c                     t          |t          d          t          j                  }|                                }|j                                        }||k    sJ ||k    sJ |j        t          j        k    sJ d S )Ni  )indexr   )r   r   r   r7  r   r  r   float64)r   r  rH  r  	np_results        r   test_nanmean_overflowra    sw     E#JJbh
7
7
7CXXZZF
!!IS====Y<2:%%%%%%r   r   float128rI  )r   r   r   r  r  r  r  c                    |t          j        d           t          t          d          |          } t	          ||                      }t          |          r|dvr|j        t          j        k    sJ d S |j        |k    sJ d S )Nznp.float128 not availabler&   r  )r  r  )	r^  skipr   r   r   r   r   r   r_  )r   r   rI  rH  r  s        r   test_returned_dtypere    s     }/000
r%
(
(
(C!WS&!!##F %6#?#?|rz))))))|u$$$$$$r   )w	functoolsr   operatorr   numpyr   r^  pandas.util._test_decoratorsutil_test_decoratorsrn  pandas.core.dtypes.commonr   pandasr'  r   r   pandas._testing_testingr   pandas.corer   pandas.core.arraysr   r
   r   r  r   r   r   r#   r)   r,   r2   r6   r;   r?   rD   rH   rK   rN   rR   rT   rW   rY   r[   r^   rf   rj   rn   rp   rs   ru   rw   rz   r}   r   rj  rk  eqnaneqnenannegtnangtgenangeltnanltlenanler|  r  r  r  r  r  r  r  r  r  rA  r   r   r   r   r   r   r  r  rp  rq  rD  rl  rm  r   r   r   r  r  r!  r&  r*  rK  rS  r  rW  skip_if_windowsskip_if_32bitrY  r\  ra  int16int32r7  float32r_  r   re  r   r   r   <module>r     s 
                ) ) ) ) ) ) ) ) ) 6 6 6 6 6 6                        , , , , , ,		       ' ' '
 & & & 1 1 1
 3 3 3
 ) ) ) ) ) ) C C C
 C C C
 & & & + + + + + + ) ) )    + + + ) ) ) 4 4 4 2 2 2   " & & &
 6 6 6
   
 6 6 6
                     gB gB gB gB gB gB gB gBT 	fl#	fl#	fl#	fl#	fl#	fl#
 
!+ !+
 
!+H    ' ' '  
 
 
  #5#5#566' ' 76 '$ XXX 2 2 2
    6 6 6
-' -' -' -' -' -' -' -'`r+ r+ r+ r+ r+ r+ r+ r+j0+ 0+ 0+ 0+ 0+ 0+ 0+ 0+f0+ 0+ 0+ 0+ 0+ 0+ 0+ 0+f&6 &6 &6 &6 &6 &6 &6 &6R7 7 7 		B	#	S	C	s			A	A     (, ,) (, r1g..% % /.% 
T82800011828TFQ%[<P3Q3QR  5
K7PQQ% % RQ % 5
DV7WXX% % YX  % )X!677N N 87N
  D D DEE
& 
& FE
& 






J%%
 
 #W#W#WXX	% 	% YX
 
	% 	% 	%r   