Ë 8›ð^®ˆÁHã ó—dZddlmZmZmZddlmZmZmZddlm Z ddl m Z m Z ddl mZejZej Zej"Zej$j&Zej$j(Zej$j*Zej$j,Zej.«Zej2dd«ej2dd «ej2dd «ej2dd «ej2dd «ej2dd «ej2dd«ej2dd«ej2dd«dœ ZGd„de«Zd„Zd„ZGd„d«ZeeefZ Gd„de«Z!Gd„de«Z"Gd„de"«Z#Gd„de"«Z$d Z%d!e%zZ&Gd"„d#e«Z'Gd$„d%«Z(Gd&„d'e(e«Z)Gd(„d)e(e'«Z*Gd*„d+e+«Z,Gd,„d-e«Z-d3d.„Z.d3d/„Z/d3d0„Z0d3d1„Z1d2„Z2y)4z™Facility to use the Expat parser to load a minidom instance from a string or file. This avoids all the overhead of SAX and pulldom to gain performance. é)Ú xmlbuilderÚminidomÚNode)ÚEMPTY_NAMESPACEÚ EMPTY_PREFIXÚXMLNS_NAMESPACE)Úexpat)Ú _append_childÚ_set_attribute_node)Ú NodeFilterNÚcdataÚ enumerationÚentityÚentitiesÚidÚidrefÚidrefsÚnmtokenÚnmtokens) ÚCDATAÚENUMÚENTITYÚENTITIESÚIDÚIDREFÚIDREFSÚNMTOKENÚNMTOKENScóH—eZdZdZd d„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z y) Ú ElementInfo©Ú _attr_infoÚ_modelÚtagNameNcó.—||_g|_||_y©N)r$r"r#)Úselfr$Úmodels ú+/usr/lib/python3.12/xml/dom/expatbuilder.pyÚ__init__zElementInfo.__init__?s€ØˆŒ ؈ŒØˆ� ócóH—|j|j|jfSr&r!©r's r)Ú __getstate__zElementInfo.__getstate__Ds€Ø�‰ § ¡ ¨T¯\©\Ð9Ð9r+có.—|\|_|_|_yr&r!)r'Ústates r)Ú __setstate__zElementInfo.__setstate__Gs€Ø5:Ñ2ˆŒ˜œ d¥lr+có —|jD]0}|d|k(sŒ |d}|ddk(r tdcSt|dcStjS)NééþÿÿÿrÚ(r)r"Ú _typeinfo_maprÚ_no_type)r'ÚanameÚinfoÚts r)ÚgetAttributeTypezElementInfo.getAttributeTypeJsX€Ø—O”OˆDØ�A‰w˜%ÓØ˜‘H�Ø�Q‘4˜3’;Ü(¨Ñ0Ò0ä(¨¨b©Ñ2Ò2ð $ô×ÑÐr+có"—tjSr&)rr7)r'Ú namespaceURIÚ localNames r)ÚgetAttributeTypeNSzElementInfo.getAttributeTypeNSTs€Ü×ÑÐr+có¦—|jrE|jd}|tjjtjjfvSy©NrF)r#r r(Ú XML_CTYPE_ANYÚXML_CTYPE_MIXED)r'Útypes r)ÚisElementContentzElementInfo.isElementContentWsF€Ø �;Š;Ø—;‘;˜q‘>ˆDؤ§ ¡ × 9Ñ 9Ü %§ ¡ × ;Ñ ;ð =ð=ð =ðr+cóp—|jr*|jdtjjk(SyrA)r#r r(ÚXML_CTYPE_EMPTYr-s r)ÚisEmptyzElementInfo.isEmpty_s)€Ø �;Š;Ø—;‘;˜q‘>¤U§[¡[×%@Ñ%@Ñ@Ð @àr+cóJ—|jD]}|d|k(sŒ |ddk(cSy)Nr3r4rF)r")r'r8r9s r)ÚisIdzElementInfo.isIdes0€Ø—O”OˆDØ�A‰w˜%ÓØ˜B‘x 4Ñ'Ò'ð$ðr+có(—|j||f«Sr&)rJ)r'ÚeuriÚenameÚaurir8s r)ÚisIdNSzElementInfo.isIdNSks€à�y‰y˜$ ˜Ó'Ð'r+r&) Ú__name__Ú __module__Ú __qualname__Ú __slots__r*r.r1r;r?rErHrJrO©r+r)r r <s4„Ø1€Ióò :ò;ò ò òòò ó (r+r có&—|j||«Sr&)Ú_intern_setdefault)ÚbuilderÚss r)Ú_internrYos€Ø × %Ñ % a¨Ó +Ð+r+có6—d|vsJ‚|jd«}|j}t|«dk(r)|\}}}|||«}|›d|›�}|||«}|||«}n3t|«dk(r|\}}t}|||«x}}nt d|z«‚|||«|||fS)NÚ éÚ:éz4Unsupported syntax: spaces in URIs not supported: %r)ÚsplitrVÚlenrÚ ValueError)rWÚnameÚpartsÚinternÚuriÚ localnameÚprefixÚqnames r)Ú_parse_ns_namerirs½€Ø �$‰;Ј;Ø �J‰J�s‹O€EØ × 'Ñ '€FÜ ˆ5ƒz�Q‚Ø!&шˆY˜Ù˜ Ó'ˆÚ!¡9Ð-ˆÙ�u˜eÓ$ˆÙ˜9 iÓ0‰ Ü ˆU‹�qŠØ‰ˆˆY܈Ù" 9¨iÓ8Ð8ˆ‘ äÐOÐRVÑVÓWÐWÙ �#�sÓ ˜Y¨°Ð 5Ð5r+cóº—eZdZdZdd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zy) Ú ExpatBuilderzPDocument builder that uses Expat to build a ParsedXML.DOM document instance.Ncó—|€tj«}||_|jj�%t |jj«|_nd|_t |_d|_|j«yr&) rÚOptionsÚ_optionsÚfilterÚFilterVisibilityControllerÚ_filterrÚ_finish_start_elementÚ_parserÚreset)r'Úoptionss r)r*zExpatBuilder.__init__‰sc€Ø ˆ?Ü ×(Ñ(Ó*ˆG؈Œ Ø �=‰=× Ñ Ð +Ü5°d·m±m×6JÑ6JÓKˆD�LàˆDŒLô*,ˆDÔ &؈Œ Ø � ‰ � r+có*—tj«S)zCreate a new parser object.)r Ú ParserCreater-s r)Ú createParserzExpatBuilder.createParser—s€ä×!Ñ!Ó#Ð#r+cóB—|jsˆ|j«|_|jjj|_d|j_d|j_d|j_|j|j«|jS)z7Return the parser object, creating a new one if needed.T) rsrxrdÚ setdefaultrVÚ buffer_textÚordered_attributesÚspecified_attributesÚinstallr-s r)Ú getParserzExpatBuilder.getParser›so€à�|Š|Ø×,Ñ,Ó.ˆDŒLØ&*§l¡l×&9Ñ&9×&DÑ&DˆDÔ #Ø'+ˆD�L‰LÔ $Ø.2ˆD�L‰LÔ +Ø04ˆD�L‰LÔ -Ø �L‰L˜Ÿ™Ô &Ø�|‰|Ðr+cóª—tjtdd«|_|j|_|jj |_d|_y)z6Free all data structures used during DOM construction.NF)ÚtheDOMImplementationÚcreateDocumentrÚdocumentÚcurNodeÚ _elem_infoÚ_cdatar-s r)rtzExpatBuilder.reset¦s>€ä,×;Ñ;Ü ˜T 4ó)ˆŒ à—}‘}ˆŒ ØŸ-™-×2Ñ2ˆŒØˆ� r+cóˆ—|j|_|j|_|j|_|j |_|jjr|j|_ |j|_ |jjr|j|_|jj"r4|j$|_|j(|_|j,|_n|j0|_|j2|_|j6|_|j:|_|j>|_ y)z>Install the callbacks needed to build the DOM into the parser.N)!Ústart_doctype_decl_handlerÚStartDoctypeDeclHandlerÚfirst_element_handlerÚStartElementHandlerÚend_element_handlerÚEndElementHandlerÚ pi_handlerÚProcessingInstructionHandlerrnrÚentity_decl_handlerÚEntityDeclHandlerÚnotation_decl_handlerÚNotationDeclHandlerÚcommentsÚcomment_handlerÚCommentHandlerÚcdata_sectionsÚstart_cdata_section_handlerÚStartCdataSectionHandlerÚend_cdata_section_handlerÚEndCdataSectionHandlerÚcharacter_data_handler_cdataÚCharacterDataHandlerÚcharacter_data_handlerÚexternal_entity_ref_handlerÚExternalEntityRefHandlerÚxml_decl_handlerÚXmlDeclHandlerÚelement_decl_handlerÚElementDeclHandlerÚattlist_decl_handlerÚAttlistDeclHandler©r'Úparsers r)r~zExpatBuilder.install®sû€ð*.×)HÑ)HˆÔ&Ø%)×%?Ñ%?ˆÔ"Ø#'×#;Ñ#;ˆÔ Ø.2¯o©oˆÔ+Ø �=‰=× !Ò !Ø'+×'?Ñ'?ˆFÔ $Ø%)×%?Ñ%?ˆÔ"Ø �=‰=× !Ò !Ø$(×$8Ñ$8ˆFÔ !Ø �=‰=× 'Ò 'Ø.2×.NÑ.NˆFÔ +Ø,0×,JÑ,JˆFÔ )Ø*.×*KÑ*KˆFÕ 'à*.×*EÑ*EˆFÔ 'Ø*.×*JÑ*JˆÔ'Ø $× 5Ñ 5ˆÔØ$(×$=Ñ$=ˆÔ!Ø$(×$=Ñ$=ˆÕ!r+có|—|j«}d} |jd«x}rQ|j|d«|r'|jjr|j |«d}|jd«x}rŒQ|jdd«|j}|j«d|_|S#t $rYŒ0wxYw)zIParse a document from a file object, returning the document node.Ti@Fr+N) rÚreadÚParserƒÚdocumentElementÚ _setup_subsetÚ ParseEscapertrs)r'Úfiler¨Ú first_bufferÚbufferÚdocs r)Ú parseFilezExpatBuilder.parseFileÅs¸€ð—‘Ó!ˆØˆ ð Ø ŸI™I gÓ.Ð.�&Ð.Ø— ‘ ˜V UÔ+Ù D§M¡M×$AÒ$AØ×&Ñ& vÔ.Ø$� ð !ŸI™I gÓ.Ð.�&Ñ.ð �L‰L˜˜dÔ #ð�m‰mˆØ � ‰ Œ ؈Œ ؈ øô ò Ù ð ús”A#B/Á8B/Â/ B;Â:B;cóÒ—|j«} |j|d«|j|«|j}|j «d|_|S#t$rYŒ0wxYw)zÑ*>ˆD�L‰LÔ 'Ø48·O±Oˆ� ‰ Ô1Ø—’ 4§<¢<Ü')ˆDÕ $ð$0�r+cóþ—|jj||«}t|j|«|jr?|jj |«t k(r|jj|«yyyr&)rƒÚcreateProcessingInstructionr r„rqrÄrÅÚ removeChild)r'ÚtargetÚdataÚnodes r)rŽzExpatBuilder.pi_handler s]€Ø�}‰}×8Ñ8¸ÀÓFˆÜ�d—l‘l DÔ)Ø �<Š<˜DŸL™L×3Ñ3°DÓ9¼]ÒJØ �L‰L× $Ñ $ TÕ *ðKˆˆDØ—I‘I Ñ$ˆE؈DŒIØ ä—<‘<“>ˆD؈DŒIØ!%§¡ˆDÔ Ü�d—l‘l DÕ)r+có2—|jj}|r0|djtk(r|d}|j|z|_yt j «}|j|z|_|j|_t|j|«yr¿) r„rÆrÙrÝrÕrrÞrƒrÃr )r'rÕrÆrÖs r)ržz#ExpatBuilder.character_data_handler#sv€Ø—\‘\×,Ñ,ˆ Ù ˜* R™.×1Ñ1´YÒ>ؘb‘>ˆDØŸ ™  DÑ(ˆDŒIØ Ü�|‰|‹~ˆØ—I‘I Ñ$ˆŒ Ø!Ÿ]™]ˆÔÜ�d—l‘l DÕ)r+có —|ry|jjsy|jj||||«}|�6|jj |«} |j j | «|jjjjj |«|jrO|jj|«tk(r,|jjjjd=yyyr¿) rnrrƒÚ_create_entityÚcreateTextNoderÆÚappendr¸rÇrqrÄrÅ) r'Ú entityNameÚis_parameter_entityrßÚbaserÌrÍÚ notationNamerÖÚchilds r)r�z ExpatBuilder.entity_decl_handler.sË€á à Ø�}‰}×%Ò%Ø Ø�}‰}×+Ñ+¨J¸Ø,4°lóDˆà Ð ð—M‘M×0Ñ0°Ó7ˆEØ �O‰O× "Ñ " 5Ô )Ø � ‰ ×Ñ×&Ñ&×+Ñ+×2Ñ2°4Ô8Ø �<Š<˜DŸL™L×3Ñ3°DÓ9¼]ÒJØ— ‘ ×%Ñ%×.Ñ.×3Ñ3°BÑ7ðKˆò.ò& ò:òOò**ò+ò *ò( *ò8ò$9ò +ò %ò%òò5ò -ò"ò.*ò !ò$ò" òBó1r+rkcó:—eZdZdZdZd„Zd„Zd„Zeje jeje jeje jej e j"ej$e j&ej(e j*ej,e j.ej0e j2ej4e j6ej8e j:ej<e j>ej@e jBi Z"y)rpzoWrapper around a DOMBuilderFilter which implements the checks to make the whatToShow filter attribute work.©rocó—||_yr&r)r'ros r)r*z#FilterVisibilityController.__init__Ës €Øˆ� r+có—|j|j}|jj|zrK|jj |«}|t k(rt ‚|tvrtdt|«z«‚|StS)Nz)startContainer() returned illegal value: ) Ú_nodetype_maskrÙroÚ whatToShowrÿÚFILTER_INTERRUPTr®Ú_ALLOWED_FILTER_RETURNSraÚreprrì)r'rÖÚmaskÚvals r)rÿz)FilterVisibilityController.startContainerÎsz€Ø×"Ñ" 4§=¡=Ñ1ˆØ �;‰;× !Ñ ! DÒ (Ø—+‘+×,Ñ,¨TÓ2ˆCØÔ&Ò&Ü!Ð!ØÔ1Ñ1Ü ØAÄDÈÃIÑMóOðOàˆJä Ð r+cóˆ—|j|j}|jj|zr‹|jj |«}|t k(rt ‚|tk(r7|j}|jddD]}|j|«ŒtS|tvrtdt|«z«‚|StS)Nz%acceptNode() returned illegal value: )rrÙrorrÄrr®rrrÆÚ appendChildrÅr rar!rì)r'rÖr"r#Úparentrés r)rÄz%FilterVisibilityController.acceptNodeÛs´€Ø×"Ñ" 4§=¡=Ñ1ˆØ �;‰;× !Ñ ! DÒ (Ø—+‘+×(Ñ(¨Ó.ˆCØÔ&Ò&Ü!Ð!Ø”kÒ!àŸ™�Ø!Ÿ_™_©QÓ/�EØ×&Ñ& uÕ-ð0ô%Ð$ØÔ1Ñ1Ü Ø=ÄÀSà ÑIóKðKàˆJä Ð r+N)#rPrQrRrrSr*rÿrÄrÚ ELEMENT_NODEr Ú SHOW_ELEMENTÚATTRIBUTE_NODEÚSHOW_ATTRIBUTErÝÚ SHOW_TEXTrÚÚSHOW_CDATA_SECTIONÚENTITY_REFERENCE_NODEÚSHOW_ENTITY_REFERENCEÚ ENTITY_NODEÚ SHOW_ENTITYÚPROCESSING_INSTRUCTION_NODEÚSHOW_PROCESSING_INSTRUCTIONÚ COMMENT_NODEÚ SHOW_COMMENTÚ DOCUMENT_NODEÚ SHOW_DOCUMENTÚDOCUMENT_TYPE_NODEÚSHOW_DOCUMENT_TYPEÚDOCUMENT_FRAGMENT_NODEÚSHOW_DOCUMENT_FRAGMENTÚ NOTATION_NODEÚ SHOW_NOTATIONrrTr+r)rprpÅsð„ñ5ð€Iòò !ò!ð* ×Ѩ*×*AÑ*AØ ×Ѩ*×*CÑ*CØ �‰¨*×*>Ñ*>Ø ×Ѩ*×*GÑ*GØ ×"Ñ"¨*×*JÑ*JØ ×Ѩ*×*@Ñ*@Ø ×(Ñ(¨*×*PÑ*PØ ×Ѩ*×*AÑ*AØ ×Ѩ*×*BÑ*BØ ×Ѩ*×*GÑ*GØ ×#Ñ#¨*×*KÑ*KØ ×Ѩ*×*BÑ*Bð  �Nr+rpcó—eZdZdZd„Zy)Ú FilterCrutch)Ú_builderÚ_levelÚ _old_startÚ_old_endcóÀ—d|_||_|j}|j|_|j |_|j|_|j|_yr) r@r?rsr‹rAr�rBrörŒ)r'rWr¨s r)r*zFilterCrutch.__init__sO€ØˆŒ ؈Œ Ø—‘ˆØ ×4Ñ4ˆŒØ×0Ñ0ˆŒ Ø%)×%?Ñ%?ˆÔ"Ø#'×#;Ñ#;ˆÕ r+N)rPrQrRrSr*rTr+r)r>r>ÿs „Ø>€Iócó"—eZdZdZd„Zd„Zd„Zy)rrTcóp—tj||«|j}dD]}t||d«Œy)N)r�r–r�r™r›r )r>r*rsÚsetattr)r'rWr¨rbs r)r*zRejecter.__init__s5€Ü×јd GÔ,Ø—‘ˆóˆDô �F˜D $Õ 'ñr+có,—|jdz|_yró)r@©r'Úargss r)rözRejecter.start_element_handlers€Ø—k‘k A‘oˆ� r+cóò—|jdk(rT|jj}|jj|«|j|_|j |_y|jdz |_y©Nrr3)r@r?rsr~rAr‹rBr�)r'rIr¨s r)rŒzRejecter.end_element_handlersV€Ø �;‰;˜!Ò à—]‘]×*Ñ*ˆFØ �M‰M× !Ñ ! &Ô )Ø)-¯©ˆFÔ &Ø'+§}¡}ˆFÕ $àŸ+™+¨™/ˆD�Kr+N)rPrQrRrSr*rörŒrTr+r)rr s„Ø€Iò (ò&ó*r+rcó—eZdZdZd„Zd„Zy)rrTcó¨—|jj}|j|Ž|jj|ur|jdz|_yyró)r?r„rAr@)r'rIrÖs r)rözSkipper.start_element_handler*sE€Ø�}‰}×$Ñ$ˆØˆ�‰˜ÑØ �=‰=× Ñ ¨Ñ ,ØŸ+™+¨™/ˆD�Kð -r+có —|jdk(rR|j|jj_|j |jj_d|_y|jdz |_|j |ŽyrK)r@rAr?rsr‹rBr�rHs r)rŒzSkipper.end_element_handler0s`€Ø �;‰;˜!Ò ð9=¿¹ˆD�M‰M× !Ñ !Ô 5Ø6:·m±mˆD�M‰M× !Ñ !Ô 3Ø ˆD�MàŸ+™+¨™/ˆDŒKØ ˆD�M‰M˜4Ò r+N)rPrQrRrSrörŒrTr+r)rr's„Ø€Iò*ó !r+rz8http://xml.python.org/entities/fragment-builder/internalzŠ %%s ]> &fragment-builder-internal;có<—eZdZdZd d„Zd„Zd„Zd„Zd„Zd„Z d „Z y) ÚFragmentBuilderzñBuilder which constructs document fragments given XML source text and a context node. The context node is expected to provide information about the namespace declarations which are in scope at the start of the fragment. Ncó¤—|jtk(r||_||_n|j|_||_t j ||«yr&)rÙr5ÚoriginalDocumentrôrÃrkr*)r'rôrus r)r*zFragmentBuilder.__init__XsD€Ø × Ñ œ}Ò ,Ø$+ˆDÔ !Ø"ˆD�Là$+×$9Ñ$9ˆDÔ !Ø"ˆDŒLÜ×јd GÕ,r+có<—tj|«d|_yr&)rkrtÚfragmentr-s r)rtzFragmentBuilder.resetas€Ü×ј4Ô Øˆ� r+có@—|j|j««S)zRParse a document fragment from a file object, returning the fragment node.)r¶rª©r'r¯s r)r³zFragmentBuilder.parseFilees€ð×Ñ § ¡ £ Ó,Ð,r+cóö—||_|j«}|jj}d}|rd|jxs|j «}|j rd|j ›d|j›d�}n|jrd|jz}nd}|j«}t|||fz} |j|d«|j}|j«|S#|j«‚xYw)zMParse a document fragment from a string, returning the fragment node.ÚzPUBLIC "z" "Ú"z SYSTEM "%s"T) Ú_sourcerrRr¸r»Ú_getDeclarationsrÍrÌÚ _getNSattrsÚ_FRAGMENT_BUILDER_TEMPLATEr«rtrT) r'rµr¨r¸Úidentr½ÚnsattrsrƒrTs r)r¶zFragmentBuilder.parseStringjsç€ðˆŒ Ø—‘Ó!ˆØ×'Ñ'×/Ñ/ˆØˆÙ Ø×+Ñ+ÒF¨t×/DÑ/DÓ/FˆFØ×Óà#×,Ó,¨g×.>Ó.>ð@‘à×!Ò!Ø%¨×(8Ñ(8Ñ8‘àˆFØ×"Ñ"Ó$ˆÜ-°¸ÀÐ0HÑHˆð Ø �L‰L˜ 4Ô (ð—=‘=ˆØ � ‰ Œ àˆøð  Ø �J‰JŒLØ ús Â5C%Ã%C8có:—|jjj}d}|�rut|jj «D]s}|jj |«}|r|dz}|›d|j›�}|jr |›d|j›d|j›d�}Œb|›d|j›d�}Œut|jj «D]¾}|jj |«}|r|dz}|›d|j›�}|jr |›d|j›d|j›d �}n;|jr|›d|j›d �}n|›d |jj›d �}|jr|›d |j›�}|d z}ŒÀ|S) z Re-create the internal subset from the DocumentType node. This is only needed if we don't already have the internalSubset as a string. rXz z z SYSTEM "z )rôrÃr¸rúrÈÚlengthÚitemÚnodeNamerÍrÌrÚ firstChildrÕrè)r'r¸rXrüÚnotationrs r)r[z FragmentBuilder._getDeclarations†sc€ð —,‘,×,Ñ,×4Ñ4ˆØ ˆÚ ܘ7×,Ñ,×3Ñ3Ö4�Ø"×,Ñ,×1Ñ1°!Ó4�ÙØ˜F™ �AÚ)*¨H×,=Ò,=Ð>�Ø×$Ò$â˜h×/Ó/°×1BÓ1BðD‘Aò./°×0AÓ0AÐB‘Að5ô˜7×+Ñ+×2Ñ2Ö3�Ø ×)Ñ)×.Ñ.¨qÓ1�ÙØ˜F™ �AÚ'(¨&¯/ª/Ð:�Ø—?’?â˜fŸo›o¨v¯«ð@‘Aà—_’_Ú,-¨v¯«Ð?‘Aâ%&¨×(9Ñ(9×(>Ó(>Ð?�AØ×&Ò&Ú,-¨v×/BÒ/BÐC�Aؘ‘G‘ð4ðˆr+có—y)NrXrTr-s r)r\zFragmentBuilder._getNSattrsªs€Ør+cóÈ—|tk(r§|j}|j}|jj |«}|j |_|jj «|_|j|_ |j|jd«||_||_d|_ ytj|||||«S#||_||_d|_ wxYw)NTrÀ) Ú$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDrƒr„rsÚExternalEntityParserCreaterRÚcreateDocumentFragmentrTr«rZrkrŸ)r'rôrçrÌrÍÚ old_documentÚ old_cur_noder¨s r)rŸz+FragmentBuilder.external_entity_ref_handler­sÅ€Ø Ô;Ò ;ð Ÿ=™=ˆLØŸ<™<ˆLØ—\‘\×<Ñ<¸WÓEˆFà ×1Ñ1ˆDŒMØ ŸM™M×@Ñ@ÓBˆDŒMØŸ=™=ˆDŒLð $Ø— ‘ ˜TŸ\™\¨4Ô0à+�” Ø ,�” Ø#�” Øä×;Ñ;Ø�g˜t X¨xó9ð 9øð ,�” Ø ,�” Ø#�• ús Á?C à C!r&) rPrQrRrr*rtr³r¶r[r\rŸrTr+r)rPrPOs+„ñó-òò-ò ò8"òHó9r+rPcó6—eZdZdZd„Zd„Zd„Zd„Zd„Z d„Z y) Ú Namespacesz7Mix-in class for builders; adds support for namespaces.có—g|_yr&)Ú_ns_ordered_prefixesr-s r)Ú_initNamespaceszNamespaces._initNamespacesÇs €ð%'ˆÕ!r+có@—tjd¬«}d|_|S)z'Create a new namespace-handling parser.r[)Únamespace_separatorT)r rwÚnamespace_prefixesr§s r)rxzNamespaces.createParserÌs€ä×#Ñ#¸Ô<ˆØ$(ˆÔ!؈ r+có€—tj||«|jjr|j|_yy)z.Insert the namespace-handlers onto the parser.N)rkr~rnÚnamespace_declarationsÚstart_namespace_decl_handlerÚStartNamespaceDeclHandlerr§s r)r~zNamespaces.installÒs5€ä×јT 6Ô*Ø �=‰=× /Ò /à×1Ñ1ð Õ ,ð 0r+có>—|jj||f«y)z/Push this namespace declaration on our storage.N)rqrä)r'rgres r)rxz'Namespaces.start_namespace_decl_handlerÙs€à ×!Ñ!×(Ñ(¨&°#¨Õ7r+cóÒ—d|vrt||«\}}}}nt}|}d}t}tj||||«}|j |_t|j|«||_|jr“|jD]u\}}|r*tjt|d|z«t|d«}n tjdtdt«}||_ |j |_t||«Œw|jdd…=|rÚ|j«|j } |j"} t%dt'|«d«D]˜} || } || dz} d| vr6t|| «\}}}}tj||||«}|| |<|| ||f<n0tj| t| t«}|| | <|| t| f<|j |_| |_ ||_Œšyy)Nr[úxmlns:Úxmlnsrr^r3)rirrrÚElementrƒrÃr r„rqrûrYrrßr Ú_ensure_attributesÚ_attrsÚ_attrsNSrúr`Ú ownerElement)r'rbr÷rerfrgrhrÖrýr€r�rür8rßs r)röz Namespaces.start_element_handlerÝsÓ€Ø �$‰;Ü,:¸4ÀÓ,FÑ )ˆC�˜F¡Eä!ˆC؈E؈IÜ!ˆFÜ�‰˜u c¨6°9Ó=ˆØ!Ÿ]™]ˆÔÜ�d—l‘l DÔ)؈Œ à × $Ò $Ø#×8Ô8‘ �˜ÙÜŸ ™ ¤W¨T°8¸fÑ3DÓ%EÜ%4°f¸góG‘Aô Ÿ ™  W¬oØ%,¬ló<�Aà�”Ø"&§-¡-�”Ü# D¨!Õ,ð 9ð×)Ñ)ª!Ð,á Ø × #Ñ #Ô %Ø—[‘[ˆFØ—}‘}ˆHܘ1œc *›o¨qÖ1�Ø" 1™ �Ø" 1 Q¡3™�ؘ%‘<Ü4BÀ4ÈÓ4OÑ1�C˜ F¨EÜŸ ™  U¨C°¸FÓC�AØ$%�F˜5‘MØ12�H˜c 9Ð-Ò.äŸ ™  U¬OØ%*¬Ló:�Aà$%�F˜5‘MØ9:�Hœo¨uÐ5Ñ6Ø"&§-¡-�”Ø�”Ø!%�•ñ2ð r+cóR—|j}d|vrEt||«\}}}}|j|k(r|j|k(r|j|k(s7Jd«‚|j |k(sJd«‚|jt k(sJd«‚|j|_|j|«y)Nr[z$element stack messed up! (namespace)z&element stack messed up - bad nodeNamez*element stack messed up - bad namespaceURI) r„rir=r>rgrdrrrÐ)r'rbr„rerfrgrhs r)rŒzNamespaces.end_element_handlersÀ€Ø—l‘lˆGØ�d‰{Ü0>¸tÀTÓ0JÑ-��Y ¨Ø×,Ñ,°Ò3Ø#×-Ñ-°Ò:Ø#ŸN™N¨fÒ4ð?ð?ó?ð5ð ×'Ñ'¨4Ò/ð@Ø?ó@Ð/à×+Ñ+¬Ò>ðDØCóDÐ>à"×-Ñ-ˆDŒLØ × $Ñ $ WÕ -r+N) rPrQrRrrrrxr~rxrörŒrTr+r)roroÄs)„ÙAò'ò ò 3ò8ò-&ð^ó  .r+rocó—eZdZdZd„Zy)ÚExpatBuilderNSz*Document builder that supports namespaces.cóN—tj|«|j«yr&)rkrtrrr-s r)rtzExpatBuilderNS.reset&s€Ü×ј4Ô Ø ×ÑÕr+N)rPrQrRrrtrTr+r)r…r…#s „Ù4ór+r…có—eZdZdZd„Zd„Zy)ÚFragmentBuilderNSz*Fragment builder that supports namespaces.cóN—tj|«|j«yr&)rPrtrrr-s r)rtzFragmentBuilderNS.reset.s€Ü×јdÔ#Ø ×ÑÕr+có—d}|j}g}|rtt|d«rY|jj«D]<\}}||vrŒ |j |«|rd|z}nd}|r |›d|›d|›d�}Œ4d|›d|›d�}Œ>|j }|rŒt|S) zNReturn string of namespace attributes from this element and ancestors.rXÚ_ns_prefix_urir|r}z z='Ú'r[)rôÚhasattrr‹Úitemsrär)r'Úattrsrôr rgreÚdeclnames r)r\zFragmentBuilderNS._getNSattrs2s¤€ðˆØ—,‘,ˆØ ˆÙÜ�wÐ 0Ô1Ø#*×#9Ñ#9×#?Ñ#?Ö#A‘K�F˜Cà ‘{Ø Ø—H‘H˜VÔ$ÙØ#+¨fÑ#4™à#*˜ÙÚ5:ºHÂcÐ J™ðò/7ºÐ <™ð$Bð×(Ñ(ˆGòð ˆ r+N)rPrQrRrrtr\rTr+r)rˆrˆ+s„Ù4òór+rˆcó—eZdZdZy)r®zEException raised to short-circuit parsing in InternalSubsetExtractor.N)rPrQrRrrTr+r)r®r®Ps„ÙOØr+r®có>—eZdZdZdZd„Zd„Zd„Zd„Zd„Z d„Z d „Z y) r¹zBXML processor which can rip out the internal document type subset.Ncó—|jS)z'Return the internal subset as a string.)r½r-s r)rºz!InternalSubsetExtractor.getSubsetYs €à�{‰{Ðr+cóP— tj||«y#t$rYywxYwr&)rkr³r®rVs r)r³z!InternalSubsetExtractor.parseFile]s)€ð Ü × "Ñ " 4¨Õ .øÜò Ù ð úó ‚™ %¤%cóP— tj||«y#t$rYywxYwr&)rkr¶r®)r'rµs r)r¶z#InternalSubsetExtractor.parseStringcs)€ð Ü × $Ñ $ T¨6Õ 2øÜò Ù ð úr•cóH—|j|_|j|_yr&)rˆr‰rör‹r§s r)r~zInternalSubsetExtractor.installis€Ø)-×)HÑ)HˆÔ&Ø%)×%?Ñ%?ˆÕ"r+có¢—|rD|j«}g|_|jj|_|j|_yt «‚r&)rr½räÚDefaultHandlerrÉrÊr®)r'rbrÍrÌrÎr¨s r)rˆz2InternalSubsetExtractor.start_doctype_decl_handlerms@€á Ø—^‘^Ó%ˆF؈DŒKØ$(§K¡K×$6Ñ$6ˆFÔ !Ø+/×+HÑ+HˆFÕ (ä“-Ð r+cóš—dj|j«jdd«jdd«}||_t«‚)NrXz Ú Ú )Újoinr½Úreplacer®)r'rXs r)rÉz0InternalSubsetExtractor.end_doctype_decl_handlerws=€Ø �G‰G�D—K‘KÓ × (Ñ (¨°Ó 6× >Ñ >¸tÀTÓ JˆØˆŒ Ü‹mÐr+có—t«‚r&)r®)r'rbr�s r)röz-InternalSubsetExtractor.start_element_handler|s €Ü‹mÐr+) rPrQrRrr½rºr³r¶r~rˆrÉrörTr+r)r¹r¹Ts.„ÙLà €Fòòò ò @ò òó r+r¹cóà—|r t«}n t«}t|t«r(t |d«5}|j |«}ddd«|S|j |«}|S#1swYSxYw)z{Parse a document, returning the resulting Document node. 'file' may be either a file name or an open file object. ÚrbN)r…rkÚ isinstanceÚstrÚopenr³)r¯Ú namespacesrWÚfpÚresults r)Úparser¨€sl€ñ Ü Ó"‰ä“.ˆä�$œÔÜ �$˜Ô  Ø×&Ñ& rÓ*ˆF÷ð €Mð×"Ñ" 4Ó(ˆØ €M÷ ð €Mús ´A#Á#A-cóR—|r t«}n t«}|j|«S)zOParse a document from a string, returning the resulting Document node. )r…rkr¶)rµr¥rWs r)r¶r¶’s'€ñÜ Ó"‰ä“.ˆØ × Ñ ˜vÓ &Ð&r+cóä—|r t|«}n t|«}t|t«r(t |d«5}|j |«}ddd«|S|j |«}|S#1swYSxYw)zìParse a fragment of a document, given the context from which it was originally extracted. context should be the parent of the node(s) which are in the fragment. 'file' may be either a file name or an open file object. r¡N)rˆrPr¢r£r¤r³)r¯rôr¥rWr¦r§s r)Ú parseFragmentr«�sq€ñÜ# GÓ,‰ä! 'Ó*ˆä�$œÔÜ �$˜Ô  Ø×&Ñ& rÓ*ˆF÷ð €Mð×"Ñ" 4Ó(ˆØ €M÷ ð €Mús ¶A%Á%A/cóV—|r t|«}n t|«}|j|«S)z¼Parse a fragment of a document from a string, given the context from which it was originally extracted. context should be the parent of the node(s) which are in the fragment. )rˆrPr¶)rµrôr¥rWs r)ÚparseFragmentStringr­±s,€ñ Ü# GÓ,‰ä! 'Ó*ˆØ × Ñ ˜vÓ &Ð&r+cóF—|jr t|«St|«S)z,Create a builder based on an Options object.)r¥r…rk)rus r)Ú makeBuilderr¯½s!€à×ÒܘgÓ&Ð&ä˜GÓ$Ð$r+)T)3rÚxml.domrrrrrrÚ xml.parsersr Úxml.dom.minidomr r Úxml.dom.NodeFilterr rÝrÚr5ÚDOMBuilderFilterrìrÅrrÚgetDOMImplementationr�ÚTypeInfor6Úobjectr rYrirkr rpr>rrrir]rPror…rˆÚ Exceptionr®r¹r¨r¶r«r­r¯rTr+r)Úr¹s/ðñ÷:.Ñ-ßBÑBÝß>Ý)à �N‰N€ Ø×,Ñ,ÐØ×"Ñ"€ à×+Ñ+×9Ñ9€ Ø×+Ñ+×9Ñ9€ Ø×)Ñ)×5Ñ5€ Ø×.Ñ.×?Ñ?Ðà3�w×3Ñ3Ó5Ðð!�× Ñ   wÓ/Ø �× Ñ   }Ó5Ø �× Ñ   xÓ0Ø �× Ñ   zÓ2Ø �× Ñ   tÓ,Ø �× Ñ   wÓ/Ø �× Ñ   xÓ0Ø �× Ñ   yÓ1Ø �× Ñ   zÓ2ñ € ô1(�&ô1(òf,ò6÷&y1ñy1ð| )¨-¸ÐEÐô7  ô7 ôt <�6ô <ô*ˆ|ô*ô8!ˆlô!ð2?ð%ð*ð+ñ +ðôr9�lôr9÷j\.ñ\.ô~�Z ôô"˜  Oô"ôJ �)ô ô)˜lô)óXó$'óó( 'ó%r+