Ë ø€Wj Vãó²—dZddlZddlZddlmZdgZej d«Zej d«Zej d«Z ej d«Z ej d «Z ej d «Z ej d «Z ej d «Zej d «Zej d«Zej dej"«Zej dej"«Zej dej"«Zej d «Zej d«ZGd„dej.«Zy)zA parser for HTML and XHTML.éN)ÚunescapeÚ HTMLParserz[&<]z &[a-zA-Z#]z%&([a-zA-Z][-.a-zA-Z0-9]*)[^a-zA-Z0-9]z)&#(?:[0-9]+|[xX][0-9a-fA-F]+)[^0-9a-fA-F]z <[a-zA-Z]z z--!?>z-?>z0([a-zA-Z][^\t\n\r\f />]*)(?:[\t\n\r\f ]|/(?!>))*a{ ( (?<=['"\t\n\r\f /])[^\t\n\r\f />][^\t\n\r\f /=>]* # attribute name ) ([\t\n\r\f ]*=[\t\n\r\f ]* # value indicator ('[^']*' # LITA-enclosed value |"[^"]*" # LIT-enclosed value |(?!['"])[^>\t\n\r\f ]* # bare value ) )? (?:[\t\n\r\f ]|/(?!>))* # possibly followed by a space a [a-zA-Z][^\t\n\r\f />]* # tag name [\t\n\r\f /]* # optional whitespace before attribute name (?:(?<=['"\t\n\r\f /])[^\t\n\r\f />][^\t\n\r\f /=>]* # attribute name (?:[\t\n\r\f ]*=[\t\n\r\f ]* # value indicator (?:'[^']*' # LITA-enclosed value |"[^"]*" # LIT-enclosed value |(?!['"])[^>\t\n\r\f ]* # bare value ) )? [\t\n\r\f /]* # possibly followed by a space )* >? aF <[a-zA-Z][^\t\n\r\f />\x00]* # tag name (?:[\s/]* # optional whitespace before attribute name (?:(?<=['"\s/])[^\s/>][^\s/=>]* # attribute name (?:\s*=+\s* # value indicator (?:'[^']*' # LITA-enclosed value |"[^"]*" # LIT-enclosed value |(?!['"])[^>\s]* # bare value ) \s* # possibly followed by a space )?(?:\s|/(?!>))* )* )? \s* # trailing whitespace z#có܇—eZdZdZdZdZdddœˆfd„ Zˆfd„Zd „Zd „Z d Z d „Z dd œd„Z d„Z d#d„Zd„Zd„Zd#d„Zd$d„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd „Zd!„Zd"„Z ˆxZ!S)%raEFind tags and other markup and call handler functions. Usage: p = HTMLParser() p.feed(data) ... p.close() Start tags are handled by calling self.handle_starttag() or self.handle_startendtag(); end tags by self.handle_endtag(). The data between tags is passed from the parser to the derived class by calling self.handle_data() with the data as argument (the data may be split up in arbitrary chunks). If convert_charrefs is True the character references are converted automatically to the corresponding Unicode character (and self.handle_data() is no longer split in chunks), otherwise they are passed by calling self.handle_entityref() or self.handle_charref() with the string containing respectively the named or numeric reference as the argument. )ÚscriptÚstyleÚxmpÚiframeÚnoembedÚnoframes)ÚtextareaÚtitleTF)Úconvert_charrefsÚ scriptingcó^•—t‰|�«||_||_|j «y)azInitialize and reset this instance. If convert_charrefs is true (the default), all character references are automatically converted to the corresponding Unicode characters. If *scripting* is false (the default), the content of the ``noscript`` element is parsed normally; if it's true, it's returned as is without being parsed. N)ÚsuperÚ__init__rrÚreset)ÚselfrrÚ __class__s €ú$/usr/lib64/python3.12/html/parser.pyrzHTMLParser.__init__vs(ø€ô ‰ÑÔØ 0ˆÔØ"ˆŒØ � ‰ � óc󨕗d|_d|_t|_d|_d|_d|_g|_d|_d|_ t‰|�-«y)z1Reset this instance. Loses all unprocessed data.Úz???NTré) ÚrawdataÚlasttagÚinteresting_normalÚ interestingÚ cdata_elemÚ_support_cdataÚ _escapableÚ_pendingÚ _pending_lenÚ_parse_thresholdrr)rrs €rrzHTMLParser.reset…sOø€àˆŒ ؈Œ Ü-ˆÔ؈ŒØ"ˆÔ؈ŒØˆŒ ØˆÔØ !ˆÔÜ ‰‰ �rcó‚—|xjt|«z c_|j|jkr|jj |«y|js|xj |z c_nc|jj |«|xj dj |j«z c_|jj«d|_t|j «}|jd«t|j «|krd|_yt|j «|_y)z‘Feed data to the parser. Call this as often as you want, with as little or as much text as you want (may include '\n'). rrrN) r$Úlenr%r#ÚappendrÚjoinÚclearÚgoahead)rÚdataÚns rÚfeedzHTMLParser.feed’sÞ€ð ×ÒœS ›YÑ&ÕØ × Ñ ˜t×4Ñ4Ò 4Ø �M‰M× Ñ  Õ &à—=’=Ø— ’  Ñ$– à— ‘ ×$Ñ$ TÔ*Ø— ’  §¡¨¯ © Ó 6Ñ6• Ø— ‘ ×#Ñ#Ô%Ø !ˆDÔ Ü�D—L‘LÓ!ˆAØ �L‰L˜ŒOÜ�4—<‘<Ó  1Ò$à()�Õ%ô),¨D¯L©LÓ(9�Õ%rcóÜ—|jrO|xjdj|j«z c_|jj«d|_|j d«y)zHandle any buffered data.rrrN)r#rr)r*r$r+©rs rÚclosezHTMLParser.close°sG€à �=Š=Ø �LŠL˜BŸG™G D§M¡MÓ2Ñ 2�LØ �M‰M× Ñ Ô !Ø !ˆDÔ Ø � ‰ �Q�rNcó—|jS)z)Return full source of start tag: '<...>'.)Ú_HTMLParser__starttag_textr0s rÚget_starttag_textzHTMLParser.get_starttag_textºs€à×#Ñ#Ð#r©Ú escapablecóÊ—|j«|_||_|jdk(rtjd«|_y|rT|j sHtjd|jztjtjz«|_ytjd|jztjtjz«|_y)NÚ plaintextz\Zz&|])z])) Úlowerr r"ÚreÚcompilerrÚ IGNORECASEÚASCII)rÚelemr6s rÚset_cdata_modezHTMLParser.set_cdata_mode¾sœ€ØŸ*™*›,ˆŒØ#ˆŒØ �?‰?˜kÒ )Ü!Ÿz™z¨%Ó0ˆDÕ Ù ˜t×4Ò4Ü!Ÿz™zÐ*DÀtÇÁÑ*VÜ*,¯-©-¼¿¹Ñ*@ó BˆDÕ ô "Ÿz™zÐ*BÀTÇ_Á_Ñ*TÜ*,¯-©-¼¿¹Ñ*@ó BˆDÕ rcó6—t|_d|_d|_y)NT)rrr r"r0s rÚclear_cdata_modezHTMLParser.clear_cdata_modeÊs€Ü-ˆÔ؈ŒØˆ�rcó—||_y)aEnable or disable support of the CDATA sections. If enabled, "<[CDATA[" starts a CDATA section which ends with "]]>". If disabled, "<[CDATA[" starts a bogus comments which ends with ">". This method is not called by default. Its purpose is to be called in custom handle_starttag() and handle_endtag() methods, with value that depends on the adjusted current node. See https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state for details. N)r!)rÚflags rÚ_set_support_cdatazHTMLParser._set_support_cdataÏs €ð#ˆÕrcóŽ —|j}d}t|«}||k�r9|jrq|jse|j d|«}|dkr�|j dt ||dz ««}|dk\r'tjd«j||«s�n¿|}n?|jj||«}|r|j«}n|jr�n|}||krJ|jr*|jr|jt|||««n|j|||«|j||«}||k(r�n|j }|d|«�r=t"j%||«r|j'|«} n�|d|«r|j)|«} nt|d|«r|j+|«} nY|d|«r|j-|«} n>|d |«r|j/|«} n#|d z|ks|r|jd«|d z} n�nH| dk�rl|s�n>t"j%||«r�nN|d|«rK|d z|k(r|jd«�n*t0j%||«r�n|j3||d zd«nú|d|«rF|}d D]'} |j5| |d z«sŒ|t| «z}n|j3||d z|«n«|d|«r$|j6r|j9||dzd«n~|||dzj;«dk(r|j=||d zd«nM|d |«r|j3||d zd«n,|d|«r|j?||d zd«n tAd«‚|} |j|| «}�n»|d|«r¦tBj%||«}|rY|jE«d d} |jG| «|jI«} |d| d z «s| d z } |j|| «}�Œ÷d||dvr,|j|||d z«|j||d z«}�n|d|«rütJj%||«}|rW|jEd «} |jM| «|jI«} |d| d z «s| d z } |j|| «}�Œ¤tNj%||«}|rE|rB|jE«||dk(r,|jI«} | |kr|} |j||d z«}n>|d z|kr'|jd«|j||d z«}nnJd«‚||kr�Œ9|ra||kr\|jr*|jr|jt|||««n|j|||«|j||«}||d|_y)NrÚ<Ú&é"z [\t\n\r\f ;]úÑ>¸wÈÔOÙØ‘Aà×(Ñ(×/Ñ/°¸Ó;�ÙØŸ ™ › ‘Aà—’ÙØ�AØ�1ŠuØ×(Ò(¨T¯_ª_Ø×$Ñ$¤X¨g°a¸¨lÓ%;Õ<à×$Ñ$ W¨Q¨q \Ô2Ø—‘˜q !Ó$ˆAØ�AŠv‘uØ ×+Ñ+ˆJÙ˜#˜qÕ!Ü×%Ñ% g¨qÔ1Ø×+Ñ+¨AÓ.‘AÙ  aÔ(Ø×)Ñ)¨!Ó,‘AÙ ¨Ô*Ø×*Ñ*¨1Ó-‘AÙ  aÔ(ØŸ ™  aÓ(‘AÙ  aÔ(Ø×3Ñ3°AÓ6‘Aؘ!‘e˜q’[¡CØ×$Ñ$ SÔ)ؘA™‘AáØ�q“5ÙÙÜ#×)Ñ)¨'°1Ô5ÙÙ# D¨!Ô,ؘq™5 Aš:Ø ×,Ñ,¨TÖ2Ü'×-Ñ-¨g°qÔ9Ù ð!×/Ñ/°¸¸!¹¸° Õ>Ù# F¨AÔ.ؘÛ&8˜FØ&×/Ñ/°¸¸!¹Õ<Ø !¤S¨£[Ñ 0 Ù %ð'9ð×+Ñ+¨G°A°a±C¸¨NÕ;Ù# K°Ô3¸×8KÒ8KØ×)Ñ)¨'°!°A±#°$¨-Õ8Ø   1 Q¡3˜×-Ñ-Ó/°;Ò>Ø×(Ñ(¨°°1±°¨Õ7Ù# D¨!Ô,à×+Ñ+¨G°A°a±C°D¨MÕ:Ù# D¨!Ô,ØŸ™ w¨q°©s¨t }Õ5ä,Ð-FÓGÐGØ�AØ—N‘N 1 aÓ(’Ù˜D !Ô$ÜŸ ™  g¨qÓ1�ÙØ Ÿ;™;›=¨¨2Ð.�DØ×'Ñ'¨Ô-ØŸ ™ › �AÙ% c¨1¨Q©3Ô/Ø ™E˜ØŸ™ q¨!Ó,�AÙà˜g a b˜kÑ)Ø×(Ñ(¨°°1°Q±3¨Ô8Ø ŸN™N¨1¨a°©cÓ2˜ÙÙ˜C Ô#Ü!Ÿ™¨°Ó3�ÙØ Ÿ;™; q›>�DØ×)Ñ)¨$Ô/ØŸ ™ › �AÙ% c¨1¨Q©3Ô/Ø ™E˜ØŸ™ q¨!Ó,�AÙÜ"×(Ñ(¨°!Ó4�Ùá˜uŸ{™{›}°¸¸° Ò;Ø!ŸI™I›K˜Ø š6Ø !˜AØ ŸN™N¨1¨a°!©eÓ4˜àؘ!‘e˜q’[ð×$Ñ$ SÔ)ØŸ™ q¨!¨a©%Ó0‘Aàà5Ð5Ó5�qðw�!Œeñz �1�q’5Ø×$Ò$¨¯ªØ× Ñ ¤¨'°!°A¨,Ó!7Õ8à× Ñ  ¨¨1 Ô.Ø—‘˜q !Ó$ˆAؘq˜r�{ˆ� rcó¬—|j}|||dzdk(sJd«‚|||dzdk(r|j|«S|||dzdk(rC|jr7|jd|dz«}|d kry |j ||d z|«|d zS|||dzj «d k(r7|jd |dz«}|d k(ry |j ||dz|«|dzS|||d zdk(ra|jd |d z«}|d kry ||dz dk(r|j ||d z|dz «|dzS|j||dz|«|dzS|j|«S)NrMrLz+unexpected call to parse_html_declaration()rOrJrRrPz]]>rrTrQrSrrz˜VÒ #à×%Ñ% aÓ(Ð (Ø �Q�q˜‘sˆ^˜{Ò *¨t×/BÒ/BØ— ‘ ˜U A a¡CÓ(ˆAØ�1ŠuØØ × Ñ ˜g a¨¡c¨1˜oÔ .Ø�q‘5ˆLØ �Q�q˜‘sˆ^× !Ñ !Ó # {Ò 2à—L‘L  a¨¡cÓ*ˆEؘŠ{ØØ × Ñ ˜W Q q¡S¨Ð/Ô 0ؘ‘7ˆNØ �Q�q˜‘sˆ^˜uÒ $Ø— ‘ ˜S ! A¡#Ó&ˆAØ�1ŠuØØ�q˜‘s‰|˜sÒ"Ø×!Ñ! '¨!¨A©#¨q°©sÐ"3Ô4ð�q‘5ˆLð×#Ñ# G¨A¨a©C° OÔ4Ø�q‘5ˆLà×+Ñ+¨AÓ.Ð .rcó,—|j}|jd|«sJd«‚tj||dz«}|stj ||dz«}|sy|r'|j «}|j||dz|«|j«S)NrJú"unexpected call to parse_comment()rOrT) rr]Ú commentcloserYÚcommentabruptcloser_rZrfro)rrsÚreportrr_rts rrbzHTMLParser.parse_comment�sŽ€Ø—,‘,ˆØ×!Ñ! &¨!Ô,ÐRÐ.RÓRÐ,Ü×#Ñ# G¨Q¨q©SÓ1ˆÙÜ&×,Ñ,¨W°a¸±cÓ:ˆEÙØÙ Ø— ‘ “ ˆAØ × Ñ  ¨¨!©¨Q Ô 0Ø�y‰y‹{Ðrcó®—|j}|||dzdvsJd«‚|jd|dz«}|dk(ry|r|j||dz|«|dzS)NrM)rLrIr~rrTr)rrVrf)rrsr�rÚposs rr{zHTMLParser.parse_bogus_commentœsu€Ø—,‘,ˆØ�q˜˜1™ˆ~ Ñ-ð Cð1Bó CÐ-à�l‰l˜3  !¡Ó$ˆØ �"Š9ØÙ Ø × Ñ  ¨¨!©¨CÐ 0Ô 1Ø�Q‰wˆrcóè—|j}|||dzdk(sJd«‚tj||dz«}|sy|j«}|j ||dz|«|j «}|S)NrMrKzunexpected call to parse_pi()rT)rÚpicloserYrZrjro©rrsrr_rts rrczHTMLParser.parse_pi¨st€Ø—,‘,ˆØ�q˜˜1™ˆ~ Ò%ÐFÐ'FÓFÐ%Ü—‘˜w¨¨!©Ó,ˆÙØØ �K‰K‹MˆØ �‰�w˜q ™s A�Ô'Ø �I‰I‹KˆØˆrcóô—d|_|j|«}|dkr|S|j}||||_g}tj ||dz«}|sJd«‚|j «}|j d«j«x|_}||kr¥tj ||«}|snŒ|j ddd«\} } } | sd} n,| dddcxk(r| ddk(sn| dddcxk(r| ddk(rnn| dd} | r t| «} |j| j«| f«|j «}||krŒ¥|||j«} | d vr|j|||«|S| jd «r|j||«|S|j!||«||j"vs|j$r|d k(s|d k(r|j'|d ¬«|S||j(vr|j'|d¬«|S)Nrrz#unexpected call to parse_starttag()rMrQÚ'rTÚ")rú/>rŠÚnoscriptr8Fr5T)r3Úcheck_for_whole_start_tagrÚtagfind_tolerantr_rormr9rÚattrfind_tolerantrr(Ústripr[rgÚhandle_startendtagÚhandle_starttagÚCDATA_CONTENT_ELEMENTSrr?ÚRCDATA_CONTENT_ELEMENTS) rrsÚendposrÚattrsr_rvÚtagÚmÚattrnameÚrestÚ attrvalueros rr`zHTMLParser.parse_starttag´s€ð $ˆÔØ×/Ñ/°Ó2ˆØ �AŠ:؈MØ—,‘,ˆØ& q¨Ð0ˆÔðˆÜ ×&Ñ& w°°!±Ó4ˆÙÐ;Ð;Ó;ˆuØ �I‰I‹KˆØ"Ÿ[™[¨›^×1Ñ1Ó3Ð3ˆŒ �sØ�&ŠjÜ!×'Ñ'¨°Ó3ˆAÙØØ()¯©°°1°aÓ(8Ñ %ˆH�d˜IÙØ ‘ ؘ2˜A� $Ô8¨)°B°C¨.Ô8ؘ2˜A� #Ô7¨°2°3¨Õ7Ø% a¨˜O� ÙÜ$ YÓ/� Ø �L‰L˜(Ÿ.™.Ó*¨IÐ6Ô 7Ø—‘“ˆAð�&‹jð�a˜Ð×%Ñ%Ó'ˆØ �kÑ !Ø × Ñ ˜W Q vÐ.Ô /؈MØ �<‰<˜Ô à × #Ñ # C¨Ô /ðˆ ð × Ñ   eÔ ,Ø�t×2Ñ2Ñ2Ø—’ C¨:Ò$5Ø�{Ò"Ø×#Ñ# C°5Ð#Ô9ðˆ ð˜×4Ñ4Ñ4Ø×#Ñ# C°4Ð#Ô8؈ rcó�—|j}tj||dz«}|sJ‚|j«}||dz dk7ry|S)NrrrT)rÚ locatetagendr_ror†s rrŒz$HTMLParser.check_for_whole_start_tagæsK€Ø—,‘,ˆÜ×"Ñ" 7¨A¨a©CÓ0ˆÙˆ ˆuØ �I‰I‹KˆØ �1�Q‘3‰<˜3Ò ØØˆrcó—|j}|||dzdk(sJd«‚|jd|dz«dkrytj||«s$||dz|dzdk(r|dzS|j |«St j||dz«}|sJ‚|j «}||dz dk7rytj||dz«}|sJ‚|jd«j«}|j|«|j«|S) NrMrIzunexpected call to parse_endtagrrrTrQr) rrVrer_r{rœror�rmr9Ú handle_endtagrA)rrsrr_rtr–s rrazHTMLParser.parse_endtagðs€ð—,‘,ˆØ�q˜˜1™ˆ~ Ò%ÐHÐ'HÓHÐ%Ø �<‰<˜˜Q˜q™SÓ ! AÒ %ØÜ×Ñ ¨Ô+Ø�q˜‘s˜1˜Q™3Р3Ò&à˜‘s� à×/Ñ/°Ó2Ð2ä×"Ñ" 7¨A¨a©CÓ0ˆÙˆ ˆuØ �I‰I‹KˆØ �1�Q‘3‰<˜3Ò Øô!×&Ñ& w°°!±Ó4ˆÙˆ ˆuØ�k‰k˜!‹n×"Ñ"Ó$ˆØ ×ј3ÔØ ×ÑÔØˆrcóJ—|j||«|j|«y©N)r‘rž©rr–r•s rr�zHTMLParser.handle_startendtags €Ø ×јS %Ô(Ø ×ј3Õrcó—yr ©r¡s rr‘zHTMLParser.handle_starttagó€Ø rcó—yr r£)rr–s rržzHTMLParser.handle_endtagr¤rcó—yr r£©rrxs rrnzHTMLParser.handle_charrefr¤rcó—yr r£r§s rrqzHTMLParser.handle_entityrefr¤rcó—yr r£©rr,s rr[zHTMLParser.handle_data#r¤rcó—yr r£rªs rrfzHTMLParser.handle_comment'r¤rcó—yr r£)rÚdecls rrizHTMLParser.handle_decl+r¤rcó—yr r£rªs rrjzHTMLParser.handle_pi/r¤rcó—yr r£rªs rrhzHTMLParser.unknown_decl2r¤r)T)r)"Ú__name__Ú __module__Ú __qualname__Ú__doc__r’r“rrr.r1r3r4r?rArDr+rdrbr{rcr`rŒrar�r‘ržrnrqr[rfrirjrhÚ __classcell__)rs@rrrZs¯ø„ñð0YÐØ3Ðà+/¸5ö ô ò:ò<ð€Oò$ð16ô Bòó #ò G#òX/óD ó ò ò.òdòò< ò  ò ò ò ò ò ò ò ö r)r³r:Ú _markupbaseÚhtmlrÚ__all__r;rrrrprlr^rer…rr€r�ÚVERBOSErŽrœÚlocatestarttagend_tolerantÚ endendtagÚ endtagfindÚ ParserBaserr£rrÚr½s[ðÙ"ó Ûåð ˆ.€ð �R—Z‘Z Ó'ÐØ ˆR�Z‰Z˜ Ó %€ à ˆB�J‰JÐ>Ó ?€ Ø ˆ"�*‰*Ð@Ó A€àˆr�z‰z˜+Ó&€ Ø ˆR�Z‰Z˜ Ó %€ Ø ˆ"�*‰*�S‹/€Øˆr�z‰z˜(Ó#€ Ø�R—Z‘Z Ó'Ðð�2—:‘:ÐQÓRÐØ�B—J‘Jð ð‡Z�Zó Ððˆr�z‰zð ð‡Z�Zó € ð (˜RŸZ™Zð)ð‡Z�ZóÐð ˆB�J‰J�s‹O€ Ø ˆR�Z‰ZÐ>Ó ?€ ôY �×'Ñ'õY r