JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr Yf-@sddlZddlZdZdZdZdZdZdZdZ d Z Gd d d ej j Z Gd d d ZGdddZGddde ZdZddddZdddZdS)N START_ELEMENT END_ELEMENTCOMMENTSTART_DOCUMENT END_DOCUMENTPROCESSING_INSTRUCTIONIGNORABLE_WHITESPACE CHARACTERSc@seZdZdZdZdddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZddZd d!Zd"d#ZdS)$PullDOMNc Csddlm}||_ddg|_|j|_g|_|jj|_y|jj|_Wnt k rsYnX|dig|_ |j d|_ g|_ dS)Nr) XML_NAMESPACExml) Zxml.domr documentFactory firstEvent lastEvent elementStackappendpushpopAttributeError _ns_contexts_current_contextpending_events)selfrr r4/opt/alt/python35/lib64/python3.5/xml/dom/pulldom.py__init__s    zPullDOM.__init__cCs|jd}|jd=|S)Nr rr)r)rresultrrrr!s  z PullDOM.popcCs ||_dS)N)_locator)rZlocatorrrrsetDocumentLocator&szPullDOM.setDocumentLocatorcCsdt|dsg|_|jj|p*d|f|jj|jj|pVd|j|rrrprocessingInstructions  zPullDOM.processingInstructioncCs?|jj|}t|fdg|jd<|jd|_dS)Nr )r+createTextNoderr)rcharsr6rrrignorableWhitespaceszPullDOM.ignorableWhitespacecCs?|jj|}t|fdg|jd<|jd|_dS)Nr )r+rDr r)rrEr6rrr charactersszPullDOM.characterscCs4|jdkr0ddl}|jjjj|_dS)Nr)rZxml.dom.minidomZdomZminidomZDocumentimplementation)rr rrr startDocuments zPullDOM.startDocumentc Cs8|jj||d}||_t|fdg|jd<|jd|_|j|x|jD]}|ddtkr|d\}}}|jj||}t|f|dparentstokenZcur_noderrr expandNodes        zDOMEventStream.expandNodecCs|jjds"|jj|j_xP|jjdst|jj|j}|sa|jjdS|jj|q%W|jjdd}|jjdd|jjd<|S)Nr r) rarrr[readr]r\closerZ)rbufrerrrr_s zDOMEventStream.getEventcCs)|jj|j|j|_|jS)z Fallback replacement for getEvent() using the standard SAX2 interface, which means we slurp the SAX events into memory (no performance gain, but we are compatible to all SAX parsers). )r\parser[_emitr_)rrrrr^s zDOMEventStream._slurpcCs6|jjdd}|jjdd|jjd<|S)zn Fallback replacement for getEvent() that emits the events that _slurp() read previously. r r)rar)rrerrrrrszDOMEventStream._emitcCs)|jj|`d|_d|_dS)z+clear(): Explicitly release parsing objectsN)rarOr\r[)rrrrrOs  zDOMEventStream.clearN) rPrQrRrr`rfrhrirmr_r^rrrOrrrrrYs         rYc@sLeZdZddZddZddZddZd d Zd S) SAX2DOMcCsAtj|||||jd}|jd}|j|dS)Nr r)r r8rrj)rr2r3r4curNode parentNoderrrr8#s  zSAX2DOM.startElementNScCs>tj||||jd}|jd}|j|dS)Nr rtrru)r r:rrj)rr2r4rvrwrrrr:)s  zSAX2DOM.startElementcCsBtj||||jdd}|jd}|j|dS)Nrr r)r rCrrrj)rrArBr6rwrrrrC/s zSAX2DOM.processingInstructioncCs?tj|||jdd}|jd}|j|dS)Nrr r)r rFrrrj)rrEr6rwrrrrF5s zSAX2DOM.ignorableWhitespacecCs?tj|||jdd}|jd}|j|dS)Nrr r)r rGrrrj)rrEr6rwrrrrG;s zSAX2DOM.charactersN)rPrQrRr8r:rCrFrGrrrrrs!s     rsrtcCs^|dkrt}t|tr3t|d}n|}|sNtjj}t|||S)Nrb)default_bufsize isinstancestropenr rb make_parserrY)Zstream_or_stringr\r]r[rrrrqDs rqcCsMddlm}t|}||}|s=tjj}t|||S)Nr)StringIO)iorlenr rbrrY)stringr\rr]rprrr parseStringOs   ri@i?)Zxml.saxr Zxml.sax.handlerrrrrrrrr rbZContentHandlerr rSrYrsr{rqrrrrrs  U!