U ÀÒ.e³Ðã@sddlmZmZmZddlmZmZddlZddlm Z ddl m Z ddl m Z ddl m Z dd lmZdd l mZdd lmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"d!dd„Z#d"dd„Z$dd„Z%Gdd„de&ƒZ'ej(dd„ƒZ)dd„Z*d#dd„Z+Gdd „d e,ƒZ-dS)$é)Úabsolute_importÚdivisionÚunicode_literals)Úwith_metaclassÚviewkeysN)Ú OrderedDicté)Ú _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|f|Ž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('

This is a doc

') ©ÚnamespaceHTMLElements)r ÚgetTreeBuilderÚ HTMLParserÚparse)ÚdocÚ treebuilderr ÚkwargsÚtbÚp©r)úD/usr/lib/python3.8/site-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%r r&r'r(r)r)r*r-2s  r-csG‡fdd„dtƒ}|S)NcseZdZ‡fdd„ZdS)z-method_decorator_metaclass..Decoratedcs>| ¡D]$\}}t|tjƒr$ˆ|ƒ}|||<qt ||||¡S©N)ÚitemsÚ isinstanceÚtypesÚ FunctionTypeÚtypeÚ__new__)ÚmetaZ classnameÚbasesZ classDictZ attributeNameZ attribute©Úfunctionr)r*r4Ms   z5method_decorator_metaclass..Decorated.__new__N)Ú__name__Ú __module__Ú __qualname__r4r)r7r)r*Ú DecoratedLsr<)r3)r8r<r)r7r*Úmethod_decorator_metaclassKsr=c@sªeZdZdZd+dd„Zd,dd „Zd d „Zed d „ƒZdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zd-dd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„ZdS).r"z]HTML parser Generates a tree structure from a stream of (possibly malformed) HTML. NFTcsL|ˆ_|dkrt d¡}||ƒˆ_gˆ_t‡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 Nrcs g|]\}}||ˆˆjƒf‘qSr))Útree)Ú.0ÚnameÚcls©Úselfr)r*Ú zsz'HTMLParser.__init__..) Ústrictr r!r>ÚerrorsÚdictÚ getPhasesr/Úphases)rCr>rEr Údebugr)rBr*Ú__init__^s    ÿzHTMLParser.__init__r+cKsh||_||_||_tj|fd|i|—Ž|_| ¡z | ¡Wn$tk rb| ¡| ¡YnXdS)NÚparser) Ú innerHTMLModer,Ú scriptingr Z HTMLTokenizerÚ tokenizerÚresetÚmainLoopr)rCÚstreamÚ innerHTMLr,rNr&r)r)r*Ú_parse}s zHTMLParser._parsecCsÄ|j ¡d|_g|_g|_d|_|jrœ|j ¡|_ |j t krL|j j |j _ n0|j tkrd|j j|j _ n|j dkr||j j|j _ n|jd|_|j ¡| ¡nd|_ |jd|_d|_d|_d|_dS)NFz no quirksÚ plaintextÚ beforeHtmlÚinitialT)r>rPÚ firstStartTagrFÚlogÚ compatModerMr,ÚlowerrSrrOÚ rcdataStateÚstaterÚ rawtextStateÚplaintextStaterIÚphaseÚinsertHtmlElementÚresetInsertionModeZ lastPhaseZbeforeRCDataPhaseÚ framesetOKrBr)r)r*rP‹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 rONr)ÚhasattrrOrRÚ charEncodingr@rBr)r)r*ÚdocumentEncoding­s zHTMLParser.documentEncodingcCsJ|jdkr6|jtdkr6d|jko4|jd t¡dkS|j|jftkSdS)Núannotation-xmlÚmathmlÚencoding)z text/htmlzapplication/xhtml+xml)r@Ú namespacerÚ attributesÚ translaterr©rCÚelementr)r)r*ÚisHTMLIntegrationPoint·s  ÿ  ÿþÿz!HTMLParser.isHTMLIntegrationPointcCs|j|jftkSr.)rjr@rrmr)r)r*ÚisMathMLTextIntegrationPointÁsz'HTMLParser.isMathMLTextIntegrationPointcCsXtd}td}td}td}td}td}td}| ¡D]â}d} |} | dk rø| } |jjrp|jjdnd} | r~| jnd} | rŒ| jnd} | d }||kr¾| | d |  d i¡¡d} qNt|jjƒd ksd| |jj ksd|  | ¡r||kr |d t ddgƒksd|||fksd| t dkrH| dkrH||krH|d dksd|  | ¡rl||||fkrl|j}n |jd}||krŒ| | ¡} qN||kr¢| | ¡} qN||kr¸| | ¡} qN||krÎ| | ¡} qN||krä| | ¡} qN||krN| | ¡} qN||kr@| dr@| ds@| dd | d i¡q@d}g}|rT| |j¡|j ¡}|r.q.dS)NÚ CharactersZSpaceCharactersÚStartTagÚEndTagÚCommentZDoctypeÚ ParseErroréÿÿÿÿr3ÚdataÚdatavarsrr@ZmglyphZ malignmarkrhrgÚsvgÚinForeignContentÚ selfClosingÚselfClosingAcknowledgedz&non-void-element-with-trailing-solidusT)rÚnormalizedTokensr>Ú openElementsrjr@Ú parseErrorÚgetÚlenÚdefaultNamespacerpÚ frozensetrror`rIÚprocessCharactersÚprocessSpaceCharactersÚprocessStartTagÚ processEndTagÚprocessCommentÚprocessDoctypeÚappendÚ processEOF)rCZCharactersTokenZSpaceCharactersTokenZ StartTagTokenZ EndTagTokenZ CommentTokenZ DoctypeTokenZParseErrorTokenÚtokenZ prev_tokenÚ new_tokenÚ currentNodeZcurrentNodeNamespaceZcurrentNodeNamer3r`Z reprocessrIr)r)r*rQÄsŠ  ÿþýü û úùø ÷ ö õ             ÿ ÿ  zHTMLParser.mainLoopccs|jD]}| |¡VqdSr.)rOÚnormalizeToken©rCrŒr)r)r*r}s zHTMLParser.normalizedTokenscOs |j|ddf|ž|Ž|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('

This is a doc

') FN)rTr>Z getDocument©rCrRÚargsr&r)r)r*r# szHTMLParser.parsecOs|j|df|ž|Ž|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('this is a fragment') T)rTr>Z getFragmentr‘r)r)r*r-$szHTMLParser.parseFragmentúXXX-undefined-errorcCs@|dkr i}|j |jj ¡||f¡|jrr~r@rSrjr‚rIr`)rCZlastZnewModesÚnodeZnodeNameZ new_phaser)r)r*rb`s@ò zHTMLParser.resetInsertionModecCsF|j |¡|dkr"|jj|j_n |jj|j_|j|_|jd|_dS)NÚRAWTEXTÚtext) r>Ú insertElementrOr^r]r\r`Ú originalPhaserI)rCrŒZ contentTyper)r)r*ÚparseRCDataRawtextŒs   zHTMLParser.parseRCDataRawtext)NFTF)Fr+F)r“N)r9r:r;Ú__doc__rKrTrPÚpropertyrfrorprQr}r#r-rrrrrr˜rbr¶r)r)r)r*r"Ws(  "  C  ,r"cs"dd„}dd„}Gdd„dt|||ƒƒƒ‰Gdd„dˆƒ}Gd d „d ˆƒ}G‡fd d „d ˆƒ}G‡fd d„dˆƒ}G‡fdd„dˆƒ}G‡fdd„dˆƒ}G‡fdd„dˆƒ} G‡fdd„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&ˆƒ}G‡fd'd(„d(ˆƒ}G‡fd)d*„d*ˆƒ}G‡fd+d,„d,ˆƒ}G‡fd-d.„d.ˆƒ}G‡fd/d0„d0ˆƒ}G‡fd1d2„d2ˆƒ}G‡fd3d4„d4ˆƒ}||||||| | | | | ||||||||||||d5œS)6Ncs(tdd„t ¡Dƒƒ‰‡‡fdd„}|S)z4Logger that records which phase processes each tokencss|]\}}||fVqdSr.r))r?ÚkeyÚvaluer)r)r*Ú  sz)getPhases..log..cs®ˆj d¡ršt|ƒdkrš|d}zdˆ|di}Wn‚YnX|dtkr\|d|d<|jj |jjjj|jj j j|j jˆj|f¡ˆ|f|ž|ŽSˆ|f|ž|ŽSdS)NZprocessrr3r@) r9Ú startswithrrrLrYrŠrOr]r`Ú __class__)rCr’r&rŒÚinfo©r8Z type_namesr)r*Úwrapped£s    üz'getPhases..log..wrapped)rGrr/)r8rÀr)r¿r*rYžs ÿzgetPhases..logcSs|r t|ƒStSdSr.)r=r3)Z use_metaclassZmetaclass_funcr)r)r*Ú getMetaclass·szgetPhases..getMetaclassc@sXeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dS)zgetPhases..PhasezNBase class for helper object that implements each phase of processing cSs||_||_dSr.)rLr>©rCrLr>r)r)r*rKÂsz!getPhases..Phase.__init__cSst‚dSr.)ÚNotImplementedErrorrBr)r)r*r‹Æsz#getPhases..Phase.processEOFcSs|j ||jjd¡dS)Nrv©r>Ú insertCommentr~rr)r)r*rˆÉsz'getPhases..Phase.processCommentcSs|j d¡dS)Nzunexpected-doctype©rLrrr)r)r*r‰Îsz'getPhases..Phase.processDoctypecSs|j |d¡dS©Nrw©r>Ú insertTextrr)r)r*r„Ñsz*getPhases..Phase.processCharacterscSs|j |d¡dSrÇrÈrr)r)r*r…Ôsz/getPhases..Phase.processSpaceCharacterscSs|j|d|ƒS©Nr@)ÚstartTagHandlerrr)r)r*r†×sz(getPhases..Phase.processStartTagcSsf|jjs |ddkr |j d¡|d ¡D],\}}||jjdjkr,||jjdj|<q,d|j_dS)Nr@r°z non-html-rootrwrF)rLrXrr/r>r~rk©rCrŒÚattrrºr)r)r*Ú startTagHtmlÚs  z%getPhases..Phase.startTagHtmlcSs|j|d|ƒSrÊ)Ú endTagHandlerrr)r)r*r‡äsz&getPhases..Phase.processEndTagN) r9r:r;r·rKr‹rˆr‰r„r…r†rÎr‡r)r)r)r*ÚPhase¾s rÐc@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)zgetPhases..InitialPhasecSsdSr.r)rr)r)r*r…èsz6getPhases..InitialPhase.processSpaceCharacterscSs|j ||jj¡dSr.©r>rÅZdocumentrr)r)r*rˆësz.getPhases..InitialPhase.processCommentcSsü|d}|d}|d}|d}|dks@|dk s@|dk rL|dkrL|j d¡|dkrXd}|j |¡|dkrv| t¡}|rº|ddksº| d ¡sº|d ksº| d ¡rª|dksº|rÄ| ¡d krÄd |j_n$| d¡sà| d ¡rè|dk rèd|j_|jj d|j_ dS)Nr@Ú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 quirksrV) rLrr>Z insertDoctyperlrr¼r[rZrIr`)rCrŒr@rÒrÓrÔr)r)r*r‰îsXÿÿ   ÿÿ9Ç<ÿÄ?Á@À@ ÀA ÿÿýúz.getPhases..InitialPhase.processDoctypecSsd|j_|jjd|j_dS)NrÖrV)rLrZrIr`rBr)r)r*Ú anythingElseMsz,getPhases..InitialPhase.anythingElsecSs|j d¡| ¡|S)Nzexpected-doctype-but-got-chars©rLrr×rr)r)r*r„Qs z1getPhases..InitialPhase.processCharacterscSs"|j dd|di¡| ¡|S)Nz"expected-doctype-but-got-start-tagr@rØrr)r)r*r†Vs  ÿz/getPhases..InitialPhase.processStartTagcSs"|j dd|di¡| ¡|S)Nz expected-doctype-but-got-end-tagr@rØrr)r)r*r‡\s  ÿz-getPhases..InitialPhase.processEndTagcSs|j d¡| ¡dS)Nzexpected-doctype-but-got-eofTrØrBr)r)r*r‹bs z*getPhases..InitialPhase.processEOFN) r9r:r;r…rˆr‰r×r„r†r‡r‹r)r)r)r*Ú InitialPhaseçs_rÙc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)z"getPhases..BeforeHtmlPhasecSs&|j tddƒ¡|jjd|j_dS)Nr°rrr¢)r>Z insertRootÚimpliedTagTokenrLrIr`rBr)r)r*raisz4getPhases..BeforeHtmlPhase.insertHtmlElementcSs | ¡dS©NT©rarBr)r)r*r‹nsz-getPhases..BeforeHtmlPhase.processEOFcSs|j ||jj¡dSr.rÑrr)r)r*rˆrsz1getPhases..BeforeHtmlPhase.processCommentcSsdSr.r)rr)r)r*r…usz9getPhases..BeforeHtmlPhase.processSpaceCharacterscSs | ¡|Sr.rÜrr)r)r*r„xsz4getPhases..BeforeHtmlPhase.processCharacterscSs |ddkrd|j_| ¡|S)Nr@r°T)rLrXrarr)r)r*r†|s z2getPhases..BeforeHtmlPhase.processStartTagcSs4|ddkr$|j dd|di¡n | ¡|SdS)Nr@©r­r®r°Úbrzunexpected-end-tag-before-html)rLrrarr)r)r*r‡‚s   ÿz0getPhases..BeforeHtmlPhase.processEndTagN) r9r:r;rar‹rˆr…r„r†r‡r)r)r)r*ÚBeforeHtmlPhasegsrßcsXeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)z"getPhases..BeforeHeadPhasecsVˆ |||¡t d|jfd|jfg¡|_|j|j_t d|jfg¡|_ |j |j _dS)Nr°r­rÝ) rKr ÚMethodDispatcherrÎÚ startTagHeadrËÚ startTagOtherÚdefaultÚendTagImplyHeadrÏÚ endTagOtherr©rÐr)r*rK‹sþ ÿz+getPhases..BeforeHeadPhase.__init__cSs| tddƒ¡dS)Nr­rrT©rárÚrBr)r)r*r‹™sz-getPhases..BeforeHeadPhase.processEOFcSsdSr.r)rr)r)r*r…sz9getPhases..BeforeHeadPhase.processSpaceCharacterscSs| tddƒ¡|S©Nr­rrrçrr)r)r*r„ sz4getPhases..BeforeHeadPhase.processCharacterscSs|jjd |¡S©Nr ©rLrIr†rr)r)r*rΤsz/getPhases..BeforeHeadPhase.startTagHtmlcSs0|j |¡|jjd|j_|jjd|j_dS)NrvÚinHead)r>r´r~Ú headPointerrLrIr`rr)r)r*rá§s z/getPhases..BeforeHeadPhase.startTagHeadcSs| tddƒ¡|Srèrçrr)r)r*râ¬sz0getPhases..BeforeHeadPhase.startTagOthercSs| tddƒ¡|Srèrçrr)r)r*rä°sz2getPhases..BeforeHeadPhase.endTagImplyHeadcSs|j dd|di¡dS)Nzend-tag-after-implied-rootr@rÆrr)r)r*rå´s ÿz.getPhases..BeforeHeadPhase.endTagOtherN) r9r:r;rKr‹r…r„rÎrárârärår)rær)r*ÚBeforeHeadPhaseŠs rícseZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!S)"zgetPhases..InHeadPhasec sŽˆ |||¡t d|jfd|jfd|jfd|jfd|jfd|jfd|j fd|j fg¡|_ |j |j _ t d|jfd |jfg¡|_|j|j_ dS) Nr°Útitle)ÚnoframesÚstyleÚnoscriptÚscript)ÚbaseÚbasefontÚbgsoundÚcommandÚlinkr5r­)rÞr°r®)rKr ràrÎÚ startTagTitleÚstartTagNoFramesStyleÚstartTagNoscriptÚstartTagScriptÚstartTagBaseLinkCommandÚ startTagMetarárËrârãÚ endTagHeadÚendTagHtmlBodyBrrÏrårÂrær)r*rK¹s&ÿ÷ þz'getPhases..InHeadPhase.__init__cSs | ¡dSrÛ©r×rBr)r)r*r‹Ðsz)getPhases..InHeadPhase.processEOFcSs | ¡|Sr.rrr)r)r*r„Ôsz0getPhases..InHeadPhase.processCharacterscSs|jjd |¡Srérêrr)r)r*rÎØsz+getPhases..InHeadPhase.startTagHtmlcSs|j d¡dS)Nz!two-heads-are-not-better-than-onerÆrr)r)r*ráÛsz+getPhases..InHeadPhase.startTagHeadcSs$|j |¡|jj ¡d|d<dS©NTr|©r>r´r~Úpoprr)r)r*rüÞs  z6getPhases..InHeadPhase.startTagBaseLinkCommandcSs´|j |¡|jj ¡d|d<|d}|jjjjddkr°d|krZ|jjj |d¡nVd|kr°d|kr°|d  ¡d kr°t   |d  d ¡¡}t   |¡}| ¡}|jjj |¡dS) NTr|rwrZ tentativeÚcharsetZcontentz http-equivz content-typezutf-8)r>r´r~rrLrOrRreZchangeEncodingr[r Z EncodingBytesÚencodeZContentAttrParserr#)rCrŒrkrwrLÚcodecr)r)r*rýãs   ÿþ z+getPhases..InHeadPhase.startTagMetacSs|j |d¡dS)NZRCDATA©rLr¶rr)r)r*røøsz,getPhases..InHeadPhase.startTagTitlecSs|j |d¡dS)Nr²rrr)r)r*rùûsz4getPhases..InHeadPhase.startTagNoFramesStylecSs8|jjr|j |d¡n|j |¡|jjd|j_dS)Nr²ÚinHeadNoscript)rLrNr¶r>r´rIr`rr)r)r*rúÿs z/getPhases..InHeadPhase.startTagNoscriptcSs<|j |¡|jjj|jj_|jj|j_|jjd|j_dS)Nr³) r>r´rLrOZscriptDataStater]r`rµrIrr)r)r*rûs  z-getPhases..InHeadPhase.startTagScriptcSs | ¡|Sr.rrr)r)r*râ sz,getPhases..InHeadPhase.startTagOthercSs"|jjj ¡}|jjd|j_dS)NÚ afterHead©rLr>r~rrIr`©rCrŒr±r)r)r*rþsz)getPhases..InHeadPhase.endTagHeadcSs | ¡|Sr.rrr)r)r*rÿsz/getPhases..InHeadPhase.endTagHtmlBodyBrcSs|j dd|di¡dS©Núunexpected-end-tagr@rÆrr)r)r*råsz*getPhases..InHeadPhase.endTagOthercSs| tdƒ¡dS)Nr­)rþrÚrBr)r)r*r×sz+getPhases..InHeadPhase.anythingElseN)r9r:r;rKr‹r„rÎrárürýrørùrúrûrârþrÿrår×r)rær)r*Ú InHeadPhase¸s  rcsxeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)z&getPhases..InHeadNoscriptPhasecsfˆ |||¡t d|jfd|jfd|jfg¡|_|j|j_t d|j fd|j fg¡|_ |j |j _dS)Nr°)rôrõr÷r5rïrð)r­rñrñrÞ) rKr ràrÎrüÚstartTagHeadNoscriptrËrârãÚendTagNoscriptÚendTagBrrÏrårÂrær)r*rK sý þz/getPhases..InHeadNoscriptPhase.__init__cSs|j d¡| ¡dS)Nzeof-in-head-noscriptTrØrBr)r)r*r‹0s z1getPhases..InHeadNoscriptPhase.processEOFcSs|jjd |¡S©Nrë)rLrIrˆrr)r)r*rˆ5sz5getPhases..InHeadNoscriptPhase.processCommentcSs|j d¡| ¡|S)Nzchar-in-head-noscriptrØrr)r)r*r„8s z8getPhases..InHeadNoscriptPhase.processCharacterscSs|jjd |¡Sr©rLrIr…rr)r)r*r…=sz=getPhases..InHeadNoscriptPhase.processSpaceCharacterscSs|jjd |¡Srérêrr)r)r*rÎ@sz3getPhases..InHeadNoscriptPhase.startTagHtmlcSs|jjd |¡Srrêrr)r)r*rüCsz>getPhases..InHeadNoscriptPhase.startTagBaseLinkCommandcSs|j dd|di¡dS©Núunexpected-start-tagr@rÆrr)r)r*rFsz;getPhases..InHeadNoscriptPhase.startTagHeadNoscriptcSs"|j dd|di¡| ¡|S©Nzunexpected-inhead-noscript-tagr@rØrr)r)r*râIsz4getPhases..InHeadNoscriptPhase.startTagOthercSs"|jjj ¡}|jjd|j_dSrr r r)r)r*rNsz5getPhases..InHeadNoscriptPhase.endTagNoscriptcSs"|j dd|di¡| ¡|SrrØrr)r)r*rSsz/getPhases..InHeadNoscriptPhase.endTagBrcSs|j dd|di¡dSr rÆrr)r)r*råXsz2getPhases..InHeadNoscriptPhase.endTagOthercSs| tdƒ¡dS)Nrñ)rrÚrBr)r)r*r×[sz3getPhases..InHeadNoscriptPhase.anythingElseN)r9r:r;rKr‹rˆr„r…rÎrürrârrrår×r)rær)r*ÚInHeadNoscriptPhases rcspeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„ZdS)z!getPhases..AfterHeadPhasecsnˆ |||¡t d|jfd|jfd|jfd|jfd|jfg¡|_|j |j_ t d|j fg¡|_ |j |j _ dS)Nr°r®r¯) rórôrõr÷r5rïròrðrîr­)r®r°rÞ)rKr ràrÎÚ startTagBodyÚstartTagFramesetÚstartTagFromHeadrárËrârãrÿrÏrårÂrær)r*rK`sþù ÿ z*getPhases..AfterHeadPhase.__init__cSs | ¡dSrÛrrBr)r)r*r‹qsz,getPhases..AfterHeadPhase.processEOFcSs | ¡|Sr.rrr)r)r*r„usz3getPhases..AfterHeadPhase.processCharacterscSs|jjd |¡Srérêrr)r)r*rÎysz.getPhases..AfterHeadPhase.startTagHtmlcSs(d|j_|j |¡|jjd|j_dS)NFr )rLrcr>r´rIr`rr)r)r*r|s z.getPhases..AfterHeadPhase.startTagBodycSs |j |¡|jjd|j_dS)Nr¡)r>r´rLrIr`rr)r)r*rs z2getPhases..AfterHeadPhase.startTagFramesetcSsr|j dd|di¡|jj |jj¡|jjd |¡|jjddd…D] }|jdkrL|jj  |¡qnqLdS)Nz#unexpected-start-tag-out-of-my-headr@rërvr­) rLrr>r~rŠrìrIr†r@Úremover r)r)r*r…s ÿ z2getPhases..AfterHeadPhase.startTagFromHeadcSs|j dd|di¡dSrrÆrr)r)r*rász.getPhases..AfterHeadPhase.startTagHeadcSs | ¡|Sr.rrr)r)r*râ’sz/getPhases..AfterHeadPhase.startTagOthercSs | ¡|Sr.rrr)r)r*rÿ–sz2getPhases..AfterHeadPhase.endTagHtmlBodyBrcSs|j dd|di¡dSr rÆrr)r)r*råšsz-getPhases..AfterHeadPhase.endTagOthercSs.|j tddƒ¡|jjd|j_d|j_dS)Nr®rrr T)r>r´rÚrLrIr`rcrBr)r)r*r×sz.getPhases..AfterHeadPhase.anythingElseN)r9r:r;rKr‹r„rÎrrrrárârÿrår×r)rær)r*ÚAfterHeadPhase_s  rcs¨eZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?d@„Z"dAdB„Z#dCdD„Z$dEdF„Z%dGdH„Z&dIdJ„Z'dKdL„Z(dMdN„Z)dOdP„Z*dQdR„Z+dSdT„Z,dUdV„Z-dWdX„Z.dYdZ„Z/d[d\„Z0d]d^„Z1d_d`„Z2dadb„Z3dcdd„Z4dedf„Z5dgS)hzgetPhases..InBodyPhasec$sžˆ |||¡|j|_t d|jfd|jfd|jfd|jfd|j ft |j fd|j fd|j fd|jfd |jfd |jfd |jfd |jfd |jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|jfd|j fd|j!fd|j"fd|j#fd|j$fd|j%fd |j&fg!¡|_'|j(|j'_)t d|j*fd|j+fd!|j,fd|j-fd"|j.fd#|j/ft |j0fd$|j1fd|j2fd%|j3fg ¡|_4|j5|j4_)dS)&Nr°) rórôrõrör÷r5ròrðrîr®r¯)ÚaddressÚarticleÚasideÚ blockquoteÚcenterÚdetailsÚdirr+ÚdlÚfieldsetÚ figcaptionÚfigureÚfooterÚheaderÚhgroupÚmainÚmenuÚnavÚolr(ÚsectionÚsummaryÚul)ÚpreÚlistingÚform)ÚliÚddÚdtrUÚa) ÚbÚbigÚcodeÚemÚfontÚiÚsÚsmallÚstrikeÚstrongÚttÚuÚnobrÚbutton)ZappletZmarqueeÚobjectZxmpr¬)ZarearÞÚembedÚimgÚkeygenZwbr)ZparamÚsourceZtrackÚinputÚhrÚimageÚisindexÚtextareaZiframerñ)Znoembedrïr£)ÚrpÚrt)ÚoptionÚoptgroupZmathry) rªÚcolr«Úframer­r§r¤r©r¥r¨r¦)rrrr rFr!r"Zdialogr#r+r$r%r&r'r(r)r*r3r+r,r-r.r2r/r0r1r()r6r7r5)r8r9r:r;r<r=r>rEr?r@rArBrCrDrÞ)6rKÚprocessSpaceCharactersNonPrer…r ràrÎÚstartTagProcessInHeadrrÚstartTagClosePrÚstartTagHeadingÚstartTagPreListingÚ startTagFormÚstartTagListItemÚstartTagPlaintextÚ startTagAÚstartTagFormattingÚ startTagNobrÚstartTagButtonÚstartTagAppletMarqueeObjectÚ startTagXmpÚ startTagTableÚstartTagVoidFormattingÚstartTagParamSourceÚ startTagInputÚ startTagHrÚ startTagImageÚstartTagIsIndexÚstartTagTextareaÚstartTagIFramerúÚstartTagRawtextÚstartTagSelectÚ startTagRpRtÚ startTagOptÚ startTagMathÚ startTagSvgÚstartTagMisplacedrËrârãÚ endTagBodyÚ endTagHtmlÚ endTagBlockÚ endTagFormÚendTagPÚendTagListItemÚ endTagHeadingÚendTagFormattingÚendTagAppletMarqueeObjectrrÏrårÂrær)r*rK¥s‚þüÿÿþ×- ýÿòz'getPhases..InBodyPhase.__init__cSs$|j|jko"|j|jko"|j|jkSr.)r@rjrk)rCZnode1Znode2r)r)r*ÚisMatchingFormattingElementìs   ÿ þz:getPhases..InBodyPhase.isMatchingFormattingElementcSsˆ|j |¡|jjd}g}|jjddd…D](}|tkr@qXq.| ||¡r.| |¡q.t|ƒdkrv|jj |d¡|jj |¡dS)Nrvé) r>r´r~ÚactiveFormattingElementsr r~rŠrr)rCrŒrnZmatchingElementsr±r)r)r*ÚaddFormattingElementòs     z3getPhases..InBodyPhase.addFormattingElementcSs>tdƒ}|jjddd…D]}|j|kr|j d¡q:qdS)N) r6r7r5r(r§r¤r©r¥r¨r¦r®r°rvz expected-closing-tag-but-got-eof)rƒr>r~r@rLr)rCZallowed_elementsr±r)r)r*r‹s   z)getPhases..InBodyPhase.processEOFcSsf|d}|j|_| d¡rH|jjdjdkrH|jjd ¡sH|dd…}|rb|j ¡|j |¡dS)NrwÚ rv)r2r3rPr) rWr…r¼r>r~r@Z hasContentÚ#reconstructActiveFormattingElementsrÉ)rCrŒrwr)r)r*Ú!processSpaceCharactersDropNewline s ÿþ  z@getPhases..InBodyPhase.processSpaceCharactersDropNewlinecSsT|ddkrdS|j ¡|j |d¡|jjrPtdd„|dDƒƒrPd|j_dS)NrwúcSsg|] }|tk‘qSr)©r©r?Úcharr)r)r*rD"sÿzDgetPhases..InBodyPhase.processCharacters..F)r>rƒrÉrLrcÚanyrr)r)r*r„s  ÿÿz0getPhases..InBodyPhase.processCharacterscSs|j ¡|j |d¡dSrÇ)r>rƒrÉrr)r)r*rW&s z;getPhases..InBodyPhase.processSpaceCharactersNonPrecSs|jjd |¡Srrêrr)r)r*rX*sz4getPhases..InBodyPhase.startTagProcessInHeadcSs||j dddi¡t|jjƒdksx|jjdjdkr6nBd|j_|d ¡D],\}}||jjdjkrJ||jjdj|<qJdS)Nrr@r®rFrw) rLrrr>r~r@rcr/rkrÌr)r)r*r-sÿz+getPhases..InBodyPhase.startTagBodycSsª|j dddi¡t|jjƒdks¦|jjdjdkr6np|jjs@nf|jjdjrj|jjdj |jjd¡|jjdjdkrŠ|jj  ¡qj|j  |¡|jj d|j_ dS) Nrr@r¯rr®rvr°r¡) rLrrr>r~r@rcÚparentÚ removeChildrr´rIr`rr)r)r*r8s" z/getPhases..InBodyPhase.startTagFramesetcSs.|jjdddr| tdƒ¡|j |¡dS©Nr(rF©Úvariant)r>ÚelementInScoperyrÚr´rr)r)r*rYFsz-getPhases..InBodyPhase.startTagClosePcSs>|jjdddr| tdƒ¡|j |¡d|j_|j|_dS)Nr(rFrF) r>rryrÚr´rLrcr„r…rr)r)r*r[Ks  z1getPhases..InBodyPhase.startTagPreListingcSsZ|jjr|j dddi¡n:|jjdddr:| tdƒ¡|j |¡|jjd|j_dS)Nrr@r4r(rFrrv) r>Ú formPointerrLrrryrÚr´r~rr)r)r*r\Rs  z+getPhases..InBodyPhase.startTagFormcSs¬d|j_dgddgddgdœ}||d}t|jjƒD]@}|j|kr^|jj t|jdƒ¡qx|j t kr6|jdkr6qxq6|jj d d d rœ|jj td dƒ¡|j  |¡dS) NFr5r7r6)r5r7r6r@rs)rr+r(r(rFr) rLrcÚreversedr>r~r@r`r‡rÚÚ nameTuplerrr´)rCrŒZ stopNamesMapZ stopNamesr±r)r)r*r][s*þ   ÿ ÿÿz/getPhases..InBodyPhase.startTagListItemcSs>|jjdddr| tdƒ¡|j |¡|jjj|jj_dSrŒ) r>rryrÚr´rLrOr_r]rr)r)r*r^qs z0getPhases..InBodyPhase.startTagPlaintextcSsb|jjdddr| tdƒ¡|jjdjtkrR|j dd|di¡|jj  ¡|j  |¡dS)Nr(rFrrvrr@) r>rryrÚr~r@rrLrrr´rr)r)r*rZws  z.getPhases..InBodyPhase.startTagHeadingcSs~|j d¡}|rf|j ddddœ¡| tdƒ¡||jjkrL|jj |¡||jjkrf|jj |¡|j  ¡|  |¡dS)Nr8ú$unexpected-start-tag-implies-end-tag©Z startNameZendName) r>Ú!elementInActiveFormattingElementsrLrr|rÚr~rr€rƒr)rCrŒZ afeAElementr)r)r*r_s ÿ   z(getPhases..InBodyPhase.startTagAcSs|j ¡| |¡dSr.)r>rƒrrr)r)r*r`Œs z1getPhases..InBodyPhase.startTagFormattingcSsP|j ¡|j d¡rB|j ddddœ¡| tdƒ¡|j ¡| |¡dS)NrEr“r”)r>rƒrrLrr‡rÚrrr)r)r*ras  ÿ z+getPhases..InBodyPhase.startTagNobrcSsT|j d¡r2|j ddddœ¡| tdƒ¡|S|j ¡|j |¡d|j_dS)NrFr“r”F) r>rrLrr‡rÚrƒr´rcrr)r)r*rbšs ÿ  z-getPhases..InBodyPhase.startTagButtoncSs0|j ¡|j |¡|jj t¡d|j_dS©NF)r>rƒr´r€rŠr rLrcrr)r)r*rc¥s  z:getPhases..InBodyPhase.startTagAppletMarqueeObjectcSsB|jjdddr| tdƒ¡|j ¡d|j_|j |d¡dS)Nr(rFrFr²)r>rryrÚrƒrLrcr¶rr)r)r*rd«s  z*getPhases..InBodyPhase.startTagXmpcSsR|jjdkr*|jjdddr*| tdƒ¡|j |¡d|j_|jjd|j_ dS)NrÖr(rFrFrŸ) rLrZr>rr‡rÚr´rcrIr`rr)r)r*re²s   z,getPhases..InBodyPhase.startTagTablecSs6|j ¡|j |¡|jj ¡d|d<d|j_dS)NTr|F)r>rƒr´r~rrLrcrr)r)r*rfºs    z5getPhases..InBodyPhase.startTagVoidFormattingcSs@|jj}| |¡d|dkr<|dd t¡dkr<||j_dS)Nr3rwÚhidden)rLrcrfrlr)rCrŒrcr)r)r*rhÁs   ÿz,getPhases..InBodyPhase.startTagInputcSs$|j |¡|jj ¡d|d<dSrrrr)r)r*rgÉs  z2getPhases..InBodyPhase.startTagParamSourcecSsJ|jjdddr| tdƒ¡|j |¡|jj ¡d|d<d|j_dS)Nr(rFrTr|F) r>rryrÚr´r~rrLrcrr)r)r*riÎs   z)getPhases..InBodyPhase.startTagHrcSs6|j ddddœ¡| tdd|d|dd¡dS) Nzunexpected-start-tag-treated-asrNrI©Z originalNameZnewNamerrrwr{©rkr{)rLrr†rÚrr)r)r*rjÖsÿ þz,getPhases..InBodyPhase.startTagImagecSs|j dddi¡|jjrdSi}d|dkr>|dd|d<| tdd|d¡| td dƒ¡| td dƒ¡d |dkrŒ|dd }nd }| td |dœ¡|d ¡}d|kr¾|d=d |krÌ|d =d|d<| tdd||dd¡|  td ƒ¡| td dƒ¡|  tdƒ¡dS)Nzdeprecated-tagr@rOÚactionrwr4rr)rkrMZlabelÚpromptz3This is a searchable index. Enter search keywords: rq©r3rwrLr{r™) rLrr>rr†rÚr„rÚcopyr‡)rCrŒZ form_attrsr›rkr)r)r*rkÞs<  ÿ  ÿ  þz.getPhases..InBodyPhase.startTagIsIndexcSs0|j |¡|jjj|jj_|j|_d|j_dSr–) r>r´rLrOr\r]r„r…rcrr)r)r*rlýs z/getPhases..InBodyPhase.startTagTextareacSsd|j_| |¡dSr–)rLrcrnrr)r)r*rmsz-getPhases..InBodyPhase.startTagIFramecSs"|jjr| |¡n | |¡dSr.)rLrNrnrârr)r)r*rús z/getPhases..InBodyPhase.startTagNoscriptcSs|j |d¡dS)z8iframe, noembed noframes, noscript(if scripting enabled)r²Nrrr)r)r*rn sz.getPhases..InBodyPhase.startTagRawtextcSs@|jjdjdkr$|jj tdƒ¡|j ¡|jj |¡dS©NrvrS) r>r~r@rLr`r‡rÚrƒr´rr)r)r*rqs z*getPhases..InBodyPhase.startTagOptcSsŒ|j ¡|j |¡d|j_|jj|jjd|jjd|jjd|jjd|jjd|jjdfkrx|jjd|j_n|jjd |j_dS) NFrŸrržrœr›ršÚinSelectInTabler™)r>rƒr´rLrcr`rIrr)r)r*ros       ûz-getPhases..InBodyPhase.startTagSelectcSsB|j d¡r2|j ¡|jjdjdkr2|j ¡|j |¡dS)NÚrubyrv)r>rÚgenerateImpliedEndTagsr~r@rLrr´rr)r)r*rp%s    z+getPhases..InBodyPhase.startTagRpRtcSsZ|j ¡|j |¡|j |¡td|d<|j |¡|drV|jj ¡d|d<dS)Nrhrjr{Tr|) r>rƒrLrrrr´r~rrr)r)r*rr,s      z+getPhases..InBodyPhase.startTagMathcSsZ|j ¡|j |¡|j |¡td|d<|j |¡|drV|jj ¡d|d<dS)Nryrjr{Tr|) r>rƒrLrrrr´r~rrr)r)r*rs8s      z*getPhases..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-ignoredr@NrÆrr)r)r*rtDsz0getPhases..InBodyPhase.startTagMisplacedcSs|j ¡|j |¡dSr.)r>rƒr´rr)r)r*râMs z,getPhases..InBodyPhase.startTagOthercSsœ|jjdddsD| tddƒ¡|j dddi¡| tddƒ¡nT|j d¡|jjdj dkrt|j dddi¡|jj  ¡}|j dkr˜|jj  ¡}q€dS) Nr(rFrrrr r@rsrv) r>rrYrÚrLrryr¡r~r@rr r)r)r*ryQs   z&getPhases..InBodyPhase.endTagPcSs~|j d¡s|j ¡dS|jjdjdkrj|jjdd…D],}|jtdƒkr<|j dd|jdœ¡qjq<|jjd|j_dS)Nr®rvé)r6r7r5rTrSr(rQrRr§r¤r©r¥r¨r¦r®r°ú$expected-one-end-tag-but-got-another©ZgotNameZ expectedNameÚ afterBody) r>rrLrr~r@rƒrIr`r r)r)r*ru^s   þz)getPhases..InBodyPhase.endTagBodycSs"|j d¡r| tdƒ¡|SdS)Nr®)r>rrurÚrr)r)r*rvps z)getPhases..InBodyPhase.endTagHtmlcSsŽ|ddkr|j|_|j |d¡}|r2|j ¡|jjdj|dkr^|j dd|di¡|rŠ|jj  ¡}|j|dkrŠ|jj  ¡}qndS)Nr@r2rvúend-tag-too-early) rWr…r>rr¡r~r@rLrr)rCrŒZinScoper±r)r)r*rwvs   z*getPhases..InBodyPhase.endTagBlockcSsv|jj}d|j_|dks$|j |¡s8|j dddi¡n:|j ¡|jjd|krd|j dddi¡|jj |¡dS)Nr r@r4rvzend-tag-too-early-ignored)r>rrrLrr¡r~rr r)r)r*rx„sÿ ÿz)getPhases..InBodyPhase.endTagFormcSs¬|ddkrd}nd}|jj|d|dsB|j dd|di¡nf|jj|dd|jjdj|dkr€|j dd|di¡|jj ¡}|j|dkr¨|jj ¡}qŒdS) Nr@r5Úlistrr ©Úexcludervr¦)r>rrLrr¡r~r@r)rCrŒrŽr±r)r)r*rz‘s  þ z-getPhases..InBodyPhase.endTagListItemcSs’tD]}|j |¡r|j ¡q$q|jjdj|dkrP|j dd|di¡tD]8}|j |¡rT|jj ¡}|jtkrˆ|jj ¡}qpqŽqTdS)Nrvr@r¦) rr>rr¡r~r@rLrr)rCrŒÚitemr)r)r*r{¢s     z,getPhases..InBodyPhase.endTagHeadingcSsd}|dkr |d7}|j |d¡}|rD||jjkrR|j |j¡sR| |¡dS||jjkr†|j dd|di¡|jj  |¡dS|j |j¡s®|j dd|di¡dS||jjdkrÔ|j d d|di¡|jj  |¡}d}|jj|d…D]}|j t krö|}qqö|dkrR|jj  ¡}||kr@|jj  ¡}q&|jj  |¡dS|jj|d}|jj  |¡}|} } d} |jj  | ¡} | d krX| d7} | d8} |jj| } | |jjkrÐ|jj  | ¡qŠ| |krÞqX| |krú|jj  | ¡d}|  ¡} | |jj|jj  | ¡<| |jj|jj  | ¡<| } | jrF| j | ¡|  | ¡| } qŠ| jrl| j | ¡|jtd ƒkr˜|j ¡\}}| | |¡n | | ¡| ¡} | | ¡| | ¡|jj  |¡|jj || ¡|jj  |¡|jj |jj  |¡d| ¡qdS) z)The much-feared adoption agency algorithmrérr@Nzadoption-agency-1.2zadoption-agency-4.4rvzadoption-agency-1.3r©r¬r§r©r¨r¦)r>r•r~rr@rårLrr€rÚindexr’rrZ cloneNoderŠr‹Z appendChildrƒZgetTableMisnestedNodePositionÚ insertBeforeZreparentChildrenÚinsert)rCrŒZouterLoopCounterZformattingElementZafeIndexZ furthestBlockrnZcommonAncestorZbookmarkZlastNoder±ZinnerLoopCounterr­ZclonerŠr®r)r)r*r|±s   ÿ ÿ þ          ÿ ÿÿ ÿ      ÿz/getPhases..InBodyPhase.endTagFormattingcSsŒ|j |d¡r|j ¡|jjdj|dkrF|j dd|di¡|j |d¡rˆ|jj ¡}|j|dkr~|jj ¡}qb|j ¡dS)Nr@rvr¦) r>rr¡r~r@rLrrÚclearActiveFormattingElements)rCrŒrnr)r)r*r}Ts  z8getPhases..InBodyPhase.endTagAppletMarqueeObjectcSs@|j ddddœ¡|j ¡|j tddƒ¡|jj ¡dS)Nzunexpected-end-tag-treated-asrÞz br elementr˜rr)rLrr>rƒr´rÚr~rrr)r)r*r`s ÿ z'getPhases..InBodyPhase.endTagBrcSs¤|jjddd…D]Œ}|j|dkrz|jj|dd|jjdj|dkrb|j dd|di¡|jj ¡|krtqbq q|jtkr|j dd|di¡q qdS)Nrvr@r¨r ) r>r~r@r¡rLrrr’rr r)r)r*rågs z*getPhases..InBodyPhase.endTagOtherN)6r9r:r;rKr~rr‹r„r„rWrXrrrYr[r\r]r^rZr_r`rarbrcrdrerfrhrgrirjrkrlrmrúrnrqrorprrrsrtrâryrurvrwrxrzr{r|r}rrår)rær)r*Ú InBodyPhase¢sh G             $ r±cs@eZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)zgetPhases..TextPhasecsFˆ |||¡t g¡|_|j|j_t d|jfg¡|_|j|j_dS)Nrò) rKr ràrËrârãÚ endTagScriptrÏrårÂrær)r*rKvs  ÿz%getPhases..TextPhase.__init__cSs|j |d¡dSrÇrÈrr)r)r*r„~sz.getPhases..TextPhase.processCharacterscSs8|j dd|jjdji¡|jj ¡|jj|j_dS)Nz&expected-named-closing-tag-but-got-eofr@rvT)rLrr>r~r@rrµr`rBr)r)r*r‹s ÿ  z'getPhases..TextPhase.processEOFcSsdSr.r)rr)r)r*râˆsz*getPhases..TextPhase.startTagOthercSs|jj ¡}|jj|j_dSr.©r>r~rrLrµr`r r)r)r*r²‹s z)getPhases..TextPhase.endTagScriptcSs|jj ¡|jj|j_dSr.r³rr)r)r*rå’s z(getPhases..TextPhase.endTagOtherN) r9r:r;rKr„r‹râr²rår)rær)r*Ú TextPhaseus  r´cs¨eZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'S)(zgetPhases..InTablePhasec sžˆ |||¡t d|jfd|jfd|jfd|jfd|jfd|jfd|j fd|j fd |j fd |j fg ¡|_ |j|j _t d|jfd |jfg¡|_|j|j_dS) Nr°rªr«rU©r§r©r¨)r¤r¥r¦r¬)rðròrLr4) r®rªrUr«r°r§r¤r©r¥r¨r¦)rKr ràrÎÚstartTagCaptionÚstartTagColgroupÚ startTagColÚstartTagRowGroupÚstartTagImplyTbodyreÚstartTagStyleScriptrhr\rËrârãÚ endTagTableÚ endTagIgnorerÏrårÂrær)r*rK˜s*ö ÿþz(getPhases..InTablePhase.__init__cSs$|jjdjdkr |jj ¡qdS)Nrv)r¬r°©r>r~r@rrBr)r)r*ÚclearStackToTableContext°sz8getPhases..InTablePhase.clearStackToTableContextcSs$|jjdjdkr |j d¡ndS)Nrvr°z eof-in-table©r>r~r@rLrrBr)r)r*r‹¹sz*getPhases..InTablePhase.processEOFcSs4|jj}|jjd|j_||jj_|jj |¡dS©NÚ inTableText)rLr`rIrµr…©rCrŒrµr)r)r*r…Às z6getPhases..InTablePhase.processSpaceCharacterscSs4|jj}|jjd|j_||jj_|jj |¡dSrÁ)rLr`rIrµr„rÃr)r)r*r„Æs z1getPhases..InTablePhase.processCharacterscSs&d|j_|jjd |¡d|j_dS)NTr F)r>ÚinsertFromTablerLrIr„rr)r)r*rÉÌsz*getPhases..InTablePhase.insertTextcSs6| ¡|jj t¡|j |¡|jjd|j_dS)Nr) r¿r>r€rŠr r´rLrIr`rr)r)r*r¶Ós z/getPhases..InTablePhase.startTagCaptioncSs(| ¡|j |¡|jjd|j_dS)Nrž©r¿r>r´rLrIr`rr)r)r*r·Ùs z0getPhases..InTablePhase.startTagColgroupcSs| tddƒ¡|S)Nr«rr)r·rÚrr)r)r*r¸Þsz+getPhases..InTablePhase.startTagColcSs(| ¡|j |¡|jjd|j_dS©NrœrÅrr)r)r*r¹âs z0getPhases..InTablePhase.startTagRowGroupcSs| tddƒ¡|S)Nr§rr)r¹rÚrr)r)r*rºçsz2getPhases..InTablePhase.startTagImplyTbodycSs6|j ddddœ¡|jj tdƒ¡|jjs2|SdS)Nr“r¬r”)rLrr`r‡rÚrSrr)r)r*reës ÿz-getPhases..InTablePhase.startTagTablecSs|jjd |¡Srrêrr)r)r*r»òsz3getPhases..InTablePhase.startTagStyleScriptcSsVd|dkrH|dd t¡dkrH|j d¡|j |¡|jj ¡n | |¡dS)Nr3rwr—z unexpected-hidden-input-in-table) rlrrLrr>r´r~rrârr)r)r*rhõs ÿ  z-getPhases..InTablePhase.startTagInputcSsD|j d¡|jjdkr@|j |¡|jjd|j_|jj ¡dS)Nzunexpected-form-in-tablerv)rLrr>rr´r~rrr)r)r*r\ÿs    z,getPhases..InTablePhase.startTagFormcSs<|j dd|di¡d|j_|jjd |¡d|j_dS)Nz)unexpected-start-tag-implies-table-voodoor@Tr F)rLrr>rÄrIr†rr)r)r*râsz-getPhases..InTablePhase.startTagOthercSs|jjdddr‚|j ¡|jjdjdkrJ|j dd|jjdjdœ¡|jjdjdkrj|jj ¡qJ|jj ¡|j ¡n |j ¡dS)Nr¬rrvzend-tag-too-early-namedr¤) r>rr¡r~r@rLrrrbrr)r)r*r¼ s  ÿÿ  z+getPhases..InTablePhase.endTagTablecSs|j dd|di¡dSr rÆrr)r)r*r½sz,getPhases..InTablePhase.endTagIgnorecSs<|j dd|di¡d|j_|jjd |¡d|j_dS)Nz'unexpected-end-tag-implies-table-voodoor@Tr F)rLrr>rÄrIr‡rr)r)r*rå sz+getPhases..InTablePhase.endTagOtherN)r9r:r;rKr¿r‹r…r„rÉr¶r·r¸r¹rºrer»rhr\râr¼r½rår)rær)r*Ú InTablePhase–s&   rÇcsPeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)z#getPhases..InTableTextPhasecsˆ |||¡d|_g|_dSr.)rKrµÚcharacterTokensrÂrær)r*rK(sz,getPhases..InTableTextPhase.__init__cSsdd dd„|jDƒ¡}tdd„|DƒƒrJtd|dœ}|jjd |¡n|rZ|j |¡g|_dS)NrÕcSsg|] }|d‘qS)rwr)©r?rªr)r)r*rD.szGgetPhases..InTableTextPhase.flushCharacters..cSsg|] }|tk‘qSr)r†rÉr)r)r*rD/srqrœrŸ)ÚjoinrÈr‰rrLrIrÉr>)rCrwrŒr)r)r*ÚflushCharacters-s z3getPhases..InTableTextPhase.flushCharacterscSs| ¡|j|j_|Sr.©rËrµrLr`rr)r)r*rˆ6s z2getPhases..InTableTextPhase.processCommentcSs| ¡|j|j_dSrÛrÌrBr)r)r*r‹;s z.getPhases..InTableTextPhase.processEOFcSs |ddkrdS|j |¡dS©Nrwr…©rÈrŠrr)r)r*r„@s z5getPhases..InTableTextPhase.processCharacterscSs|j |¡dSr.rÎrr)r)r*r…Esz:getPhases..InTableTextPhase.processSpaceCharacterscSs| ¡|j|j_|Sr.rÌrr)r)r*r†Js z3getPhases..InTableTextPhase.processStartTagcSs| ¡|j|j_|Sr.rÌrr)r)r*r‡Os z1getPhases..InTableTextPhase.processEndTagN) r9r:r;rKrËrˆr‹r„r…r†r‡r)rær)r*ÚInTableTextPhase's  rÏcs`eZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)z!getPhases..InCaptionPhasecsfˆ |||¡t d|jfd|jfg¡|_|j|j_t d|jfd|j fd|j fg¡|_ |j |j _dS)Nr°© rªrUr«r§r¤r©r¥r¨r¦rªr¬) r®rUr«r°r§r¤r©r¥r¨r¦) rKr ràrÎÚstartTagTableElementrËrârãÚ endTagCaptionr¼r½rÏrårÂrær)r*rKVs ÿþ ÿýz*getPhases..InCaptionPhase.__init__cSs|jjddd S)Nrªr¬r©r>rrBr)r)r*ÚignoreEndTagCaptionhsz5getPhases..InCaptionPhase.ignoreEndTagCaptioncSs|jjd ¡dSré©rLrIr‹rBr)r)r*r‹ksz,getPhases..InCaptionPhase.processEOFcSs|jjd |¡Sré©rLrIr„rr)r)r*r„nsz3getPhases..InCaptionPhase.processCharacterscSs0|j ¡| ¡}|jj tdƒ¡|s,|SdS©Nrª©rLrrÔr`r‡rÚ©rCrŒÚ ignoreEndTagr)r)r*rÑqs  z6getPhases..InCaptionPhase.startTagTableElementcSs|jjd |¡Srérêrr)r)r*râysz/getPhases..InCaptionPhase.startTagOthercSs˜| ¡sŠ|j ¡|jjdjdkrB|j dd|jjdjdœ¡|jjdjdkrb|jj ¡qB|jj ¡|j ¡|jj d|j_ n |j ¡dS)Nrvrªr£r¤rŸ) rÔr>r¡r~r@rLrrr°rIr`rr)r)r*rÒ|s  ÿÿ  z/getPhases..InCaptionPhase.endTagCaptioncSs0|j ¡| ¡}|jj tdƒ¡|s,|SdSr×rØrÙr)r)r*r¼Žs  z-getPhases..InCaptionPhase.endTagTablecSs|j dd|di¡dSr rÆrr)r)r*r½•sz.getPhases..InCaptionPhase.endTagIgnorecSs|jjd |¡Sré©rLrIr‡rr)r)r*rå˜sz-getPhases..InCaptionPhase.endTagOtherN) r9r:r;rKrÔr‹r„rÑrârÒr¼r½rår)rær)r*ÚInCaptionPhaseTs rÜcsXeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)z%getPhases..InColumnGroupPhasecs^ˆ |||¡t d|jfd|jfg¡|_|j|j_t d|jfd|j fg¡|_ |j |j _dS)Nr°rUr«) rKr ràrÎr¸rËrârãÚendTagColgroupÚ endTagColrÏrårÂrær)r*rKžsþ þz.getPhases..InColumnGroupPhase.__init__cSs|jjdjdkS)Nrvr°)r>r~r@rBr)r)r*ÚignoreEndTagColgroup­sz:getPhases..InColumnGroupPhase.ignoreEndTagColgroupcSs8|jjdjdkrdS| ¡}| tdƒ¡|s4dSdS)Nrvr°r«T)r>r~r@rßrÝrÚ)rCrÚr)r)r*r‹°s z0getPhases..InColumnGroupPhase.processEOFcSs"| ¡}| tdƒ¡|s|SdS©Nr«©rßrÝrÚrÙr)r)r*r„ºsz7getPhases..InColumnGroupPhase.processCharacterscSs$|j |¡|jj ¡d|d<dSrrrr)r)r*r¸Às  z1getPhases..InColumnGroupPhase.startTagColcSs"| ¡}| tdƒ¡|s|SdSràrárÙr)r)r*râÅsz3getPhases..InColumnGroupPhase.startTagOthercSs4| ¡r|j ¡n|jj ¡|jjd|j_dS©NrŸ)rßrLrr>r~rrIr`rr)r)r*rÝËs  z4getPhases..InColumnGroupPhase.endTagColgroupcSs|j dddi¡dS)Nz no-end-tagr@rUrÆrr)r)r*rÞÔsz/getPhases..InColumnGroupPhase.endTagColcSs"| ¡}| tdƒ¡|s|SdSràrárÙr)r)r*rå×sz1getPhases..InColumnGroupPhase.endTagOtherN) r9r:r;rKrßr‹r„r¸rârÝrÞrår)rær)r*ÚInColumnGroupPhase›s   rãcsxeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)z#getPhases..InTableBodyPhasecsvˆ |||¡t d|jfd|jfd|jfd|jfg¡|_|j|j_ t d|j fd|j fd|j fg¡|_ |j|j _ dS)Nr°r¦©r¤r¥)rªrUr«r§r©r¨rµr¬)r®rªrUr«r°r¤r¥r¦)rKr ràrÎÚ startTagTrÚstartTagTableCellÚstartTagTableOtherrËrârãÚendTagTableRowGroupr¼r½rÏrårÂrær)r*rKßs$ÿü ÿýz,getPhases..InTableBodyPhase.__init__cSs6|jjdjdkr |jj ¡q|jjdjdkr2dS)Nrv)r§r©r¨r°r°r¾rBr)r)r*ÚclearStackToTableBodyContextósz@getPhases..InTableBodyPhase.clearStackToTableBodyContextcSs|jjd ¡dSrârÕrBr)r)r*r‹ýsz.getPhases..InTableBodyPhase.processEOFcSs|jjd |¡Srârrr)r)r*r…sz:getPhases..InTableBodyPhase.processSpaceCharacterscSs|jjd |¡SrârÖrr)r)r*r„sz5getPhases..InTableBodyPhase.processCharacterscSs(| ¡|j |¡|jjd|j_dS)Nr›)rér>r´rLrIr`rr)r)r*rås z.getPhases..InTableBodyPhase.startTagTrcSs*|j dd|di¡| tddƒ¡|S)Nzunexpected-cell-in-table-bodyr@r¦rr)rLrrårÚrr)r)r*ræ s  ÿz5getPhases..InTableBodyPhase.startTagTableCellcSsb|jjddds0|jjddds0|jjdddrT| ¡| t|jjdjƒ¡|S|j ¡dS©Nr§r¬rr¨r©rv© r>rrérèrÚr~r@rLrrr)r)r*rçsÿþÿz6getPhases..InTableBodyPhase.startTagTableOthercSs|jjd |¡Srârêrr)r)r*râsz1getPhases..InTableBodyPhase.startTagOthercSsT|jj|dddr:| ¡|jj ¡|jjd|j_n|j dd|di¡dS)Nr@r¬rrŸú unexpected-end-tag-in-table-body) r>rrér~rrLrIr`rrr)r)r*rè"s  ÿz7getPhases..InTableBodyPhase.endTagTableRowGroupcSsb|jjddds0|jjddds0|jjdddrT| ¡| t|jjdjƒ¡|S|j ¡dSrêrërr)r)r*r¼+sÿþÿz/getPhases..InTableBodyPhase.endTagTablecSs|j dd|di¡dS)Nrìr@rÆrr)r)r*r½8s ÿz0getPhases..InTableBodyPhase.endTagIgnorecSs|jjd |¡SrârÛrr)r)r*rå<sz/getPhases..InTableBodyPhase.endTagOtherN)r9r:r;rKrér‹r…r„rårærçrârèr¼r½rår)rær)r*ÚInTableBodyPhaseÝs    rícs€eZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„ZdS)zgetPhases..InRowPhasecsvˆ |||¡t d|jfd|jfd|jfg¡|_|j|j_t d|j fd|j fd|j fd|j fg¡|_ |j|j _dS)Nr°rä)rªrUr«r§r©r¨r¦r¦r¬rµ)r®rªrUr«r°r¤r¥)rKr ràrÎrærçrËrârãÚendTagTrr¼rèr½rÏrårÂrær)r*rKAs$ÿý ÿüz&getPhases..InRowPhase.__init__cSs@|jjdjdkr<|j dd|jjdji¡|jj ¡qdS)Nrv)r¦r°z'unexpected-implied-end-tag-in-table-rowr@)r>r~r@rLrrrBr)r)r*ÚclearStackToTableRowContextUs ÿz9getPhases..InRowPhase.clearStackToTableRowContextcSs|jjddd S)Nr¦r¬rrÓrBr)r)r*ÚignoreEndTagTr[sz,getPhases..InRowPhase.ignoreEndTagTrcSs|jjd ¡dSrârÕrBr)r)r*r‹_sz(getPhases..InRowPhase.processEOFcSs|jjd |¡Srârrr)r)r*r…bsz4getPhases..InRowPhase.processSpaceCharacterscSs|jjd |¡SrârÖrr)r)r*r„esz/getPhases..InRowPhase.processCharacterscSs6| ¡|j |¡|jjd|j_|jj t¡dS)Nrš) rïr>r´rLrIr`r€rŠr rr)r)r*ræhs z/getPhases..InRowPhase.startTagTableCellcSs"| ¡}| tdƒ¡|s|SdS©Nr¦©rðrîrÚrÙr)r)r*rçnsz0getPhases..InRowPhase.startTagTableOthercSs|jjd |¡Srârêrr)r)r*râusz+getPhases..InRowPhase.startTagOthercSs<| ¡s.| ¡|jj ¡|jjd|j_n |j ¡dSrÆ) rðrïr>r~rrLrIr`rrr)r)r*rîxs  z&getPhases..InRowPhase.endTagTrcSs"| ¡}| tdƒ¡|s|SdSrñròrÙr)r)r*r¼‚sz)getPhases..InRowPhase.endTagTablecSs4|jj|dddr&| tdƒ¡|S|j ¡dS)Nr@r¬rr¦)r>rrîrÚrLrrr)r)r*rèŠsz1getPhases..InRowPhase.endTagTableRowGroupcSs|j dd|di¡dS)Nzunexpected-end-tag-in-table-rowr@rÆrr)r)r*r½‘s ÿz*getPhases..InRowPhase.endTagIgnorecSs|jjd |¡SrârÛrr)r)r*rå•sz)getPhases..InRowPhase.endTagOtherN)r9r:r;rKrïrðr‹r…r„rærçrârîr¼rèr½rår)rær)r*Ú InRowPhase?s  rócs`eZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)zgetPhases..InCellPhasecsfˆ |||¡t d|jfd|jfg¡|_|j|j_t d|jfd|j fd|j fg¡|_ |j |j _dS)Nr°rÐrä)r®rªrUr«r°r¬) rKr ràrÎrçrËrârãÚendTagTableCellr½Ú endTagImplyrÏrårÂrær)r*rKšsÿþ ýz'getPhases..InCellPhase.__init__cSsB|jjdddr | tdƒ¡n|jjdddr>| tdƒ¡dS©Nr¤r¬rr¥)r>rrôrÚrBr)r)r*Ú closeCell«sz(getPhases..InCellPhase.closeCellcSs|jjd ¡dSrérÕrBr)r)r*r‹²sz)getPhases..InCellPhase.processEOFcSs|jjd |¡SrérÖrr)r)r*r„µsz0getPhases..InCellPhase.processCharacterscSs:|jjddds |jjdddr,| ¡|S|j ¡dSrö©r>rr÷rLrrr)r)r*rç¸s ÿz1getPhases..InCellPhase.startTagTableOthercSs|jjd |¡Srérêrr)r)r*râÂsz,getPhases..InCellPhase.startTagOthercSs²|jj|dddr˜|j |d¡|jjdj|dkrp|j dd|di¡|jj ¡}|j|dkrPq|qPn |jj ¡|j ¡|jj d|j_ n|j dd|di¡dS)Nr@r¬rrvzunexpected-cell-end-tagr›r ) r>rr¡r~r@rLrrr°rIr`r r)r)r*rôÅs ÿ   z.getPhases..InCellPhase.endTagTableCellcSs|j dd|di¡dSr rÆrr)r)r*r½Ösz+getPhases..InCellPhase.endTagIgnorecSs.|jj|dddr | ¡|S|j ¡dS)Nr@r¬rrørr)r)r*rõÙsz*getPhases..InCellPhase.endTagImplycSs|jjd |¡SrérÛrr)r)r*råász*getPhases..InCellPhase.endTagOtherN) r9r:r;rKr÷r‹r„rçrârôr½rõrår)rær)r*Ú InCellPhase˜s  rùcsxeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)z getPhases..InSelectPhasec s†ˆ |||¡t d|jfd|jfd|jfd|jfd|jfd|jfg¡|_ |j |j _ t d|j fd|j fd|jfg¡|_|j|j_ dS)Nr°rSrTr£)rLrJrPrò)rKr ràrÎÚstartTagOptionÚstartTagOptgrouprorhrûrËrârãÚ endTagOptionÚendTagOptgroupÚ endTagSelectrÏrårÂrær)r*rKås ú ýz)getPhases..InSelectPhase.__init__cSs$|jjdjdkr |j d¡ndS)Nrvr°z eof-in-selectrÀrBr)r)r*r‹úsz+getPhases..InSelectPhase.processEOFcSs$|ddkrdS|j |d¡dSrÍrÈrr)r)r*r„ s z2getPhases..InSelectPhase.processCharacterscSs.|jjdjdkr|jj ¡|j |¡dSrž©r>r~r@rr´rr)r)r*rú s z/getPhases..InSelectPhase.startTagOptioncSsL|jjdjdkr|jj ¡|jjdjdkr<|jj ¡|j |¡dS)NrvrSrTrÿrr)r)r*rû s   z1getPhases..InSelectPhase.startTagOptgroupcSs|j d¡| tdƒ¡dS)Nzunexpected-select-in-selectr£)rLrrþrÚrr)r)r*ro s z/getPhases..InSelectPhase.startTagSelectcSs2|j d¡|jjdddr.| tdƒ¡|SdS)Nzunexpected-input-in-selectr£r)rLrr>rrþrÚrr)r)r*rh s  z.getPhases..InSelectPhase.startTagInputcSs|jjd |¡Srrêrr)r)r*rû sz/getPhases..InSelectPhase.startTagScriptcSs|j dd|di¡dS)Nzunexpected-start-tag-in-selectr@rÆrr)r)r*râ! s ÿz.getPhases..InSelectPhase.startTagOthercSs6|jjdjdkr |jj ¡n|j dddi¡dS)NrvrSúunexpected-end-tag-in-selectr@©r>r~r@rrLrrr)r)r*rü% s ÿz-getPhases..InSelectPhase.endTagOptioncSsf|jjdjdkr0|jjdjdkr0|jj ¡|jjdjdkrP|jj ¡n|j dddi¡dS)NrvrSéþÿÿÿrTrr@rrr)r)r*rý, sÿ ÿz/getPhases..InSelectPhase.endTagOptgroupcSsN|jjdddr@|jj ¡}|jdkr4|jj ¡}q|j ¡n |j ¡dS)Nr£r)r>rr~rr@rLrbrr r)r)r*rþ9 s    z-getPhases..InSelectPhase.endTagSelectcSs|j dd|di¡dS)Nrr@rÆrr)r)r*råD s ÿz,getPhases..InSelectPhase.endTagOtherN)r9r:r;rKr‹r„rúrûrorhrûrârürýrþrår)rær)r*Ú InSelectPhaseäs   rcsHeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)z'getPhases..InSelectInTablePhasecsNˆ |||¡t d|jfg¡|_|j|j_t d|jfg¡|_|j |j_dS)N)rªr¬r§r©r¨r¦r¤r¥) rKr ràrerËrârãr¼rÏrårÂrær)r*rKI sÿÿ ÿÿz0getPhases..InSelectInTablePhase.__init__cSs|jjd ¡dS©Nr™rÕrBr)r)r*r‹X sz2getPhases..InSelectInTablePhase.processEOFcSs|jjd |¡SrrÖrr)r)r*r„[ sz9getPhases..InSelectInTablePhase.processCharacterscSs(|j dd|di¡| tdƒ¡|S)Nz5unexpected-table-element-start-tag-in-select-in-tabler@r£)rLrrårÚrr)r)r*re^ sz5getPhases..InSelectInTablePhase.startTagTablecSs|jjd |¡Srrêrr)r)r*râc sz5getPhases..InSelectInTablePhase.startTagOthercSs@|j dd|di¡|jj|dddr<| tdƒ¡|SdS)Nz3unexpected-table-element-end-tag-in-select-in-tabler@r¬rr£)rLrr>rrårÚrr)r)r*r¼f sz3getPhases..InSelectInTablePhase.endTagTablecSs|jjd |¡SrrÛrr)r)r*rål sz3getPhases..InSelectInTablePhase.endTagOtherN) r9r:r;rKr‹r„rerâr¼rår)rær)r*ÚInSelectInTablePhaseH s rc-sœeZdZeddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g,ƒZ‡fd-d.„Zd/d0„Z‡fd1d2„Zd3d4„Zd5d6„Z d7S)8z(getPhases..InForeignContentPhaser9r:r r®rÞr!r;r6r+r$r7r<rHZh1Zh2Zh3Zh4Zh5Zh6r­rMr>rIr5r3r,r5rEr.r(r2r r?r@ÚspanrBrAÚsubZsupr¬rCrDr1Úvarcsˆ |||¡dSr.)rKrÂrær)r*rKy sz1getPhases..InForeignContentPhase.__init__c%Ssnddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%œ$}|d&|krj||d&|d&<dS)'NZaltGlyphZ altGlyphDefZ altGlyphItemZ animateColorZ animateMotionZanimateTransformZclipPathZfeBlendZ feColorMatrixZfeComponentTransferZ feCompositeZfeConvolveMatrixZfeDiffuseLightingZfeDisplacementMapZfeDistantLightZfeFloodZfeFuncAZfeFuncBZfeFuncGZfeFuncRZfeGaussianBlurZfeImageZfeMergeZ feMergeNodeZ feMorphologyZfeOffsetZ fePointLightZfeSpecularLightingZ feSpotLightZfeTileZ feTurbulenceZ foreignObjectZglyphRefZlinearGradientZradialGradientZtextPath)$ZaltglyphZ altglyphdefZ altglyphitemZ animatecolorZ animatemotionZanimatetransformZclippathZfeblendZ fecolormatrixZfecomponenttransferZ fecompositeZfeconvolvematrixZfediffuselightingZfedisplacementmapZfedistantlightZfefloodZfefuncaZfefuncbZfefuncgZfefuncrZfegaussianblurZfeimageZfemergeZ femergenodeZ femorphologyZfeoffsetZ fepointlightZfespecularlightingZ fespotlightZfetileZ feturbulenceZ foreignobjectZglyphrefZlineargradientZradialgradientZtextpathr@r))rCrŒÚ replacementsr)r)r*ÚadjustSVGTagNames| sNÝ% z:getPhases..InForeignContentPhase.adjustSVGTagNamescsL|ddkrd|d<n&|jjr.InForeignContentPhase.processCharacters..F)rLrcr‰r„rrær)r*r„¥ s  ÿz:getPhases..InForeignContentPhase.processCharacterscSs.|jjd}|d|jksD|ddkrªt|d ¡ƒtdddgƒ@rª|j dd|di¡|jjdj|jjkr¦|j  |jjd¡s¦|j  |jjd¡s¦|jj  ¡qZ|S|jt d krÆ|j  |¡n$|jt d krê| |¡|j |¡|j |¡|j|d <|j |¡|d r*|jj  ¡d |d<dS)Nrvr@r=rwZcolorZfaceÚsizez*unexpected-html-element-in-foreign-contentrhryrjr{Tr|)r>r~ÚbreakoutElementsÚsetÚkeysrLrrjr‚rorprrrr rrr´)rCrŒrŽr)r)r*r†­ s:  ÿþ ÿ ÿþý       z8getPhases..InForeignContentPhase.processStartTagcSsÜt|jjƒd}|jjd}|j t¡|dkrF|j dd|di¡|j t¡|dkr |jj|jj dkrˆ|jj  ¡|jjj |j_|jj  ¡|kršqˆd}qØ|d8}|jj|}|j |jjkrÆqFqF|jj |¡}qØqF|S)Nrrvr@r rÂ)rr>r~r@rlrrLrr`rIrËrµrrjr‚r‡)rCrŒZ nodeIndexr±rr)r)r*r‡È s&   z6getPhases..InForeignContentPhase.processEndTagN) r9r:r;rƒr rKr r„r†r‡r)rær)r*ÚInForeignContentPhaseo s\ ù ) rcsPeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)z!getPhases..AfterBodyPhasecsNˆ |||¡t d|jfg¡|_|j|j_t d|jfg¡|_|j |j_dS©Nr°) rKr ràrÎrËrârãrvrÏrårÂrær)r*rKã sÿ z*getPhases..AfterBodyPhase.__init__cSsdSr.r)rBr)r)r*r‹î sz,getPhases..AfterBodyPhase.processEOFcSs|j ||jjd¡dS)NrrÄrr)r)r*rˆò sz0getPhases..AfterBodyPhase.processCommentcSs |j d¡|jjd|j_|S)Nzunexpected-char-after-bodyr ©rLrrIr`rr)r)r*r„÷ s z3getPhases..AfterBodyPhase.processCharacterscSs|jjd |¡Srérêrr)r)r*rÎü sz.getPhases..AfterBodyPhase.startTagHtmlcSs*|j dd|di¡|jjd|j_|S)Nzunexpected-start-tag-after-bodyr@r rrr)r)r*râÿ s  ÿz/getPhases..AfterBodyPhase.startTagOthercSs*|jjr|j d¡n|jjd|j_dS)Nz'unexpected-end-tag-after-body-innerhtmlÚafterAfterBody)rLrSrrIr`)rCr@r)r)r*rv sz,getPhases..AfterBodyPhase.endTagHtmlcSs*|j dd|di¡|jjd|j_|S)Nzunexpected-end-tag-after-bodyr@r rrr)r)r*rå s  ÿz-getPhases..AfterBodyPhase.endTagOtherN) r9r:r;rKr‹rˆr„rÎrârvrår)rær)r*ÚAfterBodyPhaseâ s rcsXeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)z"getPhases..InFramesetPhasecsfˆ |||¡t d|jfd|jfd|jfd|jfg¡|_|j|j_ t d|j fg¡|_ |j |j _ dS)Nr°r¯rVrï) rKr ràrÎrÚ startTagFrameÚstartTagNoframesrËrârãÚendTagFramesetrÏrårÂrær)r*rK sü ÿz+getPhases..InFramesetPhase.__init__cSs$|jjdjdkr |j d¡ndS)Nrvr°zeof-in-framesetrÀrBr)r)r*r‹# sz-getPhases..InFramesetPhase.processEOFcSs|j d¡dS)Nzunexpected-char-in-framesetrÆrr)r)r*r„) sz4getPhases..InFramesetPhase.processCharacterscSs|j |¡dSr.)r>r´rr)r)r*r, sz3getPhases..InFramesetPhase.startTagFramesetcSs|j |¡|jj ¡dSr.rrr)r)r*r/ s z0getPhases..InFramesetPhase.startTagFramecSs|jjd |¡Srérêrr)r)r*r3 sz3getPhases..InFramesetPhase.startTagNoframescSs|j dd|di¡dS)Nz unexpected-start-tag-in-framesetr@rÆrr)r)r*râ6 s ÿz0getPhases..InFramesetPhase.startTagOthercSsZ|jjdjdkr |j d¡n |jj ¡|jjsV|jjdjdkrV|jjd|j_dS)Nrvr°z)unexpected-frameset-in-frameset-innerhtmlr¯Ú afterFrameset) r>r~r@rLrrrSrIr`rr)r)r*r: s ÿz1getPhases..InFramesetPhase.endTagFramesetcSs|j dd|di¡dS)Nzunexpected-end-tag-in-framesetr@rÆrr)r)r*råF s ÿz.getPhases..InFramesetPhase.endTagOtherN) r9r:r;rKr‹r„rrrrârrår)rær)r*ÚInFramesetPhase s  rcsHeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)z%getPhases..AfterFramesetPhasecsVˆ |||¡t d|jfd|jfg¡|_|j|j_t d|jfg¡|_ |j |j _dS©Nr°rï) rKr ràrÎrrËrârãrvrÏrårÂrær)r*rKL sþ ÿz.getPhases..AfterFramesetPhase.__init__cSsdSr.r)rBr)r)r*r‹Z sz0getPhases..AfterFramesetPhase.processEOFcSs|j d¡dS)Nzunexpected-char-after-framesetrÆrr)r)r*r„^ sz7getPhases..AfterFramesetPhase.processCharacterscSs|jjd |¡Srrêrr)r)r*ra sz6getPhases..AfterFramesetPhase.startTagNoframescSs|j dd|di¡dS)Nz#unexpected-start-tag-after-framesetr@rÆrr)r)r*râd s ÿz3getPhases..AfterFramesetPhase.startTagOthercSs|jjd|j_dS)NÚafterAfterFrameset)rLrIr`rr)r)r*rvh sz0getPhases..AfterFramesetPhase.endTagHtmlcSs|j dd|di¡dS)Nz!unexpected-end-tag-after-framesetr@rÆrr)r)r*råk s ÿz1getPhases..AfterFramesetPhase.endTagOtherN) r9r:r;rKr‹r„rrârvrår)rær)r*ÚAfterFramesetPhaseJ s rcsPeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)z&getPhases..AfterAfterBodyPhasecs0ˆ |||¡t d|jfg¡|_|j|j_dSr)rKr ràrÎrËrârãrÂrær)r*rKp s ÿz/getPhases..AfterAfterBodyPhase.__init__cSsdSr.r)rBr)r)r*r‹x sz1getPhases..AfterAfterBodyPhase.processEOFcSs|j ||jj¡dSr.rÑrr)r)r*rˆ{ sz5getPhases..AfterAfterBodyPhase.processCommentcSs|jjd |¡Srérrr)r)r*r…~ sz=getPhases..AfterAfterBodyPhase.processSpaceCharacterscSs |j d¡|jjd|j_|S)Núexpected-eof-but-got-charr rrr)r)r*r„ s z8getPhases..AfterAfterBodyPhase.processCharacterscSs|jjd |¡Srérêrr)r)r*rΆ sz3getPhases..AfterAfterBodyPhase.startTagHtmlcSs*|j dd|di¡|jjd|j_|S)Núexpected-eof-but-got-start-tagr@r rrr)r)r*r≠s  ÿz4getPhases..AfterAfterBodyPhase.startTagOthercSs*|j dd|di¡|jjd|j_|S)Núexpected-eof-but-got-end-tagr@r rrr)r)r*r‡ s  ÿz4getPhases..AfterAfterBodyPhase.processEndTagN) r9r:r;rKr‹rˆr…r„rÎrâr‡r)rær)r*ÚAfterAfterBodyPhaseo s rcsXeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)z*getPhases..AfterAfterFramesetPhasecs8ˆ |||¡t d|jfd|jfg¡|_|j|j_dSr)rKr ràrÎÚstartTagNoFramesrËrârãrÂrær)r*rK– s þz3getPhases..AfterAfterFramesetPhase.__init__cSsdSr.r)rBr)r)r*r‹Ÿ sz5getPhases..AfterAfterFramesetPhase.processEOFcSs|j ||jj¡dSr.rÑrr)r)r*rˆ¢ sz9getPhases..AfterAfterFramesetPhase.processCommentcSs|jjd |¡Srérrr)r)r*r…¥ szAgetPhases..AfterAfterFramesetPhase.processSpaceCharacterscSs|j d¡dS)NrrÆrr)r)r*r„¨ sz.AfterAfterFramesetPhase.processCharacterscSs|jjd |¡Srérêrr)r)r*rΫ sz7getPhases..AfterAfterFramesetPhase.startTagHtmlcSs|jjd |¡Srrêrr)r)r*r ® sz;getPhases..AfterAfterFramesetPhase.startTagNoFramescSs|j dd|di¡dS)Nrr@rÆrr)r)r*râ± s ÿz8getPhases..AfterAfterFramesetPhase.startTagOthercSs|j dd|di¡dS)Nrr@rÆrr)r)r*r‡µ s ÿz8getPhases..AfterAfterFramesetPhase.processEndTagN) r9r:r;rKr‹rˆr…r„rÎr râr‡r)rær)r*ÚAfterAfterFramesetPhase• s r!)rWrVr¢rërr r r³rŸrÂrržrœr›ršr™rŸrzr¥r¡rrr)r)rJrYrÁrÙrßrírrrr±r´rÇrÏrÜrãrírórùrrrrrrrr!r)rær*rHœsr)#.g@CX!-GBbYLd's/9%&&érHcs>t|dƒtˆƒ@}|r:t‡fdd„|d ¡Dƒƒ|d<dS)Nrwc3s"|]\}}ˆ ||¡|fVqdSr.)r€)r?ÚkÚv©r r)r*r»Ù sÿz$adjust_attributes..)rrr/)rŒr Zneeds_adjustmentr)r$r*r–Ö s   ÿr–rsFcCs|dkr i}t||||dœS)N)r3r@rwr{)r)r@r3rkr{r)r)r*rÚÝ s  ÿrÚc@seZdZdZdS)ruzError in parsed documentN)r9r:r;r·r)r)r)r*ruå sru)rT)r+rT)rsNF).Z __future__rrrZpip._vendor.sixrrr1Ú collectionsrrÕr r r Ztreebuilders.baser r Z constantsrrrrrrrrrrrrr—rrrrr#r-r=rGr"ZmemoizerHr–rÚÚ Exceptionrur)r)r)r*ÚsP      H   G Kÿ