§
    ¥˜ºhÍ¡  ã                   ó˜  — d dl Z d dl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 d dlmZ d dlmZ d dlmZmZmZ d d	lmZmZmZ d d
lmZ d dlmZmZ ej                              deef¦  «        d„ ¦   «         Z!ej                              dddggidfdddgddggidfddgd ggidfg¦  «        d„ ¦   «         Z"ej                              dddg¦  «        d„ ¦   «         Z#d„ Z$ej                              dg d¢¦  «        ej                              dddg¦  «        d„ ¦   «         ¦   «         Z%ej                              d e&dd¦  «        ¦  «        ej                              d  e&dd¦  «        ¦  «        ej                              dd!d"g¦  «        ej                              dd#dg¦  «        d$„ ¦   «         ¦   «         ¦   «         ¦   «         Z'ej                              d%d&gd'd(g¦  «        d)„ ¦   «         Z(ej                              g d*¢d!dd ej)        d dgdd+gd,d-gg¦  «        fd!d ej)        g d.¢¦  «         ej)        ddgd/d+gd,d-gg¦  «        fd!d/d ej)        d dgdd,gd/d0gd,d-gg¦  «        fd"dd ej)        d dgddgd,d-gg¦  «        fd"d ej)        g d.¢¦  «         ej)        ddgdd+gd,d-gg¦  «        fg¦  «        d1„ ¦   «         Z*ej                              d%d&gd'd(g¦  «        d2„ ¦   «         Z+d3„ Z,d4„ Z-ej                              dddg¦  «        d5„ ¦   «         Z.ej                              d%d&gd'd(g¦  «        ej                              dg d6¢¦  «        d7„ ¦   «         ¦   «         Z/d8„ Z0ej         1                    e ed9¦  «        k     d:¬;¦  «        ej                              d e&dd¦  «        ¦  «        ej                              dd!d"g¦  «        ej                              dg d<¢¦  «        ej                              d=d>d?g¦  «        d@„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Z2ej         1                    e ed9¦  «        k    d:¬;¦  «        dA„ ¦   «         Z3ej                              d dd0g¦  «        ej                              d=d?d>g¦  «        ej                              ddd/g¦  «        ej                              dg d<¢¦  «        ej                              dBd>d?g¦  «        dC„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Z4ej                              dddDidEfddFidEfddGidEfddHidIfg¦  «        dJ„ ¦   «         Z5 ej6        ¦   «         dK„ ¦   «         Z7ej                              dLdd?d> e8dd¦  «        fdd>d> e8dd¦  «        fdd?d?d dgfdd>d?dgfdMd?d>g dN¢fdMd>d>ddgfdMd?d?d gfdMd>d?g fg¦  «        ej                              dOd>ej9        ej:        g¦  «        dP„ ¦   «         ¦   «         Z; ej6        ¦   «         dQ„ ¦   «         Z<ej                              dLdd?d> e8d d,¦  «        fdd>d> e8dd,¦  «        fdd?d?g dR¢fdd>d?g dS¢fdTd?d>g dU¢fdTd>d>g dV¢fdTd?d?d d/gfdTd>d?d/gfdd?d> e8dd¦  «        fdd>d> e8dd¦  «        fdd?d?g dR¢fdd>d?g dS¢fdMd?d>g dW¢fdMd>d> e8dd¦  «        fdMd?d?d d/gfdMd>d?d/gfdXd?d>g dY¢fdXd>d>g dZ¢fdXd?d?d gfdXd>d?g fg¦  «        ej                              dOd>ej9        ej:        g¦  «        d[„ ¦   «         ¦   «         Z=d\„ Z>ej                              g d]¢dd?d>e?fdd?d>e?fdd?d>ej@        fdd?d>ejA        fdd>d>ejA        fdd>d?ejA        fd/d>d>ejA        fd/d>d?ejA        fg¦  «        d^„ ¦   «         ZBej                              g d]¢dd?d>e?fdd?d>e?fdd?d>ej@        fdd?d>ejA        fdd>d>ejA        fdd>d?ejA        fg¦  «        d_„ ¦   «         ZCej                              d`g da¢¦  «        ej                              dbg dc¢¦  «        ej                              ddd?d>g¦  «        ej                              d=d?d>g¦  «        de„ ¦   «         ¦   «         ¦   «         ¦   «         ZDej                              g d]¢dd?d>ej@        fdd?d>ejA        fdd>d>ejA        fdd>d?ejA        fg¦  «        df„ ¦   «         ZEej                              g dg¢g dh¢¦  «        di„ ¦   «         ZFej                              d=ddgg dj¢¦  «        dk„ ¦   «         ZGej                              g dl¢g dm¢¦  «        dn„ ¦   «         ZHej                              ddd?d>g¦  «        ej                              d=d?d>g¦  «        do„ ¦   «         ¦   «         ZIej                              dpdqdrd e? ejJ         ejK        ejL        ¦  «        jM        ¦  «        dz   ¦  «        fdsd e? ejJ         ejK        ejL        ¦  «        jM        ¦  «        ¦  «        fg¦  «        ej                              ddd?d>g¦  «        ej                              d=d?d>g¦  «        dt„ ¦   «         ¦   «         ¦   «         ZNej                              ddd?d>g¦  «        ej                              d=d?d>g¦  «        du„ ¦   «         ¦   «         ZOdv„ ZPdw„ ZQej         R                    e jS        dxk    dyd?¬z¦  «        d{„ ¦   «         ZTdS )|é    N)Úassert_allcloseÚassert_array_equal)Úsparse)ÚBSpline)Úrandom)ÚLinearRegression)ÚPipeline)ÚKBinsDiscretizerÚPolynomialFeaturesÚSplineTransformer)Ú_calc_expanded_nnzÚ_calc_total_nnzÚ_get_sizeof_LARGEST_INT_t)Úassert_array_almost_equal)Úparse_versionÚ
sp_versionÚestc                 óf  — t          j        d¦  «                             dd¦  «        }d„ } | | ¦   «                              |¦  «        ¦  «        sJ ‚ | | d¬¦  «                             |¦  «        ¦  «        sJ ‚t          j         | d¬¦  «                             |¦  «        ¦  «        sJ ‚dS )	z+Test that output array has the given order.é
   é   é   c                 ó4   — t          j        | j        ¦  «        S )N)ÚnpÚ	isfortranÚT)Úas    ús/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/sklearn/preprocessing/tests/test_polynomial.pyÚis_c_contiguousz?test_polynomial_and_spline_array_order.<locals>.is_c_contiguous   s   € ÝŒ|˜AœCÑ Ô Ð ó    ÚC)ÚorderÚFN)r   ÚarangeÚreshapeÚfit_transformr   )r   ÚXr   s      r   Ú&test_polynomial_and_spline_array_orderr'      s¾   € õ 	Œ	�"‰Œ×Ò˜a Ñ#Ô#€Að!ð !ð !ð ˆ?˜3˜3™5œ5×.Ò.¨qÑ1Ô1Ñ2Ô2Ð2Ð2Ð2Øˆ?˜3˜3 S˜>™>œ>×7Ò7¸Ñ:Ô:Ñ;Ô;Ð;Ð;Ð;ÝŒ<˜˜ #˜™œ×4Ò4°QÑ7Ô7Ñ8Ô8Ð8Ð8Ð8Ð8Ð8r   zparams, err_msgÚknotsé   z0Number of knots, knots.shape\[0\], must be >= 2.r   z*knots.shape\[1\] == n_features is violatedz(knots must be sorted without duplicates.c                 ó¸   — dgdgg}t          j        t          |¬¦  «        5  t          di | ¤Ž                     |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zATest that we raise errors for invalid input in SplineTransformer.r)   r   ©ÚmatchN© ©ÚpytestÚraisesÚ
ValueErrorr   Úfit©ÚparamsÚerr_msgr&   s      r   Ú(test_spline_transformer_input_validationr6   '   s¬   € ð ˆˆqˆcˆ
€Aå	Œ•z¨Ð	1Ñ	1Ô	1ð +ð +ÝÐ#Ð#˜FÐ#Ð#×'Ò'¨Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð +ð +ó   ¢ AÁAÁAÚextrapolationÚcontinueÚperiodicc                 óÂ   — t          j        d¦  «                             dd¦  «        }ddgddgddgddgddgg}t          d	|| ¬
¦  «                             |¦  «        }dS )zATest that SplineTransformer accepts integer value knot positions.é   r   r   r   r)   r   é   é   é   )Údegreer(   r8   N)r   r#   r$   r   r%   )r8   r&   r(   Ú_s       r   Ú%test_spline_transformer_integer_knotsrB   7   st   € õ 	Œ	�"‰Œ×Ò˜b !Ñ$Ô$€AØ�ˆV�a˜�V˜a ˜V b¨" X°°B¨xÐ8€EÝØ˜¨]ð	ñ 	ô 	ç‚m�AÑÔð €A€Ar   c                  óˆ  — t          j        d¦  «                             dd¦  «        } t          ddd¬¦  «                             | ¦  «        }|                     ¦   «         }t          |g d¢¦  «         t          ddd¬¦  «                             | ¦  «        }|                     d	d
g¦  «        }t          |g d¢¦  «         dS )z<Test that SplineTransformer generates correct features name.r<   r   r   r?   T)Ún_knotsr@   Úinclude_bias)
Úx0_sp_0Úx0_sp_1Úx0_sp_2Úx0_sp_3Úx0_sp_4Úx1_sp_0Úx1_sp_1Úx1_sp_2Úx1_sp_3Úx1_sp_4Fr   Úb)Úa_sp_0Úa_sp_1Úa_sp_2Úa_sp_3Úb_sp_0Úb_sp_1Úb_sp_2Úb_sp_3N)r   r#   r$   r   r2   Úget_feature_names_outr   )r&   ÚspltÚfeature_namess      r   Ú%test_spline_transformer_feature_namesr\   A   sß   € å
Œ	�"‰Œ×Ò˜b !Ñ$Ô$€AÝ Q¨q¸tÐDÑDÔD×HÒHÈÑKÔK€DØ×.Ò.Ñ0Ô0€MÝØð	
ð 	
ð 	
ñô ð õ   Q¨q¸uÐEÑEÔE×IÒIÈ!ÑLÔL€DØ×.Ò.°°S¨zÑ:Ô:€MÝØð		
ð 		
ð 		
ñô ð ð ð r   )ÚconstantÚlinearr9   r:   r@   r?   c                 ój  — t          j        d¦  «                             dd¦  «        }t          || ¬¦  «                             |¦  «        }|                     ddg¦  «        }t          |¦  «        |j        k    sJ ‚|                     |¦  «        }|j	        d         t          |¦  «        k    sJ ‚dS )	zsTest feature names are correct for different extrapolations and degree.

    Non-regression test for gh-25292.
    r<   r   r   )r@   r8   r   rP   r)   N)
r   r#   r$   r   r2   rY   ÚlenÚn_features_out_Ú	transformÚshape)r8   r@   r&   rZ   r[   ÚX_transs         r   Ú7test_split_transform_feature_names_extrapolation_degreere   g   s«   € õ 	Œ	�"‰Œ×Ò˜b !Ñ$Ô$€AÝ F¸-ÐHÑHÔH×LÒLÈQÑOÔO€DØ×.Ò.°°S¨zÑ:Ô:€MÝˆ}ÑÔ Ô!5Ò5Ð5Ð5Ð5à�nŠn˜QÑÔ€GØŒ=˜Ô�s =Ñ1Ô1Ò1Ð1Ð1Ð1Ð1Ð1r   r   rD   ÚuniformÚquantiler]   c                 ó”  — t          j        ddd¦  «        dd…df         }t           j        dgg|ddd…dd…f         dggf         }|ddd…dd…f         }|dk    r|| z   }t          || |d|¬¦  «        }|                     |¦  «         ||fD ]9}t          t          j        |                     |¦  «        d¬	¦  «        d¦  «         Œ:dS )
z–Test that B-splines are indeed a decomposition of unity.

    Splines basis functions must sum up to 1 per row, if we stay in between boundaries.
    r   r)   éd   Nr   r:   T)rD   r@   r(   rE   r8   ©Úaxis)r   ÚlinspaceÚr_r   r2   r   Úsumrb   )r@   rD   r(   r8   r&   ÚX_trainÚX_testrZ   s           r   Ú+test_spline_transformer_unity_decompositionrq   z   s   € õ 	Œ�A�q˜#ÑÔ˜q˜q˜q $˜wÔ'€AåŒe�a�S�E˜1˜S˜S˜q˜S ! ! !˜Vœ9¨ s eÐ+Ô,€GØˆqˆt�!ˆt�Q�Q�QˆwŒZ€Fà˜
Ò"Ð"Ø˜FÑ"ˆåØØØØØ#ðñ ô €Dð 	‡H‚HˆWÑÔÐØ�vÐð >ð >ˆÝ�œ˜tŸ~š~¨aÑ0Ô0°qÐ9Ñ9Ô9¸1Ñ=Ô=Ð=Ð=ð>ð >r   ÚbiasÚ	intercept©TF©FTc           	      óh  — t          j        ddd¦  «        dd…df         }t          j        |dd…df         ¦  «        dz   }t          dt	          dd| d	¬
¦  «        fdt          |¬¦  «        fg¬¦  «        }|                     ||¦  «         t          |                     |¦  «        |d¬¦  «         dS )z7Test that B-splines fit a sinusodial curve pretty well.r   r   ri   Nr   Úsplineé   r?   r]   ©rD   r@   rE   r8   Úols©Úfit_intercept©Ústepsçü©ñÒMbP?©Úrtol)	r   rl   Úsinr	   r   r   r2   r   Úpredict)rr   rs   r&   ÚyÚpipes        r   Ú)test_spline_transformer_linear_regressionr†   —   sÑ   € õ 	Œ�A�r˜3ÑÔ    4 Ô(€AÝ
Œˆq����A�Œw‰Œ˜!Ñ€AÝð Ý!ØØØ!%Ø",ð	ñ ô ðð Õ$°9Ð=Ñ=Ô=Ð>ð
ðñ ô €Dð 	‡H‚HˆQ��N„N€NÝ�D—L’L ‘O”O Q¨TÐ2Ñ2Ô2Ð2Ð2Ð2r   )r(   rD   Úsample_weightÚexpected_knotsé   é   é   )r   r   r)   r)   r   r?   r)   é   r   c           
      ó¨   — t          j        ddgddgddgddgddgddgddgg¦  «        }t          j        || ||¬	¦  «        }t	          ||¦  «         d
S )zJCheck the behaviour to find knot positions with and without sample_weight.r   r   r?   rŒ   rŠ   r   r‰   r‹   )r&   r(   rD   r‡   N)r   Úarrayr   Ú_get_base_knot_positionsr   )r(   rD   r‡   rˆ   r&   Ú
base_knotss         r   Ú/test_spline_transformer_get_base_knot_positionsr‘   ®   sv   € õ0 	Œ�1�a�&˜1˜a˜& 1 a &¨1¨a¨&°1°a°&¸1¸a¸&À1ÀbÀ'ÐJÑKÔK€AÝ"Ô;Ø
�5 '¸ðñ ô €Jõ �J Ñ/Ô/Ð/Ð/Ð/r   c           	      ó  — d„ }t          j        ddd¦  «        dd…df         }t          dt          dd| d	¬
¦  «        fdt	          |¬¦  «        fg¬¦  «        }|                     | ||dd…df         ¦  «        ¦  «         t          j        ddd¦  «        dd…df         }|                     |¦  «        }t          | ||dd…df         ¦  «        dd¬¦  «         t          |dd…         |dd…         d¬¦  «         dS )z5Test that B-splines fit a periodic curve pretty well.c                 óš   — t          j        dt           j        z  | z  ¦  «        t          j        dt           j        z  | z  ¦  «        z
  dz   S )Nr   r‰   r?   )r   r‚   Úpi)Úxs    r   Úfz=test_spline_transformer_periodic_linear_regression.<locals>.fÒ   s:   € ÝŒv�a�"œ%‘i !‘mÑ$Ô$¥r¤v¨aµ"´%©i¸!©mÑ'<Ô'<Ñ<¸qÑ@Ð@r   r   r)   ée   Nrw   r<   r?   r:   ry   rz   r{   r}   éÿÿÿÿr   i-  g{®Gáz„?)Úatolr�   ri   éÈ   r   r€   )r   rl   r	   r   r   r2   rƒ   r   )rr   rs   r–   r&   r…   ÚX_Úpredictionss          r   Ú2test_spline_transformer_periodic_linear_regressionr�   Í   sB  € ð
Að Að Aõ 	Œ�A�q˜#ÑÔ˜q˜q˜q $˜wÔ'€AÝð Ý!ØØØ!%Ø",ð	ñ ô ðð Õ$°9Ð=Ñ=Ô=Ð>ð
ðñ ô €Dð 	‡H‚HˆQ���!�A�A�A�q�D”'‘
”
ÑÔÐõ 
Œ�R˜˜CÑ	 Ô	     D Ô	)€BØ—,’,˜rÑ"Ô"€KÝ�K   2 a a a¨ d¤8¡¤°4¸dÐCÑCÔCÐCÝ�K  # Ô&¨°C¸°GÔ(<À4ÐHÑHÔHÐHÐHÐHr   c                  óx  — t          j        ddd¦  «        dd…df         } d}t          |ddgdgd	gg¬
¦  «        }|                     | ¦  «        }t          j        d	dgdd	gd	dgdd	gg¦  «        }t          t          j        dd¦  «        ||d¦  «        } || dd…df         ¦  «        }t          ||¦  «         dS )z@Test that the backport of extrapolate="periodic" works correctlyéþÿÿÿg      @r   Nr   r:   g      ð¿ç        ç      ð?©r@   r8   r(   éýÿÿÿrŒ   r   )r   rl   r   r%   rŽ   r   r#   r   )r&   r@   ÚtransformerÚXtÚcoefÚsplÚXspls          r   Ú0test_spline_transformer_periodic_spline_backportr©   í   sÞ   € å
Œ�B˜˜RÑ Ô     D Ô)€AØ€Fõ $Ø Z¸¸ÀÀÈÀuÐ7Mðñ ô €Kð 
×	"Ò	" 1Ñ	%Ô	%€Bõ Œ8�c˜3�Z # s ¨c°3¨Z¸#¸s¸ÐDÑEÔE€DÝ
•"”)˜B Ñ"Ô" D¨&°*Ñ
=Ô
=€CØˆ3ˆq����A�Œw‰<Œ<€DÝ�B˜ÑÔÐÐÐr   c            
      óJ  — t          j        ddd¦  «        dd…df         } t          dddgdgd	gd
gdgdgg¬¦  «        }t          dddgd	gd
gdgdgdgg¬¦  «        }|                     | ¦  «        }|                     | ¦  «        }t	          ||dd…g d¢f         ¦  «         dS )zJTest if shifted knots result in the same transformation up to permutation.r   r   r—   Nr?   r:   r    r¡   ç      @ç      @ç      @ç       @r¢   g      "@)rŒ   r   r)   r   r?   )r   rl   r   r%   r   )r&   Útransformer_1Útransformer_2ÚXt_1ÚXt_2s        r   Ú4test_spline_transformer_periodic_splines_periodicityr³   ÿ   sà   € å
Œ�A�r˜3ÑÔ    4 Ô(€Aå%ØØ Øˆu�s�e˜c˜U S E¨C¨5°3°%Ð8ðñ ô €Mõ &ØØ Øˆu�s�e˜c˜U S E¨C¨5°3°%Ð8ðñ ô €Mð ×&Ò& qÑ)Ô)€DØ×&Ò& qÑ)Ô)€Då�D˜$˜q˜q˜q / / /Ð1Ô2Ñ3Ô3Ð3Ð3Ð3r   c           
      ój  — t          j        ddd¦  «        dd…df         }t          | ddgdgdgd	gd
gdgg¬¦  «        }|                     |¦  «        }|                     ¦   «         |                     ¦   «         z
  t          |¦  «        z  }d|z  }|}t          d| dz   ¦  «        D ]I}t          j        |d¬¦  «        }t          j	        |¦  «                             ¦   «         |k     sJ ‚||z  }ŒJt          j        |d¬¦  «        }t          j	        |¦  «                             ¦   «         dk    sJ ‚dS )z?Test that spline transformation is smooth at first / last knot.rŸ   r   i'  Nr:   r    r¡   r«   r¬   r­   r®   r¢   r)   r   rj   )
r   rl   r   r%   ÚmaxÚminr`   ÚrangeÚdiffÚabs)	r@   r&   r¤   r¥   ÚdeltaÚtolÚdXtÚdr¸   s	            r   Ú3test_spline_transformer_periodic_splines_smoothnessr¾     sF  € õ 	Œ�B˜˜FÑ#Ô# A A A t GÔ,€Aå#ØØ Øˆu�s�e˜c˜U S E¨C¨5°3°%Ð8ðñ ô €Kð
 
×	"Ò	" 1Ñ	%Ô	%€Bà�UŠU‰WŒW�q—u’u‘w”wÑ¥# a¡&¤&Ñ(€EØ
ˆu‰*€Cà
€Cõ �1�f˜q‘jÑ!Ô!ð ð ˆåŒw�s Ð#Ñ#Ô#ˆÝŒv�d‰|Œ|×ÒÑ!Ô! CÒ'Ð'Ð'Ð'à�U‰lˆˆõ
 Œ7�3˜QÐÑÔ€DÝŒ6�$‰<Œ<×ÒÑÔ Ò!Ð!Ð!Ð!Ð!Ð!r   )r)   r   r?   rŒ   r   c           	      ó¸  — t          j        ddd¦  «        dd…df         }|                     ¦   «         }t          dt	          d|| d¬¦  «        gd	t          |¬
¦  «        gg¦  «        }|                     ||¦  «         t          |                     dgdgg¦  «        ddg¦  «         t          dt	          d|| d¬¦  «        gd	t          |¬
¦  «        gg¦  «        }|                     ||¦  «         t          |                     dgdgg¦  «        ddg¦  «         t	          d|| d¬¦  «        }|                     |¦  «         d}t          j
        t          |¬¦  «        5  |                     dgg¦  «         ddd¦  «         n# 1 swxY w Y   t          j
        t          |¬¦  «        5  |                     dgg¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z1Test that B-spline extrapolation works correctly.r˜   r)   ri   Nrw   rŒ   r]   ry   rz   r{   iöÿÿÿr   r^   Úerrorú0X contains values beyond the limits of the knotsr+   )r   rl   Úsqueezer	   r   r   r2   r   rƒ   r/   r0   r1   rb   )rr   rs   r@   r&   r„   r…   rZ   Úmsgs           r   Ú%test_spline_transformer_extrapolationrÄ   <  s“  € õ
 	Œ�B˜˜3ÑÔ    4 Ô(€AØ	�	Š	‰Œ€Aõ ð Ý!ØØ!Ø!%Ø",ð	ñ ô ðð Õ$°9Ð=Ñ=Ô=Ð>ð	
ñô €Dð 	‡H‚HˆQ��N„N€NÝ�D—L’L 3 %¨!¨ Ñ.Ô.°°Q°Ñ8Ô8Ð8õ ð Ý!ØØ!Ø!%Ø"*ð	ñ ô ðð Õ$°9Ð=Ñ=Ô=Ð>ð	
ñô €Dð 	‡H‚HˆQ��N„N€NÝ�D—L’L 3 %¨!¨ Ñ.Ô.°°a°Ñ9Ô9Ð9õ Ø˜&¨tÀ7ðñ ô €Dð 	‡H‚HˆQ�K„K€KØ
<€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð  ð  Ø�Š˜˜�wÑÔÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  å	Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø�Š˜˜�uÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s$   Å FÆFÆFÆ*GÇGÇGc                  óf  — t           j                             d¦  «        } |                      d¦  «                             dd¦  «        }d}|dz   }t          |ddd¬¦  «        }|                     |¦  «        }t          |d	d¬
¦  «        }|                     |¦  «        }t          ||d¬¦  «         dS )zCTest that a B-spline of degree=0 is equivalent to KBinsDiscretizer.iû| rš   r)   r   r   rg   T)rD   r@   r(   rE   zonehot-dense)Ún_binsÚencodeÚstrategyg‚vIhÂ%<=r€   N)	r   r   ÚRandomStateÚrandnr$   r   r%   r
   r   )Úrngr&   rÆ   rD   rZ   ÚsplinesÚkbdÚkbinss           r   Ú'test_spline_transformer_kbindiscretizerrÏ   t  sº   € å
Œ)×
Ò
 Ñ
&Ô
&€CØ�	Š	�#‰Œ×Ò˜s AÑ&Ô&€AØ€FØ�q‰j€GåØ ¨À$ðñ ô €Dð × Ò  Ñ#Ô#€Gå
 &°È*Ð
UÑ
UÔ
U€CØ×Ò˜aÑ Ô €Eõ �G˜U¨Ð/Ñ/Ô/Ð/Ð/Ð/r   ú1.8.0ú9The option `sparse_output` is available as of scipy 1.8.0)Úreason)rÀ   r]   r^   r9   r:   rE   FTc                 óº  — t           j                             |¦  «        }|                     d¦  «                             dd¦  «        }t          | |||d¬¦  «        }t          | |||d¬¦  «        }|                     |¦  «         |                     |¦  «         |                     |¦  «        }	|                     |¦  «        }
t          j	        |	¦  «        r|	j
        dk    sJ ‚t          |
|	                     ¦   «         ¦  «         t          j        |d¬	¦  «        }t          j        |d¬	¦  «        }t           j        t          j        |dz
  |d
¦  «        t          j        ||dz   d
¦  «        f         }|dk    r—d}t#          j        t&          |¬¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   d}t#          j        t&          |¬¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S t          |                     |¦  «        |                     |¦  «                             ¦   «         ¦  «         d S )Nrš   é(   r   F)r@   r(   r8   rE   Úsparse_outputTÚcsrr   rj   r   rÀ   rÁ   r+   zOut of bounds)r   r   rÉ   rÊ   r$   r   r2   rb   r   ÚissparseÚformatr   ÚtoarrayÚaminÚamaxrm   rl   r/   r0   r1   )r@   r(   r8   rE   Úglobal_random_seedrË   r&   Ú
splt_denseÚsplt_sparseÚX_trans_sparseÚX_trans_denseÚX_minÚX_maxÚX_extrarÃ   s                  r   Ú%test_spline_transformer_sparse_outputrä   ˆ  sÛ  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ�	Š	�#‰Œ×Ò˜r 1Ñ%Ô%€Aå"ØØØ#Ø!Øðñ ô €Jõ $ØØØ#Ø!Øðñ ô €Kð ‡N‚N�1ÑÔÐØ‡O‚O�AÑÔÐà ×*Ò*¨1Ñ-Ô-€NØ×(Ò(¨Ñ+Ô+€MÝŒ?˜>Ñ*Ô*ÐM¨~Ô/DÈÒ/MÐ/MÐ/MÐ/MÝ�M >×#9Ò#9Ñ#;Ô#;Ñ<Ô<Ð<õ ŒG�A˜AÐÑÔ€EÝŒG�A˜AÐÑÔ€EÝŒeÝ
Œ�E˜A‘I˜u bÑ)Ô)­2¬;°u¸eÀa¹iÈÑ+LÔ+LÐLô€Gð ˜ÒÐØ@ˆÝŒ]�:¨SÐ1Ñ1Ô1ð 	*ð 	*Ø× Ò  Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*àˆÝŒ]�:¨SÐ1Ñ1Ô1ð 	+ð 	+Ø×!Ò! 'Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+õ 	Ø× Ò  Ñ)Ô)¨;×+@Ò+@ÀÑ+IÔ+I×+QÒ+QÑ+SÔ+Sñ	
ô 	
ð 	
ð 	
ð 	
s$   ÆF;Æ;F?ÇF?Ç#HÈH
ÈH
c                  óÀ   — dgdgg} t          j        t          d¬¦  «        5  t          d¬¦  «                             | ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zDTest that SplineTransformer with sparse=True raises for scipy<1.8.0.r)   r   zscipy>=1.8.0r+   T)rÕ   Nr.   )r&   s    r   Ú?test_spline_transformer_sparse_output_raise_error_for_old_scipyræ   Â  s©   € ð ˆˆqˆcˆ
€AÝ	Œ•z¨Ð	8Ñ	8Ô	8ð 5ð 5Ý¨Ð-Ñ-Ô-×1Ò1°!Ñ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s   ¢$AÁAÁArÕ   c                 óJ  — |r,t           t          d¦  «        k     rt          j        d¦  «         t	          | ||||¬¦  «        }t          j        ddd¦  «        dd…df         }|                     |¦  «         |                     |¦  «        j	        d         |j
        k    sJ ‚dS )z8Test that transform results in n_features_out_ features.rÐ   rÑ   )rD   r@   rE   r8   rÕ   r   r)   r   N)r   r   r/   Úskipr   r   rl   r2   rb   rc   ra   )rD   rE   r@   r8   rÕ   rZ   r&   s          r   Ú&test_spline_transformer_n_features_outré   Í  s²   € ð ð Q�¥m°GÑ&<Ô&<Ò<Ð<ÝŒÐOÑPÔPÐPåØØØ!Ø#Ø#ðñ ô €Dõ 	Œ�A�q˜"ÑÔ˜a˜a˜a ˜gÔ&€AØ‡H‚HˆQ�K„K€Kà�>Š>˜!ÑÔÔ" 1Ô%¨Ô)=Ò=Ð=Ð=Ð=Ð=Ð=r   )r˜   r   z&degree=\(min_degree, max_degree\) must)r   g      ø?©r?   r   )r)   r   r?   z'int or tuple \(min_degree, max_degree\)c                 ó¸   — dgdgg}t          j        t          |¬¦  «        5  t          di | ¤Ž                     |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zBTest that we raise errors for invalid input in PolynomialFeatures.r)   r   r+   Nr-   )r/   r0   r1   r   r2   r3   s      r   Ú)test_polynomial_features_input_validationrì   è  s¬   € ð ˆˆqˆcˆ
€Aå	Œ•z¨Ð	1Ñ	1Ô	1ð ,ð ,ÝÐ$Ð$˜VÐ$Ð$×(Ò(¨Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,r7   c                  óº   — t          j        d¦  «        d d …t           j        f         } t          j        t          j        | ¦  «        | | dz  | dz  g¦  «        }| |fS )NrŠ   r   r?   )r   r#   ÚnewaxisÚhstackÚ	ones_like)r&   ÚPs     r   Úsingle_feature_degree3rò   ù  sO   € å
Œ	�!‰Œ�Q�Q�Q�œ
�]Ô#€AÝ
Œ	•2”< ‘?”? A q¨!¡t¨Q°©TÐ2Ñ3Ô3€AØˆaˆ4€Kr   z/degree, include_bias, interaction_only, indices©r   r?   )r   r   r?   Úsparse_Xc                 óT  — | \  }}|r ||¦  «        }t          |||¬¦  «                             |¦  «        }|                     |¦  «        }	|r|	                     ¦   «         }	t	          |	|dd…|f         ¦  «         |j        dk    r|j        j        |j        |j        fk    sJ ‚dS dS )z9Test PolynomialFeatures on single feature up to degree 3.©r@   rE   Úinteraction_onlyNr   ©	r   r2   rb   rÙ   r   Ún_output_features_Úpowers_rc   Ún_features_in_)
rò   r@   rE   r÷   Úindicesrô   r&   rñ   ÚtfÚouts
             r   Ú$test_polynomial_features_one_featurerÿ      sË   € ð4 "�D€A€qØð ØˆH�Q‰KŒKˆÝ	Ø LÐCSð
ñ 
ô 
ç	‚cˆ!�f„fð ð �,Š,�q‰/Œ/€CØð Ø�kŠk‰mŒmˆÝ�C˜˜1˜1˜1˜g˜:œÑ'Ô'Ð'Ø	Ô˜qÒ Ð ØŒzÔ BÔ$9¸2Ô;LÐ#MÒMÐMÐMÐMð !Ð ØMÐMr   c                  ó€  — t          j        d¦  «                             d¦  «        } | d d …d d…f         }| d d …dd …f         }t          j        |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  |dz  |dz  z  g
¦  «        }| |fS )NrŠ   rê   r)   r   r   r?   )r   r#   r$   rï   )r&   Úx1Úx2rñ   s       r   Útwo_features_degree3r  (  sþ   € å
Œ	�!‰Œ×Ò˜VÑ$Ô$€AØ	
ˆ1ˆ1ˆ1ˆbˆqˆbˆ5Œ€BØ	
ˆ1ˆ1ˆ1ˆaˆbˆbˆ5Œ€BÝ
Œ	à�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰MØ�‰E�B˜‘E‰Mð	
ñ	ô 	€Að ˆaˆ4€Kr   )r   r)   r   rŒ   )r)   r   rŒ   ©r   r   )r   r?   rŒ   r   )r?   rŒ   r   )r   r?   rŒ   r   rŠ   é   r‰   é	   ©r?   r?   )r   rŠ   r  r‰   r  )rŠ   r  r‰   r  c                 óT  — | \  }}|r ||¦  «        }t          |||¬¦  «                             |¦  «        }|                     |¦  «        }	|r|	                     ¦   «         }	t	          |	|dd…|f         ¦  «         |j        dk    r|j        j        |j        |j        fk    sJ ‚dS dS )z5Test PolynomialFeatures on 2 features up to degree 3.rö   Nr   rø   )
r  r@   rE   r÷   rü   rô   r&   rñ   rý   rþ   s
             r   Ú%test_polynomial_features_two_featuresr	  >  sÌ   € ðL  �D€A€qØð ØˆH�Q‰KŒKˆÝ	Ø LÐCSð
ñ 
ô 
ç	‚cˆ!�f„fð ð �,Š,�q‰/Œ/€CØð Ø�kŠk‰mŒmˆÝ�C˜˜1˜1˜1˜g˜:œÑ'Ô'Ð'Ø	Ô˜qÒ Ð ØŒzÔ BÔ$9¸2Ô;LÐ#MÒMÐMÐMÐMð !Ð ØMÐMr   c                  óì  — t          j        d¦  «                             dd¦  «        } t          dd¬¦  «                             | ¦  «        }|                     ¦   «         }t          g d¢|¦  «         t          |¦  «        |                     | ¦  «        j	        d         k    sJ ‚t          dd	¬¦  «                             | ¦  «        }|                     g d
¢¦  «        }t          g d¢|¦  «         t          |¦  «        |                     | ¦  «        j	        d         k    sJ ‚t          dd	¬¦  «                             | ¦  «        }|                     g d
¢¦  «        }t          g d¢|¦  «         t          |¦  «        |                     | ¦  «        j	        d         k    sJ ‚t          ddd¬¦  «                             | ¦  «        }|                     g d
¢¦  «        }t          ddg|¦  «         t          |¦  «        |                     | ¦  «        j	        d         k    sJ ‚t          dd¬¦  «                             | ¦  «        }|                     g d¢¦  «        }t          g d¢|¦  «         d S )Né   r   r?   r   T©r@   rE   )
Ú1Úx0r  r  zx0^2zx0 x1zx0 x2zx1^2zx1 x2zx2^2r)   F)r   rP   Úc)r   rP   r  úa^2úa búa cúb^2úb cúc^2úa^3úa^2 búa^2 cúa b^2úa b cúa c^2úb^3úb^2 cúb c^2úc^3ró   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rö   r  r  )úF40Dõ   â˜®õ   ×�)r  r   r!  r"  )
r   r#   r$   r   r2   rY   r   r`   rb   rc   )r&   Úpolyr[   s      r   Útest_polynomial_feature_namesr$  r  s‘  € Ý
Œ	�"‰Œ×Ò˜b !Ñ$Ô$€AÝ Q°TÐ:Ñ:Ô:×>Ò>¸qÑAÔA€DØ×.Ò.Ñ0Ô0€MÝØRÐRÐRØñô ð õ ˆ}ÑÔ §¢°Ñ!2Ô!2Ô!8¸Ô!;Ò;Ð;Ð;Ð;å Q°UÐ;Ñ;Ô;×?Ò?ÀÑBÔB€DØ×.Ò.¨¨¨Ñ?Ô?€MÝð	
ð 	
ð 	
ð* 	ñ-ô ð õ0 ˆ}ÑÔ §¢°Ñ!2Ô!2Ô!8¸Ô!;Ò;Ð;Ð;Ð;å V¸%Ð@Ñ@Ô@×DÒDÀQÑGÔG€DØ×.Ò.¨¨¨Ñ?Ô?€MÝð	
ð 	
ð 	
ð$ 	ñ'ô ð õ* ˆ}ÑÔ §¢°Ñ!2Ô!2Ô!8¸Ô!;Ò;Ð;Ð;Ð;åØ D¸4ðñ ô ç	‚cˆ!�f„fð 	ð ×.Ò.¨¨¨Ñ?Ô?€MÝ˜˜W�~ }Ñ5Ô5Ð5Ýˆ}ÑÔ §¢°Ñ!2Ô!2Ô!8¸Ô!;Ò;Ð;Ð;Ð;õ  Q°TÐ:Ñ:Ô:×>Ò>¸qÑAÔA€DØ×.Ò.Ð/QÐ/QÐ/QÑRÔR€MÝÐ>Ð>Ð>ÀÑNÔNÐNÐNÐNr   )ÚdegrE   r÷   Údtypec                 ó  — t           j                             d¦  «        }|                     ddd¦  «        }t	          j        |¦  «        }t          | ||¬¦  «        }|                     |                     |¦  «        ¦  «        }|                     |                     |¦  «        ¦  «        }	t	          j	        |¦  «        r|j
        dk    sJ ‚|j        |	j        k    sJ ‚t          |                     ¦   «         |	¦  «         d S )Nr   r   ©ri   r   ©rE   r÷   Úcsc)r   r   rÉ   Úrandintr   Ú
csc_matrixr   r%   Úastyper×   rØ   r&  r   rÙ   )
r%  rE   r÷   r&  rË   r&   ÚX_cscr   ÚXt_cscÚXt_denses
             r   Útest_polynomial_features_csc_Xr1  ¾  sï   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ�Š�A�q˜(Ñ#Ô#€AÝÔ˜aÑ Ô €Eå
Ø˜,Ð9Iðñ ô €Cð ×Ò˜uŸ|š|¨EÑ2Ô2Ñ3Ô3€FØ× Ò  §¢¨%¡¤Ñ1Ô1€HåŒ?˜6Ñ"Ô"Ð= v¤}¸Ò'=Ð'=Ð'=Ð'=ØŒ<˜8œ>Ò)Ð)Ð)Ð)Ý˜fŸnšnÑ.Ô.°Ñ9Ô9Ð9Ð9Ð9r   c                 ó  — t           j                             d¦  «        }|                     ddd¦  «        }t	          j        |¦  «        }t          | ||¬¦  «        }|                     |                     |¦  «        ¦  «        }|                     |                     |d¬¦  «        ¦  «        }	t	          j	        |¦  «        r|j
        dk    sJ ‚|j        |	j        k    sJ ‚t          |                     ¦   «         |	¦  «         d S )Nr   r   r(  r)  F)ÚcopyrÖ   )r   r   rÉ   r+  r   Ú
csr_matrixr   r%   r-  r×   rØ   r&  r   rÙ   )
r%  rE   r÷   r&  rË   r&   ÚX_csrr   ÚXt_csrr0  s
             r   Útest_polynomial_features_csr_Xr7  Û  sõ   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ�Š�A�q˜(Ñ#Ô#€AÝÔ˜aÑ Ô €Eå
Ø˜,Ð9Iðñ ô €Cð ×Ò˜uŸ|š|¨EÑ2Ô2Ñ3Ô3€FØ× Ò  §¢¨%°e Ñ!<Ô!<Ñ=Ô=€HåŒ?˜6Ñ"Ô"Ð= v¤}¸Ò'=Ð'=Ð'=Ð'=ØŒ<˜8œ>Ò)Ð)Ð)Ð)Ý˜fŸnšnÑ.Ô.°Ñ9Ô9Ð9Ð9Ð9r   Ú
n_features)r)   rŒ   r   zmin_degree, max_degree))r   r)   )r   r   )r)   r?   )r   rŒ   )r?   rŒ   r÷   c                 ó  — t          j        dgdg| dz
  gff¦  «        }t          |||¬¦  «        }|                     |¦  «         |j        }t          j        | d|||¬¦  «        }|t          d„ |D ¦   «         ¦  «        k    sJ ‚dS )z?
    Test that n_output_features_ is calculated correctly.
    r)   r   )r@   r÷   rE   ©r8  Ú
min_degreeÚ
max_degreer÷   rE   c                 ó   — g | ]}d ‘ŒS )r)   r-   )Ú.0rA   s     r   ú
<listcomp>z)test_num_combinations.<locals>.<listcomp>  s   € Ð0Ð0Ð0 A˜aÐ0Ð0Ð0r   N)r   r4  r   r2   rù   Ú_combinationsrn   )	r8  r;  r<  r÷   rE   r•   r   Ú
num_combosÚcomboss	            r   Útest_num_combinationsrC  ö  sµ   € õ  	Ô˜A˜3 !  z°A¡~Ð&6Ð 7Ð8Ñ9Ô9€AÝ
ØØ)Ø!ðñ ô €Cð
 ‡G‚GˆA�J„J€JØÔ'€JåÔ-ØØØØ)Ø!ðñ ô €Fð �Ð0Ð0¨Ð0Ñ0Ô0Ñ1Ô1Ò1Ð1Ð1Ð1Ð1Ð1r   c                 óæ  — t          dddd¬¦  «                             ¦   «         }|                     ¦   «         }t          | ||¬¦  «        }|                     |                     |¦  «        ¦  «        }|                     |                     |¦  «        ¦  «        }t          j        |¦  «        r|j        dk    sJ ‚|j	        |j	        k    sJ ‚t          |                     ¦   «         |¦  «         d S )Néè  r   ç      à?r   ©Úrandom_stater)  rÖ   )Úsparse_randomÚtocsrrÙ   r   r%   r-  r   r×   rØ   r&  r   )	r%  rE   r÷   r&  r5  r&   r   r6  r0  s	            r   Ú%test_polynomial_features_csr_X_floatsrK    sä   € õ ˜$  C°aÐ8Ñ8Ô8×>Ò>Ñ@Ô@€EØ�Š‰Œ€Aå
Ø˜,Ð9Iðñ ô €Cð ×Ò˜uŸ|š|¨EÑ2Ô2Ñ3Ô3€FØ× Ò  §¢¨%¡¤Ñ1Ô1€HåŒ?˜6Ñ"Ô"Ð= v¤}¸Ò'=Ð'=Ð'=Ð'=ØŒ<˜8œ>Ò)Ð)Ð)Ð)Ý˜fŸnšnÑ.Ô.°Ñ9Ô9Ð9Ð9Ð9r   )Úzero_row_indexr%  r÷   ))r   r   T)r)   r   T©r   r   T)r   r?   T)r)   r?   T)r   r?   T)r   r   F)r)   r   F©r   r   F)r   r?   F)r)   r?   F)r   r?   Fc                 ó¬  — t          dddd¬¦  «                             ¦   «         }d|| d d …f<   |                     ¦   «         }t          |d|¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          j        |¦  «        r|j        d	k    sJ ‚|j        |j        k    sJ ‚t          |                     ¦   «         |¦  «         d S )
Nr?   r   r¡   r   rG  r    Fr)  rÖ   ©
rI  rJ  rÙ   r   r%   r   r×   rØ   r&  r   )rL  r%  r÷   r5  r&   r   r6  r0  s           r   Ú'test_polynomial_features_csr_X_zero_rowrQ  1  sØ   € õ$ ˜!˜R °1Ð5Ñ5Ô5×;Ò;Ñ=Ô=€EØ"€Eˆ.˜!˜!˜!Ð
ÑØ�Š‰Œ€Aå
˜S¨uÐGWÐ
XÑ
XÔ
X€CØ×Ò˜uÑ%Ô%€FØ× Ò  Ñ#Ô#€HåŒ?˜6Ñ"Ô"Ð= v¤}¸Ò'=Ð'=Ð'=Ð'=ØŒ<˜8œ>Ò)Ð)Ð)Ð)Ý˜fŸnšnÑ.Ô.°Ñ9Ô9Ð9Ð9Ð9r   ))TTrt   ru   )FFc                 óš  — t          dddd¬¦  «                             ¦   «         }|                     ¦   «         }t          d| |¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          j        |¦  «        r|j        dk    sJ ‚|j        |j        k    sJ ‚t          |                     ¦   «         |¦  «         d S )	NrE  r   rF  r   rG  rŒ   r)  rÖ   rP  )rE   r÷   r5  r&   r   r6  r0  s          r   Ú'test_polynomial_features_csr_X_degree_4rS  R  sÎ   € õ
 ˜$  C°aÐ8Ñ8Ô8×>Ò>Ñ@Ô@€EØ�Š‰Œ€Aå
Ø	˜Ð7Gðñ ô €Cð ×Ò˜uÑ%Ô%€FØ× Ò  Ñ#Ô#€HåŒ?˜6Ñ"Ô"Ð= v¤}¸Ò'=Ð'=Ð'=Ð'=ØŒ<˜8œ>Ò)Ð)Ð)Ð)Ý˜fŸnšnÑ.Ô.°Ñ9Ô9Ð9Ð9Ð9r   )r%  Údimr÷   )
)r   r)   TrM  )r?   r)   T)r?   r   T)r?   r?   T)r   r)   FrN  )r?   r)   F)r?   r   F)r?   r?   Fc                 ó˜  — t          d|dd¬¦  «                             ¦   «         }|                     ¦   «         }t          | |¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          j        |¦  «        r|j        dk    sJ ‚|j        |j        k    sJ ‚t          |                     ¦   «         |¦  «         d S )NrE  rF  r   rG  )r÷   rÖ   rP  )r%  rT  r÷   r5  r&   r   r6  r0  s           r   Ú(test_polynomial_features_csr_X_dim_edgesrV  e  sÃ   € õ  ˜$  S°qÐ9Ñ9Ô9×?Ò?ÑAÔA€EØ�Š‰Œ€Aå
˜SÐ3CÐ
DÑ
DÔ
D€CØ×Ò˜uÑ%Ô%€FØ× Ò  Ñ#Ô#€HåŒ?˜6Ñ"Ô"Ð= v¤}¸Ò'=Ð'=Ð'=Ð'=ØŒ<˜8œ>Ò)Ð)Ð)Ð)Ý˜fŸnšnÑ.Ô.°Ñ9Ô9Ð9Ð9Ð9r   c           
      óÜ  ‡ — ˆ fd„}d}d}t           j        }t          j        ddt           j        ¬¦  «        }t          j        |dz
  |dz
  |dz
  |dz
  g¦  «        }t          j        |dz
  |dz
  |dz
  |dz
  gt           j        ¬¦  «        }t          j        |||ff||f|¬¦  «        }	t          ‰ |d¬	¦  «        }
|
                     |d
d|
j	        |
j
        ¬¦  «        }|t          j        t           j        ¦  «        j        k    rLd}t          j        t           |¬¦  «        5  |
                     |	¦  «         ddd¦  «         n# 1 swxY w Y   dS |
                     |	¦  «        }|                     ¦   «         \  }}||z   } |||t)          ‰  ¦  «                 |d         ¦  «        |z   }|r	dg|dz
  z  ng }|r	d
g|dz
  z  ng }t+          d¦  «        D �]R}|d|z           }|d|z  dz            }|d|z           }|d|z  dz            }|r*|                     d¦  «         |                     d
¦  «         |                     ||g¦  «         |                     |t)          |¦  «        z   |t)          |¦  «        z   g¦  «         ‰ se|                     ||z  ||z  ||z  g¦  «         |                      ||||¦  «        |z    ||||¦  «        |z    ||||¦  «        |z   g¦  «         �Œ|                     ||z  g¦  «         |                      ||||¦  «        |z   ¦  «         �ŒTt)          |¦  «        dz   dt)          ‰  ¦  «        z  z   }|
j        |dz   k    sJ ‚|j        |k    sJ ‚|j        ||dz   fk    sJ ‚|j        j        |j        j        cxk    rt           j        k    sn J ‚|j                             ¦   «         t          j        t           j        ¦  «        j        k    sJ ‚|rt=          t+          |dz
  ¦  «        ¦  «        ng }|                     |dz
  g|z  |dz
  g|z  z   ¦  «         t?          |j         |¦  «         tC          ||¦  «         tC          ||¦  «         dS )a°  Check the automatic index dtype promotion to `np.int64` when needed.

    This ensures that sufficiently large input configurations get
    properly promoted to use `np.int64` for index and indptr representation
    while preserving data integrity. Non-regression test for gh-16803.

    Note that this is only possible for Python runtimes with a 64 bit address
    space. On 32 bit platforms, a `ValueError` is raised instead.
    c                 ód   •— ‰r| |z  |dz  d|z  z   dz  z
  dz
  |z   S | |z  |dz  |z   dz  z
  |z   S )Nr   r?   r)   r-   )r½   ÚiÚjr÷   s      €r   Údegree_2_calczRtest_csr_polynomial_expansion_index_overflow_non_regression.<locals>.degree_2_calc�  sU   ø€ Øð 	/Ø�q‘5˜A˜q™D 1 q¡5™L¨QÑ.Ñ.°Ñ2°QÑ6Ð6à�q‘5˜A˜q™D 1™H¨™?Ñ*¨QÑ.Ð.r   é   iÁÔ r)   r   )r&  r   )rc   r&  ©r÷   rE   r@   r   r:  útThe output that would result from the current configuration would have \d* features which is too large to be indexedr+   Nr?   )"r   Úfloat32r#   Úint64rŽ   r   r4  r   Ú_num_combinationsr÷   rE   ÚiinfoÚintprµ   r/   r0   r1   r2   r%   ÚnonzeroÚintr·   ÚappendÚextendrù   r&  rc   Úindptrrü   Úint32Úlistr   Údatar   )r÷   rE   r[  Ú	n_samplesr8  Ú
data_dtyperk  ÚrowÚcolr&   ÚpfÚnum_combinationsrÃ   rd   Úrow_nonzeroÚcol_nonzeroÚn_degree_1_features_outÚmax_degree_2_idxÚdata_targetÚcol_nonzero_targetrY  r•   r„   Úx_idxÚy_idxÚnnz_per_rowÚrow_nonzero_targets   `                          r   Ú;test_csr_polynomial_expansion_index_overflow_non_regressionr|  �  sŽ  ø€ ð/ð /ð /ð /ð /ð €IØ€JÝ”€JÝŒ9�Q˜¥¤Ð*Ñ*Ô*€DÝ
Œ(�I ‘M 9¨q¡=°)¸a±-ÀÈQÁÐOÑ
PÔ
P€Cõ Œ(Ø	�a‰˜ a™¨°a©¸Àa¹ÐHÕPRÔPXðñ ô €Cõ 	ÔØ	��SˆzÐØ˜*Ð%Øð	ñ 	ô 	€Aõ
 
Ø)¸ÈQð
ñ 
ô 
€Bð ×+Ò+ØØØØÔ,Ø”_ð ,ñ ô Ðð �"œ(¥2¤7Ñ+Ô+Ô/Ò/Ð/ð>ð 	õ Œ]�:¨SÐ1Ñ1Ô1ð 	ð 	Ø�FŠF�1‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	àˆØ×Ò˜qÑ!Ô!€GØ&ŸšÑ0Ô0Ñ€K�Ø(¨<Ñ7Ðàˆ�j #¥cÐ.>Ð*>Ñ&?Ô&?Ô"@À#ÀaÄ&ÑIÔIØ
!ñ	"ð ð ,8Ð?�1�#˜ Q™Ñ'Ð'¸R€KØ2>ÐF˜!˜ 	¨A¡Ñ.Ð.ÀBÐå�1‰XŒXð ñ ˆØ��Q‘ŒKˆØ��Q‘˜‘ŒOˆØ�A˜‘E”
ˆØ�A˜‘E˜A‘I”ˆØð 	)Ø×Ò˜qÑ!Ô!Ð!Ø×%Ò% aÑ(Ô(Ð(Ø×Ò˜A˜q˜6Ñ"Ô"Ð"Ø×!Ò!Ø•S˜Ñ&Ô&Ñ&¨µ°LÑ0AÔ0AÑ(AÐBñ	
ô 	
ð 	
ð  ð 	Ø×Ò  A¡ q¨1¡u¨a°!©eÐ4Ñ5Ô5Ð5Ø×%Ò%à!�M *¨e°UÑ;Ô;Ð>UÑUØ!�M *¨e°UÑ;Ô;Ð>UÑUØ!�M *¨e°UÑ;Ô;Ð>UÑUðñô ð ñ ð ×Ò  A¡˜wÑ'Ô'Ð'Ø×%Ò%Ø�˜j¨%°Ñ7Ô7Ð:QÑQñô ð ñ õ �lÑ#Ô# aÑ'¨!­cÐ6FÐ2FÑ.GÔ.GÑ*GÑG€KàÔ Ð$4°qÑ$8Ò8Ð8Ð8Ð8ØŒ=˜JÒ&Ð&Ð&Ð&ØŒ=˜YÐ(8¸1Ñ(<Ð=Ò=Ð=Ð=Ð=ØŒ>Ô 7¤?Ô#8ÐDÐDÒDÐD½B¼HÒDÐDÐDÐDÐDÐDàŒ?×ÒÑ Ô ¥2¤8­B¬HÑ#5Ô#5Ô#9Ò9Ð9Ð9Ð9à7CÐK��e I°¡MÑ2Ô2Ñ3Ô3Ð3ÈÐØ×ÒØ	�Q‰ˆ˜+Ñ%¨°Q©¨¸+Ñ(EÑEñô ð õ �G”L +Ñ.Ô.Ð.Ý�{Ð$6Ñ7Ô7Ð7Ý�{Ð$6Ñ7Ô7Ð7Ð7Ð7s   Ä#EÅE	ÅE	zdegree, n_features)r   éÿÿ  )r?   i(	  )r?   r}  c                 ó  — dg}dg}|dz
  g}|dz
  t          |¦  «        z   g}|                     ||dz   z  dz  |d         z   ¦  «         |                     ||dz   z  |dz   z  dz  |d         z   ¦  «         t          j        |||ff¦  «        }t	          ||| ¬¦  «        }	|	                     |d| |	j        |	j        ¬¦  «        }
|
t          j	        t          j
        ¦  «        j        k    rLd}t          j        t          |¬	¦  «        5  |	                     |¦  «         d
d
d
¦  «         n# 1 swxY w Y   d
S t           t#          d¦  «        k     ràd}t          j	        t          j        ¦  «        j        }||z   }t'          d| dz   ¦  «        D ]T}t)          |j        ||¦  «        }t-          |||¦  «        dz
  }||dz   z  }t          ||¦  «        |k    }|| o||k    z  }ŒU|rLd}t          j        t          |¬	¦  «        5  |	                     |¦  «        }d
d
d
¦  «         n# 1 swxY w Y   d
S t           t#          d¦  «        k     rZ|dk    rT| dk    rN|sLd}t          j        t          |¬	¦  «        5  |	                     |¦  «        }d
d
d
¦  «         n# 1 swxY w Y   d
S |	                     |¦  «        }|
t          j	        t          j        ¦  «        j        k    rt          j        nt          j        }d| dz
  t          | ¦  «        z  z   }t          |¦  «        |z   }|j        |j        k    sJ ‚|j        d|	j        fk    sJ ‚|j        j        |j        j        cxk    r|k    sn J ‚|j        |k    sJ ‚|r |d         t          j        d¦  «        k    sJ ‚t'          |¦  «        D ]*}|d||         f         t          j        d¦  «        k    sJ ‚Œ+||z  }| dk    r|d|z   z  }|	j        || dz
           dz   |z
  k    sJ ‚d
S )zšTests known edge-cases to the dtype promotion strategy and custom
    Cython code, including a current bug in the upstream
    `scipy.sparse.hstack`.
    r¡   r   r)   r   rŠ   r]  r:  r^  r+   NrÐ   Fz>In scipy versions `<1.8.0`, the function `scipy.sparse.hstack`z1.9.2r}  z>In scipy versions `<1.9.2`, the function `scipy.sparse.hstack`©r   r   r?   )re  rf  r   r4  r   ra  r÷   rE   r   rb  rc  rµ   r/   r0   r1   r2   r   r   ri  r·   r   rh  r   r%   r`  r&  rc   rù   rü   ÚnnzÚapprox)r@   r8  r÷   rE   rk  rn  ro  Úexpected_indicesr&   rp  rq  rÃ   Úhas_bugÚ	max_int32Úcumulative_sizer%  Ú
max_indptrÚmax_indicesÚneeds_int64rd   Úexpected_dtypeÚnon_bias_termsÚexpected_nnzÚidxÚoffsets                            r   Ú,test_csr_polynomial_expansion_index_overflowrŽ  õ  sY  € ð2 ˆ5€DØˆ#€CØ˜‰>Ð
€Cð 	�Q‰�˜\Ñ*Ô*Ñ*ðÐð ×Ò˜J¨*°q©.Ñ9¸QÑ>ÐAQÐRSÔATÑTÑUÔUÐUà×ÒØ�j 1‘nÑ%¨°a©Ñ8¸AÑ=Ð@PÐQRÔ@SÑSñô ð õ 	Ô˜4 # s Ð,Ñ-Ô-€AÝ	Ø)¸ÈVð
ñ 
ô 
€Bð ×+Ò+ØØØØÔ,Ø”_ð ,ñ ô Ðð �"œ(¥2¤7Ñ+Ô+Ô/Ò/Ð/ð>ð 	õ Œ]�:¨SÐ1Ñ1Ô1ð 	ð 	Ø�FŠF�1‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	àˆõ
 •M 'Ñ*Ô*Ò*Ð*ØˆÝ”H�RœXÑ&Ô&Ô*ˆ	Ø$ |Ñ3ˆÝ˜˜F Q™JÑ'Ô'ð 	Gð 	GˆCÝ(¨¬Ð3CÀSÑIÔIˆJÝ,¨ZÐ9IÈ3ÑOÔOÐRSÑSˆKØ˜{¨Q™Ñ.ˆOÝ˜k¨:Ñ6Ô6¸ÒBˆKØ˜;�ÐF¨?¸YÒ+FÑFˆGˆGØð 	ØSˆCÝ”�z°Ð5Ñ5Ô5ð .ð .Ø×*Ò*¨1Ñ-Ô-�ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .àˆFõ 	•] 7Ñ+Ô+Ò+Ð+Ø˜%ÒÐØ�aŠKˆKØ ð ð PˆÝŒ]�:¨SÐ1Ñ1Ô1ð 	*ð 	*Ø×&Ò& qÑ)Ô)ˆGð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*àˆØ×Ò˜qÑ!Ô!€Gà!1µB´H½R¼XÑ4FÔ4FÔ4JÒ!JÐ!J•R”X�XÕPRÔPX€Nà˜& 1™*­Ð0@Ð,@Ñ(AÔ(AÑAÑA€NÝ�|Ñ$Ô$ ~Ñ5€LØŒ=˜AœGÒ#Ð#Ð#Ð#ØŒ=˜Q Ô 5Ð6Ò6Ð6Ð6Ð6ØŒ>Ô 7¤?Ô#8ÐJÐJÒJÐJ¸NÒJÐJÐJÐJÐJÐJØŒ;˜,Ò&Ð&Ð&Ð&àð 3Ø�tŒ}¥¤¨cÑ 2Ô 2Ò2Ð2Ð2Ð2Ý�^Ñ$Ô$ð Gð GˆØ�qÐ*¨3Ô/Ð/Ô0µF´MÀ#Ñ4FÔ4FÒFÐFÐFÐFÐFà 
Ñ*€FØ�‚{€{Ø�!�j‘.Ñ ˆØÔ Ð$4°V¸a±ZÔ$@À1Ñ$DÀvÑ$MÒMÐMÐMÐMÐMÐMs6   Ä	D+Ä+D/Ä2D/ÈH#È#H'È*H'É3JÊJÊJc                 óä  — t          j        t           j        ¦  «        j        dz  }dg}dg}|dz
  g}t	          j        |||ff¦  «        }t          | |d¬¦  «        }d}t          j        t          |¬¦  «        5  | 
                    |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          |¬¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr   r¡   r   r)   r  r]  r^  r+   )r   rb  r`  rµ   r   r4  r   r/   r0   r1   r2   r%   )	r÷   rE   r8  rk  rn  ro  r&   rp  rÃ   s	            r   Ú0test_csr_polynomial_expansion_too_large_to_indexr�  l  s}  € õ ”�"œ(Ñ#Ô#Ô'¨1Ñ,€JØˆ5€DØˆ#€CØ˜‰>Ð
€CÝÔ˜4 # s Ð,Ñ-Ô-€AÝ	Ø)¸ÈVð
ñ 
ô 
€Bð	6ð õ 
Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø
�Šˆq‰	Œ	ˆ	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø
×Ò˜ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s$   Á:BÂB Â#B ÃC%Ã%C)Ã,C)c                  óì  — t          j        d¦  «        } t          dd¬¦  «        }d}t          j        t
          |¬¦  «        5  |                     | ¦  «         ddd¦  «         n# 1 swxY w Y   t          dd¬¦  «        }d	}t          j        t
          |¬¦  «        5  |                     | ¦  «         ddd¦  «         n# 1 swxY w Y   | t          j        | ¦  «        t          j	        | ¦  «        fD ]}t          dd
¬¦  «        }|                     |¦  «        }t          j
        |¦  «        r|                     ¦   «         }t          |t          j        | j        d         df¦  «        ¦  «         Œ€dS )z”Check that PolynomialFeatures raises error when degree=0 and include_bias=False,
    and output a single constant column when include_bias=True
    )r   r   r   Fr  zWSetting degree to zero and include_bias to False would result in an empty output array.r+   Nr  zoSetting both min_degree and max_degree to zero and include_bias to False would result in an empty output array.Tr)   )r   Úonesr   r/   r0   r1   r%   r   r4  r,  r×   rÙ   r   rc   )r&   r#  r5   Ú_XÚoutputs        r   Ú1test_polynomial_features_behaviour_on_zero_degreer•  �  sò  € õ 	Œ�ÑÔ€AÝ Q°UÐ;Ñ;Ô;€Dð	"ð õ 
Œ•z¨Ð	1Ñ	1Ô	1ð ð Ø×Ò˜1ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ  V¸%Ð@Ñ@Ô@€Dð	8ð õ 
Œ•z¨Ð	1Ñ	1Ô	1ð ð Ø×Ò˜1ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð •&Ô# AÑ&Ô&­Ô(9¸!Ñ(<Ô(<Ð=ð =ð =ˆÝ!¨¸Ð>Ñ>Ô>ˆØ×#Ò# BÑ'Ô'ˆåŒ?˜6Ñ"Ô"ð 	&Ø—^’^Ñ%Ô%ˆFÝ˜6¥2¤7¨A¬G°A¬J¸¨?Ñ#;Ô#;Ñ<Ô<Ð<Ð<ð=ð =s$   ÁA%Á%A)Á,A)ÂC Ã CÃCc                  ó˜   — t           j        dk    s t           j        dk    rt           j        dk    rd} nd} t          ¦   «         | k    sJ ‚d S )NÚwin32ì        Ú
emscriptenr‰   é   )ÚsysÚplatformÚmaxsizer   )Úexpected_sizes    r   Útest_sizeof_LARGEST_INT_trŸ  Ÿ  sS   € õ „|�wÒÐÝŒ�uÒÐ¥¤°Ò!=Ð!=àˆˆàˆå$Ñ&Ô&¨-Ò7Ð7Ð7Ð7Ð7Ð7r   r—  zyOn Windows, scikit-learn is typically compiled with MSVC that does not support int128 arithmetic (at the time of writing))rÒ   Úrunc                  ó  — t          t          j        t          j        ¦  «        j        dz  dz   ¦  «        } dg}dg}| dz
  g}| dz
  g}|                     t          | | dz   z  dz  |d         z   ¦  «        ¦  «         |                     t          | | dz   z  | dz   z  dz  |d         z   ¦  «        ¦  «         t          j        |||ff¦  «        }t          ddd¬	¦  «        }t          j
        d
k    rMd}t          j        t          |¬¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S |                     |¦  «        }t          d¦  «        D ]*}	|d||	         f         t          j        d¦  «        k    sJ ‚Œ+d S )NgUUUUUUÕ?r?   r¡   r   r)   r   rŠ   Fr]  r˜  r^  r+   )re  r   rb  r`  rµ   rf  r   r4  r   r›  r�  r/   r0   r1   r%   r·   r�  )
r8  rk  rn  ro  r‚  r&   rp  rÃ   rd   rŒ  s
             r   Ú*test_csr_polynomial_expansion_windows_failr¢  ­  s  € õ •R”X�bœhÑ'Ô'Ô+°Ñ6¸Ñ:Ñ;Ô;€JØˆ5€DØˆ#€CØ˜‰>Ð
€Cð 	�Q‰ðÐð ×ÒÝˆJ˜* q™.Ñ)¨QÑ.Ð1AÀ!Ô1DÑDÑEÔEñô ð ð ×ÒÝˆJ˜* q™.Ñ)¨Z¸!©^Ñ<ÀÑAÐDTÐUVÔDWÑWÑXÔXñô ð õ 	Ô˜4 # s Ð,Ñ-Ô-€AÝ	¨UÀÈqÐ	QÑ	QÔ	Q€BÝ
„{�eÒÐð:ð 	õ
 Œ]�:¨SÐ1Ñ1Ô1ð 	 ð 	 Ø×Ò˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð ×"Ò" 1Ñ%Ô%ˆÝ˜‘8”8ð 	Kð 	KˆCØ˜1Ð.¨sÔ3Ð3Ô4½¼ÀcÑ8JÔ8JÒJÐJÐJÐJÐJð	Kð 	Ks   ÄD1Ä1D5Ä8D5)Ur›  Únumpyr   r/   Únumpy.testingr   r   Úscipyr   Úscipy.interpolater   Úscipy.sparser   rI  Úsklearn.linear_modelr   Úsklearn.pipeliner	   Úsklearn.preprocessingr
   r   r   Ú/sklearn.preprocessing._csr_polynomial_expansionr   r   r   Úsklearn.utils._testingr   Úsklearn.utils.fixesr   r   ÚmarkÚparametrizer'   r6   rB   r\   re   r·   rq   r†   rŽ   r‘   r�   r©   r³   r¾   rÄ   rÏ   Úskipifrä   ræ   ré   rì   Úfixturerò   Úslicer4  r,  rÿ   r  r	  r$  re  r_  Úfloat64r1  r7  rC  rK  rQ  rS  rV  r|  Úsqrtrb  r`  rµ   rŽ  r�  r•  rŸ  Úxfailrœ  r¢  r-   r   r   ú<module>r¶     sS  ðØ 
€
€
€
à Ð Ð Ð Ø €€€Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð
 =Ð <Ð <Ð <Ð <Ð <Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð „×Ò˜Ð!3Ð5FÐ GÑHÔHð	9ð 	9ñ IÔHð	9ð „×ÒØà
�Q�C�5Ð	ÐNÐOØ
�Q˜�F˜Q ˜FÐ#Ð	$Ð&SÐTØ
�Q�C˜!˜�:Ð	Ð JÐKðñô ð+ð +ñô ð+ð „×Ò˜¨:°zÐ*BÑCÔCðð ñ DÔCðð#ð #ð #ðL „×ÒØØ2Ð2Ð2ñô ð „×Ò˜ A q 6Ñ*Ô*ð2ð 2ñ +Ô*ñ	ô ð
2ð „×Ò˜ 5 5¨¨A¡;¤;Ñ/Ô/Ø„×Ò˜ E E¨!¨Q¡K¤KÑ0Ô0Ø„×Ò˜ 9¨jÐ"9Ñ:Ô:Ø„×Ò˜¨:°zÐ*BÑCÔCð>ð >ñ DÔCñ ;Ô:ñ 1Ô0ñ 0Ô/ð>ð2 „×Ò˜& +Ð.°ÀÐ0NÑOÔOð3ð 3ñ PÔOð3ð, „×ÒØ;Ð;Ð;à	�A�t˜X˜RœX¨¨1 v°°1¨v¸¸2°wÐ&?Ñ@Ô@ÐAàØØˆBŒHÐ*Ð*Ð*Ñ+Ô+ØˆBŒH�q˜!�f˜q !˜f q¨" gÐ.Ñ/Ô/ð		
ð 
�A�t˜X˜RœX¨¨1 v°°1¨v¸¸2°wÀÀBÀÐ&HÑIÔIÐJØ	�Q˜˜h˜bœh¨¨A¨°°A°¸¸B¸Ð'@ÑAÔAÐBàØØˆBŒHÐ*Ð*Ð*Ñ+Ô+ØˆBŒH�q˜!�f˜q !˜f q¨" gÐ.Ñ/Ô/ð		
ðñô ð(0ð 0ñ)ô ð(0ð „×Ò˜& +Ð.°ÀÐ0NÑOÔOðIð Iñ PÔOðIð>ð ð ð$4ð 4ð 4ð, „×Ò˜ A q 6Ñ*Ô*ð#"ð #"ñ +Ô*ð#"ðL „×Ò˜& +Ð.°ÀÐ0NÑOÔOØ„×Ò˜ ? ? ?Ñ3Ô3ð3ð 3ñ 4Ô3ñ PÔOð3ðl0ð 0ð 0ð( „×ÒØ��˜wÑ'Ô'Ò'ØFð ñ ô ð „×Ò˜ 5 5¨¨A¡;¤;Ñ/Ô/Ø„×Ò˜ 9¨jÐ"9Ñ:Ô:Ø„×ÒØÐLÐLÐLñô ð „×Ò˜¨%°¨Ñ7Ô7ð-
ð -
ñ 8Ô7ñô ñ ;Ô:ñ 0Ô/ñ	ô ð-
ð` „×ÒØ�-�- Ñ(Ô(Ò(ØFð ñ ô ð5ð 5ñ	ô ð5ð „×Ò˜ Q¨ GÑ,Ô,Ø„×Ò˜¨$°¨Ñ7Ô7Ø„×Ò˜ A q 6Ñ*Ô*Ø„×ÒØÐLÐLÐLñô ð „×Ò˜¨5°$¨-Ñ8Ô8ð>ð >ñ 9Ô8ñô ñ +Ô*ñ 8Ô7ñ -Ô,ð>ð( „×ÒØà
�GÐ	ÐGÐHØ
�HÐ	ÐHÐIØ
�FÐ	ÐFÐGØ
�IÐ	Ð JÐKð	ñô ð,ð ,ñô ð,ð €„ÑÔðð ñ Ôðð „×ÒØ5à	
ˆD�%˜˜˜t TÑ*Ô*Ð+Ø	
ˆE�5˜%˜%  4™.œ.Ð)Ø	
ˆD�$˜˜A˜ÐØ	
ˆE�4˜!˜ÐØ	��u˜i˜i˜iÐ(Ø	�˜  1˜vÐ&Ø	��t˜a˜SÐ!Ø	�˜˜bÐ!ð	ñô ð „×ÒØØ
ˆFÔ˜vÔ0Ð1ñô ðNð Nñ	ô ñô ð"Nð. €„ÑÔðð ñ Ôðð* „×ÒØ5à	
ˆD�%˜˜˜q !™œÐ%Ø	
ˆE�5˜%˜%  1™+œ+Ð&Ø	
ˆD�$˜˜˜Ð%Ø	
ˆE�4˜˜˜Ð#Ø	��u˜l˜l˜lÐ+Ø	�˜˜y˜y˜yÐ)Ø	��t˜a ˜VÐ$Ø	�˜˜q˜cÐ"Ø	
ˆD�%˜˜˜t TÑ*Ô*Ð+Ø	
ˆE�5˜%˜%  4™.œ.Ð)Ø	
ˆD�$˜˜˜Ð%Ø	
ˆE�4˜˜˜Ð#Ø	��uÐ6Ð6Ð6Ð7Ø	�˜˜u˜u Q¨™~œ~Ð.Ø	��t˜a ˜VÐ$Ø	�˜˜q˜cÐ"Ø	��u˜o˜o˜oÐ.Ø	�˜˜|˜|˜|Ð,Ø	��t˜a˜SÐ!Ø	�˜˜bÐ!ð)ñô ð2 „×ÒØØ
ˆFÔ˜vÔ0Ð1ñô ðNð Nñ	ô ñ3ô ð:Nð.IOð IOð IOðX „×ÒØ8Ð8Ð8à	
ˆD�%˜ÐØ	
ˆD�%˜ÐØ	
ˆD�%˜œÐ$Ø	
ˆD�%˜œÐ$Ø	
ˆE�5˜"œ*Ð%Ø	
ˆE�4˜œÐ$Ø	
ˆE�5˜"œ*Ð%Ø	
ˆE�4˜œÐ$ð	ñô ð:ð :ñô ð:ð  „×ÒØ8Ð8Ð8à	
ˆD�%˜ÐØ	
ˆD�%˜ÐØ	
ˆD�%˜œÐ$Ø	
ˆD�%˜œÐ$Ø	
ˆE�5˜"œ*Ð%Ø	
ˆE�4˜œÐ$ðñ
ô 
ð:ð :ñ
ô 
ð:ð  „×Ò˜ y y yÑ1Ô1Ø„×ÒØÐFÐFÐFñô ð „×ÒÐ+¨d°E¨]Ñ;Ô;Ø„×Ò˜¨$°¨Ñ7Ô7ð2ð 2ñ 8Ô7ñ <Ô;ñô ñ 2Ô1ð2ð: „×ÒØ8Ð8Ð8à	
ˆD�%˜œÐ$Ø	
ˆD�%˜œÐ$Ø	
ˆE�5˜"œ*Ð%Ø	
ˆE�4˜œÐ$ð	ñô ð:ð :ñô ð:ð „×ÒØ1Ð1Ð1ðð ð ñô ð":ð :ñ#ô ð":ð  „×ÒØÐ'Ð(Ø@Ð@Ð@ñô ð:ð :ñ	ô ð:ð „×ÒØ&Ð&Ð&ðð ð ñô ð
:ð 
:ñô ð
:ð „×ÒÐ+¨d°E¨]Ñ;Ô;Ø„×Ò˜¨$°¨Ñ7Ô7ðo8ð o8ñ 8Ô7ñ <Ô;ðo8ðd „×ÒØð 	Øð 
ˆCˆC��”˜˜œ ¤Ñ*Ô*Ô.Ñ/Ô/°!Ñ3Ñ4Ô4Ð5Øð 
ˆCˆC��”˜˜œ ¤Ñ*Ô*Ô.Ñ/Ô/Ñ0Ô0Ð1ðñô ð  „×ÒÐ+¨d°E¨]Ñ;Ô;Ø„×Ò˜¨$°¨Ñ7Ô7ðbNð bNñ 8Ô7ñ <Ô;ñ!ô ð$bNðJ „×ÒÐ+¨d°E¨]Ñ;Ô;Ø„×Ò˜¨$°¨Ñ7Ô7ðð ñ 8Ô7ñ <Ô;ðð&=ð =ð =ð<8ð 8ð 8ð „×ÒØ„L�GÒð	6ð 	ð ñ ô ð"Kð "Kñô ð"Kð "Kð "Kr   