Ë
    üÇ:j7ü ã            
       ó1  — d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	Z
ddlmZmZ ddlmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZ ddlmZm Z m!Z! dd	l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- dd
l.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m>Z>m?Z? ddl@mAZAmBZB ddl2mCZC ddlDmEZFmGZHmIZImJZJmKZK d„ ZLd„ ZMd„ ZNd„ ZOd„ ZPd„ ZQd„ ZRd„ ZSd„ ZT	 �dYd„ZUd„ ZVd„ ZW e4eW«      d„ «       ZXd „ ZY e4eY«      d!„ «       ZZ e#d"ej¶                  «      d#„ «       Z\d$„ Z] e#d%ej¼                  «       e)e-j¾                  «      d&„ «       «       Z`	 �dYd'„Zad(„ Zbd)„ Zc e#ejÈ                  ej¶                  ejÊ                  «       e#ejÈ                  ej¶                  ejÌ                  «       e#ejÈ                  ej¶                  ejÎ                  «      d*„ «       «       «       Zh e#ejÈ                  ej¶                  ejÒ                  «      d+„ «       Zj e#ejÖ                  ej¶                  ejØ                  ejØ                  «      d,„ «       Zm e#enej¶                  «      d-„ «       Zo e#d.ejà                  «      d/„ «       Zqe!d0k  r$ e#d1ejà                  ejØ                  «      d2„ «       Zr G d3„ d4es«      Zt G d5„ d6et«      Zu G d7„ d8et«      Zv G d9„ d:et«      Zw G d;„ d<et«      Zx G d=„ d>et«      Zy G d?„ d@es«      ZzdA„ Z{ e#ejÈ                  ej¶                  ejà                  «      dB„ «       Z|dC„ Z}dD„ Z~dE„ ZdF„ Z€dG„ Z�dH„ Z‚dI„ ZƒdJ„ Z„e6dK„ «       Z…e6dL„ «       Z†e3dM„ «       Z‡dN„ Zˆ e4e
�j                  «      dO„ «       ZŠe3dP„ «       Z‹ e4e
�j                  «      dQ„ «       Z� e4e
�j                  «      dR„ «       Z�dS„ Z� e4e�dT¬U«      dV„ «       Z‘ e4e�dW¬U«      dX„ «       Z’dY„ Z“dZ„ Z” e#d[ejà                  «      d\„ «       Z•d]„ Z– e#d[ejà                  ejÒ                  «      d^„ «       Z— e#d[ejà                   e�j0                  ejØ                  «      «      d_„ «       Z™ e4e
�j4                  «      �dYd`„«       Z› e$ejà                  da«      db„ «       Zœ e4e
�j:                  «      �dZdc„«       Zž e4e
�j>                  «      �dZdd„«       Z  e4e
�jB                  «      �d[de„«       Z¢df„ Z£dg„ Z¤ e#dhejà                  ejÒ                  «      di„ «       Z¥ e#dhejà                   e�j0                  ejØ                  «      «      dj„ «       Z¦e!dkk  r e4e
�jN                  «      dl„ «       Z¨n e4e
�jN                  «      dm„ «       Z¨ e4e
�jR                  «      dn„ «       Zª e4e
�jV                  «      �dYdo„«       Z¬ e#dpejà                  «      dq„ «       Z­ e#e
�j\                  ejà                  «      dr„ «       Z¯ e#dsejà                  «      dt„ «       Z°e3du„ «       Z±e3dv„ «       Z² e4e
�jf                  «      �dYdw„«       Z´ e5ejà                  dx«      �d\dy„«       Zµdz„ Z¶ e4e
�jn                  «      d{„ «       Z¸ e4e
�jr                  «      d|„ «       Zº e4e
�jv                  «      d}„ «       Z¼ e4e
�jz                  «      d~„ «       Z¾e3d„ «       Z¿ ejj                  ejà                  d€«      d�„ «       ZÀe6d‚„ «       ZÁdƒ„ ZÂ e4eÂdT¬U«      d„„ «       ZÃ e#d…ejà                  e�jˆ                  «      d†„ «       ZÅ e$ejà                  d‡«      dˆ„ «       ZÆ e$ejà                  d‰«       e$e�jŽ                  d‰«      dŠ„ «       «       ZÈ e$ejà                  d‹«       e$e�jŽ                  d‹«      dŒ„ «       «       ZÉ e$ejà                  d�«       e$e�jŽ                  d�«      dŽ„ «       «       ZÊ e$ejà                  d�«      d�„ «       ZË e$ejà                  d‘«       e$e�jŽ                  d‘«      d’„ «       «       ZÌ e$ejà                  d“«       e$e�jŽ                  d“«      d”„ «       «       ZÍ e$e�jŽ                  d•«      d–„ «       ZÎ e$e�jŽ                  d—«      d˜„ «       ZÏ e$e�jŽ                  d™«      dš„ «       ZÐ e$e�jŽ                  d›«      dœ„ «       ZÑ e$ejà                  d�«      dž„ «       ZÒ e$e�j¦                  dŸ«      d „ «       ZÔ e'e�j¦                  e�jª                  «       e'e�j¦                  e�j¬                  «      d¡„ «       «       Z×d¢„ ZØ e$ejà                  d£«      d¤„ «       ZÙ e$e�j´                  d•«       e$e�j´                  d—«      d¥„ «       «       ZÛ e$e�j´                  d™«      d¦„ «       ZÜ e$ejà                  d§«      d¨„ «       ZÝ e$ejà                  d©«      dª„ «       ZÞd«„ Zß e5ejà                  d¬«       e5ejà                  d­«      d®„ «       «       Zàd¯„ Zá  e$e�jÄ                  d°«      eá«         e$e�jÄ                  d±«      eá«        e#d²e�jÆ                  ejØ                  «      d³„ «       Zä e%ejà                  «      d´„ «       Zå e#d²ejà                  ejb                  «      dµ„ «       Zæ e%e�jÎ                  «      d¶„ «       Zè e&e�jÎ                  «      d·„ «       Zé e#d²e�jÎ                  ejb                  «      d¸„ «       Zê e#d²e�jÎ                  e�jÖ                  «      d¹„ «       Zì e#dºe�jÎ                  ejb                  ejØ                  «      d»„ «       Zí e#dºe�jÎ                  e�jÖ                  ejØ                  «      d¼„ «       Zî e(ejà                  «      d½„ «       Zï e(e�jÎ                  «      d¾„ «       Zð e(e�jâ                  «      d¿„ «       Zò e#e�jæ                  ejà                  ejà                  «      dÀ„ «       Zô e7ejà                  dÁ«      dÂ„ «       ZõdÃ„ ZödÄ„ Z÷	 	 �d\dÅ„Zø	 �dYdÆ„ZùdÇ„ ZúdÈ„ ZûdÉ„ Zü e$ejà                  dÊ«      dË„ «       Zý e#d%e�jü                  «       e)e-j¾                  «      dÌ„ «       «       Zÿ e#ejÈ                  e�jü                  ejÊ                  «      dÍ„ «       �Z  e#ejÖ                  e�jü                  ejÊ                  ejØ                  «      dÎ„ «       �Z e#ene�jü                  «      dÏ„ «       �Z e#e
�j                  ejà                  «      dÐ„ «       �Z e#d%e�j
                  «       e)e-j¾                  «      dÑ„ «       «       �Z e#e e�j0                  ejÊ                  «      «       e#e
�j                   e�j0                  ejÊ                  «      «      dÒ„ «       «       �Z e#eejÒ                  «       e#e
�j                  ejÒ                  «      dÓ„ «       «       �Z	 e#d%e�j                  «       e)e-j¾                  «      dÔ„ «       «       �Z e#e
�j                  ejØ                  «      dÕ„ «       �Z e#d%e�j                  «       e)e-j¾                  «      dÖ„ «       «       �Z e#e�j                   e�jÄ                  e�jÄ                  «      d×„ «       �ZdØ„ �Z eCejà                  dÙdW¬U«      dÚ„ «       �ZdÛ„ �Ze6dÜ„ «       �ZdÝ„ �ZdÞ„ �Zdß„ �Zdà„ �Ze6dá„ «       �Z e4e
�j6                  «      �efdâ„«       �Ze6dã„ «       �Z e4e
�j>                  «      �dYdä„«       �Z e6då„ «       �Z! e5ejà                  dæ«      dç„ «       �Z" e4e
�jF                  «      �efdè„«       �Z$ e4e
�jJ                  «      �dYdé„«       �Z& e4e
�jN                  «      �dYdê„«       �Z( e4e
�jR                  «      �dYdë„«       �Z* e4e
�jV                  «      �dYdì„«       �Z, e4e
�jZ                  «      �dYdí„«       �Z. e4e
�j^                  «      �dYdî„«       �Z0dï„ �Z1 ejh                  �e1«      dð„ «       �Z2 ejh                  e
�jf                  «      dd�efdñ„«       �Z4 e4e
�jj                  «      �d]dò„«       �Z6 e4e
�jn                  «      dó„ «       �Z8 e4e
�jr                  «      �d]dô„«       �Z:dõ„ �Z; e4e
�jx                  «       e5ejà                  dö«      �dYd÷„«       «       �Z=dø„ �Z> e4e
�j~                  «      �d\dù„«       �Z@ e4e
�j‚                  «      �dZdú„«       �ZBdû„ �ZCe6dü„ «       �ZD e#dýejà                  «      dþ„ «       �ZE e4e
�jŒ                  «      dÿ„ «       �ZG�d „ �ZHe6�d„ «       �ZI e4e
�j”                  «      �d„ «       �ZK e4e
�j˜                  «      �d„ «       �ZM e#�dejà                  e�jˆ                  «       e#�dejà                  ejb                  «      �d„ «       «       �ZNe6�d„ «       �ZO e5ejà                  �d«      �d„ «       �ZPe6�d	„ «       �ZQ e4e
�j¤                  «      �e�d
df�d„«       �ZS e4e«      �dY�d„«       �ZT e4e«      �dY�d„«       �ZU�d„ �ZV�d„ �ZW�d„ �ZX�d„ �ZY�d„ �ZZ�d„ �Z[�d„ �Z\�d„ �Z]e6�d„ «       �Z^ e4e
�j¾                  «      �dY�d„«       �Z`�d„ �Za�d„ �Zb�d„ �Zc�d„ �Zde6�d„ «       �Ze e4e
�jÈ                  «      �d„ «       �Zf�d„ �Zg�d„ �Zh e4e
�jÒ                  «      �d „ «       �Zj e4e
�jÖ                  «      �d!„ «       �Zl e4e
�jÚ                  «      �d"„ «       �Zn�d#„ �Zo�d$„ �Zp�d%„ �Zq�d&„ �Zre6�d'„ «       �Zs e4e
�jè                  «      �d]�d(„«       �Zu�d)„ �Zve6�d*„ «       �Zw e4e
�jð                  «      �d+„ «       �Zy�d,„ �Zze6�d-„ «       �Z{ e4e
�jø                  «      �d]�d.„«       �Z}�d/„ �Z~e6�d0„ «       �Z e4e
�j                   «      �d1„ «       �Z�e6�d2„ «       �Z‚ e4e
�j                  «      �d3„ «       �Z„e!d0k\  r  e4e
�j
                  «      �e„«       e6�d4„ «       �Z† e4e
�j                  «      �d5„ «       �Zˆ ejj                  ejà                  �d6«      �d7„ «       �Z‰ ejj                  ejà                  �d8«      �d9„ «       �ZŠ e4e
�j                  «      �d:„ «       �ZŒ e4e
�j                  «      �d;„ «       �ZŽe6�d<„ «       �Z� e4e
�j                   «      �d=„ «       �Z‘ e4e
�j$                  «      �d]�d>„«       �Z“ e4e
�j(                  «      �d]�d?„«       �Z• e4e
�j,                  «      �d@„ «       �Z— e4e
�j0                  «      �dA„ «       �Z™ e4e
�j4                  «      �dB„ «       �Z›i �Zœ�dC„ �Z��d^�dD„�Zž�dE„ �ZŸ e#�dFejà                  «      �dG„ «       �Z  e4e
�jB                  «      �dH„ «       �Z¢ e#�dIejà                  ejb                  «       e#e
�jF                  ejà                  ejb                  «      �dJ„ «       «       �Z¤ e'ejà                  ejà                  «      �dK„ «       �Z¥ e'ejà                  e�jL                  «       e'ejà                  e�jN                  «       e'ejà                  ejÊ                  «       e'ejà                  e�jP                  «       e'ejà                  e�jR                  «       e'ejà                  e�jT                  «       e'ejà                  e�jV                  «      �dL„ «       «       «       «       «       «       «       �Z¬ e'ejà                  e�jL                  «      �dM„ «       �Z­�dN„ �Z® e�j^                  �e®«      �dO„ «       �Z° e#�e®ejà                  ejÒ                  ejÒ                  «      �dP„ «       �Z± ejh                  e
�jd                  �jf                  �jh                  «      �d_�dQ„«       �Z´ ejh                  e
�jd                  �jf                  �jj                  «      �dY�dR„«       �Zµ e4�e¶«      �dS„ «       �Z· e4e
�jp                  «      �dT„ «       �Z¹ e4e
�jt                  «      �dU„ «       �Z»e3�dV„ «       �Z¼ e4e
�jz                  «      �dW„ «       �Z¾ e4e
�j~                  «      �d`�dX„«       �ZÀy(a  z[
Implementation of operations on Array objects and objects supporting
the buffer protocol.
é    N)Úir)ÚConstant)ÚpndindexÚliteral_unroll)ÚtypesÚtypingÚerrorsÚcgutilsÚ	extending)
Úas_dtypeÚ
from_dtypeÚcarrayÚfarrayÚis_contiguousÚ
is_fortranÚcheck_is_integerÚtype_is_scalarÚ
lt_complexÚ	lt_floats)Útype_can_asarrayÚis_nonelikeÚnumpy_version)Úlower_builtinÚlower_getattrÚlower_getattr_genericÚlower_setattr_genericÚ
lower_castÚlower_constantÚiternext_implÚimpl_ret_borrowedÚimpl_ret_new_refÚimpl_ret_untrackedÚRefType)Ú	signature)ÚStringLiteral)Úregister_jitableÚoverloadÚoverload_methodÚ	intrinsicÚoverload_attribute)Ú	quicksortÚ	mergesort)Úslicing)Ú_make_constant_bytesÚ
bytes_type)Útuple_setitemÚbuild_full_slice_tuple)Úoverload_classmethod)Úparse_dtypeÚparse_shapeÚ_parse_nested_sequenceÚ_sequence_of_arraysÚ_choose_concatenation_layoutc                 ó¶   — t        |j                  |«      t        |j                  |«      g}| j                  j                  |«      }|j	                  d|«       y)zz
    Set the "range" metadata on a load instruction.
    Note the interval is in the form [lower_bound, upper_bound).
    ÚrangeN)r   ÚtypeÚmoduleÚadd_metadataÚset_metadata)ÚbuilderÚloadÚlower_boundÚupper_boundÚrange_operandsÚmds         úf/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/numba/np/arrayobj.pyÚset_range_metadatarE   .   sK   € ô
 ˜tŸy™y¨+Ó6Ü˜tŸy™y¨+Ó6ð8€Nà	�‰×	$Ñ	$ ^Ó	4€BØ×Ñ�g˜rÕ"ó    c                 ó^   — d|j                   j                  dz
  z  dz
  }t        | |d|«       y)zF
    Mark the result of a load instruction as positive (or zero).
    é   r   N)r:   ÚwidthrE   )r>   r?   rA   s      rD   Úmark_positiverJ   9   s.   € ð ˜Ÿ™Ÿ™¨1Ñ,Ñ-°Ñ2€KÜ�w  a¨Õ5rF   c                 óŒ   ‡ ‡‡‡‡— ‰ j                   Št        j                  ‰«      Š‰j                  Š G ˆˆ ˆˆˆfd„d‰«      Š‰S )zë
    Return the Structure representation of the given *array_type*
    (an instance of types.ArrayCompatible).

    Note this does not call __array_wrap__ in case a new array structure
    is being created (rather than populated).
    c                   ó<   •‡ — e Zd Zˆˆ ˆˆfd„Zeˆˆfd„«       Zˆ xZS )úmake_array.<locals>.ArrayStructc                 ód  •— t        ‰
‰	«      }	 | j                  j                  d|«      }| j                  j                  ‰	   }| j                  |«      }|€#t        j                  | j                  |d¬«      }n|} || j                  |f«      }||fS # t        $ r t        ‰| �  |«      cY S w xY w)NÚ	__array__T)Úzfill)r$   Ú_contextÚget_functionÚNotImplementedErrorÚsuperÚ
_make_refsÚdata_model_managerÚ_get_be_typer
   Úalloca_onceÚ_builder)ÚselfÚrefÚsigÚ
array_implÚ	datamodelÚbe_typeÚ	outer_refÚArrayStructÚ	__class__Ú
array_typeÚreal_array_types          €€€€rD   rU   z*make_array.<locals>.ArrayStruct._make_refsO   s»   ø€ Ü˜O¨ZÓ8ˆCð@Ø!Ÿ]™]×7Ñ7¸ÀSÓI�
ð
 Ÿ™×8Ñ8¸ÑDˆIØ×'Ñ'¨	Ó2ˆGØˆ{Ü#×/Ñ/°·±¸wØ6:ô<‘	ð  �	ñ ˜TŸ]™]¨Y¨LÓ9ˆCØ˜c�>Ð!øô 'ò @Ü˜[¨$Ñ:¸3Ó?Ò?ð@ús   �B ÂB/Â.B/c                 óH  •— | j                   }‰dk(  r‰j                  | d«      S | j                  d«      }g }t        ‰«      D ]H  }t	        j
                  ||d|«      }|j                  |«      }|j                  |«       t        ||«       ŒJ t	        j                  ||«      S )z\
            Override .shape to inform LLVM that its elements are all positive.
            r   Úshape)
rY   Ú__getattr__Ú_get_ptr_by_namer9   r
   Úgep_inboundsr?   ÚappendrJ   Ú
pack_array)	rZ   r>   ÚptrÚdimsÚiÚdimptrr?   ÚbaseÚndims	          €€rD   rf   z%make_array.<locals>.ArrayStruct.shapec   s¡   ø€ ð
 —m‘mˆGØ�qŠyØ×'Ñ'¨¨gÓ6Ð6ð ×'Ñ'¨Ó0ˆCØˆDÜ˜4“[ò -�Ü ×-Ñ-¨g°s¸A¸qÓA�Ø—|‘| FÓ+�Ø—‘˜DÔ!Ü˜g tÕ,ð	-ô ×%Ñ% g¨tÓ4Ð4rF   )Ú__name__Ú
__module__Ú__qualname__rU   Úpropertyrf   Ú__classcell__)rb   ra   rc   rp   rq   rd   s   @€€€€€rD   ra   rM   M   s   ù„ ÷	"ð( 
ô	5ó 
ô	5rF   ra   )Úas_arrayr
   Úcreate_struct_proxyrq   )rc   ra   rp   rq   rd   s   `@@@@rD   Ú
make_arrayry   A   sE   ü€ ð !×)Ñ)€OÜ×&Ñ& Ó7€DØ×Ñ€D÷+5ò +5�dô +5ðZ ÐrF   c                 óZ   — | j                  |j                  «      }| j                  |«      S )zB
    Return the item size for the given array or buffer type.
    )Úget_data_typeÚdtypeÚget_abi_sizeof)Úcontextrc   Úlltys      rD   Úget_itemsizer€   }   s+   € ð × Ñ  ×!1Ñ!1Ó2€DØ×!Ñ! $Ó'Ð'rF   c                 ó`   — |j                   rdnd}| j                  ||j                  ||¬«      S )z3
    Load the item at the given array pointer.
    NrH   ©Úalign)ÚalignedÚunpack_valuer|   )r~   r>   Úarraytyrl   rƒ   s        rD   Ú	load_itemr‡   …   s6   € ð —O’O‰D¨€EØ×Ñ ¨¯©¸Ø&+ð  ó -ð -rF   c                 ób   — |j                   rdnd}| j                  ||j                  |||¬«      S )z4
    Store the item at the given array pointer.
    NrH   r‚   )r„   Ú
pack_valuer|   )r~   r>   r†   Úvalrl   rƒ   s         rD   Ú
store_itemr‹   Ž   s1   € ð —O’O‰D¨€EØ×Ñ˜g w§}¡}°c¸3ÀeÐÓLÐLrF   c                 óØ   — |j                   r;| j                  |||t        j                  «      }t	        j
                  |||«      }|S | j                  |||t        j                  «      }|S )zM
    Fix the integer index' type and value for the given dimension size.
    )ÚsignedÚcastr   Úintpr-   Ú	fix_indexÚuintp)r~   r>   ÚidxtyÚidxÚsizeÚinds         rD   Úfix_integer_indexr–   –   s]   € ð ‡|‚|Ø�l‰l˜7 C¨´·
±
Ó;ˆÜ×Ñ ¨¨dÓ3ˆð €Jð �l‰l˜7 C¨´·±Ó<ˆØ€JrF   c                 ó  — t        |t        j                  «      rn|j                  dk(  r_t        |j                  t        j
                  «      sJ ‚ t        |«      | ||«      }t        | |||j                  «      }|j                  |fS ||fS )zS
    Normalize the index type and value.  0-d arrays are converted to scalars.
    r   )	Ú
isinstancer   ÚArrayrq   r|   ÚIntegerry   r‡   Údata)r~   r>   r’   r“   ÚidxaryÚidxvals         rD   Únormalize_indexrž   ¢   sv   € ô �%œŸ™Ô%¨%¯*©*¸ª/Ü˜%Ÿ+™+¤u§}¡}Ô5Ð5Ð5Ø"”˜EÓ" 7¨G°SÓ9ˆÜ˜7 G¨U°F·K±KÓ@ˆØ�{‰{˜FÐ"Ð"à�cˆzÐrF   c                 ó”   — t        |«      r4t        t        ||«      D ��cg c]  \  }}t        | |||«      ‘Œ c}}Ž \  }}||fS c c}}w )z^
    Same as normalize_index(), but operating on sequences of
    index types and values.
    )ÚlenÚziprž   )r~   r>   Úindex_typesÚindicesr’   r“   s         rD   Únormalize_indicesr¤   ¯   s[   € ô
 ˆ7„|Ü"ä7:¸;ÈÓ7P÷%'á)3¨°ô &5°W¸gÀuØ58õ&:ó %'ð  (Ñˆ�Wð ˜ÐÐùó	%'s    A
c                 ó"  — | j                   }| j                  }| j                  }	t        j                  t        j
                  dd«      }
|j                  |
   }t        |j                  «      }t        |	j                  «      }||z  |k7  r6||z
  }d| j                  › dt        |«      dkD  rdnd› d|› d�}t        |«      ‚|€*t        |j                  |	j                  d
«      «      d	«      }|j                  t        j                  «      }t!        |t"        t$        f«      rt'        j(                  |||«      }t!        |t"        t$        f«      rt'        j(                  |||«      }t!        |t*        «      r ||«      }t-        |||||¬«      }|€.t        |j                  |	j                  d«      «      d	«      |d<   n||d<   |j/                  t        j                  d«      }t'        j0                  |||j2                  j4                  «      }|D ]  }|j7                  ||dg¬«      }Œ ||d<   t        |j9                  «       «      }||k7  rt        dj;                  ||z
  «      «      ‚|j=                  «       D ]  \  }}t?        | ||«       Œ | S )z¤
    Helper function for populating array structures.
    This avoids forgetting to set fields.

    *shape* and *strides* can be Python tuples or LLVM arrays.
    rH   ÚCzThe datamodel for type z is missing fieldÚsÚ ú ú.NÚmeminfo)rf   Ústridesr›   Úitemsizer«   ÚparentÚnsw©ÚflagsÚnitemszmissing {0}) rQ   rY   Ú
_datamodelr   r™   Úfloat64rV   ÚsetÚ_fieldsÚ_fe_typer    Ú
ValueErrorr   Úget_value_typeÚget_typer�   r˜   ÚtupleÚlistr
   rk   ÚintÚdictÚget_constantÚunpack_tupler:   ÚcountÚmulÚkeysÚformatÚitemsÚsetattr)Úarrayr›   rf   r¬   r­   r«   r®   r~   r>   r^   Ústandard_arrayÚstandard_array_type_datamodelÚrequired_fieldsÚdatamodel_fieldsÚmissingÚmsgÚintp_tÚattrsr²   Úunpacked_shapeÚaxlenÚ
got_fieldsÚkÚvs                           rD   Úpopulate_arrayrÕ   ¼   s{  € ð �n‰n€GØ�n‰n€GØ× Ñ €Iô —[‘[¤§¡°°3Ó7€NØ$+×$>Ñ$>¸~Ñ$NÐ!ÜÐ7×?Ñ?Ó@€OÜ˜9×,Ñ,Ó-Ðð 	Ð*Ñ*¨Ò>Ø!Ð$4Ñ4ˆØ(¨¯©Ð(8ð 9Ü! '›l¨QÒ.‘s°BÐ7°q¸¸	ÀðDˆä˜‹oÐà€Ü˜7×1Ñ1Ø×Ñ˜yÓ)ó+Ø,0ó2ˆð ×#Ñ#¤E§J¡JÓ/€FÜ�%œ%¤˜Ô'Ü×"Ñ" 7¨E°6Ó:ˆÜ�'œE¤4˜=Ô)Ü×$Ñ$ W¨g°vÓ>ˆÜ�(œCÔ Ù˜(Ó#ˆä�uØ ØØ"Ø ô	#€Eð €~Ü" 7×#9Ñ#9Ø×Ñ˜xÓ(ó$*Ø+/ó1ˆˆhŠð !ˆˆh‰à×!Ñ!¤%§*¡*¨aÓ0€FÜ×)Ñ)¨'°5¸%¿*¹*×:JÑ:JÓK€Nàò ;ˆØ—‘˜V U°5°'�Ó:‰ð;à€Eˆ(�Oô �U—Z‘Z“\Ó"€JØ�_Ò$Ü˜×-Ñ-¨oÀ
Ñ.JÓKÓLÐLð —‘“ò ‰ˆˆ1Ü��q˜!Õðð €LrF   c                 ón  — |j                   }|j                  }|j                  t        j                  d«      }t        j                  ||j                  | j                  «      }|D ]  }|j                  ||dg¬«      }Œ ||_
        |j                  t        j                  t        || «      «      |_        y)z‡
    Update some auxiliary information in *array* after some of its fields
    were changed.  `itemsize` and `nitems` are updated.
    rH   r¯   r°   N)rQ   rY   r¿   r   r�   r
   rÀ   rf   rq   rÂ   r²   r€   r­   )ÚarytyrÇ   r~   r>   r²   rÐ   rÑ   s          rD   Úupdate_array_inforØ     s™   € ð
 �n‰n€GØ�n‰n€Gð ×!Ñ!¤%§*¡*¨aÓ0€FÜ×)Ñ)¨'°5·;±;ÀÇ
Á
ÓK€NØò ;ˆØ—‘˜V U°5°'�Ó:‰ð;à€E„Là×)Ñ)¬%¯*©*Ü*6°wÀÓ*FóH€E…NrF   c                 ó   — t        «       ‚)z/Constrain axis values to valid positive values.©rS   ©Ú	func_nameÚarg_namerq   Úaxiss       rD   Únormalize_axisrß     ó   € ä
Ó
ÐrF   c                 óÞ   ‡— t        | t        «      st        j                  d«      ‚t        |t        «      st        j                  d«      ‚| j                  › d|j                  › d�Šˆfd„}|S )Nú func_name must be a str literal.úarg_name must be a str literal.ú: Argument ú* out of bounds for dimensions of the arrayc                 óF   •— |dk  r||z  }|dk  s||k\  rt        ‰«      ‚|S ©Nr   ©r¸   )rÜ   rÝ   rq   rÞ   rÍ   s       €rD   Úimplz&normalize_axis_overloads.<locals>.impl%  s/   ø€ Ø�!Š8Ø�D‰LˆDØ�!Š8�t˜t’|Ü˜S“/Ð!àˆrF   )r˜   r%   r	   ÚTypingErrorÚliteral_value)rÜ   rÝ   rq   rÞ   ré   rÍ   s        @rD   Únormalize_axis_overloadsrì     sr   ø€ ä�i¤Ô/Ü× Ñ Ð!CÓDÐDÜ�h¤Ô.Ü× Ñ Ð!BÓCÐCð ×"Ñ"Ð
# ;¨x×/EÑ/EÐ.Fð G4ð 	4ð ô
ð €KrF   c                 ó   — t        «       ‚)zFNormalizes an axis argument into a tuple of non-negative integer axes.rÚ   rÛ   s       rD   Únormalize_axis_tuplerî   0  rà   rF   c                 ó„  ‡‡‡‡— t        | t        «      st        j                  d«      ‚t        |t        «      st        j                  d«      ‚| j                  › d|j                  › d�Š| j                  › d|j                  › d�Št        |t
        j                  «      rˆfd„}|S t        |«      Šd‰z  Šˆˆˆˆfd	„}|S )
Nrâ   rã   rä   rå   z: repeated axis in z	 argumentc                 óH   •— |dk  r||z  }|dk  s||k\  rt        ‰«      ‚|fS rç   rè   )rÜ   rÝ   rq   rÞ   Úinvalid_axis_msgs       €rD   ré   z,normalize_axis_tuple_overloads.<locals>.implH  s3   ø€ Ø�aŠxØ˜‘�Ø�aŠx˜4 4š<Ü Ð!1Ó2Ð2à�7ˆNrF   ©r   c                 óÎ   •— ‰	}t        |«      D ]1  \  }}|dk  r||z  }|dk  s||k\  rt        ‰«      ‚t        |||«      }Œ3 t        t	        |«      «      ‰k7  rt        ‰
«      ‚|S rç   )Ú	enumerater¸   r0   r    rµ   )rÜ   rÝ   rq   rÞ   Ú	norm_axisrn   ÚaxÚaxis_lenrñ   Únorm_axis_initÚrepeated_axis_msgs          €€€€rD   ré   z,normalize_axis_tuple_overloads.<locals>.implT  s{   ø€ Ø&ˆIÜ" 4›ò <‘��2Ø˜’6Ø˜$‘J�BØ˜’6˜R 4šZÜ$Ð%5Ó6Ð6Ü)¨)°Q¸Ó;‘	ð<ô ”3�y“>Ó" hÒ.Ü Ð!2Ó3Ð3àÐrF   )r˜   r%   r	   rê   rë   r   rš   r    )	rÜ   rÝ   rq   rÞ   ré   r÷   rñ   rø   rù   s	        @@@@rD   Únormalize_axis_tuple_overloadsrú   5  sË   û€ ä�i¤Ô/Ü× Ñ Ð!CÓDÐDÜ�h¤Ô.Ü× Ñ Ð!BÓCÐCð ×"Ñ"Ð
# ;¨x×/EÑ/EÐ.Fð G4ð 	4ð ð ×"Ñ"Ð
#Ð#6Ø×!Ñ!Ð
" )ð	-ð ô
 �$œŸ™Ô&ô	ð4 €Kô# �t“9ˆØ ™ˆ÷	ð €KrF   Úgetiterc                 óŒ  — |j                   \  }|\  }| j                  ||j                  «      }| j                  t        j
                  d«      }t        j                  ||«      }||_        ||_	        | j                  r| j                  j                  |||«       |j                  «       }	t        | ||j                  |	«      }
|
S rç   )ÚargsÚmake_helperÚreturn_typer¿   r   r�   r
   Úalloca_once_valueÚindexrÇ   Ú
enable_nrtÚnrtÚincrefÚ	_getvaluer!   )r~   r>   r\   rý   r†   rÇ   ÚiterobjÚzeroÚindexptrÚresÚouts              rD   Úgetiter_arrayr  e  sª   € à—‘�I€WØ�G€Uà×!Ñ! '¨3¯?©?Ó;€Gà×Ñ¤§
¡
¨AÓ.€DÜ×(Ñ(¨°$Ó7€Hà€G„MØ€G„Mð ×ÒØ�‰×Ñ˜7 G¨UÔ3à
×
Ñ
Ó
€Cô ˜7 G¨S¯_©_¸cÓ
B€CØ€JrF   c           
      óÎ  — t        j                  ||j                  |j                  ¬«      }t        j                  ||j                  |j                  ¬«      }|j                  |d   |«      }t        j                  ||j                  |«      }	|dd }
|dd }t        |t        j                  «      r"t        | |||||	|
|«      }|j                  «       S |
rJ ‚t        | |||	«      S )z1 Evaluate `ary[idx]`, where idx is a single int. ©rÁ   r   rH   N)r
   rÀ   rf   rq   r¬   rÂ   Úpointer_addr›   r˜   r   ÚBufferÚ	make_viewr  r‡   )r~   r>   rÿ   r×   Úaryr“   Úshapesr¬   ÚoffsetÚdataptrÚview_shapesÚview_stridesÚretarys                rD   Ú_getitem_array_single_intr  }  sÑ   € ô ×!Ñ! '¨3¯9©9¸E¿J¹JÔG€FÜ×"Ñ" 7¨C¯K©K¸u¿z¹zÔJ€GØ�[‰[˜ ™ SÓ)€FÜ×!Ñ! '¨3¯8©8°VÓ<€GØ˜˜�*€KØ˜1˜2�;€Lä�+œuŸ|™|Ô,ä˜7 G¨U°C¸Ø" K°ó?ˆà×ÑÓ!Ð!ñ ÐˆÜ˜ '¨5°'Ó:Ð:rF   Úiternextc           	      óp  — |j                   \  }|\  }|j                  }| j                  |||¬«      } t        |«      | ||j                  ¬«      }	t        j                  ||	j                  d¬«      \  }
|j                  |j                  «      }|j                  d||
«      }|j                  |«       |j                  |«      5  t        | ||j                  ||	|«      }|j                  |«       t        j                   ||«      }|j#                  ||j                  «       d d d «       y # 1 sw Y   y xY w)N©ÚvaluerH   r  ú<)rý   rc   rþ   ry   rÇ   r
   rÀ   rf   r?   r  Úicmp_signedÚ	set_validÚif_thenr  Ú
yield_typeÚyield_Úincrement_indexÚstore)r~   r>   r\   rý   ÚresultÚitertyÚiterr†   r  r  r²   r  Úis_validr  Únindexs                  rD   Úiternext_arrayr*  ’  s  € ð �x‰x�H€VØ�F€TØ×Ñ€Gà×!Ñ! '¨6¸Ð!Ó>€GØ
Œ*�WÓ
˜g w°g·m±mÔ
D€Cä×"Ñ" 7¨C¯I©I¸QÔ?�G€Fà�L‰L˜Ÿ™Ó'€EØ×"Ñ" 3¨¨vÓ6€HØ
×Ñ�XÔà	�‰˜Ó	"ñ -Ü)Ø�W˜f×/Ñ/°¸#¸uó
ˆð 	�‰�eÔÜ×(Ñ(¨°%Ó8ˆØ�‰�f˜gŸm™mÔ,÷-÷ -ñ -ús   ÃAD,Ä,D5c           	      ó˜  — | j                  t        j                  d«      }| j                  t        j                  d«      }t        j                  ||j
                  |j                  «      }	t        j                  ||j                  |j                  «      }
g }g }g }t        |D �cg c]  }t        |«      sŒ|‘Œ c}«      }d}t        ||«      D �]õ  \  }}|t        j                  u rm|j                  t        |«      z
  dz   |z   }t        |«      D ]@  }|j                  |«       |j                  |	|   «       |j                  |
|   «       |dz  }ŒB Œ†t        |t        j                  «      r´| j!                  |||¬«      }t#        j$                  | |||«       t#        j&                  |||	|   «       |j                  |j(                  «       t#        j*                  ||«      }t#        j,                  |||
|   «      }|j                  |«       |j                  |«       n�t        |t        j.                  «      rBt1        | ||||	|   «      }|rt        j2                  | |||	|   |«       |j                  |«       nAt        |«      r(|j                  |«       |j                  |«       |dz  }nt5        d|›�«      ‚|dz  }�Œø ||j                  k  sJ ‚||j                  k  r=|j                  |	|   «       |j                  |
|   «       |dz  }||j                  k  rŒ=t        j6                  | ||||dd¬«      }|||fS c c}w )z“
    Perform basic indexing on the given array.
    A (data pointer, shapes, strides) tuple is returned describing
    the corresponding view.
    r   rH   r  úunexpected index type: F©Ú
wraparoundÚboundscheck)r¿   r   r�   r
   rÀ   rf   rq   r¬   r    r   r¡   Úellipsisr9   rj   r˜   Ú	SliceTyperþ   r-   Úguard_invalid_sliceÚ	fix_sliceÚstartÚget_slice_lengthÚ
fix_striderš   r–   Údo_boundscheckrS   Úget_item_pointer)r~   r>   r×   r  r¢   r£   r/  r  Úoner  r¬   Úoutput_indicesÚoutput_shapesÚoutput_stridesr“   Únum_newaxesrö   Úindexvalr’   Ú	n_missingrn   ÚsliceÚshÚstr•   r  s                             rD   Úbasic_indexingrC  ®  sÿ  € ð ×Ñ¤§
¡
¨AÓ.€DØ
×
Ñ
œuŸz™z¨1Ó
-€Cä×!Ñ! '¨3¯9©9°e·j±jÓA€FÜ×"Ñ" 7¨C¯K©K¸¿¹ÓD€Gà€NØ€MØ€Nä kÖF˜s´[ÀÕ5E’sÒFÓG€KØ	
€BÜ˜w¨Ó4ó  ‰ˆ�%Ø”E—N‘NÑ"àŸ
™
¤S¨£\Ñ1°AÑ5¸ÑCˆIÜ˜9Ó%ò �Ø×%Ñ% dÔ+Ø×$Ñ$ V¨B¡ZÔ0Ø×%Ñ% g¨b¡kÔ2Ø�a‘‘ð	ð
 ä�eœUŸ_™_Ô-Ø×'Ñ'¨°¸hÐ'ÓGˆEÜ×'Ñ'¨°¸%ÀÔGÜ×Ñ˜g u¨f°R©jÔ9Ø×!Ñ! %§+¡+Ô.Ü×)Ñ)¨'°5Ó9ˆBÜ×#Ñ# G¨U°G¸B±KÓ@ˆBØ× Ñ  Ô$Ø×!Ñ! "Õ%Ü˜œuŸ}™}Ô-Ü# G¨W°e¸XØ$*¨2¡Jó0ˆCáÜ×&Ñ& w°¸¸fÀR¹jÈ"ÔMØ×!Ñ! #Õ&Ü˜ÔØ× Ñ  Ô%Ø×!Ñ! $Ô'Ø�!‰G‰Bå%ÁUÐ&LÓMÐMØ
ˆa‰ŠðA ðF �—‘ÒÐÐØ
ˆu�z‰zŠ/Ø×Ñ˜V B™ZÔ(Ø×Ñ˜g b™kÔ*Ø
ˆa‰ˆð ˆu�z‰z‹/ô ×&Ñ& w°¸ÀØ'5Ø27ÀUôL€Gð �] NÐ3Ð3ùòa Gs   Â&MÂ7Mc           	      óŠ   —  t        |«      | |«      }t        |||||j                  |j                  |j                  ¬«       |S )zF
    Build a view over the given array with the given parameters.
    ©r›   rf   r¬   r­   r«   r®   )ry   rÕ   r­   r«   r®   )	r~   r>   r×   r  rÿ   r›   r  r¬   r  s	            rD   r  r  ò  sF   € ð
 %ŒZ˜Ó$ W¨gÓ6€FÜ�6ØØØ"ØŸL™LØŸ;™;ØŸ*™*õ&ð €MrF   c           
      óÞ   — t        | |||||| j                  ¬«      \  }}}	t        |t        j                  «      r"t        | |||||||	«      }
|
j                  «       S |rJ ‚t        | |||«      S )zp
    Return the result of indexing *ary* with the given *indices*,
    returning either a scalar or a view.
    ©r/  )rC  Úenable_boundscheckr˜   r   r  r  r  r‡   )r~   r>   rÿ   r×   r  r¢   r£   r  r  r  r  s              rD   Ú_getitem_array_genericrI    s�   € ô 	�w ¨°°[À'Ø#*×#=Ñ#=ô	?ñ '€Gˆ[˜,ô �+œuŸ|™|Ô,ä˜7 G¨U°C¸Ø" K°ó?ˆà×ÑÓ!Ð!ñ ÐˆÜ˜ '¨5°'Ó:Ð:rF   c           	      ó  — |j                   \  }}|\  }}t        |t        j                  «      s|j                  dk\  sJ ‚ t        |«      | ||«      }t        | ||j                  |||f|f«      }t        | ||j                  |«      S )z9
    Basic indexing with an integer, slice, or None.
    rH   )	rý   r˜   r   ÚNoneTyperq   ry   rI  rÿ   r    ©	r~   r>   r\   rý   r×   r’   r  r“   r	  s	            rD   Úgetitem_arraynd_intprM    s…   € ð —8‘8�L€Eˆ5Ø�H€Cˆô �eœUŸ^™^Ô,Ø�z‰z˜QŠÐˆØ
Œ*�UÓ
˜G W¨cÓ
2€Cä
  ¨'°3·?±?Ø!&¨¨e¨X¸°vó?€Cä˜W g¨s¯©ÀÓDÐDrF   c           
      óz  — |j                   \  }}|\  }} t        |«      | ||«      }|j                  }t        j                  ||t        |«      ¬«      }	t        | |||	«      \  }}	t        d„ |D «       «      rt        | |||||||	«      S t        | ||j                  ||||	«      }
t        | ||j                  |
«      S )z2
    Basic or advanced indexing with a tuple.
    r  c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­w©N©r˜   r   r™   )Ú.0Útys     rD   ú	<genexpr>z&getitem_array_tuple.<locals>.<genexpr>:  s   è ø€ Ò
=¨2Œ:�bœ%Ÿ+™+×&Ñ
=ùó   ‚$&)rý   ry   r   r
   rÀ   r    r¤   ÚanyÚfancy_getitemrI  rÿ   r    )r~   r>   r\   rý   r×   Útuptyr  Útupr¢   r£   r	  s              rD   Úgetitem_array_tuplerZ  +  sÌ   € ð
 —8‘8�L€Eˆ5Ø�H€CˆØ
Œ*�UÓ
˜G W¨cÓ
2€Cà—+‘+€KÜ×"Ñ" 7¨C´s¸5³zÔB€Gä,¨W°gØ-8¸'óCÑ€K�ô Ñ
=°Ô
=Ô=ä˜W g¨s°DØ" C¨°gó?ð 	?ô ! ¨'°3·?±?Ø!&¨¨[¸'óC€Cä˜W g¨s¯©ÀÓDÐDrF   c           	      ó  — |j                   \  }}}|\  }}}	t        |t        j                  «      r.|j                  }
t	        j
                  ||t        |«      ¬«      }n|f}
|f} t        |«      | ||«      }t        | ||
|«      \  }
}	 t        | ||||
|| j                  ¬«      \  }}}t        |«      }|rt        | ||||
|«      S | j                  ||	||j                  «      }	t!        | |||	«       y# t        $ r d}Y ŒMw xY w)zH
    array[a] = scalar_or_array
    array[a,..,b] = scalar_or_array
    r  rG  TN)rý   r˜   r   Ú	BaseTupler
   rÀ   r    ry   r¤   rC  rH  ÚboolrS   Úfancy_setslicerŽ   r|   r‹   )r~   r>   r\   rý   r×   r’   Úvaltyr  r“   rŠ   r¢   r£   r  r  r¬   Úuse_fancy_indexings                   rD   Úsetitem_arrayra  D  s&  € ð Ÿ(™(Ñ€Eˆ5�%Ø�M€Cˆˆcä�%œŸ™Ô)Ø—k‘kˆÜ×&Ñ& w°¼3¸u»:ÔF‰à�hˆØ�&ˆà
Œ*�UÓ
˜G W¨cÓ
2€Cô -¨W°gØ-8¸'óCÑ€K�ð*ä˜7 G¨U°C¸ÀgØ'.×'AÑ'AôCñ 	!ˆ�˜ô " &›\Ðáô ˜g w°°TØ)¨7ó4ð 	4ð �,‰,�w  U¨E¯K©KÓ
8€CÜˆw˜ ¨¨WÕ5øô ò "Ø!Òð"ús   Â
 C5 Ã5DÄDc                 ó¼   — |j                   \  }|\  }t        |«      } || ||«      }|j                  }|j                  |d«      }t	        | ||j
                  |«      S rç   )rý   ry   rf   Úextract_valuer"   rÿ   )	r~   r>   r\   rý   r×   r  ÚarysttyÚshapearyr	  s	            rD   Ú	array_lenrf  m  s\   € à�x‰x�H€UØ�F€SÜ˜Ó€GÙ
�'˜7 CÓ
(€CØ�y‰y€HØ
×
Ñ
 ¨!Ó
,€CÜ˜g w°·±ÀÓEÐErF   z
array.itemc           	      ól  — |j                   \  }|\  } t        |«      | ||«      }|j                  }|j                  |j	                  d||j                  d«      «      d¬«      5  d}| j                  j                  |t        |f«       d d d «       t        | |||j                  «      S # 1 sw Y   Œ!xY w)Nú!=rH   F©Úlikelyz>item(): can only convert an array of size 1 to a Python scalar)rý   ry   r²   r   r  r:   Ú	call_convÚreturn_user_excr¸   r‡   r›   )r~   r>   r\   rý   r×   r  r²   rÍ   s           rD   Ú
array_itemrm  x  s®   € à�X‰X�F€EØ�D€CØ
Œ*�UÓ
˜G W¨cÓ
2€Cà�Z‰Z€FØ	�‰˜×,Ñ,¨T°6¸6¿;¹;Àq»>ÓJØ %ð 
ó 
'ñ GàNˆØ×Ñ×)Ñ)¨'´:À¸vÔF÷Gô
 �W˜g u¨c¯h©hÓ7Ð7÷Gð Gús   Á%%B*Â*B3©é   r   zarray.itemsetc           	      ó´  — |j                   \  }}|\  }}||j                  k(  sJ ‚ t        |«      | ||«      }|j                  }|j	                  |j                  d||j                  d«      «      d¬«      5  d}	| j                  j                  |t        |	f«       d d d «       t        | ||||j                  «       | j                  «       S # 1 sw Y   Œ2xY w)Nrh  rH   Fri  z/itemset(): can only write to an array of size 1)rý   r|   ry   r²   r   r  r:   rk  rl  r¸   r‹   r›   Úget_dummy_value)
r~   r>   r\   rý   r×   r_  r  rŠ   r²   rÍ   s
             rD   Úarray_itemsetrr  ˆ  sÒ   € à—x‘x‰ˆˆuØ‰ˆˆSØ˜Ÿ™Ò#Ð#Ð#ØŒj˜Ó ¨°#Ó6ˆà—‘ˆØ�_‰_˜W×0Ñ0°°v¸v¿{¹{È1»~ÓNØ$)ð ó +ñ 	KàCˆCØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷	Kô
 	�7˜G U¨C°·±Ô:Ø×&Ñ&Ó(Ð(÷	Kð 	Kús   Á8%CÃCc                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚIndexerzq
    Generic indexer interface, for generating indices over a fancy indexed
    array on a single dimension.
    c                 ó   — t         ‚)ze
        Prepare the indexer by initializing any required variables, basic
        blocks...
        rÚ   ©rZ   s    rD   ÚpreparezIndexer.prepare£  ó
   € ô
 "Ð!rF   c                 ó   — t         ‚)z=
        Return this dimension's size as an integer.
        rÚ   rv  s    rD   Úget_sizezIndexer.get_sizeª  ó
   € ô "Ð!rF   c                 ó   — t         ‚)z;
        Return this dimension's shape as a tuple.
        rÚ   rv  s    rD   Ú	get_shapezIndexer.get_shape°  r{  rF   c                 ó   — t         ‚)z}
        Return a half-open [lower, upper) range of indices this dimension
        is guaranteed not to step out of.
        rÚ   rv  s    rD   Úget_index_boundszIndexer.get_index_bounds¶  rx  rF   c                 ó   — t         ‚)aW  
        Start indexation loop.  Return a (index, count) tuple.
        *index* is an integer LLVM value representing the index over this
        dimension.
        *count* is either an integer LLVM value representing the current
        iteration count, or None if this dimension should be omitted from
        the indexation result.
        rÚ   rv  s    rD   Ú	loop_headzIndexer.loop_head½  s
   € ô "Ð!rF   c                 ó   — t         ‚)z)
        Finish indexation loop.
        rÚ   rv  s    rD   Ú	loop_tailzIndexer.loop_tailÈ  r{  rF   N)
rr   rs   rt   Ú__doc__rw  rz  r}  r  r�  rƒ  © rF   rD   rt  rt  �  s%   „ ñò
"ò"ò"ò"ò	"ó"rF   rt  c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚEntireIndexerz:
    Compute indices along an entire array dimension.
    c                 ó¦   — || _         || _        || _        || _        || _        | j                   j                  t        j                  «      | _        y rP  )	r~   r>   r×   r  Údimr¹   r   r�   Úll_intp)rZ   r~   r>   r×   r  r‰  s         rD   Ú__init__zEntireIndexer.__init__Ô  s?   € ØˆŒØˆŒØˆŒ
ØˆŒØˆŒØ—|‘|×2Ñ2´5·:±:Ó>ˆ�rF   c                 ó$  — | j                   }|j                  | j                  j                  | j                  «      | _        t        j                  || j                  «      | _	        |j                  «       | _        |j                  «       | _        y rP  )r>   rc  r  rf   r‰  r”   r
   rX   rŠ  r  Úappend_basic_blockÚbb_startÚbb_end©rZ   r>   s     rD   rw  zEntireIndexer.prepareÜ  sc   € Ø—,‘,ˆØ×)Ñ)¨$¯(©(¯.©.¸$¿(¹(ÓCˆŒ	Ü×(Ñ(¨°$·,±,Ó?ˆŒ
Ø×2Ñ2Ó4ˆŒØ×0Ñ0Ó2ˆ�rF   c                 ó   — | j                   S rP  ©r”   rv  s    rD   rz  zEntireIndexer.get_sizeã  s   € Ø�y‰yÐrF   c                 ó   — | j                   fS rP  r’  rv  s    rD   r}  zEntireIndexer.get_shapeæ  s   € Ø—	‘	ˆ|ÐrF   c                 ó<   — | j                  d«      | j                  fS rç   ©rŠ  r”   rv  s    rD   r  zEntireIndexer.get_index_boundsé  ó   € à—‘˜Q“ §¡Ð+Ð+rF   c                 óú  — | j                   }| j                   j                  t        | j                  d«      | j                  «       |j                  | j                  «       |j                  | j                  «       |j                  | j                  «      }|j                  |j                  d|| j                  «      d¬«      5  |j                  | j                  «       d d d «       ||fS # 1 sw Y   ||fS xY w©Nr   ú>=Fri  )r>   r$  r   rŠ  r  ÚbranchrŽ  Úposition_at_endr?   r   r  r”   r�  )rZ   r>   Ú	cur_indexs      rD   r�  zEntireIndexer.loop_headí  sÅ   € Ø—,‘,ˆà�‰×Ñœ8 D§L¡L°!Ó4°d·j±jÔAØ�‰�t—}‘}Ô%Ø×Ñ §¡Ô.Ø—L‘L §¡Ó,ˆ	Ø�_‰_˜W×0Ñ0°°yÀ$Ç)Á)ÓLØ$)ð ó +ñ 	(à�N‰N˜4Ÿ;™;Ô'÷	(ð ˜)Ð#Ð#÷	(ð ˜)Ð#Ð#ús   ÃC.Ã.C:c                 ó  — | j                   }t        j                  ||j                  | j                  «      «      }|j                  || j                  «       |j                  | j                  «       |j                  | j                  «       y rP  )
r>   r
   r#  r?   r  r$  rš  rŽ  r›  r�  ©rZ   r>   Ú
next_indexs      rD   rƒ  zEntireIndexer.loop_tailù  s^   € Ø—,‘,ˆÜ×,Ñ,¨W°g·l±lÀ4Ç:Á:Ó6NÓOˆ
Ø�‰�j $§*¡*Ô-Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rF   N©rr   rs   rt   r„  r‹  rw  rz  r}  r  r�  rƒ  r…  rF   rD   r‡  r‡  Ï  s*   „ ñò?ò3òòò,ò
$ó-rF   r‡  c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚIntegerIndexerz0
    Compute indices from a single integer.
    c                 óŠ   — || _         || _        || _        | j                   j                  t        j
                  «      | _        y rP  )r~   r>   r“   r¹   r   r�   rŠ  )rZ   r~   r>   r“   s       rD   r‹  zIntegerIndexer.__init__  s1   € ØˆŒØˆŒØˆŒØ—|‘|×2Ñ2´5·:±:Ó>ˆ�rF   c                  ó   — y rP  r…  rv  s    rD   rw  zIntegerIndexer.prepare  ó   € ØrF   c                 ó.   — t        | j                  d«      S ©NrH   )r   rŠ  rv  s    rD   rz  zIntegerIndexer.get_size  s   € Ü˜Ÿ™ aÓ(Ð(rF   c                  ó   — y©Nr…  r…  rv  s    rD   r}  zIntegerIndexer.get_shape  s   € ØrF   c                 ó‚   — | j                   | j                  j                  | j                   | j                  «       «      fS rP  )r“   r>   Úaddrz  rv  s    rD   r  zIntegerIndexer.get_index_bounds  s,   € à—‘˜$Ÿ,™,×*Ñ*¨4¯8©8°T·]±]³_ÓEÐFÐFrF   c                 ó   — | j                   d fS rP  )r“   rv  s    rD   r�  zIntegerIndexer.loop_head  s   € Ø�x‰x˜ˆ~ÐrF   c                  ó   — y rP  r…  rv  s    rD   rƒ  zIntegerIndexer.loop_tail  r¥  rF   Nr   r…  rF   rD   r¢  r¢    s+   „ ñò?òò)òòGòórF   r¢  c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚIntegerArrayIndexerz;
    Compute indices from an array of integer indices.
    c                 óÈ   — || _         || _        || _        || _        || _        |j
                  dk(  sJ ‚| j                   j                  t        j                  «      | _	        y r§  )
r~   r>   r’   rœ   r”   rq   r¹   r   r�   rŠ  )rZ   r~   r>   r’   rœ   r”   s         rD   r‹  zIntegerArrayIndexer.__init__%  sO   € ØˆŒØˆŒØˆŒ
ØˆŒØˆŒ	Ø�z‰z˜QŠÐˆØ—|‘|×2Ñ2´5·:±:Ó>ˆ�rF   c                 ó  — | j                   }t        j                  || j                  j                  «      d   | _        t        j                  || j                  «      | _        |j                  «       | _
        |j                  «       | _        y rç   )r>   r
   rÀ   rœ   rf   Úidx_sizerX   rŠ  Ú	idx_indexr�  rŽ  r�  r�  s     rD   rw  zIntegerArrayIndexer.prepare.  sf   € Ø—,‘,ˆÜ×,Ñ,¨W°d·k±k×6GÑ6GÓHÈÑKˆŒÜ ×,Ñ,¨W°d·l±lÓCˆŒØ×2Ñ2Ó4ˆŒØ×0Ñ0Ó2ˆ�rF   c                 ó   — | j                   S rP  ©r²  rv  s    rD   rz  zIntegerArrayIndexer.get_size5  s   € Ø�}‰}ÐrF   c                 ó   — | j                   fS rP  rµ  rv  s    rD   r}  zIntegerArrayIndexer.get_shape8  s   € Ø—‘ÐÐrF   c                 ó<   — | j                  d«      | j                  fS rç   r•  rv  s    rD   r  z$IntegerArrayIndexer.get_index_bounds;  r–  rF   c                 óæ  — | j                   }| j                   j                  t        | j                  d«      | j                  «       |j                  | j                  «       |j                  | j                  «       |j                  | j                  «      }|j                  |j                  d|| j                  «      d¬«      5  |j                  | j                  «       d d d «       t        | j                  || j                  j                   | j                  | j"                  |«      }t%        | j                  || j                  j                   || j&                  «      }||fS # 1 sw Y   Œ†xY wr˜  )r>   r$  r   rŠ  r³  rš  rŽ  r›  r?   r   r  r²  r�  r  r~   r’   r|   rœ   r–   r”   )rZ   r>   rœ  r  s       rD   r�  zIntegerArrayIndexer.loop_head?  s  € Ø—,‘,ˆà�‰×Ñœ8 D§L¡L°!Ó4°d·n±nÔEØ�‰�t—}‘}Ô%Ø×Ñ §¡Ô.Ø—L‘L §¡Ó0ˆ	Ø�_‰_Ø×Ñ  i°·±Ó?Øð ó 
ñ 	(ð �N‰N˜4Ÿ;™;Ô'÷		(ô *Ø�L‰L˜' 4§:¡:×#3Ñ#3°T·Z±ZÀÇÁØó
ˆô " $§,¡,°Ø"&§*¡*×"2Ñ"2°E¸4¿9¹9óFˆà�iÐÐ÷	(ð 	(ús   ÃE'Å'E0c                 ó  — | j                   }t        j                  ||j                  | j                  «      «      }|j                  || j                  «       |j                  | j                  «       |j                  | j                  «       y rP  )
r>   r
   r#  r?   r³  r$  rš  rŽ  r›  r�  rž  s      rD   rƒ  zIntegerArrayIndexer.loop_tailT  sb   € Ø—,‘,ˆÜ×,Ñ,¨WØ-4¯\©\¸$¿.¹.Ó-IóKˆ
à�‰�j $§.¡.Ô1Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rF   Nr   r…  rF   rD   r¯  r¯     s*   „ ñò?ò3òò ò,ò ó*-rF   r¯  c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚBooleanArrayIndexerz>
    Compute indices from an array of boolean predicates.
    c                 óð   — || _         || _        || _        || _        |j                  dk(  sJ ‚| j                   j                  t        j                  «      | _        t        | j                  d«      | _
        y ©NrH   r   )r~   r>   r’   rœ   rq   r¹   r   r�   rŠ  r   r  )rZ   r~   r>   r’   rœ   s        rD   r‹  zBooleanArrayIndexer.__init__b  sZ   € ØˆŒØˆŒØˆŒ
ØˆŒØ�z‰z˜QŠÐˆØ—|‘|×2Ñ2´5·:±:Ó>ˆŒÜ˜TŸ\™\¨1Ó-ˆ�	rF   c                 ó’  — | j                   }t        j                  || j                  j                  «      d   | _        t        j                  || j                  «      | _        t        j                  || j                  «      | _	        |j                  «       | _        |j                  «       | _        |j                  «       | _        y rç   )r>   r
   rÀ   rœ   rf   r”   rX   rŠ  r³  rÁ   r�  rŽ  Úbb_tailr�  r�  s     rD   rw  zBooleanArrayIndexer.preparek  sŽ   € Ø—,‘,ˆÜ×(Ñ(¨°$·+±+×2CÑ2CÓDÀQÑGˆŒ	Ü ×,Ñ,¨W°d·l±lÓCˆŒÜ×(Ñ(¨°$·,±,Ó?ˆŒ
Ø×2Ñ2Ó4ˆŒØ×1Ñ1Ó3ˆŒØ×0Ñ0Ó2ˆ�rF   c           	      ó  — | j                   }t        j                  || j                  «      }t        j                  || j
                  «      5 }|j                  |«      }t        | j                  || j                  j                  | j                  | j                  |j                  «      }|j                  ||j                  ||j                  «      «      }|j!                  ||«       d d d «       |j                  |«      S # 1 sw Y   ŒxY wrP  )r>   r
   r   r  Ú	for_ranger”   r?   r  r~   r’   r|   rœ   r  r«  Úzextr:   r$  )rZ   r>   rÁ   ÚloopÚcÚpreds         rD   rz  zBooleanArrayIndexer.get_sizet  sÌ   € Ø—,‘,ˆÜ×)Ñ)¨'°4·9±9Ó=ˆä×Ñ˜w¨¯	©	Ó2ð 	$°dØ—‘˜UÓ#ˆAÜ,Ø—‘˜g t§z¡z×'7Ñ'7Ø—
‘
˜DŸK™K¨¯©óˆDð —‘˜A˜wŸ|™|¨D°!·&±&Ó9Ó:ˆAØ�M‰M˜!˜UÔ#÷	$ð �|‰|˜EÓ"Ð"÷	$ð 	$ús   ÁBDÄDc                 ó$   — | j                  «       fS rP  ©rz  rv  s    rD   r}  zBooleanArrayIndexer.get_shapeƒ  ó   € Ø—‘“Ð!Ð!rF   c                 ó<   — | j                  d«      | j                  fS rç   r•  rv  s    rD   r  z$BooleanArrayIndexer.get_index_bounds†  s   € ð —‘˜Q“ §¡Ð+Ð+rF   c                 óþ  — | j                   }| j                   j                  | j                  | j                  «       | j                   j                  | j                  | j                  «       |j                  | j                  «       |j                  | j                  «       |j                  | j                  «      }|j                  | j                  «      }|j                  |j                  d|| j                  «      d¬«      5  |j                  | j                  «       d d d «       t        | j                  || j                  j                   | j                  | j"                  |«      }|j                  |j%                  |«      «      5  |j                  | j&                  «       d d d «       t)        j*                  ||«      }|j                  || j                  «       ||fS # 1 sw Y   ŒÅxY w# 1 sw Y   ŒKxY w)Nr™  Fri  )r>   r$  r  r³  rÁ   rš  rŽ  r›  r?   r   r  r”   r�  r  r~   r’   r|   rœ   Únot_r¿  r
   r#  )rZ   r>   rœ  Ú	cur_countrÅ  Ú
next_counts         rD   r�  zBooleanArrayIndexer.loop_head‹  st  € Ø—,‘,ˆà�‰×Ñ˜4Ÿ9™9 d§n¡nÔ5Ø�‰×Ñ˜4Ÿ9™9 d§j¡jÔ1Ø�‰�t—}‘}Ô%Ø×Ñ §¡Ô.Ø—L‘L §¡Ó0ˆ	Ø—L‘L §¡Ó,ˆ	Ø�_‰_˜W×0Ñ0°°yÀ$Ç)Á)ÓLØ$)ð ó +ñ 	(à�N‰N˜4Ÿ;™;Ô'÷	(ô )Ø�L‰L˜' 4§:¡:×#3Ñ#3°T·Z±ZÀÇÁØó
ˆð �_‰_˜WŸ\™\¨$Ó/Ó0ñ 	)Ø�N‰N˜4Ÿ<™<Ô(÷	)ô ×,Ñ,¨W°iÓ@ˆ
Ø�‰�j $§*¡*Ô-Ø˜)Ð#Ð#÷	(ð 	(ú÷	)ð 	)ús   ÄG'ÆG3Ç'G0Ç3G<c                 óŠ  — | j                   }|j                  | j                  «       |j                  | j                  «       t	        j
                  ||j                  | j                  «      «      }|j                  || j                  «       |j                  | j                  «       |j                  | j                  «       y rP  )r>   rš  r¿  r›  r
   r#  r?   r³  r$  rŽ  r�  rž  s      rD   rƒ  zBooleanArrayIndexer.loop_tail£  s„   € Ø—,‘,ˆØ�‰�t—|‘|Ô$Ø×Ñ §¡Ô-Ü×,Ñ,¨WØ-4¯\©\¸$¿.¹.Ó-IóKˆ
à�‰�j $§.¡.Ô1Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rF   Nr   r…  rF   rD   r»  r»  ]  s*   „ ñò.ò3ò#ò"ò,ò
$ó0-rF   r»  c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚSliceIndexerz(
    Compute indices along a slice.
    c                 óø   — || _         || _        || _        || _        || _        || _        || _        | j                   j                  t        j                  «      | _
        t        | j                  d«      | _        y rç   )r~   r>   r×   r  r‰  r’   r@  r¹   r   r�   rŠ  r   r  )rZ   r~   r>   r×   r  r‰  r’   r@  s           rD   r‹  zSliceIndexer.__init__³  s_   € ØˆŒØˆŒØˆŒ
ØˆŒØˆŒØˆŒ
ØˆŒ
Ø—|‘|×2Ñ2´5·:±:Ó>ˆŒÜ˜TŸ\™\¨1Ó-ˆ�	rF   c                 óŽ  — | j                   }|j                  | j                  j                  | j                  «      | _        t        j                  | j                  || j                  | j                  «       t        j                  || j                  | j
                  «       t        j                  || j                  j                  «      | _        t        j                   || j"                  «      | _        t        j                   || j"                  «      | _        |j)                  «       | _        |j)                  «       | _        y rP  )r>   rc  r  rf   r‰  Údim_sizer-   r2  r~   r’   r@  r3  r
   Ú
is_neg_intÚstepÚis_step_negativerX   rŠ  r  rÁ   r�  rŽ  r�  r�  s     rD   rw  zSliceIndexer.prepare¾  sÕ   € Ø—,‘,ˆà×-Ñ-¨d¯h©h¯n©n¸d¿h¹hÓGˆŒÜ×#Ñ# D§L¡L°'¸4¿:¹:Ø$(§J¡Jô	0ä×Ñ˜' 4§:¡:¨t¯}©}Ô=Ü '× 2Ñ 2°7¸D¿J¹J¿O¹OÓ LˆÔä×(Ñ(¨°$·,±,Ó?ˆŒ
Ü×(Ñ(¨°$·,±,Ó?ˆŒ
Ø×2Ñ2Ó4ˆŒØ×0Ñ0Ó2ˆ�rF   c                 óV   — t        j                  | j                  | j                  «      S rP  )r-   r5  r>   r@  rv  s    rD   rz  zSliceIndexer.get_sizeÌ  s   € Ü×'Ñ'¨¯©°d·j±jÓAÐArF   c                 ó$   — | j                  «       fS rP  rÇ  rv  s    rD   r}  zSliceIndexer.get_shapeÏ  rÈ  rF   c                 ód   — t        j                  | j                  | j                  «      \  }}||fS rP  )r-   Úget_slice_boundsr>   r@  )rZ   ÚlowerÚuppers      rD   r  zSliceIndexer.get_index_boundsÒ  s*   € Ü×/Ñ/°·±¸d¿j¹jÓI‰ˆˆuØ�eˆ|ÐrF   c           	      ó(  — | j                   }| j                   j                  | j                  j                  | j                  «       | j                   j                  | j
                  | j                  «       |j                  | j                  «       |j                  | j                  «       |j                  | j                  «      }|j                  | j                  «      }|j                  | j                  |j                  d|| j                  j                  «      |j                  d|| j                  j                  «      «      }|j                  |d¬«      5  |j                  | j                   «       d d d «       ||fS # 1 sw Y   ||fS xY w)Nz<=r™  Fri  )r>   r$  r@  r4  r  r  rÁ   rš  rŽ  r›  r?   ÚselectrÖ  r  Ústopr   r�  )rZ   r>   rœ  rÌ  Úis_finisheds        rD   r�  zSliceIndexer.loop_headÖ  s*  € Ø—,‘,ˆà�‰×Ñ˜4Ÿ:™:×+Ñ+¨T¯Z©ZÔ8Ø�‰×Ñ˜4Ÿ9™9 d§j¡jÔ1Ø�‰�t—}‘}Ô%Ø×Ñ §¡Ô.Ø—L‘L §¡Ó,ˆ	Ø—L‘L §¡Ó,ˆ	Ø—n‘n T×%:Ñ%:Ø%,×%8Ñ%8¸¸yØ9=¿¹¿¹ó&Jà%,×%8Ñ%8¸¸yØ9=¿¹¿¹ó&JóKˆð
 �_‰_˜[°ˆ_Ó7ñ 	(Ø�N‰N˜4Ÿ;™;Ô'÷	(à˜)Ð#Ð#÷	(à˜)Ð#Ð#ús   ÅFÆFc                 óÚ  — | j                   }|j                  |j                  | j                  «      | j                  j
                  dg¬«      }|j                  || j                  «       t        j                  ||j                  | j                  «      «      }|j                  || j                  «       |j                  | j                  «       |j                  | j                  «       y )Nr¯   r°   )r>   r«  r?   r  r@  rÕ  r$  r
   r#  rÁ   rš  rŽ  r›  r�  )rZ   r>   rŸ  rÍ  s       rD   rƒ  zSliceIndexer.loop_tailè  s¡   € Ø—,‘,ˆØ—[‘[ §¡¨d¯j©jÓ!9¸4¿:¹:¿?¹?Ø(- wð !ó 0ˆ
à�‰�j $§*¡*Ô-Ü×,Ñ,¨W°g·l±lÀ4Ç:Á:Ó6NÓOˆ
Ø�‰�j $§*¡*Ô-Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rF   Nr   r…  rF   rD   rÐ  rÐ  ®  s+   „ ñò	.ò3òBò"òò$ó$-rF   rÐ  c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚFancyIndexerz4
    Perform fancy indexing on the given array.
    c           
      ó:  — || _         || _        || _        t        j                  ||j
                  |j                  «      | _        t        j                  ||j                  |j                  «      | _        | j                   j                  t        j                  «      | _        g | _        g }t        |D �cg c]  }t        |«      sŒ|‘Œ c}«      }	d}
d}t!        ||«      D �]  \  }}|t        j"                  u rY|j                  t        |«      z
  dz   |	z   }t%        |«      D ],  }t'        |||||
«      }|j)                  |«       |
dz  }
|dz  }Œ. Œrt+        |t        j,                  «      r7|j/                  |||«      }t1        |||||
||«      }|j)                  |«       �nDt+        |t        j2                  «      r;t5        ||||| j                  |
   «      }t7        |||«      }|j)                  |«       nït+        |t        j8                  «      r› t;        |«      |||«      }t+        |j<                  t        j2                  «      rt?        ||||| j                  |
   «      }n5t+        |j<                  t        j@                  «      rtC        ||||«      }nJ ‚|j)                  |«       n:t        |«      r!| j                  j)                  |«       |
dz  }
ntE        d|›�«      ‚|
dz  }
|dz  }�Œ |
|j                  k  sJ |
|j                  f«       ‚|
|j                  k  r5t'        |||||
«      }|j)                  |«       |
dz  }
|
|j                  k  rŒ5t        |«      |j                  k(  sJ t        |«      |j                  f«       ‚|| _#        y c c}w )Nr   rH   r,  )$r~   r>   r×   r
   rÀ   rf   rq   r  r¬   r¹   r   r�   rŠ  Únewaxesr    r   r¡   r0  r9   r‡  rj   r˜   r1  rþ   rÐ  rš   r–   r¢  r™   ry   r|   r¯  ÚBooleanr»  ÚAssertionErrorÚindexers)rZ   r~   r>   r×   r  r¢   r£   rè  r“   r=  rö   Únew_axr>  r’   r?  rn   Úindexerr@  r•   rœ   s                       rD   r‹  zFancyIndexer.__init__ø  s%  € ØˆŒØˆŒØˆŒ
Ü×*Ñ*¨7°C·I±I¸u¿z¹zÓJˆŒÜ×+Ñ+¨G°S·[±[À%Ç*Á*ÓMˆŒØ—|‘|×2Ñ2´5·:±:Ó>ˆŒØˆŒàˆÜ¨+ÖJ 3¼ÀSÕ9Iš3ÒJÓKˆàˆØˆÜ" 7¨KÓ8ó (	‰OˆH�eØœŸ™Ñ&à!ŸJ™J¬¨W«Ñ5¸Ñ9¸KÑG�	Ü˜yÓ)ò  �AÜ+¨G°W¸eÀSÈ"ÓM�GØ—O‘O GÔ,Ø˜!‘G�BØ˜a‘K‘Fð	 ð
 ô ˜%¤§¡Ô1Ø×+Ñ+¨G°U¸HÓE�Ü& w°¸ÀÀRØ',¨eó5�à—‘ Ö(Ü˜E¤5§=¡=Ô1Ü'¨°¸%ÀØ(,¯©°B©ó9�ä(¨°'¸3Ó?�Ø—‘ Õ(Ü˜E¤5§;¡;Ô/Ø*œ EÓ*¨7°G¸XÓF�Ü˜eŸk™k¬5¯=©=Ô9Ü1°'¸7Ø27¸Ø26·+±+¸b±/óC‘Gô   §¡¬U¯]©]Ô;Ü1°'¸7Ø27¸óA‘Gð ˜1Ø—‘ Õ(Ü˜UÔ#Ø—‘×#Ñ# FÔ+Ø�a‘‘å$ÁEÐ%KÓLÐLØ�!‰GˆBØ�a‰KŠFðQ(	ðV �U—Z‘ZÒÐ1 " e§j¡jÐ!1Ó1ÐØ�5—:‘:ŠoÜ# G¨W°e¸SÀ"ÓEˆGØ�O‰O˜GÔ$Ø�!‰GˆBð �5—:‘:‹oô
 �8‹} §
¡
Ò*ÐG¬S°«]¸E¿J¹JÐ,GÓGÐ*Ø ˆ�ùòm Ks   Â6NÃNc                 ó\  — | j                   D ]  }|j                  «        Œ | j                  j                  t        j
                  d«      }| j                   D �cg c]  }|j                  «       ‘Œ }}| j                  D ]  }|j                  ||f«       Œ t        |d«      | _
        y c c}w )NrH   r…  )rè  rw  r~   r¿   r   r�   r}  rå  ÚinsertÚsumÚindexers_shape)rZ   rn   r9  Ú	res_shapes       rD   rw  zFancyIndexer.prepare:  s–   € Ø—‘ò 	ˆAØ�I‰I�Kð	ð �l‰l×'Ñ'¬¯
©
°AÓ6ˆð -1¯M©MÖ: q�Q—[‘[•]Ð:ˆ	Ð:ð —‘ò 	(ˆAØ×Ñ˜Q  Õ'ð	(ô " )¨RÓ0ˆÕùò ;s   ÁB)c                 ó   — | j                   S )z?
        Get the resulting data shape as Python tuple.
        )rî  rv  s    rD   r}  zFancyIndexer.get_shapeM  s   € ð ×"Ñ"Ð"rF   c           	      ó   — t        |«      | j                  j                  k(  sJ ‚| j                  }t        j
                  }| j                  d«      }| j                  d«      }|}|}t        | j                  | j                  |«      D ]É  \  }	}
}|j                  ||j                  d|
|«      «      }|	j                  «       \  }}|j                  ||«      }|j                  ||j                  ||«      «      }|j                  d||«      }|j!                  ||j#                  |||«      «      }|j!                  ||j#                  |||«      «      }ŒË |j!                  ||«      }|j#                  |||«      }|j#                  |||«      }||fS )zÊ
        Get a half-open [lower, upper) range of byte offsets spanned by
        the indexer with the given strides and itemsize.  The indexer is
        guaranteed to not go past those bounds.
        r   rH   ú==r  )r    r×   rq   r>   r
   Ú	false_bitrŠ  r¡   rè  rî  Úor_Úicmp_unsignedr  rÂ   Úsubr  r«  rÞ  )rZ   r¬   r­   r>   Úis_emptyr  r9  rÛ  rÜ  rê  rf   ÚstrideÚlower_indexÚupper_indexÚlower_offsetÚupper_offsetÚis_downwardss                    rD   Úget_offset_boundszFancyIndexer.get_offset_boundsS  sƒ  € ô �7‹|˜tŸz™zŸ™Ò.Ð.Ð.Ø—,‘,ˆÜ×$Ñ$ˆØ�|‰|˜A‹ˆØ�l‰l˜1‹oˆØˆØˆÜ&)¨$¯-©-¸×9LÑ9LØ*1ó'3ò 	>Ñ"ˆG�U˜Fà—{‘{ 8Ø#*×#8Ñ#8¸¸uÀdÓ#KóMˆHð (/×'?Ñ'?Ó'AÑ$ˆK˜Ø"Ÿ;™; v¨{Ó;ˆLØ"Ÿ;™; v¨w¯{©{¸;ÈÓ/LÓMˆLà"×.Ñ.¨s°F¸DÓAˆLØ—K‘K Ø '§¡¨|Ø/;Ø/;ó!=ó>ˆEð —K‘K Ø '§¡¨|Ø/;Ø/;ó!=ó>‰Eð	>ð& —‘˜E 8Ó,ˆà—‘˜x¨¨uÓ5ˆØ—‘˜x¨¨uÓ5ˆØ�eˆ|ÐrF   c                 óB   — t        d„ | j                  D «       Ž \  }}||fS )Nc              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrP  )r�  )rR  rn   s     rD   rT  z+FancyIndexer.begin_loops.<locals>.<genexpr>z  s   è ø€ ÒE°! §¡§ÑEùs   ‚)r¡   rè  )rZ   r£   Úcountss      rD   Úbegin_loopszFancyIndexer.begin_loopsy  s$   € ÜÑE°t·}±}ÔEÐF‰ˆ�Ø˜ˆÐrF   c                 óX   — t        | j                  «      D ]  }|j                  «        Œ y rP  )Úreversedrè  rƒ  )rZ   rn   s     rD   Ú	end_loopszFancyIndexer.end_loops}  s#   € Ü˜$Ÿ-™-Ó(ò 	ˆAØ�K‰K�Mñ	rF   N)
rr   rs   rt   r„  r‹  rw  r}  rþ  r  r  r…  rF   rD   rã  rã  ó  s(   „ ñò@!òD1ò&#ò$òLórF   rã  c                 ób  — t        j                  ||j                  «      }t        j                  ||j                  «      }	|j                  }
t        | |||||«      }|j                  «        |j                  }|j                  «       }t        | |||«      }|j                  }t        j                  || j                  t        j                  d«      «      }|j                  «       \  }}t        j                  | ||
||	|j                   |d| j"                  ¬«	      }t%        | |||«      }|j'                  |«      }|j)                  ||g«      }t+        | ||||«       t        j,                  ||«      }|j/                  ||«       |j1                  «        t3        | |||j5                  «       «      S )Nr   Fr-  )r
   rÀ   rf   r¬   r›   rã  rw  rÿ   r}  Ú_empty_nd_implr   r¿   r   r�   r  Úget_item_pointer2ÚlayoutrH  r‡   r?   Úgepr‹   r#  r$  r  r!   r  )r~   r>   r\   rý   r×   r  r¢   r£   r  r¬   r›   rê  Úout_tyÚ
out_shapesr
  Úout_dataÚout_idxÚ_rl   rŠ   ÚcurÚnext_idxs                         rD   rW  rW  ‚  s  € ô ×!Ñ! '¨3¯9©9Ó5€FÜ×"Ñ" 7¨C¯K©KÓ8€GØ�8‰8€Dä˜7 G¨U°CØ&¨ó1€Gà‡O�OÔð �_‰_€FØ×"Ñ"Ó$€Jä
˜ '¨6°:Ó
>€CØ�x‰x€HÜ×'Ñ'¨Ø(/×(<Ñ(<¼U¿Z¹ZÈÓ(KóM€Gð ×$Ñ$Ó&�J€GˆQô ×
#Ñ
# G¨W°d¸FÀGØ$)§L¡L°'ÀeØ07×0JÑ0JôL€Cô �G˜W e¨SÓ
1€Cð �,‰,�wÓ
€CØ
�+‰+�h  Ó
&€CÜˆw˜ ¨¨cÔ2Ü×&Ñ& w°Ó4€HØ‡M�M�(˜GÔ$à×ÑÔä˜G W¨f°c·m±m³oÓFÐFrF   c           
      ó"  — |j                   \  }}|\  }} t        |«      | ||«      }|j                  dk(  rFt        | |||«      \  }}t	        | ||j
                  |||f|f«      }t        | ||j
                  |«      S t        | ||||||f|f«      S )z3
    Advanced or basic indexing with an array.
    r   )rý   ry   rq   rž   rI  rÿ   r    rW  rL  s	            rD   Úfancy_getitem_arrayr  ­  s©   € ð
 —8‘8�L€Eˆ5Ø�H€CˆØ
Œ*�UÓ
˜G W¨cÓ
2€CØ‡z�z�Q‚ä$ W¨g°u¸cÓB‰
ˆˆsÜ$ W¨g°s·±Ø%*¨C°%°¸C¸6óCˆä  ¨'°3·?±?ÀCÓHÐHô ˜W g¨s°DØ" C¨%¨°C°6ó;ð 	;rF   c           	      ó®  — |j                   }|j                  d«      }|j                  d«      }|j                  dv r"|}	|j                  ||j                  «      }
|	|
fS |}	|}
t        |j                  «      D ]ƒ  }|j                  ||   |j                  ||   |«      «      }|j                  d||«      }|j                  ||j                  |
|«      |
«      }
|j                  ||	|j                  |	|«      «      }	Œ… |j                  |
|«      }
|j                  d|j                  |«      }|j                  |||
«      }
|j                  |||	«      }	|	|
fS )zï
    Compute a half-open range [lower, upper) of byte offsets from the
    array's data pointer, that bound the in-memory extent of the array.

    This mimics offset_bounds_from_strides() from
    numpy/core/src/private/mem_overlap.c
    r   rH   ÚCFr™  rò  )r­   r:   r	  rÂ   r²   r9   rq   rö  r  rÞ  r«  )r~   r>   ÚarrtyÚarrr  r¬   r­   r  r9  rÛ  rÜ  rn   Úmax_axis_offsetÚ
is_upwardsr÷  s                  rD   Úoffset_bounds_from_stridesr  Á  sX  € ð �|‰|€HØ�=‰=˜Ó€DØ
�)‰)�A‹,€CØ‡|�|�tÑð ˆØ—‘˜H c§j¡jÓ1ˆð0 �%ˆ<Ðð+ ˆØˆÜ�u—z‘zÓ"ò 	OˆAð &Ÿk™k¨'°!©*Ø*1¯+©+°f¸Q±iÀÓ*EóGˆOà ×,Ñ,¨T°?ÀDÓIˆJà—N‘N :Ø#*§;¡;¨u°oÓ#FÈóOˆEà—N‘N :Ø#(¨'¯+©+°e¸_Ó*MóO‰Eð	Oð —‘˜E 8Ó,ˆà×&Ñ& t¨S¯Z©Z¸Ó>ˆØ—‘˜x¨¨uÓ5ˆØ—‘˜x¨¨uÓ5ˆà�%ˆ<ÐrF   c                 óŠ   — |j                  ||j                  «      }|j                  ||«      }|j                  ||«      }||fS )z…
    Given [lower, upper) byte offsets and a base data pointer,
    compute the memory pointer bounds as pointer-sized integers.
    )Úptrtointr:   r«  )r~   r>   rÛ  rÜ  r›   Údata_ptr_as_intr4  Úends           rD   Úcompute_memory_extentsr  ë  sD   € ð
 ×&Ñ& t¨U¯Z©ZÓ8€OØ�K‰K˜¨Ó/€EØ
�+‰+�o uÓ
-€CØ�#ˆ:ÐrF   c                 óF   — t        | |||||«      \  }}t        | ||||«      S )zr
    Compute a half-open range [start, end) of pointer-sized integers
    which fully contain the array data.
    )r  r  )	r~   r>   r  r  r  r¬   r›   rÛ  rÜ  s	            rD   Úget_array_memory_extentsr!  ö  s2   € ô .¨g°wÀÀsØ.4°gó?�L€Eˆ5ä! '¨7°E¸5À$ÓGÐGrF   c                 ón   — |j                  |j                  d||«      |j                  d||«      «      }|S )z[
    Whether two memory extents [a_start, a_end) and [b_start, b_end)
    may overlap.
    r  )Úand_rõ  )r~   r>   Úa_startÚa_endÚb_startÚb_endÚmay_overlaps          rD   Úextents_may_overlapr)    s>   € ð —,‘,Ø×Ñ˜c 7¨EÓ2Ø×Ñ˜c 7¨EÓ2ó€Kð ÐrF   c                 ó2  ‡ ‡‡‡‡‡‡‡‡‡‡‡‡— ‰j                   ŠdŠt        j                  ‰‰«      Š‰Šd Š‰j                  ‰d¬«      5  ‰j	                  |j
                  |j                  «      }‰ j                  j                  ‰|«      }	|	j                   Š‰j                  |	‰«      }	‰j                  |	‰«       ‰ j                  t        j                  «      }
t        j                  ‰‰|
«      5 }t        j                  ‰ ‰‰‰‰‰j                   |«      }t        j                  ‰ ‰|	‰‰‰|«      }‰j                  ‰j#                  |«      |«       d d d «       d d d «       ˆˆ ˆˆˆˆˆˆˆˆˆˆfd„}ˆˆ ˆˆˆfd„}||fS # 1 sw Y   Œ.xY w# 1 sw Y   Œ2xY w)Nr¦   Fri  c                 ó  •— t        j                  ‰‰
«      }‰j                  ‰d¬«      5 \  }}|5  ‰j                  t        j                  ‰‰‰j                  ‰«      ‰‰	‰| d¬«      |«       d d d «       |5  ‰j                  t        j                  ‰‰‰‰‰‰j                  | d¬«      |«       d d d «       d d d «       t        ‰‰‰‰j                  |«      «      S # 1 sw Y   ŒpxY w# 1 sw Y   Œ:xY w# 1 sw Y   Œ>xY w)NFri  ©r.  )r
   rX   Úif_elser$  r  r?   r	  r‡   )Úsource_indicesÚsrc_ptrÚif_copyÚ	otherwiser>   r~   Ú	copy_dataÚcopy_layoutÚcopy_shapesÚcopy_stridesÚptrtyÚsrc_dataÚ
src_shapesÚsrc_stridesÚsrctyÚuse_copys       €€€€€€€€€€€€rD   Úsrc_getitemz&maybe_copy_source.<locals>.src_getitem-  s  ø€ Ü×%Ñ% g¨uÓ5ˆØ�_‰_˜X¨eˆ_Ó4ð 	Ñ8L¸À)Øñ Ø—‘Ü×-Ñ-¨g°wØ.5¯l©l¸9Ó.EØ.9¸<Ø.9¸>Ø9>ô	@ð
 ô÷ð ñ Ø—‘Ü×-Ñ-¨g°wÀØ.8¸+Ø.3¯l©l¸NØ9>ô@ð ô÷÷	ô  ˜ '¨5°'·,±,¸wÓ2GÓHÐH÷ð ú÷ð ú÷	ð 	ús:   «C5±=CÁ.
C5Á88C)Â0C5ÃC&	Ã"C5Ã)C2	Ã.C5Ã5C>c                  óÔ   •— ‰j                  ‰d¬«      5  ‰j                  ‰«      } ‰j                  | ‰«      } ‰j                  j	                  ‰| «       d d d «       y # 1 sw Y   y xY w)NFri  )r   r?   Úbitcastr  Úfree)r›   r>   r~   r2  r;  Ú	voidptrtys    €€€€€rD   Úsrc_cleanupz&maybe_copy_source.<locals>.src_cleanupA  sZ   ø€ à�_‰_˜X¨eˆ_Ó4ñ 	,Ø—<‘< 	Ó*ˆDØ—?‘? 4¨Ó3ˆDØ�K‰K×Ñ˜W dÔ+÷	,÷ 	,ñ 	,ús   •A AÁA')r:   r
   r   r   rÂ   r­   r²   r  Úallocater>  r$  r¹   r   r�   Ú	loop_nestr  r	  r?   )r~   r>   r;  r:  Úsrcr8  r9  r7  Ú	allocsizer›   rÎ   r£   r/  Údest_ptrr<  rA  r2  r3  r4  r5  r6  r@  s   ```` ```        @@@@@@rD   Úmaybe_copy_sourcerG    sn  ÿü€ à�M‰M€Eà€KÜ×)Ñ)¨'°8Ó<€IØ€KØ€Là	�‰˜¨%ˆÓ	0ñ ;ð —K‘K §¡¨c¯j©jÓ9ˆ	Ø�{‰{×#Ñ# G¨YÓ7ˆØ—I‘Iˆ	Ø�‰˜t UÓ+ˆØ�‰�d˜IÔ&ð ×'Ñ'¬¯
©
Ó3ˆä×Ñ˜w¨
°FÓ;ð 	;¸wÜ×/Ñ/°¸À(Ø0:¸KØ05·±¸góGˆGô ×0Ñ0°¸'À4Ø1<¸lØ1<¸góGˆHð �M‰M˜'Ÿ,™, wÓ/°Ô:÷	;÷;÷,I÷ I÷(,ð ,ð ˜Ð#Ð#÷I	;ð 	;ú÷;ð ;ús&   Á	B)FÃ2A"FÅFÆF
	ÆFÆFc                 óæ  — | j                  t        j                  d«      }| j                  t        j                  d«      }t        |«      t        |«      kD  r-t        |«      t        |«      z
  }|g|z  |z   }|g|z  |z   }||fS t        |«      t        |«      k  rÂt        |«      t        |«      z
  }|d| D �cg c]  }|j	                  d||«      ‘Œ }	}t        j                  |j                  |	t        j                  «      }
|j                  |j                  |
«      d¬«      5  d}| j                  j                  |t        |f«       ddd«       ||d }||d }||fS c c}w # 1 sw Y   ŒxY w)ae  
    Preprocess dimension for broadcasting.
    Returns (shapes, strides) such that the ndim match *target_shape*.
    When expanding to higher ndim, the returning shapes and strides are
    prepended with ones and zeros, respectively.
    When truncating to lower ndim, the shapes are checked (in runtime).
    All extra dimension must have size of 1.
    r   rH   Nrò  Fri  z,cannot broadcast source array for assignment)r¿   r   r‘   r    rõ  Ú	functoolsÚreducer#  r
   Útrue_bitr   rË  rk  rl  r¸   )r~   r>   r  r¬   Útarget_shaper  r9  Únd_diffrA  Ú
dim_is_oneÚacceptedrÍ   s               rD   Ú_bc_adjust_dimensionrP  K  sy  € ð ×Ñ¤§¡¨QÓ/€DØ
×
Ñ
œuŸ{™{¨AÓ
.€Cô ˆ<Óœ3˜v›;Ò&Ü�lÓ#¤c¨&£kÑ1ˆà�˜‘ 6Ñ)ˆØ�&˜7Ñ" WÑ,ˆð" �7ˆ?Ðô 
ˆ\Ó	œS ›[Ò	(ä�f“+¤ LÓ 1Ñ1ˆà & x¨Ð 0ö2Øð ×+Ñ+¨D°"°cÕ:ð 2ˆ
ð 2ä×#Ñ# G§L¡L°*Ü$+×$4Ñ$4ó6ˆð �_‰_˜WŸ\™\¨(Ó3¸Eˆ_ÓBñ 	KØ@ˆCØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷	Kð ˜˜Ð!ˆØ˜'˜(Ð#ˆà�7ˆ?Ðùò2÷
	Kð 	Kús   Â:E"Ä'%E'Å'E0c           
      óŒ  — g }g }| j                  t        j                  d«      }| j                  t        j                  d«      }t        ||«      D �	�
cg c]  \  }	}
|j	                  d|	|
«      ‘Œ }}	}
|D �
cg c]  }
|j	                  d|
|«      ‘Œ }}
t        ||«      D ��cg c]  \  }}|j                  ||«      ‘Œ }}}t        |||«      D ��	�
cg c]  \  }}	}
|j                  ||	|
«      ‘Œ }}	}}
t        ||«      D ��
cg c]  \  }}
|j                  |||
«      ‘Œ }}}
||fS c c}
}	w c c}
w c c}}w c c}
}	}w c c}
}w )zü
    Broadcast shapes and strides to target_shape given that their ndim already
    matches.  For each location where the shape is 1 and does not match the
    dim for target, it is set to the value at the target and the stride is
    set to zero.
    r   rH   rh  rò  )r¿   r   r‘   r¡   r  r#  rÞ  )r~   r>   r  r¬   rL  Ú	bc_shapesÚ
bc_stridesr  r9  ÚtarÚoldÚmismatchÚ
src_is_oneÚxÚyÚpredsÚps                    rD   Ú_bc_adjust_shape_stridesr\  p  sX  € ð €IØ€JØ×Ñ¤§¡¨QÓ/€DØ
×
Ñ
œuŸ{™{¨AÓ
.€Cô !$ L°&Ó 9÷;Ù�C˜ð ×#Ñ# D¨#¨sÕ3ð ;€Hñ ;àAGÖH¸#�'×%Ñ% d¨C°Õ5ÐH€JÐHÜ,/°¸*Ó,E×F¡D A qˆW�\‰\˜!˜QÕÐF€EÑFä$'¨¨|¸VÓ$D÷Fð FÙ �Q˜˜Sð —‘  3¨Õ,ð F€Iò Fô !$ E¨7Ó 3÷5Ù�a˜ð —.‘.  D¨#Õ.ð 5€Jñ 5à�jÐ Ð ùó;ùâHùÛFùôFùó5s   ÁD(Á8D.Â#D3ÃD9ÄE c           	      óò  — t        j                  ||j                  «      }t        j                  ||j                  «      }t	        | ||||«      \  }}t        | ||||«      \  }}|j                  t        |«      d¬«      } t        |«      | |«      }t        ||j                  t        j                  ||«      t        j                  ||«      |j                  |j                  |j                  ¬«       ||fS )zX
    Broadcast the given array to the target_shape.
    Returns (array_type, array)
    ÚA©rq   r	  rE  )r
   rÀ   rf   r¬   rP  r\  Úcopyr    ry   rÕ   r›   rk   r­   r«   r®   )	r~   r>   Úarrtyper  rL  r  r¬   Únew_arrtypeÚnew_arrs	            rD   Ú_broadcast_to_shaperd  ‡  sà   € ô ×!Ñ! '¨3¯9©9Ó5€FÜ×"Ñ" 7¨C¯K©KÓ8€Gä*¨7°G¸VÀWØ+7ó9�O€FˆGä.¨w¸ÀØ/6¸óF�O€FˆGà—,‘,¤C¨Ó$5¸c�,ÓB€Kà%Œj˜Ó% g¨wÓ7€GÜ�7ØŸ™Ü ×+Ñ+¨G°VÓ<Ü"×-Ñ-¨g°wÓ?ØŸL™LØŸ;™;ØŸ*™*õ&ð ˜ÐÐrF   c                 ó^   — |j                  |j                  dd¬«      } |||«      }d„ }||fS )Nr^  T)rq   r	  Úreadonlyc                 ón  — |\  }}|j                   d   } t        |«      | ||«      }t        j                  ||«      }t	        | ||||«      \  }}t        |dt        | j                  |j                  j                  d«      «      d «      «       |j                  «       }	t        | ||j                  |	«      S )Nr   r®   )rý   ry   r
   rÀ   rd  rÆ   r   r¹   r³   rº   r  r    rÿ   )
r~   r>   r\   rý   rD  Úshape_r:  r  Údestr	  s
             rD   Úcodegenz$_numpy_broadcast_to.<locals>.codegen¦  s­   € Ø‰ˆˆVØ—‘˜‘ˆàŒj˜Ó ¨°#Ó6ˆÜ×%Ñ% g¨vÓ6ˆÜ% g¨w¸¸sÀFÓL‰ˆˆ4ô 	��h¤Ø×&Ñ& t§¡×'?Ñ'?ÀÓ'IÓJØó!ô 	ð �n‰nÓˆÜ  ¨'°3·?±?ÀCÓHÐHrF   )r`  rÁ   )Ú	typingctxrÇ   rf   Úretr\   rj  s         rD   Ú_numpy_broadcast_torm  ¡  s8   € à
�*‰*˜%Ÿ+™+¨c¸Dˆ*Ó
A€CÙ
ˆe�UÓ
€CòIð �ˆ<ÐrF   c                 óD   — |j                  d¬«      } ||«      }d„ }||fS )NT©rf  c                 óú   — |\  }|j                   d   } t        |«      | ||«      }t        j                  |j                  j
                  «      |_        |j                  «       }t        | ||j                  |«      S rç   )	rý   ry   r
   Úget_null_valuer®   r:   r  r    rÿ   )r~   r>   r\   rý   rD  r:  ri  r	  s           rD   rj  z#get_readonly_array.<locals>.codegen¾  sh   € Ø‰ˆØ—‘˜‘ˆà Œz˜%Ó  ¨'°3Ó7ˆä×,Ñ,¨T¯[©[×-=Ñ-=Ó>ˆŒØ�n‰nÓˆÜ  ¨'°3·?±?ÀCÓHÐHrF   )r`  )rk  r  rl  r\   rj  s        rD   Úget_readonly_arrayrr  ¸  s/   € ð �(‰(˜Dˆ(Ó
!€CÙ
ˆc‹(€CòIð �ˆ<ÐrF   c                 ó  — | j                   }t        |«      }t        |«      }||kD  rt        d«      ‚|D ]  }|dk  sŒ	t        d«      ‚ d}||z
  }||k  r1||   }||   }	||	k(  s|dk(  r|dz  }|dz  }nt        d«      ‚||k  rŒ0y y )NzDinput operand has more dimensions than allowed by the axis remappingr   z4all elements of broadcast shape must be non-negativerH   z=operands could not be broadcast together with remapped shapes)rf   r    r¸   )
rÇ   Ú
dest_shapeÚ	src_shapeÚsrc_ndimÚ	dest_ndimr”   Ú	src_indexÚ
dest_indexÚsrc_dimÚdest_dims
             rD   Ú_can_broadcastr|  Ê  sÊ   € à—‘€IÜ�9‹~€HÜ�J“€IØ�)ÒÜð 1ó 2ð 	2àò -ˆØ�!‹8Üð ,ó -ð -ð-ð €IØ˜XÑ%€JØ
�hÒ
Ø˜IÑ&ˆØ˜jÑ)ˆð �hÒ '¨Q¢,Ø˜‰NˆIØ˜!‰O‰Jäð 4ó 5ð 5ð �hÕ
rF   c                 ó\   — t        j                  | «      } t        | |«       t        | |«      S rP  )ÚnpÚasarrayr|  rm  ©rÇ   rf   s     rD   Ú_default_broadcast_to_implr�  ê  s'   € Ü�J‰J�uÓ€EÜ�5˜%Ô Ü˜u eÓ,Ð,rF   c           	      ód  — t        | «      st        j                  d«      ‚t        |t        j
                  «      rd„ }|S t        |t        j                  «      rAt        |j                  t        j
                  «      sd}t        j                  |«      ‚t        S t        |t        j                  «      ra|j                  dkD  rRt        |D �cg c]  }t        |t        j                  «      ‘Œ c}«      sd|› d�}t        j                  |«      ‚t        S t        |t        j                  «      rc|j                  dk(  rTt        | t        j                  «      xr | j                  dk(  }t        | «      s|rd„ }|S d}t        j                  |«      ‚d	|z  }t        j                  |«      ‚c c}w )
Nz-The first argument "array" must be array-likec                 ó0   — t        j                  | |f«      S rP  )r~  Úbroadcast_tor€  s     rD   ré   z numpy_broadcast_to.<locals>.impl÷  s   € Ü—?‘? 5¨5¨(Ó3Ð3rF   z7The second argument "shape" must be a tuple of integersr   ú"z," object cannot be interpreted as an integerc                 óB   — t        j                  | «      } t        | «      S rP  )r~  r  rr  r€  s     rD   ré   z numpy_broadcast_to.<locals>.impl  s   € ô Ÿ
™
 5Ó)�Ü)¨%Ó0Ð0rF   z/Cannot broadcast a non-scalar to a scalar arrayz:The argument "shape" must be a tuple or an integer. Got %s)r   r	   rê   r˜   r   rš   ÚUniTupler|   r�  ÚTuplerÁ   ÚallÚIntegerLiteralr™   rq   r   )rÇ   rf   ré   rÍ   ÚtypÚis_scalar_arrays         rD   Únumpy_broadcast_tor�  ð  sa  € ä˜EÔ"Ü× Ñ ð "1ó 2ð 	2ô �%œŸ™Ô'ò	4àˆä	�Eœ5Ÿ>™>Ô	*Ü˜%Ÿ+™+¤u§}¡}Ô5ØKˆCÜ×$Ñ$ SÓ)Ð)Ü)Ð)ä	�Eœ5Ÿ;™;Ô	'¨E¯K©K¸!ªOäÀUÖK¸c”J˜s¤E×$8Ñ$8Õ9ÒKÔLØ�e�WÐHÐIˆCÜ×$Ñ$ SÓ)Ð)Ü)Ð)Ü	�Eœ5Ÿ;™;Ô	'¨E¯K©K¸1Ò,<Ü$ U¬E¯K©KÓ8ÒL¸U¿Z¹ZÈ1¹_ˆÜ˜%Ô ¡Oò1ð
 ˆKð DˆCÜ×$Ñ$ SÓ)Ð)ðØñ ˆä× Ñ  Ó%Ð%ùò+ Ls   Ã!F-c                 óÐ   — t        t        |«      «      D ]O  }|t        |«      z
  |z   }||   }|dk  rt        d«      ‚|dk(  rŒ/| |   dk(  r|| |<   Œ=| |   |k7  sŒFt        d«      ‚ y )Nr   ú#negative dimensions are not allowedrH   z=shape mismatch: objects cannot be broadcast to a single shape)r9   r    r¸   )ÚrÚmrf   rn   rÓ   Útmps         rD   Únumpy_broadcast_shapes_listr“    sƒ   € ä”3�u“:Óò 3ˆØ”�E“
‰N˜QÑˆØ�A‰hˆØ�Š7ÜÐBÓCÐCØ�!Š8ØØˆQ‰4�1Š9ØˆAˆaŠDØˆq‰T�S‹[Üð 2ó 3ð 3ñ3rF   c                  ó|  ‡‡	— t        | «      D ]¸  \  }}t        |t        j                  «      }t        |t        j                  «      xr$ t        |j
                  t        j                  «      }t        |t        j                  «      xr t        |j                  «      dk(  }|rŒ—|rŒš|rŒ�d|› d|› �}t        j                  |«      ‚ dŠ| D ]Y  }t        |t        j                  «      rt        ‰d«      ŠŒ*t        |t        j                  «      sŒEt        ‰t        |«      «      ŠŒ[ ‰dk(  rd„ S d‰z  Š	ˆˆ	fd„}|S )Nr   z	Argument z* must be either an int or tuple[int]. Got rH   c                   ó   — yr©  r…  ©rý   s    rD   ú<lambda>z+ol_numpy_broadcast_shapes.<locals>.<lambda>B  ó   � rF   ©rH   c                  ó  •— dg‰z  }‰}t        | «      D ]M  }t        |t        «      rt        |«      dkD  rt	        |‰|«       Œ/t        |t
        «      sŒ@t	        |‰|f«       ŒO t        |«      D ]  \  }}t        |||«      }Œ |S r½  )r   r˜   r»   r    r“  r½   rô   r0   )rý   r�  rY  Úargr“   Úelemr‘  Útup_inits         €€rD   ré   z'ol_numpy_broadcast_shapes.<locals>.implF  s‹   ø€ à��a‘ˆAØˆCÜ% dÓ+ò >�Ü˜c¤5Ô)¬c°#«h¸ªlÜ/°°1°cÕ:Ü ¤SÕ)Ü/°°1°s°fÕ=ð	>ô
 ' q›\ò 4‘	��TÜ# C¨¨dÓ3‘ð4àˆJrF   )rô   r˜   r   rš   r‡  r|   rˆ  r    r	   rê   Úmaxr\  )
rý   r“   r›  Úis_intÚis_int_tupleÚis_empty_tuplerÍ   ré   r‘  r�  s
           @@rD   Úol_numpy_broadcast_shapesr¢  ,  s  ù€ ô ˜d“Oò *‰ˆˆSÜ˜C¤§¡Ó/ˆÜ! #¤u§~¡~Ó6ò 1Ü�s—y‘y¤%§-¡-Ó0ð 	ä# C¬¯©Ó5ÒM¼#¸c¿i¹i».ÈAÑ:MˆÚš,ª.Ø˜s˜eð $Ø˜ð ˆCä×$Ñ$ SÓ)Ð)ð*ð 	
€AØò !ˆÜ�cœ5Ÿ=™=Ô)Ü�A�q“	‰AÜ˜œUŸ_™_Õ-Ü�A”s˜3“xÓ ‰Að	!ð 	ˆA‚vÙÐà˜!‘8ˆõ	ð ˆrF   c                  ó   ‡‡— t        | «      D ])  \  }}t        |«      rŒt        j                  d|› d�«      ‚ d }d }| D ]]  }t	        |t
        j                  t
        j                  f«      r|j                  }n|}|€|}ŒA||k7  sŒGt        j                  d| › �«      ‚ dŠt        | «      D ]“  \  }}t	        |t
        j                  «      rt        ‰|j                  «      ŠŒ7t	        |t
        j                  t
        j                  t
        j                  f«      rt        ‰d«      ŠŒ}t        j                  d|› �«      ‚ d‰z  Šˆˆfd„}|S )	Nz
Argument "z" must be array-likezTMismatch of argument types. Numba cannot broadcast arrays with different types. Got r   rH   zUnhandled type rò   c                  ó`  •— dg‰z  }t        | «      D ],  }t        |‰t        j                  |«      j                  «       Œ. ‰}t        ‰«      D ]  }t        ||||   «      }Œ g }t        | «      D ]:  }|j                  t        j                  t        j                  |«      |«      «       Œ< |S r§  )	r   r“  r~  r  rf   r9   r0   rj   r„  )rý   rf   rÇ   rY  rn   Úoutsr‘  r�  s         €€rD   ré   z$numpy_broadcast_arrays.<locals>.implx  s¯   ø€ ð
 ��a‘ˆÜ# DÓ)ò 	KˆEÜ'¨¨q´"·*±*¸UÓ2C×2IÑ2IÕJð	Kð ˆä�q“ò 	2ˆAÜ  Q¨¨a©Ó1‰Cð	2ð ˆÜ# DÓ)ò 	AˆEØ�K‰KœŸ™¬¯
©
°5Ó(9¸3Ó?Õ@ð	AàˆrF   )rô   r   r	   rê   r˜   r   r™   r\  r|   ÚArrayCompatiblerž  rq   ÚNumberræ  )rý   r“   r›  Úunified_dtypeÚdtré   r‘  r�  s         @@rD   Únumpy_broadcast_arraysrª  U  sQ  ù€ ô ˜d“Oò 6‰ˆˆSÜ Õ$Ü×$Ñ$ z°#°ð 75ð &5ó 6ð 6ð6ð
 €MØ	€BØò 4ˆÜ�cœEŸK™K¬¯©Ð9Ô:Ø—‘‰BàˆBàÐ Ø‰MØ˜bÓ Ü×$Ñ$ð &,à,0¨6ð&3ó 4ð 4ð4ð 	
€AÜ˜d“Oò >‰ˆˆSÜ�cœ5×0Ñ0Ô1Ü�A�s—x‘xÓ ‰AÜ˜œeŸl™l¬E¯M©M¼5¿?¹?ÐKÔLÜ�A�q“	‰Aä×$Ñ$ °s°eÐ%<Ó=Ð=ð>ð �a‰x€Hõð( €KrF   c                 ó   — t         ‚)z¶Targets should implement this if they wish to specialize the error
    handling/messages. The overload implementation takes two tuples as arguments
    and should raise a ValueError.rÚ   ©r8  Úindex_shapes     rD   Úraise_with_shape_contextr®  �  ó
   € ô ÐrF   Úgeneric)Útargetc                 óö   — t        | t        j                  «      r_t        |t        j                  «      rD| j                  |j                  k(  r*t        | j                  t        j                  «      rd„ }|S y y y y )Nc                 ó   — t        d«      ‚)Nz0cannot assign slice from input of different sizerè   r¬  s     rD   ré   z1ol_raise_with_shape_context_generic.<locals>.implŸ  s   € ÜÐOÓPÐPrF   ©r˜   r   r‡  r|   rš   ©r8  r­  ré   s      rD   Ú#ol_raise_with_shape_context_genericr¶  –  sg   € ô 	�:œuŸ~™~Ô.Ü�;¤§¡Ô/Ø×Ñ˜K×-Ñ-Ò-Ü�z×'Ñ'¬¯©Ô7ò	Qàˆð	 8ð 	.ð 	0ð 	/rF   ÚCPUc                 óö   — t        | t        j                  «      r_t        |t        j                  «      rD| j                  |j                  k(  r*t        | j                  t        j                  «      rd„ }|S y y y y )Nc           	      óL  — t        | «      dk(  r
d| d   › d�}n,ddj                  | D �cg c]  }t        |«      ‘Œ c}«      › d�}t        |«      dk(  r
d|d   › d�}n,ddj                  |D �cg c]  }t        |«      ‘Œ c}«      › d�}d|› d|› �}t        |«      ‚c c}w c c}w )	NrH   ú(r   z,)ú, ú)zcannot assign slice of shape z from input of shape )r    ÚjoinÚstrr¸   )r8  r­  Ú	shape_strrX  Ú	index_strrÍ   s         rD   ré   z-ol_raise_with_shape_context_cpu.<locals>.impl«  s¼   € Ü�:‹ !Ò#Ø 
¨1¡˜¨bÐ1‘	à §	¡	¸:Ö*F°a¬3¨q­6Ò*FÓ GÐHÈÐJ�	Ü�;Ó 1Ò$Ø ¨A¡Ð/¨rÐ2‘	à §	¡	¸;Ö*G°a¬3¨q­6Ò*GÓ HÐIÈÐK�	Ø2°9°+ð >Ø%˜;ð(ˆCä˜S“/Ð!ùò +Gùò +Hs   ©B
Á-B!
r´  rµ  s      rD   Úol_raise_with_shape_context_cpurÁ  ¤  sf   € ä�:œuŸ~™~Ô.Ü�;¤§¡Ô/Ø×Ñ˜K×-Ñ-Ò-Ü�z×'Ñ'¬¯©Ô7ò	"ð ˆð 8ð 	.ð 	0ð 	/rF   c                 ó^  ‡ ‡‡(‡)‡*— |j                   \  }}Š*|\  }}Š( t        |«      ‰ ‰|«      }t        j                  ‰|j                  «      }	t        j                  ‰|j
                  «      }
|j                  }t        ‰ ‰||||«      }|j                  «        d„ }t        ‰*t        j                  «      �r‰*j                  Š)|j                  «       } t        ‰*«      ‰ ‰‰(«      Š(t        ‰ ‰‰*‰(|«      \  Š*Š(t        j                  ‰‰(j                  «      }t        j                  ‰‰(j
                  «      }‰(j                  }t        j                  }t!        |«      t!        |«      k(  sJ ‚t#        ||«      D ](  \  }}‰j%                  |‰j'                  d||«      «      }Œ* ‰j)                  |d¬«      5   |‰ ‰||«       ddd«       t+        ‰ ‰‰*‰(|||«      \  }}|j-                  |
|j.                  «      \  }}t1        ‰ ‰|||«      \  }}t3        ‰ ‰||||«      }t5        ‰ ‰|‰*‰(|||«      \  }}n×t        ‰*t        j6                  «      r³‰*j                  Š)|j                  «       }t!        |«      dk(  sJ ‚‰ j9                  t         t;        t        j<                  ‰*«      «      } |‰‰(f«      }‰j'                  d|d   |«      }‰j)                  |d¬«      5   |‰ ‰|f|d   f«       ddd«       ˆˆ ˆ(ˆ)ˆ*fd„}d	„ }n
‰*Š)ˆ(fd
„}d„ }‰ j?                  t        j@                  d«      } |jC                  «       \  }!}"tE        |"«      }"|jF                  D ]  }#|"jI                  |#| «       Œ |"D �$cg c]  }$|$€Œ|$‘Œ	 }%}$ ||%«      }&‰ jK                  ‰|&‰)|j                  «      }&t        jL                  ‰ ‰||	|
|jN                  |!d‰ jP                  ¬«	      }'tS        ‰ ‰||&|'«       |jU                  «         |«        ‰ jW                  «       S # 1 sw Y   �ŒMxY w# 1 sw Y   �Œ/xY wc c}$w )zÇ
    Implement slice assignment for arrays.  This implementation works for
    basic as well as fancy indexing, since there's no functional difference
    between the two for indexed assignment.
    c           	      óâ  — | j                   j                  t        «      }t        j                  t        j
                  t        |«      «      t        j                  t        j
                  t        |«      «      f}|j                  | j                   |i «      }| j                  ||«      } ||| j                  ||j                  d   |«      | j                  ||j                  d   |«      f«       y ©Nr   rH   )Útyping_contextÚresolve_value_typer®  r   r‡  Úint64r    Úget_call_typerR   Ú
make_tuplerý   )r~   r>   r8  r­  ÚfntyÚargtysÚ	raise_sigÚfuncs           rD   Úraise_shape_mismatch_errorz2fancy_setslice.<locals>.raise_shape_mismatch_errorÌ  sÈ   € ð ×%Ñ%×8Ñ8Ü$ó&ˆä—.‘.¤§¡¬c°*«oÓ>Ü—.‘.¤§¡¬c°+Ó.>Ó?ðAˆà×&Ñ& w×'=Ñ'=¸vÀrÓJˆ	Ø×#Ñ# D¨)Ó4ˆÙˆW�w×)Ñ)¨'°9·>±>À!Ñ3DØ*4ó6à×)Ñ)¨'°9·>±>À!Ñ3DØ*5ó7ð8õ 	9rF   rh  Fri  NrH   r   c                 ó”   •— | \  }‰j                  t        j                  t        ‰‰t        j
                  «      «      } |‰‰|f«      S rP  )rR   ÚoperatorÚgetitemr$   r   r�   )r.  r“   Úgetitem_implr>   r~   rD  Ú	src_dtyper:  s      €€€€€rD   r<  z#fancy_setslice.<locals>.src_getitem  sF   ø€ Ø!‰DˆCØ"×/Ñ/Ü× Ñ Ü˜) U¬E¯J©JÓ7óˆLñ   ¨#¨s¨Ó4Ð4rF   c                   ó   — y rP  r…  r…  rF   rD   rA  z#fancy_setslice.<locals>.src_cleanup  ó   € ØrF   c                 ó   •— ‰S rP  r…  )r.  rD  s    €rD   r<  z#fancy_setslice.<locals>.src_getitem$  s   ø€ ØˆJrF   c                   ó   — y rP  r…  r…  rF   rD   rA  z#fancy_setslice.<locals>.src_cleanup'  rÕ  rF   r-  ),rý   ry   r
   rÀ   rf   r¬   r›   rã  rw  r˜   r   r  r|   r}  rd  ró  r    r¡   rô  r  r   r!  rþ  r­   r  r)  rG  ÚSequencerR   r$   r�   r¿   r‘   r  r¼   rå  rì  rŽ   r  r	  rH  r‹   r  rq  )+r~   r>   r\   rý   r¢   r£   r×   r  r  Údest_shapesÚdest_stridesÚ	dest_datarê  rÎ  r­  r8  r9  r7  Úshape_errorÚurÔ   Ú	src_startÚsrc_endÚ
dest_lowerÚ
dest_upperÚ
dest_startÚdest_endr;  r<  rA  Úlen_implÚseq_lenr  Údest_indicesr  rn   rÄ  r.  rŠ   rF  rD  rÓ  r:  s+   ``                                      @@@rD   r^  r^  º  s0  ü€ ð —h‘h�O€Eˆ1ˆeØ�K€CˆˆCà
Œ*�UÓ
˜G W¨cÓ
2€CÜ×&Ñ& w°·	±	Ó:€KÜ×'Ñ'¨°·±Ó=€LØ—‘€Iä˜7 G¨U°CØ&¨ó1€Gà‡O�OÔò9ô �%œŸ™Õ&à—K‘Kˆ	Ø×'Ñ'Ó)ˆØŒj˜Ó ¨°#Ó6ˆä(¨°'¸5À#Ø)4ó6‰
ˆˆsä×)Ñ)¨'°3·9±9Ó=ˆ
Ü×*Ñ*¨7°C·K±KÓ@ˆØ—8‘8ˆô ×'Ñ'ˆÜ�;Ó¤3 z£?Ò2Ð2Ð2ä˜
 KÓ0ò 	G‰DˆAˆqØ!Ÿ+™+ kØ&-×&9Ñ&9¸$ÀÀ1Ó&EóG‰Kð	Gð �_‰_˜[°ˆ_Ó7ñ 	4Ù& w°¸Ø'2ô4÷	4ô
 6°g¸wÈØ69¸:Ø6AÀ8óMÑˆ	�7ð ")×!:Ñ!:¸<Ø;>¿<¹<ó"IÑˆ
�Jä5°g¸wØ6@À*Ø6?ó AÑˆ
�Hô ' w°¸ÀGØ'1°8ó=ˆô $5°W¸gÀxØ5:¸CÀØ5@À(ó$LÑ ˆ‘[ô 
�Eœ5Ÿ>™>Ô	*Ø—K‘Kˆ	ð ×'Ñ'Ó)ˆÜ�;Ó 1Ò$Ð$Ð$Ø×'Ñ'¬¬Y´u·z±zÀ5Ó-IÓJˆÙ˜7 S FÓ+ˆà×)Ñ)¨$°¸A±ÀÓHˆà�_‰_˜[°ˆ_Ó7ñ 	:Ù& w°¸'¸Ø(3°A©Ð'8ô:÷	:÷	5ð 	5ó	ð ˆ	ô	ò	ð ×Ñ¤§¡¨QÓ/€Dà"×.Ñ.Ó0Ñ€L�&ô �&‹\€Fð
 �_‰_ò ˆØ�‰�a˜Õðð "(Ö9˜A¨1©=’aÐ9€NÐ9á
�nÓ
%€Cð �,‰,�w  Y°·±Ó
<€Cô ×(Ñ(¨°'¸9Ø)4°lØ).¯©°|Ø49Ø5<×5OÑ5Oô	Q€Hô
 ˆw˜ ¨¨XÔ6à×ÑÔá„Mà×"Ñ"Ó$Ð$÷A	4ñ 	4ú÷B	:ñ 	:üòV :s$   Æ9PËPÍ4P*Í<P*ÐPÐP'c           
      óÐ  — |j                   d   }|j                   dd  }|d   }|dd  }t        ||«      D ��	cg c]'  \  }}	| j                  ||	|t        j                  «      ‘Œ) }}}	t        j                  |||d   j                  «      }
t        j                  t        j                  t        |«      ¬«      }t        j                  |j                  ||«      }||
f}||fS c c}	}w )Nr   rH   ©r|   rÁ   )rý   r¡   rŽ   r   r�   r
   rk   r:   r‡  r    r   r$   rÿ   )r~   r>   r\   rý   r×   Údimtysr  rm   rS  rŠ   rf   ÚshapetyÚnew_sigÚnew_argss                 rD   Úvararg_to_tuplerí  U  sÖ   € Ø�H‰H�Q‰K€EØ�X‰X�a�bˆ\€Fà
ˆq‰'€CØ��ˆ8€Dô ˜v tÓ,÷.Ù��Cð �L‰L˜ # r¬5¯:©:Õ6ð .€Dñ .ô ×Ñ˜w¨¨d°1©g¯l©lÓ;€Eä�n‰n¤5§:¡:´S¸³YÔ?€GÜ×Ñ˜sŸ™°°wÓ?€GØ�Eˆz€Hà�HÐÐùó.s   ¸,C"zarray.transposec                 ó>   — t        | ||j                  d   |d   «      S rç   )Úarray_Trý   ©r~   r>   r\   rý   s       rD   Úarray_transposerñ  h  s   € ä�7˜G S§X¡X¨a¡[°$°q±'Ó:Ð:rF   c                 óÚ   — t        | «      t        t        | «      «      k7  rt        d«      ‚t        |«      }| D ]   }||k\  st        |«      |kD  sŒt        d«      ‚ ||    |d d  ||    |d d  y )Nzrepeated axis in transposez2axis is out of bounds for array of given dimension)r    rµ   r¸   Úabs)rÞ   rf   r¬   r‰  rX  s        rD   Úpermute_arraysrô  m  sy   € Ü
ˆ4ƒy”Cœ˜D›	“NÒ"ÜÐ5Ó6Ð6Ü
ˆe‹*€CØò 0ˆØ�Š8”s˜1“v “|Üð /ó 0ð 0ð0ð
 �T‰{€E‰!€HØ˜‘€G‰A�JrF   c           
      óv  — |j                   d   } t        |«      | ||d   «      }|j                   d   |d   }}|j                  |j                  }	}| j	                  t
        j                  «      }
t        j                  |
|«      }||j                  |j                  g}|D �cg c]  }t        j                  ||«      ‘Œ }}t        ||«      D ]  \  }}|j                  ||«       Œ t        j                  |	dd¬«      }| j!                  t
        j                  | j#                  |
«      «      }|D �cg c]  } t        |«      | |«      ‘Œ }}t        ||«      D ]T  \  }}t%        ||j'                  ||
j)                  «       «      | j!                  t
        j                  |«      g|g|d ¬«       ŒV | j+                  |t,        t/        j0                  t
        j2                  |||«      |D �cg c]  }|j5                  «       ‘Œ c}«        t        |j6                  «      | |«      }t%        ||j8                  |j;                  |d   «      |j;                  |d   «      |j<                  |j>                  |j@                  ¬«       |j5                  «       }tC        | ||j6                  |«      S c c}w c c}w c c}w )Nr   rH   r¦   ©r|   rq   r	  ©r›   rf   r¬   r­   r«   ro  rE  )"rý   ry   rÁ   r|   r¹   r   r�   r   Ú	ArrayTyperf   r¬   r
   rX   r¡   r$  r™   r¿   r}   rÕ   r>  Ú
as_pointerÚcompile_internalrô  r   r$   Úvoidr  rÿ   r›   r?   r­   r«   r®   r    )r~   r>   r\   rý   r×   r  ÚaxistyrÞ   Únum_axisr|   rŠ  Úll_ary_sizeÚarysr  Úll_arysrD  ÚdstÚ	np_ary_tyÚnp_itemsizeÚnp_arysÚnp_aryÚll_aryÚarl  r	  s                            rD   Úarray_transpose_tupler  |  sg  € à�H‰H�Q‰K€EØ
Œ*�UÓ
˜G W¨d°1©gÓ
6€Cà—8‘8˜A‘;  Q¡ˆD€FØ—l‘l F§L¡Lˆe€Hà×$Ñ$¤U§Z¡ZÓ0€GÜ—,‘,˜w¨Ó1€Kð �#—)‘)˜SŸ[™[Ð)€DØBFÖG¸QŒw×"Ñ" 7¨KÕ8ÐG€GÐGô ˜˜gÓ&ò  ‰ˆˆSØ�‰�c˜3Õð ô —‘ %¨a¸Ô<€IØ×&Ñ&¤u§z¡zØ'.×'=Ñ'=¸gÓ'FóH€Kð AEÖE¸1Ð$Œz˜)Ó$ W¨gÕ6ÐE€GÐEô ˜g wÓ/ò %‰ˆ�Ü�vØ#ŸO™O¨F°G×4FÑ4FÓ4HÓIØ%×2Ñ2´5·:±:¸xÓHÐIØ +˜}Ø +Ø#ö	%ð%ð ×Ñ˜W¤nÜ#×-Ñ-¬e¯j©jØ.7¸ÀIóOà5<Ö=°˜aŸk™k�mÒ=ô?ð &Œ*�S—_‘_Ó
% g¨wÓ
7€CÜ�3ØŸ™Ø Ÿ™ g¨a¡jÓ1Ø"Ÿ<™<¨°©
Ó3ØŸL™LØŸ;™;ØŸ*™*õ&ð �-‰-‹/€CÜ˜W g¨s¯©ÀÓDÐDùòO Hùò Fùò  >s   Â$J,Ä4J1Ç,J6c                 ó@   — t        | |||«      \  }}t        | |||«      S rP  )rí  r  ©r~   r>   r\   rý   rë  rì  s         rD   Úarray_transpose_varargr  ³  s(   € ä'¨°¸#¸tÓDÑ€GˆXÜ  ¨'°7¸HÓEÐErF   c                 ó|   — t        | t        j                  «      rt        j                  d«      ‚|€dd„}|S dd„}|S )Nz#np.transpose does not accept tuplesc                 ó"   — | j                  «       S rP  ©Ú	transpose©r  Úaxess     rD   Únp_transpose_implz*numpy_transpose.<locals>.np_transpose_impl¿  s   € Ø—;‘;“=Ð rF   c                 ó$   — | j                  |«      S rP  r  r  s     rD   r  z*numpy_transpose.<locals>.np_transpose_implÂ  s   € Ø—;‘;˜tÓ$Ð$rF   rP  )r˜   r   r\  r	   rê   )r  r  r  s      rD   Únumpy_transposer  ¹  sA   € ä�!”U—_‘_Ô%Ü× Ñ Ð!FÓGÐGà€|ó	!ð Ðó	%ð ÐrF   ÚTc                 ó4  — |j                   dk  r|}nù t        |«      | ||«      } t        |«      | |«      }t        j                  ||j                  |j                   «      }t        j                  ||j
                  |j                   «      }t        ||j                  t        j                  ||d d d…   «      t        j                  ||d d d…   «      |j                  |j                  |j                  ¬«       |j                  «       }t        | |||«      S )NrH   éÿÿÿÿrE  )rq   ry   r
   rÀ   rf   r¬   rÕ   r›   rk   r­   r«   r®   r  r    )	r~   r>   r‹  r  r	  r  rl  r  r¬   s	            rD   rï  rï  È  sä   € à
‡x�x�1‚}Ø‰àŒj˜‹o˜g w°Ó6ˆØŒj˜‹o˜g wÓ/ˆÜ×%Ñ% g¨s¯y©y¸#¿(¹(ÓCˆÜ×&Ñ& w°·±¸S¿X¹XÓFˆÜ�sØŸH™HÜ$×/Ñ/°¸ÁÀ"À¹ÓFÜ&×1Ñ1°'¸7Á4ÀRÀ4¹=ÓIØ #§¡Ø"Ÿ{™{Ø!Ÿj™jõ	*ð �m‰m‹oˆÜ˜W g¨s°CÓ8Ð8rF   c                 ó4  — t        | t        j                  «      st        j                  d«      ‚t        |t        j                  «      st        j                  d«      ‚t        |t
        t        j                  f«      st        j                  d«      ‚dd„}|S )Nz+The first argument "start" must be a numberz+The second argument "stop" must be a numberz+The third argument "num" must be an integerc                 ó\   — t        j                  | ||«      }t        j                  d|«      S )Ng      $@)r~  ÚlinspaceÚpower)r4  rß  ÚnumrY  s       rD   ré   znumpy_logspace.<locals>.implå  s%   € Ü�K‰K˜˜t SÓ)ˆÜ�x‰x˜˜aÓ Ð rF   ©é2   )r˜   r   r§  r	   rê   r½   rš   )r4  rß  r  ré   s       rD   Únumpy_logspacer  Ü  ss   € ä�eœUŸ\™\Ô*Ü× Ñ Ð!NÓOÐOÜ�dœEŸL™LÔ)Ü× Ñ Ð!NÓOÐOÜ�cœC¤§¡Ð/Ô0Ü× Ñ Ð!NÓOÐOó!ð €KrF   c                 óÞ  ‡— t        | t        j                  «      sd}t        j                  |«      ‚t        |t        j                  «      sd}t        j                  |«      ‚t        |t
        t        j                  f«      sd}t        j                  |«      ‚t        d„ | |fD «       «      r:t        t        j                  t        | «      t        |«      d «      «      Šdˆfd„	}|S dd„}|S )Nz%The argument "start" must be a numberz$The argument "stop" must be a numberú%The argument "num" must be an integerc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrP  ©r˜   r   ÚComplex©rR  r›  s     rD   rT  z"numpy_geomspace.<locals>.<genexpr>ú  ó   è ø€ Ò
C¨cŒ:�cœ5Ÿ=™=×)Ñ
CùrU  c                 óF  •— | dk(  s|dk(  rt        d«      ‚ ‰	| «      }  ‰	|«      }t        dk  rz| j                  dk(  |j                  dk(  z  }t        j                  | «      dk(  t        j                  |«      dk(  z  }d}|r| j
                  } |j
                  }d}|r)|  } | }| }nt        j                  | «      }| |z  } ||z  }t        j                  | «      }t        j                  |«      }t        j                  |||«      }|dkD  r| |d<   |dkD  r||d<   ||z  S )Nr   ú&Geometric sequence cannot include zerorn  r  rH   y              ð?)r¸   r   Úrealr~  ÚsignÚimagÚlog10Úlogspace)
r4  rß  r  Úboth_imaginaryÚboth_negativeÚout_signÚlogstartÚlogstopr%  Úresult_dtypes
            €rD   ré   znumpy_geomspace.<locals>.implþ  s'  ø€ Ø˜Šz˜T QšYÜ Ð!IÓJÐJÙ  Ó'ˆEÙ Ó%ˆDÜ˜vÒ%Ø"'§*¡*°¡/°d·i±iÀ1±nÑ!E�Ü!#§¡¨£°2Ñ!5¼"¿'¹'À$»-È2Ñ:MÑ N�Ø�Ù!Ø!ŸJ™J�EØŸ9™9�DØ!�HÙ Ø"˜F�EØ ˜5�DØ (˜y‘HäŸ7™7 5›>�Ø˜Ñ!�Ø˜Ñ �ä—x‘x “ˆHÜ—h‘h˜t“nˆGÜ—[‘[ ¨7°CÓ8ˆFð �QŠwØ!��q‘	Ø˜’7Ø!%�F˜2‘JØ˜fÑ$Ð$rF   c                 ó\  — | dk(  s|dk(  rt        d«      ‚t        j                  | «      dk(  t        j                  |«      dk(  z  }d}|r	|  } | }| }t        j                  | «      }t        j                  |«      }t        j                  |||«      }|dkD  r| |d<   |dkD  r||d<   ||z  S )Nr   r(  r  rH   )r¸   r~  r*  r,  r-  )r4  rß  r  r/  r0  r1  r2  r%  s           rD   ré   znumpy_geomspace.<locals>.impl!  sµ   € Ø˜Šz˜T QšYÜ Ð!IÓJÐJÜŸW™W U›^¨rÑ1´b·g±g¸d³mÀrÑ6IÑJˆMØˆHÙØ˜�Ø�u�Ø$˜9�Ü—x‘x “ˆHÜ—h‘h˜t“nˆGÜ—[‘[ ¨7°CÓ8ˆFð �QŠwØ!��q‘	Ø˜’7Ø!%�F˜2‘JØ˜fÑ$Ð$rF   r  )r˜   r   r§  r	   rê   r½   rš   rV  r   r~  Úresult_typer   )r4  rß  r  rÍ   ré   r3  s        @rD   Únumpy_geomspacer6  ì  sÅ   ø€ ä�eœUŸ\™\Ô*Ø5ˆÜ× Ñ  Ó%Ð%ä�dœEŸL™LÔ)Ø4ˆÜ× Ñ  Ó%Ð%ä�cœC¤§¡Ð/Ô0Ø5ˆÜ× Ñ  Ó%Ð%ä
Ñ
C°e¸T°]Ô
CÔCÜ!¤"§.¡.´¸%³Ü19¸$³Àó#Gó Hˆõ 	%ðp €Kó+	%ð* €KrF   c                 ó  — t        |t        t        j                  f«      st	        j
                  d«      ‚t        | t        j                  «      st	        j
                  d«      ‚| j                  dk  rt	        j                  d«      ‚dd„}|S )Nz*The second argument "k" must be an integerz'The first argument "m" must be an arrayro  úInput must be >= 2-d.c                 óB  — |dz  }|dk(  r| d d  S |dk(  r*t        j                  t        j                  | «      dd«      S |dk(  r(t        j                  t        j                  | «      «      S |dk(  r*t        j                  t        j                  | dd«      «      S t        ‚)Né   r   rH   ro  é   )r~  ÚswapaxesÚfliplrÚflipudrç  )r‘  rÓ   s     rD   ré   znumpy_rot90.<locals>.implD  s„   € Ø�‰EˆØ�Š6Ø‘Q�4ˆKØ�!ŠVÜ—;‘;œrŸy™y¨›|¨Q°Ó2Ð2Ø�!ŠVÜ—9‘9œRŸY™Y q›\Ó*Ð*Ø�!ŠVÜ—9‘9œRŸ[™[¨¨A¨qÓ1Ó2Ð2ä Ð rF   r™  )	r˜   r½   r   rš   r	   rê   r™   rq   ÚNumbaValueError)r‘  rÓ   ré   s      rD   Únumpy_rot90r@  9  sr   € ô �aœ#œuŸ}™}Ð-Ô.Ü× Ñ Ð!MÓNÐNÜ�aœŸ™Ô%Ü× Ñ Ð!JÓKÐKà‡v�v�‚zÜ×$Ñ$Ð%<Ó=Ð=ó!ð €KrF   c                 ó¨  — | j                  t        j                  «      }|j                  «       }| j                  t        j                  «      }	t        j                  |	||||||||	g«      }
t        j                  |j                  |
d«      } ||j                  «      }t        j                  ||j                  d«      dd«      }t        j                  ||j                  d«      dd«      } ||«      }t        j                  ||dd«      }t        j                  ||dd«      } |	d«      }|j                  ||||||||j                  |g«      }|S )a  
    Call into Numba_attempt_nocopy_reshape() for the given array type
    and instance, and the specified new shape.

    Return value is non-zero if successful, and the array pointed to
    by *newstrides* will be filled up with the computed results.
    Únumba_attempt_nocopy_reshaperf   r   r¬   )r¹   r   r�   rù  Úintcr   ÚFunctionTyper
   Úget_or_insert_functionr;   rq   ri   rh   Úcallr­   )r~   r>   r×   r  ÚnewndÚnewshapeÚ
newstridesrŠ  Úll_intp_starÚll_intcrÊ  ÚfnÚndrf   r¬   Ú
is_f_orderr	  s                    rD   Ú_attempt_nocopy_reshaperO  T  sE  € ð ×$Ñ$¤U§Z¡ZÓ0€GØ×%Ñ%Ó'€LØ×$Ñ$¤U§Z¡ZÓ0€GÜ�?‰?˜7à�˜|à�˜|à�ð%ó €Dô 
×	'Ñ	'¨¯©¸Ø(Fó
H€Bñ 
�—‘Ó	€BÜ× Ñ  ¨#×*>Ñ*>¸wÓ*GÈÈAÓN€EÜ×"Ñ" 7¨C×,@Ñ,@ÀÓ,KØ#$ aó)€Gá�E‹N€EÜ×#Ñ# G¨X°q¸!Ó<€HÜ×%Ñ% g¨z¸1¸aÓ@€JÙ˜“€JØ
�,‰,�r˜B  wØ! 8¨ZØŸL™L¨*ð6ó 7€Cð €JrF   c                 óú   — d}d}t        |«      D ]  \  }}|dk  r|dz  }|}Œ||z  }Œ |dk(  r| |k7  rt        d«      ‚y |dk(  r-|dk(  rd}| dk(  }n| |z  }| |z  dk(  }|st        d«      ‚||<   y t        d«      ‚)Nr   rH   z)total size of new array must be unchangedzmultiple negative shape values)rô   r¸   )	Úorigsizerf   Únum_neg_valueÚ
known_sizerö   r§   Úneg_axÚinferredÚoks	            rD   Únormalize_reshape_valuerW  x  sÄ   € Ø€MØ€JÜ˜5Ó!ò ‰ˆˆAØˆqŠ5Ø˜QÑˆMØ‰Fà˜!‰O‰Jðð ˜ÒØ�zÒ!ÜÐHÓIÐIð "ð 
˜!Ò	à˜Š?ØˆHØ˜Q‘‰Bà :Ñ-ˆHØ˜JÑ&¨!Ñ+ˆBÙÜÐHÓIÐIØ ˆˆfŠô Ð9Ó:Ð:rF   zarray.reshapec           	      óþ  — |j                   d   }|j                  }|j                   d   }|d   }| j                  t        j                  «      }t        j                  ||j                  «      }	 t        |«      | ||d   «      }
t        j                  ||	«      }|j                  ||«       t        j                  |j                  dd¬«      } t        |«      | |«      }| j                  t        j                  | j                  |«      «      }t!        ||j#                  ||j%                  «       «      | j                  t        j                  |j                  «      g|g|d ¬«       |
j&                  }| j)                  |t*        t-        j.                  t        j0                  t        j2                  |«      ||j5                  «       g«       |j                  }t        j                  ||	«      }t7        | |||
|||«      }|j9                  d||j;                  d«      «      }|j=                  |«      5  d}| j>                  jA                  |tB        |f«       d d d «        t        |«      | |«      }t!        ||
jD                  |jG                  |«      |jG                  |«      |
jH                  |
jJ                  |
jL                  ¬«       |j5                  «       }tO        | ||j                  |«      S # 1 sw Y   Œ›xY w)	Nr   rH   r¦   rö  r÷  rò  zincompatible shape for arrayrE  )(rý   rÿ   r¹   r   r�   r   rø  rÁ   ry   r
   rX   r$  r™   r|   r¿   r}   rÕ   r>  rù  r²   rú  rW  r   r$   rû  r‘   r  rO  rõ  r:   r   rk  rl  rS   r›   r?   r­   r«   r®   r    )r~   r>   r\   rý   r×   Úrettyrê  rf   rŠ  Úll_shaper  rH  Úshape_ary_tyÚ	shape_aryÚshape_itemsizer”   rG  rI  rV  ÚfailrÍ   rl  r	  s                          rD   Úarray_reshaper_  –  s„  € à�H‰H�Q‰K€EØ�O‰O€Eà�h‰h�q‰k€GØ�‰G€Eà×$Ñ$¤U§Z¡ZÓ0€GÜ�|‰|˜G W§]¡]Ó3€Hà
Œ*�UÓ
˜G W¨d°1©gÓ
6€Cô ×"Ñ" 7¨HÓ5€HØ‡M�M�%˜Ô"ô —;‘; W§]¡]¸À3ÔG€LØ(”
˜<Ó(¨°'Ó:€IØ×)Ñ)¬%¯*©*Ø*1×*@Ñ*@ÀÓ*IóK€Nä�9ØŸ™¨°'×2DÑ2DÓ2FÓGØ!×.Ñ.¬u¯z©z¸7¿=¹=ÓIÐJØ*Ð+Ø*Øõ!ð �:‰:€Dð ×Ñ˜WÔ&=Ü#×-Ñ-¬e¯j©jÜ.3¯k©k¸<óIà" I×$7Ñ$7Ó$9Ð:ô<ð �M‰M€EÜ×$Ñ$ W¨hÓ7€Jä	  ¨'°5¸#¸uØ!)¨:ó
7€Bà× Ñ   r¨2¯7©7°1«:Ó6€Dà	�‰˜Ó	ñ PØ,ˆØ×Ñ×)Ñ)¨'Ô3FÈÈÔO÷Pð Œ*�UÓ
˜G WÓ
-€CÜ�3ØŸ™Ø Ÿ™ hÓ/Ø"Ÿ<™<¨
Ó3ØŸL™LØŸ;™;ØŸ*™*õ&ð �-‰-‹/€CÜ˜W g¨s¯©ÀÓDÐD÷Pð Pús   È4%K3Ë3K<c                 ó@   — t        | |||«      \  }}t        | |||«      S rP  )rí  r_  r
  s         rD   Úarray_reshape_varargra  ×  s(   € ä'¨°¸#¸tÓDÑ€GˆXÜ˜ '¨7°HÓ=Ð=rF   )ro  rH   c                 ó   — d„ }|S )Nc                 ó$   — | j                  |«      S rP  ©Úreshape)r  rH  s     rD   Únp_reshape_implz#np_reshape.<locals>.np_reshape_implà  s   € Ø—9‘9˜XÓ&Ð&rF   r…  )r  rH  rf  s      rD   Ú
np_reshaperg  Þ  s   € ò	'àÐrF   c                 ó   — d„ }|S )Nc                 ó$   — | j                  |«      S rP  rd  )r  rf   s     rD   rf  z#np_reshape.<locals>.np_reshape_implæ  s   € Ø—9‘9˜UÓ#Ð#rF   r…  )r  rf   rf  s      rD   rg  rg  ä  s   € ò	$àÐrF   c                 ó.  — t        | «      sd}t        j                  |«      ‚t        |t        j
                  «      r$t        |j                  t        j                  «      s1t        |t        j                  «      sd}t        j                  |«      ‚d„ }|S )Nú#The argument "a" must be array-likezBThe argument "new_shape" must be an integer or a tuple of integersc                 ó0  — t        j                  | «      } t        j                  | «      } t        |t        «      r4d}t        j                  |«      D ]  }||z  }|dk  sŒd}t        |«      ‚ n|dk  rd}t        |«      ‚|}| j                  dk(  r.t        j                  |«      j                  | j                  «      S | | j                  z   }| }t        |dz
  «      D ]  }t        j                  || f«      }Œ |d | }t        j                  ||«      S )NrH   r   z0All elements of `new_shape` must be non-negative)r~  r  Úravelr˜   r»   r¸   r”   ÚzerosÚastyper|   r9   Úconcatenatere  )	r  Ú	new_shapeÚnew_sizeÚ
dim_lengthrÍ   Úmsg2Úrepeatsr	  rn   s	            rD   ré   znumpy_resize.<locals>.implû  s  € Ü�J‰J�q‹MˆÜ�H‰H�Q‹Kˆä�i¤Ô'ØˆHÜ Ÿj™j¨Ó3ò *�
Ø˜JÑ&�Ø “>ØL�CÜ$ S›/Ð)ñ	*ð ˜1Š}ØI�Ü  Ó&Ð&Ø ˆHà�6‰6�QŠ;Ü—8‘8˜IÓ&×-Ñ-¨a¯g©gÓ6Ð6à�I §¡Ñ'Ð(ˆØˆÜ�w ‘{Ó#ò 	+ˆAÜ—.‘. # q Ó*‰Cð	+à�)�8ˆnˆä�z‰z˜#˜yÓ)Ð)rF   )r   r	   rê   r˜   r   r‡  r|   rš   )r  rq  rÍ   ré   s       rD   Únumpy_resizerv  ë  st   € ô ˜AÔØ3ˆÜ× Ñ  Ó%Ð%ä˜	¤5§>¡>Ô2ä˜	Ÿ™¬¯©Ô7ä�y¤%§-¡-Ô0ð%ˆä× Ñ  Ó%Ð%ò*ð8 €KrF   c                 ó  — t        | «      st        j                  d«      ‚t        |«      st        j                  d«      ‚t        |«      rdd„}|S t	        |t
        j                  «      st        j                  d«      ‚dd„}|S )Nz+The first argument "arr" must be array-likez/The second argument "values" must be array-likec                 óÐ   — t        j                  t        j                  | «      «      } t        j                  t        j                  |«      «      }t        j                  | |f«      S rP  )r~  rm  r  rp  ©r  ÚvaluesrÞ   s      rD   ré   znp_append.<locals>.impl%	  sB   € Ü—(‘(œ2Ÿ:™: c›?Ó+ˆCÜ—X‘XœbŸj™j¨Ó0Ó1ˆFÜ—>‘> 3¨ -Ó0Ð0rF   z,The third argument "axis" must be an integerc                 ó4   — t        j                  | |f|¬«      S ©N©rÞ   ©r~  rp  ry  s      rD   ré   znp_append.<locals>.impl/	  s   € Ü—>‘> 3¨ -°dÔ;Ð;rF   rP  )r   r	   rê   r   r˜   r   rš   )r  rz  rÞ   ré   s       rD   Ú	np_appendr  	  s†   € ô ˜CÔ Ü× Ñ Ð!NÓOÐOä˜FÔ#Ü× Ñ ð ".ó /ð 	/ô �4Ôó	1ð €Kô ˜$¤§¡Ô.Ü×$Ñ$ð &/ó 0ð 0ó	<à€KrF   zarray.ravelc                 ó¬   — d„ }d„ }|j                   d   j                  dk(  r|}n|}| j                  ||||«      }t        | ||j                  |«      }|S )Nc                 ó8   — | j                  | j                  «      S )zNo copy version)re  r”   ©r  s    rD   Ú
imp_nocopyzarray_ravel.<locals>.imp_nocopy7	  s   € à�{‰{˜3Ÿ8™8Ó$Ð$rF   c                 ó"   — | j                  «       S )zCopy version)Úflattenr‚  s    rD   Úimp_copyzarray_ravel.<locals>.imp_copy;	  s   € à�{‰{‹}ÐrF   r   r¦   )rý   r	  rú  r!   rÿ   )r~   r>   r\   rý   rƒ  r†  Úimpr	  s           rD   Úarray_ravelrˆ  4	  s_   € ò%òð
 ‡x�x��{×Ñ˜SÒ Ø‰ð ˆà
×
"Ñ
" 7¨C°°dÓ
;€CÜ
˜7 G¨S¯_©_¸cÓ
B€CØ€JrF   c                 ó0   — d„ }| j                  ||||«      S )Nc                 ó"   — | j                  «       S rP  )rm  ©r  s    rD   Únp_ravel_implznp_ravel.<locals>.np_ravel_implM	  s   € Ø�w‰w‹yÐrF   )rú  )r~   r>   r\   rý   rŒ  s        rD   Únp_ravelr�  K	  s    € òð ×#Ñ# G¨]¸CÀÓFÐFrF   zarray.flattenc                 ód   — d„ }| j                  ||||«      }t        | ||j                  |«      }|S )Nc                 óT   — | j                  «       j                  | j                  «      S rP  )r`  re  r”   r‚  s    rD   r‡  zarray_flatten.<locals>.impV	  s   € Ø�x‰x‹z×!Ñ! #§(¡(Ó+Ð+rF   )rú  r!   rÿ   )r~   r>   r\   rý   r‡  r	  s         rD   Úarray_flattenr�  S	  s8   € ò,ð ×
"Ñ
" 7¨C°°dÓ
;€CÜ
˜7 G¨S¯_©_¸cÓ
B€CØ€JrF   c                 ó  — |€t        j                  | «      n|}t        j                  | ||«      \  }}}t        j                  |j                  «      D ]*  }||   }	||   }
||   }t        t        |	|
«      |«      ||<   Œ, |S rP  )r~  Ú
empty_likeÚbroadcast_arraysÚndindexrf   Úminrž  )r  Úa_minÚa_maxr
  rl  Úa_bÚa_min_bÚa_max_br  Úval_aÚ	val_a_minÚ	val_a_maxs               rD   Ú_np_clip_implrž  ^	  sˆ   € ð "˜kŒ"�-‰-˜Ô
¨s€CÜ×/Ñ/°°5¸%Ó@Ñ€Cˆ�'Ü—‘˜CŸI™IÓ&ò ;ˆØ�E‘
ˆØ˜E‘Nˆ	Ø˜E‘Nˆ	Üœ˜U IÓ.°	Ó:ˆˆEŠ
ð	;ð €JrF   c                 ó¤   — t        j                  | j                  «      D ]-  }| |   }||   }|rt        ||«      ||<   Œt	        ||«      ||<   Œ/ |S rP  )r~  r”  rf   r•  rž  )r  ÚbÚuse_minr
  r  r›  Úval_bs          rD   Ú_np_clip_impl_noner£  l	  sZ   € ä—‘˜AŸG™GÓ$ò +ˆØ�%‘ˆØ�%‘ˆÙÜ˜U EÓ*ˆC�ŠJä˜U EÓ*ˆC�ŠJð+ð €JrF   c                 ó&  — t        | «      st        j                  d«      ‚t        |t        j
                  «      s t        |«      st        j                  d«      ‚t        |t        j
                  «      s t        |«      st        j                  d«      ‚t        |t        j                  «      s"t        |«      sd}t        j                  |«      ‚|d u xs t        |t        j
                  «      }|d u xs t        |t        j
                  «      }|r|rdd„}|S t        |t        j                  «      }t        |t        j                  «      }	|r|	rdd„}
|
S |r|	s|rdd„}|S dd„}|S |s|	r|rdd	„}|S dd
„}|S |rdd„}|S |rdd„}|S dd„}|S )Nrk  z6The argument "a_min" must be a number or an array-likez6The argument "a_max" must be a number or an array-likez5The argument "out" must be an array if it is providedc                 ó   — t        d«      ‚)Nz&array_clip: must set either max or minrè   ©r  r–  r—  r
  s       rD   Ú
np_clip_nnznp_clip.<locals>.np_clip_nn‘	  s   € ÜÐEÓFÐFrF   c                 ó¼   — |€t        j                  | «      n|}t        j                  | j                  «      D ]   }| |   }t	        t        ||«      |«      ||<   Œ" |S rP  )r~  r’  r”  rf   r•  rž  ©r  r–  r—  r
  rl  r  r›  s          rD   Ú
np_clip_ssznp_clip.<locals>.np_clip_ssš	  s[   € ð '* k”"—-‘- Ô"°sˆCÜŸ™ A§G¡GÓ,ò ;�Ø˜%™�Ü ¤ U¨EÓ!2°EÓ:��E’
ð;ð ˆJrF   c                 ó¨   — |€t        j                  | «      n|}t        j                  | j                  «      D ]  }| |   }t	        ||«      ||<   Œ |S rP  )r~  r’  r”  rf   rž  r©  s          rD   Ú
np_clip_snznp_clip.<locals>.np_clip_sn¨	  óT   € ð +.¨+”b—m‘m AÔ&¸3�ÜŸZ™Z¨¯©Ó0ò 3�EØ˜e™H�EÜ!$ U¨EÓ!2�C˜’Jð3ð �
rF   c                 óJ   — t        j                  | |«      }t        | |||«      S rP  ©r~  Ú	full_likerž  )r  r–  r—  r
  Ú
a_min_fulls        rD   Ú
np_clip_saznp_clip.<locals>.np_clip_saµ	  s%   € ô
  Ÿ\™\¨!¨UÓ3�
Ü$ Q¨
°E¸3Ó?Ð?rF   c                 ó¨   — |€t        j                  | «      n|}t        j                  | j                  «      D ]  }| |   }t	        ||«      ||<   Œ |S rP  )r~  r’  r”  rf   r•  r©  s          rD   Ú
np_clip_nsznp_clip.<locals>.np_clip_nsÀ	  r­  rF   c                 óJ   — t        j                  | |«      }t        | |||«      S rP  r¯  )r  r–  r—  r
  Ú
a_max_fulls        rD   Ú
np_clip_asznp_clip.<locals>.np_clip_asÍ	  s%   € ô
  Ÿ\™\¨!¨UÓ3�
Ü$ Q¨¨z¸3Ó?Ð?rF   c                 ó‚   — |€t        j                  | «      n|}t        j                  | |«      \  }}t        ||d|«      S )NT©r~  r’  r“  r£  )r  r–  r—  r
  rl  r˜  rš  s          rD   Ú
np_clip_naznp_clip.<locals>.np_clip_naÙ	  s=   € à*-¨+”b—m‘m AÔ&¸3�Ü!×2Ñ2°1°eÓ<‘��WÜ)¨#¨w¸¸cÓBÐBrF   c                 ó‚   — |€t        j                  | «      n|}t        j                  | |«      \  }}t        ||d|«      S )NFr¹  )r  r–  r—  r
  rl  r˜  r™  s          rD   Ú
np_clip_anznp_clip.<locals>.np_clip_aná	  s=   € à*-¨+”b—m‘m AÔ&¸3�Ü!×2Ñ2°1°eÓ<‘��WÜ)¨#¨w¸¸sÓCÐCrF   c                 ó   — t        | |||«      S rP  )rž  r¦  s       rD   Ú
np_clip_aaznp_clip.<locals>.np_clip_aaé	  s   € ô % Q¨¨u°cÓ:Ð:rF   rP  )	r   r	   rê   r˜   r   rK  r™   r   r§  )r  r–  r—  r
  rÍ   Úa_min_is_noneÚa_max_is_noner§  Úa_min_is_scalarÚa_max_is_scalarrª  r¬  r²  r´  r·  rº  r¼  r¾  s                     rD   Únp_cliprÃ  x	  s—  € ä˜AÔÜ× Ñ Ð!FÓGÐGä�uœeŸn™nÔ-Ü  Ô'Ü× Ñ ð #4ó 6ð 	6ô �uœeŸn™nÔ-Ü  Ô'Ü× Ñ ð "4ó 5ð 	5ô �sœEŸK™KÔ(¬K¸Ô,<ØEˆÜ× Ñ  Ó%Ð%ð ˜T�MÒF¤Z°´u·~±~Ó%F€MØ˜T�MÒF¤Z°´u·~±~Ó%F€Má™ó	Gð Ðä  ¬¯©Ó5€OÜ  ¬¯©Ó5€Oá™?ó		ð ÐÙ	¡Ùó	ð Ðó@ð ÐÙ¡Ùó	ð Ðó@ð Ðñ óCð ÐÙóDð Ðó;ð ÐrF   Úclipc                 ó   — dd„}|S )Nc                 ó2   — t        j                  | |||«      S rP  )r~  rÄ  r¦  s       rD   ré   zarray_clip.<locals>.implô	  s   € Ü�w‰w�q˜% ¨Ó,Ð,rF   ©NNNr…  )r  r–  r—  r
  ré   s        rD   Ú
array_cliprÈ  ò	  s   € ó-à€KrF   c           	      óv  ‡‡‡‡— |j                   |j                   k(  sJ ‚|j                  |j                  k(  sJ ‚t        |j                  «      }t        d«      Št        d«      Št        d«      Št        j                  Šˆˆˆˆfd„}| j                  t        j                  t        | |«      «      }| j                  t        j                  t        | |«      «      }| j                  t        j                  |j                   «      }	t        j                  ||j                  d«      dd«      }
t        j                  ||j                  d«      dd«      }t        j                  t        j                  dd¬	«      }| j                  |«      }t        j                  || j                  t        j                  |j                   «      g«      }| j                  | j                  t        j                  «      «      }| j                  t        j                  |«      }t        j                  ||g«      } || |«      }t!        ||
|||d
¬«        || |«      }t!        |||||d
¬«       |j#                  «       }|j#                  «       }|	||||| j                  t        j                  |«      g}t%        t        j&                  t        j                  ||t        j                  t        j                  t        j                  «      }| j)                  ||||«      }t+        ||«       t-        | ||j.                  |«      }|S )a  
    Attempt to fix up *ary* for switching from *oldty* to *newty*.

    See Numpy's array_descr_set()
    (np/core/src/multiarray/getset.c).
    Attempt to fix the array's shape and strides for a new dtype.
    False is returned on failure, True on success.
    r^  r¦   ÚFc                 ó"  •— |‰	k(  r!|d   |k(  r	 ‰‰
«      }n|d   |k(  r ‰‰«      }||k7  r|‰	k(  s| dk(  ry|‰
k(  r| dz
  }nd}||k  r!||z  dk7  ry||z  }||xx   |z  cc<   |||<   y||kD  r||   |z  }||z  dk7  ry||z  ||<   |||<   y	 y)Nr  r   FrH   Tr…  )rM  rm   r¬   Úold_itemsizeÚnew_itemsizer	  rn   ÚnewdimÚ
bytelengthÚ
any_layoutÚc_layoutÚf_layoutÚint8s            €€€€rD   r‡  z_change_dtype.<locals>.imp
  só   ø€ ð �ZÒà�r‰{˜lÒ*á˜h›‘à˜‘˜|Ò+á˜h›�à˜<Ò'¨V°zÒ-AÀRÈ1ÂWØà�XÒØ�Q‘‰AàˆAà˜,Ò&ð ˜|Ñ+°Ò1Øà! \Ñ1ˆFØ�‹G�vÑ‹GØ%ˆG�A‰Jð" ð ˜LÒ(ð ˜a™ <Ñ/ˆJØ˜\Ñ)¨aÒ/Øà  LÑ0ˆD�‰GØ%ˆG�A‰Jð ð àrF   rf   r   r¬   rH   rö  Nr÷  )rq   r	  Úordr   rÓ  r¿   r�   r€   r
   ri   rh   r™   ry   rk   r}   r{   rÕ   r  r$   Úbooleanrú  rØ   r    rÿ   )r~   r>   ÚoldtyÚnewtyr  Ú
new_layoutr‡  rÌ  rÍ  rM  Ú
shape_dataÚstrides_dataÚshape_strides_array_typeÚaryclsÚshape_constantÚsizeof_intpÚstrides_constantr\  Ústrides_aryrf   r¬   rý   r\   r	  rÐ  rÑ  rÒ  rÓ  s                           @@@@rD   Ú_change_dtyperá  ù	  s¼  û€ ð �:‰:˜Ÿ™Ò#Ð#Ð#Ø�<‰<˜5Ÿ<™<Ò'Ð'Ð'ä�U—\‘\Ó"€JÜ�S“€JÜ�3‹x€HÜ�3‹x€Hä�:‰:€D÷.ð` ×'Ñ'¬¯
©
Ü(4°W¸eÓ(DóF€Là×'Ñ'¬¯
©
Ü(4°W¸eÓ(DóF€Lð 
×	Ñ	œeŸj™j¨%¯*©*Ó	5€BÜ×%Ñ% g¨s×/CÑ/CÀGÓ/LØ&'¨ó,€Jä×'Ñ'¨Ø(+×(<Ñ(<¸YÓ(GÈÈAóO€Lô  %Ÿ{™{´·±À!ÈCÔPÐØ×ÑÐ 8Ó9€Fä×'Ñ'¨Ø)0×)=Ñ)=¼e¿j¹jØ>C¿j¹jó*Jð )KóL€Nð ×(Ñ(¨×)>Ñ)>¼u¿z¹zÓ)JÓK€KØ×&Ñ&¤u§z¡z°;Ó?€KÜ×)Ñ)¨'°K°=ÓAÐá�w Ó(€Iä�9Ø"Ø'Ø+Ø'Øõ!ñ ˜ 'Ó*€KÜ�;Ø$Ø'Ø+Ø'Øõ!ð ×ÑÓ!€EØ×#Ñ#Ó%€GØ��w ¨lØ× Ñ ¤§¡¨ZÓ8ð:€Dô ”E—M‘MÜ—J‘JØ,Ø,Ü—J‘JÜ—J‘JÜ—J‘Jó€Cð ×
"Ñ
" 7¨C°°dÓ
;€CÜ�e˜SÔ!Ü
˜G W¨c¯o©o¸sÓ
C€CØ€JrF   c                 óL   — t        | «      st        j                  d«      ‚d„ }|S )Nz+The argument to np.shape must be array-likec                 ó@   — t        j                  | «      j                  S rP  )r~  r  rf   r‹  s    rD   ré   znp_shape.<locals>.impl|
  s   € Ü�z‰z˜!‹}×"Ñ"Ð"rF   ©r   r	   rê   ©r  ré   s     rD   Únp_shaperæ  w
  s&   € ä˜AÔÜ× Ñ Ð!NÓOÐOò#à€KrF   c                 óL   — t        | «      st        j                  d«      ‚d„ }|S )Nz*The argument to np.size must be array-likec                 ó@   — t        j                  | «      j                  S rP  )r~  r  r”   r‹  s    rD   ré   znp_size.<locals>.impl†
  s   € Ü�z‰z˜!‹}×!Ñ!Ð!rF   rä  rå  s     rD   Únp_sizeré  �
  s&   € ä˜AÔÜ× Ñ Ð!MÓNÐNò"à€KrF   c                 ó   — d„ }|S )Nc                 ó  — d„ }t        j                  | j                  «       «      }t        |d d «      }t	        |dd  «      D ��cg c]"  \  }}||   |k7  r |||   «      r ||«      s|‘Œ$ }}}t        j
                  ||z   «      S c c}}w )Nc                 ó   — | | k(   S rP  r…  )rX  s    rD   Úisnanz0np_unique.<locals>.np_unique_impl.<locals>.isnan�
  s   € à˜Q™�<ÐrF   rH   )r~  Úsortrm  r¼   rô   rÇ   )Úarrí  r   Úheadrn   rX  Útails          rD   Únp_unique_implz!np_unique.<locals>.np_unique_impl�
  s�   € ò	 ô �G‰G�B—H‘H“JÓˆÜ�A�b�q�E‹{ˆä# A a b EÓ*÷
Ù�!�QØ�‰t�qŠy¡%¨¨!©¤+±%¸´(ò ð
ˆñ 
ô �x‰x˜˜t™Ó$Ð$ùó	
s   Á'Br…  )rï  rò  s     rD   Ú	np_uniqueró  �
  s   € ò
%ð ÐrF   c                 óÂ  — d„ }t        | t        j                  t        j                  t        j                  t        j
                  t        j                  f«      r…t        |t        j                  «      rt        S t        |t        j                  t        j                  f«      r&t        |j                  t        j                  «      r|S t        j                  d«      ‚y )Nc                 ó@  — t        j                  |t         j                  ¬«      }|j                  d   dk(  rt	        | |d   «      S t        j
                  |dk  «      rt        d«      ‚t        j                  | «      }|j                  «       }|j                  d   }|j                  |j                  k7  rt        d«      ‚t        j                  t        j                  |«      |j                  ¬«      }d}t        |«      D ]  }||   |||||   z    |||   z  }Œ |S )N©r|   r   rH   r�  z(operands could not be broadcast together)r~  r  rÇ  rf   Únp_repeat_impl_repeats_scalerrV  r¸   rm  Úemptyrí  r|   r9   )	r  ru  Úrepeats_arrayÚasaÚaravelÚnÚ	to_returnÚposrn   s	            rD   Ú!np_repeat_impl_repeats_array_likez4np_repeat.<locals>.np_repeat_impl_repeats_array_like¢
  s  € äŸ
™
 7´"·(±(Ô;ˆà×Ñ˜qÑ! QÒ&Ü0°°MÀ!Ñ4DÓEÐEÜ�6‰6�- !Ñ#Ô$ÜÐBÓCÐCÜ�j‰j˜‹mˆØ—‘“ˆØ�L‰L˜‰OˆØ�<‰<˜=×.Ñ.Ò.ÜØ:ó<ð <ä—H‘HœRŸV™V MÓ2¸#¿)¹)ÔDˆ	ØˆÜ�q“ò 	$ˆAØ6<¸Q±iˆI�c˜C -°Ñ"2Ñ2Ð3Ø�= Ñ#Ñ#‰Cð	$ð ÐrF   zIThe repeats argument must be an integer or an array-like of integer dtype)r˜   r   r™   ÚListr\  r§  ræ  rš   r÷  r|   r	   rê   )r  ru  rÿ  s      rD   Ú	np_repeatr  �
  sœ   € ò
ô, �!”e—k‘kÜ—j‘jÜ—o‘oÜ—l‘lÜ—m‘mð	ô ô �gœuŸ}™}Ô-Ü0Ð0Ü˜¤%§+¡+¬u¯z©zÐ!:Ô;Ü˜'Ÿ-™-¬¯©Ô7Ø8Ð8ä× Ñ ð0ó1ð 	1ðrF   c                 ó˜  — |dk  rt        d«      ‚t        j                  | «      }|j                  «       }|j                  d   }|dk(  r!t        j
                  d|j                  ¬«      S |dk(  rt        j                  |«      S t        j
                  ||z  |j                  ¬«      }t        |«      D ]  }||   |||z  |dz   |z   Œ |S )Nr   r�  rö  rH   )	r¸   r~  r  rm  rf   rø  r|   r`  r9   )r  ru  rú  rû  rü  rý  rn   s          rD   r÷  r÷  Ê
  s»   € à�‚{ÜÐ>Ó?Ð?Ü
�*‰*�Q‹-€CØ�Y‰Y‹[€FØ�‰�Q‰€AØ�!‚|Ü�x‰x˜ §¡Ô+Ð+Ø	�AŠÜ�w‰w�v‹Ðä—H‘H˜Q ™[°·	±	Ô:ˆ	Ü�q“ò 	CˆAØ9?À¹ˆI�a˜'‘k Q¨¡U¨gÑ$5Ñ6ð	CàÐrF   Úrepeatc                 ó   — d„ }|S )Nc                 ó.   — t        j                  | |«      S rP  )r~  r  )r  ru  s     rD   Úarray_repeat_implz'array_repeat.<locals>.array_repeat_implÞ
  s   € Ü�y‰y˜˜GÓ$Ð$rF   r…  )r  ru  r  s      rD   Úarray_repeatr  Ü
  s   € ò%ð ÐrF   c                 ó:   — t        j                  |«      }d„ }||fS )z"Computes the itemsize of the dtypec                 ó¶   — | j                  |j                  d   j                  «      }| j                  |j                  «      } || j	                  |«      «      S rç   )r{   rý   r|   rÿ   r}   )Úcgctxr>   r\   Úllargsr   Úllintps         rD   rj  z%_intrin_get_itemsize.<locals>.codegené
  sJ   € Ø×"Ñ" 3§8¡8¨A¡;×#4Ñ#4Ó5ˆØ×$Ñ$ S§_¡_Ó5ˆÙ�e×*Ñ*¨4Ó0Ó1Ð1rF   )r   r�   )Útyctxr|   r\   rj  s       rD   Ú_intrin_get_itemsizer  ä
  s#   € ô �*‰*�UÓ
€Cò2ð �ˆ<ÐrF   c                  ó   — y rP  r…  )r  r|   s     rD   Ú_compatible_viewr  ð
  ó   € ØrF   c                 ó   — d„ }|S )zDDetermines if the array and dtype are compatible for forming a view.c                 óü  — t        |«      }|| j                  k7  râ| j                  dk(  rd}t        |«      ‚	 | j                  dz
  }| j                  |   dk7  }| j
                  dk7  }| j                  |   | j                  k7  }|r|r|rd}t        |«      ‚|| j                  k  r%|dk(  s| j                  |z  dk7  rd}	t        |	«      ‚y | j                  |   | j                  z  }
|
|z  dk7  rd}t        |«      ‚y y )Nr   zOChanging the dtype of a 0d array is only supported if the itemsize is unchangedrH   zJTo change to a dtype of a different size, the last axis must be contiguouszZWhen changing to a smaller dtype, its size must be a divisor of the size of original dtypezuWhen changing to a larger dtype, its size must be a divisor of the total size in bytes of the last axis of the array.)r  r­   rq   r¸   rf   r”   r¬   )r  r|   Ú
dtype_sizeÚmsg1rÞ   Úp1Úp2Úp3rt  Úmsg3rÎ  Úmsg4s               rD   ré   z ol_compatible_view.<locals>.implú
  s  € Ü)¨%Ó0ˆ
Ø˜Ÿ™Ò#à�v‰v˜Š{ð7�ä  Ó&Ð&ð ð —6‘6˜A‘:ˆDØ—‘˜‘ !Ñ#ˆBØ—‘˜1‘ˆBØ—‘˜4‘ A§J¡JÑ.ˆBÙ‘r™bð2�ä  Ó&Ð&à˜AŸJ™JÒ&Ø ’? a§j¡j°:Ñ&=ÀÒ&BðI�Dä$ TÓ*Ð*ð 'Cð
 Ÿ™ ™¨¯©Ñ3�Ø˜JÑ&¨!Ò+ð1�Dô % TÓ*Ð*ð	 ,ð9 $rF   r…  ©r  r|   ré   s      rD   Úol_compatible_viewr  ô
  s   € ò"+ðF €KrF   z
array.viewc                 ó˜  — |j                   d   }|j                  } t        |«      | ||d   «      } t        |«      | |«      }t        |j                  j
                  «      }t        |«      D ]N  }	t        ||	«      }
|	dk(  r.|j                  j                  }|j                  |
|«      |_        ŒBt        ||	|
«       ŒP t        dk\  r\| j                  }|j                  t        «      }|j!                  |g |j                   ¢­i «      }| j#                  ||«      } |||«       t%        | ||||«      }|j'                  d|t)        |j                  d«      «      }|j+                  |«      5  d}| j,                  j/                  |t0        |f«       d d d «       |j3                  «       }t5        | ||j                  |«      S # 1 sw Y   Œ1xY w)Nr   r›   )rH   é   rò  z"new type not compatible with array)rý   rÿ   ry   rµ   r³   r¶   ÚsortedÚgetattrr›   r:   r>  rÆ   r   rÅ  rÆ  r  rÈ  rR   rá  rõ  r   r   rk  rl  r¸   r  r    )r~   r>   r\   rý   r×   rY  r  rl  ÚfieldsrÓ   rŠ   r6  r  rÊ  Ú_compatible_view_sigré   rV  r^  rÍ   r	  s                       rD   Ú
array_viewr#     s¡  € à�H‰H�Q‰K€EØ�O‰O€Eà
Œ*�UÓ
˜G W¨d°1©gÓ
6€CØ
Œ*�UÓ
˜G WÓ
-€Cä�—‘×'Ñ'Ó(€FÜ�F‹^ò !ˆÜ�c˜1‹oˆØ�Š;Ø—H‘H—M‘MˆEØ—‘ s¨EÓ2ˆC�Hä�C˜˜CÕ ð!ô ˜Òð ×&Ñ&ˆØ×'Ñ'Ô(8Ó9ˆØ#×1Ñ1°%¸¸3¿8¹8¹ÀrÓJÐØ×#Ñ# DÐ*>Ó?ˆÙˆW�dÔä	�w ¨°°sÓ	;€BØ× Ñ   r¬8°B·G±G¸QÓ+?Ó@€Dà	�‰˜Ó	ñ GØ2ˆØ×Ñ×)Ñ)¨'´:À¸vÔF÷Gð �-‰-‹/€CÜ˜W g¨s¯©ÀÓDÐD÷Gð Gús   Å+%G Ç G	r|   c                 ó>   — | j                  «       }t        | |||«      S rP  )rq  r"   ©r~   r>   r‹  r  r	  s        rD   Úarray_dtyper&  K  s!   € à
×
!Ñ
!Ó
#€CÜ˜g w°°SÓ9Ð9rF   rf   c                 ó`   — t        |«      } || ||«      }|j                  }t        | |||«      S rP  )ry   rf   r"   ©r~   r>   r‹  r  r†   rÇ   r	  s          rD   Úarray_shaper)  Q  s5   € ô ˜‹o€GÙ�G˜W eÓ,€EØ
�+‰+€CÜ˜g w°°SÓ9Ð9rF   r¬   c                 ó`   — t        |«      } || ||«      }|j                  }t        | |||«      S rP  )ry   r¬   r"   r(  s          rD   Úarray_stridesr+  Z  s5   € ô ˜‹o€GÙ�G˜W eÓ,€EØ
�-‰-€CÜ˜g w°°SÓ9Ð9rF   rq   c                 ór   — | j                  t        j                  |j                  «      }t	        | |||«      S rP  )r¿   r   r�   rq   r"   r%  s        rD   Ú
array_ndimr-  c  s/   € ð ×
Ñ
œuŸz™z¨3¯8©8Ó
4€CÜ˜g w°°SÓ9Ð9rF   r”   c                 ó`   — t        |«      } || ||«      }|j                  }t        | |||«      S rP  )ry   r²   r"   r(  s          rD   Ú
array_sizer/  j  s3   € ä˜‹o€GÙ�G˜W eÓ,€EØ
�,‰,€CÜ˜g w°°SÓ9Ð9rF   r­   c                 ó`   — t        |«      } || ||«      }|j                  }t        | |||«      S rP  )ry   r­   r"   r(  s          rD   Úarray_itemsizer1  r  s5   € ô ˜‹o€GÙ�G˜W eÓ,€EØ
�.‰.€CÜ˜g w°°SÓ9Ð9rF   Únbytesc                 ó”   — t        |«      } || ||«      }|j                  |j                  |j                  «      }t	        | |||«      S )z"
    nbytes = size * itemsize
    )ry   rÂ   r²   r­   r"   r(  s          rD   Úarray_nbytesr4  {  sD   € ô ˜‹o€GÙ�G˜W eÓ,€EØ
�+‰+�e—l‘l E§N¡NÓ
3€CÜ˜g w°°SÓ9Ð9rF   Ú
contiguousc                 ór   — | j                  t        j                  |j                  «      }t	        | |||«      S rP  )r¿   r   rÕ  Ú	is_contigr"   r%  s        rD   Úarray_contiguousr8  ‡  s-   € à
×
Ñ
œuŸ}™}¨c¯m©mÓ
<€CÜ˜g w°°SÓ9Ð9rF   Úc_contiguousc                 ór   — | j                  t        j                  |j                  «      }t	        | |||«      S rP  )r¿   r   rÕ  Úis_c_contigr"   r%  s        rD   Úarray_c_contiguousr<  �  ó-   € à
×
Ñ
œuŸ}™}¨c¯o©oÓ
>€CÜ˜g w°°SÓ9Ð9rF   Úf_contiguousc                 ór   — | j                  t        j                  |j                  «      }t	        | |||«      S rP  )r¿   r   rÕ  Úis_f_contigr"   r%  s        rD   Úarray_f_contiguousrA  “  r=  rF   rf  c                 ót   — | j                  t        j                  |j                   «      }t	        | |||«      S rP  )r¿   r   rÕ  Úmutabler"   r%  s        rD   Úarray_readonlyrD  ™  s/   € à
×
Ñ
œuŸ}™}°#·+±+¨oÓ
>€CÜ˜g w°°SÓ9Ð9rF   Úctypesc                 óú   — t        |«      } || ||«      }t        j                  |«      }| j                  ||«      }|j                  |_        |j
                  |_        |j                  «       }t        | |||«      S rP  )ry   r   ÚArrayCTypesrþ   r›   r«   r  r    )	r~   r>   r‹  r  r†   rÇ   ÚactÚctinfor	  s	            rD   Úarray_ctypesrJ  ¡  sp   € ä˜‹o€GÙ�G˜W eÓ,€Eä
×
Ñ
˜CÓ
 €CØ× Ñ  ¨#Ó.€FØ—*‘*€F„KØ—]‘]€F„NØ
×
Ñ
Ó
€CÜ˜W g¨s°CÓ8Ð8rF   r›   c                 ó¼   — | j                  |||¬«      }|j                  }|j                  || j                  t        j
                  «      «      }t        | |||«      S ©Nr  )rþ   r›   r  r¹   r   r�   r"   )r~   r>   r‹  r  rI  r	  s         rD   Úarray_ctypes_datarM  ®  sT   € à× Ñ  ¨#°UÐ Ó;€FØ
�+‰+€Cà
×
Ñ
˜3 × 6Ñ 6´u·z±zÓ BÓ
C€CÜ˜g w°°SÓ9Ð9rF   c                 ó    — | j                  |||¬«      }|j                  }|j                  || j                  |«      «      }t	        | |||«      S rL  )rþ   r›   r>  r¹   r"   )r~   r>   ÚfromtyÚtotyrŠ   rI  r	  s          rD   Úarray_ctypes_to_pointerrQ  ·  sP   € ð × Ñ  ¨&¸Ð Ó<€FØ
�+‰+€CØ
�/‰/˜#˜w×5Ñ5°dÓ;Ó
<€CÜ˜g w°°cÓ:Ð:rF   c                 óÈ  —  t        |«      |||¬«      }t        j                  t        j                  |j                  «      }|j                  |j                  |j                  «      «      }t        t        j                  ||t        j                  «      }|j                  |j                  |j                  t        j                  |«      g}|j                  || ||«      }	|	S )a)  Helper to invoke the contiguous checker function on an array

    Args
    ----
    checker :
        ``numba.numpy_supports.is_contiguous``, or
        ``numba.numpy_supports.is_fortran``.
    context : target context
    builder : llvm ir builder
    aryty : numba type
    ary : llvm value
    r  )ry   r   r‡  r�   rq   r}   r¹   r|   r$   Úbool_rf   r¬   r¿   rú  )
Úcheckerr~   r>   r×   r  Útup_intpr­   Ú	check_sigÚ
check_argsr7  s
             rD   Ú_call_contiguous_checkrX  À  s¯   € ð Œ*�UÓ
˜G W°CÔ
8€CÜ�~‰~œeŸj™j¨%¯*©*Ó5€HØ×%Ñ% g×&<Ñ&<¸U¿[¹[Ó&IÓJ€HÜœ%Ÿ+™+ x°¼5¿:¹:ÓF€IØ—)‘)˜SŸ[™[Ø×&Ñ&¤u§z¡z°8Ó<ð>€Jà×(Ñ(¨°'¸9Ø)3ó5€IàÐrF   r±   c                 óÐ   — | j                  |t        j                  |«      «      }||_        |j	                  «       }| j
                  j                  |||«       t        | |||«      S rP  )rþ   r   Ú
ArrayFlagsr®   r  r  r  r!   )r~   r>   r‹  r  Úflagsobjr	  s         rD   Úarray_flagsr\  Ú  s[   € à×"Ñ" 7¬E×,<Ñ,<¸SÓ,AÓB€HØ€H„OØ
×
Ñ
Ó
€CØ‡K�K×Ñ�w  UÔ+Ü˜G W¨c°3Ó7Ð7rF   c                 ó:  — |j                   j                  dk7  r<| j                  |||¬«      }t        t        | ||j                   |j
                  «      }n9|j                   j                  dk(  }| j                  t        j                  |«      }t        | |||«      S )Nr¦   r  )
rc   r	  rþ   rX  r   r®   r¿   r   rÕ  r"   )r~   r>   r‹  r  r[  r	  rŠ   s          rD   Úarray_flags_c_contiguousr^  ã  sˆ   € ð ‡~�~×Ñ Ò#à×&Ñ& w°¸5Ð&ÓAˆÜ$¤]°G¸WØ%(§^¡^°X·_±_óF‰ð �n‰n×#Ñ# sÑ*ˆØ×"Ñ"¤5§=¡=°#Ó6ˆÜ˜g w°°SÓ9Ð9rF   c                 óx  — |j                   j                  dk7  r<| j                  |||¬«      }t        t        | ||j                   |j
                  «      }nX|j                   j                  }|j                   j                  dkD  r|dk(  n|dv }| j                  t        j                  |«      }t        | |||«      S )NrÊ  r  rH   r  )rc   r	  rþ   rX  r   r®   rq   r¿   r   rÕ  r"   )r~   r>   r‹  r  r[  r	  r	  rŠ   s           rD   Úarray_flags_f_contiguousr`  ñ  s¡   € à
‡~�~×Ñ Ò#à×&Ñ& w°¸5Ð&ÓAˆÜ$¤Z°¸'Ø%(§^¡^°X·_±_óF‰ð —‘×&Ñ&ˆØ"Ÿ~™~×2Ñ2°QÒ6ˆf˜Šm¸FÀd¸NˆØ×"Ñ"¤5§=¡=°#Ó6ˆÜ˜g w°°SÓ9Ð9rF   r)  c                 óþ   — |j                   t        j                  v rt        | |||d¬«      S |j                   t        j                  v rt        | |||«      S t        dj                  t        j                   «      «      ‚)Nr)  ©Úattrzunsupported .real for {})	r|   r   Úcomplex_domainÚarray_complex_attrÚnumber_domainr    rS   rÄ   r:   )r~   r>   r‹  r  s       rD   Úarray_real_partrg    se   € à
‡y�y”E×(Ñ(Ñ(Ü! '¨7°C¸ÀVÔLÐLØ	�‰”e×)Ñ)Ñ	)ä  ¨'°3¸Ó>Ð>ä!Ð"<×"CÑ"CÄDÇJÁJÓ"OÓPÐPrF   r+  c                 ó2  — |j                   t        j                  v rt        | |||d¬«      S |j                   t        j                  v r¨t        |j                  d¬«      |«      }t        | |||g«      \  }}t        | |||«      }t        j                  ||j                  |j                  |j                  |j                  «      d«       t        | ||j                   |j#                  «       «      S t%        dj'                  t(        j                   «      «      ‚)Nr+  rb  Tro  r   zunsupported .imag for {})r|   r   rd  re  rf  r$   r`  Ú_parse_empty_like_argsr  r
   Úmemsetr›   rÂ   r­   r²   r!   rÿ   r  rS   rÄ   r:   )r~   r>   r‹  r  r\   ra  r  r  s           rD   Úarray_imag_partrk    sä   € à
‡y�y”E×(Ñ(Ñ(Ü! '¨7°C¸ÀVÔLÐLØ	�‰”e×)Ñ)Ñ	)ä˜Ÿ™¨$˜Ó/°Ó5ˆÜ0°¸'À3ÈÈÓP‰ˆ�Ü˜W g¨w¸Ó?ˆÜ�‰�w §¡¨'¯+©+°c·l±lØ69·j±jó+BØCDô	Fä ¨°#·/±/Ø #§¡£ó1ð 	1ô "Ð"<×"CÑ"CÄDÇJÁJÓ"OÓPÐPrF   c                 óä  — |dvs|j                   t        j                  vrt        dj	                  |«      «      ‚t        |«      } || ||«      }|j                   j                  }| j                  | j                  |«      «      }|j                  j                  |«      }	| j                  |«      j                  «       }
|j                  |j                  |
«      }|dk(  r,|j                  | t!        j"                  d«      d«      g«      }|j%                  |d¬«      } t        |«      | |«      }t'        ||	¬«      }t)        j*                  |||«       t-        | |||j/                  «       «      S )	a¼  
    Given a complex array, it's memory layout is:

        R C R C R C
        ^   ^   ^

    (`R` indicates a float for the real part;
     `C` indicates a float for the imaginary part;
     the `^` indicates the start of each element)

    To get the real part, we can simply change the dtype and itemsize to that
    of the underlying float type.  The new layout is:

        R x R x R x
        ^   ^   ^

    (`x` indicates unused)

    A load operation will use the dtype to determine the number of bytes to
    load.

    To get the imaginary part, we shift the pointer by 1 float offset and
    change the dtype and itemsize.  The new layout is:

        x C x C x C
          ^   ^   ^
    )r)  r+  zcannot get attribute `{}`r+  é    rH   r^  ©r|   r	  )r›   r­   )r|   r   rd  rS   rÄ   ry   Úunderlying_floatr}   r{   r­   r:   r¹   rù  r>  r›   r
  r   ÚIntTyper`  r¾   r
   Úcopy_structr    r  )r~   r>   r‹  r  rc  r†   rÇ   ÚfltyÚsizeof_fltyr­   Ú
llfltptrtyr  Úresulttyr%  Úrepls                  rD   re  re    sE  € ð8 Ð#Ñ# s§y¡y¼×8LÑ8LÑ'LÜ!Ð"=×"DÑ"DÀTÓ"JÓKÐKä˜‹o€GÙ�G˜W eÓ,€Eð �9‰9×%Ñ%€DØ×(Ñ(¨×)>Ñ)>¸tÓ)DÓE€KØ�~‰~×"Ñ" ;Ó/€Hð ×'Ñ'¨Ó-×8Ñ8Ó:€JØ�o‰o˜eŸj™j¨*Ó5€Gð ˆv‚~Ø—+‘+˜g¨¬¯
©
°2«°qÓ(9Ð':Ó;ˆð �x‰x˜d¨3ˆxÓ/€HØ!ŒZ˜Ó! '¨7Ó3€FÜ�W xÔ0€DÜ×Ñ˜  tÔ,Ü˜W g¨x¸×9IÑ9IÓ9KÓLÐLrF   ÚconjÚ	conjugatec                 ó   — d„ }|S )Nc                 ó,   — t        j                  | «      S rP  )r~  rw  ©r  s    rD   ré   zarray_conj.<locals>.implX  s   € Ü�w‰w�s‹|ÐrF   r…  ©r  ré   s     rD   Ú
array_conjr}  U  s   € òà€KrF   c                 ó"   — | j                  «       S rP  )rq  )r~   r>   ÚdtypetyÚdtypevals       rD   Ú
dtype_typer�  `  s   € à×"Ñ"Ó$Ð$rF   r:   ÚkindÚstatic_getitemc                 óÆ   — |j                   }t        |t        j                  «      r% | j	                  |«      d«      }t        | |||«      S d}t        j                  |«      ‚)zåThis handles the "static_getitem" when a Numba type is subscripted e.g:
    var = typed.List.empty_list(float64[::1, :])
    It only allows this on simple numerical types. Compound types, like
    records, are not supported.
    NzlUnreachable; the definition of __getitem__ on the numba.types.abstract.Type metaclass should prevent access.)rÿ   r˜   r   r™   r¹   r"   r	   ÚLoweringError)r~   r>   r\   rý   rY  r	  rÍ   s          rD   Ústatic_getitem_number_clazzr†  m  s^   € ð �O‰O€EÜ�%œŸ™Ô%ð ,ˆg×$Ñ$ UÓ+¨DÓ1ˆÜ! '¨7°E¸3Ó?Ð?ðLˆä×"Ñ" 3Ó'Ð'rF   c           
      óæ  — t        |«      } || ||«      }|j                  }t        |t        j                  «      st        d|›d|›d�«      ‚|j                  |«      }|j                  |«      }	t        |t        j                  «      r6|j                  |j                  |j                  |j                  z   d¬«      }
n|j                  |d¬«      }
t        |
«      } || |«      }| j                  t        j                  |	«      }t        j                  ||j                  ||j                  j                   ¬«      }t        |t        j                  «      r÷t        j"                  ||j$                  |j                  «      }||j$                  D �cg c]"  }| j                  t        j                  |«      ‘Œ$ c}z  }t        j"                  ||j&                  |j                  «      }||j&                  D �cg c]"  }| j                  t        j                  |«      ‘Œ$ c}z  }| j)                  | j+                  |j                  «      «      }n8|j$                  }|j&                  }| j)                  | j+                  |«      «      }t-        ||||| j                  t        j                  |«      |j.                  |j0                  ¬«       |j3                  «       }t5        | ||
|«      S c c}w c c}w )	zq
    Generic getattr() implementation for record arrays: fetch the given
    record member, i.e. a subarray.
    z
attribute z of z not definedr^  rö  rn  )rÿ   rE  )ry   r|   r˜   r   ÚRecordrS   Útypeofr  ÚNestedArrayr`  rq   r¿   r�   r
   r  r›   r:   rÀ   rf   r¬   r}   r{   rÕ   r«   r®   r  r    )r~   r>   r‹  r  rc  r†   rÇ   Úrectyper|   r  ÚrestyÚrarytyÚraryÚconstoffsetÚ
newdataptrrf   rn   r¬   Údatasizer	  s                       rD   Úarray_record_getattrr’  …  sR  € ô ˜‹o€GÙ�G˜W eÓ,€Eà�i‰i€GÜ�gœuŸ|™|Ô,Ý!Ú%)ª3ð#0ó 1ð 	1à�N‰N˜4Ó €EØ�^‰^˜DÓ!€Fä�%œ×*Ñ*Ô+Ø—‘Ø—+‘+ C§H¡H¨u¯z©zÑ$9À#ð ó G‰ð —‘˜u¨S�Ó1ˆä˜Ó€Fá�'˜7Ó#€Dà×&Ñ&¤u§z¡z°6Ó:€Kä×$Ñ$Ø�—‘˜[°t·y±y·~±~ô€Jô �%œ×*Ñ*Ô+ä×$Ñ$ W¨e¯k©k¸3¿8¹8ÓDˆØ¸u¿{¹{ÖK¸!�'×&Ñ&¤u§z¡z°1Õ5ÒKÑKˆä×&Ñ& w°·±¸s¿x¹xÓHˆØÀÇÁÖO¸A�G×(Ñ(¬¯©°QÕ7ÒOÑOˆà×)Ñ)¨'×*?Ñ*?ÀÇÁÓ*LÓM‰ð —‘ˆØ—-‘-ˆØ×)Ñ)¨'×*?Ñ*?ÀÓ*FÓGˆÜ�4Ø"ØØ"Ø#×0Ñ0´·±¸XÓFØ Ÿ=™=ØŸ,™,õ(ð �.‰.Ó
€CÜ˜W g¨u°cÓ:Ð:ùò' Lùò Ps   Æ'K)Ç8'K.c                 óv   — |d   }t        |t        «      st        ‚t        | ||j                  d   |d   |«      S r½  )r˜   r¾  rS   r’  rý   )r~   r>   r\   rý   r  s        rD   Úarray_record_getitemr”  ½  s:   € à�‰G€EÜ�eœSÔ!ä!Ð!Ü ¨°#·(±(¸1±+¸tÀA¹wÈÓNÐNrF   c           
      óÐ  — | j                  ||«       |j                  |«      }|j                  |«      }t        |t        j
                  «      �r5t        |«      } || |«      }|j                  }	|j                  D �
cg c]"  }
| j                  t        j                  |
«      ‘Œ$ }}
|j                  D �
cg c]"  }
| j                  t        j                  |
«      ‘Œ$ }}
t        j                  |||| j                  |	«      «      }t        ||t        j                   ||«      t        j                   ||«      | j                  t        j                  |j"                  «      dd¬«       |j%                  «       }t'        | |||«      S t        j                  |||| j                  |«      «      }|j(                  rdnd}| j+                  ||||«      }t'        | |||«      S c c}
w c c}
w )zT
    Generic getattr() implementation for records: get the given record member.
    NrE  rH   )Úsentry_record_alignmentr  r‰  r˜   r   rŠ  ry   r|   rf   r¿   r�   r¬   r
   Úget_record_memberr{   rÕ   rk   r”   r  r    r„   r…   )r~   r>   r‹  r  rc  r  Úelemtyr×   r  r|   r§   rH  rI  Únewdatar	  Údptrrƒ   s                    rD   Úrecord_getattrr›  Æ  s±  € ð
 ×#Ñ# C¨Ô.Ø�Z‰Z˜Ó€FØ�Z‰Z˜Ó€Fä�&œ%×+Ñ+Õ,ô ˜6Ó"ˆÙ�G˜WÓ%ˆØ—‘ˆà—L‘Lö"¸A�G×(Ñ(¬¯©°QÕ7ð "ˆð "ð —n‘nö&¸a�g×*Ñ*¬5¯:©:°qÕ9ð &ˆ
ð &ä×+Ñ+¨G°U¸FØ,3×,AÑ,AÀ%Ó,HóJˆäØØÜ×$Ñ$ W¨hÓ7Ü×&Ñ& w°
Ó;Ø×)Ñ)¬%¯*©*°f·k±kÓBØØõ	
ð �m‰m‹oˆÜ  ¨'°3¸Ó<Ð<ä×(Ñ(¨°%¸Ø)0×)>Ñ)>¸vÓ)FóHˆàŸš‘¨ˆØ×"Ñ" 7¨F°D¸%Ó@ˆÜ  ¨'°3¸Ó<Ð<ùò-"ùò&s   Á>'GÂ5'G#c           	      ó¾  — |j                   \  }}|\  }}| j                  ||«       |j                  |«      }	|j                  |«      }
t	        |
t
        j                  «      rš t        j                  |«      | ||d   ¬«      }|j                  }t        j                  |||	|j                  j                  «      }t        j                  |||| j                  t
        j                  |
j                   «      «       yt        j                  |||	| j#                  |
«      «      }| j%                  ||||
«      }|j&                  rdnd}| j)                  ||
|||¬«       y)zT
    Generic setattr() implementation for records: set the given record member.
    rH   r  Nr‚   )rý   r–  r  r‰  r˜   r   rŠ  r
   rx   r›   r—  r:   ÚpointeeÚmemcpyr¿   r�   r²   r{   rŽ   r„   r‰   )r~   r>   r\   rý   rc  r‹  r_  r±  rŠ   r  r˜  Ú
val_structrD  ri  rš  rƒ   s                   rD   Úrecord_setattrr   î  s1  € ð
 —‘�J€CˆØ�K€FˆCà×#Ñ# C¨Ô.Ø�Z‰Z˜Ó€FØ�Z‰Z˜Ó€Fä�&œ%×+Ñ+Ô,à7”W×0Ñ0°Ó7¸ÀØ>BÀ1¹gôGˆ
à�o‰oˆÜ×(Ñ(¨°&¸&Ø),¯©×)9Ñ)9ó;ˆä�‰�w  cØ×+Ñ+¬E¯J©J¸¿¹ÓFõ	Hô ×(Ñ(¨°&¸&Ø)0×)>Ñ)>¸vÓ)FóHˆà�l‰l˜7 C¨°Ó7ˆØŸš‘¨ˆØ×Ñ˜7 F¨C°¸UÐÕCrF   c                 ó„   — | j                  |j                  d   |d   «      } || ||j                  d   |d   |d   «      S )ú3
    Record.__getitem__ redirects to getattr()
    r   rH   )Úget_getattrrý   )r~   r>   r\   rý   ré   s        rD   Úrecord_static_getitem_strr¤    sE   € ð
 ×Ñ˜sŸx™x¨™{¨D°©GÓ4€DÙ�˜ #§(¡(¨1¡+¨t°A©w¸¸Q¹Ó@Ð@rF   c                 ó2  — |j                   d   j                  }t        |j                   d   j                  «      }| j	                  |j
                  ||   «      }| j                  |j                   d   |«      } || ||j                   d   |d   ||   «      S )r¢  rH   r   )rý   rë   r¼   r!  Úinsert_const_stringr;   r£  )r~   r>   r\   rý   r“   r!  Úll_fieldré   s           rD   Úrecord_static_getitem_intr¨    s†   € ð
 �(‰(�1‰+×
#Ñ
#€CÜ�#—(‘(˜1‘+×$Ñ$Ó%€FØ×*Ñ*¨7¯>©>¸6À#¹;ÓG€HØ×Ñ˜sŸx™x¨™{¨HÓ5€DÙ�˜ #§(¡(¨1¡+¨t°A©w¸¸s¹ÓDÐDrF   Ústatic_setitemc                 óž   — |j                   \  }}}|\  }}}	t        |j                  ||«      }
| j                  ||
«      }|€J ‚ ||||	f«      S )ú3
    Record.__setitem__ redirects to setattr()
    )rý   r$   rÿ   Úget_setattr)r~   r>   r\   rý   Úrectyr  r_  Úrecr“   rŠ   Úgetattr_sigré   s               rD   Úrecord_static_setitem_strr°  !  s_   € ð
 —h‘h�O€Eˆ1ˆeØ�M€CˆˆcÜ˜CŸO™O¨U°EÓ:€KØ×Ñ˜s KÓ0€DØÐÐÐÙ�˜#˜s˜Ó$Ð$rF   c                 óè   — |j                   \  }}}|\  }}}	t        |j                  ||«      }
t        |j                   d   j                  «      }| j                  ||   |
«      }|€J ‚ ||||	f«      S )r«  r   )rý   r$   rÿ   r¼   r!  r¬  )r~   r>   r\   rý   r­  r  r_  r®  r“   rŠ   r¯  r!  ré   s                rD   Úrecord_static_setitem_intr²  .  s{   € ð
 —h‘h�O€Eˆ1ˆeØ�M€CˆˆcÜ˜CŸO™O¨U°EÓ:€KÜ�#—(‘(˜1‘+×$Ñ$Ó%€FØ×Ñ˜v c™{¨KÓ8€DØÐÐÐÙ�˜#˜s˜Ó$Ð$rF   c                 ó(   — | j                  |||«      S )zB
    Create a constant array (mechanism is target-dependent).
    )Úmake_constant_array)r~   r>   rS  Úpyvals       rD   Úconstant_arrayr¶  @  s   € ð
 ×&Ñ& w°°EÓ:Ð:rF   c                 óÒ   — t        j                  t        j                  d«      |j                  «      } |t	        |j                  «       «      «      }t        j                  ||«      S )zG
    Create a record constant as a stack-allocated array of bytes.
    é   )r   rø  rp  r2  Ú	bytearrayÚtobytesr
   r   )r~   r>   rS  rµ  ÚltyrŠ   s         rD   Úconstant_recordr¼  H  sH   € ô
 �,‰,”r—z‘z !“} e§l¡lÓ
3€CÙ
Œi˜Ÿ™›Ó(Ó
)€CÜ×$Ñ$ W¨cÓ2Ð2rF   c                 ó„   — t        j                  t        |«      t         j                  ¬«      }| j	                  |||«      S )zM
    Create a constant array from bytes (mechanism is target-dependent).
    rö  )r~  rÇ   r¹  Úuint8r´  )r~   r>   rS  rµ  Úbufs        rD   Úconstant_bytesrÀ  R  s2   € ô
 �(‰(”9˜UÓ#¬2¯8©8Ô
4€CØ×&Ñ& w°°CÓ8Ð8rF   c                 óx   — |j                   \  }}||k7  rt        j                  S d„ }| j                  ||||«      S )Nc                 óÈ   — | j                   |j                   k(  xrH | j                  |j                  k(  xr- | j                  j                  |j                  j                  k(  S rP  )rf   r¬   rE  r›   ©r  r   s     rD   Úarray_is_implzarray_is.<locals>.array_is_impld  sI   € Ø—‘˜1Ÿ7™7Ñ"ò /Ø—	‘	˜QŸY™YÑ&ò/à—‘—‘ §¡§¡Ñ.ð	0rF   )rý   r
   ró  rú  )r~   r>   r\   rý   ÚatyÚbtyrÄ  s          rD   Úarray_isrÇ  ^  s@   € à�x‰x�H€CˆØ
ˆc‚zÜ× Ñ Ð ò0ð
 ×#Ñ# G¨]¸CÀÓFÐFrF   Ú__hash__c                 ó   — d„ S )Nc                  ó   — y rP  r…  r{  s    rD   r—  zol_array_hash.<locals>.<lambda>q  r˜  rF   r…  r{  s    rD   Úol_array_hashrË  o  s   € áÐrF   c                 ó   — t        | d«      S )zq
    Return the Structure representation of the given *flatiterty* (an
    instance of types.NumpyFlatType).
    Úflat©Ú_make_flattening_iter_cls)Ú
flatitertys    rD   Úmake_array_flat_clsrÑ  w  s   € ô
 % Z°Ó8Ð8rF   c                 ó   — t        | d«      S )zv
    Return the Structure representation of the given *nditerty* (an
    instance of types.NumpyNdEnumerateType).
    ÚndenumeraterÎ  ©Únditertys    rD   Úmake_array_ndenumerate_clsrÖ    s   € ô
 % X¨}Ó=Ð=rF   c                 óö  — | j                  t        j                  d«      }|j                  d«      }	|� |j	                  t
        j                  |«       t        t        |«      «      D ]¿  }
t        j                  |||
«      }t        j                  ||j                  |«      «      }||
   }|j                  d||«      }t        j                  ||«      5  |j	                  ||«       |� ||
«       |j                  |	«       d d d «       |j	                  ||«       |€Œ¸ ||
«       ŒÁ |� |j	                  t
        j                  |«       |j                  |	«       |j!                  |	«       y # 1 sw Y   ŒmxY w)Nr   Úend_incrementr  )r¿   r   r�   r�  r$  r
   Ú
false_byter  r9   ri   r#  r?   r  Ú	if_likelyrš  Ú	true_byter›  )r~   r>   rq   rf   r£   Úend_flagÚloop_continueÚ
loop_breakr  Úbbendr‰  Úidxptrr“   rÁ   Ú	in_boundss                  rD   Ú_increment_indicesrâ  ‡  sF  € à×Ñ¤§
¡
¨AÓ.€Dà×&Ñ& Ó7€EàÐØ�‰”g×(Ñ(¨(Ô3äœ˜d›Ó$ò ˆÜ×%Ñ% g¨w¸Ó<ˆÜ×%Ñ% g¨w¯|©|¸FÓ/CÓDˆà�c‘
ˆØ×'Ñ'¨¨S°%Ó8ˆ	Ü×Ñ˜w¨	Ó2ñ 	"à�M‰M˜#˜vÔ&ØÐ(Ù˜cÔ"Ø�N‰N˜5Ô!÷	"ð 	�‰�d˜FÔ#ØÑ!Ù�s�Oðð" ÐØ�‰”g×'Ñ'¨Ô2Ø‡N�N�5Ôà×Ñ˜EÕ"÷	"ð 	"ús   Ã.E/Å/E8	c                 óŽ   — t        j                  ||j                  |j                  «      }t	        | ||j                  |||«       y rP  )r
   rÀ   rf   rq   râ  )r~   r>   r  r  r£   rÜ  rf   s          rD   Ú_increment_indices_arrayrä  ¨  s4   € ä× Ñ  ¨#¯)©)°U·Z±ZÓ@€EÜ�w ¨¯©°U¸GÀXÕNrF   c                 óv  ‡ ‡‡‡‡‡‡‡	‡
‡— ‰ j                   Š
‰ j                  Št        ‰ j                  «      Š	‰ j                  r‰
ndŠ G d„ dt
        «      } G d„ d|«      Š G ˆ fd„d|«      Š G d„ d	|«      Š G d
„ d|«      Š G d„ d|«      Š G ˆˆˆˆˆˆˆ	ˆ
ˆ ˆf
d„dt        j                  ‰ «      «      }|S )zq
    Return the Structure representation of the given *nditerty* (an
    instance of types.NumpyNdIterType).
    rH   c                   óR   — e Zd ZdZd„ Zd„ Zej                  d„ «       Zd„ Z	d„ Z
d„ Zy)	ú$make_nditer_cls.<locals>.BaseSubIterzF
        Base class for sub-iterators of a nditer() instance.
        c                 óP   — || _         || _        || _        || _        ||z
  | _        y rP  )ÚnditerÚmember_nameÚ	start_dimÚend_dimrq   )rZ   ré  rê  rë  rì  s        rD   r‹  z-make_nditer_cls.<locals>.BaseSubIter.__init__½  s+   € Ø ˆDŒKØ*ˆDÔØ&ˆDŒNØ"ˆDŒLØ )Ñ+ˆD�IrF   c                 óF   — t        | j                  | j                  |«       y rP  )rÆ   ré  rê  )rZ   rl   s     rD   Úset_member_ptrz3make_nditer_cls.<locals>.BaseSubIter.set_member_ptrÄ  s   € Ü�D—K‘K ×!1Ñ!1°3Õ7rF   c                 óB   — t        | j                  | j                  «      S rP  )r   ré  rê  rv  s    rD   Ú
member_ptrz/make_nditer_cls.<locals>.BaseSubIter.member_ptrÇ  s   € ä˜4Ÿ;™;¨×(8Ñ(8Ó9Ð9rF   c                  ó   — y rP  r…  )rZ   r~   r>   s      rD   Úinit_specificz2make_nditer_cls.<locals>.BaseSubIter.init_specificË  rÕ  rF   c                  ó   — y rP  r…  ©rZ   r~   r>   Úlogical_dims       rD   rÝ  z2make_nditer_cls.<locals>.BaseSubIter.loop_continueÎ  rÕ  rF   c                  ó   — y rP  r…  rô  s       rD   rÞ  z/make_nditer_cls.<locals>.BaseSubIter.loop_breakÑ  rÕ  rF   N)rr   rs   rt   r„  r‹  rî  rI  Úcached_propertyrð  rò  rÝ  rÞ  r…  rF   rD   ÚBaseSubIterrç  ¸  s:   „ ñ	ò	,ò	8ð 
×	"Ñ	"ñ	:ó 
#ð	:ò	ò	ó	rF   rø  c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ú$make_nditer_cls.<locals>.FlatSubIterzŸ
        Sub-iterator walking a contiguous array in physical order, with
        support for broadcasting (the index is reset on the outer dimension).
        c                 óŽ   — |j                  t        j                  d«      }| j                  t	        j
                  ||«      «       y rç   )r¿   r   r�   rî  r
   r   )rZ   r~   r>   r  s       rD   rò  z2make_nditer_cls.<locals>.FlatSubIter.init_specificÚ  s3   € Ø×'Ñ'¬¯
©
°AÓ6ˆDØ×Ñ¤× 9Ñ 9¸'À4Ó HÕIrF   c                 ór   — |j                  | j                  «      }|j                  |j                  |g«      S rP  )r?   rð  r
  r›   )rZ   r~   r>   r£   r  r  r  s          rD   Úcompute_pointerz4make_nditer_cls.<locals>.FlatSubIter.compute_pointerÞ  s+   € Ø—L‘L §¡Ó1ˆEØ—;‘;˜sŸx™x¨%¨Ó1Ð1rF   c                 óÄ   — || j                   dz
  k(  rN|j                  | j                  «      }t        j                  ||«      }|j                  || j                  «       y y r§  )rq   r?   rð  r
   r#  r$  )rZ   r~   r>   rõ  r  s        rD   rÝ  z2make_nditer_cls.<locals>.FlatSubIter.loop_continueâ  sM   € Ø˜dŸi™i¨!™mÒ+àŸ™ T§_¡_Ó5�Ü×/Ñ/°¸Ó?�Ø—‘˜e T§_¡_Õ5ð	 ,rF   c                 óH  — |dk(  r=|j                  t        j                  d«      }|j                  || j                  «       y || j
                  dz
  k(  rN|j                  | j                  «      }t        j                  ||«      }|j                  || j                  «       y y rÄ  )	r¿   r   r�   r$  rð  rq   r?   r
   r#  )rZ   r~   r>   rõ  r  r  s         rD   rÞ  z/make_nditer_cls.<locals>.FlatSubIter.loop_breaké  s}   € Ø˜aÒà×+Ñ+¬E¯J©J¸Ó:�Ø—‘˜d D§O¡OÕ4Ø §	¡	¨A¡Ò-àŸ™ T§_¡_Ó5�Ü×/Ñ/°¸Ó?�Ø—‘˜e T§_¡_Õ5ð	 .rF   N)rr   rs   rt   r„  rò  rý  rÝ  rÞ  r…  rF   rD   ÚFlatSubIterrú  Ô  s   „ ñ	ò
	Jò	2ò	6ó		6rF   r   c                   ó"   •— e Zd ZdZˆ fd„Zd„ Zy)ú+make_nditer_cls.<locals>.TrivialFlatSubIterzx
        Sub-iterator walking a contiguous array in physical order,
        *without* support for broadcasting.
        c                 ó"   •— ‰j                   rJ ‚y rP  )Úneed_shaped_indexing)rZ   r~   r>   rÕ  s      €rD   rò  z9make_nditer_cls.<locals>.TrivialFlatSubIter.init_specificú  s   ø€ Ø×4Ò4Ð4Ð4Ð4rF   c                 óv   — t        |«      dk  sJ t        |«      «       ‚|j                  |j                  |«      S r§  )r    r
  r›   ©rZ   r~   r>   r£   r  r  s         rD   rý  z;make_nditer_cls.<locals>.TrivialFlatSubIter.compute_pointerý  s2   € Ü�w“< 1Ò$Ð2¤c¨'£lÓ2Ð$Ø—;‘;˜sŸx™x¨Ó1Ð1rF   N)rr   rs   rt   r„  rò  rý  rÔ  s   €rD   ÚTrivialFlatSubIterr  ô  s   ø„ ñ	ô
	5ó	2rF   r  c                   ó   — e Zd ZdZd„ Zy)ú'make_nditer_cls.<locals>.IndexedSubIterzA
        Sub-iterator walking an array in logical order.
        c                 ól   — t        |«      | j                  k(  sJ ‚t        j                  |||||d¬«      S ©NFr,  )r    rq   r
   r8  r  s         rD   rý  z7make_nditer_cls.<locals>.IndexedSubIter.compute_pointer  s:   € Ü�w“< 4§9¡9Ò,Ð,Ð,Ü×+Ñ+¨G°W¸eÀSØ,3ÀôGð GrF   N©rr   rs   rt   r„  rý  r…  rF   rD   ÚIndexedSubIterr	    s   „ ñ	ó	GrF   r  c                   ó   — e Zd ZdZd„ Zy)ú'make_nditer_cls.<locals>.ZeroDimSubIterz5
        Sub-iterator "walking" a 0-d array.
        c                 ó   — |j                   S rP  )r›   r  s         rD   rý  z7make_nditer_cls.<locals>.ZeroDimSubIter.compute_pointer  s   € Ø—8‘8ˆOrF   Nr  r…  rF   rD   ÚZeroDimSubIterr    s   „ ñ	ó	rF   r  c                   ó   — e Zd ZdZd„ Zy)ú&make_nditer_cls.<locals>.ScalarSubIterz8
        Sub-iterator "walking" a scalar value.
        c                 ó   — |S rP  r…  r  s         rD   rý  z6make_nditer_cls.<locals>.ScalarSubIter.compute_pointer  s   € ØˆJrF   Nr  r…  rF   rD   ÚScalarSubIterr    s   „ ñ	ó	rF   r  c                   ó†   •
— e Zd ZdZej
                  ˆ ˆˆˆˆˆfd„«       Zˆˆˆˆ	fd„Zˆfd„Zd„ Z	d„ Z
ˆˆˆˆ	fd„Zd„ Zd	„ Zy
)úmake_nditer_cls.<locals>.NdIterz½
        .nditer() implementation.

        Note: 'F' layout means the shape is iterated in reverse logical order,
        so indices and shapes arrays have to be reversed as well.
        c           	      óÆ   •— g }‰j                   r‰n‰‰‰‰dœ}t        ‰j                  «      D ]0  \  }}|\  }}}}d|z  }	||   }
|j                   |
| |	||«      «       Œ2 |S )N)rÍ  ÚindexedÚ0dÚscalarzindex%d)r  rô   rè  rj   )rZ   ÚlÚ	factoriesrn   rö  r‚  rë  rì  r  rê  Úfactoryr   r  r  r  r  rÕ  s              €€€€€€rD   Úsubitersz(make_nditer_cls.<locals>.NdIter.subiters#  s†   ø€ àˆAØ08×0MÒ0M¡Ø0Ø$2Ø-Ø#0ñ	ˆIô $ H×$5Ñ$5Ó6ò I‘��3Ø.1Ñ+��i ¨!Ø'¨!™m�Ø# D™/�Ø—‘™  {°I¸wÓGÕHð	Ið
 ˆHrF   c                 óÚ  •— |j                  t        j                  d«      }|j                  |t        j                  |«      |«      | _        t        |«      D ]K  \  }}t        |t        j                  «      rŒ!d|z  }t        j                  |||   «      }	t        | ||	«       ŒM | j                  ||||«      }t        j                  t        j                  ‰«      }
d}d}t        |«      D ]O  \  }}t        |t        j                  «      sŒ!|j                  ‰k(  sŒ1||   j                  }||   j                   } n; ‰dk(  sJ ‚|j                  ||
d«      }|j                  t        j                  d«      }d„ }t#        ||«      D ]—  \  }}t        |t        j                  «      sŒ!|j                  dkD  sŒ1t%        t        j&                  t        j                  t        j                  |j                  «      |
«      }|j)                  ||||j                  |f«       Œ™ t        j*                  ||«      }‰dk(  r|ddd…   }|j-                  d	||«      }|j/                  |t        j0                  t        j2                  «      }‰j4                  s|f}t7        |«      ‰k(  sJ ‚t        j8                  ||j:                  ‰¬
«      }t=        ‰«      D ]+  }t        j>                  |||«      }|jA                  ||«       Œ- || _!        t        jD                  |||j:                  «      | _        t        j                  ||«      | _#        | jH                  D ]  }|jK                  ||«       Œ y)zY
            Initialize the nditer() instance for the specific array inputs.
            r   úscalar%dNr…  rH   c                 ó„   — t        | «      }t        |«      D ]'  }| |   |t        |«      |z
  |z      k7  sŒt        d«      ‚ y )Nz2nditer(): operands could not be broadcast together)r    r9   r¸   )rf   Ú
main_shaperü  rn   s       rD   Úcheck_shapezBmake_nditer_cls.<locals>.NdIter.init_specific.<locals>.check_shapeV  sO   € Ü˜“J�Ü˜q›ò ?�AØ˜Q‘x :¬c°*«oÀÑ.AÀAÑ.EÑ#FÓFÜ(ð *>ó ?ð ?ñ?rF   rÊ  r  rò  r’  )&r¿   r   r�   rÉ  rˆ  Úarraysrô   r˜   r™   r
   r   rÆ   Ú_arrays_or_scalarsr‡  rq   rf   r²   r¡   r$   Únonerú  rÀ   r  rÞ  rÛ  rÙ  r  r    rX   r:   r9   ri   r$  r£   rk   Ú	exhaustedr  rò  )rZ   r~   r>   Úarrtysr%  r  rn   rS  rê  ÚslotÚmain_shape_tyr#  Úmain_nitemsr  r$  r  r\   r  Úshape_is_emptyr(  r£   r‰  rà  Úsubiterr	  rq   rÕ  Únshapess                           €€€€rD   rò  z-make_nditer_cls.<locals>.NdIter.init_specific3  s	  ø€ ð ×'Ñ'¬¯
©
°AÓ6ˆDð "×,Ñ,¨W´e·k±kÀ&Ó6IØ-3ó5ˆDŒKô # 6Ó*ò 5‘��2Ü! "¤e§k¡kÕ2Ø",¨q¡.�Kä"×4Ñ4°W¸fÀQ¹iÓH�DÜ˜D +¨tÕ4ð5ð ×,Ñ,¨W°g¸vÀvÓNˆFô "ŸN™N¬5¯:©:°tÓ<ˆMØˆJØˆKÜ% fÓ-ò 	B‘��5Ü˜e¤U§[¡[Õ1°e·j±jÀDÓ6HØ!'¨¡§¡�JØ"(¨¡)×"2Ñ"2�KÙð		Bð ˜q’yÐ �yØ$×/Ñ/°¸ÈÓK�
Ø%×2Ñ2´5·:±:¸qÓA�ò?ô " &¨&Ó1ò K‘
��sÜ˜e¤U§[¡[Õ1°e·j±jÀ1³nÜ#¤E§J¡JÜ$)§N¡N´5·:±:¸u¿z¹zÓ$JØ$1ó3�Cð ×,Ñ,¨W°kØ-0°3·9±9¸jÐ2IõKðKô ×)Ñ)¨'°:Ó>ˆFØ˜Š}Ø¡ " ™�ð %×0Ñ0°°{ÀDÓIˆNØŸ™ ~´w×7HÑ7HÜ'.×'9Ñ'9ó;ˆIð ×0Ò0ð &˜�Ü�v“; 'Ò)Ð)Ð)ä×)Ñ)¨'°4·9±9À7ÔKˆGÜ˜W“~ò ,�Ü ×-Ñ-¨g°wÀÓD�Ø—‘˜d FÕ+ð,ð #ˆDŒLÜ ×+Ñ+¨G°V¸T¿Y¹YÓGˆDŒJÜ$×6Ñ6°wÀ	ÓJˆDŒNð  Ÿ=™=ò 8�Ø×%Ñ% g¨wÕ7ñ8rF   c                 ó2  •— |j                  d«      }t        j                  ||j                  | j                  «      «      }t        j
                  ||«      5  |j                  d«       |j                  |«       ddd«       ‰j                  }t        j                  || j                  «      }| j                  ||||«      }| j                  }|j                  d«       | j                  |||||«      }	|	D �
cg c]  }
|
j                  «       ‘Œ }	}
t        |	«      dk(  r|j                  |	d   «       n,|j                  |j!                  |‰j"                  |	«      «       t        j                  || j$                  «      }t'        ||t        |«      ||| j                  t)        j*                  | j,                  ||«      t)        j*                  | j.                  ||«      «       |j                  |«       |j1                  |«       y# 1 sw Y   �ŒŽxY wc c}
w )zJ
            Compute next iteration of the nditer() instance.
            r  FNTrH   r   )r�  r
   Úas_bool_bitr?   r(  Úif_unlikelyr  rš  r%  rÀ   r&  r£   Ú_make_viewsr  r    r"  rÉ  r!  rf   râ  rI  ÚpartialÚ_loop_continueÚ_loop_breakr›  )rZ   r~   r>   r%  rß  r(  r)  r%  r£   ÚviewsrÔ   rf   rÕ  s               €rD   Úiternext_specificz1make_nditer_cls.<locals>.NdIter.iternext_specific‚  sÊ  ø€ ð ×.Ñ.¨uÓ5ˆEô  ×+Ñ+¨GØ,3¯L©L¸¿¹Ó,HóJˆIä×$Ñ$ W¨iÓ8ñ &Ø× Ñ  Ô'Ø—‘˜uÔ%÷&ð —_‘_ˆFÜ×)Ñ)¨'°4·;±;Ó?ˆFØ×,Ñ,¨W°g¸vÀvÓNˆFØ—l‘lˆGð ×Ñ˜TÔ"Ø×$Ñ$ W¨g°wÀÈÓOˆEØ,1Ö2 q�Q—[‘[•]Ð2ˆEÐ2Ü�5‹z˜QŠØ—‘˜e A™hÕ'à—‘˜g×0Ñ0°¸(×:MÑ:MØ16ó8ô 9ô ×(Ñ(¨°$·*±*Ó=ˆEÜ˜w¨´°U³¸UØ&¨¯©Ü(×0Ñ0°×1DÑ1DØ18Ø18ó :ô  )×0Ñ0°×1AÑ1AØ18Ø18ó :ô!ð �N‰N˜5Ô!Ø×#Ñ# EÕ*÷?&ñ &üò 3s   Á#HÃ9HÈHc                 ó¬   — | j                   D ]E  }|j                  |cxk  r|j                  k  sŒ#n Œ&|j                  ||||j                  z
  «       ŒG y rP  )r  rë  rì  rÝ  ©rZ   r~   r>   r‰  rö  s        rD   r5  z.make_nditer_cls.<locals>.NdIter._loop_continue¬  sG   € Ø—}‘}ò M�Ø—=‘= CÔ5¨#¯+©+Ö5Ø×%Ñ% g¨w¸¸c¿m¹mÑ8KÕLñMrF   c                 ó¬   — | j                   D ]E  }|j                  |cxk  r|j                  k  sŒ#n Œ&|j                  ||||j                  z
  «       ŒG y rP  )r  rë  rì  rÞ  r:  s        rD   r6  z+make_nditer_cls.<locals>.NdIter._loop_break±  sE   € Ø—}‘}ò J�Ø—=‘= CÔ5¨#¯+©+Ö5Ø—N‘N 7¨G°S¸3¿=¹=Ñ5HÕIñJrF   c                 ó<  •— dg‰z  }‰j                   }| j                  }‰j                  }	t        |	t        j
                  «      rt        |	«      }	n|	g}	t        ‰«      D �
cg c](  }
|j                  t        j                  |||
«      «      ‘Œ* }}
t        ||«      D ]c  \  }}|\  }}}}||j                  |j                   }‰dk(  r|ddd…   }|D ],  }
||
   �J ‚| j                  ||||	|
   ||
   ||
   |«      ||
<   Œ. Œe t        d„ |D «       «      sJ ‚|S c c}
w )z:
            Compute the views to be yielded.
            NrÊ  r  c              3   ó    K  — | ]  }|–— Œ y ­wrP  r…  ©rR  rÔ   s     rD   rT  z>make_nditer_cls.<locals>.NdIter._make_views.<locals>.<genexpr>Ï  s   è ø€ Ò(˜Q”qÑ(ùs   ‚)rè  r  r!  r˜   r   r\  r¼   r9   r?   r
   ri   r¡   rë  rì  Ú
_make_viewr‰  )rZ   r~   r>   r£   r)  r%  r7  rè  r  Úrettysrn   rö  r.  r  Úarray_indicesÚsub_indicesr	  ÚnarraysrÕ  r/  s                   €€€€rD   r3  z+make_nditer_cls.<locals>.NdIter._make_views¶  sN  ø€ ð �F˜WÑ$ˆEØ×(Ñ(ˆHØ—}‘}ˆHØ×(Ñ(ˆFÜ˜&¤%§/¡/Ô2Ü˜f›‘à ˜�ä % g£ö0Øð —|‘|¤G×$8Ñ$8¸À'È1Ó$MÕNð 0ˆGð 0ô !$ H¨hÓ 7ò 	N‘��WØ),Ñ&��1�a˜Ø% g×&7Ñ&7¸¿¹ÐH�Ø˜S’=Ø"-©d°¨dÑ"3�KØ&ò N�AØ  ™8Ð+Ð+Ð+Ø#Ÿ™¨w¸ÀØ/5°a©yØ/5°a©y¸&À¹)ÀWó N�E˜!’HñNð	Nô Ñ( %Ô(Ô(Ð(Ð(ØˆLùò0s   Á"-Dc                 óÄ  — t        |t        j                  «      r|j                  dk(  sJ ‚|j	                  |||||«      } |j                  |«      ||«      }	t        ||«      }
|j                  |t        j                  t        j                  d«      d«      }|j                  |t        j                  t        j                  d«      d«      }t        |	||||
d¬«       |	S )zD
            Compute a 0d view for a given input array.
            r   r…  N)r«   )r˜   r   r™   rq   rý  ry   r€   rÉ  r‡  r�   rÕ   )rZ   r~   r>   r£   rY  r  r  r.  rl   Úviewr­   rf   r¬   s                rD   r?  z*make_nditer_cls.<locals>.NdIter._make_viewÒ  sÄ   € ô
 ˜e¤U§[¡[Ô1°e·j±jÀA²oÐEÐEà×)Ñ)¨'°7¸GÀUÈCÓPˆCØ,�7×%Ñ% eÓ,¨W°gÓ>ˆDä# G¨UÓ3ˆHØ×&Ñ& w´·±¼u¿z¹zÈ1Ó0MØ')ó+ˆEà×(Ñ(¨´%·.±.ÄÇÁÈQÓ2OØ)+ó-ˆGô ˜4  e¨W°hÈÕMØˆKrF   c                 ó  — g }t        t        ||«      «      D ]j  \  }\  }}t        |t        j                  «      r*|j                   |j                  |«      |||¬«      «       ŒM|j                  t        | d|z  «      «       Œl |S )Nr  r!  )rô   r¡   r˜   r   r™   rj   ry   r   )	rZ   r~   r>   r)  r%  r  rn   r  r  s	            rD   r&  z2make_nditer_cls.<locals>.NdIter._arrays_or_scalarsæ  s…   € ð ˆAÜ#,¬S°¸Ó-@Ó#Aò <‘�‘<�E˜3Ü˜e¤U§[¡[Ô1Ø—H‘HÐ6˜W×/Ñ/°Ó6°wØ7>Ø=@ôBõ Cð —H‘HœW T¨:¸©>Ó:Õ;ð<ð ˆHrF   N)rr   rs   rt   r„  rI  r÷  r  rò  r8  r5  r6  r3  r?  r&  )
r   r  r  r  r  r	  rC  rq   rÕ  r/  s
   €€€€€€€€€€rD   ÚNdIterr    sO   ø„ ñ	ð 
×	"Ñ	"÷	ð 	ó 
#ð	÷M	8ô^(	+òT	Mò
	J÷
	ò8	ó(	rF   rG  )rq   r	  r    r%  r  Úobjectr
   rx   )rÕ  rø  rG  r   r  r  r  r  r	  rC  rq   r/  s   `  @@@@@@@@@rD   Úmake_nditer_clsrI  ®  s§   ÿù€ ð
 �=‰=€DØ�_‰_€FÜ�(—/‘/Ó"€GØ×3Ò3‰d¸€Gô”fô ô86�kô 6ö@2˜[ô 2ôG˜ô Gô˜ô ô˜ô ÷V÷ V”×,Ñ,¨XÓ6ô Vðp €MrF   c                 ó`   ‡— | j                   Š G ˆfd„dt        j                  | «      «      }|S )zr
    Return the Structure representation of the given *nditerty* (an
    instance of types.NumpyNdIndexType).
    c                   ó&   •— e Zd ZdZˆ fd„Zˆ fd„Zy)ú%make_ndindex_cls.<locals>.NdIndexIterz,
        .ndindex() implementation.
        c                 ó®  •— |j                  t        j                  d«      }t        j                  ||j
                  |j                  t        j                  ‰«      ¬«      }t        j                  |t        j                  «      }t        ‰«      D ]‚  }t        j                  |||«      }|j                  ||«       ||   }	|j                  d|	|«      }
t        j                  ||
«      5  |j                  t        j                  |«       d d d «       Œ„ || _        || _        t        j                   |||j
                  «      | _        y # 1 sw Y   ŒÃxY w©Nr   r’  rò  )r¿   r   r�   r
   rX   r:   r   rÙ  r9   ri   r$  rõ  r2  rÛ  r£   r(  rk   rf   )rZ   r~   r>   r  r  r£   r(  r‰  rà  rÓ  Údim_is_emptyrq   s              €rD   rò  z3make_ndindex_cls.<locals>.NdIndexIter.init_specific  s'  ø€ Ø×'Ñ'¬¯
©
°AÓ6ˆDÜ×)Ñ)¨'°4·9±9Ø/6×/CÑ/CÄEÇJÁJØDHó0JôKˆGô  ×1Ñ1°'¼7×;MÑ;MÓNˆIä˜T“{ò 	@�Ü ×-Ñ-¨g°wÀÓD�Ø—‘˜d FÔ+ð " #™;�Ø&×4Ñ4°T¸8ÀTÓJ�Ü×(Ñ(¨°,Ó?ñ @Ø—M‘M¤'×"3Ñ"3°YÔ?÷@ð @ð	@ð #ˆDŒLØ&ˆDŒNÜ ×+Ñ+¨G°V¸T¿Y¹YÓGˆD�J÷@ð @ús   Ã+!EÅE	c           
      ón  •— |j                  t        j                  d«      }|j                  d«      }t	        j
                  ||j                  | j                  «      «      }t	        j                  ||«      5  |j                  d«       |j                  |«       d d d «       t        ‰«      D �cg c]2  }|j                  t	        j                  || j                  |«      «      ‘Œ4 }}|D ]  }	t        ||	«       Œ |j                  t	        j                   |||j"                  «      «       |j                  d«       t	        j$                  || j&                  ‰«      }
t)        ||‰|
| j                  | j                  «       |j                  |«       |j+                  |«       y # 1 sw Y   �ŒxY wc c}w )Nr   r  FT)r¿   r   r�   r�  r
   r1  r?   r(  r2  r  rš  r9   ri   r£   rJ   r"  rk   r:   rÀ   rf   râ  r›  )rZ   r~   r>   r%  r  rß  r(  r‰  r£   r?   rf   rq   s              €rD   r8  z7make_ndindex_cls.<locals>.NdIndexIter.iternext_specific  sq  ø€ Ø×'Ñ'¬¯
©
°AÓ6ˆDà×.Ñ.¨uÓ5ˆEä×+Ñ+¨GØ,3¯L©L¸¿¹Ó,HóJˆIä×$Ñ$ W¨iÓ8ñ &Ø× Ñ  Ô'Ø—‘˜uÔ%÷&ô #(¨£+ö/ð ð —|‘|¤G×$8Ñ$8¸Ø9=¿¹Ø9<ó%>õ ?ð /ˆGð /ð  ò -�Ü˜g tÕ,ð-ð �M‰Mœ'×,Ñ,¨W°g¸t¿y¹yÓIÔJØ×Ñ˜TÔ"ä×(Ñ(¨°$·*±*¸dÓCˆEÜ˜w¨°°uØ#Ÿ|™|¨T¯^©^ô=ð �N‰N˜5Ô!Ø×#Ñ# EÕ*÷'&ñ &üò/s   Á8#F%Â07F2Æ%F/N)rr   rs   rt   r„  rò  r8  ©rq   s   €rD   ÚNdIndexIterrL  ý  s   ø„ ñ	ô	Hõ,	+rF   rR  )rq   r
   rx   )rÕ  rR  rq   s     @rD   Úmake_ndindex_clsrS  ö  s.   ø€ ð
 �=‰=€Dö5+”g×1Ñ1°(Ó;ô 5+ðn ÐrF   c                 óÎ   ‡— ‰dv sJ ‚| j                   }|j                  dk(  r" G ˆfd„dt        j                  | «      «      }|S  G ˆfd„dt        j                  | «      «      }|S )N)rÍ  rÓ  r¦   c                   ó2   •— e Zd ZdZˆ fd„Zˆ fd„Zd„ Zd„ Zy)ú6_make_flattening_iter_cls.<locals>.CContiguousFlatIterzZ
            .flat() / .ndenumerate() implementation for C-contiguous arrays.
            c                 óÒ  •— |j                  t        j                  d«      }t        j                  ||«      | _        |j                  | _        ‰	dk(  r•t        j                  ||j                  |j                  t        j                  |j                  «      ¬«      }t        |j                  «      D ]+  }t        j                  |||«      }|j                  ||«       Œ- || _        y y )Nr   rÓ  r’  )r¿   r   r�   r
   r   r  r­   rø  rX   r:   rq   r9   ri   r$  r£   )
rZ   r~   r>   r  r  r  r£   r‰  rà  r‚  s
            €rD   rò  zD_make_flattening_iter_cls.<locals>.CContiguousFlatIter.init_specificB  s¾   ø€ Ø×+Ñ+¬E¯J©J¸Ó:�Ü$×6Ñ6°wÀÓE�”
ð "Ÿl™l�”à˜=Ò(ä%×1Ñ1Ø §¡Ø$×1Ñ1´%·*±*¸e¿j¹jÓIôK�Gô  % U§Z¡ZÓ0ò 4˜Ü!(×!5Ñ!5°g¸wÈÓ!L˜ØŸ™ d¨FÕ3ð4ð $+�D•Lð )rF   c                 ób  •— |j                   }|j                  }|j                  | j                  «      }|j	                  d||«      }	|j                  |	«       t        j                  ||	«      5  |j                  |j                  |g«      }
t        ||||
«      }‰dk(  r|j                  |«       n³| j                  }t        |«      D �cg c](  }|j                  t        j                  |||«      «      ‘Œ* }}t        j                  |||j!                  t"        j$                  «      ¬«      }|j                  t        j&                  |||g«      «       t)        |||||«       t        j*                  ||«      }|j-                  || j                  «       d d d «       y c c}w # 1 sw Y   y xY w)Nr  rÍ  ©rS  )rq   r²   r?   r  r  r  r
   rÚ  r
  r›   r‡   r"  r£   r9   ri   rk   r{   r   r�   Úmake_anonymous_structrä  r#  r$  )rZ   r~   r>   r  r  r%  rq   r²   r  r(  rl   r  r£   r‰  ÚidxvalsÚidxtupler‚  s                   €rD   r8  zH_make_flattening_iter_cls.<locals>.CContiguousFlatIter.iternext_specific[  s‘  ø€ Ø—z‘z�ØŸ™�àŸ™ T§Z¡ZÓ0�Ø"×.Ñ.¨s°E¸6ÓB�Ø× Ñ  Ô*ä×&Ñ& w°Ó9ñ 5Ø!Ÿ+™+ c§h¡h°°Ó8�CÜ% g¨w¸¸sÓC�EØ˜v’~ØŸ™ eÕ,ð #'§,¡,˜ô /4°D«kö#;ð (+ð $+§<¡<´×0DÑ0DÀWØELØEHó1Jõ $Kð #;˜ð #;ô $+×#5Ñ#5°g¸wØ9@×9NÑ9NÜ:?¿*¹*ó:Fô$G˜ð Ÿ™Ü#×9Ñ9¸'Ø;CÀUÐ:KóMôNô 1°¸'À5Ø14°gô?ô $×3Ñ3°G¸UÓC�EØ—M‘M %¨¯©Ô4÷-5ð 5ùò#;÷5ð 5ús    Á/AF%Ã-F Ã8BF%Æ F%Æ%F.c                 óX   — |j                  |j                  |g«      }t        ||||«      S rP  )r
  r›   r‡   ©rZ   r~   r>   r  r  r  rl   s          rD   rÑ  z>_make_flattening_iter_cls.<locals>.CContiguousFlatIter.getitem{  s)   € Ø—k‘k #§(¡(¨U¨GÓ4�Ü  ¨'°5¸#Ó>Ð>rF   c                 ó\   — |j                  |j                  |g«      }t        |||||«       y rP  )r
  r›   r‹   ©rZ   r~   r>   r  r  r  r  rl   s           rD   Úsetitemz>_make_flattening_iter_cls.<locals>.CContiguousFlatIter.setitem  s(   € Ø—k‘k #§(¡(¨U¨GÓ4�Ü˜7 G¨U°E¸3Õ?rF   N)rr   rs   rt   r„  rò  r8  rÑ  ra  ©r‚  s   €rD   ÚCContiguousFlatIterrV  =  s   ø„ ñô+ô25ò@?ó@rF   rc  c                   ó4   •— e Zd ZdZd„ Zˆ fd„Zd„ Zd„ Zd„ Zy)ú+_make_flattening_iter_cls.<locals>.FlatIterzÛ
            Generic .flat() / .ndenumerate() implementation for
            non-contiguous arrays.
            It keeps track of pointers along each dimension in order to
            minimize computations.
            c                 óÚ  — |j                  t        j                  d«      }|j                  }|j                  }t        j                  ||j                  |«      }t        j                  ||j                  |j                  t        j                  |j                  «      ¬«      }	t        j                  ||j                  |j                  t        j                  |j                  «      ¬«      }
t        j                  |t
        j                  «      }t        |«      D ]«  }t        j                  ||	|«      }t        j                  ||
|«      }|j                  ||«       |j                  ||«       ||   }|j                  d||«      }t        j                   ||«      5  |j                  t
        j"                  |«       d d d «       Œ­ |	| _        |
| _        || _        y # 1 sw Y   ŒÍxY wrN  )r¿   r   r�   r›   rq   r
   rÀ   rf   rX   r:   r   rÙ  r9   ri   r$  rõ  r2  rÛ  r£   Úpointersr(  )rZ   r~   r>   r  r  r  r›   rq   r  r£   rg  r(  r‰  rà  ÚptrptrrÓ  rO  s                    rD   rò  z9_make_flattening_iter_cls.<locals>.FlatIter.init_specificŽ  s   € Ø×+Ñ+¬E¯J©J¸Ó:�Ø—x‘x�Ø—z‘z�Ü ×-Ñ-¨g°s·y±yÀ$ÓG�ä!×-Ñ-Ø˜TŸY™Y¨W×-AÑ-AÄ%Ç*Á*ØBGÇ*Á*ó.NôO�ô #×.Ñ.Ø˜TŸY™Y¨W×-AÑ-AÄ%Ç*Á*ØBGÇ*Á*ó.NôO�ô $×5Ñ5°gÜ6=×6HÑ6HóJ�	ô ! ›;ò D�CÜ$×1Ñ1°'¸7ÀCÓH�FÜ$×1Ñ1°'¸8ÀSÓI�FØ—M‘M $¨Ô/Ø—M‘M $¨Ô/ð  & c™{�HØ#*×#8Ñ#8¸¸xÈÓ#N�LÜ ×,Ñ,¨W°lÓCñ DØŸ™¤g×&7Ñ&7¸ÔC÷Dð DðDð  '�”Ø (�”Ø!*�•÷Dð Dús   Æ !G!Ç!G*	c           
      óH  •— |j                   }t        j                  ||j                  |«      }t        j                  ||j                  |«      }| j
                  }	| j                  }
|j                  t        j                  d«      }|j                  d«      }t        j                  ||j                  | j                  «      «      }t        j                  ||«      5  |j                  d«       |j!                  |«       d d d «       |j                  d«       t        j"                  ||
|dz
  «      }|j                  |«      }t%        ||||«      }‰dk(  r|j'                  |«       nyt)        |«      D �cg c](  }|j                  t        j"                  ||	|«      «      ‘Œ* }}t        j*                  ||«      }|j'                  t        j,                  |||g«      «       t/        t)        |«      «      D �]>  }t        j"                  ||	|«      }t        j0                  ||j                  |«      «      }||   }||   }|j3                  d||«      }t        j4                  ||«      5  |j7                  ||«       t        j"                  ||
|«      }|j                  |«      }t        j8                  |||«      }|j7                  ||«       t)        |dz   |«      D ]+  }t        j"                  ||
|«      }|j7                  ||«       Œ- |j!                  |«       d d d «       |j7                  ||«       �ŒA |j7                  t        j:                  | j                  «       |j!                  |«       |j=                  |«       y # 1 sw Y   �Œ‡xY wc c}w # 1 sw Y   Œ}xY w)Nr   r  FTrH   rÍ  r  )rq   r
   rÀ   rf   r¬   r£   rg  r¿   r   r�   r�  r1  r?   r(  r2  r  rš  ri   r‡   r"  r9   rk   rZ  r  r#  r  rÚ  r$  r  rÛ  r›  )rZ   r~   r>   r  r  r%  rq   r  r¬   r£   rg  r  rß  Úis_exhaustedÚlast_ptrrl   r  r‰  r[  r\  rà  r“   rÁ   rø  rá  rh  Ú	inner_dimr‚  s                              €rD   r8  z=_make_flattening_iter_cls.<locals>.FlatIter.iternext_specific¯  s7  ø€ Ø—z‘z�Ü ×-Ñ-¨g°s·y±yÀ$ÓG�Ü!×.Ñ.¨w¸¿¹ÀTÓJ�ØŸ,™,�ØŸ=™=�à×+Ñ+¬E¯J©J¸Ó:�à×2Ñ2°5Ó9�ô  '×2Ñ2Ø˜WŸ\™\¨$¯.©.Ó9ó ;�ä×(Ñ(¨°,Ó?ñ *Ø×$Ñ$ UÔ+Ø—N‘N 5Ô)÷*ð × Ñ  Ô&ô #×/Ñ/°¸À4È!Á8ÓL�Ø—l‘l 8Ó,�Ü! '¨7°E¸3Ó?�Ø˜6’>Ø—M‘M %Õ(ô +0°«+ö7ð $'ð  'Ÿ|™|¬G×,@Ñ,@ÀØAHØADó-Fõ  Gð 7�Gð 7ô  '×1Ñ1°'¸7ÓC�HØ—M‘MÜ×5Ñ5°gØ7?ÀÐ6GóIôJô $¤E¨$£KÓ0ó 0�CÜ$×1Ñ1°'¸7ÀCÓH�FÜ!×1Ñ1°'Ø29·,±,¸vÓ2FóH�Cð # 3™K�EØ$ S™\�FØ '× 3Ñ 3°C¸¸eÓ D�IÜ ×*Ñ*¨7°IÓ>ñ .àŸ™ c¨6Ô2Ü!(×!5Ñ!5°g¸xÈÓ!M˜Ø%Ÿl™l¨6Ó2˜Ü%×1Ñ1°'¸3ÀÓG˜ØŸ™ c¨6Ô2ä).¨s°Q©w¸Ó)=ò 7˜IÜ%,×%9Ñ%9¸'Ø:BØ:Có&E˜Fð $ŸM™M¨#¨vÕ6ð	7ð
  Ÿ™ uÔ-÷.ð —M‘M $¨Ö/ð/0ð4 —‘œg×/Ñ/°·±Ô@Ø—‘˜uÔ%à×'Ñ'¨Õ.÷k*ñ *üò7÷&.ð .ús   Ã#NÅ7-NÉ*B2NÎNÎN!	c           	      óÌ  — |j                   }t        j                  ||j                  |¬«      }t        j                  ||j                  |¬«      }g }	t        t        |«      «      D ];  }
|	j                  |j                  |||
   «      «       |j                  |||
   «      }Œ= |	j                  «        t        j                  |||j                  |||j                  |	«      }|S )Nr  )rq   r
   rÀ   rf   r¬   r  r9   rj   ÚuremÚudivÚreverser  r›   r	  )rZ   r~   r>   r  r  r  rq   r  r¬   r£   r‰  rl   s               rD   Ú_ptr_for_indexz:_make_flattening_iter_cls.<locals>.FlatIter._ptr_for_indexô  sÄ   € Ø—z‘z�Ü ×-Ñ-¨g°s·y±yÈÔM�Ü!×.Ñ.¨w¸¿¹È4ÔP�ð �Ü#¤E¨$£KÓ0ò =�CØ—N‘N 7§<¡<°°v¸c±{Ó#CÔDØ#ŸL™L¨°°s±Ó<‘Eð=ð —‘Ô!ä×/Ñ/°¸À#Ç(Á(Ø06¸ÀÇÁØ07ó9�ð �
rF   c                 óH   — | j                  |||||«      }t        ||||«      S rP  )rq  r‡   r^  s          rD   rÑ  z3_make_flattening_iter_cls.<locals>.FlatIter.getitem  s+   € Ø×)Ñ)¨'°7¸EÀ3ÈÓN�Ü  ¨'°5¸#Ó>Ð>rF   c                 óL   — | j                  |||||«      }t        |||||«       y rP  )rq  r‹   r`  s           rD   ra  z3_make_flattening_iter_cls.<locals>.FlatIter.setitem	  s*   € Ø×)Ñ)¨'°7¸EÀ3ÈÓN�Ü˜7 G¨U°E¸3Õ?rF   N)	rr   rs   rt   r„  rò  r8  rq  rÑ  ra  rb  s   €rD   ÚFlatIterre  †  s%   ø„ ñò+ôBC/òJò"?ó@rF   rt  )rc   r	  r
   rx   )rÐ  r‚  rc   rc  rt  s    `   rD   rÏ  rÏ  7  sr   ø€ ØÐ*Ñ*Ð*Ð*à×&Ñ&€Jà×Ñ˜CÒöD	@¤'×"=Ñ"=¸jÓ"Iô D	@ðL #Ð"öE	@”w×2Ñ2°:Ó>ô E	@ðN ˆrF   rÍ  c                 ó>  — t        t        j                  |«      «      } || |«      }||_        | j	                  |«      } || ||j                  d«      ¬«      }|j                  | |||«       |j                  «       }t        | |t        j                  |«      |«      S ©NrÇ   )r[   )	rÑ  r   ÚNumpyFlatTyperÇ   ry   rh   rò  r  r    )r~   r>   r  r  ÚflatiterclsÚflatiterÚarrclsr	  s           rD   Úmake_array_flatiterr{    s‘   € ä%¤e×&9Ñ&9¸%Ó&@ÓA€KÙ˜7 GÓ,€Hà€H„Nà×Ñ Ó&€FÙ
�˜' x×'@Ñ'@ÀÓ'IÔ
J€Cà×Ñ˜7 G¨U°CÔ8à
×
Ñ
Ó
€CÜ˜W g¬u×/BÑ/BÀ5Ó/IÈ3ÓOÐOrF   c                 óâ   — |j                   \  }|\  }t        |«      } || ||¬«      }|j                  }| j                  |«      }	 |	| ||j                  ¬«      }
|j                  | |||
|«       y rL  )rý   rÑ  rc   ry   rÇ   r8  )r~   r>   r\   rý   r%  rÐ  ry  rx  r  rz  r  s              rD   Úiternext_numpy_flatiterr}     sq   € ð —8‘8�L€ZØ�J€Xä% jÓ1€KÙ˜7 G°8Ô<€Hà×!Ñ!€EØ×Ñ Ó&€FÙ
�˜'¨¯©Ô
8€Cà×Ñ˜w¨°¸¸VÕDrF   c                 ó  — |j                   d   }|\  }}t        |«      } || ||¬«      }|j                  }| j                  |«      }	 |	| ||j                  ¬«      }
|j                  | |||
|«      }t        | ||j                  |«      S ©Nr   r  )rý   rÑ  rc   ry   rÇ   rÑ  r    rÿ   )r~   r>   r\   rý   rÐ  ry  r  rx  r  rz  r  r	  s               rD   Úiternext_numpy_getitemr€  0  sŠ   € à—‘˜!‘€JØ�O€Hˆeä% jÓ1€KÙ˜7 G°8Ô<€Hà×!Ñ!€EØ×Ñ Ó&€FÙ
�˜'¨¯©Ô
8€Cà
×
Ñ
˜7 G¨U°C¸Ó
?€CÜ˜W g¨s¯©ÀÓDÐDrF   c                 ó  — |j                   d   }|\  }}}t        |«      } || ||¬«      }|j                  }	| j                  |	«      }
 |
| ||j                  ¬«      }|j                  | ||	|||«       | j                  «       S r  )rý   rÑ  rc   ry   rÇ   ra  rq  )r~   r>   r\   rý   rÐ  ry  r  r  rx  r  rz  r  s               rD   Úiternext_numpy_getitem_anyr‚  @  s‰   € ð —‘˜!‘€JØ!Ñ€Hˆe�Uä% jÓ1€KÙ˜7 G°8Ô<€Hà×!Ñ!€EØ×Ñ Ó&€FÙ
�˜'¨¯©Ô
8€Cà×Ñ�W˜g u¨c°5¸%Ô@Ø×"Ñ"Ó$Ð$rF   c                 óÊ   — |j                   d   }t        |«      } || ||d   ¬«      }| j                  |j                  «      } || ||j                  ¬«      }|j
                  S r  )rý   rÑ  ry   rc   rÇ   r²   )	r~   r>   r\   rý   rÐ  rx  ry  rz  r  s	            rD   Úiternext_numpy_getitem_flatr„  Q  s]   € à—‘˜!‘€JÜ% jÓ1€KÙ˜7 G°4¸±7Ô;€Hà×Ñ 
× 5Ñ 5Ó6€FÙ
�˜'¨¯©Ô
8€CØ�:‰:ÐrF   c                 óP  — |j                   \  }|\  }t        t        j                  |«      «      } || |«      }||_        | j                  |«      } || ||j                  d«      ¬«      }|j                  | |||«       |j                  «       }	t        | ||j                  |	«      S rv  )rý   rÖ  r   ÚNumpyNdEnumerateTyperÇ   ry   rh   rò  r  r    rÿ   )
r~   r>   r\   rý   r  r  Ú	nditerclsré  rz  r	  s
             rD   Úmake_array_ndenumeraterˆ  \  sœ   € à�X‰X�F€EØ�D€CÜ*¬5×+EÑ+EÀeÓ+LÓM€IÙ�w Ó(€Fà€F„Là×Ñ Ó&€FÙ
�˜' v×'>Ñ'>¸wÓ'GÔ
H€Cà
×Ñ˜ '¨5°#Ô6à
×
Ñ
Ó
€CÜ˜W g¨s¯©ÀÓDÐDrF   c                 óâ   — |j                   \  }|\  }t        |«      } || ||¬«      }|j                  }| j                  |«      }	 |	| ||j                  ¬«      }
|j                  | |||
|«       y rL  )rý   rÖ  rc   ry   rÇ   r8  )r~   r>   r\   rý   r%  rÕ  ré  r‡  r  rz  r  s              rD   Úiternext_numpy_nditerrŠ  n  sq   € ð —‘�J€XØ�H€Vä*¨8Ó4€IÙ�w ¨vÔ6€Fà×Ñ€EØ×Ñ Ó&€FÙ
�˜'¨¯©Ô
6€Cà
×Ñ˜W g¨u°c¸6ÕBrF   c           
      ót  — t        |j                  |«      D ��cg c]'  \  }}| j                  |||t        j                  «      ‘Œ) }}}t        t        j                  t        |«      «      «      } || |«      }|j                  | ||«       |j                  «       }	t        | ||j                  |	«      S c c}}w )zndindex(*shape))r¡   rý   rŽ   r   r�   rS  ÚNumpyNdIndexTyper    rò  r  r    rÿ   )
r~   r>   r\   rý   Úargtyr›  rf   r‡  ré  r	  s
             rD   Úmake_array_ndindexrŽ  ~  s¤   € ô
  # 3§8¡8¨TÓ2÷4Ù�˜ð �\‰\˜' 3¨¬u¯z©zÕ:ð 4€Eñ 4ô !¤×!7Ñ!7¼¸E»
Ó!CÓD€IÙ�w Ó(€FØ
×Ñ˜ '¨5Ô1à
×
Ñ
Ó
€CÜ˜W g¨s¯©ÀÓDÐDùó4s   š,B4c           	      óæ  — |j                   j                  }|dkD  re|j                  d   j                  }|d   }t	        j
                  |||«      }|D �cg c]$  }| j                  |||t        j                  «      ‘Œ& }}ng }t        t        j                  t        |«      «      «      }	 |	| |«      }
|
j                  | ||«       |
j                  «       }t        | ||j                   |«      S c c}w )zndindex(shape)r   )rÿ   rq   rý   r|   r
   rÀ   rŽ   r   r�   rS  rŒ  r    rò  r  r    )r~   r>   r\   rý   rq   r’   rY  rf   r“   r‡  ré  r	  s               rD   Úmake_array_ndindex_tupler�  �  sà   € ð �?‰?×Ñ€DØˆa‚xØ—‘˜‘×!Ñ!ˆØ�1‰gˆä×$Ñ$ W¨c°4Ó8ˆà!ö#Øð —‘˜g s¨E´5·:±:Õ>ð #ˆñ #ð ˆä ¤×!7Ñ!7¼¸E»
Ó!CÓD€IÙ�w Ó(€FØ
×Ñ˜ '¨5Ô1à
×
Ñ
Ó
€CÜ˜W g¨s¯©ÀÓDÐDùò#s   Á)C.c                 óz   — |j                   \  }|\  }t        |«      } || ||¬«      }|j                  | ||«       y rL  )rý   rS  r8  )r~   r>   r\   rý   r%  rÕ  ré  r‡  s           rD   Úiternext_numpy_ndindexr’  ¤  s@   € ð —‘�J€XØ�H€Vä  Ó*€IÙ�w ¨vÔ6€Fà
×Ñ˜W g¨vÕ6rF   c                 óH  — |j                   }|j                  }t        |j                  d   t        j
                  «      rt        j                  ||d   «      }n|d   g} t        |«      | |«      }|j                  | |||«       |j                  «       }t        | |||«      S )z
    nditer(...)
    r   )rÿ   r%  r˜   rý   r   r\  r
   rÀ   rI  rò  r  r    )	r~   r>   r\   rý   rÕ  r)  r%  ré  r	  s	            rD   Úmake_array_nditerr”  °  s“   € ð
 �‰€HØ�_‰_€Fä�#—(‘(˜1‘+œuŸ™Ô/Ü×%Ñ% g¨t°A©wÓ7‰à�q‘'�ˆà&Œ_˜XÓ& w°Ó8€FØ
×Ñ˜ '¨6°6Ô:à
×
Ñ
Ó
€CÜ˜W g¨x¸Ó=Ð=rF   c                 óv   — |j                   \  }|\  } t        |«      | ||¬«      }|j                  | ||«       y rL  )rý   rI  r8  )r~   r>   r\   rý   r%  rÕ  ré  s          rD   Úiternext_numpy_nditer2r–  Ä  s=   € ð —‘�J€XØ�H€Và&Œ_˜XÓ& w°¸vÔF€FØ
×Ñ˜W g¨vÕ6rF   c                 óº   — |j                   \  }}t        j                  t        j                  d«      t	        ||k(  «      «      }t        | ||j                  |«      S r§  )rý   r   r   rp  r½   r"   rÿ   )r~   r>   r\   rý   Úarg1Úarg2r	  s          rD   Údtype_eq_implrš  Î  sE   € à—‘�J€Dˆ$Ü
�+‰+”b—j‘j “m¤S¨°©Ó%6Ó
7€CÜ˜g w°·±ÀÓEÐErF   c                 óŠ  — t        |«      } || |«      }| j                  |j                  «      }| j                  t        j
                  t        | |«      «      }| j                  t        j
                  d«      }t        t        j                  d«      d«      }	|D ]H  }
|j                  ||
«      }|j                  |d«      }|j                  |	|j                  |d«      «      }	ŒJ |j                  dk(  rd}nÎ|j                  dk(  rO|g}t        |dd «      D ]&  }|j!                  |j#                  |d   |«      «       Œ( t%        t        |«      «      }np|j                  dk(  r=|g}|dd D ]&  }|j!                  |j#                  |d   |«      «       Œ( t%        |«      }n$t'        dj)                  |j                  «      «      ‚|j                  ||«      }|j                  |d«      }|j                  |	|j                  |d«      «      }	|j+                  |	d	¬
«      5  | j,                  j/                  |t0        d«       ddd«       |j                  }| j3                  |«      }| j                  t        j4                  |«      }| j7                  «       ||f}t	        j8                  t        j:                  «      }t	        j<                  t?        |«      «      }tA        ||t        j
                  t        j4                  «      }| jC                  |tD        ||«      }| jF                  jI                  ||«      }| jK                  t        j
                  «      }tM        jN                  |||¬«      }tM        jN                  |||¬«      }tQ        ||jS                  ||jU                  «       «      ||||¬«       |S # 1 sw Y   �ŒyxY w)a	  Utility function used for allocating a new array during LLVM code
    generation (lowering).  Given a target context, builder, array
    type, and a tuple or list of lowered dimension sizes, returns a
    LLVM value pointing at a Numba runtime allocated array.
    rH   r   r…  r¦   Nr  rÊ  z3Don't know how to allocate array with layout '{0}'.Fri  )z[array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.rY  r÷  )+ry   r{   r|   r¿   r   r�   r€   r   r   rp  Úsmul_with_overflowrc  rô  rq   r	  r  rj   rÂ   r»   rS   rÄ   r   rk  rl  r¸   Úget_preferred_array_alignmentÚuint32rq  ÚMemInfoPointerÚvoidptrÚTypeRefr:   r$   rú  Ú_call_allocatorr  Úmeminfo_datar¹   r
   rk   rÕ   r>  rù  )r~   r>   ra  r  rÜ  r  Údatatyper­   ÚarrlenÚoverflowr§   Úarrlen_multr¬   Údimension_sizeÚallocsize_multrE  r|   Ú	align_valrƒ   rý   ÚmipÚarytypeclassÚargtypesr«   r›   rÎ   Úshape_arrayÚstrides_arrays                               rD   r  r  Ø  sO  € ô ˜Ó €FÙ
�˜'Ó
"€Cà×$Ñ$ W§]¡]Ó3€HØ×#Ñ#¤E§J¡J´¸WÀgÓ0NÓO€Hð ×!Ñ!¤%§*¡*¨aÓ0€FÜœŸ
™
 1› qÓ)€HØò 
ˆØ×0Ñ0°¸Ó;ˆØ×&Ñ& {°AÓ6ˆØ—;‘;Ø�g×+Ñ+¨K¸Ó;ó
‰ð
ð ‡|�|�qÒØ‰Ø	�‰˜3Ò	Ø�*ˆÜ& v¨a¨b zÓ2ò 	EˆNØ�N‰N˜7Ÿ;™; w¨r¡{°NÓCÕDð	Eäœ Ó)Ó*‰Ø	�‰˜3Ò	Ø�*ˆØ$ S b˜kò 	EˆNØ�N‰N˜7Ÿ;™; w¨r¡{°NÓCÕDð	Eä˜“.‰ä!ØA×HÑHØ—‘ó ó!ð 	!ð
 ×/Ñ/°¸ÓA€NØ×%Ñ% n°aÓ8€IØ�{‰{˜8 W×%:Ñ%:¸>È1Ó%MÓN€Hà	�‰˜¨%ˆÓ	0ñ 
ð 	×Ñ×)Ñ)Ø”Zð-ô	
÷
ð �M‰M€EØ×5Ñ5°eÓ<€IØ× Ñ ¤§¡¨yÓ9€EØ×#Ñ#Ó% y°%Ð8€Dä
×
Ñ
œuŸ}™}Ó
-€CÜ—=‘=¤ g£Ó/€LÜ˜˜l¬E¯J©J¼¿¹ÓE€Hà×&Ñ& w´ÀÈ4ÓP€GØ�;‰;×#Ñ# G¨WÓ5€Dà×#Ñ#¤E§J¡JÓ/€FÜ×$Ñ$ W¨f¸Ô@€KÜ×&Ñ& w°¸FÔC€Mä�3ØŸ™¨¨h×.AÑ.AÓ.CÓDØ$Ø(Ø$Ø"õ$ð €J÷A
ñ 
ús   È"N8Î8OÚ	_allocatec                 ó   — d„ }|S )zTImplements a Numba-only default target (cpu) classmethod on the array
    type.
    c                 ó   — t        ||«      S rP  )Úintrin_alloc)ÚclsrE  rƒ   s      rD   ré   z _ol_array_allocate.<locals>.impl,  s   € Ü˜I uÓ-Ð-rF   r…  )r´  rE  rƒ   ré   s       rD   Ú_ol_array_allocaterµ  '  s   € ò
.à€KrF   c                 ó&   — | j                  ||«      S )z9Trampoline to call the intrinsic used for allocation
    )r°  )ra  r”   rƒ   s      rD   r¢  r¢  1  s   € ð ×Ñ˜T 5Ó)Ð)rF   c                 óp   — d„ }t        j                  t         j                  «      }t        |||«      }||fS )z3Intrinsic to call into the allocator for Array
    c                 óJ   — |\  }}| j                   j                  |||«      }|S rP  )r  Úmeminfo_alloc_aligned)r~   r>   r$   rý   rE  rƒ   r«   s          rD   rj  zintrin_alloc.<locals>.codegen;  s)   € Ø!Ñˆ�EØ—+‘+×3Ñ3°G¸YÈÓNˆØˆrF   )r   rŸ  r   r$   )rk  rE  rƒ   rj  r«  r\   s         rD   r³  r³  7  s5   € òô
 ×
Ñ
œuŸ}™}Ó
-€CÜ
�C˜ EÓ
*€CØ�ˆ<ÐrF   c           	      óŒ  — d„ }t        |t        j                  «      r&d}| j                  |||t        j                  «      g}n@t        |t        j
                  «      sJ ‚|j                  }t        j                  |||¬«      }g }|D ]&  }|j                   || ||j                  |«      «       Œ( | j                  |t        j                  d«      }	t        |«      D ]X  }
|j                  d||
   |	«      }t        j                  ||«      5  | j                  j!                  |t"        d«       ddd«       ŒZ |S # 1 sw Y   ŒfxY w)z;
    Parse the shape argument to an array constructor.
    c                 ó  — | j                  t        j                  «      }|j                  }t	        j
                  |«      }t        |d|dz
  z  dz
  «      }|j                  |k  r|j                  ||«      }|S |j                  |k\  ru|j                  d||«      }	|j                  |	d¬«      5  | j                  j                  |t        d«       ddd«       |j                  |kD  r|j                  ||«      }|S |}S # 1 sw Y   Œ0xY w)z0Cast src to intp only if value can be maintainedrH   ú>Fri  )z#Cannot safely convert value to intpN)r¹   r   r�   rI   r   rp  r   Úsextr  r   rk  rl  r¸   Útrunc)
r~   r>   Úsrc_trD  rÎ   Ú
intp_widthÚintp_irÚmaxvalr	  Ú	is_largers
             rD   Úsafecast_intpz#_parse_shape.<locals>.safecast_intpI  sþ   € à×'Ñ'¬¯
©
Ó3ˆØ—\‘\ˆ
Ü—*‘*˜ZÓ(ˆÜ˜' Q¨*°q©.Ñ%8¸AÑ$=Ó?ˆØ�;‰;˜Ò#Ø—,‘,˜s GÓ,ˆCð ˆ
ð �[‰[˜JÒ&Ø×+Ñ+¨C°°fÓ=ˆIØ—‘ °5�Ó9ñ Ø×!Ñ!×1Ñ1ØœZØ<ô÷ð
 �{‰{˜ZÒ'Ø—m‘m C¨Ó1�ð ˆ
ð �Øˆ
÷ð ús   Â."C?Ã?DrH   r  r   r  )znegative dimensions not allowedN)r˜   r   rš   rŽ   r�   r\  rÁ   r
   rÀ   rj   r:   Úget_constant_genericr9   r  r2  rk  rl  r¸   )r~   r>   rS  rŠ   rÄ  rq   Úpassed_shapesr  r§   r  r‰  Úis_negs               rD   Ú_parse_shaperÈ  E  s+  € òô* �"”e—m‘mÔ$ØˆØ Ÿ™ g¨s°B¼¿
¹
ÓCÐD‰ä˜"œeŸo™oÔ.Ð.Ð.Ø�x‰xˆÜ×,Ñ,¨W°cÀÔFˆà€FØò BˆØ�‰‘m G¨W°a·f±f¸aÓ@ÕAðBð ×'Ñ'¨´·±¸QÓ?€DÜ�T‹{ò ˆØ×$Ñ$ S¨&°©+°tÓ<ˆÜ× Ñ  ¨&Ó1ñ 	Ø×Ñ×-Ñ-ØœÐ%Iô÷	ð 	ðð €M÷	ð 	ús   Ä"D:Ä:E	c                 ób   — |j                   d   }|d   }|j                  }|t        | |||«      fS )zL
    Parse the arguments of a np.empty(), np.zeros() or np.ones() call.
    r   )rý   rÿ   rÈ  )r~   r>   r\   rý   ÚarrshapetypeÚarrshapera  s          rD   Ú_parse_empty_argsrÌ  u  s9   € ð —8‘8˜A‘;€LØ�A‰w€HØ�o‰o€GØ”L ¨'°<ÀÓJÐJÐJrF   c                 ó  — |j                   d   }t        |t        j                  «      rQ t	        |«      | ||d   ¬«      }t        j                  ||j                  |j                  ¬«      }|j                  |fS |j                  dfS )z_
    Parse the arguments of a np.empty_like(), np.zeros_like() or
    np.ones_like() call.
    r   r  r  r…  )
rý   r˜   r   r™   ry   r
   rÀ   rf   rq   rÿ   )r~   r>   r\   rý   Úarytyper  r  s          rD   ri  ri    sr   € ð
 �h‰h�q‰k€GÜ�'œ5Ÿ;™;Ô'Ø!Œj˜Ó! '¨7¸$¸q¹'ÔBˆÜ×%Ñ% g¨s¯y©yÀÇÁÔMˆØ�‰ Ð&Ð&à�‰ Ð"Ð"rF   c                 ón   — t        |t        j                  «      rd| › d�}t        j                  |«      ‚y )NzIf np.z0 dtype is a string it must be a string constant.)r˜   r   ÚUnicodeTyper	   rê   )Úfnamer|   rÍ   s      rD   Ú_check_const_str_dtyperÒ  �  s7   € Ü�%œ×*Ñ*Ô+Ø�u�gÐMÐNˆÜ× Ñ  Ó%Ð%ð ,rF   c                 ó<   — |j                   } ||||«      }d„ }||fS )Nc                 ó`   — t        | |||«      \  }}t        | |||«      }|j                  «       S rP  )rÌ  r  r  ©r
  r>   r\   r  ra  r  r  s          rD   rj  znumpy_empty_nd.<locals>.codegen˜  s2   € Ü+¨E°7¸CÀÓH‰ˆ�Ü˜U G¨W°fÓ=ˆØ�}‰}‹ÐrF   ©Úinstance_type)r  Úty_shapeÚty_dtypeÚty_retty_refÚty_rettyr\   rj  s          rD   Únumpy_empty_ndrÜ  “  s,   € à×)Ñ)€HÙ
�8˜X |Ó
4€Còð �ˆ<ÐrF   c                 óv  ‡— t        d|«       |t        u s7t        |t        j                  «      r|j
                  t        u st        |«      rt        j                  }nt        |«      }t        | «      }|�'|�%t        j                  ||d¬«      Št        fˆfd„	}|S d| › d|› d�}t        j                  |«      ‚)Nrø  r¦   rö  c                 ó   •— t        | |‰«      S rP  )rÜ  )rf   r|   rY  s     €rD   ré   zol_np_empty.<locals>.impl­  s   ø€ Ü! %¨°Ó6Ð6rF   z.Cannot parse input types to function np.empty(r»  r¼  )rÒ  Úfloatr˜   r   ÚFunctionÚ
typing_keyr   ÚdoubleÚty_parse_dtypeÚty_parse_shaper™   r	   rê   )rf   r|   Únb_dtyperq   ré   rÍ   rY  s         @rD   Úol_np_emptyræ  Ÿ  s£   ø€ ä˜7 EÔ*Ø”‰Ü	�Eœ5Ÿ>™>Ô	*¨u×/?Ñ/?Ä5Ñ/HÜ˜ÔÜ—<‘<‰ä! %Ó(ˆä˜%Ó €DØÐ Ð 0Ü—‘ (°¸cÔBˆä#õ 	7àˆà>¸u¸gÀRÈÀwÈaÐPˆÜ× Ñ  Ó%Ð%rF   c                 ó<   — |j                   } ||||«      }d„ }||fS )Nc                 ó`   — t        | |||«      \  }}t        | |||«      }|j                  «       S rP  )ri  r  r  rÕ  s          rD   rj  z$numpy_empty_like_nd.<locals>.codegenº  s2   € Ü0°¸ÀÀfÓM‰ˆ�Ü˜U G¨W°fÓ=ˆØ�}‰}‹ÐrF   rÖ  )r  Úty_prototyperÙ  rÚ  rÛ  r\   rj  s          rD   Únumpy_empty_like_ndrê  µ  s,   € à×)Ñ)€HÙ
�< ¨<Ó
8€Còð �ˆ<ÐrF   c                 ó´  ‡— t        d|«       t        |«      st        |«      }n)t        | t        j
                  «      r| j                  }n| }|�dt        | t        j
                  «      r2| j                  dk7  r| j                  nd}| j                  ||d¬«      Šn6t	        j
                  |dd«      Šnd| › d|› d	�}t        j                  |«      ‚dˆfd
„	}|S )Nr’  r^  r¦   F)r|   r	  rf  r   z3Cannot parse input types to function np.empty_like(r»  r¼  c                 ó   •— t        | |‰«      S rP  )rê  )r  r|   rY  s     €rD   ré   zol_np_empty_like.<locals>.implÕ  s   ø€ Ü" 3¨¨uÓ5Ð5rF   rP  )rÒ  r   rã  r˜   r   r™   r|   r	  r`  r	   rê   )r  r|   rå  r	  rÍ   ré   rY  s         @rD   Úol_np_empty_likerí  Á  s¿   ø€ ä˜<¨Ô/Ü�uÔÜ! %Ó(‰Ü	�CœŸ™Ô	%Ø—9‘9‰àˆØÐÜ�cœ5Ÿ;™;Ô'Ø#&§:¡:°Ò#4�S—Z’Z¸#ˆFØ—H‘H 8°FÀU�HÓK‰Eä—K‘K ¨!¨SÓ1‰Eð Ø #˜u B u g¨Qð0ˆä× Ñ  Ó%Ð%õ6à€KrF   c                 ó:   — t        j                  |«      }d„ }||fS )Nc                 óÖ   —  t        |j                  d   «      | ||d   «      }t        j                  ||j                  |j                  |j                  |j                  «      d«       y rç   )ry   rý   r
   rj  r›   rÂ   r­   r²   )r
  r>   r\   r  r  s        rD   rj  z(_zero_fill_array_method.<locals>.codegenÞ  sO   € Ø%Œj˜Ÿ™ !™Ó% e¨W°f¸Q±iÓ@ˆÜ�‰�w §¡¨'¯+©+°c·l±lÀCÇJÁJÓ*OØõ	rF   )r   r'  )r  rZ   r\   rj  s       rD   Ú_zero_fill_array_methodrð  Ú  s!   € ä
�*‰*�TÓ
€Còð �ˆ<ÐrF   Ú
_zero_fillc                 ó   — d„ }|S )z?Adds a `._zero_fill` method to zero fill an array using memset.c                 ó   — t        | «       y rP  )rð  rv  s    rD   ré   z ol_array_zero_fill.<locals>.implè  s
   € Ü Õ%rF   r…  )rZ   ré   s     rD   Úol_array_zero_fillrô  å  s   € ò&à€KrF   c                 ó0   — t        d|«       t        fd„}|S )Nrn  c                 óT   — t        j                  | |¬«      }|j                  «        |S ©Nrö  )r~  rø  rñ  )rf   r|   r  s      rD   ré   zol_np_zeros.<locals>.implñ  s!   € Ü�h‰h�u EÔ*ˆØ�‰ÔØˆ
rF   )rÒ  rß  ©rf   r|   ré   s      rD   Úol_np_zerosrù  í  s   € ä˜7 EÔ*äó ð €KrF   c                 ó&   — t        d|«       dd„}|S )NÚ
zeros_likec                 óT   — t        j                  | |¬«      }|j                  «        |S r÷  )r~  r’  rñ  )r  r|   r  s      rD   ré   zol_np_zeros_like.<locals>.implý  s!   € Ü�m‰m˜A UÔ+ˆØ�‰ÔØˆ
rF   rP  ©rÒ  r  s      rD   Úol_np_zeros_likerþ  ø  s   € ä˜<¨Ô/óð €KrF   c                 ó&   — t        d|«       dd„}|S )NÚ	ones_likec                 óˆ   — t        j                  | |¬«      }|j                  }t        t	        |«      «      D ]  }d||<   Œ	 |S ©Nrö  rH   ©r~  r’  rÍ  r9   r    )r  r|   r  Úarr_flatr“   s        rD   ré   zol_np_ones_like.<locals>.impl	  sA   € Ü�m‰m˜A UÔ+ˆØ—8‘8ˆÜœ˜X›Ó'ò 	ˆCØˆH�SŠMð	àˆ
rF   rP  rý  r  s      rD   Úol_np_ones_liker    s   € ä˜;¨Ô.óð €KrF   c                 ó^   ‡— t        d|«       t        |«      st        |«      Šn|Šdˆfd„	}|S )NÚfullc                 óˆ   •— t        j                  | ‰«      }|j                  }t        t	        |«      «      D ]  }|||<   Œ	 |S rP  ©r~  rø  rÍ  r9   r    )rf   Ú
fill_valuer|   r  r  r“   rå  s         €rD   r  zimpl_np_full.<locals>.full  sB   ø€ Ü�h‰h�u˜hÓ'ˆØ—8‘8ˆÜœ˜X›Ó'ò 	'ˆCØ&ˆH�SŠMð	'àˆ
rF   rP  )rÒ  r   rã  )rf   r
  r|   r  rå  s       @rD   Úimpl_np_fullr    s0   ø€ ä˜6 5Ô)Ü�uÔÜ! %Ó(‰àˆõð €KrF   c                 ó&   — t        d|«       dd„}|S )Nr°  c                 ó†   — t        j                  | |«      }|j                  }t        t	        |«      «      D ]  }|||<   Œ	 |S rP  r  )r  r
  r|   r  r  r“   s         rD   r°  z$impl_np_full_like.<locals>.full_like'  sA   € Ü�m‰m˜A˜uÓ%ˆØ—8‘8ˆÜœ˜X›Ó'ò 	'ˆCØ&ˆH�SŠMð	'àˆ
rF   rP  rý  )r  r
  r|   r°  s       rD   Úimpl_np_full_liker  #  s   € ä˜;¨Ô.óð ÐrF   c                 ó&   — t        d|«       dd„}|S )NÚonesc                 óˆ   — t        j                  | |¬«      }|j                  }t        t	        |«      «      D ]  }d||<   Œ	 |S r  r	  )rf   r|   r  r  r“   s        rD   ré   zol_np_ones.<locals>.impl7  sA   € Ü�h‰h�u EÔ*ˆØ—8‘8ˆÜœ˜X›Ó'ò 	ˆCØˆH�SŠMð	àˆ
rF   rP  rý  rø  s      rD   Ú
ol_np_onesr  1  s   € ô ˜6 5Ô)óð €KrF   c                 óz   ‡— t        d|«       t        |«      st        |«      Šnt        j                  Šdˆfd„	}|S )NÚidentityc                 óf   •— t        j                  | | f‰«      }t        | «      D ]	  }d|||f<   Œ |S r§  )r~  rn  r9   )rü  r|   r  rn   rå  s       €rD   r  z"impl_np_identity.<locals>.identityH  s<   ø€ Ü�h‰h˜˜1�v˜xÓ(ˆÜ�q“ò 	ˆAØˆC��1�ŠIð	àˆ
rF   rP  )rÒ  r   rã  r   râ  )rü  r|   r  rå  s      @rD   Úimpl_np_identityr  @  s4   ø€ ä˜: uÔ-Ü�uÔÜ! %Ó(‰ä—<‘<ˆõð
 €OrF   c                  ó   — y rP  r…  ©ÚNÚMs     rD   Ú_eye_none_handlerr  P  r  rF   c                 óJ   — t        |t        j                  «      rd„ }|S d„ }|S )Nc                 ó   — | S rP  r…  r  s     rD   ré   z$_eye_none_handler_impl.<locals>.implW  ó   € ØˆHrF   c                 ó   — |S rP  r…  r  s     rD   ré   z$_eye_none_handler_impl.<locals>.implZ  r  rF   )r˜   r   rK  )r  r  ré   s      rD   Ú_eye_none_handler_implr   T  s&   € ä�!”U—^‘^Ô$ò	ð
 €Kò	à€KrF   c                 ó:  ‡— |�t        |t        j                  «      rt        j                  t
        «      ŠnVt        |t        j                  t        j                  f«      rt        t        |d|«      «      Šnt        j                  |«      Šd dt
        fˆfd„	}|S )Nr|   r   c                 ó  •— t        | |«      }t        j                  | |f‰«      }|dk\  r+t        | ||z
  «      }t	        |«      D ]  }d||||z   f<   Œ |S t        | |z   |«      }t	        |«      D ]  }d|||z
  |f<   Œ |S rÄ  )r  r~  rn  r•  r9   )	r  r  rÓ   r|   Ú_Mr  Údrn   r©  s	           €rD   ré   znumpy_eye.<locals>.implj  sž   ø€ Ü˜q !Ó$ˆÜ�h‰h˜˜2�w Ó#ˆØ�Š6Ü�A�r˜A‘v“ˆAÜ˜1“Xò "�Ø !��A�q˜1‘u�H’ð"ð ˆ
ô �A˜‘E˜2“ˆAÜ˜1“Xò "�Ø !��A˜‘E˜1�H’ð"àˆ
rF   )
r˜   r   rK  r~  r|   rß  Ú	DTypeSpecr§  r   r   )r  r  rÓ   r|   ré   r©  s        @rD   Ú	numpy_eyer&  _  sn   ø€ ð €}œ
 5¬%¯.©.Ô9Ü�X‰X”e‹_‰Ü	�EœEŸO™O¬U¯\©\Ð:Ô	;ä”g˜e W¨eÓ4Ó5‰ä�X‰X�e‹_ˆà˜!¤5õ ð €KrF   c                 óÊ   — t        | «      st        j                  d«      ‚t        | t        j
                  «      r)| j                  dvrt        j                  d«      ‚dd„}|S y )Nú#The argument "v" must be array-like)rH   ro  zInput must be 1- or 2-d.c                 óh  — | j                   dk(  rˆ| j                  }|d   t        |«      z   }t        j                  ||f| j
                  «      }|dk\  r"t        ||z
  «      D ]  }| |   ||||z   f<   Œ |S t        ||z   «      D ]  }| |   |||z
  |f<   Œ |S | j                  \  }}|dk  r||z   }|dkD  r||z
  }t        t        ||«      d«      }t        j                  || j
                  «      }|dk\  rt        |«      D ]  }| |||z   f   ||<   Œ |S t        |«      D ]  }| ||z
  |f   ||<   Œ |S r½  )
rq   rf   ró  r~  rn  r|   r9   rž  r•  rø  )rÔ   rÓ   r§   rü  rl  rn   ÚrowsÚcolss           rD   Ú	diag_implzimpl_np_diag.<locals>.diag_impl‚  sd  € Ø�v‰v˜Š{Ø—G‘G�Ø�a‘Dœ3˜q›6‘M�Ü—h‘h  1˜v q§w¡wÓ/�Ø˜’6Ü" 1 q¡5›\ò -˜Ø()¨!©˜˜A˜q 1™u˜Hšð-ð
 �
ô # 1 q¡5›\ò -˜Ø()¨!©˜˜A ™E 1˜Hšð-à�
àŸW™W‘
��dØ�q’5Ø !™8�DØ�q’5Ø !™8�DÜœ˜D $›¨Ó+�Ü—h‘h˜q !§'¡'Ó*�Ø˜’6Ü" 1›Xò -˜Ø!" 1 a¨!¡e 8¡˜˜Ašð-ð
 �
ô # 1›Xò -˜Ø!" 1 q¡5¨! 8¡˜˜Ašð-à�
rF   rò   )r   r	   rê   r˜   r   r™   rq   ÚNumbaTypeError)rÔ   rÓ   r,  s      rD   Úimpl_np_diagr.  y  sZ   € ä˜AÔÜ× Ñ Ð!FÓGÐGä�!”U—[‘[Ô!Ø�6‰6˜ÑÜ×'Ñ'Ð(BÓCÐCó	ð6 Ðð? "rF   c                 ó  ‡‡— t        | t        j                  «      sd}t        j                  |«      ‚t        | j
                  t        j                  «      sd}t        j                  |«      ‚t        | «      Šd‰z  Šˆˆfd„}|S )Nz5The argument "dimensions" must be a tuple of integersr™  c                 óþ   •— t        j                  ‰f| z   t         j                  ¬«      }d}| D ]K  }t        j                  |t         j                  ¬«      j	                  t        ‰||«      «      }|||<   |dz  }ŒM |S )Nrö  r   rH   )r~  rø  rÇ  Úarangere  r0   )Ú
dimensionsr	  rn   r‰  r“   r  rf   s        €€rD   ré   znumpy_indices.<locals>.impl­  sx   ø€ Ü�h‰h˜�t˜jÑ(´·±Ô9ˆØˆØò 	ˆCÜ—)‘)˜C¤r§x¡xÔ0×8Ñ8Ü˜e Q¨Ó,óˆCð ˆC�‰FØ�‰F‰Að	ð ˆ
rF   )r˜   r   r‡  r	   rê   r|   rš   r    )r2  rÍ   ré   r  rf   s      @@rD   Únumpy_indicesr3     so   ù€ ä�j¤%§.¡.Ô1ØEˆÜ× Ñ  Ó%Ð%ä�j×&Ñ&¬¯©Ô6ØEˆÜ× Ñ  Ó%Ð%äˆJ‹€AØ�1‰H€Eõ
ð €KrF   c                 óÀ   — t        | «      sd}t        j                  |«      ‚t        |t        t
        j                  f«      sd}t        j                  |«      ‚dd„}|S )Nr(  z#The argument "k" must be an integerc                 ód  — t        j                  | «      } | j                  «       } t        | «      }t	        |«      }||z   }t        j
                  ||f| j                  «      }t        j                  d| «      }t        j                  d|«      }t        |«      D ]  }| |   |||z   ||z   f<   Œ |S rç   )	r~  r  rm  r    ró  rn  r|   Úmaximumr9   )	rÔ   rÓ   r§   Úabs_krü  r	  rn   ÚjÚts	            rD   ré   znumpy_diagflat.<locals>.implÆ  s£   € Ü�J‰J�q‹MˆØ�G‰G‹IˆÜ�‹FˆÜ�A“ˆØ�‰IˆÜ�h‰h˜˜1�v˜qŸw™wÓ'ˆÜ�J‰J�q˜1˜"ÓˆÜ�J‰J�q˜!ÓˆÜ�q“ò 	%ˆAØ ! !¡ˆC��A‘�q˜1‘u�Òð	%ð ˆ
rF   rò   )r   r	   rê   r˜   r½   r   rš   )rÔ   rÓ   rÍ   ré   s       rD   Únumpy_diagflatr:  ¼  sU   € ä˜AÔØ3ˆÜ× Ñ  Ó%Ð%ä�aœ#œuŸ}™}Ð-Ô.Ø3ˆÜ× Ñ  Ó%Ð%óð €KrF   c                 ón  — |dv sJ ‚|dk(  r4d}t        d| «      D ]"  }d|z  }|d|› ddj                  |«      › d	�z  }Œ$ n3d
}t        d| «      D ]"  }d|z  }|d|› ddj                  |«      › d�z  }Œ$ t        j                  |«      }t	        |t        «       «       t        «       d|› �   }t        |«      S )N)rÑ  ra  rÑ  zv
            def _getitem(a, idx, axis):
                if axis == 0:
                    return a[idx, ...]
        rH   )ú:z
                elif axis == z:
                    return a[r»  z, idx, ...]
            z|
            def _setitem(a, idx, axis, vals):
                if axis == 0:
                    a[idx, ...] = vals
        z:
                    a[z, idx, ...] = vals
            r  )r9   r½  ÚtextwrapÚdedentÚexecÚglobalsr&   )rq   r‚  rL  rn   Úlsts        rD   Ú"generate_getitem_setitem_with_axisrB  ×  s  € ØÐ)Ñ)Ð)Ð)àˆyÒðˆô
 �q˜$“ò 	ˆAØ˜1‘*ˆCØð Ø˜Sð !Ø"Ÿi™i¨›nÐ-ð .ðñ ‰Bñ	ðˆô �q˜$“ò 	ˆAØ˜1‘*ˆCØð Ø˜Sð !Ø—y‘y “~Ð&ð 'ðñ ‰Bð	ô 
�‰˜Ó	€BÜˆŒW‹YÔÜ	‹�Q�t�f�:Ñ	€BÜ˜BÓÐrF   Útakec                 ó”  ‡‡‡‡‡	— t        j                  |«      rÑt        | t        j                  «      r t        |t        j
                  «      rdd„}|S t        | t        j                  «      r1t        |t        j                  «      r|j                  dk(  Šdˆfd„	}|S t        | t        j                  «      r1t        |t        j                  t        j                  f«      rdd„}|S y y t        | t        j                  «      rBt        |t        j
                  «      r(d| j                  dz
  z  Š	t        ˆ	fd„«       Šdˆfd„	}|S t        | t        j                  «      rgt        |t        j                  t        j                  t        j                  f«      r-| j                  }t        |d	«      Št        |d
«      Šdˆˆfd„	}|S y y )Nc                 ó‚   — || j                   dz
  kD  s|| j                    k  rt        d«      ‚| j                  «       |   S )NrH   úIndex out of bounds)r”   Ú
IndexErrorrm  )r  r£   rÞ   s      rD   Ú	take_implznumpy_take.<locals>.take_impl   s<   € Ø˜aŸf™f q™jÒ)¨W¸¿¹°wÒ->Ü$Ð%:Ó;Ð;Ø—w‘w“y Ñ)Ð)rF   rÊ  c                 óŠ  •— t        j                  |j                  | j                  ¬«      }‰	r|j	                  «       }n|}t        j
                  |«      }d}| j                  «       }|D ]<  }|| j                  dz
  kD  s|| j                   k  rt        d«      ‚||   ||<   |dz   }Œ> |j                  |j                  «      S )Nrö  r   rH   rF  )
r~  rø  r”   r|   r`  ré  rm  rG  re  rf   )
r  r£   rÞ   rl  ÚwalkerÚitrn   rÍ  rX  ÚF_orders
            €rD   rH  znumpy_take.<locals>.take_impl	  s®   ø€ Ü—h‘h˜wŸ|™|°1·7±7Ô;�ÙØ$Ÿ\™\›^‘Fà$�FÜ—Y‘Y˜vÓ&�Ø�Ø—w‘w“y�Øò �AØ˜AŸF™F Q™JÒ'¨1°·±¨wª;Ü(Ð)>Ó?Ð?Ø! !™W�C˜‘FØ˜A™‘Að	ð
 —{‘{ 7§=¡=Ó1Ð1rF   c                 óX   — t        j                  |«      }t        j                  | |«      S rP  )r~  rÇ   rC  )r  r£   rÞ   Úconverts       rD   rH  znumpy_take.<locals>.take_impl  s!   € ÜŸ(™( 7Ó+�Ü—w‘w˜q 'Ó*Ð*rF   rò   rH   c                 óJ  •— t        ‰«      }d}|t        | j                  «      k  r| j                  |   dk(  sJ | j                  «       ‚t        t        | j                  «      «      D ])  }| j                  |   }||k7  sŒt	        |||«      }|dz  }Œ+ | j                  |«      S rÄ  )r»   r    rf   r9   r0   re  )r�  rÞ   rY  r8  r“   r§   r9  s         €rD   Ú_squeezeznumpy_take.<locals>._squeeze'  s–   ø€ ä˜A“h�Ø�Øœc !§'¡'›lÒ*¨q¯w©w°t©}ÀÒ/AÐJÀ1Ç7Á7ÓJÐAÜ ¤ Q§W¡W£Ó.ò �CØŸ™ ™�AØ˜d“{Ü+¨C°°AÓ6˜Ø˜Q™™ð	ð
 —y‘y “~Ð%rF   c                 ó˜   •— t        j                  | |f|¬«      }| j                  dk(  r|d   S |dk  r|| j                  z  } ‰||«      S )Nr}  rH   r   )r~  rC  rq   )r  r£   rÞ   r�  rP  s       €rD   rH  znumpy_take.<locals>.take_impl3  sN   ø€ Ü—G‘G˜A ˜z°Ô5�Ø—6‘6˜Q’;ð ˜Q™4�KØ˜!’8Ø˜AŸF™F‘N�DÙ  4Ó(Ð(rF   rÑ  ra  c                 óz  •— |}|dk  r|| j                   z  }|dk  s|| j                   k\  rd|› d| j                   › �}t        |«      ‚t        | j                  |t	        |«      «      }t        j                  || j                  ¬«      }t        t	        |«      «      D ]  } ‰	| ||   |«      } ‰
||||«       Œ |S )Nr   zaxis z) is out of bounds for array of dimension rö  )	rq   r¸   r0   rf   r    r~  rø  r|   r9   )r  r£   rÞ   rö   rÍ   rf   r
  rn   rY  Ú_getitemÚ_setitems            €€rD   rH  znumpy_take.<locals>.take_implJ  s¼   ø€ Ø�Ø˜!’8Ø˜AŸF™F‘N�Dà˜!’8˜t q§v¡vš~Ø" 2 $ð '+Ø+,¯6©6¨(ð4�Cä$ S›/Ð)ä% a§g¡g¨t´S¸³\ÓB�Ü—h‘h˜u¨A¯G©GÔ4�Üœs 7›|Ó,ò .�AÙ   G¨A¡J°Ó5�AÙ˜S ! T¨1Õ-ð.ð �
rF   rP  )r
   r   r˜   r   r™   rš   r	  r   r\  rq   r&   rB  )
r  r£   rÞ   rH  rq   rL  rS  rT  rP  r9  s
        @@@@@rD   Ú
numpy_takerU  ú  sb  ü€ ô ×Ñ˜4Ô Ü�aœŸ™Ô%¬*°W¼e¿m¹mÔ*Ló*ð Ðä�aœŸ™Ô%¬*°W¼e¿k¹kÔ*JØ—n‘n¨Ñ+ˆGõ2ð Ðä�aœŸ™Ô%Ü˜7¤U§Z¡Z´·±Ð$AÔBó+ð Ðð	 Cð &ô �aœŸ™Ô%¬*°W¼e¿m¹mÔ*LØ˜Ÿ™ ™
Ñ#ˆAô
 ó	&ó ð	&õ)ð Ðä�aœŸ™Ô%Ü˜7¤U§[¡[´%·*±*¼e¿o¹oÐ$NÔOà—6‘6ˆDä9¸$À	ÓJˆHÜ9¸$À	ÓJˆHöð  Ðð/ Pð &rF   c                  óÎ  — | D �cg c]  }t        |t        j                  «      rŒ|‘Œ! }}t        d„ |D «       «      rt        j                  }|S t        d„ |D «       «      rt        j
                  }|S t        t        ddt        j                  t        «      j                  z  z  «      }|D �cg c]  }t        j                  |«      ‘Œ }}t        ||gz   «      }|S c c}w c c}w )Nc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrP  r#  ©rR  r  s     rD   rT  z _arange_dtype.<locals>.<genexpr>`  s   è ø€ Ò
8¨AŒ:�aœŸ™×'Ñ
8ùrU  c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrP  )r˜   r   ÚFloatrX  s     rD   rT  z _arange_dtype.<locals>.<genexpr>b  s   è ø€ Ò8¨AŒZ˜œ5Ÿ;™;×'Ñ8ùrU  zint%sr¸  )r˜   r   rK  rV  Ú
complex128r´   r   r~  r|   r½   r­   Ú	unliteralrž  )rý   r  Úboundsr|   ÚNPY_TYrX  Úunliteral_boundss          rD   Ú_arange_dtyper`  ]  sÊ   € ØÖC�A¤Z°´5·>±>Õ%BŠaÐC€FÐCä
Ñ
8°Ô
8Ô8Ü× Ñ ˆð& €Lô% 
Ñ8°Ô8Ô	8Ü—‘ˆð" €Lô œ ¨1¬r¯x©x¼«}×/EÑ/EÑ+EÑ FÓGˆð 9?Ö?°1œEŸO™O¨AÕ.Ð?ÐÐ?ÜÐ$¨ yÑ0Ó1ˆà€Lùò- Dùò& @s   …C¥CÂ.C"c          	      óÎ  ‡‡‡‡	‡
— t        |t        j                  «      r|j                  }t        |t        j                  «      r|j                  }t        |t        j                  «      r|j                  }|€t        j                  }|€t        j                  }|€t        j                  }t        | t        j
                  «      r~t        |t        j                  t        j
                  f«      rTt        |t        j                  t        j
                  f«      r*t        |t        j                  t        j                  f«      sy t        |t        j                  «      rt        | ||«      Š	n|j                  Š	t        | ||fD �cg c]  }t        |t        j                  «      ‘Œ c}«      Š
t        | dd «      Št        |dd «      Št        |dd «      Šdˆˆˆˆ	ˆ
fd„	}|S c c}w )Nrë   c                óÒ  •— ‰�‰n| }‰�‰n|}‰�‰n|}|�|nd}|€d|}	}n||}	}|dk(  rt        d«      ‚|	|z
  |z  }
t        t        j                  |
j                  «      «      }‰du r?t        t        j                  |
j
                  «      «      }t        t        ||«      d«      }nt        |d«      }t        j                  |‰«      }|}t        |«      D ]  }|||z  z   ||<   Œ |S )NrH   r   zMaximum allowed size exceededT)r¸   r½   ÚmathÚceilr)  r+  rž  r•  r~  rø  r9   )r4  rß  rÕ  r|   Ú	lit_startÚlit_stopÚlit_stepÚ_stepÚ_startÚ_stopÚnitems_cÚnitems_rÚnitems_ir²   r  rŠ   rn   Ústart_valueÚ
step_valueÚ
stop_valueÚ
true_dtypeÚuse_complexs                    €€€€€rD   ré   znp_arange.<locals>.implš  s  ø€ à#.Ð#:‘KÀˆ	Ø!+Ð!7‘:¸TˆØ!+Ð!7‘:¸Tˆà$Ð0‘°aˆØÐØ˜y�E‰Fà% x�EˆFà�AŠ:ÜÐ<Ó=Ð=à˜F‘N eÑ+ˆÜ”t—y‘y §¡Ó/Ó0ˆð ˜$ÑÜœ4Ÿ9™9 X§]¡]Ó3Ó4ˆHÜœ˜X xÓ0°!Ó4‰Fä˜ 1Ó%ˆFÜ�h‰h�v˜zÓ*ˆØˆÜ�v“ò 	'ˆAØ˜A ™IÑ&ˆC�ŠFð	'àˆ
rF   rÇ  )r˜   r   ÚOptionalr:   r'  r§  rK  r%  r`  r|   rV  r$  r   )r4  rß  rÕ  r|   rX  ré   rn  ro  rp  rq  rr  s         @@@@@rD   Ú	np_arangert  w  sb  ü€ ä�$œŸ™Ô'Ø�y‰yˆÜ�$œŸ™Ô'Ø�y‰yˆÜ�%œŸ™Ô(Ø—
‘
ˆà€|Ü�z‰zˆØ€|Ü�z‰zˆØ€}Ü—
‘
ˆä�uœeŸl™lÔ+Ü�tœeŸn™n¬e¯l©lÐ;Ô<Ü�tœeŸn™n¬e¯l©lÐ;Ô<Ü˜5¤5§>¡>´5·?±?Ð"CÔDàä�%œŸ™Ô(Ü" 5¨$°Ó5‰
à—[‘[ˆ
äØ!&¨¨dÐ 3ö5Øô " !¤U§]¡]Õ3ò 5ó 6€Kô ˜% °$Ó7€KÜ˜˜°Ó5€JÜ˜˜°Ó5€J÷ñ ð< €KùòK5s   Æ!G"c                 ó  ‡— t        d„ | |fD «       «      sy t        |t        t        j                  f«      sd}t        j                  |«      ‚t        d„ | |fD «       «      rt        j                  Šnt        j                  Šdˆfd„	}|S )Nc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrP  )r˜   r   r§  r%  s     rD   rT  z!numpy_linspace.<locals>.<genexpr>½  s   è ø€ ÒF°Œz˜#œuŸ|™|×,ÑFùrU  r!  c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrP  r#  r%  s     rD   rT  z!numpy_linspace.<locals>.<genexpr>Ä  r&  rU  c                 óø   •— t        j                  |‰«      }| dz  } |dz  }|dk(  r|S |dz
  }|dkD  r8|| z
  }t        j                  ||«      }t        d|«      D ]  }| ||z  z   ||<   Œ n| |d<   |dkD  r||d<   |S )Ng      ð?r   rH   r  )r~  rø  Údivider9   )	r4  rß  r  r  ÚdivÚdeltarÕ  rn   r|   s	           €rD   r  z numpy_linspace.<locals>.linspaceÊ  s£   ø€ Ü�h‰h�s˜EÓ"ˆð ˜‘ˆØ�c‰zˆØ�!Š8ØˆJØ�A‰gˆØ�Š7Ø˜5‘LˆEÜ—9‘9˜U CÓ(ˆDÜ˜1˜c“]ò ,�Ø ! d¡(Ñ+��A’ñ,ð ˆC�‰FØ�Š7ØˆC�‰GØˆ
rF   r  )
r‰  r˜   r½   r   rš   r	   rê   rV  r[  r´   )r4  rß  r  rÍ   r  r|   s        @rD   Únumpy_linspacer|  »  ss   ø€ äÑF¸À¸ÔFÔFØä�cœC¤§¡Ð/Ô0Ø5ˆÜ× Ñ  Ó%Ð%ä
Ñ
C°e¸T°]Ô
CÔCÜ× Ñ ‰ä—‘ˆõð, €OrF   c           
      óÜ  — |j                   d   } t        |«      | ||d   ¬«      }t        j                  ||j                  «      }|j
                  }t        | |||«      }|j                  }	|j                  }
|j                  dv sJ ‚|j                  |j                  k(  r0t        j                  ||
|	|j                  |j                  d¬«       nêt        j                  ||j                  «      }t        j                  ||j                  «      }| j                  t        j                  «      }t        j                   |||«      5 }t        j"                  | ||	|||j                  |«      }t        j"                  | ||
|||j                  |«      }|j%                  |j'                  |«      |«       ddd«       t)        | ||j
                  |j+                  «       «      S # 1 sw Y   Œ/xY w)z
    Array copy.
    r   r  r  rH   r‚   N)rý   ry   r
   rÀ   rf   rÿ   r  r›   r	  Ú
raw_memcpyr²   r­   r¬   r¹   r   r�   rC  r  r$  r?   r!   r  )r~   r>   r\   rý   rÎ  r  r  Úrettyperl  r7  rÛ  r9  rÚ  rÎ   r£   r/  rF  s                    rD   Ú_array_copyr€  ã  s�  € ð �h‰h�q‰k€GØ
Œ*�WÓ
˜g w°d¸1±gÔ
>€CÜ×!Ñ! '¨3¯9©9Ó5€Fà�o‰o€GÜ
˜ '¨7°FÓ
;€Cà�x‰x€HØ—‘€Ià�>‰>˜TÑ!Ð!Ð!Ø‡~�~˜Ÿ™Ò'ä×Ñ˜7 I¨x¸¿¹ØŸ<™<¨qö	2ô ×*Ñ*¨7°C·K±KÓ@ˆÜ×+Ñ+¨G°S·[±[ÓAˆØ×'Ñ'¬¯
©
Ó3ˆä×Ñ˜w¨°Ó7ð 	;¸7Ü×/Ñ/°¸À(Ø06¸Ø07·±ÀóIˆGô ×0Ñ0°¸'À9Ø17¸Ø18·±ÀóJˆHð �M‰M˜'Ÿ,™, wÓ/°Ô:÷	;ô ˜G W¨c¯o©o¸s¿}¹}»ÓOÐO÷	;ð 	;ús   ÅA,G"Ç"G+c                 ó¦   — t        |t        j                  «      sJ ‚|j                  dk(  rdnd}|j	                  |d¬«      } ||«      }|t
        fS )NrÊ  r¦   F)r	  rf  )r˜   r   r™   r	  r`  r€  )rk  r  r	  rl  r\   s        rD   Ú_array_copy_intrinsicr‚    sM   € ä�aœŸ™Ô%Ð%Ð%Ø—H‘H ’O‰S¨€FØ
�&‰&˜¨ˆ&Ó
/€CÙ
ˆa‹&€CØ”ÐÐrF   z
array.copyc                 ó   — t        | |||«      S rP  )r€  rð  s       rD   Ú
array_copyr„    s   € ä�w ¨¨dÓ3Ð3rF   c                 óŠ   — t        | «      st        j                  d«      ‚t        | t        j
                  «      rd„ }|S d„ }|S )Nrk  c                 ó   — t        | «      S rP  )r‚  r‹  s    rD   Ú
numpy_copyz#impl_numpy_copy.<locals>.numpy_copy  s   € Ü(¨Ó+Ð+rF   c                 ó,   — t        j                  | «      S rP  )r~  r  r‹  s    rD   r‡  z#impl_numpy_copy.<locals>.numpy_copy   s   € ä—:‘:˜a“=Ð rF   )r   r	   rê   r˜   r   r™   )r  r‡  s     rD   Úimpl_numpy_copyr‰    sL   € ä˜AÔÜ× Ñ ð "1ó 2ð 	2ô �!”U—[‘[Ô!ò	,ð Ðò	!ð ÐrF   c           	      óD  — |j                   }|j                  d   }|j                  |k(  sJ d«       ‚|j                  dk(  �r|j                  dk(  sJ ‚ t	        |«      | ||d   ¬«      } t	        |«      | |«      }| j                  |t        j                  t        j                  d«      d«      }	| j                  |t        j                  t        j                  d«      |j                  f«      }
t        ||j                  |	|
|j                  |j                  |j                  «       t        | |||j!                  «       «      S |j                  |j                  k(  s|j                  dk(  r|j                  dv rt        | |||d   «      S |j                  dk(  rÔ|dv sJ ‚|dk(  rt"        nt$        }t'        || |||d   «      }|j)                  |«      5 \  }}|5  t        | |||d   «      }|j*                  }d	d	d	«       |5  t-        | |||«      }|j*                  }d	d	d	«       d	d	d	«       |j/                  j0                  «      }|j3                  |«       |j3                  «       |S t-        | |||«      S # 1 sw Y   Œ…xY w# 1 sw Y   ŒlxY w# 1 sw Y   ŒpxY w)
zd
    Common logic for layout conversion function;
    e.g. ascontiguousarray and asfortranarray
    r   z return-type has incorrect layoutrH   r  r™  r  r^  r¦   N)rÿ   rý   r	  rq   ry   rÅ  r   r‡  r�   rÉ  r­   rÕ   r›   r«   r®   r    r  r   r   rX  r-  Úblockr€  Úphir:   Úadd_incoming)r~   r>   r\   rý   Úoutput_layoutrY  r×   r  rl  rf   r¬   Ú
check_funcr7  ÚthenÚorelseÚout_thenÚthen_blkÚ
out_orelseÚ
orelse_blkÚret_phis                       rD   Ú_as_layout_arrayr—  &  sq  € ð
 �O‰O€EØ�H‰H�Q‰K€EØ�<‰<˜=Ò(ÐLÐ*LÓLÐ(à‡z�z�Qƒà�z‰z˜QŠÐˆØŒj˜Ó ¨¸¸Q¹Ô@ˆØŒj˜Ó ¨Ó1ˆà×,Ñ,Ø”U—^‘^¤E§J¡J°Ó2°Dó
ˆð ×$Ñ$ WÜ%*§^¡^´E·J±JÀÓ%BØ&)§l¡l _ó6ˆô 	�s˜CŸH™H e¨W°c·l±lØ—{‘{ C§J¡Jô	0ä  ¨'°5¸#¿-¹-»/ÓJÐJà
�,‰,˜%Ÿ,™,Ò
&Ø—
‘
˜a’ E§L¡L°DÑ$8ä  ¨'°5¸$¸q¹'ÓBÐBð �<‰<˜3Òð ! DÑ(Ð(Ð(Ø*7¸3Ò*>�ÄJˆJÜ.¨zØ/6Ø/6Ø/4Ø/3°A©wó	8ˆIð
 —‘ Ó+ð 	/©~°°fàñ -Ü0°¸'À5Ø15°a±ó :�Hà&Ÿ}™}�H÷-ð
 ñ /Ü!,¨W°g¸sÀDÓ!I�JØ!(§¡�J÷/÷	/ð —k‘k (§-¡-Ó0ˆGØ× Ñ  ¨8Ô4Ø× Ñ  ¨ZÔ8ØˆNô ˜w¨°°dÓ;Ð;÷!-ð -ú÷
/ð /ú÷	/ð 	/ús<   ÇJÇI>Ç:
JÈJ
ÈJÉ>J	ÊJÊ
J	ÊJÊJc                 óæ   ‡— t        ‰t        j                  «      st        j                  ‰«      ‚|j                  ‰j                  t        |j                  d«      d¬«      } ||‰«      }|ˆfd„fS )NrH   F)r	  rq   rf  c                 ó8   •— t        | |||‰j                  ¬«      S )N)rŽ  )r—  rë   )rÄ  r   r§   r  rŽ  s       €rD   r—  z,_as_layout_array_intrinsic.<locals>.<lambda>s  s   ø€ Ô#3Ø	ˆ1ˆa� -×"=Ñ"=ô$?€ rF   )	r˜   r   r%   r	   ÚRequireLiteralValuer`  rë   rž  rq   )rk  r  rŽ  rl  r\   s     `  rD   Ú_as_layout_array_intrinsicr›  g  sr   ø€ ä�m¤U×%8Ñ%8Ô9Ü×(Ñ(¨Ó7Ð7ð �&‰&Ø×*Ñ*Ü�—‘˜‹^Øð ó €Cñ ˆa�Ó
€Càó ?ð ?ð ?rF   c                 óÞ   — t        | «      st        j                  d«      ‚t        | t        j
                  t        j                  f«      rd„ }|S t        | t        j                  «      rd„ }S )Nrk  c                 óR   — t        j                  t        j                  | «      «      S rP  )r~  ÚascontiguousarrayrÇ   r‹  s    rD   ré   z%array_ascontiguousarray.<locals>.impl}  s   € Ü×'Ñ'¬¯©°«Ó4Ð4rF   c                 ó   — t        | d«      S ©Nr¦   ©r›  r‹  s    rD   ré   z%array_ascontiguousarray.<locals>.impl€  ó   € Ü-¨a°Ó5Ð5rF   ©r   r	   rê   r˜   r   r§  ræ  r™   rå  s     rD   Úarray_ascontiguousarrayr¤  w  sY   € ä˜AÔÜ× Ñ Ð!FÓGÐGä�!”e—l‘l¤E§M¡MÐ3Ô4ò	5ð
 €Kô 
�A”u—{‘{Ô	#ò	6à€KrF   c                 óà   — t        | «      st        j                  d«      ‚t        | t        j
                  t        j                  f«      rd„ }|S t        | t        j                  «      rd„ }|S y )Nrk  c                 óR   — t        j                  t        j                  | «      «      S rP  )r~  ÚasfortranarrayrÇ   r‹  s    rD   ré   z"array_asfortranarray.<locals>.impl‹  s   € Ü×$Ñ$¤R§X¡X¨a£[Ó1Ð1rF   c                 ó   — t        | d«      S )NrÊ  r¡  r‹  s    rD   ré   z"array_asfortranarray.<locals>.impl�  r¢  rF   r£  rå  s     rD   Úarray_asfortranarrayr©  …  sZ   € ä˜AÔÜ× Ñ Ð!FÓGÐGä�!”e—l‘l¤E§M¡MÐ3Ô4ò	2àˆÜ	�A”u—{‘{Ô	#ò	6àˆð 
$rF   zarray.astypec           
      ór  — |j                   d   } t        |«      | ||d   ¬«      }t        j                  ||j                  «      }|j
                  }t        | |||«      }|j                  }	|j                  }
t        j                  ||j                  «      }t        j                  ||j                  «      }| j                  t        j                  «      }t        j                  |||«      5 }t        j                  | ||	|||j                  |«      }t        j                  | ||
|||j                  |«      }t        | |||«      }| j!                  |||j"                  |j"                  «      }t%        | ||||«       d d d «       t'        | ||j
                  |j)                  «       «      S # 1 sw Y   Œ/xY wr  )rý   ry   r
   rÀ   rf   rÿ   r  r›   r¬   r¹   r   r�   rC  r  r	  r‡   rŽ   r|   r‹   r!   r  )r~   r>   r\   rý   rÎ  r  r  r  rl  r7  rÛ  r9  rÚ  rÎ   r£   r/  rF  Úitems                     rD   Úarray_astyper¬  ”  s{  € ð �h‰h�q‰k€GØ
Œ*�WÓ
˜g w°d¸1±gÔ
>€CÜ×!Ñ! '¨3¯9©9Ó5€Fà�o‰o€GÜ
˜ '¨7°FÓ
;€Cà�x‰x€HØ—‘€Iä×&Ñ& w°·±Ó<€KÜ×'Ñ'¨°·±Ó=€LØ×#Ñ#¤E§J¡JÓ/€Fä	×	Ñ	˜7 F¨FÓ	3ð 	>°wÜ×+Ñ+¨G°W¸hØ,2°KØ,3¯N©N¸GóEˆô ×,Ñ,¨W°g¸yØ-3°\Ø-4¯^©^¸WóFˆô ˜ '¨7°GÓ<ˆØ�|‰|˜G T¨7¯=©=¸'¿-¹-ÓHˆÜ�7˜G W¨d°HÔ=÷	>ô ˜G W¨c¯o©o¸s¿}¹}»ÓOÐO÷	>ð 	>ús   Ã/BF-Æ-F6c                 ó^   — t        |t        j                  «      sJ ‚t        |«      }d„ }||fS )Nc           
      ó€  — |j                   \  }t        |«      } || ||d   «      }|j                  }|j                  ||j                  «      }t        | ||«      }	|j                  rV|j                  dk(  rGt        j                  ||	j                  |j                  |j                  |«       |	j7                  «       S t        j                  ||j                  «      }
t        j                  ||j                  «      }|j                  }| j                  t        j                   «      }t        j"                  ||dd¬«      }t        j$                  ||
|«      5 }t        j&                  | ||j                  |
|||«      }|j)                  ||	j                  j*                  «      }|j-                  |«      }|j/                  |	j                  |g«      }t        j0                  ||||«       |j3                  |j5                  ||«      |«       d d d «       |	j7                  «       S # 1 sw Y   |	j7                  «       S xY w)Nr   r¦   ÚbyteptrT)ÚnamerP   )rý   ry   r­   rÂ   r²   r.   r;  r	  r
   r~  r›   rÀ   rf   r¬   r¹   r   r�   rX   rC  r  r>  r:   r?   r
  rž  r$  r«  r  )r~   r>   r\   rý   rS  r  r  r­   r2  Úbstrrf   r¬   r	  rÎ   Úbyteidxr£   rl   Úsrcptrr“   Údestptrs                       rD   rj  z)_array_tobytes_intrinsic.<locals>.codegen¸  sÐ  € Ø�x‰x‰ˆÜ˜2“ˆÙ�G˜W d¨1¡gÓ.ˆà—<‘<ˆØ—‘˜X s§z¡zÓ2ˆä# G¨W°fÓ=ˆà�NŠN˜rŸy™y¨CÒ/Ü×Ñ˜w¨¯	©	°3·8±8¸S¿Z¹ZØ'ô)ð. �~‰~ÓÐô) ×(Ñ(¨°#·)±)Ó<ˆEÜ×*Ñ*¨7°C·K±KÓ@ˆGØ—Y‘YˆFØ×+Ñ+¬E¯J©JÓ7ˆFä×)Ñ)Ø˜ i°tôˆGô ×"Ñ" 7¨E°6Ó:ð 
C¸gÜ×/Ñ/Ø˜W c§h¡h°°wÀÈó�ð !Ÿ™¨¨d¯i©i¯n©nÓ=�à—l‘l 7Ó+�Ø!Ÿ+™+ d§i¡i°#°Ó7�ä—‘˜w¨°¸ÔBØ—‘˜gŸk™k¨#¨xÓ8¸'ÔB÷
Cð �~‰~ÓÐ÷
Cð �~‰~ÓÐús   ÅB4H%È%H=)r˜   r   r™   r/   )rk  r   r\   rj  s       rD   Ú_array_tobytes_intrinsicrµ  ³  s1   € ä�aœŸ™Ô%Ð%Ð%Ü
�Q‹-€Cò" ðF �ˆ<ÐrF   rº  c                 óB   — t        | t        j                  «      rd„ }|S y )Nc                 ó   — t        | «      S rP  )rµ  r{  s    rD   ré   z impl_array_tobytes.<locals>.implá  s   € Ü+¨CÓ0Ð0rF   rQ  r|  s     rD   Úimpl_array_tobytesr¸  Þ  s   € ä�#”u—{‘{Ô#ò	1àˆð $rF   c                 ó@   — |j                   } ||||||«      }d„ }||fS )Nc           	      óê  — |j                   d   }|d   }|d   }|j                  } t        |«      | ||d   ¬«      }t        |«      }	 |	| |«      }
|
j                  }t	        | |«      }t        |j                  j                  |«      }|j                  |j                  |j                  «      }|j                  ||«      }|j                  ||«      }|j                  d|t        j
                  |j                  d«      «      }d}|j                  |d¬«      5  | j                  j                  |t         |f«       d d d «       |j                  d|t        j
                  |j                  d«      «      }|j#                  ||«      }t%        j&                  ||«      }|j                  |d¬«      5  d	}| j                  j                  |t         |f«       d d d «       |j)                  |«      5 \  }}|5  |j*                  }|j-                  ||«      }d d d «       |5  |j*                  }d d d «       d d d «       |j/                  |j                  «      }|j1                  «       |j1                  |«       |j                  ||«      }|j3                  d
||«      }|j                  |d¬«      5  d}| j                  j                  |t         |f«       d d d «       t%        j4                  ||g«      }t%        j4                  ||g«      }|j7                  |j8                  |g«      }|j;                  || j=                  |j?                  d«      «      «      }tA        |
|||||jB                  |jD                  ¬«       |
jG                  «       } tI        | ||j                  | «      S # 1 sw Y   �ŒmxY w# 1 sw Y   �ŒáxY w# 1 sw Y   �Œ°xY w# 1 sw Y   �Œ¦xY w# 1 sw Y   �Œ«xY w# 1 sw Y   �ŒxY w)Nr   ro  r;  r  r  z=offset must be non-negative and no greater than buffer lengthFri  z.buffer size must be a multiple of element sizer¼  z%buffer is smaller than requested sizer›   rE  )%rý   rÿ   ry   r³   r€   r   r­   r:   rÂ   r²   rö  r  r   r   rk  rl  r¸   Úsremr
   Úis_not_nullr-  Úbasic_blockÚsdivrŒ  r�  rõ  rk   r
  r›   r>  r¹   rº   rÕ   r«   r®   r  r    )!r~   r>   r\   rý   ÚbuftyÚ	arg_countÚ
arg_offsetr×   r¿  Ú
out_ary_tyÚout_aryÚout_datamodelr­   Úll_itemsizer2  Úll_offset_sizeÚnbytes_is_negativerÍ   Úll_count_is_negativeÚremÚis_incompatibleÚ
then_blockÚ
else_blockÚbb_ifÚ	num_wholeÚbb_elseÚll_itemcountÚll_required_sizeÚis_too_largerf   r¬   r›   r	  s!                                    rD   rj  znp_frombuffer.<locals>.codegenë  s¦  € Ø—‘˜‘ˆØ˜‘Gˆ	Ø˜!‘Wˆ
Ø—‘ˆàŒj˜Ó ¨¸¸Q¹Ô@ˆÜ Ó&ˆ
Ù˜W gÓ.ˆØ×*Ñ*ˆä ¨Ó/ˆÜ˜sŸ|™|×0Ñ0°(Ó;ˆØ—‘˜SŸZ™Z¨¯©Ó6ˆØ Ÿ™ Z°Ó=ˆØ—‘˜V ^Ó4ˆà$×0Ñ0ØØÜ�K‰K˜	Ÿ™¨Ó*ó
Ðð NˆØ�_‰_Ð/¸ˆ_Ó>ñ 	KØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷	Kð  '×2Ñ2ØØÜ�K‰K˜	Ÿ™¨Ó*ó 
Ðð �l‰l˜6 ;Ó/ˆÜ!×-Ñ-¨g°sÓ;ˆØ�_‰_˜_°Uˆ_Ó;ñ 	KØBˆCØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷	Kð
 �_‰_Ð1Ó2ð 	.Ñ6N°zÀ:Øñ >Ø×+Ñ+�Ø#ŸL™L¨°Ó=�	÷>ð ñ .Ø!×-Ñ-�÷.÷		.ð —{‘{ 9§>¡>Ó2ˆØ×!Ñ! )¨UÔ3Ø×!Ñ! )¨WÔ5ð #Ÿ;™; |°[ÓAÐØ×,Ñ,¨SÐ2BÀFÓKˆà�_‰_˜\°%ˆ_Ó8ñ 	KØ9ˆCØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷	Kô
 ×"Ñ" 7¨\¨NÓ;ˆÜ×$Ñ$ W¨{¨mÓ<ˆà�{‰{˜3Ÿ8™8 j \Ó2ˆØ�‰Ø�'×(Ñ(¨×)?Ñ)?ÀÓ)GÓHó
ˆô 	�wØ Ø"Ø&Ø +Ø"Ÿ{™{Ø!Ÿj™jõ	*ð ×ÑÓ!ˆÜ  ¨'°3·?±?ÀCÓHÐH÷m	Kñ 	Kú÷	Kñ 	Kú÷>ñ >ú÷.ñ .ú÷		.ñ 	.ú÷	Kñ 	Kús`   Ä#N'Æ0%N4Ç.OÇ4OÈ
OÈOÈ*OÊ1%O(Î'N1Î4N>ÏO	ÏOÏO	ÏOÏO%Ï(O2rÖ  )	rk  Úbufferr|   rÁ   r  rY  rS  r\   rj  s	            rD   Únp_frombufferrÔ  æ  s3   € à	×	Ñ	€BÙ
ˆV�U˜E 6¨5Ó
1€CòNIð` �ˆ<ÐrF   r  c                 ó   ‡— t        d|«       t        | t        j                  «      r| j                  dk7  rd| › �}t        j                  |«      ‚|t        u s7t        |t        j                  «      r|j                  t        u st        |«      rt        j                  }nt        |«      }|�%t        j                  |dd| j                   ¬«      Šnd| › d|› d�}t        j                  |«      ‚t        d	d
fˆfd„	}|S )NÚ
frombufferr¦   z+Argument "buffer" must be buffer-like. Got rH   )r|   rq   r	  rf  z3Cannot parse input types to function np.frombuffer(r»  r¼  r  r   c                 ó"   •— t        | |||‰«      S rP  )rÔ  )rÓ  r|   rÁ   r  rY  s       €rD   ré   z impl_np_frombuffer.<locals>.implU  s   ø€ Ü˜V U¨E°6¸5ÓAÐArF   )rÒ  r˜   r   r  r	  r	   rê   rß  rà  rá  r   râ  rã  r™   rC  )rÓ  r|   rÁ   r  rÍ   rå  ré   rY  s          @rD   Úimpl_np_frombufferrØ  >  sâ   ø€ ä˜<¨Ô/ä�fœeŸl™lÔ+¨v¯}©}ÀÒ/CØ;¸F¸8ÐDˆÜ× Ñ  Ó%Ð%à”‰Ü˜œuŸ~™~Ô.°5×3CÑ3CÄuÑ3LÜ˜ÔÜ—<‘<‰ä! %Ó(ˆàÐÜ—‘ (°¸3Ø)/¯©Ð%7ô9‰ð Ø &˜x r¨%¨°ð3ˆä× Ñ  Ó%Ð%ä ¨°1õ Bð €KrF   c                 ó    ‡— t        |«      rt        dd «      Šdˆfd„	}|S t        |t        j                  «      rt        d|«      Šdˆfd„	}|S y )Nr¦   c                 ó   •—  ‰| |«      S rP  r…  ©rl   rf   r|   Úintrinsic_cfarrays      €rD   ré   zimpl_carray.<locals>.impl`  ó   ø€ Ù$ S¨%Ó0Ð0rF   c                 ó   •—  ‰| |«      S rP  r…  rÛ  s      €rD   ré   zimpl_carray.<locals>.implf  rÝ  rF   rP  ©r   Úget_cfarray_intrinsicr˜   r   r%  ©rl   rf   r|   ré   rÜ  s       @rD   Úimpl_carrayrâ  [  óL   ø€ ä�5ÔÜ1°#°tÓ<Ðõ	1àˆÜ	�Eœ5Ÿ?™?Ô	+Ü1°#°uÓ=Ðõ	1àˆð 
,rF   c                 ó    ‡— t        |«      rt        dd «      Šdˆfd„	}|S t        |t        j                  «      rt        d|«      Šdˆfd„	}|S y )NrÊ  c                 ó   •—  ‰| |«      S rP  r…  rÛ  s      €rD   ré   zimpl_farray.<locals>.implp  rÝ  rF   c                 ó   •—  ‰| |«      S rP  r…  rÛ  s      €rD   ré   zimpl_farray.<locals>.implv  rÝ  rF   rP  rß  rá  s       @rD   Úimpl_farrayrç  k  rã  rF   c                 ó(   ‡ ‡— t         ˆˆ fd„«       }|S )Nc                 ób  •— |t         j                  u rd }nBt        |t         j                  «      r|j                  }nd|› d�}t        j                  |«      ‚‰	€|€d}t        j                  |«      ‚|}nft        ‰	t         j                  «      r1‰	j                  }|�>||k7  r9d|› d|› d�}t        j                  |«      ‚d‰	› d�}t        j                  |«      ‚t        |«      }|€d|› d�}t        j                  |«      ‚t        j                  ||‰
«      }t        |||«      }|t        fS )Nz pointer argument expected, got 'ú'z*explicit dtype required for void* argumentzmismatching dtype 'z' for pointer type 'zinvalid dtype spec 'zinvalid shape ')r   r   r˜   ÚCPointerr|   r	   r-  r%  rä  r™   r$   Ú
np_cfarray)rk  rl   rf   Ú	ptr_dtyperÍ   r|   rq   rY  r\   Údtype_r	  s            €€rD   rÜ  z0get_cfarray_intrinsic.<locals>.intrinsic_cfarray|  s1  ø€ à”%—-‘-ÑØ‰IÜ˜œUŸ^™^Ô,ØŸ	™	‰Ià4°S°E¸Ð;ˆCÜ×'Ñ'¨Ó,Ð,àˆ>ØÐ ØB�Ü×+Ñ+¨CÓ0Ð0Ø‰EÜ˜¤§¡Ô0Ø—L‘LˆEØÐ$¨°)Ò);Ø+¨E¨7Ð2FÀsÀeÈ1ÐM�Ü×+Ñ+¨CÓ0Ð0à(¨¨°Ð2ˆCÜ×'Ñ'¨Ó,Ð,ä˜eÓ$ˆØˆ<Ø# E 7¨!Ð,ˆCÜ×'Ñ'¨Ó,Ð,ä—‘˜E 4¨Ó0ˆÜ˜˜s EÓ*ˆØ”JˆÐrF   ©r)   )r	  rî  rÜ  s   `` rD   rà  rà  {  s   ù€ Üôó ðð> ÐrF   c           
      ó°  — |j                   dd \  }}|dd \  }}|j                  }|j                  dv sJ ‚ t        |«      | |«      }	t	        | |«      }
t        j                  |
«      }t        |t        j                  «      rt        j                  ||«      }n|f}|f}t        ||«      D ��cg c]'  \  }}| j                  |||t        j                  «      ‘Œ) }}}|}g }|j                  dk(  r+|D ]%  }|j                  |«       |j                  ||«      }Œ' nCt!        |«      D ]%  }|j                  |«       |j                  ||«      }Œ' |j#                  «        |j%                  || j'                  |j(                  «      j+                  «       «      }t-        |	||||d¬«       |	j/                  «       }t1        | ||j                  |«      S c c}}w )zR
    numba.numpy_support.carray(...) and
    numba.numpy_support.farray(...).
    Nro  r  rÊ  r÷  )rý   rÿ   r	  ry   r€   r
   rÎ   r˜   r   r\  rÀ   r¡   rŽ   r�   rj   rÂ   r  rp  r>  r{   r|   rù  rÕ   r  r!   )r~   r>   r\   rý   r6  rê  rl   rf   r×   rÃ  r­   rÅ  r  rO  r  Úoffr¬   r§   r›   r	  s                       rD   rì  rì  Ÿ  sÉ  € ð
 —X‘X˜b˜q�\�N€Eˆ7Ø�b�q��J€Cˆà�O‰O€EØ�<‰<˜4ÑÐÐàŒj˜Ó ¨Ó1€Gä˜G UÓ+€HÜ—.‘. Ó*€Kä�'œ5Ÿ?™?Ô+Ü×%Ñ% g¨uÓ5‰à�*ˆØ�ˆä#& w°Ó#7÷9Ù�&˜%ð �l‰l˜7 E¨6´5·:±:Õ>ð 9€Fñ 9ð €CØ€GØ‡|�|�sÒØò 	&ˆAØ�N‰N˜3ÔØ—+‘+˜c 1Ó%‰Cñ	&ô ˜&Ó!ò 	&ˆAØ�N‰N˜3ÔØ—+‘+˜c 1Ó%‰Cð	&ð 	�‰Ôà�?‰?˜3Ø"×0Ñ0°·±Ó=×HÑHÓJóL€Dô �7ØØØ"Ø'àõð ×
Ñ
Ó
€CÜ˜G W¨c¯o©o¸sÓCÐCùó99s   Â0,Gc                 ó0  — t        |t        j                  «      r)| j                  t        j                  t        |«      «      S t        |t        j                  «      r8| j                  t
        t        t        j                  |«      «      } |||f«      S J ‚rP  )	r˜   r   r\  r¿   r�   r    rØ  rR   r$   )r~   r>   ÚseqtyÚseqrä  s        rD   Ú_get_seq_sizerõ  Ó  sj   € Ü�%œŸ™Ô)Ø×#Ñ#¤E§J¡J´°E³
Ó;Ð;Ü	�Eœ5Ÿ>™>Ô	*Ø×'Ñ'¬¬Y´u·z±zÀ5Ó-JÓKˆÙ˜ # Ó(Ð(àˆqrF   c                 ó¤   ‡ ‡‡— |j                   Š‰ j                  t        j                  t	        ‰|t
        j                  «      «      Šˆ ˆˆfd„}|S )zK
    Return a getitem() implementation that doesn't incref its result.
    c                 ól   •—  ‰| |«      }‰j                   r‰j                  j                  | ‰|«       |S rP  )r  r  Údecref)r>   rý   rl  r~   rÒ  rY  s      €€€rD   Úwrapz$_get_borrowing_getitem.<locals>.wrapå  s3   ø€ Ù˜7 DÓ)ˆØ×ÒØ�K‰K×Ñ˜w¨¨sÔ3Øˆ
rF   )r|   rR   rÐ  rÑ  r$   r   r�   )r~   ró  rù  rÒ  rY  s   `  @@rD   Ú_get_borrowing_getitemrú  Ý  sC   ú€ ð �K‰K€EØ×'Ñ'¬×(8Ñ(8Ü(1°%¸ÄÇ
Á
Ó(KóM€Löð €KrF   c           	      ó
  ‡ ‡‡— ‰ j                  t        j                  «      }t        |d«      Šˆˆ ˆfd„}g }||}	}t	        |«      D ]0  }
|
dkD  r |||	«      \  }}	|j                  t        ‰ ‰||	«      «       Œ2 t        |«      S )zF
    Compute the likely shape of a nested sequence (possibly 0d).
    r   c                 óÊ   •— t        | t        j                  «      r&t        | «      dk(  ry| d   ‰j	                  |d«      fS t        ‰| «      }| j                   |‰|‰f«      fS )Nr   ©NN)r˜   r   r\  r    rc  rú  r|   )ró  rô  rÒ  r>   r~   r  s      €€€rD   Úget_first_itemz.compute_sequence_shape.<locals>.get_first_itemõ  sa   ø€ Ü�eœUŸ_™_Ô-Ü�5‹z˜QŠØ!à˜Q‘x ×!6Ñ!6°s¸AÓ!>Ð>Ð>ä1°'¸5ÓAˆLØ—;‘;¡¨W°s¸D°kÓ BÐBÐBrF   )r¹   r   r�   r   r9   rj   rõ  r»   )r~   r>   rq   ró  rô  rÎ   rþ  r  ÚinnertyÚinnerrn   r  s   ``         @rD   Úcompute_sequence_shaper  î  sŠ   ú€ ð ×#Ñ#¤E§J¡JÓ/€FÜ�F˜AÓ€DöCð €FØ˜CˆU€Gä�4‹[ò GˆØˆqŠ5Ù+¨G°UÓ;‰NˆG�UØ�‰”m G¨W°g¸uÓEÕFðGô
 �‹=ÐrF   c                 ó<   ‡ ‡‡‡— ˆˆ fd„Šˆˆˆˆ fd„Š ‰|||«       y)z?
    Check the nested sequence matches the given *shapes*.
    c                  óH   •— ‰j                   j                  ‰ t        d«       y )N)zincompatible sequence shape)rk  rl  r¸   )r>   r~   s   €€rD   Ú_failz#check_sequence_shape.<locals>._fail  s   ø€ Ø×Ñ×)Ñ)¨'´:Ø*Jõ	LrF   c                 ó¨  •— t        |«      dk(  ry t        ‰‰| |«      }|d   }‰j                  d||«      }‰j                  |d¬«      5   ‰«        d d d «       t        |«      dk(  ry t	        | t
        j                  «      rZt        ‰| «      }t        j                  ‰|«      5 }| j                  } |‰||j                  f«      }	 ‰||	|dd  «       d d d «       y t	        | t
        j                  «      r>t        t        | «      «      D ]&  }
| |
   }‰j                  ||
«      }	 ‰||	|dd  «       Œ( y J | «       ‚# 1 sw Y   ŒëxY w# 1 sw Y   y xY w)Nr   rh  Fri  rH   )r    rõ  r  r   r˜   r   rØ  rú  r
   rÁ  r|   r  r\  r9   rc  )ró  rô  r  r”   ÚexpectedrV  rÒ  rÃ  rÿ  r   rn   r  r>   Úcheck_seq_sizer~   s              €€€€rD   r  z,check_sequence_shape.<locals>.check_seq_size  sP  ø€ Üˆv‹;˜!ÒØä˜W g¨u°cÓ:ˆØ˜!‘9ˆØ×&Ñ& t¨T°8Ó<ˆØ�_‰_˜X¨eˆ_Ó4ñ 	ÙŒG÷	ô ˆv‹;˜!ÒØä�eœUŸ^™^Ô,Ü1°'¸5ÓAˆLÜ×"Ñ" 7¨DÓ1ð ;°TØŸ+™+�Ù$ W¨s°D·J±JÐ.?Ó@�Ù˜w¨¨v°a°b¨zÔ:÷;ð ;ô
 ˜œuŸ™Ô/Üœ3˜u›:Ó&ò ;�Ø ™(�Ø×-Ñ-¨c°1Ó5�Ù˜w¨¨v°a°b¨zÕ:ñ;ð �e‹O�1÷)	ð 	ú÷;ð ;ús   Á
D<Â%/EÄ<EÅENr…  )r~   r>   ró  rô  r  r  r  s   ``   @@rD   Úcheck_sequence_shaper    s   û€ õ
L÷ñ: �5˜#˜vÕ&rF   c                 óN   ‡ ‡‡‡‡‡‡‡	— ˆˆˆ ˆˆˆfd„Š	ˆˆ	ˆˆ fd„Š ‰||‰d«       y)zl
    Assign a nested sequence contents to an array.  The shape must match
    the sequence's structure.
    c           
      ó®   •— t        j                  ‰‰‰‰‰	‰j                  | d¬«      }‰j                  ‰||‰j                  «      }t        ‰‰‰||«       y r  )r
   r  r	  rŽ   r|   r‹   )
r£   r_  rŠ   rl   r  r>   r~   r›   r  r¬   s
       €€€€€€rD   Úassign_itemz-assign_sequence_to_array.<locals>.assign_item<  sQ   ø€ Ü×'Ñ'¨°¸$ÀÈØ(-¯©°gÈ%ôQˆà�l‰l˜7 C¨°·±Ó<ˆÜ�7˜G U¨C°Õ5rF   c                 ó¾  •— t        |«      dk(  r7t        | t        j                  t        j                  f«      rJ ‚ ‰|| |«       y |d   }t        | t        j                  «      rit        ‰| «      }t        j                  ‰|«      5 }| j                  } |‰||j                  f«      } ‰|||dd  ||j                  fz   «       d d d «       y t        | t        j                  «      rct        t        | «      «      D ]K  }	| |	   }‰j                  ||	«      }‰j                  t        j                  |	«      }
 ‰|||dd  ||
fz   «       ŒM y J | «       ‚# 1 sw Y   y xY wrÄ  )r    r˜   r   rØ  r\  rú  r
   rÁ  r|   r  r9   rc  r¿   r�   )ró  rô  r  r£   r”   rÒ  rÃ  rÿ  r   rn   r  Úassignr  r>   r~   s              €€€€rD   r  z(assign_sequence_to_array.<locals>.assignB  sM  ø€ Üˆv‹;˜!ÒÜ! %¬%¯.©.¼%¿/¹/Ð)JÔKÐKÐKÙ˜ ¨Ô,Øà�a‰yˆä�eœUŸ^™^Ô,Ü1°'¸5ÓAˆLÜ×"Ñ" 7¨DÓ1ð L°TØŸ+™+�Ù$ W¨s°D·J±JÐ.?Ó@�Ù�w  v¨a¨b z°7¸d¿j¹j¸]Ñ3JÔK÷Lð Lô
 ˜œuŸ™Ô/Üœ3˜u›:Ó&ò G�Ø ™(�Ø×-Ñ-¨c°1Ó5�Ø×,Ñ,¬U¯Z©Z¸Ó;�Ù�w  v¨a¨b z°7¸e¸XÑ3EÕFñ	Gð �e‹O�1÷Lð Lús   Â>EÅEr…  Nr…  )
r~   r>   r›   r  r¬   r  ró  rô  r  r  s
   ``````  @@rD   Úassign_sequence_to_arrayr  5  s"   ÿ€ ÷6ñ 6÷ñ2 ˆ5�#�v˜rÕ"rF   c                 ó†   — t        | |«      \  }}t        |«      r|}nt        |«      }|€y t        j                  ||d«      S r   )r5   r   rã  r   r™   )rk  rH  r|   rq   Ú	seq_dtypes        rD   Únp_array_typerr  ^  sD   € Ü,¨Y¸Ó?�O€Dˆ)Ü�5ÔØ‰ä˜uÓ%ˆØˆ=ØÜ�;‰;�u˜d CÓ(Ð(rF   c                 óT   — t        d|«       t        | ||«      } |||«      }d„ }||fS )NrÇ   c           
      ój  — |j                   }|j                  }|j                  d   }|d   }t        | ||||«      }t	        |«      |k(  sJ ‚t        | ||||«       t        | |||«      }	t        | ||	j                  ||	j                  |||«       t        | ||j                   |	j                  «       «      S rç   )rÿ   rq   rý   r  r    r  r  r  r›   r¬   r!   r  )
r~   r>   r\   rý   r  rq   ró  rô  r  r  s
             rD   rj  znp_array.<locals>.codegeno  s²   € Ø—‘ˆØ�z‰zˆØ—‘˜‘ˆØ�1‰gˆä'¨°¸$ÀÀsÓKˆÜ�6‹{˜dÒ"Ð"Ð"ä˜W g¨u°c¸6ÔBÜ˜W g¨u°fÓ=ˆÜ  ¨'°3·8±8¸VØ!$§¡¨e°U¸Cô	Aô   ¨°#·/±/Ø #§¡£ó1ð 	1rF   )rÒ  r  )rk  Úobjr|   rl  r\   rj  s         rD   Únp_arrayr  i  s6   € ä˜7 EÔ*Ü
˜ C¨Ó
/€CÙ
ˆc�5‹/€Cò1ð" �ˆ<ÐrF   c                 óÀ   — t        d|«       t        | «      st        j                  d«      ‚t	        |«      s"t        |«      €d}t        j                  |«      ‚dd„}|S )NrÇ   z(The argument "object" must be array-likez:The argument "dtype" must be a data-type if it is providedc                 ó   — t        | |«      S rP  )r  )rH  r|   s     rD   ré   zimpl_np_array.<locals>.impl�  s   € Ü˜ Ó&Ð&rF   rP  )rÒ  r   r	   rê   r   rã  )rH  r|   rÍ   ré   s       rD   Úimpl_np_arrayr  ƒ  s^   € ä˜7 EÔ*Ü˜FÔ#Ü× Ñ ð "1ó 2ð 	2ä�uÔ¤.°Ó"7Ð"?ØJˆÜ× Ñ  Ó%Ð%ó'à€KrF   c                 ó¾  — |j                  d«      }|j                  |«      }|j                  d||«      }|j                  ||j                  ||«      |«      }|j	                  |j                  d||«      |j                  d||«      «      }|j                  |d¬«      5  d|z  }	| j                  j                  |t        |	f«       d d d «       |S # 1 sw Y   |S xY w)Nr   r  r™  Fri  z%s(): axis out of bounds)	r:   r  rÞ  r«  rô  r   rk  rl  rG  )
r~   r>   rÜ   rq   rÞ   r  Úll_ndimÚis_neg_axisÚaxis_out_of_boundsrÍ   s
             rD   Ú_normalize_axisr  ’  sÜ   € Ø�9‰9�Q‹<€DØ�i‰i˜‹o€Gð ×%Ñ% c¨4°Ó6€KØ�>‰>˜+ w§{¡{°4¸Ó'AÀ4ÓH€Dð !Ÿ™Ø×Ñ˜C  tÓ,Ø×Ñ˜D $¨Ó0ó2Ðð 
�‰Ð+°EˆÓ	:ñ GØ(¨9Ñ4ˆØ×Ñ×)Ñ)¨'´:À¸vÔF÷Gð €K÷	Gð €Kús   Â (CÃCc           
      óv  — t        |«      |dz
  k(  sJ ‚t        j                  t        j                  |«      }t        j
                  ||«      }t        j                  d«      }t        |dz
  «      D ]z  }t        j                  |«      }	|j                  d|	|«      }
||   }|j                  |
|j                  |	|«      |	«      }|j                  |t        j                  ||d|«      «       Œ| |j                  |t        j                  ||d|«      «       t        j                  ||j                  |«      «      S )z’
    Compute shape with the new axis inserted
    e.g. given original shape (2, 3, 4) and axis=2,
    the returned new shape is (2, 3, 1, 4).
    rH   r™  r   ©r    r   rø  r
   rÎ   rX   r9   r  rÞ  r«  r$  ri   rÀ   r?   )r~   r>   Ú
orig_shaperq   rÞ   Úll_shtyr  r9  r‰  Úll_dimÚ
after_axisrA  r“   s                rD   Ú_insert_axis_in_shaper$  ¥  s  € ô ˆz‹?˜d Q™hÒ&Ð&Ð&ä�l‰lœ7Ÿ>™>¨4Ó0€GÜ× Ñ  ¨'Ó2€Fä
�.‰.˜Ó
€Cô �T˜A‘X‹ò IˆÜ—‘ Ó$ˆØ×(Ñ(¨¨v°tÓ<ˆ
Ø˜‰_ˆØ�n‰n˜ZØ$Ÿ[™[¨°Ó5Ø#ó%ˆð 	�‰�bœ'×.Ñ.¨w¸ÀÀ3ÓGÕHðIð ‡M�M�#”w×+Ñ+¨G°V¸QÀÓEÔFä×Ñ ¨¯©°fÓ)=Ó>Ð>rF   c           
      óœ  — t        |«      |dz
  k(  sJ ‚t        j                  t        j                  |«      }t        j
                  ||«      }t        j                  d«      }t        j                  d«      }t        |dz
  «      D ]x  }	t        j                  |	«      }
|j                  d|
|«      }|j                  ||j                  |
|«      |
«      }|j                  ||	   t        j                  ||d|«      «       Œz |j                  |t        j                  ||d|«      «       t        j                  ||j                  |«      «      S )zD
    Same as _insert_axis_in_shape(), but with a strides array.
    rH   r   r™  r  )r~   r>   Úorig_stridesrq   rÞ   r!  r¬   r9  r  r‰  r"  r#  r“   s                rD   Ú_insert_axis_in_stridesr'  Â  s"  € ô ˆ|Ó  q¡Ò(Ð(Ð(ä�l‰lœ7Ÿ>™>¨4Ó0€GÜ×!Ñ! '¨7Ó3€Gä
�.‰.˜Ó
€CÜ�>‰>˜!Ó€Dô �T˜A‘X‹ò FˆÜ—‘ Ó$ˆØ×(Ñ(¨¨v°tÓ<ˆ
Ø�n‰n˜ZØ$Ÿ[™[¨°Ó5Ø#ó%ˆð 	�‰�l 3Ñ'Ü×*Ñ*¨7°G¸QÀÓDõ	FðFð ‡M�M�$œ×,Ñ,¨W°g¸qÀ$ÓGÔHä×Ñ ¨¯©°gÓ)>Ó?Ð?rF   c           	      óò  — |j                   }|j                  }|j                  d   } t        |«      | ||d   ¬«      } t        |«      | |«      }	t	        j
                  ||j                  «      }
t	        j
                  ||j                  «      }t        | ||
||«      }t        | ||||«      }t        |	|j                  |||j                  |j                  |j                  ¬«       |	j                  «       S )z/
    np.expand_dims() with the given axis.
    r   r  rE  )rÿ   rq   rý   ry   r
   rÀ   rf   r¬   r$  r'  rÕ   r›   r­   r«   r®   r  )r~   r>   r\   rý   rÞ   rY  rq   r  r  rl  r  r¬   Ú
new_shapesÚnew_stridess                 rD   Úexpand_dimsr+  ß  sÙ   € ð �O‰O€EØ�:‰:€DØ�H‰H�Q‰K€Eà
Œ*�UÓ
˜G W°D¸±GÔ
<€CØ
Œ*�UÓ
˜G WÓ
-€Cä×!Ñ! '¨3¯9©9Ó5€FÜ×"Ñ" 7¨C¯K©KÓ8€Gä& w°¸ÀÀtÓL€JÜ)¨'°7¸GÀTÈ4ÓP€Kä�3ØŸ™Ø#Ø&ØŸL™LØŸ;™;ØŸ*™*õ&ð �=‰=‹?ÐrF   c                 óœ   — |j                   dk  r|j                  nd}|j                  |j                   dz   |¬«      } |||«      }d„ }||fS )NrH   r^  r_  c                 óú   — | j                  ||d   |j                  d   t        j                  «      }t	        | |d|j
                  j                  |«      }t        | ||||«      }t        | ||j
                  |«      S )NrH   znp.expand_dims)	rŽ   rý   r   r�   r  rÿ   rq   r+  r    )r~   r>   r\   rý   rÞ   rl  s         rD   rj  znp_expand_dims.<locals>.codegen  so   € Ø�|‰|˜G T¨!¡W¨c¯h©h°q©k¼5¿:¹:ÓFˆÜ˜w¨Ð1AØ"Ÿ™×3Ñ3°Tó;ˆô ˜' 7¨C°°tÓ<ˆÜ  ¨'°3·?±?ÀCÓHÐHrF   )rq   r	  r`  )rk  r  rÞ   r	  rl  r\   rj  s          rD   Únp_expand_dimsr.  û  sN   € àŸ™ 1šˆQ�XŠX¨#€FØ
�&‰&�a—f‘f˜q‘j¨ˆ&Ó
0€CÙ
ˆa�‹,€CòIð �ˆ<ÐrF   c                 óÜ   — t        | t        j                  «      sd| › �}t        j                  |«      ‚t        |t        j
                  «      sd|› �}t        j                  |«      ‚d„ }|S )Nz)First argument "a" must be an array. Got z(Argument "axis" must be an integer. Got c                 ó   — t        | |«      S rP  )r.  )r  rÞ   s     rD   ré   z!impl_np_expand_dims.<locals>.impl  s   € Ü˜a Ó&Ð&rF   )r˜   r   r™   r	   rê   rš   )r  rÞ   rÍ   ré   s       rD   Úimpl_np_expand_dimsr1    sb   € ä�aœŸ™Ô%Ø9¸!¸Ð=ˆÜ× Ñ  Ó%Ð%ä�dœEŸM™MÔ*Ø8¸¸Ð?ˆÜ× Ñ  Ó%Ð%ò'à€KrF   c                 ó0   ‡ ‡‡— t         ˆˆ fd„«       Šˆfd„S )Nc           	      ó0  •‡‡— |Š|D �cg c](  }|j                  t        |j                  ‰«      ¬«      ‘Œ* c}Šˆˆˆˆfd„}t        t	        ‰«      dkD  rt        j                  ‰«      n‰d   t
        j                  j                  |«      «      |fS c c}w )NrQ  c                 óF  •— t        ‰‰«      }t        j                  ||d   «      }t        |‰‰«      D ���cg c]  \  }}} || ||||«      ‘Œ }	}}}t	        |	«      dkD  r| j                  ||j                  |	«      }
n|	d   }
t        | ||j                  |
«      S c c}}}w rÄ  )Ú_atleast_nd_transformr
   rÀ   r¡   r    rÉ  rÿ   r    )r~   r>   r\   rý   Ú	transformÚarrsr  r  rY  Úretsrl  r)  r  Úminimumr@  s              €€€€rD   rj  z*_atleast_nd.<locals>.impl.<locals>.codegen!  s²   ø€ Ü-¨g°tÓ<ˆIÜ×'Ñ'¨°°a±Ó9ˆDô .1°°v¸vÓ-F÷Hð HÙ)˜˜U Eñ ˜g w°°U¸EÕBð HˆDò Hô �4‹y˜1Š}Ø×(Ñ(¨°#·/±/À4ÓH‘à˜1‘g�Ü$ W¨g°s·±ÈÓLÐLùôHs   ¸BrH   r   )	r`  rž  rq   r$   r    r   rˆ  ÚStarArgTupleÚ
from_types)Útypingcontextrý   r›  rj  r)  r@  r  r9  s       @@€€rD   ré   z_atleast_nd.<locals>.impl  s‚   ú€ àˆØCGÖH¸C�#—(‘(¤ C§H¡H¨gÓ 6�(Õ7ÒHˆ÷	Mô ´°F³¸a²œŸ™ VÔ,ÀVÈAÁYÜ×+Ñ+×6Ñ6°tÓ<ó>Ø?FðGð 	Gùò Is   Š-Bc                  ó   •—  ‰| Ž S rP  r…  )rý   ré   s    €rD   r—  z_atleast_nd.<locals>.<lambda>1  s   ø€ ™˜t˜€ rF   rï  )r9  r  ré   s   ``@rD   Ú_atleast_ndr>    s   ú€ ÜôGó ðGó( %Ð$rF   c                 ó6   ‡ ‡— ‰ t        ‰«      k(  sJ ‚ˆˆ fd„}|S )z`
    Return a callback successively inserting 1-sized dimensions at the
    following axes.
    c           	      ó  •— t        ‰
«      D ]t  }|dz   }|j                  |k  sŒt        j                  ‰	|   «      }|j	                  |j                  dz   ¬«      }t        | |t        j                  ||«      |f|«      }|}Œv |S )NrH   rQ  )r9   rq   r
   rÎ   r`  r+  r   r$   )r~   r>   r  r  rY  rn   rq   rÞ   Únewarrtyr  Úmin_ndims            €€rD   r6  z(_atleast_nd_transform.<locals>.transform;  sˆ   ø€ Ü�x“ò 	!ˆAØ�q‘5ˆDØ�z‰z˜DÓ Ü—~‘~ d¨1¡gÓ.�Ø Ÿ:™:¨5¯:©:¸©>˜:Ó:�Ü! '¨7Ü"(×"2Ñ"2°8¸UÓ"CÀcÀVØ"&ó(�ð !‘ð	!ð ˆ
rF   )r    )rB  r  r6  s   `` rD   r5  r5  4  s$   ù€ ð
 ”s˜4“yÒ Ð Ð õð ÐrF   c                  óB   — t        d„ | D «       «      rt        ddg«      S y )Nc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrP  rQ  r%  s     rD   rT  z np_atleast_1d.<locals>.<genexpr>M  ó   è ø€ Ò
8¨CŒ:�cœ5Ÿ;™;×'Ñ
8ùrU  rH   r   ©r‰  r>  r–  s    rD   Únp_atleast_1drG  K  s$   € ä
Ñ
8°4Ô
8Ô8Ü˜1˜q˜cÓ"Ð"ð 9rF   c                  óD   — t        d„ | D «       «      rt        dddg«      S y )Nc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrP  rQ  r%  s     rD   rT  z np_atleast_2d.<locals>.<genexpr>S  rE  rU  ro  r   rF  r–  s    rD   Únp_atleast_2drJ  Q  s&   € ä
Ñ
8°4Ô
8Ô8Ü˜1˜q !˜fÓ%Ð%ð 9rF   c                  óD   — t        d„ | D «       «      rt        dg d¢«      S y )Nc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrP  rQ  r%  s     rD   rT  z np_atleast_3d.<locals>.<genexpr>Y  rE  rU  r;  )r   r   ro  rF  r–  s    rD   Únp_atleast_3drM  W  s"   € ä
Ñ
8°4Ô
8Ô8Ü˜1šiÓ(Ð(ð 9rF   c	                 óf  — t        |«      t        |«      cxk(  rt        |«      cxk(  rt        |«      k(  sJ ‚ J ‚t        j                  d«      }	t        | |||«      }
t        j                  ||
j
                  «      }g }|D ]Œ  }|	}t        t        ||«      «      D ]_  \  }\  }}|j                  d|j                  |«      |«      }|j                  ||«      }|j                  ||j                  ||«      |«      }Œa |j                  |«       ŒŽ |
j                  }t        |||||«      D ]ö  \  }}}}}|j                  }t        j                  ||t        j                  |j                   ¬«      }|5 }t        j"                  | |||||j                   |«      }t%        | |||«      }| j'                  |||j(                  |j(                  «      }t        j"                  | |||||j                   |«      }t+        | ||||«       ddd«       t        j,                  |||«      }Œø |
S # 1 sw Y   Œ$xY w)z2
    Concatenate arrays along the given axis.
    r   rò  )ÚorderN)r    r
   rÎ   r  rÀ   r¬   rô   r¡   r  r:   rÂ   rÞ  r«  rj   r›   rC  r	  r  r‡   rŽ   r|   r‹   r  )r~   r>   rÞ   r)  r7  Ú
arr_shapesÚarr_stridesrY  Ú
ret_shapesr  rl  Úret_stridesÚcopy_offsetsÚarr_shr  r‰  r”   rø  Úis_axisÚaddendÚret_datar  r  Úarr_stÚarr_datarC  r£   r/  rŠ   rF  s                                 rD   Ú_do_concatenater[  ]  s,  € ô ˆv‹;œ#˜d›)ÔJ¤s¨:£ÔJ¼#¸kÓ:JÒJÐJÑJÐJÐJä�>‰>˜!Ó€Dô ˜ '¨5°*Ó
=€CÜ×&Ñ& w°·±Ó<€Kð €Làò 	$ˆàˆÜ#,¬S°¸Ó-EÓ#Fò 	,ÑˆC‘�$˜Ø×)Ñ)¨$°·	±	¸#³ÀÓEˆGØ—[‘[  vÓ.ˆFØ—^‘^ GØ$+§K¡K°¸Ó$?Ø$*ó,‰Fð	,ð 	×Ñ˜FÕ#ð	$ð �x‰x€Hä.1°&¸$À
Ø2=¸|ó/Mò BÑ*ˆˆs�F˜F Fà—8‘8ˆô ×%Ñ% g¨v´w·~±~Ø,1¯L©Lô:ˆ	ð ð 		?˜'Ü×/Ñ/°¸À(Ø06¸Ø05·±¸góGˆGô ˜G W¨e°WÓ=ˆCØ—,‘,˜w¨¨U¯[©[¸%¿+¹+ÓFˆCÜ×0Ñ0°¸'À8Ø1;¸[Ø16·±¸wóHˆHô �w ¨°°XÔ>÷		?ô ×&Ñ& w°¸&ÓA‰ð+Bð. €J÷		?ð 		?ús   Å4BH'È'H0	c                 óx  — |j                   }t        ||«      D ��cg c]  \  }} t        |«      | ||¬«      ‘Œ }}}t        | |d||«      }|D �	cg c]"  }	t	        j
                  ||	j                  «      ‘Œ$ }
}	|D �	cg c]"  }	t	        j
                  ||	j                  «      ‘Œ$ }}	|
d   D �cg c]  }t	        j                  ||«      ‘Œ }}t        |«      D �]C  }|j                  d|j                  |«      |«      }||   }|j                  |«      }|
dd  D �cg c]  }||   ‘Œ	 }}|j                  |«      5 \  }}|5  t        j                  |j                   ||gz   «      }|j#                  ||«       d d d «       |5  t        j$                  }|D ]%  }|j'                  ||j                  d||«      «      }Œ' |j)                  |j+                  |«      d¬«      5  | j,                  j/                  |t0        d|z  f«       d d d «       d d d «       d d d «       �ŒF |D �cg c]  }|j                  |«      ‘Œ }}t3        | |||||
|||«	      }t5        | |||j7                  «       «      S c c}}w c c}	w c c}	w c c}w c c}w # 1 sw Y   �ŒxY w# 1 sw Y   Œ�xY w# 1 sw Y   Œ”xY w# 1 sw Y   �ŒÝxY wc c}w )	Nr  únp.concatenater   rò  rH   Fri  z<np.concatenate(): input sizes over dimension %d do not match)rq   r¡   ry   r  r
   rÀ   rf   r¬   r   r9   r  r:   r?   r-  rI  rJ  r«  r$  rK  r#  r   rË  rk  rl  r¸   r[  r!   r  )r~   r>   r)  r7  rY  rÞ   rq   rÅ  r  r  rP  rQ  rA  rR  r‰  rV  Úret_shape_ptrÚret_shÚother_shapesÚon_axisÚon_other_dimÚis_okrl  s                          rD   Ú_np_concatenaterd  š  sÖ  € Ø�:‰:€Dô ˜f dÓ+÷-Ù��Qð ŒJ�s‹O˜G W°AÖ6ð -€Dñ -ô ˜7 GÐ-=¸tÀTÓJ€Dð GKÖK¸s”'×&Ñ& w°·	±	Õ:ÐK€JÐKØIMÖNÀ#”7×'Ñ'¨°·±Õ=ÐN€KÐNð ' q™Mö+Øô ×+Ñ+¨G°RÕ8ð +€Jð +ô �T‹{ó >ˆØ×%Ñ% d¨D¯I©I°c«N¸DÓAˆØ" 3™ˆØ—‘˜mÓ,ˆØ*4°Q°R¨.Ö9 B˜˜3›Ð9ˆÐ9à�_‰_˜WÓ%ð 	>Ñ)@¨'°<Øñ 1Ü×%Ñ%Ø—K‘KØ  F 8Ñ+ó-�ð —‘˜b -Ô0÷	1ð ñ 	>Ü×(Ñ(�Ø&ò P�BØ#ŸL™L¨Ø)0×)<Ñ)<¸TÀ2ÀvÓ)NóP‘EðPð —_‘_ W§\¡\°%Ó%8À�_ÓGñ >Ø×%Ñ%×5Ñ5Ø¤ð5Ø7:ñ;ð =ô>÷>÷	>÷	>ñ 	>ð>ð0 .8Ö8 r�'—,‘,˜rÕ"Ð8€JÐ8ä
˜' 7¨DØ  $¨
°KØ ó-€Cô ˜G W¨e°S·]±]³_ÓEÐEùóY-ùò LùÚNùò
+ùò :÷1ñ 1ú÷>ð >ú÷	>ð 	>ú÷	>ñ 	>üò$ 9sx   œI+Á'I1Á='I6Â-I;ÄJ Ä9J*Ä?7JÅ6
J*Æ AJÇ&J	ÈJÈJ*È"J7ÊJÊ
J*ÊJÊJÊJ'Ê#J*Ê*J4	c                 óÞ	  — |j                   }t        j                  d«      }t        j                  d«      }t        j                  t        |«      «      }	t	        ||«      D �
�cg c]  \  }
} t        |
«      | ||¬«      ‘Œ }}
}t        | |d||«      }t        j                  ||d   j                  «      }|dd  D ]³  }t        j                  }t	        t        j                  ||j                  «      |«      D ]t  \  }}|j                  ||j                  d||«      «      }|j                  |j                  |«      d¬«      5  | j                  j                  |t         d«       d d d «       Œv Œµ |D �cg c]"  }t        j                  ||j"                  «      ‘Œ$ }}t%        j&                  t        j                  |«      }t        j(                  ||«      }t        j(                  ||«      }t+        |dz
  «      D ]¢  }t        j                  |«      }|j                  d	||«      }||   }|j-                  ||j/                  ||«      |«      }|j1                  |t        j2                  ||d|«      «       |j1                  |t        j2                  ||d|«      «       Œ¤ |j1                  |t        j2                  ||d|«      «       |j1                  |	t        j2                  ||d|«      «       t        j                  ||j5                  |«      «      }|gt        |«      z  }t        j                  ||j5                  |«      «      }t+        t        |«      «      D �cg c]  }t        j(                  ||«      ‘Œ }}t+        |dz
  «      D ]—  }t        j                  |«      }|j                  d	||«      }|j-                  ||j/                  ||«      |«      }t+        t        |«      «      D ]3  }|j1                  ||   |   t        j2                  |||   d|«      «       Œ5 Œ™ t+        t        |«      «      D ]-  }|j1                  |t        j2                  |||   d|«      «       Œ/ |D �cg c]'  }t        j                  ||j5                  |«      «      ‘Œ) }}t7        | ||||||||«	      }t9        | |||j;                  «       «      S c c}}
w # 1 sw Y   �ŒäxY wc c}w c c}w c c}w )
Nr   rH   r  únp.stackrò  Fri  )z5np.stack(): all input arrays must have the same shaper™  )rq   r
   rÎ   r    r¡   ry   r  rÀ   rf   rK  r#  r  r   rË  rk  rl  r¸   r¬   r   rø  rX   r9   rÞ  r«  r$  ri   r?   r[  r!   r  )r~   r>   r)  r7  rY  rÞ   rq   r  r9  Ú
ll_narraysrÅ  r  r   r  rc  rA  Úorig_shr&  r!  Úinput_shapesrR  r‰  r"  r#  r“   rn   Úinput_stridesrB  rl  s                                rD   Ú	_np_stackrk  Ì  s¥  € Ø�:‰:€Dä�>‰>˜!Ó€DÜ
�.‰.˜Ó
€CÜ—‘¤ D£	Ó*€Jô ˜f dÓ+÷-Ù��Qð ŒJ�s‹O˜G W°AÖ6ð -€Dñ -ô ˜7 G¨Z¸¸tÓD€Dô ×%Ñ% g¨t°A©w¯}©}Ó=€Jà�A�Bˆxò PˆÜ× Ñ ˆÜœw×3Ñ3°G¸S¿Y¹YÓGØ)ó+ò 	P‰KˆB�à—L‘L ¨×(;Ñ(;¸DÀ"ÀgÓ(NÓOˆEØ—‘ §¡¨eÓ!4¸U�ÓCñ PØ×!Ñ!×1Ñ1ØœZØNôP÷Pð Pñ	PðPð KOÖOÀ3”G×(Ñ(¨°#·+±+Õ>ÐO€LÐOô
 �l‰lœ7Ÿ>™>¨4Ó0€Gä×&Ñ& w°Ó8€LÜ×$Ñ$ W¨gÓ6€Jô �T˜A‘X‹ò MˆÜ—‘ Ó$ˆØ×(Ñ(¨¨v°tÓ<ˆ
Ø˜‰_ˆØ�n‰n˜ZØ$Ÿ[™[¨°Ó5Ø#ó%ˆð 	�‰�bœ'×.Ñ.¨w¸ÀaÈÓMÔNØ�‰�bœ'×.Ñ.¨w¸
ÀAÀsÓKÕLðMð ‡M�M�#”w×+Ñ+¨G°\À1ÀdÓKÔLØ‡M�M�*œg×2Ñ2°7Ø3=Ø34Ø37ó9ô :ô
 ×'Ñ'¨°·±¸lÓ1KÓL€LØ �>¤C¨£IÑ-€LÜ×%Ñ% g¨w¯|©|¸JÓ/GÓH€Jô $¤C¨£IÓ.ö0Øô ×(Ñ(¨°'Õ:ð 0€Mð 0ô �T˜A‘X‹ò 	5ˆÜ—‘ Ó$ˆØ×(Ñ(¨¨v°tÓ<ˆ
Ø�n‰n˜ZØ$Ÿ[™[¨°Ó5Ø#ó%ˆô ”s˜4“yÓ!ò 	5ˆAØ�M‰M˜, q™/¨#Ñ.Ü!×.Ñ.¨w¸ÀaÑ8HÈ!Ø/2ó4õ5ñ	5ð	5ô ”3�t“9Óò 8ˆØ�‰�dœG×0Ñ0°¸-ÈÑ:JÈAØ15ó7õ 	8ð8ð
  -ö.Øô ×)Ñ)¨'°7·<±<ÀÓ3CÕDð .€Mð .ô ˜' 7¨DØ  $¨°mØ ó-€Cô ˜G W¨e°S·]±]³_ÓEÐEùó_-÷Pñ Püò
 PùòB0ùò*.s$   Á$SÅ"SÅ6'S Í!S%Ñ0,S*ÓSc                 óØ   — |�t        |t        j                  «      sy t        | d|«      \  }}|dk(  rd}t	        j
                  |«      ‚t        |«      }t        j                  |||«      S )Nr]  r   z.zero-dimensional arrays cannot be concatenated)r˜   r   rš   r6   r	   r-  r7   r™   )rk  r%  rÞ   r|   rq   rÍ   r	  s          rD   Únp_concatenate_typerrm  %  sl   € ØÐ¤
¨4´·±Ô ?ð 	ô & iØ&6¸ó@�K€Eˆ4àˆq‚yØ>ˆÜ×#Ñ# CÓ(Ð(ä)¨&Ó1€Fä�;‰;�u˜d FÓ+Ð+rF   c                 ót   — t        | ||«      }t        |t        j                  «      sJ ‚ |||«      }d„ }||fS )Nc           
      óô   — | j                  ||d   |j                  d   t        j                  «      }t	        | |t        |j                  d   «      t        j                  ||d   «      |j                  |«      S r½  )	rŽ   rý   r   r�   rd  r¼   r
   rÀ   rÿ   ©r~   r>   r\   rý   rÞ   s        rD   rj  znp_concatenate.<locals>.codegen=  se   € Ø�|‰|˜G T¨!¡W¨c¯h©h°q©k¼5¿:¹:ÓFˆÜ˜w¨Ü# C§H¡H¨Q¡KÓ0Ü&×3Ñ3°G¸TÀ!¹WÓEØ"Ÿ™Ø#ó	%ð 	%rF   )rm  r˜   r   r™   )rk  r%  rÞ   rl  r\   rj  s         rD   Únp_concatenaterq  7  sA   € ä
˜y¨&°$Ó
7€CÜ�cœ5Ÿ;™;Ô'Ð'Ð'Ù
ˆf�dÓ
€Cò%ð �ˆ<ÐrF   c                 óD   — t        | t        j                  «      rdd„}|S y )Nc                 ó   — t        | |«      S rP  )rq  ©r%  rÞ   s     rD   ré   z!impl_np_concatenate.<locals>.implK  s   € Ü! &¨$Ó/Ð/rF   rò   ©r˜   r   r\  ©r%  rÞ   ré   s      rD   Úimpl_np_concatenaterw  H  s   € ä�&œ%Ÿ/™/Ô*ó	0àˆð +rF   c                 ó|   — |D ]7  }|j                   dk  s|j                   dkD  sŒ"d}t        j                  |«      ‚ y)NrH   ro  z7np.column_stack() is only defined on 1-d and 2-d arrays)rq   r	   r-  )r~   rÜ   r%  r  rÍ   s        rD   Ú_column_stack_dimsry  P  sA   € àò -ˆØ�6‰6�AŠ:˜Ÿ™ !›ØKˆCÜ×'Ñ'¨Ó,Ð,ð-ð rF   c                 ó�   — t        | d|t        ¬«      \  }}t        |«      }t        j                  |||«      } ||«      }d„ }||fS )Nznp.column_stack)Údim_chooserc                 óB  — t        |j                  d   «      }t        j                  ||d   «      }g }g }| j	                  t
        j                  d«      }t        ||«      D ]¢  \  }	}
|	j                  dk(  r#|j                  |	«       |j                  |
«       Œ8|	j                  dk(  sJ ‚|	j                  d¬«      }t        j                  ||	«      }t        | |||
f|«      }|j                  |«       |j                  |«       Œ¤ t        | ||||j                  |«      S )Nr   rH   ro  rQ  )r¼   rý   r
   rÀ   r¿   r   r�   r¡   rq   rj   r`  r   r$   r+  rd  rÿ   )r~   r>   r\   rý   Úorig_arrtysÚ	orig_arrsr)  r7  rÞ   r  r  r×  Ú
expand_sigÚnewarrs                 rD   rj  z np_column_stack.<locals>.codegenb  s  € Ü˜3Ÿ8™8 A™;Ó'ˆÜ×(Ñ(¨°$°q±'Ó:ˆ	àˆØˆà×#Ñ#¤E§J¡J°Ó2ˆä˜k¨9Ó5ò 	$‰JˆE�3Ø�z‰z˜QŠØ—‘˜eÔ$Ø—‘˜CÕ ð —z‘z Q’Ð&�ØŸ
™
¨˜
Ó*�Ü#×-Ñ-¨e°UÓ;�
Ü$ W¨g°zÀCÀ6È4ÓP�à—‘˜eÔ$Ø—‘˜FÕ#ð	$ô ˜w¨°¸Ø"Ÿ™°ó6ð 	6rF   )r6   ry  r7   r   r™   )rk  rY  r|   rq   r	  rl  r\   rj  s           rD   Únp_column_stackr�  Y  sS   € ä% iØ&7¸Ü2DôF�K€Eˆ4ô *¨#Ó.€FÜ
�+‰+�e˜T 6Ó
*€CÙ
ˆc‹(€Cò6ð4 �ˆ<ÐrF   c                 óB   — t        | t        j                  «      rd„ }|S y )Nc                 ó   — t        | «      S rP  )r�  ©rY  s    rD   ré   zimpl_column_stack.<locals>.impl‚  s   € Ü" 3Ó'Ð'rF   ru  ©rY  ré   s     rD   Úimpl_column_stackr†    s   € ä�#”u—‘Ô'ò	(àˆð (rF   c           
      ó�   — t        | |t        |j                  d   «      t        j                  ||d   «      |j
                  |«      S )z/
    np.stack() with the given axis value.
    r   )rk  r¼   rý   r
   rÀ   rÿ   rp  s        rD   Ú_np_stack_commonrˆ  ‡  sC   € ô �W˜gÜ˜#Ÿ(™( 1™+Ó&Ü×)Ñ)¨'°4¸±7Ó;Ø—_‘_Øó	ð rF   c                 ó¢   — t        | d|«      \  }}t        d„ |D «       «      rdnd}t        j                  ||dz   |«      } |||«      }d„ }||fS )Nrf  c              3   ó:   K  — | ]  }|j                   d k(  –— Œ y­w)rÊ  N)r	  rX  s     rD   rT  z"np_stack_common.<locals>.<genexpr>—  s   è ø€ Ò8¨A˜Ÿ™ C�Ñ8ùs   ‚rÊ  r¦   rH   c                 ó„   — | j                  ||d   |j                  d   t        j                  «      }t	        | ||||«      S r§  )rŽ   rý   r   r�   rˆ  rp  s        rD   rj  z np_stack_common.<locals>.codegen›  s9   € Ø�|‰|˜G T¨!¡W¨c¯h©h°q©k¼5¿:¹:ÓFˆÜ ¨°#°t¸TÓBÐBrF   )r6   r‰  r   r™   )	rk  r%  rÞ   r|   rq   r	  rl  r\   rj  s	            rD   Únp_stack_commonrŒ  ’  sa   € ô & iØ&0°&ó:�K€Eˆ4äÑ8°Ô8Ô8‰S¸c€FÜ
�+‰+�e˜T A™X vÓ
.€CÙ
ˆf�dÓ
€CòCð �ˆ<ÐrF   c                 óD   — t        | t        j                  «      rdd„}|S y )Nc                 ó   — t        | |«      S rP  )rŒ  rt  s     rD   ré   zimpl_np_stack.<locals>.impl¥  s   € Ü" 6¨4Ó0Ð0rF   rò   ru  rv  s      rD   Úimpl_np_stackr�  ¢  s   € ä�&œ%Ÿ/™/Ô*ó	1àˆð +rF   c                 ó‚   — t        | ||«      \  }}t        ||«      }t        |«      }t        j                  |||«      }|S rP  )r6   rž  r7   r   r™   )rk  rÜ   r%  Úndim_minr|   rq   r	  rl  s           rD   ÚNdStack_typerr’  ª  sA   € ä% i°¸FÓC�K€Eˆ4Üˆt�XÓ€DÜ)¨&Ó1€FÜ
�+‰+�e˜T 6Ó
*€CØ€JrF   c                 ó<   — t        | d|d«      } ||«      }d„ }||fS )Nz	np.hstackrH   c                 óì   ‡— |j                   d   }|d   j                  }|dk(  r/| j                  t        j                  d«      Št        | |||‰«      S |dk(  rdndŠˆfd„}| j                  ||||«      S )Nr   rH   c                 ó2   •— t        j                  | ‰¬«      S r|  r~  rt  s    €rD   Únp_hstack_implz3_np_hstack.<locals>.codegen.<locals>.np_hstack_implÆ  s   ø€ Ü—~‘~ f°4Ô8Ð8rF   ©rý   rq   r¿   r   r�   rˆ  rú  )r~   r>   r\   rý   rX  rq   r–  rÞ   s          @rD   rj  z_np_hstack.<locals>.codegen¸  sz   ø€ Ø—‘˜‘ˆØ�Q‰x�}‰}ˆà�1Š9à×'Ñ'¬¯
©
°AÓ6ˆDÜ# G¨W°c¸4ÀÓFÐFð
  š	‘1 qˆDô9ð ×+Ñ+¨G°^ÀSÈ$ÓOÐOrF   ©r’  ©rk  rY  rl  r\   rj  s        rD   Ú
_np_hstackrš  ³  s-   € ä
˜	 ;°°QÓ
7€CÙ
ˆc‹(€CòPð& �ˆ<ÐrF   c                 óB   — t        | t        j                  «      rd„ }|S y )Nc                 ó   — t        | «      S rP  )rš  r„  s    rD   ré   zimpl_np_hstack.<locals>.implÑ  ó   € Ü˜c“?Ð"rF   ru  r…  s     rD   Úimpl_np_hstackrž  Î  ó   € ä�#”u—‘Ô'ò	#àˆð (rF   c                 ó<   — t        | d|d«      } ||«      }d„ }||fS )Nz	np.vstackro  c                 óæ   — |j                   d   }|d   j                  }|dk(  rd„ }n7|dk(  r/| j                  t        j                  d«      }t        | ||||«      S d„ }| j                  ||||«      S )Nr   c                 óT   — t        j                  t        j                  | «      d«      S r§  )r~  r+  Úhstack©r%  s    rD   Únp_vstack_implz3_np_vstack.<locals>.codegen.<locals>.np_vstack_implà  s   € Ü—~‘~¤b§i¡i°Ó&7¸Ó;Ð;rF   rH   c                 ó0   — t        j                  | d¬«      S )Nr   r}  r~  r¤  s    rD   r¥  z3_np_vstack.<locals>.codegen.<locals>.np_vstack_implé  ó   € Ü—~‘~ f°1Ô5Ð5rF   r—  )r~   r>   r\   rý   rX  rq   r¥  rÞ   s           rD   rj  z_np_vstack.<locals>.codegenÛ  sx   € Ø—‘˜‘ˆØ�Q‰x�}‰}ˆà�1Š9ó<ð �QŠYà×'Ñ'¬¯
©
°AÓ6ˆDÜ# G¨W°c¸4ÀÓFÐFò6ð ×'Ñ'¨°ÀÀdÓKÐKrF   r˜  r™  s        rD   Ú
_np_vstackr¨  Ö  s-   € ä
˜	 ;°°QÓ
7€CÙ
ˆc‹(€CòLð& �ˆ<ÐrF   c                 óB   — t        | t        j                  «      rd„ }|S y )Nc                 ó   — t        | «      S rP  )r¨  r„  s    rD   ré   zimpl_np_vstack.<locals>.implô  r�  rF   ru  r…  s     rD   Úimpl_np_vstackr«  ñ  rŸ  rF   c                 ó<   — t        | d|d«      } ||«      }d„ }||fS )Nz	np.dstackr;  c                 ó–  — |j                   d   }|j                  }|d   j                  }|dk(  rd„ }| j                  ||||«      S |dk(  r´| j	                  t
        j                  d«      }|j                  |j                  dz
  ¬«      }	t        j                  |	g|j                   ¢­Ž }
t        | ||
||«      }| j	                  t
        j                  d«      }t        j                  ||	«      }t        | |||f|«      S |dk(  r/| j	                  t
        j                  d«      }t        | ||||«      S d„ }| j                  ||||«      S )Nr   c                 óN   — t        j                  | «      j                  ddd«      S )NrH   r  )r~  r£  re  r¤  s    rD   r¥  z3_np_dstack.<locals>.codegen.<locals>.np_vstack_impl  s    € Ü—y‘y Ó(×0Ñ0°°A°rÓ:Ð:rF   rH   rQ  ro  c                 ó0   — t        j                  | d¬«      S )Nro  r}  r~  r¤  s    rD   r¥  z3_np_dstack.<locals>.codegen.<locals>.np_vstack_impl  r§  rF   )rý   rÿ   rq   rú  r¿   r   r�   r`  r   r$   rˆ  r+  )r~   r>   r\   rý   rX  rY  rq   r¥  rÞ   Ústack_rettyÚ	stack_sigÚ	stack_retr  s                rD   rj  z_np_dstack.<locals>.codegen  s:  € Ø—‘˜‘ˆØ—‘ˆØ�Q‰x�}‰}ˆà�1Š9ò;ð ×+Ñ+¨G°^ÀSÈ$ÓOÐOà�QŠYà×'Ñ'¬¯
©
°AÓ6ˆDØŸ*™*¨%¯*©*°q©.˜*Ó9ˆKÜ×(Ñ(¨Ð@°s·x±xÒ@ˆIÜ(¨°'¸9ÀdØ)-ó/ˆIð ×'Ñ'¬¯
©
°AÓ6ˆDÜ×)Ñ)¨%°Ó=ˆJÜ˜w¨°¸i¸\È4ÓPÐPà�QŠYà×'Ñ'¬¯
©
°AÓ6ˆDÜ# G¨W°c¸4ÀÓFÐFò6ð ×+Ñ+¨G°^ÀSÈ$ÓOÐOrF   r˜  r™  s        rD   Ú
_np_dstackr³  ý  s.   € ä
˜	 ;°°QÓ
7€CÙ
ˆc‹(€Cò PðD �ˆ<ÐrF   c                 óB   — t        | t        j                  «      rd„ }|S y )Nc                 ó   — t        | «      S rP  )r³  r„  s    rD   ré   zimpl_np_dstack.<locals>.impl*  r�  rF   ru  r…  s     rD   Úimpl_np_dstackr¶  '  rŸ  rF   Úfillc                 ó   — d„ }|S )Nc                 ó   — || d d  y rP  r…  )r  rŠ   s     rD   Ú	fill_implzarr_fill.<locals>.fill_impl2  s   € Øˆ‰AˆØrF   r…  )r  rŠ   rº  s      rD   Úarr_fillr»  /  s   € òð ÐrF   Údotc                 ó   — d„ }|S )Nc                 ó.   — t        j                  | |«      S rP  )r~  r¼  )r  Úothers     rD   Údot_implzarray_dot.<locals>.dot_impl;  s   € Ü�v‰v�c˜5Ó!Ð!rF   r…  )r  r¿  rÀ  s      rD   Ú	array_dotrÁ  9  s   € ò"ð €OrF   c                 óR   — t        | «      st        j                  d| z  «      ‚d„ }|S )NzCannot np.fliplr on %s typec                 óz   — t        j                  | «      }|j                  dk  rt        d«      ‚|d d …d d d…df   S )Nro  r8  r  .©r~  r  rq   r¸   ©r‘  r^  s     rD   ré   znp_flip_lr.<locals>.implG  s=   € Ü�J‰J�q‹Mˆð �6‰6�AŠ:ÜÐ4Ó5Ð5Ø’‘T�r�T˜3�ÑÐrF   rä  ©r‘  ré   s     rD   Ú
np_flip_lrrÇ  A  s/   € ô ˜AÔÜ× Ñ Ð!>ÀÑ!BÓCÐCò ð €KrF   c                 óR   — t        | «      st        j                  d| z  «      ‚d„ }|S )NzCannot np.flipud on %s typec                 ót   — t        j                  | «      }|j                  dk  rt        d«      ‚|d d d…df   S )NrH   zInput must be >= 1-d.r  .rÄ  rÅ  s     rD   ré   znp_flip_ud.<locals>.implX  s:   € Ü�J‰J�q‹Mˆð �6‰6�AŠ:ÜÐ4Ó5Ð5Ø‘�2��s�‰|ÐrF   rä  rÆ  s     rD   Ú
np_flip_udrÊ  R  s/   € ô ˜AÔÜ× Ñ Ð!>ÀÑ!BÓCÐCòð €KrF   c                 óü   ‡‡— t        |t        j                  «      st        j                  |«      ‚t        |j                  «      Št        j                  t        j                  ‰¬«      Š ‰|«      }ˆˆfd„}||fS )zY Creates a tuple of slices for np.flip indexing like
    `(slice(None, None, -1),) * sz` rè  c                 óú   •— d„ }t         j                  ‰g}t        j                  ‰g|¢­Ž }| j	                  t         j                  «      }| j                  ‰«      } |‰«      |g}	| j                  ||||	«      }
|
S )Nc           
      óZ   — |}t        | «      D ]  }t        ||t        d d d«      «      }Œ |S )Nr  )r9   r0   r@  )ÚlengthÚempty_tupler
  rn   s       rD   ré   z6_build_flip_slice_tuple.<locals>.codegen.<locals>.impln  s8   € ØˆCÜ˜6“]ò C�Ü# C¨¬E°$¸¸bÓ,AÓB‘ðCàˆJrF   )r   r�   r   r$   r¹   Úget_constant_undefrú  )r~   r>   r$   rý   ré   Úinner_argtypesÚ	inner_sigÚll_idx_typerÏ  Ú
inner_argsr	  r”   Ú
tuple_types              €€rD   rj  z(_build_flip_slice_tuple.<locals>.codegenm  s{   ø€ ò	ô  Ÿ*™* jÐ1ˆÜ×$Ñ$ ZÐA°.ÒAˆ	Ø×,Ñ,¬U¯Z©ZÓ8ˆà×0Ñ0°Ó<ˆÙ! $Ó'¨Ð5ˆ
à×&Ñ& w°°iÀÓLˆØˆ
rF   )	r˜   r   rŠ  r	   rš  r½   rë   r‡  Úslice3_type)r  Úszr\   rj  r”   rÕ  s       @@rD   Ú_build_flip_slice_tuplerØ  c  sf   ù€ ô �bœ%×.Ñ.Ô/Ü×(Ñ(¨Ó,Ð,Üˆr×ÑÓ €DÜ—‘¤e×&7Ñ&7¸tÔD€JÙ
�R‹.€Cõð" �ˆ<ÐrF   c                 óp   — t        | t        j                  «      st        j                  d| z  «      ‚d„ }|S )NzCannot np.flip on %s typec                 ó6   — t        | j                  «      }| |   S rP  )rØ  rq   )r‘  Úsls     rD   ré   znp_flip.<locals>.implˆ  s   € Ü$ Q§V¡VÓ,ˆØ�‰uˆrF   )r˜   r   r™   r	   rê   rÆ  s     rD   Únp_fliprÜ  �  s5   € ô �aœŸ™Ô%Ü× Ñ Ð!<¸qÑ!@ÓAÐAòð €KrF   c                 óØ  — t        | t        j                  t        j                  t        j                  f«      rdd„}|S t        |t        j
                  «      rdd„}|S t        |t        j                  «      r4t        |j                  j                  t        j
                  «      rdd„}|S t        |t        j                  «      r#t        d„ |j                  D «       «      rdd„}|S y y )Nc                 óX   — t        j                  t        j                  | «      ||¬«      S r|  )r~  Úarray_splitr  ©r  Úindices_or_sectionsrÞ   s      rD   ré   znp_array_split.<locals>.impl’  s$   € Ü—>‘>Ü—
‘
˜3“Ø#Øôð rF   c                 óâ   — t        | j                  |   |«      \  }}t        j                  t        j                  |dz   g|z  |g||z
  dz
  z  z   «      «      }t        j
                  | ||¬«      S )NrH   r}  )Údivmodrf   r~  ÚcumsumrÇ   rß  )r  rá  rÞ   r  rÉ  r£   s         rD   ré   znp_array_split.<locals>.implœ  sp   € Ü˜CŸI™I d™OÐ-@ÓA‰FˆAˆsÜ—i‘i¤§¡Ø�Q‘�˜#‘Ø�Ð*¨SÑ0°1Ñ4Ñ5ñ6ó!ó ˆGô —>‘> # w°TÔ:Ð:rF   c                 ó"  — t        | j                  «      }t        dd| j                  |«      }g }d}|D ]/  }t        ||t	        ||«      «      }|j                  | |   «       |}Œ1 |j                  | t        ||t	        d «      «         «       |S ©Nznp.splitrÞ   r   )r1   rq   rß   r0   r@  rj   ©r  rá  rÞ   Ú	slice_tupr
  Úprevr  r“   s           rD   ré   znp_array_split.<locals>.impl­  s�   € Ü.¨s¯x©xÓ8ˆIÜ! *¨f°c·h±hÀÓEˆDØˆCØˆDØ*ò �Ü# I¨t´U¸4ÀÓ5EÓF�Ø—
‘
˜3˜s™8Ô$Ø‘ðð �J‰J�sœ=¨°D¼%ÀÀTÓ:JÓKÑLÔMØˆJrF   c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrP  ©r˜   r   rš   )rR  r9  s     rD   rT  z!np_array_split.<locals>.<genexpr>½  s   è ø€ ÒP°”
˜1œeŸm™m×,ÑPùrU  c                 ó4  — t        | j                  «      }t        dd| j                  |«      }g }d}t        |«      D ]/  }t	        ||t        ||«      «      }|j                  | |   «       |}Œ1 |j                  | t	        ||t        d «      «         «       |S ræ  )r1   rq   rß   r   r0   r@  rj   rç  s           rD   ré   znp_array_split.<locals>.impl¿  s•   € Ü.¨s¯x©xÓ8ˆIÜ! *¨f°c·h±hÀÓEˆDØˆCØˆDÜ%Ð&9Ó:ò �Ü# I¨t´U¸4ÀÓ5EÓF�Ø—
‘
˜3˜s™8Ô$Ø‘ðð �J‰J�sœ=¨°D¼%ÀÀTÓ:JÓKÑLÔMØˆJrF   rò   )r˜   r   r‡  ÚListTyper   rš   ÚIterableTypeÚiterator_typer!  rˆ  r‰  ©r  rá  rÞ   ré   s       rD   Únp_array_splitrñ  �  sÀ   € ä�#œŸ™¬¯©¼¿
¹
ÐCÔDó	ð ˆäÐ%¤u§}¡}Ô5ó	;ð ˆô 	Ð&¬×(:Ñ(:Ô;ÜØ×-Ñ-×8Ñ8Ü�M‰Mô
ó

	ð ˆô 	Ð&¬¯©Ô4ÜÑPÐ6I×6OÑ6OÔPÔPó
	ð ˆð Qð 	5rF   c                 óÜ   — t        | t        j                  t        j                  t        j                  f«      rdd„}|S t        |t        j
                  «      rdd„}|S t        | ||¬«      S )Nc                 óX   — t        j                  t        j                  | «      ||¬«      S r|  )r~  Úsplitr  rà  s      rD   ré   znp_split.<locals>.implÓ  s   € Ü—8‘8œBŸJ™J s›OÐ-@ÀtÔLÐLrF   c                 óŠ   — t        | j                  |   |«      \  }}|dk7  rt        d«      ‚t        j                  | ||¬«      S )Nr   z0array split does not result in an equal divisionr}  )rã  rf   r¸   r~  rß  )r  rá  rÞ   r  rÉ  s        rD   ré   znp_split.<locals>.implÙ  sM   € Ü˜CŸI™I d™OÐ-@ÓA‰FˆAˆsØ�aŠxÜ ØFóð ô —>‘>ØÐ(¨tôð rF   r}  rò   )r˜   r   r‡  rí  r   rš   rñ  rð  s       rD   Únp_splitrö  Î  s[   € ô �#œŸ™¬¯©¼¿
¹
ÐCÔDó	Mð ˆäÐ%¤u§}¡}Ô5ó	ð ˆô ˜cÐ#6¸TÔBÐBrF   c                 ó,  — t        | t        j                  «      sd}t        j                  |«      ‚t        |t        j
                  t        j                  t        j                  t        j                  f«      sd}t        j                  |«      ‚d„ }|S )Nú#The argument "ary" must be an arrayú:The argument "indices_or_sections" must be int or 1d-arrayc                 óf   — | j                   dk  rt        d«      ‚t        j                  | |d¬«      S )Nro  z3vsplit only works on arrays of 2 or more dimensionsr   r}  ©rq   r¸   r~  rô  ©r  rá  s     rD   ré   znumpy_vsplit.<locals>.implô  s5   € Ø�8‰8�aŠ<Üð ?ó Að Aä�x‰x˜Ð0°qÔ9Ð9rF   ©r˜   r   r™   r	   rê   rš   r   r‡  ©r  rá  rÍ   ré   s       rD   Únumpy_vsplitrÿ  é  ós   € ä�cœ5Ÿ;™;Ô'Ø3ˆÜ× Ñ  Ó%Ð%äÐ)¬E¯M©M¼5¿;¹;Ü,1¯J©J¼¿¹ð,Hô IàKˆÜ× Ñ  Ó%Ð%ò:ð €KrF   c                 ó,  — t        | t        j                  «      sd}t        j                  |«      ‚t        |t        j
                  t        j                  t        j                  t        j                  f«      sd}t        j                  |«      ‚d„ }|S )Nrø  rù  c                 ó´   — | j                   dk(  rt        d«      ‚| j                   dkD  rt        j                  | |d¬«      S t        j                  | |d¬«      S )Nr   z3hsplit only works on arrays of 1 or more dimensionsrH   r}  rû  rü  s     rD   ré   znumpy_hsplit.<locals>.impl  sT   € Ø�8‰8�qŠ=Üð ?ó Að Aà�8‰8�aŠ<Ü—8‘8˜CÐ!4¸1Ô=Ð=Ü�x‰x˜Ð0°qÔ9Ð9rF   rý  rþ  s       rD   Únumpy_hsplitr  ý  ss   € ä�cœ5Ÿ;™;Ô'Ø3ˆÜ× Ñ  Ó%Ð%äÐ)¬E¯M©M¼5¿;¹;Ü,1¯J©J¼¿¹ð,Hô IàKˆÜ× Ñ  Ó%Ð%ò:ð €KrF   c                 ó,  — t        | t        j                  «      sd}t        j                  |«      ‚t        |t        j
                  t        j                  t        j                  t        j                  f«      sd}t        j                  |«      ‚d„ }|S )Nrø  rù  c                 óf   — | j                   dk  rt        d«      ‚t        j                  | |d¬«      S )Nr;  z3dsplit only works on arrays of 3 or more dimensionsro  r}  rû  rü  s     rD   ré   znumpy_dsplit.<locals>.impl  s3   € Ø�8‰8�aŠ<Üð *ó +ð +ä�x‰x˜Ð0°qÔ9Ð9rF   rý  rþ  s       rD   Únumpy_dsplitr    r   rF   c                 ó   — | |k  S )z7
    Trivial comparison function between two keys.
    r…  rÃ  s     rD   Ú
default_ltr  -  s   € ð ˆq‰5€LrF   c                 ó  — | |j                   |f}	 t        |   S # t        $ r` | dk(  r%t        j                  ||d¬«      }|j
                  }n(| dk(  r#t        j                  ||¬«      }|j                  }t        |<   |cY S w xY w)z6
    Get a sort implementation of the given kind.
    r+   T)ÚltÚ
is_argsortÚis_np_arrayr,   )r
  r  )	rr   Ú_sortsÚKeyErrorr+   Úmake_jit_quicksortÚrun_quicksortr,   Úmake_jit_mergesortÚrun_mergesort)r‚  Últ_implr  Úkeyrî  rÍ  s         rD   Úget_sort_funcr  4  s›   € ð �× Ñ  *Ð
,€CðÜ�c‰{ÐøÜò Ø�;ÒÜ×/Ñ/ØØ%Ø ô"ˆDð ×%Ñ%‰DØ�[Ò Ü×/Ñ/ØØ%ô'ˆDð ×%Ñ%ˆDØŒˆs‰ØŠðús   ‘ šA&BÂBc                 óŽ   — t        | t        j                  «      rt        S t        | t        j                  «      rt
        S t        S rP  )r˜   r   rZ  r   r$  r   r  rö  s    rD   Últ_implementationr  L  s0   € Ü�%œŸ™Ô%ÜÐÜ	�Eœ5Ÿ=™=Ô	)ÜÐäÐrF   z
array.sortc                 ó”   ‡— |j                   d   }t        dt        |j                  «      ¬«      Šˆfd„}| j	                  ||||«      S )Nr   r+   )r‚  r  c                 ó   •—  ‰| «       y rP  r…  ©r  Ú	sort_funcs    €rD   Úarray_sort_implz#array_sort.<locals>.array_sort_impl\  s
   ø€ á�#�rF   )rý   r  r  r|   rú  )r~   r>   r\   rý   rÎ  r  r  s         @rD   Ú
array_sortr  U  sG   ø€ à�h‰h�q‰k€Gä ;Ü&7¸¿¹Ó&FôH€Iôð ×#Ñ# G¨_¸cÀ4ÓHÐHrF   c                 óL   — t        | «      st        j                  d«      ‚d„ }|S )NzArgument "a" must be array-likec                 óF   — | j                  «       }|j                  «        |S rP  )r`  rî  )r  r	  s     rD   Únp_sort_implz"impl_np_sort.<locals>.np_sort_impli  s   € Ø�f‰f‹hˆØ�‰Œ
Øˆ
rF   rä  )r  r   s     rD   Úimpl_np_sortr!  c  s/   € ä˜AÔÜ× Ñ ð "1ó 2ð 	2òð ÐrF   zarray.argsortc                 óò   ‡	— |j                   \  }}t        |j                  t        |j                  «      d¬«      Š	ˆ	fd„}|j                  |j                   d d ¬«      }|d d }| j                  ||||«      S )NT)r‚  r  r  c                 ó   •—  ‰| «      S rP  r…  r  s    €rD   Úarray_argsort_implz)array_argsort.<locals>.array_argsort_imply  s   ø€ Ù˜‹~ÐrF   rH   r–  )rý   r  rë   r  r|   Úreplacerú  )
r~   r>   r\   rý   rÎ  r‚  r$  ÚinnersigÚ	innerargsr  s
            @rD   Úarray_argsortr(  p  s|   ø€ ð —H‘H�M€GˆTä 4×#5Ñ#5Ü&7¸¿¹Ó&FØ)-ô/€Iôð �{‰{ §¡¨¨! ˆ{Ó-€HØ�R�a�€IØ×#Ñ# GÐ-?Ø$,¨ió9ð 9rF   c                 óZ   — |j                   |j                   k7  s|j                  dk(  sJ ‚|S )Nr^  )rC  r	  )r~   r>   rO  rP  rŠ   s        rD   Úarray_to_arrayr*  …  s*   € ð �>‰>˜TŸ\™\Ò)¨T¯[©[¸CÒ-?Ð?Ð?Ø€JrF   c                 óz   — d„ }t        ||«      }| j                  ||||g«      }t        | ||j                  |«      S )Nc                 ó$   — | j                  d«      S rç   )rC  r‹  s    rD   ré   zarray0d_to_scalar.<locals>.impl”  s   € à�v‰v�a‹yÐrF   )r$   rú  r"   rÿ   ©r~   r>   rO  rP  rŠ   ré   r\   r	  s           rD   Úarray0d_to_scalarr.  Œ  sB   € òô �D˜&Ó
!€CØ
×
"Ñ
" 7¨D°#¸°uÓ
=€CÜ˜g w°·±ÀÓEÐErF   c                 óz   — d„ }t        ||«      }| j                  ||||g«      }t        | ||j                  |«      S )Nc                 ó   — t        | d   «      S r©  )r¾  r‹  s    rD   ré   z array_to_unichrseq.<locals>.implŸ  s   € Ü�1�R‘5‹zÐrF   )r$   rú  r    rÿ   r-  s           rD   Úarray_to_unichrseqr1  �  sB   € òô �D˜&Ó
!€CØ
×
"Ñ
" 7¨D°#¸°uÓ
=€CÜ˜W g¨s¯©ÀÓDÐDrF   c                 ó   — t         ‚)zR
    An intrinsic returning a derived array with the given shape and strides.
    rÚ   )r  rf   r¬   s      rD   Úreshape_uncheckedr3  ª  r¯  rF   c                 ó   ‡— d„ Šˆfd„}|S )Nc                 ó^   — t        | t        j                  «      xr t        d„ | D «       «      S )Nc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrP  rë  r>  s     rD   rT  z>type_reshape_unchecked.<locals>.check_shape.<locals>.<genexpr>µ  s   è ø€ Ò@°Q”J˜q¤%§-¡-×0Ñ@ùrU  )r˜   r   r\  r‰  ©rf   s    rD   r$  z+type_reshape_unchecked.<locals>.check_shape³  s*   € Ü˜5¤%§/¡/Ó2ò AÜÑ@¸%Ô@Ó@ð	BrF   c                 óÄ   •— t        | t        j                  «      sy  ‰|«      r ‰|«      sy t        |«      t        |«      k7  ry | j	                  t        |«      d¬«      S )Nr^  r_  )r˜   r   r™   r    r`  )r  rf   r¬   r$  s      €rD   Útyperz%type_reshape_unchecked.<locals>.typer·  sP   ø€ Ü˜!œUŸ[™[Ô)ØÙ˜5Ô!©°WÔ)=ØÜˆu‹:œ˜W›Ò%ØØ�v‰vœ3˜u›:¨cˆvÓ2Ð2rF   r…  )r~   r9  r$  s     @rD   Útype_reshape_uncheckedr:  ±  s   ø€ òBô3ð €LrF   c                 ó†  — |j                   d   }|j                  } t        |«      | ||d   «      } t        |«      | |«      }t        j                  ||d   «      }t        j                  ||d   «      }	t        ||j                  ||	|j                  |j                  ¬«       |j                  «       }
t        | |||
«      S )Nr   rH   ro  r÷  )rý   rÿ   ry   r
   rÀ   rÕ   r›   r­   r«   r  r    )r~   r>   r\   rý   r×   rY  r  r
  rf   r¬   r	  s              rD   Úimpl_shape_uncheckedr<  Ã  s³   € à�H‰H�Q‰K€EØ�O‰O€Eà
Œ*�UÓ
˜G W¨d°1©gÓ
6€CØ
Œ*�UÓ
˜G WÓ
-€CÜ× Ñ  ¨$¨q©'Ó2€EÜ×"Ñ" 7¨D°©GÓ4€Gä�3ØŸ™ØØ"ØŸL™LØŸ;™;õð �-‰-‹/€CÜ˜W g¨u°cÓ:Ð:rF   c                 óÜ   ‡‡— |d t         j                  fv rt        d„ «       Šnt        d„ «       Š|d t         j                  fv rt        j                  d«      ‚t        d„ «       Šdˆˆfd„	}|S )Nc                 ó   — | j                   S rP  r7  ©rX  rf   s     rD   r}  zas_strided.<locals>.get_shapeÜ  s   € à—7‘7ˆNrF   c                 ó   — |S rP  r…  r?  s     rD   r}  zas_strided.<locals>.get_shapeà  s   € àˆLrF   z,as_strided() strides argument cannot be Nonec                 ó   — |S rP  r…  )rX  r¬   s     rD   Úget_strideszas_strided.<locals>.get_stridesë  s   € àˆNrF   c                 ó>   •— t        |  ‰| |«       ‰| |«      «      } | S rP  )r3  )rX  rf   r¬   r}  rB  s      €€rD   Úas_strided_implz#as_strided.<locals>.as_strided_implï  s$   ø€ Ü˜a¡¨1¨eÓ!4±kÀ!ÀWÓ6MÓNˆØˆrF   rý  )r   r'  r&   r	   rê   )rX  rf   r¬   rD  r}  rB  s       @@rD   Ú
as_stridedrE  Ù  s€   ù€ à�”u—z‘zÐ"Ñ"Ü	ñ	ó 
ñ	ô 
ñ	ó 
ð	ð �4œŸ™Ð$Ñ$ô
 × Ñ Ð!OÓPÐPä	ñ	ó 
ð	öð ÐrF   c                 ó˜  ‡‡‡‡— t        |t        j                  «      rOt        t	        | j
                  dz   «      «      Št        t	        | j
                  dz   «      «      Št        d„ «       Šn´t        |t        j                  «      r…t        |j                  t        j                  «      rat        t	        | j
                  t        |«      z   «      «      Št        t	        | j
                  t        |«      z   «      «      Št        d„ «       Šnt        j                  d«      ‚t        |«      rt        d„ «       Šn‡t        |t        j                  «      rt        d„ «       Šn`t        |t        j                  «      r1t        |j                  t        j                  «      rt        d„ «       Šnt        j                  d«      ‚d
ˆˆˆˆfd	„	}|S )NrH   c                 ó   — | fS rP  r…  ©Úwindow_shapes    rD   Úget_window_shapez-sliding_window_view.<locals>.get_window_shape   s
   € à �?Ð"rF   c                 ó   — | S rP  r…  rH  s    rD   rJ  z-sliding_window_view.<locals>.get_window_shape	  s   € àÐrF   z4window_shape must be an integer or tuple of integersc                 ó*   — t        t        |«      «      S rP  )r¼   r9   ©rI  rÞ   rq   s      rD   Úget_axisz%sliding_window_view.<locals>.get_axis  s   € äœ˜d›Ó$Ð$rF   c                 ó    — t        dd||«      gS ©NÚsliding_window_viewrÞ   ©rß   rM  s      rD   rN  z%sliding_window_view.<locals>.get_axis  s   € ô Ð4°f¸dÀDÓIðð rF   c           	      óD   — |D �cg c]  }t        dd||«      ‘Œ c}S c c}w rP  rR  )rI  rÞ   rq   r  s       rD   rN  z%sliding_window_view.<locals>.get_axis!  s0   € ð "ö#Øô #Ð#8¸&À$ÈÕJò #ð #ùò #s   …z2axis must be None, an integer or tuple of integersc                 óP  •—  ‰|«      } ‰
||| j                   «      }t        |«      t        |«      k7  rt        d«      ‚‰}‰}t        | j                   «      D ]6  }t	        ||| j
                  |   «      }t	        ||| j                  |   «      }Œ8 | j                   }t        ||«      D ]l  \  }}|dk  rt        d«      ‚||   |k  rt        d«      ‚||   |z
  dz   }t	        |||«      }t	        |||«      }t	        ||| j                  |   «      }|dz  }Œn t        | ||«      }	|	S )Nz2Must provide matching length window_shape and axisr   z-`window_shape` cannot contain negative valuesz4window_shape cannot be larger than input array shaperH   )	rq   r    r¸   r9   r0   rf   r¬   r¡   r3  )rX  rI  rÞ   Ú	out_shapeÚout_stridesrn   rö   r‰  ÚtrimmedrE  rN  rJ  Úshape_bufferÚstride_buffers             €€€€rD   Úsliding_window_view_implz5sliding_window_view.<locals>.sliding_window_view_impl+  sP  ø€ Ù'¨Ó5ˆÙ˜ d¨A¯F©FÓ3ˆÜˆ|Ó¤ D£	Ò)ÜØDóð ð
 !ˆ	Ø#ˆÜ�q—v‘v“ò 	FˆAÜ% i°°A·G±G¸A±JÓ?ˆIÜ'¨°Q¸¿	¹	À!¹ÓE‰Kð	Fð �F‰FˆÜ˜4 Ó.ò 	‰GˆB�Ø�QŠwÜ ØCóð ð ˜‰}˜sÒ"Ü ØJóð ð   ‘m cÑ)¨AÑ-ˆGÜ% i°°WÓ=ˆIÜ% i°°CÓ8ˆIÜ'¨°Q¸¿	¹	À"¹ÓFˆKØ�‰F‰Að	ô$ !  I¨{Ó;ˆØˆrF   rP  )r˜   r   rš   r»   r9   rq   r&   r‡  r|   r    r	   rê   r   )rX  rI  rÞ   rZ  rN  rJ  rX  rY  s       @@@@rD   rQ  rQ  ö  sx  û€ ô �,¤§¡Ô.ÜœU 1§6¡6¨A¡:Ó.Ó/ˆÜœe A§F¡F¨Q¡JÓ/Ó0ˆä	ñ	#ó 
ñ	#ô �\¤5§>¡>Ô
2Ü�|×)Ñ)¬5¯=©=Ô9ÜœU 1§6¡6¬C°Ó,=Ñ#=Ó>Ó?ˆÜœe A§F¡F¬S°Ó->Ñ$>Ó?Ó@ˆä	ñ	 ó 
ñ	 ô × Ñ ØBó
ð 	
ô
 �4ÔÜ	ñ	%ó 
ñ	%ô 
�Dœ%Ÿ-™-Ô	(Ü	ñ	ó 
ñ	ô
 �Tœ5Ÿ>™>Ô
*Ü�t—z‘z¤5§=¡=Ô1Ü	ñ	#ó 
ñ	#ô
 × Ñ Ø@ó
ð 	
÷%ð %ðN $Ð#rF   c                 óB   — t        | t        j                  «      rd„ }|S y )Nc                 ó²   — | j                   dk(  rt        dk  ryt        d«      ‚| j                   dk(  rt        | j	                  d«      «      S t        d«      ‚)Nr   )ro  ro  FziThe truth value of an empty array is ambiguous. Use `array.size > 0` to check that an array is not empty.rH   z[The truth value of an array with more than one element is ambiguous. Use a.any() or a.all())r”   r   r¸   r]  rC  r{  s    rD   ré   zol_bool.<locals>.implX  s_   € Ø�x‰x˜1Š}Ü  6Ò)Ø ä$ð 'Jó Lð Lð —‘˜Q’Ü˜CŸH™H Q›KÓ(Ð(ä ð #-ó /ð /rF   rQ  r|  s     rD   Úol_boolr]  U  s!   € ä�#”u—{‘{Ô#ò	/ð ˆð $rF   c                 óˆ  ‡‡— t        |t        t        j                  f«      st	        j
                  d«      ‚t        |t        t        j                  f«      st	        j
                  d«      ‚t        | t        j                  «      st	        j
                  d«      ‚| j                  Št        t        ‰«      «      Šˆˆfd„}|S )Nz.The second argument "axis1" must be an integerz-The third argument "axis2" must be an integerú'The first argument "a" must be an arrayc                 óœ   •— t        dd‰|«      }t        dd‰|«      }t        ‰||«      }t        |||«      }t        j                  | |«      S )Nznp.swapaxesÚaxis1Úaxis2)rß   r0   r~  r  )r  ra  rb  Ú
axes_tupleÚ	axes_listrq   s       €€rD   ré   znumpy_swapaxes.<locals>.implx  sP   ø€ Ü˜}¨g°t¸UÓCˆÜ˜}¨g°t¸UÓCˆÜ" 9¨e°UÓ;ˆ
Ü" :¨u°eÓ<ˆ
Ü�|‰|˜A˜zÓ*Ð*rF   )
r˜   r½   r   rš   r	   rê   r™   rq   r»   r9   )r  ra  rb  ré   rd  rq   s       @@rD   Únumpy_swapaxesre  i  sž   ù€ ä�eœc¤5§=¡=Ð1Ô2Ü× Ñ ð "+ó ,ð 	,ä�eœc¤5§=¡=Ð1Ô2Ü× Ñ ð "+ó ,ð 	,ä�aœŸ™Ô%Ü× Ñ Ð!JÓKÐKð �6‰6€DÜ”e˜D“kÓ"€Iõ+ð €KrF   c                 ó^  ‡‡— t        | t        j                  «      st        j                  d«      ‚t        |t        j
                  «      sSt        |t        j                  «      r$t        |j                  t        j
                  «      st        j                  d«      ‚t        |t        j
                  «      sSt        |t        j                  «      r$t        |j                  t        j
                  «      st        j                  d«      ‚| j                  Šd| j                  z  Šˆˆfd„}|S )Nr_  zGThe second argument "source" must be an integer or sequence of integerszKThe third argument "destination" must be an integer or sequence of integersr™  c                 óœ  •— t        dd‰
|«      }t        dd‰
|«      }t        |«      t        |«      k7  rt        d«      ‚t        | j                  «      D �cg c]	  }||vsŒ|‘Œ }}t        t        ||«      «      D ]  \  }}|j                  ||«       Œ ‰}t        |«      D ]  \  }}	t        |||	«      }Œ | j                  |«      S c c}w )Nznp.moveaxisÚsourceÚdestinationzL`source` and `destination` arguments must have the same number of parameters)rî   r    r¸   r9   rq   r  r¡   rì  rô   r0   r  )r  rh  ri  rü  Ú
order_listri  rD  rO  rn   Úorq   Ú
order_inits             €€rD   ré   znumpy_moveaxis.<locals>.impl   sá   ø€ Ü% m°X¸tÀVÓLˆÜ*Ø˜=¨$°ó
ˆô ˆv‹;œ#˜kÓ*Ò*Üð0óð ô
 "' q§v¡v£ÖB˜A°!¸6²/’aÐBˆ
ÐBä¤ K°Ó 8Ó9ò 	)‰IˆD�#Ø×Ñ˜d CÕ(ð	)ð ˆÜ˜jÓ)ò 	/‰DˆAˆqÜ! %¨¨AÓ.‰Eð	/ð �{‰{˜5Ó!Ð!ùò Cs   Á	C	Á!C	)	r˜   r   r™   r	   rê   rš   rØ  r|   rq   )r  rh  ri  ré   rq   rl  s       @@rD   Únumpy_moveaxisrm  ‚  sÛ   ù€ ä�aœŸ™Ô%Ü× Ñ Ð!JÓKÐKä�6œ5Ÿ=™=Ô)ä�vœuŸ~™~Ô.Ü˜6Ÿ<™<¬¯©Ô7ô × Ñ ð&ó
ð 	
ô
 	�;¤§¡Ô.ä�{¤E§N¡NÔ3Ü˜;×,Ñ,¬e¯m©mÔ<ô × Ñ ð&ó
ð 	
ð
 �6‰6€DØ˜Ÿ™‘€Jõ"ð, €KrF   c                 ó(  — t        dd| j                  |«      }t        | j                  «      }d||<   t	        t        ||j                  «      «      D ]7  \  }\  }}	|dk(  r|	}
n|	dk(  r|}
n||	k7  rt        d«      ‚|}
t        |||
«      }Œ9 t        ||| j                  |   «      }t        j                  | |«      } t        j                  ||«      }|}t        |«      dkD  r3t        t        |«      «      D ]  }t        ||| j                  |   «      }Œ |}t        |«      dkD  r9t        t        |«      «      D ]"  }t        ||| j                  |dz   |z      «      }Œ$ |j                  |   }t        j                  ||fz   |z   | j                  «      }t        d d d «      f}t        j                  |«      D ]X  }t        j                  |«      D ]>  }| ||z   |z      }|||z   |z      }|||z   |z      }t        |«      D ]  }|||      ||<   Œ Œ@ ŒZ |S )Nznp.take_along_axisrÞ   rH   z*`arr` and `indices` dimensions don't matchr   )rß   rq   r¼   rf   rô   r¡   r¸   r0   r~  r„  r    r9   rø  r|   r@  r”  )r  r£   rÞ   ÚNi_origÚNk_origÚindices_broadcast_shapeÚ	arr_shapern   Úd1Úd2Únew_valÚarr_broadcast_shapeÚNiÚNkÚJr
  Únp_s_ÚiiÚkkÚa_1dÚ
indices_1dÚout_1dr8  s                          rD   Ú_take_along_axis_implr€  ¹  s4  € ô Ð.°¸¿¹À$ÓG€Dô �S—Y‘Y“€IØ€Iˆd�OÜ ¤ Y°·±Ó!>Ó?ò 
‰ˆ‰8ˆB�Ø�Š7Ø‰GØ�1ŠWØ‰Gà�RŠxÜ Ø@óð ð ˆGÜ"/Ø# Q¨ó#
Ñð
ô (Ø  s§y¡y°¡óÐô �/‰/˜#Ð2Ó
3€CÜ�o‰o˜gÐ'>Ó?€Gà	€BÜ
ˆ7ƒ|�aÒÜ”s˜2“w“ò 	4ˆAÜ˜r 1 c§i¡i°¡lÓ3‰Bð	4à	€BÜ
ˆ7ƒ|�aÒÜ”s˜2“w“ò 	?ˆAÜ˜r 1 c§i¡i°°q±¸1±Ñ&=Ó>‰Bð	?ð 	�‰�dÑ€AÜ
�(‰(�2˜˜‘9˜r‘> 3§9¡9Ó
-€Cä�4˜˜tÓ$Ð&€Eä�j‰j˜‹nò 0ˆÜ—*‘*˜R“.ò 	0ˆBØ�r˜E‘z B‘Ñ'ˆDØ   e¡¨b¡Ñ1ˆJØ˜˜e™ b™Ñ)ˆFÜ˜1“Xò 0�Ø  ¨A¡Ñ/��q’	ñ0ñ		0ð0ð €JrF   c                 ó˜  ‡‡‡— t        | t        j                  «      st        j                  d«      ‚t        |t        j                  «      st        j                  d«      ‚t        |j
                  t        j                  «      st        j                  d«      ‚t        |«      rd}n| j                  }||j                  k7  rt        j                  d«      ‚t        t        |j                  «      «      Št        |«      rˆfd„}|S t        |d«       t        |t        j                  «      st        j                  d«      ‚|j                  }|d	k  r| j                  |z   }|d	k  s|| j                  k\  rt        j                  d
«      ‚t        t        |«      «      Št        t        |dz   | j                  «      «      Šˆˆˆfd„}|S )Nz)The first argument "arr" must be an arrayz.The second argument "indices" must be an arrayz'The indices array must contain integersrH   z;`indices` and `arr` must have the same number of dimensionsc                 ó@   •— t        | j                  «       |ddd‰«      S )Nr   r…  )r€  r…  )r  r£   rÞ   rq  s      €rD   Útake_along_axis_implz1arr_take_along_axis.<locals>.take_along_axis_impl
  s%   ø€ Ü(¨¯©«¸ÀÀBÈØ)@óBð BrF   rÞ   zaxis must be a literal valuer   zaxis is out of boundsc                 ó$   •— t        | ||‰‰‰«      S rP  )r€  )r  r£   rÞ   rw  rx  rq  s      €€€rD   rƒ  z1arr_take_along_axis.<locals>.take_along_axis_impl  s   ø€ Ü(¨¨g°t¸RÀØ)@óBð BrF   )r˜   r   r™   r	   rê   r|   rš   r   rq   r»   r9   r   rŠ  r?  rë   )r  r£   rÞ   Úarr_ndimrƒ  rw  rx  rq  s        @@@rD   Úarr_take_along_axisr†  õ  su  ú€ ä�cœ5Ÿ;™;Ô'Ü× Ñ Ð!LÓMÐMÜ�gœuŸ{™{Ô+Ü× Ñ Ø<ó>ð 	>ä�g—m‘m¤U§]¡]Ô3Ü× Ñ Ð!JÓKÐKÜ�4ÔØ‰à—8‘8ˆØ�7—<‘<Òä× Ñ ØIó
ð 	
ô $¤E¨'¯,©,Ó$7Ó8ÐÜ�4Ôô	Bð(  Ðô! 	˜˜vÔ&Ü˜$¤× 4Ñ 4Ô5Ü×(Ñ(Ð)GÓHÐHØ×!Ñ!ˆØ�!Š8Ø—8‘8˜d‘?ˆDà�!Š8�t˜sŸx™xÒ'Ü×(Ñ(Ð)@ÓAÐAä”5˜“;ÓˆÜ”5˜ ™ 3§8¡8Ó,Ó-ˆö	Bð  ÐrF   c                 ó†  — t        | t        j                  «      rut        | t        j                  «      rd	d„}|S t        | t        j                  «      rd	d„}|S t        | t        j
                  «      rd	d„}|S t        j                  d«      ‚t        | «      r“t        | j                  t        j                  «      rd	d„}|S t        | j                  t        j                  «      rd	d„}|S t        | j                  t        j
                  «      rd	d„}|S t        j                  d«      ‚t        j                  d«      ‚)
Nc                 ó   — | S rP  r…  ©rX  r`  ÚnanÚposinfÚneginfs        rD   ré   znan_to_num_impl.<locals>.impl&  ó   € Ø�rF   c                 ó@  — |�|n't        j                  t        | «      «      j                  }|�|n't        j                  t        | «      «      j                  }t        j
                  | «      r|S t        j                  | «      r|S t        j                  | «      r|S | S rP  )r~  Úfinfor:   r•  rž  rí  ÚisneginfÚisposinf)rX  r`  rŠ  r‹  rŒ  Úmin_infÚmax_infs          rD   ré   znan_to_num_impl.<locals>.impl*  s‰   € ð Ð)ñ äŸ™¤$ q£'Ó*×.Ñ.ð ð Ð)ñ äŸ™¤$ q£'Ó*×.Ñ.ð ô —8‘8˜A”;Ø�JÜ—[‘[ ”^Ø"�NÜ—[‘[ ”^Ø"�NØ�rF   c                 ó¦   — t        j                  | j                  |||¬«      }t        j                  | j                  |||¬«      }t	        ||«      S )N)rŠ  r‹  rŒ  )r~  Ú
nan_to_numr)  r+  Úcomplex)rX  r`  rŠ  r‹  rŒ  r�  rÄ  s          rD   ré   znan_to_num_impl.<locals>.impl>  s>   € Ü—M‘M !§&¡&¨c¸&ÈÔP�Ü—M‘M !§&¡&¨c¸&ÈÔP�Ü˜q !“}Ð$rF   z4Only Integer, Float, and Complex values are acceptedc                 ó   — | S rP  r…  r‰  s        rD   ré   znan_to_num_impl.<locals>.implJ  r�  rF   c                 ó  — |�|n(t        j                  | j                  «      j                  }|�|n(t        j                  | j                  «      j                  }t        j
                  | «      }|rt        j                  |«      n|}|j                  }	t        |j                  «      D ]\  }
t        j                  |	|
   «      r||	|
<   Œ!t        j                  |	|
   «      r||	|
<   Œ?t        j                  |	|
   «      sŒX||	|
<   Œ^ |S rP  )r~  r�  r|   r•  rž  r  r`  rÍ  r9   r”   rí  r�  r‘  )rX  r`  rŠ  r‹  rŒ  r’  r“  Úx_ÚoutputÚoutput_flatrn   s              rD   ré   znan_to_num_impl.<locals>.implM  så   € ð Ð)ñ äŸ™ !§'¡'Ó*×.Ñ.ð ð Ð)ñ äŸ™ !§'¡'Ó*×.Ñ.ð ô —Z‘Z “]�Ù(,œŸ™ œ°"�à$Ÿk™k�Ü˜vŸ{™{Ó+ò 1�AÜ—x‘x ¨A¡Ô/Ø),˜ AšÜŸ™ [°¡^Ô4Ø)0˜ AšÜŸ™ [°¡^Õ4Ø)0˜ Ašð1ð �rF   c                 óò   — t        j                  | «      }|rt        j                  |«      n|}t        j                  |j                  d|||¬«       t        j                  |j
                  d|||¬«       |S )NF)r`  rŠ  r‹  rŒ  )r~  r  r`  r•  r)  r+  )rX  r`  rŠ  r‹  rŒ  r™  rš  s          rD   ré   znan_to_num_impl.<locals>.implf  sg   € Ü—Z‘Z “]�Ù(,œŸ™ œ°"�ä—‘Ø—K‘KØØØ!Ø!õô —‘Ø—K‘KØØØ!Ø!õð �rF   z4The first argument must be a scalar or an array-like©Tg        NN)
r˜   r   r§  rš   rZ  r$  r	   rê   r   r|   )rX  r`  rŠ  r‹  rŒ  ré   s         rD   Únan_to_num_implrž  !  s  € ä�!”U—\‘\Ô"Ü�aœŸ™Ô'óðt €Kôo ˜œ5Ÿ;™;Ô'óðl €KôG ˜œ5Ÿ=™=Ô)ó%ðD €Kô{ ×$Ñ$ØFóð ô 
˜!Ô	Ü�a—g‘gœuŸ}™}Ô-óðl €Kôi ˜Ÿ™¤§¡Ô-óðf €Kô7 ˜Ÿ™¤§¡Ô/óð4 €Kô ×$Ñ$ØFóð ô × Ñ ð ".ó /ð 	/rF   rP  r  r™  rÇ  rò   )Frý  r�  (Á  r„  rI  rc  rÐ  r=  Úllvmliter   Úllvmlite.irr   Únumpyr~  Únumbar   r   Ú
numba.corer   r   r	   r
   r   Únumba.np.numpy_supportr   r   r   r   r   r   r   r   r   r   r   r   r   Únumba.core.imputilsr   r   r   r   r   r   r   r    r!   r"   r#   Únumba.core.typingr$   Únumba.core.typesr%   Únumba.core.extendingr&   r'   r(   r)   r*   Ú
numba.miscr+   r,   Únumba.cpythonr-   Únumba.cpython.charseqr.   r/   Únumba.cpython.unsafe.tupler0   r1   r2   Únumba.core.typing.npydeclr3   rã  r4   rä  r5   r6   r7   rE   rJ   ry   r€   r‡   r‹   r–   rž   r¤   rÕ   rØ   rß   rì   rî   rú   r  r  r  ÚArrayIteratorÚBORROWEDr*  rC  r  rI  rÑ  rš   r1  rK  rM  r\  rZ  ra  ÚAnyra  r    rf  r™   rm  rr  rH  rt  r‡  r¢  r¯  r»  rÐ  rã  rW  r  r  r  r!  r)  rG  rP  r\  rd  rm  rr  r|  r�  r„  r�  r“  Úbroadcast_shapesr¢  r“  rª  r®  r¶  rÁ  r^  rí  rñ  rô  r  ÚVarArgr  r  r  rï  r-  r  Ú	geomspacer6  Úrot90r@  rO  rW  r_  ra  re  rg  Úresizerv  rj   r  rˆ  rm  r�  r�  rž  r£  rÄ  rÃ  rÈ  rá  rf   ræ  r”   ré  Úuniqueró  r  r  r÷  r  r  r  r  r%  r#  r&  Ú
MemoryViewr)  r+  r-  r/  r1  r4  r8  r<  rA  rD  rJ  rG  rM  rë  r   rQ  rX  r\  rZ  r^  r`  rg  rk  re  r}  r�  ÚDTypeÚNumberClassr†  r’  r”  rˆ  r›  r   r¤  rŠ  r¨  r°  r²  r¶  r¼  ÚBytesrÀ  Úis_rÇ  rË  rÑ  rÖ  râ  rä  rI  rS  rÏ  r{  rw  r}  r€  r‚  r„  rÓ  rˆ  r†  rŠ  r”  rŽ  r�  rŒ  r’  ré  r”  ÚNumpyNdIterTyper–  Úeqrš  r  rµ  r¢  r³  rÈ  rÌ  ri  rÒ  rÜ  rø  rß  ræ  rê  r’  rí  rð  rô  rn  rù  rû  rþ  r   r  r  r  r°  r  r  r  r  r  r  r   Úeyer&  Údiagr.  r£   r3  Údiagflatr:  rB  rC  rU  r`  r1  rt  r  r|  r€  r‚  r„  r`  r‰  r—  r›  rž  r¤  r§  r©  r¬  rµ  r¸  rÔ  rÖ  rØ  râ  rç  rà  rì  rõ  rú  r  r  r  r  r  rÇ   r  r  r$  r'  r+  r.  r1  r>  r5  Ú
atleast_1drG  Ú
atleast_2drJ  Ú
atleast_3drM  r[  rd  rk  rm  rq  rp  rw  ry  r�  Úcolumn_stackr†  rˆ  rŒ  Ústackr�  r’  rš  r£  rž  r¨  Úvstackr«  Ú	row_stackr³  Údstackr¶  r»  rÁ  r=  rÇ  r>  rÊ  rØ  ÚfliprÜ  rß  rñ  rô  rö  Úvsplitrÿ  Úhsplitr  Údsplitr  r  r  r  r  r  rî  r!  Úargsortr(  r*  ÚUnicodeCharSeqrZ  r$  ræ  ÚNPTimedeltaÚ
NPDatetimer.  r1  r3  Útype_callabler:  r<  ÚlibÚstride_tricksrE  rQ  r]  r]  r<  re  Úmoveaxisrm  r€  Útake_along_axisr†  r•  rž  r…  rF   rD   ú<module>rÖ     sŒ  ðñó
 Û Û Û å Ý  ã ç *ß @Õ @÷;÷ ;÷ ;÷ PÑ O÷*÷ *÷ *ñ *õ (Ý *÷Aõ Aç +Ý !ß Bß LÝ 5÷Eõ Eò#ò6ò9òx(ò-òMò	ò
ò
 ð ôBòJHò& ñ
 
ˆ.Óñó ðò, ñ
 
Ð
Óñ,ó  ð,ñ^ ˆy˜%Ÿ,™,Ó'ñó (ðò.;ñ* ˆz˜5×.Ñ.Ó/Ùˆw×ÑÓ ñ-ó !ó 0ð-ð6  $ôA4òHò ;ñ* ˆx×Ñ §¡¨u¯}©}Ó=Ùˆx×Ñ §¡¨u¯©Ó?Ùˆx×Ñ §¡¨u¯~©~Ó>ñEó ?ó @ó >ðEñ" ˆx×Ñ §¡¨u¯©Ó?ñEó @ðEñ0 ˆx×Ñ §¡¨u¯y©y¸%¿)¹)ÓDñ%6ó Eð%6ñP ˆs�E—L‘LÓ!ñFó "ðFñ ˆ|˜UŸ[™[Ó)ñ8ó *ð8ð �6ÒÙ�? E§K¡K°·±Ó;ñ)ó <ð)ô(/"ˆfô /"ôd/-�Gô /-ôd�Wô ô>:-˜'ô :-ôzN-˜'ô N-ôbB-�7ô B-ôJL�6ô Lò^(GñV ˆx×Ñ §¡¨u¯{©{Ó;ñ;ó <ð;ò&'òTòHò
ò:$òz"òJ!ò. ð4 ñó ðð, ñó ðð" ñ5ó ð5ò>-ñ 
ˆ"�/Š/Óñ'&ó ð'&ðT ñ3ó ð3ñ  
ˆ"×
Ò
Óñ%ó ð%ñP 
ˆ"×
Ò
Óñ6ó ð6òrñ 
Ð
"¨9Ô5ñ
ó 6ð
ñ 
Ð
"¨5Ô1ñó 2ðò*U%òvñ& Ð  %§+¡+Ó.ñ;ó /ð;ò
ñ Ð  %§+¡+¨u¯©Ó?ñ3Eó @ð3Eñl Ð  %§+¡+¨|¨u¯|ª|¸E¿I¹IÓ/FÓGñFó HðFñ
 
ˆ"�,Š,Óóó ðñ ˆu�{‰{˜CÓ ñ9ó !ð9ñ& 
ˆ"�+Š+Óóó ðñ 
ˆ"�,Š,ÓóIó ðIñX 
ˆ"�(Š(Óóó ðò4!òH;ñ< ˆ §¡¨U¯_©_Ó=ñ=Eó >ð=Eñ@ ˆ §¡¨\¨U¯\ª\¸%¿)¹)Ó-DÓEñ>ó Fð>ð
 �6ÒÙˆb�jŠjÓñó ññ
 ˆb�jŠjÓñó ðñ 
ˆ"�)Š)Óñ+ó ð+ñ\ 
ˆ"�)Š)Óóó ðñ2 ˆ}˜eŸk™kÓ*ñó +ðñ, ˆr�xŠx˜Ÿ™Ó%ñGó &ðGñ ˆ §¡Ó,ñó -ðð ñ
ó ð
ð ñó ðñ 
ˆ"�'Š'Óóvó ðvñr �—‘˜fÓ%óó &ðò{ñ| 
ˆ"�(Š(Óñó ðñ 
ˆ"�'Š'Óñó ðñ 
ˆ"�)Š)Óñó ðñ 
ˆ"�)Š)Óñ)1ó ð)1ðX ñó ðð" €×Ñ˜5Ÿ;™;¨Ó1ñó 2ðð ñó ðò	ñ 
Ð
 9Ô-ñ(ó .ð(ñV ˆ|˜UŸ[™[¨%¯/ª/Ó:ñ$Eó ;ð$EñT ˆu�{‰{˜GÓ$ñ:ó %ð:ñ
 ˆu�{‰{˜GÓ$Ùˆu×Ò Ó)ñ:ó *ó %ð:ñ ˆu�{‰{˜IÓ&Ùˆu×Ò Ó+ñ:ó ,ó 'ð:ñ ˆu�{‰{˜FÓ#Ùˆu×Ò Ó(ñ:ó )ó $ð:ñ
 ˆu�{‰{˜FÓ#ñ:ó $ð:ñ ˆu�{‰{˜JÓ'Ùˆu×Ò Ó,ñ:ó -ó (ð:ñ ˆu�{‰{˜HÓ%Ùˆu×Ò Ó*ñ:ó +ó &ð:ñ ˆu×Ò Ó.ñ:ó /ð:ñ
 ˆu×Ò Ó0ñ:ó 1ð:ñ
 ˆu×Ò Ó0ñ:ó 1ð:ñ
 ˆu×Ò Ó,ñ:ó -ð:ñ ˆu�{‰{˜HÓ%ñ	9ó &ð	9ñ ˆu× Ò  &Ó)ñ:ó *ð:ñ ˆE×Ò˜uŸ~š~Ó.ÙˆE×Ò˜uŸ}š}Ó-ñ;ó .ó /ð;òñ4 ˆu�{‰{˜GÓ$ñ8ó %ð8ñ ˆu×Ò Ó.Ùˆu×Ò Ó0ñ	:ó 1ó /ð	:ñ ˆu×Ò Ó0ñ
:ó 1ð
:ñ  ˆu�{‰{˜FÓ#ñQó $ðQñ ˆu�{‰{˜FÓ#ñQó $ðQò 4Mñn �—‘˜fÓ%Ù�—‘˜kÓ*ñó +ó &ðò%ð
 #�ˆe�kŠk˜6Ó " :Ô .Ø "�ˆe�kŠk˜6Ó " :Ô .ñ Ð ×!2Ò!2°E·I±IÓ>ñ(ó ?ð(ñ. �u—{‘{Ó#ñ4;ó $ð4;ñn Ð §¡¨e×.AÑ.AÓBñOó CðOñ �u—|’|Ó$ñ$=ó %ð$=ñN �u—|’|Ó$ñDó %ðDñ: Ð §¢¨u×/BÑ/BÓCñAó DðAñ Ð §¢¨u×/CÒ/CÓDñEó EðEñ Ð §¢¨u×/BÑ/BÀEÇIÁIÓNñ	%ó Oð	%ñ Ð §¢¨u×/CÒ/CÀUÇYÁYÓOñ
%ó Pð
%ñ" �—‘Óñ;ó ð;ñ �—’Óñ3ó ð3ñ �—’Óñ9ó ð9ñ ˆx�|Š|˜UŸ[™[¨%¯+©+Ó6ñ
Gó 7ð
Gñ  �E—K‘K Ó,ñó -ðò9ò>ð IMØ6:ô#ðD '+ôOòEòP
>òBVñr ˆu�{‰{˜FÓ#ñPó $ðPñ ˆz˜5×.Ò.Ó/Ùˆw×ÑÓ ñEó !ó 0ðEñ ˆx×Ñ ×!4Ò!4°e·m±mÓDñEó EñEñ ˆx×Ñ ×!4Ò!4°e·m±mØ�y‰yóñ%óñ%ñ ˆs�E×'Ò'Ó(ñó )ññ ˆr�~Š~˜uŸ{™{Ó+ñEó ,ñEñ" ˆz˜5×5Ò5Ó6Ùˆw×ÑÓ ñCó !ó 7ñCñ ˆx˜˜Ÿš e§m¡mÓ4Ó5Ùˆr�zŠz˜<˜5Ÿ<š<¨¯©Ó6Ó7ñ
Eó 8ó 6ñ
Eñ ˆx˜Ÿ™Ó)Ùˆr�zŠz˜5Ÿ?™?Ó+ñEó ,ó *ñEñ* ˆz˜5×1Ò1Ó2Ùˆw×ÑÓ ñ7ó !ó 3ñ7ñ ˆr�yŠy˜%Ÿ)™)Ó$ñ>ó %ñ>ñ& ˆz˜5×0Ò0Ó1Ùˆw×ÑÓ ñ7ó !ó 2ñ7ñ ˆx�{Š{˜EŸKšK¨¯ªÓ5ñFó 6ñFóLñ^ �e—k‘k ;°uÔ=ñó >ñó*ð ñ
ó ñ
ó-ó`Kó#ó&ð ñó ññ 
ˆ"�(Š(ÓÙ"ò &ó ñ&ð* ñó ññ 
ˆ"�-Š-Óóó ñð0 ñó ññ �—‘˜lÓ+ñó ,ññ 
ˆ"�(Š(ÓÙ"ò ó ññ 
ˆ"�-Š-Óóó ññ 
ˆ"�,Š,Óó
ó ñ
ñ 
ˆ"�'Š'Óóó ññ  
ˆ"�,Š,Óó
ó ñ
ñ 
ˆ"�'Š'Óóó ññ 
ˆ"�+Š+Óóó ñó	ð €×ÑÑ%Ó&ñó 'ñð €×Ñ�B—F’FÓØ˜1¡Eò ó ññ2 
ˆ"�'Š'Óó#ó ñ#ñL 
ˆ"�*Š*Óñó ññ6 
ˆ"�+Š+Óóó ñó4  ñF 
ˆ"�'Š'ÓÙ�—‘˜fÓ%ó^ó &ó ñ^óBñ4 
ˆ"�)Š)Óó@ó ñ@ñF 
ˆ"�+Š+Óó$ó ñ$óN"PðJ ñó ññ ˆ|˜UŸ[™[Ó)ñ4ó *ñ4ñ 
ˆ"�'Š'Óñó ñô><ðB ò?ó ñ?ñ 
ˆ"×
Ò
Óò
ó  ñ
ñ 
ˆ"×
Ò
Óòó ññ ‰~˜uŸ{™{¨E¯OªOÓ<Ù‰~˜uŸ{™{¨E×,?Ñ,?Ó@òPó Aó =ñPð: ò'ó ñ'ñT �—‘™iÓ(òó )ñð òTó ñTñn 
ˆ"�-Š-ÓÙ%*±"¸Qó ó ññ8 
ˆ&Óôó ññ 
ˆ&Óôó ñô!ôH1Dôhôô"ô<&'ôR&#ôR)ð òó ññ2 
ˆ"�(Š(Óôó ñôô&?ô:@ô:ð8 òó ññ  
ˆ"�.Š.Óòó ñô%ô2ñ. 
ˆ"�-Š-Óò#ó ñ#ñ
 
ˆ"�-Š-Óò&ó ñ&ñ
 
ˆ"�-Š-Óò)ó ñ)ô
:ôz/FôdVFôr,ð$ òó ññ  
ˆ"�.Š.Óôó ñôð ò"ó ñ"ñJ 
ˆ"�/Š/Óòó ñôð òó ññ 
ˆ"�(Š(Óôó ñôð òó ññ4 
ˆ"�)Š)Óòó ñð òó ññ4 
ˆ"�)Š)Óòó ñð �FÒØ�HˆR�\Š\Ó™>Ô*ð ò&ó ñ&ñR 
ˆ"�)Š)Óòó ñð €×Ñ˜5Ÿ;™;©Ó/òó 0ñð €×Ñ˜5Ÿ;™;©Ó.òó /ññ 
ˆ"�)Š)Óòó ññ  
ˆ"�)Š)Óòó ñð  òó ññ: 
ˆ"�'Š'Óò
ó ñ
ñ 
ˆ"�.Š.Óô;ó ñ;ñ| 
ˆ"�(Š(ÓôCó ñCñ4 
ˆ"�)Š)Óòó ññ& 
ˆ"�)Š)Óòó ññ* 
ˆ"�)Š)Óòó ñð, 
�ôöô0ñ ‰|˜UŸ[™[Ó)ò
Ió *ñ
Iñ 
ˆ"�'Š'Óò	ó ñ	ñ ‰ §¡¨U×-@Ñ-@ÓAÙˆr�zŠz˜5Ÿ;™;¨×(;Ñ(;Ó<ò9ó =ó Bñ9ñ& ˆE�K‰K˜Ÿ™Ó%òó &ññ ˆE�K‰K˜×-Ò-Ó.ÙˆE�K‰K˜ŸšÓ%ÙˆE�K‰K˜Ÿ™Ó'ÙˆE�K‰K˜ŸšÓ'ÙˆE�K‰K˜ŸšÓ'ÙˆE�K‰K˜×*Ò*Ó+ÙˆE�K‰K˜×)Ò)Ó*òFó +ó ,ó (ó (ó (ó &ó /ñFñ ˆE�K‰K˜×-Ò-Ó.òEó /ñEôð €×ÒÑ*Ó+òó ,ññ" Ñ  %§+¡+¨u¯©ÀÇÁÓPò;ó Qñ;ð* €×Ñ�B—F’F×(Ò(×3Ò3Ó4ôó 5ñð8 €×Ñ�B—F’F×(Ò(×<Ò<Ó=ô[$ó >ñ[$ñ| 
‰$ƒòó ññ& 
ˆ"�+Š+Óòó ññ0 
ˆ"�+Š+Óò3ó ñ3ðl ò8ó ñ8ñv 
ˆ"×
Ò
Óò( ó ñ( ñV 
ˆ"�-Š-Óô^ó ò^rF   