§
    fŠtjZË  ã                   ó(  — d Z g ZddlmZ ddlZddlZddlmZm	Z	 ddl
mZmZmZmZ ddlmZmZ ddlmZ 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$ dd
l%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2  G d„ deee&¦  «        Z3dd„Z4d„ Z5dS )z>Base class for sparse matrix formats using compressed storage.é    )ÚwarnN)Ú_prune_arrayÚcopy_if_neededé   )Ú_spbaseÚissparseÚsparrayÚSparseEfficiencyWarning)Ú_data_matrixÚ_minmax_mixin)Ú_sparsetools)Úget_csr_submatrixÚcsr_sample_offsetsÚcsr_todenseÚcsr_sample_valuesÚcsr_row_indexÚcsr_row_sliceÚcsr_column_index1Úcsr_column_index2Úcsr_diagonalÚ	expandptrÚcsr_has_canonical_formatÚcsr_eliminate_zerosÚcsr_sum_duplicatesÚcsr_has_sorted_indicesÚcsr_sort_indicesÚcsr_matmat_maxnnzÚ
csr_matmat)Ú
IndexMixin)ÚupcastÚupcast_charÚ	to_nativeÚisshapeÚgetdtypeÚ	isintlikeÚdowncast_intp_indexÚget_sum_dtypeÚcheck_shapeÚget_index_dtypeÚbroadcast_shapesc                   ó®  — e Zd ZdZd9ddœd„Zd:d„Zej        j        e_        d:d„Zej        j        e_        d;d	„Zd
„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd<d„Zej        j        e_        d=d„Zej        j        e_        d:d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd>d„Zd„ Zd>d„Zd9d„Zd„ Zd „ Zd!„ Zd"„ Z d#„ Z!d$„ Z"d%„ Z#d&„ Z$d;d'„Z%ej%        j        e%_        d?d(„Z&ej&        j        e&_        d)„ Z'e(d*e)fd+„¦   «         Z*e*j+        d,e)fd-„¦   «         Z*d.„ Z,e(d*e)fd/„¦   «         Z-e-j+        d,e)fd0„¦   «         Z-d1„ Z.d2„ Z/d3„ Z0d4„ Z1ej1        j        e1_        d;d5„Z2d6„ Z3d7„ Z4d>d8„Z5dS )@Ú
_cs_matrixzY
    base array/matrix class for compressed row- and column-oriented arrays/matrices
    NF©Úmaxprintc                ó~	  — t          j        | ||¬¦  «         t          |¦  «        rv|j        | j        k    r|r|                     ¦   «         }n|                     | j        ¦  «        }|j        |j        |j        |j	        f\  | _        | _        | _        | _	        �n,t          |t          ¦  «        �rt          || j        ¬¦  «        rÈt          || j        ¬¦  «        | _	        |                      | j        ¦  «        \  }}|                      t%          | j        ¦  «        ¬¦  «        }t)          j        dt-          |t.          ¬¦  «        ¦  «        | _        t)          j        d|¦  «        | _        t)          j        |dz   |¬¦  «        | _        �n8t1          |¦  «        dk    rc|                      |||¬	¦  «        }	|	                     | j        ¦  «        }
|
\  | _        | _        | _        | _	        |                      ¦   «          �nÂt1          |¦  «        d
k    r–|\  }}}d }|�d|vrt%          |¦  «        }|                      ||f|d¬¦  «        }|st8          }t)          j        |||¬¦  «        | _        t)          j        |||¬¦  «        | _        t)          j        |||¬¦  «        | _        �nt=          d| j        j         › d|› �¦  «        ‚	 t)          j!        |¦  «        }n2# tD          $ r%}t=          d| j        j         › d|› �¦  «        |‚d }~ww xY wt          | tF          ¦  «        r.|j$        dk    r#| j        dk    rt=          d|j$        › d�¦  «        ‚|j$        dk    rt=          d|j$        › d�¦  «        ‚|                      ||¬¦  «        }	|	                     | j        ¦  «        }
|
\  | _        | _        | _        | _	        |�t          || j        ¬¦  «        | _	        nŽ| j        €‡	 t1          | j        ¦  «        dz
  }| j                             ¦   «         dz   }n"# tD          $ r}t=          d¦  «        |‚d }~ww xY wt          |                      ||f¦  «        | j        ¬¦  «        | _	        |�0t-          |¦  «        }| j         %                    |d¬¦  «        | _        |  &                    d¬¦  «         d S )Nr-   ©Úallow_nd©Úmaxvalr   )Údefaultr   ©Údtypeé   ©Úshaper6   é   T)r3   Úcheck_contents©Úcopyr6   zunrecognized z constructor input: ÚcsczCSC arrays don't support zD input. Use 2DzCSR arrays don't yet support zD.z!unable to infer matrix dimensionsF©r=   ©Ú
full_check)'r   Ú__init__r   Úformatr=   ÚasformatÚindptrÚindicesÚdataÚ_shapeÚ
isinstanceÚtupler#   Ú	_allow_ndr(   Ú_swapÚ_shape_as_2dÚ_get_index_dtypeÚmaxr9   ÚnpÚzerosr$   ÚfloatÚlenÚ_coo_containerÚ_coo_to_compressedÚsum_duplicatesr   ÚarrayÚ
ValueErrorÚ	__class__Ú__name__ÚasarrayÚ	Exceptionr	   ÚndimÚastypeÚcheck_format)ÚselfÚarg1r9   r6   r=   r.   ÚMÚNÚ	idx_dtypeÚcooÚarraysrG   rF   rE   r3   ÚeÚnewdtypes                    úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/sparse/_compressed.pyrB   z_cs_matrix.__init__   sá  € ÝÔ˜d D°8Ð<Ñ<Ô<Ð<å�D‰>Œ>ð @	GØŒ{˜dœkÒ)Ð)¨dÐ)Ø—y’y‘{”{��à—}’} T¤[Ñ1Ô1�à”˜Tœ\¨4¬9°d´kðAÑ=ˆDŒK˜œ t¤y°$´+±+õ ˜�eÑ$Ô$ñ 7	GÝ�t d¤nÐ5Ñ5Ô5ð &Cõ *¨$¸¼ÐHÑHÔH�”Ø—z’z $Ô"3Ñ4Ô4‘��1ð !×1Ò1½¸T¼Z¹¼Ð1ÑIÔI�	ÝœH Q­°ÅÐ(FÑ(FÔ(FÑGÔG�”	Ý!œx¨¨9Ñ5Ô5�”Ý œh q¨1¡u°IÐ>Ñ>Ô>�”‘å�t‘9”9 ’>�>à×-Ò-¨d¸%ÀuÐ-ÑMÔM�CØ ×3Ò3°D´JÑ?Ô?�FØHNÑE�D”K ¤¨t¬y¸$¼+Ø×'Ò'Ñ)Ô)Ð)Ñ)Ý˜‘Y”Y !’^�^à.2Ñ+�T˜7 Fð "�FØÐ(¨Q°e¨^¨^Ý!$ U¡¤˜Ø $× 5Ò 5°wÀÐ6GØ7=Ø?Cð !6ñ !Eô !E�Ið  ð .Ý-˜Ý#%¤8¨G¸$ÀiÐ#PÑ#PÔ#P�D”LÝ"$¤(¨6¸ÀIÐ"NÑ"NÔ"N�D”KÝ "¤¨°DÀÐ FÑ FÔ F�D”I‘Iå$ð &B°T´^Ô5Lð &Bð &BØ;?ð&Bð &Bñ Cô Cð Cð
FÝ”z $Ñ'Ô'��øÝð Fð Fð FÝ ð ">°´Ô1Hð ">ð ">Ø7;ð">ð ">ñ ?ô ?ØDEðFøøøøðFøøøõ ˜$¥Ñ(Ô(ð Y¨T¬Y¸!ª^¨^ÀÄÈuÒ@TÐ@TÝ Ð!W¸T¼YÐ!WÐ!WÐ!WÑXÔXÐXØŒy˜1Š}ˆ}Ý Ð!NÀÄÐ!NÐ!NÐ!NÑOÔOÐOà×%Ò% d°%Ð%Ñ8Ô8ˆCØ×+Ò+¨D¬JÑ7Ô7ˆFØ@FÑ=ˆDŒK˜œ t¤y°$´+ð ÐÝ% e°d´nÐEÑEÔEˆDŒKˆKØŒZÐðMÝ˜œÑ$Ô$ qÑ(�Ø”L×$Ò$Ñ&Ô&¨Ñ*��øÝð Mð Mð MÝ Ð!DÑEÔEÈ1ÐLøøøøðMøøøõ & d§j¢j°!°Q°Ñ&8Ô&8À4Ä>ÐRÑRÔRˆDŒKàÐÝ ‘”ˆHØœ	×(Ò(¨¸Ð(Ñ>Ô>ˆDŒIà×Ò UÐÑ+Ô+Ð+Ð+Ð+s0   ËK% Ë%
LË/ LÌLÏ/3P# Ð#
QÐ-P=Ð=Qc                 óì  — |€t          | j        d         ¦  «        S | j        dk    r-|dv rt          | j        d         ¦  «        S t          d¦  «        ‚|dk     r|dz  }|                      |d|z
  f¦  «        \  }}|                      | j        ¦  «        \  }}|dk    r(t          j        t          | j	        ¦  «        |¬¦  «        S |dk    rt          j
        | j        ¦  «        S t          d¦  «        ‚)Néÿÿÿÿr   ©r   rk   úaxis out of boundsr   r7   ©Ú	minlength)ÚintrE   r]   rX   rL   r9   rP   Úbincountr&   rF   Údiff)r`   ÚaxisÚ_rc   s       ri   Ú_getnnzz_cs_matrix._getnnzv   sí   € Øˆ<Ý�t”{ 2”Ñ'Ô'Ð'ØŒY˜!Š^ˆ^Ø�wˆˆÝ˜4œ; rœ?Ñ+Ô+Ð+ÝÐ1Ñ2Ô2Ð2à�aŠxˆxØ˜‘	�Ø—j’j $¨¨D©Ð!1Ñ2Ô2‰GˆD�!Ø—:’:˜dœjÑ)Ô)‰DˆAˆqØ�qŠyˆyÝ”{Õ#6°t´|Ñ#DÔ#DÐPQÐRÑRÔRÐRØ˜’�Ý”w˜tœ{Ñ+Ô+Ð+ÝÐ1Ñ2Ô2Ð2ó    c                 ó  ‡ — ‰                       ¦   «          |€t          j        ‰ j        ¦  «        S ‰ j        dk    r,|dvrt          d¦  «        ‚t          j        ‰ j        ¦  «        S |dk     r|dz  }‰                      |d|z
  f¦  «        \  }}|dk    rs‰                      ‰ j        ¦  «        \  }}‰ j        dk    }|                     ¦   «         r‰ j	        n‰ j	        |         }t          j
        t          |¦  «        |¬¦  «        S |dk    rk‰ j                             ¦   «         rt          j        ‰ j        ¦  «        S t          j        ‰ j        ¦  «        }t          j        ˆ fd„|D ¦   «         ¦  «        S t          d¦  «        ‚)Nr   rl   rm   r   r7   rn   c                 óX   •— g | ]&\  }}t          j        ‰j        ||…         ¦  «        ‘Œ'S © )rP   Úcount_nonzerorG   )Ú.0ÚiÚjr`   s      €ri   ú
<listcomp>z,_cs_matrix.count_nonzero.<locals>.<listcomp>    s2   ø€ ÐPÐPÐPÁ$À!ÀQ�RÔ-¨d¬i¸¸!¸¬nÑ=Ô=ÐPÐPÐPrv   )rV   rP   rz   rG   r]   rX   rL   r9   ÚallrF   rq   r&   rr   rE   Ú	itertoolsÚpairwiserW   )r`   rs   rt   rc   ÚmaskÚidxÚpairss   `      ri   rz   z_cs_matrix.count_nonzeroŠ   sp  ø€ Ø×ÒÑÔÐØˆ<ÝÔ# D¤IÑ.Ô.Ð.àŒ9˜Š>ˆ>Ø˜7Ð"Ð"Ý Ð!5Ñ6Ô6Ð6ÝÔ# D¤IÑ.Ô.Ð.à�!Š8ˆ8Ø�A‰IˆDØ—*’*˜d A¨¡HÐ-Ñ.Ô.‰ˆˆaØ�1Š9ˆ9Ø—:’:˜dœjÑ)Ô)‰DˆAˆqØ”9 ’>ˆDØ"&§(¢(¡*¤*ÐD�$”,�,°$´,¸tÔ2DˆCÝ”;Õ2°3Ñ7Ô7À1ÐEÑEÔEÐEØ�QŠYˆYØŒy�}Š}‰Œð ,Ý”w˜tœ{Ñ+Ô+Ð+ÝÔ& t¤{Ñ3Ô3ˆEÝ”8ÐPÐPÐPÐPÈ%ÐPÑPÔPÑQÔQÐQåÐ1Ñ2Ô2Ð2rv   Tc                 ó¨  — | j         j        j        dk    r$t          d| j         j        j        › d�d¬¦  «         | j        j        j        dk    r$t          d| j        j        j        › d�d¬¦  «         | j        j        | j        j        | j         j        fD ]}|dk    rt          d¦  «        ‚Œ|  	                    | j
        ¦  «        \  }}t          | j         ¦  «        |dz   k    r*t          d	t          | j         ¦  «        › d
|dz   › �¦  «        ‚| j         d         dk    rt          d¦  «        ‚t          | j        ¦  «        t          | j        ¦  «        k    rt          d¦  «        ‚| j         d         t          | j        ¦  «        k    rt          d¦  «        ‚|                      ¦   «          |�r | j        dk    r™| j                             ¦   «         |k    rt          d|› �¦  «        ‚| j                             ¦   «         dk     rt          d¦  «        ‚t!          j        | j         ¦  «                             ¦   «         dk     rt          d¦  «        ‚|                      | j         | j        f¦  «        }t!          j        | j         |¬¦  «        | _         t!          j        | j        |¬¦  «        | _        t)          | j        ¦  «        | _        dS dS )aÎ  Check whether the array/matrix respects the CSR or CSC format.

        Parameters
        ----------
        full_check : bool, optional
            If `True`, run rigorous check, scanning arrays for valid values.
            Note that activating those check might copy arrays for casting,
            modifying indices and index pointers' inplace.
            If `False`, run basic checks on attributes. O(1) operations.
            Default is `True`.
        r|   z$indptr array has non-integer dtype (ú)r:   ©Ú
stacklevelz%indices array has non-integer dtype (r   z'data, indices, and indptr should be 1-Dzindex pointer size z should be r   z!index pointer should start with 0z*indices and data should have the same sizerk   zQLast value of index pointer should be less than the size of index and data arrayszindices must be < zindices must be >= 0z(indptr must be a non-decreasing sequencer5   N)rE   r6   Úkindr   ÚnamerF   rG   r]   rX   rL   rM   rS   ÚpruneÚnnzrO   ÚminrP   rr   rN   r[   r"   )r`   rA   Úxrb   rc   rd   s         ri   r_   z_cs_matrix.check_format¦   sÍ  € ð Œ;ÔÔ! SÒ(Ð(ÝÐQ¸¼Ô8IÔ8NÐQÐQÐQØðñ ô ð àŒ<ÔÔ" cÒ)Ð)ÝÐS¸¼Ô9KÔ9PÐSÐSÐSØðñ ô ð ð ”)”. $¤,Ô"3°T´[Ô5EÐFð 	Lð 	LˆAØ�AŠvˆvÝ Ð!JÑKÔKÐKð ð �zŠz˜$Ô+Ñ,Ô,‰ˆˆ1å�”ÑÔ  A¡Ò%Ð%ÝÐWµ3°t´{Ñ3CÔ3CÐWÐWÐPQÐTUÑPUÐWÐWÑXÔXÐXØŒK˜ŒN˜aÒÐÝÐ@ÑAÔAÐAõ �”ÑÔ¥ T¤Y¡¤Ò/Ð/ÝÐIÑJÔJÐJØŒK˜ŒO�c $¤,Ñ/Ô/Ò/Ð/Ýð Añ Bô Bð Bð 	�
Š
‰Œˆàñ 	-àŒx˜!Š|ˆ|Ø”<×#Ò#Ñ%Ô%¨Ò*Ð*Ý$Ð%=¸!Ð%=Ð%=Ñ>Ô>Ð>Ø”<×#Ò#Ñ%Ô%¨Ò)Ð)Ý$Ð%;Ñ<Ô<Ð<Ý”7˜4œ;Ñ'Ô'×+Ò+Ñ-Ô-°Ò1Ð1Ý$Ð%OÑPÔPÐPà×-Ò-¨t¬{¸D¼LÐ.IÑJÔJˆIÝœ* T¤[¸	ÐBÑBÔBˆDŒKÝœ: d¤l¸)ÐDÑDÔDˆDŒLÝ! $¤)Ñ,Ô,ˆDŒIˆIˆIð	-ð 	-rv   c                 ó¢   — |                       ¦   «          |                       || j        |¦  «        d¬¦  «        }|                     ¦   «          |S )z�Scalar version of self._binopt, for cases in which no new nonzeros
        are added. Produces a new sparse array in canonical form.
        Tr?   )rV   Ú
_with_datarG   Úeliminate_zeros)r`   ÚotherÚopÚress       ri   Ú_scalar_binoptz_cs_matrix._scalar_binopté   sP   € ð 	×ÒÑÔÐØ�oŠo˜b˜b ¤¨EÑ2Ô2¸ˆoÑ>Ô>ˆØ×ÒÑÔÐØˆ
rv   c                 óè  — |j         | j         k    r t          d| j         › d|j         › d�¦  «        ‚t          | j        j        |j        j        ¦  «        }|                      d¦  «        d         }t          j        |||d¬¦  «        }|j        j	        r|n|j
        }|                      | j        ¦  «        \  }}t          ||| j        | j        | j        |¦  «         |                      |d¬	¦  «        S )
NzIncompatible shapes (ú and r†   ÚCFr   T)r6   Úorderr=   Fr?   )r9   rX   r!   r6   ÚcharrL   rP   rW   ÚflagsÚc_contiguousÚTrM   r   rE   rF   rG   Ú
_container)r`   r’   r6   r™   ÚresultÚyrb   rc   s           ri   Ú
_add_densez_cs_matrix._add_denseö   sÞ   € ØŒ;˜$œ*Ò$Ð$ÝÐT°T´ZÐTÐTÀeÄkÐTÐTÐTÑUÔUÐUÝ˜DœJœO¨U¬[Ô-=Ñ>Ô>ˆØ—
’
˜4Ñ Ô  Ô#ˆÝ”˜% u°EÀÐEÑEÔEˆØ”lÔ/Ð=ˆFˆF°V´XˆØ�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1Ý�A�q˜$œ+ t¤|°T´YÀÑBÔBÐBØ�Š˜v¨EˆÑ2Ô2Ð2rv   c                 ó.   — |                       |d¦  «        S )NÚ_plus_©Ú_binopt©r`   r’   s     ri   Ú_add_sparsez_cs_matrix._add_sparse  s   € Ø�|Š|˜E 8Ñ,Ô,Ð,rv   c                 ó.   — |                       |d¦  «        S )NÚ_minus_r¤   r¦   s     ri   Ú_sub_sparsez_cs_matrix._sub_sparse  s   € Ø�|Š|˜E 9Ñ-Ô-Ð-rv   c                 ó^  — t          |¦  «        �r]| j        |j        k    r+|                      |¦  «        }|                      |d¦  «        S |j        dk    r\|                      |                     ¦   «         d         ¦  «        }| j        dk    r"|                     d| j        d         f¦  «        S |S |j        dk    r-|                      |                     ¦   «         d         ¦  «        S | j        dv r,|                     | j         	                    ¦   «         ¦  «        S | j
        \  }}|j
        \  }}|dk    rA|dk    r;|                     |                      ||¦  «                             ¦   «         ¦  «        S |dk    rA|dk    r;|                      |                     ||¦  «                             ¦   «         ¦  «        S t          | t          ¦  «        }|dk    rs||k    rmt          |                     ¦   «                              ¦   «         |¦  «        }|                      |¦  «        }| j        dk    r|n|                     d|f¦  «        S |dk    rO||k    rIt          |                      ¦   «                              ¦   «         |¦  «        }	|                     |	¦  «        S |dk    rO||k    rIt          |                     ¦   «                              ¦   «         |¦  «        }|                     | ¦  «        S |dk    rO||k    rIt          |                      ¦   «                              ¦   «         |¦  «        }
|
                     |¦  «        S t#          d	| j        › d
|j        › �¦  «        ‚t%          j        |¦  «        }|j        dk    r't%          j        |                      ¦   «         |¦  «        S |j        dk    ri|j        t$          j        k    rt0          S t3          | j        |j        ¦  «        }|                      |j        d         ¦  «                             |¦  «        S | j        dv rYt3          | j        |j        ¦  «        }t%          j        | j         	                    ¦   «         |¦  «                             |¦  «        S |                      ¦   «         }| j        |j        k    r]t%          j        |j        ||j                 ¦  «        }|                     t$          j        ¦  «                             ¦   «         |_        |S t%          j        |¦  «        }| j        d         dk    s| j        dk    �r–|j        d         dk    rt%          j        |j        |¦  «        }ne|j        d         | j        d         k    r*t%          j        |j        |dd…|j         f         ¦  «        }nt#          d	| j        › d
|j        › �¦  «        ‚|  !                    |j         |j"        |j        d         z  ¬¦  «        }t%          j#        t%          j$        |j        d         |¬¦  «        |j"        ¦  «        }t%          j%        |j          &                    |d¬¦  «        |j        d         ¦  «        }|  '                    |                     t$          j        ¦  «                             ¦   «         ||ff|j        d         | j        d         fd¬¦  «        S | j        d         dk    �r¦|j        d         dk    r%t%          j        |j        dd…df         |¦  «        }nk|j        d         | j        d         k    r0t%          j        |j        dd…df         ||j(                 ¦  «        }nt#          d	| j        › d
|j        › �¦  «        ‚|  !                    |j(        |j"        |j        d         z  ¬¦  «        }t%          j#        |j(         &                    |d¬¦  «        |j        d         ¦  «        }t%          j%        t%          j$        |j        d         |¬¦  «        |j"        ¦  «        }|  '                    |                     t$          j        ¦  «                             ¦   «         ||ff| j        d         |j        d         fd¬¦  «        S |j        d         dk    rX| j        d         |j        d         k    r<t%          j        |j        |dd…|j         f                              ¦   «         ¦  «        }n„|j        d         dk    rT| j        d         |j        d         k    r8t%          j        |j        ||j(                                      ¦   «         ¦  «        }nt#          d	| j        › d
|j        › �¦  «        ‚|                     t$          j        ¦  «                             ¦   «         |_        |S )z?Element-wise multiplication by array/matrix, vector, or scalar.Ú_elmul_©r   r   )r   r   r   r   ©r   )r®   r­   r7   úinconsistent shapes r—   rk   Nr2   r5   Fr?   ©r9   r=   ))r   r9   rY   r¥   Ú_mul_scalarÚtoarrayr]   ÚreshaperG   ÚsumrM   Ú_matmul_sparseÚtocscrI   r	   Ú_make_diagonal_csrÚravelrX   rP   Ú
asanyarrayÚmultiplyÚsizer6   Úobject_ÚNotImplementedr*   ÚflatÚtocooÚcoordsÚviewÚndarrayÚ
atleast_2dÚcolrN   rŒ   ÚrepeatÚarangeÚtiler^   rT   Úrow)r`   r’   rŸ   ÚsMÚsNÚoMÚoNÚis_arrayÚ	new_otherr=   Únew_selfÚbshapeÚretrG   Úother2drd   rÈ   rÄ   s                     ri   Ú_multiply_2d_with_broadcastingz)_cs_matrix._multiply_2d_with_broadcasting  sQ  € õ �E‰?Œ?ñ +	TØŒz˜Uœ[Ò(Ð(ØŸš uÑ-Ô-�Ø—|’| E¨9Ñ5Ô5Ð5àŒ{˜fÒ$Ð$Ø×)Ò)¨%¯-ª-©/¬/¸$Ô*?Ñ@Ô@�Ø”9 ’>�>Ø!Ÿ>š>¨1¨d¬j¸¬mÐ*<Ñ=Ô=Ð=Ø�ØŒ{˜dÒ"Ð"Ø×'Ò'¨¯ª©¬¸Ô(:Ñ;Ô;Ð;ØŒz˜^Ð+Ð+Ø×(Ò(¨¬¯ª©¬Ñ9Ô9Ð9ð Ô&‰FˆB�ØÔ'‰FˆB�à�QŠwˆw˜2 š7˜7Ø×+Ò+¨D¯LªL¸¸RÑ,@Ô,@×,FÒ,FÑ,HÔ,HÑIÔIÐIØ�QŠwˆw˜2 š7˜7Ø×*Ò*¨5¯=ª=¸¸RÑ+@Ô+@×+FÒ+FÑ+HÔ+HÑIÔIÐIå! $­Ñ0Ô0ˆHà�QŠwˆw˜2 š8˜8Ý.¨u¯}ª}©¬×/DÒ/DÑ/FÔ/FÈÑQÔQ�	Ø×,Ò,¨YÑ7Ô7�Ø!%¤¨a¢ �v�v°V·^²^ÀQÈÀGÑ5LÔ5LÐLà�QŠwˆw˜2 š8˜8Ý)¨$¯,ª,©.¬.×*>Ò*>Ñ*@Ô*@À(ÑKÔK�Ø×+Ò+¨DÑ1Ô1Ð1ð �QŠwˆw˜2 š8˜8Ý.¨u¯}ª}©¬×/DÒ/DÑ/FÔ/FÈÑQÔQ�	Ø ×/Ò/°Ñ5Ô5Ð5à�QŠwˆw˜2 š8˜8Ý-¨d¯lªl©n¬n×.BÒ.BÑ.DÔ.DÀhÑOÔO�Ø×.Ò.¨uÑ5Ô5Ð5ÝÐR°D´JÐRÐRÀUÄ[ÐRÐRÑSÔSÐSõ ”˜eÑ$Ô$ˆàŒ:˜Š>ˆ>Ý”;˜tŸ|š|™~œ~¨uÑ5Ô5Ð5àŒ:˜Š?ˆ?ØŒ{�bœjÒ(Ð(å%Ð%Ý% d¤j°%´+Ñ>Ô>ˆFØ×#Ò# E¤J¨q¤MÑ2Ô2×:Ò:¸6ÑBÔBÐBàŒ:˜Ð'Ð'Ý% d¤j°%´+Ñ>Ô>ˆFÝ”;˜tœyŸ}š}™œ°Ñ6Ô6×>Ò>¸vÑFÔFÐFà�jŠj‰lŒlˆàŒ:˜œÒ$Ð$Ý”;˜sœx¨¨s¬zÔ):Ñ;Ô;ˆDØ—y’y¥¤Ñ,Ô,×2Ò2Ñ4Ô4ˆCŒHØˆJõ ”- Ñ&Ô&ˆàŒ:�aŒ=˜AÒÐ ¤¨a¢¡ØŒ}˜QÔ 1Ò$Ð$Ý”{ 3¤8¨WÑ5Ô5��Ø”˜qÔ! T¤Z°¤^Ò3Ð3Ý”{ 3¤8¨W°Q°Q°Q¸¼°ZÔ-@ÑAÔA��å Ð!V¸¼
Ð!VÐ!VÈÌÐ!VÐ!VÑWÔWÐWØ×-Ò-¨c¬gØ58´W¸w¼}ÈQÔ?OÑ5Oð .ñ Qô QˆIå”)�BœI g¤m°AÔ&6¸iÐHÑHÔHÈ#Ì'ÑRÔRˆCÝ”'˜#œ'Ÿ.š.¨¸˜.Ñ?Ô?ÀÄÈqÔAQÑRÔRˆCØ×&Ò&Ø—’�2œ:Ñ&Ô&×,Ò,Ñ.Ô.°°c°
Ð;Ø”} QÔ'¨¬°B¬Ð8Øð 'ñ ô ð ð Œ:�aŒ=˜AÒÑØŒ}˜QÔ 1Ò$Ð$Ý”{ 3¤8¨A¨A¨A¨t¨GÔ#4°gÑ>Ô>��Ø”˜qÔ! T¤Z°¤]Ò2Ð2Ý”{ 3¤8¨A¨A¨A¨t¨GÔ#4°g¸c¼gÔ6FÑGÔG��å Ð!V¸¼
Ð!VÐ!VÈÌÐ!VÐ!VÑWÔWÐWØ×-Ò-¨c¬gØ58´W¸w¼}ÈQÔ?OÑ5Oð .ñ Qô QˆIå”)˜CœGŸNšN¨9¸5˜NÑAÔAÀ7Ä=ÐQRÔCSÑTÔTˆCÝ”'�"œ) G¤M°!Ô$4¸IÐFÑFÔFÈÌÑPÔPˆCØ×&Ò&Ø—’�2œ:Ñ&Ô&×,Ò,Ñ.Ô.°°c°
Ð;Ø”z !”} g¤m°AÔ&6Ð7Øð 'ñ ô ð ð Œ=˜Ô˜qÒ Ð  T¤Z°¤]°g´mÀAÔ6FÒ%FÐ%FÝ”;˜sœx¨°°°°C´G°Ô)<×)BÒ)BÑ)DÔ)DÑEÔEˆDˆDàŒ]˜1Ô Ò"Ð" t¤z°!¤}¸¼ÀaÔ8HÒ'HÐ'HÝ”;˜sœx¨°´Ô)9×)?Ò)?Ñ)AÔ)AÑBÔBˆDˆDåÐR°D´JÐRÐRÀUÄ[ÐRÐRÑSÔSÐSØ—9’9�RœZÑ(Ô(×.Ò.Ñ0Ô0ˆŒØˆ
rv   c           	      ó*  — | j         \  }}t          j        |t          | j        j        |j        j        ¦  «        ¬¦  «        }t          t          | j        dz   ¦  «        } |||| j	        | j
        | j        ||¦  «         | j        dk    r|d         n|S )Nr5   Ú_matvecr   r   )rM   rP   rQ   r!   r6   rš   Úgetattrr   rC   rE   rF   rG   r]   )r`   r’   rb   rc   rŸ   Úfns         ri   Ú_matmul_vectorz_cs_matrix._matmul_vectorƒ  s‰   € ØÔ ‰ˆˆ1õ ”˜!¥;¨t¬z¬ÀÄÔ@PÑ#QÔ#QÐRÑRÔRˆõ •\ 4¤;°Ñ#:Ñ;Ô;ˆØ
ˆˆ1ˆa�”˜dœl¨D¬I°u¸fÑEÔEÐEà œI¨šN˜Nˆv�aŒyˆy°Ð6rv   c                 ó®  — | j         \  }}|j        d         }t          j        ||ft	          | j        j        |j        j        ¦  «        ¬¦  «        }t          t          | j	        dz   ¦  «        } ||||| j
        | j        | j        |                     ¦   «         |                     ¦   «         ¦  «         | j        dk    r|                     |f¦  «        S |S )Nrk   r5   Ú_matvecsr   )rM   r9   rP   rQ   r!   r6   rš   rÖ   r   rC   rE   rF   rG   r¸   r]   r³   )r`   r’   rb   rc   Ún_vecsrŸ   r×   s          ri   Ú_matmul_multivectorz_cs_matrix._matmul_multivector�  sÇ   € ØÔ ‰ˆˆ1Ø”˜R”ˆå”˜1˜f˜+Ý +¨D¬J¬O¸U¼[Ô=MÑ NÔ NðPñ Pô Pˆõ •\ 4¤;°Ñ#;Ñ<Ô<ˆØ
ˆˆ1ˆa�˜œ d¤l°D´IØ�;Š;‰=Œ=˜&Ÿ,š,™.œ.ñ	*ô 	*ð 	*ð Œ9˜Š>ˆ>Ø—>’> 6 )Ñ,Ô,Ð,Øˆrv   c                 óú  — | j         \  }}|j        }|dk    r'|                     d|j        d         f¦  «        j        }|j        dk    r|j        n|j        d         df\  }}d}| j        dk    r||fz  }|dk    r||fz  }| j        dk    r|nd|dk    r|ndf}|                      |¦  «        }| j        | j        |j        |j        f}	|  	                    ||f¦  «        \  }}|  	                    | |f¦  «        \  }
}|  
                    |	¦  «        }t          j        |
j        |¬¦  «        }t          j        |
j        |¬¦  «        }t          j        |j        |¬¦  «        }t          j        |j        |¬¦  «        }t          ||||||¦  «        }|dk    rc|dk    r.t          j        dt          | j        |j        ¦  «        ¬¦  «        S |                      |t          | j        |j        ¦  «        ¬¦  «        S |  
                    |	|¬¦  «        }||k    rn|}t          j        |
j        |¬¦  «        }t          j        |
j        |¬¦  «        }t          j        |j        |¬¦  «        }t          j        |j        |¬¦  «        }t          j        |dz   |¬¦  «        }t          j        ||¬¦  «        }t          j        |t          | j        |j        ¦  «        ¬¦  «        }t%          |||||
j        |||j        |||¦  «         |dk    rt          j        |d         ¦  «        S |                      |||f|¬¦  «        }||k    r4|j        dk    r|                     ¦   «         }|                     |¦  «        }|S )	Nr   r   r7   ry   r5   r2   ©r9   Úcsr)rM   r]   r³   r9   r�   rH   rY   rE   rF   rL   rN   rP   r[   r   rW   r    r6   Úemptyr   rG   rC   Útocsr)r`   r’   rb   ÚK1Úo_ndimÚK2rc   Ú	new_shapeÚ
faux_shapeÚindex_arraysÚsÚord   Ús_indptrÚ	s_indicesÚo_indptrÚ	o_indicesrŒ   Únew_idx_dtyperE   rF   rG   r”   s                          ri   rµ   z_cs_matrix._matmul_sparseŸ  s_  € ØÔ!‰ˆˆ2à”ˆØ�QŠ;ˆ;à—M’M 1 e¤k°!¤nÐ"5Ñ6Ô6Ô8ˆEØ %¤
¨a¢ �”�°e´kÀ!´nÀaÐ5H‰ˆˆAð ˆ	ØŒ9˜Š>ˆ>Ø˜!˜ÑˆIØ�QŠ;ˆ;Ø˜!˜ÑˆIØœ9¨š>˜>�a�a¨q°vÀ²{°{°!°!ÈÐJˆ
à—’˜uÑ%Ô%ˆØœ T¤\°5´<ÀÄÐOˆà�zŠz˜1˜a˜&Ñ!Ô!‰ˆˆ1Ø�zŠz˜4 ˜-Ñ(Ô(‰ˆˆ1à×)Ò)¨,Ñ7Ô7ˆ	Ý”:˜aœh¨iÐ8Ñ8Ô8ˆÝ”J˜qœy°	Ð:Ñ:Ô:ˆ	Ý”:˜aœh¨iÐ8Ñ8Ô8ˆÝ”J˜qœy°	Ð:Ñ:Ô:ˆ	å  1 h°	¸8ÀYÑOÔOˆØ�!Š8ˆ8Ø˜BŠˆÝ”x ­°´
¸E¼KÑ)HÔ)HÐIÑIÔIÐIØ—>’> )µ6¸$¼*ÀeÄkÑ3RÔ3R�>ÑSÔSÐSà×-Ò-¨lÀ3Ð-ÑGÔGˆØ˜IÒ%Ð%Ø%ˆIÝ”z !¤(°)Ð<Ñ<Ô<ˆHÝœ
 1¤9°IÐ>Ñ>Ô>ˆIÝ”z !¤(°)Ð<Ñ<Ô<ˆHÝœ
 1¤9°IÐ>Ñ>Ô>ˆIå”˜!˜a™% yÐ1Ñ1Ô1ˆÝ”(˜3 iÐ0Ñ0Ô0ˆÝŒx˜¥6¨$¬*°e´kÑ#BÔ#BÐCÑCÔCˆå�1�aØ˜Y¨¬Ø˜Y¨¬Ø˜7 Dñ	*ô 	*ð 	*ð
 ˜Š?ˆ?Ý”8˜D œGÑ$Ô$Ð$Ø�nŠn˜d G¨VÐ4¸JˆnÑGÔGˆØ˜Ò"Ð"ØŒz˜UÒ"Ð"Ø—i’i‘k”k�Ø—+’+˜iÑ(Ô(ˆCØˆ
rv   r   c           
      óÈ  — |                       | j        ¦  «        \  }}|                       || f¦  «        \  }}|| k    s||k    r t          j        d| j        j        ¬¦  «        S t          j        t          |t          |d¦  «        z   |t          |d¦  «        z
  ¦  «        t          | j        ¦  «        ¬¦  «        }t          |||| j
        | j        | j        |¦  «         |S )Nr   r5   )rL   r9   rP   rà   rG   r6   r�   rO   r    r   rE   rF   )r`   Úkrb   rc   rt   r    s         ri   Údiagonalz_cs_matrix.diagonalÜ  sÅ   € Ø�zŠz˜$œ*Ñ%Ô%‰ˆˆ1Ø�zŠz˜1˜q˜b˜'Ñ"Ô"‰ˆˆ1à��Š7ˆ7�a˜1’f�fÝ”8˜A T¤Y¤_Ð5Ñ5Ô5Ð5ÝŒH•S˜�S  A™YœY™¨­C°°1©I¬I©Ñ6Ô6½fÀTÄZÑ>PÔ>PÐQÑQÔQˆÝ�Q˜˜1˜dœk¨4¬<¸¼ÀAÑFÔFÐFØˆrv   c                 óè  — | j         dk    rÐt          | d¦  «        sÀ||                      d¦  «        d         v r£t          | j        ¦  «        }t          j        t          | j        ¦  «        dz
  |¬¦  «        }|  	                    t
          j
        ¦  «        \  }}|||<   |                      |¦  «        }|dz  dk    r|j        }|                     d||¬¦  «        S t          j        | |||¬¦  «        S )	z„Sum the array/matrix over the given axis.  If the axis is None, sum
        over both rows and columns, returning a scalar.
        r7   Ú	blocksize))r   rk   )r   éþÿÿÿr   r   r5   ry   )rs   r6   Úout)r]   ÚhasattrrL   r'   r6   rP   rQ   rS   rE   Ú_minor_reduceÚaddÚ_ascontainerr�   r´   r   )r`   rs   r6   rõ   Ú	res_dtyperÑ   Úmajor_indexÚvalues           ri   r´   z_cs_matrix.sumì  sè   € ð ŒI˜ŠNˆN¥7¨4°Ñ#=Ô#=ˆNØ˜Ÿ
š
Ð#5Ñ6Ô6°qÔ9Ð9Ð9å% d¤jÑ1Ô1ˆIÝ”(�3˜tœ{Ñ+Ô+¨aÑ/°yÐAÑAÔAˆCà!%×!3Ò!3µB´FÑ!;Ô!;ÑˆK˜Ø$ˆC�ÑØ×#Ò# CÑ(Ô(ˆCØ�a‰x˜1Š}ˆ}Ø”e�à—7’7 ¨%°S�7Ñ9Ô9Ð9å”;˜t¨$°eÀÐEÑEÔEÐErv   c                 óÎ   — |€| j         }t          j        t          j        | j        ¦  «        ¦  «        }|                     |t          | j        |         ¦  «        ¦  «        }||fS )a›  Reduce nonzeros with a ufunc over the minor axis when non-empty

        Can be applied to a function of self.data by supplying data parameter.

        Warning: this does not call sum_duplicates()

        Returns
        -------
        major_index : array of ints
            Major indices where nonzero

        value : array of self.dtype
            Reduce result for nonzeros in each major_index
        )rG   rP   Úflatnonzerorr   rE   Úreduceatr&   )r`   ÚufuncrG   rû   rü   s        ri   r÷   z_cs_matrix._minor_reduce  s_   € ð ˆ<Ø”9ˆDÝ”n¥R¤W¨T¬[Ñ%9Ô%9Ñ:Ô:ˆØ—’˜tÝ2°4´;¸{Ô3KÑLÔLñNô Nˆà˜EÐ!Ð!rv   c                 ó  — |                       | j        ¦  «        \  }}|                       ||f¦  «        \  }}t          ||| j        | j        | j        ||dz   ||dz   ¦	  «	        \  }}}	|	                     | j        ¬¦  «        S )Nr   r5   )rL   r9   r   rE   rF   rG   r´   r6   )
r`   rÈ   rÄ   rb   rc   ÚmajorÚminorrE   rF   rG   s
             ri   Ú_get_intXintz_cs_matrix._get_intXint  s‚   € Ø�zŠz˜$œ*Ñ%Ô%‰ˆˆ1Ø—z’z 3¨ *Ñ-Ô-‰ˆˆuÝ 1Øˆq�$”+˜tœ|¨T¬YØ�5˜1‘9˜e U¨Q¡Yñ!0ô !0Ñˆ�˜ð �xŠx˜dœjˆxÑ)Ô)Ð)rv   c                 óÚ   — |                       ||f¦  «        \  }}|j        dv r!|j        dv r|                      ||d¬¦  «        S |                      |¦  «                             |¦  «        S )N©r   NTr?   )rL   ÚstepÚ_get_submatrixÚ_major_sliceÚ_minor_slice©r`   rÈ   rÄ   r  r  s        ri   Ú_get_sliceXslicez_cs_matrix._get_sliceXslice&  sq   € Ø—z’z 3¨ *Ñ-Ô-‰ˆˆuØŒ:˜Ð"Ð" u¤z°YÐ'>Ð'>Ø×&Ò& u¨e¸$Ð&Ñ?Ô?Ð?Ø× Ò  Ñ'Ô'×4Ò4°UÑ;Ô;Ð;rv   c                 óX  — | j         j        }|                      | j        ¦  «        \  }}|                      ||f¦  «        \  }}t	          j        ||¬¦  «        }t	          j        ||¬¦  «        }t	          j        |j        | j        ¬¦  «        }t          ||| j	        | j         | j
        |j        |                     ¦   «         |                     ¦   «         |¦	  «	         |j        dk    r|                      |¦  «        S |                      |                     |j        ¦  «        ¦  «        S )Nr5   r   )rF   r6   rL   r9   rP   r[   rà   r»   r   rE   rG   r¸   r]   rù   rY   r³   )	r`   rÈ   rÄ   rd   rb   rc   r  r  Úvals	            ri   Ú_get_arrayXarrayz_cs_matrix._get_arrayXarray,  sû   € à”LÔ&ˆ	Ø�zŠz˜$œ*Ñ%Ô%‰ˆˆ1Ø—z’z 3¨ *Ñ-Ô-‰ˆˆuÝ”
˜5¨	Ð2Ñ2Ô2ˆÝ”
˜5¨	Ð2Ñ2Ô2ˆåŒh�u”z¨¬Ð4Ñ4Ô4ˆÝ˜!˜Q ¤¨T¬\¸4¼9Øœ* e§k¢k¡m¤m°U·[²[±]´]ÀCñ	Iô 	Ið 	IàŒ:˜Š?ˆ?Ø×$Ò$ SÑ)Ô)Ð)Ø�~Š~˜cŸkšk¨%¬+Ñ6Ô6Ñ7Ô7Ð7rv   c                 ó†   — |                       ||f¦  «        \  }}|                      |¦  «                             |¦  «        S ©N)rL   Ú_major_index_fancyÚ_minor_index_fancyr  s        ri   Ú_get_columnXarrayz_cs_matrix._get_columnXarray;  s=   € à—z’z 3¨ *Ñ-Ô-‰ˆˆuØ×&Ò& uÑ-Ô-×@Ò@ÀÑGÔGÐGrv   c           	      ób  — |                       | j        | j        f¦  «        }t          j        ||¬¦  «                             ¦   «         }|                      | j        ¦  «        d         }t          |¦  «        }| j	        dk    r|                      ||f¦  «        n|f}|dk    r|  
                    || j        ¬¦  «        S | j                             |d¬¦  «        }| j                             |d¬¦  «        }||dz            ||         z
  }	t          j        |dz   |¬¦  «        }
t          j        |	|
dd…         ¬¦  «         |
d	         }t          j        ||¬¦  «        }t          j        || j        ¬¦  «        }t!          ||||| j        ||¦  «         |  
                    |||
f|d¬
¦  «        S )zBIndex along the major axis where idx is an array of ints.
        r5   r   r7   r   Fr?   N©rõ   rk   r°   )rN   rE   rF   rP   r[   r¸   rL   rM   rS   r]   rY   r6   r^   rQ   Úcumsumrà   r   rG   )r`   rƒ   rd   rF   rc   rb   rå   Úself_indptrÚself_indicesÚrow_nnzÚ
res_indptrrŒ   Úres_indicesÚres_datas                 ri   r  z_cs_matrix._major_index_fancy@  s³  € ð ×)Ò)¨4¬;¸¼Ð*EÑFÔFˆ	Ý”*˜S¨	Ð2Ñ2Ô2×8Ò8Ñ:Ô:ˆà�JŠJ�tÔ(Ñ)Ô)¨!Ô,ˆÝ�‰LŒLˆØ*.¬)°qª.¨.�D—J’J  1˜vÑ&Ô&Ð&¸q¸dˆ	Ø�Š6ˆ6Ø—>’> )°4´:�>Ñ>Ô>Ð>à”k×(Ò(¨¸Ð(Ñ?Ô?ˆØ”|×*Ò*¨9¸5Ð*ÑAÔAˆà˜g¨™kÔ*¨[¸Ô-AÑAˆÝ”X˜a !™e¨9Ð5Ñ5Ô5ˆ
Ý
Œ	�'˜z¨!¨"¨"œ~Ð.Ñ.Ô.Ð.à˜ŒnˆÝ”h˜s¨)Ð4Ñ4Ô4ˆÝ”8˜C t¤zÐ2Ñ2Ô2ˆÝØØØØØŒIØØñ	
ô 	
ð 	
ð �~Š~˜x¨°jÐAØ$-°Eð ñ ;ô ;ð 	;rv   c           
      ó^  — |t          d¦  «        k    r|r|                      ¦   «         n| S |                      | j        ¦  «        \  }}|                     |¦  «        \  }}}t          t          |||¦  «        ¦  «        }| j        dk    r|                      ||f¦  «        n|f}|dk    r|                      || j	        ¬¦  «        S ||}
}	|dk    r|dk    rd}
|dz   |dz   }}| j
        |||…         | j
        |	|
|…         z
  }| j        j	        }t          j        |dz   |¬¦  «        }t          j        ||dd…         ¬¦  «         |dk    rit          | j
        |         | j
        |         ¦  «        }t          j        | j        |         |¬¦  «        }t          j        | j        |         |¬¦  «        }n^|d         }t          j        ||¬¦  «        }t          j        || j	        ¬¦  «        }t#          |||| j
        | j        | j        ||¦  «         |                      |||f|d	¬
¦  «        S )z@Index along the major axis where idx is a slice object.
        Nr7   r   r5   rk   r   r  r?   Fr°   )Úslicer=   rL   rM   rF   rS   Úranger]   rY   r6   rE   rP   rQ   r  rW   rG   rà   r   )r`   rƒ   r=   rb   rc   ÚstartÚstopr  rå   Ústart0Ústop0Ústart1Ústop1r  rd   r  Úall_idxr  r  rŒ   s                       ri   r	  z_cs_matrix._major_slicec  s9  € ð •%˜‘+”+ÒÐØ"&Ð0�4—9’9‘;”;�;¨DÐ0à�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1ØŸKšK¨™NœNÑˆˆt�TÝ•�e˜T 4Ñ(Ô(Ñ)Ô)ˆØ*.¬)°qª.¨.�D—J’J  1˜vÑ&Ô&Ð&¸q¸dˆ	Ø�Š6ˆ6Ø—>’> )°4´:�>Ñ>Ô>Ð>ð ˜t�ˆØ�2Š:ˆ:˜% 1š*˜*ØˆEØ ™	 4¨!¡8�ˆà”+˜f U¨4Ð/Ô0ØŒK˜˜u TÐ)Ô*ñ+ˆà”LÔ&ˆ	Ý”X˜a ™c¨Ð3Ñ3Ô3ˆ
Ý
Œ	�'˜z¨!¨"¨"œ~Ð.Ñ.Ô.Ð.à�1Š9ˆ9Ý˜DœK¨Ô.°´¸DÔ0AÑBÔBˆGÝœ( 4¤<°Ô#8¸tÐDÑDÔDˆKÝ”x ¤	¨'Ô 2¸Ð>Ñ>Ô>ˆHˆHà˜R”.ˆCÝœ( 3¨iÐ8Ñ8Ô8ˆKÝ”x ¨4¬:Ð6Ñ6Ô6ˆHÝ˜%  t¨T¬[¸$¼,Øœ) [°(ñ<ô <ð <ð �~Š~˜x¨°jÐAØ$-°Eð ñ ;ô ;ð 	;rv   c           
      óÊ  — |                       | j        | j        f¦  «        }| j                             |d¬¦  «        }| j                             |d¬¦  «        }t	          j        ||¬¦  «                             ¦   «         }|                      | j        ¦  «        \  }}t          |¦  «        }| j
        dk    r|                      ||f¦  «        n|f}|dk    r|                      || j        ¬¦  «        S t	          j        ||¬¦  «        }	t	          j        | j        |¬¦  «        }
t          |||||||	|
¦  «         t	          j        |¦  «                             |d¬¦  «        }|
d         }t	          j        ||¬¦  «        }t	          j        || j        ¬¦  «        }t%          ||	t          | j        ¦  «        || j        ||¦  «         |                      |||
f|d¬¦  «        S )zBIndex along the minor axis where idx is an array of ints.
        Fr?   r5   r7   r   rk   r°   )rN   rF   rE   r^   rP   r[   r¸   rL   rM   rS   r]   rY   r6   rQ   Ú
empty_liker   Úargsortrà   r   rG   )r`   rƒ   rd   rF   rE   rb   rc   rð   rå   Úcol_offsetsr  Ú	col_orderrŒ   r  r  s                  ri   r  z_cs_matrix._minor_index_fancy‹  sâ  € ð ×)Ò)¨4¬<¸¼Ð*EÑFÔFˆ	Ø”,×%Ò% i°eÐ%Ñ<Ô<ˆØ”×#Ò# I°EÐ#Ñ:Ô:ˆåŒj˜ IÐ.Ñ.Ô.×4Ò4Ñ6Ô6ˆà�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1Ý�‰HŒHˆØ*.¬)°qª.¨.�D—J’J  1˜vÑ&Ô&Ð&¸q¸dˆ	Ø�Š6ˆ6Ø—>’> )°4´:�>Ñ>Ô>Ð>õ ”h˜q¨	Ð2Ñ2Ô2ˆÝ”] 4¤;°iÐ@Ñ@Ô@ˆ
ÝØØØØØØØØñ		
ô 		
ð 		
õ ”J˜s‘O”O×*Ò*¨9¸5Ð*ÑAÔAˆ	Ø˜ŒnˆÝ”h˜s¨)Ð4Ñ4Ô4ˆÝ”8˜C t¤zÐ2Ñ2Ô2ˆÝ˜) [µ#°d´lÑ2CÔ2CØ! 4¤9¨k¸8ñ	Eô 	Eð 	Eà�~Š~˜x¨°jÐAØ$-°Eð ñ ;ô ;ð 	;rv   c                 óú  — |t          d¦  «        k    r|r|                      ¦   «         n| S |                      | j        ¦  «        \  }}|                     |¦  «        \  }}}t          t          |||¦  «        ¦  «        }|dk    r1|                      |                      ||f¦  «        | j        ¬¦  «        S |dk    r|  	                    ||¬¦  «        S |  
                    t          j        |||¦  «        ¦  «        S )z@Index along the minor axis where idx is a slice object.
        Nr   r5   r   )r  r=   )r  r=   rL   rM   rF   rS   r   rY   r6   r  r  rP   rÆ   )r`   rƒ   r=   rb   rc   r!  r"  r  s           ri   r
  z_cs_matrix._minor_slice²  sè   € ð •%˜‘+”+ÒÐØ"&Ð0�4—9’9‘;”;�;¨DÐ0à�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1ØŸKšK¨™NœNÑˆˆt�TÝ•�e˜T 4Ñ(Ô(Ñ)Ô)ˆØ�Š6ˆ6Ø—>’> $§*¢*¨a°¨VÑ"4Ô"4¸D¼J�>ÑGÔGÐGØ�1Š9ˆ9Ø×&Ò&¨S°tÐ&Ñ<Ô<Ð<à×&Ò&¥r¤y°¸¸dÑ'CÔ'CÑDÔDÐDrv   c                 óà  — |                       | j        ¦  «        \  }}t          ||¦  «        \  }}t          ||¦  «        \  }}	|dk    r*|dk    r$||k    r|	|k    r|r|                      ¦   «         n| S t	          ||| j        | j        | j        ||||	¦	  «	        \  }
}}|                       ||z
  |	|z
  f¦  «        }| j        dk    r	|d         f}|  	                    |||
f|| j
        d¬¦  «        S )zbReturn a submatrix of this matrix.

        major, minor: None, int, or slice with step 1
        r   r   F)r9   r6   r=   )rL   rM   Ú_process_slicer=   r   rE   rF   rG   r]   rY   r6   )r`   r  r  r=   rb   rc   Úi0Úi1Új0Új1rE   rF   rG   r9   s                 ri   r  z_cs_matrix._get_submatrixÂ  s  € ð
 �zŠz˜$Ô+Ñ,Ô,‰ˆˆ1Ý  qÑ)Ô)‰ˆˆBÝ  qÑ)Ô)‰ˆˆBà�Š7ˆ7�r˜Q’w�w 2¨¢7 7¨r°Qªw¨wØ"&Ð0�4—9’9‘;”;�;¨DÐ0å 1Øˆq�$”+˜tœ|¨T¬Y¸¸BÀÀBñ!Hô !HÑˆ�˜ð —
’
˜B ™G R¨"¡WÐ-Ñ.Ô.ˆØŒ9˜Š>ˆ>Ø˜1”X�KˆEØ�~Š~˜t W¨fÐ5¸UØ$(¤J°Uð ñ <ô <ð 	<rv   c                 óh   — |                       ||f¦  «        \  }}|                      |||¦  «         d S r  ©rL   Ú	_set_many©r`   rÈ   rÄ   rŽ   r|   r}   s         ri   Ú_set_intXintz_cs_matrix._set_intXint×  ó7   € Ø�zŠz˜3 ˜*Ñ%Ô%‰ˆˆ1Ø�Š�q˜!˜QÑÔÐÐÐrv   c                 óh   — |                       ||f¦  «        \  }}|                      |||¦  «         d S r  r5  r7  s         ri   Ú_set_arrayXarrayz_cs_matrix._set_arrayXarrayÛ  r9  rv   c                 ó,  —  | j         |                      ||f¦  «        Ž  |j        \  }}|dk    o|j        d         dk    }|dk    o|j        d         dk    }|j        |j        }	}t          j        |j        | j        ¬¦  «        }|j	        dk    rd S |r^t          j
        t          j        |¦  «        t          |¦  «        ¦  «        }t          j        |	|¦  «        }	t          j        ||¦  «        }|r^t          j
        ||¦  «        }t          j        t          j        |¦  «        t          |	¦  «        ¦  «        }	t          j
        ||¦  «        }|                      |||	f         |||	f         f¦  «        \  }
}|                      |
||¦  «         d S )Nr   r   r5   )Ú
_zero_manyrL   r9   rÈ   rÄ   rP   r[   rG   r6   r»   rÅ   rÆ   rS   rÇ   r6  )r`   rÈ   rÄ   rŽ   rb   rc   Úbroadcast_rowÚbroadcast_colÚrÚcr|   r}   s               ri   Ú_set_arrayXarray_sparsez"_cs_matrix._set_arrayXarray_sparseß  sa  € àˆŒ˜Ÿš S¨# JÑ/Ô/Ð0Ð0àŒy‰ˆˆ1Ø˜QšÐ2 1¤7¨1¤:°¢?ˆØ˜QšÐ2 1¤7¨1¤:°¢?ˆØŒu�a”eˆ1ˆåŒJ�q”v T¤ZÐ0Ñ0Ô0ˆØŒ6�QŠ;ˆ;ØˆFàð 	Ý”	�"œ) A™,œ,­¨A©¬Ñ/Ô/ˆAÝ”˜˜1‘”ˆAÝ”˜˜1‘”ˆAØð 	 Ý”	˜!˜Q‘”ˆAÝ”�œ	 !™œ¥c¨!¡f¤fÑ-Ô-ˆAÝ”	˜!˜Q‘”ˆAà�zŠz˜3˜q !˜tœ9 c¨!¨Q¨$¤iÐ0Ñ1Ô1‰ˆˆ1Ø�Š�q˜!˜QÑÔÐÐÐrv   c           
      ó†  — d| j         v rd S | j        dk    rt          d¦  «        ‚| j         \  }}|j        dk    }|dk     r}|rt          ||z   |¦  «        }n!t          ||z   |t	          |¦  «        ¦  «        }t          j        | ||z
  | j        j        ¬¦  «        }t          j        || j        j        ¬¦  «        }n{|rt          |||z
  ¦  «        }n!t          |||z
  t	          |¦  «        ¦  «        }t          j        || j        j        ¬¦  «        }t          j        |||z   | j        j        ¬¦  «        }|s|d t	          |¦  «        …         }t          j	        t          j
        || j        ¬¦  «        ¦  «                             ¦   «         }	|	                     ¦   «         j         |                     ¦   «         j         k    rt          j        |	|j         ¦  «        }	|	j        dk    rd S |                      ||f¦  «        \  }}|                      ||f¦  «        \  }}|	j        }
t          j        |
| j        j        ¬¦  «        }t#          ||| j        | j        |
|||¦  «        }|dk    r4|                      ¦   «          t#          ||| j        | j        |
|||¦  «         d|vr|	| j        |<   d S |dk    }t	          |¦  «        t          j        |¦  «        z
  }|| j        dz  k     rX|	|         | j        ||         <   t          j        ||¬¦  «        }~|                      ||         ||         |	|         ¦  «         d S | j        }|                      ¦   «         }|                     ||¦  «         |                     | j        ¦  «        }|\  | _        | _        | _        }|rd| _        |                      ¦   «          d S d S )	Nr   r   z"diagonals cant be set in 1d arraysr5   rk   gü©ñÒMbP?r  F)r9   r]   ÚNotImplementedErrorr�   rS   rP   rÆ   rF   r6   Ú
atleast_1dr[   r¸   ÚsqueezeÚbroadcast_tor»   rL   rà   r   rE   rV   rG   rz   rŒ   Úlogical_notÚ_insert_manyÚhas_sorted_indicesr¿   Ú_setdiagrU   Úsort_indices)r`   Úvaluesrð   rb   rc   Ú	broadcastÚ	max_indexr|   r}   rŽ   Ú	n_samplesÚoffsetsrÑ   Úis_existingÚN_newÚis_newÚdo_sortre   rf   rt   s                       ri   rK  z_cs_matrix._setdiagø  s£  € Ø�”
ˆ?ˆ?ØˆFØŒ9˜Š>ˆ>Ý%Ð&JÑKÔKÐKàŒz‰ˆˆ1Ø”[ AÒ%ˆ	àˆqŠ5ˆ5Øð 7Ý  A¡ q™MœM�	�	å  A¡ q­#¨f©+¬+Ñ6Ô6�	Ý”	˜1˜"˜i¨!™m°4´<Ô3EÐFÑFÔFˆAÝ”	˜)¨4¬<Ô+=Ð>Ñ>Ô>ˆAˆAð ð 7Ý  1 q¡5™MœM�	�	å  1 q¡5­#¨f©+¬+Ñ6Ô6�	Ý”	˜)¨4¬<Ô+=Ð>Ñ>Ô>ˆAÝ”	˜!˜Q ™]°$´,Ô2DÐEÑEÔEˆAàð 	%Ø˜G�S ™VœV˜G”_ˆFåŒM�"œ* V°4´:Ð>Ñ>Ô>Ñ?Ô?×EÒEÑGÔGˆØ�9Š9‰;Œ;Ô §	¢	¡¤Ô 1Ò1Ð1Ý”  1¤7Ñ+Ô+ˆAØŒ6�QŠ;ˆ;ØˆFà�zŠz˜1˜a˜&Ñ!Ô!‰ˆˆ1Ø�zŠz˜1˜a˜&Ñ!Ô!‰ˆˆ1Ø”Fˆ	Ý”(˜9¨D¬LÔ,>Ð?Ñ?Ô?ˆÝ   A t¤{°D´LÀ)Ø!" A wñ0ô 0ˆà�!Š8ˆ8à×ÒÑ!Ô!Ð!Ý˜q ! T¤[°$´,À	Ø  ! Wñ.ô .ð .à�WÐÐà!"ˆDŒI�gÑØˆFà !’|ˆÝ�KÑ Ô ¥2Ô#3°KÑ#@Ô#@Ñ@ˆð �4”8˜eÑ#Ò#Ð#à./°¬nˆDŒI�g˜kÔ*Ñ+å”^ K°[ÐAÑAÔAˆFØØ×Ò˜a œi¨¨6¬°A°f´IÑ>Ô>Ð>Ð>Ð>ð Ô-ˆGØ—*’*‘,”,ˆCØ�LŠL˜ Ñ#Ô#Ð#Ø×+Ò+¨D¬JÑ7Ô7ˆFØ6<Ñ3ˆDŒK˜œ t¤y°!àð $Ø*/�Ô'Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#ð$ð $rv   c                 óŽ  — |                       | j        ¦  «        \  }}d„ }t          j        t          j        || j        j        ¬¦  «        ¦  «                             ¦   «         }t          j        t          j        || j        j        ¬¦  «        ¦  «                             ¦   «         } |||¦  «          |||¦  «         ||||fS )Nc                 óÈ   — |                       ¦   «         }||k    rt          d|› d|› d�¦  «        ‚|                      ¦   «         }|| k     rt          d|› d|› d�¦  «        ‚d S )Nzindex (z) out of range (>= r†   z) out of range (< -)rO   Ú
IndexErrorr�   )rF   Úboundrƒ   s      ri   Úcheck_boundsz1_cs_matrix._prepare_indices.<locals>.check_boundsE  s{   € Ø—+’+‘-”-ˆCØ�eŠ|ˆ|Ý Ð!K¨3Ð!KÐ!KÀ5Ð!KÐ!KÐ!KÑLÔLÐLØ—+’+‘-”-ˆCØ�e�VŠ|ˆ|Ý Ð!K¨3Ð!KÐ!KÀ5Ð!KÐ!KÐ!KÑLÔLÐLð ˆ|rv   r5   )rL   rM   rP   rE  r[   rF   r6   r¸   )r`   r|   r}   rb   rc   rZ  s         ri   Ú_prepare_indicesz_cs_matrix._prepare_indicesB  s¾   € Ø�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1ð	Mð 	Mð 	Mõ ŒM�"œ* Q¨d¬lÔ.@ÐAÑAÔAÑBÔB×HÒHÑJÔJˆÝŒM�"œ* Q¨d¬lÔ.@ÐAÑAÔAÑBÔB×HÒHÑJÔJˆØˆ�Q˜ÑÔÐØˆ�Q˜ÑÔÐØ�!�Q˜ˆzÐrv   c           
      ó  — |                       ||¦  «        \  }}}}t          j        t          j        || j        ¬¦  «        ¦  «                             ¦   «         }|j        }t          j        || j        j        ¬¦  «        }t          ||| j
        | j        ||||¦  «        }|dk    r4|                      ¦   «          t          ||| j
        | j        ||||¦  «         d|vr|| j        |<   dS t          d| j        j        › d�t           d¬¦  «         |dk    }	||	         | j        ||	         <   |	 }	||	         }||d	k     xx         |z  cc<   ||	         }||d	k     xx         |z  cc<   |                      ||||	         ¦  «         dS )
z�Sets value at each (i, j) to x

        Here (i,j) index major and minor respectively, and must not contain
        duplicate entries.
        r5   r   rk   Nz%Changing the sparsity structure of a z. is expensive. lil and dok are more efficient.r:   r‡   r   )r[  rP   rE  r[   r6   r¸   r»   rà   rF   r   rE   rV   rG   r   rY   rZ   r
   rI  )
r`   r|   r}   rŽ   rb   rc   rP  rQ  rÑ   r‚   s
             ri   r6  z_cs_matrix._set_manyS  s¶  € ð ×*Ò*¨1¨aÑ0Ô0‰
ˆˆ1ˆa�ÝŒM�"œ* Q¨d¬jÐ9Ñ9Ô9Ñ:Ô:×@Ò@ÑBÔBˆà”Fˆ	Ý”(˜9¨D¬LÔ,>Ð?Ñ?Ô?ˆÝ   A t¤{°D´LÀ)Ø!" A wñ0ô 0ˆà�!Š8ˆ8à×ÒÑ!Ô!Ð!Ý˜q ! T¤[°$´,À	Ø  ! Wñ.ô .ð .ð �WÐÐà!"ˆDŒI�gÑØˆFõ ð ?¸¼Ô9Pð ?ð ?ð ?å(°Qð8ñ 8ô 8ð 8ð ˜R’<ˆDØ'(¨¤wˆDŒI�g˜d”mÑ$à�5ˆDØ�$”ˆAØˆa�!ŠeˆHˆHŒH˜‰MˆHˆH‰HØ�$”ˆAØˆa�!ŠeˆHˆHŒH˜‰MˆHˆH‰HØ×Ò˜a  A d¤GÑ,Ô,Ð,Ð,Ð,rv   c           
      óv  — |                       ||¦  «        \  }}}}t          |¦  «        }t          j        || j        j        ¬¦  «        }t          ||| j        | j        ||||¦  «        }|dk    r4|                      ¦   «          t          ||| j        | j        ||||¦  «         d| j	        ||dk             <   dS )z‚Sets value at each (i, j) to zero, preserving sparsity structure.

        Here (i,j) index major and minor respectively.
        r5   r   r   rk   N)
r[  rS   rP   rà   rF   r6   r   rE   rV   rG   )r`   r|   r}   rb   rc   rP  rQ  rÑ   s           ri   r=  z_cs_matrix._zero_manyz  sÈ   € ð
 ×*Ò*¨1¨aÑ0Ô0‰
ˆˆ1ˆa�å˜‘F”Fˆ	Ý”(˜9¨D¬LÔ,>Ð?Ñ?Ô?ˆÝ   A t¤{°D´LÀ)Ø!" A wñ0ô 0ˆà�!Š8ˆ8à×ÒÑ!Ô!Ð!Ý˜q ! T¤[°$´,À	Ø  ! Wñ.ô .ð .ð ,-ˆŒ	�'˜' Bš,Ô'Ñ(Ð(Ð(rv   c           	      ó  — t          j        |d¬¦  «        }|                     |d¬¦  «        }|                     |d¬¦  «        }|                     |d¬¦  «        }| j        }|                      | j        | j        f| j        d         |j        z   ¬¦  «        }t          j        | j        |¬¦  «        | _        t          j        | j        |¬¦  «        | _        t          j        ||¬¦  «        }t          j        ||¬¦  «        }g }g }t          j	        |d¬	¦  «        \  }	}
t          j
        |
t          |¦  «        ¦  «        }
t          j        |
¦  «        }d
}t          t          |	|
|
dd…         ¦  «        ¦  «        D �]O\  }\  }}}| j        |         }| j        |         }| 
                    | j        ||…         ¦  «         | 
                    | j        ||…         ¦  «         t          j	        |||…         ddd…         d¬	¦  «        \  }}t          |¦  «        ||z
  k    r;| 
                    |||…         ¦  «         | 
                    |||…         ¦  «         nj| 
                    |||…         ddd…         |         ¦  «         | 
                    |||…         ddd…         |         ¦  «         t          |¦  «        ||<   |}�ŒQ| j        |         }| 
                    | j        |d…         ¦  «         | 
                    | j        |d…         ¦  «         t          j        |¦  «        | _        t          j        |¦  «        | _        t          j        | j        j        |¬¦  «        } |d
¦  «        |d
<   t          j        | j        ¦  «        }||	xx         |z  cc<   ||dd…<   t          j        ||¬¦  «        | _        |rd| _        |                      ¦   «          |                      d¬¦  «         dS )a:  Inserts new nonzero at each (i, j) with value x

        Here (i,j) index major and minor respectively.
        i, j and x must be non-empty, 1d arrays.
        Inserts each major group (e.g. all entries per row) at a time.
        Maintains has_sorted_indices property.
        Modifies i, j, x in place.
        Ú	mergesort)r‰   Úclip)Úmoderk   r2   r5   T)Úreturn_indexr   r   Nr  Fr@   )rP   r*  ÚtakerJ  rN   rF   rE   r»   r[   ÚuniqueÚappendrS   rr   Ú	enumerateÚziprG   Úconcatenaterà   r9   r  rL  r_   )r`   r|   r}   rŽ   r™   rU  rd   Úindices_partsÚ
data_partsÚuiÚ	ui_indptrÚnew_nnzsÚprevrA  ÚiiÚjsÚjer!  r"  ÚujÚ	uj_indptrÚnnzsÚindptr_diffs                          ri   rI  z_cs_matrix._insert_manyŽ  sÓ  € õ ”
˜1 ;Ð/Ñ/Ô/ˆØ�FŠF�5˜vˆFÑ&Ô&ˆØ�FŠF�5˜vˆFÑ&Ô&ˆØ�FŠF�5˜vˆFÑ&Ô&ˆàÔ)ˆð ×)Ò)¨4¬<¸¼Ð*EØ,0¬K¸¬O¸a¼fÑ,Dð *ñ Gô Gˆ	å”j ¤°IÐ>Ñ>Ô>ˆŒÝ”z $¤,°iÐ@Ñ@Ô@ˆŒÝŒJ�q 	Ð*Ñ*Ô*ˆÝŒJ�q 	Ð*Ñ*Ô*ˆð ˆØˆ
Ýœ	 !°$Ð7Ñ7Ô7‰ˆˆIÝ”I˜i­¨Q©¬Ñ0Ô0ˆ	Ý”7˜9Ñ%Ô%ˆØˆÝ(­¨R°¸IÀaÀbÀb¼MÑ)JÔ)JÑKÔKð 	ñ 	‰OˆA‰|��B˜à”K Ô%ˆEØ”;˜r”?ˆDØ× Ò  ¤¨e°D¨jÔ!9Ñ:Ô:Ð:Ø×Ò˜dœi¨¨d¨
Ô3Ñ4Ô4Ð4õ œI a¨¨2¨¤h¨t¨t°¨t¤nÀ4ÐHÑHÔH‰MˆB�	Ý�2‰wŒw˜"˜r™'Ò!Ð!Ø×$Ò$ Q r¨" u¤XÑ.Ô.Ð.Ø×!Ò! ! B r E¤(Ñ+Ô+Ð+Ð+à×$Ò$ Q r¨" u¤X¨d¨d°¨d¤^°IÔ%>Ñ?Ô?Ð?Ø×!Ò! ! B r E¤(¨4¨4¨R¨4¤.°Ô";Ñ<Ô<Ð<Ý! "™gœg�˜‘àˆD‰Dð ”˜B”ˆØ×Ò˜Tœ\¨%¨&¨&Ô1Ñ2Ô2Ð2Ø×Ò˜$œ) E F FÔ+Ñ,Ô,Ð,õ ”~ mÑ4Ô4ˆŒÝ”N :Ñ.Ô.ˆŒ	ÝŒx˜œÔ)°Ð;Ñ;Ô;ˆØ�)˜A‘,”,ˆˆQ‰Ý”g˜dœkÑ*Ô*ˆØ�BˆˆŒ˜8Ñ#ˆˆ‰ØˆˆQˆRˆR‰Ý”i ¨$Ð/Ñ/Ô/ˆŒàð 	 à&+ˆDÔ#Ø×ÒÑÔÐà×Ò UÐÑ+Ô+Ð+Ð+Ð+rv   c                 óä  — | j         dk    r>|                      ¦   «         }|                      |j        |j        ff|j        |¬¦  «        S |                      | j        ¦  «        \  }}| j        }t          j        t          |¦  «        | j        j
        ¬¦  «        }t          || j        |¦  «         |                      ||f¦  «        }|                      | j        |f| j        || j
        ¬¦  «        S )Nr   r?   r5   r<   )r]   rá   rT   rG   rF   r9   rL   rP   rà   rS   r6   r   rE   )r`   r=   rß   Ú	major_dimÚ	minor_dimÚminor_indicesÚmajor_indicesrÀ   s           ri   r¿   z_cs_matrix.tocooÚ  sÞ   € ØŒ9˜Š>ˆ>Ø—*’*‘,”,ˆCØ×&Ò&¨¬°3´;°.Ð'AÀ3Ä9ÐSWÐ&ÑXÔXÐXØ#Ÿzšz¨$¬*Ñ5Ô5Ñˆ	�9ØœˆÝœ¥ ]Ñ!3Ô!3¸4¼<Ô;MÐNÑNÔNˆÝ�)˜Tœ[¨-Ñ8Ô8Ð8Ø—’˜]¨MÐ:Ñ;Ô;ˆà×"Ò"ØŒY˜Ð ¤°$¸d¼jð #ñ 
ô 
ð 	
rv   c                 óº  — |€|€|                       d¦  «        d         }|                      ||¦  «        }|j        j        s|j        j        st          d¦  «        ‚|j        j        r|                      ¦   «         }|}n|                      ¦   «         }|j        }|                      |j	        ¦  «        \  }}t          |||j        |j        |j        |¦  «         |S )NÚcfr   z&Output array must be C or F contiguous)rL   Ú_process_toarray_argsr›   rœ   Úf_contiguousrX   rá   r¶   r�   rM   r   rE   rF   rG   )r`   r™   rõ   rŽ   r    rb   rc   s          ri   r²   z_cs_matrix.toarrayê  sÏ   € Øˆ;˜5˜=Ø—J’J˜tÑ$Ô$ QÔ'ˆEØ×(Ò(¨°Ñ4Ô4ˆØ”	Ô&ð 	G¨#¬)Ô*@ð 	GÝÐEÑFÔFÐFàŒ9Ô!ð 	Ø—
’
‘”ˆAØˆAˆAà—
’
‘”ˆAØ”ˆAØ�wŠw�q”~Ñ&Ô&‰ˆˆ1Ý�A�q˜!œ( A¤I¨q¬v°qÑ9Ô9Ð9Øˆ
rv   c                 ó¬   — |                       | j        ¦  «        \  }}t          ||| j        | j        | j        ¦  «         |                      ¦   «          dS )z\Remove zero entries from the array/matrix

        This is an *in place* operation.
        N)rL   rM   r   rE   rF   rG   r‹   ©r`   rb   rc   s      ri   r‘   z_cs_matrix.eliminate_zeros  sI   € ð
 �zŠz˜$Ô+Ñ,Ô,‰ˆˆ1Ý˜A˜q $¤+¨t¬|¸T¼YÑGÔGÐGØ�
Š
‰Œˆˆˆrv   Úreturnc                 óê   — t          | dd¦  «        sd| _        nTt          | d¦  «        sDt          | j        ¦  «        dz
  }t          t          || j        | j        ¦  «        ¦  «        | _        | j        S )aZ  Whether the array/matrix has sorted indices and no duplicates

        Returns
            - True: if the above applies
            - False: otherwise

        has_canonical_format implies has_sorted_indices, so if the latter flag
        is False, so will the former be; if the former is found True, the
        latter flag is also set.
        Ú_has_sorted_indicesTFÚ_has_canonical_formatr   )	rÖ   r„  rö   rS   rE   Úboolr   rF   Úhas_canonical_format©r`   rb   s     ri   r†  z_cs_matrix.has_canonical_format
  s{   € õ �tÐ2°DÑ9Ô9ð 	à).ˆDÔ&Ð&Ý˜Ð6Ñ7Ô7ð 	Ý�D”KÑ Ô  1Ñ$ˆAÝ(,Ý(¨¨D¬K¸¼ÑFÔFñ)ô )ˆDÔ%ð Ô)Ð)rv   r  c                 óD   — t          |¦  «        | _        |r	d| _        d S d S )NT)r…  r„  rJ  ©r`   r  s     ri   r†  z_cs_matrix.has_canonical_format!  s0   € å%)¨#¡Y¤YˆÔ"Øð 	+Ø&*ˆDÔ#Ð#Ð#ð	+ð 	+rv   c                 óô   — | j         rdS |                      ¦   «          |                      | j        ¦  «        \  }}t	          ||| j        | j        | j        ¦  «         |                      ¦   «          d| _         dS )zfEliminate duplicate entries by adding them together

        This is an *in place* operation.
        NT)	r†  rL  rL   rM   r   rE   rF   rG   r‹   r€  s      ri   rV   z_cs_matrix.sum_duplicates'  su   € ð
 Ô$ð 	ØˆFØ×ÒÑÔÐà�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1Ý˜1˜a ¤¨d¬l¸D¼IÑFÔFÐFà�
Š
‰ŒˆØ$(ˆÔ!Ð!Ð!rv   c                 ó¸   — t          | d¦  «        sDt          | j        ¦  «        dz
  }t          t	          || j        | j        ¦  «        ¦  «        | _        | j        S )z¢Whether the indices are sorted

        Returns
            - True: if the indices of the array/matrix are in sorted order
            - False: otherwise
        rƒ  r   )rö   rS   rE   r…  r   rF   rƒ  r‡  s     ri   rJ  z_cs_matrix.has_sorted_indices6  s[   € õ �tÐ2Ñ3Ô3ð 	Ý�D”KÑ Ô  1Ñ$ˆAÝ'+Ý& q¨$¬+°t´|ÑDÔDñ(ô (ˆDÔ$ð Ô'Ð'rv   c                 ó.   — t          |¦  «        | _        d S r  )r…  rƒ  r‰  s     ri   rJ  z_cs_matrix.has_sorted_indicesF  s   € å#'¨¡9¤9ˆÔ Ð Ð rv   c                 óV   — |                       ¦   «         }|                     ¦   «          |S )z?Return a copy of this array/matrix with sorted indices
        )r=   rL  )r`   ÚAs     ri   Úsorted_indicesz_cs_matrix.sorted_indicesK  s&   € ð �IŠI‰KŒKˆØ	�ŠÑÔÐØˆrv   c                 ó–   — | j         sAt          | j        ¦  «        dz
  }t          || j        | j        | j        ¦  «         d| _         dS dS )z9Sort the indices of this array/matrix *in place*
        r   TN)rJ  rS   rE   r   rF   rG   r‡  s     ri   rL  z_cs_matrix.sort_indicesV  sU   € ð Ô&ð 	+Ý�D”KÑ Ô  1Ñ$ˆAÝ˜Q ¤¨T¬\¸4¼9ÑEÔEÐEØ&*ˆDÔ#Ð#Ð#ð	+ð 	+rv   c                 óâ  — |                       | j        ¦  «        d         }t          | j        ¦  «        |dz   k    rt	          d¦  «        ‚t          | j        ¦  «        | j        k     rt	          d¦  «        ‚t          | j        ¦  «        | j        k     rt	          d¦  «        ‚t          | j        d| j        …         ¦  «        | _        t          | j        d| j        …         ¦  «        | _        dS )z8Remove empty space after all non-zero elements.
        r   r   z index pointer has invalid lengthz)indices array has fewer than nnz elementsz&data array has fewer than nnz elementsN)	rL   rM   rS   rE   rX   rF   rŒ   rG   r   )r`   rw  s     ri   r‹   z_cs_matrix.prune^  sË   € ð —J’J˜tÔ0Ñ1Ô1°!Ô4ˆ	åˆtŒ{ÑÔ˜y¨1™}Ò,Ð,ÝÐ?Ñ@Ô@Ð@ÝˆtŒ|ÑÔ˜tœxÒ'Ð'ÝÐHÑIÔIÐIÝˆtŒy‰>Œ>˜DœHÒ$Ð$ÝÐEÑFÔFÐFå# D¤L°°$´(°Ô$;Ñ<Ô<ˆŒÝ  ¤¨9¨D¬H¨9Ô!5Ñ6Ô6ˆŒ	ˆ	ˆ	rv   c                 óÒ  — t          || j        ¬¦  «        }t          | d¦  «        r{| j        \  }}t	          |d         |¦  «        \  }}t	          |d         |¦  «        \  }}|s|rt          d| j        › d|› �¦  «        ‚| j        d         |z  | j        d         |z  }	}nR|                      t          |¦  «        dk    r|n	d|d         f¦  «        \  }}|                      | j	        ¦  «        \  }}	||k     rV| j
        d | j        |         …         | _
        | j        d | j        |         …         | _        | j        d |dz   …         | _        nX||k    rRt          j        | j        |dz   ¦  «        | _        | j        |dz   d …                              | j        |         ¦  «         ||	k     r²| j
        |k     }
t          j        |
¦  «        s“| j
        |
         | _
        | j        |
         | _        |                      t          j        |
¦  «        \  }}| j                             d¦  «         || j        dd …         |<   t          j        | j        | j        ¬¦  «         || _        d S )Nr0   ró   r   r   zshape must be divisible into z blocks. Got r  )r(   rK   rö   ró   ÚdivmodrX   r9   rL   rS   rM   rF   rE   rG   rP   ÚresizeÚfillr   r÷   rø   r  rH   )r`   r9   ÚbmÚbnÚnew_MÚrmÚnew_NÚrnrb   rc   r‚   rû   r  s                ri   r”  z_cs_matrix.resizem  sV  € Ý˜E¨D¬NÐ;Ñ;Ô;ˆå�4˜Ñ%Ô%ð 
	1Ø”^‰FˆB�Ý˜u Qœx¨Ñ,Ô,‰IˆE�2Ý˜u Qœx¨Ñ,Ô,‰IˆE�2Øð :�Rð :Ý ð "9ÀÄð "9ð "9Ø16ð"9ð "9ñ :ô :ð :à”:˜a”= BÑ&¨¬
°1¬¸Ñ(;ˆqˆAˆAàŸ:š:­s°5©z¬z¸!ª|¨| e eÀ!ÀUÈ1ÄXÀÑOÔO‰LˆE�5Ø—:’:˜dÔ/Ñ0Ô0‰DˆAˆqà�1Š9ˆ9Øœ<Ð(;¨¬°UÔ);Ð(;Ô<ˆDŒLØœ	Ð"5 4¤;¨uÔ#5Ð"5Ô6ˆDŒIØœ+ j u¨q¡y jÔ1ˆDŒKˆKØ�QŠYˆYÝœ) D¤K°¸±Ñ;Ô;ˆDŒKØŒK˜˜A™˜˜Ô×$Ò$ T¤[°¤^Ñ4Ô4Ð4à�1Š9ˆ9Ø”< %Ò'ˆDÝ”6˜$‘<”<ð 8Ø#œ|¨DÔ1�”Ø œI dœO�”	Ø#'×#5Ò#5µb´f¸dÑ#CÔ#CÑ �˜SØ”× Ò  Ñ#Ô#Ð#Ø/2�”˜A˜B˜B” Ñ,Ý”	˜$œ+¨4¬;Ð7Ñ7Ô7Ð7àˆŒˆˆrv   c                 ó
  — |rS|                       || j                             ¦   «         | j                             ¦   «         f| j        |j        ¬¦  «        S |                       || j        | j        f| j        |j        ¬¦  «        S )zµReturns a matrix with the same sparsity structure as self,
        but with different data.  By default the structure arrays
        (i.e. .indptr and .indices) are copied.
        r8   )rY   rF   r=   rE   r9   r6   )r`   rG   r=   s      ri   r�   z_cs_matrix._with_data—  s�   € ð
 ð 	FØ—>’> 4¨¬×):Ò):Ñ)<Ô)<Ø#'¤;×#3Ò#3Ñ#5Ô#5ð#7à(,¬
Ø(,¬
ð "ñ 4ô 4ð 4ð
 —>’> 4¨¬°t´{Ð"CØ(,¬
¸$¼*ð "ñ Fô Fð Frv   c                 ó¢  — |                       |¦  «        }t          t          d|z   dz   ¦  «        }| j        |j        z   }|                      | j        | j        |j        |j        f|¬¦  «        }t          j        | j        j	        |¬¦  «        }t          j        ||¬¦  «        }g d¢}||v r!t          j        |t          j
        ¬¦  «        }	n.t          j        |t          | j        |j        ¦  «        ¬¦  «        }	|                      | j        ¦  «        \  }
} ||
|t          j        | j        |¬¦  «        t          j        | j        |¬¦  «        | j        t          j        |j        |¬¦  «        t          j        |j        |¬¦  «        |j        |||	¦  «         |                       |	||f| j	        ¬¦  «        }|                     ¦   «          |S )z5apply the binary operation fn to two sparse matrices.rß   r2   r5   )Ú_ne_Ú_lt_Ú_gt_Ú_le_Ú_ge_rÞ   )rY   rÖ   r   rŒ   rN   rE   rF   rP   rà   r9   Úbool_r    r6   rL   rM   r[   rG   r‹   )r`   r’   r“   r×   Úmaxnnzrd   rE   rF   Úbool_opsrG   rb   rc   rŽ  s                ri   r¥   z_cs_matrix._binopt¥  s¯  € à—’˜uÑ%Ô%ˆõ •\ 5¨2¡:°Ñ#5Ñ6Ô6ˆà”˜EœIÑ%ˆØ×)Ò)¨4¬;¸¼Ø%*¤\°5´=ð+Bà+1ð *ñ 3ô 3ˆ	õ ”˜$œ+Ô+°9Ð=Ñ=Ô=ˆÝ”(˜6¨Ð3Ñ3Ô3ˆà;Ð;Ð;ˆØ�ˆ>ˆ>Ý”8˜F­"¬(Ð3Ñ3Ô3ˆDˆDå”8˜F­&°´¸U¼[Ñ*IÔ*IÐJÑJÔJˆDà�zŠz˜$Ô+Ñ,Ô,‰ˆˆ1Ø
ˆˆ1ˆaÝŒ:�d”k¨Ð3Ñ3Ô3ÝŒ:�d”l¨)Ð4Ñ4Ô4ØŒ9ÝŒ:�e”l¨)Ð4Ñ4Ô4ÝŒ:�e”m¨9Ð5Ñ5Ô5ØŒ:Ø�7˜Dñ	"ô 	"ð 	"ð �NŠN˜D '¨6Ð2¸$¼*ˆNÑEÔEˆØ	�Š‰	Œ	ˆ	àˆrv   c                 ó$  — |j         | j         k    rt          d| j         › d|j         › �¦  «        ‚|                      |d¦  «        }t          j        |j        t          j        ¦  «        r¤t          j        | j         | j        ¬¦  «        }|                     t          j	        ¦  «         | 
                    ¦   «         }| j        dk    r	|d         f}d||<   |                     ¦   «         }|j        ||j        <   |                      |¦  «        S |}|S )z?
        Divide this matrix by a second sparse matrix.
        r¯   r—   Ú_eldiv_r5   r   rk   r   )r9   rX   r¥   rP   Ú
issubdtyper6   Úinexactrà   r•  ÚnanÚnonzeror]   r¿   rG   rÀ   rž   )r`   r’   r@  rõ   rÀ   s        ri   Ú_divide_sparsez_cs_matrix._divide_sparseÈ  só   € ð Œ;˜$œ*Ò$Ð$ÝÐR°D´JÐRÐRÀUÄ[ÐRÐRÑSÔSÐSà�LŠL˜ 	Ñ*Ô*ˆåŒ=˜œ¥"¤*Ñ-Ô-ð 	õ
 ”(˜4œ:¨T¬ZÐ8Ñ8Ô8ˆCØ�HŠH•R”VÑÔÐØ—]’]‘_”_ˆFØŒy˜AŠ~ˆ~Ø  œ*˜�ØˆC�‰KØ—’‘	”	ˆAØœFˆC�”‰MØ—?’? 3Ñ'Ô'Ð'ð ˆCØˆJrv   c                 óÌ  — | j         |k    r|r|                      ¦   «         n| S t          || j        ¬¦  «        }t	          | j         |¦  «        |k    rt          d¦  «        ‚t          | j         ¦  «        dk    r½t          |¦  «        dk    rª|                      ¦   «          | j        dk    r|  	                    || j
        d¬¦  «        S |d         }t          j        || j        d         ¦  «        }t          j        d|¦  «        }t          j        d|g¦  «        }|                      |||f|d¬¦  «        S | j        }t          |¦  «        dk    r"t          |¦  «        }t          d	|› d
�¦  «        ‚| j        dk    r|  	                    || j
        d¬¦  «        S |                      ¦   «          |                      |¦  «        \  }	}|                      |¦  «        \  }
}t'          d„ |D ¦   «         ¦  «        rqt          j        |	|z  | j        d         ¦  «        }t          j        t          j        |¦  «        |	¦  «        }t          j        dt          |¦  «        dz   |¦  «        }nâ|
dk    rs||k    rmt          j        | j        |	¦  «        }t          j        | j        |	¦  «        }t          j        dt          |¦  «        dz   t          | j        ¦  «        ¦  «        }ni|dk    rc|
|	k    r]t          j        | j        |¦  «        }t          j        t          j        |¦  «        t          | j        ¦  «        ¦  «        }| j        |z  }|  	                    |||f|d¬¦  «        S )Nr0   zcannot be broadcastr   r   F)r6   r=   r°   r7   z0CSR/CSC broadcast_to cannot have shape >2D. Got ÚDc              3   ó"   K  — | ]
}|d k    V — ŒdS r  ry   )r{   rè   s     ri   ú	<genexpr>z+_cs_matrix._broadcast_to.<locals>.<genexpr>  s&   è è € Ð)Ð)˜!ˆq�AŠvÐ)Ð)Ð)Ð)Ð)Ð)rv   )r9   r=   r(   rK   r*   rX   rS   rV   rŒ   rY   r6   rP   ÚfullrG   rÆ   rW   Ú_csr_containerrM   rL   r   rÇ   rF   rÅ   rE   )r`   r9   r=   rc   rG   rF   rE   Ú	old_shaper]   rb   rË   rÌ   s               ri   Ú_broadcast_toz_cs_matrix._broadcast_toä  sü  € ØŒ:˜ÒÐØ"&Ð0�4—9’9‘;”;�;¨DÐ0å˜E¨T¬^Ð=Ñ=Ô=ˆå˜DœJ¨Ñ.Ô.°%Ò7Ð7ÝÐ2Ñ3Ô3Ð3åˆtŒz‰?Œ?˜aÒÐ¥C¨¡J¤J°!¢O OØ×ÒÑ!Ô!Ð!ØŒx˜1Š}ˆ}Ø—~’~ e°4´:ÀE�~ÑJÔJÐJà�a”ˆAÝ”7˜1˜dœi¨œlÑ+Ô+ˆDÝ”i  !‘n”nˆGÝ”X˜q !˜fÑ%Ô%ˆFØ×&Ò&¨¨g°vÐ'>ÀeÐRWÐ&ÑXÔXÐXð Ô%ˆ	åˆu‰:Œ:˜Š?ˆ?Ý�u‘:”:ˆDÝÐWÐPTÐWÐWÐWÑXÔXÐXàŒ8�qŠ=ˆ=Ø—>’> %¨t¬zÀ�>ÑFÔFÐFà×ÒÑÔÐØ�zŠz˜%Ñ Ô ‰ˆˆ1Ø—’˜IÑ&Ô&‰ˆˆBÝÐ)Ð)˜yÐ)Ñ)Ô)Ñ)Ô)ð 	%å”7˜1˜q™5 $¤)¨A¤,Ñ/Ô/ˆDÝ”g�bœi¨™lœl¨AÑ.Ô.ˆGÝ”Y˜q¥# d¡)¤)¨a¡-°Ñ3Ô3ˆFˆFØ�1ŠWˆW˜˜qš˜å”7˜4œ9 aÑ(Ô(ˆDÝ”g˜dœl¨AÑ.Ô.ˆGÝ”Y˜q¥# d¡)¤)¨a¡-µ°T´Y±´Ñ@Ô@ˆFˆFØ�1ŠWˆW˜˜qš˜å”9˜TœY¨Ñ*Ô*ˆDÝ”g�bœi¨™lœl­C°´	©N¬NÑ;Ô;ˆGØ”[ 1‘_ˆFØ�~Š~˜t W¨fÐ5¸UÈˆ~ÑOÔOÐOrv   )NNFr  )T)r   )NNN©F)NN)6rZ   Ú
__module__Ú__qualname__Ú__doc__rB   ru   r   rz   r_   r•   r¡   r§   rª   rÓ   rØ   rÜ   rµ   rñ   r´   r÷   r  r  r  r  r  r	  r  r
  r  r8  r;  rB  rK  r[  r6  r=  rI  r¿   r²   r‘   Úpropertyr…  r†  ÚsetterrV   rJ  r�  rL  r‹   r”  r�   r¥   r¬  r´  ry   rv   ri   r,   r,      s>  € € € € € ðð ðV,ÈTð V,ð V,ð V,ð V,ð V,ðp3ð 3ð 3ð 3ð$ ”oÔ-€G„Oð3ð 3ð 3ð 3ð4 $Ô1Ô9€MÔð7-ð 7-ð 7-ð 7-ðFð ð ð	3ð 	3ð 	3ð-ð -ð -ð.ð .ð .ðvð vð vðx
7ð 
7ð 
7ðð ð ð ;ð ;ð ;ðzð ð ð ð Ô'Ô/€HÔðFð Fð Fð Fð, ”+Ô%€C„Kð"ð "ð "ð "ð4*ð *ð *ð<ð <ð <ð8ð 8ð 8ðHð Hð Hð
!;ð !;ð !;ðF&;ð &;ð &;ð &;ðP%;ð %;ð %;ðNEð Eð Eð Eð <ð <ð <ð <ð* ð  ð  ð ð  ð  ð ð  ð  ð2H$ð H$ð H$ðTð ð ð"%-ð %-ð %-ðN-ð -ð -ð(F,ð F,ð F,ðX
ð 
ð 
ð 
ð ”MÔ)€E„Mðð ð ð ð" ”oÔ-€G„Oðð ð ð ð* dð *ð *ð *ñ „Xð*ð, Ô ð+¨ð +ð +ð +ñ !Ô ð+ð
)ð )ð )ð ð( Dð (ð (ð (ñ „Xð(ð Ôð- dð -ð -ð -ñ Ôð-ðð ð ð+ð +ð +ð7ð 7ð 7ð!ð !ð !ðF ”^Ô+€F„NðFð Fð Fð Fð!ð !ð !ðFð ð ð80Pð 0Pð 0Pð 0Pð 0Pð 0Prv   r,   Fc                 óÆ   — ddl m}m} |r|n|}t          | ¦  «        }t	          |¬¦  «        }t          j        |dz   |¬¦  «        }|dd…         } || ||f||f¬¦  «        S )z»build diagonal csc_array/csr_array => self._csr_container

    Parameter `data` should be a raveled numpy array holding the
    values on the diagonal of the resulting sparse matrix.
    r   )Ú	csr_arrayÚ
csr_matrixr2   r5   Nrk   rÞ   )Ú_csrr¼  r½  rS   r)   rP   rÆ   )rG   rÍ   r¼  r½  rc   rd   rE   rF   s           ri   r·   r·     sŠ   € ð ,Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø%Ð5�	�	¨:€IåˆD‰	Œ	€AÝ qÐ)Ñ)Ô)€IÝŒY�q˜1‘u IÐ.Ñ.Ô.€FØ�S�b�SŒk€Gàˆ9�d˜G VÐ,°Q¸°FÐ;Ñ;Ô;Ð;rv   c                 ój  — | €d|}}n©t          | t          ¦  «        r?|                      |¦  «        \  }}}|dk    rt          d¦  «        ‚t	          ||¦  «        }nUt          | ¦  «        r7| dk     r| |z  } | | dz   }}|dk     s||k    rt          d|› d|› d|› �¦  «        ‚nt          d¦  «        ‚||fS )Nr   r   z$slicing with step != 1 not supportedzindex out of bounds: 0 <= z < z <= zexpected slice or scalar)rI   r  rF   rX   r�   r%   rX  Ú	TypeError)ÚslÚnumr0  r1  Ústrides        ri   r/  r/  (  sä   € Ø	€zØ�CˆBˆˆÝ	�B�Ñ	Ô	ð 4ØŸš C™œ‰ˆˆB�Ø�QŠ;ˆ;ÝÐCÑDÔDÐDÝ��R‰[Œ[ˆˆÝ	�2‰Œð 4Ø�Š6ˆ6Ø�#‰IˆBØ�R˜!‘VˆBˆØ�Š6ˆ6�R˜#’X�XÝÐN¸"ÐNÐNÀÐNÐNÈÐNÐNÑOÔOÐOð õ Ð2Ñ3Ô3Ð3àˆrˆ6€Mrv   rµ  )6r¸  Ú__all__Úwarningsr   r€   ÚnumpyrP   Úscipy._lib._utilr   r   Ú_baser   r   r	   r
   Ú_datar   r   Ú r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú_indexr   Ú_sputilsr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r,   r·   r/  ry   rv   ri   ú<module>rÍ     sz  ðØ DÐ DØ
€à Ð Ð Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9à FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð ð:ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð Ð Ð Ð Ð Ð ðVð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð
{Pð {Pð {Pð {Pð {P�˜}¨jñ {Pô {Pð {Pð|'<ð <ð <ð <ð"ð ð ð ð rv   