§
    ‚Štj›Ÿ  ã                  ó®  — U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZ ddlmZmZmZ ddlmZmZ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! ddl"Z#ddl$m%Z% ddl&m'Z'm(Z(m)Z) er
ddl*Z*ddl*m+Z+  e!d¦  «        Z, e%j-        e.¦  «        Z/dZ0 e(¦   «         rdZ0 e1¦   «         Z2de3d<   d~d„Z4dZ5 e'¦   «         rdZ5dd„Z6d€d„Z7d„ Z8d�d „Z9d�d!„Z:d�d"„Z;d�d#„Z<d�d$„Z=d%„ Z>	 	 	 d‚dƒd-„Z?d.„ Z@d�d/„ZA	 d„d…d3„ZBd†d6„ZCd7„ ZDd8„ ZEd‡d:„ZF G d;„ d<e¦  «        ZGdˆd?„ZH	 d‰dŠdE„ZI G dF„ dGeJe¦  «        ZK G dH„ dIeK¦  «        ZL G dJ„ dKeK¦  «        ZM G dL„ dM¦  «        ZNdN„ ZOdO„ ZPd‹dŒdV„ZQd‰dW„ZRdX„ ZSd‰dY„ZTdZ„ ZUd[„ ZVd\„ ZWd]„ ZXd‰d�d`„ZY G da„ dbe d¬c¦  «        ZZdŽdf„Z[d�dh„Z\d�dn„Z]d‘do„Z^dp„ Z_dqZ`d’ds„Zadt„ Zbdu„ Zcd“dw„Zd G dx„ dye¦  «        Zedzd{d|defffd}„ZgdS )”z
Generic utilities
é    )ÚannotationsN)ÚOrderedDictÚUserDict)ÚCallableÚIterableÚMutableMapping)ÚAbstractContextManagerÚ	ExitStackÚnullcontext)ÚfieldsÚis_dataclass)ÚEnum)ÚpartialÚwraps)ÚTYPE_CHECKINGÚAnyÚ	TypedDictÚTypeVaré   )Úloggingé   )Úis_mlx_availableÚis_torch_availableÚis_torch_fx_proxy)ÚnnÚTFTzset[type[Any]]Ú_registered_model_output_typesÚoutput_typeútype[ModelOutput]ÚreturnÚNonec                ó@  — t           sd S dd l}|j                             ¦   «         rd S | t          v rd S dd lmc m} |                     | t          t          t          | ¬¦  «        | j        › d| j        › �|j        ¬¦  «         t                               | ¦  «         d S )Nr   )r   ú.)Úserialized_type_nameÚflatten_with_keys_fn)Ú_is_torch_availableÚtorchÚcompilerÚis_compilingr   Útorch.utils._pytreeÚutilsÚ_pytreeÚregister_pytree_nodeÚ_model_output_flattenr   Ú_model_output_unflattenÚ
__module__Ú__name__Ú_dict_flatten_with_keysÚadd)r   r'   Útorch_pytrees      úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/utils/generic.pyÚ"_register_model_output_pytree_noder6   <   sÎ   € Ýð ØˆØ€L€L€Lð
 „~×"Ò"Ñ$Ô$ð ØˆØÕ4Ð4Ð4Øˆà.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.à×%Ò%ØÝÝÕ'°[ÐAÑAÔAØ +Ô 6ÐOÐO¸Ô9MÐOÐOØ)ÔAð &ñ ô ð õ #×&Ò& {Ñ3Ô3Ð3Ð3Ð3ó    Úintc                óf   — |                       ¦   «         } | dv rdS | dv rdS t          d| ›�¦  «        ‚)zïConvert a string representation of truth to true (1) or false (0).

    True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'.
    Raises ValueError if 'val' is anything else.
    >   Ú1ÚtÚyÚonÚyesÚtruer   >   Ú0ÚfÚnÚnoÚoffÚfalser   zinvalid truth value )ÚlowerÚ
ValueError)Úvals    r5   Ú	strtoboolrI   \   sJ   € ð �)Š)‰+Œ+€CØ
Ð2Ð2Ð2ØˆqØ
Ð3Ð3Ð3ØˆqÝ
Ð3¨CÐ3Ð3Ñ
4Ô
4Ð4r7   ú
str | Nonec                óÈ   — t          t          | ¦  «        ¦  «        }|                     d¦  «        rdS |                     d¦  «        rdS |                     d¦  «        rdS dS )zÃ
    Tries to guess the framework of an object `x` from its repr (brittle but will help in `is_tensor` to try the
    frameworks in a smart order, without the need to import the frameworks).
    z<class 'torch.Úptz<class 'numpy.Únpz<class 'mlx.ÚmlxN)ÚstrÚtypeÚ
startswith)ÚxÚrepresentations     r5   Úinfer_framework_from_reprrT   j   sr   € õ
 �˜a™œ‘\”\€NØ× Ò Ð!1Ñ2Ô2ð ØˆtØ	×	"Ò	"Ð#3Ñ	4Ô	4ð ØˆtØ	×	"Ò	" >Ñ	2Ô	2ð Øˆuðð r7   c                óð   ‡‡— t           t          t          dœŠt          | ¦  «        Š‰€g n‰g}‰dk    r|                     d¦  «         |                     ˆfd„‰D ¦   «         ¦  «         ˆfd„|D ¦   «         S )z¿
    Returns an (ordered since we are in Python 3.7+) dictionary framework to test function, which places the framework
    we can guess from the repr first, then Numpy, then the others.
    )rL   rM   rN   NrM   c                ó    •— g | ]
}|‰d fv¯|‘ŒS )rM   © )Ú.0rA   Úpreferred_frameworks     €r5   ú
<listcomp>z1_get_frameworks_and_test_func.<locals>.<listcomp>‡   s*   ø€ Ð\Ð\Ð\˜Q°qÐATÐVZÐ@[Ð7[Ð7[�qÐ7[Ð7[Ð7[r7   c                ó"   •— i | ]}|‰|         “ŒS rW   rW   )rX   rA   Úframework_to_tests     €r5   ú
<dictcomp>z1_get_frameworks_and_test_func.<locals>.<dictcomp>ˆ   s!   ø€ Ð8Ð8Ð8¨ˆAÐ  Ô#Ð8Ð8Ð8r7   )Úis_torch_tensorÚis_numpy_arrayÚis_mlx_arrayrT   ÚappendÚextend)rR   Ú
frameworksr\   rY   s     @@r5   Ú_get_frameworks_and_test_funcrd   x   s¡   øø€ õ ÝÝðð Ðõ
 4°AÑ6Ô6Ðà*Ð2��Ð9LÐ8M€JØ˜dÒ"Ð"Ø×Ò˜$ÑÔÐØ×ÒÐ\Ð\Ð\Ð\Ð"3Ð\Ñ\Ô\Ñ]Ô]Ð]Ø8Ð8Ð8Ð8¨ZÐ8Ñ8Ô8Ð8r7   Úboolc                ó�   — t          | ¦  «        }|                     ¦   «         D ]} || ¦  «        r dS Œt          | ¦  «        rdS dS )z{
    Tests if `x` is a `torch.Tensor`, `np.ndarray` or `mlx.array` in the order defined by `infer_framework_from_repr`
    TF)rd   Úvaluesr   )rR   Úframework_to_test_funcÚ	test_funcs      r5   Ú	is_tensorrj   ‹   se   € õ
 ;¸1Ñ=Ô=ÐØ+×2Ò2Ñ4Ô4ð ð ˆ	Øˆ9�Q‰<Œ<ð 	Ø�4�4ð	õ ˜ÑÔð Øˆtàˆ5r7   c                ó6   — t          | t          j        ¦  «        S )z/
    Tests if `x` is a numpy array or not.
    )Ú
isinstancerM   Úndarray©rR   s    r5   r_   r_   œ   s   € õ �a�œÑ$Ô$Ð$r7   c                óF   — t           sdS ddl}t          | |j        ¦  «        S )z]
    Tests if `x` is a torch tensor or not. Safe to call even if torch is not installed.
    Fr   N)r&   r'   rl   ÚTensor©rR   r'   s     r5   r^   r^   £   ó,   € õ ð Øˆuà€L€L€Lå�a˜œÑ&Ô&Ð&r7   c                óF   — t           sdS ddl}t          | |j        ¦  «        S )z]
    Tests if `x` is a torch device or not. Safe to call even if torch is not installed.
    Fr   N)r&   r'   rl   Údevicerq   s     r5   Úis_torch_deviceru   ¯   rr   r7   c                ó¶   — t           sdS ddl}t          | t          ¦  «        r#t	          || ¦  «        rt          || ¦  «        } ndS t          | |j        ¦  «        S )z\
    Tests if `x` is a torch dtype or not. Safe to call even if torch is not installed.
    Fr   N)r&   r'   rl   rO   ÚhasattrÚgetattrÚdtyperq   s     r5   Úis_torch_dtyperz   »   sf   € õ ð Øˆuà€L€L€Lå�!•SÑÔð Ý�5˜!ÑÔð 	Ý˜˜qÑ!Ô!ˆAˆAà�5Ý�a˜œÑ%Ô%Ð%r7   c                ó4  — t          | ¦  «        rdS t          | ¦  «        rdS t          | t          t          t
          t          j        f¦  «        rdS t          | t          t          f¦  «        r*t          | ¦  «        dk    rdS t          | d         ¦  «        S dS )zA
    Check if a value is array-like (includes ragged arrays)
    Tr   F)r_   r^   rl   r8   Úfloatre   rM   ÚnumberÚlistÚtupleÚlenÚ_is_tensor_or_array_like)Úvalues    r5   r�   r�   Ì   s‘   € õ �eÑÔð ØˆtÝ�uÑÔð ØˆtÝ�%�#�u¥d­B¬IÐ6Ñ7Ô7ð Øˆtå�%�$¥˜Ñ'Ô'ð 2Ýˆu‰:Œ:˜Š?ˆ?à�4Ý'¨¨a¬Ñ1Ô1Ð1àˆ5r7   Údevice_typerO   ry   útorch.dtype | NoneÚenabledÚcache_enabledúbool | Nonec                óÆ   — t           st          d¦  «        ‚ddl}| dk    rt          ¦   «         S  |j        | ¦  «        s|r |j        | |||¬¦  «        S t          ¦   «         S )aŠ  
    Context manager that only autocasts if:

    - `autocast` is already enabled in this context
    - Or this call to `maybe_autocast` has `enabled=True`

    This prevents `autocast` being added to the graph when it is effectively a no-op.
    Which makes graph splitting in `torch.compile` more flexible as it removes the
    requirement that partition IDs be monotonically increasing.
    z2`maybe_autocast` requires PyTorch to be installed.r   NÚmeta)ry   r…   r†   )r&   ÚImportErrorr'   r   Úis_autocast_enabledÚautocast)rƒ   ry   r…   r†   r'   s        r5   Úmaybe_autocastr�   à   s|   € õ  ð PÝÐNÑOÔOÐOà€L€L€Là�fÒÐÝ‰}Œ}ÐØ €uÔ  Ñ-Ô-ð °ð ØˆuŒ~˜k°ÀÐWdÐeÑeÔeÐeå‰}Œ}Ðr7   c                ó8   — dd l m} t          | |j        ¦  «        S )Nr   )Úmlx.coreÚcorerl   Úarray)rR   Úmxs     r5   Ú_is_mlxr“   ý   s&   € ØÐÐÐÐÐå�a˜œÑ"Ô"Ð"r7   c                ó2   — t           sdnt          | ¦  «        S )zZ
    Tests if `x` is a mlx array or not. Safe to call even when mlx is not installed.
    F)Ú_is_mlx_availabler“   rn   s    r5   r`   r`     s   € õ *Ð9ˆ5ˆ5­w°q©z¬zÐ9r7   Ú"requested_attention_implementationÚversionúint | list[int] | Nonec                ó¼   ‡— | �|�t          d¦  «        ‚| �| j        Šn|Š‰€dS |�3t          |t          ¦  «        r|g}t	          ˆfd„|D ¦   «         ¦  «        S d‰v S )a_  
    Checks whether some flavor of flash attention is requested or not. Optionally, checks for specific versions of
    flash attention.

    This is checked against one of the two arguments, i.e. either the `config` or the directly passed value
    `requested_attention_implementation`. Otherwise, an error will be raised (ambiguity).

    The different versions of flash attention are usually
    - Implementations based on the original flash attention repo: https://github.com/Dao-AILab/flash-attention
    - Kernels implementations such as: https://huggingface.co/kernels-community/vllm-flash-attn3
    Nz…Requested attention implementation is ambiguous: Please pass either the config or the name of the attention implementation, not both.Fc              3  óf   •K  — | ]+}t          j        d t          |¦  «        z   ‰¦  «        duV — Œ,dS )z	.*flash.*N)ÚreÚmatchrO   )rX   ÚvÚ checked_attention_implementations     €r5   ú	<genexpr>z/is_flash_attention_requested.<locals>.<genexpr>+  sB   øè è € ÐrÐrÐef•2”8˜L­3¨q©6¬6Ñ1Ð3SÑTÔTÐ\`Ð`ÐrÐrÐrÐrÐrÐrr7   Úflash)rG   Ú_attn_implementationrl   r8   Úany)Úconfigr–   r—   rž   s      @r5   Úis_flash_attention_requestedr¤   
  s£   ø€ ð ÐÐ@ÐLÝðcñ
ô 
ð 	
ð
 ÐØ+1Ô+FÐ(Ð(à+MÐ(ð (Ð/Øˆuð ÐÝ�g�sÑ#Ô#ð 	 Ø�iˆGÝÐrÐrÐrÐrÐjqÐrÑrÔrÑrÔrÐrð Ð6Ð6Ð6r7   Úimplementationútuple[bool, str | None]c                ób   — | €dS |                       d¦  «        }||                      d¦  «        fS )zý
    Split the optional `paged|` prefix from an attention implementation string.

    Note that `None` means using the default attention implementation, which is either torch's native `sdpa` or `eager` (if `sdpa` is not implemented for that model).
    N)FNzpaged|)rQ   Úremoveprefix)r¥   Úis_pageds     r5   Úsplit_attention_implementationrª   1  s;   € ð ÐØˆ{à×(Ò(¨Ñ2Ô2€HØ�^×0Ò0°Ñ:Ô:Ð:Ð:r7   c                óN  — t          | t          t          f¦  «        r| S t          | t          t          f¦  «        rd„ |                      ¦   «         D ¦   «         S t          | t          t          f¦  «        r4t          d„ | D ¦   «         ¦  «        rt          | ¦  «        S d„ | D ¦   «         S d„ d„ dœ}t          | ¦  «        }|                     ¦   «         D ]#\  }} || ¦  «        r ||         | ¦  «        c S Œ$t          | t          j        ¦  «        r|                      ¦   «         S | S )zP
    Convert a PyTorch tensor, Numpy array or python list to a python list.
    c                ó4   — i | ]\  }}|t          |¦  «        “ŒS rW   ©Ú	to_py_obj©rX   Úkr�   s      r5   r]   zto_py_obj.<locals>.<dictcomp>E  s$   € Ð8Ð8Ð8¡D A q�•9˜Q‘<”<Ð8Ð8Ð8r7   c              3  ód   K  — | ]+}t          |t          t          t          j        f¦  «        V — Œ,d S ©N)rl   r8   r|   rM   r}   )rX   rR   s     r5   rŸ   zto_py_obj.<locals>.<genexpr>H  s5   è è € ÐCÐC¸!�z˜!�c¥5­"¬)Ð4Ñ5Ô5ÐCÐCÐCÐCÐCÐCr7   c                ó,   — g | ]}t          |¦  «        ‘ŒS rW   r­   )rX   Úos     r5   rZ   zto_py_obj.<locals>.<listcomp>L  s   € Ð*Ð*Ð* •	˜!‘”Ð*Ð*Ð*r7   c                ó*   — |                       ¦   «         S r²   ©Útolist©Úobjs    r5   ú<lambda>zto_py_obj.<locals>.<lambda>O  ó   € ˜#Ÿ*š*™,œ,€ r7   c                ó*   — |                       ¦   «         S r²   r¶   r¸   s    r5   rº   zto_py_obj.<locals>.<lambda>P  r»   r7   ©rL   rM   )rl   r8   r|   Údictr   Úitemsr~   r   Úallrd   rM   r}   r·   )r¹   Úframework_to_py_objrh   Ú	frameworkri   s        r5   r®   r®   >  sN  € õ �#��U�|Ñ$Ô$ð 
+Øˆ
Ý	�C�$¥Ð)Ñ	*Ô	*ð +Ø8Ð8¨C¯IªI©K¬KÐ8Ñ8Ô8Ð8Ý	�C�$¥˜Ñ	'Ô	'ð +åÐCÐC¸sÐCÑCÔCÑCÔCð 	Ý˜‘9”9Ðð +Ð* cÐ*Ñ*Ô*Ð*ð 'Ð&Ø&Ð&ðð Ðõ ;¸3Ñ?Ô?ÐØ 6× <Ò <Ñ >Ô >ð 7ð 7Ñˆ	�9Øˆ9�S‰>Œ>ð 	7Ø1Ð& yÔ1°#Ñ6Ô6Ð6Ð6Ð6ð	7õ �#•r”yÑ!Ô!ð Ø�zŠz‰|Œ|Ðàˆ
r7   c                óv  — d„ d„ dœ}t          | t          t          f¦  «        rd„ |                      ¦   «         D ¦   «         S t          | t          t
          f¦  «        rt          j        | ¦  «        S t          | ¦  «        }|                     ¦   «         D ]#\  }} || ¦  «        r ||         | ¦  «        c S Œ$| S )zP
    Convert a PyTorch tensor, Numpy array or python list to a Numpy array.
    c                ór   — |                       ¦   «                              ¦   «                              ¦   «         S r²   )ÚdetachÚcpuÚnumpyr¸   s    r5   rº   zto_numpy.<locals>.<lambda>f  s&   € ˜#Ÿ*š*™,œ,×*Ò*Ñ,Ô,×2Ò2Ñ4Ô4€ r7   c                ó   — | S r²   rW   r¸   s    r5   rº   zto_numpy.<locals>.<lambda>g  s   € ˜#€ r7   r½   c                ó4   — i | ]\  }}|t          |¦  «        “ŒS rW   )Úto_numpyr¯   s      r5   r]   zto_numpy.<locals>.<dictcomp>k  s$   € Ð7Ð7Ð7¡4 1 a�•8˜A‘;”;Ð7Ð7Ð7r7   )	rl   r¾   r   r¿   r~   r   rM   r‘   rd   )r¹   Úframework_to_numpyrh   rÂ   ri   s        r5   rÊ   rÊ   `  sÝ   € ð 5Ð4Øˆoðð Ðõ
 �#��hÐ'Ñ(Ô(ð Ø7Ð7¨3¯9ª9©;¬;Ð7Ñ7Ô7Ð7Ý	�C�$¥˜Ñ	'Ô	'ð ÝŒx˜‰}Œ}Ðõ ;¸3Ñ?Ô?ÐØ 6× <Ò <Ñ >Ô >ð 6ð 6Ñˆ	�9Øˆ9�S‰>Œ>ð 	6Ø0Ð% iÔ0°Ñ5Ô5Ð5Ð5Ð5ð	6ð €Jr7   Ú	json_filec                óø   — 	 t          | d¬¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   t          j        |¦  «        }n&# t          j        $ r t          d| › d�¦  «        ‚w xY w|S )zeA helper to load safe config files and raise a proper error message if it wasn't serialized correctlyzutf-8)ÚencodingNz"It looks like the config file at 'z' is not a valid JSON file.)ÚopenÚreadÚjsonÚloadsÚJSONDecodeErrorÚOSError)rÌ   ÚreaderÚtextÚconfig_dicts       r5   Úsafe_load_json_filerØ   x  sÍ   € ðcÝ�) gÐ.Ñ.Ô.ð 	!°&Ø—;’;‘=”=ˆDð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!å”j Ñ&Ô&ˆˆøÝÔð cð cð cÝÐa¸9ÐaÐaÐaÑbÔbÐbðcøøøàÐs&   ‚A “4¨A ´8¸A »8¼A Á#A7c                  óx   ‡ — e Zd ZdZdd„Zˆ fd„Zˆ fd„Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zˆ fd„Zˆ fd„Zˆ fd„Zdd„Zˆ xZS )ÚModelOutputa±  
    Base class for all model outputs as dataclass. Has a `__getitem__` that allows indexing by integer or slice (like a
    tuple) or strings (like a dictionary) that will ignore the `None` attributes. Otherwise behaves like a regular
    python dictionary.

    <Tip warning={true}>

    You can't unpack a `ModelOutput` directly. Use the [`~utils.ModelOutput.to_tuple`] method to convert it to a tuple
    before.

    </Tip>
    r    r!   c                ó$   — t          | ¦  «         dS )zìRegister subclasses as pytree nodes.

        This is necessary to synchronize gradients when using `torch.nn.parallel.DistributedDataParallel` with
        `static_graph=True` with modules that output `ModelOutput` subclasses.
        N)r6   )Úclss    r5   Ú__init_subclass__zModelOutput.__init_subclass__‘  s   € õ 	+¨3Ñ/Ô/Ð/Ð/Ð/r7   c                ó   •—  t          ¦   «         j        |i |¤Ž t          t          | ¦  «        ¦  «         | j        t
          k    }|r3t          | ¦  «        s&t          | j        › d| j        j	        › d�¦  «        ‚d S d S )Nr#   z` is not a dataclass. This is a subclass of ModelOutput and so must use the @dataclass decorator.)
ÚsuperÚ__init__r6   rP   Ú	__class__rÚ   r   Ú	TypeErrorr0   r1   )ÚselfÚargsÚkwargsÚis_modeloutput_subclassrá   s       €r5   rà   zModelOutput.__init__™  s©   ø€ Ø�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ý*­4°©:¬:Ñ6Ô6Ð6ð #'¤.µKÒ"?Ðà"ð 	­<¸Ñ+=Ô+=ð 	ÝØ”?ð _ð _ T¤^Ô%<ð _ð _ð _ñô ð ð	ð 	ð 	ð 	r7   c                ó   •‡ — t          t          ‰ ¦  «        ¦  «         t          ‰ ¦  «        }t          |¦  «        st	          ‰ j        j        › d�¦  «        ‚t          d„ |dd…         D ¦   «         ¦  «        st	          ‰ j        j        › d�¦  «        ‚t          ‰ |d         j	        ¦  «        }t          ˆ fd„|dd…         D ¦   «         ¦  «        }|�r‡t          |¦  «        �swt          |t          ¦  «        r|                     ¦   «         }d}n%	 t          |¦  «        }d}n# t          $ r d	}Y nw xY w|�rt!          ‰ |d         j	        d¦  «         t#          ¦   «                              |d         j	        ¦  «         t'          |¦  «        D ]±\  }}t          |t(          t*          f¦  «        r.t          |¦  «        d
k    st          |d         t,          ¦  «        s,|dk    r|‰ |d         j	        <   nt	          d|› d�¦  «        ‚ n9t!          ‰ |d         |d         ¦  «         |d         �|d         ‰ |d         <   Œ²dS dS |�|‰ |d         j	        <   dS dS |D ]-}‰ j                             |j	        ¦  «        }	|	�
|	‰ |j	        <   Œ.dS )zeCheck the ModelOutput dataclass.

        Only occurs if @dataclass decorator has been used.
        z has no fields.c              3  ó(   K  — | ]}|j         d u V — Œd S r²   )Údefault©rX   Úfields     r5   rŸ   z,ModelOutput.__post_init__.<locals>.<genexpr>´  s)   è è € ÐGÐG¨U�5”= DÐ(ÐGÐGÐGÐGÐGÐGr7   r   Nz. should not have more than one required field.r   c              3  óZ   •K  — | ]%}‰j                              |j        ¦  «        d u V — Œ&d S r²   )Ú__dict__ÚgetÚname©rX   rë   rã   s     €r5   rŸ   z,ModelOutput.__post_init__.<locals>.<genexpr>¸  s:   øè è € Ð#hÐ#hÈe D¤M×$5Ò$5°e´jÑ$AÔ$AÀTÐ$IÐ#hÐ#hÐ#hÐ#hÐ#hÐ#hr7   TFr   zCannot set key/value for z&. It needs to be a tuple (key, value).)r6   rP   r   r€   rG   rá   r1   rÀ   rx   rï   rj   rl   r¾   r¿   Úiterrâ   Úsetattrrß   Ú__delitem__Ú	enumerater~   r   rO   rí   rî   )rã   Úclass_fieldsÚfirst_fieldÚother_fields_are_noneÚiteratorÚfirst_field_iteratorÚidxÚelementrë   r�   rá   s   `         €r5   Ú__post_init__zModelOutput.__post_init__©  sù  øø€ õ
 	+­4°©:¬:Ñ6Ô6Ð6Ý˜d‘|”|ˆõ �<Ñ Ô ð 	JÝ ¤Ô 7ÐHÐHÐHÑIÔIÐIÝÐGÐG°lÀ1À2À2Ô6FÐGÑGÔGÑGÔGð 	iÝ ¤Ô 7ÐgÐgÐgÑhÔhÐhå˜d L°¤OÔ$8Ñ9Ô9ˆÝ #Ð#hÐ#hÐ#hÐ#hÐWcÐdeÐdfÐdfÔWgÐ#hÑ#hÔ#hÑ hÔ hÐà ñ %	)­°;Ñ)?Ô)?ñ %	)Ý˜+¥tÑ,Ô,ð 1Ø&×,Ò,Ñ.Ô.�Ø'+Ð$Ð$ð1Ý# KÑ0Ô0�HØ+/Ð(Ð(øÝ ð 1ð 1ð 1Ø+0Ð(Ð(Ð(ð1øøøð
 $ñ 9å˜˜l¨1œoÔ2°DÑ9Ô9Ð9Ý‘”×#Ò# L°¤OÔ$8Ñ9Ô9Ð9Ý$-¨hÑ$7Ô$7ð 6ð 6‘L�C˜Ý% gµµe¨}Ñ=Ô=ð 	ÅÀWÁÄÐQRÒARÐARÕZdÐelÐmnÔeoÕqtÑZuÔZuÐARØ !š8˜8à9D˜D ¨a¤Ô!5Ñ6Ð6õ #-Ø k¸GÐ kÐ kÐ kñ#ô #ð ð ˜Ý˜D '¨!¤*¨g°a¬jÑ9Ô9Ð9Ø˜q”zÐ-Ø+2°1¬:˜˜W QœZÑ(øð6ð 6ð ˜ð Ð(Ø-8��\ !”_Ô)Ñ*Ð*Ð*ð )Ð(ð &ð )ð )�Ø”M×%Ò% e¤jÑ1Ô1�Ø�=Ø'(�D˜œÑ$øð)ð )s   ÄD& Ä&D5Ä4D5c                ó<   — t          d| j        j        › d�¦  «        ‚)Nz$You cannot use ``__delitem__`` on a ú
 instance.©Ú	Exceptionrá   r1   ©rã   rä   rå   s      r5   ró   zModelOutput.__delitem__á  s!   € ÝÐb¸t¼~Ô?VÐbÐbÐbÑcÔcÐcr7   c                ó<   — t          d| j        j        › d�¦  «        ‚)Nz#You cannot use ``setdefault`` on a rþ   rÿ   r  s      r5   Ú
setdefaultzModelOutput.setdefaultä  s!   € ÝÐa¸d¼nÔ>UÐaÐaÐaÑbÔbÐbr7   c                ó<   — t          d| j        j        › d�¦  «        ‚)NzYou cannot use ``pop`` on a rþ   rÿ   r  s      r5   ÚpopzModelOutput.popç  s!   € ÝÐZ°t´~Ô7NÐZÐZÐZÑ[Ô[Ð[r7   c                ó<   — t          d| j        j        › d�¦  «        ‚)NzYou cannot use ``update`` on a rþ   rÿ   r  s      r5   ÚupdatezModelOutput.updateê  s!   € ÝÐ]¸$¼.Ô:QÐ]Ð]Ð]Ñ^Ô^Ð^r7   c                ó²   — t          |t          ¦  «        r)t          |                      ¦   «         ¦  «        }||         S |                      ¦   «         |         S r²   )rl   rO   r¾   r¿   Úto_tuple)rã   r°   Ú
inner_dicts      r5   Ú__getitem__zModelOutput.__getitem__í  sF   € Ý�a�ÑÔð 	&Ý˜dŸjšj™lœlÑ+Ô+ˆJØ˜a”=Ð à—=’=‘?”? 1Ô%Ð%r7   c                óÎ   •— d„ t          | ¦  «        D ¦   «         }||v r$|�"t          ¦   «                              ||¦  «         t          ¦   «                              ||¦  «         d S )Nc                ó   — h | ]	}|j         ’Œ
S rW   )rï   rê   s     r5   ú	<setcomp>z*ModelOutput.__setattr__.<locals>.<setcomp>õ  s   € Ð<Ð<Ð< e�u”zÐ<Ð<Ð<r7   )r   rß   Ú__setitem__Ú__setattr__)rã   rï   r‚   Úfield_namesrá   s       €r5   r  zModelOutput.__setattr__ô  sf   ø€ Ø<Ð<­v°d©|¬|Ð<Ñ<Ô<ˆØ�;ÐÐ 5Ð#4å‰GŒG×Ò  eÑ,Ô,Ð,Ý‰Œ×Ò˜D %Ñ(Ô(Ð(Ð(Ð(r7   c                ó�   •— t          ¦   «                              ||¦  «         t          ¦   «                              ||¦  «         d S r²   )rß   r  r  )rã   Úkeyr‚   rá   s      €r5   r  zModelOutput.__setitem__û  s=   ø€ å‰Œ×Ò˜C Ñ'Ô'Ð'å‰Œ×Ò˜C Ñ'Ô'Ð'Ð'Ð'r7   c                ó  •‡ — t          ‰ ¦  «        s t          ¦   «                              ¦   «         S t          ¦   «                              ¦   «         ^}}}t          ˆ fd„t	          ‰ ¦  «        D ¦   «         ¦  «        }||g|¢R S )Nc              3  óB   •K  — | ]}t          ‰|j        ¦  «        V — Œd S r²   )rx   rï   rð   s     €r5   rŸ   z)ModelOutput.__reduce__.<locals>.<genexpr>  s/   øè è € ÐIÐI°5•W˜T 5¤:Ñ.Ô.ÐIÐIÐIÐIÐIÐIr7   )r   rß   Ú
__reduce__r   r   )rã   ÚcallableÚ_argsÚ	remainingrä   rá   s   `    €r5   r  zModelOutput.__reduce__  s�   øø€ Ý˜DÑ!Ô!ð 	(Ý‘7”7×%Ò%Ñ'Ô'Ð'Ý&+¡g¤g×&8Ò&8Ñ&:Ô&:Ð#ˆ�%˜)ÝÐIÐIÐIÐI½FÀ4¹L¼LÐIÑIÔIÑIÔIˆØ˜Ð) 	Ð)Ð)Ð)r7   r   c                ó^   ‡ — t          ˆ fd„‰                      ¦   «         D ¦   «         ¦  «        S )za
        Convert self to a tuple containing all the attributes/keys that are not `None`.
        c              3  ó(   •K  — | ]}‰|         V — Œd S r²   rW   )rX   r°   rã   s     €r5   rŸ   z'ModelOutput.to_tuple.<locals>.<genexpr>  s'   øè è € Ð2Ð2 �T˜!”WÐ2Ð2Ð2Ð2Ð2Ð2r7   )r   Úkeys©rã   s   `r5   r	  zModelOutput.to_tuple  s0   ø€ õ Ð2Ð2Ð2Ð2 d§i¢i¡k¤kÐ2Ñ2Ô2Ñ2Ô2Ð2r7   )r    r!   )r    r   )r1   r0   Ú__qualname__Ú__doc__rÝ   rà   rü   ró   r  r  r  r  r  r  r  r	  Ú__classcell__)rá   s   @r5   rÚ   rÚ   ƒ  s&  ø€ € € € € ðð ð0ð 0ð 0ð 0ðð ð ð ð ð 6)ð 6)ð 6)ð 6)ð 6)ðpdð dð dðcð cð cð\ð \ð \ð_ð _ð _ð&ð &ð &ð)ð )ð )ð )ð )ð(ð (ð (ð (ð (ð*ð *ð *ð *ð *ð3ð 3ð 3ð 3ð 3ð 3ð 3ð 3r7   rÚ   Úoutputútuple[list[Any], list[str]]c                ó†   — t          |                      ¦   «         ¦  «        t          |                      ¦   «         ¦  «        fS r²   )r~   rg   r  )r!  s    r5   r.   r.     s-   € Ý�—’‘”Ñ Ô ¥$ v§{¢{¡}¤}Ñ"5Ô"5Ð5Ð5r7   rg   úIterable[Any]Úcontextú	list[str]útype[ModelOutput] | Nonec           
     óH   —  |di t          t          || ¦  «        ¦  «        ¤ŽS )NrW   )r¾   Úzip)rg   r%  r   s      r5   r/   r/     s,   € ð
 ˆ;Ð4Ð4��c '¨6Ñ2Ô2Ñ3Ô3Ð4Ð4Ð4r7   c                  ó(   — e Zd ZdZed„ ¦   «         ZdS )ÚExplicitEnumzC
    Enum with more explicit error message for missing values.
    c           
     ó‚   — t          |› d| j        › dt          | j                             ¦   «         ¦  «        › �¦  «        ‚)Nz is not a valid z, please select one of )rG   r1   r~   Ú_value2member_map_r  )rÜ   r‚   s     r5   Ú	_missing_zExplicitEnum._missing_   sG   € åØÐpÐp c¤lÐpÐpÍ4ÐPSÔPf×PkÒPkÑPmÔPmÑKnÔKnÐpÐpñ
ô 
ð 	
r7   N)r1   r0   r  r  Úclassmethodr.  rW   r7   r5   r+  r+    s9   € € € € € ðð ð ð
ð 
ñ „[ð
ð 
ð 
r7   r+  c                  ó   — e Zd ZdZdZdZdZdS )ÚPaddingStrategyz†
    Possible values for the `padding` argument in [`PreTrainedTokenizerBase.__call__`]. Useful for tab-completion in an
    IDE.
    ÚlongestÚ
max_lengthÚ
do_not_padN)r1   r0   r  r  ÚLONGESTÚ
MAX_LENGTHÚ
DO_NOT_PADrW   r7   r5   r1  r1  '  s)   € € € € € ðð ð
 €GØ€JØ€J€J€Jr7   r1  c                  ó   — e Zd ZdZdZdZdZdS )Ú
TensorTypez�
    Possible values for the `return_tensors` argument in [`PreTrainedTokenizerBase.__call__`]. Useful for
    tab-completion in an IDE.
    rL   rM   rN   N)r1   r0   r  r  ÚPYTORCHÚNUMPYÚMLXrW   r7   r5   r9  r9  2  s)   € € € € € ðð ð
 €GØ€EØ
€C€C€Cr7   r9  c                  ó&   — e Zd ZdZdd„Zd„ Zd„ ZdS )	ÚContextManagerszš
    Wrapper for `contextlib.ExitStack` which enters a collection of context managers. Adaptation of `ContextManagers`
    in the `fastcore` library.
    Úcontext_managersúlist[AbstractContextManager]c                ó:   — || _         t          ¦   «         | _        d S r²   )r?  r
   Ústack)rã   r?  s     r5   rà   zContextManagers.__init__C  s   € Ø 0ˆÔÝ‘[”[ˆŒ
ˆ
ˆ
r7   c                óN   — | j         D ]}| j                             |¦  «         Œd S r²   )r?  rB  Úenter_context)rã   Úcontext_managers     r5   Ú	__enter__zContextManagers.__enter__G  s7   € Ø#Ô4ð 	6ð 	6ˆOØŒJ×$Ò$ _Ñ5Ô5Ð5Ð5ð	6ð 	6r7   c                ó*   —  | j         j        |i |¤Ž d S r²   )rB  Ú__exit__r  s      r5   rH  zContextManagers.__exit__K  s"   € ØˆŒ
Ô˜TÐ, VÐ,Ð,Ð,Ð,Ð,r7   N)r?  r@  )r1   r0   r  r  rà   rF  rH  rW   r7   r5   r>  r>  =  sP   € € € € € ðð ð
!ð !ð !ð !ð6ð 6ð 6ð-ð -ð -ð -ð -r7   r>  c                ó†   — t          j        | j        ¦  «        }|j        D ]}|dk    r|j        |         j        du r dS Œ dS )zr
    Check if a given model can return loss.

    Args:
        model_class (`type`): The class of the model.
    Úreturn_lossTF)ÚinspectÚ	signatureÚforwardÚ
parametersré   )Úmodel_classrL  Úps      r5   Úcan_return_lossrQ  O  sV   € õ Ô! +Ô"5Ñ6Ô6€IàÔ!ð ð ˆØ�ÒÐ )Ô"6°qÔ"9Ô"AÀTÐ"IÐ"IØ�4�4øàˆ5r7   c                óŽ   — | j         }t          j        | j        ¦  «        }d|v rd„ |j        D ¦   «         S d„ |j        D ¦   «         S )zq
    Find the labels used by a given model.

    Args:
        model_class (`type`): The class of the model.
    ÚQuestionAnsweringc                ó"   — g | ]}d |v s|dv ¯
|‘ŒS )Úlabel)Ústart_positionsÚend_positionsrW   ©rX   rP  s     r5   rZ   zfind_labels.<locals>.<listcomp>j  s+   € ÐmÐmÐm�a°7¸a°<°<À1ÐHlÐClÐCl�ÐClÐClÐClr7   c                ó   — g | ]}d |v ¯|‘Œ	S )rU  rW   rX  s     r5   rZ   zfind_labels.<locals>.<listcomp>l  s   € Ð@Ð@Ð@�a°7¸a°<°<�°<°<°<r7   )r1   rK  rL  rM  rN  )rO  Ú
model_namerL  s      r5   Úfind_labelsr[  _  sX   € ð Ô%€JÝÔ! +Ô"5Ñ6Ô6€Ià˜jÐ(Ð(ØmÐm˜9Ô/ÐmÑmÔmÐmà@Ð@˜9Ô/Ð@Ñ@Ô@Ð@r7   Ú r#   Údr   Ú
parent_keyÚ	delimiterc                ó>   — dd„}t           || ||¦  «        ¦  «        S )z/Flatten a nested dict into a single level dict.r\  r#   c              3  ó  K  — |                       ¦   «         D ]s\  }}|r"t          |¦  «        |z   t          |¦  «        z   n|}|r@t          |t          ¦  «        r+t	          |||¬¦  «                              ¦   «         E d {V —† Œm||fV — Œtd S )N)r_  )r¿   rO   rl   r   Úflatten_dict)r]  r^  r_  r°   r�   r  s         r5   Ú_flatten_dictz#flatten_dict.<locals>._flatten_dictr  s®   è è € Ø—G’G‘I”Ið 	ð 	‰DˆAˆqØ:DÐK•#�j‘/”/ IÑ-µ°A±´Ñ6Ð6È!ˆCØð •Z ¥>Ñ2Ô2ð Ý'¨¨3¸)ÐDÑDÔD×JÒJÑLÔLÐLÐLÐLÐLÐLÐLÐLÐLà˜1�f����ð	ð 	r7   ©r\  r#   )r¾   )r]  r^  r_  rc  s       r5   rb  rb  o  s4   € ðð ð ð õ ��˜a ¨YÑ7Ô7Ñ8Ô8Ð8r7   c                óÐ   — t          | ¦  «        rt          j        | |¬¦  «        S t          | ¦  «        r|€| j        n	 | j        |Ž S t          dt          | ¦  «        › d�¦  «        ‚)z<
    Framework-agnostic version of transpose operation.
    )ÚaxesNz"Type not supported for transpose: r#   )r_   rM   Ú	transposer^   r   ÚpermuterG   rP   )r‘   rf  s     r5   rg  rg  }  st   € õ �eÑÔð NÝŒ|˜E¨Ð-Ñ-Ô-Ð-Ý	˜Ñ	Ô	ð NØ˜,ˆuŒwˆw¨M¨E¬M¸4Ð,@Ð@åÐL½dÀ5¹k¼kÐLÐLÐLÑMÔMÐMr7   c                ó¼   — t          | ¦  «        rt          j        | |¦  «        S t          | ¦  «        r
 | j        |Ž S t	          dt          | ¦  «        › d�¦  «        ‚)z:
    Framework-agnostic version of reshape operation.
    z Type not supported for reshape: r#   )r_   rM   Úreshaper^   rG   rP   )r‘   Únewshapes     r5   rj  rj  ‰  sg   € õ �eÑÔð LÝŒz˜% Ñ*Ô*Ð*Ý	˜Ñ	Ô	ð LØˆuŒ}˜hÐ'Ð'åÐJ½DÀ¹K¼KÐJÐJÐJÑKÔKÐKr7   c                ó  — t          | ¦  «        rt          j        | |¬¦  «        S t          | ¦  «        r,|€|                      ¦   «         n|                      |¬¦  «        S t	          dt          | ¦  «        › d�¦  «        ‚)z:
    Framework-agnostic version of squeeze operation.
    )ÚaxisN©Údimz Type not supported for squeeze: r#   )r_   rM   Úsqueezer^   rG   rP   ©r‘   rm  s     r5   rp  rp  •  s   € õ �eÑÔð LÝŒz˜% dÐ+Ñ+Ô+Ð+Ý	˜Ñ	Ô	ð LØ"& ,ˆu�}Š}‰Œˆ°E·M²MÀd°MÑ4KÔ4KÐKåÐJ½DÀ¹K¼KÐJÐJÐJÑKÔKÐKr7   c                óÔ   — t          | ¦  «        rt          j        | |¦  «        S t          | ¦  «        r|                      |¬¦  «        S t          dt          | ¦  «        › d�¦  «        ‚)z>
    Framework-agnostic version of expand_dims operation.
    rn  z$Type not supported for expand_dims: r#   )r_   rM   Úexpand_dimsr^   Ú	unsqueezerG   rP   rq  s     r5   rs  rs  ¡  sl   € õ �eÑÔð PÝŒ~˜e TÑ*Ô*Ð*Ý	˜Ñ	Ô	ð PØ�Š 4ˆÑ(Ô(Ð(åÐNÅÀUÁÄÐNÐNÐNÑOÔOÐOr7   c                óÎ   — t          | ¦  «        rt          j        | ¦  «        S t          | ¦  «        r|                      ¦   «         S t          dt          | ¦  «        › d�¦  «        ‚)z7
    Framework-agnostic version of size operation.
    z$Type not supported for tensor_size: r#   )r_   rM   Úsizer^   ÚnumelrG   rP   )r‘   s    r5   Útensor_sizerx  ­  sb   € õ �eÑÔð PÝŒw�u‰~Œ~ÐÝ	˜Ñ	Ô	ð PØ�{Š{‰}Œ}ÐåÐNÅÀUÁÄÐNÐNÐNÑOÔOÐOr7   c                óä   — t           st          | ¦  «        S ddl}|j                             ¦   «         r/t          | |j        ¦  «        r|                      |j        ¦  «        nt          | ¦  «        S )zk
    Casts an input to a torch int64 tensor if we are in a tracing context, otherwise to a Python int.
    r   N)	r&   r8   r'   ÚjitÚ
is_tracingrl   rp   ÚtoÚint64rq   s     r5   Ú	torch_intr~  ¹  sg   € õ ð Ý�1‰vŒvˆà€L€L€Là %¤	× 4Ò 4Ñ 6Ô 6Ðb½:ÀaÈÌÑ;VÔ;VÐbˆ1�4Š4�”ÑÔÐÕ\_Ð`aÑ\bÔ\bÐbr7   c                óä   — t           st          | ¦  «        S ddl}|j                             ¦   «         r/t          | |j        ¦  «        r|                      |j        ¦  «        nt          | ¦  «        S )zo
    Casts an input to a torch float32 tensor if we are in a tracing context, otherwise to a Python float.
    r   N)	r&   r8   r'   rz  r{  rl   rp   r|  Úfloat32rq   s     r5   Útorch_floatr�  Å  sg   € õ ð Ý�1‰vŒvˆà€L€L€Là"'¤)×"6Ò"6Ñ"8Ô"8Ðd½ZÈÈ5Ì<Ñ=XÔ=XÐdˆ1�4Š4�”ÑÔÐÕ^aÐbcÑ^dÔ^dÐdr7   Úextraúlist | Nonec                ó8   ‡— | pg } t          | ¦  «        Šˆfd„}|S )aI  
    Decorator to filter out named arguments that are not in the function signature.

    This decorator ensures that only the keyword arguments that match the function's signature, or are specified in the
    `extra` list, are passed to the function. Any additional keyword arguments are filtered out and a warning is issued.

    Parameters:
        extra (`Optional[list]`, *optional*):
            A list of extra keyword argument names that are allowed even if they are not in the function's signature.

    Returns:
        Callable:
            A decorator that wraps the function and filters out invalid keyword arguments.

    Example usage:

        ```python
        @filter_out_non_signature_kwargs(extra=["allowed_extra_arg"])
        def my_function(arg1, arg2, **kwargs):
            print(arg1, arg2, kwargs)

        my_function(arg1=1, arg2=2, allowed_extra_arg=3, invalid_arg=4)
        # This will print: 1 2 {"allowed_extra_arg": 3}
        # And issue a warning: "The following named arguments are not valid for `my_function` and were ignored: 'invalid_arg'"
        ```
    c                ó  •‡ ‡‡‡— t          j        ‰ ¦  «        }t          |j                             ¦   «         ¦  «        }|                     ‰¦  «        Šd|v Šd|v Šd‰ _        t          ‰ ¦  «        ˆ ˆˆˆfd„¦   «         }|S )Nrã   rÜ   Tc                 ó`  •— i }i }|                      ¦   «         D ]\  }}|‰v r|||<   Œ|||<   Œ|rwd„ |D ¦   «         }d                     |¦  «        }‰
r| d         j        j        dz   }n‰	r| d         j        dz   }nd}t	          j        d|› ‰j        › d|› �t          d¬	¦  «          ‰| i |¤ŽS )
Nc                ó   — g | ]}d |› d �‘Œ	S )ú'rW   )rX   r°   s     r5   rZ   zWfilter_out_non_signature_kwargs.<locals>.decorator.<locals>.wrapper.<locals>.<listcomp>  s    € Ð'IÐ'IÐ'I°Q¨¨A¨¨¨Ð'IÐ'IÐ'Ir7   z, r   r#   r\  z1The following named arguments are not valid for `z` and were ignored: r   )Ú
stacklevel)r¿   Újoinrá   r1   ÚwarningsÚwarnÚUserWarning)rä   rå   Úvalid_kwargsÚinvalid_kwargsr°   r�   Úinvalid_kwargs_namesÚ
cls_prefixÚfuncÚis_class_methodÚis_instance_methodÚvalid_kwargs_to_passs           €€€€r5   ÚwrapperzCfilter_out_non_signature_kwargs.<locals>.decorator.<locals>.wrapperû  s   ø€ àˆLØˆNàŸš™œð *ð *‘��1ØÐ,Ð,Ð,Ø&'�L ‘O�Oà()�N 1Ñ%Ð%àð Ø'IÐ'I¸.Ð'IÑ'IÔ'IÐ$Ø'+§y¢yÐ1EÑ'FÔ'FÐ$ð &ð $Ø!% a¤Ô!2Ô!;¸cÑ!A�J�JØ$ð $Ø!% a¤Ô!1°CÑ!7�J�Jà!#�Jå”ðAÈ
ð AÐTXÔTað Að AØ*>ðAð AåØ ð	ñ ô ð ð �4˜Ð. Ð.Ð.Ð.r7   )rK  rL  ÚsetrN  r  ÚunionÚ _filter_out_non_signature_kwargsr   )r’  ÚsigÚfunction_named_argsr–  r“  r”  r•  Úextra_params_to_passs   `   @@@€r5   Ú	decoratorz2filter_out_non_signature_kwargs.<locals>.decoratorï  sª   øøøøø€ ÝÔ Ñ%Ô%ˆÝ! #¤.×"5Ò"5Ñ"7Ô"7Ñ8Ô8ÐØ2×8Ò8Ð9MÑNÔNÐð $Ð':Ð:ÐØÐ#6Ð6ˆð 15ˆÔ-å	ˆt‰Œð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ñ 
Œð	/ð> ˆr7   )r—  )r‚  r�  rœ  s     @r5   Úfilter_out_non_signature_kwargsrž  Ñ  s<   ø€ ð6 ˆK�R€EÝ˜u™:œ:Ðð,ð ,ð ,ð ,ð ,ð\ Ðr7   c                  ó‚   — e Zd ZU dZded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   dS )ÚTransformersKwargsaý  
    Keyword arguments to be passed to the forward pass of a `PreTrainedModel`.

    Attributes:
        num_items_in_batch (`Optional[torch.Tensor]`, *optional*):
            Number of items in the batch. It is recommended to pass it when you are doing gradient accumulation.
        output_hidden_states (`Optional[bool]`, *optional*):
            Most of the models support outputting all hidden states computed during the forward pass.
        output_attentions (`Optional[bool]`, *optional*):
            Turn this on to return the intermediary attention scores.
        output_router_logits (`Optional[bool]`, *optional*):
            For MoE models, this allows returning the router logits to compute the loss.
        cu_seq_lens_q (`torch.LongTensor`, *optional*)
            Gets cumulative sequence length for query state.
        cu_seq_lens_k (`torch.LongTensor`, *optional*)
            Gets cumulative sequence length for key state.
        max_length_q (`int`, *optional*):
            Maximum sequence length for query state.
        max_length_k (`int`, *optional*):
            Maximum sequence length for key state.
        position_ids (`torch.LongTensor`, *optional*)
            Indices of positions of each input sequence tokens.
        is_causal (`bool`, *optional*)
            Can be set to False to enable bi-directional attention, i.e. use decoder Attention modules as encoders.
        seq_idx (`torch.IntTensor`, *optional*):
            Sequence index for each token in a flattened packed batch.
    ztorch.Tensor | NoneÚnum_items_in_batchr‡   Úoutput_hidden_statesÚoutput_attentionsÚoutput_router_logitsztorch.LongTensor | NoneÚcu_seq_lens_qÚcu_seq_lens_kz
int | NoneÚmax_length_qÚmax_length_kÚposition_idsÚ	is_causalztorch.IntTensor | NoneÚseq_idxN)r1   r0   r  r  Ú__annotations__rW   r7   r5   r   r      s¢   € € € € € € ðð ð8 ,Ð+Ð+Ñ+Ø%Ð%Ð%Ñ%Ø"Ð"Ð"Ñ"Ø%Ð%Ð%Ñ%Ø*Ð*Ð*Ñ*Ø*Ð*Ð*Ñ*ØÐÐÑØÐÐÑØ)Ð)Ð)Ñ)ØÐÐÑØ#Ð#Ð#Ñ#Ð#Ð#r7   r   )Útotalr×   údict[str, Any]c                ó
   — d| v S )z3Checks whether a config dict is a timm config dict.Úpretrained_cfgrW   )r×   s    r5   Úis_timm_config_dictr±  J  s   € à˜{Ð*Ð*r7   Úpretrained_model_pathc                ó¸  — | €dS t          | ¦  «        } t          j                             | ¦  «        }t          j                             | ¦  «        }|r_|                      d¦  «        rJt          | ¦  «        5 }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   t          |¦  «        S |r¥t          j         
                    t          j                             | d¦  «        ¦  «        rht          t          j                             | d¦  «        ¦  «        5 }t          j        |¦  «        }ddd¦  «         n# 1 swxY w Y   t          |¦  «        S dS )zA
    Checks whether a checkpoint is a timm model checkpoint.
    NFz.jsonzconfig.json)rO   ÚosÚpathÚisfileÚisdirÚendswithrÏ   rÑ   Úloadr±  ÚexistsrŠ  )r²  Úis_fileÚis_dirrA   r×   s        r5   Úis_timm_local_checkpointr½  O  s¥  € ð Ð$Øˆuõ  Ð 5Ñ6Ô6ÐåŒg�nŠnÐ2Ñ3Ô3€GÝŒW�]Š]Ð0Ñ1Ô1€Fð ð 0Ð(×1Ò1°'Ñ:Ô:ð 0ÝÐ'Ñ(Ô(ð 	'¨AÝœ) A™,œ,ˆKð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'å" ;Ñ/Ô/Ð/ð ð 0•"”'—.’.¥¤§¢Ð.CÀ]Ñ!SÔ!SÑTÔTð 0Ý•"”'—,’,Ð4°mÑDÔDÑEÔEð 	'ÈÝœ) A™,œ,ˆKð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'å" ;Ñ/Ô/Ð/àˆ5s$   Á8BÂBÂ BÄE Å EÅEÚmoduleú	nn.Moduler  r‚   r   c                óx   — t          | ||¦  «         |                      ¦   «         D ]}t          |||¦  «         ŒdS )z5
    Set a value to a module and all submodules.
    N)rò   ÚchildrenÚset_attribute_for_modules)r¾  r  r‚   Ú	submodules       r5   rÂ  rÂ  k  sN   € õ ˆF�C˜ÑÔÐØ—_’_Ñ&Ô&ð 9ð 9ˆ	Ý! )¨S°%Ñ8Ô8Ð8Ð8ð9ð 9r7   c                ó”   — t          | |¦  «        rt          | |¦  «         |                      ¦   «         D ]}t          ||¦  «         ŒdS )z:
    Delete a value from a module and all submodules.
    N)rw   ÚdelattrrÁ  Údel_attribute_from_modules)r¾  r  rÃ  s      r5   rÆ  rÆ  t  s\   € õ
 ˆv�sÑÔð Ý�˜ÑÔÐà—_’_Ñ&Ô&ð 3ð 3ˆ	Ý" 9¨cÑ2Ô2Ð2Ð2ð3ð 3r7   c                ó<   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }|S )zò
    Decorator to wrap model method, to call output.to_tuple() if return_dict=False passed as a kwarg or
    return_dict=False is set in the config.

    Note:
        output.to_tuple() convert output to tuple skipping all `None` values.
    c                óæ   •— t          | d¦  «        r| j        j        nd}|                     d|¦  «        }|�|} ‰| g|¢R i |¤Ž}|s)t	          |t
          ¦  «        s|                     ¦   «         }|S )Nr£   TÚreturn_dict)rw   r£   rÉ  r  rl   r   r	  )rã   rä   rå   rÉ  Úreturn_dict_passedr!  r’  s         €r5   r–  z!can_return_tuple.<locals>.wrapper‰  sŒ   ø€ å18¸¸xÑ1HÔ1HÐR�d”kÔ-Ð-ÈdˆØ#ŸZšZ¨°{ÑCÔCÐØÐ)Ø,ˆKØ��dÐ,˜TÐ,Ð,Ð, VÐ,Ð,ˆØð 	'¥:¨fµeÑ#<Ô#<ð 	'Ø—_’_Ñ&Ô&ˆFØˆr7   ©r   ©r’  r–  s   ` r5   Úcan_return_tuplerÍ  €  s5   ø€ õ ˆ4�[„[ðð ð ð ñ „[ðð €Nr7   )ÚimageÚvideoÚaudioÚmodalityc                ób   ‡ ‡‡— ‰ › d�Št          ˆ fd„t          D ¦   «         ¦  «        Šˆˆfd„}|S )u  
    Decorator for `get_<modality>_features` methods that:
      - strips the modality prefix from incoming kwargs whose stripped name isn't an existing
        parameter (e.g. `image_cu_seqlens` â†’ `cu_seqlens`, forwarded via `**kwargs`);
      - drops kwargs prefixed with another known modality (e.g. `video_*` passed to an
        image method), so an outer `forward()` can blindly forward `**kwargs` to each
        modality method without leaking the wrong tensors into the wrong encoder;
      - leaves everything else untouched (including kwargs that match a named parameter).

    Used so multimodal models can accept arbitrary precomputed tensors (`image_cu_seqlens`,
    `video_position_ids`, â€¦) without enumerating each one in every signature.

    NOTE: Apply this decorator **only once per modality**, on the innermost base model's
    `get_<modality>_features` (i.e. on `Model.get_image_features`, not on the outer
    `ForConditionalGeneration.get_image_features` wrapper). Stacking it at multiple layers
    causes premature prefix-stripping: the outer layer rewrites `image_foo` â†’ `foo` based
    on its own (narrower) signature, hiding kwargs that the inner method declares as named
    parameters. Outer wrappers should just forward `**kwargs` through.

    TODO: these modality-prefixed kwargs (`image_cu_seqlens`, `video_position_ids`, â€¦) are
    currently power-feature-only â€” they have no visible declaration in any public signature,
    so users have to discover them from helper functions or docs. We should find a way to
    surface them properly (e.g. in `TransformersKwargs`, in a dedicated `MultimodalKwargs`
    typed dict, or returned grouped from the processor as `BatchFeature.images_data={...}`)
    so the supported set is discoverable in one place.
    Ú_c              3  ó.   •K  — | ]}|‰k    ¯|› d �V — ŒdS )rÓ  NrW   )rX   ÚmrÑ  s     €r5   rŸ   z-accepts_precomputed_kwargs.<locals>.<genexpr>¶  s-   øè è € ÐOÐO qÀÀhÂÀ˜a˜7˜7˜7ÀÀÀÀÐOÐOr7   c                ó’   •‡ ‡— t          t          j        ‰ ¦  «        j        ¦  «        Št	          ‰ ¦  «        ˆˆ ˆˆfd„¦   «         }|S )Nc                 óæ   •— i }|                      ¦   «         D ]R\  }}|                     ‰¦  «        rŒ|                     ‰¦  «        r|‰vr|||                     ‰¦  «        <   ŒM|||<   ŒS ‰| i |¤ŽS r²   )r¿   rQ   r¨   )	rä   rå   Ú
translatedr°   r�   Úexisting_paramsr’  Úother_prefixesÚprefixs	        €€€€r5   r–  z>accepts_precomputed_kwargs.<locals>.decorator.<locals>.wrapper»  s‘   ø€ àˆJØŸš™œð &ð &‘��1Ø—<’< Ñ/Ô/ð ØØ—<’< Ñ'Ô'ð &¨A°_Ð,DÐ,DØ9:�J˜qŸ~š~¨fÑ5Ô5Ñ6Ð6à$%�J˜q‘M�MØ�4˜Ð, Ð,Ð,Ð,r7   )r—  rK  rL  rN  r   )r’  r–  rÙ  rÚ  rÛ  s   ` @€€r5   r�  z-accepts_precomputed_kwargs.<locals>.decorator¸  s_   øøø€ Ý�gÔ/°Ñ5Ô5Ô@ÑAÔAˆå	ˆt‰Œð		-ð 		-ð 		-ð 		-ð 		-ð 		-ð 		-ñ 
Œð		-ð ˆr7   )r   Ú_KNOWN_MODALITIES)rÑ  r�  rÚ  rÛ  s   ` @@r5   Úaccepts_precomputed_kwargsrÝ  š  s[   øøø€ ð6 ˆ^ˆ^ˆ^€FÝÐOÐOÐOÐOÕ,=ÐOÑOÔOÑOÔO€Nðð ð ð ð ð ð" Ðr7   c                ó<   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }|S )z¯
    Decorator using config field (if they exist) as default value for some args and kwargs. Precedence is always
    given to the args/kwargs that are explicitly passed.
    c                óª  •— g d¢}|D �]1}d }|‰j         j        v r"‰j         j                             |¦  «        dz
  }|�$t          |¦  «        |k    r||         �	||         }n4|                     |¦  «        �	||         }nt          | j        |d ¦  «        }|� |dk    r7t          | dd¦  «        r%| j        r|rt           	                    d¦  «         d}n$|dk    rdd	g}||vrt          d
|› d|› d�¦  «        ‚|�8t          |¦  «        |k    r%t          |¦  «        }|||<   t          |¦  «        }�Œ,|||<   �Œ3|                     dt          | j        dd ¦  «        ¦  «        }|�4t          | j        d¦  «        }	|	r| j        j        }
|| j        _        ||d<   	 |                     dd¦  «        r_ddlm}  || |                     dd¦  «        |                     d¦  «        ¦  «        5   ‰| g|¢R i |¤Ž}d d d ¦  «         n# 1 swxY w Y   n ‰| g|¢R i |¤Ž}|�|	r|
| j        _        n%| j        `n# |�|	r|
| j        _        n| j        `w xY w|S )N)Ú	use_cacheÚvision_feature_layerÚvision_feature_select_strategyÚvision_aspect_ratior   rà  Úgradient_checkpointingFzX`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`.râ  ré   Úfullz%`Unexpected select feature strategy: z. Please select from r#   rª  Údebug_ior   )Úmodel_addition_debugger_contextÚdebug_io_dirÚmodel_debugÚprune_layers)Ú__code__Úco_varnamesÚindexr€   rî   rx   r£   ÚtrainingÚloggerÚwarning_oncerG   r~   r   rw   rª  Úmodel_debugging_utilsrç  )rã   rä   rå   Úargs_with_config_defaultsÚarg_nameÚ	arg_indexÚ	arg_valueÚvalid_strategiesrª  Úis_causal_in_configÚis_causal_original_valuerç  r!  r’  s                €r5   r–  z+merge_with_config_defaults.<locals>.wrapperÒ  sW  ø€ ð%
ð %
ð %
Ð!ð 2ð  	1ñ  	1ˆHØˆIØ˜4œ=Ô4Ð4Ð4Ø œMÔ5×;Ò;¸HÑEÔEÈÑI�	àÐ$­¨T©¬°YÒ)>Ð)>À4È	Ä?ÐC^Ø  œO�	�	Ø—’˜HÑ%Ô%Ð1Ø" 8Ô,�	�	å# D¤K°¸4Ñ@Ô@�	àÐ$à˜{Ò*Ð*Ý˜tÐ%=¸uÑEÔEð *È$Ì-ð *Ð\eð *Ý×+Ò+Øvñô ð ð %*˜	øØÐ!AÒAÐAØ(1°6Ð':Ð$Ø Ð(8Ð8Ð8Ý(ØwÀIÐwÐwÐdtÐwÐwÐwñô ð ð Ð(­S°©Y¬Y¸Ò-BÐ-BÝ ™:œ:�DØ&/�D˜‘OÝ  ™;œ;�D‘Dà'0�F˜8Ñ$ùð —J’J˜{­G°D´KÀÈdÑ,SÔ,SÑTÔTˆ	ØÐ Ý")¨$¬+°{Ñ"CÔ"CÐØ"ð AØ+/¬;Ô+@Ð(à$-ˆDŒKÔ!Ø"+ˆF�;Ñð	.Ø�zŠz˜* eÑ,Ô,ð 5ØSÐSÐSÐSÐSÐSà4Ð4Ø˜&Ÿ*š* ^°]ÑCÔCÀVÇZÂZÐP^ÑE_ÔE_ñô ð 9ð 9ð "˜T $Ð8¨Ð8Ð8Ð8°Ð8Ð8�Fð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9øð
 ˜˜dÐ4 TÐ4Ð4Ð4¨VÐ4Ð4�ð Ð$Ø&ð .Ø,D�D”KÔ)Ð)àœÐ-øøð	 Ð$Ø&ð .Ø,D�D”KÔ)Ð)àœÐ-Ð-Ð-Ð-Ð-àˆs1   ÆAH6 Ç,HÇ9H6 ÈH	È	H6 ÈH	ÈH6 È6IrË  rÌ  s   ` r5   Úmerge_with_config_defaultsrù  Ì  s;   ø€ õ ˆ4�[„[ðFð Fð Fð Fñ „[ðFðP €Nr7   c                óT   — t                                d¦  «         t          | ¦  «        S )NzZThe `check_model_inputs` decorator is deprecated in favor of `merge_with_config_defaults`.)rï  rð  rù  )r’  s    r5   Úcheck_model_inputsrû  !  s%   € Ý
×ÒÐtÑuÔuÐuÝ% dÑ+Ô+Ð+r7   r¹   c                ó   — | S )zs
    Identity decorator that prevents the modular converter from propagating its decorators to specific files.
    rW   r¸   s    r5   Úno_inherit_decoratorrý  &  s	   € ð €Jr7   c                  óZ   — e Zd ZdZi Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
edd„¦   «         Zdd„ZdS )ÚGeneralInterfacezê
    Dict-like object keeping track of a class-wide mapping, as well as a local one. Allows to have library-wide
    modifications through the class mapping, as well as local modifications in a single file with the local mapping.
    c                ó   — i | _         d S r²   ©Ú_local_mappingr  s    r5   rà   zGeneralInterface.__init__7  s   € Ø ˆÔÐÐr7   c                óH   — || j         v r| j         |         S | j        |         S r²   )r  Ú_global_mapping©rã   r  s     r5   r  zGeneralInterface.__getitem__:  s,   € à�$Ô%Ð%Ð%ØÔ& sÔ+Ð+ØÔ# CÔ(Ð(r7   c                ó>   — | j                              ||i¦  «         d S r²   )r  r  )rã   r  r‚   s      r5   r  zGeneralInterface.__setitem__@  s#   € àÔ×"Ò" C¨ <Ñ0Ô0Ð0Ð0Ð0r7   c                ó   — | j         |= d S r²   r  r  s     r5   ró   zGeneralInterface.__delitem__D  s   € ØÔ Ð$Ð$Ð$r7   c                ó<   — t          i | j        ¥| j        ¥¦  «        S r²   )rñ   r  r  r  s    r5   Ú__iter__zGeneralInterface.__iter__G  s!   € åÐC�tÔ+ÐC¨tÔ/BÐCÑDÔDÐDr7   c                ó‚   — t          | j                             ¦   «         | j                             ¦   «         z  ¦  «        S r²   )r€   r  r  r  r  s    r5   Ú__len__zGeneralInterface.__len__K  s3   € Ý�4Ô'×,Ò,Ñ.Ô.°Ô1D×1IÒ1IÑ1KÔ1KÑKÑLÔLÐLr7   r  rO   r‚   r   c                ó>   — | j                              ||i¦  «         d S r²   )r  r  )rÜ   r  r‚   s      r5   ÚregisterzGeneralInterface.registerN  s#   € àÔ×"Ò" C¨ <Ñ0Ô0Ð0Ð0Ð0r7   r    r&  c                óD   — t          |                      ¦   «         ¦  «        S r²   )r~   r  r  s    r5   Ú
valid_keyszGeneralInterface.valid_keysR  s   € Ý�D—I’I‘K”KÑ Ô Ð r7   N)r  rO   r‚   r   )r    r&  )r1   r0   r  r  r  rà   r  r  ró   r	  r  r/  r  r  rW   r7   r5   rÿ  rÿ  -  s¹   € € € € € ðð ð €Oð!ð !ð !ð)ð )ð )ð1ð 1ð 1ð%ð %ð %ðEð Eð EðMð Mð Mð ð1ð 1ð 1ñ „[ð1ð!ð !ð !ð !ð !ð !r7   rÿ  é   g      ð?g      >@c                ó"   ‡ ‡‡‡‡— ˆˆˆˆˆ fd„}|S )a™  
    Decorator that retries a function call with exponential backoff.

    Args:
        max_retries (`int`, *optional*, defaults to 5):
            Maximum number of retry attempts.
        initial_delay (`float`, *optional*, defaults to 1.0):
            Initial delay in seconds before the first retry.
        max_delay (`float`, *optional*, defaults to 30.0):
            Maximum delay in seconds between retries.
        jitter (`bool`, *optional*, defaults to `True`):
            Whether to add random jitter to the delay.
        exceptions (`tuple`, *optional*, defaults to `(Exception,)`):
            Tuple of exception types to catch and retry on.
    c                óH   •‡ — t          ‰ ¦  «        ˆˆ ˆˆˆˆfd„¦   «         }|S )Nc                 ó€  •— ‰}t          d‰dz   ¦  «        D ]¦}	  ‰| i |¤Žc S # ‰$ r’}|‰k    r‚ t          |‰
¦  «        }‰	r|t          j        dd¦  «        z  }t                               d‰j        › d|› d‰› d|› d|d	›d
�¦  «         t          j        |¦  «         t          |dz  ‰
¦  «        }Y d }~ŒŸd }~ww xY wd S )Nr   gš™™™™™é?g333333ó?ú[z
] attempt ú/z	 failed: z
Retrying in z.1fzs...r   )	ÚrangeÚminÚrandomÚuniformrï  Úinfor1   ÚtimeÚsleep)rä   rå   ÚdelayÚattemptÚexcÚ	sleep_forÚ
exceptionsr’  Úinitial_delayÚjitterÚ	max_delayÚmax_retriess         €€€€€€r5   r–  z)retry.<locals>.decorator.<locals>.wrappern  s;  ø€ à!ˆEå   K°!¡OÑ4Ô4ð 6ð 6�ð6Ø˜4 Ð0¨Ð0Ð0Ð0Ð0Ð0øØ!ð 6ð 6ð 6Ø +Ò-Ð-Øå # E¨9Ñ 5Ô 5�IØð >Ø!¥V¤^°C¸Ñ%=Ô%=Ñ=˜	å—K’Kð;˜DœMð ;ð ;°Wð ;ð ;¸{ð ;ð ;ÐUXð ;ð ;Ø'0Ð:ð;ð ;ð ;ñô ð õ ”J˜yÑ)Ô)Ð)Ý ¨¡	¨9Ñ5Ô5�E�E�E�E�E�Eøøøøð6øøøð6ð 6s   š$¤B;©BB6Â6B;rË  )r’  r–  r!  r"  r#  r$  r%  s   ` €€€€€r5   r�  zretry.<locals>.decoratorm  sM   øø€ Ý	ˆt‰Œð	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ñ 
Œð	6ð* ˆr7   rW   )r%  r"  r$  r#  r!  r�  s   ````` r5   Úretryr&  V  s<   øøøøø€ ð.ð ð ð ð ð ð ð ð ð2 Ðr7   )r   r   r    r!   )r    r8   )r    rJ   )r    re   )NTN)rƒ   rO   ry   r„   r…   re   r†   r‡   )NNN)r–   rJ   r—   r˜   r    re   )r¥   rJ   r    r¦   )rÌ   rO   )r!  rÚ   r    r"  r²   )rg   r$  r%  r&  r   r'  r    rÚ   rd  )r]  r   r^  rO   r_  rO   )r‚  rƒ  )r×   r®  r    re   )r²  rO   r    re   )r¾  r¿  r  rO   r‚   r   )r¾  r¿  r  rO   )rÑ  rO   )r¹   r   r    r   )hr  Ú
__future__r   rK  rÑ   r´  r  r›   r  r‹  Úcollectionsr   r   Úcollections.abcr   r   r   Ú
contextlibr	   r
   r   Údataclassesr   r   Úenumr   Ú	functoolsr   r   Útypingr   r   r   r   rÇ   rM   r+   r   Úimport_utilsr   r   r   r'   r   r   Ú
get_loggerr1   rï  r&   r—  r   r¬  r6   r•   rI   rT   rd   rj   r_   r^   ru   rz   r�   r�   r“   r`   r¤   rª   r®   rÊ   rØ   rÚ   r.   r/   rO   r+  r1  r9  r>  rQ  r[  rb  rg  rj  rp  rs  rx  r~  r�  rž  r   r±  r½  rÂ  rÆ  rÍ  rÜ  rÝ  rù  rû  rý  rÿ  r   r&  rW   r7   r5   ú<module>r1     s˜  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9à Ð Ð Ð à Ð Ð Ð Ð Ð Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ Qð ð Ø€L€L€LØÐÐÐÐÐð €GˆC�L„L€ð 
ˆÔ	˜HÑ	%Ô	%€ð Ð ØÐÑÔð ØÐà14°±´Ð Ð 6Ð 6Ð 6Ñ 6ð4ð 4ð 4ð 4ð4 Ð ØÐÑÔð ØÐð5ð 5ð 5ð 5ðð ð ð ð9ð 9ð 9ð&ð ð ð ð"%ð %ð %ð %ð	'ð 	'ð 	'ð 	'ð	'ð 	'ð 	'ð 	'ð&ð &ð &ð &ð"ð ð ð, !%ØØ!%ð	ð ð ð ð ð:#ð #ð #ð:ð :ð :ð :ð koð$7ð $7ð $7ð $7ð $7ðN
;ð 
;ð 
;ð 
;ðð ð ðDð ð ð0ð ð ð ðI3ð I3ð I3ð I3ð I3�+ñ I3ô I3ð I3ðX6ð 6ð 6ð 6ð -1ð5ð 5ð 5ð 5ð 5ð	
ð 	
ð 	
ð 	
ð 	
�3˜ñ 	
ô 	
ð 	
ðð ð ð ð �lñ ô ð ðð ð ð ð �ñ ô ð ð-ð -ð -ð -ð -ñ -ô -ð -ð$ð ð ð Að Að Að 9ð 9ð 9ð 9ð 9ð	Nð 	Nð 	Nð 	Nð	Lð 	Lð 	Lð	Lð 	Lð 	Lð 	Lð	Pð 	Pð 	Pð	Pð 	Pð 	Pð	cð 	cð 	cð	eð 	eð 	eðLð Lð Lð Lð Lð^'$ð '$ð '$ð '$ð '$˜¨%ð '$ñ '$ô '$ð '$ðT+ð +ð +ð +ð
ð ð ð ð89ð 9ð 9ð 9ð	3ð 	3ð 	3ð 	3ðð ð ð. 0Ð ð/ð /ð /ð /ðdOð Oð Oðj,ð ,ð ,ð
ð ð ð ð&!ð &!ð &!ð &!ð &!�~ñ &!ô &!ð &!ðT ØØØØˆ|ð0ð 0ð 0ð 0ð 0ð 0r7   