U
    ^»{jKa  ã                   @   sn  d Z ddlZddlZddlZddlmZmZmZm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZmZ ddl m!Z!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+ ej, -d¡Z.ddgddgddgddgddgddggZ/ddddddgZ0ddddddgZ1ddgddgddggZ2dddgZ3dddgZ4e 5¡ Z6e. 7e6j8j9¡Z:e$e6j;e6j8e.d�\e6_;e6_8e <¡ Z=e$e=j;e=j8e.d�\e=_;e=_8dd„ Z>dd„ Z?ej@ Adddg¡dd„ ƒZBd d!„ ZCd"d#„ ZDej@ Ad$d%d&d'g¡d(d)„ ƒZEej@ Adddg¡d*d+„ ƒZFd,d-„ ZGd.d/„ ZHd0d1„ ZId2d3„ ZJd4d5„ ZKd6d7„ ZLd8d9„ ZMd:d;„ ZNd<d=„ ZOd>d?„ ZPej@ Adddg¡d@dA„ ƒZQdBdC„ ZRej@ Adddg¡dDdE„ ƒZSej@ AdFeƒ e6j;e6j8feƒ e=j;e=j8fg¡dGdH„ ƒZTdIdJ„ ZUej@ AdKee!fee"fg¡dLdM„ ƒZVej@ AdNeeg¡dOdP„ ƒZWej@ AdNeeg¡dQdR„ ƒZXdSdT„ ZYej@ Adddg¡dUdV„ ƒZZdS )Wz6Testing for the boost module (sklearn.ensemble.boost).é    N)Ú
coo_matrixÚ
csc_matrixÚ
csr_matrixÚ
dok_matrixÚ
lil_matrix)Údatasets)ÚBaseEstimatorÚclone)ÚDummyClassifierÚDummyRegressor)ÚAdaBoostClassifierÚAdaBoostRegressor)Ú_samme_proba)ÚLinearRegression)ÚGridSearchCVÚtrain_test_split)ÚSVCÚSVR)ÚDecisionTreeClassifierÚDecisionTreeRegressor)Úshuffle)ÚNoSampleWeightWrapper)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equalÚassert_array_lesséþÿÿÿéÿÿÿÿé   é   Úfooé   ©Úrandom_statec                     sÔ   t  dddgdddgddd	gddd
gg¡‰ ˆ t  ˆ jdd�¡d d …t jf  ‰ G ‡ fdd„dƒ} | ƒ }t|dt  ˆ ¡ƒ}t|jˆ jƒ t  	|¡ 
¡ s˜t‚tt j|dd�ddddgƒ tt j|dd�ddddgƒ d S )Nr   g�íµ ÷Æ°>r   gR¸…ëQÈ?g333333ã?çš™™™™™É?iüÿÿgR¸…ëQà?g      à?g•Ö&è.>©Zaxisc                       s   e Zd Z‡ fdd„ZdS )z'test_samme_proba.<locals>.MockEstimatorc                    s   t |jˆ jƒ ˆ S ©N)r   Úshape©ÚselfÚX©Zprobs© új/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyÚpredict_proba>   s    z5test_samme_proba.<locals>.MockEstimator.predict_probaN)Ú__name__Ú
__module__Ú__qualname__r.   r,   r+   r,   r-   ÚMockEstimator=   s   r2   r!   r   )ÚnpÚarrayÚabsÚsumÚnewaxisr   Ú	ones_liker   r'   ÚisfiniteÚallÚAssertionErrorZargminÚargmax)r2   ZmockZsamme_probar,   r+   r-   Útest_samme_proba2   s    "ÿ$r=   c                  C   s>   t  ttƒ¡} tƒ  t| ¡}t| t¡t  ttƒdf¡ƒ d S )Nr   )r3   ZonesÚlenr*   r   Úfitr   r.   )Zy_tÚclfr,   r,   r-   Útest_oneclass_adaboost_probaO   s    rA   Ú	algorithmÚSAMMEúSAMME.Rc                 C   sz   t | dd�}| tt¡ t| t¡tƒ tt 	t 
t¡¡|jƒ | t¡jttƒdfks\t‚| t¡jttƒfksvt‚d S )Nr   ©rB   r#   r   )r   r?   r*   Úy_classr   ÚpredictÚTÚ	y_t_classr3   ÚuniqueÚasarrayÚclasses_r.   r'   r>   r;   Údecision_function)rB   r@   r,   r,   r-   Útest_classification_toyX   s    rN   c                  C   s*   t dd�} |  tt¡ t|  t¡tƒ d S )Nr   r"   )r   r?   r*   Úy_regrr   rG   rH   Úy_t_regr©r@   r,   r,   r-   Útest_regression_toyc   s    
rR   c                  C   s  t  tj¡} d  }}dD ]Ú}t|d�}| tjtj¡ t| |jƒ | 	tj¡}|dkr^|}|}|j
d t| ƒkstt‚| tj¡j
d t| ƒks’t‚| tjtj¡}|dksºtd||f ƒ‚t|jƒdksÌt‚ttdd„ |jD ƒƒƒt|jƒkst‚qd	|_td
t  | 	tj¡| ¡ƒ d S )N©rC   rD   ©rB   rC   r   gÍÌÌÌÌÌì?z'Failed with algorithm %s and score = %fc                 s   s   | ]}|j V  qd S r&   r"   ©Ú.0Zestr,   r,   r-   Ú	<genexpr>�   s     ztest_iris.<locals>.<genexpr>rD   r   )r3   rJ   ÚirisÚtargetr   r?   Údatar   rL   r.   r'   r>   r;   rM   ÚscoreÚestimators_ÚsetrB   r   r5   )ÚclassesZ	clf_sammeZ
prob_sammeÚalgr@   Úprobar[   r,   r,   r-   Ú	test_irisj   s(    
ÿra   ÚlossZlinearZsquareZexponentialc                 C   st   t | dd�}| tjtj¡ | tjtj¡}|dks8t‚t|jƒdksJt‚tt	dd„ |jD ƒƒƒt|jƒkspt‚d S )Nr   )rb   r#   gš™™™™™á?r   c                 s   s   | ]}|j V  qd S r&   r"   rU   r,   r,   r-   rW   —   s     z test_diabetes.<locals>.<genexpr>)
r   r?   ÚdiabetesrZ   rY   r[   r;   r>   r\   r]   )rb   Úregr[   r,   r,   r-   Útest_diabetesŒ   s    re   c                 C   sÚ  t j d¡}|jdtjjd�}|jdtjjd�}t| dd�}|j	tj
tj|d� | tj
¡}dd„ | tj
¡D ƒ}| tj
¡}dd„ | tj
¡D ƒ}|jtj
tj|d�}	d	d„ |jtj
tj|d�D ƒ}
t|ƒdksÖt‚t||d
 ƒ t|ƒdksôt‚t||d
 ƒ t|
ƒdk�st‚t|	|
d
 ƒ tddd�}|j	tj
tj|d� | tj
¡}dd„ | tj
¡D ƒ}|jtj
tj|d�}	dd„ |jtj
tj|d�D ƒ}
t|ƒdk�s¨t‚t||d
 ƒ t|
ƒdk�sÈt‚t|	|
d
 ƒ d S )Nr   é
   ©Úsize)rB   Ún_estimators©Úsample_weightc                 S   s   g | ]}|‘qS r,   r,   ©rV   Úpr,   r,   r-   Ú
<listcomp>¥   s     z'test_staged_predict.<locals>.<listcomp>c                 S   s   g | ]}|‘qS r,   r,   rl   r,   r,   r-   rn   §   s     c                 S   s   g | ]}|‘qS r,   r,   ©rV   Úsr,   r,   r-   rn   ©   s    r   )ri   r#   c                 S   s   g | ]}|‘qS r,   r,   rl   r,   r,   r-   rn   ¹   s     c                 S   s   g | ]}|‘qS r,   r,   ro   r,   r,   r-   rn   »   s   ÿ)r3   ÚrandomÚRandomStateÚrandintrX   rY   r'   rc   r   r?   rZ   rG   Ústaged_predictr.   Ústaged_predict_probar[   Ústaged_scorer>   r;   r   r   )rB   ÚrngZiris_weightsZdiabetes_weightsr@   ZpredictionsZstaged_predictionsr`   Zstaged_probasr[   Zstaged_scoresr,   r,   r-   Útest_staged_predictš   sF    ÿ  ÿþrx   c                  C   sh   t tƒ d�} ddddœ}t| |ƒ}| tjtj¡ ttƒ dd�} dddœ}t| |ƒ}| t	jt	j¡ d S )N)Ú	estimator)r   r   rS   )ri   Úestimator__max_depthrB   r   ©ry   r#   )ri   rz   )
r   r   r   r?   rX   rZ   rY   r   r   rc   )ÚboostÚ
parametersr@   r,   r,   r-   Útest_gridsearchÈ   s    ý


r~   c                  C   sî   dd l } dD ]p}t|d�}| tjtj¡ | tjtj¡}|  |¡}|  |¡}t	|ƒ|j
ks`t‚| tjtj¡}||kst‚qtdd�}| tjtj¡ | tjtj¡}|  |¡}|  |¡}t	|ƒ|j
ksÎt‚| tjtj¡}||ksêt‚d S )Nr   rS   rT   r"   )Úpickler   r?   rX   rZ   rY   r[   ÚdumpsÚloadsÚtypeÚ	__class__r;   r   rc   )r   r_   Úobjr[   rp   Úobj2Zscore2r,   r,   r-   Útest_pickleÛ   s$    





r†   c               	   C   s~   t jdddddddd�\} }dD ]X}t|d	�}| | |¡ |j}|jd dksRt‚|d d…tjf |dd … k 	¡ s t‚q d S )
NiÐ  rf   r!   r   Fr   )Ú	n_samplesÚ
n_featuresZn_informativeZn_redundantZ
n_repeatedr   r#   rS   rT   )
r   Úmake_classificationr   r?   Úfeature_importances_r'   r;   r3   r7   r:   )r*   Úyr_   r@   Zimportancesr,   r,   r-   Útest_importances÷   s    ù


rŒ   c               	   C   sF   t ƒ } t d¡}tjt|d�� | jttt	 
dg¡d� W 5 Q R X d S )Nz*sample_weight.shape == (1,), expected (6,)©Úmatchr   rj   )r   ÚreÚescapeÚpytestÚraisesÚ
ValueErrorr?   r*   rF   r3   rK   )r@   Úmsgr,   r,   r-   Ú,test_adaboost_classifier_sample_weight_error  s    
r•   c               	   C   sÜ   ddl m}  t| ƒ ƒ}| tt¡ ttƒ dd�}| tt¡ ddl m} t	|ƒ dd�}| tt¡ t	t
ƒ dd�}| tt¡ ddgddgddgddgg}dd	dd
g}ttƒ dd�}tjtdd�� | ||¡ W 5 Q R X d S )Nr   )ÚRandomForestClassifierrC   rT   )ÚRandomForestRegressorr"   r   r    Úbarr   zworse than randomr�   )Úsklearn.ensembler–   r   r?   r*   rO   r   rF   r—   r   r   r‘   r’   r“   )r–   r@   r—   ZX_failZy_failr,   r,   r-   Útest_estimator  s    
rš   c               	   C   s@   d} t dddd�}tjt| d�� | tjtj¡ W 5 Q R X d S )Nz+Sample weights have reached infinite valuesé   g      7@rC   )ri   Zlearning_raterB   r�   )r   r‘   ÚwarnsÚUserWarningr?   rX   rZ   rY   )r”   r@   r,   r,   r-   Útest_sample_weights_infinite1  s    rž   c                  C   s<  G dd„ dt ƒ} tjddddd�\}}t |¡}t||dd	�\}}}}tttt	t
fD �]à}||ƒ}||ƒ}	t| d
d�ddd� ||¡}
t| d
d�ddd� ||¡}|
 |	¡}| |¡}t||ƒ |
 |	¡}| |¡}t||ƒ |
 |	¡}| |¡}t||ƒ |
 |	¡}| |¡}t||ƒ |
 |	|¡}| ||¡}t||ƒ |
 |	¡}| |¡}t||ƒD ]\}}t||ƒ �qZ|
 |	¡}| |¡}t||ƒD ]\}}t||ƒ �qŽ|
 |	¡}| |¡}t||ƒD ]\}}t||ƒ �qÂ|
 |	|¡}| ||¡}t||ƒD ]\}}t||ƒ �qúdd„ |
jD ƒ}tdd„ |D ƒƒsTt‚qTd S )Nc                       s"   e Zd ZdZd‡ fdd„	Z‡  ZS )z-test_sparse_classification.<locals>.CustomSVCz8SVC variant that records the nature of the training set.Nc                    s    t ƒ j|||d� t|ƒ| _| S ©z<Modification on fit caries data type for later verification.rj   ©Úsuperr?   r‚   Ú
data_type_©r)   r*   r‹   rk   ©rƒ   r,   r-   r?   >  s    
z1test_sparse_classification.<locals>.CustomSVC.fit)N©r/   r0   r1   Ú__doc__r?   Ú__classcell__r,   r,   r¤   r-   Ú	CustomSVC;  s   r¨   r   é   é   é*   )Ú	n_classesr‡   rˆ   r#   r   r"   T)ZprobabilityrC   )ry   r#   rB   c                 S   s   g | ]
}|j ‘qS r,   ©r¢   ©rV   Úir,   r,   r-   rn   �  s     z.test_sparse_classification.<locals>.<listcomp>c                 S   s   g | ]}|t kp|tk‘qS r,   ©r   r   ©rV   Útr,   r,   r-   rn   ’  s     )r   r   Zmake_multilabel_classificationr3   Zravelr   r   r   r   r   r   r   r?   rG   r   rM   r   Zpredict_log_probar.   r[   Ústaged_decision_functionÚziprt   ru   rv   r\   r:   r;   )r¨   r*   r‹   ÚX_trainÚX_testÚy_trainÚy_testÚsparse_formatÚX_train_sparseÚX_test_sparseÚsparse_classifierÚdense_classifierÚsparse_resultsÚdense_resultsÚ
sprase_resÚ	dense_resÚtypesr,   r,   r-   Útest_sparse_classification8  sz    	   ÿ

ý üý ü


















rÃ   c                  C   s
  G dd„ dt ƒ} tjddddd�\}}t||dd	�\}}}}tttttfD ]º}||ƒ}||ƒ}	t	| ƒ dd
� 
||¡}
t	| ƒ dd
� 
||¡ }}|
 |	¡}| |¡}t||ƒ |
 |	¡}| |¡}t||ƒD ]\}}t||ƒ qÊdd„ |
jD ƒ}tdd„ |D ƒƒsJt‚qJd S )Nc                       s"   e Zd ZdZd‡ fdd„	Z‡  ZS )z)test_sparse_regression.<locals>.CustomSVRz8SVR variant that records the nature of the training set.Nc                    s    t ƒ j|||d� t|ƒ| _| S rŸ   r    r£   r¤   r,   r-   r?   ›  s    
z-test_sparse_regression.<locals>.CustomSVR.fit)Nr¥   r,   r,   r¤   r-   Ú	CustomSVR˜  s   rÄ   r©   é2   r   r«   )r‡   rˆ   Ú	n_targetsr#   r   r"   r{   c                 S   s   g | ]
}|j ‘qS r,   r­   r®   r,   r,   r-   rn   À  s     z*test_sparse_regression.<locals>.<listcomp>c                 S   s   g | ]}|t kp|tk‘qS r,   r°   r±   r,   r,   r-   rn   Â  s     )r   r   Zmake_regressionr   r   r   r   r   r   r   r?   rG   r   rt   r´   r\   r:   r;   )rÄ   r*   r‹   rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¿   r¾   rÀ   rÁ   rÂ   r,   r,   r-   Útest_sparse_regression•  sD    	   ÿ
 ÿ þ ÿ þ




rÇ   c                  C   sF   G dd„ dt ƒ} t| ƒ dd�}| tt¡ t|jƒt|jƒksBt‚dS )z·
    AdaBoostRegressor should work without sample_weights in the base estimator
    The random weighted sampling is done internally in the _boost method in
    AdaBoostRegressor.
    c                   @   s   e Zd Zdd„ Zdd„ ZdS )z=test_sample_weight_adaboost_regressor.<locals>.DummyEstimatorc                 S   s   d S r&   r,   )r)   r*   r‹   r,   r,   r-   r?   Í  s    zAtest_sample_weight_adaboost_regressor.<locals>.DummyEstimator.fitc                 S   s   t  |jd ¡S )Nr   )r3   Zzerosr'   r(   r,   r,   r-   rG   Ð  s    zEtest_sample_weight_adaboost_regressor.<locals>.DummyEstimator.predictN)r/   r0   r1   r?   rG   r,   r,   r,   r-   ÚDummyEstimatorÌ  s   rÈ   r!   ©ri   N)	r   r   r?   r*   rO   r>   Zestimator_weights_Zestimator_errors_r;   )rÈ   r|   r,   r,   r-   Ú%test_sample_weight_adaboost_regressorÅ  s    rÊ   c                  C   s†   t j d¡} |  ddd¡}|  ddgd¡}|  d¡}ttdd�ƒ}| ||¡ | |¡ | 	|¡ t
tƒ ƒ}| ||¡ | |¡ dS )zX
    Check that the AdaBoost estimators can work with n-dimensional
    data matrix
    r   é3   r!   r   Zmost_frequent)ZstrategyN)r3   rq   rr   ZrandnÚchoicer   r
   r?   rG   r.   r   r   )rw   r*   ZycÚyrr|   r,   r,   r-   Útest_multidimensional_XØ  s    



rÎ   c              	   C   s\   t jt j }}ttƒ ƒ}t|| d�}d |jj¡}t	j
t|d�� | ||¡ W 5 Q R X d S )N)ry   rB   z {} doesn't support sample_weightr�   )rX   rZ   rY   r   r
   r   Úformatrƒ   r/   r‘   r’   r“   r?   )rB   r*   r‹   ry   r@   Úerr_msgr,   r,   r-   Ú-test_adaboostclassifier_without_sample_weightí  s    
rÑ   c            
      C   sR  t j d¡} t jdddd�}d| d |  |jd ¡d  }| d	d
¡}|d	  d9  < d|d	< ttƒ d
dd�}t	|ƒ}t	|ƒ}| 
||¡ | 
|d d	… |d d	… ¡ t  |¡}d|d	< |j
|||d� | |d d	… |d d	… ¡}| |d d	… |d d	… ¡}| |d d	… |d d	… ¡}	||k �s,t‚||	k �s:t‚|t |	¡k�sNt‚d S )Nr«   r   éd   éè  )Únumgš™™™™™é?r$   g-Cëâ6?r   r   rf   i'  ©ry   ri   r#   rj   )r3   rq   rr   ZlinspaceZrandr'   Zreshaper   r   r	   r?   r8   r[   r;   r‘   Zapprox)
rw   r*   r‹   Zregr_no_outlierZregr_with_weightZregr_with_outlierrk   Zscore_with_outlierZscore_no_outlierZscore_with_weightr,   r,   r-   Ú$test_adaboostregressor_sample_weight÷  s0       ÿ
rÖ   c                 C   sZ   t tjdd�ddiŽ\}}}}t| dd�}| ||¡ ttj| |¡dd�| 	|¡ƒ d S )NT)Z
return_X_yr#   r«   rE   r   r%   )
r   r   Zload_digitsr   r?   r   r3   r<   r.   rG   )rB   rµ   r¶   r·   r¸   Úmodelr,   r,   r-   Ú test_adaboost_consistent_predict  s    
ÿÿ ÿrØ   zmodel, X, yc              	   C   sD   t  |¡}d|d< d}tjt|d�� | j|||d� W 5 Q R X d S )Niöÿÿÿr   z1Negative values in data passed to `sample_weight`r�   rj   )r3   r8   r‘   r’   r“   r?   )r×   r*   r‹   rk   rÐ   r,   r,   r-   Ú#test_adaboost_negative_weight_error-  s
    
rÙ   c                  C   s~   t j d¡} | jdd�}| jddgdd�}t  |¡d }tdd	d
�}t|dd	d�}|j|||d� t  	|j
¡ ¡ dkszt‚dS )z¸Check that we don't create NaN feature importance with numerically
    instable inputs.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20320
    r«   )rÓ   rf   rg   r   r   rÓ   gtDíS 'T	rf   é   )Ú	max_depthr#   é   rÕ   rj   N)r3   rq   rr   ÚnormalrÌ   r8   r   r   r?   ÚisnanrŠ   r6   r;   )rw   r*   r‹   rk   ÚtreeZ	ada_modelr,   r,   r-   ÚFtest_adaboost_numerically_stable_feature_importance_with_small_weights=  s    rà   zAdaBoost, Estimatorc              	   C   s^   t  ddgddgg¡}t  ddg¡}| |ƒ d�}d}tjt|d�� | ||¡ W 5 Q R X d S ©	Nr   r   r!   é   r   )Zbase_estimatorzV`base_estimator` was renamed to `estimator` in version 1.2 and will be removed in 1.4.r�   ©r3   r4   r‘   rœ   ÚFutureWarningr?   )ÚAdaBoostZ	Estimatorr*   r‹   r×   Úwarn_msgr,   r,   r-   Ú'test_base_estimator_argument_deprecatedO  s    ÿrç   rå   c              	   C   s\   t  ddgddgg¡}t  ddg¡}| d d�}d}tjt|d�� | ||¡ W 5 Q R X d S rá   rã   ©rå   r*   r‹   r×   ræ   r,   r,   r-   Ú,test_base_estimator_argument_deprecated_noned  s    
ÿré   c              	   C   s^   t  ddgddgg¡}t  ddg¡}| ƒ }| ||¡ d}tjt|d�� |j W 5 Q R X d S )Nr   r   r!   râ   r   zoAttribute `base_estimator_` was deprecated in version 1.2 and will be removed in 1.4. Use `estimator_` instead.r�   )r3   r4   r?   r‘   rœ   rä   Zbase_estimator_rè   r,   r,   r-   Ú'test_base_estimator_property_deprecatedy  s    ÿrê   c               	   C   s4   t tƒ ƒ} tjtdd�� | jdd� W 5 Q R X dS )zåCheck that setting base_estimator parameters works.

    During the deprecation cycle setting "base_estimator__*" params should
    work.

    Non-regression test for https://github.com/scikit-learn/scikit-learn/issues/25470
    zParameter 'base_estimator' ofr�   r   )Zbase_estimator__max_depthN)r   r   r‘   rœ   rä   Ú
set_paramsrQ   r,   r,   r-   Ú4test_deprecated_base_estimator_parameters_can_be_setŒ  s    
rì   c                 C   s(  d}t j|d|d�\}}td|| d� ||¡}| |¡}t|jdd�ddd� | d	krxtt 	|¡ƒdd
|d  hksxt
‚| |¡D ]D}t|jdd�ddd� | d	kr‚tt 	|¡ƒdd
|d  hks‚t
‚q‚|jdd� ||¡ | |¡}t|jdd�ddd� | |¡D ]}t|jdd�ddd� �qdS )zºCheck that the decision function respects the symmetric constraint for weak
    learners.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/26520
    r!   r   )r¬   Zn_clusters_per_classr#   )ri   r#   rB   r%   r   g:Œ0âŽyE>)ZatolrC   r   rª   rÉ   N)r   r‰   r   r?   rM   r   r6   r]   r3   rJ   r;   r³   rë   )rB   Zglobal_random_seedr¬   r*   r‹   r@   Zy_scorer,   r,   r-   Útest_adaboost_decision_function�  s6      ÿ
  ÿ þ
"$
rí   )[r¦   r�   Únumpyr3   r‘   Zscipy.sparser   r   r   r   r   Zsklearnr   Zsklearn.baser   r	   Zsklearn.dummyr
   r   r™   r   r   Z!sklearn.ensemble._weight_boostingr   Zsklearn.linear_modelr   Zsklearn.model_selectionr   r   Zsklearn.svmr   r   Zsklearn.treer   r   Zsklearn.utilsr   Zsklearn.utils._mockingr   Zsklearn.utils._testingr   r   r   r   rq   rr   rw   r*   rF   rO   rH   rI   rP   Z	load_irisrX   ZpermutationrY   rh   ÚpermrZ   Zload_diabetesrc   r=   rA   ÚmarkZparametrizerN   rR   ra   re   rx   r~   r†   rŒ   r•   rš   rž   rÃ   rÇ   rÊ   rÎ   rÑ   rÖ   rØ   rÙ   rà   rç   ré   rê   rì   rí   r,   r,   r,   r-   Ú<module>   s®   (

  ÿ	

"

-]0
	&
þþ
	þþ
þþ
þ
