Ë
    òT•j=9  ã                   ó  — d Z ddlZ ej                  d«      j                  Z ej                  d«      j                  Z ej                  d«      Z ej                  d«      Z ej                  d«      Z[ G d„ d	«      Z	y)
zÎShared support for scanning document type declarations in HTML and XHTML.

This module is used as a foundation for the html.parser module.  It has no
documented public API and should not be used directly.

é    Nz[a-zA-Z][-_.a-zA-Z0-9]*\s*z(\'[^\']*\'|"[^"]*")\s*z--\s*>z	]\s*]\s*>z]\s*>c                   ól   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdZd„ Z	dd„Z
dd	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú
ParserBaseziParser base class which provides some common support methods used
    by the SGML/HTML and XHTML parsers.c                 ó>   — | j                   t        u rt        d«      ‚y )Nz)_markupbase.ParserBase must be subclassed)Ú	__class__r   ÚRuntimeError©Úselfs    ú"/usr/lib/python3.12/_markupbase.pyÚ__init__zParserBase.__init__   s#   € Ø�>‰>œZÑ'ÜØ;ó=ð =ð (ó    c                 ó    — d| _         d| _        y )Né   r   ©ÚlinenoÚoffsetr   s    r
   ÚresetzParserBase.reset    s   € ØˆŒØˆ�r   c                 ó2   — | j                   | j                  fS )z&Return current line number and offset.r   r   s    r
   ÚgetposzParserBase.getpos$   s   € à�{‰{˜DŸK™KÐ'Ð'r   c                 óð   — ||k\  r|S | j                   }|j                  d||«      }|r6| j                  |z   | _        |j                  d||«      }||dz   z
  | _        |S | j                  |z   |z
  | _        |S )Nú
r   )ÚrawdataÚcountr   Úrindexr   )r	   ÚiÚjr   ÚnlinesÚposs         r
   Ú	updateposzParserBase.updatepos,   s   € Ø�Š6ØˆHØ—,‘,ˆØ—‘˜t Q¨Ó*ˆÙØŸ+™+¨Ñ.ˆDŒKØ—.‘.  q¨!Ó,ˆCØ˜S ™U™)ˆDŒKð ˆð Ÿ+™+¨™/¨!Ñ+ˆDŒKØˆr   Ú c                 ó4  — | j                   }|dz   }||| dk(  sJ d«       ‚|||dz    dk(  r|dz   S |||dz    dv ryt        |«      }|||dz    dk(  r| j                  |«      S ||   d	k(  r| j                  |«      S | j	                  ||«      \  }}|d
k  r|S |dk(  rd| _        ||k  rð||   }|dk(  r9||dz   | }|dk(  r| j                  |«       |dz   S | j                  |«       |dz   S |dv r t        ||«      }|sy|j                  «       }n||dv r| j	                  ||«      \  }	}nb|| j
                  v r|dz   }nN|d	k(  r8|dk(  r| j                  |dz   |«      }n.|dv rt        d|z  «      ‚t        d«      ‚t        d||   z  «      ‚|d
k  r|S ||k  rŒðy)Né   ú<!z$unexpected call to parse_declarationr   ú>)ú-r   éÿÿÿÿz--ú[r   Údoctyper   z"'Ú4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ>   ÚlinkÚattlistÚelementÚlinktypez&unsupported '[' char in %s declarationz"unexpected '[' char in declarationz!unexpected %r char in declaration)r   ÚlenÚparse_commentÚparse_marked_sectionÚ
_scan_nameÚ_decl_othercharsÚhandle_declÚunknown_declÚ_declstringlit_matchÚendÚ_parse_doctype_subsetÚAssertionError)
r	   r   r   r   ÚnÚdecltypeÚcÚdataÚmÚnames
             r
   Úparse_declarationzParserBase.parse_declaration<   s  € ð —,‘,ˆØ�‰EˆØ�q˜ˆ|˜tÒ#ÐKÐ%KÓKÐ#Ø�1�Q�q‘Sˆ>˜SÒ à�q‘5ˆLØ�1�Q�q‘Sˆ>˜YÑ&ð ä�‹LˆØ�1�Q�q‘Sˆ>˜TÒ!à×%Ñ% aÓ(Ð(Ø�Q‰Z˜3Òð
 ×,Ñ,¨QÓ/Ð/àŸ/™/¨!¨QÓ/‰KˆH�aØˆqŠ5ØˆHØ�yÒ Ø$&ˆDÔ!Ø�!ŠeØ˜‘
ˆAØ�CŠxà˜q ™s 1�~�Ø˜yÒ(Ø×$Ñ$ TÔ*ð ˜1‘u�ð ×%Ñ% dÔ+Ø˜1‘u�Ø�E‰zÜ(¨°!Ó4�ÙØØ—E‘E“G‘ØÐLÑLØŸ/™/¨!¨QÓ/‘�‘aØ�d×+Ñ+Ñ+Ø˜‘E‘Ø�c’à˜yÒ(Ø×2Ñ2°1°q±5¸!Ó<‘AØÐ!KÑKô
 )Ð)QÐT\Ñ)\Ó]Ð]ä(Ð)MÓNÐNä$Ð%HÈ7ÐSTÉ:Ñ%UÓVÐVØ�1ŠuØ�ðM �!‹eðN r   c                 ó˜  — | j                   }|||dz    dk(  sJ d«       ‚| j                  |dz   |«      \  }}|dk  r|S |dv rt        j                  ||dz   «      }n2|dv rt        j                  ||dz   «      }nt        d||dz   | z  «      ‚|sy|r(|j                  d«      }| j                  ||dz   | «       |j                  d«      S )	Né   z<![z)unexpected call to parse_marked_section()r   >   ÚtempÚcdataÚignoreÚrcdataÚinclude>   ÚifÚelseÚendifz+unknown status keyword %r in marked sectionr%   )	r   r0   Ú_markedsectioncloseÚsearchÚ_msmarkedsectioncloser7   Ústartr3   r5   )r	   r   Úreportr   ÚsectNamer   Úmatchs          r
   r/   zParserBase.parse_marked_section�   sè   € Ø—‘ˆØ�q˜˜1™ˆ~ Ò&ÐSÐ(SÓSÐ&Ø—o‘o q¨¡s¨AÓ/‰ˆ�!ØˆqŠ5ØˆHØÐGÑGä&×-Ñ-¨g°q¸±sÓ;‰EØÐ0Ñ0ä(×/Ñ/°¸¸1¹Ó=‰Eä Ø=ÀÈÈ!ÉÈAÀÑNóð ñ ØÙØ—‘˜A“ˆAØ×Ñ˜g a¨¡c¨1˜oÔ.Ø�y‰y˜‹|Ðr   c                 óô   — | j                   }|||dz    dk7  rt        d«      ‚t        j                  ||dz   «      }|sy|r(|j	                  d«      }| j                  ||dz   | «       |j                  d«      S )Né   ú<!--z"unexpected call to parse_comment()r%   r   )r   r7   Ú_commentcloserJ   rL   Úhandle_commentr5   )r	   r   rM   r   rO   r   s         r
   r.   zParserBase.parse_comment¥   s{   € Ø—,‘,ˆØ�1�Q�q‘Sˆ>˜VÒ#Ü Ð!EÓFÐFÜ×$Ñ$ W¨a°©cÓ2ˆÙØÙØ—‘˜A“ˆAØ×Ñ ¨¨!©¨Q Ô0Ø�y‰y˜‹|Ðr   c                 óÄ  — | j                   }t        |«      }|}||k  �rÁ||   }|dk(  rÒ|||dz    }|dk(  ry|dk7  r#| j                  ||dz   «       t        d|z  «      ‚|dz   |k(  ry|dz   |kD  ry|||dz    dk(  r| j	                  |d	¬
«      }|d	k  r|S Œ~| j                  |dz   |«      \  }}|dk(  ry|dvr#| j                  ||dz   «       t        d|z  «      ‚t        | d|z   «      }	 |	||«      }|d	k  rà|S |dk(  r6|dz   |k(  ry| j                  |dz   |«      \  }}|d	k  r|S ||   dk(  r©|dz   }n£|dk(  rh|dz   }||k  r1||   j                  «       r|dz   }||k  r||   j                  «       rŒ||k  r'||   dk(  r|S | j                  ||«       t        d«      ‚y|j                  «       r|dz   }n | j                  ||«       t        d|z  «      ‚||k  r�ŒÁy)Nú<r!   r%   r"   r   z*unexpected char in internal subset (in %r)rQ   rR   r   )rM   >   Úentityr*   r+   Únotationz)unknown declaration %r in internal subsetÚ_parse_doctype_ú%ú;ú]r#   z%unexpected char after internal subsetz%unexpected char %r in internal subset)r   r-   r   r7   r.   r0   ÚgetattrÚisspace)
r	   r   Údeclstartposr   r8   r   r:   Úsr=   Úmeths
             r
   r6   z ParserBase._parse_doctype_subset³   sT  € Ø—,‘,ˆÜ�‹LˆØˆØ�!‹eØ˜‘
ˆAØ�CŠxØ˜A˜a ™c�N�Ø˜’8àØ˜’9Ø—N‘N <°°Q±Ô7Ü(ØDÀqÑHóð ð ˜‘E˜a’<àØ˜‘E˜Q’;àØ˜1˜Q˜q™S�> VÒ+Ø×*Ñ*¨1°QÐ*Ó7�AØ˜1’uØ ˜ØØŸ/™/¨!¨a©%°Ó>‘��aØ˜’7ØØÐKÑKØ—N‘N <°°Q±Ô7Ü(ØCÀdÑJóð ô ˜tÐ%6¸Ñ%=Ó>�Ù˜˜LÓ)�Ø�q’5Ø�HØ�c’à˜‘E˜a’<àØ—‘ q¨1¡u¨lÓ;‘��1Ø�q’5Ø�HØ˜1‘: Ò$Ø˜A™‘AØ�c’Ø˜‘E�Ø˜!’e ¨¡
× 2Ñ 2Ô 4Ø˜A™�Að ˜!’e ¨¡
× 2Ñ 2Õ 4à�q’5Ø˜q‘z SÒ(Ø ˜Ø—N‘N <°Ô3Ü(Ð)PÓQÐQàØ—‘”Ø˜‘E‘à—‘˜|¨QÔ/Ü$Ð%LÈqÑ%PÓQÐQð{ �!Œeð~ r   c                 óŠ   — | j                  ||«      \  }}|dk(  ry| j                  }d||d  v r|j                  d|«      dz   S y)Nr%   r#   r   )r0   r   Úfind)r	   r   r_   r=   r   r   s         r
   Ú_parse_doctype_elementz!ParserBase._parse_doctype_elementù   sP   € Ø—/‘/ ! \Ó2‰ˆˆaØ�Š7Øà—,‘,ˆØ�'˜!˜"�+ÑØ—<‘<  QÓ'¨!Ñ+Ð+Ør   c                 ó¦  — | j                   }| j                  ||«      \  }}|||dz    }|dk(  ry|dk(  r|dz   S 	 | j                  ||«      \  }}|dk  r|S |||dz    }|dk(  ry|dk(  rVd||d  v r|j                  d|«      dz   }ny|||dz    j                  «       r|dz   }|||dz    j                  «       rŒ||d  sy| j                  ||«      \  }}|||dz    }|sy|dv r+t	        ||«      }|r|j                  «       }ny|||dz    }|sy|d	k(  r3||d  d	k(  ry| j                  |dz   |«      \  }}|dk  r|S |||dz    }|sy|dk(  r|dz   S �Œ)
Nr   r   r%   r#   r   ú(ú)ú'"ú#)r   r0   rc   r^   r4   r5   )r	   r   r_   r   r=   r   r:   r<   s           r
   Ú_parse_doctype_attlistz!ParserBase._parse_doctype_attlist  s¿  € Ø—,‘,ˆØ—/‘/ ! \Ó2‰ˆˆaØ�A�a˜‘cˆNˆØ�Š7ØØ�Š8Ø�q‘5ˆLØð —o‘o a¨Ó6‰GˆD�!Ø�1ŠuØ�Ø˜˜!˜A™#�ˆAØ�BŠwØØ�CŠxà˜' ! "˜+Ñ%ØŸ™ S¨!Ó,¨qÑ0‘AàØ˜a  !¡�n×,Ñ,Ô.Ø˜A™�Að ˜a  !¡�n×,Ñ,Õ.à˜q˜r‘{ààŸ/™/¨!¨\Ó:‘��aØ˜˜!˜A™#�ˆAÙØØ�E‰zÜ(¨°!Ó4�ÙØŸ™›‘AàØ˜A˜a ™c�N�ÙØØ�CŠxØ˜1˜2�; #Ò%àØŸ/™/¨!¨a©%°Ó>‘��aØ�q’5Ø�HØ˜A˜a ™c�N�ÙØØ�CŠxà˜1‘u�ñ] r   c                 ó   — | j                  ||«      \  }}|dk  r|S | j                  }	 |||dz    }|sy|dk(  r|dz   S |dv r t        ||«      }|sy|j                  «       }n| j                  ||«      \  }}|dk  r|S ŒV)Nr   r   r%   r#   rh   )r0   r   r4   r5   )r	   r   r_   r=   r   r   r:   r<   s           r
   Ú_parse_doctype_notationz"ParserBase._parse_doctype_notation=  sœ   € Ø—/‘/ ! \Ó2‰ˆˆaØˆqŠ5ØˆHØ—,‘,ˆØØ˜˜!˜A™#�ˆAÙàØ�CŠxØ˜1‘u�Ø�E‰zÜ(¨°!Ó4�ÙØØ—E‘E“G‘àŸ/™/¨!¨\Ó:‘��aØ�q’5Ø�Hð r   c                 ó€  — | j                   }|||dz    dk(  r)|dz   }	 |||dz    }|sy|j                  «       r|dz   }nnŒ#|}| j                  ||«      \  }}|dk  r|S 	 | j                   ||dz    }|sy|dv r t        ||«      }|r|j	                  «       }n'y|dk(  r|dz   S | j                  ||«      \  }}|dk  r|S Œ`)Nr   rZ   r%   r   rh   r#   )r   r^   r0   r4   r5   )r	   r   r_   r   r   r:   r=   r<   s           r
   Ú_parse_doctype_entityz ParserBase._parse_doctype_entityT  sõ   € Ø—,‘,ˆØ�1�Q�q‘Sˆ>˜SÒ Ø�A‘ˆAØØ˜A˜a ™c�N�ÙØØ—9‘9”;Ø˜A™‘Aàð ð ˆAØ—/‘/ ! \Ó2‰ˆˆaØˆqŠ5ØˆHØØ—‘˜Q˜q ™sÐ#ˆAÙØØ�E‰zÜ(¨°!Ó4�ÙØŸ™›‘AàØ�c’Ø˜1‘u�àŸ/™/¨!¨\Ó:‘��aØ�q’5Ø�Hð r   c                 óH  — | j                   }t        |«      }||k(  ryt        ||«      }|rR|j                  «       }|j	                  «       }|t        |«      z   |k(  ry|j                  «       |j                  «       fS | j                  ||«       t        d|||dz    z  «      ‚)N)Nr%   zexpected name token at %ré   )	r   r-   Ú_declname_matchÚgroupÚstripÚlowerr5   r   r7   )r	   r   r_   r   r8   r<   r`   r=   s           r
   r0   zParserBase._scan_namex  sœ   € Ø—,‘,ˆÜ�‹LˆØ�Š6ØÜ˜G QÓ'ˆÙØ—‘“	ˆAØ—7‘7“9ˆDØ”C˜“F‘
˜qÒ ØØ—:‘:“< §¡£Ð(Ð(à�N‰N˜<¨Ô+Ü Ø+¨g°lÀ<ÐPRÁ?Ð.SÑSóð r   c                  ó   — y )N© )r	   r;   s     r
   r3   zParserBase.unknown_decl‹  s   € Ør   N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r1   r>   r/   r.   r6   rd   rj   rl   rn   r0   r3   rv   r   r
   r   r      s[   „ ñ+ò=ò
ò(òð ÐòMóbó0
òCòLò6òrò. òHó&r   r   )
rz   ÚreÚcompilerO   rq   r4   rS   rI   rK   r   rv   r   r
   ú<module>r}      s�   ðñó 
à�"—*‘*Ð:Ó;×AÑA€Ø!�r—z‘zÐ"<Ó=×CÑCÐ Ø�—
‘
˜9Ó%€Ø �b—j‘j Ó.Ð ð
 #˜Ÿ
™
 8Ó,Ð à÷uò ur   