a
    �ù»jÿY  ã                   @   sF  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dl	m
Z
 d dlmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZ dd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#d d!„ Z$d"d#„ Z%d$d%„ Z&d&d'„ Z'd(d)„ Z(d*d+„ Z)d,d-„ Z*d.d/„ Z+d0d1„ Z,d2d3„ Z-d4d5„ Z.d6d7„ Z/d8d9„ Z0d:d;„ Z1d<d=„ Z2d>d?„ Z3ej4 5d@ej6ej7ej8ej9g¡dAdB„ ƒZ:ej4 5dCej6ej7ej8ej9g¡dDdE„ ƒZ;dFdG„ Z<ej4 5d@ej9ej8g¡dHdI„ ƒZ=dJdK„ Z>dLdM„ Z?ej4 5dNdOdPg¡dQdR„ ƒZ@dSdT„ ZAdUdV„ ZBdWdX„ ZCej4 5dYdZd[g¡d\d]„ ƒZDd^d_„ ZEdS )`é    N)Úexpit)Úmake_regression)ÚIsotonicRegressionÚ_make_uniqueÚcheck_increasingÚisotonic_regression)Úshuffle)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equal)Úcheck_arrayc            	      C   sh   t ƒ } g d¢}g d¢}g d¢}t|||dd�\}}}| j|||d�}| j|||d� |¡}t||ƒ d S )N©é   é   é   é   é   é   é   ©r   é)   é3   r   r   r   é   r   )Úrandom_state©Úsample_weight)r   r   Úfit_transformÚfitÚ	transformr   )	ÚirÚxÚyr   Zx_sZy_sZsample_weight_sZy_transformedZy_transformed_s© r"   úAE:\soccer\ml_env\Lib\site-packages\sklearn/tests/test_isotonic.pyÚtest_permutation_invariance   s    r$   c                  C   sZ   g d¢} g d¢}t  ¡ �& t  dt¡ t| |ƒ}W d   ƒ n1 sD0    Y  |sVJ ‚d S )N©r   r   r   )r   gš™™™™™ñ?gÍÌÌÌÌÌð?Úerror©ÚwarningsÚcatch_warningsÚsimplefilterÚUserWarningr   ©r    r!   Úis_increasingr"   r"   r#   Ú-test_check_increasing_small_number_of_samples(   s    
(r.   c                  C   sZ   g d¢} g d¢}t  ¡ �& t  dt¡ t| |ƒ}W d   ƒ n1 sD0    Y  |sVJ ‚d S )N©r   r   r   r   r   r   )r   ç      ø?g)\�Âõ(@ç{®Gáú!@r1   é2   r&   r'   r,   r"   r"   r#   Útest_check_increasing_up3   s    
(r3   c                  C   sZ   g d¢} g d¢}t  ¡ �& t  dt¡ t| |ƒ}W d   ƒ n1 sD0    Y  |sVJ ‚d S )Nr/   r&   r'   r,   r"   r"   r#   Ú test_check_increasing_up_extreme?   s    
(r4   c                  C   sZ   g d¢} g d¢}t  ¡ �& t  dt¡ t| |ƒ}W d   ƒ n1 sD0    Y  |rVJ ‚d S )Nr/   )r   g      ø¿g)\�Âõ(Àç{®Gáú!Àr5   éÎÿÿÿr&   r'   r,   r"   r"   r#   Útest_check_increasing_downK   s    
(r7   c                  C   sZ   g d¢} g d¢}t  ¡ �& t  dt¡ t| |ƒ}W d   ƒ n1 sD0    Y  |rVJ ‚d S )Nr/   )r   éÿÿÿÿéþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿr&   r'   r,   r"   r"   r#   Ú"test_check_increasing_down_extremeW   s    
(r=   c                  C   sX   g d¢} g d¢}d}t jt|d�� t| |ƒ}W d   ƒ n1 sB0    Y  |rTJ ‚d S )Nr/   )r   r8   r   r:   r   r<   Úinterval©Úmatch)ÚpytestZwarnsr+   r   )r    r!   Úmsgr-   r"   r"   r#   Útest_check_ci_warnc   s    (rC   c                  C   s<  t  g d¢¡} t  g d¢¡}t|t| ƒƒ t  g d¢¡} t  g d¢¡}t|t| ƒƒ t  t| ƒ¡}tddd�}| || ¡ t| || ¡ |¡| 	|| ¡ƒ t| |¡| 
|¡ƒ t j t| ƒ¡}tddd�}t| 	|| | | ¡| 	|| ¡| ƒ t| || ¡| |¡| ƒ tƒ }t| 	t  t|ƒ¡| ¡t  | ¡ƒ d S )N©r   r   r   é	   é   r   é
   )r   r   r   rF   rF   rF   rG   )rG   r   r   )r   r   r   ç        ç      ð?©Úy_minÚy_max)ÚnpÚarrayr   r   ÚarangeÚlenr   r   r   r   ÚpredictÚrandomZpermutationÚonesÚmean)r!   Úy_r    r   Úpermr"   r"   r#   Útest_isotonic_regressiono   s"     &rW   c                  C   s`   g d¢} g d¢}g d¢}t ƒ }| | |¡ t| | |¡ | ¡| | |¡ƒ t|| | |¡ƒ d S )N)r   r   r   r   r   r   ©r   r   r   r   r   r   )r0   r0   r   r   r   r   ©r   r   r   r   r   ©r    r!   Zy_truer   r"   r"   r#   Ú!test_isotonic_regression_ties_min‰   s     r[   c                  C   s`   g d¢} g d¢}g d¢}t ƒ }| | |¡ t| | |¡ | ¡| | |¡ƒ t|| | |¡ƒ d S )N)r   r   r   r   r   r   rX   )r   r   r   r   ç      @r\   rY   rZ   r"   r"   r#   Ú!test_isotonic_regression_ties_max–   s     r]   c                  C   sT   g d¢} g d¢}g d¢}t ƒ }| | |¡ t| | ¡|dƒ t| | |¡|dƒ dS )aw  
    Test isotonic regression fit, transform  and fit_transform
    against the "secondary" ties method and "pituitary" data from R
     "isotone" package, as detailed in: J. d. Leeuw, K. Hornik, P. Mair,
     Isotone Optimization in R: Pool-Adjacent-Violators Algorithm
    (PAVA) and Active Set Methods

    Set values based on pituitary example and
     the following R command detailed in the paper above:
    > library("isotone")
    > data("pituitary")
    > res1 <- gpava(pituitary$age, pituitary$size, ties="secondary")
    > res1$x

    `isotone` version: 1.0-2, 2014-09-07
    R version: R version 3.1.1 (2014-07-10)
    )rF   rF   rF   rG   rG   rG   é   r^   r^   é   r_   )é   ç     €7@é   r   r`   é   g     €5@é   é   ra   rc   )çb„ðhã86@rf   rf   rf   rf   rf   rf   rf   rf   ç     @8@rg   r   N)r   r   r
   r   r   rZ   r"   r"   r#   Ú(test_isotonic_regression_ties_secondary_£   s    rh   c                  C   sb   t  g d¢¡} t  g d¢¡}t  g d¢¡}tƒ }| | |¡ t| | ¡|ƒ t| | |¡|ƒ dS )ax  
    Non-regression test to handle issue 9432:
    https://github.com/scikit-learn/scikit-learn/issues/9432

    Compare against output in R:
    > library("isotone")
    > x <- c(0, 1, 1, 2, 3, 4)
    > y <- c(0, 0, 1, 0, 0, 1)
    > res1 <- gpava(x, y, ties="secondary")
    > res1$x

    `isotone` version: 1.1-0, 2015-07-24
    R version: R version 3.3.2 (2016-10-31)
    )r   r   r   r   r   r   )r   r   r   r   r   r   )rH   ç      Ð?ri   ri   ri   rI   N)rM   rN   r   r   r
   r   r   rZ   r"   r"   r#   Ú>test_isotonic_regression_with_ties_in_differently_sized_groupsÌ   s    rj   c                  C   sŽ   t  g d¢¡} t  g d¢¡}t| dd�}t||ƒ tdd� t  t| ƒ¡| ¡}t||ƒ tt  	|d d… j
¡|d d… |dd …  dkƒ d S )N©rG   rE   rG   r   r   çffffff@r   )rG   ç      #@rm   r   ç333333@rn   r   F©Ú
increasingr8   r   r   )rM   rN   r   r	   r   r   rO   rP   r   rS   Úshape)r!   Úy_resultZy_isorU   r"   r"   r#   Ú!test_isotonic_regression_reversedä   s    

rs   c                  C   sš   t  g d¢¡} t  t| ƒ¡}tdd�}tjdd��<}t d¡ | || ¡}t	dd„ |D ƒƒs`J ‚W d   ƒ n1 st0    Y  |d	 |d
 k }|r–J ‚d S )Nrk   Úautoro   T©ÚrecordÚalwaysc                 S   s   g | ]}d t |jƒv ‘qS ©zinvalid value encountered in ©ÚstrÚmessage©Ú.0Úwarnr"   r"   r#   Ú
<listcomp>û   ó    z<test_isotonic_regression_auto_decreasing.<locals>.<listcomp>r   r8   ©
rM   rN   rO   rP   r   r(   r)   r*   r   Úall©r!   r    r   ÚwrU   r-   r"   r"   r#   Ú(test_isotonic_regression_auto_decreasingð   s    

4r…   c                  C   sš   t  g d¢¡} t  t| ƒ¡}tdd�}tjdd��<}t d¡ | || ¡}t	dd„ |D ƒƒs`J ‚W d   ƒ n1 st0    Y  |d	 |d
 k }|s–J ‚d S )N)r   rl   r   r   rG   rE   rG   rt   ro   Tru   rw   c                 S   s   g | ]}d t |jƒv ‘qS rx   ry   r|   r"   r"   r#   r     r€   z<test_isotonic_regression_auto_increasing.<locals>.<listcomp>r   r8   r�   rƒ   r"   r"   r#   Ú(test_isotonic_regression_auto_increasing  s    

4r†   c                  C   s4  t ƒ } tj d¡}d}tjt|d��* |  g d¢g d¢ddg¡ W d   ƒ n1 sT0    Y  tjt|d��$ |  g d¢dd	g¡ W d   ƒ n1 s–0    Y  d
}tjt|d��( |  | dd¡g d¢¡ W d   ƒ n1 sà0    Y  d}tjt|d��" |  	| dd¡¡ W d   ƒ n1 �s&0    Y  d S )Né*   z:Found input variables with inconsistent numbers of samplesr?   r%   )r   r   r   çš™™™™™¹?g333333ã?r   r   zX should be a 1d arrayr   rG   z0Isotonic regression input X should be a 1d array)
r   rM   rR   ÚRandomStaterA   ÚraisesÚ
ValueErrorr   Zrandnr   )r   ÚrngrB   r"   r"   r#   Útest_assert_raises_exceptions  s    826r�   c                  C   s~   t ƒ } tj d¡}d}t |¡}|jdd|fd�dt dt |¡ ¡  }t |¡}| j|||d�}|  ||¡}t	||ƒ d S )	Nr‡   éd   r6   r2   ©Úsizeg      I@r   r   )
r   rM   rR   r‰   rO   ÚrandintÚlogrS   r   r   )r   rŒ   Únr    r!   ÚweightsZy_set_valueZy_default_valuer"   r"   r#   Ú3test_isotonic_sample_weight_parameter_default_value(  s    
*
r•   c                  C   sL   t ddd�} d}t |¡}t |¡}g d¢}t |  ||¡¡}t||ƒ d S )Nr   r   rJ   r   )r   r   r   r   r   r   )r   rM   rO   Úroundr   r   )r   r“   r    r!   Zy_testrr   r"   r"   r#   Ú test_isotonic_min_max_boundaries8  s    

r—   c                  C   sD   t ƒ } g d¢}g d¢}g d¢}g d¢}| j|||d�}t||ƒ d S )Nr   r   )r   çfffffæ+@r˜   r˜   r˜   r˜   r   r   )r   r   r   )r   r    r!   r   Z
expected_yZ
received_yr"   r"   r#   Útest_isotonic_sample_weightC  s    r™   c                  C   sˆ   t  g d¢¡} t  t| ƒ¡}tddd�}| || ¡ d}tjt|d��. | 	t
|ƒd t|ƒd g¡ W d   ƒ n1 sz0    Y  d S )NrD   rt   Úraise©rp   Úout_of_boundsz)in x_new is below the interpolation ranger?   rG   )rM   rN   rO   rP   r   r   rA   rŠ   r‹   rQ   ÚminÚmax)r!   r    r   rB   r"   r"   r#   Ú"test_isotonic_regression_oob_raiseN  s    rŸ   c                  C   sˆ   t  g d¢¡} t  t| ƒ¡}tddd�}| || ¡ | t|ƒd t|ƒd g¡}| |¡}t|ƒt|ƒkspJ ‚t|ƒt|ƒks„J ‚d S )NrD   rt   Úclipr›   rG   )	rM   rN   rO   rP   r   r   rQ   r�   rž   )r!   r    r   Úy1Úy2r"   r"   r#   Ú!test_isotonic_regression_oob_clip]  s    
r£   c                  C   sl   t  g d¢¡} t  t| ƒ¡}tddd�}| || ¡ | t|ƒd t|ƒd g¡}t	t  
|¡ƒdkshJ ‚d S )NrD   rt   Únanr›   rG   r   )rM   rN   rO   rP   r   r   rQ   r�   rž   ÚsumÚisnan)r!   r    r   r¡   r"   r"   r#   Ú test_isotonic_regression_oob_nanm  s    r§   c                  C   sj   t  g d¢¡} t  t| ƒ¡}tddd�}| || ¡ t |tj¡}t 	|¡}t j
 | |¡| |¡¡ d S )NrD   rt   r    r›   )rM   rN   rO   rP   r   r   ÚpickleÚdumpsÚHIGHEST_PROTOCOLÚloadsZtestingr   rQ   )r!   r    r   Zir_serZir2r"   r"   r#   Útest_isotonic_regression_pickle{  s    
r¬   c                  C   sJ   g d¢} g d¢}t ddd�}| | |¡ t t | | ¡¡¡}|sFJ ‚d S )N)r   r   r   Tr    r›   )r   r   rM   r‚   ÚisfiniterQ   )r    r!   r   Zall_predictions_finiter"   r"   r#   Ú!test_isotonic_duplicate_min_entryˆ  s    r®   c                  C   s˜   t  g d¢¡} t| ddd�}t  |dk¡s.J ‚t  |dk¡s@J ‚t| dddd�}t  |dk¡sbJ ‚t  |dk¡stJ ‚t| ddd�}t  |dk¡s”J ‚d S )	N)gh‘í|?5ô?gJ+‡õ?gçû©ñÒMâ¿gÙÎ÷Sã¥Ó?g9´Èv¾Ÿæ¿gºI+‡Æ¿g/Ý$�•ù¿g‹lçû©ñð?g¼t“Vö?gåÐ"Ûù~þ?gáz®GáÊ?gyé&1¬œ?g#Ûù~j¼´¿gÑ"Ûù~jÜ?g;ßO�—n’?çTã¥›Ä Ø¿gyé&1¬ì¿r¯   g¬Zd;õ¿g
×£p=
Ç?rH   rˆ   rJ   r   F)rK   rL   rp   )rK   rp   )rM   rN   r   r‚   )r    r!   r"   r"   r#   Útest_isotonic_ymin_ymax’  s    ÿr°   c                  C   sp   t j d¡} tƒ }d}t  dd|¡}|| j|d� }| j|d�}d|dd…< |j|||d	� |j|||d	� d S )
Nr‡   r2   r:   r   r�   r   r   rF   r   )rM   rR   r‰   r   ZlinspaceÚuniformr   )rŒ   Z
regressionÚ	n_samplesr    r!   r„   r"   r"   r#   Útest_isotonic_zero_weight_loop¾  s    r³   c                  C   sâ   t j d¡} d}d|  |¡ d }t  |  |¡t|ƒ¡ d¡ d¡}|  |¡}d||  |¡dk < tdd	d
d�}tdd	d
d�}|j|||dd�\}}| 	||¡ |j
|||d� d|  |¡ d }	| |	¡}
| |	¡}t|
|ƒ d S )Né{   iè  g      4@rG   Úint64Úfloat64r   rˆ   r   r    )rK   rL   rœ   F)r   Ztrim_duplicatesr   )rM   rR   r‰   ZrandÚlessr   Úastyper   Z_build_yZ_build_fr   rQ   r   )rŒ   r²   ZX_trainZy_trainr”   Z
slow_modelZ
fast_modelZX_train_fitZy_train_fitZX_testZy_pred_slowZy_pred_fastr"   r"   r#   Útest_fast_predictÔ  s$     ÿ
ÿ


r¹   c                  C   s   t ƒ } t | ¡ d S )N)r   Úcopy)r   r"   r"   r#   Útest_isotonic_copy_before_fitù  s    r»   Údtypec           	      C   sº   g d¢}t jg d¢t jd�}tƒ }d | t j¡|fD ]€}t j|| d�}t|t jt jgdd�j}t||d�}|j|ksxJ ‚t  	t
|ƒ¡ | ¡}|j|||d� | |¡}|j|ks4J ‚q4d S )N©r   r   r   r   r   )çÍÌÌÌÌÌì?r¾   r¾   r¾   r¾   ©r¼   F)r¼   Z	ensure_2dr   )rM   rN   r¶   r   r¸   Úfloat32r   r¼   r   rO   rP   r   rQ   )	r¼   r!   r”   Úregr   Zy_npZexpected_dtypeÚresÚXr"   r"   r#   Útest_isotonic_dtypeÿ  s    ÿ
rÄ   Úy_dtypec                 C   sR   t ƒ }tjg d¢| d�}tjt|ƒtjd�}| ||¡ | |¡j|jksNJ ‚d S )Nr½   r¿   )	r   rM   rN   rO   rP   rÀ   r   rQ   r¼   )rÅ   rÁ   r!   rÃ   r"   r"   r#   Útest_isotonic_mismatched_dtype  s
    rÆ   c                  C   s^   g d¢} t jt jfD ]D}t j| |d�}| ¡ }t  |¡}t|||ƒ\}}}t|g d¢ƒ qd S )N)r   r   r   r   r   r¿   )r   r   r   )rM   rÀ   r¶   rN   rº   Ú	ones_liker   r   )Zx_listr¼   r    r!   r„   r"   r"   r#   Útest_make_unique_dtype  s    
rÈ   c                 C   sl   t jg d¢| d�}| ¡ }t  |¡}t|||ƒ\}}}| t jkrPt  g d¢¡}nt  ddg¡}t||ƒ d S )N)r   g¼‰Ø—²Òœ<r   ç-     ð?r¿   )r   r   rÉ   r   r   )rM   rN   rº   rÇ   r   r¶   r   )r¼   r    r!   r„   Zx_outr"   r"   r#   Útest_make_unique_tolerance)  s    

rÊ   c                  C   sˆ   t jg d¢t jd�} t jg d¢t jd�}tƒ  | |¡}| g d¢¡}t|t  g d¢¡ƒ t|jt  g d¢¡ƒ t|jt  g d¢¡ƒ d S )N)r   r   rI   r   r¿   )r   r   r   r   )r   g      à?r   r0   r   )r   g      è?r0   g      @r   )rH   rI   g       @)rH   r0   g      @)	rM   rN   r¶   r   r   rQ   r   ÚX_thresholds_Úy_thresholds_©rÃ   r!   ÚiregÚy_predr"   r"   r#   Ú#test_isotonic_make_unique_tolerance7  s    rÐ   c                  C   sV   t  g d¢¡} t  g d¢¡}tƒ  | |¡}| t  g d¢¡¡}t  t  |¡¡sRJ ‚d S )N)rH   gj       gJ/Ò   rI   )çáz®GáÚ?rÑ   ç)\�Âõ(Ü?rÒ   )r   g¦      gA¾ƒ    g»½×Ùß|Û=)rM   rN   r   r   rQ   r‚   r­   rÍ   r"   r"   r#   Ú&test_isotonic_non_regression_inf_slopeD  s
    rÓ   rp   TFc                 C   sø   t j d¡}d}|j|d�}|j|d�}t| d� ||¡}|j|j }}|j|jksXJ ‚|jd |jd k spJ ‚t  	||¡ 
¡ s„J ‚| ¡ | ¡ ks˜J ‚| ¡ | ¡ ks¬J ‚t
t  |¡dkƒsÂJ ‚| rÞt
t  |¡dkƒsôJ ‚nt
t  |¡dkƒsôJ ‚d S )Nr‡   é   r�   ro   r   )rM   rR   r‰   Únormalr   r   rË   rÌ   rq   Úisinr‚   rž   r�   Údiff)rp   rŒ   r²   rÃ   r!   rÎ   ZX_thresholdsZy_thresholdsr"   r"   r#   Útest_isotonic_thresholdsN  s    rØ   c                  C   sº   t  d¡} |  dd¡}t  d¡}tƒ  | |¡}tƒ  ||¡}|j|jksLJ ‚|j|jks\J ‚|j|jkslJ ‚|j|jks|J ‚t	|j
|j
ƒ t	|j|jƒ | | ¡}| |¡}t||ƒ d S )NrG   r8   r   )rM   rO   Úreshaper   r   ZX_max_ZX_min_rL   rK   r   rË   rÌ   rQ   r	   )rÃ   ÚX_2dr!   Úiso_regZ
iso_reg_2dZy_pred1Zy_pred2r"   r"   r#   Útest_input_shape_validationi  s    



rÜ   c                  C   sä   t  d¡} t j| | f }t  d¡}d}tjt|d�� tƒ  ||¡ W d   ƒ n1 sX0    Y  tƒ  | |¡}tjt|d�� | |¡ W d   ƒ n1 sž0    Y  tjt|d�� | 	|¡ W d   ƒ n1 sÖ0    Y  d S )NrG   z/should be a 1d array or 2d array with 1 featurer?   )
rM   rO   Zc_rA   rŠ   r‹   r   r   rQ   r   )rÃ   rÚ   r!   rB   rÛ   r"   r"   r#   Ú)test_isotonic_2darray_more_than_1_feature  s    

,(rÝ   c                  C   sb   t dddd�\} }t |¡}d|d< | ¡ }t||d� t||ƒ tƒ j| ||d� t||ƒ dS )zÂCheck that calling fitting function of isotonic regression will not
    overwrite `sample_weight`.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20508
    rG   r   r   ©r²   Z
n_featuresr   r   r   N)r   rM   rÇ   rº   r   r	   r   r   )rÃ   r!   Zsample_weight_originalZsample_weight_fitr"   r"   r#   Ú6test_isotonic_regression_sample_weight_not_overwritten‘  s    

rß   rq   Z1dÚ2dc                 C   sl   t  d¡}| dkr| dd¡}t  d¡}tƒ  ||¡}| ¡ }t|t jƒsNJ ‚|jt	ks\J ‚t
dg|ƒ dS )z7Check `get_feature_names_out` for `IsotonicRegression`.rG   rà   r8   r   Zisotonicregression0N)rM   rO   rÙ   r   r   Zget_feature_names_outÚ
isinstanceÚndarrayr¼   Úobjectr   )rq   rÃ   r!   ZisoÚnamesr"   r"   r#   Útest_get_feature_names_out£  s    

rå   c                  C   s’   t  d¡} tdddd�\}}tƒ }tjdd��0 | ||¡ | |¡}| |¡}W d  ƒ n1 sd0    Y  t	|| j
ƒs~J ‚t	|tjƒsŽJ ‚dS )a  Check that `predict` does return the expected output type.

    We need to check that `transform` will output a DataFrame and a NumPy array
    when we set `transform_output` to `pandas`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/25499
    ZpandasrG   r   r‡   rÞ   )Ztransform_outputN)rA   Zimportorskipr   r   ÚsklearnZconfig_contextr   r   rQ   rá   Z	DataFramerM   râ   )ÚpdrÃ   r!   Z	regressorZX_transrÏ   r"   r"   r#   Ú'test_isotonic_regression_output_predict²  s    	

(rè   )Frº   r¨   r(   ÚnumpyrM   rA   Zscipy.specialr   ræ   Zsklearn.datasetsr   Zsklearn.isotonicr   r   r   r   Zsklearn.utilsr   Zsklearn.utils._testingr	   r
   r   Zsklearn.utils.validationr   r$   r.   r3   r4   r7   r=   rC   rW   r[   r]   rh   rj   rs   r…   r†   r�   r•   r—   r™   rŸ   r£   r§   r¬   r®   r°   r³   r¹   r»   ÚmarkZparametrizeZint32rµ   rÀ   r¶   rÄ   rÆ   rÈ   rÊ   rÐ   rÓ   rØ   rÜ   rÝ   rß   rå   rè   r"   r"   r"   r#   Ú<module>   sp   )
,%







