ÿØÿà JFIF    ÿÛ „  ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ     ÿÄ H    !1AQaq"‘¡2B±ÁÑð#R“Ò Tbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz ¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡* ….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±b Lô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊ ÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ." ¤‡ú*õ'VŽ|¼´Úgllº¼klz[Æüï÷Aób‡Eÿ dÑ»Xx9ÃÜ£ÁT/`¼¸vI±Ýµ·Ë‚“G³þ*Ÿû´r|*}<¨îºœ @¦mÄ’M¹”.œ«Y–|6ÏU¤jç¥ÕÞqO ˜kDÆÁ¨5ÿ š;ÐЦ¦€GÙk \ –Þ=â¼=SͧµªS°ÚÍpÜãQűÀõ¬?ÃÁ1Ñ•õZà?hóœ€ L¦l{Y*K˜Ù›zc˜–ˆâ ø+¾ ­-Ök¥%ùEÜA'}ˆ><ÊIè“bpÍ/qÞâvoX€w,\úªò6Z[XdÒæ­@Ö—€$òJí#é>'°Ú ôª˜<)4ryÙ£|óAÅn5žêŸyÒäMÝ2{"}‰–¤l÷ûWX\l¾Á¸góÉOÔ /óñB¤f¸çñ[.P˜ZsÊË*ßT܈§QN¢’¡¨§V¼(Üù*eÕ“”5T¨‹Âê¥FŒã½Dü[8'Ò¥a…Ú¶k7a *•›¼'Ò·\8¨ª\@\õ¢¦íq+DÙrmÎ…_ªæ»ŠÓœ¡¯’Ré9MÅ×D™lælffc+ŒÑ,ý™ÿ ¯þǤ=Å’Á7µ÷ÚÛ/“Ü€ñýã¼àí¾ÕÑ+ƒ,uµMâÀÄbm:ÒÎPæ{˜Gz[ƒ¯«® KHà`ߨŠéí¯P8Aq.C‰ à€kòpj´kN¶qô€…Õ,ÜNŠª-­{Zö’æû44‰sŽè‰îVíRœÕm" 6?³D9¡ÇTíÅꋇ`4«¸ÝÁô ï’ýorqКÇZ«x4Žâéþuïf¹µö[P ,Q£éaX±`PÉÍZ ¸äYúg üAx ’6Lê‚xÝÓ*äQ  Ï’¨hÍ =²,6ï#rÃ<¯–£»ƒ‹,–ê•€ aÛsñ'%Æ"®ÛüìBᝠHÚ3ß°©$“XnœÖ’î2ËTeûìxîß ¦å¿çÉ ðK§þ{‘t‚Ϋ¬jéîZ[ ”š7L¥4VÚCE×]m¤Øy”ä4-dz£œ§¸x.*ãÊÊ b÷•h:©‡¦s`BTÁRû¾g⻩‹jø sF¢àJøFl‘È•Xᓁà~*j¯ +(ÚÕ6-£¯÷GŠØy‚<Ç’.F‹Hœw(+)ÜÜâÈzÄäT§FߘãÏ;DmVœ3Àu@mÚüXÝü•3B¨òÌÁÛ<·ÃÜ z,Ì@õÅ·d2]ü8s÷IôÞ¯^Ç9¢u„~ëAŸï4«M? K]­ÅàPl@s_ p:°¬ZR”´›JC[CS.h‹ƒïËœ«Æ]–÷ó‚wR×k7X‰k›‘´ù¦=¡«‰¨¨Â')—71ó’c‡Ðúµ `é.{§p¹ój\Ž{1h{o±Ý=áUÊïGÖŒõ–-BÄm+AZX¶¡ ïHðæ¥JmÙ;…䡟ˆ¦ ° äšiÉg«$üMk5¤L“’çÊvïâï ,=f“"íἊ5ô¬x6{ɏžID0e¸vçmi'︧ºð9$ò¹÷*£’9ÿ ²TÔ…×>JV¥}Œ}$p[bÔ®*[jzS*8 ”·T›Í–ñUîƒwo$áè=LT™ç—~ô·¤ÈÚ$榍q‰„+´kFm)ž‹©i–ËqÞŠ‰à¶ü( ‚•§ •°ò·‡#5ª•µÊ﯅¡X¨šÁ*F#TXJÊ ušJVÍ&=iÄs1‚3•'fý§5Ñ<=[íÞ­ PÚ;ѱÌ_~Ä££8rÞ ²w;’hDT°>ÈG¬8Á²ÚzŽ®ò®qZcqJêäÞ-ö[ܘbň±çb“ж31²n×iƒðÕ;1¶þÉ ªX‰,ßqÏ$>•î íZ¥Z 1{ç൵+ƒÕµ¥°T$§K]á»Ûï*·¤tMI’ÂZbŽÕiÒ˜}bÓ0£ª5›¨ [5Ž^ÝœWøÂÝh° ¢OWun£¤5 a2Z.G2³YL]jåtì”ä ÁÓ‘%"©<Ôúʰsº UZvä‡ÄiÆÒM .÷V·™ø#kèýiíÌ–ª)µT[)BˆõÑ xB¾B€ÖT¨.¥~ð@VĶr#¸ü*åZNDŽH;âi ],©£öØpù(šºãö¼T.uCê•4@ÿ GÕÛ)Cx›®0ø#:ÏðFÒbR\(€€Ä®fã4Þ‰Fä¯HXƒÅ,†öEÑÔÜ]Öv²?tLÃvBY£ú6Êu5ÅAQ³1‘’¬x–HŒÐ‡ ^ ¸KwJôÖŽ5×CÚ¨vÜ«/B0$×k°=ðbÇ(Ï)w±A†Á† 11Í=èQšµ626ŒÜ/`G«µ<}—-Ö7KEHÈÉðóȤmݱû±·ø«Snmá=“䫚mݱŸ¡¶~ó·“äUóJæúòB|E LêŽy´jDÔ$G¢þÐñ7óR8ýÒ…Ç› WVe#·Ÿ p·Fx~•ݤF÷0Èÿ K¯æS<6’¡WШ; ´ÿ ¥Êø\Òuî†åÝ–VNœkÒ7oòX¨Á­Ø÷FÎÑä±g÷ÿ M~Çî=p,X´ ÝÌÚÅ‹’ÃjÖ.ØöÏñ qïQ¤ÓZE†° =6·]܈ s¸>v•Ž^Ý\wq9r‰Î\¸¡kURÒ$­*‹Nq?Þª*!sŠÆ:TU_u±T+øX¡ ®¹¡,ÄâÃBTsÜ$Ø›4m椴zÜK]’’›Pƒ @€#â˜`é¹=I‡fiV•Ôî“nRm+µFPOhÍ0B£ €+¬5c v•:P'ÒyÎ ‰V~‚Ó†ÖuókDoh$å\*ö%Ю=£«…aȼ½÷Û.-½VŒŠ¼'lyî±1¬3ó#ÞE¿ÔS¤gV£m›=§\û"—WU¤ÚǼÿ ÂnÁGŒÃ ‚õN D³õNÚíŒÕ;HôyÄÈ©P¹Ä{:?R‘Ô¨âF÷ø£bÅó® JS|‚R÷ivýáâ€Æé¡è³´IئÑT!§˜•ت‚¬â@q€wnïCWÄ@JU€ê¯m6]Ï:£âx'+ÒðXvÓ¦Úm=–´7œ $ì“B£~p%ÕŸUþ« N@¼üï~w˜ñø5®—'Ôe»¤5ã//€ž~‰Tþ›Å7•#¤× Íö pÄ$ùeåì*«ÓŠEØWEÈsßg ¦ûvžSsLpºÊW–âµEWöˬH; ™!CYõZ ÃÄf æ#1W. \uWâ\,\Çf j’<qTbên›Î[vxx£ë 'ö¨1›˜ÀM¼Pÿ H)ƒêêŒA7s,|F“ 꺸k³9Ìö*ç®;Ö!Ö$Eiž•¹ÒÚ†ýóéÝû¾ÕS®ó$’NÝäŸz¤5r¦ãÄÃD÷Üø!°ø‡Ô&@m™Ì^Ãä­d q5Lnÿ N;.6½·N|#ä"1Nƒx“ã<3('&ñßt  ~ªu”1Tb㫨9ê–›–bìd$ߣ=#ÕãÒmU¯eí$EFù5ýYô櫨æì™Ç—±ssM]·á¿0ÕåJRÓªîiƒ+O58ÖñªŠÒx" \µâá¨i’¤i —Ö ” M+M¤ë9‚‰A¦°Qõ¾ßøK~¼Ã‘g…Ö´~÷Ï[3GUœÒ½#…kàÔ®Ò”‰³·dWV‰IP‰Ú8u¹”E ÖqLj¾êÕCBš{A^Âß;–¨`¯¬ìö ˼ ×tìø.tƐm*n¨y4o&Àx¥n¦×î‡aupáÛj8¿m›è¶ã!o½;ß0y^ý×^EÑ¿ÒjzŒ­)vÚÑnÄL …^ªô× ‡—‚3k Îý­hï]içå–îÏ*÷ñþ»Ô CÒjøjÍznˆ´ ¹#b'Fô‹ ‰v¥'’à'T´ƒHýÍ%M‰ ƒ&ÆÇŒï1 ‘ –Þ ‰i¬s žR-Ÿ kЬá¬7:þ 0ŒÅÒÕ/aÙ¬ÃÝ#Úøœ ©aiVc‰. ¹¦ãµ” ›Yg¦›ÆÎýº°f³7ƒhá·¸­}&D9¡ÂsÉÙÞèŠõØàC™¨ñbFC|´Ü(ŸƒÚÒ-%»'a Ì¿)ËÇn¿úÿ ÞŽX…4ÊÅH^ôΑí@ù¹Eh¶“L8Çjù ¼ÎåVªóR©Ï5uà V4lZß®=€xÖŸ–ÑÈ ÷”¨°¾__yM1tÉ?uÆþIkÄgæ@þ[¢†°XÃJ£j·:nkÅ¢u ‘}âGzö­/IµèЬ¼48q¦F°ŽR¼=ûì{´¯RýicS ÕÛ íNtÍÙï£,w4rêì®»~x(©Uñ§#Ñ&œÕ¤>ÎåÍÓ9’Ö{9eV­[Öjâ²ãu]˜å2›qÑšÕJç0€sÄ|Êëè0튔bÁ>“{×_F`Ø©ºê:µä,v¤ðfc1±"«ÔÍän1#=· Âøv~H½ÐßA¾¿Ü€Óš]Õ; I¾÷ç‚Qi†î¹9ywÔKG˜áñ zQY—§ÃÕZ07§X‚ Áh;ÁM)iÌCH-¯T‘ë|A0{Ò½LÚ–TâÖkÜ’dÀ“rmm»”جPF³ÖcbE§T€ÒxKºû’Ó®7±²(\4ŽÃ¸Uu@j™yĵ;³µ!Á¢b.W¤=mõ´êµK k ¸K^ÜÛ#p*Ü14qkZç5ïë †°5Ï%ÍÛ<Õ¤×Ô¥ê†C Õ´¼ú$ƒÖ“”]Ù¬qÞÚ[4©ý!ûÏ—Áb쳐XµA¬â~`›Çr¸8ìùÝ䫦<>ä÷«?xs´ÇÑ /á;¹øüÊÈÙà{"@Žïzâ¬[âß‚ U_<ÇŸ½4èN˜ú61®qŠu ¦þF£»äJ_ˆÙÎ~ ÞAã–݄ϗrŠD;xTž‘ô`É«…suãO`?³à™ô Lý#Íc5öoæØ‚y´´÷«ZR§<&JÇ+éâô´€i!Àˆ0æAoàðLèÖ-2ŸõW.’t^–(KÁmHµV@xÜÇy®Ñø­â^:Ú3w· 7½¹°ñ¸â¹®:',«Mœ—n­Á+Ãbš LÈ‘ÄnRÓÅœ%¦²‰¨ùQ:¤f‚ "PÕtô¸…cæl…&˜Ú˜Ôkv‹ž+vŠ,=¢v­6—Xy*¥t£«<™:“aîϲ=¦6rO]XI¿Œ÷¤zÚ­›¶ 6÷”w\d ü~v®ˆÌk«^m<ÿ ¢‰Õ\)ùºŽ;… lîÙÅEŠ®cѾ@vnMÏ,¼“ñ•ŽBxðÃzãÇç%3ˆ"}Ù•Åî> BÉú;Ò]V+P˜F_´ßé> Øše|ï‡ÄOmFæÇ ãqÞ$/xÐx­z`ï9"œÜij‚!7.\Td…9M‡•iŽ‹¾‘50ÞŽn¥ß4ÉôO ¹*í^QêËÜÇÌ8=ާs‰'ÂëÙ«á%Pú[O †ÅP¯Vsް.‰,kc¶ ¬A9n˜XÎ-ÞšN["¹QÕ‰ƒMýÁߺXJæÍaLj¾×Ãmã¾ãÚ uñÒþåQô¦¥ /ÄUx:‚ÍÜ’ Đ©ØÝ3V¨‰ÕnÐ6ó*óúK­«…c ¯U òhsý­jóÔj#,ímŒRµ«lbïUTŒÑ8†Ä0œÏr`ð¡¬É Ї ë"À² ™ 6¥ f¶ ¢ÚoܱԷ-<Àî)†a¶ž'Ú»¨TXqØæ¶÷YÄHy˜9ÈIW­YÀuMFë ºÏ’AqÌ4·/Ú †ô'i$øä­=Ä Ý|öK×40è|È6p‘0§)o¥ctî§H+CA-“ xØ|ÐXАç l8íºð3Ø:³¤¬KX¯UÿÙ 3 Uf^ @s`dZddlZddlZddlZddlmZddlmZddlm Z yd)d*Z d+d,Z!d-d.Z"d/d0Z#d1d2Z$d3d4Z%d?d5d6Z&d7d8Z'd9d:Z(dS)@Servera7uri [,options] -> a logical connection to an XML-RPC server uri is the connection point on the server, given as scheme://host/target. The standard implementation always supports the "http" scheme. If SSL socket support is available (Python 2.0), it also supports "https". If the target part and the slash preceding it are both omitted, "/RPC2" is assumed. The following options can be given as keyword arguments: transport: a transport factory encoding: the request encoding (default is UTF-8) verbose: verbosity level proxy: use an HTTP proxy username: username for authenticated HTTP proxy password: password for authenticated HTTP proxy All 8-bit strings passed to the server proxy are assumed to use the given encoding. Nrc Cs6|dkrZt|\} } } }| dk r.d| | f}n| }| dk rZ|dkrZ| }|dk rZ|dkrZ|}t||_d|_d|_d|_||_||_||_| |_ t t j dkrt j d|_ nt |_ |j|dkrd|_|j|j|||| }nd|_d|_d|_||_g|_d|_||_||_|j||j| d|_t|_dS)Nz%s:%srr)r%r_uri_refreshCallback_progressCallback _bufferSize_proxy _username _password_timeoutr __version__r rpc_version_reset_host_handler_and_type_allow_redirectdefault_transport_type _redirecteduse_handler_path _transport_trusted_cert_files_lang _encoding_verboseset_refresh_callbackset_progress_callback send_handlerr_headers)selfuri transportencodingverboser$usernamepasswordrefreshCallbackprogressCallbacktimeoutZphZppZpuZpwrrr__init__sJ     zServer.__init__cCsZ|r4|dkr |j||||d}qV|j||||d}n"|dkrJ|j|d}n |j|d}|S)Nhttps)Z proxyUsernameZ proxyPasswordrM)rM)_transport_class_https_proxy_transport_class_proxy_transport_class_https_transport_class)rDtyper$rIrJrMrFrrrr7s zServer.default_transportcCs ||_dS)N)r6)rDZallowrrrallow_redirectszServer.allow_redirectcCs|js dS|jS)N)r6r9)rDrrr redirectedszServer.redirectedcCs||_|jj|dS)N)r,r;r@)rDrKrrrr@szServer.set_refresh_callbackcCs||_|jj|dS)N)r.r;set_buffer_size)rD bufferSizerrrrWszServer.set_buffer_size@cCs||_|jj||dS)N)r-r;rA)rDrLrXrrrrAszServer.set_progress_callbackcCstj|||jdS)N)rG) xmlrpclibdumpsr>)rDparams methodnamerrr _req_bodyszServer._req_bodycCs|jr|jjSdS)N)r;Z headers_in)rDrrrget_response_headersszServer.get_response_headerscCs|jr|jjSdS)N)r;response_status)rDrrrget_response_statusszServer.get_response_statuscCs|jr|jjSdS)N)r;Zresponse_reason)rDrrrget_response_reasonszServer.get_response_reasonc Cs|j}|sdS|jd}|s"dStd|j}|ddks@tt|dksPt|djd}t|dksnt|\}}|dkrd}nt|}|jd \}}|t|t|d }|S) aSReturns a dictionary with three values: length: the total length of the entity-body (can be None) first_byte_pos: the position of the first byte (zero based) last_byte_pos: the position of the last byte (zero based) The range is inclusive; that is, a response 8-9/102 means two bytes Nz Content-Rangerbytesrr/*-)ZlengthZfirst_byte_posZ last_byte_pos)r_getfilterrAssertionErrorrint) rDheadersZ content_ranger!brangeZ total_lenstartendresultrrrget_content_ranges(  zServer.get_content_rangecCs$|j}|sdSd|kr |dSdS)Nz Accept-Ranges)r_)rDrkrrr accept_ranges)s zServer.accept_rangescCst|j\}}|dkrtdt|dks:|dddkr>t|dkrR|j|_n||_|jd krjtd t|\|_|_ |j sd |_ dS) z Reset the attributes: self._host, self._handler, self._type according the value of self._uri. Nzmissing protocol in urirrz//httprOzunsupported XML-RPC protocolz/RPC2)rsrO) r r+r&rlowerr8IOErrorr _host_handler)rDrTrErrrr51s  z#Server._reset_host_handler_and_typecsd}g}x|D]}t|}|tks*|tkr>tj|dt|}nf|tkr^tfdd|D}nF|tkrzfdd|D}n*|t ks|t krt fdd|j D}|j |qWt|dkr|d St|Sd S) a> Strip characters, which are not allowed according: http://www.w3.org/TR/2006/REC-xml-20060816/#charsets From spec: Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */ z#[\x00-\x09]|[\x0b-\x0c]|[\x0e-\x1f]c3s|]}j|VqdS)N)_strip_characters).0i)rDrr Usz+Server._strip_characters..csg|]}j|qSr)ry)rzr{)rDrr Wsz,Server._strip_characters..csg|]\}}j||qSr)ry)rznameval)rDrrr}YsrrN)rTrrrsubrrtuplerr r dictitemsappendr)rDargsZregexproitemZ item_typer)rDrryHs   zServer._strip_charactersc Csd}d}|jxt|tkr$td|jjx$|jjD]\}}|jj||q:W|jjdd|j |jjdd|j r|jjdd|r|jjd d |j r|jjd |j |j |j ||}y&|jj|j|j||jd }|jj} Wn2tjk r|jr ntjdj} YnXd |_|d7}| dkr:Pn| dkrLd|_q|jj|_d|_d}|j srtd|jrtd|j|jft|j\} } | d kr| j} | dkrtd| |jdkr| dkrtdt | \|_|_|jsd|_|`|j!| |j"|j#|j$|j%|_|j&|j'|j(|j)|j*|j+|j,|j-|j.gkrt/|jdrx|j.D]} |jj0| qnWqWt1|t2j3r|St1|t4rt5|dkr|d}|S)zL Call a method on the remote server we can handle redirections. rz!Unable to fetch requested PackagezX-Infoz+RPC Processor (C) Red Hat, Inc (version %s)zX-Client-VersionrzX-RHN-Transport-Capabilityzfollow-redirects=3zX-RHN-Redirect0z X-RHN-Path)rHN-.zRedirects not allowedz%s redirected to %srsrOz%Redirected to unsupported protocol %sz)HTTPS redirected to HTTP is not supportedz/RPC2add_trusted_cert)rr)rsrO)6r5MAX_REDIRECTIONSInvalidRedirectionErrorr;Z clear_headersrCr set_header add_headerr4r6rBr^ryrequestrvrwr?r`rZZ ProtocolErrorr:sysexc_infoerrcoder9rVprintr+r rtr8r r7r/r0r1r2rAr-r@r,rWr.setlangr=r<hasattrr isinstancerZFilerr) rDr]r\Zredirect_responseZretrykvrZresponseZ save_responsetyprEcertfilerrr_requestbs                  zServer._requestcCsd|jj|j|jfS)Nz <%s for %s%s>) __class__r'rvrw)rDrrr__repr__szServer.__repr__cCs t|j|S)N)_Methodr)rDr~rrr __getattr__szServer.__getattr__cKs,|js dS|j||d|jjf|dS)N)transferrG)r;updateset_transport_flags)rDrrGkwargsrrrrs  zServer.set_transport_flagscCs|js iS|jjS)N)r;get_transport_flags)rDrrrrszServer.get_transport_flagscCsdS)Nr)rDrrrreset_transport_flagsszServer.reset_transport_flagscCs@t|tgtfgkr.dd|D|j|<nt||j|<dS)NcSsg|] }t|qSr)str)rzarrrr}sz%Server.set_header..)rTrCr)rDr~argrrrrszServer.set_headercCsF||jkr&|j|}t|ts4|g}ng}|j|<|jt|dS)N)rCrrrr)rDr~rZvlistrrrrs    zServer.add_headercCs(||_|jr$t|jdr$|jj|dS)Nr)r=r;rr)rDZlangrrrr szServer.setlangcCs tddS)NzThis method is deprecated)NotImplementedError)rDZca_chainrrr use_CA_chainszServer.use_CA_chaincCs.|jj||jr*t|jdr*|jj|dS)Nr)r<rr;rr)rDrrrrrs zServer.add_trusted_certcCs|jr|jjd|_dS)N)r;close)rDrrrrs z Server.close) NNrNNNNNN)NNNN)rY)rr)N))r'r(r)__doc__rZ TransportrSZ SafeTransportrRZProxyTransportrQZSafeProxyTransportrPrNr7rUrVr@rWrAr^r_rarbrprqr5ryrr__str__rrrrrrrrrrrrrrr*lsH C  #s   r*c @s\eZdZdddddidddf ddZddZddZdd d Zd d Zd dZdddZ dS) GETServerNrc CsBtj|||||||| | d ||_||_|j|_|jddddS)N)r$rIrJrFrKrLrM)offsetamount)r*rNZ_client_versionrCrw _orig_handler set_range) rDrErFr$rIrJZclient_versionrkrKrLrMrrrrNszGETServer.__init__cCs$| st|dkrtdtdd|jjd}|d|d|gt|dd}ddj||_|j|_|j r|j r|j |_x$|j j D]\}}|jj||qW|jdk r |jdkrt|jd}|jdk r|t|j|jd}ndt|j }|jjd d ||jjdd d S) Nrz$Required parameter channel not foundcSs|dkS)Nrxr)xrrr5sz%GETServer._req_body..rdz$RHNrrfZRangezbytes=)allow_partial_contentrx)r ExceptionrhrrlistjoinrwrBr9r: _new_req_bodyrCrr;r_offsetr_amountr)rDr\r]Zh_compsZhndlhrrlrrrr^1s&"    zGETServer._req_bodycCst|j\}}t|\}}|S)N)r r9r )rDrTZtmpuriZsiteZhandlerrrrrUs zGETServer._new_req_bodycCs|dk rBy t|}Wn,tk r@td|dtjdYnX|dk ry t|}Wn,tk rtd|dtjdYnX|dkrtd|||_||_dS)NzInvalid value `%s' for offsetrzInvalid value `%s' for amountr)rjr# RangeErrorrrrr)rDrrrrrrZs   zGETServer.set_rangecCs|jjdddS)Nr)r)r;r)rDrrrroszGETServer.reset_transport_flagscCs t|j|S)N) SlicingMethodr)rDr~rrrrrszGETServer.__getattr__cCs$tj||||||d}|jd|S)N)r$rIrJrMZGET)r*r7Z set_method)rDrTr$rIrJrMretrrrr7vs zGETServer.default_transport)NN)NNNN) r'r(r)rNr^rrrrr7rrrrrs$ rc@s eZdZdS)rN)r'r(r)rrrrr|src@s eZdZdS)rN)r'r(r)rrrrrsrcCs>ddl}t||js*||kr&||gSgSdd|j|DS)NrcSs g|]}|jdddjqS)rr)rstrip)rzrrrrr}sz#getHeaderValues..) mimetoolsrZMessageZgetallmatchingheaders)rkr~rrrrgetHeaderValuess  rc@s4eZdZdZddZddZddZdd ZeZd S) rz{ some magic to bind an XML-RPC method to an RPC server. supports "nested" methods (e.g. examples.getStateName) cCs||_||_dS)N)_send_name)rDsendr~rrrrNsz_Method.__init__cCst|jd|j|fS)Nz%s.%s)rrr)rDr~rrrrsz_Method.__getattr__cGs|j|j|S)N)rr)rDrrrr__call__sz_Method.__call__cCsd|jj|j|jfS)Nz <%s %s (%s)>)rr'rr)rDrrrrsz_Method.__repr__N) r'r(r)rrNrrrrrrrrrs rc@s(eZdZdZddZddZddZdS) rz; A "slicing method" allows for byte range requests cCstj|||d|_dS)N)rrNr)rDrr~rrrrNszSlicingMethod.__init__cCst|jd|j|fS)Nz%s.%s)rrr)rDr~rrrrszSlicingMethod.__getattr__cOs|jd|_|jd|_y|jjj|j|jdWntk rFYnX|j|j|}y|jjjWntk rzYnX|S)Nrr)rr) rgrrrZim_selfrAttributeErrorrr)rDrrrorrrrs   zSlicingMethod.__call__N)r'r(r)rrNrrrrrrrsrcCsbd}d}d}||kr t||}d}||krZt||}|rZdj|}ddl}d|j|}||fS)z% Reports the error from the headers. rrxzX-RHN-Fault-CodezX-RHN-Fault-StringNz%s)rjrrbase64Z decodestring)rkrerrmsgsZ_sListZ_srrrr reportErrors   r)-r3rrrZrhnrZrhn.i18nrZrhn.UserDictCaserrZtypesrrrrr r Zurllibr r ImportErrorZ xmlrpc.clientZclientrrrcrrZ urllib.parserrr"r%rur&r*rrrrrrrrrrrrsF     % 5^