o 7]h@sddlmZmZmZddlmZmZddlZddlm Z ddlm Z ddlm Z ddl m Z dd lmZdd lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z d d dZ!d!ddZ"ddZ#Gddde$Z%ej&ddZ'ddZ(  d"ddZ)Gddde*Z+dS)#)absolute_importdivisionunicode_literals)with_metaclassviewkeysN) _inputstream) _tokenizer) treebuilders)Marker)_utils)spaceCharactersasciiUpper2LowerspecialElementsheadingElements cdataElementsrcdataElements tokenTypes tagTokenTypes namespaceshtmlIntegrationPointElements"mathmlTextIntegrationPointElementsadjustForeignAttributesadjustMathMLAttributesadjustSVGAttributesE_ReparseExceptionetreeTcKs(t|}t||d}|j|fi|S)aParse 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('

This is a doc

') namespaceHTMLElements)r getTreeBuilder HTMLParserparse)doc treebuilderrkwargstbpr(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('this is a fragment') r container)r r r! parseFragment)r#r+r$rr%r&r'r(r(r)r,1s  r,csGfdddt}|S)NcseZdZfddZdS)z-method_decorator_metaclass..Decoratedcs>|D]\}}t|tjr|}|||<qt||||SN)items isinstancetypes FunctionTypetype__new__)meta classnamebases classDict attributeName attributefunctionr(r)r3Ls   z5method_decorator_metaclass..Decorated.__new__N)__name__ __module__ __qualname__r3r(r:r(r) DecoratedKsr?)r2)r;r?r(r:r)method_decorator_metaclassJsr@c@seZdZdZd'ddZd(dd Zd d Zed d ZddZ ddZ ddZ ddZ ddZ d)ddZddZddZdd Zd!d"Zd#d$Zd%d&ZdS)*r!z]HTML parser Generates a tree structure from a stream of (possibly malformed) HTML. NFTcsH|_|dur td}||_g_fddt|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|] \}}||jqSr()tree).0nameclsselfr(r) ysz'HTMLParser.__init__..)strictr r rAerrors getPhasesr.phases)rFrArHrdebugr(rEr)__init__]s     zHTMLParser.__init__r*cKsf||_||_||_tj|fd|i||_|z|WdSty2||YdSw)Nparser) innerHTMLModer+ scriptingr HTMLTokenizer tokenizerresetmainLoopr)rFstream innerHTMLr+rPr%r(r(r)_parse|s zHTMLParser._parsecCs|jd|_g|_g|_d|_|jrO|j|_ |j t vr&|j j |j _ n|j tvr2|j j|j _ n |j dkr>|j j|j _ n |jd|_|j|n d|_ |jd|_d|_d|_d|_dS)NFz no quirks plaintext beforeHtmlinitialT)rArS firstStartTagrIlog compatModerOr+lowerrVrrR rcdataStatestater rawtextStateplaintextStaterKphaseinsertHtmlElementresetInsertionMode lastPhasebeforeRCDataPhase framesetOKrEr(r(r)rSs,          zHTMLParser.resetcCst|dsdS|jjjdjS)zName 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)documentEncodings zHTMLParser.documentEncodingcCsF|jdkr|jtdkrd|jvo|jdtdvS|j|jftvS)Nannotation-xmlmathmlencoding)z text/htmlzapplication/xhtml+xml)rC namespacer attributes translaterrrFelementr(r(r)isHTMLIntegrationPoints   z!HTMLParser.isHTMLIntegrationPointcCs|j|jftvSr-)rorCrrrr(r(r)isMathMLTextIntegrationPointz'HTMLParser.isMathMLTextIntegrationPointcCsRtd}td}td}td}td}td}td}|jD]}d} |} | dur| } |jjr5|jjdnd} | r<| jnd} | rC| jnd} | d }||kr\|| d | d id} nt|jjd ks| |jj ks| | r||kr}|d t ddgvs|||fvs| t dkr| dkr||kr|d dks| | r||||fvr|j}n|jd}||kr|| } n1||kr|| } n'||kr|| } n||kr|| } n||kr|| } n ||kr|| } | dus)||kr| dr| ds|dd | d iqd}g}|r'||j|j}|r"|j|vs"J|s dSdS)N CharactersSpaceCharactersStartTagEndTagCommentDoctype ParseErrorr2datadatavarsrrCmglyph malignmarkrmrlsvginForeignContent selfClosingselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)rrRrA openElementsrorC parseErrorgetlendefaultNamespaceru frozensetrrtrcrKprocessCharactersprocessSpaceCharactersprocessStartTag processEndTagprocessCommentprocessDoctypeappend processEOF)rFCharactersTokenSpaceCharactersToken StartTagToken EndTagToken CommentToken DoctypeTokenParseErrorTokentoken prev_token new_token currentNodecurrentNodeNamespacecurrentNodeNamer2rc reprocessrKr(r(r)rTs~            )   zHTMLParser.mainLoopcOs&|j|ddg|Ri||jS)aParse 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('

This is a doc

') FN)rWrA getDocumentrFrUargsr%r(r(r)r"s zHTMLParser.parsecOs$|j|dg|Ri||jS)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('this is a fragment') T)rWrA getFragmentrr(r(r)r,s zHTMLParser.parseFragmentXXX-undefined-errorcCs@|duri}|j|jj||f|jrtt||dSr-)rIrrRrUpositionrHr}r)rF errorcoderr(r(r)r;s zHTMLParser.parseErrorcCt|tdSr-)adjust_attributesrrFrr(r(r)rCz!HTMLParser.adjustMathMLAttributescCrr-)rrrr(r(r)rFrzHTMLParser.adjustSVGAttributescCrr-)radjustForeignAttributesMaprr(r(r)rIrz"HTMLParser.adjustForeignAttributescCs|jdSr-)rNrcrr(r(r)reparseTokenNormalLszHTMLParser.reparseTokenNormalcCsd}ddddddddddd d d d d }|jjddd D]B}|j}d}||jjdkr5|js0Jd}|j}|dvr>|js>J|sH|j|jjkrHq||vrU|j||}n |r^|jd }nq||_dS)NFinSelectinCellinRow inTableBody inCaption inColumnGroupinTableinBody inFrameset beforeHead)selecttdthtrtbodytheadtfootcaptioncolgrouptableheadbodyframesethtmlr~rT)rrrr)rArrCrVrorrKrc)rFlastnewModesnodenodeName new_phaser(r(r)rePsF    zHTMLParser.resetInsertionModecCsR|dvsJ|j||dkr|jj|j_n|jj|j_|j|_|jd|_dS)N)RAWTEXTRCDATArtext) rA insertElementrRrar`r_rc originalPhaserK)rFr contentTyper(r(r)parseRCDataRawtext|s   zHTMLParser.parseRCDataRawtext)NFTF)Fr*F)rN)r<r=r>__doc__rMrWrSpropertyrkrtrurTr"r,rrrrrrerr(r(r(r)r!Vs&  "   C  ,r!csHdd}dd}Gdddt|||Gddd}Gd d d }Gd d d }Gd dd}Gddd}Gddd}GfdddGddd} Gfddd} GfdddGfddd} Gfddd} Gfdd d } Gfd!d"d"}Gfd#d$d$}Gfd%d&d&}Gd'd(d(}Gfd)d*d*}Gd+d,d,}Gfd-d.d.}Gfd/d0d0}Gd1d2d2}Gd3d4d4}id5|d6|d7|d8|d9|d:|d;d<| d=| d>d?| d@| dA| dB|dC|dD|dE|||||||dFS)GNcs$ddtDfdd}|S)z4Logger that records which phase processes each tokencSsi|]\}}||qSr(r()rBkeyvaluer(r(r)rGsz*getPhases..log..csjdrFt|dkrF|d}d|di}|dtvr$|d|d<|jj|jjjj|jj j j|j jj|f|g|Ri|S|g|Ri|S)Nprocessrr2rC) r< startswithrrrNr\rrRr`rc __class__)rFrr%rinfor; type_namesr(r)wrappeds   z'getPhases..log..wrapped)rr.)r;rr(rr)r\szgetPhases..logcSs|rt|StSr-)r@r2) use_metaclassmetaclass_funcr(r(r) getMetaclassszgetPhases..getMetaclassc@s\eZdZdZdZddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ dS)zgetPhases..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)rMs z!getPhases..Phase.__init__cSstr-)NotImplementedErrorrEr(r(r)rz#getPhases..Phase.processEOFcS|j||jjddS)Nr~rA insertCommentrrr(r(r)rz'getPhases..Phase.processCommentcS|jddS)Nzunexpected-doctyperNrrr(r(r)rrvz'getPhases..Phase.processDoctypecS|j|ddSNrrA insertTextrr(r(r)rz*getPhases..Phase.processCharacterscSrrrrr(r(r)rrz/getPhases..Phase.processSpaceCharacterscS|d}||jvr|j|}||S|j|}|j|<t|jt|jdkr?|jtt|jt|jt|jdks(||SNrCg?)rstartTagHandlerrpopnextiterrFrrCfuncr(r(r)r  z(getPhases..Phase.processStartTagcSsf|jjs|ddkr|jd|dD]\}}||jjdjvr,||jjdj|<qd|j_dS)NrCrz non-html-rootrrF)rNr[rr.rArrprFrattrrr(r(r) startTagHtmls  z%getPhases..Phase.startTagHtmlcSrr)r endTagHandlerrrrrrr(r(r)rrz&getPhases..Phase.processEndTagN)r<r=r>r __slots__rMrrrrrrrrr(r(r(r)Phases rc@sReZdZeZddZddZddZddZd d Z d d Z d dZ ddZ dS)zgetPhases..InitialPhasecSdSr-r(rr(r(r)rrz6getPhases..InitialPhase.processSpaceCharacterscS|j||jjdSr-rArdocumentrr(r(r)rz.getPhases..InitialPhase.processCommentcSs|d}|d}|d}|d}|dks |dus |dur&|dkr&|jd|dur,d}|j||dkr;|t}|r]|ddks]|d s]|d vs]|d rU|dus]|rb|d krbd |j_n|dsp|d rt|durtd|j_|jj d|j_ dS)NrCpublicIdsystemIdcorrectrzabout: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.dtdquirks)z -//w3c//dtd xhtml 1.0 frameset//z$-//w3c//dtd xhtml 1.0 transitional//zlimited quirksrY) rNrrA insertDoctyperqrrr^r]rKrc)rFrrCrrr r(r(r)rsJ   9  z.getPhases..InitialPhase.processDoctypecSsd|j_|jjd|j_dS)Nr rY)rNr]rKrcrEr(r(r) anythingElseZsz,getPhases..InitialPhase.anythingElsecS|jd||S)Nzexpected-doctype-but-got-charsrNrr rr(r(r)r^ z1getPhases..InitialPhase.processCharacterscS"|jdd|di||S)Nz"expected-doctype-but-got-start-tagrCrrr(r(r)rc  z/getPhases..InitialPhase.processStartTagcSr)Nz expected-doctype-but-got-end-tagrCrrr(r(r)rirz-getPhases..InitialPhase.processEndTagcS|jd|dS)Nzexpected-doctype-but-got-eofTrrEr(r(r)rorz*getPhases..InitialPhase.processEOFN) r<r=r>tuplerrrrr rrrrr(r(r(r) InitialPhases_ rc@sJeZdZeZddZddZddZddZd d Z d d Z d dZ dS)z"getPhases..BeforeHtmlPhasecSs&|jtdd|jjd|j_dS)Nrryr)rA insertRootimpliedTagTokenrNrKrcrEr(r(r)rdxsz4getPhases..BeforeHtmlPhase.insertHtmlElementcS |dSNTrdrEr(r(r)r}z-getPhases..BeforeHtmlPhase.processEOFcSrr-rrr(r(r)rrz1getPhases..BeforeHtmlPhase.processCommentcSrr-r(rr(r(r)rrz9getPhases..BeforeHtmlPhase.processSpaceCharacterscS ||Sr-rrr(r(r)rrz4getPhases..BeforeHtmlPhase.processCharacterscSs |ddkr d|j_||S)NrCrT)rNr[rdrr(r(r)rs z2getPhases..BeforeHtmlPhase.processStartTagcSs2|ddvr|jdd|didS||S)NrCrrrbrzunexpected-end-tag-before-html)rNrrdrr(r(r)rs  z0getPhases..BeforeHtmlPhase.processEndTagN) r<r=r>rrrdrrrrrrr(r(r(r)BeforeHtmlPhasets rc@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e defde fgZe e_e de fgZe e_dS)z"getPhases..BeforeHeadPhasecSs|tdddS)NrryT startTagHeadrrEr(r(r)rz-getPhases..BeforeHeadPhase.processEOFcSrr-r(rr(r(r)rrz9getPhases..BeforeHeadPhase.processSpaceCharacterscS|tdd|SNrryr rr(r(r)rr"z4getPhases..BeforeHeadPhase.processCharacterscS|jjd|SNrrNrKrrr(r(r)rz/getPhases..BeforeHeadPhase.startTagHtmlcSs0|j||jjd|j_|jjd|j_dS)Nr~inHead)rArr headPointerrNrKrcrr(r(r)r!s z/getPhases..BeforeHeadPhase.startTagHeadcSr#r$r rr(r(r) startTagOtherr"z0getPhases..BeforeHeadPhase.startTagOthercSr#r$r rr(r(r)endTagImplyHeadr"z2getPhases..BeforeHeadPhase.endTagImplyHeadcS|jdd|didS)Nzend-tag-after-implied-rootrCrrr(r(r) endTagOther z.getPhases..BeforeHeadPhase.endTagOtherrrrN)r<r=r>rrrrrrr!r+r,r.r MethodDispatcherrdefaultrr(r(r(r)BeforeHeadPhases& r2c @seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZedefd e fd!e fd"e fd#efd$e fd%e fd&efgZee_ed&efd'efgZee_d(S))zgetPhases..InHeadPhasecSrrr rEr(r(r)rrz)getPhases..InHeadPhase.processEOFcSrr-r3rr(r(r)rrz0getPhases..InHeadPhase.processCharacterscSr%r&r'rr(r(r)rr(z+getPhases..InHeadPhase.startTagHtmlcSr)Nz!two-heads-are-not-better-than-onerrr(r(r)r!rvz+getPhases..InHeadPhase.startTagHeadcS$|j||jjd|d<dSNTrrArrrrr(r(r)startTagBaseLinkCommand   z6getPhases..InHeadPhase.startTagBaseLinkCommandcSs|j||jjd|d<|d}|jjjjddkr[d|vr.|jjj|ddSd|vr]d|vr_|d d krat |d d }t |}|}|jjj|dSdSdSdSdS) NTrrr tentativecharsetcontentz http-equivz content-typezutf-8)rArrrrNrRrUrjchangeEncodingr^r EncodingBytesencodeContentAttrParserr")rFrrprrNcodecr(r(r) startTagMetas$   z+getPhases..InHeadPhase.startTagMetacS|j|ddS)NrrNrrr(r(r) startTagTitler(z,getPhases..InHeadPhase.startTagTitlecSrB)NrrCrr(r(r)startTagNoFramesStylez4getPhases..InHeadPhase.startTagNoFramesStylecSs:|jjr |j|ddS|j||jjd|j_dS)NrinHeadNoscript)rNrPrrArrKrcrr(r(r)startTagNoscripts z/getPhases..InHeadPhase.startTagNoscriptcSs<|j||jjj|jj_|jj|j_|jjd|j_dS)Nr) rArrNrRscriptDataStater`rcrrKrr(r(r)startTagScripts  z-getPhases..InHeadPhase.startTagScriptcSrr-r3rr(r(r)r+rz,getPhases..InHeadPhase.startTagOthercS:|jjj}|jdksJd|j|jjd|j_dS)NrzExpected head got %s afterHeadrNrArrrCrKrcrFrrr(r(r) endTagHead z)getPhases..InHeadPhase.endTagHeadcSrr-r3rr(r(r)endTagHtmlBodyBrrz/getPhases..InHeadPhase.endTagHtmlBodyBrcSr-Nunexpected-end-tagrCrrr(r(r)r.z*getPhases..InHeadPhase.endTagOthercS|tddS)Nr)rOrrEr(r(r)r r(z+getPhases..InHeadPhase.anythingElsertitle)noframesstylenoscriptscript)basebasefontbgsoundcommandlinkr4r)rrrN)r<r=r>rrrrrr!r7rArDrErHrJr+rOrQr.r r r0rr1rr(r(r(r) InHeadPhasesF  r`c@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZede fde fde fgZe e_ede fdefgZee_dS)z&getPhases..InHeadNoscriptPhasecSr)Nzeof-in-head-noscriptTrrEr(r(r)r/rz1getPhases..InHeadNoscriptPhase.processEOFcSr%Nr))rNrKrrr(r(r)r4r(z5getPhases..InHeadNoscriptPhase.processCommentcSr)Nzchar-in-head-noscriptrrr(r(r)r7rz8getPhases..InHeadNoscriptPhase.processCharacterscSr%rarNrKrrr(r(r)r<r(z=getPhases..InHeadNoscriptPhase.processSpaceCharacterscSr%r&r'rr(r(r)r?r(z3getPhases..InHeadNoscriptPhase.startTagHtmlcSr%rar'rr(r(r)r7Br(z>getPhases..InHeadNoscriptPhase.startTagBaseLinkCommandcSr-Nunexpected-start-tagrCrrr(r(r)startTagHeadNoscriptErTz;getPhases..InHeadNoscriptPhase.startTagHeadNoscriptcSrNzunexpected-inhead-noscript-tagrCrrr(r(r)r+Hz4getPhases..InHeadNoscriptPhase.startTagOthercSrK)NrYzExpected noscript got %sr)rMrNr(r(r)endTagNoscriptMrPz5getPhases..InHeadNoscriptPhase.endTagNoscriptcSrrfrrr(r(r)endTagBrRrgz/getPhases..InHeadNoscriptPhase.endTagBrcSr-rRrrr(r(r)r.WrTz2getPhases..InHeadNoscriptPhase.endTagOthercSrU)NrY)rhrrEr(r(r)r ZrFz3getPhases..InHeadNoscriptPhase.anythingElser)r\r]r_r4rWrX)rrYrYrN)r<r=r>rrrrrrrr7rer+rhrir.r r r0rr1rr(r(r(r)InHeadNoscriptPhase,s2 rjc@seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZedefdefde fde fde fgZe e_ede fgZee_dS)z!getPhases..AfterHeadPhasecSrrr3rEr(r(r)rnrz,getPhases..AfterHeadPhase.processEOFcSrr-r3rr(r(r)rrrz3getPhases..AfterHeadPhase.processCharacterscSr%r&r'rr(r(r)rvr(z.getPhases..AfterHeadPhase.startTagHtmlcSs(d|j_|j||jjd|j_dS)NFr)rNrhrArrKrcrr(r(r) startTagBodyy z.getPhases..AfterHeadPhase.startTagBodycSs |j||jjd|j_dS)Nr)rArrNrKrcrr(r(r)startTagFrameset~s z2getPhases..AfterHeadPhase.startTagFramesetcSst|jdd|di|jj|jj|jjd||jjdddD]}|jdkr7|jj |dSq&dS)Nz#unexpected-start-tag-out-of-my-headrCr)r~r) rNrrArrr*rKrrCremoverNr(r(r)startTagFromHeads  z2getPhases..AfterHeadPhase.startTagFromHeadcSr-rcrrr(r(r)r!rTz.getPhases..AfterHeadPhase.startTagHeadcSrr-r3rr(r(r)r+rz/getPhases..AfterHeadPhase.startTagOthercSrr-r3rr(r(r)rQrz2getPhases..AfterHeadPhase.endTagHtmlBodyBrcSr-rRrrr(r(r)r.rTz-getPhases..AfterHeadPhase.endTagOthercSs.|jtdd|jjd|j_d|j_dS)NrryrT)rArrrNrKrcrhrEr(r(r)r s z.getPhases..AfterHeadPhase.anythingElserrr) r[r\r]r_r4rWrZrXrVr)rrrN)r<r=r>rrrrrrkrmror!r+rQr.r r r0rr1rr(r(r(r)AfterHeadPhaseks6   rpc seZdZdZfddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dd?Z"d@dAZ#dBdCZ$dDdEZ%dFdGZ&dHdIZ'dJdKZ(dLdMZ)dNdOZ*dPdQZ+dRdSZ,dTdUZ-dVdWZ.dXdYZ/dZd[Z0d\d]Z1d^d_Z2d`daZ3dbdcZ4dddeZ5dfdgZ6e78gdhj9fdie fdje fdke fdlefe:efdmefdnefdoefdpefdqefdrefdsefdtefduefdvefdwefdxefdyefdzefd{efd|efd}e fd~e!fde"fde#fde$fde&fde'fde%fde(fde)fde*fZ;e+e;_S)zgetPhases..InBodyPhase)rcs"t|j|i||j|_dSr-)superrMprocessSpaceCharactersNonPrerrFrr%) InBodyPhaserr(r)rMs z'getPhases..InBodyPhase.__init__cSs$|j|jko|j|jko|j|jkSr-)rCrorp)rFnode1node2r(r(r)isMatchingFormattingElements   z:getPhases..InBodyPhase.isMatchingFormattingElementcSs|j||jjd}g}|jjdddD]}|turn |||r*||qt|dks3Jt|dkrB|jj|d|jj|dS)Nr~) rArractiveFormattingElementsr rwrrrn)rFrrsmatchingElementsrr(r(r)addFormattingElements     z3getPhases..InBodyPhase.addFormattingElementcSs@td}|jjdddD]}|j|vr|jddSq dS)N) dddtlir'rrrrrrrrr~z expected-closing-tag-but-got-eof)rrArrCrNr)rFallowed_elementsrr(r(r)rs  z)getPhases..InBodyPhase.processEOFcSsj|d}|j|_|dr$|jjdjdvr$|jjds$|dd}|r3|j|j|dSdS)Nr r~)prelistingtextarear) rrrrrArrC hasContent#reconstructActiveFormattingElementsr)rFrrr(r(r)!processSpaceCharactersDropNewlines   z@getPhases..InBodyPhase.processSpaceCharactersDropNewlinecSs\|ddkrdS|j|j|d|jjr*tdd|dDr,d|j_dSdSdS)NrcSg|]}|tvqSr(r rBcharr(r(r) s zDgetPhases..InBodyPhase.processCharacters..F)rArrrNrhanyrr(r(r)rs   z0getPhases..InBodyPhase.processCharacterscSs|j|j|ddSr)rArrrr(r(r)rrs z;getPhases..InBodyPhase.processSpaceCharactersNonPrecSr%rar'rr(r(r)startTagProcessInHeadr(z4getPhases..InBodyPhase.startTagProcessInHeadcSs|jdddit|jjdks|jjdjdkr"|jjs JdSd|j_|dD]\}}||jjdj vrB||jjdj |<q,dS)NrdrCrrFr) rNrrrArrCrVrhr.rprr(r(r)rksz+getPhases..InBodyPhase.startTagBodycSs|jdddit|jjdks|jjdjdkr"|jjs JdS|jjs(dS|jjdjr=|jjdj |jjd|jjdjdkrU|jj |jjdjdksF|j ||jj d|j_ dS) NrdrCrrrr~rr)rNrrrArrCrVrhparent removeChildrrrKrcrr(r(r)rms"  z/getPhases..InBodyPhase.startTagFramesetcSs.|jjdddr|td|j|dSNr'buttonvariant)rAelementInScopeendTagPrrrr(r(r)startTagClosePsz-getPhases..InBodyPhase.startTagClosePcSs>|jjdddr|td|j|d|j_|j|_dS)Nr'rrF) rArrrrrNrhrrrr(r(r)startTagPreListings   z1getPhases..InBodyPhase.startTagPreListingcSs\|jjr|jdddidS|jjdddr|td|j||jjd|j_dS)NrdrCformr'rrr~) rA formPointerrNrrrrrrrr(r(r) startTagForms  z+getPhases..InBodyPhase.startTagFormcSsd|j_dgddgddgd}||d}t|jjD] }|j|vr/|jjt|jdn |j t vr;|jdvr;nq|jj d d d rN|jjtd d|j |dS) NFr~r}r|)r~r}r|rCrz)addressr*r'r'rr) rNrhreversedrArrCrcrr nameTuplerrr)rFr stopNamesMap stopNamesrr(r(r)startTagListItem&s*     z/getPhases..InBodyPhase.startTagListItemcSs>|jjdddr|td|j||jjj|jj_dSr) rArrrrrNrRrbr`rr(r(r)startTagPlaintext<s z0getPhases..InBodyPhase.startTagPlaintextcSsb|jjdddr|td|jjdjtvr)|jdd|di|jj |j |dS)Nr'rrr~rdrC) rArrrrrCrrNrrrrr(r(r)startTagHeadingBs  z.getPhases..InBodyPhase.startTagHeadingcSs~|jd}|r3|jdddd|td||jjvr&|jj|||jjvr3|jj||j | |dS)Na$unexpected-start-tag-implies-end-tag startNameendName) rA!elementInActiveFormattingElementsrNrendTagFormattingrrrnryrr{)rFr afeAElementr(r(r) startTagAJs    z(getPhases..InBodyPhase.startTagAcSs|j||dSr-)rArr{rr(r(r)startTagFormattingWs z1getPhases..InBodyPhase.startTagFormattingcSsP|j|jdr!|jdddd|td|j||dS)Nnobrrr)rArrrNrrrr{rr(r(r) startTagNobr[s   z+getPhases..InBodyPhase.startTagNobrcSsT|jdr|jdddd|td|S|j|j|d|j_dS)NrrrF) rArrNrrrrrrhrr(r(r)startTagButtones    z-getPhases..InBodyPhase.startTagButtoncSs0|j|j||jjtd|j_dSNF)rArrryrr rNrhrr(r(r)startTagAppletMarqueeObjectps   z:getPhases..InBodyPhase.startTagAppletMarqueeObjectcSsB|jjdddr|td|jd|j_|j|ddS)Nr'rrFr)rArrrrrNrhrrr(r(r) startTagXmpvs  z*getPhases..InBodyPhase.startTagXmpcSsR|jjdkr|jjdddr|td|j|d|j_|jjd|j_ dS)Nr r'rrFr) rNr]rArrrrrhrKrcrr(r(r) startTagTable}s  z,getPhases..InBodyPhase.startTagTablecSs6|j|j||jjd|d<d|j_dS)NTrF)rArrrrrNrhrr(r(r)startTagVoidFormattings    z5getPhases..InBodyPhase.startTagVoidFormattingcSsH|jj}||d|dvr |ddtdkr"||j_dSdSdS)Nr2rhidden)rNrhrrqr)rFrrhr(r(r) startTagInputs   z,getPhases..InBodyPhase.startTagInputcSr4r5r6rr(r(r)startTagParamSourcer8z2getPhases..InBodyPhase.startTagParamSourcecSsJ|jjdddr|td|j||jjd|d<d|j_dS)Nr'rrTrF) rArrrrrrrNrhrr(r(r) startTagHrs    z)getPhases..InBodyPhase.startTagHrcSs6|jdddd|tdd|d|dddS) Nzunexpected-start-tag-treated-asimageimg originalNamenewNameryrrrpr)rNrrrrr(r(r) startTagImages  z,getPhases..InBodyPhase.startTagImagecSs|jdddi|jjrdSi}d|dvr|dd|d<|tdd|d|td d|td dd |dvrF|dd }nd }|td |d|d}d|vr_|d=d |vrf|d =d|d<|tdd||dd| td |td d| tddS)Nzdeprecated-tagrCisindexactionrrry)rphrlabelpromptz3This is a searchable index. Enter search keywords: rwr2rinputrr) rNrrArrrrrcopyr)rFr form_attrsrrpr(r(r)startTagIsIndexs<      z.getPhases..InBodyPhase.startTagIsIndexcSs0|j||jjj|jj_|j|_d|j_dSr) rArrNrRr_r`rrrhrr(r(r)startTagTextareas  z/getPhases..InBodyPhase.startTagTextareacSsd|j_||dSr)rNrhstartTagRawtextrr(r(r)startTagIFramesz-getPhases..InBodyPhase.startTagIFramecSs$|jjr ||dS||dSr-)rNrPrr+rr(r(r)rHsz/getPhases..InBodyPhase.startTagNoscriptcSs|j|ddS)z8iframe, noembed noframes, noscript(if scripting enabled)rNrCrr(r(r)rrFz.getPhases..InBodyPhase.startTagRawtextcSs@|jjdjdkr|jjtd|j|jj|dSNr~option) rArrCrNrcrrrrrr(r(r) startTagOpts z*getPhases..InBodyPhase.startTagOptcSs|j|j|d|j_|jj|jjd|jjd|jjd|jjd|jjd|jjdfvr=|jjd|j_dS|jjd |j_dS) NFrrrrrrinSelectInTabler)rArrrNrhrcrKrr(r(r)startTagSelects       z-getPhases..InBodyPhase.startTagSelectcSsB|jdr|j|jjdjdkr|j|j|dS)Nrubyr~)rArgenerateImpliedEndTagsrrCrNrrrr(r(r) startTagRpRts   z+getPhases..InBodyPhase.startTagRpRtcS^|j|j||j|td|d<|j||dr-|jjd|d<dSdS)NrmrorTr) rArrNrrrrrrrr(r(r) startTagMath       z+getPhases..InBodyPhase.startTagMathcSr)NrrorTr) rArrNrrrrrrrr(r(r) startTagSvgrz*getPhases..InBodyPhase.startTagSvgcSs|jdd|didS)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-ignoredrCNrrr(r(r)startTagMisplacedsz0getPhases..InBodyPhase.startTagMisplacedcSs|j|j|dSr-)rArrrr(r(r)r+s z,getPhases..InBodyPhase.startTagOthercSs|jjddds#|tdd|jdddi|tdddS|jd|jjdj dkr;|jdddi|jj }|j dkrS|jj }|j dksFdSdS) Nr'rrryrSrCrzr~) rArrrrNrrrrrCrrNr(r(r)rs    z&getPhases..InBodyPhase.endTagPcSs~|jds |jdS|jjdjdkr5|jjddD]}|jtdvr4|jdd|jdnq|jjd|j_dS)Nrr~)r|r}r~optgrouprr'rprtrrrrrrrr$expected-one-end-tag-but-got-anothergotName expectedName afterBody) rArrNrrrCrrKrcrNr(r(r) endTagBody)s    z)getPhases..InBodyPhase.endTagBodycSs"|jdr|td|SdS)Nr)rArrrrr(r(r) endTagHtml;s z)getPhases..InBodyPhase.endTagHtmlcSs|ddkr |j|_|j|d}|r|j|jjdj|dkr/|jdd|di|rM|jj }|j|dkrO|jj }|j|dks>dSdSdS)NrCrr~end-tag-too-early) rrrrArrrrCrNrr)rFrinScoperr(r(r) endTagBlockAs    z*getPhases..InBodyPhase.endTagBlockcSsx|jj}d|j_|dus|j|s|jdddidS|j|jjd|kr3|jdddi|jj|dS)NrSrCrr~zend-tag-too-early-ignored)rArrrNrrrrnrNr(r(r) endTagFormOs z)getPhases..InBodyPhase.endTagFormcSs|ddkr d}nd}|jj|d|ds"|jdd|didS|jj|dd|jjdj|dkrA|jdd|di|jj}|j|dkr]|jj}|j|dksNdSdS) NrCr~listrrSexcluder~r)rArrNrrrrCr)rFrrrr(r(r)endTagListItem\s    z-getPhases..InBodyPhase.endTagListItemcSstD]}|j|r|jnq|jjdj|dkr(|jdd|ditD]!}|j|rK|jj}|jtvrH|jj}|jtvs=dSq*dS)Nr~rCr) rrArrrrCrNrr)rFritemr(r(r) endTagHeadingms        z,getPhases..InBodyPhase.endTagHeadingcSsd}|dkr|d7}|j|d}|r"||jjvr)|j|js)||dS||jjvrC|jdd|di|jj |dS|j|jsW|jdd|didS||jjdkrj|jd d|di|jj |}d}|jj|dD] }|j t vr|}nq{|dur|jj }||kr|jj }||ks|jj |dS|jj|d}|jj |}|} } d} |jj | } | d kr(| d7} | d8} |jj| } | |jjvr|jj | q| |krn>| |kr|jj | d}| } | |jj|jj | <| |jj|jj | <| } | jr| j| | | | } | d ks| jr2| j| |jtd vrH|j\}}|| |n|| |} || || |jj ||jj|| |jj ||jj|jj |d| |dksdSdS) z)The much-feared adoption agency algorithmrrrCNzadoption-agency-1.2zadoption-agency-4.4r~zadoption-agency-1.3rxrrrrr)rArrrrCr.rNrryrnindexrrr cloneNoderr appendChildrgetTableMisnestedNodePosition insertBeforereparentChildreninsert)rFrouterLoopCounterformattingElementafeIndex furthestBlockrscommonAncestorbookmarklastNoderinnerLoopCounterrclonerrr(r(r)r|s                "    z/getPhases..InBodyPhase.endTagFormattingcSs|j|dr |j|jjdj|dkr#|jdd|di|j|drL|jj}|j|dkrE|jj}|j|dks8|jdSdS)NrCr~r) rArrrrCrNrrclearActiveFormattingElements)rFrrsr(r(r)endTagAppletMarqueeObjects   z8getPhases..InBodyPhase.endTagAppletMarqueeObjectcSs@|jdddd|j|jtdd|jjdS)Nzunexpected-end-tag-treated-asrz br elementrry)rNrrArrrrrrr(r(r)ri+s  z'getPhases..InBodyPhase.endTagBrcSs|jjdddD]O}|j|dkrE|jj|dd|jjdj|dkr1|jdd|di|jj|krB |jj|ks9dS|jtvrX|jdd|didSq dS)Nr~rCrrS) rArrCrrNrrrrrNr(r(r)r.2s z*getPhases..InBodyPhase.endTagOtherr) r[r\r]r^r_r4rZrXrVrr)rarticleaside blockquotecenterdetailsdirr*dlfieldset figcaptionfigurefooterheaderhgroupmainmenunavolr'sectionsummaryul)rrr)r~r|r}rXr) bbigcodeemfontissmallstrikestrongtturr)appletmarqueeobjectxmpr)arearembedrkeygenwbr)paramsourcetrackrrrrriframerY)noembedrWr)rr)rrmathr) rcolrframerrrrrrr)rrrrrrrdialogr r*r r r r rrrrrrrrrrrrr')r|r}r~)rrrrrrrrrrr r!r"r#r)?r<r=r>rrMrwr{rrrrrrrkrmrrrrrrrrrrrrrrrrrrrrrrHrrrrrrrr+rrrrrrrrrrir.r r0rrrr1r __classcell__r()rtrrr)rts*             $    !"#$%&'()-rtc@s`eZdZeZddZddZddZddZd d Z e gZ ee _ e d efgZe e_ d S) zgetPhases..TextPhasecSrrrrr(r(r)rrz.getPhases..TextPhase.processCharacterscSs8|jdd|jjdji|jj|jj|j_dS)Nz&expected-named-closing-tag-but-got-eofrCr~T)rNrrArrCrrrcrEr(r(r)rs   z'getPhases..TextPhase.processEOFcSsJd|d)NFz4Tried to process start tag %s in RCDATA/RAWTEXT moderCr(rr(r(r)r+rvz*getPhases..TextPhase.startTagOthercSs*|jj}|jdks J|jj|j_dS)NrZ)rArrrCrNrrcrNr(r(r) endTagScripts z)getPhases..TextPhase.endTagScriptcSs|jj|jj|j_dSr-)rArrrNrrcrr(r(r)r. z(getPhases..TextPhase.endTagOtherrZN)r<r=r>rrrrr+r7r.r r0rr1rr(r(r(r) TextPhases  r9c s eZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZddZddZdd Zd!d"Zd#d$Zed%jfd&e fd'e fd(e fd)e fd*efd+efd,efd-efd.efg Zee_ed+efd/efgZee_d0S)1zgetPhases..InTablePhasecSs8|jjdjdvr|jj|jjdjdvs dSdS)Nr~)rr)rArrCrrEr(r(r)clearStackToTableContexts z8getPhases..InTablePhase.clearStackToTableContextcS2|jjdjdkr|jddS|jjsJdS)Nr~rz eof-in-tablerArrCrNrrVrEr(r(r)rz*getPhases..InTablePhase.processEOFcS4|jj}|jjd|j_||jj_|jj|dSN inTableText)rNrcrKrrrFrrr(r(r)r z6getPhases..InTablePhase.processSpaceCharacterscSr>r?)rNrcrKrrrAr(r(r)rrBz1getPhases..InTablePhase.processCharacterscSs&d|j_|jjd|d|j_dS)NTrF)rAinsertFromTablerNrKrrr(r(r)rs z*getPhases..InTablePhase.insertTextcSs6||jjt|j||jjd|j_dS)Nr) r:rAryrr rrNrKrcrr(r(r)startTagCaptions z/getPhases..InTablePhase.startTagCaptioncS(||j||jjd|j_dS)Nrr:rArrNrKrcrr(r(r)startTagColgrouprlz0getPhases..InTablePhase.startTagColgroupcSr#)Nrry)rGrrr(r(r) startTagColr"z+getPhases..InTablePhase.startTagColcSrENrrFrr(r(r)startTagRowGrouprlz0getPhases..InTablePhase.startTagRowGroupcSr#)Nrry)rJrrr(r(r)startTagImplyTbodyr"z2getPhases..InTablePhase.startTagImplyTbodycSs6|jdddd|jjtd|jjs|SdS)Nrrr)rNrrcrrrVrr(r(r)rsz-getPhases..InTablePhase.startTagTablecSr%rar'rr(r(r)startTagStyleScriptr(z3getPhases..InTablePhase.startTagStyleScriptcSsXd|dvr%|ddtdkr%|jd|j||jjdS||dS)Nr2rrz unexpected-hidden-input-in-table) rqrrNrrArrrr+rr(r(r)rs   z-getPhases..InTablePhase.startTagInputcSsH|jd|jjdur"|j||jjd|j_|jjdSdS)Nzunexpected-form-in-tabler~)rNrrArrrrrr(r(r)rs   z,getPhases..InTablePhase.startTagFormcS<|jdd|did|j_|jjd|d|j_dS)Nz)unexpected-start-tag-implies-table-voodoorCTrF)rNrrArCrKrrr(r(r)r+ z-getPhases..InTablePhase.startTagOthercSs|jjdddrJ|j|jjdjdkr%|jdd|jjdjd|jjdjdkr=|jj|jjdjdks.|jj|jdS|jj sPJ|jdS)Nrrr~zend-tag-too-early-namedr) rArrrrCrNrrrerVrr(r(r) endTagTables     z+getPhases..InTablePhase.endTagTablecSr-rRrrr(r(r) endTagIgnorerTz,getPhases..InTablePhase.endTagIgnorecSrM)Nz'unexpected-end-tag-implies-table-voodoorCTrF)rNrrArCrKrrr(r(r)r.rNz+getPhases..InTablePhase.endTagOtherrrrr2rrr)rrrr)rXrZrr) rrr2rrrrrrrrN)r<r=r>rrr:rrrrrDrGrHrJrKrrLrrr+rOrPr.r r0rrr1rr(rr(r) InTablePhasesP    rScsZeZdZdZfddZddZddZdd Zd d Zd d Z ddZ ddZ Z S)z#getPhases..InTableTextPhase)rcharacterTokenscs&t|j|i|d|_g|_dSr-)rqrMrrTrs)InTableTextPhaserr(r)rM6s z,getPhases..InTableTextPhase.__init__cSsdddd|jD}tdd|Dr%td|d}|jjd|n|r-|j|g|_dS)Nr cSsg|]}|dqS)rr(rBrr(r(r)r<zGgetPhases..InTableTextPhase.flushCharacters..cSrr(rrVr(r(r)r=rWrwrr)joinrTrrrNrKrrA)rFrrr(r(r)flushCharacters;s  z3getPhases..InTableTextPhase.flushCharacterscS||j|j_|Sr-rYrrNrcrr(r(r)rD z2getPhases..InTableTextPhase.processCommentcSs||j|j_dSrr[rEr(r(r)rIr\z.getPhases..InTableTextPhase.processEOFcSs |ddkrdS|j|dSNrrrTrrr(r(r)rNs z5getPhases..InTableTextPhase.processCharacterscS|j|dSr-r^rr(r(r)rSsz:getPhases..InTableTextPhase.processSpaceCharacterscSrZr-r[rr(r(r)rXr\z3getPhases..InTableTextPhase.processStartTagcSrZr-r[rr(r(r)r]r\z1getPhases..InTableTextPhase.processEndTag) r<r=r>rrMrYrrrrrrr5r()rUr6r)rU3s rUceZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ edjfdefgZe e_ede fde fde fgZe e_dS)z!getPhases..InCaptionPhasecS|jjddd S)NrrrrArrEr(r(r)ignoreEndTagCaptionfr(z5getPhases..InCaptionPhase.ignoreEndTagCaptioncS|jjddSr&rNrKrrEr(r(r)rirz,getPhases..InCaptionPhase.processEOFcSr%r&rNrKrrr(r(r)rlr(z3getPhases..InCaptionPhase.processCharacterscS0|j|}|jjtd|s|SdSNrrNrrcrcrrrFr ignoreEndTagr(r(r)startTagTableElementos z6getPhases..InCaptionPhase.startTagTableElementcSr%r&r'rr(r(r)r+wr(z/getPhases..InCaptionPhase.startTagOthercSs|sN|j|jjdjdkr!|jdd|jjdjd|jjdjdkr9|jj|jjdjdks*|jj|j|jj d|j_ dS|jj sTJ|jdS)Nr~rrrr) rcrArrrCrNrrrrKrcrVrr(r(r) endTagCaptionzs       z/getPhases..InCaptionPhase.endTagCaptioncSrgrhrirjr(r(r)rOs z-getPhases..InCaptionPhase.endTagTablecSr-rRrrr(r(r)rPrTz.getPhases..InCaptionPhase.endTagIgnorecSr%r&rNrKrrr(r(r)r.r(z-getPhases..InCaptionPhase.endTagOtherr rr2rrrrrrrrr) rr2rrrrrrrrN)r<r=r>rrrcrrrlr+rmrOrPr.r r0rrr1rr(rRr(r)InCaptionPhasebs4 rpcseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e djfdefgZe e_e de fde fgZe e_dS)z%getPhases..InColumnGroupPhasecSs|jjdjdkS)Nr~r)rArrCrEr(r(r)ignoreEndTagColgroupr(z:getPhases..InColumnGroupPhase.ignoreEndTagColgroupcSsD|jjdjdkr|jjsJdS|}|td|s dSdS)Nr~rrT)rArrCrNrVrqendTagColgroupr)rFrkr(r(r)rs z0getPhases..InColumnGroupPhase.processEOFcS"|}|td|s|SdSNrrqrrrrjr(r(r)r z7getPhases..InColumnGroupPhase.processCharacterscSr4r5r6rr(r(r)rHr8z1getPhases..InColumnGroupPhase.startTagColcSrsrtrurjr(r(r)r+rvz3getPhases..InColumnGroupPhase.startTagOthercSsB|r|jjs J|jdS|jj|jjd|j_dSNr) rqrNrVrrArrrKrcrr(r(r)rrs   z4getPhases..InColumnGroupPhase.endTagColgroupcSs|jdddidS)Nz no-end-tagrCr2rrr(r(r) endTagColrz/getPhases..InColumnGroupPhase.endTagColcSrsrtrurjr(r(r)r.rvz1getPhases..InColumnGroupPhase.endTagOtherrr2rN)r<r=r>rrrqrrrHr+rrrxr.r r0rrr1rr(rRr(r)InColumnGroupPhases(   rycseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZedjfde fde fde fgZe e_ede fdefdefgZee_d S)!z#getPhases..InTableBodyPhasecSsV|jjdjdvr|jj|jjdjdvs |jjdjdkr'|jjs)JdSdS)Nr~)rrrrr)rArrCrrNrVrEr(r(r)clearStackToTableBodyContexts  z@getPhases..InTableBodyPhase.clearStackToTableBodyContextcSrdrwrerEr(r(r)rrz.getPhases..InTableBodyPhase.processEOFcSr%rwrbrr(r(r)rr(z:getPhases..InTableBodyPhase.processSpaceCharacterscSr%rwrfrr(r(r)rr(z5getPhases..InTableBodyPhase.processCharacterscSrE)Nr)rzrArrNrKrcrr(r(r) startTagTrrlz.getPhases..InTableBodyPhase.startTagTrcSs*|jdd|di|tdd|S)Nzunexpected-cell-in-table-bodyrCrry)rNrr{rrr(r(r)startTagTableCell  z5getPhases..InTableBodyPhase.startTagTableCellcSn|jjddds|jjddds|jjdddr*||t|jjdj|S|jjs0J|j dSNrrrrrr~ rArrzendTagTableRowGrouprrrCrNrVrrr(r(r)startTagTableOther s z6getPhases..InTableBodyPhase.startTagTableOthercSr%rwr'rr(r(r)r+r(z1getPhases..InTableBodyPhase.startTagOthercSsV|jj|dddr||jj|jjd|j_dS|jdd|didS)NrCrrr unexpected-end-tag-in-table-body) rArrzrrrNrKrcrrr(r(r)rs  z7getPhases..InTableBodyPhase.endTagTableRowGroupcSr~rrrr(r(r)rO%s z/getPhases..InTableBodyPhase.endTagTablecSr-)NrrCrrr(r(r)rP2r/z0getPhases..InTableBodyPhase.endTagIgnorecSr%rwrnrr(r(r)r.6r(z/getPhases..InTableBodyPhase.endTagOtherrrrr)rr2rrrrrQr)rrr2rrrrrN)r<r=r>rrrzrrrr{r|rr+rrOrPr.r r0rrr1rr(rRr(r)InTableBodyPhases>    rcseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZddZedjfde fde fgZe e_ede fdefd efd!efgZee_d"S)#zgetPhases..InRowPhasecSsT|jjdjdvr(|jdd|jjdji|jj|jjdjdvs dSdS)Nr~)rrz'unexpected-implied-end-tag-in-table-rowrC)rArrCrNrrrEr(r(r)clearStackToTableRowContextOs  z9getPhases..InRowPhase.clearStackToTableRowContextcSra)NrrrrbrEr(r(r)ignoreEndTagTrUr(z,getPhases..InRowPhase.ignoreEndTagTrcSrdrwrerEr(r(r)rYrz(getPhases..InRowPhase.processEOFcSr%rwrbrr(r(r)r\r(z4getPhases..InRowPhase.processSpaceCharacterscSr%rwrfrr(r(r)r_r(z/getPhases..InRowPhase.processCharacterscSs6||j||jjd|j_|jjtdS)Nr) rrArrNrKrcryrr rr(r(r)r|bs z/getPhases..InRowPhase.startTagTableCellcSrsNrrendTagTrrrjr(r(r)rhs z0getPhases..InRowPhase.startTagTableOthercSr%rwr'rr(r(r)r+or(z+getPhases..InRowPhase.startTagOthercSsJ|s||jj|jjd|j_dS|jjsJ|j dSrI) rrrArrrNrKrcrVrrr(r(r)rrs   z&getPhases..InRowPhase.endTagTrcSrsrrrjr(r(r)rO|s z)getPhases..InRowPhase.endTagTablecSs4|jj|dddr|td|S|jdS)NrCrrr)rArrrrNrrr(r(r)rsz1getPhases..InRowPhase.endTagTableRowGroupcSr-)Nzunexpected-end-tag-in-table-rowrCrrr(r(r)rPr/z*getPhases..InRowPhase.endTagIgnorecSr%rwrnrr(r(r)r.r(z)getPhases..InRowPhase.endTagOtherrr)rr2rrrrrrrrQ)rrr2rrrrN)r<r=r>rrrrrrrr|rr+rrOrrPr.r r0rrr1rr(rRr(r) InRowPhaseJs@  rcr`)zgetPhases..InCellPhasecSsH|jjdddr|tddS|jjdddr"|tddSdSNrrrr)rArendTagTableCellrrEr(r(r) closeCells z(getPhases..InCellPhase.closeCellcSrdr&rerEr(r(r)rrz)getPhases..InCellPhase.processEOFcSr%r&rfrr(r(r)rr(z0getPhases..InCellPhase.processCharacterscSsF|jjddds|jjdddr||S|jjsJ|jdSr)rArrrNrVrrr(r(r)rs z1getPhases..InCellPhase.startTagTableOthercSr%r&r'rr(r(r)r+r(z,getPhases..InCellPhase.startTagOthercSs|jj|dddrN|j|d|jjdj|dkr9|jdd|di |jj}|j|dkr7nq)n|jj|j|jj d|j_ dS|jdd|didS) NrCrrr~zunexpected-cell-end-tagTrrS) rArrrrCrNrrrrKrcrNr(r(r)rs     z.getPhases..InCellPhase.endTagTableCellcSr-rRrrr(r(r)rPrTz+getPhases..InCellPhase.endTagIgnorecSs.|jj|dddr||S|jdS)NrCrr)rArrrNrrr(r(r) endTagImplysz*getPhases..InCellPhase.endTagImplycSr%r&rnrr(r(r)r.r(z*getPhases..InCellPhase.endTagOtherrror)rrr2rrrN)r<r=r>rrrrrrr+rrPrr.r r0rrr1rr(rRr(r) InCellPhases0  rc seZdZeZddZddZddZddZd d Z d d Z d dZ ddZ ddZ ddZddZddZedjfdefdefde fde fde fgZe e_ede fdefdefgZee_dS) z getPhases..InSelectPhasecSr;)Nr~rz eof-in-selectr<rEr(r(r)rr=z+getPhases..InSelectPhase.processEOFcSs$|ddkrdS|j|ddSr]rrr(r(r)rs z2getPhases..InSelectPhase.processCharacterscSs.|jjdjdkr|jj|j|dSrrArrCrrrr(r(r)startTagOptions z/getPhases..InSelectPhase.startTagOptioncSsL|jjdjdkr|jj|jjdjdkr|jj|j|dS)Nr~rrrrr(r(r)startTagOptgroup s   z1getPhases..InSelectPhase.startTagOptgroupcSs|jd|tddS)Nzunexpected-select-in-selectr)rNr endTagSelectrrr(r(r)r s z/getPhases..InSelectPhase.startTagSelectcSs>|jd|jjdddr|td|S|jjsJdS)Nzunexpected-input-in-selectrr)rNrrArrrrVrr(r(r)r s z.getPhases..InSelectPhase.startTagInputcSr%rar'rr(r(r)rJ r(z/getPhases..InSelectPhase.startTagScriptcSr-)Nzunexpected-start-tag-in-selectrCrrr(r(r)r+ r/z.getPhases..InSelectPhase.startTagOthercSs8|jjdjdkr|jjdS|jdddidS)Nr~runexpected-end-tag-in-selectrCrArrCrrNrrr(r(r) endTagOption s z-getPhases..InSelectPhase.endTagOptioncSsh|jjdjdkr|jjdjdkr|jj|jjdjdkr)|jjdS|jdddidS)Nr~rrrrCrrr(r(r)endTagOptgroup% s z/getPhases..InSelectPhase.endTagOptgroupcSsd|jjdddr%|jj}|jdkr|jj}|jdks|jdS|jjs+J|jdS)Nrr) rArrrrCrNrerVrrNr(r(r)r2 s     z-getPhases..InSelectPhase.endTagSelectcSr-)NrrCrrr(r(r)r.= r/z,getPhases..InSelectPhase.endTagOtherrrrr)rr*rrZN)r<r=r>rrrrrrrrrJr+rrrr.r r0rrr1rr(rRr(r) InSelectPhases:   rc@sneZdZeZddZddZddZddZd d Z d d Z e d efgZ ee _e d e fgZe e_dS)z'getPhases..InSelectInTablePhasecSrdNrrerEr(r(r)rU rz2getPhases..InSelectInTablePhase.processEOFcSr%rrfrr(r(r)rX r(z9getPhases..InSelectInTablePhase.processCharacterscSs(|jdd|di|td|S)Nz5unexpected-table-element-start-tag-in-select-in-tablerCr)rNrr.rrr(r(r)r[ sz5getPhases..InSelectInTablePhase.startTagTablecSr%rr'rr(r(r)r+` r(z5getPhases..InSelectInTablePhase.startTagOthercSs@|jdd|di|jj|dddr|td|SdS)Nz3unexpected-table-element-end-tag-in-select-in-tablerCrrr)rNrrArr.rrr(r(r)rOc s z3getPhases..InSelectInTablePhase.endTagTablecSr%rrnrr(r(r)r.i r(z3getPhases..InSelectInTablePhase.endTagOther)rrrrrrrrN)r<r=r>rrrrrr+rOr.r r0rr1rr(r(r(r)InSelectInTablePhaseR s( rcsBeZdZeZegdZddZfddZddZ dd Z d S) z(getPhases..InForeignContentPhase),rrrrrrrr|r*r r}rr)h1h2h3h4h5h6rrrrr~rrr4rrr'rrrrspanr!r subsuprr"r#rvarcSsiddddddddd d d d d ddddddddddddddddddd d!d"id#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdG}|dH|vr||dH|dH<dSdS)INaltglyphaltGlyph altglyphdef altGlyphDef altglyphitem altGlyphItem animatecolor animateColor animatemotion animateMotionanimatetransformanimateTransformclippathclipPathfeblendfeBlend fecolormatrix feColorMatrixfecomponenttransferfeComponentTransfer fecomposite feCompositefeconvolvematrixfeConvolveMatrixfediffuselightingfeDiffuseLightingfedisplacementmapfeDisplacementMapfedistantlightfeDistantLightfefloodfeFloodfefuncafeFuncAfefuncbfeFuncBfefuncgfeFuncGfefuncrfeFuncRfegaussianblurfeGaussianBlurfeimagefeImagefemergefeMerge femergenode feMergeNode femorphology feMorphologyfeoffsetfeOffset fepointlight fePointLightfespecularlightingfeSpecularLighting fespotlight feSpotLightfetilefeTile feturbulence feTurbulence foreignobject foreignObjectglyphrefglyphReflineargradientlinearGradientradialGradienttextPath)radialgradienttextpathrCr()rFr replacementsr(r(r)adjustSVGTagNames s      !" %z:getPhases..InForeignContentPhase.adjustSVGTagNamescsL|ddkr d|d<n|jjrtdd|dDrd|j_||dS)Nrru�css|]}|tvVqdSr-rrr(r(r) szMgetPhases..InForeignContentPhase.processCharacters..F)rNrhrrrrRr(r)r s  z:getPhases..InForeignContentPhase.processCharacterscSsf|jjd}|d|jvs|ddkrpt|dhd@rp|jdd|di|jjdj|jjkrn|j |jjdsn|j |jjdsn|jj |jjdj|jjkrn|j |jjdsn|j |jjdrI|S|jt dkr~|j |n|jt dkr|||j||j||j|d <|j||d r|jj d |d <dSdS) Nr~rCrr>facesizecolorz*unexpected-html-element-in-foreign-contentrmrrorTr)rArbreakoutElementssetkeysrNrrorrtrurrrrrrr)rFrrr(r(r)r sH             z8getPhases..InForeignContentPhase.processStartTagcSst|jjd}|jjd}|jt|dkr#|jdd|di |jt|dkr`|jj|jj dkrE|jj |jjj |j_|jj |kr[|jjsSJ|jj |ksMd} |S|d8}|jj|}|j |jjkrrq#|jj|} |S)Nrr~rCrSTr@)rrArrCrqrrNrrcrKrYrrrorr)rFr nodeIndexrrr(r(r)r s,     z6getPhases..InForeignContentPhase.processEndTagN) r<r=r>rrrrrrrrr(rRr(r)InForeignContentPhasex s  ) rc@sveZdZeZddZddZddZddZd d Z d d Z d dZ e defgZe e_e de fgZe e_dS)z!getPhases..AfterBodyPhasecSrr-r(rEr(r(r)r z,getPhases..AfterBodyPhase.processEOFcSr)Nrrrr(r(r)r rz0getPhases..AfterBodyPhase.processCommentcS |jd|jjd|j_|S)Nzunexpected-char-after-bodyrrNrrKrcrr(r(r)r  z3getPhases..AfterBodyPhase.processCharacterscSr%r&r'rr(r(r)r r(z.getPhases..AfterBodyPhase.startTagHtmlcS*|jdd|di|jjd|j_|S)Nzunexpected-start-tag-after-bodyrCrrrr(r(r)r+ r}z/getPhases..AfterBodyPhase.startTagOthercSs,|jjr |jddS|jjd|j_dS)Nz'unexpected-end-tag-after-body-innerhtmlafterAfterBody)rNrVrrKrc)rFrCr(r(r)r sz,getPhases..AfterBodyPhase.endTagHtmlcSr)Nzunexpected-end-tag-after-bodyrCrrrr(r(r)r. r}z-getPhases..AfterBodyPhase.endTagOtherrN)r<r=r>rrrrrrr+rr.r r0rr1rr(r(r(r)AfterBodyPhase s rcseZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e djfdefdefde fgZe e_e de fgZe e_dS)z"getPhases..InFramesetPhasecSr;)Nr~rzeof-in-framesetr<rEr(r(r)r r=z-getPhases..InFramesetPhase.processEOFcSr)Nzunexpected-char-in-framesetrrr(r(r)r" rvz4getPhases..InFramesetPhase.processCharacterscSr_r-)rArrr(r(r)rm% rvz3getPhases..InFramesetPhase.startTagFramesetcSs|j||jjdSr-r6rr(r(r) startTagFrame( r8z0getPhases..InFramesetPhase.startTagFramecSr%r&r'rr(r(r)startTagNoframes, r(z3getPhases..InFramesetPhase.startTagNoframescSr-)Nz unexpected-start-tag-in-framesetrCrrr(r(r)r+/ r/z0getPhases..InFramesetPhase.startTagOthercSsb|jjdjdkr|jdn|jj|jjs-|jjdjdkr/|jjd|j_dSdSdS)Nr~rz)unexpected-frameset-in-frameset-innerhtmlr afterFrameset) rArrCrNrrrVrKrcrr(r(r)endTagFrameset3 s z1getPhases..InFramesetPhase.endTagFramesetcSr-)Nzunexpected-end-tag-in-framesetrCrrr(r(r)r.? r/z.getPhases..InFramesetPhase.endTagOtherrrr3rWN)r<r=r>rrrrrmrrr+rr.r r0rrr1rr(rRr(r)InFramesetPhase s*  rcsveZdZeZddZddZddZddZd d Z d d Z e d j fdefgZee_e d e fgZe e_dS)z%getPhases..AfterFramesetPhasecSrr-r(rEr(r(r)rT rz0getPhases..AfterFramesetPhase.processEOFcSr)Nzunexpected-char-after-framesetrrr(r(r)rX rvz7getPhases..AfterFramesetPhase.processCharacterscSr%rar'rr(r(r)r[ r(z6getPhases..AfterFramesetPhase.startTagNoframescSr-)Nz#unexpected-start-tag-after-framesetrCrrr(r(r)r+^ r/z3getPhases..AfterFramesetPhase.startTagOthercSs|jjd|j_dS)NafterAfterFrameset)rNrKrcrr(r(r)rb rz0getPhases..AfterFramesetPhase.endTagHtmlcSr-)Nz!unexpected-end-tag-after-framesetrCrrr(r(r)r.e r/z1getPhases..AfterFramesetPhase.endTagOtherrrWN)r<r=r>rrrrrr+rr.r r0rrr1rr(rRr(r)AfterFramesetPhaseP s" rc@s`eZdZeZddZddZddZddZd d Z d d Z d dZ e de fgZe e_dS)z&getPhases..AfterAfterBodyPhasecSrr-r(rEr(r(r)rw rz1getPhases..AfterAfterBodyPhase.processEOFcSrr-rrr(r(r)rz rz5getPhases..AfterAfterBodyPhase.processCommentcSr%r&rbrr(r(r)r} r(z=getPhases..AfterAfterBodyPhase.processSpaceCharacterscSr)Nexpected-eof-but-got-charrrrr(r(r)r rz8getPhases..AfterAfterBodyPhase.processCharacterscSr%r&r'rr(r(r)r r(z3getPhases..AfterAfterBodyPhase.startTagHtmlcSr)Nexpected-eof-but-got-start-tagrCrrrr(r(r)r+ r}z4getPhases..AfterAfterBodyPhase.startTagOthercSr)Nexpected-eof-but-got-end-tagrCrrrr(r(r)r r}z4getPhases..AfterAfterBodyPhase.processEndTagrN)r<r=r>rrrrrrrr+rr r0rr1r(r(r(r)AfterAfterBodyPhaset s r c@sneZdZeZddZddZddZddZd d Z d d Z d dZ ddZ e de fde fgZe e_dS)z*getPhases..AfterAfterFramesetPhasecSrr-r(rEr(r(r)r rz5getPhases..AfterAfterFramesetPhase.processEOFcSrr-rrr(r(r)r rz9getPhases..AfterAfterFramesetPhase.processCommentcSr%r&rbrr(r(r)r r(zAgetPhases..AfterAfterFramesetPhase.processSpaceCharacterscSr)Nrrrr(r(r)r rvz.AfterAfterFramesetPhase.processCharacterscSr%r&r'rr(r(r)r r(z7getPhases..AfterAfterFramesetPhase.startTagHtmlcSr%rar'rr(r(r)startTagNoFrames r(z;getPhases..AfterAfterFramesetPhase.startTagNoFramescSr-)Nr rCrrr(r(r)r+ r/z8getPhases..AfterAfterFramesetPhase.startTagOthercSr-)Nr rCrrr(r(r)r r/z8getPhases..AfterAfterFramesetPhase.processEndTagrrWN)r<r=r>rrrrrrrr r+rr r0rr1r(r(r(r)AfterAfterFramesetPhase s r rZrYrr)rGrLrrrr@rrrrrrr)rrrrrr)r)rLr\rrrr2r`rjrpr9rSrpryrrrrrrrrrr r r()rtrUrr)rJsH%-f?BY!/F@bYLc&r.8$%%     rJcsJt|dt@}|r#t|dfdd|dD|d<dSdS)Nrc3s$|] \}}|||fVqdSr-)r)rBkvrr(r)r sz$adjust_attributes..)rr2r.)rrneeds_adjustmentr(rr)r s  rrzFcCs|duri}t||||dS)N)r2rCrr)r)rCr2rprr(r(r)r s  rc@seZdZdZdS)r}zError in parsed documentN)r<r=r>rr(r(r(r)r} sr})rT)r*rT)rzNF), __future__rrrpip._vendor.sixrrr0r rr r treebuilders.baser r constantsr rrrrrrrrrrrrrrrrr"r,r@r&r!memoizerJrr Exceptionr}r(r(r(r)sP     H  8 _