???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \                 @   sD  d ddddddddd	d
ddddddddddddgZ dZddlZddlZddlZddlZddlZddlZddlm	Z	 G dd	 d	e
Zdd ZG dd dZi fddZd]d d Zd^d!dZeZG d"d dZG d#d dZejd$d% Zd_d&d'Zd(d) Zd`ZyeeZW n ek
r   Y nX d7d8 Zd9d: Zeeed;Zd<d Zd=d>d?d@dAdBdCdDZee_dEdF Z dGdH Z!dIdJ Z"dKdL Z#dadMdNdOdZ$G dPdQ dQej%Z&dbdMdNdRdZ'dSd Z(dcdTdZ)dddUdZ*G dVd dZ+dedWdZ,dfdXdZ-e,Z.dgdYdZ/G dZd dZ0G d[d dZ1yeZ2dd\l3T W n e4k
r>   Y nX dS )hCommentdumpElementElementTree
fromstringfromstringlist	iselement	iterparseparse
ParseErrorPIProcessingInstructionQName
SubElementtostringtostringlistTreeBuilderVERSIONXMLXMLID	XMLParserXMLPullParserregister_namespacez1.3.0    N   )ElementPathc               @   s   e Zd ZdS )r
   N)__name__
__module____qualname__ r   r   -/usr/lib64/python3.6/xml/etree/ElementTree.pyr
   h   s   	c             C   s
   t | dS )Ntag)hasattr)elementr   r   r   r   v   s    c               @   s  e Zd ZdZdZdZdZi fddZdd Zdd Z	dd	 Z
d
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd8d d!Zd9d"d#Zd:d$d%Zd;d&d'Zd(d) Zd<d*d+Zd,d- Zd.d/ Zd0d1 Zd=d2d3Zd>d4d5Z d6d7 Z!dS )?r   Nc             K   sD   t |tstd|jjf |j }|j| || _|| _g | _	d S )Nzattrib must be dict, not %s)

isinstancedict	TypeError	__class__r   copyupdater    attrib	_children)selfr    r)   extrar   r   r   __init__   s    

zElement.__init__c             C   s   d| j j| jt| f S )Nz<%s %r at %#x>)r&   r   r    id)r+   r   r   r   __repr__   s    zElement.__repr__c             C   s   | j ||S )N)r&   )r+   r    r)   r   r   r   makeelement   s    	zElement.makeelementc             C   s0   | j | j| j}| j|_| j|_| |d d < |S )N)r0   r    r)   texttail)r+   elemr   r   r   r'      s
    zElement.copyc             C   s
   t | jS )N)lenr*   )r+   r   r   r   __len__   s    zElement.__len__c             C   s   t jdtdd t| jdkS )NzyThe behavior of this method will change in future versions.  Use specific 'len(elem)' or 'elem is not None' test instead.   )
stacklevelr   )warningswarnFutureWarningr4   r*   )r+   r   r   r   __bool__   s    
zElement.__bool__c             C   s
   | j | S )N)r*   )r+   indexr   r   r   __getitem__   s    zElement.__getitem__c             C   s   || j |< d S )N)r*   )r+   r<   r"   r   r   r   __setitem__   s    zElement.__setitem__c             C   s   | j |= d S )N)r*   )r+   r<   r   r   r   __delitem__   s    zElement.__delitem__c             C   s   | j | | jj| d S )N)_assert_is_elementr*   append)r+   
subelementr   r   r   rA      s    
zElement.appendc             C   s(   x|D ]}| j | qW | jj| d S )N)r@   r*   extend)r+   elementsr"   r   r   r   rC      s    
zElement.extendc             C   s   | j | | jj|| d S )N)r@   r*   insert)r+   r<   rB   r   r   r   rE      s    
zElement.insertc             C   s    t |tstdt|j d S )Nzexpected an Element, not %s)r#   _Element_Pyr%   typer   )r+   er   r   r   r@      s    
zElement._assert_is_elementc             C   s   | j j| d S )N)r*   remove)r+   rB   r   r   r   rI     s    zElement.removec             C   s   t jdtdd | jS )NzaThis method will be removed in future versions.  Use 'list(elem)' or iteration over elem instead.r6   )r7   )r8   r9   DeprecationWarningr*   )r+   r   r   r   getchildren  s    
zElement.getchildrenc             C   s   t j| ||S )N)r   find)r+   path
namespacesr   r   r   rL   !  s    	zElement.findc             C   s   t j| |||S )N)r   findtext)r+   rM   defaultrN   r   r   r   rO   ,  s    zElement.findtextc             C   s   t j| ||S )N)r   findall)r+   rM   rN   r   r   r   rQ   :  s    	zElement.findallc             C   s   t j| ||S )N)r   iterfind)r+   rM   rN   r   r   r   rR   E  s    	zElement.iterfindc             C   s    | j j  g | _d  | _| _d S )N)r)   clearr*   r1   r2   )r+   r   r   r   rS   P  s    
zElement.clearc             C   s   | j j||S )N)r)   get)r+   keyrP   r   r   r   rT   [  s    zElement.getc             C   s   || j |< d S )N)r)   )r+   rU   valuer   r   r   seth  s    zElement.setc             C   s
   | j j S )N)r)   keys)r+   r   r   r   rX   r  s    zElement.keysc             C   s
   | j j S )N)r)   items)r+   r   r   r   rY   {  s    	zElement.itemsc             c   sH   |dkrd }|d ks| j |kr$| V  x| jD ]}|j|E d H  q,W d S )N*)r    r*   iter)r+   r    rH   r   r   r   r[     s    zElement.iterc             C   s   t jdtdd t| j|S )NzbThis method will be removed in future versions.  Use 'elem.iter()' or 'list(elem.iter())' instead.r6   )r7   )r8   r9   PendingDeprecationWarninglistr[   )r+   r    r   r   r   getiterator  s    
zElement.getiteratorc             c   s^   | j }t|t r|d k	rd S | j}|r.|V  x*| D ]"}|j E d H  |j}|r4|V  q4W d S )N)r    r#   strr1   itertextr2   )r+   r    trH   r   r   r   r`     s    
zElement.itertext)N)NN)N)N)N)N)N)"r   r   r   r    r)   r1   r2   r-   r/   r0   r'   r5   r;   r=   r>   r?   rA   rC   rE   r@   rI   rK   rL   rO   rQ   rR   rS   rT   rW   rX   rY   r[   r^   r`   r   r   r   r   r   {   s>   	







	

	c             K   s,   |j  }|j| | j||}| j| |S )N)r'   r(   r0   rA   )parentr    r)   r,   r"   r   r   r   r     s
    

c             C   s   t t}| |_|S )N)r   r   r1   )r1   r"   r   r   r   r     s    	c             C   s&   t t}| |_|r"|jd | |_|S )N )r   r   r1   )targetr1   r"   r   r   r   r     s
    
c               @   sV   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd ZdS )r   Nc             C   s   |rd||f }|| _ d S )Nz{%s}%s)r1   )r+   Ztext_or_urir    r   r   r   r-     s    zQName.__init__c             C   s   | j S )N)r1   )r+   r   r   r   __str__   s    zQName.__str__c             C   s   d| j j| jf S )Nz<%s %r>)r&   r   r1   )r+   r   r   r   r/     s    zQName.__repr__c             C   s
   t | jS )N)hashr1   )r+   r   r   r   __hash__  s    zQName.__hash__c             C   s    t |tr| j|jkS | j|kS )N)r#   r   r1   )r+   otherr   r   r   __le__  s    
zQName.__le__c             C   s    t |tr| j|jk S | j|k S )N)r#   r   r1   )r+   rh   r   r   r   __lt__
  s    
zQName.__lt__c             C   s    t |tr| j|jkS | j|kS )N)r#   r   r1   )r+   rh   r   r   r   __ge__  s    
zQName.__ge__c             C   s    t |tr| j|jkS | j|kS )N)r#   r   r1   )r+   rh   r   r   r   __gt__  s    
zQName.__gt__c             C   s    t |tr| j|jkS | j|kS )N)r#   r   r1   )r+   rh   r   r   r   __eq__  s    
zQName.__eq__)N)r   r   r   r-   re   r/   rg   ri   rj   rk   rl   rm   r   r   r   r   r     s   
c               @   s   e Zd ZdddZdd Zdd Zddd	Zdd
dZdddZd ddZ	d!ddZ
d"ddZd#ddZd$ddddZdd ZdS )%r   Nc             C   s   || _ |r| j| d S )N)_rootr	   )r+   r"   filer   r   r   r-   )  s    zElementTree.__init__c             C   s   | j S )N)rn   )r+   r   r   r   getroot/  s    zElementTree.getrootc             C   s
   || _ d S )N)rn   )r+   r"   r   r   r   _setroot3  s    zElementTree._setrootc          
   C   s   d}t |dst|d}d}zZ|d krHt }t |drH|j|| _| jS x|jd}|sZP |j| qJW |j | _| jS |r|j  X d S )NFreadrbT_parse_wholei   )r!   openr   rt   rn   rr   feedclose)r+   sourceparserclose_sourcedatar   r   r   r	   =  s&    




zElementTree.parsec             C   s   | j j|S )N)rn   r[   )r+   r    r   r   r   r[   b  s    
zElementTree.iterc             C   s   t jdtdd t| j|S )NzbThis method will be removed in future versions.  Use 'tree.iter()' or 'list(tree.iter())' instead.r6   )r7   )r8   r9   r\   r]   r[   )r+   r    r   r   r   r^   o  s    
zElementTree.getiteratorc             C   s:   |d d dkr,d| }t jd| tdd | jj||S )Nr   /.zThis search is broken in 1.3 and earlier, and will be fixed in a future version.  If you rely on the current behaviour, change it to %rr6   )r7   )r8   r9   r:   rn   rL   )r+   rM   rN   r   r   r   rL   x  s    
zElementTree.findc             C   s<   |d d dkr,d| }t jd| tdd | jj|||S )Nr   r|   r}   zThis search is broken in 1.3 and earlier, and will be fixed in a future version.  If you rely on the current behaviour, change it to %rr6   )r7   )r8   r9   r:   rn   rO   )r+   rM   rP   rN   r   r   r   rO     s    
zElementTree.findtextc             C   s:   |d d dkr,d| }t jd| tdd | jj||S )Nr   r|   r}   zThis search is broken in 1.3 and earlier, and will be fixed in a future version.  If you rely on the current behaviour, change it to %rr6   )r7   )r8   r9   r:   rn   rQ   )r+   rM   rN   r   r   r   rQ     s    
zElementTree.findallc             C   s:   |d d dkr,d| }t jd| tdd | jj||S )Nr   r|   r}   zThis search is broken in 1.3 and earlier, and will be fixed in a future version.  If you rely on the current behaviour, change it to %rr6   )r7   )r8   r9   r:   rn   rR   )r+   rM   rN   r   r   r   rR     s    
zElementTree.iterfindT)short_empty_elementsc            C   s   |s
d}n|t krtd| |s4|dkr0d}nd}|j }t||}|dkr|sd|d kr|dkr|}	|dkrdd l}
|
j }	|d|	f  |d	krt|| j n,t| j|\}}t | }||| j|||d
 W d Q R X d S )Nxmlzunknown method %rc14nutf-8us-asciiunicoder   z$<?xml version='1.0' encoding='%s'?>
r1   )r~   )r   r   r   )	
_serialize
ValueErrorlower_get_writerlocalegetpreferredencoding_serialize_textrn   _namespaces)r+   file_or_filenameencodingZxml_declarationdefault_namespacemethodr~   Z	enc_lowerwriteZdeclared_encodingr   qnamesrN   Z	serializer   r   r   r     s2    
zElementTree.writec             C   s   | j |ddS )Nr   )r   )r   )r+   ro   r   r   r   
write_c14n
  s    zElementTree.write_c14n)NN)N)N)N)N)NN)N)N)NNNN)r   r   r   r-   rp   rq   r	   r[   r^   rL   rO   rQ   rR   r   r   r   r   r   r   r     s    


%

	



   5c             c   s"  y
| j }W nP tk
rZ   |dkr.t| d}nt| d|dd}| |j V  W d Q R X Y nX |dkrl|V  ntj }t| tjr| }nft| tjrtj	| }|j
|j nBtj }dd |_||_ y| j|_| j|_W n tk
r   Y nX tj||ddd}|j
|j |j V  W d Q R X d S )	Nr   wxmlcharrefreplace)r   errorsc               S   s   dS )NTr   r   r   r   r   <lambda>3  s    z_get_writer.<locals>.<lambda>
)r   r   newline)r   AttributeErrorru   
contextlib	ExitStackr#   ioBufferedIOBase	RawIOBaseBufferedWritercallbackdetachwritableseekabletellTextIOWrapper)r   r   r   ro   stackr   r   r   r     s>    



r   c                s  d d ii  rd <  fdd}x| j  D ]} | j}t|tr\|jkr||j n<t|trx|kr|| n |d k	r|tk	r|tk	rt| xR| j	 D ]F\}}t|tr|j}|kr|| t|tr|jkr||j qW | j}t|tr2|jkr2||j q2W fS )N c                s   y| d d dkr| dd  j dd\}}j|}|d krjtj|}|d krZdt }|dkrj||< |rd||f | < q|| < n rtd| | < W n tk
r   t|  Y nX d S )Nr   {}zns%dr   z%s:%sz<cannot use non-qualified names with default_namespace option)rsplitrT   _namespace_mapr4   r   r%   _raise_serialization_error)Zqnameurir    prefix)r   rN   r   r   r   	add_qnameP  s&    


z_namespaces.<locals>.add_qname)
r[   r    r#   r   r1   r_   r   r   r   rY   )r3   r   r   r    rU   rV   r1   r   )r   rN   r   r   r   E  s4    




r   c             K   s  |j }|j}|tkr$| d|  n|tkr<| d|  nv|| }|d kr|r\| t| x|D ]}t| ||d |d qbW n2| d|  t|j }	|	s|rD|rx@t|j dd dD ](\}
}|rd| }| d	|t	|
f  qW xZt|	D ]N\}}
t
|tr|j}t
|
tr$||
j }
nt	|
}
| d
|| |
f  qW |s\t|s\| r| d |rv| t| x |D ]}t| ||d |d q|W | d| d  n| d |jr| t|j d S )Nz	<!--%s-->z<?%s?>)r~   <c             S   s   | d S )Nr   r   )xr   r   r   r     s    z _serialize_xml.<locals>.<lambda>)rU   :z xmlns%s="%s"z %s="%s">z</z />)r    r1   r   r   _escape_cdata_serialize_xmlr]   rY   sorted_escape_attribr#   r   r4   r2   )r   r3   r   rN   r~   kwargsr    r1   rH   rY   vkr   r   r   r     sT    





r   areabasebasefontbrcolframehrimginputisindexlinkmetaparamc             K   s  |j }|j}|tkr(| dt|  n|tkrD| dt|  n||| }|d kr|rd| t| x|D ]}t| ||d  qjW n<| d|  t|j }|s|rH|rx@t|j dd dD ](\}	}
|
rd|
 }
| d|
t	|	f  qW xZt|D ]N\}
}	t
|
tr|
j}
t
|	tr(||	j }	nt|	}	| d	||
 |	f  qW | d
 |j }|r|dksr|dkr|| | n| t| x|D ]}t| ||d  qW |tkr| d| d
  |jr| t|j d S )Nz	<!--%s-->z<?%s?>r   c             S   s   | d S )Nr   r   )r   r   r   r   r     s    z!_serialize_html.<locals>.<lambda>)rU   r   z xmlns%s="%s"z %s="%s"r   ZscriptZstylez</)r    r1   r   r   r   _serialize_htmlr]   rY   r   r   r#   r   _escape_attrib_htmlr   
HTML_EMPTYr2   )r   r3   r   rN   r   r    r1   rH   rY   r   r   Zltagr   r   r   r     sT    





r   c             C   s.   x|j  D ]}| | q
W |jr*| |j d S )N)r`   r2   )r   r3   partr   r   r   r     s    r   )r   htmlr1   c             C   sP   t jd| rtdx.ttj D ]\}}||ks:|| kr"t|= q"W | t|< d S )Nzns\d+$z'Prefix format reserved for internal use)rematchr   r]   r   rY   )r   r   r   r   r   r   r   r     s    
r   r   ZrdfZwsdlZxsZxsiZdc)z$http://www.w3.org/XML/1998/namespacezhttp://www.w3.org/1999/xhtmlz+http://www.w3.org/1999/02/22-rdf-syntax-ns#z http://schemas.xmlsoap.org/wsdl/z http://www.w3.org/2001/XMLSchemaz)http://www.w3.org/2001/XMLSchema-instancez http://purl.org/dc/elements/1.1/c             C   s   t d| t| jf d S )Nzcannot serialize %r (type %s))r%   rG   r   )r1   r   r   r   r     s    r   c             C   sf   y@d| kr| j dd} d| kr*| j dd} d| kr>| j dd} | S  ttfk
r`   t|  Y nX d S )N&z&amp;r   z&lt;r   z&gt;)replacer%   r   r   )r1   r   r   r   r   $  s    r   c             C   s   yd| kr| j dd} d| kr*| j dd} d| kr>| j dd} d| krR| j dd} d	| krf| j d	d
} d| krz| j dd
} d
| kr| j d
d} d| kr| j dd} | S  ttfk
r   t|  Y nX d S )Nr   z&amp;r   z&lt;r   z&gt;"z&quot;z
r   z&#10;	z&#09;)r   r%   r   r   )r1   r   r   r   r   4  s(    r   c             C   sf   y@d| kr| j dd} d| kr*| j dd} d| kr>| j dd} | S  ttfk
r`   t|  Y nX d S )Nr   z&amp;r   z&gt;r   z&quot;)r   r%   r   r   )r1   r   r   r   r   P  s    r   T)r~   c            C   s6   |dkrt j nt j }t| j||||d |j S )Nr   )r   r~   )r   StringIOBytesIOr   r   getvalue)r"   r   r   r~   streamr   r   r   r   _  s    c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )_ListDataStreamc             C   s
   || _ d S )N)lst)r+   r   r   r   r   r-   t  s    z_ListDataStream.__init__c             C   s   dS )NTr   )r+   r   r   r   r   w  s    z_ListDataStream.writablec             C   s   dS )NTr   )r+   r   r   r   r   z  s    z_ListDataStream.seekablec             C   s   | j j| d S )N)r   rA   )r+   br   r   r   r   }  s    z_ListDataStream.writec             C   s
   t | jS )N)r4   r   )r+   r   r   r   r     s    z_ListDataStream.tellN)r   r   r   r-   r   r   r   r   r   r   r   r   r   r  s
   r   c            C   s&   g }t |}t| j||||d |S )N)r   r~   )r   r   r   )r"   r   r   r~   r   r   r   r   r   r     s
    c             C   sN   t | tst| } | jtjdd | j j}| s>|d dkrJtjjd d S )Nr   )r   r   r   )r#   r   r   sysstdoutrp   r2   )r3   r2   r   r   r   r     s    

c             C   s   t  }|j| | |S )N)r   r	   )rx   ry   treer   r   r   r	     s    	c                sd   t ||d fddG fdddtj}| d _~d tds`tdd	 S )
N)events_parserc           
   3   sb   zNx,j  E d H  jd} | s"P j|  qW j }j  E d H  |_W d  r\j  X d S )N   i   i @  )read_eventsrr   rv   _close_and_return_rootrootrw   )r{   r   )rz   it
pullparserrx   r   r   iterator  s    

ziterparse.<locals>.iteratorc                   s   e Zd Z  jZdS )z$iterparse.<locals>.IterParseIteratorN)r   r   r   __next__r   )r   r   r   IterParseIterator  s   r   Frr   rs   T)r   collectionsIteratorr   r!   ru   )rx   r   ry   r   r   )rz   r   r   r   rx   r   r     s    

c               @   s<   e Zd ZdddddZdd Zdd Zd	d
 Zdd ZdS )r   N)r   c            C   s<   t j | _|ptt d| _|d kr(d}| jj| j| d S )N)rd   end)r   )r   deque_events_queuer   r   r   
_setevents)r+   r   r   r   r   r   r-     s
    
zXMLPullParser.__init__c             C   sZ   | j d krtd|rVy| j j| W n. tk
rT } z| jj| W Y d d }~X nX d S )Nz!feed() called after end of stream)r   r   rv   SyntaxErrorr   rA   )r+   r{   excr   r   r   rv     s    
zXMLPullParser.feedc             C   s   | j j }d | _ |S )N)r   rw   )r+   r   r   r   r   r     s    
z$XMLPullParser._close_and_return_rootc             C   s   | j   d S )N)r   )r+   r   r   r   rw     s    zXMLPullParser.closec             c   s2   | j }x&|r,|j }t|tr$|q|V  qW d S )N)r   popleftr#   	Exception)r+   r   eventr   r   r   r     s    
zXMLPullParser.read_events)N)r   r   r   r-   rv   r   rw   r   r   r   r   r   r     s
   
c             C   s"   |st t d}|j|  |j S )N)rd   )r   r   rv   rw   )r1   ry   r   r   r   r     s    
c             C   sV   |st t d}|j|  |j }i }x&|j D ]}|jd}|r0|||< q0W ||fS )N)rd   r.   )r   r   rv   rw   r[   rT   )r1   ry   r   Zidsr3   r.   r   r   r   r   &  s    


c             C   s0   |st t d}x| D ]}|j| qW |j S )N)rd   )r   r   rv   rw   )Zsequencery   r1   r   r   r   r   >  s
    	
c               @   s>   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd ZdS )r   Nc             C   s.   g | _ g | _d | _d | _|d kr$t}|| _d S )N)_data_elem_last_tailr   _factory)r+   Zelement_factoryr   r   r   r-   ]  s    zTreeBuilder.__init__c             C   s   | j S )N)r   )r+   r   r   r   rw   f  s    zTreeBuilder.closec             C   s>   | j r:| jd k	r4dj| j }| jr,|| j_n|| j_g | _ d S )Nr   )r   r   joinr   r2   r1   )r+   r1   r   r   r   _flushl  s    

zTreeBuilder._flushc             C   s   | j j| d S )N)r   rA   )r+   r{   r   r   r   r{   x  s    zTreeBuilder.datac             C   sF   | j   | j|| | _}| jr0| jd j| | jj| d| _|S )Nr   r   r   )r   r   r   r   rA   r   )r+   r    Zattrsr3   r   r   r   start|  s    zTreeBuilder.startc             C   s    | j   | jj | _d| _| jS )Nr   )r   r   popr   r   )r+   r    r   r   r   r     s    zTreeBuilder.end)N)	r   r   r   r-   rw   r   r{   r   r   r   r   r   r   r   P  s   
	c               @   sb   e Zd ZdddZdd Zdd Zd	d
 Zdd Zdd Zdd Z	dd Z
e
Zdd Zdd ZdS )r   r   Nc             C   s<  yddl m} W n> tk
rN   ydd l}W n tk
rH   tdY nX Y nX |j|d}|d krjt }| | _| _| | _| _	|j
| _i | _| j|_t|dr| j|_t|dr| j|_t|dr|j|_t|dr|j|_t|d	r|j|_d
|_d
|_d
|_d | _i | _yd|j | _ W n t!k
r6   Y nX d S )Nr   )expatz7No module named expat; use SimpleXMLTreeBuilder insteadr   r   r   r{   commentpir   zExpat %d.%d.%d)"xml.parsersr   ImportErrorZpyexpatZParserCreater   ry   r   rd   _targeterror_error_names_defaultZDefaultHandlerExpandr!   _startStartElementHandler_endEndElementHandlerr{   ZCharacterDataHandlerr   ZCommentHandlerr   ZProcessingInstructionHandlerZbuffer_textordered_attributesspecified_attributes_doctypeentityversion_infoversionr   )r+   r   rd   r   r   ry   r   r   r   r-     sF    




zXMLParser.__init__c             C   s   | j }|j}x|D ]}|dkrDd|_d|_||| jfdd}||_q|dkrf||| jfdd}||_q|dkr||fdd}||_q|d	kr||fd
d}||_	qt
d| qW d S )Nr   r   c             S   s   |||| |f d S )Nr   )r    Z	attrib_inr   rA   r   r   r   r   handler  s    z%XMLParser._setevents.<locals>.handlerr   c             S   s   |||| f d S )Nr   )r    r   rA   r   r   r   r   r    s    zstart-nsc             S   s   ||| p
d|pdff d S )Nr   r   )r   r   r   rA   r   r   r   r    s    zend-nsc             S   s   ||d f d S )Nr   )r   r   rA   r   r   r   r    s    zunknown event %r)r   rA   r  r  r  r	  r
  r  ZStartNamespaceDeclHandlerZEndNamespaceDeclHandlerr   )r+   Zevents_queueZevents_to_reportry   rA   Z
event_namer  r   r   r   r     s(    
zXMLParser._seteventsc             C   s&   t |}|j|_|j|jf|_|d S )N)r
   codelinenooffsetZposition)r+   rV   errr   r   r   _raiseerror  s    zXMLParser._raiseerrorc             C   sF   y| j | }W n2 tk
r@   |}d|kr2d| }|| j |< Y nX |S )Nr   r   )r  KeyError)r+   rU   namer   r   r   _fixname  s    zXMLParser._fixnamec             C   sV   | j }||}i }|rHx0tdt|dD ]}||d  |||| < q(W | jj||S )Nr   r6   r   )r  ranger4   rd   r   )r+   r    Z	attr_listZfixnamer)   ir   r   r   r    s    zXMLParser._startc             C   s   | j j| j|S )N)rd   r   r  )r+   r    r   r   r   r
    s    zXMLParser._endc             C   s  |d d }|dkry| j j}W n tk
r4   d S X y|| j|dd   W nZ tk
r   ddlm} |jd|| jj	| jj
f }d|_| jj	|_| jj
|_|Y nX nD|dkr|d d d	krg | _n"| jd k	r|d
krd | _d S |j }|sd S | jj| t| j}|dkr| jd }|dkrb|dkrb| j\}}}	}
|	r|	dd }	n*|dkr|dkr| j\}}}
d }	nd S t| j dr| j j||	|
dd  n:| j| jkr| j||	|
dd  | j||	|
dd  d | _d S )Nr   r   r   )r   z'undefined entity %s: line %d, column %d   r   	   z	<!DOCTYPEr   r6   ZPUBLIC   ZSYSTEM   doctyper   r   r   r   r   )rd   r{   r   r  r  r  r   r  ry   ZErrorLineNumberZErrorColumnNumberr  r  r  r  striprA   r4   r!   r!  _XMLParser__doctype)r+   r1   r   Zdata_handlerr   r  nrG   r  pubidsystemr   r   r   r    sZ    





zXMLParser._defaultc             C   s   t jdt d S )Nz[This method of XMLParser is deprecated.  Define doctype() method on the TreeBuilder target.)r8   r9   rJ   )r+   r  r%  r&  r   r   r   r!  E  s    zXMLParser.doctypec             C   sF   y| j j|d W n. | jk
r@ } z| j| W Y d d }~X nX d S )Nr   )ry   Parser  r  )r+   r{   r   r   r   r   rv   U  s    zXMLParser.feedc             C   s   y| j jdd W n. | jk
r@ } z| j| W Y d d }~X nX z,y| jj}W n tk
rd   Y nX | S W d | ` | `| `| `X d S )Nr   r   )	ry   r'  r  r  rd   rw   r   r   r  )r+   r   Zclose_handlerr   r   r   rw   \  s    
zXMLParser.close)r   NN)r   r   r   r-   r   r  r  r  r
  r  r!  r#  rv   rw   r   r   r   r   r     s   
*!4)rZ   )N)N)N)r   r   r   r   r   r   r   r   r   r   r   r   r   )NN)NN)N)NN)N)N)N)5__all__r   r   r   r8   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   contextmanagerr   r   r   r   rW   	NameErrorr   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   rF   Z_elementtreer  r   r   r   r   <module>K   s     A

0 t4
=2 2

05


K U