ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3g^@sdZddlZddlZddlZddlZddlZddlZgdZGdddeZ e Z iZ da dad=dddd Zd>d d Zd?d dZddZddZddddZGdddeZGdddeZGdddeZGdddeZGdddeZGdd d eZGd!d"d"eZGd#d$d$eZeZGd%d&d&eZGd'd(d(eZ Gd)d*d*eZ!Gd+d,d,eZ"d-d.Z#d/d0Z$ej%dd1d2krGd3d4d4eZ&ej%d5krGd6d7d7eZ'Gd8d9d9eZ(d:d;Z)e*ddSq>dS)aDisplay url using the default browser. If possible, open url in a location determined by new. - 0: the same browser window (the default). - 1: a new browser window. - 2: a new browser page ("tab"). If possible, autoraise raises the window (the default) or not. NTF)rrrrr)urlnew autoraiserr$r r r rGs $rcCs t|dS)zuOpen url in a new window of the default browser. If not possible, then open url in the only browser window. rrr&r r r rZsrcCs t|dS)zOpen url in a new page ("tab") of the default browser. If not possible, then the behavior becomes equivalent to open_new(). r)r*r r r rasrcCs|d}t|sddgStj|}zt|}WntyTddgYS0|d}|r||jkrddl }| |}||_ tj||_t |d||dd|gSddgS)aAttempt to synthesize a controller based on existing controllers. This is useful to create a controller when a user specifies a path to an entry in the BROWSER environment variable -- we can copy a general controller to operate using a specific installation of the desired browser in this way. If we can't create a controller in this way, or if there is no executable for the requested browser, return [None, None]. rNr)rr) rshutilwhichospathbasenamerrr"copyrr)r$rcmdrr%Z controllerr1r r r r#is"     r#c@s:eZdZdZdgZdddZddd Zd d Zd d ZdS) BaseBrowserz3Parent class for all browsers. Do not use directly.rcCs||_||_dSN)rr0selfrr r r __init__szBaseBrowser.__init__rTcCstdSr5)NotImplementedErrorr7r&r'r(r r r rszBaseBrowser.opencCs ||dS)Nrr)r7r&r r r rszBaseBrowser.open_newcCs ||dS)Nr+r)r;r r r rszBaseBrowser.open_new_tabN)r4)rT) rr r __doc__argsr8rrrr r r r r3s   r3c@s"eZdZdZddZd ddZdS) r!zVClass for all browsers started with a command and without remote functionality.cCsFt|tr||_dg|_n|d|_|dd|_tj|j|_dS)Nrrr) isinstancestrrr=r.r/r0r6r r r r8s    zGenericBrowser.__init__rTcsztd|jgfdd|jD}z8tjdddkrHt|}ntj|dd}| WStytYdS0dS) Nwebbrowser.opencsg|]}|dqSrreplace.0argr*r r sz'GenericBrowser.open..winT) close_fdsF) sysauditrr=platform subprocessPopenwaitOSErrorr7r&r'r(cmdlinepr r*r rs    zGenericBrowser.openN)rTrr r r<r8rr r r r r!s r!c@seZdZdZdddZdS)r zHClass for all browsers which are to be started in the background.rTcs~|jgfdd|jD}tdz.r@rHrIT)rJstart_new_sessionF) rr=rKrLrMrNrOpollrQrRr r*r rs   zBackgroundBrowser.openN)rTrr r r<rr r r r r sr c@sDeZdZdZdZdZdZddgZdZdZ dZ d ddZ d d d Z dS) UnixBrowserz=Parent class for all Unix browsers with remote functionality.NFT%actionrc Csg}|r*|jr*t|}|j|}|r*|g}|jg||}|sD|jrLtj}nd}tj|d||jrd|pfd|dd} |rz| d} | WStj yYdS0n&|jr| durdSdSn |  SdS)NTrJstdinstdoutstderrrVF) raise_optsintr backgroundrNDEVNULLrOredirect_stdoutrPTimeoutExpiredrW) r7r=Zremoter(r&Z raise_optoptrSZinoutrTrcr r r _invokes0         zUnixBrowser._invokercstd|dkr|jnB|dkr,|jn2|dkrN|jdurF|jq^|jntdd|fdd|jD}d d|D}||d |}|sfd d|jD}||d d Sd SdS) Nr@rrr+zBad 'new' parameter to open(); zexpected 0, 1, or 2, got %scs g|]}|ddqS)rrZrBrDactionr&r r rGsz$UnixBrowser.open..cSsg|] }|r|qSr r rDr r r rGTcsg|]}|dqSrArBrDr*r r rGrkF) rKrL remote_actionremote_action_newwinremote_action_newtabr remote_argsrhr=)r7r&r'r(r=successr rir rs*   zUnixBrowser.open)N)rT) rr r r<r`rbrdrorlrmrnrhrr r r r rYs #rYc@s(eZdZdZddgZdZdZdZdZdS) Mozillaz$Launcher class for Mozilla browsers.rZrr4z -new-windowz-new-tabTN rr r r<rorlrmrnrbr r r r rqs rqc@s0eZdZdZddgZddgZdZdZdZd Z d S) Netscapez$Launcher class for Netscape browser.-noraisez-raise-remoteopenURL(%s%action)r4 ,new-window,new-tabTN) rr r r<r`rorlrmrnrbr r r r rs&srsc@s,eZdZdZddgZddgZdZdZdZd S) Galeonz,Launcher class for Galeon/Epiphany browsers.rtr4rZr-nz-wTN) rr r r<r`rorlrmrbr r r r ry1s ryc@s(eZdZdZddgZdZdZdZdZdS)Chromez)Launcher class for Google Chrome browser.rZrr4 --new-windowTNrrr r r r r{;s r{c@s(eZdZdZddgZdZdZdZdZdS)Operaz!Launcher class for Opera browser.rZrr4r|TNrrr r r r r}Gs r}c@s,eZdZdZddgZdZdZdZdZdZ dS) Elinksz#Launcher class for Elinks browsers.rurvr4rwrxFN) rr r r<rorlrmrnrbrdr r r r r~Qsr~c@seZdZdZdddZdS) KonquerorzController for the KDE File Manager (kfm, or Konqueror). See the output of ``kfmclient --commands`` for more information on the Konqueror remote-control interface. rTcCstd||dkrd}nd}tj}ztjd||gd|||d}WntyTYn0|dSz tjdd |gd|||dd }WntyYn0|durdSz tjd d |gd|||dd }WntyYd S0|duSdS)Nr@r+ZnewTabZopenURL kfmclientT)rJr\r]r^ konquerorz--silentr[kfmz-dF)rKrLrNrcrOrQrPrW)r7r&r'r(rjdevnullrTr r r rfsB           zKonqueror.openN)rTrXr r r r r_src@s&eZdZddZddZd ddZd S) Grailc Csddl}ddl}ddl}ddl}tj|d}|t d}tj| || |d}||}|stdS||j |j } |D]P} z| | Wn4tyzt| WntyYn0Yq0| SqdS)Nrz .grail-unixz-*)globpwdsockettempfiler.r/join gettempdirgetpwuidgetuidescapeAF_UNIX SOCK_STREAMconnectrQunlink) r7rrrrtempdiruserfilenameZmaybessfnr r r _find_grail_rcs,     zGrail._find_grail_rccCs&|}|sdS|||dS)Nrr)rsendclose)r7rjrr r r _remotes  z Grail._remoterTcCs2td||r |d|}n|d|}|S)Nr@zLOADNEW zLOAD )rKrLr)r7r&r'r(okr r r rs  z Grail.openN)rT)rr r rrrr r r r rsrcCstdrtddtddtjvr>tdr>tddtddtjvrbtdrbtddtddtjvrtdrtdttdtdrtddtddD]}t|rt|dt|qd D]}t|rt|dt|qtd rtd ttd ntd r"td ttd d D]"}t|r&t|dt |q&td rftd dtd dD]"}t|rjt|dt |qjtdrtddt dtdrtddtdtdrtdt ddS)Nzxdg-openZGNOME_DESKTOP_SESSION_IDz gvfs-openz gnome-openZKDE_FULL_SESSIONrz x-www-browser)firefoxZ iceweaselZiceape seamonkey)zmozilla-firefoxzmozilla-firebirdfirebirdmozillanetscaperr)ZgaleonZepiphanyZ skipstone)z google-chromechromeZchromiumzchromium-browseroperaZmosaicZgrail) r,r-rr r.environrrqrsryr{r}r)r$r r r register_X_browserssD            rc Cs,gatjdkrNtddtdtddtdtddtdtddtdtjdddkrtd ttjtj d d d }dd dddd|fD]}t |rt|dt |qntj dstj dr$z(d}tj|tjd}|}WnttjttfyYn0|attj drt drNtddtdt drjtddtdt drtddtdt drtddtdt drtddtddtj vr(tj dtj}||D]>}|dkrt|dd}|d durt|dt|ddqdS)!NdarwinMacOSXdefaultrrZsafarirHrIzwindows-defaultZ PROGRAMFILESzC:\Program FileszInternet Explorer\IEXPLORE.EXErrrrrZDISPLAYZWAYLAND_DISPLAYz$xdg-settings get default-web-browser)r^ZTERMz www-browserZlinksZelinksZlynxZw3mZBROWSERr4Tr r)rrKrMrMacOSXOSAScriptWindowsDefaultr.r/rrrr,r-r rrN check_outputrcdecodestripFileNotFoundErrorCalledProcessErrorPermissionErrorNotADirectoryErrorrrr!r~pathsepreverser#)Ziexplorer$r2Z raw_resultresultZ userchoicesrSr r r r sX           rrHrIc@seZdZdddZdS)rrTcCs8td|zt|Wnty.YdS0dSdS)Nr@FT)rKrLr.Z startfilerQr:r r r rXs   zWindowsDefault.openN)rT)rr r rr r r r rWsrrc@s"eZdZdZddZd ddZdS) ra{Launcher class for Aqua browsers on Mac OS X Optionally specify a browser name on instantiation. Note that this will not work for Aqua browsers if the user has moved the application package after installation. If no browser is specified, the default browser, as specified in the Internet System Preferences panel, will be used. cCs ||_dSr5)rr6r r r r8sszMacOSX.__init__rTc Cstd|d|vsJd|vr(d|}tt|}|jdkrPd|dd}n<|jd kr`d }n d |d }d |dd}d|j||f}tdd}|durdS||| }| S)Nr@':zfile:ropen location "%s""%22ZOmniWebr4z toWindow %drz OpenURL "%s"ztell application "%s" activate %s %s end tell osascriptwF) rKrLraboolrrCr.popenwriter) r7r&r'r(scriptZtoWindowr2osapipergr r r rvs(         z MacOSX.openN)rTrUr r r r ris rc@seZdZddZdddZdS) rcCs ||_dSr5)_namer6r r r r8szMacOSXOSAScript.__init__rTcCsb|jdkrd|dd}nd|j|ddf}tdd}|durJdS|||}| S) Nrrrrz tell application "%s" activate open location "%s" end rrF)rrCr.rrr)r7r&r'r(rrrgr r r rs   zMacOSXOSAScript.openN)rT)rr r r8rr r r r rsrc Csddl}dtjd}z|tjddd\}}WnL|jy}z2t|tjdt|tjdtdWYd}~n d}~00d}|D]"\}}|dkrd}q|dkrd}qt|dkrt|tjdtd|d}t||td dS) NrzDUsage: %s [-n | -t] url -n: open new window -t: open new tabrZntd)filerzz-tr+) getoptrKargverrorprintr^exitlenr) rusageZoptsr=msgZnew_winoar&r r r mains(     r__main__)N)N)rT)+r<r.rr,rKrN threading__all__ ExceptionrRLockrrrrrrrrrr#objectr3r!r rYrqrsryr{ZChromiumr}r~rrrrrMrrrrrr r r r sR " "O     56AK /