JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў fc@sdZddlmZmZmZddlmZmZmZddlm Z ddl m Z m Z ddl mZejZejZejZejjZejjZejjZejjZejZi ejedd6ejed d 6ejed d 6ejed d6ejedd6ejedd6ejedd6ejedd6ejedd6ZGdddeZddZddZGdd d Z eeefZ!Gd!d"d"eZ"Gd#d$d$eZ#Gd%d&d&e#Z$Gd'd(d(e#Z%d)Z&d*e&Z'Gd+d,d,e Z(Gd-d.d.Z)Gd/d0d0e)e Z*Gd1d2d2e)e(Z+Gd3d4d4e,Z-Gd5d6d6e Z.e/d7d8Z0e/d9d:Z1e/d;d<Z2e/d=d>Z3d?d@Z4dAS(BuFacility 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. i(u xmlbuilderuminidomuNode(uEMPTY_NAMESPACEu EMPTY_PREFIXuXMLNS_NAMESPACE(uexpat(u _append_childu_set_attribute_node(u NodeFilterucdatauCDATAu enumerationuENUMuentityuENTITYuentitiesuENTITIESuiduIDuidrefuIDREFuidrefsuIDREFSunmtokenuNMTOKENunmtokensuNMTOKENScBs|EeZdZdZdddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ dS(u ElementInfou _attr_infou_modelutagNamecCs||_g|_||_dS(N(utagNameu _attr_infou_model(uselfutagNameumodel((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu__init__?s  uElementInfo.__init__cCs|j|j|jfS(N(u _attr_infou_modelutagName(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu __getstate__DsuElementInfo.__getstate__cCs|\|_|_|_dS(N(u _attr_infou_modelutagName(uselfustate((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu __setstate__GsuElementInfo.__setstate__cCs\xR|jD]G}|d|kr |d}|ddkrBtdSt|dSq q WtjS(Niiiu(uENUMii(u _attr_infou _typeinfo_mapuminidomu_no_type(uselfuanameuinfout((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyugetAttributeTypeJs uElementInfo.getAttributeTypecCstjS(N(uminidomu_no_type(uselfu namespaceURIu localName((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyugetAttributeTypeNSTsuElementInfo.getAttributeTypeNScCs:|jr2|jd}|tjjtjjfkSdSdS(NiF(u_modeluexpatumodelu XML_CTYPE_ANYuXML_CTYPE_MIXEDuFalse(uselfutype((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuisElementContentWs    uElementInfo.isElementContentcCs(|jr |jdtjjkSdSdS(NiF(u_modeluexpatumodeluXML_CTYPE_EMPTYuFalse(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuisEmpty_s uElementInfo.isEmptycCs6x/|jD]$}|d|kr |ddkSq WdS(NiiuIDiF(u _attr_infouFalse(uselfuanameuinfo((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuisIdesuElementInfo.isIdcCs|j||fS(N(uisId(uselfueuriuenameuauriuaname((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuisIdNSksuElementInfo.isIdNSN(u _attr_infou_modelutagName(u__name__u __module__u __qualname__u __slots__uNoneu__init__u __getstate__u __setstate__ugetAttributeTypeugetAttributeTypeNSuisElementContentuisEmptyuisIduisIdNS(u __locals__((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu ElementInfo<s      u ElementInfocCs|j||S(N(u_intern_setdefault(ubuilderus((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_internosu_interncCsd|kst|jd}|j}t|dkr|\}}}|||}d||f}|||}|||}n%|\}}t}|||}}||||||fS(Nu iu%s:%s(uAssertionErrorusplitu_intern_setdefaultulenu EMPTY_PREFIX(ubuilderunameupartsuinternuuriu localnameuprefixuqname((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_parse_ns_namers  u_parse_ns_namecBsm|EeZdZdZd:ddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Z d:S(;u ExpatBuilderuPDocument builder that uses Expat to build a ParsedXML.DOM document instance.cCsw|dkrtj}n||_|jjdk rNt|jj|_nd|_t|_d|_ |j dS(N( uNoneu xmlbuilderuOptionsu_optionsufilteruFilterVisibilityControlleru_filteruidu_finish_start_elementu_parserureset(uselfuoptions((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu__init__s     uExpatBuilder.__init__cCs tjS(uCreate a new parser object.(uexpatu ParserCreate(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu createParsersuExpatBuilder.createParsercCsh|jsa|j|_|jjj|_d|j_d|j_d|j_|j |jn|jS(u7Return the parser object, creating a new one if needed.T( u_parseru createParseruinternu setdefaultu_intern_setdefaultuTrueu buffer_textuordered_attributesuspecified_attributesuinstall(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu getParsers    uExpatBuilder.getParsercCs@tjtdd|_|j|_|jj|_d|_dS(u6Free all data structures used during DOM construction.NF( utheDOMImplementationucreateDocumentuEMPTY_NAMESPACEuNoneudocumentucurNodeu _elem_infouFalseu_cdata(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuresets  uExpatBuilder.resetcCs|j|_|j|_|j|_|j|_|jj rK|j |_ n|j |_ |jjrr|j|_n|jjr|j|_|j|_|j|_n |j|_|j|_|j|_|j|_|j|_ dS(u>Install the callbacks needed to build the DOM into the parser.N(!ustart_doctype_decl_handleruStartDoctypeDeclHandlerufirst_element_handleruStartElementHandleruend_element_handleruEndElementHandleru pi_handleruProcessingInstructionHandleru_optionsuentitiesuentity_decl_handleruEntityDeclHandlerunotation_decl_handleruNotationDeclHandlerucommentsucomment_handleruCommentHandlerucdata_sectionsustart_cdata_section_handleruStartCdataSectionHandleruend_cdata_section_handleruEndCdataSectionHandlerucharacter_data_handler_cdatauCharacterDataHandlerucharacter_data_handleruexternal_entity_ref_handleruExternalEntityRefHandleruxml_decl_handleruXmlDeclHandleruelement_decl_handleruElementDeclHandleruattlist_decl_handleruAttlistDeclHandler(uselfuparser((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuinstalls$              uExpatBuilder.installc Cs|j}d}ykxT|jd}|s1Pn|j|d|rc|jjrc|j|nd}q|jddWntk rYnX|j}|j d|_ |S( uIParse a document from a file object, returning the document node.iiiuTi@FN( u getParseruTrueureaduParseudocumentudocumentElementu _setup_subsetuFalseu ParseEscapeuresetuNoneu_parser(uselfufileuparseru first_bufferubufferudoc((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu parseFiles$      uExpatBuilder.parseFilec Csb|j}y!|j|d|j|Wntk rAYnX|j}|jd|_|S(u<Parse a document from a string, returning the document node.TN( u getParseruParseuTrueu _setup_subsetu ParseEscapeudocumenturesetuNoneu_parser(uselfustringuparserudoc((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu parseStrings     uExpatBuilder.parseStringcCsD|jjr@t}|j||j}||jj_ndS(u/Load the internal subset if there might be one.N(udocumentudoctypeuInternalSubsetExtractoru parseStringu getSubsetuinternalSubset(uselfubufferu extractorusubset((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu _setup_subsets     uExpatBuilder._setup_subsetcCs|jjj|||}|j|_t|j|||j_|jr|jj|tkrd|j_|jj d=d}d|j _ d|j _ n|r|dk rg|j_g|j_nd|j _d|j _|j|j _ndS(Nii(udocumentuimplementationucreateDocumentTypeu ownerDocumentu _append_childudoctypeu_filteru acceptNodeu FILTER_REJECTuNoneu childNodesu_parseruEntityDeclHandleruNotationDeclHandleruentitiesu_sequ notationsuCommentHandleruProcessingInstructionHandleruend_doctype_decl_handleruEndDoctypeDeclHandler(uselfu doctypeNameusystemIdupublicIduhas_internal_subsetudoctype((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_doctype_decl_handlers$   !       u'ExpatBuilder.start_doctype_decl_handlercCsO|jjr|j|j_n|j|j_|jp<|jsKt |_ ndS(N( u_optionsucommentsucomment_handleru_parseruCommentHandleru pi_handleruProcessingInstructionHandleru _elem_infou_filteruidu_finish_end_element(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuend_doctype_decl_handlers  u%ExpatBuilder.end_doctype_decl_handlercCs]|jj||}t|j||jrY|jj|tkrY|jj|ndS(N(udocumentucreateProcessingInstructionu _append_childucurNodeu_filteru acceptNodeu FILTER_REJECTu removeChild(uselfutargetudataunode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu pi_handler s!uExpatBuilder.pi_handlercCs|jj}|jrd|jrF|djtkrF|dj|dS|jj|}d|_n^|r|djt kr|d}|j |}||_ dSt j }||_ |j|_t|j|dS(NiiiTii(ucurNodeu childNodesu_cdatau_cdata_continueunodeTypeuCDATA_SECTION_NODEu appendDataudocumentucreateCDATASectionuTrueu TEXT_NODEudatauminidomuTextu ownerDocumentu _append_child(uselfudatau childNodesunodeuvalue((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyucharacter_data_handler_cdatas"          u)ExpatBuilder.character_data_handler_cdatacCs|jj}|rC|djtkrC|d}|j||_dStj}|j||_|j|_t |j|dS(Niii( ucurNodeu childNodesunodeTypeu TEXT_NODEudatauminidomuTextudocumentu ownerDocumentu _append_child(uselfudatau childNodesunode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyucharacter_data_handler$s    u#ExpatBuilder.character_data_handlerc Cs|r dS|jjsdS|jj||||}|dk rf|jj|} |jj| n|jjjj j||j r|j j |t kr|jjjj d=ndS(Nii( u_optionsuentitiesudocumentu_create_entityuNoneucreateTextNodeu childNodesuappendudoctypeu_sequ_filteru acceptNodeu FILTER_REJECT( uselfu entityNameuis_parameter_entityuvalueubaseusystemIdupublicIdu notationNameunodeuchild((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuentity_decl_handler/s   !u ExpatBuilder.entity_decl_handlercCsl|jj|||}|jjjjj||jrh|jj|tkrh|jjjjd=ndS(Nii( udocumentu_create_notationudoctypeu notationsu_sequappendu_filteru acceptNodeu FILTER_ACCEPT(uselfu notationNameubaseusystemIdupublicIdunode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyunotation_decl_handlerAs!u"ExpatBuilder.notation_decl_handlercCsZ|jj|}t|j||jrV|jj|tkrV|jj|ndS(N(udocumentu createCommentu _append_childucurNodeu_filteru acceptNodeu FILTER_REJECTu removeChild(uselfudataunode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyucomment_handlerGs!uExpatBuilder.comment_handlercCsd|_d|_dS(NTF(uTrueu_cdatauFalseu_cdata_continue(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_cdata_section_handlerMs u(ExpatBuilder.start_cdata_section_handlercCsd|_d|_dS(NF(uFalseu_cdatau_cdata_continue(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuend_cdata_section_handlerQs u&ExpatBuilder.end_cdata_section_handlercCsdS(Ni((uselfucontextubaseusystemIdupublicId((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuexternal_entity_ref_handlerUsu(ExpatBuilder.external_entity_ref_handlercCsK|jdkr%|j r%t|_n|j|j_|j||dS(N(u_filteruNoneu _elem_infouidu_finish_end_elementustart_element_handleru getParseruStartElementHandler(uselfunameu attributes((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyufirst_element_handlerXs u"ExpatBuilder.first_element_handlercCs|jj|}t|j|||_|rxotdt|dD]R}tj||tdt }||d}||_ |j|_ t ||qJWn||jjk r|j|ndS(Niii(udocumentu createElementu _append_childucurNodeurangeulenuminidomuAttruEMPTY_NAMESPACEuNoneu EMPTY_PREFIXuvalueu ownerDocumentu_set_attribute_nodeudocumentElementu_finish_start_element(uselfunameu attributesunodeuiuauvalue((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_element_handler^s    u"ExpatBuilder.start_element_handlercCs|jr||jjkrdS|jj|}|tkrJt|n|tkrct|ndS|j|_ |jj ||j ndS(N( u_filterudocumentudocumentElementustartContaineru FILTER_REJECTuRejecteru FILTER_SKIPuSkipperu parentNodeucurNodeu removeChilduunlink(uselfunodeufilt((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_finish_start_elementos      u"ExpatBuilder._finish_start_elementcCs&|j}|j|_|j|dS(N(ucurNodeu parentNodeu_finish_end_element(uselfunameucurNode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuend_element_handlers  u ExpatBuilder.end_element_handlercCs|jj|j}|r.|j||n|jr||jjkrMdS|jj|tkr|j j ||j qndS(N( u _elem_infougetutagNameu_handle_white_text_nodesu_filterudocumentudocumentElementu acceptNodeu FILTER_REJECTucurNodeu removeChilduunlink(uselfucurNodeuinfo((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_finish_end_elements u ExpatBuilder._finish_end_elementcCs|jjs|j rdSg}x@|jD]5}|jtkr-|jj r-|j|q-q-Wx|D]}|j |qmWdS(N( u_optionsuwhitespace_in_element_contentuisElementContentu childNodesunodeTypeu TEXT_NODEudataustripuappendu removeChild(uselfunodeuinfouLuchild((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_handle_white_text_nodess   u%ExpatBuilder._handle_white_text_nodescCsY|jj|}|dkr7t|||j||EeZdZfZddZddZddZdS(uRejectercCs>tj|||j}xdD]}t||dq WdS(NuProcessingInstructionHandleruCommentHandleruCharacterDataHandleruStartCdataSectionHandleruEndCdataSectionHandleruExternalEntityRefHandler(uProcessingInstructionHandleruCommentHandleruCharacterDataHandleruStartCdataSectionHandleruEndCdataSectionHandleruExternalEntityRefHandler(u FilterCrutchu__init__u_parserusetattruNone(uselfubuilderuparseruname((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu__init__s  uRejecter.__init__cGs|jd|_dS(Ni(u_level(uselfuargs((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_element_handlersuRejecter.start_element_handlercGsZ|jdkrF|jj}|jj||j|_|j|_n|jd|_dS(Nii(u_levelu_builderu_parseruinstallu _old_startuStartElementHandleru_old_enduEndElementHandler(uselfuargsuparser((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuend_element_handlers   uRejecter.end_element_handlerN(u__name__u __module__u __qualname__u __slots__u__init__ustart_element_handleruend_element_handler(u __locals__((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuRejecter s uRejectercBs2|EeZdZfZddZddZdS(uSkippercGsB|jj}|j||jj|k r>|jd|_ndS(Ni(u_builderucurNodeu _old_startu_level(uselfuargsunode((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_element_handler+s  uSkipper.start_element_handlercGs`|jdkr?|j|jj_|j|jj_d|_n|jd|_|j|dS(Nii(u_levelu _old_startu_builderu_parseruStartElementHandleru_old_enduEndElementHandleruNone(uselfuargs((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuend_element_handler1s  uSkipper.end_element_handlerN(u__name__u __module__u __qualname__u __slots__ustart_element_handleruend_element_handler(u __locals__((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuSkipper(s uSkipperu8http://xml.python.org/entities/fragment-builder/internalu %%s ]> &fragment-builder-internal;cBsq|EeZdZdZdddZddZddZdd Zd d Z d d Z ddZ dS(uFragmentBuilderuBuilder 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. cCsM|jtkr$||_||_n|j|_||_tj||dS(N(unodeTypeu DOCUMENT_NODEuoriginalDocumentucontextu ownerDocumentu ExpatBuilderu__init__(uselfucontextuoptions((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu__init__Ys     uFragmentBuilder.__init__cCstj|d|_dS(N(u ExpatBuilderuresetuNoneufragment(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuresetbs uFragmentBuilder.resetcCs|j|jS(uRParse a document fragment from a file object, returning the fragment node.(u parseStringuread(uselfufile((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu parseFilefsuFragmentBuilder.parseFilec Cs||_|j}|jj}d}|r|jp?|j}|jrdd|j|jf}q|jrd|j}qnd}|j}t |||f}y|j |dWn|j YnX|j }|j |S(uMParse a document fragment from a string, returning the fragment node.uuPUBLIC "%s" "%s"u SYSTEM "%s"i( u_sourceu getParseruoriginalDocumentudoctypeuinternalSubsetu_getDeclarationsupublicIdusystemIdu _getNSattrsu_FRAGMENT_BUILDER_TEMPLATEuParseuresetufragment( uselfustringuparserudoctypeuidentusubsetunsattrsudocumentufragment((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu parseStringks,         uFragmentBuilder.parseStringcCs|jjj}d}|rxt|jjD]v}|jj|}|rY|d}nd||jf}|jrd||j|j f}q.d||j f}q.Wxt|j jD]}|j j|}|r|d}nd||jf}|jrd||j|j f}n5|j r=d||j f}nd ||j j f}|j rrd ||j f}n|d }qWn|S( uRe-create the internal subset from the DocumentType node. This is only needed if we don't already have the internalSubset as a string. uu u%su%s SYSTEM "%s">u %s(ucontextu ownerDocumentudoctypeurangeu notationsulengthuitemunodeNameupublicIdusystemIduentitiesu firstChildudatau notationName(uselfudoctypeusuiunotationuentity((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_getDeclarationss6      u FragmentBuilder._getDeclarationscCsdS(Nu((uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu _getNSattrssuFragmentBuilder._getNSattrsc Cs|tkr|j}|j}|jj|}|j|_|jj|_|j|_z|j|j dWd||_||_d|_ XdSt j |||||SdS(Nii( u$_FRAGMENT_BUILDER_INTERNAL_SYSTEM_IDudocumentucurNodeu_parseruExternalEntityParserCreateuoriginalDocumentucreateDocumentFragmentufragmentuParseu_sourceuNoneu ExpatBuilderuexternal_entity_ref_handler(uselfucontextubaseusystemIdupublicIdu old_documentu old_cur_nodeuparser((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuexternal_entity_ref_handlers        u+FragmentBuilder.external_entity_ref_handlerN( u__name__u __module__u __qualname__u__doc__uNoneu__init__uresetu parseFileu parseStringu_getDeclarationsu _getNSattrsuexternal_entity_ref_handler(u __locals__((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuFragmentBuilderPs    $ uFragmentBuildercBsb|EeZdZdZddZddZddZdd Zd d Zd d Z dS(u Namespacesu7Mix-in class for builders; adds support for namespaces.cCs g|_dS(N(u_ns_ordered_prefixes(uself((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu_initNamespacessuNamespaces._initNamespacescCstjdd}d|_|S(u'Create a new namespace-handling parser.unamespace_separatoru T(uexpatu ParserCreateuTrueunamespace_prefixes(uselfuparser((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyu createParsers uNamespaces.createParsercCs/tj|||jjr+|j|_ndS(u.Insert the namespace-handlers onto the parser.N(u ExpatBuilderuinstallu_optionsunamespace_declarationsustart_namespace_decl_handleruStartNamespaceDeclHandler(uselfuparser((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyuinstalls uNamespaces.installcCs|jj||fdS(u/Push this namespace declaration on our storage.N(u_ns_ordered_prefixesuappend(uselfuprefixuuri((u9/opt/alt/python33/lib64/python3.3/xml/dom/expatbuilder.pyustart_namespace_decl_handlersu'Namespaces.start_namespace_decl_handlercCs-d|kr*t||\}}}}nt}|}d}t}tj||||}|j|_t|j |||_ |j rx|j D]t\}}|rtj t |d|t |d}ntj dt dt}||_|j|_t||qW|j dd=n|r)|j|j} |j} xtdt|dD]} || } || d} d| krt|| \}}}}tj ||||}|| |<|| ||fs^        3  B:  u_%,