§
    OŠtj  ã                   ód   — d dl mZ d dlmZ d dlmZ d dlmZ d„ Z G d„ de¦  «        Z	d„ Z
d	„ Zd
S )é    )Ú
MatrixExpr)ÚBasic)ÚTuple)Úfloorc                 óÚ  — t          | t          ¦  «        r| j        | j        | j        f} t          | t
          t          t          f¦  «        s| dk     dk    r| |z  } | | dz   df} t          | ¦  «        } t          | ¦  «        dk    r|  	                    d¦  «         | \  }}}|pd}|€|}|dk     dk    r||z  }|dk     dk    r||z  }|pd}||z
  |z  dk     dk    rt          ¦   «         ‚|||fS )Nr   Té   é   )Ú
isinstanceÚsliceÚstartÚstopÚstepÚtupleÚlistr   ÚlenÚappendÚ
IndexError)ÚiÚ
parentsizer   r   r   s        ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/matrices/expressions/slice.pyÚ	normalizer      s  € Ý�!•UÑÔð &ØŒW�a”f˜aœfÐ%ˆÝ�a�%¥¥uÐ-Ñ.Ô.ð Ø�ŠE�dŠ?ˆ?Ø�‰OˆAØ��!‘�QˆKˆÝˆQ‰Œ€AÝ
ˆ1�v„v�‚{€{Ø	�Š�‰ŒˆØÑ€Eˆ4�ØˆJ�Q€EØ€|ØˆØ�Š	�dÒÐØ�ÑˆØˆqŠ�TÒÐØ�
ÑˆØˆ9�1€Dà	�‰˜Ñ Ò! dÒ*Ð*Ý‰lŒlÐà�4˜ÐÐó    c                   ó’   — e Zd ZdZ ed„ ¦  «        Z ed„ ¦  «        Z ed„ ¦  «        Zd„ Zed„ ¦   «         Z	d„ Z
ed„ ¦   «         Zd	S )
ÚMatrixSlicea‡   A MatrixSlice of a Matrix Expression

    Examples
    ========

    >>> from sympy import MatrixSlice, ImmutableMatrix
    >>> M = ImmutableMatrix(4, 4, range(16))
    >>> M
    Matrix([
    [ 0,  1,  2,  3],
    [ 4,  5,  6,  7],
    [ 8,  9, 10, 11],
    [12, 13, 14, 15]])

    >>> B = MatrixSlice(M, (0, 2), (2, 4))
    >>> ImmutableMatrix(B)
    Matrix([
    [2, 3],
    [6, 7]])
    c                 ó   — | j         d         S )Nr   ©Úargs©Úselfs    r   ú<lambda>zMatrixSlice.<lambda>4   s   €  4¤9¨Q¤<€ r   c                 ó   — | j         d         S )Nr   r   r   s    r   r    zMatrixSlice.<lambda>5   ó   €  T¤Y¨q¤\€ r   c                 ó   — | j         d         S )Nr	   r   r   s    r   r    zMatrixSlice.<lambda>6   r"   r   c                 ó:  — t          ||j        d         ¦  «        }t          ||j        d         ¦  «        }t          |¦  «        t          |¦  «        cxk    rdk    sn t          ¦   «         ‚d|d         k    dk    sF|j        d         |d         k     dk    s+d|d         k    dk    s|j        d         |d         k     dk    rt          ¦   «         ‚t	          |t
          ¦  «        rt          |||¦  «        S t          j        | |t          |Ž t          |Ž ¦  «        S )Nr   r   é   T)
r   Úshaper   r   r
   r   Úmat_slice_of_slicer   Ú__new__r   )ÚclsÚparentÚrowsliceÚcolslices       r   r(   zMatrixSlice.__new__8   s
  € Ý˜X v¤|°A¤Ñ7Ô7ˆÝ˜X v¤|°A¤Ñ7Ô7ˆÝ�H‘”¥ X¡¤Ð3Ð3Ò3Ð3°!Ò3Ð3Ð3Ð3Ý‘,”,ÐØ�˜!”Š_ Ò%Ð%ØŒ\˜!Œ_˜x¨œ{Ò*¨tÒ3Ð3Ø�˜!”Š_ Ò%Ð%ØŒ\˜!Œ_˜x¨œ{Ò*¨tÒ3Ð3Ý‘,”,ÐÝ�f�kÑ*Ô*ð 	BÝ% f¨h¸ÑAÔAÐAÝŒ}˜S &­%°Ð*:½EÀ8Ð<LÑMÔMÐMr   c                 ó6  — | j         d         | j         d         z
  }| j         d         dk    r|nt          || j         d         z  ¦  «        }| j        d         | j        d         z
  }| j        d         dk    r|nt          || j        d         z  ¦  «        }||fS )Nr   r   r	   )r+   r   r,   )r   ÚrowsÚcolss      r   r&   zMatrixSlice.shapeF   s˜   € àŒ}˜QÔ $¤-°Ô"2Ñ2ˆØ”} QÔ'¨1Ò,Ð,ˆtˆtµ%¸¸T¼]È1Ô=MÑ8MÑ2NÔ2NˆØŒ}˜QÔ $¤-°Ô"2Ñ2ˆØ”} QÔ'¨1Ò,Ð,ˆtˆtµ%¸¸T¼]È1Ô=MÑ8MÑ2NÔ2NˆØ�TˆzÐr   c                 óš   —  | j         j        || j        d         z  | j        d         z   || j        d         z  | j        d         z   fi |¤ŽS )Nr	   r   )r*   Ú_entryr+   r,   )r   r   ÚjÚkwargss       r   r1   zMatrixSlice._entryN   s]   € Ø!ˆtŒ{Ô! ! D¤M°!Ô$4Ñ"4°t´}ÀQÔ7GÑ"GØ"# D¤M°!Ô$4Ñ"4°t´}ÀQÔ7GÑ"Gð,ð ,à$*ð,ð ,ð 	,r   c                 ó"   — | j         | j        k    S ©N)r+   r,   r   s    r   Úon_diagzMatrixSlice.on_diagS   s   € àŒ} ¤Ò-Ð-r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr*   r+   r,   r(   r&   r1   r6   © r   r   r   r      s°   € € € € € ðð ð( ˆXÐ/Ð/Ñ0Ô0€FØˆxÐ1Ð1Ñ2Ô2€HØˆxÐ1Ð1Ñ2Ô2€HðNð Nð Nð ðð ñ „Xðð,ð ,ð ,ð
 ð.ð .ñ „Xð.ð .ð .r   r   c                 óv   — | \  }}}|\  }}}|||z  z   }||z  }	|||z  z   }
|
|k    rt          ¦   «         ‚||
|	fS r5   )r   )ÚsÚtÚstart1Ústop1Ústep1Ústart2Ústop2Ústep2r   r   r   s              r   Úslice_of_slicerF   X   s_   € ØÑ€FˆE�5ØÑ€FˆE�5à�V˜E‘\Ñ!€EØ�5‰=€DØ�E˜%‘KÑ€Dàˆe‚|€|Ý‰lŒlÐà�$˜ÐÐr   c                 ó‚   — t          | j        |¦  «        }t          | j        |¦  «        }t          | j        ||¦  «        S )zË Collapse nested matrix slices

    >>> from sympy import MatrixSymbol
    >>> X = MatrixSymbol('X', 10, 10)
    >>> X[:, 1:5][5:8, :]
    X[5:8, 1:5]
    >>> X[1:9:2, 2:6][1:3, 2]
    X[3:7:2, 4:5]
    )rF   r+   r,   r   r*   )r*   r+   r,   ÚrowÚcols        r   r'   r'   f   s:   € õ ˜œ¨(Ñ
3Ô
3€CÝ
˜œ¨(Ñ
3Ô
3€CÝ�v”} c¨3Ñ/Ô/Ð/r   N)Ú"sympy.matrices.expressions.matexprr   Úsympy.core.basicr   Úsympy.core.containersr   Ú#sympy.functions.elementary.integersr   r   r   rF   r'   r<   r   r   ú<module>rN      s¯   ðØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø "Ð "Ð "Ð "Ð "Ð "Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð26.ð 6.ð 6.ð 6.ð 6.�*ñ 6.ô 6.ð 6.ðrð ð ð0ð 0ð 0ð 0ð 0r   