§
    ‚Štj) ã                   óÜ  — 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( ddl)m*Z*  e'j+        e,¦  «        Z- G d„ dej.        ¦  «        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¦  «        Z6 G d!„ d"ej.        ¦  «        Z7e& G d#„ d$e"¦  «        ¦   «         Z8 G d%„ d&e8¦  «        Z9e& G d'„ d(e8¦  «        ¦   «         Z: e&d)¬*¦  «         G d+„ d,e8e¦  «        ¦   «         Z;e& G d-„ d.e8¦  «        ¦   «         Z< e&d/¬*¦  «         G d0„ d1e8¦  «        ¦   «         Z=e& G d2„ d3e8¦  «        ¦   «         Z>e& G d4„ d5e8¦  «        ¦   «         Z?g d6¢Z@dS )7zPyTorch mT5 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ÚloggingÚtorch_compilable_checké   )Ú	MT5Configc                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )ÚMT5LayerNormç�íµ ÷Æ°>c                 ó¬   •— t          ¦   «                              ¦   «          t          j        t	          j        |¦  «        ¦  «        | _        || _        dS )zd
        Construct a layernorm module in the MT5 style. No bias and no subtraction of mean.
        N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizeÚepsÚ	__class__s      €úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/mt5/modeling_mt5.pyr%   zMT5LayerNorm.__init__0   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      r/   ÚforwardzMT5LayerNorm.forward8   s–   € ð !×#Ò#¥E¤MÑ2Ô2×6Ò6°qÑ9Ô9×>Ò>¸rÈ4Ð>ÑPÔPˆØ%­¬°H¸tÔ?TÑ4TÑ(UÔ(UÑUˆð Œ;Ô¥¤µ´Ð ?Ð?Ð?Ø)×,Ò,¨T¬[Ô->Ñ?Ô?ˆMàŒ{˜]Ñ*Ð*r0   )r"   )Ú__name__Ú
__module__Ú__qualname__r%   r?   Ú__classcell__©r.   s   @r/   r!   r!   /   sL   ø€ € € € € ð$ð $ð $ð $ð $ð $ð+ð +ð +ð +ð +ð +ð +r0   r!   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚMT5DenseActDenseÚ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+   rG   r.   s     €r/   r%   zMT5DenseActDense.__init__J   sx   ø€ Ý‰Œ×ÒÑÔÐÝ”)˜FœN¨F¬K¸eÐDÑDÔDˆŒÝ”)˜FœK¨¬¸eÐDÑDÔDˆŒÝ”z &Ô"5Ñ6Ô6ˆŒÝ˜&Ô-Ô.ˆŒˆˆr0   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)rO   rU   rS   Ú
isinstancerP   r)   r'   ÚTensorr:   Úint8r5   ©r+   r=   s     r/   r?   zMT5DenseActDense.forwardQ   s¨   € ØŸš Ñ.Ô.ˆØŸš Ñ/Ô/ˆØŸš ]Ñ3Ô3ˆå�t”w”~¥u¤|Ñ4Ô4ð	CàÔ# t¤w¤~Ô';Ò;Ð;Ø””Ô$­¬
Ò2Ð2à)×,Ò,¨T¬W¬^Ô-AÑBÔBˆMØŸš Ñ.Ô.ˆØÐr0   ©r@   rA   rB   r   r%   r?   rC   rD   s   @r/   rF   rF   I   sS   ø€ € € € € ð/˜yð /ð /ð /ð /ð /ð /ðð ð ð ð ð ð r0   rF   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )ÚMT5DenseGatedActDenserG   c                 ó–  •— t          ¦   «                              ¦   «          t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j	        |j
        ¦  «        | _        t          |j                 | _        d S rI   )r$   r%   r   rL   rM   rN   Úwi_0Úwi_1rP   rQ   rR   rS   r	   rT   rU   rV   s     €r/   r%   zMT5DenseGatedActDense.__init__a   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ˆŒÝ˜&Ô-Ô.ˆŒˆˆr0   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 rX   )rU   ra   rb   rS   rY   rP   r)   r'   rZ   r:   r[   r5   )r+   r=   Úhidden_geluÚhidden_linears       r/   r?   zMT5DenseGatedActDense.forwardi   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àŸš Ñ.Ô.ˆØÐr0   r]   rD   s   @r/   r_   r_   `   sS   ø€ € € € € ð/˜yð /ð /ð /ð /ð /ð /ðð ð ð ð ð ð r0   r_   c                   ó*   ‡ — e Zd Zdefˆ fd„Zd„ Zˆ xZS )Ú
MT5LayerFFrG   c                 ó$  •— t          ¦   «                              ¦   «          |j        rt          |¦  «        | _        nt          |¦  «        | _        t          |j        |j        ¬¦  «        | _	        t          j        |j        ¦  «        | _        d S )N©r-   )r$   r%   Úis_gated_actr_   ÚDenseReluDenserF   r!   rM   Úlayer_norm_epsilonÚ
layer_normr   rQ   rR   rS   rV   s     €r/   r%   zMT5LayerFF.__init__   sx   ø€ Ý‰Œ×ÒÑÔÐØÔð 	;Ý"7¸Ñ"?Ô"?ˆDÔÐå"2°6Ñ":Ô":ˆDÔå& v¤~¸6Ô;TÐUÑUÔUˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr0   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }||                      |¦  «        z   }|S rX   )rm   rk   rS   )r+   r=   Úforwarded_statess      r/   r?   zMT5LayerFF.forward‰   sF   € ØŸ?š?¨=Ñ9Ô9ÐØ×.Ò.Ð/?Ñ@Ô@ÐØ%¨¯ªÐ5EÑ(FÔ(FÑFˆØÐr0   r]   rD   s   @r/   rg   rg   ~   sS   ø€ € € € € ð7˜yð 7ð 7ð 7ð 7ð 7ð 7ðð ð ð ð ð ð r0   rg   c                   óf   ‡ — e Zd Z	 	 ddededz  fˆ fd„Zedd	„¦   «         Zdd„Z	 	 	 	 	 dd„Z	ˆ xZ
S )ÚMT5AttentionFNrG   Ú	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| _        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.FrJ   )r$   r%   Ú
is_decoderÚhas_relative_attention_biasÚrelative_attention_num_bucketsÚrelative_attention_max_distancerM   Úd_kvÚkey_value_proj_dimÚ	num_headsÚn_headsrR   rS   Ú	inner_dimrr   ÚloggerÚwarning_oncer.   r@   r   rL   ÚqÚkÚvÚoÚ	EmbeddingÚrelative_attention_biasÚgradient_checkpointing©r+   rG   ru   rr   r.   s       €r/   r%   zMT5Attention.__init__’   si  ø€ õ 	‰Œ×ÒÑÔÐØ Ô+ˆŒØ+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Ô(à&+ˆÔ#Ð#Ð#r0   Té    é€   c                 óP  — d}|rC|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   r2   r   )r5   r'   ÚlongÚabsÚminÚ
zeros_likeÚlogÚfloatÚmathÚ	full_likeÚwhere)Úrelative_positionÚbidirectionalÚnum_bucketsÚmax_distanceÚrelative_bucketsÚ	max_exactÚis_smallÚrelative_position_if_larges           r/   Ú_relative_position_bucketz&MT5Attention._relative_position_bucket´   s>  € ð, ÐØð 	cØ˜AÑˆKØÐ!2°QÒ!6× :Ò :½5¼:Ñ FÔ FÈÑ TÑTÐÝ %¤	Ð*;Ñ <Ô <ÐÐå!&¤Ð+<½eÔ>NÐO`Ñ>aÔ>aÑ!bÔ!bÐ bÐð   1Ñ$ˆ	Ø$ yÒ0ˆð &/ÝŒIÐ'×-Ò-Ñ/Ô/°)Ñ;Ñ<Ô<ÝŒh�| iÑ/Ñ0Ô0ñ1à˜YÑ&ñ(÷ Š"�UŒZ‰.Œ.ñ	&Ð"õ
 &+¤YØ&­¬Ð8RÐT_ÐbcÑTcÑ(dÔ(dñ&
ô &
Ð"ð 	�EœK¨Ð2CÐE_Ñ`Ô`Ñ`ÐØÐr0   r   c                 ó¸  — |€| j         j        j        }t          j        |t          j        |¬¦  «        dd…df         |z   }t          j        |t          j        |¬¦  «        ddd…f         }||z
  }|                      || j         | j        | j	        ¬¦  «        }|                       |¦  «        }	|	 
                    g d¢¦  «                             d¦  «        }	|	S )z%Compute binned relative position biasN)r:   Údevice)r”   r•   r–   )r2   r   r   r   )r„   r)   r�   r'   ÚarangerŠ   r›   rt   rv   rw   ÚpermuteÚ	unsqueeze)
r+   Úquery_lengthÚ
key_lengthr�   Úpast_seen_tokensÚcontext_positionÚmemory_positionr“   Úrelative_position_bucketÚvaluess
             r/   Úcompute_biaszMT5Attention.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ØØ#œÐ.ØÔ;ØÔ=ð	 $Bñ $
ô $
Ð ð ×-Ò-Ð.FÑGÔGˆØ—’ 	 	 	Ñ*Ô*×4Ò4°QÑ7Ô7ˆØˆr0   c                 ó�  — |j         dd…         }g |¢d‘| j        ‘R }	|�|                     | j        ¦  «        nd}
t	          |
t
          j        ¦  «        r|
                     ¦   «         n|
}
|du}|                      |¦  «         	                    |	¦  «         
                    dd¦  «        }d}t	          |t          ¦  «        r1|j                             | j        ¦  «        }|r|j        }n
|j        }n|}|r|n|}|r3|�1|r/|j        | j                 j        }|j        | j                 j        }nÚg |j         dd…         ¢d‘| j        ‘R }|                      |¦  «         	                    |¦  «         
                    dd¦  «        }|                      |¦  «         	                    |¦  «         
                    dd¦  «        }|�E|                     ||| j        ¦  «        \  }}|r$t	          |t          ¦  «        rd|j        | j        <   t          j        || 
                    dd¦  «        ¦  «        }|€ª|j         d	         }| j        sLt          j        d|j         d         |d         |f|j        |j        ¬
¦  «        }| j        r| j        rd|_        n$|                      |d         ||j        |
¬¦  «        }|�$|dd…dd…dd…d|j         d	         …f         }||z   }|}||z  }t>          j          !                    | "                    ¦   «         d¬¦  «         #                    |¦  «        }t>          j          $                    || j$        | j        ¬¦  «        }t          j        ||¦  «        }| 
                    dd¦  «         %                    ¦   «         } |j&        g |¢d‘R Ž }|  '                    |¦  «        }||f}|r||fz   }|S )z€
        Self-attention (if key_value_states is None) or attention over source sentence (provided by key_value_states).
        Nr3   r   r   r2   FTr   éþÿÿÿ)r�   r:   )r�   r£   ©Údim)ÚpÚtraining)(Úshapery   Úget_seq_lengthrr   rY   r'   rZ   Úcloner   ÚviewÚ	transposer   Ú
is_updatedÚgetÚcross_attention_cacheÚself_attention_cacheÚlayersÚkeysr§   r€   r�   ÚupdateÚmatmulru   Úzerosr�   r:   r…   r®   Úrequires_gradr¨   r   Ú
functionalÚsoftmaxr�   Útype_asrS   Ú
contiguousÚreshaper‚   )r+   r=   ÚmaskÚkey_value_statesÚposition_biasÚpast_key_valuesÚoutput_attentionsÚkwargsÚinput_shapeÚhidden_shaper£   Úis_cross_attentionÚquery_statesr´   Úcurr_past_key_valuesÚcurrent_statesÚ
key_statesÚvalue_statesÚkv_shapeÚscoresr¢   Úcausal_maskÚposition_bias_maskedÚattn_weightsÚattn_outputÚoutputss                             r/   r?   zMT5Attention.forwardõ   s  € ð $Ô)¨#¨2¨#Ô.ˆØB˜ÐB bÐB¨$Ô*AÐBÐBˆØM\ÐMh˜?×9Ò9¸$¼.ÑIÔIÐIÐnoÐå7AÐBRÕTYÔT`Ñ7aÔ7aÐwÐ+×1Ò1Ñ3Ô3Ð3ÐgwÐð .°TÐ9Ðà—v’v˜mÑ,Ô,×1Ò1°,Ñ?Ô?×IÒIÈ!ÈQÑOÔOˆð ˆ
Ý�oÕ':Ñ;Ô;ð 	3Ø(Ô3×7Ò7¸¼ÑGÔGˆJØ!ð Là'6Ô'LÐ$Ð$à'6Ô'KÐ$Ð$à#2Ð à-?ÐRÐ)Ð)À]ˆØð 	F /Ð"=À*Ð"=à-Ô4°T´^ÔDÔIˆJØ/Ô6°t´~ÔFÔMˆLˆLàP˜Ô-¨c¨r¨cÔ2ÐP°BÐP¸Ô8OÐPÐPˆHØŸš Ñ/Ô/×4Ò4°XÑ>Ô>×HÒHÈÈAÑNÔNˆJØŸ6š6 .Ñ1Ô1×6Ò6°xÑ@Ô@×JÒJÈ1ÈaÑPÔPˆ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ˆàÐ Ø#Ô)¨"Ô-ˆJØÔ3ð 	Ý %¤Ø˜Ô*¨1Ô-¨{¸1¬~¸zÐJÐSYÔS`ÐhnÔhtð!ñ !ô !�ð Ô.ð 7°4´=ð 7Ø26�MÔ/øà $× 1Ò 1Ø ”N J°v´}ÐWgð !2ñ !ô !�ð ÐØ" 1 1 1 a a a¨¨¨Ð,B¨jÔ.>¸rÔ.BÐ,BÐ#BÔC�Ø -°Ñ ;�à,ÐØÐ&Ñ&ˆõ ”}×,Ò,¨V¯\ª\©^¬^ÀÐ,ÑDÔD×LÒLÈVÑTÔTˆÝ”}×,Ò,¨\¸T¼\ÐTXÔTaÐ,ÑbÔbˆå”l <°Ñ>Ô>ˆà!×+Ò+¨A¨qÑ1Ô1×<Ò<Ñ>Ô>ˆØ)�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;ˆØ—f’f˜[Ñ)Ô)ˆà Ð.ˆàð 	0Ø  Ñ/ˆGØˆr0   ©FN)Tr‡   rˆ   )Nr   )NNNNF)r@   rA   rB   r   Úintr%   Ústaticmethodr›   r¨   r?   rC   rD   s   @r/   rq   rq   ‘   sÃ   ø€ € € € € ð %*Ø $ð	 ,ð  ,àð ,ð ˜‘:ð	 ,ð  ,ð  ,ð  ,ð  ,ð  ,ðD ð- ð - ð - ñ „\ð- ð^ð ð ð ð( ØØØØð[ð [ð [ð [ð [ð [ð [ð [r0   rq   c                   ó>   ‡ — e Zd Zddedz  fˆ fd„Z	 	 	 	 	 dd„Zˆ xZS )ÚMT5LayerSelfAttentionFNrr   c                 óò   •— t          ¦   «                              ¦   «          t          |||¬¦  «        | _        t	          |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S )N©ru   rr   ri   )r$   r%   rq   ÚSelfAttentionr!   rM   rl   rm   r   rQ   rR   rS   r†   s       €r/   r%   zMT5LayerSelfAttention.__init__U  sl   ø€ Ý‰Œ×ÒÑÔÐÝ)ØÐ0KÐW`ð
ñ 
ô 
ˆÔõ ' v¤~¸6Ô;TÐUÑUÔUˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr0   c                 ó¾   — |                       |¦  «        }|                      ||||||¬¦  «        }	||                      |	d         ¦  «        z   }|f|	dd …         z   }
|
S )N)rÃ   rÅ   rÆ   Ú	use_cacherÇ   r   r   )rm   rß   rS   )r+   r=   Úattention_maskrÅ   rÆ   rá   rÇ   rÈ   Únormed_hidden_statesÚattention_outputr×   s              r/   r?   zMT5LayerSelfAttention.forward]  s}   € ð  $Ÿš¨}Ñ=Ô=ÐØ×-Ò-Ø ØØ'Ø+ØØ/ð .ñ 
ô 
Ðð &¨¯ªÐ5EÀaÔ5HÑ(IÔ(IÑIˆØ Ð"Ð%5°a°b°bÔ%9Ñ9ˆØˆr0   rØ   )NNNFF©r@   rA   rB   rÙ   r%   r?   rC   rD   s   @r/   rÜ   rÜ   T  ss   ø€ € € € € ð7ð 7ÈSÐSWÉZð 7ð 7ð 7ð 7ð 7ð 7ð ØØØØðð ð ð ð ð ð ð r0   rÜ   c                   ó<   ‡ — e Zd Zddedz  fˆ fd„Z	 	 	 	 dd„Zˆ xZS )ÚMT5LayerCrossAttentionNrr   c                 óò   •— t          ¦   «                              ¦   «          t          |d|¬¦  «        | _        t	          |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S )NFrÞ   ri   )r$   r%   rq   ÚEncDecAttentionr!   rM   rl   rm   r   rQ   rR   rS   )r+   rG   rr   r.   s      €r/   r%   zMT5LayerCrossAttention.__init__w  sc   ø€ Ý‰Œ×ÒÑÔÐÝ+¨FÐPUÐajÐkÑkÔkˆÔÝ& v¤~¸6Ô;TÐUÑUÔUˆŒÝ”z &Ô"5Ñ6Ô6ˆŒˆˆr0   Fc                 ó¾   — |                       |¦  «        }|                      ||||||¬¦  «        }	||                      |	d         ¦  «        z   }
|
f|	dd …         z   }|S )N)rÃ   rÄ   rÅ   rÆ   rÇ   r   r   )rm   ré   rS   )r+   r=   rÄ   râ   rÅ   rÆ   rÇ   rÈ   rã   rä   Úlayer_outputr×   s               r/   r?   zMT5LayerCrossAttention.forward}  s|   € ð  $Ÿš¨}Ñ=Ô=ÐØ×/Ò/Ø ØØ-Ø'Ø+Ø/ð 0ñ 
ô 
Ðð % t§|¢|Ð4DÀQÔ4GÑ'HÔ'HÑHˆØ�/Ð$4°Q°R°RÔ$8Ñ8ˆØˆr0   rX   )NNNFrå   rD   s   @r/   rç   rç   v  so   ø€ € € € € ð7ð 7¨#°©*ð 7ð 7ð 7ð 7ð 7ð 7ð ØØØðð ð ð ð ð ð ð r0   rç   c                   óF   ‡ — e Zd Zddedz  fˆ fd„Z	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )	ÚMT5BlockFNrr   c                 ó’  •— t          ¦   «                              ¦   «          |j        | _        t          j        ¦   «         | _        | j                             t          |||¬¦  «        ¦  «         | j        r)| j                             t          ||¬¦  «        ¦  «         | j                             t          |¦  «        ¦  «         d S )NrÞ   )rr   )
r$   r%   rt   r   Ú
ModuleListÚlayerÚappendrÜ   rç   rg   r†   s       €r/   r%   zMT5Block.__init__—  s³   ø€ Ý‰Œ×ÒÑÔÐØ Ô+ˆŒÝ”]‘_”_ˆŒ
ØŒ
×ÒÝ! &ÐFaÐmvÐwÑwÔwñ	
ô 	
ð 	
ð Œ?ð 	SØŒJ×ÒÕ4°VÀyÐQÑQÔQÑRÔRÐRàŒ
×Ò�* VÑ,Ô,Ñ-Ô-Ð-Ð-Ð-r0   Tc                 óâ  —  | j         d         ||||||	¬¦  «        }|d         }|dd …         }|j        t          j        k    r�t          j        t          j        |¦  «                             ¦   «         t          j        |j        ¦  «        j        dz
  t          j        |j        ¦  «        j        ¦  «        }t          j	        || |¬¦  «        }| j
        o|d u}|rÓ | j         d         ||||||	¬¦  «        }|d         }|j        t          j        k    r�t          j        t          j        |¦  «                             ¦   «         t          j        |j        ¦  «        j        dz
  t          j        |j        ¦  «        j        ¦  «        }t          j	        || |¬¦  «        }||dd …         z   } | j         d         |¦  «        }|j        t          j        k    r�t          j        t          j        |¦  «                             ¦   «         t          j        |j        ¦  «        j        dz
  t          j        |j        ¦  «        j        ¦  «        }t          j	        || |¬¦  «        }|f}||z   S )Nr   )râ   rÅ   rÆ   rá   rÇ   r   iè  )rŒ   Úmax)rÄ   râ   rÅ   rÆ   rÇ   r3   )rð   r:   r'   r;   r’   ÚisinfÚanyÚfinforó   Úclamprt   )r+   r=   râ   rÅ   Úencoder_hidden_statesÚencoder_attention_maskÚencoder_decoder_position_biasrÆ   rá   rÇ   Úreturn_dictrÈ   Úself_attention_outputsÚattention_outputsÚclamp_valueÚdo_cross_attentionÚcross_attention_outputsr×   s                     r/   r?   zMT5Block.forward£  so  € ð "/ ¤¨A¤ØØ)Ø'Ø+ØØ/ð"
ñ "
ô "
Ðð /¨qÔ1ˆØ2°1°2°2Ô6Ðð Ô¥%¤-Ò/Ð/Ýœ+Ý”˜MÑ*Ô*×.Ò.Ñ0Ô0Ý”˜MÔ/Ñ0Ô0Ô4°tÑ;Ý”˜MÔ/Ñ0Ô0Ô4ñô ˆKõ
 "œK¨¸K¸<È[ÐYÑYÔYˆMà!œ_ÐRÐ1FÈdÐ1RÐØð 	PØ&3 d¤j°¤mØØ!6Ø5Ø;Ø /Ø"3ð'ñ 'ô 'Ð#ð 4°AÔ6ˆMð Ô"¥e¤mÒ3Ð3Ý#œkÝ”K Ñ.Ô.×2Ò2Ñ4Ô4Ý”K Ô 3Ñ4Ô4Ô8¸4Ñ?Ý”K Ô 3Ñ4Ô4Ô8ñô �õ
 !&¤¨MÀ¸|ÐQ\Ð ]Ñ ]Ô ]�ð !2Ð4KÈAÈBÈBÔ4OÑ OÐð '˜œ
 2œ }Ñ5Ô5ˆð Ô¥%¤-Ò/Ð/Ýœ+Ý”˜MÑ*Ô*×.Ò.Ñ0Ô0Ý”˜MÔ/Ñ0Ô0Ô4°tÑ;Ý”˜MÔ/Ñ0Ô0Ô4ñô ˆKõ
 "œK¨¸K¸<È[ÐYÑYÔYˆMà Ð"ˆð Ð'Ñ'ð	
r0   rØ   )	NNNNNNFFTrå   rD   s   @r/   rí   rí   –  s‡   ø€ € € € € ð
.ð 
.ÈSÐSWÉZð 
.ð 
.ð 
.ð 
.ð 
.ð 
.ð ØØ"Ø#Ø&*ØØØØðJ
ð J
ð J
ð J
ð J
ð J
ð J
ð J
r0   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 )ÚMT5ClassificationHeadz-Head for sentence-level classification tasks.rG   c                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        ¬¦  «        | _        t          j        |j        |j	        ¦  «        | _
        d S )N)r­   )r$   r%   r   rL   rM   ÚdenserQ   Úclassifier_dropoutrS   Ú
num_labelsÚout_projrV   s     €r/   r%   zMT5ClassificationHead.__init__ô  sc   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vœ~¨v¬~Ñ>Ô>ˆŒ
Ý”z FÔ$=Ð>Ñ>Ô>ˆŒÝœ	 &¤.°&Ô2CÑDÔDˆŒˆˆr0   r=   Úreturnc                 óÖ   — |                       |¦  «        }|                      |¦  «        }t          j        |¦  «        }|                       |¦  «        }|                      |¦  «        }|S rX   )rS   r  r'   Útanhr  r\   s     r/   r?   zMT5ClassificationHead.forwardú  s[   € ØŸš ]Ñ3Ô3ˆØŸ
š
 =Ñ1Ô1ˆÝœ
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš mÑ4Ô4ˆØÐr0   )
r@   rA   rB   Ú__doc__r   r%   r'   rZ   r?   rC   rD   s   @r/   r  r  ñ  sw   ø€ € € € € Ø7Ð7ðE˜yð Eð Eð Eð Eð Eð Eð U¤\ð °e´lð ð ð ð ð ð ð ð r0   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 )	ÚMT5PreTrainedModelrG   ÚtransformerTrí   rP   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       r/   r  zMT5PreTrainedModel.dummy_inputs  s=   € å”L¥Ñ.Ô.ˆ	Ý”\¥*Ñ-Ô-ˆ
à!*Ø"Ø&0ð
ð 
ˆð
 Ðr0   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 weightsg      ð?g        )r8   ÚstdÚlm_headÚ
qa_outputsg      à¿Ú
classifierrK   N)+r$   Ú_init_weightsrG   Úinitializer_factorrY   r!   ÚinitÚ	constant_r)   ÚMT5ModelÚMT5ForConditionalGenerationÚMT5EncoderModelÚMT5ForQuestionAnsweringÚnormal_ÚsharedÚhasattrÚtie_word_embeddingsr  r  rM   Úzeros_rK   ÚMT5ForTokenClassificationr  r  r  r  rF   rO   rP   rN   r_   ra   rb   rq   rx   rz   r   r€   r�   r‚   ru   r„   )r+   ÚmoduleÚfactorrM   ry   r{   r.   s         €r/   r  z MT5PreTrainedModel._init_weights  sí  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ø”Ô/ˆÝ�f�lÑ+Ô+ð 1	pÝŒN˜6œ=¨&°3©,Ñ7Ô7Ð7Ð7Ð7ÝØÝÕ2µOÕE\Ð]ñ
ô 
ð /	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õ ˜Õ 9Ñ:Ô:ð %	pÝ�v˜|Ñ,Ô,ð 4Ý”˜VÔ.Ô5¸CÀVÈcÁ\ÐRÑRÔRÐRÝ”˜FÔ-Ô2Ñ3Ô3Ð3Ð3Ð3ð4ð 4õ ˜Õ 5Ñ6Ô6ð !	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å˜Õ 0Ñ1Ô1ð 	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å˜Õ 5Ñ6Ô6ñ 	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r0   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 MT5 it is usually set to the pad_token_id. See MT5 docs for more information..r3   r   ).r   z1self.model.config.pad_token_id has to be defined.éœÿÿÿ)rG   Údecoder_start_token_idÚpad_token_idÚ
ValueErrorÚ	new_zerosr¯   r±   Úmasked_fill_)r+   r  r-  r.  Úshifted_input_idss        r/   Ú_shift_rightzMT5PreTrainedModel._shift_rightQ  sº   € Ø!%¤Ô!CÐØ”{Ô/ˆà!Ð)Ýð5ñô ð ð
 &×/Ò/°	´Ñ@Ô@ÐØ%.¨s°C°R°C¨xÔ%8×%>Ò%>Ñ%@Ô%@Ð˜#˜q˜r˜r˜'Ñ"Ø$:Ð˜&Ñ!àÐÝÐPÑQÔQÐQà×&Ò&Ð'8¸DÒ'@À,ÑOÔOÐOà Ð r0   )r@   rA   rB   r   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_can_compile_fullgraphÚ_no_split_modulesÚ_keep_in_fp32_modulesÚpropertyr  r'   Úno_gradr  r3  rC   rD   s   @r/   r  r    s¬   ø€ € € € € € ð ÐÐÑØ%ÐØ&*Ð#Ø!Ðà#˜ÐØ!˜FÐàðð ñ „Xðð €U„]�_„_ð5pð 5pð 5pð 5pñ „_ð5pðn!ð !ð !ð !ð !ð !ð !r0   r  c                   ó@   ‡ — e Zd Zˆ fd„Zd„ Z	 	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚMT5Stackc                 óÌ  •‡— t          ¦   «                              ‰¦  «         t          j        ‰j        ‰j        ¦  «        | _        ‰j        | _        t          j        ˆfd„t          ‰j
        ¦  «        D ¦   «         ¦  «        | _        t          ‰j        ‰j        ¬¦  «        | _        t          j        ‰j        ¦  «        | _        |                      ¦   «          d| _        d S )Nc           	      óV   •— g | ]%}t          ‰t          |d k    ¦  «        |¬¦  «        ‘Œ&S )r   rÞ   )rí   Úbool)Ú.0ÚirG   s     €r/   ú
<listcomp>z%MT5Stack.__init__.<locals>.<listcomp>p  s4   ø€ ÐwÐwÐwÐYZ�X�f½$¸qÀAºv¹,¼,ÐRSÐTÑTÔTÐwÐwÐwr0   ri   F)r$   r%   r   rƒ   Ú
vocab_sizerM   Úembed_tokensrt   rï   ÚrangeÚ
num_layersÚblockr!   rl   Úfinal_layer_normrQ   rR   rS   Ú	post_initr…   rV   s    `€r/   r%   zMT5Stack.__init__i  sÆ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð åœL¨Ô):¸F¼NÑKÔKˆÔØ Ô+ˆŒå”]ØwÐwÐwÐwÕ^cÐdjÔduÑ^vÔ^vÐwÑwÔwñ
ô 
ˆŒ
õ !-¨V¬^ÀÔAZÐ [Ñ [Ô [ˆÔÝ”z &Ô"5Ñ6Ô6ˆŒð 	�ŠÑÔÐØ&+ˆÔ#Ð#Ð#r0   c                 ó   — || _         d S rX   )rE  ©r+   Únew_embeddingss     r/   Úset_input_embeddingszMT5Stack.set_input_embeddingsy  s   € Ø*ˆÔÐÐr0   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 }| j         j        r5t#          | j         ||t%          |t          ¦  «        r|j        n|¬¦  «        }nt)          | j         ||¬¦  «        }d }| j        r|�t)          | j         |||¬¦  «        }|	rdnd }|rdnd }|r	| j        rdnd }d }d }|                      |¦  «        }| j        D ]e}|	r||fz   } |||||||||||
¬¦
  «
        }|d         }|d         }| j        r|�||rdnd         }|r||d         fz   }| j        r||d         fz   }Œf|                      |¦  «        }|                      |¦  «        }|	r||fz   }|
st1          d„ |||||fD ¦   «         ¦  «        S t3          |||||¬¦  «        S )NÚdecoder_Ú zYou cannot specify both zinput_ids and zinputs_embeds at the same timer3   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)rG   )rG   rR  râ   rÆ   )rG   rR  râ   )rG   rR  râ   rø   © )rÆ   rá   rÇ   rû   r   r   r   r2   é   c              3   ó   K  — | ]}|®|V — Œ	d S rX   rS  )rA  r�   s     r/   ú	<genexpr>z#MT5Stack.forward.<locals>.<genexpr>  s4   è è € ð 
ð 
àð �=ð ð !�=�=�=ð
ð 
r0   )Úlast_hidden_staterÆ   r=   Ú
attentionsÚcross_attentions)rG   rá   rÇ   Úoutput_hidden_statesrû   rt   r/  Úsizer²   r…   r®   r}   r~   rE  Úis_encoder_decoderr   r   r   rY   r·   r   rS   rH  rI  Útupler   )r+   r  râ   rø   rù   rR  rÆ   rá   rÇ   rZ  rû   rÈ   Úerr_msg_prefixrÉ   Ú
batch_sizeÚ
seq_lengthÚencoder_extended_attention_maskÚall_hidden_statesÚall_attentionsÚall_cross_attentionsrÅ   rú   r=   Úlayer_moduleÚlayer_outputss                            r/   r?   zMT5Stack.forward|  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àŒ;Ô!ð 	Ý/Ø”{Ø+Ø-å˜oÕ/BÑCÔCð!% Ô DÐ Dà$ðñ ô ˆNˆNõ 7Ø”{Ø+Ø-ðñ ô ˆNð +/Ð'ØŒ?ð 	Ð4Ð@Ý.GØ”{Ø+Ø5Ø&;ð	/ñ /ô /Ð+ð #7Ð@˜B˜B¸DÐØ0Ð:˜˜°dˆØ&7ÐV¸D¼OÐV˜r˜rÐRVÐØˆØ(,Ð%àŸš ]Ñ3Ô3ˆà œJð 	Vð 	VˆLØ#ð IØ$5¸Ð8HÑ$HÐ!à(˜LØØØØ%Ø/Ø-Ø /Ø#Ø"3Ø'ðñ ô ˆMð *¨!Ô,ˆMð
 *¨!Ô,ˆMØŒð ]Ð#8Ð#DØ0=ÐCTÐ>[¸a¸aÐZ[Ô0\Ð-à ð VØ!/°=ÀÔ3CÐ2EÑ!E�Ø”?ð VØ+?À=ÐQRÔCSÐBUÑ+UÐ(øà×-Ò-¨mÑ<Ô<ˆØŸš ]Ñ3Ô3ˆð  ð 	EØ 1°]Ð4DÑ DÐàð 	Ýð 
ð 
ð "Ø#Ø%Ø"Ø(ðð
ñ 
ô 
ñ 
ô 
ð 
õ 9Ø+Ø+Ø+Ø%Ø1ð
ñ 
ô 
ð 	
r0   )
NNNNNNNNNN)r@   rA   rB   r%   rN  r?   rC   rD   s   @r/   r=  r=  h  sƒ   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð +ð +ð +ð
 ØØ"Ø#ØØØØØ!Øð[
ð [
ð [
ð [
ð [
ð [
ð [
ð [
r0   r=  c                   ó|  ‡ — e Zd ZU dZdZeed<   dgZdddœZdefˆ 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  aw  
    Examples:

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

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

    >>> outputs = model(input_ids=inputs["input_ids"], decoder_input_ids=labels["input_ids"])
    >>> hidden_states = outputs.last_hidden_state
    ```Úmt5rG   úFdecoder.block.0.layer.1.EncDecAttention.relative_attention_bias.weightú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ƒ   rD  rM   r$  ÚcopyÚdeepcopyrt   rá   r=  ÚencoderÚnum_decoder_layersrG  ÚdecoderrJ  ©r+   rG   Úencoder_configÚdecoder_configr.   s       €r/   r%   zMT5Model.__init__6  sª   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”l 6Ô#4°f´nÑEÔEˆŒåœ vÑ.Ô.ˆØ$)ˆÔ!Ø#(ˆÔ Ý Ñ/Ô/ˆŒåœ vÑ.Ô.ˆØ$(ˆÔ!Ø$*Ô$=ˆÔ!Ý Ñ/Ô/ˆŒð 	�ŠÑÔÐÐÐr0   c                 ó   — | j         S rX   ©r$  ©r+   s    r/   Úget_input_embeddingszMT5Model.get_input_embeddingsH  ó
   € ØŒ{Ðr0   c                 ó|   — || _         | j                             |¦  «         | j                             |¦  «         d S rX   ©r$  rr  rN  rt  rL  s     r/   rN  zMT5Model.set_input_embeddingsL  ó;   € Ø$ˆŒØŒ×)Ò)¨.Ñ9Ô9Ð9ØŒ×)Ò)¨.Ñ9Ô9Ð9Ð9Ð9r0   Nr  râ   r  r  Úencoder_outputsrÆ   rR  Údecoder_inputs_embedsrá   rÇ   rZ  rû   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 )	a\
  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. MT5 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 [MT5 Training](./mt5#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)

            MT5 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 [MT5
            Training](./mt5#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, MT5Model

        >>> tokenizer = AutoTokenizer.from_pretrained("google/mt5-small")
        >>> model = MT5Model.from_pretrained("google/mt5-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 MT5Model.
        >>> # This is not needed for torch's MT5ForConditionalGeneration 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Ç   rZ  rû   r   r   r2   ©rW  r=   rX  ©
r  râ   rR  rÆ   rø   rù   rá   rÇ   rZ  rû   )rW  rÆ   Údecoder_hidden_statesÚdecoder_attentionsrY  Úencoder_last_hidden_staterø   Úencoder_attentions)rG   rá   rû   rr  rY   r   Úlenrt  r   rW  rÆ   r=   rX  rY  )r+   r  râ   r  r  r€  rÆ   rR  r�  rá   rÇ   rZ  rû   rÈ   r=   Údecoder_outputss                   r/   r?   zMT5Model.forwardQ  su  € ðF "+Ð!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ð	
ñ 	
ô 	
ð 		
r0   ©NNNNNNNNNNNN)r@   rA   rB   r  Ú
model_typer   r4  Ú"_keys_to_ignore_on_load_unexpectedÚ_tied_weights_keysr%   r{  rN  r   r'   Ú
LongTensorÚFloatTensorÚ
BoolTensorr]  r
   rZ   r@  r   r?   rC   rD   s   @r/   r  r    sà  ø€ € € € € € ðð ð" €JØÐÐÑØ*rÐ)sÐ&à'6Ø'6ðð Ðð˜yð ð ð ð ð ð ð$ð ð ð:ð :ð :ð
 ð .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
r0   r  z;
    MT5 Model with a `language modeling` head on top.
    )Úcustom_introc                   óª  ‡ — e Zd ZU dZdZeed<   dgZddddœZdefˆ 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 MT5ForConditionalGeneration, AutoTokenizer

    >>> model = MT5ForConditionalGeneration.from_pretrained("google/mt5-small")
    >>> tokenizer = AutoTokenizer.from_pretrained("google/mt5-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
    ```rh  rG   ri  rj  )rl  rm  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 )NFTrJ   )r$   r%   rM   Ú	model_dimr   rƒ   rD  r$  rp  rq  rt   rá   r=  rr  rs  rG  rt  rL   r  rJ  ru  s       €r/   r%   z$MT5ForConditionalGeneration.__init__ç  sÐ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØœˆŒå”l 6Ô#4°f´nÑEÔEˆŒåœ vÑ.Ô.ˆØ$)ˆÔ!Ø#(ˆÔ Ý Ñ/Ô/ˆŒåœ vÑ.Ô.ˆØ$(ˆÔ!Ø$*Ô$=ˆÔ!Ý Ñ/Ô/ˆŒå”y ¤°Ô1BÈÐOÑOÔOˆŒð 	�ŠÑÔÐÐÐr0   c                 ó   — | j         S rX   ry  rz  s    r/   r{  z0MT5ForConditionalGeneration.get_input_embeddingsü  r|  r0   c                 ó|   — || _         | j                             |¦  «         | j                             |¦  «         d S rX   r~  rL  s     r/   rN  z0MT5ForConditionalGeneration.set_input_embeddingsÿ  r  r0   Nr  râ   r  r  r€  rÆ   rR  r�  Úlabelsrá   rÇ   rZ  rû   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         }|  	                    |¦  «        }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. MT5 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 [MT5 Training](./mt5#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)

            MT5 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 [MT5
            Training](./mt5#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, MT5ForConditionalGeneration

        >>> tokenizer = AutoTokenizer.from_pretrained("google/mt5-small")
        >>> model = MT5ForConditionalGeneration.from_pretrained("google/mt5-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(
        ...     "summarize: studies have shown that owning a dog is good for you", return_tensors="pt"
        ... ).input_ids  # Batch size 1
        >>> outputs = model.generate(input_ids)
        >>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
        >>> # studies have shown that owning a dog is good for you.
        ```Nrƒ  r   r   r2   r„  r…  r,  ©Úignore_indexr3   ©	ÚlossÚlogitsrÆ   r†  r‡  rY  rˆ  rø   r‰  )rG   rá   rû   rr  rY   r   rŠ  r3  rt  r  r   r5   r�   r²   r[  r   rÆ   r=   rX  rY  rW  )r+   r  râ   r  r  r€  rÆ   rR  r�  r™  rá   rÇ   rZ  rû   rÈ   r=   r‹  Úsequence_outputÚ	lm_logitsrž  Úloss_fctÚoutputs                         r/   r?   z#MT5ForConditionalGeneration.forward  sB  € ðR "+Ð!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Ø#ð 'ñ 
ô 
ˆð *¨!Ô,ˆà—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ð

ñ 

ô 

ð 
	
r0   c                 ó,   — |                       |¦  «        S rX   )r3  )r+   r™  s     r/   Ú%prepare_decoder_input_ids_from_labelszAMT5ForConditionalGeneration.prepare_decoder_input_ids_from_labels’  s   € Ø× Ò  Ñ(Ô(Ð(r0   ©NNNNNNNNNNNNN)r@   rA   rB   r  r�  r   r4  rŽ  r�  r%   r{  rN  r   r'   r�  r‘  r’  r]  rZ   r
   r@  r   r?   r¥  rC   rD   s   @r/   r   r   Ç  s  ø€ € € € € € ðð ð  €JØÐÐÑØ*rÐ)sÐ&à'6Ø'6Ø)ðð Ðð˜yð ð ð ð ð ð ð*ð ð ð:ð :ð :ð
 ð .2Ø37Ø59Ø:>Ø=AØ(,Ø26Ø:>Ø*.Ø!%Ø)-Ø,0Ø#'ðJ
ð J
àÔ# dÑ*ðJ
ð Ô)¨DÑ0ðJ
ð !Ô+¨dÑ2ð	J
ð
 !&Ô 0°4Ñ 7ðJ
ð ˜u U¤\Ô2Ô3°dÑ:ðJ
ð  ™ðJ
ð Ô(¨4Ñ/ðJ
ð  %Ô0°4Ñ7ðJ
ð Ô  4Ñ'ðJ
ð ˜$‘;ðJ
ð   $™;ðJ
ð # T™kðJ
ð ˜D‘[ðJ
ð  
ˆuÔ Ô	! OÑ	3ð!J
ð J
ð J
ñ „^ðJ
ðZ)¸E¼Lð )ð )ð )ð )ð )ð )ð )ð )r0   r   c                   óì   ‡ — e Zd ZU dZdZeed<   ddiZdefˆ 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 MT5EncoderModel, AutoTokenizer

    >>> model = MT5EncoderModel.from_pretrained("google/mt5-small")
    >>> tokenizer = AutoTokenizer.from_pretrained("google/mt5-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
    ```rh  rG   rl  rj  c                 ó  •— t          ¦   «                              |¦  «         t          j        |j        |j        ¦  «        | _        |}d|_        d|_        t          |¦  «        | _
        |                      ¦   «          d S )NF)r$   r%   r   rƒ   rD  rM   r$  rá   r\  r=  rr  rJ  )r+   rG   rv  r.   s      €r/   r%   zMT5EncoderModel.__init__­  so   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”l 6Ô#4°f´nÑEÔEˆŒàˆØ#(ˆÔ Ø,1ˆÔ)Ý Ñ/Ô/ˆŒð 	�ŠÑÔÐÐÐr0   c                 ó   — | j         S rX   ry  rz  s    r/   r{  z$MT5EncoderModel.get_input_embeddingsº  r|  r0   c                 óH   — || _         | j                             |¦  «         d S rX   )r$  rr  rN  rL  s     r/   rN  z$MT5EncoderModel.set_input_embeddings¾  s%   € Ø$ˆŒØŒ×)Ò)¨.Ñ9Ô9Ð9Ð9Ð9r0   Nr  râ   rR  rÇ   rZ  rû   r  c                 ó\   — |�|n| j         j        }|                      ||||||¬¦  «        }|S )aJ  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. MT5 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 [MT5 Training](./mt5#training).

        Example:

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

        >>> tokenizer = AutoTokenizer.from_pretrained("google/mt5-small")
        >>> model = MT5EncoderModel.from_pretrained("google/mt5-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ƒ  )rG   rû   rr  )	r+   r  râ   rR  rÇ   rZ  rû   rÈ   r€  s	            r/   r?   zMT5EncoderModel.forwardÂ  sJ   € ðF &1Ð%<�k�kÀ$Ä+ÔBYˆàŸ,š,ØØ)Ø'Ø/Ø!5Ø#ð 'ñ 
ô 
ˆð Ðr0   )NNNNNN)r@   rA   rB   r  r�  r   r4  r�  r%   r{  rN  r   r'   r�  r‘  r@  r]  r   r?   rC   rD   s   @r/   r!  r!  –  s<  ø€ € € € € € ðð ð €JØÐÐÑà% ðÐð

˜yð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð:ð :ð :ð ð .2Ø37Ø26Ø)-Ø,0Ø#'ð,ð ,àÔ# dÑ*ð,ð Ô)¨DÑ0ð,ð Ô(¨4Ñ/ð	,ð
   $™;ð,ð # T™kð,ð ˜D‘[ð,ð 
ˆuÔ Ô	! OÑ	3ð,ð ,ð ,ñ „^ð,ð ,ð ,ð ,ð ,r0   r!  z„
    MT5 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 )ÚMT5ForSequenceClassificationri  rG   c                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S rX   )r$   r%   r  r  r  Úclassification_headrJ  rV   s     €r/   r%   z%MT5ForSequenceClassification.__init__ý  sS   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý# FÑ+Ô+ˆÔÝ#8¸Ñ#@Ô#@ˆÔ ð 	�ŠÑÔÐÐÐr0   Nr  râ   r  r  r€  rR  r�  r™  rá   rÇ   rZ  rû   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. MT5 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 [MT5 Training](./mt5#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)

            MT5 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 [MT5
            Training](./mt5#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Ç   rZ  rû   r   r   z7All examples must have the same number of <eos> tokens.z3Each example must contain at least one <eos> token.r3   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationr�  )%rG   rû   ÚNotImplementedErrorr.   r@   r/  r3  r  ÚeqÚeos_token_idr5   r�   r   r'   Úunique_consecutiveÚsumÚnumelr¯   r²   r¯  Úproblem_typer  r:   rŠ   rÙ   r   Úsqueezer   r   r   rÆ   r†  r‡  rY  rˆ  rø   r‰  )r+   r  râ   r  r  r€  rR  r�  r™  rá   rÇ   rZ  rû   rÈ   r×   r   Úeos_maskr_  Ú_r,   ÚselectedÚsentence_representationrŸ  rž  r¢  r£  s                             r/   r?   z$MT5ForSequenceClassification.forward  s±  € ðb &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ð

ñ 

ô 

ð 
	
r0   rŒ  )r@   rA   rB   rŽ  r   r%   r   r'   r�  rZ   Úlistr‘  r@  r]  r   r?   rC   rD   s   @r/   r­  r­  ó  s‹  ø€ € € € € ð +sÐ)sÐ&ð˜yð ð ð ð ð ð ð ð .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
r0   r­  c                   óÚ   ‡ — e Zd 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(  rG   c                 ó6  •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          j        |j        ¦  «        | _        t          j	        |j
        |j        ¦  «        | _        |                      ¦   «          d S rX   )r$   r%   r  r!  r  r   rQ   r  rS   rL   r,   r  rJ  rV   s     €r/   r%   z"MT5ForTokenClassification.__init__“  sz   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå*¨6Ñ2Ô2ˆÔÝ”z &Ô";Ñ<Ô<ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr0   Nr  râ   rR  r™  rÇ   rZ  rû   r  c                 óº  — |�|n| j         j        }|                      ||||||¬¦  «        }	|	d         }
|                      |
¦  «        }
|                      |
¦  «        }d}|�Ft          ¦   «         } ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }|s||	dd…         f}|�|f|z   n|S t          |||	j	        |	j
        ¬¦  «        S )a>  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. MT5 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 [MT5 Training](./t5#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Ç   rZ  rû   r   r3   r2   )rž  rŸ  r=   rX  )rG   rû   r  rS   r  r   r²   r  r   r=   rX  )r+   r  râ   rR  r™  rÇ   rZ  rû   rÈ   r×   r=   rŸ  rž  r¢  r£  s                  r/   r?   z!MT5ForTokenClassification.forwardž  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å$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r0   )NNNNNNN)r@   rA   rB   r   r%   r   r'   rZ   r@  r]  r   r?   rC   rD   s   @r/   r(  r(  �  s  ø€ € € € € ð	˜yð 	ð 	ð 	ð 	ð 	ð 	ð ð *.Ø.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
r0   r(  c                   óˆ  ‡ — e Zd ZdgZdddœZdefˆ 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"  ri  rj  rk  rG   c                 ó  •— t          ¦   «                              |¦  «         |j        | _        t	          j        |j        |j        ¦  «        | _        t          j	        |¦  «        }d|_
        d|_        t          |¦  «        | _        t          j	        |¦  «        }d|_
        |j        |_        t          |¦  «        | _        |j        | _        t	          j        |j        |j        ¦  «        | _        |                      ¦   «          d S ro  )r$   r%   rM   r–  r   rƒ   rD  r$  rp  rq  rt   rá   r=  rr  rs  rG  rt  r  rL   r,   r  rJ  ru  s       €r/   r%   z MT5ForQuestionAnswering.__init__â  sÖ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØœˆŒå”l 6Ô#4°f´nÑEÔEˆŒåœ vÑ.Ô.ˆØ$)ˆÔ!Ø#(ˆÔ Ý Ñ/Ô/ˆŒåœ vÑ.Ô.ˆØ$(ˆÔ!Ø$*Ô$=ˆÔ!Ý Ñ/Ô/ˆŒà Ô+ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr0   c                 ó   — | j         S rX   ry  rz  s    r/   r{  z,MT5ForQuestionAnswering.get_input_embeddingsù  r|  r0   c                 ó|   — || _         | j                             |¦  «         | j                             |¦  «         d S rX   r~  rL  s     r/   rN  z,MT5ForQuestionAnswering.set_input_embeddingsý  r  r0   Nr  râ   r  r  r€  Ústart_positionsÚend_positionsrR  r�  rá   rÇ   rZ  rû   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 )az  
        input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`):
            Indices of input sequence tokens in the vocabulary. T5 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 [T5 Training](./t5#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)

            T5 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 [T5
            Training](./t5#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   r2   r„  r…  r3   r«   r›  )
rž  Ústart_logitsÚ
end_logitsrÆ   r†  r‡  rY  rˆ  rø   r‰  )rG   rû   rá   r/  r3  rr  rY   r   rŠ  rt  r  Úsplitr¼  rÁ   r[  r5   r�   r÷   r   r   rÆ   r=   rX  rY  rW  )r+   r  râ   r  r  r€  rÉ  rÊ  rR  r�  rá   rÇ   rZ  rû   rÈ   r=   r‹  r   rŸ  rÌ  rÍ  Ú
total_lossÚignored_indexr¢  Ú
start_lossÚend_lossr£  s                              r/   r?   zMT5ForQuestionAnswering.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ð
ñ 
ô 
ð 	
r0   r¦  )r@   rA   rB   rŽ  r�  r   r%   r{  rN  r   r'   r�  r‘  r’  r]  rZ   r@  r   r?   rC   rD   s   @r/   r"  r"  Ù  sÜ  ø€ € € € € à*rÐ)sÐ&à'6Ø'6ðð Ðð˜yð ð ð ð ð ð ð.ð ð ð:ð :ð :ð
 ð .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
r0   r"  )r!  r   r"  r­  r(  r  r  )Ar  rp  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   Úconfiguration_mt5r   Ú
get_loggerr@   r}   ÚModuler!   rF   r_   rg   rq   rÜ   rç   rí   r  r  r=  r  r   r!  r­  r(  r"  Ú__all__rS  r0   r/   ú<module>rà     so  ðð Ð à €€€Ø €€€à €€€Ø Ð Ð Ð Ð Ð Ø 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Ñ	%Ô	%€ð+ð +ð +ð +ð +�2”9ñ +ô +ð +ð4ð ð ð ð �r”yñ ô ð ð.ð ð ð ð ˜BœIñ ô ð ð<ð ð ð ð �”ñ ô ð ð&ð ð ð ð �2”9ñ ô ð ðFð ð ð ð ˜BœIñ ô ð ðDð ð ð ð ˜RœYñ ô ð ð@W
ð W
ð W
ð W
ð W
Ð)ñ W
ô W
ð W
ðvð ð ð ð ˜BœIñ ô ð ð$ ð_!ð _!ð _!ð _!ð _!˜ñ _!ô _!ñ „ð_!ðFo
ð o
ð o
ð o
ð o
Ð!ñ o
ô o
ð o
ðd ði
ð i
ð i
ð i
ð i
Ð!ñ i
ô i
ñ „ði
ðX €ððñ ô ð
G)ð G)ð G)ð G)ð G)Ð"4°oñ G)ô G)ñô ð
G)ðT ðYð Yð Yð Yð YÐ(ñ Yô Yñ „ðYðx €ððñ ô ðT
ð T
ð T
ð T
ð T
Ð#5ñ T
ô T
ñô ðT
ðn ðE
ð E
ð E
ð E
ð E
Ð 2ñ E
ô E
ñ „ðE
ðP ðs
ð s
ð s
ð s
ð s
Ð0ñ s
ô s
ñ „ðs
ðlð ð €€€r0   