+
    LV-jZË  ã                   ó$  € R t . t^ RIHt ^ RIt^ RIt^ RIHtH	t	 ^RI
HtHtHtHt ^RIHtHt ^RIHt ^RIHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$ ^RI%H&t& ^R	I'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2  ! R
 R]]]&4      t3RR lt4R t5R# )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                   ó~  a € ] tR t^t o RtR9RR/R lltR:R lt]P                  P                  ]n        R:R lt]P                  P                  ]n        R;R lt	R t
R	 tR
 tR tR tR tR tR tR<R lt]P$                  P                  ]n        R=R lt]P&                  P                  ]n        R:R ltR tR tR tR tR tR>R ltR tR>R ltR9R ltR tR tR t R t!R  t"R! t#R" t$R# t%R;R$ lt&]PL                  P                  ]&n        R?R% lt']PN                  P                  ]'n        R& t(])V 3R' lR( l4       t*]*PV                  V 3R) lR* l4       t*R+ t,])V 3R, lR- l4       t-]-PV                  V 3R. lR/ l4       t-R0 t.R1 t/R2 t0R3 t1]Pb                  P                  ]1n        R;R4 lt2R5 t3R6 t4R>R7 lt5R8t6V t7R# )@Ú
_cs_matrixzQ
base array/matrix class for compressed row- and column-oriented arrays/matrices
NÚmaxprintc               ó
  € \         P                  ! WVR 7       \        V4      '       d™   VP                  V P                  8X  d   V'       d   VP	                  4       pMVP                  V P                  4      pVP                  VP                  VP                  VP                  3w  V n        V n        V n        V n	        EM\        V\        4      '       Ed   \        WP                  R7      '       dË   \        WP                  R7      V n	        V P                  V P                   4      w  rgV P#                  \%        V P&                  4      R7      p\(        P*                  ! ^ \-        V\.        R7      4      V n        \(        P*                  ! ^ V4      V n        \(        P*                  ! V^,           VR7      V n        EM\1        V4      ^8X  d\   V P3                  WVR7      p	V	P5                  V P                  4      p
V
w  V n        V n        V n        V n	        V P7                  4        EM§\1        V4      ^8X  d™   Vw  r¼pRpVe   ^ V9  d   \%        V4      pV P#                  WÍ3VRR7      pV'       g   \8        p\(        P:                  ! WÄVR	7      V n        \(        P:                  ! WÔVR	7      V n        \(        P:                  ! W´VR	7      V n        Mÿ\=        R
V P>                  P@                   RV 24      h \(        PB                  ! V4      p\        T \F        4      '       d<   TPH                  ^8w  d+   T P                  R8X  d   \=        RTPH                   R24      hTPH                  ^8”  d   \=        RTPH                   R24      hT P3                  YR7      p	T	P5                  T P                  4      p
T
w  T n        T n        T n        T n	        Ve   \        W P                  R7      V n	        MxV P&                  fk    \1        V P                  4      ^,
          pV P                  P%                  4       ^,           p\        T P                  Yg34      T P                  R7      T n	        Ve.   \-        V4      pV P                  PK                  VRR7      V n        V PM                  RR7       R#   \D         d,   p\=        R
T P>                  P@                   RT 24      ThRp?ii ; i  \D         d   p\=        R4      ThRp?ii ; i))r+   ©Úallow_nd©Úmaxval)Údefault©Údtype©Úshaper3   NT)r0   Úcheck_contents©Úcopyr3   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©r8   ©Ú
full_check)'r	   Ú__init__r   Úformatr8   ÚasformatÚindptrÚindicesÚdataÚ_shapeÚ
isinstanceÚtupler!   Ú	_allow_ndr&   Ú_swapÚ_shape_as_2dÚ_get_index_dtypeÚmaxr5   ÚnpÚzerosr"   ÚfloatÚlenÚ_coo_containerÚ_coo_to_compressedÚsum_duplicatesr   ÚarrayÚ
ValueErrorÚ	__class__Ú__name__ÚasarrayÚ	Exceptionr   ÚndimÚastypeÚcheck_format)ÚselfÚarg1r5   r3   r8   r+   ÚMÚNÚ	idx_dtypeÚcooÚarraysrB   rA   r@   r0   ÚeÚnewdtypes   &&&&&$           Úi/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/scipy/sparse/_compressed.pyr=   Ú_cs_matrix.__init__   sþ  € Ü×Ò˜d°8Õ<ä�D�>Š>Ø�{‰{˜dŸk™kÔ)¯dØ—y‘y“{‘à—}‘} T§[¡[Ó1�à—‘˜TŸ\™\¨4¯9©9°d·k±kðAÑ=ˆDŒK˜œ t¤y°$¶+ô ˜œe×$Ó$Ü�t§n¡n×5Ó5ô *¨$¿¹ÔH�”Ø—z‘z $×"3Ñ"3Ó4‘�ð !×1Ñ1¼¸T¿Z¹Z»Ð1ÓI�	ÜŸHšH Q¬°ÄÔ(FÓG�”	Ü!Ÿxšx¨¨9Ó5�”Ü Ÿhšh q¨1¥u°IÔ>�–ä�t“9 ”>à×-Ñ-¨dÀuÐ-ÓM�CØ ×3Ñ3°D·J±JÓ?�FØHNÑE�D”K ¤¨t¬y¸$¼+Ø×'Ñ'Ö)Ü˜“Y !”^à.2Ñ+�T Fð "�FØÒ(¨Q°e¬^Ü!$ U£˜Ø $× 5Ñ 5°wÐ6GØ7=Ø?Cð !6ó !E�I÷  Ü-˜Ü#%§8¢8¨GÀiÔ#P�D”LÜ"$§(¢(¨6ÀIÔ"N�D”KÜ "§¢¨ÀÔ F�D•Iä$ }°T·^±^×5LÑ5LÐ4Mð N;Ø;?¸&ð&Bó Cð Cð
FÜ—z’z $Ó'�ô ˜$¤×(Ò(¨T¯Y©Y¸!¬^ÀÇÁÈuÔ@TÜ Ð#<¸T¿Y¹Y¸KÀÐ!WÓXÐXØ�y‰y˜1Œ}Ü Ð#@ÀÇÁÀÈ2Ð!NÓOÐOà×%Ñ% dÐ%Ó8ˆCØ×+Ñ+¨D¯J©JÓ7ˆFØ@FÑ=ˆDŒK˜œ t¤y°$´+ð ÒÜ% e·n±nÔEˆD�KØ�Z‰ZÒðMÜ˜Ÿ™Ó$ qÕ(�Ø—L‘L×$Ñ$Ó&¨Õ*�ô & d§j¡j°!°Ó&8À4Ç>Á>ÔRˆDŒKàÒÜ “ˆHØŸ	™	×(Ñ(¨¸Ð(Ó>ˆDŒIà×Ñ UÐÖ+øô; ô FÜ  =°·±×1HÑ1HÐ0Ið J7Ø7;°fð">ó ?ØDEðFûðFûô( ô MÜ Ð!DÓEÈ1ÐLûðMús0   Ë8R. Ð =S' Ò.S$Ò9&SÓS$Ó'TÓ2S>Ó>Tc                ó  € Vf   \        V P                  R,          4      # V P                  ^8X  d/   VR9   d   \        V P                  R,          4      # \        R4      hV^ 8  d
   V^,          pV P	                  V^V,
          34      w  rV P	                  V P
                  4      w  r#V^ 8X  d,   \        P                  ! \        V P                  4      VR7      # V^8X  d!   \        P                  ! V P                  4      # \        R4      h)Núaxis out of bounds©Ú	minlengthéÿÿÿÿ©é    rj   )Úintr@   rX   rS   rG   r5   rK   Úbincountr$   rA   Údiff)r[   ÚaxisÚ_r^   s   &&  rd   Ú_getnnzÚ_cs_matrix._getnnzv   sÑ   € ØŠ<Ü�t—{‘{ 2•Ó'Ð'Ø�Y‰Y˜!Œ^Ø�wŒÜ˜4Ÿ;™; r�?Ó+Ð+ÜÐ1Ó2Ð2à�aŒxØ˜•	�Ø—j‘j $¨¨D­Ð!1Ó2‰GˆDØ—:‘:˜dŸj™jÓ)‰DˆAØ�qŒyÜ—{’{Ô#6°t·|±|Ó#DÐPQÔRÐRØ˜”Ü—w’w˜tŸ{™{Ó+Ð+ÜÐ1Ó2Ð2ó    c                óÞ  € V P                  4        Vf!   \        P                  ! V P                  4      # V P                  ^8X  d3   VR9  d   \        R4      h\        P                  ! V P                  4      # V^ 8  d
   V^,          pV P                  V^V,
          34      w  rV^ 8X  dƒ   V P                  V P                  4      w  r#V P                  ^ 8g  pVP                  4       '       d   V P                  MV P                  V,          p\        P                  ! \        V4      VR7      # V^8X  d«   V P                  P                  4       '       d!   \        P                  ! V P                  4      # \        P                  ! V P                  4      p\        P                   ! V UUu. uF'  w  rx\        P                  ! V P                  Wx 4      NK)  	  upp4      # \        R4      hu uppi )Nrg   rh   rk   )rQ   rK   Úcount_nonzerorB   rX   rS   rG   r5   ÚallrA   rn   r$   ro   r@   Ú	itertoolsÚpairwiserR   )	r[   rp   rq   r^   ÚmaskÚidxÚpairsÚiÚjs	   &&       rd   rv   Ú_cs_matrix.count_nonzeroŠ   sd  € Ø×ÑÔØŠ<Ü×#Ò# D§I¡IÓ.Ð.à�9‰9˜Œ>Ø˜7Ô"Ü Ð!5Ó6Ð6Ü×#Ò# D§I¡IÓ.Ð.à�!Œ8Ø�A�IˆDØ—*‘*˜d A¨¥HÐ-Ó.‰ˆØ�1Œ9Ø—:‘:˜dŸj™jÓ)‰DˆAØ—9‘9 ‘>ˆDØ"&§(¡(§*¢*�$—,’,°$·,±,¸tÕ2DˆCÜ—;’;Ô2°3Ó7À1ÔEÐEØ�QŒYØ�y‰y�}‰}�ŠÜ—w’w˜tŸ{™{Ó+Ð+Ü×&Ò& t§{¡{Ó3ˆEÜ—8’8É%ÔPÉ%Á$À!œR×-Ò-¨d¯i©i¸¨nÖ=É%ÒPÓQÐQäÐ1Ó2Ð2ùó Qs   Æ)-G)
c                óž  € V P                   P                  P                  R8w  d0   \        RV P                   P                  P                   R2^R7       V P
                  P                  P                  R8w  d0   \        RV P
                  P                  P                   R2^R7       V P                  P                  V P
                  P                  V P                   P                  3 F  pV^8w  g   K  \        R4      h	  V P                  V P                  4      w  r4\        V P                   4      V^,           8w  d,   \        R\        V P                   4       RV^,            24      hV P                   ^ ,          ^ 8w  d   \        R	4      h\        V P
                  4      \        V P                  4      8w  d   \        R
4      hV P                   R,          \        V P
                  4      8”  d   \        R4      hV P                  4        V'       Ed8   V P                  ^ 8”  d–   V P
                  P                  4       V8¼  d   \        RV 24      hV P
                  P                  4       ^ 8  d   \        R4      h\         P"                  ! V P                   4      P                  4       ^ 8  d   \        R4      hV P%                  V P                   V P
                  34      p\         P&                  ! V P                   VR7      V n         \         P&                  ! V P
                  VR7      V n        \)        V P                  4      V n        R# R# )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 (Ú)©Ú
stacklevelz%indices array has non-integer dtype (z'data, indices, and indptr should be 1-Dzindex pointer size z should be z!index pointer should start with 0z*indices and data should have the same sizezQLast 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 sequencer2   Nrj   )r@   r3   Úkindr   ÚnamerA   rB   rX   rS   rG   rH   rN   ÚpruneÚnnzrJ   ÚminrK   ro   rI   rV   r    )r[   r<   Úxr]   r^   r_   s   &&    rd   rZ   Ú_cs_matrix.check_format¦   s|  € ð �;‰;×Ñ×!Ñ! SÔ(ÜÐ7¸¿¹×8IÑ8I×8NÑ8NÐ7OÈqÐQØõà�<‰<×Ñ×"Ñ" cÔ)ÜÐ8¸¿¹×9KÑ9K×9PÑ9PÐ8QÐQRÐSØõð —)‘)—.‘. $§,¡,×"3Ñ"3°T·[±[×5EÑ5EÓFˆAØ�AŽvÜ Ð!JÓKÐKñ Gð
 �z‰z˜$×+Ñ+Ó,‰ˆä�—‘Ó  A¥Ô%ÜÐ2´3°t·{±{Ó3CÐ2DÀKÐPQÐTUÕPUÈwÐWÓXÐXØ�K‰K˜�N˜aÔÜÐ@ÓAÐAô �—‘Ó¤ T§Y¡Y£Ô/ÜÐIÓJÐJØ�K‰K˜�Oœc $§,¡,Ó/Ô/Üð Aó Bð Bð 	�
‰
Œçˆ:à�x‰x˜!Œ|Ø—<‘<×#Ñ#Ó%¨Ô*Ü$Ð'9¸!¸Ð%=Ó>Ð>Ø—<‘<×#Ñ#Ó%¨Ô)Ü$Ð%;Ó<Ð<Ü—7’7˜4Ÿ;™;Ó'×+Ñ+Ó-°Ô1Ü$Ð%OÓPÐPà×-Ñ-¨t¯{©{¸D¿L¹LÐ.IÓJˆIÜŸ*š* T§[¡[¸	ÔBˆDŒKÜŸ:š: d§l¡l¸)ÔDˆDŒLÜ! $§)¡)Ó,ˆDŽIñ rt   c                óŽ   € V P                  4        V P                  V! V P                  V4      RR7      pVP                  4        V# )z}Scalar version of self._binopt, for cases in which no new nonzeros
are added. Produces a new sparse array in canonical form.
Tr:   )rQ   Ú
_with_datarB   Úeliminate_zeros)r[   ÚotherÚopÚress   &&& rd   Ú_scalar_binoptÚ_cs_matrix._scalar_binopté   s>   € ð 	×ÑÔØ�o‰o™b §¡¨EÓ2¸ˆoÓ>ˆØ×ÑÔØˆ
rt   c                ó\  € VP                   V P                   8w  d'   \        R V P                    RVP                    R24      h\        V P                  P                  VP                  P                  4      pV P                  R4      ^ ,          p\        P                  ! WVRR7      pVP                  P                  '       d   TMVP                  pV P                  V P                  4      w  rg\        WgV P                  V P                  V P                  V4       V P!                  VRR7      # )zIncompatible shapes (ú and r�   ÚCFT)r3   Úorderr8   Fr:   )r5   rS   r   r3   ÚcharrG   rK   rR   ÚflagsÚc_contiguousÚTrH   r   r@   rA   rB   Ú
_container)r[   rŽ   r3   r–   ÚresultÚyr]   r^   s   &&      rd   Ú
_add_denseÚ_cs_matrix._add_denseö   sØ   € Ø�;‰;˜$Ÿ*™*Ô$ÜÐ4°T·Z±Z°LÀÀeÇkÁkÀ]ÐRSÐTÓUÐUÜ˜DŸJ™JŸO™O¨U¯[©[×-=Ñ-=Ó>ˆØ—
‘
˜4Ó  Õ#ˆÜ—’˜%°EÀÔEˆØ—l‘l×/×/Ð/‰F°V·X±XˆØ�z‰z˜$×+Ñ+Ó,‰ˆÜ�A˜$Ÿ+™+ t§|¡|°T·Y±YÀÔBØ�‰˜v¨EˆÓ2Ð2rt   c                ó&   € V P                  VR 4      # )Ú_plus_©Ú_binopt©r[   rŽ   s   &&rd   Ú_add_sparseÚ_cs_matrix._add_sparse  s   € Ø�|‰|˜E 8Ó,Ð,rt   c                ó&   € V P                  VR 4      # )Ú_minus_r¢   r¤   s   &&rd   Ú_sub_sparseÚ_cs_matrix._sub_sparse  s   € Ø�|‰|˜E 9Ó-Ð-rt   c                óN  € \        V4      '       Ed%   V P                  VP                  8X  d$   V P                  V4      pV P                  VR4      # VP                  R
8X  d^   V P	                  VP                  4       R,          4      pV P                  ^8X  d%   VP                  ^V P                  ^ ,          34      # V# VP                  R8X  d'   V P	                  VP                  4       ^ ,          4      # V P                  R9   d*   VP	                  V P                  P                  4       4      # V P                  w  r4VP                  w  rVV^8X  d6   V^8X  d/   VP                  V P                  W44      P                  4       4      # V^8X  d6   V^8X  d/   V P                  VP                  WV4      P                  4       4      # \        V \        4      pV^8X  df   WF8X  d`   \        VP                  4       P!                  4       V4      pV P                  V4      pV P                  ^8X  d   V# VP                  ^V34      # V^8X  d@   WF8X  d:   \        V P                  4       P!                  4       V4      p	VP                  V	4      # V^8X  d@   W58X  d:   \        VP                  4       P!                  4       V4      pVP                  V 4      # V^8X  d@   W58X  d:   \        V P                  4       P!                  4       V4      p
V
P                  V4      # \#        RV P                   RVP                   24      h\$        P&                  ! V4      pVP                  ^8”  d&   \$        P(                  ! V P                  4       V4      # VP*                  ^8X  dw   VP,                  \$        P.                  8X  d   \0        # \3        V P                  VP                  4      pV P	                  VP4                  ^ ,          4      P                  V4      # V P                  R9   d_   \3        V P                  VP                  4      p\$        P(                  ! V P                  P                  4       V4      P                  V4      # V P7                  4       pV P                  VP                  8X  df   \$        P(                  ! VP                  WP8                  ,          4      pVP;                  \$        P<                  4      P!                  4       Vn        V# \$        P>                  ! V4      pV P                  ^ ,          ^8X  g   V P                  ^8X  Edï   VP                  ^,          ^8X  d#   \$        P(                  ! VP                  V4      pMƒVP                  ^,          V P                  R,          8X  d6   \$        P(                  ! VP                  VRVP@                  3,          4      pM%\#        RV P                   RVP                   24      hV PC                  VP@                  VPD                  VP                  ^ ,          ,          R7      p\$        PF                  ! \$        PH                  ! VP                  ^ ,          VR7      VPD                  4      p\$        PJ                  ! VP@                  PM                  VRR7      VP                  ^ ,          4      pV PO                  VP;                  \$        P<                  4      P!                  4       VV33VP                  ^ ,          V P                  R,          3RR	7      # V P                  ^,          ^8X  Edú   VP                  ^ ,          ^8X  d*   \$        P(                  ! VP                  R,          V4      pM‡VP                  ^ ,          V P                  ^ ,          8X  d:   \$        P(                  ! VP                  R,          WìPP                  ,          4      pM%\#        RV P                   RVP                   24      hV PC                  VPP                  VPD                  VP                  ^,          ,          R7      p\$        PF                  ! VPP                  PM                  VRR7      VP                  ^,          4      p\$        PJ                  ! \$        PH                  ! VP                  ^,          VR7      VPD                  4      pV PO                  VP;                  \$        P<                  4      P!                  4       VV33V P                  ^ ,          VP                  ^,          3RR	7      # VP                  ^ ,          ^8X  dm   V P                  ^,          VP                  ^,          8X  dD   \$        P(                  ! VP                  VRVP@                  3,          P!                  4       4      pM¦VP                  ^,          ^8X  dj   V P                  ^ ,          VP                  ^ ,          8X  dA   \$        P(                  ! VP                  WìPP                  ,          P!                  4       4      pM%\#        RV P                   RVP                   24      hVP;                  \$        P<                  4      P!                  4       Vn        V# )z?Element-wise multiplication by array/matrix, vector, or scalar.Ú_elmul_úinconsistent shapes r”   ºNNNr/   r2   Fr:   ©r5   r8   ©é   r±   )rl   rl   ©r±   )r²   r°   rj   )r®   N))r   r5   rT   r£   Ú_mul_scalarÚtoarrayrX   ÚreshaperB   ÚsumrH   Ú_matmul_sparseÚtocscrD   r   Ú_make_diagonal_csrÚravelrS   rK   Ú
asanyarrayÚmultiplyÚsizer3   Úobject_ÚNotImplementedr(   ÚflatÚtocooÚcoordsÚviewÚndarrayÚ
atleast_2dÚcolrI   r‡   ÚrepeatÚarangeÚtilerY   rO   Úrow)r[   rŽ   rœ   ÚsMÚsNÚoMÚoNÚis_arrayÚ	new_otherr8   Únew_selfÚbshapeÚretrB   Úother2dr_   rÊ   rÆ   s   &&                rd   Ú_multiply_2d_with_broadcastingÚ)_cs_matrix._multiply_2d_with_broadcasting  s‡  € ô �E�?‹?Ø�z‰z˜UŸ[™[Ô(ØŸ™ uÓ-�Ø—|‘| E¨9Ó5Ð5à�{‰{˜fÔ$Ø×)Ñ)¨%¯-©-«/¸$Õ*?Ó@�Ø—9‘9 ”>Ø!Ÿ>™>¨1¨d¯j©j¸­mÐ*<Ó=Ð=Ø�Ø�{‰{˜dÔ"Ø×'Ñ'¨¯©«¸Õ(:Ó;Ð;Ø�z‰z˜^Ô+Ø×(Ñ(¨¯©¯©«Ó9Ð9ð ×&Ñ&‰FˆBØ×'Ñ'‰FˆBà�QŒw˜2 œ7Ø×+Ñ+¨D¯L©L¸Ó,@×,FÑ,FÓ,HÓIÐIØ�QŒw˜2 œ7Ø×*Ñ*¨5¯=©=¸Ó+@×+FÑ+FÓ+HÓIÐIä! $¬Ó0ˆHà�QŒw˜2œ8Ü.¨u¯}©}«×/DÑ/DÓ/FÈÓQ�	Ø×,Ñ,¨YÓ7�Ø!%§¡¨a¤�vÐL°V·^±^ÀQÈÀGÓ5LÐLà�QŒw˜2œ8Ü)¨$¯,©,«.×*>Ñ*>Ó*@À(ÓK�Ø×+Ñ+¨DÓ1Ð1ð �QŒw˜2œ8Ü.¨u¯}©}«×/DÑ/DÓ/FÈÓQ�	Ø ×/Ñ/°Ó5Ð5à�QŒw˜2œ8Ü-¨d¯l©l«n×.BÑ.BÓ.DÀhÓO�Ø×.Ñ.¨uÓ5Ð5ÜÐ3°D·J±J°<¸uÀUÇ[Á[ÀMÐRÓSÐSô —’˜eÓ$ˆà�:‰:˜Œ>Ü—;’;˜tŸ|™|›~¨uÓ5Ð5à�:‰:˜Œ?Ø�{‰{œbŸj™jÔ(ä%Ð%Ü% d§j¡j°%·+±+Ó>ˆFØ×#Ñ# E§J¡J¨q¥MÓ2×:Ñ:¸6ÓBÐBà�:‰:˜Ô'Ü% d§j¡j°%·+±+Ó>ˆFÜ—;’;˜tŸy™yŸ}™}›°Ó6×>Ñ>¸vÓFÐFà�j‰j‹lˆà�:‰:˜Ÿ™Ô$Ü—;’;˜sŸx™x¨¯z©zÕ):Ó;ˆDØ—y‘y¤§¡Ó,×2Ñ2Ó4ˆCŒHØˆJô —-’- Ó&ˆà�:‰:�a�=˜AÔ §¡¨a¥Ø�}‰}˜QÕ 1Ô$Ü—{’{ 3§8¡8¨WÓ5‘Ø—‘˜qÕ! T§Z¡Z°¥^Ô3Ü—{’{ 3§8¡8¨W°Q¸¿¹°ZÕ-@ÓA‘ä Ð#7¸¿
¹
°|À5ÈÏÉÈÐ!VÓWÐWØ×-Ñ-¨c¯g©gØ58·W±W¸w¿}¹}ÈQÕ?OÕ5Oð .ó QˆIä—)’)œBŸIšI g§m¡m°AÕ&6¸iÔHÈ#Ï'É'ÓRˆCÜ—'’'˜#Ÿ'™'Ÿ.™.¨¸˜.Ó?ÀÇÁÈqÕAQÓRˆCØ×&Ñ&Ø—‘œ2Ÿ:™:Ó&×,Ñ,Ó.°°c°
Ð;Ø—}‘} QÕ'¨¯©°B­Ð8Øð 'ó ð ð �:‰:�a�=˜AÕØ�}‰}˜QÕ 1Ô$Ü—{’{ 3§8¡8¨GÕ#4°gÓ>‘Ø—‘˜qÕ! T§Z¡Z°¥]Ô2Ü—{’{ 3§8¡8¨GÕ#4°g¿g¹gÕ6FÓG‘ä Ð#7¸¿
¹
°|À5ÈÏÉÈÐ!VÓWÐWØ×-Ñ-¨c¯g©gØ58·W±W¸w¿}¹}ÈQÕ?OÕ5Oð .ó QˆIä—)’)˜CŸG™GŸN™N¨9¸5˜NÓAÀ7Ç=Á=ÐQRÕCSÓTˆCÜ—'’'œ"Ÿ)š) G§M¡M°!Õ$4¸IÔFÈÏÉÓPˆCØ×&Ñ&Ø—‘œ2Ÿ:™:Ó&×,Ñ,Ó.°°c°
Ð;Ø—z‘z !•} g§m¡m°AÕ&6Ð7Øð 'ó ð ð �=‰=˜Õ˜qÔ  T§Z¡Z°¥]°g·m±mÀAÕ6FÔ%FÜ—;’;˜sŸx™x¨°°C·G±G°Õ)<×)BÑ)BÓ)DÓE‰Dà�]‰]˜1Õ Ô" t§z¡z°!¥}¸¿¹ÀaÕ8HÔ'HÜ—;’;˜sŸx™x¨·±Õ)9×)?Ñ)?Ó)AÓB‰DäÐ3°D·J±J°<¸uÀUÇ[Á[ÀMÐRÓSÐSØ—9‘9œRŸZ™ZÓ(×.Ñ.Ó0ˆŒØˆ
rt   c           	     ó€  € V P                   w  r#\        P                  ! V\        V P                  P
                  VP                  P
                  4      R 7      p\        \        V P                  R,           4      pV! W#V P                  V P                  V P                  W4       V P                  ^8X  d
   V^ ,          # T# )r2   Ú_matvec)rH   rK   rL   r   r3   r—   Úgetattrr   r>   r@   rA   rB   rX   )r[   rŽ   r]   r^   rœ   Úfns   &&    rd   Ú_matmul_vectorÚ_cs_matrix._matmul_vectorƒ  s†   € Ø× Ñ ‰ˆô —’˜!¤;¨t¯z©z¯©ÀÇÁ×@PÑ@PÓ#QÔRˆô ”\ 4§;¡;°Õ#:Ó;ˆÙ
ˆ1�—‘˜dŸl™l¨D¯I©I°uÔEà ŸI™I¨œNˆv�a�yÐ6°Ð6rt   c                óô  € V P                   w  r#VP                  R,          p\        P                  ! W$3\	        V P
                  P                  VP
                  P                  4      R7      p\        \        V P                  R,           4      pV! W#W@P                  V P                  V P                  VP                  4       VP                  4       4       V P                  ^8X  d   VP                  V34      # V# )r±   r2   Ú_matvecsrj   )rH   r5   rK   rL   r   r3   r—   rÙ   r   r>   r@   rA   rB   rº   rX   rµ   )r[   rŽ   r]   r^   Ún_vecsrœ   rÚ   s   &&     rd   Ú_matmul_multivectorÚ_cs_matrix._matmul_multivector�  s²   € Ø× Ñ ‰ˆØ—‘˜R•ˆä—’˜1˜+Ü +¨D¯J©J¯O©O¸U¿[¹[×=MÑ=MÓ NôPˆô ”\ 4§;¡;°Õ#;Ó<ˆÙ
ˆ1�Ÿ™ d§l¡l°D·I±IØ�;‰;‹=˜&Ÿ,™,›.ô	*ð �9‰9˜Œ>Ø—>‘> 6 )Ó,Ð,Øˆrt   c                óþ  € V P                   w  r#VP                  pV^8X  d/   VP                  ^VP                  ^ ,          34      P                  pVP                  ^8X  d   VP
                  MVP                  ^ ,          ^3w  rVRpV P                  ^8X  d
   Wr3,          pV^8X  d
   Wv3,          pV P                  ^8X  d   TM^V^8X  d   TM^3pV P                  V4      pV P                  V P                  VP                  VP                  3p	V P                  W&34      w  r&V P                  W34      w  r«V P                  V	4      p\        P                  ! V
P                  VR7      p\        P                  ! V
P                  VR7      p\        P                  ! VP                  VR7      p\        P                  ! VP                  VR7      p\        W&WÞVV4      pV^ 8X  do   VR8X  d7   \        P                  ! ^ \        V P                   VP                   4      R7      # V P                  V\        V P                   VP                   4      R7      # V P                  V	VR7      pVV8w  d‹   Tp\        P                  ! V
P                  VR7      p\        P                  ! V
P                  VR7      p\        P                  ! VP                  VR7      p\        P                  ! VP                  VR7      p\        P"                  ! V^,           VR7      p\        P"                  ! VVR7      p\        P"                  ! V\        V P                   VP                   4      R7      p\%        W&WÞV
P&                  VVVP&                  VVV4       VR8X  d   \        P                  ! V^ ,          4      # V P                  VVV3VR7      pW‡8w  d3   VP(                  R8w  d   VP+                  4       pVP                  V4      pV# )r±   r2   r/   ©r5   Úcsr© )rH   rX   rµ   r5   rš   rC   rT   r@   rA   rG   rI   rK   rV   r   rR   r   r3   Úemptyr   rB   r>   Útocsr)r[   rŽ   r]   ÚK1Úo_ndimÚK2r^   Ú	new_shapeÚ
faux_shapeÚindex_arraysÚsÚor_   Ús_indptrÚ	s_indicesÚo_indptrÚ	o_indicesr‡   Únew_idx_dtyper@   rA   rB   r�   s   &&                     rd   r·   Ú_cs_matrix._matmul_sparseŸ  sþ  € Ø×!Ñ!‰ˆà—‘ˆØ�QŒ;à—M‘M 1 e§k¡k°!¥nÐ"5Ó6×8Ñ8ˆEØ %§
¡
¨a¤�—’°e·k±kÀ!µnÀaÐ5H‰ˆð ˆ	Ø�9‰9˜Œ>Ø˜ÕˆIØ�QŒ;Ø˜ÕˆIØŸ9™9¨œ>‘a¨q°vÀ´{±!ÈÐJˆ
à—‘˜uÓ%ˆØŸ™ T§\¡\°5·<±<ÀÇÁÐOˆà�z‰z˜1˜&Ó!‰ˆØ�z‰z˜4˜-Ó(‰ˆà×)Ñ)¨,Ó7ˆ	Ü—:’:˜aŸh™h¨iÔ8ˆÜ—J’J˜qŸy™y°	Ô:ˆ	Ü—:’:˜aŸh™h¨iÔ8ˆÜ—J’J˜qŸy™y°	Ô:ˆ	ä  h¸8ÀYÓOˆØ�!Œ8Ø˜BŒÜ—x’x ¬°·
±
¸E¿K¹KÓ)HÔIÐIØ—>‘> )´6¸$¿*¹*ÀeÇkÁkÓ3R�>ÓSÐSà×-Ñ-¨lÀ3Ð-ÓGˆØ˜IÔ%Ø%ˆIÜ—z’z !§(¡(°)Ô<ˆHÜŸ
š
 1§9¡9°IÔ>ˆIÜ—z’z !§(¡(°)Ô<ˆHÜŸ
š
 1§9¡9°IÔ>ˆIä—’˜!˜a�% yÔ1ˆÜ—(’(˜3 iÔ0ˆÜ�xŠx˜¤6¨$¯*©*°e·k±kÓ#BÔCˆä�1Ø¨¯©Ø˜Y¨¯©Ø˜7 Dô	*ð
 ˜Œ?Ü—8’8˜D �GÓ$Ð$Ø�n‰n˜d G¨VÐ4¸JˆnÓGˆØÔ"Ø�z‰z˜UÔ"Ø—i‘i“k�Ø—+‘+˜iÓ(ˆCØˆ
rt   c           
     óä  € V P                  V P                  4      w  r#V P                  W) 34      w  rW) 8:  g   W8¼  d-   \        P                  ! ^ V P                  P
                  R7      # \        P                  ! \        V\        V^ 4      ,           V\        V^ 4      ,
          4      \        V P
                  4      R7      p\        WW0P                  V P                  V P                  V4       V# )rl   r2   )rG   r5   rK   ræ   rB   r3   rˆ   rJ   r   r   r@   rA   )r[   Úkr]   r^   rq   r�   s   &&    rd   ÚdiagonalÚ_cs_matrix.diagonalÜ  s£   € Ø�z‰z˜$Ÿ*™*Ó%‰ˆØ�z‰z˜1˜b˜'Ó"‰ˆà�Œ7�a”fÜ—8’8˜A T§Y¡Y§_¡_Ô5Ð5Ü�HŠH”S˜œS  A›Y�¨¬C°°1«I­Ó6¼fÀTÇZÁZÓ>PÔQˆÜ�Q˜1Ÿk™k¨4¯<©<¸¿¹ÀAÔFØˆrt   c                ó  € V P                   ^8X  dÙ   \        V R4      '       gÇ   WP                  R4      ^ ,          9   d«   \        V P                  4      p\
        P                  ! \        V P                  4      ^,
          VR7      pV P                  \
        P                  4      w  rgWuV&   V P                  V4      pV^,          ^8X  d   VP                  pVP                  RW#R7      # \        P                  ! WW#R7      # )ztSum the array/matrix over the given axis.  If the axis is None, sum
over both rows and columns, returning a scalar.
Ú	blocksizer2   )rp   r3   Úout))r±   rj   )rl   éþÿÿÿrå   )rX   ÚhasattrrG   r%   r3   rK   rL   rN   r@   Ú_minor_reduceÚaddÚ_ascontainerrš   r¶   r   )r[   rp   r3   rü   Ú	res_dtyperÓ   Úmajor_indexÚvalues   &&&&    rd   r¶   Ú_cs_matrix.sumì  sÃ   € ð �I‰I˜ŒN¤7¨4°×#=Ò#=ØŸ
™
Ð#5Ó6°qÕ9Ô9ä% d§j¡jÓ1ˆIÜ—(’(œ3˜tŸ{™{Ó+¨aÕ/°yÔAˆCà!%×!3Ñ!3´B·F±FÓ!;ÑˆKØ$�ÑØ×#Ñ# CÓ(ˆCØ�a�x˜1Œ}Ø—e‘e�à—7‘7 ¨%�7Ó9Ð9ä—;’;˜t°eÔEÐErt   c                óè   € Vf   V P                   p\        P                  ! \        P                  ! V P                  4      4      pVP                  V\        V P                  V,          4      4      pW43# )aS  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
)rB   rK   Úflatnonzeroro   r@   Úreduceatr$   )r[   ÚufuncrB   r  r  s   &&&  rd   rÿ   Ú_cs_matrix._minor_reduce  sX   € ð Š<Ø—9‘9ˆDÜ—n’n¤R§W¢W¨T¯[©[Ó%9Ó:ˆØ—‘˜tÜ2°4·;±;¸{Õ3KÓLóNˆàÐ!Ð!rt   c                ó  € V P                  V P                  4      w  r4V P                  W34      w  rV\        W4V P                  V P                  V P
                  WU^,           Wf^,           4	      w  rxp	V	P                  V P                  R7      # )r±   r2   )rG   r5   r   r@   rA   rB   r¶   r3   )
r[   rÊ   rÆ   r]   r^   ÚmajorÚminorr@   rA   rB   s
   &&&       rd   Ú_get_intXintÚ_cs_matrix._get_intXint  sp   € Ø�z‰z˜$Ÿ*™*Ó%‰ˆØ—z‘z 3 *Ó-‰ˆÜ 1Ø�$—+‘+˜tŸ|™|¨T¯Y©YØ˜1•9˜e¨Q¥Yó!0Ñˆ˜ð �x‰x˜dŸj™jˆxÓ)Ð)rt   c                óÔ   € V P                  W34      w  r4VP                  R9   d%   VP                  R9   d   V P                  W4RR7      # V P                  V4      P	                  V4      # )r±   Tr:   ©r±   N)rG   ÚstepÚ_get_submatrixÚ_major_sliceÚ_minor_slice©r[   rÊ   rÆ   r  r  s   &&&  rd   Ú_get_sliceXsliceÚ_cs_matrix._get_sliceXslice&  s]   € Ø—z‘z 3 *Ó-‰ˆØ�:‰:˜Ô" u§z¡z°YÔ'>Ø×&Ñ& u¸$Ð&Ó?Ð?Ø× Ñ  Ó'×4Ñ4°UÓ;Ð;rt   c                óˆ  € V P                   P                  pV P                  V P                  4      w  rEV P                  W34      w  rg\        P
                  ! WcR 7      p\        P
                  ! WsR 7      p\        P                  ! VP                  V P                  R 7      p\        WEV P                  V P                   V P                  VP                  VP                  4       VP                  4       V4	       VP                  ^8X  d   V P                  V4      # V P                  VP                  VP                  4      4      # )r2   )rA   r3   rG   r5   rK   rV   ræ   r½   r   r@   rB   rº   rX   r  rT   rµ   )	r[   rÊ   rÆ   r_   r]   r^   r  r  Úvals	   &&&      rd   Ú_get_arrayXarrayÚ_cs_matrix._get_arrayXarray,  sÙ   € à—L‘L×&Ñ&ˆ	Ø�z‰z˜$Ÿ*™*Ó%‰ˆØ—z‘z 3 *Ó-‰ˆÜ—
’
˜5Ô2ˆÜ—
’
˜5Ô2ˆä�hŠh�u—z‘z¨¯©Ô4ˆÜ˜! §¡¨T¯\©\¸4¿9¹9ØŸ*™* e§k¡k£m°U·[±[³]ÀCô	Ià�:‰:˜Œ?Ø×$Ñ$ SÓ)Ð)Ø�~‰~˜cŸk™k¨%¯+©+Ó6Ó7Ð7rt   c                ój   € V P                  W34      w  r4V P                  V4      P                  V4      # ©N)rG   Ú_major_index_fancyÚ_minor_index_fancyr  s   &&&  rd   Ú_get_columnXarrayÚ_cs_matrix._get_columnXarray;  s0   € à—z‘z 3 *Ó-‰ˆØ×&Ñ& uÓ-×@Ñ@ÀÓGÐGrt   c           	     ó�  € V P                  V P                  V P                  34      p\        P                  ! WR7      P                  4       pV P                  V P                  4      ^,          p\        V4      pV P                  ^8X  d   V P                  WT34      MV3pV^ 8X  d   V P                  W`P                  R7      # V P                  P                  VRR7      pV P                  P                  VRR7      pWs^,           ,          Ws,          ,
          p	\        P                  ! V^,           VR7      p
\        P                  ! WšR,          R7       V
R,          p\        P                  ! W²R7      p\        P                  ! W°P                  R7      p\!        VVVVV P"                  VV4       V P                  WÜV
3VRR7      # )zBIndex along the major axis where idx is an array of ints.
        r2   Fr:   ºr±   NN©rü   r¯   rj   )rI   r@   rA   rK   rV   rº   rG   rH   rN   rX   rT   r3   rY   rL   Úcumsumræ   r   rB   )r[   r{   r_   rA   r^   r]   rë   Úself_indptrÚself_indicesÚrow_nnzÚ
res_indptrr‡   Úres_indicesÚres_datas   &&            rd   r  Ú_cs_matrix._major_index_fancy@  sl  € ð ×)Ñ)¨4¯;©;¸¿¹Ð*EÓFˆ	Ü—*’*˜SÔ2×8Ñ8Ó:ˆà�J‰J�t×(Ñ(Ó)¨!Õ,ˆÜ�‹LˆØ*.¯)©)°q¬.�D—J‘J ˜vÔ&¸q¸dˆ	Ø�Œ6Ø—>‘> )·:±:�>Ó>Ð>à—k‘k×(Ñ(¨¸Ð(Ó?ˆØ—|‘|×*Ñ*¨9¸5Ð*ÓAˆà¨�kÕ*¨[Õ-AÕAˆÜ—X’X˜a !�e¨9Ô5ˆ
Ü
�	Š	�'¨"�~Õ.à˜�nˆÜ—h’h˜sÔ4ˆÜ—8’8˜C§z¡zÔ2ˆÜØØØØØ�I‰IØØô	
ð �~‰~˜x°jÐAØ$-°Eð ó ;ð 	;rt   c           
     óÞ  € V\        R4      8X  d   V'       d   V P                  4       # T # V P                  V P                  4      w  r4VP	                  V4      w  rVp\        \        WVV4      4      pV P                  ^8X  d   V P                  W434      MV3pV^ 8X  d   V P                  W€P                  R7      # YVr©VR8X  d
   V^ 8¼  d   Rp
V^,           V^,           rËV P                  W¼V1,          V P                  WšV1,          ,
          pV P                  P                  p\        P                  ! V^,           VR7      p\        P                  ! WßR,          R7       V^8X  d‚   \        V P                  V,          V P                  V,          4      p\        P                  ! V P                  V,          VR7      p\        P                  ! V P                  V,          VR7      pMqVR,          p\        P                   ! VVR7      p\        P                   ! VV P                  R7      p\#        WVWpP                  V P                  V P                  VV4       V P                  VVV3VRR7      # )	z@Index along the major axis where idx is a slice object.
        Nr2   r$  r%  r:   Fr¯   rj   )Úslicer8   rG   rH   rA   rN   ÚrangerX   rT   r3   r@   rK   rL   r&  rR   rB   ræ   r   )r[   r{   r8   r]   r^   ÚstartÚstopr  rë   Ústart0Ústop0Ústart1Ústop1r)  r_   r*  Úall_idxr+  r,  r‡   s   &&&                 rd   r  Ú_cs_matrix._major_slicec  så  € ð ”%˜“+Ôß"&�4—9‘9“;Ð0¨DÐ0à�z‰z˜$×+Ñ+Ó,‰ˆØŸK™K¨›NÑˆ�TÜ”�e 4Ó(Ó)ˆØ*.¯)©)°q¬.�D—J‘J ˜vÔ&¸q¸dˆ	Ø�Œ6Ø—>‘> )·:±:�>Ó>Ð>ð �Ø�2Œ:˜% 1œ*ØˆEØ �	 4¨!¥8�à—+‘+˜f¨4Ð/Õ0Ø�K‰K˜ TÐ)Õ*õ+ˆà—L‘L×&Ñ&ˆ	Ü—X’X˜a �c¨Ô3ˆ
Ü
�	Š	�'¨"�~Õ.à�1Œ9Ü˜DŸK™K¨Õ.°·±¸DÕ0AÓBˆGÜŸ(š( 4§<¡<°Õ#8¸tÔDˆKÜ—x’x §	¡	¨'Õ 2¸Ô>‰Hà˜R•.ˆCÜŸ(š( 3¨iÔ8ˆKÜ—x’x ¨4¯:©:Ô6ˆHÜ˜% t¯[©[¸$¿,¹,ØŸ)™) [°(ô<ð �~‰~˜x¨°jÐAØ$-°Eð ó ;ð 	;rt   c           
     óØ  € V P                  V P                  V P                  34      pV P                  P                  VRR7      pV P                  P                  VRR7      p\        P
                  ! WR7      P                  4       pV P                  V P                  4      w  rV\        V4      pV P                  ^8X  d   V P                  WW34      MV3pV^ 8X  d   V P                  W€P                  R7      # \        P                  ! WbR7      p	\        P                  ! V P                  VR7      p
\        VVVVVVV	V
4       \        P                   ! V4      P                  VRR7      pV
R,          p\        P"                  ! WÂR7      p\        P"                  ! WÀP                  R7      p\%        W¹\        V P                  4      W0P&                  WÞ4       V P                  WíV
3VRR7      # )zBIndex along the minor axis where idx is an array of ints.
        Fr:   r2   r¯   rj   )rI   rA   r@   rY   rK   rV   rº   rG   rH   rN   rX   rT   r3   rL   Ú
empty_liker   Úargsortræ   r   rB   )r[   r{   r_   rA   r@   r]   r^   r÷   rë   Úcol_offsetsr*  Ú	col_orderr‡   r+  r,  s   &&             rd   r   Ú_cs_matrix._minor_index_fancy‹  s�  € ð ×)Ñ)¨4¯<©<¸¿¹Ð*EÓFˆ	Ø—,‘,×%Ñ% i°eÐ%Ó<ˆØ—‘×#Ñ# I°EÐ#Ó:ˆä�jŠj˜Ô.×4Ñ4Ó6ˆà�z‰z˜$×+Ñ+Ó,‰ˆÜ�‹HˆØ*.¯)©)°q¬.�D—J‘J ˜vÔ&¸q¸dˆ	Ø�Œ6Ø—>‘> )·:±:�>Ó>Ð>ô —h’h˜qÔ2ˆÜ—]’] 4§;¡;°iÔ@ˆ
ÜØØØØØØØØô		
ô —J’J˜s“O×*Ñ*¨9¸5Ð*ÓAˆ	Ø˜�nˆÜ—h’h˜sÔ4ˆÜ—8’8˜C§z¡zÔ2ˆÜ˜)´#°d·l±lÓ2CØ!§9¡9¨kô	Eà�~‰~˜x°jÐAØ$-°Eð ó ;ð 	;rt   c                óÈ  € V\        R4      8X  d   V'       d   V P                  4       # T # V P                  V P                  4      w  r4VP	                  V4      w  rVp\        \        WVV4      4      pV^ 8X  d.   V P                  V P                  W434      V P                  R7      # V^8X  d   V P                  WR7      # V P                  \        P                  ! WVV4      4      # )z@Index along the minor axis where idx is a slice object.
        Nr2   )r  r8   )r/  r8   rG   rH   rA   rN   r0  rT   r3   r  r   rK   rÈ   )r[   r{   r8   r]   r^   r1  r2  r  s   &&&     rd   r  Ú_cs_matrix._minor_slice²  s¼   € ð ”%˜“+Ôß"&�4—9‘9“;Ð0¨DÐ0à�z‰z˜$×+Ñ+Ó,‰ˆØŸK™K¨›NÑˆ�TÜ”�e 4Ó(Ó)ˆØ�Œ6Ø—>‘> $§*¡*¨a¨VÓ"4¸D¿J¹J�>ÓGÐGØ�1Œ9Ø×&Ñ&¨SÐ&Ó<Ð<à×&Ñ&¤r§y¢y°¸dÓ'CÓDÐDrt   c                óð  € V P                  V P                  4      w  rE\        W4      w  rg\        W%4      w  r‰V^ 8X  d.   V^ 8X  d'   Wt8X  d!   W•8X  d   V'       d   V P                  4       # T # \	        WEV P
                  V P                  V P                  WgW‰4	      w  r«pV P                  Wv,
          W˜,
          34      pV P                  ^8X  d   V^,          3pV P                  WËV
3VV P                  RR7      # )zRReturn a submatrix of this matrix.

major, minor: None, int, or slice with step 1
F)r5   r3   r8   )rG   rH   Ú_process_slicer8   r   r@   rA   rB   rX   rT   r3   )r[   r  r  r8   r]   r^   Úi0Úi1Új0Új1r@   rA   rB   r5   s   &&&&          rd   r  Ú_cs_matrix._get_submatrixÂ  sÚ   € ð
 �z‰z˜$×+Ñ+Ó,‰ˆÜ Ó)‰ˆÜ Ó)‰ˆà�Œ7�r˜Q”w 2¤7¨r¬wß"&�4—9‘9“;Ð0¨DÐ0ä 1Ø�$—+‘+˜tŸ|™|¨T¯Y©Y¸Àó!HÑˆ˜ð —
‘
˜B�G R¥WÐ-Ó.ˆØ�9‰9˜Œ>Ø˜1•X�KˆEØ�~‰~˜t¨fÐ5¸UØ$(§J¡J°Uð ó <ð 	<rt   c                óR   € V P                  W34      w  rEV P                  WEV4       R # r  ©rG   Ú	_set_many©r[   rÊ   rÆ   r‰   r}   r~   s   &&&&  rd   Ú_set_intXintÚ_cs_matrix._set_intXint×  ó"   € Ø�z‰z˜3˜*Ó%‰ˆØ�‰�q˜QÖrt   c                óR   € V P                  W34      w  rEV P                  WEV4       R # r  rI  rK  s   &&&&  rd   Ú_set_arrayXarrayÚ_cs_matrix._set_arrayXarrayÛ  rN  rt   c                ó¨  € V P                   ! V P                  W34      !   VP                  w  rEV^8g  ;'       d    VP                  ^ ,          ^8H  pV^8g  ;'       d    VP                  ^,          ^8H  pVP                  VP                  r˜\
        P                  ! VP                  V P                  R7      pVP                  ^ 8X  d   R# V'       da   \
        P                  ! \
        P                  ! V4      \        V4      4      p\
        P                  ! W”4      p	\
        P                  ! W44      pV'       da   \
        P                  ! W…4      p\
        P                  ! \
        P                  ! V4      \        V	4      4      p	\
        P                  ! W54      pV P                  WV	3,          W(V	3,          34      w  r«V P                  W«V4       R# )r±   r2   N)Ú
_zero_manyrG   r5   rÊ   rÆ   rK   rV   rB   r3   r½   rÇ   rÈ   rN   rÉ   rJ  )r[   rÊ   rÆ   r‰   r]   r^   Úbroadcast_rowÚbroadcast_colÚrÚcr}   r~   s   &&&&        rd   Ú_set_arrayXarray_sparseÚ"_cs_matrix._set_arrayXarray_sparseß  s4  € à�Š˜Ÿ™ S JÓ/Ò0à�y‰y‰ˆØ˜Q™×2Ð2 1§7¡7¨1¥:°¡?ˆØ˜Q™×2Ð2 1§7¡7¨1¥:°¡?ˆØ�u‰u�a—e‘eˆ1ä�JŠJ�q—v‘v T§Z¡ZÔ0ˆØ�6‰6�QŒ;ÙçÜ—	’	œ"Ÿ)š) A›,¬¨A«Ó/ˆAÜ—’˜“ˆAÜ—’˜“ˆAßÜ—	’	˜!“ˆAÜ—’œŸ	š	 !›¤c¨!£fÓ-ˆAÜ—	’	˜!“ˆAà�z‰z˜3 !˜t�9 c¨Q¨$¥iÐ0Ó1‰ˆØ�‰�q˜QÖrt   c           
     ój  € ^ V P                   9   d   R# V P                  ^8X  d   \        R4      hV P                   w  r4VP                  ^ 8H  pV^ 8  d˜   V'       d   \        W2,           V4      pM\        W2,           V\	        V4      4      p\
        P                  ! V) Wb,
          V P                  P                  R7      p\
        P                  ! W`P                  P                  R7      pM•V'       d   \        W4V,
          4      pM\        W4V,
          \	        V4      4      p\
        P                  ! W`P                  P                  R7      p\
        P                  ! W"V,           V P                  P                  R7      pV'       g   VR\	        V4       p\
        P                  ! \
        P                  ! WP                  R7      4      P                  4       p	V	P                  4       P                   VP                  4       P                   8w  d!   \
        P                  ! W—P                   4      p	V	P                  ^ 8X  d   R# V P                  W434      w  r4V P                  Wx34      w  rxV	P                  p
\
        P                   ! W P                  P                  R7      p\#        W4V P$                  V P                  V
WxV4      pV^8X  d5   V P'                  4        \#        W4V P$                  V P                  V
WxV4       RV9  d   W�P(                  V&   R# V^ 8¬  p\	        V4      \
        P*                  ! V4      ,
          pWàP,                  R,          8  d[   W�,          V P(                  W½,          &   \
        P.                  ! WÝR7      p?V P1                  W,          W�,          WŸ,          4       R# V P2                  pV P5                  4       pVP7                  W4       VP9                  V P                  4      pVw  V n        V n        V n        pV'       d   RV n        V P;                  4        R# R# )rl   Nz"diagonals cant be set in 1d arraysr2   gü©ñÒMbP?r%  Frj   )r5   rX   ÚNotImplementedErrorrˆ   rN   rK   rÈ   rA   r3   Ú
atleast_1drV   rº   ÚsqueezeÚbroadcast_tor½   rG   ræ   r   r@   rQ   rB   rv   r‡   Úlogical_notÚ_insert_manyÚhas_sorted_indicesrÁ   Ú_setdiagrP   Úsort_indices)r[   Úvaluesr÷   r]   r^   Ú	broadcastÚ	max_indexr}   r~   r‰   Ú	n_samplesÚoffsetsrÓ   Úis_existingÚN_newÚis_newÚdo_sortr`   ra   rq   s   &&&                 rd   rb  Ú_cs_matrix._setdiagø  sø  € Ø�—
‘
Œ?ÙØ�9‰9˜Œ>Ü%Ð&JÓKÐKà�z‰z‰ˆØ—[‘[ AÑ%ˆ	àˆqŒ5ßÜ ¥ q›M‘	ä ¥ q¬#¨f«+Ó6�	Ü—	’	˜1˜"˜i�m°4·<±<×3EÑ3EÔFˆAÜ—	’	˜)¯<©<×+=Ñ+=Ô>‰A÷ Ü  q¥5›M‘	ä  q¥5¬#¨f«+Ó6�	Ü—	’	˜)¯<©<×+=Ñ+=Ô>ˆAÜ—	’	˜! �]°$·,±,×2DÑ2DÔEˆAçØ˜GœS ›V�_ˆFä�MŠMœ"Ÿ*š* V·:±:Ô>Ó?×EÑEÓGˆØ�9‰9‹;×Ñ §	¡	£× 1Ñ 1Ô1Ü—’ §7¡7Ó+ˆAØ�6‰6�QŒ;Ùà�z‰z˜1˜&Ó!‰ˆØ�z‰z˜1˜&Ó!‰ˆØ—F‘Fˆ	Ü—(’(˜9¯L©L×,>Ñ,>Ô?ˆÜ   t§{¡{°D·L±LÀ)Ø!" wó0ˆà�!Œ8à×ÑÔ!Ü˜q T§[¡[°$·,±,À	Ø  Wô.à�WÔà!"�I‰I�gÑÙà !‘|ˆÜ�KÓ ¤2×#3Ò#3°KÓ#@Õ@ˆð —8‘8˜eÕ#Ô#à./­nˆD�I‰I�gÕ*Ñ+ä—^’^ KÔAˆFØØ×Ñ˜a�i¨­°AµIÖ>ð ×-Ñ-ˆGØ—*‘*“,ˆCØ�L‰L˜Ô#Ø×+Ñ+¨D¯J©JÓ7ˆFØ6<Ñ3ˆDŒK˜œ t¤y°!çØ*/�Ô'Ø×!Ñ!Ö#ñ rt   c                óž  € V P                  V P                  4      w  r4R  p\        P                  ! \        P                  ! WP
                  P                  R7      4      P                  4       p\        P                  ! \        P                  ! W P
                  P                  R7      4      P                  4       pV! W4       V! W$4       WW43# )c                 ó¨   € V P                  4       pW!8¼  d   \        R V RV R24      hV P                  4       pW!) 8  d   \        R V RV R24      hR# )zindex (z) out of range (>= r�   z) out of range (< -N)rJ   Ú
IndexErrorrˆ   )rA   Úboundr{   s   && rd   Úcheck_boundsÚ1_cs_matrix._prepare_indices.<locals>.check_boundsE  s_   € Ø—+‘+“-ˆCØŒ|Ü  7¨3¨%Ð/BÀ5À'ÈÐ!KÓLÐLØ—+‘+“-ˆCØ�VŒ|Ü  7¨3¨%Ð/BÀ5À'ÈÐ!KÓLÐLñ rt   r2   )rG   rH   rK   r\  rV   rA   r3   rº   )r[   r}   r~   r]   r^   rr  s   &&&   rd   Ú_prepare_indicesÚ_cs_matrix._prepare_indicesB  sŽ   € Ø�z‰z˜$×+Ñ+Ó,‰ˆò	Mô �MŠMœ"Ÿ*š* Q¯l©l×.@Ñ.@ÔAÓB×HÑHÓJˆÜ�MŠMœ"Ÿ*š* Q¯l©l×.@Ñ.@ÔAÓB×HÑHÓJˆÙ�QÔÙ�QÔØ�QˆzÐrt   c           
     óT  € V P                  W4      w  rrE\        P                  ! \        P                  ! W0P                  R7      4      P                  4       pVP                  p\        P                  ! W`P                  P                  R7      p\        WEV P                  V P                  VWV4      pV^8X  d5   V P                  4        \        WEV P                  V P                  VWV4       RV9  d   W0P                  V&   R# \        RV P                  P                   R2\         ^R7       VR8„  p	W9,          V P                  Wy,          &   V	( p	W,          pW^ 8  ;;,          V,          uu&   W),          pW"^ 8  ;;,          V,          uu&   V P#                  WW9,          4       R# )zwSets value at each (i, j) to x

Here (i,j) index major and minor respectively, and must not contain
duplicate entries.
r2   Nz%Changing the sparsity structure of a z. is expensive. lil and dok are more efficient.r‚   rj   )rt  rK   r\  rV   r3   rº   r½   ræ   rA   r   r@   rQ   rB   r   rT   rU   r   r`  )
r[   r}   r~   r‰   r]   r^   rg  rh  rÓ   rz   s
   &&&&      rd   rJ  Ú_cs_matrix._set_manyS  sS  € ð ×*Ñ*¨1Ó0‰
ˆˆaÜ�MŠMœ"Ÿ*š* Q¯j©jÔ9Ó:×@Ñ@ÓBˆà—F‘Fˆ	Ü—(’(˜9¯L©L×,>Ñ,>Ô?ˆÜ   t§{¡{°D·L±LÀ)Ø!" wó0ˆà�!Œ8à×ÑÔ!Ü˜q T§[¡[°$·,±,À	Ø  Wô.ð �WÔà!"�I‰I�gÑÙô Ð8¸¿¹×9PÑ9PÐ8Qð R?ð ?ä(°Qõ8ð ˜R‘<ˆDØ'(¥wˆD�I‰I�g•mÑ$à�5ˆDØ•ˆAØ�!‰e�H˜�M‹HØ•ˆAØ�!‰e�H˜�M‹HØ×Ñ˜a A¥GÖ,rt   c           
     óˆ  € V P                  W4      w  rr4\        V4      p\        P                  ! WPP                  P
                  R7      p\        W4V P                  V P                  VWV4      pV^8X  d5   V P                  4        \        W4V P                  V P                  VWV4       ^ V P                  WfR8„  ,          &   R# )zrSets value at each (i, j) to zero, preserving sparsity structure.

Here (i,j) index major and minor respectively.
r2   Nrj   )
rt  rN   rK   ræ   rA   r3   r   r@   rQ   rB   )r[   r}   r~   r]   r^   rg  rh  rÓ   s   &&&     rd   rS  Ú_cs_matrix._zero_manyz  sŸ   € ð
 ×*Ñ*¨1Ó0‰
ˆˆaä˜“Fˆ	Ü—(’(˜9¯L©L×,>Ñ,>Ô?ˆÜ   t§{¡{°D·L±LÀ)Ø!" wó0ˆà�!Œ8à×ÑÔ!Ü˜q T§[¡[°$·,±,À	Ø  Wô.ð ,-ˆ�	‰	�' B™,Õ'Ó(rt   c                ó  € \         P                  ! VRR7      pVP                  VRR7      pVP                  VRR7      pVP                  VRR7      pV P                  pV P	                  V P
                  V P                  3V P                  R,          VP                  ,           R7      p\         P                  ! V P                  VR7      V n        \         P                  ! V P
                  VR7      V n        \         P                  ! WR7      p\         P                  ! W&R7      p. p. p\         P                  ! VRR7      w  rš\         P                  ! V
\        V4      4      p
\         P                  ! V
4      p^ p\        \        WšV
R	,          4      4       EF(  w  pw  rïpV P                  V,          pV P                  V,          pVP                  V P
                  VV 4       VP                  V P                  VV 4       \         P                  ! W/V R
R
R1,          RR7      w  pp\        V4      VV,
          8X  d(   VP                  W/V 4       VP                  W?V 4       MUVP                  W/V R
R
R1,          V,          4       VP                  W?V R
R
R1,          V,          4       \        V4      W½&   TpEK+  	  V P                  X,          pVP                  V P
                  VR
 4       VP                  V P                  VR
 4       \         P                   ! V4      V n        \         P                   ! V4      V n        \         P"                  ! V P                  P$                  VR7      pV! ^ 4      V^ &   \         P                  ! V P                  4      pVV	;;,          V,          uu&   VVR	&   \         P&                  ! VVR7      V n        V'       d   RV n        V P)                  4        V P+                  RR7       R
# )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)Úmoder/   r2   T)Úreturn_indexr$  Nr%  Fr;   rj   )rK   r;  Útakera  rI   rA   r@   r½   rV   ÚuniqueÚappendrN   ro   Ú	enumerateÚziprB   Úconcatenateræ   r5   r&  rc  rZ   )r[   r}   r~   r‰   r–   rl  r_   Úindices_partsÚ
data_partsÚuiÚ	ui_indptrÚnew_nnzsÚprevrW  ÚiiÚjsÚjer1  r2  ÚujÚ	uj_indptrÚnnzsÚindptr_diffs   &&&&                   rd   r`  Ú_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©K¸­O¸a¿f¹fÕ,Dð *ó Gˆ	ä—j’j §¡°IÔ>ˆŒÜ—z’z $§,¡,°iÔ@ˆŒÜ�JŠJ�qÔ*ˆÜ�JŠJ�qÔ*ˆð ˆØˆ
ÜŸ	š	 !°$Ô7‰ˆÜ—I’I˜i¬¨Q«Ó0ˆ	Ü—7’7˜9Ó%ˆØˆÜ(¬¨R¸IÀb½MÓ)J×K‰OˆA‰|�˜à—K‘K Õ%ˆEØ—;‘;˜r•?ˆDØ× Ñ  §¡¨e°DÐ!9Ô:Ø×Ñ˜dŸi™i¨¨dÐ3Ô4ô ŸIšI a¨2 h©t°¨t¥nÀ4ÔH‰MˆB�	Ü�2‹w˜"˜r�'Ô!Ø×$Ñ$ Q¨" XÔ.Ø×!Ñ! ! r (Õ+à×$Ñ$ Q¨" X©d°¨d¥^°IÕ%>Ô?Ø×!Ñ! ! r (©4¨R¨4¥.°Õ";Ô<Ü! "›g�‘à‹Dñ#  Lð( —‘˜B•ˆØ×Ñ˜TŸ\™\¨%¨&Ð1Ô2Ø×Ñ˜$Ÿ)™) E FÐ+Ô,ô —~’~ mÓ4ˆŒÜ—N’N :Ó.ˆŒ	Ü�xŠx˜Ÿ™×)Ñ)°Ô;ˆÙ˜A“,ˆˆQ‰Ü—g’g˜dŸk™kÓ*ˆØ�B�˜8Õ#‹ØˆˆR‰Ü—i’i ¨$Ô/ˆŒçà&+ˆDÔ#Ø×ÑÔà×Ñ UÐÖ+rt   c                ó"  € V P                   ^8X  dF   V P                  4       pV P                  VP                  VP                  33VP
                  VR7      # V P                  V P
                  4      w  r4V P                  p\        P                  ! \        V4      V P                  P                  R7      p\        W0P                  V4       V P                  We34      pV P                  V P                  V3V P
                  WP                  R7      # )r±   r:   r2   r7   )rX   rç   rO   rB   rA   r5   rG   rK   ræ   rN   r3   r   r@   )r[   r8   rä   Ú	major_dimÚ	minor_dimÚminor_indicesÚmajor_indicesrÂ   s   &&      rd   rÁ   Ú_cs_matrix.tocooÚ  sÐ   € Ø�9‰9˜Œ>Ø—*‘*“,ˆCØ×&Ñ&¨¯©°3·;±;°.Ð'AÀ3Ç9Á9ÐSWÐ&ÓXÐXØ#Ÿz™z¨$¯*©*Ó5Ñˆ	ØŸ™ˆÜŸš¤ ]Ó!3¸4¿<¹<×;MÑ;MÔNˆÜ�)Ÿ[™[¨-Ô8Ø—‘˜]Ð:Ó;ˆà×"Ñ"Ø�Y‰Y˜Ð §¡°$¿j¹jð #ó 
ð 	
rt   c                ó  € Vf   Vf   V P                  R4      ^ ,          pV P                  W4      pVP                  P                  '       g(   VP                  P                  '       g   \        R4      hVP                  P                  '       d   V P                  4       pTpMV P                  4       pVP                  pVP                  VP                  4      w  rV\        WVVP                  VP                  VP                  V4       V# )NÚcfz&Output array must be C or F contiguous)rG   Ú_process_toarray_argsr˜   r™   Úf_contiguousrS   rç   r¸   rš   rH   r   r@   rA   rB   )r[   r–   rü   r‰   r�   r]   r^   s   &&&    rd   r´   Ú_cs_matrix.toarrayê  sÂ   € ØŠ;˜5š=Ø—J‘J˜tÓ$ QÕ'ˆEØ×(Ñ(¨Ó4ˆØ—	‘	×&×&Ð&¨#¯)©)×*@×*@Ð*@ÜÐEÓFÐFà�9‰9×!×!Ð!Ø—
‘
“ˆAØ‰Aà—
‘
“ˆAØ—‘ˆAØ�w‰w�q—~‘~Ó&‰ˆÜ�A˜!Ÿ(™( A§I¡I¨q¯v©v°qÔ9Øˆ
rt   c                ó¸   € V P                  V P                  4      w  r\        WV P                  V P                  V P
                  4       V P                  4        R# )zLRemove zero entries from the array/matrix

This is an *in place* operation.
N)rG   rH   r   r@   rA   rB   r†   ©r[   r]   r^   s   &  rd   r�   Ú_cs_matrix.eliminate_zeros  s=   € ð
 �z‰z˜$×+Ñ+Ó,‰ˆÜ˜A $§+¡+¨t¯|©|¸T¿Y¹YÔGØ�
‰
Žrt   c                ó    <€ V ^8„  d   QhRS[ /# ©é   Úreturn©Úbool)r>   Ú__classdict__s   "€rd   Ú__annotate__Ú_cs_matrix.__annotate__  s   ø€ ÷ *ñ *¡dñ *rt   c                ó  € \        V RR4      '       g   RV n        V P                  # \        V R4      '       gK   \        V P                  4      ^,
          p\        \        WP                  V P                  4      4      V n        V P                  # )a"  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_format)	rÙ   r¬  rþ   rN   r@   r¦  r   rA   Úhas_canonical_format©r[   r]   s   & rd   r­  Ú_cs_matrix.has_canonical_format
  sz   € ô �tÐ2°D×9Ò9à).ˆDÔ&ð ×)Ñ)Ð)ô ˜Ð6×7Ò7Ü�D—K‘KÓ  1Õ$ˆAÜ(,Ü(¨¯K©K¸¿¹ÓFó)ˆDÔ%ð ×)Ñ)Ð)rt   c                ó    <€ V ^8„  d   QhRS[ /# ©r£  r  r¥  )r>   r§  s   "€rd   r¨  r©  "  s   ø€ ÷ +ñ +©ñ +rt   c                óH   € \        V4      V n        V'       d
   R V n        R# R# )TN)r¦  r¬  ra  ©r[   r  s   &&rd   r­  r¯  !  s   € ä%)¨#£YˆÔ"ßØ&*ˆDÖ#ñ rt   c                ó  € V P                   '       d   R# V P                  4        V P                  V P                  4      w  r\	        WV P
                  V P                  V P                  4       V P                  4        RV n         R# )zVEliminate duplicate entries by adding them together

This is an *in place* operation.
NT)	r­  rc  rG   rH   r   r@   rA   rB   r†   rŸ  s   &  rd   rQ   Ú_cs_matrix.sum_duplicates'  s`   € ð
 ×$×$Ð$ÙØ×ÑÔà�z‰z˜$×+Ñ+Ó,‰ˆÜ˜1 §¡¨d¯l©l¸D¿I¹IÔFà�
‰
ŒØ$(ˆÖ!rt   c                ó    <€ V ^8„  d   QhRS[ /# r¢  r¥  )r>   r§  s   "€rd   r¨  r©  7  s   ø€ ÷ (ñ (¡Dñ (rt   c                óÒ   € \        V R4      '       gK   \        V P                  4      ^,
          p\        \	        WP                  V P
                  4      4      V n        V P                  # )z‚Whether the indices are sorted

Returns
    - True: if the indices of the array/matrix are in sorted order
    - False: otherwise
r«  )rþ   rN   r@   r¦  r   rA   r«  r®  s   & rd   ra  Ú_cs_matrix.has_sorted_indices6  sR   € ô �tÐ2×3Ò3Ü�D—K‘KÓ  1Õ$ˆAÜ'+Ü& q¯+©+°t·|±|ÓDó(ˆDÔ$ð ×'Ñ'Ð'rt   c                ó    <€ V ^8„  d   QhRS[ /# r±  r¥  )r>   r§  s   "€rd   r¨  r©  G  s   ø€ ÷ -ñ -¡dñ -rt   c                ó&   € \        V4      V n        R # r  )r¦  r«  r³  s   &&rd   ra  r¸  F  s   € ä#'¨£9ˆÖ rt   c                óF   € V P                  4       pVP                  4        V# )z?Return a copy of this array/matrix with sorted indices
        )r8   rc  )r[   ÚAs   & rd   Úsorted_indicesÚ_cs_matrix.sorted_indicesK  s   € ð �I‰I‹KˆØ	�‰ÔØˆrt   c                óÊ   € V P                   '       gQ   \        V P                  4      ^,
          p\        WP                  V P                  V P
                  4       RV n         R# R# )z9Sort the indices of this array/matrix *in place*
        TN)ra  rN   r@   r   rA   rB   r®  s   & rd   rc  Ú_cs_matrix.sort_indicesV  sH   € ð ×&×&Ð&Ü�D—K‘KÓ  1Õ$ˆAÜ˜Q§¡¨T¯\©\¸4¿9¹9ÔEØ&*ˆDÖ#ñ 'rt   c                óú  € V P                  V P                  4      ^ ,          p\        V P                  4      V^,           8w  d   \	        R4      h\        V P
                  4      V P                  8  d   \	        R4      h\        V P                  4      V P                  8  d   \	        R4      h\        V P
                  RV P                   4      V n        \        V P                  RV P                   4      V n        R# )z8Remove empty space after all non-zero elements.
        z index pointer has invalid lengthz)indices array has fewer than nnz elementsz&data array has fewer than nnz elementsN)	rG   rH   rN   r@   rS   rA   r‡   rB   r   )r[   r”  s   & rd   r†   Ú_cs_matrix.prune^  sµ   € ð —J‘J˜t×0Ñ0Ó1°!Õ4ˆ	äˆt�{‰{Ó˜y¨1�}Ô,ÜÐ?Ó@Ð@Üˆt�|‰|Ó˜tŸx™xÔ'ÜÐHÓIÐIÜˆt�y‰y‹>˜DŸH™HÔ$ÜÐEÓFÐFä# D§L¡L°°$·(±(Ð$;Ó<ˆŒÜ  §¡¨9¨D¯H©HÐ!5Ó6ˆŽ	rt   c                óŽ  € \        WP                  R 7      p\        V R4      '       d˜   V P                  w  r#\	        V^ ,          V4      w  rE\	        V^,          V4      w  rgV'       g	   V'       d   \        RV P                   RV 24      hV P                  ^ ,          V,          V P                  ^,          V,          r˜MKT P                  \        V4      ^8”  d   TM
^V^ ,          34      w  rFV P                  V P                  4      w  r‰WH8  dg   V P                  RV P                  V,           V n
        V P                  RV P                  V,           V n        V P                  RV^,            V n        MiWH8”  dd   \        P                  ! V P                  V^,           4      V n        V P                  V^,           R P                  V P                  V,          4       Wi8  dÚ   V P                  V8  p
\        P                   ! V
4      '       g¯   V P                  V
,          V n
        V P                  V
,          V n        V P#                  \        P$                  V
4      w  r¼V P                  P                  ^ 4       WÀP                  R,          V&   \        P&                  ! V P                  V P                  R7       Wn        R# )r-   rû   zshape must be divisible into z blocks. Got Nr$  r%  )r&   rF   rþ   rû   ÚdivmodrS   r5   rG   rN   rH   rA   r@   rB   rK   ÚresizeÚfillrw   rÿ   r   r&  rC   )r[   r5   ÚbmÚbnÚnew_MÚrmÚnew_NÚrnr]   r^   rz   r  r  s   &*           rd   rÅ  Ú_cs_matrix.resizem  sý  € Ü˜E¯N©NÔ;ˆä�4˜×%Ò%Ø—^‘^‰FˆBÜ˜u Q�x¨Ó,‰IˆEÜ˜u Q�x¨Ó,‰IˆEß—RÜ Ð#@ÀÇÁÐ@PØ#0°°ð"9ó :ð :à—:‘:˜a•= BÕ&¨¯
©
°1­¸Õ(;‰qàŸ:™:¬s°5«z¸!¬|¡eÀ!ÀUÈ1ÅXÀÓO‰LˆEØ—:‘:˜d×/Ñ/Ó0‰DˆAàŒ9ØŸ<™<Ð(;¨¯©°UÕ);Ð<ˆDŒLØŸ	™	Ð"5 4§;¡;¨uÕ#5Ð6ˆDŒIØŸ+™+ j u¨q¥yÐ1ˆD�KØŒYÜŸ)š) D§K¡K°¸µÓ;ˆDŒKØ�K‰K˜˜A�˜Ð×$Ñ$ T§[¡[°¥^Ô4àŒ9Ø—<‘< %Ñ'ˆDÜ—6’6˜$—<’<Ø#Ÿ|™|¨DÕ1�”Ø ŸI™I d�O�”	Ø#'×#5Ñ#5´b·f±f¸dÓ#CÑ �Ø—‘× Ñ  Ô#Ø/2—‘˜B• Ñ,Ü—	’	˜$Ÿ+™+¨4¯;©;Õ7àŽrt   c                óB  € V'       d[   V P                  WP                  P                  4       V P                  P                  4       3V P                  VP
                  R7      # V P                  WP                  V P                  3V P                  VP
                  R7      # )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.
r4   )rT   rA   r8   r@   r5   r3   )r[   rB   r8   s   &&&rd   rŒ   Ú_cs_matrix._with_data—  s…   € ÷
 Ø—>‘> 4¯©×):Ñ):Ó)<Ø#'§;¡;×#3Ñ#3Ó#5ð#7à(,¯
©
Ø(,¯
©
ð "ó 4ð 4ð
 —>‘> 4¯©°t·{±{Ð"CØ(,¯
©
¸$¿*¹*ð "ó Fð Frt   c                óP  € V P                  V4      p\        \        RV,           R,           4      pV P                  VP                  ,           pV P	                  V P
                  V P                  VP
                  VP                  3VR7      p\        P                  ! V P
                  P                  VR7      p\        P                  ! WER7      p. ROpW(9   d(   \        P                  ! V\        P                  R7      p	M6\        P                  ! V\        V P                  VP                  4      R7      p	V P                  V P                  4      w  r«V! W«\        P                  ! V P
                  VR7      \        P                  ! V P                  VR7      V P                   \        P                  ! VP
                  VR7      \        P                  ! VP                  VR7      VP                   WgV	4       V P                  W—V3V P                  R7      pVP#                  4        V# )z5apply the binary operation fn to two sparse matrices.rä   r/   r2   rã   )Ú_ne_Ú_lt_Ú_gt_Ú_le_Ú_ge_)rT   rÙ   r   r‡   rI   r@   rA   rK   ræ   r5   Úbool_r   r3   rG   rH   rV   rB   r†   )r[   rŽ   r�   rÚ   Úmaxnnzr_   r@   rA   Úbool_opsrB   r]   r^   r¼  s   &&&          rd   r£   Ú_cs_matrix._binopt¥  s}  € à—‘˜uÓ%ˆô ”\ 5¨2¥:°Õ#5Ó6ˆà—‘˜EŸI™IÕ%ˆØ×)Ñ)¨4¯;©;¸¿¹Ø%*§\¡\°5·=±=ð+Bà+1ð *ó 3ˆ	ô —’˜$Ÿ+™+×+Ñ+°9Ô=ˆÜ—(’(˜6Ô3ˆâ;ˆØŒ>Ü—8’8˜F¬"¯(©(Ô3‰Dä—8’8˜F¬&°·±¸U¿[¹[Ó*IÔJˆDà�z‰z˜$×+Ñ+Ó,‰ˆÙ
ˆ1Ü�:Š:�d—k‘k¨Ô3Ü�:Š:�d—l‘l¨)Ô4Ø�9‰9Ü�:Š:�e—l‘l¨)Ô4Ü�:Š:�e—m‘m¨9Ô5Ø�:‰:Ø˜Dô	"ð �N‰N˜D¨6Ð2¸$¿*¹*ˆNÓEˆØ	�‰Œ	àˆrt   c                ó~  € VP                   V P                   8w  d&   \        RV P                    RVP                    24      hV P                  VR4      p\        P                  ! VP
                  \        P                  4      '       d´   \        P                  ! V P                   V P
                  R7      pVP                  \        P                  4       VP                  4       pV P                  ^8X  d   VR,          3p^ W4&   VP                  4       pVP                  W2P                  &   V P                  V4      # TpV# )z/
Divide this matrix by a second sparse matrix.
r­   r”   Ú_eldiv_r2   rj   )r5   rS   r£   rK   Ú
issubdtyper3   Úinexactræ   rÆ  ÚnanÚnonzerorX   rÁ   rB   rÂ   r›   )r[   rŽ   rV  rü   rÂ   s   &&   rd   Ú_divide_sparseÚ_cs_matrix._divide_sparseÈ  så   € ð �;‰;˜$Ÿ*™*Ô$ÜÐ3°D·J±J°<¸uÀUÇ[Á[ÀMÐRÓSÐSà�L‰L˜ 	Ó*ˆä�=Š=˜Ÿ™¤"§*¡*×-Ò-ô
 —(’(˜4Ÿ:™:¨T¯Z©ZÔ8ˆCØ�H‰H”R—V‘VÔØ—]‘]“_ˆFØ�y‰y˜AŒ~Ø  �*˜�ØˆC‰KØ—‘“	ˆAØŸF™FˆC—‘‰MØ—?‘? 3Ó'Ð'ð ˆCØˆJrt   c                óz  € V P                   V8X  d   V'       d   V P                  4       # T # \        WP                  R 7      p\	        V P                   V4      V8w  d   \        R4      h\        V P                   4      ^8X  dÄ   \        V4      ^8X  d´   V P                  4        V P                  ^ 8X  d   V P                  WP                  RR7      # V^ ,          p\        P                  ! W0P                  ^ ,          4      p\        P                  ! ^ V4      p\        P                  ! ^ V.4      pV P!                  WEV3VRR7      # V P"                  p\        V4      ^8w  d   \        V4      p\        RV R24      hV P                  ^ 8X  d   V P                  WP                  RR7      # V P                  4        V P%                  V4      w  r“V P%                  V4      w  r«\&        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d„   \        P                  ! W“,          V P                  ^ ,          4      p\        P(                  ! \        P                  ! V4      V	4      p\        P                  ! ^ \        V4      ^,           V4      pEM
V
^8X  d…   W³8X  d   \        P(                  ! V P                  V	4      p\        P(                  ! V P*                  V	4      p\        P                  ! ^ \        V4      ^,           \        V P                  4      4      pMV^8X  dy   W©8X  ds   \        P,                  ! V P                  V4      p\        P(                  ! \        P                  ! V4      \        V P                  4      4      pV P.                  V,          pV P                  XXX3VRR7      # )	r-   zcannot be broadcastF)r3   r8   r¯   z0CSR/CSC broadcast_to cannot have shape >2D. Got ÚDc              3   ó*   "  € T F	  q^8H  x € K  	  R# 5ir  rå   )Ú.0rî   s   & rd   Ú	<genexpr>Ú+_cs_matrix._broadcast_to.<locals>.<genexpr>  s   é € Ð)™y˜!�AŽv›yùs   ‚T)r5   r8   r&   rF   r(   rS   rN   rQ   r‡   rT   r3   rK   ÚfullrB   rÈ   rR   Ú_csr_containerrH   rG   rw   rÉ   rA   rÇ   r@   )r[   r5   r8   r^   rB   rA   r@   Ú	old_shaperX   r]   rÍ   rÎ   s   &&&         rd   Ú_broadcast_toÚ_cs_matrix._broadcast_toä  s¤  € Ø�:‰:˜Ôß"&�4—9‘9“;Ð0¨DÐ0ä˜E¯^©^Ô=ˆä˜DŸJ™J¨Ó.°%Ô7ÜÐ2Ó3Ð3äˆt�z‰z‹?˜aÔ¤C¨£J°!¤OØ×ÑÔ!Ø�x‰x˜1Œ}Ø—~‘~ e·:±:ÀE�~ÓJÐJà�a•ˆAÜ—7’7˜1Ÿi™i¨�lÓ+ˆDÜ—i’i  !“nˆGÜ—X’X˜q !˜fÓ%ˆFØ×&Ñ&¨°vÐ'>ÀeÐRWÐ&ÓXÐXð ×%Ñ%ˆ	äˆu‹:˜Œ?Ü�u“:ˆDÜÐOÐPTÈvÐUVÐWÓXÐXà�8‰8�qŒ=Ø—>‘> %¯z©zÀ�>ÓFÐFà×ÑÔØ�z‰z˜%Ó ‰ˆØ—‘˜IÓ&‰ˆß‹3Ñ)™yÓ)�3�3Š3Ñ)™yÓ)×)Ò)ä—7’7˜1�5 $§)¡)¨A¥,Ó/ˆDÜ—g’gœbŸiši¨›l¨AÓ.ˆGÜ—Y’Y˜q¤# d£)¨a¥-°Ó3ŠFØ�1ŒW˜œä—7’7˜4Ÿ9™9 aÓ(ˆDÜ—g’g˜dŸl™l¨AÓ.ˆGÜ—Y’Y˜q¤# d£)¨a¥-´°T·Y±Y³Ó@‰FØ�1ŒW˜œä—9’9˜TŸY™Y¨Ó*ˆDÜ—g’gœbŸiši¨›l¬C°·	±	«NÓ;ˆGØ—[‘[ 1•_ˆFØ�~‰~˜t W¨fÐ5¸UÈˆ~ÓOÐOrt   )r¬  r«  rC   rB   r­  ra  rA   r@   )NNFr  )T)rl   )NNN©F)NN)8rU   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r=   rr   r   rv   rZ   r‘   rž   r¥   r©   rÕ   rÛ   rà   r·   rø   r¶   rÿ   r  r  r  r!  r  r  r   r  r  rL  rP  rX  rb  rt  rJ  rS  r`  rÁ   r´   r�   Úpropertyr­  ÚsetterrQ   ra  r½  rc  r†   rÅ  rŒ   r£   rà  rë  Ú__static_attributes__Ú__classdictcell__)r§  s   @rd   r*   r*      sð  ø‡ € ññV,ÈTõ V,ôp3ð$ —o‘o×-Ñ-€G„Oô3ð4 $×1Ñ1×9Ñ9€MÔô7-òFò	3ò-ò.òvòx
7òò ;ôzð ×'Ñ'×/Ñ/€HÔôFð, —+‘+×%Ñ%€C„Kô"ò4*ò<ò8òHò
!;ôF&;òP%;ôNEô <ò* ò ò ò2H$òTò"%-òN-ò(F,ôX
ð —M‘M×)Ñ)€E„Môð" —o‘o×-Ñ-€G„Oòð ÷*ó ð*ð, × Ñ ÷+ó !ð+ò
)ð ÷(ó ð(ð ×Ñ÷-ó ð-òò+ò7ò!ðF —^‘^×+Ñ+€F„NôFò!òF÷80Pò 0Prt   r*   c                óº   € ^RI HpHp V'       d   TMTp\        V 4      p\	        VR7      p\
        P                  ! V^,           VR7      pVRR pV! WV3WD3R7      # )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.
)Ú	csr_arrayÚ
csr_matrixr/   r2   Nrã   rj   )Ú_csrr÷  rø  rN   r'   rK   rÈ   )rB   rÏ   r÷  rø  r^   r_   r@   rA   s   &&      rd   r¹   r¹     sV   € ÷ ,ß%‘	¨:€IäˆD‹	€AÜ qÔ)€IÜ�YŠY�q˜1•u IÔ.€FØ�S�bˆk€Gá�d VÐ,°Q°FÔ;Ð;rt   c                 ó\  € V f   ^ Tr2W#3# \        V \        4      '       d5   V P                  V4      w  r#pV^8w  d   \        R4      h\	        W#4      pW#3# \        V 4      '       d>   V ^ 8  d	   W,          p Y ^,           r2V^ 8  g   W18”  d   \        RV RV RV 24      h W#3# \        R4      h)Nz$slicing with step != 1 not supportedzindex out of bounds: 0 <= z < z <= zexpected slice or scalar)rD   r/  rA   rS   rˆ   r#   rp  Ú	TypeError)ÚslÚnumrC  rD  Ústrides   &&   rd   rB  rB  (  sÄ   € Ø	‚zØ�CˆBð ˆ6€Mô 
�Bœ×	Ò	ØŸ™ C›‰ˆ�Ø�QŒ;ÜÐCÓDÐDÜ�‹[ˆð ˆ6€Mô 
�2�ŠØ�Œ6Ø�IˆBØ˜!•VˆBØ�Œ6�R”XÜÐ9¸"¸¸SÀÀÀDÈÈÐNÓOÐOð ð
 ˆ6€Mô Ð2Ó3Ð3rt   rí  )6rñ  Ú__all__Úwarningsr   rx   ÚnumpyrK   Ú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¹   rB  rå   rt   rd   Ú<module>r     sz   ðÙ DØ
€å Û ã ß 9ç FÓ Fß .Ý ÷:÷ :÷ :÷ :õ :õ ÷V÷ V÷ Vñ Vô
{P�˜}¨jô {Pô|'<ô"rt   