§
    ¨éUgÎâ  ã                   ó´  — d dl Z d dlmZ d dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZ 	 d dlmZ n# e$ r	 d dlmZ Y nw xY wd dlZd dlmZ d d	lmZ d d
lmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZDmEZE d„ ZFejG         H                    de=¦  «        ejG         H                    de>¦  «        ejG         H                    de<¦  «        ejG         H                    de?¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         ZIejG         H                    de¦  «        d„ ¦   «         ZJd„ ZKejG         H                    de,e0g¦  «        d„ ¦   «         ZLd„ ZM ejN        dd¦  «         O                    dd¬¦  «        dd œZP ejN        dd¦  «         O                    dd¬¦  «        dd œZQd!„ ZRejG         H                    d"e,d#i f ejS        e,eeP¦  «         ejS        e,d$eP¦  «         ejS        e,eeQejG         T                    eB eAd%¦  «        k    d&¬'¦  «        ¬(¦  «         ejS        e,d)eQejG         T                    eB eAd%¦  «        k    d&¬'¦  «        ¬(¦  «        e0d*d+dife0eRd,d-ifg¦  «        ejG         H                    d.ejU        ejV        eWg¦  «        d/„ ¦   «         ¦   «         ZXd0„ ZYejG         H                    dg d1¢¦  «        ejG         H                    de?¦  «        d2„ ¦   «         ¦   «         ZZd3„ Z[d4„ Z\ejG         H                    d5 ej]        ¦   «         ¦  «        ejG         H                    de?¦  «        d6„ ¦   «         ¦   «         Z^d7„ Z_ejG         H                    d8e@¦  «        ejG         H                    de?¦  «        d9„ ¦   «         ¦   «         Z`d:„ Zad;„ Zbd<„ ZcejG         H                    d=d>„ d?„ d@„ gdA„ e?D ¦   «         z   dB„ e@D ¦   «         z   ¦  «        dC„ ¦   «         ZdejG         H                    dDdE„ eedFfdG„ eedHfdI„ eedJfdK„ efdLfdM„ efdNfdO„ efdPfg¦  «        dQ„ ¦   «         Zgd·dR„ZhejG         H                    ddS¦  «        dT„ ¦   «         ZiejG         H                    ddS¦  «        dU„ ¦   «         Zje:dV„ ¦   «         ZkejG         H                    dWejl        ge?z   dXgdY„ e?D ¦   «         z   ¬Z¦  «        ejG         H                    d[ejl        ge?z   dXgd\„ e?D ¦   «         z   ¬Z¦  «        d]„ ¦   «         ¦   «         ZmejG         H                    d[ejl        ge?z   dXgd^„ e?D ¦   «         z   ¬Z¦  «        d_„ ¦   «         ZnejG         H                    d`dadg¦  «        db„ ¦   «         Zodc„ ZpejG         H                    dWejl        ge?z   dXgdd„ e?D ¦   «         z   ¬Z¦  «        ejG         H                    d[ejl        ge?z   dXgde„ e?D ¦   «         z   ¬Z¦  «        df„ ¦   «         ¦   «         ZqejG         H                    dWejl        ge?z   dXgdg„ e?D ¦   «         z   ¬Z¦  «        dh„ ¦   «         ZrejG         H                    dig dj¢¦  «        ejG         H                    dWejl        ge?z   dXgdk„ e?D ¦   «         z   ¬Z¦  «        ejG         H                    d[ejl        ge?z   dXgdl„ e?D ¦   «         z   ¬Z¦  «        dm„ ¦   «         ¦   «         ¦   «         ZsejG         H                    dig dj¢¦  «        ejG         H                    dWejl        ge?z   dXgdn„ e?D ¦   «         z   ¬Z¦  «        do„ ¦   «         ¦   «         ZtejG         H                    dpejV        dqdrf ejS        ejU        dsdtejG         u                    du¬'¦  «        ¬(¦  «        g¦  «        ejG         H                    dvddwg¦  «        dx„ ¦   «         ¦   «         ZvejG         H                    dydadg¦  «        dz„ ¦   «         ZwejG         H                    d{ ejl        ejx        d gg¦  «         ejl        d ejx         gg¦  «        g¦  «        ejG         H                    d| ejl        ejx        d gg¦  «         ejl        d ejx         gg¦  «        dg¦  «        d}„ ¦   «         ¦   «         ZyejG         H                    d~ ejl        d dgdd gg¦  «         ejz        d¦  «        ej{        f ejl        d dgdej{        gg¦  «         ejz        d¦  «        ej{        f ejl        ej{        dgdej{        gg¦  «        ej{        ej{        f ejl        ej{        dgej{        d gg¦  «         ejz        d¦  «        ej{        f ejl        d ej{        gdej{        gg¦  «         ejz        d¦  «        ej{        f ejl        d dgdd gg¦  «         ejz        d¦  «        d€f ejl        d dgdd€gg¦  «         ejz        d¦  «        d€f ejl        d€dgdd€gg¦  «        ej{        d€f ejl        d€dgd€d gg¦  «         ejz        d¦  «        d€f ejl        d d€gdd€gg¦  «         ejz        d¦  «        d€fg
¦  «        d�„ ¦   «         Z|ejG         H                    d‚ej{        d€g¦  «        dƒ„ ¦   «         Z}ejG         H                    d‚ej{        d€g¦  «        d„„ ¦   «         Z~ejG         H                    d‚ej{        d€g¦  «        d…„ ¦   «         Zd†„ Z€d‡„ Z�dˆ„ Z‚d‰„ ZƒdŠ„ Z„d‹„ Z…ejG         H                    dŒe%e1e2e$e3e!f¦  «        d�„ ¦   «         Z†ejG         H                    dŒe%e1e2e$e3e!f¦  «        ejG         H                    de?¦  «        dŽ„ ¦   «         ¦   «         Z‡d�„ Zˆd�„ Z‰d‘„ ZŠejG         H                    d’d“e%fd”e!fg¦  «        ejG         H                    de?¦  «        d•„ ¦   «         ¦   «         Z‹ejG         H                    de?¦  «        d–„ ¦   «         ZŒd—„ Z�d˜„ ZŽd™„ Z�dš„ Z�ejG         H                    de?¦  «        d›„ ¦   «         Z‘dœ„ Z’d�„ Z“dž„ Z”ejG         H                    dŸddg¦  «        ejG         H                    dd d¡g¦  «        ejG         H                    d¢e,e/g¦  «        d£„ ¦   «         ¦   «         ¦   «         Z•ejG         H                    dd d¡g¦  «        d¤„ ¦   «         Z–ejG         H                    dg d¥¢¦  «        ejG         H                    d¦dadgd§d¨g¬Z¦  «        d©„ ¦   «         ¦   «         Z—ejG         H                    dªg d«¢dg d¬¢g d­¢g d®¢gfg d«¢d¯d°gd±d²gd²d±gd³d²ggfg¦  «        d´„ ¦   «         Z˜dµ„ Z™ejG         H                    de?¦  «        d¶„ ¦   «         ZšdS )¸é    N)ÚGeneratorType)Úlinalg)Úissparse)ÚcdistÚ	cityblockÚcosineÚ	minkowskiÚpdistÚ
squareform)Ú
wminkowski)r	   )Úconfig_context)ÚDataConversionWarning)ÚPAIRED_DISTANCESÚPAIRWISE_BOOLEAN_FUNCTIONSÚPAIRWISE_DISTANCE_FUNCTIONSÚPAIRWISE_KERNEL_FUNCTIONSÚ_euclidean_distances_upcastÚadditive_chi2_kernelÚcheck_paired_arraysÚcheck_pairwise_arraysÚchi2_kernelÚcosine_distancesÚcosine_similarityÚeuclidean_distancesÚhaversine_distancesÚlaplacian_kernelÚlinear_kernelÚmanhattan_distancesÚnan_euclidean_distancesÚpaired_cosine_distancesÚpaired_distancesÚpaired_euclidean_distancesÚpaired_manhattan_distancesÚpairwise_distancesÚpairwise_distances_argminÚpairwise_distances_argmin_minÚpairwise_distances_chunkedÚpairwise_kernelsÚpolynomial_kernelÚ
rbf_kernelÚsigmoid_kernel)Ú	normalize)Úassert_allcloseÚassert_almost_equalÚassert_array_equalÚignore_warnings)ÚBSR_CONTAINERSÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚDOK_CONTAINERSÚparse_versionÚ
sp_version)ÚParallelÚdelayedc                 óÚ	  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          |d¬¦  «        }t          |¦  «        }t          ||¦  «         |j        |j        cxk    r| k    sn J ‚|                     d¦  «                             | d¬¦  «        }t          ||d¬¦  «        }t          ||¦  «        }t          ||¦  «         |j        |j        cxk    r| k    sn J ‚|                     d¦  «                             | d¬¦  «        }|                     d¦  «                             | d¬¦  «        }t           j	        |d<   t           j	        |d<   t          ||d	¬¦  «        }t          ||¦  «        }	t          ||	¦  «         |j        |	j        cxk    r| k    sn J ‚t          d
„ |D ¦   «         ¦  «        }
t          d„ |D ¦   «         ¦  «        }t          |
|d¬¦  «        }t          ||¦  «         |j        |j        cxk    r| k    sn J ‚|                     d¦  «                             | d¬¦  «        }|d d …df         dz
  dz  t           j        z  dz  |d d …df<   |d d …df         dz
  dz  t           j        z  |d d …df<   t          |d¬¦  «        }t          |¦  «        }t          ||¦  «         |                     d¦  «                             | d¬¦  «        }|d d …df         dz
  dz  t           j        z  dz  |d d …df<   |d d …df         dz
  dz  t           j        z  |d d …df<   t          ||d¬¦  «        }t          ||¦  «        }t          ||¦  «         t          |d¬¦  «        }t          |t          ¬¦  «        }|j        d         |j        d         k    sJ ‚|j        d         |j        d         k    sJ ‚t          ||¦  «         t          ||d¬¦  «        }t          ||t          ¬¦  «        }|j        d         |j        d         k    sJ ‚|j        d         |j        d         k    sJ ‚t          ||¦  «         t          ||d¬¦  «        }t          ||t           ¬¦  «        }|j        d         |j        d         k    sJ ‚|j        d         |j        d         k    sJ ‚t          ||¦  «         d S )Nr   ©é   é   F©ÚcopyÚ	euclidean©Úmetric©é   r=   ©r   r   Únan_euclideanc                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS © rI   ©Ú.0Úvs     úb/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/metrics/tests/test_pairwise.pyú
<listcomp>zEtest_pairwise_distances_for_dense_data.<locals>.<listcomp>.<listcomp>j   ó   € Ð,Ð,Ð, 1˜QÐ,Ð,Ð,ó    ©Útuple©rK   Úrows     rM   rN   z:test_pairwise_distances_for_dense_data.<locals>.<listcomp>j   ó/   € Ð;Ð;Ð;°#•eÐ,Ð,¨Ð,Ñ,Ô,Ñ-Ô-Ð;Ð;Ð;rP   c                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS rI   rI   rJ   s     rM   rN   zEtest_pairwise_distances_for_dense_data.<locals>.<listcomp>.<listcomp>k   rO   rP   rQ   rS   s     rM   rN   z:test_pairwise_distances_for_dense_data.<locals>.<listcomp>k   rU   rP   ©r<   rD   ç      à?rD   é   Ú	haversine)rD   rD   r   Ú	manhattanr   )ÚnpÚrandomÚRandomStateÚrandom_sampleÚastyper$   r   r-   ÚdtypeÚnanr   rR   Úpir   r   Úshaper   )Úglobal_dtypeÚrngÚXÚSÚS2ÚYÚX_maskedÚY_maskedÚS_maskedÚ	S2_maskedÚX_tuplesÚY_tupless               rM   Ú&test_pairwise_distances_for_dense_datarr   M   s0  € å
Œ)×
Ò
 Ñ
"Ô
"€Cð 	×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€AÝ˜1 [Ð1Ñ1Ô1€AÝ	˜QÑ	Ô	€BÝ�A�rÑÔÐØŒ7�b”hÐ.Ð.Ò.Ð. ,Ò.Ð.Ð.Ð.Ð.Ð.ð 	×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€AÝ˜1˜a¨Ð4Ñ4Ô4€AÝ	˜Q Ñ	"Ô	"€BÝ�A�rÑÔÐØŒ7�b”hÐ.Ð.Ò.Ð. ,Ò.Ð.Ð.Ð.Ð.Ð.ð × Ò  Ñ(Ô(×/Ò/°À5Ð/ÑIÔI€HØ× Ò  Ñ(Ô(×/Ò/°À5Ð/ÑIÔI€HÝ”V€HˆT�NÝ”V€HˆT�NÝ! (¨H¸_ÐMÑMÔM€HÝ'¨°(Ñ;Ô;€IÝ�H˜iÑ(Ô(Ð(ØŒ>˜Yœ_Ð<Ð<Ò<Ð<°Ò<Ð<Ð<Ð<Ð<Ð<õ Ð;Ð;¸Ð;Ñ;Ô;Ñ<Ô<€HÝÐ;Ð;¸Ð;Ñ;Ô;Ñ<Ô<€HÝ	˜H h°{Ð	CÑ	CÔ	C€BÝ�A�rÑÔÐØŒ7�b”hÐ.Ð.Ò.Ð. ,Ò.Ð.Ð.Ð.Ð.Ð.ð
 	×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€AØ����A�Œw˜‰} Ñ!¥B¤EÑ)¨AÑ-€A€a€a€aˆ€d�GØ����A�Œw˜‰} Ñ!¥B¤EÑ)€A€a€a€aˆ€d�GÝ˜1 [Ð1Ñ1Ô1€AÝ	˜QÑ	Ô	€BÝ�A�rÑÔÐð 	×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€AØ����A�Œw˜‰} Ñ!¥B¤EÑ)¨AÑ-€A€a€a€aˆ€d�GØ����A�Œw˜‰} Ñ!¥B¤EÑ)€A€a€a€aˆ€d�GÝ˜1˜a¨Ð4Ñ4Ô4€AÝ	˜Q Ñ	"Ô	"€BÝ�A�rÑÔÐõ
 	˜1 [Ð1Ñ1Ô1€AÝ	˜A¥iÐ	0Ñ	0Ô	0€BØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#ØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#Ý�A�rÑÔÐõ 	˜1˜a¨Ð4Ñ4Ô4€AÝ	˜A˜q­Ð	3Ñ	3Ô	3€BØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#ØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#Ý�A�rÑÔÐõ
 	˜1˜a¨Ð1Ñ1Ô1€AÝ	˜A˜q­Ð	0Ñ	0Ô	0€BØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#ØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#Ý�A�rÑÔÐÐÐrP   Úcoo_containerÚcsc_containerÚbsr_containerÚcsr_containerc                 óö  — t           j                             d¦  «        }|                     d¦  «                             |d¬¦  «        }|                     d¦  «                             |d¬¦  «        } ||¦  «        } ||¦  «        }	t          ||	d¬¦  «        }
t          ||	¦  «        }t          |
|¦  «         |
j        |j        cxk    r|k    sn J ‚t          ||	d¬¦  «        }
t          ||	¦  «        }t          |
|¦  «         |
j        |j        cxk    r|k    sn J ‚t          | ||¦  «        d	¬¦  «        }
t           ||¦  «         | |¦  «        ¦  «        }t          |
|¦  «         |t           j        k    r|
j        |j        cxk    r|k    sn J ‚nMt          j        t          ¦  «        5  |
j        |j        cxk    r|k    sn J ‚	 d d d ¦  «         n# 1 swxY w Y   t          ||¦  «        }t          |
|¦  «         |t           j        k    r|
j        |j        cxk    r|k    sn J ‚nMt          j        t          ¦  «        5  |
j        |j        cxk    r|k    sn J ‚	 d d d ¦  «         n# 1 swxY w Y   d
di}t          ||fddi|¤Ž}
t          ||fdt          i|¤Ž}t          |
|¦  «         d
di}t          |fddi|¤Ž}
t          |fdt          i|¤Ž}t          |
|¦  «         t          j        t           ¦  «        5  t          |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t           ¦  «        5  t          ||	d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r;   Fr>   rC   r@   rA   r   r\   Úpç       @rB   r	   )r]   r^   r_   r`   ra   r$   r   r-   rb   r   r   Úfloat64ÚpytestÚraisesÚAssertionErrorr	   Ú	TypeError)rs   rt   ru   rv   rf   rg   rh   rk   ÚX_sparseÚY_sparseri   rj   Úkwdss                rM   Ú'test_pairwise_distances_for_sparse_datar‚   œ   sì  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€AØ×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€Að ˆ}˜QÑÔ€HØˆ}˜QÑÔ€Hå˜8 X°kÐBÑBÔB€AÝ	˜X xÑ	0Ô	0€BÝ�A�rÑÔÐØŒ7�b”hÐ.Ð.Ò.Ð. ,Ò.Ð.Ð.Ð.Ð.Ð.å˜8 X°hÐ?Ñ?Ô?€AÝ	˜( HÑ	-Ô	-€BÝ�A�rÑÔÐØŒ7�b”hÐ.Ð.Ò.Ð. ,Ò.Ð.Ð.Ð.Ð.Ð.å˜8 ] ]°1Ñ%5Ô%5¸kÐJÑJÔJ€AÝ	˜]˜]¨1Ñ-Ô-¨}¨}¸QÑ/?Ô/?Ñ	@Ô	@€BÝ�A�rÑÔÐØ•r”zÒ!Ð!ØŒw˜"œ(Ð2Ð2Ò2Ð2 lÒ2Ð2Ð2Ð2Ð2Ð2Ð2õ
 Œ]�>Ñ*Ô*ð 	7ð 	7Ø”7˜bœhÐ6Ð6Ò6Ð6¨,Ò6Ð6Ð6Ð6Ð6Ð6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7õ 
˜Q Ñ	"Ô	"€BÝ�A�rÑÔÐØ•r”zÒ!Ð!ØŒw˜"œ(Ð2Ð2Ò2Ð2 lÒ2Ð2Ð2Ð2Ð2Ð2Ð2õ
 Œ]�>Ñ*Ô*ð 	7ð 	7Ø”7˜bœhÐ6Ð6Ò6Ð6¨,Ò6Ð6Ð6Ð6Ð6Ð6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð �ˆ:€DÝ˜1˜aÐ<Ð<¨Ð<°tÐ<Ð<€AÝ	˜A˜qÐ	;Ð	;­Ð	;°dÐ	;Ð	;€BÝ�A�rÑÔÐð �ˆ:€DÝ˜1Ð9Ð9 [Ð9°DÐ9Ð9€AÝ	˜AÐ	8Ð	8¥iÐ	8°4Ð	8Ð	8€BÝ�A�rÑÔÐõ 
Œ•yÑ	!Ô	!ð 9ð 9Ý˜8¨KÐ8Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9å	Œ•yÑ	!Ô	!ð <ð <Ý˜1˜h¨{Ð;Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <sH   Æ6GÇG#Ç&G#ÉI8É8I<É?I<ÌL*Ì*L.Ì1L.ÍM.Í.M2Í5M2rB   c           	      óÚ  — t           j                             d¦  «        }|                     dd¦  «        }|                     ¦   «         }d|d         z
  |d<   t          t          ¬¦  «        5  |d fD ]K}t          ||| ¬¦  «        }t          j        |dddd¬	¦  «         t          j	        |dk    ¦  «        dk    sJ ‚ŒL	 d d d ¦  «         n# 1 swxY w Y   d
| z  }t          j        t          |¬¦  «        5  t          || ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          |¬¦  «        5  t          |                     t          ¦  «        || ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «         5  t          j        dt          ¦  «         t          |                     t          ¦  «        | ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r<   r=   rZ   rE   )ÚcategoryrA   F)rc   ÚposinfÚneginfr?   z+Data was converted to boolean for metric %s©Úmatch©rk   rB   Úerror)r]   r^   r_   Úrandnr?   r0   r   r$   Ú
nan_to_numÚsumr{   Úwarnsra   ÚboolÚwarningsÚcatch_warningsÚsimplefilter)rB   rg   rh   rk   ÚZÚresÚmsgs          rM   Útest_pairwise_boolean_distancer–   á   sÖ  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�!�Q‰Œ€AØ	�Š‰Œ€AØ�!�D”'‰k€A€d�Gõ 
Õ"7Ð	8Ñ	8Ô	8ð )ð )Ø�T�ð 	)ð 	)ˆAÝ$ Q¨°&Ð9Ñ9Ô9ˆCÝŒM˜# 1¨Q°q¸uÐEÑEÔEÐEÝ”6˜# š(Ñ#Ô# qÒ(Ð(Ð(Ð(Ð(ð	)ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð 8¸&Ñ
@€CÝ	ŒÕ+°3Ð	7Ñ	7Ô	7ð -ð -Ý˜1 VÐ,Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -õ 
ŒÕ+°3Ð	7Ñ	7Ô	7ð ?ð ?Ý˜1Ÿ8š8¥D™>œ>¨Q°vÐ>Ñ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?õ 
Ô	 Ñ	"Ô	"ð :ð :ÝÔ˜gÕ'<Ñ=Ô=Ð=Ý˜1Ÿ8š8¥D™>œ>°&Ð9Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð :ð :sJ   Á-ACÃCÃCÃ6DÄDÄDÄ:+E1Å1E5Å8E5ÆAG Ç G$Ç'G$c                  ó  — t           j                             d¦  «        } |                      dd¦  «        }t	          j        ¦   «         5  t	          j        dt          ¦  «         t          |d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r<   r=   rŠ   r	   rA   )	r]   r^   r_   r‹   r�   r‘   r’   r   r$   )rg   rh   s     rM   Útest_no_data_conversion_warningr˜      sÂ   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�!�Q‰Œ€AÝ	Ô	 Ñ	"Ô	"ð 2ð 2ÝÔ˜gÕ'<Ñ=Ô=Ð=Ý˜1 [Ð1Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s   Á	,BÂBÂ	BÚfuncc                 óÀ  — t          j        t          d¬¦  «        5   | t          j        d¦  «        d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | t          j        d¦  «        t          j        d¦  «        d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   | t          j        d¦  «        t          j        d¦  «        d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «        } | |d¬¦  «        }||u sJ ‚t          j        d¦  «        } | |t          j        d	¦  «        d¬¦  «        }||u sJ ‚ | t          j        d
ggd¬¦  «        d¬¦  «        }d|j        j        k    sJ ‚ | dggd¬¦  «        }t          |t          j	        ¦  «        sJ ‚d S )Nz.* shape .*r‡   )r<   é   ÚprecomputedrA   )r=   r=   )r=   r›   ©r<   r<   )r›   r›   rZ   Úint©rb   Úfç      ð?)
r{   r|   Ú
ValueErrorr]   ÚzerosÚarrayrb   ÚkindÚ
isinstanceÚndarray)r™   ri   rj   s      rM   Útest_pairwise_precomputedr¨   	  sÁ  € õ 
Œ•z¨Ð	7Ñ	7Ô	7ð 5ð 5Øˆ�RŒX�fÑÔ mÐ4Ñ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5õ 
Œ•z¨Ð	7Ñ	7Ô	7ð Gð GØˆ�RŒX�fÑÔ�rœx¨Ñ/Ô/¸ÐFÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ 
Œ•z¨Ð	7Ñ	7Ô	7ð Gð GØˆ�RŒX�fÑÔ�rœx¨Ñ/Ô/¸ÐFÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ 	Œ�ÑÔ€AØ	ˆˆa˜Ð	&Ñ	&Ô	&€BØ�ˆ7ˆ7ˆ7ˆ7å
Œ�ÑÔ€AØ	ˆˆa•”˜&Ñ!Ô!¨-Ð	8Ñ	8Ô	8€BØ�ˆ7ˆ7ˆ7ˆ7ð 	ˆ�RŒX˜�s�e 5Ð)Ñ)Ô)°-Ð@Ñ@Ô@€AØ�!”'”,ÒÐÐÐð 	ˆˆsˆeˆW˜]Ð+Ñ+Ô+€AÝ�a�œÑ$Ô$Ð$Ð$Ð$Ð$Ð$s5   œ AÁAÁAÁ.3B-Â-B1Â4B1Ã3DÄDÄDc                  ó¶   — t          j        t          d¬¦  «        5  t          t	          j        dd¦  «        d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz.* non-negative values.*r‡   r�   éÿÿÿÿrœ   rA   )r{   r|   r¢   r$   r]   ÚfullrI   rP   rM   Ú&test_pairwise_precomputed_non_negativer¬   '  s¯   € å	Œ•zÐ)CÐ	DÑ	DÔ	Dð Fð FÝ�2œ7 6¨2Ñ.Ô.°}ÐEÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð Fð Fs   œ%AÁAÁArZ   r<   ÚdoubleFr>   )Úwrx   c                 óŽ   — t          t          j        | ¦  «        t          j        |¦  «        fi |¤Ž}|                     ¦   «         S ©N)r*   r]   Ú
atleast_2dÚitem)ÚxÚyr�   ÚKs       rM   Úcallable_rbf_kernelr¶   1  s:   € å•2”= Ñ#Ô#¥R¤]°1Ñ%5Ô%5Ð>Ð>¸Ð>Ð>€Aà�6Š6‰8Œ8€OrP   zfunc, metric, kwdsr@   r	   z1.6.0z;wminkowski is now minkowski and it has been already tested.)Úreason)Úmarksr   Ú
polynomialÚdegreeÚgammaçš™™™™™¹?rb   c                 ó˜  — t           j                             d¦  «        }t          j        d|                     d¦  «        z  |¬¦  «        }t          j        d|                     d¦  «        z  |¬¦  «        } | |f|ddœ|¤Ž} | |f|ddœ|¤Ž}t          ||¦  «          | ||f|ddœ|¤Ž} | ||f|ddœ|¤Ž}t          ||¦  «         d S )	Nr   r<   r;   rŸ   ©r›   r=   rZ   ©rB   Ún_jobsrD   )r]   r^   r_   r¤   r`   r-   )	r™   rB   r�   rb   rg   rh   rk   ri   rj   s	            rM   Útest_pairwise_parallelrÁ   8  s
  € õL Œ)×
Ò
 Ñ
"Ô
"€CÝ
Œ��S×&Ò& vÑ.Ô.Ñ.°eÐ<Ñ<Ô<€AÝ
Œ��S×&Ò& vÑ.Ô.Ñ.°eÐ<Ñ<Ô<€AàˆˆQÐ0�v aÐ0Ð0¨4Ð0Ð0€AØ	ˆˆaÐ	1˜ qÐ	1Ð	1¨DÐ	1Ð	1€BÝ�A�rÑÔÐàˆˆQ�Ð3˜&¨Ð3Ð3¨dÐ3Ð3€AØ	ˆˆa�Ð	4˜6¨!Ð	4Ð	4¨tÐ	4Ð	4€BÝ�A�rÑÔÐÐÐrP   c                  óF   — t          dggd„ ¬¦  «        d         dk    sJ ‚d S )Nr¡   c                 ó   — dS )Nr<   rI   ©r³   r´   s     rM   ú<lambda>z9test_pairwise_callable_nonstrict_metric.<locals>.<lambda>o  s   € ¸1€ rP   rA   rE   r<   )r$   rI   rP   rM   Ú'test_pairwise_callable_nonstrict_metricrÆ   k  s3   € õ  ˜u˜g¨n¨nÐ=Ñ=Ô=¸dÔCÀqÒHÐHÐHÐHÐHÐHrP   )ÚrbfÚ	laplacianÚsigmoidr¹   ÚlinearÚchi2Úadditive_chi2c                 óŒ  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t          |          }t          || ¬¦  «        } ||¦  «        }t          ||¦  «         t          ||| ¬¦  «        } |||¬¦  «        }t          ||¦  «         t          d„ |D ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        }	t          ||	| ¬¦  «        }t          ||¦  «          ||¦  «        }
 ||¦  «        }| d	v rd S t          |
|| ¬¦  «        }t          ||¦  «         d S )
Nr   r;   rC   rA   r‰   ©rk   c                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS rI   rI   rJ   s     rM   rN   z4test_pairwise_kernels.<locals>.<listcomp>.<listcomp>ˆ  rO   rP   rQ   rS   s     rM   rN   z)test_pairwise_kernels.<locals>.<listcomp>ˆ  rU   rP   c                 ó@   — g | ]}t          d „ |D ¦   «         ¦  «        ‘ŒS )c                 ó   — g | ]}|‘ŒS rI   rI   rJ   s     rM   rN   z4test_pairwise_kernels.<locals>.<listcomp>.<listcomp>‰  rO   rP   rQ   rS   s     rM   rN   z)test_pairwise_kernels.<locals>.<listcomp>‰  rU   rP   )rË   rÌ   )r]   r^   r_   r`   r   r(   r-   rR   )rB   rv   rg   rh   rk   ÚfunctionÚK1ÚK2rp   rq   r   r€   s               rM   Útest_pairwise_kernelsrÖ   s  sg  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AÝ(¨Ô0€Hå	˜! FÐ	+Ñ	+Ô	+€BØ	ˆ�!‰Œ€BÝ�B˜ÑÔÐå	˜!˜q¨Ð	0Ñ	0Ô	0€BØ	ˆ�!�qÐ	Ñ	Ô	€BÝ�B˜ÑÔÐåÐ;Ð;¸Ð;Ñ;Ô;Ñ<Ô<€HÝÐ;Ð;¸Ð;Ñ;Ô;Ñ<Ô<€HÝ	˜( H°VÐ	<Ñ	<Ô	<€BÝ�B˜ÑÔÐð ˆ}˜QÑÔ€HØˆ}˜QÑÔ€HØÐ*Ð*Ð*àˆÝ	˜( h°vÐ	>Ñ	>Ô	>€BÝ�B˜ÑÔÐÐÐrP   c                  ój  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t          }ddi}t          |f||dœ|¤Ž}t          |fd|i|¤Ž}t          ||¦  «         t          |f||dœ|¤Ž}t          |fd|i|¤Ž}t          ||¦  «         d S )Nr   r;   rC   r»   r¼   r‰   rk   )r]   r^   r_   r`   r¶   r(   r*   r-   )rg   rh   rk   rB   r�   rÔ   rÕ   s          rM   Útest_pairwise_kernels_callablerØ   —  sá   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€Aå €FØ�Sˆ>€DÝ	˜!Ð	8˜q¨Ð	8Ð	8°4Ð	8Ð	8€BÝ	�AÐ	#Ð	#˜Ð	#˜dÐ	#Ð	#€BÝ�B˜ÑÔÐõ 
˜!Ð	8˜q¨Ð	8Ð	8°4Ð	8Ð	8€BÝ	�AÐ	#Ð	#˜Ð	#˜dÐ	#Ð	#€BÝ�B˜ÑÔÐÐÐrP   c                  óŒ  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t	          ||d¬¦  «        }dddœ}t          ||fdd	d
œ|¤Ž}t          ||¦  «         t          j        t          ¦  «        5  t          ||fddi|¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r;   rC   r¼   ©r»   z:))r»   ÚblablarÇ   T)rB   Úfilter_paramsrB   )
r]   r^   r_   r`   r*   r(   r-   r{   r|   r~   )rg   rh   rk   rµ   ÚparamsrÕ   s         rM   Ú"test_pairwise_kernels_filter_paramrÞ   ª  s  € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AÝ�1�a˜sÐ#Ñ#Ô#€AØ dÐ+Ð+€FÝ	˜!˜QÐ	K u¸DÐ	KÐ	KÀFÐ	KÐ	K€BÝ�A�rÑÔÐå	Œ•yÑ	!Ô	!ð 7ð 7Ý˜˜AÐ6Ð6 eÐ6¨vÐ6Ð6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7s   ÂB9Â9B=Ã B=zmetric, funcc                 óÚ  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t	          ||| ¬¦  «        } |||¦  «        }t          ||¦  «          | ||¦  «         ||¦  «        ¦  «        }t          ||¦  «         | t          v r<t          |          ||¦  «        }	t          j        |	¦  «        }	t          |	|¦  «         d S d S )Nr   r;   rA   )r]   r^   r_   r`   r!   r-   r   Údiag)
rB   r™   rv   rg   rh   rk   ri   rj   ÚS3Ú	distancess
             rM   Útest_paired_distancesrã   ·  sö   € õ Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜&Ñ!Ô!€Aà×Ò˜&Ñ!Ô!€Aå˜˜A fÐ-Ñ-Ô-€AØ	ˆˆa�‰Œ€BÝ�A�rÑÔÐØ	ˆˆmˆm˜AÑÔ  ¨aÑ 0Ô 0Ñ	1Ô	1€BÝ�A�rÑÔÐØÕ,Ð,Ð,õ 0°Ô7¸¸1Ñ=Ô=ˆ	Ý”G˜IÑ&Ô&ˆ	Ý˜	 1Ñ%Ô%Ð%Ð%Ð%ð -Ð,rP   c                 ó  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }|                     d¦  «                             | d¬¦  «        }t          ||d¬¦  «        }t          ||d„ ¬¦  «        }t          ||¦  «         |                     d¦  «        }t          j        t          ¦  «        5  t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr   r;   Fr>   r\   rA   c                 óX   — t          j        | |z
  ¦  «                             d¬¦  «        S )Nr   ©Úaxis)r]   Úabsr�   rÄ   s     rM   rÅ   z0test_paired_distances_callable.<locals>.<lambda>Ø  s#   € µB´F¸1¸q¹5±M´M×4EÒ4EÈ1Ð4EÑ4MÔ4M€ rP   r¾   )
r]   r^   r_   r`   ra   r!   r-   r{   r|   r¢   )rf   rg   rh   rk   ri   rj   s         rM   Útest_paired_distances_callableré   Î  s:  € õ Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€Aà×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€Aå˜˜A kÐ2Ñ2Ô2€AÝ	˜!˜QÐ'MÐ'MÐ	NÑ	NÔ	N€BÝ�A�rÑÔÐð 	×Ò˜&Ñ!Ô!€AÝ	Œ•zÑ	"Ô	"ð ð Ý˜˜AÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÃC5Ã5C9Ã<C9Údok_containerc                 ó~
  — t          j        dgdgg|¬¦  «        }t          j        dgdgg|¬¦  «        } | |¦  «        } |||¬¦  «        }ddg}ddg}ddg}	t          ||d¬	¦  «        \  }
}t          ||d¬	¦  «        }t	          |
|¦  «         t	          ||¦  «         t	          ||¦  «         t          ||d¬	¦  «        \  }}t          ||d¬	¦  «        }t	          ||¦  «         t	          ||¦  «         t	          ||¦  «         t          |¦  «        t           j        k    sJ ‚t          |¦  «        t           j        k    sJ ‚t          ||d
¬	¦  «        \  }
}t          ||dddi¬¦  «        \  }}t          ||d
¬	¦  «        }t          ||dddi¬¦  «        }t	          ||	¦  «         t	          ||	¦  «         t	          |
|¦  «         t	          ||¦  «         t	          ||¦  «         t	          ||¦  «         t          ||d¬	¦  «        \  }
}t          ||d¬	¦  «        }t	          |
|¦  «         t	          ||¦  «         t	          ||¦  «         t          ||d¬	¦  «        \  }}t          ||d¬	¦  «        }t	          ||¦  «         t	          ||¦  «         t	          ||¦  «         t          ||t          ddi¬¦  «        \  }
}t	          |
|¦  «         t	          ||¦  «         t          ||dddi¬¦  «        \  }
}t	          |
|¦  «         t	          ||¦  «         t           j         	                    d¦  «        }| 
                    dd¦  «        }| 
                    dd¦  «        }t          ||d¬	¦  «        }|                     d¬¦  «        }||t          t          |¦  «        ¦  «        f         }t          ||dd¬¦  «        \  }}t	          ||d¬¦  «         t	          ||d¬¦  «         t          ||d¬¦  «        \  }}t          ||d¬¦  «        \  }}t	          ||¦  «         t          ||¦  «         t          ||d¬¦  «        \  }}t          ||d¬¦  «        \  }}t	          ||¦  «         t          ||¦  «         t          ||d¬¦  «        }t          ||d¬¦  «        }t          ||¦  «         t          ||d¬¦  «        }t          ||d¬¦  «        }t          ||¦  «         t          ||¦  «        }t          t          j        |¦  «        t          j        |¦  «        ¦  «        }t          ||¦  «         d S )Nr   rZ   rŸ   éþÿÿÿr›   rD   r=   r@   rA   ÚsqeuclideanÚsquaredT)rB   Úmetric_kwargsr\   rx   r	   éa   é•   éo   ræ   )rç   rB   çH¯¼šò×z>©Úrtol)r]   Úasarrayr&   r%   r-   Útyper§   r	   r^   r_   r‹   r$   ÚargminÚrangeÚlenr/   Úasfortranarray)rê   rv   rf   rh   rk   ÚXspÚYspÚexpected_idxÚexpected_valsÚexpected_vals_sqÚidxÚvalsÚidx2ÚidxspÚvalsspÚidxsp2Úvals2Úidx3Úidx4rg   ÚdistÚdist_orig_indÚdist_orig_valÚdist_chunked_indÚdist_chunked_valÚargmin_0Údist_0Úargmin_1Údist_1Úargmin_C_contiguousÚargmin_F_contiguouss                                  rM   Ú"test_pairwise_distances_argmin_minr  â  sÓ  € õ 	Œ
�Q�C˜!˜�: \Ð2Ñ2Ô2€AÝ
Œ
�R�D˜1˜#�; lÐ3Ñ3Ô3€Aà
ˆ-˜Ñ
Ô
€CØ
ˆ-˜ Ð
.Ñ
.Ô
.€Cà�q�6€LØ˜�F€MØ˜1�vÐõ .¨a°¸;ÐGÑGÔG�I€CˆÝ$ Q¨°+Ð>Ñ>Ô>€DÝ�C˜Ñ&Ô&Ð&Ý�D˜,Ñ'Ô'Ð'Ý�D˜-Ñ(Ô(Ð(å1°#°sÀ;ÐOÑOÔO�M€Eˆ6Ý& s¨C¸ÐDÑDÔD€FÝ�E˜<Ñ(Ô(Ð(Ý�F˜LÑ)Ô)Ð)Ý�F˜MÑ*Ô*Ð*å�‰;Œ;�"œ*Ò$Ð$Ð$Ð$Ý�‰<Œ<�2œ:Ò%Ð%Ð%Ð%õ .¨a°¸=ÐIÑIÔI�I€CˆÝ/Ø	ˆ1�[°¸DÐ0Aðñ ô �K€Dˆ%õ % Q¨°-Ð@Ñ@Ô@€DÝ$Ø	ˆ1�[°¸DÐ0Aðñ ô €Dõ �DÐ*Ñ+Ô+Ð+Ý�EÐ+Ñ,Ô,Ð,å�C˜Ñ&Ô&Ð&Ý�D˜,Ñ'Ô'Ð'Ý�D˜,Ñ'Ô'Ð'Ý�D˜,Ñ'Ô'Ð'õ .¨a°¸;ÐGÑGÔG�I€CˆÝ$ Q¨°+Ð>Ñ>Ô>€DÝ�C˜Ñ&Ô&Ð&Ý�D˜,Ñ'Ô'Ð'Ý�D˜-Ñ(Ô(Ð(å1°#°sÀ;ÐOÑOÔO�M€Eˆ6Ý& s¨C¸ÐDÑDÔD€FÝ�E˜<Ñ(Ô(Ð(Ý�F˜LÑ)Ô)Ð)Ý�F˜MÑ*Ô*Ð*õ .Ø	ˆ1•Y¨s°A¨hðñ ô �I€Cˆõ �C˜Ñ&Ô&Ð&Ý�D˜-Ñ(Ô(Ð(õ .Ø	ˆ1�[°°a°ðñ ô �I€Cˆõ �C˜Ñ&Ô&Ð&Ý�D˜-Ñ(Ô(Ð(õ Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�"�cÑÔ€AØ�	Š	�#�sÑÔ€Aå˜a ¨;Ð7Ñ7Ô7€DØ—K’K Q�KÑ'Ô'€MØ˜­­c°-Ñ.@Ô.@Ñ(AÔ(AÐAÔB€Må)FØ	ˆ1�1˜[ð*ñ *ô *Ñ&ÐÐ&õ �MÐ#3¸$Ð?Ñ?Ô?Ð?Ý�MÐ#3¸$Ð?Ñ?Ô?Ð?õ 5°Q¸ÀÐBÑBÔBÑ€HˆfÝ4°Q¸ÀÐBÑBÔBÑ€Hˆfå�F˜FÑ#Ô#Ð#Ý�x Ñ*Ô*Ð*å4°Q¸ÀÐBÑBÔBÑ€HˆfÝ4°Q¸ÀÐBÑBÔBÑ€Hˆfå�F˜FÑ#Ô#Ð#Ý�x Ñ*Ô*Ð*õ )¨¨A°AÐ6Ñ6Ô6€HÝ(¨¨A°AÐ6Ñ6Ô6€Hå�x Ñ*Ô*Ð*å(¨¨A°AÐ6Ñ6Ô6€HÝ(¨¨A°AÐ6Ñ6Ô6€Hå�x Ñ*Ô*Ð*õ 4°A°qÑ9Ô9ÐÝ3Ý
Ô˜!ÑÔ�bÔ/°Ñ2Ô2ñô Ðõ Ð*Ð,?Ñ@Ô@Ð@Ð@Ð@rP   c                 ó   — | d d …d d…f         S )Néd   rI   ©r
  Ústarts     rM   Ú_reduce_funcr  ]  s   € Ø����4�C�4�Œ=ÐrP   c                 óì  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          |¦  «        d d …d d…f         }t          |d t          d¬¦  «        }t          |t          ¦  «        sJ ‚t          |¦  «        }t          |¦  «        dk    sJ ‚|d         j        |j        k    sJ ‚t          t          j        |¦  «        |d	¬
¦  «         d S )Nr   )i�  r=   Fr>   r  ç      ð>©Úreduce_funcÚworking_memoryrZ   ró   ©Úatol)r]   r^   r_   r`   ra   r$   r'   r  r¦   r   Úlistrú   rb   r-   Úvstack)rf   rg   rh   ri   ÚS_chunkss        rM   Ú&test_pairwise_distances_chunked_reducer%  a  só   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€Aå˜1ÑÔ˜a˜a˜a  # ˜gÔ&€AÝ)Ø	ˆ4�\¸&ðñ ô €Hõ �h¥Ñ.Ô.Ð.Ð.Ð.Ý�H‰~Œ~€HÝˆx‰=Œ=˜1ÒÐÐÐØ�AŒ;Ô ¤Ò'Ð'Ð'Ð'õ •B”I˜hÑ'Ô'¨°Ð6Ñ6Ô6Ð6Ð6Ð6rP   c                 ól  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          |d d„ d¬¦  «        }t          |t          ¦  «        sJ ‚t          |¦  «        }t          |¦  «        dk    sJ ‚t          d	„ |D ¦   «         ¦  «        sJ ‚d S )
Nr   ©é
   r=   Fr>   c                 ó   — d S r°   rI   r  s     rM   rÅ   z=test_pairwise_distances_chunked_reduce_none.<locals>.<lambda>w  s   € °€ rP   r  r  rZ   c              3   ó   K  — | ]}|d u V — Œ	d S r°   rI   )rK   Úchunks     rM   ú	<genexpr>z>test_pairwise_distances_chunked_reduce_none.<locals>.<genexpr>|  s&   è è € Ð3Ð3 ˆu˜ˆ}Ð3Ð3Ð3Ð3Ð3Ð3rP   )r]   r^   r_   r`   ra   r'   r¦   r   r"  rú   Úall)rf   rg   rh   r$  s       rM   Ú+test_pairwise_distances_chunked_reduce_noner.  r  sÁ   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜'Ñ"Ô"×)Ò)¨,¸UÐ)ÑCÔC€AÝ)Ø	ˆ4Ð5Ð5Àfðñ ô €Hõ �h¥Ñ.Ô.Ð.Ð.Ð.Ý�H‰~Œ~€HÝˆx‰=Œ=˜1ÒÐÐÐÝÐ3Ð3¨(Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3rP   Úgood_reducec                 ó    — t          | ¦  «        S r°   ©r"  ©ÚDr  s     rM   rÅ   rÅ   ‚  s   € �˜a™œ€ rP   c                 ó*   — t          j        | ¦  «        S r°   )r]   r¤   r2  s     rM   rÅ   rÅ   ƒ  s   € �œ !™œ€ rP   c                 ó>   — t          | ¦  «        t          | ¦  «        fS r°   r1  r2  s     rM   rÅ   rÅ   „  s   € �$˜q™'œ'¥4¨¡7¤7Ð+€ rP   c                 ó   — g | ]}|fd „‘ŒS )c                 ó   —  || ¦  «        S r°   rI   )r3  r  Úscipy_csr_types      rM   rÅ   z<listcomp>.<lambda>‡  s   € ¸¸ÀqÑ8IÔ8I€ rP   rI   )rK   r8  s     rM   rN   rN   †  s1   € ð ð ð àð )7ÐIÐIÐIðð ð rP   c                 ó   — g | ]}|fd „‘ŒS )c                 ó\   —  || ¦  «        t          j        | ¦  «        t          | ¦  «        fS r°   )r]   r¤   r"  )r3  r  Úscipy_dok_types      rM   rÅ   z<listcomp>.<lambda>‹  s*   € ØˆN˜1ÑÔÝŒH�Q‰KŒKÝ�‰GŒGð9
€ rP   rI   )rK   r;  s     rM   rN   rN   Š  s9   € ð ð ð ð ð )7ð 	
ð 	
ð 	
ðð ð rP   c                 óš   — t          j        d¦  «                             dd¦  «        }t          |d | d¬¦  «        }t	          |¦  «         d S )Nr(  rª   rZ   é@   r  )r]   ÚarangeÚreshaper'   Únext)r/  rh   r$  s      rM   Ú,test_pairwise_distances_chunked_reduce_validrA    sO   € õ* 	Œ	�"‰Œ×Ò˜b !Ñ$Ô$€AÝ)Ø	ˆ4˜[¸ðñ ô €Hõ 	ˆ�N„N€N€N€NrP   )Ú
bad_reduceÚerr_typeÚmessagec                 ó>   — t          j        | | dd …         g¦  «        S ©Nrª   ©r]   Úconcatenate©r3  Úss     rM   rÅ   rÅ   Ÿ  s   € �œ¨¨A¨b¨c¨c¬F¨Ñ4Ô4€ rP   zlength 11\..* input: 10\.c                 óB   — | t          j        | | dd …         g¦  «        fS rF  rG  rI  s     rM   rÅ   rÅ   ¤  s!   € ˜!�Rœ^¨Q°°"°#°#´¨KÑ8Ô8Ð9€ rP   z!length \(10, 11\)\..* input: 10\.c                 ó   — | d d…         | fS )Né	   rI   rI  s     rM   rÅ   rÅ   ¨  s   € �q˜˜!˜”u˜a�j€ rP   z length \(9, 10\)\..* input: 10\.c                 ó   — dS )Né   rI   rI  s     rM   rÅ   rÅ   ª  s   € ˜€ rP   z2returned 7\. Expected sequence\(s\) of length 10\.c                 ó   — dS )N)rO  é   rI   rI  s     rM   rÅ   rÅ   ¯  s   € ˜€ rP   z9returned \(7, 8\)\. Expected sequence\(s\) of length 10\.c                 ó.   — t          j        d¦  «        dfS )Nr(  rM  )r]   r>  rI  s     rM   rÅ   rÅ   ´  s   € �"œ) B™-œ-¨Ð+€ rP   z-, 9\)\. Expected sequence\(s\) of length 10\.c                 ó"  — t          j        d¦  «                             dd¦  «                             | d¬¦  «        }t	          |d |d¬¦  «        }t          j        ||¬¦  «        5  t          |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr(  rª   rZ   Fr>   r=  r  r‡   )r]   r>  r?  ra   r'   r{   r|   r@  )rf   rB  rC  rD  rh   r$  s         rM   Ú.test_pairwise_distances_chunked_reduce_invalidrT  ›  sØ   € õD 	Œ	�"‰Œ×Ò˜b !Ñ$Ô$×+Ò+¨L¸uÐ+ÑEÔE€AÝ)Ø	ˆ4˜Z¸ðñ ô €Hõ 
Œ�x wÐ	/Ñ	/Ô	/ð ð ÝˆX‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á'BÂBÂBc                 óh  — t          | |||¬¦  «        }t          |t          ¦  «        sJ ‚t          |¦  «        }|€| n|}t	          |¦  «        dz  dz  }|D ]"}|j        }|t          ||¦  «        dz  k    sJ ‚Œ#t          j        |¦  «        }t          | ||¬¦  «        }	t          ||	d¬¦  «         d S )N©r  rB   rQ  g      °>i   rA   ró   r   )r'   r¦   r   r"  rú   ÚnbytesÚmaxr]   r#  r$   r-   )
rh   rk   r  rB   ÚgenÚblockwise_distancesÚmin_block_mibÚblockÚmemory_usedri   s
             rM   Ú check_pairwise_distances_chunkedr^  Å  sØ   € Ý
$ Q¨¸.ÐQWÐ
XÑ
XÔ
X€CÝ�c�=Ñ)Ô)Ð)Ð)Ð)Ý˜s™)œ)ÐØˆYˆˆ˜A€AÝ˜‘F”F˜Q‘J Ñ'€Mà$ð Ið IˆØ”lˆØ�c .°-Ñ@Ô@À5ÑHÒHÐHÐHÐHÐHåœ)Ð$7Ñ8Ô8ÐÝ˜1˜a¨Ð/Ñ/Ô/€AÝÐ'¨°Ð6Ñ6Ô6Ð6Ð6Ð6rP   )r@   Úl2rí   c                 óp  — t           j                             d¦  «        }|                     dd¬¦  «                             |d¬¦  «        }t          t          |d| ¬¦  «        ¦  «        }t          |¦  «        dk    sJ ‚t          t          j	        t          j
        |¦  «        ¦  «        dd	¬
¦  «         d S )Nr   ©éè  r(  ç    _ B©ÚsizeÚscaleFr>   rZ   rV  ç»½×Ùß|Û=rô   )r]   r^   r_   Únormalra   r"  r'   rú   r-   rà   r#  )rB   rf   rg   rh   Úchunkss        rM   Ú(test_pairwise_distances_chunked_diagonalrj  Õ  sž   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�
Š
˜
¨$ˆ
Ñ/Ô/×6Ò6°|È%Ð6ÑPÔP€AÝÕ,¨Q¸qÈÐPÑPÔPÑQÔQ€FÝˆv‰;Œ;˜Š?ˆ?ˆ?ˆ?Ý•B”G�BœI fÑ-Ô-Ñ.Ô.°¸Ð>Ñ>Ô>Ð>Ð>Ð>rP   c                 ó  — t           j                             d¦  «        }|                     dd¬¦  «                             |d¬¦  «        }t          || d¬¦  «        }t          t          j        |¦  «        dd	¬
¦  «         d S )Nr   ra  rc  rd  Fr>   rD   r¿   rg  r   )r]   r^   r_   rh  ra   r$   r-   rà   )rB   rf   rg   rh   râ   s        rM   Ú)test_parallel_pairwise_distances_diagonalrl  Þ  sx   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�
Š
˜
¨$ˆ
Ñ/Ô/×6Ò6°|È%Ð6ÑPÔP€AÝ" 1¨V¸AÐ>Ñ>Ô>€IÝ•B”G˜IÑ&Ô&¨°Ð6Ñ6Ô6Ð6Ð6Ð6rP   c                 ó¦  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          |d dd¬¦  «         t          dd¦  «        D ]}t          |d d	|z  d¬¦  «         Œt          |                     ¦   «         d dd¬¦  «         |                     d
¦  «                             | d¬¦  «        }t          ||dd¬¦  «         t          |                     ¦   «         |                     ¦   «         dd¬¦  «         t          ||dd¬¦  «         t          ||dd¬¦  «         t          |¦  «        }t          |dd¬¦  «        }t          |t          ¦  «        sJ ‚t          |¦  «        |u sJ ‚t          j        t          ¦  «        5  t          |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )éÈ   r=   Fr>   rZ   r@   rV  iðÿÿÿrD   )r  r=   i'  r   r  rœ   )r]   r^   r_   r`   ra   r^  rù   Útolistr$   r'   r¦   r   r@  r{   r|   ÚStopIteration)rf   rg   rh   Úpowerrk   r3  rY  s          rM   Útest_pairwise_distances_chunkedrr  æ  s,  € õ Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€AÝ$ Q¨¸QÀ{ÐSÑSÔSÐSå�s˜A‘”ð 
ð 
ˆÝ(Øˆt A u¡H°[ð	
ñ 	
ô 	
ð 	
ð 	
õ %Ø	�Š‰
Œ
�D¨°;ðñ ô ð ð 	×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€AÝ$ Q¨¸!ÀKÐPÑPÔPÐPÝ$Ø	�Š‰
Œ
�A—H’H‘J”J¨q¸ðñ ô ð õ % Q¨¸%ÈÐTÑTÔTÐTõ % Q¨¸!ÀKÐPÑPÔPÐPõ 	˜1ÑÔ€AÝ
$ Q°vÀmÐ
TÑ
TÔ
T€CÝ�c�=Ñ)Ô)Ð)Ð)Ð)Ý�‰9Œ9˜ˆ>ˆ>ˆ>ˆ>Ý	Œ•}Ñ	%Ô	%ð ð ÝˆS‰	Œ	ˆ	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Æ)GÇG
ÇG
Úx_array_constrÚdensec                 ó   — g | ]	}|j         ‘Œ
S rI   ©Ú__name__©rK   Ú	containers     rM   rN   rN     ó   € ÐHÐHÐH¨I�YÔ'ÐHÐHÐHrP   )ÚidsÚy_array_constrc                 ó   — g | ]	}|j         ‘Œ
S rI   rv  rx  s     rM   rN   rN     rz  rP   c                 ó„   —  | dgg¦  «        } |dgdgg¦  «        }t          ||¦  «        }t          |ddgg¦  «         d S ©Nr   rZ   rD   r¡   ry   )r   r-   )rs  r|  rh   rk   r3  s        rM   Ú%test_euclidean_distances_known_resultr€    sY   € ð 	ˆ˜˜�uÑÔ€AØˆ˜˜˜a˜S�zÑ"Ô"€AÝ˜A˜qÑ!Ô!€AÝ�A˜˜c˜
�|Ñ$Ô$Ð$Ð$Ð$rP   c                 ó   — g | ]	}|j         ‘Œ
S rI   rv  rx  s     rM   rN   rN      rz  rP   c                 ó
  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }|                     d¦  «                             | d¬¦  «        }|                     t           j        ¦  «        dz                       d¬¦  «                             dd	¦  «        }|                     t           j        ¦  «        dz                       d¬¦  «                             dd	¦  «        } ||¦  «        }t          ||¦  «        }t          |||¬
¦  «        }t          |||¬¦  «        }	t          ||||¬¦  «        }
t          ||¦  «         t          |	|¦  «         t          |
|¦  «         t          ||t          j
        |¦  «        t          j
        |¦  «        ¬¦  «        }t          j        t          ¦  «        5  t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   ©r(  r(  Fr>   ©é   r(  rD   rZ   ræ   rª   ©ÚX_norm_squared©ÚY_norm_squared©r‡  r‰  )r]   r^   r_   r`   ra   rz   r�   r?  r   r-   Ú
zeros_liker{   r|   r}   )rf   r|  rg   rh   rk   Ú	X_norm_sqÚ	Y_norm_sqÚD1ÚD2ÚD3ÚD4Úwrong_Ds               rM   Ú#test_euclidean_distances_with_normsr“    s!  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€AØ×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€Að —’�"œ*Ñ%Ô%¨Ñ*×/Ò/°QÐ/Ñ7Ô7×?Ò?ÀÀ2ÑFÔF€IØ—’�"œ*Ñ%Ô%¨Ñ*×/Ò/°QÐ/Ñ7Ô7×?Ò?ÀÀ2ÑFÔF€Iàˆ�qÑÔ€Aå	˜Q Ñ	"Ô	"€BÝ	˜Q °)Ð	<Ñ	<Ô	<€BÝ	˜Q °)Ð	<Ñ	<Ô	<€BÝ	˜Q °)ÈIÐ	VÑ	VÔ	V€BÝ�B˜ÑÔÐÝ�B˜ÑÔÐÝ�B˜ÑÔÐõ "Ø	Ø	Ý”} YÑ/Ô/Ý”} YÑ/Ô/ð	ñ ô €Gõ 
Œ•~Ñ	&Ô	&ð %ð %Ý˜ Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s   ÇG8Ç8G<Ç?G<Ú	symmetricTc                 ó¶  — t           j                             | ¦  «        }|                     d¦  «        }|r|n|                     d¦  «        }|                     t           j        ¦  «        dz                       d¬¦  «                             dd¦  «        }|                     t           j        ¦  «        dz                       d¬¦  «                             dd¦  «        }t          ||¦  «        }t          |||¬¦  «        }t          |||¬¦  «        }	t          ||||¬	¦  «        }
t          ||¦  «         t          |	|¦  «         t          |
|¦  «         d S )
Nrƒ  r„  rD   rZ   ræ   rª   r†  rˆ  rŠ  )
r]   r^   r_   r`   ra   Úfloat32r�   r?  r   r-   )Úglobal_random_seedr”  rg   rh   rk   rŒ  r�  rŽ  r�  r�  r‘  s              rM   Ú&test_euclidean_distances_float32_normsr˜  B  s>  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ×Ò˜(Ñ#Ô#€AØÐ7ˆˆ˜C×-Ò-¨hÑ7Ô7€AØ—’�"œ*Ñ%Ô%¨Ñ*×/Ò/°QÐ/Ñ7Ô7×?Ò?ÀÀ2ÑFÔF€IØ—’�"œ*Ñ%Ô%¨Ñ*×/Ò/°QÐ/Ñ7Ô7×?Ò?ÀÀ2ÑFÔF€IÝ	˜Q Ñ	"Ô	"€BÝ	˜Q °)Ð	<Ñ	<Ô	<€BÝ	˜Q °)Ð	<Ñ	<Ô	<€BÝ	˜Q °)ÈIÐ	VÑ	VÔ	V€BÝ�B˜ÑÔÐÝ�B˜ÑÔÐÝ�B˜ÑÔÐÐÐrP   c            	      ó„  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }|dz                       d¬¦  «        }|dz                       d¬¦  «        }t          ||||¬¦  «        }t          |||                     dd¦  «        |                     dd¦  «        ¬¦  «        }t          |||                     dd¦  «        |                     dd¦  «        ¬¦  «        }t          ||¦  «         t          ||¦  «         t          j	        t          d	¬
¦  «        5  t          |||d d…         ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j	        t          d¬
¦  «        5  t          |||d d…         ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rƒ  r„  rD   rZ   ræ   rŠ  rª   zIncompatible dimensions for Xr‡   r<   r†  zIncompatible dimensions for Yrˆ  )r]   r^   r_   r`   r�   r   r?  r-   r{   r|   r¢   )rg   rh   rk   r‡  r‰  rŽ  r�  r�  s           rM   Ú$test_euclidean_distances_norm_shapesrš  S  st  € å
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜(Ñ#Ô#€AØ×Ò˜(Ñ#Ô#€Aà˜‘d—Z’Z Q�ZÑ'Ô'€NØ˜‘d—Z’Z Q�ZÑ'Ô'€Nå	Ø	ˆ1˜^¸Nð
ñ 
ô 
€Bõ 
Ø	Ø	Ø%×-Ò-¨b°!Ñ4Ô4Ø%×-Ò-¨b°!Ñ4Ô4ð	
ñ 
ô 
€Bõ 
Ø	Ø	Ø%×-Ò-¨a°Ñ4Ô4Ø%×-Ò-¨a°Ñ4Ô4ð	
ñ 
ô 
€Bõ �B˜ÑÔÐÝ�B˜ÑÔÐå	Œ•zÐ)HÐ	IÑ	IÔ	Ið Eð EÝ˜A˜q°ÀÀÀÔ1CÐDÑDÔDÐDðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eå	Œ•zÐ)HÐ	IÑ	IÔ	Ið Eð EÝ˜A˜q°ÀÀÀÔ1CÐDÑDÔDÐDðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eð Eð Es$   Å E'Å'E+Å.E+ÆF5Æ5F9Æ<F9c                 ó   — g | ]	}|j         ‘Œ
S rI   rv  rx  s     rM   rN   rN   x  rz  rP   c                 ó   — g | ]	}|j         ‘Œ
S rI   rv  rx  s     rM   rN   rN   }  rz  rP   c                 óº  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }d||dk     <   |                     d¦  «                             | d¬¦  «        }d||dk     <   t          ||¦  «        } ||¦  «        } ||¦  «        }t          ||¦  «        }t          ||d¬¦  «         |j        | k    sJ ‚d S )	Nr   ©r  r(  Fr>   çš™™™™™é?rƒ  ç�íµ ÷Æ°>rô   )	r]   r^   r_   r`   ra   r   r   r-   rb   )rf   rs  r|  rg   rh   rk   Úexpectedrâ   s           rM   Útest_euclidean_distancesr¢  u  sé   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+¨L¸uÐ+ÑEÔE€AØ€A€aˆ#‚g�JØ×Ò˜(Ñ#Ô#×*Ò*¨<¸eÐ*ÑDÔD€AØ€A€aˆ#‚g�Jå�Q˜‰{Œ{€Hàˆ�qÑÔ€AØˆ�qÑÔ€AÝ# A qÑ)Ô)€Iõ �I˜x¨dÐ3Ñ3Ô3Ð3ØŒ?˜lÒ*Ð*Ð*Ð*Ð*Ð*rP   c                 ó   — g | ]	}|j         ‘Œ
S rI   rv  rx  s     rM   rN   rN   —  rz  rP   c                 óT  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }d||dk     <   t          t          |¦  «        ¦  «        } ||¦  «        }t          |¦  «        }t          ||d¬¦  «         |j	        | k    sJ ‚d S )Nr   rž  Fr>   rŸ  r   rô   )
r]   r^   r_   r`   ra   r   r
   r   r-   rb   )rf   rs  rg   rh   r¡  râ   s         rM   Útest_euclidean_distances_symr¥  ”  s«   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+¨L¸uÐ+ÑEÔE€AØ€A€aˆ#‚g�Jå�% ™(œ(Ñ#Ô#€Hàˆ�qÑÔ€AÝ# AÑ&Ô&€Iõ �I˜x¨dÐ3Ñ3Ô3Ð3ØŒ?˜lÒ*Ð*Ð*Ð*Ð*Ð*rP   Ú
batch_size)Nr<   rO  ée   c                 ó   — g | ]	}|j         ‘Œ
S rI   rv  rx  s     rM   rN   rN   ¯  rz  rP   c                 ó   — g | ]	}|j         ‘Œ
S rI   rv  rx  s     rM   rN   rN   ´  rz  rP   c                 ó  — t           j                             d¦  «        }|                     d¦  «                             t           j        ¦  «        }d||dk     <   |                     d¦  «                             t           j        ¦  «        }d||dk     <   t          ||¦  «        } ||¦  «        } ||¦  «        }t          ||| ¬¦  «        }t          j        t          j	        |d¦  «        ¦  «        }t          ||d¬¦  «         d S )Nr   rž  rŸ  rƒ  ©rk   r¦  r   rô   )r]   r^   r_   r`   ra   r–  r   r   ÚsqrtÚmaximumr-   )r¦  rs  r|  rg   rh   rk   r¡  râ   s           rM   Útest_euclidean_distances_upcastr®  «  sð   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+­B¬JÑ7Ô7€AØ€A€aˆ#‚g�JØ×Ò˜(Ñ#Ô#×*Ò*­2¬:Ñ6Ô6€AØ€A€aˆ#‚g�Jå�Q˜‰{Œ{€Hàˆ�qÑÔ€AØˆ�qÑÔ€AÝ+¨A°¸zÐJÑJÔJ€IÝ”�œ
 9¨aÑ0Ô0Ñ1Ô1€Iõ �I˜x¨dÐ3Ñ3Ô3Ð3Ð3Ð3rP   c                 ó   — g | ]	}|j         ‘Œ
S rI   rv  rx  s     rM   rN   rN   Î  rz  rP   c                 óž  — t           j                             d¦  «        }|                     d¦  «                             t           j        ¦  «        }d||dk     <   t          t          |¦  «        ¦  «        } ||¦  «        }t          ||| ¬¦  «        }t          j	        t          j
        |d¦  «        ¦  «        }t          ||d¬¦  «         d S )Nr   rž  rŸ  r«  r   rô   )r]   r^   r_   r`   ra   r–  r   r
   r   r¬  r­  r-   )r¦  rs  rg   rh   r¡  râ   s         rM   Ú#test_euclidean_distances_upcast_symr±  Ê  s·   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+­B¬JÑ7Ô7€AØ€A€aˆ#‚g�Jå�% ™(œ(Ñ#Ô#€Hàˆ�qÑÔ€AÝ+¨A°¸zÐJÑJÔJ€IÝ”�œ
 9¨aÑ0Ô0Ñ1Ô1€Iõ �I˜x¨dÐ3Ñ3Ô3Ð3Ð3Ð3rP   zdtype, eps, rtolg-Cëâ6?çñhãˆµøä>g:Œ0âŽyE>g®Gáz®ï?z failing due to lack of precisionÚdimi@B c                 óÜ   — t          j        dg|z  g| ¬¦  «        }t          j        d|z   g|z  g| ¬¦  «        }t          ||¦  «        }t          ||¦  «        }t	          ||d¬¦  «         d S )Nr¡   rŸ   r²  rô   )r]   r¤   r   r   r-   )rb   Úepsrõ   r³  rh   rk   râ   r¡  s           rM   Ú'test_euclidean_distances_extreme_valuesr¶  á  sy   € õ  	Œ�3�%˜#‘+� eÐ,Ñ,Ô,€AÝ
Œ�3˜‘9�+ Ñ#Ð$¨EÐ2Ñ2Ô2€Aå# A qÑ)Ô)€IÝ�Q˜‰{Œ{€Hå�I˜x¨dÐ3Ñ3Ô3Ð3Ð3Ð3rP   rî   c                 ó  — t           j                             d¦  «        }|                     dd¦  «        }|                     dd¦  «        }t	          ||| ¬¦  «        }t          ||| ¬¦  «        }t          ||¦  «         d S )Né9  r›   r=   )rk   rî   )r]   r^   r_   r‹   r   r   r-   )rî   rg   rh   rk   Únormal_distanceÚnan_distances         rM   Ú8test_nan_euclidean_distances_equal_to_euclidean_distancer»  ú  sy   € õ Œ)×
Ò
 Ñ
%Ô
%€CØ�	Š	�!�Q‰Œ€AØ�	Š	�!�Q‰Œ€Aå)¨!¨q¸'ÐBÑBÔB€OÝ*¨1°¸7ÐCÑCÔC€LÝ�O \Ñ2Ô2Ð2Ð2Ð2rP   rh   rk   c                 óÂ   — t          j        t          ¦  «        5 }t          | |¬¦  «         d d d ¦  «         n# 1 swxY w Y   d}|t	          |j        ¦  «        k    sJ ‚d S )NrÎ   zBInput contains infinity or a value too large for dtype('float64').)r{   r|   r¢   r   ÚstrÚvalue)rh   rk   ÚexcinfoÚexp_msgs       rM   Ú,test_nan_euclidean_distances_infinite_valuesrÁ    s¢   € õ 
Œ•zÑ	"Ô	"ð ( gÝ  QÐ'Ñ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð S€GØ•c˜'œ-Ñ(Ô(Ò(Ð(Ð(Ð(Ð(Ð(s   š8¸<¿<zX, X_diag, missing_valuerD   rª   c                 ór  — t          j        d|g|dgg¦  «        }t          | |¬¦  «        }t          ||¦  «         t          | d|¬¦  «        }t          |dz  |¦  «         t          | | |¬¦  «        }t          ||¦  «         t          | |                      ¦   «         |¬¦  «        }t          ||¦  «         d S )Nç        r   ©Úmissing_valuesT©rî   rÅ  rD   )r]   r¤   r   r-   r?   )rh   ÚX_diagÚmissing_valueÚexp_distr
  Údist_sqÚdist_twoÚdist_two_copys           rM   Ú test_nan_euclidean_distances_2x2rÍ    sÀ   € õ  Œx˜#˜v˜¨°¨Ð4Ñ5Ô5€Hå" 1°]ÐCÑCÔC€DÝ�H˜dÑ#Ô#Ð#å% a°ÀmÐTÑTÔT€GÝ�H˜a‘K Ñ)Ô)Ð)å& q¨!¸MÐJÑJÔJ€HÝ�H˜hÑ'Ô'Ð'å+¨A¨q¯vªv©x¬xÈÐVÑVÔV€MÝ�H˜mÑ,Ô,Ð,Ð,Ð,rP   rÈ  c                 óT  — t          j        | | gddgg¦  «        }t          j        t           j        t           j        gt           j        dgg¦  «        }t          || ¬¦  «        }t	          ||¦  «         t          ||                     ¦   «         | ¬¦  «        }t	          ||¦  «         d S )Nr   rZ   rÄ  )r]   r¤   rc   r   r-   r?   )rÈ  rh   rÉ  r
  s       rM   Ú)test_nan_euclidean_distances_complete_nanrÏ  /  s–   € å
Œ�= -Ð0°1°a°&Ð9Ñ:Ô:€AåŒx�"œ&¥"¤&Ð)­B¬F°A¨;Ð7Ñ8Ô8€Hå" 1°]ÐCÑCÔC€DÝ�H˜dÑ#Ô#Ð#å" 1 a§f¢f¡h¤h¸}ÐMÑMÔM€DÝ�H˜dÑ#Ô#Ð#Ð#Ð#rP   c           	      ó6  — t          j        d| dddg| ddd| gd| | | dgg¦  «        }t          j        | dd| dg| | dddg| | | ddgg¦  «        }t          ||| ¬¦  «        }t          ||| ¬¦  «        }t          ||j        ¦  «         t          t          |d d	…         |d d	…         d
| ¬¦  «        dgg¦  «         t          t          |d	d…         |d	d…         d| ¬¦  «        t          j        d¦  «        gg¦  «         t          || ¬¦  «        }t          ||| ¬¦  «        }t          ||                     ¦   «         | ¬¦  «        }t          ||¦  «         t          ||¦  «         t          ||d
¬¦  «        }t          ||d¬¦  «        }	t          ||	¦  «         d S )Nr¡   g      @g      @ry   g      @g      @g      @rÄ  rZ   TrÆ  g      D@rD   Fg      9@r>   )r]   r¤   r   r.   ÚTr-   r¬  r?   )
rÈ  rh   rk   rŽ  r�  r�  r‘  ÚD5ÚD6ÚD7s
             rM   Ú'test_nan_euclidean_distances_not_trivalrÕ  <  s  € å
Œà�-  c¨3Ð/Ø˜C  c¨=Ð9Ø�- °¸sÐCð	
ñ	ô 	€Aõ 	Œà˜C  m°SÐ9Ø˜M¨3°°SÐ9Ø˜M¨=¸#¸sÐCð	
ñ	ô 	€Aõ 
!  A°mÐ	DÑ	DÔ	D€BÝ	   A°mÐ	DÑ	DÔ	D€Bå˜˜BœDÑ!Ô!Ð!õ ÝØˆbˆqˆbŒE�1�R�a�R”5 $°}ð	
ñ 	
ô 	
ð 4Ð	4Ð5ñ	ô ð õ ÝØˆa�ˆcŒF�A�a˜�c”F E¸-ð	
ñ 	
ô 	
õ Œ'Ð;Ñ
<Ô
<Ð	=Ð>ñ	ô ð õ 
! °=Ð	AÑ	AÔ	A€BÝ	   A°mÐ	DÑ	DÔ	D€BÝ	   A§F¢F¡H¤H¸]Ð	KÑ	KÔ	K€BÝ�B˜ÑÔÐÝ�B˜ÑÔÐõ 
!  A¨DÐ	1Ñ	1Ô	1€BÝ	   A¨EÐ	2Ñ	2Ô	2€BÝ�B˜ÑÔÐÐÐrP   c                 óÞ   — t          j        dd| dgd| d| gg¦  «        }t          || d¬¦  «        }t          j        |dk    ¦  «        sJ ‚t          || d¬¦  «        }t	          |d	¦  «         d S )
Ngáz®G‘^Àg     @„@gÍÌÌÌÌìB@gÿ–|Ã¯Æ@T)rÅ  rî   r   FrÃ  )r]   r¤   r   r-  r-   )rÈ  rh   Údist_squaredr
  s       rM   Ú7test_nan_euclidean_distances_one_feature_match_positiverØ  q  s–   € õ
 	Œà�e˜]¨EÐ2Ø�m Z°Ð?ð	
ñ	ô 	€Aõ +Ø	˜-°ðñ ô €Lõ Œ6�, !Ò#Ñ$Ô$Ð$Ð$Ð$å" 1°]ÈEÐRÑRÔR€DÝ�D˜#ÑÔÐÐÐrP   c                  óì  — t           j                             d¦  «        } t          j        |                      d¦  «        ¦  «        }t          j        ||g¦  «        }t          |¦  «        }t          |ddgddggd¬¦  «         t          j        |dk    ¦  «        sJ ‚t          j        |dk    ¦  «        sJ ‚t          |t          j	        |¦  «                 ddg¦  «         t          j        || g¦  «        }t          |¦  «        }t          j        |dk    ¦  «        sJ ‚t          j        |dk    ¦  «        sJ ‚t          |ddgddgg¦  «         t          j        |                      dd¦  «        ¦  «        }t          |¦  «        }t          |t          j	        |¦  «                 dg|j
        d	         z  ¦  «         t          j        |dk    ¦  «        sJ ‚t          j        |dk    ¦  «        sJ ‚d S )
Nr¸  iŽ  rÃ  rg  r   ry   rb  iˆ  r   )r]   r^   r_   rè   Úrandr#  r   r-   r-  Údiag_indices_fromre   )rg   r³   ÚXAr3  ÚXBr�  rh   s          rM   Útest_cosine_distancesrÞ  †  sÐ  € å
Œ)×
Ò
 Ñ
%Ô
%€CÝ
Œˆs�xŠx˜‰}Œ}ÑÔ€AÝ	Œ�A�q�6Ñ	Ô	€BÝ˜ÑÔ€AÝ�A˜˜c˜
 S¨# JÐ/°eÐ<Ñ<Ô<Ð<åŒ6�!�s’(ÑÔÐÐÐÝŒ6�!�s’(ÑÔÐÐÐå�A•bÔ*¨1Ñ-Ô-Ô.°°c°
Ñ;Ô;Ð;å	Œ�A˜�r�7Ñ	Ô	€BÝ	˜"Ñ	Ô	€BåŒ6�"˜’)ÑÔÐÐÐÝŒ6�"˜’)ÑÔÐÐÐå�B˜#˜s˜ c¨3 ZÐ0Ñ1Ô1Ð1õ 	Œˆs�xŠx˜˜dÑ#Ô#Ñ$Ô$€AÝ˜ÑÔ€Aå�A•bÔ*¨1Ñ-Ô-Ô.°°¸¼À¼
Ñ0BÑCÔCÐCÝŒ6�!�s’(ÑÔÐÐÐÝŒ6�!�s’(ÑÔÐÐÐÐÐrP   c                  óØ  ‡‡— d„ Št           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        Št          j        ˆˆfd„|D ¦   «         ¦  «        }t          |‰¦  «        }t          ||¦  «         |                      d¦  «        }d}t          j        t          |¬¦  «        5  t          |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nc                 ór  — |d         | d         z
  }|d         | d         z
  }t          j        |dz  ¦  «        dz  t          j        | d         ¦  «        t          j        |d         ¦  «        z  t          j        |dz  ¦  «        dz  z  z   }dt          j        t          j        |¦  «        ¦  «        z  }|S )Nr   rZ   rD   )r]   ÚsinÚcosÚarcsinr¬  )r³   r´   Údiff_latÚdiff_lonÚaÚcs         rM   Úslow_haversine_distancesz:test_haversine_distances.<locals>.slow_haversine_distances¦  sœ   € Ø�Q”4˜!˜Aœ$‘;ˆØ�Q”4˜!˜Aœ$‘;ˆÝŒF�8˜a‘<Ñ Ô  AÑ%ÝŒF�1�Q”4‰LŒL�2œ6 ! A¤$™<œ<Ñ'­"¬&°¸A±Ñ*>Ô*>À!Ñ*CÑCñ
ˆð •”	�"œ' !™*œ*Ñ%Ô%Ñ%ˆØˆrP   r   rX   )r(  rD   c                 ó0   •‡— g | ]Šˆˆfd „‰D ¦   «         ‘ŒS )c                 ó(   •— g | ]} ‰‰|¦  «        ‘ŒS rI   rI   )rK   r´   rè  r³   s     €€rM   rN   z7test_haversine_distances.<locals>.<listcomp>.<listcomp>²  s'   ø€ Ð>Ð>Ð>°qÐ,Ð,¨Q°Ñ2Ô2Ð>Ð>Ð>rP   rI   )rK   r³   rk   rè  s    @€€rM   rN   z,test_haversine_distances.<locals>.<listcomp>²  s2   øø€ ÐJÐJÐJÀ1Ð>Ð>Ð>Ð>Ð>¸AÐ>Ñ>Ô>ÐJÐJÐJrP   )r(  r›   z-Haversine distance only valid in 2 dimensionsr‡   )
r]   r^   r_   r`   r¤   r   r-   r{   r|   r¢   )rg   rh   rŽ  r�  Úerr_msgrk   rè  s        @@rM   Útest_haversine_distancesrì  ¤  s5  øø€ ðð ð õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜'Ñ"Ô"€AÝ	ŒÐJÐJÐJÐJÐJÈÐJÑJÔJÑ	KÔ	K€BÝ	˜Q Ñ	"Ô	"€BÝ�B˜ÑÔÐà×Ò˜'Ñ"Ô"€AØ=€GÝ	Œ•z¨Ð	1Ñ	1Ô	1ð ð Ý˜AÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÃCÃC#Ã&C#c                  ób   — dgdgg} dgdgg}t          | |¦  «        }t          |ddg¦  «         d S r  )r"   r-   ©rh   rk   r3  s      rM   Útest_paired_euclidean_distancesrï  ¿  óE   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÝ" 1 aÑ(Ô(€AÝ�A˜˜S�zÑ"Ô"Ð"Ð"Ð"rP   c                  ób   — dgdgg} dgdgg}t          | |¦  «        }t          |ddg¦  «         d S r  )r#   r-   rî  s      rM   Útest_paired_manhattan_distancesrò  Ç  rð  rP   c                  ób   — dgdgg} dgdgg}t          | |¦  «        }t          |ddg¦  «         d S )Nr   rZ   rD   rY   )r    r-   rî  s      rM   Útest_paired_cosine_distancesrô  Ï  sE   € à
ˆˆqˆcˆ
€AØ
ˆˆqˆcˆ
€AÝ  1Ñ%Ô%€AÝ�A˜˜S�zÑ"Ô"Ð"Ð"Ð"rP   c                  ó  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t	          ||¦  «        }d}t          |||¬¦  «        }|j        t          k    sJ ‚t          |¦  «        D ]‚\  }}t          |¦  «        D ]m\  }}	t          j	        ||	z
  dz  ||	z   z  ¦  «         }
t          j
        ||
z  ¦  «        }t          |||f         |
¦  «         t          |||f         |¦  «         ŒnŒƒt          |¦  «        }t          t          j        |¦  «        d¦  «         t          j        |dk    ¦  «        sJ ‚t          j        |t          j        t          j        |¦  «        ¦  «        z
  dk     ¦  «        sJ ‚|                      d¦  «                             t           j        ¦  «        }|                      d¦  «                             t           j        ¦  «        }t          ||¦  «        }|j        t           j        k    sJ ‚|                      d¦  «                             t           j        ¦  «        }t          ||¦  «        }t          j        |¦  «                             ¦   «         sJ ‚|j        t          k    sJ ‚dd	gd
dgg}ddgddgg}t          ||¦  «        }|d         |d         k    sJ ‚|d         |d         k    sJ ‚t'          j        t*          ¦  «        5  t          ddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t'          j        t*          ¦  «        5  t          ddggddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t'          j        t*          ¦  «        5  t          ddggddgg¦  «         d d d ¦  «         n# 1 swxY w Y   t'          j        t*          ¦  «        5  t          ddggg d¢g¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r;   r'  r¼   rÚ   rD   rZ   g333333Ó?gffffffæ?r¡   gÍÌÌÌÌÌì?rE   )r   rZ   )rZ   rZ   )rZ   r   rª   )çš™™™™™É?rö  g333333ã?)r]   r^   r_   r`   r   r   rb   ÚfloatÚ	enumerater�   Úexpr.   r/   rà   r-  ra   r–  Úint32Úisfiniter{   r|   r¢   )rg   rh   rk   ÚK_addr»   rµ   Úir³   Újr´   rË   Úchi2_exps               rM   Útest_chi_square_kernelr   ×  sÏ  € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜'Ñ"Ô"€AÝ   AÑ&Ô&€EØ€EÝ�A�q Ð&Ñ&Ô&€AØŒ7•eÒÐÐÐÝ˜!‘”ð 3ð 3‰ˆˆ1Ý˜a‘L”Lð 	3ð 	3‰DˆAˆqÝ”F˜A ™E a™<¨1¨q©5Ñ1Ñ2Ô2Ð2ˆDÝ”v˜e d™lÑ+Ô+ˆHÝ  a¨ d¤¨TÑ2Ô2Ð2Ý  ! Q $¤¨Ñ2Ô2Ð2Ð2ð		3õ 	�A‰Œ€AÝ•r”w˜q‘z”z 1Ñ%Ô%Ð%åŒ6�!�a’%‰=Œ=ÐÐÐÝŒ6�!•b”g�bœg a™jœjÑ)Ô)Ñ)¨AÒ-Ñ.Ô.Ð.Ð.Ð.à×Ò˜&Ñ!Ô!×(Ò(­¬Ñ4Ô4€AØ×Ò˜'Ñ"Ô"×)Ò)­"¬*Ñ5Ô5€AÝ�A�qÑÔ€AØŒ7•b”jÒ Ð Ð Ð ð 	×Ò˜'Ñ"Ô"×)Ò)­"¬(Ñ3Ô3€AÝ�A�qÑÔ€AÝŒ;�q‰>Œ>×ÒÑÔÐÐÐØŒ7•eÒÐÐÐð ˆsˆ�c˜1�XÐ€AØ
ˆQˆ�#�s�Ð€AÝ�A�qÑÔ€AØˆTŒ7�Q�t”WÒÐÐÐØˆTŒ7�Q�t”WÒÐÐÐõ 
Œ•zÑ	"Ô	"ð ð Ý�a˜�W�IÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	Œ•zÑ	"Ô	"ð +ð +Ý�a˜�W�I  R ˜zÑ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +å	Œ•zÑ	"Ô	"ð *ð *Ý�a˜�V�H  B˜x˜jÑ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *õ 
Œ•zÑ	"Ô	"ð 1ð 1Ý�a˜�V�H˜˜˜Ð/Ñ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1sH   ÌL%Ì%L)Ì,L)Í	M,Í,M0Í3M0ÎN3Î3N7Î:N7ÏO;Ï;O?ÐO?Úkernelc                 ó²   — t           j                             d¦  «        }|                     d¦  «        } | ||¦  «        }t	          ||j        d¦  «         d S )Nr   r;   é   )r]   r^   r_   r`   r-   rÑ  )r  rg   rh   rµ   s       rM   Útest_kernel_symmetryr    sU   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØˆˆq�!‰Œ€AÝ�A�q”s˜BÑÔÐÐÐrP   c                 óÔ   — t           j                             d¦  «        }|                     d¦  «        } ||¦  «        } | ||¦  «        } | ||¦  «        }t	          ||¦  «         d S ©Nr   r;   )r]   r^   r_   r`   r-   )r  rv   rg   rh   r   rµ   rÕ   s          rM   Útest_kernel_sparser     sq   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØˆ}˜QÑÔ€HØˆˆq�!‰Œ€AØ	ˆ�˜(Ñ	#Ô	#€BÝ�A�rÑÔÐÐÐrP   c                  óÞ   — t           j                             d¦  «        } |                      d¦  «        }t	          ||¦  «        }t          |j        d d d…         d„ |D ¦   «         ¦  «         d S )Nr   r;   é   c                 ó<   — g | ]}t          j        |¦  «        d z  ‘ŒS )rD   )r   Únorm)rK   r³   s     rM   rN   z&test_linear_kernel.<locals>.<listcomp>:  s%   € Ð!AÐ!AÐ!A¸!¥&¤+¨a¡.¤.°AÑ"5Ð!AÐ!AÐ!ArP   )r]   r^   r_   r`   r   r-   Úflat©rg   rh   rµ   s      rM   Útest_linear_kernelr  5  sj   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AÝ�a˜ÑÔ€Aå�A”F˜3˜3˜Q˜3”KÐ!AÐ!A¸qÐ!AÑ!AÔ!AÑBÔBÐBÐBÐBrP   c                  óî   — t           j                             d¦  «        } |                      d¦  «        }t	          ||¦  «        }t          |j        d d d…         t          j        d¦  «        ¦  «         d S )Nr   r;   r	  r<   )r]   r^   r_   r`   r*   r-   r  Úonesr  s      rM   Útest_rbf_kernelr  =  sc   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AÝ�1�aÑÔ€Aå�A”F˜3˜3˜Q˜3”K¥¤¨¡¤Ñ,Ô,Ð,Ð,Ð,rP   c                  ó¬  — t           j                             d¦  «        } |                      d¦  «        }t	          ||¦  «        }t          t          j        |¦  «        t          j        d¦  «        ¦  «         t          j        |dk    ¦  «        sJ ‚t          j        |t          j        t          j        |¦  «        ¦  «        z
  dk     ¦  «        sJ ‚d S )Nr   r;   r<   rZ   )	r]   r^   r_   r`   r   r-   rà   r  r-  r  s      rM   Útest_laplacian_kernelr  E  s«   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AÝ˜˜AÑÔ€Aå•B”G˜A‘J”J¥¤¨¡
¤
Ñ+Ô+Ð+õ Œ6�!�a’%‰=Œ=ÐÐÐÝŒ6�!•b”g�bœg a™jœjÑ)Ô)Ñ)¨AÒ-Ñ.Ô.Ð.Ð.Ð.Ð.Ð.rP   zmetric, pairwise_funcrÊ   r   c                 óì  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        } ||¦  «        } ||¦  «        } |||d¬¦  «        }t	          |¦  «        sJ ‚ |||d¬¦  «        }	t	          |	¦  «        rJ ‚t          |                     ¦   «         |	¦  «         t          ||| ¬¦  «        }
t          |                     ¦   «         |
¦  «         d S )Nr   r;   r¾   F)Údense_outputTr‰   )r]   r^   r_   r`   r   r-   Útoarrayr(   )rB   Úpairwise_funcrv   rg   rh   rk   ÚXcsrÚYcsrrÔ   rÕ   ÚK3s              rM   Ú&test_pairwise_similarity_sparse_outputr  Q  sý   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AØˆ=˜ÑÔ€DØˆ=˜ÑÔ€Dð 
ˆ�t˜T°Ð	6Ñ	6Ô	6€BÝ�B‰<Œ<ÐÐÐð 
ˆ�q˜!¨$Ð	/Ñ	/Ô	/€BÝ˜‰|Œ|ÐÐÐÝ�B—J’J‘L”L "Ñ%Ô%Ð%õ 
˜!˜q¨Ð	0Ñ	0Ô	0€BÝ�B—J’J‘L”L "Ñ%Ô%Ð%Ð%Ð%rP   c                 ó”  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        } | |¦  «        } | |¦  «        }|d f||f|d f||ffD ]Y\  }}t	          ||d¬¦  «        }t          |¦  «        }|�t          |¦  «        }t	          ||d¬¦  «        }	t          ||	¦  «         ŒZd S )Nr   r;   r¾   r   r‰   rÊ   )r]   r^   r_   r`   r(   r,   r-   )
rv   rg   rh   rk   r  r  ÚX_ÚY_rÔ   rÕ   s
             rM   Útest_cosine_similarityr  k  së   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AØˆ=˜ÑÔ€DØˆ=˜ÑÔ€Dà�t�9˜q !˜f t¨T l°T¸4°LÐAð  ð  ‰ˆˆBõ ˜b B¨xÐ8Ñ8Ô8ˆÝ�r‰]Œ]ˆØˆ>Ý˜2‘”ˆBÝ˜b B¨xÐ8Ñ8Ô8ˆÝ˜˜BÑÔÐÐð ð  rP   c                  ó¦   — t          j        t          j        d¦  «        d¦  «        } t          | d ¦  «        \  }}||u sJ ‚t	          | |¦  «         d S ©Né(   ©r<   rQ  )r]   Úresizer>  r   r/   )rÜ  Ú
XA_checkedÚ
XB_checkeds      rM   Útest_check_dense_matricesr'  €  sX   € õ 
Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ2°2°tÑ<Ô<Ñ€J�
Ø˜Ð#Ð#Ð#Ð#Ý�r˜:Ñ&Ô&Ð&Ð&Ð&rP   c                  ó¼  — t          j        t          j        d¦  «        d¦  «        } t          j        t          j        d¦  «        d¦  «        }t          | |¦  «        \  }}t	          | |¦  «         t	          ||¦  «         t          j        t          j        d¦  «        d¦  «        }t          | |¦  «        \  }}t	          | |¦  «         t	          ||¦  «         d S )Nr"  r#  é    ©r=   rQ  )r]   r$  r>  r   r/   r   ©rÜ  rÝ  r%  r&  s       rM   Útest_check_XB_returnedr,  ‰  s½   € õ 
Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ	Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ2°2°rÑ:Ô:Ñ€J�
Ý�r˜:Ñ&Ô&Ð&Ý�r˜:Ñ&Ô&Ð&å	Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ0°°RÑ8Ô8Ñ€J�
Ý�r˜:Ñ&Ô&Ð&Ý�r˜:Ñ&Ô&Ð&Ð&Ð&rP   c                  óö  — t          j        t          j        d¦  «        d¦  «        } t          j        t          j        d¦  «        d¦  «        }t          j        t
          ¦  «        5  t          | |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          j        d¦  «        d¦  «        }t          j        t
          ¦  «        5  t          | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Né-   )r<   rM  r)  r*  é$   )r=   rM  )r]   r$  r>  r{   r|   r¢   r   r   ©rÜ  rÝ  s     rM   Útest_check_different_dimensionsr1  ™  sJ  € å	Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ	Œ•2”9˜R‘=”= &Ñ	)Ô	)€BÝ	Œ•zÑ	"Ô	"ð &ð &Ý˜b "Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &õ 
Œ•2”9˜UÑ#Ô# VÑ	,Ô	,€BÝ	Œ•zÑ	"Ô	"ð $ð $Ý˜B Ñ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $s$   Á(BÂB	ÂB	ÃC.Ã.C2Ã5C2c                  óL  — t          j        d¦  «                             dd¦  «        } t          j        d¦  «                             dd¦  «        }t          j        t
          ¦  «        5  t          | |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «                             dd¦  «        } t          j        d¦  «                             dd¦  «        }t          j        t
          ¦  «        5  t          | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr.  rM  r<   r)  r=   rQ  )r]   r>  r?  r{   r|   r¢   r   r0  s     rM   Útest_check_invalid_dimensionsr3  ¥  sq  € õ 
Œ�2‰Œ×	Ò	˜q !Ñ	$Ô	$€BÝ	Œ�2‰Œ×	Ò	˜q !Ñ	$Ô	$€BÝ	Œ•zÑ	"Ô	"ð &ð &Ý˜b "Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &å	Œ�2‰Œ×	Ò	˜q !Ñ	$Ô	$€BÝ	Œ�2‰Œ×	Ò	˜q !Ñ	$Ô	$€BÝ	Œ•zÑ	"Ô	"ð &ð &Ý˜b "Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s$   Á*BÂBÂBÃ;DÄDÄ Dc                 óè  — t           j                             d¦  «        }|                     d¦  «        } | |¦  «        }|                     d¦  «        } | |¦  «        }t	          ||¦  «        \  }}t          |¦  «        sJ ‚t          ||z
  ¦  «                             ¦   «         dk    sJ ‚t          |¦  «        sJ ‚t          ||z
  ¦  «                             ¦   «         dk    sJ ‚t	          ||¦  «        \  }}t          |¦  «        sJ ‚t          ||z
  ¦  «                             ¦   «         dk    sJ ‚t          |¦  «        sJ ‚t          ||z
  ¦  «                             ¦   «         dk    sJ ‚d S r  )r]   r^   r_   r`   r   r   rè   r�   )	rv   rg   rÜ  Ú	XA_sparserÝ  Ú	XB_sparser%  r&  ÚXA_2_checkeds	            rM   Útest_check_sparse_arraysr8  ³  s…  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ	×	Ò	˜6Ñ	"Ô	"€BØ�˜bÑ!Ô!€IØ	×	Ò	˜6Ñ	"Ô	"€BØ�˜bÑ!Ô!€IÝ2°9¸iÑHÔHÑ€J�
õ �JÑÔÐÐÐÝˆy˜:Ñ%Ñ&Ô&×*Ò*Ñ,Ô,°Ò1Ð1Ð1Ð1Ý�JÑÔÐÐÐÝˆy˜:Ñ%Ñ&Ô&×*Ò*Ñ,Ô,°Ò1Ð1Ð1Ð1å4°YÀ	ÑJÔJÑ€J�Ý�JÑÔÐÐÐÝˆy˜:Ñ%Ñ&Ô&×*Ò*Ñ,Ô,°Ò1Ð1Ð1Ð1Ý�LÑ!Ô!Ð!Ð!Ð!Ýˆ|˜jÑ(Ñ)Ô)×-Ò-Ñ/Ô/°1Ò4Ð4Ð4Ð4Ð4Ð4rP   c                 óš   — | j         }t          |¦  «        dk    rt          d„ | D ¦   «         ¦  «        S t          d„ | D ¦   «         ¦  «        S )NrZ   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r°   )ÚtuplifyrS   s     rM   r,  ztuplify.<locals>.<genexpr>Ï  s(   è è € Ð/Ð/ c•W˜S‘\”\Ð/Ð/Ð/Ð/Ð/Ð/rP   c              3   ó   K  — | ]}|V — Œd S r°   rI   )rK   Úrs     rM   r,  ztuplify.<locals>.<genexpr>Ò  s   è è € �N�N˜1�Q�N�N�N�N�N�NrP   )re   rú   rR   )rh   rJ  s     rM   r;  r;  Ê  sO   € à	Œ€AÝ
ˆ1�v„v�‚z€zåÐ/Ð/¨QÐ/Ñ/Ô/Ñ/Ô/Ð/õ �N�N �N‘N”NÑ"Ô"Ð"rP   c                  ó:  — t           j                             d¦  «        } |                      d¦  «        }t	          |¦  «        }|                      d¦  «        }t	          |¦  «        }t          ||¦  «        \  }}t          ||¦  «         t          ||¦  «         d S r  )r]   r^   r_   r`   r;  r   r/   )rg   rÜ  Ú	XA_tuplesrÝ  Ú	XB_tuplesr%  r&  s          rM   Útest_check_tuple_inputrA  Õ  s�   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ	×	Ò	˜6Ñ	"Ô	"€BÝ˜‘”€IØ	×	Ò	˜6Ñ	"Ô	"€BÝ˜‘”€IÝ2°9¸iÑHÔHÑ€J�
Ý�y *Ñ-Ô-Ð-Ý�y *Ñ-Ô-Ð-Ð-Ð-rP   c                  ó(  — t          j        t          j        d¦  «        d¦  «                             t           j        ¦  «        } t          j        t          j        d¦  «        d¦  «                             t           j        ¦  «        }t          | d ¦  «        \  }}|j        t           j        k    sJ ‚t          | |¦  «        \  }}|j        t           j        k    sJ ‚|j        t           j        k    sJ ‚t          |                      t          ¦  «        |¦  «        \  }}|j        t          k    sJ ‚|j        t          k    sJ ‚t          | |                     t          ¦  «        ¦  «        \  }}|j        t          k    sJ ‚|j        t          k    sJ ‚d S r!  )r]   r$  r>  ra   r–  r   rb   r÷  r+  s       rM   Útest_check_preserve_typerC  á  sZ  € å	Œ•2”9˜R‘=”= &Ñ	)Ô	)×	0Ò	0µ´Ñ	<Ô	<€BÝ	Œ•2”9˜R‘=”= &Ñ	)Ô	)×	0Ò	0µ´Ñ	<Ô	<€Bå2°2°tÑ<Ô<Ñ€J�
ØÔ�rœzÒ)Ð)Ð)Ð)õ 3°2°rÑ:Ô:Ñ€J�
ØÔ�rœzÒ)Ð)Ð)Ð)ØÔ�rœzÒ)Ð)Ð)Ð)õ 3°2·9²9½UÑ3CÔ3CÀRÑHÔHÑ€J�
ØÔ�uÒ$Ð$Ð$Ð$ØÔ�uÒ$Ð$Ð$Ð$õ 3°2°r·y²yÅÑ7GÔ7GÑHÔHÑ€J�
ØÔ�uÒ$Ð$Ð$Ð$ØÔ�uÒ$Ð$Ð$Ð$Ð$Ð$rP   rÀ   Ú
seuclideanÚmahalanobisÚdist_functionc           
      óv  — t          d¬¦  «        5  t          j                             d¦  «        }|                     d¦  «        }t          t          ||¬¦  «        ¦  «        }t          j        t           |||| ¬¦  «        ¦  «        ¦  «        }t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr¼   )r  r   rž  rA   r¿   )
r   r]   r^   r_   r`   r   r
   r#  rR   r-   )rÀ   rB   rF  rg   rh   Úexpected_distr
  s          rM   Ú+test_pairwise_distances_data_derived_paramsrI  ù  só   € õ 
 sÐ	+Ñ	+Ô	+ð -ð -ÝŒi×#Ò# AÑ&Ô&ˆØ×Ò˜iÑ(Ô(ˆå"¥5¨°6Ð#:Ñ#:Ô#:Ñ;Ô;ˆÝŒy�˜}˜}¨Q°vÀfÐMÑMÔMÑNÔNÑOÔOˆå˜˜mÑ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   ‘BB.Â.B2Â5B2c                 ó,  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }t	          j        t          d| › d�¬¦  «        5  t          ||| ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rž  z+The '(V|VI)' parameter is required for the z metricr‡   rA   )r]   r^   r_   r`   r{   r|   r¢   r$   )rB   rg   rh   rk   s       rM   Ú1test_pairwise_distances_data_derived_params_errorrK    sâ   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$€AØ×Ò˜)Ñ$Ô$€Aå	ŒÝØQÀ&ÐQÐQÐQð
ñ 
ô 
ð 0ð 0õ 	˜1˜a¨Ð/Ñ/Ô/Ð/ð	0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s   Á)B	Â	BÂB)Ú
braycurtisÚcanberraÚ	chebyshevÚcorrelationÚhammingrE  r	   rD  rí   r   r   r@   Úy_is_xzY is Xz
Y is not Xc           	      óÆ  — t           j                             d¦  «        }|                     d¦  «                             |d¬¦  «        }i }|r!|}t          t          || ¬¦  «        ¦  «        }nÒ|                     d¦  «                             |d¬¦  «        }t          ||| ¬¦  «        }| dk    r9dt          j        t          j	        ||g¦  «        ddt           j
        ¬	¦  «        i}nW| d
k    rQdt           j                             t          j        t          j	        ||g¦  «        j        ¦  «        ¦  «        j        i}t          ||fd| i|¤Ž}t!          ||¦  «         d S )Nr   r;   Fr>   rA   rD  ÚVrZ   )rç   Úddofrb   rE  ÚVIrB   )r]   r^   r_   r`   ra   r   r
   r   Úvarr#  rz   r   ÚinvÚcovrÑ  r$   r-   )	rB   rf   rQ  rg   rh   rÝ   rk   rH  r
  s	            rM   Ú)test_numeric_pairwise_distances_datatypesrY    sU  € õ6 Œ)×
Ò
 Ñ
"Ô
"€Cà×Ò˜&Ñ!Ô!×(Ò(¨¸EÐ(ÑBÔB€Aà€FØð 
JØˆÝ"¥5¨°6Ð#:Ñ#:Ô#:Ñ;Ô;ˆˆà×Ò˜fÑ%Ô%×,Ò,¨\ÀÐ,ÑFÔFˆÝ˜a ¨6Ð2Ñ2Ô2ˆà�\Ò!Ð!Ø�2œ6¥"¤)¨Q°¨FÑ"3Ô"3¸!À!Í2Ì:ÐVÑVÔVÐWˆFˆFØ�}Ò$Ð$Ø�BœIŸMšM­"¬&µ´¸A¸q¸6Ñ1BÔ1BÔ1DÑ*EÔ*EÑFÔFÔHÐIˆFå˜a Ð<Ð<¨6Ð<°VÐ<Ð<€Då�D˜-Ñ(Ô(Ð(Ð(Ð(rP   zX,Y,expected_distance)ræ  ÚabÚabc)rÃ  r¡   ry   )r¡   rÃ  r¡   )ry   r¡   rÃ  ræ  rZ  rÃ  r¡   ry   c                 óP   — d„ }t          | ||¬¦  «        }t          ||¦  «         dS )z8Check pairwise_distances with lists of strings as input.c                 ód   — t          j        t          | ¦  «        t          |¦  «        z
  ¦  «        S r°   )r]   rè   rú   rÄ   s     rM   Údummy_string_similarityzLtest_pairwise_dist_custom_metric_for_string.<locals>.dummy_string_similarity]  s"   € ÝŒv•c˜!‘f”f�s 1™vœv‘oÑ&Ô&Ð&rP   )rh   rk   rB   N)r$   r-   )rh   rk   Úexpected_distancer^  Úactual_distances        rM   Ú+test_pairwise_dist_custom_metric_for_stringra  K  s?   € ð$'ð 'ð 'õ )¨1°Ð:QÐRÑRÔR€OÝ�OÐ%6Ñ7Ô7Ð7Ð7Ð7rP   c                  óÐ   — d„ } t          j        g d¢g d¢g d¢gt          ¬¦  «        }t          j        g d¢g d¢g d¢g¦  «        }t          || ¬	¦  «        }t	          ||¦  «         d
S )zjCheck that pairwise_distances does not convert boolean input to float
    when using a custom metric.
    c                 óf   — d| |z                        ¦   «         | |z                        ¦   «         z  z
  S )NrZ   )r�   )Úv1Úv2s     rM   Údummy_bool_distzBtest_pairwise_dist_custom_metric_for_bool.<locals>.dummy_bool_disti  s*   € à�B˜‘G—=’=‘?”? b¨2¡g§]¢]¡_¤_Ñ4Ñ4Ð4rP   )rZ   r   r   r   )rZ   r   rZ   r   )rZ   rZ   rZ   rZ   rŸ   )rÃ  rY   ç      è?)rY   rÃ  rY   )rg  rY   rÃ  )rh   rB   N)r]   r¤   r�   r$   r-   )rf  rh   r_  r`  s       rM   Ú)test_pairwise_dist_custom_metric_for_boolrh  d  s•   € ð
5ð 5ð 5õ 	Œ�,�,�,   ¨l¨l¨lÐ;Å4ÐHÑHÔH€AåœàÐÐØˆOˆOØÐÐð	
ñô Ðõ )¨1°_ÐEÑEÔE€OÝ�OÐ%6Ñ7Ô7Ð7Ð7Ð7rP   c                 óâ   —  | t          j        d¦  «        ¦  «        g} | t          j        d¦  «        ¦  «        g} t          dd¬¦  «        d„ t          ||¦  «        D ¦   «         ¦  «         d S )Nr�   rD   r   )rÀ   Ú
max_nbytesc              3   óX   K  — | ]%\  }} t          t          ¦  «        ||¦  «        V — Œ&d S r°   )r9   r   )rK   Úm1Úm2s      rM   r,  z9test_sparse_manhattan_readonly_dataset.<locals>.<genexpr>‚  sM   è è € ð %ð %Ù17°°RÐ$�Õ#Ñ$Ô$ R¨Ñ,Ô,ð%ð %ð %ð %ð %ð %rP   )r]   r  r8   Úzip)rv   Ú	matrices1Ú	matrices2s      rM   Ú&test_sparse_manhattan_readonly_datasetrq  {  s‹   € ð ��rœw v™œÑ/Ô/Ð0€IØ��rœw v™œÑ/Ô/Ð0€Ið %…H�A !Ð$Ñ$Ô$ð %ð %Ý;>¸yÈ)Ñ;TÔ;Tð%ñ %ô %ñ ô ð ð ð rP   )r@   )›r�   Útypesr   Únumpyr]   r   Úscipy.sparser   Úscipy.spatial.distancer   r   r   r	   r
   r   r   ÚImportErrorr{   Úsklearnr   Úsklearn.exceptionsr   Úsklearn.metrics.pairwiser   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+   Úsklearn.preprocessingr,   Úsklearn.utils._testingr-   r.   r/   r0   Úsklearn.utils.fixesr1   r2   r3   r4   r5   r6   r7   Úsklearn.utils.parallelr8   r9   rr   ÚmarkÚparametrizer‚   r–   r˜   r¨   r¬   r>  ra   Ú_minkowski_kwdsÚ_wminkowski_kwdsr¶   ÚparamÚskipifrz   r–  rž   rÁ   rÆ   rÖ   rØ   rÞ   Úitemsrã   ré   r  r  r%  r.  rA  r¢   r~   rT  r^  rj  rl  rr  r¤   r€  r“  r˜  rš  r¢  r¥  r®  r±  Úxfailr¶  r»  ÚinfrÁ  r¬  rc   rÍ  rÏ  rÕ  rØ  rÞ  rì  rï  rò  rô  r   r  r  r  r  r  r  r  r'  r,  r1  r3  r8  r;  rA  rC  rI  rK  rY  ra  rh  rq  rI   rP   rM   ú<module>r‡     s_  ðØ €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð?Ø1Ð1Ð1Ð1Ð1Ð1Ð1øØð ?ð ?ð ?ð ?Ð>Ð>Ð>Ð>Ð>Ð>Ð>ð?øøøð
 €€€à "Ð "Ð "Ð "Ð "Ð "Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð> ,Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ðLð Lð Lð^ „×Ò˜¨.Ñ9Ô9Ø„×Ò˜¨.Ñ9Ô9Ø„×Ò˜¨.Ñ9Ô9Ø„×Ò˜¨.Ñ9Ô9ð><ð ><ñ :Ô9ñ :Ô9ñ :Ô9ñ :Ô9ð><ðB „×Ò˜Ð#=Ñ>Ô>ð:ð :ñ ?Ô>ð:ð<2ð 2ð 2ð „×Ò˜Ð"4Ð6FÐ!GÑHÔHð%ð %ñ IÔHð%ð:Fð Fð Fð "˜œ	 ! Q™œ×.Ò.¨x¸eÐ.ÑDÔDÈ1ÐMÐM€Ø"˜œ 1 a™œ×/Ò/°¸uÐ/ÑEÔEÈAÐNÐNÐ ðð ð ð „×ÒØà	˜[¨"Ð-ØˆŒØØØñ	
ô 	
ð
 	ˆŒØØØñ	
ô 	
ð
 	ˆŒØØØØ”+×$Ò$Ø˜m˜m¨GÑ4Ô4Ò4ØTð %ñ ô ð		
ñ 	
ô 	
ð 	ˆŒØØØØ”+×$Ò$Ø˜m˜m¨GÑ4Ô4Ò4ØTð %ñ ô ð		
ñ 	
ô 	
ð 
˜<¨(°A¨Ð7Ø	Ð.°¸#°Ð?ð? ñ#ô #ðH „×Ò˜ 2¤:¨r¬z¸3Ð"?Ñ@Ô@ðð ñ AÔ@ñI#ô #ðJðIð Ið Ið „×ÒØØTÐTÐTñô ð „×Ò˜¨.Ñ9Ô9ðð ñ :Ô9ñ	ô ð
ð>ð ð ð&
7ð 
7ð 
7ð „×Ò˜Ð)?Ð)9Ô)?Ñ)AÔ)AÑBÔBØ„×Ò˜¨.Ñ9Ô9ð&ð &ñ :Ô9ñ CÔBð&ð*ð ð ð( „×Ò˜¨.Ñ9Ô9Ø„×Ò˜¨.Ñ9Ô9ðvAð vAñ :Ô9ñ :Ô9ðvAðrð ð ð7ð 7ð 7ð"
4ð 
4ð 
4ð „×ÒØà Ð Ø$Ð$Ø+Ð+ðð
ð à,ðñ ô ñðð ð -ðñ ô ññô ð(ð ñ)ô ð(ð „×ÒØ)ð 5Ð4ØØ(ð	
ð :Ð9ØØ0ð	
ð
 
!Ð	  *Ð.QÐRàˆNØØAð	
ð  ÐØØHð	
ð ,Ð+ØØ<ð	
ð-ñô ð>ð ñ?ô ð>ð7ð 7ð 7ð 7ð  „×Ò˜Ð#EÑFÔFð?ð ?ñ GÔFð?ð „×Ò˜Ð#EÑFÔFð7ð 7ñ GÔFð7ð ð!ð !ñ „ð!ðH „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
 „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
%ð %ñô ñô ð%ð „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
%ð %ñô ð
%ð@ „×Ò˜ t¨U mÑ4Ô4ðð ñ 5Ô4ðð Eð Eð EðD „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
 „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
+ð +ñô ñô ð+ð* „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
+ð +ñô ð
+ð$ „×Ò˜Ð'8Ð'8Ð'8Ñ9Ô9Ø„×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
 „×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
4ð 4ñô ñô ñ :Ô9ð4ð( „×Ò˜Ð'8Ð'8Ð'8Ñ9Ô9Ø„×ÒØØ„X€J�ÑØ	ˆ	ÐHÐH¸ÐHÑHÔHÑHð ñ ô ð
4ð 4ñô ñ :Ô9ð4ð" „×ÒØà	Œ�T˜4Ð ØˆŒØŒJØØØ”+×#Ò#Ð+MÐ#ÑNÔNð		
ñ 	
ô 	
ðñô ð „×Ò˜  G Ñ-Ô-ð	4ð 	4ñ .Ô-ñô ð	4ð „×Ò˜ T¨5 MÑ2Ô2ð3ð 3ñ 3Ô2ð3ð „×Ò˜˜x˜rœx¨"¬&°!¨¨Ñ6Ô6¸¸¼À1ÀrÄvÀgÀ,ÀÑ8PÔ8PÐQÑRÔRØ„×Ò˜˜x˜rœx¨"¬&°!¨¨Ñ6Ô6¸¸¼À1ÀrÄvÀgÀ,ÀÑ8PÔ8PÐRVÐWÑXÔXð)ð )ñ YÔXñ SÔRð)ð „×ÒØà	ˆŒ�A�q�6˜A˜q˜6Ð"Ñ	#Ô	# W R¤W¨Q¡Z¤Z°´Ð8Ø	ˆŒ�A�q�6˜A˜rœv˜;Ð'Ñ	(Ô	(¨'¨"¬'°!©*¬*°b´fÐ=Ø	ˆŒ�B”F˜A�;  B¤F Ð,Ñ	-Ô	-¨r¬v°r´vÐ>Ø	ˆŒ�B”F˜A�; ¤¨ Ð,Ñ	-Ô	-¨w¨r¬w°q©z¬z¸2¼6ÐBØ	ˆŒ�A�r”v�;  B¤F Ð,Ñ	-Ô	-¨w¨r¬w°q©z¬z¸2¼6ÐBØ	ˆŒ�A�q�6˜A˜q˜6Ð"Ñ	#Ô	# W R¤W¨Q¡Z¤Z°Ð4Ø	ˆŒ�A�q�6˜A˜r˜7Ð#Ñ	$Ô	$ g b¤g¨a¡j¤j°"Ð5Ø	ˆŒ�B˜�7˜Q ˜GÐ$Ñ	%Ô	% r¤v¨rÐ2Ø	ˆŒ�B˜�7˜R ˜GÐ$Ñ	%Ô	% w r¤w¨q¡z¤z°2Ð6Ø	ˆŒ�A�r�7˜Q ˜GÐ$Ñ	%Ô	% w r¤w¨q¡z¤z°2Ð6ðñô ð-ð -ñô ð-ð  „×Ò˜¨2¬6°2¨,Ñ7Ô7ð	$ð 	$ñ 8Ô7ð	$ð „×Ò˜¨2¬6°2¨,Ñ7Ô7ð1ð 1ñ 8Ô7ð1ðh „×Ò˜¨2¬6°2¨,Ñ7Ô7ðð ñ 8Ô7ðð(ð ð ð<ð ð ð6#ð #ð #ð#ð #ð #ð#ð #ð #ð31ð 31ð 31ðl „×ÒØàØØØØØðñ
ô 
ð ð  ñ
ô 
ð ð „×ÒØàØØØØØðñ
ô 
ð „×Ò˜¨.Ñ9Ô9ðð ñ :Ô9ñ
ô 
ððCð Cð Cð-ð -ð -ð	/ð 	/ð 	/ð „×ÒØØ�Ð Ð+<Ð =Ð>ñô ð „×Ò˜¨.Ñ9Ô9ð&ð &ñ :Ô9ñ	ô ð
&ð* „×Ò˜¨.Ñ9Ô9ð ð  ñ :Ô9ð ð('ð 'ð 'ð'ð 'ð 'ð 	$ð 	$ð 	$ð&ð &ð &ð „×Ò˜¨.Ñ9Ô9ð5ð 5ñ :Ô9ð5ð,#ð #ð #ð	.ð 	.ð 	.ð%ð %ð %ð0 „×Ò˜ A q 6Ñ*Ô*Ø„×Ò˜ L°-Ð#@ÑAÔAØ„×ÒØÐ(Ð*DÐEñô ð
-ð 
-ñô ñ BÔAñ +Ô*ð

-ð „×Ò˜ L°-Ð#@ÑAÔAð0ð 0ñ BÔAð0ð „×ÒØðð ð ñô ð" „×Ò˜ D¨% =°xÀÐ6NÐÑOÔOð)ð )ñ PÔOñ#ô ð$)ð> „×ÒØð ÐÐØØˆ_ˆ_˜o˜o˜o¨¨¨Ð?ð	
ð ÐÐØ�$ˆKØ�3ˆZ˜#˜s˜ c¨3 ZÐ0ð	
ðñô ð8ð 8ñô ð8ð8ð 8ð 8ð. „×Ò˜¨.Ñ9Ô9ðð ñ :Ô9ðð ð s   ¬3 ³AÁ A