Ë
    ÷Q(hÒ‚  ã                   óî  — d Z ddlZddlmZ ddlZddl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mZ ddlmZmZmZmZmZmZ dd	lmZmZ dd
lmZmZmZm Z  ddl!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z; ddl<m=Z= ddl>m?Z?m@Z@mAZA ddlBmCZCmDZDmEZE  e«       ZFeFjŽ                  eFj�                  cZIZJ e«       ZKeKjŽ                  eKj�                  cZLZM edd¬«      \  ZNZO edd¬«      \  ZPZQej¤                  j§                  dd e+ddd¬«      g«      ej¤                  j§                  dd ed¬«      g«      ej¤                  j§                  dd dg«      d!„ «       «       «       ZTd"„ ZUd#„ ZVd$„ ZWej¤                  j§                  dd e*ddd¬«      g«      ej¤                  j§                  d%di f ed¬«      i f e«       d&difg«      ej¤                  j§                  dd dg«      d'„ «       «       «       ZXej¤                  j§                  d(eCeDz   eEz   «      d)„ «       ZYej¤                  j§                  d(eCeDz   eEz   «      d*„ «       ZZd+„ Z[ G d,„ d-ee«      Z\ G d.„ d/ee«      Z]ej¤                  j§                  d0eMd1g ie^d2feMd3 e&«       fd4 e4d5¬6«      fgd7d8œe^d9feMd1d3 e&«       fd: e]«       fgie_d;feMd3 e&«       fd: e5d5¬6«      fg e]«       d<œe_d;fg«      d=„ «       Z`ej¤                  j§                  d0eJd1g ie^d2feJd1d3 e%«       fd: e\«       fgie_d;feJd3 e%«       fd: e6«       fg e\«       d<œe_d;fg«      d>„ «       Zaej¤                  j§                  d? ed3 e&d¬«      fd4 e5d¬«      fg¬@«      eLddA eMddA f e d3 e%«       fd4 e6d¬«      fg¬@«      eIeJfgdBdCg¬D«      dE„ «       ZbdF„ Zcej¤                  j§                  dG ed3 e&«       fd4 e5d¬«      fg e&«        e*dd¬H«      ¬I«      g ed¬J«      ¢­ e d3 e%«       fd4 e6d¬«      fg e%«        e*dd¬H«      ¬I«      eIeJfgdBdCg¬D«      dK„ «       ZddL„ Zeej¤                  jÍ                  dM«      ej¤                  j§                  dG ed3 e&«       fd4 e5d¬«      fg e&«       ¬<«      g ed¬J«      ¢­ e d3 e%«       fd4 e6d¬«      fg e%«       ¬<«      eIeJfgdBdCg¬D«      dN„ «       «       Zgej¤                  j§                  dOeed7 e&d¬«      eLeMfe edP e%«       eIeJfg«      dQ„ «       Zhej¤                  j§                  dG ed3 e&«       fd4 e4«       fgdR¬S«      eLeMf e d3 e%«       fd4 e6«       fgdR¬S«      eIeJfg«      dT„ «       Ziej¤                  j§                  dUeee&fee e%fg«      dV„ «       Zjej¤                  j§                  dW e0d¬«       ed¬«      gdXdYg¬D«      dZ„ «       Zkd[„ Zlej¤                  j§                  d\d]dPg«      ej¤                  j§                  dd dg«      d^„ «       «       Zmej¤                  j§                  d_ ed3 e&d¬«      fd4 e5d¬«      fg¬@«      eKjÜ                  eLeMg d`¢f ed3 e&d¬«      fdad4 e5d¬«      fg¬@«      eKjÜ                  eLddA eMddA dbdcgf e d3 e%«       fd4 e6d¬«      fg¬@«      eFjÜ                  eIeJdddegfgg df¢¬D«      ej¤                  j§                  ddd g«      dg„ «       «       Zodh„ Zpdi„ Zqej¤                  j§                  djee8fe e9fg«      dk„ «       Zrej¤                  j§                  djee8fe e9fg«       ed¬l«      dm„ «       «       Zsej¤                  j§                  djee8fe e9fg«      ej¤                  j§                  dndo ejè                  eLjê                  d   «      fdpg«       ed¬l«      dq„ «       «       «       Zvej¤                  j§                  djee8fe e9fg«       ed¬l«      dr„ «       «       Zwy)sz+Test the stacking classifier and regressor.é    N)ÚMock)Úassert_array_equal)Úsparse)Úconfig_context)ÚBaseEstimatorÚClassifierMixinÚRegressorMixinÚclone)Úload_breast_cancerÚload_diabetesÚ	load_irisÚmake_classificationÚmake_multilabel_classificationÚmake_regression)ÚDummyClassifierÚDummyRegressor)ÚRandomForestClassifierÚRandomForestRegressorÚStackingClassifierÚStackingRegressor)ÚConvergenceWarningÚNotFittedError)ÚLinearRegressionÚLogisticRegressionÚRidgeÚRidgeClassifier)ÚKFoldÚStratifiedKFoldÚtrain_test_split)ÚKNeighborsClassifier)ÚMLPClassifier)Úscale)ÚSVCÚ	LinearSVCÚ	LinearSVR)ÚConsumingClassifierÚConsumingRegressorÚ	_RegistryÚcheck_recorded_metadata)ÚCheckingClassifier)Úassert_allcloseÚassert_allclose_dense_sparseÚignore_warnings)ÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSé   é*   )Ú	n_classesÚrandom_stateé   ÚcvT)Ún_splitsÚshuffler4   Úfinal_estimator©r4   ÚpassthroughFc                 óö  — t        t        t        «      t        t        d¬«      \  }}}}dt	        «       fdt        «       fg}t        ||| |¬«      }|j                  ||«       |j                  |«       |j                  |«       |j                  ||«      dkD  sJ ‚|j                  |«      }	|rdnd}
|	j                  d	   |
k(  sJ ‚|rt        ||	d d …d
d …f   «       |j                  d¬«       |j                  ||«       |j                  |«       |j                  |«       |€|j                  |«       |j                  |«      }	|rdnd}|	j                  d	   |k(  sJ ‚|rt        ||	d d …d
d …f   «       y y )Nr2   ©Ústratifyr4   ÚlrÚsvc©Ú
estimatorsr9   r6   r;   çš™™™™™é?é
   é   é   éüÿÿÿÚdrop©r?   é   r1   )r   r"   ÚX_irisÚy_irisr   r$   r   ÚfitÚpredictÚpredict_probaÚscoreÚ	transformÚshaper+   Ú
set_paramsÚdecision_function)r6   r9   r;   ÚX_trainÚX_testÚy_trainÚy_testrB   ÚclfÚX_transÚexpected_column_countÚexpected_column_count_drops               úb/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/ensemble/tests/test_stacking.pyÚtest_stacking_classifier_irisr^   C   sv  € ô (8ÜŒf‹”v¬¸Rô(Ñ$€GˆV�W˜fð Ô+Ó-Ð.°¼	»Ð0DÐE€JÜ
ØØ'ØØô	€Cð ‡G�GˆG�WÔØ‡K�K�ÔØ×Ñ�fÔØ�9‰9�V˜VÓ$ sÒ*Ð*Ð*à�m‰m˜FÓ#€GÙ"-™B°1ÐØ�=‰=˜ÑÐ4Ò4Ð4Ð4ÙÜ˜ ª¨2©3¨¡Ô0à‡N�N�f€NÔØ‡G�GˆG�WÔØ‡K�K�ÔØ×Ñ�fÔØÐà×Ñ˜fÔ%à�m‰m˜FÓ#€GÙ&1¡°qÐØ�=‰=˜ÑÐ9Ò9Ð9Ð9ÙÜ˜ ª¨2©3¨¡Õ0ð ó    c                  óÚ  — t        d¬«      \  } }t        t        | «      ||d¬«      \  }}}}dt        «       fdt	        d¬«      fg}t        |d¬	«      }|j                  ||«       |j                  |«      }|j                  d
   dk(  sJ ‚dt        «       fdt        «       fg}|j                  |¬«       |j                  ||«       |j                  |«      }|j                  d
   dk(  sJ ‚y )NT©Ú
return_X_yr2   r=   r?   Úrfr:   r1   ©rB   r6   rF   r5   r@   ©rB   )r   r   r"   r   r   r   rM   rQ   rR   r$   rS   )	ÚXÚyrU   rV   rW   Ú_rB   rY   rZ   s	            r]   Ú:test_stacking_classifier_drop_column_binary_classificationri   q   sñ   € ä¨Ô.�D€A€qÜ"2Üˆa‹�!˜a¨bô#Ñ€GˆV�W˜að 
Ô!Ó#Ð$Ø	Ô%°2Ô6Ð7ð€Jô ¨
°qÔ
9€Cà‡G�GˆG�WÔØ�m‰m˜FÓ#€GØ�=‰=˜Ñ˜qÒ Ð Ð ð Ô+Ó-Ð.°¼	»Ð0DÐE€JØ‡N�N˜j€NÔ)à‡G�GˆG�WÔØ�m‰m˜FÓ#€GØ�=‰=˜Ñ˜qÒ Ð Ñ r_   c                  ó&  — t        t        t        «      t        t        d¬«      \  } }}}ddt	        d¬«      fg}t        dd¬«      }t        dt	        d¬«      fg|d	¬
«      }t        ||d	¬
«      }|j                  | |«       |j                  | |«       t        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «       y )Nr2   r=   ©r?   rH   r@   r   r:   rD   ©Ún_estimatorsr4   é   ©rB   r9   r6   )r   r"   rK   rL   r$   r   r   rM   r+   rN   rO   rQ   )rU   rV   rW   rh   rB   rc   rY   Úclf_drops           r]   Ú'test_stacking_classifier_drop_estimatorrq   Œ   sï   € ô #3ÜŒf‹”v¬¸Rô#Ñ€GˆV�W˜að ! 5¬)ÀÔ*CÐ"DÐE€JÜ	¨R¸bÔ	A€BÜ
ØœI°1Ô5Ð6Ð7ØØô€Cô
 "¨ZÈÐPQÔR€Hà‡G�GˆG�WÔØ‡L�L�˜'Ô"Ü�C—K‘K Ó'¨×)9Ñ)9¸&Ó)AÔBÜ�C×%Ñ% fÓ-¨x×/EÑ/EÀfÓ/MÔNÜ�C—M‘M &Ó)¨8×+=Ñ+=¸fÓ+EÕFr_   c                  óÈ  — t        t        t        «      t        d¬«      \  } }}}ddt	        d¬«      fg}t        dd¬«      }t        dt	        d¬«      fg|d¬	«      }t        ||d¬	«      }|j                  | |«       |j                  | |«       t        |j                  |«      |j                  |«      «       t        |j                  |«      |j                  |«      «       y )
Nr2   r:   rk   Úsvrr   rD   rl   rn   ro   )r   r"   Ú
X_diabetesÚ
y_diabetesr%   r   r   rM   r+   rN   rQ   )rU   rV   rW   rh   rB   rc   ÚregÚreg_drops           r]   Ú&test_stacking_regressor_drop_estimatorrx   ¢   sÍ   € ô #3ÜŒjÓœ:°Bô#Ñ€GˆV�W˜að ! 5¬)ÀÔ*CÐ"DÐE€JÜ	¨B¸RÔ	@€BÜ
ØœI°1Ô5Ð6Ð7ØØô€Cô
 !¨JÈÈqÔQ€Hà‡G�GˆG�WÔØ‡L�L�˜'Ô"Ü�C—K‘K Ó'¨×)9Ñ)9¸&Ó)AÔBÜ�C—M‘M &Ó)¨8×+=Ñ+=¸fÓ+EÕFr_   zfinal_estimator, predict_paramsÚ
return_stdc                 óˆ  — t        t        t        «      t        d¬«      \  }}}}dt	        «       fdt        «       fg}t        ||| |¬«      }	|	j                  ||«        |	j                  |fi |¤Ž}
|rdnd}|rt        |
«      |k(  sJ ‚|	j                  |«      }|rdnd}|j                  d   |k(  sJ ‚|rt        ||d d …d	d …f   «       |	j                  d
¬«       |	j                  ||«       |	j                  |«       |	j                  |«      }|rdnd}|j                  d   |k(  sJ ‚|rt        ||d d …d	d …f   «       y y )Nr2   r:   r?   rs   rA   r5   rF   é   éöÿÿÿrH   rI   é   )r   r"   rt   ru   r   r%   r   rM   rN   ÚlenrQ   rR   r+   rS   )r6   r9   Úpredict_paramsr;   rU   rV   rW   rh   rB   rv   ÚresultÚexpected_result_lengthrZ   r[   r\   s                  r]   Ú test_stacking_regressor_diabetesr‚   ·   sW  € ô #3ÜŒjÓœ:°Bô#Ñ€GˆV�W˜að Ô)Ó+Ð,¨u´i³kÐ.BÐC€JÜ
ØØ'ØØô	€Cð ‡G�GˆG�WÔØˆS�[‰[˜Ñ2 >Ñ2€FÙ"0™Q°aÐÙÜ�6‹{Ð4Ò4Ð4Ð4à�m‰m˜FÓ#€GÙ"-™B°1ÐØ�=‰=˜ÑÐ4Ò4Ð4Ð4ÙÜ˜ ª¨3©4¨Ñ 0Ô1à‡N�N�f€NÔØ‡G�GˆG�WÔØ‡K�K�Ôà�m‰m˜FÓ#€GÙ'2¡¸ÐØ�=‰=˜ÑÐ9Ò9Ð9Ð9ÙÜ˜ ª¨3©4¨Ñ 0Õ1ð r_   Úsparse_containerc                 ó”  — t         | t        t        «      «      t        d¬«      \  }}}}dt	        «       fdt        «       fg}t        dd¬«      }t        ||dd¬	«      }|j                  ||«       |j                  |«      }t        ||d d …d
d …f   «       t        j                  |«      sJ ‚|j                  |j                  k(  sJ ‚y )Nr2   r:   r?   rs   rD   rl   rn   TrA   r|   )r   r"   rt   ru   r   r%   r   r   rM   rQ   r,   r   ÚissparseÚformat©	rƒ   rU   rV   rW   rh   rB   rc   rY   rZ   s	            r]   Ú*test_stacking_regressor_sparse_passthroughrˆ   å   s¾   € ô
 #3ÙœœzÓ*Ó+¬ZÀbô#Ñ€GˆV�W˜að Ô)Ó+Ð,¨u´i³kÐ.BÐC€JÜ	¨B¸RÔ	@€BÜ
Ø¨r°aÀTô€Cð ‡G�GˆG�WÔØ�m‰m˜FÓ#€GÜ  ¨²°C±D°Ñ)9Ô:Ü�?‰?˜7Ô#Ð#Ð#Ø�=‰=˜GŸN™NÒ*Ð*Ñ*r_   c                 ó”  — t         | t        t        «      «      t        d¬«      \  }}}}dt	        «       fdt        «       fg}t        dd¬«      }t        ||dd¬	«      }|j                  ||«       |j                  |«      }t        ||d d …d
d …f   «       t        j                  |«      sJ ‚|j                  |j                  k(  sJ ‚y )Nr2   r:   r?   r@   rD   rl   rn   TrA   rG   )r   r"   rK   rL   r   r$   r   r   rM   rQ   r,   r   r…   r†   r‡   s	            r]   Ú+test_stacking_classifier_sparse_passthroughrŠ   ù   s¼   € ô
 #3Ùœœv›Ó'¬¸bô#Ñ€GˆV�W˜að Ô+Ó-Ð.°¼	»Ð0DÐE€JÜ	¨R¸bÔ	A€BÜ
Ø¨r°aÀTô€Cð ‡G�GˆG�WÔØ�m‰m˜FÓ#€GÜ  ¨²°B±C°©Ô9Ü�?‰?˜7Ô#Ð#Ð#Ø�=‰=˜GŸN™NÒ*Ð*Ñ*r_   c                  óð   — t        t        d d «      t        d d }} dt        «       fdt	        «       fg}t        |¬«      }|j                  | |«       |j                  | «      }|j                  d   dk(  sJ ‚y )Néd   r?   rc   re   rF   r5   )	r"   rK   rL   r   r   r   rM   rQ   rR   )ÚX_Úy_rB   rY   ÚX_metas        r]   Ú)test_stacking_classifier_drop_binary_probr�     su   € ô
 ”6˜$˜3�<Ó ¤&¨¨# ,ˆ€BàÔ+Ó-Ð.°Ô7MÓ7OÐ0PÐQ€JÜ
¨
Ô
3€CØ‡G�GˆB�„OØ�]‰]˜2Ó€FØ�<‰<˜‰?˜aÒÐÑr_   c                   ó   — e Zd Zd„ Zd„ Zy)ÚNoWeightRegressorc                 óX   — t        «       | _        | j                  j                  ||«      S ©N)r   rv   rM   ©Úselfrf   rg   s      r]   rM   zNoWeightRegressor.fit  s!   € Ü!Ó#ˆŒØ�x‰x�|‰|˜A˜qÓ!Ð!r_   c                 óF   — t        j                  |j                  d   «      S )Nr   )ÚnpÚonesrR   )r–   rf   s     r]   rN   zNoWeightRegressor.predict   s   € Ü�w‰w�q—w‘w˜q‘zÓ"Ð"r_   N)Ú__name__Ú
__module__Ú__qualname__rM   rN   © r_   r]   r’   r’     s   „ ò"ó#r_   r’   c                   ó   — e Zd Zd„ Zy)ÚNoWeightClassifierc                 ó\   — t        d¬«      | _        | j                  j                  ||«      S )NÚ
stratified)Ústrategy)r   rY   rM   r•   s      r]   rM   zNoWeightClassifier.fit%  s#   € Ü"¨LÔ9ˆŒØ�x‰x�|‰|˜A˜qÓ!Ð!r_   N)rš   r›   rœ   rM   r�   r_   r]   rŸ   rŸ   $  s   „ ó"r_   rŸ   zy, params, type_err, msg_errrB   zInvalid 'estimators' attribute,r?   ÚsvmiPÃ  ©Úmax_iterrO   )rB   Ústack_methodz+does not implement the method predict_probaÚcorzdoes not support sample weight©rB   r9   c           	      ó  — t        j                  ||¬«      5  t        di |¤ddi¤Ž}|j                  t	        t
        «      | t        j                  t
        j                  d   «      ¬«       d d d «       y # 1 sw Y   y xY w©N©Úmatchr6   r1   r   ©Úsample_weightr�   )	ÚpytestÚraisesr   rM   r"   rK   r˜   r™   rR   )rg   ÚparamsÚtype_errÚmsg_errrY   s        r]   Útest_stacking_classifier_errorr´   *  se   € ôT 
�‰�x wÔ	/ñ JÜ Ñ0 6Ñ0¨aÒ0ˆØ�‰””f“˜q´·±¼¿¹ÀQ¹Ó0HˆÔI÷J÷ Jñ Júó   ˜AA6Á6A?c           	      ó  — t        j                  ||¬«      5  t        di |¤ddi¤Ž}|j                  t	        t
        «      | t        j                  t
        j                  d   «      ¬«       d d d «       y # 1 sw Y   y xY wrª   )	r¯   r°   r   rM   r"   rt   r˜   r™   rR   )rg   r±   r²   r³   rv   s        r]   Útest_stacking_regressor_errorr·   Y  sh   € ô2 
�‰�x wÔ	/ñ RÜÑ/ &Ñ/¨QÒ/ˆØ�‰””jÓ! 1´B·G±G¼J×<LÑ<LÈQÑ<OÓ4PˆÔQ÷R÷ Rñ Rúrµ   zestimator, X, yre   rŒ   r   r   )Úidsc                 óâ  — t        | «      }|j                  t        dt        j                  j                  d«      ¬«      ¬«       t        | «      }|j                  d¬«       |j                  t        dt        j                  j                  d«      ¬«      ¬«       t        |j                  ||«      j                  |«      d d …dd …f   |j                  ||«      j                  |«      «       y )NTr   ©r8   r4   ©r6   rH   rI   rF   )	r
   rS   r   r˜   ÚrandomÚRandomStater+   rM   rQ   )Ú	estimatorrf   rg   Úestimator_fullÚestimator_drops        r]   Útest_stacking_randomnessrÁ   w  sÎ   € ô: ˜9Ó%€NØ×ÑÜ˜¬B¯I©I×,AÑ,AÀ!Ó,DÔEð ô ô ˜9Ó%€NØ×Ñ ÐÔ(Ø×ÑÜ˜¬B¯I©I×,AÑ,AÀ!Ó,DÔEð ô ô Ø×Ñ˜1˜aÓ ×*Ñ*¨1Ó-ªa°±¨eÑ4Ø×Ñ˜1˜aÓ ×*Ñ*¨1Ó-õr_   c                  ó„   — t        dt        d¬«      fdt        d¬«      fg¬«      } | j                  t        t
        «       y )Nr?   i'  r¤   r£   re   )r   r   r$   rM   rK   rL   )rY   s    r]   Ú)test_stacking_classifier_stratify_defaultrÃ   ¥  s<   € ä
àÔ%¨vÔ6Ð7Ø”I vÔ.Ð/ð
ô€Cð ‡G�GŒF”FÕr_   zstacker, X, yrº   ro   ra   c                 ó  — t        |«      dz  }t        j                  dg|z  dgt        |«      |z
  z  z   «      }t        |||d¬«      \  }}}}}	}t	        t
        ¬«      5  | j                  ||«       d d d «       | j                  |«      }
t	        t
        ¬«      5  | j                  ||t        j                  |j                  «      ¬«       d d d «       | j                  |«      }t        |
|«       t	        t
        ¬«      5  | j                  |||	¬«       d d d «       | j                  |«      }t        j                  |
|z
  «      j                  «       dkD  sJ ‚y # 1 sw Y   ŒëxY w# 1 sw Y   ŒœxY w# 1 sw Y   Œ^xY w)	Nr5   gš™™™™™¹?gÍÌÌÌÌÌì?r2   r:   )Úcategoryr­   r   )r~   r˜   Úarrayr   r-   r   rM   rN   r™   rR   r+   ÚabsÚsum)Ústackerrf   rg   Ún_half_samplesÚtotal_sample_weightrU   rV   rW   rh   Úsample_weight_trainÚy_pred_no_weightÚy_pred_unit_weightÚy_pred_biaseds                r]   Ú test_stacking_with_sample_weightrÐ   ²  sg  € ôB ˜“V˜q‘[€NÜŸ(™(Ø	ˆ�Ñ # ¬#¨a«&°>Ñ*AÑ!BÑBóÐô ;KØ	ˆ1Ð!°ô;Ñ7€GˆV�W˜aÐ!4°aô 
Ô"4Ô	5ñ &Ø�‰�G˜WÔ%÷&à—‘ vÓ.Ðä	Ô"4Ô	5ñ LØ�‰�G˜W´B·G±G¸G¿M¹MÓ4JˆÔK÷Là Ÿ™¨Ó0ÐäÐ$Ð&8Ô9ä	Ô"4Ô	5ñ IØ�‰�G˜WÐ4GˆÔH÷Ià—O‘O FÓ+€Mä�6‰6Ð" ]Ñ2Ó3×7Ñ7Ó9¸AÒ=Ð=Ñ=÷&ð &ú÷Lð Lú÷Ið Iús$   Á!EÂ2E*ÄE6ÅE'Å*E3Å6E?c                  óÌ   — t        dt        d¬«      fgt        d¬«      ¬«      } | j                  t        t        t        j                  t        j                  d   «      ¬«       y )Nr?   T)Úexpected_sample_weightr¨   r   r­   )r   r*   rM   rK   rL   r˜   r™   rR   )rÉ   s    r]   Ú0test_stacking_classifier_sample_weight_fit_paramrÓ   ì  sJ   € ä ØÔ-ÀTÔJÐKÐLÜ*À$ÔGô€Gð ‡K�K”œ¬b¯g©g´f·l±lÀ1±oÓ.F€KÕGr_   z-ignore::sklearn.exceptions.ConvergenceWarningc                 ó  — t        | «      }t        | «      }|j                  d¬«       |j                  d¬«       |j                  ||«       |j                  ||«       t        |j                  |j                  «      D ]%  \  }}t        |j                  |j                  «       Œ' t        j                  t        d¬«      5  t        |j                  j                  |j                  j                  «       d d d «       y # 1 sw Y   y xY w)Nr1   r»   rn   z	Not equalr«   )r
   rS   rM   ÚzipÚestimators_r+   Úcoef_r¯   r°   ÚAssertionErrorÚfinal_estimator_)rÉ   rf   rg   Ústacker_cv_3Ústacker_cv_5Úest_cv_3Úest_cv_5s          r]   Útest_stacking_cv_influencerÞ   õ  sÞ   € ôB ˜“>€LÜ˜“>€Là×Ñ˜qÐÔ!Ø×Ñ˜qÐÔ!à×Ñ�Q˜ÔØ×Ñ�Q˜Ôô " ,×":Ñ":¸L×<TÑ<TÓUò 8Ñˆ�(Ü˜Ÿ™¨¯©Õ7ð8ô 
�‰”~¨[Ô	9ñ 
ÜØ×)Ñ)×/Ñ/°×1NÑ1N×1TÑ1Tô	
÷
÷ 
ñ 
ús   Ã5D Ä D	z7Stacker, Estimator, stack_method, final_estimator, X, yrN   c                 óD  — t        ||dd¬«      \  }}}}	d |«       j                  ||«      fd |«       j                  ||«      fg}
|
D ]B  \  }}t        d¬«      |_        t        ||«      }t        |¬«      }||_        t        |||«       ŒD  | |
d	|¬
«      }|j                  ||	«       |j                  |
D ��cg c]  \  }}|‘Œ	 c}}k(  sJ ‚t        d„ |j                  D «       «      sJ ‚|j                  D ]  }t        ||«      }|j                  |«       Œ! yc c}}w )z2Check the behaviour of stacking when `cv='prefit'`r2   g      à?)r4   Ú	test_sizeÚd0Úd1rM   )Úname)Úside_effectÚprefit)rB   r6   r9   c              3   óN   K  — | ]  }|j                   j                  d k(  –— Œ y­w)r   N)rM   Ú
call_count)Ú.0r¾   s     r]   ú	<genexpr>z'test_stacking_prefit.<locals>.<genexpr>Z  s   è ø€ ÒR°ˆy�}‰}×'Ñ'¨1Õ,ÑRùs   ‚#%N)	r   rM   r   Úgetattrrš   ÚsetattrrÖ   ÚallÚassert_called_with)ÚStackerÚ	Estimatorr¦   r9   rf   rg   ÚX_train1ÚX_train2Úy_train1Úy_train2rB   rh   r¾   Ú
stack_funcÚpredict_method_mockedrÉ   Ústack_func_mocks                    r]   Útest_stacking_prefitr÷   *  s<  € ô. .>Ø	ˆ1˜2¨ô.Ñ*€Hˆh˜ (ð 
‰y‹{�‰˜x¨Ó2Ð3Ø	‰y‹{�‰˜x¨Ó2Ð3ð€Jð #ò @‰ˆˆ9Ü %Ô(ˆ	ŒÜ˜Y¨Ó5ˆ
Ü $°Ô <Ðð *6ÐÔ&Ü�	˜<Ð)>Õ?ð@ñ Ø (¸Oô€Gð ‡K�K�˜(Ô#à×ÑÀ×"L±°°I¢9Ó"LÒLÐLÐLäÑR¸g×>QÑ>QÔRÔRÐRÐRð ×(Ñ(ò 5ˆ	Ü! )¨\Ó:ˆØ×*Ñ*¨8Õ4ñ5ùó #Ms   Â;Drå   rd   c                 ó„   — t        j                  t        «      5  | j                  ||«       d d d «       y # 1 sw Y   y xY wr”   )r¯   r°   r   rM   )rÉ   rf   rg   s      r]   Útest_stacking_prefit_errorrù   b  s3   € ô6 
�‰”~Ó	&ñ Ø�‰�A�qÔ÷÷ ñ ús   š6¶?z!make_dataset, Stacking, Estimatorc                 óŒ  —  G d„ d|«      } | dd¬«      \  }} |d |«       fg¬«      }|j                   › d�}t        j                  t        |¬	«      5  |j                   d d d «       |j                  ||«       d
}t        j                  t        |¬	«      5  |j                   d d d «       y # 1 sw Y   ŒNxY w# 1 sw Y   y xY w)Nc                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ú8test_stacking_without_n_features_in.<locals>.MyEstimatorz Estimator without n_features_in_c                 ó*   •— t         ‰| �  ||«       | `y r”   )ÚsuperrM   Ún_features_in_)r–   rf   rg   Ú	__class__s      €r]   rM   z<test_stacking_without_n_features_in.<locals>.MyEstimator.fit�  s   ø€ Ü‰G‰K˜˜1ÔØÑ#r_   )rš   r›   rœ   Ú__doc__rM   Ú__classcell__)r   s   @r]   ÚMyEstimatorrü   Œ  s   ø„ Ù.÷	$ð 	$r_   r  r   rŒ   )r4   Ú	n_samplesr?   re   z' object has no attribute n_features_in_r«   z6'MyEstimator' object has no attribute 'n_features_in_')rš   r¯   r°   ÚAttributeErrorrÿ   rM   )Úmake_datasetÚStackingrï   r  rf   rg   rÉ   Úmsgs           r]   Ú#test_stacking_without_n_features_inr	  �  sº   € ô$�iô $ñ  Q°#Ô6�D€A€qÙ D©+«-Ð#8Ð"9Ô:€Gà×ÑÐÐFÐ
G€CÜ	�‰”~¨SÔ	1ñ Ø×Ò÷ð ‡K�K��1Ôà
B€CÜ	�‰”~¨SÔ	1ñ Ø×Ò÷ð ÷ð ú÷ð ús   ÁB.ÂB:Â.B7Â:Cr¾   r!   r   c                 óº  — t        t        t        t        d¬«      \  }}}}d}d| fg}t        |t	        «       d¬«      j                  ||«      }|j                  |«      }|j                  |j                  d   |fk(  sJ ‚t        t        j                  |j                  d¬	«      d
«      «      rJ ‚|j                  |«      }	|	j                  |j                  k(  sJ ‚y)zÚCheck the behaviour for the multilabel classification case and the
    `predict_proba` stacking method.

    Estimators are not consistent with the output arrays and we need to ensure that
    we handle all cases.
    r2   r=   r1   ÚestrO   ©rB   r9   r¦   r   rF   )Úaxisg      ð?N)r   ÚX_multilabelÚy_multilabelr   r    rM   rQ   rR   Úanyr˜   ÚiscloserÈ   rN   )
r¾   rU   rV   rW   rX   Ú	n_outputsrB   rÉ   rZ   Úy_preds
             r]   Ú1test_stacking_classifier_multilabel_predict_probar  ¢  sÔ   € ô$ (8Ü”l¬\Èô(Ñ$€GˆV�W˜fð €Ià˜)Ð$Ð%€JÜ ØÜ,Ó.Ø$ô÷ 
�cˆ'�7Óð	 ð ×Ñ Ó'€GØ�=‰=˜VŸ\™\¨!™_¨iÐ8Ò8Ð8Ð8ä”2—:‘:˜gŸk™k¨q˜kÓ1°3Ó7Ô8Ð8Ð8à�_‰_˜VÓ$€FØ�<‰<˜6Ÿ<™<Ò'Ð'Ñ'r_   c                  óh  — t        t        t        t        d¬«      \  } }}}d}dt        «       fg}t	        |t        «       d¬«      j                  | |«      }|j                  |«      }|j                  |j                  d   |fk(  sJ ‚|j                  |«      }|j                  |j                  k(  sJ ‚y)	zŸCheck the behaviour for the multilabel classification case and the
    `decision_function` stacking method. Only `RidgeClassifier` supports this
    case.
    r2   r=   r1   r  rT   r  r   N)
r   r  r  r   r   r    rM   rQ   rR   rN   )	rU   rV   rW   rX   r  rB   rÉ   rZ   r  s	            r]   Ú5test_stacking_classifier_multilabel_decision_functionr  É  s³   € ô
 (8Ü”l¬\Èô(Ñ$€GˆV�W˜fð €Iàœ/Ó+Ð,Ð-€JÜ ØÜ,Ó.Ø(ô÷ 
�cˆ'�7Óð	 ð ×Ñ Ó'€GØ�=‰=˜VŸ\™\¨!™_¨iÐ8Ò8Ð8Ð8à�_‰_˜VÓ$€FØ�<‰<˜6Ÿ<™<Ò'Ð'Ñ'r_   r¦   Úautoc                 óÐ  — t        t        t        t        d¬«      \  }}}}|j                  «       }d}dt	        d¬«      fdt        d¬«      fdt        «       fg}t        «       }	t        ||	|| ¬«      j                  ||«      }
t        ||«       |
j                  |«      }|j                  |j                  k(  sJ ‚| d	k(  rg d
¢}ndgt        |«      z  }|
j                  |k(  sJ ‚|t        |«      z  }|r||j                  d   z  }|
j                  |«      }|j                  |j                  d   |fk(  sJ ‚t        |
j                   t#        j$                  ddg«      g|z  «       y)zŽCheck the behaviour for the multilabel classification case for stack methods
    supported for all estimators or automatically picked up.
    r2   r=   r1   Úmlpr:   rc   Úridge)rB   r9   r;   r¦   r  )rO   rO   rT   rN   rF   r   N)r   r  r  Úcopyr!   r   r   r    r   rM   r   rN   rR   r~   Ústack_method_rQ   Úclasses_r˜   rÆ   )r¦   r;   rU   rV   rW   rX   Úy_train_before_fitr  rB   r9   rY   r  Úexpected_stack_methodsÚn_features_X_transrZ   s                  r]   Ú0test_stacking_classifier_multilabel_auto_predictr!  á  so  € ô (8Ü”l¬\Èô(Ñ$€GˆV�W˜fð !Ÿ™›ÐØ€Ið 
”¨2Ô.Ð/Ø	Ô%°2Ô6Ð7Ø	”/Ó#Ð$ð€Jô
 +Ó,€Oä
ØØ'ØØ!ô	÷
 
�cˆ'�7Óð ô Ð)¨7Ô3à�[‰[˜Ó €FØ�<‰<˜6Ÿ<™<Ò'Ð'Ð'à�vÒÚ!XÑà"+ ¬s°:«Ñ!>ÐØ×ÑÐ 6Ò6Ð6Ð6à"¤S¨£_Ñ4ÐÙØ˜gŸm™m¨AÑ.Ñ.ÐØ�m‰m˜FÓ#€GØ�=‰=˜VŸ\™\¨!™_Ð.@ÐAÒAÐAÐAä�s—|‘|¤b§h¡h°°1¨vÓ&6Ð%7¸)Ñ%CÕDr_   z,stacker, feature_names, X, y, expected_names)Ústackingclassifier_lr0Ústackingclassifier_lr1Ústackingclassifier_lr2Ústackingclassifier_svm0Ústackingclassifier_svm1Ústackingclassifier_svm2)ÚotherrH   Ústackingclassifier_lrÚstackingclassifier_svmÚstackingregressor_lrÚstackingregressor_svm)ÚStackingClassifier_multiclassÚStackingClassifier_binaryr   c                 óÊ   — | j                  |¬«       | j                  t        |«      |«       |rt        j                  ||f«      }| j                  |«      }t        ||«       y)z/Check get_feature_names_out works for stacking.)r;   N)rS   rM   r"   r˜   ÚconcatenateÚget_feature_names_outr   )rÉ   Úfeature_namesrf   rg   Úexpected_namesr;   Ú	names_outs          r]   Útest_get_feature_names_outr5    sX   € ðD ×Ñ ;ÐÔ/Ø‡K�K”�a“˜!ÔáÜŸ™¨¸Ð(GÓHˆà×-Ñ-¨mÓ<€IÜ�y .Õ1r_   c                  ó  — t        t        t        «      t        t        d¬«      \  } }}}t	        dt        «       fg¬«      }|j                  | |«       |j                  |«       |j                  |«       |j                  ||«      dkD  sJ ‚y)zNCheck that a regressor can be used as the first layer in `StackingClassifier`.r2   r=   r  re   rC   N)
r   r"   rK   rL   r   r   rM   rN   rO   rP   )rU   rV   rW   rX   rY   s        r]   Ú'test_stacking_classifier_base_regressorr7  \  sy   € ä'7ÜŒf‹”v¬¸Rô(Ñ$€GˆV�W˜fô ¨'´5³7Ð);Ð(<Ô
=€CØ‡G�GˆG�WÔØ‡K�K�ÔØ×Ñ�fÔØ�9‰9�V˜VÓ$ sÒ*Ð*Ñ*r_   c                  óÊ  — t        d¬«      \  } }dt        «       fdt        dd¬«      fg}t        dd¬«      }t        ||d¬«      }d	}d
}t	        j
                  t        |¬«      5 }|j                  | |«      j                  | «       ddd«       t        j                  j                  t        «      sJ ‚|t        |j                  j                  «      v sJ ‚y# 1 sw Y   ŒSxY w)a
  Check that we raise the proper AttributeError when the final estimator
    does not implement the `decision_function` method, which is decorated with
    `available_if`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/28108
    r2   r:   r?   rc   r5   rl   r1   ro   z>This 'StackingClassifier' has no attribute 'decision_function'zD'RandomForestClassifier' object has no attribute 'decision_function'r«   N)r   r   r   r   r¯   r°   r  rM   rT   Ú
isinstanceÚvalueÚ	__cause__Ústr)rf   rg   rB   r9   rY   Ú	outer_msgÚ	inner_msgÚ	exec_infos           r]   Ú-test_stacking_final_estimator_attribute_errorr@  h  s×   € ô ¨BÔ/�D€A€qð 
Ô!Ó#Ð$Ø	Ô%°1À2ÔFÐGð€Jô -¸!È"ÔM€OÜ
Ø¨À1ô€Cð Q€IØV€IÜ	�‰”~¨YÔ	7ð +¸9Ø�‰��1‹×'Ñ'¨Ô*÷+ä�i—o‘o×/Ñ/´Ô@Ð@Ð@Øœ˜IŸO™O×5Ñ5Ó6Ñ6Ð6Ñ6÷+ð +ús   Á%"CÃC"zEstimator, Childc                 ó¼   — t        j                  t        d¬«      5   | d |«       g«      j                  t        t
        g d¢d¬«       ddd«       y# 1 sw Y   yxY w)z�Test that the right error message is raised when metadata is passed while
    not supported when `enable_metadata_routing=False`.z1is only supported if enable_metadata_routing=Truer«   rY   )rF   rF   rF   rF   rF   Úa©r®   ÚmetadataN)r¯   r°   Ú
ValueErrorrM   rK   rL   )rï   ÚChilds     r]   Ú*test_routing_passed_metadata_not_supportedrG  ‰  sU   € ô 
�‰ÜÐMô
ñ 
ñ 	�5™%›'Ð"Ó#×'Ñ'Ü”Fª/ÀCð 	(ô 	
÷
÷ 
ñ 
ús   œ-AÁA)Úenable_metadata_routingc                 óD   —  | d |«       fg«      }|j                  «        y )NÚsub_est)Úget_metadata_routing)rï   rF  r  s      r]   Ú%test_get_metadata_routing_without_fitrL  œ  s$   € ñ �i¡£Ð)Ð*Ó
+€CØ×ÑÕr_   zprop, prop_valuer®   )rD  rB  c           
      ó�  —  | d  |t        «       ¬«      j                  di |di¤Žfd  |t        «       ¬«      j                  di |di¤Žfg  |t        «       ¬«      j                  di |di¤Ž¬«      } |j                  t        t
        fi ||i¤Ž  |j                  t        t
        fi ||i¤Ž  |j                  t        fi ||i¤Ž |j                  D ]7  }|d   j                  }t        |«      sJ ‚|D ]  }t        d|dd|dœ||i¤Ž Œ Œ9 |j                  j                  }t        |«      sJ ‚t        d|d	   d
d
|dœ||i¤Ž y)z5Test that metadata is routed correctly for Stacking*.Úsub_est1)ÚregistryTÚsub_est2)r9   rF   rM   )ÚobjÚmethodÚparentÚsplit_paramséÿÿÿÿrN   Nr�   )r(   Úset_fit_requestÚset_predict_requestrM   rK   rL   Úfit_transformrN   rB   rO  r~   r)   rÙ   )rï   rF  ÚpropÚ
prop_valuer  r¾   rO  rJ  s           r]   Ú-test_metadata_routing_for_stacking_estimatorsr[  ª  s…  € ñ ð Ø;‘œy›{Ô+×;Ñ;ÑK¸tÀT¸lÑKðð
 Ø;‘œy›{Ô+×;Ñ;ÑK¸tÀT¸lÑKðð		
ð H™¤y£{Ô3×GÑGÑWÈ4ÐQUÈ,ÑWô€Cð €C‡G�GŒF”FÑ1˜t ZÐ0Ò1Ø€C×Ñ”fœfÑ;¨¨zÐ(:Ò;à€C‡K�K”Ñ-˜4 Ð,Ò-à—^‘^ò ˆ	à˜Q‘<×(Ñ(ˆÜ�8Œ}Ðˆ}Øò 	ˆGÜ#ð ØØØØ"ñ	ð
 ˜Ð$óñ	ð	ð ×#Ñ#×,Ñ,€HÜˆxŒ=Ðˆ=Üð Ø�R‰LØØØñ	ð
 �Ð
ór_   c                 óT  — t        j                  t        j                  d   «      d}} | d |«       fg«      }d|j                  › d�}t        j                  t        t        j                  |«      ¬«      5  |j                  t        t        ||¬«       ddd«       y# 1 sw Y   yxY w)	zCTest that the right error is raised when metadata is not requested.r   rB  rJ  zb[sample_weight, metadata] are passed but are not explicitly set as requested or not requested for z.fitr«   rC  N)r˜   r™   rK   rR   rš   r¯   r°   rE  ÚreÚescaperM   rL   )rï   rF  r®   rD  r  Úerror_messages         r]   Ú3test_metadata_routing_error_for_stacking_estimatorsr`  ã  s“   € ô !Ÿg™g¤f§l¡l°1¡oÓ6¸�8€Má
�i¡£Ð)Ð*Ó
+€Cð	!Ø!&§¡Ð 0°ð	6ð ô
 
�‰”z¬¯©°=Ó)AÔ	Bñ PØ�‰”œ¨mÀhˆÔO÷P÷ Pñ Pús   Á7BÂB')xr  r]  Úunittest.mockr   Únumpyr˜   r¯   Únumpy.testingr   Úscipyr   Úsklearnr   Úsklearn.baser   r   r	   r
   Úsklearn.datasetsr   r   r   r   r   r   Úsklearn.dummyr   r   Úsklearn.ensembler   r   r   r   Úsklearn.exceptionsr   r   Úsklearn.linear_modelr   r   r   r   Úsklearn.model_selectionr   r   r   Úsklearn.neighborsr    Úsklearn.neural_networkr!   Úsklearn.preprocessingr"   Úsklearn.svmr#   r$   r%   Ú%sklearn.tests.metadata_routing_commonr&   r'   r(   r)   Úsklearn.utils._mockingr*   Úsklearn.utils._testingr+   r,   r-   Úsklearn.utils.fixesr.   r/   r0   ÚdiabetesÚdataÚtargetrt   ru   ÚirisrK   rL   r  r  ÚX_binaryÚy_binaryÚmarkÚparametrizer^   ri   rq   rx   r‚   rˆ   rŠ   r�   r’   rŸ   rE  Ú	TypeErrorr´   r·   rÁ   rÃ   rÐ   rÓ   ÚfilterwarningsrÞ   r÷   rù   r	  r  r  r!  r2  r5  r7  r@  rG  rL  r™   rR   r[  r`  r�   r_   r]   ú<module>r     s  ðÙ 1ó
 
Ý ã Û Ý ,Ý å "ß NÓ N÷÷ ÷ :÷ó ÷ B÷ó ÷ MÑ LÝ 2Ý 0Ý 'ß 1Ñ 1÷ó õ 6÷ñ ÷
 OÑ Ná‹?€Ø!Ÿ™¨¯©Ð €
ˆJÙƒ{€Ø—‘˜DŸK™K€€ˆÙ;Ø˜bôÑ €ˆlñ )°1À2ÔFÑ €ˆ(ð ‡�×ÑØˆ1‰o q°$ÀRÔHÐ
Ióð ‡�×ÑØ˜Ñ4À"ÔEÐFóð ‡�×Ñ˜¨°¨Ó6ñ$1ó 7óóð$1òN!ò6Gò,Gð* ‡�×Ñ˜ ¡5°!¸TÐPRÔ#SÐTÓUØ‡�×ÑØ%à	ˆrˆ
Ù	¨BÔ	/°Ð4Ù	Ó	˜L¨$Ð/Ð0ðóð ‡�×Ñ˜¨°¨Ó6ñ!2ó 7óó Vð!2ðH ‡�×ÑØ˜¨Ñ7¸.ÑHóñ+óð+ð" ‡�×ÑØ˜¨Ñ7¸.ÑHóñ+óð+ò" ô#˜¨ô #ô"˜¨-ô "ð ‡�×ÑØ"à	�, Ð# ZÐ1RÐSàð Ñ-Ó/Ð0Ø™C¨Ô0Ð1ðð !0ñð Ø9ð	
ð àØÑ-Ó/Ð0ØÑ.Ó0Ð1ððð Ø,ð
	
ð ð Ñ-Ó/Ð0Ø™I¨vÔ6Ð7ðñ $6Ó#7ñð Ø,ð	
ð3%ó(ñRJóS(ðRJð ‡�×ÑØ"à	�l BÐ'¨Ð5VÐWàØ˜TÑ#3Ó#5Ð6¸Ñ@QÓ@SÐ8TÐUÐVØØ,ð		
ð ð Ñ+Ó-Ð.Ø™I›KÐ(ðñ $5Ó#6ñð Ø,ð	
ðóñ0Ró1ð0Rð ‡�×ÑØñ àÑ-¸1Ô=Ð>Ø™I°1Ô5Ð6ðôð �4�CˆLØ�4�CˆLð		
ñ àÑ+Ó-Ð.Ø™I°1Ô5Ð6ðôð Øð		
ðð, 
Ð2Ð3ð1 ó ñ4ó5ð4ò(
ð ‡�×ÑØñ àÑ-Ó/Ð0Ø™I°2Ô6Ð7ðñ !3Ó 4Ù °BÔ7ôð
	
ñ  ¨4Ô0ñ
	
ñ àÑ+Ó-Ð.Ø™I°2Ô6Ð7ðñ !1Ó 2Ù °BÔ7ôð Øð	
ðð2 
Ð2Ð3ð7 ó ñ:>ó;ð:>ò:Hð ‡�×ÑÐKÓLØ‡�×ÑØñ àÑ-Ó/Ð0Ø™I°2Ô6Ð7ðñ !3Ó 4ôð		
ñ  ¨4Ô0ñ		
ñ àÑ+Ó-Ð.Ø™I°2Ô6Ð7ðñ !1Ó 2ôð Øð
	
ðð. 
Ð2Ð3ð3 ó ñ6
ó7ó Mð8
ð2 ‡�×ÑØ=ð ØØÙ¨BÔ/ØØð	
ð ØØÙÓØØð	
ðóñ* 5ó+ð* 5ðF ‡�×ÑØñ Ø!Ñ#5Ó#7Ð8¸5Á#Ã%¸.ÐIØôð Øð	
ñ àÑ+Ó-Ð.Ø™I›KÐ(ðð ôð Øð
	
ðóñ0ó1ð0ð ‡�×ÑØ'à	Ð0Ð2DÐEØ	Ð+Ð-=Ð>ðóñóðð4 ‡�×ÑØñ 	 2Ô&ñ 	¨BÔ/ðð 
Ð2Ð3ð ó 
ñ(ó
ð(ò8(ð0 ‡�×Ñ˜¨&°)Ð)<Ó=Ø‡�×Ñ˜¨°¨Ó6ñ*Eó 7ó >ð*EðZ ‡�×ÑØ2ñ àÑ-¸1Ô=Ð>Ø™I°1Ô5Ð6ðôð ×ÑØØòð	
ñ( àÑ-¸1Ô=Ð>Ø%Ø™I°1Ô5Ð6ðôð ×ÑØ�4�CˆLØ�4�CˆLà'Ø(ðð	
ñ" àÑ+Ó-Ð.Ø™I°1Ô5Ð6ðôð ×"Ñ"ØØà&Ø'ðð	
ðI3òh	ðm ó ;ðx ‡�×Ñ˜¨¨u¨Ó6ñ2ó 7óy;ðz2ò	+ò7ðB ‡�×ÑØà	Ð0Ð1Ø	Ð.Ð/ðóñ	
óð	
ð ‡�×ÑØà	Ð0Ð1Ø	Ð.Ð/ðóñ ¨Ô-ñó .óðð ‡�×ÑØà	Ð0Ð1Ø	Ð.Ð/ðóð ‡�×ÑØ˜/¨7¨2¯7©7°6·<±<À±?Ó+CÐDÐFWÐXóñ ¨Ô-ñ+ó .óóð+ð\ ‡�×ÑØà	Ð0Ð1Ø	Ð.Ð/ðóñ ¨Ô-ñPó .óñPr_   