§
    fŠtj(G  ã                   ór   — d Z ddlZddlmZ ddlmZmZ eej	        fZ
d„ Z G d„ d¦  «        Zd	„ Zd
„ Zd„ ZdS )z0Indexing mixin for sparse array/matrix classes.
é    Né   )Ú	isintlike)ÚsparrayÚissparsec                  óz   — t          j        | Ž }t          || ¦  «        D ]\  }}|j        j        |j        _        Œ|S )a   
    Same as np.broadcast_arrays(a, b) but old writeability rules.

    NumPy >= 1.17.0 transitions broadcast_arrays to return
    read-only arrays. Set writeability explicitly to avoid warnings.
    Retain the old writeability rules, as our Cython code assumes
    the old behavior.
    )ÚnpÚbroadcast_arraysÚzipÚflagsÚ	writeable)Úarraysr	   ÚxÚas       úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/sparse/_index.pyÚ_broadcast_arraysr   
   sH   € õ Ô*¨FÐ3ÐÝÐ$ fÑ-Ô-ð .ð .‰ˆˆ1ØœGÔ-ˆŒÔÐØÐó    c                   ó–   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú
IndexMixinzS
    This class provides common dispatching and validation logic for indexing.
    c                 ó   — t          || j        | j        ¦  «        \  }}}}t          |¦  «        dk    rt	          d| j        › d�¦  «        ‚t          |¦  «        dk    �rL|d         }t          |t          j        ¦  «        r|j        dk    r|                     ¦   «         }t          |t          ¦  «        r|  
                    |¦  «        }n@t          |t          ¦  «        r|                      |¦  «        }n|                      |¦  «        }t          | t          ¦  «        s|S |j        dk    ri|dk    rct          |¦  «        dk    r|                      |g|| j        ¬¦  «        S t          |¦  «        dk    r|                      |gg|| j        ¬¦  «        S |                     |¦  «        S |\  }}t          |t          ¦  «        r¯t          |t          ¦  «        r|                      ||¦  «        }�nžt          |t          ¦  «        r|                      ||¦  «        }�nq|j        dk    r|                      ||¦  «        }�nN|j        dk    r|                      ||¦  «        }�n+t	          d¦  «        ‚t          |t          ¦  «        r»t          |t          ¦  «        r|                      ||¦  «        }�nÚt          |t          ¦  «        rG|t          d ¦  «        k    r||k    r|                      ¦   «         }�n–|                      ||¦  «        }�n~|j        dk    r|                      ||¦  «        }�n[t	          d¦  «        ‚t          |t          ¦  «        r|                      ||¦  «        }�nt          |t          ¦  «        r|                      ||¦  «        }nó|j        dk    ra|j        d         dk    rP|j        dk    s|j        d         dk    r4|                      |d d …df         |                     d	¦  «        ¦  «        }n‡t;          ||¦  «        \  }}|j        |j        k    rt	          d
¦  «        ‚|j        dk    r4|                      t          j        |¦  «        j        | j        ¬¦  «        }n|                       ||¦  «        }t          | t          ¦  «        s`|dk    st          |¦  «        dk    r|j        dk    r|S t          |¦  «        dk    rd|z   }||j        k    r|n|                     |¦  «        S |j        |k    r}| j        dk    r]t          |¦  «        dk    rJ|j        dk    r|  !                    |g|¬¦  «        S | "                    ¦   «                              |¦  «        S |                     |¦  «        S |S )Né   z/Indexing that leads to >2D is not supported by z% format. Try converting to COO formatr   r   © )ÚshapeÚdtypezindex results in >2 dimensionséÿÿÿÿú'number of row and column indices differ©r   )r   Úlil©r   )#Ú_validate_indicesr   ÚformatÚlenÚ
IndexErrorÚ
isinstancer   ÚndarrayÚitemÚ	INT_TYPESÚ_get_intÚsliceÚ
_get_sliceÚ
_get_arrayr   Ú	__class__r   ÚreshapeÚ_get_intXintÚ_get_intXsliceÚndimÚ_get_intXarrayÚ_get_sliceXintÚcopyÚ_get_sliceXsliceÚ_get_sliceXarrayÚ_get_arrayXintÚ_get_arrayXsliceÚ_get_columnXarrayr   ÚsizeÚ
atleast_2dÚ_get_arrayXarrayÚ_coo_containerÚtocoo)	ÚselfÚkeyÚindexÚ	new_shapeÚ_ÚidxÚresÚrowÚcols	            r   Ú__getitem__zIndexMixin.__getitem__   sP  € Ý!2°3¸¼
ÀDÄKÑ!PÔ!PÑˆˆy˜!˜QÝˆy‰>Œ>˜AÒÐÝð SØ $¤ðSð Sð Sñ Tô Tð Tõ ˆu‰:Œ:˜Š?‰?Ø˜”(ˆCÝ˜#�rœzÑ*Ô*ð %Ø”9 ’?�?ØŸ(š(™*œ*�CÝ˜#�yÑ)Ô)ð +Ø—m’m CÑ(Ô(��Ý˜C¥Ñ'Ô'ð +Ø—o’o cÑ*Ô*��à—o’o cÑ*Ô*�õ ˜d¥GÑ,Ô,ð Ø�
àŒy˜BŠˆ 9°¢? ?Ý�y‘>”> QÒ&Ð&ØŸ>š>¨3¨%°yÈÌ
˜>ÑSÔSÐSÝ�y‘>”> QÒ&Ð&ØŸ>š>¨C¨5¨'¸È$Ì*˜>ÑUÔUÐUØ—;’;˜yÑ)Ô)Ð)ð ‰ˆˆSõ �c�9Ñ%Ô%ð )	:Ý˜#�yÑ)Ô)ð 	CØ×'Ò'¨¨SÑ1Ô1�‘Ý˜C¥Ñ'Ô'ð CØ×)Ò)¨#¨sÑ3Ô3�‘Ø”˜Q’�Ø×)Ò)¨#¨sÑ3Ô3�‘Ø”˜Q’�Ø×)Ò)¨#¨sÑ3Ô3�‘å Ð!AÑBÔBÐBÝ˜�UÑ#Ô#ð 	:Ý˜#�yÑ)Ô)ð 
CØ×)Ò)¨#¨sÑ3Ô3�‘Ý˜C¥Ñ'Ô'ð CØ�% ™+œ+Ò%Ð%¨#°ª*¨*ØŸ)š)™+œ+�C‘Cà×/Ò/°°SÑ9Ô9�C‘CØ”˜Q’�Ø×+Ò+¨C°Ñ5Ô5�‘å Ð!AÑBÔBÐBå˜#�yÑ)Ô)ð :Ø×)Ò)¨#¨sÑ3Ô3�‘Ý˜C¥Ñ'Ô'ð :Ø×+Ò+¨C°Ñ5Ô5��à”(˜a’-�- C¤I¨a¤L°AÒ$5Ð$5Ø”x 1’}�}¨¬	°!¬¸Ò(9Ð(9à×,Ò,¨S°°°°A°¬Y¸¿ºÀB¹¼ÑHÔH��õ -¨S°#Ñ6Ô6‘��SØ”9 ¤	Ò)Ð)Ý$Ð%NÑOÔOÐOØ”8˜q’=�=ØŸ.š.­¬°sÑ);Ô);Ô)AÈÌ˜.ÑTÔT�C�Cà×/Ò/°°SÑ9Ô9�Cõ ˜$¥Ñ(Ô(ð 	MØ˜BŠˆ¥3 y¡>¤>°QÒ#6Ð#6¸3¼8Àqº=¸=à�
Ý�9‰~Œ~ Ò"Ð"à  9Ñ,�	à# s¤yÒ0Ð0�3�3°c·k²kÀ)Ñ6LÔ6LÐLð Œ9˜	Ò!Ð!àŒ{˜eÒ#Ð#­¨I©¬¸!Ò(;Ð(;Ø”9 ’?�?Ø×.Ò.°¨u¸iÐ.ÑHÔHÐHØ—y’y‘{”{×*Ò*¨9Ñ5Ô5Ð5Ø—;’;˜yÑ)Ô)Ð)Øˆ
r   c                 óô
  — t          || j        | j        ¦  «        \  }}}}t          |¦  «        dk    �rÅ|d         }t	          |¦  «        r|                     ¦   «         }nt          j        || j        ¬¦  «        }t          |t          ¦  «        r=|j        dk    rt          d¦  «        ‚|                      ||j        d         ¦  «         d S t          |t          ¦  «        r¤t!          |                     | j        d         ¦  «        Ž }t          |¦  «        }|dk    r4|j        dk    r)|                      |d         |j        d         ¦  «         d S t          j        |                     | j        d         ¦  «        Ž }|j        }	n|                     ¦   «         j        }	|                     ¦   «         j        |	k    rt          j        ||j        ¦  «        }|j        dk    r|                      ||¦  «         d S |\  }
}t          |
t          ¦  «        r’t          |t          ¦  «        r}t	          |¦  «        r|                     ¦   «         }nt          j        || j        ¬¦  «        }|j        dk    rt          d¦  «        ‚|                      |
||j        d         ¦  «         d S t          |
t          ¦  «        r7t          j        |
                     | j        d         ¦  «        Ž d d …d f         }
nt          j        |
¦  «        }
t          |t          ¦  «        rNt          j        |                     | j        d         ¦  «        Ž d d d …f         }|
j        dk    r|
d d …d f         }
nt          j        |¦  «        }t3          |
|¦  «        \  }}|j        |j        k    rt5          d¦  «        ‚t	          |¦  «        �rd|j        v rd S |j        dk    r|d          }|d          }|                     d¬¦  «                             |j        d¬¦  «        }|j        d         dk    o|j        d         dk    }|j        d         dk    o|j        d         dk    }|s|j        d         |j        d         k    r|s+|j        d         |j        d         k    st          d	¦  «        ‚|                     ¦   «          |                      |||¦  «         d S t          j        || j        ¬¦  «        }|                     ¦   «         j        |                     ¦   «         j        k    rt          j        ||j        ¦  «        }|j        dk    rd S |                     |j        ¦  «        }|                       |||¦  «         d S )
Nr   r   r   z&Trying to assign a sequence to an itemr   F)r2   Tzshape mismatch in assignment)!r   r   r    r!   r   Útoarrayr   Úasarrayr   r#   r&   r8   Ú
ValueErrorÚ_set_intÚflatr(   ÚrangeÚindicesÚarangeÚsqueezeÚbroadcast_toÚ
_set_arrayÚ_set_intXintÚ
atleast_1dr/   r   r"   r<   r,   Ú_shape_as_2dÚsum_duplicatesÚ_set_arrayXarray_sparseÚ_set_arrayXarray)r=   r>   r   r?   r@   rA   rB   Ú	idx_rangeÚNÚ	idx_shaperD   rE   ÚiÚjÚbroadcast_rowÚbroadcast_cols                   r   Ú__setitem__zIndexMixin.__setitem__   sÜ  € Ý!2°3¸¼
ÀDÄKÑ!PÔ!PÑˆˆy˜!˜Qõ ˆu‰:Œ:˜Š?‰?Ø˜”(ˆCå˜‰{Œ{ð 4Ø—I’I‘K”K��å”J˜q¨¬
Ð3Ñ3Ô3�å˜#�yÑ)Ô)ð Ø”6˜Q’;�;Ý$Ð%MÑNÔNÐNØ—’˜c 1¤6¨!¤9Ñ-Ô-Ð-Ø�å˜#�uÑ%Ô%ð 0õ " 3§;¢;¨t¬z¸!¬}Ñ#=Ô#=Ð>�	Ý˜	‘N”N�Ø˜’6�6˜aœf¨šk˜kØ—M’M )¨A¤,°´°q´	Ñ:Ô:Ð:Ø�FÝ”i §¢¨T¬Z¸¬]Ñ!;Ô!;Ð<�ØœI�	�	àŸKšK™MœMÔ/�	à�yŠy‰{Œ{Ô  IÒ-Ð-Ý”O A s¤yÑ1Ô1�ØŒv˜Š{ˆ{Ø—’  QÑ'Ô'Ð'ØˆFð ‰ˆˆSå�c�9Ñ%Ô%ð 	­*°S½)Ñ*DÔ*Dð 	Ý˜‰{Œ{ð 4Ø—I’I‘K”K��å”J˜q¨¬
Ð3Ñ3Ô3�ØŒv˜Š{ˆ{Ý Ð!IÑJÔJÐJØ×Ò˜c 3¨¬¨q¬	Ñ2Ô2Ð2ØˆFå�c�5Ñ!Ô!ð 	%Ý”)˜SŸ[š[¨¬°A¬Ñ7Ô7Ð8¸¸¸¸D¸ÔAˆCˆCå”- Ñ$Ô$ˆCå�c�5Ñ!Ô!ð 	%Ý”)˜SŸ[š[¨¬°A¬Ñ7Ô7Ð8¸¸q¸q¸q¸ÔAˆCØŒx˜1Š}ˆ}Ø˜!˜!˜!˜T˜'”l�øå”- Ñ$Ô$ˆCå   cÑ*Ô*‰ˆˆ1ØŒ7�a”gÒÐÝÐFÑGÔGÐGå�A‰;Œ;ñ 	+Ø�A”Gˆ|ˆ|Ø�ØŒv˜Š{ˆ{à�d”G�Ø�d”G�Ø—’˜U�Ñ#Ô#×+Ò+¨A¬NÀÐ+ÑFÔFˆAØœG AœJ¨!šOÐ?°´¸´
¸a²ˆMØœG AœJ¨!šOÐ?°´¸´
¸a²ˆMØ"ð A a¤g¨a¤j°A´G¸A´JÒ&>Ð&>Ø"ð '?Ø&'¤g¨a¤j°A´G¸A´JÒ&>Ð&>Ý Ð!?Ñ@Ô@Ð@Ø×ÒÑÔÐØ×(Ò(¨¨A¨qÑ1Ô1Ð1Ð1Ð1õ ”
˜1 D¤JÐ/Ñ/Ô/ˆAØ�yŠy‰{Œ{Ô  A§I¢I¡K¤KÔ$5Ò5Ð5Ý”O A q¤wÑ/Ô/�ØŒv˜Š{ˆ{Ø�Ø—	’	˜!œ'Ñ"Ô"ˆAØ×!Ò! ! Q¨Ñ*Ô*Ð*Ð*Ð*r   c                 óÐ   — | j         \  }}t          |¦  «        }|| k     s||k    rt          d|› d�¦  «        ‚|dk     r||z  }|                      |t	          d¦  «        ¦  «        S )zGReturn a copy of row i of the matrix, as a (1 x n) row vector.
        úindex (ú) out of ranger   N)r   Úintr"   r.   r(   ©r=   r\   ÚMrZ   s       r   Ú_getrowzIndexMixin._getrowÚ   su   € ð Œz‰ˆˆ1Ý�‰FŒFˆØ�ˆrŠ6ˆ6�Q˜!’V�VÝÐ8 qÐ8Ð8Ð8Ñ9Ô9Ð9ØˆqŠ5ˆ5Ø�‰FˆAØ×"Ò" 1¥e¨D¡k¤kÑ2Ô2Ð2r   c                 óÐ   — | j         \  }}t          |¦  «        }|| k     s||k    rt          d|› d�¦  «        ‚|dk     r||z  }|                      t	          d¦  «        |¦  «        S )zMReturn a copy of column i of the matrix, as a (m x 1) column vector.
        rb   rc   r   N)r   rd   r"   r1   r(   re   s       r   Ú_getcolzIndexMixin._getcolå   su   € ð Œz‰ˆˆ1Ý�‰FŒFˆØ�ˆrŠ6ˆ6�Q˜!’V�VÝÐ8 qÐ8Ð8Ð8Ñ9Ô9Ð9ØˆqŠ5ˆ5Ø�‰FˆAØ×"Ò"¥5¨¡;¤;°Ñ2Ô2Ð2r   c                 ó   — t          ¦   «         ‚©N©ÚNotImplementedError©r=   rB   s     r   r'   zIndexMixin._get_intð   ó   € Ý!Ñ#Ô#Ð#r   c                 ó   — t          ¦   «         ‚rk   rl   rn   s     r   r)   zIndexMixin._get_sliceó   ro   r   c                 ó   — t          ¦   «         ‚rk   rl   rn   s     r   r*   zIndexMixin._get_arrayö   ro   r   c                 ó   — t          ¦   «         ‚rk   rl   ©r=   rD   rE   s      r   r-   zIndexMixin._get_intXintù   ro   r   c                 ó   — t          ¦   «         ‚rk   rl   rs   s      r   r0   zIndexMixin._get_intXarrayü   ro   r   c                 ó   — t          ¦   «         ‚rk   rl   rs   s      r   r.   zIndexMixin._get_intXsliceÿ   ro   r   c                 ó   — t          ¦   «         ‚rk   rl   rs   s      r   r1   zIndexMixin._get_sliceXint  ro   r   c                 ó   — t          ¦   «         ‚rk   rl   rs   s      r   r3   zIndexMixin._get_sliceXslice  ro   r   c                 ó   — t          ¦   «         ‚rk   rl   rs   s      r   r4   zIndexMixin._get_sliceXarray  ro   r   c                 ó   — t          ¦   «         ‚rk   rl   rs   s      r   r5   zIndexMixin._get_arrayXint  ro   r   c                 ó   — t          ¦   «         ‚rk   rl   rs   s      r   r6   zIndexMixin._get_arrayXslice  ro   r   c                 ó   — t          ¦   «         ‚rk   rl   rs   s      r   r7   zIndexMixin._get_columnXarray  ro   r   c                 ó   — t          ¦   «         ‚rk   rl   rs   s      r   r:   zIndexMixin._get_arrayXarray  ro   r   c                 ó   — t          ¦   «         ‚rk   rl   ©r=   rB   r   s      r   rK   zIndexMixin._set_int  ro   r   c                 ó   — t          ¦   «         ‚rk   rl   r~   s      r   rR   zIndexMixin._set_array  ro   r   c                 ó   — t          ¦   «         ‚rk   rl   ©r=   rD   rE   r   s       r   rS   zIndexMixin._set_intXint  ro   r   c                 ó   — t          ¦   «         ‚rk   rl   r�   s       r   rX   zIndexMixin._set_arrayXarray   ro   r   c                 ó´   — t          j        |                     ¦   «         | j        ¬¦  «        }t	          ||¦  «        \  }}|                      |||¦  «         d S )Nr   )r   rI   rH   r   r   rX   )r=   rD   rE   r   rA   s        r   rW   z"IndexMixin._set_arrayXarray_sparse#  sQ   € åŒJ�q—y’y‘{”{¨$¬*Ð5Ñ5Ô5ˆÝ   CÑ(Ô(‰ˆˆ1Ø×Ò˜c 3¨Ñ*Ô*Ð*Ð*Ð*r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rF   r`   rg   ri   r'   r)   r*   r-   r0   r.   r1   r3   r4   r5   r6   r7   r:   rK   rR   rS   rX   rW   r   r   r   r   r      sp  € € € € € ðð ð`ð `ð `ðDY+ð Y+ð Y+ðv	3ð 	3ð 	3ð	3ð 	3ð 	3ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð$ð $ð $ð+ð +ð +ð +ð +r   r   c           	      óð
  ‡— t          |¦  «        }| t          u rt          d¦  «        f|z  |g g fS t          | t          ¦  «        s| g} d}g }d}t          | ¦  «        D ]õ\  }}|t          u r|�t          d¦  «        ‚|}Œ"|€|                     |¦  «         Œ:t          |t          ¦  «        st          |¦  «        r|                     |¦  «         |dz  }Œyt          ||¦  «        x}	� |                     |	¦  «         ||	j
        z  }Œ«t          |¦  «        rt          d¦  «        ‚|                     t          j        |¦  «        ¦  «         |dz  }Œö||k    rt          d| › d|› d|› d	�¦  «        ‚||z
  t          d¦  «        gz  }
|
r0|€|                     |
¦  «         n|d|…         |
z   ||d…         z   }g }d}g Šg }g }g }t          |¦  «        D �]U\  }}|€8|                     t          |¦  «        ¦  «         |                     d¦  «         Œ@t          |t          ¦  «        ra‰                     |¦  «         ||         }t          t          |                     |¦  «        Ž ¦  «        }|                     |¦  «         |dz  }Œ¶t          |¦  «        rv||         }| |cxk    r|k     sn t          d
|› d�¦  «        ‚t#          |dk     r||z   n|¦  «        }‰                     |¦  «         |                     |¦  «         |dz  }�Œ;|j        j        dk    r­||j
        z   }|||…         }|j        |k    rt          d|› d|› d|j        › �¦  «        ‚‰                     |                     ¦   «         ¦  «         |                     t          ||¦  «        ¦  «         |                     t          ||¦  «        ¦  «         |}�Œø||         }t-          |||¦  «        }‰                     |¦  «         |                     |¦  «         |                     |¦  «         |dz  }�ŒWt          |¦  «        dk    rÅˆfd„|D ¦   «         }	 t          j        |Ž }nA# t0          $ r4 d                     d„ |D ¦   «         ¦  «        }d|› �}t          |¦  «        ‚w xY wt          |¦  «        |d         |d         z
  dz   k    rt5          |¦  «        |z   }n�|d         }|d|…         t5          |¦  «        z   ||d…         z   }nSt          |¦  «        dk    r@‰|d                  j        }|d         }|d|…         t5          |¦  «        z   ||d…         z   }t	          ‰¦  «        t	          |¦  «        ||fS )aµ  Returns four sequences: (index, requested shape, arrays, nones)

    index : tuple of validated idx objects. bool arrays->nonzero(),
            arrays broadcast, ints and slices as they are, Nones removed
    requested shape : the shape of the indexed space, including Nones
    arr_pos : position within index of all arrays or ints (for array fancy indexing)
    none_pos : insert positions to put newaxis coords in indexed space.
    Nr   z(an index can only have a single ellipsisr   zoIndexing with sparse matrices is not supported except boolean indexing where matrix and index are equal shapes.z<Too many indices for array or tuple index out of range. Key z needs zD. Array is ÚDrb   rc   Úbzbool index z has shape z instead of c                 ó*   •— g | ]}‰|         j         ‘ŒS r   r   )Ú.0r\   r?   s     €r   ú
<listcomp>z%_validate_indices.<locals>.<listcomp>�  s   ø€ Ð<Ð<Ð<¨�e˜A”h”nÐ<Ð<Ð<r   ú c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rk   )Ústr)rŒ   Úshps     r   ú	<genexpr>z$_validate_indices.<locals>.<genexpr>¡  s(   è è € Ð=Ð=¨3�c #™hœhÐ=Ð=Ð=Ð=Ð=Ð=r   zLshape mismatch: indexing arrays could not be broadcast together with shapes r   )r!   ÚEllipsisr(   r#   ÚtupleÚ	enumerater"   Úappendr   Ú_compatible_boolean_indexr/   r   r   rI   ÚextendrM   rN   rd   r   Úkindr   ÚnonzeroÚ
_asindicesÚbroadcast_shapesrJ   ÚjoinÚlist)r>   Ú
self_shapeÚself_formatÚ	self_ndimÚ	ellps_posÚ	index_1stÚprelim_ndimr\   rB   ÚixÚellip_slicesr[   Ú
index_ndimÚarray_indicesÚnone_positionsÚarr_int_posÚMsÚ	len_slicerZ   Útmp_ndimÚ	mid_shapeÚ
arr_shapesÚ	arr_shapeÚshapesÚmsgÚarr_posr?   s                             @r   r   r   *  sD  ø€ õ �J‘”€Ià
�h€€Ý�d‘”ˆ~ 	Ñ)¨:°r¸2Ð=Ð=å�c�5Ñ!Ô!ð Øˆeˆð €IØ€IØ€KÝ˜C‘.”.ð ð ‰ˆˆ3Ø•(ˆ?ˆ?ØÐ$Ý Ð!KÑLÔLÐLØˆIˆIØˆ[Ø×Ò˜SÑ!Ô!Ð!Ð!Ý˜�UÑ#Ô#ð 	¥y°¡~¤~ð 	Ø×Ò˜SÑ!Ô!Ð!Ø˜1ÑˆKˆKÝ-¨c°9Ñ=Ô=Ð=ˆbÐJà×Ò˜RÑ Ô Ð Ø˜2œ7Ñ"ˆKˆKÝ�c‰]Œ]ð 	åð$ñ%ô %ð %ð
 ×Ò�RœZ¨™_œ_Ñ-Ô-Ð-Ø˜1ÑˆKˆKØ�YÒÐÝðEØðEð EØ*ðEð EØ8AðEð Eð Eñ
ô 
ð 	
ð  Ñ+µ°d±´¨}Ñ<€LØð UØÐØ×Ò˜\Ñ*Ô*Ð*Ð*à! * 9 *Ô-°Ñ<¸yÈÈÈÔ?TÑTˆIð €IØ€JØ€EØ€MØ€NØ€Kå˜IÑ&Ô&ð $ñ $‰ˆˆ3Øˆ;Ø×!Ò!¥# i¡.¤.Ñ1Ô1Ð1Ø×Ò˜QÑÔÐÐÝ˜�UÑ#Ô#ð  	Ø�LŠL˜ÑÔÐØ˜JÔ'ˆBÝ�E 3§;¢;¨r¡?¤?Ð3Ñ4Ô4ˆIØ×Ò˜YÑ'Ô'Ð'Ø˜!‰OˆJˆJÝ�s‰^Œ^ð 	Ø˜:Ô&ˆAØ�B˜#�M�M’M�M ’M�M�M�MÝ Ð!>¨3Ð!>Ð!>Ð!>Ñ?Ô?Ð?Ý  q¢ �c˜A‘g�g¨cÑ2Ô2ˆCØ�LŠL˜ÑÔÐØ×Ò˜zÑ*Ô*Ð*Ø˜!‰OˆJ‰JàŒYŒ^˜sÒ"Ð"Ø! C¤HÑ,ˆHØ" :¨hÐ#6Ô7ˆIØŒy˜IÒ%Ð%Ý ØR !ÐRÐR°	ÐRÐRÀsÄyÐRÐRñô ð ð �LŠL˜Ÿš™œÑ'Ô'Ð'Ø× Ò ¥ z°8Ñ!<Ô!<Ñ=Ô=Ð=Ø×Ò�u Z°Ñ:Ô:Ñ;Ô;Ð;Ø!ˆJ‰Jà˜:Ô&ˆAÝ˜S ! [Ñ1Ô1ˆCØ�LŠL˜ÑÔÐØ×Ò˜zÑ*Ô*Ð*Ø× Ò  Ñ,Ô,Ð,Ø˜!‰OˆJ‰JÝ
ˆ=ÑÔ˜AÒÐØ<Ð<Ð<Ð<¨mÐ<Ñ<Ô<ˆ
ð	"ÝÔ+¨ZÐ8ˆIˆIøÝð 	"ð 	"ð 	"Ø—X’XÐ=Ð=°*Ð=Ñ=Ô=Ñ=Ô=ˆFð4Ø+1ð4ð 4ˆCå˜S‘/”/Ð!ð		"øøøõ ˆ{ÑÔ ¨B¤°+¸a´.Ñ @À1Ñ DÒEÐEÝ˜Y™œ¨)Ñ3ˆIˆIà! !”nˆGØ! ( 7 (Ô+­d°9©o¬oÑ=À	È'È(È(Ô@SÑSˆIˆIÝ	ˆ]Ñ	Ô	˜qÒ	 Ð	 Ø˜-¨Ô*Ô+Ô1ˆ	Ø˜a”.ˆØ˜h˜w˜hÔ'­$¨y©/¬/Ñ9¸IÀgÀhÀhÔ<OÑOˆ	Ý�‰<Œ<�˜yÑ)Ô)¨;¸ÐFÐFs   ÑQ Ñ>Rc                 óZ  — 	 t          j        | ¦  «        }n/# t          t          t          f$ r}t          d¦  «        |‚d}~ww xY w|dk    r	|j        dvs|dk    r"|j        dk    rt          d|j        › �¦  «        ‚|dk    r|S |j        dk    r|S |                     ¦   «         }||k    rt          d|› d	�¦  «        ‚| 	                    ¦   «         }|dk     rR|| k     rt          d|› d	�¦  «        ‚|| u s|j
        j        s|                     ¦   «         }||dk     xx         |z  cc<   |S )
z‹Convert `idx` to a valid index for an axis with a given length.

    Subclasses that need special validation can override this method.
    zinvalid indexNÚcoo)r   r   r   z$Index dimension must be 1 or 2. Got r   rb   rc   )r   rI   rJ   Ú	TypeErrorÚMemoryErrorr"   r/   r8   ÚmaxÚminr   Úowndatar2   )rB   Úlengthr    r¥   ÚeÚmax_indxÚmin_indxs          r   r›   r›   ³  s^  € ð
1ÝŒZ˜‰_Œ_ˆˆøÝ�	¥;Ð/ð 1ð 1ð 1Ý˜Ñ)Ô)¨qÐ0øøøøð1øøøð �‚€˜2œ7¨&Ð0Ð0°F¸e²O°OÈÌÐSTÊÈÝÐIÀÄÐIÐIÑJÔJÐJð �‚€Øˆ	à	„w�!‚|€|Øˆ	ð �vŠv‰xŒx€HØ�6ÒÐÝÐ; 8Ð;Ð;Ð;Ñ<Ô<Ð<à�vŠv‰xŒx€HØ�!‚|€|Ø�v�gÒÐÝÐ? xÐ?Ð?Ð?Ñ@Ô@Ð@Ø�ˆ9ˆ9˜BœHÔ,ˆ9Ø—’‘”ˆBØ
ˆ2�Š6ˆ
ˆ
Œ
�fÑˆ
ˆ
‰
Ø€Is   ‚ —A®>¾Ac                 ób  — t          | d¦  «        sŒ	 t          t          | ¦  «        d¦  «        }t          |¦  «        D ]6}t	          |t
          ¦  «        r n t          t          |¦  «        d¦  «        }Œ7dS n# t          $ r Y dS w xY wt          j        | ¦  «        } | j	        j
        dk    r| S dS )zICheck for boolean array or array-like. peek before asarray for array-liker/   NrŠ   )ÚhasattrÚnextÚiterrM   r#   Úboolr¶   r   Ú
asanyarrayr   r™   )rB   Údesired_ndimr¥   rA   s       r   r—   r—   Ö  sÍ   € õ �3˜ÑÔð !ð		Ý•d˜3‘i”i Ñ&Ô&ˆBÝ˜<Ñ(Ô(ð ð �Ý˜b¥$Ñ'Ô'ð Ø�EÝ�$˜r™(œ( DÑ)Ô)��à�tð øõ ð 	ð 	ð 	Ø�4�4ð	øøøõ Œm˜CÑ Ô ˆà
„y„~˜ÒÐØˆ
Øˆ4s   ’A#A8 Á8
BÂB)r‡   Únumpyr   Ú_sputilsr   Ú_baser   r   rd   Úintegerr&   r   r   r   r›   r—   r   r   r   ú<module>rÊ      sÐ   ððð à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à�"”*Ð€	ðð ð ðN+ð N+ð N+ð N+ð N+ñ N+ô N+ð N+ðbFGð FGð FGðR ð  ð  ðFð ð ð ð r   