Ë
    pPêjç  ã                  óò  — U d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZM dd	lNmOZOmPZP dd
lQmRZR ddlSmTZTmUZUmVZVmWZWmXZX ddlYmZZZm[Z[m\Z\m]Z] ddl^m_Z_m`Z`maZambZbmcZcmdZdmeZe ddlfmgZgmhZh ddlimjZjmkZkmlZlmmZm ddlnmoZompZpmqZqmrZrmsZs ddltmuZu ddlvmwZwmxZx ddlymzZzm{Z{m|Z|m}Z} ddl~mZm€Z€m�Z�m‚Z‚mƒZƒm„Z„m…Z… ddl†m‡Z‡ ddlˆm‰Z‰mŠZŠ ddl‹mŒZŒ ddl�mŽZŽm�Z� ddl�m‘Z‘m’Z’m“Z“m”Z”m•Z•m–Z–m—Z—m˜Z˜m™Z™mšZš ddl›mœZœm�Z� edeege)dz  f   ZžedeeŸe   ege)dz  f   Z i Z¡de¢d<   i Z£de¢d <   	 dˆ	 	 	 	 	 	 	 	 	 	 	 d‰d!„Z¤	 	 	 	 	 	 	 	 dŠd"„Z¥	 dˆ	 	 	 	 	 	 	 	 	 d‹d#„Z¦	 dˆ	 	 	 	 	 dŒd$„Z§d�d%„Z¨	 	 	 	 	 	 	 	 	 	 	 	 dŽd&„Z© e§d'«      dŠd(„«       Zª e§d)«       e§d*«       e§d+«       e§d,«       e§d-«       e§d.«       e§d/«       e§d0«      	 	 	 	 	 	 	 	 dŠd1„«       «       «       «       «       «       «       «       Z« e§d2«      dŠd3„«       Z¬ e§d4«      dŠd5„«       Z­ e§d6«      	 	 	 	 	 	 	 	 dŠd7„«       Z® e§d4«      dŠd8„«       Z¯ e§d4«      	 	 	 	 	 	 	 	 dŠd9„«       Z° e§d:«      dŠd;„«       Z± e§d:«      	 	 	 	 	 	 	 	 dŠd<„«       Z² e§d=«      	 	 	 	 	 	 	 	 dŠd>„«       Z³ e§d?«       e§d@«      dŠdA„«       «       Z´ e§d:«       e§dB«       e§dC«       e§d?«       e§d@«       e§dD«       e§dE«       e§dFeK«       e§dGeH«       e§dHe4«       e§dHeJ«      	 	 	 	 	 	 	 	 dŠdI„«       «       «       «       «       «       «       «       «       «       «       Zµ e§dJ«      dŠdK„«       Z¶ e§dL«      dŠdM„«       Z·	 	 	 	 	 	 	 	 	 	 	 	 d�dN„Z¸ e§dO«      dŠdP„«       Z¹ e§dQ«       e§dR«       e§dS«       e§dT«      	 	 	 	 	 	 	 	 dŠdU„«       «       «       «       Zº e§dV«      dŠdW„«       Z»eŒehemeseueŽe}e‰e�e”eœe‡dXœZ¼dYe¢dZ<    e§d[«      dŠd\„«       Z½ e§d]e4«      dŠd^„«       Z¾ e§d_eK«      dŠd`„«       Z¿ e§dFeK«      dŠda„«       ZÀ e§dbeK«      dŠdc„«       ZÁ e§dde1«      dŠde„«       ZÂ e§d-«      dŠdf„«       ZÃ e§d.«      dŠdg„«       ZÄ e§d/«      dŠdh„«       ZÅ e§d0«      dŠdi„«       ZÆd�dj„ZÇ e§d*«      dŠdk„«       ZÈ e§dl«      dŠdm„«       ZÉ e§d+«      dŠdn„«       ZÊ e§do«      dŠdp„«       ZËd‘dq„ZÌd’dr„ZÍ e§dseI«      dŠdt„«       ZÎ e§dueI«      dŠdv„«       ZÏ e§dwe8«      dŠdx„«       ZÐ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d“dy„ZÑ e¨dze2«      	 	 	 	 	 	 	 	 	 	 d”d{„«       ZÒ e¨d|e2«      	 	 	 	 	 	 	 	 	 	 d”d}„«       ZÓ e¨dzeL«      	 	 	 	 	 	 	 	 	 	 d”d~„«       ZÔ e¨dze1«      	 	 	 	 	 	 	 	 	 	 d”d„«       ZÕ e§d€«      dŠd�„«       ZÖ e§d‚«      dŠdƒ„«       Z× e§d„«      dŠd…„«       ZØ e§d†«      dŠd‡„«       ZÙy)•a0  Special case IR generation of calls to specific builtin functions.

Most special cases should be handled using the data driven "primitive
ops" system, but certain operations require special handling that has
access to the AST/IR directly and can make decisions/optimizations
based on it. These special cases can be implemented here.

For example, we use specializers to statically emit the length of a
fixed length tuple and to emit optimized code for any()/all() calls with
generator comprehensions as the argument.

See comment below for more documentation.
é    )Úannotations)ÚCallable)ÚFinalÚcast)Ú	ARG_NAMEDÚARG_POSÚCallExprÚDictExprÚ
ExpressionÚGeneratorExprÚ	IndexExprÚIntExprÚListExprÚ
MemberExprÚNameExprÚRefExprÚ	SliceExprÚStrExprÚ	SuperExprÚ	TupleExprÚVar)ÚAnyTypeÚ	TypeOfAny)Ú
BasicBlockÚCallÚExtendÚIntegerÚLoadErrorValueÚPrimitiveDescriptionÚRaiseStandardErrorÚRegisterÚSetAttrÚTruncateÚUnreachableÚValue)#Ú	RInstanceÚ
RPrimitiveÚRTupleÚRTypeÚRVecÚbool_rprimitiveÚbytes_rprimitiveÚbytes_writer_rprimitiveÚc_int_rprimitiveÚdict_rprimitiveÚint16_rprimitiveÚint32_rprimitiveÚint64_rprimitiveÚint_rprimitiveÚ
is_any_intÚis_bool_rprimitiveÚis_bytes_rprimitiveÚis_dict_rprimitiveÚis_fixed_width_rtypeÚis_float_rprimitiveÚis_int16_rprimitiveÚis_int32_rprimitiveÚis_int64_rprimitiveÚis_int_rprimitiveÚis_list_rprimitiveÚis_sequence_rprimitiveÚis_str_rprimitiveÚ	is_taggedÚis_uint8_rprimitiveÚlist_rprimitiveÚobject_rprimitiveÚset_rprimitiveÚstr_rprimitiveÚstring_writer_rprimitiveÚuint8_rprimitive)Ú	IRBuilderÚget_call_target_fullname)Úconstant_fold_expr)Úcomprehension_helperÚget_expr_length_valueÚ*sequence_from_generator_preallocate_helperÚtranslate_list_comprehensionÚtranslate_set_comprehension)ÚFormatOpÚconvert_format_expr_to_strÚjoin_formatted_stringsÚtokenizer_format_call)Úsupports_vec_to_sequenceÚ
vec_appendÚ
vec_extendÚvec_popÚ
vec_removeÚvec_to_listÚvec_to_tuple)Úbytearray_from_bytes_slice_opÚisinstance_bytearray)Úbytes_adjust_index_opÚbytes_get_item_unsafe_opÚbytes_range_check_opÚisinstance_bytes)Údict_items_opÚdict_keys_opÚdict_setdefault_spec_init_opÚdict_values_opÚisinstance_dict)Úisinstance_float)Úgeneric_setattrÚsetup_object)Úint_to_big_endian_opÚint_to_bytes_opÚint_to_little_endian_opÚisinstance_int)Úbytes_writer_adjust_index_opÚbytes_writer_get_item_unsafe_opÚbytes_writer_range_check_opÚbytes_writer_set_item_unsafe_opÚstring_writer_adjust_index_opÚ string_writer_get_item_unsafe_opÚstring_writer_range_check_op)Úisinstance_vec)Úisinstance_listÚnew_list_set_item_op)Úisinstance_bool)Úisinstance_frozensetÚisinstance_set)
Úbytes_decode_ascii_strictÚbytes_decode_latin1_strictÚbytes_decode_utf8_strictÚisinstance_strÚstr_adjust_index_opÚstr_encode_ascii_strictÚstr_encode_latin1_strictÚstr_encode_utf8_strictÚstr_get_item_unsafe_as_int_opÚstr_range_check_op)Úisinstance_tupleÚnew_tuple_set_item_oprI   Nz1dict[tuple[str, RType | None], list[Specializer]]Úspecializersz0dict[tuple[str, RType], list[DunderSpecializer]]Údunder_specializersc                ó\   — |r*||ft         v r t         ||f   D ]  } || ||«      }|€Œ|c S  y ©N)r‡   )ÚbuilderÚexprÚcalleeÚnameÚtypÚspecializerÚvals          ú]/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/irbuild/specialize.pyÚ_apply_specializationr“   Á   sG   € ñ ��s�œ|Ñ+Ü'¨¨c¨	Ñ2ò 	ˆKÙ˜g t¨VÓ4ˆCØ‰Ø’
ð	ð ó    c                ó0   — t        | ||t        |«      «      S )zIInvoke the Specializer callback for a function if one has been registered)r“   rJ   ©r‹   rŒ   r�   s      r’   Úapply_function_specializationr—   Ñ   s   € ô ! ¨$°Ô8PÐQWÓ8XÓYÐYr”   c                óT   — |€|j                   n|j                  }t        | ||||«      S )zGInvoke the Specializer callback for a method if one has been registered)ÚfullnamerŽ   r“   )r‹   rŒ   r�   r�   rŽ   s        r’   Úapply_method_specializationrš   Ø   s*   € ð "˜kˆ6�?Š?¨v¯{©{€DÜ  ¨$°¸¸cÓBÐBr”   c                ó   ‡ ‡— dˆ ˆfd„}|S )z×Decorator to register a function as being a specializer.

    There may exist multiple specializers for one function. When
    translating method calls, the earlier appended specializer has
    higher priority.
    c                óV   •— t         j                  ‰‰fg «      j                  | «       | S rŠ   )r‡   Ú
setdefaultÚappend©ÚfrŽ   r�   s    €€r’   Úwrapperz$specialize_function.<locals>.wrapperê   s'   ø€ Ü×Ñ  s ¨RÓ0×7Ñ7¸Ô:Øˆr”   )r    ÚSpecializerÚreturnr¢   © ©rŽ   r�   r¡   s   `` r’   Úspecialize_functionr¦   à   ó   ù€ öð €Nr”   c                ó   ‡ ‡— dˆ ˆfd„}|S )aN  Decorator to register a function as being a dunder specializer.

    Dunder specializers handle special method calls like __getitem__ that
    don't naturally map to CallExpr nodes.

    There may exist multiple specializers for one dunder. When translating
    dunder calls, the earlier appended specializer has higher priority.
    c                óV   •— t         j                  ‰‰fg «      j                  | «       | S rŠ   )rˆ   r�   rž   rŸ   s    €€r’   r¡   z"specialize_dunder.<locals>.wrapperû   s'   ø€ Ü×&Ñ&¨¨c {°BÓ7×>Ñ>¸qÔAØˆr”   )r    ÚDunderSpecializerr£   rª   r¤   r¥   s   `` r’   Úspecialize_dunderr«   ñ   r§   r”   c                ó|   — | j                  |«      }||ft        v r!t        ||f   D ]  } || |||«      }|€Œ|c S  y)a×  Invoke the DunderSpecializer callback if one has been registered.

    Args:
        builder: The IR builder
        base_expr: The base expression (target object)
        args: List of argument expressions (positional arguments to the dunder)
        name: The dunder method name (e.g., "__getitem__")
        ctx_expr: The context expression for error reporting (e.g., IndexExpr)

    Returns:
        The specialized value, or None if no specialization was found.
    N)Ú	node_typerˆ   )r‹   Ú	base_exprÚargsrŽ   Úctx_exprÚ	base_typer�   r‘   s           r’   Úapply_dunder_specializationr²     s[   € ð& ×!Ñ! )Ó,€Ið 	ˆiÐÔ/Ñ/Ü.¨t°Y¨Ñ?ò 	ˆKÙ˜g y°$¸ÓAˆCØ‰Ø’
ð	ð r”   zbuiltins.globalsc                óT   — t        |j                  «      dk(  r| j                  «       S y )Nr   )Úlenr¯   Úload_globals_dictr–   s      r’   Útranslate_globalsr¶      s$   € ä
ˆ4�9‰9ƒ~˜ÒØ×(Ñ(Ó*Ð*Ør”   zbuiltins.absúbuiltins.intúbuiltins.floatzbuiltins.complexzmypy_extensions.i64zmypy_extensions.i32zmypy_extensions.i16zmypy_extensions.u8c                óÈ  — t        |j                  «      dk(  rÊ|j                  t        gk(  r¶t	        |t
        «      r¦|j                  d   }| j                  |«      }|j                  j                  d«      d   }|dv rd}nd|› d�}t	        |t        «      rK|j                  j                  |«      r0| j                  |«      }| j                  ||g d|j                  «      S y)z™Specialize calls on native classes that implement the associated dunder.

    E.g. i64(x) gets specialized to x.__int__() if x is a native instance.
    é   r   ú.)Úi64Úi32Úi16Úu8Ú__int__Ú__N)r´   r¯   Ú	arg_kindsr   Ú
isinstancer   r­   r™   Úsplitr&   Úclass_irÚ
has_methodÚacceptÚgen_method_callÚline)r‹   rŒ   r�   ÚargÚarg_typÚ	shortnameÚmethodÚobjs           r’   Ú$translate_builtins_with_unary_dunderrÏ   '  sÈ   € ô ˆ4�9‰9ƒ~˜Ò˜tŸ~™~´'°Ò:¼zÈ&ÔRZÔ?[Ø�i‰i˜‰lˆØ×#Ñ# CÓ(ˆØ—O‘O×)Ñ)¨#Ó.¨qÑ1ˆ	ØÐ3Ñ3Ø‰Fà˜)˜ BÐ'ˆFÜ�gœyÔ)¨g×.>Ñ.>×.IÑ.IÈ&Ô.QØ—.‘. Ó%ˆCØ×*Ñ*¨3°¸¸DÀ$Ç)Á)ÓLÐLàr”   zbuiltins.lenc                ó
  — t        |j                  «      dk(  rë|j                  t        gk(  r×|j                  d   }| j	                  |«      }| j                  |t        |«      xs t        |t        «      ¬«      }t        |«      st        |t        «      rt        | |||j                  d¬«      S t        |j                  t        «      r| j                  ||j                  d¬«      S | j                  ||j                  «      S y )Nrº   r   ©Ú
can_borrowF)Úuse_pyssize_tT)r´   r¯   rÂ   r   r­   rÇ   r>   rÃ   r*   r?   r(   rM   rÉ   ÚtypeÚbuiltin_len)r‹   rŒ   r�   rÊ   Ú
expr_rtyperÎ   s         r’   Útranslate_lenr×   E  sØ   € ä
ˆ4�9‰9ƒ~˜Ò˜tŸ~™~´'°Ò:Ø�i‰i˜‰lˆØ×&Ñ& sÓ+ˆ
à�n‰nØÔ.¨zÓ:ÒZ¼jÈÔUYÓ>Zð ó 
ˆô " *Ô-´¸JÌÔ1OÜ(¨°#°s¸D¿I¹IÐUZÔ[Ð[ô ˜#Ÿ(™(¤DÔ)Ø×*Ñ*¨3°·	±	ÈÐ*ÓNÐNà×*Ñ*¨3°·	±	Ó:Ð:Ør”   úbuiltins.listc                óL  — t        |j                  «      dk(  rŒ|j                  t        gk(  rx| j	                  |j                  d   «      }t        |t        «      rJt        |«      r?| j                  |j                  d   «      }t        | j                  ||j                  «      S y ©Nrº   r   )r´   r¯   rÂ   r   r­   rÃ   r*   rU   rÇ   rZ   r‹   rÉ   ©r‹   rŒ   r�   Úarg_typeÚvecs        r’   Útranslate_vec_to_listrÞ   Y  sy   € ä
ˆ4�9‰9ƒ~˜Ò˜tŸ~™~´'°Ò:Ø×$Ñ$ T§Y¡Y¨q¡\Ó2ˆÜ�h¤Ô%Ô*BÀ8Ô*LØ—.‘. §¡¨1¡Ó.ˆCÜ˜wŸ™°°T·Y±YÓ?Ð?Ør”   úbuiltins.bytearrayc                ó”  — t        |j                  «      dk7  s|j                  t        gk7  ry|j                  d   }t	        |t
        «      r$t        | j                  |j                  «      «      sy|j                  }t	        |t        «      rl|j                  €`|j                  �$t        | j                  |j                  «      «      r0|j                  �%t        | j                  |j                  «      «      sy| j                  |j                  «      }|j                  €!| j!                  t#        t$        d¬«      «      }n| j                  |j                  «      }|j                  €!| j!                  t#        t$        d¬«      «      }n| j                  |j                  «      }| j'                  t(        |||g|j*                  «      S )zFConstruct a bytearray from a bytes slice without an intermediate copy.rº   Nr   T)Úis_borrowed)r´   r¯   rÂ   r   rÃ   r   r6   r­   ÚbaseÚindexr   ÚstrideÚbegin_indexr4   Ú	end_indexrÇ   Úaddr   r3   Úprimitive_opr\   rÉ   )r‹   rŒ   r�   rÊ   rã   rÎ   ÚstartÚends           r’   Ú$translate_bytearray_from_bytes_slicerë   c  sX  € ô
 ˆ4�9‰9ƒ~˜Ò˜dŸn™n´°	Ò9ØØ
�)‰)�A‰,€CÜ�cœ9Ô%Ô-@À×ARÑARÐSV×S[ÑS[ÓA\Ô-]ØØ�I‰I€Eä�uœiÔ(Ø�<‰<Ð#Ø×ÑÐ)´*¸W×=NÑ=NÈu×O`ÑO`Ó=aÔ2bØ�O‰OÐ'´
¸7×;LÑ;LÈUÏ_É_Ó;]Ô0^àà
�.‰.˜Ÿ™Ó
"€Cà×ÑÐ Ø—‘œN¬>ÀtÔLÓM‰à—‘˜u×0Ñ0Ó1ˆØ‡�ÐØ�k‰kœ.¬ÀTÔJÓK‰à�n‰n˜UŸ_™_Ó-ˆØ×ÑÔ =ÀÀUÈCÐ?PÐRV×R[ÑR[Ó\Ð\r”   c                ó„  — t        |j                  «      dk(  r|j                  t        gk(  sy|j                  d   }t	        |t
        «      r&|j                  st	        |j                  t        «      sy|j                  j                  }|j                  j                  }| j                  |«      }t        |«      r|dv sy| j                  |«      }|dk(  r"| j                  t        |g|j                  «      S |dk(  r"| j                  t         |g|j                  «      S | j                  t"        |g|j                  «      S )zŠSpecialize a common case when list() is called on a dictionary
    view method call.

    For example:
        foo = list(bar.keys())
    rº   Nr   )ÚkeysÚvaluesÚitemsrí   rî   )r´   r¯   rÂ   r   rÃ   r	   r�   r   rŒ   rŽ   r­   r7   rÇ   Úcall_crc   rÉ   re   rb   )r‹   rŒ   r�   rÊ   râ   ÚattrÚrtyperÎ   s           r’   Údict_methods_fast_pathró   ƒ  sù   € ô �—	‘	‹N˜aÒ D§N¡N´w°iÒ$?ØØ
�)‰)�A‰,€CÜ�sœHÔ%¨c¯hªh¼:ÀcÇjÁjÔR\Ô;]ØØ�:‰:�?‰?€DØ�:‰:�?‰?€DØ×Ñ˜dÓ#€EÜ˜uÔ%¨$Ð2MÑ*MØà
�.‰.˜Ó
€Cð ˆv‚~Ø�~‰~œl¨S¨E°4·9±9Ó=Ð=Ø	�Ò	Ø�~‰~œn¨s¨e°T·Y±YÓ?Ð?à�~‰~œm¨c¨U°D·I±IÓ>Ð>r”   c                ó  ‡ — t        |j                  «      dk(  ri|j                  d   t        k(  rSt	        |j                  d   t
        «      r6dˆ fd„}t        ‰ |j                  d   ‰ j                  j                  |¬«      S y)zÕSpecial case for simplest list comprehension.

    For example:
        list(f(x) for x in some_list/some_tuple/some_str)
    'translate_list_comprehension()' would take care of other cases
    if this fails.
    rº   r   c                ó:   •— ‰j                  t        | ||g|«       y rŠ   )rð   rw   ©ÚxÚyÚzrÉ   r‹   s       €r’   Úset_itemz4translate_list_from_generator_call.<locals>.set_item³  s   ø€ Ø�N‰NÔ/°!°Q¸°¸DÕAr”   ©Úempty_op_llbuilderÚset_item_opN©
r÷   r%   rø   r%   rù   r%   rÉ   Úintr£   ÚNone)	r´   r¯   rÂ   r   rÃ   r   rN   r‹   Únew_list_op_with_length©r‹   rŒ   r�   rú   s   `   r’   Ú"translate_list_from_generator_callr  ¢  sp   ø€ ô 	ˆD�I‰I‹˜!ÒØ�N‰N˜1Ñ¤Ò(Ü�t—y‘y ‘|¤]Ô3õ	Bô :ØØ�I‰I�a‰LØ&Ÿ™×FÑFØ ô	
ð 	
ð r”   úbuiltins.tuplec                óL  — t        |j                  «      dk(  rŒ|j                  t        gk(  rx| j	                  |j                  d   «      }t        |t        «      rJt        |«      r?| j                  |j                  d   «      }t        | j                  ||j                  «      S y rÚ   )r´   r¯   rÂ   r   r­   rÃ   r*   rU   rÇ   r[   r‹   rÉ   rÛ   s        r’   Útranslate_vec_to_tupler  ¿  sy   € ä
ˆ4�9‰9ƒ~˜Ò˜tŸ~™~´'°Ò:Ø×$Ñ$ T§Y¡Y¨q¡\Ó2ˆÜ�h¤Ô%Ô*BÀ8Ô*LØ—.‘. §¡¨1¡Ó.ˆCÜ §¡°°d·i±iÓ@Ð@Ør”   c                ó  ‡ — t        |j                  «      dk(  ri|j                  d   t        k(  rSt	        |j                  d   t
        «      r6dˆ fd„}t        ‰ |j                  d   ‰ j                  j                  |¬«      S y)zïSpecial case for simplest tuple creation from a generator.

    For example:
        tuple(f(x) for x in some_list/some_tuple/some_str/some_bytes)
    'translate_safe_generator_call()' would take care of other cases
    if this fails.
    rº   r   c                ó:   •— ‰j                  t        | ||g|«       y rŠ   )rð   r†   rö   s       €r’   rú   z5translate_tuple_from_generator_call.<locals>.set_itemÚ  s   ø€ Ø�N‰NÔ0°1°a¸°)¸TÕBr”   rû   Nrþ   )	r´   r¯   rÂ   r   rÃ   r   rN   r‹   Únew_tuple_with_lengthr  s   `   r’   Ú#translate_tuple_from_generator_callr
  É  sp   ø€ ô 	ˆD�I‰I‹˜!ÒØ�N‰N˜1Ñ¤Ò(Ü�t—y‘y ‘|¤]Ô3õ	Cô :ØØ�I‰I�a‰LØ&Ÿ™×DÑDØ ô	
ð 	
ð r”   úbuiltins.setc                óÌ   — t        |j                  «      dk(  rL|j                  d   t        k(  r6t	        |j                  d   t
        «      rt        | |j                  d   «      S y)zƒSpecial case for set creation from a generator.

    For example:
        set(f(...) for ... in iterator/nested_generators...)
    rº   r   N)r´   r¯   rÂ   r   rÃ   r   rP   r–   s      r’   Ú!translate_set_from_generator_callr  æ  sO   € ô 	ˆD�I‰I‹˜!ÒØ�N‰N˜1Ñ¤Ò(Ü�t—y‘y ‘|¤]Ô3ä*¨7°D·I±I¸a±LÓAÐAØr”   úbuiltins.minzbuiltins.maxc                ó”  — |j                   t        t        gk(  �r®| j                  |j                  d   «      | j                  |j                  d   «      }}t	        | j                  |«      «      }|j                  dk(  r| j                  ||d|j                  «      }n| j                  ||d|j                  «      }t        «       t        «       t        «       }	}}| j                  |||«       | j                  |«       | j                  || j                  ||j                  |j                  «      |j                  «       | j                  |	«       | j                  |«       | j                  || j                  ||j                  |j                  «      |j                  «       | j                  |	«       | j                  |	«       |S y )Nr   rº   r  ú<ú>)rÂ   r   rÇ   r¯   r!   r­   r™   Ú	binary_oprÉ   r   Úadd_bool_branchÚactivate_blockÚassignÚcoercerÔ   Úgoto)
r‹   rŒ   r�   r÷   rø   ÚresultÚ
comparisonÚ
true_blockÚfalse_blockÚ
next_blocks
             r’   Úfaster_min_maxr  ø  sV  € ð ‡~�~œ'¤7Ð+Ó+Ø�~‰~˜dŸi™i¨™lÓ+¨W¯^©^¸D¿I¹IÀa¹LÓ-Iˆ1ˆÜ˜'×+Ñ+¨DÓ1Ó2ˆà�?‰?˜nÒ,Ø ×*Ñ*¨1¨a°°d·i±iÓ@‰Jà ×*Ñ*¨1¨a°°d·i±iÓ@ˆJä.8«l¼J»LÌ*Ë, �Kˆ
Ø×Ñ 
¨J¸ÔDà×Ñ˜zÔ*Ø�‰�v˜wŸ~™~¨a°·±¸d¿i¹iÓHÈ$Ï)É)ÔTØ�‰�ZÔ à×Ñ˜{Ô+Ø�‰�v˜wŸ~™~¨a°·±¸d¿i¹iÓHÈ$Ï)É)ÔTØ�‰�ZÔ à×Ñ˜zÔ*ØˆØr”   úbuiltins.frozensetúbuiltins.dictzbuiltins.sortedzcollections.OrderedDictÚjoinÚextendÚupdatec                óÜ  — t        |j                  «      dkD  �rI|j                  d   t        k(  �r2t	        |j                  d   t
        «      �rt	        |t        «      r¬| j                  | j                  |j                  «      |j                  t        | |j                  d   «      g|j                  dd D �cg c]  }| j                  |«      ‘Œ c}z   | j                  |«      |j                  |j                  |j                  «      S | j                  ||t        | |j                  d   «      g|j                  dd D �cg c]  }| j                  |«      ‘Œ c}z   «      S yc c}w c c}w )zuSpecial cases for things that consume iterators where we know we
    can safely compile a generator into a list.
    r   rº   N)r´   r¯   rÂ   r   rÃ   r   r   rÈ   rÇ   rŒ   rŽ   rO   r­   rÉ   Ú	arg_namesÚcall_refexpr_with_args)r‹   rŒ   r�   rÊ   s       r’   Útranslate_safe_generator_callr&    s4  € ô$ 	ˆD�I‰I‹˜ÓØ�N‰N˜1Ñ¤Ó(Ü�t—y‘y ‘|¤]Õ3ä�fœjÔ)Ø×*Ñ*Ø—‘˜vŸ{™{Ó+Ø—‘ä1°'¸4¿9¹9ÀQ¹<ÓHÐIØ6:·i±iÀÀ°mÖD¨s�w—~‘~ cÕ*ÒDñEð ×!Ñ! $Ó'Ø—	‘	Ø—‘Ø—‘óð ð ×1Ñ1ØØä1°'¸4¿9¹9ÀQ¹<ÓHÐIØ6:·i±iÀÀ°mÖD¨s�w—~‘~ cÕ*ÒDñEó	ð ð ùò! Eùò Es   Â9E$ÅE)zbuiltins.anyc                óø   — t        |j                  «      dk(  rb|j                  t        gk(  rNt	        |j                  d   t
        «      r1t        | |j                  d   | j                  d„ | j                  «      S y )Nrº   r   c                ó   — | S rŠ   r¤   )r÷   s    r’   ú<lambda>z$translate_any_call.<locals>.<lambda>J  s   € Èa€ r”   )	r´   r¯   rÂ   r   rÃ   r   Úany_all_helperÚfalseÚtruer–   s      r’   Útranslate_any_callr-  C  s]   € ô 	ˆD�I‰I‹˜!ÒØ�N‰Nœw˜iÒ'Ü�t—y‘y ‘|¤]Ô3ä˜g t§y¡y°¡|°W·]±]ÁKÐQX×Q]ÑQ]Ó^Ð^Ør”   zbuiltins.allc                ó  ‡ ‡— t        ‰j                  «      dk(  re‰j                  t        gk(  rQt	        ‰j                  d   t
        «      r4t        ‰ ‰j                  d   ‰ j                  ˆ ˆfd„‰ j                  «      S y )Nrº   r   c                ó>   •— ‰j                  | d‰j                  «      S )NÚnot)Úunary_oprÉ   )r÷   r‹   rŒ   s    €€r’   r)  z$translate_all_call.<locals>.<lambda>Y  s   ø€ �g×&Ñ& q¨%°·±Ó;€ r”   )	r´   r¯   rÂ   r   rÃ   r   r*  r,  r+  r–   s   `` r’   Útranslate_all_callr2  N  sf   ù€ ô 	ˆD�I‰I‹˜!ÒØ�N‰Nœw˜iÒ'Ü�t—y‘y ‘|¤]Ô3äØØ�I‰I�a‰LØ�L‰LÜ;Ø�M‰Mó
ð 	
ð r”   c           	     ó¼  ‡ ‡‡‡‡‡	‡
‡—  |«       }t        t        |j                  ¬«      Š
‰ j                  ‰
||j                  «       t	        t        ‰j                  ‰j                  ‰j                  ‰j                  «      «      }t        «       t        «       t        «       cŠŠ	Šdˆ ˆˆ	ˆˆˆˆ
ˆfd„}t        ‰ ||‰j                  «       ‰ j                  ‰«       ‰
S )N©rÉ   c                 ó  •—  ‰‰j                  ‰j                  «      «      } ‰j                  | ‰	‰«       ‰j                  ‰	«        ‰«       }‰j	                  ‰||j
                  «       ‰j                  ‰«       ‰j                  ‰«       y rŠ   )rÇ   Ú	left_exprr  r  r  rÉ   r  )
r  Únew_valr‹   Ú
exit_blockr  ÚgenÚmodifyÚ	new_valueÚretvalr  s
     €€€€€€€€r’   Úgen_inner_stmtsz'any_all_helper.<locals>.gen_inner_stmtsl  so   ø€ Ù˜GŸN™N¨3¯=©=Ó9Ó:ˆ
Ø×Ñ 
¨J¸ÔDØ×Ñ˜zÔ*Ù“+ˆØ�‰�v˜w¨¯©Ô5Ø�‰�ZÔ Ø×Ñ˜{Õ+r”   ©r£   r   )r!   r+   rÉ   r  ÚlistÚzipÚindicesÚ	sequencesÚ	condlistsÚis_asyncr   rL   Úgoto_and_activate)r‹   r9  Úinitial_valuer:  r;  Úinit_valÚloop_paramsr=  r8  r  r<  r  s   `` ``   @@@@r’   r*  r*  _  sœ   ÿ€ ñ ‹€HÜ”o¨H¯M©MÔ:€FØ‡N�N�6˜8 X§]¡]Ô3Ü”s˜3Ÿ;™;¨¯©°s·}±}ÀcÇlÁlÓSÓT€KÜ*4«,¼
»ÄjÃlÐ'€J�˜Z÷,ô ,ô ˜ +¨ÀÇÁÔIØ×Ñ˜jÔ)à€Mr”   zbuiltins.sumc                óú  ‡ ‡‡— t        |j                  «      dv r3|j                  d   t        k(  rt	        |j                  d   t
        «      sy t        |j                  «      dk(  r,|j                  d   t        t        fvry |j                  d   }nt        d«      }|j                  d   Š‰ j                  |«      }t        ||j                  ¬«      Š‰ j                  ‰‰ j                  ‰ j                  |«      ||j                  «      |j                  «       dˆ ˆˆfd„}t        t        ‰j                   ‰j"                  ‰j$                  ‰j&                  «      «      }t)        ‰ ||‰j                  «       ‰S )N)rº   é   r   rJ  rº   r4  c            	     ó®   •— ‰j                  ‰j                  «      } ‰j                  ‰‰j                  ‰| d| j                  «      | j                  «       y )Nú+)rÇ   r6  r  r  rÉ   )Ú	call_exprr‹   Úgen_exprr<  s    €€€r’   r=  z+translate_sum_call.<locals>.gen_inner_stmts˜  sC   ø€ Ø—N‘N 8×#5Ñ#5Ó6ˆ	Ø�‰Ø�G×%Ñ% f¨i¸¸i¿n¹nÓMÈyÏ~É~õ	
r”   r>  )r´   r¯   rÂ   r   rÃ   r   r   r   r­   r!   rÉ   r  r  rÇ   r?  r@  rA  rB  rC  rD  rL   )	r‹   rŒ   r�   Ú
start_exprÚtarget_typer=  rH  rN  r<  s	   `      @@r’   Útranslate_sum_callrQ  {  s-  ú€ ô 	ˆD�I‰I‹˜&Ñ Ø�N‰N˜1Ñ¤Ò(Ü�t—y‘y ‘|¤]Ô3àô ˆ4�9‰9ƒ~˜Òà�>‰>˜!Ñ¤W¬iÐ$8Ñ8ØØ—Y‘Y˜q‘\‰
ä˜Q“Zˆ
à�y‰y˜‰|€HØ×#Ñ# DÓ)€KÜ�k¨¯	©	Ô2€FØ‡N�NØ�—‘˜wŸ~™~¨jÓ9¸;ÈÏ	É	ÓRÐTX×T]ÑT]ô÷
ô ÜˆH×Ñ˜h×0Ñ0°(×2DÑ2DÀh×FWÑFWÓXó€Kô ˜ +¨ÀÇÁÔNà€Mr”   zdataclasses.fieldzattr.ibzattr.attribzattr.Factoryc                óP   — t        t        j                  «      | j                  |<   y)a,  Special case for 'dataclasses.field', 'attr.attrib', and 'attr.Factory'
    function calls because the results of such calls are type-checked
    by mypy using the types of the arguments to their respective
    functions, resulting in attempted coercions by mypyc that throw a
    runtime error.
    N)r   r   Ú
from_errorÚtypesr–   s      r’   Ú translate_dataclasses_field_callrU  ¦  s    € ô "¤)×"6Ñ"6Ó7€G‡M�M�$ÑØr”   zbuiltins.nextc                óP  ‡ ‡‡‡— |j                   t        gt        t        gfv rt        |j                  d   t        «      sy|j                  d   Št        ‰ j                  |«      «      Št        |j                  «      dkD  r‰ j                  |j                  d   «      nd}t        «       Šdˆ ˆˆˆfd„}t        t        ‰j                  ‰j                  ‰j                  ‰j                  «      «      }t!        ‰ ||‰j"                  «       |r9‰ j%                  ‰|‰j&                  j"                  «       ‰ j)                  ‰«       nM‰ j+                  t-        t,        j.                  d|j"                  «      «       ‰ j+                  t1        «       «       ‰ j3                  ‰«       ‰S )a6  Special case for calling next() on a generator expression, an
    idiom that shows up some in mypy.

    For example, next(x for x in l if x.id == 12, None) will
    generate code that searches l for an element where x.id == 12
    and produce the first such object, or None if no such element
    exists.
    r   Nrº   c                 ó¨   •— ‰ j                  ‰‰ j                  ‰j                  «      ‰j                  j                  «       ‰ j	                  ‰«       y rŠ   )r  rÇ   r6  rÉ   r  )r‹   r8  r9  r<  s   €€€€r’   r=  z,translate_next_call.<locals>.gen_inner_stmtsÌ  s8   ø€ ð 	�‰�v˜wŸ~™~¨c¯m©mÓ<¸c¿m¹m×>PÑ>PÔQØ�‰�ZÕ r”   r>  )rÂ   r   rÃ   r¯   r   r!   r­   r´   rÇ   r   r?  r@  rA  rB  rC  rD  rL   rÉ   r  r6  r  rç   r    ÚSTOP_ITERATIONr$   r  )	r‹   rŒ   r�   Údefault_valr=  rH  r8  r9  r<  s	   `     @@@r’   Útranslate_next_callrZ  ·  s5  û€ ð 	�‰œG˜9¤w´Ð&8Ð9Ñ9Ü�t—y‘y ‘|¤]Ô3àà
�)‰)�A‰,€CÜ�g×'Ñ'¨Ó-Ó.€FÜ25°d·i±i³.À1Ò2D�'—.‘. §¡¨1¡Ô.È$€KÜ“€J÷!ð !ô ”s˜3Ÿ;™;¨¯©°s·}±}ÀcÇlÁlÓSÓT€KÜ˜ +¨ÀÇÁÔIñ
 Ø�‰�v˜{¨C¯M©M×,>Ñ,>Ô?Ø�‰�ZÕ à�‰Ô&Ô'9×'HÑ'HÈ$ÐPT×PYÑPYÓZÔ[Ø�‰”K“MÔ"à×Ñ˜:Ô&Ø€Mr”   )úbuiltins.boolrß   zbuiltins.bytesr  r¸   r  r·   rØ   r  zbuiltins.strr  zlibrt.vecs.vecr   Úisinstance_primitiveszbuiltins.isinstancec           	     óH  — t        |j                  «      dk(  r|j                  t        t        gk(  sy|j                  d   }|j                  d   }t	        |t
        «      r|j                  s| j                  «       S t	        |t        t
        f«      r…t        t        j                  «      | j                  |<   | j                  |«      }|�Lt        d„ |D «       «      }| j                  ||¬«      }| j                   j#                  |||j$                  «      S t	        |t        «      r_|j&                  }|rPt(        j+                  |j,                  «      }	|	r/| j                  |«      }| j/                  |	|g|j$                  «      S yt	        |t
        «      �rg }
|j                  D ]`  }t	        |t        «      s y|j&                  € y|j&                  j,                  |
vsŒ<|
j1                  |j&                  j,                  «       Œb |
D �cg c]  }t(        j+                  |«      ‘Œ }}d|v ry| j                  |«      }t3        t4        «      }t7        «       }t7        «       }t7        «       }t9        |«      D ]u  \  }}	|t        |«      dz
  k(  }|r|n	t7        «       }| j;                  | j/                  t=        t>        |	«      |g|j$                  «      ||«       |rŒe| jA                  |«       Œw | jA                  |«       | jC                  || jE                  «       |j$                  «       | jG                  |«       | jA                  |«       | jC                  || j                  «       |j$                  «       | jG                  |«       | jA                  |«       |S yc c}w )zñSpecial case for builtins.isinstance.

    Prevent coercions on the thing we are checking the instance of -
    there is no need to coerce something to a new type before checking
    what type it is, and the coercion could lead to bugs.
    rJ  Nr   rº   c              3  óp   K  — | ].  }|j                   xr |j                   xr |j                   –— Œ0 y ­wrŠ   )Úis_ext_classÚinherits_pythonÚallow_interpreted_subclasses)Ú.0Úirs     r’   ú	<genexpr>z'translate_isinstance.<locals>.<genexpr>
  s;   è ø€ ò àð —‘Òb¨×(:Ñ(:Ð$:ÒbÀ2×CbÑCbÐ?bÓbñùs   ‚46rÑ   )$r´   r¯   rÂ   r   rÃ   r   rï   r+  r   r   r   rS  rT  Úflatten_classesÚallrÇ   r‹   Úisinstance_helperrÉ   Únoder\  Úgetr™   rè   rž   r!   r+   r   Ú	enumerater  r   r   r  r  r,  r  )r‹   rŒ   r�   Úobj_exprÚ	type_exprÚirsrÒ   rÎ   rh  ÚdescÚ
node_namesÚitemr™   Údescsr<  Ú
pass_blockÚ
fail_blockr8  ÚiÚis_lastr  s                        r’   Útranslate_isinstancerv  ó  s
  € ô �—	‘	‹N˜aÒ D§N¡N´wÄÐ6HÒ$HØà�y‰y˜‰|€HØ—	‘	˜!‘€Iä�)œYÔ'°	·²à�}‰}‹Ðä�)œg¤yÐ1Ô2Ü")¬)×*>Ñ*>Ó"?ˆ�‰�hÑà×%Ñ% iÓ0ˆØˆ?Üñ àôó ˆJð —.‘. °j�.ÓAˆCØ—?‘?×4Ñ4°S¸#¸t¿y¹yÓIÐIä�)œWÔ%Ø�~‰~ˆÙÜ(×,Ñ,¨T¯]©]Ó;ˆDÙØ—n‘n XÓ.�Ø×+Ñ+¨D°3°%¸¿¹ÓCÐCðd ôa 
�IœyÕ	)Ø "ˆ
Ø—O‘Oò 	6ˆDÜ˜d¤GÔ,ÙØ�y‰yÐ ÙØ�y‰y×!Ñ!¨Ò3Ø×!Ñ! $§)¡)×"4Ñ"4Õ5ð	6ð FPÖP¸Ô&×*Ñ*¨8Õ4ÐPˆÐPØ�5‰=àà�n‰n˜XÓ&ˆäœ/Ó*ˆÜ“\ˆ
Ü“\ˆ
Ü“\ˆ
ô ! Ó'ò 		3‰GˆAˆtØœ3˜u›:¨™>Ñ)ˆGÙ'.™´J³LˆJØ×#Ñ#Ø×$Ñ$¤TÔ*>ÀÓ%EÈÀuÈdÏiÉiÓXØØôò
 Ø×&Ñ& zÕ2ð		3ð 	×Ñ˜zÔ*Ø�‰�v˜wŸ|™|›~¨t¯y©yÔ9Ø�‰�ZÔ ð 	×Ñ˜zÔ*Ø�‰�v˜wŸ}™}›°·	±	Ô:Ø�‰�ZÔ ð 	×Ñ˜zÔ*ØˆàùòM Qs   ÈNr�   c                óX  — t        |j                  «      dk(  �r‘|j                  t        t        gk(  �rwt	        |t
        «      �rf|j                  d   }t	        |t        «      r2t        |j                  «      ryt        dt        |j                  «      }n¸t	        |t        «      r2t        |j                  «      ryt        dt        |j                  «      }nvt	        |t        «      ret	        |j                  t        «      rK|j                  j                  dk(  r2t        |j                  «      ryt        dt        |j                  «      }ny| j!                  |j"                  «      }| j!                  |j                  d   «      }| j%                  t&        |||g|j                  «      S y)aÅ  Special case for 'dict.setdefault' which would only construct
    default empty collection when needed.

    The dict_setdefault_spec_init_op checks whether the dict contains
    the key and would construct the empty collection only once.

    For example, this specializer works for the following cases:
         d.setdefault(key, set()).add(value)
         d.setdefault(key, []).append(value)
         d.setdefault(key, {})[inner_key] = inner_val
    rJ  rº   Nr  é   r   )r´   r¯   rÂ   r   rÃ   r   r   rï   r   r.   rÉ   r
   r	   r�   r   r™   rÇ   rŒ   rð   rd   )r‹   rŒ   r�   rÊ   Ú	data_typeÚcallee_dictÚkey_vals          r’   Útranslate_dict_setdefaultr|  L  s0  € ô 	ˆD�I‰I‹˜!ÓØ�N‰Nœw¬Ð0Ó0Ü�vœzÕ*à�i‰i˜‰lˆÜ�cœ8Ô$Ü�3—9‘9Œ~ØÜ Ô#3°T·Y±YÓ?‰IÜ˜œXÔ&Ü�3—9‘9Œ~ØÜ Ô#3°T·Y±YÓ?‰Iä�sœHÔ%Ü˜3Ÿ:™:¤xÔ0Ø—
‘
×#Ñ# ~Ò5ä�3—8‘8Œ}ØÜ Ô#3°T·Y±YÓ?‰Iàà—n‘n V§[¡[Ó1ˆØ—.‘. §¡¨1¡Ó.ˆØ�~‰~Ü(¨;¸ÀÐ*KÈTÏYÉYó
ð 	
ð r”   Úformatc                óz  — t        |t        «      r«t        | |j                  «      }t        |t        «      r…|j
                  j                  t        «      t        |j
                  «      k(  rPt        |«      }|€y |\  }}t        | ||j                  |j                  «      }|€y t        | |||j                  «      S y rŠ   )rÃ   r   rK   rŒ   ÚstrrÂ   Úcountr   r´   rT   rR   r¯   rÉ   rS   )r‹   rŒ   r�   Úfolded_calleeÚtokensÚliteralsÚ
format_opsÚsubstitutionss           r’   Útranslate_str_formatr†  z  s    € ä�&œ*Ô%Ü*¨7°F·K±KÓ@ˆÜ�m¤SÔ)¨d¯n©n×.BÑ.BÄ7Ó.KÌsÐSW×SaÑSaÓObÒ.bÜ*¨=Ó9ˆFØˆ~ØØ#)Ñ ˆH�jä6°wÀ
ÈDÏIÉIÐW[×W`ÑW`ÓaˆMØÐ$ØÜ)¨'°8¸]ÈDÏIÉIÓVÐVØr”   c                óL  — t        |t        «      �rt        |j                  t        «      �rø|j                  j                  dk(  �rÞ|j
                  t        gk(  �rÉt        |j                  d   t        «      �r«|j                  d   j                  D ]Þ  }t        |t        «      rŒt        |t        «      rºt        |j                  t        «      r|j                  j                  dk7  r yt        |j                  j                  t        «      r#|j                  j                  j                  dk7  r yt        |j                  d   t        «      r|j                  d   j                  dk7  sŒÜ y y g }g }|j                  d   j                  D ]   }t        |t        «      r@|j                  dk7  r1|j                  t        j                  «       |j                  |«       ŒSt        |t        «      sŒd|j                  t        j                  «       |j                  |j                  d   «       Œ¢ d	d„}t!        t#        |«      dz
  «      D ]   }t#        |«      |dz   k\  sŒ |||   «      x}€Œ# |||dz      «      x}	€Œ4g |d| ¢t        ||	z   «      ‘||dz   d ¢}g |d| ¢t        j                  ‘||dz   d ¢}t#        |«      |dz   k\  sŒ‚ |||   «      x}€Œ� |||dz      «      x}	�ŒmŒ¢ t%        | |||j&                  «      }
|
€yt)        | d|
|j&                  «      S y)
zµSpecial case for f-string, which is translated into str.join()
    in mypy AST.

    This specializer optimizes simplest f-strings which don't contain
    any format operation.
    Ú r   r}  Nz{:{}}rº   c                ó  — t        | t        «      r| j                  S t        | t        «      rSt        | j                  t
        «      r9| j                  j                  r#| j                  j                  }|�t        |«      S y rŠ   )	rÃ   r   Úvaluer   rh  r   Úis_finalÚfinal_valuer  )rŒ   rŒ  s     r’   Úget_literal_strz*translate_fstring.<locals>.get_literal_strµ  s\   € Ü˜$¤Ô(Ø—z‘zÐ!Ü˜D¤'Ô*¬z¸$¿)¹)ÄSÔ/IÈdÏiÉi×N`ÒN`Ø"Ÿi™i×3Ñ3�ØÐ*Ü˜{Ó+Ð+Ør”   rJ  )rŒ   r   r£   ú
str | None)rÃ   r   rŒ   r   rŠ  rÂ   r   r¯   r   rï   r	   r�   rŽ   rž   rQ   ÚSTRÚranger´   rR   rÉ   rS   )r‹   rŒ   r�   rp  r„  Úexprsr�  rt  ÚfirstÚsecondr…  s              r’   Útranslate_fstringr”  ‹  sº  € ô 	�6œ:Õ&Ü�v—{‘{¤GÕ,Ø�K‰K×Ñ Ó#Ø�N‰Nœw˜iÓ'Ü�t—y‘y ‘|¤XÕ.à—I‘I˜a‘L×&Ñ&ò 	ˆDÜ˜$¤Ô(ØÜ˜D¤(Ô+Ü! $§+¡+¬zÔ:¸d¿k¹k×>NÑ>NÐRZÒ>ZÙä" 4§;¡;×#3Ñ#3´WÔ=ÀÇÁ×AQÑAQ×AWÑAWÐ[bÒAbáä! $§)¡)¨A¡,´Ô8¸D¿I¹IÀa¹L×<NÑ<NÐRTÓ<TÙáð	ð  ˆ
Ø"$ˆà—I‘I˜a‘L×&Ñ&ò 	+ˆDÜ˜$¤Ô(¨T¯Z©Z¸2Ò-=Ø×!Ñ!¤(§,¡,Ô/Ø—‘˜TÕ"Ü˜D¤(Õ+Ø×!Ñ!¤(§,¡,Ô/Ø—‘˜TŸY™Y q™\Õ*ð	+ó	ô ”s˜5“z A‘~Ó&ò 	SˆAä�E“
˜a !™eÓ#Ù-¨e°A©hÓ7Ð7�UÑDÙ.¨u°Q¸±U©|Ó<Ð<�VÑIàN˜%  ˜)ÐN¤W¨U°V©^Ó%<ÐN¸uÀQÈÁUÀW¸~ÐN�ØR˜z¨"¨1˜~ÐR¬x¯|©|ÐR¸jÈÈQÉÈÐ>QÐR�
ô �E“
˜a !™eÓ#Ù-¨e°A©hÓ7Ð7�UÑDÙ.¨u°Q¸±U©|Ó<Ð<�VÒIð		Sô 3°7¸JÈÈtÏyÉyÓYˆØÐ Øä% g¨t°]ÀDÇIÁIÓNÐNØr”   Úencodec                ó<  — t        |t        «      syt        |j                  «      dkD  rt        |j                  d   t
        «      syt        |j                  «      dkD  rt        |j                  d   t
        «      syd}d}t        |j                  «      dkD  r¼t        |j                  d   t
        «      rŸ|j                  d   t        k(  rX|j                  d   dk(  r|j                  d   j                  }n]|j                  d   dk(  rK|j                  d   j                  }n1|j                  d   t        k(  r|j                  d   j                  }nyt        |j                  «      dkD  r¼t        |j                  d   t
        «      rŸ|j                  d   t        k(  rX|j                  d   dk(  r|j                  d   j                  }n]|j                  d   dk(  rK|j                  d   j                  }n1|j                  d   t        k(  r|j                  d   j                  }ny|dk7  ry|j                  «       j                  dd	«      j                  d
d	«      }|dv r;| j                  t        | j                  |j                  «      g|j                   «      S |dv r;| j                  t"        | j                  |j                  «      g|j                   «      S |dv r;| j                  t$        | j                  |j                  «      g|j                   «      S y)zPSpecialize common cases of str.encode for most used encodings and strict errors.Nr   rº   Úutf8ÚstrictÚencodingÚerrorsú-rˆ  Ú_)r¿   Úutfr—  Úcp65001)Ú646ÚasciiÚusascii)Úiso88591Ú8859Úcp819ÚlatinÚlatin1Úl1)rÃ   r   r´   rÂ   r¯   r   r   r$  rŠ  r   ÚlowerÚreplacerð   r‚   rÇ   rŒ   rÉ   r€   r�   ©r‹   rŒ   r�   r™  rš  s        r’   Ústr_encode_fast_pathr«  Ï  s{  € ô �fœjÔ)Øô ˆ4�>‰>Ó˜QÒ¤z°$·)±)¸A±,ÄÔ'HØÜ
ˆ4�>‰>Ó˜QÒ¤z°$·)±)¸A±,ÄÔ'HØà€HØ€FÜ
ˆ4�>‰>Ó˜QÒ¤:¨d¯i©i¸©l¼GÔ#DØ�>‰>˜!Ñ¤	Ò)Ø�~‰~˜aÑ  JÒ.ØŸ9™9 Q™<×-Ñ-‘Ø—‘ Ñ" hÒ.ØŸ™ 1™×+Ñ+‘Ø�^‰^˜AÑ¤'Ò)Ø—y‘y ‘|×)Ñ)‰HàÜ
ˆ4�>‰>Ó˜QÒ¤:¨d¯i©i¸©l¼GÔ#DØ�>‰>˜!Ñ¤	Ò)Ø�~‰~˜aÑ  JÒ.ØŸ9™9 Q™<×-Ñ-‘Ø—‘ Ñ" hÒ.ØŸ™ 1™×+Ñ+‘Ø�^‰^˜AÑ¤'Ò)Ø—Y‘Y˜q‘\×'Ñ'‰Fàà�Òàà�~‰~Ó×'Ñ'¨¨RÓ0×8Ñ8¸¸bÓA€HàÐ3Ñ3Ø�~‰~Ô4°w·~±~ÀfÇkÁkÓ7RÐ6SÐUY×U^ÑU^Ó_Ð_Ø	Ð0Ñ	0Ø�~‰~Ô5¸¿¹ÀvÇ{Á{Ó8SÐ7TÐVZ×V_ÑV_Ó`Ð`Ø	ÐKÑ	KØ�~‰~Ô6¸¿¹ÈÏÉÓ9TÐ8UÐW[×W`ÑW`ÓaÐaàr”   Údecodec                ó  — t        |t        «      syt        |j                  «      dkD  rt        |j                  d   t
        «      syt        |j                  «      dkD  rt        |j                  d   t
        «      syd}d}t        |j                  «      dkD  r¼t        |j                  d   t
        «      rŸ|j                  d   t        k(  rX|j                  d   dk(  r|j                  d   j                  }n]|j                  d   dk(  rK|j                  d   j                  }n1|j                  d   t        k(  r|j                  d   j                  }nyt        |j                  «      dkD  r¼t        |j                  d   t
        «      rŸ|j                  d   t        k(  rX|j                  d   dk(  r|j                  d   j                  }n]|j                  d   dk(  rK|j                  d   j                  }n1|j                  d   t        k(  r|j                  d   j                  }ny|dk7  ry|j                  «       j                  dd	«      }|d
v r;| j                  t        | j                  |j                  «      g|j                   «      S |dv r;| j                  t"        | j                  |j                  «      g|j                   «      S |dv r;| j                  t$        | j                  |j                  «      g|j                   «      S y)zPSpecialize common cases of obj.decode for most used encodings and strict errors.Nr   rº   r—  r˜  r™  rš  rœ  r›  )r¿   r�  r—  zutf-8rž  )rŸ  r   r¡  zus-ascii)z	iso8859-1z
iso-8859-1r£  r¤  r¥  r¦  zlatin-1r§  )rÃ   r   r´   rÂ   r¯   r   r   r$  rŠ  r   r¨  r©  rð   r}   rÇ   rŒ   rÉ   r{   r|   rª  s        r’   Úbytes_decode_fast_pathr®    st  € ô �fœjÔ)Øô ˆ4�>‰>Ó˜QÒ¤z°$·)±)¸A±,ÄÔ'HØÜ
ˆ4�>‰>Ó˜QÒ¤z°$·)±)¸A±,ÄÔ'HØà€HØ€FÜ
ˆ4�>‰>Ó˜QÒ¤:¨d¯i©i¸©l¼GÔ#DØ�>‰>˜!Ñ¤	Ò)Ø�~‰~˜aÑ  JÒ.ØŸ9™9 Q™<×-Ñ-‘Ø—‘ Ñ" hÒ.ØŸ™ 1™×+Ñ+‘Ø�^‰^˜AÑ¤'Ò)Ø—y‘y ‘|×)Ñ)‰HàÜ
ˆ4�>‰>Ó˜QÒ¤:¨d¯i©i¸©l¼GÔ#DØ�>‰>˜!Ñ¤	Ò)Ø�~‰~˜aÑ  JÒ.ØŸ9™9 Q™<×-Ñ-‘Ø—‘ Ñ" hÒ.ØŸ™ 1™×+Ñ+‘Ø�^‰^˜AÑ¤'Ò)Ø—Y‘Y˜q‘\×'Ñ'‰Fàà�Òàà�~‰~Ó×'Ñ'¨¨SÓ1€HàÐ<Ñ<Ø�~‰~Ô6¸¿¹ÈÏÉÓ9TÐ8UÐW[×W`ÑW`ÓaÐaØ	Ð<Ñ	<Ø�~‰~Ô7¸'¿.¹.ÈÏÉÓ:UÐ9VÐX\×XaÑXaÓbÐbØ	ð 	ñ 	
ð �~‰~Ô8¸7¿>¹>È&Ï+É+Ó;VÐ:WÐY]×YbÑYbÓcÐcàr”   c                ó   — t        |j                  «      dk7  s|j                  d   t        k7  ry |j                  d   }| j	                  |«      }t        |«      r| j                  |«      S t        |«      st        |«      r=| j                  |«      }| j                  t        |t        d|j                  ¬«      «      S t        |«      r=| j                  |«      }| j                  t        |t        d|j                  ¬«      «      S t        |«      st        |«      r2| j                  |«      }| j!                  |t        |j                  «      S y )Nrº   r   T©ÚsignedrÉ   F)r´   r¯   rÂ   r   r­   r<   rÇ   r;   r:   rç   r   r2   rÉ   rB   r=   r5   r  ©r‹   rŒ   r�   rÊ   rÜ   r‘   s         r’   Útranslate_i64r³  @  s  € ä
ˆ4�9‰9ƒ~˜Ò˜dŸn™n¨QÑ/´7Ò:ØØ
�)‰)�A‰,€CØ× Ñ  Ó%€HÜ˜8Ô$Ø�~‰~˜cÓ"Ð"Ü	˜XÔ	&Ô*=¸hÔ*GØ�n‰n˜SÓ!ˆØ�{‰{œ6 #Ô'7ÀÈ4Ï9É9ÔUÓVÐVÜ	˜XÔ	&Ø�n‰n˜SÓ!ˆØ�{‰{œ6 #Ô'7ÀÈDÏIÉIÔVÓWÐWÜ	˜8Ô	$Ô(:¸8Ô(DØ�n‰n˜SÓ!ˆØ�~‰~˜cÔ#3°T·Y±YÓ?Ð?Ør”   c                ó8  — t        |j                  «      dk7  s|j                  d   t        k7  ry |j                  d   }| j	                  |«      }t        |«      r| j                  |«      S t        |«      r<| j                  |«      }| j                  t        |t        |j                  ¬«      «      S t        |«      r=| j                  |«      }| j                  t        |t        d|j                  ¬«      «      S t        |«      r=| j                  |«      }| j                  t        |t        d|j                  ¬«      «      S t        |«      st!        |«      rB| j                  |«      }t#        |t        «      }| j%                  |t        |j                  «      S y )Nrº   r   r4  Tr°  F)r´   r¯   rÂ   r   r­   r;   rÇ   r<   rç   r#   r1   rÉ   r:   r   rB   r=   r5   Útruncate_literalr  r²  s         r’   Útranslate_i32r¶  T  s<  € ä
ˆ4�9‰9ƒ~˜Ò˜dŸn™n¨QÑ/´7Ò:ØØ
�)‰)�A‰,€CØ× Ñ  Ó%€HÜ˜8Ô$Ø�~‰~˜cÓ"Ð"Ü	˜XÔ	&Ø�n‰n˜SÓ!ˆØ�{‰{œ8 CÔ)9ÀÇ	Á	ÔJÓKÐKÜ	˜XÔ	&Ø�n‰n˜SÓ!ˆØ�{‰{œ6 #Ô'7ÀÈ4Ï9É9ÔUÓVÐVÜ	˜XÔ	&Ø�n‰n˜SÓ!ˆØ�{‰{œ6 #Ô'7ÀÈDÏIÉIÔVÓWÐWÜ	˜8Ô	$Ô(:¸8Ô(DØ�n‰n˜SÓ!ˆÜ˜sÔ$4Ó5ˆØ�~‰~˜cÔ#3°T·Y±YÓ?Ð?Ør”   c                ó¾  — t        |j                  «      dk7  s|j                  d   t        k7  ry |j                  d   }| j	                  |«      }t        |«      r| j                  |«      S t        |«      st        |«      r<| j                  |«      }| j                  t        |t        |j                  ¬«      «      S t        |«      r=| j                  |«      }| j                  t        |t        d|j                  ¬«      «      S t        |«      st!        |«      rB| j                  |«      }t#        |t        «      }| j%                  |t        |j                  «      S y )Nrº   r   r4  Fr°  )r´   r¯   rÂ   r   r­   r:   rÇ   r;   r<   rç   r#   r0   rÉ   rB   r   r=   r5   rµ  r  r²  s         r’   Útranslate_i16r¸  l  s  € ä
ˆ4�9‰9ƒ~˜Ò˜dŸn™n¨QÑ/´7Ò:ØØ
�)‰)�A‰,€CØ× Ñ  Ó%€HÜ˜8Ô$Ø�~‰~˜cÓ"Ð"Ü	˜XÔ	&Ô*=¸hÔ*GØ�n‰n˜SÓ!ˆØ�{‰{œ8 CÔ)9ÀÇ	Á	ÔJÓKÐKÜ	˜XÔ	&Ø�n‰n˜SÓ!ˆØ�{‰{œ6 #Ô'7ÀÈDÏIÉIÔVÓWÐWÜ	˜8Ô	$Ô(:¸8Ô(DØ�n‰n˜SÓ!ˆÜ˜sÔ$4Ó5ˆØ�~‰~˜cÔ#3°T·Y±YÓ?Ð?Ør”   c                óD  — t        |j                  «      dk7  s|j                  d   t        k7  ry |j                  d   }| j	                  |«      }t        |«      r| j                  |«      S t        |«      st        |«      st        |«      r<| j                  |«      }| j                  t        |t        |j                  ¬«      «      S t        |«      st        |«      rB| j                  |«      }t!        |t        «      }| j#                  |t        |j                  «      S y )Nrº   r   r4  )r´   r¯   rÂ   r   r­   rB   rÇ   r:   r;   r<   rç   r#   rH   rÉ   r=   r5   rµ  r  r²  s         r’   Útranslate_u8rº  �  sâ   € ä
ˆ4�9‰9ƒ~˜Ò˜dŸn™n¨QÑ/´7Ò:ØØ
�)‰)�A‰,€CØ× Ñ  Ó%€HÜ˜8Ô$Ø�~‰~˜cÓ"Ð"ä˜HÔ%Ü˜xÔ(Ü˜xÔ(à�n‰n˜SÓ!ˆØ�{‰{œ8 CÔ)9ÀÇ	Á	ÔJÓKÐKÜ	˜8Ô	$Ô(:¸8Ô(DØ�n‰n˜SÓ!ˆÜ˜sÔ$4Ó5ˆØ�~‰~˜cÔ#3°T·Y±YÓ?Ð?Ør”   c                óÐ   — t        | t        «      s| S | j                  «       }d|j                  dz  z  dz
  }||z  }|j                  r||dz   dz  k\  r||dz   z  }t        ||«      S )z‡If value is an integer literal value, truncate it to given native int rtype.

    For example, truncate 256 into 0 if rtype is u8.
    rº   é   rJ  )rÃ   r   Únumeric_valueÚsizeÚ	is_signed)rŠ  rò   r÷   Úmax_unsigneds       r’   rµ  rµ  —  sv   € ô
 �eœWÔ%ØˆØ×ÑÓ€AØ˜%Ÿ*™* q™.Ñ)¨QÑ.€LØ	ˆLÑ€AØ‡‚˜1 °Ñ!1°aÑ 7Ò7à	ˆ\˜AÑÑˆÜ�1�eÓÐr”   c                óH  — t        |j                  «      dk7  s|j                  d   t        k7  ry |j                  d   }| j	                  |«      }t        |«      st        |«      st        |«      r2| j                  |«      }| j                  |t        |j                  «      S y rÚ   )r´   r¯   rÂ   r   r­   r5   r=   r8   rÇ   r  r3   rÉ   )r‹   rŒ   r�   rÊ   rÜ   Úsrcs         r’   Útranslate_intrÃ  §  s‚   € ä
ˆ4�9‰9ƒ~˜Ò˜dŸn™n¨QÑ/´7Ò:ØØ
�)‰)�A‰,€CØ× Ñ  Ó%€Hä˜8Ô$Ü˜XÔ&Ü Ô)à�n‰n˜SÓ!ˆØ�~‰~˜c¤>°4·9±9Ó=Ð=Ør”   r[  c                óÖ   — t        |j                  «      dk7  s|j                  d   t        k7  ry |j                  d   }| j	                  |«      }| j
                  j                  |«      S rÚ   )r´   r¯   rÂ   r   rÇ   r‹   Ú
bool_value)r‹   rŒ   r�   rÊ   rÂ  s        r’   Útranslate_boolrÆ  ·  sU   € ä
ˆ4�9‰9ƒ~˜Ò˜dŸn™n¨QÑ/´7Ò:ØØ
�)‰)�A‰,€CØ
�.‰.˜Ó
€CØ�?‰?×%Ñ% cÓ*Ð*r”   c                óÚ   — t        |j                  «      dk7  s|j                  d   t        k7  ry |j                  d   }| j	                  |«      }t        |«      r| j                  |«      S y rÚ   )r´   r¯   rÂ   r   r­   r9   rÇ   )r‹   rŒ   r�   rÊ   rÜ   s        r’   Útranslate_floatrÈ  À  s\   € ä
ˆ4�9‰9ƒ~˜Ò˜dŸn™n¨QÑ/´7Ò:ØØ
�)‰)�A‰,€CØ× Ñ  Ó%€HÜ˜8Ô$à�~‰~˜cÓ"Ð"Ør”   zbuiltins.ordc           	     óB  — t        |j                  «      dk7  s|j                  d   t        k7  ry |j                  d   }t	        | |«      }t        |t        t        f«      r"t        |«      dk(  rt        t        |«      «      S t        |t        «      r�| j                  |j                  «      }t        |«      rg|j                  }| j                  |«      }t        |«      st!        |«      r4t#        | |j                  |j                  g|t$        t&        t(        «      }|S y rÚ   )r´   r¯   rÂ   r   rK   rÃ   r  Úbytesr   Úordr   r­   râ   r@   rã   rA   r8   Ú#translate_getitem_with_bounds_checkr   r„   rƒ   )	r‹   rŒ   r�   Úarg_exprrÊ   r±   Ú
index_exprÚ
index_typer  s	            r’   Útranslate_ordrÐ  Ì  sì   € ä
ˆ4�9‰9ƒ~˜Ò˜dŸn™n¨QÑ/´7Ò:ØØ�y‰y˜‰|€HÜ
˜W hÓ
/€CÜ�#œœU�|Ô$¬¨S«°QªÜ”s˜3“xÓ Ð ô �(œIÔ&à×%Ñ% h§m¡mÓ4ˆ	Ü˜YÔ'à!Ÿ™ˆJØ ×*Ñ*¨:Ó6ˆJÜ˜Ô$Ô(<¸ZÔ(Hô =ØØ—M‘MØ—^‘^Ð$ØÜ'Ü&Ü1ó�ð �àr”   c                ó�   — t        | t        «      xr5 t        | j                  t        «      xr | j                  j                  dk(  S )z%Returns True for object.<name> calls.zbuiltins.object)rÃ   r   rŒ   r   r™   )r�   s    r’   Ú	is_objectrÒ  î  s>   € ô 	�6œ:Ó&ò 	6Ü�v—{‘{¤HÓ-ò	6à�K‰K× Ñ Ð$5Ñ5ðr”   c                óP   — t        | j                  t        «      xs t        |«      S )z7Returns True for super().<name> or object.<name> calls.)rÃ   r�   r   rÒ  )rŒ   r�   s     r’   Úis_super_or_objectrÔ  ÷  s   € ä�d—k‘k¤9Ó-ÒB´¸6Ó1BÐBr”   Ú__new__c                ó”  — | j                   }|j                  dk7  st        ||«      sy | j                  «       }|€y d}|j                  s | j                  |› d�|j                  «       y |j                  r | j                  |› d�|j                  «       y t        |j                  «      dk7  r5| j                  |› dt        |j                  «      › �|j                  «       y |j                  d   }|j                  j                  }t        |t        «      r±t        |«      dkD  r£|d   |j                  k(  r‘| j                  |j                  d   «      }|j                  «       }	|	�?t        |	«      dk(  r1| j!                  t#        |j$                  |g|j                  «      «      S | j'                  t(        |g|j                  «      S y )NrÕ  z"object.__new__()"z( not supported for non-extension classesz= not supported for classes inheriting from non-native classesrº   z% supported only with 1 argument, got r   )Úfn_inforŽ   rÔ  Úget_current_class_irr_  ÚerrorrÉ   r`  r´   r¯   Úfitemr$  rÃ   r   rÇ   Ú
subclassesrç   r   Úsetuprð   ri   )
r‹   rŒ   r�   Úfnrc  ÚcallÚtyp_argÚmethod_argsÚsubtypeÚsubss
             r’   Útranslate_object_newrã  ü  sƒ  € à	�‰€BØ	‡w�w�)ÒÔ#5°d¸FÔ#CØà	×	%Ñ	%Ó	'€BØ	€zØà€DØ�?Š?Ø�‰˜˜ÐFÐGÈÏÉÔSØØ	×ÒØ�‰ØˆfÐQÐRÐTX×T]ÑT]ô	
ð Ü
ˆ4�9‰9ƒ~˜ÒØ�‰˜˜ÐCÄCÈÏ	É	ÃNÐCSÐTÐVZ×V_ÑV_Ô`Øà�i‰i˜‰l€GØ—(‘(×$Ñ$€KÜ�'œ8Ô$¬¨[Ó)9¸AÒ)=À+ÈaÁ.ÐT[×T`ÑT`ÒB`Ø—.‘. §¡¨1¡Ó.ˆØ�}‰}‹ˆØÐ¤ D£	¨Q¢Ø—;‘;œt B§H¡H¨w¨i¸¿¹ÓCÓDÐDð
 �~‰~œl¨W¨I°t·y±yÓAÐAàr”   Ú__setattr__c                óx  — t        |j                  t        «      }t        |«      }|rt	        |j
                  «      dk\  s|rt	        |j
                  «      dk\  sy |r| j                  |j
                  d   «      n| j                  «       }| j                  «       }|r%|j                  r|j                  s|j                  ry |rdnd}|rdnd}|j
                  |   }	|j
                  |   }
| j                  |
«      }t        |	t        «      rz|rx|j                  |	j                  «      r]|	j                  }| j                  ||j                   |   |j"                  «      }| j%                  t'        ||||j"                  «      «      S | j                  |	«      }| j)                  t*        |||g|j"                  «      S )NrJ  rx  r   rº   )rÃ   r�   r   rÒ  r´   r¯   rÇ   ÚselfrØ  r_  Úbuiltin_baser`  r   Úhas_attrrŠ  r  Ú
attributesrÉ   rç   r"   rð   rh   )r‹   rŒ   r�   Úis_superÚis_object_calleeÚself_regrc  Úname_idxÚ	value_idxÚ	attr_nameÚ
attr_valuerŠ  rŽ   Úname_regs                 r’   Útranslate_object_setattrrò  #  sV  € ä˜$Ÿ+™+¤yÓ1€HÜ  Ó(ÐÙœ#˜dŸi™i›.¨AÒ-Ñ3CÌÈDÏIÉIËÐZ[ÒH[Øá/?ˆw�~‰~˜dŸi™i¨™lÔ+ÀWÇ\Á\Ã^€HØ	×	%Ñ	%Ó	'€BÙ	�2—?’? b§o¢o¸×9KÒ9KØá‰q !€HÙ‘ 1€IØ—	‘	˜(Ñ#€IØ—‘˜9Ñ%€JØ�N‰N˜:Ó&€Eä�)œWÔ%©"°·±¸Y¿_¹_Ô1MØ�‰ˆØ—‘˜u b§m¡m°DÑ&9¸4¿9¹9ÓEˆØ�{‰{œ7 8¨T°5¸$¿)¹)ÓDÓEÐEà�~‰~˜iÓ(€HØ�>‰>œ/¨H°hÀÐ+FÈÏ	É	ÓRÐRr”   Úto_bytesc                óø  — t        d„ |j                  D «       «      ry t        |t        «      sy d }d }d }d}t	        |j
                  |j                  «      D ]L  \  }}|€ |dk(  r|}n|dk(  r|}n
|dk(  r|}n y |dz  }Œ(|dk(  r|� y |}Œ4|dk(  r|� y |}Œ@|dk(  r|� y |}ŒL y  |�|€y d}	|�t        | j                  |«      «      }	t        | j                  |«      «      rt        | j                  |«      «      r|	sy | j                  |j                  «      }
| j                  |«      }|€| j                  «       }n| j                  |«      }t        |t        «      rf|j                  d	k(  r$| j!                  t"        |
||g|j$                  «      S |j                  d
k(  r$| j!                  t&        |
||g|j$                  «      S | j                  |«      }| j!                  t(        |
|||g|j$                  «      S )Nc              3  ó8   K  — | ]  }|t         t        fv–— Œ y ­wrŠ   )r   r   ©rb  Úkinds     r’   rd  z*specialize_int_to_bytes.<locals>.<genexpr>A  s   è ø€ Ò
G°ˆ4œ¤Ð+Ô+Ñ
Gùs   ‚r   rº   rJ  ÚlengthÚ	byteorderr±  TÚlittleÚbig)ÚanyrÂ   rÃ   r   r@  r$  r¯   r5   r­   r=   r@   rÇ   rŒ   r+  r   rŠ  rð   rl   rÉ   rj   rk   )r‹   rŒ   r�   Úlength_exprÚbyteorder_exprÚsigned_exprÚpositional_indexrŽ   rÊ   Úsigned_is_boolÚself_argÚ
length_argÚ
signed_argÚbyteorder_args                 r’   Úspecialize_int_to_bytesr  >  s  € ô Ñ
G¸¿¹Ô
GÔGØÜ�fœjÔ)ØØ%)€KØ(,€NØ%)€KØÐÜ˜Ÿ™¨¯©Ó3ò ‰	ˆˆcØˆ<Ø 1Ò$Ø!‘Ø! QÒ&Ø!$‘Ø! QÒ&Ø!‘áØ Ñ!ÑØ�XÒØÐ&ÙØ‰KØ�[Ò ØÐ)ÙØ ‰NØ�XÒØÐ&ÙØ‰Káð1ð2 Ð˜nÐ4Øà€NØÐÜ+¨G×,=Ñ,=¸kÓ,JÓKˆä˜'×+Ñ+¨KÓ8Ô9Ü˜g×/Ñ/°Ó?Ô@Ùàà�~‰~˜fŸk™kÓ*€HØ—‘ Ó,€JØÐØ—]‘]“_‰
à—^‘^ KÓ0ˆ
Ü�.¤'Ô*Ø×Ñ 8Ò+Ø—>‘>Ü'¨(°JÀ
Ð)KÈTÏYÉYóð ð ×!Ñ! UÒ*Ø—>‘>Ü$ x°¸ZÐ&HÈ$Ï)É)óð ð —N‘N >Ó2€MØ�>‰>Ü˜( J°¸zÐJÈDÏIÉIóð r”   c                óT  — t        |«      dk7  ry| j                  |«      }| j                  |d   «      }| j                  |||g|j                  «      }	| j                  |||	g|j                  «      }
t	        «       }t	        «       }| j                  |
||«       | j                  |«       | j                  t        t        j                  d|j                  «      «       | j                  t        «       «       | j                  |«       | j                  |||	g|j                  «      }|S )aþ  Shared helper for optimized __getitem__ with bounds checking.

    This implements the common pattern of:
    1. Adjusting negative indices
    2. Checking if index is in valid range
    3. Raising IndexError if out of range
    4. Getting the item if in range

    Args:
        builder: The IR builder
        base_expr: The base object expression
        args: The arguments to __getitem__ (should be length 1)
        ctx_expr: The context expression for line numbers
        adjust_index_op: Primitive op to adjust negative indices
        range_check_op: Primitive op to check if index is in valid range
        get_item_unsafe_op: Primitive op to get item (no bounds checking)

    Returns:
        The result value, or None if optimization doesn't apply
    rº   Nr   úindex out of range)r´   rÇ   rè   rÉ   r   r  r  rç   r    ÚINDEX_ERRORr$   )r‹   r®   r¯   r°   Úadjust_index_opÚrange_check_opÚget_item_unsafe_oprÎ   rã   Úadjusted_indexÚrange_checkÚvalid_blockÚinvalid_blockr  s                 r’   rÌ  rÌ  …  s  € ô< ˆ4ƒy�A‚~Øð �.‰.˜Ó
#€Cð �N‰N˜4 ™7Ó#€Eð ×)Ñ)¨/¸CÀ¸<ÈÏÉÓW€Nð ×&Ñ& ~¸¸^Ð7LÈhÏmÉmÓ\€Kô “,€KÜ“L€Mà×Ñ˜K¨°mÔDð ×Ñ˜=Ô)Ø‡K�KÜÔ-×9Ñ9Ð;OÐQY×Q^ÑQ^Ó_ôð ‡K�K”“Ôð ×Ñ˜;Ô'Ø×!Ñ!Ð"4°s¸NÐ6KÈXÏ]É]Ó[€Fà€Mr”   Ú__getitem__c           	     ó<   — t        | |||t        t        t        «      S )zFOptimized BytesWriter.__getitem__ implementation with bounds checking.)rÌ  rn   rp   ro   ©r‹   r®   r¯   r°   s       r’   Útranslate_bytes_writer_get_itemr  Æ  s&   € ô
 /ØØØØÜ$Ü#Ü'óð r”   Ú__setitem__c                ó²  — t        |«      dk7  ry| j                  |«      }| j                  |d   «      }| j                  |d   «      }| j                  t        ||g|j                  «      }| j                  t
        ||g|j                  «      }t        «       }	t        «       }
| j                  ||	|
«       | j                  |
«       | j                  t        t        j                  d|j                  «      «       | j                  t        «       «       | j                  |	«       | j                  t        |||g|j                  «       | j                  «       S )zFOptimized BytesWriter.__setitem__ implementation with bounds checking.rJ  Nr   rº   r  )r´   rÇ   rè   rn   rÉ   rp   r   r  r  rç   r    r	  r$   rq   Únone)r‹   r®   r¯   r°   rÎ   rã   rŠ  r  r  r  r  s              r’   Útranslate_bytes_writer_set_itemr  Ö  s2  € ô ˆ4ƒy�A‚~Øð �.‰.˜Ó
#€Cð �N‰N˜4 ™7Ó#€EØ�N‰N˜4 ™7Ó#€Eð ×)Ñ)Ü$ s¨E l°H·M±Mó€Nð
 ×&Ñ&Ü# c¨>Ð%:¸H¿M¹Mó€Kô
 “,€KÜ“L€Mà×Ñ˜K¨°mÔDð ×Ñ˜=Ô)Ø‡K�KÜÔ-×9Ñ9Ð;OÐQY×Q^ÑQ^Ó_ôð ‡K�K”“Ôð ×Ñ˜;Ô'Ø×ÑÜ'¨#¨~¸uÐ)EÀxÇ}Á}ôð �<‰<‹>Ðr”   c           	     ó<   — t        | |||t        t        t        «      S )zGOptimized StringWriter.__getitem__ implementation with bounds checking.)rÌ  rr   rt   rs   r  s       r’   Ú translate_string_writer_get_itemr    s&   € ô
 /ØØØØÜ%Ü$Ü(óð r”   c           	     ó<   — t        | |||t        t        t        «      S )z@Optimized bytes.__getitem__ implementation with bounds checking.)rÌ  r^   r`   r_   r  s       r’   Útranslate_bytes_get_itemr    s&   € ô
 /ØØØØÜÜÜ óð r”   zlibrt.vecs.appendc                ól  — t        |j                  «      dk(  rœ|j                  t        t        gk(  rƒ|j                  d   }|j                  d   }| j	                  |«      }t        |t        «      rD| j                  |«      }| j                  |«      }t        | j                  |||j                  «      S y ©NrJ  r   rº   )r´   r¯   rÂ   r   r­   rÃ   r*   rÇ   rV   r‹   rÉ   ©r‹   rŒ   r�   Úvec_argÚitem_argÚvec_typeÚ	vec_valueÚ	arg_values           r’   Útranslate_vec_appendr%  &  óŽ   € ä
ˆ4�9‰9ƒ~˜Ò˜tŸ~™~´'¼7Ð1CÒCØ—)‘)˜A‘,ˆØ—9‘9˜Q‘<ˆØ×$Ñ$ WÓ-ˆÜ�h¤Ô%ØŸ™ wÓ/ˆIØŸ™ xÓ0ˆIÜ˜gŸo™o¨y¸)ÀXÇ]Á]ÓSÐSØr”   zlibrt.vecs.extendc                ól  — t        |j                  «      dk(  rœ|j                  t        t        gk(  rƒ|j                  d   }|j                  d   }| j	                  |«      }t        |t        «      rD| j                  |«      }| j                  |«      }t        | j                  |||j                  «      S y r  )r´   r¯   rÂ   r   r­   rÃ   r*   rÇ   rW   r‹   rÉ   )r‹   rŒ   r�   r   Úiter_argr"  r#  Ú
iter_values           r’   Útranslate_vec_extendr*  3  sŽ   € ä
ˆ4�9‰9ƒ~˜Ò˜tŸ~™~´'¼7Ð1CÒCØ—)‘)˜A‘,ˆØ—9‘9˜Q‘<ˆØ×$Ñ$ WÓ-ˆÜ�h¤Ô%ØŸ™ wÓ/ˆIØ Ÿ™¨Ó1ˆJÜ˜gŸo™o¨y¸*ÀhÇmÁmÓTÐTØr”   zlibrt.vecs.removec                ól  — t        |j                  «      dk(  rœ|j                  t        t        gk(  rƒ|j                  d   }|j                  d   }| j	                  |«      }t        |t        «      rD| j                  |«      }| j                  |«      }t        | j                  |||j                  «      S y r  )r´   r¯   rÂ   r   r­   rÃ   r*   rÇ   rY   r‹   rÉ   r  s           r’   Útranslate_vec_remover,  @  r&  r”   zlibrt.vecs.popc                óÒ  — dt        |j                  «      cxk  rdk  rÉn y t        d„ |j                  D «       «      rª|j                  d   }| j	                  |«      }t        |t        «      rz| j                  |«      }t        |j                  «      dk(  r| j                  |j                  d   «      }nt        dt        «      }t        | j                  |||j                  «      S y )Nrº   rJ  c              3  ó.   K  — | ]  }|t         k(  –— Œ y ­wrŠ   )r   rö  s     r’   rd  z$translate_vec_pop.<locals>.<genexpr>O  s   è ø€ Ò'S¸D¨´­Ñ'Sùs   ‚r   éÿÿÿÿ)r´   r¯   rf  rÂ   r­   rÃ   r*   rÇ   r   r2   rX   r‹   rÉ   )r‹   rŒ   r�   r   r"  r#  Úindex_values          r’   Útranslate_vec_popr1  M  s´   € àŒC�—	‘	‹NÔ˜aÔð ô %(Ñ'SÀDÇNÁNÔ'SÔ$SØ—)‘)˜A‘,ˆØ×$Ñ$ WÓ-ˆÜ�h¤Ô%ØŸ™ wÓ/ˆIÜ�4—9‘9‹~ Ò"Ø%Ÿn™n¨T¯Y©Y°q©\Ó:‘ä% bÔ*:Ó;�Ü˜7Ÿ?™?¨I°{ÀGÇLÁLÓQÐQØr”   rŠ   )r‹   rI   rŒ   r	   r�   r   rŽ   rŽ  r�   úRType | Noner£   úValue | None)r‹   rI   rŒ   r	   r�   r   r£   r3  )
r‹   rI   rŒ   r	   r�   r   r�   r2  r£   r3  )rŽ   r  r�   r2  r£   z$Callable[[Specializer], Specializer])rŽ   r  r�   r)   r£   z0Callable[[DunderSpecializer], DunderSpecializer])r‹   rI   r®   r   r¯   úlist[Expression]rŽ   r  r°   r   r£   r3  )r‹   rI   r9  r   rF  úCallable[[], Value]r:  zCallable[[Value], Value]r;  r5  r£   r%   )rŠ  r%   rò   r'   r£   r%   )r�   r   r£   Úbool)rŒ   r	   r�   r   r£   r6  )r‹   rI   r®   r   r¯   r4  r°   r   r
  r   r  r   r  r   r£   r3  )
r‹   rI   r®   r   r¯   r4  r°   r   r£   r3  )ÚÚ__doc__Ú
__future__r   Úcollections.abcr   Útypingr   r   Ú
mypy.nodesr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú
mypy.typesr   r   Úmypyc.ir.opsr   r   r   r   r   r   r    r!   r"   r#   r$   r%   Úmypyc.ir.rtypesr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   Úmypyc.irbuild.builderrI   rJ   Úmypyc.irbuild.constant_foldrK   Úmypyc.irbuild.for_helpersrL   rM   rN   rO   rP   Ú"mypyc.irbuild.format_str_tokenizerrQ   rR   rS   rT   Úmypyc.irbuild.vecrU   rV   rW   rX   rY   rZ   r[   Úmypyc.primitives.bytearray_opsr\   r]   Úmypyc.primitives.bytes_opsr^   r_   r`   ra   Úmypyc.primitives.dict_opsrb   rc   rd   re   rf   Úmypyc.primitives.float_opsrg   Úmypyc.primitives.generic_opsrh   ri   Úmypyc.primitives.int_opsrj   rk   rl   rm   Ú"mypyc.primitives.librt_strings_opsrn   ro   rp   rq   rr   rs   rt   Úmypyc.primitives.librt_vecs_opsru   Úmypyc.primitives.list_opsrv   rw   Úmypyc.primitives.misc_opsrx   Úmypyc.primitives.set_opsry   rz   Úmypyc.primitives.str_opsr{   r|   r}   r~   r   r€   r�   r‚   rƒ   r„   Úmypyc.primitives.tuple_opsr…   r†   r¢   r?  rª   r‡   Ú__annotations__rˆ   r“   r—   rš   r¦   r«   r²   r¶   rÏ   r×   rÞ   rë   ró   r  r  r
  r  r  r&  r-  r2  r*  rQ  rU  rZ  r\  rv  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¤   r”   r’   ú<module>rR     sC
  ðòõ #å $ß ÷÷ ÷ ÷ õ ÷& *÷÷ ÷ ó ÷$÷ $÷ $÷ $÷ $÷ $÷ $÷ $÷ $ñ $÷J FÝ :÷õ ÷ó ÷÷ ñ ÷ _÷ó ÷õ õ 8ß F÷ó ÷÷ ñ õ ;ß KÝ 5ß I÷÷ ÷ ÷ Oð ˜ X¨wÐ7¸À¹ÐEÑF€ð ˜k¨:°t¸JÑ7GÈÐTÐV[Ð^bÑVbÐbÑcÐ ð CE€Ð?Ó Dð
 IKÐ ÐEÓ Jð `dðØðØ&ðØ07ðØ?IðØP\ðàóð ZØðZØ&ðZØ07ðZàóZð QUðCØðCØ&ðCØ0:ðCØAMðCàóCð $(ðØ
ðØ ðà)óó"ð"Øðàðð ðð ð	ð
 ðð óñ< Ð'Ó(òó )ðñ �^Ó$Ù�^Ó$ÙÐ%Ó&ÙÐ'Ó(ÙÐ*Ó+ÙÐ*Ó+ÙÐ*Ó+ÙÐ)Ó*ðØðØ&ðØ07ðàòó +ó ,ó ,ó ,ó )ó 'ó %ó %ðñ, �^Ó$òó %ðñ& �_Ó%òó &ðñ Ð)Ó*ð]Øð]Ø&ð]Ø07ð]àò]ó +ð]ñ> �_Ó%ò?ó &ð?ñ< �_Ó%ðØðØ&ðØ07ðàòó &ðñ8 Ð%Ó&òó 'ðñ Ð%Ó&ðØðØ&ðØ07ðàòó 'ðñ8 �^Ó$ðØðØ&ðØ07ðàòó %ðñ" �^Ó$Ù�^Ó$òó %ó %ðñ4 Ð%Ó&ÙÐ)Ó*Ù�_Ó%Ù�^Ó$Ù�^Ó$ÙÐ&Ó'ÙÐ.Ó/Ù�V˜^Ó,Ù�X˜Ó/Ù�X˜Ó/Ù�X˜~Ó.ð!Øð!Ø&ð!Ø07ð!àò!ó /ó 0ó 0ó -ó 0ó (ó %ó %ó &ó +ó 'ð!ñH �^Ó$òó %ðñ �^Ó$òó %ðð Øðà	ðð 'ðð %ð	ð
 #ðð óñ8 �^Ó$ò'ó %ð'ñT Ð(Ó)Ù�YÓÙ�]Ó#Ù�^Ó$ð
Øð
Ø&ð
Ø07ð
àò
ó %ó $ó  ó *ð
ñ �_Ó%ò(ó &ð(ðX %Ø.Ø&Ø$Ø&Ø.Ø"Ø$Ø"Ø"Ø&Ø$ñ Ð �uó ñ  Ð*Ó+òUó ,ðUñp �\ ?Ó3ò*ó 4ð*ñZ �X˜~Ó.òó /ðñ  �V˜^Ó,ò@ó -ð@ñF �X˜~Ó.ò0ó /ð0ñf �XÐ/Ó0ò9ó 1ð9ñx Ð*Ó+òó ,ðñ& Ð*Ó+òó ,ðñ. Ð*Ó+òó ,ðñ( Ð)Ó*òó +ðó*ñ  �^Ó$òó %ðñ �_Ó%ò+ó &ð+ñ Ð%Ó&òó 'ðñ �^Ó$òó %ðóBóCñ
 �YÐ 1Ó2ò#ó 3ð#ñL �]Ð$5Ó6òSó 7ðSñ4 �Z Ó0òCó 1ðCðL>Øð>àð>ð ð>ð ð	>ð
 *ð>ð )ð>ð -ð>ð ó>ñB �=Ð"9Ó:ðØðØ#-ðØ5EðØQ[ðàòó ;ðñ �=Ð"9Ó:ð,Øð,Ø#-ð,Ø5Eð,ØQ[ð,àò,ó ;ð,ñ^ �=Ð":Ó;ðØðØ#-ðØ5EðØQ[ðàòó <ðñ �=Ð"2Ó3ðØðØ#-ðØ5EðØQ[ðàòó 4ðñ Ð(Ó)ò	ó *ð	ñ Ð(Ó)ò	ó *ð	ñ Ð(Ó)ò	ó *ð	ñ Ð%Ó&òó 'ñr”   