Ë
    S^(hÚâ  ã                   ó  — d Z ddlZddlmZ ddlmZmZmZmZ ddl	Z	ddl
Z	ddl	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mZ ddlmZmZmZmZmZ ddl m!Z!  ejD                  e#«      Z$dZ%dZ&dZ'dZ(e G d„ de«      «       Z) G d„ dejT                  «      Z+ G d„ dejT                  «      Z, G d„ dejT                  «      Z- G d„ dejT                  «      Z. G d„ dejT                  «      Z/ G d„ d ejT                  «      Z0 G d!„ d"ejT                  «      Z1 G d#„ d$ejT                  «      Z2 G d%„ d&ejT                  «      Z3 G d'„ d(ejT                  «      Z4 G d)„ d*ejT                  «      Z5 G d+„ d,ejT                  «      Z6 G d-„ d.ejT                  «      Z7 G d/„ d0e«      Z8 ed1e'«       G d2„ d3e8«      «       Z9 ed4e'«       G d5„ d6e8«      «       Z: ed7e'«       G d8„ d9e8«      «       Z; ed:e'«       G d;„ d<e8«      «       Z<g d=¢Z=y)>zPyTorch Bros model.é    N)Ú	dataclass)ÚListÚOptionalÚTupleÚUnion)Únn)ÚCrossEntropyLossé   )ÚACT2FN)Ú)BaseModelOutputWithPastAndCrossAttentionsÚ,BaseModelOutputWithPoolingAndCrossAttentionsÚTokenClassifierOutput)ÚPreTrainedModel)Úapply_chunking_to_forwardÚ find_pruneable_heads_and_indicesÚprune_linear_layer)ÚModelOutputÚadd_start_docstringsÚ%add_start_docstrings_to_model_forwardÚloggingÚreplace_return_docstringsé   )Ú
BrosConfigzjinho8345/bros-base-uncasedr   aK  
    This model is also a PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) subclass.
    Use it as a regular PyTorch Module and refer to the PyTorch documentation for all matter related to general usage
    and behavior.

    Parameters:
        config ([`BrosConfig`]): Model configuration class with all the parameters of the model.
            Initializing with a config file does not load the weights associated with the model, only the
            configuration. Check out the [`~PreTrainedModel.from_pretrained`] method to load the model weights.
a­  
    Args:
        input_ids (`torch.LongTensor` of shape `({0})`):
            Indices of input sequence tokens in the vocabulary.

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

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

        bbox ('torch.FloatTensor' of shape '(batch_size, num_boxes, 4)'):
            Bounding box coordinates for each token in the input sequence. Each bounding box is a list of four values
            (x1, y1, x2, y2), where (x1, y1) is the top left corner, and (x2, y2) is the bottom right corner of the
            bounding box.

        attention_mask (`torch.FloatTensor` of shape `({0})`, *optional*):
            Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:

            - 1 for tokens that are **not masked**,
            - 0 for tokens that are **masked**.

            [What are attention masks?](../glossary#attention-mask)

        bbox_first_token_mask (`torch.FloatTensor` of shape `({0})`, *optional*):
            Mask to indicate the first token of each bounding box. Mask values selected in `[0, 1]`:

            - 1 for tokens that are **not masked**,
            - 0 for tokens that are **masked**.

        token_type_ids (`torch.LongTensor` of shape `({0})`, *optional*):
            Segment token indices to indicate first and second portions of the inputs. Indices are selected in `[0,
            1]`:

            - 0 corresponds to a *sentence A* token,
            - 1 corresponds to a *sentence B* token.

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

        position_ids (`torch.LongTensor` of shape `({0})`, *optional*):
            Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0,
            config.max_position_embeddings - 1]`.

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

        head_mask (`torch.FloatTensor` of shape `(num_heads,)` or `(num_layers, num_heads)`, *optional*):
            Mask to nullify selected heads of the self-attention modules. Mask values selected in `[0, 1]`:

            - 1 indicates the head is **not masked**,
            - 0 indicates the head is **masked**.

        inputs_embeds (`torch.FloatTensor` of shape `({0}, hidden_size)`, *optional*):
            Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation. This
            is useful if you want more control over how to convert `input_ids` indices into associated vectors than the
            model's internal embedding lookup matrix.

        output_attentions (`bool`, *optional*):
            Whether or not to return the attentions tensors of all attention layers. See `attentions` under returned
            tensors for more detail.

        output_hidden_states (`bool`, *optional*):
            Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for
            more detail.

        return_dict (`bool`, *optional*):
            Whether or not to return a [`~file_utils.ModelOutput`] instead of a plain tuple.
c                   óæ   — e Zd ZU dZdZeej                     ed<   dZ	eej                     ed<   dZ
eej                     ed<   dZeeej                        ed<   dZeeej                        ed<   y)ÚBrosSpadeOutputað  
    Base class for outputs of token classification models.

    Args:
        loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided) :
            Classification loss.
        initial_token_logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.num_labels)`):
            Classification scores for entity initial tokens (before SoftMax).
        subsequent_token_logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, sequence_length+1)`):
            Classification scores for entity sequence tokens (before SoftMax).
        hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
            Tuple of `torch.FloatTensor` (one for the output of the embeddings, if the model has an embedding layer, +
            one for the output of each layer) of shape `(batch_size, sequence_length, hidden_size)`.

            Hidden-states of the model at the output of each layer plus the optional initial embedding outputs.
        attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
            Tuple of `torch.FloatTensor` (one for each layer) of shape `(batch_size, num_heads, sequence_length,
            sequence_length)`.

            Attentions weights after the attention softmax, used to compute the weighted average in the self-attention
            heads.
    NÚlossÚinitial_token_logitsÚsubsequent_token_logitsÚhidden_statesÚ
attentions)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚtorchÚFloatTensorÚ__annotations__r   r   r   r   r    © ó    úd/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/bros/modeling_bros.pyr   r   �   s~   … ñð. )-€Dˆ(�5×$Ñ$Ñ
%Ó,Ø8<Ð˜( 5×#4Ñ#4Ñ5Ó<Ø;?Ð˜X e×&7Ñ&7Ñ8Ó?Ø8<€M�8˜E %×"3Ñ"3Ñ4Ñ5Ó<Ø59€J�˜˜u×0Ñ0Ñ1Ñ2Ô9r)   r   c                   óV   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  fd„Zˆ xZS )ÚBrosPositionalEmbedding1Dc                 óØ   •— t         t        | �  «        |j                  | _        ddt	        j
                  d| j                  d«      | j                  z  z  z  }| j                  d|«       y )Nr   i'  ç        g       @Úinv_freq)Úsuperr,   Ú__init__Údim_bbox_sinusoid_emb_1dr%   ÚarangeÚregister_buffer)ÚselfÚconfigr/   Ú	__class__s      €r*   r1   z"BrosPositionalEmbedding1D.__init__¤   sa   ø€ ÜÔ'¨Ñ7Ô9à(.×(GÑ(GˆÔ%àØ”e—l‘l 3¨×(EÑ(EÀsÓKÈd×NkÑNkÑkÑlñ
ˆð 	×Ñ˜Z¨Õ2r)   Úpos_seqÚreturnc                 ó  — |j                  «       }|\  }}}|j                  |||d«      | j                  j                  ddd| j                  dz  «      z  }t	        j
                  |j                  «       |j                  «       gd¬«      }|S )Nr   é   éÿÿÿÿ©Údim)ÚsizeÚviewr/   r2   r%   ÚcatÚsinÚcos)r5   r8   Úseq_sizeÚb1Úb2Úb3Úsinusoid_inpÚpos_embs           r*   Úforwardz!BrosPositionalEmbedding1D.forward®   s   € Ø—<‘<“>ˆØ‰
ˆˆB�Ø—|‘| B¨¨B°Ó2°T·]±]×5GÑ5GÈÈ1ÈaÐQU×QnÑQnÐrsÑQsÓ5tÑtˆÜ—)‘)˜\×-Ñ-Ó/°×1AÑ1AÓ1CÐDÈ"ÔMˆØˆr)   ©r!   r"   r#   r1   r%   ÚTensorrJ   Ú__classcell__©r7   s   @r*   r,   r,   ¡   s#   ø„ ô3ð˜uŸ|™|ð °·±÷ r)   r,   c                   óV   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  fd„Zˆ xZS )ÚBrosPositionalEmbedding2Dc                 óŒ   •— t         t        | �  «        |j                  | _        t	        |«      | _        t	        |«      | _        y ©N)r0   rP   r1   Údim_bboxr,   Ú	x_pos_embÚ	y_pos_emb©r5   r6   r7   s     €r*   r1   z"BrosPositionalEmbedding2D.__init__·   s4   ø€ ÜÔ'¨Ñ7Ô9àŸ™ˆŒÜ2°6Ó:ˆŒÜ2°6Ó:ˆ�r)   Úbboxr9   c                 ó  — g }t        | j                  «      D ]U  }|dz  dk(  r&|j                  | j                  |d|f   «      «       Œ1|j                  | j	                  |d|f   «      «       ŒW t        j                  |d¬«      }|S )Nr;   r   .r<   r=   )ÚrangerS   ÚappendrT   rU   r%   rA   )r5   rW   ÚstackÚiÚbbox_pos_embs        r*   rJ   z!BrosPositionalEmbedding2D.forward¾   s|   € ØˆÜ�t—}‘}Ó%ò 	;ˆAØ�1‰u˜ŠzØ—‘˜TŸ^™^¨D°°a°©LÓ9Õ:à—‘˜TŸ^™^¨D°°a°©LÓ9Õ:ð		;ô
 —y‘y ¨BÔ/ˆØÐr)   rK   rN   s   @r*   rP   rP   ¶   s#   ø„ ô;ð˜EŸL™Lð ¨U¯\©\÷ r)   rP   c                   ó>   ‡ — e Zd Zˆ fd„Zdej
                  fd„Zˆ xZS )ÚBrosBboxEmbeddingsc                 ó¬   •— t         t        | �  «        t        |«      | _        t        j                  |j                  |j                  d¬«      | _	        y )NF)Úbias)
r0   r_   r1   rP   Úbbox_sinusoid_embr   ÚLinearÚdim_bbox_sinusoid_emb_2dÚdim_bbox_projectionÚbbox_projectionrV   s     €r*   r1   zBrosBboxEmbeddings.__init__Ê   s@   ø€ ÜÔ  $Ñ0Ô2Ü!:¸6Ó!BˆÔÜ!Ÿy™y¨×)HÑ)HÈ&×JdÑJdÐkpÔqˆÕr)   rW   c                 ó¬   — |j                  dd«      }|d d d …d d …d d …f   |d d …d d d …d d …f   z
  }| j                  |«      }| j                  |«      }|S )Nr   r   )Ú	transposerb   rf   )r5   rW   Úbbox_tÚbbox_posr]   s        r*   rJ   zBrosBboxEmbeddings.forwardÏ   s\   € Ø—‘  1Ó%ˆØ˜$¢¢1¢a˜-Ñ(¨6²!°Tº1ºa°-Ñ+@Ñ@ˆØ×-Ñ-¨hÓ7ˆØ×+Ñ+¨LÓ9ˆàÐr)   rK   rN   s   @r*   r_   r_   É   s   ø„ ôrð
˜EŸL™L÷ r)   r_   c                   óÊ   ‡ — e Zd ZdZˆ fd„Z	 	 	 	 	 d
deej                     deej                     deej                     deej                     dedej                  fd	„Z	ˆ xZ
S )ÚBrosTextEmbeddingszGConstruct the embeddings from word, position and token_type embeddings.c                 ód  •— t         ‰| �  «        t        j                  |j                  |j
                  |j                  ¬«      | _        t        j                  |j                  |j
                  «      | _	        t        j                  |j                  |j
                  «      | _        t        j                  |j
                  |j                  ¬«      | _        t        j                  |j                  «      | _        t#        |dd«      | _        | j'                  dt)        j*                  |j                  «      j-                  d«      «       | j'                  dt)        j.                  | j0                  j3                  «       t(        j4                  | j0                  j6                  ¬«      d	¬
«       y )N)Úpadding_idx©ÚepsÚposition_embedding_typeÚabsoluteÚposition_ids)r   r<   Útoken_type_ids©ÚdtypeÚdeviceF)Ú
persistent)r0   r1   r   Ú	EmbeddingÚ
vocab_sizeÚhidden_sizeÚpad_token_idÚword_embeddingsÚmax_position_embeddingsÚposition_embeddingsÚtype_vocab_sizeÚtoken_type_embeddingsÚ	LayerNormÚlayer_norm_epsÚDropoutÚhidden_dropout_probÚdropoutÚgetattrrq   r4   r%   r3   ÚexpandÚzerosrs   r?   Úlongrw   rV   s     €r*   r1   zBrosTextEmbeddings.__init__Û   s8  ø€ Ü‰ÑÔä!Ÿ|™|¨F×,=Ñ,=¸v×?QÑ?QÐ_e×_rÑ_rÔsˆÔÜ#%§<¡<°×0NÑ0NÐPV×PbÑPbÓ#cˆÔ Ü%'§\¡\°&×2HÑ2HÈ&×J\ÑJ\Ó%]ˆÔ"ô Ÿ™ f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z‘z &×"<Ñ"<Ó=ˆŒä'.¨vÐ7PÐR\Ó']ˆÔ$Ø×Ñ˜^¬U¯\©\¸&×:XÑ:XÓ-Y×-`Ñ-`ÐahÓ-iÔjØ×ÑØÜ�K‰KØ×!Ñ!×&Ñ&Ó(Ü—j‘jØ×(Ñ(×/Ñ/ôð
 ð 	õ 	
r)   Ú	input_idsrt   rs   Úinputs_embedsÚpast_key_values_lengthr9   c                 óZ  — |�|j                  «       }n|j                  «       d d }|d   }|€| j                  d d …|||z   …f   }|€st        | d«      r-| j                  d d …d |…f   }|j	                  |d   |«      }	|	}n:t        j                  |t
        j                  | j                  j                  ¬«      }|€| j                  |«      }| j                  |«      }
||
z   }| j                  dk(  r| j                  |«      }||z  }| j                  |«      }| j                  |«      }|S )Nr<   r   rt   r   ru   rr   )r?   rs   Úhasattrrt   rˆ   r%   r‰   rŠ   rw   r}   r�   rq   r   r‚   r†   )r5   r‹   rt   rs   rŒ   r�   Úinput_shapeÚ
seq_lengthÚbuffered_token_type_idsÚ buffered_token_type_ids_expandedr�   Ú
embeddingsr   s                r*   rJ   zBrosTextEmbeddings.forwardó   sF  € ð Ð Ø#Ÿ.™.Ó*‰Kà'×,Ñ,Ó.¨s°Ð3ˆKà  ‘^ˆ
àÐØ×,Ñ,ªQÐ0FÈÐVlÑIlÐ0lÐ-lÑmˆLàÐ!Ü�tÐ-Ô.Ø*.×*=Ñ*=ºaÀÀ*À¸nÑ*MÐ'Ø3J×3QÑ3QÐR]Ð^_ÑR`ÐblÓ3mÐ0Ø!A‘ä!&§¡¨[ÄÇ
Á
ÐSW×SdÑSd×SkÑSkÔ!l�àÐ Ø ×0Ñ0°Ó;ˆMØ $× :Ñ :¸>Ó JÐà"Ð%:Ñ:ˆ
Ø×'Ñ'¨:Ò5Ø"&×":Ñ":¸<Ó"HÐØÐ-Ñ-ˆJØ—^‘^ JÓ/ˆ
Ø—\‘\ *Ó-ˆ
ØÐr)   )NNNNr   )r!   r"   r#   r$   r1   r   r%   rL   ÚintrJ   rM   rN   s   @r*   rl   rl   Ø   sƒ   ø„ ÙQô
ð4 -1Ø15Ø/3Ø04Ø&'ñ$à˜EŸL™LÑ)ð$ð ! §¡Ñ.ð$ð ˜uŸ|™|Ñ,ð	$ð
   §¡Ñ-ð$ð !$ð$ð 
�‰÷$r)   rl   c                   ób  ‡ — e Zd Zˆ fd„Zdej
                  fd„Z	 	 	 	 	 	 ddej
                  dej
                  deej
                     deej
                     deej
                     d	eej
                     d
eeeej                           deej
                     deej
                     fd„Z
ˆ xZS )ÚBrosSelfAttentionc                 óÚ  •— t         ‰| �  «        |j                  |j                  z  dk7  r2t	        |d«      s&t        d|j                  › d|j                  › d�«      ‚|j                  | _        t        |j                  |j                  z  «      | _        | j                  | j                  z  | _        t        j                  |j                  | j                  «      | _        t        j                  |j                  | j                  «      | _        t        j                  |j                  | j                  «      | _        t        j                  |j                  «      | _        t#        |dd«      | _        | j$                  dk(  s| j$                  d	k(  rF|j&                  | _        t        j(                  d
|j&                  z  dz
  | j                  «      | _        |j,                  | _        y )Nr   Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (ú)rq   rr   Úrelative_keyÚrelative_key_queryr;   r   )r0   r1   r{   Únum_attention_headsr�   Ú
ValueErrorr•   Úattention_head_sizeÚall_head_sizer   rc   ÚqueryÚkeyÚvaluer„   Úattention_probs_dropout_probr†   r‡   rq   r~   ry   Údistance_embeddingÚ
is_decoderrV   s     €r*   r1   zBrosSelfAttention.__init__  s‘  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Ñ:¸aÒ?ÌÐPVÐXhÔHiÜØ# F×$6Ñ$6Ð#7ð 8Ø ×4Ñ4Ð5°Qð8óð ð
 $*×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÑ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÑPˆÔä—Y‘Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
Ü—9‘9˜V×/Ñ/°×1CÑ1CÓDˆŒÜ—Y‘Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
ä—z‘z &×"EÑ"EÓFˆŒÜ'.¨vÐ7PÐR\Ó']ˆÔ$Ø×'Ñ'¨>Ò9¸T×=YÑ=YÐ]qÒ=qØ+1×+IÑ+IˆDÔ(Ü&(§l¡l°1°v×7UÑ7UÑ3UÐXYÑ3YÐ[_×[sÑ[sÓ&tˆDÔ#à ×+Ñ+ˆ�r)   Úxc                 ó    — |j                  «       d d | j                  | j                  fz   } |j                  |Ž }|j	                  dddd«      S )Nr<   r   r;   r   r
   )r?   r�   rŸ   r@   Úpermute)r5   r§   Únew_x_shapes      r*   Útranspose_for_scoresz&BrosSelfAttention.transpose_for_scores3  sV   € Ø—f‘f“h˜s �mØ×$Ñ$Ø×$Ñ$ð'
ñ 
ˆð ˆA�F‰F�KÐ ˆØ�y‰y˜˜A˜q !Ó$Ð$r)   r   r]   Úattention_maskÚ	head_maskÚencoder_hidden_statesÚencoder_attention_maskÚpast_key_valueÚoutput_attentionsr9   c	                 ó  — | j                  |«      }	|d u}
|
r|�|d   }|d   }|}�n |
rC| j                  | j                  |«      «      }| j                  | j                  |«      «      }|}n»|�y| j                  | j                  |«      «      }| j                  | j                  |«      «      }t	        j
                  |d   |gd¬«      }t	        j
                  |d   |gd¬«      }n@| j                  | j                  |«      «      }| j                  | j                  |«      «      }| j                  |	«      }| j                  r||f}t	        j                  ||j                  dd«      «      }| j                  dk(  s| j                  dk(  �rF|j                  «       d   }t	        j                  |t        j                  |j                  ¬	«      j                  dd«      }t	        j                  |t        j                  |j                  ¬	«      j                  dd«      }||z
  }| j                  || j                   z   dz
  «      }|j#                  |j$                  ¬
«      }| j                  dk(  rt	        j&                  d||«      }||z   }nE| j                  dk(  r6t	        j&                  d||«      }t	        j&                  d||«      }||z   |z   }|j(                  \  }}}}|j                  ||||«      }|j+                  g d¢«      }t	        j&                  d||f«      }||z   }|t-        j.                  | j0                  «      z  }|�||z   } t3        j4                  d¬«      |«      }| j7                  |«      }|�||z  }t	        j                  ||«      }|j+                  dddd«      j9                  «       }|j                  «       d d | j:                  fz   } |j                  |Ž }|r||fn|f}| j                  r||fz   }|S )Nr   r   r;   r=   r<   éþÿÿÿr›   rœ   ru   )rv   zbhld,lrd->bhlrzbhrd,lrd->bhlr)r;   r   r   r
   zbnid,bijd->bnijr
   )r¡   r«   r¢   r£   r%   rA   r¦   Úmatmulrh   rq   r?   r3   rŠ   rw   r@   r¥   r~   Útorv   ÚeinsumÚshaper©   ÚmathÚsqrtrŸ   r   ÚSoftmaxr†   Ú
contiguousr    )r5   r   r]   r¬   r­   r®   r¯   r°   r±   Úmixed_query_layerÚis_cross_attentionÚ	key_layerÚvalue_layerÚquery_layerÚattention_scoresr‘   Úposition_ids_lÚposition_ids_rÚdistanceÚpositional_embeddingÚrelative_position_scoresÚrelative_position_scores_queryÚrelative_position_scores_keyÚ
batch_sizeÚn_headÚd_headÚbbox_pos_scoresÚattention_probsÚcontext_layerÚnew_context_layer_shapeÚoutputss                                  r*   rJ   zBrosSelfAttention.forward;  s÷  € ð !ŸJ™J }Ó5Ðð
 3¸$Ð>Ðá .Ð"<à& qÑ)ˆIØ(¨Ñ+ˆKØ3ŠNÙØ×1Ñ1°$·(±(Ð;PÓ2QÓRˆIØ×3Ñ3°D·J±JÐ?TÓ4UÓVˆKØ3‰NØÐ'Ø×1Ñ1°$·(±(¸=Ó2IÓJˆIØ×3Ñ3°D·J±J¸}Ó4MÓNˆKÜŸ	™	 >°!Ñ#4°iÐ"@ÀaÔHˆIÜŸ)™) ^°AÑ%6¸Ð$DÈ!ÔL‰Kà×1Ñ1°$·(±(¸=Ó2IÓJˆIØ×3Ñ3°D·J±J¸}Ó4MÓNˆKà×/Ñ/Ð0AÓBˆà�?Š?ð (¨Ð5ˆNô !Ÿ<™<¨°Y×5HÑ5HÈÈRÓ5PÓQÐà×'Ñ'¨>Ò9¸T×=YÑ=YÐ]qÓ=qØ&×+Ñ+Ó-¨aÑ0ˆJÜ"Ÿ\™\¨*¼E¿J¹JÈ}×OcÑOcÔd×iÑiÐjlÐnoÓpˆNÜ"Ÿ\™\¨*¼E¿J¹JÈ}×OcÑOcÔd×iÑiÐjkÐmoÓpˆNØ%¨Ñ6ˆHØ#'×#:Ñ#:¸8Àd×FbÑFbÑ;bÐefÑ;fÓ#gÐ Ø#7×#:Ñ#:À×ARÑARÐ#:Ó#SÐ à×+Ñ+¨~Ò=Ü+0¯<©<Ð8HÈ+ÐWkÓ+lÐ(Ø#3Ð6NÑ#NÑ Ø×-Ñ-Ð1EÒEÜ16·±Ð>NÐP[Ð]qÓ1rÐ.Ü/4¯|©|Ð<LÈiÐYmÓ/nÐ,à#3Ð6TÑ#TÐWsÑ#sÐ ð 2=×1BÑ1BÑ.ˆ
�F˜J¨Ø#×(Ñ(¨°ZÀÈVÓTˆØ#×+Ñ+ªLÓ9ˆÜŸ,™,Ð'8¸;ÈÐ:UÓVˆà+¨oÑ=Ðà+¬d¯i©i¸×8PÑ8PÓ.QÑQÐØÐ%à/°.Ñ@Ðð -œ"Ÿ*™*¨Ô,Ð-=Ó>ˆð Ÿ,™, Ó7ˆð Ð Ø-°	Ñ9ˆOäŸ™ _°kÓBˆà%×-Ñ-¨a°°A°qÓ9×DÑDÓFˆØ"/×"4Ñ"4Ó"6°s¸Ð";¸t×?QÑ?QÐ>SÑ"SÐØ*˜×*Ñ*Ð,CÐDˆá6G�= /Ñ2ÈmÐM]ˆà�?Š?Ø Ð 1Ñ1ˆGØˆr)   ©NNNNNF)r!   r"   r#   r1   r%   rL   r«   r   r   r&   rJ   rM   rN   s   @r*   r—   r—     sæ   ø„ ô,ð0% e§l¡ló %ð 26Ø,0Ø8<Ø9=ØDHØ49ñfà—|‘|ðfð —l‘lðfð ! §¡Ñ.ð	fð
 ˜EŸL™LÑ)ðfð  (¨¯©Ñ5ðfð !)¨¯©Ñ 6ðfð !  u¨U×->Ñ->Ñ'?Ñ!@ÑAðfð $ E§L¡LÑ1ðfð 
ˆu�|‰|Ñ	÷fr)   r—   c                   ón   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  dej
                  fd„Zˆ xZS )ÚBrosSelfOutputc                 ó(  •— t         ‰| �  «        t        j                  |j                  |j                  «      | _        t        j                  |j                  |j                  ¬«      | _        t        j                  |j                  «      | _
        y ©Nro   )r0   r1   r   rc   r{   Údenser‚   rƒ   r„   r…   r†   rV   s     €r*   r1   zBrosSelfOutput.__init__¦  s`   ø€ Ü‰ÑÔÜ—Y‘Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸ™ f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z‘z &×"<Ñ"<Ó=ˆ�r)   r   Úinput_tensorr9   c                 ór   — | j                  |«      }| j                  |«      }| j                  ||z   «      }|S rR   ©rÖ   r†   r‚   ©r5   r   r×   s      r*   rJ   zBrosSelfOutput.forward¬  ó7   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØŸ™ }°|Ñ'CÓDˆØÐr)   rK   rN   s   @r*   rÓ   rÓ   ¥  ó1   ø„ ô>ð U§\¡\ð ÀÇÁð ÐRW×R^ÑR^÷ r)   rÓ   c                   ó4  ‡ — e Zd Zˆ fd„Zd„ Z	 	 	 	 	 	 ddej                  dej                  deej                     deej                     deej                     deej                     d	eeeej                           d
ee
   deej                     fd„Zˆ xZS )ÚBrosAttentionc                 ó€   •— t         ‰| �  «        t        |«      | _        t	        |«      | _        t        «       | _        y rR   )r0   r1   r—   r5   rÓ   ÚoutputÚsetÚpruned_headsrV   s     €r*   r1   zBrosAttention.__init__´  s0   ø€ Ü‰ÑÔÜ% fÓ-ˆŒ	Ü$ VÓ,ˆŒÜ›EˆÕr)   c                 ó>  — t        |«      dk(  ry t        || j                  j                  | j                  j                  | j
                  «      \  }}t        | j                  j                  |«      | j                  _        t        | j                  j                  |«      | j                  _        t        | j                  j                  |«      | j                  _	        t        | j                  j                  |d¬«      | j                  _        | j                  j                  t        |«      z
  | j                  _        | j                  j                  | j                  j                  z  | j                  _        | j
                  j                  |«      | _        y )Nr   r   r=   )Úlenr   r5   r�   rŸ   râ   r   r¡   r¢   r£   rà   rÖ   r    Úunion)r5   ÚheadsÚindexs      r*   Úprune_headszBrosAttention.prune_headsº  s  € Üˆu‹:˜Š?ØÜ7ØØ�I‰I×)Ñ)Ø�I‰I×)Ñ)Ø×Ñó	
‰ˆˆuô -¨T¯Y©Y¯_©_¸eÓDˆ�	‰	ŒÜ*¨4¯9©9¯=©=¸%Ó@ˆ�	‰	ŒÜ,¨T¯Y©Y¯_©_¸eÓDˆ�	‰	ŒÜ.¨t¯{©{×/@Ñ/@À%ÈQÔOˆ�‰Ôð )-¯	©	×(EÑ(EÌÈEË
Ñ(Rˆ�	‰	Ô%Ø"&§)¡)×"?Ñ"?À$Ç)Á)×B_ÑB_Ñ"_ˆ�	‰	ÔØ ×-Ñ-×3Ñ3°EÓ:ˆÕr)   r   r]   r¬   r­   r®   r¯   r°   r±   r9   c	           
      ót   — | j                  ||||||||¬«      }	| j                  |	d   |«      }
|
f|	dd  z   }|S )N©r   r]   r¬   r­   r®   r¯   r°   r±   r   r   )r5   rà   )r5   r   r]   r¬   r­   r®   r¯   r°   r±   Úself_outputsÚattention_outputrÐ   s               r*   rJ   zBrosAttention.forwardÏ  s_   € ð —y‘yØ'Ø%Ø)ØØ"7Ø#9Ø)Ø/ð !ó 	
ˆð  Ÿ;™; |°A¡¸ÓFÐØ#Ð%¨°Q°RÐ(8Ñ8ˆØˆr)   rÑ   )r!   r"   r#   r1   rè   r%   rL   r   r   r&   ÚboolrJ   rM   rN   s   @r*   rÞ   rÞ   ³  sÌ   ø„ ô"ò;ð2 26Ø,0Ø8<Ø9=ØDHØ,1ñà—|‘|ðð —l‘lðð ! §¡Ñ.ð	ð
 ˜EŸL™LÑ)ðð  (¨¯©Ñ5ðð !)¨¯©Ñ 6ðð !  u¨U×->Ñ->Ñ'?Ñ!@ÑAðð $ D™>ðð 
ˆu�|‰|Ñ	÷r)   rÞ   c                   óV   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  fd„Zˆ xZS )ÚBrosIntermediatec                 ó  •— t         ‰| �  «        t        j                  |j                  |j
                  «      | _        t        |j                  t        «      rt        |j                     | _        y |j                  | _        y rR   )r0   r1   r   rc   r{   Úintermediate_sizerÖ   Ú
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnrV   s     €r*   r1   zBrosIntermediate.__init__ë  s]   ø€ Ü‰ÑÔÜ—Y‘Y˜v×1Ñ1°6×3KÑ3KÓLˆŒ
Ü�f×'Ñ'¬Ô-Ü'-¨f×.?Ñ.?Ñ'@ˆDÕ$à'-×'8Ñ'8ˆDÕ$r)   r   r9   c                 óJ   — | j                  |«      }| j                  |«      }|S rR   )rÖ   rõ   )r5   r   s     r*   rJ   zBrosIntermediate.forwardó  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr)   rK   rN   s   @r*   rï   rï   ê  s#   ø„ ô9ð U§\¡\ð °e·l±l÷ r)   rï   c                   ón   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  dej
                  fd„Zˆ xZS )Ú
BrosOutputc                 ó(  •— t         ‰| �  «        t        j                  |j                  |j
                  «      | _        t        j                  |j
                  |j                  ¬«      | _        t        j                  |j                  «      | _        y rÕ   )r0   r1   r   rc   rñ   r{   rÖ   r‚   rƒ   r„   r…   r†   rV   s     €r*   r1   zBrosOutput.__init__ú  s`   ø€ Ü‰ÑÔÜ—Y‘Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
ÜŸ™ f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z‘z &×"<Ñ"<Ó=ˆ�r)   r   r×   r9   c                 ór   — | j                  |«      }| j                  |«      }| j                  ||z   «      }|S rR   rÙ   rÚ   s      r*   rJ   zBrosOutput.forward   rÛ   r)   rK   rN   s   @r*   rø   rø   ù  rÜ   r)   rø   c                   ó4  ‡ — e Zd Zˆ fd„Z	 	 	 	 	 	 ddej
                  dej
                  deej                     deej                     deej                     deej                     deeeej                           d	ee	   d
eej
                     fd„Z
d„ Zˆ xZS )Ú	BrosLayerc                 ób  •— t         ‰| �  «        |j                  | _        d| _        t	        |«      | _        |j                  | _        |j                  | _        | j                  r*| j                  st        | › d�«      ‚t	        |«      | _	        t        |«      | _        t        |«      | _        y )Nr   z> should be used as a decoder model if cross attention is added)r0   r1   Úchunk_size_feed_forwardÚseq_len_dimrÞ   Ú	attentionr¦   Úadd_cross_attentionÚ	ExceptionÚcrossattentionrï   Úintermediaterø   rà   rV   s     €r*   r1   zBrosLayer.__init__  s”   ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ& vÓ.ˆŒØ ×+Ñ+ˆŒØ#)×#=Ñ#=ˆÔ Ø×#Ò#Ø—?’?Ü 4 &Ð(fÐ gÓhÐhÜ"/°Ó"7ˆDÔÜ,¨VÓ4ˆÔÜ  Ó(ˆ�r)   r   r]   r¬   r­   r®   r¯   r°   r±   r9   c	           	      óÔ  — |�|d d nd }	| j                  ||||||	¬«      }
|
d   }| j                  r|
dd }|
d   }n|
dd  }d }| j                  rT|�Rt        | d«      rt        d| › d�«      ‚|�|d	d  nd }| j	                  |||||||«      }|d   }||dd z   }|d   }|z   }t        | j                  | j                  | j                  |«      }|f|z   }| j                  r|fz   }|S )
Nr;   )r]   r¬   r­   r±   r°   r   r   r<   r  z'If `encoder_hidden_states` are passed, z` has to be instantiated with cross-attention layers by setting `config.add_cross_attention=True`r³   )	r   r¦   r�   r  r  r   Úfeed_forward_chunkrþ   rÿ   )r5   r   r]   r¬   r­   r®   r¯   r°   r±   Úself_attn_past_key_valueÚself_attention_outputsrì   rÐ   Úpresent_key_valueÚcross_attn_present_key_valueÚcross_attn_past_key_valueÚcross_attention_outputsÚlayer_outputs                     r*   rJ   zBrosLayer.forward  s‚  € ð :HÐ9S >°"°1Ñ#5ÐY]Ð Ø!%§¡ØØ%Ø)ØØ/Ø3ð "0ó "
Ðð 2°!Ñ4Ðð �?Š?Ø,¨Q¨rÐ2ˆGØ 6°rÑ :Ñà,¨Q¨RÐ0ˆGà'+Ð$Ø�?Š?Ð4Ð@Ü�tÐ-Ô.ÜØ=¸d¸Vð  Ddð  eóð ð
 @NÐ?Y¨°r°sÑ(;Ð_cÐ%Ø&*×&9Ñ&9Ø ØØØ%Ø&Ø)Ø!ó'Ð#ð  7°qÑ9ÐØÐ 7¸¸"Ð =Ñ=ˆGð ,CÀ2Ñ+FÐ(Ø 1Ð4PÑ PÐä0Ø×#Ñ#Ø×(Ñ(Ø×ÑØó	
ˆð  �/ GÑ+ˆð �?Š?ØÐ!2Ð 4Ñ4ˆGàˆr)   c                 óL   — | j                  |«      }| j                  ||«      }|S rR   )r  rà   )r5   rì   Úintermediate_outputr  s       r*   r  zBrosLayer.feed_forward_chunk[  s,   € Ø"×/Ñ/Ð0@ÓAÐØ—{‘{Ð#6Ð8HÓIˆØÐr)   rÑ   )r!   r"   r#   r1   r%   rL   r   r&   r   rí   rJ   r  rM   rN   s   @r*   rü   rü     sß   ø„ ô)ð$ 7;Ø15Ø=AØ>BØDHØ,1ñCà—|‘|ðCð —l‘lðCð ! ×!2Ñ!2Ñ3ð	Cð
 ˜E×-Ñ-Ñ.ðCð  (¨×(9Ñ(9Ñ:ðCð !)¨×):Ñ):Ñ ;ðCð !  u¨U×->Ñ->Ñ'?Ñ!@ÑAðCð $ D™>ðCð 
ˆu�|‰|Ñ	óCöJr)   rü   c                   ó\  ‡ — e Zd Zˆ fd„Z	 	 	 	 	 	 	 	 	 ddej
                  dej
                  deej                     deej                     deej                     deej                     deeeej                           d	ee	   d
ee	   dee	   dee	   de
eej
                     ef   fd„Zˆ xZS )ÚBrosEncoderc                 óÂ   •— t         ‰| �  «        || _        t        j                  t        |j                  «      D �cg c]  }t        |«      ‘Œ c}«      | _        y c c}w rR   )	r0   r1   r6   r   Ú
ModuleListrY   Únum_hidden_layersrü   Úlayer)r5   r6   Ú_r7   s      €r*   r1   zBrosEncoder.__init__b  sC   ø€ Ü‰ÑÔØˆŒÜ—]‘]¼uÀV×E]ÑE]Ó?^Ö#_¸!¤I¨fÕ$5Ò#_Ó`ˆ�
ùÒ#_s   ½Ar   r]   r¬   r­   r®   r¯   Úpast_key_valuesÚ	use_cacher±   Úoutput_hidden_statesÚreturn_dictr9   c                 ó„  — |
rdnd }|	rdnd }|	r| j                   j                  rdnd }|rdnd }t        | j                  «      D ]Ê  \  }}|
r||fz   }|�||   nd }|�||   nd }t	        | j                   dd«      rH| j
                  r<|rt        j                  d«       d}| j                  |j                  |||||||	«      }n |||||||||	¬«      }|d   }|r	||d   fz  }|	sŒ¢||d   fz   }| j                   j                  sŒÂ||d	   fz   }ŒÌ |
r||fz   }|st        d
„ |||||fD «       «      S t        |||||¬«      S )Nr(   Úgradient_checkpointingFzh`use_cache=True` is incompatible with `config.gradient_checkpointing=True`. Setting `use_cache=False`...rê   r   r<   r   r;   c              3   ó$   K  — | ]  }|�|–— Œ
 y ­wrR   r(   )Ú.0Úvs     r*   ú	<genexpr>z&BrosEncoder.forward.<locals>.<genexpr>ª  s   è ø€ ò 
àð �=ô ñ
ùs   ‚)Úlast_hidden_stater  r   r    Úcross_attentions)r6   r  Ú	enumerater  r‡   ÚtrainingÚloggerÚwarningÚ_gradient_checkpointing_funcÚ__call__Útupler   )r5   r   r]   r¬   r­   r®   r¯   r  r  r±   r  r  Úall_hidden_statesÚall_self_attentionsÚall_cross_attentionsÚnext_decoder_cacher\   Úlayer_moduleÚlayer_head_maskr°   Úlayer_outputss                        r*   rJ   zBrosEncoder.forwardg  sÊ  € ñ #7™B¸DÐÙ$5™b¸4ÐÙ%6¸4¿;¹;×;ZÒ;Z™rÐ`dÐá#,™R°$ÐÜ(¨¯©Ó4ò *	V‰OˆAˆ|Ù#Ø$5¸Ð8HÑ$HÐ!à.7Ð.C˜i¨šlÈˆOØ3BÐ3N˜_¨QÒ/ÐTXˆNä�t—{‘{Ð$<¸eÔDÈÏÊÙÜ—N‘Nð/ôð !&�IØ $× AÑ AØ ×)Ñ)Ø!Ø Ø"Ø#Ø)Ø*Ø%ó	!‘ñ !-Ø"/Ø!-Ø#1Ø-Ø*?Ø+AØ#1Ø&7ô	!�ð *¨!Ñ,ˆMÙØ" }°RÑ'8Ð&:Ñ:Ð"Ú Ø&9¸]È1Ñ=MÐ<OÑ&OÐ#Ø—;‘;×2Ó2Ø+?À=ÐQRÑCSÐBUÑ+UÑ(ðU*	VñX  Ø 1°]Ð4DÑ DÐáÜñ 
ð "Ø&Ø%Ø'Ø(ðô
ó 
ð 
ô 9Ø+Ø.Ø+Ø*Ø1ô
ð 	
r)   )	NNNNNNFFT)r!   r"   r#   r1   r%   rL   r   r&   r   rí   r   r   rJ   rM   rN   s   @r*   r  r  a  s  ø„ ôað 7;Ø15Ø=AØ>BØEIØ$(Ø,1Ø/4Ø&*ñT
à—|‘|ðT
ð —l‘lðT
ð ! ×!2Ñ!2Ñ3ð	T
ð
 ˜E×-Ñ-Ñ.ðT
ð  (¨×(9Ñ(9Ñ:ðT
ð !)¨×):Ñ):Ñ ;ðT
ð " %¨¨e×.?Ñ.?Ñ(@Ñ"AÑBðT
ð ˜D‘>ðT
ð $ D™>ðT
ð ' t™nðT
ð ˜d‘^ðT
ð 
ˆu�U—\‘\Ñ"Ð$MÐMÑ	N÷T
r)   r  c                   óV   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  fd„Zˆ xZS )Ú
BrosPoolerc                 ó²   •— t         ‰| �  «        t        j                  |j                  |j                  «      | _        t        j                  «       | _        y rR   )r0   r1   r   rc   r{   rÖ   ÚTanhÚ
activationrV   s     €r*   r1   zBrosPooler.__init__À  s9   ø€ Ü‰ÑÔÜ—Y‘Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸ'™'›)ˆ�r)   r   r9   c                 ó\   — |d d …df   }| j                  |«      }| j                  |«      }|S )Nr   )rÖ   r5  )r5   r   Úfirst_token_tensorÚpooled_outputs       r*   rJ   zBrosPooler.forwardÅ  s6   € ð +ª1¨a¨4Ñ0ÐØŸ
™
Ð#5Ó6ˆØŸ™¨Ó6ˆØÐr)   rK   rN   s   @r*   r2  r2  ¿  s#   ø„ ô$ð
 U§\¡\ð °e·l±l÷ r)   r2  c                   óV   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  fd„Zˆ xZS )ÚBrosRelationExtractorc                 óR  •— t         ‰| �  «        |j                  | _        |j                  | _        |j                  | _        |j                  | _        t        j                  | j                  «      | _	        t        j                  | j                  | j                  | j
                  z  «      | _        t        j                  | j                  | j                  | j
                  z  «      | _        t        j                  t        j                  d| j                  «      «      | _        y )Nr   )r0   r1   Ún_relationsr{   Úbackbone_hidden_sizeÚhead_hidden_sizeÚclassifier_dropout_probr   r„   Údroprc   r¡   r¢   Ú	Parameterr%   r‰   Ú
dummy_noderV   s     €r*   r1   zBrosRelationExtractor.__init__Ï  sÏ   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔØ$*×$6Ñ$6ˆÔ!Ø &× 2Ñ 2ˆÔØ'-×'EÑ'EˆÔ$ä—J‘J˜t×;Ñ;Ó<ˆŒ	Ü—Y‘Y˜t×8Ñ8¸$×:JÑ:JÈT×MbÑMbÑ:bÓcˆŒ
ä—9‘9˜T×6Ñ6¸×8HÑ8HÈ4×K`ÑK`Ñ8`ÓaˆŒäŸ,™,¤u§{¡{°1°d×6OÑ6OÓ'PÓQˆ�r)   rÀ   r¾   c           	      óº  — | j                  | j                  |«      «      }| j                  j                  d«      j	                  d|j                  d«      d«      }t        j                  ||gd¬«      }| j                  | j                  |«      «      }|j                  |j                  d«      |j                  d«      | j                  | j                  «      }|j                  |j                  d«      |j                  d«      | j                  | j                  «      }t        j                  |j                  dddd«      |j                  dddd«      «      }|S )Nr   r   ©Úaxisr;   r
   )r¡   r@  rB  Ú	unsqueezeÚrepeatr?   r%   rA   r¢   r@   r<  r>  r´   r©   )r5   rÀ   r¾   Ú	dummy_vecÚrelation_scores        r*   rJ   zBrosRelationExtractor.forwardÝ  s  € Ø—j‘j §¡¨;Ó!7Ó8ˆà—O‘O×-Ñ-¨aÓ0×7Ñ7¸¸9¿>¹>È!Ó;LÈaÓPˆ	Ü—I‘I˜y¨)Ð4¸1Ô=ˆ	Ø—H‘H˜TŸY™Y yÓ1Ó2ˆ	à!×&Ñ&Ø×Ñ˜QÓ ×!1Ñ!1°!Ó!4°d×6FÑ6FÈ×H]ÑH]ó
ˆð —N‘N 9§>¡>°!Ó#4°i·n±nÀQÓ6GÈ×IYÑIYÐ[_×[pÑ[pÓqˆ	äŸ™Ø×Ñ  1 a¨Ó+¨Y×->Ñ->¸qÀ!ÀQÈÓ-Jó
ˆð Ðr)   rK   rN   s   @r*   r:  r:  Î  s$   ø„ ôRð 5§<¡<ð ¸E¿L¹L÷ r)   r:  c                   ó   — e Zd ZdZeZdZd„ Zy)ÚBrosPreTrainedModelz†
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models.
    Úbrosc                 ó  — t        |t        j                  «      rm|j                  j                  j                  d| j                  j                  ¬«       |j                  �%|j                  j                  j                  «        yyt        |t        j                  «      rz|j                  j                  j                  d| j                  j                  ¬«       |j                  �2|j                  j                  |j                     j                  «        yyt        |t        j                  «      rJ|j                  j                  j                  «        |j                  j                  j                  d«       yy)zInitialize the weightsr.   )ÚmeanÚstdNg      ð?)rò   r   rc   ÚweightÚdataÚnormal_r6   Úinitializer_rangera   Úzero_ry   rn   r‚   Úfill_)r5   Úmodules     r*   Ú_init_weightsz!BrosPreTrainedModel._init_weightsù  s  € ä�fœbŸi™iÔ(ð �M‰M×Ñ×&Ñ&¨C°T·[±[×5RÑ5RÐ&ÔSØ�{‰{Ð&Ø—‘× Ñ ×&Ñ&Õ(ð 'ä˜¤§¡Ô-Ø�M‰M×Ñ×&Ñ&¨C°T·[±[×5RÑ5RÐ&ÔSØ×!Ñ!Ð-Ø—‘×"Ñ" 6×#5Ñ#5Ñ6×<Ñ<Õ>ð .ä˜¤§¡Ô-Ø�K‰K×Ñ×"Ñ"Ô$Ø�M‰M×Ñ×$Ñ$ SÕ)ð .r)   N)r!   r"   r#   r$   r   Úconfig_classÚbase_model_prefixrW  r(   r)   r*   rK  rK  ð  s   „ ñð
 €LØÐó*r)   rK  z^The bare Bros Model transformer outputting raw hidden-states without any specific head on top.c            #       ó(  ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Z eej                  d«      «       e
ee¬«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddeej                     deej                     d	eej                     d
eej                     deej                     deej                     deej                     deej                     deej                     deeej"                        dee   dee   dee   dee   deeej                     ef   fd„«       «       Zˆ xZS )Ú	BrosModelc                 óÚ   •— t         ‰| �  |«       || _        t        |«      | _        t        |«      | _        t        |«      | _        |rt        |«      nd | _
        | j                  «        y rR   )r0   r1   r6   rl   r”   r_   Úbbox_embeddingsr  Úencoderr2  ÚpoolerÚinit_weights)r5   r6   Úadd_pooling_layerr7   s      €r*   r1   zBrosModel.__init__  sX   ø€ Ü‰Ñ˜Ô ØˆŒä,¨VÓ4ˆŒÜ1°&Ó9ˆÔÜ" 6Ó*ˆŒá,=”j Ô(À4ˆŒà×ÑÕr)   c                 ó.   — | j                   j                  S rR   ©r”   r}   )r5   s    r*   Úget_input_embeddingszBrosModel.get_input_embeddings  s   € Ø�‰×.Ñ.Ð.r)   c                 ó&   — || j                   _        y rR   rc  )r5   r£   s     r*   Úset_input_embeddingszBrosModel.set_input_embeddings  s   € Ø*/ˆ�‰Õ'r)   c                 ó˜   — |j                  «       D ]7  \  }}| j                  j                  |   j                  j	                  |«       Œ9 y)z�
        Prunes heads of the model. heads_to_prune: dict of {layer_num: list of heads to prune in this layer} See base
        class PreTrainedModel
        N)Úitemsr^  r  r   rè   )r5   Úheads_to_pruner  ræ   s       r*   Ú_prune_headszBrosModel._prune_heads!  sE   € ð
 +×0Ñ0Ó2ò 	C‰LˆE�5Ø�L‰L×Ñ˜uÑ%×/Ñ/×;Ñ;¸EÕBñ	Cr)   úbatch_size, sequence_length©Úoutput_typerX  r‹   rW   r¬   rt   rs   r­   rŒ   r®   r¯   r  r  r±   r  r  r9   c                 ó   — |�|n| j                   j                  }|�|n| j                   j                  }|�|n| j                   j                  }| j                   j                  r|�|n| j                   j
                  }nd}|�|�t        d«      ‚|�|j                  «       }n!|�|j                  «       dd }nt        d«      ‚|€t        d«      ‚|\  }}|�|j                  n|j                  }|
�|
d   d   j                  d   nd}|€t        j                  ||¬	«      }|€pt        | j                  d
«      r4| j                  j                  dd…d|…f   }|j                  ||«      }|}n&t        j                   |t        j"                  |¬«      }| j%                  |||«      }| j                   j                  rE|�C|j                  «       \  }}}||f}|	€t        j                  ||¬	«      }	| j'                  |	«      }nd}| j)                  || j                   j*                  «      }| j                  |||||¬«      }|j                  d   dk(  r|dd…dd…g d¢f   }|| j                   j,                  z  }| j/                  |«      }| j1                  |||||||
||||¬«      }|d   } | j2                  �| j3                  | «      nd}!|s
| |!f|dd z   S t5        | |!|j6                  |j8                  |j:                  |j<                  ¬«      S )a�  
        Returns:

        Examples:

        ```python
        >>> import torch
        >>> from transformers import BrosProcessor, BrosModel

        >>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

        >>> model = BrosModel.from_pretrained("jinho8345/bros-base-uncased")

        >>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
        >>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
        >>> encoding["bbox"] = bbox

        >>> outputs = model(**encoding)
        >>> last_hidden_states = outputs.last_hidden_state
        ```NFzDYou cannot specify both input_ids and inputs_embeds at the same timer<   z5You have to specify either input_ids or inputs_embedszYou have to specify bboxr   r;   )rw   rt   ru   )r‹   rs   rt   rŒ   r�   é   )r   r   r;   r   r;   r
   r   r
   )
r]   r¬   r­   r®   r¯   r  r  r±   r  r  r   )r!  Úpooler_outputr  r   r    r"  )r6   r±   r  Úuse_return_dictr¦   r  rž   r?   rw   r·   r%   Úonesr�   r”   rt   rˆ   r‰   rŠ   Úget_extended_attention_maskÚinvert_attention_maskÚget_head_maskr  Ú
bbox_scaler]  r^  r_  r   r  r   r    r"  )"r5   r‹   rW   r¬   rt   rs   r­   rŒ   r®   r¯   r  r  r±   r  r  r�   rÉ   r‘   rw   r�   r’   r“   Úextended_attention_maskÚencoder_batch_sizeÚencoder_sequence_lengthr  Úencoder_hidden_shapeÚencoder_extended_attention_maskÚembedding_outputÚscaled_bboxÚbbox_position_embeddingsÚencoder_outputsÚsequence_outputr8  s"                                     r*   rJ   zBrosModel.forward)  sV  € ðN 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà�;‰;×!Ò!Ø%.Ð%:™	ÀÇÁ×@UÑ@U‰IàˆIàÐ  ]Ð%>ÜÐcÓdÐdØÐ"Ø#Ÿ.™.Ó*‰KØÐ&Ø'×,Ñ,Ó.¨s°Ð3‰KäÐTÓUÐUàˆ<ÜÐ7Ó8Ð8à!,Ñˆ
�JØ%.Ð%:�×!Ò!À×@TÑ@Tˆð DSÐC^ °Ñ!3°AÑ!6×!<Ñ!<¸QÒ!?ÐdeÐàÐ!Ü"ŸZ™Z¨¸FÔCˆNàÐ!Ü�t—‘Ð(8Ô9Ø*.¯/©/×*HÑ*HÊÈKÈZÈKÈÑ*XÐ'Ø3J×3QÑ3QÐR\Ð^hÓ3iÐ0Ø!A‘ä!&§¡¨[ÄÇ
Á
ÐSYÔ!Z�ð 15×0PÑ0PÐQ_ÐalÐntÓ0uÐð �;‰;×!Ò!Ð&;Ð&GØ=R×=WÑ=WÓ=YÑ:ÐÐ 7¸Ø$6Ð8OÐ#PÐ Ø%Ð-Ü).¯©Ð4HÐQWÔ)XÐ&Ø.2×.HÑ.HÐI_Ó.`Ñ+à.2Ð+ð ×&Ñ& y°$·+±+×2OÑ2OÓPˆ	àŸ?™?ØØ%Ø)Ø'Ø#9ð +ó 
Ðð �:‰:�b‰>˜QÒØšš1Ò6Ð6Ñ7ˆDØ˜TŸ[™[×3Ñ3Ñ3ˆØ#'×#7Ñ#7¸Ó#DÐ àŸ,™,ØØ1Ø2ØØ"7Ø#BØ+ØØ/Ø!5Ø#ð 'ó 
ˆð *¨!Ñ,ˆØ8<¿¹Ð8O˜Ÿ™ OÔ4ÐUYˆáØ# ]Ð3°oÀaÀbÐ6IÑIÐIä;Ø-Ø'Ø+×;Ñ;Ø)×7Ñ7Ø&×1Ñ1Ø,×=Ñ=ô
ð 	
r)   )T)NNNNNNNNNNNNNN)r!   r"   r#   r1   rd  rf  rj  r   ÚBROS_INPUTS_DOCSTRINGÚformatr   r   Ú_CONFIG_FOR_DOCr   r%   rL   r   r&   rí   r   r   rJ   rM   rN   s   @r*   r[  r[  
  s§  ø„ õ

ò/ò0òCñ +Ð+@×+GÑ+GÐHeÓ+fÓgÙÐ+WÐfuÔvð -1Ø'+Ø15Ø15Ø/3Ø,0Ø04Ø8<Ø9=Ø=AØ$(Ø,0Ø/3Ø&*ñK
à˜EŸL™LÑ)ðK
ð �u—|‘|Ñ$ðK
ð ! §¡Ñ.ð	K
ð
 ! §¡Ñ.ðK
ð ˜uŸ|™|Ñ,ðK
ð ˜EŸL™LÑ)ðK
ð   §¡Ñ-ðK
ð  (¨¯©Ñ5ðK
ð !)¨¯©Ñ 6ðK
ð " $ u×'8Ñ'8Ñ"9Ñ:ðK
ð ˜D‘>ðK
ð $ D™>ðK
ð ' t™nðK
ð ˜d‘^ðK
ð  
ˆu�U—\‘\Ñ"Ð$PÐPÑ	Qò!K
ó wó hôK
r)   r[  z£
    Bros Model with a token classification head on top (a linear layer on top of the hidden-states output) e.g. for
    Named-Entity-Recognition (NER) tasks.
    c                   óè  ‡ — e Zd ZdgZˆ fd„Z eej                  d«      «       ee	e
¬«      	 	 	 	 	 	 	 	 	 	 	 	 ddeej                     deej                     deej                     deej                     d	eej                     d
eej                     deej                     deej                     deej                     dee   dee   dee   deeej                     e	f   fd„«       «       Zˆ xZS )ÚBrosForTokenClassificationr_  c                 ó`  •— t         ‰| �  |«       |j                  | _        t        |«      | _        t        |d«      r|j                  n|j                  }t        j                  |«      | _
        t        j                  |j                  |j                  «      | _        | j                  «        y ©NÚclassifier_dropout)r0   r1   Ú
num_labelsr[  rL  r�   rˆ  r…   r   r„   r†   rc   r{   Ú
classifierr`  ©r5   r6   rˆ  r7   s      €r*   r1   z#BrosForTokenClassification.__init__Ã  s‡   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä˜fÓ%ˆŒ	ä)0°Ð9MÔ)NˆF×%Ò%ÐTZ×TnÑTnð 	ô —z‘zÐ"4Ó5ˆŒÜŸ)™) F×$6Ñ$6¸×8IÑ8IÓJˆŒà×ÑÕr)   rk  rl  r‹   rW   r¬   Úbbox_first_token_maskrt   rs   r­   rŒ   Úlabelsr±   r  r  r9   c                 óB  — |�|n| j                   j                  }| j                  ||||||||
||¬«
      }|d   }| j                  |«      }| j	                  |«      }d}|	�ˆt        «       }|�J|j                  d«      } ||j                  d| j                  «      |   |	j                  d«      |   «      }n2 ||j                  d| j                  «      |	j                  d«      «      }|s|f|dd z   }|�|f|z   S |S t        |||j                  |j                  ¬«      S )ax  

        Returns:

        Examples:

        ```python
        >>> import torch
        >>> from transformers import BrosProcessor, BrosForTokenClassification

        >>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

        >>> model = BrosForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

        >>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
        >>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
        >>> encoding["bbox"] = bbox

        >>> outputs = model(**encoding)
        ```N)	rW   r¬   rt   rs   r­   rŒ   r±   r  r  r   r<   r;   ©r   Úlogitsr   r    )r6   rq  rL  r†   rŠ  r	   r@   r‰  r   r   r    )r5   r‹   rW   r¬   rŒ  rt   rs   r­   rŒ   r�  r±   r  r  rÐ   r€  r�  r   Úloss_fctrà   s                      r*   rJ   z"BrosForTokenClassification.forwardÐ  sF  € ðL &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—)‘)ØØØ)Ø)Ø%ØØ'Ø/Ø!5Ø#ð ó 
ˆð " !™*ˆàŸ,™, Ó7ˆØ—‘ Ó1ˆàˆØÐÜ'Ó)ˆHØ$Ð0Ø(=×(BÑ(BÀ2Ó(FÐ%ÙØ—K‘K  D§O¡OÓ4Ð5JÑKÈVÏ[É[ÐY[Ë_Ð]rÑMsó‘ñ   §¡¨B°·±Ó @À&Ç+Á+ÈbÃ/ÓR�áØ�Y ¨¨ Ñ,ˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä$ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r)   ©NNNNNNNNNNNN©r!   r"   r#   Ú"_keys_to_ignore_on_load_unexpectedr1   r   r�  r‚  r   r   rƒ  r   r%   rL   rí   r   r   rJ   rM   rN   s   @r*   r…  r…  ¹  sp  ø„ ð +4¨Ð&ôñ +Ð+@×+GÑ+GÐHeÓ+fÓgÙÐ+@ÈÔ_ð -1Ø'+Ø15Ø8<Ø15Ø/3Ø,0Ø04Ø)-Ø,0Ø/3Ø&*ñL
à˜EŸL™LÑ)ðL
ð �u—|‘|Ñ$ðL
ð ! §¡Ñ.ð	L
ð
  (¨¯©Ñ5ðL
ð ! §¡Ñ.ðL
ð ˜uŸ|™|Ñ,ðL
ð ˜EŸL™LÑ)ðL
ð   §¡Ñ-ðL
ð ˜Ÿ™Ñ&ðL
ð $ D™>ðL
ð ' t™nðL
ð ˜d‘^ðL
ð 
ˆu�U—\‘\Ñ"Ð$9Ð9Ñ	:òL
ó `ó hôL
r)   r…  a  
    Bros Model with a token classification head on top (initial_token_layers and subsequent_token_layer on top of the
    hidden-states output) e.g. for Named-Entity-Recognition (NER) tasks. The initial_token_classifier is used to
    predict the first token of each entity, and the subsequent_token_classifier is used to predict the subsequent
    tokens within an entity. Compared to BrosForTokenClassification, this model is more robust to serialization errors
    since it predicts next token from one token.
    c            !       ó  ‡ — e Zd ZdgZˆ fd„Z eej                  d«      «       ee	e
¬«      	 	 	 	 	 	 	 	 	 	 	 	 	 ddeej                     deej                     deej                     deej                     d	eej                     d
eej                     deej                     deej                     deej                     deej                     dee   dee   dee   deeej                     e	f   fd„«       «       Zˆ xZS )Ú!BrosSpadeEEForTokenClassificationr_  c           	      óf  •— t         ‰| �  |«       || _        |j                  | _        |j                  | _        |j
                  | _        t        |«      | _        t        |d«      r|j                  n|j                  }t        j                  t        j                  |«      t        j                  |j
                  |j
                  «      t        j                  |«      t        j                  |j
                  |j                  «      «      | _        t#        |«      | _        | j'                  «        y r‡  )r0   r1   r6   r‰  r<  r{   r=  r[  rL  r�   rˆ  r…   r   Ú
Sequentialr„   rc   Úinitial_token_classifierr:  Úsubsequent_token_classifierr`  r‹  s      €r*   r1   z*BrosSpadeEEForTokenClassification.__init__.  sê   ø€ Ü‰Ñ˜Ô ØˆŒØ ×+Ñ+ˆŒØ!×-Ñ-ˆÔØ$*×$6Ñ$6ˆÔ!ä˜fÓ%ˆŒ	ä)0°Ð9MÔ)NˆF×%Ò%ÐTZ×TnÑTnð 	ô
 )+¯©Ü�J‰JÐ)Ó*Ü�I‰I�f×(Ñ(¨&×*<Ñ*<Ó=Ü�J‰JÐ)Ó*Ü�I‰I�f×(Ñ(¨&×*;Ñ*;Ó<ó	)
ˆÔ%ô ,AÀÓ+HˆÔ(à×ÑÕr)   rk  rl  r‹   rW   r¬   rŒ  rt   rs   r­   rŒ   Úinitial_token_labelsÚsubsequent_token_labelsr±   r  r  r9   c                 óÌ  — |�|n| j                   j                  }| j                  ||||||||||¬«
      }|d   }|j                  dd«      j	                  «       }| j                  |«      j                  dd«      j	                  «       }| j                  ||«      j                  d«      }d|z
  }|j                  \  }}|j                  }t        j                  |t        j                  |dg«      j                  |«      gd¬«      j                  «       }|j                  |dd…ddd…f   t        j                   |j"                  «      j$                  «      }t        j&                  ||dz   «      j                  |t        j                  ¬«      }|j                  |ddd…dd…f   t        j                   |j"                  «      j$                  «      }|j)                  d«      j                  «       }d}|	�µ|
�³t+        «       }|	j)                  d«      }	|�;|j)                  d«      } ||j)                  d| j,                  «      |   |	|   «      }n# ||j)                  d| j,                  «      |	«      }|
j)                  d«      }
 ||j)                  d|dz   «      |   |
|   «      }||z   }|s||f|dd z   }|�|f|z   S |S t/        ||||j0                  |j2                  ¬	«      S )
a…  
        Returns:

        Examples:

        ```python
        >>> import torch
        >>> from transformers import BrosProcessor, BrosSpadeEEForTokenClassification

        >>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

        >>> model = BrosSpadeEEForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

        >>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
        >>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
        >>> encoding["bbox"] = bbox

        >>> outputs = model(**encoding)
        ```N©
r‹   rW   r¬   rt   rs   r­   rŒ   r±   r  r  r   r   rD  ©rw   rv   r<   r;   )r   r   r   r   r    )r6   rq  rL  rh   r»   r™  rš  Úsqueezer·   rw   r%   rA   r‰   rµ   rí   Úmasked_fillÚfinforv   ÚminÚeyer@   r	   r‰  r   r   r    )r5   r‹   rW   r¬   rŒ  rt   rs   r­   rŒ   r›  rœ  r±   r  r  rÐ   Úlast_hidden_statesr   r   Úinv_attention_maskrÉ   Úmax_seq_lengthrw   Úinvalid_token_maskÚself_token_maskÚsubsequent_token_maskr   r‘  Úinitial_token_lossÚsubsequent_token_lossrà   s                                 r*   rJ   z)BrosSpadeEEForTokenClassification.forwardG  s  € ðL &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—)‘)ØØØ)Ø)Ø%ØØ'Ø/Ø!5Ø#ð ó 
ˆð % Q™ZÐØ/×9Ñ9¸!¸QÓ?×JÑJÓLÐØ#×<Ñ<Ð=OÓP×ZÑZÐ[\Ð^_Ó`×kÑkÓmÐØ"&×"BÑ"BÐCUÐWiÓ"j×"rÑ"rÐstÓ"uÐð  Ñ/ÐØ%7×%=Ñ%=Ñ"ˆ
�NØ#×*Ñ*ˆÜ"ŸY™YÐ(:¼E¿K¹KÈÐUVÈÓ<X×<[Ñ<[Ð\bÓ<cÐ'dÐklÔm×rÑrÓtÐØ"9×"EÑ"EØšq $ª˜zÑ*¬E¯K©KÐ8O×8UÑ8UÓ,V×,ZÑ,Zó#
Ðô  Ÿ)™) N°NÀQÑ4FÓG×JÑJÐRXÔ`e×`jÑ`jÐJÓkˆØ"9×"EÑ"EØ˜D¢!¢Q˜JÑ'¬¯©Ð5L×5RÑ5RÓ)S×)WÑ)Wó#
Ðð !/× 3Ñ 3°BÓ 7× <Ñ <Ó >ÐàˆØÐ+Ð0GÐ0SÜ'Ó)ˆHð $8×#<Ñ#<¸RÓ#@Ð Ø$Ð0Ø(=×(BÑ(BÀ2Ó(FÐ%Ù%-Ø(×-Ñ-¨b°$·/±/ÓBÐCXÑYØ(Ð)>Ñ?ó&Ñ"ñ
 &.Ð.B×.GÑ.GÈÈDÏOÉOÓ.\Ð^rÓ%sÐ"à&=×&BÑ&BÀ2Ó&FÐ#Ù$,Ø'×,Ñ,¨R°À!Ñ1CÓDÐEZÑ[Ø'Ð(=Ñ>ó%Ð!ð
 &Ð(=Ñ=ˆDáØ*Ð,CÐDÀwÈqÈrÀ{ÑRˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEäØØ!5Ø$;Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r)   )NNNNNNNNNNNNN)r!   r"   r#   r”  r1   r   r�  r‚  r   r   rƒ  r   r%   rL   rí   r   r   rJ   rM   rN   s   @r*   r–  r–  !  s…  ø„ ð +4¨Ð&ôñ2 +Ð+@×+GÑ+GÐHeÓ+fÓgÙ¨?ÈÔYð -1Ø'+Ø15Ø8<Ø15Ø/3Ø,0Ø04Ø7;Ø:>Ø,0Ø/3Ø&*ñg
à˜EŸL™LÑ)ðg
ð �u—|‘|Ñ$ðg
ð ! §¡Ñ.ð	g
ð
  (¨¯©Ñ5ðg
ð ! §¡Ñ.ðg
ð ˜uŸ|™|Ñ,ðg
ð ˜EŸL™LÑ)ðg
ð   §¡Ñ-ðg
ð ' u§|¡|Ñ4ðg
ð "*¨%¯,©,Ñ!7ðg
ð $ D™>ðg
ð ' t™nðg
ð ˜d‘^ðg
ð 
ˆu�U—\‘\Ñ" OÐ3Ñ	4òg
ó Zó hôg
r)   r–  zì
    Bros Model with a token classification head on top (a entity_linker layer on top of the hidden-states output) e.g.
    for Entity-Linking. The entity_linker is used to predict intra-entity links (one entity to another entity).
    c                   óè  ‡ — e Zd ZdgZˆ fd„Z eej                  d«      «       ee	e
¬«      	 	 	 	 	 	 	 	 	 	 	 	 ddeej                     deej                     deej                     deej                     d	eej                     d
eej                     deej                     deej                     deej                     dee   dee   dee   deeej                     e	f   fd„«       «       Zˆ xZS )Ú!BrosSpadeELForTokenClassificationr_  c                 ó@  •— t         ‰| �  |«       || _        |j                  | _        |j                  | _        |j
                  | _        t        |«      | _        t        |d«      r|j                  n|j                   t        |«      | _        | j                  «        y r‡  )r0   r1   r6   r‰  r<  r{   r=  r[  rL  r�   rˆ  r…   r:  Úentity_linkerr`  rV   s     €r*   r1   z*BrosSpadeELForTokenClassification.__init__½  s‚   ø€ Ü‰Ñ˜Ô ØˆŒØ ×+Ñ+ˆŒØ!×-Ñ-ˆÔØ$*×$6Ñ$6ˆÔ!ä˜fÓ%ˆŒ	Ü&-¨fÐ6JÔ&Kˆ×	"Ò	"ÐQW×QkÑQkøä2°6Ó:ˆÔà×ÑÕr)   rk  rl  r‹   rW   r¬   rŒ  rt   rs   r­   rŒ   r�  r±   r  r  r9   c                 ó<  — |�|n| j                   j                  }| j                  ||||||||
||¬«
      }|d   }|j                  dd«      j	                  «       }| j                  ||«      j                  d«      }d}|	��et        «       }|j                  \  }}|j                  }t        j                  ||dz   «      j                  |t        j                  ¬«      }|j                  d«      }t        j                  | t        j                   |dgt        j                  |¬«      gd¬«      }|j#                  |dd…ddd…f   t        j$                  |j&                  «      j(                  «      }|j#                  |ddd…dd…f   t        j$                  |j&                  «      j(                  «      } ||j                  d|dz   «      |   |	j                  d«      |   «      }|s|f|d	d z   }|�|f|z   S |S t+        |||j,                  |j.                  ¬
«      S )a…  
        Returns:

        Examples:

        ```python
        >>> import torch
        >>> from transformers import BrosProcessor, BrosSpadeELForTokenClassification

        >>> processor = BrosProcessor.from_pretrained("jinho8345/bros-base-uncased")

        >>> model = BrosSpadeELForTokenClassification.from_pretrained("jinho8345/bros-base-uncased")

        >>> encoding = processor("Hello, my dog is cute", add_special_tokens=False, return_tensors="pt")
        >>> bbox = torch.tensor([[[0, 0, 1, 1]]]).repeat(1, encoding["input_ids"].shape[-1], 1)
        >>> encoding["bbox"] = bbox

        >>> outputs = model(**encoding)
        ```Nrž  r   r   rŸ  r<   ru   rD  r;   r�  )r6   rq  rL  rh   r»   r°  r   r	   r·   rw   r%   r¤  rµ   rí   r@   rA   r‰   r¡  r¢  rv   r£  r   r   r    )r5   r‹   rW   r¬   rŒ  rt   rs   r­   rŒ   r�  r±   r  r  rÐ   r¥  r�  r   r‘  rÉ   r§  rw   r©  Úmaskrà   s                           r*   rJ   z)BrosSpadeELForTokenClassification.forwardË  s   € ðH &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—)‘)ØØØ)Ø)Ø%ØØ'Ø/Ø!5Ø#ð ó 
ˆð % Q™ZÐØ/×9Ñ9¸!¸QÓ?×JÑJÓLÐà×#Ñ#Ð$6Ð8JÓK×SÑSÐTUÓVˆàˆØÑÜ'Ó)ˆHà)7×)=Ñ)=Ñ&ˆJ˜Ø#×*Ñ*ˆFä#Ÿi™i¨¸ÈÑ8JÓK×NÑNÐV\Ôdi×dnÑdnÐNÓoˆOà(×-Ñ-¨bÓ1ˆDÜ$)§I¡Ià*Ð*Ü—K‘K ¨Q ´u·z±zÈ&ÔQðð ô%Ð!ð ×'Ñ'Ð(=ºaÀÂq¸jÑ(IÌ5Ï;É;ÐW]×WcÑWcÓKd×KhÑKhÓiˆFØ×'Ñ'¨¸ºaÂ¸
Ñ(CÄUÇ[Á[ÐQW×Q]ÑQ]ÓE^×EbÑEbÓcˆFá˜FŸK™K¨¨N¸QÑ,>Ó?ÀÑEÀvÇ{Á{ÐSUÃÐW[ÑG\Ó]ˆDáØ�Y ¨¨ Ñ,ˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä$ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r)   r’  r“  rN   s   @r*   r®  r®  ³  sp  ø„ ð +4¨Ð&ôñ +Ð+@×+GÑ+GÐHeÓ+fÓgÙÐ+@ÈÔ_ð -1Ø'+Ø15Ø8<Ø15Ø/3Ø,0Ø04Ø)-Ø,0Ø/3Ø&*ñU
à˜EŸL™LÑ)ðU
ð �u—|‘|Ñ$ðU
ð ! §¡Ñ.ð	U
ð
  (¨¯©Ñ5ðU
ð ! §¡Ñ.ðU
ð ˜uŸ|™|Ñ,ðU
ð ˜EŸL™LÑ)ðU
ð   §¡Ñ-ðU
ð ˜Ÿ™Ñ&ðU
ð $ D™>ðU
ð ' t™nðU
ð ˜d‘^ðU
ð 
ˆu�U—\‘\Ñ"Ð$9Ð9Ñ	:òU
ó `ó hôU
r)   r®  )rK  r[  r…  r–  r®  )>r$   r¸   Údataclassesr   Útypingr   r   r   r   r%   Útorch.utils.checkpointr   Útorch.nnr	   Úactivationsr   Úmodeling_outputsr   r   r   Úmodeling_utilsr   Úpytorch_utilsr   r   r   Úutilsr   r   r   r   r   Úconfiguration_brosr   Ú
get_loggerr!   r%  Ú_CHECKPOINT_FOR_DOCrƒ  ÚBROS_START_DOCSTRINGr�  r   ÚModuler,   rP   r_   rl   r—   rÓ   rÞ   rï   rø   rü   r  r2  r:  rK  r[  r…  r–  r®  Ú__all__r(   r)   r*   ú<module>rÂ     s<  ðñ ã Ý !ß /Ó /ã Û Ý Ý %å !÷ñ õ
 .ß lÑ l÷õ õ +ð 
ˆ×	Ñ	˜HÓ	%€à3Ð Ø€ð	Ð ðAÐ ðH ô:�kó :ó ð:ô> §	¡	ô ô* §	¡	ô ô&˜Ÿ™ô ô?˜Ÿ™ô ?ôDG˜Ÿ	™	ô GôV�R—Y‘Yô ô3�B—I‘Iô 3ôn�r—y‘yô ô�—‘ô ôW�—	‘	ô WôtZ
�"—)‘)ô Z
ô|�—‘ô ô˜BŸI™Iô ôD*˜/ô *ñ4 ØdØóôh
Ð#ó h
ó	ðh
ñV ðð óô^
Ð!4ó ^
óð^
ñB ðð ó	ôE
Ð(;ó E
ó	ðE
ñP ðð óôh
Ð(;ó h
óðh
òV�r)   