
    4\h                        	 d dl mZmZmZ d dl mZmZmZ d dlmZ d dl	m
Z
mZ d dlmZ ej        Zej        Zej        Zej        j        Zej        j        Zej        j        Zej        j        Z ej                    Z ej        dd           ej        dd           ej        dd	           ej        dd
           ej        dd           ej        dd           ej        dd           ej        dd           ej        dd          d	Z G d de          Zd Zd Z G d d          ZeeefZ G d de          Z  G d de          Z! G d de!          Z" G d de!          Z#dZ$d e$z  Z% G d! d"e          Z& G d# d$          Z' G d% d&e'e          Z( G d' d(e'e&          Z) G d) d*e*          Z+ G d+ d,e          Z,d3d.Z-d3d/Z.d3d0Z/d3d1Z0d2 Z1dS )4    )
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                   J    e Zd ZdZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd ZdS )ElementInfo
_attr_info_modeltagNameNc                 0    || _         g | _        || _        d S N)r$   r"   r#   )selfr$   models      >/opt/python-3.11.14/usr/lib/python3.11/xml/dom/expatbuilder.py__init__zElementInfo.__init__?   s        c                 *    | j         | j        | j        fS r&   r!   r'   s    r)   __getstate__zElementInfo.__getstate__D   s    T\99r+   c                 0    |\  | _         | _        | _        d S r&   r!   )r'   states     r)   __setstate__zElementInfo.__setstate__G   s    5:2dlllr+   c                     | j         D ]F}|d         |k    r8|d         }|d         dk    rt          d         c S t          |d                  c S Gt          j        S )N   r   (r   )r"   _typeinfo_mapr   _no_type)r'   anameinfots       r)   getAttributeTypezElementInfo.getAttributeTypeJ   sn    O 	3 	3DAw%HQ43;;(0000(b2222   r+   c                     t           j        S r&   )r   r7   )r'   namespaceURI	localNames      r)   getAttributeTypeNSzElementInfo.getAttributeTypeNST   s    r+   c                 v    | j         r1| j         d         }|t          j        j        t          j        j        fvS dS Nr   F)r#   r	   r(   XML_CTYPE_ANYXML_CTYPE_MIXED)r'   types     r)   isElementContentzElementInfo.isElementContentW   s?    ; 	;q>D 9 % ; = = = 5r+   c                 T    | j         r | j         d         t          j        j        k    S dS rA   )r#   r	   r(   XML_CTYPE_EMPTYr-   s    r)   isEmptyzElementInfo.isEmpty_   s'    ; 	;q>U[%@@@5r+   c                 N    | j         D ]}|d         |k    r|d         dk    c S dS )Nr3   r4   r   F)r"   )r'   r8   r9   s      r)   isIdzElementInfo.isIde   sA    O 	( 	(DAw%Bx4''''  ur+   c                 0    |                      ||f          S r&   )rJ   )r'   eurienameaurir8   s        r)   isIdNSzElementInfo.isIdNSk   s    yy$'''r+   r&   )__name__
__module____qualname__	__slots__r*   r.   r1   r;   r?   rE   rH   rJ   rO    r+   r)   r    r    <   s        1I   
: : :; ; ;                ( ( ( ( (r+   r    c                 .    |                      ||          S r&   )_intern_setdefault)builderss     r)   _internrY   o   s    %%a+++r+   c                 d   |                     d          }| j        }t          |          dk    r2|\  }}} |||          }|d|} |||          } |||          }n@t          |          dk    r|\  }}t          } |||          x}}nt	          d|z             |||          |||fS )N    :   z4Unsupported syntax: spaces in URIs not supported: %r)splitrV   lenr   
ValueError)rW   namepartsinternuri	localnameprefixqnames           r)   _parse_ns_nameri   r   s    JJsOOE'F
5zzQ!&Y''!6699-ue$$F9i00			UqY"F9i888		ORVVWWW6#sY55r+   c                       e Zd Z	 ddZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )ExpatBuilderNc                     |t          j                    }|| _        | j        j        t	          | j        j                  | _        nd | _        t          | _        d | _        | 	                                 d S r&   )
r   Options_optionsfilterFilterVisibilityController_filterr   _finish_start_element_parserreset)r'   optionss     r)   r*   zExpatBuilder.__init__   sf    ? (**G=+5dm6JKKDLLDL *,D&

r+   c                 *    	 t          j                    S r&   )r	   ParserCreater-   s    r)   createParserzExpatBuilder.createParser   s    )!###r+   c                     	 | j         sm|                                 | _         | j         j        j        | _        d| j         _        d| j         _        d| j         _        |                     | j                    | j         S NT)	rs   rx   rd   
setdefaultrV   buffer_textordered_attributesspecified_attributesinstallr-   s    r)   	getParserzExpatBuilder.getParser   sl    E| 	',,..DL&*l&9&DD#'+DL$.2DL+04DL-LL&&&|r+   c                     	 t                               t          d d           | _        | j        | _        | j        j        | _        d| _        d S NF)theDOMImplementationcreateDocumentr   documentcurNode
_elem_info_cdatar-   s    r)   rt   zExpatBuilder.reset   sC    D,;;T4) )}-2r+   c                    	 | j         |_        | j        |_        | j        |_        | j        |_        | j        j	        r| j
        |_        | j        |_        | j        j        r| j        |_        | j        j        r%| j        |_        | j        |_        | j        |_        n| j        |_        | j        |_        | j        |_        | j        |_        | j        |_         d S r&   )!start_doctype_decl_handlerStartDoctypeDeclHandlerfirst_element_handlerStartElementHandlerend_element_handlerEndElementHandler
pi_handlerProcessingInstructionHandlerrn   r   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   zExpatBuilder.install   s    L)-)H&%)%?"#'#; .2o+=! 	@'+'?F$%)%?"=! 	9$($8F!=' 	F.2.NF+,0,JF)*.*KF''*.*EF'*.*J' $ 5$($=!$($=!!!r+   c                 r   	 |                                  }d}	 	 |                    d          }|sn<|                    |d           |r!| j        j        r|                     |           d}T|                    dd           n# t          $ r Y nw xY w| j        }|                                  d | _        |S )NTr3   i @  Fr+   )	r   readParser   documentElement_setup_subsetParseEscapert   rs   )r'   filer   first_bufferbufferdocs         r)   	parseFilezExpatBuilder.parseFile   s    	!!	%7++ VU+++ /DM$A /&&v...$% LLd#### 	 	 	D	m


s   A+B 
BBc                     	 |                                  }	 |                    |d           |                     |           n# t          $ r Y nw xY w| j        }|                                  d | _        |S rz   )r   r   r   r   r   rt   rs   )r'   stringr   r   s       r)   parseStringzExpatBuilder.parseString   s    J!!	LL&&&v&&&& 	 	 	D	m


s   +A 
AAc                     	 | j         j        rJt                      }|                    |           |                                }|| j         j        _        d S d S r&   )r   doctypeInternalSubsetExtractorr   	getSubsetinternalSubset)r'   r   	extractorsubsets       r)   r   zExpatBuilder._setup_subset   s_    ==  	:/11I!!&)))((**F39DM!000		: 	:r+   c                    | j         j                            |||          }| j         |_        t	          | j         |           || j         _        | j        rV| j                            |          t          k    r3d | j         _        | j         j	        d= d }d | j
        _        d | j
        _        |rE|g |j        _        g |j        _        d | j
        _        d | j
        _        | j        | j
        _        d S d S N)r   implementationcreateDocumentTypeownerDocumentr
   r   rq   
acceptNodeFILTER_REJECT
childNodesrs   r   r   r   _seq	notationsr   r   end_doctype_decl_handlerEndDoctypeDeclHandler)r'   doctypeNamesystemIdpublicIdhas_internal_subsetr   s         r)   r   z'ExpatBuilder.start_doctype_decl_handler   s    -.AA8- - $dmW--- '< 	4DL33G<<MM$(DM!(,G-1DL*/3DL, 	O"(* %)+!&*.DL'8<DL5151NDL...	O 	Or+   c                     | j         j        r| j        | j        _        | j        | j        _        | j        s| j        st          | _
        d S d S d S r&   )rn   r   r   rs   r   r   r   r   rq   r   _finish_end_elementr-   s    r)   r   z%ExpatBuilder.end_doctype_decl_handler  s]    =! 	?*.*>DL'48O1 	*4< 	*')D$$$	* 	* 	* 	*r+   c                     | j                             ||          }t          | j        |           | j        r?| j                            |          t          k    r| j                            |           d S d S d S r&   )r   createProcessingInstructionr
   r   rq   r   r   removeChild)r'   targetdatanodes       r)   r   zExpatBuilder.pi_handler  s{    }88FFdlD)))< 	+DL33D99]JJL$$T*****	+ 	+JJr+   c                    | j         j        }| j        r\| j        r3|d         j        t
          k    r|d                             |           d S | j                            |          }d| _        nY|r1|d         j        t          k    r|d         }|j
        |z   }||_
        d S t          j                    }||_
        | j        |_        t          | j         |           d S )Nr   T)r   r   r   _cdata_continuenodeTypeCDATA_SECTION_NODE
appendDatar   createCDATASection	TEXT_NODEr   r   Textr   r
   )r'   r   r   r   values        r)   r   z)ExpatBuilder.character_data_handler_cdata  s    \,
; 	/&  n-1CCC2))$///=33D99D#'D   	/JrN3y@@b>DI$EDIF<>>DDI!%DdlD)))))r+   c                    | j         j        }|r/|d         j        t          k    r|d         }|j        |z   |_        d S t          j                    }|j        |z   |_        | j        |_        t          | j         |           d S r   )
r   r   r   r   r   r   r   r   r   r
   )r'   r   r   r   s       r)   r   z#ExpatBuilder.character_data_handler&  s|    \,
 	*R.1Y>>b>D	D(DIF|~~I$	!]dlD)))))r+   c                    |rd S | j         j        sd S | j                            ||||          }|4| j                            |          }	|j                            |	           | j        j        j        j                            |           | j	        r<| j	        
                    |          t          k    r| j        j        j        j        d= d S d S d S r   )rn   r   r   _create_entitycreateTextNoder   appendr   r   rq   r   r   )
r'   
entityNameis_parameter_entityr   baser   r   notationNamer   childs
             r)   r   z ExpatBuilder.entity_decl_handler1  s     	F}% 	F}++J,4lD D M0077EO""5)))&+224888< 	8DL33D99]JJ%.3B777	8 	8JJr+   c                    | j                             |||          }| j         j        j        j                            |           | j        r<| j                            |          t          k    r| j         j        j        j        d= d S d S d S r   )	r   _create_notationr   r   r   r   rq   r   FILTER_ACCEPT)r'   r   r   r   r   r   s         r)   r   z"ExpatBuilder.notation_decl_handlerC  s    }--lHhOO',33D999< 	9DL33D99]JJ%/4R888	9 	9JJr+   c                     | j                             |          }t          | j        |           | j        r?| j                            |          t          k    r| j                            |           d S d S d S r&   )r   createCommentr
   r   rq   r   r   r   )r'   r   r   s      r)   r   zExpatBuilder.comment_handlerI  sy    }**400dlD)))< 	+DL33D99]JJL$$T*****	+ 	+JJr+   c                 "    d| _         d| _        d S )NTFr   r   r-   s    r)   r   z(ExpatBuilder.start_cdata_section_handlerO  s    $r+   c                 "    d| _         d| _        d S r   r   r-   s    r)   r   z&ExpatBuilder.end_cdata_section_handlerS  s    $r+   c                     dS Nr3   rT   )r'   contextr   r   r   s        r)   r   z(ExpatBuilder.external_entity_ref_handlerW  s    qr+   c                     | j         | j        st          | _        | j        |                                 _        |                     ||           d S r&   )rq   r   r   r   start_element_handlerr   r   )r'   rb   
attributess      r)   r   z"ExpatBuilder.first_element_handlerZ  sJ    <')D$/3/I,""444444r+   c                    | j                             |          }t          | j        |           || _        |rvt	          dt          |          d          D ]W}t          j        ||         t          d t                    }||dz            }||_
        | j         |_        t          ||           X|| j         j        ur|                     |           d S d S )Nr   r^   r3   )r   createElementr
   r   ranger`   r   Attrr   r   r   r   r   r   rr   )r'   rb   r   r   iar   s          r)   r   z"ExpatBuilder.start_element_handler`  s    }**400dlD))) 	-1c*ooq11 - -LA!%|5 5"1Q3"&-#D!,,,,t}444&&t,,,,, 54r+   c                 P   | j         r|| j        j        u rd S | j                             |          }|t          k    rt          |            n|t          k    rt          |            nd S |j        | _	        |j        
                    |           |                                 d S d S r&   )rq   r   r   startContainerr   RejecterFILTER_SKIPSkipper
parentNoder   r   unlink)r'   r   filts      r)   rr   z"ExpatBuilder._finish_start_elementq  s    < 	 t}444<..t44D}$$$$ ?DLO''---KKMMMMM#	 	r+   c                 V    | j         }|j        | _         |                     |           d S r&   )r   r  r   )r'   rb   r   s      r)   r   z ExpatBuilder.end_element_handler  s-    ,)  )))))r+   c                 L   | j                             |j                  }|r|                     ||           | j        rc|| j        j        u rd S | j                            |          t          k    r2| j	        
                    |           |                                 d S d S d S r&   )r   getr$   _handle_white_text_nodesrq   r   r   r   r   r   r   r  )r'   r   r9   s      r)   r   z ExpatBuilder._finish_end_element  s    ""7?33 	9))'4888< 	!$-777|&&w//=@@((111     	! 	! A@r+   c                    | j         j        s|                                sd S g }|j        D ]@}|j        t
          k    r.|j                                        s|                    |           A|D ]}|	                    |           d S r&   )
rn   whitespace_in_element_contentrE   r   r   r   r   stripr   r   )r'   r   r9   Lr   s        r)   r  z%ExpatBuilder._handle_white_text_nodes  s    M7 	((**	F
 _ 	  	 E~**5:3C3C3E3E*  	$ 	$EU####	$ 	$r+   c                     | j                             |          }|t          ||          | j         |<   d S ||_        d S r&   )r   r
  r    r#   )r'   rb   r(   r9   s       r)   r   z!ExpatBuilder.element_decl_handler  sE    ""4((<$/e$<$<DOD!!!  DKKKr+   c           
          | j                             |          }|t          |          }|| j         |<   |j                            d |d d |d||g           d S Nr   )r   r
  r    r"   r   )r'   elemrb   rD   defaultrequiredr9   s          r)   r   z!ExpatBuilder.attlist_decl_handler  sr    ""4((<t$$D$(DOD!4tWax@	B 	B 	B 	B 	Br+   c                 ~    || j         _        || j         _        |dk    r|rd| j         _        d S d| j         _        d S d S )Nr   TF)r   versionencoding
standalone)r'   r  r  r  s       r)   r   zExpatBuilder.xml_decl_handler  sN     '!)?? 1+/(((+0(((	 ?r+   r&   )rP   rQ   rR   r*   rx   r   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rr   r   r   r  r   r   r   rT   r+   r)   rk   rk      s          $ $ $	 	 	  > > >.  ,  : : :O O O** * *+ + +* * *(	* 	* 	*8 8 8$9 9 9+ + +% % %% % %  5 5 5- - -"  .* * *
	! 	! 	!$ $ $"     B B B1 1 1 1 1r+   rk   c                   J   e Zd Z	 dZd Zd Zd Zej        e	j
        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j        ej        e	j         iZ!dS )rp   ro   c                     || _         d S r&   r  )r'   ro   s     r)   r*   z#FilterVisibilityController.__init__  s    r+   c                     | j         |j                 }| j        j        |z  rV| j                            |          }|t
          k    rt          |t          vrt          dt          |          z             |S t          S )Nz)startContainer() returned illegal value: )_nodetype_maskr   ro   
whatToShowr  FILTER_INTERRUPTr   _ALLOWED_FILTER_RETURNSra   reprr   )r'   r   maskvals       r)   r  z)FilterVisibilityController.startContainer  s    "4=1;!D( 		!+,,T22C&&&!!111 ADIIMO O OJ  r+   c                 ~   | j         |j                 }| j        j        |z  r| j                            |          }|t
          k    rt          |t          k    r5|j        }|j	        d d          D ]}|
                    |           t          S |t          vrt          dt          |          z             |S t          S )Nz%acceptNode() returned illegal value: )r  r   ro   r  r   r   r   r  r  r   appendChildr   r!  ra   r"  r   )r'   r   r#  r$  parentr   s         r)   r   z%FilterVisibilityController.acceptNode  s    "4=1;!D( 	!+((..C&&&!!k!!!_QQQ/ . .E&&u----$$111 =S		IK K KJ  r+   N)"rP   rQ   rR   rS   r*   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_NOTATIONr  rT   r+   r)   rp   rp     s        5 I  ! ! !! ! !* 	**A**C**>**G"**J**@(**P**A**B**G#**K**B
NNNr+   rp   c                       e Zd ZdZd ZdS )FilterCrutch)_builder_level
_old_start_old_endc                     d| _         || _        |j        }|j        | _        |j        | _        | j        |_        | j        |_        d S r  )	rA  r@  rs   r   rB  r   rC  r   r   )r'   rW   r   s      r)   r*   zFilterCrutch.__init__  sG     40%)%?"#'#;   r+   N)rP   rQ   rR   rS   r*   rT   r+   r)   r?  r?    s(        >I< < < < <r+   r?  c                   $    e Zd ZdZd Zd Zd ZdS )r  rT   c                 v    t                               | |           |j        }dD ]}t          ||d            d S )N)r   r   r   r   r   r   )r?  r*   rs   setattr)r'   rW   r   rb   s       r)   r*   zRejecter.__init__  sQ    dG,,, 	( 	(D FD$''''	( 	(r+   c                 $    | j         dz   | _         d S r   )rA  r'   argss     r)   r   zRejecter.start_element_handler  s    kAor+   c                     | j         dk    r@| j        j        }| j                            |           | j        |_        | j        |_        d S | j         dz
  | _         d S Nr   r3   )rA  r@  rs   r   rB  r   rC  r   )r'   rJ  r   s      r)   r   zRejecter.end_element_handler   sZ    ;!]*FM!!&))))-F&'+}F$$$+/DKKKr+   N)rP   rQ   rR   rS   r*   r   r   rT   r+   r)   r  r    sF        I
( 
( 
(& & &* * * * *r+   r  c                       e Zd ZdZd Zd ZdS )r  rT   c                 p    | j         j        } | j        |  | j         j        |ur| j        dz   | _        d S d S r   )r@  r   rB  rA  )r'   rJ  r   s      r)   r   zSkipper.start_element_handler-  sD    }$= ,,+/DKKK -,r+   c                     | j         dk    r5| j        | j        j        _        | j        | j        j        _        d | _        d S | j         dz
  | _          | j        |  d S rL  )rA  rB  r@  rs   r   rC  r   rI  s     r)   r   zSkipper.end_element_handler3  s\    ;! 9=DM!56:mDM!3 DMMM+/DKDM4    r+   N)rP   rQ   rR   rS   r   r   rT   r+   r)   r  r  *  s7        I* * *	! 	! 	! 	! 	!r+   r  z8http://xml.python.org/entities/fragment-builder/internalz<!DOCTYPE wrapper
  %%s [
  <!ENTITY fragment-builder-internal
    SYSTEM "%s">
%%s
]>
<wrapper %%s
>&fragment-builder-internal;</wrapper>c                   <    e Zd Z	 d	dZd Zd Zd Zd Zd Zd Z	dS )
FragmentBuilderNc                     |j         t          k    r|| _        || _        n|j        | _        || _        t
                              | |           d S r&   )r   r6  originalDocumentr   r   rk   r*   )r'   r   ru   s      r)   r*   zFragmentBuilder.__init__[  sO    },,$+D!"DLL$+$9D!"DLdG,,,,,r+   c                 H    t                               |            d | _        d S r&   )rk   rt   fragmentr-   s    r)   rt   zFragmentBuilder.resetd  s!    4   r+   c                 R    	 |                      |                                          S r&   )r   r   r'   r   s     r)   r   zFragmentBuilder.parseFileh  s#    			,,,r+   c                    	 || _         |                                 }| j        j        }d}|rH|j        p|                                 }|j        rd|j        d|j        d}n|j        r
d|j        z  }nd}|                                 }t          |||fz  }	 |
                    |d           n#  |                                   xY w| j        }|                                  |S )N zPUBLIC "z" ""zSYSTEM "%s"T)_sourcer   rS  r   r   _getDeclarationsr   r   _getNSattrs_FRAGMENT_BUILDER_TEMPLATEr   rt   rU  )	r'   r   r   r   identr   nsattrsr   rU  s	            r)   r   zFragmentBuilder.parseStringm  s   	!!'/ 	+Ft/D/D/F/FF 9 9#,,,g.>.>.>@! 9%(88F""$$-0HH	LL4((((	JJLLL=

s   B0 0Cc                 d   	 | j         j        j        }d}|rt          |j        j                  D ]Y}|j                            |          }|r|dz   }|d|j        }|j        r|d|j        d|j	        d}L|d|j	        d}Zt          |j
        j                  D ]}|j
                            |          }|r|dz   }|d|j        }|j        r|d|j        d|j	        d	}n'|j	        r|d|j	        d	}n|d
|j        j        d	}|j        r|d|j        }|dz   }|S )NrY  z
  z<!NOTATION z	 PUBLIC "z"
             "z">z	 SYSTEM "z	<!ENTITY rZ  z "z
 NOTATION >)r   r   r   r   r   lengthitemnodeNamer   r   r   
firstChildr   r   )r'   r   rX   r   notationr   s         r)   r\  z FragmentBuilder._getDeclarations  s   	
 ,,4 	7,344 	C 	C",11!44 #F
A)*H,=,=>$ C11h///1B1B1BDAA ./QQ0A0A0ABAA7+233   )..q11 #F
A'(qq&//:? @11fooov@AA_ @,-AAv?AA%&QQ(9(>(>(>?A& D,-AAv/B/BCAGr+   c                     dS )NrY  rT   r-   s    r)   r]  zFragmentBuilder._getNSattrs  s    rr+   c                    |t           k    r| j        }| j        }| j                            |          }| j        | _        | j                                        | _        | j        | _        	 |                    | j	        d           || _        || _        d | _	        n# || _        || _        d | _	        w xY wdS t                              | ||||          S )NTr   )$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDr   r   rs   ExternalEntityParserCreaterS  createDocumentFragmentrU  r   r[  rk   r   )r'   r   r   r   r   old_documentold_cur_noder   s           r)   r   z+FragmentBuilder.external_entity_ref_handler  s    ;;;  =L<L\<<WEEF 1DM M@@BBDM=DL$T\4000+ ,#  , ,#####2;;gtXx9 9 9s   +B B3r&   )
rP   rQ   rR   r*   rt   r   r   r\  r]  r   rT   r+   r)   rQ  rQ  R  s        - - - -  - - -
  8" " "H  9 9 9 9 9r+   rQ  c                   .    e Zd Z	 d Zd Zd Zd Zd ZdS )	
Namespacesc                     g | _         d S r&   )_ns_ordered_prefixesr-   s    r)   _initNamespaceszNamespaces._initNamespaces  s     %'!!!r+   c                 @    	 t          j        d          }d|_        |S )Nr[   )namespace_separatorT)r	   rw   namespace_prefixesr   s     r)   rx   zNamespaces.createParser  s%    5#<<<$(!r+   c                 r    	 t                               | |           | j        j        r| j        |_        d S d S r&   )rk   r   rn   namespace_declarationsstart_namespace_decl_handlerStartNamespaceDeclHandlerr   s     r)   r   zNamespaces.install  sF    <T6***=/ 	31 ,,,	3 	3r+   c                 @    	 | j                             ||f           d S r&   )rr  r   )r'   rg   re   s      r)   ry  z'Namespaces.start_namespace_decl_handler  s&    =!((&#77777r+   c                    d|v rt          | |          \  }}}}nt          }|}d }t          }t          j        ||||          }| j        |_        t          | j        |           || _        | j	        r| j	        D ]y\  }}|r.t          j
        t          | d|z             t          |d          }n!t          j
        dt          dt                    }||_        | j        |_        t          ||           z| j	        d d = |r|                                 |j        }	|j        }
t%          dt'          |          d          D ]}||         }||dz            }d|v r9t          | |          \  }}}}t          j
        ||||          }||	|<   ||
||f<   n2t          j
        |t          |t                    }||	|<   ||
t          |f<   | j        |_        ||_        ||_        d S d S )Nr[   xmlns:xmlnsr   r^   r3   )ri   r   r   r   Elementr   r   r
   r   rr  r   rY   r   r   r   _ensure_attributes_attrs_attrsNSr   r`   ownerElement)r'   rb   r   re   rf   rg   rh   r   r   r  r  r   r8   r   s                 r)   r   z Namespaces.start_element_handler  s$   $;;,:4,F,F)CFEE!CEI!Fuc69==!]dlD)))$ 	-#8 	- 	- <WT8f3D%E%E%4fgG GAA  Wo%,l< <A"&-#D!,,,,)!!!, 	&##%%%[F}H1c*ooq11 & &"1"1Q3%<<4B44O4O1CFEUCFCCA$%F5M12Hc9-..UO%*L: :A$%F5M9:Hou56"&-!%'	& 	&& &r+   Fc                     | j         }d|v rt          | |          \  }}}}|j        | _         |                     |           d S )Nr[   )r   ri   r  r   )r'   rb   r   re   rf   rg   rh   s          r)   r   zNamespaces.end_element_handler  sP    lGd{{0>tT0J0J-Y #-DL$$W-----r+   N)	rP   rQ   rR   rs  rx   r   ry  r   r   rT   r+   r)   rp  rp    sc        A' ' '
  3 3 38 8 8-& -& -&^. .r+   rp  c                       e Zd Z	 d ZdS )ExpatBuilderNSc                 b    t                               |            |                                  d S r&   )rk   rt   rs  r-   s    r)   rt   zExpatBuilderNS.reset)  s.    4   r+   N)rP   rQ   rR   rt   rT   r+   r)   r  r  &  s&        4    r+   r  c                       e Zd Z	 d Zd ZdS )FragmentBuilderNSc                 b    t                               |            |                                  d S r&   )rQ  rt   rs  r-   s    r)   rt   zFragmentBuilderNS.reset1  s.    d###r+   c                    	 d}| j         }g }|rst          |d          rZ|j                                        D ]@\  }}||v r
|                    |           |rd|z   }nd}|r|d|d|d}7d|d|d}A|j        }|s|S )	NrY  _ns_prefix_urir}  r~  z
    z=''r[   )r   hasattrr  itemsr   r  )r'   attrsr   r  rg   re   declnames          r)   r]  zFragmentBuilderNS._getNSattrs5  s    	 , 	)w 011 =#*#9#?#?#A#A = =KFC{{ HHV$$$ +#+f#4#* =5:UUHHHccc J= /7hh <(G  	)  r+   N)rP   rQ   rR   rt   r]  rT   r+   r)   r  r  .  s5        4      r+   r  c                       e Zd Z	 dS )r   N)rP   rQ   rR   rT   r+   r)   r   r   S  s        ODr+   r   c                   >    e Zd Z	 dZd Zd Zd Zd Zd Zd Z	d Z
dS )	r   Nc                     	 | j         S r&   )r   r-   s    r)   r   z!InternalSubsetExtractor.getSubset\  s    5{r+   c                 `    	 t                               | |           d S # t          $ r Y d S w xY wr&   )rk   r   r   rW  s     r)   r   z!InternalSubsetExtractor.parseFile`  sE    	""4..... 	 	 	DD	    
--c                 `    	 t                               | |           d S # t          $ r Y d S w xY wr&   )rk   r   r   )r'   r   s     r)   r   z#InternalSubsetExtractor.parseStringf  sE    	$$T622222 	 	 	DD	r  c                 6    | j         |_        | j        |_        d S r&   )r   r   r   r   r   s     r)   r   zInternalSubsetExtractor.installl  s    )-)H&%)%?"""r+   c                     |r:|                                  }g | _        | j        j        |_        | j        |_        d S t                      r&   )r   r   r   DefaultHandlerr   r   r   )r'   rb   r   r   r   r   s         r)   r   z2InternalSubsetExtractor.start_doctype_decl_handlerp  sH     	 ^^%%FDK$(K$6F!+/+HF(((--r+   c                     d                     | j                                      dd                              dd          }|| _        t                      )NrY  z

)joinr   replacer   )r'   rX   s     r)   r   z0InternalSubsetExtractor.end_doctype_decl_handlerz  sF    GGDK  ((66>>tTJJmmr+   c                     t                      r&   )r   )r'   rb   r  s      r)   r   z-InternalSubsetExtractor.start_element_handler  s    mmr+   )rP   rQ   rR   r   r   r   r   r   r   r   r   rT   r+   r)   r   r   W  s        LF      @ @ @       
    r+   r   Tc                    	 |rt                      }nt                      }t          | t                    r>t	          | d          5 }|                    |          }d d d            n# 1 swxY w Y   n|                    |           }|S Nrb)r  rk   
isinstancestropenr   )r   
namespacesrW   fpresults        r)   parser    s      ! ""..$ )$ 	+&&r**F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ ""4((Ms   A((A,/A,c                 l    	 |rt                      }nt                      }|                    |           S r&   )r  rk   r   )r   r  rW   s      r)   r   r     s;      ! ""..v&&&r+   c                    	 |rt          |          }nt          |          }t          | t                    r>t	          | d          5 }|                    |          }d d d            n# 1 swxY w Y   n|                    |           }|S r  )r  rQ  r  r  r  r   )r   r   r  rW   r  r  s         r)   parseFragmentr    s      +#G,,!'**$ )$ 	+&&r**F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ ""4((Ms   A**A.1A.c                 p    	 |rt          |          }nt          |          }|                    |           S r&   )r  rQ  r   )r   r   r  rW   s       r)   parseFragmentStringr    sA      +#G,,!'**v&&&r+   c                 N    	 | j         rt          |           S t          |           S r&   )r  r  rk   )ru   s    r)   makeBuilderr    s,    6 %g&&&G$$$r+   )T)2xml.domr   r   r   r   r   r   xml.parsersr	   xml.dom.minidomr
   r   xml.dom.NodeFilterr   r   r   r6  DOMBuilderFilterr   r   r  r   getDOMImplementationr   TypeInfor6   objectr    rY   ri   rk   r!  rp   r?  r  r  rj  r^  rQ  rp  r  r  	Exceptionr   r   r  r   r  r  r  rT   r+   r)   <module>r     sU  : . - - - - - - - - - B B B B B B B B B B       > > > > > > > > ) ) ) ) ) )N	, "+9+9)5.? 3w355  ! w//  }55  x00  z22  t,,  w//  x00  y11  z22
 
1( 1( 1( 1( 1(& 1( 1( 1(f, , ,6 6 6&|1 |1 |1 |1 |1 |1 |1 |1B
 )-E 7
 7
 7
 7
 7
 7
 7
 7
t
< 
< 
< 
< 
<6 
< 
< 
<* * * * *| * * *8! ! ! ! !l ! ! !2 ? %* +	+ r9 r9 r9 r9 r9l r9 r9 r9j\. \. \. \. \. \. \. \.~    Z   " " " " "
O " " "J	 	 	 	 	) 	 	 	) ) ) ) )l ) ) )X   $' ' ' '   (	' 	' 	' 	'% % % % %r+   