Ë
    m]jÙù  ã                   óœ   — 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mZmZmZ ddlmZ  e ee«      «      Zd„ Zd„ Z G d	„ d
«      Zy)é    )Úbisect_left)Údeque)Úhtml5é   )	ÚEOFÚTokenÚascii_lettersÚascii_upper_to_lowerÚdigitsÚ	hexdigitsÚreplacement_charactersÚspace_charactersÚtag_token_types)ÚHTMLInputStreamc                 óŠ   — | t         v ryt        t        | «      x}t        t         «      k(  ryt        |   j	                  | «      S )NTF)Úentitiesr   Úentity_keysÚlenÚ
startswith©ÚprefixÚis     úJ/var/www/zogu/zoguvenv/lib/python3.12/site-packages/tinyhtml5/tokenizer.pyÚhas_keys_with_prefixr      s=   € Ø”ÑØÜœ fÓ-Ð-ˆ´#´h³-Ò?ØÜ�q‰>×$Ñ$ VÓ,Ð,ó    c                 óŽ   — | t         v r| S t        dt        | «      dz   «      D ]  }| d |  t         v sŒ| d |  c S  t        | «      ‚)Nr   )r   Úranger   ÚKeyErrorr   s     r   Úlongest_prefixr      sX   € Ø”ÑØˆÜ�1”c˜&“k A‘oÓ&ò ˆØ�#�A�2ˆ;œ(Ò"Ø˜#˜A˜2�;Òðô �6Ó
Ðr   c                   óÖ  — e Zd ZdZdNd„Zd„ Zd„ Zd„ Zd„ ZdOd„Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#d#„ Z$d$„ Z%d%„ Z&d&„ Z'd'„ Z(d(„ Z)d)„ Z*d*„ Z+d+„ Z,d,„ Z-d-„ Z.d.„ Z/d/„ Z0d0„ Z1d1„ Z2d2„ Z3d3„ Z4d4„ Z5d5„ Z6d6„ Z7d7„ Z8d8„ Z9d9„ Z:d:„ Z;d;„ Z<d<„ Z=d=„ Z>d>„ Z?d?„ Z@d@„ ZAdA„ ZBdB„ ZCdC„ ZDdD„ ZEdE„ ZFdF„ ZGdG„ ZHdH„ ZIdI„ ZJdJ„ ZKdK„ ZLdL„ ZMdM„ ZNy)PÚHTMLTokenizerzHTML tokenizer.Nc                 ód   — t        |fi |¤Ž| _        || _        | j                  | _        d | _        y ©N)r   ÚstreamÚparserÚ
data_stateÚstateÚcurrent_token)Úselfr$   r%   Úkwargss       r   Ú__init__zHTMLTokenizer.__init__)   s/   € Ü% fÑ7°Ñ7ˆŒØˆŒð —_‘_ˆŒ
Ø!ˆÕr   c              #   ó¢  K  — t        «       | _        | j                  «       r¬| j                  j                  rOt
        j                  | j                  j                  j                  d«      dœ–— | j                  j                  rŒO| j                  r)| j                  j                  «       –— | j                  rŒ)| j                  «       rŒ«yy­w)zäThis is where the magic happens.

        We do our usually processing through the states and when we have a token
        to return we yield the token which pauses processing until the next token
        is requested.

        r   ©ÚtypeÚdataN)	r   Útoken_queuer'   r$   Úerrorsr   ÚPARSE_ERRORÚpopÚpopleft©r)   s    r   Ú__iter__zHTMLTokenizer.__iter__1   sš   è ø€ ô !›7ˆÔð �j‰jŒlØ—+‘+×$Ò$ä!×-Ñ-Ø ŸK™K×.Ñ.×2Ñ2°1Ó5ñò ð —+‘+×$Ó$ð
 ×"Ò"Ø×&Ñ&×.Ñ.Ó0Ò0ð ×"Ó"ð �j‰j�lùs   ‚BCÂ4CÂ<CÃCc                 ón   — t         j                  |dœ}|r||d<   | j                  j                  |«       y)z%Add a parse error to the token queue.r-   ÚdatavarsN)r   r2   r0   Úappend)r)   Ú_datar8   Útokens       r   Úparse_errorzHTMLTokenizer.parse_errorE   s3   € ä×*Ñ*°EÑ:ˆÙØ (ˆE�*ÑØ×Ñ×Ñ Õ&r   c                 ó\   — | j                   j                  t        j                  |dœ«       y)z+Add a characters string to the token queue.r-   N)r0   r9   r   Ú
CHARACTERS)r)   r:   s     r   Ú
characterszHTMLTokenizer.charactersL   s!   € à×Ñ×Ñ¬×)9Ñ)9À5Ñ IÕJr   c                 óÂ  — |rt         nt        }|rdnd}g }| j                  j                  «       }||v r0|j	                  |«       | j                  j                  «       }||v rŒ0t        dj                  |«      |«      }|t        v rt        |   }| j                  d|¬«       n‰d|cxk  rdk  sn |dkD  rd	}| j                  d|¬«       nad
|cxk  rdk  s8n d|cxk  rdk  s+n d|cxk  rdk  sn d|cxk  rdk  sn |t        g d¢«      v r| j                  d|¬«       t        |«      }|dk7  r,| j                  d«       | j                  j                  |«       |S )zªReturn either U+FFFD or the character based on the representation.

        It also discards ";" if present. If not present self.parse_error is
        invoked.

        é   é
   Ú z$illegal-codepoint-for-numeric-entity)Úintegeri Ø  iÿß  éÿÿ õ   ï¿½r   é   é   é   é   éŸ   iÐý  iïý  )#é   iþÿ  iÿÿ  iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ	 iÿÿ	 iþÿ
 iÿÿ
 iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ iÿÿ iþÿ rE   ú;z numeric-entity-without-semicolon)r   r   r$   Ú	characterr9   ÚintÚjoinr   r<   Ú	frozensetÚchrÚunget)r)   Úis_hexÚallowedÚradixÚstackrN   rD   Úreplacements           r   Úconsume_number_entityz#HTMLTokenizer.consume_number_entityP   sj  € ñ  &•)¬6ˆÙ‘ "ˆØˆð —K‘K×)Ñ)Ó+ˆ	Ø˜7Ñ"Ø�L‰L˜Ô#ØŸ™×-Ñ-Ó/ˆIð ˜7Ò"ô
 �b—g‘g˜e“n eÓ,ˆð Ô,Ñ,Ü0°Ñ9ˆKØ×ÑÐCÈWÐÕUØ˜Ô) 6Ô)¨w¸Ò/AØ"ˆKØ×ÑÐCÈWÐÕUð ˜7Ô, fÔ,Ø˜7Ô, fÔ,Ø˜7Ô, fÔ,Ø˜7Ô, fÔ,Øœ9ò &:ó ;ñ ;ð × Ñ Ø:ÀGð !ô Mä˜g›,ˆKð ˜ÒØ×ÑÐ?Ô@Ø�K‰K×Ñ˜iÔ(àÐr   c                 ó¾  — d}| j                   j                  «       g}|d   t        ddgt        ¢­v xs |d uxr ||d   k(  }|r | j                   j	                  |d   «       �nK|d   dk(  rñd}|j                  | j                   j                  «       «       |d   dv r+d}|j                  | j                   j                  «       «       |d   |rt        nt        v r1| j                   j	                  |d   «       | j                  |«      }�n¢| j                  d	«       | j                   j	                  |j                  «       «       dd
j                  |«      › �}�nR|d   t        urPt        d
j                  |«      «      sn5|j                  | j                   j                  «       «       |d   t        urŒP	 t        d
j                  |d d «      «      }|d   dk7  r| j                  d«       t        |«      }||   t        v xs ||   t        v xs ||   dk(  }	|d   dk7  rB|r@|	r>| j                   j	                  |j                  «       «       dd
j                  |«      › �}nI| j                   j	                  |j                  «       «       t         |   › d
j                  ||d  «      › �}	 |r| j$                  d   d   dxx   |z  cc<   y |t        v rdnd}
| j&                  j                  t(        |
   |dœ«       y # t"        $ rQ | j                  d«       | j                   j	                  |j                  «       «       dd
j                  |«      › �}Y Œ«w xY w)Nú&r   ú<ú#Féÿÿÿÿ)ÚxÚXTzexpected-numeric-entityrC   rM   znamed-entity-without-semicolonú=zexpected-named-entityr/   r   ÚSPACE_CHARACTERSr>   r-   )r$   rN   r   r   rS   r9   r   r   rY   r<   r3   rP   r   r   r   r	   r   r   r(   r0   r   )r)   rU   Úfrom_attributeÚoutputrW   rS   ÚhexÚentity_nameÚentity_lengthÚallowed_characterr.   s              r   Úconsume_entityzHTMLTokenizer.consume_entity…   s  € àˆà—‘×&Ñ&Ó(Ð)ˆà�!‰Hœ˜c 3Ð:Ô)9Ñ:Ð:ò :Ø˜DÐ Ò8 W°°a±Ñ%8ð 	ñ Ø�K‰K×Ñ˜e A™hÖ'à�1‰X˜Š_àˆCØ�L‰L˜Ÿ™×.Ñ.Ó0Ô1Ø�R‰y˜JÑ&Ø�Ø—‘˜TŸ[™[×2Ñ2Ó4Ô5ð �R‰y©#�Y´6Ñ:à—‘×!Ñ! %¨¡)Ô,Ø×3Ñ3°CÓ8’ð × Ñ Ð!:Ô;Ø—‘×!Ñ! %§)¡)£+Ô.Ø˜RŸW™W U›^Ð,Ð-’ð ˜‘)¤3Ñ&Ü+¨B¯G©G°E«NÔ;ØØ—‘˜TŸ[™[×2Ñ2Ó4Ô5ð ˜‘)¤3Ò&ðXÜ,¨R¯W©W°U¸3¸B°ZÓ-@ÓA�ð ˜r‘? cÒ)Ø×$Ñ$Ð%EÔFÜ # KÓ 0�à˜-Ñ(¬MÐ9ò 0Ø˜-Ñ(¬FÐ2ò0à˜-Ñ(¨CÑ/ð "ð ˜r‘? cÒ)©nÑARØ—K‘K×%Ñ% e§i¡i£kÔ2Ø  §¡¨£Ð 0Ð1‘Fà—K‘K×%Ñ% e§i¡i£kÔ2Ü (¨Ñ 5Ð6°r·w±w¸uÀ]À^Ð?TÓ7UÐ6VÐW‘FáØ×Ñ˜vÑ& rÑ*¨1Ó-°Ñ7Ô-à)/Ô3CÑ)CÑ%ÈˆDØ×Ñ×#Ñ#¬U°4©[À&Ñ$IÕJøô/ ò .Ø× Ñ Ð!8Ô9Ø—‘×!Ñ! %§)¡)£+Ô.Ø˜RŸW™W U›^Ð,Ð-’ð.ús   Æ:L ÌAMÍMc                 ó*   — | j                  |d¬«       y)z5Replace the need for entity_in_attribute_value_state.T)rU   rc   N)ri   )r)   rU   s     r   Úprocess_entity_in_attributez)HTMLTokenizer.process_entity_in_attributeÌ   s   € à×Ñ G¸DÐÕAr   c                 óö  — | j                   }|d   t        v r¶|d   j                  t        «      |d<   |d   t        j
                  k(  rC|d   }t        |«      }t        |«      t        |«      kD  r|j                  |ddd…   «       ||d<   |d   t        j                  k(  r,|d   r| j                  d«       |d   r| j                  d«       | j                  j                  |«       | j                  | _        y)	z°This method is a generic handler for emitting the tags.

        It also sets the state to "data" because that's what's needed after a
        token has been emitted.

        r.   Únamer/   Nr^   zattributes-in-end-tagÚselfClosingzself-closing-flag-on-end-tag)r(   r   Ú	translater
   r   Ú	START_TAGÚdictr   ÚupdateÚEND_TAGr<   r0   r9   r&   r'   )r)   r;   Úrawr/   s       r   Úemit_current_tokenz HTMLTokenizer.emit_current_tokenÐ   sß   € ð ×"Ñ"ˆà�‰=œOÑ+Ø! &™M×3Ñ3Ô4HÓIˆE�&‰MØ�V‰}¤§¡Ò/Ø˜F‘m�Ü˜C“y�Ü�s“8œc $›iÒ'à—K‘K ¡D b D¡	Ô*Ø $��f‘à�V‰}¤§¡Ò-Ø˜’=Ø×$Ñ$Ð%<Ô=Ø˜Ò'Ø×$Ñ$Ð%CÔDØ×Ñ×Ñ Ô&Ø—_‘_ˆ�
r   c                 ó   — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r| j                  | _        y|dk(  r#| j                  d«       | j                  d«       y|t        u ry|t        v rN| j                  j                  t        j                  || j                   j                  t        d«      z   dœ«       y| j                   j                  d«      }| j                  ||z   «       y)	Nr[   r\   ú úinvalid-codepointFTr-   ©r[   r\   rw   )r$   rN   Úentity_data_stater'   Útag_open_stater<   r?   r   r   r0   r9   r   rb   Úchars_until©r)   r/   r?   s      r   r&   zHTMLTokenizer.data_stateì   sõ   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×/Ñ/ˆDŒJð, ð+ �SŠ[Ø×,Ñ,ˆDŒJð( ð' �XÒØ×ÑÐ0Ô1Ø�O‰O˜HÔ%ð" ð! ”S‰[ØØÔ%Ñ%ð ×Ñ×#Ñ#Ü×.Ñ.Ø˜tŸ{™{×6Ñ6Ô7GÈÓNÑNñ%ô ð ð Ÿ™×0Ñ0Ð1EÓFˆJØ�O‰O˜D :Ñ-Ô.Ør   c                 óF   — | j                  «        | j                  | _        y©NT)ri   r&   r'   r5   s    r   rz   zHTMLTokenizer.entity_data_state  s   € Ø×ÑÔØ—_‘_ˆŒ
Ør   c                 ó   — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r| j                  | _        y|t
        u ry|dk(  r#| j                  d«       | j                  d«       y|t        v rN| j                  j                  t        j                  || j                   j                  t        d«      z   dœ«       y| j                   j                  d	«      }| j                  ||z   «       y)
Nr[   r\   Frw   rx   rF   Tr-   ry   )r$   rN   Ú$character_reference_in_rc_data_stater'   Úrcdata_less_than_sign_stater   r<   r?   r   r0   r9   r   rb   r|   )r)   r/   Úcharss      r   Úrcdata_statezHTMLTokenizer.rcdata_state  sô   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×BÑBˆDŒJð. ð- �SŠ[Ø×9Ñ9ˆDŒJð* ð) ”S‰[àØ�XÒØ×ÑÐ0Ô1Ø�O‰O˜HÔ%ð ð Ô%Ñ%ð ×Ñ×#Ñ#Ü×.Ñ.Ø˜tŸ{™{×6Ñ6Ô7GÈÓNÑNñ%ô ð ð —K‘K×+Ñ+Ð,@ÓAˆEØ�O‰O˜D 5™LÔ)Ør   c                 óF   — | j                  «        | j                  | _        yr   )ri   r„   r'   r5   s    r   r�   z2HTMLTokenizer.character_reference_in_rc_data_state(  s   € Ø×ÑÔØ×&Ñ&ˆŒ
Ør   c                 ó&  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r#| j	                  d«       | j                  d«       y|t        u ry| j                   j                  d«      }| j                  ||z   «       y©Nr\   rw   rx   rF   F)r\   rw   T)r$   rN   Úrawtext_less_than_sign_stater'   r<   r?   r   r|   r}   s      r   Úrawtext_statezHTMLTokenizer.rawtext_state-  s‹   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×:Ñ:ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø�O‰O˜HÔ%ð ð ”S‰[ØàŸ™×0Ñ0°ÓAˆJØ�O‰O˜D :Ñ-Ô.Ør   c                 ó&  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r#| j	                  d«       | j                  d«       y|t        u ry| j                   j                  d«      }| j                  ||z   «       yr‡   )r$   rN   Ú script_data_less_than_sign_stater'   r<   r?   r   r|   r}   s      r   Úscript_data_statezHTMLTokenizer.script_data_state;  s‹   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×>Ñ>ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø�O‰O˜HÔ%ð ð ”S‰[ØàŸ™×0Ñ0°ÓAˆJØ�O‰O˜D :Ñ-Ô.Ør   c                 óô   — | j                   j                  «       }|t        u ry|dk(  r#| j                  d«       | j	                  d«       y| j	                  || j                   j                  d«      z   «       y)NFrw   rx   rF   T)r$   rN   r   r<   r?   r|   ©r)   r/   s     r   Úplaintext_statezHTMLTokenizer.plaintext_stateI  sk   € Ø�{‰{×$Ñ$Ó&ˆØ”3‰;ØØ�XÒØ×ÑÐ0Ô1Ø�O‰O˜HÔ%ð ð �O‰O˜D 4§;¡;×#:Ñ#:¸8Ó#DÑDÔEØr   c                 ó’  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r| j                  | _        y|t
        v r-t        j                  |g dddœ| _        | j                  | _        y|dk(  r4| j                  d«       | j                  d«       | j                  | _        y|dk(  r>| j                  d	«       | j                   j                  |«       | j                  | _        y| j                  d
«       | j                  d«       | j                   j                  |«       | j                  | _        y)Nú!ú/F)r.   rm   r/   rn   ÚselfClosingAcknowledgedú>z'expected-tag-name-but-got-right-bracketz<>ú?z'expected-tag-name-but-got-question-markzexpected-tag-namer\   T)r$   rN   Úmarkup_declaration_open_stater'   Úclose_tag_open_stater	   r   rp   r(   Útag_name_stater<   r?   r&   rS   Úbogus_comment_staterŽ   s     r   r{   zHTMLTokenizer.tag_open_stateT  s4  € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×;Ñ;ˆDŒJð< ð; �SŠ[Ø×2Ñ2ˆDŒJð8 ð7 ”]Ñ"äŸ™ØØØ$Ø+0ñ"ˆDÔð ×,Ñ,ˆDŒJð& ð% �SŠ[ð ×ÑÐFÔGØ�O‰O˜DÔ!ØŸ™ˆDŒJð ð �SŠ[ð ×ÑÐFÔGØ�K‰K×Ñ˜dÔ#Ø×1Ñ1ˆDŒJð ð	 ×ÑÐ0Ô1Ø�O‰O˜CÔ Ø�K‰K×Ñ˜dÔ#ØŸ™ˆDŒJØr   c                 óæ  — | j                   j                  «       }|t        v r,t        j                  |g ddœ| _        | j                  | _        y	|dk(  r#| j                  d«       | j                  | _        y	|t        u r4| j                  d«       | j                  d«       | j                  | _        y	| j                  d|¬«       | j                   j                  |«       | j                  | _        y	)
NF©r.   rm   r/   rn   r”   z*expected-closing-tag-but-got-right-bracketz expected-closing-tag-but-got-eofú</z!expected-closing-tag-but-got-char©r/   T)r$   rN   r	   r   rs   r(   r˜   r'   r<   r&   r   r?   rS   r™   rŽ   s     r   r—   z"HTMLTokenizer.close_tag_open_statew  sÞ   € Ø�{‰{×$Ñ$Ó&ˆØ”=Ñ äŸ™ØØØ$ñ	"ˆDÔð ×,Ñ,ˆDŒJð ð �SŠ[Ø×ÑÐIÔJØŸ™ˆDŒJð ð ”S‰[Ø×ÑÐ?Ô@Ø�O‰O˜DÔ!ØŸ™ˆDŒJð ð ×ÑÐ@ÀtÐÔLØ�K‰K×Ñ˜dÔ#Ø×1Ñ1ˆDŒJØr   c                 ó¦  — | j                   j                  «       }|t        v r| j                  | _        y|dk(  r| j                  «        y|t        u r#| j                  d«       | j                  | _        y|dk(  r| j                  | _        y|dk(  r)| j                  d«       | j                  dxx   dz  cc<   y| j                  dxx   |z  cc<   y)	Nr”   zeof-in-tag-namer’   rw   rx   rm   rF   T)r$   rN   r   Úbefore_attribute_name_stater'   ru   r   r<   r&   Úself_closing_start_tag_stater(   rŽ   s     r   r˜   zHTMLTokenizer.tag_name_state�  sÝ   € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Ø×9Ñ9ˆDŒJð ð �SŠ[Ø×#Ñ#Ô%ð ð ”S‰[Ø×ÑÐ.Ô/ØŸ™ˆDŒJð ð �SŠ[Ø×:Ñ:ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÓ&¨(Ñ2Ó&ð
 ð ×Ñ˜vÓ&¨$Ñ.Ó&ð r   c                 óî   — | j                   j                  «       }|dk(  rd| _        | j                  | _        y| j                  d«       | j                   j                  |«       | j                  | _        y©Nr’   rC   r\   T)r$   rN   Útemporary_bufferÚrcdata_end_tag_open_stater'   r?   rS   r„   rŽ   s     r   r‚   z)HTMLTokenizer.rcdata_less_than_sign_state£  se   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø$&ˆDÔ!Ø×7Ñ7ˆDŒJð
 ð �O‰O˜CÔ Ø�K‰K×Ñ˜dÔ#Ø×*Ñ*ˆDŒJØr   c                 ó  — | j                   j                  «       }|t        v r'| xj                  |z  c_        | j                  | _        y| j                  d«       | j                   j                  |«       | j                  | _        y©Nrœ   T)	r$   rN   r	   r£   Úrcdata_end_tag_name_stater'   r?   rS   r„   rŽ   s     r   r¤   z'HTMLTokenizer.rcdata_end_tag_open_state®  so   € Ø�{‰{×$Ñ$Ó&ˆØ”=Ñ Ø×!Ò! TÑ)Õ!Ø×7Ñ7ˆDŒJð
 ð �O‰O˜DÔ!Ø�K‰K×Ñ˜dÔ#Ø×*Ñ*ˆDŒJØr   c                 ó(  — | j                   xr8 | j                   d   j                  «       | j                  j                  «       k(  }| j                  j	                  «       }|t
        v r8|r6t        j                  | j                  g ddœ| _         | j                  | _	        y|dk(  r8|r6t        j                  | j                  g ddœ| _         | j                  | _	        y|dk(  rH|rFt        j                  | j                  g ddœ| _         | j                  «        | j                  | _	        y|t        v r| xj                  |z  c_        y| j                  d| j                  › �«       | j                  j                  |«       | j                   | _	        y©Nrm   Fr›   r’   r”   rœ   T)r(   Úlowerr£   r$   rN   r   r   rs   rŸ   r'   r    ru   r&   r	   r?   rS   r„   ©r)   Úappropriater/   s      r   r§   z'HTMLTokenizer.rcdata_end_tag_name_state¹  sz  € à×Ñò PØ×Ñ˜vÑ&×,Ñ,Ó.°$×2GÑ2G×2MÑ2MÓ2OÑOð 	ð �{‰{×$Ñ$Ó&ˆØÔ#Ñ#©äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×9Ñ9ˆDŒJð0 ð/ �SŠ[™[äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×:Ñ:ˆDŒJð  ð �SŠ[™[äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×#Ñ#Ô%ØŸ™ˆDŒJð ð ”]Ñ"Ø×!Ò! TÑ)Õ!ð
 ð �O‰O˜b ×!6Ñ!6Ð 7Ð8Ô9Ø�K‰K×Ñ˜dÔ#Ø×*Ñ*ˆDŒJØr   c                 óî   — | j                   j                  «       }|dk(  rd| _        | j                  | _        y| j                  d«       | j                   j                  |«       | j                  | _        yr¢   )r$   rN   r£   Úrawtext_end_tag_open_stater'   r?   rS   r‰   rŽ   s     r   rˆ   z*HTMLTokenizer.rawtext_less_than_sign_stateß  se   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø$&ˆDÔ!Ø×8Ñ8ˆDŒJð
 ð �O‰O˜CÔ Ø�K‰K×Ñ˜dÔ#Ø×+Ñ+ˆDŒJØr   c                 ó  — | j                   j                  «       }|t        v r'| xj                  |z  c_        | j                  | _        y| j                  d«       | j                   j                  |«       | j                  | _        yr¦   )	r$   rN   r	   r£   Úrawtext_end_tag_name_stater'   r?   rS   r‰   rŽ   s     r   r®   z(HTMLTokenizer.rawtext_end_tag_open_stateê  so   € Ø�{‰{×$Ñ$Ó&ˆØ”=Ñ Ø×!Ò! TÑ)Õ!Ø×8Ñ8ˆDŒJð
 ð �O‰O˜DÔ!Ø�K‰K×Ñ˜dÔ#Ø×+Ñ+ˆDŒJØr   c                 ó(  — | j                   xr8 | j                   d   j                  «       | j                  j                  «       k(  }| j                  j	                  «       }|t
        v r8|r6t        j                  | j                  g ddœ| _         | j                  | _	        y|dk(  r8|r6t        j                  | j                  g ddœ| _         | j                  | _	        y|dk(  rH|rFt        j                  | j                  g ddœ| _         | j                  «        | j                  | _	        y|t        v r| xj                  |z  c_        y| j                  d| j                  › �«       | j                  j                  |«       | j                   | _	        yr©   )r(   rª   r£   r$   rN   r   r   rs   rŸ   r'   r    ru   r&   r	   r?   rS   r‰   r«   s      r   r°   z(HTMLTokenizer.rawtext_end_tag_name_stateõ  sz  € à×Ñò PØ×Ñ˜vÑ&×,Ñ,Ó.°$×2GÑ2G×2MÑ2MÓ2OÑOð 	ð �{‰{×$Ñ$Ó&ˆØÔ#Ñ#©äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×9Ñ9ˆDŒJð0 ð/ �SŠ[™[äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×:Ñ:ˆDŒJð  ð �SŠ[™[äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×#Ñ#Ô%ØŸ™ˆDŒJð ð ”]Ñ"Ø×!Ò! TÑ)Õ!ð
 ð �O‰O˜b ×!6Ñ!6Ð 7Ð8Ô9Ø�K‰K×Ñ˜dÔ#Ø×+Ñ+ˆDŒJØr   c                 ó>  — | j                   j                  «       }|dk(  rd| _        | j                  | _        y|dk(  r#| j                  d«       | j                  | _        y| j                  d«       | j                   j                  |«       | j                  | _        y)Nr’   rC   r‘   z<!r\   T)	r$   rN   r£   Úscript_data_end_tag_open_stater'   r?   Úscript_data_escape_start_staterS   rŒ   rŽ   s     r   r‹   z.HTMLTokenizer.script_data_less_than_sign_state  sŒ   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø$&ˆDÔ!Ø×<Ñ<ˆDŒJð ð �SŠ[Ø�O‰O˜DÔ!Ø×<Ñ<ˆDŒJð
 ð �O‰O˜CÔ Ø�K‰K×Ñ˜dÔ#Ø×/Ñ/ˆDŒJØr   c                 ó  — | j                   j                  «       }|t        v r'| xj                  |z  c_        | j                  | _        y| j                  d«       | j                   j                  |«       | j                  | _        yr¦   )	r$   rN   r	   r£   Úscript_data_end_tag_name_stater'   r?   rS   rŒ   rŽ   s     r   r³   z,HTMLTokenizer.script_data_end_tag_open_state)  so   € Ø�{‰{×$Ñ$Ó&ˆØ”=Ñ Ø×!Ò! TÑ)Õ!Ø×<Ñ<ˆDŒJð
 ð �O‰O˜DÔ!Ø�K‰K×Ñ˜dÔ#Ø×/Ñ/ˆDŒJØr   c                 ó(  — | j                   xr8 | j                   d   j                  «       | j                  j                  «       k(  }| j                  j	                  «       }|t
        v r8|r6t        j                  | j                  g ddœ| _         | j                  | _	        y|dk(  r8|r6t        j                  | j                  g ddœ| _         | j                  | _	        y|dk(  rH|rFt        j                  | j                  g ddœ| _         | j                  «        | j                  | _	        y|t        v r| xj                  |z  c_        y| j                  d| j                  › �«       | j                  j                  |«       | j                   | _	        yr©   )r(   rª   r£   r$   rN   r   r   rs   rŸ   r'   r    ru   r&   r	   r?   rS   rŒ   r«   s      r   r¶   z,HTMLTokenizer.script_data_end_tag_name_state4  sz  € à×Ñò PØ×Ñ˜vÑ&×,Ñ,Ó.°$×2GÑ2G×2MÑ2MÓ2OÑOð 	ð �{‰{×$Ñ$Ó&ˆØÔ#Ñ#©äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×9Ñ9ˆDŒJð0 ð/ �SŠ[™[äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×:Ñ:ˆDŒJð  ð �SŠ[™[äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×#Ñ#Ô%ØŸ™ˆDŒJð ð ”]Ñ"Ø×!Ò! TÑ)Õ!ð
 ð �O‰O˜b ×!6Ñ!6Ð 7Ð8Ô9Ø�K‰K×Ñ˜dÔ#Ø×/Ñ/ˆDŒJØr   c                 óà   — | j                   j                  «       }|dk(  r#| j                  d«       | j                  | _        y| j                   j                  |«       | j                  | _        y©Nú-T)r$   rN   r?   Ú#script_data_escape_start_dash_stater'   rS   rŒ   rŽ   s     r   r´   z,HTMLTokenizer.script_data_escape_start_stateZ  ó]   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø�O‰O˜CÔ Ø×AÑAˆDŒJð ð �K‰K×Ñ˜dÔ#Ø×/Ñ/ˆDŒJØr   c                 óà   — | j                   j                  «       }|dk(  r#| j                  d«       | j                  | _        y| j                   j                  |«       | j                  | _        yr¹   )r$   rN   r?   Ú#script_data_escaped_dash_dash_stater'   rS   rŒ   rŽ   s     r   r»   z1HTMLTokenizer.script_data_escape_start_dash_stated  r¼   r   c                 ó”  — | j                   j                  «       }|dk(  r#| j                  d«       | j                  | _        y|dk(  r| j
                  | _        y|dk(  r#| j                  d«       | j                  d«       y|t        u r| j                  | _        y| j                  || j                   j                  d«      z   «       y)Nrº   r\   rw   rx   rF   )r\   rº   rw   T)
r$   rN   r?   Úscript_data_escaped_dash_stater'   Ú(script_data_escaped_less_than_sign_stater<   r   r&   r|   rŽ   s     r   Úscript_data_escaped_statez'HTMLTokenizer.script_data_escaped_staten  s½   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø�O‰O˜CÔ Ø×<Ñ<ˆDŒJð ð �SŠ[Ø×FÑFˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø�O‰O˜HÔ%ð
 ð	 ”S‰[ØŸ™ˆDŒJð ð �O‰O˜D 4§;¡;×#:Ñ#:Ð;OÓ#PÑPÔQØr   c                 ó   — | j                   j                  «       }|dk(  r#| j                  d«       | j                  | _        y|dk(  r| j
                  | _        y|dk(  r4| j                  d«       | j                  d«       | j                  | _        y|t        u r| j                  | _        y| j                  |«       | j                  | _        y)Nrº   r\   rw   rx   rF   T)
r$   rN   r?   r¾   r'   rÁ   r<   rÂ   r   r&   rŽ   s     r   rÀ   z,HTMLTokenizer.script_data_escaped_dash_state~  sÂ   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø�O‰O˜CÔ Ø×AÑAˆDŒJð ð �SŠ[Ø×FÑFˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø�O‰O˜HÔ%Ø×7Ñ7ˆDŒJð ð ”S‰[ØŸ™ˆDŒJð ð �O‰O˜DÔ!Ø×7Ñ7ˆDŒJØr   c                 óÎ  — | j                   j                  «       }|dk(  r| j                  d«       y|dk(  r| j                  | _        y|dk(  r#| j                  d«       | j
                  | _        y|dk(  r4| j                  d«       | j                  d«       | j                  | _        y|t        u r| j                  | _        y| j                  |«       | j                  | _        y)Nrº   r\   r”   rw   rx   rF   T)
r$   rN   r?   rÁ   r'   rŒ   r<   rÂ   r   r&   rŽ   s     r   r¾   z1HTMLTokenizer.script_data_escaped_dash_dash_state�  sÜ   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø�O‰O˜CÔ ð ð �SŠ[Ø×FÑFˆDŒJð ð �SŠ[Ø�O‰O˜CÔ Ø×/Ñ/ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø�O‰O˜HÔ%Ø×7Ñ7ˆDŒJð ð ”S‰[ØŸ™ˆDŒJð ð �O‰O˜DÔ!Ø×7Ñ7ˆDŒJØr   c                 óX  — | j                   j                  «       }|dk(  rd| _        | j                  | _        y|t
        v r-| j                  d|› �«       || _        | j                  | _        y| j                  d«       | j                   j                  |«       | j                  | _        yr¢   )
r$   rN   r£   Ú&script_data_escaped_end_tag_open_stater'   r	   r?   Ú%script_data_double_escape_start_staterS   rÂ   rŽ   s     r   rÁ   z6HTMLTokenizer.script_data_escaped_less_than_sign_state¤  s›   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø$&ˆDÔ!Ø×DÑDˆDŒJð ð ”]Ñ"Ø�O‰O˜a ˜v˜JÔ'Ø$(ˆDÔ!Ø×CÑCˆDŒJð
 ð �O‰O˜CÔ Ø�K‰K×Ñ˜dÔ#Ø×7Ñ7ˆDŒJØr   c                 óô   — | j                   j                  «       }|t        v r|| _        | j                  | _        y| j                  d«       | j                   j                  |«       | j                  | _        yr¦   )	r$   rN   r	   r£   Ú&script_data_escaped_end_tag_name_stater'   r?   rS   rÂ   rŽ   s     r   rÆ   z4HTMLTokenizer.script_data_escaped_end_tag_open_state³  sf   € Ø�{‰{×$Ñ$Ó&ˆØ”=Ñ Ø$(ˆDÔ!Ø×DÑDˆDŒJð
 ð �O‰O˜DÔ!Ø�K‰K×Ñ˜dÔ#Ø×7Ñ7ˆDŒJØr   c                 ó(  — | j                   xr8 | j                   d   j                  «       | j                  j                  «       k(  }| j                  j	                  «       }|t
        v r8|r6t        j                  | j                  g ddœ| _         | j                  | _	        y|dk(  r8|r6t        j                  | j                  g ddœ| _         | j                  | _	        y|dk(  rH|rFt        j                  | j                  g ddœ| _         | j                  «        | j                  | _	        y|t        v r| xj                  |z  c_        y| j                  d| j                  › �«       | j                  j                  |«       | j                   | _	        yr©   )r(   rª   r£   r$   rN   r   r   rs   rŸ   r'   r    ru   r&   r	   r?   rS   rÂ   r«   s      r   rÉ   z4HTMLTokenizer.script_data_escaped_end_tag_name_state¾  sz  € à×Ñò PØ×Ñ˜vÑ&×,Ñ,Ó.°$×2GÑ2G×2MÑ2MÓ2OÑOð 	ð �{‰{×$Ñ$Ó&ˆØÔ#Ñ#©äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×9Ñ9ˆDŒJð0 ð/ �SŠ[™[äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×:Ñ:ˆDŒJð  ð �SŠ[™[äŸ™Ø×-Ñ-ØØ$ñ	"ˆDÔð ×#Ñ#Ô%ØŸ™ˆDŒJð ð ”]Ñ"Ø×!Ò! TÑ)Õ!ð
 ð �O‰O˜b ×!6Ñ!6Ð 7Ð8Ô9Ø�K‰K×Ñ˜dÔ#Ø×7Ñ7ˆDŒJØr   c                 óº  — | j                   j                  «       }|t        t        d«      z  v rR| j	                  |«       | j
                  j                  «       dk(  r| j                  | _        y| j                  | _        y|t        v r'| j	                  |«       | xj
                  |z  c_        y| j                   j                  |«       | j                  | _        y©N)r’   r”   ÚscriptT)r$   rN   r   rQ   r?   r£   rª   Ú script_data_double_escaped_stater'   rÂ   r	   rS   rŽ   s     r   rÇ   z3HTMLTokenizer.script_data_double_escape_start_stateä  sÀ   € Ø�{‰{×$Ñ$Ó&ˆØÔ$¤y°Ó'<Ñ<Ñ=Ø�O‰O˜DÔ!Ø×$Ñ$×*Ñ*Ó,°Ò8Ø!×BÑB�”
ð ð "×;Ñ;�”
ð ð ”]Ñ"Ø�O‰O˜DÔ!Ø×!Ò! TÑ)Õ!ð ð �K‰K×Ñ˜dÔ#Ø×7Ñ7ˆDŒJØr   c                 ó   — | j                   j                  «       }|dk(  r#| j                  d«       | j                  | _        y|dk(  r#| j                  d«       | j
                  | _        y|dk(  r#| j                  d«       | j                  d«       y|t        u r#| j                  d«       | j                  | _        y| j                  |«       y©Nrº   r\   rw   rx   rF   úeof-in-script-in-scriptT)	r$   rN   r?   Ú%script_data_double_escaped_dash_stater'   Ú/script_data_double_escaped_less_than_sign_stater<   r   r&   rŽ   s     r   rÎ   z.HTMLTokenizer.script_data_double_escaped_stateô  sÃ   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø�O‰O˜CÔ Ø×CÑCˆDŒJð ð �SŠ[Ø�O‰O˜CÔ Ø×MÑMˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø�O‰O˜HÔ%ð ð ”S‰[Ø×ÑÐ6Ô7ØŸ™ˆDŒJð ð �O‰O˜DÔ!Ør   c                 óä  — | j                   j                  «       }|dk(  r#| j                  d«       | j                  | _        y|dk(  r#| j                  d«       | j
                  | _        y|dk(  r4| j                  d«       | j                  d«       | j                  | _        y|t        u r#| j                  d«       | j                  | _        y| j                  |«       | j                  | _        yrÐ   )
r$   rN   r?   Ú*script_data_double_escaped_dash_dash_stater'   rÓ   r<   rÎ   r   r&   rŽ   s     r   rÒ   z3HTMLTokenizer.script_data_double_escaped_dash_state  sÝ   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø�O‰O˜CÔ Ø×HÑHˆDŒJð ð �SŠ[Ø�O‰O˜CÔ Ø×MÑMˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø�O‰O˜HÔ%Ø×>Ñ>ˆDŒJð ð ”S‰[Ø×ÑÐ6Ô7ØŸ™ˆDŒJð ð �O‰O˜DÔ!Ø×>Ñ>ˆDŒJØr   c                 ó  — | j                   j                  «       }|dk(  r| j                  d«       y|dk(  r#| j                  d«       | j                  | _        y|dk(  r#| j                  d«       | j
                  | _        y|dk(  r4| j                  d«       | j                  d«       | j                  | _        y|t        u r#| j                  d«       | j                  | _        y| j                  |«       | j                  | _        y)	Nrº   r\   r”   rw   rx   rF   rÑ   T)
r$   rN   r?   rÓ   r'   rŒ   r<   rÎ   r   r&   rŽ   s     r   rÕ   z8HTMLTokenizer.script_data_double_escaped_dash_dash_state  s÷   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø�O‰O˜CÔ ð" ð! �SŠ[Ø�O‰O˜CÔ Ø×MÑMˆDŒJð ð �SŠ[Ø�O‰O˜CÔ Ø×/Ñ/ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø�O‰O˜HÔ%Ø×>Ñ>ˆDŒJð ð ”S‰[Ø×ÑÐ6Ô7ØŸ™ˆDŒJð ð �O‰O˜DÔ!Ø×>Ñ>ˆDŒJØr   c                 óî   — | j                   j                  «       }|dk(  r*| j                  d«       d| _        | j                  | _        y| j                   j                  |«       | j                  | _        y)Nr’   rC   T)r$   rN   r?   r£   Ú#script_data_double_escape_end_stater'   rS   rÎ   rŽ   s     r   rÓ   z=HTMLTokenizer.script_data_double_escaped_less_than_sign_state0  se   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø�O‰O˜CÔ Ø$&ˆDÔ!Ø×AÑAˆDŒJð ð �K‰K×Ñ˜dÔ#Ø×>Ñ>ˆDŒJØr   c                 óº  — | j                   j                  «       }|t        t        d«      z  v rR| j	                  |«       | j
                  j                  «       dk(  r| j                  | _        y| j                  | _        y|t        v r'| j	                  |«       | xj
                  |z  c_        y| j                   j                  |«       | j                  | _        yrÌ   )r$   rN   r   rQ   r?   r£   rª   rÂ   r'   rÎ   r	   rS   rŽ   s     r   rØ   z1HTMLTokenizer.script_data_double_escape_end_state;  sÀ   € Ø�{‰{×$Ñ$Ó&ˆØÔ$¤y°Ó'<Ñ<Ñ=Ø�O‰O˜DÔ!Ø×$Ñ$×*Ñ*Ó,°Ò8Ø!×;Ñ;�”
ð ð "×BÑB�”
ð ð ”]Ñ"Ø�O‰O˜DÔ!Ø×!Ò! TÑ)Õ!ð ð �K‰K×Ñ˜dÔ#Ø×>Ñ>ˆDŒJØr   c                 ó.  — | j                   j                  «       }|t        v r!| j                   j                  t        d«       y|t        v r2| j
                  d   j                  |dg«       | j                  | _        y|dk(  r| j                  «        y|dk(  r| j                  | _        y|dv rC| j                  d«       | j
                  d   j                  |dg«       | j                  | _        y|dk(  rC| j                  d	«       | j
                  d   j                  d
dg«       | j                  | _        y|t        u r#| j                  d«       | j                  | _        y| j
                  d   j                  |dg«       | j                  | _        y)NTr/   rC   r”   r’   )ú'ú"ra   r\   ú#invalid-character-in-attribute-namerw   rx   rF   z#expected-attribute-name-but-got-eof)r$   rN   r   r|   r	   r(   r9   Úattribute_name_stater'   ru   r    r<   r   r&   rŽ   s     r   rŸ   z)HTMLTokenizer.before_attribute_name_stateK  s�  € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Ø�K‰K×#Ñ#Ô$4°dÔ;ð, ð+ ”]Ñ"Ø×Ñ˜vÑ&×-Ñ-¨t°R¨jÔ9Ø×2Ñ2ˆDŒJð& ð% �SŠ[Ø×#Ñ#Ô%ð" ð! �SŠ[Ø×:Ñ:ˆDŒJð ð Ð)Ñ)Ø×ÑÐBÔCØ×Ñ˜vÑ&×-Ñ-¨t°R¨jÔ9Ø×2Ñ2ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÑ&×-Ñ-¨x¸¨nÔ=Ø×2Ñ2ˆDŒJð ð ”S‰[Ø×ÑÐBÔCØŸ™ˆDŒJð ð ×Ñ˜vÑ&×-Ñ-¨t°R¨jÔ9Ø×2Ñ2ˆDŒJØr   c                 ó  — | j                   j                  «       }d}d}|dk(  r| j                  | _        �n7|t        v rA| j
                  d   d   dxx   || j                   j                  t        d«      z   z  cc<   d}nî|dk(  rd}næ|t        v r| j                  | _        nÌ|dk(  r| j                  | _        nµ|d	k(  r1| j                  d
«       | j
                  d   d   dxx   dz  cc<   d}n|dv r1| j                  d«       | j
                  d   d   dxx   |z  cc<   d}nJ|t        u r#| j                  d«       | j                  | _        n| j
                  d   d   dxx   |z  cc<   d}|r’| j
                  d   d   d   j                  t        «      | j
                  d   d   d<   | j
                  d   d d D ]0  \  }}| j
                  d   d   d   |k(  sŒ| j                  d«        n |r| j                  «        y)NTFra   r/   r^   r   r”   r’   rw   rx   rF   ©rÛ   rÜ   r\   rÝ   zeof-in-attribute-namezduplicate-attribute)r$   rN   Úbefore_attribute_value_stater'   r	   r(   r|   r   Úafter_attribute_name_stater    r<   r   r&   ro   r
   ru   )r)   r/   Úleaving_this_stateÚ
emit_tokenrm   Ú_s         r   rÞ   z"HTMLTokenizer.attribute_name_statef  s  € Ø�{‰{×$Ñ$Ó&ˆØ!ÐØˆ
Ø�3Š;Ø×:Ñ:ˆDŽJØ”]Ñ"Ø×Ñ˜vÑ& rÑ*¨1Ó-Ø�t—{‘{×.Ñ.¬}¸dÓCÑCñEÓ-à!&ÑØ�SŠ[ð ‰JØÔ%Ñ%Ø×8Ñ8ˆD�JØ�SŠ[Ø×:Ñ:ˆD�JØ�XÒØ×ÑÐ0Ô1Ø×Ñ˜vÑ& rÑ*¨1Ó-°Ñ9Ó-Ø!&ÑØ�_Ñ$Ø×ÑÐBÔCØ×Ñ˜vÑ& rÑ*¨1Ó-°Ñ5Ó-Ø!&ÑØ”S‰[Ø×ÑÐ4Ô5ØŸ™ˆD�Jà×Ñ˜vÑ& rÑ*¨1Ó-°Ñ5Ó-Ø!&Ðáð
 ×"Ñ" 6Ñ*¨2Ñ.¨qÑ1×;Ñ;Ô<PÓQð ×Ñ˜vÑ& rÑ*¨1Ñ-à×-Ñ-¨fÑ5°c°rÐ:ò ‘��aØ×%Ñ% fÑ-¨bÑ1°!Ñ4¸Ó<Ø×$Ñ$Ð%:Ô;Ùðñ
 Ø×'Ñ'Ô)Ør   c                 ó\  — | j                   j                  «       }|t        v r!| j                   j                  t        d«       y|dk(  r| j                  | _        y|dk(  r| j                  «        y|t        v r2| j                  d   j                  |dg«       | j                  | _        y|dk(  r| j                  | _        y|dk(  rC| j                  d«       | j                  d   j                  d	dg«       | j                  | _        y|d
v rC| j                  d«       | j                  d   j                  |dg«       | j                  | _        y|t        u r#| j                  d«       | j                  | _        y| j                  d   j                  |dg«       | j                  | _        y)NTra   r”   r/   rC   r’   rw   rx   rF   rà   z&invalid-character-after-attribute-namezexpected-end-of-tag-but-got-eof)r$   rN   r   r|   rá   r'   ru   r	   r(   r9   rÞ   r    r<   r   r&   rŽ   s     r   râ   z(HTMLTokenizer.after_attribute_name_state—  s§  € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Ø�K‰K×#Ñ#Ô$4°dÔ;ð0 ð/ �SŠ[Ø×:Ñ:ˆDŒJð, ð+ �SŠ[Ø×#Ñ#Ô%ð( ð' ”]Ñ"Ø×Ñ˜vÑ&×-Ñ-¨t°R¨jÔ9Ø×2Ñ2ˆDŒJð" ð! �SŠ[Ø×:Ñ:ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÑ&×-Ñ-¨x¸¨nÔ=Ø×2Ñ2ˆDŒJð ð �_Ñ$Ø×ÑÐEÔFØ×Ñ˜vÑ&×-Ñ-¨t°R¨jÔ9Ø×2Ñ2ˆDŒJð ð ”S‰[Ø×ÑÐ>Ô?ØŸ™ˆDŒJð ð ×Ñ˜vÑ&×-Ñ-¨t°R¨jÔ9Ø×2Ñ2ˆDŒJØr   c                 ó\  — | j                   j                  «       }|t        v r!| j                   j                  t        d«       y|dk(  r| j                  | _        y|dk(  r-| j                  | _        | j                   j                  |«       y|dk(  r| j                  | _        y|dk(  r"| j                  d«       | j                  «        y|dk(  r@| j                  d«       | j                  d	   d
   dxx   dz  cc<   | j                  | _        y|dv r@| j                  d«       | j                  d	   d
   dxx   |z  cc<   | j                  | _        y|t        u r#| j                  d«       | j                  | _        y| j                  d	   d
   dxx   |z  cc<   | j                  | _        y)NTrÜ   r[   rÛ   r”   z.expected-attribute-value-but-got-right-bracketrw   rx   r/   r^   r   rF   )ra   r\   ú`z"equals-in-unquoted-attribute-valuez$expected-attribute-value-but-got-eof)r$   rN   r   r|   Ú#attribute_value_double_quoted_stater'   Úattribute_value_unquoted_staterS   Ú#attribute_value_single_quoted_stater<   ru   r(   r   r&   rŽ   s     r   rá   z*HTMLTokenizer.before_attribute_value_state´  s³  € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Ø�K‰K×#Ñ#Ô$4°dÔ;ð2 ð1 �SŠ[Ø×AÑAˆDŒJð. ð- �SŠ[Ø×<Ñ<ˆDŒJØ�K‰K×Ñ˜dÔ#ð( ð' �SŠ[Ø×AÑAˆDŒJð$ ð# �SŠ[Ø×ÑÐMÔNØ×#Ñ#Ô%ð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÑ& rÑ*¨1Ó-°Ñ9Ó-Ø×<Ñ<ˆDŒJð ð �_Ñ$Ø×ÑÐAÔBØ×Ñ˜vÑ& rÑ*¨1Ó-°Ñ5Ó-Ø×<Ñ<ˆDŒJð ð ”S‰[Ø×ÑÐCÔDØŸ™ˆDŒJð ð ×Ñ˜vÑ& rÑ*¨1Ó-°Ñ5Ó-Ø×<Ñ<ˆDŒJØr   c                 óÄ  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r| j	                  d«       y|dk(  r/| j                  d«       | j                  d   d   dxx   dz  cc<   y|t        u r#| j                  d	«       | j                  | _        y| j                  d   d   dxx   || j                   j                  d
«      z   z  cc<   y)NrÜ   r[   rw   rx   r/   r^   r   rF   z#eof-in-attribute-value-double-quote)rÜ   r[   rw   T©
r$   rN   Úafter_attribute_value_stater'   rk   r<   r(   r   r&   r|   rŽ   s     r   ré   z1HTMLTokenizer.attribute_value_double_quoted_stateÒ  óí   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×9Ñ9ˆDŒJð ð �SŠ[Ø×,Ñ,¨SÔ1ð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÑ& rÑ*¨1Ó-°Ñ9Ó-ð ð ”S‰[Ø×ÑÐBÔCØŸ™ˆDŒJð ð ×Ñ˜vÑ& rÑ*¨1Ó-Ø�t—{‘{×.Ñ.Ð/CÓDÑDñFÓ-àr   c                 óÄ  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r| j	                  d«       y|dk(  r/| j                  d«       | j                  d   d   dxx   dz  cc<   y|t        u r#| j                  d	«       | j                  | _        y| j                  d   d   dxx   || j                   j                  d
«      z   z  cc<   y)NrÛ   r[   rw   rx   r/   r^   r   rF   z#eof-in-attribute-value-single-quote)rÛ   r[   rw   Trí   rŽ   s     r   rë   z1HTMLTokenizer.attribute_value_single_quoted_stateã  rï   r   c           	      ó|  — | j                   j                  «       }|t        v r| j                  | _        y|dk(  r| j                  d«       y|dk(  r| j                  «        y|dv r/| j                  d«       | j                  d   d   dxx   |z  cc<   y|dk(  r/| j                  d	«       | j                  d   d   dxx   d
z  cc<   y|t        u r#| j                  d«       | j                  | _        y| j                  d   d   dxx   || j                   j                  t        d«      t        z  «      z   z  cc<   y)Nr[   r”   )rÜ   rÛ   ra   r\   rè   z0unexpected-character-in-unquoted-attribute-valuer/   r^   r   rw   rx   rF   z eof-in-attribute-value-no-quotes)r[   r”   rÜ   rÛ   ra   r\   rè   rw   T)r$   rN   r   rŸ   r'   rk   ru   r<   r(   r   r&   r|   rQ   rŽ   s     r   rê   z,HTMLTokenizer.attribute_value_unquoted_stateô  s[  € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Ø×9Ñ9ˆDŒJð& ð% �SŠ[Ø×,Ñ,¨SÔ1ð" ð! �SŠ[Ø×#Ñ#Ô%ð ð Ð.Ñ.Ø×ÑÐOÔPØ×Ñ˜vÑ& rÑ*¨1Ó-°Ñ5Ó-ð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÑ& rÑ*¨1Ó-°Ñ9Ó-ð ð ”S‰[Ø×ÑÐ?Ô@ØŸ™ˆDŒJð ð	 ×Ñ˜vÑ& rÑ*¨1Ó-Ø�t—{‘{×.Ñ.ÜÐKÓLÜ$ñ%ó&ñ &ñ'Ó-ð r   c                 óÌ  — | j                   j                  «       }|t        v r| j                  | _        y|dk(  r| j                  «        y|dk(  r| j                  | _        y|t        u r>| j                  d«       | j                   j                  |«       | j                  | _        y| j                  d«       | j                   j                  |«       | j                  | _        y)Nr”   r’   z$unexpected-eof-after-attribute-valuez*unexpected-character-after-attribute-valueT)r$   rN   r   rŸ   r'   ru   r    r   r<   rS   r&   rŽ   s     r   rî   z)HTMLTokenizer.after_attribute_value_state  sÑ   € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Ø×9Ñ9ˆDŒJð ð �SŠ[Ø×#Ñ#Ô%ð ð �SŠ[Ø×:Ñ:ˆDŒJð ð ”S‰[Ø×ÑÐCÔDØ�K‰K×Ñ˜dÔ#ØŸ™ˆDŒJð
 ð ×ÑÐIÔJØ�K‰K×Ñ˜dÔ#Ø×9Ñ9ˆDŒJØr   c                 óˆ  — | j                   j                  «       }|dk(  r d| j                  d<   | j                  «        y|t        u r>| j                  d«       | j                   j                  |«       | j                  | _        y| j                  d«       | j                   j                  |«       | j                  | _        y)Nr”   Trn   z#unexpected-eof-after-solidus-in-tagz)unexpected-character-after-solidus-in-tag)
r$   rN   r(   ru   r   r<   rS   r&   r'   rŸ   rŽ   s     r   r    z*HTMLTokenizer.self_closing_start_tag_state  s©   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø04ˆD×Ñ˜}Ñ-Ø×#Ñ#Ô%ð ð ”S‰[Ø×ÑÐBÔCØ�K‰K×Ñ˜dÔ#ØŸ™ˆDŒJð
 ð ×ÑÐHÔIØ�K‰K×Ñ˜dÔ#Ø×9Ñ9ˆDŒJØr   c                 ó  — | j                   j                  d«      }|j                  dd«      }| j                  j	                  t
        j                  |dœ«       | j                   j                  «        | j                  | _	        y)Nr”   rw   rF   r-   T)
r$   r|   Úreplacer0   r9   r   ÚCOMMENTrN   r&   r'   rŽ   s     r   r™   z!HTMLTokenizer.bogus_comment_state-  se   € ð �{‰{×&Ñ& sÓ+ˆØ�|‰|˜H hÓ/ˆØ×Ñ×Ñ¬¯©ÀÑ EÔFð 	�‰×ÑÔØ—_‘_ˆŒ
Ør   c                 óF  — | j                   j                  «       g}|d   dk(  r\|j                  | j                   j                  «       «       |d   dk(  �r|t        j                  ddœ| _        | j                  | _        y|d   ry|d   dv rrd}dD ];  }|j                  | j                   j                  «       «       |d   r|d   |vsŒ9d} n |�rt        j                  dd d dd	œ| _        | j                  | _        y|d   d
k(  rÌ| j                  �À| j                  j                  j                  r | j                  j                  j                  d   j                  | j                  j                  j                  k7  rRd}dD ]7  }|j                  | j                   j                  «       «       |d   |k7  sŒ5d} n |r| j                  | _        y| j!                  d«       |r,| j                   j#                  |j%                  «       «       |rŒ,| j&                  | _        y)Nr^   rº   rC   r-   TÚdD)ÚoOÚcCÚtTÚyYÚpPÚeEF)r.   rm   ÚpublicIdÚsystemIdÚcorrectú[zCDATA[zexpected-dashes-or-doctype)r$   rN   r9   r   rö   r(   Úcomment_start_stater'   ÚDOCTYPEÚdoctype_stater%   ÚtreeÚopen_elementsÚ	namespaceÚdefault_namespaceÚcdata_section_stater<   rS   r3   r™   )r)   rW   ÚmatchedÚexpecteds       r   r–   z+HTMLTokenizer.markup_declaration_open_state;  sê  € Ø—‘×&Ñ&Ó(Ð)ˆØ�‰9˜ÒØ�L‰L˜Ÿ™×.Ñ.Ó0Ô1Ø�R‰y˜CÓÜ.3¯m©mÀRÑ%H�Ô"Ø!×5Ñ5�”
ØØ�2ŠY˜5 ™9¨Ñ,ØˆGØ@ò �Ø—‘˜TŸ[™[×2Ñ2Ó4Ô5Ø˜R’y E¨"¡I°XÒ$=Ø#�GÙð	ò
 ä!ŸM™MØØ $Ø $Ø#ñ&�Ô"ð "×/Ñ/�”
ØØ�B‰i˜3ÒØ�k‰kÐ%Ø�k‰k×Ñ×,Ò,Ø�k‰k×Ñ×,Ñ,¨RÑ0×:Ñ:Ø�k‰k×Ñ×0Ñ0ò1àˆGØ$ò �Ø—‘˜TŸ[™[×2Ñ2Ó4Ô5Ø˜‘9 Ó(Ø#�GÙð	ñ
 Ø!×5Ñ5�”
Øà×ÑÐ5Ô6áØ�K‰K×Ñ˜eŸi™i›kÔ*ò à×-Ñ-ˆŒ
Ør   c                 óL  — | j                   j                  «       }|dk(  r| j                  | _        y	|dk(  r)| j	                  d«       | j
                  dxx   dz  cc<   y	|dk(  rH| j	                  d«       | j                  j                  | j
                  «       | j                  | _        y	|t        u rH| j	                  d«       | j                  j                  | j
                  «       | j                  | _        y	| j
                  dxx   |z  cc<   | j                  | _        y	)
Nrº   rw   rx   r/   rF   r”   úincorrect-commentúeof-in-commentT)r$   rN   Úcomment_start_dash_stater'   r<   r(   r0   r9   r&   r   Úcomment_staterŽ   s     r   r  z!HTMLTokenizer.comment_start_statej  s  € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×6Ñ6ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÓ&¨(Ñ2Ó&ð ð �SŠ[Ø×ÑÐ0Ô1Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ”S‰[Ø×ÑÐ-Ô.Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ×Ñ˜vÓ&¨$Ñ.Ó&Ø×+Ñ+ˆDŒJØr   c                 óR  — | j                   j                  «       }|dk(  r| j                  | _        y	|dk(  r)| j	                  d«       | j
                  dxx   dz  cc<   y	|dk(  rH| j	                  d«       | j                  j                  | j
                  «       | j                  | _        y	|t        u rH| j	                  d«       | j                  j                  | j
                  «       | j                  | _        y	| j
                  dxx   d|› �z  cc<   | j                  | _        y	)
Nrº   rw   rx   r/   õ   -ï¿½r”   r  r  T)r$   rN   Úcomment_end_stater'   r<   r(   r0   r9   r&   r   r  rŽ   s     r   r  z&HTMLTokenizer.comment_start_dash_state~  s  € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×/Ñ/ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÓ&¨)Ñ3Ó&ð ð �SŠ[Ø×ÑÐ0Ô1Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ”S‰[Ø×ÑÐ-Ô.Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ×Ñ˜vÓ&¨A¨d¨V¨*Ñ4Ó&Ø×+Ñ+ˆDŒJØr   c                 óÈ  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r)| j	                  d«       | j
                  dxx   dz  cc<   y|t        u rH| j	                  d«       | j                  j                  | j
                  «       | j                  | _        y| j
                  dxx   || j                   j                  d«      z   z  cc<   y)	Nrº   rw   rx   r/   rF   r  )rº   rw   T)r$   rN   Úcomment_end_dash_stater'   r<   r(   r   r0   r9   r&   r|   rŽ   s     r   r  zHTMLTokenizer.comment_state’  sÖ   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×4Ñ4ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÓ&¨(Ñ2Ó&ð ð ”S‰[Ø×ÑÐ-Ô.Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ×Ñ˜vÓ&Ø�t—{‘{×.Ñ.¨Ó?Ñ?ñAÓ&àr   c                 óÚ  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r:| j	                  d«       | j
                  dxx   dz  cc<   | j                  | _        y|t        u rH| j	                  d«       | j                  j                  | j
                  «       | j                  | _        y| j
                  dxx   d|› �z  cc<   | j                  | _        y)Nrº   rw   rx   r/   r  zeof-in-comment-end-dashT)r$   rN   r  r'   r<   r(   r  r   r0   r9   r&   rŽ   s     r   r  z$HTMLTokenizer.comment_end_dash_state¢  sÞ   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×/Ñ/ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÓ&¨)Ñ3Ó&Ø×+Ñ+ˆDŒJð ð ”S‰[Ø×ÑÐ6Ô7Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ×Ñ˜vÓ&¨A¨d¨V¨*Ñ4Ó&Ø×+Ñ+ˆDŒJØr   c                 óò  — | j                   j                  «       }|dk(  r7| j                  j                  | j                  «       | j
                  | _        y|dk(  r:| j                  d«       | j                  dxx   dz  cc<   | j                  | _        y|dk(  r#| j                  d«       | j                  | _        y|dk(  r)| j                  d	«       | j                  dxx   |z  cc<   y|t        u rH| j                  d
«       | j                  j                  | j                  «       | j
                  | _        y| j                  d«       | j                  dxx   d|› �z  cc<   | j                  | _        y)Nr”   rw   rx   r/   u   --ï¿½r‘   z,unexpected-bang-after-double-dash-in-commentrº   z,unexpected-dash-after-double-dash-in-commentzeof-in-comment-double-dashzunexpected-char-in-commentz--T)r$   rN   r0   r9   r(   r&   r'   r<   r  Úcomment_end_bang_stater   rŽ   s     r   r  zHTMLTokenizer.comment_end_state³  sb  € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð( ð' �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÓ&¨*Ñ4Ó&Ø×+Ñ+ˆDŒJð  ð �SŠ[Ø×ÑÐKÔLØ×4Ñ4ˆDŒJð ð �SŠ[Ø×ÑÐKÔLØ×Ñ˜vÓ&¨$Ñ.Ó&ð ð ”S‰[Ø×ÑÐ9Ô:Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ×ÑÐ9Ô:Ø×Ñ˜vÓ&¨B¨t¨f¨+Ñ5Ó&Ø×+Ñ+ˆDŒJØr   c                 ó€  — | j                   j                  «       }|dk(  r7| j                  j                  | j                  «       | j
                  | _        y	|dk(  r)| j                  dxx   dz  cc<   | j                  | _        y	|dk(  r:| j                  d«       | j                  dxx   dz  cc<   | j                  | _        y	|t        u rH| j                  d«       | j                  j                  | j                  «       | j
                  | _        y	| j                  dxx   d|› �z  cc<   | j                  | _        y	)
Nr”   rº   r/   z--!rw   rx   u   --!ï¿½zeof-in-comment-end-bang-stateT)r$   rN   r0   r9   r(   r&   r'   r  r<   r  r   rŽ   s     r   r  z$HTMLTokenizer.comment_end_bang_stateÍ  s'  € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð �SŠ[Ø×Ñ˜vÓ&¨%Ñ/Ó&Ø×4Ñ4ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÓ&¨+Ñ5Ó&Ø×+Ñ+ˆDŒJð ð ”S‰[Ø×ÑÐ<Ô=Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ×Ñ˜vÓ&¨C°¨v¨,Ñ6Ó&Ø×+Ñ+ˆDŒJØr   c                 ó¤  — | j                   j                  «       }|t        v r| j                  | _        y|t
        u rW| j                  d«       d| j                  d<   | j                  j                  | j                  «       | j                  | _        y| j                  d«       | j                   j                  |«       | j                  | _        y)Nú!expected-doctype-name-but-got-eofFr  zneed-space-after-doctypeT)r$   rN   r   Úbefore_doctype_name_stater'   r   r<   r(   r0   r9   r&   rS   rŽ   s     r   r  zHTMLTokenizer.doctype_stateâ  s´   € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Ø×7Ñ7ˆDŒJð ð ”S‰[Ø×ÑÐ@ÔAØ,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð
 ð ×ÑÐ7Ô8Ø�K‰K×Ñ˜dÔ#Ø×7Ñ7ˆDŒJØr   c                 óp  — | j                   j                  «       }|t        v r	 y
|dk(  rW| j                  d«       d| j                  d<   | j
                  j                  | j                  «       | j                  | _        y
|dk(  r2| j                  d«       d| j                  d<   | j                  | _        y
|t        u rW| j                  d	«       d| j                  d<   | j
                  j                  | j                  «       | j                  | _        y
|| j                  d<   | j                  | _        y
)Nr”   z+expected-doctype-name-but-got-right-bracketFr  rw   rx   rF   rm   r  T)r$   rN   r   r<   r(   r0   r9   r&   r'   Údoctype_name_stater   rŽ   s     r   r  z'HTMLTokenizer.before_doctype_name_stateñ  s&  € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Øð$ ð# �SŠ[Ø×ÑÐJÔKØ,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø)1ˆD×Ñ˜vÑ&Ø×0Ñ0ˆDŒJð ð ”S‰[Ø×ÑÐ@ÔAØ,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð *.ˆD×Ñ˜vÑ&Ø×0Ñ0ˆDŒJØr   c                 óh  — | j                   j                  «       }|t        v rA| j                  d   j	                  t
        «      | j                  d<   | j                  | _        y	|dk(  rf| j                  d   j	                  t
        «      | j                  d<   | j                  j                  | j                  «       | j                  | _        y	|dk(  r:| j                  d«       | j                  dxx   dz  cc<   | j                  | _        y	|t        u r†| j                  d«       d| j                  d<   | j                  d   j	                  t
        «      | j                  d<   | j                  j                  | j                  «       | j                  | _        y	| j                  dxx   |z  cc<   y	)
Nrm   r”   rw   rx   rF   zeof-in-doctype-nameFr  T)r$   rN   r   r(   ro   r
   Úafter_doctype_name_stater'   r0   r9   r&   r<   r  r   rŽ   s     r   r  z HTMLTokenizer.doctype_name_state  sŽ  € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#à×"Ñ" 6Ñ*×4Ñ4Ô5IÓJð ×Ñ˜vÑ&à×6Ñ6ˆDŒJð& ð% �SŠ[à×"Ñ" 6Ñ*×4Ñ4Ô5IÓJð ×Ñ˜vÑ&à×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜vÓ&¨(Ñ2Ó&Ø×0Ñ0ˆDŒJð ð ”S‰[Ø×ÑÐ2Ô3Ø,1ˆD×Ñ˜yÑ)à×"Ñ" 6Ñ*×4Ñ4Ô5IÓJð ×Ñ˜vÑ&à×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ×Ñ˜vÓ&¨$Ñ.Ó&Ør   c                 óp  — | j                   j                  «       }|t        v r	 y|dk(  r7| j                  j	                  | j
                  «       | j                  | _        y|t        u rrd| j
                  d<   | j                   j                  |«       | j                  d«       | j                  j	                  | j
                  «       | j                  | _        y|rE|dv rAd}dD ]&  }| j                   j                  «       }|r||vsŒ$d} n |rY| j                  | _        y|rE|dv rAd}d	D ]&  }| j                   j                  «       }|r||vsŒ$d} n |r| j                  | _        y| j                   j                  |«       | j                  d
|¬«       d| j
                  d<   | j                  | _        y)Nr”   Fr  úeof-in-doctyperý   T)ÚuUÚbBÚlLÚiIrú   ÚsS)rü   r(  rû   rþ   ÚmMz*expected-space-or-right-bracket-in-doctyper�   )r$   rN   r   r0   r9   r(   r&   r'   r   rS   r<   Ú"after_doctype_public_keyword_stateÚ"after_doctype_system_keyword_stateÚbogus_doctype_state)r)   r/   r  r  s       r   r!  z&HTMLTokenizer.after_doctype_name_state"  s·  € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#ØðP ðO �SŠ[Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJðJ ðI ”S‰[Ø,1ˆD×Ñ˜yÑ)Ø�K‰K×Ñ˜dÔ#Ø×ÑÐ-Ô.Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð> ñ; ˜ ™Ø�Ø >ò �HØŸ;™;×0Ñ0Ó2�DÙ 4¨xÒ#7Ø"'˜Ùð	ñ
 Ø!%×!HÑ!H�D”JØÙ˜$ $™,Ø�Ø >ò �HØŸ;™;×0Ñ0Ó2�DÙ 4¨xÒ#7Ø"'˜Ùð	ñ
 Ø!%×!HÑ!H�D”JØð �K‰K×Ñ˜dÔ#Ø×ÑÐIÐPTÐÔUØ,1ˆD×Ñ˜yÑ)Ø×1Ñ1ˆDŒJØr   c                 ó  — | j                   j                  «       }|t        v r| j                  | _        y|dv r>| j                  d«       | j                   j                  |«       | j                  | _        y|t        u rW| j                  d«       d| j                  d<   | j                  j                  | j                  «       | j                  | _        y| j                   j                  |«       | j                  | _        y©N)rÛ   rÜ   úunexpected-char-in-doctyper#  Fr  T)r$   rN   r   Ú&before_doctype_public_identifier_stater'   r<   rS   r   r(   r0   r9   r&   rŽ   s     r   r*  z0HTMLTokenizer.after_doctype_public_keyword_stateO  óâ   € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Ø×DÑDˆDŒJð ð �ZÑØ×ÑÐ9Ô:Ø�K‰K×Ñ˜dÔ#Ø×DÑDˆDŒJð ð ”S‰[Ø×ÑÐ-Ô.Ø,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð �K‰K×Ñ˜dÔ#Ø×DÑDˆDŒJØr   c                 ó¼  — | j                   j                  «       }|t        v r	 y|dk(  r!d| j                  d<   | j                  | _        y|dk(  r!d| j                  d<   | j                  | _        y|dk(  rW| j                  d«       d| j                  d<   | j                  j                  | j                  «       | j                  | _        y|t        u rW| j                  d	«       d| j                  d<   | j                  j                  | j                  «       | j                  | _        y| j                  d
«       d| j                  d<   | j                  | _        y)NrÜ   rC   rÿ   rÛ   r”   úunexpected-end-of-doctypeFr  r#  r/  T)r$   rN   r   r(   Ú-doctype_public_identifier_double_quoted_stater'   Ú-doctype_public_identifier_single_quoted_stater<   r0   r9   r&   r   r,  rŽ   s     r   r0  z4HTMLTokenizer.before_doctype_public_identifier_statea  sP  € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Øð* ð) �SŠ[Ø-/ˆD×Ñ˜zÑ*Ø×KÑKˆDŒJð$ ð# �SŠ[Ø-/ˆD×Ñ˜zÑ*Ø×KÑKˆDŒJð ð �SŠ[Ø×ÑÐ8Ô9Ø,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ”S‰[Ø×ÑÐ-Ô.Ø,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð
 ð ×ÑÐ9Ô:Ø,1ˆD×Ñ˜yÑ)Ø×1Ñ1ˆDŒJØr   c                 óf  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r)| j	                  d«       | j
                  dxx   dz  cc<   y|dk(  rW| j	                  d«       d| j
                  d	<   | j                  j                  | j
                  «       | j                  | _        y|t        u rW| j	                  d
«       d| j
                  d	<   | j                  j                  | j
                  «       | j                  | _        y| j
                  dxx   |z  cc<   y)NrÜ   rw   rx   rÿ   rF   r”   r3  Fr  r#  T©
r$   rN   Ú%after_doctype_public_identifier_stater'   r<   r(   r0   r9   r&   r   rŽ   s     r   r4  z;HTMLTokenizer.doctype_public_identifier_double_quoted_state{  ó   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×CÑCˆDŒJð  ð �XÒØ×ÑÐ0Ô1Ø×Ñ˜zÓ*¨hÑ6Ó*ð ð �SŠ[Ø×ÑÐ8Ô9Ø,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ”S‰[Ø×ÑÐ-Ô.Ø,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ×Ñ˜zÓ*¨dÑ2Ó*Ør   c                 óf  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r)| j	                  d«       | j
                  dxx   dz  cc<   y|dk(  rW| j	                  d«       d| j
                  d	<   | j                  j                  | j
                  «       | j                  | _        y|t        u rW| j	                  d
«       d| j
                  d	<   | j                  j                  | j
                  «       | j                  | _        y| j
                  dxx   |z  cc<   y)NrÛ   rw   rx   rÿ   rF   r”   r3  Fr  r#  Tr7  rŽ   s     r   r5  z;HTMLTokenizer.doctype_public_identifier_single_quoted_state�  r9  r   c                 óà  — | j                   j                  «       }|t        v r| j                  | _        y
|dk(  r7| j
                  j                  | j                  «       | j                  | _        y
|dk(  r2| j                  d«       d| j                  d<   | j                  | _        y
|dk(  r2| j                  d«       d| j                  d<   | j                  | _        y
|t        u rW| j                  d«       d| j                  d	<   | j
                  j                  | j                  «       | j                  | _        y
| j                  d«       d| j                  d	<   | j                  | _        y
)Nr”   rÜ   r/  rC   r   rÛ   r#  Fr  T)r$   rN   r   Ú3between_doctype_public_and_system_identifiers_stater'   r0   r9   r(   r&   r<   Ú-doctype_system_identifier_double_quoted_stateÚ-doctype_system_identifier_single_quoted_stater   r,  rŽ   s     r   r8  z3HTMLTokenizer.after_doctype_public_identifier_state¥  sY  € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Ø×QÑQˆDŒJð* ð) �SŠ[Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð$ ð# �SŠ[Ø×ÑÐ9Ô:Ø-/ˆD×Ñ˜zÑ*Ø×KÑKˆDŒJð ð �SŠ[Ø×ÑÐ9Ô:Ø-/ˆD×Ñ˜zÑ*Ø×KÑKˆDŒJð ð ”S‰[Ø×ÑÐ-Ô.Ø,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð
 ð ×ÑÐ9Ô:Ø,1ˆD×Ñ˜yÑ)Ø×1Ñ1ˆDŒJØr   c                 ó|  — | j                   j                  «       }|t        v r	 y
|dk(  r7| j                  j	                  | j
                  «       | j                  | _        y
|dk(  r!d| j
                  d<   | j                  | _        y
|dk(  r!d| j
                  d<   | j                  | _        y
|t        u rW| j                  d«       d| j
                  d<   | j                  j	                  | j
                  «       | j                  | _        y
| j                  d	«       d| j
                  d<   | j                  | _        y
)Nr”   rÜ   rC   r   rÛ   r#  Fr  r/  T)r$   rN   r   r0   r9   r(   r&   r'   r=  r>  r   r<   r,  rŽ   s     r   r<  zAHTMLTokenizer.between_doctype_public_and_system_identifiers_state¿  s1  € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Øð& ð% �SŠ[Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð  ð �SŠ[Ø-/ˆD×Ñ˜zÑ*Ø×KÑKˆDŒJð ð �SŠ[Ø-/ˆD×Ñ˜zÑ*Ø×KÑKˆDŒJð ð ”S‰[Ø×ÑÐ-Ô.Ø,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð
 ð ×ÑÐ9Ô:Ø,1ˆD×Ñ˜yÑ)Ø×1Ñ1ˆDŒJØr   c                 ó  — | j                   j                  «       }|t        v r| j                  | _        y|dv r>| j                  d«       | j                   j                  |«       | j                  | _        y|t        u rW| j                  d«       d| j                  d<   | j                  j                  | j                  «       | j                  | _        y| j                   j                  |«       | j                  | _        yr.  )r$   rN   r   Ú&before_doctype_system_identifier_stater'   r<   rS   r   r(   r0   r9   r&   rŽ   s     r   r+  z0HTMLTokenizer.after_doctype_system_keyword_state×  r1  r   c                 ó¼  — | j                   j                  «       }|t        v r	 y
|dk(  r!d| j                  d<   | j                  | _        y
|dk(  r!d| j                  d<   | j                  | _        y
|dk(  rW| j                  d«       d| j                  d<   | j                  j                  | j                  «       | j                  | _        y
|t        u rW| j                  d	«       d| j                  d<   | j                  j                  | j                  «       | j                  | _        y
| j                  d«       d| j                  d<   | j                  | _        y
)NrÜ   rC   r   rÛ   r”   r/  Fr  r#  T)r$   rN   r   r(   r=  r'   r>  r<   r0   r9   r&   r   r,  rŽ   s     r   rA  z4HTMLTokenizer.before_doctype_system_identifier_stateé  sP  € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Øð* ð) �SŠ[Ø-/ˆD×Ñ˜zÑ*Ø×KÑKˆDŒJð$ ð# �SŠ[Ø-/ˆD×Ñ˜zÑ*Ø×KÑKˆDŒJð ð �SŠ[Ø×ÑÐ9Ô:Ø,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ”S‰[Ø×ÑÐ-Ô.Ø,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð
 ð ×ÑÐ9Ô:Ø,1ˆD×Ñ˜yÑ)Ø×1Ñ1ˆDŒJØr   c                 óf  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r)| j	                  d«       | j
                  dxx   dz  cc<   y|dk(  rW| j	                  d«       d| j
                  d	<   | j                  j                  | j
                  «       | j                  | _        y|t        u rW| j	                  d
«       d| j
                  d	<   | j                  j                  | j
                  «       | j                  | _        y| j
                  dxx   |z  cc<   y)NrÜ   rw   rx   r   rF   r”   r3  Fr  r#  T©
r$   rN   Ú%after_doctype_system_identifier_stater'   r<   r(   r0   r9   r&   r   rŽ   s     r   r=  z;HTMLTokenizer.doctype_system_identifier_double_quoted_state  r9  r   c                 óf  — | j                   j                  «       }|dk(  r| j                  | _        y|dk(  r)| j	                  d«       | j
                  dxx   dz  cc<   y|dk(  rW| j	                  d«       d| j
                  d	<   | j                  j                  | j
                  «       | j                  | _        y|t        u rW| j	                  d
«       d| j
                  d	<   | j                  j                  | j
                  «       | j                  | _        y| j
                  dxx   |z  cc<   y)NrÛ   rw   rx   r   rF   r”   r3  Fr  r#  TrD  rŽ   s     r   r>  z;HTMLTokenizer.doctype_system_identifier_single_quoted_state  r9  r   c                 óÆ  — | j                   j                  «       }|t        v r	 y|dk(  r7| j                  j	                  | j
                  «       | j                  | _        y|t        u rW| j                  d«       d| j
                  d<   | j                  j	                  | j
                  «       | j                  | _        y| j                  d«       | j                  | _        y)Nr”   r#  Fr  r/  T)r$   rN   r   r0   r9   r(   r&   r'   r   r<   r,  rŽ   s     r   rE  z3HTMLTokenizer.after_doctype_system_identifier_state-  sË   € Ø�{‰{×$Ñ$Ó&ˆØÔ#Ñ#Øð ð �SŠ[Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ”S‰[Ø×ÑÐ-Ô.Ø,1ˆD×Ñ˜yÑ)Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ×ÑÐ9Ô:Ø×1Ñ1ˆDŒJØr   c                 óf  — | j                   j                  «       }|dk(  r7| j                  j                  | j                  «       | j
                  | _        y|t        u rR| j                   j                  |«       | j                  j                  | j                  «       | j
                  | _        y	 y)Nr”   T)	r$   rN   r0   r9   r(   r&   r'   r   rS   rŽ   s     r   r,  z!HTMLTokenizer.bogus_doctype_state>  s’   € Ø�{‰{×$Ñ$Ó&ˆØ�3Š;Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð ”S‰[à�K‰K×Ñ˜dÔ#Ø×Ñ×#Ñ# D×$6Ñ$6Ô7ØŸ™ˆDŒJð ð Ør   c                 óT  — g }	 |j                  | j                  j                  d«      «       |j                  | j                  j                  d«      «       | j                  j                  «       }|t        u rn0|dk(  sJ ‚|d   dd  dk(  r|d   d d |d<   n|j                  |«       Œ§dj                  |«      }|j                  d«      x}d	kD  r3t        |«      D ]  }| j                  d
«       Œ |j                  dd«      }|r| j                  |«       | j                  | _        y)NTú]r”   r^   éþÿÿÿz]]rC   rw   r   rx   rF   )r9   r$   r|   rN   r   rP   Úcountr   r<   rõ   r?   r&   r'   )r)   r/   ÚcharÚ
null_countrå   s        r   r
  z!HTMLTokenizer.cdata_section_stateL  s  € ØˆØØ�K‰K˜Ÿ™×/Ñ/°Ó4Ô5Ø�K‰K˜Ÿ™×/Ñ/°Ó4Ô5Ø—;‘;×(Ñ(Ó*ˆDØ”s‰{Øà˜s’{Ð"�{Ø˜‘8˜B˜C�= DÒ(Ø# B™x¨¨˜}�D˜‘HØà—K‘K Ô%ð ð �w‰w�t‹}ˆàŸ*™* XÓ.Ð.ˆJ°!Ò3Ü˜:Ó&ò 6�Ø× Ñ Ð!4Õ5ð6à—<‘< ¨(Ó3ˆDÙØ�O‰O˜DÔ!Ø—_‘_ˆŒ
Ør   r#   )NF)OÚ__name__Ú
__module__Ú__qualname__Ú__doc__r+   r6   r<   r?   rY   ri   rk   ru   r&   rz   r„   r�   r‰   rŒ   r�   r{   r—   r˜   r‚   r¤   r§   rˆ   r®   r°   r‹   r³   r¶   r´   r»   rÂ   rÀ   r¾   rÁ   rÆ   rÉ   rÇ   rÎ   rÒ   rÕ   rÓ   rØ   rŸ   rÞ   râ   rá   ré   rë   rê   rî   r    r™   r–   r  r  r  r  r  r  r  r  r  r!  r*  r0  r4  r5  r8  r<  r+  rA  r=  r>  rE  r,  r
  © r   r   r!   r!   &   sŠ  „ Ùó"ò1ò('òKò3ójEKòNBò%ò8ò6ò
ò8ò
òò	ò!òFò0ò(	ò	ò$òL	ò	ò$òLò	ò$òLòòò ò$ò(ò	ò$òLò ò$ò(ò,	òò ò6/òbò:ò<ò"ò"ò0ò$òò-ò^ò(ò(ò ò"ò4ò*òò.ò4+òZò$ò4ò*ò*ò4ò0ò$ò4ò*ò*ò"ór   r!   N)Úbisectr   Úcollectionsr   Úhtml.entitiesr   r   Ú	constantsr   r   r	   r
   r   r   r   r   r   Úinputstreamr   ÚtupleÚsortedr   r   r   r!   rS  r   r   ú<module>r[     sG   ðÝ Ý Ý +÷
÷ 
õ 
õ )á‘F˜8Ó$Ó%€ò-ò÷ò r   