`L iրFddlZddlZddlZddlmZddlZddlm Z m Z ddl m Z m Z ddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZmZmZmZm 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,dd l-m.Z.m/Z/dd l0m1Z1dd l2m3Z3m4Z4ddl5m6Z6m7Z7m8Z8ddl9m:Z:ddl;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDddlEmFZFddlGmHZHmIZImJZJmKZKmLZLddlMmNZNe jZPejjdZSdZTdZUeSjddeTZWeSjddeTZXeSjeUeTeXzeWzZZeZdddfjdeTZ\eZdddfjeUdZ]e\jZ_e]jZ`dZadZbdZcdZdejjgdgdgd ggdgdgd gd!d"gfgd#gd$ggd#gd$gd$gd$gejdd%gfdejdgejejdggdejdgejejdgejejdgejejdggejdd%gfgejjd&gd'd(Zid)Zjejjd*dgeIzeJzejjd+d,d-gd.Zkejjd/e$d,0e#d,1gejjd*dgeIzeJzejjd+d,d-gejjd2ejejgejjd3gd4d5Znejjd6gd7ejjd8gd9ejjd2ejejgejjd*dgeIzeJzd:Zod;ZpeDd<Zqd=Zrd>Zsd?Ztd@ZudAZvejjd*eIeJzdBZwejjdCd-dgejjd*eIeJzdDZxejjdCd-dgdEZydFZzejjdGe8e7HejjdIeFge:HejjdJeeed-Kee dLMe dNMe dOMege:HdPZ{dQZ|dRZ}dSZ~dTZejjdCd-dgejjd*eIeJzdUZejjdVd-d,gejjdWd-d,gejjd*dgeIzeJzdXZdYZejjd*eIeJzdZZejjd*eIeJzd[Zejjd*eJeIzd\Zejjd*eJeIzd]Zd^Zd_Zejjd`d-d,gejjdad-d,gejjdbejjdd%e jdd%dcdgdeZejjdfeJdgZdhZejjdigdjejjdkgdldmZejjdfeJdnZdoZdpZejjdqeIdrZejjdqeIdsZejjdqeIdtZduZdvZdwZejjdqeIdxZdyZejjdqeIdzZd{Zd|Zejjd}d~dgdZdZejjdfeJdZdZdZdZdZejjd*eIeJzdZdZejjdfeJdZdZejjdfeJdZdZejjdgdejjdfeJdZejjdgdejjd*eHeIzeKzdZejjdfeJdZejjdfeJdZejjdejegeIzeJzdZejjdGe8dZdZdZdZdZdZejjd*eHeIzeJzdZdZejjdddgdZejjdddgejjdd-d,gejjdbe]eZgdZdZdZdZejjdbeZejxeZejxeZ ejzeZj|gdZejjdddgdZdZdZejjdgddZdZdZejjdddgdZejjdddgejjdd-d,gdZejjdddgejjdd-d,gdZejjdddgejjdd-d,gdZdZejjde jddddgeJDcgc]'}|ejdej)c}zdZejjdddgdZdZdZejjdeee#e$e"e!gdZejjdeee#e$e"e!e egd„ZdÄZejjdd-d,gdĄZejjeLedūkdƬǫdȄZdɄZycc}w)N)sparsestats)config_contextdatasets)clone)NotFittedError)parse) linear_kernel)cross_val_predict)Pipeline) BinarizerKernelCenterer MaxAbsScaler MinMaxScaler NormalizerPowerTransformerQuantileTransformer RobustScalerStandardScaleradd_dummy_feature maxabs_scale minmax_scale normalizepower_transformquantile_transform robust_scalescale)BOUNDS_THRESHOLD_handle_zeros_in_scale)SVR) gen_batchesshuffle)_convert_to_numpy_get_namespace_device_dtype_ids)yield_namespace_device_dtype_combinations)_get_check_estimator_ids) _array_api_for_tests_convert_containerassert_allcloseassert_allclose_dense_sparseassert_almost_equalassert_array_almost_equalassert_array_equalassert_array_less skip_if_32bit) check_array_api_input_and_values)COO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSLIL_CONTAINERS sp_version)mean_variance_axissize c>t|dr|j}|S)Ntoarray)hasattrr?as k/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/preprocessing/tests/test_data.pyr?r?Usq) IIK HcFtj|jdS)Nr)npasarrayshaperAs rC_check_dim_1axisrI[s ::a=  q !!rDcJ||k7r|dz|z|k(sJy||z||z z|k(sJy)Nr:)i batch_start batch_stopn chunk_sizen_samples_seens rCassert_correct_incrrR_s<QA#~555:~k!9:nLLLrDc\ddg}ddg}t||D]\}}tj||}tj|}t}tj|ddz}t j t 5|j|||dddy#1swYxYw)Nr: sample_weight)ziprngrandnrpytestraises ValueErrorfit) n_sampless n_featuress n_samples n_featuresXyscalersample_weight_notOKs rC9test_raises_value_error_if_sample_weights_greater_than_1drgfsQJa&K!$Z!= @ : IIi , IIi !"ii 15: ]]: & @ JJq!+>J ? @ @ @ @ @s B""B+ )XwrcrW)r:rTrU)@?r:rr:)rrr:rUarray_constructor)array sparse_csr sparse_cscc@|jd }t||}t||}tj|jd}t |}|j |||tj|jd}t |}|j ||gdgdg} t|j|jt|j|jt|j| |j| y)Nrr with_meanrV)?@ @)rxg@g@) startswithr(rFonesrHrr^r+mean_var_ transform) rhrcrWroruywscaler_wrdreX_tests rC"test_standard_scaler_sample_weightrxs.&00::I1/0A B 1 2B ! B 2H LLR}L5  A i 0F JJq! /F hnn5 X]]3((0(2D2DV2LMrDcttttfD]}t}|j |j |d}t |trtj|}t|dk(rt|j|jt|jtjt t#|j%dtj&t t#|j)dtj&t nt|j|j%t|j|j)t#|j%dtj&t t#|j%ddt#|j)dd|j*|j,dk(sJ|j/|}t#|| tjd}t}|j |j |d}t|jdt|jdt#|j%ddt#|j)dd|j*|j,dk(sJy NTcopyr:raxisrmrjr:)X_1rowX_1col X_list_1rowrr^r} isinstancelistrFrprIr+r{ravelscale_rzrbr,mean zeros_likestdn_samples_seen_rHinverse_transform)rcreX_scaled X_scaled_backs rCtest_standard_scaler_1drsfk; 74!::a=**14*8 a  A A ! #  aggi 8  rwwz/B C %hmmm&;R]]:=V W %hlll&:BMM* 1 IIi , 3 3E :  ' #AI)4::a}:=GGJww(..(((||!!RZZ///}}""bjj000 1rDrertwith_centeringrconstant)rrmY@c8t|tr.|r,tj|jj dt jjd}d}d}|r t|j|dz}ni}t j||f||} || n|| } |j| fi|j| } t|tr8t|j t j"| j$dd t|j&t j(| j$d| | usJt+| | t|tr-|s*t-| |j. } | | usJt+| | yyy) Nz# does not yet support sample_weightrdr:r;rTrV)rH fill_valuerHz>atolrt)rrr[skip __class____name__rFrrdictuniformfullr^r}rr)r|zerosrHrrzr*rru) rerrrrrYrarb fit_paramsX_arrayrcr X_scaled_2s rC&test_standard_scaler_constant_featuresrs`&,',= v''0011TUV ))   "CIJ  (Ca(GH  ggY 3PUVG#+1A'1JAvzz!*z*44Q7H&.) RXXaggaj%9EFMM2771771:#67 1   1-&.)2C1(8(89 """$Z3 3D)rDra)r=ri'average)g|=r:g _Bc.d\}}tjt||dzDcgc]}d|z c}|}|jd}tj||f|} ||z| d|dzddf<||z | |dzdddf<|| n|| } t dj | } tjtjj} || z|dzz|dz| dzz|dzzz} |dz| k}tj|sJt| j|| |ksJt| j|d | dddf| d ddfz dk7}t| jtj|dt| jtj|dtj |dz| kD|}t| j|tj"| j|ycc}w) N)ir:r=rrrTFrtrmr9)rFrprangerHemptyrr^finforepsanyallr|r)r logical_not logical_andsqrt)rarrr scale_min scale_maxrLscalesrbrcrrerbounds within_boundsrepresentable_diff common_masks rC+test_standard_scaler_near_constant_featuresrs#Iy XXeIy1}&EFr1uFe TFaJ )Z(6A$v-A Q$v-Ai1n#+a1A!1DG e , 0 0 9F ((2::  " "C_vqy (9a<#q&+@7A:+M MFAI'M 66-   v{{=)VM-BB CC CFMM-0#6 1a41RU8+q0FKK/A BCQGFMM"..1C"DEqI ..V!35GHKFMM+. 0D[0QRQGs Hcgd}tj|}||fD]Y}t|}t|j dt|j dt t|dd|[y)N)rm@@rrrmFruwith_std)rFrprr,rrr-)X_listX_arrrcrs rC test_scale_1drKsf !F HHV Ee_I8!(--/37!(,,.#65eeDaH IrDctjdtjdtj}t j 5t j dtt|dddtt|tjdtjdtjdtj}d}tjt|5t|}dddttjdtjddtj}t j 5t j dtt|}dddttjdtjdd tj}d }tjt|5t|}dddttjdt||tjt|5t|d }dddttjdt||y#1swY!xYw#1swYxYw#1swY"xYw#1swYxYw#1swYhxYw) Nh㈵>rerrorr=z:standard deviation of the data is probably very close to 0matchg0.++g}Ô%ITz$Dataset may contain too large valuesFr) rFrlogrwarningscatch_warnings simplefilter UserWarningrr,rr[warns)xwarning_messagex_scaledx_small_scaledx_big x_big_scaledx_big_centereds rC(test_standard_scaler_numerical_stabilityrWs 266$)rtol)rrUg@xDFrtr9)rFrrrrZrr^rreshaper)r{r|rrandintrrndim)rrYrbraoffsetsrrcr rchunktolr<rres rC4test_standard_scaler_partial_fit_numerical_stabilityr6s ))   "CJIkk%Jk7G [[c [ 3F )Z(61G;A!#''*L "KL!--emmAz.JK L CK%%|'9'9DK$$l&7&7cBK&& (;(;#F D EQ4077 CeKLAe , 0 0 3F 51K5 ::?MM!R(E!--e4 5 C << ## #K$$fkk<K&& C@rDrWc|tjdgdgdgdgg}|r"tj|jd}t ddd}|j ||j|}t|j|j|j|}t|j|jt|j|jy) NrmrrrFTrurrrV) rFrprYrandrHrrr}r-r?r)rWrrcnull_transformX_nullX_origs rCtest_partial_fit_sparse_inputr%es C53%#">?@A, #ee$ON  ' ' ' G Q QRS TFv~~'5  - -f 5Fv~~')9:v~~'5rDc tddddf}|r"tj|jd}t }t t |jddD]\}}|d|dzddf}|j}|.t j|}|j||}n:t j||d|dz}|j||||}|j|}t||t|||j|} t|| tj|jd} tjt j"} t%| |j&| zt%| |j(| z||dz|j*k(rbJtj,|d|dzt/j0|j*k(rJy)Nrrr:rV)rrYr!rHrr r!rrrr}r,rrFrrfloatrr.r|rrsumr[approx) rWrcrrLrX_sofar chunks_copy scaled_batch scaled_incr right_inputzeroepsilons rC.test_standard_scaler_trasform_with_partial_fitr1vs TcT1W A,  "Kk!''!*a895Iq1uIqL/lln  )+99'BL%11!E(;K)+99}Wq1u'=:L&11% e(<2K"++G4 !, <!';7!33K@ !';7xx #((5/%%$ 0 07 :;$ 2 2W <=  Ek999 9966-!a%01V]]++6 9rDc tjgdgdgdgdgdgdgtj}t}|j ||j |y)N)r:r:r:rr:r)rrrr:rr)r:rir:r:rr)rr:rrr:r)rrirr:rr:r)rFrpint32rr^r)rres rC.test_standard_check_array_of_inverse_transformr4sW         hh A F JJqM  QrDz#array_namespace, device, dtype_name)idscheck estimator)clipl1norml2maxcJ|jj}||||||y)N)device dtype_name)rr)r7r6array_namespacer?r@names rC'test_preprocessing_array_api_compliancerCs%6    ' 'D $ ?6jQrDcbtj}t}|j|}t |j ddt |j dd|j|}t ||td}|j|}t |j ddt |j dd|j|}t ||td}|j|}t |j ddt |j dd |j|}t ||td }tjt5|j|dddy#1swYyxYw) Nrrr:r:rT feature_rangerT)333333?rHrI)rTr:) irisdatarrr,minr=rr[r\r]r^)rcreX_trans X_trans_invs rCtest_min_max_scaler_irisrOs^ A ^F""1%Ggkkqk115gkkqk115**73Ka- /F""1%Ggkkqk115gkkqk115**73Ka- 4F""1%Ggkkqk148gkkqk137**73Ka- /F z " 1 s F%%F.cgdgdgdg}gdgdgdg}t}|j|}gdgdgd g}t|||j|}t|||j |}gdgd gd g}t||d td}|j|}gdgdgdg}t||t |}t||t |d}t||y)Nrrm?rrmgrrmg?rrlrRrmrrrmrv)rrrRrrrrrrm)rWrgsh|??)rrgS?rTrrErF)rmrmrvrmrmrm)rmrmrl)rrr,rr}r) rcX_newrerMX_expected_0_1rN X_trans_newX_expected_0_1_newX_expected_1_2s rC*test_min_max_scaler_zero_variance_featuresras +-=>A /1A BE^F""1%G%HNg~6**73Ka-""5)K,.@BTUk+=qI /F""1%G%HNg~61oGg~61F3Gg~6rDctj}t|d}tt j |ddtt j |ddy)Nr:rr)rJrKrr,rFrLr=)rcrMs rCtest_minmax_scale_axis1rcsA A11%GbffW15q9bffW15q9rDcfttttfD]<}td}|j |j |}t |trtj|}t|dk(rgt|jdtjtt|jdtjtn8t|jddt|jdd|j |j"dk(sJ|j%|}t||?tj&d}t}|j |j |}|jdk\sJ|jdksJ|j |j"dk(sJtj)}|j}|j}t||z ||z z t+|dyr)rrrrr^r}rrrFrprIr,rLrrbr=rrHrrzrr)rcrerrX_1drmax_s rCtest_min_max_scaler_1drgsfk; 744(::a=**1- a  A A ! # %hlll&:BHHZ

S  <<>S   ! !QWWQZ // / <<>D 88:D 88:D %|Dt'DrDctjjd}|jdd}d|dddf<||}|r|j |j d}t jt5tj|dddtdj||}|j|d }tjtj|rJtdj||}|j|d }tjtj|jrJt|j |j t|j"|j"t|j$|j$t|j&|j&|=t|j)d gd d t|j+d gdt-|d\} } t| |j)d t| |j/d ||usJ||usJ|j1|} | |usJ| |usJt| ||j1|} | |usJ| |usJt| j3||t4vrqtddd } | j7|}t9|j|j| j1|}t9|j|jyy#1swYxYw)NrrirjrrFrtrVTrrrg{GzgQ@gffffffֿg(\rTrr )rFrrrZr!rHr[r\r]rr^r}rrrKr,r{r|rrrrr6rrr?r3rr-)rWrrYrcX_sparserer scaler_sparseX_sparse_scaledX_sparse_scaled_meanX_sparse_scaled_varrX_sparse_scaled_backr"r#r$s rCtest_scaler_without_centeringrpCs ))   #C !QAAadG"H, z "'X&'e , 0 0- 0 PF-Hvvbhhx()) )"U377 8M$--hT-BOvvbhh33455 5fllM,?,?@fkk=+=+=>fmm]-A-ABf44m6S6ST! MMqM !#CQ  "(,,A,"68QR0B?TU0V--2HMMqM4IJ18<)'%%dS--h76;; 611&96;; 6 *U''s <MMrurctjgdtjddgddtjgddtjggtj}|||}t j |r|rt jd t|| }|j|t|jtjgd y) Nrr:rUrkr=rjrirrrz3'with_mean=True' cannot be used with sparse matrix.r)rUrirT) rFrpnanrrissparser[rrr^r-r)rurrrc transformers rC#test_scaler_n_samples_seen_with_nanrvs  RVVQOaBFF^aBFF^DBJJ A# Q  qi IJ 9xHKOOA{22BHHY4GHrDc|j|jcxurJJ|j|jcxurJJ|j|jcxurJJ|j|jk(sJyN)r{r|rr)scaler_1scaler_2s rC"_check_identity_scalers_attributesr{sp >>X^^ 33 33 3 ==HMM 11 11 1 ??hoo 55 55 5  # #x'?'? ?? ?rDctjgdgdgdgtj}||}tdd}|j |}t ||t |}|j |}t||t|||j||j|t|||j||j|t||y)Nrr)rjrkr)rrr=rFr) rFrprrrr)rr*r{rr^)rX_denserjtransformer_dense X_trans_densetransformer_sparseX_trans_sparses rCtest_scaler_return_identityrshh 9j9LG(H&G%33Gfmm]-A-AB 1 ?hlll24MN0Bu%q1--2HMMqM4IJ18<)'%%dS  $ $D 1 <#11(;F <6;; 611&96;; 6 *O22 GGH < ? l SF JJqM&.."**555~~%%%&--444}}$$$rD csr_containerctjjdd}d|dddf<||}td}|j ||j dt jdk(sJ|j|}t|dddgfj|dddgfjy)Nr=rjrFrr:) rFrrZrr^rr[r)r}r)r?)rrcrerMs rC"test_robust_scaler_col_zero_sparser:s AAAadGaA  /F JJqM == v}}Q/ // /q!GAa!fI%%'QC)@)@)BCrDcTtjjd}|jdd}d|dddf<t }|j |j |}ttj|dddgzt|jdddy)Nrrirjrr) rFrrrZrr^r}r,medianr)rYrcrers rCtest_robust_scaler_2d_arraysrJs ))   "C !QAAadG ^Fzz!}&&q)Hbiiq91u9Ehlll215q9rDr)rg?皙?rRr:strictly_signed)positivenegativerNcTtjdd|j}|dk(r%tj|j |_nn|dk(r&tj|j  |_nC|dk(r>tj |j jtj|_|j}td }td }|j||j|t|j|jy) Nr8rjrrrrrFr)rr!tocscrFabsrKrrHrr?rr^r)r)rrrjr}rk scaler_denses rC+test_robust_scaler_equivalence_dense_sparserWs{{4G4::rDctjjd}|jdd}tjgdg}t d}|j |}|j||}||jz }t|j||j|}t||jy)Nrrirj)rrmrlrrWFr) rFrrrZrprr^r}rr,r?r)rrYrc single_rowre row_trans row_expectedrow_scaled_backs rC(test_robust_scaler_transform_one_row_csrrms ))   "C !QA567J  /F ZZ]F  z!:;I -Li//1<@..y9Oj/*A*A*CDrDc4tj}t}|j|}t t j |dd|j|}t ||t j|dd}|d|dz }t |dy)NrrKqrr: rJrKrrr,rFrr percentile)rcrerMrNriqrs rCtest_robust_scaler_irisr|s~ A ^F""1%Gbiia8!<**73Ka- g2A A$1+Cc1%rDc8tj}td}|j|}t t j |dd|j|}t ||t j|dd}|d|dz }t |dy)N)r=Zquantile_rangerrrr:r)rcrerMrNrq_ranges rC!test_robust_scaler_iris_quantilesrs A  2F""1%Gbiia8!<**73Ka- g2AdQqTkGgq)rD csc_containerctj}td}|j|}|j |}t ||tdd}|j|}|j |}t ||||}|j|}|j |}t |j |j y)Nr7 n_quantilesnormal)routput_distribution)rJrKrrrr,r?)rrcrurMrNrj X_sparse_tranX_sparse_tran_invs rCtest_quantile_transform_irisrs A%"5K''*G//8Ka-%"(SK''*G//8Ka-QH--h7M#55mDh..02C2K2K2MNrDctjgdgdgdg}||}tjgdgdgdg}||}d}tjt|5t dj |dddt d }d }tjt|5|j |ddd|j |d }tjt|5|j|dddtjgdgdg}d }tjt|5|j|dddt d j |}tjtd 5|jddddt d }d}tjt|5}|j |dddtdk(sJ|j|jdk(sJy#1swYxYw#1swYsxYw#1swY8xYw#1swYxYw#1swYxYw#1swYwxYw)N) rrrrrrrrrr) rTrirrrkrrr=rr) rr@ffffff@rrffffff@r#@r) rirrrkrrr=rrzmThe number of quantiles cannot be greater than the number of samples used. Got 1000 quantiles and 10 samples.rr=) subsamplerz>QuantileTransformer only accepts non-negative sparse matrices.zKX has 2 features, but QuantileTransformer is expecting 3 features as input.z+Expected 2D array, got scalar array insteadrzn_quantiles is set to n_samplesr:r)rF transposer[r\r]rr^r}rrrlen n_quantiles_rH)rrcX_negrru X_bad_featwarn_msgrs rC#test_quantile_transform_check_errorrs& / + 4  A aA LL / , 4  E % E  z 11b)--a01&"5KNG z 1OOANG z 1%e$% ,.VWJ V  z 12%%j12&"599!+>+@A+;?? L))!,GbffW__%6Q?EbffW__%6Q?E#55g>Kaiik;+>+>+@ArDctjgdgdgdg}t|jdd}t|dd}t ||jy)N)rrrrr)rTrirkrr=)rrrrrrrj)rrr:)rFrprrr,)rc X_trans_a0 X_trans_a1s rCtest_quantile_transform_axis1r sH &(8:STUA#ACCaQ?J#AA1=Jj*,,7rDctjddgddgddgg}||}tddj|}t ||tddj|}t |j |t ||j tjddgddgddgg}tjddgddgddgg}tdj |}|j|}t ||tjjd}t}|j ||jd gg|jtj|ggk(sJ|jd gg|jtj|ggk(sJ|jd gg|jtj|jggk(sJ|jd gg|jtj|jggk(sJy) Nrr:rUrrrRrr)r8r:r=) rFrprrr,r?r^r}rrLr=rr)rr}rjrM X_trans_sprcX1rus rCtest_quantile_transform_boundsrs'hhAAA/0GW%H"aa@NNwWGgw/$CQQJj002G<gz'9'9';< 1a&1c(QF+,A As8aX3x0 1B%!488;K##B'Ggr* #A%'KOOA  3% )[-B-BRVVAYK=-Q QQ Q  2$ (K,A,ABFF1I;-,P PP P  ( (3% 1[5R5R &&(( ) *+6    ( (2$ 0K4Q4Q &&(( ) *+5  rDc tj}tjdgtdz gdgdgdgdgdgg}||fD]?}t dd }|j |}|j|}t||d Ay) Nrr=rvrTrUrir8rr  r) rJrKrFrprrrrr,)X_1X_2rcrurMrNs rC#test_quantile_transform_and_inversers ))C ((SE,r12SEA3aS1#N OC3Z=)dK ++A.!33G< !![!< =rDctjtjdddgtjtjddgtjdddgg}tdd}|j |tj |j dddfjsJtj |j ddddfjrJy)Nrr:rRr=rr ) rFrprsrrrrrr)rcrus rCtest_quantile_transform_nanrs 2661a#bffbffa%=1a?PQRA%"2FKa  88K**1a40 1 5 5 77 7xx ..q!"u56::<< <S  rwwy!Q& '' 'rDcdD]Q}t|}tjtd5|j t j dddSy#1swY^xYw)N))r9r)r)r=r)g Y@r)rrrzInvalid quantile range: \(r)rr[r\r]r^rJrK)range_res rC test_robust_scaler_invalid_rangersX "V4 ]]:-J K " JJtyy ! " " " " "s AA! ctjjd}|jdd}d|dddf<||}t |d}tj tj |rJt |d}tj tj |jrJt |jd}t||jtjt5t |dd dddt|jd gd d t|jd gd ||usJt!|d\}}t||jd t||jd t |ddd}t|j|jy#1swYxYw)NrrirjrrFrtr:)rurrrirTrTr )rFrrrZrrrrKrr,r?r[r\r]rrr6) rrYrcX_csrr X_csr_scaled X_csc_scaledX_csr_scaled_meanX_csr_scaled_stds rC%test_scale_function_without_centeringr&s ))   #C !QAAadG ! EQ%(Hvvbhhx()) )%0Lvvbhh|00122 2%8Lh (<(<(>? z ". eu1-. 1 ?hlll24MN 1  *<\1*M''/A1FG. ! 0DE%%dKLemmo|/C/C/EF!..s G""G+ctj}t|d}tt j |ddt j |dd}|d|dz }t|dy)Nr:rrrrrJrKrr,rFrrrcrMrrs rCtest_robust_scale_axis1r*3sY A11%Gbiia8!< g2A A$1+Cc1%rDctjdddf}t|}tt j |dt j |d}|d|dz }t|dy)Nr:rr)rr(r)s rCtest_robust_scale_1d_arrayr,<sZ !Q$A1oGbii0!4 g*A A$1+Cc1%rDc"gdgdgdg}t}|j|}gdgdgdg}t|||j|}t||gdgdgd g}|j |}gd gd gd g}t||d y)NrQrSrTrY)rrrWrZrUrVrX)rrmr)rWrg_)rrgіs)?rUr)rrr,rr})rcrerMrrNr\r^X_expected_news rC)test_robust_scaler_zero_variance_featuresr/Es +-=>A ^F""1%G#$46FGJgz2**73Ka-/1A BE""5)K')>@UVNk>1ErDc8tjjd}|jdd}tj|tj ddztj ddzg}d}t |d j|}|j|}|jtjd d k(sJ|jtjdd k(sJ|jtjdd k(sJy)Nrrr:)rr:ri)r:cT)r unit_variancerMbP?)rr)rFrrrZvstackrzrr^r}rr[r)rr)rYrcX_with_outliersr robust_scalerrMs rC test_robust_scaler_unit_variancer7^s ))   #C '1AiiBGGH$5$;RWWX=NQU=U VWON dSWWM%%a(G  FMM!$> >> >   6==#= == = ;;=FMM!6 66 6rDc4gdgdgdgdg}t}|j|}gdgdgdgdg}t|||j|}t||gdgd gdg}|j |}gd gd gdg}t||d t |}t||||} |j| } gdgdgdgdg}t| j ||j| } t|| j y) NrQ)rrm333333ӿrXrY)rrmUUUUUU?)rrmgɿ)rrmrmrUrV)rrlr:rTr)rrr,rr}rr?) rrcrerMrrNr\r^r.rjrX_trans_sparse_invs rC)test_maxabs_scaler_zero_variance_featuresr<ps +-=?OPA ^F""1%G J gz2**73Ka-/1A BE""5)K,.>@PQNk>1E1oGgz2 "H))(3N J n446 C11.Aa!3!;!;!=>rDcgdgdgdgdg}t}|j|}gdgdgdgdg}t||y) N)rrmrRrW)rrmr9rH)rrmgYr)rrrg)rrmg{Gzt?rH)rrmg~jthgп)rrmrWr)rrrrW)rrr,)rcrerMrs rC'test_maxabs_scaler_large_negative_valuer>sO   A^F""1%G! J gz2rDcJ|gdg}t}|j|}|j|}|gdg}t|j |j |j |}t|j |j y)N)rRrmrmr[)rr^r}r,r?r)rrcrerMrrs rC(test_maxabs_scaler_transform_one_row_csrr@s '(A ^F ZZ]Fq!G01Jgoo/1C1C1EF,,W5Maiik=+@+@+BCrDcttttfD]}td}|j |j |}t |trtj|}t|dk(rGttj|jdtjtn/ttj|jdd|j |j"dk(sJ|j%|}t||tjd}t}|j |j |}ttj|jdd|j |j"dk(sJtj'}tj|j}t||z t)|dy)NTrr:rrrmr)rrrrr^r}rrrFrprIr,rr=rzrbrrHrrr)rcrerrremax_abss rCtest_maxabs_scaler_1drCs}fk; 744(::a=**1- a  A A ! # %bffX\\q\-A&BBGGJDW X %bffX\\q\-A&BC H%%33300: !-34$ A ^Fzz!}&&q)HbffX\\q\%9:C@  ! !QWWQZ // / <<>DffTl GdWnl4d.KLrDc tddddf}|jd}ddd||dzfD]}tj|}t}t}t}t ||D]N}|j ||}|||} |j | }|||} |j | }Pt |j|jt |j|jt |j|j|j|jk(sJ|j|jk(sJ|j|jk(sJt |j|jt |j|jt |j|jt |j||j|td|} tj|| }tj || }t |j|j|j|jk(sJt |j|jt |j||j|tj|}t}tt ||D]H\} }|j ||}t| |j|j|||jJ!y)Nrrr:rTrrr)rrHrr^r!rr,max_abs_rrr}rr rRr r ) rrcrOrPr rscaler_incr_csrscaler_incr_cscrr!X_cscrrLs rCtest_maxabs_scaler_partial_fitrIs TcT1W A  A!RAF+/ #~))!, "n &.&. J/ AE%11!E(;K!!E(+E-99%@O!!E(+E-99%@O  A ","7"79M9MN!,"7"79Q9QR!,"7"79Q9QR++{/J/JJJJ++/N/NNNN++/N/NNNN!,"5"5{7I7IJ!,"5"57M7MN!,"5"57M7MN!,"8"8";[=R=RST=UVq*%#~))!F)4 "n006; !,"7"79M9MN++{/J/JJJJ!,"5"5{7I7IJ!,"8"8";[=R=RST=UV$~))!, "n !+a"<= HAu%11!E(;K !KK ::%*::   M/rDc|dk(rTtj|jd}tdD]}t ||dt |ddy |dk(rUtdD]$}t t j ||d&t t j |ddy |dk(rJt|jd}tdD]}t ||dt |ddy y ) zr Convenient checking function for `test_normalizer_l1_l2_max` and `test_normalizer_l1_l2_max_non_csr` r9r:rrUrmrr<r=N)rFrr(rr+lar;r=)r;X_normrow_sumsrLrow_maxss rCcheck_normalizerrOs  t|66&>%%1%-q 2A  S 1 2HQK- q 9A q 2C 8 9BGGF1I.4 v;???*q 2A  S 1 2HQK- rDr;r9r<r=ctjjd}|jdd}||}d|dddf<|jd}|jd}d|j ||||}|||fD]u}t |d} | j|} | |usJt| } t |d} | j|} | |usJt| } | | fD]} t|| wy) NrrirjrrUTr;rF) rFrrrZindptrrKrr}r?rO) r;rrYr}X_sparse_unprunedindptr_3indptr_4X_sparse_prunedrc normalizerX_norm1X_norm2rLs rCtest_normalizer_l1_l2_maxr[)s ))   "Cii1oG%g.GAqDM!''*H ''*H038H-$G,O(9 : +T5 &&q)a'"T6 &&q)!||'"( +F T6 * + +rDcFtjjd}|jdd}d|dddf<||}t |dj |}||usJt j|r|jdk(sJt|}t||y) NrrirjrrUFrRcsr) rFrrrZrr}rrtrr?rO)r;rrYr}rcrLs rC!test_normalizer_l1_l2_max_non_csrr^Ks ))   "Cii1oGGAqDM!A T . 8 8 ;F ?? ??6 "v}}'== = V_FT6"rDc tjjd}|jdd}d|dddf<|dt |dddfj fxxdzcc<tj| }||}|||fD]k}t d }|j|}||usJt|}ttj|tjt|my) NrrirjrrUrTr9r=r:) rFrrrZrargmaxrr}r?r-sign)rrYr} X_all_negX_all_neg_sparsercrXrLs rCtest_normalizer_max_signrd`s ))   "Cii1oGGAqDM As71a4=!((* *+r1+ I$Y/y"2 3AU+ %%a(Q2776?BGGGAJ,?@ ArDc*tjjdjdd}t t |dt |j ddj tjjd}|jdd }||}tjd}||fD]}tjtjfD]}d D]}|j|}t || }|j|k(sJt|}|d k(r&tj|jd } n|dz} | jd } t| |tj gdgdgdg}dD]}t ||d\} } |d k(r"t| tj gd;|dk(r"t| tj gdbt| tj gd||}d D]2}t#j$t&5t ||dddd4t |dd\} } t| tj gdy#1swYqxYw)N%rUrTFrr)rrr=rj)r9r<r:r9r:r)rrr)rmrr)rlrrrPT)r; return_norm)@rmrr<)rrmg1C+ @)rrmrr=)rFrrrZr-rrrzrrrrr?rr(r,rpr[r\NotImplementedError) rrcrsr}rjrzrr;rLrMX_norm_squared_normss rCtest_normalizernus5 b!''1-Ay/133QU1S1U1UV   q !Bhhr1oGW%H 77B=Dx :jj"**- :E$ :HHUO"140||u,,, 4<!vvf~11q19H%+QYN-11q19H)(D9 : ::"hh HIG#HW4TB5 4< %eRXXo-F G T\ %eRXX6L-M N %eRXXo-F GHW%H= ]]. / = hTt < = ==4@HAueRXXo%>? = =s =J  J constructorctjgdgdg}||j}tdd}t |j |}tj |dk(dk(sJtj |dk(d k(sJ|j |}tj|tj|k(sJtd j|}t |j |}||usJtj |dk(d k(sJtj |dk(dk(sJtd }|j |}||usJt |}tj |dk(d k(sJtj |dk(dk(sJtd }|j |}|tur||usJtd }tjgdgdgtj }|j |}|tur||usJt |}tj |dk(d k(sJtj |dk(dk(sJtd d}|tjtfvr{||j}t |j |}tj |dk(dk(sJtj |dk(dk(sJ|j |}|tvr:tjt5|j ||dddyy#1swYyxYw)N)r:rrj)rTrUr9rlT) thresholdrrrir:rTrFrrHrj)rFrprr r?r}r(rrtr^rrr2r[r\r])roX_rc binarizerX_binX_floats rCtest_binarizerrvs 9j) *BBGGIACd3I I''* +E 66%1*  "" " 66%1*  "" "    "E ??1 !7 77 7t$((+I I''* +E >> 66%1*  "" " 66%1*  "" "t$I    "E >> ENE 66%1*  "" " 66%1*  "" "u%I    "E$zzu%Ihh :.bjjAG    (E$ ENE 66%1*  "" " 66%1*  "" "Dt4Irxx&&  " ++A./vveqj!Q&&&vveqj!Q&&&##A&n$ ]]: & 0    A / 0 0% 0 0s 5MM ct||}|ddfD]}tjtjgd|d}|j||}t dj |}t d 5t dj |}dddtt||y#1swY"xYw) Nr3int64)rr:rTrUrir)r9r:)r?rw)rqT)array_api_dispatch) r'rFrrGr rrr-r#) rAr?r@xp dtype_name_X_npX_xp binarized_np binarized_xps rCtest_binarizer_array_api_intrs ov 6B"GW5N zz"**_KH'Rzz$vz. 3/==dC t 4 H$s3AA$GL H,\2> M N H Hs <B99C ctjjd}|jd}t d}|j ||j |}tj||j}t}tj||j}|j|}t|||jd}tj||j} |j |} tj| |j} |j | } t| | tj||jdz } || |zz || zz | |z| zz}t||tj| |jdz }| ||zz | | zz ||z| zz}t| |y)NrrjriFr)rTri)rFrr random_samplerr^r}dotrrrr, ones_likerHr))rYX_fitreX_fit_centeredK_fitcentererK_fit_centeredK_fit_centered2X_predK_predX_pred_centeredK_pred_centeredK_pred_centered2ones_MK_fit_centered3 ones_prime_MK_pred_centered3s rCtest_center_kernelrs ))   "C   f %E U +F JJu%%e,N FF5%'' "EHVVNN,<,<=N,,U3Ono>  v &F VVFEGG $F&&v.Off_n.>.>?O))&1o/?@\\% 5;;q> 1Ffun,uv~=QW@WWONO4<<'%++a.8L%%7,:NQW:WWO%56rDctjjd}|jdd|jdd}}d}||}||}t d}|j |}|j |}||jz} ||jz} ||jz} ||jz} t} | j| t| j | | t| j | | tj| | jdz }| || zz | |zz || z|zz}t| j | |tj| | jdz }| || zz | |zz || z|zz}t| j | |y) z-Check kernel centering for non-linear kernel.rrrrctjtj|ddtj|dd gS)zOur mapping function phi.rN)a_mina_max)rFr4r8rs rCphiz2test_kernelcenterer_non_linear_kernel..phis;yy$/$a00   rDFrN) rFrrrZrrr}rrr^r)rrH)rYrcrrphi_X phi_X_testre phi_X_centerphi_X_test_centerKK_testK_center K_test_centerkernel_centererr K_centeredrK_test_centereds rC%test_kernelcenterer_non_linear_kernelrs ))   "C #r"CIIb"$5vA  FEVJU +F''.L((4 A %'' !Flnn,H% 6M$&OO--a0(;O--f5}E\\!_qwwqz )FVaZ!f*,vzF/BBJO--a0*=<<'!''!*4L!!FVO3lQ6F6OOO--f5GrDcntjgdgdgdgdg}tjd}|j|j}t }t d|fdtfg}|jjjsJt|||d }t||y) N)rUrr)rrUr)rrrUr)rirsvrrT)cv) rFrprzrrrr r __sklearn_tags__ input_tagspairwiser r,)rcy_truerkcentpipeliney_preds rCtest_cv_pipeline_precomputedrMs )Y 9=>A WWT]F acc A  E+U3eSU^DEH  $ $ & 1 1 : :: : xFq 9Fff-rDc"tjjd}|jd}t t t fD]?}|j|j|}|j|}t||Ay)Nrr) rFrrrrrr r^r}rr-)rYrcobj X_transformedX_transformed2s rCtest_fit_transformrasu ))   "C &!A *, <: ,,Q/ **1-=.9:rDcZddgddgddgg}t|}t|gdgdgdgyNr:r)r:r:rrn)rr-rs rCtest_add_dummy_featurerjs5 Q!Q!Q A!Aq9i;#E2;;q>: ;((1E %eQ / 02;;1771:---"++rzz222+3rDcDtd}|jtjtt}d}t j t|5|j|dddt j t|5|j|dddt j t|5t|ddddt j t|5|jtjtjdddt j t|5|jtjtjdddt j t|5ttjtjddddy#1swYoxYw#1swYGxYw#1swY#xYw#1swYxYw#1swYxYw#1swYyxYw)Nrrzstrictly positiver) rr^rFrrr[r\r]r}rrrH)rX_with_negativesnot_positive_messages rC9test_power_transformer_boxcox_strictly_positive_exceptionrs  +BFF266$<. z)= >' %&' z)= >!  ! z)= ><(;< z)= >+ RXXdjj)*+ z)= >% rxx #$% z)= >@,Y?@@''!!<<++%%@@sHG G$G133G> 3H /HG!$G.1G;>H HHct|dy)Nrr)rrs rC+test_power_transformer_yeojohnson_any_inputrsAm,rDct|}tjt}|j |d}t j t|5|j|ddddfdddt j t|5|j|ddddfdddy#1swYHxYw#1swYyxYw)NrzBX has \d+ features, but PowerTransformer is expecting \d+ featuresrrr:) rrFrrr^r[r\r]r}r)rrrcwrong_shape_messages rC&test_power_transformer_shape_exceptionrs  (B t AFF1I N z)< =  Qq!A#vY  z)< =( Qq!A#vY'((  ((sB6C6B?C ctdd}tjtddddf}tjdg|_|j |}t|j||y)NrFrrr:) rrFrrrprr}r,rrrcrMs rC"test_power_transformer_lambda_zeror s]  >B t Q!VA((A3-BKll1oGb227;Q?rDctdd}tjtddddf}tjdg|_|j |}t||y)NrFrrr:)rrFrrrprr}r,rs rC!test_power_transformer_lambda_oner sP E BB t Q!VA((A3-BKll1oGgq)rDz method, lmbda))rr)rrR)rr)rrR)rrmctjjd}d}|jdd|df}|dk(rtj|d|z dzd}t |d }|g|_|j|}t |d }|j|}tdtjj||z |z d td|jd td|jd y) Nri Nr:)locrr<rr9rFrrTr)rFrrrr8rrrrr+linalgr;rr)rrrYrarcrr X_inv_transs rC#test_optimization_power_transformerr s" ))   "CI qA 7A  GGArEzD($ / U ;B'BK   #E U ;B""5)K299>>!k/:YFPQR;++-q9;??,a8rDctdd}dg|_|jdgg}tj|sJy)NrFrrRg)rrrrFr)rrs rCtest_invserse_box_coxrE s;  >B%BK  4& *E 88E??rDcgd}tj|jdd}tdj |j }tj |ddsJy) N)gffffff@g rmrlgffffff?g333333@rxgffffff@g?g @rhrg"@g@gr9r:rrgzG?r3r)rFrprrr^rallclose)rcrs rCtest_yeo_johnson_darwin_examplerM sU VA  B"A M 2 6 6q 9 B BE ;;ue$ // /rDctjt}t|}|j ||j d}tj |tj|tjg}t|d}|j ||j d}t||d|j|}ttj|tj|y)Nrr)rrjr)rFrrrr^r concatenate full_likersr"r+r}r-r)rrcr lmbda_no_nans lmbda_nansrMs rCtest_power_transformer_nansrV s vA  (BFF1IKKNM 2<<266234A"AFF1IQJ z1=ll1oGrxx("((1+6rDct}|dk(rtj|}t||}t |j |j ||j|y)Nr)r)rrFrrr,r^r}r)rrrcrs rC$test_power_transformer_fit_transformrm sR A  FF1I &k :BbffQi11!4b6F6Fq6IJrDct}|dk(rtj|}|j}||usJt ||t ||d}|j |t |||j|}||usJ|j|}t ||||usJ|j|}||usJy)NrTrr rrFrrr,rr^r}rrrrrc X_originalrrMrs rC test_power_transformer_copy_Truery s A  FF1IJ J  a, &k EBFF1Ia,ll1oG !  q!Ga, !  &&w/K + %% %rDct}|dk(rtj|}|j}||usJt ||t ||d}|j |t |||j|}||usJ|dk(rtj|}|j|}||usJ|j|}||usJy)NrFrrrs rC!test_power_transformer_copy_Falser s A  FF1IJ J  a, &k FBFF1Ia,ll1oG a<<  FF1Iq!G a<<&&w/K k !! !rDctjd}tj|dddf<d}t d}t j t|5|j|dddy#1swYyxYw)zqCheck that box-cox raises informative when a column contains all nans. Non-regression test for gh-26303 rNrzColumn must not be all nan.rrr) rYrrFrsrr[r\r]r)rcrrs rC1test_power_transformer_box_cox_raise_all_nans_colr se &!AffAadG+G  +B z 1 s A11A:r皙?)rr)r=r:)rctjddd}td}|j|j |t j |jdsJy)Nrjr:rrFrtr)rrrr^rrFrr|)rrres rC7test_standard_scaler_sparse_partial_fit_finite_variancer sP --1c *C e ,F JJsO$ ;;v{{1~ && &rDrG)rr:)r r=cXtj}t|dj|}t j |dt j |d}}tj|dddz |dddzfg}|j|}t||d|d|d|dggy)NT)rGr8rrrTr=r:) rJrKrr^rFrLr=r_r}r))rGrcreX_minX_maxrrs rCtest_minmax_scaler_clipr  s A  D A E Ea HF66!!$bffQQ&75EeeE"1INE!"IN23 4F$$V,M  M!,mA.> a@P QRrDctjt}d}tjt |5|j tdddfdddy#1swYyxYw)zCheck that `inverse_transform` from `StandardScaler` raises an error with 1D array. Non-regression test for: https://github.com/scikit-learn/scikit-learn/issues/19518 z'Expected 2D array, got 1D array insteadrNr)rr^rr[r\r]r)rers rC-test_standard_scaler_raise_error_for_1d_inputr  sU   ! !$ 'F7G z 1-  ad,---s A!!A*cdtjgddzgdztjjddz}t }t j 5t jdt|j|}d d d tjtjrJ|jtjd k(sJ|jtjd k(sJ|j!d kDsJ|j#d ksJy #1swYxYw)aCheck that significantly non-Gaussian data before transforms correctly. For some explored lambdas, the transformed data may be constant and will be rejected. Non-regression test for https://github.com/scikit-learn/scikit-learn/issues/14959 r)rIrlrrri)r rrUrrr9r:rNrrmrrT)rFrprrrrrrRuntimeWarningrrrrr[r)rrLr=)X_non_gaussianrrMs rC1test_power_transformer_significantly_non_gaussianr s288q #CC2:: gb!nN  B  "3g~6"">23vvbhhw'(( ( <<>V]]3/ // / ;;=FMM#. .. . ;;=2   ;;=1  33s !,D::E Transformerc|jtj}|jtj}t |tjy)9Check one-to-one transformers give correct feature names.N)r^rJrKget_feature_names_out feature_namesr-)rtr names_outs rCtest_one_to_one_featuresr s@   499 %B((););Check that PowerTransfomer leaves constant features unchanged.)rrrTrrrN)rr^r)rrr}rFr)rrcrXftXtXt_s rC'test_power_transformer_constant_featurer5D s Z,A K H L LQ OBBKK+  1 C aBRy$  Cq!1 2 C # $rDz1.12z2scipy version 1.12 required for stable yeo-johnson)reasonctjgd}d}||jdd||ddjddy)a-Verify that PowerTransformer operates without raising any warnings on valid data. This test addresses numerical issues with floating point numbers (mostly overflows) with the Yeo-Johnson transform, see https://github.com/scikit-learn/scikit-learn/issues/23319#issuecomment-1464933635 ) gL@gx@g4@g@@d@r8g@g<@g\@g@ctjd5}tjdtddj |dddr Jddj d |Dzy#1swY,xYw) z0Internal helper to test for unexpected warnings.TralwaysrrNz!Unexpected warnings were raised:  c3FK|]}t|jywrx)strmessage).0ws rC zPtest_power_transformer_no_warnings.._test_no_warnings..w sU  C NU s!)rrrrrjoin)rKcaught_warningss rC_test_no_warningsz=test_power_transformer_no_warnings.._test_no_warningsq s  $ $D 1 Y_  ! !( + Mt D R RSW X Y# $H499U $3U L %  "?  Y Ys 2A44A=r9r:Nrj)rFrpr)rrDs rC"test_power_transformer_no_warningsrEW sL   A aiiA&'aemmB*+rDctdjt}|jdt j ddk(y)zFCheck that the results are consistent across different SciPy versions.rrrgd8?r)relN)rr^rrr[r))rs rC+test_yeojohnson_for_different_scipy_versionrH s2  / 3 3F ;BKKNfmmJD99rD)r#rnumpyrF numpy.linalgrrKr[scipyrrsklearnrr sklearn.basersklearn.exceptionsr$sklearn.externals._packaging.versionr parse_versionsklearn.metrics.pairwiser sklearn.model_selectionr sklearn.pipeliner sklearn.preprocessingr rrrrrrrrrrrrrrrrsklearn.preprocessing._datarr sklearn.svmr sklearn.utilsr!r"sklearn.utils._array_apir#r$r%-sklearn.utils._test_common.instance_generatorr&sklearn.utils._testingr'r(r)r*r+r,r-r.r/sklearn.utils.estimator_checksr0sklearn.utils.fixesr1r2r3r4r5sklearn.utils.sparsefuncsr6 load_irisrJrrrYrbrarrrrZrrrrtolistr X_list_1colr?rIrRrgmark parametrizerprsrrrrrrrrrrrrrrrr%r1r4rCrOrarcrgrprvr{rrrrrrr!rrrrrrrrrrrrrrr rrrrrr&r*r,r/r7r<r>r@rCrIrOr[r^rdrnrrvrrrrrrrrrrrrrrrrHrrrrrrrrrrrrrrr r rrr+r0r5skipifrErH)rs0rCrds  ,-G25%&Q. S   9x iiA   ++b!*+ - Q , yyJ'&07: ad  Az * ad  Iq )mmo mmo  "M@$ Y )Y !BS#JO  "  9i 8 BHHaV  ^bffbffa0 1BFFA###   BHHaV  *,.STNU+,N,"0J+dVn-D~-UV,udm<1=W1: 'E*+dVn-D~-UV,udm<2::rzz":;_546<=W4D&78$452::rzz":;+dVn-D~-UV/SW<69/Sd I#>#>L1hA23-`0Kf+^n-LM+AN+A\4,7+^n-LM 6N8 64,7&8&R 0)-/'  %&  $   ! R   0R@7>:#L4,7+^n-LM87N887vtUm4dE]3+dVn-D~-UV IW45 I @+^n-LMNNN2+^n-LM57N57p+^n-LM DN D +^n-LM7N7*)D%=9$7ryyr15{v{{2qRU7VWX%Y8:%$.9 D: D :$:;*,ST?U<?(.9 E: E & *.9O:O(.962:62r.9>:>B.@,=^ H.9#B:#BL8.9":"J= =':;(<(& ".9!G:!GH&&F27$+^n-LM&?N&?R3(.9 D: DM@.95:5p.*!45.9+:6+@!457.H#6#".9A:A(.9*@:*@ZBHHd#n4~E3030l)+T+V N N)7X3Hl.(:= 7.HGG#$I}#=> ? I}#=>u 6vtn-:.7?:3036@8tVRVVD\FBFF4L=("((4::BVWX-Y- I}#=>(?($@* 9 980I}#=>7?7,I}#=>u 6K7?KI}#=>u 6&7?&4I}#=>u 6"7?"8  V]]2q#A67,  gbggg"&&9:''69*=> ?  -0  6 6  0 0& Wu 6$7$$v&& ?$, $,N:{s,z