ó
    ýZh½Ø ã            
       ó:0  • S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSK	r
SSKJrJr  SSKJrJrJrJrJrJr  SSKJrJrJrJrJrJrJrJrJrJr  SSKJ r J!r!J"r"  SS	K#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.  SS
K/J0r0  SSK1J2r2  SSK3J4r4J5r5J6r6J7r7J8r8  SSK9J:r:J;r;  SSK<J=r=  SSK>J?r?J@r@  SSK3JArA  SSKBJCrDJErFJGrGJHrHJIrI  S rJS rKS rLS rMS rNS rOS rPS rQS rR GSQS jrSS rTS rU\5" \U5      S 5       rV\$" S\R®                  5      S  5       rXS! rY\$" S"\R´                  5      \*" \.R¶                  5      S# 5       5       r\ GSQS$ jr]S% r^S& r_\$" \RÀ                  \R®                  \RÂ                  5      \$" \RÀ                  \R®                  \RÄ                  5      S' 5       5       rc\$" \RÀ                  \R®                  \RÈ                  5      S( 5       re\$" \RÌ                  \R®                  \RÎ                  \RÎ                  5      S) 5       rh\$" \i\R®                  5      S* 5       rj\$" S+\RÖ                  5      S, 5       rl\"S-:  a$  \$" S.\RÖ                  \RÎ                  5      S/ 5       rm " S0 S1\n5      ro " S2 S3\o5      rp " S4 S5\o5      rq " S6 S7\o5      rr " S8 S9\o5      rs " S: S;\o5      rt " S< S=\n5      ruS> rv\$" \RÀ                  \R®                  \RÖ                  5      S? 5       rwS@ rxSA rySB rzSC r{SD r|SE r}SF r~SG r\7SH 5       r€\7SI 5       r�\4SJ 5       r‚SK rƒ\5" \
GR                  5      SL 5       r…\4SM 5       r†\5" \
GR                  5      SN 5       rˆ\5" \
GR                  5      SO 5       rŠSP r‹\5" \‹SQSR9SS 5       rŒ\5" \‹STSR9SU 5       r�SV rŽSW r�\$" SX\RÖ                  5      SY 5       r�SZ r‘\$" SX\RÖ                  \RÈ                  5      S[ 5       r’\$" SX\RÖ                  \GR&                  " \RÎ                  5      5      S\ 5       r”\5" \
GR*                  5      GSQS] j5       r–\%" \RÖ                  S^5      S_ 5       r—\5" \
GR0                  5      GSRS` j5       r™\5" \
GR4                  5      GSRSa j5       r›\5" \
GR8                  5      GSSSb j5       r�Sc ržSd rŸ\$" Se\RÖ                  \RÈ                  5      Sf 5       r \$" Se\RÖ                  \GR&                  " \RÎ                  5      5      Sg 5       r¡\"Sh:  a  \5" \
GRD                  5      Si 5       r£O\5" \
GRD                  5      Sj 5       r£\5" \
GRH                  5      Sk 5       r¥\5" \
GRL                  5      GSQSl j5       r§\$" Sm\RÖ                  5      Sn 5       r¨\$" \
GRR                  \RÖ                  5      So 5       rª\$" Sp\RÖ                  5      Sq 5       r«\4Sr 5       r¬\4Ss 5       r­\5" \
GR\                  5      GSQSt j5       r¯\6" \RÖ                  Su5      GSTSv j5       r°Sw r±\5" \
GRd                  5      Sx 5       r³\5" \
GRh                  5      Sy 5       rµ\5" \
GRl                  5      Sz 5       r·\5" \
GRp                  5      S{ 5       r¹\4S| 5       rº\Rl                  " \RÖ                  S}5      S~ 5       r»\7S 5       r¼S€ r½\5" \½SQSR9S� 5       r¾\$" S‚\RÖ                  \GR~                  5      Sƒ 5       rÀ\%" \RÖ                  S„5      S… 5       rÁ\%" \RÖ                  S†5      \%" \GR„                  S†5      S‡ 5       5       rÃ\%" \RÖ                  Sˆ5      \%" \GR„                  Sˆ5      S‰ 5       5       rÄ\%" \RÖ                  SŠ5      \%" \GR„                  SŠ5      S‹ 5       5       rÅ\%" \RÖ                  SŒ5      S� 5       rÆ\%" \RÖ                  SŽ5      \%" \GR„                  SŽ5      S� 5       5       rÇ\%" \RÖ                  S�5      \%" \GR„                  S�5      S‘ 5       5       rÈ\%" \GR„                  S’5      S“ 5       rÉ\%" \GR„                  S”5      S• 5       rÊ\%" \GR„                  S–5      S— 5       rË\%" \GR„                  S˜5      S™ 5       rÌ\%" \RÖ                  Sš5      S› 5       rÍ\%" \GRœ                  Sœ5      S� 5       rÏ\(" \GRœ                  \GR                   5      \(" \GRœ                  \GR¢                  5      Sž 5       5       rÒSŸ rÓ\%" \RÖ                  S 5      S¡ 5       rÔ\%" \GRª                  S’5      \%" \GRª                  S”5      S¢ 5       5       rÖ\%" \GRª                  S–5      S£ 5       r×\%" \RÖ                  S¤5      S¥ 5       rØ\%" \RÖ                  S¦5      S§ 5       rÙS¨ rÚ\6" \RÖ                  S©5      \6" \RÖ                  Sª5      S« 5       5       rÛS¬ rÜ\%" \GRº                  S­5      " \Ü5        \%" \GRº                  S®5      " \Ü5        \$" S¯\GR¼                  \RÎ                  5      S° 5       rß\&" \RÖ                  5      S± 5       rà\$" S¯\RÖ                  \Rd                  5      S² 5       rá\&" \GRÄ                  5      S³ 5       rã\'" \GRÄ                  5      S´ 5       rä\$" S¯\GRÄ                  \Rd                  5      Sµ 5       rå\$" S¯\GRÄ                  \GRÌ                  5      S¶ 5       rç\$" S·\GRÄ                  \Rd                  \RÎ                  5      S¸ 5       rè\$" S·\GRÄ                  \GRÌ                  \RÎ                  5      S¹ 5       ré\)" \RÖ                  5      Sº 5       rê\)" \GRÄ                  5      S» 5       rë\)" \GRØ                  5      S¼ 5       rí\$" \GRÜ                  \RÖ                  \RÖ                  5      S½ 5       rï\8" \RÖ                  S¾5      S¿ 5       rðSÀ rñSÁ rò  GSTSÂ jró GSQSÃ jrôSÄ rõSÅ röSÆ r÷\%" \RÖ                  SÇ5      SÈ 5       rø\$" S"\GRò                  5      \*" \.R¶                  5      SÉ 5       5       rú\$" \RÀ                  \GRò                  \RÂ                  5      SÊ 5       rû\$" \RÌ                  \GRò                  \RÂ                  \RÎ                  5      SË 5       rü\$" \i\GRò                  5      SÌ 5       rý\$" \
GRü                  \RÖ                  5      SÍ 5       rÿ\$" S"\GR                   5      \*" \.R¶                  5      SÎ 5       5       Gr\$" \\GR&                  " \RÂ                  5      5      \$" \
GR                  \GR&                  " \RÂ                  5      5      SÏ 5       5       Gr\$" \\RÈ                  5      \$" \
GR                  \RÈ                  5      SÐ 5       5       Gr\$" S"\GR
                  5      \*" \.R¶                  5      SÑ 5       5       Gr\$" \
GR                  \RÎ                  5      SÒ 5       Gr\$" S"\GR                  5      \*" \.R¶                  5      SÓ 5       5       Gr
\$" \GR                  \GRº                  \GRº                  5      SÔ 5       GrSÕ Gr\A" \RÖ                  SÖ5      S× 5       GrSØ Gr\7SÙ 5       GrSÚ GrSÛ GrSÜ GrSÝ Gr\7SÞ 5       Gr\5" \
GR,                  5      G\4Sß j5       Gr\7Sà 5       Gr\5" \
GR4                  5      GSQSá j5       Gr\7Sâ 5       Gr\6" \RÖ                  Sã5      Sä 5       Gr\5" \
GR<                  5      G\4Så j5       Gr\5" \
GR@                  5      GSQSæ j5       Gr!\5" \
GRD                  5      GSQSç j5       Gr#\5" \
GRH                  5      GSQSè j5       Gr%\5" \
GRL                  5      GSQSé j5       Gr'\5" \
GRP                  5      GSQSê j5       Gr)\5" \
GRT                  5      GSQSë j5       Gr+Sì Gr,\Rj                  " G\,5      Sí 5       Gr-\Rj                  " \
GR\                  5      SSG\4Sî j5       Gr/\5" \
GR`                  5      GSUSï j5       Gr1\5" \
GRd                  5      Sð 5       Gr3\5" \
GRh                  5      GSUSñ j5       Gr5Sò Gr6\5" \
GRn                  5      \6" \RÖ                  Só5      GSQSô j5       5       Gr8Sõ Gr9\5" \
GRt                  5      GSTSö j5       Gr;\5" \
GRx                  5      GSRS÷ j5       Gr=Sø Gr>\7Sù 5       Gr?\$" Sú\RÖ                  5      Sû 5       Gr@\5" \
GR‚                  5      Sü 5       GrBSý GrC\7Sþ 5       GrD\5" \
GRŠ                  5      Sÿ 5       GrF\5" \
GRŽ                  5      GS  5       GrH\$" GS\RÖ                  \GR~                  5      \$" GS\RÖ                  \Rd                  5      GS 5       5       GrI\7GS 5       GrJ\5" \
GR–                  5      G\4GS j5       GrL\5" \5      GSQGS j5       GrM\5" \5      GSQGS j5       GrNGS GrOGS GrPGS	 GrQGS
 GrRGS GrSGS GrTGS GrUGS GrV\7GS 5       GrW\5" \
GR°                  5      GSQGS j5       GrYGS GrZGS Gr[GS Gr\GS Gr]\7GS 5       Gr^\5" \
GRº                  5      GS 5       Gr_GS Gr`GS Gra\5" \
GRÄ                  5      GS 5       Grc\5" \
GRÈ                  5      GS 5       Gre\5" \
GRÌ                  5      GS 5       GrgGS GrhGS GriGS GrjGS Grk\7GS  5       Grl\5" \
GRÚ                  5      GSUGS! j5       GrnGS" Gro\7GS# 5       Grp\5" \
GRâ                  5      GS$ 5       GrrGS% Grs\7GS& 5       Grt\5" \
GRê                  5      GSUGS' j5       GrvGS( Grw\7GS) 5       Grx\5" \
GRò                  5      GS* 5       Grz\7GS+ 5       Gr{\5" \
GRø                  5      GS, 5       Gr}\"S-:¼  a  \5" \
GRü                  5      " G\}5        \7GS- 5       Gr\5" \
GR                   5      GS. 5       Gr�\Rl                  " \RÖ                  GS/5      GS0 5       Gr‚\Rl                  " \RÖ                  GS15      GS2 5       Grƒ\5" \
GR                  5      GS3 5       Gr…\5" \
GR                  5      GS4 5       Gr‡\7GS5 5       Grˆ\5" \
GR                  5      GS6 5       GrŠ\5" \
GR                  5      GSUGS7 j5       GrŒ\5" \
GR                  5      GSUGS8 j5       GrŽ\5" \
GR                  5      GS9 5       Gr�\5" \
GR"                  5      GS: 5       Gr’\5" \
GR&                  5      GS; 5       Gr”0 Gr•GS< Gr–GSVGS= jGr—GS> Gr˜\$" GS?\RÖ                  5      GS@ 5       Gr™\5" \
GR4                  5      GSA 5       Gr›\$" GSB\RÖ                  \Rd                  5      \$" \
GR8                  \RÖ                  \Rd                  5      GSC 5       5       Gr�\(" \RÖ                  \RÖ                  5      GSD 5       Grž\(" \RÖ                  \GR>                  5      \(" \RÖ                  \GR@                  5      \(" \RÖ                  \RÂ                  5      \(" \RÖ                  \GRB                  5      \(" \RÖ                  \GRD                  5      \(" \RÖ                  \GRF                  5      \(" \RÖ                  \GRH                  5      GSE 5       5       5       5       5       5       5       Gr¥\(" \RÖ                  \GR>                  5      GSF 5       Gr¦GSG Gr§\GRP                  " G\§5      GSH 5       Gr©\$" G\§\RÖ                  \RÈ                  \RÈ                  5      GSI 5       Grª\Rj                  " \
GRV                  GRX                  GRZ                  5      GSWGSJ j5       Gr­\Rj                  " \
GRV                  GRX                  GR\                  5      GSQGSK j5       Gr®\5" G\¯5      GSL 5       Gr°\5" \
GRb                  5      GSM 5       Gr²\4GSN 5       Gr³\5" \
GRh                  5      GSO 5       Grµ\5" \
GRl                  5      GSXGSP j5       Gr·g(Y  z[
Implementation of operations on Array objects and objects supporting
the buffer protocol.
é    N)Úir)ÚConstant)ÚpndindexÚliteral_unroll)ÚtypesÚtypingÚerrorsÚcgutilsÚ	extendingÚconfig)
Ú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)Útuple_setitemÚbuild_full_slice_tuple)Úoverload_classmethod)Úparse_dtypeÚparse_shapeÚ_parse_nested_sequenceÚ_sequence_of_arraysÚ_choose_concatenation_layoutc                 ó¶   • [        UR                  U5      [        UR                  U5      /nU R                  R                  U5      nUR	                  SU5        g)zn
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         Ú`/home/gothic/public_html/Fooocus/fooocus_env/lib64/python3.13/site-packages/numba/np/arrayobj.pyÚset_range_metadatarD   -   sK   € ô
 ˜tŸy™y¨+Ó6Ü˜tŸy™y¨+Ó6ð8€Nà	�‰×	$Ñ	$ ^Ó	4€BØ×Ñ�g˜rÕ"ó    c                 ó\   • SUR                   R                  S-
  -  S-
  n[        XSU5        g)z>
Mark the result of a load instruction as positive (or zero).
é   r   N)r9   ÚwidthrD   )r=   r>   r@   s      rC   Úmark_positiverI   8   s,   € ð ˜Ÿ™Ÿ™¨1Ñ,Ñ-°Ñ2€KÜ�w a¨Õ5rE   c                 ó�   ^ ^^^^• T R                   m[        R                  " T5      mTR                  m " UU UUU4S jST5      mT$ )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                   óH   >^ • \ rS rSrUU UU4S jr\UU4S j5       rSrU =r$ )Úmake_array.<locals>.ArrayStructéL   c                 ób  >• [        T
T	5      n U R                  R                  SU5      nU R                  R                  T	   nU R                  U5      nUc!  [        R                  " U R                  USS9nOUnU" U R                  U45      nXa4$ ! [         a    [        TU ]  U5      s $ f = f)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          €€€€rC   rU   Ú*make_array.<locals>.ArrayStruct._make_refsN   s¹   ø€ Ü˜O¨ZÓ8ˆCð@Ø!Ÿ]™]×7Ñ7¸ÀSÓI�
ð
 Ÿ™×8Ñ8¸ÑDˆIØ×'Ñ'¨	Ó2ˆGØ‰{Ü#×/Ò/°·±¸wØ6:ñ<‘	ð  �	ñ ˜TŸ]™]¨Y¨LÓ9ˆCØ�>Ð!øô 'ó @Ü˜[¨$Ñ:¸3Ó?Ò?ð@ús   �B ÂB.Â-B.c                 óL  >• U R                   nTS:X  a  TR                  U S5      $ U R                  S5      n/ n[        T5       HH  n[        R
                  " XSU5      nUR                  U5      nUR                  U5        [        X5        MJ     [        R                  " X5      $ )zD
Override .shape to inform LLVM that its elements are all positive.
r   Úshape)
rY   Ú__getattr__Ú_get_ptr_by_namer8   r
   Úgep_inboundsr>   ÚappendrI   Ú
pack_array)	rZ   r=   ÚptrÚdimsÚiÚdimptrr>   ÚbaseÚndims	          €€rC   rg   Ú%make_array.<locals>.ArrayStruct.shapeb   s–   ø€ ð
 —m‘mˆGØ�q‹yØ×'Ñ'¨¨gÓ6Ð6ð ×'Ñ'¨Ó0ˆCØˆDÜ˜4–[�Ü ×-Ò-¨g¸A¸qÓA�Ø—|‘| FÓ+�Ø—‘˜DÔ!Ü˜gÖ,ñ	 !ô ×%Ò% gÓ4Ð4rE   © )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rU   Úpropertyrg   Ú__static_attributes__Ú__classcell__)rb   ra   rc   rq   rr   rd   s   @€€€€€rC   ra   rL   L   s!   ù† ÷	"ð 	"ð( 
õ	5ó 
ö	5rE   ra   )Úas_arrayr
   Úcreate_struct_proxyrr   )rc   ra   rq   rr   rd   s   `@@@@rC   Ú
make_arrayr~   @   sE   ü€ ð !×)Ñ)€OÜ×&Ò& Ó7€DØ×Ñ€D÷+5ó +5�dô +5ðZ ÐrE   c                 óZ   • U R                  UR                  5      nU R                  U5      $ )z:
Return the item size for the given array or buffer type.
)Úget_data_typeÚdtypeÚget_abi_sizeof)Úcontextrc   Úlltys      rC   Úget_itemsizer…   |   s+   € ð × Ñ  ×!1Ñ!1Ó2€DØ×!Ñ! $Ó'Ð'rE   c                 ób   • UR                   (       a  SOSnU R                  XR                  UUS9$ )z+
Load the item at the given array pointer.
NrG   ©Úalign)ÚalignedÚunpack_valuer�   )rƒ   r=   Úarraytyrm   rˆ   s        rC   Ú	load_itemrŒ   „   s4   € ð —O—O‰D¨€EØ×Ñ ¯©¸Ø&+ð  ð -ð -rE   c                 ób   • UR                   (       a  SOSnU R                  XR                  X4US9$ )z,
Store the item at the given array pointer.
NrG   r‡   )r‰   Ú
pack_valuer�   )rƒ   r=   r‹   Úvalrm   rˆ   s         rC   Ú
store_itemr�   �   s-   € ð —O—O‰D¨€EØ×Ñ˜g§}¡}°cÀeÐÐLÐLrE   c                 óÞ   • UR                   (       a:  U R                  XU[        R                  5      n[        R
                  " XU5      nU$ U R                  XU[        R                  5      nU$ )zE
Fix the integer index' type and value for the given dimension size.
)ÚsignedÚcastr   Úintpr.   Ú	fix_indexÚuintp)rƒ   r=   ÚidxtyÚidxÚsizeÚinds         rC   Úfix_integer_indexr›   •   sW   € ð ‡|‡|Ø�l‰l˜7¨´·
±
Ó;ˆÜ×Ò ¨dÓ3ˆð €Jð �l‰l˜7¨´·±Ó<ˆØ€JrE   c                 ó(  • [        U[        R                  5      (       aq  UR                  S:X  aa  [        UR                  [        R
                  5      (       d   e[        U5      " XU5      n[        XX$R                  5      nUR                  U4$ X#4$ )zK
Normalize the index type and value.  0-d arrays are converted to scalars.
r   )	Ú
isinstancer   ÚArrayrr   r�   ÚIntegerr~   rŒ   Údata)rƒ   r=   r—   r˜   ÚidxaryÚidxvals         rC   Únormalize_indexr£   ¡   sr   € ô �%œŸ™×%Ñ%¨%¯*©*¸«/Ü˜%Ÿ+™+¤u§}¡}×5Ñ5Ð5Ð5Ü˜EÔ" 7°SÓ9ˆÜ˜7¨U·K±KÓ@ˆØ�{‰{˜FÐ"Ð"àˆzÐrE   c                 óš   • [        U5      (       a3  [        [        X#5       VVs/ s H  u  pE[        XUU5      PM     snn6 u  p#X#4$ s  snnf )zR
Same as normalize_index(), but operating on sequences of
index types and values.
)ÚlenÚzipr£   )rƒ   r=   Úindex_typesÚindicesr—   r˜   s         rC   Únormalize_indicesr©   ®   sX   € ô
 ˆ7‡|�|Ü"ä7:¸;Ô7Pô%'â7P©¨ô &5°WÀuØ58ö&:á7Pò%'ð  (Ñˆð ÐÐùó	%'s   ¤A
c                 óD  • U R                   nU R                  nU R                  n	[        R                  " [        R
                  SS5      n
UR                  U
   n[        UR                  5      n[        U	R                  5      nXÍ-  U:w  a6  XÍ-
  nSU R                   S[        U5      S:”  a  SOS SU S3n[        U5      eUc*  [        UR                  U	R                  S
5      5      S	5      nUR                  [        R                  5      n[!        U["        [$        45      (       a  [&        R(                  " X‚U5      n[!        U["        [$        45      (       a  [&        R(                  " XƒU5      n[!        U[*        5      (       a  U" U5      n[-        UUUUUS9nUc.  [        UR                  U	R                  S5      5      S	5      US'   OUUS'   UR/                  [        R                  S5      n[&        R0                  " X‚UR2                  R4                  5      nU H  nUR7                  UUS/S9nM     UUS'   [        UR9                  5       5      nUU:w  a  [        SR;                  UU-
  5      5      eUR=                  5        H  u  nn[?        U UU5        M     U $ )z”
Helper function for populating array structures.
This avoids forgetting to set fields.

*shape* and *strides* can be Python tuples or LLVM arrays.
rG   ÚCzThe datamodel for type z is missing fieldÚsÚ Ú Ú.NÚmeminfo)rg   Ú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
   rl   ÚintÚdictÚget_constantÚunpack_tupler9   ÚcountÚmulÚkeysÚformatÚitemsÚsetattr)Úarrayr    rg   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                           rC   Úpopulate_arrayrÚ   »   sn  € ð �n‰n€GØ�n‰n€GØ× Ñ €Iô —[’[¤§¡°°3Ó7€NØ$+×$>Ñ$>¸~Ñ$NÐ!ÜÐ7×?Ñ?Ó@€OÜ˜9×,Ñ,Ó-Ðð 	Ñ*¨Ó>Ø!Ñ4ˆØ(¨¯©Ð(8ð 9Ü! '›l¨QÓ.‘s°BÐ7°q¸¸	ÀðDˆä˜‹oÐà�Ü˜7×1Ñ1Ø×Ñ˜yÓ)ó+Ø,0ó2ˆð ×#Ñ#¤E§J¡JÓ/€FÜ�%œ%¤˜×'Ñ'Ü×"Ò" 7°6Ó:ˆÜ�'œE¤4˜=×)Ñ)Ü×$Ò$ W°vÓ>ˆÜ�(œC× Ñ Ù˜(Ó#ˆä�uØ ØØ"Ø ñ	#€Eð �~Ü" 7×#9Ñ#9Ø×Ñ˜xÓ(ó$*Ø+/ó1ˆˆhŠð !ˆˆh‰à×!Ñ!¤%§*¡*¨aÓ0€FÜ×)Ò)¨'¸%¿*¹*×:JÑ:JÓK€NãˆØ—‘˜V U°5°'�Ð:Šñ  à€Eˆ(�Oô �U—Z‘Z“\Ó"€JØ�_Ó$Ü˜×-Ñ-¨oÀ
Ñ.JÓKÓLÐLð —‘–‰ˆˆ1Ü��q˜!Öñ ð €LrE   c                 óf  • UR                   nUR                  nUR                  [        R                  S5      n[
        R                  " X1R                  U R                  5      nU H  nUR                  XFS/S9nM     XAl
        UR                  [        R                  [        X 5      5      Ul        g)z{
Update some auxiliary information in *array* after some of its fields
were changed.  `itemsize` and `nitems` are updated.
rG   r´   rµ   N)rQ   rY   rÄ   r   r”   r
   rÅ   rg   rr   rÇ   r·   r…   r²   )ÚarytyrÌ   rƒ   r=   r·   rÕ   rÖ   s          rC   Úupdate_array_inforÝ      sŒ   € ð
 �n‰n€GØ�n‰n€Gð ×!Ñ!¤%§*¡*¨aÓ0€FÜ×)Ò)¨'·;±;ÀÇ
Á
ÓK€NÛˆØ—‘˜V°5°'�Ð:Šñ  à„Là×)Ñ)¬%¯*©*Ü*6°wÓ*FóH€E…NrE   c                 ó   • [        5       e)z/Constrain axis values to valid positive values.©rS   )Ú	func_nameÚarg_namerr   Úaxiss       rC   Únormalize_axisrã     s   € ä
Ó
ÐrE   c                 óø   ^• [        U [        5      (       d  [        R                  " S5      e[        U[        5      (       d  [        R                  " S5      eU R                   SUR                   S3mU4S jnU$ )Nz func_name must be a str literal.zarg_name must be a str literal.z: Argument z* out of bounds for dimensions of the arrayc                 óH   >• US:  a  X2-  nUS:  d  X2:¼  a  [        T5      eU$ ©Nr   ©r½   )rà   rá   rr   râ   rÒ   s       €rC   ÚimplÚ&normalize_axis_overloads.<locals>.impl$  s+   ø€ Ø�!‹8Ø‰LˆDØ�!‹8�t“|Ü˜S“/Ð!àˆrE   )r�   r&   r	   ÚTypingErrorÚliteral_value)rà   rá   rr   râ   rè   rÒ   s        @rC   Únormalize_axis_overloadsrì     sx   ø€ ä�i¤×/Ñ/Ü× Ò Ð!CÓDÐDÜ�h¤×.Ñ.Ü× Ò Ð!BÓCÐCð ×"Ñ"Ð
# ;¨x×/EÑ/EÐ.Fð G4ð 	4ð õ
ð €KrE   Úgetiterc                 óŒ  • UR                   u  nUu  nU R                  XR                  5      nU R                  [        R
                  S5      n[        R                  " X5      nX†l        XVl	        U R                  (       a  U R                  R                  XU5        UR                  5       n	[        XUR                  U	5      n
U
$ 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              rC   Úgetiter_arrayrý   /  sž   € à—‘�I€WØ�G€Uà×!Ñ! '¯?©?Ó;€Gà×Ñ¤§
¡
¨AÓ.€DÜ×(Ò(¨Ó7€Hà„MØ„Mð ××Ø�‰×Ñ˜7¨UÔ3à
×
Ñ
Ó
€Cô ˜7¨S¯_©_¸cÓ
B€CØ€JrE   c           
      óÌ  • [         R                  " XR                  UR                  S9n[         R                  " XR                  UR                  S9nUR                  US   U5      n[         R                  " XR                  U5      n	USS n
USS n[        U[        R                  5      (       a  [        XX4UXšU5      nUR                  5       $ U
(       a   e[        XX95      $ )z0Evaluate `ary[idx]`, where idx is a single int. ©rÆ   r   rG   N)r
   rÅ   rg   rr   r±   rÇ   Úpointer_addr    r�   r   ÚBufferÚ	make_viewr÷   rŒ   )rƒ   r=   rñ   rÜ   Úaryr˜   Úshapesr±   ÚoffsetÚdataptrÚview_shapesÚview_stridesÚretarys                rC   Ú_getitem_array_single_intr
  G  sÄ   € ô ×!Ò! '¯9©9¸E¿J¹JÑG€FÜ×"Ò" 7¯K©K¸u¿z¹zÑJ€GØ�[‰[˜ ™ SÓ)€FÜ×!Ò! '¯8©8°VÓ<€GØ˜˜�*€KØ˜1˜2�;€Lä�+œuŸ|™|×,Ñ,ä˜7¨U¸Ø"°ó?ˆà×ÑÓ!Ð!ö ÐˆÜ˜¨5Ó:Ð:rE   Úiternextc           	      ó\  • UR                   u  nUu  nUR                  nU R                  XUS9n[        U5      " XUR                  S9n	[
        R                  " XR                  SS9u  n
UR                  UR                  5      nUR                  SXº5      nUR                  U5        UR                  U5         [        XUR                  XyU5      nUR                  U5        [
        R                   " X5      nUR#                  XèR                  5        S S S 5        g ! , (       d  f       g = f)N©ÚvaluerG   rÿ   Ú<)rï   rc   rð   r~   rÌ   r
   rÅ   rg   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                  rC   Úiternext_arrayr  \  sô   € ð �x‰x�H€VØ�F€TØ×Ñ€Gà×!Ñ! '¸Ð!Ð>€GÜ
�WÔ
˜g°g·m±mÑ
D€Cä×"Ò" 7¯I©I¸QÑ?�G€Fà�L‰L˜Ÿ™Ó'€EØ×"Ñ" 3¨Ó6€HØ
×Ñ�XÔà	�‰˜Õ	"Ü)Ø˜f×/Ñ/°¸uó
ˆð 	�‰�eÔÜ×(Ò(¨Ó8ˆØ�‰�fŸm™mÔ,÷ 
#×	"Ö	"ús   Â9ADÄ
D+c           
      óÚ  • U R                  [        R                  S5      nU R                  [        R                  S5      n[        R                  " XR
                  UR                  5      n	[        R                  " XR                  UR                  5      n
/ n/ n/ n[        U Vs/ s H  n[        U5      (       d  M  UPM     sn5      nSn[        XT5       GH  u  nnU[        R                  L ap  UR                  [        U5      -
  S-   U-   n[        U5       HA  nUR                  U5        UR                  U	U   5        UR                  U
U   5        US-  nMC     MŠ  [        U[        R                  5      (       a´  U R!                  UUUS9n["        R$                  " XUU5        ["        R&                  " UUU	U   5        UR                  UR(                  5        ["        R*                  " UU5      n["        R,                  " UUU
U   5      nUR                  U5        UR                  U5        O¬[        U[        R.                  5      (       aF  [1        XUUU	U   5      nU(       a  [        R2                  " XUU	U   U5        UR                  U5        OG[        U5      (       a(  UR                  U5        UR                  U5        US-  nO[5        SU< 35      eUS-  nGM     UUR                  ::  d   eUUR                  :  a?  UR                  U	U   5        UR                  U
U   5        US-  nUUR                  :  a  M?  [        R6                  " XX#USSS9nUXÍ4$ s  snf )zƒ
Perform basic indexing on the given array.
A (data pointer, shapes, strides) tuple is returned describing
the corresponding view.
r   rG   r  úunexpected index type: F©Ú
wraparoundÚboundscheck)rÄ   r   r”   r
   rÅ   rg   rr   r±   r¥   r   r¦   Úellipsisr8   rk   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_newaxesÚaxÚindexvalr—   Ú	n_missingro   ÚsliceÚshÚstrš   r  s                             rC   Úbasic_indexingr6  x  sð  € ð ×Ñ¤§
¡
¨AÓ.€DØ
×
Ñ
œuŸz™z¨1Ó
-€Cä×!Ò! '¯9©9°e·j±jÓA€FÜ×"Ò" 7¯K©K¸¿¹ÓD€Gà€NØ€MØ€Nä¡kÓF¢k˜s´[À×5E—s¡kÑ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°e¸XØ$*¨2¡Jó0ˆCæÜ×&Ò& w¸¸fÀR¹jÈ"ÔMØ×!Ñ! #Õ&Ü˜×ÑØ× Ñ  Ô%Ø×!Ñ! $Ô'Ø�!‰G‰Bå%ÂUÐ&LÓMÐMØ
ˆa‰‹ñA 5ðF �—‘ÓÐÐØ
ˆu�z‰z‹/Ø×Ñ˜V B™ZÔ(Ø×Ñ˜g b™kÔ*Ø
ˆa‰ˆð ˆu�z‰z�/ô ×&Ò& w¸Ø'5Ø27ÀUñL€Gð �]Ð3Ð3ùòa Gs   Â&M(Â>M(c           
      ó‚   • [        U5      " X5      n[        UUUUUR                  UR                  UR                  S9  U$ )z>
Build a view over the given array with the given parameters.
©r    rg   r±   r²   r°   r³   )r~   rÚ   r²   r°   r³   )	rƒ   r=   rÜ   r  rñ   r    r  r±   r	  s	            rC   r  r  ¼  sB   € ô
 ˜Ô$ WÓ6€FÜ�6ØØØ"ØŸL™LØŸ;™;ØŸ*™*ò&ð €MrE   c           
      óÚ   • [        XX4XVU R                  S9u  pxn	[        U[        R                  5      (       a  [        XX4UXxU	5      n
U
R                  5       $ U(       a   e[        XX75      $ )zd
Return the result of indexing *ary* with the given *indices*,
returning either a scalar or a view.
©r!  )r6  Úenable_boundscheckr�   r   r  r  r÷   rŒ   )rƒ   r=   rñ   rÜ   r  r§   r¨   r  r  r  r	  s              rC   Ú_getitem_array_genericr<  Ì  sr   € ô 	�w¨°[Ø#*×#=Ñ#=ñ	?ñ '€G˜,ô �+œuŸ|™|×,Ñ,ä˜7¨U¸Ø"°ó?ˆà×ÑÓ!Ð!ö ÐˆÜ˜¨5Ó:Ð:rE   c           	      óÒ   • UR                   u  pEUu  pgUR                  S:¼  d   e[        U5      " XU5      n[        XUR                  XFU4U45      n[        XUR                  U5      $ )z,
Basic indexing with an integer or a slice.
rG   )rï   rr   r~   r<  rñ   r!   ©	rƒ   r=   r\   rï   rÜ   r—   r  r˜   rû   s	            rC   Úgetitem_arraynd_intpr?  á  sg   € ð —8‘8�L€EØ�H€Cà�:‰:˜‹?Ðˆ?Ü
�UÔ
˜G¨cÓ
2€Cä
  °3·?±?Ø!&¨e¨X¸°vó?€Cä˜W¨s¯©ÀÓDÐDrE   c           
      ób  • UR                   u  pEUu  pg[        U5      " XU5      nUR                  n[        R                  " X[        U5      S9n	[        XX‰5      u  p‰[        S U 5       5      (       a  [        XX#XFX‰5      $ [        XUR                  XFX‰5      n
[        XUR                  U
5      $ )z*
Basic or advanced indexing with a tuple.
rÿ   c              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7f©N©r�   r   rž   )Ú.0Útys     rC   Ú	<genexpr>Ú&getitem_array_tuple.<locals>.<genexpr>  s   é € Ð
=²¨2Œ:�bœ%Ÿ+™+×&Ð&²ùó   ‚'))rï   r~   r   r
   rÅ   r¥   r©   ÚanyÚfancy_getitemr<  rñ   r!   )rƒ   r=   r\   rï   rÜ   Útuptyr  Útupr§   r¨   rû   s              rC   Úgetitem_array_tuplerM  ò  s¯   € ð
 —8‘8�L€EØ�H€CÜ
�UÔ
˜G¨cÓ
2€Cà—+‘+€KÜ×"Ò" 7´s¸5³zÑB€Gä,¨WØ-8óCÑ€Kô Ñ
=±Ó
=×=Ñ=ä˜W¨sØ"¨ó?ð 	?ô ! °3·?±?Ø!&¨[óC€Cä˜W¨s¯©ÀÓDÐDrE   c           
      óô  • UR                   u  pEnUu  pxn	[        U[        R                  5      (       a+  UR                  n
[        R
                  " X[        U5      S9nOU4n
U4n[        U5      " XU5      n[        XX«5      u  p« [        XXGX«U R                  S9u  pÍn[        U5      nU(       a  [        XX#X«5      $ U R                  XXdR                  5      n	[!        XXIW5        g! [         a    Sn NLf = f)z<
array[a] = scalar_or_array
array[a,..,b] = scalar_or_array
rÿ   r:  TN)rï   r�   r   Ú	BaseTupler
   rÅ   r¥   r~   r©   r6  r;  ÚboolrS   Úfancy_setslicer“   r�   r�   )rƒ   r=   r\   rï   rÜ   r—   Úvaltyr  r˜   r�   r§   r¨   r  r  r±   Úuse_fancy_indexings                   rC   Úsetitem_arrayrT    s  € ð Ÿ(™(Ñ€E�%Ø�M€Cˆcä�%œŸ™×)Ñ)Ø—k‘kˆÜ×&Ò& w¼3¸u»:ÑF‰à�hˆØ�&ˆä
�UÔ
˜G¨cÓ
2€Cô -¨WØ-8óCÑ€Kð*ä˜7¨U¸Ø'.×'AÑ'AñCñ 	!ˆ˜ô " &›\Ðæô ˜g°Ø)ó4ð 	4ð �,‰,�w U¯K©KÓ
8€CÜˆw ¨WÕ5øô ó "Ø!Òð"ús   ÂC( Ã(C7Ã6C7c                 ó¸   • UR                   u  nUu  n[        U5      nU" XU5      nUR                  nUR                  US5      n[	        XUR
                  U5      $ ræ   )rï   r~   rg   Úextract_valuer#   rñ   )	rƒ   r=   r\   rï   rÜ   r  ÚarysttyÚshapearyrû   s	            rC   Ú	array_lenrY  4  sX   € à�x‰x�H€UØ�F€SÜ˜Ó€GÙ
�' CÓ
(€CØ�y‰y€HØ
×
Ñ
 ¨!Ó
,€CÜ˜g°·±ÀÓEÐErE   z
array.itemc           	      óh  • UR                   u  nUu  n[        U5      " XU5      nUR                  nUR                  UR	                  SXfR                  S5      5      SS9   SnU R                  R                  U[        U45        S S S 5        [        XXER                  5      $ ! , (       d  f       N$= f)Nú!=rG   F©Úlikelyz>item(): can only convert an array of size 1 to a Python scalar)rï   r~   r·   r  r  r9   Ú	call_convÚreturn_user_excr½   rŒ   r    )rƒ   r=   r\   rï   rÜ   r  r·   rÒ   s           rC   Ú
array_itemr`  ?  s›   € à�X‰X�F€EØ�D€CÜ
�UÔ
˜G¨cÓ
2€Cà�Z‰Z€FØ	�‰˜×,Ñ,¨T°6¿;¹;Àq»>ÓJØ %ð 
ò 
'àNˆØ×Ñ×)Ñ)¨'´:À¸vÔF÷
'ô
 �W u¯h©hÓ7Ð7÷
'õ 
'ús   Á %B#Â#
B1©é   r   zarray.itemsetc           	      ó¬  • UR                   u  pEUu  pgXTR                  :X  d   e[        U5      " XU5      nUR                  nUR	                  UR                  SXˆR                  S5      5      SS9   Sn	U R                  R                  U[        U	45        S S S 5        [        XXGUR                  5        U R                  5       $ ! , (       d  f       N5= f)Nr[  rG   Fr\  z/itemset(): can only write to an array of size 1)rï   r�   r~   r·   r  r  r9   r^  r_  r½   r�   r    Úget_dummy_value)
rƒ   r=   r\   rï   rÜ   rR  r  r�   r·   rÒ   s
             rC   Úarray_itemsetre  O  s¹   € à—x‘x‰ˆØ‰ˆØŸ™Ó#Ð#Ð#Ü˜Ô °#Ó6ˆà—‘ˆØ�_‰_˜W×0Ñ0°°v¿{¹{È1»~ÓNØ$)ð ò +àCˆCØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷+ô
 	�7 U°·±Ô:Ø×&Ñ&Ó(Ð(÷+õ +ús   Á1%CÃ
Cc                   ó<   • \ rS rSrSrS rS rS rS rS r	S r
S	rg
)ÚIndexerid  ze
Generic indexer interface, for generating indices over a fancy indexed
array on a single dimension.
c                 ó   • [         e)zM
Prepare the indexer by initializing any required variables, basic
blocks...
rß   ©rZ   s    rC   ÚprepareÚIndexer.preparej  ó
   € ô
 "Ð!rE   c                 ó   • [         e)z-
Return this dimension's size as an integer.
rß   ri  s    rC   Úget_sizeÚIndexer.get_sizeq  ó
   € ô "Ð!rE   c                 ó   • [         e)z+
Return this dimension's shape as a tuple.
rß   ri  s    rC   Ú	get_shapeÚIndexer.get_shapew  rp  rE   c                 ó   • [         e)ze
Return a half-open [lower, upper) range of indices this dimension
is guaranteed not to step out of.
rß   ri  s    rC   Úget_index_boundsÚIndexer.get_index_bounds}  rl  rE   c                 ó   • [         e)a  
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ß   ri  s    rC   Ú	loop_headÚIndexer.loop_head„  s
   € ô "Ð!rE   c                 ó   • [         e)z
Finish indexation loop.
rß   ri  s    rC   Ú	loop_tailÚIndexer.loop_tail�  rp  rE   rt   N)ru   rv   rw   rx   Ú__doc__rj  rn  rr  ru  rx  r{  rz   rt   rE   rC   rg  rg  d  s%   † ñò
"ò"ò"ò"ò	"õ"rE   rg  c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚEntireIndexeri–  z2
Compute indices along an entire array dimension.
c                 óœ   • Xl         X l        X0l        X@l        XPl        U R                   R                  [        R                  5      U l        g rB  )	rƒ   r=   rÜ   r  Údimr¾   r   r”   Úll_intp)rZ   rƒ   r=   rÜ   r  r�  s         rC   Ú__init__ÚEntireIndexer.__init__›  s5   € ØŒØŒØŒ
ØŒØŒØ—|‘|×2Ñ2´5·:±:Ó>ˆ�rE   c                 ó$  • U R                   nUR                  U R                  R                  U R                  5      U l        [        R                  " XR                  5      U l	        UR                  5       U l        UR                  5       U l        g rB  )r=   rV  r  rg   r�  r™   r
   rX   r‚  ró   Úappend_basic_blockÚbb_startÚbb_end©rZ   r=   s     rC   rj  ÚEntireIndexer.prepare£  sa   € Ø—,‘,ˆØ×)Ñ)¨$¯(©(¯.©.¸$¿(¹(ÓCˆŒ	Ü×(Ò(¨·,±,Ó?ˆŒ
Ø×2Ñ2Ó4ˆŒØ×0Ñ0Ó2ˆ�rE   c                 ó   • U R                   $ rB  ©r™   ri  s    rC   rn  ÚEntireIndexer.get_sizeª  s   € Ø�y‰yÐrE   c                 ó   • U R                   4$ rB  rŒ  ri  s    rC   rr  ÚEntireIndexer.get_shape­  s   € Ø—	‘	ˆ|ÐrE   c                 ó<   • U R                  S5      U R                  4$ ræ   ©r‚  r™   ri  s    rC   ru  ÚEntireIndexer.get_index_bounds°  ó   € à—‘˜Q“ §¡Ð+Ð+rE   c                 óø  • U R                   nU R                   R                  [        U R                  S5      U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5      nUR                  UR                  SX R                  5      SS9   UR                  U R                  5        S S S 5        X"4$ ! , (       d  f       X"4$ = f©Nr   ú>=Fr\  )r=   r  r   r‚  ró   Úbranchr‡  Úposition_at_endr>   r  r  r™   rˆ  )rZ   r=   Ú	cur_indexs      rC   rx  Ú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)Ã)
C9c                 ó  • U R                   n[        R                  " XR                  U R                  5      5      nUR                  X R                  5        UR                  U R                  5        UR                  U R                  5        g rB  )
r=   r
   r  r>   ró   r  r—  r‡  r˜  rˆ  ©rZ   r=   Ú
next_indexs      rC   r{  ÚEntireIndexer.loop_tailÀ  sZ   € Ø—,‘,ˆÜ×,Ò,¨W·l±lÀ4Ç:Á:Ó6NÓOˆ
Ø�‰�j§*¡*Ô-Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rE   )
r  rÜ   rˆ  r‡  r=   rƒ   r�  ró   r‚  r™   N©ru   rv   rw   rx   r}  rƒ  rj  rn  rr  ru  rx  r{  rz   rt   rE   rC   r  r  –  s*   † ñò?ò3òòò,ò
$õ-rE   r  c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚIntegerIndexeriÈ  z(
Compute indices from a single integer.
c                 ó„   • Xl         X l        X0l        U R                   R                  [        R
                  5      U l        g rB  )rƒ   r=   r˜   r¾   r   r”   r‚  )rZ   rƒ   r=   r˜   s       rC   rƒ  ÚIntegerIndexer.__init__Í  s+   € ØŒØŒØŒØ—|‘|×2Ñ2´5·:±:Ó>ˆ�rE   c                 ó   • g rB  rt   ri  s    rC   rj  ÚIntegerIndexer.prepareÓ  ó   € ØrE   c                 ó.   • [        U R                  S5      $ ©NrG   )r   r‚  ri  s    rC   rn  ÚIntegerIndexer.get_sizeÖ  s   € Ü˜Ÿ™ aÓ(Ð(rE   c                 ó   • g©Nrt   rt   ri  s    rC   rr  ÚIntegerIndexer.get_shapeÙ  s   € ØrE   c                 ó‚   • U R                   U R                  R                  U R                   U R                  5       5      4$ rB  )r˜   r=   Úaddrn  ri  s    rC   ru  ÚIntegerIndexer.get_index_boundsÜ  s,   € à—‘˜$Ÿ,™,×*Ñ*¨4¯8©8°T·]±]³_ÓEÐFÐFrE   c                 ó   • U R                   S 4$ rB  )r˜   ri  s    rC   rx  ÚIntegerIndexer.loop_headà  s   € Ø�x‰x˜ˆ~ÐrE   c                 ó   • g rB  rt   ri  s    rC   r{  ÚIntegerIndexer.loop_tailã  r¦  rE   )r=   rƒ   r˜   r‚  NrŸ  rt   rE   rC   r¡  r¡  È  s+   † ñò?òò)òòGòõrE   r¡  c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚIntegerArrayIndexeriç  z3
Compute indices from an array of integer indices.
c                 óÀ   • Xl         X l        X0l        X@l        XPl        UR
                  S:X  d   eU R                   R                  [        R                  5      U l	        g r¨  )
rƒ   r=   r—   r¡   r™   rr   r¾   r   r”   r‚  )rZ   rƒ   r=   r—   r¡   r™   s         rC   rƒ  ÚIntegerArrayIndexer.__init__ì  sE   € ØŒØŒØŒ
ØŒØŒ	Ø�z‰z˜Q‹ÐˆØ—|‘|×2Ñ2´5·:±:Ó>ˆ�rE   c                 ó  • U R                   n[        R                  " XR                  R                  5      S   U l        [        R                  " XR                  5      U l        UR                  5       U l
        UR                  5       U l        g ræ   )r=   r
   rÅ   r¡   rg   Úidx_sizerX   r‚  Ú	idx_indexr†  r‡  rˆ  r‰  s     rC   rj  ÚIntegerArrayIndexer.prepareõ  sb   € Ø—,‘,ˆÜ×,Ò,¨W·k±k×6GÑ6GÓHÈÑKˆŒÜ ×,Ò,¨W·l±lÓCˆŒØ×2Ñ2Ó4ˆŒØ×0Ñ0Ó2ˆ�rE   c                 ó   • U R                   $ rB  ©r¹  ri  s    rC   rn  ÚIntegerArrayIndexer.get_sizeü  s   € Ø�}‰}ÐrE   c                 ó   • U R                   4$ rB  r½  ri  s    rC   rr  ÚIntegerArrayIndexer.get_shapeÿ  s   € Ø—‘ÐÐrE   c                 ó<   • U R                  S5      U R                  4$ ræ   r‘  ri  s    rC   ru  Ú$IntegerArrayIndexer.get_index_bounds  r“  rE   c                 óâ  • U R                   nU R                   R                  [        U R                  S5      U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5      nUR                  UR                  SX R                  5      SS9   UR                  U R                  5        S S S 5        [        U R                  XR                  R                   U R                  U R"                  U5      n[%        U R                  UU R                  R                   X0R&                  5      nX24$ ! , (       d  f       Nˆ= f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       rC   rx  ÚIntegerArrayIndexer.loop_head  s  € Ø—,‘,ˆà�‰×Ñœ8 D§L¡L°!Ó4°d·n±nÔEØ�‰�t—}‘}Ô%Ø×Ñ §¡Ô.Ø—L‘L §¡Ó0ˆ	Ø�_‰_Ø×Ñ  i·±Ó?Øð ò 
ð �N‰N˜4Ÿ;™;Ô'÷	
ô *Ø�L‰L˜'§:¡:×#3Ñ#3°T·Z±ZÀÇÁØó
ˆô " $§,¡,°Ø"&§*¡*×"2Ñ"2°E¿9¹9óFˆàÐÐ÷
õ 
ús   ÃE Å 
E.c                 ó  • U R                   n[        R                  " UUR                  U R                  5      5      nUR                  X R                  5        UR                  U R                  5        UR                  U R                  5        g rB  )
r=   r
   r  r>   rº  r  r—  r‡  r˜  rˆ  rœ  s      rC   r{  ÚIntegerArrayIndexer.loop_tail  s`   € Ø—,‘,ˆÜ×,Ò,¨WØ-4¯\©\¸$¿.¹.Ó-IóKˆ
à�‰�j§.¡.Ô1Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rE   )
rˆ  r‡  r=   rƒ   rº  r¹  r¡   r—   r‚  r™   NrŸ  rt   rE   rC   rµ  rµ  ç  s*   † ñò?ò3òò ò,ò õ*-rE   rµ  c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚBooleanArrayIndexeri$  z6
Compute indices from an array of boolean predicates.
c                 óê   • Xl         X l        X0l        X@l        UR                  S:X  d   eU R                   R                  [        R                  5      U l        [        U R                  S5      U l
        g ©NrG   r   )rƒ   r=   r—   r¡   rr   r¾   r   r”   r‚  r   rù   )rZ   rƒ   r=   r—   r¡   s        rC   rƒ  ÚBooleanArrayIndexer.__init__)  sR   € ØŒØŒØŒ
ØŒØ�z‰z˜Q‹ÐˆØ—|‘|×2Ñ2´5·:±:Ó>ˆŒÜ˜TŸ\™\¨1Ó-ˆ�	rE   c                 ó’  • U R                   n[        R                  " XR                  R                  5      S   U l        [        R                  " XR                  5      U l        [        R                  " XR                  5      U l	        UR                  5       U l        UR                  5       U l        UR                  5       U l        g ræ   )r=   r
   rÅ   r¡   rg   r™   rX   r‚  rº  rÆ   r†  r‡  Úbb_tailrˆ  r‰  s     rC   rj  ÚBooleanArrayIndexer.prepare2  sˆ   € Ø—,‘,ˆÜ×(Ò(¨·+±+×2CÑ2CÓDÀQÑGˆŒ	Ü ×,Ò,¨W·l±lÓCˆŒÜ×(Ò(¨·,±,Ó?ˆŒ
Ø×2Ñ2Ó4ˆŒØ×1Ñ1Ó3ˆŒØ×0Ñ0Ó2ˆ�rE   c           	      ó  • U R                   n[        R                  " XR                  5      n[        R                  " XR
                  5       nUR                  U5      n[        U R                  XR                  R                  U R                  U R                  UR                  5      nUR                  XAR                  XTR                  5      5      nUR!                  XB5        S S S 5        UR                  U5      $ ! , (       d  f       N= frB  )r=   r
   rò   rù   Ú	for_ranger™   r>   r
  rƒ   r—   r�   r¡   ró   r®  Úzextr9   r  )rZ   r=   rÆ   ÚloopÚcÚpreds         rC   rn  ÚBooleanArrayIndexer.get_size;  s¹   € Ø—,‘,ˆÜ×)Ò)¨'·9±9Ó=ˆä×Ò˜w¯	©	Ô2°dØ—‘˜UÓ#ˆAÜ,Ø—‘˜g§z¡z×'7Ñ'7Ø—
‘
˜DŸK™K¨¯©óˆDð —‘˜AŸ|™|¨D·&±&Ó9Ó:ˆAØ�M‰M˜!Ô#÷ 3ð �|‰|˜EÓ"Ð"÷ 3Õ2ús   ÁBC>Ã>
Dc                 ó$   • U R                  5       4$ rB  ©rn  ri  s    rC   rr  ÚBooleanArrayIndexer.get_shapeJ  ó   € Ø—‘“Ð!Ð!rE   c                 ó<   • U R                  S5      U R                  4$ ræ   r‘  ri  s    rC   ru  Ú$BooleanArrayIndexer.get_index_boundsM  s   € ð —‘˜Q“ §¡Ð+Ð+rE   c                 ó  • U R                   nU R                   R                  U R                  U R                  5        U R                   R                  U R                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5      nUR                  U R                  5      nUR                  UR                  SX R                  5      SS9   UR                  U R                  5        S S S 5        [        U R                  XR                  R                   U R                  U R"                  U5      nUR                  UR%                  U5      5         UR                  U R&                  5        S S S 5        [(        R*                  " X5      nUR                  XPR                  5        X#4$ ! , (       d  f       NÇ= f! , (       d  f       NS= f)Nr–  Fr\  )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         rC   rx  ÚBooleanArrayIndexer.loop_headR  s^  € Ø—,‘,ˆà�‰×Ñ˜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˜'§:¡:×#3Ñ#3°T·Z±ZÀÇÁØó
ˆð �_‰_˜WŸ\™\¨$Ó/Õ0Ø�N‰N˜4Ÿ<™<Ô(÷ 1ô ×,Ò,¨WÓ@ˆ
Ø�‰�j§*¡*Ô-ØÐ#Ð#÷+õ +ú÷ 1Õ0ús   ÄG ÆG1Ç 
G.Ç1
G?c                 óŠ  • U R                   nUR                  U R                  5        UR                  U R                  5        [        R
                  " UUR                  U R                  5      5      nUR                  X R                  5        UR                  U R                  5        UR                  U R                  5        g rB  )r=   r—  rÍ  r˜  r
   r  r>   rº  r  r‡  rˆ  rœ  s      rC   r{  ÚBooleanArrayIndexer.loop_tailj  s‚   € Ø—,‘,ˆØ�‰�t—|‘|Ô$Ø×Ñ §¡Ô-Ü×,Ò,¨WØ-4¯\©\¸$¿.¹.Ó-IóKˆ
à�‰�j§.¡.Ô1Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rE   )rˆ  r‡  rÍ  r=   rƒ   rÆ   rº  r¡   r—   r‚  r™   rù   NrŸ  rt   rE   rC   rÈ  rÈ  $  s*   † ñò.ò3ò#ò"ò,ò
$õ0-rE   rÈ  c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚSliceIndexeriu  z 
Compute indices along a slice.
c                 óê   • Xl         X l        X0l        X@l        XPl        X`l        Xpl        U R                   R                  [        R                  5      U l
        [        U R                  S5      U l        g ræ   )rƒ   r=   rÜ   r  r�  r—   r3  r¾   r   r”   r‚  r   rù   )rZ   rƒ   r=   rÜ   r  r�  r—   r3  s           rC   rƒ  ÚSliceIndexer.__init__z  sQ   € ØŒØŒØŒ
ØŒØŒØŒ
ØŒ
Ø—|‘|×2Ñ2´5·:±:Ó>ˆŒÜ˜TŸ\™\¨1Ó-ˆ�	rE   c                 óŽ  • U R                   nUR                  U R                  R                  U R                  5      U l        [        R                  " U R                  XR                  U R                  5        [        R                  " XR                  U R
                  5        [        R                  " XR                  R                  5      U l        [        R                   " XR"                  5      U l        [        R                   " XR"                  5      U l        UR)                  5       U l        UR)                  5       U l        g rB  )r=   rV  r  rg   r�  Údim_sizer.   r$  rƒ   r—   r3  r%  r
   Ú
is_neg_intÚstepÚis_step_negativerX   r‚  ró   rÆ   r†  r‡  rˆ  r‰  s     rC   rj  ÚSliceIndexer.prepare…  sË   € Ø—,‘,ˆà×-Ñ-¨d¯h©h¯n©n¸d¿h¹hÓGˆŒÜ×#Ò# D§L¡L°'¿:¹:Ø$(§J¡Jô	0ä×Ò˜'§:¡:¨t¯}©}Ô=Ü '× 2Ò 2°7¿J¹J¿O¹OÓ LˆÔä×(Ò(¨·,±,Ó?ˆŒ
Ü×(Ò(¨·,±,Ó?ˆŒ
Ø×2Ñ2Ó4ˆŒØ×0Ñ0Ó2ˆ�rE   c                 óX   • [         R                  " U R                  U R                  5      $ rB  )r.   r'  r=   r3  ri  s    rC   rn  ÚSliceIndexer.get_size“  s   € Ü×'Ò'¨¯©°d·j±jÓAÐArE   c                 ó$   • U R                  5       4$ rB  r×  ri  s    rC   rr  ÚSliceIndexer.get_shape–  rÙ  rE   c                 ób   • [         R                  " U R                  U R                  5      u  pX4$ rB  )r.   Úget_slice_boundsr=   r3  )rZ   ÚlowerÚuppers      rC   ru  ÚSliceIndexer.get_index_bounds™  s&   € Ü×/Ò/°·±¸d¿j¹jÓI‰ˆØˆ|ÐrE   c           	      ó(  • U R                   nU R                   R                  U R                  R                  U R                  5        U R                   R                  U R
                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5      nUR                  U R                  5      nUR                  U R                  UR                  SUU R                  R                  5      UR                  SUU R                  R                  5      5      nUR                  USS9   UR                  U R                   5        S S S 5        X#4$ ! , (       d  f       X#4$ = f)Nz<=r–  Fr\  )r=   r  r3  r&  ró   rù   rÆ   r—  r‡  r˜  r>   Úselectrë  r  Ústopr  rˆ  )rZ   r=   r™  rÞ  Úis_finisheds        rC   rx  Ú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Ÿ;™;Ô'÷ 8àÐ#Ð#÷ 8Ô7àÐ#Ð#ús   ÅFÆ
Fc                 óÐ  • U R                   nUR                  UR                  U R                  5      U R                  R
                  S/S9nUR                  X R                  5        [        R                  " XR                  U R                  5      5      nUR                  X0R                  5        UR                  U R                  5        UR                  U R                  5        g )Nr´   rµ   )r=   r®  r>   ró   r3  rê  r  r
   r  rÆ   r—  r‡  r˜  rˆ  )rZ   r=   r�  rß  s       rC   r{  ÚSliceIndexer.loop_tail¯  s›   € Ø—,‘,ˆØ—[‘[ §¡¨d¯j©jÓ!9¸4¿:¹:¿?¹?Ø(- wð !ð 0ˆ
à�‰�j§*¡*Ô-Ü×,Ò,¨W·l±lÀ4Ç:Á:Ó6NÓOˆ
Ø�‰�j§*¡*Ô-Ø�‰�t—}‘}Ô%Ø×Ñ §¡Õ,rE   )r  rÜ   rˆ  r‡  r=   rƒ   rÆ   r�  rè  r—   ró   rë  r‚  r3  rù   NrŸ  rt   rE   rC   rä  rä  u  s+   † ñò	.ò3òBò"òò$õ$-rE   rä  c                   ó<   • \ rS rSrSrS rS rS rS rS r	S r
S	rg
)ÚFancyIndexeriº  z,
Perform fancy indexing on the given array.
c           
      ót  • Xl         X l        X0l        [        R                  " X$R
                  UR                  5      U l        [        R                  " X$R                  UR                  5      U l        U R                   R                  [        R                  5      U l        / U l        / n[        U Vs/ s H  n[        U5      (       d  M  UPM     sn5      n	Sn
Sn[!        Xe5       GH)  u  pÍU[        R"                  L aZ  UR                  [        U5      -
  S-   U	-   n[%        U5       H+  n['        XX4U
5      nUR)                  U5        U
S-  n
US-  nM-     Ms  [+        U[        R,                  5      (       a4  UR/                  X-U5      n[1        XX4U
UU5      nUR)                  U5        GOY[+        U[        R2                  5      (       a9  [5        XXÜU R                  U
   5      n[7        XU5      nUR)                  U5        GO[+        U[        R8                  5      (       a¢  [;        U5      " XU5      n[+        UR<                  [        R2                  5      (       a  [?        XUUU R                  U
   5      nO9[+        UR<                  [        R@                  5      (       a  [C        XUU5      nO eUR)                  U5        O@[        U5      (       a!  U R                  R)                  U5        U
S-  n
O[E        SU< 35      eU
S-  n
US-  nGM,     X£R                  ::  d   X£R                  45       eX£R                  :  a4  ['        XX4U
5      nUR)                  U5        U
S-  n
X£R                  :  a  M4  [        U5      UR                  :X  d   [        U5      UR                  45       eXpl#        g s  snf )Nr   rG   r  )$rƒ   r=   rÜ   r
   rÅ   rg   rr   r  r±   r¾   r   r”   r‚  Únewaxesr¥   r   r¦   r"  r8   r  rk   r�   r#  rð   rä  rŸ   r›   r¡  rž   r~   r�   rµ  ÚBooleanrÈ  ÚAssertionErrorÚindexers)rZ   rƒ   r=   rÜ   r  r§   r¨   r  r˜   r/  r0  Únew_axr1  r—   r2  ro   Úindexerr3  rš   r¡   s                       rC   rƒ  ÚFancyIndexer.__init__¿  sý  € ØŒØŒØŒ
Ü×*Ò*¨7·I±I¸u¿z¹zÓJˆŒÜ×+Ò+¨G·[±[À%Ç*Á*ÓMˆŒØ—|‘|×2Ñ2´5·:±:Ó>ˆŒØˆŒàˆÜ©+ÓJª+ 3¼ÀS×9IŸ3©+ÑJÓKˆàˆØˆÜ" 7×8‰OˆHØœŸ™Ò&à!ŸJ™J¬¨W«Ñ5¸Ñ9¸KÑG�	Ü˜yÖ)�AÜ+¨G¸eÈ"ÓM�GØ—O‘O GÔ,Ø˜!‘G�BØ˜a‘K’Fñ	 *ñ
 ô ˜%¤§¡×1Ñ1Ø×+Ñ+¨G¸HÓE�Ü& w¸ÀRØ',¨eó5�à—‘ Ö(Ü˜E¤5§=¡=×1Ñ1Ü'¨¸%Ø(,¯©°B©ó9�ä(¨¸3Ó?�Ø—‘ Ö(Ü˜E¤5§;¡;×/Ñ/Ü# EÔ*¨7¸XÓF�Ü˜eŸk™k¬5¯=©=×9Ñ9Ü1°'Ø27¸Ø26·+±+¸b±/óC‘Gô   §¡¬U¯]©]×;Ñ;Ü1°'Ø27¸óA‘Gð ˜1Ø—‘ Õ(Ü˜U×#Ñ#Ø—‘×#Ñ# FÔ+Ø�a‘‘å$ÂEÐ%KÓLÐLØ�!‰GˆBØ�a‰K‹FñQ  9ðV —Z‘ZÓÐ1 "§j¡jÐ!1Ó1ÐØ—:‘:‹oÜ# G°eÀ"ÓEˆGØ�O‰O˜GÔ$Ø�!‰GˆBð —:‘:�oô
 �8‹} §
¡
Ó*ÐG¬S°«]¸E¿J¹JÐ,GÓGÐ*Ø �ùòm Ks   Â3N5ÃN5c                 óf  • U R                    H  nUR                  5         M     U R                  R                  [        R
                  S5      nU R                    Vs/ s H  oR                  5       PM     nnU R                   H  nUR                  X45        M     [        US5      U l
        g s  snf )NrG   rt   )r  rj  rƒ   rÄ   r   r”   rr  r   ÚinsertÚsumÚindexers_shape)rZ   ro   r+  Ú	res_shapes       rC   rj  ÚFancyIndexer.prepare  s‰   € Ø—”ˆAØ�I‰IŽKñ ð �l‰l×'Ñ'¬¯
©
°AÓ6ˆð -1¯MªMÓ:ªM q—[‘[–]©Mˆ	Ð:ð —”ˆAØ×Ñ˜Q Ö'ñ ô " )¨RÓ0ˆÕùò ;s   ÁB.c                 ó   • U R                   $ )z/
Get the resulting data shape as Python tuple.
)r
  ri  s    rC   rr  ÚFancyIndexer.get_shape  s   € ð ×"Ñ"Ð"rE   c           	      ó  • [        U5      U R                  R                  :X  d   eU R                  n[        R
                  nU R                  S5      nU R                  S5      nUnUn[        U R                  U R                  U5       HÃ  u  pšnUR                  UUR                  SX¥5      5      nU	R                  5       u  pÍUR                  X¼5      nUR                  X³R                  XÖ5      5      nUR                  SXµ5      nUR!                  UUR#                  UUU5      5      nUR!                  UUR#                  UUU5      5      nMÅ     UR!                  X‚5      nUR#                  XEU5      nUR#                  XEU5      nXx4$ )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   rG   ú==r  )r¥   rÜ   rr   r=   r
   Ú	false_bitr‚  r¦   r  r
  Úor_Úicmp_unsignedru  rÇ   Úsubr  r®  r÷  )rZ   r±   r²   r=   Úis_emptyrù   r+  ró  rô  r  rg   ÚstrideÚlower_indexÚupper_indexÚlower_offsetÚupper_offsetÚis_downwardss                    rC   Úget_offset_boundsÚFancyIndexer.get_offset_bounds  sh  € ô �7‹|˜tŸz™zŸ™Ó.Ð.Ð.Ø—,‘,ˆÜ×$Ñ$ˆØ�|‰|˜A‹ˆØ�l‰l˜1‹oˆØˆØˆÜ&)¨$¯-©-¸×9LÑ9LØ*1ö'3Ñ"ˆG˜Fà—{‘{ 8Ø#*×#8Ñ#8¸¸uÓ#KóMˆHð (/×'?Ñ'?Ó'AÑ$ˆKØ"Ÿ;™; vÓ;ˆLØ"Ÿ;™; v¯{©{¸;Ó/LÓMˆLà"×.Ñ.¨s°FÓAˆLØ—K‘K Ø '§¡¨|Ø/;Ø/;ó!=ó>ˆEð —K‘K Ø '§¡¨|Ø/;Ø/;ó!=ó>ŠEñ'3ð& —‘˜EÓ,ˆà—‘˜x¨uÓ5ˆØ—‘˜x¨uÓ5ˆØˆ|ÐrE   c                 ó>   • [        S U R                   5       6 u  pX4$ )Nc              3   ó@   #   • U  H  oR                  5       v •  M     g 7frB  )rx  )rD  ro   s     rC   rF  Ú+FancyIndexer.begin_loops.<locals>.<genexpr>A  s   é € ÐE²}°!§¡§ ²}ùs   ‚)r¦   r  )rZ   r¨   Úcountss      rC   Úbegin_loopsÚFancyIndexer.begin_loops@  s    € ÜÑE°t·}²}ÓEÐF‰ˆØˆÐrE   c                 ó\   • [        U R                  5       H  nUR                  5         M     g rB  )Úreversedr  r{  )rZ   ro   s     rC   Ú	end_loopsÚFancyIndexer.end_loopsD  s   € Ü˜$Ÿ-™-Ö(ˆAØ�K‰KŽMò )rE   )	rÜ   r=   rƒ   r  r
  r‚  r   r  r±   N)ru   rv   rw   rx   r}  rƒ  rj  rr  r  r"  r&  rz   rt   rE   rC   rþ  rþ  º  s(   † ñò@!òD1ò&#ò$òLõrE   rþ  c                 óL  • [         R                  " XR                  5      n[         R                  " XR                  5      n	UR                  n
[        XXEXg5      nUR                  5         UR                  nUR                  5       n[        XXÍ5      nUR                  n[         R                  " UU R                  [        R                  S5      5      nUR                  5       u  nn[         R                  " XX¨U	UR                   USU R"                  S9	n[%        XUU5      nUR'                  U5      nUR)                  UU/5      n[+        XUUU5        [         R,                  " UU5      nUR/                  UU5        UR1                  5         [3        XXÎR5                  5       5      $ )Nr   Fr  )r
   rÅ   rg   r±   r    rþ  rj  rñ   rr  Ú_empty_nd_implrò   rÄ   r   r”   r"  Úget_item_pointer2Úlayoutr;  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Ú_rm   r�   ÚcurÚnext_idxs                         rC   rJ  rJ  I  se  € ô ×!Ò! '¯9©9Ó5€FÜ×"Ò" 7¯K©KÓ8€GØ�8‰8€Dä˜7¨UØ&ó1€Gà‡O�OÔð �_‰_€FØ×"Ñ"Ó$€Jä
˜¨6Ó
>€CØ�x‰x€HÜ×'Ò'¨Ø(/×(<Ñ(<¼U¿Z¹ZÈÓ(KóM€Gð ×$Ñ$Ó&�J€GˆQô ×
#Ò
# G°dÀGØ$)§L¡L°'ÀeØ07×0JÑ0JñL€Cô �G e¨SÓ
1€Cð �,‰,�wÓ
€CØ
�+‰+�h  Ó
&€CÜˆw ¨¨cÔ2Ü×&Ò& w°Ó4€HØ‡M�M�(˜GÔ$à×ÑÔä˜G¨f·m±m³oÓFÐFrE   c           
      ó  • UR                   u  pEUu  pg[        U5      " XU5      nUR                  S:X  a@  [        XXW5      u  pW[	        XUR
                  XFU4U45      n[        XUR
                  U5      $ [        XX#XFU4U45      $ )z+
Advanced or basic indexing with an array.
r   )rï   r~   rr   r£   r<  rñ   r!   rJ  r>  s	            rC   Úfancy_getitem_arrayr5  t  s�   € ð
 —8‘8�L€EØ�H€CÜ
�UÔ
˜G¨cÓ
2€CØ‡z�z�Qƒä$ W°uÓB‰
ˆÜ$ W°s·±Ø%*°%°¸C¸6óCˆä  °3·?±?ÀCÓHÐHô ˜W¨sØ"¨%¨°C°6ó;ð 	;rE   c           	      óž  • UR                   nUR                  S5      nUR                  S5      nUR                  S;   a   Un	UR                  XcR                  5      n
Xš4$ Un	Un
[        UR                  5       H~  nUR                  X[   UR                  XK   U5      5      nUR                  SXÇ5      nUR                  UUR                  X¬5      U
5      n
UR                  UX‘R                  Xœ5      5      n	M€     UR                  X¦5      n
UR                  SUR                  U5      nUR                  XçU
5      n
UR                  XçU	5      n	Xš4$ )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   rG   ÚCFr–  r  )r²   r9   r+  rÇ   r·   r8   rr   r  r  r÷  r®  )rƒ   r=   ÚarrtyÚarrr  r±   r²   rù   r+  ró  rô  ro   Úmax_axis_offsetÚ
is_upwardsr  s                  rC   Úoffset_bounds_from_stridesr<  ˆ  s9  € ð �|‰|€HØ�=‰=˜Ó€DØ
�)‰)�A‹,€CØ‡|�|�tÓð ˆØ—‘˜H§j¡jÓ1ˆð0 ˆ<Ðð+ ˆØˆÜ�u—z‘zÖ"ˆAð &Ÿk™k¨'©*Ø*1¯+©+°f±iÀÓ*EóGˆOà ×,Ñ,¨T°?ÓIˆJà—N‘N :Ø#*§;¡;¨uÓ#FÈóOˆEà—N‘N :Ø#(¯+©+°eÓ*MóOŠEñ #ð —‘˜EÓ,ˆà×&Ñ& t¨S¯Z©Z¸Ó>ˆØ—‘˜x¨uÓ5ˆØ—‘˜x¨uÓ5ˆàˆ<ÐrE   c                 ó‚   • UR                  XBR                  5      nUR                  XR5      nUR                  XS5      nXg4$ )zy
Given [lower, upper) byte offsets and a base data pointer,
compute the memory pointer bounds as pointer-sized integers.
)Úptrtointr9   r®  )rƒ   r=   ró  rô  r    Údata_ptr_as_intr&  Úends           rC   Úcompute_memory_extentsrA  ²  s<   € ð
 ×&Ñ& t¯Z©ZÓ8€OØ�K‰K˜Ó/€EØ
�+‰+�oÓ
-€CØˆ:ÐrE   c                 ó:   • [        XX#XE5      u  px[        XXxU5      $ )zf
Compute a half-open range [start, end) of pointer-sized integers
which fully contain the array data.
)r<  rA  )	rƒ   r=   r8  r9  r  r±   r    ró  rô  s	            rC   Úget_array_memory_extentsrC  ½  s&   € ô .¨gÀØ.4ó?�L€Eä! '°EÀ$ÓGÐGrE   c                 ój   • UR                  UR                  SX%5      UR                  SXC5      5      nU$ )zO
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          rC   Úextents_may_overlaprK  È  s:   € ð —,‘,Ø×Ñ˜c 7Ó2Ø×Ñ˜c 7Ó2ó€Kð ÐrE   c                 óJ  ^ ^^^^^^^^^^^^• TR                   mSm[        R                  " TT5      mTmS mTR                  TSS9   TR	                  UR
                  UR                  5      nT R                  R                  TU5      n	U	R                   mTR                  U	T5      n	TR                  U	T5        T R                  [        R                  5      n
[        R                  " TTU
5       n[        R                  " T TTTTTR                   U5      n[        R                  " T TU	TTTU5      nTR                  TR#                  U5      U5        S S S 5        S S S 5        UU UUUUUUUUUU4S jnUU UUU4S jnXï4$ ! , (       d  f       N4= f! , (       d  f       N== f)Nr«   Fr\  c                 ó  >• [         R                  " TT
5      nTR                  TSS9 u  p#U   TR                  [         R                  " TTTR                  T5      TT	TU SS9U5        S S S 5        U   TR                  [         R                  " TTTTTTR                  U SS9U5        S S S 5        S S S 5        [        TTTTR                  U5      5      $ ! , (       d  f       Ns= f! , (       d  f       ND= f! , (       d  f       NM= f)NFr\  ©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       €€€€€€€€€€€€rC   Úsrc_getitemÚ&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ô  ˜ '¨5°'·,±,¸wÓ2GÓHÐH÷ •ú÷ •ú÷ 5Õ4ús:   ©C8®;CÁ)
C8Á36C'Â)C8Ã
C$	Ã C8Ã'
C5	Ã1C8Ã8
Dc                  óØ   >• TR                  TSS9   TR                  T5      n TR                  U T5      n TR                  R	                  TU 5        S S S 5        g ! , (       d  f       g = f)NFr\  )r  r>   Úbitcastrõ   Úfree)r    r=   rƒ   rT  r]  Ú	voidptrtys    €€€€€rC   Úsrc_cleanupÚ&maybe_copy_source.<locals>.src_cleanup  sQ   ø€ à�_‰_˜X¨eˆ_Ò4Ø—<‘< 	Ó*ˆDØ—?‘? 4¨Ó3ˆDØ�K‰K×Ñ˜W dÔ+÷ 5×4Ö4ús   ’A AÁ
A))r9   r
   rò   r  rÇ   r²   r·   rõ   Úallocatera  r  r¾   r   r”   Ú	loop_nestr*  r+  r>   )rƒ   r=   r]  r\  ÚsrcrZ  r[  rY  Ú	allocsizer    rÓ   r¨   rQ  Údest_ptrr^  rd  rT  rU  rV  rW  rX  rc  s   ```` ```        @@@@@@rC   Úmaybe_copy_sourcerk  Õ  sd  ÿü€ à�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Ó/°Ô:÷ <÷ 
1÷,I÷ Ið I÷(,ñ ,ð Ð#Ð#÷I <Õ;ú÷ 
1Õ	0ús&   ÁB*FÃ1A$FÅFÆ
F	ÆFÆ
F"c                 óì  • U R                  [        R                  S5      nU R                  [        R                  S5      n[        U5      [        U5      :”  a,  [        U5      [        U5      -
  nU/U-  U-   nU/U-  U-   nX#4$ [        U5      [        U5      :  aÀ  [        U5      [        U5      -
  nUSU  Vs/ s H  nUR	                  SX†5      PM     n	n[
        R                  " UR                  U	[        R                  5      n
UR                  UR                  U
5      SS9   SnU R                  R                  U[        U45        SSS5        X'S nX7S nX#4$ s  snf ! , (       d  f       N= f)aI  
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   rG   Nr  Fr\  z,cannot broadcast source array for assignment)rÄ   r   r–   r¥   r  Ú	functoolsÚreducerE  r
   Útrue_bitr  rÝ  r^  r_  r½   )rƒ   r=   r  r±   Útarget_shaperù   r+  Únd_diffr4  Ú
dim_is_oneÚacceptedrÒ   s               rC   Ú_bc_adjust_dimensionrt    si  € ð ×Ñ¤§¡¨QÓ/€DØ
×
Ñ
œuŸ{™{¨AÓ
.€Cô ˆ<Óœ3˜v›;Ó&Ü�lÓ#¤c¨&£kÑ1ˆà�˜‘ 6Ñ)ˆØ�&˜7Ñ" WÑ,ˆð" ˆ?Ðô 
ˆ\Ó	œS ›[Ó	(ä�f“+¤ LÓ 1Ñ1ˆà & x¨Ñ 0ó2Ú 0˜"ð ×+Ñ+¨D°"Ö:Ù 0ð 	ð 2ä×#Ò# G§L¡L°*Ü$+×$4Ñ$4ó6ˆð �_‰_˜WŸ\™\¨(Ó3¸Eˆ_ÒBØ@ˆCØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷ Cð ˜Ð!ˆØ˜(Ð#ˆàˆ?Ðùò2÷
 CÕBús   Â;E Ä(%E%Å%
E3c           
      óŽ  • / n/ nU R                  [        R                  S5      nU R                  [        R                  S5      n[        XB5       V	V
s/ s H  u  pšUR	                  SXš5      PM     nn	n
U V
s/ s H  o¡R	                  SX¨5      PM     nn
[        X¼5       VVs/ s H  u  pÞUR                  XÞ5      PM     nnn[        XôU5       VV	V
s/ s H  u  npšUR                  UXš5      PM     nn	nn
[        Xó5       VV
s/ s H  u  nn
UR                  UXz5      PM     nnn
XV4$ s  sn
n	f s  sn
f s  snnf s  sn
n	nf s  sn
nf )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   rG   r[  r  )rÄ   r   r–   r¦   r  rE  r÷  )rƒ   r=   r  r±   rp  Ú	bc_shapesÚ
bc_stridesrù   r+  ÚtarÚoldÚmismatchÚ
src_is_oneÚxÚyÚpredsÚps                    rC   Ú_bc_adjust_shape_stridesr€  7  sB  € ð €IØ€JØ×Ñ¤§¡¨QÓ/€DØ
×
Ñ
œuŸ{™{¨AÓ
.€Cô !$ LÔ 9ô;Ú 9‘H�Cð ×#Ñ# D¨#Ö3Ù 9ð ñ ;áAGÓHÂ¸#×%Ñ% d¨CÖ5Á€JÐHÜ,/°Ô,EÔFÒ,E¡D AˆW�\‰\˜!ÖÑ,E€EÑFä$'¨¸VÔ$DõFÚ$D‘[�Q˜ð —‘  3Ö,Ù$Dð ò Fô !$ EÔ 3ô5Ú 3‘f�a˜ð —.‘.  DÖ.Ù 3ð ñ 5àÐ Ð ùó;ùâHùÛFùôFùó5s   ÁD)Á8D/Â#D4ÃD:ÄEc           
      óÖ  • [         R                  " XR                  5      n[         R                  " XR                  5      n[	        XXVU5      u  pV[        XUXd5      u  pVUR                  [        U5      SS9n[        U5      " X5      n[        UUR                  [         R                  " X5      [         R                  " X5      UR                  UR                  UR                  S9  Xx4$ )zL
Broadcast the given array to the target_shape.
Returns (array_type, array)
ÚA©rr   r+  r8  )r
   rÅ   rg   r±   rt  r€  Úcopyr¥   r~   rÚ   r    rl   r²   r°   r³   )	rƒ   r=   Úarrtyper9  rp  r  r±   Únew_arrtypeÚnew_arrs	            rC   Ú_broadcast_to_shaperˆ  N  sÆ   € ô ×!Ò! '¯9©9Ó5€FÜ×"Ò" 7¯K©KÓ8€Gä*¨7¸VØ+7ó9�O€Fä.¨wÀØ/6óF�O€Fà—,‘,¤C¨Ó$5¸c�,ÐB€Kä˜Ô% gÓ7€GÜ�7ØŸ™Ü ×+Ò+¨GÓ<Ü"×-Ò-¨gÓ?ØŸL™LØŸ;™;ØŸ*™*ò&ð ÐÐrE   c                 óT   • UR                  UR                  SSS9nU" X5      nS nXE4$ )Nr‚  T)rr   r+  Úreadonlyc                 ób  • Uu  pEUR                   S   n[        U5      " XU5      n[        R                  " X5      n[	        XXdU5      u  px[        US[        U R                  UR                  R                  S5      5      S 5      5        UR                  5       n	[        XUR                  U	5      $ )Nr   r³   )rï   r~   r
   rÅ   rˆ  rË   r   r¾   r¸   r¿   r÷   r!   rñ   )
rƒ   r=   r\   rï   rh  Úshape_r\  r1  Údestrû   s
             rC   ÚcodegenÚ$_numpy_broadcast_to.<locals>.codegenm  s�   € Ø‰ˆØ—‘˜‘ˆä˜Ô °#Ó6ˆÜ×%Ò% gÓ6ˆÜ% g¸ÀFÓL‰ˆô 	��h¤Ø×&Ñ& t§¡×'?Ñ'?ÀÓ'IÓJØó!ô 	ð �n‰nÓˆÜ  °3·?±?ÀCÓHÐHrE   )r„  rÆ   )Ú	typingctxrÌ   rg   Úretr\   rŽ  s         rC   Ú_numpy_broadcast_tor’  h  s4   € à
�*‰*˜%Ÿ+™+¨c¸Dˆ*Ð
A€CÙ
ˆeÓ
€CòIð ˆ<ÐrE   c                 ó<   • UR                  SS9nU" U5      nS nX44$ )NT©rŠ  c                 óø   • Uu  nUR                   S   n[        U5      " XU5      n[        R                  " UR                  R
                  5      Ul        UR                  5       n[        XUR                  U5      $ ræ   )	rï   r~   r
   Úget_null_valuer³   r9   r÷   r!   rñ   )rƒ   r=   r\   rï   rh  r\  r�  rû   s           rC   rŽ  Ú#get_readonly_array.<locals>.codegen…  sb   € Ø‰ˆØ—‘˜‘ˆä˜%Ô  °3Ó7ˆä×,Ò,¨T¯[©[×-=Ñ-=Ó>ˆŒØ�n‰nÓˆÜ  °3·?±?ÀCÓHÐHrE   )r„  )r�  r9  r‘  r\   rŽ  s        rC   Úget_readonly_arrayr˜    s-   € ð �(‰(˜Dˆ(Ð
!€CÙ
ˆc‹(€CòIð ˆ<ÐrE   c                 ó  • U R                   n[        U5      n[        U5      nX4:”  a  [        S5      eU H  nUS:  d  M  [        S5      e   SnXC-
  nXc:  a1  X&   nX   n	X‰:X  d  US:X  a  US-  nUS-  nO[        S5      eXc:  a  M0  g g )NzDinput operand has more dimensions than allowed by the axis remappingr   z4all elements of broadcast shape must be non-negativerG   z=operands could not be broadcast together with remapped shapes)rg   r¥   r½   )
rÌ   Ú
dest_shapeÚ	src_shapeÚsrc_ndimÚ	dest_ndimr™   Ú	src_indexÚ
dest_indexÚsrc_dimÚdest_dims
             rC   Ú_can_broadcastr¢  ‘  s·   € à—‘€IÜ�9‹~€HÜ�J“€IØÓÜð 1ó 2ð 	2ãˆØ�!�8Üð ,ó -ð -ñ ð €IØÑ%€JØ
Ó
ØÑ&ˆØÑ)ˆð Ó '¨Q£,Ø˜‰NˆIØ˜!‰O‰Jäð 4ó 5ð 5ð ×
rE   c                 óZ   • [         R                  " U 5      n [        X5        [        X5      $ rB  )ÚnpÚasarrayr¢  r’  ©rÌ   rg   s     rC   Ú_default_broadcast_to_implr§  ±  s#   € Ü�JŠJ�uÓ€EÜ�5Ô Ü˜uÓ,Ð,rE   c           	      óÜ  • [        U 5      (       d  [        R                  " S5      e[        U[        R
                  5      (       a  S nU$ [        U[        R                  5      (       aG  [        UR                  [        R
                  5      (       d  Sn[        R                  " U5      e[        $ [        U[        R                  5      (       ak  UR                  S:”  a[  [        U Vs/ s H  n[        U[        R                  5      PM     sn5      (       d  SU S3n[        R                  " U5      e[        $ [        U[        R                  5      (       at  UR                  S:X  ad  [        U [        R                  5      =(       a    U R                  S:H  n[        U 5      (       d  U(       a  S nU$ Sn[        R                  " U5      eS	U-  n[        R                  " U5      es  snf )
Nz-The first argument "array" must be array-likec                 ó0   • [         R                  " X45      $ rB  )r¤  Úbroadcast_tor¦  s     rC   rè   Ú numpy_broadcast_to.<locals>.impl¾  s   € Ü—?’? 5¨(Ó3Ð3rE   z7The second argument "shape" must be a tuple of integersr   Ú"z," object cannot be interpreted as an integerc                 óD   • [         R                  " U 5      n [        U 5      $ rB  )r¤  r¥  r˜  r¦  s     rC   rè   r«  Ò  s   € ô Ÿ
š
 5Ó)�Ü)¨%Ó0Ð0rE   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ž   rr   r   )rÌ   rg   rè   rÒ   ÚtypÚis_scalar_arrays         rC   Únumpy_broadcast_tor´  ·  s}  € ä˜E×"Ñ"Ü× Ò ð "1ó 2ð 	2ô �%œŸ™×'Ñ'ò	4àˆä	�Eœ5Ÿ>™>×	*Ñ	*Ü˜%Ÿ+™+¤u§}¡}×5Ñ5ØKˆCÜ×$Ò$ SÓ)Ð)Ü)Ð)ä	�Eœ5Ÿ;™;×	'Ñ	'¨E¯K©K¸!«OäÁUÓKÂU¸c”J˜s¤E×$8Ñ$8Ö9ÁUÑK×LÑ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   Ã)$G)c                 óØ   • [        [        U5      5       HR  nU[        U5      -
  U-   nX#   nUS:  a  [        S5      eUS:X  a  M1  X   S:X  a  XPU'   M?  X   U:w  d  MI  [        S5      e   g )Nr   ú#negative dimensions are not allowedrG   z=shape mismatch: objects cannot be broadcast to a single shape)r8   r¥   r½   )ÚrÚmrg   ro   rØ   Útmps         rC   Únumpy_broadcast_shapes_listrº  â  sv   € ä”3�u“:ÖˆØ”�E“
‰N˜QÑˆØ‰hˆØ�‹7ÜÐBÓCÐCØ�!‹8ÙØ‰4�1‹9Øˆa‹DØ‰T�S�[Üð 2ó 3ð 3ò rE   c                  óÖ  ^^	• [        U 5       HÔ  u  p[        U[        R                  5      n[        U[        R                  5      =(       a$    [        UR
                  [        R                  5      n[        U[        R                  5      =(       a    [        UR                  5      S:H  nU(       a  M¦  U(       a  M¯  U(       a  M¸  SU SU 3n[        R                  " U5      e   SmU  Hf  n[        U[        R                  5      (       a  [        TS5      mM0  [        U[        R                  5      (       d  MQ  [        T[        U5      5      mMh     TS:X  a  S $ ST-  m	UU	4S jnU$ )Nr   z	Argument z* must be either an int or tuple[int]. Got rG   c                  ó   • gr«  rt   ©rï   s    rC   Ú<lambda>Ú+ol_numpy_broadcast_shapes.<locals>.<lambda>	  s   € ˜RrE   ©rG   c                  ó,  >• S/T-  nTn[        U 5       H[  n[        U[        5      (       a  [        U5      S:”  a  [	        UTU5        M6  [        U[
        5      (       d  MM  [	        UTU45        M]     [        U5       H  u  pE[        X$U5      nM     U$ rÊ  )r   r�   rÀ   r¥   rº  rÂ   Ú	enumerater/   )rï   r·  rL  Úargr˜   Úelemr¸  Útup_inits         €€rC   rè   Ú'ol_numpy_broadcast_shapes.<locals>.impl  sƒ   ø€ à��a‘ˆAØˆCÜ% dÖ+�Ü˜c¤5×)Ñ)¬c°#«h¸«lÜ/°°1°cÖ:Ü ¤S×)Ó)Ü/°°1°s°fÖ=ñ	 ,ô
 ' qž\‘	�Ü# C¨dÓ3’ñ *àˆJrE   )rÂ  r�   r   rŸ   r®  r�   r¯  r¥   r	   rê   ÚmaxrO  )
rï   r˜   rÃ  Úis_intÚis_int_tupleÚis_empty_tuplerÒ   rè   r¸  rÅ  s
           @@rC   Úol_numpy_broadcast_shapesrË  ó  s  ù€ ô ˜d–O‰ˆÜ˜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ˆö	ð ˆrE   c                  óÞ  ^^• [        U 5       H/  u  p[        U5      (       a  M  [        R                  " SU S35      e   S nS nU  Hf  n[	        U[
        R                  [
        R                  45      (       a  UR                  nOUnUc  UnMH  X4:w  d  MO  [        R                  " SU  35      e   Sm[        U 5       HŸ  u  p[	        U[
        R                  5      (       a  [        TUR                  5      mM<  [	        U[
        R                  [
        R                  [
        R                  45      (       a  [        TS5      mMˆ  [        R                  " SU 35      e   ST-  mUU4S jnU$ )	Nz
Argument "z" must be array-likezTMismatch of argument types. Numba cannot broadcast arrays with different types. Got r   rG   zUnhandled type ©r   c                  ón  >• S/T-  n[        U 5       H.  n[        UT[        R                  " U5      R                  5        M0     Tn[        T5       H  n[        X4X   5      nM     / n[        U 5       H=  nUR                  [        R                  " [        R                  " U5      U5      5        M?     U$ r¨  )	r   rº  r¤  r¥  rg   r8   r/   rk   rª  )rï   rg   rÌ   rL  ro   Úoutsr¸  rÅ  s         €€rC   rè   Ú$numpy_broadcast_arrays.<locals>.impl?  s˜   ø€ ð
 ��a‘ˆÜ# DÖ)ˆEÜ'¨¨q´"·*²*¸UÓ2C×2IÑ2IÖJñ *ð ˆä�q–ˆAÜ ¨©Ó1ŠCñ ð ˆÜ# DÖ)ˆEØ�K‰KœŸš¬¯
ª
°5Ó(9¸3Ó?Ö@ñ *àˆrE   )rÂ  r   r	   rê   r�   r   rž   rO  r�   ÚArrayCompatiblerÇ  rr   ÚNumberr  )rï   r˜   rÃ  Úunified_dtypeÚdtrè   r¸  rÅ  s         @@rC   Únumpy_broadcast_arraysrÕ    sH  ù€ ô ˜d–O‰ˆÜ ×$Ó$Ü×$Ò$ z°#°ð 75ð &5ó 6ð 6ñ $ð
 €MØ	€BÛˆÜ�cœEŸK™K¬¯©Ð9×:Ñ:Ø—‘‰BàˆBàÑ ØŠMØÕ Ü×$Ò$ð &,à,0¨6ð&3ó 4ð 4ñ ð 	
€AÜ˜d–O‰ˆÜ�cœ5×0Ñ0×1Ñ1Ü�A�s—x‘xÓ ŠAÜ˜œeŸl™l¬E¯M©M¼5¿?¹?ÐK×LÑLÜ�A�q“	ŠAä×$Ò$ °s°eÐ%<Ó=Ð=ñ $ð �a‰x€Höð( €KrE   c                 ó   • [         e)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ß   ©rZ  Úindex_shapes     rC   Úraise_with_shape_contextrÙ  V  ó
   € ô ÐrE   Úgeneric)Útargetc                 ó  • [        U [        R                  5      (       aj  [        U[        R                  5      (       aJ  U R                  UR                  :X  a/  [        U R                  [        R                  5      (       a  S nU$ g g g g )Nc                 ó   • [        S5      e)Nz0cannot assign slice from input of different sizerç   r×  s     rC   rè   Ú1ol_raise_with_shape_context_generic.<locals>.implf  s   € ÜÐOÓPÐPrE   ©r�   r   r®  r�   rŸ   ©rZ  rØ  rè   s      rC   Ú#ol_raise_with_shape_context_genericrâ  ]  sp   € ô 	�:œuŸ~™~×.Ñ.Ü�;¤§¡×/Ñ/Ø×Ñ˜K×-Ñ-Ó-Ü�z×'Ñ'¬¯©×7Ñ7ò	Qàˆð	 8ð 	.ð 	0ð 	/rE   ÚCPUc                 ó  • [        U [        R                  5      (       aj  [        U[        R                  5      (       aJ  U R                  UR                  :X  a/  [        U R                  [        R                  5      (       a  S nU$ g g g g )Nc           	      ó\  • [        U 5      S:X  a
  SU S    S3nO/SSR                  U  Vs/ s H  n[        U5      PM     sn5       S3n[        U5      S:X  a
  SUS    S3nO/SSR                  U Vs/ s H  n[        U5      PM     sn5       S3nSU SU 3n[        U5      es  snf s  snf )	NrG   Ú(r   z,)ú, Ú)zcannot assign slice of shape z from input of shape )r¥   ÚjoinÚstrr½   )rZ  rØ  Ú	shape_strr|  Ú	index_strrÒ   s         rC   rè   Ú-ol_raise_with_shape_context_cpu.<locals>.implr  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$
Á2B)
rà  rá  s      rC   Úol_raise_with_shape_context_cpurî  k  so   € ä�:œuŸ~™~×.Ñ.Ü�;¤§¡×/Ñ/Ø×Ñ˜K×-Ñ-Ó-Ü�z×'Ñ'¬¯©×7Ñ7ò	"ð ˆð 8ð 	.ð 	0ð 	/rE   c                 óŒ  ^ ^^(^)^*• UR                   u  pgm*Uu  p‡m([        U5      " T TU5      n[        R                  " TUR                  5      n	[        R                  " TUR
                  5      n
UR                  n[        T TXhXE5      nUR                  5         S n[        T*[        R                  5      (       Ga€  T*R                  m)UR                  5       n[        T*5      " T TT(5      m([        T TT*T(U5      u  m*m([        R                  " TT(R                  5      n[        R                  " TT(R
                  5      nT(R                  n[        R                  n[!        U5      [!        U5      :X  d   e[#        Xþ5       H)  u  nnTR%                  UTR'                  SUU5      5      nM+     TR)                  USS9   U" T TUU5        SSS5        [+        T TT*T(UUU5      u  nnUR-                  U
UR.                  5      u  nn[1        T TUUU5      u  nn[3        T TUUUU5      n[5        T TUT*T(UUU5      u  nnOÜ[        T*[        R6                  5      (       a²  T*R                  m)UR                  5       n[!        U5      S:X  d   eT R9                  [         [;        [        R<                  T*5      5      nU" TT(45      nTR'                  SUS   U5      nTR)                  USS9   U" T TU4US   45        SSS5        UU U(U)U*4S jnS	 nOT*m)U(4S
 jnS nT R?                  [        R@                  S5      n URC                  5       u  n!n"[E        U"5      n"URF                   H  n#U"RI                  U#U 5        M     U" V$s/ s H
  n$U$c  M  U$PM     n%n$U" U%5      n&T RK                  TU&T)UR                  5      n&[        RL                  " T TUXšURN                  U!ST RP                  S9	n'[S        T TUU&U'5        URU                  5         U" 5         T RW                  5       $ ! , (       d  f       GN[= f! , (       d  f       GN?= fs  sn$f )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           	      óÞ  • U R                   R                  [        5      n[        R                  " [        R
                  [        U5      5      [        R                  " [        R
                  [        U5      5      4nUR                  U R                   U0 5      nU R                  XF5      nU" XR                  XR                  S   U5      U R                  XR                  S   U5      45        g ©Nr   rG   )Útyping_contextÚresolve_value_typerÙ  r   r®  Úint64r¥   Úget_call_typerR   Ú
make_tuplerï   )rƒ   r=   rZ  rØ  ÚfntyÚargtysÚ	raise_sigÚfuncs           rC   Úraise_shape_mismatch_errorÚ2fancy_setslice.<locals>.raise_shape_mismatch_error“  sÀ   € ð ×%Ñ%×8Ñ8Ü$ó&ˆä—.’.¤§¡¬c°*«oÓ>Ü—.’.¤§¡¬c°+Ó.>Ó?ðAˆà×&Ñ& w×'=Ñ'=¸vÀrÓJˆ	Ø×#Ñ# DÓ4ˆÙˆW×)Ñ)¨'·>±>À!Ñ3DØ*4ó6à×)Ñ)¨'·>±>À!Ñ3DØ*5ó7ð8õ 	9rE   r[  Fr\  NrG   r   c                 ó”   >• U u  nTR                  [        R                  [        TT[        R
                  5      5      nU" TTU45      $ rB  )rR   ÚoperatorÚgetitemr%   r   r”   )rP  r˜   Úgetitem_implr=   rƒ   rh  Ú	src_dtyper\  s      €€€€€rC   r^  Ú#fancy_setslice.<locals>.src_getitemÛ  sF   ø€ Ø!‰DˆCØ"×/Ñ/Ü× Ñ Ü˜) U¬E¯J©JÓ7óˆLñ   ¨#¨s¨Ó4Ð4rE   c                  ó   • g rB  rt   rt   rE   rC   rd  Ú#fancy_setslice.<locals>.src_cleanupã  ó   € ØrE   c                 ó   >• T$ rB  rt   )rP  rh  s    €rC   r^  r  ë  s   ø€ ØˆJrE   c                  ó   • g rB  rt   rt   rE   rC   rd  r  î  r  rE   r  ),rï   r~   r
   rÅ   rg   r±   r    rþ  rj  r�   r   r  r�   rr  rˆ  r  r¥   r¦   r  r  r  rC  r  r²   rA  rK  rk  ÚSequencerR   r%   r”   rÄ   r–   r"  rÁ   r   r  r“   r*  r+  r;  r�   r&  rd  )+rƒ   r=   r\   rï   r§   r¨   rÜ   r1  r  Údest_shapesÚdest_stridesÚ	dest_datar  rû  rØ  rZ  r[  rY  Úshape_errorÚurÙ   Ú	src_startÚsrc_endÚ
dest_lowerÚ
dest_upperÚ
dest_startÚdest_endr]  r^  rd  Úlen_implÚseq_lenrù   Údest_indicesr!  ro   rÓ  rP  r�   rj  rh  r  r\  s+   ``                                      @@@rC   rQ  rQ  �  s  ü€ ð —h‘h�O€EˆeØ�K€CˆCä
�UÔ
˜G W¨cÓ
2€CÜ×&Ò& w°·	±	Ó:€KÜ×'Ò'¨°·±Ó=€LØ—‘€Iä˜7 G¨UØ&ó1€Gà‡O�OÔò9ô �%œŸ™×&Ò&à—K‘Kˆ	Ø×'Ñ'Ó)ˆÜ˜Ô ¨°#Ó6ˆä(¨°'¸5À#Ø)4ó6‰
ˆˆsä×)Ò)¨'°3·9±9Ó=ˆ
Ü×*Ò*¨7°C·K±KÓ@ˆØ—8‘8ˆô ×'Ñ'ˆÜ�;Ó¤3 z£?Ó2Ð2Ð2ä˜
Ö0‰DˆAˆqØ!Ÿ+™+ kØ&-×&9Ñ&9¸$ÀÀ1Ó&EóGŠKñ 1ð �_‰_˜[°ˆ_Ò7Ù& w°¸Ø'2ô4÷ 8ô
 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ô:÷ 8÷	5ñ 	5ó	ð ˆ	õ	ò	ð ×Ñ¤§¡¨QÓ/€Dà"×.Ñ.Ó0Ñ€L�&ô �&‹\€Fð
 �_Œ_ˆØ�‰�a˜Öñ ñ "(Ó9¢˜A¨1—a¡€NÐ9á
�nÓ
%€Cð �,‰,�w  Y°·±Ó
<€Cô ×(Ò(¨°'¸9Ø)4Ø).¯©°|Ø49Ø5<×5OÑ5Oñ	Q€Hô
 ˆw˜ ¨¨XÔ6à×ÑÔá„Mà×"Ñ"Ó$Ð$÷A 8Ö7ú÷B 8Ö7üòV :s$   Æ=PË&P/Í?QÎ
QÐ
P,Ð/
P>c           
      óÈ  • UR                   S   nUR                   SS  nUS   nUSS  n[        XW5       VV	s/ s H&  u  p‰U R                  XU[        R                  5      PM(     nnn	[
        R                  " XUS   R                  5      n
[        R                  " [        R                  [        U5      S9n[        R                  " UR                  XK5      nXj4nXÍ4$ s  sn	nf )Nr   rG   ©r�   rÆ   )rï   r¦   r“   r   r”   r
   rl   r9   r®  r¥   r   r%   rñ   )rƒ   r=   r\   rï   rÜ   Údimtysr  rn   rE  r�   rg   ÚshapetyÚnew_sigÚnew_argss                 rC   Úvararg_to_tupler    sË   € Ø�H‰H�Q‰K€EØ�X‰X�a�bˆ\€Fà
ˆq‰'€CØ��ˆ8€Dô ˜vÔ,ô.Ú,‘�ð �L‰L˜ r¬5¯:©:Ö6Ù,ð 	ñ .ô ×Ò˜w¨d°1©g¯l©lÓ;€Eä�nŠn¤5§:¡:´S¸³YÑ?€GÜ×Ò˜sŸ™°Ó?€GØˆz€HàÐÐùó.s   ·-Czarray.transposec                 ó<   • [        XUR                  S   US   5      $ ræ   )Úarray_Trï   ©rƒ   r=   r\   rï   s       rC   Úarray_transposer!  /  s   € ä�7 S§X¡X¨a¡[°$°q±'Ó:Ð:rE   c                 óÞ   • [        U 5      [        [        U 5      5      :w  a  [        S5      e[        U5      nU  H"  nXC:¼  d  [        U5      U:”  d  M  [        S5      e   X   US S & X    US S & g )Nzrepeated axis in transposez2axis is out of bounds for array of given dimension)r¥   rº   r½   Úabs)râ   rg   r±   r�  r|  s        rC   Úpermute_arraysr$  4  sn   € Ü
ˆ4ƒy”Cœ˜D›	“NÓ"ÜÐ5Ó6Ð6Ü
ˆe‹*€CÛˆØ‹8”s˜1“v •|Üð /ó 0ð 0ñ ð
 ‰{€E‰!€HØ‘€G‰A�JrE   c           
      ór  • UR                   S   n[        U5      " XUS   5      nUR                   S   US   pvUR                  UR                  p˜U R	                  [
        R                  5      n
[        R                  " X¨5      nXuR                  UR                  /nU Vs/ s H  n[        R                  " X5      PM     nn[        XÎ5       H  u  nnUR                  UU5        M     [
        R                  " U	SSS9nU R!                  [
        R                  U R#                  U
5      5      nU Vs/ s H  n[        U5      " X5      PM     nn[        UU5       HR  u  nn[%        UUR'                  UU
R)                  5       5      U R!                  [
        R                  U5      /U/US S9  MT     U R+                  U[,        [.        R0                  " [
        R2                  UUU5      U Vs/ s H  nUR5                  5       PM     sn5        [        UR6                  5      " X5      n[%        UUR8                  UR;                  US   5      UR;                  US   5      UR<                  UR>                  UR@                  S9  UR5                  5       n[C        XUR6                  U5      $ s  snf s  snf s  snf )Nr   rG   r«   ©r�   rr   r+  ©r    rg   r±   r²   r°   rb  r8  )"rï   r~   rÆ   r�   r¾   r   r”   r   Ú	ArrayTyperg   r±   r
   rX   r¦   r  rž   rÄ   r‚   rÚ   ra  Ú
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Úarysr1  Úll_arysrh  ÚdstÚ	np_ary_tyÚnp_itemsizeÚnp_arysÚnp_aryÚll_aryÚar‘  rû   s                            rC   Úarray_transpose_tupler8  C  sH  € à�H‰H�Q‰K€EÜ
�UÔ
˜G¨d°1©gÓ
6€Cà—8‘8˜A‘;  Q¡ˆDØ—l‘l F§L¡Lˆeà×$Ñ$¤U§Z¡ZÓ0€GÜ—,’,˜wÓ1€Kð —)‘)˜SŸ[™[Ð)€DÙBFÓGÂ$¸QŒw×"Ò" 7Ö8Á$€GÐGô ˜Ö&‰ˆˆSØ�‰�c˜3Öñ 'ô —’ %¨a¸Ñ<€IØ×&Ñ&¤u§z¡zØ'.×'=Ñ'=¸gÓ'FóH€Kñ AEÓEÂ¸1Œz˜)Ô$ WÖ6Á€GÐEô ˜g wÖ/‰ˆ�Ü�vØ#ŸO™O¨F°G×4FÑ4FÓ4HÓIØ%×2Ñ2´5·:±:¸xÓHÐIØ +˜}Ø +Ø#ô	%ñ 0ð ×Ñ˜W¤nÜ#×-Ò-¬e¯j©jØ.7¸ÀIóOá5<Ó=²W°˜aŸk™kžm±WÑ=ô?ô �S—_‘_Ô
% gÓ
7€CÜ�3ØŸ™Ø Ÿ™ g¨a¡jÓ1Ø"Ÿ<™<¨°©
Ó3ØŸL™LØŸ;™;ØŸ*™*ò&ð �-‰-‹/€CÜ˜W¨s¯©ÀÓDÐDùòO Hùò Fùò  >s   Â  J*Ä2J/Ç,J4c                 ó6   • [        XX#5      u  pE[        XXE5      $ rB  )r  r8  ©rƒ   r=   r\   rï   r  r  s         rC   Úarray_transpose_varargr;  z  s   € ä'¨¸#ÓDÑ€GÜ  °7ÓEÐErE   c                 óŽ   • [        U [        R                  5      (       a  [        R                  " S5      eUc  SS jnU$ SS jnU$ )Nz#np.transpose does not accept tuplesc                 ó"   • U R                  5       $ rB  ©Ú	transpose©r7  Úaxess     rC   Únp_transpose_implÚ*numpy_transpose.<locals>.np_transpose_impl†  s   € Ø—;‘;“=Ð rE   c                 ó$   • U R                  U5      $ rB  r>  r@  s     rC   rB  rC  ‰  s   € Ø—;‘;˜tÓ$Ð$rE   rB  )r�   r   rO  r	   rê   )r7  rA  rB  s      rC   Únumpy_transposerE  €  sD   € ä�!”U—_‘_×%Ñ%Ü× Ò Ð!FÓGÐGà�|ô	!ð Ðô	%ð ÐrE   ÚTc                 ó(  • UR                   S::  a  UnOô[        U5      " XU5      n[        U5      " X5      n[        R                  " XR                  UR                   5      n[        R                  " XR
                  UR                   5      n[        UUR                  [        R                  " XS S S2   5      [        R                  " XS S S2   5      UR                  UR                  UR                  S9  UR                  5       n[        XX$5      $ )NrG   éÿÿÿÿr8  )rr   r~   r
   rÅ   rg   r±   rÚ   r    rl   r²   r°   r³   r÷   r!   )	rƒ   r=   r²  r  rû   r  r‘  r  r±   s	            rC   r  r  �  sÐ   € à
‡x�x�1ƒ}Ø‰ä˜Œo˜g°Ó6ˆÜ˜Œo˜gÓ/ˆÜ×%Ò% g¯y©y¸#¿(¹(ÓCˆÜ×&Ò& w·±¸S¿X¹XÓFˆÜ�sØŸH™HÜ$×/Ò/°ÁÀ"À¹ÓFÜ&×1Ò1°'Á4ÀRÀ4¹=ÓIØ #§¡Ø"Ÿ{™{Ø!Ÿj™jò	*ð �m‰m‹oˆÜ˜W¨sÓ8Ð8rE   c                 óZ  • [        U [        R                  5      (       d  [        R                  " S5      e[        U[        R                  5      (       d  [        R                  " S5      e[        U[
        [        R                  45      (       d  [        R                  " S5      eSS jnU$ )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                 ó^   • [         R                  " XU5      n[         R                  " SU5      $ )Ng      $@)r¤  ÚlinspaceÚpower)r&  rø  Únumr}  s       rC   rè   Únumpy_logspace.<locals>.impl¬  s#   € Ü�KŠK˜ SÓ)ˆÜ�xŠx˜˜aÓ Ð rE   ©é2   )r�   r   rÒ  r	   rê   rÂ   rŸ   )r&  rø  rM  rè   s       rC   Únumpy_logspacerQ  £  s|   € ä�eœUŸ\™\×*Ñ*Ü× Ò Ð!NÓOÐOÜ�dœEŸL™L×)Ñ)Ü× Ò Ð!NÓOÐOÜ�cœC¤§¡Ð/×0Ñ0Ü× Ò Ð!NÓOÐOô!ð €KrE   c                 ó  ^• [        U [        R                  5      (       d  Sn[        R                  " U5      e[        U[        R                  5      (       d  Sn[        R                  " U5      e[        U[
        [        R                  45      (       d  Sn[        R                  " U5      e[        S X4 5       5      (       a=  [        [        R                  " [        U 5      [        U5      S 5      5      mSU4S jjnU$ SS jnU$ )Nz%The argument "start" must be a numberz$The argument "stop" must be a numberú%The argument "num" must be an integerc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frB  ©r�   r   ÚComplex©rD  rÃ  s     rC   rF  Ú"numpy_geomspace.<locals>.<genexpr>Á  ó   é € Ð
C²]¨cŒ:�cœ5Ÿ=™=×)Ð)²]ùrH  c                 ód  >• U S:X  d  US:X  a  [        S5      eT	" U 5      n T	" U5      n[        S:  a†  U R                  S:H  UR                  S:H  -  n[        R                  " U 5      S:H  [        R                  " U5      S:H  -  nSnU(       a  U R
                  n UR
                  nSnU(       a	  U * n U* nU* nO[        R                  " U 5      nX-  n X-  n[        R                  " U 5      n[        R                  " U5      n[        R                  " XgU5      nUS:”  a  XS'   US:”  a  XS'   XX-  $ )Nr   ú&Geometric sequence cannot include zerora  rH  rG   y              ð?)r½   r   Úrealr¤  ÚsignÚimagÚlog10Úlogspace)
r&  rø  rM  Úboth_imaginaryÚboth_negativeÚout_signÚlogstartÚlogstopr  Úresult_dtypes
            €rC   rè   Ú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Ü—[’[ °CÓ8ˆFð �Q‹wØ!�q‘	Ø˜“7Ø!%˜2‘JØÑ$Ð$rE   c                 óp  • U S:X  d  US:X  a  [        S5      e[        R                  " U 5      S:H  [        R                  " U5      S:H  -  nSnU(       a	  U * n U* nU* n[        R                  " U 5      n[        R                  " U5      n[        R                  " XVU5      nUS:”  a  XS'   US:”  a  XS'   XG-  $ )Nr   r[  rH  rG   )r½   r¤  r]  r_  r`  )r&  rø  rM  rb  rc  rd  re  r  s           rC   rè   rg  è  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Ü—[’[ °CÓ8ˆFð �Q‹wØ!�q‘	Ø˜“7Ø!%˜2‘JØÑ$Ð$rE   rO  )r�   r   rÒ  r	   rê   rÂ   rŸ   rI  r   r¤  Úresult_typer   )r&  rø  rM  rÒ   rè   rf  s        @rC   Únumpy_geomspacerj  ³  sÏ   ø€ ä�eœUŸ\™\×*Ñ*Ø5ˆÜ× Ò  Ó%Ð%ä�dœEŸL™L×)Ñ)Ø4ˆÜ× Ò  Ó%Ð%ä�cœC¤§¡Ð/×0Ñ0Ø5ˆÜ× Ò  Ó%Ð%ä
Ñ
C°e±]Ó
C×CÑCÜ!¤"§.¢.´¸%³Ü19¸$³Àó#Gó Hˆ÷ 	%ðp €Kô+	%ð* €KrE   c                 ó<  • [        U[        [        R                  45      (       d  [        R
                  " S5      e[        U [        R                  5      (       d  [        R
                  " S5      eU R                  S:  a  [        R                  " S5      eSS jnU$ )Nz*The second argument "k" must be an integerz'The first argument "m" must be an arrayrb  úInput must be >= 2-d.c                 óV  • US-  nUS:X  a  U S S  $ US:X  a,  [         R                  " [         R                  " U 5      SS5      $ US:X  a*  [         R                  " [         R                  " U 5      5      $ US:X  a,  [         R                  " [         R                  " U SS5      5      $ [        e)Né   r   rG   rb  é   )r¤  ÚswapaxesÚfliplrÚflipudr  )r¸  rØ   s     rC   rè   Únumpy_rot90.<locals>.impl  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ä Ð rE   rÀ  )	r�   rÂ   r   rŸ   r	   rê   rž   rr   ÚNumbaValueError)r¸  rØ   rè   s      rC   Únumpy_rot90ru     sx   € ô �aœ#œuŸ}™}Ð-×.Ñ.Ü× Ò Ð!MÓNÐNÜ�aœŸ™×%Ñ%Ü× Ò Ð!JÓKÐKà‡v�v�ƒzÜ×$Ò$Ð%<Ó=Ð=ô!ð €KrE   c                 ó   • U R                  [        R                  5      nUR                  5       nU R                  [        R                  5      n	[
        R                  " U	XxUXxUXy/5      n
[        R                  " UR                  U
S5      nU" UR                  5      n[        R                  " XR                  S5      SS5      n[        R                  " XR                  S5      SS5      nU" U5      n[        R                  " XSS5      n[        R                  " XSS5      nU	" S5      nUR                  X¼XÞXEUUR                  U/5      nU$ )zí
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_reshaperg   r   r±   )r¾   r   r”   r)  Úintcr   ÚFunctionTyper
   Úget_or_insert_functionr:   rr   rj   ri   Úcallr²   )rƒ   r=   rÜ   r  ÚnewndÚnewshapeÚ
newstridesr‚  Úll_intp_starÚll_intcr÷  ÚfnÚndrg   r±   Ú
is_f_orderrû   s                    rC   Ú_attempt_nocopy_reshaper„    s1  € ð ×$Ñ$¤U§Z¡ZÓ0€GØ×%Ñ%Ó'€LØ×$Ñ$¤U§Z¡ZÓ0€GÜ�?Š?˜7à˜|à˜|àð%ó €Dô 
×	'Ò	'¨¯©¸Ø(Fó
H€Bñ 
�—‘Ó	€BÜ× Ò  ×*>Ñ*>¸wÓ*GÈÈAÓN€EÜ×"Ò" 7×,@Ñ,@ÀÓ,KØ#$ aó)€Gá�E‹N€EÜ×#Ò# G°q¸!Ó<€HÜ×%Ò% g¸1¸aÓ@€JÙ˜“€JØ
�,‰,�r Ø!¨ZØŸL™L¨*ð6ó 7€Cð €JrE   c                 ó  • SnSn[        U5       H  u  pEUS:  a	  US-  nUnM  X5-  nM     US:X  a  X:w  a  [        S5      eg US:X  a0  US:X  a  SnU S:H  nOX-  nX-  S:H  nU(       d  [        S5      eXqW'   g [        S5      e)Nr   rG   z)total size of new array must be unchangedzmultiple negative shape values)rÂ  r½   )	Úorigsizerg   Únum_neg_valueÚ
known_sizer0  r¬   Úneg_axÚinferredÚoks	            rC   Únormalize_reshape_valuerŒ  ?  s³   € Ø€MØ€JÜ˜5Ö!‰ˆØˆq‹5Ø˜QÑˆMØŠFà‰OŠJñ "ð ˜ÓØÓ!ÜÐHÓIÐIð "ð 
˜!Ó	à˜‹?ØˆHØ˜Q‘‰BàÑ-ˆHØÑ&¨!Ñ+ˆBÞÜÐHÓIÐIØ ˆfŠô Ð9Ó:Ð:rE   zarray.reshapec           
      óè  • UR                   S   nUR                  nUR                   S   nUS   nU R                  [        R                  5      n[
        R                  " X†R                  5      n	[        U5      " XUS   5      n
[        R                  " X5      nUR                  X{5        [        R                  " UR                  SSS9n[        U5      " X5      nU R                  [        R                  U R                  U5      5      n[!        UUR#                  X¸R%                  5       5      U R                  [        R                  UR                  5      /U/US S9  U
R&                  nU R)                  U[*        [,        R.                  " [        R0                  [        R2                  U5      XýR5                  5       /5        UR                  n[        R                  " X5      n[7        XXJUUU5      nUR9                  SUUR;                  S5      5      nUR=                  U5         SnU R>                  RA                  U[B        U45        S S S 5        [        U5      " X5      n[!        UU
RD                  URG                  U5      URG                  U5      U
RH                  U
RJ                  U
RL                  S9  UR5                  5       n[O        XUR                  U5      $ ! , (       d  f       N›= f)	Nr   rG   r«   r&  r'  r  zincompatible shape for arrayr8  )(rï   rñ   r¾   r   r”   r   r(  rÆ   r~   r
   rX   r  rž   r�   rÄ   r‚   rÚ   ra  r)  r·   r*  rŒ  r   r%   r+  r–   r÷   r„  r  r9   r  r^  r_  rS   r    r>   r²   r°   r³   r!   )rƒ   r=   r\   rï   rÜ   Úrettyr  rg   r‚  Úll_shaper  r}  Úshape_ary_tyÚ	shape_aryÚshape_itemsizer™   r|  r~  r‹  ÚfailrÒ   r‘  rû   s                          rC   Úarray_reshaper”  ]  s[  € à�H‰H�Q‰K€EØ�O‰O€Eà�h‰h�q‰k€GØ�‰G€Eà×$Ñ$¤U§Z¡ZÓ0€GÜ�|Š|˜G§]¡]Ó3€Hä
�UÔ
˜G¨d°1©gÓ
6€Cô ×"Ò" 7Ó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à"×$7Ñ$7Ó$9Ð:ô<ð �M‰M€EÜ×$Ò$ WÓ7€Jä	  °5¸uØ!)¨:ó
7€Bà× Ñ   r¨2¯7©7°1«:Ó6€Dà	�‰˜Õ	Ø,ˆØ×Ñ×)Ñ)¨'Ô3FÈÈÔO÷ 
ô �UÔ
˜GÓ
-€CÜ�3ØŸ™Ø Ÿ™ hÓ/Ø"Ÿ<™<¨
Ó3ØŸL™LØŸ;™;ØŸ*™*ò&ð �-‰-‹/€CÜ˜W¨s¯©ÀÓDÐD÷ 
Õ	ús   È)%K#Ë#
K1c                 ó6   • [        XX#5      u  pE[        XXE5      $ rB  )r  r”  r:  s         rC   Úarray_reshape_varargr–  ž  s   € ä'¨¸#ÓDÑ€GÜ˜¨7Ó=Ð=rE   )rb  rG   c                 ó   • S nU$ )Nc                 ó$   • U R                  U5      $ rB  ©Úreshape)r7  r}  s     rC   Únp_reshape_implÚ#np_reshape.<locals>.np_reshape_impl§  s   € Ø—9‘9˜XÓ&Ð&rE   rt   )r7  r}  r›  s      rC   Ú
np_reshaper�  ¥  s   € ò	'àÐrE   c                 ó   • S nU$ )Nc                 ó$   • U R                  U5      $ rB  r™  )r7  rg   s     rC   r›  rœ  ­  s   € Ø—9‘9˜UÓ#Ð#rE   rt   )r7  rg   r›  s      rC   r�  r�  «  s   € ò	$àÐrE   c                 óZ  • [        U 5      (       d  Sn[        R                  " U5      e[        U[        R
                  5      (       a)  [        UR                  [        R                  5      (       d7  [        U[        R                  5      (       d  Sn[        R                  " U5      eS nU$ )Nú#The argument "a" must be array-likezBThe argument "new_shape" must be an integer or a tuple of integersc                 óN  • [         R                  " U 5      n [         R                  " U 5      n [        U[        5      (       a7  Sn[         R                  " U5       H  nX#-  nUS:  d  M  Sn[        U5      e   OUS:  a  Sn[        U5      eUnU R                  S:X  a/  [         R                  " U5      R                  U R                  5      $ U* U R                  -  * nU n[        US-
  5       H  n[         R                  " Xp45      nM     US U n[         R                  " Xq5      $ )NrG   r   z0All elements of `new_shape` must be non-negative)r¤  r¥  Úravelr�   rÀ   r½   r™   ÚzerosÚastyper�   r8   Úconcatenaterš  )	r7  Ú	new_shapeÚnew_sizeÚ
dim_lengthrÒ   Úmsg2Úrepeatsrû   ro   s	            rC   rè   Únumpy_resize.<locals>.implÂ  sû   € Ü�JŠJ�q‹MˆÜ�HŠH�Q‹Kˆä�i¤×'Ñ'ØˆHÜ Ÿjšj¨Ö3�
ØÑ&�Ø •>ØL�CÜ$ S›/Ð)ò	 4ð ˜1‹}ØI�Ü  Ó&Ð&Ø ˆHà�6‰6�Q‹;Ü—8’8˜IÓ&×-Ñ-¨a¯g©gÓ6Ð6à�I §¡Ñ'Ð(ˆØˆÜ�w ‘{Ö#ˆAÜ—.’. # Ó*ŠCñ $à�)�8ˆnˆä�zŠz˜#Ó)Ð)rE   )r   r	   rê   r�   r   r®  r�   rŸ   )r7  r§  rÒ   rè   s       rC   Únumpy_resizer­  ²  s€   € ô ˜A×ÑØ3ˆÜ× Ò  Ó%Ð%ä˜	¤5§>¡>×2Ñ2ä˜	Ÿ™¬¯©×7Ñ7ä�y¤%§-¡-×0Ñ0ð%ˆä× Ò  Ó%Ð%ò*ð8 €KrE   c                 ó@  • [        U 5      (       d  [        R                  " S5      e[        U5      (       d  [        R                  " S5      e[        U5      (       a  SS jnU$ [	        U[
        R                  5      (       d  [        R                  " S5      eSS jnU$ )Nz+The first argument "arr" must be array-likez/The second argument "values" must be array-likec                 óØ   • [         R                  " [         R                  " U 5      5      n [         R                  " [         R                  " U5      5      n[         R                  " X45      $ rB  )r¤  r£  r¥  r¦  ©r9  Úvaluesrâ   s      rC   rè   Únp_append.<locals>.implì  s@   € Ü—(’(œ2Ÿ:š: c›?Ó+ˆCÜ—X’XœbŸjšj¨Ó0Ó1ˆFÜ—>’> 3 -Ó0Ð0rE   z,The third argument "axis" must be an integerc                 ó.   • [         R                  " X4US9$ ©N©râ   ©r¤  r¦  r°  s      rC   rè   r²  ö  s   € Ü—>’> 3 -°dÑ;Ð;rE   rB  )r   r	   rê   r   r�   r   rŸ   )r9  r±  râ   rè   s       rC   Ú	np_appendr·  á  s’   € ô ˜C× Ñ Ü× Ò Ð!NÓOÐOä˜F×#Ñ#Ü× Ò ð ".ó /ð 	/ô �4×Ñô	1ð €Kô ˜$¤§¡×.Ñ.Ü×$Ò$ð &/ó 0ð 0ô	<à€KrE   zarray.ravelc                 ó¨   • S nS nUR                   S   R                  S:X  a  UnOUnU R                  XX#5      n[        XUR                  U5      nU$ )Nc                 ó8   • U R                  U R                  5      $ )zNo copy version)rš  r™   ©r  s    rC   Ú
imp_nocopyÚarray_ravel.<locals>.imp_nocopyþ  s   € à�{‰{˜3Ÿ8™8Ó$Ð$rE   c                 ó"   • U R                  5       $ )zCopy version)Úflattenrº  s    rC   Úimp_copyÚarray_ravel.<locals>.imp_copy	  s   € à�{‰{‹}ÐrE   r   r«   )rï   r+  r*  r"   rñ   )rƒ   r=   r\   rï   r»  r¿  Úimprû   s           rC   Úarray_ravelrÂ  û  sY   € ò%òð
 ‡x�x��{×Ñ˜SÓ Ø‰ð ˆà
×
"Ñ
" 7°Ó
;€CÜ
˜7¨S¯_©_¸cÓ
B€CØ€JrE   c                 ó,   • S nU R                  XX#5      $ )Nc                 ó"   • U R                  5       $ rB  )r£  ©r7  s    rC   Únp_ravel_implÚnp_ravel.<locals>.np_ravel_impl	  s   € Ø�w‰w‹yÐrE   )r*  )rƒ   r=   r\   rï   rÆ  s        rC   Únp_ravelrÈ  	  s   € òð ×#Ñ# G¸CÓFÐFrE   zarray.flattenc                 ó^   • S nU R                  XX#5      n[        XUR                  U5      nU$ )Nc                 óT   • U R                  5       R                  U R                  5      $ rB  )r„  rš  r™   rº  s    rC   rÁ  Úarray_flatten.<locals>.imp	  s   € Ø�x‰x‹z×!Ñ! #§(¡(Ó+Ð+rE   )r*  r"   rñ   )rƒ   r=   r\   rï   rÁ  rû   s         rC   Úarray_flattenrÌ  	  s2   € ò,ð ×
"Ñ
" 7°Ó
;€CÜ
˜7¨S¯_©_¸cÓ
B€CØ€JrE   c                 ó  • Uc  [         R                  " U 5      OUn[         R                  " XU5      u  pVn[         R                  " UR                  5       H&  nXX   n	Xh   n
Xx   n[        [        Xš5      U5      XH'   M(     U$ rB  )r¤  Ú
empty_likeÚbroadcast_arraysÚndindexrg   ÚminrÇ  )r7  Úa_minÚa_maxrü   r‘  Úa_bÚa_min_bÚa_max_bró   Úval_aÚ	val_a_minÚ	val_a_maxs               rC   Ú_np_clip_implrÚ  %	  su   € ð "™kŒ"�-Š-˜Ô
¨s€CÜ×/Ò/°¸%Ó@Ñ€C�'Ü—’˜CŸI™IÖ&ˆØ‘
ˆØ‘Nˆ	Ø‘Nˆ	Üœ˜UÓ.°	Ó:ˆ‹
ñ	 'ð €JrE   c                 óª   • [         R                  " U R                  5       H.  nX   nX   nU(       a  [        XV5      X4'   M!  [	        XV5      X4'   M0     U$ rB  )r¤  rÐ  rg   rÑ  rÇ  )r7  ÚbÚuse_minrü   ró   r×  Úval_bs          rC   Ú_np_clip_impl_nonerß  3	  sI   € ä—’˜AŸG™GÖ$ˆØ‘ˆØ‘ˆÞÜ˜UÓ*ˆC‹Jä˜UÓ*ˆC‹Jñ %ð €JrE   c                 ó  • [        U 5      (       d  [        R                  " S5      e[        U[        R
                  5      (       d&  [        U5      (       d  [        R                  " S5      e[        U[        R
                  5      (       d&  [        U5      (       d  [        R                  " S5      e[        U[        R                  5      (       d(  [        U5      (       d  Sn[        R                  " U5      eUS L =(       d    [        U[        R
                  5      nUS L =(       d    [        U[        R
                  5      nU(       a  U(       a  SS jnU$ [        U[        R                  5      n[        U[        R                  5      n	U(       a  U	(       a  SS jn
U
$ U(       a  U	(       d  U(       a  SS jnU$ SS jnU$ U(       d  U	(       a  U(       a  SS	 jnU$ SS
 jnU$ U(       a  SS jnU$ U(       a  SS jnU$ SS jnU$ )Nr¡  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                 ó   • [        S5      e)Nz&array_clip: must set either max or minrç   ©r7  rÒ  rÓ  rü   s       rC   Ú
np_clip_nnÚnp_clip.<locals>.np_clip_nnX	  s   € ÜÐEÓFÐFrE   c                 óÀ   • Uc  [         R                  " U 5      OUn[         R                  " U R                  5       H  nX   n[	        [        Xa5      U5      XE'   M      U$ rB  )r¤  rÎ  rÐ  rg   rÑ  rÇ  ©r7  rÒ  rÓ  rü   r‘  ró   r×  s          rC   Ú
np_clip_ssÚnp_clip.<locals>.np_clip_ssa	  sP   € ð '*¡k”"—-’- Ô"°sˆCÜŸš A§G¡GÖ,�Ø™�Ü ¤ UÓ!2°EÓ:�“
ñ -ð ˆJrE   c                 ó¬   • Uc  [         R                  " U 5      OUn[         R                  " U R                  5       H  nX   n[	        Xa5      XE'   M     U$ rB  )r¤  rÎ  rÐ  rg   rÇ  ræ  s          rC   Ú
np_clip_snÚnp_clip.<locals>.np_clip_sno	  óI   € ð +.©+”b—m’m AÔ&¸3�ÜŸZšZ¨¯©Ö0�EØ™H�EÜ!$ UÓ!2�C“Jñ 1ð �
rE   c                 óF   • [         R                  " X5      n[        XX#5      $ rB  ©r¤  Ú	full_likerÚ  )r7  rÒ  rÓ  rü   Ú
a_min_fulls        rC   Ú
np_clip_saÚnp_clip.<locals>.np_clip_sa|	  s   € ô
  Ÿ\š\¨!Ó3�
Ü$ Q°EÓ?Ð?rE   c                 ó¬   • Uc  [         R                  " U 5      OUn[         R                  " U R                  5       H  nX   n[	        Xb5      XE'   M     U$ rB  )r¤  rÎ  rÐ  rg   rÑ  ræ  s          rC   Ú
np_clip_nsÚnp_clip.<locals>.np_clip_ns‡	  rì  rE   c                 óF   • [         R                  " X5      n[        XXC5      $ rB  rî  )r7  rÒ  rÓ  rü   Ú
a_max_fulls        rC   Ú
np_clip_asÚnp_clip.<locals>.np_clip_as”	  s   € ô
  Ÿ\š\¨!Ó3�
Ü$ Q¨zÓ?Ð?rE   c                 ó‚   • Uc  [         R                  " U 5      OUn[         R                  " X5      u  pV[        XVSU5      $ )NT©r¤  rÎ  rÏ  rß  )r7  rÒ  rÓ  rü   r‘  rÔ  rÖ  s          rC   Ú
np_clip_naÚnp_clip.<locals>.np_clip_na 	  s7   € à*-©+”b—m’m AÔ&¸3�Ü!×2Ò2°1Ó<‘�Ü)¨#¸¸cÓBÐBrE   c                 ó‚   • Uc  [         R                  " U 5      OUn[         R                  " X5      u  pV[        XVSU5      $ )NFrû  )r7  rÒ  rÓ  rü   r‘  rÔ  rÕ  s          rC   Ú
np_clip_anÚnp_clip.<locals>.np_clip_an¨	  s7   € à*-©+”b—m’m AÔ&¸3�Ü!×2Ò2°1Ó<‘�Ü)¨#¸¸sÓCÐCrE   c                 ó   • [        XX#5      $ rB  )rÚ  râ  s       rC   Ú
np_clip_aaÚnp_clip.<locals>.np_clip_aa°	  s   € ô % Q¨uÓ:Ð:rE   rB  )	r   r	   rê   r�   r   ÚNoneTyperž   r   rÒ  )r7  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                     rC   Únp_clipr	  ?	  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ð Ðô;ð ÐrE   Úclipc                 ó   • SS jnU$ )Nc                 ó0   • [         R                  " XX#5      $ rB  )r¤  r
  râ  s       rC   rè   Úarray_clip.<locals>.impl»	  s   € Ü�wŠw�q Ó,Ð,rE   ©NNNrt   )r7  rÒ  rÓ  rü   rè   s        rC   Ú
array_clipr  ¹	  s   € ô-à€KrE   c           	      ó`  ^^^^• UR                   UR                   :X  d   eUR                  UR                  :X  d   e[        UR                  5      n[        S5      m[        S5      m[        S5      m[        R                  mUUUU4S jnU R                  [        R                  [        X5      5      nU R                  [        R                  [        X5      5      nU R                  [        R                  UR                   5      n	[        R                  " XR                  S5      SS5      n
[        R                  " UUR                  S5      SS5      n[        R                  " [        R                  SSS	9nU R                  U5      n[        R                  " UU R                  [        R                  UR                   5      /5      nU R                  U R                  [        R                  5      5      nU R                  [        R                  U5      n[        R                  " X/5      nU" X5      n[!        UU
UUUS
S9  U" X5      n[!        UUUUUS
S9  UR#                  5       nUR#                  5       nU	UUXxU R                  [        R                  U5      /n[%        [        R&                  [        R                  UU[        R                  [        R                  [        R                  5      nU R)                  XUU5      n[+        X45        [-        XUR.                  U5      nU$ )zï
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                 ó   >• UT	:X  a#  US   U:X  a	  T" T
5      nOUS   U:X  a  T" T5      nX4:w  a  UT	:X  d  U S:X  a  gUT
:X  a  U S-
  nOSnXC:  a  X4-  S:w  a  gX4-  nX==   U-  ss'   XBU'   gXC:”  a  X   U-  nX„-  S:w  a  gX„-  X'   XBU'   g g)NrH  r   FrG   Trt   )r‚  rn   r±   Úold_itemsizeÚnew_itemsizer+  ro   ÚnewdimÚ
bytelengthÚ
any_layoutÚc_layoutÚf_layoutÚint8s            €€€€rC   rÁ  Ú_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Ø%�A‰Jð" ð Ó(ð ™ <Ñ/ˆJØÑ)¨aÓ/Øà Ñ0ˆD‰GØ%�A‰Jð ð àrE   rg   r   r±   rG   r&  Nr'  )rr   r+  Úordr   r  rÄ   r”   r…   r
   rj   ri   rž   r~   rl   r‚   r€   rÚ   r÷   r%   Úbooleanr*  rÝ   r!   rñ   )rƒ   r=   ÚoldtyÚnewtyr  Ú
new_layoutrÁ  r  r  r‚  Ú
shape_dataÚstrides_dataÚshape_strides_array_typeÚaryclsÚshape_constantÚsizeof_intpÚstrides_constantr‘  Ústrides_aryrg   r±   rï   r\   rû   r  r  r  r  s                           @@@@rC   Ú_change_dtyper)  À	  s­  û€ ð �:‰:˜Ÿ™Ó#Ð#Ð#Ø�<‰<˜5Ÿ<™<Ó'Ð'Ð'ä�U—\‘\Ó"€JÜ�S“€JÜ�3‹x€HÜ�3‹x€Hä�:‰:€D÷.ð .ð` ×'Ñ'¬¯
©
Ü(4°WÓ(DóF€Là×'Ñ'¬¯
©
Ü(4°WÓ(DóF€Lð 
×	Ñ	œeŸj™j¨%¯*©*Ó	5€BÜ×%Ò% g×/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Ü×)Ò)¨'°=ÓAÐá�wÓ(€Iä�9Ø"Ø'Ø+Ø'Øò!ñ ˜Ó*€KÜ�;Ø$Ø'Ø+Ø'Øò!ð ×ÑÓ!€EØ×#Ñ#Ó%€GØ��w Ø× Ñ ¤§¡¨ZÓ8ð:€Dô ”E—M‘MÜ—J‘JØ,Ø,Ü—J‘JÜ—J‘JÜ—J‘Jó€Cð ×
"Ñ
" 7°°dÓ
;€CÜ�eÔ!Ü
˜G¨c¯o©o¸sÓ
C€CØ€JrE   c                 óX   • [        U 5      (       d  [        R                  " S5      eS nU$ )Nz+The argument to np.shape must be array-likec                 óB   • [         R                  " U 5      R                  $ rB  )r¤  r¥  rg   rÅ  s    rC   rè   Únp_shape.<locals>.implC
  s   € Ü�zŠz˜!‹}×"Ñ"Ð"rE   ©r   r	   rê   ©r7  rè   s     rC   Únp_shaper/  >
  s)   € ä˜A×ÑÜ× Ò Ð!NÓOÐOò#à€KrE   c                 óX   • [        U 5      (       d  [        R                  " S5      eS nU$ )Nz*The argument to np.size must be array-likec                 óB   • [         R                  " U 5      R                  $ rB  )r¤  r¥  r™   rÅ  s    rC   rè   Únp_size.<locals>.implM
  s   € Ü�zŠz˜!‹}×!Ñ!Ð!rE   r-  r.  s     rC   Únp_sizer3  H
  s)   € ä˜A×ÑÜ× Ò Ð!MÓNÐNò"à€KrE   c                 ó   • S nU$ )Nc                 óú   • [         R                  " U R                  5       5      n[        US S 5      n[	        USS  5       VVs/ s H  u  p4X   U:w  d  M  UPM     nnn[         R
                  " X%-   5      $ s  snnf r¨  )r¤  Úsortr£  rÁ   rÂ  rÌ   )ÚarrÜ  Úheadro   r|  Útails         rC   Únp_unique_implÚ!np_unique.<locals>.np_unique_implV
  sf   € Ü�GŠG�B—H‘H“JÓˆÜ�A�b�q�E‹{ˆÜ'¨¨!¨"¨Ô.Ô<Ò.‘d�a°!±$¸!±)—Ñ.ˆÑ<Ü�xŠx˜™Ó$Ð$ùó =s   ÁA7ÁA7rt   )r7  r:  s     rC   Ú	np_uniquer<  T
  s   € ò%ð
 ÐrE   c                 óì  • S n[        U [        R                  [        R                  [        R                  [        R
                  [        R                  45      (       a•  [        U[        R                  5      (       a  [        $ [        U[        R                  [        R                  45      (       a+  [        UR                  [        R                  5      (       a  U$ [        R                  " S5      eg )Nc                 óF  • [         R                  " U[         R                  S9nUR                  S   S:X  a  [	        XS   5      $ [         R
                  " US:  5      (       a  [        S5      e[         R                  " U 5      nUR                  5       nUR                  S   nUR                  UR                  :w  a  [        S5      e[         R                  " [         R                  " U5      UR                  S9nSn[        U5       H  nXH   XgXrU   -   & XrU   -  nM     U$ )N©r�   r   rG   r¶  z(operands could not be broadcast together)r¤  r¥  rô  rg   Únp_repeat_impl_repeats_scalerrI  r½   r£  Úemptyr	  r�   r8   )	r7  r«  Úrepeats_arrayÚasaÚaravelÚnÚ	to_returnÚposro   s	            rC   Ú!np_repeat_impl_repeats_array_likeÚ4np_repeat.<locals>.np_repeat_impl_repeats_array_likec
  sù   € äŸ
š
 7´"·(±(Ñ;ˆà×Ñ˜qÑ! QÓ&Ü0°À!Ñ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<±iˆI˜C°Ñ"2Ñ2Ð3Ø Ñ#Ñ#ŠCñ ð ÐrE   zIThe repeats argument must be an integer or an array-like of integer dtype)r�   r   rž   ÚListrO  rÒ  r  rŸ   r@  r�   r	   rê   )r7  r«  rH  s      rC   Ú	np_repeatrK  ^
  sª   € ò
ô, �!”e—k‘kÜ—j‘jÜ—o‘oÜ—l‘lÜ—m‘mð	÷ ñ ô �gœuŸ}™}×-Ñ-Ü0Ð0Ü˜¤%§+¡+¬u¯z©zÐ!:×;Ñ;Ü˜'Ÿ-™-¬¯©×7Ñ7Ø8Ð8ä× Ò ð0ó1ð 	1ðrE   c                 ó˜  • US:  a  [        S5      e[        R                  " U 5      nUR                  5       nUR                  S   nUS:X  a  [        R
                  " SUR                  S9$ US:X  a  [        R                  " U5      $ [        R
                  " XA-  UR                  S9n[        U5       H  nX6   XVU-  US-   U-  & M     U$ )Nr   r¶  r?  rG   )	r½   r¤  r¥  r£  rg   rA  r�   r„  r8   )r7  r«  rC  rD  rE  rF  ro   s          rC   r@  r@  ‹
  s®   € à�ƒ{ÜÐ>Ó?Ð?Ü
�*Š*�Q‹-€CØ�Y‰Y‹[€FØ�‰�Q‰€AØ�!ƒ|Ü�xŠx˜ §¡Ñ+Ð+Ø	�A‹Ü�wŠw�v‹Ðä—H’H˜Q™[°·	±	Ñ:ˆ	Ü�q–ˆAØ9?¹ˆI˜'‘k Q¨¡U¨gÑ$5Ò6ñ àÐrE   Úrepeatc                 ó   • S nU$ )Nc                 ó.   • [         R                  " X5      $ rB  )r¤  rM  )r7  r«  s     rC   Úarray_repeat_implÚ'array_repeat.<locals>.array_repeat_implŸ
  s   € Ü�yŠy˜Ó$Ð$rE   rt   )r7  r«  rP  s      rC   Úarray_repeatrR  �
  s   € ò%ð ÐrE   c                 ó:   • [         R                  " U5      nS nX#4$ )z"Computes the itemsize of the dtypec                 ó¶   • U R                  UR                  S   R                  5      nU R                  UR                  5      nU" U R	                  U5      5      $ ræ   )r€   rï   r�   rñ   r‚   )Úcgctxr=   r\   Úllargsr„   Úllintps         rC   rŽ  Ú%_intrin_get_itemsize.<locals>.codegenª
  sJ   € Ø×"Ñ" 3§8¡8¨A¡;×#4Ñ#4Ó5ˆØ×$Ñ$ S§_¡_Ó5ˆÙ�e×*Ñ*¨4Ó0Ó1Ð1rE   )r   r”   )Útyctxr�   r\   rŽ  s       rC   Ú_intrin_get_itemsizerZ  ¥
  s!   € ô �*Š*�UÓ
€Cò2ð ˆ<ÐrE   c                 ó   • g rB  rt   )r7  r�   s     rC   Ú_compatible_viewr\  ±
  ó   € ØrE   c                 ó   • S nU$ )zDDetermines if the array and dtype are compatible for forming a view.c                 ó   • [        U5      nX R                  :w  aô  U R                  S:X  a  Sn[        U5      e U R                  S-
  nU R                  U   S:g  nU R
                  S:g  nU R                  U   U R                  :g  nU(       a  U(       a  U(       a  Sn[        U5      eX R                  :  a'  US:X  d  U R                  U-  S:w  a  Sn	[        U	5      eg U R                  U   U R                  -  n
X¢-  S:w  a  Sn[        U5      eg g )Nr   zOChanging the dtype of a 0d array is only supported if the itemsize is unchangedrG   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.)rZ  r²   rr   r½   rg   r™   r±   )r7  r�   Ú
dtype_sizeÚmsg1râ   Úp1Úp2Úp3rª  Úmsg3r  Úmsg4s               rC   rè   Ú 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�ä  Ó&Ð&àŸJ™JÓ&Ø “? a§j¡j°:Ñ&=ÀÓ&BðI�Dä$ TÓ*Ð*ð 'Cð
 Ÿ™ ™¨¯©Ñ3�ØÑ&¨!Ó+ð1�Dô % TÓ*Ð*ð	 ,ð9 $rE   rt   ©r7  r�   rè   s      rC   Úol_compatible_viewri  µ
  s   € ò"+ðF €KrE   z
array.viewc                 ó„  • UR                   S   nUR                  n[        U5      " XUS   5      n[        U5      " X5      n[        UR                  R
                  5      n[        U5       HN  n	[        Xi5      n
U	S:X  a.  UR                  R                  nUR                  X«5      Ul        MB  [        XyU
5        MP     U R                  nUR                  [        5      nUR                  U/ UR                   Q70 5      nU R!                  XÞ5      nU" X5        [#        XXEU5      nUR%                  SU['        UR                  S5      5      nUR)                  U5         SnU R*                  R-                  U[.        U45        S S S 5        UR1                  5       n[3        XUR                  U5      $ ! , (       d  f       N5= f)Nr   r    r  z"new type not compatible with array)rï   rñ   r~   rº   r¸   r»   ÚsortedÚgetattrr    r9   ra  rË   rò  ró  r\  rõ  rR   r)  r  r   r  r^  r_  r½   r÷   r!   )rƒ   r=   r\   rï   rÜ   rŽ  r  r‘  ÚfieldsrØ   r�   rX  rY  r÷  Ú_compatible_view_sigrè   r‹  r“  rÒ   rû   s                       rC   Ú
array_viewro  á
  sn  € à�H‰H�Q‰K€EØ�O‰O€Eä
�UÔ
˜G¨d°1©gÓ
6€CÜ
�UÔ
˜GÓ
-€Cä�—‘×'Ñ'Ó(€FÜ�FŽ^ˆÜ�c‹oˆØ�‹;Ø—H‘H—M‘MˆEØ—‘ sÓ2ˆCŽHä�C˜CÖ ñ ð ×"Ñ"€EØ×#Ñ#Ô$4Ó5€DØ×-Ñ-¨e°\°s·x±x±\À2ÓFÐØ×Ñ Ó;€DÙˆÔä	�w¨°sÓ	;€BØ× Ñ   r¬8°B·G±G¸QÓ+?Ó@€Dà	�‰˜Õ	Ø2ˆØ×Ñ×)Ñ)¨'´:À¸vÔF÷ 
ð �-‰-‹/€CÜ˜W¨s¯©ÀÓDÐD÷ 
Õ	ús   Å%F1Æ1
F?r�   c                 ó:   • U R                  5       n[        XX$5      $ rB  )rd  r#   ©rƒ   r=   r²  r  rû   s        rC   Úarray_dtyperr    s   € à
×
!Ñ
!Ó
#€CÜ˜g°Ó9Ð9rE   rg   c                 óZ   • [        U5      nU" XU5      nUR                  n[        XX&5      $ rB  )r~   rg   r#   ©rƒ   r=   r²  r  r‹   rÌ   rû   s          rC   Úarray_shaperu    s/   € ô ˜‹o€GÙ�G eÓ,€EØ
�+‰+€CÜ˜g°Ó9Ð9rE   r±   c                 óZ   • [        U5      nU" XU5      nUR                  n[        XX&5      $ rB  )r~   r±   r#   rt  s          rC   Úarray_stridesrw    s/   € ô ˜‹o€GÙ�G eÓ,€EØ
�-‰-€CÜ˜g°Ó9Ð9rE   rr   c                 ón   • U R                  [        R                  UR                  5      n[	        XX$5      $ rB  )rÄ   r   r”   rr   r#   rq  s        rC   Ú
array_ndimry    s+   € ð ×
Ñ
œuŸz™z¨3¯8©8Ó
4€CÜ˜g°Ó9Ð9rE   r™   c                 óZ   • [        U5      nU" XU5      nUR                  n[        XX&5      $ rB  )r~   r·   r#   rt  s          rC   Ú
array_sizer{  %  s-   € ä˜‹o€GÙ�G eÓ,€EØ
�,‰,€CÜ˜g°Ó9Ð9rE   r²   c                 óZ   • [        U5      nU" XU5      nUR                  n[        XX&5      $ rB  )r~   r²   r#   rt  s          rC   Úarray_itemsizer}  -  s/   € ô ˜‹o€GÙ�G eÓ,€EØ
�.‰.€CÜ˜g°Ó9Ð9rE   Únbytesc                 óŽ   • [        U5      nU" XU5      nUR                  UR                  UR                  5      n[	        XX&5      $ )z
nbytes = size * itemsize
)r~   rÇ   r·   r²   r#   rt  s          rC   Úarray_nbytesr€  6  s>   € ô ˜‹o€GÙ�G eÓ,€EØ
�+‰+�e—l‘l E§N¡NÓ
3€CÜ˜g°Ó9Ð9rE   Ú
contiguousc                 ón   • U R                  [        R                  UR                  5      n[	        XX$5      $ rB  )rÄ   r   r  Ú	is_contigr#   rq  s        rC   Úarray_contiguousr„  B  s)   € à
×
Ñ
œuŸ}™}¨c¯m©mÓ
<€CÜ˜g°Ó9Ð9rE   Úc_contiguousc                 ón   • U R                  [        R                  UR                  5      n[	        XX$5      $ rB  )rÄ   r   r  Úis_c_contigr#   rq  s        rC   Úarray_c_contiguousrˆ  H  ó)   € à
×
Ñ
œuŸ}™}¨c¯o©oÓ
>€CÜ˜g°Ó9Ð9rE   Úf_contiguousc                 ón   • U R                  [        R                  UR                  5      n[	        XX$5      $ rB  )rÄ   r   r  Úis_f_contigr#   rq  s        rC   Úarray_f_contiguousr�  N  r‰  rE   rŠ  c                 óx   • U R                  [        R                  UR                  (       + 5      n[	        XX$5      $ rB  )rÄ   r   r  Úmutabler#   rq  s        rC   Úarray_readonlyr�  T  s+   € à
×
Ñ
œuŸ}™}°#·+±+¬oÓ
>€CÜ˜g°Ó9Ð9rE   Úctypesc                 óô   • [        U5      nU" XU5      n[        R                  " U5      nU R                  X5      nUR                  Ul        UR
                  Ul        UR                  5       n[        XXh5      $ rB  )r~   r   ÚArrayCTypesrð   r    r°   r÷   r!   )	rƒ   r=   r²  r  r‹   rÌ   ÚactÚctinforû   s	            rC   Úarray_ctypesr–  \  sh   € ä˜‹o€GÙ�G eÓ,€Eä
×
Ò
˜CÓ
 €CØ× Ñ  Ó.€FØ—*‘*€F„KØ—]‘]€F„NØ
×
Ñ
Ó
€CÜ˜W¨sÓ8Ð8rE   r    c                 ó®   • U R                  XUS9nUR                  nUR                  XPR                  [        R
                  5      5      n[        XX%5      $ ©Nr  )rð   r    r>  r¾   r   r”   r#   )rƒ   r=   r²  r  r•  rû   s         rC   Úarray_ctypes_datar™  i  sL   € à× Ñ  °UÐ Ð;€FØ
�+‰+€Cà
×
Ñ
˜3× 6Ñ 6´u·z±zÓ BÓ
C€CÜ˜g°Ó9Ð9rE   c                 ó’   • U R                  XUS9nUR                  nUR                  X`R                  U5      5      n[	        XX65      $ r˜  )rð   r    ra  r¾   r#   )rƒ   r=   ÚfromtyÚtotyr�   r•  rû   s          rC   Úarray_ctypes_to_pointerr�  r  sH   € ð × Ñ  ¸Ð Ð<€FØ
�+‰+€CØ
�/‰/˜#×5Ñ5°dÓ;Ó
<€CÜ˜g°Ó:Ð:rE   c                 ó¾  • [        U5      " XUS9n[        R                  " [        R                  UR                  5      nUR                  UR                  UR                  5      5      n[        [        R                  XU[        R                  5      nUR                  UR                  UR                  [        R                  U5      /nUR                  X UU5      n	U	$ )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  )r~   r   r®  r”   rr   r‚   r¾   r�   r%   Úbool_rg   r±   rÄ   r*  )
Úcheckerrƒ   r=   rÜ   r  Útup_intpr²   Ú	check_sigÚ
check_argsrƒ  s
             rC   Ú_call_contiguous_checkr¤  {  s§   € ô �UÔ
˜G°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àÐrE   r¶   c                 óÊ   • U R                  U[        R                  " U5      5      nX4l        UR	                  5       nU R
                  R                  XU5        [        XX%5      $ rB  )rð   r   Ú
ArrayFlagsr³   r÷   rõ   rö   r"   )rƒ   r=   r²  r  Úflagsobjrû   s         rC   Úarray_flagsr¨  •  sS   € à×"Ñ" 7¬E×,<Ò,<¸SÓ,AÓB€HØ„OØ
×
Ñ
Ó
€CØ‡K�K×Ñ�w UÔ+Ü˜G¨cÓ7Ð7rE   c                 ó.  • UR                   R                  S:w  a7  U R                  XUS9n[        [        XUR                   UR
                  5      nO9UR                   R                  S:H  nU R                  [        R                  U5      n[        XX%5      $ )Nr«   r  )
rc   r+  rð   r¤  r   r³   rÄ   r   r  r#   )rƒ   r=   r²  r  r§  rû   r�   s          rC   Úarray_flags_c_contiguousrª  ž  s€   € ð ‡~�~×Ñ Ó#à×&Ñ& w¸5Ð&ÐAˆÜ$¤]°GØ%(§^¡^°X·_±_óF‰ð �n‰n×#Ñ# sÑ*ˆØ×"Ñ"¤5§=¡=°#Ó6ˆÜ˜g°Ó9Ð9rE   c                 óp  • UR                   R                  S:w  a7  U R                  XUS9n[        [        XUR                   UR
                  5      nOZUR                   R                  nUR                   R                  S:”  a  US:H  OUS;   nU R                  [        R                  U5      n[        XX%5      $ )Nr  r  rG   r7  )rc   r+  rð   r¤  r   r³   rr   rÄ   r   r  r#   )rƒ   r=   r²  r  r§  rû   r+  r�   s           rC   Úarray_flags_f_contiguousr¬  ¬  s™   € à
‡~�~×Ñ Ó#à×&Ñ& w¸5Ð&ÐAˆÜ$¤Z°Ø%(§^¡^°X·_±_óF‰ð —‘×&Ñ&ˆØ"Ÿ~™~×2Ñ2°QÓ6ˆf˜Šm¸FÀd¹NˆØ×"Ñ"¤5§=¡=°#Ó6ˆÜ˜g°Ó9Ð9rE   r\  c                 óø   • UR                   [        R                  ;   a  [        XX#SS9$ UR                   [        R                  ;   a  [        XX#5      $ [        SR                  [        R                   5      5      e)Nr\  ©Úattrzunsupported .real for {})	r�   r   Úcomplex_domainÚarray_complex_attrÚnumber_domainr!   rS   rÉ   r9   )rƒ   r=   r²  r  s       rC   Úarray_real_partr³  ½  s]   € à
‡y�y”E×(Ñ(Ó(Ü! '°CÀVÑLÐLØ	�‰”e×)Ñ)Ó	)ä  °3Ó>Ð>ä!Ð"<×"CÑ"CÄDÇJÁJÓ"OÓPÐPrE   r^  c                 ó  • UR                   [        R                  ;   a  [        XX#SS9$ UR                   [        R                  ;   aŸ  [        UR                  SS9U5      n[        XXC/5      u  pV[        XXV5      n[        R                  " XR                  UR                  UR                  UR                  5      S5        [        XUR                   UR#                  5       5      $ [%        SR'                  [(        R                   5      5      e)Nr^  r®  Tr”  r   zunsupported .imag for {})r�   r   r°  r±  r²  r%   r„  Ú_parse_empty_like_argsr)  r
   Úmemsetr    rÇ   r²   r·   r"   rñ   r÷   rS   rÉ   r9   )rƒ   r=   r²  r  r\   r…  r  r  s           rC   Úarray_imag_partr·  È  sÒ   € à
‡y�y”E×(Ñ(Ó(Ü! '°CÀVÑLÐLØ	�‰”e×)Ñ)Ó	)ä˜Ÿ™¨$˜Ð/°Ó5ˆÜ0°À3ÈÓP‰ˆÜ˜W¨wÓ?ˆÜ�Š�w§¡¨'¯+©+°c·l±lØ69·j±jó+BØCDô	Fä °#·/±/Ø #§¡£ó1ð 	1ô "Ð"<×"CÑ"CÄDÇJÁJÓ"OÓPÐPrE   c                 óÚ  • US;  d  UR                   [        R                  ;  a  [        SR	                  U5      5      e[        U5      nU" XU5      nUR                   R                  nU R                  U R                  U5      5      nUR                  R                  U5      n	U R                  U5      R                  5       n
UR                  UR                  U
5      nUS:X  a-  UR                  U[         R"                  " S5      " S5      /5      nUR%                  USS9n[        U5      " X5      n['        X¹S9n[(        R*                  " XÖU5        [-        XXÍR/                  5       5      $ )	at  
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^  é    rG   r‚  ©r�   r+  )r    r²   )r�   r   r°  rS   rÉ   r~   Úunderlying_floatr‚   r€   r²   r9   r¾   r)  ra  r    r,  r   ÚIntTyper„  rÃ   r
   Úcopy_structr!   r÷   )rƒ   r=   r²  r  r¯  r‹   rÌ   ÚfltyÚsizeof_fltyr²   Ú
llfltptrtyr  Úresulttyr  Úrepls                  rC   r±  r±  Ù  s5  € ð8 Ð#Ó# s§y¡y¼×8LÑ8LÓ'LÜ!Ð"=×"DÑ"DÀTÓ"JÓKÐKä˜‹o€GÙ�G 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Ü˜Ô! 'Ó3€FÜ�WÑ0€DÜ×Ò˜ tÔ,Ü˜W¨x×9IÑ9IÓ9KÓLÐLrE   ÚconjÚ	conjugatec                 ó   • S nU$ )Nc                 ó.   • [         R                  " U 5      $ rB  )r¤  rÃ  ©r9  s    rC   rè   Úarray_conj.<locals>.impl  s   € Ü�wŠw�s‹|ÐrE   rt   ©r9  rè   s     rC   Ú
array_conjrÊ    s   € òà€KrE   c                 ó"   • U R                  5       $ rB  )rd  )rƒ   r=   ÚdtypetyÚdtypevals       rC   Ú
dtype_typerÎ    s   € à×"Ñ"Ó$Ð$rE   r9   ÚkindÚstatic_getitemc                 óÎ   • UR                   n[        U[        R                  5      (       a#  U R	                  U5      " S5      n[        XXE5      $ Sn[        R                  " U5      e)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ï   rŽ  rû   rÒ   s          rC   Ústatic_getitem_number_clazzrÓ  (  s[   € ð �O‰O€EÜ�%œŸ™×%Ñ%ð ×$Ñ$ UÔ+¨DÓ1ˆÜ! '°EÓ?Ð?ðLˆä×"Ò" 3Ó'Ð'rE   c           
      óò  • [        U5      nU" XU5      nUR                  n[        U[        R                  5      (       d  [        SU< SU< S35      eUR                  U5      nUR                  U5      n	[        U[        R                  5      (       a3  UR                  UR                  UR                  UR                  -   SS9n
OUR                  USS9n
[        U
5      nU" X5      nU R                  [        R                  U	5      n[        R                  " XR                  XÜR                  R                   S9n[        U[        R                  5      (       aü  [        R"                  " XR$                  UR                  5      nXøR$                   Vs/ s H#  nU R                  [        R                  U5      PM%     sn-  n[        R"                  " XR&                  UR                  5      nUUR&                   Vs/ s H#  nU R                  [        R                  U5      PM%     sn-  nU R)                  U R+                  UR                  5      5      nO8UR$                  nUR&                  nU R)                  U R+                  U5      5      n[-        UUUUU R                  [        R                  U5      UR.                  UR0                  S9  UR3                  5       n[5        XU
U5      $ s  snf s  snf )	ze
Generic getattr() implementation for record arrays: fetch the given
record member, i.e. a subarray.
z
attribute z of z not definedr‚  r&  rº  )rñ   r8  )r~   r�   r�   r   ÚRecordrS   Útypeofr  ÚNestedArrayr„  rr   rÄ   r”   r
   r   r    r9   rÅ   rg   r±   r‚   r€   rÚ   r°   r³   r÷   r!   )rƒ   r=   r²  r  r¯  r‹   rÌ   Úrectyper�   r  ÚrestyÚrarytyÚraryÚconstoffsetÚ
newdataptrrg   ro   r±   Údatasizerû   s                       rC   Úarray_record_getattrrß  @  sS  € ô ˜‹o€GÙ�G 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á�'Ó#€Dà×&Ñ&¤u§z¡z°6Ó:€Kä×$Ò$Ø—‘˜[·y±y·~±~ñ€Jô �%œ×*Ñ*×+Ñ+ä×$Ò$ W¯k©k¸3¿8¹8ÓDˆØ¿{º{Ó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¨u°cÓ:Ð:ùò' Lùò Ps   Æ*K/Ç?*K4c                 ó~   • US   n[        U[        5      (       d  [        e[        XUR                  S   US   U5      $ rÊ  )r�   rê  rS   rß  rï   )rƒ   r=   r\   rï   ró   s        rC   Úarray_record_getitemrá  x  s;   € à�‰G€EÜ�eœS×!Ñ!ä!Ð!Ü °#·(±(¸1±+¸tÀA¹wÈÓNÐNrE   c           
      óØ  • U R                  X$5        UR                  U5      nUR                  U5      n[        U[        R
                  5      (       Ga3  [        U5      nU" X5      nUR                  n	UR                   V
s/ s H"  o R                  [        R                  U
5      PM$     nn
UR                   V
s/ s H"  o R                  [        R                  U
5      PM$     nn
[        R                  " XUU R                  U	5      5      n[        UU[        R                   " X5      [        R                   " X5      U R                  [        R                  UR"                  5      SSS9  UR%                  5       n['        XX.5      $ [        R                  " XUU R                  U5      5      nUR(                  (       a  SOSnU R+                  XUU5      n['        XX.5      $ s  sn
f s  sn
f )zL
Generic getattr() implementation for records: get the given record member.
Nr8  rG   )Úsentry_record_alignmentr  rÖ  r�   r   r×  r~   r�   rg   rÄ   r”   r±   r
   Úget_record_memberr€   rÚ   rl   r™   r÷   r!   r‰   rŠ   )rƒ   r=   r²  r  r¯  r  ÚelemtyrÜ   r  r�   r¬   r}  r~  Únewdatarû   Údptrrˆ   s                    rC   Úrecord_getattrrè  �  s©  € ð
 ×#Ñ# CÔ.Ø�Z‰Z˜Ó€FØ�Z‰Z˜Ó€Fä�&œ%×+Ñ+×,Ò,ô ˜6Ó"ˆÙ�GÓ%ˆØ—‘ˆà—L’Ló"Ú ð =>×(Ñ(¬¯©°QÖ7Ù ð 	ð "ð —n’nó&Ú$ð ?@×*Ñ*¬5¯:©:°qÖ9Ù$ð 	ð &ä×+Ò+¨G¸FØ,3×,AÑ,AÀ%Ó,HóJˆäØØÜ×$Ò$ WÓ7Ü×&Ò& wÓ;Ø×)Ñ)¬%¯*©*°f·k±kÓBØØò	
ð �m‰m‹oˆÜ  °3Ó<Ð<ä×(Ò(¨¸Ø)0×)>Ñ)>¸vÓ)FóHˆàŸŸ‘¨ˆØ×"Ñ" 7°D¸%Ó@ˆÜ  °3Ó<Ð<ùò-"ùò&s   Â)G"Â:)G'c           	      ó¸  • UR                   u  pVUu  pxU R                  XT5        UR                  U5      n	UR                  U5      n
[	        U
[
        R                  5      (       a—  [        R                  " U5      " XUS   S9nUR                  n[        R                  " XU	UR                  R                  5      n[        R                  " XUU R                  [
        R                  U
R                   5      5        g[        R                  " XU	U R#                  U
5      5      nU R%                  XXj5      nUR&                  (       a  SOSnU R)                  XXŽUS9  g)zL
Generic setattr() implementation for records: set the given record member.
rG   r  Nr‡   )rï   rã  r  rÖ  r�   r   r×  r
   r}   r    rä  r9   ÚpointeeÚmemcpyrÄ   r”   r·   r€   r“   r‰   rŽ   )rƒ   r=   r\   rï   r¯  r²  rR  rÜ  r�   r  rå  Ú
val_structrh  r�  rç  rˆ   s                   rC   Úrecord_setattrrí  ©  s  € ð
 —‘�J€CØ�K€Fà×#Ñ# CÔ.Ø�Z‰Z˜Ó€FØ�Z‰Z˜Ó€Fä�&œ%×+Ñ+×,Ñ,ä×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¨Ó7ˆØŸŸ‘¨ˆØ×Ñ˜7¨C¸UÐÒCrE   c                 ó‚   • U R                  UR                  S   US   5      nU" XUR                  S   US   US   5      $ )ú+
Record.__getitem__ redirects to getattr()
r   rG   )Úget_getattrrï   )rƒ   r=   r\   rï   rè   s        rC   Úrecord_static_getitem_strrñ  Ç  sC   € ð
 ×Ñ˜sŸx™x¨™{¨D°©GÓ4€DÙ� #§(¡(¨1¡+¨t°A©w¸¸Q¹Ó@Ð@rE   c                 ó,  • UR                   S   R                  n[        UR                   S   R                  5      nU R	                  UR
                  XT   5      nU R                  UR                   S   U5      nU" XUR                   S   US   XT   5      $ )rï  rG   r   )rï   rë   rÁ   rm  Úinsert_const_stringr:   rð  )rƒ   r=   r\   rï   r˜   rm  Úll_fieldrè   s           rC   Úrecord_static_getitem_intrõ  Ð  s€   € ð
 �(‰(�1‰+×
#Ñ
#€CÜ�#—(‘(˜1‘+×$Ñ$Ó%€FØ×*Ñ*¨7¯>©>¸6¹;ÓG€HØ×Ñ˜sŸx™x¨™{¨HÓ5€DÙ� #§(¡(¨1¡+¨t°A©w¸¹ÓDÐDrE   Ústatic_setitemc                 ó–   • UR                   u  pEnUu  pxn	[        UR                  XF5      n
U R                  XŠ5      nUc   eU" XU	45      $ )ú+
Record.__setitem__ redirects to setattr()
)rï   r%   rñ   Úget_setattr)rƒ   r=   r\   rï   Úrectyr1  rR  Úrecr˜   r�   Úgetattr_sigrè   s               rC   Úrecord_static_setitem_strrý  Ü  sU   € ð
 —h‘h�O€EˆeØ�M€CˆcÜ˜CŸO™O¨UÓ:€KØ×Ñ˜sÓ0€DØÑÐÐÙ�˜s˜Ó$Ð$rE   c                 óà   • UR                   u  pEnUu  pxn	[        UR                  XF5      n
[        UR                   S   R                  5      nU R                  X¸   U
5      nUc   eU" XU	45      $ )rø  r   )rï   r%   rñ   rÁ   rm  rù  )rƒ   r=   r\   rï   rú  r1  rR  rû  r˜   r�   rü  rm  rè   s                rC   Úrecord_static_setitem_intrÿ  é  sq   € ð
 —h‘h�O€EˆeØ�M€CˆcÜ˜CŸO™O¨UÓ:€KÜ�#—(‘(˜1‘+×$Ñ$Ó%€FØ×Ñ˜v™{¨KÓ8€DØÑÐÐÙ�˜s˜Ó$Ð$rE   c                 ó&   • U R                  XU5      $ )z:
Create a constant array (mechanism is target-dependent).
)Úmake_constant_array)rƒ   r=   rE  Úpyvals       rC   Úconstant_arrayr  û  s   € ð
 ×&Ñ& w°EÓ:Ð:rE   c                 óÖ   • [         R                  " [         R                  " S5      UR                  5      nU" [	        UR                  5       5      5      n[        R                  " X5      $ )z?
Create a record constant as a stack-allocated array of bytes.
é   )r   r(  r¼  r~  Ú	bytearrayÚtostringr
   rò   )rƒ   r=   rE  r  Últyr�   s         rC   Úconstant_recordr	    sG   € ô
 �,Š,”r—z’z !“} e§l¡lÓ
3€CÙ
Œi˜Ÿ™Ó(Ó)Ó
*€CÜ×$Ò$ WÓ2Ð2rE   c                 ó~   • [         R                  " [        U5      [         R                  S9nU R	                  XU5      $ )zE
Create a constant array from bytes (mechanism is target-dependent).
r?  )r¤  rÌ   r  Úuint8r  )rƒ   r=   rE  r  Úbufs        rC   Úconstant_bytesr    s0   € ô
 �(Š(”9˜UÓ#¬2¯8©8Ñ
4€CØ×&Ñ& w°CÓ8Ð8rE   c                 ór   • UR                   u  pEXE:w  a  [        R                  $ S nU R                  XX#5      $ )Nc                 óÜ   • U R                   UR                   :H  =(       aM    U R                  UR                  :H  =(       a-    U R                  R                  UR                  R                  :H  $ rB  )rg   r±   r‘  r    ©r7  rÜ  s     rC   Úarray_is_implÚarray_is.<locals>.array_is_impl  sI   € Ø—‘˜1Ÿ7™7Ñ"÷ /Ø—	‘	˜QŸY™YÑ&÷/à—‘—‘ §¡§¡Ñ.ð	0rE   )rï   r
   r  r*  )rƒ   r=   r\   rï   ÚatyÚbtyr  s          rC   Úarray_isr    s8   € à�x‰x�H€CØ
ƒzÜ× Ñ Ð ò0ð
 ×#Ñ# G¸CÓFÐFrE   Ú__hash__c                 ó   • S $ )Nc                 ó   • g rB  rt   rÇ  s    rC   r¾  Úol_array_hash.<locals>.<lambda>,  s   € �trE   rt   rÇ  s    rC   Úol_array_hashr  *  s   € áÐrE   c                 ó   • [        U S5      $ )ze
Return the Structure representation of the given *flatiterty* (an
instance of types.NumpyFlatType).
Úflat©Ú_make_flattening_iter_cls)Ú
flatitertys    rC   Úmake_array_flat_clsr   2  s   € ô
 % Z°Ó8Ð8rE   c                 ó   • [        U S5      $ )zj
Return the Structure representation of the given *nditerty* (an
instance of types.NumpyNdEnumerateType).
Úndenumerater  ©Únditertys    rC   Úmake_array_ndenumerate_clsr%  :  s   € ô
 % X¨}Ó=Ð=rE   c                 ó  • U R                  [        R                  S5      nUR                  S5      n	Ub   UR	                  [
        R                  U5        [        [        U5      5       H¿  n
[
        R                  " XU
5      n[
        R                  " XR                  U5      5      nX:   nUR                  SXÍ5      n[
        R                  " X5         UR	                  XË5        Ub  U" U
5        UR                  U	5        S S S 5        UR	                  X‹5        Uc  M·  U" U
5        MÁ     Ub   UR	                  [
        R                  U5        UR                  U	5        UR!                  U	5        g ! , (       d  f       Nv= f)Nr   Úend_incrementr  )rÄ   r   r”   r†  r  r
   Ú
false_byter%  r8   rj   r  r>   r  Ú	if_likelyr—  Ú	true_byter˜  )rƒ   r=   rr   rg   r¨   Úend_flagÚloop_continueÚ
loop_breakrù   Úbbendr�  Úidxptrr˜   rÆ   Ú	in_boundss                  rC   Ú_increment_indicesr1  B  s,  € à×Ñ¤§
¡
¨AÓ.€Dà×&Ñ& Ó7€EàÑØ�‰”g×(Ñ(¨(Ô3äœ˜d›Ö$ˆÜ×%Ò% g¸Ó<ˆÜ×%Ò% g¯|©|¸FÓ/CÓDˆà‘
ˆØ×'Ñ'¨¨SÓ8ˆ	Ü×Ò˜wÕ2à�M‰M˜#Ô&ØÑ(Ù˜cÔ"Ø�N‰N˜5Ô!÷ 3ð 	�‰�dÔ#ØÓ!Ù�sŽOñ %ð" ÑØ�‰”g×'Ñ'¨Ô2Ø‡N�N�5Ôà×Ñ˜EÕ"÷ 3Õ2ús   Ã.E2Å2
F 	c                 óŠ   • [         R                  " XR                  UR                  5      n[	        XUR                  XdU5        g rB  )r
   rÅ   rg   rr   r1  )rƒ   r=   r8  r9  r¨   r+  rg   s          rC   Ú_increment_indices_arrayr3  c  s.   € ä× Ò  ¯)©)°U·Z±ZÓ@€EÜ�w¨¯©°UÀXÕNrE   c                 ó†  ^ ^^^^^^^	^
^• T R                   m
T R                  m[        T R                  5      m	T R                  (       a  T
OSm " S S[
        5      n " S SU5      m " U 4S jSU5      m " S S	U5      m " S
 SU5      m " S SU5      m " UUUUUUU	U
U U4
S jS[        R                  " T 5      5      nU$ )ze
Return the Structure representation of the given *nditerty* (an
instance of types.NumpyNdIterType).
rG   c                   óZ   • \ rS rSrSrS rS r\R                  S 5       r	S r
S rS rS	rg
)Ú$make_nditer_cls.<locals>.BaseSubIteris  z6
Base class for sub-iterators of a nditer() instance.
c                 óF   • Xl         X l        X0l        X@l        XC-
  U l        g rB  )ÚnditerÚmember_nameÚ	start_dimÚend_dimrr   )rZ   r8  r9  r:  r;  s        rC   rƒ  Ú-make_nditer_cls.<locals>.BaseSubIter.__init__x  s!   € Ø ŒKØ*ÔØ&ŒNØ"ŒLØÑ+ˆD�IrE   c                 óF   • [        U R                  U R                  U5        g rB  )rË   r8  r9  )rZ   rm   s     rC   Úset_member_ptrÚ3make_nditer_cls.<locals>.BaseSubIter.set_member_ptr  s   € Ü�D—K‘K ×!1Ñ!1°3Õ7rE   c                 óB   • [        U R                  U R                  5      $ rB  )rl  r8  r9  ri  s    rC   Ú
member_ptrÚ/make_nditer_cls.<locals>.BaseSubIter.member_ptr‚  s   € ä˜4Ÿ;™;¨×(8Ñ(8Ó9Ð9rE   c                 ó   • g rB  rt   )rZ   rƒ   r=   s      rC   Úinit_specificÚ2make_nditer_cls.<locals>.BaseSubIter.init_specific†  r  rE   c                 ó   • g rB  rt   ©rZ   rƒ   r=   Úlogical_dims       rC   r,  Ú2make_nditer_cls.<locals>.BaseSubIter.loop_continue‰  r  rE   c                 ó   • g rB  rt   rG  s       rC   r-  Ú/make_nditer_cls.<locals>.BaseSubIter.loop_breakŒ  r  rE   )r;  r9  rr   r8  r:  N)ru   rv   rw   rx   r}  rƒ  r>  rm  Úcached_propertyrA  rD  r,  r-  rz   rt   rE   rC   ÚBaseSubIterr6  s  s:   † ñ	ò	,ò	8ð 
×	"Ñ	"ñ	:ó 
#ð	:ò	ò	õ	rE   rM  c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	Ú$make_nditer_cls.<locals>.FlatSubIteri�  z‡
Sub-iterator walking a contiguous array in physical order, with
support for broadcasting (the index is reset on the outer dimension).
c                 óŽ   • UR                  [        R                  S5      nU R                  [        R
                  " X#5      5        g ræ   )rÄ   r   r”   r>  r
   rò   )rZ   rƒ   r=   rù   s       rC   rD  Ú2make_nditer_cls.<locals>.FlatSubIter.init_specific•  s1   € Ø×'Ñ'¬¯
©
°AÓ6ˆDØ×Ñ¤× 9Ò 9¸'Ó HÕIrE   c                 ór   • UR                  U R                  5      nUR                  UR                  U/5      $ rB  )r>   rA  r,  r    )rZ   rƒ   r=   r¨   r8  r9  ró   s          rC   Úcompute_pointerÚ4make_nditer_cls.<locals>.FlatSubIter.compute_pointer™  s+   € Ø—L‘L §¡Ó1ˆEØ—;‘;˜sŸx™x¨%¨Ó1Ð1rE   c                 óÂ   • X0R                   S-
  :X  aM  UR                  U R                  5      n[        R                  " X$5      nUR                  X@R                  5        g g r¨  )rr   r>   rA  r
   r  r  )rZ   rƒ   r=   rH  ró   s        rC   r,  Ú2make_nditer_cls.<locals>.FlatSubIter.loop_continue�  sG   € ØŸi™i¨!™mÓ+àŸ™ T§_¡_Ó5�Ü×/Ò/°Ó?�Ø—‘˜e§_¡_Õ5ð	 ,rE   c                 óF  • US:X  a<  UR                  [        R                  S5      nUR                  X@R                  5        g X0R
                  S-
  :X  aM  UR                  U R                  5      n[        R                  " X%5      nUR                  XPR                  5        g g rñ  )	rÄ   r   r”   r  rA  rr   r>   r
   r  )rZ   rƒ   r=   rH  rù   ró   s         rC   r-  Ú/make_nditer_cls.<locals>.FlatSubIter.loop_break¤  su   € Ø˜aÓà×+Ñ+¬E¯J©J¸Ó:�Ø—‘˜d§O¡OÕ4Ø§	¡	¨A¡Ó-àŸ™ T§_¡_Ó5�Ü×/Ò/°Ó?�Ø—‘˜e§_¡_Õ5ð	 .rE   rt   N)
ru   rv   rw   rx   r}  rD  rS  r,  r-  rz   rt   rE   rC   ÚFlatSubIterrO  �  s   † ñ	ò
	Jò	2ò	6õ		6rE   rY  c                   ó,   >• \ rS rSrSrU 4S jrS rSrg)Ú+make_nditer_cls.<locals>.TrivialFlatSubIteri¯  z`
Sub-iterator walking a contiguous array in physical order,
*without* support for broadcasting.
c                 ó,   >• TR                   (       a   eg rB  )Úneed_shaped_indexing)rZ   rƒ   r=   r$  s      €rC   rD  Ú9make_nditer_cls.<locals>.TrivialFlatSubIter.init_specificµ  s   ø€ Ø×4×4Ð4Ð4Ð4rE   c                 óx   • [        U5      S::  d   [        U5      5       eUR                  UR                  U5      $ r¨  )r¥   r,  r    ©rZ   rƒ   r=   r¨   r8  r9  s         rC   rS  Ú;make_nditer_cls.<locals>.TrivialFlatSubIter.compute_pointer¸  s2   € Ü�w“< 1Ó$Ð2¤c¨'£lÓ2Ð$Ø—;‘;˜sŸx™x¨Ó1Ð1rE   rt   N)ru   rv   rw   rx   r}  rD  rS  rz   r#  s   €rC   ÚTrivialFlatSubIterr[  ¯  s   ø† ñ	õ
	5õ	2rE   rb  c                   ó   • \ rS rSrSrS rSrg)Ú'make_nditer_cls.<locals>.IndexedSubIteri¼  z1
Sub-iterator walking an array in logical order.
c           	      óf   • [        U5      U R                  :X  d   e[        R                  " XXEUSS9$ ©NFrN  )r¥   rr   r
   r*  r`  s         rC   rS  Ú7make_nditer_cls.<locals>.IndexedSubIter.compute_pointerÁ  s6   € Ü�w“< 4§9¡9Ó,Ð,Ð,Ü×+Ò+¨G¸eØ,3ÀñGð GrE   rt   N©ru   rv   rw   rx   r}  rS  rz   rt   rE   rC   ÚIndexedSubIterrd  ¼  s   † ñ	õ	GrE   ri  c                   ó   • \ rS rSrSrS rSrg)Ú'make_nditer_cls.<locals>.ZeroDimSubIteriÆ  z%
Sub-iterator "walking" a 0-d array.
c                 ó   • UR                   $ rB  )r    r`  s         rC   rS  Ú7make_nditer_cls.<locals>.ZeroDimSubIter.compute_pointerË  s   € Ø—8‘8ˆOrE   rt   Nrh  rt   rE   rC   ÚZeroDimSubIterrk  Æ  s   † ñ	õ	rE   rn  c                   ó   • \ rS rSrSrS rSrg)Ú&make_nditer_cls.<locals>.ScalarSubIteriÎ  z(
Sub-iterator "walking" a scalar value.
c                 ó   • U$ rB  rt   r`  s         rC   rS  Ú6make_nditer_cls.<locals>.ScalarSubIter.compute_pointerÓ  s   € ØˆJrE   rt   Nrh  rt   rE   rC   ÚScalarSubIterrp  Î  s   † ñ	õ	rE   rs  c                   ó–   >
• \ rS rSrSr\R                  U UUUUU4S j5       rUUUU	4S jrU4S jr	S r
S rUUUU	4S jrS	 rS
 rSrg)Úmake_nditer_cls.<locals>.NdIteriÖ  z�
.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           	      óÈ   >• / nTR                   (       a  TOTTTTS.n[        TR                  5       H+  u  p4Uu  pVpxSU-  n	X%   n
UR                  U
" X	Xg5      5        M-     U$ )N)r  ÚindexedÚ0dÚscalarzindex%d)r]  rÂ  r  rk   )rZ   ÚlÚ	factoriesro   r  rÏ  r:  r;  r1  r9  ÚfactoryrY  ri  rs  rb  rn  r$  s              €€€€€€rC   ÚsubitersÚ(make_nditer_cls.<locals>.NdIter.subitersÞ  ss   ø€ àˆAØ08×0M×0M¡Ø0Ø$2Ø-Ø#0ñ	ˆIô $ H×$5Ñ$5Ö6‘�Ø.1Ñ+� Ø'¨!™m�Ø#™/�Ø—‘™ °IÓGÖHñ	 7ð
 ˆHrE   c                 ó  >• UR                  [        R                  S5      nUR                  U[        R                  " U5      U5      U l        [        U5       HP  u  pg[        U[        R                  5      (       a  M&  SU-  n[        R                  " X$U   5      n	[        XU	5        MR     U R                  XX45      n[        R                  " [        R                  T5      n
SnSn[        U5       HT  u  pm[        U[        R                  5      (       d  M&  UR                  T:X  d  M8  XF   R                  nXF   R                   n  O<   TS:X  d   eUR                  X*S5      nUR                  [        R                  S5      nS n[#        X45       HŸ  u  pß[        U[        R                  5      (       d  M&  UR                  S:”  d  M8  [%        [        R&                  [        R                  " [        R                  UR                  5      U
5      nUR)                  X.UUR                  U45        M¡     [        R*                  " X+5      nTS:X  a  USSS2   nUR-                  S	XÅ5      nUR/                  U[        R0                  [        R2                  5      nTR4                  (       d  U4n[7        U5      T:X  d   e[        R8                  " X%R:                  TS
9n[=        T5       H-  n[        R>                  " UUU5      nURA                  UU5        M/     UU l!        [        RD                  " UUUR:                  5      U l        [        R                  " UU5      U l#        U RH                   H  nURK                  X5        M     g)zA
Initialize the nditer() instance for the specific array inputs.
r   úscalar%dNrt   rG   c                 óˆ   • [        U 5      n[        U5       H(  nX   U[        U5      U-
  U-      :w  d  M  [        S5      e   g )Nz2nditer(): operands could not be broadcast together)r¥   r8   r½   )rg   Ú
main_shaperE  ro   s       rC   Úcheck_shapeÚBmake_nditer_cls.<locals>.NdIter.init_specific.<locals>.check_shape  sH   € Ü˜“J�Ü˜qž�AØ‘x :¬c°*«oÀÑ.AÀAÑ.EÑ#FÕFÜ(ð *>ó ?ð ?ò "rE   r  rH  r  rŒ  )&rÄ   r   r”   rö  r¯  ÚarraysrÂ  r�   rž   r
   rò   rË   Ú_arrays_or_scalarsr®  rr   rg   r·   r¦   r%   Únoner*  rÅ   r  r÷  r*  r(  r]  r¥   rX   r9   r8   rj   r  r¨   rl   Ú	exhaustedr}  rD  )rZ   rƒ   r=   Úarrtysr…  rù   ro   rE  r9  ÚslotÚmain_shape_tyr‚  Úmain_nitemsr8  rƒ  r9  r\   r  Úshape_is_emptyrˆ  r¨   r�  r/  Úsubiterr+  rr   r$  Únshapess                           €€€€rC   rD  Ú-make_nditer_cls.<locals>.NdIter.init_specificî  sÕ  ø€ ð ×'Ñ'¬¯
©
°AÓ6ˆDð "×,Ñ,¨W´e·k²kÀ&Ó6IØ-3ó5ˆDŒKô # 6Ö*‘�Ü! "¤e§k¡k×2Ó2Ø",¨q¡.�Kä"×4Ò4°WÀQ¹iÓH�DÜ˜D¨tÖ4ñ +ð ×,Ñ,¨W¸vÓNˆFô "ŸNšN¬5¯:©:°tÓ<ˆMØˆJØˆKÜ% fÖ-‘�Ü˜e¤U§[¡[×1Ó1°e·j±jÀDÕ6HØ!'¡§¡�JØ"(¡)×"2Ñ"2�KÙñ	 .ð ˜q“yÐ �yØ$×/Ñ/°ÈÓK�
Ø%×2Ñ2´5·:±:¸qÓA�ò?ô " &Ö1‘
�Ü˜e¤U§[¡[×1Ó1°e·j±jÀ1µnÜ#¤E§J¡JÜ$)§N¢N´5·:±:¸u¿z¹zÓ$JØ$1ó3�Cð ×,Ñ,¨WØ-0°3·9±9¸jÐ2IöKñ 2ô ×)Ò)¨'Ó>ˆFØ˜‹}Ø¡ " ™�ð %×0Ñ0°°{ÓIˆNØŸ™ ~´w×7HÑ7HÜ'.×'9Ñ'9ó;ˆIð ×0×0ð &˜�Ü�v“; 'Ó)Ð)Ð)ä×)Ò)¨'·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ð  Ÿ=œ=�Ø×%Ñ% gÖ7ò )rE   c                 ó<  >• UR                  S5      n[        R                  " UUR                  U R                  5      5      n[        R
                  " X%5         UR                  S5        UR                  U5        SSS5        TR                  n[        R                  " X R                  5      nU R                  XXg5      nU R                  nUR                  S5        U R                  XX†U5      n	U	 V
s/ s H  oªR                  5       PM     n	n
[        U	5      S:X  a  UR                  U	S   5        O,UR                  UR!                  UTR"                  U	5      5        [        R                  " X R$                  5      n['        X[        U5      UX€R                  [(        R*                  " U R,                  UU5      [(        R*                  " U R.                  UU5      5        UR                  U5        UR1                  U5        g! , (       d  f       GN’= fs  sn
f )z2
Compute next iteration of the nditer() instance.
r@  FNTrG   r   )r†  r
   Úas_bool_bitr>   rˆ  Úif_unlikelyr  r—  r…  rÅ   r†  r¨   Ú_make_viewsr÷   r¥   r  rö  r  rg   r1  rm  ÚpartialÚ_loop_continueÚ_loop_breakr˜  )rZ   rƒ   r=   r  r.  rˆ  r‰  r…  r¨   ÚviewsrÙ   rg   r$  s               €rC   Úiternext_specificÚ1make_nditer_cls.<locals>.NdIter.iternext_specific=  s°  ø€ ð ×.Ñ.¨uÓ5ˆEô  ×+Ò+¨GØ,3¯L©L¸¿¹Ó,HóJˆIä×$Ò$ WÕ8Ø× Ñ  Ô'Ø—‘˜uÔ%÷ 9ð —_‘_ˆFÜ×)Ò)¨'·;±;Ó?ˆFØ×,Ñ,¨W¸vÓNˆFØ—l‘lˆGð ×Ñ˜TÔ"Ø×$Ñ$ W°wÈÓOˆEÙ,1Ó2ªE q—[‘[–]©Eˆ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Õ*÷? 9Ö8üò 3s   Á#HÃ6HÈ
Hc                 ó´   • U R                    HH  nUR                  Us=::  a  UR                  :  d  M&  O  M*  UR                  XX4R                  -
  5        MJ     g rB  )r}  r:  r;  r,  ©rZ   rƒ   r=   r�  r  s        rC   r–  Ú.make_nditer_cls.<locals>.NdIter._loop_continueg  s?   € Ø—}”}�Ø—=‘= CÕ5¨#¯+©+×5Ñ5Ø×%Ñ% g¸¿m¹mÑ8KÖLò %rE   c                 ó´   • U R                    HH  nUR                  Us=::  a  UR                  :  d  M&  O  M*  UR                  XX4R                  -
  5        MJ     g rB  )r}  r:  r;  r-  rœ  s        rC   r—  Ú+make_nditer_cls.<locals>.NdIter._loop_breakl  s=   € Ø—}”}�Ø—=‘= CÕ5¨#¯+©+×5Ñ5Ø—N‘N 7°S¿=¹=Ñ5HÖIò %rE   c                 óN  >• S/T-  nTR                   nU R                  nTR                  n	[        U	[        R
                  5      (       a  [        U	5      n	OU	/n	[        T5       V
s/ s H)  n
UR                  [        R                  " X#U
5      5      PM+     nn
[        Xx5       H_  u  p¼Uu      pÞX<R                  UR                   nTS:X  a  USSS2   nU H(  n
Xj   b   eU R                  XUXš   XJ   XZ   U5      Xj'   M*     Ma     [        S U 5       5      (       d   eU$ s  sn
f )z"
Compute the views to be yielded.
Nr  rH  c              3   ó$   #   • U  H  ov •  M     g 7frB  rt   ©rD  rÙ   s     rC   rF  Ú>make_nditer_cls.<locals>.NdIter._make_views.<locals>.<genexpr>Š  s   é € Ð(¢%˜Q”q¢%ùs   ‚)r  r}  r  r�   r   rO  rÁ   r8   r>   r
   rj   r¦   r:  r;  Ú
_make_viewr°  )rZ   rƒ   r=   r¨   r‰  r…  r˜  r  r}  Úrettysro   r  rŽ  r1  Úarray_indicesÚsub_indicesr+  Únarraysr$  r�  s                   €€€€rC   r”  Ú+make_nditer_cls.<locals>.NdIter._make_viewsq  s3  ø€ ð �F˜WÑ$ˆEØ×(Ñ(ˆHØ—}‘}ˆHØ×(Ñ(ˆFÜ˜&¤%§/¡/×2Ñ2Ü˜f›‘à ˜�ä % g¤ó0Ú .˜1ð —|‘|¤G×$8Ò$8¸È1Ó$MÖNÙ .ð ð 0ô !$ HÖ 7‘�Ø),Ñ&��1�aØ%×&7Ñ&7¸¿¹ÐH�Ø˜S“=Ø"-©d°¨dÑ"3�KÛ&�AØ ™8Ñ+Ð+Ð+Ø#Ÿ™¨wÀØ/5©yØ/5©y¸&¹)ÀWó N�E“Hó 'ñ !8ô Ñ(¡%Ó(×(Ñ(Ð(Ð(ØˆLùò0s   Á'0D"c           	      óÂ  • [        U[        R                  5      (       a  UR                  S:X  d   eUR	                  XX5U5      nUR                  U5      " X5      n	[        X5      n
UR                  U[        R                  " [        R                  S5      S5      nUR                  U[        R                  " [        R                  S5      S5      n[        X˜X¼U
SS9  U	$ )z,
Compute a 0d view for a given input array.
r   rt   N)r°   )r�   r   rž   rr   rS  r~   r…   rö  r®  r”   rÚ   )rZ   rƒ   r=   r¨   rŽ  r8  r9  rŽ  rm   Úviewr²   rg   r±   s                rC   r¤  Ú*make_nditer_cls.<locals>.NdIter._make_view�  s¹   € ô
 ˜e¤U§[¡[×1Ñ1°e·j±jÀA³oÐEÐEà×)Ñ)¨'¸GÈCÓPˆCØ×%Ñ% eÔ,¨WÓ>ˆDä# GÓ3ˆHØ×&Ñ& w´·²¼u¿z¹zÈ1Ó0MØ')ó+ˆEà×(Ñ(¨´%·.².ÄÇÁÈQÓ2OØ)+ó-ˆGô ˜4 e°hÈÒMØˆKrE   c           	      ó  • / n[        [        X45      5       Hm  u  nu  px[        U[        R                  5      (       a(  UR                  UR                  U5      " UUUS95        MO  UR                  [        U SU-  5      5        Mo     U$ )Nr  r€  )rÂ  r¦   r�   r   rž   rk   r~   rl  )	rZ   rƒ   r=   r‰  r…  rz  ro   r8  r9  s	            rC   r†  Ú2make_nditer_cls.<locals>.NdIter._arrays_or_scalars¡  s}   € ð ˆAÜ#,¬S°Ó-@Ö#A‘�‘<�EÜ˜e¤U§[¡[×1Ñ1Ø—H‘H˜W×/Ñ/°Ô6°wØ7>Ø=@ñBö Cð —H‘HœW T¨:¸©>Ó:Ö;ñ $Bð ˆHrE   )r…  rˆ  r¨   rg   N)ru   rv   rw   rx   r}  rm  rL  r}  rD  r™  r–  r—  r”  r¤  r†  rz   )
rY  ri  rs  rb  rn  r+  r¨  rr   r$  r�  s
   €€€€€€€€€€rC   ÚNdIterru  Ö  sZ   ø† ñ	ð 
×	"Ñ	"÷	ñ 	ó 
#ð	÷M	8ð M	8õ^(	+òT	Mò
	J÷
	ð 	ò8	õ(	rE   r¯  )rr   r+  r¥   r…  r]  Úobjectr
   r}   )r$  rM  r¯  rY  ri  rs  rb  rn  r+  r¨  rr   r�  s   `  @@@@@@@@@rC   Úmake_nditer_clsr±  i  s­   ÿù€ ð
 �=‰=€DØ�_‰_€FÜ�(—/‘/Ó"€GØ×3×3‰d¸€Gô”fô ô86�kô 6÷@2˜[ô 2ôG˜ô Gô˜ô ô˜ô ÷V÷ Vð V”×,Ò,¨XÓ6ô Vðp €MrE   c                 ód   ^• U R                   m " U4S jS[        R                  " U 5      5      nU$ )zf
Return the Structure representation of the given *nditerty* (an
instance of types.NumpyNdIndexType).
c                   ó2   >• \ rS rSrSrU 4S jrU 4S jrSrg)Ú%make_ndindex_cls.<locals>.NdIndexIteri¸  z
.ndindex() implementation.
c                 ó°  >• UR                  [        R                  S5      n[        R                  " X$R
                  UR                  [        R                  T5      S9n[        R                  " U[        R                  5      n[        T5       H€  n[        R                  " X%U5      nUR                  XH5        X7   n	UR                  SX”5      n
[        R                  " X*5         UR                  [        R                  U5        S S S 5        M‚     XPl        X`l        [        R                   " X#UR
                  5      U l        g ! , (       d  f       MÆ  = f©Nr   rŒ  r  )rÄ   r   r”   r
   rX   r9   rò   r(  r8   rj   r  r  r“  r*  r¨   rˆ  rl   rg   )rZ   rƒ   r=   r  rù   r¨   rˆ  r�  r/  rè  Údim_is_emptyrr   s              €rC   rD  Ú3make_ndindex_cls.<locals>.NdIndexIter.init_specific½  s  ø€ Ø×'Ñ'¬¯
©
°AÓ6ˆDÜ×)Ò)¨'·9±9Ø/6×/CÑ/CÄEÇJÁJØDHó0JñKˆGô  ×1Ò1°'¼7×;MÑ;MÓNˆIä˜T–{�Ü ×-Ò-¨gÀÓD�Ø—‘˜dÔ+ð "™;�Ø&×4Ñ4°T¸8ÓJ�Ü×(Ò(¨Õ?Ø—M‘M¤'×"3Ñ"3°YÔ?÷ @Ñ?ñ #ð #ŒLØ&ŒNÜ ×+Ò+¨G¸T¿Y¹YÓGˆD�J÷ @Ö?ús   Ã&!EÅ
E	c           
      ó‚  >• UR                  [        R                  S5      nUR                  S5      n[        R
                  " UUR                  U R                  5      5      n[        R                  " X&5         UR                  S5        UR                  U5        S S S 5        [        T5       Vs/ s H4  nUR                  [        R                  " UU R                  U5      5      PM6     nnU H  n	[        X)5        M     UR                  [        R                   " X(UR"                  5      5        UR                  S5        [        R$                  " X R&                  T5      n
[)        XTU
U R                  U R                  5        UR                  U5        UR+                  U5        g ! , (       d  f       GN= fs  snf )Nr   r@  FT)rÄ   r   r”   r†  r
   r’  r>   rˆ  r“  r  r—  r8   rj   r¨   rI   r  rl   r9   rÅ   rg   r1  r˜  )rZ   rƒ   r=   r  rù   r.  rˆ  r�  r¨   r>   rg   rr   s              €rC   r™  Ú7make_ndindex_cls.<locals>.NdIndexIter.iternext_specificÓ  s`  ø€ Ø×'Ñ'¬¯
©
°AÓ6ˆDà×.Ñ.¨uÓ5ˆEä×+Ò+¨GØ,3¯L©L¸¿¹Ó,HóJˆIä×$Ò$ WÕ8Ø× Ñ  Ô'Ø—‘˜uÔ%÷ 9ô #(¨¤+ó/ò #.˜3ð —|‘|¤G×$8Ò$8¸Ø9=¿¹Ø9<ó%>ö ?ñ #.ð ð /ó  �Ü˜gÖ,ñ  ð �M‰Mœ'×,Ò,¨W¸t¿y¹yÓIÔJØ×Ñ˜TÔ"ä×(Ò(¨·*±*¸dÓCˆEÜ˜w°°uØ#Ÿ|™|¨T¯^©^ô=ð �N‰N˜5Ô!Ø×#Ñ# EÕ*÷' 9Ö8üò/s   Á9#F*Â1;F<Æ*
F9)rˆ  r¨   rg   N)ru   rv   rw   rx   r}  rD  r™  rz   ©rr   s   €rC   ÚNdIndexIterr´  ¸  s   ø† ñ	õ	H÷,	+ð 	+rE   r¼  )rr   r
   r}   )r$  r¼  rr   s     @rC   Úmake_ndindex_clsr½  ±  s.   ø€ ð
 �=‰=€D÷5+”g×1Ò1°(Ó;ô 5+ðn ÐrE   c                 óÜ   ^• TS;   d   eU R                   nUR                  S:X  a$   " U4S jS[        R                  " U 5      5      nU$  " U4S jS[        R                  " U 5      5      nU$ )N)r  r"  r«   c                   ó>   >• \ rS rSrSrU 4S jrU 4S jrS rS rSr	g)	Ú6_make_flattening_iter_cls.<locals>.CContiguousFlatIteriø  zB
.flat() / .ndenumerate() implementation for C-contiguous arrays.
c                 óÎ  >• UR                  [        R                  S5      n[        R                  " X%5      U l        UR                  U l        T	S:X  a’  [        R                  " X%R                  UR                  [        R                  UR                  5      S9n[        UR                  5       H+  n[        R                  " X&U5      nUR                  XX5        M-     X`l        g g )Nr   r"  rŒ  )rÄ   r   r”   r
   rò   ró   r²   r  rX   r9   rr   r8   rj   r  r¨   )
rZ   rƒ   r=   r8  r9  rù   r¨   r�  r/  rÏ  s
            €rC   rD  ÚD_make_flattening_iter_cls.<locals>.CContiguousFlatIter.init_specificý  s¯   ø€ Ø×+Ñ+¬E¯J©J¸Ó:�Ü$×6Ò6°wÓE�”
ð "Ÿl™l�”à˜=Ó(ä%×1Ò1Ø§¡Ø$×1Ñ1´%·*±*¸e¿j¹jÓIñK�Gô  % U§Z¡ZÖ0˜Ü!(×!5Ò!5°gÈÓ!L˜ØŸ™ dÖ3ñ  1ð $+•Lð )rE   c                 ó,  >• UR                   nUR                  nUR                  U R                  5      nUR	                  SX‡5      n	UR                  U	5        [        R                  " X)5         UR                  UR                  U/5      n
[        XX:5      nTS:X  a  UR                  U5        O–U R                  n[        U5       Vs/ s H*  nUR                  [        R                  " UUU5      5      PM,     nn[        R                  " X.5      nUR                  [        R                   " UXû/5      5        [#        XUXL5        [        R$                  " X(5      nUR'                  X€R                  5        S S S 5        g s  snf ! , (       d  f       g = f)Nr  r  )rr   r·   r>   ró   r  r  r
   r)  r,  r    rŒ   r  r¨   r8   rj   rl   Úmake_anonymous_structr3  r  r  )rZ   rƒ   r=   r8  r9  r  rr   r·   ró   r  rm   r  r¨   r�  ÚidxvalsÚidxtuplerÏ  s                   €rC   r™  ÚH_make_flattening_iter_cls.<locals>.CContiguousFlatIter.iternext_specific  s^  ø€ Ø—z‘z�ØŸ™�àŸ™ T§Z¡ZÓ0�Ø"×.Ñ.¨s°EÓB�Ø× Ñ  Ô*ä×&Ò& wÕ9Ø!Ÿ+™+ c§h¡h°°Ó8�CÜ% g¸ÓC�EØ˜v“~ØŸ™ eÕ,ð #'§,¡,˜ô /4°D¬kó#;ò /: sð $+§<¡<´×0DÒ0DÀWØELØEHó1Jö $Kñ /:ð  ð #;ô $+×#5Ò#5°gÓ#G˜ØŸ™Ü#×9Ò9¸'Ø;CÐ:KóMôNô 1°À5Ø14ô?ô $×3Ò3°GÓC�EØ—M‘M %¯©Ô4÷) :Ð9ùò#;÷ :Õ9ús    Á.AFÃ	1F Ã:A=FÆ FÆ
Fc                 óT   • UR                  UR                  U/5      n[        XX65      $ rB  )r,  r    rŒ   ©rZ   rƒ   r=   r8  r9  ró   rm   s          rC   rÿ  Ú>_make_flattening_iter_cls.<locals>.CContiguousFlatIter.getitem4  s%   € Ø—k‘k #§(¡(¨U¨GÓ4�Ü  °5Ó>Ð>rE   c                 óX   • UR                  UR                  U/5      n[        XX6U5        g rB  )r,  r    r�   ©rZ   rƒ   r=   r8  r9  ró   r  rm   s           rC   ÚsetitemÚ>_make_flattening_iter_cls.<locals>.CContiguousFlatIter.setitem8  s$   € Ø—k‘k #§(¡(¨U¨GÓ4�Ü˜7¨U¸3Õ?rE   )ró   r¨   r  N)
ru   rv   rw   rx   r}  rD  r™  rÿ  rÍ  rz   ©rÏ  s   €rC   ÚCContiguousFlatIterrÀ  ø  s   ø† ñõ+õ25ò<?õ@rE   rÐ  c                   ó>   >• \ rS rSrSrS rU 4S jrS rS rS r	Sr
g	)
Ú+_make_flattening_iter_cls.<locals>.FlatIteri?  zŸ
Generic .flat() / .ndenumerate() implementation for
non-contiguous arrays.
It keeps track of pointers along each dimension in order to
minimize computations.
c                 óÔ  • UR                  [        R                  S5      nUR                  nUR                  n[
        R                  " X$R                  U5      n[
        R                  " X%R                  UR                  [        R                  UR                  5      S9n	[
        R                  " X&R                  UR                  [        R                  UR                  5      S9n
[
        R                  " U[
        R                  5      n[        U5       H©  n[
        R                  " X)U5      n[
        R                  " X*U5      nUR                  Xn5        UR                  X]5        XŒ   nUR                  SXõ5      n[
        R                   " UU5         UR                  [
        R"                  U5        S S S 5        M«     X�l        X l        X°l        g ! , (       d  f       MÏ  = fr¶  )rÄ   r   r”   r    rr   r
   rÅ   rg   rX   r9   rò   r(  r8   rj   r  r  r“  r*  r¨   Úpointersrˆ  )rZ   rƒ   r=   r8  r9  rù   r    rr   r  r¨   rÔ  rˆ  r�  r/  Úptrptrrè  r·  s                    rC   rD  Ú9_make_flattening_iter_cls.<locals>.FlatIter.init_specificG  su  € Ø×+Ñ+¬E¯J©J¸Ó:�Ø—x‘x�Ø—z‘z�Ü ×-Ò-¨g·y±yÀ$ÓG�ä!×-Ò-ØŸY™Y¨W×-AÑ-AÄ%Ç*Á*ØBGÇ*Á*ó.NñO�ô #×.Ò.ØŸY™Y¨W×-AÑ-AÄ%Ç*Á*ØBGÇ*Á*ó.NñO�ô $×5Ò5°gÜ6=×6HÑ6HóJ�	ô ! ž;�CÜ$×1Ò1°'ÀCÓH�FÜ$×1Ò1°'ÀSÓI�FØ—M‘M $Ô/Ø—M‘M $Ô/ð  &™{�HØ#*×#8Ñ#8¸¸xÓ#N�LÜ ×,Ò,¨W°lÕCØŸ™¤g×&7Ñ&7¸ÔC÷ DÑCñ 'ð  '”Ø (”Ø!*•÷ DÖCús   Æ!GÇ
G'	c           
      ót  >• UR                   n[        R                  " X$R                  U5      n[        R                  " X$R                  U5      nU R
                  n	U R                  n
UR                  [        R                  S5      nUR                  S5      n[        R                  " X"R                  U R                  5      5      n[        R                  " X-5         UR                  S5        UR!                  U5        S S S 5        UR                  S5        [        R"                  " X*US-
  5      nUR                  U5      n[%        XX?5      nTS:X  a  UR'                  U5        O[)        U5       Vs/ s H*  nUR                  [        R"                  " UU	U5      5      PM,     nn[        R*                  " UU5      nUR'                  [        R,                  " UUU/5      5        [/        [)        U5      5       GHD  n[        R"                  " X)U5      n[        R0                  " UUR                  U5      5      nUU   nUU   nUR3                  SUU5      n[        R4                  " UU5         UR7                  UU5        [        R"                  " X*U5      nUR                  U5      n[        R8                  " X/U5      nUR7                  UU5        [)        US-   U5       H-  n[        R"                  " UU
U5      nUR7                  UU5        M/     UR!                  U5        S S S 5        UR7                  UU5        GMG     UR7                  [        R:                  U R                  5        UR!                  U5        UR=                  U5        g ! , (       d  f       GN˜= fs  snf ! , (       d  f       N‰= f)Nr   r@  FTrG   r  r  )rr   r
   rÅ   rg   r±   r¨   rÔ  rÄ   r   r”   r†  r’  r>   rˆ  r“  r  r—  rj   rŒ   r  r8   rl   rÄ  r%  r  r  r)  r  r   r*  r˜  )rZ   rƒ   r=   r8  r9  r  rr   r  r±   r¨   rÔ  rù   r.  Úis_exhaustedÚlast_ptrrm   r  r�  rÅ  rÆ  r/  r˜   rÆ   r  r0  rÕ  Ú	inner_dimrÏ  s                              €rC   r™  Ú=_make_flattening_iter_cls.<locals>.FlatIter.iternext_specifich  s  ø€ Ø—z‘z�Ü ×-Ò-¨g·y±yÀ$ÓG�Ü!×.Ò.¨w¿¹ÀTÓJ�ØŸ,™,�ØŸ=™=�à×+Ñ+¬E¯J©J¸Ó:�à×2Ñ2°5Ó9�ô  '×2Ò2ØŸ\™\¨$¯.©.Ó9ó ;�ä×(Ò(¨Õ?Ø×$Ñ$ UÔ+Ø—N‘N 5Ô)÷ @ð × Ñ  Ô&ô #×/Ò/°À4È!Á8ÓL�Ø—l‘l 8Ó,�Ü! '°EÓ?�Ø˜6“>Ø—M‘M %Õ(ô +0°¬+ó7ò +6 3ð  'Ÿ|™|¬G×,@Ò,@ÀØAHØADó-Fö  Gñ +6ð ð 7ô  '×1Ò1°'¸7ÓC�HØ—M‘MÜ×5Ò5°gØ7?ÀÐ6GóIôJô $¤E¨$£K×0�CÜ$×1Ò1°'À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ÈÓ!M˜Ø%Ÿl™l¨6Ó2˜Ü%×1Ò1°'ÀÓG˜ØŸ™ c¨6Ô2ä).¨s°Q©w¸Ö)=˜IÜ%,×%9Ò%9¸'Ø:BØ:Có&E˜Fð $ŸM™M¨#¨vÖ6ñ	 *>ð
  Ÿ™ uÔ-÷ ?ð —M‘M $¨×/ñ/ 1ð4 —‘œg×/Ñ/°·±Ô@Ø—‘˜uÔ%à×'Ñ'¨Õ.÷k @Ö?üò7÷& ?Õ>ús   Ã#NÅ61N$É1B5N)Î
N!Î)
N7	c           	      ó¾  • UR                   n[        R                  " X$R                  US9n[        R                  " X$R                  US9n/ n	[        [        U5      5       H:  n
U	R                  UR                  XWU
   5      5        UR                  XWU
   5      nM<     U	R                  5         [        R                  " XUR                  XxUR                  U	5      nU$ )Nrÿ   )rr   r
   rÅ   rg   r±   r%  r8   rk   ÚuremÚudivÚreverser*  r    r+  )rZ   rƒ   r=   r8  r9  ró   rr   r  r±   r¨   r�  rm   s               rC   Ú_ptr_for_indexÚ:_make_flattening_iter_cls.<locals>.FlatIter._ptr_for_index­  s³   € Ø—z‘z�Ü ×-Ò-¨g·y±yÈÑM�Ü!×.Ò.¨w¿¹È4ÑP�ð �Ü#¤E¨$£KÖ0�CØ—N‘N 7§<¡<°¸c±{Ó#CÔDØ#ŸL™L¨°s±Ó<’Eñ 1ð —‘Ô!ä×/Ò/°À#Ç(Á(Ø06ÀÇÁØ07ó9�ð �
rE   c                 ó@   • U R                  XX4U5      n[        XX65      $ rB  )rà  rŒ   rÉ  s          rC   rÿ  Ú3_make_flattening_iter_cls.<locals>.FlatIter.getitem¾  s#   € Ø×)Ñ)¨'¸EÈÓN�Ü  °5Ó>Ð>rE   c                 óD   • U R                  XX4U5      n[        XX6U5        g rB  )rà  r�   rÌ  s           rC   rÍ  Ú3_make_flattening_iter_cls.<locals>.FlatIter.setitemÂ  s"   € Ø×)Ñ)¨'¸EÈÓN�Ü˜7¨U¸3Õ?rE   )rˆ  r¨   rÔ  N)ru   rv   rw   rx   r}  rD  r™  rà  rÿ  rÍ  rz   rÏ  s   €rC   ÚFlatIterrÒ  ?  s%   ø† ñò+õBC/òJò"?õ@rE   ræ  )rc   r+  r
   r}   )r  rÏ  rc   rÐ  ræ  s    `   rC   r  r  ò  sr   ø€ ØÐ*Ó*Ð*Ð*à×&Ñ&€Jà×Ñ˜CÓ÷B	@¤'×"=Ò"=¸jÓ"Iô B	@ðH #Ð"÷E	@”w×2Ò2°:Ó>ô E	@ðN ˆrE   r  c                 ó0  • [        [        R                  " U5      5      nU" X5      nX5l        U R	                  U5      nU" XUR                  S5      S9nUR                  XX#5        UR                  5       n[        X[        R                  " U5      U5      $ ©NrÌ   )r[   )	r   r   ÚNumpyFlatTyperÌ   r~   ri   rD  r÷   r!   )rƒ   r=   r8  r9  ÚflatiterclsÚflatiterÚarrclsrû   s           rC   Úmake_array_flatiterrí  É  s…   € ä%¤e×&9Ò&9¸%Ó&@ÓA€KÙ˜7Ó,€Hà„Nà×Ñ Ó&€FÙ
� x×'@Ñ'@ÀÓ'IÑ
J€Cà×Ñ˜7¨UÔ8à
×
Ñ
Ó
€CÜ˜W¬u×/BÒ/BÀ5Ó/IÈ3ÓOÐOrE   c                 óÎ   • UR                   u  nUu  n[        U5      nU" XUS9nUR                  nU R                  U5      n	U	" XUR                  S9n
UR                  XXŠU5        g r˜  )rï   r   rc   r~   rÌ   r™  )rƒ   r=   r\   rï   r  r  rë  rê  r8  rì  r9  s              rC   Úiternext_numpy_flatiterrï  Ù  si   € ð —8‘8�L€ZØ�J€Xä% jÓ1€KÙ˜7°8Ñ<€Hà×!Ñ!€EØ×Ñ Ó&€FÙ
�¨¯©Ñ
8€Cà×Ñ˜w°¸VÕDrE   c                 óü   • UR                   S   nUu  pV[        U5      nU" XUS9nUR                  nU R                  U5      n	U	" XUR                  S9n
UR                  XXŠU5      n[        XUR                  U5      $ ©Nr   r  )rï   r   rc   r~   rÌ   rÿ  r!   rñ   )rƒ   r=   r\   rï   r  rë  ró   rê  r8  rì  r9  rû   s               rC   Úiternext_numpy_getitemrò  é  s~   € à—‘˜!‘€JØ�O€Hä% jÓ1€KÙ˜7°8Ñ<€Hà×!Ñ!€EØ×Ñ Ó&€FÙ
�¨¯©Ñ
8€Cà
×
Ñ
˜7¨U¸Ó
?€CÜ˜W¨s¯©ÀÓDÐDrE   c                 óð   • UR                   S   nUu  pVn[        U5      nU" XUS9nUR                  n	U R                  U	5      n
U
" XUR                  S9nUR                  XX›Xg5        U R                  5       $ rñ  )rï   r   rc   r~   rÌ   rÍ  rd  )rƒ   r=   r\   rï   r  rë  ró   r  rê  r8  rì  r9  s               rC   Úiternext_numpy_getitem_anyrô  ù  s}   € ð —‘˜!‘€JØ!Ñ€H�Uä% jÓ1€KÙ˜7°8Ñ<€Hà×!Ñ!€EØ×Ñ Ó&€FÙ
�¨¯©Ñ
8€Cà×Ñ�W u°5Ô@Ø×"Ñ"Ó$Ð$rE   c                 óº   • UR                   S   n[        U5      nU" XUS   S9nU R                  UR                  5      nU" XUR                  S9nUR
                  $ rñ  )rï   r   r~   rc   rÌ   r·   )	rƒ   r=   r\   rï   r  rê  rë  rì  r9  s	            rC   Úiternext_numpy_getitem_flatrö  
  sY   € à—‘˜!‘€JÜ% jÓ1€KÙ˜7°4¸±7Ñ;€Hà×Ñ 
× 5Ñ 5Ó6€FÙ
�¨¯©Ñ
8€CØ�:‰:ÐrE   c                 ó@  • UR                   u  nUu  n[        [        R                  " U5      5      nU" X5      nXWl        U R                  U5      nU" XUR                  S5      S9nUR                  XXE5        UR                  5       n	[        XUR                  U	5      $ rè  )rï   r%  r   ÚNumpyNdEnumerateTyperÌ   r~   ri   rD  r÷   r!   rñ   )
rƒ   r=   r\   rï   r8  r9  Ú	nditerclsr8  rì  rû   s
             rC   Úmake_array_ndenumeraterú    s�   € à�X‰X�F€EØ�D€CÜ*¬5×+EÒ+EÀeÓ+LÓM€IÙ�wÓ(€Fà„Là×Ñ Ó&€FÙ
� v×'>Ñ'>¸wÓ'GÑ
H€Cà
×Ñ˜¨5Ô6à
×
Ñ
Ó
€CÜ˜W¨s¯©ÀÓDÐDrE   c                 óÎ   • UR                   u  nUu  n[        U5      nU" XUS9nUR                  nU R                  U5      n	U	" XUR                  S9n
UR                  XXŠU5        g r˜  )rï   r%  rc   r~   rÌ   r™  )rƒ   r=   r\   rï   r  r$  r8  rù  r8  rì  r9  s              rC   Úiternext_numpy_nditerrü  '  si   € ð —‘�J€XØ�H€Vä*¨8Ó4€IÙ�w¨vÑ6€Fà×Ñ€EØ×Ñ Ó&€FÙ
�¨¯©Ñ
6€Cà
×Ñ˜W¨u¸6ÕBrE   c           
      ór  • [        UR                  U5       VVs/ s H&  u  pEU R                  XU[        R                  5      PM(     nnn[        [        R                  " [        U5      5      5      nU" X5      nUR                  XU5        UR                  5       n	[        XUR                  U	5      $ s  snnf )zndindex(*shape))r¦   rï   r“   r   r”   r½  ÚNumpyNdIndexTyper¥   rD  r÷   r!   rñ   )
rƒ   r=   r\   rï   ÚargtyrÃ  rg   rù  r8  rû   s
             rC   Úmake_array_ndindexr   7  s�   € ô
  # 3§8¡8¨TÔ2ô4Ú2‘�ð �\‰\˜'¨¬u¯z©zÖ:Ù2ð 
ñ 4ô !¤×!7Ò!7¼¸E»
Ó!CÓD€IÙ�wÓ(€FØ
×Ñ˜¨5Ô1à
×
Ñ
Ó
€CÜ˜W¨s¯©ÀÓDÐDùó4s   š-B3c           	      óè  • UR                   R                  nUS:”  ag  UR                  S   R                  nUS   n[        R
                  " XU5      nU Vs/ s H$  nU R                  XU[        R                  5      PM&     nnO/ n[        [        R                  " [        U5      5      5      n	U	" X5      n
U
R                  XU5        U
R                  5       n[        XUR                   U5      $ s  snf )zndindex(shape)r   )rñ   rr   rï   r�   r
   rÅ   r“   r   r”   r½  rþ  r¥   rD  r÷   r!   )rƒ   r=   r\   rï   rr   r—   rL  rg   r˜   rù  r8  rû   s               rC   Úmake_array_ndindex_tupler  F  sÛ   € ð �?‰?×Ñ€DØˆaƒxØ—‘˜‘×!Ñ!ˆØ�1‰gˆä×$Ò$ W°4Ó8ˆá!ó#Ú!�Sð —‘˜g¨E´5·:±:Ö>Ù!ð 	ð #ˆð ˆä ¤×!7Ò!7¼¸E»
Ó!CÓD€IÙ�wÓ(€FØ
×Ñ˜¨5Ô1à
×
Ñ
Ó
€CÜ˜W¨s¯©ÀÓDÐDùò#s   Á+C/c                 óp   • UR                   u  nUu  n[        U5      nU" XUS9nUR                  XU5        g r˜  )rï   r½  r™  )rƒ   r=   r\   rï   r  r$  r8  rù  s           rC   Úiternext_numpy_ndindexr  ]  s<   € ð —‘�J€XØ�H€Vä  Ó*€IÙ�w¨vÑ6€Fà
×Ñ˜W¨vÕ6rE   c                 óH  • UR                   nUR                  n[        UR                  S   [        R
                  5      (       a  [        R                  " XS   5      nOUS   /n[        U5      " X5      nUR                  XXV5        UR                  5       n[        XXH5      $ )z
nditer(...)
r   )rñ   r…  r�   rï   r   rO  r
   rÅ   r±  rD  r÷   r!   )	rƒ   r=   r\   rï   r$  r‰  r…  r8  rû   s	            rC   Úmake_array_nditerr  i  sˆ   € ð
 �‰€HØ�_‰_€Fä�#—(‘(˜1‘+œuŸ™×/Ñ/Ü×%Ò% g°A©wÓ7‰à�q‘'�ˆä˜XÔ& wÓ8€FØ
×Ñ˜¨6Ô:à
×
Ñ
Ó
€CÜ˜W¨xÓ=Ð=rE   c                 ól   • UR                   u  nUu  n[        U5      " XUS9nUR                  XU5        g r˜  )rï   r±  r™  )rƒ   r=   r\   rï   r  r$  r8  s          rC   Úiternext_numpy_nditer2r  }  s7   € ð —‘�J€XØ�H€Vä˜XÔ& w¸vÑF€FØ
×Ñ˜W¨vÕ6rE   c                 ó¸   • UR                   u  pE[        R                  " [        R                  " S5      [	        XE:H  5      5      n[        XUR                  U5      $ r¨  )rï   r   r   r¼  rÂ   r#   rñ   )rƒ   r=   r\   rï   Úarg1Úarg2rû   s          rC   Údtype_eq_implr  ‡  s?   € à—‘�J€DÜ
�+Š+”b—j’j “m¤S¨©Ó%6Ó
7€CÜ˜g°·±ÀÓEÐErE   c           	      óˆ  • [        U5      nU" X5      nU R                  UR                  5      nU R                  [        R
                  [        X5      5      nU R                  [        R
                  S5      n[        [        R                  " S5      S5      n	U HG  n
UR                  XŠ5      nUR                  US5      nUR                  X‘R                  US5      5      n	MI     UR                  S:X  a  SnOÔUR                  S:X  aQ  U/n[        USS 5       H'  nUR!                  UR#                  US   U5      5        M)     [%        [        U5      5      nOsUR                  S:X  a?  U/nUSS  H'  nUR!                  UR#                  US   U5      5        M)     [%        U5      nO$['        SR)                  UR                  5      5      eUR                  X‡5      nUR                  US5      nUR                  X‘R                  US5      5      n	UR+                  U	S	S
9   U R,                  R/                  U[0        S5        SSS5        UR                  nU R3                  U5      nU R                  [        R4                  U5      nU R7                  5       UU4n[        R8                  " [        R:                  5      n[        R<                  " [?        U5      5      n[A        UU[        R
                  [        R4                  5      nU RC                  U[D        UU5      nU RF                  RI                  UU5      nU RK                  [        R
                  5      n[L        RN                  " XUS9n[L        RN                  " XUS9n[Q        UURS                  UURU                  5       5      UUUUS9  U$ ! , (       d  f       GNw= f)zù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.
rG   r   rt   r«   NrH  r  z3Don't know how to allocate array with layout '{0}'.Fr\  )z[array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.)rE  r'  )+r~   r€   r�   rÄ   r   r”   r…   r   r   r¼  Úsmul_with_overflowrV  r  rr   r+  r%  rk   rÇ   rÀ   rS   rÉ   r  r^  r_  r½   Úget_preferred_array_alignmentÚuint32rd  ÚMemInfoPointerÚvoidptrÚTypeRefr9   r%   r*  Ú_call_allocatorrõ   Úmeminfo_datar¾   r
   rl   rÚ   ra  r)  )rƒ   r=   r…  r  r$  r  Údatatyper²   ÚarrlenÚoverflowr¬   Úarrlen_multr±   Údimension_sizeÚallocsize_multri  r�   Ú	align_valrˆ   rï   ÚmipÚarytypeclassÚargtypesr°   r    rÓ   Úshape_arrayÚstrides_arrays                               rC   r)  r)  ‘  s%  € ô ˜Ó €FÙ
�Ó
"€Cà×$Ñ$ W§]¡]Ó3€HØ×#Ñ#¤E§J¡J´¸WÓ0NÓO€Hð ×!Ñ!¤%§*¡*¨aÓ0€FÜœŸ
š
 1› qÓ)€HÛˆØ×0Ñ0°Ó;ˆØ×&Ñ& {°AÓ6ˆØ—;‘;Ø×+Ñ+¨K¸Ó;ó
Šñ ð ‡|�|�qÓØ‰Ø	�‰˜3Ó	Ø�*ˆÜ& v¨a¨b zÖ2ˆNØ�N‰N˜7Ÿ;™; w¨r¡{°NÓCÖDñ 3äœ Ó)Ó*‰Ø	�‰˜3Ó	Ø�*ˆØ$ S b›kˆNØ�N‰N˜7Ÿ;™; w¨r¡{°NÓCÖDñ *ä˜“.‰ä!ØA×HÑHØ—‘ó ó!ð 	!ð
 ×/Ñ/°ÓA€NØ×%Ñ% n°aÓ8€IØ�{‰{˜8×%:Ñ%:¸>È1Ó%MÓN€Hà	�‰˜¨%ˆÒ	0ð 	×Ñ×)Ñ)Ø”Zð-ô	
÷ 
1ð �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¸Ñ@€KÜ×&Ò& w¸FÑC€Mä�3ØŸ™¨¨h×.AÑ.AÓ.CÓDØ$Ø(Ø$Ø"ò$ð €J÷A 
1Ö	0ús   È "N2Î2
OÚ	_allocatec                 ó   • S nU$ )zLImplements a Numba-only default target (cpu) classmethod on the array
type.
c                 ó   • [        X5      $ rB  )Úintrin_alloc)Úclsri  rˆ   s      rC   rè   Ú _ol_array_allocate.<locals>.implå  s   € Ü˜IÓ-Ð-rE   rt   )r&  ri  rˆ   rè   s       rC   Ú_ol_array_allocater(  à  s   € ò
.à€KrE   c                 ó$   • U R                  X5      $ )z9Trampoline to call the intrinsic used for allocation
    )r"  )r…  r™   rˆ   s      rC   r  r  ê  s   € ð ×Ñ˜TÓ)Ð)rE   c                 ón   • S n[         R                  " [         R                  5      n[        XAU5      nXS4$ )z3Intrinsic to call into the allocator for Array
    c                 óF   • Uu  pEU R                   R                  XU5      nU$ rB  )rõ   Úmeminfo_alloc_aligned)rƒ   r=   r%   rï   ri  rˆ   r°   s          rC   rŽ  Úintrin_alloc.<locals>.codegenô  s%   € Ø!ÑˆØ—+‘+×3Ñ3°GÈÓNˆØˆrE   )r   r  r  r%   )r�  ri  rˆ   rŽ  r  r\   s         rC   r%  r%  ð  s1   € òô
 ×
Ò
œuŸ}™}Ó
-€CÜ
�C EÓ
*€CØˆ<ÐrE   c           	      ó¨  • S n[        U[        R                  5      (       a%  SnU R                  XU[        R                  5      /nOB[        U[        R
                  5      (       d   eUR                  n[        R                  " XUS9n/ nU H&  nUR                  U" XUR                  U5      5        M(     U R                  U[        R                  S5      n	[        U5       HX  n
UR                  SXz   U	5      n[        R                  " X5         U R                  R!                  U["        S5        SSS5        MZ     U$ ! , (       d  f       Mm  = f)z3
Parse the shape argument to an array constructor.
c                 ó  • U R                  [        R                  5      nUR                  n[        R
                  " U5      n[        USUS-
  -  S-
  5      nUR                  U:  a  UR                  X65      nU$ UR                  U:¼  aq  UR                  SX75      n	UR                  U	SS9   U R                  R                  U[        S5        SSS5        UR                  U:”  a  UR                  X65      nU$ UnW$ ! , (       d  f       N5= f)z0Cast src to intp only if value can be maintainedrG   Ú>Fr\  )z#Cannot safely convert value to intpN)r¾   r   r”   rH   r   r¼  r   Úsextr  r  r^  r_  r½   Útrunc)
rƒ   r=   Úsrc_trh  rÓ   Ú
intp_widthÚintp_irÚmaxvalrû   Ú	is_largers
             rC   Úsafecast_intpÚ#_parse_shape.<locals>.safecast_intp  sñ   € à×'Ñ'¬¯
©
Ó3ˆØ—\‘\ˆ
Ü—*’*˜ZÓ(ˆÜ˜' Q¨*°q©.Ñ%8¸AÑ$=Ó?ˆØ�;‰;˜Ó#Ø—,‘,˜sÓ,ˆCð ˆ
ð �[‰[˜JÓ&Ø×+Ñ+¨C°Ó=ˆIØ—‘ °5�Ò9Ø×!Ñ!×1Ñ1ØœZØ<ô÷ :ð
 �{‰{˜ZÓ'Ø—m‘m CÓ1�ð ˆ
ð �Øˆ
÷ :Õ9ús   Â,"C=Ã=
DrG   rÿ   r   r  )znegative dimensions not allowedN)r�   r   rŸ   r“   r”   rO  rÆ   r
   rÅ   rk   r9   Úget_constant_genericr8   r  r“  r^  r_  r½   )rƒ   r=   rE  r�   r8  rr   Úpassed_shapesr  r¬   rù   r�  Úis_negs               rC   Ú_parse_shaper=  þ  s  € òô* �"”e—m‘m×$Ñ$ØˆØ Ÿ™ g°B¼¿
¹
ÓCÐD‰ä˜"œeŸo™o×.Ñ.Ð.Ð.Ø�x‰xˆÜ×,Ò,¨WÀÑFˆà€FÛˆØ�‰‘m G°a·f±f¸aÓ@ÖAñ ð ×'Ñ'¨´·±¸QÓ?€DÜ�TŽ{ˆØ×$Ñ$ S¨&©+°tÓ<ˆÜ× Ò  Õ1Ø×Ñ×-Ñ-ØœÐ%Iô÷ 2Ñ1ñ ð €M÷ 2Ö1ús   Ä"EÅ
E	c                 ó^   • UR                   S   nUS   nUR                  nU[        XXE5      4$ )zD
Parse the arguments of a np.empty(), np.zeros() or np.ones() call.
r   )rï   rñ   r=  )rƒ   r=   r\   rï   ÚarrshapetypeÚarrshaper…  s          rC   Ú_parse_empty_argsrA  .  s5   € ð —8‘8˜A‘;€LØ�A‰w€HØ�o‰o€GØ”L °<ÓJÐJÐJrE   c                 ó  • UR                   S   n[        U[        R                  5      (       aJ  [	        U5      " XUS   S9n[
        R                  " XR                  UR                  S9nUR                  U4$ UR                  S4$ )zS
Parse the arguments of a np.empty_like(), np.zeros_like() or
np.ones_like() call.
r   r  rÿ   rt   )
rï   r�   r   rž   r~   r
   rÅ   rg   rr   rñ   )rƒ   r=   r\   rï   Úarytyper  r  s          rC   rµ  rµ  8  so   € ð
 �h‰h�q‰k€GÜ�'œ5Ÿ;™;×'Ñ'Ü˜Ô! '¸$¸q¹'ÑBˆÜ×%Ò% g¯y©yÀÇÁÑMˆØ�‰ Ð&Ð&à�‰ Ð"Ð"rE   c                 óz   • [        U[        R                  5      (       a  SU  S3n[        R                  " U5      eg )NzIf np.z0 dtype is a string it must be a string constant.)r�   r   ÚUnicodeTyper	   rê   )Úfnamer�   rÒ   s      rC   Ú_check_const_str_dtyperG  F  s:   € Ü�%œ×*Ñ*×+Ñ+Ø�u�gÐMÐNˆÜ× Ò  Ó%Ð%ð ,rE   c                 ó8   • UR                   nU" XU5      nS nXV4$ )Nc                 óV   • [        XX#5      u  pE[        XXE5      nUR                  5       $ rB  )rA  r)  r÷   ©rU  r=   r\   rV  r…  r  r  s          rC   rŽ  Únumpy_empty_nd.<locals>.codegenQ  s(   € Ü+¨E¸CÓH‰ˆÜ˜U¨WÓ=ˆØ�}‰}‹ÐrE   ©Úinstance_type)rY  Úty_shapeÚty_dtypeÚty_retty_refÚty_rettyr\   rŽ  s          rC   Únumpy_empty_ndrR  L  s(   € à×)Ñ)€HÙ
�8 |Ó
4€Còð ˆ<ÐrE   c                 ó’  ^• [        SU5        U[        L dB  [        U[        R                  5      (       a  UR
                  [        L d  [        U5      (       a  [        R                  nO[        U5      n[        U 5      nUb'  Ub$  [        R                  " X#SS9m[        4U4S jjnU$ SU  SU S3n[        R                  " U5      e)NrA  r«   r&  c                 ó   >• [        XT5      $ rB  )rR  )rg   r�   rŽ  s     €rC   rè   Úol_np_empty.<locals>.implf  s   ø€ Ü! %°Ó6Ð6rE   z.Cannot parse input types to function np.empty(rç  rè  )rG  Úfloatr�   r   ÚFunctionÚ
typing_keyr   ÚdoubleÚty_parse_dtypeÚty_parse_shaperž   r	   rê   )rg   r�   Únb_dtyperr   rè   rÒ   rŽ  s         @rC   Úol_np_emptyr]  X  s§   ø€ ä˜7 EÔ*Ø”ŠÜ	�Eœ5Ÿ>™>×	*Ñ	*¨u×/?Ñ/?Ä5Ò/HÜ˜×ÑÜ—<‘<‰ä! %Ó(ˆä˜%Ó €DØÑ Ñ 0Ü—’ (¸cÑBˆä#÷ 	7àˆà>¸u¸gÀRÈÀwÈaÐPˆÜ× Ò  Ó%Ð%rE   c                 ó8   • UR                   nU" XU5      nS nXV4$ )Nc                 óV   • [        XX#5      u  pE[        XXE5      nUR                  5       $ rB  )rµ  r)  r÷   rJ  s          rC   rŽ  Ú$numpy_empty_like_nd.<locals>.codegens  s(   € Ü0°ÀÓM‰ˆÜ˜U¨WÓ=ˆØ�}‰}‹ÐrE   rL  )rY  Úty_prototyperO  rP  rQ  r\   rŽ  s          rC   Únumpy_empty_like_ndrb  n  s(   € à×)Ñ)€HÙ
�<¨<Ó
8€Còð ˆ<ÐrE   c                 óÖ  ^• [        SU5        [        U5      (       d  [        U5      nO.[        U [        R
                  5      (       a  U R                  nOU nUbg  [        U [        R
                  5      (       a/  U R                  S:w  a  U R                  OSnU R                  X#SS9mO8[        R
                  " USS5      mOSU  SU S	3n[        R                  " U5      eSU4S
 jjnU$ )NrÎ  r‚  r«   F)r�   r+  rŠ  r   z3Cannot parse input types to function np.empty_like(rç  rè  c                 ó   >• [        XT5      $ rB  )rb  )r9  r�   rŽ  s     €rC   rè   Úol_np_empty_like.<locals>.implŽ  s   ø€ Ü" 3¨uÓ5Ð5rE   rB  )rG  r   rZ  r�   r   rž   r�   r+  r„  r	   rê   )r9  r�   r\  r+  rÒ   rè   rŽ  s         @rC   Úol_np_empty_likerf  z  sÆ   ø€ ä˜<¨Ô/Ü�u×ÑÜ! %Ó(‰Ü	�CœŸ™×	%Ñ	%Ø—9‘9‰àˆØÑÜ�cœ5Ÿ;™;×'Ñ'Ø#&§:¡:°Ó#4�S—Z’Z¸#ˆFØ—H‘H 8ÀU�HÐK‰Eä—K’K ¨!¨SÓ1‰Eð Ø #˜u B u g¨Qð0ˆä× Ò  Ó%Ð%÷6à€KrE   c                 ó:   • [         R                  " U5      nS nX#4$ )Nc                 óÔ   • [        UR                  S   5      " XUS   5      n[        R                  " XR                  UR                  UR                  UR                  5      S5        g ræ   )r~   rï   r
   r¶  r    rÇ   r²   r·   )rU  r=   r\   rV  r  s        rC   rŽ  Ú(_zero_fill_array_method.<locals>.codegen—  sI   € Ü˜Ÿ™ !™Ô% e°f¸Q±iÓ@ˆÜ�Š�w§¡¨'¯+©+°c·l±lÀCÇJÁJÓ*OØõ	rE   )r   r‡  )rY  rZ   r\   rŽ  s       rC   Ú_zero_fill_array_methodrj  “  s   € ä
�*Š*�TÓ
€Còð ˆ<ÐrE   Ú
_zero_fillc                 ó   • S nU$ )z?Adds a `._zero_fill` method to zero fill an array using memset.c                 ó   • [        U 5        g rB  )rj  ri  s    rC   rè   Ú ol_array_zero_fill.<locals>.impl¡  s
   € Ü Õ%rE   rt   )rZ   rè   s     rC   Úol_array_zero_fillro  ž  s   € ò&à€KrE   c                 ó2   • [        SU5        [        4S jnU$ )Nr¤  c                 óN   • [         R                  " XS9nUR                  5         U$ ©Nr?  )r¤  rA  rk  )rg   r�   r9  s      rC   rè   Úol_np_zeros.<locals>.implª  s   € Ü�hŠh�uÑ*ˆØ�‰ÔØˆ
rE   )rG  rV  ©rg   r�   rè   s      rC   Úol_np_zerosru  ¦  s   € ä˜7 EÔ*äô ð €KrE   c                 ó(   • [        SU5        SS jnU$ )NÚ
zeros_likec                 óN   • [         R                  " XS9nUR                  5         U$ rr  )r¤  rÎ  rk  )r7  r�   r9  s      rC   rè   Úol_np_zeros_like.<locals>.impl¶  s   € Ü�mŠm˜AÑ+ˆØ�‰ÔØˆ
rE   rB  ©rG  rh  s      rC   Úol_np_zeros_liker{  ±  s   € ä˜<¨Ô/ôð €KrE   c                 ó(   • [        SU5        SS jnU$ )NÚ	ones_likec                 ó„   • [         R                  " XS9nUR                  n[        [	        U5      5       H  nSX4'   M	     U$ ©Nr?  rG   ©r¤  rÎ  r  r8   r¥   )r7  r�   r9  Úarr_flatr˜   s        rC   rè   Úol_np_ones_like.<locals>.implÂ  s8   € Ü�mŠm˜AÑ+ˆØ—8‘8ˆÜœ˜X›Ö'ˆCØˆH‹Mñ (àˆ
rE   rB  rz  rh  s      rC   Úol_np_ones_likerƒ  ½  s   € ä˜;¨Ô.ôð €KrE   c                 ól   ^• [        SU5        [        U5      (       d  [        U5      mOUmSU4S jjnU$ )NÚfullc                 óŒ   >• [         R                  " U T5      nUR                  n[        [	        U5      5       H  nXU'   M	     U$ rB  ©r¤  rA  r  r8   r¥   )rg   Ú
fill_valuer�   r9  r�  r˜   r\  s         €rC   r…  Úimpl_np_full.<locals>.fullÓ  s;   ø€ Ü�hŠh�u˜hÓ'ˆØ—8‘8ˆÜœ˜X›Ö'ˆCØ&�S‹Mñ (àˆ
rE   rB  )rG  r   rZ  )rg   rˆ  r�   r…  r\  s       @rC   Úimpl_np_fullrŠ  Ë  s3   ø€ ä˜6 5Ô)Ü�u×ÑÜ! %Ó(‰àˆ÷ð €KrE   c                 ó(   • [        SU5        SS jnU$ )Nrï  c                 óˆ   • [         R                  " X5      nUR                  n[        [	        U5      5       H  nXU'   M	     U$ rB  r€  )r7  rˆ  r�   r9  r�  r˜   s         rC   rï  Ú$impl_np_full_like.<locals>.full_likeà  s8   € Ü�mŠm˜AÓ%ˆØ—8‘8ˆÜœ˜X›Ö'ˆCØ&�S‹Mñ (àˆ
rE   rB  rz  )r7  rˆ  r�   rï  s       rC   Úimpl_np_full_likerŽ  Ü  s   € ä˜;¨Ô.ôð ÐrE   c                 ó(   • [        SU5        SS jnU$ )NÚonesc                 ó„   • [         R                  " XS9nUR                  n[        [	        U5      5       H  nSX4'   M	     U$ r  r‡  )rg   r�   r9  r�  r˜   s        rC   rè   Úol_np_ones.<locals>.implð  s8   € Ü�hŠh�uÑ*ˆØ—8‘8ˆÜœ˜X›Ö'ˆCØˆH‹Mñ (àˆ
rE   rB  rz  rt  s      rC   Ú
ol_np_onesr“  ê  s   € ô ˜6 5Ô)ôð €KrE   c                 óˆ   ^• [        SU5        [        U5      (       d  [        U5      mO[        R                  mSU4S jjnU$ )NÚidentityc                 óh   >• [         R                  " X 4T5      n[        U 5       H	  nSX#U4'   M     U$ r¨  )r¤  r¤  r8   )rE  r�   r9  ro   r\  s       €rC   r•  Ú"impl_np_identity.<locals>.identity  s3   ø€ Ü�hŠh˜�v˜xÓ(ˆÜ�q–ˆAØˆC�1�‹Iñ àˆ
rE   rB  )rG  r   rZ  r   rY  )rE  r�   r•  r\  s      @rC   Úimpl_np_identityr˜  ù  s7   ø€ ä˜: uÔ-Ü�u×ÑÜ! %Ó(‰ä—<‘<ˆ÷ð
 €OrE   c                 ó   • g rB  rt   ©ÚNÚMs     rC   Ú_eye_none_handlerr�  	  r]  rE   c                 óT   • [        U[        R                  5      (       a  S nU$ S nU$ )Nc                 ó   • U $ rB  rt   rš  s     rC   rè   Ú$_eye_none_handler_impl.<locals>.impl  ó   € ØˆHrE   c                 ó   • U$ rB  rt   rš  s     rC   rè   r     r¡  rE   )r�   r   r  )r›  rœ  rè   s      rC   Ú_eye_none_handler_implr£    s)   € ä�!”U—^‘^×$Ñ$ò	ð
 €Kò	à€KrE   c                 óX  ^• Ub  [        U[        R                  5      (       a  [        R                  " [
        5      mO\[        U[        R                  [        R                  45      (       a  [        [        USU5      5      mO[        R                  " U5      mS S[
        4U4S jjnU$ )Nr�   r   c                 ó   >• [        X5      n[        R                  " X4T5      nUS:¼  a*  [        XU-
  5      n[	        U5       H  nSXWXr-   4'   M     U$ [        X-   U5      n[	        U5       H  nSXWU-
  U4'   M     U$ rñ  )r�  r¤  r¤  rÑ  r8   )	r›  rœ  rØ   r�   Ú_Mr9  Údro   rÔ  s	           €rC   rè   Únumpy_eye.<locals>.impl#  s†   ø€ Ü˜qÓ$ˆÜ�hŠh˜�w Ó#ˆØ�‹6Ü�A˜A‘v“ˆAÜ˜1–X�Ø !��q‘u�H“ñ ð ˆ
ô �A‘E˜2“ˆAÜ˜1–X�Ø !�˜‘E˜1�H“ñ àˆ
rE   )
r�   r   r  r¤  r�   rV  Ú	DTypeSpecrÒ  r   rl  )r›  rœ  rØ   r�   rè   rÔ  s        @rC   Ú	numpy_eyerª    st   ø€ ð �}œ
 5¬%¯.©.×9Ñ9Ü�XŠX”e‹_‰Ü	�EœEŸO™O¬U¯\©\Ð:×	;Ñ	;ä”g˜e W¨eÓ4Ó5‰ä�XŠX�e‹_ˆà˜!¤5÷ ð €KrE   c                 óè   • [        U 5      (       d  [        R                  " S5      e[        U [        R
                  5      (       a-  U R                  S;  a  [        R                  " S5      eSS jnU$ g )Nú#The argument "v" must be array-like)rG   rb  zInput must be 1- or 2-d.c                 ób  • U R                   S:X  a†  U R                  nUS   [        U5      -   n[        R                  " X34U R
                  5      nUS:¼  a   [        X1-
  5       H  nX   XEX-   4'   M     U$ [        X1-   5       H  nX   XEU-
  U4'   M     U$ U R                  u  pgUS:  a  Xa-   nUS:”  a  Xq-
  n[        [        Xg5      S5      n[        R                  " X0R
                  5      nUS:¼  a  [        U5       H  nXX-   4   XE'   M     U$ [        U5       H  nXU-
  U4   XE'   M     U$ rÊ  )
rr   rg   r#  r¤  r¤  r�   r8   rÇ  rÑ  rA  )rÙ   rØ   r¬   rE  r‘  ro   ÚrowsÚcolss           rC   Ú	diag_implÚimpl_np_diag.<locals>.diag_impl;  s,  € Ø�v‰v˜‹{Ø—G‘G�Ø�a‘Dœ3˜q›6‘M�Ü—h’h ˜v q§w¡wÓ/�Ø˜“6Ü" 1¡5ž\˜Ø()©˜˜q™u˜H›ñ *ð
 �
ô # 1¡5ž\˜Ø()©˜ ™E 1˜H›ñ *à�
àŸW™W‘
�Ø�q“5Ø™8�DØ�q“5Ø™8�DÜœ˜D›¨Ó+�Ü—h’h˜q§'¡'Ó*�Ø˜“6Ü" 1žX˜Ø!" a¡e 8¡˜›ñ &ð
 �
ô # 1žX˜Ø!" q¡5¨! 8¡˜›ñ &à�
rE   rÍ  )r   r	   rê   r�   r   rž   rr   ÚNumbaTypeError)rÙ   rØ   r°  s      rC   Úimpl_np_diagr³  2  s`   € ä˜A×ÑÜ× Ò Ð!FÓGÐGä�!”U—[‘[×!Ñ!Ø�6‰6˜ÓÜ×'Ò'Ð(BÓCÐCô	ð6 Ðð? "rE   c                 ó(  ^^• [        U [        R                  5      (       d  Sn[        R                  " U5      e[        U R
                  [        R                  5      (       d  Sn[        R                  " U5      e[        U 5      mST-  mUU4S jnU$ )Nz5The argument "dimensions" must be a tuple of integersrÀ  c                 óö   >• [         R                  " T4U -   [         R                  S9nSnU  HH  n[         R                  " U[         R                  S9R	                  [        TX#5      5      nXAU'   US-  nMJ     U$ )Nr?  r   rG   )r¤  rA  rô  Úarangerš  r/   )Ú
dimensionsrû   ro   r�  r˜   r›  rg   s        €€rC   rè   Únumpy_indices.<locals>.implf  so   ø€ Ü�hŠh˜�t˜jÑ(´·±Ñ9ˆØˆÛˆCÜ—)’)˜C¤r§x¡xÑ0×8Ñ8Ü˜e QÓ,óˆCð �‰FØ�‰FŠAñ ð ˆ
rE   )r�   r   r®  r	   rê   r�   rŸ   r¥   )r·  rÒ   rè   r›  rg   s      @@rC   Únumpy_indicesr¹  Y  su   ù€ ä�j¤%§.¡.×1Ñ1ØEˆÜ× Ò  Ó%Ð%ä�j×&Ñ&¬¯©×6Ñ6ØEˆÜ× Ò  Ó%Ð%äˆJ‹€AØ�1‰H€Eö
ð €KrE   c                 óÚ   • [        U 5      (       d  Sn[        R                  " U5      e[        U[        [
        R                  45      (       d  Sn[        R                  " U5      eSS jnU$ )Nr¬  z#The argument "k" must be an integerc                 óf  • [         R                  " U 5      n U R                  5       n [        U 5      n[	        U5      nX#-   n[         R
                  " XD4U R                  5      n[         R                  " SU* 5      n[         R                  " SU5      n[        U5       H  nX   XVU-   Xx-   4'   M     U$ ræ   )	r¤  r¥  r£  r¥   r#  r¤  r�   Úmaximumr8   )	rÙ   rØ   r¬   Úabs_krE  rû   ro   ÚjÚts	            rC   rè   Únumpy_diagflat.<locals>.impl  s”   € Ü�JŠJ�q‹MˆØ�G‰G‹IˆÜ�‹FˆÜ�A“ˆØ‰IˆÜ�hŠh˜�v˜qŸw™wÓ'ˆÜ�JŠJ�q˜1˜"ÓˆÜ�JŠJ�q˜!ÓˆÜ�q–ˆAØ !¡ˆC�A‘�q‘u�Óñ ð ˆ
rE   rÍ  )r   r	   rê   r�   rÂ   r   rŸ   )rÙ   rØ   rÒ   rè   s       rC   Únumpy_diagflatrÁ  u  s[   € ä˜A×ÑØ3ˆÜ× Ò  Ó%Ð%ä�aœ#œuŸ}™}Ð-×.Ñ.Ø3ˆÜ× Ò  Ó%Ð%ôð €KrE   c                 ó~  • US;   d   eUS:X  a6  Sn[        SU 5       H#  nSU-  nUSU SSR                  U5       S	3-  nM%     O5S
n[        SU 5       H#  nSU-  nUSU SSR                  U5       S3-  nM%     [        R                  " U5      n[	        U[        5       5        [        5       SU 3   n[        U5      $ )N)rÿ  rÍ  rÿ  zv
            def _getitem(a, idx, axis):
                if axis == 0:
                    return a[idx, ...]
        rG   )Ú: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
            r1  )r8   ré  ÚtextwrapÚdedentÚexecÚglobalsr'   )rr   rÏ  r�  ro   Úlsts        rC   Ú"generate_getitem_setitem_with_axisrÉ  �  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ÓÐrE   Útakec                 ó  ^^^^^	• [         R                  " U5      (       aó  [        U [        R                  5      (       a&  [        U[        R
                  5      (       a  SS jnU$ [        U [        R                  5      (       a8  [        U[        R                  5      (       a  UR                  S:H  mSU4S jjnU$ [        U [        R                  5      (       a7  [        U[        R                  [        R                  45      (       a  SS jnU$ g g [        U [        R                  5      (       aJ  [        U[        R
                  5      (       a+  SU R                  S-
  -  m	[        U	4S j5       mSU4S jjnU$ [        U [        R                  5      (       an  [        U[        R                  [        R                  [        R                  45      (       a/  U R                  n[        US	5      m[        US
5      mSUU4S jjnU$ g g )Nc                 ó‚   • XR                   S-
  :”  d  XR                   * :  a  [        S5      eU R                  5       U   $ )NrG   úIndex out of bounds)r™   Ú
IndexErrorr£  )r7  r¨   râ   s      rC   Ú	take_implÚnumpy_take.<locals>.take_impl¹  s8   € ØŸf™f q™jÓ)¨W¿¹°wÓ->Ü$Ð%:Ó;Ð;Ø—w‘w“y Ñ)Ð)rE   r  c                 ó’  >• [         R                  " UR                  U R                  S9nT	(       a  UR	                  5       nOUn[         R
                  " U5      nSnU R                  5       nU H;  nX€R                  S-
  :”  d  X€R                  * :  a  [        S5      eXx   X6'   US-   nM=     UR                  UR                  5      $ )Nr?  r   rG   rÍ  )
r¤  rA  r™   r�   r„  r8  r£  rÎ  rš  rg   )
r7  r¨   râ   r‘  ÚwalkerÚitro   r  r|  ÚF_orders
            €rC   rÏ  rÐ  Â  s¡   ø€ Ü—h’h˜wŸ|™|°1·7±7Ñ;�ÞØ$Ÿ\™\›^‘Fà$�FÜ—Y’Y˜vÓ&�Ø�Ø—w‘w“y�Û�AØŸF™F Q™JÓ'¨1·±¨w«;Ü(Ð)>Ó?Ð?Ø!™W�C‘FØ˜A™’Añ	 ð
 —{‘{ 7§=¡=Ó1Ð1rE   c                 óZ   • [         R                  " U5      n[         R                  " X5      $ rB  )r¤  rÌ   rÊ  )r7  r¨   râ   Úconverts       rC   rÏ  rÐ  Õ  s   € ÜŸ(š( 7Ó+�Ü—w’w˜qÓ*Ð*rE   rÍ  rG   c                 óR  >• [        T5      nSnU[        U R                  5      :  a  U R                  U   S:X  d   U R                  5       e[        [        U R                  5      5       H*  nU R                  U   nXA:w  d  M  [	        X#U5      nUS-  nM,     U R                  U5      $ rñ  )rÀ   r¥   rg   r8   r/   rš  )r·  râ   rL  r¾  r˜   r¬   r¿  s         €rC   Ú_squeezeÚ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Ø•{Ü+¨C°AÓ6˜Ø˜Q™šñ	 /ð
 —y‘y “~Ð%rE   c                 ó’   >• [         R                  " X4US9nU R                  S:X  a  US   $ US:  a  X R                  -  nT" X25      $ )Nrµ  rG   r   )r¤  rÊ  rr   )r7  r¨   râ   r·  rØ  s       €rC   rÏ  rÐ  ì  sF   ø€ Ü—G’G˜A˜z°Ñ5�Ø—6‘6˜Q“;Ø˜Q™4�KØ˜!“8ØŸF™F‘N�DÙ Ó(Ð(rE   rÿ  rÍ  c                 óp  >• US:  a  X R                   -  nUS:  d  X R                   :¼  a  SU SU R                    3n[        U5      e[        U R                  U[	        U5      5      n[
        R                  " X@R                  S9n[        [	        U5      5       H  nT" XU   U5      nT	" XVX'5        M     U$ )Nr   zaxis z) is out of bounds for array of dimension r?  )	rr   r½   r/   rg   r¥   r¤  rA  r�   r8   )
r7  r¨   râ   rÒ   rg   rü   ro   r}  Ú_getitemÚ_setitems
           €€rC   rÏ  rÐ  ý  s¦   ø€ Ø˜!“8ØŸF™F‘N�Dà˜!“8˜t§v¡v›~Ø" 4 &ð )+Ø+,¯6©6¨(ð4�Cä$ S›/Ð)ä% a§g¡g¨t´S¸³\ÓB�Ü—h’h˜u¯G©GÑ4�Üœs 7›|Ö,�AÙ  ¨A¡J°Ó5�AÙ˜S TÖ-ñ -ð �
rE   rB  )r
   r   r�   r   rž   rŸ   r+  rJ  rO  rr   r'   rÉ  )
r7  r¨   râ   rÏ  rr   rÔ  rÜ  rÝ  rØ  r¿  s
        @@@@@rC   Ú
numpy_takerÞ  ³  sˆ  ü€ ô ×Ò˜4× Ñ Ü�aœŸ™×%Ñ%¬*°W¼e¿m¹m×*LÑ*Lô*ð Ðä�aœŸ™×%Ñ%¬*°W¼e¿k¹k×*JÑ*JØ—n‘n¨Ñ+ˆG÷2ð Ðä�aœŸ™×%Ñ%Ü˜7¤U§Z¡Z´·±Ð$A×BÑBô+ð Ðð	 Cð &ô �aœŸ™×%Ñ%¬*°W¼e¿m¹m×*LÑ*LØ˜Ÿ™ ™
Ñ#ˆAô
 ô	&ó ð	&÷)ð Ðä�aœŸ™×%Ñ%Ü˜7¤U§[¡[´%·*±*¼e¿o¹oÐ$N×OÑOà—6‘6ˆDä9¸$À	ÓJˆHÜ9¸$À	ÓJˆH÷ð ð Ðð- Pð &rE   c                  óü  • U  Vs/ s H&  n[        U[        R                  5      (       a  M$  UPM(     nn[        S U 5       5      (       a  [        R                  nU$ [        S U 5       5      (       a  [        R
                  nU$ [        [        SS[        R                  " [        5      R                  -  -  5      nU Vs/ s H  n[        R                  " U5      PM     nn[        Xd/-   5      nU$ s  snf s  snf )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frB  rU  ©rD  r7  s     rC   rF  Ú _arange_dtype.<locals>.<genexpr>  s   é € Ð
8²¨AŒ:�aœŸ™×'Ð'²ùrH  c              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frB  )r�   r   ÚFloatrá  s     rC   rF  râ    s   é € Ð8²¨AŒZ˜œ5Ÿ;™;×'Ð'²ùrH  zint%sr  )r�   r   r  rI  Ú
complex128r¹   rl  r¤  r�   rÂ   r²   Ú	unliteralrÇ  )rï   r7  Úboundsr�   ÚNPY_TYr|  Úunliteral_boundss          rC   Ú_arange_dtyperê    sÐ   € ÙÓCš�A¤Z°´5·>±>×%B�a™€FÐCä
Ñ
8±Ó
8×8Ñ8Ü× Ñ ˆð& €Lô% 
Ñ8±Ó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   …#C4¬C4Ã C9c          	      ó*  ^^^^	^
• [        U[        R                  5      (       a  UR                  n[        U[        R                  5      (       a  UR                  n[        U[        R                  5      (       a  UR                  nUc  [        R                  nUc  [        R                  nUc  [        R                  n[        U [        R
                  5      (       a�  [        U[        R                  [        R
                  45      (       a^  [        U[        R                  [        R
                  45      (       a/  [        U[        R                  [        R                  45      (       d  g [        U[        R                  5      (       a  [        XU5      m	OUR                  m	[        XU4 Vs/ s H  n[        U[        R                  5      PM     sn5      m
[        U SS 5      m[        USS 5      m[        USS 5      mSUUUU	U
4S jjnU$ s  snf )Nrë   c                óà  >• Tb  TOU nTb  TOUnTb  TOUnUb  UOSnUc  SUp˜OXEp˜US:X  a  [        S5      eX˜-
  U-  n
[        [        R                  " U
R                  5      5      nTSL a?  [        [        R                  " U
R
                  5      5      n[        [        XË5      S5      nO[        US5      n[        R                  " UT5      nUn[        U5       H  nUUU-  -   UU'   M     U$ )NrG   r   zMaximum allowed size exceededT)r½   rÂ   ÚmathÚceilr\  r^  rÇ  rÑ  r¤  rA  r8   )r&  rø  rê  r�   Ú	lit_startÚlit_stopÚlit_stepÚ_stepÚ_startÚ_stopÚnitems_cÚnitems_rÚnitems_ir·   r9  r�   ro   Ústart_valueÚ
step_valueÚ
stop_valueÚ
true_dtypeÚuse_complexs                    €€€€€rC   rè   Únp_arange.<locals>.implL  só   ø€ à#.Ñ#:‘KÀˆ	Ø!+Ñ!7‘:¸TˆØ!+Ñ!7‘:¸Tˆà$Ñ0‘°aˆØÑØ˜y‘Eà%�Eà�A‹:ÜÐ<Ó=Ð=à‘N eÑ+ˆÜ”t—y’y §¡Ó/Ó0ˆð ˜$ÒÜœ4Ÿ9š9 X§]¡]Ó3Ó4ˆHÜœ˜XÓ0°!Ó4‰Fä˜ 1Ó%ˆFÜ�hŠh�v˜zÓ*ˆØˆÜ�v–ˆAØ˜A ™IÑ&ˆC�‹Fñ àˆ
rE   r  )r�   r   ÚOptionalr9   r‡  rÒ  r  r©  rê  r�   rI  rV  rl  )r&  rø  rê  r�   r|  rè   rø  rù  rú  rû  rü  s         @@@@@rC   Ú	np_arangerÿ  )  s{  ü€ ä�$œŸ™×'Ñ'Ø�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ÑDàä�%œŸ™×(Ñ(Ü" 5°Ó5‰
à—[‘[ˆ
äØ!&¨dÑ 3ó5Ú 3˜1ô " !¤U§]¡]Ö3Ù 3ñ5ó 6€Kô ˜% °$Ó7€KÜ˜˜°Ó5€JÜ˜˜°Ó5€J÷ó ð< €KùòK5s   Æ0$Hc                 ó‚  ^• [        S X4 5       5      (       d  g [        U[        [        R                  45      (       d  Sn[
        R                  " U5      e[        S X4 5       5      (       a7  [        R                  (       a  [        R                  mO![        R                  mO[        R                  mSU4S jjnU$ )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frB  )r�   r   rÒ  rW  s     rC   rF  Ú!numpy_linspace.<locals>.<genexpr>o  s   é € ÐFº°Œz˜#œuŸ|™|×,Ð,ºùrH  rS  c              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frB  rU  rW  s     rC   rF  r  v  rY  rH  c                 óú   >• [         R                  " UT5      nU S-  n US-  nUS:X  a  U$ US-
  nUS:”  a7  X-
  n[         R                  " XT5      n[        SU5       H  nXU-  -   X7'   M     OXS'   US:”  a  XS'   U$ )Ng      ð?r   rG   rH  )r¤  rA  Údivider8   )	r&  rø  rM  r9  ÚdivÚdeltarê  ro   r�   s	           €rC   rK  Ú numpy_linspace.<locals>.linspace  s’   ø€ Ü�hŠh�s˜EÓ"ˆð ˜‘ˆØ�c‰zˆØ�!‹8ØˆJØ�A‰gˆØ�‹7Ø‘LˆEÜ—9’9˜UÓ(ˆDÜ˜1˜c–]�Ø d¡(Ñ+�“ò #ð �‰FØ�‹7Ø�‰GØˆ
rE   rO  )r°  r�   rÂ   r   rŸ   r	   rê   rI  r   ÚUSE_LEGACY_TYPE_SYSTEMrå  Únp_complex128r¹   )r&  rø  rM  rÒ   rK  r�   s        @rC   Únumpy_linspacer  m  sŒ   ø€ äÑF¸¹ÓF×FÑFØä�cœC¤§¡Ð/×0Ñ0Ø5ˆÜ× Ò  Ó%Ð%ä
Ñ
C°e±]Ó
C×CÑCÜ×(×(Ü×$Ñ$‰Eä×'Ñ'‰Eä—‘ˆ÷ð, €OrE   c           
      óÒ  • UR                   S   n[        U5      " XUS   S9n[        R                  " XR                  5      nUR
                  n[        XXv5      nUR                  n	UR                  n
UR                  S;   d   eUR                  UR                  :X  a,  [        R                  " XX•R                  UR                  SS9  Oè[        R                  " XR                  5      n[        R                  " XR                  5      nU R                  [        R                  5      n[        R                   " XU5       n[        R"                  " XU	XkUR                  U5      n[        R"                  " XU
XlUR                  U5      nUR%                  UR'                  U5      U5        SSS5        [)        XUR
                  UR+                  5       5      $ ! , (       d  f       N3= f)z
Array copy.
r   r  r7  rG   r‡   N)rï   r~   r
   rÅ   rg   rñ   r)  r    r+  Ú
raw_memcpyr·   r²   r±   r¾   r   r”   rg  r*  r  r>   r"   r÷   )rƒ   r=   r\   rï   rC  r  r  Úrettyper‘  rY  r  r[  r
  rÓ   r¨   rQ  rj  s                    rC   Ú_array_copyr  ˜  sx  € ð �h‰h�q‰k€GÜ
�WÔ
˜g°d¸1±gÑ
>€CÜ×!Ò! '¯9©9Ó5€Fà�o‰o€GÜ
˜¨7Ó
;€Cà�x‰x€HØ—‘€Ià�>‰>˜TÓ!Ð!Ð!Ø‡~�~˜Ÿ™Ó'ä×Ò˜7¨x¿¹ØŸ<™<¨qó	2ô ×*Ò*¨7·K±KÓ@ˆÜ×+Ò+¨G·[±[ÓAˆØ×'Ñ'¬¯
©
Ó3ˆä×Ò˜w°Ô7¸7Ü×/Ò/°À(Ø06Ø07·±ÀóIˆGô ×0Ò0°À9Ø17Ø18·±ÀóJˆHð �M‰M˜'Ÿ,™, wÓ/°Ô:÷ 8ô ˜G¨c¯o©o¸s¿}¹}»ÓOÐO÷ 8Õ7ús   ÅA*GÇ
G&c                 ó¬   • [        U[        R                  5      (       d   eUR                  S:X  a  SOSnUR	                  USS9nU" U5      nU[
        4$ )Nr  r«   F)r+  rŠ  )r�   r   rž   r+  r„  r  )r�  r7  r+  r‘  r\   s        rC   Ú_array_copy_intrinsicr  ½  sP   € ä�aœŸ™×%Ñ%Ð%Ð%Ø—H‘H “O‰S¨€FØ
�&‰&˜¨ˆ&Ð
/€CÙ
ˆa‹&€CØ”ÐÐrE   z
array.copyc                 ó   • [        XX#5      $ rB  )r  r   s       rC   Ú
array_copyr  Æ  s   € ä�w¨Ó3Ð3rE   c                 óJ   • [        U [        R                  5      (       a  S nW$ )Nc                 ó   • [        U 5      $ rB  )r  rÅ  s    rC   Ú
numpy_copyÚ#impl_numpy_copy.<locals>.numpy_copyÎ  s   € Ü(¨Ó+Ð+rE   rC  )r7  r  s     rC   Úimpl_numpy_copyr  Ë  s   € ä�!”U—[‘[×!Ñ!ò	,àÐrE   c           	      óX  • UR                   nUR                  S   nUR                  U:X  d   S5       eUR                  S:X  aþ  UR                  S:X  d   e[	        U5      " XUS   S9n[	        U5      " X5      nU R                  U[        R                  " [        R                  S5      S5      n	U R                  U[        R                  " [        R                  S5      UR                  45      n
[        X‡R                  XšUR                  UR                  UR                  5        [        XXXR!                  5       5      $ UR                  UR                  :X  d   UR                  S:X  a  UR                  S;   a  [        XXSS   5      $ UR                  S:X  aÓ  US;   d   eUS:X  a  ["        O[$        n['        UU UUUS   5      nUR)                  U5       u  pÞU   [        XUUS   5      nUR*                  nS	S	S	5        U   [-        XX#5      nUR*                  nS	S	S	5        S	S	S	5        UR/                  WR0                  5      nUR3                  UW5        UR3                  WW5        U$ [-        XX#5      $ ! , (       d  f       N†= f! , (       d  f       Nt= f! , (       d  f       N}= f)
zX
Common logic for layout conversion function;
e.g. ascontiguousarray and asfortranarray
r   z return-type has incorrect layoutrG   r  rÀ  r7  r‚  r«   N)rñ   rï   r+  rr   r~   r:  r   r®  r”   rö  r²   rÚ   r    r°   r³   r!   r÷   r   r   r¤  rO  Úblockr  Úphir9   Úadd_incoming)rƒ   r=   r\   rï   Úoutput_layoutrŽ  rÜ   r  r‘  rg   r±   Ú
check_funcrƒ  ÚthenÚorelseÚout_thenÚthen_blkÚ
out_orelseÚ
orelse_blkÚret_phis                       rC   Ú_as_layout_arrayr&  Ó  s:  € ð
 �O‰O€EØ�H‰H�Q‰K€EØ�<‰<˜=Ó(ÐLÐ*LÓLÐ(à‡z�z�Qƒà�z‰z˜Q‹ÐˆÜ˜Ô ¸¸Q¹Ñ@ˆÜ˜Ô Ó1ˆà×,Ñ,Ø”U—^’^¤E§J¡J°Ó2°Dó
ˆð ×$Ñ$ WÜ%*§^¢^´E·J±JÀÓ%BØ&)§l¡l _ó6ˆô 	�sŸH™H e°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ð
 —‘ Ô+©~°âÜ0°À5Ø15°a±ó :�Hà&Ÿ}™}�H÷ ò
 Ü!,¨W¸sÓ!I�JØ!(§¡�J÷ ÷ ,ð —k‘k (§-¡-Ó0ˆGØ× Ñ  ¨8Ô4Ø× Ñ  ¨ZÔ8ØˆNô ˜w°Ó;Ð;÷! •Tú÷
 •Vú÷ ,Õ+ús<   ÇJÇI9Ç9
JÈJ
ÈJÉ9
J	ÊJÊ

J	ÊJÊ
J)c                 óì   ^• [        T[        R                  5      (       d  [        R                  " T5      eUR                  TR                  [        UR                  S5      S9nU" UT5      nUU4S j4$ )NrG   )r+  rr   c                 ó.   >• [        XX#TR                  S9$ )N)r  )r&  rë   )rÓ  rÜ  r¬   r7  r  s       €rC   r¾  Ú,_as_layout_array_intrinsic.<locals>.<lambda>  s   ø€ Ô#3Ø	ˆa -×"=Ñ"=ò$?rE   )	r�   r   r&   r	   ÚRequireLiteralValuer„  rë   rÇ  rr   )r�  r7  r  r‘  r\   s     `  rC   Ú_as_layout_array_intrinsicr+    sg   ø€ ä�m¤U×%8Ñ%8×9Ñ9Ü×(Ò(¨Ó7Ð7à
�&‰&˜×3Ñ3¼#¸a¿f¹fÀa».ˆ&Ð
I€CÙ
ˆa�Ó
€Càô ?ð ?ð ?rE   c                 óþ   • [        U 5      (       d  [        R                  " S5      e[        U [        R
                  [        R                  45      (       a  S nU$ [        U [        R                  5      (       a  S nW$ )Nr¡  c                 óV   • [         R                  " [         R                  " U 5      5      $ rB  )r¤  ÚascontiguousarrayrÌ   rÅ  s    rC   rè   Ú%array_ascontiguousarray.<locals>.impl&  s   € Ü×'Ò'¬¯ª°«Ó4Ð4rE   c                 ó   • [        U S5      $ ©Nr«   ©r+  rÅ  s    rC   rè   r/  )  ó   € Ü-¨a°Ó5Ð5rE   ©r   r	   rê   r�   r   rÒ  r  rž   r.  s     rC   Úarray_ascontiguousarrayr5     sb   € ä˜A×ÑÜ× Ò Ð!FÓGÐGä�!”e—l‘l¤E§M¡MÐ3×4Ñ4ò	5ð
 €Kô 
�A”u—{‘{×	#Ñ	#ò	6à€KrE   c                 ó   • [        U 5      (       d  [        R                  " S5      e[        U [        R
                  [        R                  45      (       a  S nU$ [        U [        R                  5      (       a  S nU$ g )Nr¡  c                 óV   • [         R                  " [         R                  " U 5      5      $ rB  )r¤  ÚasfortranarrayrÌ   rÅ  s    rC   rè   Ú"array_asfortranarray.<locals>.impl4  s   € Ü×$Ò$¤R§X¢X¨a£[Ó1Ð1rE   c                 ó   • [        U S5      $ )Nr  r2  rÅ  s    rC   rè   r9  8  r3  rE   r4  r.  s     rC   Úarray_asfortranarrayr;  .  sc   € ä˜A×ÑÜ× Ò Ð!FÓGÐGä�!”e—l‘l¤E§M¡MÐ3×4Ñ4ò	2àˆÜ	�A”u—{‘{×	#Ñ	#ò	6àˆð 
$rE   zarray.astypec           
      ód  • UR                   S   n[        U5      " XUS   S9n[        R                  " XR                  5      nUR
                  n[        XXv5      nUR                  n	UR                  n
[        R                  " XR                  5      n[        R                  " XR                  5      nU R                  [        R                  5      n[        R                  " XU5       n[        R                  " XU	XkUR                  U5      n[        R                  " XU
XlUR                  U5      n[        XXO5      nU R!                  UUUR"                  UR"                  5      n[%        XUUU5        S S S 5        ['        XUR
                  UR)                  5       5      $ ! , (       d  f       N3= frñ  )rï   r~   r
   rÅ   rg   rñ   r)  r    r±   r¾   r   r”   rg  r*  r+  rŒ   r“   r�   r�   r"   r÷   )rƒ   r=   r\   rï   rC  r  r  r  r‘  rY  r  r[  r
  rÓ   r¨   rQ  rj  Úitems                     rC   Úarray_astyper>  =  sT  € ð �h‰h�q‰k€GÜ
�WÔ
˜g°d¸1±gÑ
>€CÜ×!Ò! '¯9©9Ó5€Fà�o‰o€GÜ
˜¨7Ó
;€Cà�x‰x€HØ—‘€Iä×&Ò& w·±Ó<€KÜ×'Ò'¨·±Ó=€LØ×#Ñ#¤E§J¡JÓ/€Fä	×	Ò	˜7¨FÔ	3°wÜ×+Ò+¨G¸hØ,2Ø,3¯N©N¸GóEˆô ×,Ò,¨W¸yØ-3Ø-4¯^©^¸WóFˆô ˜¨7Ó<ˆØ�|‰|˜G T¨7¯=©=¸'¿-¹-ÓHˆÜ�7 W¨d°HÔ=÷ 
4ô ˜G¨c¯o©o¸s¿}¹}»ÓOÐO÷ 
4Õ	3ús   Ã)BF!Æ!
F/c                 ó8   • UR                   nU" XU5      nS nXV4$ )Nc           
      óª  • UR                   S   nUR                  n[        U5      " XUS   S9n[        U5      nU" X5      nUR                  n	[	        X5      n
[        UR                  R                  U
5      nUR                  UR                  UR                  5      nUR                  XË5      n[        R                  " X5      nUR                  USS9   SnU R                  R                  U[         U45        S S S 5        [        R"                  " XR%                  XË5      /5      n[        R"                  " X/5      nUR'                  UR(                  U R+                  U	R-                  S5      5      5      n[/        UUUUUUR0                  UR2                  S9  UR5                  5       n[7        XUR                  U5      $ ! , (       d  f       NÏ= f)Nr   r  Fr\  z.buffer size must be a multiple of element sizer    r8  )rï   rñ   r~   r¸   r…   r   r²   r9   rÇ   r·   Úsremr
   Úis_not_nullr  r^  r_  r½   rl   Úsdivra  r    r¾   r¿   rÚ   r°   r³   r÷   r!   )rƒ   r=   r\   rï   ÚbuftyrÜ   r  Ú
out_ary_tyÚout_aryÚout_datamodelr²   Úll_itemsizer~  ÚremÚis_incompatiblerÒ   rg   r±   r    rû   s                       rC   rŽ  Únp_frombuffer.<locals>.codegena  s‡  € Ø—‘˜‘ˆØ—‘ˆä˜Ô ¸¸Q¹Ñ@ˆÜ Ó&ˆ
Ù˜WÓ.ˆØ×*Ñ*ˆä Ó/ˆÜ˜sŸ|™|×0Ñ0°(Ó;ˆØ—‘˜SŸZ™Z¨¯©Ó6ˆð �l‰l˜6Ó/ˆÜ!×-Ò-¨gÓ;ˆØ�_‰_˜_°Uˆ_Ò;ØBˆCØ×Ñ×-Ñ-¨g´zÀCÀ6ÔJ÷ <ô ×"Ò" 7¯\©\¸&Ó-NÐ,OÓPˆÜ×$Ò$ W¨mÓ<ˆØ�‰Ø�H‰H�g×,Ñ,¨]×-CÑ-CÀFÓ-KÓLó
ˆô 	�wØ Ø"Ø&Ø +Ø"Ÿ{™{Ø!Ÿj™jò	+ð ×ÑÓ!ˆÜ  °3·?±?ÀCÓHÐH÷' <Õ;ús   Ã%GÇ
GrL  )r�  Úbufferr�   rŽ  rE  r\   rŽ  s          rC   Únp_frombufferrM  \  s*   € à	×	Ñ	€BÙ
ˆV˜EÓ
"€Cò#IðH ˆ<ÐrE   c                 ó.  ^• [        SU5        [        U [        R                  5      (       a  U R                  S:w  a  SU  3n[
        R                  " U5      eU[        L dB  [        U[        R                  5      (       a  UR                  [        L d  [        U5      (       a  [        R                  nO[        U5      nUb'  [        R                  " USSU R                  (       + S9mOSU  SU S3n[
        R                  " U5      e[        4U4S	 jjnU$ )
NÚ
frombufferr«   z+Argument "buffer" must be buffer-like. Got rG   )r�   rr   r+  rŠ  z3Cannot parse input types to function np.frombuffer(rç  rè  c                 ó   >• [        XT5      $ rB  )rM  )rL  r�   rŽ  s     €rC   rè   Ú impl_np_frombuffer.<locals>.implŸ  s   ø€ Ü˜V¨EÓ2Ð2rE   )rG  r�   r   r  r+  r	   rê   rV  rW  rX  r   rY  rZ  rž   r�  )rL  r�   rÒ   r\  rè   rŽ  s        @rC   Úimpl_np_frombufferrR  ˆ  sä   ø€ ä˜<¨Ô/ä�fœeŸl™l×+Ñ+¨v¯}©}ÀÓ/CØ;¸F¸8ÐDˆÜ× Ò  Ó%Ð%à”ŠÜ	�Eœ5Ÿ>™>×	*Ñ	*¨u×/?Ñ/?Ä5Ò/HÜ˜×ÑÜ—<‘<‰ä! %Ó(ˆàÑÜ—’ (°¸3Ø)/¯©Ô%7ñ9‰ð Ø &˜x r¨%¨°ð3ˆä× Ò  Ó%Ð%ä ÷ 3à€KrE   c                 ó¼   ^• [        U5      (       a  [        SS 5      mSU4S jjnU$ [        U[        R                  5      (       a  [        SU5      mSU4S jjnU$ g )Nr«   c                 ó   >• T" X5      $ rB  rt   ©rm   rg   r�   Úintrinsic_cfarrays      €rC   rè   Úimpl_carray.<locals>.impl©  ó   ø€ Ù$ SÓ0Ð0rE   c                 ó   >• T" X5      $ rB  rt   rU  s      €rC   rè   rW  ¯  rX  rE   rB  ©r   Úget_cfarray_intrinsicr�   r   r©  ©rm   rg   r�   rè   rV  s       @rC   Úimpl_carrayr]  ¤  óR   ø€ ä�5×ÑÜ1°#°tÓ<Ð÷	1àˆÜ	�Eœ5Ÿ?™?×	+Ñ	+Ü1°#°uÓ=Ð÷	1àˆð 
,rE   c                 ó¼   ^• [        U5      (       a  [        SS 5      mSU4S jjnU$ [        U[        R                  5      (       a  [        SU5      mSU4S jjnU$ g )Nr  c                 ó   >• T" X5      $ rB  rt   rU  s      €rC   rè   Úimpl_farray.<locals>.impl¹  rX  rE   c                 ó   >• T" X5      $ rB  rt   rU  s      €rC   rè   ra  ¿  rX  rE   rB  rZ  r\  s       @rC   Úimpl_farrayrc  ´  r^  rE   c                 ó*   ^ ^• [         UU 4S j5       nU$ )Nc                 óŠ  >• U[         R                  L a  S nOH[        U[         R                  5      (       a  UR                  nOSU S3n[
        R                  " U5      eT	c  Uc  Sn[
        R                  " U5      eUnOo[        T	[         R                  5      (       a4  T	R                  nUb$  XS:w  a  SU SU S3n[
        R                  " U5      eOST	 S3n[
        R                  " U5      e[        U5      nUc  SU S3n[
        R                  " U5      e[         R                  " XVT
5      n[        XqU5      nU[        4$ )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)r�  rm   rg   Ú	ptr_dtyperÒ   r�   rr   rŽ  r\   Údtype_r+  s            €€rC   rV  Ú0get_cfarray_intrinsic.<locals>.intrinsic_cfarrayÅ  s2  ø€ à”%—-‘-ÒØ‰IÜ˜œUŸ^™^×,Ñ,ØŸ	™	‰Ià4°S°E¸Ð;ˆCÜ×'Ò'¨Ó,Ð,à‰>ØÑ ØB�Ü×+Ò+¨CÓ0Ð0Ø‰EÜ˜¤§¡×0Ñ0Ø—L‘LˆEØÑ$¨Ó);Ø+¨E¨7Ð2FÀsÀeÈ1ÐM�Ü×+Ò+¨CÓ0Ð0øà(¨¨°Ð2ˆCÜ×'Ò'¨Ó,Ð,ä˜eÓ$ˆØ‰<Ø# E 7¨!Ð,ˆCÜ×'Ò'¨Ó,Ð,ä—’˜E¨Ó0ˆÜ˜ EÓ*ˆØ”JˆÐrE   ©r*   )r+  rj  rV  s   `` rC   r[  r[  Ä  s   ù€ Üõó ðð> ÐrE   c           
      óº  • UR                   SS u  pEUSS u  pgUR                  nUR                  S;   d   e[        U5      " X5      n	[	        X5      n
[
        R                  " U
5      n[        U[        R                  5      (       a  [
        R                  " X5      nOU4nU4n[        X\5       VVs/ s H&  u  pÞU R                  XU[        R                  5      PM(     nnnUn/ nUR                  S:X  a-  U H&  nUR                  U5        UR                  UU5      nM(     OE[!        U5       H&  nUR                  U5        UR                  UU5      nM(     UR#                  5         UR%                  UU R'                  UR(                  5      R+                  5       5      n[-        U	UUUUSS9  U	R/                  5       n[1        XUR                  U5      $ s  snnf )zF
numba.numpy_support.carray(...) and
numba.numpy_support.farray(...).
Nrb  r7  r  r'  )rï   rñ   r+  r~   r…   r
   rÓ   r�   r   rO  rÅ   r¦   r“   r”   rk   rÇ   r%  rß  ra  r€   r�   r)  rÚ   r÷   r"   )rƒ   r=   r\   rï   rX  r  rm   rg   rÜ   rF  r²   rH  r  r›  r  Úoffr±   r¬   r    rû   s                       rC   rh  rh  è  s±  € ð
 —X‘X˜b˜q�\�N€EØ�b�q��J€Cà�O‰O€EØ�<‰<˜4ÓÐÐä˜Ô Ó1€Gä˜GÓ+€HÜ—.’. Ó*€Kä�'œ5Ÿ?™?×+Ñ+Ü×%Ò% gÓ5‰à�*ˆØ�ˆä#& wÔ#7ô9Ú#7‘-�&ð �l‰l˜7¨6´5·:±:Ö>Ù#7ð ñ 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¨c¯o©o¸sÓCÐCùó99s   Â3-Gc                 óB  • [        U[        R                  5      (       a)  U R                  [        R                  [        U5      5      $ [        U[        R                  5      (       a7  U R                  [
        [        [        R                  U5      5      nU" X45      $  erB  )	r�   r   rO  rÄ   r”   r¥   r  rR   r%   )rƒ   r=   ÚseqtyÚseqr  s        rC   Ú_get_seq_sizerr    sn   € Ü�%œŸ™×)Ñ)Ø×#Ñ#¤E§J¡J´°E³
Ó;Ð;Ü	�Eœ5Ÿ>™>×	*Ñ	*Ø×'Ñ'¬¬Y´u·z±zÀ5Ó-JÓKˆÙ˜ Ó(Ð(àˆqrE   c                 ó¦   ^ ^^• UR                   mT R                  [        R                  [	        TU[
        R                  5      5      mU UU4S jnU$ )zC
Return a getitem() implementation that doesn't incref its result.
c                 ót   >• T" X5      nTR                   (       a  TR                  R                  U TU5        U$ rB  )rô   rõ   Údecref)r=   rï   r‘  rƒ   r   rŽ  s      €€€rC   ÚwrapÚ$_get_borrowing_getitem.<locals>.wrap.  s1   ø€ Ù˜7Ó)ˆØ××Ø�K‰K×Ñ˜w¨¨sÔ3Øˆ
rE   )r�   rR   rþ  rÿ  r%   r   r”   )rƒ   rp  rv  r   rŽ  s   `  @@rC   Ú_get_borrowing_getitemrx  &  sC   ú€ ð �K‰K€EØ×'Ñ'¬×(8Ñ(8Ü(1°%¸ÄÇ
Á
Ó(KóM€L÷ð €KrE   c           	      ó  ^ ^^• T R                  [        R                  5      n[        US5      mUU U4S jn/ nX4p˜[	        U5       H/  n
U
S:”  a
  U" X‰5      u  p‰UR                  [        T TX‰5      5        M1     [        U5      $ )z>
Compute the likely shape of a nested sequence (possibly 0d).
r   c                 óÖ   >• [        U [        R                  5      (       a'  [        U 5      S:X  a  gU S   TR	                  US5      4$ [        TU 5      nU R                  U" TUT45      4$ )Nr   ©NN)r�   r   rO  r¥   rV  rx  r�   )rp  rq  r   r=   rƒ   rù   s      €€€rC   Úget_first_itemÚ.compute_sequence_shape.<locals>.get_first_item>  sd   ø€ Ü�eœUŸ_™_×-Ñ-Ü�5‹z˜Q‹Ø!à˜Q‘x ×!6Ñ!6°s¸AÓ!>Ð>Ð>ä1°'¸5ÓAˆLØ—;‘;¡¨W°s¸D°kÓ BÐBÐBrE   )r¾   r   r”   r   r8   rk   rr  rÀ   )rƒ   r=   rr   rp  rq  rÓ   r|  r  ÚinnertyÚinnerro   rù   s   ``         @rC   Úcompute_sequence_shaper€  7  sy   ú€ ð ×#Ñ#¤E§J¡JÓ/€FÜ�F˜AÓ€D÷Cð €FØˆUä�4Ž[ˆØˆq‹5Ù+¨GÓ;‰NˆGØ�‰”m G¨W°gÓEÖFñ ô
 �‹=ÐrE   c                 ó>   ^ ^^^• UU 4S jmUUUU 4S jmT" X#U5        g)z7
Check the nested sequence matches the given *shapes*.
c                  óH   >• TR                   R                  T [        S5        g )N)zincompatible sequence shape)r^  r_  r½   )r=   rƒ   s   €€rC   Ú_failÚ#check_sequence_shape.<locals>._failZ  s   ø€ Ø×Ñ×)Ñ)¨'´:Ø*Jõ	LrE   c                 óÆ  >• [        U5      S:X  a  g [        TTX5      nUS   nTR                  SX45      nTR                  USS9   T" 5         S S S 5        [        U5      S:X  a  g [	        U [
        R                  5      (       aY  [        TU 5      n[        R                  " TU5       nU R                  nU" TXR                  45      n	T" X‰USS  5        S S S 5        g [	        U [
        R                  5      (       a=  [        [        U 5      5       H$  n
X
   nTR                  X5      n	T" X‰USS  5        M&     g  U 5       e! , (       d  f       Nù= f! , (       d  f       g = f)Nr   r[  Fr\  rG   )r¥   rr  r  r  r�   r   r  rx  r
   rÐ  r�   ró   rO  r8   rV  )rp  rq  r  r™   Úexpectedrz  r   rÒ  r~  r  ro   rƒ  r=   Úcheck_seq_sizerƒ   s              €€€€rC   r‡  Ú,check_sequence_shape.<locals>.check_seq_size^  s3  ø€ Üˆv‹;˜!ÓØä˜W g¨uÓ:ˆØ˜!‘9ˆØ×&Ñ& t¨TÓ<ˆØ�_‰_˜X¨eˆ_Ò4ÙŒG÷ 5ô ˆv‹;˜!ÓØä�eœUŸ^™^×,Ñ,Ü1°'¸5ÓAˆLÜ×"Ò" 7¨DÔ1°TØŸ+™+�Ù$ W¨s·J±JÐ.?Ó@�Ù˜w¨v°a°b¨zÔ:÷ 2Ð1ô
 ˜œuŸ™×/Ñ/Üœ3˜u›:Ö&�Ø™(�Ø×-Ñ-¨cÓ5�Ù˜w¨v°a°b¨zÖ:ò 'ð �e‹O�1÷) 5Õ4ú÷ 2Õ1ús   ÁEÂ(-EÅ
EÅ
E Nrt   )rƒ   r=   rp  rq  r  rƒ  r‡  s   ``   @@rC   Úcheck_sequence_shaper‰  U  s   û€ ö
L÷ð ñ: �5˜vÕ&rE   c                 óP   ^ ^^^^^^^	• UUU UUU4S jm	UU	UU 4S jmT" XgTS5        g)z`
Assign a nested sequence contents to an array.  The shape must match
the sequence's structure.
c                 ó¦   >• [         R                  " TTTTT	TR                  U SS9nTR                  TX!TR                  5      n[        TTTX#5        g rf  )r
   r*  r+  r“   r�   r�   )
r¨   rR  r�   rm   r8  r=   rƒ   r    r  r±   s
       €€€€€€rC   Úassign_itemÚ-assign_sequence_to_array.<locals>.assign_item…  sM   ø€ Ü×'Ò'¨°¸$ÀÈØ(-¯©°gÈ%ñQˆà�l‰l˜7 C°·±Ó<ˆÜ�7˜G U¨CÕ5rE   c                 óÞ  >• [        U5      S:X  a;  [        U [        R                  [        R                  45      (       a   eT" X0U5        g US   n[        U [        R                  5      (       ag  [        TU 5      n[        R                  " TU5       nU R                  nU" TXR                  45      nT" XxUSS  X6R                  4-   5        S S S 5        g [        U [        R                  5      (       aa  [        [        U 5      5       HH  n	X	   nTR                  X5      nTR                  [        R                  U	5      n
T" XxUSS  X:4-   5        MJ     g  U 5       e! , (       d  f       g = frñ  )r¥   r�   r   r  rO  rx  r
   rÐ  r�   ró   r8   rV  rÄ   r”   )rp  rq  r  r¨   r™   r   rÒ  r~  r  ro   ró   ÚassignrŒ  r=   rƒ   s              €€€€rC   r�  Ú(assign_sequence_to_array.<locals>.assign‹  s1  ø€ Üˆv‹;˜!ÓÜ! %¬%¯.©.¼%¿/¹/Ð)J×KÑKÐKÐKÙ˜¨Ô,Øà�a‰yˆä�eœUŸ^™^×,Ñ,Ü1°'¸5ÓAˆLÜ×"Ò" 7¨DÔ1°TØŸ+™+�Ù$ W¨s·J±JÐ.?Ó@�Ù�w v¨a¨b z°7¿j¹j¸]Ñ3JÔK÷ 2Ð1ô
 ˜œuŸ™×/Ñ/Üœ3˜u›:Ö&�Ø™(�Ø×-Ñ-¨cÓ5�Ø×,Ñ,¬U¯Z©Z¸Ó;�Ù�w v¨a¨b z°7¸XÑ3EÖFò	 'ð �e‹O�1÷ 2Õ1ús   Â;EÅ
E,rt   Nrt   )
rƒ   r=   r    r  r±   r8  rp  rq  r�  rŒ  s
   ``````  @@rC   Úassign_sequence_to_arrayr‘  ~  s%   ÿ€ ÷6ò 6÷ð ñ2 ˆ5�v˜rÕ"rE   c                 óŽ   • [        X5      u  p4[        U5      (       a  UnO[        U5      nUc  g [        R                  " X#S5      $ r1  )r4   r   rZ  r   rž   )r�  r°  r�   rr   Ú	seq_dtypes        rC   Únp_array_typerr”  §  sA   € Ü,¨YÓ?�O€DÜ�5×ÑØ‰ä˜uÓ%ˆØ‰=ØÜ�;Š;�u CÓ(Ð(rE   c                 óN   • [        SU5        [        XU5      nU" X5      nS nXE4$ )NrÌ   c           
      óZ  • UR                   nUR                  nUR                  S   nUS   n[        XXVU5      n[	        U5      U:X  d   e[        XXgU5        [        XXH5      n	[        XU	R                  UU	R                  XFU5        [        XUR                   U	R                  5       5      $ ræ   )rñ   rr   rï   r€  r¥   r‰  r)  r‘  r    r±   r"   r÷   )
rƒ   r=   r\   rï   r8  rr   rp  rq  r  r9  s
             rC   rŽ  Únp_array.<locals>.codegen¸  s    € Ø—‘ˆØ�z‰zˆØ—‘˜‘ˆØ�1‰gˆä'¨¸$ÀsÓKˆÜ�6‹{˜dÓ"Ð"Ð"ä˜W¨u¸6ÔBÜ˜W¨uÓ=ˆÜ  °3·8±8¸VØ!$§¡¨e¸Cô	Aô   °#·/±/Ø #§¡£ó1ð 	1rE   )rG  r”  )r�  Úobjr�   r‘  r\   rŽ  s         rC   Únp_arrayr™  ²  s0   € ä˜7 EÔ*Ü
˜¨Ó
/€CÙ
ˆc‹/€Cò1ð" ˆ<ÐrE   c                 óÜ   • [        SU5        [        U 5      (       d  [        R                  " S5      e[	        U5      (       d$  [        U5      c  Sn[        R                  " U5      eSS jnU$ )NrÌ   z(The argument "object" must be array-likez:The argument "dtype" must be a data-type if it is providedc                 ó   • [        X5      $ rB  )r™  )r°  r�   s     rC   rè   Úimpl_np_array.<locals>.implÖ  s   € Ü˜Ó&Ð&rE   rB  )rG  r   r	   rê   r   rZ  )r°  r�   rÒ   rè   s       rC   Úimpl_np_arrayr�  Ì  sd   € ä˜7 EÔ*Ü˜F×#Ñ#Ü× Ò ð "1ó 2ð 	2ä�u×Ñ¤.°Ó"7Ñ"?ØJˆÜ× Ò  Ó%Ð%ô'à€KrE   c                 ó¸  • UR                  S5      nUR                  U5      nUR                  SXE5      nUR                  XqR                  XF5      U5      nUR	                  UR                  SXE5      UR                  SXF5      5      nUR                  USS9   SU-  n	U R                  R                  U[        U	45        S S S 5        U$ ! , (       d  f       U$ = f)Nr   r  r–  Fr\  z%s(): axis out of bounds)	r9   r  r÷  r®  r  r  r^  r_  rÎ  )
rƒ   r=   rà   rr   râ   rù   Úll_ndimÚis_neg_axisÚaxis_out_of_boundsrÒ   s
             rC   Ú_normalize_axisr¢  Û  sÍ   € Ø�9‰9�Q‹<€DØ�i‰i˜‹o€Gð ×%Ñ% c¨4Ó6€KØ�>‰>˜+§{¡{°4Ó'AÀ4ÓH€Dð !Ÿ™Ø×Ñ˜C Ó,Ø×Ñ˜D $Ó0ó2Ðð 
�‰Ð+°EˆÒ	:Ø(¨9Ñ4ˆØ×Ñ×)Ñ)¨'´:À¸vÔF÷ 
;ð €K÷	 
;Ô	:ð €Kús   Â(C
Ã

Cc           
      ó|  • [        U5      US-
  :X  d   e[        R                  " [        R                  U5      n[        R
                  " X5      n[        R                  " S5      n[        US-
  5       Hy  n[        R                  " U5      n	UR                  SX”5      n
X(   nUR                  U
UR                  X—5      U	5      nUR                  U[        R                  " XSU5      5        M{     UR                  U[        R                  " XSU5      5        [        R                  " XR                  U5      5      $ )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).
rG   r–  r   ©r¥   r   r(  r
   rÓ   rX   r8   r  r÷  r®  r  rj   rÅ   r>   )rƒ   r=   Ú
orig_shaperr   râ   Úll_shtyr  r+  r�  Úll_dimÚ
after_axisr4  r˜   s                rC   Ú_insert_axis_in_shaper©  î  sþ   € ô ˆz‹?˜d Q™hÓ&Ð&Ð&ä�lŠlœ7Ÿ>™>¨4Ó0€GÜ× Ò  Ó2€Fä
�.Š.˜Ó
€Cô �T˜A‘XŽˆÜ—’ Ó$ˆØ×(Ñ(¨¨vÓ<ˆ
Ø‰_ˆØ�n‰n˜ZØ$Ÿ[™[¨Ó5Ø#ó%ˆð 	�‰�bœ'×.Ò.¨wÀÀ3ÓGÖHñ ð ‡M�M�#”w×+Ò+¨G¸QÀÓEÔFä×Ò ¯©°fÓ)=Ó>Ð>rE   c           
      ó¤  • [        U5      US-
  :X  d   e[        R                  " [        R                  U5      n[        R
                  " X5      n[        R                  " S5      n[        R                  " S5      n[        US-
  5       Hw  n	[        R                  " U	5      n
UR                  SX¤5      nUR                  UUR                  X§5      U
5      nUR                  X)   [        R                  " XSU5      5        My     UR                  U[        R                  " XSU5      5        [        R                  " XR                  U5      5      $ )z<
Same as _insert_axis_in_shape(), but with a strides array.
rG   r   r–  r¤  )rƒ   r=   Úorig_stridesrr   râ   r¦  r±   r+  rù   r�  r§  r¨  r˜   s                rC   Ú_insert_axis_in_stridesr¬    s  € ô ˆ|Ó  q¡Ó(Ð(Ð(ä�lŠlœ7Ÿ>™>¨4Ó0€GÜ×!Ò! 'Ó3€Gä
�.Š.˜Ó
€CÜ�>Š>˜!Ó€Dô �T˜A‘XŽˆÜ—’ Ó$ˆØ×(Ñ(¨¨vÓ<ˆ
Ø�n‰n˜ZØ$Ÿ[™[¨Ó5Ø#ó%ˆð 	�‰�lÑ'Ü×*Ò*¨7¸QÀÓDö	Fñ ð ‡M�M�$œ×,Ò,¨W¸qÀ$ÓGÔHä×Ò ¯©°gÓ)>Ó?Ð?rE   c           
      óÚ  • UR                   nUR                  nUR                  S   n[        U5      " XUS   S9n[        U5      " X5      n	[        R
                  " XR                  5      n
[        R
                  " XR                  5      n[        XX¦U5      n[        XX¶U5      n[        U	UR                  UUUR                  UR                  UR                  S9  U	R                  5       $ )z'
np.expand_dims() with the given axis.
r   r  r8  )rñ   rr   rï   r~   r
   rÅ   rg   r±   r©  r¬  rÚ   r    r²   r°   r³   r÷   )rƒ   r=   r\   rï   râ   rŽ  rr   r8  r9  r‘  r  r±   Ú
new_shapesÚnew_stridess                 rC   Úexpand_dimsr°  (  sÅ   € ð �O‰O€EØ�:‰:€DØ�H‰H�Q‰K€Eä
�UÔ
˜G°D¸±GÑ
<€CÜ
�UÔ
˜GÓ
-€Cä×!Ò! '¯9©9Ó5€FÜ×"Ò" 7¯K©KÓ8€Gä& w¸ÀtÓL€JÜ)¨'¸GÈ4ÓP€Kä�3ØŸ™Ø#Ø&ØŸL™LØŸ;™;ØŸ*™*ò&ð �=‰=‹?ÐrE   c                 ó”   • UR                   S::  a  UR                  OSnUR                  UR                   S-   US9nU" X5      nS nXV4$ )NrG   r‚  rƒ  c                 óð   • U R                  XS   UR                  S   [        R                  5      n[	        XSUR
                  R                  U5      n[        XX#U5      n[        XUR
                  U5      $ )NrG   znp.expand_dims)	r“   rï   r   r”   r¢  rñ   rr   r°  r!   )rƒ   r=   r\   rï   râ   r‘  s         rC   rŽ  Únp_expand_dims.<locals>.codegenJ  se   € Ø�|‰|˜G¨!¡W¨c¯h©h°q©k¼5¿:¹:ÓFˆÜ˜wÐ1AØ"Ÿ™×3Ñ3°Tó;ˆô ˜'¨C°tÓ<ˆÜ  °3·?±?ÀCÓHÐHrE   )rr   r+  r„  )r�  r7  râ   r+  r‘  r\   rŽ  s          rC   Únp_expand_dimsr´  D  sJ   € àŸ™ 1›ˆQ�XŠX¨#€FØ
�&‰&�a—f‘f˜q‘j¨ˆ&Ð
0€CÙ
ˆa‹,€CòIð ˆ<ÐrE   c                 óô   • [        U [        R                  5      (       d  SU  3n[        R                  " U5      e[        U[        R
                  5      (       d  SU 3n[        R                  " U5      eS nU$ )Nz)First argument "a" must be an array. Got z(Argument "axis" must be an integer. Got c                 ó   • [        X5      $ rB  )r´  )r7  râ   s     rC   rè   Ú!impl_np_expand_dims.<locals>.impl_  s   € Ü˜aÓ&Ð&rE   )r�   r   rž   r	   rê   rŸ   )r7  râ   rÒ   rè   s       rC   Úimpl_np_expand_dimsr¸  U  sh   € ä�aœŸ™×%Ñ%Ø9¸!¸Ð=ˆÜ× Ò  Ó%Ð%ä�dœEŸM™M×*Ñ*Ø8¸¸Ð?ˆÜ× Ò  Ó%Ð%ò'à€KrE   c                 ó4   ^ ^^• [         UU 4S j5       mU4S j$ )Nc           	      ó4  >^^• UmU Vs/ s H%  o"R                  [        UR                  T5      S9PM'     snmUUUU4S jn[        [	        T5      S:”  a  [
        R                  " T5      OTS   [
        R                  R                  U5      5      U4$ s  snf )Nr»  c                 óD  >• [        TT5      n[        R                  " XS   5      n[        UTT5       VVVs/ s H  u  pgnU" XXgU5      PM     n	nnn[	        U	5      S:”  a  U R                  XR                  U	5      n
OU	S   n
[        XUR                  U
5      $ s  snnnf rñ  )Ú_atleast_nd_transformr
   rÅ   r¦   r¥   rö  rñ   r!   )rƒ   r=   r\   rï   Ú	transformÚarrsr9  r8  rŽ  Úretsr‘  r‰  rA  Úminimumr¥  s              €€€€rC   rŽ  Ú*_atleast_nd.<locals>.impl.<locals>.codegenj  s£   ø€ Ü-¨g°tÓ<ˆIÜ×'Ò'¨°a±Ó9ˆDô .1°°v¸vÔ-FõHÚ-FÑ)˜ Eñ ˜g°¸EÖBÙ-Fð ò Hô �4‹y˜1‹}Ø×(Ñ(¨·/±/À4ÓH‘à˜1‘g�Ü$ W°s·±ÈÓLÐLùôHs   ¸BrG   r   )	r„  rÇ  rr   r%   r¥   r   r¯  ÚStarArgTupleÚ
from_types)Útypingcontextrï   rÃ  rŽ  r‰  r¥  rA  rÀ  s       @@€€rC   rè   Ú_atleast_nd.<locals>.imple  sŠ   ú€ àˆÙCGÓHÂ4¸C—(‘(¤ C§H¡H¨gÓ 6�(Ó7Á4ÑHˆ÷	Mð 	Mô ´°F³¸a³œŸš VÔ,ÀVÈAÁYÜ×+Ñ+×6Ñ6°tÓ<ó>Ø?FðGð 	Gùò Is   Š,Bc                  ó   >• T" U 6 $ rB  rt   )rï   rè   s    €rC   r¾  Ú_atleast_nd.<locals>.<lambda>z  s	   ø€ ™˜t™rE   rl  )rÀ  rA  rè   s   ``@rC   Ú_atleast_ndrÈ  d  s   ú€ ÜõGó ðGô( %Ð$rE   c                 ó:   ^ ^• T [        T5      :X  d   eUU 4S jnU$ )zT
Return a callback successively inserting 1-sized dimensions at the
following axes.
c           	      ó  >• [        T
5       Ht  nUS-   nUR                  U:  d  M  [        R                  " T	U   5      nUR	                  UR                  S-   S9n[        X[        R                  " Xƒ5      U4U5      nUnMv     U$ )NrG   r»  )r8   rr   r
   rÓ   r„  r°  r   r%   )rƒ   r=   r9  r8  rŽ  ro   rr   râ   ÚnewarrtyrA  Úmin_ndims            €€rC   r½  Ú(_atleast_nd_transform.<locals>.transform„  s   ø€ Ü�x–ˆAØ�q‘5ˆDØ�z‰z˜DÕ Ü—~’~ d¨1¡gÓ.�Ø Ÿ:™:¨5¯:©:¸©>˜:Ð:�Ü! 'Ü"(×"2Ò"2°8Ó"CÀcÀVØ"&ó(�ð !’ñ !ð ˆ
rE   )r¥   )rÌ  rA  r½  s   `` rC   r¼  r¼  }  s$   ù€ ð
 ”s˜4“yÓ Ð Ð öð ÐrE   c                  óL   • [        S U  5       5      (       a  [        SS/5      $ g )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frB  rC  rW  s     rC   rF  Ú np_atleast_1d.<locals>.<genexpr>–  ó   é € Ð
8²4¨CŒ:�cœ5Ÿ;™;×'Ð'²4ùrH  rG   r   ©r°  rÈ  r½  s    rC   Únp_atleast_1drÓ  ”  s'   € ä
Ñ
8±4Ó
8×8Ñ8Ü˜1˜q˜cÓ"Ð"ð 9rE   c                  óN   • [        S U  5       5      (       a  [        SSS/5      $ g )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frB  rC  rW  s     rC   rF  Ú np_atleast_2d.<locals>.<genexpr>œ  rÑ  rH  rb  r   rÒ  r½  s    rC   Únp_atleast_2dr×  š  s)   € ä
Ñ
8±4Ó
8×8Ñ8Ü˜1˜q !˜fÓ%Ð%ð 9rE   c                  óN   • [        S U  5       5      (       a  [        S/ SQ5      $ g )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frB  rC  rW  s     rC   rF  Ú np_atleast_3d.<locals>.<genexpr>¢  rÑ  rH  ro  )r   r   rb  rÒ  r½  s    rC   Únp_atleast_3drÛ     s%   € ä
Ñ
8±4Ó
8×8Ñ8Ü˜1šiÓ(Ð(ð 9rE   c	                 óp  • [        U5      [        U5      s=:X  a   [        U5      s=:X  a  [        U5      :X  d   e   e[        R                  " S5      n	[        XXx5      n
[        R                  " XR
                  5      n/ nU HŽ  nU	n[        [        XÛ5      5       H`  u  nu  nnUR                  SUR                  U5      U5      nUR                  UU5      nUR                  UUR                  UU5      U5      nMb     UR                  U5        M�     U
R                  n[        X4UXl5       Hò  u  nnnnnUR                  n[        R                  " X[        R                  UR                   S9nU n[        R"                  " XUUUUR                   U5      n[%        XUU5      nU R'                  UUUR(                  UR(                  5      n[        R"                  " XUX‹UR                   U5      n[+        XUUU5        SSS5        [        R,                  " UUU5      nMô     U
$ ! , (       d  f       N,= f)z*
Concatenate arrays along the given axis.
r   r  )ÚorderN)r¥   r
   rÓ   r)  rÅ   r±   rÂ  r¦   r  r9   rÇ   r÷  r®  rk   r    rg  r+  r*  rŒ   r“   r�   r�   r   )rƒ   r=   râ   r‰  r¾  Ú
arr_shapesÚarr_stridesrŽ  Ú
ret_shapesrù   r‘  Úret_stridesÚcopy_offsetsÚarr_shr  r�  r™   r  Úis_axisÚaddendÚret_datar8  r9  Úarr_stÚarr_datarg  r¨   rQ  r�   rj  s                                 rC   Ú_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ñ $Gð 	×Ñ˜FÖ#ñ ð �x‰x€Hä.1°&À
Ø2=ö/MÑ*ˆˆs�F˜F Fà—8‘8ˆô ×%Ò% g´w·~±~Ø,1¯L©Lñ:ˆ	ñ ˜'Ü×/Ò/°À(Ø06¸Ø05·±¸góGˆGô ˜G¨e°WÓ=ˆCØ—,‘,˜w¨¨U¯[©[¸%¿+¹+ÓFˆCÜ×0Ò0°À8Ø1;Ø16·±¸wóHˆHô �w¨°°XÔ>÷ ô ×&Ò& w°¸&ÓAŠñ+/Mð. €J÷ �Yús   Å4BH'È'
H5	c                 óª  • UR                   n[        X#5       VVs/ s H  u  px[        U5      " XUS9PM     nnn[        XSXe5      nU V	s/ s H#  n	[        R
                  " XR                  5      PM%     n
n	U V	s/ s H#  n	[        R
                  " XR                  5      PM%     nn	U
S    Vs/ s H  n[        R                  " X5      PM     nn[        U5       GHE  nUR                  SUR                  U5      U5      nXÞ   nUR                  U5      nU
SS   Vs/ s H  oÌU   PM	     nnUR                  U5       u  nnU   [        R                  " UR                   UU/-   5      nUR#                  UU5        S S S 5        U   [        R$                  nU H&  nUR'                  UUR                  SUU5      5      nM(     UR)                  UR+                  U5      SS9   U R,                  R/                  U[0        SU-  45        S S S 5        S S S 5        S S S 5        GMH     U Vs/ s H  oÁR                  U5      PM     nn[3        XUX#X«XM5	      n[5        XUUR7                  5       5      $ s  snnf s  sn	f s  sn	f s  snf s  snf ! , (       d  f       GN= f! , (       d  f       N™= f! , (       d  f       N¢= f! , (       d  f       GMò  = fs  snf )	Nr  únp.concatenater   r  rG   Fr\  z<np.concatenate(): input sizes over dimension %d do not match)rr   r¦   r~   r¢  r
   rÅ   rg   r±   rò   r8   r  r9   r>   rO  rm  rn  r®  r  ro  rE  r  rÝ  r^  r_  r½   ré  r"   r÷   )rƒ   r=   r‰  r¾  rŽ  râ   rr   r  r7  r9  rÞ  rß  r4  rà  r�  rä  Úret_shape_ptrÚret_shÚother_shapesÚon_axisÚon_other_dimÚis_okr‘  s                          rC   Ú_np_concatenaterò  ã  s”  € Ø�:‰:€Dô ˜fÔ+ô-Ú+‘�ô �sŒO˜G°AÔ6Ù+ð 	ñ -ô ˜7Ð-=¸tÓJ€Dñ GKÓKÂd¸s”'×&Ò& w·	±	Ö:Ád€JÐKÙIMÓNÊÀ#”7×'Ò'¨·±Ö=É€KÐNð ' qšMó+Ú)�bô ×+Ò+¨GÖ8Ù)ð ð +ô �T�{ˆØ×%Ñ% d¨D¯I©I°c«N¸DÓAˆØ"™ˆØ—‘˜mÓ,ˆØ*4°Q°R©.Ó9ª. B˜3œ©.ˆÐ9à�_‰_˜WÔ%Ñ)@¨'°<ÚÜ×%Ò%Ø—K‘KØ  F 8Ñ+ó-�ð —‘˜b -Ô0÷	 ò Ü×(Ñ(�Û&�BØ#ŸL™L¨Ø)0×)<Ñ)<¸TÀ2ÀvÓ)NóP’Eñ 'ð —_‘_ W§\¡\°%Ó%8À�_ÒGØ×%Ñ%×5Ñ5Ø¤ð5Ø7:ñ;ð =ô>÷ H÷ ÷ &Ò%ñ ñ0 .8Ó8ªZ r—,‘,˜rÖ"©Z€JÐ8ä
˜'¨DØ ¨
Øó-€Cô ˜G¨e°S·]±]³_ÓEÐEùóY-ùò LùÚNùò
+ùò :÷ –ú÷ HÕGú÷ •ú÷ &×%üò$ 9sx   ›I/Á*I5Á;*I:Â. I?ÄJÄ>J=Å8J	Å<
J=ÆAJ,Ç"&J	ÈJ,ÈJ=È)KÊ	
JÊJ=Ê
J)Ê%J,Ê,
J:Ê6J=Ê=
K	c                 ó
  • UR                   n[        R                  " S5      n[        R                  " S5      n[        R                  " [        U5      5      n	[	        X#5       V
Vs/ s H  u  p«[        U
5      " XUS9PM     nn
n[        XSXe5      n[        R                  " XS   R                  5      nUSS   H²  n[        R                  n[	        [        R                  " XR                  5      U5       Hq  u  nnUR                  XáR                  SUU5      5      nUR                  UR                  U5      SS9   U R                  R                  U[         S5        S S S 5        Ms     M´     U Vs/ s H#  n[        R                  " XR"                  5      PM%     nn[$        R&                  " [        R                  U5      n[        R(                  " UU5      n[        R(                  " UU5      n[+        US-
  5       H¦  n[        R                  " U5      nUR                  S	UU5      nUU   nUR-                  UUR/                  UU5      U5      nUR1                  U[        R2                  " UUSU5      5        UR1                  U[        R2                  " UUSU5      5        M¨     UR1                  U[        R2                  " UUSU5      5        UR1                  U	[        R2                  " UUSU5      5        [        R                  " XR5                  U5      5      nU/[        U5      -  n[        R                  " XR5                  U5      5      n[+        [        U5      5       Vs/ s H  n[        R(                  " UU5      PM     nn[+        US-
  5       Hœ  n[        R                  " U5      nUR                  S	UU5      nUR-                  UUR/                  UU5      U5      n[+        [        U5      5       H5  nUR1                  UU   U   [        R2                  " UUU   SU5      5        M7     Mž     [+        [        U5      5       H/  nUR1                  U[        R2                  " UUU   SU5      5        M1     U Vs/ s H(  n[        R                  " XR5                  U5      5      PM*     nn[7        XUX#UUUU5	      n[9        XUUR;                  5       5      $ s  snn
f ! , (       d  f       GM  = fs  snf s  snf s  snf )
Nr   rG   r  únp.stackr  Fr\  )z5np.stack(): all input arrays must have the same shaper–  )rr   r
   rÓ   r¥   r¦   r~   r¢  rÅ   rg   ro  rE  r  r  rÝ  r^  r_  r½   r±   r   r(  rX   r8   r÷  r®  r  rj   r>   ré  r"   r÷   )rƒ   r=   r‰  r¾  rŽ  râ   rr   rù   r+  Ú
ll_narraysr  r7  r¥  r9  rñ  r4  Úorig_shr«  r¦  Úinput_shapesrà  r�  r§  r¨  r˜   ro   Úinput_stridesr5  r‘  s                                rC   Ú	_np_stackrù    s_  € Ø�:‰:€Dä�>Š>˜!Ó€DÜ
�.Š.˜Ó
€CÜ—’¤ D£	Ó*€Jô ˜fÔ+ô-Ú+‘�ô �sŒO˜G°AÔ6Ù+ð 	ñ -ô ˜7¨Z¸ÓD€Dô ×%Ò% g°A©w¯}©}Ó=€Jà�A�B‹xˆÜ× Ñ ˆÜœw×3Ò3°G¿Y¹YÓGØ)ö+‰KˆB�à—L‘L ×(;Ñ(;¸DÀ"ÀgÓ(NÓOˆEØ—‘ §¡¨eÓ!4¸U�ÒCØ×!Ñ!×1Ñ1ØœZØNôP÷ DÑCó+ñ ñ KOÓOÊ$À3”G×(Ò(¨·+±+Ö>É$€LÐOô
 �lŠlœ7Ÿ>™>¨4Ó0€Gä×&Ò& w°Ó8€LÜ×$Ò$ W¨gÓ6€Jô �T˜A‘XŽˆÜ—’ Ó$ˆØ×(Ñ(¨¨v°tÓ<ˆ
Ø˜‰_ˆØ�n‰n˜ZØ$Ÿ[™[¨°Ó5Ø#ó%ˆð 	�‰�bœ'×.Ò.¨w¸ÀaÈÓMÔNØ�‰�bœ'×.Ò.¨w¸
ÀAÀsÓKÖLñ ð ‡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¯|©|¸JÓ/GÓH€Jô $¤C¨£IÔ.ó0Ú.˜ô ×(Ò(¨°'Ö:Ù.ð ð 0ô �T˜A‘XŽˆÜ—’ Ó$ˆØ×(Ñ(¨¨v°tÓ<ˆ
Ø�n‰n˜ZØ$Ÿ[™[¨°Ó5Ø#ó%ˆô ”s˜4“yÖ!ˆAØ�M‰M˜, q™/¨#Ñ.Ü!×.Ò.¨w¸ÀaÑ8HÈ!Ø/2ó4ö5ó "ñ ô ”3�t“9ÖˆØ�‰�dœG×0Ò0°¸-ÈÑ:JÈAØ15ó7ö 	8ñ ñ
  -ó.Ú,˜ô ×)Ò)¨'·<±<ÀÓ3CÖDÙ,ð ð .ô ˜'¨DØ ¨°mØ ó-€Cô ˜G¨e°S·]±]³_ÓEÐEùó_-÷ D×Cüò
 PùòB0ùò*.s$   Á&S%Ä>"S+Å4*S>Í,!TÒ/TÓ+
S;c                 óæ   • Ub   [        U[        R                  5      (       d  g [        U SU5      u  p4US:X  a  Sn[        R
                  " U5      e[        U5      n[        R                  " X4U5      $ )Nrë  r   z.zero-dimensional arrays cannot be concatenated)r�   r   rŸ   r5   r	   r²  r6   rž   )r�  r…  râ   r�   rr   rÒ   r+  s          rC   Únp_concatenate_typerrû  n  sk   € ØÑ¤
¨4´·±× ?Ñ ?ð 	ô & iØ&6¸ó@�K€EàˆqƒyØ>ˆÜ×#Ò# CÓ(Ð(ä)¨&Ó1€Fä�;Š;�u FÓ+Ð+rE   c                 óx   • [        XU5      n[        U[        R                  5      (       d   eU" X5      nS nXE4$ )Nc           
      óð   • U R                  XS   UR                  S   [        R                  5      n[	        X[        UR                  S   5      [        R                  " XS   5      UR                  U5      $ rÊ  )	r“   rï   r   r”   rò  rÁ   r
   rÅ   rñ   ©rƒ   r=   r\   rï   râ   s        rC   rŽ  Únp_concatenate.<locals>.codegen†  s_   € Ø�|‰|˜G¨!¡W¨c¯h©h°q©k¼5¿:¹:ÓFˆÜ˜wÜ# C§H¡H¨Q¡KÓ0Ü&×3Ò3°GÀ!¹WÓEØ"Ÿ™Ø#ó	%ð 	%rE   )rû  r�   r   rž   )r�  r…  râ   r‘  r\   rŽ  s         rC   Únp_concatenater   €  s>   € ä
˜y°$Ó
7€CÜ�cœ5Ÿ;™;×'Ñ'Ð'Ð'Ù
ˆfÓ
€Cò%ð ˆ<ÐrE   c                 óP   • [        U [        R                  5      (       a  SS jnU$ g )Nc                 ó   • [        X5      $ rB  )r   ©r…  râ   s     rC   rè   Ú!impl_np_concatenate.<locals>.impl”  s   € Ü! &Ó/Ð/rE   rÍ  ©r�   r   rO  ©r…  râ   rè   s      rC   Úimpl_np_concatenater  ‘  s"   € ä�&œ%Ÿ/™/×*Ñ*ô	0àˆð +rE   c                 ó†   • U H;  nUR                   S:  d  UR                   S:”  d  M%  Sn[        R                  " U5      e   g)NrG   rb  z7np.column_stack() is only defined on 1-d and 2-d arrays)rr   r	   r²  )rƒ   rà   r…  r7  rÒ   s        rC   Ú_column_stack_dimsr	  ™  s<   € ãˆØ�6‰6�A‹:˜Ÿ™ !�ØKˆCÜ×'Ò'¨Ó,Ð,ñ ð rE   c                 ó†   • [        U SU[        S9u  p#[        U5      n[        R                  " X#U5      nU" U5      nS nXg4$ )Nznp.column_stack)Údim_chooserc                 ó:  • [        UR                  S   5      n[        R                  " XS   5      n/ n/ nU R	                  [
        R                  S5      n[        XE5       H   u  pšU	R                  S:X  a$  UR                  U	5        UR                  U
5        M9  U	R                  S:X  d   eU	R                  SS9n[        R                  " X¹5      n[        XXÊ4U5      nUR                  U5        UR                  U5        M¢     [        XXgUR                  U5      $ )Nr   rG   rb  r»  )rÁ   rï   r
   rÅ   rÄ   r   r”   r¦   rr   rk   r„  r   r%   r°  rò  rñ   )rƒ   r=   r\   rï   Úorig_arrtysÚ	orig_arrsr‰  r¾  râ   r8  r9  r  Ú
expand_sigÚnewarrs                 rC   rŽ  Ú np_column_stack.<locals>.codegen«  sò   € Ü˜3Ÿ8™8 A™;Ó'ˆÜ×(Ò(¨°q±'Ó:ˆ	àˆØˆà×#Ñ#¤E§J¡J°Ó2ˆä˜kÖ5‰JˆEØ�z‰z˜Q‹Ø—‘˜eÔ$Ø—‘˜CÖ ð —z‘z Q“Ð&�ØŸ
™
¨˜
Ð*�Ü#×-Ò-¨eÓ;�
Ü$ W°zÀ6È4ÓP�à—‘˜eÔ$Ø—‘˜FÖ#ñ 6ô ˜w°Ø"Ÿ™°ó6ð 	6rE   )r5   r	  r6   r   rž   )r�  rL  r�   rr   r+  r‘  r\   rŽ  s           rC   Únp_column_stackr  ¢  sM   € ä% iØ&7¸Ü2DñF�K€Eô *¨#Ó.€FÜ
�+Š+�e 6Ó
*€CÙ
ˆc‹(€Cò6ð4 ˆ<ÐrE   c                 óL   • [        U [        R                  5      (       a  S nU$ g )Nc                 ó   • [        U 5      $ rB  )r  ©rL  s    rC   rè   Úimpl_column_stack.<locals>.implË  s   € Ü" 3Ó'Ð'rE   r  ©rL  rè   s     rC   Úimpl_column_stackr  È  s"   € ä�#”u—‘×'Ñ'ò	(àˆð (rE   c           
      óŽ   • [        X[        UR                  S   5      [        R                  " XS   5      UR
                  U5      $ )z'
np.stack() with the given axis value.
r   )rù  rÁ   rï   r
   rÅ   rñ   rþ  s        rC   Ú_np_stack_commonr  Ð  s?   € ô �WÜ˜#Ÿ(™( 1™+Ó&Ü×)Ò)¨'¸±7Ó;Ø—_‘_Øó	ð rE   c                 ó¦   • [        U SU5      u  p4[        S U 5       5      (       a  SOSn[        R                  " X4S-   U5      nU" X5      nS nXx4$ )Nrô  c              3   ó>   #   • U  H  oR                   S :H  v •  M     g7f)r  N)r+  rá  s     rC   rF  Ú"np_stack_common.<locals>.<genexpr>à  s   é € Ð8²¨AŸ™ Cž²ùs   ‚r  r«   rG   c                 ó~   • U R                  XS   UR                  S   [        R                  5      n[	        XX#U5      $ r¨  )r“   rï   r   r”   r  rþ  s        rC   rŽ  Ú np_stack_common.<locals>.codegenä  s3   € Ø�|‰|˜G¨!¡W¨c¯h©h°q©k¼5¿:¹:ÓFˆÜ °#¸TÓBÐBrE   )r5   r°  r   rž   )	r�  r…  râ   r�   rr   r+  r‘  r\   rŽ  s	            rC   Únp_stack_commonr   Û  s\   € ô & iØ&0°&ó:�K€EäÑ8±Ó8×8Ñ8‰S¸c€FÜ
�+Š+�e A™X vÓ
.€CÙ
ˆfÓ
€CòCð ˆ<ÐrE   c                 óP   • [        U [        R                  5      (       a  SS jnU$ g )Nc                 ó   • [        X5      $ rB  )r   r  s     rC   rè   Úimpl_np_stack.<locals>.implî  s   € Ü" 6Ó0Ð0rE   rÍ  r  r  s      rC   Úimpl_np_stackr$  ë  s"   € ä�&œ%Ÿ/™/×*Ñ*ô	1àˆð +rE   c                 ó|   • [        XU5      u  pE[        XS5      n[        U5      n[        R                  " XEU5      nU$ rB  )r5   rÇ  r6   r   rž   )r�  rà   r…  Úndim_minr�   rr   r+  r‘  s           rC   ÚNdStack_typerr'  ó  s9   € ä% i¸FÓC�K€EÜˆtÓ€DÜ)¨&Ó1€FÜ
�+Š+�e 6Ó
*€CØ€JrE   c                 ó:   • [        U SUS5      nU" U5      nS nX44$ )Nz	np.hstackrG   c                 óê   ^• UR                   S   nUS   R                  nUS:X  a-  U R                  [        R                  S5      m[        XX#T5      $ US:X  a  SOSmU4S jnU R                  XX#5      $ )Nr   rG   c                 ó.   >• [         R                  " U TS9$ r´  r¶  r  s    €rC   Únp_hstack_implÚ3_np_hstack.<locals>.codegen.<locals>.np_hstack_impl  s   ø€ Ü—~’~ f°4Ñ8Ð8rE   ©rï   rr   rÄ   r   r”   r  r*  )rƒ   r=   r\   rï   rK  rr   r+  râ   s          @rC   rŽ  Ú_np_hstack.<locals>.codegen  sr   ø€ Ø—‘˜‘ˆØ�Q‰x�}‰}ˆà�1‹9à×'Ñ'¬¯
©
°AÓ6ˆDÜ# G°cÀÓFÐFð
  ›	‘1 qˆDõ9ð ×+Ñ+¨GÀSÓOÐOrE   ©r'  ©r�  rL  r‘  r\   rŽ  s        rC   Ú
_np_hstackr1  ü  s+   € ä
˜	 ;°°QÓ
7€CÙ
ˆc‹(€CòPð& ˆ<ÐrE   c                 óL   • [        U [        R                  5      (       a  S nU$ g )Nc                 ó   • [        U 5      $ rB  )r1  r  s    rC   rè   Úimpl_np_hstack.<locals>.impl  ó   € Ü˜c“?Ð"rE   r  r  s     rC   Úimpl_np_hstackr6    ó"   € ä�#”u—‘×'Ñ'ò	#àˆð (rE   c                 ó:   • [        U SUS5      nU" U5      nS nX44$ )Nz	np.vstackrb  c                 óâ   • UR                   S   nUS   R                  nUS:X  a  S nO6US:X  a-  U R                  [        R                  S5      n[        XX#U5      $ S nU R                  XX#5      $ )Nr   c                 óX   • [         R                  " [         R                  " U 5      S5      $ r¨  )r¤  r°  Úhstack©r…  s    rC   Únp_vstack_implÚ3_np_vstack.<locals>.codegen.<locals>.np_vstack_impl)  s   € Ü—~’~¤b§i¢i°Ó&7¸Ó;Ð;rE   rG   c                 ó,   • [         R                  " U SS9$ )Nr   rµ  r¶  r<  s    rC   r=  r>  2  ó   € Ü—~’~ f°1Ñ5Ð5rE   r-  )rƒ   r=   r\   rï   rK  rr   r=  râ   s           rC   rŽ  Ú_np_vstack.<locals>.codegen$  sp   € Ø—‘˜‘ˆØ�Q‰x�}‰}ˆà�1‹9ó<ð �Q‹Yà×'Ñ'¬¯
©
°AÓ6ˆDÜ# G°cÀÓFÐFò6ð ×'Ñ'¨ÀÓKÐKrE   r/  r0  s        rC   Ú
_np_vstackrB    s+   € ä
˜	 ;°°QÓ
7€CÙ
ˆc‹(€CòLð& ˆ<ÐrE   c                 óL   • [        U [        R                  5      (       a  S nU$ g )Nc                 ó   • [        U 5      $ rB  )rB  r  s    rC   rè   Úimpl_np_vstack.<locals>.impl=  r5  rE   r  r  s     rC   Úimpl_np_vstackrF  :  r7  rE   c                 ó:   • [        U SUS5      nU" U5      nS nX44$ )Nz	np.dstackro  c                 ó„  • UR                   S   nUR                  nUS   R                  nUS:X  a  S nU R                  XX#5      $ US:X  a®  U R	                  [
        R                  S5      nUR                  UR                  S-
  S9n	[        R                  " U	/UR                   Q76 n
[        XX£U5      nU R	                  [
        R                  S5      n[        R                  " XY5      n[        XXË4U5      $ US:X  a-  U R	                  [
        R                  S5      n[        XX#U5      $ S nU R                  XX#5      $ )Nr   c                 óP   • [         R                  " U 5      R                  SSS5      $ )NrG   rH  )r¤  r;  rš  r<  s    rC   r=  Ú3_np_dstack.<locals>.codegen.<locals>.np_vstack_implQ  s    € Ü—y’y Ó(×0Ñ0°°A°rÓ:Ð:rE   rG   r»  rb  c                 ó,   • [         R                  " U SS9$ )Nrb  rµ  r¶  r<  s    rC   r=  rJ  h  r@  rE   )rï   rñ   rr   r*  rÄ   r   r”   r„  r   r%   r  r°  )rƒ   r=   r\   rï   rK  rŽ  rr   r=  râ   Ústack_rettyÚ	stack_sigÚ	stack_retr  s                rC   rŽ  Ú_np_dstack.<locals>.codegenK  s$  € Ø—‘˜‘ˆØ—‘ˆØ�Q‰x�}‰}ˆà�1‹9ò;ð ×+Ñ+¨GÀSÓOÐOà�Q‹Yà×'Ñ'¬¯
©
°AÓ6ˆDØŸ*™*¨%¯*©*°q©.˜*Ð9ˆKÜ×(Ò(¨Ð@°s·x±xÒ@ˆIÜ(¨¸9Ø)-ó/ˆIð ×'Ñ'¬¯
©
°AÓ6ˆDÜ×)Ò)¨%Ó=ˆJÜ˜w°¸\È4ÓPÐPà�Q‹Yà×'Ñ'¬¯
©
°AÓ6ˆDÜ# G°cÀÓFÐFò6ð ×+Ñ+¨GÀSÓOÐOrE   r/  r0  s        rC   Ú
_np_dstackrP  F  s,   € ä
˜	 ;°°QÓ
7€CÙ
ˆc‹(€Cò PðD ˆ<ÐrE   c                 óL   • [        U [        R                  5      (       a  S nU$ g )Nc                 ó   • [        U 5      $ rB  )rP  r  s    rC   rè   Úimpl_np_dstack.<locals>.impls  r5  rE   r  r  s     rC   Úimpl_np_dstackrT  p  r7  rE   Úfillc                 ó   • S nU$ )Nc                 ó   • XS S & g rB  rt   )r9  r�   s     rC   Ú	fill_implÚarr_fill.<locals>.fill_impl{  s   € Ø‰AˆØrE   rt   )r9  r�   rX  s      rC   Úarr_fillrZ  x  s   € òð ÐrE   Údotc                 ó   • S nU$ )Nc                 ó.   • [         R                  " X5      $ rB  )r¤  r[  )r9  Úothers     rC   Údot_implÚarray_dot.<locals>.dot_impl„  s   € Ü�vŠv�cÓ!Ð!rE   rt   )r9  r^  r_  s      rC   Ú	array_dotra  ‚  s   € ò"ð €OrE   c                 ó^   • [        U 5      (       d  [        R                  " SU -  5      eS nU$ )NzCannot np.fliplr on %s typec                 ó~   • [         R                  " U 5      nUR                  S:  a  [        S5      eUS S 2S S S2S4   $ )Nrb  rl  rH  .©r¤  r¥  rr   r½   ©r¸  r‚  s     rC   rè   Únp_flip_lr.<locals>.impl�  s=   € Ü�JŠJ�q‹Mˆð �6‰6�A‹:ÜÐ4Ó5Ð5Ø’‘T�r�T˜3�ÑÐrE   r-  ©r¸  rè   s     rC   Ú
np_flip_lrrh  Š  s2   € ô ˜A×ÑÜ× Ò Ð!>ÀÑ!BÓCÐCò ð €KrE   c                 ó^   • [        U 5      (       d  [        R                  " SU -  5      eS nU$ )NzCannot np.flipud on %s typec                 óx   • [         R                  " U 5      nUR                  S:  a  [        S5      eUS S S2S4   $ )NrG   zInput must be >= 1-d.rH  .rd  re  s     rC   rè   Únp_flip_ud.<locals>.impl¡  s:   € Ü�JŠJ�q‹Mˆð �6‰6�A‹:ÜÐ4Ó5Ð5Ø‘�2��s�‰|ÐrE   r-  rg  s     rC   Ú
np_flip_udrl  ›  s2   € ô ˜A×ÑÜ× Ò Ð!>ÀÑ!BÓCÐCòð €KrE   c                 ó  ^^• [        U[        R                  5      (       d  [        R                  " U5      e[        UR                  5      m[        R                  " [        R                  TS9mT" U5      nUU4S jnX#4$ )zTCreates a tuple of slices for np.flip indexing like
`(slice(None, None, -1),) * sz` r  c                 óø   >• S n[         R                  T/n[        R                  " T/UQ76 nU R	                  [         R                  5      nU R                  T5      nU" T5      U/n	U R                  XXi5      n
U
$ )Nc           
      ó\   • Un[        U 5       H  n[        X#[        S S S5      5      nM     U$ )NrH  )r8   r/   r3  )ÚlengthÚempty_tuplerü   ro   s       rC   rè   Ú6_build_flip_slice_tuple.<locals>.codegen.<locals>.impl·  s/   € ØˆCÜ˜6–]�Ü# C¬E°$¸¸bÓ,AÓB’ñ #àˆJrE   )r   r”   r   r%   r¾   Úget_constant_undefr*  )rƒ   r=   r%   rï   rè   Úinner_argtypesÚ	inner_sigÚll_idx_typerq  Ú
inner_argsrû   r™   Ú
tuple_types              €€rC   rŽ  Ú(_build_flip_slice_tuple.<locals>.codegen¶  sw   ø€ ò	ô  Ÿ*™* jÐ1ˆÜ×$Ò$ ZÐA°.ÒAˆ	Ø×,Ñ,¬U¯Z©ZÓ8ˆà×0Ñ0°Ó<ˆÙ! $Ó'¨Ð5ˆ
à×&Ñ& w°iÓLˆØˆ
rE   )	r�   r   r±  r	   r*  rÂ   rë   r®  Úslice3_type)rY  Úszr\   rŽ  r™   rx  s       @@rC   Ú_build_flip_slice_tupler|  ¬  sg   ù€ ô �bœ%×.Ñ.×/Ñ/Ü×(Ò(¨Ó,Ð,Üˆr×ÑÓ €DÜ—’¤e×&7Ñ&7¸tÑD€JÙ
�R‹.€Cöð" ˆ<ÐrE   c                 ó|   • [        U [        R                  5      (       d  [        R                  " SU -  5      eS nU$ )NzCannot np.flip on %s typec                 ó4   • [        U R                  5      nX   $ rB  )r|  rr   )r¸  Úsls     rC   rè   Únp_flip.<locals>.implÑ  s   € Ü$ Q§V¡VÓ,ˆØ‰uˆrE   )r�   r   rž   r	   rê   rg  s     rC   Únp_flipr�  Ê  s8   € ô �aœŸ™×%Ñ%Ü× Ò Ð!<¸qÑ!@ÓAÐAòð €KrE   c                 ó  • [        U [        R                  [        R                  [        R                  45      (       a  SS jnU$ [        U[        R
                  5      (       a  SS jnU$ [        U[        R                  5      (       a:  [        UR                  R                  [        R
                  5      (       a  SS jnU$ [        U[        R                  5      (       a)  [        S UR                   5       5      (       a  SS jnU$ g g )Nc                 óV   • [         R                  " [         R                  " U 5      UUS9$ r´  )r¤  Úarray_splitr¥  ©r  Úindices_or_sectionsrâ   s      rC   rè   Únp_array_split.<locals>.implÛ  s$   € Ü—>’>Ü—
’
˜3“Ø#Øñð rE   c                 óÜ   • [        U R                  U   U5      u  p4[        R                  " [        R                  " US-   /U-  U/X-
  S-
  -  -   5      5      n[        R
                  " XUS9$ )NrG   rµ  )Údivmodrg   r¤  ÚcumsumrÌ   r„  )r  r†  râ   rz  rI  r¨   s         rC   rè   r‡  å  sj   € Ü˜CŸI™I d™OÐ-@ÓA‰FˆAÜ—i’i¤§¢Ø�Q‘�˜#‘Ø�Ð*Ñ0°1Ñ4Ñ5ñ6ó!ó ˆGô —>’> #°TÑ:Ð:rE   c                 ó  • [        U R                  5      n[        SSU R                  U5      n/ nSnU H-  n[        X2[	        XV5      5      nUR                  X   5        UnM/     UR                  U [        X2[	        WS 5      5         5        U$ ©Nznp.splitrâ   r   )r0   rr   rã   r/   r3  rk   ©r  r†  râ   Ú	slice_tuprü   Úprevr2  r˜   s           rC   rè   r‡  ö  s‚   € Ü.¨s¯x©xÓ8ˆIÜ! *¨f°c·h±hÀÓEˆDØˆCØˆDÛ*�Ü# I´U¸4Ó5EÓF�Ø—
‘
˜3™8Ô$Ø’ñ +ð �J‰J�sœ=¨¼%ÀÀTÓ:JÓKÑLÔMØˆJrE   c              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frB  ©r�   r   rŸ   )rD  r¿  s     rC   rF  Ú!np_array_split.<locals>.<genexpr>  s    é € ÐPÒ6O°”
˜1œeŸm™m×,Ð,Ò6OùrH  c                 ó0  • [        U R                  5      n[        SSU R                  U5      n/ nSn[        U5       H-  n[	        X2[        XV5      5      nUR                  X   5        UnM/     UR                  U [	        X2[        WS 5      5         5        U$ rŒ  )r0   rr   rã   r   r/   r3  rk   r�  s           rC   rè   r‡    sˆ   € Ü.¨s¯x©xÓ8ˆIÜ! *¨f°c·h±hÀÓEˆDØˆCØˆDÜ%Ð&9Ö:�Ü# I´U¸4Ó5EÓF�Ø—
‘
˜3™8Ô$Ø’ñ ;ð �J‰J�sœ=¨¼%ÀÀTÓ:JÓKÑLÔMØˆJrE   rÍ  )r�   r   r®  ÚListTyperJ  rŸ   ÚIterableTypeÚiterator_typer  r¯  r°  ©r  r†  râ   rè   s       rC   Únp_array_splitr˜  Ø  sÔ   € ä�#œŸ™¬¯©¼¿
¹
ÐC×DÑDô	ð ˆäÐ%¤u§}¡}×5Ñ5ô	;ð ˆô 	Ð&¬×(:Ñ(:×;Ñ;ÜØ×-Ñ-×8Ñ8Ü�M‰M÷
ñ 
ô

	ð ˆô 	Ð&¬¯©×4Ñ4ÜÑPÐ6I×6OÒ6OÓP×PÑPô
	ð ˆð Qð 	5rE   c                 óì   • [        U [        R                  [        R                  [        R                  45      (       a  SS jnU$ [        U[        R
                  5      (       a  SS jnU$ [        XUS9$ )Nc                 óT   • [         R                  " [         R                  " U 5      XS9$ r´  )r¤  Úsplitr¥  r…  s      rC   rè   Únp_split.<locals>.impl  s   € Ü—8’8œBŸJšJ s›OÐ-@ÑLÐLrE   c                 ó„   • [        U R                  U   U5      u  p4US:w  a  [        S5      e[        R                  " XUS9$ )Nr   z0array split does not result in an equal divisionrµ  )r‰  rg   r½   r¤  r„  )r  r†  râ   r1  rI  s        rC   rè   rœ  "  sH   € Ü˜CŸI™I d™OÐ-@ÓA‰FˆAØ�a‹xÜ ØFóð ô —>’>Ø¨tñð rE   rµ  rÍ  )r�   r   r®  r”  rJ  rŸ   r˜  r—  s       rC   Únp_splitrž    s^   € ô �#œŸ™¬¯©¼¿
¹
ÐC×DÑDô	Mð ˆäÐ%¤u§}¡}×5Ñ5ô	ð ˆô ˜c¸TÑBÐBrE   c                 óD  • [        U [        R                  5      (       d  Sn[        R                  " U5      e[        U[        R
                  [        R                  [        R                  [        R                  45      (       d  Sn[        R                  " U5      eS nU$ )Nú#The argument "ary" must be an arrayú:The argument "indices_or_sections" must be int or 1d-arrayc                 ób   • U R                   S:  a  [        S5      e[        R                  " XSS9$ )Nrb  z3vsplit only works on arrays of 2 or more dimensionsr   rµ  ©rr   r½   r¤  r›  ©r  r†  s     rC   rè   Únumpy_vsplit.<locals>.impl=  s2   € Ø�8‰8�a‹<Üð ?ó Að Aä�xŠx˜°qÑ9Ð9rE   ©r�   r   rž   r	   rê   rŸ   rJ  r®  ©r  r†  rÒ   rè   s       rC   Únumpy_vsplitr¨  2  ó|   € ä�cœ5Ÿ;™;×'Ñ'Ø3ˆÜ× Ò  Ó%Ð%äÐ)¬E¯M©M¼5¿;¹;Ü,1¯J©J¼¿¹ð,H÷ Iñ IàKˆÜ× Ò  Ó%Ð%ò:ð €KrE   c                 óD  • [        U [        R                  5      (       d  Sn[        R                  " U5      e[        U[        R
                  [        R                  [        R                  [        R                  45      (       d  Sn[        R                  " U5      eS nU$ )Nr   r¡  c                 ó¬   • U R                   S:X  a  [        S5      eU R                   S:”  a  [        R                  " XSS9$ [        R                  " XSS9$ )Nr   z3hsplit only works on arrays of 1 or more dimensionsrG   rµ  r£  r¤  s     rC   rè   Únumpy_hsplit.<locals>.implQ  sN   € Ø�8‰8�q‹=Üð ?ó Að Aà�8‰8�a‹<Ü—8’8˜C¸1Ñ=Ð=Ü�xŠx˜°qÑ9Ð9rE   r¦  r§  s       rC   Únumpy_hsplitr­  F  s|   € ä�cœ5Ÿ;™;×'Ñ'Ø3ˆÜ× Ò  Ó%Ð%äÐ)¬E¯M©M¼5¿;¹;Ü,1¯J©J¼¿¹ð,H÷ Iñ IàKˆÜ× Ò  Ó%Ð%ò:ð €KrE   c                 óD  • [        U [        R                  5      (       d  Sn[        R                  " U5      e[        U[        R
                  [        R                  [        R                  [        R                  45      (       d  Sn[        R                  " U5      eS nU$ )Nr   r¡  c                 ób   • U R                   S:  a  [        S5      e[        R                  " XSS9$ )Nro  z3dsplit only works on arrays of 3 or more dimensionsrb  rµ  r£  r¤  s     rC   rè   Únumpy_dsplit.<locals>.implg  s0   € Ø�8‰8�a‹<Üð *ó +ð +ä�xŠx˜°qÑ9Ð9rE   r¦  r§  s       rC   Únumpy_dsplitr±  \  r©  rE   c                 ó
   • X:  $ )z/
Trivial comparison function between two keys.
rt   r  s     rC   Ú
default_ltr³  v  s   € ð ‰5€LrE   c                 ó  • XR                   U4n [        U   $ ! [         a^    U S:X  a#  [        R                  " UUSS9nUR
                  nO'U S:X  a!  [        R                  " UUS9nUR                  nW[        U'   Us $ f = f)z.
Get a sort implementation of the given kind.
r,   T)ÚltÚ
is_argsortÚis_np_arrayr-   )rµ  r¶  )	ru   Ú_sortsÚKeyErrorr,   Úmake_jit_quicksortÚrun_quicksortr-   Úmake_jit_mergesortÚrun_mergesort)rÏ  Últ_implr¶  Úkeyr6  rú  s         rC   Úget_sort_funcrÀ  }  s™   € ð × Ñ  *Ð
,€CðÜ�c‰{ÐøÜó Ø�;ÓÜ×/Ò/ØØ%Ø ñ"ˆDð ×%Ñ%‰DØ�[Ó Ü×/Ò/ØØ%ñ'ˆDð ×%Ñ%ˆDØŒˆs‰ØŠðús   � ™A%BÂ Bc                 ó¢   • [        U [        R                  5      (       a  [        $ [        U [        R                  5      (       a  [
        $ [        $ rB  )r�   r   rä  r   rV  r   r³  r?  s    rC   Últ_implementationrÂ  •  s6   € Ü�%œŸ™×%Ñ%ÜÐÜ	�Eœ5Ÿ=™=×	)Ñ	)ÜÐäÐrE   z
array.sortc                 óŒ   ^• UR                   S   n[        S[        UR                  5      S9mU4S jnU R	                  XX#5      $ )Nr   r,   )rÏ  r¾  c                 ó   >• T" U 5        g rB  rt   ©r9  Ú	sort_funcs    €rC   Úarray_sort_implÚ#array_sort.<locals>.array_sort_impl¥  s
   ø€ á�#�rE   )rï   rÀ  rÂ  r�   r*  )rƒ   r=   r\   rï   rC  rÇ  rÆ  s         @rC   Ú
array_sortrÉ  ž  sC   ø€ à�h‰h�q‰k€Gä ;Ü&7¸¿¹Ó&FñH€Iõð ×#Ñ# G¸cÓHÐHrE   c                 óX   • [        U 5      (       d  [        R                  " S5      eS nU$ )NzArgument "a" must be array-likec                 óF   • U R                  5       nUR                  5         U$ rB  )r„  r6  )r7  rû   s     rC   Únp_sort_implÚ"impl_np_sort.<locals>.np_sort_impl²  s   € Ø�f‰f‹hˆØ�‰Œ
Øˆ
rE   r-  )r7  rÌ  s     rC   Úimpl_np_sortrÎ  ¬  s2   € ä˜A×ÑÜ× Ò ð "1ó 2ð 	2òð ÐrE   zarray.argsortc                 óâ   ^	• UR                   u  pE[        UR                  [        UR                  5      SS9m	U	4S jnUR                  UR                   S S S9nUS S nU R                  XXx5      $ )NT)rÏ  r¾  r¶  c                 ó   >• T" U 5      $ rB  rt   rÅ  s    €rC   Úarray_argsort_implÚ)array_argsort.<locals>.array_argsort_implÂ  s   ø€ Ù˜‹~ÐrE   rG   r½  )rï   rÀ  rë   rÂ  r�   Úreplacer*  )
rƒ   r=   r\   rï   rC  rÏ  rÑ  ÚinnersigÚ	innerargsrÆ  s
            @rC   Úarray_argsortrÖ  ¹  su   ø€ ð —H‘H�M€Gä 4×#5Ñ#5Ü&7¸¿¹Ó&FØ)-ñ/€Iõð �{‰{ §¡¨¨! ˆ{Ð-€HØ�R�a�€IØ×#Ñ# GØ$,ó9ð 9rE   c                 ó^   • UR                   UR                   :w  d  UR                  S:X  d   eU$ )Nr‚  )r�  r+  )rƒ   r=   r›  rœ  r�   s        rC   Úarray_to_arrayrØ  Î  s*   € ð �>‰>˜TŸ\™\Ó)¨T¯[©[¸CÓ-?Ð?Ð?Ø€JrE   c                 ór   • S n[        X25      nU R                  XXd/5      n[        XUR                  U5      $ )Nc                 ó$   • U R                  S5      $ ræ   )rÊ  rÅ  s    rC   rè   Úarray0d_to_scalar.<locals>.implÝ  s   € à�v‰v�a‹yÐrE   )r%   r*  r#   rñ   ©rƒ   r=   r›  rœ  r�   rè   r\   rû   s           rC   Úarray0d_to_scalarrÝ  Õ  s:   € òô �DÓ
!€CØ
×
"Ñ
" 7°#°uÓ
=€CÜ˜g°·±ÀÓEÐErE   c                 ór   • S n[        X25      nU R                  XXd/5      n[        XUR                  U5      $ )Nc                 ó   • [        U S   5      $ r«  )rê  rÅ  s    rC   rè   Ú array_to_unichrseq.<locals>.implè  s   € Ü�1�R‘5‹zÐrE   )r%   r*  r!   rñ   rÜ  s           rC   Úarray_to_unichrseqrá  æ  s:   € òô �DÓ
!€CØ
×
"Ñ
" 7°#°uÓ
=€CÜ˜W¨s¯©ÀÓDÐDrE   c                 ó   • [         e)zJ
An intrinsic returning a derived array with the given shape and strides.
rß   )r7  rg   r±   s      rC   Úreshape_uncheckedrã  ó  rÚ  rE   c                 ó   ^• S mU4S jnU$ )Nc                 óh   • [        U [        R                  5      =(       a    [        S U  5       5      $ )Nc              3   óV   #   • U  H  n[        U[        R                  5      v •  M!     g 7frB  r‘  r¢  s     rC   rF  Ú>type_reshape_unchecked.<locals>.check_shape.<locals>.<genexpr>þ  s   é € Ð@º%°Q”J˜q¤%§-¡-×0Ð0º%ùrH  )r�   r   rO  r°  ©rg   s    rC   rƒ  Ú+type_reshape_unchecked.<locals>.check_shapeü  s*   € Ü˜5¤%§/¡/Ó2÷ AÜÑ@¹%Ó@Ó@ð	BrE   c                 óÞ   >• [        U [        R                  5      (       d  g T" U5      (       a  T" U5      (       d  g [        U5      [        U5      :w  a  g U R	                  [        U5      SS9$ )Nr‚  rƒ  )r�   r   rž   r¥   r„  )r7  rg   r±   rƒ  s      €rC   ÚtyperÚ%type_reshape_unchecked.<locals>.typer   sY   ø€ Ü˜!œUŸ[™[×)Ñ)ØÙ˜5×!Ñ!©°W×)=Ñ)=ØÜˆu‹:œ˜W›Ó%ØØ�v‰vœ3˜u›:¨cˆvÐ2Ð2rE   rt   )rƒ   rë  rƒ  s     @rC   Útype_reshape_uncheckedrí  ú  s   ø€ òBõ3ð €LrE   c           	      óx  • UR                   S   nUR                  n[        U5      " XUS   5      n[        U5      " X5      n[        R                  " XS   5      n[        R                  " XS   5      n	[        UUR                  UU	UR                  UR                  S9  UR                  5       n
[        XXZ5      $ )Nr   rG   rb  r'  )rï   rñ   r~   r
   rÅ   rÚ   r    r²   r°   r÷   r!   )rƒ   r=   r\   rï   rÜ   rŽ  r  rü   rg   r±   rû   s              rC   Úimpl_shape_uncheckedrï    s£   € à�H‰H�Q‰K€EØ�O‰O€Eä
�UÔ
˜G¨d°1©gÓ
6€CÜ
�UÔ
˜GÓ
-€CÜ× Ò  ¨q©'Ó2€EÜ×"Ò" 7°©GÓ4€Gä�3ØŸ™ØØ"ØŸL™LØŸ;™;òð �-‰-‹/€CÜ˜W¨uÓ:Ð:rE   c                 óê   ^^• US [         R                  4;   a  [        S 5       mO[        S 5       mUS [         R                  4;   a  [        R                  " S5      e[        S 5       mSUU4S jjnU$ )Nc                 ó   • U R                   $ rB  rè  ©r|  rg   s     rC   rr  Úas_strided.<locals>.get_shape%  s   € à—7‘7ˆNrE   c                 ó   • U$ rB  rt   rò  s     rC   rr  ró  )  s   € àˆLrE   z,as_strided() strides argument cannot be Nonec                 ó   • U$ rB  rt   )r|  r±   s     rC   Úget_stridesÚas_strided.<locals>.get_strides4  s   € àˆNrE   c                 ó:   >• [        U T" X5      T" X5      5      n U $ rB  )rã  )r|  rg   r±   rr  rö  s      €€rC   Úas_strided_implÚ#as_strided.<locals>.as_strided_impl8  s    ø€ Ü˜a¡¨1Ó!4±kÀ!Ó6MÓNˆØˆrE   r{  )r   r‡  r'   r	   rê   )r|  rg   r±   rù  rr  rö  s       @@rC   Ú
as_stridedrû  "  s…   ù€ à�”u—z‘zÐ"Ó"Ü	ñ	ó 
ñ	ô 
ñ	ó 
ð	ð �4œŸ™Ð$Ó$ô
 × Ò Ð!OÓPÐPä	ñ	ó 
ð	÷ð ð ÐrE   c                 óæ  ^^^^• [        U[        R                  5      (       aO  [        [	        U R
                  S-   5      5      m[        [	        U R
                  S-   5      5      m[        S 5       mO¿[        U[        R                  5      (       aŠ  [        UR                  [        R                  5      (       aa  [        [	        U R
                  [        U5      -   5      5      m[        [	        U R
                  [        U5      -   5      5      m[        S 5       mO[        R                  " S5      e[        U5      (       a  [        S 5       mO—[        U[        R                  5      (       a  [        S 5       mOk[        U[        R                  5      (       a6  [        UR                  [        R                  5      (       a  [        S 5       mO[        R                  " S5      eS
UUUU4S	 jjnU$ )NrG   c                 ó   • U 4$ rB  rt   ©Úwindow_shapes    rC   Úget_window_shapeÚ-sliding_window_view.<locals>.get_window_shapeI  s
   € à �?Ð"rE   c                 ó   • U $ rB  rt   rþ  s    rC   r 	  r	  R  s   € àÐrE   z4window_shape must be an integer or tuple of integersc                 ó*   • [        [        U5      5      $ rB  )rÁ   r8   ©rÿ  râ   rr   s      rC   Úget_axisÚ%sliding_window_view.<locals>.get_axis]  s   € äœ˜d›Ó$Ð$rE   c                 ó   • [        SSX!5      /$ ©NÚsliding_window_viewrâ   ©rã   r	  s      rC   r	  r	  b  s   € ô Ð4°f¸dÓIðð rE   c           	      óH   • U Vs/ s H  n[        SSX#5      PM     sn$ s  snf r	  r
	  )rÿ  râ   rr   r7  s       rC   r	  r	  j  s3   € ñ "ó#Ú!˜ô #Ð#8¸&À$ÖJÙ!ñ#ð #ùò #s   …z2axis must be None, an integer or tuple of integersc                 óH  >• T" U5      nT
" XU R                   5      n[        U5      [        U5      :w  a  [        S5      eTnTn[        U R                   5       H5  n[	        X5U R
                  U   5      n[	        XEU R                  U   5      nM7     U R                   n[        X!5       Hi  u  pgUS:  a  [        S5      eX6   U:  a  [        S5      eX6   U-
  S-   n[	        X6U5      n[	        X5U5      n[	        XEU R                  U   5      nUS-  nMk     [        XU5      n	U	$ )Nz2Must provide matching length window_shape and axisr   z-`window_shape` cannot contain negative valuesz4window_shape cannot be larger than input array shaperG   )	rr   r¥   r½   r8   r/   rg   r±   r¦   rã  )r|  rÿ  râ   Ú	out_shapeÚout_stridesro   r0  r�  Útrimmedr«  r	  r 	  Úshape_bufferÚstride_buffers             €€€€rC   Úsliding_window_view_implÚ5sliding_window_view.<locals>.sliding_window_view_implt  s.  ø€ Ù'¨Ó5ˆÙ˜¨A¯F©FÓ3ˆÜˆ|Ó¤ D£	Ó)ÜØDóð ð
 !ˆ	Ø#ˆÜ�q—v‘v–ˆAÜ% i°A·G±G¸A±JÓ?ˆIÜ'¨¸¿	¹	À!¹ÓEŠKñ ð �F‰FˆÜ˜4Ö.‰GˆBØ�Q‹wÜ ØCóð ð ‰}˜sÓ"Ü ØJóð ð  ‘m cÑ)¨AÑ-ˆGÜ% i°WÓ=ˆIÜ% i°CÓ8ˆIÜ'¨¸¿	¹	À"¹ÓFˆKØ�‰FŠAñ /ô$ ! ¨{Ó;ˆØˆrE   rB  )r�   r   rŸ   rÀ   r8   rr   r'   r®  r�   r¥   r	   rê   r   )r|  rÿ  râ   r	  r	  r 	  r	  r	  s       @@@@rC   r		  r		  ?  s�  û€ ô �,¤§¡×.Ñ.ÜœU 1§6¡6¨A¡:Ó.Ó/ˆÜœe A§F¡F¨Q¡JÓ/Ó0ˆä	ñ	#ó 
ñ	#ô �\¤5§>¡>×
2Ñ
2Ü�|×)Ñ)¬5¯=©=×9Ñ9ÜœU 1§6¡6¬C°Ó,=Ñ#=Ó>Ó?ˆÜœe A§F¡F¬S°Ó->Ñ$>Ó?Ó@ˆä	ñ	 ó 
ñ	 ô × Ò ØBó
ð 	
ô
 �4×ÑÜ	ñ	%ó 
ñ	%ô 
�Dœ%Ÿ-™-×	(Ñ	(Ü	ñ	ó 
ñ	ô
 �Tœ5Ÿ>™>×
*Ñ
*Ü�t—z‘z¤5§=¡=×1Ñ1Ü	ñ	#ó 
ñ	#ô
 × Ò Ø@ó
ð 	
÷%ò %ðN $Ð#rE   c                 óL   • [        U [        R                  5      (       a  S nU$ g )Nc                 ó¸   • U R                   S:X  a  [        S:  a  g[        S5      eU R                   S:X  a  [        U R	                  S5      5      $ [        S5      e)Nr   )rb  rb  FziThe truth value of an empty array is ambiguous. Use `array.size > 0` to check that an array is not empty.rG   z[The truth value of an array with more than one element is ambiguous. Use a.any() or a.all())r™   r   r½   rP  rÊ  rÇ  s    rC   rè   Úol_bool.<locals>.impl¡  s_   € Ø�x‰x˜1‹}Ü  6Ó)Ø ä$ð 'Jó Lð Lð —‘˜Q“Ü˜CŸH™H Q›KÓ(Ð(ä ð #-ó /ð /rE   rC  rÉ  s     rC   Úol_boolr	  ž  s$   € ä�#”u—{‘{×#Ñ#ò	/ð ˆð $rE   c                 ó®  ^^• [        U[        [        R                  45      (       d  [        R
                  " S5      e[        U[        [        R                  45      (       d  [        R
                  " S5      e[        U [        R                  5      (       d  [        R
                  " S5      eU R                  m[        [        T5      5      mUU4S jnU$ )Nz.The second argument "axis1" must be an integerz-The third argument "axis2" must be an integerz'The first argument "a" must be an arrayc                 óÄ   >• [        SSTU5      n[        SSTU5      nUS:  a  UT-  nUS:  a  UT-  n[        TX5      n[        X2U5      n[        R                  " X5      $ )Nznp.swapaxesÚaxis1Úaxis2r   )rã   r/   r¤  r?  )r7  r	  r	  Ú
axes_tupleÚ	axes_listrr   s       €€rC   rè   Únumpy_swapaxes.<locals>.implÁ  sl   ø€ Ü˜}¨g°t¸UÓCˆÜ˜}¨g°t¸UÓCˆð �1‹9Ø�T‰MˆEØ�1‹9Ø�T‰MˆEä" 9¨eÓ;ˆ
Ü" :°eÓ<ˆ
Ü�|Š|˜AÓ*Ð*rE   )
r�   rÂ   r   rŸ   r	   rê   rž   rr   rÀ   r8   )r7  r	  r	  rè   r	  rr   s       @@rC   Únumpy_swapaxesr	  ²  s§   ù€ ä�eœc¤5§=¡=Ð1×2Ñ2Ü× Ò ð "+ó ,ð 	,ä�eœc¤5§=¡=Ð1×2Ñ2Ü× Ò ð "+ó ,ð 	,ä�aœŸ™×%Ñ%Ü× Ò Ð!JÓKÐKð �6‰6€DÜ”e˜D“kÓ"€Iö+ð €KrE   c                 ó>  • [        SSU R                  U5      n[        U R                  5      nSXb'   [	        [        XaR                  5      5       H8  u  nu  p‰US:X  a  U	n
OU	S:X  a  Un
OX‰:w  a  [        S5      eUn
[        XWU
5      nM:     [        XRU R                  U   5      n[        R                  " X5      n [        R                  " X5      nUn[        U5      S:”  a4  [        [        U5      5       H  n[        XÇU R                  U   5      nM     Un[        U5      S:”  a:  [        [        U5      5       H"  n[        X×U R                  US-   U-      5      nM$     UR                  U   n[        R                  " XÎ4-   U-   U R                  5      n[        S S S 5      4n[        R                  " U5       H^  n[        R                  " U5       HA  nU UU-   U-      nUUU-   U-      nUUU-   U-      n[        U5       H  nUUU      UU'   M     MC     M`     U$ )Nznp.take_along_axisrâ   rG   z*`arr` and `indices` dimensions don't matchr   )rã   rr   rÁ   rg   rÂ  r¦   r½   r/   r¤  rª  r¥   r8   rA  r�   r3  rÐ  )r9  r¨   râ   ÚNi_origÚNk_origÚindices_broadcast_shapeÚ	arr_shapero   Úd1Úd2Únew_valÚarr_broadcast_shapeÚNiÚNkÚJrü   Únp_s_ÚiiÚkkÚa_1dÚ
indices_1dÚout_1dr¾  s                          rC   Ú_take_along_axis_implr2	  Ò  sÿ  € ô Ð.°¸¿¹À$ÓG€Dô �S—Y‘Y“€IØ€I�OÜ ¤ Y·±Ó!>Ö?‰ˆ‰8ˆBØ�‹7Ø‰GØ�1‹WØ‰Gà‹xÜ Ø@óð ð ˆGÜ"/Ø#¨ó#
Òñ @ô (Ø s§y¡y°¡óÐô �/Š/˜#Ó
3€CÜ�oŠo˜gÓ?€Gà	€BÜ
ˆ7ƒ|�aÓÜ”s˜2“w–ˆAÜ˜r c§i¡i°¡lÓ3ŠBñ  à	€BÜ
ˆ7ƒ|�aÓÜ”s˜2“w–ˆAÜ˜r c§i¡i°°q±¸1±Ñ&=Ó>ŠBñ  ð 	�‰�dÑ€AÜ
�(Š(�2˜‘9˜r‘> 3§9¡9Ó
-€Cä�4˜˜tÓ$Ð&€Eä�jŠj˜ŽnˆÜ—*’*˜R–.ˆBØ�r˜E‘z B‘Ñ'ˆDØ   e¡¨b¡Ñ1ˆJØ˜˜e™ b™Ñ)ˆFÜ˜1–X�Ø  ¨A¡Ñ/��q“	ó ó	 !ñ ð €JrE   c                 óè  ^^^• [        U [        R                  5      (       d  [        R                  " S5      e[        U[        R                  5      (       d  [        R                  " S5      e[        UR
                  [        R                  5      (       d  [        R                  " S5      e[        U5      (       a  SnOU R                  nX1R                  :w  a  [        R                  " S5      e[        [        UR                  5      5      m[        U5      (       a  U4S jnU$ [        US5        [        U[        R                  5      (       d  [        R                  " S5      eUR                  nUS	:  a  U R                  U-   nUS	:  d  X R                  :¼  a  [        R                  " S
5      e[        [        U5      5      m[        [        US-   U R                  5      5      mUUU4S jnU$ )Nz)The first argument "arr" must be an arrayz.The second argument "indices" must be an arrayz'The indices array must contain integersrG   z;`indices` and `arr` must have the same number of dimensionsc                 ó@   >• [        U R                  5       USSST5      $ )Nr   rt   )r2	  r¾  )r9  r¨   râ   r#	  s      €rC   Útake_along_axis_implÚ1arr_take_along_axis.<locals>.take_along_axis_impl#  s%   ø€ Ü(¨¯©«¸ÀÀBÈØ)@óBð BrE   râ   zaxis must be a literal valuer   zaxis is out of boundsc                 ó"   >• [        XUTTT5      $ rB  )r2	  )r9  r¨   râ   r)	  r*	  r#	  s      €€€rC   r5	  r6	  4  s   ø€ Ü(¨°t¸RÀØ)@óBð BrE   )r�   r   rž   r	   rê   r�   rŸ   r   rr   rÀ   r8   r   r±  rt  rë   )r9  r¨   râ   Úarr_ndimr5	  r)	  r*	  r#	  s        @@@rC   Úarr_take_along_axisr9	    sƒ  ú€ ä�cœ5Ÿ;™;×'Ñ'Ü× Ò Ð!LÓMÐMÜ�gœuŸ{™{×+Ñ+Ü× Ò Ø<ó>ð 	>ä�g—m‘m¤U§]¡]×3Ñ3Ü× Ò Ð!JÓKÐKÜ�4×ÑØ‰à—8‘8ˆØ—<‘<Óä× Ò ØIó
ð 	
ô $¤E¨'¯,©,Ó$7Ó8ÐÜ�4×Ñõ	Bð(  Ðô! 	˜˜vÔ&Ü˜$¤× 4Ñ 4×5Ñ5Ü×(Ò(Ð)GÓHÐHØ×!Ñ!ˆØ�!‹8Ø—8‘8˜d‘?ˆDà�!‹8�tŸx™xÓ'Ü×(Ò(Ð)@ÓAÐAä”5˜“;ÓˆÜ”5˜ ™ 3§8¡8Ó,Ó-ˆ÷	Bð  ÐrE   c                 óè  • [        U [        R                  5      (       aˆ  [        U [        R                  5      (       a  S	S jnU$ [        U [        R                  5      (       a  S	S jnU$ [        U [        R
                  5      (       a  S	S jnU$ [        R                  " S5      e[        U 5      (       a¦  [        U R                  [        R                  5      (       a  S	S jnU$ [        U R                  [        R                  5      (       a  S	S jnU$ [        U R                  [        R
                  5      (       a  S	S jnU$ [        R                  " S5      e[        R                  " S5      e)
Nc                 ó   • U $ rB  rt   ©r|  r„  Únans      rC   rè   Únan_to_num_impl.<locals>.impl?  ó   € Ø�rE   c                 óP  • [         R                  " U 5      (       a  U$ [         R                  " U 5      (       a)  [         R                  " [	        U 5      5      R
                  $ [         R                  " U 5      (       a)  [         R                  " [	        U 5      5      R                  $ U $ rB  )r¤  ÚisnanÚisneginfÚfinfor9   rÑ  ÚisposinfrÇ  r<	  s      rC   rè   r>	  C  se   € Ü—8’8˜A—;‘;Ø�JÜ—[’[ —^‘^ÜŸ8š8¤D¨£GÓ,×0Ñ0Ð0Ü—[’[ —^‘^ÜŸ8š8¤D¨£GÓ,×0Ñ0Ð0Ø�rE   c                 ó”   • [         R                  " U R                  US9n[         R                  " U R                  US9n[	        X45      $ )N)r=	  )r¤  Ú
nan_to_numr\  r^  Úcomplex)r|  r„  r=	  r·  rÓ  s        rC   rè   r>	  L  s4   € Ü—M’M !§&¡&¨cÑ2�Ü—M’M !§&¡&¨cÑ2�Ü˜q“}Ð$rE   z4Only Integer, Float, and Complex values are acceptedc                 ó   • U $ rB  rt   r<	  s      rC   rè   r>	  X  r?	  rE   c                 ó:  • [         R                  " U R                  5      R                  n[         R                  " U R                  5      R                  n[         R
                  " U 5      nU(       a  [         R                  " U5      OUnUR                  n[        UR                  5       Hl  n[         R                  " Xx   5      (       a  X'U'   M&  [         R                  " Xx   5      (       a  X7U'   MI  [         R                  " Xx   5      (       d  Mh  XGU'   Mn     U$ rB  )r¤  rC	  r�   rÑ  rÇ  r¥  r„  r  r8   r™   rA	  rB	  rD	  )	r|  r„  r=	  Úmin_infÚmax_infÚx_ÚoutputÚoutput_flatro   s	            rC   rè   r>	  [  s»   € ÜŸ(š( 1§7¡7Ó+×/Ñ/�ÜŸ(š( 1§7¡7Ó+×/Ñ/�ä—Z’Z “]�Þ(,œŸš œ°"�à$Ÿk™k�Ü˜vŸ{™{Ö+�AÜ—x’x ¡×/Ñ/Ø), A›ÜŸš [¡^×4Ñ4Ø)0 A›ÜŸš [¡^×4Ó4Ø)0 A›ñ ,ð �rE   c                 óð   • [         R                  " U 5      nU(       a  [         R                  " U5      OUn[         R                  " UR                  SUS9  [         R                  " UR
                  SUS9  U$ )NF)r„  r=	  )r¤  r¥  r„  rF	  r\  r^  )r|  r„  r=	  rL	  rM	  s        rC   rè   r>	  l  sM   € Ü—Z’Z “]�Þ(,œŸš œ°"�ä—’˜fŸk™k°¸3Ò?Ü—’˜fŸk™k°¸3Ò?Ø�rE   z4The first argument must be a scalar or an array-like©Tg        )
r�   r   rÒ  rŸ   rä  rV  r	   rê   r   r�   )r|  r„  r=	  rè   s       rC   Únan_to_num_implrQ	  :  s4  € ä�!”U—\‘\×"Ñ"Ü�aœŸ™×'Ñ'ôðv €Kôq ˜œ5Ÿ;™;×'Ñ'ôðn €Kô_ ˜œ5Ÿ=™=×)Ñ)ô%ð\ €KôS ×$Ò$ØFóð ô 
˜!×	Ñ	Ü�a—g‘gœuŸ}™}×-Ñ-ôðD €KôA ˜Ÿ™¤§¡×-Ñ-ôð> €Kô ˜Ÿ™¤§¡×/Ñ/ôð €Kô ×$Ò$ØFóð ô × Ò ð ".ó /ð 	/rE   rB  rO  rÀ  r  rÍ  )Fr{  rP	  (¸  r}  rm  rí  rþ  rÄ  Úllvmliter   Úllvmlite.irr   Únumpyr¤  Únumbar   r   Ú
numba.corer   r   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.unsafe.tupler/   r0   r1   Únumba.core.typing.npydeclr2   rZ  r3   r[  r4   r5   r6   rD   rI   r~   r…   rŒ   r�   r›   r£   r©   rÚ   rÝ   rã   rì   r  rý   r
  ÚArrayIteratorÚBORROWEDr  r6  r  r<  rÿ  rŸ   r#  r?  rO  rM  rÍ  ÚAnyrT  r¥   rY  rž   r`  re  r°  rg  r  r¡  rµ  rÈ  rä  rþ  rJ  r5  r<  rA  rC  rK  rk  rt  r€  rˆ  r’  r˜  r¢  r§  rª  r´  rº  Úbroadcast_shapesrË  rÏ  rÕ  rÙ  râ  rî  rQ  r  r!  r$  r8  ÚVarArgr;  r?  rE  r  r`  rQ  Ú	geomspacerj  Úrot90ru  r„  rŒ  r”  r–  rš  r�  Úresizer­  rk   r·  rÂ  r£  rÈ  rÌ  rÚ  rß  r
  r	  r  r)  rg   r/  r™   r3  Úuniquer<  rM  rK  r@  rR  rZ  r\  ri  r©  ro  rr  Ú
MemoryViewru  rw  ry  r{  r}  r€  r„  rˆ  r�  r�  r–  r“  r™  rg  r  r�  r¤  r¨  r¦  rª  r¬  r³  r·  r±  rÊ  rÎ  ÚDTypeÚNumberClassrÓ  rß  rá  rÕ  rè  rí  rñ  r±  rõ  rý  rÿ  r  r	  ÚBytesr  Úis_r  r  r   r%  r1  r3  r±  r½  r  rí  ré  rï  rò  rô  rö  r"  rú  rø  rü  rÐ  r   r  rþ  r  r8  r  ÚNumpyNdIterTyper  Úeqr  r)  r(  r  r%  r=  rA  rµ  rG  rR  rA  rV  r]  rb  rÎ  rf  rj  ro  r¤  ru  rw  r{  r}  rƒ  r…  rŠ  rï  rŽ  r�  r“  r•  r˜  r�  r£  Úeyerª  Údiagr³  r¨   r¹  ÚdiagflatrÁ  rÉ  rÊ  rÞ  rê  r¶  rÿ  rK  r  r  r  r  r„  r  r&  r+  r.  r5  r8  r;  r>  rM  rO  rR  r]  rc  r[  rh  rr  rx  r€  r‰  r‘  r”  r™  rÌ   r�  r¢  r©  r¬  r°  r´  r¸  rÈ  r¼  Ú
atleast_1drÓ  Ú
atleast_2dr×  Ú
atleast_3drÛ  ré  rò  rù  rû  r   r¦  r  r	  r  Úcolumn_stackr  r  r   Ústackr$  r'  r1  r;  r6  rB  ÚvstackrF  Ú	row_stackrP  ÚdstackrT  rZ  ra  rq  rh  rr  rl  r|  Úflipr�  r„  r˜  r›  rž  Úvsplitr¨  Úhsplitr­  Údsplitr±  r¸  r³  rÀ  rÂ  rÉ  r6  rÎ  ÚargsortrÖ  rØ  ÚUnicodeCharSeqrä  rV  r  ÚNPTimedeltaÚ
NPDatetimerÝ  rá  rã  Útype_callablerí  rï  ÚlibÚstride_tricksrû  r		  rP  r	  rp  r	  r2	  Útake_along_axisr9	  rF	  rQ	  rt   rE   rC   Ú<module>r‡	     sÐ  ðñó
 Û Û Û å Ý  ã ç *ß H× H÷;÷ ;÷ ;÷ PÑ O÷*÷ *÷ *ñ *õ (Ý *÷Aõ Aç +Ý !ß LÝ 5÷Eõ Eò#ò6ò9òx(ò-òMò	ò
ò
 ð õBòJHò& ñ
 
ˆ.Óñó ðñ, ˆy˜%Ÿ,™,Ó'ñó (ðò.;ñ* ˆz˜5×.Ñ.Ó/Ùˆw×ÑÓ ñ-ó !ó 0ð-ð6  $õA4òHò ;ñ* ˆ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ñH ˆ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Tñn ˆ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 ;Ó/ñó 0ñó*ð ñ
ó ñ
ó-ó`Kó#ó&ð ñó ññ 
ˆ"�(Š(ÓÙ"ó &ó ñ&ð* ñó ññ 
ˆ"�-Š-Óôó ñð0 ñó ññ �—‘˜lÓ+ñó ,ññ 
ˆ"�(Š(ÓÙ"ó ó ññ 
ˆ"�-Š-Óôó ññ 
ˆ"�,Š,Óô
ó ñ
ñ 
ˆ"�'Š'Óôó ññ  
ˆ"�,Š,Óô
ó ñ
ñ 
ˆ"�'Š'Óôó ññ 
ˆ"�+Š+Óôó ñó	ð ×ÒÑ%Ó&ñó 'ñð ×Ò�B—F’FÓØ˜1¡Eó ó ññ2 
ˆ"�'Š'Óô#ó ñ#ñL 
ˆ"�*Š*Óñó ññ6 
ˆ"�+Š+Óôó ñó4  ñF 
ˆ"�'Š'ÓÙ�—‘˜fÓ%ôWó &ó ñWótñ4 
ˆ"�)Š)Óô@ó ñ@ñF 
ˆ"�+Š+Óô'ó ñ'óT"PðJ ñó ññ ˆ|˜UŸ[™[Ó)ñ4ó *ñ4ñ 
ˆ"�'Š'Óñó ñó><ðB ñ?ó ñ?ñ 
ˆ"×
Ò
Óñ
ó  ñ
ñ 
ˆ"×
Ò
Óòó ññ ‰~˜uŸ{™{¨E¯OªOÓ<Ù‰~˜uŸ{™{¨E×,?Ñ,?Ó@òPó Aó =ñPð: ò(ó ñ(ñV 
ˆ"�-Š-ÓÙ%*ô ó ññ6 
ˆ&Óõó ññ 
ˆ&Óõó ñô!ôH1Dôhôô"ô<&'ôR&#ôR)ð òó ññ2 
ˆ"�(Š(Óõó ñôô&?ô:@ô:ð8 òó ññ  
ˆ"�.Š.Óòó ñô%ô2ñ. 
ˆ"�-Š-Óò#ó ñ#ñ
 
ˆ"�-Š-Óò&ó ñ&ñ
 
ˆ"�-Š-Óò)ó ñ)ô
:ôz/FôdVFôr,ð$ òó ññ  
ˆ"�.Š.Óõó ñôð ò"ó ñ"ñJ 
ˆ"�/Š/Óòó ñôð òó ññ 
ˆ"�(Š(Óõó ñôð òó ññ4 
ˆ"�)Š)Óòó ñð òó ññ4 
ˆ"�)Š)Óòó ñð �FÓÙˆ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×(Ò(×<Ò<Ó=õ[$ó >ñ[$ñ| 
‰$ƒòó ññ& 
ˆ"�+Š+Óòó ñð> ò8ó ñ8ñv 
ˆ"×
Ò
Óò( ó ñ( ñV 
ˆ"�-Š-Óõ?ó ò?rE   