§
    ƒÛgh ã                   óR  — d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
Z
d dlmZ d dlmZmZmZmZmZmZmZ ej        Zej        Zej        Zej        Z G d„ de¦  «        Z e¦   «         Z e¦   «         Z  e¦   «         Z!ej"        Z#e j"        Z$e!j"        Z% G d	„ d
 ed
d¦  «        ¦  «        Z& G d„ d edd¦  «        ¦  «        Z' G d„ d edd¦  «        ¦  «        Z( G d„ de¦  «        Z) G d„ de¦  «        Z* edd¦  «        Z+ G d„ de¦  «        Z, G d„ d¦  «        Z-dS )é    )Ú
namedtupleN)Úir)ÚConstant)Ú
_helperlib)ÚtypesÚutilsÚconfigÚloweringÚcgutilsÚimputilsÚ	serializec                   ó"   — e Zd Zd„ Zd„ Zdd„ZdS )Ú	_Registryc                 ó   — i | _         d S ©N)Ú	functions©Úselfs    úJ/granary/edev/quantum/lib/python3.11/site-packages/numba/core/pythonapi.pyÚ__init__z_Registry.__init__   s   € ØˆŒˆˆó    c                 óN   ‡ ‡— t          ‰t          j        ¦  «        sJ ‚ˆ ˆfd„}|S )Nc                 óR   •— ‰‰j         v rt          d‰›�¦  «        ‚| ‰j         ‰<   | S )Nzduplicate registration for )r   ÚKeyError)Úfuncr   Ú	typeclasss    €€r   Ú	decoratorz%_Registry.register.<locals>.decorator   s6   ø€ Ø˜DœNÐ*Ð*Ý�hÀ)À)ÐMÑNÔNÐNØ(,ˆDŒN˜9Ñ%ØˆKr   )Ú
issubclassr   ÚType)r   r   r   s   `` r   Úregisterz_Registry.register   sB   øø€ Ý˜)¥U¤ZÑ0Ô0Ð0Ð0Ð0ð	ð 	ð 	ð 	ð 	ð 	ð
 Ðr   Nc                 ó’   — t          |t          j        ¦  «        sJ ‚|j        D ]"}| j                             |¦  «        }|�|c S Œ#|S r   )r   r   r   Ú__mro__r   Úget)r   r   ÚdefaultÚclsr   s        r   Úlookupz_Registry.lookup$   sZ   € Ý˜)¥U¤ZÑ0Ô0Ð0Ð0Ð0ØÔ$ð 	ð 	ˆCØ”>×%Ò% cÑ*Ô*ˆDØÐØ���ð  àˆr   r   )Ú__name__Ú
__module__Ú__qualname__r   r    r&   © r   r   r   r      sF   € € € € € ðð ð ðð ð ðð ð ð ð ð r   r   c                   ó   — e Zd ZdZdZd„ ZdS )Ú_BoxContextz<
    The facilities required by boxing implementations.
    r*   c                 óD   — | j                              ||| j        ¦  «        S r   ©ÚpyapiÚfrom_native_valueÚenv_manager©r   ÚtypÚvals      r   Úboxz_BoxContext.box<   ó   € ØŒz×+Ò+¨C°°dÔ6FÑGÔGÐGr   N)r'   r(   r)   Ú__doc__Ú	__slots__r5   r*   r   r   r,   r,   5   s9   € € € € € ðð ð €IðHð Hð Hð Hð Hr   r,   )ÚcontextÚbuilderr/   r1   c                   ó   — e Zd ZdZdZd„ ZdS )Ú_UnboxContextz>
    The facilities required by unboxing implementations.
    r*   c                 ó8   — | j                              ||¦  «        S r   )r/   Úto_native_value)r   r3   Úobjs      r   Úunboxz_UnboxContext.unboxG   s   € ØŒz×)Ò)¨#¨sÑ3Ô3Ð3r   N)r'   r(   r)   r7   r8   r@   r*   r   r   r<   r<   @   s4   € € € € € ðð ð €Ið4ð 4ð 4ð 4ð 4r   r<   )r9   r:   r/   c                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )Ú_ReflectContextz@
    The facilities required by reflection implementations.
    r*   c                 óZ   — | j                              | j        t          j        ¦  «         d S r   )r:   ÚstoreÚis_errorr   Útrue_bitr   s    r   Ú	set_errorz_ReflectContext.set_errorT   s%   € ØŒ×Ò˜4œ=­'Ô*:Ñ;Ô;Ð;Ð;Ð;r   c                 óD   — | j                              ||| j        ¦  «        S r   r.   r2   s      r   r5   z_ReflectContext.boxW   r6   r   c                 óD   — | j                              ||| j        ¦  «        S r   )r/   Úreflect_native_valuer1   r2   s      r   Úreflectz_ReflectContext.reflectZ   s   € ØŒz×.Ò.¨s°C¸Ô9IÑJÔJÐJr   N)r'   r(   r)   r7   r8   rG   r5   rK   r*   r   r   rB   rB   K   sZ   € € € € € ðð ð €Ið<ð <ð <ðHð Hð HðKð Kð Kð Kð Kr   rB   )r9   r:   r/   r1   rE   c                   ó   — e Zd ZdZdd„ZdS )ÚNativeValuez™
    Encapsulate the result of converting a Python object to a native value,
    recording whether the conversion was successful and how to cleanup.
    Nc                 óL   — || _         |�|nt          j        | _        || _        d S r   )Úvaluer   Ú	false_bitrE   Úcleanup)r   rO   rE   rQ   s       r   r   zNativeValue.__init__d   s'   € ØˆŒ
Ø$,Ð$8˜˜½gÔ>OˆŒØˆŒˆˆr   ©NN)r'   r(   r)   r7   r   r*   r   r   rM   rM   ^   s2   € € € € € ðð ð
ð ð ð ð ð r   rM   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚEnvironmentManagerc                 óv   — t          |t          j        ¦  «        sJ ‚|| _        || _        || _        || _        d S r   )Ú
isinstancer
   ÚEnvironmentr/   ÚenvÚenv_bodyÚenv_ptr)r   r/   rX   rY   rZ   s        r   r   zEnvironmentManager.__init__l   s;   € Ý˜#�xÔ3Ñ4Ô4Ð4Ð4Ð4ØˆŒ
ØˆŒØ ˆŒØˆŒˆˆr   c                 ó  — t          |t          ¦  «        rt          j        |¦  «        }t	          | j        j        ¦  «        D ]\  }}||u r n9Œt          | j        j        ¦  «        }| j        j                             |¦  «         |S )zF
        Add a constant to the environment, return its index.
        )	rV   ÚstrÚsysÚinternÚ	enumeraterX   ÚconstsÚlenÚappend)r   ÚconstÚindexr4   s       r   Ú	add_constzEnvironmentManager.add_consts   s‡   € õ
 �e�SÑ!Ô!ð 	&Ý”J˜uÑ%Ô%ˆEÝ# D¤H¤OÑ4Ô4ð 	*ð 	*‰JˆE�3Ø�eˆ|ˆ|Ø�ð õ ˜œœÑ(Ô(ˆEØŒHŒO×"Ò" 5Ñ)Ô)Ð)Øˆr   c                 ób  — |t          | j        j        ¦  «        k     sJ ‚| j        j        }| j        j        }t          j        || j        j        d¬¦  «        }| 	                    t          j
        ||¦  «        ¦  «        5 \  }}|5  | j                             ||¦  «        }|                     ||¦  «         ddd¦  «         n# 1 swxY w Y   |5  | j                             dd¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |                     |¦  «        S )zå
        Look up constant number *index* inside the environment body.
        A borrowed reference is returned.

        The returned LLVM value may have NULL value at runtime which indicates
        an error at runtime.
        T©ÚzfillNÚPyExc_RuntimeErrorz$`env.consts` is NULL in `read_const`)ra   rX   r`   r/   r:   rY   r   Úalloca_onceÚpyobjÚif_elseÚis_not_nullÚlist_getitemrD   Úerr_set_stringÚload)r   rd   r:   r`   ÚretÚbr_not_nullÚbr_nullÚgetitems           r   Ú
read_constzEnvironmentManager.read_const‚   sà  € ð •s˜4œ8œ?Ñ+Ô+Ò+Ð+Ð+Ð+à”*Ô$ˆØ”Ô%ˆÝÔ! '¨4¬:Ô+;À4ÐHÑHÔHˆØ�_Š_�WÔ0°¸&ÑAÔAÑBÔBð 	Ù&�˜gØð ,ð ,Øœ*×1Ò1°&¸%Ñ@Ô@�Ø—’˜g sÑ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ð ð ð ”
×)Ò)Ø(Ø:ñô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð �|Š|˜CÑ Ô Ð sZ   ÂDÂ2CÂ9DÃC		Ã	DÃC		ÃDÃC:Ã.DÃ:C>	Ã>DÄC>	ÄDÄDÄDN)r'   r(   r)   r   re   ru   r*   r   r   rT   rT   j   sA   € € € € € ðð ð ðð ð ð!ð !ð !ð !ð !r   rT   Ú_IteratorLoop)rO   Údo_breakc                   ó–  — e Zd Zd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„ Zd³d„Zd„ Zd„ Zd„ Zd„ Zd„ Zej        d´d„¦   «         Zd„ Zd„ Zd„ Zd„ 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*„ Z*d+„ Z+d,„ Z,d-„ Z-d.„ Z.d/„ Z/d0„ Z0d1„ Z1d2„ Z2d´d3„Z3d´d4„Z4d´d5„Z5d´d6„Z6d´d7„Z7d´d8„Z8d´d9„Z9d´d:„Z:d´d;„Z;d´d<„Z<d´d=„Z=d´d>„Z>d´d?„Z?d´d@„Z@dA„ ZAdB„ ZBdC„ ZCdD„ ZDdE„ ZEdF„ ZFdG„ ZGdH„ ZHdI„ ZIdJ„ ZJdK„ ZKdL„ ZLdM„ ZMdN„ ZNdO„ ZOdP„ ZPdQ„ ZQdR„ ZRdS„ ZSdT„ ZTdU„ ZUdV„ ZVdW„ ZWdX„ ZXdY„ ZYd³dZ„ZZd[„ Z[d\„ Z\d]„ Z]d^„ Z^d_„ Z_ej        d`„ ¦   «         Z`da„ Zadb„ Zbdc„ Zcdd„ Zdde„ Zedf„ Zfdg„ Zgdh„ Zhdi„ Zid¶dk„Zjd·dl„Zkdm„ Zldn„ Zmdo„ Zndp„ Zodq„ Zpdr„ Zqds„ Zrdt„ Zsdu„ Ztdv„ Zudw„ Zvdx„ Zwdy„ Zxdz„ Zyd{„ Zzd|„ Z{d}„ Z|d~„ Z}d„ Z~d€„ Zd�„ Z€d‚„ Z�dƒ„ Z‚d„„ Zƒd…„ Z„d†„ Z…d‡„ Z†dˆ„ Z‡d‰„ ZˆdŠ„ Z‰d‹„ ZŠdŒ„ Z‹d�„ ZŒdŽ„ Z�d�„ ZŽd�„ Z�d‘„ Z�d’„ Z‘d“„ Z’ej        d”„ ¦   «         Z“d•„ Z”d–„ Z•d—„ Z–d˜„ Z—d™„ Z˜dš„ Z™d›„ Zšdœ„ Z›d�„ Zœdž„ Z�dŸ„ Zžd „ ZŸd³d¡„Z d³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®„ Z­d¯„ Z®d°„ Z¯d±„ Z°dS )¸Ú	PythonAPIz^
    Code generation facilities to call into the CPython C API (and related
    helpers).
    c                 óÆ  — || _         || _        |j        j        j        | _        	 | j        j         n# t          $ r i | j        _        Y nw xY w| j                              t          j	        ¦  «        | _
        | j
                             ¦   «         | _        t          j        t          j        d¦  «        ¦  «        | _        t          j        t#          j        t"          j        ¦  «        dz  ¦  «        | _        | j        | _        t          j        t#          j        t"          j        ¦  «        dz  ¦  «        | _        | j        | _        t          j        ¦   «         | _        | j                              t          j        ¦  «        | _        t          j        t          j        d¦  «        ¦  «        | _        t          j        t>          j         dz  ¦  «        | _!        t          j"        t          j        d¦  «        t>          j#        ¦  «        | _$        | j        | _%        t>          j&        | _&        t>          j'        | _'        t>          j(        | _(        t>          j)        | _)        dS )zL
        Note: Maybe called multiple times when lowering a function
        é   N)*r9   r:   Úbasic_blockÚfunctionÚmoduleÚ_PythonAPI__serializedÚAttributeErrorÚget_argument_typer   Úpyobjectrk   Ú
as_pointerÚpyobjptrr   ÚPointerTypeÚIntTypeÚvoidptrÚctypesÚsizeofÚc_longÚlongÚulongÚc_ulonglongÚlonglongÚ	ulonglongÚ
DoubleTypeÚdoubleÚget_value_typeÚintpÚ
py_ssize_tÚcstringr   Úpy_gil_state_sizeÚ	gil_stateÚ	ArrayTypeÚpy_buffer_sizeÚpy_buffer_tÚ	py_hash_tÚpy_unicode_1byte_kindÚpy_unicode_2byte_kindÚpy_unicode_4byte_kindÚpy_unicode_wchar_kind)r   r9   r:   s      r   r   zPythonAPI.__init__§   s²  € ð ˆŒØˆŒàÔ)Ô2Ô9ˆŒð	*ØŒKÔ$Ð$Ð$øÝð 	*ð 	*ð 	*Ø')ˆDŒKÔ$Ð$Ð$ð	*øøøð ”\×3Ò3µE´NÑCÔCˆŒ
Øœ
×-Ò-Ñ/Ô/ˆŒÝ”~¥b¤j°¡m¤mÑ4Ô4ˆŒÝ”J�vœ}­V¬]Ñ;Ô;¸aÑ?Ñ@Ô@ˆŒ	Ø”YˆŒ
Ýœ
¥6¤=µÔ1CÑ#DÔ#DÀqÑ#HÑIÔIˆŒØœˆŒÝ”m‘o”oˆŒØœ,×5Ò5µe´jÑAÔAˆŒÝ”~¥b¤j°¡m¤mÑ4Ô4ˆŒÝœ¥JÔ$@À1Ñ$DÑEÔEˆŒÝœ<­¬
°1©¬µzÔ7PÑQÔQˆÔØœˆŒÝ%/Ô%EˆÔ"Ý%/Ô%EˆÔ"Ý%/Ô%EˆÔ"Ý%/Ô%EˆÔ"Ð"Ð"s   ¦3 ³AÁAc                 ó&   — t          | |||¦  «        S r   )rT   )r   rX   rY   rZ   s       r   Úget_env_managerzPythonAPI.get_env_managerÈ   s   € Ý! $¨¨X°wÑ?Ô?Ð?r   FÚ c                 óÞ  — t          j        | j        |¦  «        }t          j        | j        |¦  «        5  |rn| j        j        j        j        }|j        | j        k    sJ ‚|  	                    dd|› �¦  «         | j         
                    |                      ¦   «         ¦  «         n/| j        j                             | j        t          d|› �f¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z;Emits LLVM code to ensure the `envptr` is not NULL
        ri   zmissing Environment: N)r   Úis_nullr:   Úif_unlikelyr}   ÚtypeÚpointeeÚreturn_typerk   ro   rq   Úget_null_objectr9   Ú	call_convÚreturn_user_excÚRuntimeError)r   ÚenvptrÚreturn_pyobjectÚ	debug_msgr¤   Úfntys         r   Úemit_environment_sentryz!PythonAPI.emit_environment_sentryË   s=  € õ ”/ $¤,°Ñ7Ô7ˆÝÔ  ¤¨wÑ7Ô7ð 	ð 	Øð Ø”|Ô,Ô1Ô9�ØÔ'¨4¬:Ò5Ð5Ð5Ð5Ø×#Ò#Ø(Ð*MÀ)Ð*MÐ*Mñô ð ð ”× Ò  ×!5Ò!5Ñ!7Ô!7Ñ8Ô8Ð8Ð8à”Ô&×6Ò6Ø”L¥,Ø8¨YÐ8Ð8Ð:ñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   µB C"Ã"C&Ã)C&c                 óÄ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «         d S )NÚ	Py_IncRef©Úname©r   ÚFunctionTypeÚVoidTyperk   Ú_get_functionr:   Úcall©r   r?   r°   Úfns       r   ÚincrefzPythonAPI.increfä   óU   € ÝŒ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò ¨;ÐÑ7Ô7ˆØŒ×Ò˜"˜s˜eÑ$Ô$Ð$Ð$Ð$r   c                 óÄ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «         d S )NÚ	Py_DecRefr´   r¶   r»   s       r   ÚdecrefzPythonAPI.decrefé   r¾   r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚnumba_py_typer´   ©r   r·   rk   r¹   r:   rº   r»   s       r   Úget_typezPythonAPI.get_typeî   sK   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 ót  — t          j        t          j        d¦  «        ¦  «        }t          j        |¦  «        }| j        | j        ||g}t          j        t          j        d¦  «        |d¬¦  «        }	|                      |	d¬¦  «        }
| j                             |
||||gt          |¦  «        z   ¦  «        S )Nr{   é    T©Úvar_argÚPyArg_ParseTupleAndKeywordsr´   ©	r   r…   r†   rk   r·   r¹   r:   rº   Úlist)r   ÚargsÚkwsÚfmtÚkeywordsÚobjsÚcharptrÚ
charptraryÚargtypesr°   r¼   s              r   Úparse_tuple_and_keywordsz"PythonAPI.parse_tuple_and_keywords÷   s�   € Ý”.¥¤¨A¡¤Ñ/Ô/ˆÝ”^ GÑ,Ô,ˆ
Ø”J ¤
¨G°ZÐ@ˆÝŒ�rœz¨"™~œ~¨xÀÐFÑFÔFˆØ×Ò Ð+HÐÑIÔIˆØŒ|× Ò   d¨C°°hÐ%?Å$ÀtÁ*Ä*Ñ%LÑMÔMÐMr   c                 ó:  — t          j        t          j        d¦  «        ¦  «        }| j        |g}t          j        t          j        d¦  «        |d¬¦  «        }|                      |d¬¦  «        }| j                             |||gt          |¦  «        z   ¦  «        S )Nr{   rÇ   TrÈ   ÚPyArg_ParseTupler´   rË   )r   rÍ   rÏ   rÑ   rÒ   rÔ   r°   r¼   s           r   Úparse_tuplezPythonAPI.parse_tupleÿ   sƒ   € Ý”.¥¤¨A¡¤Ñ/Ô/ˆØ”J Ð(ˆÝŒ�rœz¨"™~œ~¨xÀÐFÑFÔFˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   d¨C [µ4¸±:´:Ñ%=Ñ>Ô>Ð>r   c                 óR  — t          j        t          j        d¦  «        ¦  «        }| j        || j        | j        g}t          j        t          j        d¦  «        |d¬¦  «        }|                      |d¬¦  «        }	t          | j        t          |¦  «        ¦  «        }t          | j        t          |¦  «        ¦  «        }t          |t          ¦  «        r%| j                             | j        j        |¦  «        }| j                             |	||||gt!          |¦  «        z   ¦  «        S )Nr{   rÇ   TrÈ   ÚPyArg_UnpackTupler´   )r   r…   r†   rk   r”   r·   r¹   r   ÚintrV   r\   r9   Úinsert_const_stringr:   r~   rº   rÌ   )
r   rÍ   rµ   Ún_minÚn_maxrÑ   rÒ   rÔ   r°   r¼   s
             r   Úunpack_tuplezPythonAPI.unpack_tuple  sí   € Ý”.¥¤¨A¡¤Ñ/Ô/ˆØ”J ¨¬¸$¼/ÐJˆÝŒ�rœz¨"™~œ~¨xÀÐFÑFÔFˆØ×Ò Ð+>ÐÑ?Ô?ˆÝ˜œ­#¨e©*¬*Ñ5Ô5ˆÝ˜œ­#¨e©*¬*Ñ5Ô5ˆÝ�d�CÑ Ô ð 	OØ”<×3Ò3°D´LÔ4GÈÑNÔNˆDØŒ|× Ò   d¨D°%¸Ð%?Å$ÀtÁ*Ä*Ñ%LÑMÔMÐMr   c                 óš   — t          j        | j        d¦  «        }|                      |d¬¦  «        }| j                             |d¦  «        S )Nr*   ÚPyErr_Occurredr´   rÄ   ©r   r°   r¼   s      r   Úerr_occurredzPythonAPI.err_occurred  sF   € ÝŒ˜tœz¨2Ñ.Ô.ˆØ×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   RÑ(Ô(Ð(r   c                 ó²   — t          j        t          j        ¦   «         d¦  «        }|                      |d¬¦  «        }| j                             |d¦  «        S )Nr*   ÚPyErr_Clearr´   )r   r·   r¸   r¹   r:   rº   râ   s      r   Ú	err_clearzPythonAPI.err_clear  sI   € ÝŒ�rœ{™}œ}¨bÑ1Ô1ˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   RÑ(Ô(Ð(r   c                 óŒ  — t          j        t          j        ¦   «         | j        | j        g¦  «        }|                      |d¬¦  «        }t          |t          ¦  «        r|                      |¦  «        }t          |t          ¦  «        r | j	         
                    | j        |¦  «        }| j                             |||f¦  «        S )NÚPyErr_SetStringr´   )r   r·   r¸   rk   r•   r¹   rV   r\   Úget_c_objectr9   rÜ   r~   r:   rº   )r   ÚexctypeÚmsgr°   r¼   s        r   ro   zPythonAPI.err_set_string  s¨   € ÝŒ�rœ{™}œ}¨t¬z¸4¼<Ð.HÑIÔIˆØ×Ò Ð+<ÐÑ=Ô=ˆÝ�g�sÑ#Ô#ð 	1Ø×'Ò'¨Ñ0Ô0ˆGÝ�c�3ÑÔð 	EØ”,×2Ò2°4´;ÀÑDÔDˆCØŒ|× Ò   g¨s ^Ñ4Ô4Ð4r   c                 ó°  — t          j        t          j        ¦   «         | j        | j        gd¬¦  «        }|                      |d¬¦  «        }t          |t          ¦  «        r|                      |¦  «        }t          |t          ¦  «        r | j	         
                    | j        |¦  «        }| j                             |||ft          |¦  «        z   ¦  «        S )NTrÈ   ÚPyErr_Formatr´   )r   r·   r¸   rk   r•   r¹   rV   r\   ré   r9   rÜ   r~   r:   rº   Útuple)r   rê   rë   Úformat_argsr°   r¼   s         r   Ú
err_formatzPythonAPI.err_format(  sº   € ÝŒ�rœ{™}œ}¨t¬z¸4¼<Ð.HÐRVÐWÑWÔWˆØ×Ò ¨>ÐÑ:Ô:ˆÝ�g�sÑ#Ô#ð 	1Ø×'Ò'¨Ñ0Ô0ˆGÝ�c�3ÑÔð 	EØ”,×2Ò2°4´;ÀÑDÔDˆCØŒ|× Ò   g¨s ^µe¸KÑ6HÔ6HÑ%HÑIÔIÐIr   Nc                 óì   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }|€|                      ¦   «         }| j                             ||f¦  «        S )z˜
        Raise an arbitrary exception (type or value or (type, args)
        or None - if reraising).  A reference to the argument is consumed.
        Únumba_do_raiser´   )r   r·   r¸   rk   r¹   Ú	make_noner:   rº   )r   Úexcr°   r¼   s       r   Úraise_objectzPythonAPI.raise_object1  sf   € õ
 Œ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò Ð+;ÐÑ<Ô<ˆØˆ;Ø—.’.Ñ"Ô"ˆCØŒ|× Ò   c VÑ,Ô,Ð,r   c                 ó"  — t          j        t          j        ¦   «         | j        | j        g¦  «        }|                      |d¬¦  «        }t          |t          ¦  «        r|                      |¦  «        }| j         	                    |||f¦  «        S )NÚPyErr_SetObjectr´   ©
r   r·   r¸   rk   r¹   rV   r\   ré   r:   rº   )r   rê   Úexcvalr°   r¼   s        r   Úerr_set_objectzPythonAPI.err_set_object<  s}   € ÝŒ�rœ{™}œ}¨t¬z¸4¼:Ð.FÑGÔGˆØ×Ò Ð+<ÐÑ=Ô=ˆÝ�g�sÑ#Ô#ð 	1Ø×'Ò'¨Ñ0Ô0ˆGØŒ|× Ò   g¨vÐ%6Ñ7Ô7Ð7r   c                 ó  — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }t          |t          ¦  «        r|                      |¦  «        }| j         	                    ||f¦  «        S )NÚPyErr_SetNoner´   rø   )r   rê   r°   r¼   s       r   Úerr_set_nonezPythonAPI.err_set_noneC  st   € ÝŒ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò ¨?ÐÑ;Ô;ˆÝ�g�sÑ#Ô#ð 	1Ø×'Ò'¨Ñ0Ô0ˆGØŒ|× Ò   g ZÑ0Ô0Ð0r   c                 óÀ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚPyErr_WriteUnraisabler´   r¶   r»   s       r   Úerr_write_unraisablezPythonAPI.err_write_unraisableJ  sP   € ÝŒ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò Ð+BÐÑCÔCˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 óÊ   — t          j        t          j        ¦   «         | j        gdz  ¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        S )Né   ÚPyErr_Fetchr´   )r   r·   r¸   r„   r¹   r:   rº   )r   ÚptyÚpvalÚptbr°   r¼   s         r   Ú	err_fetchzPythonAPI.err_fetchO  sY   € ÝŒ�rœ{™}œ}¨t¬}¨oÀÑ.AÑBÔBˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   c¨4°Ð%5Ñ6Ô6Ð6r   c                 óÊ   — t          j        t          j        ¦   «         | j        gdz  ¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        S )Nr  ÚPyErr_Restorer´   r¶   )r   Útyr4   Útbr°   r¼   s         r   Úerr_restorezPythonAPI.err_restoreT  sX   € ÝŒ�rœ{™}œ}¨t¬z¨l¸QÑ.>Ñ?Ô?ˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   b¨#¨r ]Ñ3Ô3Ð3r   c              #   ó.  ‡ K  — ˆ fd„t          d¦  «        D ¦   «         \  }}}‰                      |||¦  «         dV — ‰ j                             |¦  «        }‰ j                             |¦  «        }‰ j                             |¦  «        }|rðt	          j        ‰ j        ‰                      ¦   «         ¦  «        }‰ j                             |d¬¦  «        5 \  }	}
|	5  ‰                      |¦  «         ‰                      |¦  «         ‰                      |¦  «         ddd¦  «         n# 1 swxY w Y   |
5  ‰  	                    |||¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS ‰  	                    |||¦  «         dS )a  
        Temporarily push the current error indicator while the code
        block is executed.  If *keep_new* is True and the code block
        raises a new error, the new error is kept, otherwise the old
        error indicator is restored at the end of the block.
        c                 óN   •— g | ]!}t          j        ‰j        ‰j        ¦  «        ‘Œ"S r*   )r   rj   r:   rk   )Ú.0Úir   s     €r   ú
<listcomp>z&PythonAPI.err_push.<locals>.<listcomp>a  s:   ø€ ð -ð -ð -Øõ "Ô-¨d¬l¸D¼JÑGÔGð -ð -ð -r   r  NF©Úlikely)
Úranger  r:   rp   r   rm   rã   rl   rÁ   r  )r   Úkeep_newr  r  r  r
  r4   r  Ú	new_errorÚif_errorÚif_oks   `          r   Úerr_pushzPythonAPI.err_pushY  sb  øè è € ð-ð -ð -ð -Ý#(¨¡8¤8ð-ñ -ô -‰ˆˆT�3à�Š�s˜D #Ñ&Ô&Ð&ØˆˆˆØŒ\×Ò˜sÑ#Ô#ˆØŒl×Ò Ñ%Ô%ˆØŒ\×Ò˜sÑ#Ô#ˆØð 	*ÝÔ+¨D¬L¸$×:KÒ:KÑ:MÔ:MÑNÔNˆIØ”×%Ò% i¸Ð%Ñ>Ô>ð 2ÑBSÀ8ÈUØð $ð $à—K’K ‘O”O�OØ—K’K Ñ$Ô$Ð$Ø—K’K ‘O”O�Oð	$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð
 ð 2ð 2à×$Ò$ R¨¨bÑ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2ð ×Ò˜R  bÑ)Ô)Ð)Ð)Ð)s[   ÃE1ÃA D(ÄE1Ä(D,	Ä,E1Ä/D,	Ä0E1Ä5EÅE1ÅE	ÅE1Å E	Å!E1Å1E5Å8E5c                 ó\   — | j                              | j        | j        j        |d¬¦  «        S )zÌ
        Get a Python object through its C-accessible *name*
        (e.g. "PyExc_ValueError").  The underlying variable must be
        a `PyObject *`, and the value of that pointer is returned.
        T)Ú	dllimport)r9   Úget_c_valuer:   rk   r§   )r   rµ   s     r   ré   zPythonAPI.get_c_objectv  s3   € ð Œ|×'Ò'¨¬°d´jÔ6HÈ$Ø26ð (ñ 8ô 8ð 	8r   c                 ó|   — d|z  }| j                              | j        |¦  «        }|                      d|¦  «         d S )Nzglobal name '%s' is not definedÚPyExc_NameError©r9   rÜ   r~   ro   ©r   rµ   rë   Úcstrs       r   Úraise_missing_global_errorz$PythonAPI.raise_missing_global_error�  sB   € Ø/°$Ñ6ˆØŒ|×/Ò/°´¸SÑAÔAˆØ×ÒÐ-¨tÑ4Ô4Ð4Ð4Ð4r   c                 ó|   — d|z  }| j                              | j        |¦  «        }|                      d|¦  «         d S )Nzname '%s' is not definedr  r  r   s       r   Úraise_missing_name_errorz"PythonAPI.raise_missing_name_error†  sB   € Ø(¨4Ñ/ˆØŒ|×/Ò/°´¸SÑAÔAˆØ×ÒÐ-¨tÑ4Ô4Ð4Ð4Ð4r   c                 ó8  — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }|j                             d¦  «         | j                             | j	        |¦  «        }| j
                             ||f¦  «         d S )NÚPy_FatalErrorr´   Únoreturn)r   r·   r¸   r•   r¹   Ú
attributesÚaddr9   rÜ   r~   r:   rº   )r   rë   r°   r¼   r!  s        r   Úfatal_errorzPythonAPI.fatal_error‹  s„   € ÝŒ�rœ{™}œ}¨t¬|¨nÑ=Ô=ˆØ×Ò ¨?ÐÑ;Ô;ˆØ
Œ×Ò˜*Ñ%Ô%Ð%ØŒ|×/Ò/°´¸SÑAÔAˆØŒ×Ò˜"˜t˜gÑ&Ô&Ð&Ð&Ð&r   c                 óö   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             | j        |¦  «        }| j         	                    |||g¦  «        S )úFLookup name inside dict

        Returns a borrowed reference
        ÚPyDict_GetItemStringr´   )
r   r·   rk   r•   r¹   r9   rÜ   r~   r:   rº   )r   Údicrµ   r°   r¼   r!  s         r   Údict_getitem_stringzPythonAPI.dict_getitem_string–  sn   € õ
 Œ˜tœz¨D¬J¸¼Ð+EÑFÔFˆØ×Ò Ð+AÐÑBÔBˆØŒ|×/Ò/°´¸TÑBÔBˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   c                 ó¶   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )r,  ÚPyDict_GetItemr´   rÄ   )r   r.  rµ   r°   r¼   s        r   Údict_getitemzPythonAPI.dict_getitem   sU   € õ
 Œ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   r   c           	      óŒ  — |dk    rLt          j        | j        d¦  «        }|                      |d¬¦  «        }| j                             |d¦  «        S t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |t          | j        t          |¦  «        ¦  «        g¦  «        S )Nr   r*   Ú
PyDict_Newr´   Ú_PyDict_NewPresized)	r   r·   rk   r¹   r:   rº   r”   r   rÛ   )r   Úpresizer°   r¼   s       r   Údict_newzPythonAPI.dict_new©  s¶   € Ø�aŠ<ˆ<Ý”? 4¤:¨rÑ2Ô2ˆDØ×#Ò# D¨|Ð#Ñ<Ô<ˆBØ”<×$Ò$ R¨Ñ,Ô,Ð,å”? 4¤:°´Ð/@ÑAÔAˆDØ×#Ò# DÐ/DÐ#ÑEÔEˆBØ”<×$Ò$ RÝ&.¨t¬ÅÀGÁÄÑ&MÔ&MÐ%NñPô Pð Pr   c                 óÞ   — t          j        t          j        d¦  «        | j        | j        | j        f¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        S )NrÇ   ÚPyDict_SetItemr´   ©r   r·   r†   rk   r¹   r:   rº   )r   ÚdictobjÚnameobjÚvalobjr°   r¼   s         r   Údict_setitemzPythonAPI.dict_setitem´  sg   € ÝŒ�rœz¨"™~œ~°´
¸D¼JØ04´
ð0<ñ =ô =ˆà×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   g¨w¸Ð%?Ñ@Ô@Ð@r   c                 ó  — t          j        t          j        d¦  «        | j        | j        | j        f¦  «        }|                      |d¬¦  «        }| j                             | j        |¦  «        }| j	         
                    ||||f¦  «        S )NrÇ   ÚPyDict_SetItemStringr´   )r   r·   r†   rk   r•   r¹   r9   rÜ   r~   r:   rº   )r   r;  rµ   r=  r°   r¼   r!  s          r   Údict_setitem_stringzPythonAPI.dict_setitem_stringº  s€   € ÝŒ�rœz¨"™~œ~°´
¸D¼LØ04´
ð0<ñ =ô =ˆà×Ò Ð+AÐÑBÔBˆØŒ|×/Ò/°´¸TÑBÔBˆØŒ|× Ò   g¨t°VÐ%<Ñ=Ô=Ð=r   c                 óÈ   — |                       ¦   «         }|                      |¦  «        5  |D ]\  }}|                      |||¦  «         Œ	 ddd¦  «         n# 1 swxY w Y   |S )zb
        Args
        -----
        keyvalues: iterable of (str, llvm.Value of PyObject*)
        N)r7  Úif_object_okrA  )r   Ú	keyvaluesr;  ÚkÚvs        r   Ú	dict_packzPythonAPI.dict_packÁ  s´   € ð —-’-‘/”/ˆØ×Ò˜wÑ'Ô'ð 	8ð 	8Ø!ð 8ð 8‘��1Ø×(Ò(¨°!°QÑ7Ô7Ð7Ð7ð8ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð ˆs   ª AÁAÁAc                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyFloat_FromDoubler´   )r   r·   rk   r‘   r¹   r:   rº   )r   Úfvalr°   r¼   s       r   Úfloat_from_doublezPythonAPI.float_from_doubleÑ  sL   € ÝŒ˜tœz¨D¬K¨=Ñ9Ô9ˆØ×Ò Ð+?ÐÑ@Ô@ˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 óà   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }|                      d¦  «        }| j                             |||g¦  «        S )NÚPyNumber_AsSsize_tr´   ÚPyExc_OverflowError)r   r·   r”   rk   r¹   ré   r:   rº   )r   Únumobjr°   r¼   Ú	exc_classs        r   Únumber_as_ssize_tzPythonAPI.number_as_ssize_tÖ  sh   € ÝŒ˜tœ°´¸T¼ZÐ0HÑIÔIˆØ×Ò Ð+?ÐÑ@Ô@ˆà×%Ò%Ð&;Ñ<Ô<ˆ	ØŒ|× Ò   f¨iÐ%8Ñ9Ô9Ð9r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyNumber_Longr´   rÄ   ©r   rO  r°   r¼   s       r   Únumber_longzPythonAPI.number_longÝ  sK   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyLong_AsUnsignedLongLongr´   ©r   r·   r�   rk   r¹   r:   rº   rT  s       r   Úlong_as_ulonglongzPythonAPI.long_as_ulonglongâ  sL   € ÝŒ˜tœ~°´
¨|Ñ<Ô<ˆØ×Ò Ð+FÐÑGÔGˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyLong_AsLongLongr´   rX  rT  s       r   Úlong_as_longlongzPythonAPI.long_as_longlongç  sL   € ÝŒ˜tœ~°´
¨|Ñ<Ô<ˆØ×Ò Ð+>ÐÑ?Ô?ˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )z–
        Convert the given Python integer to a void*.  This is recommended
        over number_as_ssize_t as it isn't affected by signedness.
        ÚPyLong_AsVoidPtrr´   ©r   r·   r‡   rk   r¹   r:   rº   rT  s       r   Úlong_as_voidptrzPythonAPI.long_as_voidptrì  sN   € õ
 Œ˜tœ|¨d¬j¨\Ñ:Ô:ˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 óp  — t          j        | j        |g¦  «        }|                      ||¬¦  «        }t	          j        | j        | j        ¦  «        }|                      ||¬¦  «        }| j                             | j                             ||g¦  «        |¦  «         | j         	                    |¦  «        S )Nr´   )
r   r·   rk   r¹   r   rj   r:   rD   rº   rp   )r   ÚivalÚ	func_nameÚnative_int_typeÚsignedr°   r¼   Úresptrs           r   Ú_long_from_native_intzPythonAPI._long_from_native_intõ  s    € åŒ˜tœz¨OÐ+<Ñ=Ô=ˆØ×Ò ¨9ÐÑ5Ô5ˆÝÔ$ T¤\°4´:Ñ>Ô>ˆØ×Ò ¨9ÐÑ5Ô5ˆØŒ×Ò˜4œ<×,Ò,¨R°$°Ñ8Ô8¸&ÑAÔAÐAàŒ|× Ò  Ñ(Ô(Ð(r   c                 ó¬   — d}t          j        | j        | j        g¦  «        }|                      ||¬¦  «        }| j                             ||g¦  «        S )NÚPyLong_FromLongr´   ©r   r·   rk   r‹   r¹   r:   rº   )r   rb  rc  r°   r¼   s        r   Úlong_from_longzPythonAPI.long_from_longÿ  sP   € Ø%ˆ	ÝŒ˜tœz¨D¬I¨;Ñ7Ô7ˆØ×Ò ¨9ÐÑ5Ô5ˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 ó>   — |                       |d| j        d¬¦  «        S )NÚPyLong_FromUnsignedLongF©re  )rg  r‹   ©r   rb  s     r   Úlong_from_ulongzPythonAPI.long_from_ulong  s.   € Ø×)Ò)¨$Ð0IØ*.¬)¸Eð *ñ Cô Cð 	Cr   c                 ó>   — |                       |d| j        d¬¦  «        S )NÚPyLong_FromSsize_tTrn  )rg  r”   ro  s     r   Úlong_from_ssize_tzPythonAPI.long_from_ssize_t	  s.   € Ø×)Ò)¨$Ð0DØ*.¬/À$ð *ñ Hô Hð 	Hr   c                 ó>   — |                       |d| j        d¬¦  «        S )NÚPyLong_FromLongLongTrn  )rg  rŽ   ro  s     r   Úlong_from_longlongzPythonAPI.long_from_longlong  s.   € Ø×)Ò)¨$Ð0EØ*.¬-Àð *ñ Fô Fð 	Fr   c                 ó>   — |                       |d| j        d¬¦  «        S )NÚPyLong_FromUnsignedLongLongFrn  )rg  r�   ro  s     r   Úlong_from_ulonglongzPythonAPI.long_from_ulonglong  s.   € Ø×)Ò)¨$Ð0MØ*.¬.Àð *ñ Hô Hð 	Hr   c                 óJ  — |j         j        }|| j        j        k    r3|                      | j                             || j        ¦  «        ¦  «        S || j        j        k    r3|                      | j                             || j        ¦  «        ¦  «        S t          d|z  ¦  «        ‚)zH
        Return a Python integer from any native integer value.
        úinteger too big (%d bits))	r¦   Úwidthr‹   rk  r:   ÚsextrŽ   rv  ÚOverflowError©r   rb  Úbitss      r   Úlong_from_signed_intzPythonAPI.long_from_signed_int  s�   € ð ŒyŒˆØ�4”9”?Ò"Ð"Ø×&Ò& t¤|×'8Ò'8¸¸t¼yÑ'IÔ'IÑJÔJÐJØ�T”]Ô(Ò(Ð(Ø×*Ò*¨4¬<×+<Ò+<¸TÀ4Ä=Ñ+QÔ+QÑRÔRÐRåÐ ;¸tÑ DÑEÔEÐEr   c                 óJ  — |j         j        }|| j        j        k    r3|                      | j                             || j        ¦  «        ¦  «        S || j        j        k    r3|                      | j                             || j        ¦  «        ¦  «        S t          d|z  ¦  «        ‚)zH
        Same as long_from_signed_int, but for unsigned values.
        r{  )	r¦   r|  rŒ   rp  r:   Úzextr�   ry  r~  r  s      r   Úlong_from_unsigned_intz PythonAPI.long_from_unsigned_int!  s‘   € ð ŒyŒˆØ�4”:Ô#Ò#Ð#Ø×'Ò'¨¬×(9Ò(9¸$ÀÄ
Ñ(KÔ(KÑLÔLÐLØ�T”^Ô)Ò)Ð)Ø×+Ò+¨D¬L×,=Ò,=¸dÀDÄNÑ,SÔ,SÑTÔTÐTåÐ ;¸tÑ DÑEÔEÐEr   c                 ó†   — t          j        | j        | j        | j        g¦  «        }|                      |d|z  ¬¦  «        }|S )NzPyNumber_%sr´   )r   r·   rk   r¹   )r   rµ   r°   r¼   s       r   Ú_get_number_operatorzPythonAPI._get_number_operator-  s@   € ÝŒ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò ¨=¸4Ñ+?ÐÑ@Ô@ˆØˆ	r   c                 ót   — |rd|z   }|                       |¦  «        }| j                             |||g¦  «        S )NÚInPlace)r†  r:   rº   )r   rµ   ÚlhsÚrhsÚinplacer¼   s         r   Ú_call_number_operatorzPythonAPI._call_number_operator2  sC   € Øð 	$Ø˜tÑ#ˆDØ×&Ò& tÑ,Ô,ˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 ó4   — |                       d|||¬¦  «        S )NÚAdd©r‹  ©rŒ  ©r   r‰  rŠ  r‹  s       r   Ú
number_addzPythonAPI.number_add8  ó   € Ø×)Ò)¨%°°cÀ7Ð)ÑKÔKÐKr   c                 ó4   — |                       d|||¬¦  «        S )NÚSubtractr�  r�  r‘  s       r   Únumber_subtractzPythonAPI.number_subtract;  ó   € Ø×)Ò)¨*°c¸3ÈÐ)ÑPÔPÐPr   c                 ó4   — |                       d|||¬¦  «        S )NÚMultiplyr�  r�  r‘  s       r   Únumber_multiplyzPythonAPI.number_multiply>  r—  r   c                 ó4   — |                       d|||¬¦  «        S )NÚ
TrueDivider�  r�  r‘  s       r   Únumber_truedividezPythonAPI.number_truedivideA  s   € Ø×)Ò)¨,¸¸SÈ'Ð)ÑRÔRÐRr   c                 ó4   — |                       d|||¬¦  «        S )NÚFloorDivider�  r�  r‘  s       r   Únumber_floordividezPythonAPI.number_floordivideD  s   € Ø×)Ò)¨-¸¸cÈ7Ð)ÑSÔSÐSr   c                 ó4   — |                       d|||¬¦  «        S )NÚ	Remainderr�  r�  r‘  s       r   Únumber_remainderzPythonAPI.number_remainderG  s   € Ø×)Ò)¨+°s¸CÈÐ)ÑQÔQÐQr   c                 ó4   — |                       d|||¬¦  «        S )NÚMatrixMultiplyr�  r�  r‘  s       r   Únumber_matrix_multiplyz PythonAPI.number_matrix_multiplyJ  s    € Ø×)Ò)Ð*:¸CÀÈgÐ)ÑVÔVÐVr   c                 ó4   — |                       d|||¬¦  «        S )NÚLshiftr�  r�  r‘  s       r   Únumber_lshiftzPythonAPI.number_lshiftM  ó   € Ø×)Ò)¨(°C¸ÀgÐ)ÑNÔNÐNr   c                 ó4   — |                       d|||¬¦  «        S )NÚRshiftr�  r�  r‘  s       r   Únumber_rshiftzPythonAPI.number_rshiftP  rª  r   c                 ó4   — |                       d|||¬¦  «        S )NÚAndr�  r�  r‘  s       r   Ú
number_andzPythonAPI.number_andS  r“  r   c                 ó4   — |                       d|||¬¦  «        S )NÚOrr�  r�  r‘  s       r   Ú	number_orzPythonAPI.number_orV  s   € Ø×)Ò)¨$°°SÀ'Ð)ÑJÔJÐJr   c                 ó4   — |                       d|||¬¦  «        S )NÚXorr�  r�  r‘  s       r   Ú
number_xorzPythonAPI.number_xorY  r“  r   c                 óà   — t          j        | j        | j        gdz  ¦  «        }|rdnd}|                      ||¦  «        }| j                             ||||                      ¦   «         g¦  «        S )Nr  ÚPyNumber_InPlacePowerÚPyNumber_Power)r   r·   rk   r¹   r:   rº   Úborrow_none)r   r‰  rŠ  r‹  r°   Úfnamer¼   s          r   Únumber_powerzPythonAPI.number_power\  so   € ÝŒ˜tœz¨D¬J¨<¸!Ñ+;Ñ<Ô<ˆØ+2ÐHÐ'Ð'Ð8HˆØ×Ò  eÑ,Ô,ˆØŒ|× Ò   c¨3°×0@Ò0@Ñ0BÔ0BÐ%CÑDÔDÐDr   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚPyNumber_Negativer´   rÄ   r»   s       r   Únumber_negativezPythonAPI.number_negativeb  óL   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò Ð+>ÐÑ?Ô?ˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚPyNumber_Positiver´   rÄ   r»   s       r   Únumber_positivezPythonAPI.number_positiveg  rÀ  r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyNumber_Floatr´   rÄ   )r   r4   r°   r¼   s       r   Únumber_floatzPythonAPI.number_floatl  sL   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚPyNumber_Invertr´   rÄ   r»   s       r   Únumber_invertzPythonAPI.number_invertq  sL   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò Ð+<ÐÑ=Ô=ˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyFloat_AsDoubler´   )r   r·   r‘   rk   r¹   r:   rº   )r   Úfobjr°   r¼   s       r   Úfloat_as_doublezPythonAPI.float_as_doublev  sL   € ÝŒ˜tœ{¨T¬Z¨LÑ9Ô9ˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 ól   — | j                              || j        ¦  «        }|                      |¦  «        S )z8
        Get a Python bool from a LLVM boolean.
        )r:   rƒ  r‹   Úbool_from_long)r   ÚbvalÚlongvals      r   Úbool_from_boolzPythonAPI.bool_from_bool{  s1   € ð ”,×#Ò# D¨$¬)Ñ4Ô4ˆØ×"Ò" 7Ñ+Ô+Ð+r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyBool_FromLongr´   rj  )r   rb  r°   r¼   s       r   rÏ  zPythonAPI.bool_from_long‚  sL   € ÝŒ˜tœz¨D¬I¨;Ñ7Ô7ˆØ×Ò Ð+<ÐÑ=Ô=ˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 óæ   — t          j        | j        t          j        ¦   «         t          j        ¦   «         g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NÚPyComplex_FromDoublesr´   )r   r·   rk   r�   r¹   r:   rº   )r   ÚrealvalÚimagvalr°   r¼   s        r   Úcomplex_from_doubleszPythonAPI.complex_from_doubles‡  s\   € ÝŒ˜tœz­B¬M©O¬O½R¼]¹_¼_Ð+MÑNÔNˆØ×Ò Ð+BÐÑCÔCˆØŒ|× Ò   g¨wÐ%7Ñ8Ô8Ð8r   c                 óÀ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyComplex_RealAsDoubler´   ©r   r·   r�   rk   r¹   r:   rº   ©r   Úcobjr°   r¼   s       r   Úcomplex_real_as_doublez PythonAPI.complex_real_as_doubleŒ  óP   € ÝŒ�rœ}™œ°´°Ñ=Ô=ˆØ×Ò Ð+CÐÑDÔDˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 óÀ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyComplex_ImagAsDoubler´   rÜ  rÝ  s       r   Úcomplex_imag_as_doublez PythonAPI.complex_imag_as_double‘  rà  r   c                 ó–  — t          j        | j        | j        ¦  «        }t          j        | j        | j        ¦  «        }t          j        | j        | j        ¦  «        }t	          j        t	          j        d¦  «        | j        g| j                             ¦   «         gdz  z   ¦  «        }|  	                    |d¬¦  «        }| j         
                    |||||f¦  «        }| j                             |¦  «        }| j                             |¦  «        }	| j                             |¦  «        }
t          j        | j        |¦  «        ||	|
fS )z»
        Read the members of a slice of integers.

        Returns a (ok, start, stop, step) tuple where ok is a boolean and
        the following members are pointer-sized ints.
        rÇ   r  Únumba_unpack_slicer´   )r   rj   r:   r”   r   r·   r†   rk   rƒ   r¹   rº   rp   r¤   )r   r?   ÚpstartÚpstopÚpstepr°   r¼   ÚresÚstartÚstopÚsteps              r   Úslice_as_intszPythonAPI.slice_as_ints™  s  € õ Ô$ T¤\°4´?ÑCÔCˆÝÔ# D¤L°$´/ÑBÔBˆÝÔ# D¤L°$´/ÑBÔBˆÝŒ�rœz¨"™~œ~Ø $¤
˜|¨t¬×/IÒ/IÑ/KÔ/KÐ.LÈqÑ.PÑPñRô Rˆà×Ò Ð+?ÐÑ@Ô@ˆØŒl×Ò  S¨&°%¸Ð$?Ñ@Ô@ˆØ”×!Ò! &Ñ)Ô)ˆØŒ|× Ò  Ñ'Ô'ˆØŒ|× Ò  Ñ'Ô'ˆÝŒ˜tœ|¨SÑ1Ô1°5¸$ÀÐDÐDr   c                 óÄ   — t          j        | j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        S )NÚPySequence_GetSlicer´   ©r   r·   rk   r”   r¹   r:   rº   )r   r?   rê  rë  r°   r¼   s         r   Úsequence_getslicezPythonAPI.sequence_getslice°  sa   € ÝŒ˜tœz¨D¬J¸¼Ø,0¬Oð,=ñ >ô >ˆà×Ò Ð+@ÐÑAÔAˆØŒ|× Ò   c¨5°$Ð%7Ñ8Ô8Ð8r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPySequence_Tupler´   rÄ   r»   s       r   Úsequence_tuplezPythonAPI.sequence_tuple¶  óL   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 ó¶   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NÚPySequence_Concatr´   rÄ   )r   Úobj1Úobj2r°   r¼   s        r   Úsequence_concatzPythonAPI.sequence_concat»  sS   € ÝŒ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò Ð+>ÐÑ?Ô?ˆØŒ|× Ò   d¨D \Ñ2Ô2Ð2r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚ
PyList_Newr´   rð  )r   Úszvalr°   r¼   s       r   Úlist_newzPythonAPI.list_newÀ  sL   € ÝŒ˜tœz¨D¬OÐ+<Ñ=Ô=ˆØ×Ò ¨<ÐÑ8Ô8ˆØŒ|× Ò   e WÑ-Ô-Ð-r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyList_Sizer´   ©r   r·   r”   rk   r¹   r:   rº   )r   Úlstr°   r¼   s       r   Ú	list_sizezPythonAPI.list_sizeÅ  sK   € ÝŒ˜tœ°´°Ñ=Ô=ˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óÐ   — t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÇ   ÚPyList_Appendr´   r:  )r   r  r4   r°   r¼   s        r   Úlist_appendzPythonAPI.list_appendÊ  sX   € ÝŒ�rœz¨"™~œ~°´
¸D¼JÐ/GÑHÔHˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 óÞ   — t          j        t          j        d¦  «        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||||g¦  «        S )z6
        Warning: Steals reference to ``val``
        rÇ   ÚPyList_SetItemr´   )r   r·   r†   rk   r”   r¹   r:   rº   )r   r  Úidxr4   r°   r¼   s         r   Úlist_setitemzPythonAPI.list_setitemÏ  sh   € õ Œ�rœz¨"™~œ~°´
¸D¼OØ04´
ð0<ñ =ô =ˆà×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   c¨3° _Ñ5Ô5Ð5r   c                 ó*  — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }t          |t          ¦  «        r%| j                             t          j
        |¦  «        }| j                             |||g¦  «        S )z/
        Returns a borrowed reference.
        ÚPyList_GetItemr´   )r   r·   rk   r”   r¹   rV   rÛ   r9   Úget_constantr   r“   r:   rº   )r   r  r	  r°   r¼   s        r   rn   zPythonAPI.list_getitemØ  s€   € õ Œ˜tœz¨D¬J¸¼Ð+HÑIÔIˆØ×Ò Ð+;ÐÑ<Ô<ˆÝ�c�3ÑÔð 	=Ø”,×+Ò+­E¬J¸Ñ<Ô<ˆCØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 ó  — |€|                       ¦   «         }t          j        t          j        d¦  «        | j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||||f¦  «        S )NrÇ   ÚPyList_SetSlicer´   )	r©   r   r·   r†   rk   r”   r¹   r:   rº   )r   r  rê  rë  r?   r°   r¼   s          r   Úlist_setslicezPythonAPI.list_setsliceâ  s†   € Øˆ;Ø×&Ò&Ñ(Ô(ˆCÝŒ�rœz¨"™~œ~°´
¸D¼OØ04´ÀÄð0Mñ Nô Nˆà×Ò Ð+<ÐÑ=Ô=ˆØŒ|× Ò   c¨5°$¸Ð%<Ñ=Ô=Ð=r   c                 ó   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             t          j        |¦  «        }| j	         
                    |||g¦  «        S )z"
        Borrow reference
        ÚPyTuple_GetItemr´   )r   r·   rk   r”   r¹   r9   r  r   r“   r:   rº   )r   Útupr	  r°   r¼   s        r   Útuple_getitemzPythonAPI.tuple_getitemï  sn   € õ Œ˜tœz¨D¬J¸¼Ð+HÑIÔIˆØ×Ò Ð+<ÐÑ=Ô=ˆØŒl×'Ò'­¬
°CÑ8Ô8ˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 ó>  — t          j        | j        | j        gd¬¦  «        }|                      |d¬¦  «        }| j                             t          j        t          |¦  «        ¦  «        }|g}| 
                    |¦  «         | j                             ||¦  «        S )NTrÈ   ÚPyTuple_Packr´   )r   r·   rk   r”   r¹   r9   r  r   r“   ra   Úextendr:   rº   )r   Úitemsr°   r¼   ÚnrÍ   s         r   Ú
tuple_packzPythonAPI.tuple_packø  s‡   € ÝŒ˜tœz¨D¬OÐ+<ÀdÐKÑKÔKˆØ×Ò ¨>ÐÑ:Ô:ˆØŒL×%Ò%¥e¤jµ#°e±*´*Ñ=Ô=ˆØˆsˆØ�Š�EÑÔÐØŒ|× Ò   TÑ*Ô*Ð*r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyTuple_Sizer´   r  )r   r  r°   r¼   s       r   Ú
tuple_sizezPythonAPI.tuple_size   sK   € ÝŒ˜tœ°´°Ñ=Ô=ˆØ×Ò ¨>ÐÑ:Ô:ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 ó  — t          j        | j        t          j        d¦  «        g¦  «        }|                      |d¬¦  «        }| j                             || j                             t          j
        |¦  «        g¦  «        S )NrÇ   ÚPyTuple_Newr´   )r   r·   rk   r†   r¹   r:   rº   r9   r  r   Úint32)r   Úcountr°   r¼   s       r   Ú	tuple_newzPythonAPI.tuple_new  sz   € ÝŒ˜tœz­B¬J°r©N¬NÐ+;Ñ<Ô<ˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   d¤l×&?Ò&?ÅÄØ@Eñ'Gô 'Gð &Hñ Iô Ið 	Ir   c                 óF  — t          j        t          j        d¦  «        | j        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }| j                             t          j        |¦  «        }| j	         
                    ||||g¦  «         dS )z/
        Steals a reference to `item`.
        rÇ   ÚPyTuple_SetItemr´   N)r   r·   r†   rk   r¹   r9   r  r   r   r:   rº   )r   Ú	tuple_valrd   Úitemr°   Ú
setitem_fns         r   Útuple_setitemzPythonAPI.tuple_setitem  s‡   € õ Œ�rœz¨"™~œ~°´
½B¼JÀr¹N¼NÈDÌJÐ/WÑXÔXˆØ×'Ò'¨Ð3DÐ'ÑEÔEˆ
Ø”×)Ò)­%¬+°uÑ=Ô=ˆØŒ×Ò˜* y°%¸Ð&>Ñ?Ô?Ð?Ð?Ð?r   c                 óÔ   — |€|                       ¦   «         }t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚ	PySet_Newr´   ©r©   r   r·   rk   r¹   r:   rº   )r   Úiterabler°   r¼   s       r   Úset_newzPythonAPI.set_new  sb   € ØÐØ×+Ò+Ñ-Ô-ˆHÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨;ÐÑ7Ô7ˆØŒ|× Ò   h ZÑ0Ô0Ð0r   c                 óÐ   — t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÇ   Ú	PySet_Addr´   r:  )r   ÚsetrO   r°   r¼   s        r   Úset_addzPythonAPI.set_add  sX   € ÝŒ�rœz¨"™~œ~°´
¸D¼JÐ/GÑHÔHˆØ×Ò ¨;ÐÑ7Ô7ˆØŒ|× Ò   c¨5 \Ñ2Ô2Ð2r   c                 óÂ   — t          j        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NrÇ   ÚPySet_Clearr´   r:  ©r   r0  r°   r¼   s       r   Ú	set_clearzPythonAPI.set_clear$  sQ   € ÝŒ�rœz¨"™~œ~°´
¨|Ñ<Ô<ˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚ
PySet_Sizer´   r  r4  s       r   Úset_sizezPythonAPI.set_size)  sK   € ÝŒ˜tœ°´°Ñ=Ô=ˆØ×Ò ¨<ÐÑ8Ô8ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óÐ   — t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÇ   Ú_PySet_Updater´   r:  )r   r0  r,  r°   r¼   s        r   Ú
set_updatezPythonAPI.set_update.  sX   € ÝŒ�rœz¨"™~œ~°´
¸D¼JÐ/GÑHÔHˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   c¨8 _Ñ5Ô5Ð5r   c                 óX  — t          j        t          j        d¦  «        | j        | j                             ¦   «         | j                             ¦   «         | j                             ¦   «         g¦  «        }|                      |d¬¦  «        }| j         	                    |||||f¦  «        S )NrÇ   Ú_PySet_NextEntryr´   )
r   r·   r†   rk   r”   rƒ   r›   r¹   r:   rº   )r   r0  ÚposptrÚkeyptrÚhashptrr°   r¼   s          r   Úset_next_entryzPythonAPI.set_next_entry3  s—   € ÝŒ�rœz¨"™~œ~Ø $¤
¨D¬O×,FÒ,FÑ,HÔ,HØ $¤
× 5Ò 5Ñ 7Ô 7¸¼×9RÒ9RÑ9TÔ9Tð VñWô Wˆð ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨6°6¸7Ð%CÑDÔDÐDr   c              #   óD  ‡	‡
K  — | j         Š
t          j        ‰
| j        d¬¦  «        }t          j        ‰
| j        d¬¦  «        }t          j        ‰
t          | j        d¦  «        d¬¦  «        }‰
                     d¦  «        }‰
                     d¦  «        Š	‰
 	                    |¦  «         ˆ	ˆ
fd„}‰
 
                    |¦  «        5  |                      ||||¦  «        }t          j        ‰
|¦  «        }‰
                     |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   ‰
                     ‰	¦  «         d S )Nr@  r´   r?  r   r>  Úbb_bodyÚbb_endc                  ó2   •— ‰                      ‰ ¦  «         d S r   )Úbranch)rD  r:   s   €€r   rw   z'PythonAPI.set_iterate.<locals>.do_breakH  s   ø€ Ø�NŠN˜6Ñ"Ô"Ð"Ð"Ð"r   Fr  )r:   r   rj   r›   rk   Úalloca_once_valuer   r”   Úappend_basic_blockrF  Ú
goto_blockrA  r¤   Úif_thenrv   rp   Úposition_at_end)r   r0  r@  r?  r>  rC  rw   ÚrÚfinishedrD  r:   s            @@r   Úset_iteratezPythonAPI.set_iterate:  s&  øøè è € à”,ˆåÔ% g¨t¬~ÀIÐNÑNÔNˆÝÔ$ W¨d¬j¸xÐHÑHÔHˆÝÔ*¨7Ý+3°D´OÀQÑ+GÔ+GØ08ð:ñ :ô :ˆð ×,Ò,¨YÑ7Ô7ˆØ×+Ò+¨HÑ5Ô5ˆà�Š�wÑÔÐð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð ×Ò Ñ(Ô(ð 	$ð 	$Ø×#Ò# C¨°¸ÑAÔAˆAÝ” w°Ñ2Ô2ˆHØ—’ °%�Ñ8Ô8ð 'ð 'Ø—’˜vÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'å §¢¨VÑ 4Ô 4°hÑ?Ô?Ð?Ð?Ð?Ø�NŠN˜7Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	×Ò Ñ'Ô'Ð'Ð'Ð's7   ÃAF ÄD/Ä#F Ä/D3	Ä3F Ä6D3	Ä7=F Æ FÆFc                 ó(  — t          j        | j        ¦  «        }t          j        t          j        ¦   «         |g¦  «        }|                      |d¦  «        }t          j        | j        | j        ¦  «        }| j         	                    ||g¦  «         |S )zk
        Ensure the GIL is acquired.
        The returned value must be consumed by gil_release().
        Únumba_gil_ensure)
r   r…   r—   r·   r¸   r¹   r   rj   r:   rº   )r   Úgilptrtyr°   r¼   Úgilptrs        r   Ú
gil_ensurezPythonAPI.gil_ensureY  sy   € õ
 ”> $¤.Ñ1Ô1ˆÝŒ�rœ{™}œ}¨x¨jÑ9Ô9ˆØ×Ò Ð&8Ñ9Ô9ˆÝÔ$ T¤\°4´>ÑBÔBˆØŒ×Ò˜"˜v˜hÑ'Ô'Ð'Øˆr   c                 óæ   — t          j        | j        ¦  «        }t          j        t          j        ¦   «         |g¦  «        }|                      |d¦  «        }| j                             ||g¦  «        S )zg
        Release the acquired GIL by gil_ensure().
        Must be paired with a gil_ensure().
        Únumba_gil_release)r   r…   r—   r·   r¸   r¹   r:   rº   )r   ÚgilrQ  r°   r¼   s        r   Úgil_releasezPythonAPI.gil_releasee  s^   € õ
 ”> $¤.Ñ1Ô1ˆÝŒ�rœ{™}œ}¨x¨jÑ9Ô9ˆØ×Ò Ð&9Ñ:Ô:ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óš   — t          j        | j        g ¦  «        }|                      |d¬¦  «        }| j                             |g ¦  «        S )zj
        Release the GIL and return the former thread state
        (an opaque non-NULL pointer).
        ÚPyEval_SaveThreadr´   )r   r·   r‡   r¹   r:   rº   râ   s      r   Úsave_threadzPythonAPI.save_threado  sH   € õ
 Œ˜tœ|¨RÑ0Ô0ˆØ×Ò Ð+>ÐÑ?Ô?ˆØŒ|× Ò   RÑ(Ô(Ð(r   c                 óÄ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «         dS )zH
        Restore the given thread state by reacquiring the GIL.
        ÚPyEval_RestoreThreadr´   N)r   r·   r¸   r‡   r¹   r:   rº   )r   Úthread_stater°   r¼   s       r   Úrestore_threadzPythonAPI.restore_threadx  sX   € õ Œ�rœ{™}œ}¨t¬|¨nÑ=Ô=ˆØ×Ò Ð+AÐÑBÔBˆØŒ×Ò˜"˜|˜nÑ-Ô-Ð-Ð-Ð-r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚnumba_get_pyobject_private_datar´   r_  r»   s       r   Úobject_get_private_dataz!PythonAPI.object_get_private_data…  sL   € ÝŒ˜tœ|¨d¬j¨\Ñ:Ô:ˆØ×Ò Ð+LÐÑMÔMˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 óÎ   — t          j        t          j        ¦   «         | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||f¦  «        S )NÚnumba_set_pyobject_private_datar´   )r   r·   r¸   rk   r‡   r¹   r:   rº   )r   r?   Úptrr°   r¼   s        r   Úobject_set_private_dataz!PythonAPI.object_set_private_dataŠ  sW   € ÝŒ�rœ{™}œ}¨t¬z¸4¼<Ð.HÑIÔIˆØ×Ò Ð+LÐÑMÔMˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 óÀ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )NÚ!numba_reset_pyobject_private_datar´   r¶   r»   s       r   Úobject_reset_private_dataz#PythonAPI.object_reset_private_data�  sP   € ÝŒ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò Ð+NÐÑOÔOˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyImport_ImportModuleNoBlockr´   ©r   r·   rk   r•   r¹   r:   rº   )r   Úmodnamer°   r¼   s       r   Úimport_module_noblockzPythonAPI.import_module_noblock™  sL   € ÝŒ˜tœz¨D¬L¨>Ñ:Ô:ˆØ×Ò Ð+IÐÑJÔJˆØŒ|× Ò   g YÑ/Ô/Ð/r   c                 ó>  — t          j        | j        | j        gd¬¦  «        }|                      |d¬¦  «        }|gt	          |¦  «        z   }|                     | j                             t          j	        ¦  «        ¦  «         | j
                             ||¦  «        S )NTrÈ   ÚPyObject_CallFunctionObjArgsr´   )r   r·   rk   r¹   rÌ   rb   r9   Úget_constant_nullr   r‚   r:   rº   )r   ÚcalleeÚobjargsr°   r¼   rÍ   s         r   Úcall_function_objargszPythonAPI.call_function_objargsž  s…   € ÝŒ˜tœz¨D¬J¨<ÀÐFÑFÔFˆØ×Ò Ð+IÐÑJÔJˆØˆx�$˜w™-œ-Ñ'ˆØ�Š�D”L×2Ò2µ5´>ÑBÔBÑCÔCÐCØŒ|× Ò   TÑ*Ô*Ð*r   r*   c                 ó  — | j                              | j        |¦  «        }t          j        | j        | j        | j        | j        gd¬¦  «        }|                      |d¬¦  «        }dt          |¦  «        z  }| j                              | j        |¦  «        }|||g}	|r|	 	                    |¦  «         |	 
                    | j                              t          j        ¦  «        ¦  «         | j                             ||	¦  «        S )NTrÈ   ÚPyObject_CallMethodr´   ÚO)r9   rÜ   r~   r   r·   rk   r•   r¹   ra   r  rb   rp  r   r‚   r:   rº   )
r   rq  Úmethodrr  Úcnamer°   r¼   rÏ   ÚcfmtrÍ   s
             r   Úcall_methodzPythonAPI.call_method¥  së   € Ø”×0Ò0°´¸fÑEÔEˆÝŒ˜tœz¨D¬J¸¼ÀdÄlÐ+SØ%)ð+ñ +ô +ˆà×Ò Ð+@ÐÑAÔAˆØ•C˜‘L”LÑ ˆØŒ|×/Ò/°´¸SÑAÔAˆØ˜˜tÐ$ˆØð 	!Ø�KŠK˜Ñ Ô Ð Ø�Š�D”L×2Ò2µ5´>ÑBÔBÑCÔCÐCØŒ|× Ò   TÑ*Ô*Ð*r   c                 ó
  — |€|                       ¦   «         }|€|                       ¦   «         }t          j        | j        | j        gdz  ¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        S )Nr  ÚPyObject_Callr´   r+  )r   rq  rÍ   rÎ   r°   r¼   s         r   rº   zPythonAPI.call²  s�   € Øˆ<Ø×'Ò'Ñ)Ô)ˆDØˆ;Ø×&Ò&Ñ(Ô(ˆCÝŒ˜tœz¨D¬J¨<¸!Ñ+;Ñ<Ô<ˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   f¨d°CÐ%8Ñ9Ô9Ð9r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )zJEmit a call to ``PyObject_Type(obj)`` to get the type of ``obj``.
        ÚPyObject_Typer´   rÄ   r»   s       r   Úobject_typezPythonAPI.object_type»  sM   € õ Œ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨?ÐÑ;Ô;ˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 óÂ   — t          j        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NrÇ   ÚPyObject_IsTruer´   r:  r»   s       r   Úobject_istruezPythonAPI.object_istrueÂ  sR   € ÝŒ�rœz¨"™~œ~°´
¨|Ñ<Ô<ˆØ×Ò Ð+<ÐÑ=Ô=ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óÂ   — t          j        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NrÇ   ÚPyObject_Notr´   r:  r»   s       r   Ú
object_notzPythonAPI.object_notÇ  sQ   € ÝŒ�rœz¨"™~œ~°´
¨|Ñ<Ô<ˆØ×Ò ¨>ÐÑ:Ô:ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óÆ  — g d¢}||v r¨|                      |¦  «        }t          j        | j        | j        | j        t          j        d¦  «        g¦  «        }|                      |d¬¦  «        }| j                             t          j	        |¦  «        }| j
                             ||||f¦  «        S |dk    r1| j
                             d||¦  «        }	|                      |	¦  «        S |dk    r1| j
                             d||¦  «        }	|                      |	¦  «        S |d	v �rœt          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d
¬¦  «        }| j
                             |||f¦  «        }
| j                             t          j	        d¦  «        }| j
                             d|
|¦  «        }t          j        | j
        t!          | j        d¦  «        ¦  «        }t          j        | j
        |¦  «        5  |dk    r| j
                             |
¦  «        }
| j
                             |
t          j        d¦  «        ¦  «        }| j
                             |                      |¦  «        |¦  «         ddd¦  «         n# 1 swxY w Y   | j
                             |¦  «        S t-          d                     |¬¦  «        ¦  «        ‚)zd
        Refer to Python source Include/object.h for macros definition
        of the opid.
        )ú<z<=ú==ú!=ú>z>=rÇ   ÚPyObject_RichComparer´   Úisrˆ  zis notr‰  )Úinúnot inÚPySequence_ContainséÿÿÿÿNrŽ  é   zUnknown operator {op!r})Úop)rd   r   r·   rk   r†   r¹   r9   r  r   r   r:   rº   Úicmp_unsignedrÒ  r   rG  r   Ú	if_likelyÚnot_ÚtruncrD   rp   ÚNotImplementedErrorÚformat)r   r‰  rŠ  ÚopstrÚopsÚopidr°   r¼   ÚlopidÚbitflagÚstatusÚnegoneÚis_goodÚoutptrÚ	truncateds                  r   Úobject_richcomparezPythonAPI.object_richcompareÌ  sè  € ð
 1Ð0Ð0ˆØ�Cˆ<ˆ<Ø—9’9˜UÑ#Ô#ˆDÝ”? 4¤:°´
¸D¼JÍÌ
ÐSUÉÌÐ/WÑXÔXˆDØ×#Ò# DÐ/EÐ#ÑFÔFˆBØ”L×-Ò-­e¬k¸4Ñ@Ô@ˆEØ”<×$Ò$ R¨#¨s°EÐ):Ñ;Ô;Ð;Ø�dŠ]ˆ]Ø”l×0Ò0°°s¸CÑ@Ô@ˆGØ×&Ò& wÑ/Ô/Ð/Ø�hÒÐØ”l×0Ò0°°s¸CÑ@Ô@ˆGØ×&Ò& wÑ/Ô/Ð/ØÐ&Ð&Ñ&Ý”?¥2¤:¨b¡>¤>°D´JÀÄ
Ð3KÑLÔLˆDØ×#Ò# DÐ/DÐ#ÑEÔEˆBØ”\×&Ò& r¨C°¨:Ñ6Ô6ˆFØ”\×.Ò.­u¬{¸BÑ?Ô?ˆFØ”l×0Ò0°°v¸vÑFÔFˆGåÔ.¨t¬|Ý/7¸¼
ÀDÑ/IÔ/IñKô KˆFõ Ô" 4¤<°Ñ9Ô9ð +ð +Ø˜HÒ$Ð$Ø!œ\×.Ò.¨vÑ6Ô6�Fà œL×.Ò.¨vµr´zÀ!±}´}ÑEÔE�	Ø”×"Ò" 4×#6Ò#6°yÑ#AÔ#AØ#)ñ+ô +ð +ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð ”<×$Ò$ VÑ,Ô,Ð,å%Ð&?×&FÒ&FØð 'Gñ 'ô 'ñ ô ð s   ÈA<JÊJÊ"Jc                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyIter_Nextr´   rÄ   )r   Úiterobjr°   r¼   s       r   Ú	iter_nextzPythonAPI.iter_nextõ  sK   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨=ÐÑ9Ô9ˆØŒ|× Ò   g YÑ/Ô/Ð/r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyObject_GetIterr´   rÄ   r»   s       r   Úobject_getiterzPythonAPI.object_getiterú  rõ  r   c                 óö   — | j                              | j        |¦  «        }t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j         	                    |||g¦  «        S )NÚPyObject_GetAttrStringr´   )
r9   rÜ   r~   r   r·   rk   r•   r¹   r:   rº   )r   r?   Úattrr!  r°   r¼   s         r   Úobject_getattr_stringzPythonAPI.object_getattr_stringÿ  sl   € ØŒ|×/Ò/°´¸TÑBÔBˆÝŒ˜tœz¨D¬J¸¼Ð+EÑFÔFˆØ×Ò Ð+CÐÑDÔDˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   c                 ó¶   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NÚPyObject_GetAttrr´   rÄ   )r   r?   r­  r°   r¼   s        r   Úobject_getattrzPythonAPI.object_getattr  sS   € ÝŒ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   c                 ó  — | j                              | j        |¦  «        }t          j        t          j        d¦  «        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j	         
                    ||||g¦  «        S )NrÇ   ÚPyObject_SetAttrStringr´   )r9   rÜ   r~   r   r·   r†   rk   r•   r¹   r:   rº   )r   r?   r­  r4   r!  r°   r¼   s          r   Úobject_setattr_stringzPythonAPI.object_setattr_string
  sy   € ØŒ|×/Ò/°´¸TÑBÔBˆÝŒ�rœz¨"™~œ~°´
¸D¼LÈ$Ì*Ð/UÑVÔVˆØ×Ò Ð+CÐÑDÔDˆØŒ|× Ò   c¨4°Ð%5Ñ6Ô6Ð6r   c                 óÞ   — t          j        t          j        d¦  «        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||||g¦  «        S )NrÇ   ÚPyObject_SetAttrr´   r:  )r   r?   r­  r4   r°   r¼   s         r   Úobject_setattrzPythonAPI.object_setattr  s`   € ÝŒ�rœz¨"™~œ~°´
¸D¼JÈÌ
Ð/SÑTÔTˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨4°Ð%5Ñ6Ô6Ð6r   c                 óT   — |                       |||                      ¦   «         ¦  «        S r   )r´  r©   ©r   r?   r­  s      r   Úobject_delattr_stringzPythonAPI.object_delattr_string  s(   € ð ×)Ò)¨#¨t°T×5IÒ5IÑ5KÔ5KÑLÔLÐLr   c                 óT   — |                       |||                      ¦   «         ¦  «        S r   )r·  r©   r¹  s      r   Úobject_delattrzPythonAPI.object_delattr  s(   € ð ×"Ò" 3¨¨d×.BÒ.BÑ.DÔ.DÑEÔEÐEr   c                 ó¶   — t          j        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||f¦  «        S )z!
        Return obj[key]
        ÚPyObject_GetItemr´   rÄ   ©r   r?   Úkeyr°   r¼   s        r   Úobject_getitemzPythonAPI.object_getitem  sU   € õ Œ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 óÞ   — t          j        t          j        d¦  «        | j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||||f¦  «        S )z 
        obj[key] = val
        rÇ   ÚPyObject_SetItemr´   r:  )r   r?   rÀ  r4   r°   r¼   s         r   Úobject_setitemzPythonAPI.object_setitem'  sa   € õ Œ�rœz¨"™~œ~°´
¸D¼JÈÌ
Ð/SÑTÔTˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨3° _Ñ5Ô5Ð5r   c                 óÐ   — t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             |||f¦  «        S )z
        del obj[key]
        rÇ   ÚPyObject_DelItemr´   r:  r¿  s        r   Úobject_delitemzPythonAPI.object_delitem/  s[   € õ Œ�rœz¨"™~œ~°´
¸D¼JÐ/GÑHÔHˆØ×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 ó¬   — t          j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             ||g¦  «        S )NÚPyUnicode_AsUTF8r´   ©r   r·   r•   rk   r¹   r:   rº   )r   Ústrobjr°   r»  r¼   s        r   Ústring_as_stringzPythonAPI.string_as_string7  sP   € ÝŒ˜tœ|¨d¬j¨\Ñ:Ô:ˆØ"ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 ó´  — t          j        | j        | j        ¦  «        }t	          j        | j        | j        | j                             ¦   «         g¦  «        }d}|  	                    ||¬¦  «        }| j         
                    |||g¦  «        }| j                             dt          |j        d¦  «        |¦  «        }||| j                             |¦  «        fS )zô
        Returns a tuple of ``(ok, buffer, length)``.
        The ``ok`` is i1 value that is set if ok.
        The ``buffer`` is a i8* of the output buffer.
        The ``length`` is a i32/i64 (py_ssize_t) of the length of the buffer.
        ÚPyUnicode_AsUTF8AndSizer´   r‰  N)r   rj   r:   r”   r   r·   r•   rk   rƒ   r¹   rº   r“  r   r¦   rp   )r   rË  Úp_lengthr°   r»  r¼   ÚbufferÚoks           r   Ústring_as_string_and_sizez#PythonAPI.string_as_string_and_size=  sÏ   € õ Ô& t¤|°T´_ÑEÔEˆÝŒ˜tœ|¨d¬jØ.2¬o×.HÒ.HÑ.JÔ.Jð.Lñ Mô Mˆà)ˆØ×Ò ¨5ÐÑ1Ô1ˆà”×"Ò" 2¨°Ð'9Ñ:Ô:ˆØŒ\×'Ò'¨Ý(0°´¸dÑ(CÔ(CØ(.ñ0ô 0ˆð �F˜DœL×-Ò-¨hÑ7Ô7Ð8Ð8r   c           	      ó  — t          j        | j        | j        ¦  «        }t          j        | j        t	          j        d¦  «        ¦  «        }t          j        | j        t	          j        d¦  «        ¦  «        }t          j        | j        | j        ¦  «        }t	          j        | j        | j	        | j         
                    ¦   «         t	          j        d¦  «         
                    ¦   «         t	          j        d¦  «         
                    ¦   «         | j         
                    ¦   «         g¦  «        }d}|                      ||¬¦  «        }| j                             ||||||g¦  «        }	| j                             dt          |	j        d¦  «        |	¦  «        }
|
|	| j                             |¦  «        | j                             |¦  «        | j                             |¦  «        | j                             |¦  «        fS )aŽ  
        Returns a tuple of ``(ok, buffer, length, kind)``.
        The ``ok`` is i1 value that is set if ok.
        The ``buffer`` is a i8* of the output buffer.
        The ``length`` is a i32/i64 (py_ssize_t) of the length of the buffer.
        The ``kind`` is a i32 (int32) of the Unicode kind constant
        The ``hash`` is a long/uint64_t (py_hash_t) of the Unicode constant hash
        rÇ   Únumba_extract_unicoder´   r‰  N)r   rj   r:   r”   r   r†   r›   r·   r•   rk   rƒ   r¹   rº   r“  r   r¦   rp   )r   rË  rÏ  Úp_kindÚp_asciiÚp_hashr°   r»  r¼   rÐ  rÑ  s              r   Ústring_as_string_size_and_kindz(PythonAPI.string_as_string_size_and_kindQ  s¥  € õ Ô& t¤|°T´_ÑEÔEˆÝÔ$ T¤\µ2´:¸b±>´>ÑBÔBˆÝÔ% d¤lµB´J¸r±N´NÑCÔCˆÝÔ$ T¤\°4´>ÑBÔBˆÝŒ˜tœ|¨d¬jØ.2¬o×.HÒ.HÑ.JÔ.JÝ.0¬j¸©n¬n×.GÒ.GÑ.IÔ.IÝ.0¬j¸©n¬n×.GÒ.GÑ.IÔ.IØ.2¬n×.GÒ.GÑ.IÔ.Ið	.Kñ Lô Lˆð
 (ˆØ×Ò ¨5ÐÑ1Ô1ˆà”×"Ò"Ø�˜ 6¨7°FÐ;ñ=ô =ˆàŒ\×'Ò'¨Ý(0°´¸dÑ(CÔ(CØ(.ñ0ô 0ˆð �F˜DœL×-Ò-¨hÑ7Ô7Ø”×!Ò! &Ñ)Ô)¨4¬<×+<Ò+<¸WÑ+EÔ+EØ”×!Ò! &Ñ)Ô)ð+ð 	+r   c                 óº   — t          j        | j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             |||g¦  «        S )NÚPyString_FromStringAndSizer´   ©r   r·   rk   r•   r”   r¹   r:   rº   ©r   ÚstringÚsizer°   r»  r¼   s         r   Ústring_from_string_and_sizez%PythonAPI.string_from_string_and_sizeo  sW   € ÝŒ˜tœz¨D¬L¸$¼/Ð+JÑKÔKˆØ,ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   f¨d ^Ñ4Ô4Ð4r   c                 ó¬   — t          j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             ||g¦  «        S )NÚPyUnicode_FromStringr´   rk  )r   rÝ  r°   r»  r¼   s        r   Ústring_from_stringzPythonAPI.string_from_stringu  sP   € ÝŒ˜tœz¨D¬L¨>Ñ:Ô:ˆØ&ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   f XÑ.Ô.Ð.r   c                 óâ   — t          j        | j        t          j        d¦  «        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             ||||g¦  «        S )NrÇ   ÚPyUnicode_FromKindAndDatar´   )	r   r·   rk   r†   r•   r”   r¹   r:   rº   )r   ÚkindrÝ  rÞ  r°   r»  r¼   s          r   Ústring_from_kind_and_dataz#PythonAPI.string_from_kind_and_data{  sd   € ÝŒ˜tœz­B¬J°r©N¬N¸D¼LÈ$Ì/Ð+ZÑ[Ô[ˆØ+ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   d¨F°DÐ%9Ñ:Ô:Ð:r   c                 ó¬   — t          j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             ||g¦  «        S )NÚPyBytes_AsStringr´   rÊ  ©r   r?   r°   r»  r¼   s        r   Úbytes_as_stringzPythonAPI.bytes_as_string�  sP   € ÝŒ˜tœ|¨d¬j¨\Ñ:Ô:ˆØ"ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óŒ  — t          j        t          j        d¦  «        | j        | j                             ¦   «         | j                             ¦   «         g¦  «        }d}|                      ||¬¦  «        }| j         	                    ||||g¦  «        }| j         
                    dt          |j        d¦  «        |¦  «        }|S )NrÇ   ÚPyBytes_AsStringAndSizer´   r‰  r�  )r   r·   r†   rk   r•   rƒ   r”   r¹   r:   rº   Úicmp_signedr   r¦   )	r   r?   Úp_bufferrÏ  r°   r»  r¼   ÚresultrÑ  s	            r   Úbytes_as_string_and_sizez"PythonAPI.bytes_as_string_and_size‡  s­   € ÝŒÝŒJ�r‰NŒNØŒZ˜œ×0Ò0Ñ2Ô2°D´O×4NÒ4NÑ4PÔ4PÐQñ
ô 
ˆð *ˆØ×Ò ¨5ÐÑ1Ô1ˆØ”×"Ò" 2¨¨X°xÐ'@ÑAÔAˆØŒ\×%Ò% d­H°V´[À"Ñ,EÔ,EÀvÑNÔNˆØˆ	r   c                 óº   — t          j        | j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             |||g¦  «        S )NÚPyBytes_FromStringAndSizer´   rÛ  rÜ  s         r   Úbytes_from_string_and_sizez$PythonAPI.bytes_from_string_and_size’  sW   € ÝŒ˜tœz¨D¬L¸$¼/Ð+JÑKÔKˆØ+ˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   f¨d ^Ñ4Ô4Ð4r   c                 ó¬   — t          j        | j        | j        g¦  «        }d}|                      ||¬¦  «        }| j                             ||g¦  «        S )NÚPyObject_Hashr´   )r   r·   r›   rk   r¹   r:   rº   ré  s        r   Úobject_hashzPythonAPI.object_hash˜  sP   € ÝŒ˜tœ~°´
¨~Ñ>Ô>ˆØˆØ×Ò ¨5ÐÑ1Ô1ˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 ó¨   — t          j        | j        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚPyObject_Strr´   rÄ   r»   s       r   Ú
object_strzPythonAPI.object_strž  sK   € ÝŒ˜tœz¨D¬J¨<Ñ8Ô8ˆØ×Ò ¨>ÐÑ:Ô:ˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óX   — |                       ¦   «         }|                      |¦  «         |S r   )rº  r½   ©r   r?   s     r   ró   zPythonAPI.make_none£  s*   € Ø×ÒÑ Ô ˆØ�Š�CÑÔÐØˆ
r   c                 ó,   — |                       d¦  «        S )NÚ_Py_NoneStruct)ré   r   s    r   rº  zPythonAPI.borrow_none¨  s   € Ø× Ò Ð!1Ñ2Ô2Ð2r   c                 óÊ   — t          j        t          j        ¦   «         | j        gd¬¦  «        }|                      |d¬¦  «        }| j                             ||f|z   ¦  «        S )NTrÈ   ÚPySys_FormatStdoutr´   )r   r·   r¸   r•   r¹   r:   rº   )r   rÏ   rÍ   r°   r¼   s        r   Úsys_write_stdoutzPythonAPI.sys_write_stdout«  sY   € ÝŒ�rœ{™}œ}¨t¬|¨nÀdÐKÑKÔKˆØ×Ò Ð+?ÐÑ@Ô@ˆØŒ|× Ò   c V¨d¡]Ñ3Ô3Ð3r   c                 óÀ   — t          j        t          j        ¦   «         | j        g¦  «        }|                      |d¬¦  «        }| j                             ||f¦  «        S )zL
        Dump a Python object on C stderr.  For debugging purposes.
        Ú_PyObject_Dumpr´   r¶   r»   s       r   Úobject_dumpzPythonAPI.object_dump°  sR   € õ Œ�rœ{™}œ}¨t¬z¨lÑ;Ô;ˆØ×Ò Ð+;ÐÑ<Ô<ˆØŒ|× Ò   c VÑ,Ô,Ð,r   c                 óì  — | j         j        s
J d¦   «         ‚t          j        d¦  «        }|                      |                      |j        ¦  «        ¦  «        }t          j        | j        | j	        | j        ||| j        g¦  «        }|  
                    |d¬¦  «        }|j        d                              d¦  «         | j                              t          j        |j        ¦  «        }| j                              t          j        t#          |j        ¦  «        ¦  «        }	t'          j        | j        |¦  «        }
| j                             || j                             |
| j	        ¦  «        |||	|g¦  «        S )NzNRT requiredrÇ   Ú"NRT_adapt_ndarray_to_python_acqrefr´   r   Ú	nocapture)r9   Ú
enable_nrtr   r†   ÚunserializeÚserialize_objectÚbox_typer·   rk   r‡   r¹   rÍ   Úadd_attributer  r   r   ÚndimrÛ   Úmutabler   rG  r:   rº   Úbitcast)r   ÚarytyÚaryÚdtypeptrÚinttyÚserial_aryty_pytyper°   r¼   r  ÚwritableÚaryptrs              r   Únrt_adapt_ndarray_to_pythonz%PythonAPI.nrt_adapt_ndarray_to_python¼  sH  € ØŒ|Ô&Ð6Ð6¨Ñ6Ô6Ð6å”
˜2‘”ˆà"×.Ò.¨t×/DÒ/DÀUÄ^Ñ/TÔ/TÑUÔUÐåŒ˜tœzØ $¤¨d¬j¸%ÀÈÌ
ÐSñUô Uˆà×Ò Ð+OÐÑPÔPˆØ
Œ�Œ
× Ò  Ñ-Ô-Ð-àŒ|×(Ò(­¬°e´jÑAÔAˆØ”<×,Ò,­U¬[½#¸e¼mÑ:LÔ:LÑMÔMˆåÔ*¨4¬<¸Ñ=Ô=ˆØŒ|× Ò   d¤l×&:Ò&:¸6Ø;?¼<ñ'Iô 'Ià&9Ø&*¨H°hð&@ñ Aô Að 	Ar   c                 óž  — | j         j        }t          j        t          j        t          j        t          j        g¦  «        }t	          j        ||d¦  «        }|j        d                              d¦  «         |j        d                              d¦  «         |j	                             d¦  «         | j          
                    |||g¦  «        S )za
        Allocate a new MemInfo with data payload borrowed from a python
        object.
        ÚNRT_meminfo_new_from_pyobjectr   r  r‘  Únoalias)r:   r~   r   r·   r   Ú	voidptr_tÚget_or_insert_functionrÍ   r  Úreturn_valuerº   )r   Údatark   Úmodr°   r¼   s         r   Únrt_meminfo_new_from_pyobjectz'PythonAPI.nrt_meminfo_new_from_pyobjectÑ  s¸   € ð
 ŒlÔ!ˆÝŒÝÔÝÔ¥Ô 1Ð2ñô ˆõ Ô+ØØØ+ñô ˆð
 	Œ�Œ
× Ò  Ñ-Ô-Ð-Ø
Œ�Œ
× Ò  Ñ-Ô-Ð-Ø
Œ×%Ò% iÑ0Ô0Ð0ØŒ|× Ò   d¨E ]Ñ3Ô3Ð3r   c                 óü   — | j         j        }t          j        | j        t
          j        g¦  «        }t          j        ||d¦  «        }|j         	                    d¦  «         | j          
                    ||g¦  «        S )NÚNRT_meminfo_as_pyobjectr  )r:   r~   r   r·   rk   r   r  r  r  r  rº   )r   Úmiptrr  r°   r¼   s        r   Únrt_meminfo_as_pyobjectz!PythonAPI.nrt_meminfo_as_pyobjectå  sz   € ØŒlÔ!ˆÝŒØŒJÝÔÐñ
ô 
ˆõ Ô+ØØØ%ñ
ô 
ˆð
 	Œ×%Ò% iÑ0Ô0Ð0ØŒ|× Ò   e WÑ-Ô-Ð-r   c                 óü   — | j         j        }t          j        t          j        | j        g¦  «        }t	          j        ||d¦  «        }|j         	                    d¦  «         | j          
                    ||g¦  «        S )NÚNRT_meminfo_from_pyobjectr  )r:   r~   r   r·   r   r  rk   r  r  r  rº   )r   Úmiobjr  r°   r¼   s        r   Únrt_meminfo_from_pyobjectz#PythonAPI.nrt_meminfo_from_pyobjectó  sy   € ØŒlÔ!ˆÝŒÝÔØŒZˆLñ
ô 
ˆõ Ô+ØØØ'ñ
ô 
ˆð
 	Œ×%Ò% iÑ0Ô0Ð0ØŒ|× Ò   e WÑ-Ô-Ð-r   c                 ól  — | j         j        sJ ‚t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }|j        d          	                    d¦  «         |j        d          	                    d¦  «         | j
                             |||f¦  «        S )NrÇ   ÚNRT_adapt_ndarray_from_pythonr´   r   r  r‘  ©r9   r  r   r·   r†   rk   r‡   r¹   rÍ   r  r:   rº   ©r   r  rd  r°   r¼   s        r   Únrt_adapt_ndarray_from_pythonz'PythonAPI.nrt_adapt_ndarray_from_python  sž   € ØŒ|Ô&Ð&Ð&Ð&ÝŒ�rœz¨"™~œ~°´
¸D¼LÐ/IÑJÔJˆØ×Ò Ð+JÐÑKÔKˆØ
Œ�Œ
× Ò  Ñ-Ô-Ð-Ø
Œ�Œ
× Ò  Ñ-Ô-Ð-ØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 óŽ  — | j         j        sJ ‚t          j        t          j        ¦   «         t          j        | j        ¦  «        | j        g¦  «        }|                      |d¬¦  «        }|j	        d          
                    d¦  «         |j	        d          
                    d¦  «         | j                             |||f¦  «        S )NÚNRT_adapt_buffer_from_pythonr´   r   r  r‘  )r9   r  r   r·   r¸   r…   rš   r‡   r¹   rÍ   r  r:   rº   ©r   Úbufrd  r°   r¼   s        r   Únrt_adapt_buffer_from_pythonz&PythonAPI.nrt_adapt_buffer_from_python	  s®   € ØŒ|Ô&Ð&Ð&Ð&ÝŒ�rœ{™}œ}­r¬~¸dÔ>NÑ/OÔ/OØ/3¬|ð/=ñ >ô >ˆà×Ò Ð+IÐÑJÔJˆØ
Œ�Œ
× Ò  Ñ-Ô-Ð-Ø
Œ�Œ
× Ò  Ñ-Ô-Ð-ØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 ó8   — t          j        | j        ||¦  «        S r   )r   r  r~   )r   r°   rµ   s      r   r¹   zPythonAPI._get_function  s   € ÝÔ-¨d¬k¸4ÀÑFÔFÐFr   c                 ó@   — | j                              | j        ¦  «        S r   )r:   Úallocark   r   s    r   Ú
alloca_objzPythonAPI.alloca_obj  s   € ØŒ|×"Ò" 4¤:Ñ.Ô.Ð.r   c                 ó`   — t          j        | j        t          | j        d¦  «        ¦  «        }|S )zT
        Return a pointer to a stack-allocated, zero-initialized Py_buffer.
        N)r   rG  r:   r   rš   )r   rd  s     r   Úalloca_bufferzPythonAPI.alloca_buffer  s1   € õ
 Ô'¨¬Ý(0°Ô1AÀ4Ñ(HÔ(HñJô Jˆàˆ
r   c              #   ó¨   K  — t          j        | j        t          j        | j        |¦  «        ¦  «        5  d V — d d d ¦  «         d S # 1 swxY w Y   d S r   )r   r”  r:   rm   rû  s     r   rC  zPythonAPI.if_object_ok#  sž   è è € åÔ˜tœ|Ý&Ô2°4´<ÀÑEÔEñGô Gð 	ð 	àˆEˆEˆEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   µAÁAÁAc                 óð   — |                       |¦  «        }|                      |¦  «        }| j                             | j        d¦  «        }|                      ||¦  «         |                      |¦  «         d S )Nz%s)rù  rÌ  r9   rÜ   r~   r   rÁ   )r   r?   rË  r!  rÏ   s        r   Úprint_objectzPythonAPI.print_object)  sm   € Ø—’ Ñ%Ô%ˆØ×$Ò$ VÑ,Ô,ˆØŒl×.Ò.¨t¬{¸DÑAÔAˆØ×Ò˜c 4Ñ(Ô(Ð(Ø�Š�FÑÔÐÐÐr   c                 óp   — | j                              | j        |¦  «        }|                      |¦  «         d S r   )r9   rÜ   r~   r   )r   ÚtextrÏ   s      r   Úprint_stringzPythonAPI.print_string0  s5   € ØŒl×.Ò.¨t¬{¸DÑAÔAˆØ×Ò˜cÑ"Ô"Ð"Ð"Ð"r   c                 ó,   — t          | j        d ¦  «        S r   )r   rk   r   s    r   r©   zPythonAPI.get_null_object4  s   € Ý˜œ
 DÑ)Ô)Ð)r   c                 ób   — |                       ¦   «         }| j                             |¦  «         d S r   )ró   r:   rq   )r   Únones     r   Úreturn_nonezPythonAPI.return_none7  s-   € Ø�~Š~ÑÔˆØŒ×Ò˜ÑÔÐÐÐr   c                 óÎ  — t          |¦  «        }|                      | j                             t          j        |¦  «        ¦  «        }|                      |¦  «        5  t          |¦  «        D ]_}| j                             t          j        |¦  «        }|                      ||         ¦  «         |  	                    ||||         ¦  «         Œ`	 d d d ¦  «         n# 1 swxY w Y   |S r   )
ra   rþ  r9   r  r   r“   rC  r  r½   r
  )r   r  r  Úseqr  r	  s         r   Ú	list_packzPythonAPI.list_pack;  s
  € Ý�‰JŒJˆØ�mŠm˜DœL×5Ò5µe´jÀ!ÑDÔDÑEÔEˆØ×Ò˜sÑ#Ô#ð 	6ð 	6Ý˜1‘X”Xð 6ð 6�Ø”l×/Ò/µ´
¸AÑ>Ô>�Ø—’˜E !œHÑ%Ô%Ð%Ø×!Ò! # s¨E°!¬HÑ5Ô5Ð5Ð5ð6ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð
 ˆ
s   ÁA0CÃCÃ!Cc                 ó  — t          j        | j        | j        t          j        d¦  «        | j        f¦  «        }|                      |d¬¦  «        }| j                             | j                             |¦  «        d¦  «        }| j                             | j                             |¦  «        d¦  «        }| j                             | j                             |¦  «        d¦  «        }| j         	                    ||||f¦  «        S )z«
        Unserialize some data.  *structptr* should be a pointer to
        a {i8* data, i32 length, i8* hashbuf, i8* func_ptr, i32 alloc_flag}
        structure.
        rÇ   Únumba_unpickler´   r   r‘  é   )
r   r·   rk   r‡   r†   r¹   r:   Úextract_valuerp   rº   )r   Ú	structptrr°   r¼   rd  r  Úhasheds          r   r  zPythonAPI.unserializeE  sÞ   € õ Œ˜tœzØ"œl­B¬J°r©N¬N¸D¼LÐIñKô Kˆà×Ò Ð+;ÐÑ<Ô<ˆØŒl×(Ò(¨¬×):Ò):¸9Ñ)EÔ)EÀqÑIÔIˆØŒL×&Ò& t¤|×'8Ò'8¸Ñ'CÔ'CÀQÑGÔGˆØ”×+Ò+¨D¬L×,=Ò,=¸iÑ,HÔ,HÈ!ÑLÔLˆØŒ|× Ò   c¨1¨fÐ%5Ñ6Ô6Ð6r   c                 ó¶   — t          j        | j        | j        | j        f¦  «        }|                      |d¬¦  «        }| j                             |||f¦  «        S )zÉ
        Serialize some data at runtime. Returns a pointer to a python tuple
        (bytes_data, hash) where the first element is the serialized data as
        bytes and the second its hash.
        Ú"numba_runtime_build_excinfo_structr´   rÄ   )r   Ú	struct_gvÚexc_argsr°   r¼   s        r   Úbuild_dynamic_excinfo_structz&PythonAPI.build_dynamic_excinfo_structS  sV   € õ Œ˜tœz¨D¬J¸¼
Ð+CÑDÔDˆØ×Ò Ð+OÐÑPÔPˆØŒ|× Ò   i°Ð%:Ñ;Ô;Ð;r   c                 ó   — t          j        |¦  «        }t          |¦  «        dk     sJ ‚dt          j        dk    rt          |¦  «        ndz  }t          j        |¦  «        }t          j        t          j	        |¦  «         
                    ¦   «         ¦  «        }| j                             | j        ||¦  «        }| j                             | j        |› d�|¦  «        }t          j        |                     | j        ¦  «        t          t%          j        d¦  «        |j        j        j        ¦  «        |                     | j        ¦  «        t          j        | j        ¦  «        t          t%          j        d¦  «        d¦  «        g¦  «        }|S )zÊ
        Same as serialize_object(), but don't create a global variable,
        simply return a literal for structure:
        {i8* data, i32 length, i8* hashbuf, i8* func_ptr, i32 alloc_flag}
        l        z.const.pickledata.%sr   ÚDIFF_IRz.sha1rÇ   )r   Údumpsra   r	   rQ  Úidr   Úmake_bytearrayÚhashlibÚsha1Údigestr9   Úinsert_unique_constr~   r   Úliteral_structr  r‡   r   r†   r¦   r§   r!  Úget_null_value)	r   r?   r  rµ   ÚbdatarJ  ÚarrÚhasharrÚstructs	            r   Úserialize_uncachedzPythonAPI.serialize_uncached]  sG  € õ Œ˜sÑ#Ô#ˆÝ�4‰yŒy˜5Ò Ð Ð Ð Ø%µF´NÀaÒ4GÐ4G­¨C©¬¨ÈYÑWˆÝÔ& tÑ,Ô,ˆõ Ô'­¬°TÑ(:Ô(:×(AÒ(AÑ(CÔ(CÑDÔDˆØŒl×.Ò.¨t¬{¸DÀ%ÑHÔHˆØ”,×2Ò2ØŒK˜D˜˜˜¨ñ
ô 
ˆõ Ô(Ø�KŠK˜œÑ%Ô%Ý•R”Z ‘^”^ S¤XÔ%5Ô%;Ñ<Ô<Ø�OŠO˜DœLÑ)Ô)ÝÔ" 4¤<Ñ0Ô0Ý•R”Z ‘^”^ QÑ'Ô'ð*ñ ô ˆð ˆr   c                 ó   — 	 | j         j        |         }ny# t          $ rl |                      |¦  «        }dt          j        dk    rt          |¦  «        ndz  }| j                             | j         ||¦  «        }|| j         j        |<   Y nw xY w|S )zñ
        Serialize the given object in the bitcode, and return it
        as a pointer to a
        {i8* data, i32 length, i8* hashbuf, i8* fn_ptr, i32 alloc_flag},
        structure constant (suitable for passing to unserialize()).
        z.const.picklebuf.%sr   rQ  )	r~   r   r   r_  r	   rQ  rS  r9   rX  )r   r?   Úgvr^  rµ   s        r   r	  zPythonAPI.serialize_objectz  sž   € ð	/Ø”Ô)¨#Ô.ˆBˆBøÝð 	/ð 	/ð 	/Ø×,Ò,¨SÑ1Ô1ˆFØ(µv´~ÈÒ7JÐ7J­B¨s©G¬G¨GÐPYÑZˆDØ”×1Ò1°$´+¸tÀVÑLÔLˆBà,.ˆDŒKÔ$ SÑ)Ð)Ð)ð	/øøøð ˆ	s   ‚ •A3BÂ
Bc                 óZ   — t          j        | j        |                      ¦   «         ¦  «        S r   )r   rm   r:   rã   r   s    r   Úc_api_errorzPythonAPI.c_api_error‹  s#   € ÝÔ" 4¤<°×1BÒ1BÑ1DÔ1DÑEÔEÐEr   c                 óž   — ddl m} t                               |j        |¦  «        }t          | j        | j        | ¦  «        } ||||¦  «        S )zn
        Unbox the Python object as the given Numba type.
        A NativeValue instance is returned.
        r   )Úunbox_unsupported)Únumba.core.boxingre  Ú	_unboxersr&   Ú	__class__r<   r9   r:   )r   r3   r?   re  ÚimplÚcs         r   r>   zPythonAPI.to_native_valueŽ  sW   € ð
 	8Ð7Ð7Ð7Ð7Ð7å×Ò ¤Ð/@ÑAÔAˆÝ˜$œ,¨¬°dÑ;Ô;ˆØˆt�C˜˜aÑ Ô Ð r   c                 ó|   — t          |t          j        ¦  «        r
J d¦   «         ‚|                      |||¦  «        }|S )Nz;callconv should have prevented the return of optional value)rV   r   ÚOptionalr0   )r   r3   r4   r1   Úouts        r   Úfrom_native_returnzPythonAPI.from_native_return™  sS   € Ý˜c¥5¤>Ñ2Ô2ð 	Eð 	Eð 5Eñ 	Eô 	Eð 	Eð ×$Ò$ S¨#¨{Ñ;Ô;ˆØˆ
r   c                 ó    — ddl m} t                               |j        |¦  «        }t          | j        | j        | |¦  «        } ||||¦  «        S )zÒ
        Box the native value of the given Numba type.  A Python object
        pointer is returned (NULL if an error occurred).
        This method steals any native (NRT) reference embedded in *val*.
        r   )Úbox_unsupported)rf  rp  Ú_boxersr&   rh  r,   r9   r:   )r   r3   r4   r1   rp  ri  rj  s          r   r0   zPythonAPI.from_native_value   sV   € ð 	6Ð5Ð5Ð5Ð5Ð5å�~Š~˜cœm¨_Ñ=Ô=ˆå˜œ d¤l°D¸+ÑFÔFˆØˆt�C˜˜aÑ Ô Ð r   c                 ó6  — t                                |j        ¦  «        }|€t          j        S t          j        | j        t          j        ¦  «        }t          | j        | j        | ||¦  «        } ||||¦  «         | j         	                    |j
        ¦  «        S )z�
        Reflect the native value onto its Python original, if any.
        An error bit (as an LLVM value) is returned.
        )Ú_reflectorsr&   rh  r   rP   rG  r:   rB   r9   rp   rE   )r   r3   r4   r1   ri  rE   rj  s          r   rJ   zPythonAPI.reflect_native_value­  sˆ   € õ
 ×!Ò! #¤-Ñ0Ô0ˆØˆ<åÔ$Ð$åÔ,¨T¬\½7Ô;LÑMÔMˆÝ˜DœL¨$¬,¸¸kØ$ñ&ô &ˆàˆˆS�#�qÑÔÐØŒ|× Ò  ¤Ñ,Ô,Ð,r   c                 óº   — t          j        | j                             |¦  «        ¦  «        }| j                             | j        ||¦  «        }t          |¦  «        S )zy
        Extract the generator structure pointer from a generator *obj*
        (a _dynfunc.Generator instance).
        )r   r…   r9   Úget_data_typeÚget_generator_stater:   rM   )r   r?   r3   Ú
gen_ptr_tyrO   s        r   Úto_native_generatorzPythonAPI.to_native_generator½  sL   € õ
 ”^ D¤L×$>Ò$>¸sÑ$CÔ$CÑDÔDˆ
Ø”×0Ò0°´¸sÀJÑOÔOˆÝ˜5Ñ!Ô!Ð!r   c           	      ó  — | j                              |¦  «        }|j        rJ ‚| j                              |¦  «        }| j                              |¦  «        }t          j        | j        | j        | j        | j        g¦  «        }|                      ||j	        ¬¦  «        }t          j        t          j
        ¦   «         | j        g¦  «        }	|j        r|                      |	|j        ¬¦  «        }
n"t          t          j        |	¦  «        d¦  «        }
t          j        | j        | j        | j        t          j        |¦  «        t          j        |	¦  «        | j        g¦  «        }|                      |d¬¦  «        }t          | j        |¦  «        }| j                             || j        ¦  «        }|€|                      ¦   «         }| j                             || j        ¦  «        }| j                             |||||
|f¦  «        S )zÝ
        Make a Numba generator (a _dynfunc.Generator instance) from a
        generator structure pointer *val*.
        *env* is an optional _dynfunc.Environment instance to be wrapped
        in the generator.
        r´   NÚnumba_make_generator)r9   ru  Ú
is_pointerÚget_abi_sizeofÚget_generator_descr   r·   rk   r¹   Úllvm_cpython_wrapper_namer¸   r‡   Úhas_finalizerÚllvm_finalizer_namer   r…   r”   r:   r  r©   rº   )r   r4   r3   rX   ÚlltyÚgen_struct_sizeÚgendescÚgenfntyÚgenfnÚfinalizertyÚ	finalizerr°   r¼   Ú
state_sizeÚinitial_states                  r   Úfrom_native_generatorzPythonAPI.from_native_generatorÆ  sÒ  € ð Œ|×)Ò)¨#Ñ.Ô.ˆØ”?Ð"Ð"Ð"Øœ,×5Ò5°dÑ;Ô;ˆà”,×1Ò1°#Ñ6Ô6ˆõ ”/ $¤*¨t¬z¸4¼:ÀtÄzÐ.RÑSÔSˆØ×"Ò" 7°Ô1RÐ"ÑSÔSˆõ ”o¥b¤k¡m¤m°d´l°^ÑDÔDˆØÔð 	DØ×*Ò*¨;¸WÔ=XÐ*ÑYÔYˆIˆIå ¥¤°Ñ!<Ô!<¸dÑCÔCˆIõ Œ˜tœz¨D¬OØ,0¬LÝ,.¬N¸7Ñ,CÔ,CÝ,.¬N¸;Ñ,GÔ,GØ,0¬Lð	,:ñ ;ô ;ˆð
 ×Ò Ð+AÐÑBÔBˆå˜dœo¨Ñ?Ô?ˆ
Øœ×,Ò,¨S°$´,Ñ?Ô?ˆØˆ;Ø×&Ò&Ñ(Ô(ˆCØŒl×"Ò" 3¨¬Ñ5Ô5ˆàŒ|× Ò  Ø",¨m¸UÀIÈsÐ!SñUô Uð 	Ur   c                 ól  — | j         j        rJ ‚t          j        t          j        d¦  «        | j        | j        g¦  «        }|                      |d¬¦  «        }|j        d          	                    d¦  «         |j        d          	                    d¦  «         | j
                             |||f¦  «        S )NrÇ   Únumba_adapt_ndarrayr´   r   r  r‘  r*  r+  s        r   Únumba_array_adaptorzPythonAPI.numba_array_adaptorï  sž   € Ø”<Ô*Ð*Ð*Ð*ÝŒ�rœz¨"™~œ~°´
¸D¼LÐ/IÑJÔJˆØ×Ò Ð+@ÐÑAÔAˆØ
Œ�Œ
× Ò  Ñ-Ô-Ð-Ø
Œ�Œ
× Ò  Ñ-Ô-Ð-ØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 ór  — t          j        t          j        ¦   «         t          j        | j        ¦  «        | j        g¦  «        }|                      |d¬¦  «        }|j        d                              d¦  «         |j        d                              d¦  «         | j	         
                    |||f¦  «        S )NÚnumba_adapt_bufferr´   r   r  r‘  )r   r·   r¸   r…   rš   r‡   r¹   rÍ   r  r:   rº   r/  s        r   Únumba_buffer_adaptorzPythonAPI.numba_buffer_adaptor÷  s�   € ÝŒ�rœ{™}œ}Ý œn¨TÔ-=Ñ>Ô>ÀÄÐMñOô Oˆà×Ò Ð+?ÐÑ@Ô@ˆØ
Œ�Œ
× Ò  Ñ-Ô-Ð-Ø
Œ�Œ
× Ò  Ñ-Ô-Ð-ØŒ|× Ò   c¨3 ZÑ0Ô0Ð0r   c                 óÐ   — t          j        t          j        d¦  «        | j        |j        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÇ   Únumba_complex_adaptorr´   )r   r·   r†   rk   r¦   r¹   r:   rº   )r   rÞ  Úcmplxr°   r¼   s        r   Úcomplex_adaptorzPythonAPI.complex_adaptorÿ  sY   € ÝŒ�rœz¨"™~œ~°´
¸E¼JÐ/GÑHÔHˆØ×Ò Ð+BÐÑCÔCˆØŒ|× Ò   d¨E ]Ñ3Ô3Ð3r   c                 óÚ   — t          j        | j        | j        t          j        | j        ¦  «        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NÚnumba_extract_record_datar´   )	r   r·   r‡   rk   r…   rš   r¹   r:   rº   ©r   r?   Úpbufr°   r¼   s        r   Úextract_record_datazPythonAPI.extract_record_data  se   € ÝŒ˜tœ|Ø $¤
­B¬N¸4Ô;KÑ,LÔ,LÐMñOô Oˆà×Ò Ð+FÐÑGÔGˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   c                 óô   — t          j        t          j        d¦  «        | j        t          j        | j        ¦  «        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÇ   Únumba_get_bufferr´   )	r   r·   r†   rk   r…   rš   r¹   r:   rº   r—  s        r   Ú
get_bufferzPythonAPI.get_buffer
  sk   € ÝŒ�rœz¨"™~œ~Ø $¤
­B¬N¸4Ô;KÑ,LÔ,LÐMñOô Oˆà×Ò Ð+=ÐÑ>Ô>ˆØŒ|× Ò   c¨4 [Ñ1Ô1Ð1r   c                 óä   — t          j        t          j        ¦   «         t          j        | j        ¦  «        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )NÚnumba_release_bufferr´   )r   r·   r¸   r…   rš   r¹   r:   rº   )r   r˜  r°   r¼   s       r   Úrelease_bufferzPythonAPI.release_buffer  s\   € ÝŒ�rœ{™}œ}­r¬~¸dÔ>NÑ/OÔ/OÐ.PÑQÔQˆØ×Ò Ð+AÐÑBÔBˆØŒ|× Ò   d VÑ,Ô,Ð,r   c                 óÂ   — t          j        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )Né@   Únumba_extract_np_datetimer´   r:  r»   s       r   Úextract_np_datetimezPythonAPI.extract_np_datetime  sR   € ÝŒ�rœz¨"™~œ~°´
¨|Ñ<Ô<ˆØ×Ò Ð+FÐÑGÔGˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óÂ   — t          j        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }| j                             ||g¦  «        S )Nr¡  Únumba_extract_np_timedeltar´   r:  r»   s       r   Úextract_np_timedeltazPythonAPI.extract_np_timedelta  sR   € ÝŒ�rœz¨"™~œ~°´
¨|Ñ<Ô<ˆØ×Ò Ð+GÐÑHÔHˆØŒ|× Ò   c UÑ+Ô+Ð+r   c                 óH  — t          t          j        d¦  «        t          |¦  «        ¦  «        }t          j        | j        t          j        d¦  «        t          j        d¦  «        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÇ   r¡  Únumba_create_np_datetimer´   ©	r   r   r†   rÛ   r·   rk   r¹   r:   rº   ©r   r4   Ú	unit_coder°   r¼   s        r   Úcreate_np_datetimezPythonAPI.create_np_datetime  s}   € Ý�RœZ¨™^œ^­S°©^¬^Ñ<Ô<ˆ	ÝŒ˜tœz­B¬J°r©N¬N½B¼JÀr¹N¼NÐ+KÑLÔLˆØ×Ò Ð+EÐÑFÔFˆØŒ|× Ò   c¨9Ð%5Ñ6Ô6Ð6r   c                 óH  — t          t          j        d¦  «        t          |¦  «        ¦  «        }t          j        | j        t          j        d¦  «        t          j        d¦  «        g¦  «        }|                      |d¬¦  «        }| j                             |||g¦  «        S )NrÇ   r¡  Únumba_create_np_timedeltar´   r©  rª  s        r   Úcreate_np_timedeltazPythonAPI.create_np_timedelta%  s}   € Ý�RœZ¨™^œ^­S°©^¬^Ñ<Ô<ˆ	ÝŒ˜tœz­B¬J°r©N¬N½B¼JÀr¹N¼NÐ+KÑLÔLˆØ×Ò Ð+FÐÑGÔGˆØŒ|× Ò   c¨9Ð%5Ñ6Ô6Ð6r   c                 ól  — t          j        | j        t          j        t          j        d¦  «        ¦  «        t          j        d¦  «        | j        g¦  «        }|                      |d¬¦  «        }|                     |                     |¦  «        ¦  «        }| j         	                    ||||g¦  «        S )Nr{   rÇ   Únumba_recreate_recordr´   )
r   r·   rk   r…   r†   r¹   ru   re   r:   rº   )r   ÚpdatarÞ  Údtyper1   r°   r¼   Ú	dtypeaddrs           r   Úrecreate_recordzPythonAPI.recreate_record+  s›   € ÝŒ˜tœz­B¬N½2¼:Àa¹=¼=Ñ,IÔ,IÝ,.¬J°r©N¬N¸D¼Jð,Hñ Iô Iˆà×Ò Ð+BÐÑCÔCˆØ×*Ò*¨;×+@Ò+@ÀÑ+GÔ+GÑHÔHˆ	ØŒ|× Ò   e¨T°9Ð%=Ñ>Ô>Ð>r   c                 óÒ   — | j                              | j        |¦  «        }| j                              t          j        t          |¦  «        ¦  «        }|                      ||¦  «        S r   )r9   rÜ   r~   r  r   r“   ra   rß  )r   rÝ  r!  Úszs       r   Ústring_from_constant_stringz%PythonAPI.string_from_constant_string2  sP   € ØŒ|×/Ò/°´¸VÑDÔDˆØŒ\×&Ò&¥u¤zµ3°v±;´;Ñ?Ô?ˆØ×/Ò/°°bÑ9Ô9Ð9r   c           	      óÀ  — | j         }| j                             |||¦  «        }|j        j        }|j        }||k    r!t
                               d|› d|› d�¦  «        ‚| j                             ||j        ||¦  «        \  }}	t          j
        |t          j        d¬¦  «        }
| j                             |j        ¦  «        }t          j
        ||d¬¦  «        }|                     |j        ¦  «        5 \  }}|5  |                     |j        |
¦  «         | j        j                             || |¦  «         ddd¦  «         n# 1 swxY w Y   |5  t%          j        | j        ||||	¦  «        }	|                     |	|¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |                     |
¦  «        }|                     |¦  «        }	||	fS )aP  Calls into Numba jitted code and propagate error using the Python
        calling convention.

        Parameters
        ----------
        func : function
            The Python function to be compiled. This function is compiled
            in nopython-mode.
        sig : numba.typing.Signature
            The function signature for *func*.
        args : Sequence[llvmlite.binding.Value]
            LLVM values to use as arguments.

        Returns
        -------
        (is_error, res) :  2-tuple of llvmlite.binding.Value.
            is_error : true iff *func* raised an exception.
            res : Returned value from *func* iff *is_error* is false.

        If *is_error* is true, this method will adapt the nopython exception
        into a Python exception. Caller should return NULL to Python to
        indicate an error.
        zmismatching signature z != z.
Trg   N)r:   r9   Úcompile_subroutineÚ	signaturer¨   ÚerrorsÚLoweringErrorÚcall_internal_no_propagateÚfndescr   rj   Úbool_tr’   rl   rE   rD   rª   Úraise_errorr   Úfix_returning_optionalrp   )r   r   ÚsigrÍ   r:   ÚcresÚ	got_rettyÚrettyrž  ré  Úis_error_ptrÚres_typeÚres_ptrÚhas_errÚno_errrE   s                   r   Úcall_jit_codezPythonAPI.call_jit_code7  s­  € ð2 ”,ˆØŒ|×.Ò.¨w¸¸cÑBÔBˆØ”NÔ.ˆ	Ø”ˆØ˜ÒÐõ ×&Ò&ØB¨ÐBÐB¸ÐBÐBÐBñô ð ð ”l×=Ò=Ø�T”[ # tñ
ô 
‰ˆ�õ Ô*¨7µG´NÈ$ÐOÑOÔOˆØ”<×.Ò.¨s¬Ñ?Ô?ˆÝÔ% g¨x¸tÐDÑDÔDˆð �_Š_˜Vœ_Ñ-Ô-ð 
	,Ñ1B°'¸6Øð Jð JØ—’˜fœo¨|Ñ<Ô<Ð<à”Ô&×2Ò2°7¸DÀ&ÑIÔIÐIðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jð ð ,ð ,åÔ5Ø”L '¨3°¸ñô �ð —’˜c 7Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð
	,ð 
	,ð 
	,ñ 
	,ô 
	,ð 
	,ð 
	,ð 
	,ð 
	,ð 
	,ð 
	,øøøð 
	,ð 
	,ð 
	,ð 
	,ð —<’< Ñ-Ô-ˆØ�lŠl˜7Ñ#Ô#ˆØ˜ˆ}ÐsZ   Ã4F'Ã:=EÄ7F'ÅE	ÅF'Å
E	ÅF'Å4FÆF'ÆF	ÆF'ÆF	ÆF'Æ'F+Æ.F+)Fr¢   r   )F)r   )r*   rR   )±r'   r(   r)   r7   r   r¡   r±   r½   rÁ   rÅ   rÕ   rØ   rß   rã   ræ   ro   rð   rõ   rú   rý   r   r  r  Ú
contextlibÚcontextmanagerr  ré   r"  r$  r*  r/  r2  r7  r>  rA  rG  rK  rQ  rU  rY  r\  r`  rg  rk  rp  rs  rv  ry  r�  r„  r†  rŒ  r’  r–  rš  r�  r   r£  r¦  r©  r­  r°  r³  r¶  r¼  r¿  rÃ  rÆ  rÉ  rÍ  rÒ  rÏ  rÙ  rß  rã  rí  rñ  rô  rú  rþ  r  r  r
  rn   r  r  r  r  r"  r(  r-  r1  r5  r8  r;  rA  rN  rS  rW  rZ  r^  ra  re  rh  rm  rs  rz  rº   r  r‚  r…  r£  r§  rª  r®  r±  r´  r·  rº  r¼  rÁ  rÄ  rÇ  rÌ  rÒ  rØ  rß  râ  ræ  rê  rð  ró  rö  rù  ró   rº  r   r  r  r  r#  r'  r,  r1  r¹   r5  r7  rC  r:  r=  r©   rA  rD  r  rO  r_  r	  rc  r>   rn  r0   rJ   rx  rŠ  r�  r�  r”  r™  rœ  rŸ  r£  r¦  r¬  r¯  rµ  r¸  rÌ  r*   r   r   ry   ry   ¡   sR  € € € € € ðð ð
Fð Fð FðB@ð @ð @ð ?DØ*,ðð ð ð ð2%ð %ð %ð
%ð %ð %ð
,ð ,ð ,ðNð Nð Nð?ð ?ð ?ð	Nð 	Nð 	Nð)ð )ð )ð
)ð )ð )ð
5ð 5ð 5ðJð Jð Jð	-ð 	-ð 	-ð 	-ð8ð 8ð 8ð1ð 1ð 1ð-ð -ð -ð
7ð 7ð 7ð
4ð 4ð 4ð
 Ôð*ð *ð *ñ Ôð*ð8	8ð 	8ð 	8ð5ð 5ð 5ð
5ð 5ð 5ð
'ð 'ð 'ð2ð 2ð 2ð2ð 2ð 2ð	Pð 	Pð 	Pð 	PðAð Að Að>ð >ð >ð
ð 
ð 
ð -ð -ð -ð
:ð :ð :ð/ð /ð /ð
/ð /ð /ð
/ð /ð /ð
/ð /ð /ð)ð )ð )ð-ð -ð -ðCð Cð CðHð Hð HðFð Fð FðHð Hð Hð
Fð 
Fð 
Fð
Fð 
Fð 
Fðð ð ð
1ð 1ð 1ð 1ðLð Lð Lð LðQð Qð Qð QðQð Qð Qð QðSð Sð Sð SðTð Tð Tð TðRð Rð Rð RðWð Wð Wð WðOð Oð Oð OðOð Oð Oð OðLð Lð Lð LðKð Kð Kð KðLð Lð Lð LðEð Eð Eð Eð-ð -ð -ð
-ð -ð -ð
,ð ,ð ,ð
-ð -ð -ð
-ð -ð -ð
,ð ,ð ,ð-ð -ð -ð
9ð 9ð 9ð
-ð -ð -ð
-ð -ð -ðEð Eð Eð.9ð 9ð 9ð,ð ,ð ,ð
3ð 3ð 3ð
.ð .ð .ð
,ð ,ð ,ð
1ð 1ð 1ð
6ð 6ð 6ð1ð 1ð 1ð>ð >ð >ð1ð 1ð 1ð+ð +ð +ð,ð ,ð ,ð
Ið Ið Ið@ð @ð @ð1ð 1ð 1ð 1ð3ð 3ð 3ð
,ð ,ð ,ð
,ð ,ð ,ð
6ð 6ð 6ð
Eð Eð Eð Ôð(ð (ñ Ôð(ð<
ð 
ð 
ð,ð ,ð ,ð)ð )ð )ð.ð .ð .ð-ð -ð -ð
1ð 1ð 1ð
-ð -ð -ð0ð 0ð 0ð
+ð +ð +ð+ð +ð +ð +ð:ð :ð :ð :ð-ð -ð -ð,ð ,ð ,ð
,ð ,ð ,ð
'ð 'ð 'ðR0ð 0ð 0ð
,ð ,ð ,ð
2ð 2ð 2ð2ð 2ð 2ð
7ð 7ð 7ð7ð 7ð 7ð
Mð Mð Mð
Fð Fð Fð
1ð 1ð 1ð6ð 6ð 6ð1ð 1ð 1ð/ð /ð /ð9ð 9ð 9ð(+ð +ð +ð<5ð 5ð 5ð/ð /ð /ð;ð ;ð ;ð,ð ,ð ,ð	ð 	ð 	ð5ð 5ð 5ð-ð -ð -ð,ð ,ð ,ð
ð ð ð
3ð 3ð 3ð4ð 4ð 4ð
-ð -ð -ðAð Að Að*4ð 4ð 4ð(.ð .ð .ð.ð .ð .ð1ð 1ð 1ð1ð 1ð 1ðGð Gð Gð/ð /ð /ðð ð ð Ôðð ñ Ôðð
ð ð ð#ð #ð #ð*ð *ð *ðð ð ðð ð ð7ð 7ð 7ð<ð <ð <ðð ð ð:ð ð ð"Fð Fð Fð	!ð 	!ð 	!ðð ð ð!ð !ð !ð !ð-ð -ð -ð -ð "ð "ð "ð'Uð 'Uð 'Uð 'UðR1ð 1ð 1ð1ð 1ð 1ð4ð 4ð 4ð
2ð 2ð 2ð2ð 2ð 2ð-ð -ð -ð
,ð ,ð ,ð
,ð ,ð ,ð
7ð 7ð 7ð7ð 7ð 7ð?ð ?ð ?ð:ð :ð :ð
;ð ;ð ;ð ;ð ;r   ry   c                   ó4   — e Zd ZdZd„ Zd„ Zed„ ¦   «         ZdS )ÚObjModeUtilszHInternal utils for calling objmode dispatcher from within NPM code.
    c                 ó   — || _         d S r   )r/   )r   r/   s     r   r   zObjModeUtils.__init__x  s   € ØˆŒ
ˆ
ˆ
r   c                 ó  — | j         j        }| j         j        }|j        }t	          j        || j         j        |                     d¦  «        ¬¦  «        }|j         	                    d ¦  «        |_
        d|_        |                     d¦  «        }t          j        |j        ¦  «        rŸ| j                              |j        t#          |¦  «        f¦  «        }| j                              |¦  «        }	t'          j        ||	¦  «        }
|                     |
¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   |                     |¦  «        }|                     t'          j        ||¦  «        ¦  «        5  t          j        |j        ¦  «        r—t          | ¦  «        }| j                              | j                              |j        ¦  «        ¦  «        }| j                              ||	g¦  «        }| j                              |¦  «         | j                              |	¦  «         nL|j                             t#          |¦  «        ¦  «        }|                     |t;          |¦  «        d¬¦  «        }| j                              |¦  «         |                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   |                     |¦  «         |                      |¦  «         |                     |¦  «        }|S )NÚcached_objmode_dispatcherr´   ÚinternalrD  Úwith_objectmode)Úinfo)!r/   r:   r9   r~   r   ÚGlobalVariablerk   Úget_unique_namer¦   r§   ÚinitializerÚlinkagerH  r   Úis_serialiableÚ
dispatcherr	  rî   r  r   r¤   rJ  rF  rp   Ú_call_objmode_dispatcherrs  rÁ   ÚcompileÚadd_dynamic_addrrS  r½   rD   rK  )r   r°   rÔ   r:   ÚtyctxÚmra  rD  Úserialized_dispatcherÚcompile_argsÚfailed_unserÚcachedr%   Úcompilerrq  Úentry_pts                   r   Úload_dispatcherzObjModeUtils.load_dispatcher{  s5  € Ø”*Ô$ˆØ”
Ô"ˆØŒNˆõ ÔØˆtŒzÔØ×"Ò"Ð#>Ñ?Ô?ð
ñ 
ô 
ˆð œŸš¨Ñ.Ô.ˆŒØˆŒ
ð ×+Ò+¨HÑ5Ô5ˆåÔ# D¤OÑ4Ô4ð 		'Ø$(¤J×$?Ò$?Ø”¥%¨¡/¤/Ð2ñ%ô %Ð!ð  œ:×1Ò1Ð2GÑHÔHˆLå"œ?¨7°LÑAÔAˆLØ—’ Ñ.Ô.ð 'ð 'à—’˜vÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð —’˜bÑ!Ô!ˆØ�_Š_�Wœ_¨W°fÑ=Ô=Ñ>Ô>ð 	&ð 	&ÝÔ'¨¬Ñ8Ô8ð Ý˜4‘j”j�Øœ:×1Ò1Ø”J×/Ò/°Ô0LÑMÔMñô �ð œ×9Ò9Ø˜|˜nñô �ð ”
×!Ò! (Ñ+Ô+Ð+Ø”
×!Ò! ,Ñ/Ô/Ð/Ð/àœ?×2Ò2µ5¸±?´?ÑCÔC�Ø×/Ò/Ø�R ™\œ\Ð0Að 0ñ ô �ð ŒJ×Ò˜fÑ%Ô%Ð%Ø�MŠM˜& "Ñ%Ô%Ð%ð'	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð* 	�Š�vÑÔÐà×Ò Ñ'Ô'Ð'Ø—’˜bÑ!Ô!ˆØˆs%   ÄD<Ä<E ÅE ÆD-J=Ê=KËKc                 ó:   — | \  }}|                      |¦  «        }|S r   )rÞ  )rã  rÜ  rÔ   Úentrypts       r   rÝ  z%ObjModeUtils._call_objmode_dispatcher²  s$   € à+Ñˆ
�HØ×$Ò$ XÑ.Ô.ˆØˆr   N)r'   r(   r)   r7   r   rè  ÚstaticmethodrÝ  r*   r   r   rÐ  rÐ  u  sX   € € € € € ðð ðð ð ð5ð 5ð 5ðn ðð ñ „\ðð ð r   rÐ  ).Úcollectionsr   rÍ  ÚpicklerU  r]   Úllvmliter   Úllvmlite.irr   rˆ   Únumbar   Ú
numba.corer   r   r	   r
   r   r   r   rœ   ÚPY_UNICODE_1BYTE_KINDr�   ÚPY_UNICODE_2BYTE_KINDrž   ÚPY_UNICODE_4BYTE_KINDrŸ   ÚPY_UNICODE_WCHAR_KINDÚobjectr   rq  rg  rs  r    r5   r@   rK   r,   r<   rB   rM   rT   rv   ry   rÐ  r*   r   r   ú<module>r÷     s   ðØ "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð #Ô8Ð Ø"Ô8Ð Ø"Ô8Ð Ø"Ô8Ð ðð ð ð ð �ñ ô ð ð. ˆ)‰+Œ+€ØˆI‰KŒK€	Øˆi‰kŒk€àÔ€ØÔ€Ø
Ô
€ðHð Hð Hð Hð H�*�*˜]Ø@ñBô Bñ Hô Hð Hð4ð 4ð 4ð 4ð 4�J�J˜Ø3ñ5ô 5ñ 4ô 4ð 4ðKð Kð Kð Kð K�j�jÐ!2ð#ñ$ô $ñ Kô Kð Kð&	ð 	ð 	ð 	ð 	�&ñ 	ô 	ð 	ð1!ð 1!ð 1!ð 1!ð 1!˜ñ 1!ô 1!ð 1!ðh �
˜?Ð,AÑBÔB€ðQð Qð Qð Qð Q�ñ Qô Qð Qðh.Að Að Að Að Añ Aô Að Að Að Ar   