§
    ‚ŠtjO! ã                   óà  — d Z ddlZddlZddlZddlmZ ddlmZmZmZ ddl	m
Z ddlmZ ddl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mZmZmZmZm Z  ddl!m"Z" ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) ddl*m+Z+  e(j,        e-¦  «        Z. G d„ dej/        ¦  «        Z0 G d„ dej/        ¦  «        Z1 G d„ dej/        ¦  «        Z2 G d„ dej/        ¦  «        Z3 G d„ dej/        ¦  «        Z4 G d„ dej/        ¦  «        Z5 G d„ dej/        ¦  «        Z6 G d„ d e¦  «        Z7 G d!„ d"ej/        ¦  «        Z8e& G d#„ d$e"¦  «        ¦   «         Z9 G d%„ d&e9¦  «        Z:e& G d'„ d(e9¦  «        ¦   «         Z; e&d)¬*¦  «         G d+„ d,e9e¦  «        ¦   «         Z<e& G d-„ d.e9¦  «        ¦   «         Z= e&d/¬*¦  «         G d0„ d1e9¦  «        ¦   «         Z>e& G d2„ d3e9¦  «        ¦   «         Z?e& G d4„ d5e9¦  «        ¦   «         Z@g d6¢ZAdS )7zPyTorch UMT5 model.é    N)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCacheÚEncoderDecoderCache)ÚGenerationMixin)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚ)BaseModelOutputWithPastAndCrossAttentionsÚSeq2SeqLMOutputÚSeq2SeqModelOutputÚ#Seq2SeqQuestionAnsweringModelOutputÚSeq2SeqSequenceClassifierOutputÚTokenClassifierOutput)ÚPreTrainedModel)ÚDUMMY_INPUTSÚ
DUMMY_MASKÚauto_docstringÚis_torchdynamo_compilingÚloggingÚtorch_compilable_checké   )Ú
UMT5Configc                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚUMT5LayerNormç�íµ ÷Æ°>c                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )ze
        Construct a layernorm module in the UMT5 style. No bias and no subtraction of mean.
        N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizeÚepsÚ	__class__s      €úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/umt5/modeling_umt5.pyr&   zUMT5LayerNorm.__init__7   sD   ø€ õ 	‰Œ×ÒÑÔÐÝ”l¥5¤:¨kÑ#:Ô#:Ñ;Ô;ˆŒØ #ˆÔÐÐó    c                 óh  — |                      t          j        ¦  «                             d¦  «                             dd¬¦  «        }|t          j        || j        z   ¦  «        z  }| j        j        t          j	        t          j
        fv r|                      | j        j        ¦  «        }| j        |z  S )Né   éÿÿÿÿT)Úkeepdim)Útor(   Úfloat32ÚpowÚmeanÚrsqrtr+   r*   ÚdtypeÚfloat16Úbfloat16)r,   Úhidden_statesÚvariances      r0   ÚforwardzUMT5LayerNorm.forward?   s–   € ð !×#Ò#¥E¤MÑ2Ô2×6Ò6°qÑ9Ô9×>Ò>¸rÈ4Ð>ÑPÔPˆØ%­¬°H¸tÔ?TÑ4TÑ(UÔ(UÑUˆð Œ;Ô¥¤µ´Ð ?Ð?Ð?Ø)×,Ò,¨T¬[Ô->Ñ?Ô?ˆMàŒ{˜]Ñ*Ð*r1   )r#   )Ú__name__Ú
__module__Ú__qualname__r&   r@   Ú__classcell__©r/   s   @r0   r"   r"   6   sL   ø€ € € € € ð$ð $ð $ð $ð $ð $ð+ð +ð +ð +ð +ð +ð +r1   r"   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚUMT5DenseActDenseÚconfigc                 óJ  •— t          ¦   «                              ¦   «          t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j        |j	        ¦  «        | _
        t          |j                 | _        d S ©NF©Úbias)r%   r&   r   ÚLinearÚd_modelÚd_ffÚwiÚwoÚDropoutÚdropout_rateÚdropoutr	   Údense_act_fnÚact©r,   rH   r/   s     €r0   r&   zUMT5DenseActDense.__init__Q   sx   ø€ Ý‰Œ×ÒÑÔÐÝ”)˜FœN¨F¬K¸eÐDÑDÔDˆŒÝ”)˜FœK¨¬¸eÐDÑDÔDˆŒÝ”z &Ô"5Ñ6Ô6ˆŒÝ˜&Ô-Ô.ˆŒˆˆr1   c                 ó°  — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }t          | j        j        t          j        ¦  «        r]|j        | j        j        j        k    rC| j        j        j        t          j	        k    r$| 
                    | j        j        j        ¦  «        }|                      |¦  «        }|S ©N)rP   rV   rT   Ú
isinstancerQ   r*   r(   ÚTensorr;   Úint8r6   ©r,   r>   s     r0   r@   zUMT5DenseActDense.forwardX   s¨   € ØŸš Ñ.Ô.ˆØŸš Ñ/Ô/ˆØŸš ]Ñ3Ô3ˆå�t”w”~¥u¤|Ñ4Ô4ð	CàÔ# t¤w¤~Ô';Ò;Ð;Ø””Ô$­¬
Ò2Ð2à)×,Ò,¨T¬W¬^Ô-AÑBÔBˆMØŸš Ñ.Ô.ˆØÐr1   ©rA   rB   rC   r    r&   r@   rD   rE   s   @r0   rG   rG   P   sS   ø€ € € € € ð/˜zð /ð /ð /ð /ð /ð /ðð ð ð ð ð ð r1   rG   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚUMT5DenseGatedActDenserH   c                 ó–  •— t          ¦   «                              ¦   «          t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j	        |j
        ¦  «        | _        t          |j                 | _        d S rJ   )r%   r&   r   rM   rN   rO   Úwi_0Úwi_1rQ   rR   rS   rT   r	   rU   rV   rW   s     €r0   r&   zUMT5DenseGatedActDense.__init__h   s”   ø€ Ý‰Œ×ÒÑÔÐÝ”I˜fœn¨f¬kÀÐFÑFÔFˆŒ	Ý”I˜fœn¨f¬kÀÐFÑFÔFˆŒ	Ý”)˜FœK¨¬¸eÐDÑDÔDˆŒÝ”z &Ô"5Ñ6Ô6ˆŒÝ˜&Ô-Ô.ˆŒˆˆr1   c                 óà  — |                       |                      |¦  «        ¦  «        }|                      |¦  «        }||z  }|                      |¦  «        }t	          | j        j        t          j        ¦  «        r]|j	        | j        j        j	        k    rC| j        j        j	        t          j
        k    r$|                     | j        j        j	        ¦  «        }|                      |¦  «        }|S rY   )rV   rb   rc   rT   rZ   rQ   r*   r(   r[   r;   r\   r6   )r,   r>   Úhidden_geluÚhidden_linears       r0   r@   zUMT5DenseGatedActDense.forwardp   sÀ   € Ø—h’h˜tŸyšy¨Ñ7Ô7Ñ8Ô8ˆØŸ	š	 -Ñ0Ô0ˆØ# mÑ3ˆØŸš ]Ñ3Ô3ˆõ �t”w”~¥u¤|Ñ4Ô4ð	CàÔ# t¤w¤~Ô';Ò;Ð;Ø””Ô$­¬
Ò2Ð2à)×,Ò,¨T¬W¬^Ô-AÑBÔBˆMàŸš Ñ.Ô.ˆØÐr1   r^   rE   s   @r0   r`   r`   g   sS   ø€ € € € € ð/˜zð /ð /ð /ð /ð /ð /ðð ð ð ð ð ð r1   r`   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚUMT5LayerFFrH   c                 ó$  •— t          ¦   «                              ¦   «          |j        rt          |¦  «        | _        nt          |¦  «        | _        t          |j        |j        ¬¦  «        | _	        t          j        |j        ¦  «        | _        d S )N©r.   )r%   r&   Úis_gated_actr`   ÚDenseReluDenserG   r"   rN   Úlayer_norm_epsilonÚ
layer_normr   rR   rS   rT   rW   s     €r0   r&   zUMT5LayerFF.__init__†   sx   ø€ Ý‰Œ×ÒÑÔÐØÔð 	<Ý"8¸Ñ"@Ô"@ˆDÔÐå"3°FÑ";Ô";ˆDÔå'¨¬¸FÔ<UÐVÑVÔVˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr1   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }||                      |¦  «        z   }|S rY   )rn   rl   rT   )r,   r>   Úforwarded_statess      r0   r@   zUMT5LayerFF.forward�   sF   € ØŸ?š?¨=Ñ9Ô9ÐØ×.Ò.Ð/?Ñ@Ô@ÐØ%¨¯ªÐ5EÑ(FÔ(FÑFˆØÐr1   r^   rE   s   @r0   rh   rh   …   sS   ø€ € € € € ð7˜zð 7ð 7ð 7ð 7ð 7ð 7ðð ð ð ð ð ð r1   rh   c            
       ó²   ‡ — e Zd ZdZddedz  fˆ fd„Zdej        dej        fd„Zd	„ Z	dd„Z
	 	 	 ddej        dej        dz  dedz  dej        dz  fd„Zˆ xZS )ÚUMT5Attentionz7
    T5's attention using relative_attention_bias.
    FNÚ	layer_idxc                 ó   •— t          ¦   «                              ¦   «          |j        | _        || _        |j        | _        |j        | _        |j        | _        |j        | _        |j	        | _
        |j        | _        | j
        | j        z  | _        || _        |€/| j        r(t                               d| j        j        › d�¦  «         t'          j        | j        | j        d¬¦  «        | _        t'          j        | j        | j        d¬¦  «        | _        t'          j        | j        | j        d¬¦  «        | _        t'          j        | j        | j        d¬¦  «        | _        | j        r&t'          j        | j        | j
        ¦  «        | _        d S d S )NzInstantiating a decoder z³ without passing `layer_idx` is not recommended and will to errors during the forward call, if caching is used. Please make sure to provide a `layer_idx` when creating this class.FrK   )r%   r&   Ú
is_decoderÚhas_relative_attention_biasÚrelative_attention_num_bucketsÚrelative_attention_max_distancerN   Úd_kvÚkey_value_proj_dimÚ	num_headsÚn_headsrS   rT   Ú	inner_dimrs   ÚloggerÚwarning_oncer/   rA   r   rM   ÚqÚkÚvÚoÚ	EmbeddingÚrelative_attention_bias)r,   rH   rv   rs   r/   s       €r0   r&   zUMT5Attention.__init__œ   sk  ø€ Ý‰Œ×ÒÑÔÐØ Ô+ˆŒØ+FˆÔ(Ø.4Ô.SˆÔ+Ø/5Ô/UˆÔ,Ø”~ˆŒØ"(¤+ˆÔØÔ'ˆŒØÔ*ˆŒØœ¨Ô(?Ñ?ˆŒØ"ˆŒØÐ ¤ÐÝ×Òð,¨4¬>Ô+Bð ,ð ,ð ,ñô ð õ ”˜4œ<¨¬¸eÐDÑDÔDˆŒÝ”˜4œ<¨¬¸eÐDÑDÔDˆŒÝ”˜4œ<¨¬¸eÐDÑDÔDˆŒÝ”˜4œ>¨4¬<¸eÐDÑDÔDˆŒàÔ+ð 	kÝ+-¬<¸Ô8[Ð]aÔ]iÑ+jÔ+jˆDÔ(Ð(Ð(ð	kð 	kr1   Ú
projectionÚreturnc                 ó²   — |                      ¦   «         d d…         | j        | j        fz   }|                     |¦  «                             dddd¦  «        }|S )Nr4   r   r3   r   r   )Úsizer|   rz   ÚviewÚpermute)r,   r†   Únew_projection_shapeÚnew_projections       r0   Ú_shapezUMT5Attention._shape·   sW   € Ø)ŸšÑ0Ô0°°"°Ô5¸¼ÀtÔG^Ð8_Ñ_Ðà#ŸšÐ)=Ñ>Ô>×FÒFÀqÈ!ÈQÐPQÑRÔRˆØÐr1   c                 ó~  — d}| j         }| j        }| j        sC|dz  }||dk                         t          j        ¦  «        |z  z  }t	          j        |¦  «        }n(t	          j        |t	          j        |¦  «        ¦  «         }|dz  }||k     }t	          j	        | 
                    ¦   «         |z  ¦  «        t          j	        ||z  ¦  «        z  }|||z
  z  }||                     t          j        ¦  «        z   }t	          j        |t	          j        ||dz
  ¦  «        ¦  «        }|t	          j        |||¦  «        z  }|S )aÒ  
        Adapted from Mesh Tensorflow:
        https://github.com/tensorflow/mesh/blob/0cb87fe07da627bf0b7e60475d59f95ed6b5be3d/mesh_tensorflow/transformer/transformer_layers.py#L593

        Translate relative position to a bucket number for relative attention. The relative position is defined as
        memory_position - query_position, i.e. the distance in tokens from the attending position to the attended-to
        position. If bidirectional=False, then positive relative positions are invalid. We use smaller buckets for
        small absolute relative_position and larger buckets for larger absolute relative_positions. All relative
        positions >=max_distance map to the same bucket. All relative positions <=-max_distance map to the same bucket.
        This should allow for more graceful generalization to longer sequences than the model has been trained on

        Args:
            relative_position: an int32 Tensor
            bidirectional: a boolean - whether the attention is bidirectional
            num_buckets: an integer
            max_distance: an integer

        Returns:
            a Tensor with the same shape as relative_position, containing int32 values in the range [0, num_buckets)
        r   r3   r   )rw   rx   ru   r6   r(   ÚlongÚabsÚminÚ
zeros_likeÚlogÚfloatÚmathÚ	full_likeÚwhere)	r,   Úrelative_positionÚrelative_bucketsÚnum_bucketsÚmax_distanceÚ	max_exactÚis_smallÚ	log_ratioÚrelative_position_if_larges	            r0   Ú_relative_position_bucketz'UMT5Attention._relative_position_bucket½   sP  € ð* ÐØÔ9ˆØÔ;ˆØŒð 	cØ˜AÑˆKØÐ!2°QÒ!6× :Ò :½5¼:Ñ FÔ FÈÑ TÑTÐÝ %¤	Ð*;Ñ <Ô <ÐÐå!&¤Ð+<½eÔ>NÐO`Ñ>aÔ>aÑ!bÔ!bÐ bÐð   1Ñ$ˆ	Ø$ yÒ0ˆõ ”IÐ/×5Ò5Ñ7Ô7¸)ÑCÑDÔDÅtÄxÐP\Ð_hÑPhÑGiÔGiÑiˆ	Ø ¨yÑ!8Ñ9ˆ	Ø%.°·²½e¼jÑ1IÔ1IÑ%IÐ"Ý%*¤YØ&­¬Ð8RÐT_ÐbcÑTcÑ(dÔ(dñ&
ô &
Ð"ð 	�EœK¨Ð2CÐE_Ñ`Ô`Ñ`ÐØÐr1   r   c                 ó�  — |€| j         j        j        }t          j        |t          j        |¬¦  «        dd…df         |z   }t          j        |t          j        |¬¦  «        ddd…f         }||z
  }|                      |¦  «        }|                       |¦  «        }	|	                     g d¢¦  «                             d¦  «        }	|	S )z%Compute binned relative position biasN)r;   Údevice)r3   r   r   r   )	r…   r*   r£   r(   Úaranger�   r¡   r‹   Ú	unsqueeze)
r,   Úquery_lengthÚ
key_lengthr£   Úpast_seen_tokensÚcontext_positionÚmemory_positionr™   Úrelative_position_bucketÚvaluess
             r0   Úcompute_biaszUMT5Attention.compute_biasì   sÍ   € àˆ>ØÔ1Ô8Ô?ˆFÝ œ<¨½E¼JÈvÐVÑVÔVÐWXÐWXÐWXÐZ^ÐW^Ô_ÐbrÑrÐÝœ, z½¼ÈFÐSÑSÔSÐTXÐZ[ÐZ[ÐZ[ÐT[Ô\ˆØ+Ð.>Ñ>ÐØ#'×#AÒ#AÐBSÑ#TÔ#TÐ Ø×-Ò-Ð.FÑGÔGˆØ—’ 	 	 	Ñ*Ô*×4Ò4°QÑ7Ô7ˆØˆr1   r>   Úencoder_hidden_statesÚpast_key_valuesÚattention_maskc                 ó  — |j         d d…         \  }}|�|                     | j        ¦  «        nd}t          |t          j        ¦  «        r|                     ¦   «         n|}|d u}	|                      |¦  «        }
|
                     |d| j	        | j
        ¦  «                             dd¦  «        }
d}|�Ft          |t          ¦  «        r1|j                             | j        ¦  «        }|	r|j        }n
|j        }n|}|	r|n|}|	r3|�1|r/|j        | j                 j        }|j        | j                 j        }nÝ|                      |¦  «        }|                      |¦  «        }|                     |d| j	        | j
        ¦  «                             dd¦  «        }|                     |d| j	        | j
        ¦  «                             dd¦  «        }|�E|                     ||| j        ¦  «        \  }}|	r$t          |t          ¦  «        rd|j        | j        <   t	          j        |
|                     dd¦  «        ¦  «        }|j         d         }| j        s+t	          j        d| j	        ||f|j        |j        ¬	¦  «        }n|                      |||j        |¬
¦  «        }|�||z   }|}||z  }t:          j                             |                      ¦   «         d¬¦  «         !                    |¦  «        }t:          j         "                    || j"        | j#        ¬¦  «        }t	          j        ||¦  «        }|                     dd¦  «         $                    ¦   «         }|                     ||d¦  «        }|  %                    |¦  «        }||fS )Nr3   r   r4   r   FTr   éþÿÿÿ)r£   r;   )r£   r¨   ©Údim)ÚpÚtraining)&ÚshapeÚget_seq_lengthrs   rZ   r(   r[   Úcloner€   rŠ   r|   rz   Ú	transposer   Ú
is_updatedÚgetÚcross_attention_cacheÚself_attention_cacheÚlayersÚkeysr¬   r�   r‚   ÚupdateÚmatmulrv   Úzerosr£   r;   r­   r   Ú
functionalÚsoftmaxr•   Útype_asrT   r¶   Ú
contiguousrƒ   )r,   r>   r®   r¯   r°   ÚkwargsÚ
batch_sizeÚ
seq_lengthr¨   Úis_cross_attentionÚquery_statesr»   Úcurr_past_key_valuesÚcurrent_statesÚ
key_statesÚvalue_statesÚscoresr§   Úposition_biasÚposition_bias_maskedÚattn_weightsÚattn_outputs                         r0   r@   zUMT5Attention.forwardø   sœ  € ð "/Ô!4°R°a°RÔ!8Ñˆ
�JØM\ÐMh˜?×9Ò9¸$¼.ÑIÔIÐIÐnoÐå7AÐBRÕTYÔT`Ñ7aÔ7aÐwÐ+×1Ò1Ñ3Ô3Ð3ÐgwÐð 3¸$Ð>Ðà—v’v˜mÑ,Ô,ˆØ#×(Ò(¨°R¸¼ÀtÔG^Ñ_Ô_×iÒiÐjkÐmnÑoÔoˆð ˆ
ØÐ&­:°oÕGZÑ+[Ô+[Ð&Ø(Ô3×7Ò7¸¼ÑGÔGˆJØ!ð Là'6Ô'LÐ$Ð$à'6Ô'KÐ$Ð$à#2Ð à2DÐWÐ.Ð.È-ˆØð 	F /Ð"=À*Ð"=à-Ô4°T´^ÔDÔIˆJØ/Ô6°t´~ÔFÔMˆLˆLàŸš Ñ/Ô/ˆJØŸ6š6 .Ñ1Ô1ˆLØ#Ÿš¨°R¸¼ÀtÔG^Ñ_Ô_×iÒiÐjkÐmnÑoÔoˆJØ'×,Ò,¨Z¸¸T¼\È4ÔKbÑcÔc×mÒmÐnoÐqrÑsÔsˆLàÐ*à+?×+FÒ+FÀzÐS_ÐaeÔaoÑ+pÔ+pÑ(�
˜Là%ð F­*°_ÕFYÑ*ZÔ*Zð FØAE�OÔ.¨t¬~Ñ>õ ”˜l¨J×,@Ò,@ÀÀAÑ,FÔ,FÑGÔGˆàÔ% bÔ)ˆ
ØÔ/ð 	Ý!œKØ�D”L *¨jÐ9À&Ä-ÐW]ÔWcðñ ô ˆMˆMð !×-Ò-Ø˜J¨v¬}ÐO_ð .ñ ô ˆMð Ð%Ø)¨NÑ:ˆMà,ÐØÐ&Ñ&ˆõ ”}×,Ò,¨V¯\ª\©^¬^ÀÐ,ÑDÔD×LÒLÈVÑTÔTˆÝ”}×,Ò,¨\¸T¼\ÐTXÔTaÐ,ÑbÔbˆå”l <°Ñ>Ô>ˆà!×+Ò+¨A¨qÑ1Ô1×<Ò<Ñ>Ô>ˆØ!×&Ò& z°:¸rÑBÔBˆà—f’f˜[Ñ)Ô)ˆØ˜LÐ(Ð(r1   )FN)Nr   ©NNN)rA   rB   rC   Ú__doc__Úintr&   r(   r[   rŽ   r¡   r­   r
   r@   rD   rE   s   @r0   rr   rr   —   s  ø€ € € € € ðð ðkð kÈSÐSWÉZð kð kð kð kð kð kð6 ¤ð °%´,ð ð ð ð ð- ð - ð - ð^
ð 
ð 
ð 
ð 6:Ø(,Ø.2ðN)ð N)à”|ðN)ð  %œ|¨dÑ2ðN)ð  ™ð	N)ð
 œ tÑ+ðN)ð N)ð N)ð N)ð N)ð N)ð N)ð N)r1   rr   c                   ó8   ‡ — e Zd Zddedz  fˆ fd„Z	 	 dd„Zˆ xZS )ÚUMT5LayerSelfAttentionNrs   c                 óò   •— t          ¦   «                              ¦   «          t          |d|¬¦  «        | _        t	          |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S )NT©rv   rs   rj   )r%   r&   rr   ÚSelfAttentionr"   rN   rm   rn   r   rR   rS   rT   ©r,   rH   rs   r/   s      €r0   r&   zUMT5LayerSelfAttention.__init__J  sb   ø€ Ý‰Œ×ÒÑÔÐÝ*¨6ÈtÐ_hÐiÑiÔiˆÔÝ'¨¬¸FÔ<UÐVÑVÔVˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr1   c                 ó¸   — |                       |¦  «        }|                      |||¬¦  «        }||                      |d         ¦  «        z   }|f|dd …         z   }|S )N©r°   r¯   r   r   )rn   rÝ   rT   )r,   r>   r°   r¯   rÈ   Únormed_hidden_statesÚattention_outputÚoutputss           r0   r@   zUMT5LayerSelfAttention.forwardP  st   € ð  $Ÿš¨}Ñ=Ô=ÐØ×-Ò-Ø Ø)Ø+ð .ñ 
ô 
Ðð
 &¨¯ªÐ5EÀaÔ5HÑ(IÔ(IÑIˆØ Ð"Ð%5°a°b°bÔ%9Ñ9ˆØˆr1   rY   )NN©rA   rB   rC   rØ   r&   r@   rD   rE   s   @r0   rÚ   rÚ   I  si   ø€ € € € € ð7ð 7¨#°©*ð 7ð 7ð 7ð 7ð 7ð 7ð Øð	ð ð ð ð ð ð ð r1   rÚ   c                   ó:   ‡ — e Zd Zddedz  fˆ fd„Z	 	 	 dd„Zˆ xZS )ÚUMT5LayerCrossAttentionNrs   c                 óò   •— t          ¦   «                              ¦   «          t          |d|¬¦  «        | _        t	          |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S )NFrÜ   rj   )r%   r&   rr   ÚEncDecAttentionr"   rN   rm   rn   r   rR   rS   rT   rÞ   s      €r0   r&   z UMT5LayerCrossAttention.__init__c  sc   ø€ Ý‰Œ×ÒÑÔÐÝ,¨VÐQVÐbkÐlÑlÔlˆÔÝ'¨¬¸FÔ<UÐVÑVÔVˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr1   c                 óº   — |                       |¦  «        }|                      ||||¬¦  «        }||                      |d         ¦  «        z   }|f|dd …         z   }	|	S )N©r®   r°   r¯   r   r   )rn   rè   rT   )
r,   r>   r®   r°   r¯   rÈ   rá   râ   Úlayer_outputrã   s
             r0   r@   zUMT5LayerCrossAttention.forwardi  sv   € ð  $Ÿš¨}Ñ=Ô=ÐØ×/Ò/Ø Ø"7Ø)Ø+ð	 0ñ 
ô 
Ðð % t§|¢|Ð4DÀQÔ4GÑ'HÔ'HÑHˆØ�/Ð$4°Q°R°RÔ$8Ñ8ˆØˆr1   rY   rÖ   rä   rE   s   @r0   ræ   ræ   b  sl   ø€ € € € € ð7ð 7¨#°©*ð 7ð 7ð 7ð 7ð 7ð 7ð #ØØðð ð ð ð ð ð ð r1   ræ   c                   ó@   ‡ — e Zd Zddedz  fˆ fd„Z	 	 	 	 	 	 dd„Zˆ xZS )Ú	UMT5BlockNrs   c                 ó�  •— t          ¦   «                              ¦   «          |j        | _        t          j        ¦   «         | _        | j                             t          ||¬¦  «        ¦  «         | j        r)| j                             t          ||¬¦  «        ¦  «         | j                             t          |¦  «        ¦  «         d S )N©rs   )
r%   r&   ru   r   Ú
ModuleListÚlayerÚappendrÚ   ræ   rh   rÞ   s      €r0   r&   zUMT5Block.__init__~  s§   ø€ Ý‰Œ×ÒÑÔÐØ Ô+ˆŒÝ”]‘_”_ˆŒ
ØŒ
×ÒÕ0°À9ÐMÑMÔMÑNÔNÐNØŒ?ð 	TØŒJ×ÒÕ5°fÈ	ÐRÑRÔRÑSÔSÐSàŒ
×Ò�+ fÑ-Ô-Ñ.Ô.Ð.Ð.Ð.r1   Fc                 ó
  —  | j         d         |||¬¦  «        \  }}	|j        t          j        k    rst          j        |j        ¦  «        j        }
t          j        t          j        |¦  «                             ¦   «         |
dz
  |
¦  «        }t          j	        || |¬¦  «        }d }| j
        o|d u}|r¥ | j         d         ||||¬¦  «        \  }}|j        t          j        k    rst          j        |j        ¦  «        j        }
t          j        t          j        |¦  «                             ¦   «         |
dz
  |
¦  «        }t          j	        || |¬¦  «        } | j         d         |¦  «        }|j        t          j        k    rst          j        |j        ¦  «        j        }
t          j        t          j        |¦  «                             ¦   «         |
dz
  |
¦  «        }t          j	        || |¬¦  «        }|f}|r||	|fz  }|S )Nr   rà   iè  )r’   Úmaxr   rê   r4   )rñ   r;   r(   r<   Úfinforô   r˜   ÚisinfÚanyÚclampru   )r,   r>   r°   r®   Úencoder_attention_maskr¯   Ú	use_cacheÚoutput_attentionsrÈ   Úself_attn_weightsÚ	max_dtypeÚclamp_valueÚcross_attn_weightsÚdo_cross_attentionrã   s                  r0   r@   zUMT5Block.forwardˆ  s  € ð ,9¨4¬:°a¬=ØØ)Ø+ð,
ñ ,
ô ,
Ñ(ˆÐ(ð Ô¥%¤-Ò/Ð/Ýœ MÔ$7Ñ8Ô8Ô<ˆIÝœ+¥e¤k°-Ñ&@Ô&@×&DÒ&DÑ&FÔ&FÈ	ÐTXÑHXÐZcÑdÔdˆKÝ!œK¨¸K¸<È[ÐYÑYÔYˆMð "ÐØ!œ_ÐRÐ1FÈdÐ1RÐØð 	^Ø0=°´
¸1´ØØ&;Ø5Ø /ð	1ñ 1ô 1Ñ-ˆMÐ-ð Ô"¥e¤mÒ3Ð3Ý!œK¨Ô(;Ñ<Ô<Ô@�	Ý#œk­%¬+°mÑ*DÔ*D×*HÒ*HÑ*JÔ*JÈIÐX\ÑL\Ð^gÑhÔh�Ý %¤¨MÀ¸|ÐQ\Ð ]Ñ ]Ô ]�ð '˜œ
 2œ }Ñ5Ô5ˆð Ô¥%¤-Ò/Ð/Ýœ MÔ$7Ñ8Ô8Ô<ˆIÝœ+¥e¤k°-Ñ&@Ô&@×&DÒ&DÑ&FÔ&FÈ	ÐTXÑHXÐZcÑdÔdˆKÝ!œK¨¸K¸<È[ÐYÑYÔYˆMà Ð"ˆàð 	?ØÐ)Ð+=Ð>Ñ>ˆGàˆr1   rY   )NNNNFFrä   rE   s   @r0   rí   rí   }  su   ø€ € € € € ð/ð /¨#°©*ð /ð /ð /ð /ð /ð /ð Ø"Ø#ØØØð5ð 5ð 5ð 5ð 5ð 5ð 5ð 5r1   rí   c                   óL   ‡ — e Zd ZdZdefˆ fd„Zdej        dej        fd„Zˆ xZ	S )ÚUMT5ClassificationHeadz-Head for sentence-level classification tasks.rH   c                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        ¬¦  «        | _        t          j        |j        |j	        ¦  «        | _
        d S )N)rµ   )r%   r&   r   rM   rN   ÚdenserR   Úclassifier_dropoutrT   Ú
num_labelsÚout_projrW   s     €r0   r&   zUMT5ClassificationHead.__init__Ä  sc   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vœ~¨v¬~Ñ>Ô>ˆŒ
Ý”z FÔ$=Ð>Ñ>Ô>ˆŒÝœ	 &¤.°&Ô2CÑDÔDˆŒˆˆr1   r>   r‡   c                 óÖ   — |                       |¦  «        }|                      |¦  «        }t          j        |¦  «        }|                       |¦  «        }|                      |¦  «        }|S rY   )rT   r  r(   Útanhr  r]   s     r0   r@   zUMT5ClassificationHead.forwardÊ  s[   € ØŸš ]Ñ3Ô3ˆØŸ
š
 =Ñ1Ô1ˆÝœ
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš mÑ4Ô4ˆØÐr1   )
rA   rB   rC   r×   r    r&   r(   r[   r@   rD   rE   s   @r0   r  r  Á  sw   ø€ € € € € Ø7Ð7ðE˜zð Eð Eð Eð Eð Eð Eð U¤\ð °e´lð ð ð ð ð ð ð ð r1   r  c                   óˆ   ‡ — e Zd ZU eed<   dZdZdZdgZdgZ	e
d„ ¦   «         Z ej        ¦   «         ˆ fd„¦   «         Zd„ Zˆ xZS )	ÚUMT5PreTrainedModelrH   ÚtransformerTrí   rQ   c                 óv   — t          j        t          ¦  «        }t          j        t          ¦  «        }|||dœ}|S )N)Údecoder_input_idsÚ	input_idsÚdecoder_attention_mask)r(   Útensorr   r   )r,   r  Ú
input_maskÚdummy_inputss       r0   r  z UMT5PreTrainedModel.dummy_inputsÝ  s=   € å”L¥Ñ.Ô.ˆ	Ý”\¥*Ñ-Ô-ˆ
à!*Ø"Ø&0ð
ð 
ˆð
 Ðr1   c                 ó\  •— t          ¦   «                              |¦  «         | j        j        }t	          |t
          ¦  «        rt          j        |j        |dz  ¦  «         d	S t	          |t          t          t          t          f¦  «        rÇt          j        |j        j        d|dz  ¬¦  «         t          |d¦  «        r0| j        j        s$t          j        |j        j        d|dz  ¬¦  «         t          |d¦  «        rQt          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          j        |j        j        ¦  «         d	S d	S t	          |t,          ¦  «        rVt          |d¦  «        rDt          j        |j        j        d|dz  ¬¦  «         t          j        |j        j        ¦  «         d	S d	S t	          |t0          ¦  «        ræt          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          |j        d¦  «        r*|j        j        �t          j        |j        j        ¦  «         t          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          |j        d¦  «        r,|j        j        �"t          j        |j        j        ¦  «         d	S d	S d	S t	          |t6          ¦  «        ræt          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          |j        d¦  «        r*|j        j        �t          j        |j        j        ¦  «         t          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          |j        d¦  «        r,|j        j        �"t          j        |j        j        ¦  «         d	S d	S d	S t	          |t>          ¦  «        �rVt          j        |j         j        d|| j        j        dz  z  ¬¦  «         t          |j         d¦  «        r*|j         j        �t          j        |j         j        ¦  «         t          j        |j!        j        d|| j        j        dz  z  ¬¦  «         t          |j!        d¦  «        r*|j!        j        �t          j        |j!        j        ¦  «         t          j        |j        j        d|| j        j        dz  z  ¬¦  «         t          |j        d¦  «        r,|j        j        �"t          j        |j        j        ¦  «         d	S d	S d	S t	          |tD          ¦  «        rö| j        j        }| j        j#        }| j        j$        }t          j        |j%        j        d|||z  dz  z  ¬¦  «         t          j        |j&        j        d||dz  z  ¬¦  «         t          j        |j'        j        d||dz  z  ¬¦  «         t          j        |j(        j        d|||z  dz  z  ¬¦  «         |j)        r+t          j        |j*        j        d||dz  z  ¬¦  «         d	S d	S d	S )
zInitialize the weightsç      ð?g        )r9   ÚstdÚlm_headÚ
qa_outputsç      à¿Ú
classifierrL   N)+r%   Ú_init_weightsrH   Úinitializer_factorrZ   r"   ÚinitÚ	constant_r*   Ú	UMT5ModelÚUMT5ForConditionalGenerationÚUMT5EncoderModelÚUMT5ForQuestionAnsweringÚnormal_ÚsharedÚhasattrÚtie_word_embeddingsr  r  rN   Úzeros_rL   ÚUMT5ForTokenClassificationr  r  r  r  rG   rP   rQ   rO   r`   rb   rc   rr   ry   r{   r€   r�   r‚   rƒ   rv   r…   )r,   ÚmoduleÚfactorrN   rz   r|   r/   s         €r0   r  z!UMT5PreTrainedModel._init_weightsè  sô  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ø”Ô/ˆÝ�f�mÑ,Ô,ð =	pÝŒN˜6œ=¨&°3©,Ñ7Ô7Ð7Ð7Ð7ÝØåÝ,Ý Ý(ð	ñ
ô 
ð ;	põ ŒL˜œÔ-°C¸VÀc¹\ÐJÑJÔJÐJÝ�v˜yÑ)Ô)ð P°$´+Ô2Qð PÝ”˜Vœ^Ô2¸À&È3Á,ÐOÑOÔOÐOÝ�v˜|Ñ,Ô,ð 4Ý”˜VÔ.Ô5¸CÀVÐPTÔP[ÔPcÐhlÑOlÑEmÐnÑnÔnÐnÝ”˜FÔ-Ô2Ñ3Ô3Ð3Ð3Ð3ð4ð 4õ ˜Õ :Ñ;Ô;ð *	pÝ�v˜|Ñ,Ô,ð 4Ý”˜VÔ.Ô5¸CÀVÈcÁ\ÐRÑRÔRÐRÝ”˜FÔ-Ô2Ñ3Ô3Ð3Ð3Ð3ð4ð 4õ ˜Õ 6Ñ7Ô7ð &	pÝŒL˜œÔ,°3¸FÀtÄ{ÔGZÐ_cÑFcÑ<dÐeÑeÔeÐeÝ�v”| VÑ,Ô,ð /°´Ô1BÐ1NÝ”˜FœLÔ-Ñ.Ô.Ð.ÝŒL˜œÔ/°c¸vÈ$Ì+ÔJ]ÐbfÑIfÑ?gÐhÑhÔhÐhÝ�v”¨Ñ/Ô/ð 2°F´OÔ4HÐ4TÝ”˜FœOÔ0Ñ1Ô1Ð1Ð1Ð1ð2ð 2Ð4TÐ4Tå˜Õ 1Ñ2Ô2ð 	põ ŒL˜œÔ)°¸ÀDÄKÔDWÐ\`ÑC`Ñ9aÐbÑbÔbÐbÝ�v”y &Ñ)Ô)ð ,¨f¬i¬nÐ.HÝ”˜FœIœNÑ+Ô+Ð+ÝŒL˜œÔ)°¸ÀDÄKÔDTÐY]ÑC]Ñ9^Ð_Ñ_Ô_Ð_Ý�v”y &Ñ)Ô)ð ,¨f¬i¬nÐ.HÝ”˜FœIœNÑ+Ô+Ð+Ð+Ð+ð,ð ,Ð.HÐ.Hå˜Õ 6Ñ7Ô7ñ 	pÝŒL˜œÔ+°#¸6ÀdÄkÔFYÐ^bÑEbÑ;cÐdÑdÔdÐdÝ�v”{ FÑ+Ô+ð .°´Ô0@Ð0LÝ”˜FœKÔ,Ñ-Ô-Ð-ÝŒL˜œÔ+°#¸6ÀdÄkÔFYÐ^bÑEbÑ;cÐdÑdÔdÐdÝ�v”{ FÑ+Ô+ð .°´Ô0@Ð0LÝ”˜FœKÔ,Ñ-Ô-Ð-ÝŒL˜œÔ)°¸ÀDÄKÔDTÐY]ÑC]Ñ9^Ð_Ñ_Ô_Ð_Ý�v”y &Ñ)Ô)ð ,¨f¬i¬nÐ.HÝ”˜FœIœNÑ+Ô+Ð+Ð+Ð+ð,ð ,Ð.HÐ.Hå˜¥Ñ.Ô.ð 	pð ”kÔ)ˆGØ!%¤Ô!1ÐØ”kÔ+ˆGÝŒL˜œœ¨s¸À7ÐM_ÑC_ÐdhÑBhÑ8iÐjÑjÔjÐjÝŒL˜œœ¨s¸À'È4Á-Ñ8PÐQÑQÔQÐQÝŒL˜œœ¨s¸À'È4Á-Ñ8PÐQÑQÔQÐQÝŒL˜œœ¨s¸À7ÐM_ÑC_ÐdhÑBhÑ8iÐjÑjÔjÐjØÔ1ð pÝ”˜VÔ;ÔBÈÐRXÐ]dÐimÑ\mÑRnÐoÑoÔoÐoÐoÐoð	pð 	pðpð pr1   c                 ó6  — | j         j        }| j         j        }|€t          d¦  «        ‚|                     |j        ¦  «        }|dd d…f                              ¦   «         |ddd …f<   ||d<   |€t          d¦  «        ‚|                     |dk    |¦  «         |S )NzŽself.model.config.decoder_start_token_id has to be defined. In UMT5 it is usually set to the pad_token_id. See UMT5 docs for more information..r4   r   ).r   z1self.model.config.pad_token_id has to be defined.éœÿÿÿ)rH   Údecoder_start_token_idÚpad_token_idÚ
ValueErrorÚ	new_zerosr·   r¹   Úmasked_fill_)r,   r  r-  r.  Úshifted_input_idss        r0   Ú_shift_rightz UMT5PreTrainedModel._shift_right,  sº   € Ø!%¤Ô!CÐØ”{Ô/ˆà!Ð)Ýð6ñô ð ð
 &×/Ò/°	´Ñ@Ô@ÐØ%.¨s°C°R°C¨xÔ%8×%>Ò%>Ñ%@Ô%@Ð˜#˜q˜r˜r˜'Ñ"Ø$:Ð˜&Ñ!àÐÝÐPÑQÔQÐQà×&Ò&Ð'8¸DÒ'@À,ÑOÔOÐOà Ð r1   )rA   rB   rC   r    Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_can_compile_fullgraphÚ_no_split_modulesÚ_keep_in_fp32_modulesÚpropertyr  r(   Úno_gradr  r3  rD   rE   s   @r0   r  r  Ó  s¯   ø€ € € € € € àÐÐÑØ%ÐØ&*Ð#à!ÐØ$˜ÐØ!˜FÐàðð ñ „Xðð €U„]�_„_ðApð Apð Apð Apñ „_ðApðF!ð !ð !ð !ð !ð !ð !r1   r  c                   ó@   ‡ — e Zd Zˆ fd„Zd„ Z	 	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )Ú	UMT5Stackc                 óÌ  •‡— t          ¦   «                              ‰¦  «         t          j        ‰j        ‰j        ¦  «        | _        ‰j        | _        t          j        ˆfd„t          ‰j
        ¦  «        D ¦   «         ¦  «        | _        t          ‰j        ‰j        ¬¦  «        | _        t          j        ‰j        ¦  «        | _        d| _        |                      ¦   «          d S )Nc                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS )rï   )rí   )Ú.0ÚirH   s     €r0   ú
<listcomp>z&UMT5Stack.__init__.<locals>.<listcomp>G  s&   ø€ Ð#eÐ#eÐ#eÀq¥I¨fÀÐ$BÑ$BÔ$BÐ#eÐ#eÐ#er1   rj   F)r%   r&   r   r„   Ú
vocab_sizerN   Úembed_tokensru   rð   ÚrangeÚ
num_layersÚblockr"   rm   Úfinal_layer_normrR   rS   rT   Úgradient_checkpointingÚ	post_initrW   s    `€r0   r&   zUMT5Stack.__init__C  s¿   øø€ Ý‰Œ×Ò˜Ñ Ô Ð ÝœL¨Ô):¸F¼NÑKÔKˆÔØ Ô+ˆŒÝ”]Ð#eÐ#eÐ#eÐ#eÍEÐRXÔRcÑLdÔLdÐ#eÑ#eÔ#eÑfÔfˆŒ
Ý -¨f¬nÀ&ÔB[Ð \Ñ \Ô \ˆÔÝ”z &Ô"5Ñ6Ô6ˆŒð ',ˆÔ#Ø�ŠÑÔÐÐÐr1   c                 ó   — || _         d S rY   )rD  ©r,   Únew_embeddingss     r0   Úset_input_embeddingszUMT5Stack.set_input_embeddingsO  s   € Ø*ˆÔÐÐr1   Nc           
      ó(  — |�|n| j         j        }|�|n| j         j        }|	�|	n| j         j        }	|
�|
n| j         j        }
|�#|�!| j        rdnd}t          d|› d|› d�¦  «        ‚|�1|                     ¦   «         }|                     d|d         ¦  «        }n@|�|                     ¦   «         d d…         }n!| j        rdnd}t          d|› d|› d	�¦  «        ‚| j	        r%| j
        r|rt                               d
¦  «         d}|€+| j        €t          d¦  «        ‚|                      |¦  «        }|\  }}|du r| j        st          d| › d�¦  «        ‚| j        r]|rZ|€X| j         j        r7t          t!          | j         ¬¦  «        t!          | j         ¬¦  «        ¦  «        }nt!          | j         ¬¦  «        }n	| j        sd }|�|                     ¦   «         nd}|€/t%          ¦   «         s!||z   }t'          j        |||j        ¬¦  «        }| j        rt-          | j         |||¬¦  «        }nT|�P|d d …d d d d …f         }|                     |j        ¬¦  «        }d|z
  t'          j        |j        ¦  «        j        z  }nd }| j        r|�t7          | j         |||¬¦  «        }nd }|	rdnd }|rdnd }|r	| j        rdnd }|                      |¦  «        }t;          | j        ¦  «        D ]H\  }}|	r||fz   } ||||||||¬¦  «        }|d         }|r||d         fz  }| j        r||d         fz  }ŒI|                      |¦  «        }|                      |¦  «        }|	r||fz   }|
stA          d„ |||||fD ¦   «         ¦  «        S tC          |||||¬¦  «        S )NÚdecoder_Ú zYou cannot specify both zinput_ids and zinputs_embeds at the same timer4   zYou have to specify either zinput_ids or Úinputs_embedszZ`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...Fz<You have to initialize the model with valid token embeddingsTz)`use_cache` can only be set to `True` if z is used as a decoder)rH   r   )r£   )rH   rR  r°   r¯   )r;   r  )rH   rR  r°   r®   © )rù   r¯   rú   rû   r   r3   c              3   ó   K  — | ]}|®|V — Œ	d S rY   rS  )r@  r‚   s     r0   ú	<genexpr>z$UMT5Stack.forward.<locals>.<genexpr>Ö  s4   è è € ð 
ð 
àð �=ð ð !�=�=�=ð
ð 
r1   )Úlast_hidden_stater¯   r>   Ú
attentionsÚcross_attentions)"rH   rú   rû   Úoutput_hidden_statesÚreturn_dictru   r/  r‰   rŠ   rI  r¶   r~   r   rD  Úis_encoder_decoderr   r   r¸   r   r(   r)   r£   r   r6   r;   rõ   r’   r   rT   Ú	enumeraterG  rH  Útupler   )r,   r  r°   r®   rù   rR  r¯   rú   rû   rY  rZ  rÈ   Úerr_msg_prefixÚinput_shaperÉ   rÊ   Úpast_key_values_lengthÚmask_seq_lengthÚcausal_maskÚencoder_extended_attention_maskÚall_hidden_statesÚall_attentionsÚall_cross_attentionsr>   rA  Úlayer_moduleÚlayer_outputss                              r0   r@   zUMT5Stack.forwardR  s  € ð "+Ð!6�I�I¸D¼KÔ<Qˆ	Ø1BÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆàÐ  ]Ð%>Ø+/¬?ÐB˜Z˜ZÀˆNÝØw¨>ÐwÐwÈÐwÐwÐwñô ð ð Ð"Ø#Ÿ.š.Ñ*Ô*ˆKØ!Ÿš r¨;°r¬?Ñ;Ô;ˆIˆIØÐ&Ø'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKˆKà+/¬?ÐB˜Z˜ZÀˆNÝÐu¸>ÐuÐuÐXfÐuÐuÐuÑvÔvÐvàÔ&ð 	"¨4¬=ð 	"Øð "Ý×#Ò#Øpñô ð ð "�	àÐ ØÔ Ð(Ý Ð!_Ñ`Ô`Ð`Ø ×-Ò-¨iÑ8Ô8ˆMà!,Ñˆ
�Jà˜ÐÐØ”?ð jÝ Ð!hÈTÐ!hÐ!hÐ!hÑiÔiÐið Œ?ð 	#Øð G˜_Ð4Ø”;Ô1ð GÝ&9Ý$¨D¬KÐ8Ñ8Ô8½,ÈdÌkÐ:ZÑ:ZÔ:Zñ'ô '�O�Oõ '3¸$¼+Ð&FÑ&FÔ&F�OøØ”ð 	#ð #ˆOàETÐE` ×!?Ò!?Ñ!AÔ!AÐ!AÐfgÐØÐ!Õ*BÑ*DÔ*DÐ!à4°zÑAˆOÝ"œZ¨
°OÈMÔL`ÐaÑaÔaˆNàŒ?ð 	Ý,Ø”{Ø+Ø-Ø /ð	ñ ô ˆKˆKð Ð'Ø(¨¨¨¨D°$¸¸¸Ð)9Ô:ˆKØ%Ÿ.š.¨}Ô/B˜.ÑCÔCˆKØ Ñ,µ´¸MÔ<OÑ0PÔ0PÔ0TÑTˆKˆKàˆKàŒ?ð 	3Ð5ÐAÝ.GØ”{Ø+Ø5Ø&;ð	/ñ /ô /Ð+Ð+ð /3Ð+à"6Ð@˜B˜B¸DÐØ0Ð:˜˜°dˆØ%6ÐT¸4¼?ÐT˜r˜rÐPTÐàŸš ]Ñ3Ô3ˆå(¨¬Ñ4Ô4ð 	@ð 	@‰OˆAˆ|Ø#ð IØ$5¸Ð8HÑ$HÐ!à(˜LØØØ%Ø'FØ /Ø#Ø"3ðñ ô ˆMð *¨!Ô,ˆMà ð @Ø =°Ô#3Ð"5Ñ5�Ø”?ð @Ø(¨]¸1Ô-=Ð,?Ñ?Ð(øà×-Ò-¨mÑ<Ô<ˆØŸš ]Ñ3Ô3ˆð  ð 	EØ 1°]Ð4DÑ DÐàð 	Ýð 
ð 
ð "Ø#Ø%Ø"Ø(ðð
ñ 
ô 
ñ 
ô 
ð 
õ 9Ø+Ø+Ø+Ø%Ø1ð
ñ 
ô 
ð 	
r1   )
NNNNNNNNNN)rA   rB   rC   r&   rN  r@   rD   rE   s   @r0   r=  r=  B  sƒ   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð+ð +ð +ð
 ØØ"Ø#ØØØØØ!ØðU
ð U
ð U
ð U
ð U
ð U
ð U
ð U
r1   r=  c                   óp  ‡ — e Zd ZU dZdZeed<   dddœZˆ fd„Zd„ Z	d„ Z
e	 	 	 	 	 	 	 	 	 	 	 	 dd
ej        d	z  dej        d	z  dej        d	z  dej        d	z  deeej                          d	z  ded	z  dej        d	z  dej        d	z  ded	z  ded	z  ded	z  ded	z  deej                 ez  fd„¦   «         Zˆ xZS )r  ao  
    Examples:

    ```python
    >>> from transformers import UMT5Model, AutoTokenizer

    >>> model = UMT5Model.from_pretrained("google/umt5-small")
    >>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
    >>> noisy_text = "UN Offizier sagt, dass weiter <extra_id_0> werden muss in Syrien."
    >>> label = "<extra_id_0> verhandelt"
    >>> inputs = tokenizer(inputs, return_tensors="pt")
    >>> labels = tokenizer(label=label, return_tensors="pt")

    >>> outputs = model(input_ids=inputs["input_ids"], decoder_input_ids=labels["input_ids"])
    >>> hidden_states = outputs.last_hidden_state
    ```Úumt5rH   úshared.weight©úencoder.embed_tokens.weightúdecoder.embed_tokens.weightc                 óœ  •— t          ¦   «                              |¦  «         t          j        |j        |j        ¦  «        | _        t          j        |¦  «        }d|_	        d|_
        t          |¦  «        | _        t          j        |¦  «        }d|_	        |j        |_        t          |¦  «        | _        |                      ¦   «          d S ©NFT)r%   r&   r   r„   rC  rN   r$  ÚcopyÚdeepcopyru   rú   r=  ÚencoderÚnum_decoder_layersrF  ÚdecoderrJ  ©r,   rH   Úencoder_configÚdecoder_configr/   s       €r0   r&   zUMT5Model.__init__  sª   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”l 6Ô#4°f´nÑEÔEˆŒåœ vÑ.Ô.ˆØ$)ˆÔ!Ø#(ˆÔ Ý  Ñ0Ô0ˆŒåœ vÑ.Ô.ˆØ$(ˆÔ!Ø$*Ô$=ˆÔ!Ý  Ñ0Ô0ˆŒð 	�ŠÑÔÐÐÐr1   c                 ó   — | j         S rY   ©r$  ©r,   s    r0   Úget_input_embeddingszUMT5Model.get_input_embeddings  ó
   € ØŒ{Ðr1   c                 ó|   — || _         | j                             |¦  «         | j                             |¦  «         d S rY   ©r$  rs  rN  ru  rL  s     r0   rN  zUMT5Model.set_input_embeddings  ó;   € Ø$ˆŒØŒ×)Ò)¨.Ñ9Ô9Ð9ØŒ×)Ò)¨.Ñ9Ô9Ð9Ð9Ð9r1   Nr  r°   r  r  Úencoder_outputsr¯   rR  Údecoder_inputs_embedsrú   rû   rY  rZ  r‡   c                 ó"  — |	�|	n| j         j        }	|�|n| j         j        }|€|                      ||||
||¬¦  «        }ne|rct	          |t
          ¦  «        sNt          |d         t          |¦  «        dk    r|d         ndt          |¦  «        dk    r|d         nd¬¦  «        }|d         }|                      |||||||	|
||¬¦
  «
        }|s||z   S t          |j	        |j
        |j        |j        |j        |j	        |j        |j        ¬¦  «        S )	ah
  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. UMT5 is a model with relative position embeddings so
            you should be able to pad the inputs on both the right and the left.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for detail.

            [What are input IDs?](../glossary#input-ids)

            To know more on how to prepare `input_ids` for pretraining take a look a [UMT5 Training](./umt5#training).
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            UMT5 uses the `pad_token_id` as the starting token for `decoder_input_ids` generation. If `past_key_values`
            is used, optionally only the last `decoder_input_ids` have to be input (see `past_key_values`).

            To know more on how to prepare `decoder_input_ids` for pretraining take a look at [UMT5
            Training](./umt5#training).
        decoder_attention_mask (`torch.BoolTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
            be used by default.

        Example:

        ```python
        >>> from transformers import AutoTokenizer, UMT5Model

        >>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
        >>> model = UMT5Model.from_pretrained("google/umt5-small")

        >>> input_ids = tokenizer(
        ...     "Studies have been shown that owning a dog is good for you", return_tensors="pt"
        ... ).input_ids  # Batch size 1
        >>> decoder_input_ids = tokenizer("Studies show that", return_tensors="pt").input_ids  # Batch size 1

        >>> # preprocess: Prepend decoder_input_ids with start token which is pad token for UMT5Model.
        >>> # This is not needed for torch's UMT5ForConditionalGeneration as it does this internally using labels arg.
        >>> decoder_input_ids = model._shift_right(decoder_input_ids)

        >>> # forward pass
        >>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
        >>> last_hidden_states = outputs.last_hidden_state
        ```N©r  r°   rR  rû   rY  rZ  r   r   r3   ©rV  r>   rW  ©
r  r°   rR  r¯   r®   rù   rú   rû   rY  rZ  )rV  r¯   Údecoder_hidden_statesÚdecoder_attentionsrX  Úencoder_last_hidden_stater®   Úencoder_attentions)rH   rú   rZ  rs  rZ   r   Úlenru  r   rV  r¯   r>   rW  rX  )r,   r  r°   r  r  r�  r¯   rR  r‚  rú   rû   rY  rZ  rÈ   r>   Údecoder_outputss                   r0   r@   zUMT5Model.forward  su  € ðD "+Ð!6�I�I¸D¼KÔ<Qˆ	Ø%0Ð%<�k�kÀ$Ä+ÔBYˆð Ð"Ø"ŸlšlØ#Ø-Ø+Ø"3Ø%9Ø'ð +ñ ô ˆOˆOð ð 	¥¨O½_Ñ!MÔ!Mð 	Ý-Ø"1°!Ô"4Ý47¸Ñ4HÔ4HÈ1Ò4LÐ4L˜o¨aÔ0Ð0ÐRVÝ14°_Ñ1EÔ1EÈÒ1IÐ1I˜?¨1Ô-Ð-Ètðñ ô ˆOð (¨Ô*ˆð Ÿ,š,Ø'Ø1Ø/Ø+Ø"/Ø#1ØØ/Ø!5Ø#ð 'ñ 
ô 
ˆð ð 	5Ø" _Ñ4Ð4å!Ø-Ô?Ø+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5Ô&GØ"1Ô"?Ø.Ô9ð	
ñ 	
ô 	
ð 		
r1   ©NNNNNNNNNNNN)rA   rB   rC   r×   Ú
model_typer    r4  Ú_tied_weights_keysr&   r|  rN  r   r(   Ú
LongTensorÚFloatTensorÚ
BoolTensorr]  r
   r[   Úboolr   r@   rD   rE   s   @r0   r  r  ê  sË  ø€ € € € € € ðð ð" €JØÐÐÑà'6Ø'6ðð Ðð
ð ð ð ð ð$ð ð ð:ð :ð :ð
 ð .2Ø37Ø59Ø:>ØBFØ(,Ø-1Ø59Ø!%Ø)-Ø,0Ø#'ðq
ð q
àÔ# dÑ*ðq
ð Ô)¨DÑ0ðq
ð !Ô+¨dÑ2ð	q
ð
 !&Ô 0°4Ñ 7ðq
ð ˜u UÔ%6Ô7Ô8¸4Ñ?ðq
ð  ™ðq
ð ”| dÑ*ðq
ð  %œ|¨dÑ2ðq
ð ˜$‘;ðq
ð   $™;ðq
ð # T™kðq
ð ˜D‘[ðq
ð 
ˆuÔ Ô	!Ð$6Ñ	6ðq
ð q
ð q
ñ „^ðq
ð q
ð q
ð q
ð q
r1   r  z<
    UMT5 Model with a `language modeling` head on top.
    )Úcustom_introc                   ó’  ‡ — e Zd ZdZdZddddœZˆ fd„Zd„ Zd„ Ze		 	 	 	 	 	 	 	 	 	 	 	 	 dd	e
j        dz  d
e
j        dz  de
j        dz  de
j        dz  deee
j                          dz  dedz  de
j        dz  de
j        dz  de
j        dz  dedz  dedz  dedz  dedz  dee
j                 ez  fd„¦   «         Zde
j        fd„Zˆ xZS )r   a  
    Examples:

    ```python
    >>> from transformers import UMT5ForConditionalGeneration, AutoTokenizer

    >>> model = UMT5ForConditionalGeneration.from_pretrained("google/umt5-small")
    >>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
    >>> article = "UN Offizier sagt, dass weiter verhandelt werden muss in Syrien."
    >>> summary = "Weiter Verhandlung in Syrien."
    >>> inputs = tokenizer(article, text_target=summary, return_tensors="pt")

    >>> outputs = model(**inputs)
    >>> loss = outputs.loss
    ```rj  rk  )rm  rn  zlm_head.weightc                 ó   •— t          ¦   «                              |¦  «         |j        | _        t	          j        |j        |j        ¦  «        | _        t          j	        |¦  «        }d|_
        d|_        t          |¦  «        | _        t          j	        |¦  «        }d|_
        |j        |_        t          |¦  «        | _        t	          j        |j        |j        d¬¦  «        | _        |                      ¦   «          d S )NFTrK   )r%   r&   rN   Ú	model_dimr   r„   rC  r$  rq  rr  ru   rú   r=  rs  rt  rF  ru  rM   r  rJ  rv  s       €r0   r&   z%UMT5ForConditionalGeneration.__init__±  sÐ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØœˆŒå”l 6Ô#4°f´nÑEÔEˆŒåœ vÑ.Ô.ˆØ$)ˆÔ!Ø#(ˆÔ Ý  Ñ0Ô0ˆŒåœ vÑ.Ô.ˆØ$(ˆÔ!Ø$*Ô$=ˆÔ!Ý  Ñ0Ô0ˆŒå”y ¤°Ô1BÈÐOÑOÔOˆŒð 	�ŠÑÔÐÐÐr1   c                 ó   — | j         S rY   rz  r{  s    r0   r|  z1UMT5ForConditionalGeneration.get_input_embeddingsÇ  r}  r1   c                 ó|   — || _         | j                             |¦  «         | j                             |¦  «         d S rY   r  rL  s     r0   rN  z1UMT5ForConditionalGeneration.set_input_embeddingsË  r€  r1   Nr  r°   r  r  r�  r¯   rR  r‚  Úlabelsrú   rû   rY  rZ  r‡   c                 óÐ  — |
�|
n| j         j        }
|�|n| j         j        }|€|                      ||||||¬¦  «        }ne|rct	          |t
          ¦  «        sNt          |d         t          |¦  «        dk    r|d         ndt          |¦  «        dk    r|d         nd¬¦  «        }|d         }|	�|€|€|                      |	¦  «        }|                      |||||||
|||¬¦
  «
        }|d         }| j         j	        r|| j
        dz  z  }|                      |¦  «        }d}|	�pt          d	¬
¦  «        }|	                     |j        ¦  «        }	 ||                     d|                     d¦  «        ¦  «        |	                     d¦  «        ¦  «        }|s|f|dd…         z   |z   }|�|f|z   n|S t#          |||j        |j        |j        |j        |j        |j        |j        ¬¦	  «	        S )aˆ  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. UMT5 is a model with relative position embeddings so
            you should be able to pad the inputs on both the right and the left.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for detail.

            [What are input IDs?](../glossary#input-ids)

            To know more on how to prepare `input_ids` for pretraining take a look a [UMT5 Training](./umt5#training).
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            UMT5 uses the `pad_token_id` as the starting token for `decoder_input_ids` generation. If `past_key_values`
            is used, optionally only the last `decoder_input_ids` have to be input (see `past_key_values`).

            To know more on how to prepare `decoder_input_ids` for pretraining take a look at [UMT5
            Training](./umt5#training).
        decoder_attention_mask (`torch.BoolTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
            be used by default.
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the sequence classification/regression loss. Indices should be in `[-100, 0, ...,
            config.vocab_size - 1]`. All labels set to `-100` are ignored (masked), the loss is only computed for
            labels in `[0, ..., config.vocab_size]`

        Examples:

        ```python
        >>> from transformers import AutoTokenizer, UMT5ForConditionalGeneration

        >>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
        >>> model = UMT5ForConditionalGeneration.from_pretrained("google/umt5-small")

        >>> # training
        >>> input_ids = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="pt").input_ids
        >>> labels = tokenizer("<extra_id_0> cute dog <extra_id_1> the <extra_id_2>", return_tensors="pt").input_ids
        >>> outputs = model(input_ids=input_ids, labels=labels)
        >>> loss = outputs.loss
        >>> logits = outputs.logits

        >>> # inference
        >>> input_ids = tokenizer("Studies have shown that <extra_id_0> good for you", return_tensors="pt").input_ids
        >>> outputs = model.generate(input_ids)
        >>> tokenizer.decode(outputs[0], skip_special_tokens=True)
        ```Nr„  r   r   r3   r…  r†  r  r,  ©Úignore_indexr4   ©	ÚlossÚlogitsr¯   r‡  rˆ  rX  r‰  r®   rŠ  )rH   rú   rZ  rs  rZ   r   r‹  r3  ru  r&  r—  r  r   r6   r£   rŠ   r‰   r   r¯   r>   rW  rX  rV  )r,   r  r°   r  r  r�  r¯   rR  r‚  rš  rú   rû   rY  rZ  rÈ   r>   rŒ  Úsequence_outputÚ	lm_logitsrŸ  Úloss_fctÚoutputs                         r0   r@   z$UMT5ForConditionalGeneration.forwardÐ  sc  € ðL "+Ð!6�I�I¸D¼KÔ<Qˆ	Ø%0Ð%<�k�kÀ$Ä+ÔBYˆð Ð"à"ŸlšlØ#Ø-Ø+Ø"3Ø%9Ø'ð +ñ ô ˆOˆOð ð 	¥¨O½_Ñ!MÔ!Mð 	Ý-Ø"1°!Ô"4Ý47¸Ñ4HÔ4HÈ1Ò4LÐ4L˜o¨aÔ0Ð0ÐRVÝ14°_Ñ1EÔ1EÈÒ1IÐ1I˜?¨1Ô-Ð-Ètðñ ô ˆOð (¨Ô*ˆàÐÐ"3Ð";Ð@UÐ@]à $× 1Ò 1°&Ñ 9Ô 9Ðð Ÿ,š,Ø'Ø1Ø/Ø+Ø"/Ø#1ØØ/Ø!5Ø#ð 'ñ 
ô 
ˆð *¨!Ô,ˆàŒ;Ô*ð 	Gð .°´ÀÑ1EÑFˆOà—L’L Ñ1Ô1ˆ	àˆØÐÝ'°TÐ:Ñ:Ô:ˆHà—Y’Y˜yÔ/Ñ0Ô0ˆFØ�8˜IŸNšN¨2¨y¯~ª~¸bÑ/AÔ/AÑBÔBÀFÇKÂKÐPRÁOÄOÑTÔTˆDàð 	FØ�\ O°A°B°BÔ$7Ñ7¸/ÑIˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEåØØØ+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5Ô&GØ"1Ô"?Ø.Ô9ð

ñ 

ô 

ð 
	
r1   c                 ó,   — |                       |¦  «        S rY   )r3  )r,   rš  s     r0   Ú%prepare_decoder_input_ids_from_labelszBUMT5ForConditionalGeneration.prepare_decoder_input_ids_from_labels`  s   € Ø× Ò  Ñ(Ô(Ð(r1   ©NNNNNNNNNNNNN)rA   rB   rC   r×   rŽ  r�  r&   r|  rN  r   r(   r�  r‘  r’  r]  r[   r
   r“  r   r@   r¦  rD   rE   s   @r0   r   r   ”  sð  ø€ € € € € ðð ð  €Jà'6Ø'6Ø)ðð Ððð ð ð ð ð,ð ð ð:ð :ð :ð
 ð .2Ø37Ø59Ø:>Ø=AØ(,Ø26Ø:>Ø*.Ø!%Ø)-Ø,0Ø#'ðL
ð L
àÔ# dÑ*ðL
ð Ô)¨DÑ0ðL
ð !Ô+¨dÑ2ð	L
ð
 !&Ô 0°4Ñ 7ðL
ð ˜u U¤\Ô2Ô3°dÑ:ðL
ð  ™ðL
ð Ô(¨4Ñ/ðL
ð  %Ô0°4Ñ7ðL
ð Ô  4Ñ'ðL
ð ˜$‘;ðL
ð   $™;ðL
ð # T™kðL
ð ˜D‘[ðL
ð  
ˆuÔ Ô	! OÑ	3ð!L
ð L
ð L
ñ „^ðL
ð^)¸E¼Lð )ð )ð )ð )ð )ð )ð )ð )r1   r   c                   óÚ   ‡ — e Zd ZdZdZddiZˆ fd„Zd„ Zd„ Ze		 	 	 	 	 	 dd	e
j        dz  d
e
j        dz  de
j        dz  dedz  dedz  dedz  dee
j                 ez  fd„¦   «         Zˆ xZS )r!  aâ  
    Examples:

    ```python
    >>> from transformers import UMT5EncoderModel, AutoTokenizer

    >>> model = UMT5EncoderModel.from_pretrained("google/umt5-small")
    >>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
    >>> article = "UN Offizier sagt, dass weiter verhandelt werden muss in Syrien."
    >>> input_ids = tokenizer(article, return_tensors="pt").input_ids
    >>> outputs = model(input_ids)
    >>> hidden_state = outputs.last_hidden_state
    ```rj  rm  rk  c                 ó&  •— t          ¦   «                              |¦  «         t          j        |j        |j        ¦  «        | _        t          j        |¦  «        }d|_	        d|_
        t          |¦  «        | _        |                      ¦   «          d S )NF)r%   r&   r   r„   rC  rN   r$  rq  rr  rú   r[  r=  rs  rJ  )r,   rH   rw  r/   s      €r0   r&   zUMT5EncoderModel.__init__z  sy   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”l 6Ô#4°f´nÑEÔEˆŒåœ vÑ.Ô.ˆØ#(ˆÔ Ø,1ˆÔ)Ý  Ñ0Ô0ˆŒð 	�ŠÑÔÐÐÐr1   c                 ó   — | j         S rY   rz  r{  s    r0   r|  z%UMT5EncoderModel.get_input_embeddings‡  r}  r1   c                 óH   — || _         | j                             |¦  «         d S rY   )r$  rs  rN  rL  s     r0   rN  z%UMT5EncoderModel.set_input_embeddings‹  s%   € Ø$ˆŒØŒ×)Ò)¨.Ñ9Ô9Ð9Ð9Ð9r1   Nr  r°   rR  rû   rY  rZ  r‡   c                 ó\   — |�|n| j         j        }|                      ||||||¬¦  «        }|S )aQ  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. UMT5 is a model with relative position embeddings so you
            should be able to pad the inputs on both the right and the left.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for detail.

            To know more on how to prepare `input_ids` for pretraining take a look a [UMT5 Training](./umt5#training).

        Example:

        ```python
        >>> from transformers import AutoTokenizer, UMT5EncoderModel

        >>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
        >>> model = UMT5EncoderModel.from_pretrained("google/umt5-small")
        >>> input_ids = tokenizer(
        ...     "Studies have been shown that owning a dog is good for you", return_tensors="pt"
        ... ).input_ids  # Batch size 1
        >>> outputs = model(input_ids=input_ids)
        >>> last_hidden_states = outputs.last_hidden_state
        ```Nr„  )rH   rZ  rs  )	r,   r  r°   rR  rû   rY  rZ  rÈ   r�  s	            r0   r@   zUMT5EncoderModel.forward�  sJ   € ðF &1Ð%<�k�kÀ$Ä+ÔBYˆàŸ,š,ØØ)Ø'Ø/Ø!5Ø#ð 'ñ 
ô 
ˆð Ðr1   )NNNNNN)rA   rB   rC   r×   rŽ  r�  r&   r|  rN  r   r(   r�  r‘  r“  r]  r   r@   rD   rE   s   @r0   r!  r!  d  s$  ø€ € € € € ðð ð €Jð 	& ðÐð
ð 
ð 
ð 
ð 
ðð ð ð:ð :ð :ð ð .2Ø37Ø26Ø)-Ø,0Ø#'ð,ð ,àÔ# dÑ*ð,ð Ô)¨DÑ0ð,ð Ô(¨4Ñ/ð	,ð
   $™;ð,ð # T™kð,ð ˜D‘[ð,ð 
ˆuÔ Ô	! OÑ	3ð,ð ,ð ,ñ „^ð,ð ,ð ,ð ,ð ,r1   r!  z…
    UMT5 model with a sequence classification/head on top (a linear layer on top of the pooled output) e.g. for GLUE
    tasks.
    c                   ó:  ‡ — e Zd ZdgZdefˆ fd„Ze	 	 	 	 	 	 	 	 	 	 	 	 ddej        dz  dej	        dz  dej        dz  dej        dz  d	e
ej                 dz  d
ej        dz  dej        dz  dej        dz  dedz  dedz  dedz  dedz  deez  fd„¦   «         Zˆ xZS )ÚUMT5ForSequenceClassificationúFdecoder.block.0.layer.1.EncDecAttention.relative_attention_bias.weightrH   c                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S rY   )r%   r&   r  r  r  Úclassification_headrJ  rW   s     €r0   r&   z&UMT5ForSequenceClassification.__init__Ê  sS   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý$ VÑ,Ô,ˆÔÝ#9¸&Ñ#AÔ#AˆÔ ð 	�ŠÑÔÐÐÐr1   Nr  r°   r  r  r�  rR  r‚  rš  rú   rû   rY  rZ  r‡   c                 óº  — |�|n| j         j        }|�d}	|€|�t          d| j        j        › �¦  «        ‚|€(|€&|€t          d¦  «        ‚|                      |¦  «        }|                      ||||||||	|
||¬¦  «        }|d         }|                     | j         j	        ¦  «         
                    |j        ¦  «        }t          t          j        |                     d¦  «        ¦  «                             ¦   «         dk    d¦  «         |j        \  }}}||dd…f         }t          |j        d         |z  dk    d	¦  «         |                     |d
|¦  «        dd…d
dd…f         }|                      |¦  «        }d}|��ˆ| 
                    |j        ¦  «        }| j         j        €p| j         j        dk    rd| j         _        nS| j         j        dk    r7|j        t          j        k    s|j        t          j        k    rd| j         _        nd| j         _        | j         j        dk    r\t3          ¦   «         }| j         j        dk    r1 ||                     ¦   «         |                     ¦   «         ¦  «        }n“ |||¦  «        }n†| j         j        dk    rLt7          ¦   «         } ||                     d
| j         j        ¦  «        |                     d
¦  «        ¦  «        }n*| j         j        dk    rt9          ¦   «         } |||¦  «        }|s|f|dd…         z   }|�|f|z   n|S t;          |||j        |j        |j         |j!        |j"        |j#        |j$        ¬¦	  «	        S )a°  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. UMT5 is a model with relative position embeddings so
            you should be able to pad the inputs on both the right and the left.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for detail.

            [What are input IDs?](../glossary#input-ids)

            To know more on how to prepare `input_ids` for pretraining take a look a [UMT5 Training](./umt5#training).
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            UMT5 uses the `pad_token_id` as the starting token for `decoder_input_ids` generation. If `past_key_values`
            is used, optionally only the last `decoder_input_ids` have to be input (see `past_key_values`).

            To know more on how to prepare `decoder_input_ids` for pretraining take a look at [UMT5
            Training](./umt5#training).
        decoder_attention_mask (`torch.BoolTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
            be used by default.
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        NFz8Passing input embeddings is currently not supported for ú°If no `decoder_input_ids` or `decoder_inputs_embeds` are passed, `input_ids` cannot be `None`. Please pass either `input_ids` or `decoder_input_ids` or `decoder_inputs_embeds`.)
r°   r  r  r�  rR  r‚  rú   rû   rY  rZ  r   r   z7All examples must have the same number of <eos> tokens.z3Each example must contain at least one <eos> token.r4   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationrž  )%rH   rZ  ÚNotImplementedErrorr/   rA   r/  r3  r  ÚeqÚeos_token_idr6   r£   r   r(   Úunique_consecutiveÚsumÚnumelr·   rŠ   r±  Úproblem_typer  r;   r�   rØ   r   Úsqueezer   r   r   r¯   r‡  rˆ  rX  r‰  r®   rŠ  )r,   r  r°   r  r  r�  rR  r‚  rš  rú   rû   rY  rZ  rÈ   rã   r¡  Úeos_maskrÉ   Ú_r-   ÚselectedÚsentence_representationr   rŸ  r£  r¤  s                             r0   r@   z%UMT5ForSequenceClassification.forwardÒ  s±  € ð` &1Ð%<�k�kÀ$Ä+ÔBYˆØÐØˆIàÐ Ð!:Ý%ØdÈ4Ì>ÔKbÐdÐdñô ð ð Ð$Ð)>Ð)FØÐ Ý ðUñô ð ð
 !%× 1Ò 1°)Ñ <Ô <Ðà×"Ò"ØØ)Ø/Ø#9Ø+Ø'Ø"7ØØ/Ø!5Ø#ð #ñ 
ô 
ˆð " !œ*ˆà—<’< ¤Ô 8Ñ9Ô9×<Ò<¸_Ô=SÑTÔTˆåÝÔ$ X§\¢\°!¡_¤_Ñ5Ô5×;Ò;Ñ=Ô=ÀÒBØEñ	
ô 	
ð 	
ð &5Ô%:Ñ"ˆ
�A�{Ø" 8¨Q¨Q¨Q ;Ô/ˆÝØŒN˜1Ô Ñ+¨qÒ0ØAñ	
ô 	
ð 	
ð #+§-¢-°
¸BÀÑ"LÔ"LÈQÈQÈQÐPRÐTUÐTUÐTUÈXÔ"VÐØ×)Ò)Ð*AÑBÔBˆàˆØÑØ—Y’Y˜vœ}Ñ-Ô-ˆFØŒ{Ô'Ð/Ø”;Ô)¨QÒ.Ð.Ø/;�D”KÔ,Ð,Ø”[Ô+¨aÒ/Ð/°V´\ÅUÄZÒ5OÐ5OÐSYÔS_ÕchÔclÒSlÐSlØ/L�D”KÔ,Ð,à/K�D”KÔ,àŒ{Ô'¨<Ò7Ð7Ý"™9œ9�Ø”;Ô)¨QÒ.Ð.Ø#˜8 F§N¢NÑ$4Ô$4°f·n²nÑ6FÔ6FÑGÔG�D�Dà#˜8 F¨FÑ3Ô3�D�DØ”Ô)Ð-JÒJÐJÝ+Ñ-Ô-�Ø�x §¢¨B°´Ô0FÑ GÔ GÈÏÊÐUWÉÌÑYÔY��Ø”Ô)Ð-IÒIÐIÝ,Ñ.Ô.�Ø�x ¨Ñ/Ô/�Øð 	FØ�Y ¨¨¨¤Ñ,ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå.ØØØ#Ô3Ø")Ô"?Ø&Ô9Ø$Ô5Ø&-Ô&GØ")Ô"?Ø&Ô9ð

ñ 

ô 

ð 
	
r1   r�  )rA   rB   rC   Ú"_keys_to_ignore_on_load_unexpectedr    r&   r   r(   r�  r[   Úlistr‘  r“  r]  r   r@   rD   rE   s   @r0   r®  r®  À  s‹  ø€ € € € € ð +sÐ)sÐ&ð˜zð ð ð ð ð ð ð ð .2Ø.2Ø59Ø:>Ø:>Ø26Ø:>Ø*.Ø!%Ø)-Ø,0Ø#'ðF
ð F
àÔ# dÑ*ðF
ð œ tÑ+ðF
ð !Ô+¨dÑ2ð	F
ð
 !&Ô 0°4Ñ 7ðF
ð ˜eÔ/Ô0°4Ñ7ðF
ð Ô(¨4Ñ/ðF
ð  %Ô0°4Ñ7ðF
ð Ô  4Ñ'ðF
ð ˜$‘;ðF
ð   $™;ðF
ð # T™kðF
ð ˜D‘[ðF
ð 
Ð0Ñ	0ðF
ð F
ð F
ñ „^ðF
ð F
ð F
ð F
ð F
r1   r®  c                   óà   ‡ — e Zd ZdgZdefˆ fd„Ze	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  d	e	dz  d
e	dz  de	dz  de
ej                 ez  fd„¦   «         Zˆ xZS )r(  r¯  rH   c                 ó6  •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          j        |j        ¦  «        | _        t          j	        |j
        |j        ¦  «        | _        |                      ¦   «          d S rY   )r%   r&   r  r!  r  r   rR   r  rT   rM   r-   r  rJ  rW   s     €r0   r&   z#UMT5ForTokenClassification.__init__a  sz   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå+¨FÑ3Ô3ˆÔÝ”z &Ô";Ñ<Ô<ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr1   Nr  r°   rR  rš  rû   rY  rZ  r‡   c                 óº  — |�|n| j         j        }|                      ||||||¬¦  «        }	|	d         }
|                      |
¦  «        }
|                      |
¦  «        }d}|�Ft          ¦   «         } ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }|s||	dd…         f}|�|f|z   n|S t          |||	j	        |	j
        ¬¦  «        S )aB  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. UMT5 is a model with relative position embeddings so you
            should be able to pad the inputs on both the right and the left.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for detail.

            [What are input IDs?](../glossary#input-ids)

            To know more on how to prepare `input_ids` for pretraining take a look a [UMT5 Training](./umt5#training).
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the token classification loss. Indices should be in `[0, ..., config.num_labels - 1]`.
        N)r°   rR  rû   rY  rZ  r   r4   r3   )rŸ  r   r>   rW  )rH   rZ  r  rT   r  r   rŠ   r  r   r>   rW  )r,   r  r°   rR  rš  rû   rY  rZ  rÈ   rã   r>   r   rŸ  r£  r¤  s                  r0   r@   z"UMT5ForTokenClassification.forwardl  s  € ð6 &1Ð%<�k�kÀ$Ä+ÔBYˆà×"Ò"ØØ)Ø'Ø/Ø!5Ø#ð #ñ 
ô 
ˆð   œ
ˆØŸš ]Ñ3Ô3ˆØ—’ Ñ/Ô/ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬OÑ<Ô<¸f¿kºkÈ"¹o¼oÑNÔNˆDàð 	FØ˜g a¨ dœmÐ,ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r1   )NNNNNNN)rA   rB   rC   rÃ  r    r&   r   r(   r[   r“  r]  r   r@   rD   rE   s   @r0   r(  r(  \  s  ø€ € € € € à*rÐ)sÐ&ð	˜zð 	ð 	ð 	ð 	ð 	ð 	ð ð *.Ø.2Ø-1Ø&*Ø)-Ø,0Ø#'ð6
ð 6
à”< $Ñ&ð6
ð œ tÑ+ð6
ð ”| dÑ*ð	6
ð
 ”˜tÑ#ð6
ð   $™;ð6
ð # T™kð6
ð ˜D‘[ð6
ð 
ˆuŒ|Ô	Ð4Ñ	4ð6
ð 6
ð 6
ñ „^ð6
ð 6
ð 6
ð 6
ð 6
r1   r(  c                   ó|  ‡ — e Zd ZdddœZˆ fd„Zd„ Zd„ Ze	 	 	 	 	 	 	 	 	 	 	 	 	 ddej	        dz  dej
        dz  d	ej	        dz  d
ej        dz  deeej                          dz  dej	        dz  dej	        dz  dej
        dz  dej
        dz  dedz  dedz  dedz  dedz  deej
                 ez  fd„¦   «         Zˆ xZS )r"  rk  rl  c                 ó  •— t          ¦   «                              |¦  «         |j        | _        t	          j        |j        |j        ¦  «        | _        t          j	        |¦  «        }d|_
        d|_        t          |¦  «        | _        t          j	        |¦  «        }d|_
        |j        |_        t          |¦  «        | _        |j        | _        t	          j        |j        |j        ¦  «        | _        |                      ¦   «          d S rp  )r%   r&   rN   r—  r   r„   rC  r$  rq  rr  ru   rú   r=  rs  rt  rF  ru  r  rM   r  rJ  rv  s       €r0   r&   z!UMT5ForQuestionAnswering.__init__®  sÕ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØœˆŒå”l 6Ô#4°f´nÑEÔEˆŒåœ vÑ.Ô.ˆØ$)ˆÔ!Ø#(ˆÔ Ý  Ñ0Ô0ˆŒåœ vÑ.Ô.ˆØ$(ˆÔ!Ø$*Ô$=ˆÔ!Ý  Ñ0Ô0ˆŒà Ô+ˆŒÝœ) F¤N°FÔ4EÑFÔFˆŒð 	�ŠÑÔÐÐÐr1   c                 ó   — | j         S rY   rz  r{  s    r0   r|  z-UMT5ForQuestionAnswering.get_input_embeddingsÅ  r}  r1   c                 ó|   — || _         | j                             |¦  «         | j                             |¦  «         d S rY   r  rL  s     r0   rN  z-UMT5ForQuestionAnswering.set_input_embeddingsÉ  r€  r1   Nr  r°   r  r  r�  Ústart_positionsÚend_positionsrR  r‚  rú   rû   rY  rZ  r‡   c                 ó.  — |�|n| j         j        }|
�|
n| j         j        }
|�|�d}
|€(|	€&|€t          d¦  «        ‚|                      |¦  «        }|
�|
n| j         j        }
|�|n| j         j        }|€|                      ||||||¬¦  «        }ne|rct          |t          ¦  «        sNt          |d         t          |¦  «        dk    r|d         ndt          |¦  «        dk    r|d         nd¬¦  «        }|d         }|  	                    |||	d|||
|||¬	¦
  «
        }|d         }|  
                    |¦  «        }|                     dd
¬¦  «        \  }}|                     d
¦  «                             ¦   «         }|                     d
¦  «                             ¦   «         }d}|��|��t          |                     ¦   «         ¦  «        dk    r-|                     d
¦  «                             |j        ¦  «        }t          |                     ¦   «         ¦  «        dk    r-|                     d
¦  «                             |j        ¦  «        }|                     d¦  «        }|                     d|¦  «        }|                     d|¦  «        }t%          |¬¦  «        } |||¦  «        } |||¦  «        }||z   dz  }|s||f|dd…         z   |z   }|�|f|z   n|S t'          ||||j        |j        |j        |j        |j        |j        |j        ¬¦
  «
        S )a†  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. UMT5 is a model with relative position embeddings so
            you should be able to pad the inputs on both the right and the left.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for detail.

            [What are input IDs?](../glossary#input-ids)

            To know more on how to prepare `input_ids` for pretraining take a look a [UMT5 Training](./umt5#training).
        decoder_input_ids (`torch.LongTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Indices of decoder input sequence tokens in the vocabulary.

            Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are decoder input IDs?](../glossary#decoder-input-ids)

            UMT5 uses the `pad_token_id` as the starting token for `decoder_input_ids` generation. If `past_key_values`
            is used, optionally only the last `decoder_input_ids` have to be input (see `past_key_values`).

            To know more on how to prepare `decoder_input_ids` for pretraining take a look at [UMT5
            Training](./umt5#training).
        decoder_attention_mask (`torch.BoolTensor` of shape `(batch_size, target_sequence_length)`, *optional*):
            Default behavior: generate a tensor that ignores pad tokens in `decoder_input_ids`. Causal mask will also
            be used by default.
        NFr³  r„  r   r   r3   r…  r†  r4   r³   rœ  )
rŸ  Ústart_logitsÚ
end_logitsr¯   r‡  rˆ  rX  r‰  r®   rŠ  )rH   rZ  rú   r/  r3  rs  rZ   r   r‹  ru  r  Úsplitr¾  rÇ   r‰   r6   r£   rø   r   r   r¯   r>   rW  rX  rV  )r,   r  r°   r  r  r�  rÌ  rÍ  rR  r‚  rú   rû   rY  rZ  rÈ   r>   rŒ  r¡  r   rÏ  rÐ  Ú
total_lossÚignored_indexr£  Ú
start_lossÚend_lossr¤  s                              r0   r@   z UMT5ForQuestionAnswering.forwardÎ  s¡  € ð\ &1Ð%<�k�kÀ$Ä+ÔBYˆØ!*Ð!6�I�I¸D¼KÔ<Qˆ	ØÐ&¨=Ð+DØˆIð
 Ð$Ð)>Ð)FØÐ Ý ðUñô ð ð
 !%× 1Ò 1°)Ñ <Ô <Ðà!*Ð!6�I�I¸D¼KÔ<Qˆ	Ø%0Ð%<�k�kÀ$Ä+ÔBYˆð Ð"Ø"ŸlšlØ#Ø-Ø+Ø"3Ø%9Ø'ð +ñ ô ˆOˆOð ð 	¥¨O½_Ñ!MÔ!Mð 	Ý-Ø"1°!Ô"4Ý47¸Ñ4HÔ4HÈ1Ò4LÐ4L˜o¨aÔ0Ð0ÐRVÝ14°_Ñ1EÔ1EÈÒ1IÐ1I˜?¨1Ô-Ð-Ètðñ ô ˆOð (¨Ô*ˆð Ÿ,š,Ø'Ø1Ø/Ø Ø"/Ø#1ØØ/Ø!5Ø#ð 'ñ 
ô 
ˆð *¨!Ô,ˆà—’ Ñ1Ô1ˆØ#)§<¢<°°r <Ñ#:Ô#:Ñ ˆ�jØ#×+Ò+¨BÑ/Ô/×:Ò:Ñ<Ô<ˆØ×'Ò'¨Ñ+Ô+×6Ò6Ñ8Ô8ˆ
àˆ
ØÑ&¨=Ñ+Då�?×'Ò'Ñ)Ô)Ñ*Ô*¨QÒ.Ð.Ø"1×"9Ò"9¸"Ñ"=Ô"=×"@Ò"@ÀÔATÑ"UÔ"U�Ý�=×%Ò%Ñ'Ô'Ñ(Ô(¨1Ò,Ð,Ø -× 5Ò 5°bÑ 9Ô 9× <Ò <¸ZÔ=NÑ OÔ O�à(×-Ò-¨aÑ0Ô0ˆMØ-×3Ò3°A°}ÑEÔEˆOØ)×/Ò/°°=ÑAÔAˆMå'°]ÐCÑCÔCˆHØ!˜ ,°Ñ@Ô@ˆJØ�x 
¨MÑ:Ô:ˆHØ$ xÑ/°1Ñ4ˆJàð 	RØ" JÐ/°/À!À"À"Ô2EÑEÈÑWˆFØ/9Ð/E�Z�M FÑ*Ð*È6ÐQå2ØØ%Ø!Ø+Ô;Ø"1Ô"?Ø.Ô9Ø,Ô=Ø&5Ô&GØ"1Ô"?Ø.Ô9ð
ñ 
ô 
ð 	
r1   r§  )rA   rB   rC   r�  r&   r|  rN  r   r(   r�  r‘  r’  r]  r[   r“  r   r@   rD   rE   s   @r0   r"  r"  §  sÉ  ø€ € € € € ð (7Ø'6ðð Ðð
ð ð ð ð ð.ð ð ð:ð :ð :ð
 ð .2Ø37Ø59Ø:>Ø=AØ37Ø15Ø26Ø:>Ø!%Ø)-Ø,0Ø#'ðI
ð I
àÔ# dÑ*ðI
ð Ô)¨DÑ0ðI
ð !Ô+¨dÑ2ð	I
ð
 !&Ô 0°4Ñ 7ðI
ð ˜u U¤\Ô2Ô3°dÑ:ðI
ð Ô)¨DÑ0ðI
ð Ô'¨$Ñ.ðI
ð Ô(¨4Ñ/ðI
ð  %Ô0°4Ñ7ðI
ð ˜$‘;ðI
ð   $™;ðI
ð # T™kðI
ð ˜D‘[ðI
ð  
ˆuÔ Ô	!Ð$GÑ	Gð!I
ð I
ð I
ñ „^ðI
ð I
ð I
ð I
ð I
r1   r"  )r!  r   r"  r®  r(  r  r  )Br×   rq  r–   r(   r   Útorch.nnr   r   r   rQ  r   r  Úactivationsr	   Úcache_utilsr
   r   r   Ú
generationr   Úmasking_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   r   r   Úmodeling_utilsr   Úutilsr   r   r   r   r   r   Úconfiguration_umt5r    Ú
get_loggerrA   r~   ÚModuler"   rG   r`   rh   rr   rÚ   ræ   rí   r  r  r=  r  r   r!  r®  r(  r"  Ú__all__rS  r1   r0   ú<module>rã     s•  ðð Ð à €€€Ø €€€à €€€Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ )Ð )Ð )Ð )Ð )Ð )Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *ð 
ˆÔ	˜HÑ	%Ô	%€ð+ð +ð +ð +ð +�B”Iñ +ô +ð +ð4ð ð ð ð ˜œ	ñ ô ð ð.ð ð ð ð ˜RœYñ ô ð ð<ð ð ð ð �"”)ñ ô ð ð$o)ð o)ð o)ð o)ð o)�B”Iñ o)ô o)ð o)ðdð ð ð ð ˜RœYñ ô ð ð2ð ð ð ð ˜bœiñ ô ð ð6@ð @ð @ð @ð @Ð*ñ @ô @ð @ðHð ð ð ð ˜RœYñ ô ð ð$ ðk!ð k!ð k!ð k!ð k!˜/ñ k!ô k!ñ „ðk!ð\e
ð e
ð e
ð e
ð e
Ð#ñ e
ô e
ð e
ðP ðf
ð f
ð f
ð f
ð f
Ð#ñ f
ô f
ñ „ðf
ðR €ððñ ô ð
H)ð H)ð H)ð H)ð H)Ð#6¸ñ H)ô H)ñô ð
H)ðV ðXð Xð Xð Xð XÐ*ñ Xô Xñ „ðXðv €ððñ ô ðS
ð S
ð S
ð S
ð S
Ð$7ñ S
ô S
ñô ðS
ðl ðG
ð G
ð G
ð G
ð G
Ð!4ñ G
ô G
ñ „ðG
ðT ðp
ð p
ð p
ð p
ð p
Ð2ñ p
ô p
ñ „ðp
ðfð ð €€€r1   