§
    ƒÛg):  ã                   óü  — d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	m
Z
mZ ddlmZ  G d„ de¦  «        Z G d„ d	e¦  «        Z ed
¦  «        Zej        Zej        Zej        Zej        Zej        Zej        Zej        Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ de¦  «        Z  G d„ de¦  «        Z!d"d„Z"d„ Z#d„ Z$d„ Z% ej&        dd¦  «        Z'ej(        d„ ¦   «         Z)d„ Z*d„ Z+d„ Z,ej(        d#d „¦   «         Z-d!„ Z.dS )$z<
Utilities to simplify the boilerplate for native lowering.
é    N)ÚEnum)ÚtypingÚtypesÚutilsÚcgutils)ÚBaseRegistryLoaderc                   óP   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ ZdS )ÚRegistryz?
    A registry of function and attribute implementations.
    Úunspecifiedc                 óZ   — || _         g | _        g | _        g | _        g | _        g | _        d S ©N)ÚnameÚ	functionsÚgetattrsÚsetattrsÚcastsÚ	constants)Úselfr   s     úI/granary/edev/quantum/lib/python3.11/site-packages/numba/core/imputils.pyÚ__init__zRegistry.__init__   s0   € ØˆŒ	ØˆŒØˆŒØˆŒØˆŒ
ØˆŒˆˆó    c                 ó   ‡ ‡‡— ˆˆˆ fd„}|S )a1  
        Decorate an implementation of *func* for the given argument types.
        *func* may be an actual global function object, or any
        pseudo-function supported by Numba, such as "getitem".

        The decorated implementation has the signature
        (context, builder, sig, args).
        c                 óB   •— ‰j                              | ‰‰f¦  «         | S r   )r   Úappend)ÚimplÚargtysÚfuncr   s    €€€r   Údecoratez Registry.lower.<locals>.decorate%   s%   ø€ ØŒN×!Ò! 4¨¨vÐ"6Ñ7Ô7Ð7ØˆKr   © )r   r   r   r   s   ``` r   ÚlowerzRegistry.lower   s/   øøø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð ˆr   c                 óZ   —  ||||¦  «        }|                      |||j        f¦  «         |S r   )r   Ú	signature)r   r   ÚtyÚattrÚ	impl_listÚ	decoratorÚ	real_impls          r   Ú_decorate_attrzRegistry._decorate_attr*   s8   € Ø�I˜d B¨Ñ-Ô-ˆ	Ø×Ò˜) T¨9Ô+>Ð?Ñ@Ô@Ð@Øˆr   c                 ó   ‡ ‡‡— ˆˆ ˆfd„}|S )zÏ
        Decorate an implementation of __getattr__ for type *ty* and
        the attribute *attr*.

        The decorated implementation will have the signature
        (context, builder, typ, val).
        c                 óJ   •— ‰                      | ‰‰‰j        t          ¦  «        S r   )r(   r   Ú_decorate_getattr©r   r$   r   r#   s    €€€r   r   z(Registry.lower_getattr.<locals>.decorate7   ó(   ø€ Ø×&Ò& t¨R°°t´}Ý'8ñ:ô :ð :r   r   ©r   r#   r$   r   s   ``` r   Úlower_getattrzRegistry.lower_getattr/   ó/   øøø€ ð	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð ˆr   c                 ó.   — |                       |d¦  «        S )a:  
        Decorate the fallback implementation of __getattr__ for type *ty*.

        The decorated implementation will have the signature
        (context, builder, typ, val, attr).  The implementation is
        called for attributes which haven't been explicitly registered
        with lower_getattr().
        N)r/   ©r   r#   s     r   Úlower_getattr_genericzRegistry.lower_getattr_generic<   ó   € ð ×!Ò! " dÑ+Ô+Ð+r   c                 ó   ‡ ‡‡— ˆˆ ˆfd„}|S )zÐ
        Decorate an implementation of __setattr__ for type *ty* and
        the attribute *attr*.

        The decorated implementation will have the signature
        (context, builder, sig, args).
        c                 óJ   •— ‰                      | ‰‰‰j        t          ¦  «        S r   )r(   r   Ú_decorate_setattrr,   s    €€€r   r   z(Registry.lower_setattr.<locals>.decorateO   r-   r   r   r.   s   ``` r   Úlower_setattrzRegistry.lower_setattrG   r0   r   c                 ó.   — |                       |d¦  «        S )a;  
        Decorate the fallback implementation of __setattr__ for type *ty*.

        The decorated implementation will have the signature
        (context, builder, sig, args, attr).  The implementation is
        called for attributes which haven't been explicitly registered
        with lower_setattr().
        N)r8   r2   s     r   Úlower_setattr_genericzRegistry.lower_setattr_genericT   r4   r   c                 ó   ‡ ‡‡— ˆˆ ˆfd„}|S )zÖ
        Decorate the implementation of implicit conversion between
        *fromty* and *toty*.

        The decorated implementation will have the signature
        (context, builder, fromty, toty, val).
        c                 óD   •— ‰j                              | ‰‰ff¦  «         | S r   )r   r   )r   Úfromtyr   Útotys    €€€r   r   z%Registry.lower_cast.<locals>.decorateg   s'   ø€ ØŒJ×Ò˜t f¨d ^Ð4Ñ5Ô5Ð5ØˆKr   r   )r   r=   r>   r   s   ``` r   Ú
lower_castzRegistry.lower_cast_   s/   øøø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð ˆr   c                 ó   ‡ ‡— ˆ ˆfd„}|S )z¸
        Decorate the implementation for creating a constant of type *ty*.

        The decorated implementation will have the signature
        (context, builder, ty, pyval).
        c                 óB   •— ‰j                              | ‰ff¦  «         | S r   )r   r   )r   r   r#   s    €€r   r   z)Registry.lower_constant.<locals>.decorates   s$   ø€ ØŒN×!Ò! 4¨"¨ -Ñ0Ô0Ð0ØˆKr   r   )r   r#   r   s   `` r   Úlower_constantzRegistry.lower_constantl   s)   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð ˆr   c                 ó   — d| j         › d�S )NzLowering Registry<ú>)r   ©r   s    r   Ú__repr__zRegistry.__repr__x   s   € Ø0 D¤IÐ0Ð0Ð0Ð0r   N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r(   r/   r3   r8   r:   r?   rB   rF   r   r   r   r
   r
      s¹   € € € € € ðð ðð ð ð ðð ð ðð ð ð
ð ð ð	,ð 	,ð 	,ðð ð ð	,ð 	,ð 	,ðð ð ð
ð 
ð 
ð1ð 1ð 1ð 1ð 1r   r
   c                   ó   — e Zd ZdZdZdS )ÚRegistryLoaderz6
    An incremental loader for a target registry.
    )r   r   r   r   r   N)rG   rH   rI   rJ   Úregistry_itemsr   r   r   rL   rL   |   s    € € € € € ðð ð Q€N€N€Nr   rL   Úbuiltin_registryc                 óD   ‡— | Š|�ˆfd„}nˆfd„}|f|_         ||_        |S )Nc                 ó    •—  ‰| |||¦  «        S r   r   ©ÚcontextÚbuilderÚtypÚvaluer$   r'   s        €r   Úresz_decorate_getattr.<locals>.res”   s   ø€ Ø�9˜W g¨s°EÑ:Ô:Ð:r   c                 ó"   •—  ‰| ||||¦  «        S r   r   rQ   s        €r   rV   z_decorate_getattr.<locals>.res—   s   ø€ Ø�9˜W g¨s°E¸4Ñ@Ô@Ð@r   )r"   r$   ©r   r#   r$   rV   r'   s       @r   r+   r+   �   sa   ø€ Ø€IàÐð	;ð 	;ð 	;ð 	;ð 	;ð 	;ð	Að 	Að 	Að 	Að 	Að �E€C„MØ€C„HØ€Jr   c                 óZ   ‡— | Š|�ˆfd„}nˆfd„}|t           j        f|_        ||_        |S )Nc                 ó    •—  ‰| |||¦  «        S r   r   ©rR   rS   ÚsigÚargsr$   r'   s        €r   rV   z_decorate_setattr.<locals>.res¢   s   ø€ Ø�9˜W g¨s°DÑ9Ô9Ð9r   c                 ó"   •—  ‰| ||||¦  «        S r   r   r[   s        €r   rV   z_decorate_setattr.<locals>.res¥   s   ø€ Ø�9˜W g¨s°D¸$Ñ?Ô?Ð?r   )r   ÚAnyr"   r$   rX   s       @r   r7   r7   ž   se   ø€ Ø€IàÐð	:ð 	:ð 	:ð 	:ð 	:ð 	:ð	@ð 	@ð 	@ð 	@ð 	@ð �œ�O€C„MØ€C„HØ€Jr   c                 óÀ  — t          |j        t          j        ¦  «        r¾|j        j        }|                      ||¦  «        }t          j        ||¦  «        }|                     | 	                    |j
        ¦  «        ¦  «        5  |                      |||¦  «        }|                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   |                     |¦  «        }|S r   )Ú
isinstanceÚreturn_typer   ÚOptionalÚtypeÚmake_optional_noner   Úalloca_once_valueÚif_thenÚnot_Úis_noneÚmake_optional_valueÚstoreÚload)	rR   rS   r\   ÚstatusÚretvalÚ
value_typeÚoptional_noneÚ	retvalptrÚoptional_values	            r   Úfix_returning_optionalrs   ­   s  € å�#”/¥5¤>Ñ2Ô2ð 	)Ø”_Ô)ˆ
Ø×2Ò2°7¸JÑGÔGˆÝÔ-¨g°}ÑEÔEˆ	Ø�_Š_˜WŸ\š\¨&¬.Ñ9Ô9Ñ:Ô:ð 	5ð 	5Ø$×8Ò8Ø˜ Vñô ˆNð �MŠM˜.¨)Ñ4Ô4Ð4ð		5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð
 —’˜iÑ(Ô(ˆØ€Ms   Â.B>Â>CÃCc                 óR   ‡ — ˆ fd„}‰ j         |_        t          |¦  «        |_        |S )zC
    A wrapper inserting code calling Numba-compiled *fndesc*.
    c                 óF  •— |                       |j        ‰¦  «        }| j                             ||‰j        ‰j        |¦  «        \  }}t          j        ||j        ¦  «        5  | j         	                    ||¦  «         d d d ¦  «         n# 1 swxY w Y   |j
        ‰j        k    sJ ‚t          | ||||¦  «        }|j        |                      |j
        ¦  «        k    r/d}t          |                     |j        |j
        ¦  «        ¦  «        ‚t!          | |‰j        |¦  «        S )Nz$function returned {0} but expect {1})Údeclare_functionÚmoduleÚ	call_convÚcall_functionÚrestypeÚargtypesr   Úif_unlikelyÚis_errorÚreturn_status_propagaterb   rs   rd   Úget_value_typeÚ	TypeErrorÚformatÚimpl_ret_new_ref)	rR   rS   r\   r]   r   rm   rn   ÚmsgÚfndescs	           €r   Úimpzuser_function.<locals>.impÀ   s]  ø€ Ø×'Ò'¨¬¸Ñ?Ô?ˆà Ô*×8Ò8Ø�T˜6œ>¨6¬?¸DñBô B‰ˆ�åÔ  ¨&¬/Ñ:Ô:ð 	Gð 	GØÔ×5Ò5°g¸vÑFÔFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	GàŒ &¤.Ò0Ð0Ð0Ð0å'¨°¸#¸vÀvÑNÔNˆàŒ;˜'×0Ò0°´ÑAÔAÒAÐAØ8ˆCÝ˜CŸJšJ v¤{°C´OÑDÔDÑEÔEÐEå ¨°&´.À&ÑIÔIÐIs   Á"B
Â
BÂB)r{   r"   ÚtupleÚlibs)r„   r‡   r…   s   `  r   Úuser_functionrˆ   »   s>   ø€ ð
Jð Jð Jð Jð Jð" ”O€C„MÝ�T‰{Œ{€C„HØ€Jr   c                 ó:   ‡ — ˆ fd„}t          |¦  «        |_        |S )zD
    A wrapper inserting code calling Numba-compiled *gendesc*.
    c                 ó˜   •— |                       |j        ‰¦  «        }| j                             ||‰j        ‰j        |¦  «        \  }}||fS r   )rv   rw   rx   ry   rz   r{   )rR   rS   r\   r]   r   rm   rn   Úgendescs          €r   r…   zuser_generator.<locals>.impÛ   sT   ø€ Ø×'Ò'¨¬¸Ñ@Ô@ˆà Ô*×8Ò8Ø�T˜7œ?¨GÔ,<¸dñDô D‰ˆ�ð �vˆ~Ðr   )r†   r‡   )r‹   r‡   r…   s   `  r   Úuser_generatorrŒ   Ö   s0   ø€ ð
ð ð ð ð õ �T‰{Œ{€C„HØ€Jr   c                 ó   ‡— ˆfd„}|S )zl
    Decorator a given class as implementing *iterator_type*
    (by providing an `iternext()` method).
    c                 ó–   •‡ ‡— ‰ j         Št          t          j        ¦  «        ˆ ˆfd„¦   «         } t	          d‰¦  «        |¦  «         ‰ S )Nc                 óB   •— |\  } ‰| ||¦  «        } ‰|| ||¦  «        S r   r   )	rR   rS   r\   r]   ÚresultrU   ÚiterobjÚclsÚiternexts	          €€r   Úiternext_wrapperz8iterator_impl.<locals>.wrapper.<locals>.iternext_wrapperñ   s3   ø€ à‰HˆUØ�c˜' 7¨EÑ2Ô2ˆGØ�8˜G W¨g°vÑ>Ô>Ð>r   r“   )r“   Úiternext_implÚRefTypeÚBORROWEDÚlower_builtin)r’   r”   r“   Úiterator_types   ` @€r   Úwrapperziterator_impl.<locals>.wrapperí   sb   øøø€ à”<ˆå	•wÔ'Ñ	(Ô	(ð	?ð 	?ð 	?ð 	?ð 	?ñ 
)Ô	(ð	?ð
 	1��j -Ñ0Ô0Ð1AÑBÔBÐBØˆ
r   r   )Úiterable_typer™   rš   s    ` r   Úiterator_implrœ   ç   s#   ø€ ðð ð ð ð ð €Nr   c                   ó<   — e Zd ZdZdZd„ Zd„ Zdd„Zd„ Zd„ Z	d	„ Z
d
S )Ú_IternextResultzb
    A result wrapper for iteration, passed by iternext_impl() into the
    wrapped function.
    ©Ú_contextÚ_builderÚ_pairobjc                 ó0   — || _         || _        || _        d S r   rŸ   )r   rR   rS   Úpairobjs       r   r   z_IternextResult.__init__  s   € ØˆŒØˆŒØˆŒˆˆr   c                 ód   — | j                              t          j        d¦  «        | j        _        dS )z1
        Mark the iterator as exhausted.
        FN©r    Úget_constantr   Úbooleanr¢   ÚsecondrE   s    r   Úset_exhaustedz_IternextResult.set_exhausted	  s(   € ð  $œ}×9Ò9½%¼-ÈÑOÔOˆŒÔÐÐr   Tc                 óp   — |dv r%| j                              t          j        |¦  «        }|| j        _        dS )z„
        Mark the iterator as valid according to *is_valid* (which must
        be either a Python boolean or a LLVM inst).
        )FTNr¦   )r   Úis_valids     r   Ú	set_validz_IternextResult.set_valid  s8   € ð
 �}Ð$Ð$Ø”}×1Ò1µ%´-ÀÑJÔJˆHØ'ˆŒÔÐÐr   c                 ó   — || j         _        dS )zP
        Mark the iterator as yielding the given *value* (a LLVM inst).
        N©r¢   Úfirst)r   rU   s     r   Úyield_z_IternextResult.yield_  s   € ð $ˆŒÔÐÐr   c                 ól   — | j                              | j        t          j        | j        j        ¦  «        S )z>
        Return whether the iterator is marked valid.
        )r    Úget_argument_valuer¡   r   r¨   r¢   r©   rE   s    r   r¬   z_IternextResult.is_valid  s2   € ð Œ}×/Ò/°´Ý05´Ø04´Ô0DñFô Fð 	Fr   c                 ó   — | j         j        S )z>
        Return the iterator's yielded value, if any.
        r¯   rE   s    r   Úyielded_valuez_IternextResult.yielded_value&  s   € ð Œ}Ô"Ð"r   N)T)rG   rH   rI   rJ   Ú	__slots__r   rª   r­   r±   r¬   rµ   r   r   r   rž   rž   ý   sŠ   € € € € € ðð ð 5€Ið ð  ð  ð
Pð Pð Pð(ð (ð (ð (ð$ð $ð $ðFð Fð Fð#ð #ð #ð #ð #r   rž   c                   ó$   — e Zd ZdZ	 dZ	 dZ	 dZdS )r–   z&
    Enumerate the reference type
    é   é   é   N)rG   rH   rI   rJ   ÚNEWr—   Ú	UNTRACKEDr   r   r   r–   r–   ,  s<   € € € € € ðð ðð €Cðð €Hðð €I€I€Ir   r–   c                 óV   ‡ — ‰ d„ t           D ¦   «         vrt          d¦  «        ‚ˆ fd„}|S )až  
    Wrap the given iternext() implementation so that it gets passed
    an _IternextResult() object easing the returning of the iternext()
    result pair.

    ref_type: a numba.targets.imputils.RefType value, the reference type used is
    that specified through the RefType enum.

    The wrapped function will be called with the following signature:
        (context, builder, sig, args, iternext_result)
    c                 ó   — g | ]}|‘ŒS r   r   )Ú.0Úxs     r   ú
<listcomp>z!iternext_impl.<locals>.<listcomp>I  s   € Ð+Ð+Ð+˜a˜Ð+Ð+Ð+r   z3ref_type must be an enum member of imputils.RefTypec                 ó   •‡ — ˆ ˆfd„}|S )Nc                 óh  •— |j         }|                      ||¦  «        } ‰| |||t          | ||¦  «        ¦  «         ‰t          j        k    rt
          }n?‰t          j        k    rt          }n'‰t          j        k    rt          }nt          d¦  «        ‚ || |||                     ¦   «         ¦  «        S )NzUnknown ref_type encountered)rb   Úmake_helperrž   r–   r»   r‚   r—   Úimpl_ret_borrowedr¼   Úimpl_ret_untrackedÚ
ValueErrorÚ	_getvalue)	rR   rS   r\   r]   Ú	pair_typer¤   Úimpl_retr   Úref_types	          €€r   rš   z-iternext_impl.<locals>.outer.<locals>.wrapperM  sÃ   ø€ ØœˆIØ×)Ò)¨'°9Ñ=Ô=ˆGØˆD�˜' 3¨Ý ¨°'Ñ:Ô:ñ<ô <ð <à�7œ;Ò&Ð&Ý+��Ø�WÔ-Ò-Ð-Ý,��Ø�WÔ.Ò.Ð.Ý-��å Ð!?Ñ@Ô@Ð@Ø�8˜G WØ$-¨w×/@Ò/@Ñ/BÔ/BñDô Dð Dr   r   )r   rš   rË   s   ` €r   Úouterziternext_impl.<locals>.outerL  s/   øø€ ð	Dð 	Dð 	Dð 	Dð 	Dð 	Dð ˆr   )r–   rÇ   )rË   rÌ   s   ` r   r•   r•   =  sN   ø€ ð Ð+Ð+¥7Ð+Ñ+Ô+Ð+Ð+ÝÐNÑOÔOÐOðð ð ð ð ð" €Lr   c                 ó|   — t          j        |j        |¦  «        }|                      d|¦  «        } |||f¦  «        S )z‡
    Call the `getiter()` implementation for the given *iterable_type*
    of value *val*, and return the corresponding LLVM inst.
    Úgetiter)r   r"   r™   Úget_function)rR   rS   r›   ÚvalÚgetiter_sigÚgetiter_impls         r   Úcall_getiterrÓ   `  sB   € õ
 Ô" =Ô#>ÀÑNÔN€KØ×'Ò'¨	°;Ñ?Ô?€LØˆ<˜ # Ñ(Ô(Ð(r   c                 ó  — |j         }t          j        |t          j        ¦  «        }t	          j        ||¦  «        }|                      d|¦  «        } |||f¦  «        }|                      |||¦  «        }t          | ||¦  «        S )z®
    Call the `iternext()` implementation for the given *iterator_type*
    of value *val*, and return a convenience _IternextResult() object
    reflecting the results.
    r“   )	Ú
yield_typer   ÚPairr¨   r   r"   rÏ   rÄ   rž   )	rR   rS   r™   rÐ   ÚitemtyrÉ   Úiternext_sigr•   r¤   s	            r   Úcall_iternextrÙ   j  s‚   € ð Ô%€FÝ”
˜6¥5¤=Ñ1Ô1€IÝÔ# I¨}Ñ=Ô=€LØ×(Ò(¨°\ÑBÔB€MØ
ˆ-˜ # Ñ
(Ô
(€CØ×!Ò! '¨9°cÑ:Ô:€GÝ˜7 G¨WÑ5Ô5Ð5r   c                 ó°   — 	 |                       t          t          j        t          j        |¦  «        ¦  «        } |||f¦  «        S # t          $ r Y dS w xY w)z^
    Call len() on the given value.  Return None if len() isn't defined on
    this type.
    N)rÏ   Úlenr   r"   r   ÚintpÚNotImplementedError)rR   rS   r#   rÐ   Úlen_impls        r   Úcall_lenrß   y  se   € ð
)Ø×'Ò'­­VÔ-=½e¼jÈ"Ñ-NÔ-NÑOÔOˆð ˆx˜ # Ñ(Ô(Ð(øõ ð ð ð Øˆtˆtðøøøs   ‚8A Á
AÁAÚ_ForIterLoop)rU   Údo_breakc              #   ó   ‡‡	K  — |j         }t          | ‰||¦  «        }‰                     d¦  «        }‰                     d¦  «        Š	ˆ	ˆfd„}‰                     |¦  «         ‰                     |¦  «        5  t          | ‰||¦  «        }‰                     ‰                     |                     ¦   «         ¦  «        d¬¦  «        5  ‰                     ‰	¦  «         ddd¦  «         n# 1 swxY w Y   t          | 
                    ¦   «         |¦  «        V — ‰                     |¦  «         ddd¦  «         n# 1 swxY w Y   ‰                     ‰	¦  «         | j        r| j                             ‰||¦  «         dS dS )zÆ
    Simulate a for loop on the given iterable.  Yields a namedtuple with
    the given members:
    - `value` is the value being yielded
    - `do_break` is a callable to early out of the loop
    zfor_iter.bodyzfor_iter.endc                  ó2   •— ‰                      ‰ ¦  «         d S r   )Úbranch)Úbb_endrS   s   €€r   rá   zfor_iter.<locals>.do_break˜  s   ø€ Ø�Š�vÑÔÐÐÐr   F)ÚlikelyN)r™   rÓ   Úappend_basic_blockrä   Ú
goto_blockrÙ   rg   rh   r¬   rà   rµ   Úposition_at_endÚ
enable_nrtÚnrtÚdecref)
rR   rS   r›   rÐ   r™   ÚitervalÚbb_bodyrá   rV   rå   s
    `       @r   Úfor_iterrï   Š  s	  øøè è € ð "Ô/€MÝ˜7 G¨]¸CÑ@Ô@€Gà×(Ò(¨Ñ9Ô9€GØ×'Ò'¨Ñ7Ô7€Fðð ð ð ð ð ð ‡N‚N�7ÑÔÐà	×	Ò	˜GÑ	$Ô	$ð  ð  Ý˜G W¨m¸WÑEÔEˆØ�_Š_˜WŸ\š\¨#¯,ª,©.¬.Ñ9Ô9À%ˆ_ÑHÔHð 	#ð 	#Ø�NŠN˜6Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#å˜3×,Ò,Ñ.Ô.°Ñ9Ô9Ð9Ð9Ð9Ø�Š�wÑÔÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð ×Ò˜FÑ#Ô#Ð#ØÔð <ØŒ×Ò˜7 M°7Ñ;Ô;Ð;Ð;Ð;ð<ð <s7   Á8AD9ÃC)ÃD9Ã)C-	Ã-D9Ã0C-	Ã1<D9Ä9D=Å D=c                 ó   — |S )z5
    The implementation returns a new reference.
    r   ©ÚctxrS   ÚrettyÚrets       r   r‚   r‚   ©  ó	   € ð €Jr   c                 óL   — | j         r| j                             |||¦  «         |S )zž
    The implementation returns a borrowed reference.
    This function automatically incref so that the implementation is
    returning a new reference.
    )rê   rë   Úincrefrñ   s       r   rÅ   rÅ   °  s+   € ð „~ð ,ØŒ�Š�w  sÑ+Ô+Ð+Ø€Jr   c                 ó   — |S )z.
    The return type is not a NRT object.
    r   rñ   s       r   rÆ   rÆ   »  rõ   r   Únumpyc              #   óŠ   K  — ddl m} | j        }|                     || ¦  «        | _        	 dV — || _        dS # || _        w xY w)z7
    Temporarily change the context's error model.
    r   )ÚcallconvN)Ú
numba.corerû   Úerror_modelÚcreate_error_model)rR   Ú
model_namerû   Úold_error_models       r   Úforce_error_modelr  Â  sj   è è € ð
 $Ð#Ð#Ð#Ð#Ð#àÔ)€OØ"×5Ò5°jÀ'ÑJÔJ€GÔð.Øˆˆˆà-ˆÔÐÐø˜oˆÔÐ-Ð-Ð-Ð-s	   ¬9 ¹	Ac                  ó    — t          d¦  «        ‚)zPA stub for use internally by Numba when a call is emitted
    on a TypeRef.
    z%This function should not be executed.)rÝ   )r]   Úkwargss     r   Únumba_typeref_ctorr  Ñ  s   € õ ÐEÑ
FÔ
FÐFr   r   )rù   )/rJ   ÚcollectionsÚ
contextlibÚinspectÚ	functoolsÚenumr   rü   r   r   r   r   Únumba.core.typing.templatesr   Úobjectr
   rL   rN   r    r˜   r/   r3   r8   r:   r?   rB   r+   r7   rs   rˆ   rŒ   rœ   rž   r–   r•   rÓ   rÙ   rß   Ú
namedtuplerà   Úcontextmanagerrï   r‚   rÅ   rÆ   r  r  r   r   r   ú<module>r     sÓ  ððð ð
 Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø :Ð :Ð :Ð :Ð :Ð :ði1ð i1ð i1ð i1ð i1ˆvñ i1ô i1ð i1ðXQð Qð Qð Qð QÐ'ñ Qô Qð Qð �8Ð.Ñ/Ô/Ð à Ô&€Ø Ô.€Ø(Ô>Ð Ø Ô.€Ø(Ô>Ð ØÔ(€
Ø!Ô0€ðð ð ðð ð ðð ð ðð ð ð6ð ð ð"ð ð ð,-#ð -#ð -#ð -#ð -#�fñ -#ô -#ð -#ð^ð ð ð ð ˆdñ ô ð ð" ð  ð  ð  ðF)ð )ð )ð6ð 6ð 6ð
)ð 
)ð 
)ð &ˆ{Ô% nØ&;ñ=ô =€ð Ôð<ð <ñ Ôð<ð<ð ð ðð ð ðð ð ð Ôð.ð .ð .ñ Ôð.ðGð Gð Gð Gð Gr   