HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-310.pyc
o

@%Ne���@sddlmZmZmZddlmZmZddlZddlm	Z	ddlm
Z
ddlmZddlm
Z
dd	lmZdd
lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z d d
d�Z!d!dd�Z"dd�Z#Gdd�de$�Z%ej&dd��Z'dd�Z(		d"dd�Z)Gdd�de*�Z+dS)#�)�absolute_import�division�unicode_literals)�with_metaclass�viewkeysN�)�_inputstream)�
_tokenizer)�treebuilders)�Marker)�_utils)�spaceCharacters�asciiUpper2Lower�specialElements�headingElements�
cdataElements�rcdataElements�
tokenTypes�
tagTokenTypes�
namespaces�htmlIntegrationPointElements�"mathmlTextIntegrationPointElements�adjustForeignAttributes�adjustMathMLAttributes�adjustSVGAttributes�E�_ReparseException�etreeTcKs(t�|�}t||d�}|j|fi|��S)a�Parse an HTML document as a string or file-like object into a tree

    :arg doc: the document to parse as a string or file-like object

    :arg treebuilder: the treebuilder to use when parsing

    :arg namespaceHTMLElements: whether or not to namespace HTML elements

    :returns: parsed tree

    Example:

    >>> from html5lib.html5parser import parse
    >>> parse('<html><body><p>This is a doc</p></body></html>')
    <Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>

    ��namespaceHTMLElements)r
�getTreeBuilder�
HTMLParser�parse)�doc�treebuilderr�kwargs�tb�p�r(�B/usr/lib/python3/dist-packages/pip/_vendor/html5lib/html5parser.pyr"s
r"�divcKs,t�|�}t||d�}|j|fd|i|��S)a#Parse an HTML fragment as a string or file-like object into a tree

    :arg doc: the fragment to parse as a string or file-like object

    :arg container: the container context to parse the fragment in

    :arg treebuilder: the treebuilder to use when parsing

    :arg namespaceHTMLElements: whether or not to namespace HTML elements

    :returns: parsed tree

    Example:

    >>> from html5lib.html5libparser import parseFragment
    >>> parseFragment('<b>this is a fragment</b>')
    <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

    r�	container)r
r r!�
parseFragment)r#r+r$rr%r&r'r(r(r)r,1s
r,csG�fdd�dt�}|S)NcseZdZ�fdd�ZdS)z-method_decorator_metaclass.<locals>.Decoratedcs>|��D]\}}t|tj�r�|�}|||<qt�||||�S�N)�items�
isinstance�types�FunctionType�type�__new__)�meta�	classname�bases�	classDict�
attributeName�	attribute��functionr(r)r3Ls

z5method_decorator_metaclass.<locals>.Decorated.__new__N)�__name__�
__module__�__qualname__r3r(r:r(r)�	DecoratedKsr?)r2)r;r?r(r:r)�method_decorator_metaclassJsr@c@s�eZdZdZd'dd�Zd(dd	�Zd
d�Zedd
��Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
d)dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�ZdS)*r!z]HTML parser

    Generates a tree structure from a stream of (possibly malformed) HTML.

    NFTcsH|�_|durt�d�}||��_g�_�fdd�t|���D��_dS)a�
        :arg tree: a treebuilder class controlling the type of tree that will be
            returned. Built in treebuilders can be accessed through
            html5lib.treebuilders.getTreeBuilder(treeType)

        :arg strict: raise an exception when a parse error is encountered

        :arg namespaceHTMLElements: whether or not to namespace HTML elements

        :arg debug: whether or not to enable debug mode which logs things

        Example:

        >>> from html5lib.html5parser import HTMLParser
        >>> parser = HTMLParser()                     # generates parser with etree builder
        >>> parser = HTMLParser('lxml', strict=True)  # generates parser with lxml builder which is strict

        Nrcsi|]\}}||��j��qSr()�tree)�.0�name�cls��selfr(r)�
<dictcomp>ysz'HTMLParser.__init__.<locals>.<dictcomp>)�strictr
r rA�errors�	getPhasesr.�phases)rFrArHr�debugr(rEr)�__init__]s



�zHTMLParser.__init__r*cKsf||_||_||_tj|fd|i|��|_|��z|��WdSty2|��|��YdSw)N�parser)	�
innerHTMLModer+�	scriptingr	�
HTMLTokenizer�	tokenizer�reset�mainLoopr)rF�stream�	innerHTMLr+rPr%r(r(r)�_parse|s�zHTMLParser._parsecCs�|j��d|_g|_g|_d|_|jrO|j��|_	|j	t
vr&|jj|j_
n|j	tvr2|jj|j_
n
|j	dkr>|jj|j_
n	|jd|_|j��|��n	d|_	|jd|_d|_d|_d|_dS)NFz	no quirks�	plaintext�
beforeHtml�initialT)rArS�
firstStartTagrI�log�
compatModerOr+�lowerrVrrR�rcdataState�stater�rawtextState�plaintextStaterK�phase�insertHtmlElement�resetInsertionMode�	lastPhase�beforeRCDataPhase�
framesetOKrEr(r(r)rS�s,






zHTMLParser.resetcCst|d�sdS|jjjdjS)z�Name of the character encoding that was used to decode the input stream, or
        :obj:`None` if that is not determined yet

        rRNr)�hasattrrRrU�charEncodingrCrEr(r(r)�documentEncoding�s
zHTMLParser.documentEncodingcCsF|jdkr|jtdkrd|jvo|jd�t�dvS|j|jftvS)N�annotation-xml�mathml�encoding)z	text/htmlzapplication/xhtml+xml)rC�	namespacer�
attributes�	translaterr�rF�elementr(r(r)�isHTMLIntegrationPoint�s


���z!HTMLParser.isHTMLIntegrationPointcCs|j|jftvSr-)rorCrrrr(r(r)�isMathMLTextIntegrationPoint��z'HTMLParser.isMathMLTextIntegrationPointcCsRtd}td}td}td}td}td}td}|jD]�}d}	|}
|
dur�|
}	|jjr5|jjdnd}|r<|jnd}|rC|jnd}
|
d	}||kr\|�|
d
|
�di��d}
n�t|jj�dks�||jj	ks�|�
|�r�||kr}|d
tddg�vs�|||fvs�|tdkr�|
dkr�||kr�|d
dks�|�
|�r�||||fvr�|j}n|jd}||kr�|�|
�}
n1||kr�|�|
�}
n'||kr�|�|
�}
n||kr�|�|
�}
n||kr�|�|
�}
n	||kr�|�|
�}
|
dus)||k�r|	d�r|	d�s|�dd
|	d
i�qd}g}|�r'|�|j�|j��}|�r"|j|v�s"J�|�sdSdS)N�
Characters�SpaceCharacters�StartTag�EndTag�Comment�Doctype�
ParseError���r2�data�datavarsrrC�mglyph�
malignmarkrmrl�svg�inForeignContent�selfClosing�selfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)rrRrA�openElementsrorC�
parseError�get�len�defaultNamespaceru�	frozensetrrtrcrK�processCharacters�processSpaceCharacters�processStartTag�
processEndTag�processComment�processDoctype�append�
processEOF)rF�CharactersToken�SpaceCharactersToken�
StartTagToken�EndTagToken�CommentToken�DoctypeToken�ParseErrorToken�token�
prev_token�	new_token�currentNode�currentNodeNamespace�currentNodeNamer2rc�	reprocessrKr(r(r)rT�s~
��

�)�
��
�zHTMLParser.mainLoopcOs&|j|ddg|�Ri|��|j��S)a�Parse a HTML document into a well-formed tree

        :arg stream: a file-like object or string containing the HTML to be parsed

            The optional encoding parameter must be a string that indicates
            the encoding.  If specified, that encoding will be used,
            regardless of any BOM or later declaration (such as in a meta
            element).

        :arg scripting: treat noscript elements as if JavaScript was turned on

        :returns: parsed tree

        Example:

        >>> from html5lib.html5parser import HTMLParser
        >>> parser = HTMLParser()
        >>> parser.parse('<html><body><p>This is a doc</p></body></html>')
        <Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>

        FN)rWrA�getDocument�rFrU�argsr%r(r(r)r"s
zHTMLParser.parsecOs$|j|dg|�Ri|��|j��S)aZParse a HTML fragment into a well-formed tree fragment

        :arg container: name of the element we're setting the innerHTML
            property if set to None, default to 'div'

        :arg stream: a file-like object or string containing the HTML to be parsed

            The optional encoding parameter must be a string that indicates
            the encoding.  If specified, that encoding will be used,
            regardless of any BOM or later declaration (such as in a meta
            element)

        :arg scripting: treat noscript elements as if JavaScript was turned on

        :returns: parsed tree

        Example:

        >>> from html5lib.html5libparser import HTMLParser
        >>> parser = HTMLParser()
        >>> parser.parseFragment('<b>this is a fragment</b>')
        <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>

        T)rWrA�getFragmentr�r(r(r)r,s
zHTMLParser.parseFragment�XXX-undefined-errorcCs@|duri}|j�|jj��||f�|jrtt||��dSr-)rIr�rRrU�positionrHr}r)rF�	errorcoder�r(r(r)r�;s�zHTMLParser.parseErrorcC�t|t�dSr-)�adjust_attributesr�rFr�r(r(r)rC�z!HTMLParser.adjustMathMLAttributescCr�r-)r�rr�r(r(r)rFr�zHTMLParser.adjustSVGAttributescCr�r-)r��adjustForeignAttributesMapr�r(r(r)rIr�z"HTMLParser.adjustForeignAttributescCs|j��dSr-)rNrcr�r(r(r)�reparseTokenNormalLszHTMLParser.reparseTokenNormalcCs�d}ddddddddddd	d	d
dd�}|jjddd
�D]B}|j}d}||jjdkr5|js0J�d}|j}|dvr>|js>J�|sH|j|jjkrHq||vrU|j||}n
|r^|jd	}nq||_dS)NF�inSelect�inCell�inRow�inTableBody�	inCaption�
inColumnGroup�inTable�inBody�
inFrameset�
beforeHead)�select�td�th�tr�tbody�thead�tfoot�caption�colgroup�table�head�body�frameset�htmlr~rT)r�r�r�r�)rAr�rCrVror�rKrc)rF�last�newModes�node�nodeName�	new_phaser(r(r)rePsF�


�
zHTMLParser.resetInsertionModecCsR|dvsJ�|j�|�|dkr|jj|j_n|jj|j_|j|_|jd|_dS)N)�RAWTEXT�RCDATAr��text)	rA�
insertElementrRrar`r_rc�
originalPhaserK)rFr��contentTyper(r(r)�parseRCDataRawtext|szHTMLParser.parseRCDataRawtext)NFTF)Fr*F)r�N)r<r=r>�__doc__rMrWrS�propertyrkrtrurTr"r,r�rrrr�rer�r(r(r(r)r!Vs&

"
	
C
,r!csHdd�}dd�}Gdd�dt|||����Gdd�d��}Gd	d
�d
��}Gdd�d��}Gd
d�d��}Gdd�d��}Gdd�d��}G��fdd�d���Gdd�d��}	G�fdd�d��}
G�fdd�d���G�fdd�d��}G�fdd�d��}G�fdd �d ��}
G�fd!d"�d"��}G�fd#d$�d$��}G�fd%d&�d&��}Gd'd(�d(��}G�fd)d*�d*��}Gd+d,�d,��}G�fd-d.�d.��}G�fd/d0�d0��}Gd1d2�d2��}Gd3d4�d4��}id5|�d6|�d7|�d8|�d9|�d:|�d;��d<|	�d=|
�d>��d?|�d@|�dA|
�dB|�dC|�dD|�dE|�||||||dF��S)GNcs$dd�t��D����fdd�}|S)z4Logger that records which phase processes each tokencSsi|]\}}||�qSr(r()rB�key�valuer(r(r)rG�sz*getPhases.<locals>.log.<locals>.<dictcomp>cs��j�d�rFt|�dkrF|d}d�|di}|dtvr$|d|d<|jj�|jjjj|jj	j
j|j
j�j|f��|g|�Ri|��S�|g|�Ri|��S)N�processrr2rC)r<�
startswithr�rrNr\r�rRr`rc�	__class__)rFr�r%r��info�r;�
type_namesr(r)�wrapped�s
�z'getPhases.<locals>.log.<locals>.wrapped)rr.)r;r�r(r�r)r\�szgetPhases.<locals>.logcSs|rt|�StSr-)r@r2)�
use_metaclass�metaclass_funcr(r(r)�getMetaclass�szgetPhases.<locals>.getMetaclassc@s\eZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dS)zgetPhases.<locals>.PhasezNBase class for helper object that implements each phase of processing
        )rNrA�__startTagCache�
__endTagCachecSs||_||_i|_i|_dSr-)rNrA�_Phase__startTagCache�_Phase__endTagCache)rFrNrAr(r(r)rM�s
z!getPhases.<locals>.Phase.__init__cSst�r-)�NotImplementedErrorrEr(r(r)r���z#getPhases.<locals>.Phase.processEOFcS�|j�||jjd�dS)Nr~�rA�
insertCommentr�r�r(r(r)r���z'getPhases.<locals>.Phase.processCommentcS�|j�d�dS)Nzunexpected-doctype�rNr�r�r(r(r)r��rvz'getPhases.<locals>.Phase.processDoctypecS�|j�|d�dS�Nr�rA�
insertTextr�r(r(r)r���z*getPhases.<locals>.Phase.processCharacterscSr�r�r�r�r(r(r)r��r�z/getPhases.<locals>.Phase.processSpaceCharacterscS�|d}||jvr|j|}||�S|j|}|j|<t|j�t|j�dkr?|j�tt|j���t|j�t|j�dks(||�S�NrCg�������?)r��startTagHandlerr��pop�next�iter�rFr�rC�funcr(r(r)r���

��z(getPhases.<locals>.Phase.processStartTagcSsf|jjs|ddkr|j�d�|d��D]\}}||jjdjvr,||jjdj|<qd|j_dS)NrCr�z
non-html-rootrrF)rNr[r�r.rAr�rp�rFr��attrr�r(r(r)�startTagHtml�s�z%getPhases.<locals>.Phase.startTagHtmlcSr�r�)r��
endTagHandlerr�r�r�r�r�r(r(r)r��r�z&getPhases.<locals>.Phase.processEndTagN)r<r=r>r��	__slots__rMr�r�r�r�r�r�r�r�r(r(r(r)�Phase�s
rc@sReZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)zgetPhases.<locals>.InitialPhasecS�dSr-r(r�r(r(r)r��r�z6getPhases.<locals>.InitialPhase.processSpaceCharacterscS�|j�||jj�dSr-�rAr��documentr�r(r(r)r���z.getPhases.<locals>.InitialPhase.processCommentcSs�|d}|d}|d}|d}|dks |dus |dur&|dkr&|j�d�|dur,d}|j�|�|dkr;|�t�}|r]|ddks]|�d	�s]|d
vs]|�d�rU|dus]|rb|��dkrbd
|j_n|�d�sp|�d�rt|durtd|j_|jj	d|j_
dS)NrC�publicId�systemId�correctr�zabout:legacy-compatzunknown-doctype�)7z*+//silmaril//dtd html pro v0r11 19970101//z4-//advasoft ltd//dtd html 3.0 aswedit + extensions//z*-//as//dtd html 3.0 aswedit + extensions//z-//ietf//dtd html 2.0 level 1//z-//ietf//dtd html 2.0 level 2//z&-//ietf//dtd html 2.0 strict level 1//z&-//ietf//dtd html 2.0 strict level 2//z-//ietf//dtd html 2.0 strict//z-//ietf//dtd html 2.0//z-//ietf//dtd html 2.1e//z-//ietf//dtd html 3.0//z-//ietf//dtd html 3.2 final//z-//ietf//dtd html 3.2//z-//ietf//dtd html 3//z-//ietf//dtd html level 0//z-//ietf//dtd html level 1//z-//ietf//dtd html level 2//z-//ietf//dtd html level 3//z"-//ietf//dtd html strict level 0//z"-//ietf//dtd html strict level 1//z"-//ietf//dtd html strict level 2//z"-//ietf//dtd html strict level 3//z-//ietf//dtd html strict//z-//ietf//dtd html//z(-//metrius//dtd metrius presentational//z5-//microsoft//dtd internet explorer 2.0 html strict//z.-//microsoft//dtd internet explorer 2.0 html//z0-//microsoft//dtd internet explorer 2.0 tables//z5-//microsoft//dtd internet explorer 3.0 html strict//z.-//microsoft//dtd internet explorer 3.0 html//z0-//microsoft//dtd internet explorer 3.0 tables//z#-//netscape comm. corp.//dtd html//z*-//netscape comm. corp.//dtd strict html//z*-//o'reilly and associates//dtd html 2.0//z3-//o'reilly and associates//dtd html extended 1.0//z;-//o'reilly and associates//dtd html extended relaxed 1.0//zN-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//zE-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//z$-//spyglass//dtd html 2.0 extended//z+-//sq//dtd html 2.0 hotmetal + extensions//z--//sun microsystems corp.//dtd hotjava html//z4-//sun microsystems corp.//dtd hotjava strict html//z-//w3c//dtd html 3 1995-03-24//z-//w3c//dtd html 3.2 draft//z-//w3c//dtd html 3.2 final//z-//w3c//dtd html 3.2//z-//w3c//dtd html 3.2s draft//z-//w3c//dtd html 4.0 frameset//z#-//w3c//dtd html 4.0 transitional//z(-//w3c//dtd html experimental 19960712//z&-//w3c//dtd html experimental 970421//z-//w3c//dtd w3 html//z-//w3o//dtd w3 html 3.0//z#-//webtechs//dtd mozilla html 2.0//z-//webtechs//dtd mozilla html//)z$-//w3o//dtd w3 html strict 3.0//en//z"-/w3c/dtd html 4.0 transitional/enr�)z -//w3c//dtd html 4.01 frameset//z$-//w3c//dtd html 4.01 transitional//z:http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd�quirks)z -//w3c//dtd xhtml 1.0 frameset//z$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksrY)rNr�rA�
insertDoctyperqrr�r^r]rKrc)rFr�rCrrr	r(r(r)r��sJ
��9���
���z.getPhases.<locals>.InitialPhase.processDoctypecSsd|j_|jjd|j_dS)NrrY)rNr]rKrcrEr(r(r)�anythingElseZsz,getPhases.<locals>.InitialPhase.anythingElsecS�|j�d�|��|S)Nzexpected-doctype-but-got-chars�rNr�r
r�r(r(r)r�^�z1getPhases.<locals>.InitialPhase.processCharacterscS�"|j�dd|di�|��|S)Nz"expected-doctype-but-got-start-tagrCrr�r(r(r)r�c�

�z/getPhases.<locals>.InitialPhase.processStartTagcSr)Nz expected-doctype-but-got-end-tagrCrr�r(r(r)r�irz-getPhases.<locals>.InitialPhase.processEndTagcS�|j�d�|��dS)Nzexpected-doctype-but-got-eofTrrEr(r(r)r�orz*getPhases.<locals>.InitialPhase.processEOFN)
r<r=r>�tuplerr�r�r�r
r�r�r�r�r(r(r(r)�InitialPhase�s_rc@sJeZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�ZdS)z"getPhases.<locals>.BeforeHtmlPhasecSs&|j�tdd��|jjd|j_dS)Nr�ryr�)rA�
insertRoot�impliedTagTokenrNrKrcrEr(r(r)rdxsz4getPhases.<locals>.BeforeHtmlPhase.insertHtmlElementcS�|��dS�NT�rdrEr(r(r)r�}�z-getPhases.<locals>.BeforeHtmlPhase.processEOFcSrr-rr�r(r(r)r��rz1getPhases.<locals>.BeforeHtmlPhase.processCommentcSrr-r(r�r(r(r)r��r�z9getPhases.<locals>.BeforeHtmlPhase.processSpaceCharacterscS�|��|Sr-rr�r(r(r)r��rz4getPhases.<locals>.BeforeHtmlPhase.processCharacterscSs |ddkr
d|j_|��|S)NrCr�T)rNr[rdr�r(r(r)r��sz2getPhases.<locals>.BeforeHtmlPhase.processStartTagcSs2|ddvr|j�dd|di�dS|��|S)NrC�r�r�r��brzunexpected-end-tag-before-html)rNr�rdr�r(r(r)r��s
�z0getPhases.<locals>.BeforeHtmlPhase.processEndTagN)r<r=r>rrrdr�r�r�r�r�r�r(r(r(r)�BeforeHtmlPhasetsrc@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
�defde	fg�Ze
e_e
�defg�Zee_dS)z"getPhases.<locals>.BeforeHeadPhasecSs|�tdd��dS)Nr�ryT��startTagHeadrrEr(r(r)r���z-getPhases.<locals>.BeforeHeadPhase.processEOFcSrr-r(r�r(r(r)r��r�z9getPhases.<locals>.BeforeHeadPhase.processSpaceCharacterscS�|�tdd��|S�Nr�ryr r�r(r(r)r��r"z4getPhases.<locals>.BeforeHeadPhase.processCharacterscS�|jjd�|�S�Nr��rNrKr�r�r(r(r)r���z/getPhases.<locals>.BeforeHeadPhase.startTagHtmlcSs0|j�|�|jjd|j_|jjd|j_dS)Nr~�inHead)rAr�r��headPointerrNrKrcr�r(r(r)r!�sz/getPhases.<locals>.BeforeHeadPhase.startTagHeadcSr#r$r r�r(r(r)�
startTagOther�r"z0getPhases.<locals>.BeforeHeadPhase.startTagOthercSr#r$r r�r(r(r)�endTagImplyHead�r"z2getPhases.<locals>.BeforeHeadPhase.endTagImplyHeadcS�|j�dd|di�dS)Nzend-tag-after-implied-rootrCr�r�r(r(r)�endTagOther��
�z.getPhases.<locals>.BeforeHeadPhase.endTagOtherr�r�rN)r<r=r>rrr�r�r�r�r!r+r,r.r�MethodDispatcherr��defaultr�r(r(r(r)�BeforeHeadPhase�s&��
r2c@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Ze�defd efd!efd"e
fd#efd$e	fd%e
fd&efg�Zee_e�d&efd'efg�Zee_d(S))zgetPhases.<locals>.InHeadPhasecSrr�r
rEr(r(r)r��rz)getPhases.<locals>.InHeadPhase.processEOFcSrr-r3r�r(r(r)r��rz0getPhases.<locals>.InHeadPhase.processCharacterscSr%r&r'r�r(r(r)r��r(z+getPhases.<locals>.InHeadPhase.startTagHtmlcSr�)Nz!two-heads-are-not-better-than-oner�r�r(r(r)r!�rvz+getPhases.<locals>.InHeadPhase.startTagHeadcS�$|j�|�|jj��d|d<dS�NTr��rAr�r�r�r�r(r(r)�startTagBaseLinkCommand��z6getPhases.<locals>.InHeadPhase.startTagBaseLinkCommandcSs�|j�|�|jj��d|d<|d}|jjjjddkr[d|vr.|jjj�|d�dSd|vr]d|vr_|d�	�d	krat
�|d�d
��}t
�
|�}|��}|jjj�|�dSdSdSdSdS)NTr�rr�	tentative�charset�contentz
http-equivzcontent-typezutf-8)rAr�r�r�rNrRrUrj�changeEncodingr^r�
EncodingBytes�encode�ContentAttrParserr")rFr�rprrN�codecr(r(r)�startTagMeta�s$
�z+getPhases.<locals>.InHeadPhase.startTagMetacS�|j�|d�dS)Nr��rNr�r�r(r(r)�
startTagTitle�r(z,getPhases.<locals>.InHeadPhase.startTagTitlecSrB)Nr�rCr�r(r(r)�startTagNoFramesStyle��z4getPhases.<locals>.InHeadPhase.startTagNoFramesStylecSs:|jjr
|j�|d�dS|j�|�|jjd|j_dS)Nr��inHeadNoscript)rNrPr�rAr�rKrcr�r(r(r)�startTagNoscript�sz/getPhases.<locals>.InHeadPhase.startTagNoscriptcSs<|j�|�|jjj|jj_|jj|j_|jjd|j_dS)Nr�)	rAr�rNrR�scriptDataStater`rcr�rKr�r(r(r)�startTagScriptsz-getPhases.<locals>.InHeadPhase.startTagScriptcSrr-r3r�r(r(r)r+rz,getPhases.<locals>.InHeadPhase.startTagOthercS�:|jjj��}|jdksJd|j��|jjd|j_dS)Nr�zExpected head got %s�	afterHead�rNrAr�r�rCrKrc�rFr�r�r(r(r)�
endTagHead
�z)getPhases.<locals>.InHeadPhase.endTagHeadcSrr-r3r�r(r(r)�endTagHtmlBodyBrrz/getPhases.<locals>.InHeadPhase.endTagHtmlBodyBrcSr-�N�unexpected-end-tagrCr�r�r(r(r)r.�z*getPhases.<locals>.InHeadPhase.endTagOthercS�|�td��dS)Nr�)rOrrEr(r(r)r
r(z+getPhases.<locals>.InHeadPhase.anythingElser��title)�noframes�style�noscript�script)�base�basefont�bgsound�command�linkr4r�)rr�r�N)r<r=r>rrr�r�r�r!r7rArDrErHrJr+rOrQr.r
rr0r�r1r�r(r(r(r)�InHeadPhase�sF���
r`c@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Ze�de	fde
fdefg�Zee_e�de
fdefg�Zee_dS)z&getPhases.<locals>.InHeadNoscriptPhasecSr)Nzeof-in-head-noscriptTrrEr(r(r)r�/rz1getPhases.<locals>.InHeadNoscriptPhase.processEOFcSr%�Nr))rNrKr�r�r(r(r)r�4r(z5getPhases.<locals>.InHeadNoscriptPhase.processCommentcSr)Nzchar-in-head-noscriptrr�r(r(r)r�7rz8getPhases.<locals>.InHeadNoscriptPhase.processCharacterscSr%ra�rNrKr�r�r(r(r)r�<r(z=getPhases.<locals>.InHeadNoscriptPhase.processSpaceCharacterscSr%r&r'r�r(r(r)r�?r(z3getPhases.<locals>.InHeadNoscriptPhase.startTagHtmlcSr%rar'r�r(r(r)r7Br(z>getPhases.<locals>.InHeadNoscriptPhase.startTagBaseLinkCommandcSr-�N�unexpected-start-tagrCr�r�r(r(r)�startTagHeadNoscriptErTz;getPhases.<locals>.InHeadNoscriptPhase.startTagHeadNoscriptcSr�Nzunexpected-inhead-noscript-tagrCrr�r(r(r)r+H�z4getPhases.<locals>.InHeadNoscriptPhase.startTagOthercSrK)NrYzExpected noscript got %sr)rMrNr(r(r)�endTagNoscriptMrPz5getPhases.<locals>.InHeadNoscriptPhase.endTagNoscriptcSrrfrr�r(r(r)�endTagBrRrgz/getPhases.<locals>.InHeadNoscriptPhase.endTagBrcSr-rRr�r�r(r(r)r.WrTz2getPhases.<locals>.InHeadNoscriptPhase.endTagOthercSrU)NrY)rhrrEr(r(r)r
ZrFz3getPhases.<locals>.InHeadNoscriptPhase.anythingElser�)r\r]r_r4rWrX)r�rYrYrN)r<r=r>rrr�r�r�r�r�r7rer+rhrir.r
rr0r�r1r�r(r(r(r)�InHeadNoscriptPhase,s2��
rjc@s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Ze�defdefde	fde
fdefg�Zee_e�de
fg�Zee_dS)z!getPhases.<locals>.AfterHeadPhasecSrrr3rEr(r(r)r�nrz,getPhases.<locals>.AfterHeadPhase.processEOFcSrr-r3r�r(r(r)r�rrz3getPhases.<locals>.AfterHeadPhase.processCharacterscSr%r&r'r�r(r(r)r�vr(z.getPhases.<locals>.AfterHeadPhase.startTagHtmlcSs(d|j_|j�|�|jjd|j_dS)NFr�)rNrhrAr�rKrcr�r(r(r)�startTagBodyy�z.getPhases.<locals>.AfterHeadPhase.startTagBodycSs |j�|�|jjd|j_dS)Nr�)rAr�rNrKrcr�r(r(r)�startTagFrameset~sz2getPhases.<locals>.AfterHeadPhase.startTagFramesetcSst|j�dd|di�|jj�|jj�|jjd�|�|jjddd�D]}|jdkr7|jj�	|�dSq&dS)Nz#unexpected-start-tag-out-of-my-headrCr)r~r�)
rNr�rAr�r�r*rKr�rC�removerNr(r(r)�startTagFromHead�s
�
��z2getPhases.<locals>.AfterHeadPhase.startTagFromHeadcSr-rcr�r�r(r(r)r!�rTz.getPhases.<locals>.AfterHeadPhase.startTagHeadcSrr-r3r�r(r(r)r+�rz/getPhases.<locals>.AfterHeadPhase.startTagOthercSrr-r3r�r(r(r)rQ�rz2getPhases.<locals>.AfterHeadPhase.endTagHtmlBodyBrcSr-rRr�r�r(r(r)r.�rTz-getPhases.<locals>.AfterHeadPhase.endTagOthercSs.|j�tdd��|jjd|j_d|j_dS)Nr�ryr�T)rAr�rrNrKrcrhrEr(r(r)r
�sz.getPhases.<locals>.AfterHeadPhase.anythingElser�r�r�)	r[r\r]r_r4rWrZrXrVr�)r�r�rN)r<r=r>rrr�r�r�rkrmror!r+rQr.r
rr0r�r1r�r(r(r(r)�AfterHeadPhaseks6
��	�
rpc
seZdZdZ��fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%dFdG�Z&dHdI�Z'dJdK�Z(dLdM�Z)dNdO�Z*dPdQ�Z+dRdS�Z,dTdU�Z-dVdW�Z.dXdY�Z/dZd[�Z0d\d]�Z1d^d_�Z2d`da�Z3dbdc�Z4ddde�Z5dfdg�Z6e7�8gdh�j9f�dief�djef�dke
f�dlef�e:ef�dmef�dnef�doef�dpef�dqef�dref�dsef�dtef�duef�dvef�dwef�dxef�dyef�dzef�d{ef�d|ef�d}e f�d~e!f�de"f�d�e#f�d�e$f�d�e&f�d�e'f�d�e%f�d�e(f�d�e)f�d�e*f��Z;e+e;_<e7�8dje-fdhe.fd�e/fdne0fd�e,fd�e1fe:e2fd�e3fdue4fd�e5fg
�Z=e6e=_<�Z>S)�zgetPhases.<locals>.InBodyPhase)r�cs"t�|�j|i|��|j|_dSr-)�superrM�processSpaceCharactersNonPrer��rFr�r%)�InBodyPhaser�r(r)rM�sz'getPhases.<locals>.InBodyPhase.__init__cSs$|j|jko|j|jko|j|jkSr-)rCrorp)rF�node1�node2r(r(r)�isMatchingFormattingElement�s

�
�z:getPhases.<locals>.InBodyPhase.isMatchingFormattingElementcSs�|j�|�|jjd}g}|jjddd�D]}|turn|�||�r*|�|�qt|�dks3J�t|�dkrB|jj�|d�|jj�|�dS)Nr~�)	rAr�r��activeFormattingElementsrrwr�r�rn)rFr�rs�matchingElementsr�r(r(r)�addFormattingElement�s
�z3getPhases.<locals>.InBodyPhase.addFormattingElementcSs@td�}|jjddd�D]}|j|vr|j�d�dSq
dS)N)�dd�dt�lir'r�r�r�r�r�r�r�r�r~z expected-closing-tag-but-got-eof)r�rAr�rCrNr�)rF�allowed_elementsr�r(r(r)r��s
��z)getPhases.<locals>.InBodyPhase.processEOFcSsj|d}|j|_|�d�r$|jjdjdvr$|jjd��s$|dd�}|r3|j��|j�|�dSdS)Nr�
r~)�pre�listing�textarear)	rrr�r�rAr�rC�
hasContent�#reconstructActiveFormattingElementsr�)rFr�rr(r(r)�!processSpaceCharactersDropNewline�s
�
�z@getPhases.<locals>.InBodyPhase.processSpaceCharactersDropNewlinecSs\|ddkrdS|j��|j�|d�|jjr*tdd�|dD��r,d|j_dSdSdS)Nr�cS�g|]}|tv�qSr(�r
�rB�charr(r(r)�
<listcomp>�s�zDgetPhases.<locals>.InBodyPhase.processCharacters.<locals>.<listcomp>F)rAr�r�rNrh�anyr�r(r(r)r��s
���z0getPhases.<locals>.InBodyPhase.processCharacterscSs|j��|j�|d�dSr�)rAr�r�r�r(r(r)rr�s
z;getPhases.<locals>.InBodyPhase.processSpaceCharactersNonPrecSr%rar'r�r(r(r)�startTagProcessInHead�r(z4getPhases.<locals>.InBodyPhase.startTagProcessInHeadcSs�|j�dddi�t|jj�dks|jjdjdkr"|jjs J�dSd|j_|d��D]\}}||jjdj	vrB||jjdj	|<q,dS)NrdrCr�rFr)
rNr�r�rAr�rCrVrhr.rpr�r(r(r)rk�s��z+getPhases.<locals>.InBodyPhase.startTagBodycSs�|j�dddi�t|jj�dks|jjdjdkr"|jjs J�dS|jjs(dS|jjdjr=|jjdj�	|jjd�|jjdjdkrU|jj�
�|jjdjdksF|j�|�|jjd|j_
dS)	NrdrCr�rr�r~r�r�)rNr�r�rAr�rCrVrh�parent�removeChildr�r�rKrcr�r(r(r)rms"�z/getPhases.<locals>.InBodyPhase.startTagFramesetcSs.|jjddd�r|�td��|j�|�dS�Nr'�button��variant)rA�elementInScope�endTagPrr�r�r(r(r)�startTagClosePsz-getPhases.<locals>.InBodyPhase.startTagClosePcSs>|jjddd�r|�td��|j�|�d|j_|j|_dS)Nr'r�r�F)	rAr�r�rr�rNrhr�r�r�r(r(r)�startTagPreListings
z1getPhases.<locals>.InBodyPhase.startTagPreListingcSs\|jjr|j�dddi�dS|jjddd�r|�td��|j�|�|jjd|j_dS)NrdrC�formr'r�r�r~)	rA�formPointerrNr�r�r�rr�r�r�r(r(r)�startTagFormsz+getPhases.<locals>.InBodyPhase.startTagFormcSs�d|j_dgddgddgd�}||d}t|jj�D] }|j|vr/|jj�t|jd��n
|j	t
vr;|jdvr;nq|jjd	d
d�rN|jj�td	d��|j�|�dS)NFr~r}r|)r~r}r|rCrz)�addressr*r'r'r�r�)
rNrh�reversedrAr�rCrcr�r�	nameTuplerr�r�)rFr��stopNamesMap�	stopNamesr�r(r(r)�startTagListItem&s*�

�

��z/getPhases.<locals>.InBodyPhase.startTagListItemcSs>|jjddd�r|�td��|j�|�|jjj|jj_dSr�)	rAr�r�rr�rNrRrbr`r�r(r(r)�startTagPlaintext<sz0getPhases.<locals>.InBodyPhase.startTagPlaintextcSsb|jjddd�r|�td��|jjdjtvr)|j�dd|di�|jj�	�|j�
|�dS)Nr'r�r�r~rdrC)rAr�r�rr�rCrrNr�r�r�r�r(r(r)�startTagHeadingBsz.getPhases.<locals>.InBodyPhase.startTagHeadingcSs~|j�d�}|r3|j�dddd��|�td��||jjvr&|jj�|�||jjvr3|jj�|�|j�	�|�
|�dS)N�a�$unexpected-start-tag-implies-end-tag��	startName�endName)rA�!elementInActiveFormattingElementsrNr��endTagFormattingrr�rnryr�r{)rFr��afeAElementr(r(r)�	startTagAJs�
z(getPhases.<locals>.InBodyPhase.startTagAcSs|j��|�|�dSr-)rAr�r{r�r(r(r)�startTagFormattingWs
z1getPhases.<locals>.InBodyPhase.startTagFormattingcSsP|j��|j�d�r!|j�dddd��|�td��|j��|�|�dS)N�nobrr�r�)rAr�r�rNr�r�rr{r�r(r(r)�startTagNobr[s
�
z+getPhases.<locals>.InBodyPhase.startTagNobrcSsT|j�d�r|j�dddd��|�td��|S|j��|j�|�d|j_dS)Nr�r�r�F)	rAr�rNr�r�rr�r�rhr�r(r(r)�startTagButtones�
z-getPhases.<locals>.InBodyPhase.startTagButtoncSs0|j��|j�|�|jj�t�d|j_dS�NF)rAr�r�ryr�rrNrhr�r(r(r)�startTagAppletMarqueeObjectps
z:getPhases.<locals>.InBodyPhase.startTagAppletMarqueeObjectcSsB|jjddd�r|�td��|j��d|j_|j�|d�dS)Nr'r�r�Fr�)rAr�r�rr�rNrhr�r�r(r(r)�startTagXmpvs

z*getPhases.<locals>.InBodyPhase.startTagXmpcSsR|jjdkr|jjddd�r|�td��|j�|�d|j_|jjd|j_	dS)Nrr'r�r�Fr�)
rNr]rAr�r�rr�rhrKrcr�r(r(r)�
startTagTable}sz,getPhases.<locals>.InBodyPhase.startTagTablecSs6|j��|j�|�|jj��d|d<d|j_dS)NTr�F)rAr�r�r�r�rNrhr�r(r(r)�startTagVoidFormatting�s

z5getPhases.<locals>.InBodyPhase.startTagVoidFormattingcSsH|jj}|�|�d|dvr |dd�t�dkr"||j_dSdSdS)Nr2r�hidden)rNrhr�rqr)rFr�rhr(r(r)�
startTagInput�s
�z,getPhases.<locals>.InBodyPhase.startTagInputcSr4r5r6r�r(r(r)�startTagParamSource�r8z2getPhases.<locals>.InBodyPhase.startTagParamSourcecSsJ|jjddd�r|�td��|j�|�|jj��d|d<d|j_dS)Nr'r�r�Tr�F)	rAr�r�rr�r�r�rNrhr�r(r(r)�
startTagHr�sz)getPhases.<locals>.InBodyPhase.startTagHrcSs6|j�dddd��|�tdd|d|dd��dS)	Nzunexpected-start-tag-treated-as�image�img��originalName�newNameryrr��rpr�)rNr�r�rr�r(r(r)�
startTagImage�s�
�z,getPhases.<locals>.InBodyPhase.startTagImagecSs|j�dddi�|jjrdSi}d|dvr|dd|d<|�tdd|d��|�td	d��|�td
d��d|dvrF|dd}nd}|�td
|d��|d��}d|vr_|d=d|vrf|d=d|d<|�tdd||dd��|�	td
��|�td	d��|�	td��dS)Nzdeprecated-tagrC�isindex�actionrr�ry)rp�hr�label�promptz3This is a searchable index. Enter search keywords: rw�r2r�inputr�r�)
rNr�rAr�r�rr�r�copyr�)rFr��
form_attrsr�rpr(r(r)�startTagIsIndex�s<
��
�z.getPhases.<locals>.InBodyPhase.startTagIsIndexcSs0|j�|�|jjj|jj_|j|_d|j_dSr�)	rAr�rNrRr_r`r�r�rhr�r(r(r)�startTagTextarea�sz/getPhases.<locals>.InBodyPhase.startTagTextareacSsd|j_|�|�dSr�)rNrh�startTagRawtextr�r(r(r)�startTagIFrame�sz-getPhases.<locals>.InBodyPhase.startTagIFramecSs$|jjr|�|�dS|�|�dSr-)rNrPr�r+r�r(r(r)rH�sz/getPhases.<locals>.InBodyPhase.startTagNoscriptcSs|j�|d�dS)z8iframe, noembed noframes, noscript(if scripting enabled)r�NrCr�r(r(r)r��rFz.getPhases.<locals>.InBodyPhase.startTagRawtextcSs@|jjdjdkr|jj�td��|j��|jj�|�dS�Nr~�option)	rAr�rCrNrcr�rr�r�r�r(r(r)�startTagOpt�s
z*getPhases.<locals>.InBodyPhase.startTagOptcSs�|j��|j�|�d|j_|jj|jjd|jjd|jjd|jjd|jjd|jjdfvr=|jjd|j_dS|jjd	|j_dS)
NFr�r�r�r�r�r��inSelectInTabler�)rAr�r�rNrhrcrKr�r(r(r)�startTagSelect�s





�z-getPhases.<locals>.InBodyPhase.startTagSelectcSsB|j�d�r|j��|jjdjdkr|j��|j�|�dS)N�rubyr~)rAr��generateImpliedEndTagsr�rCrNr�r�r�r(r(r)�startTagRpRt�s


z+getPhases.<locals>.InBodyPhase.startTagRpRtcS�^|j��|j�|�|j�|�td|d<|j�|�|dr-|jj��d|d<dSdS)Nrmror�Tr�)	rAr�rNrrrr�r�r�r�r(r(r)�startTagMath��
�z+getPhases.<locals>.InBodyPhase.startTagMathcSr�)Nr�ror�Tr�)	rAr�rNrrrr�r�r�r�r(r(r)�startTagSvgr�z*getPhases.<locals>.InBodyPhase.startTagSvgcSs|j�dd|di�dS)a5 Elements that should be children of other elements that have a
            different insertion mode; here they are ignored
            "caption", "col", "colgroup", "frame", "frameset", "head",
            "option", "optgroup", "tbody", "td", "tfoot", "th", "thead",
            "tr", "noscript"
            zunexpected-start-tag-ignoredrCNr�r�r(r(r)�startTagMisplacedsz0getPhases.<locals>.InBodyPhase.startTagMisplacedcSs|j��|j�|�dSr-)rAr�r�r�r(r(r)r+s
z,getPhases.<locals>.InBodyPhase.startTagOthercSs�|jjddd�s#|�tdd��|j�dddi�|�tdd��dS|j�d�|jjdj	dkr;|j�dddi�|jj�
�}|j	dkrS|jj�
�}|j	dksFdSdS)	Nr'r�r�ryrSrCrzr~)rAr�r�rrNr�r�r�r�rCr�rNr(r(r)r�s
�z&getPhases.<locals>.InBodyPhase.endTagPcSs~|j�d�s
|j��dS|jjdjdkr5|jjdd�D]}|jtd�vr4|j�dd|jd��nq|jjd|j_dS)Nr�r~�)r|r}r~�optgroupr�r'�rp�rtr�r�r�r�r�r�r�r��$expected-one-end-tag-but-got-another��gotName�expectedName�	afterBody)	rAr�rNr�r�rCr�rKrcrNr(r(r)�
endTagBody)s

��
z)getPhases.<locals>.InBodyPhase.endTagBodycSs"|j�d�r|�td��|SdS)Nr�)rAr�r�rr�r(r(r)�
endTagHtml;s�z)getPhases.<locals>.InBodyPhase.endTagHtmlcSs�|ddkr
|j|_|j�|d�}|r|j��|jjdj|dkr/|j�dd|di�|rM|jj�	�}|j|dkrO|jj�	�}|j|dks>dSdSdS)NrCr�r~�end-tag-too-early)
rrr�rAr�r�r�rCrNr�r�)rFr��inScoper�r(r(r)�endTagBlockAs
��z*getPhases.<locals>.InBodyPhase.endTagBlockcSsx|jj}d|j_|dus|j�|�s|j�dddi�dS|j��|jjd|kr3|j�dddi�|jj�|�dS)NrSrCr�r~zend-tag-too-early-ignored)rAr�r�rNr�r�r�rnrNr(r(r)�
endTagFormOs�
�z)getPhases.<locals>.InBodyPhase.endTagFormcSs�|ddkr	d}nd}|jj|d|d�s"|j�dd|di�dS|jj|dd�|jjdj|dkrA|j�dd|di�|jj��}|j|dkr]|jj��}|j|dksNdSdS)	NrCr~�listr�rS��excluder~r�)rAr�rNr�r�r�rCr�)rFr�r�r�r(r(r)�endTagListItem\s
��z-getPhases.<locals>.InBodyPhase.endTagListItemcSs�tD]}|j�|�r|j��nq|jjdj|dkr(|j�dd|di�tD]!}|j�|�rK|jj��}|jtvrH|jj��}|jtvs=dSq*dS)Nr~rCr�)	rrAr�r�r�rCrNr�r�)rFr��itemr(r(r)�
endTagHeadingms 
�

���z,getPhases.<locals>.InBodyPhase.endTagHeadingcSsd}|dk�r�|d7}|j�|d�}|r"||jjvr)|j�|j�s)|�|�dS||jjvrC|j�dd|di�|jj�	|�dS|j�|j�sW|j�dd|di�dS||jjdkrj|j�d	d|di�|jj�
|�}d}|jj|d�D]}|jtvr�|}nq{|dur�|jj�
�}||kr�|jj�
�}||ks�|jj�	|�dS|jj|d}|jj�
|�}|}	}
d}|jj�
|
�}|d
k�r(|d7}|d8}|jj|}
|
|jjvr�|jj�	|
�q�|
|kr�n>|	|kr�|jj�
|
�d}|
��}
|
|jj|jj�
|
�<|
|jj|jj�
|
�<|
}
|	j�r|	j�|	�|
�|	�|
}	|d
ks�|	j�r2|	j�|	�|jtd�v�rH|j��\}}|�|	|�n|�|	�|��}
|�|
�|�|
�|jj�	|�|jj�||
�|jj�	|�|jj�|jj�
|�d|
�|dksdSdS)z)The much-feared adoption agency algorithmr�rrCNzadoption-agency-1.2zadoption-agency-4.4r~zadoption-agency-1.3rx�r�r�r�r�r�)rAr�r�r�rCr.rNr�ryrn�indexr�rr��	cloneNoder�r��appendChildr��getTableMisnestedNodePosition�insertBefore�reparentChildren�insert)rFr��outerLoopCounter�formattingElement�afeIndex�
furthestBlockrs�commonAncestor�bookmark�lastNoder��innerLoopCounterr��cloner�r�r(r(r)r�|s�

��

��
����
�"


���z/getPhases.<locals>.InBodyPhase.endTagFormattingcSs�|j�|d�r
|j��|jjdj|dkr#|j�dd|di�|j�|d�rL|jj��}|j|dkrE|jj��}|j|dks8|j��dSdS)NrCr~r�)	rAr�r�r�rCrNr�r��clearActiveFormattingElements)rFr�rsr(r(r)�endTagAppletMarqueeObjects
��z8getPhases.<locals>.InBodyPhase.endTagAppletMarqueeObjectcSs@|j�dddd��|j��|j�tdd��|jj��dS)Nzunexpected-end-tag-treated-asrz
br elementr�ry)rNr�rAr�r�rr�r�r�r(r(r)ri+s�
z'getPhases.<locals>.InBodyPhase.endTagBrcSs�|jjddd�D]O}|j|dkrE|jj|dd�|jjdj|dkr1|j�dd|di�|jj��|krB	|jj��|ks9dS|jtvrX|j�dd|di�dSq	dS)Nr~rCr�rS)	rAr�rCr�rNr�r�r�rrNr(r(r)r.2s�
��z*getPhases.<locals>.InBodyPhase.endTagOtherr�)	r[r\r]r^r_r4rZrXrVr�r�)r��article�aside�
blockquote�center�details�dirr*�dl�fieldset�
figcaption�figure�footer�header�hgroup�main�menu�nav�olr'�section�summary�ul)r�r�r�)r~r|r}rXr�)�b�big�code�em�font�i�s�small�strike�strong�tt�ur�r�)�applet�marquee�object�xmpr�)�arear�embedr��keygen�wbr)�param�source�trackr�r�r�r�r��iframerY)�noembedrWr�)r�r�)r�r��mathr�)r��colr��framer�r�r�r�r�r�r�)r�rrrr�rr�dialogr	r*r
rrr
rrrr�rrrrr�rrrr')r|r}r~)r�rrrrrrr�rrr r!r"r#r)?r<r=r>rrMrwr{r�r�r�rrr�rkrmr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rHr�r�r�r�r�r�r�r+r�r�r�r�r�r�r�r�rrir.rr0r�rr�r1r��
__classcell__r()rtr�r�r)rt�s*

	

	

$��������
������������������� �!�"�#�$�%�&�'�(�)��-���rtc@s`eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	e
�g�Zee_
e
�defg�Ze	e_
dS)
zgetPhases.<locals>.TextPhasecSr�r�r�r�r(r(r)r��r�z.getPhases.<locals>.TextPhase.processCharacterscSs8|j�dd|jjdji�|jj��|jj|j_dS)Nz&expected-named-closing-tag-but-got-eofrCr~T)rNr�rAr�rCr�r�rcrEr(r(r)r��s�z'getPhases.<locals>.TextPhase.processEOFcSsJd|d��)NFz4Tried to process start tag %s in RCDATA/RAWTEXT moderCr(r�r(r(r)r+�rvz*getPhases.<locals>.TextPhase.startTagOthercSs*|jj��}|jdks
J�|jj|j_dS)NrZ)rAr�r�rCrNr�rcrNr(r(r)�endTagScript�sz)getPhases.<locals>.TextPhase.endTagScriptcSs|jj��|jj|j_dSr-)rAr�r�rNr�rcr�r(r(r)r.��z(getPhases.<locals>.TextPhase.endTagOtherrZN)r<r=r>rrr�r�r+r7r.rr0r�r1r�r(r(r(r)�	TextPhase�s
�
r9c
seZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Ze�d%�jfd&e
fd'efd(efd)e
fd*efd+efd,efd-efd.efg
�Zee_e�d+efd/efg�Zee_d0S)1zgetPhases.<locals>.InTablePhasecSs8|jjdjdvr|jj��|jjdjdvs	dSdS)Nr~)r�r�)rAr�rCr�rEr(r(r)�clearStackToTableContext�s�z8getPhases.<locals>.InTablePhase.clearStackToTableContextcS�2|jjdjdkr|j�d�dS|jjsJ�dS)Nr~r�zeof-in-table�rAr�rCrNr�rVrEr(r(r)r���z*getPhases.<locals>.InTablePhase.processEOFcS�4|jj}|jjd|j_||jj_|jj�|�dS�N�inTableText)rNrcrKr�r��rFr�r�r(r(r)r���
z6getPhases.<locals>.InTablePhase.processSpaceCharacterscSr>r?)rNrcrKr�r�rAr(r(r)r��rBz1getPhases.<locals>.InTablePhase.processCharacterscSs&d|j_|jjd�|�d|j_dS)NTr�F)rA�insertFromTablerNrKr�r�r(r(r)r��sz*getPhases.<locals>.InTablePhase.insertTextcSs6|��|jj�t�|j�|�|jjd|j_dS)Nr�)	r:rAryr�rr�rNrKrcr�r(r(r)�startTagCaption�sz/getPhases.<locals>.InTablePhase.startTagCaptioncS�(|��|j�|�|jjd|j_dS)Nr��r:rAr�rNrKrcr�r(r(r)�startTagColgroup�rlz0getPhases.<locals>.InTablePhase.startTagColgroupcSr#)Nr�ry)rGrr�r(r(r)�startTagCol�r"z+getPhases.<locals>.InTablePhase.startTagColcSrE�Nr�rFr�r(r(r)�startTagRowGroup�rlz0getPhases.<locals>.InTablePhase.startTagRowGroupcSr#)Nr�ry)rJrr�r(r(r)�startTagImplyTbody�r"z2getPhases.<locals>.InTablePhase.startTagImplyTbodycSs6|j�dddd��|jj�td��|jjs|SdS)Nr�r�r�)rNr�rcr�rrVr�r(r(r)r��s��z-getPhases.<locals>.InTablePhase.startTagTablecSr%rar'r�r(r(r)�startTagStyleScript�r(z3getPhases.<locals>.InTablePhase.startTagStyleScriptcSsXd|dvr%|dd�t�dkr%|j�d�|j�|�|jj��dS|�|�dS)Nr2rr�z unexpected-hidden-input-in-table)	rqrrNr�rAr�r�r�r+r�r(r(r)r��sz-getPhases.<locals>.InTablePhase.startTagInputcSsH|j�d�|jjdur"|j�|�|jjd|j_|jj��dSdS)Nzunexpected-form-in-tabler~)rNr�rAr�r�r�r�r�r(r(r)r��s�z,getPhases.<locals>.InTablePhase.startTagFormcS�<|j�dd|di�d|j_|jjd�|�d|j_dS)Nz)unexpected-start-tag-implies-table-voodoorCTr�F)rNr�rArCrKr�r�r(r(r)r+��z-getPhases.<locals>.InTablePhase.startTagOthercSs�|jjddd�rJ|j��|jjdjdkr%|j�dd|jjdjd��|jjdjdkr=|jj��|jjdjdks.|jj��|j��dS|jj	sPJ�|j��dS)Nr�r�r~zend-tag-too-early-namedr�)
rAr�r�r�rCrNr�r�rerVr�r(r(r)�endTagTables
���z+getPhases.<locals>.InTablePhase.endTagTablecSr-rRr�r�r(r(r)�endTagIgnorerTz,getPhases.<locals>.InTablePhase.endTagIgnorecSrM)Nz'unexpected-end-tag-implies-table-voodoorCTr�F)rNr�rArCrKr�r�r(r(r)r.rNz+getPhases.<locals>.InTablePhase.endTagOtherr�r�r�r2�r�r�r�)r�r�r�r�)rXrZr�r�)r�r�r2r�r�r�r�r�r�r�r�N)r<r=r>rrr:r�r�r�r�rDrGrHrJrKr�rLr�r�r+rOrPr.rr0r�r�r1r�r(�rr(r)�InTablePhase�sP	
���
rScsZeZdZdZ��fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Z�ZS)z#getPhases.<locals>.InTableTextPhase)r��characterTokenscs&t�|�j|i|��d|_g|_dSr-)rqrMr�rTrs)�InTableTextPhaser�r(r)rM6s
z,getPhases.<locals>.InTableTextPhase.__init__cSsdd�dd�|jD��}tdd�|D��r%td|d�}|jjd�|�n|r-|j�|�g|_dS)Nr
cSsg|]}|d�qS)rr(�rBr�r(r(r)r�<�zGgetPhases.<locals>.InTableTextPhase.flushCharacters.<locals>.<listcomp>cSr�r(r�rVr(r(r)r�=rWrwr�r�)�joinrTr�rrNrKr�rA)rFrr�r(r(r)�flushCharacters;s
z3getPhases.<locals>.InTableTextPhase.flushCharacterscS�|��|j|j_|Sr-�rYr�rNrcr�r(r(r)r�D�
z2getPhases.<locals>.InTableTextPhase.processCommentcSs|��|j|j_dSrr[rEr(r(r)r�Ir\z.getPhases.<locals>.InTableTextPhase.processEOFcSs |ddkrdS|j�|�dS�Nrr��rTr�r�r(r(r)r�Nsz5getPhases.<locals>.InTableTextPhase.processCharacterscS�|j�|�dSr-r^r�r(r(r)r�Ssz:getPhases.<locals>.InTableTextPhase.processSpaceCharacterscSrZr-r[r�r(r(r)r�Xr\z3getPhases.<locals>.InTableTextPhase.processStartTagcSrZr-r[r�r(r(r)r�]r\z1getPhases.<locals>.InTableTextPhase.processEndTag)
r<r=r>rrMrYr�r�r�r�r�r�r5r()rUr6r)rU3s	rUc�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
e�d�jfdefg�Ze	e_e�de
fdefdefg�Ze
e_dS)z!getPhases.<locals>.InCaptionPhasecS�|jjddd�S)Nr�r�r��rAr�rEr(r(r)�ignoreEndTagCaptionfr(z5getPhases.<locals>.InCaptionPhase.ignoreEndTagCaptioncS�|jjd��dSr&�rNrKr�rEr(r(r)r�ir�z,getPhases.<locals>.InCaptionPhase.processEOFcSr%r&�rNrKr�r�r(r(r)r�lr(z3getPhases.<locals>.InCaptionPhase.processCharacterscS�0|j��|��}|jj�td��|s|SdS�Nr��rNr�rcrcr�r�rFr��ignoreEndTagr(r(r)�startTagTableElementos
�z6getPhases.<locals>.InCaptionPhase.startTagTableElementcSr%r&r'r�r(r(r)r+wr(z/getPhases.<locals>.InCaptionPhase.startTagOthercSs�|��sN|j��|jjdjdkr!|j�dd|jjdjd��|jjdjdkr9|jj��|jjdjdks*|jj��|j��|jj	d|j_
dS|jjsTJ�|j��dS)Nr~r�r�r�r�)rcrAr�r�rCrNr�r�rrKrcrVr�r(r(r)�
endTagCaptionzs 
���
z/getPhases.<locals>.InCaptionPhase.endTagCaptioncSrgrhrirjr(r(r)rO�s
�z-getPhases.<locals>.InCaptionPhase.endTagTablecSr-rRr�r�r(r(r)rP�rTz.getPhases.<locals>.InCaptionPhase.endTagIgnorecSr%r&�rNrKr�r�r(r(r)r.�r(z-getPhases.<locals>.InCaptionPhase.endTagOtherr��	r�r2r�r�r�r�r�r�r�r�r�)
r�r2r�r�r�r�r�r�r�r�N)r<r=r>rrrcr�r�rlr+rmrOrPr.rr0r�r�r1r�r(rRr(r)�InCaptionPhasebs4����
rpcs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
�d�jfdefg�Ze	e_e
�de
fdefg�Zee_dS)z%getPhases.<locals>.InColumnGroupPhasecSs|jjdjdkS)Nr~r�)rAr�rCrEr(r(r)�ignoreEndTagColgroup�r(z:getPhases.<locals>.InColumnGroupPhase.ignoreEndTagColgroupcSsD|jjdjdkr|jjsJ�dS|��}|�td��|s dSdS)Nr~r�r�T)rAr�rCrNrVrq�endTagColgroupr)rFrkr(r(r)r��s�z0getPhases.<locals>.InColumnGroupPhase.processEOFcS�"|��}|�td��|s|SdS�Nr��rqrrrrjr(r(r)r���
�z7getPhases.<locals>.InColumnGroupPhase.processCharacterscSr4r5r6r�r(r(r)rH�r8z1getPhases.<locals>.InColumnGroupPhase.startTagColcSrsrtrurjr(r(r)r+�rvz3getPhases.<locals>.InColumnGroupPhase.startTagOthercSsB|��r|jjs
J�|j��dS|jj��|jjd|j_dS�Nr�)	rqrNrVr�rAr�r�rKrcr�r(r(r)rr�s
z4getPhases.<locals>.InColumnGroupPhase.endTagColgroupcSs|j�dddi�dS)Nz
no-end-tagrCr2r�r�r(r(r)�	endTagCol�rz/getPhases.<locals>.InColumnGroupPhase.endTagColcSrsrtrurjr(r(r)r.�rvz1getPhases.<locals>.InColumnGroupPhase.endTagOtherr�r2r�N)r<r=r>rrrqr�r�rHr+rrrxr.rr0r�r�r1r�r(rRr(r)�InColumnGroupPhase�s(
	��
rycs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Ze�d�jfde	fde
fdefg�Zee_e�de
fdefdefg�Zee_d S)!z#getPhases.<locals>.InTableBodyPhasecSsV|jjdjdvr|jj��|jjdjdvs	|jjdjdkr'|jjs)J�dSdS)Nr~)r�r�r�r�r�)rAr�rCr�rNrVrEr(r(r)�clearStackToTableBodyContext�s��z@getPhases.<locals>.InTableBodyPhase.clearStackToTableBodyContextcSrdrwrerEr(r(r)r��r�z.getPhases.<locals>.InTableBodyPhase.processEOFcSr%rwrbr�r(r(r)r��r(z:getPhases.<locals>.InTableBodyPhase.processSpaceCharacterscSr%rwrfr�r(r(r)r��r(z5getPhases.<locals>.InTableBodyPhase.processCharacterscSrE)Nr�)rzrAr�rNrKrcr�r(r(r)�
startTagTrrlz.getPhases.<locals>.InTableBodyPhase.startTagTrcSs*|j�dd|di�|�tdd��|S)Nzunexpected-cell-in-table-bodyrCr�ry)rNr�r{rr�r(r(r)�startTagTableCell�

�z5getPhases.<locals>.InTableBodyPhase.startTagTableCellcS�n|jjddd�s|jjddd�s|jjddd�r*|��|�t|jjdj��|S|jjs0J�|j�	�dS�Nr�r�r�r�r�r~�
rAr�rz�endTagTableRowGrouprr�rCrNrVr�r�r(r(r)�startTagTableOthers���z6getPhases.<locals>.InTableBodyPhase.startTagTableOthercSr%rwr'r�r(r(r)r+r(z1getPhases.<locals>.InTableBodyPhase.startTagOthercSsV|jj|ddd�r|��|jj��|jjd|j_dS|j�dd|di�dS)NrCr�r�r�� unexpected-end-tag-in-table-body)	rAr�rzr�r�rNrKrcr�r�r(r(r)r�s
�z7getPhases.<locals>.InTableBodyPhase.endTagTableRowGroupcSr~rr�r�r(r(r)rO%s���z/getPhases.<locals>.InTableBodyPhase.endTagTablecSr-)Nr�rCr�r�r(r(r)rP2r/z0getPhases.<locals>.InTableBodyPhase.endTagIgnorecSr%rwrnr�r(r(r)r.6r(z/getPhases.<locals>.InTableBodyPhase.endTagOtherr�r��r�r�)r�r2r�r�r�r�rQr�)r�r�r2r�r�r�r�r�N)r<r=r>rrrzr�r�r�r{r|r�r+r�rOrPr.rr0r�r�r1r�r(rRr(r)�InTableBodyPhase�s>
	
����
r�cs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Ze�d�jfde
fdefg�Zee_e�de
fdefd efd!efg�Zee_d"S)#zgetPhases.<locals>.InRowPhasecSsT|jjdjdvr(|j�dd|jjdji�|jj��|jjdjdvs	dSdS)Nr~)r�r�z'unexpected-implied-end-tag-in-table-rowrC)rAr�rCrNr�r�rEr(r(r)�clearStackToTableRowContextOs��z9getPhases.<locals>.InRowPhase.clearStackToTableRowContextcSra)Nr�r�r�rbrEr(r(r)�ignoreEndTagTrUr(z,getPhases.<locals>.InRowPhase.ignoreEndTagTrcSrdrwrerEr(r(r)r�Yr�z(getPhases.<locals>.InRowPhase.processEOFcSr%rwrbr�r(r(r)r�\r(z4getPhases.<locals>.InRowPhase.processSpaceCharacterscSr%rwrfr�r(r(r)r�_r(z/getPhases.<locals>.InRowPhase.processCharacterscSs6|��|j�|�|jjd|j_|jj�t�dS)Nr�)	r�rAr�rNrKrcryr�rr�r(r(r)r|bsz/getPhases.<locals>.InRowPhase.startTagTableCellcSrs�Nr��r��endTagTrrrjr(r(r)r�hs
�z0getPhases.<locals>.InRowPhase.startTagTableOthercSr%rwr'r�r(r(r)r+or(z+getPhases.<locals>.InRowPhase.startTagOthercSsJ|��s|��|jj��|jjd|j_dS|jjsJ�|j�	�dSrI)
r�r�rAr�r�rNrKrcrVr�r�r(r(r)r�rsz&getPhases.<locals>.InRowPhase.endTagTrcSrsr�r�rjr(r(r)rO|s
�z)getPhases.<locals>.InRowPhase.endTagTablecSs4|jj|ddd�r|�td��|S|j��dS)NrCr�r�r�)rAr�r�rrNr�r�r(r(r)r��sz1getPhases.<locals>.InRowPhase.endTagTableRowGroupcSr-)Nzunexpected-end-tag-in-table-rowrCr�r�r(r(r)rP�r/z*getPhases.<locals>.InRowPhase.endTagIgnorecSr%rwrnr�r(r(r)r.�r(z)getPhases.<locals>.InRowPhase.endTagOtherr�r�)r�r2r�r�r�r�r�r�r�rQ)r�r�r2r�r�r�r�N)r<r=r>rrr�r�r�r�r�r|r�r+r�rOr�rPr.rr0r�r�r1r�r(rRr(r)�
InRowPhaseJs@
����
r�cr`)zgetPhases.<locals>.InCellPhasecSsH|jjddd�r|�td��dS|jjddd�r"|�td��dSdS�Nr�r�r�r�)rAr��endTagTableCellrrEr(r(r)�	closeCell�s
�z(getPhases.<locals>.InCellPhase.closeCellcSrdr&rerEr(r(r)r��r�z)getPhases.<locals>.InCellPhase.processEOFcSr%r&rfr�r(r(r)r��r(z0getPhases.<locals>.InCellPhase.processCharacterscSsF|jjddd�s|jjddd�r|��|S|jjsJ�|j��dSr�)rAr�r�rNrVr�r�r(r(r)r��s�z1getPhases.<locals>.InCellPhase.startTagTableOthercSr%r&r'r�r(r(r)r+�r(z,getPhases.<locals>.InCellPhase.startTagOthercSs�|jj|ddd�rN|j�|d�|jjdj|dkr9|j�dd|di�	|jj��}|j|dkr7nq)n|jj��|j��|jj	d|j_
dS|j�dd|di�dS)	NrCr�r�r~zunexpected-cell-end-tagTr�rS)rAr�r�r�rCrNr�r�rrKrcrNr(r(r)r��s 
��
z.getPhases.<locals>.InCellPhase.endTagTableCellcSr-rRr�r�r(r(r)rP�rTz+getPhases.<locals>.InCellPhase.endTagIgnorecSs.|jj|ddd�r|��|S|j��dS)NrCr�r�)rAr�r�rNr�r�r(r(r)�endTagImply�sz*getPhases.<locals>.InCellPhase.endTagImplycSr%r&rnr�r(r(r)r.�r(z*getPhases.<locals>.InCellPhase.endTagOtherr�ror�)r�r�r2r�r�r�N)r<r=r>rrr�r�r�r�r+r�rPr�r.rr0r�r�r1r�r(rRr(r)�InCellPhase�s0
���
r�c	s�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Ze�d�jfdefdefde	fde
fdefg�Zee_e�de
fdefdefg�Zee_dS) z getPhases.<locals>.InSelectPhasecSr;)Nr~r�z
eof-in-selectr<rEr(r(r)r��r=z+getPhases.<locals>.InSelectPhase.processEOFcSs$|ddkrdS|j�|d�dSr]r�r�r(r(r)r��sz2getPhases.<locals>.InSelectPhase.processCharacterscSs.|jjdjdkr|jj��|j�|�dSr��rAr�rCr�r�r�r(r(r)�startTagOption�sz/getPhases.<locals>.InSelectPhase.startTagOptioncSsL|jjdjdkr|jj��|jjdjdkr|jj��|j�|�dS)Nr~r�r�r�r�r(r(r)�startTagOptgroup	s
z1getPhases.<locals>.InSelectPhase.startTagOptgroupcSs|j�d�|�td��dS)Nzunexpected-select-in-selectr�)rNr��endTagSelectrr�r(r(r)r�	sz/getPhases.<locals>.InSelectPhase.startTagSelectcSs>|j�d�|jjddd�r|�td��|S|jjsJ�dS)Nzunexpected-input-in-selectr�r�)rNr�rAr�r�rrVr�r(r(r)r�	s
z.getPhases.<locals>.InSelectPhase.startTagInputcSr%rar'r�r(r(r)rJ	r(z/getPhases.<locals>.InSelectPhase.startTagScriptcSr-)Nzunexpected-start-tag-in-selectrCr�r�r(r(r)r+	r/z.getPhases.<locals>.InSelectPhase.startTagOthercSs8|jjdjdkr|jj��dS|j�dddi�dS)Nr~r��unexpected-end-tag-in-selectrC�rAr�rCr�rNr�r�r(r(r)�endTagOption	s
�z-getPhases.<locals>.InSelectPhase.endTagOptioncSsh|jjdjdkr|jjdjdkr|jj��|jjdjdkr)|jj��dS|j�dddi�dS)Nr~r����r�r�rCr�r�r(r(r)�endTagOptgroup%	s�z/getPhases.<locals>.InSelectPhase.endTagOptgroupcSsd|jjddd�r%|jj��}|jdkr|jj��}|jdks|j��dS|jjs+J�|j��dS)Nr�r�)	rAr�r�r�rCrNrerVr�rNr(r(r)r�2	s

�z-getPhases.<locals>.InSelectPhase.endTagSelectcSr-)Nr�rCr�r�r(r(r)r.=	r/z,getPhases.<locals>.InSelectPhase.endTagOtherr�r�r�r�)r�r*r�rZN)r<r=r>rrr�r�r�r�r�r�rJr+r�r�r�r.rr0r�r�r1r�r(rRr(r)�
InSelectPhase�s:
��
r�c@sneZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
e�d
efg�Z
ee
_e�d
e	fg�Ze
e_dS)z'getPhases.<locals>.InSelectInTablePhasecSrd�Nr�rerEr(r(r)r�U	r�z2getPhases.<locals>.InSelectInTablePhase.processEOFcSr%r�rfr�r(r(r)r�X	r(z9getPhases.<locals>.InSelectInTablePhase.processCharacterscSs(|j�dd|di�|�td��|S)Nz5unexpected-table-element-start-tag-in-select-in-tablerCr�)rNr�r.rr�r(r(r)r�[	sz5getPhases.<locals>.InSelectInTablePhase.startTagTablecSr%r�r'r�r(r(r)r+`	r(z5getPhases.<locals>.InSelectInTablePhase.startTagOthercSs@|j�dd|di�|jj|ddd�r|�td��|SdS)Nz3unexpected-table-element-end-tag-in-select-in-tablerCr�r�r�)rNr�rAr�r.rr�r(r(r)rOc	s
�z3getPhases.<locals>.InSelectInTablePhase.endTagTablecSr%r�rnr�r(r(r)r.i	r(z3getPhases.<locals>.InSelectInTablePhase.endTagOther)r�r�r�r�r�r�r�r�N)r<r=r>rrr�r�r�r+rOr.rr0r�r1r�r(r(r(r)�InSelectInTablePhaseR	s(����
r�csBeZdZe�Zegd��Zdd�Z�fdd�Zdd�Z	dd	�Z
d
S)z(getPhases.<locals>.InForeignContentPhase),rrrr�rrrr|r*r
r}rr)�h1�h2�h3�h4�h5�h6r�r�rr�r~r�rr4r�rr'r�r�rr�spanr!r �sub�supr�r"r#r�varcSsidd�dd�dd�dd�d	d
�dd�d
d�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�id#d$�d%d&�d'd(�d)d*�d+d,�d-d.�d/d0�d1d2�d3d4�d5d6�d7d8�d9d:�d;d<�d=d>�d?d@�dAdB�dCdD��dEdFdG��}|dH|vr||dH|dH<dSdS)IN�altglyph�altGlyph�altglyphdef�altGlyphDef�altglyphitem�altGlyphItem�animatecolor�animateColor�
animatemotion�
animateMotion�animatetransform�animateTransform�clippath�clipPath�feblend�feBlend�
fecolormatrix�
feColorMatrix�fecomponenttransfer�feComponentTransfer�fecomposite�feComposite�feconvolvematrix�feConvolveMatrix�fediffuselighting�feDiffuseLighting�fedisplacementmap�feDisplacementMap�fedistantlight�feDistantLight�feflood�feFlood�fefunca�feFuncA�fefuncb�feFuncB�fefuncg�feFuncG�fefuncr�feFuncR�fegaussianblur�feGaussianBlur�feimage�feImage�femerge�feMerge�femergenode�feMergeNode�femorphology�feMorphology�feoffset�feOffset�fepointlight�fePointLight�fespecularlighting�feSpecularLighting�fespotlight�feSpotLight�fetile�feTile�feturbulence�feTurbulence�
foreignobject�
foreignObject�glyphref�glyphRef�lineargradient�linearGradient�radialGradient�textPath)�radialgradient�textpathrCr()rFr��replacementsr(r(r)�adjustSVGTagNames�	s���������	�
���
������������������� �!�"�%�z:getPhases.<locals>.InForeignContentPhase.adjustSVGTagNamescsL|ddkrd|d<n|jjrtdd�|dD��rd|j_��||�dS)Nrr�u�css�|]}|tvVqdSr-r�r�r(r(r)�	<genexpr>�	s�zMgetPhases.<locals>.InForeignContentPhase.processCharacters.<locals>.<genexpr>F)rNrhr�r�r�rRr(r)r��	s
�z:getPhases.<locals>.InForeignContentPhase.processCharacterscSsf|jjd}|d|jvs|ddkrpt|d���hd�@rp|j�dd|di�|jjdj|jjkrn|j�	|jjd�sn|j�
|jjd�sn|jj��|jjdj|jjkrn|j�	|jjd�sn|j�
|jjd�rI|S|jtdkr~|j�
|�n|jtdkr�|�|�|j�|�|j�|�|j|d	<|j�|�|d
r�|jj��d|d<dSdS)
Nr~rCrr>�face�size�colorz*unexpected-html-element-in-foreign-contentrmr�ror�Tr�)rAr��breakoutElements�set�keysrNr�ror�rtrur�rrr�rrr�)rFr�r�r(r(r)r��	sH�
��������

�z8getPhases.<locals>.InForeignContentPhase.processStartTagcSs�t|jj�d}|jjd}|j�t�|dkr#|j�dd|di�	|j�t�|dkr`|jj|jj	dkrE|jj�
�|jjj|j_|jj��|kr[|jjsSJ�|jj��|ksMd}	|S|d8}|jj|}|j
|jjkrrq#|jj�|�}	|S)Nrr~rCrSTr@)r�rAr�rCrqrrNr�rcrKrYr�r�ror�r�)rFr��	nodeIndexr�r�r(r(r)r��	s,�	�z6getPhases.<locals>.InForeignContentPhase.processEndTagN)r<r=r>rrr�r�r�r�r�r�r(rRr(r)�InForeignContentPhasex	s	)r�c@sveZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Ze�
defg�Ze	e_e�
de
fg�Zee_dS)z!getPhases.<locals>.AfterBodyPhasecSrr-r(rEr(r(r)r��	�z,getPhases.<locals>.AfterBodyPhase.processEOFcSr�)Nrr�r�r(r(r)r��	r�z0getPhases.<locals>.AfterBodyPhase.processCommentcS� |j�d�|jjd|j_|S)Nzunexpected-char-after-bodyr��rNr�rKrcr�r(r(r)r��	�z3getPhases.<locals>.AfterBodyPhase.processCharacterscSr%r&r'r�r(r(r)r��	r(z.getPhases.<locals>.AfterBodyPhase.startTagHtmlcS�*|j�dd|di�|jjd|j_|S)Nzunexpected-start-tag-after-bodyrCr�r�r�r(r(r)r+�	r}z/getPhases.<locals>.AfterBodyPhase.startTagOthercSs,|jjr|j�d�dS|jjd|j_dS)Nz'unexpected-end-tag-after-body-innerhtml�afterAfterBody)rNrVr�rKrc)rFrCr(r(r)r�
sz,getPhases.<locals>.AfterBodyPhase.endTagHtmlcSr�)Nzunexpected-end-tag-after-bodyrCr�r�r�r(r(r)r.

r}z-getPhases.<locals>.AfterBodyPhase.endTagOtherr�N)r<r=r>rrr�r�r�r�r+r�r.rr0r�r1r�r(r(r(r)�AfterBodyPhase�	s�
rcs�eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
�d�jfdefdefde	fg�Ze
e_e
�defg�Zee_dS)z"getPhases.<locals>.InFramesetPhasecSr;)Nr~r�zeof-in-framesetr<rEr(r(r)r�
r=z-getPhases.<locals>.InFramesetPhase.processEOFcSr�)Nzunexpected-char-in-framesetr�r�r(r(r)r�"
rvz4getPhases.<locals>.InFramesetPhase.processCharacterscSr_r-)rAr�r�r(r(r)rm%
rvz3getPhases.<locals>.InFramesetPhase.startTagFramesetcSs|j�|�|jj��dSr-r6r�r(r(r)�
startTagFrame(
r8z0getPhases.<locals>.InFramesetPhase.startTagFramecSr%r&r'r�r(r(r)�startTagNoframes,
r(z3getPhases.<locals>.InFramesetPhase.startTagNoframescSr-)Nz unexpected-start-tag-in-framesetrCr�r�r(r(r)r+/
r/z0getPhases.<locals>.InFramesetPhase.startTagOthercSsb|jjdjdkr|j�d�n|jj��|jjs-|jjdjdkr/|jjd|j_dSdSdS)Nr~r�z)unexpected-frameset-in-frameset-innerhtmlr��
afterFrameset)	rAr�rCrNr�r�rVrKrcr�r(r(r)�endTagFrameset3
s�z1getPhases.<locals>.InFramesetPhase.endTagFramesetcSr-)Nzunexpected-end-tag-in-framesetrCr�r�r(r(r)r.?
r/z.getPhases.<locals>.InFramesetPhase.endTagOtherr�r�r3rWN)r<r=r>rrr�r�rmrrr+rr.rr0r�r�r1r�r(rRr(r)�InFramesetPhase
s*��
rcsveZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
e�d
�j
fdefg�Zee_e�d
e	fg�Ze
e_dS)z%getPhases.<locals>.AfterFramesetPhasecSrr-r(rEr(r(r)r�T
r�z0getPhases.<locals>.AfterFramesetPhase.processEOFcSr�)Nzunexpected-char-after-framesetr�r�r(r(r)r�X
rvz7getPhases.<locals>.AfterFramesetPhase.processCharacterscSr%rar'r�r(r(r)r[
r(z6getPhases.<locals>.AfterFramesetPhase.startTagNoframescSr-)Nz#unexpected-start-tag-after-framesetrCr�r�r(r(r)r+^
r/z3getPhases.<locals>.AfterFramesetPhase.startTagOthercSs|jjd|j_dS)N�afterAfterFrameset)rNrKrcr�r(r(r)r�b
r�z0getPhases.<locals>.AfterFramesetPhase.endTagHtmlcSr-)Nz!unexpected-end-tag-after-framesetrCr�r�r(r(r)r.e
r/z1getPhases.<locals>.AfterFramesetPhase.endTagOtherr�rWN)r<r=r>rrr�r�rr+r�r.rr0r�r�r1r�r(rRr(r)�AfterFramesetPhaseP
s"��
rc@s`eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Ze�
de	fg�Ze
e_dS)z&getPhases.<locals>.AfterAfterBodyPhasecSrr-r(rEr(r(r)r�w
r�z1getPhases.<locals>.AfterAfterBodyPhase.processEOFcSrr-rr�r(r(r)r�z
rz5getPhases.<locals>.AfterAfterBodyPhase.processCommentcSr%r&rbr�r(r(r)r�}
r(z=getPhases.<locals>.AfterAfterBodyPhase.processSpaceCharacterscSr�)N�expected-eof-but-got-charr�r�r�r(r(r)r��
r�z8getPhases.<locals>.AfterAfterBodyPhase.processCharacterscSr%r&r'r�r(r(r)r��
r(z3getPhases.<locals>.AfterAfterBodyPhase.startTagHtmlcSr�)N�expected-eof-but-got-start-tagrCr�r�r�r(r(r)r+�
r}z4getPhases.<locals>.AfterAfterBodyPhase.startTagOthercSr�)N�expected-eof-but-got-end-tagrCr�r�r�r(r(r)r��
r}z4getPhases.<locals>.AfterAfterBodyPhase.processEndTagr�N)r<r=r>rrr�r�r�r�r�r+r�rr0r�r1r(r(r(r)�AfterAfterBodyPhaset
s�
rc@sneZdZe�Zdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Ze
�de	fde
fg�Zee_dS)z*getPhases.<locals>.AfterAfterFramesetPhasecSrr-r(rEr(r(r)r��
r�z5getPhases.<locals>.AfterAfterFramesetPhase.processEOFcSrr-rr�r(r(r)r��
rz9getPhases.<locals>.AfterAfterFramesetPhase.processCommentcSr%r&rbr�r(r(r)r��
r(zAgetPhases.<locals>.AfterAfterFramesetPhase.processSpaceCharacterscSr�)Nrr�r�r(r(r)r��
rvz<getPhases.<locals>.AfterAfterFramesetPhase.processCharacterscSr%r&r'r�r(r(r)r��
r(z7getPhases.<locals>.AfterAfterFramesetPhase.startTagHtmlcSr%rar'r�r(r(r)�startTagNoFrames�
r(z;getPhases.<locals>.AfterAfterFramesetPhase.startTagNoFramescSr-)Nr	rCr�r�r(r(r)r+�
r/z8getPhases.<locals>.AfterAfterFramesetPhase.startTagOthercSr-)Nr
rCr�r�r(r(r)r��
r/z8getPhases.<locals>.AfterAfterFramesetPhase.processEndTagr�rWN)r<r=r>rrr�r�r�r�r�rr+r�rr0r�r1r(r(r(r)�AfterAfterFramesetPhase�
s�
r
rZrYr�r)rGrLr�r�r�r@r�r�r�r�r�r�r�)r�r�r�rr�r)r)rLr\r�rrr2r`rjrpr9rSrpryr�r�r�r�r�r�rrrrr
r()rtrUrr)rJ�s�H%-f?BY!/F@bYLc&r.8$%%��������	�
���
������rJcsJt|d�t��@}|r#t|d��fdd�|d��D��|d<dSdS)Nrc3s$�|]
\}}��||�|fVqdSr-)r�)rB�k�v�r�r(r)r��
s��z$adjust_attributes.<locals>.<genexpr>)rr2r.)r�r��needs_adjustmentr(rr)r��
s
��r�rzFcCs|duri}t||||d�S)N)r2rCrr�)r)rCr2rpr�r(r(r)r�
s

�rc@seZdZdZdS)r}zError in parsed documentN)r<r=r>r�r(r(r(r)r}�
sr})rT)r*rT)rzNF),�
__future__rrr�pip._vendor.sixrrr0r
rr	r
�treebuilders.baserr�	constantsr
rrrrrrrrrrrr�rrrrr"r,r@r&r!�memoizerJr�r�	Exceptionr}r(r(r(r)�<module>sPH

8
_
�