§
    ‚Štj’�  ã                   óV  — d Z ddlm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 dd
lmZmZmZmZmZmZ ddlmZmZ ddlmZ ddlmZ ddlmZm Z m!Z!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(  e"j)        e*¦  «        Z+ G d„ dej,        ¦  «        Z- G d„ dej,        ¦  «        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	 dDd&ej,        d'ej6        d(ej6        d)ej6        d*ej6        dz  d+e7d,e7fd-„Z8 G d.„ d/ej,        ¦  «        Z9 G d0„ d1ej,        ¦  «        Z: G d2„ d3e¦  «        Z; G d4„ d5ej,        ¦  «        Z<e  G d6„ d7e¦  «        ¦   «         Z=e  G d8„ d9e=¦  «        ¦   «         Z>e  G d:„ d;e=¦  «        ¦   «         Z? e d<¬=¦  «         G d>„ d?e=¦  «        ¦   «         Z@ e d@¬=¦  «         G dA„ dBe=¦  «        ¦   «         ZAg dC¢ZBdS )EzPyTorch MarkupLM model.é    )ÚCallableN)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚACT2FN)ÚGradientCheckpointingLayer)ÚBaseModelOutputÚBaseModelOutputWithPoolingÚMaskedLMOutputÚQuestionAnsweringModelOutputÚSequenceClassifierOutputÚTokenClassifierOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Úapply_chunking_to_forward)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚMarkupLMConfigc                   ó*   ‡ — e Zd ZdZˆ fd„Zdd„Zˆ xZS )ÚXPathEmbeddingszˆConstruct the embeddings from xpath tags and subscripts.

    We drop tree-id in this version, as its info can be covered by xpath.
    c                 ó®  •‡— t          ¦   «                              ¦   «          ‰j        | _        t          j        ‰j        | j        z  ‰j        ¦  «        | _        t          j        ‰j	        ¦  «        | _
        t          j        ¦   «         | _        t          j        ‰j        | j        z  d‰j        z  ¦  «        | _        t          j        d‰j        z  ‰j        ¦  «        | _        t          j        ˆfd„t!          | j        ¦  «        D ¦   «         ¦  «        | _        t          j        ˆfd„t!          | j        ¦  «        D ¦   «         ¦  «        | _        d S )Né   c                 óN   •— g | ]!}t          j        ‰j        ‰j        ¦  «        ‘Œ"S © )r   Ú	EmbeddingÚmax_xpath_tag_unit_embeddingsÚxpath_unit_hidden_size©Ú.0Ú_Úconfigs     €úl/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/markuplm/modeling_markuplm.pyú
<listcomp>z,XPathEmbeddings.__init__.<locals>.<listcomp>@   s;   ø€ ð ð ð àõ ”˜VÔAÀ6ÔC`ÑaÔaðð ð ó    c                 óN   •— g | ]!}t          j        ‰j        ‰j        ¦  «        ‘Œ"S r#   )r   r$   Úmax_xpath_subs_unit_embeddingsr&   r'   s     €r+   r,   z,XPathEmbeddings.__init__.<locals>.<listcomp>G   s;   ø€ ð ð ð àõ ”˜VÔBÀFÔDaÑbÔbðð ð r-   )ÚsuperÚ__init__Ú	max_depthr   ÚLinearr&   Úhidden_sizeÚxpath_unitseq2_embeddingsÚDropoutÚhidden_dropout_probÚdropoutÚReLUÚ
activationÚxpath_unitseq2_innerÚ	inner2embÚ
ModuleListÚrangeÚxpath_tag_sub_embeddingsÚxpath_subs_sub_embeddings©Úselfr*   Ú	__class__s    `€r+   r1   zXPathEmbeddings.__init__3   s?  øø€ Ý‰Œ×ÒÑÔÐØÔ)ˆŒå)+¬°6Ô3PÐSWÔSaÑ3aÐciÔcuÑ)vÔ)vˆÔ&å”z &Ô"<Ñ=Ô=ˆŒåœ'™)œ)ˆŒÝ$&¤I¨fÔ.KÈdÌnÑ.\Ð^_ÐbhÔbtÑ^tÑ$uÔ$uˆÔ!Ýœ 1 vÔ'9Ñ#9¸6Ô;MÑNÔNˆŒå(*¬ðð ð ð å˜tœ~Ñ.Ô.ðñ ô ñ)
ô )
ˆÔ%õ *,¬ðð ð ð å˜tœ~Ñ.Ô.ðñ ô ñ*
ô *
ˆÔ&Ð&Ð&r-   Nc           	      ó  — g }g }t          | j        ¦  «        D ]n}|                      | j        |         |d d …d d …|f         ¦  «        ¦  «         |                      | j        |         |d d …d d …|f         ¦  «        ¦  «         Œot          j        |d¬¦  «        }t          j        |d¬¦  «        }||z   }|                      |                      |  	                    |  
                    |¦  «        ¦  «        ¦  «        ¦  «        }|S )Néÿÿÿÿ©Údim)r>   r2   Úappendr?   r@   ÚtorchÚcatr<   r8   r:   r;   )rB   Úxpath_tags_seqÚxpath_subs_seqÚxpath_tags_embeddingsÚxpath_subs_embeddingsÚiÚxpath_embeddingss          r+   ÚforwardzXPathEmbeddings.forwardM   s'  € Ø "ÐØ "Ðå�t”~Ñ&Ô&ð 	eð 	eˆAØ!×(Ò(Ð)I¨Ô)FÀqÔ)IÈ.ÐYZÐYZÐYZÐ\]Ð\]Ð\]Ð_`ÐY`ÔJaÑ)bÔ)bÑcÔcÐcØ!×(Ò(Ð)J¨Ô)GÈÔ)JÈ>ÐZ[ÐZ[ÐZ[Ð]^Ð]^Ð]^Ð`aÐZaÔKbÑ)cÔ)cÑdÔdÐdÐdå %¤	Ð*?ÀRÐ HÑ HÔ HÐÝ %¤	Ð*?ÀRÐ HÑ HÔ HÐà0Ð3HÑHÐàŸ>š>¨$¯,ª,°t·²Àt×G`ÒG`ÐaqÑGrÔGrÑ7sÔ7sÑ*tÔ*tÑuÔuÐàÐr-   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   rQ   Ú__classcell__©rC   s   @r+   r   r   -   sV   ø€ € € € € ðð ð

ð 
ð 
ð 
ð 
ð4 ð  ð  ð  ð  ð  ð  ð  r-   r   c                   ód   ‡ — e Zd ZdZˆ fd„Zed„ ¦   «         Zedd„¦   «         Z	 	 	 	 	 	 d	d„Zˆ xZ	S )
ÚMarkupLMEmbeddingszGConstruct the embeddings from word, position and token_type embeddings.c                 óô  •— t          ¦   «                              ¦   «          || _        t          j        |j        |j        |j        ¬¦  «        | _        t          j        |j	        |j        ¦  «        | _
        |j        | _        t          |¦  «        | _        t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j        ¦  «        | _        |                      dt-          j        |j	        ¦  «                             d¦  «        d¬¦  «         |j        | _        t          j        |j	        |j        | j        ¬¦  «        | _
        d S )N)Úpadding_idx©ÚepsÚposition_ids©r   rE   F)Ú
persistent)r0   r1   r*   r   r$   Ú
vocab_sizer4   Úpad_token_idÚword_embeddingsÚmax_position_embeddingsÚposition_embeddingsr2   r   rP   Útype_vocab_sizeÚtoken_type_embeddingsÚ	LayerNormÚlayer_norm_epsr6   r7   r8   Úregister_bufferrI   ÚarangeÚexpandr[   rA   s     €r+   r1   zMarkupLMEmbeddings.__init__b   s?  ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ!œ|¨FÔ,=¸vÔ?QÐ_eÔ_rÐsÑsÔsˆÔÝ#%¤<°Ô0NÐPVÔPbÑ#cÔ#cˆÔ àÔ)ˆŒå /°Ñ 7Ô 7ˆÔå%'¤\°&Ô2HÈ&ÔJ\Ñ%]Ô%]ˆÔ"åœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒà×ÒØ�EœL¨Ô)GÑHÔH×OÒOÐPWÑXÔXÐejð 	ñ 	
ô 	
ð 	
ð "Ô.ˆÔÝ#%¤<ØÔ*¨FÔ,>ÈDÔL\ð$
ñ $
ô $
ˆÔ Ð Ð r-   c                 óú   — |                       ¦   «         dd…         }|d         }t          j        |dz   ||z   dz   t          j        | j        ¬¦  «        }|                     d¦  «                             |¦  «        S )z×
        We are provided embeddings directly. We cannot infer which are padded so just generate sequential position ids.

        Args:
            inputs_embeds: torch.Tensor

        Returns: torch.Tensor
        NrE   r   ©ÚdtypeÚdevicer   )ÚsizerI   rk   Úlongrp   Ú	unsqueezerl   )Úinputs_embedsr[   Úinput_shapeÚsequence_lengthr^   s        r+   Ú&create_position_ids_from_inputs_embedsz9MarkupLMEmbeddings.create_position_ids_from_inputs_embedsz   s~   € ð $×(Ò(Ñ*Ô*¨3¨B¨3Ô/ˆØ% aœ.ˆå”|Ø˜!‰O˜_¨{Ñ:¸QÑ>ÅeÄjÐYfÔYmð
ñ 
ô 
ˆð ×%Ò% aÑ(Ô(×/Ò/°Ñ<Ô<Ð<r-   r   c                 óÜ   — |                       |¦  «                             ¦   «         }t          j        |d¬¦  «                             |¦  «        |z   |z  }|                     ¦   «         |z   S )a  
        Replace non-padding symbols with their position numbers. Position numbers begin at padding_idx+1. Padding symbols
        are ignored. This is modified from fairseq's `utils.make_positions`.

        Args:
            x: torch.Tensor x:

        Returns: torch.Tensor
        r   rF   )ÚneÚintrI   ÚcumsumÚtype_asrr   )Ú	input_idsr[   Úpast_key_values_lengthÚmaskÚincremental_indicess        r+   Ú"create_position_ids_from_input_idsz5MarkupLMEmbeddings.create_position_ids_from_input_ids�   sg   € ð �|Š|˜KÑ(Ô(×,Ò,Ñ.Ô.ˆÝ$œ|¨D°aÐ8Ñ8Ô8×@Ò@ÀÑFÔFÐI_Ñ_ÐcgÑgÐØ"×'Ò'Ñ)Ô)¨KÑ7Ð7r-   Nc                 ó°  — |�|                      ¦   «         }n|                      ¦   «         d d…         }|�|j        n|j        }|€9|�|                      || j        ¦  «        }n|                      || j        ¦  «        }|€!t          j        |t
          j        |¬¦  «        }|€|                      |¦  «        }|€Q| j	        j
        t          j        t          t          |¦  «        | j        gz   ¦  «        t
          j        |¬¦  «        z  }|€Q| j	        j        t          j        t          t          |¦  «        | j        gz   ¦  «        t
          j        |¬¦  «        z  }|}	|                      |¦  «        }
|                      |¦  «        }|                      ||¦  «        }|	|
z   |z   |z   }|                      |¦  «        }|                      |¦  «        }|S )NrE   rn   )rq   rp   r�   r[   rw   rI   Úzerosrr   rc   r*   Ú
tag_pad_idÚonesÚtupleÚlistr2   Úsubs_pad_idre   rg   rP   rh   r8   )rB   r}   rK   rL   Útoken_type_idsr^   rt   ru   rp   Úwords_embeddingsre   rg   rP   Ú
embeddingss                 r+   rQ   zMarkupLMEmbeddings.forwardž   sâ  € ð Ð Ø#Ÿ.š.Ñ*Ô*ˆKˆKà'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKà%.Ð%:�Ô!Ð!ÀÔ@TˆàÐØÐ$à#×FÒFÀyÐRVÔRbÑcÔc��à#×JÒJÈ=ÐZ^ÔZjÑkÔk�àÐ!Ý"œ[¨½E¼JÈvÐVÑVÔVˆNàÐ Ø ×0Ò0°Ñ;Ô;ˆMð Ð!Ø!œ[Ô3µe´jÝ•d˜;Ñ'Ô'¨4¬>Ð*:Ñ:Ñ;Ô;Å5Ä:ÐV\ð7ñ 7ô 7ñ ˆNð Ð!Ø!œ[Ô4µu´zÝ•d˜;Ñ'Ô'¨4¬>Ð*:Ñ:Ñ;Ô;Å5Ä:ÐV\ð8ñ 8ô 8ñ ˆNð )ÐØ"×6Ò6°|ÑDÔDÐà $× :Ò :¸>Ñ JÔ JÐà×0Ò0°ÀÑPÔPÐØ%Ð(;Ñ;Ð>SÑSÐVfÑfˆ
à—^’^ JÑ/Ô/ˆ
Ø—\’\ *Ñ-Ô-ˆ
ØÐr-   )r   )NNNNNN)
rR   rS   rT   rU   r1   Ústaticmethodrw   r�   rQ   rV   rW   s   @r+   rY   rY   _   s¡   ø€ € € € € ØQÐQð
ð 
ð 
ð 
ð 
ð0 ð=ð =ñ „\ð=ð" ð8ð 8ð 8ñ „\ð8ð" ØØØØØð1ð 1ð 1ð 1ð 1ð 1ð 1ð 1r-   rY   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚMarkupLMSelfOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j	        ¦  «        | _
        d S ©Nr\   )r0   r1   r   r3   r4   Údenserh   ri   r6   r7   r8   rA   s     €r+   r1   zMarkupLMSelfOutput.__init__Ô   sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr-   Úhidden_statesÚinput_tensorÚreturnc                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S ©N©r‘   r8   rh   ©rB   r’   r“   s      r+   rQ   zMarkupLMSelfOutput.forwardÚ   ó@   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš }°|Ñ'CÑDÔDˆØÐr-   ©rR   rS   rT   r1   rI   ÚTensorrQ   rV   rW   s   @r+   rŽ   rŽ   Ó   ói   ø€ € € € € ð>ð >ð >ð >ð >ð U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r-   rŽ   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚMarkupLMIntermediatec                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        d S |j        | _        d S r–   )r0   r1   r   r3   r4   Úintermediate_sizer‘   Ú
isinstanceÚ
hidden_actÚstrr
   Úintermediate_act_fnrA   s     €r+   r1   zMarkupLMIntermediate.__init__ã   sn   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3KÑLÔLˆŒ
Ý�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$Ð$à'-Ô'8ˆDÔ$Ð$Ð$r-   r’   r”   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r–   )r‘   r¤   ©rB   r’   s     r+   rQ   zMarkupLMIntermediate.forwardë   s,   € ØŸ
š
 =Ñ1Ô1ˆØ×0Ò0°Ñ?Ô?ˆØÐr-   rš   rW   s   @r+   rž   rž   â   s^   ø€ € € € € ð9ð 9ð 9ð 9ð 9ð U¤\ð °e´lð ð ð ð ð ð ð ð r-   rž   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚMarkupLMOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S r�   )r0   r1   r   r3   r    r4   r‘   rh   ri   r6   r7   r8   rA   s     €r+   r1   zMarkupLMOutput.__init__ó   sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ7¸Ô9KÑLÔLˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr-   r’   r“   r”   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S r–   r—   r˜   s      r+   rQ   zMarkupLMOutput.forwardù   r™   r-   rš   rW   s   @r+   r¨   r¨   ò   rœ   r-   r¨   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚMarkupLMPoolerc                 óÀ   •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        ¦   «         | _        d S r–   )r0   r1   r   r3   r4   r‘   ÚTanhr:   rA   s     €r+   r1   zMarkupLMPooler.__init__  sC   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ'™)œ)ˆŒˆˆr-   r’   r”   c                 ór   — |d d …df         }|                       |¦  «        }|                      |¦  «        }|S )Nr   )r‘   r:   )rB   r’   Úfirst_token_tensorÚpooled_outputs       r+   rQ   zMarkupLMPooler.forward  s@   € ð +¨1¨1¨1¨a¨4Ô0ÐØŸ
š
Ð#5Ñ6Ô6ˆØŸš¨Ñ6Ô6ˆØÐr-   rš   rW   s   @r+   r¬   r¬     s^   ø€ € € € € ð$ð $ð $ð $ð $ð
 U¤\ð °e´lð ð ð ð ð ð ð ð r-   r¬   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚMarkupLMPredictionHeadTransformc                 óV  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _
        n|j        | _
        t          j        |j        |j        ¬¦  «        | _        d S r�   )r0   r1   r   r3   r4   r‘   r¡   r¢   r£   r
   Útransform_act_fnrh   ri   rA   s     €r+   r1   z(MarkupLMPredictionHeadTransform.__init__  s…   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ý�fÔ'­Ñ-Ô-ð 	6Ý$*¨6Ô+<Ô$=ˆDÔ!Ð!à$*Ô$5ˆDÔ!Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒˆˆr-   r’   r”   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r–   )r‘   rµ   rh   r¦   s     r+   rQ   z'MarkupLMPredictionHeadTransform.forward  s=   € ØŸ
š
 =Ñ1Ô1ˆØ×-Ò-¨mÑ<Ô<ˆØŸš }Ñ5Ô5ˆØÐr-   rš   rW   s   @r+   r³   r³     sc   ø€ € € € € ðUð Uð Uð Uð Uð U¤\ð °e´lð ð ð ð ð ð ð ð r-   r³   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚMarkupLMLMPredictionHeadc                 ó  •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          j        |j        |j        d¬¦  «        | _        t	          j	        t          j        |j        ¦  «        ¦  «        | _        d S )NT)Úbias)r0   r1   r³   Ú	transformr   r3   r4   ra   ÚdecoderÚ	ParameterrI   rƒ   rº   rA   s     €r+   r1   z!MarkupLMLMPredictionHead.__init__$  sj   ø€ Ý‰Œ×ÒÑÔÐÝ8¸Ñ@Ô@ˆŒõ ”y Ô!3°VÔ5FÈTÐRÑRÔRˆŒÝ”L¥¤¨VÔ->Ñ!?Ô!?Ñ@Ô@ˆŒ	ˆ	ˆ	r-   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r–   )r»   r¼   r¦   s     r+   rQ   z MarkupLMLMPredictionHead.forward-  s*   € ØŸš }Ñ5Ô5ˆØŸš ]Ñ3Ô3ˆØÐr-   )rR   rS   rT   r1   rQ   rV   rW   s   @r+   r¸   r¸   #  sL   ø€ € € € € ðAð Að Að Að Aðð ð ð ð ð ð r-   r¸   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚMarkupLMOnlyMLMHeadc                 óp   •— t          ¦   «                              ¦   «          t          |¦  «        | _        d S r–   )r0   r1   r¸   ÚpredictionsrA   s     €r+   r1   zMarkupLMOnlyMLMHead.__init__5  s/   ø€ Ý‰Œ×ÒÑÔÐÝ3°FÑ;Ô;ˆÔÐÐr-   Úsequence_outputr”   c                 ó0   — |                       |¦  «        }|S r–   )rÂ   )rB   rÃ   Úprediction_scoress      r+   rQ   zMarkupLMOnlyMLMHead.forward9  s   € Ø ×,Ò,¨_Ñ=Ô=ÐØ Ð r-   rš   rW   s   @r+   rÀ   rÀ   4  s^   ø€ € € € € ð<ð <ð <ð <ð <ð! u¤|ð !¸¼ð !ð !ð !ð !ð !ð !ð !ð !r-   rÀ   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingr8   c                 óÀ  — t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |dt           j        ¬¦  «                             |j        ¦  «        }t          j         	                    ||| j
        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «                             ¦   «         }	|	|fS )Né   r   rE   )rG   ro   )ÚpÚtrainingr   )rI   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxÚfloat32Útoro   r8   rÐ   Ú
contiguous)
rÇ   rÈ   rÉ   rÊ   rË   rÌ   r8   ÚkwargsÚattn_weightsÚattn_outputs
             r+   Úeager_attention_forwardrÛ   ?  sÃ   € õ ”<  s§}¢}°Q¸Ñ':Ô':Ñ;Ô;¸gÑE€LØÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2ÅUÄ]Ð(ÑSÔS×VÒVÐW\ÔWbÑcÔc€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô3€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€KØ˜Ð$Ð$r-   c                   óŠ   ‡ — e Zd Zˆ fd„Z	 ddej        dej        dz  dee         de	ej        ej        dz  f         fd„Z
ˆ xZS )	ÚMarkupLMSelfAttentionc                 ó¨  •— t          ¦   «                              ¦   «          |j        |j        z  dk    r0t	          |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        ¦  «        | _        |j        | _        | j        dz  | _        d S )Nr   Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (ú)g      à¿)r0   r1   r4   Únum_attention_headsÚhasattrÚ
ValueErrorr*   rz   Úattention_head_sizeÚall_head_sizer   r3   rÈ   rÉ   rÊ   r6   Úattention_probs_dropout_probr8   Úattention_dropoutrÌ   rA   s     €r+   r1   zMarkupLMSelfAttention.__init__W  s:  ø€ Ý‰Œ×ÒÑÔÐØÔ Ô :Ñ:¸aÒ?Ð?ÍÐPVÐXhÑHiÔHiÐ?Ýð8 FÔ$6ð 8ð 8Ø Ô4ð8ð 8ð 8ñô ð ð
 ˆŒØ#)Ô#=ˆÔ Ý#& vÔ'9¸FÔ<VÑ'VÑ#WÔ#WˆÔ Ø!Ô5¸Ô8PÑPˆÔå”Y˜vÔ1°4Ô3EÑFÔFˆŒ
Ý”9˜VÔ/°Ô1CÑDÔDˆŒÝ”Y˜vÔ1°4Ô3EÑFÔFˆŒ
å”z &Ô"EÑFÔFˆŒØ!'Ô!DˆÔØÔ/°Ñ5ˆŒˆˆr-   Nr’   rË   rØ   r”   c                 ó‚  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }|                      |¦  «                             |¦  «                             dd¦  «        }t          j        | j	        j
        t          ¦  «        }	 |	| ||||f| j        sdn| j        | j        dœ|¤Ž\  }
} |
j        g |¢d‘R Ž                      ¦   «         }
|
|fS )NrE   r   rÎ   rÆ   )r8   rÌ   )Úshaperä   rÈ   ÚviewrÒ   rÉ   rÊ   r   Úget_interfacer*   Ú_attn_implementationrÛ   rÐ   rç   rÌ   Úreshaper×   )rB   r’   rË   rØ   ru   Úhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfacerÚ   rÙ   s               r+   rQ   zMarkupLMSelfAttention.forwardl  sf  € ð $Ô)¨#¨2¨#Ô.ˆØC˜ÐC bÐC¨$Ô*BÐCÐCˆà—z’z -Ñ0Ô0×5Ò5°lÑCÔC×MÒMÈaÐQRÑSÔSˆØ—X’X˜mÑ,Ô,×1Ò1°,Ñ?Ô?×IÒIÈ!ÈQÑOÔOˆ
Ø—z’z -Ñ0Ô0×5Ò5°lÑCÔC×MÒMÈaÐQRÑSÔSˆå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}ÐH�C�C°$Ô2HØ”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ˜LÐ(Ð(r-   r–   )rR   rS   rT   r1   rI   r›   ÚFloatTensorr   r   r†   rQ   rV   rW   s   @r+   rÝ   rÝ   V  sŸ   ø€ € € € € ð6ð 6ð 6ð 6ð 6ð0 48ð)ð )à”|ð)ð Ô)¨DÑ0ð)ð Ð+Ô,ð	)ð
 
ˆuŒ|˜Uœ\¨DÑ0Ð0Ô	1ð)ð )ð )ð )ð )ð )ð )ð )r-   rÝ   c            	       ój   ‡ — e Zd Zˆ fd„Z	 ddej        dej        dz  dee         dej        fd„Z	ˆ xZ
S )	ÚMarkupLMAttentionc                 ó˜   •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |¦  «        | _        d S r–   )r0   r1   rÝ   rB   rŽ   ÚoutputrA   s     €r+   r1   zMarkupLMAttention.__init__Ž  s;   ø€ Ý‰Œ×ÒÑÔÐÝ)¨&Ñ1Ô1ˆŒ	Ý(¨Ñ0Ô0ˆŒˆˆr-   Nr’   rË   rØ   r”   c                 ó\   — |} | j         |fd|i|¤Ž\  }}|                      ||¦  «        }|S ©NrË   )rB   r÷   )rB   r’   rË   rØ   Úresidualr)   s         r+   rQ   zMarkupLMAttention.forward“  sV   € ð !ˆØ$˜4œ9Øð
ð 
à)ð
ð ð
ð 
Ñˆ�qð
 Ÿš M°8Ñ<Ô<ˆØÐr-   r–   )rR   rS   rT   r1   rI   r›   ró   r   r   rQ   rV   rW   s   @r+   rõ   rõ   �  sŽ   ø€ € € € € ð1ð 1ð 1ð 1ð 1ð 48ðð à”|ðð Ô)¨DÑ0ðð Ð+Ô,ð	ð
 
Œðð ð ð ð ð ð ð r-   rõ   c            	       óp   ‡ — e Zd Zˆ fd„Z	 d	dej        dej        dz  dee         dej        fd„Z	d„ Z
ˆ xZS )
ÚMarkupLMLayerc                 óæ   •— t          ¦   «                              ¦   «          |j        | _        d| _        t	          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _	        d S )Nr   )
r0   r1   Úchunk_size_feed_forwardÚseq_len_dimrõ   Ú	attentionrž   Úintermediater¨   r÷   rA   s     €r+   r1   zMarkupLMLayer.__init__¥  s^   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆÔÝ*¨6Ñ2Ô2ˆŒÝ0°Ñ8Ô8ˆÔÝ$ VÑ,Ô,ˆŒˆˆr-   Nr’   rË   rØ   r”   c                 óh   —  | j         |fd|i|¤Ž}t          | j        | j        | j        |¦  «        }|S rù   )r   r   Úfeed_forward_chunkrþ   rÿ   )rB   r’   rË   rØ   s       r+   rQ   zMarkupLMLayer.forward­  s]   € ð '˜œØð
ð 
à)ð
ð ð
ð 
ˆõ 2ØÔ# TÔ%AÀ4ÔCSÐUbñ
ô 
ˆð Ðr-   c                 ó\   — |                       |¦  «        }|                      ||¦  «        }|S r–   )r  r÷   )rB   Úattention_outputÚintermediate_outputÚlayer_outputs       r+   r  z MarkupLMLayer.feed_forward_chunk¿  s2   € Ø"×/Ò/Ð0@ÑAÔAÐØ—{’{Ð#6Ð8HÑIÔIˆØÐr-   r–   )rR   rS   rT   r1   rI   r›   ró   r   r   rQ   r  rV   rW   s   @r+   rü   rü   ¤  s�   ø€ € € € € ð-ð -ð -ð -ð -ð 48ðð à”|ðð Ô)¨DÑ0ðð Ð+Ô,ð	ð
 
Œðð ð ð ð$ð ð ð ð ð ð r-   rü   c            	       ó`   ‡ — e Zd Zˆ fd„Z	 ddej        dej        dz  dee         de	fd„Z
ˆ xZS )	ÚMarkupLMEncoderc                 óÔ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d| _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS r#   )rü   )r(   rO   r*   s     €r+   r,   z,MarkupLMEncoder.__init__.<locals>.<listcomp>Ê  s!   ø€ Ð#cÐ#cÐ#c¸a¥M°&Ñ$9Ô$9Ð#cÐ#cÐ#cr-   F)	r0   r1   r*   r   r=   r>   Únum_hidden_layersÚlayerÚgradient_checkpointingrA   s    `€r+   r1   zMarkupLMEncoder.__init__Ç  s`   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”]Ð#cÐ#cÐ#cÐ#cÅ5ÈÔIaÑCbÔCbÐ#cÑ#cÔ#cÑdÔdˆŒ
Ø&+ˆÔ#Ð#Ð#r-   Nr’   rË   rØ   r”   c                 óJ   — | j         D ]} |||fi |¤Ž}Œt          |¬¦  «        S )N)Úlast_hidden_state)r  r   )rB   r’   rË   rØ   Úlayer_modules        r+   rQ   zMarkupLMEncoder.forwardÍ  sY   € ð !œJð 	ð 	ˆLØ(˜LØØðð ð ðð ˆMˆMõ Ø+ð
ñ 
ô 
ð 	
r-   r–   )rR   rS   rT   r1   rI   r›   ró   r   r   r   rQ   rV   rW   s   @r+   r	  r	  Æ  sŒ   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð 48ð
ð 
à”|ð
ð Ô)¨DÑ0ð
ð Ð+Ô,ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r-   r	  c                   ób   ‡ — e Zd ZU eed<   dZeedœZ e	j
        ¦   «         ˆ fd„¦   «         Zˆ xZS )ÚMarkupLMPreTrainedModelr*   Úmarkuplm)r’   Ú
attentionsc                 óv  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rt	          j        |j        ¦  «         dS t          |t          ¦  «        rQt	          j        |j	        t          j        |j	        j        d         ¦  «                             d¦  «        ¦  «         dS dS )zInitialize the weightsrE   r_   N)r0   Ú_init_weightsr¡   r¸   ÚinitÚzeros_rº   rY   Úcopy_r^   rI   rk   ré   rl   )rB   rÇ   rC   s     €r+   r  z%MarkupLMPreTrainedModel._init_weightsè  s©   ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ6Ñ7Ô7ð 	iÝŒK˜œÑ$Ô$Ð$Ð$Ð$Ý˜Õ 2Ñ3Ô3ð 	iÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÐhÐhð	ið 	ir-   )rR   rS   rT   r   Ú__annotations__Úbase_model_prefixrü   rÝ   Ú_can_record_outputsrI   Úno_gradr  rV   rW   s   @r+   r  r  ß  s|   ø€ € € € € € àÐÐÑØ"Ðà&Ø+ðð Ðð
 €U„]�_„_ðið ið ið iñ „_ðið ið ið ið ir-   r  c                   ó  ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zeee	 	 	 	 	 	 	 dd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	j
        dz  de	j        dz  dee         deez  fd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚMarkupLMModelTc                 ó   •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        |rt          |¦  «        nd| _        |  	                    ¦   «          dS )zv
        add_pooling_layer (bool, *optional*, defaults to `True`):
            Whether to add a pooling layer
        N)
r0   r1   r*   rY   r‹   r	  Úencoderr¬   ÚpoolerÚ	post_init)rB   r*   Úadd_pooling_layerrC   s      €r+   r1   zMarkupLMModel.__init__õ  ss   ø€ õ
 	‰Œ×Ò˜Ñ Ô Ð ØˆŒå,¨VÑ4Ô4ˆŒÝ& vÑ.Ô.ˆŒà0AÐK•n VÑ,Ô,Ð,ÀtˆŒð 	�ŠÑÔÐÐÐr-   c                 ó   — | j         j        S r–   ©r‹   rc   )rB   s    r+   Úget_input_embeddingsz"MarkupLMModel.get_input_embeddings  s   € ØŒÔ.Ð.r-   c                 ó   — || j         _        d S r–   r'  )rB   rÊ   s     r+   Úset_input_embeddingsz"MarkupLMModel.set_input_embeddings  s   € Ø*/ˆŒÔ'Ð'Ð'r-   Nr}   rK   rL   rË   r‰   r^   rt   rØ   r”   c                 óÌ  — |�|�t          d¦  «        ‚|�+|                      ||¦  «         |                     ¦   «         }	n.|�|                     ¦   «         dd…         }	nt          d¦  «        ‚|�|j        n|j        }
|€t	          j        |	|
¬¦  «        }|€!t	          j        |	t          j        |
¬¦  «        }|                     d¦  «                             d¦  «        }| 	                    | j
        ¬	¦  «        }d
|z
  dz  }|                      ||||||¬¦  «        } | j        ||fi |¤Ž}|d         }| j        �|                      |¦  «        nd}t          ||¬¦  «        S )aï  
        xpath_tags_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
            Tag IDs for each token in the input sequence, padded up to config.max_depth.
        xpath_subs_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
            Subscript IDs for each token in the input sequence, padded up to config.max_depth.

        Examples:

        ```python
        >>> from transformers import AutoProcessor, MarkupLMModel

        >>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base")
        >>> model = MarkupLMModel.from_pretrained("microsoft/markuplm-base")

        >>> html_string = "<html> <head> <title>Page Title</title> </head> </html>"

        >>> encoding = processor(html_string, return_tensors="pt")

        >>> outputs = model(**encoding)
        >>> last_hidden_states = outputs.last_hidden_state
        >>> list(last_hidden_states.shape)
        [1, 4, 768]
        ```NzDYou cannot specify both input_ids and inputs_embeds at the same timerE   z5You have to specify either input_ids or inputs_embeds)rp   rn   r   rÎ   )ro   g      ð?g     ˆÃÀ)r}   rK   rL   r^   r‰   rt   r   )r  Úpooler_output)rã   Ú%warn_if_padding_and_no_attention_maskrq   rp   rI   r…   rƒ   rr   rs   rÖ   ro   r‹   r"  r#  r   )rB   r}   rK   rL   rË   r‰   r^   rt   rØ   ru   rp   Úextended_attention_maskÚembedding_outputÚencoder_outputsrÃ   r±   s                   r+   rQ   zMarkupLMModel.forward  s²  € ðJ Ð  ]Ð%>ÝÐcÑdÔdÐdØÐ"Ø×6Ò6°yÀ.ÑQÔQÐQØ#Ÿ.š.Ñ*Ô*ˆKˆKØÐ&Ø'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKˆKåÐTÑUÔUÐUà%.Ð%:�Ô!Ð!ÀÔ@TˆàÐ!Ý"œZ¨¸FÐCÑCÔCˆNàÐ!Ý"œ[¨½E¼JÈvÐVÑVÔVˆNà"0×":Ò":¸1Ñ"=Ô"=×"GÒ"GÈÑ"JÔ"JÐØ"9×"<Ò"<À4Ä:Ð"<Ñ"NÔ"NÐØ#&Ð)@Ñ#@ÀHÑ"LÐàŸ?š?ØØ)Ø)Ø%Ø)Ø'ð +ñ 
ô 
Ðð '˜$œ,ØØ#ð
ð 
ð ð
ð 
ˆð
 *¨!Ô,ˆØ8<¼Ð8O˜Ÿš OÑ4Ô4Ð4ÐUYˆå)Ø-Ø'ð
ñ 
ô 
ð 	
r-   )T)NNNNNNN)rR   rS   rT   r1   r(  r*  r   r   r   rI   Ú
LongTensorró   r   r   r†   r   rQ   rV   rW   s   @r+   r   r   ò  sZ  ø€ € € € € ðð ð ð ð ð ð /ð /ð /ð0ð 0ð 0ð  ØØð .2Ø26Ø26Ø37Ø26Ø04Ø26ðK
ð K
àÔ# dÑ*ðK
ð Ô(¨4Ñ/ðK
ð Ô(¨4Ñ/ð	K
ð
 Ô)¨DÑ0ðK
ð Ô(¨4Ñ/ðK
ð Ô&¨Ñ-ðK
ð Ô(¨4Ñ/ðK
ð Ð+Ô,ðK
ð 
Ð+Ñ	+ðK
ð K
ð K
ñ „^ñ „_ñ  ÔðK
ð K
ð K
ð K
ð K
r-   r   c                   ó>  ‡ — e Zd Zˆ fd„Zee	 	 	 	 	 	 	 	 	 dd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j        dz  d	ej        dz  d
ej        dz  dej        dz  dee	         de
ej                 ez  fd„¦   «         ¦   «         Zˆ xZS )ÚMarkupLMForQuestionAnsweringc                 óþ   •— t          ¦   «                              |¦  «         |j        | _        t          |d¬¦  «        | _        t          j        |j        |j        ¦  «        | _        |  	                    ¦   «          d S ©NF)r%  )
r0   r1   Ú
num_labelsr   r  r   r3   r4   Ú
qa_outputsr$  rA   s     €r+   r1   z%MarkupLMForQuestionAnswering.__init___  sj   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå% fÀÐFÑFÔFˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr-   Nr}   rK   rL   rË   r‰   r^   rt   Ústart_positionsÚend_positionsrØ   r”   c
           
      óH  —  | j         |f||||||dœ|
¤Ž}|d         }|                      |¦  «        }|                     dd¬¦  «        \  }}|                     d¦  «                             ¦   «         }|                     d¦  «                             ¦   «         }d}|�ç|	�åt          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }t          |	                     ¦   «         ¦  «        dk    r|	                     d¦  «        }	|                     d¦  «        }|                     d|¦  «         |	                     d|¦  «         t          |¬¦  «        } |||¦  «        } |||	¦  «        }||z   dz  }t          ||||j
        |j        ¬	¦  «        S )
ae  
        xpath_tags_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
            Tag IDs for each token in the input sequence, padded up to config.max_depth.
        xpath_subs_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
            Subscript IDs for each token in the input sequence, padded up to config.max_depth.

        Examples:

        ```python
        >>> from transformers import AutoProcessor, MarkupLMForQuestionAnswering
        >>> import torch

        >>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base-finetuned-websrc")
        >>> model = MarkupLMForQuestionAnswering.from_pretrained("microsoft/markuplm-base-finetuned-websrc")

        >>> html_string = "<html> <head> <title>My name is Niels</title> </head> </html>"
        >>> question = "What's his name?"

        >>> encoding = processor(html_string, questions=question, return_tensors="pt")

        >>> with torch.no_grad():
        ...     outputs = model(**encoding)

        >>> answer_start_index = outputs.start_logits.argmax()
        >>> answer_end_index = outputs.end_logits.argmax()

        >>> predict_answer_tokens = encoding.input_ids[0, answer_start_index : answer_end_index + 1]
        >>> processor.decode(predict_answer_tokens).strip()
        'Niels'
        ```©rK   rL   rË   r‰   r^   rt   r   r   rE   rF   N)Úignore_indexrÎ   )ÚlossÚstart_logitsÚ
end_logitsr’   r  )r  r7  ÚsplitÚsqueezer×   Úlenrq   Úclamp_r   r   r’   r  )rB   r}   rK   rL   rË   r‰   r^   rt   r8  r9  rØ   ÚoutputsrÃ   Úlogitsr>  r?  Ú
total_lossÚignored_indexÚloss_fctÚ
start_lossÚend_losss                        r+   rQ   z$MarkupLMForQuestionAnswering.forwardi  sÕ  € ðZ  �$”-Øð	
à)Ø)Ø)Ø)Ø%Ø'ð	
ð 	
ð ð	
ð 	
ˆð " !œ*ˆà—’ Ñ1Ô1ˆØ#)§<¢<°°r <Ñ#:Ô#:Ñ ˆ�jØ#×+Ò+¨BÑ/Ô/×:Ò:Ñ<Ô<ˆØ×'Ò'¨Ñ+Ô+×6Ò6Ñ8Ô8ˆ
àˆ
ØÐ&¨=Ð+Då�?×'Ò'Ñ)Ô)Ñ*Ô*¨QÒ.Ð.Ø"1×"9Ò"9¸"Ñ"=Ô"=�Ý�=×%Ò%Ñ'Ô'Ñ(Ô(¨1Ò,Ð,Ø -× 5Ò 5°bÑ 9Ô 9�à(×-Ò-¨aÑ0Ô0ˆMØ×"Ò" 1 mÑ4Ô4Ð4Ø× Ò   MÑ2Ô2Ð2å'°]ÐCÑCÔCˆHØ!˜ ,°Ñ@Ô@ˆJØ�x 
¨MÑ:Ô:ˆHØ$ xÑ/°1Ñ4ˆJå+ØØ%Ø!Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
r-   )	NNNNNNNNN)rR   rS   rT   r1   r   r   rI   r›   r   r   r†   r   rQ   rV   rW   s   @r+   r3  r3  \  sW  ø€ € € € € ðð ð ð ð ð Øð *.Ø.2Ø.2Ø.2Ø.2Ø,0Ø-1Ø/3Ø-1ðT
ð T
à”< $Ñ&ðT
ð œ tÑ+ðT
ð œ tÑ+ð	T
ð
 œ tÑ+ðT
ð œ tÑ+ðT
ð ”l TÑ)ðT
ð ”| dÑ*ðT
ð œ¨Ñ,ðT
ð ”| dÑ*ðT
ð Ð+Ô,ðT
ð 
ˆuŒ|Ô	Ð;Ñ	;ðT
ð T
ð T
ñ „^ñ ÔðT
ð T
ð T
ð T
ð T
r-   r3  zC
    MarkupLM Model with a `token_classification` head on top.
    )Úcustom_introc                   ó(  ‡ — e Zd Zˆ fd„Zee	 	 	 	 	 	 	 	 dd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j        dz  d	ej        dz  d
ej        dz  dee	         de
ej                 ez  fd„¦   «         ¦   «         Zˆ xZS )ÚMarkupLMForTokenClassificationc                 óZ  •— t          ¦   «                              |¦  «         |j        | _        t          |d¬¦  «        | _        |j        �|j        n|j        }t          j        |¦  «        | _	        t          j
        |j        |j        ¦  «        | _        |                      ¦   «          d S r5  )r0   r1   r6  r   r  Úclassifier_dropoutr7   r   r6   r8   r3   r4   Ú
classifierr$  ©rB   r*   rO  rC   s      €r+   r1   z'MarkupLMForTokenClassification.__init__É  sš   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå% fÀÐFÑFÔFˆŒà)/Ô)BÐ)NˆFÔ%Ð%ÐTZÔTnð 	õ ”zÐ"4Ñ5Ô5ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr-   Nr}   rK   rL   rË   r‰   r^   rt   ÚlabelsrØ   r”   c	           
      ó>  —  | j         |f||||||dœ|	¤Ž}
|
d         }|                      |¦  «        }d}|�Kt          ¦   «         } ||                     d| j        j        ¦  «        |                     d¦  «        ¦  «        }t          |||
j        |
j        ¬¦  «        S )a™  
        xpath_tags_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
            Tag IDs for each token in the input sequence, padded up to config.max_depth.
        xpath_subs_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
            Subscript IDs for each token in the input sequence, padded up to config.max_depth.
        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]`.

        Examples:

        ```python
        >>> from transformers import AutoProcessor, AutoModelForTokenClassification
        >>> import torch

        >>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base")
        >>> processor.parse_html = False
        >>> model = AutoModelForTokenClassification.from_pretrained("microsoft/markuplm-base", num_labels=7)

        >>> nodes = ["hello", "world"]
        >>> xpaths = ["/html/body/div/li[1]/div/span", "/html/body/div/li[1]/div/span"]
        >>> node_labels = [1, 2]
        >>> encoding = processor(nodes=nodes, xpaths=xpaths, node_labels=node_labels, return_tensors="pt")

        >>> with torch.no_grad():
        ...     outputs = model(**encoding)

        >>> loss = outputs.loss
        >>> logits = outputs.logits
        ```r;  r   NrE   ©r=  rE  r’   r  )	r  rP  r   rê   r*   r6  r   r’   r  )rB   r}   rK   rL   rË   r‰   r^   rt   rR  rØ   rD  rÃ   rÅ   r=  rH  s                  r+   rQ   z&MarkupLMForTokenClassification.forward×  sÕ   € ðV  �$”-Øð	
à)Ø)Ø)Ø)Ø%Ø'ð	
ð 	
ð ð	
ð 	
ˆð " !œ*ˆØ ŸOšO¨OÑ<Ô<ÐàˆØÐÝ'Ñ)Ô)ˆHØ�8Ø!×&Ò& r¨4¬;Ô+AÑBÔBØ—’˜B‘”ñô ˆDõ
 %ØØ$Ø!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r-   ©NNNNNNNN)rR   rS   rT   r1   r   r   rI   r›   r   r   r†   r   rQ   rV   rW   s   @r+   rM  rM  Â  sA  ø€ € € € € ðð ð ð ð ð Øð *.Ø.2Ø.2Ø.2Ø.2Ø,0Ø-1Ø&*ðD
ð D
à”< $Ñ&ðD
ð œ tÑ+ðD
ð œ tÑ+ð	D
ð
 œ tÑ+ðD
ð œ tÑ+ðD
ð ”l TÑ)ðD
ð ”| dÑ*ðD
ð ”˜tÑ#ðD
ð Ð+Ô,ðD
ð 
ˆuŒ|Ô	˜~Ñ	-ðD
ð D
ð D
ñ „^ñ ÔðD
ð D
ð D
ð D
ð D
r-   rM  z 
    MarkupLM Model transformer with a sequence classification/regression head on top (a linear layer on top of the
    pooled output) e.g. for GLUE tasks.
    c                   ó(  ‡ — e Zd Zˆ fd„Zee	 	 	 	 	 	 	 	 dd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j        dz  d	ej        dz  d
ej        dz  dee	         de
ej                 ez  fd„¦   «         ¦   «         Zˆ xZS )Ú!MarkupLMForSequenceClassificationc                 ód  •— t          ¦   «                              |¦  «         |j        | _        || _        t	          |¦  «        | _        |j        �|j        n|j        }t          j	        |¦  «        | _
        t          j        |j        |j        ¦  «        | _        |                      ¦   «          d S r–   )r0   r1   r6  r*   r   r  rO  r7   r   r6   r8   r3   r4   rP  r$  rQ  s      €r+   r1   z*MarkupLMForSequenceClassification.__init__(  sœ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒØˆŒå% fÑ-Ô-ˆŒà)/Ô)BÐ)NˆFÔ%Ð%ÐTZÔTnð 	õ ”zÐ"4Ñ5Ô5ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐr-   Nr}   rK   rL   rË   r‰   r^   rt   rR  rØ   r”   c	           
      óˆ  —  | j         |f||||||dœ|	¤Ž}
|
d         }|                      |¦  «        }|                      |¦  «        }d}|��Z| j        j        €f| j        dk    rd| j        _        nN| j        dk    r7|j        t          j        k    s|j        t          j	        k    rd| j        _        nd| j        _        | j        j        dk    rWt          ¦   «         }| j        dk    r1 ||                     ¦   «         |                     ¦   «         ¦  «        }nŽ |||¦  «        }n�| j        j        dk    rGt          ¦   «         } ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }n*| j        j        dk    rt          ¦   «         } |||¦  «        }t          |||
j        |
j        ¬¦  «        S )	a´  
        xpath_tags_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
            Tag IDs for each token in the input sequence, padded up to config.max_depth.
        xpath_subs_seq (`torch.LongTensor` of shape `(batch_size, sequence_length, config.max_depth)`, *optional*):
            Subscript IDs for each token in the input sequence, padded up to config.max_depth.
        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 regression loss is computed (Mean-Square loss), If
            `config.num_labels > 1` a classification loss is computed (Cross-Entropy).

        Examples:

        ```python
        >>> from transformers import AutoProcessor, AutoModelForSequenceClassification
        >>> import torch

        >>> processor = AutoProcessor.from_pretrained("microsoft/markuplm-base")
        >>> model = AutoModelForSequenceClassification.from_pretrained("microsoft/markuplm-base", num_labels=7)

        >>> html_string = "<html> <head> <title>Page Title</title> </head> </html>"
        >>> encoding = processor(html_string, return_tensors="pt")

        >>> with torch.no_grad():
        ...     outputs = model(**encoding)

        >>> loss = outputs.loss
        >>> logits = outputs.logits
        ```r;  r   NÚ
regressionÚsingle_label_classificationÚmulti_label_classificationrE   rT  )r  r8   rP  r*   Úproblem_typer6  ro   rI   rr   rz   r   rA  r   rê   r   r   r’   r  )rB   r}   rK   rL   rË   r‰   r^   rt   rR  rØ   rD  r±   rE  r=  rH  s                  r+   rQ   z)MarkupLMForSequenceClassification.forward7  sß  € ðT  �$”-Øð	
à)Ø)Ø)Ø)Ø%Ø'ð	
ð 	
ð ð	
ð 	
ˆð   œ
ˆàŸš ]Ñ3Ô3ˆØ—’ Ñ/Ô/ˆàˆØÑØŒ{Ô'Ð/Ø”? aÒ'Ð'Ø/;�D”KÔ,Ð,Ø”_ qÒ(Ð(¨f¬l½e¼jÒ.HÐ.HÈFÌLÕ\aÔ\eÒLeÐLeØ/L�D”KÔ,Ð,à/K�D”KÔ,àŒ{Ô'¨<Ò7Ð7Ý"™9œ9�Ø”? aÒ'Ð'Ø#˜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°´Ñ @Ô @À&Ç+Â+ÈbÁ/Ä/ÑRÔR��Ø”Ô)Ð-IÒIÐIÝ,Ñ.Ô.�Ø�x ¨Ñ/Ô/�å'ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
r-   rU  )rR   rS   rT   r1   r   r   rI   r›   r   r   r†   r   rQ   rV   rW   s   @r+   rW  rW     sB  ø€ € € € € ðð ð ð ð ð Øð *.Ø.2Ø.2Ø.2Ø.2Ø,0Ø-1Ø&*ðT
ð T
à”< $Ñ&ðT
ð œ tÑ+ðT
ð œ tÑ+ð	T
ð
 œ tÑ+ðT
ð œ tÑ+ðT
ð ”l TÑ)ðT
ð ”| dÑ*ðT
ð ”˜tÑ#ðT
ð Ð+Ô,ðT
ð 
ˆuŒ|Ô	Ð7Ñ	7ðT
ð T
ð T
ñ „^ñ ÔðT
ð T
ð T
ð T
ð T
r-   rW  )r3  rW  rM  r   r  )rÆ   )CrU   Úcollections.abcr   rI   r   Útorch.nnr   r   r   Ú r	   r  Úactivationsr
   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úconfiguration_markuplmr   Ú
get_loggerrR   ÚloggerÚModuler   rY   rŽ   rž   r¨   r¬   r³   r¸   rÀ   r›   ÚfloatrÛ   rÝ   rõ   rü   r	  r  r   r3  rM  rW  Ú__all__r#   r-   r+   ú<module>rp     sÆ  ðð Ð à $Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð 
ˆÔ	˜HÑ	%Ô	%€ð/ ð / ð / ð / ð / �b”iñ / ô / ð / ðdpð pð pð pð p˜œñ pô pð pðhð ð ð ð ˜œñ ô ð ðð ð ð ð ˜2œ9ñ ô ð ð ð ð ð ð �R”Yñ ô ð ðð ð ð ð �R”Yñ ô ð ð ð ð ð ð  b¤iñ ô ð ð$ð ð ð ð ˜rœyñ ô ð ð"!ð !ð !ð !ð !˜"œ)ñ !ô !ð !ð$ ð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð ð%ð ð%ð %ð %ð %ð.3)ð 3)ð 3)ð 3)ð 3)˜BœIñ 3)ô 3)ð 3)ðnð ð ð ð ˜œ	ñ ô ð ð.ð ð ð ð Ð.ñ ô ð ðD
ð 
ð 
ð 
ð 
�b”iñ 
ô 
ð 
ð2 ðið ið ið ið i˜oñ iô iñ „ðið$ ðf
ð f
ð f
ð f
ð f
Ð+ñ f
ô f
ñ „ðf
ðR ðb
ð b
ð b
ð b
ð b
Ð#:ñ b
ô b
ñ „ðb
ðJ €ððñ ô ð
V
ð V
ð V
ð V
ð V
Ð%<ñ V
ô V
ñô ð
V
ðr €ððñ ô ðg
ð g
ð g
ð g
ð g
Ð(?ñ g
ô g
ñô ðg
ðTð ð €€€r-   