o
    ¼>hü7  ã                   @  sÆ   d Z ddlmZ ddlZddlZddlZddlmZm	Z	 er$ddl
mZ ej d¡Zej e¡Zej e¡ eejd< e d¡e_e d	¡e_eje_e d
ej¡e_e d¡ZG dd„ dejƒZdS )a  
This module imports a copy of [`html.parser.HTMLParser`][] and modifies it heavily through monkey-patches.
A copy is imported rather than the module being directly imported as this ensures that the user can import
and  use the unmodified library for their own needs.
é    )ÚannotationsN)ÚTYPE_CHECKINGÚSequence)ÚMarkdownzhtml.parserÚ
htmlparserz\?>z&([a-zA-Z][-.a-zA-Z0-9]*);a”  
  <[a-zA-Z][^`\t\n\r\f />\x00]*       # tag name <= added backtick here
  (?:[\s/]*                           # optional whitespace before attribute name
    (?:(?<=['"\s/])[^`\s/>][^\s/=>]*  # attribute name <= added backtick here
      (?:\s*=+\s*                     # value indicator
        (?:'[^']*'                    # LITA-enclosed value
          |"[^"]*"                    # LIT-enclosed value
          |(?!['"])[^`>\s]*           # bare value <= added backtick here
         )
         (?:\s*,)*                    # possibly followed by a comma
       )?(?:\s|/(?!>))*
     )*
   )?
  \s*                                 # trailing whitespace
z^([ ]*\n){2}c                      s  e Zd ZU dZd@‡ fdd„Z‡ fdd„Z‡ fdd	„ZedAdd„ƒZdBdd„Z	dCdd„Z
dDdd„ZdEdd„ZdFdd„ZdGdd „ZdEd!d"„ZdHd$d%„ZdHd&d'„ZdFd(d)„ZdFd*d+„ZdFd,d-„ZdFd.d/„ZdI‡ fd1d2„ZdI‡ fd3d4„ZdJdK‡ fd7d8„Zd9Zd:ed;< dLd<d=„ZdId>d?„Z‡  ZS )MÚHTMLExtractorzû
    Extract raw HTML from text.

    The raw HTML is stored in the [`htmlStash`][markdown.util.HtmlStash] of the
    [`Markdown`][markdown.Markdown] instance passed to `md` and the remaining text
    is stored in `cleandoc` as a list of strings.
    Úmdr   c                   s@   d|vrd|d< t dgƒ| _dg| _tƒ j|i |¤Ž || _d S )NÚconvert_charrefsFÚhrr   )ÚsetÚ
empty_tagsÚlineno_start_cacheÚsuperÚ__init__r   )Úselfr   ÚargsÚkwargs©Ú	__class__© ús/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/markdown/htmlparser.pyr   S   s   
zHTMLExtractor.__init__c                   s4   d| _ d| _g | _g | _g | _dg| _tƒ  ¡  dS )z1Reset this instance.  Loses all unprocessed data.Fr   N)ÚinrawÚintailÚstackÚ_cacheÚcleandocr   r   Úreset©r   r   r   r   r   `   s   zHTMLExtractor.resetc                   sv   t ƒ  ¡  t| jƒr | jr| js|  t | j¡¡ n|  | j¡ t| j	ƒr9| j
 | jj d | j	¡¡¡ g | _	dS dS )zHandle any buffered data.Ú N)r   ÚcloseÚlenÚrawdatar	   Ú
cdata_elemÚhandle_datar   Úunescaper   r   Úappendr   Ú	htmlStashÚstoreÚjoinr   r   r   r   r   k   s   



þzHTMLExtractor.closeÚreturnÚintc                 C  sj   t t| jƒd | jd ƒD ]}| j| }| j d|¡}|dkr$t| jƒ}| j |d ¡ q| j| jd  S )zHReturns char index in `self.rawdata` for the start of the current line. é   Ú
éÿÿÿÿ)Úranger    r   Úlinenor!   Úfindr%   )r   ÚiiÚlast_line_start_posÚlf_posr   r   r   Úline_offsetz   s   

zHTMLExtractor.line_offsetÚboolc                 C  s<   | j dkrdS | j dkrdS | j| j| j| j  …  ¡ dkS )z†
        Returns True if current position is at start of line.

        Allows for up to three blank spaces at start of line.
        r   Té   Fr   )Úoffsetr!   r4   Ústripr   r   r   r   Úat_line_start‡   s
   

 zHTMLExtractor.at_line_startÚtagÚstrc                 C  s<   | j | j }tj | j|¡}|r| j|| ¡ … S d |¡S )z™
        Returns the text of the end tag.

        If it fails to extract the actual text from the raw data, it builds a closing tag with `tag`.
        z</{}>)r4   r7   r   Ú	endendtagÚsearchr!   ÚendÚformat)r   r:   ÚstartÚmr   r   r   Úget_endtag_text”   s
   
zHTMLExtractor.get_endtag_textÚattrsúSequence[tuple[str, str]]c                 C  sœ   || j v r|  ||¡ d S | j |¡r&| js|  ¡ r&| js&d| _| j d¡ |  	¡ }| jr;| j
 |¡ | j |¡ d S | j |¡ || jv rL|  ¡  d S d S )NTr,   )r   Úhandle_startendtagr   Úis_block_levelr   r9   r   r   r%   Úget_starttag_textr   r   ÚCDATA_CONTENT_ELEMENTSÚclear_cdata_mode)r   r:   rC   Útextr   r   r   Úhandle_starttag£   s   
 
þzHTMLExtractor.handle_starttagc                 C  sÖ   |   |¡}| jrc| j |¡ || jv r!| jr!| j ¡ |krn| jst| jƒdkrat | j	| j
| j t|ƒ d … ¡rA| j d¡ nd| _d| _| j | jj d | j¡¡¡ | j d¡ g | _d S d S | j |¡ d S )Nr   r,   TFr   ú

)rB   r   r   r%   r   Úpopr    Úblank_line_reÚmatchr!   r4   r7   r   r   r   r&   r'   r(   )r   r:   rJ   r   r   r   Úhandle_endtag¸   s$   

þ$
ózHTMLExtractor.handle_endtagÚdatac                 C  s:   | j r
d|v r
d| _ | jr| j |¡ d S | j |¡ d S )Nr,   F)r   r   r   r%   r   ©r   rQ   r   r   r   r#   Ó   s
   zHTMLExtractor.handle_dataÚis_blockc                 C  sÆ   | j s| jr| j |¡ dS |  ¡ r[|r[t | j| j| j	 t
|ƒ d… ¡r+|d7 }nd| _| jr6| jd nd}| d¡sH| d¡rH| j d¡ | j | jj |¡¡ | j d¡ dS | j |¡ dS )z Handle empty tags (`<data>`). Nr,   Tr-   r   rL   )r   r   r   r%   r9   rN   rO   r!   r4   r7   r    r   Úendswithr   r&   r'   )r   rQ   rS   Úitemr   r   r   Úhandle_empty_tagÛ   s   $
zHTMLExtractor.handle_empty_tagc                 C  s   | j |  ¡ | j |¡d d S )N©rS   )rV   rG   r   rF   )r   r:   rC   r   r   r   rE   ò   s   z HTMLExtractor.handle_startendtagÚnamec                 C  ó   | j d |¡dd d S )Nz&#{};FrW   ©rV   r?   ©r   rX   r   r   r   Úhandle_charrefõ   ó   zHTMLExtractor.handle_charrefc                 C  rY   )Nz&{};FrW   rZ   r[   r   r   r   Úhandle_entityrefø   r]   zHTMLExtractor.handle_entityrefc                 C  rY   )Nz	<!--{}-->TrW   rZ   rR   r   r   r   Úhandle_commentû   r]   zHTMLExtractor.handle_commentc                 C  rY   )Nz<!{}>TrW   rZ   rR   r   r   r   Úhandle_declþ   r]   zHTMLExtractor.handle_declc                 C  rY   )Nz<?{}?>TrW   rZ   rR   r   r   r   Ú	handle_pi  r]   zHTMLExtractor.handle_pic                 C  s,   |  d¡rdnd}| jd ||¡dd d S )NzCDATA[z]]>z]>z<![{}{}TrW   )Ú
startswithrV   r?   )r   rQ   r>   r   r   r   Úunknown_decl  s   zHTMLExtractor.unknown_declÚic                   ó,   |   ¡ s| jrtƒ  |¡S |  d¡ |d S )Nz<?é   )r9   r   r   Úparse_pir#   ©r   rd   r   r   r   rg     ó   
zHTMLExtractor.parse_pic                   re   )Nz<!rf   )r9   r   r   Úparse_html_declarationr#   rh   r   r   r   rj     ri   z$HTMLExtractor.parse_html_declarationr   Úreportc                   s6   t ƒ  ||¡}|dkrdS | j| j||… dd |S )Nr-   FrW   )r   Úparse_bogus_commentrV   r!   )r   rd   rk   Úposr   r   r   rl     s
   z!HTMLExtractor.parse_bogus_commentNz
str | NoneÚ_HTMLExtractor__starttag_textc                 C  s   | j S )z)Return full source of start tag: `<...>`.)rn   r   r   r   r   rG   '  s   zHTMLExtractor.get_starttag_textc                 C  sê  d | _ |  |¡}|dk r|S | j}|||… | _ g }tj ||d ¡}|s)J dƒ‚| ¡ }| d¡ ¡  | _	}||k r™tj
 ||¡}|sEnT| ddd¡\}	}
}|
sTd }n-|d d… d  krf|dd … ks{n |d d… d  kry|dd … krn n|dd… }|rˆt |¡}| |	 ¡ |f¡ | ¡ }||k s;|||…  ¡ }|d	vrÖ|  ¡ \}}d
| j v rÄ|| j  d
¡ }t| j ƒ| j  d
¡ }n|t| j ƒ }|  |||… ¡ |S | d¡rã|  ||¡ |S || jv rí|  |¡ |  ||¡ |S )Nr   r+   z#unexpected call to parse_starttag()rf   r6   ú'r-   ú")ú>ú/>r,   rr   )rn   Úcheck_for_whole_start_tagr!   r   Útagfind_tolerantrO   r>   ÚgroupÚlowerÚlasttagÚattrfind_tolerantr$   r%   r8   ÚgetposÚcountr    Úrfindr#   rT   rE   rH   Úset_cdata_moderK   )r   rd   Úendposr!   rC   rO   Úkr:   rA   ÚattrnameÚrestÚ	attrvaluer>   r/   r7   r   r   r   Úparse_starttag+  sX   
&(
ó

ÿ

ý
zHTMLExtractor.parse_starttag)r   r   )r)   r*   )r)   r5   )r:   r;   r)   r;   )r:   r;   rC   rD   )r:   r;   )rQ   r;   )rQ   r;   rS   r5   )rX   r;   )rd   r*   r)   r*   )r   )rd   r*   rk   r*   r)   r*   )r)   r;   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Úpropertyr4   r9   rB   rK   rP   r#   rV   rE   r\   r^   r_   r`   ra   rc   rg   rj   rl   rn   Ú__annotations__rG   r‚   Ú__classcell__r   r   r   r   r   J   s4   
 













r   )r†   Ú
__future__r   ÚreÚimportlib.utilÚ	importlibÚsysÚtypingr   r   Úmarkdownr   ÚutilÚ	find_specÚspecÚmodule_from_specr   ÚloaderÚexec_moduleÚmodulesÚcompileÚpicloseÚ	entityrefÚ
incompleteÚVERBOSEÚlocatestarttagend_tolerantrN   Ú
HTMLParserr   r   r   r   r   Ú<module>   s(   
ò
