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

  \/                 @   s   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 ddlmZ dd Z	i fddZ
i fd	d
Zi fddZdd ZG dd dejZG dd dejZdddZdS )    N   )handler)	xmlreaderc             C   s&   x |j  D ]\}}| j||} q
W | S )N)itemsreplace)sdkeyvalue r   (/usr/lib64/python3.6/xml/sax/saxutils.py__dict_replace   s    r   c             C   s6   | j dd} | j dd} | j dd} |r2t| |} | S )N&z&amp;>z&gt;<z&lt;)r   r   )dataentitiesr   r   r   escape   s    	
r   c             C   s2   | j dd} | j dd} |r&t| |} | j ddS )Nz&lt;r   z&gt;r   z&amp;r   )r   r   )r   r   r   r   r   unescape"   s
    
r   c             C   s\   |j  }|jdddd t| |} d| krPd| krFd| jdd } qXd	|  } nd|  } | S )
Nz&#10;z&#13;z&#9;)
	"'z"%s"z&quot;z'%s')copyupdater   r   )r   r   r   r   r   	quoteattr0   s    

r   c                s    d krdd l }|jS t tjr& S t tjtjfr< S t tjrlG  fddd}| }dd |_	nDtj
 }dd |_ j|_y j|_ j|_W n tk
r   Y nX tj||ddd	d
S )Nr   c                   s   e Zd Z jZ fddZdS )z _gettextwriter.<locals>._wrapperc                s
   t  |S )N)getattr)selfname)outr   r   __getattr__[   s    z,_gettextwriter.<locals>._wrapper.__getattr__N)__name__
__module____qualname__	__class__r!   r   )r    r   r   _wrapperY   s   r&   c               S   s   d S )Nr   r   r   r   r   <lambda>^   s    z _gettextwriter.<locals>.<lambda>c               S   s   dS )NTr   r   r   r   r   r'   c   s    xmlcharrefreplacer   T)encodingerrorsnewlinewrite_through)sysstdout
isinstanceio
TextIOBasecodecsStreamWriterStreamReaderWriter	RawIOBasecloseBufferedIOBasewritablewriteseekabletellAttributeErrorTextIOWrapper)r    r)   r-   r&   bufferr   )r    r   _gettextwriterH   s.    
r?   c               @   s   e Zd Zd ddZd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d Zdd Zdd ZdS )"XMLGeneratorN
iso-8859-1Fc             C   sV   t jj|  t||}|j| _|j| _i g| _| jd | _	g | _
|| _|| _d| _d S )Nr   F)r   ContentHandler__init__r?   r9   _writeflush_flush_ns_contexts_current_context_undeclared_ns_maps	_encoding_short_empty_elements_pending_start_element)r   r    r)   Zshort_empty_elementsr   r   r   rD   s   s    
zXMLGenerator.__init__c             C   sJ   |d rBd|d kr d|d  S | j |d  }|rB|d |d  S |d S )Nr   z$http://www.w3.org/XML/1998/namespacezxml:r   :)rI   )r   r   prefixr   r   r   _qname   s    zXMLGenerator._qnamec             C   s   | j r| jd d| _ d S )Nr   F)rM   rE   )r   
endElementr   r   r   _finish_pending_start_element   s    
z*XMLGenerator._finish_pending_start_elementc             C   s   | j d| j  d S )Nz$<?xml version="1.0" encoding="%s"?>
)rE   rK   )r   r   r   r   startDocument   s    zXMLGenerator.startDocumentc             C   s   | j   d S )N)rG   )r   r   r   r   endDocument   s    zXMLGenerator.endDocumentc             C   s0   | j j| jj  || j|< | jj||f d S )N)rH   appendrI   r   rJ   )r   rO   urir   r   r   startPrefixMapping   s    
zXMLGenerator.startPrefixMappingc             C   s   | j d | _| j d= d S )Nr   rB   rB   )rH   rI   )r   rO   r   r   r   endPrefixMapping   s    zXMLGenerator.endPrefixMappingc             C   s^   | j   | jd|  x*|j D ]\}}| jd|t|f  q W | jrPd| _n
| jd d S )Nr   z %s=%sTr   )rR   rE   r   r   rL   rM   )r   r   attrsr
   r   r   r   startElement   s    zXMLGenerator.startElementc             C   s*   | j r| jd d| _ n| jd|  d S )Nz/>Fz</%s>)rM   rE   )r   r   r   r   r   rQ      s    
zXMLGenerator.endElementc             C   s   | j   | jd| j|  x8| jD ].\}}|rD| jd||f  q$| jd|  q$W g | _x0|j D ]$\}}| jd| j|t|f  qfW | jrd| _n
| jd d S )Nr   z xmlns:%s="%s"z xmlns="%s"z %s=%sTr   )rR   rE   rP   rJ   r   r   rL   rM   )r   r   qnamerY   rO   rV   r
   r   r   r   startElementNS   s     zXMLGenerator.startElementNSc             C   s0   | j r| jd d| _ n| jd| j|  d S )Nz/>Fz</%s>)rM   rE   rP   )r   r   r[   r   r   r   endElementNS   s    
zXMLGenerator.endElementNSc             C   s4   |r0| j   t|ts"t|| j}| jt| d S )N)rR   r/   strrK   rE   r   )r   contentr   r   r   
characters   s
    
zXMLGenerator.charactersc             C   s0   |r,| j   t|ts"t|| j}| j| d S )N)rR   r/   r^   rK   rE   )r   r_   r   r   r   ignorableWhitespace   s
    
z XMLGenerator.ignorableWhitespacec             C   s   | j   | jd||f  d S )Nz	<?%s %s?>)rR   rE   )r   targetr   r   r   r   processingInstruction   s    z"XMLGenerator.processingInstruction)NrA   F)F)r"   r#   r$   rD   rP   rR   rS   rT   rW   rX   rZ   rQ   r\   r]   r`   ra   rc   r   r   r   r   r@   q   s   


r@   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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d,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 ZdS );XMLFilterBaseNc             C   s   t jj|  || _d S )N)r   	XMLReaderrD   _parent)r   parentr   r   r   rD      s    zXMLFilterBase.__init__c             C   s   | j j| d S )N)_err_handlererror)r   	exceptionr   r   r   ri      s    zXMLFilterBase.errorc             C   s   | j j| d S )N)rh   
fatalError)r   rj   r   r   r   rk      s    zXMLFilterBase.fatalErrorc             C   s   | j j| d S )N)rh   warning)r   rj   r   r   r   rl      s    zXMLFilterBase.warningc             C   s   | j j| d S )N)_cont_handlersetDocumentLocator)r   Zlocatorr   r   r   rn      s    z XMLFilterBase.setDocumentLocatorc             C   s   | j j  d S )N)rm   rS   )r   r   r   r   rS      s    zXMLFilterBase.startDocumentc             C   s   | j j  d S )N)rm   rT   )r   r   r   r   rT     s    zXMLFilterBase.endDocumentc             C   s   | j j|| d S )N)rm   rW   )r   rO   rV   r   r   r   rW     s    z XMLFilterBase.startPrefixMappingc             C   s   | j j| d S )N)rm   rX   )r   rO   r   r   r   rX   	  s    zXMLFilterBase.endPrefixMappingc             C   s   | j j|| d S )N)rm   rZ   )r   r   rY   r   r   r   rZ     s    zXMLFilterBase.startElementc             C   s   | j j| d S )N)rm   rQ   )r   r   r   r   r   rQ     s    zXMLFilterBase.endElementc             C   s   | j j||| d S )N)rm   r\   )r   r   r[   rY   r   r   r   r\     s    zXMLFilterBase.startElementNSc             C   s   | j j|| d S )N)rm   r]   )r   r   r[   r   r   r   r]     s    zXMLFilterBase.endElementNSc             C   s   | j j| d S )N)rm   r`   )r   r_   r   r   r   r`     s    zXMLFilterBase.charactersc             C   s   | j j| d S )N)rm   ra   )r   charsr   r   r   ra     s    z!XMLFilterBase.ignorableWhitespacec             C   s   | j j|| d S )N)rm   rc   )r   rb   r   r   r   r   rc     s    z#XMLFilterBase.processingInstructionc             C   s   | j j| d S )N)rm   skippedEntity)r   r   r   r   r   rp   !  s    zXMLFilterBase.skippedEntityc             C   s   | j j||| d S )N)_dtd_handlernotationDecl)r   r   publicIdsystemIdr   r   r   rr   &  s    zXMLFilterBase.notationDeclc             C   s   | j j|||| d S )N)rq   unparsedEntityDecl)r   r   rs   rt   Zndatar   r   r   ru   )  s    z XMLFilterBase.unparsedEntityDeclc             C   s   | j j||S )N)Z_ent_handlerresolveEntity)r   rs   rt   r   r   r   rv   .  s    zXMLFilterBase.resolveEntityc             C   s@   | j j|  | j j|  | j j|  | j j|  | j j| d S )N)rf   ZsetContentHandlerZsetErrorHandlerZsetEntityResolverZsetDTDHandlerparse)r   sourcer   r   r   rw   3  s
    zXMLFilterBase.parsec             C   s   | j j| d S )N)rf   	setLocale)r   Zlocaler   r   r   ry   :  s    zXMLFilterBase.setLocalec             C   s   | j j|S )N)rf   
getFeature)r   r   r   r   r   rz   =  s    zXMLFilterBase.getFeaturec             C   s   | j j|| d S )N)rf   
setFeature)r   r   stater   r   r   r{   @  s    zXMLFilterBase.setFeaturec             C   s   | j j|S )N)rf   getProperty)r   r   r   r   r   r}   C  s    zXMLFilterBase.getPropertyc             C   s   | j j|| d S )N)rf   setProperty)r   r   r
   r   r   r   r~   F  s    zXMLFilterBase.setPropertyc             C   s   | j S )N)rf   )r   r   r   r   	getParentK  s    zXMLFilterBase.getParentc             C   s
   || _ d S )N)rf   )r   rg   r   r   r   	setParentN  s    zXMLFilterBase.setParent)N)r"   r#   r$   rD   ri   rk   rl   rn   rS   rT   rW   rX   rZ   rQ   r\   r]   r`   ra   rc   rp   rr   ru   rv   rw   ry   rz   r{   r}   r~   r   r   r   r   r   r   rd      s8   
rd    c             C   s  t | trtj| } n^t| drt| }tj } t |jdtrH| j| n
| j| t|drtt |jtrt| j	|j | j
 d ko| j d kr| j }tjjtjj|}tjj||}tjj|r| j	| t|d}n$| j	tjj|| tjj| j }| j| | S )Nreadr   r   rb)r/   r^   r   ZInputSourcehasattrr   ZsetCharacterStreamZsetByteStreamr   ZsetSystemIdZgetCharacterStreamZgetByteStreamZgetSystemIdospathdirnamenormpathjoinisfileopenurllibrw   ZurljoinZrequestZurlopen)rx   basefZsysidZbaseheadZsysidfilenamer   r   r   prepare_input_sourceS  s*    




r   )r   )r   Zurllib.parser   Zurllib.requestr0   r2   r   r   r   r   r   r   r   r?   rC   r@   re   rd   r   r   r   r   r   <module>   s   )so