searchmonkey-0.8.3/0000775000175000017500000000000013236164477011232 500000000000000searchmonkey-0.8.3/bsdports/0000775000175000017500000000000013236164477013072 500000000000000searchmonkey-0.8.3/bsdports/distinfo0000664000175000017500000000030413236161317014537 00000000000000MD5 (xsearch-0.4.1.tar.gz) = 1eef05cac35a225b1c1e0fc1c4971f8d SHA256 (xsearch-0.4.1.tar.gz) = da2a7774ada9d39ac93f334e3140c63a35c7f8545b024cdde0de85e8ea5cdf1c SIZE (xsearch-0.4.1.tar.gz) = 131299 searchmonkey-0.8.3/bsdports/Makefile0000664000175000017500000000107413236161317014442 00000000000000# New ports collection makefile for: xsearch # Date created: 26 August 2006 # Whom: Andrew Pantyukhin # # $FreeBSD: /repoman/r/pcvs/ports/sysutils/xsearch/Makefile,v 1.1 2006/08/26 13:20:28 sat Exp $ # PORTNAME= xsearch PORTVERSION= 0.4.1 CATEGORIES= sysutils MASTER_SITES= SF MAINTAINER= cottrela@users.sourceforge.net COMMENT= Search using regexes for file names and text USE_GNOME= gtk20 USE_GCC= 3.3+ USE_GETTEXT= yes GNU_CONFIGURE= yes CONFIGURE_ARGS= --with-libintl-prefix=${LOCALBASE} PLIST_FILES= bin/xsearch .include searchmonkey-0.8.3/bsdports/pkg-descr0000664000175000017500000000026013236161317014600 00000000000000Powerful text searches on Unix using regular expressions for both the file name, and the search text. Graphical equivalent of find + grep. WWW: http://xsearch.sourceforge.net searchmonkey-0.8.3/pixmaps/0000775000175000017500000000000013236164477012713 500000000000000searchmonkey-0.8.3/pixmaps/16x16/0000775000175000017500000000000013236161317013466 500000000000000searchmonkey-0.8.3/pixmaps/16x16/apps/0000775000175000017500000000000013236164300014424 500000000000000searchmonkey-0.8.3/pixmaps/16x16/apps/searchmonkey.png0000775000175000017500000000176113236164300017552 00000000000000PNG  IHDRasBIT|dtEXtSoftwarewww.inkscape.org<IDAT8MIlU{홌;vb')iIp)( (ʁ Μ DN Bt%DEAP ml8όq]~_j=会B/&Gğw=YHzv.qgT|J А~A#+D^h.6-Wf<B f31h!Ͳ_=KnuP[6Gf}:Zb>fԻI7fX?Î"]΂܊F,U%/Eg&?6ߓ͞؃8ط7ۏ+| )ࠈM Oy /[r+)}G?H>Bֶ#G7A Qԗ<W庋hvpH_FJ%S׬:*D J݅] e!!Br?X;qy_.D6]!"T!1r#"XȘ:]M .%ن|GHO}ad<:6_$"\rp`;NYDʌVB$c R1aPq6{! 2P4uaYhJ!rV j$ .X6Jks ?dE,:mA NaV$/%GS]:]2LҎlFՁ.waRp( goD0n1A!zn= hy'%b Xڮ:#i47B/ϯ‰W\$0D.P#!zZDÛvYϞ4JK'JF+Fb*$` j@fWFG;xCi(`R ; IENDB`searchmonkey-0.8.3/pixmaps/22x22/0000775000175000017500000000000013236161317013460 500000000000000searchmonkey-0.8.3/pixmaps/22x22/apps/0000775000175000017500000000000013236164300014416 500000000000000searchmonkey-0.8.3/pixmaps/22x22/apps/searchmonkey.png0000775000175000017500000000321313236164300017536 00000000000000PNG  IHDRĴl;sBIT|dtEXtSoftwarewww.inkscape.org<IDAT8u[\g?̹egv6k6nvl&!5ilAC}(T BhVSј*ԦnM&Kvggwfwgf>s.E8d9J)ԕofO^9.n{o裱;#G=n\ HaoM:ca^ۨPJa"l;futjho-;y2|h҇]ݝn-os_/.J}.r@͔PJ|=Ld< Bv/툜,?a4,!i(BUl V}8Kxtύ'"WG仃+NvW [ x \#Xy]WdɱyEϮW=Sl1/k1)؈ϝ=G%2J"$Z`@H2իq9VhzH6~s96VBb۳4*n4&xbz- %XEh_j iwVF`'ķ;(f[v8}?jl<&7}ᗲ ,/*S1K!nUdVC#) #D[&ݢvT?V{MO{Db wx>&KA!7 CJ}Ā%ْ&Uڭ&A^p5IdcR+iZg8+iIЂWfi6AMT֨عUTD8ȰkpsU.3ݽFBUD_7;rMlSUVaUEijݷl#v0&uAҭ+b8VIENDB`searchmonkey-0.8.3/pixmaps/24x24/0000775000175000017500000000000013236161317013464 500000000000000searchmonkey-0.8.3/pixmaps/24x24/apps/0000775000175000017500000000000013236164300014422 500000000000000searchmonkey-0.8.3/pixmaps/24x24/apps/searchmonkey.png0000775000175000017500000000363613236164300017553 00000000000000PNG  IHDRw=sBIT|dtEXtSoftwarewww.inkscape.org<0IDATHu[\u}vvgon^VK ,X)ƒIc!D bD%$\VXD(RluvggΜ9}0=0㺮k߭_Bv5i2}(7GC'ַ kb#C#H[>\c}!|bHViIFHb,rѫ3GtqsG"펶TlV;1;r#Yg˗&eܜ4ln߿ oֹ_"c&R #P L+BHlٞI2LI""Qxy=e`_cgL@hҕwp~q)NLpAhBq-&^e\C|mc9zBbGU>[P~Ȯ3.{;"t|:fD4NOw;ۺrfjș'zwѪSL()'si;N};rC|طG"B7!@)Tӥ<' -ifd=ihrO(Et5Ow)jt nX(J+IUw!zBgsii8J5Q zF/FcqvHfL4ZBgtHG<-&^*cd ewJ0.վ/Gw+rFU`BÙ`D-j Uaшy!QCܝ¯{T'x+PHfAmO f]Ƶ}b oA4a]a-^p E$#T+l^t02zRCؒXwgkUih>tjIM ;n䍩a-I(a#Fy)R9{T?;{ki Jc2u3n d\4ʅ|imIENDB`searchmonkey-0.8.3/pixmaps/32x32/0000775000175000017500000000000013236161317013462 500000000000000searchmonkey-0.8.3/pixmaps/32x32/apps/0000775000175000017500000000000013236164300014420 500000000000000searchmonkey-0.8.3/pixmaps/32x32/apps/searchmonkey.png0000775000175000017500000000613713236164300017550 00000000000000PNG  IHDR szzsBIT|dtEXtSoftwarewww.inkscape.org< IDATXk}缷z7`0SBZR)TQ/J&REZEi|hJHTS]16kڻٝ흙=TjItt9z0 5k~(~?ǞHnul[O|#C>x#̟{"98\l[~Xؖ7->''5ۇ]}U>-YƯ#ͱ֎~xwҿs71G.D"3kc[slKѫM<=z窿)=nYzg@v:ϼ>KN5;_{ه^U{߽b@bC 55Bܝ 缥N* ZOF4J]1G T\svi.WO_9Ҿ?NXjn<8½^~߷z쿚=#~4;\exM?罁5/VŎP뇯8ݩ^\ @D w7o/}j^|4fc% Qre|9h4gd-Y^_7&Sbsx`65OI17ת!+ߪQ3{ B>44&}hlKz^o : ewb`(XR(g Yy|!)rdÄVjbzX;q:,Q?fq&'YCyZOPgNc ٧7V8 <;BsN6Ϡ[5VH3Ћc1f%Ui (;̙ԁ=qK).BGt}{{dx\¯zB^|[~yrpKHH_F^mTXֿ3DHxF:`!@Htέcd.0d`(IֈT"^jF#_#u<6[ 7 ;|tmR.RaqXhzcZf }SУV`a"Ĉo3}Hͽ7smrUI}}8؊:vjMtAW$V>!l1)7%L2?\ΚR$ȃ{ 1@); ʻ8xlkj04Y*T0aVüևwN>6CXR!1 |~flD;;{NG-!@_W8Rh QKh.)||"RXv?f~-Aa6Z+ a n2:ZvJ VDp,0BhibOP. ٚZ0'-]vRi8ؖD:t~@kIt{1K"$]e>Sơլcfg. xSBkŗΙc3|"0҉r͟і!r=/eAȵ;0`TosqEo=¢  ©~;پq5B a ʹL^|PЫxoÊhBقڲ[^q [V&hXi>^GY?eDmJq%2(B!Ȥ3%OeA{8:t42"ISR#mۉno;%W= 3;s)軬Zz[6AJ@=xE5آ@];H+mڊl]4A/`BZD6*_~0b$TbG۷y.%e0,0,, &SJQ%ƹˆHo+w+QiXgxibc@5)w2?={p]\^8LB jJHBɻ{m):Z)RyNXխ׭,Om6v5;8}v Rb"SGXE탙yhxޅS%y6K9zb!FW$LH,,S-2qu+3^<sYIL|%IWkȿP٪&UA\Y>{جMFyw/j9xJ/..f0t"!4o>|o3m0*.>[ē}Z 6U^l~ &M'mV ;Ӧ${ޗ3G AsA}Jp8Dh]av]ExC+fa'mj4Q9_$FWc;˂G{m].4 ~ڿjf xסfWbuuz0 F4eoUJ"A4xdOA% ,JKNC&=ʝ9<͕q#*JI{M%l tN8W"%/=ɲw:`?Vty0&jo7.4:'7^Cc/DR9+5uGּ+0 X 2ZB#~m7)-U:8AL:#KHܒ$8F" ]âbd}IENDB`searchmonkey-0.8.3/pixmaps/48x48/0000775000175000017500000000000013236161317013500 500000000000000searchmonkey-0.8.3/pixmaps/48x48/apps/0000775000175000017500000000000013236164300014436 500000000000000searchmonkey-0.8.3/pixmaps/48x48/apps/searchmonkey.png0000775000175000017500000001447413236164300017571 00000000000000PNG  IHDR00WsBIT|dtEXtSoftwarewww.inkscape.org<IDAThyeU?oe˽% * (dSжQTPqm[ѶemD{:p4ADDveک=|r揗Uh=#s#N~{RJƇ> wopکʝTS(|[أwaĿw?zw7ZTU4H+ZPS( }gOG?%7oNבla wW5׻U7:J)RLw{(SG|Hܨ{-wN|7j"3m2xO[~ޡ772HraZNkK"?Whf"=y4AR[s'hQmenhL7\g}'݁uODnl /*?yRggky_H|W}qެ_|HяJW>}K @E_{Roߔ{&3쐎̃5V|a*5_=fU5 5'oLяZCo6_&w7;:w!ukνGOF_X[;u;o8Wk6Gd걪}sC\eT2J0G-7MVkq[v~ӇOaERd z߫:JCݱ3>>}꧃R ;Opp͔Ko#wCkٕŗkw8t}x 6\zT}ݶȎk<@PD{<؍4J fGB!k/Q̗_>l ӕƙ\ʗ/{sMaT_,?nВ[/#ЦhKQ>\ VOU<+:~);.h?^,r)=@J8$u|+3/+큻px:zy!vJ;ĵTWBkm ڜm ޖkt%g=sneGyU?\Ӕai [#D E ^paK ]AZ'GU<Sٓ|ȝhf͎&oee# e=nĄt Ԑ";q2[uR>-xgvR?Wcjc~r&݊=;gNz0!'BȺKyAG؏֐> V[gS " 71eLUF޼#$Dʹ_}A>^ KOb/dm*R'-o4gX>![2Pڗ]#Bpv;Wִl^ɹGYv]q%^%ת9- /+5yضc7psH t[xveV SovqY9eҜo6G}9SA-:GL+usϝZp8:Ww_;zz5*ɐhf\uY_BzOmNA|Mr75+/_M.3ʖMb&SEc㭌 NNS0t0^2~KʙC^%H!BPpݬuv|UkĉGո(lBw}axK$V=QTܒb)yw(r jȤy_C.=}d 5W|s?D>g07_1ĮZ?yͱ9lF:MB:޹tZER^x!Ciϼ H<@Ե^֮DUT\%җ'9AU`9($JCzޒDC8(DWluQjx9>ҁY|*UYy p!~7oY"sqQjDXnoUeP*M Wiՙ`YRԛ.MتEP4 qz9-|\XC¯'xb!_amWCEJ?,lJ"3_سbk#&B!.'Bۨ| z8brJV#_,1>9*`Cq^_5j(-f.cb{MxTD:Mru4~tkEO6Z|*Cg@Pt Eћ-VPupr"O<,%fXa Rގksĵnj OCyob)q 'RxuPT=3MQ ?fPchfn5 dsy9r,ϽGNJS8a^:13/4#]DSUfyF,Ghf;kuQX0WQANB,\dPukZ, S{eV ,333G / jM ! a6ǎಋmf"T-́{ LeJlXU1=@R(=Z!(~= 'Y12ԗ°1*~6\z5bJHwMO) oYÞ% Nf4n޽cGs}m$cPR5FQ;I!3MgW.b~B ]8e&s#eP&Dsk,[ +qB d〉PtntsdEçzD(uߞ`W}QXGJ< |^sxvÓM2T%O%91_elR,&cwut+6RxOeݛ83`x`Ky|c~)I\f"SЩ $P. &lz}Y՟`YoY+sF0f a(t3HcJ~ -mzƓyQ{#s֝\rZU5&y9rn= kX(r)'0ŇZNKiR6Z0C0ݨ5TmR"!Dq_[:Pcwtcsa+M큼X4 GMa0qKDE'I5;|S5h3c?J^bXrBL,R!,C;\?YM 3:Q$D5ܺK`Md_B┝jxks~ U$N 닠(&TtUc[PKԜ*ٱ1L`kg\siV,bttP(n]H lN\! :'(QMe % 3@N ܺy }<M-EۘOg+L#nkL$~^~d2ƍi6؎Sc-NL,>)A7 \Oym{[tP*aۃ0,jsu:o @E< HJ堫*ZwaclbfÒvi?oPt?];ǖ-[H$J N6UZ*Ԛ6dz=su›HGRx6]IyQ !VJznSE_W](ASa`p%HDar*FX& |,v\*$"Ա[]&\BltIrįGqoJ?uםAw')/h%(:; iEB xXdTtuvЛb kWQԉ )ԈwDtP OP9^2ύHkxU`qgjtL6uٜ M2ڋUC(m%  I6Wb~q!]$QTA{浫o :h$&@,._{cƲϬrg{7R1WWB#aƒstEmN'i6 Y"?nD"UP_9)2BXȥ,|l?_]Dbcq@P-(2Y3L)Q.~d,.>HwDI"[c8l)VQȾ<$ \.xґtmyTu&tpf(PϓN O6%/c]xIzbo頴@,QJ ib?֜iܭtA3f4QEƱzz42rG*M|) 娘IjIZG6iS͌pQ.~H` FpoF"nsaoۋ/ɇm[ĊFt۳[ JH'I=%NKBYԐNhm$?2EqWz!ERb*nNSg -H"<:R,l ИQ;׺.n??B“.*U~z.yR ҆2RH%(* E Of0:Lܚ3if4t-"t<Ԁ vib$ &5*4Kҕ͔TNϤCw\&bkÑ:n:Zy2 Иnubu[(LZHx<i@H_ yԧk2\ZH[zґEU{ošut]Pj3꫟+Z֗kb~C3r5>Pi.4I9 G.+ҹQOWh7(XjvC3>T]#6WтG M+:_x_OW]*ϖmgj_Ռ v8y[rj6aۍ?N>Ҝ:rKml^ȨvU.ۜe"k?^]yϳ< ˟st~cgMټFE7Y5 R6Fu_umGo~|漍Ӏ@iWL=cA ğf.h_֑0G ic^Ž!sq ֨}xʯk[Boی/p9a?@\.:L)kb/d_՞kB.NQ{7=]{hפ`H͟mݲyY_]@oVv7ݿ?ַȄ{iSoOf4Kv~$Xߟ¿~: -w}v8=eOԜx\|caO6S/̍S~sb"ua2sJ:irw˰vcsJ4w)')U ǣR˒IDĢ0hh$EaQ7-J5# >AW3EUs]ޏvozױ|Z `ٟa;qDvsk?!'u@nTxZ{bsږUPz(;R˔@S$%;?]եRRx /LLi ua(^SE ŊVK%qԊ,K5LS]7"2vxַa6`61;#2Nޱngzy /<(v_wҮ}ȘI=@<?X׍$"҉');b"'^4@Ch#M3˱c:{;uDXg;k:-ԛyjqqU݋.4%Z\U)2/WA?mɶK!HgaDG^wˠRnURl-9Dc?+ΫO"MlO]N-=<Hxy |S~eO3j3$ [}vcֆ/nʐD)ʼn;:,8W˹ԏKݦoGZsvne {^GM$EClr n4RhE sŅ9f|rҪBT J0ƱTyT[C:A"qjӓ,#44I̪q;*3sV{IŸȐ,|nWqI}MO[O8Wv U7^pqz%nP_f @ݱ+cքEsId0w'K ^ |z5;CM|>WKwd^|a|߃\h Xͅ]F[& J-khdhdX;N=}cRpL/I$NH,9;/dS0t}Y<A4#m3瞻nclwjL{/c^eY*?Vht],4dT2c~lS<{,}Mͩ&^c1-Lfˣ>fCpk/7asLM!c!8Kؾ}RH:i+|!44HIݲv3>z BXz-1$po!Rm< hfiz_){)6|%ѱ& ~p1Eu.sil^u`ZWVe)kx-[OgP) {||JkU#5Zn9gͧZL'1гD)=Spm˺ewK1lLMS2ЮW2qxڅ+@Zߎ! ,OG)Qϡh7΋wjLNN.RL-XP쌲+F*<+a6lOҤ\LW ʣn9_]#W[;`A0p8LTf=Vbll=#%=8ϕ[رvt]CӴ}(>BJR*rDq5/OS(زe ㄽPĒZJH#vD"]bVJ]WgdH> kiWu q1`ۺu]xD*Mf&'B!{$4 {9gn/ը5,lmuǡް)PѤR6z ~4Z 4=uv~;w<퉓t"ڋ²=|ETVa I1%W>xюKf(h˄J<>BF\tL2$hOKZreY4, Ķ6cS7l]GAWJd,UV%26W?}}V| 5$ b%44l۪;x4)S*W(Mnj(%*CE,S5}mGxѯݚ Qj-++M~ethk /K(nF8ѩ*لiLS./Vh4[V²XE٤l27D &}smH$B6%-Z=A[hBjT*e1tP-}'eTJQӝQ7ʐ4dmg{L maSD_3 IDAT[2 >E4<lOkd%V~`4-JRH43]S5Z^=ϣTӰ hдXVz=\C 05E6!91[u]B!Rkp܌_یZ$"QRLشw_gQ亂$@jbFxU@q|g2X!p[VKj !6@ _lXi ~` &N.fZN]o4AoԱ>,ضEaK&TG5F(Kvb;2{M&T>@=q͗]+4} ($B.{dAH6ODR*HţuwJh { o2ÅRLM[!-Kć„*lٹھ*V2N@ Zꊩb09H$y2!4-kQJ1/ad/P!RJ3_]j$XEV^QըjE~yσy;%hR#Фd챺;:]bI\+ԏЂzZ?q&k.&2b'fHR1)%ZY,7A.|~AtKϺUKX,ŒVz׋ :P`T.n7&hN7N%mp`RE!l 1Wcr2'BJ# tT JLeL@WWkrqfBY(pN4l u_<Ҩ`f7hlBOI̔\VA>gbb$wnWG)Q)N"'G.TݛT$)ӥZZ`zv\:R>mqڲD B̘;1Mb@w xG%tQ-1v|K8v#EnY )< W"H!QR ?.q֘eLm6^:=E T&Mrm!"\aPXiy-l9b;G&g䬍]H2>z߳Qm4Mt|ItD &[M 6usJ wH]'b>(J(J<>{EM3i $󀱴P %8|x/cS+H$3t̖=<0m_Twwz6\/x'ƦЅtdHjԐ5L04!1Z $ @{J(A!֣U9egf9z(?э~bdv)Cʭs_q}َprMӄC!s8:]!)HJ}5Ǫ(m.3P=/0s4fW~FbS"Ln(Uu(7+! +kq%p\)@ zӣ=*E*2kO[[Qdz\e``X,ƺNyxF 8U Ѳ _hH<Ĉqv( ~ C:ċ^,ݪ^x-h~L"k6h6-lK1PnDB:R(D}ڢriv<_|]c- F8BsI{鸼mOoE.0w9JMj.(HT=Iqr)-Ml`}\kX['OɃL*ΙkH)΃yLVRFD =1W<^DA7oSrR.mիWca~|&fٺ ?roVfXyex \7g ro4e__0XoUТin榘 3SsEjG$1C&JA`t 5l1š:M=2]6𛁧۔Hs6lcUL92QFIS3<k҂-\4sSTزe \t:t&փѩ*jN7sp1 edd 6gJrd2ɖ-[Mr qTo/8)5P%^-d9fVK$++6KLƎ(G?.tM:;n eBs?XE|c {X~QHr_N1aUG)E6Mw5B)<|t5^Ap["Bww7=uNd+t]' f|>Ϟ={xGfiF>gaaUVDG=% s9i1ݳf&GiXur)9<nwEC4LGz8~4kP`5P_u&HƈD#L~{))=Qfo".("|sMbt$4Vq.}k5|@VDCHk4i*.VPQ>BH3۬sX,u.}=;vjz"dm__ Jw #c21ߵp_poʞ2Sk~cSVsYxމc^3deNK'm~U >IZLgG)0MFrLP#yDDAP  aޒ&djX`PRg@4Oar|Qd{dڡ@睆|{ﻏK.l66ݰp&sO"4A@sEA3lv]ћT+lٴ5#W݉'Kb_Xr0ZAɖ޻СCixGGG4 -΀/̊ MTK2W4皔)vN;_;Acκ@]}yraP ccķ%)>RG[>1z3/nf՟!un%ӻp.cպ)x~5Z+#OPdϡc+_MBuesOX$ RJVZ{6m?9B̳qb|g$J¸-_s}`+ch1s)8eO|C7\κ~1 TDEMOķ$ FXkP8%Go[@ LETs׭B[ ߱w6ۑ *ӳU(PxYl--m+ ,Dx$dpL200@(\.Nټy3aw~DBj64IW{ZYҌ"IGchR G+Tρgfql:vu",p\UAuc ~h5z@ihO~}kIכrL~c=m_&Է&!&^M;”i<\[ B%=bJZrD2N -gxqB+urdSsNYy^D"xnpp0\#Lc#yұY;ػXh Ljw =DZ#{эbd"O 9EXIBiDh{e`!s0q8W X-Ue"")UY0 AOj=0~^B])8E\bW"UZH)iK%F BBġ'F"_N%/ri_6S5n~zR#u]~6c0m吵#ՃR *p=<#=tNOc+ڐr~y>=ݤ9apPGgXQ^ˣ9进Ƙ0_$u00a@fМjjS?S%q} q{e(XBO_awRޢzBaޑBhVzKk.EU"?$Rx2NyvHk9^=y7`lZ~0E8"l [a$RLRZQVXfɬ!hF0spNJDx}qKG0tn_#]j(Fqk{_xD82YA2&W0G6 \cIS|O!F}gv_*zO )KS.siaFm1::,쬵OM)ݔ5Bi,maqyz.Nߴ#( ***c#LgjQ}Wu4{AOL6߼y.sMspOi9ݚK+h1 RQٱ~w41n`LT^-l~#9o$# 6ekvoҕ8;>wO .$  uUszA4SHUGZ [**JrBZC2Ä-eJ27= k ^6B7 sibTY:L}aƤრփY o\k̄TAܺKPN z c`3sO kQ;QcbL] Gl޿ {_6 +K#xgÀ)o6}9+Jv-ۡg@]vM;黀}Z $zwgx9܃R}aLaPTPrB+ĭxM/vJօnCP_܊Gmj*dO[GM!r8ѓcߚDc-tm ' \N#QWwA|c`_'kxȖD (v{Ҩ/ceyh0[CkHrm@:ZX#r8JM$6qIk_,}4v~Wc{'e܏z` +jS@mb h(sGSyR7 _^d%bL) Urn1Iz!qN#"L=;"teGy=HOXit)􃒫^G7?ͭNqEo ۘU@sqf ٬9 DLWwwo; B (Bhs]V|0:7*4^+S^Tx5NPUtWY"GI\Jgj,~"IBSY20jP=^Bj(S9x%h~th'Yz0d{]gVټw_O HkD88xɕ$Sc}l>JEFIDAT`8"hOΞ^['P캁M>sD'>KxWvx(j39DWVs ~PXebN!rY{ř/,=mįHCfPjТt@m~_J_ȻGFqm,uU6n!xTtv|Sۼf:j+4>azv?s#1E  A@vAYo45*"+ =ۛSlPE]6m0᙮MM?@X7cȡ mi= eYg跇)=yK-r'YYw#M~ly9mbL0fLY@*HGYW'8chq棔v2Of^e2N:FS2u1bT4͟igJqFKR=Pym3`ịVH{ cfӱ[f)\$0Ĝ a[yhOpӯh*,Wqwj -s,_0.>`i*/ D/1r˸@#Sg\"Lj]Ęu)^{ڇ{,_Z~߯2nLI)м|?;$-ҫy{cd_a\f~! |pk.|?ʠ5& m= M2!ri #'qU;z^¬ 0B4d,tTDw*;fA;ˌo-/ܪS_R[{&>VMr.-T@3$%~EmBza=zS>qv9\ڻLF3ή}xI b!GVQC cɱ񭌟$J$= ]-JvX~>q.zR~) ӝb  aHm)$v{d/*hmZHؐ?ʹDMO^-r(~U9^P̵ՓS9k)Ռ͗?tVjqf%1 n')ЀɱsMZ-B3?LSs Ԑ2c$xq"DQz{u=ji!ZHܦQMn)y9إ(PErмEhoਁp8' -WdphD/M՗['>E4^&b16_ƴ{ҕd8Sq*W)*%$W6_3wW BPyL}`/eqi ޼GiO2YAv3ֿgMn)h&I)㼑nEC@HSSxK*x[JtyܷߧjKUO _ (vb˭;I['5; Gk&J=S&$Dk_կ/œF1To"0|׋+pAXx=el&ɫӤoQ%}8L.Ln@<7wZtsd @YW ?8ɶ.J@$Vv)n]TF:uica s­8 8NPܣYoBQ3k\'Z2vxډ ƨy:YiGd4jr-B3QsޕwN {,~!#c7MDDX5ҫ=raT>&%Dg>D5Ww+v>񓳧ݤJB42uFo | vn꺏/.J?+i4l2zg;gE!x-$.OZ#dF4)!TS%8b Rzms( ԾuRm9_m_Vm~eqѸ[/ymdմ;}`C=aBSʦ%I?4N ?[EɷuP|m M=jf ;,Aq'vB$.K7-+u7v؅&Z,5n_pO7RE5ne[͍௤IENDB`searchmonkey-0.8.3/pixmaps/calendar.png0000664000175000017500000000207313236161317015102 00000000000000PNG  IHDRw=bKGD pHYs B(xtIMEߐIDATHǵk[WGWؕSƑk/L7"!-QkP0_R dj"l&D-cBj(ؕ"%K3]HU33w7w΅X<jeeKc-׷XzE<tz>Z@@|C7[q׀18@ծzP>:Wԓ'|;Aq Fl7hD/恃`Oa|Hӧ ژj mkݼ@4v,jI >#~>MoRBvx  iGϋ OAq4b;c5 v_6Fݗ(˪um1ABB.;;}2U ~bpce2?-$8uT->~vc ƘC!hq 9xnbooǏݻR.ҥK>}V,=""[yZ311gϘT*q`SVǶmW9К.'N`rrh4JWWxǏQJD8s LJZwK444a!͢nbKKKbvv[F1DL&IRsQ"DH$˗ ,..RTZ뤍@kH$H& sE1R)* .\`ttsQ(q*QKoskkk155R 㩟{ZZ˲VZ,M soF)E\ڵk={A~?d2677 D"ZkyS\pm4tRD(bzzݻG(bffiy###}1[[[bXDbhSQ,$Z{ eYN6|UeDnIENDB`searchmonkey-0.8.3/pixmaps/find.svg0000664000175000017500000013344313236161317014272 00000000000000 image/svg+xml searchmonkey-0.8.3/pixmaps/icon-archive.png0000664000175000017500000000145213236161317015700 00000000000000PNG  IHDRw=bKGD pHYs B(xtIMEd]IDATH핽E3ll 1 ydH0AFH戀w@ZĀd tW=]]3K$G_sOU}hxo>7wK TO>~ 7"au׫p;W.>p#B-aʢsslt?~[%0r9$!azL8$z9K;MA잵Н&cwup @]{+}U6jW(z9/=pJwo R)䜰XW!T X@P0M=H4Q )8dY {Բȧ1h1U"ր 9%Wɢ6JS!'SFrGk@D5dO,]mOY ,! %5PJAsU|תU0ZzV!X+HR <8m]q+aX@(-m4tbs`UbnevgDBHFPWm?M pԘw .w)e:MUjgRdX& T|cL ]RjZؗ(%j;QGq<K"u#&@,s6m/9R8D5qV3xN-ێ84x2_.aeKގG/ӎxIENDB`searchmonkey-0.8.3/pixmaps/icon-audio.png0000664000175000017500000000167613236161317015370 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME% =]KIDATH͕oTǿƱ'"rdA-ehg:+B#` LH o`f-oAzcihQ8n]ǩD/%z~|cڰa{6co t:D圯3d5-Zz^e!2z=doo|֯ȼ~nVˬ%˲P.iY!0`0Y~".NOOoIڜMDBB@J8!@$@? Ï4M+4E}?\a: ønL& $Ii\\\_{(J۹\0ZK$Xki6^P*>Y^^nu{Zk9+IR >,LM?NOCѠju]|G)R \.kH)R.Zc~[]]]XZZJN$0t3RyGd2jBUVPRb!7 X;9II[e$8)gQ_9V )hmO=u]TX_fb@<>{fCvmZKFB0} z3/>;!sSTOjl_a`߮'0fh Yk-nm)LNPmlr&# "iԩS@/cC$.HtҌbMyg'q榹n٤Q͠d0hSk-Od#ͥ tpq3yKA7&P|E6͍ym; FAD8Gf$έ:I V-kT4KW^9eUs8c0{ d8L#Y$DÙCkᤞQ[ TR劉[m,#$0;ЄH]GxGx4 iH<˨A `!"#K !zCVԓz)N0y;I壻GnCZ<}yO9s9xs[u .Ir㜣 ue^pׇ/L/Z[+bsέhêYIENDB`searchmonkey-0.8.3/pixmaps/icon-drawing.png0000664000175000017500000000154013236161317015710 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME(%^IDATHǽ]kv,+]kc;e MYGK7rQMBzю9 dl4dNRǦ/lKXvB8G::dчr\M&cyA< Ch<*jZ8c A`nfZ>\\\ R csAH:=ϻ?5=Jr$`֌!AM2$Nwb,[-JS84)-/#@kM*y3ৡcK)ql6KvR}w |ߧ^x[qϣiZq,CiuCE Y)r9o{w`b_3Sy["#r,,,˭e?hV 0:7 v> n$AoE J(lBZ(d )|^7l_!D)RDX2 R_Mr+hFJ8$KKKX>9r߸߶X^D6Jp1DQ"GkW9)s8ɡ`{ŭw[uX Vs/wD6)r;sjluhn5RJDTR3Vy̰FRHk6Dzc lBfSB@P8yeӳbWd}*Ҋ${{OCωC ~BBIENDB`searchmonkey-0.8.3/pixmaps/icon-font.png0000664000175000017500000000144513236161317015227 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME ARIDATHǽU=OP=L* $*$KH߀߀:[15B:# 2Diہ )6Vz7{Z ږexѨ0DyccK]evO˲fWD(̈bWg7̌677 A"LӜNX5M+ vwwyϞώay]_?Bi^I Cw^CEߑ5',IENDB`searchmonkey-0.8.3/pixmaps/icon-h.png0000664000175000017500000000164413236161317014511 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME"1IDATHǽo#U=،&w%Dz-P(HAIAhS $(@lH)L_37]:^S q={QhAT(8Megp8a>!"Drd^"";/(j >|ѯgggMfq9I`EkMZ%MS4 C*NFc Ƙ8Q9WTjR>c<lFVc%Ϟsfn?l,PWvyZ8N0f[Rށ֚4MnTs,-zR8Fl9Wh/}k)Z+"sR_$ɷoak-ZƾZ{/^S d7ݤYP&{`{Z+;e*", 89G>l2Q jj3ȓw]\ueC<5ɤq\7((`\!QAaZz/]5ϼ`gSΥ*Z$ Etg*N v978qc88::BZCJc0Ro2۴1 `۶ xrrRв,A`H4"!t:_sncTzTWDDyA!ӷNOtw٦MW^"RJ`:mX/ [oI]IENDB`searchmonkey-0.8.3/pixmaps/icon-image.png0000664000175000017500000000211413236161317015335 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME0&+$IDATHǥ[he3f7&bckbjAQJAX|EATZĖdcKl6I/ӦYfwvn>؄mdÁ9p?*aEQٗdWl6ttt=7 e,@6S=.4U%H Gp\Y4 E.Vhd# h6b+1Me8Bi,,0 RT%`.xu,!4*<IPY$ik ȎmȚؔ`|Esu%ⳡaz\T4 !uݥ3j,.40+BK2H R٨GũkضMRq}d ne֞G[Xs (s1hjN˵ػp"sv Ufe(\E>JqG.-{^W=c УwKߚ,Zd? )ŕ."_EKW})vQT@ɝx*e#g.UP+ґ&o{-cZ(}–;׶U̳;^ANl期&|?5-+YTmۺЉlϝe|/ZRHV"Ds}等j|^<[ZK˾o.P<x`فEIENDB`searchmonkey-0.8.3/pixmaps/icon-java.png0000664000175000017500000000155513236161317015204 00000000000000PNG  IHDRw=bKGD pHYs B(xtIMEbIDATHǽ=o#Uϗqf9I*(%.WJ *~@JEA6 )D&3s~P86#'vx[\(||6N _8axc Y$I˓b5֮_Rc6˚%DNӱ}EE0Zk6EFm4Qt\w8ΏzB~Z/| Fw~*loow9L.hppp@TUR{>O:0`6AJky>ʲd2 DFQc^mc64MJDY1qI0!GGGb¾$L&ۯFXEX6G\^^rzzzYZ9/bD0"DzJ:L>hQYm8<e)iRB,sHquַf|t.r<m]Jd/ZKp{{MC 9zIENDB`searchmonkey-0.8.3/pixmaps/icon-odb.png0000664000175000017500000000206013236161317015017 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME4~IDATHǥ;lUٝ<8eWR() $@HH Ey@Bf=s9bk'^[F9Hos{1s̉6qԀbǎnz PO}Gaa[AW{ձ^`nZz˪/ x㡴&@5e#ϯ PUvo~{ϝRV=**aR*6Tϰ0&ȹ+czj)f<_R Rw3Hqis[l m E1ŝyީ|gb-8к3c3E~P;wiTf*ą'N^i@RL`+":&<4.嫧{}-@rց~r?[ r82 f7緹sa^]?ME${Iz_X hñadb K=<0=.3=I&AZRbBq;|7g`gțfg۞-tt?fh+CWtaAzذA DxߩVk$~fl6$W6L!Y!wG+Z_A4f|q46YG|7&YpX(vy`;a1CUPIiyFT˟^{R{bG|P]+wUmD\&k0Yvr=|wɩhjhP7ҍi`"hJAb$NYd}谭4:}p!aR"Q$u{0^?Ǎ7j_K %y,+lyKTi!ΡZKzȎMMV}ݦεhCAR~8jCAՒ? R%ҙ[h&kxrx<9h!>XPI~gGgIENDB`searchmonkey-0.8.3/pixmaps/icon-odg.png0000664000175000017500000000176313236161317015035 00000000000000PNG  IHDRw=bKGD pHYs B(xtIMEآIDATHǥMh\e33L&mjkjhRB6Vhk6ntWAi.\* PXۤ "5$L;?!¹{߹Ÿ4geX>n+}$ڵKzkjN|7Da*tdǐ޽j MwۿxY`* ےl~p8CkԹc^V7g)6K4]}^9e*˾kꉺ*H1Uu݌Ft -u~˿ʫj= *Xac9#!۝L~\D^W3Xb#>ztdr.S/n\Z&wCFFux(bLd[[[}p mÙ:P Xv?ױQBcn\Cxx3jhSYO; 3ϑ|mU 5re}v#ˋa/oru=,B>دcPTELѦleOw2$=".=@Wn/7&EAMU-5|?M-Ы(RumcdXeP Gv+%C E4&/1\Ļo@u DK&)heW9EmڌP`p>.\Hsʇx| 0^+tuA.ZIo!hsADɲi旿|Ъ[QfӁQ6gP*!78w:^A(;CmZU LEnvFK\4!lx]F.kUa /[ s'9K|%eAIENDB`searchmonkey-0.8.3/pixmaps/icon-odp.png0000664000175000017500000000202413236161317015035 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME6'#vIDATHǥ[Le3{aYh(ZMKR%m cD- MH5X}1}3}ƴ_ ^VYmJ-J.LJY۲A9ɗɜ9=qN Jy8ޟg:nAVL]ky`FUwUVTx>,|KZ_JIDeG?x|ưO}ԓ%s@)-D%L&Ϡ>=WŞxENo]UZDI&T58C$$R1bTFSZPZ6ZPl @D<zTt.*R}-JT`1b֏y4&7vs r6 }nE+i:Do$:#c/>RUzR-x1L1ZSl&?Fnheq.6c*zױld};@Dp]-.`}buY׆i#(%͢ =0`M5e7'b#Dc,J[J@j~X ǟ: F~QU~1(eJW萢X_ ȫi}:L6BtƬ̀ Dkqسχ y&.c<"RnA(DH8 !E{tڗaoE6PR\"­Anѱ6>ܳJEyɫ<%li\8pn$"i2 8|V(LEfehdYFGGq]&&&T*E" u@R"yky34('l6c\SW(۱ JI~#MN=ӎ#, CBȕIENDB`searchmonkey-0.8.3/pixmaps/icon-ods.png0000664000175000017500000000175313236161317015050 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME 3%4xIDATHǥOU3t 4f X! hl6iD7cRƏDLMM\BҤR`0BmBfx9 $79'G).y|: @}ݻ ?ڟu;|u-oW+ۋǿٛ"򓵜ֵ&\Q FC( " 5ݡWc+β?M @h4 )D_υ#4B -!Ykn:ADQU[h4JӮt4;R/+U&ĸ"Ѭ1:f0cB~GHyѢxvDc;,\N-> ^GH:Dcrb1lKr.1jkki ] i 6giBB'~'TF&$!-m=p kquun-P~T- :]ϹC!:btHVLNفY7]-ݼs܃5=q}joF{X{P1B|@G95VOm=sf҂JKD#/),MNx<#& jMMx0k]!IENDB`searchmonkey-0.8.3/pixmaps/icon-odt.png0000664000175000017500000000165613236161317015053 00000000000000PNG  IHDRw=bKGD pHYs B(xtIMEN;IDATHǥKh\ezs'3>4Kfa..()XZEkZVv!ik4"AFR(HIE#|>7f8q,0~d lӻCa*xۼT3˻Xҟ]e ["vl"H⁨Lvoō哶-XW@!5уgH3{䎟JIcoPQ* X ;6u`Tfςs_Ztmu#!D)qQ H]&`R}.-H(P(f" R16Ihq ?9r"Wq++#j6XD1} A# ֒mmmx{wvµ/F$ T~ǭ1p>& Ȉ@ʇk\@ S`L~pӷ$Txmzu0"a F$aW6u]1B\um Rũ|d)dd~M3/=[N_-ў IENDB`searchmonkey-0.8.3/pixmaps/icon-pdf.png0000664000175000017500000000234713236161317015034 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME(tIDATHǽ[U{;sf攥cj:y 4#"+, | B7-{ *H3H%Y"f:Ό͜|q`kqvlmɫJkPj'Iק+zml-[ml ǟ\s;_ FcւK!LachG05pAn7Q =ng E*5"Sv8l 4ZkR|Y;?ק:oʖ(1YkG AlSy>/OF@Ke$]G0?cn4BNCp% k_zIENDB`searchmonkey-0.8.3/pixmaps/icon-ppt.png0000664000175000017500000000222013236161317015054 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME7%cIDATHǵ͋E虝uwf'cWE("A!`@G^_xTOg{ D+…) oP4ڕBBNҬ&R{Z Fp!jc{AzxPs#%`;u^(|vՇ78zEtcUk`gd RѪĔxhcAv6,b@ _&3Bʠ "2Gyع2 xd0}t6EŊ9^[\bFE),8:1D9#ݦdJ(4f@!)"F-x(SB__3V1񶅘 Iu~uRJXm 1<\15bJ-/_bŬx,Pe5 5IizSKoernLl!1C<5xLH )Z+Ev/&f9伧I!fBJxTBeQ1aQ8njn~@ !) R q b)/hh[Y'wpzŤfLao0~'BP{XIENDB`searchmonkey-0.8.3/pixmaps/icon-spreadsheet.png0000664000175000017500000000147113236161317016567 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME, "IDATHǽnI8`k8@XdAEذ+3kDp4E,b mHfvUuY4m;GJ:s#e|E^ǛOCRTE "DQ\Apgg'у9P*+,..jWVW_Vr9ދhөp7DbB $ qoJ{s{{;H;tk7!.CaXo^?E?Y__}9pg"EugӋAKmUXZZ9բyl5]g{~b眝J0Y @)ܷ}gߜxGMXkED8>EMHQ72J)18爢h0"T9PPL|*BXkʹk*"$ii5gNr ItM(X(\`y*yyVoy!K&d!籑;$3$ t&YԜjQEŊ"+XrnΚ^ì ̴H TDưZ0ۢa:N/ yI6IK ^o,N82X M2.N EjA槸,l]u?S"2,o{eQS .k;+mFNasIENDB`searchmonkey-0.8.3/pixmaps/icon-text-generic.png0000664000175000017500000000135213236161317016654 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME 2{1wIDATHǽOn0ƿO<(hFLOs.XrX +jHP6~c:rIR 'Y#=˥Lct۶yunilmNypppQDDTdf(R B=c؍ km_YV+,A޻DJ)XkeY,Ql,7Զ( EshG4 꺆ι3Fmc !BE?bw40ғJI)!eYTIigJD407BQTRRiAD8::$493sXNǬDu]ig(=MJMNeIc2!y#f3Hd8"{Q.DӴ}$u]>Lb"7gՑnjIΦe\]]h?/X"IENDB`searchmonkey-0.8.3/pixmaps/icon-unknown.png0000664000175000017500000000130213236161317015750 00000000000000PNG  IHDRw=bKGD pHYs B(xtIMEOIDATHǽUAn@}c xP a H=.{G=@ ]d,`tXMI>ixbc'@)oguzoi$m{aY)|߇R ///m d!\@N9(/k_шePRJd]!c s\0C<H)#:\a@Jҟ>%P;J&|>r!su4MBH;=b;J%j5l6<==Nsr " >9G݆ ,f3c}hj!^1`{LӄR RAB4M;w{VZ0t:Jj)e$2`?}ibXV<rF 0a<Z::#k*84quuz_ N(uQ,3cg']eY'Ed"82M-navue q0oCβiR Ը7T|>\9AaHR dRX,:%IENDB`searchmonkey-0.8.3/pixmaps/icon-video.png0000664000175000017500000000207513236161317015367 00000000000000PNG  IHDRw=bKGD pHYs B(xtIMEm GIDATHǽMhTWLaXF%P(ٔ%1Dd]1\\bdaB(.Z"R̘ysx4{O]=={G_``DQ iP|ر1ή.^fFf9 `fb@c1]-.~iz|Bcdbbpp \2dpý--_,--2$ Qgp{Á6:ȵ➚%RU&&~S,/o?p#mz<@wk׮afpl_#Dd02X\2tvGk{{5KCD4IА$`"18U4*b Zt$5PūJΥE!6YpuN8IH,$XXT"ɚLr !>jcccXĒ2mJMQ>b1CP ϣ1ZmLMMqITBAII$0tttK:FGGx-xw vm5?fkk B]oLOs]~6>,ݮ;2PÙ6u GaD)222;$pݮQb牒y&gΜDI(IpPʳI/"#.]q??K *KKK,//#R Xlwg_1QGwQi%av^Xܻwyr"}6ΝCEg><(IEdzz(4CCCDenn9PΝ;\p{kDΞ=˭[PESNpT fggeO=_,on k|0Zoe@qs \),IENDB`searchmonkey-0.8.3/pixmaps/icon-word-processor.png0000664000175000017500000000150213236161317017243 00000000000000PNG  IHDRw=bKGD pHYs B(xtIMEOpkIDATHǽnFƿ.Ɉf,6\ k{k% z=5  09Y39-rĂ8|3"ėzr${u Qe+ޞ5TmKÙl>1u(Ƙ@ 3sp/1ƃO~븮7| #T#"1( hT:Teyftqq1H@kXk!"`fc2@Uq{{bx]DCh+Z/V,1'''"Y"@D~{=Uu+˰E]ׁ{/Ev ]CrTDk-5 ZP :c4M=Qi|[ňlm,sѷF8 d*1bZa^( hw`>"27}mUrD۶(aEs0 pos.}h3ȍFCZCwEDh6δX f32`fxGݝvۻ.Jk`'#0VU"b14ud=Ⱥ4&frD\~!7Xp'%ҍ =g@DyhGжA4x,jx{τ$mNǏ;NHIENDB`searchmonkey-0.8.3/pixmaps/icon-xls.png0000664000175000017500000000236213236161317015066 00000000000000PNG  IHDRw=bKGD pHYs B(xtIME%3XC&JIDATHǵMo]I>/۱a; A (hˆH,@ʊ?6Y !!bǂ%QBn868sO骚=3͎ZRz_)ݟ~ϝ:+fٱC[[Wt/,t0Kgd9{f*.eKsÍ7~?}ڵUjxοd9`<}/o޼FQ}ğ:t0$gVVVX?V?onnRUP$K0'o!)\Ͽz߁˯@UM5TOM1^~ȝ!ۇvu_JF8xώ|!#&d<#RjKg*D2Y3̮[{m " 7sw˭?S.c{wР5EΚUT5W'[Ե۟!*w"0&tx^yS%J DMMQ_}K߽`mmsol:e0Xs aCvqfdR,wsW~2\&HIj^wr&DUtQ)94nb!MJ'EAաڡW⋎[8152AL#uC? NfS2-E;O v&쀺ln~d2amm,g(xW&Ä]]8' G u9mFTG|G [[[g8 Nb&Si#r6)9 |"6ov,)l)4U5ikVٔvy9ųsvʕ?&=޹OQxP}4s"5~z=$ eIr(,hsW'6'M 9Zzdݳ%)fʢAo 5a2;& (|IYjf6ʒΠJ8#=΋r(wJFҼPTd"An){G.($ ϙ( bJN3Tꌔœx_wǃ)s_ʤRGON_z ?UIENDB`searchmonkey-0.8.3/pixmaps/logo-5.odg0000664000175000017500000026055713236161317014435 00000000000000PKz%L.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKz%LQ2f5f5Thumbnails/thumbnail.pngPNG  IHDRhYQPLTE? 74 ,++X on!/Mp`9qtN5H> `=w=*TFLN-Gz9pJjM,i|5YYYCiFEmQCwGFyWUoUVyDVwSCmkElwGvgIsx_`bQ}iT{ye{F{fMr~Fjjj K'V2_-`8e2fB:A&'/+3;A;@GB'k.h6c?q-v6t(~1RQ\vLOgJd\fGg[yDs_ekqVxoB=A[{aH6/d@%)_ _Ej}| k5bg<}p;wh>Zg  lmZO G&Y)aTov e(@ğV2|hz̀,>ӧ߮W}+`,Y_fX_~ik3w0s oTKD XO肟&$;MAD??xXZ6]Uٶ_?K}6EؗD?|ů X~N6Z'm#wPߑaƷ~$EOШ_ H6MWЧ2 O5~Nz;T~V\OoӡiPK׀W qOE:1)|mKơ?%IH@F +ڛgμoFzz}oc~گ\Y'6o~|f3v)ozӻ!&ڹkN# ; m}]jǺk3v;w=3i)o=+@N1FO~įV~ů;ua-/y%QKt}zN߽a{J;_}>WYiNk5N.'+=9w=)k7ׄ>c<Ǜߣ9N W}gFNz?5 ;t4xçǿGP{Q<p7Dһ#c6a⟋?9#+ॏ9 앏  TtgY"KK$R^?-| { RBQlc\ӬYFƯsr^//gow0%Sxr~rOߺ)9@fY`%񕟚|\\+W#7:1 y_;͍<Tw>" YCD/doqb>c$1q`W 'ܛ>h ۿemIl%"y.%g<`1YT}WN@!Gnk 7پ W {[ofٲeC}Gl(s9r5ag SʣOê?#N LXw?I>-0'@DzoǗ>c./2x%`Yc1 =L̽0<9HE)T1;+}:2׎C["Klïe8G\1a\` 7 QU ҿ;'.E#3[oy'Od m=1nd)`}J_ٟ8/i~V # 2Wi.ϷXcy;&00G `q]FQwx@ 2+y _=[|>M]<8_qnSL@Sv?t~Y`rbd 97~R]AF(Wn|Gf/|rGV6l}qhذox<[4*û2*?ysk\XA[W7?~ ի?~Qz;/~k@;\ ;w}>G޻0G{]w)𧧀!_u_V?'C}4`c>"Oig:#'qؒp% x@*4oĉ‡7&CNhGq;Eut>誕Բת?Ef(wt]rC;ԍx 0iDՀOm:@T3[v7E:6#N-T;J~\U}" I_{51-iYH;TǻS&<u4S,P HnZG#Ntn!į^OC H?%S}NN?54+a_4ҭ DTMԪм`~qSd.9)F˜bK䓉5dU;tS%뻕 !P+ѢG{RtϦ>ESa!&y6 H-/D7BI4 jۯE^kaf،V9dE~2:isв]kW… ̀6oނ ?J/ _B$wKG2S"R d=&HjA]TjvZe{~q˲ؖ3o0 %n|%2tS?G ~tO.yE^)o'5O,o w޼۷oö}{k{ J_(KtDFgxak }ݒU 򶲹]ol}I]oA',8Cmж|nZx)O ~.%â1Y|V=c5ooߑ@vwPSnh? `rrrlr#256'ha otLJ YO5NJ3緶o?)(a{{ h$j?I"H Xط:/͝ei#HD\\,,۷7svöm3|Qou‡ EviV1W ׷h _-|Cu\I0T$mC] #Å_0 +*W@[r=^+n+SXYWXQYbf%Vl]2Bym[T[X ȯzXV b6L{ H_(M+={6&@1͚5wn"G s Wi׷+o' o=;ٹ{ {";}^ VҀL煨|/9|^+,Y˖]g?[%UЄ*h,V3NV m8cU. T?`W;N^:ɬw-Z՞?r*ÉD=E? P:`G}Yn㣏5V AQX7OEovys"g HP}CcN;mvd 0#w{ܡ`OPVT%?+o'e DXޖ4~Kq! $ >> 0&jb+/Ƌ~yi1w/*R=2ZkD3 ڟײeOɍguvl<=|X``ke g @F(U0!zh9z|q-ǶBx| nytB6f E۶li.cCg/`;{c=ްmnj-؊fdܞP6CɡZNu|'cXR[NbOBK\5Rɾ yKsQAQQQ~ksІ!>z;6u lҒ?U\eVmr{(`lW#X/{sTV18MA~unߤz@"^| `kĆ$dWb!Qͭ2ЀefYn! />b> hSzNgYcՁ 9n%_X۝PhKAQGlڼlhhdWW_W__o߫:hZ\ۋ Z P0e`XM^%&9+:pNo49r054Ǒ5#<"4:{tNvT}wUC<m/.ƼbKAKs~DG<P0X 1 G/6Axg3ϖ ^قz*;=>U͗"~, 1)=o$K`K~!yE[AG{NUWËC-ۊ[ہ-3 TEU0S5Ph'x!د_l!)qLl"H~ &B%T,fPpTԀ\)ʶ>@T!  ~rt`֛ ͡=O dً@5+ KK Fn +*ʖj }|@ 15?10)+ Ys3緓oi^v↎WG;Nvvh'yaPYe^/=;`f=|B6"0KلeWMs9vHXkuŒj# j9 C^Z8J ?|vl頗( Z[ o4w7{)@0?o>fnb#ysPM`q,Vo067$  %? \(-^JìPwOʍ^ͦN"q%&OXiJ悂ovAh f^ Kƀ)uLBMr_Dp4h JMl:!Rk-:@ aPw;9{Xo2-.a_}jN?$&Zc蝕uRYuH4^1\;/iN 9<,7"}_xo` ܀|E3]Y^'p-<jT Sة4O/6H>9rU~΅ H& ]b9sF~>ؔ S ȇTAs,eQ0 G?^~ Cc&%Ƈt`''w AZ{~!.c @ 3# #ǀÓt{<< DPߢnmi  BȄżɕ5Ì <Zn?p'|{ ā*`0Hu #^TU5B!g97\ v#_EZ{+{%UIJ ߓWUre@(2ob̐7TD<j1g`xZ1 ]#0]ʜ $G;⇯r< ֛,&sP9P0=O>u?p: . aO朿+ dng.~$JP>.\ڤDD,RF AfFO<zY?^".חVD0  %7-7.Rۍ%%XsYņ>_Up6MTb~ @,40(|8 `y,&p)ʧ*s*UŀnE8Bo_ s0ЗqUE[D&0y(8DÃ]~'"*Gmu!.;`u3ϟoy{n, ]]u 1IG;gяIߵsak[UQ񳴇 ) Pы_iT$2!!BA̫?#??M.(~0<򡂂?,\ݭ$]xя tc_VإUP_0>wB)0$-L@f<f3T38bу:((VBU6 @i {ݻyx*7 =) FQZF6uYQbCPP M>&w y<$ K!_UevAPD  ~m 87J N>Peq|nuL=~vsAvF x~vSփ'@UjOMɦ(@Xry]q4 7S͗Uh6z$P3޻s#@U'$GA֨(5[zԍ>NظLnf20Jg J&12# !c;q,ze=N7S(e[#DMu X5lh7MD0>cz>c7]Xܠ5ӬbX[O. bPb/%,Ju%I.|o$לHԛ:U3FB|B/pC,jwnu9دa q]Jr.qګE8Ҩ@~_ˈ'LL`d0 0Ln\@!8]UnoBLt@-i(مoa]=f^Ȍ%9#xg-X S'Y{QAFG}C4/e@7dAP K8V :D}4;>*]f -.R9L? @=޼+uԁ Qe3[SS&o*855զtA ZkxQ@hxD6K&+fty(nKtk¯>Gi#M[Skr&d R1`ԫF`nb jn9WLI"FS7w ΃",v@ ^ K.,k5֧_Cf=|iSl/P @sgp ?  Υ^FBsٿkH2iwn m. @Kk oO]0bQc;z9xUGtiE7j|BX<گ2;  U[Oqdm:g;fd) ?~ X#Q,oz;rnUX Rh?mIvpb+__߶Dl{n<p=}d2c ћR۸ro_ ʗ]ֵI 4'btB<|'kQs $2T(_nM.]ڷՖ:?cp2b6.QcU9Ϩ>anP؝0@%bx(vR\f1UTՑNuO1@PS /90 vtx&.<8p(æKTv_K] C))ĊEۘ", >ÏwMwe;?sFy^g!7 A.b.Uknyg⏿~4t{Si&;xG-ylj|oU);l?[ Ձ~@v~a} -啝5l}kX Bg~Fxf 4[[ ppz"GԲ,5v5bQ)[>)Lt3?w* 묯r:><R!tb]'? =Qy,rt5ӂ$gE'lD a ?jpFi/ł4bE^\%aB ?g=+\A }Z1|)*)WUvz9xL5~8'*@[ƅvE!@"Fz@<[VրpWv%tXѠ6{=[ӽPQFCvGx:Ɉ͐bG\ `$X'XZQ aZpN2Q:j~_xrr`m2x į] t;_Āe**I=⌧ J6RV_YC}pCG 5N(zp{'cdZXEXC%:/v^ ` ?/^k+nѿ =Sy!4 0~5G~H)Saeà@SdFpL`6ŚOG+hZo(HpX)~4~~GFS^~ps=#gN5ș3<9̈q鑷GzN9}T<am"~HOpOOi95|z>׆\u+=N9u;O>uZmçO OÅz+V">,1 O7 x>:πqڀ^dgtMLpI/I |:?OeS \Ӯ+oL^s c(F# 3IO]5>700dgr`1Tɿote3099zb&5!J35{N[jH2i&V&4v(ԇ]%I>+?r*Kjpdzشʟd`??aď FrnL_<KNC1<z1Xr |PCa>8 'SHl.AIjK v,00F:mlrbBl @IR ? ?,=)l?81jLrΟ809i W7IENDB`PKz%Lmeta.xmlQo0+W TôNT[Dl76MIhʣs|}ߟ{% <.bB A9av oA* iITe!j!r9KȒ&h9B)/k[aAJ!β eµ(5 3;&5.#ᴲ)XjRУlj"i=Ӧ#Sմ^~H}Ԍe땭W`5mvy r9= eC^>> w8%xC0 2mE(YK7; $,#\9v>봫UoQ=J~]>k!}57e'%J<Q »!9MI-}oN-Ptf~xy89\XA=cav:i E9\5^_PKiJ).PKz%L settings.xmlZ[s8}_a3!r$t54@Kx%J2 )Bm<s>pqMύ6No=M&F9lAT&R5g;ۄiEsEt-u. []YLo3)\*q4fˑPP@#|-OEY~۟1*ZwX ,1Mk`r,n*c\catw^:=}XoB$oaޒX"GxP9Fk$vO =&GbnbsS.]uS'/37@^G =udr"kDCx:->1.O:Mb m.^ 7\ sMʙ9r\rCw{;wI]X_PKY&PKz%Lsy5Pictures/100002010000010F000001188EDC8C6015328842.pngPNG  IHDRBsbKGD pHYs+tIME9&K IDATxwe̜޶&tC HW@@TPl(vzZϊ\*(*&5@( !!uS6>gfs&·aOv̙yy>[8p8p8p8p8p8p8p8p8p8p8p8p8p8p4Lb}m&>E<Ɲi7xjhGyp˩^Ӳ_UTiWiOĢ#9|D`j=ޖ=jE(&:-돽ZT~RgWOt^̔ O>ÏiiWcq~as40Y7f5{~N8ƃnꮲsir1 ~~'d:R=+ð9\6w8vljCOC8j8M=+ٓT2}{/z\Y{0qNj!ǫĭ#m_Mlڻr t,Xw~{>:p`VL<^&d٪Nۼ3ԊT5wi%lyWoM-S̘]A먾խI"urG|z4oӮЏ>ۮr!7:b{Q-!/m(̥ 1S&H%]͕M~?Ò87tTi!*Q} M{6o?ҕc8 Lä-hU.PJGLH X׭Y:#~|jkgِ67n^ *]#+LIJ$ɡV,GuS{/.ir& %-ltβvZ!7>z~)MI5`I[^X$B ńɑ@KU^b{UUQqJ%ZE|k-Ķwm1ӹu߶y,;!lyca"9д'ZFHCKA:LjrZőo~\JM\PG7أc5Pbm$9㍅[}[gY "AȐڗ@1 `ZuC/rm>Z0Qht>< |㴖y.R8vP:KiR-/}|~ȟ3u^<_,i;~LL B`k5^F-wonX?|nMi{u=9g3džjõcՓѱt*NM@(2&+*jjꚻjzohngOm !2 `[U#ꁖwϘQ;}#-bLk5t"Sn8JT\;Ə]7-CwcՄ#!j۞_¦'tl~][:ci<Ⱦg^= ׼qg0>}Yn\,9~]eu߻]Ͻ')]ICIwxv}K(?w>8i͏k8Қsᜑl'IK@1W{V}eׯgÝcs3%1մkKD׏xTsh7]k~%gsWmy_,˕# BW.kT6"(& #:4TEa^[δCEe#5O&>^r,C'=9HzrxoY-&U-n/Wgyv=`EϽwknmK6w&3ISkNVkFGh]Wg00S&OOMzW~_j^qeYIGBjppXlz~ٲf۲/vһ~SU @#|yEu4V,hs}Ib>c=HL _PLB3Թ@??ޫ sHg<>^v/}ݮ'NlYi<1 5e@Z^h)EnwG+]-?ܶ?._y*seWft-eO}[uOΟ()bv$(%ZY}Q)FE|d?yCy$<7Xg"^?EwTLV5T]Ϯ̯?вRsqR/1L x'Uf =2=i]4Jy@CCeC3?wwyST"'I2*c_m / ɎfHmqQ}nUb!jzbʵ{8tջ|W_i]퟿s,wǑy_ ]:w"X ~,'tn]RI)ޢ1{F#v4>ODI`p:,3kXiS"46;vFc-z٬yi:!uu-#f*Ki(>όH JH~?d 7I$^pڂ-q׫Tw[W79Ao0 gIK}㏮[i]R|) Ogp_yڝ~cݪ3o|e' ġi*o;h}Ή␦8J9DZDҵ,ݾWû=.^S`܃9J,)%V=jW ؿ}n,=IwSpÿ؍H5vn"/i>:'pT;r>`n?c,˄k;ŲiIPAf?:PeWsMVD(;o9EŞ5>*NFAo%7HOӣi56fAO8j+#|o|e`Z:݈#?_4u?g mbA;q"$\Fal4el65Vv)ZvNӫۢ3NL+[Yj}[GyY3U]] @[#͖+(s? PO[ad|}U9d|]D4hVT,`A{ kX(VE`u;eLt~H˶ֽvs'O S W][7|tյs)/_73 Z)* ̗]Eq|# xx]n%1 =G]@ay<$Ғ>OZVhcMCxX Zh&5Rf[թu'?lq0 aL޲s޳tORA?fN* qٹ'q?ceVtKDžO-̈́3A1f2x1x|X&_mD 7r$b/7{2YngӇ7Id,- O*5"ǖ(,vLdvNY({Q3%.a/qS]Y=Z1-2uﬧqO]ϮjΗ9ʣwowU,O3cip4ȂVME(R",]݁,-^x(!RQ=L T2(+*[Z3e b9HQHerd mO1R* N=^pr}?2cdxljvì]~CJ= & +=s?ԓWz㕣JGyYFVs]/d^XG䘲#MUL').`zS] v\iCe5**`D2a'-1bR!v C 2!By~fYDuM#>` iٳB ,2Le"ix3BUe}nz2n $P!xo%W5lH~-;I[\X'^)Jm7=ˁ9qׅo?1rM[^SX]ԽկxqWZ;^ּmb {&=92EK &E@0y,^ֶ45i/,d}{ѱk3c#Ex 8~^R~OBmC>oxTTiē!Jml D0)3kMښX2Cq͠P$ʨLוՎثahlr|$SYHs(?B_đGp5oDyp_O֯MRlxSwDGC.)>Mlp!ƘAl BN9,:M=d8a4%mnVjJVID#fq!M2("+DaBIɢ2z,[e+Vܯ|^e+NfUޱ'Kt& M%k XGܕv|B ;x@?̎ЌXz{]^t"4> ~CDഠm=1::.ukN|`[0}3`ևO9?27Gh'˲G.9@;~,B~iZu>w2*1JfO3M1?r*7&lN}Ñ?dsj\yK9u.2 Y.͍ L1!=o)mѵaRbLa7^2(n.Y',/ 7 п'whm ʅ~_Ts)}wU)_Tn>$y|W?ljf!7 z׾P}n|:J?m϶ ŭ0tK}k.ٱe`W-?n̂XJX`xwLkU8&cXlϰ?A<]HZ~?`8$Da&''V@6N#W\+9;rdfQc0`ZP(.T_HZX6;KZh TL4.okw2<c o{dckG>uf}۞/BЋ6kdYk >7[nyw^b=}_^oyֵ}tQvB9.M1t VPyÝ\A$JʸR;uyE_!~m]QtvfΜɴixc)qDf1a OUm?!Nb2Bj(X =;7[ya-_fWk$iXLl`}.1XL]q{o= ~G;_2}}Cl!7|)zKuadգP{a=e'U[|_%mxѓ~YmA3 >D0cƗw}@ %%F%d+V0gTU}U7o#Ͳm66l8d+vކk|!#*۠/nĤ0F}Y84ҤO_M:ޫ~B"6a.a*g#*BDcxt߾/7$jLAAu$wAdGtO~{ݕ;5NXdO<=Ѐ:hٍ=|L6.PQvTXtR.Og,y!Oο_˂$&1[HOB- "OLu&0z*3gΜitww3@Ѥ.5@S^Mw j*ʨ,/\./^̢Eعs'k׮%Ɏoy"#FT#sQ…Hn^RQ۴o?HY%S I`f3D_6V-˚kC@,Y;*lтYa[-W^X :C?xxu2j`HS`%v=t Rzj/'B7k!78~/KN&^<^;?h"ZvSpU۹`'͟Xun*;xHary%00m3:q '|.h@ww77?KXJTbX,igpXR"(^$K)IݽW̨bќ `ܹOb'hƵfƓ)qLkiD+Q>FlToj IDATijʒހq)Z@.~X"/:nvijVC(%Hݛ!خuvICT_=X>|w^^wM1d71|ZՕyQLWF4d6Ma'lf\bYhN PCO`s%&eթgzΤ}qt4 kZY*<&AīJ\Ē JTJ5WxnpMCZiP_itI̝;5kAf9+>NoMV>c6 ! BTq,"9ޏ?R`a4xL2:xfk+lZbUhODGj/>ɅK_ G&2C9'U1{yhyezp;^K+Nĕۏ{ !70 vhjVS QQ}S>.} V7ֈJ,-|?]?:lc̕-=Ya6g:B"X"dWTc"pBj)YثUV R@t,K`et%H{$=)s8礥|>yw<.|[xh'߇c6~fSΣkC}(ĄIlƷNJ;jV3O>oP.ֽz&q{]6-[s?syݥzR(j~g<;"AJaBxZU̟3yp탧}ႯGfb/L3GݴS,c_?/BU3Λ.sߊWؖa K4O2X(BFe iWoDJɒ%KXzuBrr ˲rbIn 3.vtUj),Buyڵ %5aҽ.Kpp_;{UI"N~ƹlOSiY֔UcFȧ(}I]ȘLf?thzQ4~U9v\3Uj^Oݥb^ߺvt֔fKRfKm{wwu.PA[FKFuHD{c&{L=-1Y7T0Vwc&---vi?kdDŽi9.ɢ ԢHDIS1B"#Yp?ё~iE)wR1d V*s9LNNCۇ8- ]p3 C$C7αASUQ– ^ːEkmAz2lڛ X_&is}E–"R&/ZF2F&u mԼzkyOY@W! O>vx1gֺ8iUKm0/< M3k]&'GN^1X,#C7\eZK;$p饗|kᅴm:/5rTޖR]G᧐.JԈCH@$PrǨ TS}>&%)D6I{KƶmۘLꀤ:8 MP54]4ɦZ) OcG(B:BJO<ʶ'\D{9T! ]C QBWXD=\.jͤm>nMKhBz0L{v"@ P0v$Zh'VIڒu`=H)RPT! s!`fsUPI^oEft|a;?܋TaZ9O큚=}g-9VnColzU\}-TΤr2?ա]ib2m1&C0^RvF}9' 35̟?fJrsf*JA!䉣 C_ŊyQV7Eh T]#,$&kYhkkÒzv's cDJxOj ǎ_{JEzaAoMxէOL0tFtC3j߱G?U[V;Gnzel}]Z1w麝QQ9e0iA4)ɚN.UPE4*n]E'Aڵ)u[D ' azU=:}wѷ7CMKa%!J17d`Ϛd8CONdt)z^uThtVXg1^M݋vlx⼕`_1{z_P?nOC4% :tOY>p c PBA XP B8jf#G/]ŝ.6\r@h`Z̝;0v+VK+(++ǑIJ>:zljGřD*%Mp tYK)-@@*&΁{yܹsmHXKa27V%zUKkd/4] 䑎=P1U W1{Z-X&ҲҰY&2oCwɚHk8M4ixz4Qe`Xe(qVpyf$%Ҹ5UgUUUf/O?.r̖~w%!cڦ?lL!|Cgt%Tb#GB(XRA,FKC] yhH 1F B4l~& +"()|AhX8Hs"Ȝ# .ծ14a45Q &X!;ݻ 1iHd ~EGOMBQ !פ<"Ƣفid +̙ބM {%PQKO^59y-5STȦ}1ơXQd>Y,]RmT}41b܈*|ƻvdzw(ad5i*O&0 ZdmF؊A(*"G ) <?";2A3!<-ߎIyP- IY88Uu|/a ޑx!!:Xu@(`!o>.?sPP=+92>= XKO]i475]Dbj5UHSU&^r۸)P^ MlsYy1a!VK,RyU$sNiO(Aw,r q0a7eh@WQEb=-w^u~T,Z74pӗ5}#.S)]ϸӯ>p u=-K(x)jU L)sE?`T0)=[N1;|± ,MU ?#Ka/[cH,KB2gt2ޞBBDQmH@۠mBXkl~oxts7mgwa;VEN:T_i\pMTL=]RH=9%۟$N]|f>c & Zxz~SQ}4knuƙm3<~ϜRG5NcY=Ϳz7W8fuy~4:V PWoI嫗ڪЉ-۷ؾ)Bͻ*YCG7PƤx>Vo+u `2%e*=.~,|_H)&s$O`9E/4 9d|<࠽wہ!.(nEUEAEKP%%}ս,c4$t!Ԓ9?ZWj͘AS%"{OIK<"Vș .C ,"\S"{LBNV lu%{ il|n6qtSB{)TQa#x=woVak~py,˰`)g@\Di-S;Vn*@$7yyA]t=\0}ַ,>dx`PASeq7 ! JaQ-YDQ\|BK+ɓGӶsb'_<`*n^du)SB'Ē%Qb3ar@&룧YӒ ]pnڳr^%h*Tx=7s?_ +̵ڶԙvH=!Қ:.l!lm*'jNUlJ]vZQ}L$ S[jaWܽĶL=d7nFkx{Ǧ%ѱ 2%!?ZLQ>عJes | Q[tEQLe AEU݅ٮ) Jݱ]\XTfYc=F"?$\H%&rJHmp Y$w #j iG\-)mʤQB*=jQx/B P$q") %2hF|U^OdsB<8oBDdx¸Ym?8)s[Τsi Tbx\8s T`ĺR@qJQ/(X:z{Xɱݐ" RΕ1,UH&G\F)#rBER iE -y l_-F*PVVRYO `j3#!HhFyQ 33s0uB}^By'5}bN[R?GvyhaB`WQЍlס:lښ©q (M! ~?nD7T, g4 3%%)&ZGGF=]P#gh^y( ~g yH[q-Х2ekh"M$X]E3](;^"Uqclt{aaZVES]QBm-jz6*7<- zcn=eppݎT?L&86\=lӾ;D&)>Fg\4+*H" Bh#'Bu{[س~(;&O1 {E拠J;È۩###R ϸ0B24I4_AnW+!(*Lgy{wX&UM!@Q ES9-y@" e(d ,А=`,3E#RR 9((j118[;`ZⅿTspT:._T$1$ʼn0ynxۗ`-N׋:z OzjT.J! buJQZUNaQfH!L*=T큖5 4Jw oP0F R=vG,*dXw 5ދNHDe^wnêص (i9PP 5YEu\tB`Izo;bYR[Q,g0Ϥu@N)AIWP/y~2FG RUiVNdliW4YZSɫPޔ)KSqԟyY+T2|6HM^T\WIco-TAiF_4 #[C *`:>2l4QT%|;(@cQ&'1]8! YZ@ aD 0N h':AQ%(!C8p=&ז38Y};UYՠTa %@<^  90h8`ypحX]Gj+ĝ9#5%6`9ݹ3 nGQ 66l⫟|`Ճk~wݓ0;dDF3*j99)s 2(ڳ?diVdٚ,x<irE@~r DC8k.̙3(jԅ+ JYR 0z[y=J( hD'3 Ǎ 橙N,.ĔrE}lb6d3<]G,oL^B'Es[;a,֖n5<"#$ O_1*s`4zx~g-f= '!G &r9h= FuV悦J=^x ;3˘>Jt$D,EDW!8(`@2a$Ilܸ1/2U.]IcH*QAѨ@VȺa67X32-ІʒBqL*WQ5$0, 8i"ٍ7xJ౱9K o> SԗCcr` ofczxI p)5hEi;ysD x`5vwl_/?qy_*KU>xl݂x:Mw1hɚA,جnP%1̪[fƢ( IC8 tڵ YUbqS5#6'(:AC UBiœuD09ƃp88yT,9 CXhkltcar,m*cڊ6Bۏ:?TxL=LQݓ0r K cR0`Dawn`D1|LXn6܃ALQtF/K8:åzPIC#Er  cdbɘiܺWhPp9rߴ]'Y:rʡ?8 OWE:sؼJ5K'zf;e:)M5i I>*r ѾHw%%&MkgᔆB8[,Hv#b kP  Unj*,?x,;a:1'`IҢY8|Ԗ!,T鞌Հp%7š0nT kPrx)**ű~o/Ѝlz LvfYN(=3y 2V6z~Q$cSDJ& b^i/YopR/QCZc"-kX>|*oOT7;ԳW>QVZP:$X˭{u󷞺onz֖`V՚x!ʍ ne |/;|u+/T4*yy |Ԓio+fLJiA$:֡l+5hS}[qN[`Ѭ 8w10H~`05k08̬Gc2lIQ D%loZF^OL)zM(4}83BГqщ0ixWdt:1kl, l9ޮva'Nn M Q,CPY" QG,m-Pt!g#epNŔjhؼs7zOGy_/MAuT:UD:h% U32x+"W~\1d:b4ֲ};Jih>V>'m²Ps Qa ظl+;̞{u]Ӫډء b |wًEmm 3\Ě.tN8/>x]ҞD NauJd }aϫ}q6ݠt[xQr-ަQ,D2}h*B]d8oX 4gNT`d_6lSʓ'.`ODĦ~G"< 5"JYUFCӀP’hT/а(О_Y<n,5͇aTUUmmmG$1ċ<1Dx |8 M+9NaDxt?.C us]v#*&c>HkHB0.Nno݁X",9ɆY-C*S0=_y|Cw(Gs\ÑE-qmA/~785$z3jUP62v䎟o㾮|b>d<>7\Wyh2ono~' U$YG`QS^ YU X`>5Aº?>W?B̬!9ԖWflP0_vJ˪s Y= zzzQWWeP]̺" VїdP^RzB44LajUT HJq aI/cAb):{P/"ZZ) t4 LD-<@i4U0v'PgE~1 kʫ^e C`4{q&M.Aj\Qj] cMfV+N7cah2Ȫ eh'~yrQΓ(LdTloQ*`C[GG9d8Uב9q{9pDŽ{C%99/o .dE35am˟'>3-_x;W&RQ_$QAa0ͭt`['|^JEFgBAf[Wx+Zo,N76Q@rD_!1f||_EuY^?m Z[[Q__Æ >@GO1I2Hi qU %SpRC_\C_L@EoZܨKqڔ###˳`ph `x8BoF cX2)}lͬ.B>=am@֕#}QY|m_9as$;Y$*vWbAZˬ(8Egx3<+m `k}sϫ_oW<隞UAC,Eł8>{[B2 ݱ3B8[ڱung*zӄT x{((..0)a٬:y, KhKqOsNJP @@CwG{ʂFmu̫B[!nkVF*I9" %1MRpQXTPpmQ j6 ѵB8دa6λ P*i(ɲy[k ΙuP]em;DZh*h!)u v_:a2j84$Meg-7%H2ґ #ڱy=Ϣ",^yIjF@D FxƂy8vvԕb ԗڂuoގЁj76G}VQ_IHh"h޷  ΝזU|h_Kd[sjVoAQjڜc©fHJg(VBĮ)`8}!lI(`&T!t coب-`ZsLkU#X'hNi^D6MIE .x>[RH.5zӰڧ\1ZFW.x|Fw?/,Y3lyrTdcS )CrZG8|YMFmKD@8!vZ(@EE͛OT,WU$AEe@pp3>!)M9,r(}zG 1u # ~=w8(((0γ0ZXڀZ2Lbd0M@h'{8 [lsOi]B$$^kAM  +4D:٥jaQ'@67G`r$ZNڰח(  P"7fԗF믏 ̈ewmǶfTD>.%*(.^qQeU %tҶPx 1%TєY%PTg`a% mz9ێ%stH3,W^=|f-Ѷd[f`P)Ąa߰GBr:h4 (//D1aB8|0:yJ/fay]ϔ 8ӯoF7^SQQXXh f:0 b R#xD|6x\z}FoQKcW)vGu֯]d`ƿw;B%^hIaw _B)*Tapd% K/k7{dF$ wǞv45Ly2I ?#7?_S^Rt;' eb{7)+X6Hhua՞VzKQ[[3W'Ӏ0|>^NJK=}B1L&gd $Ƭ8 Goe),(WTBoEKE<;cp a! E|ZE%2 b VjjZ1;Ia6+߉;a**k`,HPTTA0cBڳڢX聍3P ,O mp6,1ZS73g6Pf+I@S0,ba<E} Fc9d8ؕ.SXHJ,<ȟ7t&6 |;F^ CrtX5]7UزԙߛSR$#yxzP@4@(PS* % 3.g|eM;k9ywF}O|ZUc|jeDfnb<7Ht@ %3zv_T+)2D"\z,c,:@wXCF¡:D}ENvoVMVD%U4 ,BQ q'nPUQp^ eqt7[Dc; 4t!\Ű6/ vOnjF*#pcz WtcW$;bWjvRoIߎ_lI|{>Ƿ7=u9dߧbl]7se'\'\|UQe)cӡgJ(cj\QDWKꄚPPӨM=tz&:¼-N3iG~vǓ^=8q^ۧ@e TS| 9pz`f2+<>!bGyi(8+xd,"JJ(LsD(p. =6lbNz$\Fu4V C!x<4Q!k=ho9MvarD;M96h uz IDAT58S$m t?=`H;$88܇;ڀS=xZ#Lз5#kin S#PZn###7b! ! LlG,FG)8x9/LBZLcH4O/4O#A2`8vXl>h 놃:P \0h̦5 Ee 11V]GmnL=w?q--UXS4(#2PrX}Ʋ~:U$m?[‰GZPvM9 _LpncB:ۚ w5M5{ڋ5Í2P\\>_^xٳmI_߭_edb嵳p, T}:+PhrJ4yy?:6Ci[fV gw?ztxǷ>?΢g #c1t4X$ ]HѵYs!s1ί@6UQ Vm܋dZFyuj&P$Iiw>aҐA44@O7"ExQRFQq^0py}bv}#f9HQ`5ڻw99l/K,%ԕǺvgخ π 4bݧķXƂp"h2V5S4YN17xX7u+]㦔<Ȑ2@rvj~YF,"p\Ѱ{4MYP{'b{0';A bwIjH,EbvMVM0I2&e'6Q$i z(^d{ԡ[tx=^xg7z>|U\{:z#ln80n<nFarM!IIқ)MC,Ċ {1 PUÆ'n<#8<۷@IEp VdF1Ms e1%1,y]({ CVPX 1L_3Iwy\k+.kU}(<dW fjCg_VW?W:.DGWhFi2(5 dzw"?a2DO<E%xsgu}ud,7Z1:1GrXq֖f®-1i,^acd., JKKtnцwA9q-;M1iӍIhmbϓJކ6 ZტX{]vC 6L(R\ U_M;c?t?V1.⹫Wh5QvA%v@L R$9$A J2(Y܍m{fA0x-X0Xš3bkrʕxALywd/sn]|* ePZ_k)9t4'cշaHO/N+pq O-8R/?H"h1 Zd W]^mZI(5&UmOZb&i(Z\# Gpݩ۰ 6z;-t޲"nn\<1ݕ)%_q߿S'Qkq?dm&Jbvўp]}ּ}Αm@(8h&-:+WgnjFI8Oi^ ĀhjE? O)^N*H ;u`X?{7yn @ڼ',-8w%<wd<8TBc !T L[0z6bH d+aȘ"6,n(GikEK~D#8 . b@4l6x0PFxI`|MK@dTTM(ڐɤixRۓb1ђ`uvb8h [pdMgМisv_~ku$"-W19O[u8S=~-,U`A,!X!֏wgD! #/ I- 6h܀Cg*C8]"뵿ϻя^g hv%IpWݶ<8>hV: *D0M17 c)^8jbhUBiz<.hDQ:ʌ : 1;a@7zzzpM?r֟> o}17{u7h:12lf9)zf (piSv!bRL8" "Nս,yjɊ`#$@͐yJ  EēͰj@Ef$U`KrW:}GO?\uJ<wriu*+k0*ԧ+v! dz9aM9 PT߼s'P0tB|h豌AY;EL&鱵BS:m!U5ex9* CAdQ[ 'РNܵ/g׵lBՑ%cמWe3i Uxxlo&.ՙ;~ZYtuDe =1p @y]ϝ0g[RJ}\[:F> J.9'2CK`DnBu! @ʗW^ڎ;1b\k{U ,as 1 H~l¬%CX0}c:1L:@p+NXz98qٗxÛxv;pݨFe)!Xy1|B4 ]ZKDTHjFheE˧B8oE c=$IQ_qFOrggg JLT!r4d|wl 3D!]<kj6~^s#O)Ad,Y1 .ws%Cs1ݑFiC'-9?ф_p֜3_/zI\({Ͻʦw7xJ_s/!k:& !b F >љGR҈$*AѲbN͕aAxSDWbY\I F!2YMdU6T,\jrjb8CYne6Xd) "=PTL Gyy e>$,9JU7`$]{;`HY˚ IEr:jfB=ɪƪ x`r 1vB#eectI(6Pe0DӍ<Z?qc,FbhA0̲mk,tW;PrTTlx i5?Xq?}&UU//W\Kgz` fO&JOYg1GS_zg w2elXlW~(x*gdӿz5sշ天'~MFg~~ۏ_V p9ElZ;B/8avR9 s(ZV{1P$t<܊`eWY? #z0h,伨f#(}XnXx SÓ!2vR~0L_4e՟e944FC#ʉGh޷ b}X[p8]().[MDno!3 Y#6ѩڨE3 ͌-7PYh{Gph.tE]d=^R) Pbx2 1Xx2lXļG#m^O A|pY򉑺z.xjjڛ,[}/(W/_xmo wY"[Z! *A9WLA HBr>3L8V:4ǒpm~i@ U߮ad4C1>AEy! LҖ.4!Z9T~E߳s4B;n "kxXŃHNo L_A0튊D<9>:^^.15׍ G`dX^n6 Eh@p9 y )` S{揪F- x{cػs[޹D4p`;@r p@zk+?cW~gqrRf}Ÿ_jFΜw7@'թ׮Zf__B&ơ V6iP‘_7k_}_k~''ks-C}_ןXuy\T'w _@e9Yb& <Յdk57׃xcMw%h+AϦ@,3w8o#QXLc,ZpD)Ƨs0}ظmϨX{ҙX~mm}Vd #C}ǐEGQ$$qWF&Va;!X,轵, RєUUE4MNK QTԒj8=T23ID3`8\X VdQpb~<,7%adcp/џ|Gw)"pN>W? ,m4DwE21i ?g#}in;rQ)W\_۝L'{Jȋ穜{=1T^_A[ qq# P *Q",3knB=G0&;;8zІ 4v#z5- "<\$UT1*MMp_Ec&`AoF*>&ʋ(ً 5D~t1 ?/2(\GbXrd"8٩4ZYV<L}#*nDD9n:z &b[WDŵ5`-,n]G'Mau+g ݝF=h:~݆a8V\ZN%`1Σ[5p"q!65% uʝ[FC.u~_l3ru/V>׋/*E9n.zb=4ZN2:lѿ:iE3AM"&f*K%"з@uڏІ-qNy +^PE>3\{/hE~x/{}4 ,XBPJoyMlP\ϝպm,/,xsW=77N =H8:YCB9#RyzQZFB/6xOȏaC+\7 L),O+,7(`G ܊) M , iSg] IDAT,dEƏ} ۠j?KbzI= Jc)\hO=GP]:E~>MwLLHIjNcˏ /[_YlJaCXG)."b[ r.wj!SEm)(p^ ~KB󂢨 _YXuԵJ|eXS7{7.W-$mzAݘtƒeEտFs |8(DB%JTCE }F0`n0(:8U*{cJ/FK8~_/-t|6݄ DAauehKyADUUD$4#{5:q,VN8=^x (DEDMFyU}Nj=_MBAz*ZDn݀q—7c|~n=={ԭS?{3q>9>qI;Wk~pq+lk^#zZ.N2+퍠yxP|V"ZՃSCI>T}&I~z7Vސ 1^ߜԄg̥dt+X!3v ~Ʃ2r; ncVsj?P@)˪QTVI̅I%{Ȫ}-S4U]Z XX:cl+q}qIq{#llmL.zH<HI~I^H3qX*γNdUP͡F xjQ5>-؆(Ji{=a6~e^嗸(ϳ˞cl1|G/@I%&<׎.Oi>eY+u c?Ek8ig>{5Ρʫ==fiKz?a >_MJn<`Fc 'o9n)HO|{'9ϟ~|a> .7O~i-5_K>lS7L{m8^dN=$o_I7C) 쏬<?vtVV׏pc:l/?$3SңNx-D( y|ܝeaM,Wrju%}=gќֱWzka8n~]G*)>afXIUKH̓srgwIݕBJfw}_'yTmtuEy_, ߚ35?Z*_Sf?n2 Dך*^`{t]tsݗ~۲m֧nߜ3C޷]״|s/qſ䢑?O}ÎZ䣥"_Kn{eSs|fTY7wieKGD<"N3y8'qgDnLoC+/<wK* ,'u]s^? "T)x/}(<^qN1#"[uV{~١'{5 Nf4̖/@$5m 6@ẁ kG)RJ~iy(}cKwO=L8_^ֵc8&n#"zPq4lԁO;l=M4ZiEуW>?OwH[}wX-˔÷<7mZqo(*f MiUcX6lNjkޡc%Tl8w5o9/e hL9H)LUBөm5V/h;+a-vk a N9a o"cO*C`ѫ@U}g$Jv~'.V>en)a V}z5^Q?*Q rH7v^;]9Aqmo;WEUO`WHwSD^7M1q?7Q/S2J4ՑjvHȠU_S¾<}OnL#{|В]Ŋ:Ţkg x;8? L-j{OFI9}u2m {bGd+nc{ЖbWz\`֦wʳ~}C-)ܓVs=7{nwutLNƹ#- \C 0|i@y5[C%| VOe軸 A'cMr2d>쥑}sWtxY ${)R$M2uُ|3!КxB#h"oFz]}`rv{W"M!.ޥӻu7&b hOdd!6D<әbE2`DyDFC"tP8յS U^(INqUڡlY~jChr }chQ2!A؁yMwz2" 9h-@C?UJ Y߻ċ9E G4x% 9X$ǘ~(~9Rbo&zIleM9L7v} _G~ԧkF,OV>َ0eg ~^@'Vvn~݌7}E@UQ` t}ND+*0}$cqԇ4]u0s^nȧwN?[xU%?~`ga}e]7R*f~eOZ 3I;D'6a7Zd a-*Pu?)*STI;TSIc*̢r`4.} bF#,0daE,+ڂ!q iC٭rt{7E*^Ύ~fƦ H4eSp9Ms4myMwF.9dBmTj*$DṘ%myVOX}W *Ũemo'}8Qʵ_OwE+͕>[rp7k=yv  ch!IY:S0 ߗ` y'=ؠXWyA/J߶[H:C-@'a;_׋-oZ얥@ 7Nۮ7$5}ՆMfnf_H=1?;Nk~r~hgn~L4E#@hI( .~ʣE_~,}E3^@'WoD +BYg4WIY=iVTLf]Y]ao-W!5D]a$X4m0A3<"_iY!3Oэ~[F^]M@zH}UB(ak[g:+{x<VǒnP-M֭ofbvZ ?"Ghz$lU/)K:rpT0ItzIc 'hDA{(RSiyqI^GhEBxH0#CI-`Ki_ȓk5kߑ#\Bb-r8J%NkA~+`{63oZ37OSM6kY!UQh&0c>M LXD~~у8s.}EG2^aqG=rG/ո7_౰~_=8c۴{oQ/3{-=5Tg]cg^P^t؍6-1Zh%󵰴8H WA2չ*m 4x@*{Vxh/ UMlG2pHx\g8 u 8`-Mm5D xUGn1ȴ[.sg;J r5O>+:s3?Z.z94 3(_i8>3a(ل´ Y=~gEk33}y_\ߓ֒O&LK{ߖ{f$Soi'ΟoLrY"ZBP&5O*銸K>zW}5HΑ7}_Qe(Y _V|Sr/}Z#co^_+zl`->rg1}VЙ á=4Ԅ ̳'C;G YR N̯^Oe _x%]ou ~ڏu-C܅s(a`(ioxɂbӔ)EhIV&ٲwy*BҼx'im`{ % C !5OXE9 ۈ6w88LjЮ>wԆUc?4n ޝ=Ώ* !$GVxpSLʹَK$Lu.W R(pbG7O_k32gwA7sFfJ113KP\8Uǩ K)%V~U7mm9jΟu_Vi5;o/a6`jc!-28(YP~[2\Bޓo\]b0)J;W JfmZcGkn$:;D+Oe~~=u 8*;OheދVb6Yh,[zI~ C=!lPBa/NNV=69W)<OrzUJ 6>-2sz)(epte떤2RwN3s(7QA?_M;\K}4H?>)S?(ǃ蔃cnc_D;?[IlCEjnmR vQ\3D,5q)oAH j$ Qo<%MLJ^ &nUh엿QoSzeoFMi-O _pOU^,)1U"C5Zϐ\Qڧk@J51?5]Zz/>@hUE{e[B;ES@;yQ]xՂ5JJr7 IDATpʞC9{3f33y :[6z?(EJSE'.13axR3nA xmW/I_3q=$F{>2@'V#&aU-r<#;9sg;?{-G4\/_   lyj!q&GS/Q~j=i%,-ymi7"L03:(DZ azpOHM=e-Eu"fOn12Go^_[}Oo;5{,4mXl4ՙ*× 89CjpƘߒch=w,)j^Ȓߝ%+)4MQ4 02 1lJtr|)@Du Lu)R3~xG9xX `]$F0(U][ԩԿ_jSKC/Z'&"д;ً4lm+_ 6<9>pOU܌5#L3%eРnAu4f򙚦"Bf8)cAT @ G}jd\W9Wqnjۃ4+zLfl}SZj,aTB n:C+yBh y)Ww?y'.~-?8XX~3(hQ@#ܴCυ!cܒVҨ98sF`IJ#EMy=ZYD7p.#f'Tg*o!1`F+Mf2o§.㍗DXl*xoϭ\u=XWb <ūVzAHIˑ-"k|VpnOjiî0YX~ksJDHSH:4 @U_U[0FڏV~)<3N Q,t}n(%l&}iY'^@8]t鶟Yuc3 -T ;Vq[ p3;C)N߾x_?u{~R-3w2s;鈴P hΠRXf,P4уTFtwfĨ D )O)l4 ~^xqfXLaFL:ZAqm5bdmT}Css[WhmYy wnmsa*e)k;ȴ U8`KhK Zƪ3U#-I;{vȸ `5O}h黦I 5zR-w+Ƕ|L ¬鬪pn_#ƒN$Mih`}C)r@X ː̑1;;Ef~)Tͨe6R.j빂~aA'|/al!(rr-tPؗGU3Lg=ȘU62Nh~XD_+|3ⱛ=Y@k}f ZV՞p ˹|yfw_hzySnzyR VP3ͥٱxE|'p5_?^Hf뛱Hz?^R{vZΑRq<`şvY[\'=LWb0=X]ɽo3DY]-?4]F)+Ռ[E, A0|B4LqU\ǥʡTflɚwhHD=␞FoՀ4r4)(NRwJo ݰ&$]Yo6 BU= [h9goQؓ'y|+.FS@v{d)+/ZC;-3P1L]\ akHup3hT]&ҫU/4{#Hᵶ#x}]?3{6KحGy]!] JV\ZūOv-Ėvj4wg)oM^qG{Vi=; ޏX6A(gECD buʥ"RB!K%K˦)KҲH߇qKE(\h Y+3oC'K!*Th<ηwa}Lú"^ÙRM-߹*Ó` ݰS4Ȃ 1&=Ky=)G%Qe2uru9 <͇WKy5=RS^~(oM @qho~+7~u=&!@(ÛD.F~}/| Xr--h _;Ha`a}fb@VI uv )}rPeQh4Rs:i9v4ҔM6ɣ8XbguJd]F:AIhEH+iإhuUQ]d7S z~po PB1ƥ41]Bhl;'[,#lp{k :zs:8!} ~2M'u|?^u,Gwm<3=)eo]rJ "t3f-kŢaqZhIH/Ma<^f>&U[W+D6bRKwY, ˪5>2Bٝc&W]<`i!iWMUnu͗\UÈ >F Q+!mIim$nw,vlìz(.Yn!*Rz=tc{}_%U}kmg6BoP;ۿw!ny>p+<^o>_MhMtKVC0c&]!62Pd>6}Ż^V4*e,, h2WӰ:BW_7yg#l]̈I]:B`fqeX5%)CiJL!vkj,,O+?z ܽѥ_ d ;?fc[iDyFq.V̦TfͻB]%2rLj)1F/="%QUƈfۧgMsVZ#@@E\Y e!%ZH! Rx9.S/,ZB^mtQlt/?T*'M]wzݟ?vbuaYVՌcv<5p{aHOi߱ j(tb+fRZJ}1Mi@b[POsf1&"yH#^ѣ+n~tA~WHI7(()iXP(<:كwRʖ0Κck vY%bXC铨__c0iyC;\ ͚Q1tHRMWOVy%ҒAJ)MǷ`bؔSnmxXEz4Ka} F$gS,.i fn`H ѮFDIJVKJa( C)J+#&dw愛s'^xЙ'T&g'¾Z5=oQOM[kL6~ic[8V2hyY_>`ֱE?1!'P.^ُb˶=xuDq_ExS7 'Se1̈IY]:d_H3}8C4Zd)*Ӌ)WQ/x4d- !Ffa(pZi%KcD ]ilIq0G)ܜ)4P.ݾ⛛w~luc-tO'V~WZb|AKK?e˽%z@ԟ@S'4b7dJ3z0v¦}1CCZxma:Z @{Z F(CwhN=M+hXAt]R,{!M;LIQeۧw۔.dР/'*3edP_1`xG6'LɦJdk3TD%÷N*ZOZA9P4B kd;;i? VP.,g+yHۨxjJ3H睈vmdEقX!^fz( /E~g3fl(  X =!t# ][ W2<BHm!]3bk==)s{F~ ({d?oz淸Y5yÚ\pmqÊZ:\V,kFa3끆̳?6KF%fDo2i%pxe[mN.o$Re_ʊX4B5Ue1S%!$`s\¾>?/TULrk#v&6Fuޡ2Y"BZQKmAfFt}AM]v͝ DVǨʸynwU<4@K`U(IlkXj(G#cRW })F6DiH3Lfؤ8T+Oy$aU?0ZH2娪+Ц0<$Ro liU]Z@O<3'}qAڝ/ݗ_.PZ.J4Ho0iy3wO( ) l M8\1@&sYg}9CyPEd}c_gUv ( 6idРvi [h]r{3>zBG=‘$:0%ű"=枞5њӺս|j{Lv#hh aM~m#]on+ac'u6l%QSj^G! (3(viO<5 ZOma$&܂[WUDy(VMa4%1S2H{BLeJ0'`M_"a,1=>CY7xDKtE_F5o&PǦC]ƣZ{̯1FׁNZfb$.#&%NۻkM8aԝSxe`GS: V uYR@4 10DȾ8o4l ) eJQ'^AK0ZOt6j$óZUs|\W#Go}j]5_}SM1wijnl0##P^ـvvxYAeS sҞƌًKC뗣x>:|>i쬪g﷝~L9'IB)@@*E V!\ EO*͂xQQ4@HHHdz?m93L^Eo9sڻ:kzma43ZD [@߃P**hrƇc IDATI%D@1/l "ƼVs=HCͭ(Ů<P*>1È.!Ի(P@ j0-@hJ1QD") )9cLHW+Bqo (jD%*QB%D4ZDOҟ6ܴhd?%ZA5ZʬG k\zC]z="~OwVxCv#}F۶gŏs.]olrٴs3_Bfcj^CD@v q2?}btƂLU-О+h>х+@{!P7h=b|, ??,j32H lo+2jDpW0M ʓFGp|Zmٲk l/ kSU\>_yHp+Z_p슛|W*֞_~W-ױsˎRWn΅/q˷Vbqڎg zLGd~llas)٧zYn{ ְcjh =kDc=#+(],=\Ъ1&Nf^GܜPk9>{ 0Kp6P^U-3] < VpA(A9MG# P@ (,A0{/'UI95&iφG}=n2~kcĨѩf34N ա  G0 PpKկ>Ozk~lk8;EdXز`?~H Wx?'Pj޻cXyg?r*{/[WqְI.lU[s0~DD''>'/G\`>/4GԜ\; Vb>Gdm-bVu4P(JX S=`&CMƟ:b蹯)89/?QjWJ|2[ӀbuxvST?akTqLfĨJ=1s:3HIAС\Q"tPٍwfo@ iLHxnʆDu5Uw`*Pj6@WVJ2  IPۼnl"ύjְ#P㛷} *S~09 W2[8-? ư}e JF!;s轫+Ϟ&tgH~ʷ3V `~z 0|; A7Td6'GO6l <ڍgzFzF-Y;c#rP%Ԁ7(OQކ-' FAVW-Ja6x0d?ndHÈԝ}R_4ĖԠ哳Q{|#-!=%8)o9TB睻SUw(=u"iBq(f1[) a3'3}bKgoqu?H~_U|j3';Iᶈk p4A1dIڋS$9g==d4\q25/t$^*7wfUԟ ŷ/C0S1|?XɅgyiNA-a'L0*u =?^ʝ0?jP5TF#ەp9A crD!IT n; = UKӛ}5jH#`U( DU4莢S)'.:3m뗤v$ QԈr0REPBN4*J澑\׮z꣏`ʔ4}>j޶ jT:4K渜.w4W0MϪXREU$YaAN0uվ Vrpֈ +?ZT{w .қP*Y jAUP¨!#<B=y :"ȁ"+-Pȁ]PWծ2a2!'tf5TV3y[ƏȼFPPC8BB\^c!QD7ؽcַ/~ke:oKox@hP]+c){J}5tM_z>g ['_Kr~U*&{k7t[- RfFrFBuG : f]ۉB{vRizc@:^8LNX6N|Y=J-{ӛiT4AUp6d: =f 2 FDPyX D7oУ:a=e6JnWcO&hPx6.8Aq9yc'pAԐVe8& 4j݉LU~r!D_sYf[w)Oq+M_Ū>_\}/ Vpae-=8?P\&ۮwm-NbcN5;x@@ߙC~W@0LrBF^ʛHoJ Hjtrc&A#vnށmȼbKxe,iY!0# Pٚ`+@U _md0(+1XC%j+ ~dwd \;i# [2|N΁QmxoI(-^6BƄ9 32ZXK #P(!\PPG֧߸_&[qs/l[:go|뿕_t׶qq =%CN61LQI%'L xee^od6'Pp[Foړ#5#&ݗݙ+0jI!Iԝ< n3TV5(fk#./^nvdY4% * gY1ܶgxzHoHIX*toJgQȣ7OzsCDկ@b`A| Wei^Ea*F^M=o绷-7RgԴtm:o~䪟J!|pw߰oJPŬ>0ʛ4r.Bqu\aQs9.Ԣp2idlԟch.PQ{'c7OꄓsCj!0j]! U^5C4{!E=v7! nwj=}w]0jTR -I [ZМ@Lvu'5"y% 6Q>WJPRrN`SIQvUIgw<-+nk9JפK8~jNtBap|wt. BVA1ٖR 8Ș^a!՞$ʠl1:nBe/a k,B371x촍Ьj+w[Bp26JݞJNMrKpલْ[pA)4{՟z@dnMAp]@n[S0j mˢЕG`B|ud \"ߞCaojHBPA j)p5]7\ŧ`pG/! KgǟMw_xBq&7\BuğSTmm$2a><x|OC|Y>٨䶧]iV« ѫ +aW@14,k@poC5 ژ@ϫ<5O6ȋgL/6co/G h> &ha'^rxN֙gs;ma^ <㔄1+sRA ե}}dݣZwεGx$8m, MEn\8* Űg~~Suj\*T7Bț/@L6*NFbx?zdkN*ɢؕ3PweďkD%f2?ލBW׼i` bT!DPxy,avGAnWf2Շoe"ZXCو/k18:8Ę}pMTT`X}E9\$wc~f}LpEPA+iB?+Zw UQىF4.8ԉa1bq[W@ű7çDuR\갼 0D=G=kĄSQ{b$8;űSFV SuYVW~mB *UVEW.D{qc9&Zqf| KksN.hw;A5 9U~?_8r˯7.8s3J<>!3u&t .9h[6rEK23>ƋnߥmG|%!85w Ԡ[p >RSTnb:o.D}ٚQ !XPړx/SWz;S|YC<Q g@6|i4ۗfU*U飭hW@U\pE'(APnq˰7aPm!2?0r@Y6l 1L/ xד_ :?Ooqՠ&K픍joodvfxPO1~lC9JT굺nr7>5fԝU4UKk`^t޵|:v8Z1>U#Mkj[?u vOW}?ޟ |{_Rt͠PH@Z Xo ! R Q[~rfM0Bқ^otDzjeq0 `ڞt cz gdOvL̎d¤2z;U(h6~~Ṭ >3If_Ck9\x×BgV'drpc04r{n*zqPNt @a8""xPX+j<+0ۃ͉霙+ T,K&׍m'y ^cD;r!N.+~,r83(tg{ kvQC %*J=WO?~vEJAhy^bͲ_p\C 8J )[9VOl W "!oܿ'ְG`A sZ?~e@1^zSgsǓ6 ;bEa9/k!@fS Mϰg]07Pȡ=H)Wg^NY'l*=p.U^<ک3}bqosPA]%//zOod+o9{)& :By\7.I x-=<-p.!=cTC Ș9aa ]dO?K4PʛWևX~&iw, ;S g֬~uY'>{?ZPU}=4qXPeyGFRWJG.st~Nt[ ˨,|5Isgi eH'Oko5kdnEy,@×QC(K1:|hLqpGCT7%zcˢ*5>d60?JO>q.W\Zчށ5zחM\\yӖw/Şr [i=d=B| oKX6p5BN4\+u)Ȩ̥8Two x7[KV ١̉S³SI %@EyJfL; KvQؓF#?xST 7k{7.)v߽.XO +A2IDATYagm7o.Zp/ orC"͆*l9:L!p @: &m3H$~_\v߸~L$f {gQW1׏a%M2vfr;2Y=!*֠bQդFU sG*KAMќ}s Z8OMuĚ!ӎw9͡|*t }7Z>5; ^\ ?׏DĐޒ+]7kᐞMUc Xm>gq48LuC TW%9W\`*7FNlbJ>< ǍCӓ#k= E=5鶣Ko>f|Fm'^=IhVcu&8̦Dkiw͹h>j`1w1B/>?xLȄ;d 3+<l{WL/uY`ͭ#]W-l$6rD/A`nX3f:THF #)!Fњ&n16` :)wg}猎۳0U"*Eśr0 j` qQtxiwm7́*C{G_qYrɰ}O˹9' P bsS],7BgWF3Ô 4یsjiiMW0n3B 8"%4+ʵ VdXu1]hOU:_@iW߮9hp.FV왓' x5)0-B ̑5`[ʐ9d!@8aܚh͈\5B2~% JEQ͆`iwt"N4 FliaU@];: ZL) PCA3xbw)#/(A (^'xZ "X#%؎?Xuק5yh#g9%5(J J@vDD1)NF=/3^Oˎ 65mN@/kGtKrH!oUw~T9a8 B(#涏 >P}p։fqV{g *׊]y8iz@qU9u'6A zc ڢ`NF{>+GY -j]X&"F1V? "ߞ!U>md_#3 :#f;%G! !G6v帎~p^_X.i<$cw .ڳB_A T&4jX*Q&\eLg) (3D6`D@,f9JaONfU[klPmnz̀Q; ȋs+9prU1"&1Ѻo z=<}B@JE!ȋ?{ᨃg.g>l۶ݝV#NۙMUEuᄈ*e4)IY}6XJnQ$ }eVly\4\T腡pn݉4L~ 8ϛ)fs Dr|nחh\},zw#%u1 *ԠPMn U@BPm"\k*4bfW>[kroK>nJ \k d$' QCZ>1khJEն፹tݽW?}Q yH:z}HnaA˹b238W- e^uopX&v:*E45F|\;0/0&G>7񾥳[' 4k?w`,.0G1R QPfPDa.g4;3{ӓbJ(mz #/߳^i:|/%a\ *.s.=`i<$h|??sb_w]Fta lOi˻y)]@F8VTc1{Vܘ5KO / 9:ZaqZ1õ-'0P|[- ]ԆCr[ /VQMf+hf3\/҈??da.ob'm$ pItÅdn; $qiGgɵӎ"5&߈~+8vl _}y(T7^tW0Vr1ʀB \$x߲VGF:;f@>G sZJ\/-p [jɆD~={' NOgpoƆ K!Y:u?@fK o١r||g>8񀝿x䗗^Y`Fh7˻ g~=woZ4&ݖگ/PΣ]=U -KʙZ9-d]J*{ɂC8h\sz=M_n!ՈZ5XC%>aF}}VAjF"r; 5*7/J bW®ߑW.]p7\~(!ʧ*6]9Q(b4KeQEUp r 83kf2xl O+E5d8SH|U[_k5ܶm<ޜnOad D>NXo2.]vC6n~}-]o,%阾(jՍ9Wqv8çWN7C~ɢSz9Dtsocr(iQgNUyطumt;ɪsM=Po8V ?FCŇ]z|~||\?u]0 UkEp\;>;k_'v&kr]'h,}طIaE<9A`s܍״hzgs|Lun یWi^|QZgaߖ<=fSn^eYE*^"z/vs7.$퇄5X%QA8.׺|o?|c|죺s|Uz8C->ݍF6:UN`Γc+o.9`l^4vmSMse3'єgF=&y;LPOMwnw{I~˓n& 󫆩O6|p0vW>T[nzXAe]wyһ<:ާqy嘜/+}FU(\-.Y$9MNjS7ܤp<*}~OtEGt2hu?2`hށtNOݎqmB\Pquw߶fZx_~L7)fpqk`۟3 y? PįF1yq‰]٦ n=0~ssp!l{mWɓMm|=wAǻn!{imqDw*;Fqz~*ߧyAn|K0btγ_&:F}  ~ ¯L[sd&K)@]iCPz+';R * @ `N D i2DD4'DD<'DfN Q oYFڐΊG_*1X :+Kz]"!b6+K~]#!fEbIk$H,vϼXR "5ќH%Ǯ%Ǯ̊ĒcH$"%~edF$Bb͊ĒcHYXr 6+K]"lH,9vdtF$FŸ 5H,9vDfEbɱk$ngEbɱk$YXrr6$D"lgEbɱ+$oV$FΊĒcHYXrۄc2|ɱk$ĬH,9v?+K]"'"51fW!5YXrH,9vf͊ĒcHYXr UِXr >'bɱK$%Ǯ"5H,9vD8+K]"F8o6K]#ϊĒcHlfESM@E8M=h QP5>R1ŬQHe#mp[ Cmd{neKtR? nƏˍ QK\mһ,ړfL ӵ/ya8^Nׅ~[ "0jy&|D!9Ϗ>{8_^(/Dݬ*ČO‡ǪnzΡC0hp д?+"B!mV*I!tKC0[ד9YDab8ͯa:otSN d1jܼڡU0b?Eck!|,=W=WkE>TazZz_^"hϧSY Snͅ𑾈e`0R ;L|/U?T=yk`^4^4ds{1K[/xMu{n5߳GEkY'W}McI:vx=/%X },cN_o~Weo~Wo~Wn~W6n~Wm~Wlm~Wm9a.ʖÖ>N^von~xq~k.e^X>Rg,_e-_ge-_ӏe-_?e-_e-_e-_e-_e-_[e-_DŽޙ222~w2~2~O2~g23Z&U[&r}foE"My~zeگ49E/jAj:&&xz`jq|(_q7.ܷCy;_`/ .pcrG|"5O/?XO_0פVLzY՛w=+4/blY|i V{,^vFO_U6_۶WW39Z$fZ}OvdWu%gG7ySWݴ#*Y4nҐ_ES2?>R'|/Wg!stʅ/q9 r8A7MYT;|qb&b/NB%|&!_I}_O>_^MB +J˴n+H u6a>:n8h6O,#_z1KteAT]>U[1l}t:' ;m?4 Ycҿ]^I ײe=% $zCr=B)fSTw!`48]wW-PO)}*&Tθ3,4&W[ ltDʌ"eϊ+.>>`Xv)wϫa aP? `5 J*֥t(@R7I(>F% %i@+E@#%tdP8\x$օu1u1zqRfܗÌ `a/40Ĥpr&0< 8F΃p@=ì{:sUfFAI F1rwVx.;>;?v!0 =K6#de¿Að-;` vJ J|hd>5{%0O;s6i袯k\ pSZNxp70wN5m_|~mF !}!x>/Z=Xa0=u<0ED!B uwi'h<#CN6~Ka d=ҡ K!$2tAheRBTX:I:D/4'tDJfPP_=[tn1ç]xV=`_6M*搐  /:*Ӊ%W TGӸ7GdTX8v&=av}C Αme)eOK9$$bB6vNHԁdml#QlS6M Q`0}F;Ͷo >ڴd)@NK{9$"@h6׼mD8g&5s P҉q sS( =/yAP E2P9 IpyjxO(82H^cIcA:*dydpM+4O怏 @ճSA; by'dΙ2kpN<̱/hx.ڡ/3̠ҋkI&oRf>D[*-$SR!f٨ {`b,,(ѹ1 DXP Gw)3lT08m )p~od@V1qYQfب` *CKX;2hD}f`R7G!cm209  N;lwh6F}imDLZ~0 I8 ݶx #Ha>ͰJ^`! `OЏ 8u"aຆ8nq,mM-oX'?9b>o@t0=~j}K'(nO9">o;%.:2 ?wx(H 19r?mBc>>*Z;O҉xy~c8 &gDĵ9zC= mEGJR'M\lĸnH;zV&\j0_eYa 38@Nހ;,PmjKmIim+^{ɬ  ٪x>[^$ߎSStU6=$z #P2L}N}!ℾSqF/ΨV}/j$ʓ޸^Ovx20; 0~~x %lUgBz摖}K_`0KEH=#qG#SemE6nwTj};PKvRPKz%L styles.xml[n8ߧ<#Yvt0E LfDl)Q(;K<lɑ'Z|H~]΂h|R$|gN^xSzƇN8Jx^bIwNqhzz>[OθX㫫PS݁Wւi4 #j*Æ7'=T`Z R rB}k9Yb14sT&pSe~/ n~ڕȇx[P%4|ι;`]7ih=A=9Ȟ`8yC@dLɝS6Xj1\+=S ^ CAJ.$ta؅YPԆu!Ҵ3 !|%Flpv Ah&?0BLc(¥Ej`$w%T0f|m1%mVh%JX)Hp 3ov+jUDvӯ!!}@%iþhMmJ??qJ!b9bqt@Ic |-:Opcp̈́p.%  G9*m8Mq(s.RuЊc'BQ"`BqL"3f c 2+)@WKLRm|y nJLh fd#B](Nr9N h4vS:7k`2&><Bݭ4JL/nQM|%2>[R*8RCX`Yk+MRkɫ+yhJaŬ\:*")zmp)fz\ +* E>F9O $-?EJԵV5* IaV\T^VQrJ=i SFzs5i/Қ^ѯ@c ʄH(N݌Qk7QguY:{{X؛: }cOZj  ; "{y=]caVHr9 trl؆EvOk?D$d:I ED;"O^谽9a3`x,& =%6hEI?IOCRŧ>0]N)/8T/*= /zlUԹau^(PDЌf>8`8ThcrK^. -gx>^b;+EFFh*pP^40 1(CV"_B7\hϜ={ UG|:'Om_ݵteIrum`]v{ gn#ta QdIpʃ,@oќ}p F/^vOi9K7 ݴE%8yXDsZ<'>F &C@ *m>TGqW w>4k5APA=ҿoQI;&;P3fx۶N\@nT~o7i%OӐZYju.Օt@%r\Im7 R/Fj}{!< R&`6Ȫ]9 (VXqKKw>u-tkޗӮa8PK % :PKz%LConfigurations2/accelerator/PKz%LConfigurations2/progressbar/PKz%LConfigurations2/toolbar/PKz%LConfigurations2/images/Bitmaps/PKz%LConfigurations2/popupmenu/PKz%LConfigurations2/statusbar/PKz%LConfigurations2/toolpanel/PKz%LConfigurations2/menubar/PKz%LConfigurations2/floater/PKz%LMETA-INF/manifest.xmlSj0 )ﱓ`Э%5JҾQX!>X%}lr+% mӒWSh$J_̊e/Iˮ; rtnlHc!k^ѾbAmTJ*(|"oyvPh#7LwHPg,߱Mi0-/?`E/şPKy+PKz%L.++mimetypePKz%LQ2f5f5QThumbnails/thumbnail.pngPKz%LiJ).5meta.xmlPKz%LY& 7settings.xmlPKz%Lsy5>Pictures/100002010000010F000001188EDC8C6015328842.pngPKz%LvR 2content.xmlPKz%L % : Ostyles.xmlPKz%LbYConfigurations2/accelerator/PKz%LYConfigurations2/progressbar/PKz%LYConfigurations2/toolbar/PKz%L ZConfigurations2/images/Bitmaps/PKz%LIZConfigurations2/popupmenu/PKz%LZConfigurations2/statusbar/PKz%LZConfigurations2/toolpanel/PKz%LZConfigurations2/menubar/PKz%L'[Configurations2/floater/PKz%Ly+][META-INF/manifest.xmlPK\searchmonkey-0.8.3/pixmaps/logo-5.png0000664000175000017500000000001013236161317014420 00000000000000PNG  searchmonkey-0.8.3/pixmaps/logo-5.wmf0000664000175000017500000242457013236161317014454 00000000000000ƚ9' =@ b&" WMFCT/ l.y9' EMF2/zd BF, EMF+@^^FL@EMF+"@ @ $@ !@ @   ``     !9'!! !9'' J% &% <+  ]++Z % ( ' J% % ( &% <Z+U  +Z+U % ( ' K% % ( &% <, U +,/8 % ( '!K% % ( &% <8/S,* 8 ,/S,v* % ( '!L% % ( &% <v, v* S,, % ( '!M% % ( &% <,  ,,o % ( '"M% % ( &% <o -h  ,o -.h % ( '"N% % ( &% <.I- .h -I-Ck % ( '"O~% % ( &% <kC-=k I-C-=% ( '#O}% % ( &% <-=--% ( '#P|% % ( &% <.-.$% ( '#P{% % ( &% <$?.}$.?.a}% ( '$Qz% % ( &% <a{.a}?.{.V% ( '$Ry% % ( &% <V.P{.V.P% ( '%Rx% % ( &% <.P..+% ( '%Sw% % ( &% <+4/%.+4/V%% ( '%Tv% % ( &% <Vq/V%4/q/% ( '&Tu% % ( &% </q//j% ( '&Ut% % ( &% <j/e/j/e% ( '&Us% % ( &% <)0e/)0>L% ( ''Vr% % ( &% <L>g09L)0>g09% ( ''Wq% % ( &% <09g00% ( ''Wp% % ( &% <000~% ( '(Xo% % ( &% <~1y0~1By% ( '(Yn% % ( &% <B]1By1]1S% ( '(Ym% % ( &% <S1M]1S1M% ( ')Zl% % ( &% <1M11'% ( ')Zk% % ( &% <'2"1'27"% ( '*[j% % ( &% <7R27"2R2u% ( '*\i% % ( &% <u2uR22g% ( '*\h% % ( &% <g2a2g2a% ( '+]g% % ( &% < 3a2 3<-% ( '+^f% % ( &% <-4#u4>4P`% ( '-aa% % ( &% <`P{4J`>4P{4J% ( '-a`% % ( &% <4J{44$% ( '.b_% % ( &% <$44$4% ( '.c^% % ( &% <35435V% ( '.c]% % ( &% <Vq5V35q5c% ( '/d\% % ( &&" WMFC/ % <c5^q5c5^% ( '/d[% % ( &% <5^558% ( '/eZ% % ( &% <8)6358)6L3% ( '0fY% % ( &% <Lf6L3)6f6 % ( '0fX% % ( &% < 6f6 6w% ( '0gW% % ( &% <w6r6w6r% ( '1hV% % ( &% <7r67LA% ( '1hU% % ( &% <AL\7GA7L\7G% ( '1iT% % ( &% <7G\77!% ( '2iS% % ( &% <!7 7!7 % ( '2jR% % ( &% <8  787 % ( '3kQ% % ( &% <7R8 7 8R8`t % ( '3kP% % ( &% <t`8Z!t R8`8Z!% ( '3lO% % ( &% <8!Z!885!% ( '4mN% % ( &% <5 9/"!85 9-/"% ( '4mM% % ( &% <-H9"-/" 9H9 j"% ( '4nL% % ( &% <j 9#j"H9 9t#% ( '5nK% % ( &% <t9n##9t9n#% ( '5oJ% % ( &% <:#n#9:I"#% ( '5pI% % ( &% <"I=:C$"#:I=:`C$% ( '6pH% % ( &% <`{:$`C$=:{:$% ( '6qG% % ( &% <:%${::%% ( '7rF% % ( &% <:%%::%% ( '7rE% % ( &% <3;%%:3;\U%% ( '7sD% % ( &% <U\p;W&U%3;\p;W&% ( '8sC% % ( &% <;&W&p;;1&% ( '8tB% % ( &% <1;,'&;1;,'% ( '8uA% % ( &% <)<',';)<K'% ( '9u@% % ( &% <Kf<(K')<f<p(% ( '9v?% % ( &% <p<k((f<p<k(% ( '9w>% % ( &% <<(k(<<E(% ( ':w=% % ( &% <E=@)(<E=A@)% ( ':x<% % ( &% <A\=)A@)=\=~)% ( ':x;% % ( &% <~=*~)\==*% ( ';y:% % ( &% <=**==*% ( ';z9% % ( &% <>**=>Y6*% ( 'S+6*>YQ>tS+% ( '<{7% % ( &% <t>+tS+Q>>. +% ( '<|6% % ( &% <. >(,+>. > (,% ( '=|5% % ( &% < ?,(,> ? ,,% ( '=}4% % ( &% <, G?,,, ? G?m j,% ( '=}3% % ( &% <jm ?g-j,G?m ? g-% ( '>~2% % ( &% < ?-g-? ?B -% ( '>1% % ( &% <B ?<.-?B ? "<.% ( '>0% % ( &% <" =@."<.? =@ _.%&" WMFC/ ~ ( '?/% % ( &% <_ z@/_.=@ z@ /% ( '?.% % ( &% < @|//z@ @ |/% ( '?-% % ( &% < @/|/@ @V /% ( '@,% % ( &% <V 2AP0/@V 2A UP0% ( '@+% % ( &% <U pA0UP02A pA*0% ( 'A*% % ( &% <*A%10pA*A%1% ( 'A)% % ( &% <A1%1AA 1% ( 'A(% % ( &% < (B1 1A(BjK1% ( 'B'% % ( &% <KjfBe2K1(BjfBe2% ( 'B&% % ( &% <B2e2fBB>2% ( 'B%% % ( &% <>B932B>B93% ( 'C$% % ( &% <C393BC@3% ( 'C#% % ( &% <@[C4@3C[C~~4% ( 'C"% % ( &% <~~Cx4~4[C~Cx4% ( 'D!% % ( &% <C4x4CCS4% ( 'D % % ( &% <SDM54CSD6M5% ( 'E% % ( &% <6QD56M5DQD's5% ( 'E% % ( &% <s'D!6s5QD'D!6% ( 'E% % ( &% <D6!6DD6% ( 'F% % ( &% < E66D Eg, 6% ( 'F% % ( &% <, gGEa7, 6 EgGEi a7% ( 'F% % ( &% <i E7i a7GEE< 7% ( 'G% % ( &% < <E58 7E<E 58% ( 'G% % ( &% < E8 58EE! 8% ( 'G% % ( &% <!  =H Iw@ >% ( 'L % % ( &% <@ wq>@ >Iw} q>% ( 'L % % ( &% <} I>} q>[IIL >% ( 'M% % ( &% < LIF? >ILI F?% ( 'M% % ( &% < J? F?IJ!6?% ( 'N% % ( &% <6!QJ@6?J!QJs@"   % ( '% % ( &% L9'''99'' !9'% ( ' J% % ( &% <+  ]++Z %&" WMFC/ ^ ( ' J% % ( &% <Z+U  +Z+U % ( ' K% % ( &% <, U +,/8 % ( '!K% % ( &% <8/S,* 8 ,/S,v* % ( '!L% % ( &% <v, v* S,, % ( '!M% % ( &% <,  ,,o % ( '"M% % ( &% <o -h  ,o -.h % ( '"N% % ( &% <.I- .h -I-Ck % ( '"O~% % ( &% <kC-=k I-C-=% ( '#O}% % ( &% <-=--% ( '#P|% % ( &% <.-.$% ( '#P{% % ( &% <$?.}$.?.a}% ( '$Qz% % ( &% <a{.a}?.{.V% ( '$Ry% % ( &% <V.P{.V.P% ( '%Rx% % ( &% <.P..+% ( '%Sw% % ( &% <+4/%.+4/V%% ( '%Tv% % ( &% <Vq/V%4/q/% ( '&Tu% % ( &% </q//j% ( '&Ut% % ( &% <j/e/j/e% ( '&Us% % ( &% <)0e/)0>L% ( ''Vr% % ( &% <L>g09L)0>g09% ( ''Wq% % ( &% <09g00% ( ''Wp% % ( &% <000~% ( '(Xo% % ( &% <~1y0~1By% ( '(Yn% % ( &% <B]1By1]1S% ( '(Ym% % ( &% <S1M]1S1M% ( ')Zl% % ( &% <1M11'% ( ')Zk% % ( &% <'2"1'27"% ( '*[j% % ( &% <7R27"2R2u% ( '*\i% % ( &% <u2uR22g% ( '*\h% % ( &% <g2a2g2a% ( '+]g% % ( &% < 3a2 3<-% ( '+^f% % ( &% <-4#u4>4P`% ( '-aa% % ( &% <`P{4J`>4P{4J% ( '-a`% % ( &% <4J{44$% ( '.b_% % ( &% <$44$4% ( '.c^% % ( &% <35435V% ( '.c]% % ( &% <Vq5V35q5c% ( '/d\% % ( &% <c5^q5c5^% ( '/d[% % ( &% <5^558% ( '/eZ% % ( &% <8)6358)6L3% ( '0fY% % ( &&" WMFC/ >% <Lf6L3)6f6 % ( '0fX% % ( &% < 6f6 6w% ( '0gW% % ( &% <w6r6w6r% ( '1hV% % ( &% <7r67LA% ( '1hU% % ( &% <AL\7GA7L\7G% ( '1iT% % ( &% <7G\77!% ( '2iS% % ( &% <!7 7!7 % ( '2jR% % ( &% <8  787 % ( '3kQ% % ( &% <7R8 7 8R8`t % ( '3kP% % ( &% <t`8Z!t R8`8Z!% ( '3lO% % ( &% <8!Z!885!% ( '4mN% % ( &% <5 9/"!85 9-/"% ( '4mM% % ( &% <-H9"-/" 9H9 j"% ( '4nL% % ( &% <j 9#j"H9 9t#% ( '5nK% % ( &% <t9n##9t9n#% ( '5oJ% % ( &% <:#n#9:I"#% ( '5pI% % ( &% <"I=:C$"#:I=:`C$% ( '6pH% % ( &% <`{:$`C$=:{:$% ( '6qG% % ( &% <:%${::%% ( '7rF% % ( &% <:%%::%% ( '7rE% % ( &% <3;%%:3;\U%% ( '7sD% % ( &% <U\p;W&U%3;\p;W&% ( '8sC% % ( &% <;&W&p;;1&% ( '8tB% % ( &% <1;,'&;1;,'% ( '8uA% % ( &% <)<',';)<K'% ( '9u@% % ( &% <Kf<(K')<f<p(% ( '9v?% % ( &% <p<k((f<p<k(% ( '9w>% % ( &% <<(k(<<E(% ( ':w=% % ( &% <E=@)(<E=A@)% ( ':x<% % ( &% <A\=)A@)=\=~)% ( ':x;% % ( &% <~=*~)\==*% ( ';y:% % ( &% <=**==*% ( ';z9% % ( &% <>**=>Y6*% ( 'S+6*>YQ>tS+% ( '<{7% % ( &% <t>+tS+Q>>. +% ( '<|6% % ( &% <. >(,+>. > (,% ( '=|5% % ( &% < ?,(,> ? ,,% ( '=}4% % ( &% <, G?,,, ? G?m j,% ( '=}3% % ( &% <jm ?g-j,G?m ? g-% ( '>~2% % ( &% < ?-g-? ?B -% ( '>1% % ( &% <B ?<.-?B ? "<.% ( '>0% % ( &% <" =@."<.? =@ _.% ( '?/% % ( &% <_ z@/_.=@ z@ /% ( '?.% % ( &% < @|//z@ @ |/% ( '?-% % ( &% < @/|/@ @V /% &" WMFC/ ( '@,% % ( &% <V 2AP0/@V 2A UP0% ( '@+% % ( &% <U pA0UP02A pA*0% ( 'A*% % ( &% <*A%10pA*A%1% ( 'A)% % ( &% <A1%1AA 1% ( 'A(% % ( &% < (B1 1A(BjK1% ( 'B'% % ( &% <KjfBe2K1(BjfBe2% ( 'B&% % ( &% <B2e2fBB>2% ( 'B%% % ( &% <>B932B>B93% ( 'C$% % ( &% <C393BC@3% ( 'C#% % ( &% <@[C4@3C[C~~4% ( 'C"% % ( &% <~~Cx4~4[C~Cx4% ( 'D!% % ( &% <C4x4CCS4% ( 'D % % ( &% <SDM54CSD6M5% ( 'E% % ( &% <6QD56M5DQD's5% ( 'E% % ( &% <s'D!6s5QD'D!6% ( 'E% % ( &% <D6!6DD6% ( 'F% % ( &% < E66D Eg, 6% ( 'F% % ( &% <, gGEa7, 6 EgGEi a7% ( 'F% % ( &% <i E7i a7GEE< 7% ( 'G% % ( &% < <E58 7E<E 58% ( 'G% % ( &% < E8 58EE! 8% ( 'G% % ( &% <!  =H Iw@ >% ( 'L % % ( &% <@ wq>@ >Iw} q>% ( 'L % % ( &% <} I>} q>[IIL >% ( 'M% % ( &% < LIF? >ILI F?% ( 'M% % ( &% < J? F?IJ!6?% ( 'N% % ( &% <6!QJ@6?J!QJs@"  "  % ( &4e% L9'''99''Q' 7' P0`'(`'&" WMFC/  8? ????s??  y???o??p??@  @?8???????g`? ???p?p001  ?^??????`????8???&" WMFC/ Q| 7' P(x|(|&" WMFC/ &" WMFC/ &" WMFC/ ~&" WMFC/ ^XUXUXUXUXUXUXUXUXUc`ζda;w7 f f f f f f f f_RRRRRR[ f f f f f f f f7u3XUYV]RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROyvRRc wwwwn \RRRRh q o o q q q q q q p o o o o o o o o o q o RRRRR WRv ,",","!iRRR\+!-"-"-"-"-"-"-"-"-"-"-"-"-"-"* +!-"-"-"-"-"RRWRROb_RU(,","zRRR ]+!-"-"-"-"-"-"-"-"-"-"-"-"-"-"-" t -"-"-"-"-"-" aR ]RSspSR,","," RRh,!-"-"-"-"-"-"-"-"-"-"-"-"-"-"-")t R#-"-"-"-"-"!RRRRTQc`RRKGRY* ,",",","hR ^,!-"-"-"-"-"-"-"-"-"-"-"-"-"-"RRl -"-"-"-"-"-"hRRRR0p,RRRMI&" WMFC/ >ѻRR,",",",","!RR-"-"-"-"-"-"-"-"-"-"-"-"'k RRR$-"-"-"-"-"#RRro'j#TQZ RRRRRѻRR ,",",",",","hR _,!-"-"-"-"-"-"-"-"-",!URRR ^-"-"-"-"-"-"q RbifRRW,!bR2q.eRl ,",",",",",""RR-"-"-"-"-"-"-"-"# bRRRRR&-"-"-"-"-"(TR4r0RR c'-"-"!RRRR%,",",",",","jR ],!-"-"-"-"-")x SRR dRRw -"-"-"-"-"-"R Uʱ[RRw +!-"-"-"-"lRd^Rr ,",",",",",""RR-"-"-",!XRR\ v RU)-"-"-"-"-"-" ^RTQ}SRT-"-"-"-"-"-"$SRRR',",",",",","l R \+!-"# eRRT|) $SR-"-"-"-"-"-"!RRTRR _&-"-"-"-"-"-"-"-"vRZ ur XRy ,",",",",","#RRu SRRk%,","hR [+ -"-"-"-"-"-"q RRRRl *-"-"-"-"-"-"-"-"-"( URfcRdnkRT(,",",",",","m RRRRRRo (,"RR-"-"-"-"-"-"(RRRS,"-"-"-"-"-"-"-"-"-"-"-"RTaRR URR,",",",",","#RRRRgRRU ZR d-"-"-"-"-"-"-"RRR -"-"-"-"-"-"-"-"-"-"-"-"-"* [ RJFmjRRRRR[YQNR [,!,",",",",","o fRR WRQRR$-"-"-"-"-"-"-" `RR&-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"RRη&" WMFC/ TR~,$j RR0p,RR ,",",",",","*!,"oR_4v0RR{-"-"-"-"-"-"-"$Ro * -"-"-"-"-"-"-"*+!-"-"-"-"-"-"-"RRѼ9v5R [.#.#.#~RR[ȭ%k Rl ,!,",",",",",","&TRli+l'R ]+ -"-"-"-"-"-"-"y,"-"-"-"-"-"-"-" s -"-"-"-"-"-"-"-" aR>y:RR"3*6+/$."  WRSY RS,",",",",",",",","}RTheRR -"-"-"-"-"-"-"-"!-"-"-"-"-"-"-"(q R#-"-"-"-"-"-"-" RR˳]Rl .$/$0&5+3(1&&b RRRR~/%,",",",",",","*[ RSRr -"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"RRl -"-"-"-"-"-"-"-" eR1p-b_RT,"7,2'.$.$2'4*6*.$sRRRR,",",",",",",",","RRX(-"-"-"-"-"-"-"-"-"-"-"-"-"-"&hRRR$-"-"-"-"-"-"-""RR¥SR/$0%4+6,0'/$.#1%5*6+RRR#3',",",",",",","RR-"-"-"-"-"-"-"-"-"-"-"-"-"+!TRRR ^-"-"-"-"-"-"-"-"j R&i"da0p,R ^3(6+2&/$/%4*4*3(/$.#0&6+&RRj 3(4(,",",",","," bRR,!-"-"-"-"-"-"-"-"-"-"-"-"! ^RRRRS&-"-"-"-"-"-"-"$RR UR¥RR!0%2'7,5*1'.$0&2(6+2'/$.#1',$fS(.#1',",",",","RR-"-"-"-"-"-"-"-"-"-")t RRRRRRv -"-"-"-"-"-"-"-"vR\XURRRdZ Rr 7,3(/$/$2(5+5+/%.$.$3(4*4(/$.#.$w1&,".#,",",",","k RX)-"-"-"-"-"-"-",!VRRZ QRRU(-"-"-"-"-"-"-"/&TR|,m(RRRRRroWTRU( 0'6+7,2(0%/$1'6,5+/%.$/%1'6+4(/#.#!4(4*0&,!+!s ,"%TRy -"-"-"-"-"-"" bRR U2p-R ]RR}-"-"-"-"-"-"-"-"RSࡾY RR|6-~R U&" WMFC/ ̷RR6,/&/%0&6+5+4*/%/$2(6,3(1&.#/#3(6,2(.$ _-#4(RR d|RR%-"-"-"(q RRRE~AZWR ]fR Z* -"-"-"-"-"-"-"." `R V:v6RRX&m b"\ R=y9*l&RR.%4(7,4*2(/%1&4(7,3(%+"3(4(4*0$.#/$4('RRY& _Rr UR ^XRh-"+ URR%h!ȮRRRR-"-"-"-"-"-"-"-""RRRRR b)#RRR ^RRFCRR4(/%0&3(6,6,1&/$0%4*0& b!.$0&6+4(1&#VRXRUQ-")WSRRm \RRZ ˳Rl \R d,"-"-"-"-"-"-"-!-"s RRRRu ,!-"gT#}URQ[ ԿRR&7.4(0&/%2(7,5*0&/$0&Rx*".$1&(VR-"RR-"-"-"* YRRRRB|>R ]RS#-"-"-"-"-"-",!-")RRRS.#.$ Ry-"-"(zRR^Ȯ'p"Rl2(7,7,4*/%/%3(7,5*2&* VRR!'XR-"-"-"RS-"-"-"-"#RRRRA{=TRRu -"-"-"-"-"-"-!,!+!RRR"-#.#-" bU(-"-"-"-")jRRPMdRR( 0&1'6,7.4(/&/%2(5+5,zRRR dRT-"-"-"-"-"TS-"-"-"-"\ R U`] VRY)-"-"-"-"-"-"+ * +! bRR).#.#.#R~-"-"-"-"-"-"," \R̴Y RR` R|8.3(0%1&6,6,4+0&/$2&2(RRRRRp -"-"-"-"-"-"!WR-"-"-"-"-"-"-"'cRSMJ@{=RR-"-"-"-"-"-"+ , -"#Ro ).".#.#," ^W)-"-"-"-"-"-"RRC}?RRRRa^lhRU0'9/7,1&/%0'5+7.4(/$/$RRQR a-"-"-"-"-"-"-"$YRy ,"-"-"-"-"-"-"-"-$kRRRk-"-"-"-"-"-",!-"-"-"|.#.#-"-".#R-"-"-"-"-"-"'UTR[ebRmjRRmRR^RR0&4+7.6*2(/%0&5+6,3(,# [R(k% YT,!-"-"-"-"-"-"-"& \Rr ,!-"-"-"-"-"-"-"-" fRU'-"-"-"-"-"-","-"-"-"!.#.#+",!-!,! Z [+ -"-"-"-"-",! gS URZWZ RRR]Z Rp 5,7.RRRR d4*1'0&3*7,7,2(/%&)!5+RR%m R(-"-"-"-"-"-"-"-"( `Rh+ -"-"-"-"-"-"RR-"-"-"-"-"-"+ ,!-","-#.#-#.#-"-#.#R-"-"-"-"-"-"R8.%RRR^ ,"<6_R.n*Ѽ&" WMFC/ C}?RV.%1'1'6,$ URRR*"7.4,1&0%3(7,'R [-#2(d RaR!-"-"-"-"-"-"-"-"-") dRY&-"-"-"-"(WRg,"-"-"-"-"-"+ -!-"-"-#,#.#.#.#.#,")W ^,!-"-"-"-"-"&T a1',#m RT+ -"-"-","<6 VRTQRR8.:03(1'2'*" ^RRl3(6,9/5+1&"URRx /%#RUR-"-"-"-"-"-"-"-"-"-"* iRRw -"-","iRV'-"-"-"-"-", ,"-"-"-#.#.#.#.#.#+!,"R-"-"-"-"-",! dSs RRr )-"-"-"-"-"-"-",#RX Z Rq 2(1(3(906,5*1'+#RRV/&0&1(6,'TR aR"0%sRR{-"-"-"-"* -"-"-"-"-"-"+!n RR d&RR-"-"-"-"-",!-"-","-".#.#.#."-#.#-#* T a,!-"-"-"-"-"RRRSp %-"-"-"-"-"-"-"-"-"p RĨC}?RW/&:26,1(1'4+7,9.6*0&R#7.1' SS-"$TW0&,#RRp -"-"-"-"z+!-"-"-"-"-"-",!n RRTk RR-"-"-"-"-","-"-"-#-#.".".#.#.".$+! dR -"-"-"-"-"$RRRq %-"-"-"-"-"-"-"-"-"-" RQNRR 2(2(7.9/8,2(1'3(8.8/5+q 3("ST -"-"-"Rj1' ]Rh-"-"-"-"y q -"-"-"-"-"-"-"-"q RRRYRU&-"-"-"+ ,!,"-"-#.#.#.#.#.#.#  \S f-"-"-"-"-"+! `R ]%-"-"-"-"-"-"-"-"-"-"-"* \\ԿGCZ Rr 7.;04*1(2*6,9/9.2(1'4(7,8/( RU!-"-"-"-","k Rw RR `-"-"-"-"Rr -"-"-"-"-"-"-"-"x RTTUR d,!-"+!+!-"-"-#.#.#.#.#.#(s RSR"-"-"-"-"-"{v &-"-"-"-"-"-"-"-"-"-"-"-"-"wR\YSRTzwC}?RW,#2(4*:08.5+1(2(5+:16+1(1'2(RW#-"-"-"-"-"-"(WRTWY-"-"-"-"!RR-"-"-"-"-"-"-"-"SSYRR- -","-"-#.#.#.#-#,#XRRRl -"-"-"-"-"+!)-"-"-"-"-"-"-"-"-"#&-"-"-"!RB|>Z Rl )!$lR0p,RR!;27/3(2(5+8.:04*1'1'7.8,8,'RR$-"-"-"-"-"-"-"-"RZ \R,!-"-"-"* RRT$-"-"-"-"-"-"-"-"RRXRR",!-"-#.#.#.#,!# eRRUVR$-"-"-"-"-"-"-"-"-"-"-"-"-"%o \p ,"-"-"* Z Vη*l&R_ -"-",!93S WRRR,#3*90:07,2(2(4+917.,$/%2(5+3)R a-"-"-"-"-"-"-"-"-"-" `RRR)-"-"-"-" _RR Z(-"-"-"-"-"-"-"-"RRZR[(-#-#.#.#(x SRRj Rp -"-"-"-"-"-"-"-"-"-"-"( cRR d+!-"-"-"s R VQNRU+!-"-"-"-"-"1)cRMI@z<RRR5,2(3*7/8/9.3(1(4+3+k * 1'0&T \-"-"-"-"-"-"-"-"-"-"'XRR'-"-"-"-"r R fR c* -"-"-"-"-"-",!p R c SRm -#-#-"XRR\-" fR&-"-"-"-"-"-"-"-"+!m SRRRR* -"-"-"RTRbSRo (-"-"-"-"-"-"5*6+2('z"RZ &" WMFC/ RRRRR:08.5+2(4*6,;26,2(,$~S0( `S,!-"-"-"-"* (-"-"-"-"RR!-"-"-"-"Rp Rk,!-"-"-"-",!r RZ)-"RR" cRRRy+ -"!Rv -"-"-"-"-"-"-"(}WRRq SRY(-"-"-")YRhRRh "-"-"-"-"-"-"3)/%1&4)5+5,RR̴ VRRRRR$5,90:05,2(2(8.1( aSXRRiR'-"-"-"-"-"h* -"-"-"-"RR!-"-"-"-"!Rv + eRu ,"-"-","t RSU(-","l RRRRRRX-"-"-" `Rv * -"-"-"-"$r SR _+"#RV$-"-"-"-"ZRRR b -"-"-"-"-"-"-"7,5+2'/$0%4)!R_\*l&R ].&(!RRz 3*2(5,;29/4,' [RR aRR aR!-"-"-"-"-" fp ,!-"-"-"(X-"-"-"-")R [,!) _R{-","w R ^Rl -"-") [RRR ^Rl -"-"+ dZRW) gRRo "0&0&,"XR -"-"-"-"RRi -"-"-"-"-"-"-"0&0&3)5+6+4)1&+! XbifRR(!;26,.&p S4+7.3*2(5,' VR gRRR]R-"-"-"-"-"s Ri-"-"-"-"-"-"-"-"-"XR c$' ZRx R ^(-"TR!-"-"!SRiR-"-"RR _RRRT{'0&0%0&/%lR-"-"-"-"$Ug -"-"-"-"-"-"-"-"8-2(0%0%3(5+6+5)o Rƫ(j$ѻȭRR4+6.;3:14+8/:27.SS."'UTQTR-"-"-"-"-"x RR-"-"-"-"$-"-"-"-"-"k RSR{"VRR \(-"* VY*-"-"{R `)~R-"(VRq /%-# c+"0&/%0&0&0&}R{-"-"-"-",!&-"-"-"-"-"-"-"-"-"3(4+4,4)0'0%1'5*$RWTԿ5s1RR V_R h818/3*3*7,:1:0&3(3*RV!.$.#.#RVRR~-"-"-"-"-""RRS!-"-"-"-"-"-"-"-"-"Rp ]RXRW'-"-"}R c,!-"R [(-" bR'-"o RW* ,$.%/%0%0%0&/$.%0&0&Rl ,!-"-"-"-"-"-"-"-"-"-"-"-"-"-"+!,!-"*"4)5,5+3(1&-" X^TQRT,$`SGCRU*"4+90;37.3+3*6.:18-}R \&/$.$.#.#-#jRRRv -"-"-"-"-")RRSX&-"-"-"-"-"-"-"-")R \[WR ^-"-"&TTRr SX&&hSW,"RR.$.$/%/$0%0&/$/$0&0&"R _* -"-"-"-"-"-"-"-"-"-"-"-"-"-"."' d1&4*6,6-5*m Rƫol VRs ,"5+9/2)hRifRR!:15,4*4+9190914+/'q R c* /$/$.$.$.#.#)TRRq -"-"-"-"-"-" ZR|R ](-"-"-"-"-"-"-"-"YR'iX{TRt )k S `RRT!TSRo * [R g.$/$/%/%0%/%/%0&/&.%.$ ^RR!-"-"-"-"-"-"-"-"-"-"-","* hRR-"0%1&5*6-RHDspX Re'3*0'4*5+:14)!qRNK WRw 4+8/<3:16,3*5,7/5+ fRl+"/%/%/$/$.$.#.#.#RR e-"-"-"-"-"-"o R%t R e+!-"-"-"-"-"-"-"t Rm 'Z,"&j RRRu -"' ^R| ]RUv Rw RR&/$/%.$/%0%0&/%/%-$/&/&-#URh#-"-"-"-"-"-"-",! q TRRR\,"-"/$1'0&+"RRRRd !5,6.9.3)3)3)5+:/6-&~!R9v5.n*R [XQ914+4+8/;2:16,*" ^Rx .#.%/%/%/$/$.$.$-#.#.#iRR-"-"-"-"-"-"R,!m Rl ,!-"-"-"-"-"-"RR#,",",!!YR-"-"" aRS ^RXR RRR.$/%/$/%0%0&.%.$/$0%0&0%0'1&+"}RRp '-"-"-"([RSp cRh,"-"-!,!1'/'RRRe %4)1(2(6,6-906+4*2(4+9.8.zRB|>&" WMFC/ olRR$F=<37.4+4+7.;2&RR0%/%/%/%/%/$/$/$.$.#.#.#)RT-"-"-"-"-"-""Rv ,"+ cRv -"-"-"-"-"* aRR b+!,#,",","$S f){TR e&,!k SX-"{RR.%0%0%0&-$.$0&0&/%0%1'1'1'1'0& bRSx r TR ]-##S `(-".#."-#,"RR"4)7-6-6-2'2(6,8-906-4+2(4*7,o R˳̴SR%un7.6,;2;28/)!3**"R0%/%/%/%/%/$/$/$.$.#.#.#.#V-"-"-"-"-"-"* R ^-".#) `R{-"-"-") aRgR,",",",","{RRRT#,",","s Rq -","r RR0%0%.%/&0&/&-$.$1&1'1'1&( iRR[ eRRRp #1'1)(W Z',!+!.#.$-$"k'5*1&2)4*9/6-8.3(2(4+7-806-5+3)RdaTQRR3*zTLG@4+3)}R,& Rr /&0%/%/%/%/$/$*.$.#.#.#.#-#m -"-"-"-"-"-"-" dR(.#.#( ZR-"&\Rp +!,! cS$,",",",")STSR(,","&TR-"-"+!iRS#0&0&/%0&/%.%1&1'1'/%SRRRX0("* 2)2)2),# ]T#-".".$.$/$/$)-$1'8-5,4)2(3)8/8.8/5*2(4*5,9.8//%V!fWT̵RRhc5,=4e^b[ hRRl R f0&0%/%/%/%/%/$#.$.#.#.#.#(+!-"-"-"-"-"-"}R.$.#.#&XRs WRy ,"-"-"$S c+!,",",","#) m Rt ,"+" gXRX)-"-") aRT#.%/&0&0&/&0&1&" `RRRRR#2(2(1'1(2)2)/& dS -".#.$.$.%/%.$/#/#.#3)906,5+2(3)7-8/9.5*2)3*7,8.l SѼ[XRR1p-wtROL^ R% le;3& [Rx lRT [0&0%0%/%/%/%/$*S!.$.#.#."-#-#-"-"-"-"-"-"!RZ'.#.#.##SRR-"-"-"-"-"R,",",",",","RU* Rx l R _'-"-"&YRY'0&0&/%.$+!t RRSs SRt 1(2(2(2'2)2(2)u RR*!.#.%.$/$/$/$/%0%/%.$.%5+:/7.6-2)3)7-7.806-4*3*Rpmqn VRs wR>y:ɰRRRRRU~LC+%SS1',"YTRS0&0%0%/%/%/%/%/$RR'.".#.#-#-#-"-!-"-"-"-"* RWRt -".#-#"T-",!-"-"-"-"* RR) ,",",",","(RR{U ]+ ,!u R Z$-"SVR \)/%,#URR b#RS) 2(2(2(2)2(1)2)( dR [.%.$/$/$/%/%/%.%.$/%0%6,909/6+3)2(5,8.:/90+#T\olY Rh &4*7-+%RQN]RRRRRR:5RX#1'1'1' RRR-$0&0%0%/%/%/%/$RRT*.#.#-#-#-"-"-"-"-"-"-" gRRR a$.#.#)-#-",!+!-"-"-"R,",",",",","(RRTS"-"-"-"}RV{STUR ` `RRW,!(TR1(2(1(1(2)1(1)3)3)2)ZRk(0$/%0%/%/%/%/%/%/%0'6,9/-#) 3)6+9/6- \RRR c'9/9/6,3,5+#Rgd5s1RW2+( YRRRR e*!1(1'1'1'1'w RR+!0&0%0%/%/%/%/%z RRj-".#-#.#-#-","-"-"-"-"R hRRS{ +!.#.#-",",!,"-"#R d-",#,",",","#[RZRx -"-"-"-",!RRR -#!SRRRSt )-"-"t RV,#1(2(2(2)1(2)2(3)3)3)3*/'SS,#/%0%/%0&0&0%/$) RR!907-3)4*~RRf #3)5,9091816-4+3*%y R{xfdRR#80;33+QRRw .%2(1(1'1'1'1&,#RR(0&0&0%/%/%/%/%RRRx .#.#.#-#-"-"-"-"-"-"%RjXR fR \.#.#+"-"-"* [Rr .#,#,",","TRUR)-"-","* ,!-"T.#.#.$s RRQ-"-"-""RR2'2(1(2)2)1(/&3(3)3)3*3*3*3*)!kR \0%/&0&,#lRRRx 8-;08/8/'SR$;18/6,4*5,7090:18/6,2)[ RRR<37.6,"RR1(2'2(1(1'1'1'1'1' R&0%0&0%/%/%/%/%%RW ]R.#.#-#-#-"-"-"-"-"-"RRRWRj%.#-!-!p RXR,#,#(n RW"3(Rx -"-"+ + ,"-#.#).#-#'jRRR _-"-"-",! bR b0&2(2)2)2)0'0&1(3)3(3*3*3*3*3*2*0'ZRlz VRURRv 3*3*5+:/4,}&4*7-8.:0:07/4+4+7/<4;/:17- gRŪ&" WMFC/ ~Y Ro4,:2<3RRR2)2)2(2(1(1(1'1'1'1'1't $0&0&0%/%/%.%/%,#SRWR .#-#-"-!-"-"-"+!w RR$ ^Y,"*!{SR{) Rz + XR! [R f* 4+5+2*l R!,",!*!+!-#.#-#,"TRR eR{-"-"-"RR#2(2(2)2(0'0(2)3)3)3)2)3*3*3*3)2*2)4+0'SRRp Rk-%4+6,3)5+6.81:05-4+5,8/:1918/6,6,7-92<2#R]Z(j$R [3+81/' nRRRW2)2)2(2(2(1(1'1'1'1'1',"$0&0&0%0%/%/%/%/% ]R.%"ST#.#-#-"-"-"' cR ^%/$R0%/%%hRRR c1(3((!SML J q(*+,,..0,.'%WY)-","+","."! _R bRTr R!-"-")VRz 2(2(2(2)1(2)1(1'2'3)3)3*3)3*3*3)2)$1)3*4+*"-$3*#S c-"/&2)8.5-3*4*809/918.5+5,6-90<49/8.5-7.3*We`].n*QNRS&91(!YRy RR2)2)2)2(2(2(1(.%1&1'0'1'0&0&/&0&0%/%/%/%/%s R&1'SX&-#-#-"VRq +"/%.%.# gS$(*#,/wURH,<; /< (= (= (= (= (= (= (= (= (= (= (= (= K#Rj +",#-#&o RTvm RXR,!-"-"o RR,#1(2)2)2)1(0'0'1'3)3*2*3)3*3)3*( i#4*4+4+2)3*3+(RR'1'0'/%1(8/8.4*4*7.:1;18/6-5+7.9/;4;2904,o S¥ro WRRa^RR82RT3)1)TV3)1)2)2(2(2(1(+!1'1'1'1&0&0&0&0&/%/%/%/%R1'1'R Z(*!x RT.%/%/$/%.&%RJ (< (= (= (= *93- (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (=dR+!TRI .5 );SX$RRu + 'RRR* 2(2)2)/'/&1(3(3*3)3*3)3*3*0'So3*4+4+3)3*4*3*/&u R[ 0'0'0'1(90905+5,5-80;1:27,5+6,80<4;2RRY Rj +$$zRʱSR 0(q R `' 3*3*3*)!S3)2)2)2)2(2(1(! h.%1'1'1'0&0&0&0%0%/%/%/$'Rt 1(1(1'RR \R ^%/&0&0%0%/%/&.&uR;! (= (= (= (= (= (= *? ,C .F2J3N6P5P8S9V9V9V8S7R6R3N6I ^RRRQ4, (= (=>R.&% ^R `&TR['1(0&1'2)3)1(0'3*3*3*3*#RRR&4*4+3*2(4+3)5,5,5,ZRu ,"2(1'1(80916-4+5,;1:0;2906-7-80+$RRRg %>6<3IB`Y [R h' [Rw /'4+3*3*3*3*1(2)2)2)2(2(1() R e0'1'1'0&0&0&0&0%/%/%/%.%ZW1'1(1'.%v RRr +#.'/'0'/&/&.%.%-&*#TP>N@`EhInOtRxSzSzRzRzRzRzSzSzSzSzSzSzSzSzSzSzaYRRR?LnGjBc?KS a-%.%.&+$r RU!WRV"1)2(3)3(0'2(3*3*,$y RRRR4*4+4*1(4+1)4+5,5,5,SmRX2(1(0'6,:28//&*"90;3<4:15-3* eRR(!:16.7.wpUOMGS3r/,m(RYRS3*4+4+3*3*3*3*1(2)2)2)2)2)2(2'/'RR1'1'0&0&0&0&0%0%/%/%/%v R&1(0(+$p /(0'/'0&/&0&/(.'/'-'/& R R#S|S|S}R}S}S}S}S}S}S}S}S}S}S}S}S|S|S|S}S|S|SzRYSmSzSzSzSz TS#/'/&/'/(.'URt "ZRS3)3)2(3*3*2)WRRRR(!4+4+2)4+2*+#5,4,4,3*RRRq ^Rq +#1)-"o f2)6-90<3;290q ':1>6;2A:|:3vpH@2+RolQNRR hR ^' 8.804+4+4*3*3)3*3*3*3)2)2)2(2(2(1(URR1'1'0&0&/&0&0%/%/%/%R1(0)1( \/(0'0'0&0&0(/(/)/(.&/%) RRSnS}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S|S|RIRz.+/'/&0'/(/*.*& _R [RYRR2)3*1(' iRRRRR~ 4+4*3)4*3*4,4,5+5,"RR ^0'0(SRRRRR3);27/5+8.9/7/-%:17/8091gab\H@xr8/80<2pSRRRR/'4,4,6.4+4+3+3*3*3*3*3*3)3)2)2)2(2(1(| RRS#1'0'0&0&0&0&0%/%/%(Rq 1(1(1(-%RRl *"1(0'/(/)/)/(/(/&+# aRRPS}S}S}V'`,e,e4j4j8m8o4j.f*aUS}S}S}S}S}S}S}S}S}S}S}SpU [*&.).(/(0'0(0)/+/*,(u RRn iRR| ,#SRRu z RS,#4*3*3)4+3*4+5+5,5,x R5,5-6-6-' aRRR( 2*9/;27.6.6-:0;3?6:1:1~A9leTM>5908/:34, V'j#ѼRRRt X \5,5,4,924+4+4+3*3*3*3*3*3)3)2)2(2(2(2(Rx SW'1'0&0&0&0%0%/%.$RR/'2(2(1)RRU/&/'0(0(0(0&/$o R:wez̊ؗ혿卵~lZCw1fUS}S} S'R .(.)/*0)/)0(/)0)/+/*0+m '"w RRRRR ^"+!TR4*4*2(4+&/&1)4+5,5,/'U!5-6-5-5,6.6.2* `RR1)1)5+:3907.6-;3;3XRqk?8|v91<3=5?8:17/7/.'Rro&" WMFC/ ^ӒRRRRRR4+5,4,6.704+4+0(3*3*3*3*3*3)3)2)2)2(2(%R R \+!/&0&0&0&0%$ eRU1(2)2*1+.(V R \R `"1)1)1(0'v RGb댵eSR(/'.).*/*.)0(/'0)0*0-0+  _1+0,RRR,#0&w RX.%4+1(4+.%&3+5,5+5,5- (!5-6,6,6,5-6.6.5./' l _Ry .&2*3+<4>58.8/~yKD^Xc[=37/8/>5;3=5=5917. qSX RR,$YRR1(5,4+4,6.4+4+-$3*3*3*3*3)2)2)2)2(2(-$R j5,R c.#0&0&+"z SRw ,%2*2)1*2*1+1+R cF)7VRw -#1'~R6wI]S _+#1)0*/+/*/*0'1)0**&u RR+$2)1,0- iR/%0%$RR4+2)3*1)5,4+4+4,5-5-2+5-6-6-6-6-6.5.6-6-6.&Sq R \$4*<38/KB{v:2zuA9>6<5=47/7.92?6<4>6<31*R*l& WR \%6-6- RR.%5,5,4,6.5+4+! g0(3*3*3*3*2)2)2)2(2(2( dS2)/,o Rr -#VR _#2,3+2)2*2+1+2+2,2)dTІwRVRR/q>G[S b.&4-5.300+0+/(VRRx 1*2)1+0,WR.$/$ eR e2*2*3*3+4+3*1)4+5,5-5-5,5-6-6-6-6.6-6-6.6.6-7,R j[R1(%91OGqk:07.1)"#<4:28/9/>4>7>5RroSR} 1)6.6-5-5-RR*"5,5,4,4-6-4+(!RT2)3*3*3*3)2)2)2)2(2(R$ ERkRRRW1+2,2+3*3*1+2,4,5-4*3*($R5vHYy `R'l2tmkjjjjjjjjikijlpz瑾:IRk 0)505/72)" eRU RX-(0*2*2*/+WR aRR3*2(4+1(4*3*4,5,4-5-5,5-6-6-6-5.5-6.6.6.6.7.7.6. RWmR]&%2)4, RR:3@7=4<49080;2/(T0p,ɯE~A;w7RW 6.6.7.6.6-5-/'Y( 5+5,5,4,$3*1(RR3)3)3*3)3)2)2)2(2( RCS k-' ^R.(2,3-3,3*3*4+5-6/4/3,3*4)4,x!Rt?xcjkllloqsuvwwwwwvutrqnlllkkjil|+1Rr 1*1+RUPo=zdR0,1,1-1+1+1,-(y RRRRZ#4+$+"4+5,5,4+4,5-5-5,6,6-6-5-6.6.6.5,4,6.7.7/6/2* gRR aUS du SRRR7/:1:2>7>7<4805- eRSRR\Y WRw /(7.6.6.6.6.6.6-5-!&5,5,5,4,&4+URR3*3*3*3)2)2)2)2(*!RQR+%3,-%":4-3.3--(2+3+4-6.6/7.4,3+3+4+5.0* V]fkllllnquwwwwxyxxxyxxxwwwwvsollllllkkin哿!}#RRYR+p7ʘ Y _3-2.0.0-2,3*2+2,2-# aVURR 4+4,4,3*2*5,5-5-5-6-6,6.6.5.6-5-5,6-7.7/7/7.7/.&XRRoRVRR g91;29190<3=5>5=6 cRRVb S;w7RV 6.6/7.7.6.6.6.6-6-5-5-/&5,5,5,4,,$4+} RRS#3*3)3)3(2)2)1'"RRR)'4-4+3/,B3/3-3*6/707/6/4+2*3*4.4-4- "R3yflllotwwwyzzzzzzzzzzzzzzzzxwwvrmlllllllkgqR\l@XR"5-7273102,2+2+2,1-1.0,WYRR j+#2+3,3+5-5,5-6,6,5-6-6.5,6.6.5-6-.&6.6/7/7/7/&RR 5-&!RR0'5+:1=4918191?6*#RR3+<4/(RT˲ WRv /(7/7/7/7.7.6.5.6.6-6-5-5-5-5,5,5,5,4,2)R mTX)!3*3)2)0' bRRRRy5,4,4,/938603, `[("70605,4*3*4,3.4.2*{ Rf3lpuwwxzzzz|}~~~炶膸銺錻ꎽ鑽链꒾钾钾鐽ꌻ鈹肵ywsnllllllle8u`f䊺Sq 4,4+608484613,3+2+2.1.1-3//(SRRV4+4,4,4-6-6-6-6-6-6.6.6.6.,$r 7/7/7/7/7/7/7/RR6.("RR3+5,6.<4;4812* g 4-7/7/7/7/|R@{>P62nRK!RRRTHwwzz|灵爹鐽芶Rw,Mf+Eo**(( ( ( ( ( ( ( ( (,Kc(( ( ( ( ( ( ( ( (,Cs,If,Jc7Xtڎzvnllllliz!Rl 0142514.5.7161RR5.3/.:/94.5.3+RRR dRRW3+$ _RRRR7/7/7/7/7/7/7/7/7/' RRRRRo$7/7//(qR| 1*7/7/7/7/7/7/7/7/6.6.} R̴Ѽ-n)RX 6.7/7/ZR7/7/7/7/7/7/7/RRZ.&6.6.6-5-5-5-5,5,)! ^RRR' '4 (= (= (=FDR l3/5/6.6.708274-&71\q5/5062?W88,+S i_z,Je+@x(( ( ( ( ( ( ( ( ( ( *,,Kc,Kc(( ( ( ( ( ( ( *',Gi,If,Jc,Jc,Jc.Mfȗzvolllllk#3R c/+525/4.% cRRR3+7/85+G3/305/RR-,VXRRRRRRRRY2*7.7/7/7/7/7/7/7/7/w RRRRRR e5-7/7/5-R b*#7/7/7/7/7/+$7/0(T>y:RRR 1)7/7/7/7/1)Z7/7/7/7/7/7/7/y RR i2*6.6-5-3+& `RRT&4-,/ .< (= (=@NTZ-(606/6.6082:393916/6.Dh735361Gp5.}%RMljewyz|犺葼q8Xr,If,Cq(( ( ( ( ( ( ( ( ( ( (+Fm,Kc*.( ( ( ( ( ( ((&,Cr,Em,Jc,Jc,Jc,Jc,Jc,Jc,KezӐxwpllllll,IS [*(0-|RWRR#8383e݀7231303/v R"5041#$R \RRRR eSR4-7/7/7/7/7/7/7/7/1)RRR~ 2+RR6.7/7/7/$WU7/.'RR6.7/7/c RRRR%7/7/7/-%7/7/7/"7/7/7/7/7/7/7/RTRu +$| VRRTnRR]y ] /2 (= (=6L US'"606/6/6/81:4:4926.5/5/:;?O625/5-Js(#R^kuwzz煸萼v8Ws,Jb,If**( ( ( ( ( ( ( ( ( ( (*/+Ih,Kc*"( ( ( ( (*!+7,Gj+As,Gf,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc0Qkxvplllllk;iVRRRk@FU j96:7az70818240-* j-'6/605043RKXp R ]1*7/7/7/7/7/7/7/7/7/RR6.7/7/RR7/7/7/7/ cRRRRRR5-7/7/1)RR8u4Ȯ(j$RR3,7/7/7/7/ 0(7/7/7/' 7/7/7/7/7/7/7/#Rpr RRRRZ_RRRRRRR<" (= (= .F S&R61606/6/8394:2:4706.506273?S886.5-# WR6{kswz}猺懱Bb,Jc+Je,Gi(( ( ( ( ( ( ( ( (("+7,Gh,Cq,Jc+=},En+4*2+9+Co+Gk+Av,At,Jd,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,JcCixwollllljEU [Ea"mKR'#85P]@A81707084)'2/405.6/505030 ` R E%/&#RRR' 7/7/7/7/7/7/7/7/7/ fY&7/7/7/7/6.RR7/7/7/S lVSR g2+7/7/6.{ RRRA{=RR /'7/7/7/7/7/7/ j2+7/7/7/7/7/7/0)&~ RRRV d bSS ` kt dt z "&% *= (= (=N9R7/61707/&5/:5:4707/6/60647472Hk3,R[Otwy炶萼f.Lf,Jc,Jd,Kc+=}***#*!*!*"*$***4+?y,Je+Au+Co,Jc,Jc,Jc,Cn*9+;,=}+@w,Gj,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,JcuˍzxvnllllkiZ`dMSx 5/8?F\:5:6806183724151605/6/5151/)SQ#(s RRRx *#7/7/7/7/7/7/)" j.'7/7/7/7/7/7/5-v RS#7/7/Y1)/'TR$7/7/7//'/(RQNRRn("7/7/7/7/7/7/7/7/ RR("%t URRRRX j((+",%1'1'0'1'%0&0&0&N7 (= (=D?R l4,7/7/7/81*$ e)%73606.7/83637360+#eR j9brwy煷玹Gi,Jc,Jc,Jc,Gi+;+9+:+<+=}+=}+=}+<}+<~+?z,En,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc:]yzwvmllllkhfed'R"51Du6399:582838294624150605/5/6061'%RR,#0'# iRRR.'7/7/7/7/%3,7/7/7/7/7/7/7/7/2+ nRT&7/ 7/7/&WV%7/7/3+7/7/5.^ "f.n*RRR,%+$)"( #~ pRRRRRRRRV\WRR2(2(2(2(2(1(1'1'1'1'1'&0&0&&, (= (= .:\,R"7/7/7/8292;6w R m2+607373744.TS;xkowx煷犴;[w,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc~Պzzwslllllihe-PRV)D61636694;6938081:5514141606/606350Rm 0&1'%VZRRS/'7/7/7/7/7/7/7/7/1*#7/7/7/1* fRV("&6.7/7/-%~ aS7/7/7/7/7/RƬmjRRRRRRRRRRRRRRRRRTR]Y-m)UR]Ro ,%RR2(2(2(2(2(1(1((1'1'1'1'0&0&M8 (= -7Q SR7/7/7/7/<7;4*&RR \#7384*& hRc$Wlmuw烶戲6Up,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,JcW}zywpllllkhfeD `R2-6278;7:492809283525130(!61717/7/kR( YSRU[RRS-%7/7/7/7/7/#].'7/7/7/7/0( `RY( 7/7/2+ g1) oR5.7/7/7//(R V&" WMFC/ b_XUPMR-x)6262=8FCKGYUc_]ZURRRRRS@z5,5,5,5,6,6,6,6.6.6.'Rp6.*# bR\)!RR h,%cR#fθͶ'j#R b'!7/7.6.6.6.6.6.6,1*5,5,5,5,4+4+4+.%RRR3*3*3(2'[RRRRS Q8& +9*_,a,a ZSS}S}ߦ]`befhllllowz玺2Ql,Jc,Kc:VnَXp9Vn]wsݱ딿뀙ou~nu}̊nu}olllljheda]]]]_S}S}V,a%Uz (= 78p RRw %5.7/7/]W\ W8~3RR^ZȈ4+5,5,5,5,6,6,6.6.6./(RR ]7/7/7/7/0(" QR("7/3,"RRjfxuSR2+7/7/7.6.6.6.6.6,6,5,2+5,5,5,5,4,4,4+4+YRYS#3*2* RRW mRR 11 (= (=+_,a,aURS}S}Ҧ]`cefillllpwz玹2Qk,Jc>ZqڅB]tPko듼ynu}yԁnu}llllkhfda_]]]fS}S}W,a#Qu (= (=!;>5-&VR _/'7/WR U`۱̰94 YRR ^(!4,6,6,6,6.6.2+ iRR 7/7/7/7/7/7/+$R7/7/7/7/(!` R!f̶ˈRR%7/7/7/7/7/2+6.6.6.6.6,5,5,5,5,5,5,5,4,4+4+r RTU(  dv } ZRSU 2/ (= (=,_.c.cVQS}S}n]acehillllrwz玹2Qk7TkXqPi~Id|pϡ펰s}nu}ھnu}nlllkhfea_]]]ozS}S} Z.c Lm (= (=':A9?8:25-  eRRr E@S(j$æ:6VRR[#0(6.5,} RRR("7/7/7/7/7/7/*# d4,7/7/7/7/7/2+RRRIEROLR7/7/7/7/7/7/6,6.6.6.6.6,5,5,5,5,5,5,4,4+4+RR \ URUXR n4+ (= (=(Y.c.cYQS}S}Mcacehjllllswz玹4RmE`w;Xo_|w퇠ov~pwnu}nllllhfea_]]]~cS}S}$[.cCa (= (=,9C6-(WRRRRY 툺("XRRRnRR i fR2+7/7/7/7/7/7/(!'!7/7/7/%7/7/7/7/( c RZ Y RRRR7/7/7/7/7/7/6.6.6.6,6,5,5,5,5,5,5,4,4,4+$R~,"RRRZr R5,b1 (= (=&Tx/d/dWQS}S}2hqacehjlllltxz热?_z@[s?[r^z~̗}nu}ynu}nlllkhfea`]]]⎼:pS}S}*`/d6@:921+;37/7/7/=8RmjŞ.p*[ aRVSKFS&RRRRYz #*#2*7/7/%R7/7/7/7/7/7/7/1(SR#fyv URy /'7/3+RR7/7/7/7/7/7/ RR'!6.6.6,5,5,5,5,5,5,5,/'p RR,".#,",#.#%Q R$1"5"46 (= (=B`0e0e%_ QRS}S}nacehjlllluxzt`y9Vmj㑾꓿팤ovpwڳnu}olllkhfeb_]]p}S}S} X0e.b (> (=E;9195"[<6:27/7/5.*#RRY T&o".()v$`[T c ]"w [RRRRR[u RRY( +$0(3,7/7/7/7/7//'SR#fҽ(j$R ["7/7/7/7/("R7/7/7/7/7/7/,&RR[,&6.6,6,5,5,5,0' u SRRXU fu zU, /4 (= (= (= (= (= (= (= (=5O1f1f,d QRS}S}9osdehjlllluxzoJe|ߦ:Wozʌꎽ둿듿냓nu}w~̇qollllhfeb_]]⊻BvS}S}(`1f'Xz (= (= /< ,< (= (= ,8I:|:,} XV _s %+ ,",">5R0*R _&0&0&* !nYRRRRRRRRU c lz   bRRRR&" WMFC/ RRR2*7/7/7/7/7/6.u 7/7/7/7/7/7/5.URR e2*6.5,(" mRRRc (q#&s!fWRG 2. (= (= (= (= (= (= (= (= (= (> (= (=0d2f2fQ QSS}S}ܦcfhjlllluxzqB]u (= (= (= (= 2M9YElIrFmEk .G (= (=&Tv3f3fV QRS}S}Omehjlllluxz}/Mf3Qj׈銻ꌼ뎽둾듿s}nu}nu}p|wwnllllhfea`]yUS}S}U3f3f:T (= (= (= /I ,C 1J ,C (= (= (= (= (= (=`3+$,",",",",","GC_[ b+"+"+"+"+",#1'0&0&0&0&0&0&#eb"fRRR3,7/7/7/7/7/!7/7/7/1(7/7/7/7/7/4,*#RR̷vRR Y;6 ;N (= (= (= *@Fn[aaaaaaMw (= (==X4f4fX Q QTS}Vdhillllsxz~/Mf|ˈ膹銻ꊼꎽ됾듿owqw~nu}syywnllllhfea_]YS}S~"]4f3f (= (= +Aabbbb]Ow8T +? (= (= (= 4;"*,",",",","GAX z1'1'1'1'1'0'1'1'1'/%*!#Rliϸ5s1RR0(7/7/7/7/7/7/7/R' 7/7/7/1(("  nSRRRsoϹ/C (= (= *@Gm`aaaaaaaa] (@ (= ,B3e5h+c Q QRS}S}J}yfjllllswz}V}脷醹鈺銻ꎽ됾뒿튛nu}u}tznu}vzxwmllllhfea_oQS}S}S4h5h*Wz (= (=:Wbbbbbbbb]>^ +? (= (= (=](s eWRR,'~ 2'1'1'1'*!kR [SR [m 1,ǭC}?RRx +$7/7/7/7/7/7/3,/(+$v RR| qWRRRRRhEAҽ (= (= (= 1LXaaaaaaaaaaa:Z (= (=&Rs5i5iR QQS~S}T~٦fillllqwz|~悶郷醹鈺銻ꎽ뎽뒿딺ߒ̒Ѫnu}ov~ow|~zxvlllljhfea`S}S}S}S5i5iC` (= (=LrbbbbbbbbbbZ 1K (= (= (= G*h ` ʭLFk2(2(2(2(1(,"r RR?}; VRRR `y p bURRRRRRRR_ 0x+ZW̶*]8 (< (= (=;[_aaaaaaaaaaaaO| (= (=4M6j6jX Q QRS}S}1hfllllpwzz聶胷醹鈺銺茭̌մunu}nu}r~ԃ~zwullllkhfdax2hS}S}S[6j6i/F (= (>]bbbbbbbbbbbaCd (= (= (=e.'!U eăY2(2(2(2(2(2(2(1'5./w*S7u3ebSRRRRRRRRRRRVd#q84NKhe~|li]d (< (= (=>a`aaaaaaaaaaaaa` /G (= (=+Z~6j/e R Q QSS}S}hwllllnwyz耵郷醴߈̿qzov~|nu}u邶|zwrlllljhecbVS}S}S R3h6j+Z (= (= 2LLsJpKpNuU_bbbbbbbbEj (= (= (=?lRRR,$2(2(2(2(2(2(2(2(2(2'82'n"RѼ̼ѻѻ̷ƫŪŪŪ̷ѻ:= (= (= 6T`aaaaaaaaVLvCh@c=_AdCj=^ (= (=6Q7k7kT Q QRS}S}Wݦillllvxz~聰݇߶qxpwszou~z煹邷遶zzwpllllifec}T~S}S~QR7k7kCa (= (= /G 4P 4P 4P 4P 4P 4P>_QyabbbbbbGl (= (= (<~TRRRR"2(2(2(2(2(2(2(2(2(2(0'Rw (= (= 0J_aaaaaa]Jr9W 4P 4P 4P 4P 4P 4P 4P 3O *? (= (=+Y|8l(d Q Q QRS}S},djlllsxz惢؜ɲznu}ou~pyȊ醹鄸郷逵~zywmlllkhfes"[S}S}R Q[8l6j ,B (= (> 3N 4P 4P 4P 4P 4P 4P 4P 4P:XPzbbbbbb;Z (= (=<9+$#RB}>RRR/(2*2(2(2(2(2(2(2(*"R,A (= (=Uaaaaa`Mx 7U 4P 4P 4P 4P 4P 4P 4P 4P 4P 4P /G (= (=1G8l9mX Q Q QTS}S}Mkllpz؇˻ëj[YWWWY[ftӸݕnu}nu}tڈꈺ醹郷邷}zxvllllkhfe.fS}S}R Q Q5j9m(Tv (= (=/G=fXWW@k0[} 4P 4P 4P 4P 4PBc_bbbb` 2K (= (=j0," _RVS f,$,$0'3*3*3*3*2(2(2(2($b&" WMFC/ `t (= (=>aaaaaa]?c 4P 4P 4P 4PGf@k]szyeNw=Z ,A (= (=#Ml:n,f Q Q Q RT~S}S}hllvʉrOQ[is}~yrdTZүȌx~nu}z抻ꊻ釹醹郷遶|zwrlllljhd7mS}S}S~ Q QU:n:n7O (= (=m둾뎼늺ꈺꄷ|JzFf 4P 4P 4P9X[bbbbW (= (= ,<(%e RURz3*3*3*3*3*3*3*3*3*3*2(!=y9 *? (= +B[aaaa[9X 4P 4P 4P%PqZ腷鈺銻ꎽ鑾뒾Ry (> (= *@3d;oX Q Q QRS}S}S}z̦xϿlRYnxf[Ь}험ɯqwov~ꍽ늻ꈻꆹ鄸郷zywnllllih9oS}S}S~ R Q Q*e;o2b (= (=8O链뎽댼ꈺꆹꃷ逵sw=m6R 4P 4P9X[bbbb>^ (= (=`3} b"RNJ&!4+3*3*3*3*3*3*.&(!#R]Zp (= (=AdaaaaZ9W 4P 4P 4PKzzu然膹銹茻鐽꓿@c (= (=3L9m8nS Q Q QRS}S}Xզ彤UYvzhdƤnu}rz̐뎽늼ꊻꆹ醹胷遶|zwullllkf䆷?tS}S}S} Q Q Q R;o;oB^ (= (=Rv둿뎽늺눹ꅸ逶zyqsT:X 4P 4P<[`bbb[ (= (= (<NR eRRE~AB<~ 4+4+4+4+# lRRR dv72ϸ5G (= (@[aaa_<] 4P 4P?]Xuxyz䁶腸銹銺ꎼ꒾꓾덷7O (= (=Fc `RRRRqnp 4+4+4+4+4+1(%[ RNKɰ (= (=;[aaaaFm 4P 4P 4PZqkwzsހ焷鈹銺茼ꐽꔿu (? (= (=*Vw=q[ Q Q Q QS}S}S}X~ȼeX~eǧ~v}nu}~葿뎽뎽늼ꊻꇹ醸郷邷}zxvllllli8nS}S}S}R R R R R8n=q!Ge (= (=Ad뒿뎽늻ꈺꅷ邵}ysssolO 4P 4P 4PVbbbV (= (=/I[ҰMIRR=y9axrLC4+4+4+4+4+5,92<7RRYmz (= (=OzaaaX 5P 4P 4POlppuxz}烷腸舺茻ꎾ꒿딿Vz (= (= *@1^=qU R R RS~S} W~c[éĪūūŬŬŭĭíïiv̴nu}ov뒿뎽뎽늻ꊻꇺ醹郷郷逶zywqllllkhhNS}S}R~ R R R RX>q;l ,B (= *?Д됾덻늺醸邶逴rymsqnkf2c 4P 4P<[abbb1I (= (=ʄXTRؙb[:14+4+4+2+ V/? (= *A_aaa?b 4P 4P/ahmnqmwzqށ脷船銺錻鐽ꔿ;^z (= (= ,B5e6n R R RS}S}i}ùf[ĨŨǪȩȩƙŭŭįíiǧ~nu}nu}wԓ뒿뎾뎽댼ꊻꈺ醹酸郷遶|zwvmllllifeXS}S~ Q Q Q R4l>r#Lj (= (=:[x둿뎽늻눺ꅸ邵~yvtsplif^ 5Q 4P 4PT~bbbFh (= (=YvpqR m<5zϣvp<7YV_i (= (= 9XaaaX 4P 4P 4P[fjlpnvyz~惵腸船錼鐽꓿ꔿ뒽 (= (= (=&On?s2k RSS};dǿnZĥŦǦȨʦNjpomlifliflifmjfnjfvuuǭƯįíḓ݊tynu}z蒿둿뎾뎽덼ꈻꈻ醹酹郷邶~zywpllllkhfemaS}S}R R R]?sRR' 2*/'/'0(5,5,5,5,0(RfcR9$ (= (=Q~aaa8V 4P 4PQ`dfkmplvzz~烶腸鈸錻ꐽ꓾~ (= (=6O?s?sXRS}Dh^uţɤˤ̛̥kkkfecfdcfcbfcbfcbfcbfecfecifdjhelifxxyíȭŭĭvf􋍎Г뒿됾뎽뎽댼늻ꈻꇹ醹鄸邷逶|zxvmllllkhfebaㇺYS}S}SV?s?s7P (= (=[둿덽ꊺꇹ鄷逵syksqokfea_[(X 4P 4PPxbbb9V (= (=L [(!6,6,5,6,5,5,5,5,&d&" WMFC/ RR83 (= (=YaaW 4P 4PGk[_bfhlnptxzrނ胶船銺ꎼꑾ딿Rv (= (=%On@t@t TST}~ǯk]šɡʢ̤Οlmnecbdcadcadcadbadbadcadcaecbfdbfdchfcjhe}˭ɬŬĬj˩|뎾뎽zfk߆酹鄷邷遶}zywqllllkiheda_kS}S}R~ R7o@t*Uw (= (=:]z뎽ꌻꈺꅸ邶wysrpmjfc`[[9r 4P 4PFjbbbAc (= (=E e&6,6.6,6,6,6,6,5,jfVS/I[ (= (=`aaNz 4P 4P([Z^`dfjlqjxyz然臹鈹荽ꎽꔿ,Ni (= (=6fAu1l RR~;dXğʠʡ̡Ϣzecbcb`b```^^_^^_^^_^^_^^a__ba`ca`ecbfcbfedife̬ɫŬī|]􊊊h (9Od|܂逶~zzwsllllljhfeba]a>sS}S} R]Au>q ,B (= ,Bގ늺ꇸꄷ逵uylsrnkhe`^[[M 4P 4P>^bbbGl (= (=?n $6.6.6.6.5,6,6,5, [̴%@R (= +BaaaGn 4P 4P>x[[_beiloptxzt焸爹錻鎼ꑾ꒾ꑻ,B (=.CAuBv!a RS}exűe_Ûȝʟˠϡєba``___^^_^^^]]^]]^]]^]]^]]^^^_^^`_^caadbafdbfdbnnmǫ̫ȫūjɢnoz%r}zzwulllllkhheda_]^nS}S}RWBvBvA[ (= (=^눹醸郶tyssqlkfc`][[Y 4P 4P8VbbbNv (= (==w!7.6,2(+$$! mR5G (= .FaaaCh 4P 4PE[Z_adfjmpiwzx烶舸銹錻됽ꔿr (= (=B^BwBwZRV~ZǛɜʡЦӣx`_^_^^_^^[[[ZYYYXYXXXXXXYXY[Z[][]__^_^^`__b``fcbfdb̪˪ƪĪzWۊ|||&1|zzwvnllllliheeaa]]]⊻S}S}S R;rBw1_ (= (==aꈺꄷ聵xynsrolheb_[[[[9W 4P5RbbbQz (= (=:"7.6,'~ RRR<7ç+@ (= (>aaa@d 4P 4PK[[[_ceiloqvyzx⁴膸芹錻ꎽꑾOu (= (=(TuCwCw SS:d⭖xTǵ鶶fffXXXYXYXXXXXXYXYXXXXXX[[[^][_^^`__ca`fdbtvyΪ̩ɩũèXѺIjzwwnlllllihfeba^]]]u2iS}S} R'dCw@r (> (==Uꆹꃶsypspmjfc`[[[[[ 4P 4P 4PbbbS| (= (=^t|!7/7/7/7.4,3,]R4G (= .Faaa@c 4P 4PL[[[^adfjmqjwzv焷燹ꊹ荼ꑽ5Wt (= (=8fCx>uRSPn]eڷxxyUUURRSTTTVUVWWWXXXZYY][[_^^`__dbafdbŲ̃˨ƨħjǩ555"wvnllllljhfeda_]]]]fTS}S} R"cCxCx7P (= (=|م邵zyqsrokieb_[[[[[8V 4P 6SbbbT~ (= (=n837/7/7/7/7/7/'R&@T (= +BaaaAf 4P 4PI[[[]`bfjlpqvxz|ザ腷鈹銺ꎽ:R (= (?CvEy*h RS~l}UzϵyyyRRSRRSSSTVVVXXXYYY]][_^^a__fcb̧˧ȧħulQQQ_mlllllkhfedaa]]]]]_mS}S}SWEyEyA[ (= (=e逵qyosqljfd`][[[[X 4P 4P8VbbbQz (= (=yFB p7/7/7/7/7/7/li1K[ (= (=`aaEj 4P 4P@z[[[[^adfknqjwzt脷釸銺酲 (= (=3KEzEz_ SS}QǴ__aQQRSSTVVVXXX[[[^]]_^^cbaϦ̦ɦŦz`ҊiiiAelllllkhffeaa^]]]]]]S}S}S TEzEz(Ss (= (=W|zsssokieb_[[[[[L 4P 4P?`bbbMt (= (=+VBxtR["7/7/7/1(SNds (= (=XaaJt 4P 4P6m[[[Z]`cfilpovxz|悶腷鈺p (= (=C`FzFz^ RS}OônnnQQRTTTWWXZYY][]_^^a``Х̥ʥƦåY⊊ttt5Splllllhheeba_]]]]]]]S}S}R VFzFz1[ (= (=Foqynsqmkfda][[[[[8o 4P 4PGlbbbEh (= (=ARRRx *#7/,&7u3t (= (=O}aaS 4P 4PLp[[[[[_aehlpqnwzr݁胷舺^ (= (=&OnGzGz URS}O³rrsRRSVVVXXX[[[_^^`__Ѥ̤ˤƥäY銊|||4Qnlllkhhfeba_]]]]]]]]⌼XS}RRGzGz8f (= (=7^~yutsolifb_[[[[[[$T| 4P 4PR|bbb>_ (= (=FR>83+1(1(4,] &" WMFC/ ~ (= (=Bfaa] 4Q 4P8VW[[[[[`dfimpovyz~烵腷Nu (= (=/[|G|G| TRV~檝OómmmTTUYXYZYY_^^_^^ѣ̣ˣǣãY=allkhheeba_]]]]]]]]]ⅷ'`S}S~REzG|_bbbb=] (= (=XR6t1R2(7/5. Z} (= (= 8VaaaLw 4P 4P 4PW[[[Y^adfjmqjxzz'Je (= (=FyKE|RRS}U쵶^]]_^^rzўϞ˟ɟşncҊhhh chfecba^]]]]]]]]]]]]]⌼WS}S~RKKCu (= (=%Jhmsrnkhe`^[[[[[?y 4P 4P 4QYbbba .E (= (=x# TкR2(7/'!d8M (= (>Yaa_;[ 4P 4P%V}Z[[[[_ceilppuxzt&Jf (= (=GzKCzRRS}w^lʹutt`__Й̛ʙǜÜczPPP Ufedca`^]]]]]]]]]]]]]]ⒿVS}SRKK@p (= (=.Utssqmjfc`[[[[[E 4P 4P 4PInbbbbOx (= (=[9A9OGB>KG݈R1(4,` | (= (==^aaaV 4Q 4P 4P,`[[[Z]`efjmpjwyx&Ie (= (=IzLI~RRS}VsuZ浵jmrϙϙ˛ɜƜSν[s /?Zeedaa_]]]]]]]]]]]]]]]]S}S}SXLL;i (= (=2[}srokheb_[[[[>w 4P 4P 4P?`abbbb3M (= (=W/&6/T~zR6.& ,n(,A (= (@ZaaaLw 4P 4P 4P OtV[[[`beilppuyz#Fb (= (=GyMMS SS}7b娞WеϙΛɛȜÜwOqdGs9[|>cUeedba`^]]]]]]]]]]]]]]]]aS}S}S VMM6b (= (==hspmjfc`[[[U#Sz 4P 4P 4P=]^bbbbT~ (= (= 5; [R5,,~(pmie b0( W˲p (= (= 7VaaaaIq 4P 4P 4P 4PB}[[]bdfknqivW ,C (= (=CtMMT SS}U}ej뻿µΣԙϛʛɛŜ^_؊hhhfeeecaa_]]]]]]]]]]]]]]]]]]ojS}S}SZMM.Yy (= (==ZWnkieb_[R,`9W 4P 4P 4P?^_bbbbb5P (= (= 22(# c6.RWR o|VS/C (= (=P}aaaaLw5R 4P 4P 4P=];sW`cehmfNA` 4P ,C (= (=AoOOZSS~S}zŬX輾ٙʙɛǛÜ}Tůyffeedba`_]]]]]]]]]]]]]]]]]]]]}GzS}S} S&fOO&Li (= (= 0J 4P 4P$Qu/`2c4h#RxGk 4P 4P 4P 4P 4QInabbbbbLr (= (=>;1*2(z !WC>R]&" WMFC/ ^ (= (= ,EZaaaaW;Y 4P 4P 4P 4P5Q:W$Qv!Nq%Rv7S 4P 4P 4P 4P ,E (= (=;hOO XSSS}:cjjʷۙəșě^h󊊊kedcbaa_^]]]]]]]]]]]]]]]]]]]]]⌻*bS}S}S*jOO@Z (= (= 2M 4P 4P 4P 4P 4P 4P 4P 4P 4P 4P 4P?^Wbbbbbb[ +B (= (=$02(2( nRRR$h #|R@Xi (= (= 5R_aaaa`Lv6T 4P 4P 4P 4P 4P 4P 4P 4P 4P 4P 4P 6T:[ (= (=3^PP]SSS}T}Ȭ[޾ƸۘșęoZȶcbaaa_^]]]]]]]]]]]]]]]]]]]]]]^S}S}SSBzPP0F (= *@Ks<[ 4P 4P 4P 4P 4P 4P 4P7TCfWbbbbbbb` 0G (= (=_83*3*2*q RR#*$RRR3G (= (= 7T`aaaaa^P}Ae7U 4P 4P 4P 4P 4P7UAeP}^Nz (= (=*RrPP,mR RS}S}fy]ݘęY񌍍la`_^]]]]]]]]]]]]]]]]]]]]]]]]]qeS}S}S WPPI| (= (=5Obb^UQzOwPxS}[abbbbbbbba:W (= (= 6;%""R$7/7/7/(n$,n(.C (= (= 5R[aaaaaaaa[YVY[aaaaV (= (=@ZQQ6sSSS~S}S}褞lfܘ[l^]]]]]]]]]]]]]]]]]]]]]]]]]]]]]⌼2iS}S} SZQQ;h (= (=>^bbbbbbbbbbbbbbbbb`4O (= (= *;GR[z 2+7/7/7/QM (=2JRRPSSSS}S}Ȩcmڝė_f̿يf]]]]]]]]]]]]]]]]]]]]]]]]]]]]]cS}S}SS+kRR*Rp (= (=Jpbbbbbbbbbbbbbbbb[2M (= (= *=$/0* ^R ' 6.7/7/7/7/NGS5I (= (= (>?a[aaaaaaaaaaaa[>a (> (= (= (=K|SS[S SS}S}=r`l଼Ζ^ct]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]ℸL~S}S}SSGSS8Q (= (==[^bbbbbbbbbbbbbaIo (= (= (= .<%14+4+4+(!} Rw 7/7/7/7/80 f/I[ (= (= (= *@?cS`aaaaaa`S>a (= (= (= (= (= (=;fTTbSSTS}S}ٔdcИZfŹa]]]]]]]]]]]]]]]]]]]]]]]]]]]]]cS}S}S~S VTTK| (= (= (= (= (=Gk^bbbbbbbbbaOv ,E (= (= (=<;,05,5,5,5,4+4+w %x 6.IE[X,@ (= (= (= (= ,C 3N>a>`Bf>a 1K +C (= (= (= (=0C^r (= (='LjUU@ySSSS}S}J}֍jUתʘsUlǼߍ^]]]]]]]]]]]]]]]]]]]]]]]]]]]]⊼LS}S}SS,lUU7` (= (= *? (= (= (= (=:XGlPyXZYS|Lq>] (= (= (= (= (= C,+(5,5+5,5+5,5,5, [RRR7/7/1,Rkq8' (= (= (= (= (= (= (= (= (= (= (= (= (= +>fy (? (= ,AUUU VSSTS}S}٢ыҢxUbƸνӾֽոҰͥřW[~զ]]]]]]]]]]]]]]]]]]]]]]]]]]]pS}S}S~SSIUUjkCZj (= (=CrVVcSSSS}S}7mNJjUbyZVhĸIn]]]]]]]]]]]]]]]]]]]]]]]]]d2iS}S}SSZVVM~ (> (= .R(!7/6/01,3(3(3,2016/&Rzx (= (=*PnWWLUSSTS}S}hɍࣧhVR`umZRWhꗗyWW0Xx (= (=C,ӎn[o}KaqUjxfzR1(6,6,5,5,5,5,5,5,liߑ `7/7/7/;7tqğR7/7/7/7/7/7/7/7/2+[R *? (= (?TWW]SS SS}S}Uզא⭳cSOMLJKMMOSd| ]SS}S}=r`]]]]]]]]]]]]]]]]]]]]_㑾TS}S~ SSUWWV3J (= (=M R1(6,6,6,6,6,6,5,5, Z̴rm[7/7/GC?z;` U2+7/7/7/7/7/7/%YR]Ujy (= (=9cXXC~SSSSS}S}'`♠ǩ֔_yXSSTS}S}7mj]]]]]]]]]]]]]]]]]]bS}S}S}SSS+mXX@l (= (=K5RR1(6.6.6.6.6.6.6.(! XSMR7/FAY c_R7/7/7/7/2(RRRR}z (= (=2IXYYeRRRTS}S}$]ːϛ-dSSSSST~S}S};p킶_]]]]]]]]]]]]]]]m'`S}S}SSS XXYY8Q (= (= KVSR1(7.2*("%RNK$R82RS e6.7/5,YRRRRR,GW (= (==iZZGSSSSUS}S},eަ瞬ձJn VSSSSSS STS}S}'`z_]]]]]]]]]]]e㈺"[S}S}SSSS1qZZEr (= (= .6ecR2(8/6.' lRRc plW4,eŪ?;R%7/' ]R (= (=5MXZZdSSSSTS}S} [Ѧ蝭Ƹ~KlUSSSSSSSSSSUS}S} [y˦퇹o`]]]]]br挼|TS}S}SSSS]ZZZ9R (= (= CFBRR2(7/7/7/7/3+1+RRq 2|.ԾRr 7/7/7/7/7/7/7/RzSSSSSTS}S}S}T~j鞹ԙ`3`V~S}S}SSSSSSSSSSSSSSSSTS}S}S}"[at,dS}S}S}SSSSSe[[W.C (= (=".2(1',&Az=R("7/7/7/7/7/1*U72R0p,ŦRR `#&("1*7/R]s (= (==V]]]&jTTTTTST~S}S}S}S}TϢ톯[,eS}S}S}S}S TTTTTTTTTTTTSSSSSS STS}S}S}#[Tݦf0fS}S}S}S} TTTTT^[]],Ro (= (=P71'1'1(.(bfRv *#7/7/7/%1q,RRRRRRs ' 7/7/RO ,= (= (=7`]]]bTTTTTTSS}S}S}S}S}W,dI|L~ZMJ}*bXS}S}S}S}S}S TTTTTTTTTTTTTTTTTTTTTSTS}S}S}S}S}"[QlxʈօՂn[/fUS}S}S}S}STTTTTTM]]Er (> (= ,=*,1(1(2(/&RRRRR,%5,cڱR̵RR"7/7/7/7&" WMFC/ /RRf (= (= (?Gt^^ZXTTTTTTSTS~S}S}S}S}S}S}S}S}S}S}S}S}S}S}S STTTTTTTTTTTTTTTTTTTTTTTTTSS~S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S TTTTTTT9x^^W2I (= (=`(/'2(2(2(1(SR4.<51(1(1(#c_[R7/7/7/7/R di4 (= (=1GS__V]TTTTTTTS STSS}S}S}S}S}S}S}ST TSTTTTTTTTTTTTTTTTTTTTTTTTTTTTT STS}S}S}S}S}S}S}S}S}S}SSSTTTTTTT:y__]!E` (= (= 41,&2(2(2(2(2(eĨR2(7/7/4,0(c f S,%7/7/7/R h.'I< (= (=8QY``TWTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTS STSTS T TTTTTTTTTTT h```1Yx (= (= /:,+2(3(3(2(3(,$RR2(2+ aRRtqR| 7/7/7/RSPB<T,%,(8@ (= (=>W[aaWYTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTfaaa=f (= (= (=%/3(2(2(3*2(,"RRPMR2(7/7/=5RB|>nR("7/7/#RwtɈR&0&** 1> (= (= (= (=;TXbbbhTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT,qbbbCo (> (= (=p52(3*2(2(3(3(/&4+4*0( UR1(7/7/rro"zR#7/(!Rli eRRRRG +< (= (=1GN}aaa=zWTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTWA~aaa=h (= (= (=d61*2(2(4(3(3(3*4+3*3*2*SR1(7/&[ صS b4,+$R]Z˳ֱؾеѻƫ&`, ,9 (= (= ,A@jbbb^$lUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT`[bba1Xw (= (= (=G/1(2(4(3(3(4*4*3(3*4+4*4+fR2(5,fA=R.&ROL󈭇 YWC; (= (= (=%Id[bbbCWTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTU,qbbb[$Gc (= (= (=&aEX1&3(3(4+4*3*3*0(4+4*5,4+96xuR2(#!f ]U( RAz=`T,#2(0*f5 (= (= (=3JFrbbbb/r XTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUfVbbbKy1G (= (= (> e(!" R a"5,4*JB=5=9LGR(" W̴}zR lR,n(&" WMFC/ MJR,"2(2(2(2(2(!2 .> (= (= (=&JfUbbbbGdTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTU&lUbbb^0Wu (> (= (=4G82RVh bRR*"4+G?@74,4,A:^Rf XU"wRRb?9R0&2(2(2(2(2(2(2(,,Q9 (= (= (= *@.Tq[bbbbN'lXTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTX+oVbbbbCn.C (= (= (=6O` W2(C76,4+4+4+4+G?[T f[ ֒bv6O`,A (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (=6JC[ku5/U!R h%8/7/A;dćR( 4*4+4+&" WMFC/ 5,haMFRRRR޵ĕv`tKaq6O`$?R6J0C (= (= (= (= (=/C:N.GY;SdPfufzm a `RR/(7/7/7/JCR f 4+?6~x;24,RR~l RR5,7/7/7/7/7/ W[VSߎ[S5,5,5,.&*#4+5,6,.&RVRR1(7/7/7/7/7/#R[ 5,5,5,5,5,5,5,6,5,6,2*Ru 6.7/7/7/RRS@:W0(5,5,6,6,6,6,6,5.6.6. Y f7/7/R W71RZ6,6,6,6,6,6.6.6.6.6,mkhڙU$2+,%6.7/7/0t,1+W1(6,6,6.6.6.6.6.7.7.% IEidV+$7/7/6.7/TPE~A [} ,%,%,%,$+$(!,%7/7/+%#f>9R _5,7/WRT61RRRRRR5,7/7/5/SoR"7/7/=6`̅RR f.'7/7/7/7/C=R3.[,%7/7/94RʱRR+$7/7/7/7/7/7/6/R&" WMFC/ ȭ(# `0(7/]XRn l5.7/7/7/7/7/7/&R! e1(F? WӾݞT,&,&,&,&+$[RR f+$&n!mj@;RRRRRRRRRRRRSܶܶܶܶǙȭ&" WMFC/ &" WMFC/ ~&" WMFC/ ^% ( '"-% % ( &% +%y)"&&p&0S&;&s{'#(t('|' ' (,)& 9'"8'"&#"&!& &] &&S!+%Q F%W%&y&% ( '"-% % ( &% T/%bG&3 G&/%3 A%I%&N% &bG&% ( '"-% % ( &% L9%K.&.&B%R%s9%%K.&% ( '"-% % ( &% L$4&#&jM%R%s$#%4&j% ( '#.% % ( &% L$-%%-%RQ%s$%a%-% ( '#.% % ( &% T$-%%-%:%$$m%%-% ( '#.% % ( &% Ll$I%%I$v$l$2%%I% ( '#.% % ( &% DT$%%$T$g$J%% ( '$.% % ( &% D9$F%F%v$9$M$F%% ( '$.% % ( &% L $ %q$ %1[$q $2$$% ( '$/% % ( &% l$%U %$$$"$$C$U$%%% ( '$/% % ( &% d#%: %%$b$$/($:#$%% ( '%/% % ( &% L#r% %$$ #$r%% ( '%/% % ( &% D#^%%##$^%% ( '%/% % ( &% D#J$$y##$J$y% ( '%0% % ( &% D#6$$e##$6$e% ( '&0% % ( &% Ln#$$$Q#n#yo#op$$$Q% ( '&0% % ( &% Ln#$$=#n#y|#T$$=% ( '&0% % ( &% Ln#y$y$)u#n#y#P8$y$)% ( '&0% % ( &% TH#]$$]$w##4H#$$% ( '&0% % ( &% \#A$$A$#y#4###;$% ( ''1% % ( &% T"%$$%$`#t#"#$% ( ''1% % ( &% L"$##$##"m##$% ( ''1% % ( &% L"p#8#(#p"";# 8#(% ( ''1% % ( &% L""#8#(#""b#"8#(% ( '(1% % ( &% l"# #l#X#VG#8#(D#""q##% ( '(2% % ( &% Lg"q##R#w"g"xS#q#% ( '(2% % ( &% DN"a{#{#"N"^8#a{#% ( '(2% % ( &% D3"P]#]#vp"3"E#P]#v% ( ')2% % ( &% D"@A#eA#fW"e","@A#f% ( ')2% % ( &% D!1$#M$#U="M!"1$#U% ( ')2% % ( &% L!"#3#E""3!"""#E% ( ')3% % ( &% \!""6"!"!!""6% ( '*3% % ( &% \!"""'!"!!""% ( '*3% % ( &% T!"""!!!G"h"% ( '*3% % ( &% L|!""" !|!""% ( '*3% % ( &% La!M["!["M!a!!!% ( '+4% % ( &% LF!&" WMFC/ > "! "!F!g "!% ( '+4% % ( &% T,!""!!i!,!P!"% ( '+4% % ( &% L!"p"!HN!p!8!"% ( ',4% % ( &% D !(! ( |!!% ( ',5% % ( &% D !!  ]!!% ( ',5% % ( &% L v!!   W>!v!% ( ',5% % ( &% T jh!h!    Q !jh!% ( '-5% % ( &% TW `J!J!y  a W !`J!y% ( '-5% % ( &% L; U+!+!n "a ; | U+!n% ( '-6% % ( &% D! K ! !c_ ! f K !c% ( '-6% % ( &% D A  YC  O A Y% ( '.6% % ( &% D8 o O) o9 8 O% ( '.6% % ( &% L6 V 6 D V!P | 6% ( '.6% % ( &% L6 ? 6 :?   6% ( '.6% % ( &% LTd * d b* T % ( '/7% % ( &% T) #  )  # % ( '/7% % ( &% Lc # #  c # % ( '/7% % ( &% u  c c4mljhlu % ( 'R% % ( &% D# G C # + G C % ( 'R% % ( &% TC h # C 7 h c^ % ( 'R% % ( &% D^ c^ c^^^% ( 'R% % ( &% T^7 ^ c7 h#  ^% ( 'R% % ( &% D    % ( 'R% % ( &% T         % ( 'R% % ( &% D       % ( 'R% % ( &% TQ}   I Qc c} u % ( 'R% % ( &% DI Pc cI Pc cI QI PI P% ( 'R% % ( &% TI $ v} vc cI Pi $ 7 J} v% ( 'R% % ( &% Di  7  7i $w  % ( 'R% % ( &% Ty  wy U 7  ; Y wy U% ( 'R% % ( &% D ; Y ; Y ; ; ;% ( 'R% % ( &% T ;@! w Y ;@!U6!s,! w% ( 'R% % ( &% D6!UB!sB!U6!s@!UA!UB!U% ( 'R% % ( &% T*!U!*!6!sB!U!r!s!*!% ( 'R% % ( &% D!r!!r!!r!r!r% ( 'R% % ( &% Ts!r!s!!!r!!!s!% ( 'R% % ( &% D!!!!!!!% ( 'R% % ( &% T!"!!!"""!% ( 'R% % ( &% D"2"."""2"."% ( 'R% % ( &% T!."B!".""B!<!6!% ( 'R% % ( &% D!6!<!6!<!7!7!6% ( &" WMFC/ 'R% % ( &% T!7"!7!<"A!!!!7% ( 'R% % ( &% D!!!!!!!!!!% ( 'R% % ( &% T!!!!!!!!!!!!!% ( 'R% % ( &% <!!!!!!!!!% ( 'R% % ( &% T!!!!!!!!!!!!% ( 'R% % ( &% D!!!!!!!!!!% ( 'R% % ( &% T!Z^"!!!*"ZD"m^"!% ( 'R% % ( &% D*"ZD"m*"ZD"m*"Z*"Z*"Z% ( 'R% % ( &% T*""^"D"m*"Zu"""^"% ( 'R% % ( &% Du""""u"""% ( 'R% % ( &% T""<"$"""" "<"$% ( 'R% % ( &% D" "<"<" "<"<"<% ( 'R% % ( &% T".#o"<" ".#7#S#o"<% ( 'R% % ( &% D#7/#S/#7#S.#7.#7/#7% ( 'R% % ( &% T#7##o#S/#7#n#p##o% ( 'R% % ( &% D#n####n#y#% ( 'R% % ( &% T+##a###i#J#+#a#% ( 'R% % ( &% D*#J#+#J#*#*#+#% ( 'R% % ( &% T#j#(*#J#j#X#(8###*#% ( 'R% % ( &% D#8###8#####!#% ( 'R% % ( &% T##X#)##8##X##X#)8#)#)##% ( 'R% % ( &% D#)S##)8#)S#:##)% ( 'R% % ( &% T#e#:S#:8#)#/#J# e#S#:% ( 'R% % ( &% D/#J# 0#J# /#/#0#% ( 'R% % ( &% T0## d# J# 0####d# % ( 'R% % ( &% D#######% ( 'R% % ( &% T#8$###$$8$#% ( 'R% % ( &% D$0$0$$$$0$% ( 'R% % ( &% T $$A $$0$$ t$&b$A $% ( 'R% % ( &% Dt$ $&$ t$&$ $ $ % ( 'R% % ( &% Ta$ $a$@t$&$ $`$z$a$@% ( 'R% % ( &% D$`$z$a$z$`$`$a% ( 'R% % ( &% T$a*%$$z$a*%%%$% ( 'R% % ( &% D%;%6%%*%;%6%% ( 'R% % ( &% T$6%$%6%%$$$% ( 'R% % ( &% D$$$$$$$% ( 'R% % ( &% T$%$$%$$$$% ( 'R% % ( &% D$$$$$$$% ( 'R% % ( &% T$$$$$$$$$% ( 'R% % ( &% <$$$$$$% ( 'R% % ( &% T$$$$$$$$$% ( &" WMFC/ 'R% % ( &% Dw$$$$$w$$% ( 'R% % ( &% T$N%$$$$N$`%r$% ( 'R% % ( &% D$M$`$M$`$N$M$M% ( 'R% % ( &% T$%s%s$`$M%%.%A%s% ( 'R% % ( &% D%%.%%.%%%% ( 'R% % ( &% T%&%F%.%&&&%F% ( 'R% % ( &% D&&&&&&&% ( 'R% % ( &% Tq&&&&&&&q&&% ( 'R% % ( &% Dq&&q&&q&q&q&% ( 'R% % ( &% TY&&q&&&&x& Y&q&% ( 'R% % ( &% DY&x& Y&x& Y&Y&Y&% ( 'R% % ( &% TC&&Y&x& &&b&{C&uY&% ( 'R% % ( &% DB&ub&{C&ub&{B&vC&uC&u% ( 'R% % ( &% T.&v&B&vb&{&n&N&.&B&v% ( 'R% % ( &% D.&N&.&N&.&.&.&% ( 'R% % ( &% T&n&i.&N&n&]&i=&d&_.&% ( 'R% % ( &% D&_=&d&_=&d&`&`&_% ( 'R% % ( &% T&`]&w&`=&d]&h[&w;&s&o&`% ( 'R% % ( &% D &oV&&o;&sV& &&o% ( 'R% % ( &% T &Ld&V&;&s &a.&LI&^d&pV&% ( 'R% % ( &% D.&KI&^/&KI&^.&L/&L/&K% ( 'R% % ( &% T/&'qc&qI&^/&KO'i''c&q% ( 'R% % ( &% DO'i'P'i'O'P'P'% ( 'R% % ( &% TP'''i'P'b'{'''% ( 'R% % ( &% Db'''{'b'y''% ( 'R% % ( &% Td'9(d'{''9(`"(v (d'% ( 'R% % ( &% D"(`E(}A(}"(v9(`E(lA(}% ( 'R% % ( &% T'oA((o"(vA(}'''(o% ( 'R% % ( &% D'''''''% ( 'R% % ( &% T'' '''' ' ' '% ( 'R% % ( &% D}' 'X!' ' ' }'X!' % ( 'R% % ( &% T' ' ' ' ' ' ' ' ' % ( 'R% % ( &% D' ' ' ' ' ' ' % ( 'R% % ( &% T' ' ' ' ' ' ' ' ' % ( 'R% % ( &% D' ' ' ' ' ' ' % ( 'R% % ( &% T'( ' ' ' ((-(@' % ( 'R% % ( &% D((-((-(((% ( 'R% % ( &% T()p(A(-()H(\(p(A% ( 'R% % ( &% D(\(p(p(\(p(p(p% ( 'R% % ( &% T(H|) (p(\)H|)c)J) (p% ( 'R% % ( &% Dc)|)|)c)|)|)|)% ( &" WMFC/ 'R% % ( &% TJ)): J) c)|)) )& u): J) % ( 'R% % ( &% D) )< )< )& ) )' )< % ( 'R% % ( &% T ' )"v) )& )< P'"8'" '"v) % ( 'R% % ( &% D'"P'"'"8'"P'"7'"'"% ( 'R% % ( &% T&["Q'"Q'"8'"'"&"&o"'["Q'"% ( 'R% % ( &% D&o"&"&"&o"&"&"&"% ( 'R% % ( &% T&"'"'["&o"&"&7"&#"&"'["% ( 'R% % ( &% D&"&7"&"&#"&7"&,"&"% ( 'R% % ( &% T&!&'"&'"&#"&"&!&!&!&'"% ( 'R% % ( &% D&!&!&!&!&!&!&!% ( 'R% % ( &% T&4!&!&!&!&!&4!&8!&!&S!%h!%L!%7!&"!'&>!% ( 'R% % ( &% D%"!&7!&"!%7!&"!&"!&"!% ( 'R% % ( &% T.%Z &L!&"!%7!%L!.% F%o ^%Z &"!% ( 'R% % ( &% DF%Z ^%o ^%Z F%o ^%Z ^%Z ^%Z % ( 'R% % ( &% T%< ^% ^%Z F%o .% %f +%Q C%< ^%Z % ( 'R% % ( &% D %M +%f  %M +%Q %f %\ %M % ( 'R% % ( &% T %Y%U K%U +%Q %M %9%Y%K%U % ( 'R% % ( &% D9%Y%Y%9%Y%Y%Y%% ( 'R% % ( &% T%cd%Y%9%%$%cD%fd%iY%% ( 'R% % ( &% DD%fd%id%iD%fd%hd%id%i% ( 'R% % ( &% T$%m%hd%hD%f$%d-%M%m%d%h% ( 'R% % ( &% DM%m%m%M%m%m%m%% ( 'R% % ( &% T-%rr%m%M%-%2%rR%sr%tm%% ( 'R% % ( &% <2%rr%sr%sR%s2%rr%s% ( 'R% % ( &% T2%sr%t2%sR%sr%sr%tR%t2%t2%s% ( 'R% % ( &% <2%tr%t2%tR%tr%t2%t% ( 'R% % ( &% T2%sr%tr%tR%t2%t2%sR%sr%sr%t% ( &" WMFC/ 'R% % ( &% D6%r%sr%sR%s6%cr%r%s% ( 'R% % ( &% T$cn%A6%cR%sn%%A$1$!6%c% ( 'R% % ( &% D$1%A%A$1%A%A%A% ( 'R% % ( &% T$!%$!$1%A$$$$!% ( 'R% % ( &% D$$$$$$$% ( 'R% % ( &% T#$$$$#%$$$% ( 'R% % ( &% D$$$$$$$% ( 'R% % ( &% TW#c$%$$#%W#n#y#c$% ( 'R% % ( &% DM#vn#N#vn#yW#M#N#v% ( 'R% % ( &% TN#<#|#|n#yN#vS#<s#?#B#|% ( 'R% % ( &% Ds#?#B#Bs#?#A#A#B% ( 'R% % ( &% TS#2#A#As#?S#=d#2#4#6#A% ( 'R% % ( &% <d#2#4#4#4d#2#4% ( 'R% % ( &% Td#4#6d#4#4#4#6#6d#6d#4% ( 'R% % ( &% D#6#F#F#6#6#>#F% ( 'R% % ( &% T"&#"h#&#6#F##"#"h#&% ( 'R% % ( &% D"##F")###"#F")% ( 'R% % ( &% T"#)##")"""#% ( 'R% % ( &% D"""""""% ( 'R% % ( &% T!""""!1"""% ( 'R% % ( &% D!"1!1"!1!1!1% ( 'R% % ( &% T!"1""!1!'!""% ( 'R% % ( &% D!!'!!!'!!% ( 'R% % ( &% T!!""!!!"!""% ( 'R% % ( &% D"!"!""!"!"!"% ( 'R% % ( &% T!#"!""!!"#"!"% ( 'R% % ( &% D!@'"#""!z'"@#"% ( 'R% % ( &% T!z"!z""""!{!z% ( 'R% % ( &% D!"!""!!% ( 'R% % ( &% T!"""""!!"""""% ( 'R% % ( &% D!"""""!""""% ( 'R% % ( &% T!"!"""!!!% ( 'R% % ( &% D!""!"""% ( 'R% % ( &% T!"!!"!!!!% ( 'R% % ( &% D!!!!!!!% ( 'R% % ( &% T !!!!   !% ( 'R% % ( &% D       % ( 'R% % ( &% T d     d f h % ( 'R% % ( &% D f h h f h h h% ( 'R% % ( &% T  h h f d    h% ( 'R% % ( &% D       % ( '&" WMFC/ R% % ( &% T  5    5 &  % ( 'R% % ( &% D & 6 6 & 5 5 6% ( 'R% % ( &% Ta  |  & 6 |} la \ % ( 'R% % ( &% D} l | |} l | | |% ( 'R% % ( &% TE \ a \} l |} a E a \% ( 'R% % ( &% DL } L a } j L % ( 'R% % ( &% T Uv v a L  ) m> Uv % ( 'R% % ( &% D) T> m> U) m= T> T> U% ( 'R% % ( &% TI= = T) m {bI= T% ( 'R% % ( &% Da{ab{qa% ( 'R% % ( &% T/ccba/01c% ( 'R% % ( &% D.0.0/..% ( 'R% % ( &% T 220. 2% ( 'R% % ( &% D     % ( 'R% % ( &% T    % ( 'R% % ( &% D     % ( 'R% % ( &% T    % ( 'R% % ( &% D    % ( 'R% % ( &% T% ( 'R% % ( &% D% ( 'R% % ( &% TDD4$% ( 'R% % ( &% D4cN4DcN% ( 'R% % ( &% TN4N% ( 'R% % ( &% D% ( 'R% % ( &% TSmS% ( 'R% % ( &% Dymymmy}ym% ( 'R% % ( &% Tyhmmmymyhhhm% ( 'R% % ( &% DhhhQh% ( 'R% % ( &% TQQhiRQ% ( 'R% % ( &% Dxixiixxi% ( 'R% % ( &% Txhiiixixhhhi% ( 'R% % ( &% D{hhh{Zh% ( 'R% % ( &% TyZz{Zhvzly^{Z% ( 'R% % ( &% Dllz% ( 'R% % ( &% TRlR% ( 'R% % ( &% D% ( 'R% % ( &% Tddu% ( 'R% % ( &% Duuudu% ( 'R% % ( &% Tuuuuu% ( 'R% % ( &% D% ( 'R% % ( &% TYYXW% (&" WMFC/ ~ 'R% % ( &% DXZZXYYZ% ( 'R% % ( &% TVVXZV% ( 'R% % ( &% D% ( 'R% % ( &% T7741% ( 'R% % ( &% D4884788% ( 'R% % ( &% T00480% ( 'R% % ( &% D% ( 'R% % ( &% Tgogo% ( 'R% % ( &% DUgUg% ( 'R% % ( &% Tmm% ( 'R% % ( &% D% ( 'R% % ( &% T% ( 'R% % ( &% D% ( 'R% % ( &% T % ( 'R% % ( &% D% ( 'R% % ( &% T r rlf % ( 'R% % ( &% Dlsslrss% ( 'R% % ( &% Te#els#e% ( 'R% % ( &% D% ( 'R% % ( &% T+ 9#+ #  9#% ( '% % ( &% ;T)G 6T)4T).>+ -.,s-. .6 s- 4T) s- 2,$ * T) 6T)G =<>T). % ( '% % ( &% ;.6 6.4.2 N0r 1q 2 ,0 2 1 0 4s- 0 / .0 s- 6.6 =<>s-2 % ( '% % ( &% ;1 62 42 524 ,5h5,25?b42?40 2?h210 61 =<>0 5?% ( '% % ( &% ;b465456|666|,3|6|L5|3|42?3|3p32?6b4=<>26|% ( '% % ( &% ;L5|66|45|66m6@5,25b4O242|3p3o33|6L5|=<>2|6% ( '% % ( &% ;b4O65425I,524 2I,02I1/04021!h226b4O=<>05I% ( '% % ( &% ;1/62I4.I26"1 N0!.6",s-N.6". s-N4s-0N./061/=<>s-26"% ( '% % ( &% ;. 6.6"4T)6".E# -">+E#T)E#,T) T)E#T)!T) 4T)Ns- * 2,s-N6. =<>T)N.E#% ( '% % ( &% ;T)!6T)E#4#6"T)E#j'E#%"#6",#N5%6"$ 5%N45%NT) v&' T) 6T)!=<>#NT)E#% ( '% % ( &% ;$ 6#6"4I#6"Z"! I,!I /!4!5%N"#5%N6$ =<>5%6"% ( '% % ( &% ; /6I4Iv |,FO4!@  !!6 /=<>!I% ( '% % ( &% ;FO6&" WMFC/ ^4|&@m|,||\||4|8o6FO=<>|% ( '% % ( &% ;\|6|4|&,?F?4?|8|6\|=<>|% ( '% % ( &% ;F64 |hv  , !  ! 4 !? @ ?6F=<> !?% ( '% % ( &% ; 6 4#  q Z"r #,#5% $6 5% 4! 5% #0 " ! 6 =<>5% % ( '% % ( &% ;$6 6#4#T)%j'T),T)T) T)G T) 45% T) ' v&$ 5% 6$6 =<>#T) % ( '% % ( &% TJ ( \(S (J'% ( '% % ( &% ;U)6U) 4U) [. "+ ,d[. ,- [.j . -j 4U) -j l, * U) 6U)=<>U) [.j % ( '% % ( &% ;. 6[. 4[. e2 / A1 e2 ,S1 e2 1L S1 4-j S1 S0 / -j 6. =<>- e2 % ( '% % ( &% ;1L 6e2 4e2 53 s4T5,35sc4,3s4S1 3s"3T2 S1 61L =<>S1 5s% ( '% % ( &% ;c4,6545 65r 6+ 6,4 6M5443s44^?43s6c4,=<>3 6% ( '% % ( &% ;M56 645 6 655,35c43434?4)446M5=<>3 6% ( '% % ( &% ;c4654e258s43e28,S1+e281S1+4S13+T2%"336c4=<>S158% ( '% % ( &% ;16e284[.8e2 A1b/Q [. ,-[. .E -4-+S1/S01S1+61=<>-+e2 % ( '% % ( &% ;.E 6[. 4U) [.!,!"+!U)!,U)t U)!U)4!U)t 4U)-t *t l,% -6.E =<>U)[.!% ( '% % ( &% ;U)4!6U)!4O$ U)!'!%!O$ ,O$$ $E $4$U)t >&% 't U)t 6U)4!=<>O$U)!% ( '% % ( &% ;$E 6O$ 4E 8O$ "Q i!bE 8,E +W!8 W!+4W!+$W"1#$6$E =<>E +$ % ( '% % ( &% ; 6E 84E 8!7,G4W!+V %W!+6 =<>W!8% ( '% % ( &% ;G64,]4k)6G=<>% ( '% % ( &% ;]64+r,sG,s4sk^6]=<>% ( '% % ( &% ;G,64 E 7T! E ,E W!  L W! 4 W!sV s6G,=<> W!s% ( '% % ( &% ; L 6E 4E  O$ i! " O$ ,O$ $j $ $j 4W!j $ # W" W! 6 L =<>E  $ % ( '% % ( &% ;$ 6O$ 4O$ U) %d' U) ,U) U) U)U) 4$ U)j ' >& $j 6$ =<>O$ U)j RLArial Black  % Tpc h+c &" WMFC/ >LXSEARCH'%uttU% ( RLArial Black  % Tpc 8+c LXMONKEYi'% ( '% % ( &% T6J (6J t(S (k'6% ( '% % ( &% % ( RLArial Black  % % ( '% % ( &% ;64Y.,E;E;4NE;nNN6=<>;% ( '% % ( &% ;64 j   ,  _ F 4E;   E;6=<>E % ( '% % ( &% ;_ F6 4 w,1a14 1 .  6_ F=<> % ( '% % ( &% ;a647,4116a=<>1% ( '% % ( &% ;64$m!7>#$,1X$$$1X$41X$"1$% ( '% % ( &% ;$6$4 $9)&' 9), 5( 9)_ ( 5(4 X$15( ' %1X$6$=<> X$9)% ( '% % ( &% ;_ (6 9)49) !, u*j s+!,,E*!,r+E*4E5( * )* J) 5(6_ (=<>E5( !,% ( '% % ( &% ;r+6!,4!,/-Y,/-/-,+/-o,+4*E+n+[+E*6r+=<>*/-% ( '% % ( &% ;o,6/-4!,/- /-W,!,,*k!,r+k*4k*+[+B++6o,=<>*/-% ( '% % ( &% ;r+6!,49)!,Fs+u*9),5(9)Q(5(45(k*J))*k*6r+=<>5(k!,% ( '% % ( &% ;Q(69)4$9)'&$,X$$$X$4X$5( %'5(6Q(=<>X$9)% ( '% % ( &% ;$6$4!$y>#!m!!,!4X$!$% ( '% % ( &% ;6!4!!y,a46=<>!% ( '% % ( &% ;a64w,QF4 .6a=<>% ( '% % ( &% ;QF64F,k;k;4;k6QF=<>k% ( '% % ( &% ;64W. ,NN4kN;BNk;6=<>;% ( '% % ( &% % ( RLArial Black  % % ( '% % ( &% % ( RLArial Black &" WMFC/  % % ( '% % ( &% % ( RLArial Black  % % ( '% % ( &% ;64 b b,( b w ( 4( 6=<> % ( '% % ( &% ;w 6 b4 b 30 b,l  ]l 4( l 7  {( 6w =<>( b% ( '% % ( &% ; ]64S,FQF4l F3l 6 ]=<>l % ( '% % ( &% ;Q64i0,PP4FPP`aF6Q=<>F% ( '% % ( &% ;64%!i#%,Fi%%%Fi%4FPi%#P!P6=<>F%% ( '% % ( &% ;%6%4%"+')"+,l *"+ *l *4l i%F *(3'Fi%6%=<>l i%"+% ( '% % ( &% ; *6"+4 "+.0 , - .,( =- .w -( =-4( *l =- ,7 r+l *6 *=<>( *.% ( '% % ( &% ;w -6 .4. /l///,^.//^.4=-( ^.^.-( =-6w -=<>=- /% ( '% % ( &% ;/6/4.//l/.,=-.8-=-4=-^.$-^.^.6/=<>=-/% ( '% % ( &% ;8-6.4'"+.-,'"+,' *C"+*C *4C *=-wr+,=-68-=<>' *.% ( '% % ( &% ;*6'"+4%'"+)'%,i%i%%ii%4ii%C *3' (C *6*=<>i%C"+% ( '% % ( &% ;%6%4%F#!,__4_ii%_!#ii%6%=<>i%% ( '% % ( &% ;640F,iQi4_ia_`_6=<>i% ( '% % ( &% ;Q64'S','C]C4iC 3i6Q=<>C% ( '% % ( &% ;]6'4'bb3b,b84C{wC6]=<>'b% ( '% % ( &% ;86b4b,4$68=<>% ( '% % ( &% % ( RLArial Black  % % ( '% % ( &% % ( RLArial Black  % % ( '% % ( &% % ( RLArial Black  % % ( '% % ( &% ; 6 4 ZI m Z\&WMFC/, Z [  4l )ll6 =<> % ( '% % ( &% ;[ 6 Z4 Z"I F"I,I"MM4 M   6[ =<> Z"M% ( '% % ( &% ;6"I4"I..,\.r\4M\rM6=<>I% ( '% % ( &% ;r6.4.~g~,~~R~~4\~$\6r=<>\.~% ( '% % ( &% ;R~6~4~&"$&,\F&&&\F&4\~F&$6$!~6R~=<>\~&% ( '% % ( &% ;&6&4"&, ) +",,+",1,+4F&\+r(*S(\F&6&=<>F&,% ( '% % ( &% ;1,6",4 ,"0_. / 0, C/ 0[ / C/4 +C/ l. 4-+61,=<> +"0% ( '% % ( &% ;[ /6 040 21I22,02P104C/ 00)0 C/6[ /=<>C/ 2% ( '% % ( &% ;P162402e210,C/0S/C/4C/00006P1=<>C/2% ( '% % ( &% ;S/604,0/_.,,+,1,+4+C/4-l.C/6S/=<>+0% ( '% % ( &% ;1,6,4&, + )&,F&S&&SF&4SF&+S(=(*+61,=<>F&,% ( '% % ( &% ;&6&4~&$"~,~~]~~4~SF&!6$SF&6&=<>~S&% ( '% % ( &% ;]~6~4.~g.,.SrS4S~~6]~=<>.S~% ( '% % ( &% ;r6.4I.I,IMM4SM=S6r=<>I% ( '% % ( &% ;6I4ZIFZ,ZS 4MM6=<>ZM% ( '% % ( &% ;S 6Z4 Zm e  , l l4ll6S =<> % ( '% % ( &% % ( RLArial Black  % % ( '% % ( &% % ( RLArial Black  % % ( RL-Arial Black  % T`vWh C$vWLTGTK6u% ( RL6Arial Black  % Tp % LXSeriesU*V"  !"  "  FEMF+@   '9 ---. '9'9- J- $ ]++Z  J- $ +Z+U  K- $U +,/8 !K- $8 ,/S,v* !L- $v* S,, !M- $ ,,o "M- $ ,o -.h "N- $.h -I-Ck "O~- $k I-C-=#O}- $=--#P|- $-.$#P{- $$.?.a}$Qz- $a}?.{.V$Ry- ${.V.P%Rx- $P..+%Sw- $.+4/V%%Tv- $V%4/q/&Tu- $q//j&Ut- $/j/e&Us- $e/)0>L'Vr- $L)0>g09'Wq- $9g00'Wp- $00~(Xo- $0~1By(Yn- $By1]1S(Ym- $]1S1M)Zl- $M11')Zk- $1'27"*[j- $7"2R2u*\i- $uR22g*\h- $2g2a+]g- $a2 3<-+^f- $- 34P`-aa- $`>4P{4J-a`- $J{44$.b_- $4$4.c^- $435V.c]- $V35q5c/d\- $q5c5^/d[- $^558/eZ- $58)6L30fY- $L3)6f6 0fX- $f6 6w0gW- $6w6r1hV- $r67LA1hU- $A7L\7G1iT- $G\77!2iS- $7!7 2jR- $ 787 3kQ- $7 8R8`t 3kP- $t R8`8Z!3lO- $Z!885!4mN- $!85 9-/"4mM- $-/" 9H9 j"4nL- $j"H9 9t#5nK- $#9t9n#5oJ- $n#9:I"#5pI- $"#:I=:`C$6pH- $`C$=:{:$6qG- $${::%7rF- $%::%7rE- $%:3;\U%7sD- $U%3;\p;W&8sC- $W&p;;1&8tB- $&;1;,'8uA- $,';)<K'9u@- $K')<f- $k(<Y6*YQ>tS+<{7- $tS+Q>>. +<|6- $+>. > (,=|5- $(,> ? ,,=}4- $,, ? G?m j,=}3- $j,G?m ? g->~2- $g-? ?B ->1- $-?B ? "<.>0- $"<.? =@ _.?/- $_.=@ z@ /?.- $/z@ @ |/?-- $|/@ @V /@,- $/@V 2A UP0@+- $UP02A pA*0A*- $0pA*A%1A)- $%1AA 1A(- $ 1A(BjK1B'- $K1(BjfBe2B&- $e2fBB>2B%- $2B>B93C$- $93BC@3C#- $@3C[C~~4C"- $~4[C~Cx4D!- $x4CCS4D - $4CSD6M5E- $6M5DQD's5E- $s5QD'D!6E- $!6DD6F- $6D Eg, 6F- $, 6 EgGEi a7F- $i a7GEE< 7G- $ 7E<E 58G- $ 58EE! 8G- $! 8EL - $@ >Iw} q>L - $} q>[IIL >M- $ >ILI F?M- $ F?IJ!6?N- $6?J!QJs@' -8''99'''9- J- $ ]++Z  J- $ +Z+U  K- $U +,/8 !K- $8 ,/S,v* !L- $v* S,, !M- $ ,,o "M- $ ,o -.h "N- $.h -I-Ck "O~- $k I-C-=#O}- $=--#P|- $-.$#P{- $$.?.a}$Qz- $a}?.{.V$Ry- ${.V.P%Rx- $P..+%Sw- $.+4/V%%Tv- $V%4/q/&Tu- $q//j&Ut- $/j/e&Us- $e/)0>L'Vr- $L)0>g09'Wq- $9g00'Wp- $00~(Xo- $0~1By(Yn- $By1]1S(Ym- $]1S1M)Zl- $M11')Zk- $1'27"*[j- $7"2R2u*\i- $uR22g*\h- $2g2a+]g- $a2 3<-+^f- $- 34P`-aa- $`>4P{4J-a`- $J{44$.b_- $4$4.c^- $435V.c]- $V35q5c/d\- $q5c5^/d[- $^558/eZ- $58)6L30fY- $L3)6f6 0fX- $f6 6w0gW- $6w6r1hV- $r67LA1hU- $A7L\7G1iT- $G\77!2iS- $7!7 2jR- $ 787 3kQ- $7 8R8`t 3kP- $t R8`8Z!3lO- $Z!885!4mN- $!85 9-/"4mM- $-/" 9H9 j"4nL- $j"H9 9t#5nK- $#9t9n#5oJ- $n#9:I"#5pI- $"#:I=:`C$6pH- $`C$=:{:$6qG- $${::%7rF- $%::%7rE- $%:3;\U%7sD- $U%3;\p;W&8sC- $W&p;;1&8tB- $&;1;,'8uA- $,';)<K'9u@- $K')<f- $k(<Y6*YQ>tS+<{7- $tS+Q>>. +<|6- $+>. > (,=|5- $(,> ? ,,=}4- $,, ? G?m j,=}3- $j,G?m ? g->~2- $g-? ?B ->1- $-?B ? "<.>0- $"<.? =@ _.?/- $_.=@ z@ /?.- $/z@ @ |/?-- $|/@ @V /@,- $/@V 2A UP0@+- $UP02A pA*0A*- $0pA*A%1A)- $%1AA 1A(- $ 1A(BjK1B'- $K1(BjfBe2B&- $e2fBB>2B%- $2B>B93C$- $93BC@3C#- $@3C[C~~4C"- $~4[C~Cx4D!- $x4CCS4D - $4CSD6M5E- $6M5DQD's5E- $s5QD'D!6E- $!6DD6F- $6D Eg, 6F- $, 6 EgGEi a7F- $i a7GEE< 7G- $ 7E<E 58G- $ 58EE! 8G- $! 8EL - $@ >Iw} q>L - $} q>[IIL >M- $ >ILI F?M- $ F?IJ!6?N- $6?J!QJs@''4e--%''99''C (`' 8? ????s??  ???o????@  @?8???????`? ???p?p001  ???????`????8???m?bC (|XUXUXUXUXUXUXUXUXUc`ζda;w7 f f f f f f f f_RRRRRR[ f f f f f f f f7u3XUYV]RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROyvRRc wwwwn \RRRRh q o o q q q q q q p o o o o o o o o o q o RRRRR WRv ,",","!iRRR\+!-"-"-"-"-"-"-"-"-"-"-"-"-"-"* +!-"-"-"-"-"RRWRROb_RU(,","zRRR ]+!-"-"-"-"-"-"-"-"-"-"-"-"-"-"-" t -"-"-"-"-"-" aR ]RSspSR,","," RRh,!-"-"-"-"-"-"-"-"-"-"-"-"-"-"-")t R#-"-"-"-"-"!RRRRTQc`RRKGRY* ,",",","hR ^,!-"-"-"-"-"-"-"-"-"-"-"-"-"-"RRl -"-"-"-"-"-"hRRRR0p,RRRMIѻRR,",",",","!RR-"-"-"-"-"-"-"-"-"-"-"-"'k RRR$-"-"-"-"-"#RRro'j#TQZ RRRRRѻRR ,",",",",","hR _,!-"-"-"-"-"-"-"-"-",!URRR ^-"-"-"-"-"-"q RbifRRW,!bR2q.eRl ,",",",",",""RR-"-"-"-"-"-"-"-"# bRRRRR&-"-"-"-"-"(TR4r0RR c'-"-"!RRRR%,",",",",","jR ],!-"-"-"-"-")x SRR dRRw -"-"-"-"-"-"R Uʱ[RRw +!-"-"-"-"lRd^Rr ,",",",",",""RR-"-"-",!XRR\ v RU)-"-"-"-"-"-" ^RTQ}SRT-"-"-"-"-"-"$SRRR',",",",",","l R \+!-"# eRRT|) $SR-"-"-"-"-"-"!RRTRR _&-"-"-"-"-"-"-"-"vRZ ur XRy ,",",",",","#RRu SRRk%,","hR [+ -"-"-"-"-"-"q RRRRl *-"-"-"-"-"-"-"-"-"( URfcRdnkRT(,",",",",","m RRRRRRo (,"RR-"-"-"-"-"-"(RRRS,"-"-"-"-"-"-"-"-"-"-"-"RTaRR URR,",",",",","#RRRRgRRU ZR d-"-"-"-"-"-"-"RRR -"-"-"-"-"-"-"-"-"-"-"-"-"* [ RJFmjRRRRR[YQNR [,!,",",",",","o fRR WRQRR$-"-"-"-"-"-"-" `RR&-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"RRηTR~,$j RR0p,RR ,",",",",","*!,"oR_4v0RR{-"-"-"-"-"-"-"$Ro * -"-"-"-"-"-"-"*+!-"-"-"-"-"-"-"RRѼ9v5R [.#.#.#~RR[ȭ%k Rl ,!,",",",",",","&TRli+l'R ]+ -"-"-"-"-"-"-"y,"-"-"-"-"-"-"-" s -"-"-"-"-"-"-"-" aR>y:RR"3*6+/$."  WRSY RS,",",",",",",",","}RTheRR -"-"-"-"-"-"-"-"!-"-"-"-"-"-"-"(q R#-"-"-"-"-"-"-" RR˳]Rl .$/$0&5+3(1&&b RRRR~/%,",",",",",","*[ RSRr -"-"-"-"-"-"-"-"-"-"-"-"-"-"-"-"RRl -"-"-"-"-"-"-"-" eR1p-b_RT,"7,2'.$.$2'4*6*.$sRRRR,",",",",",",",","RRX(-"-"-"-"-"-"-"-"-"-"-"-"-"-"&hRRR$-"-"-"-"-"-"-""RR¥SR/$0%4+6,0'/$.#1%5*6+RRR#3',",",",",",","RR-"-"-"-"-"-"-"-"-"-"-"-"-"+!TRRR ^-"-"-"-"-"-"-"-"j R&i"da0p,R ^3(6+2&/$/%4*4*3(/$.#0&6+&RRj 3(4(,",",",","," bRR,!-"-"-"-"-"-"-"-"-"-"-"-"! ^RRRRS&-"-"-"-"-"-"-"$RR UR¥RR!0%2'7,5*1'.$0&2(6+2'/$.#1',$fS(.#1',",",",","RR-"-"-"-"-"-"-"-"-"-")t RRRRRRv -"-"-"-"-"-"-"-"vR\XURRRdZ Rr 7,3(/$/$2(5+5+/%.$.$3(4*4(/$.#.$w1&,".#,",",",","k RX)-"-"-"-"-"-"-",!VRRZ QRRU(-"-"-"-"-"-"-"/&TR|,m(RRRRRroWTRU( 0'6+7,2(0%/$1'6,5+/%.$/%1'6+4(/#.#!4(4*0&,!+!s ,"%TRy -"-"-"-"-"-"" bRR U2p-R ]RR}-"-"-"-"-"-"-"-"RSࡾY RR|6-~R U̷RR6,/&/%0&6+5+4*/%/$2(6,3(1&.#/#3(6,2(.$ _-#4(RR d|RR%-"-"-"(q RRRE~AZWR ]fR Z* -"-"-"-"-"-"-"." `R V:v6RRX&m b"\ R=y9*l&RR.%4(7,4*2(/%1&4(7,3(%+"3(4(4*0$.#/$4('RRY& _Rr UR ^XRh-"+ URR%h!ȮRRRR-"-"-"-"-"-"-"-""RRRRR b)#RRR ^RRFCRR4(/%0&3(6,6,1&/$0%4*0& b!.$0&6+4(1&#VRXRUQ-")WSRRm \RRZ ˳Rl \R d,"-"-"-"-"-"-"-!-"s RRRRu ,!-"gT#}URQ[ ԿRR&7.4(0&/%2(7,5*0&/$0&Rx*".$1&(VR-"RR-"-"-"* YRRRRB|>R ]RS#-"-"-"-"-"-",!-")RRRS.#.$ Ry-"-"(zRR^Ȯ'p"Rl2(7,7,4*/%/%3(7,5*2&* VRR!'XR-"-"-"RS-"-"-"-"#RRRRA{=TRRu -"-"-"-"-"-"-!,!+!RRR"-#.#-" bU(-"-"-"-")jRRPMdRR( 0&1'6,7.4(/&/%2(5+5,zRRR dRT-"-"-"-"-"TS-"-"-"-"\ R U`] VRY)-"-"-"-"-"-"+ * +! bRR).#.#.#R~-"-"-"-"-"-"," \R̴Y RR` R|8.3(0%1&6,6,4+0&/$2&2(RRRRRp -"-"-"-"-"-"!WR-"-"-"-"-"-"-"'cRSMJ@{=RR-"-"-"-"-"-"+ , -"#Ro ).".#.#," ^W)-"-"-"-"-"-"RRC}?RRRRa^lhRU0'9/7,1&/%0'5+7.4(/$/$RRQR a-"-"-"-"-"-"-"$YRy ,"-"-"-"-"-"-"-"-$kRRRk-"-"-"-"-"-",!-"-"-"|.#.#-"-".#R-"-"-"-"-"-"'UTR[ebRmjRRmRR^RR0&4+7.6*2(/%0&5+6,3(,# [R(k% YT,!-"-"-"-"-"-"-"& \Rr ,!-"-"-"-"-"-"-"-" fRU'-"-"-"-"-"-","-"-"-"!.#.#+",!-!,! Z [+ -"-"-"-"-",! gS URZWZ RRR]Z Rp 5,7.RRRR d4*1'0&3*7,7,2(/%&)!5+RR%m R(-"-"-"-"-"-"-"-"( `Rh+ -"-"-"-"-"-"RR-"-"-"-"-"-"+ ,!-","-#.#-#.#-"-#.#R-"-"-"-"-"-"R8.%RRR^ ,"<6_R.n*ѼC}?RV.%1'1'6,$ URRR*"7.4,1&0%3(7,'R [-#2(d RaR!-"-"-"-"-"-"-"-"-") dRY&-"-"-"-"(WRg,"-"-"-"-"-"+ -!-"-"-#,#.#.#.#.#,")W ^,!-"-"-"-"-"&T a1',#m RT+ -"-"-","<6 VRTQRR8.:03(1'2'*" ^RRl3(6,9/5+1&"URRx /%#RUR-"-"-"-"-"-"-"-"-"-"* iRRw -"-","iRV'-"-"-"-"-", ,"-"-"-#.#.#.#.#.#+!,"R-"-"-"-"-",! dSs RRr )-"-"-"-"-"-"-",#RX Z Rq 2(1(3(906,5*1'+#RRV/&0&1(6,'TR aR"0%sRR{-"-"-"-"* -"-"-"-"-"-"+!n RR d&RR-"-"-"-"-",!-"-","-".#.#.#."-#.#-#* T a,!-"-"-"-"-"RRRSp %-"-"-"-"-"-"-"-"-"p RĨC}?RW/&:26,1(1'4+7,9.6*0&R#7.1' SS-"$TW0&,#RRp -"-"-"-"z+!-"-"-"-"-"-",!n RRTk RR-"-"-"-"-","-"-"-#-#.".".#.#.".$+! dR -"-"-"-"-"$RRRq %-"-"-"-"-"-"-"-"-"-" RQNRR 2(2(7.9/8,2(1'3(8.8/5+q 3("ST -"-"-"Rj1' ]Rh-"-"-"-"y q -"-"-"-"-"-"-"-"q RRRYRU&-"-"-"+ ,!,"-"-#.#.#.#.#.#.#  \S f-"-"-"-"-"+! `R ]%-"-"-"-"-"-"-"-"-"-"-"* \\ԿGCZ Rr 7.;04*1(2*6,9/9.2(1'4(7,8/( RU!-"-"-"-","k Rw RR `-"-"-"-"Rr -"-"-"-"-"-"-"-"x RTTUR d,!-"+!+!-"-"-#.#.#.#.#.#(s RSR"-"-"-"-"-"{v &-"-"-"-"-"-"-"-"-"-"-"-"-"wR\YSRTzwC}?RW,#2(4*:08.5+1(2(5+:16+1(1'2(RW#-"-"-"-"-"-"(WRTWY-"-"-"-"!RR-"-"-"-"-"-"-"-"SSYRR- -","-"-#.#.#.#-#,#XRRRl -"-"-"-"-"+!)-"-"-"-"-"-"-"-"-"#&-"-"-"!RB|>Z Rl )!$lR0p,RR!;27/3(2(5+8.:04*1'1'7.8,8,'RR$-"-"-"-"-"-"-"-"RZ \R,!-"-"-"* RRT$-"-"-"-"-"-"-"-"RRXRR",!-"-#.#.#.#,!# eRRUVR$-"-"-"-"-"-"-"-"-"-"-"-"-"%o \p ,"-"-"* Z Vη*l&R_ -"-",!93S WRRR,#3*90:07,2(2(4+917.,$/%2(5+3)R a-"-"-"-"-"-"-"-"-"-" `RRR)-"-"-"-" _RR Z(-"-"-"-"-"-"-"-"RRZR[(-#-#.#.#(x SRRj Rp -"-"-"-"-"-"-"-"-"-"-"( cRR d+!-"-"-"s R VQNRU+!-"-"-"-"-"1)cRMI@z<RRR5,2(3*7/8/9.3(1(4+3+k * 1'0&T \-"-"-"-"-"-"-"-"-"-"'XRR'-"-"-"-"r R fR c* -"-"-"-"-"-",!p R c SRm -#-#-"XRR\-" fR&-"-"-"-"-"-"-"-"+!m SRRRR* -"-"-"RTRbSRo (-"-"-"-"-"-"5*6+2('z"RZ RRRRR:08.5+2(4*6,;26,2(,$~S0( `S,!-"-"-"-"* (-"-"-"-"RR!-"-"-"-"Rp Rk,!-"-"-"-",!r RZ)-"RR" cRRRy+ -"!Rv -"-"-"-"-"-"-"(}WRRq SRY(-"-"-")YRhRRh "-"-"-"-"-"-"3)/%1&4)5+5,RR̴ VRRRRR$5,90:05,2(2(8.1( aSXRRiR'-"-"-"-"-"h* -"-"-"-"RR!-"-"-"-"!Rv + eRu ,"-"-","t RSU(-","l RRRRRRX-"-"-" `Rv * -"-"-"-"$r SR _+"#RV$-"-"-"-"ZRRR b -"-"-"-"-"-"-"7,5+2'/$0%4)!R_\*l&R ].&(!RRz 3*2(5,;29/4,' [RR aRR aR!-"-"-"-"-" fp ,!-"-"-"(X-"-"-"-")R [,!) _R{-","w R ^Rl -"-") [RRR ^Rl -"-"+ dZRW) gRRo "0&0&,"XR -"-"-"-"RRi -"-"-"-"-"-"-"0&0&3)5+6+4)1&+! XbifRR(!;26,.&p S4+7.3*2(5,' VR gRRR]R-"-"-"-"-"s Ri-"-"-"-"-"-"-"-"-"XR c$' ZRx R ^(-"TR!-"-"!SRiR-"-"RR _RRRT{'0&0%0&/%lR-"-"-"-"$Ug -"-"-"-"-"-"-"-"8-2(0%0%3(5+6+5)o Rƫ(j$ѻȭRR4+6.;3:14+8/:27.SS."'UTQTR-"-"-"-"-"x RR-"-"-"-"$-"-"-"-"-"k RSR{"VRR \(-"* VY*-"-"{R `)~R-"(VRq /%-# c+"0&/%0&0&0&}R{-"-"-"-",!&-"-"-"-"-"-"-"-"-"3(4+4,4)0'0%1'5*$RWTԿ5s1RR V_R h818/3*3*7,:1:0&3(3*RV!.$.#.#RVRR~-"-"-"-"-""RRS!-"-"-"-"-"-"-"-"-"Rp ]RXRW'-"-"}R c,!-"R [(-" bR'-"o RW* ,$.%/%0%0%0&/$.%0&0&Rl ,!-"-"-"-"-"-"-"-"-"-"-"-"-"-"+!,!-"*"4)5,5+3(1&-" X^TQRT,$`SGCRU*"4+90;37.3+3*6.:18-}R \&/$.$.#.#-#jRRRv -"-"-"-"-")RRSX&-"-"-"-"-"-"-"-")R \[WR ^-"-"&TTRr SX&&hSW,"RR.$.$/%/$0%0&/$/$0&0&"R _* -"-"-"-"-"-"-"-"-"-"-"-"-"-"."' d1&4*6,6-5*m Rƫol VRs ,"5+9/2)hRifRR!:15,4*4+9190914+/'q R c* /$/$.$.$.#.#)TRRq -"-"-"-"-"-" ZR|R ](-"-"-"-"-"-"-"-"YR'iX{TRt )k S `RRT!TSRo * [R g.$/$/%/%0%/%/%0&/&.%.$ ^RR!-"-"-"-"-"-"-"-"-"-"-","* hRR-"0%1&5*6-RHDspX Re'3*0'4*5+:14)!qRNK WRw 4+8/<3:16,3*5,7/5+ fRl+"/%/%/$/$.$.#.#.#RR e-"-"-"-"-"-"o R%t R e+!-"-"-"-"-"-"-"t Rm 'Z,"&j RRRu -"' ^R| ]RUv Rw RR&/$/%.$/%0%0&/%/%-$/&/&-#URh#-"-"-"-"-"-"-",! q TRRR\,"-"/$1'0&+"RRRRd !5,6.9.3)3)3)5+:/6-&~!R9v5.n*R [XQ914+4+8/;2:16,*" ^Rx .#.%/%/%/$/$.$.$-#.#.#iRR-"-"-"-"-"-"R,!m Rl ,!-"-"-"-"-"-"RR#,",",!!YR-"-"" aRS ^RXR RRR.$/%/$/%0%0&.%.$/$0%0&0%0'1&+"}RRp '-"-"-"([RSp cRh,"-"-!,!1'/'RRRe %4)1(2(6,6-906+4*2(4+9.8.zRB|>olRR$F=<37.4+4+7.;2&RR0%/%/%/%/%/$/$/$.$.#.#.#)RT-"-"-"-"-"-""Rv ,"+ cRv -"-"-"-"-"* aRR b+!,#,",","$S f){TR e&,!k SX-"{RR.%0%0%0&-$.$0&0&/%0%1'1'1'1'0& bRSx r TR ]-##S `(-".#."-#,"RR"4)7-6-6-2'2(6,8-906-4+2(4*7,o R˳̴SR%un7.6,;2;28/)!3**"R0%/%/%/%/%/$/$/$.$.#.#.#.#V-"-"-"-"-"-"* R ^-".#) `R{-"-"-") aRgR,",",",","{RRRT#,",","s Rq -","r RR0%0%.%/&0&/&-$.$1&1'1'1&( iRR[ eRRRp #1'1)(W Z',!+!.#.$-$"k'5*1&2)4*9/6-8.3(2(4+7-806-5+3)RdaTQRR3*zTLG@4+3)}R,& Rr /&0%/%/%/%/$/$*.$.#.#.#.#-#m -"-"-"-"-"-"-" dR(.#.#( ZR-"&\Rp +!,! cS$,",",",")STSR(,","&TR-"-"+!iRS#0&0&/%0&/%.%1&1'1'/%SRRRX0("* 2)2)2),# ]T#-".".$.$/$/$)-$1'8-5,4)2(3)8/8.8/5*2(4*5,9.8//%V!fWT̵RRhc5,=4e^b[ hRRl R f0&0%/%/%/%/%/$#.$.#.#.#.#(+!-"-"-"-"-"-"}R.$.#.#&XRs WRy ,"-"-"$S c+!,",",","#) m Rt ,"+" gXRX)-"-") aRT#.%/&0&0&/&0&1&" `RRRRR#2(2(1'1(2)2)/& dS -".#.$.$.%/%.$/#/#.#3)906,5+2(3)7-8/9.5*2)3*7,8.l SѼ[XRR1p-wtROL^ R% le;3& [Rx lRT [0&0%0%/%/%/%/$*S!.$.#.#."-#-#-"-"-"-"-"-"!RZ'.#.#.##SRR-"-"-"-"-"R,",",",",","RU* Rx l R _'-"-"&YRY'0&0&/%.$+!t RRSs SRt 1(2(2(2'2)2(2)u RR*!.#.%.$/$/$/$/%0%/%.$.%5+:/7.6-2)3)7-7.806-4*3*Rpmqn VRs wR>y:ɰRRRRRU~LC+%SS1',"YTRS0&0%0%/%/%/%/%/$RR'.".#.#-#-#-"-!-"-"-"-"* RWRt -".#-#"T-",!-"-"-"-"* RR) ,",",",","(RR{U ]+ ,!u R Z$-"SVR \)/%,#URR b#RS) 2(2(2(2)2(1)2)( dR [.%.$/$/$/%/%/%.%.$/%0%6,909/6+3)2(5,8.:/90+#T\olY Rh &4*7-+%RQN]RRRRRR:5RX#1'1'1' RRR-$0&0%0%/%/%/%/$RRT*.#.#-#-#-"-"-"-"-"-"-" gRRR a$.#.#)-#-",!+!-"-"-"R,",",",",","(RRTS"-"-"-"}RV{STUR ` `RRW,!(TR1(2(1(1(2)1(1)3)3)2)ZRk(0$/%0%/%/%/%/%/%/%0'6,9/-#) 3)6+9/6- \RRR c'9/9/6,3,5+#Rgd5s1RW2+( YRRRR e*!1(1'1'1'1'w RR+!0&0%0%/%/%/%/%z RRj-".#-#.#-#-","-"-"-"-"R hRRS{ +!.#.#-",",!,"-"#R d-",#,",",","#[RZRx -"-"-"-",!RRR -#!SRRRSt )-"-"t RV,#1(2(2(2)1(2)2(3)3)3)3*/'SS,#/%0%/%0&0&0%/$) RR!907-3)4*~RRf #3)5,9091816-4+3*%y R{xfdRR#80;33+QRRw .%2(1(1'1'1'1&,#RR(0&0&0%/%/%/%/%RRRx .#.#.#-#-"-"-"-"-"-"%RjXR fR \.#.#+"-"-"* [Rr .#,#,",","TRUR)-"-","* ,!-"T.#.#.$s RRQ-"-"-""RR2'2(1(2)2)1(/&3(3)3)3*3*3*3*)!kR \0%/&0&,#lRRRx 8-;08/8/'SR$;18/6,4*5,7090:18/6,2)[ RRR<37.6,"RR1(2'2(1(1'1'1'1'1' R&0%0&0%/%/%/%/%%RW ]R.#.#-#-#-"-"-"-"-"-"RRRWRj%.#-!-!p RXR,#,#(n RW"3(Rx -"-"+ + ,"-#.#).#-#'jRRR _-"-"-",! bR b0&2(2)2)2)0'0&1(3)3(3*3*3*3*3*2*0'ZRlz VRURRv 3*3*5+:/4,}&4*7-8.:0:07/4+4+7/<4;/:17- gRŪY Ro4,:2<3RRR2)2)2(2(1(1(1'1'1'1'1't $0&0&0%/%/%.%/%,#SRWR .#-#-"-!-"-"-"+!w RR$ ^Y,"*!{SR{) Rz + XR! [R f* 4+5+2*l R!,",!*!+!-#.#-#,"TRR eR{-"-"-"RR#2(2(2)2(0'0(2)3)3)3)2)3*3*3*3)2*2)4+0'SRRp Rk-%4+6,3)5+6.81:05-4+5,8/:1918/6,6,7-92<2#R]Z(j$R [3+81/' nRRRW2)2)2(2(2(1(1'1'1'1'1',"$0&0&0%0%/%/%/%/% ]R.%"ST#.#-#-"-"-"' cR ^%/$R0%/%%hRRR c1(3((!SML J q(*+,,..0,.'%WY)-","+","."! _R bRTr R!-"-")VRz 2(2(2(2)1(2)1(1'2'3)3)3*3)3*3*3)2)$1)3*4+*"-$3*#S c-"/&2)8.5-3*4*809/918.5+5,6-90<49/8.5-7.3*We`].n*QNRS&91(!YRy RR2)2)2)2(2(2(1(.%1&1'0'1'0&0&/&0&0%/%/%/%/%s R&1'SX&-#-#-"VRq +"/%.%.# gS$(*#,/wURH,<; /< (= (= (= (= (= (= (= (= (= (= (= (= K#Rj +",#-#&o RTvm RXR,!-"-"o RR,#1(2)2)2)1(0'0'1'3)3*2*3)3*3)3*( i#4*4+4+2)3*3+(RR'1'0'/%1(8/8.4*4*7.:1;18/6-5+7.9/;4;2904,o S¥ro WRRa^RR82RT3)1)TV3)1)2)2(2(2(1(+!1'1'1'1&0&0&0&0&/%/%/%/%R1'1'R Z(*!x RT.%/%/$/%.&%RJ (< (= (= (= *93- (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (=dR+!TRI .5 );SX$RRu + 'RRR* 2(2)2)/'/&1(3(3*3)3*3)3*3*0'So3*4+4+3)3*4*3*/&u R[ 0'0'0'1(90905+5,5-80;1:27,5+6,80<4;2RRY Rj +$$zRʱSR 0(q R `' 3*3*3*)!S3)2)2)2)2(2(1(! h.%1'1'1'0&0&0&0%0%/%/%/$'Rt 1(1(1'RR \R ^%/&0&0%0%/%/&.&uR;! (= (= (= (= (= (= *? ,C .F2J3N6P5P8S9V9V9V8S7R6R3N6I ^RRRQ4, (= (=>R.&% ^R `&TR['1(0&1'2)3)1(0'3*3*3*3*#RRR&4*4+3*2(4+3)5,5,5,ZRu ,"2(1'1(80916-4+5,;1:0;2906-7-80+$RRRg %>6<3IB`Y [R h' [Rw /'4+3*3*3*3*1(2)2)2)2(2(1() R e0'1'1'0&0&0&0&0%/%/%/%.%ZW1'1(1'.%v RRr +#.'/'0'/&/&.%.%-&*#TP>N@`EhInOtRxSzSzRzRzRzRzSzSzSzSzSzSzSzSzSzSzaYRRR?LnGjBc?KS a-%.%.&+$r RU!WRV"1)2(3)3(0'2(3*3*,$y RRRR4*4+4*1(4+1)4+5,5,5,SmRX2(1(0'6,:28//&*"90;3<4:15-3* eRR(!:16.7.wpUOMGS3r/,m(RYRS3*4+4+3*3*3*3*1(2)2)2)2)2)2(2'/'RR1'1'0&0&0&0&0%0%/%/%/%v R&1(0(+$p /(0'/'0&/&0&/(.'/'-'/& R R#S|S|S}R}S}S}S}S}S}S}S}S}S}S}S}S|S|S|S}S|S|SzRYSmSzSzSzSz TS#/'/&/'/(.'URt "ZRS3)3)2(3*3*2)WRRRR(!4+4+2)4+2*+#5,4,4,3*RRRq ^Rq +#1)-"o f2)6-90<3;290q ':1>6;2A:|:3vpH@2+RolQNRR hR ^' 8.804+4+4*3*3)3*3*3*3)2)2)2(2(2(1(URR1'1'0&0&/&0&0%/%/%/%R1(0)1( \/(0'0'0&0&0(/(/)/(.&/%) RRSnS}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S|S|RIRz.+/'/&0'/(/*.*& _R [RYRR2)3*1(' iRRRRR~ 4+4*3)4*3*4,4,5+5,"RR ^0'0(SRRRRR3);27/5+8.9/7/-%:17/8091gab\H@xr8/80<2pSRRRR/'4,4,6.4+4+3+3*3*3*3*3*3)3)2)2)2(2(1(| RRS#1'0'0&0&0&0&0%/%/%(Rq 1(1(1(-%RRl *"1(0'/(/)/)/(/(/&+# aRRPS}S}S}V'`,e,e4j4j8m8o4j.f*aUS}S}S}S}S}S}S}S}S}S}S}SpU [*&.).(/(0'0(0)/+/*,(u RRn iRR| ,#SRRu z RS,#4*3*3)4+3*4+5+5,5,x R5,5-6-6-' aRRR( 2*9/;27.6.6-:0;3?6:1:1~A9leTM>5908/:34, V'j#ѼRRRt X \5,5,4,924+4+4+3*3*3*3*3*3)3)2)2(2(2(2(Rx SW'1'0&0&0&0%0%/%.$RR/'2(2(1)RRU/&/'0(0(0(0&/$o R:wez̊ؗ혿卵~lZCw1fUS}S} S'R .(.)/*0)/)0(/)0)/+/*0+m '"w RRRRR ^"+!TR4*4*2(4+&/&1)4+5,5,/'U!5-6-5-5,6.6.2* `RR1)1)5+:3907.6-;3;3XRqk?8|v91<3=5?8:17/7/.'RroӒRRRRRR4+5,4,6.704+4+0(3*3*3*3*3*3)3)2)2)2(2(%R R \+!/&0&0&0&0%$ eRU1(2)2*1+.(V R \R `"1)1)1(0'v RGb댵eSR(/'.).*/*.)0(/'0)0*0-0+  _1+0,RRR,#0&w RX.%4+1(4+.%&3+5,5+5,5- (!5-6,6,6,5-6.6.5./' l _Ry .&2*3+<4>58.8/~yKD^Xc[=37/8/>5;3=5=5917. qSX RR,$YRR1(5,4+4,6.4+4+-$3*3*3*3*3)2)2)2)2(2(-$R j5,R c.#0&0&+"z SRw ,%2*2)1*2*1+1+R cF)7VRw -#1'~R6wI]S _+#1)0*/+/*/*0'1)0**&u RR+$2)1,0- iR/%0%$RR4+2)3*1)5,4+4+4,5-5-2+5-6-6-6-6-6.5.6-6-6.&Sq R \$4*<38/KB{v:2zuA9>6<5=47/7.92?6<4>6<31*R*l& WR \%6-6- RR.%5,5,4,6.5+4+! g0(3*3*3*3*2)2)2)2(2(2( dS2)/,o Rr -#VR _#2,3+2)2*2+1+2+2,2)dTІwRVRR/q>G[S b.&4-5.300+0+/(VRRx 1*2)1+0,WR.$/$ eR e2*2*3*3+4+3*1)4+5,5-5-5,5-6-6-6-6.6-6-6.6.6-7,R j[R1(%91OGqk:07.1)"#<4:28/9/>4>7>5RroSR} 1)6.6-5-5-RR*"5,5,4,4-6-4+(!RT2)3*3*3*3)2)2)2)2(2(R$ ERkRRRW1+2,2+3*3*1+2,4,5-4*3*($R5vHYy `R'l2tmkjjjjjjjjikijlpz瑾:IRk 0)505/72)" eRU RX-(0*2*2*/+WR aRR3*2(4+1(4*3*4,5,4-5-5,5-6-6-6-5.5-6.6.6.6.7.7.6. RWmR]&%2)4, RR:3@7=4<49080;2/(T0p,ɯE~A;w7RW 6.6.7.6.6-5-/'Y( 5+5,5,4,$3*1(RR3)3)3*3)3)2)2)2(2( RCS k-' ^R.(2,3-3,3*3*4+5-6/4/3,3*4)4,x!Rt?xcjkllloqsuvwwwwwvutrqnlllkkjil|+1Rr 1*1+RUPo=zdR0,1,1-1+1+1,-(y RRRRZ#4+$+"4+5,5,4+4,5-5-5,6,6-6-5-6.6.6.5,4,6.7.7/6/2* gRR aUS du SRRR7/:1:2>7>7<4805- eRSRR\Y WRw /(7.6.6.6.6.6.6-5-!&5,5,5,4,&4+URR3*3*3*3)2)2)2)2(*!RQR+%3,-%":4-3.3--(2+3+4-6.6/7.4,3+3+4+5.0* V]fkllllnquwwwwxyxxxyxxxwwwwvsollllllkkin哿!}#RRYR+p7ʘ Y _3-2.0.0-2,3*2+2,2-# aVURR 4+4,4,3*2*5,5-5-5-6-6,6.6.5.6-5-5,6-7.7/7/7.7/.&XRRoRVRR g91;29190<3=5>5=6 cRRVb S;w7RV 6.6/7.7.6.6.6.6-6-5-5-/&5,5,5,4,,$4+} RRS#3*3)3)3(2)2)1'"RRR)'4-4+3/,B3/3-3*6/707/6/4+2*3*4.4-4- "R3yflllotwwwyzzzzzzzzzzzzzzzzxwwvrmlllllllkgqR\l@XR"5-7273102,2+2+2,1-1.0,WYRR j+#2+3,3+5-5,5-6,6,5-6-6.5,6.6.5-6-.&6.6/7/7/7/&RR 5-&!RR0'5+:1=4918191?6*#RR3+<4/(RT˲ WRv /(7/7/7/7.7.6.5.6.6-6-5-5-5-5,5,5,5,4,2)R mTX)!3*3)2)0' bRRRRy5,4,4,/938603, `[("70605,4*3*4,3.4.2*{ Rf3lpuwwxzzzz|}~~~炶膸銺錻ꎽ鑽链꒾钾钾鐽ꌻ鈹肵ywsnllllllle8u`f䊺Sq 4,4+608484613,3+2+2.1.1-3//(SRRV4+4,4,4-6-6-6-6-6-6.6.6.6.,$r 7/7/7/7/7/7/7/RR6.("RR3+5,6.<4;4812* g 4-7/7/7/7/|R@{>P62nRK!RRRTHwwzz|灵爹鐽芶Rw,Mf+Eo**(( ( ( ( ( ( ( ( (,Kc(( ( ( ( ( ( ( ( (,Cs,If,Jc7Xtڎzvnllllliz!Rl 0142514.5.7161RR5.3/.:/94.5.3+RRR dRRW3+$ _RRRR7/7/7/7/7/7/7/7/7/' RRRRRo$7/7//(qR| 1*7/7/7/7/7/7/7/7/6.6.} R̴Ѽ-n)RX 6.7/7/ZR7/7/7/7/7/7/7/RRZ.&6.6.6-5-5-5-5,5,)! ^RRR' '4 (= (= (=FDR l3/5/6.6.708274-&71\q5/5062?W88,+S i_z,Je+@x(( ( ( ( ( ( ( ( ( ( *,,Kc,Kc(( ( ( ( ( ( ( *',Gi,If,Jc,Jc,Jc.Mfȗzvolllllk#3R c/+525/4.% cRRR3+7/85+G3/305/RR-,VXRRRRRRRRY2*7.7/7/7/7/7/7/7/7/w RRRRRR e5-7/7/5-R b*#7/7/7/7/7/+$7/0(T>y:RRR 1)7/7/7/7/1)Z7/7/7/7/7/7/7/y RR i2*6.6-5-3+& `RRT&4-,/ .< (= (=@NTZ-(606/6.6082:393916/6.Dh735361Gp5.}%RMljewyz|犺葼q8Xr,If,Cq(( ( ( ( ( ( ( ( ( ( (+Fm,Kc*.( ( ( ( ( ( ((&,Cr,Em,Jc,Jc,Jc,Jc,Jc,Jc,KezӐxwpllllll,IS [*(0-|RWRR#8383e݀7231303/v R"5041#$R \RRRR eSR4-7/7/7/7/7/7/7/7/1)RRR~ 2+RR6.7/7/7/$WU7/.'RR6.7/7/c RRRR%7/7/7/-%7/7/7/"7/7/7/7/7/7/7/RTRu +$| VRRTnRR]y ] /2 (= (=6L US'"606/6/6/81:4:4926.5/5/:;?O625/5-Js(#R^kuwzz煸萼v8Ws,Jb,If**( ( ( ( ( ( ( ( ( ( (*/+Ih,Kc*"( ( ( ( (*!+7,Gj+As,Gf,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc0Qkxvplllllk;iVRRRk@FU j96:7az70818240-* j-'6/605043RKXp R ]1*7/7/7/7/7/7/7/7/7/RR6.7/7/RR7/7/7/7/ cRRRRRR5-7/7/1)RR8u4Ȯ(j$RR3,7/7/7/7/ 0(7/7/7/' 7/7/7/7/7/7/7/#Rpr RRRRZ_RRRRRRR<" (= (= .F S&R61606/6/8394:2:4706.506273?S886.5-# WR6{kswz}猺懱Bb,Jc+Je,Gi(( ( ( ( ( ( ( ( (("+7,Gh,Cq,Jc+=},En+4*2+9+Co+Gk+Av,At,Jd,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,JcCixwollllljEU [Ea"mKR'#85P]@A81707084)'2/405.6/505030 ` R E%/&#RRR' 7/7/7/7/7/7/7/7/7/ fY&7/7/7/7/6.RR7/7/7/S lVSR g2+7/7/6.{ RRRA{=RR /'7/7/7/7/7/7/ j2+7/7/7/7/7/7/0)&~ RRRV d bSS ` kt dt z "&% *= (= (=N9R7/61707/&5/:5:4707/6/60647472Hk3,R[Otwy炶萼f.Lf,Jc,Jd,Kc+=}***#*!*!*"*$***4+?y,Je+Au+Co,Jc,Jc,Jc,Cn*9+;,=}+@w,Gj,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,JcuˍzxvnllllkiZ`dMSx 5/8?F\:5:6806183724151605/6/5151/)SQ#(s RRRx *#7/7/7/7/7/7/)" j.'7/7/7/7/7/7/5-v RS#7/7/Y1)/'TR$7/7/7//'/(RQNRRn("7/7/7/7/7/7/7/7/ RR("%t URRRRX j((+",%1'1'0'1'%0&0&0&N7 (= (=D?R l4,7/7/7/81*$ e)%73606.7/83637360+#eR j9brwy煷玹Gi,Jc,Jc,Jc,Gi+;+9+:+<+=}+=}+=}+<}+<~+?z,En,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc:]yzwvmllllkhfed'R"51Du6399:582838294624150605/5/6061'%RR,#0'# iRRR.'7/7/7/7/%3,7/7/7/7/7/7/7/7/2+ nRT&7/ 7/7/&WV%7/7/3+7/7/5.^ "f.n*RRR,%+$)"( #~ pRRRRRRRRV\WRR2(2(2(2(2(1(1'1'1'1'1'&0&0&&, (= (= .:\,R"7/7/7/8292;6w R m2+607373744.TS;xkowx煷犴;[w,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc~Պzzwslllllihe-PRV)D61636694;6938081:5514141606/606350Rm 0&1'%VZRRS/'7/7/7/7/7/7/7/7/1*#7/7/7/1* fRV("&6.7/7/-%~ aS7/7/7/7/7/RƬmjRRRRRRRRRRRRRRRRRTR]Y-m)UR]Ro ,%RR2(2(2(2(2(1(1((1'1'1'1'0&0&M8 (= -7Q SR7/7/7/7/<7;4*&RR \#7384*& hRc$Wlmuw烶戲6Up,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,Jc,JcW}zywpllllkhfeD `R2-6278;7:492809283525130(!61717/7/kR( YSRU[RRS-%7/7/7/7/7/#].'7/7/7/7/0( `RY( 7/7/2+ g1) oR5.7/7/7//(R Vb_XUPMR-x)6262=8FCKGYUc_]ZURRRRRS@z5,5,5,5,6,6,6,6.6.6.'Rp6.*# bR\)!RR h,%cR#fθͶ'j#R b'!7/7.6.6.6.6.6.6,1*5,5,5,5,4+4+4+.%RRR3*3*3(2'[RRRRS Q8& +9*_,a,a ZSS}S}ߦ]`befhllllowz玺2Ql,Jc,Kc:VnَXp9Vn]wsݱ딿뀙ou~nu}̊nu}olllljheda]]]]_S}S}V,a%Uz (= 78p RRw %5.7/7/]W\ W8~3RR^ZȈ4+5,5,5,5,6,6,6.6.6./(RR ]7/7/7/7/0(" QR("7/3,"RRjfxuSR2+7/7/7.6.6.6.6.6,6,5,2+5,5,5,5,4,4,4+4+YRYS#3*2* RRW mRR 11 (= (=+_,a,aURS}S}Ҧ]`cefillllpwz玹2Qk,Jc>ZqڅB]tPko듼ynu}yԁnu}llllkhfda_]]]fS}S}W,a#Qu (= (=!;>5-&VR _/'7/WR U`۱̰94 YRR ^(!4,6,6,6,6.6.2+ iRR 7/7/7/7/7/7/+$R7/7/7/7/(!` R!f̶ˈRR%7/7/7/7/7/2+6.6.6.6.6,5,5,5,5,5,5,5,4,4+4+r RTU(  dv } ZRSU 2/ (= (=,_.c.cVQS}S}n]acehillllrwz玹2Qk7TkXqPi~Id|pϡ펰s}nu}ھnu}nlllkhfea_]]]ozS}S} Z.c Lm (= (=':A9?8:25-  eRRr E@S(j$æ:6VRR[#0(6.5,} RRR("7/7/7/7/7/7/*# d4,7/7/7/7/7/2+RRRIEROLR7/7/7/7/7/7/6,6.6.6.6.6,5,5,5,5,5,5,4,4+4+RR \ URUXR n4+ (= (=(Y.c.cYQS}S}Mcacehjllllswz玹4RmE`w;Xo_|w퇠ov~pwnu}nllllhfea_]]]~cS}S}$[.cCa (= (=,9C6-(WRRRRY 툺("XRRRnRR i fR2+7/7/7/7/7/7/(!'!7/7/7/%7/7/7/7/( c RZ Y RRRR7/7/7/7/7/7/6.6.6.6,6,5,5,5,5,5,5,4,4,4+$R~,"RRRZr R5,b1 (= (=&Tx/d/dWQS}S}2hqacehjlllltxz热?_z@[s?[r^z~̗}nu}ynu}nlllkhfea`]]]⎼:pS}S}*`/d6@:921+;37/7/7/=8RmjŞ.p*[ aRVSKFS&RRRRYz #*#2*7/7/%R7/7/7/7/7/7/7/1(SR#fyv URy /'7/3+RR7/7/7/7/7/7/ RR'!6.6.6,5,5,5,5,5,5,5,/'p RR,".#,",#.#%Q R$1"5"46 (= (=B`0e0e%_ QRS}S}nacehjlllluxzt`y9Vmj㑾꓿팤ovpwڳnu}olllkhfeb_]]p}S}S} X0e.b (> (=E;9195"[<6:27/7/5.*#RRY T&o".()v$`[T c ]"w [RRRRR[u RRY( +$0(3,7/7/7/7/7//'SR#fҽ(j$R ["7/7/7/7/("R7/7/7/7/7/7/,&RR[,&6.6,6,5,5,5,0' u SRRXU fu zU, /4 (= (= (= (= (= (= (= (=5O1f1f,d QRS}S}9osdehjlllluxzoJe|ߦ:Wozʌꎽ둿듿냓nu}w~̇qollllhfeb_]]⊻BvS}S}(`1f'Xz (= (= /< ,< (= (= ,8I:|:,} XV _s %+ ,",">5R0*R _&0&0&* !nYRRRRRRRRU c lz   bRRRRRRR2*7/7/7/7/7/6.u 7/7/7/7/7/7/5.URR e2*6.5,(" mRRRc (q#&s!fWRG 2. (= (= (= (= (= (= (= (= (= (> (= (=0d2f2fQ QSS}S}ܦcfhjlllluxzqB]u (= (= (= (= 2M9YElIrFmEk .G (= (=&Tv3f3fV QRS}S}Omehjlllluxz}/Mf3Qj׈銻ꌼ뎽둾듿s}nu}nu}p|wwnllllhfea`]yUS}S}U3f3f:T (= (= (= /I ,C 1J ,C (= (= (= (= (= (=`3+$,",",",",","GC_[ b+"+"+"+"+",#1'0&0&0&0&0&0&#eb"fRRR3,7/7/7/7/7/!7/7/7/1(7/7/7/7/7/4,*#RR̷vRR Y;6 ;N (= (= (= *@Fn[aaaaaaMw (= (==X4f4fX Q QTS}Vdhillllsxz~/Mf|ˈ膹銻ꊼꎽ됾듿owqw~nu}syywnllllhfea_]YS}S~"]4f3f (= (= +Aabbbb]Ow8T +? (= (= (= 4;"*,",",",","GAX z1'1'1'1'1'0'1'1'1'/%*!#Rliϸ5s1RR0(7/7/7/7/7/7/7/R' 7/7/7/1(("  nSRRRsoϹ/C (= (= *@Gm`aaaaaaaa] (@ (= ,B3e5h+c Q QRS}S}J}yfjllllswz}V}脷醹鈺銻ꎽ됾뒿튛nu}u}tznu}vzxwmllllhfea_oQS}S}S4h5h*Wz (= (=:Wbbbbbbbb]>^ +? (= (= (=](s eWRR,'~ 2'1'1'1'*!kR [SR [m 1,ǭC}?RRx +$7/7/7/7/7/7/3,/(+$v RR| qWRRRRRhEAҽ (= (= (= 1LXaaaaaaaaaaa:Z (= (=&Rs5i5iR QQS~S}T~٦fillllqwz|~悶郷醹鈺銻ꎽ뎽뒿딺ߒ̒Ѫnu}ov~ow|~zxvlllljhfea`S}S}S}S5i5iC` (= (=LrbbbbbbbbbbZ 1K (= (= (= G*h ` ʭLFk2(2(2(2(1(,"r RR?}; VRRR `y p bURRRRRRRR_ 0x+ZW̶*]8 (< (= (=;[_aaaaaaaaaaaaO| (= (=4M6j6jX Q QRS}S}1hfllllpwzz聶胷醹鈺銺茭̌մunu}nu}r~ԃ~zwullllkhfdax2hS}S}S[6j6i/F (= (>]bbbbbbbbbbbaCd (= (= (=e.'!U eăY2(2(2(2(2(2(2(1'5./w*S7u3ebSRRRRRRRRRRRVd#q84NKhe~|li]d (< (= (=>a`aaaaaaaaaaaaa` /G (= (=+Z~6j/e R Q QSS}S}hwllllnwyz耵郷醴߈̿qzov~|nu}u邶|zwrlllljhecbVS}S}S R3h6j+Z (= (= 2LLsJpKpNuU_bbbbbbbbEj (= (= (=?lRRR,$2(2(2(2(2(2(2(2(2(2'82'n"RѼ̼ѻѻ̷ƫŪŪŪ̷ѻ:= (= (= 6T`aaaaaaaaVLvCh@c=_AdCj=^ (= (=6Q7k7kT Q QRS}S}Wݦillllvxz~聰݇߶qxpwszou~z煹邷遶zzwpllllifec}T~S}S~QR7k7kCa (= (= /G 4P 4P 4P 4P 4P 4P>_QyabbbbbbGl (= (= (<~TRRRR"2(2(2(2(2(2(2(2(2(2(0'Rw (= (= 0J_aaaaaa]Jr9W 4P 4P 4P 4P 4P 4P 4P 3O *? (= (=+Y|8l(d Q Q QRS}S},djlllsxz惢؜ɲznu}ou~pyȊ醹鄸郷逵~zywmlllkhfes"[S}S}R Q[8l6j ,B (= (> 3N 4P 4P 4P 4P 4P 4P 4P 4P:XPzbbbbbb;Z (= (=<9+$#RB}>RRR/(2*2(2(2(2(2(2(2(*"R,A (= (=Uaaaaa`Mx 7U 4P 4P 4P 4P 4P 4P 4P 4P 4P 4P /G (= (=1G8l9mX Q Q QTS}S}Mkllpz؇˻ëj[YWWWY[ftӸݕnu}nu}tڈꈺ醹郷邷}zxvllllkhfe.fS}S}R Q Q5j9m(Tv (= (=/G=fXWW@k0[} 4P 4P 4P 4P 4PBc_bbbb` 2K (= (=j0," _RVS f,$,$0'3*3*3*3*2(2(2(2($b`t (= (=>aaaaaa]?c 4P 4P 4P 4PGf@k]szyeNw=Z ,A (= (=#Ml:n,f Q Q Q RT~S}S}hllvʉrOQ[is}~yrdTZүȌx~nu}z抻ꊻ釹醹郷遶|zwrlllljhd7mS}S}S~ Q QU:n:n7O (= (=m둾뎼늺ꈺꄷ|JzFf 4P 4P 4P9X[bbbbW (= (= ,<(%e RURz3*3*3*3*3*3*3*3*3*3*2(!=y9 *? (= +B[aaaa[9X 4P 4P 4P%PqZ腷鈺銻ꎽ鑾뒾Ry (> (= *@3d;oX Q Q QRS}S}S}z̦xϿlRYnxf[Ь}험ɯqwov~ꍽ늻ꈻꆹ鄸郷zywnllllih9oS}S}S~ R Q Q*e;o2b (= (=8O链뎽댼ꈺꆹꃷ逵sw=m6R 4P 4P9X[bbbb>^ (= (=`3} b"RNJ&!4+3*3*3*3*3*3*.&(!#R]Zp (= (=AdaaaaZ9W 4P 4P 4PKzzu然膹銹茻鐽꓿@c (= (=3L9m8nS Q Q QRS}S}Xզ彤UYvzhdƤnu}rz̐뎽늼ꊻꆹ醹胷遶|zwullllkf䆷?tS}S}S} Q Q Q R;o;oB^ (= (=Rv둿뎽늺눹ꅸ逶zyqsT:X 4P 4P<[`bbb[ (= (= (<NR eRRE~AB<~ 4+4+4+4+# lRRR dv72ϸ5G (= (@[aaa_<] 4P 4P?]Xuxyz䁶腸銹銺ꎼ꒾꓾덷7O (= (=Fc `RRRRqnp 4+4+4+4+4+1(%[ RNKɰ (= (=;[aaaaFm 4P 4P 4PZqkwzsހ焷鈹銺茼ꐽꔿu (? (= (=*Vw=q[ Q Q Q QS}S}S}X~ȼeX~eǧ~v}nu}~葿뎽뎽늼ꊻꇹ醸郷邷}zxvllllli8nS}S}S}R R R R R8n=q!Ge (= (=Ad뒿뎽늻ꈺꅷ邵}ysssolO 4P 4P 4PVbbbV (= (=/I[ҰMIRR=y9axrLC4+4+4+4+4+5,92<7RRYmz (= (=OzaaaX 5P 4P 4POlppuxz}烷腸舺茻ꎾ꒿딿Vz (= (= *@1^=qU R R RS~S} W~c[éĪūūŬŬŭĭíïiv̴nu}ov뒿뎽뎽늻ꊻꇺ醹郷郷逶zywqllllkhhNS}S}R~ R R R RX>q;l ,B (= *?Д됾덻늺醸邶逴rymsqnkf2c 4P 4P<[abbb1I (= (=ʄXTRؙb[:14+4+4+2+ V/? (= *A_aaa?b 4P 4P/ahmnqmwzqށ脷船銺錻鐽ꔿ;^z (= (= ,B5e6n R R RS}S}i}ùf[ĨŨǪȩȩƙŭŭįíiǧ~nu}nu}wԓ뒿뎾뎽댼ꊻꈺ醹酸郷遶|zwvmllllifeXS}S~ Q Q Q R4l>r#Lj (= (=:[x둿뎽늻눺ꅸ邵~yvtsplif^ 5Q 4P 4PT~bbbFh (= (=YvpqR m<5zϣvp<7YV_i (= (= 9XaaaX 4P 4P 4P[fjlpnvyz~惵腸船錼鐽꓿ꔿ뒽 (= (= (=&On?s2k RSS};dǿnZĥŦǦȨʦNjpomlifliflifmjfnjfvuuǭƯįíḓ݊tynu}z蒿둿뎾뎽덼ꈻꈻ醹酹郷邶~zywpllllkhfemaS}S}R R R]?sRR' 2*/'/'0(5,5,5,5,0(RfcR9$ (= (=Q~aaa8V 4P 4PQ`dfkmplvzz~烶腸鈸錻ꐽ꓾~ (= (=6O?s?sXRS}Dh^uţɤˤ̛̥kkkfecfdcfcbfcbfcbfcbfecfecifdjhelifxxyíȭŭĭvf􋍎Г뒿됾뎽뎽댼늻ꈻꇹ醹鄸邷逶|zxvmllllkhfebaㇺYS}S}SV?s?s7P (= (=[둿덽ꊺꇹ鄷逵syksqokfea_[(X 4P 4PPxbbb9V (= (=L [(!6,6,5,6,5,5,5,5,&dRR83 (= (=YaaW 4P 4PGk[_bfhlnptxzrނ胶船銺ꎼꑾ딿Rv (= (=%On@t@t TST}~ǯk]šɡʢ̤Οlmnecbdcadcadcadbadbadcadcaecbfdbfdchfcjhe}˭ɬŬĬj˩|뎾뎽zfk߆酹鄷邷遶}zywqllllkiheda_kS}S}R~ R7o@t*Uw (= (=:]z뎽ꌻꈺꅸ邶wysrpmjfc`[[9r 4P 4PFjbbbAc (= (=E e&6,6.6,6,6,6,6,5,jfVS/I[ (= (=`aaNz 4P 4P([Z^`dfjlqjxyz然臹鈹荽ꎽꔿ,Ni (= (=6fAu1l RR~;dXğʠʡ̡Ϣzecbcb`b```^^_^^_^^_^^_^^a__ba`ca`ecbfcbfedife̬ɫŬī|]􊊊h (9Od|܂逶~zzwsllllljhfeba]a>sS}S} R]Au>q ,B (= ,Bގ늺ꇸꄷ逵uylsrnkhe`^[[M 4P 4P>^bbbGl (= (=?n $6.6.6.6.5,6,6,5, [̴%@R (= +BaaaGn 4P 4P>x[[_beiloptxzt焸爹錻鎼ꑾ꒾ꑻ,B (=.CAuBv!a RS}exűe_Ûȝʟˠϡєba``___^^_^^^]]^]]^]]^]]^]]^^^_^^`_^caadbafdbfdbnnmǫ̫ȫūjɢnoz%r}zzwulllllkhheda_]^nS}S}RWBvBvA[ (= (=^눹醸郶tyssqlkfc`][[Y 4P 4P8VbbbNv (= (==w!7.6,2(+$$! mR5G (= .FaaaCh 4P 4PE[Z_adfjmpiwzx烶舸銹錻됽ꔿr (= (=B^BwBwZRV~ZǛɜʡЦӣx`_^_^^_^^[[[ZYYYXYXXXXXXYXY[Z[][]__^_^^`__b``fcbfdb̪˪ƪĪzWۊ|||&1|zzwvnllllliheeaa]]]⊻S}S}S R;rBw1_ (= (==aꈺꄷ聵xynsrolheb_[[[[9W 4P5RbbbQz (= (=:"7.6,'~ RRR<7ç+@ (= (>aaa@d 4P 4PK[[[_ceiloqvyzx⁴膸芹錻ꎽꑾOu (= (=(TuCwCw SS:d⭖xTǵ鶶fffXXXYXYXXXXXXYXYXXXXXX[[[^][_^^`__ca`fdbtvyΪ̩ɩũèXѺIjzwwnlllllihfeba^]]]u2iS}S} R'dCw@r (> (==Uꆹꃶsypspmjfc`[[[[[ 4P 4P 4PbbbS| (= (=^t|!7/7/7/7.4,3,]R4G (= .Faaa@c 4P 4PL[[[^adfjmqjwzv焷燹ꊹ荼ꑽ5Wt (= (=8fCx>uRSPn]eڷxxyUUURRSTTTVUVWWWXXXZYY][[_^^`__dbafdbŲ̃˨ƨħjǩ555"wvnllllljhfeda_]]]]fTS}S} R"cCxCx7P (= (=|م邵zyqsrokieb_[[[[[8V 4P 6SbbbT~ (= (=n837/7/7/7/7/7/'R&@T (= +BaaaAf 4P 4PI[[[]`bfjlpqvxz|ザ腷鈹銺ꎽ:R (= (?CvEy*h RS~l}UzϵyyyRRSRRSSSTVVVXXXYYY]][_^^a__fcb̧˧ȧħulQQQ_mlllllkhfedaa]]]]]_mS}S}SWEyEyA[ (= (=e逵qyosqljfd`][[[[X 4P 4P8VbbbQz (= (=yFB p7/7/7/7/7/7/li1K[ (= (=`aaEj 4P 4P@z[[[[^adfknqjwzt脷釸銺酲 (= (=3KEzEz_ SS}QǴ__aQQRSSTVVVXXX[[[^]]_^^cbaϦ̦ɦŦz`ҊiiiAelllllkhffeaa^]]]]]]S}S}S TEzEz(Ss (= (=W|zsssokieb_[[[[[L 4P 4P?`bbbMt (= (=+VBxtR["7/7/7/1(SNds (= (=XaaJt 4P 4P6m[[[Z]`cfilpovxz|悶腷鈺p (= (=C`FzFz^ RS}OônnnQQRTTTWWXZYY][]_^^a``Х̥ʥƦåY⊊ttt5Splllllhheeba_]]]]]]]S}S}R VFzFz1[ (= (=Foqynsqmkfda][[[[[8o 4P 4PGlbbbEh (= (=ARRRx *#7/,&7u3t (= (=O}aaS 4P 4PLp[[[[[_aehlpqnwzr݁胷舺^ (= (=&OnGzGz URS}O³rrsRRSVVVXXX[[[_^^`__Ѥ̤ˤƥäY銊|||4Qnlllkhhfeba_]]]]]]]]⌼XS}RRGzGz8f (= (=7^~yutsolifb_[[[[[[$T| 4P 4PR|bbb>_ (= (=FR>83+1(1(4,] (= (=Bfaa] 4Q 4P8VW[[[[[`dfimpovyz~烵腷Nu (= (=/[|G|G| TRV~檝OómmmTTUYXYZYY_^^_^^ѣ̣ˣǣãY=allkhheeba_]]]]]]]]]ⅷ'`S}S~REzG|_bbbb=] (= (=XR6t1R2(7/5. Z} (= (= 8VaaaLw 4P 4P 4PW[[[Y^adfjmqjxzz'Je (= (=FyKE|RRS}U쵶^]]_^^rzўϞ˟ɟşncҊhhh chfecba^]]]]]]]]]]]]]⌼WS}S~RKKCu (= (=%Jhmsrnkhe`^[[[[[?y 4P 4P 4QYbbba .E (= (=x# TкR2(7/'!d8M (= (>Yaa_;[ 4P 4P%V}Z[[[[_ceilppuxzt&Jf (= (=GzKCzRRS}w^lʹutt`__Й̛ʙǜÜczPPP Ufedca`^]]]]]]]]]]]]]]ⒿVS}SRKK@p (= (=.Utssqmjfc`[[[[[E 4P 4P 4PInbbbbOx (= (=[9A9OGB>KG݈R1(4,` | (= (==^aaaV 4Q 4P 4P,`[[[Z]`efjmpjwyx&Ie (= (=IzLI~RRS}VsuZ浵jmrϙϙ˛ɜƜSν[s /?Zeedaa_]]]]]]]]]]]]]]]]S}S}SXLL;i (= (=2[}srokheb_[[[[>w 4P 4P 4P?`abbbb3M (= (=W/&6/T~zR6.& ,n(,A (= (@ZaaaLw 4P 4P 4P OtV[[[`beilppuyz#Fb (= (=GyMMS SS}7b娞WеϙΛɛȜÜwOqdGs9[|>cUeedba`^]]]]]]]]]]]]]]]]aS}S}S VMM6b (= (==hspmjfc`[[[U#Sz 4P 4P 4P=]^bbbbT~ (= (= 5; [R5,,~(pmie b0( W˲p (= (= 7VaaaaIq 4P 4P 4P 4PB}[[]bdfknqivW ,C (= (=CtMMT SS}U}ej뻿µΣԙϛʛɛŜ^_؊hhhfeeecaa_]]]]]]]]]]]]]]]]]]ojS}S}SZMM.Yy (= (==ZWnkieb_[R,`9W 4P 4P 4P?^_bbbbb5P (= (= 22(# c6.RWR o|VS/C (= (=P}aaaaLw5R 4P 4P 4P=];sW`cehmfNA` 4P ,C (= (=AoOOZSS~S}zŬX輾ٙʙɛǛÜ}Tůyffeedba`_]]]]]]]]]]]]]]]]]]]]}GzS}S} S&fOO&Li (= (= 0J 4P 4P$Qu/`2c4h#RxGk 4P 4P 4P 4P 4QInabbbbbLr (= (=>;1*2(z !WC>R] (= (= ,EZaaaaW;Y 4P 4P 4P 4P5Q:W$Qv!Nq%Rv7S 4P 4P 4P 4P ,E (= (=;hOO XSSS}:cjjʷۙəșě^h󊊊kedcbaa_^]]]]]]]]]]]]]]]]]]]]]⌻*bS}S}S*jOO@Z (= (= 2M 4P 4P 4P 4P 4P 4P 4P 4P 4P 4P 4P?^Wbbbbbb[ +B (= (=$02(2( nRRR$h #|R@Xi (= (= 5R_aaaa`Lv6T 4P 4P 4P 4P 4P 4P 4P 4P 4P 4P 4P 6T:[ (= (=3^PP]SSS}T}Ȭ[޾ƸۘșęoZȶcbaaa_^]]]]]]]]]]]]]]]]]]]]]]^S}S}SSBzPP0F (= *@Ks<[ 4P 4P 4P 4P 4P 4P 4P7TCfWbbbbbbb` 0G (= (=_83*3*2*q RR#*$RRR3G (= (= 7T`aaaaa^P}Ae7U 4P 4P 4P 4P 4P7UAeP}^Nz (= (=*RrPP,mR RS}S}fy]ݘęY񌍍la`_^]]]]]]]]]]]]]]]]]]]]]]]]]qeS}S}S WPPI| (= (=5Obb^UQzOwPxS}[abbbbbbbba:W (= (= 6;%""R$7/7/7/(n$,n(.C (= (= 5R[aaaaaaaa[YVY[aaaaV (= (=@ZQQ6sSSS~S}S}褞lfܘ[l^]]]]]]]]]]]]]]]]]]]]]]]]]]]]]⌼2iS}S} SZQQ;h (= (=>^bbbbbbbbbbbbbbbbb`4O (= (= *;GR[z 2+7/7/7/QM (=2JRRPSSSS}S}Ȩcmڝė_f̿يf]]]]]]]]]]]]]]]]]]]]]]]]]]]]]cS}S}SS+kRR*Rp (= (=Jpbbbbbbbbbbbbbbbb[2M (= (= *=$/0* ^R ' 6.7/7/7/7/NGS5I (= (= (>?a[aaaaaaaaaaaa[>a (> (= (= (=K|SS[S SS}S}=r`l଼Ζ^ct]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]ℸL~S}S}SSGSS8Q (= (==[^bbbbbbbbbbbbbaIo (= (= (= .<%14+4+4+(!} Rw 7/7/7/7/80 f/I[ (= (= (= *@?cS`aaaaaa`S>a (= (= (= (= (= (=;fTTbSSTS}S}ٔdcИZfŹa]]]]]]]]]]]]]]]]]]]]]]]]]]]]]cS}S}S~S VTTK| (= (= (= (= (=Gk^bbbbbbbbbaOv ,E (= (= (=<;,05,5,5,5,4+4+w %x 6.IE[X,@ (= (= (= (= ,C 3N>a>`Bf>a 1K +C (= (= (= (=0C^r (= (='LjUU@ySSSS}S}J}֍jUתʘsUlǼߍ^]]]]]]]]]]]]]]]]]]]]]]]]]]]]⊼LS}S}SS,lUU7` (= (= *? (= (= (= (=:XGlPyXZYS|Lq>] (= (= (= (= (= C,+(5,5+5,5+5,5,5, [RRR7/7/1,Rkq8' (= (= (= (= (= (= (= (= (= (= (= (= (= +>fy (? (= ,AUUU VSSTS}S}٢ыҢxUbƸνӾֽոҰͥřW[~զ]]]]]]]]]]]]]]]]]]]]]]]]]]]pS}S}S~SSIUUjkCZj (= (=CrVVcSSSS}S}7mNJjUbyZVhĸIn]]]]]]]]]]]]]]]]]]]]]]]]]d2iS}S}SSZVVM~ (> (= .yWW0Xx (= (=C,ӎn[o}KaqUjxfzR1(6,6,5,5,5,5,5,5,liߑ `7/7/7/;7tqğR7/7/7/7/7/7/7/7/2+[R *? (= (?TWW]SS SS}S}Uզא⭳cSOMLJKMMOSd| ]SS}S}=r`]]]]]]]]]]]]]]]]]]]]_㑾TS}S~ SSUWWV3J (= (=M R1(6,6,6,6,6,6,5,5, Z̴rm[7/7/GC?z;` U2+7/7/7/7/7/7/%YR]Ujy (= (=9cXXC~SSSSS}S}'`♠ǩ֔_yXSSTS}S}7mj]]]]]]]]]]]]]]]]]]bS}S}S}SSS+mXX@l (= (=K5RR1(6.6.6.6.6.6.6.(! XSMR7/FAY c_R7/7/7/7/2(RRRR}z (= (=2IXYYeRRRTS}S}$]ːϛ-dSSSSST~S}S};p킶_]]]]]]]]]]]]]]]m'`S}S}SSS XXYY8Q (= (= KVSR1(7.2*("%RNK$R82RS e6.7/5,YRRRRR,GW (= (==iZZGSSSSUS}S},eަ瞬ձJn VSSSSSS STS}S}'`z_]]]]]]]]]]]e㈺"[S}S}SSSS1qZZEr (= (= .6ecR2(8/6.' lRRc plW4,eŪ?;R%7/' ]R (= (=5MXZZdSSSSTS}S} [Ѧ蝭Ƹ~KlUSSSSSSSSSSUS}S} [y˦퇹o`]]]]]br挼|TS}S}SSSS]ZZZ9R (= (= CFBRR2(7/7/7/7/3+1+RRq 2|.ԾRr 7/7/7/7/7/7/7/RzSSSSSTS}S}S}T~j鞹ԙ`3`V~S}S}SSSSSSSSSSSSSSSSTS}S}S}"[at,dS}S}S}SSSSSe[[W.C (= (=".2(1',&Az=R("7/7/7/7/7/1*U72R0p,ŦRR `#&("1*7/R]s (= (==V]]]&jTTTTTST~S}S}S}S}TϢ톯[,eS}S}S}S}S TTTTTTTTTTTTSSSSSS STS}S}S}#[Tݦf0fS}S}S}S} TTTTT^[]],Ro (= (=P71'1'1(.(bfRv *#7/7/7/%1q,RRRRRRs ' 7/7/RO ,= (= (=7`]]]bTTTTTTSS}S}S}S}S}W,dI|L~ZMJ}*bXS}S}S}S}S}S TTTTTTTTTTTTTTTTTTTTTSTS}S}S}S}S}"[QlxʈօՂn[/fUS}S}S}S}STTTTTTM]]Er (> (= ,=*,1(1(2(/&RRRRR,%5,cڱR̵RR"7/7/7/7/RRf (= (= (?Gt^^ZXTTTTTTSTS~S}S}S}S}S}S}S}S}S}S}S}S}S}S}S STTTTTTTTTTTTTTTTTTTTTTTTTSS~S}S}S}S}S}S}S}S}S}S}S}S}S}S}S}S TTTTTTT9x^^W2I (= (=`(/'2(2(2(1(SR4.<51(1(1(#c_[R7/7/7/7/R di4 (= (=1GS__V]TTTTTTTS STSS}S}S}S}S}S}S}ST TSTTTTTTTTTTTTTTTTTTTTTTTTTTTTT STS}S}S}S}S}S}S}S}S}S}SSSTTTTTTT:y__]!E` (= (= 41,&2(2(2(2(2(eĨR2(7/7/4,0(c f S,%7/7/7/R h.'I< (= (=8QY``TWTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTS STSTS T TTTTTTTTTTT h```1Yx (= (= /:,+2(3(3(2(3(,$RR2(2+ aRRtqR| 7/7/7/RSPB<T,%,(8@ (= (=>W[aaWYTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTfaaa=f (= (= (=%/3(2(2(3*2(,"RRPMR2(7/7/=5RB|>nR("7/7/#RwtɈR&0&** 1> (= (= (= (=;TXbbbhTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT,qbbbCo (> (= (=p52(3*2(2(3(3(/&4+4*0( UR1(7/7/rro"zR#7/(!Rli eRRRRG +< (= (=1GN}aaa=zWTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTWA~aaa=h (= (= (=d61*2(2(4(3(3(3*4+3*3*2*SR1(7/&[ صS b4,+$R]Z˳ֱؾеѻƫ&`, ,9 (= (= ,A@jbbb^$lUTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT`[bba1Xw (= (= (=G/1(2(4(3(3(4*4*3(3*4+4*4+fR2(5,fA=R.&ROL󈭇 YWC; (= (= (=%Id[bbbCWTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTU,qbbb[$Gc (= (= (=&aEX1&3(3(4+4*3*3*0(4+4*5,4+96xuR2(#!f ]U( RAz=`T,#2(0*f5 (= (= (=3JFrbbbb/r XTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUfVbbbKy1G (= (= (> e(!" R a"5,4*JB=5=9LGR(" W̴}zR lR,n(MJR,"2(2(2(2(2(!2 .> (= (= (=&JfUbbbbGdTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTU&lUbbb^0Wu (> (= (=4G82RVh bRR*"4+G?@74,4,A:^Rf XU"wRRb?9R0&2(2(2(2(2(2(2(,,Q9 (= (= (= *@.Tq[bbbbN'lXTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTX+oVbbbbCn.C (= (= (=6O` W2(C76,4+4+4+4+G?[T f[ ֒bv6O`,A (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (= (=6JC[ku5/U!R h%8/7/A;dćR( 4*4+4+5,haMFRRRR޵ĕv`tKaq6O`$?R6J0C (= (= (= (= (=/C:N.GY;SdPfufzm a `RR/(7/7/7/JCR f 4+?6~x;24,RR~l RR5,7/7/7/7/7/ W[VSߎ[S5,5,5,.&*#4+5,6,.&RVRR1(7/7/7/7/7/#R[ 5,5,5,5,5,5,5,6,5,6,2*Ru 6.7/7/7/RRS@:W0(5,5,6,6,6,6,6,5.6.6. Y f7/7/R W71RZ6,6,6,6,6,6.6.6.6.6,mkhڙU$2+,%6.7/7/0t,1+W1(6,6,6.6.6.6.6.7.7.% IEidV+$7/7/6.7/TPE~A [} ,%,%,%,$+$(!,%7/7/+%#f>9R _5,7/WRT61RRRRRR5,7/7/5/SoR"7/7/=6`̅RR f.'7/7/7/7/C=R3.[,%7/7/94RʱRR+$7/7/7/7/7/7/6/Rȭ(# `0(7/]XRn l5.7/7/7/7/7/7/&R! e1(F? WӾݞT,&,&,&,&+$[RR f+$&n!mj@;RRRRRRRRRRRRSܶܶܶܶǙȭ-"--78&&p&0S&;&s{'#(t('|' ' (,)& 9'"8'"&#"&!& &] &&S!+%Q F%W%&y&8G&/%3 A%I%&N% &bG&"--8.&B%R%s9%%K.&"--8&jM%R%s$#%4&j#.-8%-%RQ%s$%a%-#.-8%-%:%$$m%%-#.-8%I$v$l$2%%I#.-8%$T$g$J%$.-8F%v$9$M$F%$.-8$ %1[$q $2$$$/-8 %$$$"$$C$U$%%$/-8 %%$b$$/($:#$%%/-8%$$ #$r%%/-8%##$^%%/-8$y##$J$y%0-8$e##$6$e&0-8$Q#n#yo#op$$$Q&0-8$=#n#y|#T$$=&0-8y$)u#n#y#P8$y$)&0-8$]$w##4H#$$&0-8$A$#y#4###;$'1-8$%$`#t#"#$'1-8#$##"m##$'1-88#(#p"";# 8#('1-88#(#""b#"8#((1-8 #l#X#VG#8#(D#""q##(2-8#R#w"g"xS#q#(2-8{#"N"^8#a{#(2-8]#vp"3"E#P]#v)2-8A#fW"e","@A#f)2-8$#U="M!"1$#U)2-8#E""3!"""#E)3-8"6"!"!!""6*3-8""'!"!!""*3-8""!!!G"h"*3-8"" !|!""*3-8!["M!a!!!+4-8! "!F!g "!+4-8"!!i!,!P!"+4-8"!HN!p!8!",4-8! ( |!!,5-8!  ]!!,5-8!   W>!v!,5-8h!    Q !jh!-5-8J!y  a W !`J!y-5-8+!n "a ; | U+!n-6-8 !c_ ! f K !c-6-8 YC  O A Y.6-8 O) o9 8 O.6-8 6 D V!P | 6.6-8 6 :?   6.6-8 d b* T /7-8#  )  # /7-8#  c # /7-/8 c c4mljhlu R-$C # + G C $ # C 7 h c^ $^ c^^^$^ c7 h#  ^$   $       $     $  I Qc c} u $I Pc cI QI PI P$} vc cI Pi $ 7 J} v$  7i $w  $y U 7  ; Y wy U$ ; Y ; ; ;$ w Y ;@!U6!s,! w$B!U6!s@!UA!UB!U$*!6!sB!U!r!s!*!$!r!!r!r!r$s!!!r!!!s!$!!!!!$!!!"""!$."""2"."$!".""B!<!6!$!6!<!7!7!6$!7!<"A!!!!7$!!!!!!!$!!!!!!!!!! $!!!!!!$!!!!!!!!!$!!!!!!!$!!!*"ZD"m^"!$*"ZD"m*"Z*"Z*"Z$^"D"m*"Zu"""^"$""u"""$"$"""" "<"$$"<" "<"<"<$"<" ".#7#S#o"<$/#7#S.#7.#7/#7$#o#S/#7#n#p##o$###n#y#$a###i#J#+#a#$+#J#*#*#+#$*#J#j#X#(8###*#$#8#####!#$##8##X##X#)8#)#)##$#)8#)S#:##)$S#:8#)#/#J# e#S#:$0#J# /#/#0#$d# J# 0####d# $#####$###$$8$#$0$$$$0$$ $$0$$ t$&b$A $$$ t$&$ $ $ $a$@t$&$ $`$z$a$@$$a$z$`$`$a$$$z$a*%%%$$6%%*%;%6%$$%6%%$$$$$$$$$$$$%$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$w$$$$$$$N$`%r$$$M$`$N$M$M$%s$`$M%%.%A%s$%%.%%%$%F%.%&&&%F$&&&&&$&&&&&q&&$q&&q&q&q&$q&&&&x& Y&q&$Y&x& Y&Y&Y&$Y&x& &&b&{C&uY&$C&ub&{B&vC&uC&u$B&vb&{&n&N&.&B&v$.&N&.&.&.&$.&N&n&]&i=&d&_.&$&_=&d&`&`&_$&`=&d]&h[&w;&s&o&`$&o;&sV& &&o$V&;&s &a.&LI&^d&pV&$/&KI&^.&L/&L/&K$c&qI&^/&KO'i''c&q$P'i'O'P'P'$'i'P'b'{'''$'{'b'y''$d'{''9(`"(v (d'$A(}"(v9(`E(lA(}$(o"(vA(}'''(o$'''''$'''' ' ' '$' ' ' }'X!' $' ' ' ' ' ' ' $' ' ' ' ' $' ' ' ' ' ' ' $' ' ' ' ' $' ' ' ((-(@' $((-((($(A(-()H(\(p(A$(p(\(p(p(p$(p(\)H|)c)J) (p$|)c)|)|)|)$J) c)|)) )& u): J) $)< )& ) )' )< $v) )& )< P'"8'" '"v) $'"8'"P'"7'"'"$Q'"8'"'"&"&o"'["Q'"$&"&o"&"&"&"$'["&o"&"&7"&#"&"'["$&"&#"&7"&,"&"$&'"&#"&"&!&!&!&'"$&!&!&!&!&!$&!&!&!&4!&8!&!&S!%h!%L!%7!&"!'&>!$&"!%7!&"!&"!&"!$&"!%7!%L!.% F%o ^%Z &"!$^%Z F%o ^%Z ^%Z ^%Z $^%Z F%o .% %f +%Q C%< ^%Z $ %M +%Q %f %\ %M $K%U +%Q %M %9%Y%K%U $Y%9%Y%Y%Y%$Y%9%%$%cD%fd%iY%$d%iD%fd%hd%id%i$d%hD%f$%d-%M%m%d%h$m%M%m%m%m%$m%M%-%2%rR%sr%tm% $r%sR%s2%rr%s$2%sR%sr%sr%tR%t2%t2%s $2%tR%tr%t2%t$r%tR%t2%t2%sR%sr%sr%t$r%sR%s6%cr%r%s$6%cR%sn%%A$1$!6%c$%A$1%A%A%A$$!$1%A$$$$!$$$$$$$$$$#%$$$$$$$$$$$$#%W#n#y#c$$N#vn#yW#M#N#v$#|n#yN#vS#<s#?#B#|$#Bs#?#A#A#B$#As#?S#=d#2#4#6#A $#4#4d#2#4$d#4#4#4#6#6d#6d#4$#F#6#6#>#F$h#&#6#F##"#"h#&$")###"#F")$##")"""#$"""""$"""!1"""$!1"!1!1!1$""!1!'!""$!!!'!!$"!!!"!""$!""!"!"!"$!""!!"#"!"$#""!z'"@#"$!z""""!{!z$!""!!$"""!!"""""$"""!""""$!"""!!!$"!"""$!!"!!!!$!!!!!$!!!   !$     $    d f h $ h f h h h$ h f d    h$     $    5 &  $ 6 & 5 5 6$  & 6 |} la \ $ |} l | | |$a \} l |} a E a \$L a } j L $v a L  ) m> Uv $> U) m= T> T> U$= T) m {bI= T$ab{qa$cba/01c$.0/..$20. 2$    $   $    $   $   $$$D4$$N4DcN$4N$$mS$ymmy}ym$mmymyhhhm$hhQh$QhiRQ$xiixxi$iixixhhhi$hh{Zh${Zhvzly^{Z$lz$RlR$$du$uudu$uuuu$$YXW$ZXYYZ$VXZV$$741$84788$0480$$ogo$gUg$m$$$$ $$ rlf $slrss$els#e$$#+ #  9#R----N$%T)G T)) *d**+n++,q, , -6k-N-h.]...6 s- 6- ,{ ,e |,Q <,? +. + y+ 6+ * * k* &* ) ) T) T)G N$%.6 ..G/ /- /U &0~ o0 0 0 @13 1e 1 2 F2 2; 2t 2 1 0 0 `0 10a 08 / / j/ 6/ /{ .Y .9 \. #. - - s- .6 N$%1 2 53 m3) 3h 3 4 >4- o4r 4 4 4G 5I5o5'5t55b42?222~2Q_2?221r1=1 1d1<1r1A00 1 N$%b455b6/6I6Wa6v66T666Z66 6h666|L5|3|33333]3333Gv3g3V3C3=/333}2?b4N$%L5|6|665666E666M6v6a6NI6/66F55b4O23{3</3C3V3yg37v333l3'333T3 33|L5|N$%b4O5555o5I5 5g444@o4>4 43P3m353 2I1/001<1d1U1#1112O?2_2~22m2222b4ON$%1/2I22F22+ 1` 1 @1 0 0#!o0P!&0z!/!/!G/!.".6". s-N-4-#.\.../}6/Zj/5//010`0l0A01/N$%. .6"].V".t"-"k-"-","q,","+#n+#+)#*3#d*;# *@#)D#T)E#T)!T) ) ) &* k* * * 6+y+++<,|,,,}6-fs-N. N$%T)!T)E#(D#(@#D(;#'3#')#:'#&#&"7&"%"%"=%"$"$t"K$V"#6"$ 5%Nr%f%}%,&l&&&/'r'' ' =( ( ( ) T) T)!N$%$ #6"#"a#!#!"!"z!9"P!!#!! h! $! ` + b $ I /!"AH"lw""" #>#5r#Z#}#$M$$$$45%N$ N$% /Is ;Pj9 @g_95FO2 m* I i  O   !#D!Ul!!!! /N$%FOFy_HN2 ME5|\|| T'l%2B7Syey<{FON$%\||h Z T2H_WybF?}ye=SB2%G]3|\|N$%Ft9'_G  9r j-   h ;) s  ! !!Al!rD!!  = r i I * Q ?FN$%  t $ ; b  $!e h!3 ! ! 9" "~ "U #- a# ##$6 5% $ $ $ M$ $9 #Y #{ r# ># # " "8 w"a H" " ! N$%$6 #K$$$h=%N%6% 7& &&:'''D(((T)T)G T) ) ( ( =( ' ' r' /' & &. l&? ,&Q %e %{ r% 5% $6 ----$ \(S (J'----N$%U)U) ) *U***$O+/+<+LB,],p,.-{--.[. . -j -P C-7 - , w, 2, + + ]+ + * * 8* ) ) U) U)N$%. [. .( .I 3/m y/ / 0 D0 05 0b 1 C1 1 1% 1Y .2 e2 1L S1 "1 0s 0E 0 T0 0 / /s t/M :/( . . . F. . -j . N$%1L e2 2 28 3t 53 e3 3- 3m 3 4 A45h4z444P45c4,3s31x3Y3:3r352222H^252 2 1l 18 1 S1 1L N$%c4,525/N5{g555e555W555Q56 6Q 6 6M5444d44w4m45a4T4E4Y54#443>333sc4,N$%M5 6 6V 665Y555T555I55g56N5255c433H334z#4454E4T4]a4m4w4~43444M4M5N$%c454d444>h4A44 3O33e353N322e281S1+111 2]52'^222}2B23:3Y3Mx3 33c4N$%1e28.2o111 C1>1n00D00 /F y/m 3/ . . [. .E -.xF.[.<..:/t///d0;T0000"1\S1+1N$%.E [. .!-0!{-J!.-c!,z!,!B,!+!+!O+!*!*!U*!*!)!U)!U)4!U)t )s )p 8*l *e *] +S ]+H +: ++ 2, w, ,-C---.E N$%U)4!U)!(!(!U(!(!'!['! '!&!h&!&!%z!|%c!/%J!$0!$!O$ $E $%%g%%%3& x& &+ ': M'H 'S '] ((e r(l (p )s U)t U)4!N$%$E O$ $ # w# 1#m "F " f"%"!!ng!>+!   | oE 8 W!+!\!!!"V"";"d"6#p###&$<d$[$x$$E N$% E 8 uNEO iB>dG2 QMpB}$ L u ' ]  '!W!+ N$%Gx\C6+ITYV]M!%+33~=IV]eu4zHGN$%]QQWe+C\{x/G,s>ueYVI=53+%!d]N$%G,PBzi5  m - E u t 8  E L W! '! 8 l u L $ H5prQ21sG,N$% L E | Y % +! g! ! !b %"5 f" " " 1# w#m #I $( O$ $ $j $ d$ &$ # # p#( 6#M "s " " V" !" !E !s ! W! L N$%$ O$ $$/%|%%&ph&]&L '<['/'$(U((( U) U)U) ) ( r( (( ' ' M' ' & x& 3& % % g%7 %%P $j $ -- Arial Black-2 c SEARCH'%uttU 2 c MONKEYi'--$6J t(S (k'6----N$%.-&w&:ePhLE;<l%}qMf^WoR$ONN$%* r ! G nD    M K |  B | P  _ F  o c< 3   e }- S + } @  xYE;N$%_ F " V = {  ?GsV64Yya1_    Rw R -  V   ^ l0 4  _ FN$%al `,>\O^ k`vl#, 6G_{~d5K1aN$%7   vE!k!^!OL">","K###B$$$$1X$K$d#{#6#""R""!h!! v % N$%$$y0%Y}%6%&_&&&s6'G{'' ( B( (V (" ( 9)_ ( 5( (0 '^ ' Z' ' & &- k&R ,&w % % j% '% $$1X$$N$%_ ( 9) t)| )B ) * O* *M * * + <+D g+ + +r +* +!,r+E*** e*@ B*} * ) )- )e ) U) () (< (o ( h( 5(_ (N$%r+!,A,L_,{,,e,,,w,&,----%-+-..-/-o,+$+o+++M+++%r+lb+P+=+<(++**E*r+N$%o,/-.-,+-%--/--,9,,,K,,{,d_,A,!,r+k***1+t(+=+P+Db+r+++c+++A+++o,N$%r+!,+>+++lg+(<++*c*$*O**n)4)t)9)Q(5(h(A(t((()U)K))))3*pB*e**+*k*r+N$%Q(9)(Z('(B(('i{'=6'&&_&&z%W}%70%$$X$$$'%j%%9%^,&k&&& '&Z'R''(5(Q(N$%$$$B$##K#"r"aL"R!E!:E!1 * %7 "!% v !h!!"R"" " 6#5#L#e$X$$N$%!"#%*l1:E`R ar\` laeL55~  _G6,N$%a7Wz4V=i?'{Z=QF4Rl&V^9R_aN$%QF4Pn$|cK(lnG>!k;+Yxp3+SK}t3AcQFN$%dhKP:&9/,NOARW^cfq}Dt1k;-- Arial Black---N$%= $+i4@-N_rLb o < bw ( ~:`D*DF?2N$%w  b q   h A t S   S2 y  QF ]l 1  b &y 9  ~ Iq ,   V \ 2 u ( w N$% ]"kA{Q TDE:bSQF%@Ge:Z y|1I a l  ]N$%Qm.*D\Yq%`6POLFQ?5)+ k SDeFQN$%[  3!!"q""q@#\#D $*n$$1%%%%Fi%e%$a$$#O#" "3")!5r!?!F LI OPN$%%%N&b&:'`''(e(T(  )])){)AG***"+ *l * ) )Y)I)|((;( ':'eV''&e&&%%Fi%%N$% *"+Fh++ +y /,2 n, , ,S - U- -h - - .q H. s. .w -( =-u - , ,V , u, H,, ,q + + +9 I+y + * *1 _*l * *N$%w - .o . ./b&/C/]/Lu///-//i///=///^.2].Y.S.?K.A.4.F%...D---:--_-( =-w -N$%//q/ //E///!//bu/]/C/L&//.?..8-=-_-$-t---j-..i%.4.A.oK.S.!Y.|].^./N$%8-.s.=H..-G--U-\-,,}n,5/,++hh+'"+*C *}_***5+uI+++=+,H,u,Y,,,:-=-8-N$%*'"+**nG*3))]) )[()e(('`'u'M&&N&%%ii%%&e&& 'JV'u'';((3(f)Y)) )C **N$%%%%1%$n$k $S#>@#*"q" "!3! [ _`cI i p!zr!!3"""O##$a$,$J%ii%%N$%6` *%>SYk.mQiJ,DS k+zpiQc`_N$%Q&MSuE)[DQ3nk"']C af31yuZJ G@iQN$%]'hQ5}S\tGA=b8: 2Y\=I~u5&b}C]N$%8b?<Lbr!_N@E4+ $q |!oij*Dt`$~8--Arial Black-Arial Black-Arial Black---N$%  L  3   ! 4 dJ c <~   x E / Z[   U mJ*9 uI|xqAml N$%[  Z m  ,  V ?   JE;a"IM~6z 8 V  | Bh   n l < g  [ N$%"IkA;|K4nd( >lZ.r\5T 7V#'y%F 1KMN$%r.2uRpU;&  ~R~~ $~rBeUdB-M\rN$%R~~ x  n!!_""L##5$p$R%2%%c&&&\F&%}%%$G$#-r#B#U"e)"r!~I! f ~R~N$%&&9'l'> ( p((7)n)4)U**| +;d++,kb,",1,+Ke++* {*F**))-)#(V|(!('g' '5&\F&&N$%1,",-O-;--+.Eo. . .? 1/ m/ /, / 0m E0 u0 0[ / C/g / . .n . ^. ).h - - -V C- - ,6,~=,++1,N$%[ / 0E 0 0x 1 ?1`1<~11d1111132 2L22P10A000|z0n0I`0N0;0u$0 09///U / j/ C/[ /N$%P12b2 2{2 11(11K11r~1`1?1610i00S/C/j/Y///u/ 09$0;0N0e`0n02z000m00P1N$%S/0u0AE00/%/m/o1/..io.+.-s-$O--,1,++0=,x,, -XC---F-).^.A...G/C/S/N$%1,,Cb,,+sd+2 +*U*z)A) 7)(p(q (B'9'&&SF&z&'g''(!(Y|((-))/)i**{**"+ce++1,N$%&&c&%}%]%?$#5$ #L#"_"!n! x ~]~~"f ( 1I!=!J)"Z"m#r##G$$% }%/%SF&&N$%]~~ & ;#?U]}u.rS/ MmZdJ=B1($" ~]~N$%r.BZq( AdzK2sACIMc"1i/%y'Y(7zTSrN$%I$saiJ o%VAZS G<AlF B|X 8xz0MN$%S Zi/6  r~ c KJ 4 (!   {  b   lmmqx2e9u *JYmS -- -Arial Black- 2 WvGTK6u 6Arial Black-2 SeriesU*V'--6Arial Black-''searchmonkey-0.8.3/pixmaps/Makefile0000664000175000017500000004223113236164461014266 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # pixmaps/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/searchmonkey pkgincludedir = $(includedir)/searchmonkey pkglibdir = $(libdir)/searchmonkey pkglibexecdir = $(libexecdir)/searchmonkey am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = pixmaps ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_images_DATA) \ $(nobase_dist_icons_DATA) $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_$(V)) am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(imagesdir)" "$(DESTDIR)$(iconsdir)" DATA = $(dist_images_DATA) $(nobase_dist_icons_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = ${SHELL} /home/adam/searchmonkey-GTK/missing aclocal-1.15 ALL_LINGUAS = en_GB en_UK en_US fr_FR fr ru_RU AMTAR = $${TAR-tar} AM_DEFAULT_VERBOSITY = 1 AUTOCONF = ${SHELL} /home/adam/searchmonkey-GTK/missing autoconf AUTOHEADER = ${SHELL} /home/adam/searchmonkey-GTK/missing autoheader AUTOMAKE = ${SHELL} /home/adam/searchmonkey-GTK/missing automake-1.15 AWK = gawk CATALOGS = en_GB.gmo en_UK.gmo en_US.gmo fr_FR.gmo fr.gmo ru_RU.gmo CATOBJEXT = .gmo CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = -g -O2 CPP = gcc -E CPPFLAGS = CXX = g++ CXXDEPMODE = depmode=gcc3 CXXFLAGS = -g -O2 CYGPATH_W = echo DATADIRNAME = share DEFS = -DHAVE_CONFIG_H DEPDIR = .deps ECHO_C = ECHO_N = -n ECHO_T = EGREP = /usr/bin/grep -E EXEEXT = GETTEXT_PACKAGE = searchmonkey GMOFILES = en_GB.gmo en_UK.gmo en_US.gmo fr_FR.gmo fr.gmo ru_RU.gmo GMSGFMT = /usr/bin/msgfmt GREP = /usr/bin/grep INSTALL = /usr/bin/install -c INSTALL_DATA = ${INSTALL} -m 644 INSTALL_PROGRAM = ${INSTALL} INSTALL_SCRIPT = ${INSTALL} INSTALL_STRIP_PROGRAM = $(install_sh) -c -s INSTOBJEXT = .mo INTLLIBS = INTLTOOL_EXTRACT = /usr/bin/intltool-extract INTLTOOL_MERGE = /usr/bin/intltool-merge INTLTOOL_PERL = /usr/bin/perl INTLTOOL_UPDATE = /usr/bin/intltool-update INTLTOOL_V_MERGE = $(INTLTOOL__v_MERGE_$(V)) INTLTOOL_V_MERGE_OPTIONS = $(intltool__v_merge_options_$(V)) INTLTOOL__v_MERGE_ = $(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY)) INTLTOOL__v_MERGE_0 = @echo " ITMRG " $@; LDFLAGS = LIBOBJS = LIBS = LTLIBOBJS = MAINT = # MAKEINFO = ${SHELL} /home/adam/searchmonkey-GTK/missing makeinfo MKDIR_P = /usr/bin/mkdir -p MKINSTALLDIRS = ./mkinstalldirs MSGFMT = /usr/bin/msgfmt MSGFMT_OPTS = -c MSGMERGE = /usr/bin/msgmerge OBJEXT = o PACKAGE = searchmonkey PACKAGE_BUGREPORT = PACKAGE_CFLAGS = -pthread -I/usr/lib64/libzip/include -I/usr/include/poppler/glib -I/usr/include/poppler -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/libdrm -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz PACKAGE_LIBS = -pthread -lzip -lz -lpoppler-glib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lfreetype -lgthread-2.0 -lglib-2.0 PACKAGE_NAME = searchmonkey PACKAGE_STRING = searchmonkey 0.8.3 PACKAGE_TARNAME = searchmonkey PACKAGE_URL = PACKAGE_VERSION = 0.8.3 PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config PKG_CONFIG_LIBDIR = PKG_CONFIG_PATH = POFILES = en_GB.po en_UK.po en_US.po fr_FR.po fr.po ru_RU.po POSUB = po POW_LIB = PO_IN_DATADIR_FALSE = PO_IN_DATADIR_TRUE = SET_MAKE = SHELL = /bin/sh STRIP = USE_NLS = yes VERSION = 0.8.3 XGETTEXT = /usr/bin/xgettext abs_builddir = /home/adam/searchmonkey-GTK/pixmaps abs_srcdir = /home/adam/searchmonkey-GTK/pixmaps abs_top_builddir = /home/adam/searchmonkey-GTK abs_top_srcdir = /home/adam/searchmonkey-GTK ac_ct_CC = gcc ac_ct_CXX = g++ am__include = include am__leading_dot = . am__quote = am__tar = $${TAR-tar} chof - "$$tardir" am__untar = $${TAR-tar} xf - bindir = ${exec_prefix}/bin build_alias = builddir = . datadir = ${datarootdir} datarootdir = ${prefix}/share docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} dvidir = ${docdir} exec_prefix = ${prefix} host_alias = htmldir = ${docdir} includedir = ${prefix}/include infodir = ${datarootdir}/info install_sh = ${SHELL} /home/adam/searchmonkey-GTK/install-sh intltool__v_merge_options_ = $(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY)) intltool__v_merge_options_0 = -q libdir = ${exec_prefix}/lib libexecdir = ${exec_prefix}/libexec localedir = ${datarootdir}/locale localstatedir = ${prefix}/var mandir = ${datarootdir}/man mkdir_p = $(MKDIR_P) oldincludedir = /usr/include pdfdir = ${docdir} prefix = /usr/local program_transform_name = s,x,x, psdir = ${docdir} runstatedir = ${localstatedir}/run sbindir = ${exec_prefix}/sbin sharedstatedir = ${prefix}/com srcdir = . sysconfdir = ${prefix}/etc target_alias = top_build_prefix = ../ top_builddir = .. top_srcdir = .. iconsdir = $(datadir)/icons/hicolor nobase_dist_icons_DATA = \ 16x16/apps/searchmonkey.png \ 22x22/apps/searchmonkey.png \ 24x24/apps/searchmonkey.png \ 32x32/apps/searchmonkey.png \ 48x48/apps/searchmonkey.png imagesdir = $(datadir)/pixmaps/$(PACKAGE) dist_images_DATA = \ *.png gtk_update_icon_cache = gtk-update-icon-cache -f -t $(iconsdir) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pixmaps/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu pixmaps/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: # $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): # $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_imagesDATA: $(dist_images_DATA) @$(NORMAL_INSTALL) @list='$(dist_images_DATA)'; test -n "$(imagesdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(imagesdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(imagesdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(imagesdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(imagesdir)" || exit $$?; \ done uninstall-dist_imagesDATA: @$(NORMAL_UNINSTALL) @list='$(dist_images_DATA)'; test -n "$(imagesdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(imagesdir)'; $(am__uninstall_files_from_dir) install-nobase_dist_iconsDATA: $(nobase_dist_icons_DATA) @$(NORMAL_INSTALL) @list='$(nobase_dist_icons_DATA)'; test -n "$(iconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)" || exit 1; \ fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)/$$dir"; }; \ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(iconsdir)/$$dir'"; \ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(iconsdir)/$$dir" || exit $$?; }; \ done uninstall-nobase_dist_iconsDATA: @$(NORMAL_UNINSTALL) @list='$(nobase_dist_icons_DATA)'; test -n "$(iconsdir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(imagesdir)" "$(DESTDIR)$(iconsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_imagesDATA install-nobase_dist_iconsDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_imagesDATA \ uninstall-nobase_dist_iconsDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: install-am install-data-am install-strip uninstall-am .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-hook install-dist_imagesDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-nobase_dist_iconsDATA install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-dist_imagesDATA uninstall-hook \ uninstall-nobase_dist_iconsDATA .PRECIOUS: Makefile install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating GTK icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: searchmonkey-0.8.3/pixmaps/Makefile.am0000664000175000017500000000123613236161317014657 00000000000000iconsdir = $(datadir)/icons/hicolor nobase_dist_icons_DATA = \ 16x16/apps/searchmonkey.png \ 22x22/apps/searchmonkey.png \ 24x24/apps/searchmonkey.png \ 32x32/apps/searchmonkey.png \ 48x48/apps/searchmonkey.png imagesdir = $(datadir)/pixmaps/$(PACKAGE) dist_images_DATA = \ *.png gtk_update_icon_cache = gtk-update-icon-cache -f -t $(iconsdir) install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating GTK icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi searchmonkey-0.8.3/pixmaps/Makefile.in0000664000175000017500000004056113236161317014674 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = pixmaps ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(dist_images_DATA) \ $(nobase_dist_icons_DATA) $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(imagesdir)" "$(DESTDIR)$(iconsdir)" DATA = $(dist_images_DATA) $(nobase_dist_icons_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_CFLAGS = @PACKAGE_CFLAGS@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ POW_LIB = @POW_LIB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ iconsdir = $(datadir)/icons/hicolor nobase_dist_icons_DATA = \ 16x16/apps/searchmonkey.png \ 22x22/apps/searchmonkey.png \ 24x24/apps/searchmonkey.png \ 32x32/apps/searchmonkey.png \ 48x48/apps/searchmonkey.png imagesdir = $(datadir)/pixmaps/$(PACKAGE) dist_images_DATA = \ *.png gtk_update_icon_cache = gtk-update-icon-cache -f -t $(iconsdir) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pixmaps/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu pixmaps/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_imagesDATA: $(dist_images_DATA) @$(NORMAL_INSTALL) @list='$(dist_images_DATA)'; test -n "$(imagesdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(imagesdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(imagesdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(imagesdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(imagesdir)" || exit $$?; \ done uninstall-dist_imagesDATA: @$(NORMAL_UNINSTALL) @list='$(dist_images_DATA)'; test -n "$(imagesdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(imagesdir)'; $(am__uninstall_files_from_dir) install-nobase_dist_iconsDATA: $(nobase_dist_icons_DATA) @$(NORMAL_INSTALL) @list='$(nobase_dist_icons_DATA)'; test -n "$(iconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)" || exit 1; \ fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(iconsdir)/$$dir"; }; \ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(iconsdir)/$$dir'"; \ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(iconsdir)/$$dir" || exit $$?; }; \ done uninstall-nobase_dist_iconsDATA: @$(NORMAL_UNINSTALL) @list='$(nobase_dist_icons_DATA)'; test -n "$(iconsdir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(imagesdir)" "$(DESTDIR)$(iconsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_imagesDATA install-nobase_dist_iconsDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_imagesDATA \ uninstall-nobase_dist_iconsDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: install-am install-data-am install-strip uninstall-am .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-hook install-dist_imagesDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-nobase_dist_iconsDATA install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-dist_imagesDATA uninstall-hook \ uninstall-nobase_dist_iconsDATA .PRECIOUS: Makefile install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating GTK icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: searchmonkey-0.8.3/pixmaps/readme-searchmonkey-icon.txt0000664000175000017500000003505613236161317020244 00000000000000Searchmonkey Icon ----------------------------------------------- Description: This is an icon of a monkey with a magnifying glass enlarging one of his eyes, with a background of palm-leaves or ferns. ----------------------------------------------- Authors: Peter Cruickshank composed the image, enlarged one of the monkey's eyes, lowered and deepened the monkey's smile (when a monkey can search so thoroughly, he has to be happy!), removed the shadow under the monkey's head, removed the shadow and focused light point under the magnifying glass, and drew the the palm-leaves/ferns in Inkscape. He took the monkey (face-monkey.svg) and the magnifying glass (system-search.svg) from the Tango Desktop Project ( http://tango.freedesktop.org/Tango_Icon_Gallery ). Those two images were licensed under the Creative Commons Attribution-ShareAlike 2.5 License (see below). ----------------------------------------------- License: Creative Commons Attribution Share-Alike 2.5 License ( http://creativecommons.org/licenses/by-sa/2.5/ ) THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. 1. Definitions 1. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. 2. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. 3. "Licensor" means the individual or entity that offers the Work under the terms of this License. 4. "Original Author" means the individual or entity who created the Work. 5. "Work" means the copyrightable work of authorship offered under the terms of this License. 6. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. 7. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike. 2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. 3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: 1. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; 2. to create and reproduce Derivative Works; 3. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; 4. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works. 5. For the avoidance of doubt, where the work is a musical composition: 1. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work. 2. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights society or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions). 6. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions). The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved. 4. Restrictions.The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: 1. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(c), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by clause 4(c), as requested. 2. You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.5 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License. 3. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. 5. Representations, Warranties and Disclaimer UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 7. Termination 1. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. 2. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. 8. Miscellaneous 1. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. 2. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. 3. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. 4. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. 5. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. Creative Commons may be contacted at http://creativecommons.org/. searchmonkey-0.8.3/pixmaps/regex.png0000664000175000017500000002777713236164262014467 00000000000000PNG  IHDR>abKGD pHYs  ~tIME w IDATxy|UǿU]dO@Xb $@lבQqFGePtA Oe|ʌAAY%, Jҝ#Td!N4骾Uu{%GtFɲ%IRI2eYN$*ID5B piV,^SӴ]Wqa9ؾl6f|fYidm u\&%RZZ*KGXlc]v߿)!!AZ"$BR$ ۭm۶+w`6%UU/P兔>%%%IL&0w6ТMzx^4MCUUt~(͛7 vz{fjUUEc51112$6--M("ij%""Słld2!2&`Pm?|>^ۍ餺Ӊi(6mTt:8^/p8(,,t^YY[|`Xdn5~xn7i,oHf3@`XP%k6oMk] |>TUxpRPPd2QQQ[bbf4ŗ\rIt||I4L& IDDtWEQ i@@UUnqTTTo>P'OrssN篁U(ʦѣGIOOGd"11"222,B1yZ@~|>ZyyyTUU!2/zCIKKBIe!::8te|ؾ};n4GG L.FII $%%I G xZ.?_~&@BgHпZ_oc|h=|ka]SdddP^^ tȑ1\ |>l6l6әё?YCu>d)..&!!Av8`dRRRjF|{6-@CƤ|<@~6#dJJJZrRRR)˲'))Ib~oA%r&}k`= 7Ldj%99ٌ$Y>$I}"""0LzO^V7 BQ0tay눈$IRdYδl #R!޺`e"t@_l6MLEd3۟RXFs , |$uP$If3!KC`RSIeFT#Ցv+ 1nÓF)?^<|,Mods up faf"I5|z@P_ž-1ќ:S-_/O.\HڥtPrmk3P,PUު ,cXk%IPdQ0a„ҌÌ 3 h,WڟLy$pуN5p!gkzKxal.5m`k t"W0q,@hmEMgOȖ8 |?iZĤÙL;9S{j?M~1v,G[(q∓ZKg|`MM .(J98#ih$vczS:oްݟE  9ᢦM\ȟ>&=9b$Nԧν #lbY wH gu sX埁@6Fw-\ ڥFJ ]آͤJ҈̡O(;椛}ۣXnJJW"R3E`-I B6.| _'8שػ9$ ՠ?-yMqMȔtmN$I\ IXx|8߾]̅2h^ҕ~C ;aĪRa?h ^{0i|!O_ۊpa^\s6!>,[ӧj@L#Hά~kohakBSMLzO-#e@ga}({]ˏy1!##a9' Y.6ˠݹo#LV͛VǍ{KHTVsپo͠۩`2Kԥ"TkWk ݏo_ ɖØL(ar`CuO mTBBŒ)L&4`;q0DTűj^3杨8'X^CKu`oC&|00jCÛ៷E4]RHW>9dk)?|`2aU0Ye4?*!{qּ OSp^)^Ug;(\4 a_P<یNkU\F["L̘l^-Z/>N< Puʿ oQC;Hv2 ?ɾ!5)2qV"Ck X16.b.~]u,Nӹu=3n+_ $>|Չia1k\'v^u )~sLxj>#:rٓng=T!5l0:­. H7/}qv3sb8?.S.\0%<^L]KՉZ^ٝHnǖE?0Yd:UwfLl0s{ =wwW'tߎnÓyUԦyluH.CN SކW&A9}!\1k}te7G(a&w֖"J-{j+j]!آDy~Bo"3L:eMBaIhiX4G47=FÂiJY&õ/E3g ɥHRSe߇$NAlB OM%D^c/;"\f`m0:~fRW=zJeCBEf٘"L E ^|g|r5MaM> ط":B_ 䀣yA@Yg;v$ c$}&tfBg^Yr wXd#C$QX"fc;˃*{y*wdxf~Yp|A^\8,.t|/I`2soM_{2OnA^H;/w;n7 w<^ơKXfN&fm3(slgy= += NЦv/? lu] |a|끿_ӗ,/9֏!H& P7}mK`=0 +W~ mˀ ]NN&ұW6%: #pSS ѵO{yq݇'3 | 1(85̿\j?>nx. OH)j?H[@hщ6ny}41#kP4 Jb;c?UGg2,x @2Ibg{amP[`^s;9-K3n{`lRzt]9Xc`/Nu) W);hp9Is;N&$&M1B޹p]"AExY] oLWa$cݑ8z|¥\pO6ealP]>]Ŝ8oLYK]W47I&;AY$P,f4t.{E~5 \}D@AF ɤg\[DMQu7Ou˦F?05()#NY *7 坨./Flr$+X;o7{OֻV9Iɚ؅) +X{*MncEd^ f 5Ąx~@e2& ?GJcr0)r?eM}+/cGJpl1f:eׅvK&vCw9f`YTbDb.o1&@_iB_D˜@I42 QUU̚5 T:&0t2qD߿?={^rՇ;z(/bW]]رc޽;tޝCRUUe… 3fL&g.n~az%\ryja撦i0uT뇪J?UsMmc&*i4--,OYj!DGGd6)meFEEBF Ę1ci}-ZÁvc6kjj}].W'MĤIݧس!{3N鎠Nfnի?~<ƍ/u{.#Foo`͚5;'Op8+ػwoHD?35#GreqqSx}ڵkCC+go6vzyg4s} /0dz}g;w3g2fJKKq:L>c2b^ycϷzÇìY ?C >ÇW_'pUWujrrr83gJ&Nȋ/رc83iĵ^+1sL1|dvZ}vq!w^/^y/DZZذa{X`8z2e袋BlܸQDEEs|Yņ B,^XDFF!eee"%%ElٲE!W_}%:v(B\RرC:tHwy{>OTVVaÆt1|q OCCL>]⥗^}B<#-Z$֮]+v믅B,_\X,q嗋;v{ODDDW_}U!Ė-[D||3fXrB'|R?^8p@|嗢W^ĉgϞ;vBl2*Ķmیx7Djj4M!DNN4iػw)))bB!*++n k֬|b͚5F~AرC̛7O~k6M l̘1RfϞͰaX~=ڵ+ 22;3.*.]J~1c . X"X*=B\`K/7z$*.nְ6qҥv5j_~9}+Bn6j<,>|8))) 2G}[oeECse ҥDG9^0i$=\FѣGx<אr>99ذȿC4u`Ȳǹk{:u*,Z(`;Ӹ{k$c>Y[HMM5M~yŋIIIᣏ>⭷⡇d2qm}rVy]tsڵG1dbb+gddO;wdȐ!6JKoYf O<eee̜9n jjjK5\ca^/Beʕtؑ˸VO9vq%\B^^ǚ5kx3 ė_~Ill,&m۶qQ ?СC4h??<۶m/?4IU L&'1ڸI&j*y׹Yx1Vɓ's饗ү_?rssyGx{9|!=:t`Μ9<,_3fЩS'|LL DQIOO'o5/+++dB?߷o_/_Ί+ @dffrw0h n>3ƎiٓAqW#Ig+450==555u]!dĈ8N^yi߾=/EEEt͌3HLL{w:u*]v111TU=#??zɓ+;mUUUrQ]]MUU7ndӦMTWWdɒE{SlllN{q!2?8:twL<'6LJ߷ hTuu5O?4wu$&6u,19Y-С۶m3lya˖-kJ* .YvNdddK_|UpFmhqӣmԲj?ҥK׿ž}z!+nݺu+daKZ%KORXXHΝСKzv)GQXXȃ>ȬY^o$vs=ӯ_?5yEJMM_~1w\֯_?&%ٔ"O>aܸqho]=UVq׳dɒĆ xW֚)F1''+VS} 0k,:vHDD՞Ye[oquׅh6dY| >(lgZ|F{{Қ]oS>>vUn7߰~xv I XIDAT۷oJUUeذa\ܹIkHKKCQL&7nv3d^u***i>Nɓ,\կ~Űaxo6]v5 rcرcDFFCUUbbb2e Nzb8q82l0xE1Nz*Ao>}i߾=> {&22BlBuu5χj Aӟ0a4ロ6oތ;wrmǚ5kPz|(--+,ZEQ]]uM$Ikΰa͉Y5M7gڵFa,tЁŋ( o6/BB?4*8`\;mn z-TUK.KKKg G6VOظqKDuu5K.5(33ӧh"v"j<O*ݻQDrrMK/Đ!COeO?C! ?jjj 9/zoE4lɓ'q8g_*-2_=۷ogx<7PX,JTbM&33ݻw7{Ze6mDNN,8gΜTP͡Ç$*IVgI|Ice/]+4s9>}d "~<+?i{w[n3KHDTqOci.eYp+[їk"pj$ɬug7G}d8ngcHLL7UUUGVVVS*b$hc|!T {v)))ac69yoӦMN{`l*GvSǏv]jnHKK#**l6łl&hZN;~5{ᆪEQXTQQf{r&Lřk׎ lXV,1\3647peeo妊HLLCC KKKHzkbb"$''j5JB@g~[x vTUtRTTıc8~QzšCM6U:gl?܍f=x`_RRzub1@Ц[V 蒮oxO!$I+))7o6zfUUEwt5rBBdZp)F- `vrm6-??xx hpѠƈeW&`Llllvrrrbbb|!l6l6+lTU\.kkk)--ՊKOw gƂR,$,$u$)Bjg!KQi^!.MvԥϘ [WIENDB`searchmonkey-0.8.3/pixmaps/searchmonkey-300x300.png0000664000175000017500000033725613236161317016752 00000000000000PNG  IHDR/JwbKGD pHYs+tIMEW IDATxĽgduxν4Uk;m{`E[!-hCnl*ic)qC$R `޶7彯{Gz^O&P13LʼsswB$Uwo"@Bߏ{KC{.kjj28/G>WL>~o r#|? w./91w:Oa-"zb>"ꎈMA?N+M~&> @U3Xb>^Ek7ϻ>ayĴ)~U?\}}>\v{?6ɇeB~_L(?ZF"(kso+P\o@/{`z̿aa;:ÿ]>֗Ń2DPCB|Kb fҸRqTʹ#cP"FdF5מP?V>z mE}Pп԰բ@?L^i[U$T~4?"1U~ק0B_{- Ϟ&tho)BU݃d ϠZW+TЧ!r`Fߣ d7B51l KG11* bA"^q6u󇌂. L up,)WvC=߽}wwKh'|(ߔǒA.oQF,̈́AJ˯HA! tQ=dOtpA6ͷD_t%;&vz Cj4$R /\WD{ؠ]u7Z PLo:.$|8AټTámpl=;R@o g $3B*EP&S>/^PzYU`{l b8]VParbM>RXA z(_L1xݹi q{!i FdUY0HXu l{+.X rY.^cbn0svAW5bo=!:0\b09N@KPb*wMԶ°}XN 5&= (5 _ ~mz(#N B@f}%'!w  A|Y$:|| YgsBG} A}4h04!>su/x:ۀ X"6F|Rʶ 8~G0r͟ XiyAѝ`D {^ (eRS X,@~:$k()E8z!xeWz "6 ,EWR-lLib(|Ԉ%9mQ,[38o_/h?+n,]wyU/ǂa ֹ{^ckF(@lDA0%Tw O6 @ xwIM66q¤P`gCE#dԀ (՘b* T넁A7ZН&4"z 5@ȃAV0 `k,A # SSN`HXQAJoY7d9Pz'3]V@Rh(9%qYC-D"~F/-weo0ȃ7:@;HA@ uΓK&ϴW` +X wH.֛i?4+XQ_e b2 QZֿ]$3AV A &`^#vo)<} 54$?FHd $LTmDzaj@!6 ~0_VUIkN:ƆV<O֘~H jRǀɈ˷3P&0H\'_&#@H߮G0eckF Y R/g3f]+4 YMa3[ѨogX~Xʼ( '% tAր8ԝ ks;ALGB j1XJ!>%7 Xi[بi Tv!AӠb~ؐOu*='`FcpTj:AVmlxZU @}PC 4&G=@MpScL"4&L@Ǻ/&ݹll-Ղb5B-v T@Q H=`TgAn;41l@^h-0Ѡ1Sg$..^`pg0ɭkX&S؈mHR<_;JuF01_ [5){v1z0 koZ\`魆4ՆOp@5D_ʛ)OPE0%G%GԘp ԐFn"vulp'Q( T8רJ D⍰\4W*߄TkM33)8hBJ6w 3A<HB :'>@VOe|̻ n;&*O\CEtTJ)) @8q$ nּ{XR0j#G3-VRɭF+xAlEDRu]"""@d 9B0ᰊO^ڕt$GeTa5kjc БULR%D\jLqztX.VrX{or˨o V. [P V Iܭ#*˱mEl7Ţ Mp NPNe9ih kɵT% p5l6_pAc5Ì:nM2"2Ι\\p%r嗟c[K<Ԝ"&8C iۅl.4Ѕ`*;xkpG܄nM]xVE% ͌ qͼndhNDwW%9TW@܈!YȻmBVTH) fK.ysaIS:S̷w.wu;vڎ8\bnjLHMy(r M=@$ru+:$ePTXsBsȺ|m{c+1mܝ5 di C0 pEDeD& ?/x*-[ vvCш65M!I)- •ɕ x+}ccZʖ"?VCͫ/\Ysj * ڟz쉞p w1p^1+-bzc aYKqV4H\d[ͥ<隨se7RR)uyexh`okS8!c u`ק6 Mx(ɑ~UpJ"D@.M_{弋cdt/f;[\lV91{y+WsRp&"v 1J6t6/s=~9d>DE^ꚵQ0RqG1ct JNKs$:z7ቕwYMҸUi" Ζ'î+:hxCCBc='4N?h/@*-eN.+J䌍젍m{bTEeҸS]llB쇆H;7ppt*tOYAߤ~k9B|SƨB:ؽuTr$Y0]h{k=l*Jn;Ju.IVFÏɞxk<PсkHR油n߼z7^[Hd@ț;>(̼tyy'͈v#=Cb\S۱MP&g{f!-&(%[l.99~/ٴ4!;옕^~X.m}#}DKs;2s 噮)@Y .^K#ٸADt0P]/ef{~:si3bҹb+L\3V܃L'YpX=g%BCHE|!axːXo_ϩ?\ZJ8ŧR@WFUCIdVR wh겤iL H)RHWnccc]_q4MCX<0TVb|ɇ%!!)ERCEiֶHk{lș7~kV3D H) Re[ )RHJ*}y7,^ EȞx+\t"FrqĴ EnNq!XRϐ}|`knߵo8;ƑYN[v[LJ~~m컷'm(>TWksWV6<ʫJDO'ߞX^JH Ew;a7fr?5W3Mr~ b$RW_xj,R8 BO[_{B`$adt~W6 _cYK"¯.5/ւ8v{N~oTWV{~0K~$@({oLѾd(֝O.Jo8Wf[pŎuX͋a5Q0Oƭƅwzqrf!CY%%=wLwTCŠ "Z8vPXsbx-jrrV>sOƪ֔9Ѥ=~QE o6C)8Rp?wmֈS(@ DZg$'b3?q7hn}t#-1Qե/Ʀhw ӵ)a=HNK-_EU_p|d(!y=RŁmR&OEm?%E47aG*6ZY!f p>:km!QSV'x/r+R{{eyWֻ;>vb-⩏}=rm+CD*m&2^LCՋƚr\њnmmBu.(DeM^z?Y'l=4DgR˂7˗nIbWY|>(\J")z3t Dhv';G;nmm%믑s]|GחfVJmε*3Q" y =7HRU +<1}JF[:C`觏G rh{DŽ>ޔǷ8̙DݠdmEJZO ,<؝5y DW2M鴦ّXpJ[GR9ygϏs5Ao<&B!}Ad:CQ hhW-Td߼u_\jCù lUNmz0p +i-}3Vkzlh)<6Xwڬ"BB X{TmGpܬ2=]ܜ#=ۅ )ȍDOgHLo;oe2Kks% TlK`mJy餦s"yh7II!"ށ5k_N% d\7H(0mN2>5yڡaj{qxXgS+_o?#&W9xG49Iu(,ӏEjW)9J/@ˡ9GZs1]ۈ\)aty n*[8W5AqX8z_bVr%{_)K)遉;7f^ioS3Ov .Cd^THyZ4\o3PdepTƕnwF{Bhfi!<gPqt/ny`v$^8|S!aWXz˳=iaX6&z`ѻDaH*DDDױ&O]ꉍBΒU\hv^V)8c] Ӄ T=~5l0dᬭJs0[;{W +c'-TXs왞@$ҧ;%ewD:Zzri2}:*, IDATWYɧr,@ܚ NֹLj\v o$ħYhY{j5S=ٝx֏!VnA\SAP9m)0nu RS5;g׳˲ :[q'j.Gֆup8A H{:Ӌ*gDM*%-GFqR ykWAKNfk/F8lU癱֘(KR;c}q'7\ a3>|;f"%df(kjJv?Ca" :ۛs9`H.!"X8fx$\W\ʿpKo.p'K-vG2q E}rDu􁯌.C 8?utrΙݻifͩGr]tDȃOF:^ j*ݙZUS\7bb{jJw'b(HtIjP nOov;QJ1넿Ωarn͏lU3Sm\oZY6\t;R_({Si]RW~B&D7+5>S0.+FH =>lݼ=}[k[!ۭh/ kWR#g9w?hSȧ_  4֧:۽R*=si<'ڷ ]=~t=כL^W_Ue,RZYѦx{[`_WKd~kfT(MZ &xbbD: 0Ƅfh^`fctWL)n7 noIlk=.6GsSlm&ao|ifGk-la*B^ٜATd+g ԝ"vCp6'n&7 eg"SQAeNDlCU޹ u'2swzNܹ7|"rY7[?Ѿ Ui6ԈՂW$@BZIꍲÑ؅i,hw}gs+o\xr`7j Cw&3ڃ`CǺ;b£7R֝ Csrwַ8G[)[͝]-N.[QPJ鉎>Д%]u])Dt{ BâAŵPH +c\m-fT<8++kUͧYWv: =tDBMp1JAA>ڈ>0J'ج%b9r It.;WOIw,X_]-aqj;; G aYY*'|OYR`)jaM$>9r|#~k^ҦO65„2ߜ\*:N\NgҌ^e70_.[<=4lJ]rLl<D@&5*qydbXDPJ{BEiWh6wk8(4\g}Tgʲ¯v \d\"=Z3g^6si=)Dɏ>O;4@Qdm?*Ap5ɵSsb;)pOWPkKz!ճ2!4]Fċ/=og@hb1VEDv 5HCXW&SE /ɵ%2-BWs.bե>(߅\$yR%ЉM(+QL-Vϧ:& ^IOȉ񧚝͕-S"P 䯪V6IN6"عw^s&^f[C4^%fܳ?{[?z 9Gf!CP 2$+X죏}&k"xH ]޶Wtq۷sA!8ꝥ-G$ۂ֎dD}l hW0TN6^q~eB3*`~'ڀjAW,mW%ddk8MAZ3H>Lw^r>ˡ4BxHl'B\TKB\u鷏ώW5`vg]A=(0Jc}xo^@_YjF^Ѫds@YAD!o93=uqE؎ U ,Wg~zcK,BNw`krO'_v'ȱ'rNz+k IsrtWa )X26RWd\ׄ@r]v26n]צ6s`]=Ļqq@/xRRp~p$R rȳ3ƪRr$Nֳ$vE'Za 7B\^1pf{'fIQ'I`WKaOs'BM{ɶϷ"֩XN]S[2_ͥzbU[ )ljsčtq*՞qX Ka8!~u}BkR9 3-/]v#1:5bDɤ-خDp,7sw.%*G$S˛M("ZtdD =wl’=?79=y:Ρ95:P@Gӭ0?KمZ" kq'q#֜\ju}u6NbQ0=lp^\hL:\F0 ]/4귻?ji+:(edKu e)|rt9&~'̕e]<܈:J(]s?0xa=j0Y=v&b[V?;=PVzCtx"cεR k;0g>BV/.m۸wqC!Ӡ۷u_>W쮩naRr{muk}֝Edus}c+фn6\z;5U ?y\N25d@Aɖv7p$wrs|n{vp:=pd5;tygm9F@Xnk7^}i?Z#6hŻ;]Qm?kK7_p_DS3xyHwP<=?;wt]`cjsɉ5KR’v KV잃-sӆֽpH9C6\#*++CDYVAE!͊ WJbCyu6LӛkpvY^;E|; 5oCMވŽq'fyMD9yЊg+}K2XCRlX<#lvhfm!65鿟âz1"H[T&,l W]7C3?zPl-;P$WDg6lèH饕幬dx<rM::npȑǿaMw f[K; 6-.42śֵۓ[?HqeZg8j~"Ik ث,B@dzVbq3r*$ID~{(0?;870313y{~yKq4 :r[8g8F:m ~xAVZ lK_ٌmh T/t1خb~N ZV8 ,'bʮ @8Vϕ -; x`YB:߼syk=ౣr%l>.#GߞYO]ximh\Z1OoGBb8^>݄Se[Ad]-a1LO]~iqFD\r-+Z\J8ڢ14*IfD6i3cRϸB@{kDhI%]=yv$y8C籑 ++*gF/" g_L>p$V.Tn~gV֟R Cpj: H}txS^B--=-IH=+S Y*jtl/،rj\;_l@հ50!!z&la)32ښΰP o FPtCJowDel6-t8JRH`xl[{5B/:eZ cy%\:l3tqkc`K~rTg\dh:ݤij`RKJ0)8V@|11 k4)#*F"cpɏv͉u{oL(X*u<֕{NuFAD[Fz&snh7Cpkuu;!{8qH׷Tpa,Ifg]B)y 埽-, b+>RU=u-|d2?_G9B Mm^QG.v$1s76O%7Ms 2vV8{$~bqqѵ.5w$6Ň:32dمcY!]ӹS[as[^Xq&X[ MFƦ_Y1V6)HV`"-7UD@d; @o*'g*P}ݝm +&ϟ yK`{ XF3![yb> "`Ztp}#݆#"c[+ mo\:NT!몽dDPm-ϞJui勽0CT-tT5#쏰r!b*o.l*:9>*hcyPOdFMa00H;Cf6c]Ꮎ8:b}%Y=K|.|Ulj߶ѵ#,<,yϺd{^2*?G ܺePۙռ\}˿\0?Dș65CV/2vV~#8V:JK0l ء#PO 44 Hb;!PRnQNx[9ǯvbz_}zN<|Mt:q;K9.b؛ O5(dC|);o\̠k .@}?c=tmy؊WUP)"ӬBh%K5ST7.PBj37SG7h;gƮKa&'R(;<=yOOvu%Z#&n7Y<ri9 lzr >g P)H9(;|):2i=GcU7)@ͷ?:ԕ6*}d`Co0ToMr  }w#8l˩jt,O,n~~r}SFB@:NABpS!W™Xز;!jCO>J',U4K逦;w,)դq8`]w>t-nQ̛޸yDĴhS=7a6zXk#(O G?嶾wߺ=uH G-23R\oi|kgl֮U,`m}?})`eِ.^4=KɕgǷ#6C$+6YF]!,#a#,##`J̤Rv q_:`է)"`3\5|]{3͙PUg'/o-H+v`-?J=&+>;s=4AT_\r7'SGIy.'?w \(3+ Y)-%jGqߕs|YZXĄ>HzL}T ]!7x_sxǤŒ='Oy{uXe 7.OgHFȧҙ$h$k(y[9?}bk@QG$d('%2v6lUb`vAMX\ӊ4 f ??=5-6C.LɐVMd> ]K$H\*D.0Jpb^%Rf$ Ą٬H[/M֙ǖr̽X] To?L~ҡ,Kh :dLT}2䵩wNl1 {3}Cٜ-kh44 SKo_Ϻ{X+2ͅHq $i\K".xN\R:Q/rj?z]|d+/^v↞_…޶SPfDZiahs/?rzߥZƲd%tx%N =BMN,tSKz6*$Pn+|Ty*T4 xaagaG\(Bp3uSkJ _v*ٴՋ[}7,Ttf9WQM@بnzfH BԶ'_ph@] pY3&}7YH3_ @u9HKwu4P-ںOȎ IDAT7o|D>[Jq:u?:-"C֋W7"?~lDE,l^yޤμij2F-Wn~nMa Bt>ӴE[^U +S>@{eB7~zَ7B`YӹZW5\HT P1\ jI[|zd}{\Gݺ:NQ*4CX}-֫~.L;Pe}p;q}|gR ;5KWa@vzmvr#gٶ_ͤ'6sL?\CEbhL˂P+qaѭBp;u'fĵgyW&>"7MznFc^DӘwq'Z(T`rk a n}s+:J66Qpf@Ѿ"sɓt6>"z5~ou$HY kߑFM>fu+e.-]_Cd+WWr 6x)--OC1<7]y!٘KmQn=7ܼ]wl%q_xm<*+hgl8nI27ß<{y**Osgό/TNe'O\3JŭFVxPbBAr5wp|.N N=QO5@Ey: Z_ H"p-GjjȣYG;VkONlHpGKb2?_P3֭gޟ^˻s08猑Ͼ&6${v >@)vt5=gcz+59%;2&sKtC)J,<:ʱ$Jz/g4PjiW- #$ yѱ6@:)4gSy;[<25jZ*ۓKyK z_Y~X*[ΆH+޶U-cߺ1lo5As>= 4mAmP6]3Z[(?;C'O?Կ2q,M.d=ժOGz4,_MMLyсXƑTsGI?* ulvcu˿x⍵4ΔEhXٯ H7;Ǝw8~0MMgs׭ vv#8rJ HhÃ'Nt2+f  M;T6 Mp;Lw.#Ց ok׮gmIq36'xq @.k/XWxyk+!C]S3! +2 ʀ ΅>:tБ#+АJPq"Phȅ0%sHƛۡ,-@+8ƨbBaY߽ϵCN\x"0%49p$ [Of@Ԃ ƒUpu(|_f5j \ E_Judd* c+Ot$&- #0^LUr7IJP SXg!-am׮\=23؝l i bq⽔vB>|grDC{Yn\16] ꥲ/nz8D+bPu.'X*G{2p k7/QrK,T"Dʚ0 ){abϕwEYvyqA[W^yoAz '+KDTF^b*dz$6/˃c=Ѱ&EGJұ+^Z1qv扭Eoܹ=fdܩRU`TAEn꺥`r>fZJ2"\׼zѸw;۬oG%mm'[B"2BHΛ݉ 2a5)GߟxM$ˎ+1{[cˈ+zF7@9ơLd2ABf2}42ӌDr, .@wUյ/gDd,o]^DVfU.eeRjDFxsݏs~xu\#:eP `$=܃&HvV@.!tk Lwā=EhBˀDjL 2`JpxCEphG;s -2Dk+g7.`TpgKNHF޵j,p. |b#n\WEXrQ-WJg[uakvz~ؐe[ܱo!ƜLjűḎ$oe𕉍'41QHu,!6A I)JM1 (1[DlgK|=i!pFINRNXtw+kc `c0u^AH['MLBZ ~bGd&x;rl(v`L7d0U7vHS2XU%YkJh,I>&hzِ3g^:G'V"xQ6RKP0@@@|$6B#׀O,q(, PHR> 3nF)F2Ԍ w!{6?|PJQ7sn~ܹoab "g 5X[Cho+a|El6 [d46#>!b2@Fe001ְZA=W(K `Lx^RY-3DfCuYOTrpqCRRnK1ѳT2Ue"0dH|gT;sň ;Ġ[yW b)C W P+3?1q #Ɵs))c=7B[lsSv!7Sv7-7NE/%Լ%8jKly^}S"Zi^(GKf1s]Y4E.4)P  1>cӦE O} ܮ܌O<Zf;fg~7B""0HP(Ծq pY9 K֕({e֋P%Oˆ QAދ` pL,SՉ=J'|amzҸ YKm\ ;beE|/.aεB=8Y} D ΰ ])Ob+g.gG'(1lF`TXYK  nzk|A%ZiHDd !JJr\erdLIXֈ_J* e} D̴'IuE)6AL̤,e+7?xóD_P+>6 K]@.8,bs~ Z1(Tʿ p`jMD^ho~h&fMNZ8+*Y!cuDZ}\\4WNQ3aE& l,`؂0u(RHKJq@!l׶ny26Y<42 vҤ dB!I蔉!54CX$IT{G/TJlQB.\IUl*КcۥYy/[UBcEJXW#@{{81-Co|+%Kl5=@ je+Q6u~;,uV4+kA7Jchm43'$y o kۃِ1I;b`!--[Y=-675&+n^l$:-zdm@2d 6fM,mԩS>V"A1[3?g"Q_ًqqެQZX24?|oH ,FVPUpȶ E{ N3LF̘ Oᣙb68H!M'78||xeԳ]mt5g(KHk00^%:Qgn5qx0-f-b;X̲q@SmhRbBvmXu;~6 c@/d1P("d݂gל?Xa_013cx7P`2YBdel8:6{3Gf9J-ɰN H[H Q Ygw"XRk6`)$+ )BEyܭoZ! $`k`qFUG#'hNt73E!TE@[*墽w?+_4@#ގ|e%&KF@v^y1+W>S=&k>(ϖ*K jO~K!֜{G]/4̹HFbkN`-rpsqRu :>/];cH=s1& tJFfŻGU5z"S )J4PjnOiym[J4h/ƫ?x{ֳ8(mDQf0)R"5Xew!"[IvA*}3oyMx o7zCVB@ BzWsKs_Cmw]i@D]9~&ɜt&-^ $Zɴ"kegsj!EY$&~786d(DPw(3p/{ÿnܫժWV s? *.8`LBf]q'&i5Io+Mc~o37?yO Eݹ @I  'BX- x1{ Z A[I(K(W{1 Dôt޻?[ʤS! i1ytO^;l0HngjjQ >+DJ,!9j:L–ұc7מ7̀ƌV q+iZ,n%{RJCn~r's6R? scNqZ77+it;[|zfےR> Y"n𠁐*0OvCb6Q ƙcO:9JFu$]9l 0gvBz~{dhaskA5w|v 5t9ay HfF s%3bwb1)(\X},0պ^gﻗ^'q:aT [!ݱU Anӻ7w>[.iDWM]mTҥnog_ Ug'W{Gd0| B+ۓGMɊR qjnvفvOc'a+[Yd~#pE.ޕD~?$]5\CzD_!cb @B`jz>]^魮tW(CEۇ0y|ah!`-plt=A s|- ElDXktV$9E <7H{#`Ƶr?㻿yX)&rvWHEןzD2Jʱ5bŵ==?TL׫4 ̝őVJFNxnuJ K"W*VZb%WZ&[]Yӏ~ⅉilC?,IWXkyQo~`)UwUܫ1%ݱǮ=͇a[jBȝ _ r>1g-7&JΙz$v}q~'k/ juaB%Kvm$UBVEX 23l}Y Iؤyd׻R"~\|ǿB{ZBFwk3}Btw;'^ˆ趌[X2@V,[E "אav;&,`'A aI)@f0LCqJFitcdl<[i'Np׻oah1v{5#\Ͼ<¹#g'*iF6S&.P~>V7- A,iCm~ɮNWn.ܚw{#+3վ }۩'CUfV[*1 j? @KR~ŭ|smqlKI)D"s&"LiEI aEQ,/,?|hڈnZQl0깲DݥtN٪UV tLl%·^sSY3K50!xj6@h 3.; Oo`r/G{hεEm IDATB!_C!1E,k>5i@sŒfCd8+VVw~;a[RJe,G4WnAgn}uauaG* ֓x\WVTsSXV}q-˶-K(} ~ké$qv{ZgqZz뫄XkĽD<럤]ٶdH?KW𡀌&0#~{~/xQsQrɘ\e25)KP/}t? pp@bEc@Pd6PIq fx??5?,qw~@h(\T# g+W M˶V;8zxg{}NĞ3&c*rtn:=™HiHh;BjE|oO{JiJ٩C9k)%ItIlPLL (H)VlϷJɒTOEiG͵{WVWoaDNN>I7aOD=ye4`РI'%]t`Y>ý߽c~# %z֔ ~'2 HKWI῏@dg'9[b)nD/Fh/Ɯ_*D2>lS9 P|$ t^3 5i{W~gim )d>F  (dVC!(#nzٻ|3z /PNNv3=Ap"BkE s`NBqR;^xD+!NLޱiiP;-;)6ٟ˿WgǮɔcۖoVe&D!Q>Lԇ}j`PzSN=tbf^+JJ׌I>0xnfD/ B e+U[OU'3g<\z޽WV[5cH "0Q+Ll4M9t֫rcN]5{rogxˣ!ڮ#tLyLBBHLL(?}Zůrr J!(fȺX BTR(!R AI!ȜA J)1DGb٬ )LfdDĆd25CFeuϡVZ 7" #% I*uޢ:Ջ/ [W\|Ev @In5<iTbv,;O^$IZ4Ÿ&E ,+n8HE|'igό=vHW@inwVõ帷.<P\s:&c1iFhmAڞ]nxRmQ=2=v[ϭ~ܭ;1ӫR˲UɎj+8R<+M(%Z я;a=U4lQ3Xc/|gU; Αu8@_(9Vٵk%w+HɫZɭV}:m{rle[RҒ"=nB JI[)R<.vs˞U=y)9k[Y]4{0L lM"b&Yo#`ͩP)3]:zG/~P}a(&-JKlsq;Ax矿» {e6"ǼJyxR2ʶeU$ʅ[n)GO\xŋ͌򝨳iO]g0ݸ[i )X}bز-b;ҩr8$eYJT%,wʵرJ 6"Ta.zqwWbS,W?,f9/ HLQ.^uv5)o~QF+~|;%m۱p1e| 'R-`@R %X\9U߭znu\DzPB 1c2aDnX3lNċ qXRSH>ua8$s](Tֶ Tv{oåhv?jM8R]6ðғ֝qI[M^҅c/]:}衊g%ʽߤ4 gh㠝$,kdddrQ-8j..g9D襷ReSi;AFVkOJDPR:/«SǫYD@2r0^k/]ċd}d`γ p~'dW X_6&J8I4k {],wvXl1I/`ul@7.b7e;<{4"fY';Q6* (FJfoz/?StͬV? Qa:RM&]ڴ(RT/>sZ5Qwmv~RxTvAfJ {Rihi%/o]3׿zkTȴgv=ʫU2Ę$ NcpH!kƃμto_a@LĻMIYH@Dv-[gݫ _…(ޞ"/>s̤0,_7i(?̬zDf&=qw>$3#bG["th' M/]Mdŀgߟ=*!QZ wLlPΠ>U'^ܳ*RO b /}$kL&w쌱u*UK7deS%(oXZsGW8C, u!r.ы<5=ɬ;rBim Xr_wi&QwyϘ7{sq VzBSsKɽp^Ng~ti?K _8 L!%{[sdҍp__&`$#zcbVWL;PC 9ʺݯ;m0L&ap-"/؇ǫc;Л(9G"B !p܈t|cZ6>c5Pc~bAo(d%ѵ=9cgR4l<؀ 2^$iV0'\Pʧ 1/~j- -TNz{WnMԏieϿ_Y ޒN녑~hR7??9 Z13SOGw$\KFFGTՕy  f77pU,ڞ릔f*q[WrϜ%{v q>n&RhiݥΒ%Bؚm n ttRcW}yCLLr~ r`n[Vya̭ B!SmY|߾Xu$lg9͟l肀e^zo͑ɏWsuF=)w?:CfVRXv7632n\$TFxϟӨz5O Ԥ?44QN:hT+Q.a4GvE3VfUͫ@PwVzI].!_#͖ (\l3Oܕl߱/>נ`a9_;{ Z܎ Q/pp*9vˮcI 1N]!,z ,?:@OX$0UG쫗"$ki//Vҿ{R7a3Ip)Ylr٪uvOOƕsczk-ztH#>ZGzO!#4 %`!diO@^uQ-Q^|㖙qA `f5̎Ni(votۭɱTH [;#Qo=*ɵ̾Wk{}Vlq#`Xqs/ʀO jy+V`{}l±Tsˮ9@2D[b," [ Y",vnG~,}5br,륓sŒk` |l!R`[(/ߺaS)%'<>] n[/3Q[P^*2V ^ܡ40XFг A xt2P+ X88!!;Z1X, ǃA!"ِת϶^wmZܰ20a+_ܯL':qw'AWZ?=t.m.8rQ=>~,~8URgΔdQN-m],:L~b[3nƃ 0gJ*I 1k XvU+B\iHDϱ]۪~$kA$Տ 1P>;p܈GrbT ;C#c8Ym(H" 6-T('oQ()ISvn-_h)˳XXBTU6HPTR^ڋqh})dV RdG X2I$ Z'2Ҍ̌CUBccjCjVhM*ׯ:{tz򹣝n+ңt%:JH bBL=f4^l'kGYW_Ž-:gdvg~V3UƑO~sTIU,hy{`1l8f1[Lp5N6D) ނ+pLVRXRHH!VpXˆ*k;^SyUnK51[DR΋q C@ms\۾x'(\M4d޺_}ZURs) ܻVZQQ?03 zWl⸗;1;[W{˷t,i-(K)I(4Ib%SSRT51X18 (͒ǯc;RHC&~oJ8v q9A DśrGN=6H˺n`tLͶYL K9^HBio?wRHp?? Ba;J dKgۿ2ѶZ:)G`f"M4GIDkM,ȕ Ŷ(vqRZml۱B B]{-$@ײJS{`O+@*,+p*B7+TїO^,ZCD"6v'u+ZR]_}vXvV(U޿Y-ҕ$Yc="a2PŸ乓]j/.i2a+)ǧFrJRY8~묵ZbS]lmI 27dGJkCƦrq}:ZiY|l7zŸ(n.Ց#'?;{d@4P$4{_߽u[^ǀ >t]][٣ӫ.^.%UYq=@(CR dP:KWk3H5b6͆C_~W~w.!P)HsPư δ li:n;^}5òkqFI HE51Ao]*,J0 m%=.ٶk[JI϶aفAgX) c0Zza%) K/FY)3EBl(EaOm3\|Ѱ! :w4[d#*V/zxk}]M}60!D;3Ed܅sGw aB/9z+N]\?ҥhzI/NQr\O@湳HqO~0Ok:5loxe33ΝrJh&Ґ0H[%jM4&9uWhyyc1쩳gn<\z]cs A9f6Mb狈9-W AwgGf_;$(3Dִ*cr6EunZ,:ن.wv͓kzabumƎc2JO}y5e+\bVNV:R\v,%RPUx516%.v:aͻ'W ?_^hr,mۗ&gWZB` Ô B>WdI SSMgJ`NrBPwupO`#˂V-$ۅrlR]~K_k4ƻArwajI)ǭV+u߳[J ZS&N}:8 bKܹw0;:6ckr|^y}z"IBiDqDNB \TW?::K[QzTG'FG^jՐxy +q[@H 4;/N^AOS$[8 D̆Q"0X>1vęު!ėHYRn Uh1dXJ!q`+`]Wk85.("`"Zc <1&Rʱc+߲Jc)eK)\º0sK va53&cP($ `~i EZe.'3/u~F1AlE[zg!&Ńo^CZp<Lv?rh@ lpi8{nCƈI4p n0M/K_EX] QHR<>9=5{~qRٲ7d$Z啥f/ NAl`uYjϾrGD:&XU(3UZp{q<ԝ;{PPhmߜwK'`>LG iIܹޮ 9:u/ -c\tZ,YUV"7UyDiF&0D&xfK_/w$=ptՓLA a+i+e[VVQRʒh)a[ʱBDC7@ H IDAT ' M&Ք45FkSjkhjkMD!ӊJ @H Dԏ~ \KwϱleeoQ67D0Rʮfۍ"CfPTxi>Td (5yz z53lb4Z翾x=n>!M>iۣ6R½t3OgZ!0‰Lؖ.D&5U#g.Kԍ֭ "56vʉcnq&ÁchIѨU'''ջ߽7pzkY/Ef!Rz셬FFvHF&hPm# M5fTiDw^aؚ&'M,U#ӗ#waqpʐQN*1.ȾӾ[b'P!QSRP2l[R!v `ɰP̖N:1v_%&)`ZB=2Bg` vm%.ڞeyr,˵,ױ`yX Ln,fzd53 l9&N(I44J Nq ~Di B f73 4S #)o%׫xgRdRL*kGBJmIY;2x+E 9wpWZ1bkk`co&s6vX nUAO]?sߵNڪAtb /uQZ`XکEfvzbtaМ3Q׀ z^ΙsW:Z\pӧ0u{s[Kk( R#ٲ⻣#T2{xvjz_7jņ&9].=˯T*uiw!]{Hal?MPwY*O9EAhd-S߼Jܧ6_>zwqtnַ˰L΄k7lJ 5/"eMWoo,&V&5%bU&M]u3Xg 2E VR^j绶g[c{e)9PtB? ㎇Ow`w #eu3dfm(H I(I' [~Di1JbM[G0ngϩm'IG`#l+5^gk}m@,ɲcKb*e1qf0o_gqf72X- [~u ʮ?LwMtu= ĄVZ׋ 퇓Db2439N؞;t"$ q <kRyg.\Eo<\|JF)y4 -VMŤ84=hLNM~[XhݨW.=jq=k)mƼW1jaǏ8Aj#nYꇦ#&NPZVFB@ JMA($ř 1 Rt3H*ELo1 xTJ$ w[0*4dl圝:kQ+su*۶XD6CMav_- ۲o"H6:L jtPCDz7L0h|ߵmݔgˮZVsV: +kJ,52GƦ;~6LcIu34{k%V= [E鲴'U:b5AJ`#Ԥ.9L6dCG*4꬚(Р"pbm?u ˱齵X8.ܕZ|pk%lI()l#zZvRlVﳻͳ3K/9sd3z}ϻqݍk|rdvk#4i'غT4Aؠ9uW_~jkq3'fݞSTj ҊŸ7H8zYsDiP@:Ȧ<]WKqYߖ˞?l}<:5+V1c0/8skF7 mOEN%EfUnAQ=0^G,%oKuJNr;jHִ~kqP$/eAG^5sM]\jY 1Z.{}[1ssd7c1I <3_watz@ͷl+[ 0gf%-eXΥO@UI*q-DX*ʘxyٙjO~L&M4WB9nΕg/ĽWdWr&\ZQH.ڎٮٚۧ5ۇ}ٝr(zf@(+ }sF̈nV(`7n裏<߾8Yv)24 r005ɭ K8 wgу[KKӟ:AiVyqidq>{Om-7TWo-Ã|qRnYkb]q%z,NDC"Pʚ.tds\V"W~~v-z2~qG{obyPHUXa"4N҃O7=L2.zأYؚ+IsD϶fx"{Zj8 X^[?Ea'&F !,(~5 CJ!]}' u}\%<޾gg}7;טHK%_ortjw*ok/~qͧզZ_pzYnꥦn՝F|mxwvzh(WC'$TRry ?~9o K'ZVRq=8y^TòJkh{(=G{sej[{vN17 DARUܠHo(/ٷ6/wxTrrbp^q4I-%CThA!ZqlǠr+mz̃fR]-ҴΗq"l^%ӣQ2< Y9ҹgWyRNg;xj\NDԬ[J( GA%qn C8늘U/ijs4`ЋYNFojeZ]UC4E&d\80kYb"PȜ*MѤf&~ yj>{g7k|0<Ι3]NsU߸o?͇X#l|P٨??>{x W @>LGO[[UOZ/; U;ν9E8X YVVD2+;hx3ұ֍\i.G?^^^o~ەn.%$@{@Sg_R6Y&b\ˀyvb 6w8iGfsvC~q}ar4W_i;}=%zi sNiqp5VC] 5)Gnt[OEfx qWF&åJm C5ދOe3-I@ Uph9ﺶN>EADq~P4 Je$Y&(h<%In-!zS@LwPst s{5cwٖCӊ3{H ՟7*NƑ&U aဈq]/tr#պS+^@f,BBz~v3V᩹թ @8)P4-p'zŜlbX.%ʼMeZF)ۋ {ˣÝ8MYUqٹ10R\Zb٢:J9eb3O3OqJέf=L7˶Um|x9ja"ehmQNm vv^O'[81Kf(I3c3c1,VY,"( 4VDB-fZN}:wW[ͽnNm1JtUK%D|IDBkg׉a.V<"yFX1k6gsV|GK7n4iZ ~ P.=ߺ*/=W֕P vIo,Eme$áai&FDiD 7FDc41Kb$ :bXkQ9[ nj/vnrh][j+M qfQ6,gBWjVKjd8lp![ҟuyc}cmuiΣN-SNgW}?#̢Wˁnn^7b;M>U*#"Q֕@Sn/Qf롊ZYGpը|8A]o"/v~[RۜBk¸DEE<b3 熮b&"WTO_g.`w^^|r"z. lr9}qF 0J:8N;^O66p;KKA?sXs4菓U’Դ_U}%^ DKٹZXnwo3gr4Sgs__n=v @H>:%Zo9r#Ԭ_is{i]@ira> ,N8զW5@\0姉OtUUǿuZYqrT*|^AH{x'c˶o4o?::3gZk^4 d'h܍ƽQ8ɡD 4abPu:8<RA"n~gzӋ":?=$Dcmg8H]4%EMNjJ-Tk{nVXDM3̮ro>hcZ?YB# x%W/6QF -ֵ!JygzF+ѽ?ź Hbe ^Ylk(""Э*ZyEJiIF} 0;LyDcODBb?l 3Bq&_ɢkYu4|Ҫ׷ٷ|;Mɻz$Ϟe +lؤlaJr$[Xp+RxkeYy*& XݕFR_~d&}tw;9od=Qҹ.YHAO/(kNo+ r{ >*rKټ.-r7e؁Y6҄`dqTXJo!z[Z.j+F- 26 |Йp-[DlJ Xտ~~psvꅈѨ]x!IWAGcpȻ=#@^^j eFT$B"H$TrMѤ(KFYҨfͷՒD0pw8KRx&DDD!2͸Z#p.T=vt?LZ5;E/x 'GKryz4 x"ins; ¬Iuԛj7Gwuw"*Nv:B^!ñd0@U9Pgy<2D=;z7[]@` ~U][!=AZocւf&NsA$ "Nܲr'޲VuFeaWxGV >TH>Y0sMnS=9z|i(z`zZ9_fq9Ni碝ϾxWO8+,2c?|Ӈ[03Ko߹qq4(}$[GG~30\UVDxvxo~>3Hs7b}M@x Fg˭Gv`)ê?ΒqT=ezwF6]jiGH BhGI,2uiЂZrd P OOPU@S,pQZZEQJRHeYfq  ('_(O|fTD{ 7H;naGlDv[ D E2*EVڪM[P j*Jy//^h :#E RӃG%«Z!.jAnZg^$HBOS? .Lv3Da~~7㣹hOhax`(.kD1/T+g#L;A_vE,NJ(8"XÈ)fe-@`,g $0d}#rPife͛ף8CrA 5IOF?BhWK׏(6PqqSU"o2])TwEF&ݙSyd r jITnN{<nw--YZװ~t"^ ?}R 茆4e!B̍uUjMWs; Љ1\Ky:\7uFPI|il-P |x ܣvn?E'3f5*6 !|u5Lb)$ J),k),JYn$"4)l$1uT#rxppSx(,~/?HDq8EQ@ gȅ|*yx<sIjʧ6ɤ$dN)'˒hl ', T}' V(4)~f%,> $93p:Dn04ɭU͏ƏNrpG%r~F*tѾʤ}5lj~Uj}AVڨ8ZY66v9\R|"GsY2'ygY4x}}M)skw{h鼵ܨ+u5[q\^x/w{,rFlel\k8Z_} K5 j3q b}hc^{*xH Οg-P &og΢4MhGѴ[+ a EED&x^VZG$7yi٤ qS DXT`"ӚƘ~ypp̃yR`xjC N=a0~e٫7jk3@+4h8`dbYzQ R) (@̹BTHB 2D,"N"| _Gx=g't::unXd8O:靦%`ө: RX`4"qZj)QUZW]V~%9iGijO8nPs0II'Il5,W[k7֚-sx8X[ nvw3J߀؉1kvz|⥣3VDKeF)Jh~0j֊ie?<˶ $cvw1b=W0 BW0FqTIktDz=鏈W*FK 6WHy|wv;w_vw!`&f D+V]_n:*( 17JAhe C'[5o÷W+/;qfLG?~:"v•R D{ѕ ir$f>)7^.̅ @(D 4 N$NYn0U 23 j?ҕ0 7;^)9yS@&ʲVNfλj+)RrV I2AyˆWc*"ud|7Z~{F- .yoW[/FKFI=ZmB/,ri7šV~}x@®ֵr&0=Jx uqwxo0x8kae;͸ ֊C8`:xXhP1"!)KTP*K vqf+nƴ{V>}qNz (ҀNka>p UXæAEnUDXlo>j\w׮-cQkR "@*ZgUݮ89AN%r89 AzҜà1WhK jDMd l /O?/;\ݾL6[i>8,ʹHH G驕Ƥ,JQx?`x'$4β4TB5/!|oVZXKW_V&@tixywެp٩(Y7(SCc\oy9 [i'?`ٖV1ʚi5kMx{(.#+͖dgB%˾nKJq+Uhn{Ep6xn4FIg\ e'Ϟ?'f;Oآ Z! ւaąf÷nqk9 |+`h i֪E̵e`Ɯa?15  }|x j<P.pX'3i %hsQ4(D6idYh`[{H ك"*qq@TDgvx4 g6GA"E{vAu~{ \[Ǻ qU+a@z:MrWjoZbCB,&Zέ1|C+"1lF@Ş0ee…#i:N\9RR'Z3|Jy[ n4EQj ^Ȟʺq&>ҋniq•A{ +WϾ~)d?^m=^L:(A%덝bEks)\sWp.DöB4} 'f"'^Q?3kڝί$3M@͋㭣B8 1-;m*OsA&FYkkkkk^@JߨY_O:zF㷽FsЋHaet IDATx [rN d#y>@ ;-?N{j{" DZZ[$RbiJ[@_TۛOQVi߻ճA4˯VdZS*>k[w$9GEEնnMۤVZf?l7j7>X_Tm}qeŴnuڰQj^^Y ֚F]N,ɊЗ4hSFj,ܤykdXwfE+8>6!$ъﺮRvPf4 UB]Gxl^je?}2lmGYɝ7_#`[%+Ͼ=~[53%,^4T لnl bFH{K >" q1ޡ0&j@ ʍ}|v- ;V!m⋥jr_ G oWM@d|`B*w[+qVZ =0 2Cp|v/vˎȤf!!*: `B4 "B%0uٻl5[mD 兕g8ok!bN(EElүm`Q9*n=>68x S]x||Y-*VU͟}qdUPeDvpF;#_#B潵z6h#7wgɰ©\d60geivo_ U.ƙ\42Ow @a/(MZr DJ(c Q`I~$ɍK Wm xD0zc\ZFVo\cyfi9JwF28[G$A( %͐eF[W~%O?eyqzDh,m[+BGzB(V\~}$dDu\uGY߼8_SJNa])`Gl69ŵYq4N!LԳV2]O d? zj:zguin~w7%"^}k._'@hh]8[~;]?hAiLJU7t +Sۋq,'yeaIgPR!@Y=9ncI2!NKM$q8N38_ʜ֨/:ʭP(3錛q(\X]Ȕ0+3lF嫷WyiBT~@?̀AzHfiZrziOR"ѴLT=3 F6ho3qt*"DB4T4Lt[A(bJfu!^gBFB4Kg}ك϶8{9"|=ً3B;vEcK74I?!M*؋Vamn,%ZKph%zWc(n@`揾jݧ;9i@f =g2~Ɖp21Jq0 ì9mE̸ bc1VlZkDK /o]Y!: gzgP&Av_(3suHk>iJ=in@S0}#,Bep#"DqF ]?,0 %L yg =X ^XզHV,n^>kn=Lsf 33Z+9: RBeBUkoK(tAJIںvo0V;wnW篯ԚoF/lvv:#?NFBrM7Fɻ:wmTq&Mg|uރ$+N ۶VR]w6tgέejq!+p'c^YvNG;vSb$@ʼꙵh *Dao N(ְ*6+ȚH8E7xEhٔ?λwUgs@!fy>\g츞"H8O<┐A@PB~!+Wk~ c#VI)a.L,0b*-d<3dlYX->$J\0d=A~ΦP\&a KgII@tJjSǠⰲI ÜmZjxUy@ ^~A:GY8AԁRC&UR!;͑+)4l;n*Opw//>|ɓͅKe ]O6vr4LDoq(GKtkY.Yks qI-Ék,k)#+%9R޼Z_ǚS%7Zʏ3Og 8b耟OKWQ)?EQ!GQ\znP g0.NIgޠ'}ɨap^_YtS]`OjwgJ&8B%1j_sV0,a.<c"AFi(D[;K4INP*9 U$BڏS l|bb@lL.UŌH<JhfD*OWY8ߛ\*9|g$G^}﫯l.ˮIE$"ϓ$4$f u kURy:BiׯDi`cW.]O=3M{ʵ}hyXⴰ* WVIRTv~;#Sӊgzg+ otfhtbE,nt/ Dji嵥X %$n teTOfX.v6a-!Ap3|N͎RX S!F GqTsq/̂(Q֘Q04׻[˗N-Х'8 Ω[I,"rЩW,fuHhs9 8 4iM;M# ,+ң #-zT(}Mг|bIF*2\ P\Q=Wi[kn0Q[D=0' x]+%'($R2 j%{\5ad`ٵ߽}RxVji<giRJٶzI״NsӍβVtZ6dW@85Q._y⃿Q s<Va+,;Zbޣ{`n <.C3J{{_2wRXeD! 1^걩ErcYky"f_ {UGqsj0M#^) Q7%Q J# Y敪* 2=qX,_z|ST[oܸC8}}Cq(f ƥySQe ˫Je8iz4<$s] ;Zٗ/zQ`1qq{T ~[(ɉ*:T)`r(jdWGQ<˺&5SNd \[XX=ln3YIN\l7pě'20[ƙ_+g>dG i۩S6fM3"dk~wA::kkocdD{d3=)YNgf"j,Q49L{DEHH0z`Ÿ.j%MHftkkȿ7̾4M[7V@7eM1 L8zZ:AD) ZirI(If׮X\(yƍKRcZ#>g&@qJ**k N?zk{YeKkkJ(䋵ZKBPPOl%u (˚eYF)40L\(Hb, Vc` +%tEFJ/\|4R)T:ZY&T[C$bTIqf4kzgp5X6C梡Y|kZ?s:Q+0 D E~?Bj}6 ;D~K@J%,YӲsKnUNf @ѡRuB  8~t/ a]|hYRC/mr+[XFJf= F{&?JwTzs: *<A^+ޕ Ixdd ~nϯ)fxB)HZ@'-p Iˁs'QT̢_'mN{ fIJ kfƊ5CABd$P`y0yy7bW4G)!_"eiAŸk&Q"" MZkm=$s TcQ6ky+D%dzQ3Le /EfQObW[`{mN,8Am oݸ~{Rz꽧2B)B@bo;iDm=4*R*Vk'{[@2f|V:~|=_ƒ5QRR-CBQ4guΘRԓ;""Ju9D(A''wDl%2F= (y .Y)j+TT3X[K=蛍?Hҹ?^0jJD ϻvnz0 * 󼗂NwmTf[uyr_4Ws] rJ5QBCFe K5M?sK/*[o~;Ivkgڍ^V 8`(ʕjRN5 Q ji\و=jŀY%Mף0-X<DxijQ=M>C-|^QUrhnY+i@ iǭ͟m|ڬZyxwnd|t?h  U{= Ӎ08kZ@FGxryRlH ޠ9gGϴn%v&=~~^JZqzI?{A#[3]ND&G_p2$Z%eZ|h)xXľ:7]cDy谆z;n5h[ek,W7Gp#1*$\(QMßֳKkib}nh! M,$8M,Md.pRJJ)(qͲm|QjÉX.%J BuN|b!)~>W5VNٺbg,8=QN齏ێ vN9z/yIcbq4JF~2NdH.sz=J]r,c+tH+8WVXg{g5U0]C 0Wv?H)ptv@DzŜW;Tfvlz}a9쏺G/W$K7L%_swJ2d1W*BŎif)bD$mXH,([|oW=b(hGB ^\k _Ff3^o$F~K]_ZĢeXhT9g2S xݭw~{~qʹv_m׳]oCpGtm1-"B"Qj`ZG_Lt!><'|㛧z_-T5SFR s} BPd.sxz2s8j}: |mմ`MUsY4LJj1ϛV>5_VI ɑJO+ex\ K[x_w~uд"WxgZYPT8!nR z|Niqf2?#t&sb)? X*K\VQWHylRنmYf|Bpx3"ӉA fWaJ)++;POX_zL4?}|@"֨>Ww}Z95۹DbNÁ"n ӴQwf'Hd$̈́Y|~B[ƵTѭf!$MǛOx|Y $Q")qkRoç?a5oX:E gvr0iU1:B4HѬo?0 ߪZ+&0E_ô 'H;2ߪyoU!zEWL6i/xCCވFZ]/-M^Y*|R *߯2~EzW׾I('z+cqh@mͳoa.Uƫh :xTn/]QqY6 RxP:i^JT[%jPTPz/%UJ6U3P[sq;I=F@xox$Wv̶qYXj_̀|82`xVrRs֙\DWa*֜v2=<ۮrs=vB4yڮet6 ͥQ7j48^ ;vB3O$TP"켕 UݫE`HH׫k|Qv 5+Vzi"%s%G9&̻QB}4ty8/kb$VfΙ'w?/MV/(4:9Y A)ݸxcÑ R*h嚦iZaXsakBc~TS40L˴[ )Q;wJ8cd"cXZC "%D>ɂ띍Nkq}G#آ)U }+У_uۼخ ,2a`zC߶xU[jH,}7~iu=3-/ś7.\}ٺt-=^g:GWʻY/Ӿ!3BW?IV44ϛ"WR%?*ڣFgل )ʍ9D G%cθDPatÏsW2KzE+$2HJqSՎ5;WCE^x0kR]vjЫ%t0AF"g2WU~]}ZlO&"S߭os{ _Ӈ(knẚWx(Sjei&wȥ3ιqMLcmn\+U\1oPQ㭧;?@TmZg %g$DɃ|I!@LAxݖ[{ᮏ}$.-/s7ytPuq%Ebìag]4W 3Iv}<$HT"Q׫Ƃ,7wP[g)^S %9280R69yz0KZ>gNDA9FW4ͳ d\mԜlޓGwn(U7o4;;{WҿZ*߮,bq'Cau) | IDATֺe]w{zmyRo&Mi$%$@ל~2 R:BnIw bRWDOO:p k!7S^ZAN zUW}>L[>opG+6hIvz&FG&Q,8&G?[vq9b;eRw:cJ%rcՋ _EWM,BhݰIHXKFO8-{\~UR % %eG5tҏE9tgȲ;VC;oO:,dֈ- gPPJ3W1ȥ`ں1nκ @ެɮ:[k}sdb,U(Y,*R$["))D;“"O~C~ehnjZHEYUPBaD&ry3ýH$rIȇD}^{o}lÊ4&ܯVJ_q !bMLamlvDd #Γ8Ow9b3 o};1q8Aǀ34-t+/e5 Hql v+ҥsL7/&JoGΠ? Jnkkghcw?lD4O8Gy닍$\l j20h%IyP6+ivxշLOX!P ^wO=oNΕ)Y琣ECMDPkyW;1m:k[a'Nع۹=TTFtEQ{4G?w;yWg ϖQr?.2L%=g%nbۍlMZCph/^/a` LvB@A47hiSRGuDSU"f٣Kl_x\ΝHs 9jTd-l!GRCE!+?yg̶Wb%/Ȑŏea틵ڗ!$yG4ε>űIqY%On:=慀>K` AC0@.HW*tٕ|^Q!`kAz\5i2@szK Hά#LM։jѹ--Ζ{:KWTOBfS8W(Ztd7Ne;7&:k|g5oŷʕ_zcx=XżߪԿ>b ݱnHm |Za# hG8SoFaop_t~Ȱa5=d2HjRiB%6MM[}QkKna#7:k[9@\ӶMs-[Ag2?אuAx,gZΏ>TLl_=hG .EPyςwN,?Qv F!uQNIT@"3MRCNY;&@Baⴴ%Dc6*yWtFk|=U~nMZHQӜp<]6']ajlf'$&M+Jpr04h\F 3{2gϽrh yHKxQ$`1ͳ,<q;҈3Ȉƾ`Hd\0PW1ʟ@(Jcg+ެXS)͙Ł F,f`h`t?\jx+(^m4dOmmY{VJLJ1T"%v82k i*2=},x"gF@H4ބa2dDkr;%Y)K'gBģ Dy^,6W$rGˮK{Ê T*N/`0A'I[[Z#DHl2Sp{&҄Jv1Z8[бλ$ʛYfd!~҉F$$2V:QV.4Y,sT}ףv 5fsKQ#_ug\pRZ&@,؇/kG5d\Nr7/<[Ͳ a$ S!2aŎг 5XlIL J2 FaYU3-VDvFhq+LvqpVHP3WǤ&b:Q 6dPDa$^5ѥV޽NVQ)xPEaǞv>s *4%w=?1kne:ѽbZyRrըѝ[q%g& ba&h uRJ\/"?7|Jt~`-!q.֝V-l;[k+ |CTZ=k7fk- PmrckJ0R9)OiUp|+0,O)рS̻qW Lw[/k 0Dg/֜9 AQG˟,˄/)4TDˎlj s@*Ռ# ".%L$,*DTka@~qVtM{sҤ5hF"CZ-;?|p}-SQ#w;OFR=Xt+!c'ep11Hh(%8RΨmC`F4BJUWl-"*k: Y[xjvR;gXJJ!D9 2CݼZPƤݺ ̚YHss"kFjOx$Jd[iv~ֱƭ7GӅˎ]7zZZyHAg^8Izkx`b@6[~{@@6,pf\]x0önҺς2_|4 m)&BnJZ4@"܀mL*f>~)h^ YU|bFj{1>ɂw~Ѳ(f`&csZ~mfY `V*_|nsR\CJI'2 0m }ܨHyps1s-hiS6/O9P)cu\6)H*%h+ CQ)Ȃ#3=עC:ԢR2 ᵯGxыH%@SO͇iIRaq=\f* I_ RW@+)N.۹1jVPu{LD4lKfI[+z 4q/VcOѽr^ #]A|NmX;CKrOm}-Kǻ$pg#^#`v#K7. Jq*}f;h]2Pr*nx{Rg皓4c̷!e²upxI+;Ȭ~W期8^/T_S}=ږ'ͬ9asZ?n*V4GAGQ{^ë_׾\O5j@IKs[e3%q3Vs'm?Aibgkʘb**R,tƎ}W c89S/sܱIf0d:6.0ޅR FBkhH 8~OH*׋-EgdMmƍ˭kv/!Ml5Y&ZnVrYr)[jHi*g4uӞ^Tr n8yd;[ΚW2孼A~Ǟ'T룢hȎQ6Ĵax3x| 7@\`lf@ n8cQ$y,y1v oڡ*dɓSmSu@cQ\_1U4XJN3͚CEsy'o.%7 92aϸމQ:i+MX Ew1%U+ʍ1Njyy+c$R ]Q# a8ZEEIUrRIhr̚3,] Tt;te3h¨JFoYgMϖDI'j渥:RT9TdϑA.t]~Nvq셪FF3+;֧cRl:S1-؞qg*>(I!`+# `#LqMd ӷ9^*ֽ4| ,A 8@T3oGFm#0/˾?ϯUPtZ6Qo3}klw&Eț4eZdTL{fz8HFbƘsMo*^,O!W%͜i?^A_ϫRA&ցrKW>HU=iIs{@LAFhc RZa%셢RiWAߢow8E ϴUc7 4qm8-3}Ր2ZǏ8r^7}FJ^wmn=nKO# %f G© jL7ڎE() srU2lwRZh[K]> $uWV/V:nO ˭GEfN{KMZt-ܡI-Ltf3ZSZfd2,\~փsu zqdb8/>%̢YiTZS#h2Jigj6^*r߶;P KKXO r/QP@,}w(kO[w?ܜLxݦ5j2mqכָż@g*]KQcHISt7B©R+# ;A(ik9T{Q/2H¢qY*+sQ P+b& Z͟'6Wm@dFySu?W 8M2)Z"ƘmTo$ Ԧb 1`-ܼp~HpX HjH]tvÂiZn6,ɔҧ$s0~傋n#Ȣ>З@tLab)6"~r(iݥ0⌵+7>@æ =Wxƿ{+n-'Y:Z;B"sQᬯYN5Yil=F!Kʵ5iuԞp`ֈeOƈI/V72KG㼓ߨT_% IiBB9xLS:UXkPw,"`d&Xev:3^̌&*^ճA&s}l" E՟.? ZmTOm{!)HF*ֽ{p)շkbKLe6Z5j22$Pyݍ,$sR4.g#>RL`CPtVJQ4a˟WW&Q2LlSr[ׯlS{W<ᶽ<@ܯO;23 3-{jHU3hD:XE{d1ѩf&\j@:nQw# gX# dr7 %cŇ1v, 2PEҙs#na\OQfJZ)k}0PzDQe 3)剖)҈ 9`o^v? ld}~kٛp O\j$bS,i]i5oBJ9i{GoYc$aC!/P f _0g [ѽAYcVt?fk)dMo7A@ 0l#Y[5aޖ $݋3:Z)NW߻rE<|:qh t6߄ڢODEͥ๒?1Bq/x zأNR+\YH#@@RU H =om}PD*0v L:`ugu>MP|ڿFToto ⽫އ]0#YXHVػ҉oı IDATGrGu&)lDoQHl I@)8)AA(MwǡvY15A1*^> MMWV,.[M$RDH;Y"E%4 10L ,~w#Ƭ}oeǏe.QF3bN^sg_d&rmۜ; 9C*7[4UO"GٕJ D:B #5cVyGFwBٓL}lq2Ӵ(O]_`r3z?{Pś9x5"33WȲ3`rlV3̈H5 -BLd/;!Nc%N\ D\紉]"rzg u=ͭ]sTe{}BmIIGg!ؿ7Ĵoї@;' 'k<H:Cp嫫Jj\foM;Yvε9fe+7+WaXm$&\ @#p Ӗlhs``X[-nut֯woty| )ɝqk_g+١t̳WN5U^t% "HϺs."bY_X4rkc͉ͬ(rkRL2h4KW.V$HKV.o>uK]x) .^߾7^ל俾6sAIo}pq4;Gd+czՀ|g#p=hl6W%=:X(ي:[#ϛcxp&Od'i]`NM1mJ.֧M8P8HɍO?9=}JvqP{SjHsUC@)Y>byR 0ӡbP= !mREpXRQlߑy/V¿Z7kV^t>DrTI>H+@ U(*6\駫ˍ5Bx2s>ܒ3" b `3 !փϯ<[~R>QM;LV&ORw?#u>P~ew?Y tU(u/~t'`6#"d}Kg8CèVQҫe۷zQx#l%Q]73cܔJ1nQz>qjgxy[-0",t/jń!KD<#pɘ |Û-t/nhiHJeEfb%a ޵D[#/qز.\#"R(|i5U[ة7Xn,v+/7cZi`N\tp=lk&7hWUR-i4h!(Rqk*ws=Ӎ cH 7۰.\U m"2J DВ4'.,|< V\x$cId @_69Jp~.y3\jF1HXcw̷-[aClJ䠉̒n(Η:[5ŤtdO`1"Mj6'WkfXXsFw_* yQ.l=HiVLMу`|'ܓҩ1R$${~8[Q/EoIk43Y JB~eӚvҧse&˵\ e|4Q6N@D[P.8e%hkӊE,YV0qD&)fh&7\[;+s#'RC- (I_h2KC arWfק]5,apo֋/.ŏ^b)sM¿xT#&t'MgSn ^O{#=&F/ ˍqmazsq4Lv4tbR8O͝}~ͯG2*crHo=Z'vnÎv ?_?j<:;}v~+@G0MԒZ1k7G4I0T4r4GMkݪ|*[y㻫JJf6y;﹇] _*@Թ;>M«=.xQ65g\Dl%}e;C~{t51&=fsQ| +cꅲ&c/hRJYeiIqQ}'7.U52_\"!;qGKJ-u 2{uݟW:753ԙ?_E Bٽ]+}ίgzj4U2rRlb:f$c? c''r?@顑z'J/XwCɉ$LL<߸]QgWhƧ~F+{WLvRXJD bVs ?URo=[q!TV2/ 0tlÌNFjG݂Z,;E B+Ne-]jDrkCìHGܕM1<#ʹs/~}s=$Ads&s%txǭ"Aj@&K5jvr;HRu-^.-%Y*}-ͲYLřv!) "43ql}v[i3)[x'@J#YWwލ+aCpw-l)RJRRfi&IaQ,dq)Iy+>^H4Rd% ep/PJl3ΥVB>Q>FjMshT.^,y3\i7?#^ LS)EݱŒK7b 1s!kQ ];ud(Á_(9F//_hkFoݱ)Po 0pO͝{a@N08|=g!L%LΩoDn3 Gͱ)0 ^-\egɖ &Nܝ*q5Ukq T2٠|f`dQwO~x 0ן3qcvl;?Ȱ?w$ s2xe%ot]Qi ȵ$@J_kqgʿ]\nWުNyA"PV΋FL?Z@ԃ<@k"6E=*Ub$ϕK֘ @ ZVv**?ɽ's Ɛ N@J)Ϝ遫!iM~گY'hU۬7ޯ<΍N!HLٕ7dwpF~5~E ѨXz|K 4F-_@(錺vzWR*Y@  @T㴘"ESD* (4țɜ[??{~4`/"xy7[x4b_Vg[ſ[Sr -c~mY| 懟_N4HYVfAV3Zv'R]?n$O6ZvE/nyI̕VⅹO[~;]bJvй>a\*Vq=X<(φ^vm^ z{-I5k]f4 6O9[LuJrt9dYz =QY#5ʦQ5HE2[OyAxs3Cہ4 Gh2WTJb[ؐ/t M&CA6Ipx &p )i[޽.U+k$*UQV;3#=nu5sU~{IPq@nسNT*[̪+ʞ%qC62 Q# BgƖr;NfRW S{=z|nnWo!q;hD7ġ5zoYvݼ}2t Eiob@Dt,a*;Q-̅ұCDb@ajo{ă$O<-po]MP>w~h/E#m.uvo 0yI`Ho' Kڒۙ53XöNL_+{}^iuabtlIER=/TُqT;eUJy7ipmnO8IrLl,$YOLp`ۨو!xd:NbNYŌJ^Iinךr2Vv$êzWy/0"¹5jwF/Q ( *ʉqÝ:vȺFO f͂4 rM2&G@-j2ln*HNG&*n ?Z>oK-YKE]j)bvx8γRK2 OO.vgCAXKs^P͏->Ւ;c x?4/H ʓ8K}&5pM+GQ+F>֗Md0U,|c&Wy~E;?- !,dqXGZbs $"hLefG"0Z^/$ _ӧ?s>M*0m  0FI!t)թ\S_׾X'ID=^y+v>jw.7[[͛oN5Srs)(Xc6hS,S=DE*@Ε>\2f45 _iqDDƑ!p6Ba8hS?1׀ZbdZ>{P1q ތ353Yf̸/#] Hj4=UÞq% qa;z;.h$E@@M& FW 3L(WV`zfؙYބZ"u̘M8T֯wA1VoXFM.u l7'W/ލ[=;0µx9@nA`Ko?eCmt?742Puզj ˬΞh0Ux%v֞~9Vpk4brvocgZL囥!ijȌǝNy1,Ls# U*SMr/D,XZL fp`6?~ɡڡ!`/_oEmv7$' _I:LRʈ^3p JDFը=U,^~θ}zt%6.5%*k2n ‰"s80(_IF IX 24g,>b;0 q=(GJㇽEf& xQ <>FZ8Yv'N8fk"h1(Z2GVR+3aHRL;@TX.-[6gb@Hi `24_LވW~f˖,O5i5h׏ n*-@)"O]G;$"\x@VF%'l^s#w3 U0&hyOoOL8_N4b۫=I-kFksٚPt4_~)rPuma__S%5Wr*jcS W&٥?i؃o#rb/ KNe fRdpc׈3:~/ %*SԒ!MJo#fsbV@.tΉgx .؏hh)Pҹ_ oKYKE8XmH|-nfR Q67 P fq4w8 3}=iݔ(YIǭ*ja_Ś[FpݾԔxlT^1DiYMkXPeNrD&|.|A3k>T,(3y[2eCyu2bqo ,7Hm@fUK|,G+Nw|4,5b)Z1a&cNِ; Gw2]29i$|:e%|b]KPDDr[Vl6ri_ToOՔJW۰5%V;:Lm`5(7L,H⺯Na2WFt&LI˰e8g0؁Afq,1<\{i"_r|#3`_}Em2TU1j$_q{7I"oiQNr=LuSB:Y?\e6/,9Y-@JgFtT(+֝wYpLNjbU:[҇Յ8ɜ8iO>=,jo7;wc*-E@ױxEf1p#~Q{ M0 NT~7+e')sm=Pu?jEzd8nfIy"ս5ʌU>^֗۹ˋGf (YS]aOGܛu]g{ߞke@b! )."ERES-{lѸ=hOtD/O鉎;d=kmٲlٲ%Q +̏UȤ Qx=;>Hj{Vw-7՝ ϟ#cٿ2Ջm~vWǦ}]:MsMpHkiT ,+@̴tI^ghi@`0ܮL|ܵᴉhqꡉgsȬ0=wׂ ٵ4G!nT 4Q^aG;]J88c`@ʍ腇 RlEs:ds8u]Q%i'fJ{l֓s o它6_bNSa2)fY !i76wd6CAWN}k2;>c%~tlqL~iؕK%ŻwAZ#Q2 T\-nxOJjqu3XD8^˵o҉N5i nvxg6GWNjC[l/qj0zug{*ՓBB6AS#`-0E0̤37(_9[aȤI?^#g&W[~cb& ) 6xdہ4F`BEx[[vEN! sd2v+gkSˤ&rbN RR?$}|0GbboZE˟[E; d5n_jy; " 1D 2b˭滵;u {FjV 㙨y%q]1yo-.4χlƳ9gF@l)y$qأEo mD4zp6[31׼uulb-LZP#`[vĘ&a!녤Н.!ȪGJWe+xgn{!! QskE^sWXD[[W;܀:q@@cH*iuM`\Uq&-\"aOLx%vH*vvnL Dvoc8#?1q>GaH]ʋ%gP7&]MZ $9FʬnHfBR*ڥΠ]t[ZjbCҠ@g/=P+v,؞*PqgNB{P>6`-Nu[ŷi5\ƻ\6{JuEcVőMY}g~f9%r9.L[6I!tfH;ިۃLJG"f:#gFG+-QBB) Mv8۳ߙ%l U|&r.᝻"9}|ɩʡT'` (ٹX\.´yaR4{cwU hYpW2 {VJUгPևH]ͼ0|?H؈ZC-i+@o{vRZ)h˴psGϽ={eWρs#۵ۧn!vrOJ* u8?߽k_E  a{EM6Ԥ LrBU|h ؓ)*zjtc΄Wnɪ xᾢ;YHT[ ibQ4;Gf"<΃{˫)02t=[;,&፶tZM-G3=W>6@,QX`nS?T}s1]Lo_mǷkCMt-ZWfLL >5n)S2U N .z^ZƘ֮u11@aWi'g/D2\ˏqWBgA5N ;sFպЌKcYMD(+[9We-RLU[Z˩@맫:5cc#hٺUtO { ΐ*R ߛcwu*;{rV#gm]f"W|b.٤ NCO ~lhgFx8YooK(XC,-h}Eiu\lJV8gLV`c m@_sr7jIjZ޿}ʑ^ ==/!@6Gn"*ym4g 1"36`VO0n =Wbn7pf~j*^UX] αW*%OM Ƥl gǽk‰3!7oo"L NSX+] Po#$·u}е}e #{.Kj '̺~LCɆH)ygYԹP7k7gB6KdoEoS^b2TX8e iiŔѮ>9~7#vm#M4;ƒe(.<;܁"w)X'!"YOMS:c>s !jڗ`ZGVF 9RmպЈc".p?qօ(X#<djҺ`.+I2nWZ-f:i5&Ewqx 4fH@LG$uib#|t6^5BPa~t.ۙdag;oJLg w7grjYQlAѭ|lKHL[d,DikճU&uS%zD[JȾ^/ߴV3Ϗ5 &kug_9\!okBZ4{ˆ?5ɺNk GR!t3l 5ޯ/Q}iq$* ëFps{J"ou#!ש3d35)E͖Sq{+o%I;K- ]NP7R{hL#*}.&V`'G+LJþZ˯.4QfX}gIS""Ni-/:|r5ӖD 2pF4Z)I 3Nj+ԧxZ(ҽuwie@5{whvO\O],ZzcQX\ŷonvM w_U5WhHd֡}B?eU_m( ~mi,s74c 3&g hUj1E@glv"ΑF)e^n1 $SIk3`P>2bVd찒- 3RˇBtfQl4Nҥdma+s&YU^ڈ&4]NX^gME-4gjYY.r=_r^iR-)rSq鶉5 .Ս$:b,kjfB֘iF, ֪DZ+#uJy.;s_tT4}T\YKmXi_j2 @@o̯,[&)fr6inN#+8%2?1Ҥ))"V1K.,$2V{'@Y޸9~jP]UB2YXI+[Y֒ 0[eXU5jOR+t噱yyW(L;k6:.Bpլ Ӱ *"̳\KXZDTFiwGLθ%6f}HBzHUG<(6"PX6SZ .{7|S5)EzjZJ.%Na6t.^Ic#|IuA2c#LE`֋*X'K3蒦VZF"i8SFh-oOki<։M)tغ%+u "С-2_:ZqLpǹW*Y(O8* geJrYo\o.6wݼː'QtYnvj\RsgܐZA֞*Lq] xW$XWY J/{ȈhYlq6W2vG^\jU4C &\%7 CYdZ}t`d@4f&sQJ@ '1/6MHj?]- &0݆e|H]2GZ{Mx082C ScIH;SM% zkz ZaKU2Z'>| XC=cȆg"gAJk8Pjd=7gt$CV@N ەvE"Ei51eb\2Ujx.r|U*"gАgۋs5we uS2Sx1 oT -Cjhy|oz`eCFZVNdc#j@sVB@wr[&!#`渶ԫؠ v\R\g Sj'_:R'4hSߛqu=o|}qJ{?Ní`uO@0ȗO=PЙ l1"::̌|+3囡e6;gW \z%HdAj"Bݬ<6vSGgz(A)QJc]J"bgZ*Nuꣻ@dpƵQ9 bjRe #c z%vWo+F &=qlw-CG @*"]k!SgёY;z*[bGQF%vh|tIZJ@@V-W τΠkUr'Щ֑Ci- oS~ DDb6mRx6ұZ[&5zҾ`6˶;䧍yl;^0sn֕7@VL5z?LHHD'FhU.TL %tn'GF:1Yl=VZ6D`潹ߙ~Ep{ A$z]Hz}O/|qjbb~|H7K?5048Ӂ "A,ns<[Z`a:~rjvd5*8vv{uņHmLb3.X{QcefH2d`^@Vf+-1,/A_>޽}[myz޷}5@iЙЀ`J~w|["'qs .$7x4 HP6MUzd(@wC9w9s9]vLZWѭu4 f ިOjވKZvz~ztzxKHIigе ,Wpd1fJ+:#3y8_cpY5gB IDAT*xl4,}JrF.6Ab耄x^:J[C}ѐ!@{5_;䚡_W m~o`C-+ž v`dD.-=96,բZؙo..UN/g"+%Du5i%wV1UwWƍJwϥq޽+ [ [IrdBh+4f[()]MܹA&3_B  HY(DCZglwRȹ`Ov#C3 }g_8gh2d7O{d@c/7߾/{i7DiH /eJ n"46RPJᝎūr#R.@,햎uG ɺ$D Y&Eܱ̓IMe# G͋ Ln_Y,nqZMZWh3eH {v&Vvd!gFߎHURUݑ T;h"Zi-m ssp;YK4)"$$yӚ\Ák+b&>{<3 b~n.X _ͻZٙge@`o޹H(7{9ۊ&e]q#Q8Sѕ{Y p"w'9 6J <~Yxꮳh+Hu=VB$"Hu:H@ 9ZLܨϐ^BȸYVf clӶ)8>O}S>G_9Ѭ1ňԃV5vg?4 >Ye">+{vUKE){xx{b˜ܙd#աrG}U+m_oɥ9ҔSP& MjJ< u«KV }DKuْgm_o&K3C @m;&i2%1 [u]^8T*&qt+Dٱ_}Z[Xv䜲Ci0&{R b+ &89V*5ZVdu ߘscCZ7O a-JraY P(ԝ۰f u7R .UdT6g x Mvk#-upx:J s22[LXZV D&I]ZhaHckG<G_*zѬ>>c(l !HSKTJ\&ᎁ~w?y?򕱗v{r$$qNXP5s"@4ʤD$zUqw6"UO&h: o4NjHRnoY|9;¤}V):evɶ5[W͖jvCፖ7[%{ge*8ި'2Y(^Z`HGΑfaϘ\l4Ӊx`M<˛j)Ie2rjЋ~hL=Mـ70\V\{`)y˃713:JN4:T"1*[˵jفoz+{6?!wS_ !/N"0%3Iz7{Cf5% O1R $ m2 T.pco8b$cMz ioץ`Vltou;yȇw=/*U&L+pYBNYy HK"@!X(_Vr_'~rO`!Ucݭ@Nup0bDwF6%0eK6j*%q6&Ѻ-ߖ+WXY4֥ͫQ q; 2\gm]n7e#)*FCr=aW"/|C%-m "h2 Cn^XZ^\,L\ە7#1vq(@ԤY9<ӻra0`LV@lT 1Q+Wp@h튴^QҰ]7^jgDfEx5 !Tdx=N S[GF7p8y434FjjQ*`ulƹZ̲nJD$x3&d@;ߑ+36߯%3& }[ZV ge"+2큉5B ^y닗< F*^ 6ë?C#Kjbc;fgs!CY 67vF`o֏n~Sp1e1b`^ă?>Xɳ=8رG?}&?XMD_-L5,ÿbv W6by@đgX 2̔(3d9~ȁkwޅ&-<8vSG>=YeRR}PX]s %el)<{O_/g>ζ%ANm+.ڃn:2RV d]m MeLX{st/ = .Dd`w)9`@dyh[%45vx;,:P eS6U'Tls.:. HW~krrasT^ v:~9Wr[e([9ݟy| `H"ҤRlHFb“3qyߜDC.ĥ^V@|W_;G|fzG`6iݗs5~f2 5,gXjޙ8`D#8FBd| ;.Җ}D`oݹ7mI-^8➡ Y8Xj#^a3&Xd( 0dGןg=Gth czMZz[ɐ.oK@ܣzk^+!~_YHU:ZO7~3A*2FC/n!1a\!+Ҕ[??Pr5ZH,oc_,@бlt(uSҡr| oc~)4pbZފMb޲;0 Uq5CcRpU 4ȉbPIVV _D ߟm]id#[@h/ݨ:bECVN 5@Ƿ=Y1(I*5}*@&j8k1ex4]"h:weyzmpcyrg?w <5#,Z Iݮ eKMg~u,qx[D2U%Wyȧq198WnFFna/$1n!Lc-&l$?Ŀx_ȬXS8:*Tf @B?gɮ^mR[ YEѺPOr~O 8wNt\ rf 5VMsK@PMٺ܈bo?+Lj PO ƭ-c—N˧ؽ\9_hU~ o[3ܵ8{apԟϟ-YD(yr;m{""`ro @4aŊ׮Ƕm+ Sj.΅*_ \N&IZ{9PQ;^ebv˂*iGzԊ#CybIq[$`w=D6< ]-ي=Q$֦|􇴚Mʾ2?VUiB.0 E"26SDXҀA0=W(y~J~[qѾ(e6NLHBQ/Yךpxy4XGәQzzj) vmRL8]&"d J6Evydm'Lrd!n^oKIwTsN}!\7MePp(͞=DO~j}dyi @3(,D]K_,cJVy8,.OAajԞk͘_zsWubhEZ':B??rO{k)zv乷^}G߿tiPgS<./.Ͻ_<7hk7~O^{G'=cyCkꅫ'_;?}q%Sx;GwozfqO텴nDf *;CESfuUFdjmd,2C/ &ӻ6 1]@HrtGTqھҴL3r=QN02cwt=:さHr ypͅhaag!̂&D.&u9eL/oBH`<+oؓS/z0q6ĥ%i_lE\$2;'g^ƥ/)n X72LZm VޗFyGwe |[>[!Aԭ&J,S+ǾpأvnE Xjx`VF1>|]w<}ϝ}Ͼyf0ht~W9uS=G{yX CO ! 2֛ovdm10CӪ&̉xê~}{|ߓz޵D%hiA䱙@! =ߜNt]V#, %n3&03OhzG4  Ŗ^әq#dJ:T zd3-&rͻRݱ yED,_iܭmn7=a'A0F V®]rmAR+ ; ,wy0KkIB{IvpDn.O԰ҲɍW Vu2h1{{qSS/7rQ ѷ"0wfyŭK˧IuK ĩ)xhL|Ӄ;RXnxЁGDsg/\=ggBe~yK?}x:?'AvƷ{H΍HwƺkҞ:K2={Gn-66TsO=Oܑ_đ4|0߱_aK߾6{k5j/.CbN1?\`ldדl?= ̤)Y*w44;bw 7J4@|}!|]l5pzCȻt5*ZNl=7߾lү灓;1 !Q> c $8݇|lzCMdpG6ڗ$ p~R,L uپZvsL;\8ʦTM 6lx%Y<݀i*9ϼHэ;y#~݉ t8zc;@f7D͖3[Zsb`lx8-=3XhB7c;>gH+m4˴t2[1wdgܞn\?i`_B=f=:;F˷NrG?ny#ûFw?g?y[_zޜ >sbQ7¥8v~3/\<ݼ{| :嫴~{Wjf*e$ßgb+\^湓zG2L|G]^*>]5a/{I{9_xxڍ$Q*uo.0>{DM[]+"% bz[w?=NC;OUJX ،c6 ٕKs./^@kƍ nfJC @^bI&8܇S?|5jh".jeH hh=c/x>JbQt+V :18>ە7D" ie|%* ŹUoQ42VVWo<]quφ"_"P0"-؂2l Ni))+{C=ԋ%oȷj)ˋ s_;e$#c53wZU(&Aj 9gfvþsaNÞsK6l6 I! ZUBi%RPnfw<"2"3"-19|`EFx}vwOs~bʱO+4PKW{v/Oe%[P%# ݇_7m-Yl XAa o,yڲx٦[ͪ/Yߊ%:v>~@wn?̩s"=e95u33?O^_XX/-fg2eQ0adG$}ZPx` }-{zbEu5fDF6>[DIiNo,#74c<1YndcC &E@y'TZi(hҊ`jm恁{,H 5hI$X&98;ɗ/ǚT=kxGB͌?޾}{{TjX׿TS7=8XK?=>M^xϮM7Y:-{w^/z٫^OwgTо:^糖=rǑ!y賤W3_䁾ҟ 6K+o- ٩/q[X^0d BZF$РhzIŬ"B&"TU*t?1;w=u-=[ ~[e !rΧ28[YκK?GCwhl p.H\kNH/^V.O,UDб;@`Wyq7)Vytv!wqG߿3$e IDAT[x QkǶ;F C VO 'gT=vɂH[tn }D̒A>=w9}w"hRH^\rl-,g_ӓo+58; Lk5hd,p'_=wٺs֝݉DqVjL MJ$f1ʂR[R2'Y0]^B ?1?NXMVBL`@޸*ұdҩ9 EC&bvUYCÇ|pbm0G/{lCzn;]޹6Ak4H) b#jpܣz+&l*V @l;DPm1r(5i<D yQ!]xVXma^˓?yɑ+RkJ9u9jEZc,gλy#'^X 9S"DJu[e.$` {*@oXs /d 7m۶`㝶ʩX;=N8G\ d.Ȟ_EgG 'ge1nGߎ^'=woJ烜֊4hu!CnAiQj#~cW|S,2MF&&ݿ&d&o7Ν;{YIyg9oOӕڅJZ ټS)ƪH;I/7}9kwS+ |*1`M}IZ$d?yI-ξtf3Ζ90s|v B "6XVmwW21׽L݇"k?{d]PVIZ[ ߻o6>sI n!P\@ld9<|޻ݿy-=qν4߸Ϩy.mqCTʏfa|$YZCm)hKw2X({K\)m$yA tq-N`6jP/nu9*#{;SBau݇9ip]-ɑ -..L%u_}r뵢*Xփ o "c>XWl\`ߚ5W@Yɛ΁m]Nj@ɼ[W}gOvբr)%)VDqxa2WA-jH2S(x@lg&N?K'"-eKYG81u-hMg_?upM[7:F6wiNrweیRfD Mq k$Qa2"k KVLb;I`cEYTZƣYDp b3_}+o[,έ=KOnc|n1d$ie ve\zQerKA=ׅٙQE-kJ m>b|zk' RF|Q3:+6[w}4-jLM͎-uY)1Фڽ Ĝx%!DawPߥ[3suv m$6Nl?y=ɁՁ犙XCT u]A+p ĭ x~st+غ\fG2 b"T)rrvn[w\}r#Shlܷq$a4tڅ%./rvGXPOoxTVZk%4NFL@sZ+ /\xiZd#HԤT 5q[cke?Py tv t:jT+c "F#}rQRVQ#\Vu :G>Z*-PJQֺb"#%AKCC*+)'+zz.,9{]/]I- '.݂[̬AV%_圧vwH7Ȝ] Y\\0wa8笇w#@B$+qCww$G8I|a84@!8Z..}~/.ΜZPJ]+횥Q3Ps.|!^Xg3tb@NM*;).wOާ6`t_}ܻcD(Dh7H+~Bv&OܵTxj7677=uG-JNg=\Io76TAקo]/Z"NVM}N+Ejw\: zP9, JFzѱuӱ3w~-!2*^( &bK瞟MY6wAx]x걼{tӛ׬ˆ8"C͵`TU8"bCXS"kG˽y0뻯Nedf1{Ͻ@/z:7v8d'c0xRi c֘4g~q&䇯_kg@dtuɩ/lOvN𛟾I ̞?{Wv}{RJ9׿[seCu+;{5W)l]l1[pſ?{D:G$Y2 fozG\'xwC*9Cq'Ko -̞x'7}ظ#Úd֪4 <jGQUzY2eUa3_匇D(%I۔HD(UrҖ|mΞcISNMǖ%̼|,-}kS6nB'XnXqR) R jBʿ c͙Xw{sf0)IY*{h_ #CpP—Ri@KgJǒX%Lk8_xLqb6AI\#~rtJh\/?;s6o:0؛ۜV^&;{ӣg_:ԼX02 S兿|vܿq`*esDKkO^:3E aK'@[,AB rK)̲0))d6&^?gȑ;6vw%-DZBa虫'?pdAcH),0_={{v=?vJsT,.ܞz^[W $ CCU*ZHi@Ȩbֻ \:!2TQyħ=ОoZκ*e.Y,q |3峟Zመם G .O_3 }=tʧu2Jk@/?USr[ :UV7:QZȔT7a X d(rcK{,nadbBVu]jƣwq%ۑ֚ЎSD\@~(\4q&lYz{.Lf'-aL +H Y1("|)'U[5ɢp)-GFg/eQq\kHuݳw=ssHrrZ)U}SݮU"jޅmXDd`ȢXQ$OM_Ο ,6 [>`-z+?75\>udȐq^0B8QY_\$>Ɛqa/FkGW""1*I UQ9#0{#7rT"\3o~q|vqcLk} cYP"@lFkT*UDj-*S0\8 t=t_ [@nՊ-\6w,dȁgK6csWޚci$hM^$DM:sp GƁq;30DW1`hpBֵsWE{R+dHSŠ/ȯCԤ}2|Ĭ\0p+⚵{ӓ;2u+e ы!VD?yM5L4HH1?9/wm7iu`ĖKMQT"riopy8vΏ@D ^Og>5Yf/'d~V/\  8 vR Y5:2U sXץsݛwWL8L#|D @㧊‰)S2d 1W/L䃛/-^܎ f sYaUu֨ =2C8ڲ6cMZ f f;W:HB"ސ@ZiqM ZA@dWm |XVQ{]FhwXf5Z M+87uG7~usNGp+* &*lnQt3Kn桕kD\~o\;%U8FkfYq[@r"M6ܛ-4aqښogn%٨AǭÝ\.Ԡ=iR|5H(<5+IgE IkOs~Xp($%#b+"0 |"_arp22^lƐ%|~/{7}cC֘#z= "Pą& K5P*m5QCF8")+Qtqo:aTN$ 3fOxstL1܊[1jYlU{:Y>""d2ׄ!J447/7HU8Dd3N5`ZkMs1HT,இ󭘈qVsΑۈ ?frSl6]Tv `?ۖM^}w=2Ց-)! ׿K9:U& a6W$:wΝdsNlS *5u#CvrpYˬPYX!~)1  "-uP}(n5)B@E(=V`Ղ* ֪^'AhT ;vVle%l o䙗=kgM>(&eG;μu'>?tȽ[{vu{ (7,hJ, aQIDATUgAIS+s_|1޵JKێA%i.@=jf6hG^fDEeiM@*R,H-Y0A[U"j+Eyu*&6Ⱦ?NzZ :zߌutKXcAP#EV+a(Λ޻?7px᭽Ca8Uk */3^?G1eFh䇋)c|A%5X>S5,fŰl+jIr4ŭ%UTY.Z**nD!C+#6DZp<55R\ OWګ`RwcK??q:T7m" YfR$r7tS{vܜu:DɋF_*Anѝpftŋ,F[fd QOS`D+ȵK2p2eGw"b܎0e)trj](ߓ^u9rlzoHiIsƁPڳ4)T&s[(,dCí{ԝM <(r 7¶-+PWg}pc7tnKu{c"z}ږ*ܟĬg\p;dk5RO0dHSӹ٫cK 9 r6wRvg hv^XƋOsZDOӭoԉ#t6oe 4UTZ*"{V*[M[:_%V#;"(& DHX ;M>]v|T|kRX$EgkÅPځnq:,])AĠ5,'=F@achuR'>z7c {yԨLR@Pqk@i_"Ifr2t#l,n;2 і YfFp1NcCBIT؛U u.Ӱ8 UlVE. P53d_ى۾*JjhcV[7?zOseE%6[:h<#aЋā:gIٚW'L.8?"F矈zOjNhm^YպomeUDI$z YVEO ,σb'J7BOa XL@V@O=lۇꎯ9e/% `VPtq':O3)K5URYI1c$4>$W@G?i]-&A 7FQ^V3Rh\3LT[|:n^`VN4,-b/(R8& ]8,]3ˊ,9c +.h&/(&5>c-I'BaaX/N鳓_O=h8iJWfmmqLP0 `Lo^aZd\f5< 4p%t"IRBUz}D %@e<@|Dy*W+ |mBn.*&'27#ںYچlv#2 l2+X*[?69M @oC䠦֤ӱt-$kH UնmWS^(Tpbbcؔ 2D_VJ=<(Sc+Ph=P &fS?/ &-e\ Z* &r!ˌTC0H[^4:"*Ы ѱ B%X^D?zMm!b9- x]`d1p󩈐4WŌXiΌOU˗{{7[ h\{C-.ďOFVFl}!L?6a3So}GZ8n5:zRؘ!:FoaQ0 Ц8*(#_EMeUdOJ6/D0 $`lLC(߄k$E@Ozs&9IW UV >OnXbK{KyW7?ö}30#GLdTjTF3q+"DVj*5b ]mh fo!*䥖 *vDIYW-8rGؼN]s~ Fwxw u:Hz<,Iap&A3Kmz&QuCLEۤ s0<Ƴ3}uäjF3DQ)#NZF yPU]$9c}F{X?.2."ZܲUk>*BYܽ>IkD$}ׁB c,|_|^ hԆGur6HX Kca%zVk0chG :w`+HaIuL\TؑNG`'|};PR#HpI1䫰Ut`%"+u-ٍM= s&i'j,l$ė̱4 s4F (XTʫRfE@N6Vul`u/dVh@zOr?J-@K( n*8vŷ.(وEtU /HQޘڨ m6va10IJVLme4}X`-Q%d̊5W4/k jRw_QyX,.rVL8nf(QBҤzS}{€I%ևgB+y傟oHqEhӵmH7[f&y`opZ9,`Ap.Dک-Q@oV*'h5S- 5xWɗ#?e5 ?wJfEOcˬ^cO[TE+G낋@`+0\iɍ޸Ba3MdSF [##å6(姱 bBUe֖7 taC;ՈK$1z$(K%x ~>вBa7їӰZ5  <+Vm,etj ^A]LX Oz$IiNqE`C.θ^Tv#_F\fu!*ڏXM[ ڀZǬeRn6c"$%ar5d]Հ(Xe}Z!;;ރ5]BPƝ@)'[ 4D:..6KH91yS\9?rݔn{u"hI8cY [O~1W `GXWa v94V'FAk9Z]l1ng6gWYV3\j@KUZu%V+%J_]Ԥ== J*O{Oډ☀,fDk** k>Dds} 8 1ϽrB! TdQG,ʼ DFý7*dPiўV *kJw[3yNhk:Un'#JdI[Ntbݻ;!#b14.ĐAxd={jc8# 2Ф-GK5j+3^avqJ;Ǚ*E)R5B@R25nIU4W`xEZi8@GT̈́J_XSo2f7MIyQYRIw'z╪k&rEVg͚T:ѓ쵸$tUK|MD̢:+iZ޳+O΍^ ¸[!C'>wϟ8EDU-Q%*piEs8 \wu͵&.p)cE DJJd#v8ʏ ]Mo*&Nڟ6~Ӥˉ3"v{b]yH-]CJ~H0d++!Ig>gÝ#5iҠfK*ld 3qk+_8s$*akj_IZcfЖh bAMC0nu)ߤ. kj8_3֑ ܉ݠPZvӟOX)jz-;Bq[851oׂs=hT{e(lx~*;>DiqM45K|]hj nnVE#_vn` F1#/X5VaL 0}}Ul%hv"K ƚ_@ t9xwoVo,\J:UYNXZyW.Ԥ A>.9~0ܹAiJa)_kEV`/so\çߗ*LDl\3i`k[ f1U)dV#)USGD2֨ς}vKJ'g;/Ϝs[Q_zjV(Eؓu s.OZ*Vk67s`7h2ZK h*lEs\y| & A+1O," e7Z.e-[&{'2sPa |Dd1f;c˹~hz[?!CHi'vRt|bqARB?i6a+ 7/eV1 BZt;{vQ8X|BSlN [W{Wb1(ZBDV4Jj2tE ۤbVs۠ռ*`>}󥳿)y۲ad H#`&o3VdhUqPTޖVv:b/@sĴJɒkHCq+օs'TEul%C:R*! }.6ŌQRQҌRy1`kӢjbli>ʠNV+YA`&okj#bRP2dW/[^ltx9xh#T0]l` &N'dXy㓿 gA*2\2Fp5]sZ2Ikڢb2+mXR0<IENDB`searchmonkey-0.8.3/pixmaps/searchmonkey.png0000664000175000017500000054226113236161317016031 00000000000000PNG  IHDR/zx pHYs+cIDATx}w`Jz4R7BQ:(H; ґ6Q{IBBzH!FЉ=k_'j̋k@#gEz?[j,s Y۶O>fǿ*+8|_-dM\2-I:cfBTXNğ ]ppz(Hjz } RQ%) K&0-)ԩ'wq7"֏?ńLJ0{wRq}nK'3dHGJ2"d{?{`GٽY}fSO!) ,\l6o7o_RR>Bwm}Q/O)<\xv/yh*O"]:KtXصm5C@vn T،Q+ rwcs )/ځwuJ Ґxe,SH'/,.ZW6uQ i7yd&f5s0h&8R>ByJɧpSb;+Lz%VԷ.~i6owKӶ-cEoYڣwɿ?0n%Ύ;nNZH韺KV͗kzعj!;EXi:)c_yU y;_ϔ7>şo\Pe,W߫LהPH )ZAMJXBU |;Ϟ ]ݧ :u$Pic(2N*1s߆-R 'e\1_Y,ߙ;|cXKx>:b>n]fw2 !xt;Ҕ3QG==vXJ*(#)զ K )Nn*a9Nǧ76o[B1`G A)T )s4>S73o[ RX'F$UkA u? f!ŲmE)aU"5՘RBhB8Uǰhud/24ѕI?k' [^B*藚 sG(شzr Q !G)HNy6G h߄v ("L<,K*ĮߏqTj VƯm3%_e#wTVxߘ)Jhj|^Fʫ+͐b"$"Yjuz?4^iQn?5ۀpe`0.9imt|:c9m***\-m" 4` nJdT" 3vR2:"B:'f݂sPSSϳoMP:y`ǯ}G]xXWXyڠr:E@X-;:ƿyzHm""Bkj}6^B6f)D% NehĔ#~b޿aQ(.-EGIpY'Q=6Dѝ׮#w:!J`:R5U:Iv"^5G'ߛXOΜJ@\X8AN$$y7 *~7c1~GB('"̳"+ с( AyiW!n4m;MW ᇔo~D g-IBr'Ǘc׳r:kFvN1z,U\)D {ž3p-%E2*ikLs%(ti? k^^=<;ň>pR4(J{z&$oF`ݘ":0ily ϬIѸr挨 _A)Sy^r}n>e߷;AN=ZR,os4t+ϭ~ 98Q.P:Z "$ȟ{lތGˁk.4hu:(. xGp86za6J,*UK?bbGY='9B˴ x+T" };}4BZr]4%z L!}zg0M?t>~(:b|Ҭ)́B{㑎mU:@A전%>K T;G`'+l8OpScˉ? B&-09(D.%]QKxv7PJ4c_G7;umÕx<]1fp_|r, ãoAiQ=nܹO8t Z]7$r$CQ*Bx-jƸvMMay lz֓ux}kX"F,J!ǀivWU:Tf\A W\DaAfuب.@;yc_V6 _{Twd3d+jRhePBL#ZJ.QlP ?q0Z5!jL~g+[RTk"D ͽ, [x,Tv& -F+אDD螣~uJBY?<녪N,/gmCIQBrQJ EΎӇ1[+%,%[_hBRcWlӞ -zݰAh8}[Y#5,pz7ygK(93rQ&آ#Z(r贡$e9ݞdFKB5-CFF-g%x.v{~)tzx;:aR^{c>=?Þ )2|?f;-t h+4X| Ϫ)@u^ Τm"4ƿQ ۗj- 4&| n5 Ta2?2 XVT,weT!0-"ߥ#X t;_`闿Eװ բqtU%}(xuh8$a*mh'͐XnD3*Kv>wCYFaOeug"C-!L$*N-z.EhDBܛ پ-8ǩDXRuFFZPR3oي8F%w_ NNh=UMXO3N E&6dc: ƎkJ S kP IRahy+ zN1\Cݡ(W<bCz<ʓYP -Q/};A]F%<-RQ˼R7S{Y-Hy{7c 8F^K{ aR='G S]#<ң4y"h-BQ]C ?"ߤnHf;!*!6{m*<>Zdڐ2Shܻql%mm~FCe9)x5!H!v.?_MR8Q1KZ"s_* F555Dơ!x1(Q=aJw#i A_erSѓיăW~$OE ˟h$[*"`pS3UX$Hlm`'R2vOg] 6]*-c̠f 5KP%+N'Czt&T"|+YE]_c]_\̴HnD!azb]Edqh/\` Z"h5J4B&BBkkfDgm7g>R&-Psc1X9l+yV%ڿF2m A>3׬~iXYf[I6- mrH4ubo9C _/-FF!{T;RoS>bfsJ%bd̓BĀt{NЭ ~*7<{dH-iŠvdʰ!D¤n!Ś(/Qnѡk\FxC ZW.B W~ V%&mĖ4LIHH-dX*j!JϿz-CǦ腫 !襡XLOĠo⧩cΓi! -eSK~=oD|٦P*k՛رm,g87 ڬNo>u0ӟX%)Hr=Loבܫ+PmpjHNTrzEhhN`}cҕ\,䐰}waJ77gciCޞ c6-]%9`pCaPnp9c>,^';\ؒ "\ocEǥ8A +o>^iSZ4T+\D {V!44Hc 2Pd|^xgaz4ۆ!2Kx S{Y+Лf\ǡ`]l,?ma~¿F%RqJ&.V|yJV/`A7>j"y,Kgbqjհx%Z?[m !/ X6B(Kr2\Jo:i\R;߽ۤ"!)x% Ӆߗ\e-_`o `- ,gҧxa\qcR[8eo?lUhH bVy+~r3Q?/F~9{!DJWׇZ+ -RgHܳ_-D^M"\u#鷿/ƕ3Wϸih. aܸS9^3i`g[q "e)Wx"q3M($ Vk;_ǁKJ8N4zkȡd/)bElH xgiBZ`1]` [ie*) eQM#JEѷ!p+C 7W/`뽵\_a"V|Oa˲\76= n`BZ)B Wx!QҢ }[oUO˛Ѡ*/,9emy'5k`;c RLa{[VƭG:VIxxdTBc)h٫I[c2l_O_hQt==(B`ݏ jG7Đ(+{:h87qnx ӡ {i~kItU9/*ZT,_wiǏ#AX%)X6 lGa$^BVЯKK<,Vt~ p:IfJRYI-0m@k7<9JG7zA gR p%WqBMӆoޟ|b۩_F%YD 7%7=#M'䒅g@[#Bn>s:$}& ;l2wPZnBB-/74b2Sa4+o=#4 HCtS%ؘ~AjuZb+Ș ;@Ş˸Rf"~R;'BkRTB"fy31y@Yb!r[(a*, $%Bpo.ٚ,5J\+j^n<\N& bU\Ub̢/bxK(J*K3&!X.CQ|nMb&p/^ZmQÙlIᆏQ&`;Quq[j 5ith-nLoE64@#:c "XU uXӊg ZRi G"tG·PcCmpn 8;·?F[DSɜfq +P6!4D[b7#=tn7i_>u0pB()tC=oͨdre)ؠyJ,m\yfW)dԐDWbMk4zB=?rz?/@zLGƷ ž5*u*1s#Tstͥ&W;g1G%* 0q}ré)#ad6m"C~0|-*Z/n{+Gbgi,h]]1Qι4tAѵx򅃗#jjbSȀOx+cFB!y3hU̎l\%1_Dt;#US4(QM; s׭2<@UN>?MѰ_8NfJGr5TCfMyztڬcJ4c-╸-qPh ;.!*1Zx%&:GSanߢNhj PP\B-P{: \EPP<ؖ FAɛ-b~R^=4ֲ1\Xf Go{U,y$^b$Ph-:{*Q0]*TӎȈmјq2=53a7 .,Nߎ}*$>s |_Wom2@!FK@ҵ=8craWH#f|P -دV.`u}xR&ɏUnu ` e ;P;Ѹ@xnYY`{Hj!Uz|`Uv5=t t#Tr# |_aR0!jo"Z9=de2 S╄;4V8Pe滏< 쎨Y6|!a6!$\X)YfKҷZs_:Xňm-WR@WӒ,TT $0i oc,C~>^mS@L?DSwMeDaL[)kM%ph<)|ٔkf5i2ňJ spv=cD˩ 88H-gfdpJ`CZ<<uڎP޴YC #XdH7GIq2gA 1R;x[ 2fjzψ,7)mqۺDzbiQ=zUV+?9mzRD'He=j+\l"$eE˕qMneIԶ=z2%Y$Ex u!)yO.G7:,^Hd XW@}"Ѷ (G$j8c-Z$Bp=\3Umږajvg_¹HOf ‚z$d@ ?HuXg{_^ u9bFǚ1aUgqR07PjT]E+`»_3[bv) r?3>Ÿvu^nN"^ڮg| NۆV`|x- 8`?9p!!ұYL0+,̦~%58?QWNeDBAms񿃣}J,j L;FH,4z³SGOEz߸GMxNŖUFbY&^gUfLۀ/_¾ t^f,> |-} oj^Bg'_ژ~v 4l w?pPlJ&nUv;gg v' d$aSHK|h0R9yM41k 97u(4pD]D914I2J\*z(Wpw=!l#e#,0`F,o.0a20ڶ|?BS`K (\~alxbY5BA9Ϲ4֭7_Ew9gf!07B(#TvHX>: gs3YH,}KJGşX.{hꒅMK8bs}x|dX.;ۗطw`I&1JaVc.{cf叵͈?76f>S߼uIUsޖu qy8!{BMy9;B] R9\up~98p fQ~?ӟ*V)ԘmmWOyxo>Yɵb,M#9?"_bi5;dYdA\[Er2צeoɧhg_!ޘse+ь*͟#D" 8_Rr71np6eB3G1Yj񾿓:"T `L>xx/1pr[ MY[Lq֐Rh/%XSy$M8D^kܓ?vUYļ>:җ+<ٟ-'9?xe;ms2M VPFHDSޝ^wK`>WVjLV#܇^`\w9z (/ _+MxբoW!%/]wʫB=253g*#ǐUƸ*ψf]5B{?*"߮S¨=i{h jb3V "=1LXIV$ѐ]Ð^ H,'K,$HɷGt)Şw& m)j*Ok^'p}9Qᮺ+ǧpvSs4ژƕƑD/k8zX zVQ%Y[@Y#Ŝ?v"=bDF /2RstEpP9`ӸhQb Zz Ft-Zi81aAixq YQ%2 sMBZG$2L9(e7SФa]Byv;H|MZuZF1'!q6 1 w,G}|.G{;gи|=6 oe$BFqw3('D)`XIS9BE[+)W!D1yX_a'}3K8魛qmh prvEU쮖y`˖-OCV ȋhj*, ү"Z"C_UOuGFӆ.)cG +9^ɧn4#) Tbk@"ST"!+ ",Ln*,`2JJ~6|p|;pn w3Sq-f3mLA%88qgYIFѿ;E UmKB^;a,.ݥ= ʡOzkI[3^C۪"tks^*Fz) S(#ϝ"|j^IV0U_-AU/']KTb°uGÞͼT#~n<&}h| }+MciIUjr@5Yp+h:I^C_oPPVԼ,WoWw򂺰1d4ϕ` "ҞXH$hsPrk[aens]\z+WR-FAIv}Pt {+ +%) Śp9#r5hrHi4JkG(.OՓ2`zYD}<\TX~89hPҼ Lq[1)3\&ZZ%^ż@.&1pv͝RSXQLohq' M'Hޚ ).@fQm*)dbl,C;@ǥ(Sth/O$yuWeWUH3f'9A~U9י|_rGW wqp$S&Jo'rݷ0g*F6u &ܦ+X<:qiĄb\C金Y] D.SU]McH#gǷ̑(x z/d1K͕p5uo|n\A\K䚖Y^^čVI~f]P_FDBOd? RIC t'Gfz8e jZÓ0S0ev8WЪE,KN4!:tѻ5SVd0;MTT٧$WA~rXx8(9',/*ؾ ~HnH\~-!YWY6>O6,<+kiL-55ոm@:E@ NIe(y\O'ig X_Nh;vBMRgk/ $O_'"BߜxRopxMYZG/o?z/<}I&dR߽_ W)A0p:?FWP391̙Wk=tmWodBñHߔX>d!@nM1X KR-R*\#ӗ-7@k%]70 or1 Y$( j[r hr5YU*:mͧlR<"sx:Nx(X"CLl^|-ٖ,9R}6_5P퇨7\FTJ!B@{35-ַwwo<'jC6֌&oY@68kܴ"\5Y(3g0 ȋ̞Myq!MY.d3Amv];+K`h"p0DD}w~^j_}Znj"$mKC hT2.FhYqbp'kwc%PSAp{c%Oj3G@G4"B(BB4] _$!zvDF UhܼOŗvcDy&bV6.|j&8FGneSrs,^h5-5\9~p)<y rZ4dV+9CZ\H\O#hroKg[C~cc }+_%He[y|(LW']Fgq̰GIqZW/<D"ұuOoբq}M9"|Ǽ!АtW _GKO56P~M4)z i1БJևj>]ĴGf!, ؙ#f)P!)24K &HM%DlQ.eJA"4}Y?MYr9\ /AP;;"ۈ%N91(#%.wNnh0(-D&#mՙ5F=Bb<=ϡ[\>o!RM]WWK*BĿI 6CD؈(TUBKרgcQYDQ#rV5ʍpIpQ yw4EDĺ5BpR5NePFKSƽ%{&`|_GR<")8 Ь116]g|Q zqrGf$I`z<W݇w۠aPuQUjjRBs:euѶ 2"g0EO췚j?͒ GME(/Md:#uWBGBJZx5['Rw&"g0_uNx?; ~*dbO_ !0Ed\K~l+Q3|ڙZ]۷ A(ԌiB{_Xp N*5^i&2rg=:,nܑw!"LC h؈hv| Jqܣ_~LOZi5Yh[ :H@K.5w?A?1l,i6pY`73K75\+Nݧ;+^nyu9+ R/RU$҇xo|,()RSW]_T(+ 8"d )6x%DWR`u K)be,)8,UXK!0DH9[y7E˼&0eI e> *G BuÛrqlLJ"cV%b>Hiw~1q`GY]\c5 dXqy*I(4@a"z~ z6޲BVsjh[V(=3[rSpARJg4]ijg5hnVFW s)r4j7^mSB E(tU纤[vw/LL@tm9ҪBʹI? 8I$ m#޷K:J*=6 2S"[2V*21rn\+|Uf˜`R'-gO=Ģޠͽ>Rexp\9zF=jkĞh!/Il 5kE& RZ4אpZ:Pw~|~DPWkDIJY_}*B [r/<=׷: \#㷻0wR_ᩉzzx^xe65!;X%|Eg5ȑ# X!uϞhh°7jKg,YnQןe@/DFusˇ;H,*dx`>CdxR:=6}R8 9 gVKq!y&W-Ec"VMe/U8;:‘)hk`˟cW-o(;V.;oNhl6[z}k7}MlWe(4wVVޘ#09(3fYxONM?+ZˏtѐȢticT*A-o_OYj©Ś<%ot?1ڲ8ۮvZh-aK|r;Q5? (E|\ .oh\B(5WV5N" *D>FԈi"8[U<-&2Td7ý ~Ǘ HXۋ2{K@ş1O*`\1X VhFg*3>~$X@*}eSVm&=x-$ SE1h>JK"jNXp|"ZLzj^<n@MKqEp$$xjI}# %e7_woR hOoAH3WbdMZLY]cs7j?vjD!ھOm 2Hg^9;r\Q£ꐱ6 OQ;q: v9o>NQή^d>zdlYHu*u"8ӽ3ހZm=+!\(ːe)qx(XJB3z sߟ%3P%湫?c8O-]PUSNiXs<C0# obꎩY\݂(ֳh;R/Ĥ*؂Cy}lUjET=9.84Ojw*QbDd$*XLWc W@ HkOwz j_ W1}Re̶jy$,ٻ h5F#a;'Grb|D~dX8m]EC*z䕧%jBٵΖ"ӣ}fln߬`uk@UHX A6QZzJ "aP$~`adBG"p?i#sSJ.9>Ĉ1zpG ΘBX'VVM8> [W9yfty~i2pN.*FQyʫ rs+\E\&ܳL@ +Kb*c+wp'#UȁS3*.7%Gyf&˅_ k& BdgrqzG9aeRD pN:.'qPLΝ>hrr ?{ՙpԗ#yJt3K+7xuFSD1_ x?̵$A:4@\/C$}.&$#5/KaY9m VuDd#WwP`nXGaL]ǩ^.zUYUP\'_z@="pNxacsV=vAbt385>xi[(RI^V|4kIm>&V+:}f3]8ex9L<^H:H5%r$W@|:"e%H1oB:d?vBX5bўFlK%k J?=<\y(2>M~iI{ “WRPoR?zo5>$?;DmӃJ/ʏ"p4Am (9]5[x!f2{.* (xgLV2*i3aDq7{͝}&'ՋP++L-8jE ] ]ٙC%(BB;ݣC惹O6gB4J)dž^/_.p,4l+"׏M7S|H+E/Gb׌YrQ.fpѴh /QmRm'C>%T 7R0ݫKN̽^ϭ D=\U8P =Ԅ"pur@(AE.(GF9)0Q.=]4eTe\a͊+տ]+I%pP+G|pF .M8G I\KA+){5DfqM|RPSQmh$ J\G6@"7q={^{4k+.rK Q` ÕN\'tu%eR-H'_gq +f K7NE3O1hB,4rP+ QUa!! h*tÈqk @ڱp$K#Ѵ*H,R Ux(JwSNH8 YyW/ gz Rswz ܨ7qJ>-6i,$2ޛԻM(QA$uHC;\O/"VZʿ.ԚP].6QX67^:z7so7*t Q_]V AAAP#2DV jT;OGFsӠOUc͈ǡeCPjYNά]KOJEB4ip(ACozpYģPzk $(a(r]m|;2ty Ih㉆޾jTJ oIN!%Op2_~pxNR"nxs,E%F^k@řbEɃY4P?}{SCqI19MFR.l8zmA4tJjB4dƼgzյ?G3nȄ7#Rt:VY/=rP8b[Oo JrLj^KEes}n oogFuJ=7/ eX!U6օH,Qg:E%XCR;1BPa8%gǶN$o/*QAO0N$E -LZ jC/YY&MRRbטo+-BC8Z@喰j w8MiQ'ݔ`Gp% 6B{Dݠڏ/P(BBfY#/y9WG'L8f Yg1pNQ0CXjM262%- TQr`ˏam_R^]=_ѣ(p$xh, Et#X}v\tt$tAХHI֑" {Ag%kt1ttGO3*I=bn [R^tRMIPTp-Me_":(cZ h>=rhQݝ]⌲J&yZX[;+Gd'#8**@ko?A+T 7g`xc0ܾpbTj@.T&P;8y(Up4<ۯܸ~БHA7] 5$ܻOe~&CRԔ2\_NKETQhm]anC {IE%RrrQ:}O ciMf*&؇raw'C0C [Gۊ&\r^gd/Qpż.NPlIǖA<-AA4YL'oN(3fu*,O#wC%h2"^ ضy#.OsOD_AZډ,e.!m Qp%m_ע_w55@kU&pOU p5gPiB5Cdnq K#bC$6p*q/3؁P"1U'Dԗo4D71L zÏQp݊#l;쑞*VXfMN;Ply-}3̠r: xDa>y>l9|}}ѼS/l9{ ۹1 ]D6BM}l&?4넚 ]p*Ȼ]L3TrHtԡ܄;i%A,≥mB0 ^[.Z72r t(S=zJ'{ 2N\t5!Y_O B^I'qp޶:txGRf^xMo^99"<<VNTv^\)Wߏ#5= Woǣw(WCUOC#biSN8%-.m5P{&Y{;= %gP{:GD"bp73Iot@ZAsJrcDiڅ|wwRcwKrY% g[hCz/#͉&Qd.B"g n TE%-t 8S,ZrG0#k1ۧj>-" 6FA(E^i4.c;`۩_YiE1m6 ý,A({ZaL׶c2te[\ʤ Yv 7g_Gd+t)@&}GyŸF]Z^%<51dp: bXdŒU cwуx8є_cՊjH7x GQz 2?MA |٫K[ uew #rV+qm.Hi֎p [ѐy2!~Tk'ѿ)o8u>D"F0 } Re$@H&!Y-QoF*q09ψ@OJkXeLxe9=+=k?6Z]X8990՘&ѓegdF8qKxSɚ:xeo#b^r6fA٨ aM!olL!*~&2Ќv%܎1m NS+IP/tIⅩ8^!!umYIqRϭDNe8Ĥ4C[%hQJ,WEɖDy v`DwS7)-M/h+(zh,ۤ0<^7ךE ŀD{2_yU&3uFќ0KcڮqMײ;_?I8 2\qq3YI[O=k d :wB:.d@{" uDΏFtM9qg0; xz>';V0!Č:t5U\Cd٪ -<M_hRV/%ކ$'"ves_@<CydTV/?2\j~p+#~ n =|[R o"8?w/ YEϽZ-Xd\!NCht(// &3d ;τU om9;7 lW<9|%(z% ۓ0 #IdӜoX2#έ݇C6c"\6vGcrK 63d$aGҵ{hLrIQK9) :ؗ^1qyȸC)7Y%ߞ/íiqE])Fɝb{dƓ0tX*CMm"̡?04 މ&:T9ƓwDM]<^ݱiYs ۛv1PYFTdhC塂:PV;ۢtiJT>@u^ /m!5D{ 6-x!> $Cw`$ۖ~`6`)v!C4L #˔.j煄!׭A*%-RV ^w|v x}uUbesNw۝ԟd^g2X8jʑy8qm7NooeZ%֧t YETeWbf)2Bb8{;?edn(daA2ڮ-W1i.:Mybz噦1."!DCK=3V9.*R+vL)ƻh5|PQD{Bj澏!}U3ӖJa8+vy;MG+F[M ^)cLCvvcBɧLt]"iueYҸݯ^FW) 8Q8-UL/lH>~V! Av ƃ4Av.x2 7bДLu5:RU2RjDxjAϙ>OJ!BR2-mRxlGd(Uh |gD= j5}yʟC̋MPM m#WNn$qE%}}a"Z,kew߿ ZO3G9RKAvgiFqiߒ Riğ*@C7b5eǰgé) >A߅FFO>D¾Pkgrj#Kkp]qjk[UԵDCc=I8)P&Q5( 5Bή[=nEm>(`uT$rw޾)hYeȆ;b;9\1ʓ<(6@ Wsj[""nH&?݁ ‹lΌ  puQTfÞQ8)y9<\wde" 5UpAQl8 gMjnhZ={Vؚ hiK]AgrTCٝ\yͰ*^ES7G"(-%Թ)cs=qr|IiG.*`F@KLJFsQh~[kƱyтX6j>5_GeE ` <_y?p46}@FHj!N6 p h ĢxY Y7nlmR}NXcE bs:wHU!4M5g̰Ka3&Sun41rPt!Jb?2Dd(:ax6QbGZfY҈<2 ӜjbQGS4 7Ҟ/iGPY]v!=D0J I:#sKFb gjfY2Mu4 AJA*c: 1U!UJ >Jw^WVpAmJRsw 4]DW*OG֝[*yў @6!sږ{i-d6E!DNiJ-4YЌ%P\9ؕ* F4x5򄪙<))tg:o{ 9Ya+i_sY^n\#Ñ%9ٷhp|fqyJJB¬~eߏ1ϣ^Al)cގcvZ Հp 0W'<[!e{"GF"Ԁ {|<&o6G$NYov _$Q騦Шth3N;5Hڟg'5u,K*=Ѥ x`1836mP^9kF]'Ng}_ZoMIxXH0IjEҖd#^]m?8<9&4緣P -f@E@^lY |:"C?1({P $os3:lJ4ոO<*YѠO(2LE$GK؛^Ztz|6xdyjj/5,#M[[i*, ,=8_EH{tvo輵YeF0 'K sf,xxWnOPZ/6y5x:RM[,aOsnJe"TTnz4P99s_:ô5R\ʬ Dnp9?G8AX'kïc|C|9HQ.{> q=\˸nF0Rn~&P˴4kힶK,>1H/dRcѯ2N,?~mqat5XPR r7)ŬOTe2ٽ:X>s".]]ۻFG-\5rǻmer v='_'3蕈~!)#(d Ôp(z>zD+wb~#D.#,h\xbU{ǘ@ LN/eG$x CW fMmϼ1)z4_gN4ܭAWIktUp0r +Y brF kDC_G0:9T9i8KNARL 8h .—#Jv$0 Bkd2!C(OBV5!q"w[&ܬl t}.~tGJ8`~:Qb)N/㈥˼eAB/C5p8x((cH0Z5q_=)o4;գ6f:MN1 koç 'VV"T `יSDT2QNT^BxDo|S6dz%*mgBE5ΤM}b\EK\j+<.rdLn%*Ngj'sA oc 3Ϭ0JS@_$>-dϒhke !8;8˟ǜrzfc$ vMªPCPO <yN C.^J,9g!GӀ$'v\<m5 oXAH}uDx?vz_h:aҸ9o /'I.g]}Xj *aH-,1 *4rr'`Tp]-w#?=ã[߮Ni( rSFk)(/#wMzK;^@4,?B}ŕ#^'8nHA!Ndjj^ /^3C*GL~l9qYsF)qP=O"O,RrԬp2ަ/ziku0R1J*χ7VcS龗n~S)*2jiNsEeչrXtPAg")DgB(ˡ܅U#jGO3䯓| X^7F,VW<,%z6;L9kQhky[#Auk־zh)+CγA6W-RlP*Nٮ'rxO$AQvs7 ;pbsJ3qb6%r`NԔߟ,Eڣ-b2lͶ+;m3vz_X;}ɳvMhٖz7hwt&ߨA<66rpAsا%tO|N=zSqI~oŦ/?'e1m50(QBjzTK )6Yk/dXdز/WD, b l*u :!2]Je`ˡI,_ʚ cv}Clо*kzFG.=Ϙm_tÒ$>}KlBPl8 }Q1@ߐѡq@Sr&y ;duje*,$Ln(X(De)V`ń\A]"ԙžqVVl[M.2UM\B}w@Xneq"}DcbaLz7(gX(L%ՅԉԁɪɖUoP'ԋPk d:Y<'Xa}ͨ*ћR^=ѼZӢ8_o%B16+;,B7[fQL3hHL7-7);Ԭol,-&x9v;".'RPIXmɪf[Rkk/EPYoe_7^Yfl)3{Lf"[NHصXrjX]%LuI$%[sjEn8m>7=z e~jZP -ABlS=v IDTn 9}r^ nRI0b^2=IZE sv_99T]Jm$XHa=b5V~z$2,]-A"zlp["*.TGV=ȌEd0Y0,YqȚs2擌1InD ɣ/ج.aWS\ΘLWy?d0vytU?F}HM{=1Y N_qRXyP CdPL 'cK 70zҰ@S(+5K SVl$y_HD2D/gn䊱=^_T107,SMYbL>2]$R7ꉩeԏ]2Wt_N/k a'Y)#Îĵ%8]_g/M=ئ#S7;:4ՃO1ד_/LѼcI{W=lD%,L P6]Qqzc/me>!_ T/[۲TQezQ}KM7mH Ak(c;FHMVyꥩ|RO*,]?cpr Ȥ=YUmUED3%G39dwsr*TaّBc*p2B>=]t_>yFv=R0ybT@ҳ%_:+z6^#7*!YdSWgyYJƌoH3[N~=kW7BW~i Cuǝٷ_Mb߅Wm)7YQ 5q&?fGlJL<׫wbT8mR Kŏ 8 B^:v?;ufJ i!贫3z3Y/m*R:ѿiT8OU躯o %)cgo f"q)pZJÀ_zE2,[}&\([.]hWmÇ݃}LUbCxղ>~(-fYObS![`U:d.R}`Тָab4wVfG>a |: 0Yl*Թt-cZxܒ:ebtMc~GS*+ C;זD$"Y2gH2)qr/ʭ_9 #|/s(ƨY+-:#S pmAms;ag{I{>[ 9?h8YϠx>Yf_.ŠcVwG۩>'U9;@.ո>M02lP:\fN?a_X=!Bb9r7i .j){T">'X-8KM4HC}2\c~{kVnc)a2G}GoH=GF ;cmWY[ѹRsxStoAz2vt HȗiT8S9= ^ۖf~3|0O9򎌵ߚzP`tcs01sC֔hXWgCS`I/W8v{CD6 Z0EiS{D?<l/cGH3}vGpÿE^x.MSL^?-cއo >6)VZ53WׇqZn߱(X꽟{pªq^:TZ AɕmXrr!Y'$3^K`gr;W-[~q7ݽRtXvo7c\_-@] .7i? _VPp+ZG@k`ݟmwQ /g5w?v4|n Ȭf1X+QȃQbyD_byRTqp!6vsRd_m~eL`̓aRnD9pz Ye6Tvӵv"{b-C]s5Jbԛ?x.`%H^7+Xۈ~ĦwbK5OZiG9(>@3fuc6OHqZv7^R mBoJS0MB nAxTauV1F^^EטQ-0wx\!&v6/ ӣc]xE §pE\!/?~I2O>M$@0g=`Ѹww %Hy,ƥ ~~r j# qOCvMH곢$zzDAZl/>[sMFf.([E"uuB3ǞO;NuASV$ sk4-?j0rii]̜Ny^{QqP26;5je^߾RGVk{(כͬwO=El]D^/bk0C/? <)*?p9B˘ ASr43HQUI[ŧd%He R O/kř gk8?,WmݜJE~7q!!Zfl[>'kOR麿%N.*}gv{rdGq2[ѻ=Ŋ5gn]?⫟/ 'OSvwic rjXtg7=qo|cT%a»b{S% b˒η;Ø1>!c`~dt UTQ㔱U`yOX,Kt3^^*:yN\ׁɶ4nY|kCiikF4 8߻*%vxf \hmt'1|+ ..와3cN$`t?1ZVI'uT/k2޷P> mcq?!PQo z}l*D3 &Oڅq/Y}|!Z+TM_( ʛl+65^\ tk0n#B6^E&نK^|?qDI£I[/C+~mG>G$!rrc.Q# ]5aD}!nDEΌݶ?6G {O=Q@}5k׹'(̎s'=' [A/ځ%pk{omX [; R}%L?86<)\TRDC'bHiOʌslwJo 91s߶ْ} E!.ƽ:l!{ǯTY: „7QJ[rݷ|_]:kebʻ޷8X)ahg$XzxW>;n՞xYH0=YMI?*B-V3ږ R\ͩbr jx]>٤}x7ptzWǞ;LkezX*Rە}(,q96P->NPt2rjȑTL^OfbzrNIu3kTCQCr3-gR-TTWXtA=V>c̆2{JMo ~}.}a:.plAXe')I|.?GtTR E/}5prB_logj!P~Va\|K;ԘHt&La8ݩڎIK$>+3&z țs?$`I?V__IAYHiEȑ,G] nWqQ3zLܷ*Mٍp l{W`hθޝ$]?(.uh5VgۮWibr7TC f և}RfP;eٚqˑ[=&2>la+-eH,ԖBm*Oa]:VoJ*o9?vPh/鋇 5 FUAQQT@>ETUBTgOy Yp:1X\.?CD/l>jܔ~#BFv*htmgeHLWjc"S'ce=qzi]z[ k *4Py1tm33^"=\ A ւyvPң8ty:;!hJ.DhF1-(A)T9K2[7DJf.IƒB!_?$;נX[&9^Qgn#vE 6#ݯʩ' !3~~*$0FcUPFTtYl:YPNư]FmJ)cu#/ƙtA 'MwAJ% %`UM *k4!5(N ebW`*·.U\1$bLʐd3mC{cp Tl2j[ O BWD4jmH g[oRCkr8W("44^Aq-h3Qp4 h-n(gDOTA W(p`0KPX r8"xJ 88c帏$wr50r.LB˘R3sLf>O&:6ԍw mgxv!)(p$"++D@OV STvDm-kVEERd;Z gY 9;C _چnrq>?"DxE/>CypS-aUK«{QX89JZ#%vG0?j7|2=@'wCu~ VҠfSzԔcyuz" Dcߜ4dF/}sIw@vP)=n,GݰR*>|;|(MG~e=1Y.\ͪd/8\ N01[vE&lT.UE9 ^>(՛(54/ȈAmPNQr fe(Ke Ou][p(hw"m**֢,zYqTq|V *qvqh4DZZIA5\Ng6qz[3ӆy@0iNVv'!,ߏ}}yXT|kO1ed0g1ΎT[J=M'Zr 1(qk&rbq4[X]EVB2jLN3<^M:MLr#R :o+*8O4+0էεoQ#V"ޘ6 $Ԗj8 ތG}ި uyPZVAMeAW'Oj2Uhz1xg4 ©4B^>g@'.񷐻& @;Z-FI|{!-!WcI(*Ҟ4 ̚kWQTa=? ?(EieBJkEaUM%2 '_p`/{Hk\[6 7^VU"1+AS UOLŒ>0/zb.T@z)B%G(W'GڏHAvB<^2%yx>PqF!~PD5ѣR9f뫮ƵkpTTA0s۪ l0g7̘NN.dULһ OfRYC5l2JAQGCf^DiWǩ ];y§2wd \Ć6r:-Fy='7"U/d}~~YV;®GE1!k OWT 9eʉt+5ġ0i#G57` r;;uDCLMe[bOB]`|.`U`KcJ4u0w" o0,/w'|7z5V܇R6 w O$'QJ0qkH(q+x\X~A~}x4A߮q8|:vڼF7DrF\7vlfNP^h47m6MF 1srz]T,N=PšS[Ƥ&NaY%2_R|]vx۪(z2ީ$޳c0ٖ<<7ob:h(}ʊГkT| Gdn;%tvfQZWvݚU 5:K"TGQ&ER ]gQ-5+x~(|m`cMJab,Uħ̹ (DVF@#ަʨKj*<0j{fHUWU /!r vșZ>c0vXRN,"U9<Ɔ!Ӂh#W gB; ٷ=*\V1LUecwI(lJ2uQ([‰)l>2aJFd7h:ݨq=1fZ .&N+)a0=< y D7lWu/.˞/G&eYS@j8+k\H?3q7t'UK &,c*'? 8:ϿGyEU jSyBSNq,]=sE>Q23U8-<ܓJt4žswΊMDաe?v,@+#DU)o2T%+Ŷ-nĂ$sF!x^SMX}:2'W8?y+:v|.&ރ[ خ<.Q\tl&XOzy{nwIP[ 0 aލZ,T`G/&1YQF+M]-=Q$%vVv"G Z|vܒb gbnEp%L+dyiJ%ɿWj0"5I`-̤/NL<" ؔU%eX:YU gn>v "e&>%+;8CXb*B£>ÍdACw)F㱯[ۑ[v`Yx@h Z1{xI zTԎDÉ^Ƹ&RmYM-*Ke0s~եgߝ{`覃5tBIh!NzM  `pogwzff%Jڳ=O~ μuJoǾp ,V+֭^*J­Pp9e*8H*F; &p$j WBIK[:DJ[qPtڬ /%dI ܉h\x*N$`ʑQ팷BF@Sqoi$PbM'.O<$, ''11:y \Jc}EGDWz_W=Y/v~wܹBg<ƻį7fkb@db% 냖5}X"5Uh|7 WlܾK~s+5.=])hԲD8BM8AK1mB>f=zZ&$,lkmATt "l9d\L6@ر S@!'"uZ-}1m%*%V}-?5td,ivcqVuTldϛA5qЄ| gfMn^tW{9))/܁g>gk RdQؔΙt1~ ~(:+fӓlq R8ףSQN9 t2'?y@pY%'p\ͦ#P~C [;k8 cmDI+%|"9[fM7낃l*hmmELRz:έSs?0! ! ͧ␌*hFT4DE8{^)Ԏ~[O?Ov8ohT딄P(d.ƮÍL1KIRs)yi~Y[0p;$D)fFD;'KU Y)1x10?NʍX R.-LlRO=[ qrwc~Vh*S .qpiJ\MMϠٶ<ghn5c; 81)GP;?Q&dt۽ւ^%`|~>.O Qw2;>Fu_<$h2:D8]G=4qJb $DLvK*oweׅ—0{&cKp$9܁89;lbAᜓtd*6Q[ŝ{.6Q5k񗫗~}h$,LRN)fIٺ0-fF1٘46|48̝Z.;\qB ?)Ŗ=qW%&E2@eTFYpHg݅&/ڀN*%|bFFl6`uY,an G ?EkILUyM̭hitp|/Dy%GԲJ`EFJ$ 1*&/V &ߕ·X~A}7-$=@Q,d=N,07㬱h\mV(p8 ;AKNB~N.t e_?|5:S SfV¥wUsg%>zqIE!6.\B m$0DQV=w?/3gBQQ***<}/*NڃE㙅:9.u_bo }V>g>vEaf 6=!lul-2l6cwmgD #r/[s{l~HVbkF*~To#zTABDY|4D-WJwkSfd<B=ߵux2xK3Oְ1JtIE1mY( r F":E9WL\N. ?Q^ā:;&;[T}zX>o]հ0JtL{ǭMhv jӋ,tESDňt:YFE}Ue%6mڄM! qͩc܇_`ܤ@ss3+^ )HJ-=]>MFJ$MGPbqIW MT|طg֯NDġ0#>\zbwa]}h< PuZiqʿ:PP {9'1PɌ|t ˦AG!XLNV^mٙhz"=X`F"\|3ls9e7D!da)8o] d1Ўh2 nA%94*b#HE`Tү ʣ-̙O~yd2s ĬQMMMe¬#ʚ1.ފə.kg9~+T)8y JˏQ hh@NQ>اbo:Dl"R0ob6L͞r>=Pۊah6ܙwNlM]jn R3*T(44 -(S~i?ʅ)\,Sk_7:< pmni$Gf2tS3{ %"Qod@naJBǭOLៃ`"U݌'BfV6M9sӆlZd8W7AL#4Vi E[C8˯V6s`צBCM^<h!з<Ҭez I݅w.oKDmfˡڭožC ),6*]]]&JSfJ=?b׾'ᚁ'D9dN_9,Mycp"SHDTp~i#0"l4VM1 H2}Em/Rq .'kaAE}We'FD3!e-?ʈKfuiλ-ʥP8+(2.=o_L܄T&شSop2KDTP`2l~ 4B ??`qYl}^ܴr~9 g.-=YKᯫfę ]%gLeׅC޽} I`"uL<@L8ܺ.a1_eeDsmdJYiF݋U܍[Gėn嬃C-W'q f Uz5jsZL67,-:“jt5-lCWG3L.nh.2E8'z !.QĊ 6Gp<1rҧ u/0@H¦uh#aƕ+_IsHFx?Y fn,Cb uR될5*{a!jK#{t%jCi=Pg~ǀķg-[0Q(;( ie>;BDG12 }xN)9} `r'᭘0?9P=T q2 P*d"U1?CdqiKt{bѾ+Sk];N4ϥQp:*98|3koq~IHJBوMLAjF.N:,8!]TrB*w@d4eMr$-hi85+wV\+r_g 8(~(% GRnm0]/8*=,~^B,T \'!ff,ZH[L8x*<2c&fƦ(l"6#2t>>% mmD,/B s+4x&9g/p+Ro]D1:P͎#ɗscBSs1[mF-(s 5wtS+PYh'/3ɒ &`@0Q$>85,6elzNHOycuX0n&RM}x2x>̴XVHP_߆S4^ %&-v&^V1s%,V ,-{\Tê2L֎bgq3vfG";Xڅ8E*cM|'<|6O*I9Pçv> !.E0_L@H]Gf;Fsz1SJ[ Ŗ 28 tZ8.]tJ*K+LR",>9}ToPb /UH[M";Pl-^"h]:A0!I(A\>WJ>eh̽9|Tz8C}\<42n.>kS)~}2GxqEQ Qhr} KO.Qɇ'>_?pzK-_zwpD}>Tp$Wd"ML@K '^jC!_fۣ-6Hg"P_=g hS/eT8c`$uM2A y? ̉N-{=wGhI|*:7_z&tR#M8kwC_)d-F":U$dwE˙wB S8'ZTz環,A;Lġ%&` ɖTڕPiXن%_y^ǥe;BP!Q%V0uON.bCyy^Pqi*(M/rY`I]n#sRxFvPkp; "o*x3 0]=1i]_¸'vT?~^Ƽ>,mfŢAgDV 2-8?>a)\8l+ullǟ}G jt׭fxc 30Tj]T .X2)p0s1ps|B6NӠRP&pkϻQX  )QW"N kqQw?kP0"mv$j rȇTAA黓epٝ0ՑJOC<{K!)2ZK/ 8=Mݭ@oMHC}w  z\8c9{BܳVyK)P!S. ! h5Qj'A ϵD,? T3=Fm9LGk4;qo{Dl$ tע~h lCWa7հX܊ m!c~-lsD, u0Y-x*\DxD`ɿ14=opF$0.Y?q,d1512fj @c-bU3PqO[ ޮde^IT$/OV@CX<xœpf0K 0|/F,fN93ۺv6C${C!?GǷȻ\'ZgA#?b-j9{FԤnJλT-%1 Rc4:XaEƉ89}"=gzZ0ҟF/<%e^܃T[o Qq eD}9;IqA_ Mt#9: ե-?ld% /6"&|J syIQqAFPd u +Yh UWpWBvr=fC:8/!=Q~>$ +v@Ao#Gwx)Ywej\'Gyy(Alzd\Chs9?{JB;؝CrexSx԰ԚV~e<)ho WwjM/+~r0dAgSr=uXGP4.0q"uy:`8qi6G1ᮯ`/"#!V*D`ƀj~n4Zv[ݿtBlRw@r ( :fH;+?@A`N9v*ˌElPgjP|k)- JZRAfT?v" CCi˂ؙq,FTa rlDΓ$Hh;;'%j}yf0Sgs(p2鱟n9~u9Myx_.'`ʛV 0Gұ?qMe;9:1!vBnoBEZE8r[0,޺OYw| 7vNh,OIz^S [y+DI+? w뻱zwX:׳9Ppd4 [c6CD߶ĖA&խX/9R;Cwl77]3(<}'.|z;9JѹJ=p퐳;9$+kuhXtvWpVa{k\R[j:k[b\U|nZ'ͅW4>e״*-r<}gW%'5S\ 2 t(A(tv!½Oz@mErDC_Q!ع'z{XTM;;xajp{Ú;- ,d*)(UPhA,TW4l#iyB́Oˏ~&QEdH[!iI!4]OG!aA*V3@dJΎj="֢#鐥a?IČSpD.A; LG">/+w~f)&6Tp`oBvLbʡ>td6Z7 RG"ZV3r'Vp<=@jwCmBwW$ 0yj͓ȈUDAKt1v\mf`]C=f`o/.cE.lcQI@r!73=ߺ@aG=Ⱦ}i`'b`E/2CML ̔ʤކOk@ hҴhjS!b)K3JQ1'$6m͜"q'K Up>&ğ̝B٠$+w P6H(EXM< ]K':{Fa ʳ;`OߝMOP`J0 ^zauS98(%xS.p۫A^G+16PBڮڠwϋWޝ`D}(m {P̫ ݊G<:~Q氈Dޤ^TpzppޝDLRQC̪_Cu4ͬ3YyNM@̤xTD\ޅ_ WA!HmHVĴtA6,^D"zj#_\|Gj"9q-ӲbUC6 hMBN8᫱|2/- 0+>;oLvWax6z<4J ˅/Ɖwԯ"V0ABP`]OطpsuWݸĨ ,t$.{6BA` C<;E*\@7t4h[L&GeEӅyA>?F4H5h"P^SY)iЀÌ,g"GdMyJ 565֎D|}+"´_IH>c--/X~0!nyӺU8'11Й:)R[@+em0 ~ac@I3cM4,C7}G1)hsH?)e'eas5C߉X>NgH8!# peF;>cG淣o@MEɐzf:zvu:NLc"TGW!\d&NA#nơ\K&֕,q`GMdij^B '0{Fow}{aӯ^OϦ:0G?fa~+O,0Ґeo]S`uh#62c|^ Xw[&3|0oc?~ O$* IZ?R ,ߴ $z\\J7Xa07?@c`i5EpDC}YQMڲltډ΍@fGUlR둥 uJ3~%RAH>9kctZa@i *fܗL>(AQ6r$ǒs&S! `\m[}̓}$Uf`ǿ ^ n'tez˵~U P ُ鷝ዪnTl!'}/ϳRH ,n'T3Ȝ紹:$Fjf:(cTXOpBd4uT !/[ c,M9(U, H\lHrBːbk!PD";䉷Ck=OuQ[z v̺u9Ɲc{:_@Phފ˶~GĒ<돧}T[O[+}*2(N ?[`9i1hށgG ۔n'ãׅ yNHm ĘλXwMޓޕ7 =6Y lҢ3pG^o㌑ae[ϟo :(O\\?iDLhR#гNN?lX((ǑZV&X$._H܌5.)'gmMKIעowdN).?ujwbBn['2dܽD '΋(iߋ*7k2qx({l6fD-? \Wd?_1^Fかo|0*ێap$]f,9qw!4IMĤNg\S R k_>V4as0WYz};j;ʜ:n Κx0ޟz30  ˑ<Ph(DpDycOgW!~FKWvCI\cP/>DAv cfOD`:7Q8 =hDiVunh €Ȉ-Cbsq 5g|'(4DA#_?}xS/k##FR3fN_~ κ׸h' TYyx5+V2,vg+si$!cqX[ Dl-_v7!rD#JNX,?2A+g]n2+vlێz&"Mؔ(gB*&6A%ˆ,C{ɘdUpнj{ⱎB@nޏWsx-?"xT7 wf3o=us'cL֍߯_7G]yaXb/^}qY܇ۿ#+?%}VJ\;~`@JB<|̸Դo|$uz~3 >9ⶫ^m.?/0'+  J< L[uRg}y$MOj]>^8*wO"x2b,}0 9K%.Nr79}b"DPwi{\s&LaЎd1q_c/a3?BrేⱠx8ն kyv)y 3!4T#,z0z=G,ޱ+Tr\@X{`/J.{꘠ch"K`r3P/$<*6}y!" )@'WH Gp,,BuΏ(v%>w˞|uS揯p0)yѾz[n3DN-U;CpiƗvW6gϟOLǟNyc EDsʳ:_S0 ' i񣆾xnܚ񃊠b4 56ZGb(8*‚2__`3)}2O)|\nؔ?:W̼rfy7<]/(O-v}#">Dc÷O8{- ׮-B"E9AqS\*w 7ܧ(#Ɲ%/=5^-G+h| Vg$y[EiM{A[KN#!ѪC_=aF0ߒaŧî>߇  pR]sO`f q*qTOLu3|V!󗯈P1ӆ#QR,#tCI&\P2vG^d/>9e}ˋKW*QGmKWh YVEypa8Rȱˆ>xM$oQ WI{v~\J}>mUvO=ܟ5?Ң\G|χ*n}#29Pq v<`0BwQ MC,6.9v!HB@EBp}p9=dG^eJRS>wym^)b6mD|^M#zbv5¥ڠUKèqa2Z&,?bXuĹPѐL.*/t_ vDN`Ɵtmxyjbt XY D!2kl23+hF ۭs%QADe*$ȊMG0ѡb6əʮ ő=iLܵi{(}!8>[6h-"r)H,8޾jDQҊpaH'[~%Jw_JRgc,wo[^Ño}>D'*8JU=9<,I\%`ħ=ڀ2v/55 jg+Hؔ)iGsb24PC{y/Fq1Xoq= :ԛ*,1pΑ#mGoi8Ÿv#yN܃֍+iܔ 2VC{ꚄeܢKD ,u:/'fkBh NUJޅodsR` w = !\zg+&SlDLB8QRҊ*NA\^zE?ν?GH?&?pG s=T+'oK4L{#!Qb;qEYVD(%13!3PFɡx<GOTl>28YU!B,QrEȚA)Ba*4Vx*!(-d;ca8O<+뿐zDr9")dNyނ "a<#eu!Ma;jc#Dy,D%4zQi8'!PL$c Q5HLSFa+@4n%~/=b^l)G';01A@}f7eyeBUDe#Eז8NB0eH yU 1u yA\sq\=rʣQZ3BFK2 [a Yr95JЄ7#!Οp.8Ȩq+bLr '::~\9ru@hmD!1Nq+!()ĈM@Bp$#< )#c62&S}(l5Ԣ(l!(yDv,^c0$ 8% ;K0j HH[q{R UT NGf /\S;9YGzdߓU^=c][+W)Κ;C9 9r*;GMa+&x}ZϨy؎ " W;}PXl(Gnwey<8LߑVy&Q[-Q .a*qъ3|V.徦Z<8eZ/އЭ$wqٛ܇ x)^ڎg| oy>|V}rXLhhn]Pg^Nș/<F;\dUGni͈3o?RO-Nж=O[+o˰{W>߽tY-gWp?n${Dox:킔n.ߟX| W =_dF\9* 01ZnIJ"~ah`8`qNar +LLe!YI ,۷:Buw: #|!)}2~) 0;6i킺p'v7uk|Dz>o&M]SC ~W} Gfu;1?{ jq[0ͧ 1AJ!I0rP$Ot:/lۦA:{@;J$]~=. lӝ8j1w)od,0O@T u0 b?c[‰XՌ.=FJV26tlr \[["3lҷz||[zn ~ 8;,($Aaٻ. [|;_ FE'"=NM"^ &Q+wЋwϮs}r8&:<~gl>x.L ,:;Ao| 4#5Ij#I*{ Na}<>H+>Πwg>b@Lܳu33 &/Et-z[t{.V\P~hm? 8.Q։xN dG>d3g ΰvZ6x1MHؗ0D|v>xO{ I/X7D?I»Ck/6{]IB:f^9[e8QƏ-vhHuWTTıbŽwYwdB}/b7䐱%c9k=]Ͱv8Si) !Ŀ~I9Zd%fD@\mXVweNV|>3Շ??v?!e¶K ۃYw|W<]U 4e_ |J}O`ke,Ey] :[7BDE)c{F3 PV ߻:_qE HrnoLy]2}'iM+)` vwYHIxK0⟎^ ߽7K5WN- ?s»6tVMdG`=#ttpog o/b/tw#&%agE3*țb?H>2`z ^\}낰7zMRfƖ` L|EnB%Ǣ#-bV9 )+ Gk>9Iv9F"jm,9?tٻc 7;8`ᅗ⺹Y!+ v<}f<7gxw% ~%bm;׿}7]V>q(s~{'NqJ'QIbd>9K|,)]-{;PtO`"l 6?cxHЖ`'Sza9W-8&lD%>q: j,_5'b6u2THV؆a[/Gnb_yǥ馝Oorᓗ֣" <[H~  #J 6X$6|_K~;A*ܒ'N4BލKy|4Bu#;}B;(9E4gڴSW̓<GƦ'HPWcyNΙ8INDCǜۖіziCM(z},. iv.?^Є?r¸0\ܽRWz.IG}wb; v0֡}Wu󦧮xjgtcpG 4޶\ ~2VSey9j {ti.O%8yJ1#ڌ/} !(į]kKG$}ҷK1ko3}FE7. Dώ=) 'К7SƗH )C'L c؋Ͷ5`<,$&])P$OGxE%bݱZ\pg{}!Fq@[@x 0$ulhҌR#fxzx-O~&O|^- PH{*z:`z4ޞ!Z+6{=_o\ħ_O߷,;SA$b 48dt<$.O^M'vK>L [w x#KPI^p߾Y&q&Zs; Ta+Ra[OH*/ Ay1b|E:U}q[d#1Ȇ!}۸q::6w-Vlv~AIy%1ȅvN;i(ɤ8 ,rg_)~_.JvVLj8kvJyh3; PEȠ+OÛV/S9,srDܥ 7B& FN1/ai>T= \b*9ܙ)X1OImDw| (D;c3;2Q:T*524{auqK<0 #vwǢp"D q&8Gt*= (#Py}툎[ ]WmBlcTt\H:RUFHE|+=3{9qAEbEs_C?QbyyGEh­R&B9ޯpeM?'ß>p!.Hb~kX4&~_FKq)G掛O>:Gcz.Hu uȬqc;m6]O]p8CGq yD@\"|拱)l5zzqGH)#`Ewu`BN!{OE * %UTiq(7uX3P嘐53'`RNABUR '-&|xG9$:}2rqR*4Y^FB&Ti&BEa+̱sO_~3b{$Aj>odٰf?{JJ#b2;,hj"'MJS.ѳJVx*%T[oD\rˢn5ˌȹꓧa#Z>m#S<[^wV4\5?՛Cl0qr޲ H՞U~DB^#VB)lE2*! "#2q8e^n0`5R}CbgpՉYaG w#"I) .b@0 >܍Svg}M<\ p޾L1.8%OE`'TN0znlU (5,yq`nbRƱn!E*l7G@ \ǻkS3Sg=bD6c'(추f ?' V| NƺUHm;~TjTot(-@YA63!\)V];9fnԭCsBr22O[=G!QH1r䞒GY/[Rp珢 9w/-8P 5"q==g4<փXDPغOaiJrb|uD iE [q_`ŧP8 ,.v0KtC]_Dw3}: 釬тZq-2il.ϙRPg 0к7m|" 0yl3iv!*2-ÑZSxd5X|7KOƫw["FczTvRU{ 6zſ` 3?$Qs{l_y[F/{v/_HP*d >5yVʡT\\ a=M 5Ym0[97eq d0T'BJa+0[YܕN Fϯyt`3SL*@NDv2l{Bt$`j cav1$hLuRT!^ ,7L̥u ENLjiLJ1ƥáDqOO wёO_Y+N07!3O2jA{# "r(cG/Z(g9d y=u>,WR B2=I=XiGu Z"7= DĨۻL1n1ϛKny瞄uB)C|{":t$Йpꭰ.J.݄p\Yq["o{ir/n [p{7z#` <ԏq+BvR!A^DEhM]z!9cq4\mr'T[B@(+nWNNHw\M f#ncDa(|N>EeF'ʳN"ڎ#0z4pHmftc_;rfN_#o~sHWCĠL#Sx5HYIf}xv?xB:s"S=?[߬s8YaSDH0J_JEihB]G'H-*%LI*Eͣ'-H[^'{:CřT,w Nw6+r4#ioX\{)LR3"6\ہj;=lp"<*U 5YYd l6H2 !M _ q_yZtWt\NxS05g v~"]!Q? ϤԨQwKzq+"(lA A5BӴqPXzʚ;C \a|3OU0R0ZLKk3!Uʠ&7F$FsN&;`;oK v| E-5y5uM1`@趯DΉƑ*/c,U܆yGWϹ\YW07c&e/;91o];d:10?\G`^E7->&S( o>]P,8sZtYZ$>BN8 +`EN_`1;0iS T 4Nd殅crѩXm rTI6h޿ie qP 2(Y8ʖʐXA"ӄ_vo@QʕW(E**sӒw^u^ss3Vm`ؘ9b4命rT j#VaG!:u06#B~H$-V;;O)\[ ]ڃq*-߾qXx䢢ݐEUKmB YVps-*:#)׏H0Z0EHz`uÐ"=#hhm&MFjFb U;7%( ݗXW@'ka?#}{2= X+=̀Q%x?'+.p*Xǻyetdq}ͬ6;{MT0/NN(Jk/e'!')-&\;" /u5> Kz0q+_݈pQ 764 Ɯآ#h-@D" "\ETT,N@DGݚPo+z:`0!p7igay+|7Jݎ}{6c_/9DBQldnBߛd$T7@[¨ τ"F t⇃cjddfu(WtYX$䖠egcjlcI/Nhmd\nup!I1HO(]iՅn)RϊiG+X*V#P0?vp֡`hɚFgCڹc/`on e[)Ǣem :O)&ɧ.g.]Xً!Aj8Ang_Sw F~;NS)o#Wƌ%."utߚ`7 0v@pszջ8ZN8+6"c2,;~مZa-`' ̸!sJ ;Lz/_2s 8|HUr5RR:XqE@QݽE)JF^r1^m-0x2'HBDV\J ўRUR=?ɢxw>bH&K;LJeЄX6o2I\Β.1`Yv N ~!e$>}:,+Jrzpڠ;*aX\~ DZk98HdGBVeg\ԟU%BRi[odn@eTMdDӵp:pl`o~fp P⑷ie Azer+$-.RK)@Kv [{Gn%c7 쭭';12SFXj' SSY KؒU؆C^Jcq͞ġ`^7Qo@M*Ⱦ=?uF&{eFl 2gaz"X^dǷcrbӐ.բz&J RcK.===ؾ};hZ e& .`nq@@ha2 zT@plt٘;wW`mNJHS%pq(rʇ;k Hc<9o4k2/ -' [Dt u 'p[V 9KM 2)! dpc5v`]:܀ϢSZW>LA  M~!\-R n%HTyR?!ɚeg"ZI;Av$FCG^;Xe:d^ ɌD6u  dAf |EcqDb`#(`GN'lN)D 1X49-Baa!V¨J~3 J`3ԴEO#Sv00{bAwjKL/c"o$%FTouļj&EWK^1.ڠ] #COȾ-W4 !8'N#js{J?tڣB׈_pFqd^/^zH<ybZd72tu:GPX{ G.# J8exއK\gzvffWChUDIt QR̴2 JN*̬>,Yvbʴ3gj]h$UneZ #|KdR³_aFA.\0]wz[Bga1ظ-}V#L{5κo%ZȏnEj),8G d 8n{2ўًFHM"#"E!ۻbt9_^/o841X ;jO:;%2?0B8P VOf|<2gsIsh|Ѻ}#x! MSNX S SLtV|EVad\>᭨))y8H kU3J#5ZcnLV(##0I["dL|[>e> Ԃ K,JiR^D(Y8]{-{Έ3b7Xd7:؆TLƑ`311|qXyd?F&! j"@{-P4:_+y,ׂ}!*$Jw|[, K(N9*cѸIRS־>v@C 8]$~tP\Gϼ,8Ka@!! ɥM|玁I\EA-k8X O%36UQDi2^ mW[= `׶-`g'Xh!ۂ̫"^w~OA!#y2\yx7<,cLrT#Ƨ+Qk-@REg >>HN194DA_kG^ql.I2rCwK#;Q?\.^Lìa9ӏ5WYl>DFG#2*C݇Y P޼ ScUX:)" QkG$242$^??ǜSO8:_x6TrcH* _+hKK@! ܝP\ ü,(X x)\pnnQ⎉LA$]AD-n"UiCנd'WK:eNSR:IH2g_|Dg+Y`3="sWoOofIiҳW;!iQ=ىu8s͘(%YPt/vUC9f/OCZ,h4huN DV_Gߋb]7gB/#ia2ZڑVOv}.agvx|ΛriHpod"ڈ=`.>RLDi,, x]a"Y]CM9|=L;!;'D43 卜:#X EPRTJ2/17jB&== iTkNlm]8q)lh"ZA\ff^eG!\ aL\Ru$RٹLrA9Siѣ[=f M7zĒ*5ipSV̟?_֊|4J92LzkR t .7RKip݃hfNG[}ڍRHPBC(g΁$'Rt>}sd$< ዽ.qx9Q\l:^#0 K/&Lb6]3.&7DÜ-# &;`Igq6iRl.0V)(..f ^b][Iu ` K108{cB8`Aw(ɰ@Eʆvz)8erY|~ǣ-&lk+HA"x]/.~W;NdD&sfE!(oѺv ]hh{62(QK\$2p ߁$gru,p,4u8|Llmmo#@ rJwJ50prccj5w]9$b Aȵr[}t6\jru8e]kNw͈""ƨ"ށfdE). ]y8>},F~.?_#tc<؃qШX22KY lIb+M29Џ1i[1iDo"l0KD: FR7^@2e'6A 9ț~,oPV63J-A =l J&\ʝD!WBT*8d R)wR1009NN0@~%b mHam6ڹq}Ch#"IS=䷃\xB@=@[ PK\:FdqZTt,z;`#[TT5 vN)mܥqq)e)8TN泚_2U8b ܳtmv3VB2s^QN/qlxPe-}EƴiUԉpϘl8\shFY&B;6x"B0$ "DF5S"H ~܃uL$b9Xl't-,ʩ]}rW:ҵACWWӳR_ul3K s/8?𝅀A[S'Nz)ӗp/4z`CM;Q8`¢Cӕc;$LK r޳%|"->JD2w$UGN,PPR3Q+*Q%6Iyivr jPfg8m00-!@Å\A)]I"cuZovTP"ue@R΀ rBc(ȔfgaJn^>s}Y2a*@ZP]"~4ngfq"b9É`!B)8|:K9K 5?.͵mX®+Tjd/D[G'DL8rBo<IHi~['K-r L2H65Srds,eQT WS 3܈u26,yD:s..`4s@pZLgI:Wd_- .Pp;쎮z/JDB.*Q7*% ǃIBw𧉙Ӱi{ag'}%1܊ ů4 GpArg6ֱׅOdAJh|smh؄5~,T  8)Ts+Y\eazӵP0zO#/[ǵ'Wq9S05Y~R:aN@RڱitwwC?g܅B8 Pn,]CyR!\Y1DIXV:F`:Hd04A)y3<L۳rlP45Iӳd~K\ }!G-.+Y{t_5"U"_96 QHl@ k-D ~ $dͲG.Dr~)G7KKǜyEtCY_/^x!Ξo8(݈H)]|Yy|QRPEDmRbiWSచQYU\v U8cj RR!ǰ0Q.p2vMCDž01gV"-f6XR D.*9T{eL&zx:ƤdH[%BX o_C0fwD"X|a- $\%UppϲPQS\($E1>,,FibbKpbR_y.1excA|ԍLITI/ɨ$ՈMNÝ'Cӈ7^pJ&>a> 5G'N 8y\4.<\|)Me6};;`pw >r+Dx/qK(pux5ǘt-"LUl-MMHP┬Yh; t8T*ܚضlm9SRbĻ́J>zBI%L n+Bf)k̸8wƉLɳjBPs-qs] 'Bh2C{ g^ RFr8t^Um!7?RTuX16U%jn0c灣qOzYNȆQccch܃4gdKz:ܹ]tb.L+Vn:- x,Qh̞SA $ŏ?G^5ltho"5y"%%Sf_7b,5R3Λ1jEpĬRlxѳmDo<ʉGEP$Hykz2 t]:!3h#wݺQ2.@B*N26taG 9˼XV#ٝ{ >C.LHG8s ہ7x={6.Z0<W "!lid~*C\ |gL=$VGo07F'ϚCws K⊎v9.и외[¿QicX TTVzڠd. ^fPG;pBTu憞BFj ȵnsr](1oPs+"x*lx=^i̳6Ȝ~m?B"",R~R5{ЕƄ 9Y8R^A܊("NHǷ! qka<z[`{"eþW+LDP#uZF!An(lpoczTTdf8M).pg9 l))̤ P"pP|r `Ԅ<=R{#""]z©!Cz<DK& `$41s bQ66zPSjuR4:k<TȎW<*m">Z2Q2Y/-rcN-d$")& gl(J ' ѩP%b w,%yDdaNθ.3(7CA*hZ4X V-aNe8%=-IIihfqID6 ,ZpZحi7aF7#e|h*WmPIr3۰ OdQat+B@a)\>D P)PFoleU` Y9>dl+TN$/1Gì0}V+ =AhO.~uU%p2v`[d8cRD+Elbrm$CF& 'dG1,٤*fBKϪtynn}XDn$)tDR%nP*%s)g%.[`lDGjf0%\;*z)f@cQ>- ED<νx@̤D"mf:%Pbꀅ=+%nO3^z<ھ*IM#.PRE%̣fBt Q.2Y3 F#/̼,"ΎV-fD ,x!9{>.u*Oke揝|Q!Di[rPB@.CP[N&Z&x@O"KG!UK (Ooȵ l] ]G:ao!F ]NmGGE\L&b31]Q3ZwJՖ*\`;./2V"wNj<~{ow טgcnEI,KDezH)Þ:NSJ~q'&@ٕjnF޶AF˜ QD#r+q+̌%ƹAG`c*>?{V>4TnV&qNzl"ܖ 2u=-  =}޾ND(-X$aLIXIok7zA$zR lhCCL-;9beGX$JDh#qF1qI8ƿ3<>{#x\n]54U&5Cč"0V+0G'::t枲 ?K ӫߧ,:_|qI*()̯ţH4R5&~tH$^MU 6Dj `B{udAC88c͗Z$–P1)u0@Ĕ}sh 4QmuGx~,:︴|j1 ]a#?aOǁ#~;t*a$lzԔhΎgLpPdO@g? *ts 9o!)Ɉu\FAfwHHH̝#K{z@o7n~eؽg̟V-M˦{:]G\; pARcR dLDd9_(DĢ˽x6+(eiqQ CĘP J2YYE).gV8ɚ`p @-Ӡ4T|e6鑰4iW3_y,Nۀ 5յȋ 3Fʋ~FNR yPLD~ڏ[YMEgb́hD::ى~ }]nYyuĊM ^~[?Z:®a"!|Jo׳^̤ lAGhaj"+sTF(ȵWX~hh$x`!!c8h4[}k!59 &N78XJ]6]{qr)N_7(*H8x۝bʽ 43pB qV,y?OZ''mh|;{:,0 m0 C8UЎAWEw̿%xhvyt:AP$SPt>+e wQo]Q>.t1,X|t.=%g*< ca`5,HU4]d<3Z9g`spbn6Bt8nh#ZLW?0yj~fɮ\[ %q+wzWDNa)R3sqΕwa;ˑ"+=QQ|T|Lv9]7Bڙ>&1=eVN=pi9>'H$$݇5)j(F9&#R/J&3Ngp.%a{6~hӥjJqmt.Ë{Cu0 g3|H3Ϝ,v2hDwgz:ZъqLh؁62]ڛ049BM˥t_^aS\E;!" Lr^k@]ЕEaȨDQf<~h߆Cy7(uM ҷ_{A l}V?[~? 8za2\IOgԌ"(lBD #`AML#"Ky.=YK59gPjiCf\O{ޤQ8Žq/֨+$D9J203}Yݨ][JTJ4 ty˥@7#GyÃ/(~N\4ܛrH8F̹ ̃!LN:̘ptdRJS2_5Ҝ(=2M 5ᦕ*p*cDI|7R!g`K,Fw/Au4U~_QX2م%DIf3rrugO8oYʥ79ֺP ɛlr~dޜ,#?15<_21tԀO&uu v= >_ t ?:#G%czqǠo[/z~AM٨{5L F,>;k} uַ7u -6W"7QtDDK"2y)ihs%ESRߗ&${: m-ZM2P GǙt] S( r'Z 7W?@hr#NGt!UJ2#MO"G鰞g^Ļ?VPu4cq槭}$x;~a/RAt\<&TP2 IiY*D!&><7;wkO0eR!.5\gF;7R j5{6>ؐ{3fXc@5 UDjѳWF(>Q\ӡ%`RNxK00hP[ADR?ɚC8いFg2reԢ3&5ۯ<DŽ(i7ʝpt>]Lg4[%PKRb%?ɩ-6_qS^^>߹9?O? 5! uYIt0wZ;+I/Fx$\̄SN3.:t|Y#,d\hs'DEjQs݌?a[bo˞> Ww,HZq[p/mVeėp*%; A4 dդ.H9\=i4ሎ_@'=hb AV{,p(5O8?܄]w5N.݄6_ lOCޏ8tvK]emX1㑾G൯˒>+V1 BnsjE'u:V%ewc`9ewh1Pz~Ab:fYm_4ar $~{Qԑ;1Mh|%oO@ÿ`5b00₩s,<,-RA ?"D?Όׅm$26 8εx2Zr֔o|gL^ 8ݗ-u(ޞX\6w8djML(o9ѰNXkް =ڶ*,Nqkbgp69Hv)2<_eB@s wM &C+u>&͞4s>Kc6'Weu;4_)t ˰H csY0Dž_”B Ur.^p>a0Jx)-aAl.Nc&H %#AKaZE]Ҕ(m5P e,ⷫWԴbl]ߋycg\7E 2W,r]]X3 Eu,ԠQPeC@͆# stw]pg33cPwL\D&'O3$ ۘaB" x',~KP;DɈe;0 ۃ>i1d^"p.(SҰ$.[k:2O:~M4E-( 2{bc?" ϐc]c9+?N|$ȹ> wa~ ] NdhCrBF^ 4؟n´~= .Ҧ Uny4;o:d5jvc~l4Ѓ0ɿ3EE nL:h#Re)i:5^z$a, 5(cywc=|YAH?!{A.(D6baBwRvh rOgi>'MO5 K% ^S (ZƿգUX:wg\wp8KQR؊JF-k0v_h4BBvV[ս7TBj1!3PŮ|C0h@g9Bx[ iryrŃ!hgŰwֳirbC¢C@J.-'1^h,KThy%k]4vgf!A07`$=hhVNsIu,0V!䛀opɅ2f0tݟ^-Ro<rX\vgKk07&]ť`ob_v|'sdQ}dQK3LGg(r>* }F@a@T|< 4 ?zE(}9G.Vy9u [H=c (g!r9 ɷ[HRE٥BsԘ9x}ǾRgi3-Κu\hkݷa؈Lmzd;5%?V1Hn/٭n(5eIlF**]˻PxIUWh!:$">"(cEtV"@N+^:1sQ5 Ss(s|R>:]aT#+Ak@ {A˿PE'[Ս[Adn4C]a ,&<"?{AcT s1' X enLX*fmrf@G Rtdui]vv;#"\EQn6 $a6̯?Ju8>m26o@,8hJX"O;0Lece)x٢øLBhO9e,}+{wr> nDMT-CVuv^An`V<8? l g.#Ja+.}+>U l"?*T Xۚ`FyBnTKha{JS1h 69gðVPJcC@蚎K´{1vLtfOPfM@/+aɤW26oct7e fZi(;n@٥HDЊL˜,\:DT/cYk٥0axk瘫ס*#O`.D。 E=B)YY[Ajt[qw2hጒLʘQPTRuƙ >{.5C4vr?%hOUOC=4jE4酂&"Q=/z¢T~"gA_~kS.j70zd럀ae_}gh\VS? _BGR]SPw˩wjm\ ;= uG2 CXhE pA+6sbJ0K63A:/2c̅^rStq)3@?3 :aL5Y@ўLvnʡd j={Qy4mboBI'0.\~ٵo`4 P?eU1G7fN:+}xo"}#VAsj!2;%n\,(B.h_L2'oa|g!3~A !,0#֮=r) |(yk'ӂѳ́ ̅8{e^sasQez-c~!2$aY+Ys0V+J/-eQʔ9Ba*'DLH}@P+PuX G#g^#C_ߊȳZD(FѨ4 ɯ<.K=|؁qplpI󫔝^fcfyD|342}JH?=:IaAY!h'1Q)| KYG"|Z8Pd6D%KIJ=]v&j|uXc?xHT 1yni6l\SMՐU6lu&+,f3L&#Xc0ژ%M-Zvof96ՌAd/ڡEĩ|"w\Q2 yPܻt mz '}YeDȳfĘIJ WL߳ ?FORD)NDxn?N9#Og` k @BѽD]{ >j|"P o/xq-{FouX8f~g͡.Pp+ҪSɋINMm! C^*m^9;*P#"+S3 m; ̺RxB1>K=_fbg-04!"CKw 4,H̟avn1@UZdL$:a: Ɋ%Sw8 &}f&k`B6V C0a`G%CP9h;؅Ji!_c1l"Dxsq;%#L>,RD:+>L] 馳1X5"3ʗ| *Ҍ=hBF뢌|>z "BX<[Z}O3FRTn f. ?+^ c.(ى8<~#xHn'0w]ٍ1ELN0eqwO"Tq$1"ois׷H -Ȗ=71aHQ4(CZ*</D/jupĠcM2|]'4cX֏Yrs JQvu%%Z&RQ7A6ߋ؋ װQ⫲Xo@ּlYJE &z BjY mM'?̢ d N/@ƿB(̽8g0Yo?m[<lZ7Qv czz Y!lp:DDSP۱|^woUg1I86L*ȃqfWNHSBː/A;m}RCuY1ir9P尺~nFBֳ3c&0}wdU\7ӯ`BE4qyVl4?neg A't6Xd.REepXkk10 7yGaa;UB*[ JxŏsJXs]{Y[H?O,B!OW@AeN"i34SRj~h֌VGwKilpyOa"? qᬈTAW:1x}O5o(ܽߚו2cؙ9 ?,5e,^: 00/852\Z*.{Q ɽe\ϔMl7ѽϸ྆0r= \y.!iGR Eٵ]f4 $0SŽOPz(*)9A? {y\:@ǻ0UF %h~ ziiȘC=MaѽsAMk+uhZMD~+Yu= ;z1\3lH>#Axm>4r}h aﲱv:jzf!02]5a, X\4W31m@)8N-H[ZWG?_ ]ỷ&y猰,1-!ٳгKh>/bN.gzmbhEP3Y;JCBa|%J݄߸ b^.Veʡҙw}cMEXԄo{wE8Sܼ'#~ܚy֫ߊy/>;o%} LYOCKƳ %DruϟLD߆Ҁ}eEd. 7mܪ` Y5FMXScNS3- AaK ٍv  rVe2%h~UWc3*]_=Ȳ)2#1ލݰ RdLΆak/31+w|Gj7K,򙦮Ujh,BQ??#oV>2gAN%uJLrYYtovEJF5? ۊz"EYD yG V @L+woKI 膶5?~؀lr~n'CȚ!'A&,h͂7 JyʬlǕfv۠:R,LԧN>>^u,FOIABCZErW̃˜;PC(;p&X<@rwc 4ۡ/F`e1A46>o#D0spt'Cg`M}}UCB&,hRko~-h1k=O.+뀕Tf=n@l 4h&"JΪG=&jo TJ?t4jvC(ڠ֤Ws#)&"Q-ZaQ P=/EhC{O4\)%p^ڈFsF]7N bU.%FX!$΂=1n;ѩpxXvܩ9#lF!^a:Acόo4"H ġق# '| ]>x@uhuweςGbx nM ϟ=.~*=*P<qQ-(1܅&[r}gm b3/eR}ȜW&Ǥ"a{18Q'Ҫ "1!.~Đ;eO;CQ,uX 9lnGdB(SVdfn}s: b/)XN⎁fS1DP 9hI;.3/ANͱ'KH$>g@imd8į%Sq?( Z8- Bub"6 6%T@WQh!PE'2C&":ewS7v1#Rw[ #wMK}o٘zʉUv( lCnH\SE{YYkQO>+]@^&Qku8XdR&N9C{[i0bL6{~DKcŢq<D ώ Yq5Fqױ(+;1N˅R~5y/Db,4RnĘI0 ջ2@N\)c*EM O$gW!M:/=/'fn;eXCF];`d "pk 51h'd]7&d$e]&7LQ (zK*e#G. z2Gw(\BY'TBՍQX̀ZD Ú^shaܩm̂B QĥtˣHTvAm[s#_ģIds[JPT0_WN8j':}&C"@,m&a.~EnP\'#D1Leh͟Wyc2)x,&GdW1(Po1<"O< 뒥C`Nҟj}D[|,{@d cRvP;{cbeBԍ?cJ6^؏K.W"sZLuG,eLMC?:T@qէg#r(A4X7l (җU# SD$D)lE>e,^Io?Mԗ +Sz!TjLY3r}J_Lƣ}la33o6&"4(R$& 400Mɀak7:>ofeHsu+l] 71Fsd>2fe#i?M2=cl- Sac)GUu6 U׾81?!Mntv.J/U!;Y.[P1I?0 #YJXP lGiu0cjdcA, C}dr( 秡:z/drE5;iQȘ?eDNY7~B: O+AD3m6AF|JЃ C:13j :kCnM%8u? Nnl 0yA0 3!wh`wW.} Tg#gt/1{+9S쓜qѓ;B1ZE8'<) Xx} ]3lݷ3 JRCթQ2oadnfL6@W*g*3}޿wKD(iy 2ٸmsIjVhHc)!WXԏ9 Y`)R@fV:>;TkB(__ۏDXcJU1=m[|Kw0(9D 2 = %Kנk9:&A)SFN#,wv8x؊k'y?x柡V ѫ4^%ZH.3nhX.+'8 )>1w:,lb9Qe:$!%ùۑLjHf#F`CܻFK,RZ*゘Szt)PKid^& YQq%̪TtRWCTi~Kh'qm(uf”:heh{2}ף>/ԙ/ml&;hA; ׬o@3D:س9Lhr+1<!W( )G%7m<@!?p /"R>3@"Jaˣ_x;Tg.U҂itu4^WnF>4f{t tQcT(m)O5c0d 7 yF_ &5g VdŸ`H}W8 XC2n3m 3MN4U+0x BNK L46I'Lm[,Nǔ6) Rً3MEYXV2voUNQQ^}KVhcJt QRH(T嗆1P/㿿< lG8!J1kGvX%RQ> U " 8IEDgieӅH6hr;Q ~% +ADO;~—x2G8o85$)Uƽl!qJՕCV$U?i/TD,* 샺P`{,M젌zz? 'FE^s$8οi v"?`^zŲӺ0_WW_2%@RE++_V՛v=LkG-bMhhͼZ\AdBSSb2#G/ Oz䎟$ cXc' Mb7FUWC237]Ǹ9s K!LM(\R93_!mtc"cYgZo`m Z44zbzX %X"h<7wbt!C'6㺹=:o7-Qc@xYι4<UGww⍳{o=o㈛;Ž' Wm'R힏1/-TXs.]Ggy5"H^<:NWpx{ VģVQ 2p<.:Mwɜ;1⹔qs{0~Wmz~.nF8 t,_= a ^$ˆHWoEn02f"QgM, "M)(|]nuNbU!MF3؂m7Qhz4hhD, jˎc,_J.Th1^rm/1Q( b#Yf_*y]ooϮ;3]}^_ #*KѿG<f#S/cAֵFlM"랧u;W/X(=cx`t}LQ 9;CrINТ eWKn޸ř:D'|wp5VX^WAevuP9ʼDS󨂒Z@%"۹85܅:[#z׆WO>-IdɡB*v=36\CN8CVV^ڢWL]ߍB^jcV%ʄh}GO%P)e4›i7`n.T"!TyMB5 YL|<r&.- XUOO@8iw_cEWc<[܇ߏl{l9fFcy/g+/_]>ӌ5+ p'DP-ȴe㚼.l܃]NzB"gE!\n)XLQe>qGz|.3 y# kp:#N@/~rqv+ _S~xƼ'>;ɧ6X(_|:! 7ԁ7^Ħ=ko᫃MHDc,m׉h֒Y~E_&]׏o#gɻZB(9l\O {@p,; N3 )QBE5)P1[LMKM 3b UsTk~2dO#\h4PX۟ӱl4KMRSzPӻ#U㝍X+:X\_o+ 6'm\r2PIkoG(S2b_?x e=8/ۮ tL9$4$EZDy.E2yv?H"t! \вC2䲄t<4wV>gܣ\4M@cLF/gcNLjqieFϥY 5,xFĄT+a%H8#%V\9\Фҙ S:RI@zu#7}_ALEOwb[puppg'߇_b́bDKp Y3{Lٻ-h÷Pob|n. w B /MlQуD%'YF摨;0?/sX2*x=@oKwFNdN ݍafQs.5_߹wރ.I[̓CH]UZhgI / B* zuA[xI_Ag>1]V~ 8zLL JG B [NMC >!BcKGJ !6r߬OpBU:CϞ]4B`_aEvF^GǿFҌ4 4PRX P+λcP TQusF:4pgyFLKdy|79S&w ?% 7@Un]1SkH_J$ᕾwڦº""VՕc 39SUU]11KQ ~n捛1AINp g`t7q p:h@'Qzl hl`Ny1ɻ5X~x?|'@ x!.+ּ]ld!,~!< b,"P_c~s]NxK?\<=f-td,SIƢLku'#q OO_ "/R/߼2;qb񘓢Cdž%{S\s<"`vh +CB 7?!QӌϛԺN"fRWy8Z?w-$%Oij9QKWay0;CRƭA׷ch Z{#(j>!YǬ۱$cz'Ƅjwܰ,XcFIg+n؍G e%oaIйw=xI+qJe۝z4r\%Z} ZNƭ]%&COҏ?ir2U/=^Eniفg{+{Lyo޳nY+Ϻ]t9]z{7` Ϛ.Q+&&@-~-D[> _Tyd(I)vG%8p]Ab(2* \) Dg?n~J<~1Ť*VP]QQr "%&s/a5|Hp_ȵ#eD {S&,9/lK#X lZhha<н7{1:q0 Q$J@ $VQHw?>f eqR5=صc(1c4E(r1lFP{ KQMP\C<25ٸi}HMx>qfbH*\ 9uM Kvho8Ov@*(JCAJU9' XPRŭ/o޽&I|5s/B<`:~6W*ӵ,F}DH}  VP*:(mx7,~Ug5Z⣕DE!h7>N[y,̽hs; 66B>rL.@5ae[yRA1wC3y >8 EꀤI7uyȵVTfam<}1:3KFlN:pZVbm'D8?B^b8K$`N*2nH8Yj?ư-1wJt@ %Z1К@U")"H h׊M\|D/WL"h늑+"?z:,MhCpzw`.<8,-?[)=/vpQrߴ2Yi6hd0ġ1$Ŏm@ bbbBF()N)cH]fI)L<h桰a=5*KqMKa+b:"1wuGX<%!xpDhAhSSm%poL2d:Κ~o;@D?cy}8е+<\ [)R'>fbK&S`}a.H#IQ~@b DvS&ӗۂ#Elqy%TEcyd16y~"Aq(G9\"ᡰ嗙 9msq - ͼ!dF%xQ۲9\;K-t؆3y Ѻ|3v_8(%*.')ⴉ/DbgE$/Eg"\]b89:992V~_OҒ[} zN$qU#We x߲@DOLCAgߢo!N8=O|tybaL J!.XًtbR=+IPc}7iy;ne .Δg+"&/X">'1/KΉiavE)cFsBi,d")Wa\]l.&09. >X<>IQǯ[%?6? 14?UĈ@(cp)Kݞgq9ED"I/DnK7=2otzVc9TN4Qx??G댘LDa+H"^ [~-b;G-'KQ2z}8j "Ej'moiCHY^a`е8mf)E"sY<n0)lE+.{oNr$qS;(lŊIʜܨ8].]~D쾰]ϔu1ʎ[|o|Ɠ z(@Dm@ ۗ_–%7O.⡛L>GyPs_LH>>w 'Exf煹ОA%o7јɚ]'? hM>^gb,/EæpEܷHm'%j rB /-N*r"Kgi%st ,2Šzˈ[{*"&Yjgp!B'1Hť {(la"$7qP,%"Yevy0ƑUDŽ BjyzF͆\rվ@D#~vD#=Q'Xjk7~'~'Cr \zZs ,K1qІ?t(ufQq0v↶"b؈ 9QMy9aalRlFLpQp_X ) v88GgTI`1ESDGVhW&q"`qah$eJJ<60ps e{Ⲟ8v8B!k;K[ΉѰ4XzF.gAf^jppSD1)n2'f$"YX\rO#N*)s\4X35X^#@T8 58Fz80>5rr 1K"ouˑx+HZA↛$>k&>!sdyI+;?չfOCmgj)1i_YZ#.뛓1uM2"b|bOJCbHc#Ge >jZ~Q>sHaF25-A§}˖0b@.6R[s-Ik|ݼ$ >6t(T;%3'׃;R6H$wp|8 Fd\KtOMkrOI{زfVp;eD>Hc=c9i86BN&7n @3ҰPS3BL<ez҄Tn=sjDEG+$D3 %Սyf) -ROU$'.ϨoP´7 -2{95CN+R0lN{%ߞ $)fd1BBbLe)F_^uFΜ~)83í^x?Rƕz`Iȸ#I3yVIIR>N`y%<'$U/iDeol<ܴr# 󚔴r̽#e_d[>9\'xӉ2.r BRVHm$%8y37vԂa%4Y;W_J~NB&i-MH8sR=I] ^xj4& EY(IGV:* R 6;,f3ՋN#j(^yI4X#dl͛ß&[JGaA FR!6جBKW8)Bz\B͏RY@~*҇P7#Cယr  &:0=G`xL_ e^+4ה#66r:˹dN *TΝ1Ӳx,.tZWņ[bC=8"Yn>Wd&D/K]PK&qm7켄 '_|Ow"t=HLI|LC޽ >Klj0_-jf|L5Pxmx?X[]Wg[oBu= &%>ުu6mAUo'zChBnQ- M^a6+z~ޖ Y;֝!S>}"/? ?фE?;o>[q<)NƋ'DCPkWL6[^l3ld@榹8 7u۩1;!&pA 8&^FAV}D?ĭ^p'D%POͿ=u)6FRO^ߐRab|*;.A$ %pGm)40dν䵭~yԇ1D#/oMD&>*&KA f+XaKH|"Iއ-&E64O7qw`Ɯ)`/)S9~'f&ĥŐU{p?=[K<ܥU*1mgXU<g,COS^F.Arl5nOr$9x#! Iܐ8M \}Z\!syN=YbȅITSBus#FpMq%g` W WvD*9BU]џ[:z8Tฑ;j^_Zԯ*ղxx5>K[W_ЅޛͶ?&7FmG!=+z HFX ˙|;߫ův&ۘQK#gcmg~ WJ<@"e[ՕaAӁF4 .U"#cF"#!)% {^'ݱ[J'ĒT l:sAfX|uh7߉T7v9hS)HiهAKmy*$:+:1avL>L=w!%/Ew?3DDGŔ#q9`&2|!SEgaL[#vշhKCnQ%.@b8( \GO0g WvFJ¬2]L?^$H,)I!ٻ'QtO9H3Ql?oEKg::@y!3qsNٝ~:oDD\"OE#*P6Pdi@)V}~O_(#p\6kҊ(Yzqpۅqycgyo=89+5XpZ}|yX*Bu^|8}n)ux圄W>-"w"&%Ҁ )P=vt_&ѹcfeۆ6=OVރfl{t|g ]YcN"{ Okt\ػk (?Ko4S2$#]1f]_&FGͬOn>@.cl'} y44]M}sw?^]҂> ^j6N I. 'Us=aݼr\6ЄKgTMå d/Vҋ){DH9U>lK~}8}lh_ vm]'zCBrq祁z gg* CD4Xc7Inڇ/7f̩ڊb*rlX4])Hbd(Dh2[=;"ܖ_Ňu8QF؂Y";C#Rb-S?q̌p\/Mَ;7\8+f@Xaw<_:1EۮizkwK1*É49|K_B .+>j=ȯ5Mʡÿ4%8h48IFn%?,ـ_e'(Mjq`(""ۂ|_}\g+#1C`J_܂1#o$Fv=ቪOo狔: ~zs N͑x\x/4rHő\[fBnB ,^HL%0.nG r#ӰmDz64ވvNxaK%nnX'5`a&l Ir8}qk1GWg/lCmbq+ˋ3'c gNdQx㫣k<;.q禽pδ< e( y4ub#l; S'Vc֤ѨL^([v O.N䑿%oG7/f5ẀGa Uxv\n}t^y>nR!bL'O-BZ0 _A{+@)ahDFϊQBv/XIyK16NEWG'CVM A[4M^ɯL"M)< OpMٚb`%M2:Q){rcLAuBCCn[.xK]܂X& tq {ԘPӵOm=ƧvƉ8>!ċFqȰ{J+ l+)P<+,+{&Ywc 2F+/U$8jAy9f28҇f/ DsM)&^r^$~n9{;nz6BJB;o5tW[Zt)_Kf]:߿=$Ȉ4;͸D@X2N 4?J>|\8NUA qVa6C7״fY*UeG+CQ8aKocɨcc'" $5ߔۜ-X (qU4lS%?b>(KRnV}N=ޝכJ fvb5#vh}zpיkPB<AfdLK)'9ȝ &&LG47YgU0G,ƨ?0YZqW /mu%8JF@?<5 C@Y-! Ȍ&Z_qxj 1mp{0k-6,]V,swŘ{_X`R?]8.bңbQ8Qӫ_րS/u-I% yMnb%R. K VaLSqzܻ "m !EѺ$L^{{rR//>Y!#]~. Y\6.Oqoӿp7y?8%cQ&qqi}[p L<@@()qxT1TpcYHH]cU3€_.;0W_H<Jd8}z:21tFb 9 2vd f/.D9~z\nN%VS"TT*B.G"]6'jIC7Q)o;+ӣgNY č5?nXW{Ckr+ٰϰw K1_c7ѧCLKJZ|=Rnڎ6ǪדcaO5^zuTfUi#EG.[XnS *VC"~uxp qSN|(z,s@ڊva\QXύl 7%x(6&?&HF\<\G$)zp̃9Ika8Ą.&9VPv! 8pr @D,]||s&9q6"lH<)&W; [D/ 1M}\MuuQE5-ODŒM|\#@l 7`n4TujARO>ˏ%'vI\xbsD'm}n }I :;/ i0}*Ȟ}!Oj!"pôC;f<|Bbr? 2 ݖqyUQHgaÛz\WyDJ\D%?_oBZd _oo 3V$j%izq9Q_ 38܇_a$l;XdP*0L.abvtz߷aӄpeK^*{ M9U DrtMijM)d[cᕣDIhreÝX2$b; Z 2%]78BTHȇAdPI܊Oupr_7Zy\nI >&uGb^BMjXYWV]{9zExv/{]CIl, %)5'^vm@rCZ.=OmBN*Y6B$Gqvܽ(3w^c)f7EgN'z`Y*-DʥM-"B%زy {(/EkB[Di6z.4MEEl`s,r9䢚*jgUb$ۋwOU'@jM"sۆ/ҕ-c)LBad؃>^w < 0G2,.K.5 ϯ_{Gnsw6或 %ypPø_q0/r*|Cl /7;^184w\T%R29:qx}zFRM֑-si40ϓϝi?#x)ԯR/Ѳ"`xErx"tTBq~2NR.#۹EKG/,DygOu:pI+qY O {KRۊϖI {_sY &G IU(GAVЩԞ9iŰyƁ>tkMgD7"ݍ˿ W 8HIsf7/S)em.)pQ0/OmqauP[tarܗuM :^ 3J4sq(|-\ۜzzmF|m&Gl&FF?/N6bϱ&y'*ifjdشnaJWctF^-6ԇz$ ϙ)6_N`ӂsPCJ]~rYBT@Xp_Xƛ؏ FPEZPY py,75l0&֏@ɕnO2[/C@a7:` O2dJlfhqsAic6c )\Q3)?7?B(fbf aI=6f8>= v3 )g(V88z£ >̈CJ~^`2Mf*46B@SRmҐ4U \ gcOⲰ喝nu?1@3{j=¿g uX]v;2 )P*׾]#|T|/hBʪ^W(UM~ y*{N=eF(=14W.93F n8${B}fU42pӈS>Ҿ´CL.Zz {ny}I_PUhNOHH H(te,Έaa?69c Nk!cD.ӏӖw%61(ybf4H[LOCl~ 2t>ɔ~XQfx-}xW1dSM>?M.7^!F+F` >ɾ xN /iӦL|8g+F㦓A>8.[Lj?D /&QS\l~>k!39a,O?I% iǫښa)i+LNDN vxEE*~2Rc>sƷ89DsJZZ`SI<ā\* _rX2eVwTbP(s[82h6wȀ~H%2lfiŰuCp:0`6%±DBPHS0gw!'-le!Kq.6QML!fhD͓!jf%Lˏ;Dhcb/2[>9.PH]]Ha>jp#Sssq95 {{q,SgږP*CeF.?Sm]W3j;ɦ؄VNDsJy1YAрol.ί L(I$y$G;9D|riDbh?-S1r|Ox$ d/Ni,\n4j4#\l0JW4IKq(mN[Ѫ 1" 8'z=~iBlt} {f5)7ٞG+#hexklf'ۃz5u?o+v~X8jS5צ,t&uSLȸ'~NFB霚-4)q2OfUcqÉgC. yY,NE26˴oJ-e$a4`r jCW%qsp%useņ\&ǼX:gHLLGC~1Θy;>%o0yiOO֘Ernӂ1T:J_F5`4jg̛Q3֕6M$wkZHv3_B^ifU9ЋЛ~R Ԙ|naCT'&{VtHC&/)M`kl7סxj>>CiXv&ǥ-N^:0y);ڳ:ʯhWmν쟑"h&IHcƁٳp}47T7&qQyNspSaf6ŪU(%gp C O֡͢9gYg_B! .'&Nl>,,R/ƾaN4ꡭ!oQr`˲% ,Rɏ4: V ǠEY(K˄ zjk`d?@/CVC4& ҐV=}^;5V)T!;fja -VMf &ܷi(dQi(3YcǠvd:%IjkN&߆Jʘc5#2h5λе'AJJą‚1G$ ̾T%@BAF= :kW/^%X&I^pyTkS1/k" #) &/Ik4xq9B%d`b[\Npg\EC4oV);'~ N(Dڤ4)bI7`e=P)p<4`hn N= 9a$;@@ zJƢ$Hi6f~GCqnv-pZ`3aVwyN:$RdPTdJȔ(i4(HO#e yϗz5 iC]K'Zaه; c"gQ>kdU%8HdbjDI>6Cw[N9D*lLe;ܰXѧ6h;6/~;4d/Zp>掚Լ"2aSKC5VPcw.Ǘ /S8w~&Y%"}p،EtbI" si-'ASPf(`%}{H<4#ϿHn]v & ;FH *hf5zn=~ @L.EMMG† |C9bʏ wڐKyCM5%yY:cG#TB[tnXpXX>>P~ (dBU*F uĎ[ۂWC5(*-AY8`p=ҼuCBʐ[.@GF;\V78Ǡ$5 Ξu[!W=͋(&^D ν q$a8/=L7~1!){J_Ҡ\&%UE* rY"S/6dA=a'xHiѠmAM?AcΈ66S+S.bL QG\;^S[@xo waہ̈́?*p`A V;mUWTW)a+%gЬ e-6*l9FJEa.2u4 63,}-6:}V3yr{?uv 390L&Czt9(Ai,`:& ZzÁ46*}Ǎ -]{yR$|݊ь/%2ge!k^ٻTPکtJ &5҃R2,*oHRŷSu tiuXOxds/1;)𤦤 mrDC?q@^(iHS+Q*!&XvR!BPBe@p,6;V Z,̖s&Djm*)*GA9BYcib|ʅ'K!06JH5b j`ߋ&gge@WiN1A/9nze.ЎA3?!&e UeEPUQ%kXEl`,5G@uWMuc' -!Sƞ Uz.4ETUɣ0h2kP}\[!ѩv@U2Q1Bʻ@fdFƼle.qBR6ֆ' Pţ#'3mvDLX pHEV)gG^j֢h!m -8@ʍJ;O_X挤 &(djh݀]oEƉ}v{lJdb̘0 i:ll ~#pdmp+w@C; *L[i3b˞:kAo !o\ZPzc%$ G)Rq0쉉rqSq|0z⬧9\~k4xl$tt^Ҥwn fó=[}̂3³IG, KꃗPU^fGQV¤)2[0@@ 6vgKvNvGfZBK ٻR/tSCcڈWȑ8@S/”fԋKffaMy~?qtݹb/)BkN)Jp0[Wʡ.@bG-I2qG"'S"tԁ& v0ߕ~Lu<6;aIi+!- G͞ig LWPleNB8!Ex`@5k؉q(E'`"޸5= Ś \w]b e WVbZ_kǢ!u&@0M䚻sL<g3N=65^[ `24x/ժrP+Ix Y,1h)* X>01J6 sE12`D`%9XPJED+Mw[WawAU0g|teir(T5ʅ@ϊ,ـLk][8},Jɴz=u[0UGpKɦ¾lʼn q@ %9g/76_;b\!c-mA%E.X[.bƣ('g.2#׵0\l21T4hzլVTDגTXSR 0 /Ay'τƍͨBݸ0l ;Z{C/jl3'oC`蚻;چWwg H dD r8 k;awZ=nڌUM4*KeUm_Ky94%8h4vx氣h@Pڙ|L9 F `''@3dn;3 9ۼ8' ^pE| 5n.BתNMHCthaQXmTFj;v4܀g~KJjV+ 0!q |+p0mZn|ϧyN&HVa9NR-k*tJndlƝX.Zeӿ*":×٫2䰃Ru 8H`lT'K.%N,IMəPӂSqqgK}R0փD>O?R'N \9?<CUc  Leg M@YZjX*L<&DZوNf]u͟ v \e N:J:" C}ͰZaqX$9{ȣO̗wZXXE$ J5y;n*Ɠ3Ol,$?Gz/6%nG6XG90j6Aׁ(/ŧ>!`H2n*1|& Gq44`lYLR$)C@;lڦk}~+#O;NjePs;3%w烡tӐī^JEwSr&l! ;g  <&)oh΅tZ 6%:7u,b%}df"`X8f Ci1xvԩp!%rh3]YC7L30*;>.+{0 a4$I7(JU݅%ҋLZ˖-b`:v]A(4-dG>(U*ui7~(X9mž3zD8󏝆"dde ]ce2!I8B ԅׇd<=pvlo+4<0(2H2pK|]t?q&'kas򷟌aB >BHeb朣q4ٯ}ZlZfbڣL.z ``"VS`Ew?ksQc >D5Iej|A;'<<̞9op ?-?(QAM>F ',^\6 h:T(x Rhrj&fUM K&CN>szԞNT@\.Dj m6kf¢J4C@;8ĜlC " :eC3Y GMƵPC`210H$Lk[2odq$KIo+}MH9`P2baT,zϦ(qH'CqTU9JX hu_)e3mjM_UV>{'c`j\. % q'QP5Ğt X1ls2P2 lj%rAWP@c#<~3jkkQSSa  Afj(Ν$d@:3|@MAdT~P lPf8-~h.r][9H32H:(ҋ١g`0}ݳ}Un,Hs0؉= QPLG߱m@G] Ξ{:!e~0)'XNǶ.5>ԙaﱱܙUYhoCS oC7OCn%{b|-?]tɮ`$T%ċk-/uHxVY0Sli:duM"g*'Ejzb5-w1Df&٭1uHg$4D&m?Kg%@Gp2 NZ`z8i4O_8z'җ#M. MEIKya |+܏F6W-#|'y&j 4e^Y an0^4}ۈ]ȕJjQaYNi5X2lr8v6lpw#cN4ƀ4 \f=i\2v׋!EEŘ` ʐE@Cuπv m 8 ZlLCcwKA3WTVT(,i@FL-*s(@Qa!xbdq4gOdc$0AG1c&3JNF8pq#hW3+9"-F8 & ̚s4**bU8o;e!؃}!oZ'cjs ƀ O#If!#) M O* Șm25G,h\J 9಺0~|YfI?7Mǹ@t륾]j+<2 ̾酤 ,>frb6"Yi(J'9HIhC7ةgA1`@lu\3i 2LF)l&m az}` аO#z5,^~em&I6|4ZrF;n%-!䢑~R9uv$]HhM7 Z\M6M zNX;Hpʱy9s,zz0Lz&lF i:m.ҊFS2 ;;yNkhE}}V ϨF9&wVN> q3#% 2b9,N92TaJeƕa a0m6dFa(H={ ށaLKDy+ծPmcڈ{QM4[K@Q'YH/B~A)/= eذK'{ I5Λ٠Z:6;QѸ!Ϸ[h09< ufմ5BÀ7MOR^""[J Pܓ ީ9 <(϶S&w4SۆEg4P$iHՂ#1`;O0${HР5gg({˴8|=v13=yD/HGNq|"/Iñk^B^#xD .!ͩj{ 2q)Gj\Y+D'l݉}f'ƗeuAOI_?&AjckhahiJM~"d1AShya% Myi&.(a7d@jZFFޜz@.>B`֬YDd"|懝?`z'EBiL$BNt%P8!+mVجftM-).GK µNL5LĴXx -Zkb4X !kL&$23Y{ɦHme=ek/\Tyc1c $ .#5PAƸ"kEmKMVX׌;p; 0L*a\8D'c4eGw PM#hp{mGna}(8j-:пOkE:Vwh/CyINCp6~#4‰&bFN% + 2u]°5 ,v{zA7A ssS*늧D}/C %R94sIULe|=8T_K;9S34KKz}'j:DTF61n5׮(-ٸ2dȑ(X6Zt 8@{gv<=YGLfhbov(Lu!}B s=6?d@ii)N=T Cw߬>L4 h5j)ϖytb3V@?42Vkl%25xvd= qʢ8裱pBXWӊ8:m? ]%&ZYJ]2 rت'eb&L4Zt܄Kϖ̛&}k((PEURߺ_Z-h7 7JGw7% XJr{B= QMm)C}aIz.ѐȼ*˿ p"hB\NtpQN{)h/<I_I*T-L٣|Ytc[[L@zOS{O3Fn7 !"4v&$" nGA4L9|`'B.,"%+TNXιO}*$*ܾ{MCc.ф28Of߫T)P`Cf^ngˋ.֡>9z 8⸋!3['NdηvC f&3󑟑s>"=o f.4}v iI:=MԖfZ14CO'R;2}&As>ւ {q=i.رW sf5"W1).ϔp Ҿ ,qII%?|,Iscg-+'ר0yL)vha dRcuP$Pl)?G0bօz `]u] (kGk{HǧA@2AxYdPn J+` w}x';KCBr0jg_7o` `#|/]  \j/vDZԊrvx0<]M'Dlr?IU{ף:y34'aG1V^vNx9)> ݇ NDE^x=V:"?ٟ? 0ZEMh$K TXˤnT@A$V,6TĞS҆Cӄo34R,J҂,i"So 4R&]!òOf_-t(Pq´3|o anoOo`!"^̩&WaTxL4 {woagn],ic˰`+]F -v'H)q'c$ )1*u[E/wFX&+SvVðր 25;{Pcln:ڐSŀ^S~{C\ŎD+4 IhZC,4+\*g/_ޓp>▝>XC^J=}Dp agH_.f;%lIJ,ه Lîd1r1lA{xJlAiH={Z=jvDkvZUI8WQudQV6;hXz=ao GSN'.)ydf+ǑvA䯯Ԋ׸D. tѸ+8-T1X4-^퀝0+]N OLB3u+A-([Y4͹dl)!?,^²~i>X`Bэ6,PtFZp 0```|*iK&N}e*\-'i) i(ɗ0׉UX}kOѣGR݊ şwBi2jEkʲC0CY"g3uDϠ;a%fwE_ `5r2f2diЩdd ~L)ס0S}4Qׁ|υ+W¨;?jG5 @ǐJ-\+d.] S'A@;Nz; nM{{M}err۔)H_\ʞwk_/oMKqhDQǝ;mr}*q1`\`*@,סvN}3k dԭdpω!04nucKs1Y̷BBs8IhZ=&37t`GMZi`k1CTJ|>Rr3٬ .4w_S2: MX0 yi>V);5=%x8uj*" YXYpYMB->ueKT0%vAkW,qDdIr0+^$_/.? C9a㘞M$ۻ墱 tA!jobL.g@OwQN3)Y.2 a \0 &NN* RRAzd3C$CWCC[2_ m8z|tJɼbZGL7bcn,SZ;Z?;Z`Oy!h^$m= @r%<$n #F>)Ņdנ4;;1m/)uv\4a"Mڢa33QU|efRCErX2´rA6t jn&psOzs,^)?Le3eG/B)590FU١ᜑዝG.[힃hۻ (Β13Re'm>98~LU(hR +$I^kuvFPڅ-LcAs(#7Mao'5.R2*`oܹsYVi5f@z&hIi y$'ٗ["L~Dz0d@;Kᵄ5ܿogK4 L6)Vlk104{yPr jGs8f`c:4 +Ep?E[)Vuv {쾨f%1f3.͛6-F7uo>S5Ć3`awJQBI)z}_as`_Pt[6SC,)kL6*݅!O:Yye+IX3g7O*X(%cMH.smA ߓ]Lun {Ocqڰ9rp(cQ@yi kJsAVx-==Q[wl2xRsZiN^ByebEk\VLIu]TN^R%^FJJ~IRzXZcGӓD-YOLJ's(ʔMjCt:dxavN eJU3+ N"ZÃzwPPòKمt6+jh[s$7xGRڼ;lQAOمW F~={w0ϩG3heL7 E9i3mI.u57NtlrNE6i$lݺ~ CQQ79ϩD ,LF[*ͽ][7 2&%W/,h/tI~kA^]LH͔)%.nm`Hg6YW89`J1zm(mddbjeE&qf;/œ4W˶:okM}?ЁV:['RBnxH ?'jRPR|u(U^ghx:sb!Q*FUҠe0@ 944dmPl5<'LvS= m`hY+AX(I6R^jnTB=QFk&jLI' J)Wx.~v'q.¡htx<'IX8ҠɄݻw i&~-\fNr#GDCKOJ3/"g)i4|)(OHl _h%HTf/i0 } pN$; 6}VN=X1tU۝ung=/6.Th!i9`cpi p(0Bg(Z3$x@Y@ݟ'QU)bun3 gFJGpen%fCMpDj !r1?hFK l2"ƅꢼn4*]Bfr*jJOOi"1|e D 3Pf R1鹁`lV2Aө\&g@MзI8sW@,\xz uz>n*|{,/(;M0TSٍ'S*PUpa& 2\< d &85im _qg! !+dB!o[Z<먦o&=Tvqi^5뚱ZZ"u@Q<ϯbɋuIfS9N Jm֊癈If5kd}6? _R-V L(ᩄ4Z𐫵˪Ӥ&` ܈yPBUkAn^c8=+6[|1*H41(|1J0KF%ތ"YzLPvhInj%\5He[|(,jSwc(X%w⪼x"$;:nA|Ujq:I8g;_8}L]RSׅTZ]hQmIk|sԢ+k“2_-[.uWf,81Ubӹ Uz!񄼸G='?!yLdCG3 C%]I .d~Wk$.ٌz.+!qO[j\U8(n`Iqqݰl0p -bi2kMմb悝Q8-i._Cqv ٳ}6ɠJJH-ue,AMWV5-$w?+!%dQs~&u~+y V40w:gxùiibe+ʈMrHFjJg:+ iW3:=D &PQ16^Z ;qL &q'DzڊS p,nE&DrnNbI_ߐBsMgT qT ބhV d&ŝV ^|1"ܖvMH ABoExTN˅?z7OG.P, !n M&-,HФ>]4,Z(K^jё룔֨r_wu kΖN=7 xN(!-5N .Y~ /^F*2,hd3"TX&45.t0q/*/Vh>+ҡlͬڦQTv4l@AhiSfJo^˛ʹC@$-%Ħmtl /^EM2(dBRKJ"&IYUh5f\1>bGi.E^SB1fz4:|GZg ` ,i #EBWCTI ȝ;6w62h!R3>sXE&$Qq0DE\cGK  F'lq471X3GC&ѓyK>jjtÝf ^] ?¶/$=I%ek_2iIkZoc68-NxvːӮk97\QP+W2ecТ;%&#_(X2_c#/X| y俉c 4 ǡ}C+ȹΟbm\N(?9""$XL](:劆D) J+C͈R9{,rYq\ayJEe{~`nSJګ ~W M sO)7qhĭV̈́AOB,֤d bHG:aaxD{{B31DdmbM5kyzh.rLbN0):Q6S(|Bb~}A0ϲ&%VIE3ݓ%XHXH"B#Qnٹ}Ҵ@ Lf>a2|JԸ]ʘ>i'kXè$Ӓ\ȿKF&{.'9zF)B21?<͂ !5%d- yK-+f%d6Rdoy0AiyAiӑ8T/>0lк$P(LAuR7oNޏwѺ;km*Ѿ$ ߂{N2K+t:|vI"*42 yE* .=k2r/JqvI NZ"21=unyɲ\צz o޵OLhq<}^dh7]Wk_,P27k^P@(6!Jj@S$_w)')%[GDa)^fE236Giv۲{4sA4썢VK|R9Pˋ/6o#8qֹ.2R[@{3g`ݺuv_=yFmj2%G$wR` sMpK6}S8|cS>m2&dq}ռUjne ˸3X$AhNܺ}EaDA<^x@p߻c'7WID%;piSI|dTsU:-{Bk]&>w:/g 1亝[d$݇/Tǀs?r]@Fzӹ>17?H2%GаfDpsTYh7# +@9?"W"H)3y -kZ&ԋ/5B\&]J'7TXɶgbF *2?P+#sˡA:[SC`c$f]n92"^/ܒZ m55eQLݺqt\MJjCZS,6>= ,Y^B?+-F12Rw G5HwtWF{8߳1kEceaYg i uMj)90uupZQˋZ2 Kki(4a/#B-Z^5uhki8yy/>4mNE~o?:⺽W=: ֫b6&yIYSD5Rxލ'TZ {Q3ٔ35&i: DչJ*s8ٜ 8@H^]K/#D8uy9[Mض^\LVsvd4tbF%06J9#[h\LИb}#9Q^ex!b[M75)j؃,@Gs`2%k0EOƸ/@8.Ƽ$G("{=9ofH NQYf^b#U36|onY?O^K~/N'ޅuMqzX)9o'CW `QJL]$)9W%I%0C*Jb<óN q{Vc QV9Va|ɾ+ C͉FWa*ait.3ߦ|9+ƺ"-HF%fj/vt/z:M.{̳ESa'°j 88 chH3cI8hn6o akh n,=*ĤX1 Gɺ]l; \'E,ˁ.vrTSP\!6Ak"F#0.w}7gj&]7罀SjwDPgؼbSq{QMF|c7<=ÈD9^GNTYˊDUs#:eu;h.RBZW Fğ߼혚gۡCUz{#>zT% $˨C&/ǜE2fdX&Yo$:3tUR2`C=IYEC;pE_kDBK@&AVIDf;!ہ؅ZDȔKB:KEFF-).0g|—ڨ^7sPJ6VǼ"-WˢAY)L6Zč xboQԗL-FqYc*IE|xf6(:m1U8-V>[`)z)ʃ+ce8dCkGRi`t"Fݹp}vh׷]6%PR*, &T3l[ZT]Jݧ<'(@~m)jwCٗ10@K#9Kk21`c\MDVYDZӸd=p+[ar6 1)&K?q]wo4VCqhRhq.0ġQI\!Y[v`6 Mpk>qiZD}Xф*%-ShW-Mxuk42A{EL߃G8 &x-F%uHHNʚ H4R_ &ۿL5I3H-R?9KOEC^LSH1aתrkB㭭 /=m:0'M45n8iq6n[ԻUH[66m@ѲT6a7_hQUr7,䕓(%nWrTCMfM/S%ΤzMlv\E;h:Rh !,cn;_6Ge̖MXЈsb8IueXҦyYg)E`^LGqebafPD#\?BQO#&2Tp~ZGH]H.W> IcQ_A Orw,Udq,ţ'eSR&Ɩ'sUk8}IWwruy!Ф]{'-,2{<V3ZZے\ZH*J]v\4{#.Ӥ۪{-iTqR`Blnٿm-6r PZFY(Zse~ux9Gk5!2zQ$HO.#OG:eX mۘ^=#xl^<ƙ I4YҨ2f'j̨rph 9uS37gF&`9@ NAV׵S=BO;Cqˤ@нȻ+Z<7g^ؔzZ hXu=Q#)X/]Ď1$.tpm5Ma5 0vi0+Ia&Ⱥ31GĺI`yZl\ށ+%\'I-Fp, EhcG\+&؊nYQree#ş\ #O-V*]S d)bGM{:htUc ,6=KV`K =~x3$mZ"ùn86k1_n2 TD g9!J_i|p .6\>`ɗQ!ZhPt EX;% bjpNﴚ7Y -z L0IPW`1k6 u9E.1w8w}ItqX^Dċ !iaĂDK2N(vro<4Flܸ xu[p1<$@(NzDԥPm@Ɛa EvJrg+- 8}d \ؔ8C'6Q[V4bMt]]p/#[+6%tUln55bR/qZzޡ&Ǎ8Gg e!1хL4 ۯkmїÈE#H>֋0`Ec T0z{r'\vKn ٢#iҼ\ǡ7"Ep PF)jX p=Ad i /2]bj!!ۺUطw|Wp1DLHegW"i |%9?S d! sB{Z1Μ^7oǥXQ;Db"?_+x!,G5k)C MjFJi0 EQ$L*W͎Z{"Ĭy/o@1tD345ɀr&BՁmWܿf3bbDEFiX$0 Kqsx~vΖ,,"*DW2?Xby9e"ϖ]s'ėg뎏ej8RIXoH<:2#-֢ExEĿ2 hF4nF&a|r 8s 16n;p++*,1> &NYU℈ATp}m 1Nzxarcy7G2<c:XmNuزm/x&DFc&eW1h/?F\mx~&9L]0_37Ҹ4FHTT[+-w 9B;e T}Э00@ɵRn"g:¾t~BS^✩W`a#{-ldd?vDQ/qSABwYm fWP6,w|T<&B^'Qms֍s"wl-$>w4Uvn3Td RV*s/]C2?"x&3$ l =rqLRiPXy}?7 CxbW-3>V1 ` S)Lbc0_$%teu؁O @7J/@d[q`8.{V[YcJFk)zFpO yD@fŊxu$MsV2r]i#gŧx*Yjsip8e 'A_M#_4jy;[v.]-KЉsiua20y\Qw(YV*"jkF->w ]Zbas"-JABLqU S'_ڄeˑŕQ zShQۢΩBsq` IΕd1갴 u.+(b-B\kފM[v4%ѳH'9/u42b!͠f|'đD(D?I` a7g)C $ri0b1hbZ-@(h].X\=Ob߶f V/i!?WPS׀:3H!3;nc199 fNJ Ya!7íՐվdAtѪnĊ6\  x>޵(;to"ɾ҆+2*]a^uQer23uI-N`K/J(&5" /|,c)ĬllƎ5,&7xoqy8Ù+X\وY!b0HR]=%H­TNem*\H3!z&!aI+ /N@-YN:AXh khUm@B'{=˪x0ìb>F!PLǐYKպ,hs L  O>Ɍ{_ vIZшG&)3fRϟhur|WL5TfDNfL.v M2y$ddː6PitɰIbVc˪%ظUa{nT73Q e&03{HdR ѼdZs~J#i-KO. I9@oo(XăP0nBkquM'eCK&&WyCGUcAgVϘ#_. 2ꋋc"rߧIdz0:,;4HM&R85v_%IDHEy \/'pq4ㆎ0BpJny|aFI2k8Hon%E3hp[W W;jx`3|5oϥ>6\|=E7dmƒ' MwdEku]k(^ eyZҘ40a]n~yi" N" EKk~S4q-aBm+U `)2MW*?s7!$mvrbh6W1`?WKKpnYSLy ڝau8uNyc~FXQƤrX318SIP"C/%$?o/ IrvJ9 a?,,-iRW9b|y<!d"Y#pIhlIL$c0 *<㶛`9N*MēCq*ږ]? S;vjQOoz˻)௱نM+8>*̐Nu.ϷQ&!2ߧ &0iŝ6S=8seqO-Z iZ[(<+6Z߸ h ݝx X?@ $#9ruFp ;D&0<dSrtMһTjG{1HL>F̭ZvM6$LFxi)健J; peh]Z4MItIb*Hq_ oq8cDD_"Q9m!cКsX(uޓ*GF4,Jpr^]ɃT[!kT)oP)Z"E#;<0Gfexy';h]!SӒHy2k0T/,j墔H*]Q9n8ċiWHƅw6CCkݸ'DC]nT]Ujd(h  @jE'Po@Ţs @S ުo} @&.QF!(){lN\s-৒&aF>;0+Nw=l \¡9lzԕbO]0!6Ū% {p'ΌV e޻ [W7b`t G.uUhlY: ֶdݬ <Zzm qMN>.8I+%hlul>7 ý ) pX"([M:Db nryeaTᰩ`Ҩ_`Qb-(N>N8)(Lq1ZIC_Ct 2ra7aACAm xҏFpwk + c,C2ޖw}F̬41)mW2J-`D T'Zk .g"Bj&zCb(Xpƫŋm]ReOv]O*%$Ek: gO(TV)XV/haH 0#ۍ P֕V4f.m3q7WZHh2xы]0iF!CYuujĖyL]Vt%o $b285@4v9Zf*_Hާ 3> y_G!\]J/+}fCz:0ѨF{쐕.[&!UH4Vū88&n S>$ bl{B2:5 h4\igfi&ek[ϓAEٲ4څumIaa7e_;: Pŝމ/*9 ae' s嫥gP&jo8:vmZ^.م+# !X y81d6>cXDTPc.6x_ 1 ϮhKwSeⰦ*A,dQS 70d`Tô.34ցHbOϸo U5RH׉K]KdYpi -:s>%P[ H)1*Nx(祡'@]T{vI7F׾FͅA壨qu*Zo~=?qsGR D.&ǒ`0E}"D+#UZ;9U"Cϔq$,5Ƿ(^n|>wjE[/܏9z(E}aJ.D>3'p﯁u:f?GN#VOZL<0kྭ56TN##ţ/<.BT /=#W}cm+s=]h}c,$Y"m-f"}'@c \Xj\ukѲd94%FD.]Ǭ*N{yΰA Y$u龟} ګ6`1\UNyDg*ΪҲ%H/jLˡɋq416s 5X̜'V/uLɄ8QL>>WQ6~]Fc }=}H>=O1H5K!D\a.3Lo*FIhh[R*s,%^RPÇ!Νxv׀R9$groKRlMx'PY J ý 0b]sGE`U;p ft\E{mwKReڑ(^6-r,⽼<5 *pJڹM&éiAc8Lv3G:9美W.BB>7sc4FL T]40s2jf3a@i&D{PZ7;)1q4ZQ=U|HK'';՛cQ3`6^>ƅ>$\y`}G7L˚+6x<n Dp ]b1]K2/ gx7aʨdB?%/oUz8g A\mHD]Lj&3!=OAGc(K )q}HbmM rl9H):c<5 #hM[v]~dRlC]Kzm1b*Bbt{/X^/ -2RlEOPl(6aJ)"K2W"sT&&y`D=x;;pΓ}+KG)X?VԷà-ʊ9kn yK2 ,ޔ=8aTމ^ֺT ^E I'NJEEkV]+’VDFg?D?sU۝X.p2lĎ4C1NįkPjnsG/Pjڰ\ 3!t;\ %]АgVZ7;1zV<7:;e.~NiE2Ч񦛮/qE"gH.y tZ &ɼ|yww2IKZָ0pieZ3C 9I,ŘCZ%gH#Y+R+df!!3q.3/O᳧^DW܏kqvM8|D*F&k+AS6Tg2BW'  cu]nWŗ3͒c֍vhtJOeW9wSvy-&ZH%ȰQڍ B= xpåV:.]sT~ >t6Ț *_F,҂h#':k>9TdVKOxE[`vZ/ԞIKqO Ep\\k1}q aVa_S;MV49uxoZ\=GH@JTc2X%&DD_@P+,@ѸE) S iC k& ..%vaCMzxV[,ֿ0DM*MG<GՆN7cQØܕʔFG ohФ P#@ eO6ݚhL4nn@^ 8 bF7֛M{P ;3_*6$m7ZA#5UNQπ!F0j_[ǞmH U׺&yaPlXR]D8e$"*eZ<`a l-MM/Yjp1 <:{L:=z'sSzOȃοV\{qMq L @XBi3Qg@ޑ"岦fAb)%RST^ƒq?늞ɉi 8iRU+oſWlb06 Hh<~jTMt]7  'h LDISCd TLK`s Hh:J6 /PUD5 bE*ntD)xF\ЈWC}p&\u:b$Pe5 j#Iҏ}tz1acp<8++́*K*tU0mX;f 1~ #V3|P@&%uܲg;6g =go?O &f0YݸŚ,ۗ m`u=z4R(rSu~ 7԰yIDo? xESAhZ1Μ׸lM@ou"E{ DQbSdc :eT:8&㈹QOOɼԌTXiYmew`} VePH"c'J/pMnedx/p$gd+bm`A /u6k,?ܺpL{p߉'rBF5B)fo}䣰Ls`QS,m^[Ey VD𒔵/{_K WNugKPsG-GDe/~<1TeΖ ruM)@ƾ*i.ENM5DGB,xO8L;-FbKL~Sq;/ - :K@8. $ "Sd jƶh+N P"k 1`dr]cẙݲCw'GpQ9ΕujmxF8} ^rlQ cbo2Ǎ=ف"!i"&po"{_ fC㤘aCH_~?GVHsR%h@ q>Qq诇8`P7`Y6+2'1w95l \D-$B*Yʆ翹< ;UbDYe > ou 7ZVׂαy@صlSs ؎ʼn(GZĮtQX`E)E,_4*xH6l] sMe9.ıN.7L!cDBrTSNj^[Ϯrܸi_uήsK5^b'}Ѱ c#^&cJ[Mc4i3۝l" W~`Ip48<|EЫ;#<F)w|*Uh<{ mT M10,ص^͜:?^\:ۅՁ4M#E{{ҸF!Vg` :2@M[5nص(EIxx"Nw}pcfhٻ] ň= h݈?S~t=߻/V#ՠEW%JiNx18&` UG2>gMb dX UVKSN=1,+'j+ }])FjVP3VSb||?-Ps<`瘞+ aw> WE!>ۆtBiԳDC!e G{潂r QB7M:k^3~)#a)f nDdB[4,z(-^SW@Ę$B;j23d'~kzƮav`}*[.C%Sg:b y$d{c-FdZfj0O,')Ge*X Q`uɨ4FL!.1~6]':y<4[X' c^!7r)V $ePE#qд})߾ ׁPH h=(|ЄDHDhOg"=ˤhoJ#-[ 08r;Q[놻ʉzvi1Z \BAiFN(dx/W'؜&(,Zr=HƫY@CGjLf3&5ƖBd8+~/D;`iuM Fϔ}gjB)K;)NdKURBYÓ4*ķO`A]c `A ćϒ%¤{j94gE55'}I| _K_+BDrB,1vzz+mΪ,=`=|bJ)+|^M.B(p f*z=£Dn>y1nBi%n\lWw& #^BUl_WxQ$JV+-VuM](!PT房B`lƬ2ȼCZ3_9.&G'l"˶wɮ!LlB*& b8’yVJW#/{^yϡVB%۽wǍkqԍf.o0zk  ~n rtdB;wW.BDEnqOu6k9Ʋ†HX.y7!/ibŐnقP]_=W6YesDhsP3Ћ`CX,)3s6㩱Bgh;qgJ7G<A\gA Ts" Ci<$GjV2[.R+IN~=z<.͚{/vk^;{ÓOb4>nC+M$K%E`&Bd09?||2:2cvnxјQ&z0#kHϛmvHN;O`QiyZc|w.qa&0 Z'ENߣztO2)Lu Z7໒K)"*aa_{shes<)Q%PB)> zbSZbx"f mfu24/8 ePR>^tjSV/)Ä4-zBH/g⮭7Xt9[\Easp#l~!wFG]aQ Atre!rܼתi *$"ߏdF߆Sܔˎc8ɋ̲/Uwx0řyG39%>5.ASbe}omF6l|na)wz`W|8'&\FW#"lE -N*ܨsA/ϧFwS^}kq`8tj޶a>52Y9[s*G"8L<,G4M:7C9P;j,[4H) d ߺ~SJQN <}x@6T o\ |>HE0~`3^~jKq_RxU0t`얍eY_OyYsye`zz=)´݆eR YˌT GGYn8&z4)vI|#kLJ!|9ί^ƪ\Ӻ RCk`R|ŸF/du'~^f ig{sRBF1qQ|xgϒp=~xpoAP ;ާ ~^8>`/.\x=BSOwH㓓?zd7;-aY .tcIuTfՆX*q^I4ǡΣfY(טT7z7hEdz7S-9{hJ-逡T1 33Z[9Ė ȼhWP,ӠEw^G”} @l<x]>nZhL.>XIh/h]&@KL']pt#L ~ md i(f'W海u'1T4Wu#Ȱf,%IqGEaGHIٔ\I3;Ü3mUݰV }ZX5)9`ݵK}R 8́ 1ULҾtibYfò/QſBcɜ~% ,8.,9Dż3gZ ' HR"^D$F-;[aX<+~<x^e,>.Q%~35?gC9`jX^zG-p{'G;_{;lb~ i"YK\)YV akRx/pW훷(RAYab{ڟ33+knZ3ߧ9.Jϵ|c>(l(=_n8rXg7J#KD݂ups9^ `81T/#nmF͵Ihsj&%M.0BE8+^YI l_8{H `1)oΜfg=eCXxlu.R+ X򯕈jz' wyaԘS&Ow-a]n_HdŴv 0k2a؏F\2 ē=zh5Ud´J-YSBD"ZHhD] 8zҋ)(~i-\ Gc /πL=%dYik^J5 K~ldiFeMZVq-3<ѧ&LK,L>:aIs@5=⣱\EZFQO+d!.PxVb$R,)"N$4I,4o6&= zzxuI78cuQZ *,=슪ص|ky—ޅJ)rrT1I|eYj'܈٣O A׸l2q> Rv/tǾeD6\TW4=u?^j5EB:Yj*>4nĂL']Iw6yǁ@IF~JiULrGӨ{sXkq$6Ϝc#smL D1m]5:R^BjnccUr-gc C^ICY{B\/Y<ɋ*3嚙%q"P@l) I5RTiOMTLz َFy;U2U9p3jhxܜ6GN1&Ij(ǐ(1 Ae;Ka[kc헱,? []pnw1 w܇hw50շAeaj1s B)HCn8ԡI+9OݳzɄ'W|0&H,:'tyA@&` 6ðX۬7haKQB6 @ O{m_AIW !BH 幜w6 {N`>W=\6p׏-œ#6Ӵ`˲ .(Uk-O4_*T\,5\DGWwc|%լ "O[udr0(i;!q4:ԇ)ܦg=@J&'!Ω&,ӝ"Ŕ@ih0-Iڧcq𺍷8<*}D0ׄ ̇LF5L;B)L8{VZ?wӼXX h~G8/_1!Y-}O!u w6wzdP2HҨMkO{#@Lqm]#UF"T!"qh as0RMC.b$Q硛Le$捈"ǛQ;rNePj|*Rj/6 DUmuC`꤇ڠm΍F:}ɬf{ Lan1%(JQ _<3ֱ U%  I0NkޞLJtX [e>S;@D`}f_du9ˤN 6ᒙG@,od(cv=|zpr@c0(:$F`0ܐ.ύB'v5ons ^O)hs I`Y[H /M*tEw7Pm>6{1|El7hV8NJd2 4HX_jb1rAy$LTqr27CpW أ&Mx:LG(k(>L5plpqߴ,u R_&B`Pi"6 U]S ]RK YWx9UgžQjƧeN2sd?<%T4w4³oʝ`jk'jJ==֎=:̐=Zj&"EEdH3?7ϴbݹ#R~r6fx3D̽2^<]8ŀg/V./˸})/nOQHuʊRqW¬/%'/y8LXJ.Գwwo7fs皋ĢxP,L7l+&4Cgwx)\nRQO_x$$jĢIrb>LMli=>ХFdc1}.E6KL6]S1Ȉr,Xic/%:7-hA+#C-&gL!栃gW쑼tjQS4eIsN6:eNlϜcCxql]Ҏk둊Є@VnƇv51pYDž$~of-ΐT,_qۨyqCmz{,{Sxhe=t~xTOY>Tg IHC鸇:XmP d*9 "Owˠ*}`  +!oX}-v.y1 m F Vj |M@N :XDX;~MFZ)'30k\܈NFk{l#0 s6ubE973_;B4 & T?Ւf0':ai]ꀞLQ b"Ql"Q—@TmedM }.Nq rtء}HуrunZ i2]eb4؇=3,V)'ɾg]%g$teCevMMeCO {apP9p!Iw"Т*xS}ZD6*vH8/B_E;d*#XӰdemʢb/ hF;#bB,>)rG}c__ N;Br Ł9z 9yܥ} b8;]9 4=o>7t%Qv~@/"Ƀ<;T8 c-lLFbH҈yq}p#HyԿ't%$_cYjk{5/RX3 #"_tt\̗VNҢ"J wbp1¨N ˷ a]b#wƃG$O$蘠vD{%o/`'zSc8Ǿ GkE/sbn1roW0nk`"䪲 J⤨_($r(\wSY\[-w{8u ihGG1]Lǟ}&0(hάGF-| #v8lDCx/[[v&`1I3YJE?ΌTySx@sVye6@hV^{e$ "SKQu\YM=\2;sq#.Cί$^IХK\mbBH%C.ph"20'AҮV-G >RܞZn|oƤF"Rfvޱ0P"V5?GIٜ ~M?0YMu+uoR7?~( hb#mC%6.6nBK|)y9Y ?U3JtX,QրivKR8&9 U "ȒYHk0P?FD}滯wz2ؾƅ(sT|DS{ְ"6ԑqq74,8RZBt( )/WL65al03!`3oo'y2\i?"ݒŹ k<'I Ґd@^j F̨juqH&R:"2LՉmx/!tҏ epH/Bԫ9-&{KȀk`J#k~1wPg$nW:+Bd{|Eq|rT }ʊ`57Nv5PD '&1Խt>p,iP0vTFW ,`%5*QLαn,]2 ]sdHmD&a31X!| V8UHe gO|EJg,@V}&x~'w^]ɏ2CRL#݇K.k[ZߵDX60õ =τ<4&G Ҫ [>؛e:ɭ7I۵8sIt6~cvµJ$ӈ 0z`[[r{:x׏I+*w`aLeAZdmV/o uD3ʵDR,MZq3SL8ξD1pF@klg GZt j<%l*UNZʉ4&I"e%3Yf 7aʈV.,k45ƒ8sl/?!6ZVܸ*}rVmw~n3$b$`䙮7eq^uP$/y0x)#cжNM -J2!rR&J4enu7z܁h7`NٗV تy/txi/>$5m8wJM298 q/f w:-*i5#EUʮeɁ޳~`HRib|!5;=6yfF{77n; T΃U+]ƦC.kY4Yizk+%&iC̲ghvO1I{ :i>HӐNCI!L0%yn$i,8U0T4CZ *?%s[THB/`( ȓj[M%3SG&!P8@C:_/C@d#@<\d$3u;d5YDQ 6:`Kf+k@ʺαX N8~Aurz'idtt$*@Uf_Ss9N-@v#.ijpdM^8e 5q&K74 "Ps n k[ f.]fk gzY$V\rL^gD[q[Iܗ{u)Bbx:sȶD}i|+hV,*(W&:|mbzc ޢ9m-xYVx%H[E qZݍeQmm:0{x0 y˼[LɣE!m"'^6 U3܋K1wT8vȄE@"x|u!!όBZ>C_whRpUfi]|ǼO[Ր&fVksnղnfzϞGœњ((#K?w|)^2qYDZF mȶ*^RK )qm0G\lwBԁXjmBM= MĽyhfmM1hL3A|x_tM /JNPYGqh)46n{n7FcphҔ ze9,:LrUn4~9yx uan!ORhP <xv? 4鳙ژٯ ,; L=.3J)WI"= \JZ  =~m,O`73'.4jྪr=.#3Ubq}Gd0̼:-qMTÏd0 XM,E?Ã!P($# TYj:3 {FeX9`2E.>F쫫,F||1F"dHQXHjkdo)J@2ݵߵݤ5EM00FĞ8_2"O"_6Fr"/UMPcc"++ T[憆h:o!oއ+ 4\Ns"S7ªr T'4SVGUT/tb/tS }]|`%.S'CqgU-ӜI󁗋X8H*2u$_$Ps~Ƭ7C$]LfeJ~: <5P{mnqJV]PG?}?\8_ j(}) tNZ<3P~AY͈ BSA2006B-G:c{fǺ&$"Ȱt±9 {E>!@^,iWNo!^m]'8}7v;3'\+!j( glMDEc.8j0y/.8[g6^OߊHIM;m|RuwE7(R}JlTg 2ʧY ``ZC.% 25 MT:M Iz <LBJe-*6ݹi-sΕbUHGV d%皒ڍS_x ?z9J\sQ3?~s̰iܛs2B-'@BO )!W] 4 y7mR5h|mk(sVh酛L$}{@2h"=cύR@j w-A]| '̾|\j^d"L p< |mk[sf><ş~ r(mnSAGgs½ɹ(BqhNq:Xk,VFQkXanԎ:q"}=5!m“p{*|/ϭFfq粒 XP{ E'+ wQ yuxD5[_nDl)5xDAE.͋e-Z(>H"݋/4>W[ƽ 7DwPC,餐-NsV]]bJOh𗢌A j^H"2AY48ʍ䛁EoD Z:i(fQ$rI33sU.wB7%_ٻy'}#raXP{f0o5,y"wE[-YrJ69cىHHfk%n-O'V>r}]?5_w7+6  1Q7dRiqP|rq$RlvF^B/cw]ܬ)16qQ^ P ŝzԉ #CȒ=j7YxZڈPs64.ОcPF,99%vx#D2Ϥ2Y *9ϿGϞFjҐU5M|m($X+v+ߜ&CQۈh)i~3OD"qmd0`&S<|4F-ep>9hS~o970xnJm2(yޫ,j;%AR9JQlS s6p<3ea_L FL&Qg-\bSiyçP_ G+LիZdi\ Fpb>'E\8ex$߸Ğ03$>ӡ_+3аd50)3Y!Wd*^( ,xONk['Fm-i!]dD O"Uus81mpⰐ&LR<51!f)T&̶ 8<<9. j(Q#M .8.Ü{fHf-{eZ^΍UL2&MSk[1 T f`5&'"ڢ&OߗRg(fK4|F"WQl^)69Ȅ%D"6K#'¢ݞ(6 mP8.lF|΀>kj "ms oWhu.SeQVH4-:Аg'. N{Kh:6ܺ0pFuix;x~+j zjܴs]kPcb77܉_G^ioK];Fƕ{?wҾ*J6lw93J%(B@#*4[_uy\2W3@A8J(ˍc7:{>ɻA`;5+e ';~\ G%mM/-bѯsE\r ؄T^.d_`ST~;d?8Lģr$|PȌD.r8/46쎞|''9 .O#D '{3#i MbQ?7Ջcj=A/־(^}cH .s-޴CXUyw]!@P\QV ==LQ$P|4r,ܱ<7K $^? ÑK'cxހ+Gooolo*:V_'Wn|ۿHZ5Wi,kZL3M_ 8_0۳m>xxVUdv{~ж5z;驌wxoI+QT@% gFlBLrT)@YPߢ/V$ʇt|D̴mbQE ?!qB[C-U??C|pǰqSYo@91b$lف~H)|?3#yʶ\U/H+kg{ yQp9FZ涐sϖLiOs`_SU4ylH0ɹFTI!JNS(R-ٜZJL2pdcɑJ:2IㄇWiGȭI8Uy{hõ6#”/{0@[m#6ZGn !8ZCҬ|bϿDDW"il)T /ʺNheean& G.Pancf~{b'ynEsir'qAZ7o]*E&ގ? >s[R=w{gb#,6\iÑ8Nm݄.І_qeal(~`Ny_/.#ij֫ޏxUsΫ xp׷h%cDRi"5?x)GbvI2(S @(dE=xᶒQB4;7V5B3rWʃű\&H>5X 6|ϠTֽc(s#+@ft:>(у}a az76fPg%%ů2B^CDa@!_3DKl2NV^tOUAF\tt8x(&ǕcMT93]! 0"0)qi(. s1I8~S/Op{vHYT̻1fO|=}jk |HD[Le&â^1Z[[>t?Ѿ,(F.&xe%/z}KuJy|)(5~ 7P̐TP+p[M/7ϛ_~?-\:xy~Čm}ڄ}ɿ%~5Yj(^o7.GMC#(=%$Oއwk𕟋6m{ф"דSTd.p!:R-tS۞HB BqUJ0̒Ezmy\bN<_B?rW6m4>֪9߾%\ןyĉk->yf^@Ty1d&myX2캐NIҘTS[ĤDh:zJtHQEH8I 53L>Z\8IǮzF@Ŷzs]lU0O7Y0E~hwTJJ:kމ7 GBJ*3h>Ll"-?>E}i{TpKIFy/.^ ,` ߊC@cŒe۱Z[WדW|[_Jʁ7D1²#xF|r^8Ƈ˸lQ9]pp,4DĮ~6>7(RLj/ ?E9Ŵ`^$EoR\!r-q[ 'SV[pE rP},{> J=KAq'CS oSrY1}C^WZPL^2)t4`ƊLoQe!^knI)#A+&pB!)l!Rm10C.YkdEJ::́#cHJ{džPpu# 4K3NC_爽D%pQzvk~*Y CeY8 =DD֥f/lj"HmSqƥ+v_ FHshcnj FmYY^ӉU>ho᥁G=o>aY7W\(9{ ^fFk!5|O[??=+ Eb܂_5jnQnpAR%G}j3Jz,*`6ފ{jGuaȢ}#x~|Tv;ݿAhQ$œ:L"'.bl i GL7ly_uӜ3_IU9{#E>S_ wf`#7#? #O Y^E!Tky3~'̡a<| '"gf2)e nR[Hg@1aSKnИ&HC/ш;D ݅=k7W|n/ FIɇ9[+\]1&l+% UZƌ`#]0֙a]bm SU3&MipݖYB0xڏciZ؍xséCEQ qW |HXиL7S{g34dj»?8@OnJwox' ^)Nw(^sǿZrS-Dbd^D^h _{7o邒At L*&G+VƆصa?69%kǛD|^0w7?z.&Լ-` 23a/R(FA־2yx˶=kZ(,U9oʡ1Gh?cT{?Z[CEuz)pWp#03Tf=PH;sm/2Z|m{8xf涭뇲R[M9K& OfBlyh L O%! ,J#LFFHz) iv&WBk_迡 nr0B4'&pp WTcmjl֬ǻw}>5yZB][`+dɱ/䉂+U_"2A.y_}[>; }ގ Kpa* [ގ;?|l^8q'&Ao8CM'?:0&7܃=v Xlg).ApP Oxi/ 5 h}R-N6mWW:!'9< 8<Ỹ/~X2',fYoV&_s,[Nc,ʌr2\1$R\TVկ_(gM/b߿q%1K}d>gy ceG#{6HTs'NCѧ5Z7 s}0‰wɾ3W_?XKb1rzo.X/~\W٫}gvD0:a7*`H;4FD|^7%n@%+4nrDT*J\H,$#7:3Jb!.=J{0U„Y||- w*vIȁ~ijk|ώJ?+zkaŧҀ YȄ^g/O~oS->~7mg~y7NVJO:x~~x^ڭ{sS͕DWzK嵪,/<Ӭ,ɞFZYA 7]W刲JYX6:7|zVaIBb]y>yUlW)t 7=Ko6륒)Qc%=j8Sg-ؽj>J8D085оB/a$9@*@:qÉQvJi&!dN,߽؈:&haٰ~nZwΏ\@Su"B(Io1 $WL^x=D,lj#6U} 2%=~f^^ QTғ~?=7B| ww|ZV:.;g%vf9ڼhƗow;} \ZF/ڐqgܸ?\X._e&Jd:B_Ḳ!4Ց3QfN.A|yJgY@(qo,{̖W 2;IV~(cĝx|8L.ꏡjnr$ߴD?H+Jz'RDY*5/5\.nˇEf,(J;y/&LǦ_BtgA'J(M9# P _oIqz*o}mV~?/ruAƋG~ႈ1{ KזS$pC>/>XT]jFxR<*06Xps&E$?W2y4rZKdS\\ -+8_yLʝ#3si)L?g%Mo/!6NLK߯H ]5am^B:Y{Bs=?iY,-C )tn9Ox<{ҋY-`*,: zCa$+cJIJ=M/E^?~Uz^lo9W"JV%E}'ĮR9d,QKOA [~ﮥdGN35+z ],VbW+P BR lRQ0xYpQʖ6NtyS ve&陃Ҷ6{Ku%#j R9b Y9]{pTu?Z'BoB, vqC8&t6N=dM&ufJڍv6I݌ONt'C0`c BBvw}]q0W+v|9A-'La4Qܖ,$I8CD<C}fz{T$( މ#~pyqV;Vla#'Nj,>dډ'7vFXMp0OdX4M%~^F( q4ZRT=qk%5 ۭ *';F(U5Nkeڧ#pVXw=dA#RGA$2:NdsG7.U0?^yǞs'ޛIq'4d1]\ԳFe#=B+I-NFtv G %anA r7\yAP~=ID;irck/AzJ̼w!z#t+ˌ+U4(8_ ʿ<֛葽+]k\8q)2ԋٗ,`d92dXO`7qfW]RSs(5 HhxZo$$hT8G?z{tEi@̓8n}&[I߻Ť$ OIiͳ$ۤ.5 WZ>fs-L56lϦ >[d~a`* e%}e}/9&sQllkX_iJa#7Ik7'FfS#Q8qUaK eDKE#s^<a\B$ `-ؕD$" 1ieGuE#%yD1L,”N.͌zZj6c%r&Ie˖s版 9"hTt48cnd72n2ZMz[?/`0 ?!,¨`Uy@8 DB T\zL@ĂU*KG|i ÷ȃ yQ wkU^@uCӶ;lwEZ81ed5zǏΡ)NvX8hyN\gxuн= \.2sEo"ą[ON?O8~L&i 7 IkpG2t"!*@ם2ƚJ: `=5?G:}qo54E1 Bnʟ?_tNQ3zb=s‰ʖFM qbZBk'-.&Ǿe=۾3K.wW^c)kIPPpƍ0n, Z%uEo)/(R1+A0 X!Mg}sw2e\ܤ8ݸwqݞمY6r#:7a0c 8@ъpaϹEza#Bi=|tڙP 7BI-<:,.+u;Zvj+VB<~~q 3\k'L', & 0XbyR(/aa h!NZ% oO /rsEyQ[U yfJo wKBX`r(&Ki{Ĵ͟:Jhpn-B6i ҲY]Fu$3뾘sZI2j`2rRr+;ަYomʝ-a]!PSm{^orލ|tu꒸On}HTfS(8k,;=ڳLn%H7^WQ(wlr Y[ hhT*<֛+H.#ʯy[cbmnn˔%q2lO2Y2Hק2Zĥo7WɉQY'9Cw}vYDU(-Ʀ߽x-hǺB5w8…zC_Lh`@ h(c=_!uY@cOu,oyb,ȓO`'eY۰&pI=;1񥁉~uKzb:U7sbD.mgIy?p'{gאE=W#D􁿥cFD> P  sM1 hWĭʁ c@'"LY:@8%F&%h)M9, Oӊ*qԓOWҪF&5cp; GohX&OP:3tٸVj°EdTX>A;)|WT{Dis [GӉ)ہ)ti&qò*0ŏʐ 5eUF,,8w/Zr%NY$a h҄J#*Dzͷ)qh";!#^tRã'%˱Rj 6=+rcpKG/}G^ %t5Iʹ/|^9CcP QqoUVC/* fSEхXFLe΅@fN+iR$R S -1fZ&әSChf'+,q/|T_Y+Þ?/஀nu+pW` .Ȧf1 \n&?5F-w+APcX*ǖ{Dʓ|yFnNRp1Eb4OE;WJM++XMiZwT]L1gVrNf>adYY]Oy4}@\FAnaooȐbX7wE^!8*ǥX54vJKiIPq5Dȷ~E]~Cn)9Rڴ}ͭ.)ћG<^2yc\i#.wݟ-lEY8QD9N'|Ep"ΊJ{:ۍ5Bf0ej0c QNX9@%hxݶ;55tSk3Z4<=i,r, >`~c(PX[LMw$Ț#oqP^P &D6eU0 ̅(}|:ȯ=-ƙ% an ޿=\[Ffq̥)`]󦣑?z`ؾirKFdV8q~q'("LJs'>fY/7M Y ay',h0(.2eހxʼn0fNMX4-Clx{ZoGrb!N͵fprkvY,ֶRuP<ycpJ)vO%喏( 'X7x~gŃ_g7"h(wxm"5 $ p2L'8C304 ;U2dN0*&5@}JRޗMm7C| 7xO!uigݾz sgh4s(y WJ;h֓ Ӄ`=pbkҢer.!/WbvIc56 FzƸ0"9*UF&P{ ʍcS P胹T.l<L0?n郔z< W"_y7n.W\ 'm>љTV{6DtzgnתY]ΌDžⵌ4QTDyV:uir.XX[FbiNܪkUjp<B#e@MJʋ3(I8\V$*hkG4q'}+8'9C{Qk]ծsxLSH}_nDċc)-ep{h& .LµX#Q'cSLY|+%7,OC)@yxn&.!ϓrzZzt6MF":/=={hUucbT|僞\~MVEaay(ÞU:N͌p*V'0UHaA*Cs)-\nigkt]38TʛM@-~ #40XŲorra(!`,N<RTL$YPx@UEBP=x8v["L9+*eSTqsYBNvSsUW,XX„3Ό~ek6ڱ涒w+sSӾ;ȡ wi_XGȏVӾ_‰yyQnlx~rey?7ФR>pKe)Ƃj Pi\+(eS Pʣ=mqrG` k8K濸W I<T F|á8W-+ĥ]UDuY5׷wZ/GU8-~D/]jiqI!hPߘ#hfZ  _Skct0_v^ebIENDB`searchmonkey-0.8.3/rpmbuild/0000775000175000017500000000000013236164477013050 500000000000000searchmonkey-0.8.3/rpmbuild/README0000664000175000017500000000121313236161317013633 00000000000000Instructions for building a source/binary RPM (on FC5). Update the spec file to match the current version and release. Copy the appropriate spec file to /usr/src/$(DISTRO)/SPECS In the source code folder run: $ ./configure $ make $ make dist-gzip Copy the newly created gzip file to /usr/src/redhat/SOURCE To create a source/binary RPM run (as root): # rpmbuild -ba /usr/src/redhat/SPECS/searchmonkey-$(VERSION)-1.spec Fingers crossed, the RPMS/i386 and SRPMS folder should now contain distributable RPM files! Enjoy! Adam p.s. Note that searchmonkey.desktop is an application launcher. Copy it to /usr/share/applications for GNOME systems.searchmonkey-0.8.3/rpmbuild/searchmonkey-0.8.2-0.spec0000664000175000017500000000233713236161317017127 00000000000000Summary: Graphical equivalent of find + grep Name: searchmonkey Version: 0.8.2 Release: 1%{?dist} License: LGPL Group: Applications/File Source0: http://prdownloads.sourceforge.net/searchmonkey/searchmonkey-%{version}.tar.gz URL: http://searchmonkey.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: pkgconfig, gettext, gtk2-devel %description searchmonkey is a powerful, but fast GTK+ text search utility that allows files and content to be searched using regular expressions. It aims to be the graphical equivalent of find + grep, but with the simplicity of the Beagle search engine. %prep %setup -q %build %configure make %install rm -fr %{buildroot} make install DESTDIR=%{buildroot} %clean rm -fr %{buildroot} %files %doc README INSTALL COPYING.LESSER %{_bindir}/searchmonkey %{_datadir}/icons/hicolor/16x16/apps/searchmonkey.png %{_datadir}/icons/hicolor/22x22/apps/searchmonkey.png %{_datadir}/icons/hicolor/24x24/apps/searchmonkey.png %{_datadir}/icons/hicolor/32x32/apps/searchmonkey.png %{_datadir}/icons/hicolor/48x48/apps/searchmonkey.png %{_datadir}/pixmaps/searchmonkey/*.png # Only required for GNOME %{_datadir}/applications/searchmonkey.desktop %{_datadir}/locale/*/LC_MESSAGES/*.mo searchmonkey-0.8.3/rpmbuild/searchmonkey-0.8.3-0.spec0000664000175000017500000000232613236163111017120 00000000000000Summary: Graphical equivalent of find + grep Name: searchmonkey Version: 0.8.3 Release: 1%{?dist} License: GPL Group: Applications/File Source0: http://searchmonkey.embeddediq.com/repo/searchmonkey-%{version}.tar.gz URL: http://searchmonkey.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: pkgconfig, gettext, gtk2-devel %description searchmonkey is a powerful, but fast GTK+ text search utility that allows files and content to be searched using regular expressions. It aims to be the graphical equivalent of find + grep, but with the simplicity of the Beagle search engine. %prep %setup -q %build %configure make %install rm -fr %{buildroot} make install DESTDIR=%{buildroot} %clean rm -fr %{buildroot} %files %doc README INSTALL COPYING.LESSER %{_bindir}/searchmonkey %{_datadir}/icons/hicolor/16x16/apps/searchmonkey.png %{_datadir}/icons/hicolor/22x22/apps/searchmonkey.png %{_datadir}/icons/hicolor/24x24/apps/searchmonkey.png %{_datadir}/icons/hicolor/32x32/apps/searchmonkey.png %{_datadir}/icons/hicolor/48x48/apps/searchmonkey.png %{_datadir}/pixmaps/searchmonkey/*.png # Only required for GNOME %{_datadir}/applications/searchmonkey.desktop %{_datadir}/locale/*/LC_MESSAGES/*.mo searchmonkey-0.8.3/Makefile.am0000664000175000017500000000055713236161317013203 00000000000000## Process this file with automake to produce Makefile.in SUBDIRS = src po pixmaps EXTRA_DIST = \ autogen.sh \ searchmonkey-0-8-2.glade \ searchmonkey.desktop \ pixmaps/* \ rpmbuild/* \ bsdports/* desktopdir = $(datadir)/applications desktop_in_files = searchmonkey.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) @INTLTOOL_DESKTOP_RULE@ searchmonkey-0.8.3/configure0000775000175000017500000107677513236161317013076 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for searchmonkey 0.8.3. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='searchmonkey' PACKAGE_TARNAME='searchmonkey' PACKAGE_VERSION='0.8.3' PACKAGE_STRING='searchmonkey 0.8.3' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="configure.ac" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_header_list= ac_func_list= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS MKINSTALLDIRS POSUB POFILES PO_IN_DATADIR_FALSE PO_IN_DATADIR_TRUE INTLLIBS INSTOBJEXT GMOFILES DATADIRNAME CATOBJEXT CATALOGS MSGFMT_OPTS GETTEXT_PACKAGE PACKAGE_LIBS PACKAGE_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX POW_LIB LIBOBJS EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC ALL_LINGUAS INTLTOOL_PERL GMSGFMT MSGFMT MSGMERGE XGETTEXT INTLTOOL_POLICY_RULE INTLTOOL_SERVICE_RULE INTLTOOL_THEME_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_CAVES_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_XML_RULE INTLTOOL_KBD_RULE INTLTOOL_XAM_RULE INTLTOOL_UI_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_SHEET_RULE INTLTOOL_SERVER_RULE INTLTOOL_PONG_RULE INTLTOOL_OAF_RULE INTLTOOL_PROP_RULE INTLTOOL_KEYS_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_DESKTOP_RULE intltool__v_merge_options_0 intltool__v_merge_options_ INTLTOOL_V_MERGE_OPTIONS INTLTOOL__v_MERGE_0 INTLTOOL__v_MERGE_ INTLTOOL_V_MERGE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE USE_NLS MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_nls enable_dependency_tracking ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PACKAGE_CFLAGS PACKAGE_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures searchmonkey 0.8.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/searchmonkey] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of searchmonkey 0.8.3:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-nls do not use Native Language Support --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path PACKAGE_CFLAGS C compiler flags for PACKAGE, overriding pkg-config PACKAGE_LIBS linker flags for PACKAGE, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF searchmonkey configure 0.8.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by searchmonkey $as_me 0.8.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi as_fn_append ac_header_list " sys/time.h" as_fn_append ac_header_list " unistd.h" as_fn_append ac_func_list " alarm" # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='searchmonkey' VERSION='0.8.3' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi ac_config_headers="$ac_config_headers config.h" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } case "$am__api_version" in 1.01234) as_fn_error $? "Automake 1.5 or newer is required to use intltool" "$LINENO" 5 ;; *) ;; esac INTLTOOL_REQUIRED_VERSION_AS_INT=`echo | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` if test -n ""; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= " >&5 $as_echo_n "checking for intltool >= ... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5 $as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; } test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || as_fn_error $? "Your intltool is too old. You need intltool or later." "$LINENO" 5 fi # Extract the first word of "intltool-update", so it can be a program name with args. set dummy intltool-update; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_UPDATE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_UPDATE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_UPDATE="$INTLTOOL_UPDATE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_UPDATE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_UPDATE=$ac_cv_path_INTLTOOL_UPDATE if test -n "$INTLTOOL_UPDATE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_UPDATE" >&5 $as_echo "$INTLTOOL_UPDATE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-merge", so it can be a program name with args. set dummy intltool-merge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_MERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_MERGE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_MERGE="$INTLTOOL_MERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_MERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_MERGE=$ac_cv_path_INTLTOOL_MERGE if test -n "$INTLTOOL_MERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_MERGE" >&5 $as_echo "$INTLTOOL_MERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-extract", so it can be a program name with args. set dummy intltool-extract; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_EXTRACT+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_EXTRACT in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_EXTRACT="$INTLTOOL_EXTRACT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_EXTRACT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_EXTRACT=$ac_cv_path_INTLTOOL_EXTRACT if test -n "$INTLTOOL_EXTRACT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_EXTRACT" >&5 $as_echo "$INTLTOOL_EXTRACT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5 fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' INTLTOOL__v_MERGE_0='@echo " ITMRG " $@;' INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' intltool__v_merge_options_0='-q' INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< $@' INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< $@' else INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.$$RANDOM && mkdir $$_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u $$_it_tmp_dir $< $@ && rmdir $$_it_tmp_dir' fi INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' # Check the gettext tools to make sure they are GNU # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case $XGETTEXT in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XGETTEXT=$ac_cv_path_XGETTEXT if test -n "$XGETTEXT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGMERGE in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGMERGE=$ac_cv_path_MSGMERGE if test -n "$MSGMERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGFMT=$ac_cv_path_MSGFMT if test -n "$MSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_PERL in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL if test -n "$INTLTOOL_PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_PERL" >&5 $as_echo "$INTLTOOL_PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_PERL"; then as_fn_error $? "perl not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.1" >&5 $as_echo_n "checking for perl >= 5.8.1... " >&6; } $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then as_fn_error $? "perl 5.8.1 is required for intltool" "$LINENO" 5 else IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IT_PERL_VERSION" >&5 $as_echo "$IT_PERL_VERSION" >&6; } fi if test "x" != "xno-xml"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML::Parser" >&5 $as_echo_n "checking for XML::Parser... " >&6; } if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } else as_fn_error $? "XML::Parser perl module is required for intltool" "$LINENO" 5 fi fi # Substitute ALL_LINGUAS so we can use it in po/Makefile DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 $as_echo_n "checking for library containing strerror... " >&6; } if ${ac_cv_search_strerror+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strerror (); int main () { return strerror (); ; return 0; } _ACEOF for ac_lib in '' cposix; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_strerror=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_strerror+:} false; then : break fi done if ${ac_cv_search_strerror+:} false; then : else ac_cv_search_strerror=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 $as_echo "$ac_cv_search_strerror" >&6; } ac_res=$ac_cv_search_strerror if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi for ac_func in mblen do : ac_fn_c_check_func "$LINENO" "mblen" "ac_cv_func_mblen" if test "x$ac_cv_func_mblen" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MBLEN 1 _ACEOF fi done for ac_func in regcomp do : ac_fn_c_check_func "$LINENO" "regcomp" "ac_cv_func_regcomp" if test "x$ac_cv_func_regcomp" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_REGCOMP 1 _ACEOF fi done for ac_func in strdup do : ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" if test "x$ac_cv_func_strdup" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRDUP 1 _ACEOF fi done for ac_func in strerror do : ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" if test "x$ac_cv_func_strerror" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRERROR 1 _ACEOF fi done # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in libintl.h do : ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" if test "x$ac_cv_header_libintl_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBINTL_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } if ${ac_cv_header_stdbool_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef bool "error: bool is not defined" #endif #ifndef false "error: false is not defined" #endif #if false "error: false is not 0" #endif #ifndef true "error: true is not defined" #endif #if true != 1 "error: true is not 1" #endif #ifndef __bool_true_false_are_defined "error: __bool_true_false_are_defined is not defined" #endif struct s { _Bool s: 1; _Bool t; } s; char a[true == 1 ? 1 : -1]; char b[false == 0 ? 1 : -1]; char c[__bool_true_false_are_defined == 1 ? 1 : -1]; char d[(bool) 0.5 == true ? 1 : -1]; /* See body of main program for 'e'. */ char f[(_Bool) 0.0 == false ? 1 : -1]; char g[true]; char h[sizeof (_Bool)]; char i[sizeof s.t]; enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ _Bool n[m]; char o[sizeof n == m * sizeof n[0] ? 1 : -1]; char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; /* Catch a bug in an HP-UX C compiler. See http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html */ _Bool q = true; _Bool *pq = &q; int main () { bool e = &s; *pq |= q; *pq |= ! q; /* Refer to every declared value, to avoid compiler optimizations. */ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + !m + !n + !o + !p + !q + !pq); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdbool_h=yes else ac_cv_header_stdbool_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 $as_echo "$ac_cv_header_stdbool_h" >&6; } ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" if test "x$ac_cv_type__Bool" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE__BOOL 1 _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5 $as_echo_n "checking for C/C++ restrict keyword... " >&6; } if ${ac_cv_c_restrict+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_restrict=no # The order here caters to the fact that C++ does not require restrict. for ac_kw in __restrict __restrict__ _Restrict restrict; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ typedef int * int_ptr; int foo (int_ptr $ac_kw ip) { return ip[0]; } int main () { int s[1]; int * $ac_kw t = s; t[0] = 0; return foo(t) ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_restrict=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_restrict" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5 $as_echo "$ac_cv_c_restrict" >&6; } case $ac_cv_c_restrict in restrict) ;; no) $as_echo "#define restrict /**/" >>confdefs.h ;; *) cat >>confdefs.h <<_ACEOF #define restrict $ac_cv_c_restrict _ACEOF ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 $as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : $as_echo_n "(cached) " >&6 else rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then if test "$cross_compiling" = yes; then : ac_cv_func_lstat_dereferences_slashed_symlink=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; /* Linux will dereference the symlink and fail, as required by POSIX. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_lstat_dereferences_slashed_symlink=yes else ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else # If the `ln -s' command failed, then we probably don't even # have an lstat function. ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 $as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && cat >>confdefs.h <<_ACEOF #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 _ACEOF if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then case " $LIBOBJS " in *" lstat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; esac fi for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "#define HAVE_MALLOC 1" >>confdefs.h else $as_echo "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac $as_echo "#define malloc rpl_malloc" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi for ac_header in $ac_header_list do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in $ac_func_list do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 $as_echo_n "checking for working mktime... " >&6; } if ${ac_cv_func_working_mktime+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_working_mktime=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Test program from Paul Eggert and Tony Leneis. */ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #include #include #ifdef HAVE_UNISTD_H # include #endif #ifndef HAVE_ALARM # define alarm(X) /* empty */ #endif /* Work around redefinition to rpl_putenv by other config tests. */ #undef putenv static time_t time_t_max; static time_t time_t_min; /* Values we'll use to set the TZ environment variable. */ static const char *tz_strings[] = { (const char *) 0, "TZ=GMT0", "TZ=JST-9", "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" }; #define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) /* Return 0 if mktime fails to convert a date in the spring-forward gap. Based on a problem report from Andreas Jaeger. */ static int spring_forward_gap () { /* glibc (up to about 1998-10-07) failed this test. */ struct tm tm; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); tm.tm_year = 98; tm.tm_mon = 3; tm.tm_mday = 5; tm.tm_hour = 2; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; return mktime (&tm) != (time_t) -1; } static int mktime_test1 (time_t now) { struct tm *lt; return ! (lt = localtime (&now)) || mktime (lt) == now; } static int mktime_test (time_t now) { return (mktime_test1 (now) && mktime_test1 ((time_t) (time_t_max - now)) && mktime_test1 ((time_t) (time_t_min + now))); } static int irix_6_4_bug () { /* Based on code from Ariel Faigon. */ struct tm tm; tm.tm_year = 96; tm.tm_mon = 3; tm.tm_mday = 0; tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_isdst = -1; mktime (&tm); return tm.tm_mon == 2 && tm.tm_mday == 31; } static int bigtime_test (int j) { struct tm tm; time_t now; tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; now = mktime (&tm); if (now != (time_t) -1) { struct tm *lt = localtime (&now); if (! (lt && lt->tm_year == tm.tm_year && lt->tm_mon == tm.tm_mon && lt->tm_mday == tm.tm_mday && lt->tm_hour == tm.tm_hour && lt->tm_min == tm.tm_min && lt->tm_sec == tm.tm_sec && lt->tm_yday == tm.tm_yday && lt->tm_wday == tm.tm_wday && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) return 0; } return 1; } static int year_2050_test () { /* The correct answer for 2050-02-01 00:00:00 in Pacific time, ignoring leap seconds. */ unsigned long int answer = 2527315200UL; struct tm tm; time_t t; tm.tm_year = 2050 - 1900; tm.tm_mon = 2 - 1; tm.tm_mday = 1; tm.tm_hour = tm.tm_min = tm.tm_sec = 0; tm.tm_isdst = -1; /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" instead of "TZ=America/Vancouver" in order to detect the bug even on systems that don't support the Olson extension, or don't have the full zoneinfo tables installed. */ putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); t = mktime (&tm); /* Check that the result is either a failure, or close enough to the correct answer that we can assume the discrepancy is due to leap seconds. */ return (t == (time_t) -1 || (0 < t && answer - 120 <= t && t <= answer + 120)); } int main () { time_t t, delta; int i, j; /* This test makes some buggy mktime implementations loop. Give up after 60 seconds; a mktime slower than that isn't worth using anyway. */ alarm (60); for (;;) { t = (time_t_max << 1) + 1; if (t <= time_t_max) break; time_t_max = t; } time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; delta = time_t_max / 997; /* a suitable prime number */ for (i = 0; i < N_STRINGS; i++) { if (tz_strings[i]) putenv ((char*) tz_strings[i]); for (t = 0; t <= time_t_max - delta; t += delta) if (! mktime_test (t)) return 1; if (! (mktime_test ((time_t) 1) && mktime_test ((time_t) (60 * 60)) && mktime_test ((time_t) (60 * 60 * 24)))) return 1; for (j = 1; ; j <<= 1) if (! bigtime_test (j)) return 1; else if (INT_MAX / 2 < j) break; if (! bigtime_test (INT_MAX)) return 1; } return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_working_mktime=yes else ac_cv_func_working_mktime=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 $as_echo "$ac_cv_func_working_mktime" >&6; } if test $ac_cv_func_working_mktime = no; then case " $LIBOBJS " in *" mktime.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS mktime.$ac_objext" ;; esac fi for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5 $as_echo_n "checking for GNU libc compatible realloc... " >&6; } if ${ac_cv_func_realloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_realloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *realloc (); #endif int main () { return ! realloc (0, 0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_realloc_0_nonnull=yes else ac_cv_func_realloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5 $as_echo "$ac_cv_func_realloc_0_nonnull" >&6; } if test $ac_cv_func_realloc_0_nonnull = yes; then : $as_echo "#define HAVE_REALLOC 1" >>confdefs.h else $as_echo "#define HAVE_REALLOC 0" >>confdefs.h case " $LIBOBJS " in *" realloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS realloc.$ac_objext" ;; esac $as_echo "#define realloc rpl_realloc" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strtod" >&5 $as_echo_n "checking for working strtod... " >&6; } if ${ac_cv_func_strtod+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_strtod=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #ifndef strtod double strtod (); #endif int main() { { /* Some versions of Linux strtod mis-parse strings with leading '+'. */ char *string = " +69"; char *term; double value; value = strtod (string, &term); if (value != 69 || term != (string + 4)) return 1; } { /* Under Solaris 2.4, strtod returns the wrong value for the terminating character under some conditions. */ char *string = "NaN"; char *term; strtod (string, &term); if (term != string && *(term - 1) == 0) return 1; } return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_strtod=yes else ac_cv_func_strtod=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strtod" >&5 $as_echo "$ac_cv_func_strtod" >&6; } if test $ac_cv_func_strtod = no; then case " $LIBOBJS " in *" strtod.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS strtod.$ac_objext" ;; esac ac_fn_c_check_func "$LINENO" "pow" "ac_cv_func_pow" if test "x$ac_cv_func_pow" = xyes; then : fi if test $ac_cv_func_pow = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5 $as_echo_n "checking for pow in -lm... " >&6; } if ${ac_cv_lib_m_pow+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pow (); int main () { return pow (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_pow=yes else ac_cv_lib_m_pow=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5 $as_echo "$ac_cv_lib_m_pow" >&6; } if test "x$ac_cv_lib_m_pow" = xyes; then : POW_LIB=-lm else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find library containing definition of pow" >&5 $as_echo "$as_me: WARNING: cannot find library containing definition of pow" >&2;} fi fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" if test "x$ac_cv_type_off_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define off_t long int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi pkg_modules="libzip poppler-glib gtk+-2.0 gthread-2.0" if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PACKAGE" >&5 $as_echo_n "checking for PACKAGE... " >&6; } if test -n "$PACKAGE_CFLAGS"; then pkg_cv_PACKAGE_CFLAGS="$PACKAGE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_modules\""; } >&5 ($PKG_CONFIG --exists --print-errors "$pkg_modules") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PACKAGE_CFLAGS=`$PKG_CONFIG --cflags "$pkg_modules" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$PACKAGE_LIBS"; then pkg_cv_PACKAGE_LIBS="$PACKAGE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_modules\""; } >&5 ($PKG_CONFIG --exists --print-errors "$pkg_modules") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_PACKAGE_LIBS=`$PKG_CONFIG --libs "$pkg_modules" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then PACKAGE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$pkg_modules" 2>&1` else PACKAGE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$pkg_modules" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PACKAGE_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ($pkg_modules) were not met: $PACKAGE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables PACKAGE_CFLAGS and PACKAGE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables PACKAGE_CFLAGS and PACKAGE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else PACKAGE_CFLAGS=$pkg_cv_PACKAGE_CFLAGS PACKAGE_LIBS=$pkg_cv_PACKAGE_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi GETTEXT_PACKAGE=searchmonkey cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF ALL_LINGUAS="en_GB en_UK en_US fr_FR fr ru_RU" for ac_header in locale.h do : ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" if test "x$ac_cv_header_locale_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LOCALE_H 1 _ACEOF fi done if test $ac_cv_header_locale_h = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 $as_echo_n "checking for LC_MESSAGES... " >&6; } if ${am_cv_val_LC_MESSAGES+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_val_LC_MESSAGES=yes else am_cv_val_LC_MESSAGES=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 $as_echo "$am_cv_val_LC_MESSAGES" >&6; } if test $am_cv_val_LC_MESSAGES = yes; then $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi fi USE_NLS=yes gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" if test "x$ac_cv_header_libintl_h" = xyes; then : gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5 $as_echo_n "checking for ngettext in libc... " >&6; } if ${gt_cv_func_ngettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !ngettext ("","", 1) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_ngettext_libc=yes else gt_cv_func_ngettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5 $as_echo "$gt_cv_func_ngettext_libc" >&6; } if test "$gt_cv_func_ngettext_libc" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5 $as_echo_n "checking for dgettext in libc... " >&6; } if ${gt_cv_func_dgettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !dgettext ("","") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_dgettext_libc=yes else gt_cv_func_dgettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5 $as_echo "$gt_cv_func_dgettext_libc" >&6; } fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; } if ${ac_cv_lib_intl_bindtextdomain+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_bindtextdomain=yes else ac_cv_lib_intl_bindtextdomain=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5 $as_echo_n "checking for dgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dgettext (); int main () { return dgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dgettext=yes else ac_cv_lib_intl_dgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5 $as_echo "$ac_cv_lib_intl_dgettext" >&6; } if test "x$ac_cv_lib_intl_dgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes fi fi fi if test "$gt_cv_func_dgettext_libintl" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5 $as_echo_n "checking if -liconv is needed to use gettext... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5 $as_echo_n "checking for dcgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dcgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dcgettext (); int main () { return dcgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dcgettext=yes else ac_cv_lib_intl_dcgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5 $as_echo "$ac_cv_lib_intl_dcgettext" >&6; } if test "x$ac_cv_lib_intl_dcgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv else : fi else : fi fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in /*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" for ac_func in dcgettext do : ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" if test "x$ac_cv_func_dcgettext" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi done MSGFMT_OPTS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5 $as_echo_n "checking if msgfmt accepts -c... " >&6; } cat >conftest.foo <<_ACEOF msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" _ACEOF if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5 ($MSGFMT -c -o /dev/null conftest.foo) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "$as_me: failed input was:" >&5 sed 's/^/| /' conftest.foo >&5 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in /*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : CATOBJEXT=.gmo DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : CATOBJEXT=.gmo DATADIRNAME=share else CATOBJEXT=.mo DATADIRNAME=lib fi ;; *-*-openbsd*) CATOBJEXT=.mo DATADIRNAME=share ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi fi if test "$gt_cv_have_gettext" = "yes" ; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po ac_config_commands="$ac_config_commands default-1" for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5 $as_echo_n "checking for catalogs to be installed... " >&6; } NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5 $as_echo "$LINGUAS" >&6; } fi if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES ac_config_files="$ac_config_files Makefile src/Makefile po/Makefile.in pixmaps/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi ac_config_commands="$ac_config_commands po/stamp-it" if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by searchmonkey $as_me 0.8.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ searchmonkey config.status 0.8.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "pixmaps/Makefile") CONFIG_FILES="$CONFIG_FILES pixmaps/Makefile" ;; "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac ;; "po/stamp-it":C) if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5 fi rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp" >"po/stamp-it.tmp" sed '/^#/d s/^[[].*] *// /^[ ]*$/d '"s|^| $ac_top_srcdir/|" \ "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES" sed '/^POTFILES =/,/[^\\]$/ { /^POTFILES =/!d r po/POTFILES } ' "po/Makefile.in" >"po/Makefile" rm -f "po/Makefile.tmp" mv "po/stamp-it.tmp" "po/stamp-it" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi searchmonkey-0.8.3/configure.ac0000664000175000017500000000212513236161317013426 00000000000000dnl Process this file with autoconf to produce a configure script. AC_INIT([searchmonkey],[0.8.3]) AC_CONFIG_SRCDIR([configure.ac]) AM_INIT_AUTOMAKE AM_CONFIG_HEADER(config.h) AM_MAINTAINER_MODE IT_PROG_INTLTOOL AC_SEARCH_LIBS([strerror],[cposix]) AC_PROG_CC AM_PROG_CC_STDC AC_HEADER_STDC AC_CHECK_FUNCS([mblen]) AC_CHECK_FUNCS([regcomp]) AC_CHECK_FUNCS([strdup]) AC_CHECK_FUNCS([strerror]) AC_CHECK_HEADERS([libintl.h]) AC_CHECK_HEADER_STDBOOL AC_C_INLINE AC_C_RESTRICT AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK AC_FUNC_MALLOC AC_FUNC_MKTIME AC_FUNC_REALLOC AC_FUNC_STRTOD AC_PROG_CXX AC_TYPE_OFF_T AC_TYPE_SIZE_T pkg_modules="libzip poppler-glib gtk+-2.0 gthread-2.0" PKG_CHECK_MODULES(PACKAGE, [$pkg_modules]) AC_SUBST(PACKAGE_CFLAGS) AC_SUBST(PACKAGE_LIBS) GETTEXT_PACKAGE=searchmonkey AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package.]) dnl Add the languages which your application supports here. ALL_LINGUAS="en_GB en_UK en_US fr_FR fr ru_RU" AM_GLIB_GNU_GETTEXT AC_CONFIG_FILES([ Makefile src/Makefile po/Makefile.in pixmaps/Makefile ]) AC_OUTPUT searchmonkey-0.8.3/aclocal.m40000664000175000017500000023474213236161317013014 00000000000000# generated automatically by aclocal 1.15 -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 1995-2002 Free Software Foundation, Inc. # Copyright (C) 2001-2003,2004 Red Hat, Inc. # # This file is free software, distributed under the terms of the GNU # General Public License. As a special exception to the GNU General # Public License, this file may be distributed as part of a program # that contains a configuration script generated by Autoconf, under # the same distribution terms as the rest of that program. # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # # Macro to add for using GNU gettext. # Ulrich Drepper , 1995, 1996 # # Modified to never use included libintl. # Owen Taylor , 12/15/1998 # # Major rework to remove unused code # Owen Taylor , 12/11/2002 # # Added better handling of ALL_LINGUAS from GNU gettext version # written by Bruno Haible, Owen Taylor 5/30/3002 # # Modified to require ngettext # Matthias Clasen 08/06/2004 # # We need this here as well, since someone might use autoconf-2.5x # to configure GLib then an older version to configure a package # using AM_GLIB_GNU_GETTEXT AC_PREREQ(2.53) dnl dnl We go to great lengths to make sure that aclocal won't dnl try to pull in the installed version of these macros dnl when running aclocal in the glib directory. dnl m4_copy([AC_DEFUN],[glib_DEFUN]) m4_copy([AC_REQUIRE],[glib_REQUIRE]) dnl dnl At the end, if we're not within glib, we'll define the public dnl definitions in terms of our private definitions. dnl # GLIB_LC_MESSAGES #-------------------- glib_DEFUN([GLIB_LC_MESSAGES], [AC_CHECK_HEADERS([locale.h]) if test $ac_cv_header_locale_h = yes; then AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi fi]) # GLIB_PATH_PROG_WITH_TEST #---------------------------- dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) glib_DEFUN([GLIB_PATH_PROG_WITH_TEST], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in /*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in ifelse([$5], , $PATH, [$5]); do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) # GLIB_WITH_NLS #----------------- glib_DEFUN([GLIB_WITH_NLS], dnl NLS is obligatory [USE_NLS=yes AC_SUBST(USE_NLS) gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= AC_CHECK_HEADER(libintl.h, [gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc, [AC_TRY_LINK([ #include ], [return !ngettext ("","", 1)], gt_cv_func_ngettext_libc=yes, gt_cv_func_ngettext_libc=no) ]) if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc, [AC_TRY_LINK([ #include ], [return !dgettext ("","")], gt_cv_func_dgettext_libc=yes, gt_cv_func_dgettext_libc=no) ]) fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then AC_CHECK_FUNCS(bind_textdomain_codeset) fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then AC_CHECK_LIB(intl, bindtextdomain, [AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dgettext, gt_cv_func_dgettext_libintl=yes)])]) if test "$gt_cv_func_dgettext_libintl" != "yes" ; then AC_MSG_CHECKING([if -liconv is needed to use gettext]) AC_MSG_RESULT([]) AC_CHECK_LIB(intl, ngettext, [AC_CHECK_LIB(intl, dcgettext, [gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv], :,-liconv)], :,-liconv) fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset AC_CHECK_FUNCS(bind_textdomain_codeset) LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then AC_DEFINE(HAVE_GETTEXT,1, [Define if the GNU gettext() function is already present or preinstalled.]) GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" AC_CHECK_FUNCS(dcgettext) MSGFMT_OPTS= AC_MSG_CHECKING([if msgfmt accepts -c]) GLIB_RUN_PROG([$MSGFMT -c -o /dev/null],[ msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" ], [MSGFMT_OPTS=-c; AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])]) AC_SUBST(MSGFMT_OPTS) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr], [CATOBJEXT=.gmo DATADIRNAME=share], [case $host in *-*-solaris*) dnl On Solaris, if bind_textdomain_codeset is in libc, dnl GNU format message catalog is always supported, dnl since both are added to the libc all together. dnl Hence, we'd like to go with DATADIRNAME=share and dnl and CATOBJEXT=.gmo in this case. AC_CHECK_FUNC(bind_textdomain_codeset, [CATOBJEXT=.gmo DATADIRNAME=share], [CATOBJEXT=.mo DATADIRNAME=lib]) ;; *-*-openbsd*) CATOBJEXT=.mo DATADIRNAME=share ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac]) LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi ]) if test "$gt_cv_have_gettext" = "yes" ; then AC_DEFINE(ENABLE_NLS, 1, [always defined to indicate that i18n is enabled]) fi dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is not GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po AC_OUTPUT_COMMANDS( [case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac]) dnl These rules are solely for the distribution goal. While doing this dnl we only have to keep exactly one list of the available catalogs dnl in configure.ac. for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done dnl Make all variables we use known to autoconf. AC_SUBST(CATALOGS) AC_SUBST(CATOBJEXT) AC_SUBST(DATADIRNAME) AC_SUBST(GMOFILES) AC_SUBST(INSTOBJEXT) AC_SUBST(INTLLIBS) AC_SUBST(PO_IN_DATADIR_TRUE) AC_SUBST(PO_IN_DATADIR_FALSE) AC_SUBST(POFILES) AC_SUBST(POSUB) ]) # AM_GLIB_GNU_GETTEXT # ------------------- # Do checks necessary for use of gettext. If a suitable implementation # of gettext is found in either in libintl or in the C library, # it will set INTLLIBS to the libraries needed for use of gettext # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST() # on various variables needed by the Makefile.in.in installed by # glib-gettextize. dnl AU_DEFUN([GLIB_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_CC])dnl GLIB_LC_MESSAGES GLIB_WITH_NLS if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else AC_MSG_CHECKING(for catalogs to be installed) NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS AC_MSG_RESULT($LINGUAS) fi dnl Construct list of names of catalog files to be constructed. if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but ($top_srcdir). dnl Try to locate is. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) dnl Generate list of files to be processed by xgettext which will dnl be included in po/Makefile. test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES ], [[$0: This macro is deprecated. You should use upstream gettext instead.]]) # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) # ------------------------------- # Define VARIABLE to the location where catalog files will # be installed by po/Makefile. glib_DEFUN([GLIB_DEFINE_LOCALEDIR], [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl glib_save_prefix="$prefix" glib_save_exec_prefix="$exec_prefix" glib_save_datarootdir="$datarootdir" test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix=$prefix datarootdir=`eval echo "${datarootdir}"` if test "x$CATOBJEXT" = "x.mo" ; then localedir=`eval echo "${libdir}/locale"` else localedir=`eval echo "${datadir}/locale"` fi prefix="$glib_save_prefix" exec_prefix="$glib_save_exec_prefix" datarootdir="$glib_save_datarootdir" AC_DEFINE_UNQUOTED($1, "$localedir", [Define the location where the catalogs will be installed]) ]) dnl dnl Now the definitions that aclocal will find dnl ifdef(glib_configure_ac,[],[ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) ])dnl # GLIB_RUN_PROG(PROGRAM, TEST-FILE, [ACTION-IF-PASS], [ACTION-IF-FAIL]) # # Create a temporary file with TEST-FILE as its contents and pass the # file name to PROGRAM. Perform ACTION-IF-PASS if PROGRAM exits with # 0 and perform ACTION-IF-FAIL for any other exit status. AC_DEFUN([GLIB_RUN_PROG], [cat >conftest.foo <<_ACEOF $2 _ACEOF if AC_RUN_LOG([$1 conftest.foo]); then m4_ifval([$3], [$3], [:]) m4_ifvaln([$4], [else $4])dnl echo "$as_me: failed input was:" >&AS_MESSAGE_LOG_FD sed 's/^/| /' conftest.foo >&AS_MESSAGE_LOG_FD fi]) dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml]) # serial 42 IT_PROG_INTLTOOL AC_DEFUN([IT_PROG_INTLTOOL], [ AC_PREREQ([2.50])dnl AC_REQUIRE([AM_NLS])dnl case "$am__api_version" in 1.[01234]) AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool]) ;; *) ;; esac INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` if test -n "$1"; then AC_MSG_CHECKING([for intltool >= $1]) AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found]) test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || AC_MSG_ERROR([Your intltool is too old. You need intltool $1 or later.]) fi AC_PATH_PROG(INTLTOOL_UPDATE, [intltool-update]) AC_PATH_PROG(INTLTOOL_MERGE, [intltool-merge]) AC_PATH_PROG(INTLTOOL_EXTRACT, [intltool-extract]) if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then AC_MSG_ERROR([The intltool scripts were not found. Please install intltool.]) fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi AC_SUBST([AM_DEFAULT_VERBOSITY]) INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' INTLTOOL__v_MERGE_0='@echo " ITMRG " [$]@;' AC_SUBST(INTLTOOL_V_MERGE) AC_SUBST(INTLTOOL__v_MERGE_) AC_SUBST(INTLTOOL__v_MERGE_0) INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' intltool__v_merge_options_0='-q' AC_SUBST(INTLTOOL_V_MERGE_OPTIONS) AC_SUBST(intltool__v_merge_options_) AC_SUBST(intltool__v_merge_options_0) INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< [$]@' INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< [$]@' else INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.[$][$]RANDOM && mkdir [$][$]_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u [$][$]_it_tmp_dir $< [$]@ && rmdir [$][$]_it_tmp_dir' fi INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' _IT_SUBST(INTLTOOL_DESKTOP_RULE) _IT_SUBST(INTLTOOL_DIRECTORY_RULE) _IT_SUBST(INTLTOOL_KEYS_RULE) _IT_SUBST(INTLTOOL_PROP_RULE) _IT_SUBST(INTLTOOL_OAF_RULE) _IT_SUBST(INTLTOOL_PONG_RULE) _IT_SUBST(INTLTOOL_SERVER_RULE) _IT_SUBST(INTLTOOL_SHEET_RULE) _IT_SUBST(INTLTOOL_SOUNDLIST_RULE) _IT_SUBST(INTLTOOL_UI_RULE) _IT_SUBST(INTLTOOL_XAM_RULE) _IT_SUBST(INTLTOOL_KBD_RULE) _IT_SUBST(INTLTOOL_XML_RULE) _IT_SUBST(INTLTOOL_XML_NOMERGE_RULE) _IT_SUBST(INTLTOOL_CAVES_RULE) _IT_SUBST(INTLTOOL_SCHEMAS_RULE) _IT_SUBST(INTLTOOL_THEME_RULE) _IT_SUBST(INTLTOOL_SERVICE_RULE) _IT_SUBST(INTLTOOL_POLICY_RULE) # Check the gettext tools to make sure they are GNU AC_PATH_PROG(XGETTEXT, xgettext) AC_PATH_PROG(MSGMERGE, msgmerge) AC_PATH_PROG(MSGFMT, msgfmt) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then AC_MSG_ERROR([GNU gettext tools not found; required for intltool]) fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then AC_MSG_ERROR([GNU gettext tools not found; required for intltool]) fi AC_PATH_PROG(INTLTOOL_PERL, perl) if test -z "$INTLTOOL_PERL"; then AC_MSG_ERROR([perl not found]) fi AC_MSG_CHECKING([for perl >= 5.8.1]) $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then AC_MSG_ERROR([perl 5.8.1 is required for intltool]) else IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"` AC_MSG_RESULT([$IT_PERL_VERSION]) fi if test "x$2" != "xno-xml"; then AC_MSG_CHECKING([for XML::Parser]) if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then AC_MSG_RESULT([ok]) else AC_MSG_ERROR([XML::Parser perl module is required for intltool]) fi fi # Substitute ALL_LINGUAS so we can use it in po/Makefile AC_SUBST(ALL_LINGUAS) IT_PO_SUBDIR([po]) ]) # IT_PO_SUBDIR(DIRNAME) # --------------------- # All po subdirs have to be declared with this macro; the subdir "po" is # declared by IT_PROG_INTLTOOL. # AC_DEFUN([IT_PO_SUBDIR], [AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS. dnl dnl The following CONFIG_COMMANDS should be executed at the very end dnl of config.status. AC_CONFIG_COMMANDS_PRE([ AC_CONFIG_COMMANDS([$1/stamp-it], [ if [ ! grep "^# INTLTOOL_MAKEFILE$" "$1/Makefile.in" > /dev/null ]; then AC_MSG_ERROR([$1/Makefile.in.in was not created by intltoolize.]) fi rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp" >"$1/stamp-it.tmp" [sed '/^#/d s/^[[].*] *// /^[ ]*$/d '"s|^| $ac_top_srcdir/|" \ "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES" ] [sed '/^POTFILES =/,/[^\\]$/ { /^POTFILES =/!d r $1/POTFILES } ' "$1/Makefile.in" >"$1/Makefile"] rm -f "$1/Makefile.tmp" mv "$1/stamp-it.tmp" "$1/stamp-it" ]) ])dnl ]) # _IT_SUBST(VARIABLE) # ------------------- # Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST # AC_DEFUN([_IT_SUBST], [ AC_SUBST([$1]) m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])]) ] ) # deprecated macros AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL]) # A hint is needed for aclocal from Automake <= 1.9.4: # AC_DEFUN([AC_PROG_INTLTOOL], ...) # nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- dnl serial 11 (pkg-config-0.29.1) dnl dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29.1]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR # Copyright (C) 2002-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # -*- Autoconf -*- # Obsolete and "removed" macros, that must however still report explicit # error messages when used, to smooth transition. # # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl AC_CONFIG_HEADERS($@)]) AC_DEFUN([AM_PROG_CC_STDC], [AC_PROG_CC am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should simply use the 'AC][_PROG_CC' macro instead. Also, your code should no longer depend upon 'am_cv_prog_cc_stdc', but upon 'ac_cv_prog_cc_stdc'.])]) AC_DEFUN([AM_C_PROTOTYPES], [AC_FATAL([automatic de-ANSI-fication support has been removed])]) AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2014 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR searchmonkey-0.8.3/Makefile.in0000664000175000017500000006673313236161317013224 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(desktopdir)" DATA = $(desktop_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \ COPYING.LESSER ChangeLog INSTALL NEWS README compile depcomp \ install-sh missing mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_CFLAGS = @PACKAGE_CFLAGS@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ POW_LIB = @POW_LIB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = src po pixmaps EXTRA_DIST = \ autogen.sh \ searchmonkey-0-8-2.glade \ searchmonkey.desktop \ pixmaps/* \ rpmbuild/* \ bsdports/* desktopdir = $(datadir)/applications desktop_in_files = searchmonkey.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 install-desktopDATA: $(desktop_DATA) @$(NORMAL_INSTALL) @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(desktopdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(desktopdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \ done uninstall-desktopDATA: @$(NORMAL_UNINSTALL) @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(desktopdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(desktopdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-desktopDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-desktopDATA .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-desktopDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-am uninstall uninstall-am uninstall-desktopDATA .PRECIOUS: Makefile @INTLTOOL_DESKTOP_RULE@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: searchmonkey-0.8.3/config.h.in0000664000175000017500000001021213236161317013157 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* always defined to indicate that i18n is enabled */ #undef ENABLE_NLS /* Gettext package. */ #undef GETTEXT_PACKAGE /* Define to 1 if you have the `alarm' function. */ #undef HAVE_ALARM /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET /* Define to 1 if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the header file. */ #undef HAVE_LIBINTL_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC /* Define to 1 if you have the `mblen' function. */ #undef HAVE_MBLEN /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if your system has a GNU libc compatible `realloc' function, and to 0 otherwise. */ #undef HAVE_REALLOC /* Define to 1 if you have the `regcomp' function. */ #undef HAVE_REGCOMP /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ #undef LSTAT_FOLLOWS_SLASHED_SYMLINK /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Version number of package */ #undef VERSION /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define to `long int' if does not define. */ #undef off_t /* Define to rpl_realloc if the replacement function should be used. */ #undef realloc /* Define to the equivalent of the C99 'restrict' keyword, or to nothing if this is not supported. Do not define if restrict is supported directly. */ #undef restrict /* Work around a bug in Sun C++: it does not support _Restrict or __restrict__, even though the corresponding Sun C compiler ends up with "#define restrict _Restrict" or "#define restrict __restrict__" in the previous line. Perhaps some future version of Sun C++ will work with restrict; if so, hopefully it defines __RESTRICT like Sun C does. */ #if defined __SUNPRO_CC && !defined __RESTRICT # define _Restrict # define __restrict__ #endif /* Define to `unsigned int' if does not define. */ #undef size_t searchmonkey-0.8.3/AUTHORS0000664000175000017500000000007613236161317012213 00000000000000Searchmonkey Founder: Adam Cottrell - cottrell@users.sf.net searchmonkey-0.8.3/COPYING.LESSER0000664000175000017500000006345213236161317013201 00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. Another cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does insure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! searchmonkey-0.8.3/ChangeLog0000664000175000017500000000072713236161317012720 00000000000000To see the latest changes, check out the release notes. There is a document for every release of searchmonkey, or see: http://searchmonkey.sourceforge.net/index.php/Searchmonkey_Installation#Release_Notes for the full list. For code checked out using subversion, get a live change log with: $ svn log . from within the check out directory, or to see the online log use: $ svn log https://svn.sourceforge.net/svnroot/searchmonkey/trunk to see trunk changes to date. searchmonkey-0.8.3/INSTALL0000664000175000017500000003661013236161317012177 00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command `./configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. searchmonkey-0.8.3/NEWS0000664000175000017500000000010513236161317011633 00000000000000For the latest news see: http://sourceforge.net/news/?group_id=175143searchmonkey-0.8.3/README0000664000175000017500000000117013236161317012017 00000000000000searchmonkey ============ For full installation instructions see: http://searchmonkey.sf.net/index.php/Searchmonkey_Installation For most systems simply run: $ ./configure $ make If there are no errors reported by configure/make, as super user: # make install If you are using a Gnome based distro e.g. Fedora or Suse. # make install-gnome will create a launcher icon. To uninstall, as super user: # make uninstall The source code can then be removed completely, if required. Enjoy! Adam - Searchmonkey founder Hosted by Sourceforge: https://www.sf.net/projects/searchmonkey Homepage: http:/searchmonkey.embeddediq.com searchmonkey-0.8.3/compile0000775000175000017500000001624513236161317012526 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: searchmonkey-0.8.3/depcomp0000775000175000017500000005601613236161317012525 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: searchmonkey-0.8.3/install-sh0000775000175000017500000003546313236161317013157 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2014-09-12.12; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: searchmonkey-0.8.3/missing0000775000175000017500000001533013236161317012541 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: searchmonkey-0.8.3/mkinstalldirs0000775000175000017500000000672213236161317013755 00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy scriptversion=2009-04-28.21; # UTC # Original author: Noah Friedman # Created: 1993-05-16 # Public domain. # # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' IFS=" "" $nl" errstatus=0 dirmode= usage="\ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Create each directory DIR (with mode MODE, if specified), including all leading file name components. Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" exit $? ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --version) echo "$0 $scriptversion" exit $? ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac # Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and # mkdir -p a/c at the same time, both will detect that a is missing, # one will create a, then the other will try to create a and die with # a "File exists" error. This is a problem when calling mkinstalldirs # from a parallel make. We use --version in the probe to restrict # ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" else # On NextStep and OpenStep, the 'mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because '.' already # exists. test -d ./-p && rmdir ./-p test -d ./--version && rmdir ./--version fi ;; *) if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" else # Clean up after NextStep and OpenStep mkdir. for d in ./-m ./-p ./--version "./$dirmode"; do test -d $d && rmdir $d done fi ;; esac for file do case $file in /*) pathcomp=/ ;; *) pathcomp= ;; esac oIFS=$IFS IFS=/ set fnord $file shift IFS=$oIFS for d do test "x$d" = x && continue pathcomp=$pathcomp$d case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr= chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp=$pathcomp/ done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: searchmonkey-0.8.3/autogen.sh0000775000175000017500000001057413236161317013150 00000000000000#!/bin/sh # Run this to generate all the initial makefiles, etc. srcdir=`dirname $0` test -z "$srcdir" && srcdir=. DIE=0 if [ -n "$GNOME2_DIR" ]; then ACLOCAL_FLAGS="-I $GNOME2_DIR/share/aclocal $ACLOCAL_FLAGS" LD_LIBRARY_PATH="$GNOME2_DIR/lib:$LD_LIBRARY_PATH" PATH="$GNOME2_DIR/bin:$PATH" export PATH export LD_LIBRARY_PATH fi (test -f $srcdir/configure.in) || { echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" echo " top-level package directory" exit 1 } (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`autoconf' installed." echo "Download the appropriate package for your distribution," echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" DIE=1 } (grep "^AC_PROG_INTLTOOL" $srcdir/configure.in >/dev/null) && { (intltoolize --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`intltool' installed." echo "You can get it from:" echo " ftp://ftp.gnome.org/pub/GNOME/" DIE=1 } } (grep "^AM_PROG_XML_I18N_TOOLS" $srcdir/configure.in >/dev/null) && { (xml-i18n-toolize --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`xml-i18n-toolize' installed." echo "You can get it from:" echo " ftp://ftp.gnome.org/pub/GNOME/" DIE=1 } } (grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { (libtool --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`libtool' installed." echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/" DIE=1 } } (grep "^AM_GLIB_GNU_GETTEXT" $srcdir/configure.in >/dev/null) && { (grep "sed.*POTFILES" $srcdir/configure.in) > /dev/null || \ (glib-gettextize --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`glib' installed." echo "You can get it from: ftp://ftp.gtk.org/pub/gtk" DIE=1 } } (automake --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`automake' installed." echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/" DIE=1 NO_AUTOMAKE=yes } # if no automake, don't bother testing for aclocal test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: Missing \`aclocal'. The version of \`automake'" echo "installed doesn't appear recent enough." echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/" DIE=1 } if test "$DIE" -eq 1; then exit 1 fi if test -z "$*"; then echo "**Warning**: I am going to run \`configure' with no arguments." echo "If you wish to pass any to it, please specify them on the" echo \`$0\'" command line." echo fi case $CC in xlc ) am_opt=--include-deps;; esac for coin in `find $srcdir -name configure.in -print` do dr=`dirname $coin` if test -f $dr/NO-AUTO-GEN; then echo skipping $dr -- flagged as no auto-gen else echo processing $dr ( cd $dr aclocalinclude="$ACLOCAL_FLAGS" if grep "^AM_GLIB_GNU_GETTEXT" configure.in >/dev/null; then echo "Creating $dr/aclocal.m4 ..." test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 echo "Running glib-gettextize... Ignore non-fatal messages." echo "no" | glib-gettextize --force --copy echo "Making $dr/aclocal.m4 writable ..." test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 fi if grep "^AC_PROG_INTLTOOL" configure.in >/dev/null; then echo "Running intltoolize..." intltoolize --copy --force --automake fi if grep "^AM_PROG_XML_I18N_TOOLS" configure.in >/dev/null; then echo "Running xml-i18n-toolize..." xml-i18n-toolize --copy --force --automake fi if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then if test -z "$NO_LIBTOOLIZE" ; then echo "Running libtoolize..." libtoolize --force --copy fi fi echo "Running aclocal $aclocalinclude ..." aclocal $aclocalinclude if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then echo "Running autoheader..." autoheader fi echo "Running automake --gnu $am_opt ..." automake --add-missing --gnu $am_opt echo "Running autoconf ..." autoconf ) fi done conf_flags="--enable-maintainer-mode" if test x$NOCONFIGURE = x; then echo Running $srcdir/configure $conf_flags "$@" ... $srcdir/configure $conf_flags "$@" \ && echo Now type \`make\' to compile. || exit 1 else echo Skipping configure process. fi searchmonkey-0.8.3/searchmonkey-0-8-2.glade0000664000175000017500000126314713236164262015307 00000000000000 True False About searchmonkey False True center-on-parent True searchmonkey.png dialog True True False True False spread True True True False False True False 0 0 True False 2 True False gtk-about False False 0 True False Credits True False False 1 False False 0 gtk-close True True True True False False True False False 1 False True end 0 True False True False searchmonkey-300x300.png True True 0 True False 5 True True True 1 True False 4 <i>Regular expression power search utility written in GTK+ and licensed under Lesser GPL.</i> True fill True False False 2 True False 4 Copyright (c) 2006-2007 Adam Cottrell True False False 3 True True 1 aboutCredits button48 True False Auto Complete True center-on-parent True dialog True True False True False end gtk-cancel True True True False False True False False 0 gtk-ok True False True True True False False True False False 1 False True end 0 True False 470 200 True True automatic automatic in True True False word False True True 0 True False 0.0099999997764800008 0 Please wait... False False 1 True True 2 cancelbutton4 okbutton5 True False popup Select Date... False True mouse utility True True False True False True False Mer True True True 0 True False <b>25</b> True True True 1 True False Févriier True True 2 True True 0 True False gtk-cancel True True True False False True False False 0 gtk-ok True True True False False True False False 1 False True end 0 True True True True 2 cancelbutton5 okbutton6 True False Clear Search History False center-on-parent True gtk-clear dialog True True True False True False edge gtk-ok True True True False False True right False False 0 gtk-cancel True True True False False True False False 1 False True end 0 True False 4 True False 0 in True False 4 12 True False 2 Clear file names True True False False True True True False False 0 Clear containing text True True False False True True True False False 1 Clear look in history True True False False True True True False False 2 Reset size/modified options True True False False True True True False False 3 True False True False gtk-missing-image 3 True True 0 True False <b>Select which data to delete:</b> True True True 1 True True 0 True False 5 5 <b>Warning</b>: Once cleared, history cannot be recovered! True center True False False 1 True False False True 2 True True 2 okbutton1 cancelbutton1 True False 4 Configuration True True gtk-preferences dialog True True False True False gtk-cancel True True True False False True False False 0 gtk-ok True True True True False False True False False 1 False True end 0 True True True False 2 Force single window mode True False True False False True True False False 5 0 Use extended regular expressions True True False False True True True False False 1 Prompt before saving state True True False False True True False False 2 Prompt before deleting files True True False False True True True False False 3 Match strings within binary files too True False True False False True True False False 4 True False Global Settings False True False 4 True False 4 3 True False 5 Default text editor: 1 2 GTK_FILL True False 5 Default folder explorer: 2 3 GTK_FILL True False Binary/Executable 1 2 GTK_FILL True False Attributes 2 3 GTK_FILL True False 5 Default web browser: 3 4 GTK_FILL True True %f False False True True 2 3 1 2 GTK_SHRINK | GTK_FILL True True %d False False True True 2 3 2 3 GTK_SHRINK | GTK_FILL True True -new-tab %f False False True True 2 3 3 4 GTK_SHRINK | GTK_FILL True True False False True True 1 2 1 2 True True False False True True 1 2 2 3 True True False False True True 1 2 3 4 True True 4 0 True False True True 1 True False 4 True False 5 Find default executables: False False 1 Auto search... True True False False True False False 2 False True 2 1 True False System Calls 1 False True False True False 2 True True False End of row separator: False False 3 0 True False Value/field separator: False False 3 1 True False Text delimiter: False False 3 2 False True 0 True False True True True 2 2 \n True False False True True False True 2 0 True True 2 2 , True False False True True False True 2 1 True True 2 2 \" True False False True True False True 2 2 False True 1 2 True False Csv Export 2 False True False 2 True False 4 True False 0 Remove all saved settings (restart required to complete): False False 0 Reset all True True False False True True False 1 False False 4 0 True False False True 1 True False 4 True False 0 Save settings immediately (normally occurs on exit): False False 0 Save now True True False False True True False 1 False False 2 True False 4 True False 0 Current Config file location: False False 0 True True False False False True True True True 4 1 False False 3 3 True False System 3 False True True 4 2 cancelbutton2 okbutton3 True False searchmonkey Credits False True center-on-parent True gtk-about dialog True True True False True False end gtk-close True True True False False True False False 0 False True end 0 185 True True True True never automatic in True True False False True False Written by False True True never automatic in True True False False 1 True False Translated by 1 False True True 2 closebutton1 True False Expression Wizard center-on-parent True dialog True True True False 4 True False end gtk-help True True True False False True False False 0 gtk-cancel True True True False False True False False 1 gtk-ok True False True True False False True False False 2 False True end 0 True False 4 True False 4 True False Text begins: False False 4 0 True False False False False True True True True 1 True False True False False True True True True 2 True False that occurs False False 4 3 True False False False False False True True True True 4 4 False False 4 0 True False 0 none True False 4 True False 4 True False 4 True False False False False True True True True 0 True False True False False True True True True 1 True False that occurs False False 2 True False False False False False True True True True 3 True False False True True True True 4 False False 0 True True automatic automatic True True True False True True 1 True True 10 0 True False 4 Add True False True False False True False False 0 Update True False True False False True False False 1 Modify True False True False False True False False 2 Delete True False True False False True False False 3 False False 1 True False <b>Text contains</b> True True True 1 True False 4 True False Text ends: False False 4 0 True False False False False True True True True 1 True False True False False True True True True 2 True False that occurs False False 3 True False False False False False True True True True 4 False False 4 2 True False False True 3 True False 0 none True False 12 True False 4 True True False False False True True True True 0 Convert Internals True True False False True True True False False 1 True False <b>Resulting expression</b> True False True 4 True True 4 2 wizardHelp cancelExpWiz okRegExWizard 360 True False Export Criteria True center-on-parent True gtk-save-as dialog True True False 4 True False end gtk-cancel True True True False False True False False 0 gtk-ok True True True False False True False False 1 False True end 0 True False True True True False True False save True True 2 0 True False File Selection False True False True False 0 none True False 12 True False File Name Export criteria True True False False True True False False 0 Containing Text Export Criteria True True False False True True fileNameRadioExport False False 1 True False <b>Export Source</b> True False True 2 0 True False 0 none True False 12 True False Save active/displayed entry only True True False False True True False False 0 Save all entries (1-entry per line) True True False False True True singleExportRadio False False 1 True False <b>Export Type</b> True False True 2 1 1 True False Options 1 False True True 5 0 True True 2 2 button45 button46 True False True True Select a folder gtk-open dialog select-folder False True False 24 True False end gtk-cancel True True True False False True False False 0 gtk-open True True True True False False True False False 1 False True end 0 button18 button19 True False 4 Select Font True gtk-select-font dialog True False 4 abcdefghijk ABCDEFGHIJK ok_button2 apply_button1 cancel_button2 True True True False False ok_button2 apply_button1 cancel_button2 True True False False ok_button2 apply_button1 cancel_button2 True True True False False ok_button2 apply_button1 cancel_button2 True False 5 Select Colour False True gtk-select-color dialog True True False 5 help_button1 ok_button1 cancel_button1 True True False False help_button1 ok_button1 cancel_button1 True True True False False help_button1 ok_button1 cancel_button1 True True True False False help_button1 ok_button1 cancel_button1 True False Import Criteria True center-on-parent True gtk-open dialog True True False True False end gtk-cancel True True True False False True False False 0 gtk-ok True True True False False True False False 1 False True end 0 True False True True True False 4 450 200 True False True True 1 0 True False File Selection False True False True False 0 none True False 12 True False File Name import True True False False True True False False 0 Containing Text import True True False False True True fileNameRadioImport False False 1 True False <b>Import Location</b> True False True 2 0 True False 0 none True False 12 True False Grep style file (1-entry, OR each line) True True False False True True False False 0 Searchmonkey style (1-entry per line) True True False False True True singleImportRadio False False 1 True False <b>Import Type</b> True False True 2 1 1 True False Options 1 False True True 4 0 True True 4 2 cancelbutton3 okbutton4 False Edit (File) True False False True False _Copy (Filename) True False False True False _Delete File True False False True False _Explore Folder True False False True False True False True False False C_ancel True False 5 Options ... True dialog True True False 2 True False end gtk-cancel True True True False True False False 0 gtk-apply True True True False True False False 1 True True 0 True False True False 0 out True False 12 True False True False Invert Search Expression True True False False True True False False 0 Match Case True True False False True True False False 1 _Ignore files beginning with '.' True True False False True True True False False 2 Follow Symbol _Links True True False False True True False False 3 True True 0 True False False True 1 True False Use Wil_dcard Syntax True True False False True True True False False 0 Use _Regular Expression Syntax True True False False True True dosExpressionRadioFile False False 1 True True 2 True False <b>Filename</b> True True True 0 True False 0 out True False 12 True False True False Use Single Phase Search True True False False True True False False 0 Match Case True True False False True True False False 1 True True 0 True False False True 1 True False Use simple search syntax True False True False False True True True False False 0 Use _Regular Expression Syntax True True False False True True wildcardCheckContents False False 1 True True 2 True False <b>Contening text</b> True True True 1 True False 0 out True False 12 True False True False Limit Match Files True True False False True True True False False 0 True False True False 5 Maximum Hits: False False 0 True True True False False True True 1 True True 2 1 False False 1 True True 0 True False False True 1 True False Show Line Contents True True False False True True True False False 0 True False True False 5 Lines Displayed: False False 0 True True True False False True True 1 True True 2 1 False True 1 True True 2 True False False True 3 True False Limit Content Hits True False True False False True True True False False 0 True False False True False 5 Maximum Hits: False False 0 True True True False False True True 1 True True 2 1 True True 1 True True 4 True False <b>Results</b> True True True 2 True True 2 button1 button2 True False Save results to CSV file... True True gtk-file dialog True save False True False 24 True False end gtk-cancel True True True False False True False False 0 gtk-save True True True True False False True False False 1 False True end 0 button43 button44 True False Test Regular Expression center-on-parent True dialog True True True True False True False end gtk-apply True True True True False False True False False 0 gtk-close True True True False False True False False 1 False True end 0 True False 4 4 True False 4 Test Expression: False False 0 True True True sample True False False True True True True 4 1 True False 4 Sample Text: False False 2 180 32 True True automatic automatic etched-in True True word True True True 2 3 True False 4 To see the results of your regular expression click apply. Once done, simply close the window. Searches are case sensitive. <b>Note:</b> this tool will only highlight the first match found. True True True False False 7 4 True False False False 5 True False 4 True False 4 4 Status: False False 0 True True False False False True True True True 2 1 False False 6 True True 4 2 okbutton2 closeButton2 True True True searchmonkey True searchmonkey.png True False True False True False False _File True False _New Instance True False False True False True False Save R_esults to CSV... True False False True False True False gtk-print False False True True gtk-print-preview False False True True False False P_rint Setup... True False gtk-quit True False False True True True False False _Edit True False _Delete (File) True False False True False Edit File True False False True False Open Folder True False False True False _Copy (Filename) True False False True False True False False _View True False True False False Show _Toolbar True True True False False Show _Statusbar True True True False True False False Horizontal results True True True False False Vertical results True horizontal_results1 True False True False False S_ort by True False True False False _File Name True True False False _Location True file_name1 True False False _Size True file_name1 True False False _Type True file_name1 True False False _Modified True file_name1 True False False Mat_ches True True file_name1 True False False _Search True False Start True False False True False Stop True False False False True False True False Clear History... True False False True False True False False Settings True False gtk-select-font True False False True True gtk-select-color True False False True True True False True False False Use _Word Wrap True True True False False Auto-size columns True True True False gtk-preferences True False False True True True False False Extras True False _Import Regular Expression... True False False True False _Export Regular Expression... True False False True False True False True False False Test Regular Expression... True True False False _Help True False True False False _User Guide True True False False _Support True True False False Release _Notes True True False False _Forums True True False gtk-about True False False True True False False 0 True False both-horiz True False False False True False False True New Instance True gtk-new False True True False False True False False toolbutton True gtk-preferences False True True False False Import Expression... True gtk-open False True True False False Export Expression... True gtk-save-as False True True False False True False False True Save Results... True gtk-file False True True False False True False False Start True gtk-find False True True False False False gtk-stop False True False False False False gtk-print False True False False 1 True True True True False 1 True True True False True False True False 2 5 True False Files: GTK_FILL 5 _Containing: True True False False True True 2 3 GTK_FILL True False True 1 2 True False True 3 5 True True 0 False True 0 True False False True 5 1 True False 2 3 True False Folders: GTK_FILL 5 True True False False True False 0 0 True False 2 True False gtk-open False False 0 True False Select Folder... True False False 1 2 3 GTK_FILL True False Recurse Folders True True False False True True True False False 0 1 2 1 2 GTK_FILL GTK_FILL True False True 1 2 True True 2 True True Basic False True False 7 2 True False True False Files: False False 5 0 True False True True True 1 True False True True 2 Expression Builder... True True False False True False False 5 3 False True 2 True False Containing: True True False False True True False False 5 0 True False True True True 1 Expression Builder... True True False False True False False 5 2 False True 3 True False True True 4 True False 2 5 True False Folders: GTK_FILL True True True False True False 0 0 True False 2 True False gtk-open False False 0 True False Select Folder... True False False 1 4 5 GTK_FILL Recurse Folders True True False False True True True 1 2 1 2 GTK_FILL True False Restrict depth: True True False False True True True True 0 True True True False False True True 1 True True 1 2 3 1 2 True False True 1 4 True True 5 True False True True 6 True False True False Size : True True 0 More than: True True False False True True True True 1 True False True 9 True 10 True False False True True True True 2 True False True True 3 Less than: True True False False True True True True 4 True False True 9 True 10 True False False True True True True 5 True False True True 6 True True 7 True False True False Modified: True True 0 After: True True False False True True True True 1 True False True False True False False True True True True 2 True False True True False True False calendar False False 3 Before: True True False False True True True True 4 True False True False True False False True True True True 5 True False True True False True False calendar False False 6 True True 8 1 True True Advanced 1 False True False 4 4 True False 0 in True False Invert Search Expression True True False False True True False False 0 Match Case True True False False True True False False 1 _Ignore files beginning with '.' True True False False True True True False False 2 Follow Symbol _Links True True False False True True False False 3 True False False True 4 Use Wil_dcard Syntax True True False False True True True False False 5 Use _Regular Expression Syntax True True False False True True dosExpressionRadioFile False False 6 True False <b>File Name Options</b> True False True 5 0 True False 0 in True False Use Single Phase Search True True False False True True False False 0 Match Case True True False False True True False False 1 True False False True 2 Use simple search syntax True False True False False True True True False False 3 Use _Regular Expression Syntax True True False False True True wildcardCheckContents False False 4 True False <b>File Contents Options</b> True False True 5 1 True False 0 in True False Limit Match Files True True False False True True True False False 0 True False True False 5 Maximum Hits: False False 0 True True False False True True 1 True True 2 1 False True 1 True False False True 2 Show Line Contents True True False False True True True False False 3 True False True False 5 Lines Displayed: False False 0 True True False False True True 1 True True 2 1 False True 4 True False True True 5 Limit Content Hits True False True False False True True True False False 6 True False False True False 5 Maximum Hits: False False 0 True True False False True True 1 True True 2 1 True True 7 True False <b>Results Options</b> True False True 5 2 2 True True Options 2 False True True 4 1 True False Expert Mode True False False True True True True False 5 0 True True False False True False 0 0 True False 2 True False gtk-find False False 0 True False Start True False False 1 False False 1 gtk-stop True False True False False True False False 2 False True 4 3 True False Search criteria False True 4 True False True True 5 True True True True automatic automatic 250 True True True True True True automatic automatic True True 5 False word 5 5 False True True True True True 8 True True True automatic automatic True True True True True True automatic automatic True True 5 False word 5 5 False True True True True True 9 True False True False False True True 0 True False 0.10000000149 False False 1 False False 10 searchmonkey-0.8.3/searchmonkey.desktop0000775000175000017500000000105213236164262015226 00000000000000[Desktop Entry] Version=1.0 Name=Searchmonkey Name[fr]=Recherche Searchmonkey Name[ru]=поиск с Searchmonkey Name[es]=Búsqueda Searchmonkey Comment=Deep search using regular expressions Comment[fr]=Recherche en profondeur grâce aux expressions régulières (RegEx) Comment[ru]=Углубленный поиск с регулярными выражениями(RegEX) Comment[es]=Búsqueda en profundidad con expresiones regulares (RegEx) Exec=searchmonkey Icon=searchmonkey StartupNotify=true Terminal=false Type=Application Categories=System;GTK searchmonkey-0.8.3/src/0000775000175000017500000000000013236164477012021 500000000000000searchmonkey-0.8.3/src/Makefile.am0000664000175000017500000000100313236161317013755 00000000000000## Process this file with automake to produce Makefile.in AM_CPPFLAGS = \ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \ -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \ @PACKAGE_CFLAGS@ bin_PROGRAMS = searchmonkey searchmonkey_SOURCES = \ main.c \ support.c support.h \ interface.c interface.h \ callbacks.c callbacks.h \ search.c search.h \ savestate.c savestate.h \ regexwizard.c regexwizard.h \ systemio.c systemio.h \ misc.c misc.h \ lgpl.h searchmonkey_LDADD = @PACKAGE_LIBS@ $(INTLLIBS) searchmonkey-0.8.3/src/Makefile.in0000664000175000017500000004632013236161317014001 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : bin_PROGRAMS = searchmonkey$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_searchmonkey_OBJECTS = main.$(OBJEXT) support.$(OBJEXT) \ interface.$(OBJEXT) callbacks.$(OBJEXT) search.$(OBJEXT) \ savestate.$(OBJEXT) regexwizard.$(OBJEXT) systemio.$(OBJEXT) \ misc.$(OBJEXT) searchmonkey_OBJECTS = $(am_searchmonkey_OBJECTS) am__DEPENDENCIES_1 = searchmonkey_DEPENDENCIES = $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(searchmonkey_SOURCES) DIST_SOURCES = $(searchmonkey_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ $(top_srcdir)/mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_CFLAGS = @PACKAGE_CFLAGS@ PACKAGE_LIBS = @PACKAGE_LIBS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ POW_LIB = @POW_LIB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CPPFLAGS = \ -DPACKAGE_DATA_DIR=\""$(datadir)"\" \ -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \ @PACKAGE_CFLAGS@ searchmonkey_SOURCES = \ main.c \ support.c support.h \ interface.c interface.h \ callbacks.c callbacks.h \ search.c search.h \ savestate.c savestate.h \ regexwizard.c regexwizard.h \ systemio.c systemio.h \ misc.c misc.h \ lgpl.h searchmonkey_LDADD = @PACKAGE_LIBS@ $(INTLLIBS) all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) searchmonkey$(EXEEXT): $(searchmonkey_OBJECTS) $(searchmonkey_DEPENDENCIES) $(EXTRA_searchmonkey_DEPENDENCIES) @rm -f searchmonkey$(EXEEXT) $(AM_V_CCLD)$(LINK) $(searchmonkey_OBJECTS) $(searchmonkey_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regexwizard.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/savestate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/search.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/support.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/systemio.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-binPROGRAMS install-data install-data-am \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: searchmonkey-0.8.3/src/main.c0000664000175000017500000001143313236161317013021 00000000000000/* * Initial main.c file generated by Glade. Edit as required. * Glade will not overwrite this file. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include #include #include "interface.h" #include "support.h" #include "search.h" #include "savestate.h" /* Add support for save/restore config.ini */ GtkWidget *mainWindowApp = NULL; /* Holds pointer to the main window (global) */ gchar *gConfigFile = NULL; /* created by main(), destroyed by destroyGKeyFile() */ /* * Searchmonkey entry point */ int main (int argc, char *argv[]) { GdkPixbuf* pixBuf; gchar *tmpStr; gint opt; gboolean fDparameter = FALSE; gboolean fTparameter = FALSE; gboolean fFparameter = FALSE; #ifdef ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif /* Handle GTK command line options and the locale settings */ gtk_set_locale (); gtk_init (&argc, &argv); /* Initiate threads */ if(!g_thread_supported()) /* Luc A janv 2018 ; useless if gtk >=2.32*/ g_thread_init (NULL);/* deprecated since 2.32 */ gdk_threads_init ();/* deprecated since gtk 3.6 */ gdk_threads_enter ();/* id */ /* Create main window, and load (create) ini config file */ add_pixmap_directory (PACKAGE_DATA_DIR "/pixmaps/" PACKAGE); /* New location for all pixmaps */ add_pixmap_directory (PACKAGE_DATA_DIR "/pixmaps"); /* Gnome users /usr/share/pixmaps folder */ mainWindowApp = create_window1 (); gConfigFile = g_build_filename(g_get_home_dir(), "." PACKAGE, SEARCHMONKEY_CONFIG, NULL); /* Create hidden directory to store searchmonkey data */ createGKeyFile (G_OBJECT (mainWindowApp), MASTER_OPTIONS_DATA); /* Create pointer to the argv command line */ g_object_set_data(G_OBJECT(mainWindowApp), "argvPointer", argv[0]); /* Set up global strings */ tmpStr = g_strdup_printf(_("\nNo content searching performed for this file.\n\nPlease ensure containing search was enabled, and that an expression was entered prior to starting search.\n")); g_object_set_data_full(G_OBJECT(mainWindowApp), "noContextSearchString", tmpStr, g_free); tmpStr = g_strdup_printf(_("N/A")); g_object_set_data_full(G_OBJECT(mainWindowApp), "notApplicable", tmpStr, g_free); /* some stuff to launch SearchMonkey with parameters - Luc A Janv 2018 */ /* -? = help -d = directory -f = files -t containing text exemple : searchmonkey -d /home/tux -f ODT -t linux */ // g_object_set_data(G_OBJECT(mainWindowApp), "argvParameter1", NULL); while ((opt = getopt(argc, argv, "?d:f:t:")) != -1) { switch (opt) { case 'f': if(!fFparameter) { printf("-f file name parameter=%s\n", optarg); if(optarg!=NULL) g_object_set_data(G_OBJECT(mainWindowApp), "argvParameter2", optarg); else g_object_set_data(G_OBJECT(mainWindowApp), "argvParameter2", NULL); fFparameter = TRUE;} break; case 't': if(!fTparameter) { printf("-t containing text parameter=%s\n", optarg); if(optarg!=NULL) g_object_set_data(G_OBJECT(mainWindowApp), "argvParameter3", optarg); else g_object_set_data(G_OBJECT(mainWindowApp), "argvParameter3", NULL); fTparameter = TRUE;} break; case 'd': if(!fDparameter) { printf("-d directory parameter=%s\n", optarg); if(optarg!=NULL) g_object_set_data(G_OBJECT(mainWindowApp), "argvParameter1", optarg); else g_object_set_data(G_OBJECT(mainWindowApp), "argvParameter1", NULL); fDparameter = TRUE;} break; default: /* '?' */ printf("\n----------------\nhow to launch Searchmonkey with parameters :\nsearchmonkey -d {directory} -f {file name} -t {containing text}\nExample :\n searchmonkey -d /home/tux/documents -f txt -t linux\n"); } }/* wend */ //if(argv[1]!=NULL) // { // printf("** started with %s: **\n", argv[1]); // g_object_set_data(G_OBJECT(mainWindowApp), "argvParameter1", argv[1]); // } //else g_object_set_data(G_OBJECT(mainWindowApp), "argvParameter1", NULL); /* Show app, and start main loop */ gtk_widget_show (mainWindowApp); gtk_main (); /* Clean exit */ gdk_threads_leave ();/* deprecated since gtk 3.6 */ return 0; } searchmonkey-0.8.3/src/support.c0000664000175000017500000000712713236161317013616 00000000000000/* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include "support.h" GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name) { GtkWidget *parent, *found_widget; for (;;) { if (GTK_IS_MENU (widget)) parent = gtk_menu_get_attach_widget (GTK_MENU (widget)); else parent = widget->parent; if (!parent) parent = (GtkWidget*) g_object_get_data (G_OBJECT (widget), "GladeParentKey"); if (parent == NULL) break; widget = parent; } found_widget = (GtkWidget*) g_object_get_data (G_OBJECT (widget), widget_name); if (!found_widget) g_warning ("Widget not found: %s", widget_name); return found_widget; } static GList *pixmaps_directories = NULL; /* Use this function to set the directory containing installed pixmaps. */ void add_pixmap_directory (const gchar *directory) { pixmaps_directories = g_list_prepend (pixmaps_directories, g_strdup (directory)); } /* This is an internally used function to find pixmap files. */ static gchar* find_pixmap_file (const gchar *filename) { GList *elem; /* We step through each of the pixmaps directory to find it. */ elem = pixmaps_directories; while (elem) { gchar *pathname = g_strdup_printf ("%s%s%s", (gchar*)elem->data, G_DIR_SEPARATOR_S, filename); if (g_file_test (pathname, G_FILE_TEST_EXISTS)) return pathname; g_free (pathname); elem = elem->next; } return NULL; } /* This is an internally used function to create pixmaps. */ GtkWidget* create_pixmap (GtkWidget *widget, const gchar *filename) { gchar *pathname = NULL; GtkWidget *pixmap; if (!filename || !filename[0]) return gtk_image_new (); pathname = find_pixmap_file (filename); if (!pathname) { g_warning (_("Couldn't find pixmap file: %s"), filename); return gtk_image_new (); } pixmap = gtk_image_new_from_file (pathname); g_free (pathname); return pixmap; } /* This is an internally used function to create pixmaps. */ GdkPixbuf* create_pixbuf (const gchar *filename) { gchar *pathname = NULL; GdkPixbuf *pixbuf; GError *error = NULL; if (!filename || !filename[0]) return NULL; pathname = find_pixmap_file (filename); if (!pathname) { g_warning (_("Couldn't find pixmap file: %s"), filename); return NULL; } pixbuf = gdk_pixbuf_new_from_file (pathname, &error); if (!pixbuf) { fprintf (stderr, "Failed to load pixbuf file: %s: %s\n", pathname, error->message); g_error_free (error); } g_free (pathname); return pixbuf; } /* This is used to set ATK action descriptions. */ void glade_set_atk_action_description (AtkAction *action, const gchar *action_name, const gchar *description) { gint n_actions, i; n_actions = atk_action_get_n_actions (action); for (i = 0; i < n_actions; i++) { if (!strcmp (atk_action_get_name (action, i), action_name)) atk_action_set_description (action, i, description); } } searchmonkey-0.8.3/src/support.h0000664000175000017500000000372213236161317013620 00000000000000/* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include /* * Standard gettext macros. */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (PACKAGE, String) # define Q_(String) g_strip_context ((String), gettext (String)) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define Q_(String) g_strip_context ((String), (String)) # define N_(String) (String) #endif /* * Public Functions. */ /* * This function returns a widget in a component created by Glade. * Call it with the toplevel widget in the component (i.e. a window/dialog), * or alternatively any widget in the component, and the name of the widget * you want returned. */ GtkWidget* lookup_widget (GtkWidget *widget, const gchar *widget_name); /* Use this function to set the directory containing installed pixmaps. */ void add_pixmap_directory (const gchar *directory); /* * Private Functions. */ /* This is used to create the pixmaps used in the interface. */ GtkWidget* create_pixmap (GtkWidget *widget, const gchar *filename); /* This is used to create the pixbufs used in the interface. */ GdkPixbuf* create_pixbuf (const gchar *filename); /* This is used to set ATK action descriptions. */ void glade_set_atk_action_description (AtkAction *action, const gchar *action_name, const gchar *description); searchmonkey-0.8.3/src/interface.c0000664000175000017500000060233313236164262014044 00000000000000/* * DO NOT EDIT THIS FILE - it is generated by Glade. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include #include "callbacks.h" #include "interface.h" #include "support.h" #define GLADE_HOOKUP_OBJECT(component,widget,name) \ g_object_set_data_full (G_OBJECT (component), name, \ g_object_ref (widget), (GDestroyNotify) g_object_unref) #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \ g_object_set_data (G_OBJECT (component), name, widget) GtkWidget* create_window1 (void) { GtkWidget *window1; GdkPixbuf *window1_icon_pixbuf; GtkWidget *vbox1; GtkWidget *menubar1; GtkWidget *menuitem4; GtkWidget *menuitem4_menu; GtkWidget *newInstance1; GtkWidget *image165; GtkWidget *separatormenuitem1; GtkWidget *save_results1; GtkWidget *image166; GtkWidget *separator5; GtkWidget *print1; GtkWidget *print_preview1; GtkWidget *print_setup1; GtkWidget *separator6; GtkWidget *quit1; GtkWidget *menuitem5; GtkWidget *menuitem5_menu; GtkWidget *delete1; GtkWidget *image167; GtkWidget *edit_file1; GtkWidget *image168; GtkWidget *open_folder1; GtkWidget *image169; GtkWidget *copy2; GtkWidget *image170; GtkWidget *menuitem6; GtkWidget *menuitem6_menu; GtkWidget *toolbar2; GtkWidget *status_bar1; GtkWidget *separator4; GSList *horizontal_results1_group = NULL; GtkWidget *horizontal_results1; GtkWidget *vertical_results1; GtkWidget *separator13; GtkWidget *sort_by1; GtkWidget *sort_by1_menu; GSList *file_name1_group = NULL; GtkWidget *file_name1; GtkWidget *location1; GtkWidget *size1; GtkWidget *type1; GtkWidget *modified1; GtkWidget *matches1; GtkWidget *search1; GtkWidget *search1_menu; GtkWidget *playButton3; GtkWidget *image171; GtkWidget *stopButton3; GtkWidget *image172; GtkWidget *separator2; GtkWidget *cl_ear_history1; GtkWidget *image173; GtkWidget *settings3; GtkWidget *settings3_menu; GtkWidget *set_font1; GtkWidget *set_highligting_colour1; GtkWidget *separator12; GtkWidget *word_wrap1; GtkWidget *autosize_columns; GtkWidget *separator11; GtkWidget *configuration1; GtkWidget *test1; GtkWidget *test1_menu; GtkWidget *open_criteria1; GtkWidget *image174; GtkWidget *save_criteria1; GtkWidget *image175; GtkWidget *separator16; GtkWidget *reg_expression1; GtkWidget *menuitem7; GtkWidget *menuitem7_menu; GtkWidget *contents1; GtkWidget *support1; GtkWidget *online_release_notes1; GtkWidget *forums1; GtkWidget *separator1; GtkWidget *about1; GtkWidget *toolbar1; GtkIconSize tmp_toolbar_icon_size; GtkWidget *toolitem15; GtkWidget *tmp_image; GtkWidget *newInstance2; GtkWidget *separatortoolitem4; GtkWidget *importCriteria; GtkWidget *exportCriteria; GtkWidget *separatortoolitem3; GtkWidget *saveResults; GtkWidget *separatortoolitem2; GtkWidget *playButton2; GtkWidget *stopButton2; GtkWidget *separatortoolitem1; GtkWidget *printResults; GtkWidget *expander1; GtkWidget *hbox68; GtkWidget *searchNotebook; GtkWidget *vbox6; GtkWidget *hbox14; GtkWidget *table4; GtkWidget *fileName2; GtkWidget *label21; GtkWidget *containingTextCheck2; GtkWidget *containingText2; GtkWidget *hseparator10; GtkWidget *table5; GtkWidget *label20; GtkWidget *lookIn2; GtkWidget *folderSelector2; GtkWidget *alignment38; GtkWidget *hbox69; GtkWidget *image92; GtkWidget *label1024; GtkWidget *hbox72; GtkWidget *searchSubfoldersCheck2; GtkWidget *label19; GtkWidget *vbox3; GtkWidget *fileNameHbox; GtkWidget *label22; GtkWidget *fileName; GtkWidget *regExpWizard1; GtkWidget *containingTextHbox; GtkWidget *containingTextCheck; GtkWidget *containingText; GtkWidget *regExpWizard2; GtkWidget *table7; GtkWidget *label6; GtkWidget *lookIn; GtkWidget *searchSubfoldersCheck; GtkWidget *folderDepthCheck; GtkWidget *folderSelector; GtkWidget *alignment18; GtkWidget *hbox40; GtkWidget *image9; GtkWidget *label253; GtkObject *folderDepthSpin_adj; GtkWidget *folderDepthSpin; // GtkWidget *searchModifierTable; GtkWidget *moreThanEntry; GtkWidget *lessThanEntry; GtkWidget *label17; GtkWidget *label16; GtkWidget *lessThanCheck; GtkWidget *beforeCheck; GtkWidget *moreThanCheck; GtkWidget *afterCheck; GtkWidget *hbox70; GtkWidget *afterEntry; GtkWidget *afterCalendarBtn; GtkWidget *image93; GtkWidget *hbox71; GtkWidget *beforeEntry; GtkWidget *beforeCalendarBtn; GtkWidget *image94; GtkWidget *label1; GtkWidget *hbox62; GtkWidget *frame1; GtkWidget *vbox47; GtkWidget *notExpressionCheckFile; GtkWidget *matchCaseCheckFile; GtkWidget *ignoreHiddenFiles; GtkWidget *followSymLinksCheck; GtkWidget *hseparator9; GtkWidget *dosExpressionRadioFile; GSList *dosExpressionRadioFile_group = NULL; GtkWidget *regularExpressionRadioFile; GtkWidget *label13; GtkWidget *frame2; GtkWidget *vbox46; GtkWidget *singlePhaseCheckContents; GtkWidget *matchCaseCheckContents; GtkWidget *hseparator8; GtkWidget *wildcardCheckContents; GSList *wildcardCheckContents_group = NULL; GtkWidget *regularExpressionRadioContents; GtkWidget *label14; GtkWidget *frame16; GtkWidget *vbox45; GtkWidget *limitResultsCheckResults; GtkWidget *limit_results_hbox; GtkWidget *label1010; GtkObject *maxHitsSpinResults_adj; GtkWidget *maxHitsSpinResults; GtkWidget *hseparator7; GtkWidget *showLinesCheckResults; GtkWidget *show_line_contents_hbox; GtkWidget *label1009; GtkObject *showLinesSpinResults_adj; GtkWidget *showLinesSpinResults; GtkWidget *hseparator11; GtkWidget *limitContentsCheckResults; GtkWidget *limit_contents_hbox; GtkWidget *label1025; GtkObject *maxContentHitsSpinResults_adj; GtkWidget *maxContentHitsSpinResults; GtkWidget *label1008; GtkWidget *label2; /* GtkWidget *vseparator8; non used */ GtkWidget *vbox2; GtkWidget *expertUserCheck; GtkWidget *playButton1; GtkWidget *alignment36; GtkWidget *hbox67; GtkWidget *image27; GtkWidget *label1015; GtkWidget *stopButton1; GtkWidget *label1016; GtkWidget *resultsHPane; GtkWidget *resultsScroll; GtkWidget *treeview1; GtkWidget *scrolledwindow1; GtkWidget *textview1; GtkWidget *resultsVPane; GtkWidget *scrolledwindow15; GtkWidget *treeview2; GtkWidget *scrolledwindow16; GtkWidget *textview4; GtkWidget *hbox41; GtkWidget *statusbar1; GtkWidget *progressbar1; GtkAccelGroup *accel_group; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); accel_group = gtk_accel_group_new (); window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); GTK_WIDGET_SET_FLAGS (window1, GTK_CAN_FOCUS); gtk_tooltips_set_tip (tooltips, window1, _("Desktop search to replace find and grep."), NULL); gtk_window_set_title (GTK_WINDOW (window1), _("searchmonkey")); gtk_window_set_destroy_with_parent (GTK_WINDOW (window1), TRUE); window1_icon_pixbuf = create_pixbuf ("searchmonkey.png"); if (window1_icon_pixbuf) { gtk_window_set_icon (GTK_WINDOW (window1), window1_icon_pixbuf); g_object_unref (G_OBJECT (window1_icon_pixbuf)); // gdk_pixbuf_unref (window1_icon_pixbuf); } vbox1 = gtk_vbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox1), 4); gtk_widget_show (vbox1); gtk_container_add (GTK_CONTAINER (window1), vbox1); menubar1 = gtk_menu_bar_new (); gtk_widget_show (menubar1); gtk_box_pack_start (GTK_BOX (vbox1), menubar1, FALSE, FALSE, 0); menuitem4 = gtk_menu_item_new_with_mnemonic (_("_File")); gtk_widget_show (menuitem4); gtk_container_add (GTK_CONTAINER (menubar1), menuitem4); menuitem4_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menuitem4_menu); newInstance1 = gtk_image_menu_item_new_with_mnemonic (_("_New Instance")); gtk_widget_show (newInstance1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), newInstance1); gtk_widget_add_accelerator (newInstance1, "activate", accel_group, GDK_KEY_n, (GdkModifierType) GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE); image165 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU); gtk_widget_show (image165); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (newInstance1), image165); separatormenuitem1 = gtk_separator_menu_item_new (); gtk_widget_show (separatormenuitem1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), separatormenuitem1); gtk_widget_set_sensitive (separatormenuitem1, FALSE); save_results1 = gtk_image_menu_item_new_with_mnemonic (_("Save R_esults to CSV...")); gtk_widget_show (save_results1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), save_results1); image166 = gtk_image_new_from_stock ("gtk-file", GTK_ICON_SIZE_MENU); gtk_widget_show (image166); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (save_results1), image166); separator5 = gtk_separator_menu_item_new (); gtk_widget_show (separator5); gtk_container_add (GTK_CONTAINER (menuitem4_menu), separator5); gtk_widget_set_sensitive (separator5, FALSE); print1 = gtk_image_menu_item_new_from_stock ("gtk-print", accel_group); gtk_container_add (GTK_CONTAINER (menuitem4_menu), print1); print_preview1 = gtk_image_menu_item_new_from_stock ("gtk-print-preview", accel_group); gtk_container_add (GTK_CONTAINER (menuitem4_menu), print_preview1); print_setup1 = gtk_menu_item_new_with_mnemonic (_("P_rint Setup...")); gtk_container_add (GTK_CONTAINER (menuitem4_menu), print_setup1); separator6 = gtk_separator_menu_item_new (); gtk_container_add (GTK_CONTAINER (menuitem4_menu), separator6); gtk_widget_set_sensitive (separator6, FALSE); quit1 = gtk_image_menu_item_new_from_stock ("gtk-quit", accel_group); gtk_widget_show (quit1); gtk_container_add (GTK_CONTAINER (menuitem4_menu), quit1); menuitem5 = gtk_menu_item_new_with_mnemonic (_("_Edit")); gtk_widget_show (menuitem5); gtk_container_add (GTK_CONTAINER (menubar1), menuitem5); menuitem5_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem5), menuitem5_menu); delete1 = gtk_image_menu_item_new_with_mnemonic (_("_Delete (File)")); gtk_widget_show (delete1); gtk_container_add (GTK_CONTAINER (menuitem5_menu), delete1); image167 = gtk_image_new_from_stock ("gtk-delete", GTK_ICON_SIZE_MENU); gtk_widget_show (image167); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (delete1), image167); edit_file1 = gtk_image_menu_item_new_with_mnemonic (_("Edit File")); gtk_widget_show (edit_file1); gtk_container_add (GTK_CONTAINER (menuitem5_menu), edit_file1); image168 = gtk_image_new_from_stock ("gtk-edit", GTK_ICON_SIZE_MENU); gtk_widget_show (image168); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (edit_file1), image168); open_folder1 = gtk_image_menu_item_new_with_mnemonic (_("Open Folder")); gtk_widget_show (open_folder1); gtk_container_add (GTK_CONTAINER (menuitem5_menu), open_folder1); image169 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU); gtk_widget_show (image169); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (open_folder1), image169); copy2 = gtk_image_menu_item_new_with_mnemonic (_("_Copy (Filename)")); gtk_widget_show (copy2); gtk_container_add (GTK_CONTAINER (menuitem5_menu), copy2); image170 = gtk_image_new_from_stock ("gtk-copy", GTK_ICON_SIZE_MENU); gtk_widget_show (image170); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (copy2), image170); menuitem6 = gtk_menu_item_new_with_mnemonic (_("_View")); gtk_widget_show (menuitem6); gtk_container_add (GTK_CONTAINER (menubar1), menuitem6); menuitem6_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem6), menuitem6_menu); toolbar2 = gtk_check_menu_item_new_with_mnemonic (_("Show _Toolbar")); gtk_widget_show (toolbar2); gtk_container_add (GTK_CONTAINER (menuitem6_menu), toolbar2); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (toolbar2), TRUE); status_bar1 = gtk_check_menu_item_new_with_mnemonic (_("Show _Statusbar")); gtk_widget_show (status_bar1); gtk_container_add (GTK_CONTAINER (menuitem6_menu), status_bar1); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (status_bar1), TRUE); separator4 = gtk_separator_menu_item_new (); gtk_widget_show (separator4); gtk_container_add (GTK_CONTAINER (menuitem6_menu), separator4); gtk_widget_set_sensitive (separator4, FALSE); horizontal_results1 = gtk_radio_menu_item_new_with_mnemonic (horizontal_results1_group, _("Horizontal results")); horizontal_results1_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (horizontal_results1)); gtk_widget_show (horizontal_results1); gtk_container_add (GTK_CONTAINER (menuitem6_menu), horizontal_results1); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (horizontal_results1), TRUE); vertical_results1 = gtk_radio_menu_item_new_with_mnemonic (horizontal_results1_group, _("Vertical results")); horizontal_results1_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (vertical_results1)); gtk_widget_show (vertical_results1); gtk_container_add (GTK_CONTAINER (menuitem6_menu), vertical_results1); separator13 = gtk_separator_menu_item_new (); gtk_widget_show (separator13); gtk_container_add (GTK_CONTAINER (menuitem6_menu), separator13); gtk_widget_set_sensitive (separator13, FALSE); sort_by1 = gtk_menu_item_new_with_mnemonic (_("S_ort by")); gtk_widget_show (sort_by1); gtk_container_add (GTK_CONTAINER (menuitem6_menu), sort_by1); sort_by1_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (sort_by1), sort_by1_menu); file_name1 = gtk_radio_menu_item_new_with_mnemonic (file_name1_group, _("_File Name")); file_name1_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (file_name1)); gtk_widget_show (file_name1); gtk_container_add (GTK_CONTAINER (sort_by1_menu), file_name1); location1 = gtk_radio_menu_item_new_with_mnemonic (file_name1_group, _("_Location")); file_name1_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (location1)); gtk_widget_show (location1); gtk_container_add (GTK_CONTAINER (sort_by1_menu), location1); size1 = gtk_radio_menu_item_new_with_mnemonic (file_name1_group, _("_Size")); file_name1_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (size1)); gtk_widget_show (size1); gtk_container_add (GTK_CONTAINER (sort_by1_menu), size1); type1 = gtk_radio_menu_item_new_with_mnemonic (file_name1_group, _("_Type")); file_name1_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (type1)); gtk_widget_show (type1); gtk_container_add (GTK_CONTAINER (sort_by1_menu), type1); modified1 = gtk_radio_menu_item_new_with_mnemonic (file_name1_group, _("_Modified")); file_name1_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (modified1)); gtk_widget_show (modified1); gtk_container_add (GTK_CONTAINER (sort_by1_menu), modified1); matches1 = gtk_radio_menu_item_new_with_mnemonic (file_name1_group, _("Mat_ches")); file_name1_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (matches1)); gtk_widget_show (matches1); gtk_container_add (GTK_CONTAINER (sort_by1_menu), matches1); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (matches1), TRUE); search1 = gtk_menu_item_new_with_mnemonic (_("_Search")); gtk_widget_show (search1); gtk_container_add (GTK_CONTAINER (menubar1), search1); search1_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (search1), search1_menu); playButton3 = gtk_image_menu_item_new_with_mnemonic (_("Start")); gtk_widget_show (playButton3); gtk_container_add (GTK_CONTAINER (search1_menu), playButton3); gtk_widget_add_accelerator (playButton3, "activate", accel_group, GDK_KEY_Return, (GdkModifierType) 0, GTK_ACCEL_VISIBLE); image171 = gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_MENU); gtk_widget_show (image171); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (playButton3), image171); stopButton3 = gtk_image_menu_item_new_with_mnemonic (_("Stop")); gtk_widget_show (stopButton3); gtk_container_add (GTK_CONTAINER (search1_menu), stopButton3); gtk_widget_set_sensitive (stopButton3, FALSE); gtk_widget_add_accelerator (stopButton3, "activate", accel_group, GDK_KEY_Escape, (GdkModifierType) 0, GTK_ACCEL_VISIBLE); image172 = gtk_image_new_from_stock ("gtk-stop", GTK_ICON_SIZE_MENU); gtk_widget_show (image172); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (stopButton3), image172); separator2 = gtk_separator_menu_item_new (); gtk_widget_show (separator2); gtk_container_add (GTK_CONTAINER (search1_menu), separator2); gtk_widget_set_sensitive (separator2, FALSE); cl_ear_history1 = gtk_image_menu_item_new_with_mnemonic (_("Clear History...")); gtk_widget_show (cl_ear_history1); gtk_container_add (GTK_CONTAINER (search1_menu), cl_ear_history1); image173 = gtk_image_new_from_stock ("gtk-clear", GTK_ICON_SIZE_MENU); gtk_widget_show (image173); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (cl_ear_history1), image173); settings3 = gtk_menu_item_new_with_mnemonic (_("Settings")); gtk_widget_show (settings3); gtk_container_add (GTK_CONTAINER (menubar1), settings3); settings3_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (settings3), settings3_menu); set_font1 = gtk_image_menu_item_new_from_stock ("gtk-select-font", accel_group); gtk_widget_show (set_font1); gtk_container_add (GTK_CONTAINER (settings3_menu), set_font1); set_highligting_colour1 = gtk_image_menu_item_new_from_stock ("gtk-select-color", accel_group); gtk_widget_show (set_highligting_colour1); gtk_container_add (GTK_CONTAINER (settings3_menu), set_highligting_colour1); separator12 = gtk_separator_menu_item_new (); gtk_widget_show (separator12); gtk_container_add (GTK_CONTAINER (settings3_menu), separator12); gtk_widget_set_sensitive (separator12, FALSE); word_wrap1 = gtk_check_menu_item_new_with_mnemonic (_("Use _Word Wrap")); gtk_widget_show (word_wrap1); gtk_container_add (GTK_CONTAINER (settings3_menu), word_wrap1); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (word_wrap1), TRUE); autosize_columns = gtk_check_menu_item_new_with_mnemonic (_("Auto-size columns")); gtk_widget_show (autosize_columns); gtk_container_add (GTK_CONTAINER (settings3_menu), autosize_columns); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (autosize_columns), TRUE); separator11 = gtk_separator_menu_item_new (); gtk_widget_show (separator11); gtk_container_add (GTK_CONTAINER (settings3_menu), separator11); gtk_widget_set_sensitive (separator11, FALSE); configuration1 = gtk_image_menu_item_new_from_stock ("gtk-preferences", accel_group); gtk_widget_show (configuration1); gtk_container_add (GTK_CONTAINER (settings3_menu), configuration1); test1 = gtk_menu_item_new_with_mnemonic (_("Extras")); gtk_widget_show (test1); gtk_container_add (GTK_CONTAINER (menubar1), test1); test1_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (test1), test1_menu); open_criteria1 = gtk_image_menu_item_new_with_mnemonic (_("_Import Regular Expression...")); gtk_widget_show (open_criteria1); gtk_container_add (GTK_CONTAINER (test1_menu), open_criteria1); gtk_widget_add_accelerator (open_criteria1, "activate", accel_group, GDK_KEY_o, (GdkModifierType) GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE); image174 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU); gtk_widget_show (image174); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (open_criteria1), image174); save_criteria1 = gtk_image_menu_item_new_with_mnemonic (_("_Export Regular Expression...")); gtk_widget_show (save_criteria1); gtk_container_add (GTK_CONTAINER (test1_menu), save_criteria1); gtk_widget_add_accelerator (save_criteria1, "activate", accel_group, GDK_KEY_s, (GdkModifierType) GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE); image175 = gtk_image_new_from_stock ("gtk-save-as", GTK_ICON_SIZE_MENU); gtk_widget_show (image175); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (save_criteria1), image175); separator16 = gtk_separator_menu_item_new (); gtk_widget_show (separator16); gtk_container_add (GTK_CONTAINER (test1_menu), separator16); gtk_widget_set_sensitive (separator16, FALSE); reg_expression1 = gtk_menu_item_new_with_mnemonic (_("Test Regular Expression...")); gtk_widget_show (reg_expression1); gtk_container_add (GTK_CONTAINER (test1_menu), reg_expression1); menuitem7 = gtk_menu_item_new_with_mnemonic (_("_Help")); gtk_widget_show (menuitem7); gtk_container_add (GTK_CONTAINER (menubar1), menuitem7); menuitem7_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem7), menuitem7_menu); contents1 = gtk_menu_item_new_with_mnemonic (_("_User Guide")); gtk_widget_show (contents1); gtk_container_add (GTK_CONTAINER (menuitem7_menu), contents1); gtk_widget_add_accelerator (contents1, "activate", accel_group, GDK_KEY_F1, (GdkModifierType) 0, GTK_ACCEL_VISIBLE); support1 = gtk_menu_item_new_with_mnemonic (_("_Support")); gtk_widget_show (support1); gtk_container_add (GTK_CONTAINER (menuitem7_menu), support1); online_release_notes1 = gtk_menu_item_new_with_mnemonic (_("Release _Notes")); gtk_widget_show (online_release_notes1); gtk_container_add (GTK_CONTAINER (menuitem7_menu), online_release_notes1); forums1 = gtk_menu_item_new_with_mnemonic (_("_Forums")); gtk_widget_show (forums1); gtk_container_add (GTK_CONTAINER (menuitem7_menu), forums1); separator1 = gtk_separator_menu_item_new (); gtk_widget_show (separator1); gtk_container_add (GTK_CONTAINER (menuitem7_menu), separator1); gtk_widget_set_sensitive (separator1, FALSE); about1 = gtk_image_menu_item_new_from_stock ("gtk-about", accel_group); gtk_widget_show (about1); gtk_container_add (GTK_CONTAINER (menuitem7_menu), about1); toolbar1 = gtk_toolbar_new (); gtk_widget_show (toolbar1); gtk_box_pack_start (GTK_BOX (vbox1), toolbar1, FALSE, FALSE, 0); gtk_toolbar_set_style (GTK_TOOLBAR (toolbar1), GTK_TOOLBAR_BOTH_HORIZ); tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar1)); toolitem15 = (GtkWidget*) gtk_tool_item_new (); gtk_widget_show (toolitem15); gtk_container_add (GTK_CONTAINER (toolbar1), toolitem15); tmp_image = gtk_image_new_from_stock ("gtk-new", tmp_toolbar_icon_size); gtk_widget_show (tmp_image); newInstance2 = (GtkWidget*) gtk_tool_button_new (tmp_image, _("New Instance")); gtk_widget_show (newInstance2); gtk_container_add (GTK_CONTAINER (toolbar1), newInstance2); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (newInstance2), tooltips, _("Open a new search window."), NULL); gtk_tool_item_set_is_important (GTK_TOOL_ITEM (newInstance2), TRUE); separatortoolitem4 = (GtkWidget*) gtk_separator_tool_item_new (); gtk_widget_show (separatortoolitem4); gtk_container_add (GTK_CONTAINER (toolbar1), separatortoolitem4); tmp_image = gtk_image_new_from_stock ("gtk-open", tmp_toolbar_icon_size); gtk_widget_show (tmp_image); importCriteria = (GtkWidget*) gtk_tool_button_new (tmp_image, _("Import Expression...")); gtk_widget_show (importCriteria); gtk_container_add (GTK_CONTAINER (toolbar1), importCriteria); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (importCriteria), tooltips, _("Add search criteria from a text file. Similar to the grep -f flag."), NULL); tmp_image = gtk_image_new_from_stock ("gtk-save-as", tmp_toolbar_icon_size); gtk_widget_show (tmp_image); exportCriteria = (GtkWidget*) gtk_tool_button_new (tmp_image, _("Export Expression...")); gtk_widget_show (exportCriteria); gtk_container_add (GTK_CONTAINER (toolbar1), exportCriteria); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (exportCriteria), tooltips, _("Write some or all of the search criteria to disk."), NULL); separatortoolitem3 = (GtkWidget*) gtk_separator_tool_item_new (); gtk_widget_show (separatortoolitem3); gtk_container_add (GTK_CONTAINER (toolbar1), separatortoolitem3); tmp_image = gtk_image_new_from_stock ("gtk-file", tmp_toolbar_icon_size); gtk_widget_show (tmp_image); saveResults = (GtkWidget*) gtk_tool_button_new (tmp_image, _("Save Results...")); gtk_widget_show (saveResults); gtk_container_add (GTK_CONTAINER (toolbar1), saveResults); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (saveResults), tooltips, _("Create a CSV file containing a list of results."), NULL); gtk_tool_item_set_is_important (GTK_TOOL_ITEM (saveResults), TRUE); separatortoolitem2 = (GtkWidget*) gtk_separator_tool_item_new (); gtk_widget_show (separatortoolitem2); gtk_container_add (GTK_CONTAINER (toolbar1), separatortoolitem2); tmp_image = gtk_image_new_from_stock ("gtk-find", tmp_toolbar_icon_size); gtk_widget_show (tmp_image); playButton2 = (GtkWidget*) gtk_tool_button_new (tmp_image, _("Start")); gtk_widget_show (playButton2); gtk_container_add (GTK_CONTAINER (toolbar1), playButton2); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (playButton2), tooltips, _("Start the search!"), NULL); stopButton2 = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-stop"); gtk_widget_show (stopButton2); gtk_container_add (GTK_CONTAINER (toolbar1), stopButton2); gtk_widget_set_sensitive (stopButton2, FALSE); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (stopButton2), tooltips, _("Stop the search!"), NULL); separatortoolitem1 = (GtkWidget*) gtk_separator_tool_item_new (); gtk_container_add (GTK_CONTAINER (toolbar1), separatortoolitem1); printResults = (GtkWidget*) gtk_tool_button_new_from_stock ("gtk-print"); gtk_container_add (GTK_CONTAINER (toolbar1), printResults); gtk_tool_item_set_tooltip (GTK_TOOL_ITEM (printResults), tooltips, _("Print results direct to the configured printer."), NULL); expander1 = gtk_expander_new (NULL); gtk_widget_show (expander1); gtk_box_pack_start (GTK_BOX (vbox1), expander1, FALSE, TRUE, 0); gtk_expander_set_expanded (GTK_EXPANDER (expander1), TRUE); hbox68 = gtk_hbox_new (FALSE, 2); gtk_widget_show (hbox68); gtk_container_add (GTK_CONTAINER (expander1), hbox68); searchNotebook = gtk_notebook_new (); gtk_widget_show (searchNotebook); gtk_box_pack_start (GTK_BOX (hbox68), searchNotebook, TRUE, TRUE, 4); vbox6 = gtk_vbox_new (FALSE, 4); gtk_container_set_border_width (GTK_CONTAINER (vbox6), 4);/* add Luc A. 29/12/2017 */ gtk_widget_show (vbox6); gtk_container_add (GTK_CONTAINER (searchNotebook), vbox6); hbox14 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox14); gtk_box_pack_start (GTK_BOX (vbox6), hbox14, FALSE, TRUE, 0); table4 = gtk_table_new (2, 5, FALSE); gtk_widget_show (table4); gtk_box_pack_start (GTK_BOX (hbox14), table4, TRUE, TRUE, 0); fileName2 = gtk_combo_box_text_new_with_entry (); gtk_widget_show (fileName2); gtk_table_attach (GTK_TABLE (table4), fileName2, 1, 2, 0, 1, (GtkAttachOptions) (0 | 0), (GtkAttachOptions) (GTK_FILL), 0, 0); GTK_WIDGET_SET_FLAGS (fileName2, GTK_CAN_FOCUS); gtk_tooltips_set_tip (tooltips, fileName2, _("Please, type here the name or a segment of the name of the file(s).\nDon't type spaces."), NULL);/* Luc A - 3 janv 2018 */ label21 = gtk_label_new (_("Files:")); gtk_widget_show (label21); gtk_table_attach (GTK_TABLE (table4), label21, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 5, 0); containingTextCheck2 = gtk_check_button_new_with_mnemonic (_("_Containing:")); gtk_widget_show (containingTextCheck2); gtk_table_attach (GTK_TABLE (table4), containingTextCheck2, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, containingTextCheck2, _("Enable contents search to find files with matching content too."), NULL); containingText2 = gtk_combo_box_text_new_with_entry (); gtk_widget_show (containingText2); gtk_table_attach (GTK_TABLE (table4), containingText2, 3, 5, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); GTK_WIDGET_SET_FLAGS (containingText2, GTK_CAN_FOCUS); gtk_tooltips_set_tip (tooltips, containingText2, _("Please, type here a word or a segment of a word researched in the file(s).\nDon't type spaces."), NULL);/* Luc A - 3 janv 2018 */ hseparator10 = gtk_hseparator_new (); gtk_widget_show (hseparator10); gtk_box_pack_start (GTK_BOX (vbox6), hseparator10, FALSE, TRUE, 5); table5 = gtk_table_new (2, 3, FALSE);/* 2 lines, 3 columns */ gtk_widget_show (table5); gtk_box_pack_start (GTK_BOX (vbox6), table5, TRUE, TRUE, 0); label20 = gtk_label_new (_("Folders:")); gtk_widget_show (label20);/* origin : 0, 1, 0, 1, */ gtk_table_attach (GTK_TABLE (table5), label20, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 5, 0); lookIn2 = gtk_combo_box_text_new_with_entry (); gtk_widget_show (lookIn2);/* origin : 1, 2, 0, 1, */ gtk_table_attach (GTK_TABLE (table5), lookIn2, 1, 2, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); GTK_WIDGET_SET_FLAGS (lookIn2, GTK_CAN_FOCUS); folderSelector2 = gtk_button_new (); gtk_widget_show (folderSelector2);/* origin : 2, 3, 0, 1, */ gtk_table_attach (GTK_TABLE (table5), folderSelector2, 2, 3, 0, 1, (GtkAttachOptions) (0), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, folderSelector2, _("Opens a dialog to find a look in directory."), NULL); alignment38 = gtk_alignment_new (0.5, 0.5, 0, 0); gtk_widget_show (alignment38); gtk_container_add (GTK_CONTAINER (folderSelector2), alignment38); hbox69 = gtk_hbox_new (FALSE, 2); gtk_widget_show (hbox69); gtk_container_add (GTK_CONTAINER (alignment38), hbox69); image92 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_BUTTON); gtk_widget_show (image92); gtk_box_pack_start (GTK_BOX (hbox69), image92, FALSE, FALSE, 0); label1024 = gtk_label_new_with_mnemonic ("");/* modifiyed, Luc A. 28 dec 2017 */ gtk_widget_show (label1024); gtk_box_pack_start (GTK_BOX (hbox69), label1024, FALSE, FALSE, 0); hbox72 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox72); gtk_table_attach (GTK_TABLE (table5), hbox72, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); searchSubfoldersCheck2 = gtk_check_button_new_with_mnemonic (_("Recurse Folders")); gtk_widget_show (searchSubfoldersCheck2); gtk_box_pack_start (GTK_BOX (hbox72), searchSubfoldersCheck2, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, searchSubfoldersCheck2, _("Use this option to search all subfolders (recursively)."), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (searchSubfoldersCheck2), TRUE); label19 = gtk_label_new (_("Basic")); gtk_widget_show (label19); gtk_notebook_set_tab_label (GTK_NOTEBOOK (searchNotebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (searchNotebook), 0), label19); GTK_WIDGET_SET_FLAGS (label19, GTK_CAN_FOCUS); vbox3 = gtk_vbox_new (FALSE, 4);/* modif Luc A. 29 dec 2017 */ gtk_container_set_border_width (GTK_CONTAINER (vbox3), 4);/* add Luc A. 29/12/2017 */ gtk_widget_show (vbox3); gtk_container_add (GTK_CONTAINER (searchNotebook), vbox3); fileNameHbox = gtk_hbox_new (FALSE, 2);/* modif Luc A. 29 dec 2017 */ gtk_widget_show (fileNameHbox); gtk_box_pack_start (GTK_BOX (vbox3), fileNameHbox, FALSE, TRUE, 0); label22 = gtk_label_new (_("Files:")); gtk_widget_show (label22); gtk_box_pack_start (GTK_BOX (fileNameHbox), label22, FALSE, FALSE, 5); fileName = gtk_combo_box_text_new_with_entry (); gtk_widget_show (fileName); gtk_box_pack_start (GTK_BOX (fileNameHbox), fileName, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS (fileName, GTK_CAN_FOCUS); gtk_tooltips_set_tip (tooltips, fileName, _("Please, type here the name or a segment of the name of the file(s).\nDon't type spaces."), NULL);/* Luc A - 3 janv 2018 */ /* widget button with Pango markups - Luc A Feb 2018 */ gchar *sUtf8; GtkWidget *labelRegexWizardFile = gtk_label_new(NULL); sUtf8 = g_locale_to_utf8(_("RegEx Expression Builder..."), -1, NULL, NULL, NULL); gtk_label_set_markup(GTK_LABEL(labelRegexWizardFile), sUtf8); g_free(sUtf8); gtk_widget_show(labelRegexWizardFile ); regExpWizard1 = gtk_button_new (); gtk_widget_show (regExpWizard1); gtk_container_add(GTK_CONTAINER(regExpWizard1),labelRegexWizardFile); /* end pango button */ gtk_box_pack_start (GTK_BOX (fileNameHbox), regExpWizard1, FALSE, FALSE, 5); gtk_tooltips_set_tip (tooltips, regExpWizard1, _("Use the wizard to create a file name regular expression..."), NULL); containingTextHbox = gtk_hbox_new (FALSE, 0); gtk_widget_show (containingTextHbox); gtk_box_pack_start (GTK_BOX (vbox3), containingTextHbox, FALSE, TRUE, 0); containingTextCheck = gtk_check_button_new_with_mnemonic (_("Containing:")); gtk_widget_show (containingTextCheck); gtk_box_pack_start (GTK_BOX (containingTextHbox), containingTextCheck, FALSE, FALSE, 5); gtk_tooltips_set_tip (tooltips, containingTextCheck, _("Use this option to restrict your search results to files containing the provided text (or pattern)."), NULL); containingText = gtk_combo_box_text_new_with_entry (); gtk_widget_show (containingText); gtk_box_pack_start (GTK_BOX (containingTextHbox), containingText, TRUE, TRUE, 0); GTK_WIDGET_SET_FLAGS (containingText, GTK_CAN_FOCUS); gtk_tooltips_set_tip (tooltips, containingText, _("Please, type here a word or a segment of a word researched in the file(s).\nDon't type spaces."), NULL);/* Luc A - 3 janv 2018 */ /* pango label - Luc A feb 2018 */ GtkWidget *labelRegexWizardContainingText = gtk_label_new(NULL); sUtf8 = g_locale_to_utf8(_("RegEx Expression Builder..."), -1, NULL, NULL, NULL); gtk_label_set_markup(GTK_LABEL(labelRegexWizardContainingText), sUtf8); g_free(sUtf8); gtk_widget_show(labelRegexWizardContainingText ); regExpWizard2 = gtk_button_new (); gtk_widget_show (regExpWizard2); gtk_container_add(GTK_CONTAINER(regExpWizard2),labelRegexWizardContainingText); /* end pango button label */ gtk_box_pack_start (GTK_BOX (containingTextHbox), regExpWizard2, FALSE, FALSE, 5); gtk_tooltips_set_tip (tooltips, regExpWizard2, _("Use the wizard to create a containing text regular expression..."), NULL); /* added by Luc A. 29 dec 2017 */ GtkWidget *hseparator1d = gtk_hseparator_new (); gtk_widget_show (hseparator1d); gtk_box_pack_start (GTK_BOX (vbox3), hseparator1d, FALSE, TRUE, 0); /* end Luc A. */ table7 = gtk_table_new (2, 5, FALSE);/* position modifyed - Luc A. 29 dec 2017 */ gtk_widget_show (table7); gtk_box_pack_start (GTK_BOX (vbox3), table7, TRUE, TRUE, 0); label6 = gtk_label_new (_("Folders:")); gtk_widget_show (label6); gtk_table_attach (GTK_TABLE (table7), label6, 0, 1, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); lookIn = gtk_combo_box_text_new_with_entry ();/* position modifyed - Luc A. 29 dec 2017 - replaced deprecated 12 janv 2018*/ gtk_widget_show (lookIn); gtk_table_attach (GTK_TABLE (table7), lookIn, 1, 3, 0, 1, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (GTK_FILL), 0, 0); GTK_WIDGET_SET_FLAGS (lookIn, GTK_CAN_FOCUS); searchSubfoldersCheck = gtk_check_button_new_with_mnemonic (_("Recurse Folders")); gtk_widget_show (searchSubfoldersCheck);/* position modifyed - Luc A. 29 dec 2017 */ gtk_table_attach (GTK_TABLE (table7), searchSubfoldersCheck, 1, 2, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, searchSubfoldersCheck, _("Use this option to search all subfolders (recursively)."), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (searchSubfoldersCheck), TRUE); folderSelector = gtk_button_new ();/* position modifyed - Luc A. 29 dec 2017 */ gtk_widget_show (folderSelector); gtk_table_attach (GTK_TABLE (table7), folderSelector, 3, 4, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, folderSelector, _("Browse your file system and select the search directory..."), NULL); alignment18 = gtk_alignment_new (0.5, 0.5, 0, 0); gtk_widget_show (alignment18); gtk_container_add (GTK_CONTAINER (folderSelector), alignment18); hbox40 = gtk_hbox_new (FALSE, 2); gtk_widget_show (hbox40); gtk_container_add (GTK_CONTAINER (alignment18), hbox40); image9 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_BUTTON); gtk_widget_show (image9); gtk_box_pack_start (GTK_BOX (hbox40), image9, FALSE, FALSE, 0); //label253 = gtk_label_new_with_mnemonic (" \n ");/* modifiyed, Luc A. 28 dec 2017 */ //gtk_widget_show (label253); //gtk_box_pack_start (GTK_BOX (hbox40), label253, FALSE, FALSE, 0); /* added by Luc A. 29 dec 2017 */ GtkWidget *hbox1_advanced = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1_advanced); gtk_table_attach (GTK_TABLE (table7), hbox1_advanced, 2, 3, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); folderDepthCheck = gtk_check_button_new_with_mnemonic (_("Restrict depth:")); gtk_widget_show (folderDepthCheck);/* position modifyed - Luc A. 29 dec 2017 */ gtk_box_pack_start (GTK_BOX (hbox1_advanced), folderDepthCheck, FALSE, TRUE, 0); gtk_tooltips_set_tip (tooltips, folderDepthCheck, _("Limit files found by selecting maximum tree-depth to search."), NULL); folderDepthSpin_adj = gtk_adjustment_new (0, 0, 100, 1, 10, 0); folderDepthSpin = gtk_spin_button_new (GTK_ADJUSTMENT (folderDepthSpin_adj), 1, 0); gtk_widget_show (folderDepthSpin);/* position modifyed - Luc A. 29 dec 2017 */ gtk_box_pack_start (GTK_BOX (hbox1_advanced), folderDepthSpin, FALSE, TRUE, 0); GtkWidget *hseparator1c = gtk_hseparator_new (); gtk_widget_show (hseparator1c); gtk_box_pack_start (GTK_BOX (vbox3), hseparator1c, FALSE, TRUE, 0); /* end Luc A. */ GtkWidget *hboxSizeModifier = gtk_hbox_new(FALSE, 0) ; /* Luc A janv 2018 */ gtk_widget_show (hboxSizeModifier); gtk_box_pack_start (GTK_BOX (vbox3), hboxSizeModifier, FALSE, TRUE, 0); label17 = gtk_label_new (_("Size :")); gtk_widget_show (label17); gtk_box_pack_start (GTK_BOX (hboxSizeModifier), label17, FALSE, TRUE, 0); moreThanCheck = gtk_check_button_new_with_mnemonic (_("More than:")); gtk_widget_show (moreThanCheck); gtk_box_pack_start (GTK_BOX (hboxSizeModifier), moreThanCheck, FALSE, TRUE, 0); gtk_tooltips_set_tip (tooltips, moreThanCheck, _("Use this option to restrict your search results to files that are bigger than the provided number of kilo Bytes."), NULL); moreThanEntry = gtk_entry_new (); gtk_widget_show (moreThanEntry); gtk_box_pack_start (GTK_BOX (hboxSizeModifier), moreThanEntry, FALSE, TRUE, 0); gtk_widget_set_sensitive (moreThanEntry, FALSE); gtk_tooltips_set_tip (tooltips, moreThanEntry, _("Maximum filesize in kBytes/mBytes/gBytes."), NULL); gtk_entry_set_max_length (GTK_ENTRY (moreThanEntry), 9); gtk_entry_set_invisible_char (GTK_ENTRY (moreThanEntry), 8226); gtk_entry_set_activates_default (GTK_ENTRY (moreThanEntry), TRUE); gtk_entry_set_width_chars (GTK_ENTRY (moreThanEntry), 10); /* combo more than */ GtkWidget *MoreThanSize = gtk_combo_box_text_new (); gtk_widget_show (MoreThanSize); gtk_tooltips_set_tip (tooltips, MoreThanSize, _("Use this option to choose the file size units."), NULL); gtk_box_pack_start (GTK_BOX (hboxSizeModifier), MoreThanSize, FALSE, TRUE, 0); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (MoreThanSize), _("Kb")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (MoreThanSize), _("Mb")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (MoreThanSize), _("Gb")); gtk_combo_box_set_active (GTK_COMBO_BOX (MoreThanSize),0); lessThanCheck = gtk_check_button_new_with_mnemonic (_("Less than:")); gtk_widget_show (lessThanCheck); gtk_box_pack_start (GTK_BOX (hboxSizeModifier), lessThanCheck, FALSE, TRUE, 0); gtk_tooltips_set_tip (tooltips, lessThanCheck, _("Use this option to restrict your search results to files that are smaller than the provided number of kilo Bytes."), NULL); lessThanEntry = gtk_entry_new (); gtk_widget_show (lessThanEntry); gtk_box_pack_start (GTK_BOX (hboxSizeModifier), lessThanEntry, FALSE, TRUE, 0); gtk_widget_set_sensitive (lessThanEntry, FALSE); gtk_tooltips_set_tip (tooltips, lessThanEntry, _("Minimum filesize in kBytes/mBytes/gBytes."), NULL); gtk_entry_set_max_length (GTK_ENTRY (lessThanEntry), 9); gtk_entry_set_invisible_char (GTK_ENTRY (lessThanEntry), 8226); gtk_entry_set_activates_default (GTK_ENTRY (lessThanEntry), TRUE); gtk_entry_set_width_chars (GTK_ENTRY (lessThanEntry), 10); /* LessThanSize */ GtkWidget *LessThanSize = gtk_combo_box_text_new (); gtk_widget_show (LessThanSize); gtk_tooltips_set_tip (tooltips, LessThanSize, _("Use this option to choose the file size units."), NULL); gtk_box_pack_start (GTK_BOX (hboxSizeModifier), LessThanSize, FALSE, TRUE, 0); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (LessThanSize), _("Kb")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (LessThanSize), _("Mb")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (LessThanSize), _("Gb")); gtk_combo_box_set_active (GTK_COMBO_BOX (LessThanSize),0); GtkWidget *hboxDateModifier = gtk_hbox_new(FALSE, 0) ; /* Luc A janv 2018 */ gtk_widget_show (hboxDateModifier); gtk_box_pack_start (GTK_BOX (vbox3), hboxDateModifier, FALSE, TRUE, 0); label16 = gtk_label_new (_("Modified:")); gtk_widget_show (label16); gtk_box_pack_start (GTK_BOX (hboxDateModifier), label16, FALSE, TRUE, 0); afterCheck = gtk_check_button_new_with_mnemonic (_("After:")); gtk_widget_show (afterCheck); gtk_box_pack_start (GTK_BOX (hboxDateModifier), afterCheck, FALSE, TRUE, 0); gtk_tooltips_set_tip (tooltips, afterCheck, _("Use this option to restrict your search results to files that were last modified after the provided time."), NULL); hbox70 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox70); gtk_box_pack_start (GTK_BOX (hboxDateModifier), hbox70, FALSE, TRUE, 0); afterEntry = gtk_entry_new (); gtk_widget_show (afterEntry); gtk_box_pack_start (GTK_BOX (hbox70), afterEntry, FALSE, TRUE, 0); gtk_widget_set_sensitive (afterEntry, FALSE); gtk_editable_set_editable (GTK_EDITABLE (afterEntry), FALSE); gtk_entry_set_invisible_char (GTK_ENTRY (afterEntry), 9679); afterCalendarBtn = gtk_button_new (); gtk_widget_show (afterCalendarBtn); gtk_box_pack_start (GTK_BOX (hbox70), afterCalendarBtn, FALSE, FALSE, 0); gtk_widget_set_sensitive (afterCalendarBtn, FALSE); gtk_tooltips_set_tip (tooltips, afterCalendarBtn, _("Open calendar dialog to choose modified date."), NULL); image93 = gtk_image_new_from_icon_name ("appointment-soon", GTK_ICON_SIZE_BUTTON); gtk_widget_show (image93); gtk_container_add (GTK_CONTAINER (afterCalendarBtn), image93); beforeCheck = gtk_check_button_new_with_mnemonic (_("Before:")); gtk_widget_show (beforeCheck); gtk_box_pack_start (GTK_BOX (hboxDateModifier), beforeCheck, FALSE, TRUE, 0); gtk_tooltips_set_tip (tooltips, beforeCheck, _("Use this option to restrict your search results to files that were last modified before the provided time."), NULL); hbox71 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox71); gtk_box_pack_start (GTK_BOX (hboxDateModifier), hbox71, FALSE, TRUE, 0); beforeEntry = gtk_entry_new (); gtk_widget_show (beforeEntry); gtk_box_pack_start (GTK_BOX (hbox71), beforeEntry, TRUE, TRUE, 0); gtk_widget_set_sensitive (beforeEntry, FALSE); gtk_editable_set_editable (GTK_EDITABLE (beforeEntry), FALSE); gtk_entry_set_invisible_char (GTK_ENTRY (beforeEntry), 9679); beforeCalendarBtn = gtk_button_new (); gtk_widget_show (beforeCalendarBtn); gtk_box_pack_start (GTK_BOX (hbox71), beforeCalendarBtn, FALSE, FALSE, 0); gtk_widget_set_sensitive (beforeCalendarBtn, FALSE); gtk_tooltips_set_tip (tooltips, beforeCalendarBtn, _("Open calendar dialog to choose modified date."), NULL); image94 = gtk_image_new_from_icon_name ("appointment-soon", GTK_ICON_SIZE_BUTTON); gtk_widget_show (image94); gtk_container_add (GTK_CONTAINER (beforeCalendarBtn), image94); label1 = gtk_label_new (_("Advanced")); gtk_widget_show (label1); gtk_notebook_set_tab_label (GTK_NOTEBOOK (searchNotebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (searchNotebook), 1), label1); GTK_WIDGET_SET_FLAGS (label1, GTK_CAN_FOCUS); hbox62 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox62); gtk_container_add (GTK_CONTAINER (searchNotebook), hbox62); gtk_container_set_border_width (GTK_CONTAINER (hbox62), 4);/* add Luc A. 29/12/2017 */ frame1 = gtk_frame_new (NULL); gtk_widget_show (frame1); gtk_box_pack_start (GTK_BOX (hbox62), frame1, FALSE, TRUE, 5); gtk_frame_set_shadow_type (GTK_FRAME (frame1), GTK_SHADOW_IN); vbox47 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox47); gtk_container_add (GTK_CONTAINER (frame1), vbox47); notExpressionCheckFile = gtk_check_button_new_with_mnemonic (_("Invert Search Expression")); gtk_widget_show (notExpressionCheckFile); gtk_box_pack_start (GTK_BOX (vbox47), notExpressionCheckFile, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, notExpressionCheckFile, _("Inverts the file name search results i.e. find all becomes find none."), NULL); matchCaseCheckFile = gtk_check_button_new_with_mnemonic (_("Match Case")); gtk_widget_show (matchCaseCheckFile); gtk_box_pack_start (GTK_BOX (vbox47), matchCaseCheckFile, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, matchCaseCheckFile, _("Use strict file case matching."), NULL); ignoreHiddenFiles = gtk_check_button_new_with_mnemonic (_("_Ignore files beginning with '.'")); gtk_widget_show (ignoreHiddenFiles); gtk_box_pack_start (GTK_BOX (vbox47), ignoreHiddenFiles, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, ignoreHiddenFiles, _("Ignore hidden files (Unix filesystems only)"), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ignoreHiddenFiles), TRUE); followSymLinksCheck = gtk_check_button_new_with_mnemonic (_("Follow Symbol _Links")); gtk_widget_show (followSymLinksCheck); gtk_box_pack_start (GTK_BOX (vbox47), followSymLinksCheck, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, followSymLinksCheck, _("Follow Symbolic Links (Only on systems that support them)"), NULL); hseparator9 = gtk_hseparator_new (); gtk_widget_show (hseparator9); gtk_box_pack_start (GTK_BOX (vbox47), hseparator9, FALSE, TRUE, 0); dosExpressionRadioFile = gtk_radio_button_new_with_mnemonic (NULL, _("Use Wil_dcard Syntax")); gtk_widget_show (dosExpressionRadioFile); gtk_box_pack_start (GTK_BOX (vbox47), dosExpressionRadioFile, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, dosExpressionRadioFile, _("Use wildcard or glob syntax for file search criteria. E.g. *.txt"), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (dosExpressionRadioFile), dosExpressionRadioFile_group); dosExpressionRadioFile_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (dosExpressionRadioFile)); regularExpressionRadioFile = gtk_radio_button_new_with_mnemonic (NULL, _("Use _Regular Expression Syntax")); gtk_widget_show (regularExpressionRadioFile); gtk_box_pack_start (GTK_BOX (vbox47), regularExpressionRadioFile, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, regularExpressionRadioFile, _("Use regular expression syntax in file search criteria."), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (regularExpressionRadioFile), dosExpressionRadioFile_group); dosExpressionRadioFile_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (regularExpressionRadioFile)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (regularExpressionRadioFile), TRUE); label13 = gtk_label_new (_("File Name Options")); gtk_widget_show (label13); gtk_frame_set_label_widget (GTK_FRAME (frame1), label13); gtk_label_set_use_markup (GTK_LABEL (label13), TRUE); frame2 = gtk_frame_new (NULL); gtk_widget_show (frame2); gtk_box_pack_start (GTK_BOX (hbox62), frame2, FALSE, TRUE, 5); gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_IN); vbox46 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox46); gtk_container_add (GTK_CONTAINER (frame2), vbox46); singlePhaseCheckContents = gtk_check_button_new_with_mnemonic (_("Use Single Phase Search")); gtk_widget_show (singlePhaseCheckContents); gtk_box_pack_start (GTK_BOX (vbox46), singlePhaseCheckContents, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, singlePhaseCheckContents, _("Perform content searching immediately so that results are returned quicker."), NULL); matchCaseCheckContents = gtk_check_button_new_with_mnemonic (_("Match Case")); gtk_widget_show (matchCaseCheckContents); gtk_box_pack_start (GTK_BOX (vbox46), matchCaseCheckContents, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, matchCaseCheckContents, _("Use strict contents case matching."), NULL); hseparator8 = gtk_hseparator_new (); gtk_widget_show (hseparator8); gtk_box_pack_start (GTK_BOX (vbox46), hseparator8, FALSE, TRUE, 0); wildcardCheckContents = gtk_radio_button_new_with_mnemonic (NULL, _("Use simple search syntax")); gtk_widget_show (wildcardCheckContents); gtk_box_pack_start (GTK_BOX (vbox46), wildcardCheckContents, FALSE, FALSE, 0); gtk_widget_set_sensitive (wildcardCheckContents, TRUE); gtk_tooltips_set_tip (tooltips, wildcardCheckContents, _("Use wildcard or glob syntax for file search criteria. E.g. *.txt"), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (wildcardCheckContents), wildcardCheckContents_group); wildcardCheckContents_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (wildcardCheckContents)); regularExpressionRadioContents = gtk_radio_button_new_with_mnemonic (NULL, _("Use _Regular Expression Syntax")); gtk_widget_show (regularExpressionRadioContents); gtk_box_pack_start (GTK_BOX (vbox46), regularExpressionRadioContents, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, regularExpressionRadioContents, _("Use regular expression syntax in file search criteria."), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (regularExpressionRadioContents), wildcardCheckContents_group); wildcardCheckContents_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (regularExpressionRadioContents)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (regularExpressionRadioContents), TRUE); label14 = gtk_label_new (_("File Contents Options")); gtk_widget_show (label14); gtk_frame_set_label_widget (GTK_FRAME (frame2), label14); gtk_label_set_use_markup (GTK_LABEL (label14), TRUE); frame16 = gtk_frame_new (NULL); gtk_widget_show (frame16); gtk_box_pack_start (GTK_BOX (hbox62), frame16, FALSE, TRUE, 5); gtk_frame_set_shadow_type (GTK_FRAME (frame16), GTK_SHADOW_IN); vbox45 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox45); gtk_container_add (GTK_CONTAINER (frame16), vbox45); limitResultsCheckResults = gtk_check_button_new_with_mnemonic (_("Limit Match Files")); gtk_widget_show (limitResultsCheckResults); gtk_box_pack_start (GTK_BOX (vbox45), limitResultsCheckResults, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, limitResultsCheckResults, _("Specify the maximum number of matching files found. Does not limit the number of content matches within each file."), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (limitResultsCheckResults), TRUE); limit_results_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_show (limit_results_hbox); gtk_box_pack_start (GTK_BOX (vbox45), limit_results_hbox, FALSE, TRUE, 0); label1010 = gtk_label_new (_("Maximum Hits:")); gtk_widget_show (label1010); gtk_box_pack_start (GTK_BOX (limit_results_hbox), label1010, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (label1010), 5, 0); maxHitsSpinResults_adj = gtk_adjustment_new (25, 1, 99999, 1, 10, 0); maxHitsSpinResults = gtk_spin_button_new (GTK_ADJUSTMENT (maxHitsSpinResults_adj), 1, 0); gtk_widget_show (maxHitsSpinResults); gtk_box_pack_start (GTK_BOX (limit_results_hbox), maxHitsSpinResults, TRUE, TRUE, 2); hseparator7 = gtk_hseparator_new (); gtk_widget_show (hseparator7); gtk_box_pack_start (GTK_BOX (vbox45), hseparator7, FALSE, TRUE, 0); showLinesCheckResults = gtk_check_button_new_with_mnemonic (_("Show Line Contents")); gtk_widget_show (showLinesCheckResults); gtk_box_pack_start (GTK_BOX (vbox45), showLinesCheckResults, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, showLinesCheckResults, _("If active, display extra lines around the matching line to help show context of match."), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (showLinesCheckResults), TRUE); show_line_contents_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_show (show_line_contents_hbox); gtk_box_pack_start (GTK_BOX (vbox45), show_line_contents_hbox, FALSE, TRUE, 0); label1009 = gtk_label_new (_("Lines Displayed:")); gtk_widget_show (label1009); gtk_box_pack_start (GTK_BOX (show_line_contents_hbox), label1009, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (label1009), 5, 0); showLinesSpinResults_adj = gtk_adjustment_new (0, 0, 20, 1, 5, 0); showLinesSpinResults = gtk_spin_button_new (GTK_ADJUSTMENT (showLinesSpinResults_adj), 1, 0); gtk_widget_show (showLinesSpinResults); gtk_box_pack_start (GTK_BOX (show_line_contents_hbox), showLinesSpinResults, TRUE, TRUE, 2); hseparator11 = gtk_hseparator_new (); gtk_widget_show (hseparator11); gtk_box_pack_start (GTK_BOX (vbox45), hseparator11, TRUE, TRUE, 0); limitContentsCheckResults = gtk_check_button_new_with_mnemonic (_("Limit Content Highlighting")); gtk_widget_show (limitContentsCheckResults); gtk_box_pack_start (GTK_BOX (vbox45), limitContentsCheckResults, FALSE, FALSE, 0); gtk_widget_set_sensitive (limitContentsCheckResults, TRUE);/* luc A janv 2018 changed to TRUE in order to activate */ gtk_tooltips_set_tip (tooltips, limitContentsCheckResults, _("Specify the maximum number of content matches within each file to show. Does not limit the number of files to search."), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (limitContentsCheckResults), TRUE); limit_contents_hbox = gtk_hbox_new (FALSE, 0); gtk_widget_show (limit_contents_hbox); gtk_box_pack_start (GTK_BOX (vbox45), limit_contents_hbox, TRUE, TRUE, 0); gtk_widget_set_sensitive (limit_contents_hbox, TRUE);/* luc A janv 2018 changed to TRUE in order to activate */ label1025 = gtk_label_new (_("Highlights per line :")); gtk_widget_show (label1025); gtk_box_pack_start (GTK_BOX (limit_contents_hbox), label1025, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (label1025), 5, 0); maxContentHitsSpinResults_adj = gtk_adjustment_new (1, 1, 99999, 1, 5, 0); maxContentHitsSpinResults = gtk_spin_button_new (GTK_ADJUSTMENT (maxContentHitsSpinResults_adj), 1, 0); gtk_widget_show (maxContentHitsSpinResults); gtk_box_pack_start (GTK_BOX (limit_contents_hbox), maxContentHitsSpinResults, TRUE, TRUE, 2); label1008 = gtk_label_new (_("Results Options")); gtk_widget_show (label1008); gtk_frame_set_label_widget (GTK_FRAME (frame16), label1008); gtk_label_set_use_markup (GTK_LABEL (label1008), TRUE); label2 = gtk_label_new (_("Options")); gtk_widget_show (label2); gtk_notebook_set_tab_label (GTK_NOTEBOOK (searchNotebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (searchNotebook), 2), label2); GTK_WIDGET_SET_FLAGS (label2, GTK_CAN_FOCUS); vbox2 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox2); gtk_box_pack_start (GTK_BOX (hbox68), vbox2, FALSE, TRUE, 4); expertUserCheck = gtk_check_button_new_with_mnemonic (_("Expert Mode")); gtk_box_pack_start (GTK_BOX (vbox2), expertUserCheck, TRUE, FALSE, 5); gtk_tooltips_set_tip (tooltips, expertUserCheck, _("Switch search from basic to advanced mode."), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (expertUserCheck), TRUE); playButton1 = gtk_button_new (); gtk_widget_show (playButton1); gtk_box_pack_start (GTK_BOX (vbox2), playButton1, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, playButton1, _("Start the search!"), NULL); gtk_widget_add_accelerator (playButton1, "clicked", accel_group, GDK_KEY_KP_Enter, (GdkModifierType) 0, GTK_ACCEL_VISIBLE); alignment36 = gtk_alignment_new (0.5, 0.5, 0, 0); gtk_widget_show (alignment36); gtk_container_add (GTK_CONTAINER (playButton1), alignment36); hbox67 = gtk_hbox_new (FALSE, 2); gtk_widget_show (hbox67); gtk_container_add (GTK_CONTAINER (alignment36), hbox67); image27 = gtk_image_new_from_stock ("gtk-find", GTK_ICON_SIZE_DIALOG);/* modifiyed, Luc A. 28 dec 2017 */ gtk_widget_show (image27); gtk_box_pack_start (GTK_BOX (hbox67), image27, FALSE, FALSE, 0); //label1015 = gtk_label_new_with_mnemonic (_("Start"));/* modifiyed, Luc A. 28 dec 2017 */ //gtk_widget_show (label1015); // gtk_box_pack_start (GTK_BOX (hbox67), label1015, FALSE, FALSE, 0); stopButton1 = gtk_button_new_from_stock ("gtk-stop"); gtk_widget_show (stopButton1); gtk_box_pack_start (GTK_BOX (vbox2), stopButton1, FALSE, FALSE, 0); gtk_widget_set_sensitive (stopButton1, FALSE); gtk_tooltips_set_tip (tooltips, stopButton1, _("Stop the search!"), NULL); label1016 = gtk_label_new (_("Search criteria")); gtk_widget_show (label1016); gtk_expander_set_label_widget (GTK_EXPANDER (expander1), label1016); /* added by Luc A., 29 dec 2017, also to breath the UI */ GtkWidget *hseparator10b = gtk_hseparator_new (); gtk_widget_show (hseparator10b); gtk_box_pack_start (GTK_BOX (vbox1), hseparator10b, FALSE, TRUE, 4); /* end Luc A. */ resultsHPane = gtk_hpaned_new (); gtk_widget_show (resultsHPane); gtk_box_pack_start (GTK_BOX (vbox1), resultsHPane, TRUE, TRUE, 0); resultsScroll = gtk_scrolled_window_new (NULL, NULL); gtk_tooltips_set_tip (tooltips, resultsScroll, _("List of file(s) corresponding to research criteria."), NULL);/* Luc A - 3 janv 2018 */ gtk_widget_show (resultsScroll); gtk_paned_pack1 (GTK_PANED (resultsHPane), resultsScroll, TRUE, TRUE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (resultsScroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); treeview1 = gtk_tree_view_new (); /* modifyed by Luc A., 27 dec 2017 - be careful, it's deprecated under GTK3 ! */ gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(treeview1), TRUE); /* end modif Luc A. */ gtk_widget_show (treeview1); gtk_container_add (GTK_CONTAINER (resultsScroll), treeview1); gtk_widget_set_size_request (treeview1, -1, 250); scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow1); gtk_paned_pack2 (GTK_PANED (resultsHPane), scrolledwindow1, TRUE, TRUE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); textview1 = gtk_text_view_new (); gtk_widget_show (textview1); gtk_container_add (GTK_CONTAINER (scrolledwindow1), textview1); gtk_tooltips_set_tip (tooltips, textview1, _("Displays the matching text lines when the result is selected."), NULL); gtk_text_view_set_editable (GTK_TEXT_VIEW (textview1), FALSE); /* gtk_text_view_set_overwrite (GTK_TEXT_VIEW (textview1), TRUE); don't USE since Overwrite is defauklt, in other cases DSk warnings ! Luc A feb 2018 */ gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (textview1), GTK_WRAP_WORD); gtk_text_view_set_justification (GTK_TEXT_VIEW (textview1), GTK_JUSTIFY_LEFT); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview1), FALSE); gtk_text_view_set_pixels_inside_wrap (GTK_TEXT_VIEW (textview1), 5); gtk_text_view_set_left_margin (GTK_TEXT_VIEW (textview1), 5); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (textview1), 5); resultsVPane = gtk_vpaned_new (); gtk_box_pack_start (GTK_BOX (vbox1), resultsVPane, TRUE, TRUE, 0); scrolledwindow15 = gtk_scrolled_window_new (NULL, NULL); gtk_tooltips_set_tip (tooltips, scrolledwindow15, _("List of file(s) corresponding to research criteria."), NULL);/* Luc A - 3 janv 2018 */ gtk_widget_show (scrolledwindow15); gtk_paned_pack1 (GTK_PANED (resultsVPane), scrolledwindow15, TRUE, TRUE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow15), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); treeview2 = gtk_tree_view_new (); /* modifyed by Luc A., 27 dec 2017 - be careful, it's deprecated under GTK3 ! */ gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(treeview2),TRUE); /* end modif Luc A. */ gtk_widget_show (treeview2); gtk_container_add (GTK_CONTAINER (scrolledwindow15), treeview2); scrolledwindow16 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow16); gtk_paned_pack2 (GTK_PANED (resultsVPane), scrolledwindow16, TRUE, TRUE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow16), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); textview4 = gtk_text_view_new (); gtk_widget_show (textview4); gtk_container_add (GTK_CONTAINER (scrolledwindow16), textview4); gtk_tooltips_set_tip (tooltips, textview4, _("Displays the matching text lines when the result is selected."), NULL); gtk_text_view_set_editable (GTK_TEXT_VIEW (textview4), FALSE); /* gtk_text_view_set_overwrite (GTK_TEXT_VIEW (textview4), TRUE);don't USE since Overwrite is defauklt, in other cases DSk warnings ! Luc A feb 2018 */ gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (textview4), GTK_WRAP_WORD); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview4), FALSE); gtk_text_view_set_pixels_inside_wrap (GTK_TEXT_VIEW (textview4), 5); gtk_text_view_set_left_margin (GTK_TEXT_VIEW (textview4), 5); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (textview4), 5); hbox41 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox41); gtk_box_pack_start (GTK_BOX (vbox1), hbox41, FALSE, FALSE, 2); statusbar1 = gtk_statusbar_new (); gtk_widget_show (statusbar1); gtk_box_pack_start (GTK_BOX (hbox41), statusbar1, TRUE, TRUE, 0); gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR (statusbar1), FALSE); progressbar1 = gtk_progress_bar_new (); gtk_widget_show (progressbar1); gtk_box_pack_start (GTK_BOX (hbox41), progressbar1, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, progressbar1, _("Search progress bar."), NULL); g_signal_connect ((gpointer) window1, "destroy", G_CALLBACK (on_window1_destroy), NULL); g_signal_connect ((gpointer) window1, "unrealize", G_CALLBACK (on_window1_unrealize), NULL); g_signal_connect ((gpointer) window1, "realize", G_CALLBACK (on_window1_realize), NULL); g_signal_connect ((gpointer) newInstance1, "activate", G_CALLBACK (on_newInstance1_activate), NULL); g_signal_connect ((gpointer) save_results1, "activate", G_CALLBACK (on_save_results1_activate), NULL); g_signal_connect ((gpointer) print1, "activate", G_CALLBACK (on_print1_activate), NULL); g_signal_connect ((gpointer) print_preview1, "activate", G_CALLBACK (on_print_preview1_activate), NULL); g_signal_connect ((gpointer) print_setup1, "activate", G_CALLBACK (on_print_setup1_activate), NULL); g_signal_connect ((gpointer) quit1, "activate", G_CALLBACK (on_quit1_activate), NULL); g_signal_connect ((gpointer) delete1, "activate", G_CALLBACK (on_delete1_activate), NULL); g_signal_connect ((gpointer) edit_file1, "activate", G_CALLBACK (on_edit_file1_activate), NULL); g_signal_connect ((gpointer) open_folder1, "activate", G_CALLBACK (on_open_folder1_activate), NULL); g_signal_connect ((gpointer) copy2, "activate", G_CALLBACK (on_copy2_activate), NULL); g_signal_connect ((gpointer) toolbar2, "activate", G_CALLBACK (on_toolbar2_activate), NULL); g_signal_connect ((gpointer) status_bar1, "activate", G_CALLBACK (on_status_bar1_activate), NULL); g_signal_connect ((gpointer) horizontal_results1, "activate", G_CALLBACK (on_horizontal_results1_activate), NULL); g_signal_connect ((gpointer) vertical_results1, "activate", G_CALLBACK (on_vertical_results1_activate), NULL); g_signal_connect ((gpointer) file_name1, "activate", G_CALLBACK (on_file_name1_activate), NULL); g_signal_connect ((gpointer) location1, "activate", G_CALLBACK (on_location1_activate), NULL); g_signal_connect ((gpointer) size1, "activate", G_CALLBACK (on_size1_activate), NULL); g_signal_connect ((gpointer) type1, "activate", G_CALLBACK (on_type1_activate), NULL); g_signal_connect ((gpointer) modified1, "activate", G_CALLBACK (on_modified1_activate), NULL); g_signal_connect ((gpointer) matches1, "activate", G_CALLBACK (on_matches1_activate), NULL); g_signal_connect ((gpointer) search1, "activate", G_CALLBACK (on_search1_activate), NULL); g_signal_connect ((gpointer) playButton3, "activate", G_CALLBACK (on_playButton_activate), NULL); g_signal_connect ((gpointer) stopButton3, "activate", G_CALLBACK (on_stopButton_activate), NULL); g_signal_connect ((gpointer) cl_ear_history1, "activate", G_CALLBACK (on_cl_ear_history1_activate), NULL); g_signal_connect ((gpointer) set_font1, "activate", G_CALLBACK (on_set_font1_activate), NULL); g_signal_connect ((gpointer) set_highligting_colour1, "activate", G_CALLBACK (on_set_highligting_colour1_activate), NULL); g_signal_connect ((gpointer) word_wrap1, "activate", G_CALLBACK (on_word_wrap1_activate), NULL); g_signal_connect ((gpointer) autosize_columns, "activate", G_CALLBACK (on_autosize_columns_activate), NULL); g_signal_connect ((gpointer) configuration1, "activate", G_CALLBACK (on_configuration1_activate), NULL); g_signal_connect ((gpointer) test1, "activate", G_CALLBACK (on_test1_activate), NULL); g_signal_connect ((gpointer) open_criteria1, "activate", G_CALLBACK (on_open_criteria1_activate), NULL); g_signal_connect ((gpointer) save_criteria1, "activate", G_CALLBACK (on_save_criteria1_activate), NULL); g_signal_connect ((gpointer) reg_expression1, "activate", G_CALLBACK (on_reg_expression1_activate), NULL); g_signal_connect ((gpointer) contents1, "activate", G_CALLBACK (on_contents1_activate), NULL); g_signal_connect ((gpointer) support1, "activate", G_CALLBACK (on_support1_activate), NULL); g_signal_connect ((gpointer) online_release_notes1, "activate", G_CALLBACK (on_online_release_notes1_activate), NULL); g_signal_connect ((gpointer) forums1, "activate", G_CALLBACK (on_forums1_activate), NULL); g_signal_connect ((gpointer) about1, "activate", G_CALLBACK (on_about1_activate), NULL); g_signal_connect ((gpointer) newInstance2, "clicked", G_CALLBACK (on_newInstance2_clicked), NULL); g_signal_connect ((gpointer) importCriteria, "clicked", G_CALLBACK (on_importCriteria_clicked), NULL); g_signal_connect ((gpointer) exportCriteria, "clicked", G_CALLBACK (on_exportCriteria_clicked), NULL); g_signal_connect ((gpointer) saveResults, "clicked", G_CALLBACK (on_saveResults_clicked), NULL); g_signal_connect ((gpointer) playButton2, "clicked", G_CALLBACK (on_playButton2_clicked), NULL); g_signal_connect ((gpointer) stopButton2, "clicked", G_CALLBACK (on_stopButton2_clicked), NULL); g_signal_connect ((gpointer) printResults, "clicked", G_CALLBACK (on_printResults_clicked), NULL); g_signal_connect ((gpointer) searchNotebook, "switch_page", G_CALLBACK (on_searchNotebook_switch_page), NULL); g_signal_connect ((gpointer) searchNotebook, "focus_out_event", G_CALLBACK (on_searchNotebook_focus_out_event), NULL); g_signal_connect ((gpointer) fileName2, "focus_out_event", G_CALLBACK (on_regexp_focus_out_event), NULL); g_signal_connect ((gpointer) containingText2, "changed", G_CALLBACK (on_containingText_changed), NULL); g_signal_connect ((gpointer) containingText2, "focus_out_event", G_CALLBACK (on_regexp2_focus_out_event), NULL); g_signal_connect ((gpointer) folderSelector2, "clicked", G_CALLBACK (on_folderSelector_clicked), NULL); g_signal_connect ((gpointer) fileName, "focus_out_event", G_CALLBACK (on_regexp_focus_out_event), NULL); g_signal_connect ((gpointer) regExpWizard1, "clicked", G_CALLBACK (on_regExpWizard1_clicked), NULL); g_signal_connect ((gpointer) containingText, "changed", G_CALLBACK (on_containingText_changed), NULL); g_signal_connect_after ((gpointer) containingText, "focus_out_event", G_CALLBACK (on_regexp2_focus_out_event), NULL); g_signal_connect ((gpointer) regExpWizard2, "clicked", G_CALLBACK (on_regExpWizard2_clicked), NULL); g_signal_connect ((gpointer) searchSubfoldersCheck, "toggled", G_CALLBACK (on_searchSubfoldersCheck_toggled), NULL); g_signal_connect ((gpointer) folderDepthCheck, "toggled", G_CALLBACK (on_folderDepthCheck_toggled), NULL); g_signal_connect ((gpointer) folderSelector, "clicked", G_CALLBACK (on_folderSelector_clicked), NULL); g_signal_connect ((gpointer) lessThanCheck, "toggled", G_CALLBACK (on_lessThanCheck_toggled), NULL); /* Luc A - janv 2018 */ g_signal_connect ((gpointer) LessThanSize, "changed", G_CALLBACK (on_LessThanSize_focus_out_event), NULL); g_signal_connect ((gpointer) MoreThanSize, "changed", G_CALLBACK (on_MoreThanSize_focus_out_event), NULL); /* end Luc A */ g_signal_connect ((gpointer) beforeCheck, "toggled", G_CALLBACK (on_beforeCheck_toggled), NULL); g_signal_connect ((gpointer) moreThanCheck, "toggled", G_CALLBACK (on_moreThanCheck_toggled), NULL); g_signal_connect ((gpointer) afterCheck, "toggled", G_CALLBACK (on_afterCheck_toggled), NULL); g_signal_connect ((gpointer) afterCalendarBtn, "clicked", G_CALLBACK (on_afterCalenderBtn_clicked), NULL); g_signal_connect ((gpointer) beforeCalendarBtn, "clicked", G_CALLBACK (on_beforeCalendatBtn_clicked), NULL); g_signal_connect ((gpointer) dosExpressionRadioFile, "clicked", G_CALLBACK (on_dosExpressionRadioFile_clicked), NULL); g_signal_connect ((gpointer) regularExpressionRadioFile, "clicked", G_CALLBACK (on_regularExpressionRadioFile_clicked), NULL); g_signal_connect ((gpointer) limitResultsCheckResults, "toggled", G_CALLBACK (on_limitResultsCheckResults_toggled), NULL); g_signal_connect ((gpointer) showLinesCheckResults, "toggled", G_CALLBACK (on_showLinesCheckResults_toggled), NULL); g_signal_connect ((gpointer) limitContentsCheckResults, "toggled", G_CALLBACK (on_limitContentsCheckResults_toggled), NULL); g_signal_connect ((gpointer) expertUserCheck, "toggled", G_CALLBACK (on_expertUserCheck_toggled), NULL); g_signal_connect ((gpointer) playButton1, "clicked", G_CALLBACK (on_playButton_clicked), NULL); g_signal_connect ((gpointer) stopButton1, "clicked", G_CALLBACK (on_stopButton_clicked), NULL); g_signal_connect ((gpointer) treeview1, "button_press_event", G_CALLBACK (on_treeview1_button_press_event), NULL); g_signal_connect ((gpointer) treeview1, "popup_menu", G_CALLBACK (on_treeview1_popup_menu), NULL); g_signal_connect ((gpointer) treeview2, "button_press_event", G_CALLBACK (on_treeview1_button_press_event), NULL); g_signal_connect ((gpointer) treeview2, "popup_menu", G_CALLBACK (on_treeview1_popup_menu), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1"); GLADE_HOOKUP_OBJECT (window1, vbox1, "vbox1"); GLADE_HOOKUP_OBJECT (window1, menubar1, "menubar1"); GLADE_HOOKUP_OBJECT (window1, menuitem4, "menuitem4"); GLADE_HOOKUP_OBJECT (window1, menuitem4_menu, "menuitem4_menu"); GLADE_HOOKUP_OBJECT (window1, newInstance1, "newInstance1"); GLADE_HOOKUP_OBJECT (window1, image165, "image165"); GLADE_HOOKUP_OBJECT (window1, separatormenuitem1, "separatormenuitem1"); GLADE_HOOKUP_OBJECT (window1, save_results1, "save_results1"); GLADE_HOOKUP_OBJECT (window1, image166, "image166"); GLADE_HOOKUP_OBJECT (window1, separator5, "separator5"); GLADE_HOOKUP_OBJECT (window1, print1, "print1"); GLADE_HOOKUP_OBJECT (window1, print_preview1, "print_preview1"); GLADE_HOOKUP_OBJECT (window1, print_setup1, "print_setup1"); GLADE_HOOKUP_OBJECT (window1, separator6, "separator6"); GLADE_HOOKUP_OBJECT (window1, quit1, "quit1"); GLADE_HOOKUP_OBJECT (window1, menuitem5, "menuitem5"); GLADE_HOOKUP_OBJECT (window1, menuitem5_menu, "menuitem5_menu"); GLADE_HOOKUP_OBJECT (window1, delete1, "delete1"); GLADE_HOOKUP_OBJECT (window1, image167, "image167"); GLADE_HOOKUP_OBJECT (window1, edit_file1, "edit_file1"); GLADE_HOOKUP_OBJECT (window1, image168, "image168"); GLADE_HOOKUP_OBJECT (window1, open_folder1, "open_folder1"); GLADE_HOOKUP_OBJECT (window1, image169, "image169"); GLADE_HOOKUP_OBJECT (window1, copy2, "copy2"); GLADE_HOOKUP_OBJECT (window1, image170, "image170"); GLADE_HOOKUP_OBJECT (window1, menuitem6, "menuitem6"); GLADE_HOOKUP_OBJECT (window1, menuitem6_menu, "menuitem6_menu"); GLADE_HOOKUP_OBJECT (window1, toolbar2, "toolbar2"); GLADE_HOOKUP_OBJECT (window1, status_bar1, "status_bar1"); GLADE_HOOKUP_OBJECT (window1, separator4, "separator4"); GLADE_HOOKUP_OBJECT (window1, horizontal_results1, "horizontal_results1"); GLADE_HOOKUP_OBJECT (window1, vertical_results1, "vertical_results1"); GLADE_HOOKUP_OBJECT (window1, separator13, "separator13"); GLADE_HOOKUP_OBJECT (window1, sort_by1, "sort_by1"); GLADE_HOOKUP_OBJECT (window1, sort_by1_menu, "sort_by1_menu"); GLADE_HOOKUP_OBJECT (window1, file_name1, "file_name1"); GLADE_HOOKUP_OBJECT (window1, location1, "location1"); GLADE_HOOKUP_OBJECT (window1, size1, "size1"); GLADE_HOOKUP_OBJECT (window1, type1, "type1"); GLADE_HOOKUP_OBJECT (window1, modified1, "modified1"); GLADE_HOOKUP_OBJECT (window1, matches1, "matches1"); GLADE_HOOKUP_OBJECT (window1, search1, "search1"); GLADE_HOOKUP_OBJECT (window1, search1_menu, "search1_menu"); GLADE_HOOKUP_OBJECT (window1, playButton3, "playButton3"); GLADE_HOOKUP_OBJECT (window1, image171, "image171"); GLADE_HOOKUP_OBJECT (window1, stopButton3, "stopButton3"); GLADE_HOOKUP_OBJECT (window1, image172, "image172"); GLADE_HOOKUP_OBJECT (window1, separator2, "separator2"); GLADE_HOOKUP_OBJECT (window1, cl_ear_history1, "cl_ear_history1"); GLADE_HOOKUP_OBJECT (window1, image173, "image173"); GLADE_HOOKUP_OBJECT (window1, settings3, "settings3"); GLADE_HOOKUP_OBJECT (window1, settings3_menu, "settings3_menu"); GLADE_HOOKUP_OBJECT (window1, set_font1, "set_font1"); GLADE_HOOKUP_OBJECT (window1, set_highligting_colour1, "set_highligting_colour1"); GLADE_HOOKUP_OBJECT (window1, separator12, "separator12"); GLADE_HOOKUP_OBJECT (window1, word_wrap1, "word_wrap1"); GLADE_HOOKUP_OBJECT (window1, autosize_columns, "autosize_columns"); GLADE_HOOKUP_OBJECT (window1, separator11, "separator11"); GLADE_HOOKUP_OBJECT (window1, configuration1, "configuration1"); GLADE_HOOKUP_OBJECT (window1, test1, "test1"); GLADE_HOOKUP_OBJECT (window1, test1_menu, "test1_menu"); GLADE_HOOKUP_OBJECT (window1, open_criteria1, "open_criteria1"); GLADE_HOOKUP_OBJECT (window1, image174, "image174"); GLADE_HOOKUP_OBJECT (window1, save_criteria1, "save_criteria1"); GLADE_HOOKUP_OBJECT (window1, image175, "image175"); GLADE_HOOKUP_OBJECT (window1, separator16, "separator16"); GLADE_HOOKUP_OBJECT (window1, reg_expression1, "reg_expression1"); GLADE_HOOKUP_OBJECT (window1, menuitem7, "menuitem7"); GLADE_HOOKUP_OBJECT (window1, menuitem7_menu, "menuitem7_menu"); GLADE_HOOKUP_OBJECT (window1, contents1, "contents1"); GLADE_HOOKUP_OBJECT (window1, support1, "support1"); GLADE_HOOKUP_OBJECT (window1, online_release_notes1, "online_release_notes1"); GLADE_HOOKUP_OBJECT (window1, forums1, "forums1"); GLADE_HOOKUP_OBJECT (window1, separator1, "separator1"); GLADE_HOOKUP_OBJECT (window1, about1, "about1"); GLADE_HOOKUP_OBJECT (window1, toolbar1, "toolbar1"); GLADE_HOOKUP_OBJECT (window1, toolitem15, "toolitem15"); GLADE_HOOKUP_OBJECT (window1, newInstance2, "newInstance2"); GLADE_HOOKUP_OBJECT (window1, separatortoolitem4, "separatortoolitem4"); GLADE_HOOKUP_OBJECT (window1, importCriteria, "importCriteria"); GLADE_HOOKUP_OBJECT (window1, exportCriteria, "exportCriteria"); GLADE_HOOKUP_OBJECT (window1, separatortoolitem3, "separatortoolitem3"); GLADE_HOOKUP_OBJECT (window1, saveResults, "saveResults"); GLADE_HOOKUP_OBJECT (window1, separatortoolitem2, "separatortoolitem2"); GLADE_HOOKUP_OBJECT (window1, playButton2, "playButton2"); GLADE_HOOKUP_OBJECT (window1, stopButton2, "stopButton2"); GLADE_HOOKUP_OBJECT (window1, separatortoolitem1, "separatortoolitem1"); GLADE_HOOKUP_OBJECT (window1, printResults, "printResults"); GLADE_HOOKUP_OBJECT (window1, expander1, "expander1"); GLADE_HOOKUP_OBJECT (window1, hbox68, "hbox68"); GLADE_HOOKUP_OBJECT (window1, searchNotebook, "searchNotebook"); GLADE_HOOKUP_OBJECT (window1, vbox6, "vbox6"); GLADE_HOOKUP_OBJECT (window1, hbox14, "hbox14"); GLADE_HOOKUP_OBJECT (window1, table4, "table4"); GLADE_HOOKUP_OBJECT (window1, fileName2, "fileName2"); GLADE_HOOKUP_OBJECT (window1, label21, "label21"); GLADE_HOOKUP_OBJECT (window1, containingTextCheck2, "containingTextCheck2"); GLADE_HOOKUP_OBJECT (window1, containingText2, "containingText2"); GLADE_HOOKUP_OBJECT (window1, hseparator10, "hseparator10"); GLADE_HOOKUP_OBJECT (window1, table5, "table5"); GLADE_HOOKUP_OBJECT (window1, label20, "label20"); GLADE_HOOKUP_OBJECT (window1, lookIn2, "lookIn2"); GLADE_HOOKUP_OBJECT (window1, folderSelector2, "folderSelector2"); GLADE_HOOKUP_OBJECT (window1, alignment38, "alignment38"); GLADE_HOOKUP_OBJECT (window1, hbox69, "hbox69"); GLADE_HOOKUP_OBJECT (window1, image92, "image92"); GLADE_HOOKUP_OBJECT (window1, label1024, "label1024"); GLADE_HOOKUP_OBJECT (window1, hbox72, "hbox72"); GLADE_HOOKUP_OBJECT (window1, searchSubfoldersCheck2, "searchSubfoldersCheck2"); GLADE_HOOKUP_OBJECT (window1, label19, "label19"); GLADE_HOOKUP_OBJECT (window1, vbox3, "vbox3"); GLADE_HOOKUP_OBJECT (window1, fileNameHbox, "fileNameHbox"); GLADE_HOOKUP_OBJECT (window1, label22, "label22"); GLADE_HOOKUP_OBJECT (window1, fileName, "fileName"); GLADE_HOOKUP_OBJECT (window1, regExpWizard1, "regExpWizard1"); GLADE_HOOKUP_OBJECT (window1, containingTextHbox, "containingTextHbox"); GLADE_HOOKUP_OBJECT (window1, containingTextCheck, "containingTextCheck"); GLADE_HOOKUP_OBJECT (window1, containingText, "containingText"); GLADE_HOOKUP_OBJECT (window1, regExpWizard2, "regExpWizard2"); GLADE_HOOKUP_OBJECT (window1, table7, "table7"); GLADE_HOOKUP_OBJECT (window1, label6, "label6"); GLADE_HOOKUP_OBJECT (window1, lookIn, "lookIn"); GLADE_HOOKUP_OBJECT (window1, searchSubfoldersCheck, "searchSubfoldersCheck"); GLADE_HOOKUP_OBJECT (window1, folderDepthCheck, "folderDepthCheck"); GLADE_HOOKUP_OBJECT (window1, folderSelector, "folderSelector"); GLADE_HOOKUP_OBJECT (window1, alignment18, "alignment18"); GLADE_HOOKUP_OBJECT (window1, hbox40, "hbox40"); GLADE_HOOKUP_OBJECT (window1, image9, "image9"); /* GLADE_HOOKUP_OBJECT (window1, label253, "label253"); on used */ GLADE_HOOKUP_OBJECT (window1, folderDepthSpin, "folderDepthSpin"); // GLADE_HOOKUP_OBJECT (window1, searchModifierTable, "searchModifierTable"); GLADE_HOOKUP_OBJECT (window1, moreThanEntry, "moreThanEntry"); GLADE_HOOKUP_OBJECT (window1, lessThanEntry, "lessThanEntry"); GLADE_HOOKUP_OBJECT (window1, label17, "label17"); GLADE_HOOKUP_OBJECT (window1, label16, "label16"); GLADE_HOOKUP_OBJECT (window1, lessThanCheck, "lessThanCheck"); GLADE_HOOKUP_OBJECT (window1, beforeCheck, "beforeCheck"); GLADE_HOOKUP_OBJECT (window1, moreThanCheck, "moreThanCheck"); GLADE_HOOKUP_OBJECT (window1, afterCheck, "afterCheck"); GLADE_HOOKUP_OBJECT (window1, hbox70, "hbox70"); GLADE_HOOKUP_OBJECT (window1, afterEntry, "afterEntry"); GLADE_HOOKUP_OBJECT (window1, afterCalendarBtn, "afterCalendarBtn"); GLADE_HOOKUP_OBJECT (window1, image93, "image93"); GLADE_HOOKUP_OBJECT (window1, hbox71, "hbox71"); GLADE_HOOKUP_OBJECT (window1, beforeEntry, "beforeEntry"); GLADE_HOOKUP_OBJECT (window1, beforeCalendarBtn, "beforeCalendarBtn"); GLADE_HOOKUP_OBJECT (window1, image94, "image94"); GLADE_HOOKUP_OBJECT (window1, label1, "label1"); GLADE_HOOKUP_OBJECT (window1, hbox62, "hbox62"); GLADE_HOOKUP_OBJECT (window1, frame1, "frame1"); GLADE_HOOKUP_OBJECT (window1, vbox47, "vbox47"); GLADE_HOOKUP_OBJECT (window1, notExpressionCheckFile, "notExpressionCheckFile"); GLADE_HOOKUP_OBJECT (window1, matchCaseCheckFile, "matchCaseCheckFile"); GLADE_HOOKUP_OBJECT (window1, ignoreHiddenFiles, "ignoreHiddenFiles"); GLADE_HOOKUP_OBJECT (window1, followSymLinksCheck, "followSymLinksCheck"); GLADE_HOOKUP_OBJECT (window1, hseparator9, "hseparator9"); GLADE_HOOKUP_OBJECT (window1, dosExpressionRadioFile, "dosExpressionRadioFile"); GLADE_HOOKUP_OBJECT (window1, regularExpressionRadioFile, "regularExpressionRadioFile"); GLADE_HOOKUP_OBJECT (window1, label13, "label13"); GLADE_HOOKUP_OBJECT (window1, frame2, "frame2"); GLADE_HOOKUP_OBJECT (window1, vbox46, "vbox46"); GLADE_HOOKUP_OBJECT (window1, singlePhaseCheckContents, "singlePhaseCheckContents"); GLADE_HOOKUP_OBJECT (window1, matchCaseCheckContents, "matchCaseCheckContents"); GLADE_HOOKUP_OBJECT (window1, hseparator8, "hseparator8"); GLADE_HOOKUP_OBJECT (window1, wildcardCheckContents, "wildcardCheckContents"); GLADE_HOOKUP_OBJECT (window1, regularExpressionRadioContents, "regularExpressionRadioContents"); GLADE_HOOKUP_OBJECT (window1, label14, "label14"); GLADE_HOOKUP_OBJECT (window1, frame16, "frame16"); GLADE_HOOKUP_OBJECT (window1, vbox45, "vbox45"); GLADE_HOOKUP_OBJECT (window1, limitResultsCheckResults, "limitResultsCheckResults"); GLADE_HOOKUP_OBJECT (window1, limit_results_hbox, "limit_results_hbox"); GLADE_HOOKUP_OBJECT (window1, label1010, "label1010"); GLADE_HOOKUP_OBJECT (window1, maxHitsSpinResults, "maxHitsSpinResults"); GLADE_HOOKUP_OBJECT (window1, hseparator7, "hseparator7"); GLADE_HOOKUP_OBJECT (window1, showLinesCheckResults, "showLinesCheckResults"); GLADE_HOOKUP_OBJECT (window1, show_line_contents_hbox, "show_line_contents_hbox"); GLADE_HOOKUP_OBJECT (window1, label1009, "label1009"); GLADE_HOOKUP_OBJECT (window1, showLinesSpinResults, "showLinesSpinResults"); GLADE_HOOKUP_OBJECT (window1, hseparator11, "hseparator11"); GLADE_HOOKUP_OBJECT (window1, limitContentsCheckResults, "limitContentsCheckResults"); GLADE_HOOKUP_OBJECT (window1, limit_contents_hbox, "limit_contents_hbox"); GLADE_HOOKUP_OBJECT (window1, label1025, "label1025"); GLADE_HOOKUP_OBJECT (window1, maxContentHitsSpinResults, "maxContentHitsSpinResults"); GLADE_HOOKUP_OBJECT (window1, label1008, "label1008"); GLADE_HOOKUP_OBJECT (window1, label2, "label2"); /* GLADE_HOOKUP_OBJECT (window1, vseparator8, "vseparator8"); non used */ GLADE_HOOKUP_OBJECT (window1, vbox2, "vbox2"); GLADE_HOOKUP_OBJECT (window1, expertUserCheck, "expertUserCheck"); GLADE_HOOKUP_OBJECT (window1, playButton1, "playButton1"); GLADE_HOOKUP_OBJECT (window1, alignment36, "alignment36"); GLADE_HOOKUP_OBJECT (window1, hbox67, "hbox67"); GLADE_HOOKUP_OBJECT (window1, image27, "image27"); /* GLADE_HOOKUP_OBJECT (window1, label1015, "label1015"); not used */ GLADE_HOOKUP_OBJECT (window1, stopButton1, "stopButton1"); GLADE_HOOKUP_OBJECT (window1, label1016, "label1016"); GLADE_HOOKUP_OBJECT (window1, resultsHPane, "resultsHPane"); GLADE_HOOKUP_OBJECT (window1, resultsScroll, "resultsScroll"); GLADE_HOOKUP_OBJECT (window1, treeview1, "treeview1"); GLADE_HOOKUP_OBJECT (window1, scrolledwindow1, "scrolledwindow1"); GLADE_HOOKUP_OBJECT (window1, textview1, "textview1"); GLADE_HOOKUP_OBJECT (window1, resultsVPane, "resultsVPane"); GLADE_HOOKUP_OBJECT (window1, scrolledwindow15, "scrolledwindow15"); GLADE_HOOKUP_OBJECT (window1, treeview2, "treeview2"); GLADE_HOOKUP_OBJECT (window1, scrolledwindow16, "scrolledwindow16"); GLADE_HOOKUP_OBJECT (window1, textview4, "textview4"); GLADE_HOOKUP_OBJECT (window1, hbox41, "hbox41"); GLADE_HOOKUP_OBJECT (window1, statusbar1, "statusbar1"); GLADE_HOOKUP_OBJECT (window1, progressbar1, "progressbar1"); /* Luc A - janv 2018 */ GLADE_HOOKUP_OBJECT (window1, MoreThanSize, "MoreThanSize"); GLADE_HOOKUP_OBJECT (window1, LessThanSize, "LessThanSize"); GLADE_HOOKUP_OBJECT (window1, hboxSizeModifier, "hboxSizeModifier"); GLADE_HOOKUP_OBJECT (window1, hboxDateModifier, "hboxDateModifier"); GLADE_HOOKUP_OBJECT_NO_REF (window1, tooltips, "tooltips"); gtk_widget_grab_focus (window1); gtk_window_add_accel_group (GTK_WINDOW (window1), accel_group); return window1; } GtkWidget* create_folderChooserDialog (void) { GtkWidget *folderChooserDialog; GtkWidget *dialog_vbox1; GtkWidget *dialog_action_area1; GtkWidget *button18; GtkWidget *button19; folderChooserDialog = gtk_file_chooser_dialog_new (_("Select a folder"), NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, NULL); GTK_WIDGET_SET_FLAGS (folderChooserDialog, GTK_CAN_DEFAULT); g_object_set (folderChooserDialog, "local-only", FALSE, NULL); gtk_window_set_icon_name (GTK_WINDOW (folderChooserDialog), "gtk-open"); gtk_window_set_type_hint (GTK_WINDOW (folderChooserDialog), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox1 = GTK_DIALOG (folderChooserDialog)->vbox; gtk_widget_show (dialog_vbox1); dialog_action_area1 = GTK_DIALOG (folderChooserDialog)->action_area; gtk_widget_show (dialog_action_area1); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END); button18 = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (button18); gtk_dialog_add_action_widget (GTK_DIALOG (folderChooserDialog), button18, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (button18, GTK_CAN_DEFAULT); button19 = gtk_button_new_from_stock ("gtk-open"); gtk_widget_show (button19); gtk_dialog_add_action_widget (GTK_DIALOG (folderChooserDialog), button19, GTK_RESPONSE_OK); GTK_WIDGET_SET_FLAGS (button19, GTK_CAN_DEFAULT); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (folderChooserDialog, folderChooserDialog, "folderChooserDialog"); GLADE_HOOKUP_OBJECT_NO_REF (folderChooserDialog, dialog_vbox1, "dialog_vbox1"); GLADE_HOOKUP_OBJECT_NO_REF (folderChooserDialog, dialog_action_area1, "dialog_action_area1"); GLADE_HOOKUP_OBJECT (folderChooserDialog, button18, "button18"); GLADE_HOOKUP_OBJECT (folderChooserDialog, button19, "button19"); gtk_widget_grab_focus (folderChooserDialog); gtk_widget_grab_default (button19); return folderChooserDialog; } GtkWidget* create_menu1 (void) { GtkWidget *menu1; GtkWidget *open1; GtkWidget *image58; GtkWidget *copy3; GtkWidget *image59; GtkWidget *delete2; GtkWidget *image60; GtkWidget *explore1; GtkWidget *image61; GtkWidget *separator14; GtkWidget *cancel1; menu1 = gtk_menu_new (); open1 = gtk_image_menu_item_new_with_mnemonic (_("Edit (File)")); gtk_widget_show (open1); gtk_container_add (GTK_CONTAINER (menu1), open1); image58 = gtk_image_new_from_stock ("gtk-edit", GTK_ICON_SIZE_MENU); gtk_widget_show (image58); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (open1), image58); copy3 = gtk_image_menu_item_new_with_mnemonic (_("_Copy (Filename)")); gtk_widget_show (copy3); gtk_container_add (GTK_CONTAINER (menu1), copy3); image59 = gtk_image_new_from_stock ("gtk-copy", GTK_ICON_SIZE_MENU); gtk_widget_show (image59); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (copy3), image59); delete2 = gtk_image_menu_item_new_with_mnemonic (_("_Delete File")); gtk_widget_show (delete2); gtk_container_add (GTK_CONTAINER (menu1), delete2); image60 = gtk_image_new_from_stock ("gtk-delete", GTK_ICON_SIZE_MENU); gtk_widget_show (image60); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (delete2), image60); explore1 = gtk_image_menu_item_new_with_mnemonic (_("_Explore Folder")); gtk_widget_show (explore1); gtk_container_add (GTK_CONTAINER (menu1), explore1); image61 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU); gtk_widget_show (image61); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (explore1), image61); separator14 = gtk_separator_menu_item_new (); gtk_widget_show (separator14); gtk_container_add (GTK_CONTAINER (menu1), separator14); gtk_widget_set_sensitive (separator14, FALSE); cancel1 = gtk_menu_item_new_with_mnemonic (_("C_ancel")); gtk_widget_show (cancel1); gtk_container_add (GTK_CONTAINER (menu1), cancel1); g_signal_connect ((gpointer) open1, "activate", G_CALLBACK (on_open1_activate), NULL); g_signal_connect ((gpointer) copy3, "activate", G_CALLBACK (on_copy3_activate), NULL); g_signal_connect ((gpointer) delete2, "activate", G_CALLBACK (on_delete2_activate), NULL); g_signal_connect ((gpointer) explore1, "activate", G_CALLBACK (on_explore1_activate), NULL); g_signal_connect ((gpointer) cancel1, "activate", G_CALLBACK (on_cancel1_activate), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (menu1, menu1, "menu1"); GLADE_HOOKUP_OBJECT (menu1, open1, "open1"); GLADE_HOOKUP_OBJECT (menu1, image58, "image58"); GLADE_HOOKUP_OBJECT (menu1, copy3, "copy3"); GLADE_HOOKUP_OBJECT (menu1, image59, "image59"); GLADE_HOOKUP_OBJECT (menu1, delete2, "delete2"); GLADE_HOOKUP_OBJECT (menu1, image60, "image60"); GLADE_HOOKUP_OBJECT (menu1, explore1, "explore1"); GLADE_HOOKUP_OBJECT (menu1, image61, "image61"); GLADE_HOOKUP_OBJECT (menu1, separator14, "separator14"); GLADE_HOOKUP_OBJECT (menu1, cancel1, "cancel1"); return menu1; } GtkWidget* create_highlightColourDialog (void) { GtkWidget *highlightColourDialog; GtkWidget *ok_button1; GtkWidget *cancel_button1; GtkWidget *help_button1; GtkWidget *color_selection1; highlightColourDialog = gtk_color_selection_dialog_new (_("Select highlighting Colour")); gtk_container_set_border_width (GTK_CONTAINER (highlightColourDialog), 5); gtk_window_set_resizable (GTK_WINDOW (highlightColourDialog), FALSE); gtk_window_set_destroy_with_parent (GTK_WINDOW (highlightColourDialog), TRUE); gtk_window_set_icon_name (GTK_WINDOW (highlightColourDialog), "gtk-select-color"); gtk_window_set_skip_taskbar_hint (GTK_WINDOW (highlightColourDialog), TRUE); gtk_window_set_type_hint (GTK_WINDOW (highlightColourDialog), GDK_WINDOW_TYPE_HINT_DIALOG); ok_button1 = GTK_COLOR_SELECTION_DIALOG (highlightColourDialog)->ok_button; gtk_widget_show (ok_button1); GTK_WIDGET_SET_FLAGS (ok_button1, GTK_CAN_DEFAULT); cancel_button1 = GTK_COLOR_SELECTION_DIALOG (highlightColourDialog)->cancel_button; gtk_widget_show (cancel_button1); GTK_WIDGET_SET_FLAGS (cancel_button1, GTK_CAN_DEFAULT); help_button1 = GTK_COLOR_SELECTION_DIALOG (highlightColourDialog)->help_button; GTK_WIDGET_SET_FLAGS (help_button1, GTK_CAN_DEFAULT); color_selection1 = GTK_COLOR_SELECTION_DIALOG (highlightColourDialog)->colorsel; gtk_widget_show (color_selection1); gtk_container_set_border_width (GTK_CONTAINER (color_selection1), 5); gtk_color_selection_set_has_opacity_control (GTK_COLOR_SELECTION (color_selection1), FALSE); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (highlightColourDialog, highlightColourDialog, "highlightColourDialog"); GLADE_HOOKUP_OBJECT_NO_REF (highlightColourDialog, ok_button1, "ok_button1"); GLADE_HOOKUP_OBJECT_NO_REF (highlightColourDialog, cancel_button1, "cancel_button1"); GLADE_HOOKUP_OBJECT_NO_REF (highlightColourDialog, help_button1, "help_button1"); GLADE_HOOKUP_OBJECT_NO_REF (highlightColourDialog, color_selection1, "color_selection1"); return highlightColourDialog; } GtkWidget* create_fontSelectionDialog (void) { GtkWidget *fontSelectionDialog; GtkWidget *ok_button2; GtkWidget *cancel_button2; GtkWidget *apply_button1; GtkWidget *font_selection1; fontSelectionDialog = gtk_font_selection_dialog_new (_("Select Font")); gtk_container_set_border_width (GTK_CONTAINER (fontSelectionDialog), 4); gtk_window_set_destroy_with_parent (GTK_WINDOW (fontSelectionDialog), TRUE); gtk_window_set_icon_name (GTK_WINDOW (fontSelectionDialog), "gtk-select-font"); gtk_window_set_type_hint (GTK_WINDOW (fontSelectionDialog), GDK_WINDOW_TYPE_HINT_DIALOG); ok_button2 = GTK_FONT_SELECTION_DIALOG (fontSelectionDialog)->ok_button; gtk_widget_show (ok_button2); GTK_WIDGET_SET_FLAGS (ok_button2, GTK_CAN_DEFAULT); cancel_button2 = GTK_FONT_SELECTION_DIALOG (fontSelectionDialog)->cancel_button; gtk_widget_show (cancel_button2); GTK_WIDGET_SET_FLAGS (cancel_button2, GTK_CAN_DEFAULT); apply_button1 = GTK_FONT_SELECTION_DIALOG (fontSelectionDialog)->apply_button; GTK_WIDGET_SET_FLAGS (apply_button1, GTK_CAN_DEFAULT); font_selection1 = GTK_FONT_SELECTION_DIALOG (fontSelectionDialog)->fontsel; gtk_widget_show (font_selection1); gtk_container_set_border_width (GTK_CONTAINER (font_selection1), 4); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (fontSelectionDialog, fontSelectionDialog, "fontSelectionDialog"); GLADE_HOOKUP_OBJECT_NO_REF (fontSelectionDialog, ok_button2, "ok_button2"); GLADE_HOOKUP_OBJECT_NO_REF (fontSelectionDialog, cancel_button2, "cancel_button2"); GLADE_HOOKUP_OBJECT_NO_REF (fontSelectionDialog, apply_button1, "apply_button1"); GLADE_HOOKUP_OBJECT_NO_REF (fontSelectionDialog, font_selection1, "font_selection1"); return fontSelectionDialog; } GtkWidget* create_clearSearchHistoryDialog (void) { GtkWidget *clearSearchHistoryDialog; GtkWidget *dialog_vbox2; GtkWidget *vbox19; GtkWidget *frame8; GtkWidget *alignment15; GtkWidget *vbox20; GtkWidget *clearFileNamesCheck; GtkWidget *clearContainingTextCheck; GtkWidget *clearLookInCheck; GtkWidget *resetSizeModifiedCheck; GtkWidget *label226; GtkWidget *label225; GtkWidget *dialog_action_area2; GtkWidget *cancelbutton1; GtkWidget *okbutton1; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); clearSearchHistoryDialog = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (clearSearchHistoryDialog), _("Clear Search History")); gtk_window_set_position (GTK_WINDOW (clearSearchHistoryDialog), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_resizable (GTK_WINDOW (clearSearchHistoryDialog), FALSE); gtk_window_set_destroy_with_parent (GTK_WINDOW (clearSearchHistoryDialog), TRUE); gtk_window_set_icon_name (GTK_WINDOW (clearSearchHistoryDialog), "gtk-clear"); gtk_window_set_skip_taskbar_hint (GTK_WINDOW (clearSearchHistoryDialog), TRUE); gtk_window_set_type_hint (GTK_WINDOW (clearSearchHistoryDialog), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox2 = GTK_DIALOG (clearSearchHistoryDialog)->vbox; gtk_widget_show (dialog_vbox2); vbox19 = gtk_vbox_new (FALSE, 4); gtk_container_set_border_width (GTK_CONTAINER (vbox19), 4); gtk_widget_show (vbox19); gtk_box_pack_start (GTK_BOX (dialog_vbox2), vbox19, TRUE, TRUE, 0); /* Mac style Icon + some tips for user - Luc A feb 2018 */ GtkWidget *hboxUserConfidence = gtk_hbox_new(FALSE, 4); gtk_widget_show(hboxUserConfidence); gtk_box_pack_start (GTK_BOX (vbox19), hboxUserConfidence, TRUE, TRUE, 0); label226 = gtk_label_new (_("Select which data to delete:\nWith this dialog, you can control how your entries will be cleared.")); gtk_widget_show (label226); gtk_label_set_use_markup (GTK_LABEL (label226), TRUE); GtkWidget *iconUserConfidence = gtk_image_new_from_icon_name ("edit-clear", GTK_ICON_SIZE_DIALOG); gtk_widget_show(iconUserConfidence); gtk_misc_set_padding(GTK_MISC(iconUserConfidence), 0, 2); gtk_box_pack_start(GTK_BOX(hboxUserConfidence), iconUserConfidence, FALSE, FALSE, 2); gtk_misc_set_padding(GTK_MISC(label226), 2, 2); gtk_container_add(GTK_CONTAINER(hboxUserConfidence), label226); /* end luc A */ frame8 = gtk_frame_new (NULL); gtk_widget_show (frame8); gtk_container_set_border_width (GTK_CONTAINER (frame8), 4); gtk_box_pack_start (GTK_BOX (vbox19), frame8, TRUE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame8), GTK_SHADOW_OUT); alignment15 = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment15); gtk_container_add (GTK_CONTAINER (frame8), alignment15); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment15), 4, 0, 12, 0); vbox20 = gtk_vbox_new (FALSE, 2); gtk_widget_show (vbox20); gtk_container_add (GTK_CONTAINER (alignment15), vbox20); clearFileNamesCheck = gtk_check_button_new_with_mnemonic (_("Clear file names")); gtk_widget_show (clearFileNamesCheck); gtk_box_pack_start (GTK_BOX (vbox20), clearFileNamesCheck, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, clearFileNamesCheck, _("Clear all file names in the \"Files:\" drop-down list"), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (clearFileNamesCheck), TRUE); clearContainingTextCheck = gtk_check_button_new_with_mnemonic (_("Clear containing text")); gtk_widget_show (clearContainingTextCheck); gtk_box_pack_start (GTK_BOX (vbox20), clearContainingTextCheck, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, clearContainingTextCheck, _("Clear all patterns in the \"Containing:\" drop-down list"), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (clearContainingTextCheck), TRUE); clearLookInCheck = gtk_check_button_new_with_mnemonic (_("Clear look in history")); gtk_widget_show (clearLookInCheck); gtk_box_pack_start (GTK_BOX (vbox20), clearLookInCheck, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, clearLookInCheck, _("Clear all directories in the \"Folders:\" drop-down list"), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (clearLookInCheck), TRUE); resetSizeModifiedCheck = gtk_check_button_new_with_mnemonic (_("Reset size/modified options")); gtk_widget_show (resetSizeModifiedCheck); gtk_box_pack_start (GTK_BOX (vbox20), resetSizeModifiedCheck, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, resetSizeModifiedCheck, _("Reset the size and modified search criteria."), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (resetSizeModifiedCheck), TRUE); label225 = gtk_label_new (_("Warning: Once cleared, history cannot be recovered!")); gtk_widget_show (label225); gtk_box_pack_start (GTK_BOX (vbox19), label225, FALSE, FALSE, 0); gtk_label_set_use_markup (GTK_LABEL (label225), TRUE); gtk_label_set_justify (GTK_LABEL (label225), GTK_JUSTIFY_CENTER); gtk_label_set_line_wrap (GTK_LABEL (label225), TRUE); gtk_misc_set_padding (GTK_MISC (label225), 5, 5); GtkWidget *hseparator1 = gtk_hseparator_new (); gtk_widget_show (hseparator1); gtk_box_pack_start (GTK_BOX (vbox19), hseparator1, TRUE, TRUE, 0); dialog_action_area2 = GTK_DIALOG (clearSearchHistoryDialog)->action_area; gtk_widget_show (dialog_action_area2); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_EDGE); cancelbutton1 = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (cancelbutton1); gtk_dialog_add_action_widget (GTK_DIALOG (clearSearchHistoryDialog), cancelbutton1, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (cancelbutton1, GTK_CAN_DEFAULT); okbutton1 = gtk_button_new_from_stock ("gtk-ok"); gtk_widget_show (okbutton1); gtk_dialog_add_action_widget (GTK_DIALOG (clearSearchHistoryDialog), okbutton1, GTK_RESPONSE_OK); GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT); /* added auto-focis on cancel - Luc A. 30 dec 2017 */ gtk_widget_grab_focus( cancelbutton1); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (clearSearchHistoryDialog, clearSearchHistoryDialog, "clearSearchHistoryDialog"); GLADE_HOOKUP_OBJECT_NO_REF (clearSearchHistoryDialog, dialog_vbox2, "dialog_vbox2"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, vbox19, "vbox19"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, frame8, "frame8"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, alignment15, "alignment15"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, vbox20, "vbox20"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, clearFileNamesCheck, "clearFileNamesCheck"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, clearContainingTextCheck, "clearContainingTextCheck"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, clearLookInCheck, "clearLookInCheck"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, resetSizeModifiedCheck, "resetSizeModifiedCheck"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, label226, "label226"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, label225, "label225"); GLADE_HOOKUP_OBJECT_NO_REF (clearSearchHistoryDialog, dialog_action_area2, "dialog_action_area2"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, cancelbutton1, "cancelbutton1"); GLADE_HOOKUP_OBJECT (clearSearchHistoryDialog, okbutton1, "okbutton1"); GLADE_HOOKUP_OBJECT_NO_REF (clearSearchHistoryDialog, tooltips, "tooltips"); return clearSearchHistoryDialog; } GtkWidget* create_testRegExDialog (void) { GtkWidget *testRegExDialog; GtkWidget *dialog_vbox3; GtkWidget *vbox21; GtkWidget *hbox27; GtkWidget *label227; GtkWidget *testEntry; // GtkWidget *hbox28; GtkWidget *label229; GtkWidget *scrolledwindow6; GtkWidget *SampleTextView; GtkWidget *label228; GtkWidget *hseparator3; GtkWidget *hbox29; GtkWidget *label230; GtkWidget *testResultStatus; GtkWidget *dialog_action_area3; GtkWidget *okbutton2; GtkWidget *closeButton2; testRegExDialog = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (testRegExDialog), _("Test Regular Expression")); gtk_window_set_position (GTK_WINDOW (testRegExDialog), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_destroy_with_parent (GTK_WINDOW (testRegExDialog), TRUE); gtk_window_set_skip_taskbar_hint (GTK_WINDOW (testRegExDialog), TRUE); gtk_window_set_skip_pager_hint (GTK_WINDOW (testRegExDialog), TRUE); gtk_window_set_type_hint (GTK_WINDOW (testRegExDialog), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox3 = GTK_DIALOG (testRegExDialog)->vbox; gtk_widget_show (dialog_vbox3); vbox21 = gtk_vbox_new (FALSE, 4); gtk_container_set_border_width (GTK_CONTAINER (vbox21), 4); gtk_widget_show (vbox21); gtk_box_pack_start (GTK_BOX (dialog_vbox3), vbox21, TRUE, TRUE, 4); /* Mac style - Luc A feb 2018 */ hbox27 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox27); gtk_box_pack_start (GTK_BOX (vbox21), hbox27, FALSE, FALSE, 0); GtkWidget *labelHeaderTest = gtk_label_new (_("Test Regular Expressions (RegEx):\nWith this dialog, you can test a RegEx before using it.\nFeel free to type a RegEx and put an example of text to test it.")); gtk_widget_show (labelHeaderTest); gtk_label_set_use_markup (GTK_LABEL (labelHeaderTest), TRUE); GtkWidget *iconHeaderTest = gtk_image_new_from_icon_name ("applications-development", GTK_ICON_SIZE_DIALOG); //GtkWidget *iconHeaderTest = gtk_image_new_from_file (g_strconcat(PACKAGE_DATA_DIR, "/pixmaps/", PACKAGE, "/", // "regex.png", NULL)); gtk_widget_show(iconHeaderTest); gtk_misc_set_padding(GTK_MISC(iconHeaderTest), 0, 2); gtk_box_pack_start(GTK_BOX(hbox27), iconHeaderTest, FALSE, FALSE, 2); gtk_misc_set_padding(GTK_MISC(labelHeaderTest), 2, 2); gtk_container_add(GTK_CONTAINER(hbox27), labelHeaderTest); GtkWidget *hseparatorHeaderTest = gtk_hseparator_new (); gtk_widget_show(hseparatorHeaderTest); gtk_box_pack_start (GTK_BOX (vbox21), hseparatorHeaderTest, FALSE, FALSE, 0); label227 = gtk_label_new (_("Test Expression:")); gtk_label_set_use_markup (GTK_LABEL (label227), TRUE); gtk_misc_set_padding (GTK_MISC (label227), 4, 4); gtk_widget_show (label227); gtk_box_pack_start (GTK_BOX (vbox21), label227, FALSE, FALSE, 0); testEntry = gtk_entry_new (); gtk_widget_show (testEntry); gtk_box_pack_start (GTK_BOX (vbox21), testEntry, TRUE, TRUE, 4); gtk_entry_set_text (GTK_ENTRY (testEntry), _("sample")); gtk_entry_set_invisible_char (GTK_ENTRY (testEntry), 9679); gtk_entry_set_activates_default (GTK_ENTRY (testEntry), TRUE); // hbox28 = gtk_hbox_new (FALSE, 4); // gtk_widget_show (hbox28); // gtk_box_pack_start (GTK_BOX (vbox21), hbox28, TRUE, TRUE, 4); label229 = gtk_label_new (_("Sample Text:")); gtk_label_set_use_markup (GTK_LABEL (label229), TRUE); gtk_misc_set_padding (GTK_MISC (label229), 4, 4); gtk_widget_show (label229); gtk_box_pack_start (GTK_BOX (vbox21), label229, FALSE, FALSE, 0); scrolledwindow6 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow6); gtk_box_pack_start (GTK_BOX (vbox21), scrolledwindow6, TRUE, TRUE, 4); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow6), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow6), GTK_SHADOW_IN); gtk_widget_set_size_request (GTK_WIDGET(scrolledwindow6), -1, 80); SampleTextView = gtk_text_view_new (); gtk_widget_show (SampleTextView); gtk_container_add (GTK_CONTAINER (scrolledwindow6), SampleTextView); /*gtk_text_view_set_overwrite (GTK_TEXT_VIEW (SampleTextView), TRUE); removed since it's default in other case Gdk warns*/ gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (SampleTextView), GTK_WRAP_WORD); gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (SampleTextView)), _(""), -1); label228 = gtk_label_new (_("To see the results of your regular expression click apply. Once done, simply close the window. Searches are case sensitive.\n\nNote: this tool will highlight each match(es) found.")); /* added by Luc A. 30 dec 2017 - be careful, deprecated since Gtk 3.12 */ gtk_misc_set_padding (GTK_MISC (label228), 4, 4); /* end luc A. */ gtk_widget_show (label228); gtk_box_pack_start (GTK_BOX (vbox21), label228, FALSE, FALSE, 7); gtk_label_set_use_markup (GTK_LABEL (label228), TRUE); gtk_label_set_line_wrap (GTK_LABEL (label228), TRUE); hseparator3 = gtk_hseparator_new (); gtk_widget_show (hseparator3); gtk_box_pack_start (GTK_BOX (vbox21), hseparator3, FALSE, FALSE, 0); hbox29 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox29); gtk_box_pack_start (GTK_BOX (vbox21), hbox29, FALSE, FALSE, 0); label230 = gtk_label_new (_("Status:")); gtk_label_set_use_markup (GTK_LABEL (label230), TRUE); gtk_misc_set_padding (GTK_MISC (label230), 4, 4); gtk_widget_show (label230); gtk_box_pack_start (GTK_BOX (hbox29), label230, FALSE, FALSE, 0); testResultStatus = gtk_entry_new (); gtk_widget_show (testResultStatus); gtk_box_pack_start (GTK_BOX (hbox29), testResultStatus, TRUE, TRUE, 4); gtk_editable_set_editable (GTK_EDITABLE (testResultStatus), FALSE); gtk_entry_set_invisible_char (GTK_ENTRY (testResultStatus), 9679); dialog_action_area3 = GTK_DIALOG (testRegExDialog)->action_area; gtk_widget_show (dialog_action_area3); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area3), GTK_BUTTONBOX_END); okbutton2 = gtk_button_new_from_stock ("gtk-apply"); gtk_widget_show (okbutton2); gtk_dialog_add_action_widget (GTK_DIALOG (testRegExDialog), okbutton2, GTK_RESPONSE_APPLY); GTK_WIDGET_SET_FLAGS (okbutton2, GTK_CAN_DEFAULT); closeButton2 = gtk_button_new_from_stock ("gtk-close"); gtk_widget_show (closeButton2); gtk_dialog_add_action_widget (GTK_DIALOG (testRegExDialog), closeButton2, GTK_RESPONSE_CLOSE); GTK_WIDGET_SET_FLAGS (closeButton2, GTK_CAN_DEFAULT); g_signal_connect ((gpointer) testRegExDialog, "response", G_CALLBACK (on_testRegExDialog_response), NULL); g_signal_connect ((gpointer) SampleTextView, "realize", G_CALLBACK (on_SampleTextView_realize), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (testRegExDialog, testRegExDialog, "testRegExDialog"); GLADE_HOOKUP_OBJECT_NO_REF (testRegExDialog, dialog_vbox3, "dialog_vbox3"); GLADE_HOOKUP_OBJECT (testRegExDialog, vbox21, "vbox21"); GLADE_HOOKUP_OBJECT (testRegExDialog, hbox27, "hbox27"); GLADE_HOOKUP_OBJECT (testRegExDialog, label227, "label227"); GLADE_HOOKUP_OBJECT (testRegExDialog, testEntry, "testEntry"); // GLADE_HOOKUP_OBJECT (testRegExDialog, hbox28, "hbox28"); GLADE_HOOKUP_OBJECT (testRegExDialog, label229, "label229"); GLADE_HOOKUP_OBJECT (testRegExDialog, scrolledwindow6, "scrolledwindow6"); GLADE_HOOKUP_OBJECT (testRegExDialog, SampleTextView, "SampleTextView"); GLADE_HOOKUP_OBJECT (testRegExDialog, label228, "label228"); GLADE_HOOKUP_OBJECT (testRegExDialog, hseparator3, "hseparator3"); GLADE_HOOKUP_OBJECT (testRegExDialog, hbox29, "hbox29"); GLADE_HOOKUP_OBJECT (testRegExDialog, label230, "label230"); GLADE_HOOKUP_OBJECT (testRegExDialog, testResultStatus, "testResultStatus"); GLADE_HOOKUP_OBJECT_NO_REF (testRegExDialog, dialog_action_area3, "dialog_action_area3"); GLADE_HOOKUP_OBJECT (testRegExDialog, okbutton2, "okbutton2"); GLADE_HOOKUP_OBJECT (testRegExDialog, closeButton2, "closeButton2"); gtk_widget_grab_default (okbutton2); return testRegExDialog; } GtkWidget* create_expWizard (void) { GtkWidget *expWizard; GtkWidget *dialog_vbox4; GtkWidget *vbox23; GtkWidget *hbox30; GtkWidget *label234; GtkWidget *startType; GtkWidget *startEntry; GtkWidget *label235; GtkWidget *startOccurance; GtkWidget *frame9; GtkWidget *hbox33; GtkWidget *vbox25; GtkWidget *hbox34; GtkWidget *midType; GtkWidget *midEntry; GtkWidget *label245; GtkWidget *midOccurance; GtkWidget *midSelection; GtkWidget *scrolledwindow13; GtkWidget *midTreeView; GtkWidget *vbox24; GtkWidget *addMidContents; GtkWidget *updateSelectedContents; GtkWidget *modifiedSelectedContents; GtkWidget *deleteSelectedContents; GtkWidget *label238; GtkWidget *hbox32; GtkWidget *label239; GtkWidget *endType; GtkWidget *endEntry; GtkWidget *label240; GtkWidget *endOccurance; GtkWidget *frame10; GtkWidget *alignment17; GtkWidget *hbox35; GtkWidget *resultExp; GtkWidget *convertRegex; GtkWidget *label241; GtkWidget *dialog_action_area4; GtkWidget *wizardHelp; GtkWidget *cancelExpWiz; GtkWidget *okRegExWizard; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); expWizard = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (expWizard), _("Expression Wizard")); gtk_window_set_position (GTK_WINDOW (expWizard), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_destroy_with_parent (GTK_WINDOW (expWizard), TRUE); gtk_window_set_skip_taskbar_hint (GTK_WINDOW (expWizard), TRUE); gtk_window_set_type_hint (GTK_WINDOW (expWizard), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox4 = GTK_DIALOG (expWizard)->vbox; gtk_widget_show (dialog_vbox4); vbox23 = gtk_vbox_new (FALSE, 4); gtk_container_set_border_width (GTK_CONTAINER (vbox23), 4); gtk_widget_show (vbox23); gtk_box_pack_start (GTK_BOX (dialog_vbox4), vbox23, TRUE, TRUE, 4); hbox30 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox30); gtk_box_pack_start (GTK_BOX (vbox23), hbox30, FALSE, FALSE, 4); label234 = gtk_label_new (_("Text begins:")); gtk_label_set_use_markup (GTK_LABEL (label234), TRUE); gtk_widget_show (label234); gtk_box_pack_start (GTK_BOX (hbox30), label234, FALSE, FALSE, 4); startType = gtk_combo_box_text_new_with_entry (); gtk_widget_show (startType); gtk_box_pack_start (GTK_BOX (hbox30), startType, TRUE, TRUE, 0); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startType), _("Don't know")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startType), _("Any character")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startType), _("The character")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startType), _("Any one of these chars")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startType), _("Any char except these")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startType), _("The phrase")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startType), _("Space(s)")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startType), _("Any numeric character")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startType), _("Any text character")); startEntry = gtk_entry_new (); gtk_widget_show (startEntry); gtk_box_pack_start (GTK_BOX (hbox30), startEntry, TRUE, TRUE, 0); gtk_widget_set_sensitive (startEntry, FALSE); gtk_entry_set_invisible_char (GTK_ENTRY (startEntry), 8226); label235 = gtk_label_new (_("that occurs")); gtk_widget_show (label235); gtk_box_pack_start (GTK_BOX (hbox30), label235, FALSE, FALSE, 4); startOccurance = gtk_combo_box_text_new_with_entry (); gtk_widget_show (startOccurance); gtk_box_pack_start (GTK_BOX (hbox30), startOccurance, TRUE, TRUE, 4); gtk_widget_set_sensitive (startOccurance, FALSE); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startOccurance), _("Once")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startOccurance), _("One or more times")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startOccurance), _("Zero or more times")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (startOccurance), _("Possibly once")); frame9 = gtk_frame_new (NULL); gtk_widget_show (frame9); gtk_box_pack_start (GTK_BOX (vbox23), frame9, TRUE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame9), GTK_SHADOW_NONE); hbox33 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox33); gtk_container_add (GTK_CONTAINER (frame9), hbox33); vbox25 = gtk_vbox_new (FALSE, 4); gtk_widget_show (vbox25); gtk_box_pack_start (GTK_BOX (hbox33), vbox25, TRUE, TRUE, 10); hbox34 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox34); gtk_box_pack_start (GTK_BOX (vbox25), hbox34, FALSE, FALSE, 0); midType = gtk_combo_box_text_new_with_entry (); gtk_widget_show (midType); gtk_box_pack_start (GTK_BOX (hbox34), midType, TRUE, TRUE, 0); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midType), _("Don't know")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midType), _("Any character")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midType), _("The character")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midType), _("Any one of these chars")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midType), _("Any char except these")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midType), _("The phrase")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midType), _("Space(s)")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midType), _("Any numeric character")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midType), _("Any text character")); midEntry = gtk_entry_new (); gtk_widget_show (midEntry); gtk_box_pack_start (GTK_BOX (hbox34), midEntry, TRUE, TRUE, 0); gtk_widget_set_sensitive (midEntry, FALSE); gtk_entry_set_invisible_char (GTK_ENTRY (midEntry), 8226); label245 = gtk_label_new (_("that occurs")); gtk_widget_show (label245); gtk_box_pack_start (GTK_BOX (hbox34), label245, FALSE, FALSE, 0); midOccurance = gtk_combo_box_text_new_with_entry (); gtk_widget_show (midOccurance); gtk_box_pack_start (GTK_BOX (hbox34), midOccurance, TRUE, TRUE, 0); gtk_widget_set_sensitive (midOccurance, FALSE); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midOccurance), _("Once")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midOccurance), _("One or more times")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midOccurance), _("Zero or more times")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (midOccurance), _("Possibly once")); midSelection = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (hbox34), midSelection, TRUE, TRUE, 0); gtk_entry_set_invisible_char (GTK_ENTRY (midSelection), 8226); scrolledwindow13 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow13); gtk_box_pack_start (GTK_BOX (vbox25), scrolledwindow13, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow13), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); midTreeView = gtk_tree_view_new (); gtk_widget_show (midTreeView); gtk_container_add (GTK_CONTAINER (scrolledwindow13), midTreeView); gtk_tooltips_set_tip (tooltips, midTreeView, _("Each row creates a new part to the rule, with the order reflecting the order in which the rule is to be matched."), NULL); gtk_tree_view_set_reorderable (GTK_TREE_VIEW (midTreeView), TRUE); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (midTreeView), FALSE); vbox24 = gtk_vbox_new (FALSE, 4); gtk_widget_show (vbox24); gtk_box_pack_start (GTK_BOX (hbox33), vbox24, FALSE, FALSE, 0); addMidContents = gtk_button_new_with_mnemonic (_("Add")); gtk_widget_show (addMidContents); gtk_box_pack_start (GTK_BOX (vbox24), addMidContents, FALSE, FALSE, 0); gtk_widget_set_sensitive (addMidContents, FALSE); gtk_tooltips_set_tip (tooltips, addMidContents, _("Creates a new row in the list with the following rule."), NULL); updateSelectedContents = gtk_button_new_with_mnemonic (_("Update")); gtk_widget_show (updateSelectedContents); gtk_box_pack_start (GTK_BOX (vbox24), updateSelectedContents, FALSE, FALSE, 0); gtk_widget_set_sensitive (updateSelectedContents, FALSE); gtk_tooltips_set_tip (tooltips, updateSelectedContents, _("Updates a rule that was selected for the modify function."), NULL); modifiedSelectedContents = gtk_button_new_with_mnemonic (_("Modify")); gtk_widget_show (modifiedSelectedContents); gtk_box_pack_start (GTK_BOX (vbox24), modifiedSelectedContents, FALSE, FALSE, 0); gtk_widget_set_sensitive (modifiedSelectedContents, FALSE); gtk_tooltips_set_tip (tooltips, modifiedSelectedContents, _("Modifies an existing row in the rule table."), NULL); deleteSelectedContents = gtk_button_new_with_mnemonic (_("Delete")); gtk_widget_show (deleteSelectedContents); gtk_box_pack_start (GTK_BOX (vbox24), deleteSelectedContents, FALSE, FALSE, 0); gtk_widget_set_sensitive (deleteSelectedContents, FALSE); gtk_tooltips_set_tip (tooltips, deleteSelectedContents, _("Deletes an existing row in the rule table."), NULL); label238 = gtk_label_new (_("Text contains")); gtk_widget_show (label238); gtk_frame_set_label_widget (GTK_FRAME (frame9), label238); gtk_label_set_use_markup (GTK_LABEL (label238), TRUE); hbox32 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox32); gtk_box_pack_start (GTK_BOX (vbox23), hbox32, FALSE, FALSE, 4); /* added by Luc A. - 30 dec 2017 */ GtkWidget *hseparator1ExpWiazrd = gtk_hseparator_new (); gtk_widget_show (hseparator1ExpWiazrd); gtk_box_pack_start (GTK_BOX (vbox23), hseparator1ExpWiazrd, TRUE, TRUE, 0); /* end Luc A. */ label239 = gtk_label_new (_("Text ends:")); gtk_label_set_use_markup (GTK_LABEL (label239), TRUE); gtk_widget_show (label239); gtk_box_pack_start (GTK_BOX (hbox32), label239, FALSE, FALSE, 4); endType = gtk_combo_box_text_new_with_entry (); gtk_widget_show (endType); gtk_box_pack_start (GTK_BOX (hbox32), endType, TRUE, TRUE, 0); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endType), _("Don't know")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endType), _("Any character")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endType), _("The character")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endType), _("Any one of these chars")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endType), _("Any char except these")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endType), _("The phrase")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endType), _("Space(s)")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endType), _("Any numeric character")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endType), _("Any text character")); endEntry = gtk_entry_new (); gtk_widget_show (endEntry); gtk_box_pack_start (GTK_BOX (hbox32), endEntry, TRUE, TRUE, 0); gtk_widget_set_sensitive (endEntry, FALSE); gtk_entry_set_invisible_char (GTK_ENTRY (endEntry), 8226); label240 = gtk_label_new (_("that occurs")); gtk_widget_show (label240); gtk_box_pack_start (GTK_BOX (hbox32), label240, FALSE, FALSE, 0); endOccurance = gtk_combo_box_text_new_with_entry (); gtk_widget_show (endOccurance); gtk_box_pack_start (GTK_BOX (hbox32), endOccurance, TRUE, TRUE, 0); gtk_widget_set_sensitive (endOccurance, FALSE); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endOccurance), _("Once")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endOccurance), _("One or more times")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endOccurance), _("Zero or more times")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (endOccurance), _("Possibly once")); frame10 = gtk_frame_new (NULL); gtk_widget_show (frame10); gtk_box_pack_start (GTK_BOX (vbox23), frame10, FALSE, TRUE, 0); gtk_frame_set_shadow_type (GTK_FRAME (frame10), GTK_SHADOW_NONE); alignment17 = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment17); gtk_container_add (GTK_CONTAINER (frame10), alignment17); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment17), 0, 0, 12, 0); hbox35 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox35); gtk_container_add (GTK_CONTAINER (alignment17), hbox35); resultExp = gtk_entry_new (); gtk_widget_show (resultExp); gtk_box_pack_start (GTK_BOX (hbox35), resultExp, TRUE, TRUE, 0); gtk_tooltips_set_tip (tooltips, resultExp, _("This is the expression that will be copied back to the main screen."), NULL); gtk_editable_set_editable (GTK_EDITABLE (resultExp), FALSE); gtk_entry_set_invisible_char (GTK_ENTRY (resultExp), 8226); convertRegex = gtk_check_button_new_with_mnemonic (_("Convert Internals")); gtk_widget_show (convertRegex); gtk_box_pack_start (GTK_BOX (hbox35), convertRegex, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, convertRegex, _("Some characters (such as . | ^ $) are reserved in certain circumstances.\n\nIf you know what you are doing with these characters, unselect this checkbox."), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (convertRegex), TRUE); label241 = gtk_label_new (_("Resulting expression")); gtk_widget_show (label241); gtk_frame_set_label_widget (GTK_FRAME (frame10), label241); gtk_label_set_use_markup (GTK_LABEL (label241), TRUE); dialog_action_area4 = GTK_DIALOG (expWizard)->action_area; gtk_widget_show (dialog_action_area4); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area4), GTK_BUTTONBOX_END); wizardHelp = gtk_button_new_from_stock ("gtk-help"); gtk_widget_show (wizardHelp); gtk_dialog_add_action_widget (GTK_DIALOG (expWizard), wizardHelp, GTK_RESPONSE_HELP); GTK_WIDGET_SET_FLAGS (wizardHelp, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, wizardHelp, _("Help with the Regular Expression Builder"), NULL); cancelExpWiz = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (cancelExpWiz); gtk_dialog_add_action_widget (GTK_DIALOG (expWizard), cancelExpWiz, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (cancelExpWiz, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, cancelExpWiz, _("Discard any changes."), NULL); okRegExWizard = gtk_button_new_from_stock ("gtk-ok"); gtk_widget_show (okRegExWizard); gtk_dialog_add_action_widget (GTK_DIALOG (expWizard), okRegExWizard, GTK_RESPONSE_OK); gtk_widget_set_sensitive (okRegExWizard, FALSE); GTK_WIDGET_SET_FLAGS (okRegExWizard, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, okRegExWizard, _("Accept the resulting expression, and add it to the search rules."), NULL); g_signal_connect ((gpointer) expWizard, "response", G_CALLBACK (on_expWizard_response), NULL); g_signal_connect ((gpointer) expWizard, "realize", G_CALLBACK (on_expWizard_realize), NULL); g_signal_connect ((gpointer) startType, "changed", G_CALLBACK (on_startType_changed), NULL); g_signal_connect ((gpointer) startEntry, "changed", G_CALLBACK (on_startEntry_changed), NULL); g_signal_connect ((gpointer) startOccurance, "changed", G_CALLBACK (on_startOccurance_changed), NULL); g_signal_connect ((gpointer) midType, "changed", G_CALLBACK (on_midType_changed), NULL); g_signal_connect ((gpointer) midEntry, "changed", G_CALLBACK (on_midEntry_changed), NULL); g_signal_connect ((gpointer) midOccurance, "changed", G_CALLBACK (on_midOccurance_changed), NULL); g_signal_connect ((gpointer) midSelection, "changed", G_CALLBACK (on_midSelection_changed), NULL); g_signal_connect ((gpointer) midTreeView, "realize", G_CALLBACK (on_midTreeView_realize), NULL); g_signal_connect ((gpointer) midTreeView, "drag_end", G_CALLBACK (on_midTreeView_drag_end), NULL); g_signal_connect ((gpointer) addMidContents, "clicked", G_CALLBACK (on_addMidContents_clicked), NULL); g_signal_connect ((gpointer) updateSelectedContents, "clicked", G_CALLBACK (on_updateSelectedContents_clicked), NULL); g_signal_connect ((gpointer) modifiedSelectedContents, "clicked", G_CALLBACK (on_modifiedSelectedContents_clicked), NULL); g_signal_connect ((gpointer) deleteSelectedContents, "clicked", G_CALLBACK (on_deleteSelectedContents_clicked), NULL); g_signal_connect ((gpointer) endType, "changed", G_CALLBACK (on_endType_changed), NULL); g_signal_connect ((gpointer) endEntry, "changed", G_CALLBACK (on_endEntry_changed), NULL); g_signal_connect ((gpointer) endOccurance, "changed", G_CALLBACK (on_endOccurance_changed), NULL); g_signal_connect ((gpointer) convertRegex, "toggled", G_CALLBACK (on_convertRegex_toggled), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (expWizard, expWizard, "expWizard"); GLADE_HOOKUP_OBJECT_NO_REF (expWizard, dialog_vbox4, "dialog_vbox4"); GLADE_HOOKUP_OBJECT (expWizard, vbox23, "vbox23"); GLADE_HOOKUP_OBJECT (expWizard, hbox30, "hbox30"); GLADE_HOOKUP_OBJECT (expWizard, label234, "label234"); GLADE_HOOKUP_OBJECT (expWizard, startType, "startType"); GLADE_HOOKUP_OBJECT (expWizard, startEntry, "startEntry"); GLADE_HOOKUP_OBJECT (expWizard, label235, "label235"); GLADE_HOOKUP_OBJECT (expWizard, startOccurance, "startOccurance"); GLADE_HOOKUP_OBJECT (expWizard, frame9, "frame9"); GLADE_HOOKUP_OBJECT (expWizard, hbox33, "hbox33"); GLADE_HOOKUP_OBJECT (expWizard, vbox25, "vbox25"); GLADE_HOOKUP_OBJECT (expWizard, hbox34, "hbox34"); GLADE_HOOKUP_OBJECT (expWizard, midType, "midType"); GLADE_HOOKUP_OBJECT (expWizard, midEntry, "midEntry"); GLADE_HOOKUP_OBJECT (expWizard, label245, "label245"); GLADE_HOOKUP_OBJECT (expWizard, midOccurance, "midOccurance"); GLADE_HOOKUP_OBJECT (expWizard, midSelection, "midSelection"); GLADE_HOOKUP_OBJECT (expWizard, scrolledwindow13, "scrolledwindow13"); GLADE_HOOKUP_OBJECT (expWizard, midTreeView, "midTreeView"); GLADE_HOOKUP_OBJECT (expWizard, vbox24, "vbox24"); GLADE_HOOKUP_OBJECT (expWizard, addMidContents, "addMidContents"); GLADE_HOOKUP_OBJECT (expWizard, updateSelectedContents, "updateSelectedContents"); GLADE_HOOKUP_OBJECT (expWizard, modifiedSelectedContents, "modifiedSelectedContents"); GLADE_HOOKUP_OBJECT (expWizard, deleteSelectedContents, "deleteSelectedContents"); GLADE_HOOKUP_OBJECT (expWizard, label238, "label238"); GLADE_HOOKUP_OBJECT (expWizard, hbox32, "hbox32"); GLADE_HOOKUP_OBJECT (expWizard, label239, "label239"); GLADE_HOOKUP_OBJECT (expWizard, endType, "endType"); GLADE_HOOKUP_OBJECT (expWizard, endEntry, "endEntry"); GLADE_HOOKUP_OBJECT (expWizard, label240, "label240"); GLADE_HOOKUP_OBJECT (expWizard, endOccurance, "endOccurance"); GLADE_HOOKUP_OBJECT (expWizard, frame10, "frame10"); GLADE_HOOKUP_OBJECT (expWizard, alignment17, "alignment17"); GLADE_HOOKUP_OBJECT (expWizard, hbox35, "hbox35"); GLADE_HOOKUP_OBJECT (expWizard, resultExp, "resultExp"); GLADE_HOOKUP_OBJECT (expWizard, convertRegex, "convertRegex"); GLADE_HOOKUP_OBJECT (expWizard, label241, "label241"); GLADE_HOOKUP_OBJECT_NO_REF (expWizard, dialog_action_area4, "dialog_action_area4"); GLADE_HOOKUP_OBJECT (expWizard, wizardHelp, "wizardHelp"); GLADE_HOOKUP_OBJECT (expWizard, cancelExpWiz, "cancelExpWiz"); GLADE_HOOKUP_OBJECT (expWizard, okRegExWizard, "okRegExWizard"); GLADE_HOOKUP_OBJECT_NO_REF (expWizard, tooltips, "tooltips"); return expWizard; } GtkWidget* create_configDialog (void) { GtkWidget *configDialog; GtkWidget *dialog_vbox5; GtkWidget *configNotebook; GtkWidget *vbox26; GtkWidget *configForceSingle; GtkWidget *configExtendedRegex; GtkWidget *configPromptSave; GtkWidget *configPromptDelete; GtkWidget *configMatchBinary; GtkWidget *label246; GtkWidget *vbox29; GtkWidget *table6; GtkWidget *label249; GtkWidget *label250; GtkWidget *label266; GtkWidget *label267; GtkWidget *label271; GtkWidget *configTextEditorAttributes; GtkWidget *configFileExplorerAttributes; GtkWidget *configWebBrowserAttributes; GtkWidget *configTextEditor; GtkWidget *configFileExplorer; GtkWidget *configWebBrowser; GtkWidget *hseparator4; GtkWidget *hbox55; GtkWidget *label994; GtkWidget *autoFindExe; GtkWidget *label993; GtkWidget *vbox27; /* GtkWidget *hbox50; */ GtkWidget *label264; GtkWidget *configResultEOL; /* GtkWidget *hbox51; */ GtkWidget *label262; GtkWidget *configResultEOF; /* GtkWidget *hbox56;*/ GtkWidget *label1006; GtkWidget *configResultDelimiter; GtkWidget *label991; GtkWidget *vbox28; GtkWidget *hbox52; GtkWidget *label274; GtkWidget *configResetAll; GtkWidget *hbox53; GtkWidget *label275; GtkWidget *configFileLocation; GtkWidget *hbox54; GtkWidget *label992; GtkWidget *configSaveNow; GtkWidget *label273; GtkWidget *dialog_action_area5; GtkWidget *cancelbutton2; GtkWidget *okbutton3; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); configDialog = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (configDialog), _("Configuration")); gtk_window_set_modal (GTK_WINDOW (configDialog), TRUE); gtk_window_set_destroy_with_parent (GTK_WINDOW (configDialog), TRUE); gtk_window_set_icon_name (GTK_WINDOW (configDialog), "gtk-preferences"); gtk_window_set_type_hint (GTK_WINDOW (configDialog), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox5 = GTK_DIALOG (configDialog)->vbox; gtk_box_set_spacing (GTK_BOX(dialog_vbox5), 2); gtk_widget_show (dialog_vbox5); configNotebook = gtk_notebook_new (); gtk_container_set_border_width (GTK_CONTAINER (configNotebook), 4); gtk_widget_show (configNotebook); gtk_box_pack_start (GTK_BOX (dialog_vbox5), configNotebook, TRUE, TRUE, 4); vbox26 = gtk_vbox_new (FALSE, 2); gtk_widget_show (vbox26); gtk_container_add (GTK_CONTAINER (configNotebook), vbox26); configForceSingle = gtk_check_button_new_with_mnemonic (_("Force single window mode")); gtk_widget_show (configForceSingle); gtk_box_pack_start (GTK_BOX (vbox26), configForceSingle, FALSE, FALSE, 5); gtk_widget_set_sensitive (configForceSingle, FALSE); configExtendedRegex = gtk_check_button_new_with_mnemonic (_("Use extended regular expressions")); gtk_widget_show (configExtendedRegex); gtk_box_pack_start (GTK_BOX (vbox26), configExtendedRegex, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, configExtendedRegex, _("Extended regular expressions are recommended as they provide more functionality."), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configExtendedRegex), TRUE); configPromptSave = gtk_check_button_new_with_mnemonic (_("Prompt before saving state")); gtk_widget_show (configPromptSave); gtk_box_pack_start (GTK_BOX (vbox26), configPromptSave, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, configPromptSave, _("Force a prompt before settings are saved."), NULL); configPromptDelete = gtk_check_button_new_with_mnemonic (_("Prompt before deleting files")); gtk_widget_show (configPromptDelete); gtk_box_pack_start (GTK_BOX (vbox26), configPromptDelete, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, configPromptDelete, _("Force a prompt before any files are deleted"), NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (configPromptDelete), TRUE); configMatchBinary = gtk_check_button_new_with_mnemonic (_("Match strings within binary files too")); gtk_widget_show (configMatchBinary); gtk_box_pack_start (GTK_BOX (vbox26), configMatchBinary, FALSE, FALSE, 0); gtk_widget_set_sensitive (configMatchBinary, FALSE); gtk_tooltips_set_tip (tooltips, configMatchBinary, _("Check this to allow"), NULL); label246 = gtk_label_new (_("Global Settings")); gtk_widget_show (label246); /* Display Icon in the tab - thanks to old developpers here ; http://vim.1045645.n5.nabble.com/Patch-Nicer-notebook-tabs-with-GTK2-td1206288.html */ GtkWidget *tab_boxGlobalSettings = gtk_vbox_new(FALSE, 4); gtk_widget_show(tab_boxGlobalSettings); GtkWidget *iconGlobalSettings = gtk_image_new_from_icon_name ("applications-system", GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_widget_show(iconGlobalSettings); gtk_misc_set_padding(GTK_MISC(iconGlobalSettings), 0, 2); gtk_box_pack_start(GTK_BOX(tab_boxGlobalSettings), iconGlobalSettings, FALSE, FALSE, 2); gtk_misc_set_padding(GTK_MISC(label246), 2, 2); gtk_container_add(GTK_CONTAINER(tab_boxGlobalSettings), label246); gtk_notebook_set_tab_label (GTK_NOTEBOOK (configNotebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (configNotebook), 0), tab_boxGlobalSettings); vbox29 = gtk_vbox_new (FALSE, 2); gtk_widget_show (vbox29); gtk_container_add (GTK_CONTAINER (configNotebook), vbox29); table6 = gtk_table_new (4, 3, FALSE); gtk_widget_show (table6); gtk_box_pack_start (GTK_BOX (vbox29), table6, TRUE, TRUE, 4); label249 = gtk_label_new (_("Default text editor:")); gtk_widget_show (label249); gtk_table_attach (GTK_TABLE (table6), label249, 0, 1, 1, 2, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_padding (GTK_MISC (label249), 5, 0); label250 = gtk_label_new (_("Default folder explorer:")); gtk_widget_show (label250); gtk_table_attach (GTK_TABLE (table6), label250, 0, 1, 2, 3, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_padding (GTK_MISC (label250), 5, 0); label266 = gtk_label_new (_("Binary/Executable")); gtk_widget_show (label266); gtk_table_attach (GTK_TABLE (table6), label266, 1, 2, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); label267 = gtk_label_new (_("Attributes")); gtk_widget_show (label267); gtk_table_attach (GTK_TABLE (table6), label267, 2, 3, 0, 1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); label271 = gtk_label_new (_("Default web browser:")); gtk_widget_show (label271); gtk_table_attach (GTK_TABLE (table6), label271, 0, 1, 3, 4, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_misc_set_padding (GTK_MISC (label271), 5, 0); configTextEditorAttributes = gtk_entry_new (); gtk_widget_show (configTextEditorAttributes); gtk_table_attach (GTK_TABLE (table6), configTextEditorAttributes, 2, 3, 1, 2, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, configTextEditorAttributes, _("Text editor attributes: %f=filename, %d=directory"), NULL); gtk_entry_set_text (GTK_ENTRY (configTextEditorAttributes), _("%f")); gtk_entry_set_invisible_char (GTK_ENTRY (configTextEditorAttributes), 9679); configFileExplorerAttributes = gtk_entry_new (); gtk_widget_show (configFileExplorerAttributes); gtk_table_attach (GTK_TABLE (table6), configFileExplorerAttributes, 2, 3, 2, 3, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, configFileExplorerAttributes, _("File explorer attributes: %f=filename, %d=directory"), NULL); gtk_entry_set_text (GTK_ENTRY (configFileExplorerAttributes), _("%d")); gtk_entry_set_invisible_char (GTK_ENTRY (configFileExplorerAttributes), 9679); configWebBrowserAttributes = gtk_entry_new (); gtk_widget_show (configWebBrowserAttributes); gtk_table_attach (GTK_TABLE (table6), configWebBrowserAttributes, 2, 3, 3, 4, (GtkAttachOptions) (GTK_SHRINK | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, configWebBrowserAttributes, _("Text editor attributes: %f=filename, %d=directory"), NULL); gtk_entry_set_text (GTK_ENTRY (configWebBrowserAttributes), _("%f")); gtk_entry_set_invisible_char (GTK_ENTRY (configWebBrowserAttributes), 9679); configTextEditor = gtk_entry_new (); gtk_widget_show (configTextEditor); gtk_table_attach (GTK_TABLE (table6), configTextEditor, 1, 2, 1, 2, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, configTextEditor, _("Paste and edit full file name of your preferred text editor."), NULL); gtk_entry_set_invisible_char (GTK_ENTRY (configTextEditor), 8226); configFileExplorer = gtk_entry_new (); gtk_widget_show (configFileExplorer); gtk_table_attach (GTK_TABLE (table6), configFileExplorer, 1, 2, 2, 3, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, configFileExplorer, _("Paste and edit full file name of your preferred file explorer."), NULL); gtk_entry_set_invisible_char (GTK_ENTRY (configFileExplorer), 8226); configWebBrowser = gtk_entry_new (); gtk_widget_show (configWebBrowser); gtk_table_attach (GTK_TABLE (table6), configWebBrowser, 1, 2, 3, 4, (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), (GtkAttachOptions) (0), 0, 0); gtk_tooltips_set_tip (tooltips, configWebBrowser, _("Paste and edit full file name of your preferred web browser."), NULL); gtk_entry_set_invisible_char (GTK_ENTRY (configWebBrowser), 8226); hseparator4 = gtk_hseparator_new (); gtk_widget_show (hseparator4); gtk_box_pack_start (GTK_BOX (vbox29), hseparator4, TRUE, TRUE, 0); hbox55 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox55); gtk_box_pack_start (GTK_BOX (vbox29), hbox55, FALSE, TRUE, 0); label994 = gtk_label_new (_("Find default executables:")); gtk_widget_show (label994); gtk_box_pack_start (GTK_BOX (hbox55), label994, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (label994), 5, 0); // autoFindExe = gtk_button_new_with_mnemonic (_("Auto search...")); // gtk_widget_show (autoFindExe); // gtk_box_pack_start (GTK_BOX (hbox55), autoFindExe, FALSE, FALSE, 0); /* création complète bouton comptatible Gtk 3 janv 2018 */ autoFindExe = gtk_button_new(); gtk_widget_show (autoFindExe); GtkWidget *hboxautoFindExe = gtk_vbox_new(FALSE, 2); gtk_widget_show (hboxautoFindExe); gtk_container_add (GTK_CONTAINER (autoFindExe), hboxautoFindExe); gtk_box_pack_start (GTK_BOX (hbox55), autoFindExe, TRUE, FALSE, 0); /* image to button compatible with Gtk 3.0 Luc A janv 2018 */ GtkWidget *autoFindExeImage = gtk_image_new(); gtk_image_set_from_icon_name (GTK_IMAGE(autoFindExeImage), "edit-find", GTK_ICON_SIZE_BUTTON); gtk_widget_show (autoFindExeImage); gtk_box_pack_start (GTK_BOX (hboxautoFindExe), autoFindExeImage, FALSE, FALSE, 0); GtkWidget *autoFindExeLabel = gtk_label_new(_("Auto search...")); gtk_widget_show (autoFindExeLabel); gtk_box_pack_start (GTK_BOX (hboxautoFindExe), autoFindExeLabel, FALSE, FALSE, 0); label993 = gtk_label_new (_("Default Applications")); gtk_widget_show (label993); GtkWidget *tab_boxApplicationsSettings = gtk_vbox_new(FALSE, 4); gtk_widget_show(tab_boxApplicationsSettings); GtkWidget *iconApplicationsSettings = gtk_image_new_from_icon_name ("system-run", GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_widget_show(iconApplicationsSettings); gtk_misc_set_padding(GTK_MISC(iconApplicationsSettings), 0, 2); gtk_box_pack_start(GTK_BOX(tab_boxApplicationsSettings), iconApplicationsSettings, FALSE, FALSE, 2); gtk_misc_set_padding(GTK_MISC(label993), 2, 2); gtk_container_add(GTK_CONTAINER(tab_boxApplicationsSettings), label993); gtk_notebook_set_tab_label (GTK_NOTEBOOK (configNotebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (configNotebook), 1), tab_boxApplicationsSettings); /* gtk_notebook_set_tab_label (GTK_NOTEBOOK (configNotebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (configNotebook), 1), label993); */ GtkWidget *hbox27 = gtk_hbox_new (FALSE, 2); gtk_widget_show (hbox27); gtk_container_add (GTK_CONTAINER (configNotebook), hbox27); vbox27 = gtk_vbox_new (TRUE, 2); gtk_widget_show (vbox27); gtk_box_pack_start (GTK_BOX (hbox27), vbox27, FALSE, FALSE, 2); GtkWidget *vbox271 = gtk_vbox_new (TRUE, 2); gtk_widget_show (vbox271); gtk_box_pack_start (GTK_BOX (hbox27), vbox271, FALSE, FALSE, 2); label264 = gtk_label_new (_("End of row separator:")); gtk_widget_show (label264); gtk_box_pack_start (GTK_BOX (vbox27), label264, FALSE, FALSE, 3); configResultEOL = gtk_entry_new (); gtk_widget_show (configResultEOL); gtk_box_pack_start (GTK_BOX (vbox271), configResultEOL, FALSE, TRUE, 0); gtk_tooltips_set_tip (tooltips, configResultEOL, _("Use ASCII or C style construct e.g. \\n"), NULL); gtk_entry_set_max_length (GTK_ENTRY (configResultEOL), 2); gtk_entry_set_text (GTK_ENTRY (configResultEOL), _("\\n")); gtk_entry_set_invisible_char (GTK_ENTRY (configResultEOL), 8226); gtk_entry_set_width_chars (GTK_ENTRY (configResultEOL), 2); label262 = gtk_label_new (_("Value/field separator:")); gtk_widget_show (label262); gtk_box_pack_start (GTK_BOX (vbox27), label262, FALSE, FALSE, 3); configResultEOF = gtk_entry_new (); gtk_widget_show (configResultEOF); gtk_box_pack_start (GTK_BOX (vbox271), configResultEOF, FALSE, TRUE, 0); gtk_tooltips_set_tip (tooltips, configResultEOF, _("Use ASCII or C style construct e.g. , \\t ;"), NULL); gtk_entry_set_max_length (GTK_ENTRY (configResultEOF), 2); gtk_entry_set_text (GTK_ENTRY (configResultEOF), _(",")); gtk_entry_set_invisible_char (GTK_ENTRY (configResultEOF), 8226); gtk_entry_set_width_chars (GTK_ENTRY (configResultEOF), 2); label1006 = gtk_label_new (_("Text delimiter:")); gtk_widget_show (label1006); gtk_box_pack_start (GTK_BOX (vbox27), label1006, FALSE, FALSE, 3); configResultDelimiter = gtk_entry_new (); gtk_widget_show (configResultDelimiter); gtk_box_pack_start (GTK_BOX (vbox271), configResultDelimiter, FALSE, TRUE, 0); gtk_tooltips_set_tip (tooltips, configResultDelimiter, _("Use ASCII characters e.g. \" # $ '"), NULL); gtk_entry_set_max_length (GTK_ENTRY (configResultDelimiter), 2); gtk_entry_set_text (GTK_ENTRY (configResultDelimiter), _("\\\"")); gtk_entry_set_invisible_char (GTK_ENTRY (configResultDelimiter), 8226); gtk_entry_set_width_chars (GTK_ENTRY (configResultDelimiter), 2); label991 = gtk_label_new (_("Csv Export")); gtk_widget_show (label991); GtkWidget *tab_boxCSVSettings = gtk_vbox_new(FALSE, 4); gtk_widget_show(tab_boxCSVSettings); GtkWidget *iconCSVSettings = gtk_image_new_from_icon_name ("x-office-spreadsheet", GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_widget_show(iconCSVSettings); gtk_misc_set_padding(GTK_MISC(iconCSVSettings), 0, 2); gtk_box_pack_start(GTK_BOX(tab_boxCSVSettings), iconCSVSettings, FALSE, FALSE, 2); gtk_misc_set_padding(GTK_MISC(label991), 2, 2); gtk_container_add(GTK_CONTAINER(tab_boxCSVSettings), label991); gtk_notebook_set_tab_label (GTK_NOTEBOOK (configNotebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (configNotebook), 2), tab_boxCSVSettings); // gtk_notebook_set_tab_label (GTK_NOTEBOOK (configNotebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (configNotebook), 2), label991); vbox28 = gtk_vbox_new (FALSE, 2); gtk_widget_show (vbox28); gtk_container_add (GTK_CONTAINER (configNotebook), vbox28); hbox52 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox52); gtk_box_pack_start (GTK_BOX (vbox28), hbox52, FALSE, FALSE, 4); label274 = gtk_label_new (_("Remove all saved settings (restart required to complete):")); gtk_widget_show (label274); gtk_box_pack_start (GTK_BOX (hbox52), label274, FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (label274), 0, 0.5); /* création complète bouton comptatible Gtk 3 janv 2018 */ configResetAll = gtk_button_new(); gtk_widget_show (configResetAll); GtkWidget *hboxconfigResetAll = gtk_hbox_new(FALSE, 2); gtk_widget_show (hboxconfigResetAll); gtk_container_add (GTK_CONTAINER (configResetAll), hboxconfigResetAll); gtk_box_pack_start (GTK_BOX (hbox52), configResetAll, TRUE, FALSE, 0); /* image to button compatible with Gtk 3.0 Luc A janv 2018 */ GtkWidget *configResetAllImage = gtk_image_new(); gtk_image_set_from_icon_name (GTK_IMAGE(configResetAllImage), "system-run", GTK_ICON_SIZE_BUTTON); gtk_widget_show (configResetAllImage); gtk_box_pack_start (GTK_BOX (hboxconfigResetAll), configResetAllImage, FALSE, FALSE, 0); GtkWidget *configResetAllLabel = gtk_label_new(_("Reset all")); gtk_widget_show (configResetAllLabel); gtk_box_pack_start (GTK_BOX (hboxconfigResetAll), configResetAllLabel, FALSE, FALSE, 0); /* end button à la mano Gtk 3 */ GtkWidget *hSeperatorConfigReset = gtk_hseparator_new (); gtk_widget_show (hSeperatorConfigReset); gtk_box_pack_start (GTK_BOX (vbox28), hSeperatorConfigReset, FALSE, TRUE, 5); hbox54 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox54); gtk_box_pack_start (GTK_BOX (vbox28), hbox54, FALSE, FALSE, 0); label992 = gtk_label_new (_("Save settings immediately (normally occurs on exit):")); gtk_widget_show (label992); gtk_box_pack_start (GTK_BOX (hbox54), label992, FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (label992), 0, 0.5); configSaveNow = gtk_button_new(); gtk_widget_show (configSaveNow); GtkWidget *hboxconfigSaveNow = gtk_hbox_new(FALSE, 2); gtk_widget_show (hboxconfigSaveNow); gtk_container_add (GTK_CONTAINER (configSaveNow), hboxconfigSaveNow); /* image to button compatible with Gtk 3.0 Luc A janv 2018 */ GtkWidget *configSaveNowImage = gtk_image_new(); gtk_image_set_from_icon_name (GTK_IMAGE(configSaveNowImage), "document-save", GTK_ICON_SIZE_BUTTON); gtk_widget_show (configSaveNowImage); gtk_box_pack_start (GTK_BOX (hboxconfigSaveNow), configSaveNowImage, FALSE, FALSE, 0); GtkWidget *configSaveNowLabel = gtk_label_new(_("Save now")); gtk_widget_show (configSaveNowLabel); gtk_box_pack_start (GTK_BOX (hboxconfigSaveNow), configSaveNowLabel, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox54), configSaveNow, TRUE, FALSE, 0); hbox53 = gtk_hbox_new (FALSE, 4); gtk_widget_show (hbox53); gtk_box_pack_start (GTK_BOX (vbox28), hbox53, FALSE, FALSE, 0); label275 = gtk_label_new (_("Current Config file location:")); gtk_widget_show (label275); gtk_box_pack_start (GTK_BOX (hbox53), label275, FALSE, FALSE, 0); gtk_misc_set_alignment (GTK_MISC (label275), 0, 0.5); configFileLocation = gtk_entry_new (); gtk_widget_show (configFileLocation); gtk_box_pack_start (GTK_BOX (hbox53), configFileLocation, TRUE, TRUE, 4); gtk_tooltips_set_tip (tooltips, configFileLocation, _("Location of your current searchmonkey configuration settings file."), NULL); gtk_editable_set_editable (GTK_EDITABLE (configFileLocation), FALSE); gtk_entry_set_invisible_char (GTK_ENTRY (configFileLocation), 8226); label273 = gtk_label_new (_("System")); gtk_widget_show (label273); GtkWidget *tab_boxSystemSettings = gtk_vbox_new(FALSE, 4); gtk_widget_show(tab_boxSystemSettings); GtkWidget *iconSystemSettings = gtk_image_new_from_icon_name ("system-upgrade", GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_widget_show(iconSystemSettings); gtk_misc_set_padding(GTK_MISC(iconSystemSettings), 0, 2); gtk_box_pack_start(GTK_BOX(tab_boxSystemSettings), iconSystemSettings, FALSE, FALSE, 2); gtk_misc_set_padding(GTK_MISC(label273), 2, 2); gtk_container_add(GTK_CONTAINER(tab_boxSystemSettings), label273); gtk_notebook_set_tab_label (GTK_NOTEBOOK (configNotebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (configNotebook), 3), tab_boxSystemSettings); // gtk_notebook_set_tab_label (GTK_NOTEBOOK (configNotebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (configNotebook), 3), label273); dialog_action_area5 = GTK_DIALOG (configDialog)->action_area; gtk_widget_show (dialog_action_area5); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area5), GTK_BUTTONBOX_END); cancelbutton2 = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (cancelbutton2); gtk_dialog_add_action_widget (GTK_DIALOG (configDialog), cancelbutton2, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (cancelbutton2, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, cancelbutton2, _("Searching for system files, please wait..."), NULL); okbutton3 = gtk_button_new_from_stock ("gtk-ok"); gtk_widget_show (okbutton3); gtk_dialog_add_action_widget (GTK_DIALOG (configDialog), okbutton3, GTK_RESPONSE_OK); GTK_WIDGET_SET_FLAGS (okbutton3, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, okbutton3, _("Searching for system files, please wait..."), NULL); g_signal_connect ((gpointer) configDialog, "realize", G_CALLBACK (on_configDialog_realize), NULL); g_signal_connect ((gpointer) autoFindExe, "clicked", G_CALLBACK (on_autoFindExe_clicked), NULL); g_signal_connect ((gpointer) configResultEOL, "focus_out_event", G_CALLBACK (on_configResultEOL_focus_out_event), NULL); g_signal_connect ((gpointer) configResultEOF, "focus_out_event", G_CALLBACK (on_configResultEOF_focus_out_event), NULL); g_signal_connect ((gpointer) configResultDelimiter, "focus_out_event", G_CALLBACK (on_configResultDelimiter_focus_out_event), NULL); g_signal_connect ((gpointer) configResetAll, "clicked", G_CALLBACK (on_configResetAll_clicked), NULL); g_signal_connect ((gpointer) configSaveNow, "clicked", G_CALLBACK (on_configSaveNow_clicked), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (configDialog, configDialog, "configDialog"); GLADE_HOOKUP_OBJECT_NO_REF (configDialog, dialog_vbox5, "dialog_vbox5"); GLADE_HOOKUP_OBJECT (configDialog, configNotebook, "configNotebook"); GLADE_HOOKUP_OBJECT (configDialog, vbox26, "vbox26"); GLADE_HOOKUP_OBJECT (configDialog, configForceSingle, "configForceSingle"); GLADE_HOOKUP_OBJECT (configDialog, configExtendedRegex, "configExtendedRegex"); GLADE_HOOKUP_OBJECT (configDialog, configPromptSave, "configPromptSave"); GLADE_HOOKUP_OBJECT (configDialog, configPromptDelete, "configPromptDelete"); GLADE_HOOKUP_OBJECT (configDialog, configMatchBinary, "configMatchBinary"); GLADE_HOOKUP_OBJECT (configDialog, label246, "label246"); GLADE_HOOKUP_OBJECT (configDialog, vbox29, "vbox29"); GLADE_HOOKUP_OBJECT (configDialog, table6, "table6"); GLADE_HOOKUP_OBJECT (configDialog, label249, "label249"); GLADE_HOOKUP_OBJECT (configDialog, label250, "label250"); GLADE_HOOKUP_OBJECT (configDialog, label266, "label266"); GLADE_HOOKUP_OBJECT (configDialog, label267, "label267"); GLADE_HOOKUP_OBJECT (configDialog, label271, "label271"); GLADE_HOOKUP_OBJECT (configDialog, configTextEditorAttributes, "configTextEditorAttributes"); GLADE_HOOKUP_OBJECT (configDialog, configFileExplorerAttributes, "configFileExplorerAttributes"); GLADE_HOOKUP_OBJECT (configDialog, configWebBrowserAttributes, "configWebBrowserAttributes"); GLADE_HOOKUP_OBJECT (configDialog, configTextEditor, "configTextEditor"); GLADE_HOOKUP_OBJECT (configDialog, configFileExplorer, "configFileExplorer"); GLADE_HOOKUP_OBJECT (configDialog, configWebBrowser, "configWebBrowser"); GLADE_HOOKUP_OBJECT (configDialog, hseparator4, "hseparator4"); GLADE_HOOKUP_OBJECT (configDialog, hbox55, "hbox55"); GLADE_HOOKUP_OBJECT (configDialog, label994, "label994"); GLADE_HOOKUP_OBJECT (configDialog, autoFindExe, "autoFindExe"); GLADE_HOOKUP_OBJECT (configDialog, label993, "label993"); GLADE_HOOKUP_OBJECT (configDialog, vbox27, "vbox27"); /* GLADE_HOOKUP_OBJECT (configDialog, hbox50, "hbox50"); non used */ GLADE_HOOKUP_OBJECT (configDialog, label264, "label264"); GLADE_HOOKUP_OBJECT (configDialog, configResultEOL, "configResultEOL"); /* GLADE_HOOKUP_OBJECT (configDialog, hbox51, "hbox51"); non used */ GLADE_HOOKUP_OBJECT (configDialog, label262, "label262"); GLADE_HOOKUP_OBJECT (configDialog, configResultEOF, "configResultEOF"); /* GLADE_HOOKUP_OBJECT (configDialog, hbox56, "hbox56"); non used */ GLADE_HOOKUP_OBJECT (configDialog, label1006, "label1006"); GLADE_HOOKUP_OBJECT (configDialog, configResultDelimiter, "configResultDelimiter"); GLADE_HOOKUP_OBJECT (configDialog, label991, "label991"); GLADE_HOOKUP_OBJECT (configDialog, vbox28, "vbox28"); GLADE_HOOKUP_OBJECT (configDialog, hbox52, "hbox52"); GLADE_HOOKUP_OBJECT (configDialog, label274, "label274"); GLADE_HOOKUP_OBJECT (configDialog, configResetAll, "configResetAll"); GLADE_HOOKUP_OBJECT (configDialog, hbox53, "hbox53"); GLADE_HOOKUP_OBJECT (configDialog, label275, "label275"); GLADE_HOOKUP_OBJECT (configDialog, configFileLocation, "configFileLocation"); GLADE_HOOKUP_OBJECT (configDialog, hbox54, "hbox54"); GLADE_HOOKUP_OBJECT (configDialog, label992, "label992"); GLADE_HOOKUP_OBJECT (configDialog, configSaveNow, "configSaveNow"); GLADE_HOOKUP_OBJECT (configDialog, label273, "label273"); GLADE_HOOKUP_OBJECT_NO_REF (configDialog, dialog_action_area5, "dialog_action_area5"); GLADE_HOOKUP_OBJECT (configDialog, cancelbutton2, "cancelbutton2"); GLADE_HOOKUP_OBJECT (configDialog, okbutton3, "okbutton3"); GLADE_HOOKUP_OBJECT_NO_REF (configDialog, tooltips, "tooltips"); gtk_widget_grab_default (okbutton3); return configDialog; } GtkWidget* create_saveFileDialog (void) { GtkWidget *saveFileDialog; GtkWidget *dialog_vbox6; GtkWidget *dialog_action_area6; GtkWidget *button43; GtkWidget *button44; saveFileDialog = gtk_file_chooser_dialog_new (_("Save results to CSV file..."), NULL, GTK_FILE_CHOOSER_ACTION_SAVE, NULL); g_object_set (saveFileDialog, "local-only", FALSE, NULL); gtk_window_set_modal (GTK_WINDOW (saveFileDialog), TRUE); gtk_window_set_destroy_with_parent (GTK_WINDOW (saveFileDialog), TRUE); gtk_window_set_icon_name (GTK_WINDOW (saveFileDialog), "gtk-file"); gtk_window_set_skip_taskbar_hint (GTK_WINDOW (saveFileDialog), TRUE); gtk_window_set_type_hint (GTK_WINDOW (saveFileDialog), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox6 = GTK_DIALOG (saveFileDialog)->vbox; gtk_widget_show (dialog_vbox6); dialog_action_area6 = GTK_DIALOG (saveFileDialog)->action_area; gtk_widget_show (dialog_action_area6); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area6), GTK_BUTTONBOX_END); button43 = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (button43); gtk_dialog_add_action_widget (GTK_DIALOG (saveFileDialog), button43, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (button43, GTK_CAN_DEFAULT); button44 = gtk_button_new_from_stock ("gtk-save"); gtk_widget_show (button44); gtk_dialog_add_action_widget (GTK_DIALOG (saveFileDialog), button44, GTK_RESPONSE_OK); GTK_WIDGET_SET_FLAGS (button44, GTK_CAN_DEFAULT); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (saveFileDialog, saveFileDialog, "saveFileDialog"); GLADE_HOOKUP_OBJECT_NO_REF (saveFileDialog, dialog_vbox6, "dialog_vbox6"); GLADE_HOOKUP_OBJECT_NO_REF (saveFileDialog, dialog_action_area6, "dialog_action_area6"); GLADE_HOOKUP_OBJECT (saveFileDialog, button43, "button43"); GLADE_HOOKUP_OBJECT (saveFileDialog, button44, "button44"); gtk_widget_grab_default (button44); return saveFileDialog; } GtkWidget* create_importCriteria (void) { GtkWidget *importCriteria; GtkWidget *dialog_vbox7; GtkWidget *vbox30; GtkWidget *notebook3; GtkWidget *vbox31; GtkWidget *filechooserwidgetImport; GtkWidget *label997; GtkWidget *vbox33; GtkWidget *frame13; GtkWidget *alignment28; GtkWidget *vbox40; GtkWidget *fileNameRadioImport; GSList *fileNameRadioImport_group = NULL; GtkWidget *containingTextRadioImport; GtkWidget *label1003; GtkWidget *frame12; GtkWidget *alignment27; GtkWidget *vbox39; GtkWidget *singleImportRadio; GSList *singleImportRadio_group = NULL; GtkWidget *multiImportRadio; GtkWidget *label1002; GtkWidget *label998; GtkWidget *dialog_action_area7; GtkWidget *cancelbutton3; GtkWidget *okbutton4; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); importCriteria = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (importCriteria), _("Import Criteria")); gtk_window_set_position (GTK_WINDOW (importCriteria), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (importCriteria), TRUE); gtk_window_set_destroy_with_parent (GTK_WINDOW (importCriteria), TRUE); gtk_window_set_icon_name (GTK_WINDOW (importCriteria), "gtk-open"); gtk_window_set_type_hint (GTK_WINDOW (importCriteria), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox7 = GTK_DIALOG (importCriteria)->vbox; gtk_widget_show (dialog_vbox7); vbox30 = gtk_vbox_new (FALSE, 4); gtk_container_set_border_width (GTK_CONTAINER (vbox30), 4); gtk_widget_show (vbox30); gtk_box_pack_start (GTK_BOX (dialog_vbox7), vbox30, TRUE, TRUE, 0); notebook3 = gtk_notebook_new (); gtk_widget_show (notebook3); gtk_box_pack_start (GTK_BOX (vbox30), notebook3, TRUE, TRUE, 4); vbox31 = gtk_vbox_new (FALSE, 4); gtk_widget_show (vbox31); gtk_container_add (GTK_CONTAINER (notebook3), vbox31); filechooserwidgetImport = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_OPEN); gtk_widget_show (filechooserwidgetImport); gtk_box_pack_start (GTK_BOX (vbox31), filechooserwidgetImport, TRUE, TRUE, 0); gtk_widget_set_size_request (filechooserwidgetImport, 450, 200); label997 = gtk_label_new (_("File Selection")); gtk_widget_show (label997); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook3), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook3), 0), label997); vbox33 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox33); gtk_container_add (GTK_CONTAINER (notebook3), vbox33); frame13 = gtk_frame_new (NULL); gtk_widget_show (frame13); gtk_box_pack_start (GTK_BOX (vbox33), frame13, FALSE, TRUE, 2); gtk_frame_set_shadow_type (GTK_FRAME (frame13), GTK_SHADOW_NONE); alignment28 = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment28); gtk_container_add (GTK_CONTAINER (frame13), alignment28); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment28), 0, 0, 12, 0); vbox40 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox40); gtk_container_add (GTK_CONTAINER (alignment28), vbox40); fileNameRadioImport = gtk_radio_button_new_with_mnemonic (NULL, _("File Name import")); gtk_widget_show (fileNameRadioImport); gtk_box_pack_start (GTK_BOX (vbox40), fileNameRadioImport, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, fileNameRadioImport, _("Use the file in an identical to way to that of the grep -f command."), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (fileNameRadioImport), fileNameRadioImport_group); fileNameRadioImport_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (fileNameRadioImport)); containingTextRadioImport = gtk_radio_button_new_with_mnemonic (NULL, _("Containing Text import")); gtk_widget_show (containingTextRadioImport); gtk_box_pack_start (GTK_BOX (vbox40), containingTextRadioImport, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, containingTextRadioImport, _("Import a file identical to that generated by the export command."), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (containingTextRadioImport), fileNameRadioImport_group); fileNameRadioImport_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (containingTextRadioImport)); label1003 = gtk_label_new (_("Import Location")); gtk_widget_show (label1003); gtk_frame_set_label_widget (GTK_FRAME (frame13), label1003); gtk_label_set_use_markup (GTK_LABEL (label1003), TRUE); frame12 = gtk_frame_new (NULL); gtk_widget_show (frame12); gtk_box_pack_start (GTK_BOX (vbox33), frame12, FALSE, TRUE, 2); gtk_frame_set_shadow_type (GTK_FRAME (frame12), GTK_SHADOW_NONE); alignment27 = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment27); gtk_container_add (GTK_CONTAINER (frame12), alignment27); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment27), 0, 0, 12, 0); vbox39 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox39); gtk_container_add (GTK_CONTAINER (alignment27), vbox39); singleImportRadio = gtk_radio_button_new_with_mnemonic (NULL, _("Grep style file (1-entry, OR each line)")); gtk_widget_show (singleImportRadio); gtk_box_pack_start (GTK_BOX (vbox39), singleImportRadio, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, singleImportRadio, _("Use the file in an identical to way to that of the grep -f command."), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (singleImportRadio), singleImportRadio_group); singleImportRadio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (singleImportRadio)); multiImportRadio = gtk_radio_button_new_with_mnemonic (NULL, _("Searchmonkey style (1-entry per line)")); gtk_widget_show (multiImportRadio); gtk_box_pack_start (GTK_BOX (vbox39), multiImportRadio, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, multiImportRadio, _("Import a file identical to that generated by the export command."), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (multiImportRadio), singleImportRadio_group); singleImportRadio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (multiImportRadio)); label1002 = gtk_label_new (_("Import Type")); gtk_widget_show (label1002); gtk_frame_set_label_widget (GTK_FRAME (frame12), label1002); gtk_label_set_use_markup (GTK_LABEL (label1002), TRUE); label998 = gtk_label_new (_("Options")); gtk_widget_show (label998); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook3), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook3), 1), label998); dialog_action_area7 = GTK_DIALOG (importCriteria)->action_area; gtk_widget_show (dialog_action_area7); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area7), GTK_BUTTONBOX_END); cancelbutton3 = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (cancelbutton3); gtk_dialog_add_action_widget (GTK_DIALOG (importCriteria), cancelbutton3, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (cancelbutton3, GTK_CAN_DEFAULT); okbutton4 = gtk_button_new_from_stock ("gtk-ok"); gtk_widget_show (okbutton4); gtk_dialog_add_action_widget (GTK_DIALOG (importCriteria), okbutton4, GTK_RESPONSE_OK); GTK_WIDGET_SET_FLAGS (okbutton4, GTK_CAN_DEFAULT); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (importCriteria, importCriteria, "importCriteria"); GLADE_HOOKUP_OBJECT_NO_REF (importCriteria, dialog_vbox7, "dialog_vbox7"); GLADE_HOOKUP_OBJECT (importCriteria, vbox30, "vbox30"); GLADE_HOOKUP_OBJECT (importCriteria, notebook3, "notebook3"); GLADE_HOOKUP_OBJECT (importCriteria, vbox31, "vbox31"); GLADE_HOOKUP_OBJECT (importCriteria, filechooserwidgetImport, "filechooserwidgetImport"); GLADE_HOOKUP_OBJECT (importCriteria, label997, "label997"); GLADE_HOOKUP_OBJECT (importCriteria, vbox33, "vbox33"); GLADE_HOOKUP_OBJECT (importCriteria, frame13, "frame13"); GLADE_HOOKUP_OBJECT (importCriteria, alignment28, "alignment28"); GLADE_HOOKUP_OBJECT (importCriteria, vbox40, "vbox40"); GLADE_HOOKUP_OBJECT (importCriteria, fileNameRadioImport, "fileNameRadioImport"); GLADE_HOOKUP_OBJECT (importCriteria, containingTextRadioImport, "containingTextRadioImport"); GLADE_HOOKUP_OBJECT (importCriteria, label1003, "label1003"); GLADE_HOOKUP_OBJECT (importCriteria, frame12, "frame12"); GLADE_HOOKUP_OBJECT (importCriteria, alignment27, "alignment27"); GLADE_HOOKUP_OBJECT (importCriteria, vbox39, "vbox39"); GLADE_HOOKUP_OBJECT (importCriteria, singleImportRadio, "singleImportRadio"); GLADE_HOOKUP_OBJECT (importCriteria, multiImportRadio, "multiImportRadio"); GLADE_HOOKUP_OBJECT (importCriteria, label1002, "label1002"); GLADE_HOOKUP_OBJECT (importCriteria, label998, "label998"); GLADE_HOOKUP_OBJECT_NO_REF (importCriteria, dialog_action_area7, "dialog_action_area7"); GLADE_HOOKUP_OBJECT (importCriteria, cancelbutton3, "cancelbutton3"); GLADE_HOOKUP_OBJECT (importCriteria, okbutton4, "okbutton4"); GLADE_HOOKUP_OBJECT_NO_REF (importCriteria, tooltips, "tooltips"); return importCriteria; } GtkWidget* create_exportCriteria (void) { GtkWidget *exportCriteria; GtkWidget *vbox34; GtkWidget *vbox35; GtkWidget *notebook4; GtkWidget *vbox36; GtkWidget *filechooserwidgetExport; GtkWidget *label999; GtkWidget *vbox37; GtkWidget *frame14; GtkWidget *alignment29; GtkWidget *vbox42; GtkWidget *fileNameRadioExport; GSList *fileNameRadioExport_group = NULL; GtkWidget *containingTextRadioExport; GtkWidget *label1004; GtkWidget *frame15; GtkWidget *alignment30; GtkWidget *vbox41; GtkWidget *singleExportRadio; GSList *singleExportRadio_group = NULL; GtkWidget *multiExportRadio; GtkWidget *label1005; GtkWidget *label1000; GtkWidget *hbuttonbox1; GtkWidget *button45; GtkWidget *button46; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); exportCriteria = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (exportCriteria), _("Export Criteria")); gtk_window_set_position (GTK_WINDOW (exportCriteria), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (exportCriteria), TRUE); gtk_window_set_destroy_with_parent (GTK_WINDOW (exportCriteria), TRUE); gtk_window_set_icon_name (GTK_WINDOW (exportCriteria), "gtk-save-as"); gtk_window_set_type_hint (GTK_WINDOW (exportCriteria), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_default_size(GTK_WINDOW(exportCriteria), 500, 360); vbox34 = GTK_DIALOG (exportCriteria)->vbox; gtk_widget_show (vbox34); vbox35 = gtk_vbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox35), 4); gtk_widget_show (vbox35); gtk_box_pack_start (GTK_BOX (vbox34), vbox35, TRUE, TRUE, 2); notebook4 = gtk_notebook_new (); gtk_widget_show (notebook4); gtk_box_pack_start (GTK_BOX (vbox35), notebook4, TRUE, TRUE, 4); vbox36 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox36); gtk_container_add (GTK_CONTAINER (notebook4), vbox36); filechooserwidgetExport = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_SAVE); gtk_widget_show (filechooserwidgetExport); gtk_box_pack_start (GTK_BOX (vbox36), filechooserwidgetExport, TRUE, TRUE, 2); label999 = gtk_label_new (_("File Selection")); gtk_widget_show (label999); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook4), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook4), 0), label999); vbox37 = gtk_vbox_new (FALSE, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox37), 4); gtk_widget_show (vbox37); gtk_container_add (GTK_CONTAINER (notebook4), vbox37); frame14 = gtk_frame_new (NULL); gtk_widget_show (frame14); gtk_box_pack_start (GTK_BOX (vbox37), frame14, FALSE, TRUE, 2); gtk_frame_set_shadow_type (GTK_FRAME (frame14), GTK_SHADOW_NONE); alignment29 = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment29); gtk_container_add (GTK_CONTAINER (frame14), alignment29); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment29), 0, 0, 12, 0); vbox42 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox42); gtk_container_add (GTK_CONTAINER (alignment29), vbox42); fileNameRadioExport = gtk_radio_button_new_with_mnemonic (NULL, _("File Name Export criteria")); gtk_widget_show (fileNameRadioExport); gtk_box_pack_start (GTK_BOX (vbox42), fileNameRadioExport, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, fileNameRadioExport, _("Save the File Name drop down entries into a file."), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (fileNameRadioExport), fileNameRadioExport_group); fileNameRadioExport_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (fileNameRadioExport)); containingTextRadioExport = gtk_radio_button_new_with_mnemonic (NULL, _("Containing Text Export Criteria")); gtk_widget_show (containingTextRadioExport); gtk_box_pack_start (GTK_BOX (vbox42), containingTextRadioExport, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, containingTextRadioExport, _("Save the Containing Text drop down entries into a file."), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (containingTextRadioExport), fileNameRadioExport_group); fileNameRadioExport_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (containingTextRadioExport)); label1004 = gtk_label_new (_("Export Source")); gtk_widget_show (label1004); gtk_frame_set_label_widget (GTK_FRAME (frame14), label1004); gtk_label_set_use_markup (GTK_LABEL (label1004), TRUE); frame15 = gtk_frame_new (NULL); gtk_widget_show (frame15); gtk_box_pack_start (GTK_BOX (vbox37), frame15, FALSE, TRUE, 2); gtk_frame_set_shadow_type (GTK_FRAME (frame15), GTK_SHADOW_NONE); alignment30 = gtk_alignment_new (0.5, 0.5, 1, 1); gtk_widget_show (alignment30); gtk_container_add (GTK_CONTAINER (frame15), alignment30); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment30), 0, 0, 12, 0); vbox41 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox41); gtk_container_add (GTK_CONTAINER (alignment30), vbox41); singleExportRadio = gtk_radio_button_new_with_mnemonic (NULL, _("Save active/displayed entry only")); gtk_widget_show (singleExportRadio); gtk_box_pack_start (GTK_BOX (vbox41), singleExportRadio, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, singleExportRadio, _("Just save the currently displayed entry to a file."), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (singleExportRadio), singleExportRadio_group); singleExportRadio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (singleExportRadio)); multiExportRadio = gtk_radio_button_new_with_mnemonic (NULL, _("Save all entries (1-entry per line)")); gtk_widget_show (multiExportRadio); gtk_box_pack_start (GTK_BOX (vbox41), multiExportRadio, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, multiExportRadio, _("Import a file identical to that generated by the export command."), NULL); gtk_radio_button_set_group (GTK_RADIO_BUTTON (multiExportRadio), singleExportRadio_group); singleExportRadio_group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (multiExportRadio)); label1005 = gtk_label_new (_("Export Type")); gtk_widget_show (label1005); gtk_frame_set_label_widget (GTK_FRAME (frame15), label1005); gtk_label_set_use_markup (GTK_LABEL (label1005), TRUE); label1000 = gtk_label_new (_("Options")); gtk_widget_show (label1000); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook4), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook4), 1), label1000); hbuttonbox1 = GTK_DIALOG (exportCriteria)->action_area; gtk_widget_show (hbuttonbox1); gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END); button45 = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (button45); gtk_dialog_add_action_widget (GTK_DIALOG (exportCriteria), button45, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (button45, GTK_CAN_DEFAULT); button46 = gtk_button_new_from_stock ("gtk-ok"); gtk_widget_show (button46); gtk_dialog_add_action_widget (GTK_DIALOG (exportCriteria), button46, GTK_RESPONSE_OK); GTK_WIDGET_SET_FLAGS (button46, GTK_CAN_DEFAULT); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (exportCriteria, exportCriteria, "exportCriteria"); GLADE_HOOKUP_OBJECT_NO_REF (exportCriteria, vbox34, "vbox34"); GLADE_HOOKUP_OBJECT (exportCriteria, vbox35, "vbox35"); GLADE_HOOKUP_OBJECT (exportCriteria, notebook4, "notebook4"); GLADE_HOOKUP_OBJECT (exportCriteria, vbox36, "vbox36"); GLADE_HOOKUP_OBJECT (exportCriteria, filechooserwidgetExport, "filechooserwidgetExport"); GLADE_HOOKUP_OBJECT (exportCriteria, label999, "label999"); GLADE_HOOKUP_OBJECT (exportCriteria, vbox37, "vbox37"); GLADE_HOOKUP_OBJECT (exportCriteria, frame14, "frame14"); GLADE_HOOKUP_OBJECT (exportCriteria, alignment29, "alignment29"); GLADE_HOOKUP_OBJECT (exportCriteria, vbox42, "vbox42"); GLADE_HOOKUP_OBJECT (exportCriteria, fileNameRadioExport, "fileNameRadioExport"); GLADE_HOOKUP_OBJECT (exportCriteria, containingTextRadioExport, "containingTextRadioExport"); GLADE_HOOKUP_OBJECT (exportCriteria, label1004, "label1004"); GLADE_HOOKUP_OBJECT (exportCriteria, frame15, "frame15"); GLADE_HOOKUP_OBJECT (exportCriteria, alignment30, "alignment30"); GLADE_HOOKUP_OBJECT (exportCriteria, vbox41, "vbox41"); GLADE_HOOKUP_OBJECT (exportCriteria, singleExportRadio, "singleExportRadio"); GLADE_HOOKUP_OBJECT (exportCriteria, multiExportRadio, "multiExportRadio"); GLADE_HOOKUP_OBJECT (exportCriteria, label1005, "label1005"); GLADE_HOOKUP_OBJECT (exportCriteria, label1000, "label1000"); GLADE_HOOKUP_OBJECT_NO_REF (exportCriteria, hbuttonbox1, "hbuttonbox1"); GLADE_HOOKUP_OBJECT (exportCriteria, button45, "button45"); GLADE_HOOKUP_OBJECT (exportCriteria, button46, "button46"); GLADE_HOOKUP_OBJECT_NO_REF (exportCriteria, tooltips, "tooltips"); return exportCriteria; } GtkWidget* create_autoComplete (void) { GtkWidget *autoComplete; GtkWidget *dialog_vbox8; GtkWidget *vbox43; GtkWidget *scrolledwindow14; GtkWidget *textview3; GtkWidget *progressbar3; GtkWidget *dialog_action_area8; GtkWidget *cancelbutton4; GtkWidget *okbutton5; GtkTooltips *tooltips; tooltips = gtk_tooltips_new (); autoComplete = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (autoComplete), _("Auto Complete")); gtk_window_set_position (GTK_WINDOW (autoComplete), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (autoComplete), TRUE); gtk_window_set_destroy_with_parent (GTK_WINDOW (autoComplete), TRUE); gtk_window_set_type_hint (GTK_WINDOW (autoComplete), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox8 = GTK_DIALOG (autoComplete)->vbox; gtk_widget_show (dialog_vbox8); vbox43 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox43); gtk_box_pack_start (GTK_BOX (dialog_vbox8), vbox43, TRUE, TRUE, 0); scrolledwindow14 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow14); gtk_box_pack_start (GTK_BOX (vbox43), scrolledwindow14, TRUE, TRUE, 0); gtk_widget_set_size_request (scrolledwindow14, 470, 200); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow14), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow14), GTK_SHADOW_IN); textview3 = gtk_text_view_new (); gtk_widget_show (textview3); gtk_container_add (GTK_CONTAINER (scrolledwindow14), textview3); gtk_text_view_set_editable (GTK_TEXT_VIEW (textview3), FALSE); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (textview3), GTK_WRAP_WORD); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview3), FALSE); gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview3)), _("Please be patient!\n\nSearching for executables to perform the following functions:\n * text editing/viewing\n * folder browsing\n * web browsing\n\nThe search algorithm uses a set of standard executables for all systems, and then attempts to find them on your local disk.\n\nOnce complete, press OK to store the executables."), -1); progressbar3 = gtk_progress_bar_new (); gtk_widget_show (progressbar3); gtk_box_pack_start (GTK_BOX (vbox43), progressbar3, FALSE, FALSE, 0); gtk_tooltips_set_tip (tooltips, progressbar3, _("Search progress"), NULL); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progressbar3), 0.01); gtk_progress_bar_set_pulse_step (GTK_PROGRESS_BAR (progressbar3), 0); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progressbar3), _("Please wait...")); dialog_action_area8 = GTK_DIALOG (autoComplete)->action_area; gtk_widget_show (dialog_action_area8); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area8), GTK_BUTTONBOX_END); cancelbutton4 = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (cancelbutton4); gtk_dialog_add_action_widget (GTK_DIALOG (autoComplete), cancelbutton4, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (cancelbutton4, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, cancelbutton4, _("Searching for system files, please wait..."), NULL); okbutton5 = gtk_button_new_from_stock ("gtk-ok"); gtk_widget_show (okbutton5); gtk_dialog_add_action_widget (GTK_DIALOG (autoComplete), okbutton5, GTK_RESPONSE_OK); gtk_widget_set_sensitive (okbutton5, FALSE); GTK_WIDGET_SET_FLAGS (okbutton5, GTK_CAN_DEFAULT); gtk_tooltips_set_tip (tooltips, okbutton5, _("Searching for system files, please wait..."), NULL); g_signal_connect ((gpointer) autoComplete, "response", G_CALLBACK (on_autoComplete_response), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (autoComplete, autoComplete, "autoComplete"); GLADE_HOOKUP_OBJECT_NO_REF (autoComplete, dialog_vbox8, "dialog_vbox8"); GLADE_HOOKUP_OBJECT (autoComplete, vbox43, "vbox43"); GLADE_HOOKUP_OBJECT (autoComplete, scrolledwindow14, "scrolledwindow14"); GLADE_HOOKUP_OBJECT (autoComplete, textview3, "textview3"); GLADE_HOOKUP_OBJECT (autoComplete, progressbar3, "progressbar3"); GLADE_HOOKUP_OBJECT_NO_REF (autoComplete, dialog_action_area8, "dialog_action_area8"); GLADE_HOOKUP_OBJECT (autoComplete, cancelbutton4, "cancelbutton4"); GLADE_HOOKUP_OBJECT (autoComplete, okbutton5, "okbutton5"); GLADE_HOOKUP_OBJECT_NO_REF (autoComplete, tooltips, "tooltips"); gtk_widget_grab_default (okbutton5); return autoComplete; } GtkWidget* create_aboutSearchmonkey (void) { GtkWidget *aboutSearchmonkey; GdkPixbuf *aboutSearchmonkey_icon_pixbuf; GtkWidget *dialog_vbox9; GtkWidget *vbox49; GtkWidget *aboutLargeIcon; GtkWidget *aboutVersion; GtkWidget *label1022; GtkWidget *aboutCopyright; GtkWidget *dialog_action_area9; GtkWidget *aboutCredits; GtkWidget *alignment37; GtkWidget *hbox68; GtkWidget *image30; GtkWidget *label1023; GtkWidget *button48; aboutSearchmonkey = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (aboutSearchmonkey), _("About searchmonkey")); gtk_window_set_position (GTK_WINDOW (aboutSearchmonkey), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (aboutSearchmonkey), TRUE); gtk_window_set_resizable (GTK_WINDOW (aboutSearchmonkey), FALSE); gtk_window_set_destroy_with_parent (GTK_WINDOW (aboutSearchmonkey), TRUE); aboutSearchmonkey_icon_pixbuf = create_pixbuf ("searchmonkey.png"); if (aboutSearchmonkey_icon_pixbuf) { gtk_window_set_icon (GTK_WINDOW (aboutSearchmonkey), aboutSearchmonkey_icon_pixbuf); g_object_unref(G_OBJECT(aboutSearchmonkey_icon_pixbuf )); // gdk_pixbuf_unref (aboutSearchmonkey_icon_pixbuf); } gtk_window_set_skip_taskbar_hint (GTK_WINDOW (aboutSearchmonkey), TRUE); gtk_window_set_type_hint (GTK_WINDOW (aboutSearchmonkey), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_dialog_set_has_separator (GTK_DIALOG (aboutSearchmonkey), FALSE); dialog_vbox9 = GTK_DIALOG (aboutSearchmonkey)->vbox; gtk_widget_show (dialog_vbox9); vbox49 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox49); gtk_box_pack_start (GTK_BOX (dialog_vbox9), vbox49, TRUE, TRUE, 0); /* Luc A - sur Ubuntu 14.04 /usr/local/share/pixmaps/searchmonkey stocke ces images ! */ aboutLargeIcon = create_pixmap (aboutSearchmonkey, "searchmonkey-300x300.png"); gtk_widget_show (aboutLargeIcon); gtk_box_pack_start (GTK_BOX (vbox49), aboutLargeIcon, TRUE, TRUE, 0); aboutVersion = gtk_label_new (""); gtk_widget_show (aboutVersion); gtk_box_pack_start (GTK_BOX (vbox49), aboutVersion, TRUE, TRUE, 0); gtk_misc_set_padding (GTK_MISC (aboutVersion), 0, 5); gtk_label_set_single_line_mode (GTK_LABEL (aboutVersion), TRUE); label1022 = gtk_label_new (_("Regular expression power search utility written in GTK+ and licensed under GPL v.3")); gtk_widget_show (label1022); gtk_box_pack_start (GTK_BOX (vbox49), label1022, FALSE, FALSE, 0); gtk_label_set_use_markup (GTK_LABEL (label1022), TRUE); gtk_label_set_justify (GTK_LABEL (label1022), GTK_JUSTIFY_CENTER); gtk_label_set_line_wrap (GTK_LABEL (label1022), TRUE); // gtk_label_set_single_line_mode (GTK_LABEL (label1022), TRUE); gtk_misc_set_padding (GTK_MISC (label1022), 0, 4); aboutCopyright = gtk_label_new (_("Copyright (c) 2006-2018 Adam Cottrell")); gtk_widget_show (aboutCopyright); gtk_box_pack_start (GTK_BOX (vbox49), aboutCopyright, FALSE, FALSE, 0); gtk_misc_set_padding (GTK_MISC (aboutCopyright), 0, 4); gtk_label_set_single_line_mode (GTK_LABEL (aboutCopyright), TRUE); dialog_action_area9 = GTK_DIALOG (aboutSearchmonkey)->action_area; gtk_widget_show (dialog_action_area9); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area9), GTK_BUTTONBOX_SPREAD); aboutCredits = gtk_button_new (); gtk_widget_show (aboutCredits); gtk_dialog_add_action_widget (GTK_DIALOG (aboutSearchmonkey), aboutCredits, GTK_RESPONSE_OK); GTK_WIDGET_SET_FLAGS (aboutCredits, GTK_CAN_DEFAULT); alignment37 = gtk_alignment_new (0.5, 0.5, 0, 0); gtk_widget_show (alignment37); gtk_container_add (GTK_CONTAINER (aboutCredits), alignment37); hbox68 = gtk_hbox_new (FALSE, 2); gtk_widget_show (hbox68); gtk_container_add (GTK_CONTAINER (alignment37), hbox68); image30 = gtk_image_new_from_stock ("gtk-about", GTK_ICON_SIZE_BUTTON); gtk_widget_show (image30); gtk_box_pack_start (GTK_BOX (hbox68), image30, FALSE, FALSE, 0); label1023 = gtk_label_new_with_mnemonic (_("Credits")); gtk_widget_show (label1023); gtk_box_pack_start (GTK_BOX (hbox68), label1023, FALSE, FALSE, 0); button48 = gtk_button_new_from_stock ("gtk-close"); gtk_widget_show (button48); gtk_dialog_add_action_widget (GTK_DIALOG (aboutSearchmonkey), button48, GTK_RESPONSE_CLOSE); GTK_WIDGET_SET_FLAGS (button48, GTK_CAN_DEFAULT); g_signal_connect ((gpointer) aboutSearchmonkey, "response", G_CALLBACK (on_aboutSearchmonkey_response), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (aboutSearchmonkey, aboutSearchmonkey, "aboutSearchmonkey"); GLADE_HOOKUP_OBJECT_NO_REF (aboutSearchmonkey, dialog_vbox9, "dialog_vbox9"); GLADE_HOOKUP_OBJECT (aboutSearchmonkey, vbox49, "vbox49"); GLADE_HOOKUP_OBJECT (aboutSearchmonkey, aboutLargeIcon, "aboutLargeIcon"); GLADE_HOOKUP_OBJECT (aboutSearchmonkey, aboutVersion, "aboutVersion"); GLADE_HOOKUP_OBJECT (aboutSearchmonkey, label1022, "label1022"); GLADE_HOOKUP_OBJECT (aboutSearchmonkey, aboutCopyright, "aboutCopyright"); GLADE_HOOKUP_OBJECT_NO_REF (aboutSearchmonkey, dialog_action_area9, "dialog_action_area9"); GLADE_HOOKUP_OBJECT (aboutSearchmonkey, aboutCredits, "aboutCredits"); GLADE_HOOKUP_OBJECT (aboutSearchmonkey, alignment37, "alignment37"); GLADE_HOOKUP_OBJECT (aboutSearchmonkey, hbox68, "hbox68"); GLADE_HOOKUP_OBJECT (aboutSearchmonkey, image30, "image30"); GLADE_HOOKUP_OBJECT (aboutSearchmonkey, label1023, "label1023"); GLADE_HOOKUP_OBJECT (aboutSearchmonkey, button48, "button48"); gtk_widget_grab_default (button48); return aboutSearchmonkey; } GtkWidget* create_creditsDialog (void) { GtkWidget *creditsDialog; GtkWidget *dialog_vbox10; GtkWidget *notebook5; GtkWidget *scrolledwindow17; GtkWidget *textview6; GtkWidget *label1020; GtkWidget *scrolledwindow18; GtkWidget *textview5; GtkWidget *label1021; GtkWidget *dialog_action_area10; GtkWidget *closebutton1; creditsDialog = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (creditsDialog), _("searchmonkey Credits")); gtk_window_set_position (GTK_WINDOW (creditsDialog), GTK_WIN_POS_CENTER_ON_PARENT); gtk_window_set_modal (GTK_WINDOW (creditsDialog), TRUE); gtk_window_set_resizable (GTK_WINDOW (creditsDialog), FALSE); gtk_window_set_destroy_with_parent (GTK_WINDOW (creditsDialog), TRUE); gtk_window_set_icon_name (GTK_WINDOW (creditsDialog), "gtk-about"); gtk_window_set_skip_taskbar_hint (GTK_WINDOW (creditsDialog), TRUE); gtk_window_set_type_hint (GTK_WINDOW (creditsDialog), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox10 = GTK_DIALOG (creditsDialog)->vbox; gtk_widget_show (dialog_vbox10); notebook5 = gtk_notebook_new (); gtk_widget_show (notebook5); gtk_box_pack_start (GTK_BOX (dialog_vbox10), notebook5, TRUE, TRUE, 0); gtk_widget_set_size_request (notebook5, -1, 185); scrolledwindow17 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow17); gtk_container_add (GTK_CONTAINER (notebook5), scrolledwindow17); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow17), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow17), GTK_SHADOW_IN); textview6 = gtk_text_view_new (); gtk_widget_show (textview6); gtk_container_add (GTK_CONTAINER (scrolledwindow17), textview6); gtk_text_view_set_editable (GTK_TEXT_VIEW (textview6), FALSE); gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (textview6), FALSE); gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview6)), _("Project Manager:\nAdam Cottrell \n\nProgramming:\n Adam Cottrell \n Salil Joshi \n Yousef AlHashemi\n Luc Amimer \nArtwork:\n Peter Cruickshank\n Luc Amimer \n"), -1); label1020 = gtk_label_new (_("Written by")); gtk_widget_show (label1020); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook5), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook5), 0), label1020); scrolledwindow18 = gtk_scrolled_window_new (NULL, NULL); gtk_widget_show (scrolledwindow18); gtk_container_add (GTK_CONTAINER (notebook5), scrolledwindow18); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow18), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow18), GTK_SHADOW_IN); textview5 = gtk_text_view_new (); gtk_widget_show (textview5); gtk_container_add (GTK_CONTAINER (scrolledwindow18), textview5); gtk_text_view_set_editable (GTK_TEXT_VIEW (textview5), FALSE); gtk_text_view_set_accepts_tab (GTK_TEXT_VIEW (textview5), FALSE); gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview5)), _("Adam Cottrell (en_GB)\nLuc Amimer (fr)"), -1); label1021 = gtk_label_new (_("Translated by")); gtk_widget_show (label1021); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook5), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook5), 1), label1021); dialog_action_area10 = GTK_DIALOG (creditsDialog)->action_area; gtk_widget_show (dialog_action_area10); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area10), GTK_BUTTONBOX_END); closebutton1 = gtk_button_new_from_stock ("gtk-close"); gtk_widget_show (closebutton1); gtk_dialog_add_action_widget (GTK_DIALOG (creditsDialog), closebutton1, GTK_RESPONSE_CLOSE); GTK_WIDGET_SET_FLAGS (closebutton1, GTK_CAN_DEFAULT); g_signal_connect ((gpointer) creditsDialog, "response", G_CALLBACK (gtk_widget_destroy), NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (creditsDialog, creditsDialog, "creditsDialog"); GLADE_HOOKUP_OBJECT_NO_REF (creditsDialog, dialog_vbox10, "dialog_vbox10"); GLADE_HOOKUP_OBJECT (creditsDialog, notebook5, "notebook5"); GLADE_HOOKUP_OBJECT (creditsDialog, scrolledwindow17, "scrolledwindow17"); GLADE_HOOKUP_OBJECT (creditsDialog, textview6, "textview6"); GLADE_HOOKUP_OBJECT (creditsDialog, label1020, "label1020"); GLADE_HOOKUP_OBJECT (creditsDialog, scrolledwindow18, "scrolledwindow18"); GLADE_HOOKUP_OBJECT (creditsDialog, textview5, "textview5"); GLADE_HOOKUP_OBJECT (creditsDialog, label1021, "label1021"); GLADE_HOOKUP_OBJECT_NO_REF (creditsDialog, dialog_action_area10, "dialog_action_area10"); GLADE_HOOKUP_OBJECT (creditsDialog, closebutton1, "closebutton1"); return creditsDialog; } GtkWidget* create_calendarDialog (void) { GtkWidget *calendarDialog; GtkWidget *dialog_vbox11; GtkWidget *calendar1; GtkWidget *dialog_action_area11; GtkWidget *cancelbutton5; GtkWidget *okbutton6; calendarDialog = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (calendarDialog), _("Select Date...")); GTK_WINDOW (calendarDialog)->type = GTK_WINDOW_POPUP; gtk_window_set_position (GTK_WINDOW (calendarDialog), GTK_WIN_POS_MOUSE); gtk_window_set_modal (GTK_WINDOW (calendarDialog), TRUE); gtk_window_set_resizable (GTK_WINDOW (calendarDialog), FALSE); gtk_window_set_type_hint (GTK_WINDOW (calendarDialog), GDK_WINDOW_TYPE_HINT_UTILITY); dialog_vbox11 = GTK_DIALOG (calendarDialog)->vbox; gtk_widget_show (dialog_vbox11); calendar1 = gtk_calendar_new (); gtk_widget_show (calendar1); gtk_box_pack_start (GTK_BOX (dialog_vbox11), calendar1, TRUE, TRUE, 0); gtk_calendar_display_options (GTK_CALENDAR (calendar1), GTK_CALENDAR_SHOW_HEADING | GTK_CALENDAR_SHOW_DAY_NAMES); dialog_action_area11 = GTK_DIALOG (calendarDialog)->action_area; gtk_widget_show (dialog_action_area11); gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area11), GTK_BUTTONBOX_END); cancelbutton5 = gtk_button_new_from_stock ("gtk-cancel"); gtk_widget_show (cancelbutton5); gtk_dialog_add_action_widget (GTK_DIALOG (calendarDialog), cancelbutton5, GTK_RESPONSE_CANCEL); GTK_WIDGET_SET_FLAGS (cancelbutton5, GTK_CAN_DEFAULT); okbutton6 = gtk_button_new_from_stock ("gtk-ok"); gtk_widget_show (okbutton6); gtk_dialog_add_action_widget (GTK_DIALOG (calendarDialog), okbutton6, GTK_RESPONSE_OK); GTK_WIDGET_SET_FLAGS (okbutton6, GTK_CAN_DEFAULT); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (calendarDialog, calendarDialog, "calendarDialog"); GLADE_HOOKUP_OBJECT_NO_REF (calendarDialog, dialog_vbox11, "dialog_vbox11"); GLADE_HOOKUP_OBJECT (calendarDialog, calendar1, "calendar1"); GLADE_HOOKUP_OBJECT_NO_REF (calendarDialog, dialog_action_area11, "dialog_action_area11"); GLADE_HOOKUP_OBJECT (calendarDialog, cancelbutton5, "cancelbutton5"); GLADE_HOOKUP_OBJECT (calendarDialog, okbutton6, "okbutton6"); return calendarDialog; } searchmonkey-0.8.3/src/interface.h0000664000175000017500000000132213236161317014036 00000000000000/* * DO NOT EDIT THIS FILE - it is generated by Glade. */ GtkWidget* create_window1 (void); GtkWidget* create_folderChooserDialog (void); GtkWidget* create_menu1 (void); GtkWidget* create_highlightColourDialog (void); GtkWidget* create_fontSelectionDialog (void); GtkWidget* create_clearSearchHistoryDialog (void); GtkWidget* create_testRegExDialog (void); GtkWidget* create_expWizard (void); GtkWidget* create_configDialog (void); GtkWidget* create_saveFileDialog (void); GtkWidget* create_importCriteria (void); GtkWidget* create_exportCriteria (void); GtkWidget* create_autoComplete (void); GtkWidget* create_aboutSearchmonkey (void); GtkWidget* create_creditsDialog (void); GtkWidget* create_calendarDialog (void); searchmonkey-0.8.3/src/callbacks.c0000664000175000017500000016020713236164262014022 00000000000000#ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include "interface.h" #include "support.h" #include "search.h" #include "lgpl.h" /* Lesser GPL license*/ #include "savestate.h" /* Allows config.ini to save/restore state*/ #include "regexwizard.h" /* Add support for regular expression wizard */ #include "systemio.h" /* System stuff, file import and export code */ #include "misc.h" /* Everything else */ #include "systemio.h" /* Add structure */ #include "callbacks.h" /* Top level definitions */ GtkWidget *testRegExDialog1 = NULL; GtkWidget *fileRegexWizard = NULL; GtkWidget *contextRegexWizard = NULL; void on_window1_destroy (GtkObject *object, gpointer user_data) { gtk_main_quit(); } void on_open_criteria1_activate (GtkMenuItem *menuitem, gpointer user_data) { importCriteria(GTK_WIDGET(menuitem)); } void on_save_criteria1_activate (GtkMenuItem *menuitem, gpointer user_data) { exportCriteria(GTK_WIDGET(menuitem)); } void on_save_results1_activate (GtkMenuItem *menuitem, gpointer user_data) { saveResults(GTK_WIDGET(menuitem)); } void on_print1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_print_preview1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_print_setup1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_quit1_activate (GtkMenuItem *menuitem, gpointer user_data) { GObject *window1 = G_OBJECT(lookup_widget(GTK_WIDGET(menuitem), "window1")); gtk_object_destroy(GTK_OBJECT(window1)); } void on_word_wrap1_activate (GtkMenuItem *menuitem, gpointer user_data) { gboolean setWordWrap; GtkTextView *textBox; if (getResultsViewHorizontal(GTK_WIDGET(menuitem))) { textBox = GTK_TEXT_VIEW(lookup_widget(GTK_WIDGET(menuitem), "textview1")); } else { textBox = GTK_TEXT_VIEW(lookup_widget(GTK_WIDGET(menuitem), "textview4")); } setWordWrap = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)); if(setWordWrap) gtk_text_view_set_wrap_mode(textBox, GTK_WRAP_WORD); else gtk_text_view_set_wrap_mode(textBox, GTK_WRAP_NONE); gtk_text_view_set_justification( GTK_TEXT_VIEW(textBox), GTK_JUSTIFY_LEFT ); } void on_set_font1_activate (GtkMenuItem *menuitem, gpointer user_data) { gchar *newFont; GtkWidget *textView; if (getResultsViewHorizontal(GTK_WIDGET(menuitem))) { textView = lookup_widget(GTK_WIDGET(menuitem), "textview1"); } else { textView = lookup_widget(GTK_WIDGET(menuitem), "textview4"); } GtkFontSelectionDialog *dialog = GTK_FONT_SELECTION_DIALOG(create_fontSelectionDialog()); PangoContext* context = gtk_widget_get_pango_context (textView); PangoFontDescription *desc = pango_context_get_font_description(context); newFont = pango_font_description_to_string(desc); gtk_font_selection_dialog_set_font_name(dialog, newFont); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { newFont = gtk_font_selection_dialog_get_font_name(dialog); if (newFont != NULL) { desc = pango_font_description_from_string (newFont); if (desc != NULL) { gtk_widget_modify_font (GTK_WIDGET(textView), desc); pango_font_description_free(desc); } g_free(newFont); } } gtk_widget_destroy(GTK_WIDGET(dialog)); } void on_set_highligting_colour1_activate (GtkMenuItem *menuitem, gpointer user_data) { GdkColor color, *cp; GtkTextView *textView; if (getResultsViewHorizontal(GTK_WIDGET(menuitem))) { textView = GTK_TEXT_VIEW(lookup_widget(GTK_WIDGET(menuitem), "textview1")); } else { textView = GTK_TEXT_VIEW(lookup_widget(GTK_WIDGET(menuitem), "textview4")); } GtkTextBuffer* textBuf = gtk_text_view_get_buffer (textView); GtkTextTagTable* tagTable = gtk_text_buffer_get_tag_table(textBuf); GtkTextTag* tag = gtk_text_tag_table_lookup(tagTable, "word_highlight"); GtkWidget *dialog = create_highlightColourDialog(); GtkColorSelection *colorsel = GTK_COLOR_SELECTION(lookup_widget(dialog, "color_selection1")); g_assert(textView != NULL); g_assert(textBuf != NULL); g_assert(tagTable != NULL); g_assert(tag != NULL); g_assert(dialog != NULL); g_assert(colorsel != NULL); g_object_get( G_OBJECT(tag), "background-gdk", &cp, NULL); gtk_color_selection_set_current_color(colorsel, cp); gdk_color_free(cp); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { GtkColorSelection *colorsel = GTK_COLOR_SELECTION(lookup_widget(dialog, "color_selection1")); gtk_color_selection_get_current_color(colorsel, &color); g_object_set( G_OBJECT(tag), "background-gdk", &color, NULL); } gtk_widget_destroy(dialog); } void on_cl_ear_history1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkToggleButton *check; GtkComboBox *combo; gchar *activeText; GtkEntry *entry; GtkWidget *dialog = create_clearSearchHistoryDialog(); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { /* Clear file names? */ check = GTK_TOGGLE_BUTTON(lookup_widget(dialog, "clearFileNamesCheck")); if(gtk_toggle_button_get_active(check)) { clearComboBox2(lookup_widget(GTK_WIDGET(menuitem), "fileName")); clearComboBox2(lookup_widget(GTK_WIDGET(menuitem), "fileName2")); } /* Clear containing text? */ check = GTK_TOGGLE_BUTTON(lookup_widget(dialog, "clearContainingTextCheck")); if(gtk_toggle_button_get_active(check)) { clearComboBox(lookup_widget(GTK_WIDGET(menuitem), "containingText")); clearComboBox(lookup_widget(GTK_WIDGET(menuitem), "containingText2")); } /* Clear look in? */ check = GTK_TOGGLE_BUTTON(lookup_widget(dialog, "clearLookInCheck")); if(gtk_toggle_button_get_active(check)) { clearComboBox(lookup_widget(GTK_WIDGET(menuitem), "lookIn")); clearComboBox(lookup_widget(GTK_WIDGET(menuitem), "lookIn2")); } /* Clear size/modified? */ check = GTK_TOGGLE_BUTTON(lookup_widget(dialog, "resetSizeModifiedCheck")); if(gtk_toggle_button_get_active(check)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(GTK_WIDGET(menuitem), "lessThanCheck")), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(GTK_WIDGET(menuitem), "moreThanCheck")), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(GTK_WIDGET(menuitem), "afterCheck")), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(GTK_WIDGET(menuitem), "beforeCheck")), FALSE); entry = GTK_ENTRY(lookup_widget(GTK_WIDGET(menuitem), "lessThanEntry")); gtk_entry_set_text(entry, ""); entry = GTK_ENTRY(lookup_widget(GTK_WIDGET(menuitem), "moreThanEntry")); gtk_entry_set_text(entry, ""); entry = GTK_ENTRY(lookup_widget(GTK_WIDGET(menuitem), "afterEntry")); gtk_entry_set_text(entry, ""); entry = GTK_ENTRY(lookup_widget(GTK_WIDGET(menuitem), "beforeEntry")); gtk_entry_set_text(entry, ""); } } gtk_widget_destroy(dialog); } void on_delete1_activate (GtkMenuItem *menuitem, gpointer user_data) { deleteFile (GTK_WIDGET(menuitem)); } void on_copy2_activate (GtkMenuItem *menuitem, gpointer user_data) { copyFile (GTK_WIDGET(menuitem)); } void on_toolbar2_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkWidget *widget = lookup_widget(GTK_WIDGET(menuitem), "toolbar1"); if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) { gtk_widget_show(widget); } else { gtk_widget_hide(widget); } } void on_status_bar1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkWidget *widget = lookup_widget(GTK_WIDGET(menuitem), "hbox41"); /* Contains status plus progress bar */ if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) { gtk_widget_show(widget); } else { gtk_widget_hide(widget); } } void on_file_name1_activate (GtkMenuItem *menuitem, gpointer user_data) { if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) { columnClick(GTK_WIDGET(menuitem), FILENAME_COLUMN); } } void on_location1_activate (GtkMenuItem *menuitem, gpointer user_data) { if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) { columnClick(GTK_WIDGET(menuitem), LOCATION_COLUMN); } } void on_size1_activate (GtkMenuItem *menuitem, gpointer user_data) { if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) { columnClick(GTK_WIDGET(menuitem), INT_SIZE_COLUMN); } } void on_type1_activate (GtkMenuItem *menuitem, gpointer user_data) { if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) { columnClick(GTK_WIDGET(menuitem), TYPE_COLUMN); } } void on_modified1_activate (GtkMenuItem *menuitem, gpointer user_data) { if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) { columnClick(GTK_WIDGET(menuitem), INT_MODIFIED_COLUMN); } } void on_search1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_configuration1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkWidget *dialog = create_configDialog(); realize_configDialog(dialog); switch (gtk_dialog_run(GTK_DIALOG(dialog))) { case GTK_RESPONSE_OK: unrealize_configDialog(dialog); break; default: break; } gtk_widget_destroy(dialog); } void on_test1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_reg_expression1_activate (GtkMenuItem *menuitem, gpointer user_data) { if (testRegExDialog1 == NULL) { testRegExDialog1 = create_testRegExDialog(); gtk_widget_show(testRegExDialog1); } else { gtk_widget_grab_focus(lookup_widget(testRegExDialog1, "testEntry")); } } void on_1_search1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_contents1_activate (GtkMenuItem *menuitem, gpointer user_data) { SMsyscall(_("http://searchmonkey.embeddediq.com/index.php/contribute"), BROWSER_LIST);/* must ne changed, Luc A feb 2018 */ } void on_support1_activate (GtkMenuItem *menuitem, gpointer user_data) { SMsyscall(_("http://searchmonkey.embeddediq.com/index.php/support"), BROWSER_LIST); } void on_about1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkWidget *aboutDialog = create_aboutSearchmonkey(); GtkWidget *tmpWidget; gchar *tmpString; PangoAttrList *list; PangoAttribute *attr; /* Set searchmonkey version text and font size */ tmpWidget = lookup_widget(aboutDialog, "aboutVersion"); tmpString = g_strdup_printf(_("searchmonkey %s"), VERSION);/* defined in "configure" line 1644 - luc A 3 janv 2018 */ gtk_label_set_text(GTK_LABEL(tmpWidget), tmpString); g_free(tmpString); list = pango_attr_list_new(); /* Create list with 1 reference */ attr = pango_attr_scale_new(PANGO_SCALE_X_LARGE); pango_attr_list_change(list, attr); /* pango_attr_list_insert */ gtk_label_set_attributes(GTK_LABEL(tmpWidget), list); pango_attr_list_unref(list); /* Destroy 1 attribute, plus list */ /* Start widget */ gtk_widget_show(aboutDialog); } void on_printResult_clicked (GtkButton *button, gpointer user_data) { // g_print("Creating XML data...\n"); // g_print("Printing XML data...\n"); } void on_Question_clicked (GtkButton *button, gpointer user_data) { SMsyscall(_("http://sourceforge.net/forum/?group_id=175143"), BROWSER_LIST); } void on_containingText_changed (GtkComboBox *combobox, gpointer user_data) { GtkToggleButton *checkBox; if (getExpertSearchMode(GTK_WIDGET(combobox)) == TRUE) { checkBox = GTK_TOGGLE_BUTTON(lookup_widget(GTK_WIDGET(combobox), "containingTextCheck")); } else { checkBox = GTK_TOGGLE_BUTTON(lookup_widget(GTK_WIDGET(combobox), "containingTextCheck2")); } gchar *test = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(combobox)); if (test == NULL){ gtk_toggle_button_set_active(checkBox, FALSE); return; } else { if (*test == '\0') { gtk_toggle_button_set_active(checkBox, FALSE); } else { gtk_toggle_button_set_active(checkBox, TRUE); } g_free(test); } } void on_folderSelector_clicked (GtkButton *button, gpointer user_data) { GtkWidget *dialog; GtkComboBox *fileWidget; gint result; gchar *currentFolderName = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(lookup_widget(GTK_WIDGET(button), "lookIn"))); dialog = create_folderChooserDialog(); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), currentFolderName); g_free(currentFolderName); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { gchar *filename; filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); if (getExpertSearchMode(GTK_WIDGET(button)) == TRUE) { fileWidget = GTK_COMBO_BOX(lookup_widget(GTK_WIDGET(button), "lookIn")); } else { fileWidget = GTK_COMBO_BOX(lookup_widget(GTK_WIDGET(button), "lookIn2")); } addUniqueRow(GTK_WIDGET(fileWidget), filename); g_free (filename); } gtk_widget_destroy (dialog); } void on_lessThanCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data) { GtkWidget *pTextBox = lookup_widget(GTK_WIDGET(togglebutton), "lessThanEntry"); gtk_widget_set_sensitive(pTextBox, gtk_toggle_button_get_active(togglebutton)); } void on_beforeCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data) { GtkWidget *pTextBox = lookup_widget(GTK_WIDGET(togglebutton), "beforeEntry"); gtk_widget_set_sensitive(pTextBox, gtk_toggle_button_get_active(togglebutton)); gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(togglebutton), "beforeCalendarBtn"), gtk_toggle_button_get_active(togglebutton)); } void on_moreThanCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data) { GtkWidget *pTextBox = lookup_widget(GTK_WIDGET(togglebutton), "moreThanEntry"); gtk_widget_set_sensitive(pTextBox, gtk_toggle_button_get_active(togglebutton)); } void on_afterCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data) { GtkWidget *pTextBox = lookup_widget(GTK_WIDGET(togglebutton), "afterEntry"); gtk_widget_set_sensitive(pTextBox, gtk_toggle_button_get_active(togglebutton)); gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(togglebutton), "afterCalendarBtn"), gtk_toggle_button_get_active(togglebutton)); } void on_expertUserCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data) { GtkWidget *menuitem; if (gtk_toggle_button_get_active(togglebutton)) { /* Set expert mode */ gtk_notebook_set_current_page(GTK_NOTEBOOK(lookup_widget(GTK_WIDGET(togglebutton), "searchNotebook")), 1); } else { /* Set basic mode */ gtk_notebook_set_current_page(GTK_NOTEBOOK(lookup_widget(GTK_WIDGET(togglebutton), "searchNotebook")), 0); } } gboolean on_treeview1_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { GtkTreeView *treeview = GTK_TREE_VIEW(widget); GtkTreePath *path; GtkTreeViewDropPosition *pos; GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); if(selection==NULL) return FALSE; /* Capture right button click */ if ((event->button == 3) && (event->type == GDK_BUTTON_PRESS) && (gtk_tree_selection_count_selected_rows(selection)==1 ) ) { if (gtk_tree_view_get_path_at_pos (treeview, event->x, event->y, &path, NULL, NULL, NULL)) { // gtk_tree_selection_unselect_all(selection); /* added by Luc A., 28 dec 2017 */ gtk_tree_selection_select_path (selection, path); if (path!=NULL) { gtk_tree_path_free(path); }/* if path!=NULL */ do_popup_menu(widget, event); return TRUE; }/* if test path at pos OK */ else return FALSE; }/* endif right-click */ /* capture double-click */ if ((event->button == 1) && (event->type == GDK_2BUTTON_PRESS) && (gtk_tree_selection_count_selected_rows(selection)==1 )) { if (gtk_tree_view_get_path_at_pos (treeview,event->x, event->y, &path, NULL, NULL, NULL)) { gchar *fullFileName = getFullFileName(treeview, FULL_FILENAME_COLUMN); if (fullFileName != NULL) { SMsyscall(fullFileName, TEXTEDITOR_LIST); g_free(fullFileName); } return TRUE; }/* endif at pos */ }/* endif double-click */ /* capture simple-left-click, i.e. select a row */ if ((event->button == 1) && (event->type == GDK_BUTTON_PRESS) && (gtk_tree_selection_count_selected_rows(selection)==1 )) { if (gtk_tree_view_get_path_at_pos (treeview,event->x, event->y, &path, NULL, NULL, NULL)) { gtk_tree_selection_unselect_all(selection); /* ajout */ if (gtk_tree_selection_count_selected_rows(selection)==1) { gtk_tree_selection_select_path (selection, path); if (path!=NULL) { // printf("* avant libère mémoire *\n"); gtk_tree_path_free(path); // printf("* après libère mémoire *\n"); } return TRUE; } } }/* endif left-click */ return FALSE; } gboolean on_treeview1_popup_menu (GtkWidget *widget, gpointer user_data) { do_popup_menu(widget, NULL); return FALSE; } void on_open1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkTreeView *treeView; gchar *fullFileName; if (getResultsViewHorizontal(GTK_WIDGET(menuitem))) { treeView = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(menuitem), "treeview1")); } else { treeView = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(menuitem), "treeview2")); } fullFileName = getFullFileName(treeView, FULL_FILENAME_COLUMN); if (fullFileName != NULL) { SMsyscall(fullFileName, TEXTEDITOR_LIST); g_free(fullFileName); } detachMenu(menuitem); } void on_copy3_activate (GtkMenuItem *menuitem, gpointer user_data) { copyFile(GTK_WIDGET(menuitem)); detachMenu(menuitem); } void on_delete2_activate (GtkMenuItem *menuitem, gpointer user_data) { deleteFile (GTK_WIDGET(menuitem)); detachMenu(menuitem); } void on_explore1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkTreeView *treeView; gchar *location; if (getResultsViewHorizontal(GTK_WIDGET(menuitem))) { treeView = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(menuitem), "treeview1")); } else { treeView = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(menuitem), "treeview2")); } location = getFullFileName(treeView, LOCATION_COLUMN); if (location != NULL) { SMsyscall(location, FILEEXPLORER_LIST); g_free(location); } detachMenu(menuitem); } void on_cancel1_activate (GtkMenuItem *menuitem, gpointer user_data) { detachMenu(menuitem); } void on_testRegExDialog_response (GtkDialog *dialog, gint response_id, gpointer user_data) { switch (response_id) { case GTK_RESPONSE_APPLY: refreshTestResults(GTK_WIDGET(dialog)); break; default: testRegExDialog1 = NULL; gtk_widget_destroy(GTK_WIDGET(dialog)); break; } } void on_SampleTextView_realize (GtkWidget *widget, gpointer user_data) { GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(widget)); GtkTextTag *tag; tag = gtk_text_buffer_create_tag (buffer, "word_highlight", "foreground", "black","background", "lightBlue", NULL); #ifdef NOT_YET tag = gtk_text_buffer_create_tag (buffer, "word_highlight1", "foreground", "lightBlue", NULL); #endif } void on_expWizard_response (GtkDialog *dialog, gint response_id, gpointer user_data) { gint typeRegex = (intptr_t)g_object_get_data(G_OBJECT(dialog), "regexType"); GtkEntry *output = GTK_ENTRY(lookup_widget(GTK_WIDGET(dialog), "resultExp"));/* resulExp = name of GtkEntry for the final RegEx formula */ gchar *finalRegex; GtkComboBox *retCombo;/* contains a pointer on main Window, for GtkCombo for files OR GtkCombo for containing text */ if (typeRegex == FILE_REGEX_TYPE) { retCombo = GTK_COMBO_BOX(lookup_widget(mainWindowApp, "fileName"));/* filename = GtkWidget, field of the combo in main window */ } else if (typeRegex == CONTEXT_REGEX_TYPE) { retCombo = GTK_COMBO_BOX(lookup_widget(mainWindowApp, "containingText")); } else { g_print (_("Internal Error! Unable to find calling wizard type!")); gtk_widget_destroy(GTK_WIDGET(dialog)); return; } switch (response_id) { case GTK_RESPONSE_HELP: SMsyscall(_("http://searchmonkey.sourceforge.net/index.php/Regular_expression_builder"), BROWSER_LIST); break; case GTK_RESPONSE_OK: finalRegex = (gchar *)gtk_entry_get_text(output);/* read text in Wizard dialog, resulting formula */ if (*finalRegex != '\0') { addUniqueRow(GTK_WIDGET(retCombo), finalRegex);/* modify combobox in main window */ } /* Do not break here! We want the widget to be destroyed! */ default: if (typeRegex == FILE_REGEX_TYPE) { fileRegexWizard = NULL; } else if (typeRegex == CONTEXT_REGEX_TYPE) { contextRegexWizard = NULL; } gtk_widget_destroy(GTK_WIDGET(dialog)); break; } } void on_startType_changed (GtkComboBox *combobox, gpointer user_data) { GtkWidget *entry = lookup_widget(GTK_WIDGET(combobox), "startEntry"); GtkWidget *repeat = lookup_widget(GTK_WIDGET(combobox), "startOccurance"); updateTypeChangeEntry(combobox, entry, repeat); updateRegExWizard(GTK_WIDGET(combobox)); } void on_startEntry_changed (GtkEditable *editable, gpointer user_data) { updateRegExWizard(GTK_WIDGET(editable)); } void on_startOccurance_changed (GtkComboBox *combobox, gpointer user_data) { updateRegExWizard(GTK_WIDGET(combobox)); } void on_midType_changed (GtkComboBox *combobox, gpointer user_data) { GtkWidget *entry = lookup_widget(GTK_WIDGET(combobox), "midEntry"); GtkWidget *repeat = lookup_widget(GTK_WIDGET(combobox), "midOccurance"); updateTypeChangeEntry(combobox, entry, repeat); updateRegExWizard(GTK_WIDGET(combobox)); } void on_midEntry_changed (GtkEditable *editable, gpointer user_data) { updateRegExWizard(GTK_WIDGET(editable)); } void on_midOccurance_changed (GtkComboBox *combobox, gpointer user_data) { updateRegExWizard(GTK_WIDGET(combobox)); } void on_endType_changed (GtkComboBox *combobox, gpointer user_data) { GtkWidget *entry = lookup_widget(GTK_WIDGET(combobox), "endEntry"); GtkWidget *repeat = lookup_widget(GTK_WIDGET(combobox), "endOccurance"); updateTypeChangeEntry(combobox, entry, repeat); updateRegExWizard(GTK_WIDGET(combobox)); } void on_endEntry_changed (GtkEditable *editable, gpointer user_data) { updateRegExWizard(GTK_WIDGET(editable)); } void on_endOccurance_changed (GtkComboBox *combobox, gpointer user_data) { updateRegExWizard(GTK_WIDGET(combobox)); } void on_regExpWizard1_clicked (GtkButton *button, gpointer user_data) { /* Create filename wizard */ if (fileRegexWizard == NULL) { fileRegexWizard = create_expWizard(); g_object_set_data(G_OBJECT(fileRegexWizard), "regexType", (gpointer)FILE_REGEX_TYPE); /* file type */ gtk_widget_show(fileRegexWizard); } else { gtk_widget_grab_focus(lookup_widget(fileRegexWizard, "startEntry")); } } void on_regExpWizard2_clicked (GtkButton *button, gpointer user_data) { /* Create filename wizard */ if (contextRegexWizard == NULL) { contextRegexWizard = create_expWizard(); g_object_set_data(G_OBJECT(contextRegexWizard), "regexType", (gpointer)CONTEXT_REGEX_TYPE); /* file type */ gtk_widget_show(contextRegexWizard); } else { gtk_widget_grab_focus(lookup_widget(contextRegexWizard, "startEntry")); } } void on_convertRegex_toggled (GtkToggleButton *togglebutton, gpointer user_data) { updateRegExWizard(GTK_WIDGET(togglebutton)); } void on_addMidContents_clicked (GtkButton *button, gpointer user_data) { GtkComboBox *type = GTK_COMBO_BOX(lookup_widget(GTK_WIDGET(button), "midType")); GtkEntry *entry = GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "midEntry")); GtkComboBox *repeat = GTK_COMBO_BOX(lookup_widget(GTK_WIDGET(button), "midOccurance")); GtkEntry *iterStr = GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "midSelection")); appendTableRow(lookup_widget(GTK_WIDGET(button), "midTreeView"), 5, gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(type)), gtk_entry_get_text(entry), gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(repeat)), gtk_combo_box_get_active(type), gtk_combo_box_get_active(repeat)); gtk_combo_box_set_active(type, 0); gtk_entry_set_text(entry, ""); gtk_combo_box_set_active(repeat, 0); gtk_entry_set_text(iterStr, ""); gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(button), "deleteSelectedContents"), TRUE); gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(button), "modifiedSelectedContents"), TRUE); } void on_modifiedSelectedContents_clicked (GtkButton *button, gpointer user_data) { GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(button), "midTreeView")); GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); GtkTreeIter iter; GtkTreeModel *model; gint type = REGWIZ_NONE; gchar *entry = NULL; gint repeat = REGWIZ_NONE; gchar *iterStr; g_assert(treeview != NULL); g_assert(selection != NULL); if (gtk_tree_selection_get_selected (selection, &model, &iter)) { g_assert(model != NULL); gtk_tree_model_get (model, &iter, REGEX_TYPE_INT_COLUMN, &type, REGEX_ENTRY_COLUMN, &entry, REGEX_REPEAT_INT_COLUMN, &repeat, -1); gtk_combo_box_set_active(GTK_COMBO_BOX(lookup_widget(GTK_WIDGET(button), "midType")), type); gtk_entry_set_text(GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "midEntry")), entry); gtk_combo_box_set_active(GTK_COMBO_BOX(lookup_widget(GTK_WIDGET(button), "midOccurance")), repeat); g_free (entry); iterStr = gtk_tree_model_get_string_from_iter (model, &iter); if (iterStr != NULL) { gtk_entry_set_text(GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "midSelection")), iterStr); g_free(iterStr); } } } void on_deleteSelectedContents_clicked (GtkButton *button, gpointer user_data) { GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(button), "midTreeView")); GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); GtkTreeIter iter; GtkTreeModel *model; GtkComboBox *type = GTK_COMBO_BOX(lookup_widget(GTK_WIDGET(button), "midType")); GtkEntry *entry = GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "midEntry")); GtkEntry *iterC = GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "midSelection")); GtkComboBox *repeat = GTK_COMBO_BOX(lookup_widget(GTK_WIDGET(button), "midOccurance")); if (gtk_tree_selection_get_selected (selection, &model, &iter)) { gtk_list_store_remove(GTK_LIST_STORE(model), &iter); gtk_combo_box_set_active(type, 0); gtk_entry_set_text(entry, ""); gtk_combo_box_set_active(repeat, 0); gtk_entry_set_text(iterC, ""); } if (gtk_tree_model_iter_n_children (model, NULL) <= 0) { gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(button), "modifiedSelectedContents"), FALSE); gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(button), "deleteSelectedContents"), FALSE); } updateRegExWizard(GTK_WIDGET(button)); } /* Regex Wizard : middle part of the expression */ void on_midTreeView_realize (GtkWidget *widget, gpointer user_data) { GtkTreeViewColumn *column; GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); GtkListStore *store = gtk_list_store_new (REGEX_N_COLUMNS,/* number of total columns in Regex wizard- 1 janv 2018 Luc A*/ G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); gtk_tree_view_set_model (GTK_TREE_VIEW(widget), GTK_TREE_MODEL(store)); g_object_unref (G_OBJECT (store)); /* Create columns */ column = gtk_tree_view_column_new_with_attributes (_("(Type)"), renderer, "text", REGEX_TYPE_COLUMN, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (widget), column); column = gtk_tree_view_column_new_with_attributes (_("(Entry)"), renderer, "text", REGEX_ENTRY_COLUMN, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (widget), column); column = gtk_tree_view_column_new_with_attributes (_("(Repeat)"), renderer, "text", REGEX_REPEAT_COLUMN, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (widget), column); } void on_updateSelectedContents_clicked (GtkButton *button, gpointer user_data) { GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(button), "midTreeView")); GtkTreeIter iter; GtkTreeModel *model = gtk_tree_view_get_model (treeview); GtkComboBox *type = GTK_COMBO_BOX(lookup_widget(GTK_WIDGET(button), "midType")); GtkEntry *entry = GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "midEntry")); GtkEntry *iterC = GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "midSelection")); GtkComboBox *repeat = GTK_COMBO_BOX(lookup_widget(GTK_WIDGET(button), "midOccurance")); const gchar *iterStr = gtk_entry_get_text(GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "midSelection"))); g_assert (treeview != NULL); g_assert (model != NULL); g_assert (type != NULL); g_assert (entry != NULL); g_assert (repeat != NULL); g_assert (iterStr != NULL); if (*iterStr == '\0') { return; } gtk_tree_model_get_iter_from_string (model, &iter, iterStr); if (gtk_combo_box_get_active(type) == REGWIZ_DONT_KNOW) { gtk_list_store_remove(GTK_LIST_STORE(model), &iter); if (gtk_tree_model_iter_n_children (model, NULL) <= 0) { gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(button), "modifiedSelectedContents"), FALSE); gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(button), "deleteSelectedContents"), FALSE); } gtk_combo_box_set_active(type, 0); gtk_entry_set_text(entry, ""); gtk_combo_box_set_active(repeat, 0); gtk_entry_set_text(iterC, ""); gtk_entry_set_text(GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "midSelection")), ""); return; /* Delete entry instead */ } gtk_list_store_set (GTK_LIST_STORE(model), &iter, REGEX_TYPE_COLUMN, gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(type)), REGEX_ENTRY_COLUMN, gtk_entry_get_text(entry), REGEX_REPEAT_COLUMN, gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(repeat)), REGEX_TYPE_INT_COLUMN, gtk_combo_box_get_active(type), REGEX_REPEAT_INT_COLUMN, gtk_combo_box_get_active(repeat), -1); gtk_combo_box_set_active(type, 0); gtk_entry_set_text(entry, ""); gtk_combo_box_set_active(repeat, 0); gtk_entry_set_text(iterC, ""); gtk_entry_set_text(GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "midSelection")), ""); } void on_midSelection_changed (GtkEditable *editable, gpointer user_data) { const gchar *selection = gtk_entry_get_text(GTK_ENTRY(editable)); if (*selection != '\0') { gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(editable), "updateSelectedContents"), TRUE); } else { gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(editable), "updateSelectedContents"), FALSE); } } void on_expWizard_realize (GtkWidget *widget, gpointer user_data) { gint widgetType = (intptr_t)g_object_get_data(G_OBJECT(widget), "regexType"); if (widgetType == FILE_REGEX_TYPE) { gtk_window_set_title (GTK_WINDOW (fileRegexWizard), _("File Expression Wizard")); } else if (widgetType == CONTEXT_REGEX_TYPE) { gtk_window_set_title (GTK_WINDOW (contextRegexWizard), _("Context Expression Wizard")); } gtk_combo_box_set_active(GTK_COMBO_BOX(lookup_widget(widget, "startType")), REGWIZ_DONT_KNOW); gtk_combo_box_set_active(GTK_COMBO_BOX(lookup_widget(widget, "startOccurance")), REGWIZ_REPEAT_ONCE); gtk_combo_box_set_active(GTK_COMBO_BOX(lookup_widget(widget, "midType")), REGWIZ_DONT_KNOW); gtk_combo_box_set_active(GTK_COMBO_BOX(lookup_widget(widget, "midOccurance")), REGWIZ_REPEAT_ONCE); gtk_combo_box_set_active(GTK_COMBO_BOX(lookup_widget(widget, "endType")), REGWIZ_DONT_KNOW); gtk_combo_box_set_active(GTK_COMBO_BOX(lookup_widget(widget, "endOccurance")), REGWIZ_REPEAT_ONCE); } void on_midTreeView_drag_end (GtkWidget *widget, GdkDragContext *drag_context, gpointer user_data) { updateRegExWizard(widget); } void on_configDialog_realize (GtkWidget *widget, gpointer user_data) { realize_configDialog(widget); } void on_autoFindExe_clicked (GtkButton *button, gpointer user_data) { GtkWidget *dialog = create_autoComplete(); GtkProgressBar *pbar = GTK_PROGRESS_BAR(lookup_widget(dialog, "progressbar3")); userExeData *exeData = g_malloc0(sizeof(userExeData)); /* Attach data to the dialog */ exeData->parent = GTK_WIDGET(button); gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); gtk_progress_bar_set_fraction(pbar, 0); gtk_progress_bar_set_text(pbar, _("0%")); g_object_set_data_full(G_OBJECT(dialog), "exeData", exeData, g_free_exeData); /* Spawn idle iterator, and show status dialog */ exeData->gid = g_timeout_add(40, getExeData, dialog); /* Slow iterations down by using timeouts */ gtk_widget_show(dialog); } void on_online_release_notes1_activate (GtkMenuItem *menuitem, gpointer user_data) { /* Browse to a new release notes subset. Note redirect required by website */ gchar *website = g_strdup_printf(_("https://sourceforge.net/projects/searchmonkey/files/gSearchmonkey%20GTK%20%28Gnome%29/0.8.2%20%5Bstable%5D/"), PACKAGE, VERSION); SMsyscall(website, BROWSER_LIST); } void on_configResetAll_clicked (GtkButton *button, gpointer user_data) { gchar *searchmonkeyExe = g_object_get_data(G_OBJECT(mainWindowApp), "argvPointer"); GtkWidget *confirmDialog = gtk_message_dialog_new (GTK_WINDOW(lookup_widget(GTK_WIDGET(button), "configDialog")), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, _("Are you sure that you wish to delete the config file, and restart searchmonkey?")); if (gtk_dialog_run (GTK_DIALOG (confirmDialog)) == GTK_RESPONSE_OK) { /* Delete the config file, and disable saving on exit - attempt to restart searchmonkey too? */ if (g_remove(gConfigFile) != 0) { g_print(_("Error! Unable to remove config file %s.\n"), gConfigFile); } g_object_set_data(G_OBJECT(mainWindowApp), CONFIG_DISABLE_SAVE_CONFIG_STRING, GINT_TO_POINTER(CONFIG_DISABLE_SAVE_CONFIG)); g_spawn_command_line_async (searchmonkeyExe, NULL); /* Assume it worked */ gtk_dialog_response (GTK_DIALOG(lookup_widget(GTK_WIDGET(button), "configDialog")), GTK_RESPONSE_REJECT); gtk_main_quit(); /* Exit this instance */ return; } gtk_widget_destroy (confirmDialog); } void on_configSaveNow_clicked (GtkButton *button, gpointer user_data) { GKeyFile *keyString = getGKeyFile(GTK_WIDGET(mainWindowApp)); /* Immediately unrealize check button */ unrealizeToggle(GTK_WIDGET(button), keyString, "configuration", "configPromptSave"); storeGKeyFile(keyString); setConfigFileLocation (GTK_WIDGET(button)); } void on_forums1_activate (GtkMenuItem *menuitem, gpointer user_data) { SMsyscall(_("http://searchmonkey.embeddediq.com/index.php/support/index"), BROWSER_LIST); } void on_matches1_activate (GtkMenuItem *menuitem, gpointer user_data) { if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) { columnClick(GTK_WIDGET(menuitem), MATCHES_COUNT_COLUMN); } } void on_window1_unrealize (GtkWidget *widget, gpointer user_data) { unrealize_searchmonkeyWindow(widget); /* Initialise everything possible immediately */ } void on_window1_realize (GtkWidget *widget, gpointer user_data) { realize_searchmonkeyWindow(widget); /* Initialise everything possible immediately */ } gboolean on_configResultEOL_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { checkCsvEntry(GTK_ENTRY(lookup_widget(widget, "configResultEOL"))); return FALSE; } gboolean on_configResultEOF_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { checkCsvEntry(GTK_ENTRY(lookup_widget(widget, "configResultEOF"))); return FALSE; } gboolean on_configResultDelimiter_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { checkCsvEntry(GTK_ENTRY(lookup_widget(widget, "configResultDelimiter"))); return FALSE; } void on_newInstance1_activate (GtkMenuItem *menuitem, gpointer user_data) { spawnNewSearchmonkey(); } void on_playButton_activate (GtkMenuItem *menuitem, gpointer user_data) { start_search_thread(GTK_WIDGET(menuitem)); } void on_stopButton_activate (GtkMenuItem *menuitem, gpointer user_data) { stop_search_thread(GTK_WIDGET(menuitem)); } void on_horizontal_results1_activate (GtkMenuItem *menuitem, gpointer user_data) { if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) { setResultsViewHorizontal(GTK_WIDGET(menuitem), TRUE); } } void on_vertical_results1_activate (GtkMenuItem *menuitem, gpointer user_data) { if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) { setResultsViewHorizontal(GTK_WIDGET(menuitem), FALSE); /* default to vertical */ } } void on_importCriteria_clicked (GtkToolButton *toolbutton, gpointer user_data) { importCriteria(GTK_WIDGET(toolbutton)); } void on_exportCriteria_clicked (GtkToolButton *toolbutton, gpointer user_data) { exportCriteria(GTK_WIDGET(toolbutton)); } void on_saveResults_clicked (GtkToolButton *toolbutton, gpointer user_data) { saveResults(GTK_WIDGET(toolbutton)); } void on_printResults_clicked (GtkToolButton *toolbutton, gpointer user_data) { } void on_newInstance2_clicked (GtkToolButton *toolbutton, gpointer user_data) { spawnNewSearchmonkey(); } void on_playButton2_clicked (GtkToolButton *toolbutton, gpointer user_data) { start_search_thread(GTK_WIDGET(toolbutton)); } void on_stopButton2_clicked (GtkToolButton *toolbutton, gpointer user_data) { stop_search_thread(GTK_WIDGET(toolbutton)); } void on_playButton_clicked (GtkButton *button, gpointer user_data) { start_search_thread(GTK_WIDGET(button)); } void on_stopButton_clicked (GtkButton *button, gpointer user_data) { stop_search_thread(GTK_WIDGET(button)); } void on_searchNotebook_switch_page (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data) { guint old_page_num = gtk_notebook_get_current_page(notebook); if (old_page_num == 0) { /* If leaving basic mode - save settings */ setExpertSearchMode(GTK_WIDGET(notebook), TRUE); } else if (old_page_num == 1) { /* If leaving expert mode - save settings */ setExpertSearchMode(GTK_WIDGET(notebook), FALSE); } else { if (page_num == 0) { /* If going to basic mode - restore settings */ setExpertSearchMode(GTK_WIDGET(notebook), FALSE); } else if (page_num == 1) { /* If going to expert mode - restore settings */ setExpertSearchMode(GTK_WIDGET(notebook), TRUE); } } } void on_aboutSearchmonkey_response (GtkDialog *dialog, gint response_id, gpointer user_data) { GtkWidget *creditsDialog; if (response_id == GTK_RESPONSE_OK) { /* Show credits */ creditsDialog = create_creditsDialog(); gtk_widget_show(creditsDialog); } else { /* Otherwise destroy about box */ gtk_widget_destroy(GTK_WIDGET(dialog)); } } void on_autosize_columns_activate (GtkMenuItem *menuitem, gpointer user_data) { GKeyFile *keyString = getGKeyFile(GTK_WIDGET(mainWindowApp)); gboolean autoColumnWidth = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem)); g_assert(keyString != NULL); realizeTreeviewColumns (GTK_WIDGET(mainWindowApp), keyString, "history", "treeview", autoColumnWidth); } /* surprise : menu empty at last 2017 so I've made the job - :-) Luc A. - 4 janv 2018 */ void on_edit_file1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkTreeView *treeView; gchar *fullFileName; if (getResultsViewHorizontal(GTK_WIDGET(menuitem))) { treeView = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(menuitem), "treeview1")); } else { treeView = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(menuitem), "treeview2")); } fullFileName = getFullFileName(treeView, FULL_FILENAME_COLUMN); if (fullFileName != NULL) { SMsyscall(fullFileName, TEXTEDITOR_LIST); g_free(fullFileName); } } /* surprise : menu empty at last 2017 so I've made the job - :-) Luc A. - 4 janv 2018 */ void on_open_folder1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkTreeView *treeView; gchar *location; if (getResultsViewHorizontal(GTK_WIDGET(menuitem))) { treeView = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(menuitem), "treeview1")); } else { treeView = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(menuitem), "treeview2")); } location = getFullFileName(treeView, LOCATION_COLUMN); if (location != NULL) { SMsyscall(location, FILEEXPLORER_LIST); g_free(location); } } void on_folderDepthCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data) { gboolean checked = gtk_toggle_button_get_active(togglebutton); gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(togglebutton), "folderDepthSpin"), checked); /* Control spin sensitivity */ if (checked) { /* Re-enable folder recursion enable, if depth set */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(GTK_WIDGET(togglebutton), "searchSubfoldersCheck")), TRUE); } } void on_searchSubfoldersCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data) { if (!gtk_toggle_button_get_active(togglebutton)) { /* Disable depth limit, if recurse disabled */ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(GTK_WIDGET(togglebutton), "folderDepthCheck")), FALSE); } } void on_dosExpressionRadioFile_clicked (GtkButton *button, gpointer user_data) { GtkStatusbar *statusbar = GTK_STATUSBAR(lookup_widget(GTK_WIDGET(button), "statusbar1")); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) { changeModel(GTK_WIDGET(button), "regex", "noregex"); } gtk_statusbar_pop(statusbar, STATUSBAR_CONTEXT_ID(statusbar)); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (lookup_widget(GTK_WIDGET(button), "dosExpressionRadioFile")))) { gtk_statusbar_push(statusbar, STATUSBAR_CONTEXT_ID(statusbar), _("research mode with jokers(DOS like)")); } else gtk_statusbar_push(statusbar, STATUSBAR_CONTEXT_ID(statusbar), _("research mode with RegEx")); } void on_regularExpressionRadioFile_clicked (GtkButton *button, gpointer user_data) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) { changeModel(GTK_WIDGET(button), "noregex", "regex"); } } void on_afterCalenderBtn_clicked (GtkButton *button, gpointer user_data) { GtkEntry *dateEntry = GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "afterEntry")); gchar* newDate = getDate(gtk_entry_get_text(dateEntry)); gtk_entry_set_text(dateEntry, newDate); g_free(newDate); } void on_beforeCalendatBtn_clicked (GtkButton *button, gpointer user_data) { GtkEntry *dateEntry = GTK_ENTRY(lookup_widget(GTK_WIDGET(button), "beforeEntry")); gchar* newDate = getDate(gtk_entry_get_text(dateEntry)); gtk_entry_set_text(dateEntry, newDate); g_free(newDate); } /* Luc A - janv 2018 */ gboolean on_LessThanSize_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { gchar * regexp; guint flags; // printf("combo Less changée \n"); return FALSE; } /* Luc A - janv 2018 */ gboolean on_MoreThanSize_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { gchar * regexp; guint flags; // printf("combo More changée \n"); return FALSE; } gboolean on_regexp_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { gchar * regexp; guint flags; gchar* error = _("Error! Invalid 'file name' regular expression"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "regularExpressionRadioFile")))) { if (getExtendedRegexMode(widget)) { flags |= REG_EXTENDED; } flags |= REG_NOSUB; regexp = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(widget)); if (test_regexp(regexp, flags, error)) { addUniqueRow(widget, regexp); } } return FALSE; } gboolean on_regexp2_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { gchar * regexp; guint flags; gchar* error = _("Error! Invalid 'containing text' regular expression"); if (getExtendedRegexMode(widget)) { flags |= REG_EXTENDED; } flags |= REG_NOSUB; regexp = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(widget)); if (test_regexp(regexp, flags, error)) { addUniqueRow(widget, regexp); } return FALSE; } void on_limitResultsCheckResults_toggled (GtkToggleButton *togglebutton, gpointer user_data) { gboolean active = gtk_toggle_button_get_active(togglebutton); gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(togglebutton), "limit_results_hbox"), active); } void on_showLinesCheckResults_toggled (GtkToggleButton *togglebutton, gpointer user_data) { gboolean active = gtk_toggle_button_get_active(togglebutton); gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(togglebutton), "show_line_contents_hbox"), active); } gboolean on_searchNotebook_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { GtkWidget *notebook = lookup_widget(widget, "searchNotebook"); guint old_page_num = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)); if (old_page_num == 0) { /* If currently showing basic mode - then save these settings */ setExpertSearchMode(notebook, TRUE); } else { /* Otherwise use expert settings as the default */ setExpertSearchMode(notebook, FALSE); } return FALSE; } void on_limitContentsCheckResults_toggled (GtkToggleButton *togglebutton, gpointer user_data) { gboolean active = gtk_toggle_button_get_active(togglebutton); gtk_widget_set_sensitive(lookup_widget(GTK_WIDGET(togglebutton), "limit_contents_hbox"), active); } void on_autoComplete_response (GtkDialog *dialog, gint response_id, gpointer user_data) { userExeData *exeData = g_object_get_data(G_OBJECT(dialog), "exeData"); GtkWidget *parent = exeData->parent; GtkWidget *widget = GTK_WIDGET(dialog); GtkWidget *choosers[3]; gint i,j; if (response_id == GTK_RESPONSE_OK) { /* Can only happen with valid data.. */ /* Store new values into configuration */ choosers[BROWSER_LIST] = lookup_widget(parent, "configWebBrowser"); choosers[TEXTEDITOR_LIST] = lookup_widget(parent, "configTextEditor"); choosers[FILEEXPLORER_LIST] = lookup_widget(parent, "configFileExplorer"); for (j=0; jretStr[j][i] != NULL) { gtk_entry_set_text(GTK_ENTRY(choosers[j]), exeData->retStr[j][i]); break; } } } } else { /* Assume cancelled */ g_source_remove(exeData->gid); /* Stop timeout (just in case) */ } /* Clean exit */ gtk_widget_destroy(GTK_WIDGET(dialog)); } searchmonkey-0.8.3/src/callbacks.h0000664000175000017500000005001613236161317014021 00000000000000#include void on_window1_destroy (GtkObject *object, gpointer user_data); void on_menubar1_realize (GtkWidget *widget, gpointer user_data); void on_menubar1_unrealize (GtkWidget *widget, gpointer user_data); void on_open_criteria1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_save_criteria1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_save_results1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_print1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_print_preview1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_print_setup1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_quit1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_word_wrap1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_set_font1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_set_highligting_colour1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_cl_ear_history1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_delete1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_copy2_activate (GtkMenuItem *menuitem, gpointer user_data); void on_toolbar2_activate (GtkMenuItem *menuitem, gpointer user_data); void on_status_bar1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_file_name1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_location1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_size1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_type1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_modified1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_search1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_playButton_activate (GtkMenuItem *menuitem, gpointer user_data); void on_stopButton_activate (GtkMenuItem *menuitem, gpointer user_data); void on_configuration1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_test1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_reg_expression1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_1_search1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_contents1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_support1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_about1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_playButton_clicked (GtkButton *button, gpointer user_data); void on_stopButton_clicked (GtkButton *button, gpointer user_data); void on_Question_clicked (GtkButton *button, gpointer user_data); void on_searchNotebook_realize (GtkWidget *widget, gpointer user_data); void on_searchNotebook_unrealize (GtkWidget *widget, gpointer user_data); void on_containingText_changed (GtkComboBox *combobox, gpointer user_data); void on_folderSelector_clicked (GtkButton *button, gpointer user_data); void on_lessThanCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_beforeCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_moreThanCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_afterCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_expertUserCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_treeview1_realize (GtkWidget *widget, gpointer user_data); gboolean on_treeview1_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); gboolean on_treeview1_popup_menu (GtkWidget *widget, gpointer user_data); void on_textview1_realize (GtkWidget *widget, gpointer user_data); void on_textview1_unrealize (GtkWidget *widget, gpointer user_data); void on_statusbar1_realize (GtkWidget *widget, gpointer user_data); void on_open1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_copy3_activate (GtkMenuItem *menuitem, gpointer user_data); void on_delete2_activate (GtkMenuItem *menuitem, gpointer user_data); void on_explore1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_cancel1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_testRegExDialog_response (GtkDialog *dialog, gint response_id, gpointer user_data); void on_SampleTextView_realize (GtkWidget *widget, gpointer user_data); void on_expWizard_response (GtkDialog *dialog, gint response_id, gpointer user_data); void on_expWizard_close (GtkDialog *dialog, gpointer user_data); void on_startType_changed (GtkComboBox *combobox, gpointer user_data); void on_startEntry_changed (GtkEditable *editable, gpointer user_data); void on_startOccurance_changed (GtkComboBox *combobox, gpointer user_data); void on_midType_changed (GtkComboBox *combobox, gpointer user_data); void on_midEntry_changed (GtkEditable *editable, gpointer user_data); void on_midOccurance_changed (GtkComboBox *combobox, gpointer user_data); void on_endType_changed (GtkComboBox *combobox, gpointer user_data); void on_endEntry_changed (GtkEditable *editable, gpointer user_data); void on_endOccurance_changed (GtkComboBox *combobox, gpointer user_data); void on_regExpWizard1_clicked (GtkButton *button, gpointer user_data); void on_regExpWizard2_clicked (GtkButton *button, gpointer user_data); void on_convertRegex_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_addMidContents_clicked (GtkButton *button, gpointer user_data); void on_modifiedSelectedContents_clicked (GtkButton *button, gpointer user_data); void on_deleteSelectedContents_clicked (GtkButton *button, gpointer user_data); void on_midTreeView_realize (GtkWidget *widget, gpointer user_data); void on_updateSelectedContents_clicked (GtkButton *button, gpointer user_data); void on_midSelection_changed (GtkEditable *editable, gpointer user_data); void on_expWizard_realize (GtkWidget *widget, gpointer user_data); void on_expWizard_unrealize (GtkWidget *widget, gpointer user_data); void on_midTreeView_drag_end (GtkWidget *widget, GdkDragContext *drag_context, gpointer user_data); void on_notebook2_switch_page (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data); void on_configDialog_realize (GtkWidget *widget, gpointer user_data); void on_treeview1_unrealize (GtkWidget *widget, gpointer user_data); void on_autoFindExe_clicked (GtkButton *button, gpointer user_data); void on_online_release_notes1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_configResetAll_clicked (GtkButton *button, gpointer user_data); void on_configSaveNow_clicked (GtkButton *button, gpointer user_data); void on_forums1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_matches1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_window1_unrealize (GtkWidget *widget, gpointer user_data); void on_window1_realize (GtkWidget *widget, gpointer user_data); void on_autoAdjustColumnWidth_toggled (GtkToggleButton *togglebutton, gpointer user_data); gboolean on_configResultEOL_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data); gboolean on_configResultEOF_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data); gboolean on_configResultDelimiter_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data); void on_newInstance1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_horizontal_results1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_vertical_results1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_importCriteria_clicked (GtkToolButton *toolbutton, gpointer user_data); void on_exportCriteria_clicked (GtkToolButton *toolbutton, gpointer user_data); void on_saveResults_clicked (GtkToolButton *toolbutton, gpointer user_data); void on_printResults_clicked (GtkToolButton *toolbutton, gpointer user_data); void on_newInstance2_clicked (GtkToolButton *toolbutton, gpointer user_data); void on_playButton2_clicked (GtkToolButton *toolbutton, gpointer user_data); void on_stopButton2_clicked (GtkToolButton *toolbutton, gpointer user_data); void on_aboutSearchmonkey_response (GtkDialog *dialog, gint response_id, gpointer user_data); void on_autosize_columns_activate (GtkMenuItem *menuitem, gpointer user_data); void on_edit_file1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_open_folder1_activate (GtkMenuItem *menuitem, gpointer user_data); void on_containingText_changed (GtkComboBox *combobox, gpointer user_data); void on_searchNotebook_switch_page (GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data); void on_basic_mode1_toggled (GtkCheckMenuItem *checkmenuitem, gpointer user_data); void on_expert_mode1_toggled (GtkCheckMenuItem *checkmenuitem, gpointer user_data); void on_folderDepthCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_searchSubfoldersCheck_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_dosExpressionRadioFile_activate (GtkButton *button, gpointer user_data); void on_regularExpressionRadioFile_activate (GtkButton *button, gpointer user_data); void on_dosExpressionRadioFile_clicked (GtkButton *button, gpointer user_data); void on_regularExpressionRadioFile_clicked (GtkButton *button, gpointer user_data); void on_afterCalenderBtn_clicked (GtkButton *button, gpointer user_data); void on_beforeCalendatBtn_clicked (GtkButton *button, gpointer user_data); gboolean on_regexp_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data); gboolean on_regexp_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data); gboolean on_regexp_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data); gboolean on_fileName_focus (GtkWidget *widget, GtkDirectionType direction, gpointer user_data); gboolean on_regexp2_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data); void on_limitResultsCheckResults_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_showLinesCheckResults_toggled (GtkToggleButton *togglebutton, gpointer user_data); gboolean on_searchNotebook_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data); void on_limitContentsCheckResults_toggled (GtkToggleButton *togglebutton, gpointer user_data); void on_autoComplete_response (GtkDialog *dialog, gint response_id, gpointer user_data); gboolean on_LessThanSize_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data); gboolean on_MoreThanSize_focus_out_event (GtkWidget *widget, GdkEventFocus *event, gpointer user_data); searchmonkey-0.8.3/src/search.c0000664000175000017500000023344713236164300013350 00000000000000#ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include /* Luc A since janv 2018 in order to parse Office files */ #include #include #include #include #include /* end Luc A */ #include "interface.h" /* glade requirement */ #include "support.h" /* glade requirement */ #include "search.h" /* Local headers + global stuff */ #include "savestate.h" /* library to save/restore config.ini settings */ #include "regexwizard.h" /* regular expression builder wizard */ #include "systemio.h" /* System stuff, file import and export code */ #include "misc.h" /* Everything else */ /*mutexes for searchdata and searchControl->cancelSearch */ GStaticMutex mutex_Data = G_STATIC_MUTEX_INIT; /* Global mutex used by savestate.c too */ GStaticMutex mutex_Control = G_STATIC_MUTEX_INIT; /* Global mutex used by savestate.c too*/ /* it's very easy to improve the quality by changing the field icon_file_name */ static t_symstruct lookuptable[] = { { "txt-type", "icon-text-generic.png", FORMAT_TXT }, { "odt-type", "icon-odt.png", FORMAT_OFFICE_TEXT }, { "docx-type","icon-doc.png", FORMAT_OFFICE_TEXT }, { "rtf-type", "icon-word-processor.png", FORMAT_OFFICE_TEXT }, { "doc-type", "icon-doc.png", FORMAT_OFFICE_TEXT }, /* 5 */ { "abw-type", "icon-word-processor.png", FORMAT_OFFICE_TEXT }, { "ods-type", "icon-ods.png", FORMAT_OFFICE_SHEET }, { "xlsx-type", "icon-xls.png", FORMAT_OFFICE_SHEET }, { "xls-type", "icon-xls.png", FORMAT_OFFICE_SHEET }, { "odb-type", "icon-odb.png", FORMAT_OFFICE_BASE },/* 10*/ { "png-type", "icon-image.png", FORMAT_IMAGE }, { "jpg-type", "icon-image.png", FORMAT_IMAGE }, { "jpeg-type", "icon-image.png", FORMAT_IMAGE }, { "xcf-type", "icon-image.png", FORMAT_IMAGE }, { "pdf-type", "icon-pdf.png", FORMAT_PDF },/* 15 */ { "svg-type", "icon-drawing.png", FORMAT_SVG }, { "odg-type", "icon-odg.png", FORMAT_ODG }, { "csv-type", "icon-spreadsheet.png", FORMAT_CSV }, { "zip-type", "icon-archive.png", FORMAT_ZIP }, { "wav-type", "icon-audio.png", FORMAT_WAV },/* 20*/ { "mp3-type", "icon-audio.png", FORMAT_MP3 }, { "mp4-type", "icon-video.png", FORMAT_MP4 }, { "avi-type", "icon-video.png", FORMAT_AVI }, { "mkv-type", "icon-video.png", FORMAT_MKV }, { "otf-type", "icon-font.png", FORMAT_OTF },/* 25 */ { "ttf-type", "icon-font.png", FORMAT_TTF }, { "bz2-type", "icon-archive.png", FORMAT_BZ2 }, { "ppt-type", "icon-ppt.png", FORMAT_PPT }, { "deb-type", "icon-archive.png", FORMAT_DEB }, { "gz-type", "icon-archive.png", FORMAT_GZ },/* 30 */ { "rpm-type", "icon-archive.png", FORMAT_RPM }, { "sh-type", "icon-java.png", FORMAT_SH }, { "c-type", "icon-c.png", FORMAT_C }, { "xml-type", "icon-htm.png", FORMAT_XML }, { "htm-type", "icon-htm.png", FORMAT_HTML },/* 35 */ { "jar-type", "icon-java.png", FORMAT_JAR }, { "java-type", "icon-java.png", FORMAT_JAVA }, { "h-type", "icon-h.png", FORMAT_H }, { "rar-type", "icon-archive.png", FORMAT_RAR }, { "tif-type", "icon-image.png", FORMAT_TIFF }, /* 40*/ { "dng-type", "icon-image.png", FORMAT_DNG }, { "gif-type", "icon-image.png", FORMAT_GIF }, { "odp-type", "icon-odp.png", FORMAT_ODP }, { "js-type", "icon-java.png", FORMAT_JS }, { "css-type", "icon-htm.png", FORMAT_CSS },/* 45 */ { "tgz-type", "icon-archive.png", FORMAT_TGZ }, { "xpm-type", "icon-image.png", FORMAT_XPM }, { "unknown-type", "icon-unknown.png", FORMAT_OTHERS } }; // please update in search.h the #define MAX_FORMAT_LIST according to the size of this table - Luc A 1 janv 2018 #define NKEYS ( sizeof (lookuptable)/ sizeof(t_symstruct) ) /***************************** function to obtain infos about a PDF file We us many poppler funcs to obtain the infos at the same time the program passes the file, wich will be converted to URI format ****************************/ gchar *PDFCheckFile(gchar *path_to_file, gchar *path_to_tmp_file) { GError* err = NULL; gchar *uri_path; gchar *tmpfileToExtract = NULL; gchar *text_of_page = NULL; PopplerDocument *doc; PopplerPage *page; gint i, j; gint pdf_npages; /* integer used to store total amount of pages of the pdf file */ FILE *outputFile; /* first step : converting from path format to URI format */ uri_path = g_filename_to_uri(path_to_file, NULL,NULL); doc = poppler_document_new_from_file(uri_path, NULL, &err); if (!doc) { printf("%s\n", err->message); g_error_free(err); return NULL; } pdf_npages = poppler_document_get_n_pages(doc); /* printf("* This PDF has %d pages *\n", pdf_npages);*/ page = poppler_document_get_page(doc, 0);/* #0 = first page */ if(!page) { printf("* Could not open first page of document *\n"); g_object_unref(doc); return NULL; } outputFile = fopen(path_to_tmp_file,"w"); /* display text from pages */ for(i=0;i > & & for example, to keep " in the resulting text, we must search and replace every " found ***/ gchar *ODTCheckFile(gchar *path_to_file, gchar *path_to_tmp_file) { gint checkFile = 0; gint err, i; gint nto=0; /* number of files in zip archive */ gint exist_document_xml = -1; gchar buf[1024]; gchar *pBufferRead; gchar *tmpfileToExtract = NULL; FILE *outputFile; struct zip *archive; struct zip_file *fpz=NULL; struct zip_stat sbzip; gchar *str, c;/* for dynamic string allocation */ gint j=1; /* opens the doc-x file supposed to be zipped */ err=0; archive=zip_open(path_to_file,ZIP_CHECKCONS,&err); if(err != 0 || !archive) { zip_error_to_str(buf, sizeof(buf), err, errno); fprintf(stderr,"«%s» %d in function «%s» ,err=%d\n«%s»\n",__FILE__,__LINE__,__FUNCTION__,err,buf); return NULL; } nto = zip_get_num_entries(archive, ZIP_FL_UNCHANGED); // printf("l'archive contient:%d fichiers\n", nto); exist_document_xml = zip_name_locate(archive, "content.xml" ,0); if(exist_document_xml>-1) printf("* XML ODT document present in position:%d *\n", exist_document_xml); else { printf("* Error ! %s isn't an ODT file ! *\n", path_to_file); return NULL; } /* now we must open document.xml with this index number*/ fpz = zip_fopen_index(archive, exist_document_xml , 0); assert (fpz!=NULL);/* exit if somewhat wrong is happend */ /* we must know the size in bytes of document.xml */ if(zip_stat_index( archive, exist_document_xml, 0, &sbzip) == -1) { strcpy(buf,zip_strerror(archive)); fprintf(stderr,"«%s» %d in function «%s»\n«%s»\n",__FILE__,__LINE__,__FUNCTION__,buf); zip_fclose(fpz); zip_close(archive); return NULL; } /* copy document.xml to system TEMPDIR */ pBufferRead = g_malloc(sbzip.size*sizeof(gchar)+sizeof(gchar)); assert(pBufferRead != NULL); /* read all datas in buffer p and extract the document.xml file from doc-x, in memory */ if(zip_fread(fpz, pBufferRead , sbzip.size) != sbzip.size) { fprintf(stderr,"«%s» %d in function «%s»\n«read error ...»\n",__FILE__,__LINE__,__FUNCTION__); g_free(pBufferRead); zip_fclose(fpz); zip_close(archive); return NULL; }/* erreur */ /* in the TEMPDIR directory ! */ outputFile = fopen(path_to_tmp_file,"w"); /* parse and convert to pure text the document.xml */ str = (gchar*)g_malloc(sizeof(gchar)); i=0; while(i",9* sizeof(gchar)) == 0 ) { str = (gchar*)realloc(str, j * sizeof(gchar)); str[j-1] = '\n'; j++; i = i+9*sizeof(gchar); } else i = i+sizeof(gchar); } while ( g_ascii_strncasecmp ((gchar*) &pBufferRead[i],">", sizeof(gchar)) !=0); i= i+sizeof(gchar); }/* if */ else /* we have now to escape 5 special chars */ { if(g_ascii_strncasecmp ((gchar*) &pBufferRead[i],"'",6* sizeof(gchar)) == 0 ) { str = (gchar*)realloc(str, j * sizeof(gchar)); str[j-1] = '\''; j++; i = i+6*sizeof(gchar); } else if(g_ascii_strncasecmp ((gchar*) &pBufferRead[i],""",6* sizeof(gchar)) == 0 ) { str = (gchar*)realloc(str, j * sizeof(gchar)); str[j-1] = '"'; j++; i = i+6*sizeof(gchar); } else if(g_ascii_strncasecmp ((gchar*) &pBufferRead[i],"<",4* sizeof(gchar)) == 0 ) { str = (gchar*)realloc(str, j * sizeof(gchar)); str[j-1] = '<'; j++; i = i+4*sizeof(gchar); } else if(g_ascii_strncasecmp ((gchar*) &pBufferRead[i],">",4* sizeof(gchar)) == 0 ) { str = (gchar*)realloc(str, j * sizeof(gchar)); str[j-1] = '>'; j++; i = i+4*sizeof(gchar); } else if(g_ascii_strncasecmp ((gchar*) &pBufferRead[i],"&",5* sizeof(gchar)) == 0 ) { str = (gchar*)realloc(str, j * sizeof(gchar)); str[j-1] = '&'; j++; i = i+5*sizeof(gchar); } else { c = (gchar)pBufferRead[i]; // printf("%c", c); str = (gchar*)realloc(str, j * sizeof(gchar)); str[j-1] = c; j++; // fwrite(&c , sizeof(gchar), 1, outputFile); i= i+sizeof(gchar); } }/* else */ }/* wend */ // printf("j=%d strlen =%d \n", j, strlen(str)); // str[j-1] = '\0'; // at the end append null character to mark end of string fwrite(str , sizeof(gchar), strlen(str), outputFile); /* close the parsed file and clean datas*/ tmpfileToExtract = g_strdup_printf("%s", path_to_tmp_file); fclose(outputFile); if(str!=NULL) { g_free(str); str = NULL; } if (pBufferRead != NULL) g_free (pBufferRead) ; /* discharge the datas of document.xml from memory */ zip_fclose(fpz);/* close access to file in archive */ zip_close(archive); /* close the doc-x file itself */ return tmpfileToExtract; } /* Doc-X files : read a supposed docx file, unzip it, check if contains the stuff for a Doc-X word file * entry1 = path to the supposed doc-x file * entry 2 = path to a filename, text coded located in system TEMPDIR * return ; path to the Word content or NULL if not a true Doc-x file * NOTE : chars inside the doc-x are already coded in UTF-8 or extended ASCII with accented chars ***/ gchar *DocXCheckFile(gchar *path_to_file, gchar *path_to_tmp_file) { gint checkFile = 0; gint err, i; gint nto=0; /* number of files in zip archive */ gint exist_document_xml = -1; gchar buf[1024]; gchar *pBufferRead = NULL; gchar *tmpfileToExtract = NULL; FILE *outputFile; struct zip *archive; struct zip_file *fpz=NULL; struct zip_stat sbzip; gchar *str, c;/* for dynamic string allocation */ glong j=1; /* security, because raw file content may be longer in bytes than $FFFF (if I apply my old knowledge from 8 bits ;-) */ /* opens the doc-x file supposed to be zipped */ err=0;https://fr.wikibooks.org/wiki/Programmation_C/Types_de_base archive=zip_open(path_to_file,ZIP_CHECKCONS,&err); if(err != 0 || !archive) { zip_error_to_str(buf, sizeof(buf), err, errno); fprintf(stderr,"«%s» %d in function «%s» ,err=%d\n«%s»\n",__FILE__,__LINE__,__FUNCTION__,err,buf); return NULL; } nto = zip_get_num_entries(archive, ZIP_FL_UNCHANGED); /* checking if this is really a Word archive : in this cas, the doc-x mus contain a subdirectory /word containg document.xml file like this "word/document.xml"*/ exist_document_xml = zip_name_locate(archive, "word/document.xml" ,0); if(exist_document_xml>-1) printf("* XML Word document present in position:%d *\n", exist_document_xml); else { printf("* Error ! %s isn't a Doc-X file ! *\n", path_to_file); return NULL; } /* now we must open document.xml with this index number*/ fpz = zip_fopen_index(archive, exist_document_xml , 0); assert (fpz!=NULL);/* exit if somewhat wrong is happend */ /* we must know the size in bytes of document.xml */ if(zip_stat_index( archive, exist_document_xml, 0, &sbzip) == -1) { strcpy(buf,zip_strerror(archive)); fprintf(stderr,"«%s» %d in function «%s»\n«%s»\n",__FILE__,__LINE__,__FUNCTION__,buf); zip_fclose(fpz); zip_close(archive); return NULL; } /* copy document.xml to system TEMPDIR */ pBufferRead = g_malloc(sbzip.size*sizeof(gchar)+1); assert(pBufferRead != NULL); /* read all datas in buffer p and extract the document.xml file from doc-x, in memory */ if(zip_fread(fpz, pBufferRead , sbzip.size) != sbzip.size) { fprintf(stderr,"«%s» %d in function «%s»\n«read error ...»\n",__FILE__,__LINE__,__FUNCTION__); g_free(pBufferRead); zip_fclose(fpz); zip_close(archive); return NULL; }/* erreur */ outputFile = fopen(path_to_tmp_file,"w"); /* parse and convert to pure text the document.xml */ str = (gchar*)g_malloc(sizeof(gchar)); i=0; while(i",6* sizeof(gchar)) == 0 ) { str = (gchar*)realloc(str, j * sizeof(gchar)); str[j-1] = '\n'; j++; i = i+6*sizeof(gchar); } else i = i+sizeof(gchar); } while ( g_ascii_strncasecmp ((gchar*) &pBufferRead[i],">", sizeof(gchar)) !=0); i= i+sizeof(gchar); }/* if */ else { c = (gchar)pBufferRead[i]; // printf("%c", c); str = (gchar*)realloc(str, j * sizeof(gchar)); str[j-1] = c; j++; i= i+sizeof(gchar); }/* else */ }/* wend */ fwrite(str , sizeof(gchar), strlen(str), outputFile); /* close the parsed file and clean datas*/ tmpfileToExtract = g_strdup_printf("%s", path_to_tmp_file);// pourquoi plantage ici ???? fclose(outputFile); if(str!=NULL) /* il y a un pb sur str dans certains cas ! */ g_free(str); if(pBufferRead!=NULL) g_free (pBufferRead) ; /* discharge the datas of document.xml from memory */ zip_fclose(fpz);/* close access to file in archive */ zip_close(archive); /* close the doc-x file itself */ return tmpfileToExtract; } /* /* function to convert a gchar extension type file in gint to switch /* Luc A - 1 janv 2018 from URL = https://stackoverflow.com/questions/4014827/best-way-to-switch-on-a-string-in-c #22 post // please update in search.h the #define MAX_FORMAT_LIST according to the size of this table - Luc A 1 janv 2018 */ gint keyfromstring(gchar *key2) { gint i, i_comp; for(i=0;ipFileType We must remove the 5 last chars, which can be -type or ~type Luc A. - Janv 2018 *****************************************************/ GdkPixbuf *get_icon_for_display(gchar *stype) { GdkPixbuf *icon = NULL; /* Luc A - 1 janv 2018 */ GError *error = NULL; gchar *str_lowcase = NULL; gchar *str_icon_file = NULL; gint i; /* we must insure that stype is in low case, and we remove the 5 last chars */ // str_lowcase = g_ascii_strdown (stype, -1); i = keyfromstring(stype);/* the g_ascii_strn() function is case independant */ // g_free(str_lowcase); str_icon_file = g_strconcat(PACKAGE_DATA_DIR, "/pixmaps/", PACKAGE, "/", lookuptable[i].icon_file_name, NULL); icon = gdk_pixbuf_new_from_file(str_icon_file, &error); if (error) { g_warning ("Could not load icon: %s\n", error->message); g_error_free(error); error = NULL; } g_free(str_icon_file); /* luc A. */ return icon; } /* * Internal Helper: Converts the date/modified criteria into internal data format */ void getSearchExtras(GtkWidget *widget, searchControl *mSearchControl) { const gchar *after = gtk_entry_get_text(GTK_ENTRY(lookup_widget(widget, "afterEntry"))); const gchar *before = gtk_entry_get_text(GTK_ENTRY(lookup_widget(widget, "beforeEntry"))); const gchar *moreThan = gtk_entry_get_text(GTK_ENTRY(lookup_widget(widget, "moreThanEntry"))); const gchar *lessThan = gtk_entry_get_text(GTK_ENTRY(lookup_widget(widget, "lessThanEntry"))); const gint tmpDepth = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(lookup_widget(widget, "folderDepthSpin"))); const gint tmpLimit = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(lookup_widget(widget, "maxHitsSpinResults"))); const gint tmpContentLimit = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(lookup_widget(widget, "maxContentHitsSpinResults"))); const gint tmpLines = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(lookup_widget(widget, "showLinesSpinResults"))); /* Luc A - janv 2018 */ gint kb_multiplier_more_than = gtk_combo_box_get_active( GTK_COMBO_BOX(lookup_widget(widget,"MoreThanSize"))); gint kb_multiplier_less_than = gtk_combo_box_get_active( GTK_COMBO_BOX(lookup_widget(widget,"LessThanSize"))); gdouble tmpDouble, tmpMultiplierLess, tmpMultiplierMore, tmpMoreThan =0, tmpLessThan=0; gint i; GDate DateAfter, DateBefore; gchar buffer[MAX_FILENAME_STRING + 1]; struct tm tptr; gchar *endChar; /* get current size values */ if(moreThan!=NULL ) tmpMoreThan = strtod(moreThan, &endChar); if(lessThan!=NULL) tmpLessThan = strtod(lessThan, &endChar); /* convert the current size Unit to Kb */ if(kb_multiplier_more_than<0) kb_multiplier_more_than = 0; if(kb_multiplier_less_than<0) kb_multiplier_less_than = 0; tmpMultiplierLess = 1; tmpMultiplierMore = 1; for(i=0;inumExtraLines = 0; mSearchControl->flags |= SEARCH_EXTRA_LINES; return; } /* Read extra lines spin box */ mSearchControl->numExtraLines = tmpLines; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "showLinesCheckResults")))) { mSearchControl->flags |= SEARCH_EXTRA_LINES; } /* Read result limit option */ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "limitContentsCheckResults")))) { mSearchControl->limitContentResults = tmpContentLimit; mSearchControl->flags |= SEARCH_LIMIT_CONTENT_SHOWN; } /* Read result limit option */ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "limitResultsCheckResults")))) { mSearchControl->limitResults = tmpLimit; mSearchControl->flags |= LIMIT_RESULTS_SET; } /* Read folder depth setting */ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "folderDepthCheck")))) { mSearchControl->folderDepth = tmpDepth; mSearchControl->flags |= DEPTH_RESTRICT_SET; } /* Read file min/max size strings */ if ((gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "moreThanCheck")))) && (moreThan != NULL)) { tmpDouble = strtod(moreThan, &endChar); if (tmpDouble <= 0) { miscErrorDialog(widget, _("Error!\n\nMoreThan file size must be positive value\nSo this criteria will not be used.\n\nPlease, check your entry and the units.")); return; } if ((gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "lessThanCheck")))) && (tmpMoreThan >=tmpLessThan)) { miscErrorDialog(widget, _("Error!\n\nMoreThan file size must be stricly inferior to LessThan file size.So this criteria will not be used.\n\nPlease, check your entry and the units.")); return; } g_ascii_formatd (buffer, MAX_FILENAME_STRING, "%1.1f", tmpDouble); gtk_entry_set_text(GTK_ENTRY(lookup_widget(widget, "moreThanEntry")), buffer); mSearchControl->moreThan = (gsize)(tmpMultiplierMore*1024 * tmpDouble);/* modif Luc A janv 2018 */ mSearchControl->flags |= SEARCH_MORETHAN_SET; } if ((gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "lessThanCheck")))) && (lessThan != NULL)) { tmpDouble = strtod (lessThan, &endChar); if (tmpDouble <= 0) { miscErrorDialog(widget, _("Error!\n\nLessThan file size must be positive value\nSo this criteria will not be used.\n\nPlease, check your entry and the units.")); return; } if ((gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "moreThanCheck")))) && (tmpMoreThan >=tmpLessThan)) { miscErrorDialog(widget, _("Error!\n\nMoreThan file size must be stricly inferior to LessThan file size.So this criteria will not be used.\n\nPlease, check your entry and the units.")); return; } g_ascii_formatd (buffer, MAX_FILENAME_STRING, "%1.1f", tmpDouble); gtk_entry_set_text(GTK_ENTRY(lookup_widget(widget, "lessThanEntry")), buffer); mSearchControl->lessThan = (gsize)(tmpMultiplierLess*1024 * tmpDouble); mSearchControl->flags |= SEARCH_LESSTHAN_SET; } /* Read date strings */ if ((gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "afterCheck")))) && ((after != NULL) && (after != '\0'))) { g_date_set_parse(&DateAfter, after); if (!g_date_valid(&DateAfter)) { miscErrorDialog(widget,_("Error!\n\nInvalid 'After'date - format as dd/mm/yyyy or dd mmm yy.")); return; } if (g_date_strftime(buffer, MAX_FILENAME_STRING, _("%x"), &DateAfter) > 0) { gtk_entry_set_text(GTK_ENTRY(lookup_widget(widget, "afterEntry")), buffer); } setTimeFromDate(&tptr, &DateAfter); mSearchControl->after = mktime(&tptr); mSearchControl->flags |= SEARCH_AFTER_SET; } if ((gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "beforeCheck")))) && ((before != NULL) && (before != '\0'))) { g_date_set_parse(&DateBefore, before); if (!g_date_valid(&DateBefore)) { miscErrorDialog(widget, _("Error!\n\nInvalid 'Before' date - format as dd/mm/yyyy or dd mmm yy.")); return; } if (g_date_strftime(buffer, MAX_FILENAME_STRING, _("%x"), &DateBefore) > 0) { gtk_entry_set_text(GTK_ENTRY(lookup_widget(widget, "beforeEntry")), buffer); } setTimeFromDate(&tptr, &DateBefore); mSearchControl->before = mktime(&tptr); mSearchControl->flags |= SEARCH_BEFORE_SET; } if((g_date_valid(&DateAfter)) && (g_date_valid(&DateBefore) ) ) { if( (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "beforeCheck")))) && (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "afterCheck"))))) { gint cmp_date = g_date_compare (&DateAfter,&DateBefore);/* returns 1 if the first is wrong, i.e. after last, 0 if equal */ if(cmp_date>=0) { miscErrorDialog(widget, _("Error!\n\nDates mismatch ! 'Before than' date must be more recent than 'After than' date.\nSearch can't proceed correctly !\nPlease check the dates.")); return; } } } } /* * Internal helper: scans the form, and converts all text entries into internal strings/dates/integers etc. * For example if the user provides a file name, then the equivalent regex is stored locally */ void getSearchCriteria(GtkWidget *widget, searchControl *mSearchControl) { mSearchControl->fileSearchIsRegEx = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "regularExpressionRadioFile"))); /* Grab the filename, containing, and look-in entries */ if (getExpertSearchMode(widget)) { /* If expert mode */ mSearchControl->textSearchRegEx = (gchar *)gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(lookup_widget(widget, "containingText"))); mSearchControl->fileSearchRegEx = (gchar *)gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(lookup_widget(widget, "fileName"))); mSearchControl->startingFolder = comboBoxReadCleanFolderName(GTK_COMBO_BOX(lookup_widget(widget, "lookIn"))); } else { /* in basic mode */ mSearchControl->textSearchRegEx = (gchar *)gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(lookup_widget(widget, "containingText2"))); mSearchControl->fileSearchRegEx = (gchar *)gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(lookup_widget(widget, "fileName2"))); mSearchControl->startingFolder = comboBoxReadCleanFolderName(GTK_COMBO_BOX(lookup_widget(widget, "lookIn2"))); } } /* * Internal helper: scans the form, and converts all checkboxes to their flag equivalent * For example, if the user unchecks the "recurse folders" toggle, then a flag needs to be set. */ void getSearchFlags(GtkWidget *widget, searchControl *mSearchControl) { /* Set defaults here */ mSearchControl->flags = 0; /* Disable all flags */ mSearchControl->textSearchFlags = REG_NEWLINE; /* Force search to treat newlines appropriately */ /* Store the search specific options */ if (getExpertSearchMode(widget)) { /* If expert mode */ if ((gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "containingTextCheck")))) && (*mSearchControl->textSearchRegEx != '\0')) { mSearchControl->flags |= SEARCH_TEXT_CONTEXT; /* Allow context switching */ } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "searchSubfoldersCheck")))) { mSearchControl->flags |= SEARCH_SUB_DIRECTORIES; /* Allow sub-directory searching */ } } else { /* Simple mode */ if ((gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "containingTextCheck2")))) && (*mSearchControl->textSearchRegEx != '\0')) { mSearchControl->flags |= SEARCH_TEXT_CONTEXT; /* Allow context switching */ } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "searchSubfoldersCheck2")))) { mSearchControl->flags |= SEARCH_SUB_DIRECTORIES; /* Allow sub-directory searching */ } } /* Store the common options */ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "notExpressionCheckFile")))) { mSearchControl->flags |= SEARCH_INVERT_FILES; /* Invert the search on File names e.g. find everything but abc */ } if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "matchCaseCheckFile")))) { mSearchControl->fileSearchFlags |= REG_ICASE; } if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "ignoreHiddenFiles")))) { mSearchControl->flags |= SEARCH_HIDDEN_FILES; /* Allow hidden searching */ } mSearchControl->fileSearchFlags |= REG_NOSUB; if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "matchCaseCheckContents")))) { mSearchControl->textSearchFlags |= REG_ICASE; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "followSymLinksCheck"))) == FALSE) { mSearchControl->flags |= SEARCH_SKIP_LINK_FILES; } /* Store the user preferences */ if (getExtendedRegexMode(widget)) { mSearchControl->fileSearchFlags |= REG_EXTENDED; mSearchControl->textSearchFlags |= REG_EXTENDED; } } /************************************************************* * Main search entry points (not threaded) *************************************************************/ /* * Callback helper: search started by GUI button press from user. * Creates storage arrays, validates user entries, and copies all * settings to memory before kicking off the POSIX search thread. * TODO: More validation is required at time of user entry to simplify this code. * TODO: User entry needs converting to UTF-8 valid text. * TODO: Create multiple functions from code, as this is definitely too long a function! */ void start_search_thread(GtkWidget *widget) { // GThread *threadId; /* Thread ID */ searchControl *mSearchControl; GObject *window1 = G_OBJECT(mainWindowApp); gchar *tmpChar; guint tmpInt; gchar buffer[MAX_FILENAME_STRING + 1]; gchar *tmpStr; GKeyFile *keyString = getGKeyFile(widget); GtkWidget *dialog; GtkTreeView *listView; GtkListStore *sortedModel; /* Clear results prior to resetting data */ if (getResultsViewHorizontal(widget)) { listView = GTK_TREE_VIEW(lookup_widget(widget, "treeview1")); } else { listView = GTK_TREE_VIEW(lookup_widget(widget, "treeview2")); } sortedModel = GTK_LIST_STORE(gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(gtk_tree_view_get_model(listView)))); g_assert(sortedModel != NULL); gtk_list_store_clear(sortedModel); /* Create user data storage & control (automatic garbage collection) */ createSearchData(window1, MASTER_SEARCH_DATA); createSearchControl(window1, MASTER_SEARCH_CONTROL); mSearchControl = g_object_get_data(window1, MASTER_SEARCH_CONTROL); mSearchControl->cancelSearch = FALSE; /* reset cancel signal */ /* Store the form data within mSearchControl */ mSearchControl->widget = GTK_WIDGET(window1); /* Store pointer to the main windows */ getSearchCriteria(widget, mSearchControl); /* Store the user entered criteria */ getSearchFlags(widget, mSearchControl); /* Store the user set flags */ getSearchExtras(mainWindowApp, mSearchControl); /* Store the extended criteria too */ /* Test starting folder exists */ if ((mSearchControl->startingFolder == NULL) || (*(mSearchControl->startingFolder) == '\0')) { dialog = gtk_message_dialog_new (GTK_WINDOW(window1), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Error! Look In directory cannot be blank.")); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); return; } if (!g_file_test(mSearchControl->startingFolder, G_FILE_TEST_IS_DIR)) { dialog = gtk_message_dialog_new (GTK_WINDOW(window1), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Error! Look In directory is invalid.")); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); return; } /* Test fileSearchRegEx reg expression is valid */ if (mSearchControl->fileSearchIsRegEx) { if (test_regexp(mSearchControl->fileSearchRegEx, mSearchControl->fileSearchFlags, _("Error! Invalid File Name regular expression")) == FALSE) { return; } } /* Test textSearchRegEx reg expression is valid */ if (test_regexp(mSearchControl->textSearchRegEx, mSearchControl->textSearchFlags, _("Error! Invalid Containing Text regular expression")) == FALSE) { return; } /* Store the text strings (once validated) into the combo boxes */ if (getExpertSearchMode(widget)) { addUniqueRow(lookup_widget(widget, "fileName"), mSearchControl->fileSearchRegEx); addUniqueRow(lookup_widget(widget, "containingText"), mSearchControl->textSearchRegEx); addUniqueRow(lookup_widget(widget, "lookIn"), mSearchControl->startingFolder); } else { addUniqueRow(lookup_widget(widget, "fileName2"), mSearchControl->fileSearchRegEx); addUniqueRow(lookup_widget(widget, "containingText2"), mSearchControl->textSearchRegEx); addUniqueRow(lookup_widget(widget, "lookIn2"), mSearchControl->startingFolder); } /* modifiy windows' title according to research criteria */ gtk_window_set_title (GTK_WINDOW(window1), g_strdup_printf(_("Searchmonkey : search in %s/"), mSearchControl->startingFolder));/* Luc A - janv 2018 */ /* create the search thread */ g_thread_create (walkDirectories, window1, FALSE, NULL); // threadId = g_thread_create (walkDirectories, window1, FALSE, NULL); } /* * Callback helper: search stopped (at any time) by GUI button press from user. */ void stop_search_thread(GtkWidget *widget) { searchControl *mSearchControl; GObject *window1 = G_OBJECT(lookup_widget(widget, "window1")); mSearchControl = g_object_get_data(window1, MASTER_SEARCH_CONTROL); g_static_mutex_lock(&mutex_Control); mSearchControl->cancelSearch = TRUE; g_static_mutex_unlock(&mutex_Control); /* modifiy windows' title according to research criteria */ gtk_window_set_title (GTK_WINDOW(window1), _("Aborting research-Searchmonkey"));/* Luc A - janv 2018 - the order if VOLONTARY inverted to keep attention */ } /************************************************************* * Main search POSIX thread *************************************************************/ /* * POSIX thread entry point for main search loop. * This function takes pointer to main application window. * Returns 0 on sucess (always). */ void *walkDirectories(void *args) { GObject *object = args; /* Get GObject pointer from args */ searchControl *mSearchControl; /* Master status bar */ searchData *mSearchData; /* Master search data */ statusbarData *status; /* Master status bar */ glong matchCount; GtkTreeView *listView; GtkTextView *textView; GtkListStore *sortedModel; GtkTextBuffer *textBuffer; g_static_mutex_lock(&mutex_Data); gdk_threads_enter (); mSearchData = g_object_get_data(object, MASTER_SEARCH_DATA); mSearchControl = g_object_get_data(object, MASTER_SEARCH_CONTROL); status = g_object_get_data(object, MASTER_STATUSBAR_DATA); gdk_threads_leave (); g_assert(mSearchData != NULL); g_assert(mSearchControl != NULL); g_assert(status != NULL); /* Disable the Go button */ /* Disable go button, enable stop button.. */ gdk_threads_enter (); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "playButton1"), FALSE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "playButton2"), FALSE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "playButton3"), FALSE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "stopButton1"), TRUE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "stopButton2"), TRUE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "stopButton3"), TRUE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "saveResults"), FALSE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "save_results1"), FALSE); gdk_threads_leave (); if (getResultsViewHorizontal(mSearchControl->widget)) { listView = GTK_TREE_VIEW(lookup_widget(mSearchControl->widget, "treeview1")); textView = GTK_TEXT_VIEW(lookup_widget(mSearchControl->widget, "textview1")); } else { listView = GTK_TREE_VIEW(lookup_widget(mSearchControl->widget, "treeview2")); textView = GTK_TEXT_VIEW(lookup_widget(mSearchControl->widget, "textview4")); } textBuffer = gtk_text_view_get_buffer (textView); gtk_text_buffer_set_text(textBuffer, "", -1); /* Clear text! */ sortedModel = GTK_LIST_STORE(gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(gtk_tree_view_get_model(listView)))); g_assert(sortedModel != NULL); mSearchData->store = sortedModel; matchCount = phaseOneSearch(mSearchControl, mSearchData, status); if (matchCount > 0) { gboolean phasetwo; g_static_mutex_lock(&mutex_Control); phasetwo = ((mSearchControl->cancelSearch == FALSE) && ((mSearchControl->flags & SEARCH_TEXT_CONTEXT) != 0)); g_static_mutex_unlock(&mutex_Control); if (phasetwo) { matchCount = phaseTwoSearch(mSearchControl, mSearchData, status); } } updateStatusFilesFound(matchCount, status, mSearchControl); /* Re-enable the go button */ gdk_threads_enter (); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "playButton1"), TRUE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "playButton2"), TRUE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "playButton3"), TRUE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "stopButton1"), FALSE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "stopButton2"), FALSE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "stopButton3"), FALSE); if (matchCount > 0) { gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "saveResults"), TRUE); gtk_widget_set_sensitive(lookup_widget(mSearchControl->widget, "save_results1"), TRUE); } gdk_threads_leave (); g_static_mutex_unlock(&mutex_Data); g_thread_exit (GINT_TO_POINTER(0)); } /* * POSIX threaded: phase one of main search loop. * This function searches for all of the matching file names in the specified folder. * Returns number of file matches found. */ glong phaseOneSearch(searchControl *mSearchControl, searchData *mSearchData, statusbarData *status) { GtkStatusbar *statusbar = GTK_STATUSBAR(lookup_widget(mSearchControl->widget, "statusbar1")); GPtrArray *scanDirStack; /* Pointer to the current open directory lister */ GPtrArray *curDirStack; /* Pointer to the current folder base name (as a stack) */ gchar *tmpFileName; /* Pointer to the current file name or sub-directory name returned by scanDirStack */ gchar *tmpFullFileName; /* Pointer to the full filename or directory provided by */ regex_t searchRegEx; GPatternSpec *searchGlob; gchar *tString; glong matchCount = 0; GTimeVal phaseOneStartTime, phaseOneMidTime; GtkProgressBar *pbar = GTK_PROGRESS_BAR(lookup_widget(GTK_WIDGET(mainWindowApp), "progressbar1")); gint i = 0; gdouble deltaTime; gint Icount = 0; gboolean stopSearch; gint result; gboolean symlink = FALSE; /* TRUE if file currently being tested is a symlink */ gchar *pStrChunk; GError *dirOpenError = NULL; char *pCurDirStack; /* Compile the regular expression */ if (mSearchControl->fileSearchIsRegEx) { regcomp(&searchRegEx, mSearchControl->fileSearchRegEx, mSearchControl->fileSearchFlags); } else { if ((mSearchControl->fileSearchFlags & REG_ICASE )== 0) { searchGlob = g_pattern_spec_new(mSearchControl->fileSearchRegEx); } else { searchGlob = g_pattern_spec_new(g_utf8_strdown(mSearchControl->fileSearchRegEx, -1)); } } /* Initialise stacks */ curDirStack = g_ptr_array_new(); scanDirStack = g_ptr_array_new(); /* Copy base directory out */ pStrChunk = g_string_chunk_insert_const(mSearchData->locationChunk, mSearchControl->startingFolder); g_ptr_array_add(curDirStack, pStrChunk); g_ptr_array_add(scanDirStack, g_dir_open(pStrChunk, 0, NULL)); g_snprintf(status->constantString, MAX_FILENAME_STRING, _("Phase 1 searching %s"), pStrChunk); gdk_threads_enter (); gtk_statusbar_push(statusbar, STATUSBAR_CONTEXT_ID(statusbar), g_string_chunk_insert(status->statusbarChunk, status->constantString)); gdk_threads_leave (); g_static_mutex_lock(&mutex_Control); stopSearch = mSearchControl->cancelSearch; g_static_mutex_unlock(&mutex_Control); while ((curDirStack->len > 0) && (stopSearch == FALSE)) { if (((mSearchControl->flags & SEARCH_TEXT_CONTEXT) == 0) && ((mSearchControl->flags & LIMIT_RESULTS_SET) != 0) && (matchCount == mSearchControl->limitResults)) { break; } /* Test how long this process has been going for after a few loops to calculate the break point */ i++; if (i == PBAR_SHOW_IF_MIN) { g_get_current_time (&phaseOneStartTime); } else if (i == (2 * PBAR_SHOW_IF_MIN)) { g_get_current_time (&phaseOneMidTime); /* Calculate number of loops to pulse bar every 500ms/MULTIPLIER */ gdouble deltaTime = (phaseOneMidTime.tv_sec - phaseOneStartTime.tv_sec); deltaTime += ((gdouble)(phaseOneMidTime.tv_usec - phaseOneStartTime.tv_usec) / 1000000); deltaTime = PBAR_SHOW_IF_MIN/(PHASE_ONE_PBAR_PULSE_MULTILPIER * deltaTime); Icount = (gint)(deltaTime); gdk_threads_enter (); gtk_progress_bar_set_text(pbar, ""); /* Clear it first*/ gdk_threads_leave (); } /* Once started, pulse until done */ if (Icount > 0) { if ((i % Icount) == 0) { gdk_threads_enter (); gtk_progress_bar_pulse(pbar); gdk_threads_leave (); } } /* Get next file from the current scan directory */ tmpFileName = g_strdup(g_dir_read_name(GET_LAST_PTR(scanDirStack))); if (tmpFileName == NULL) { gdk_threads_enter (); gtk_statusbar_pop(statusbar, STATUSBAR_CONTEXT_ID(statusbar)); gdk_threads_leave (); g_dir_close(DEL_LAST_PTR(scanDirStack)); DEL_LAST_PTR(curDirStack); g_free(tmpFileName); continue; } /* Check if file name is actually a folder name */ pCurDirStack = GET_LAST_PTR(curDirStack); if ((pCurDirStack[0] == '/') && (pCurDirStack[1] == '\0')) { tmpFullFileName = g_strconcat(pCurDirStack, tmpFileName, NULL); } else { tmpFullFileName = g_strconcat(pCurDirStack, G_DIR_SEPARATOR_S, tmpFileName, NULL); } /* Replace data with symbolic link*/ if (g_file_test(tmpFullFileName, G_FILE_TEST_IS_SYMLINK)) { if ((mSearchControl->flags & SEARCH_SKIP_LINK_FILES) == 0) { symlink = symLinkReplace(&tmpFullFileName, &tmpFileName); if (!symlink) { /* not a valid symlink, so skip through */ g_free(tmpFullFileName); g_free(tmpFileName); continue; } } else { /* User requested to skip symlinks */ g_free(tmpFullFileName); g_free(tmpFileName); continue; } } /* Check for hidden files (unless overriden by user) */ if ((mSearchControl->flags & SEARCH_HIDDEN_FILES) == 0) { if (*tmpFileName == '.') { g_free(tmpFullFileName); g_free(tmpFileName); continue; } } /* Start working with the new folder name */ if (g_file_test(tmpFullFileName, G_FILE_TEST_IS_DIR)) { if (((mSearchControl->flags & SEARCH_SUB_DIRECTORIES) != 0) && (((mSearchControl->flags & DEPTH_RESTRICT_SET) == 0) || (mSearchControl->folderDepth > (curDirStack->len -1)))) { g_snprintf(status->constantString, MAX_FILENAME_STRING, _("Phase 1 searching %s"), tmpFullFileName); gdk_threads_enter (); gtk_statusbar_push(statusbar, STATUSBAR_CONTEXT_ID(statusbar), g_string_chunk_insert(status->statusbarChunk, status->constantString)); gdk_threads_leave (); tString = g_string_chunk_insert_const(mSearchData->locationChunk, tmpFullFileName); g_ptr_array_add(curDirStack, tString); g_ptr_array_add(scanDirStack, g_dir_open(tString, 0, &dirOpenError)); if (GET_LAST_PTR(scanDirStack) == NULL) { g_print(_("%s %s\n"), dirOpenError->message, tString); g_clear_error(&dirOpenError); DEL_LAST_PTR(curDirStack); DEL_LAST_PTR(scanDirStack); } } } else { /* Otherwise, a filename has been found */ if (mSearchControl->fileSearchIsRegEx) { result = regexec(&searchRegEx, tmpFileName, 0, NULL, 0); } else { gchar * tmpMatchString; if ((mSearchControl->fileSearchFlags & REG_ICASE) ==0) { tmpMatchString = g_filename_to_utf8(tmpFileName, -1, NULL, NULL, NULL); } else { tmpMatchString = g_utf8_strdown(g_filename_to_utf8(tmpFileName, -1, NULL, NULL, NULL), -1); } if (g_pattern_match(searchGlob, g_utf8_strlen(tmpMatchString, -1), tmpMatchString, NULL)) { result = 0; } else { result = 1; } } if ((((mSearchControl->flags & SEARCH_INVERT_FILES) == 0) && (result == 0)) || (((mSearchControl->flags & SEARCH_INVERT_FILES) != 0) && (result != 0))) { if (statMatchPhase(tmpFullFileName, mSearchControl)) { g_ptr_array_add(mSearchData->fullNameArray, g_strdup(tmpFullFileName)); g_ptr_array_add(mSearchData->fileNameArray, g_strdup(tmpFileName)); g_ptr_array_add(mSearchData->pLocationArray, GET_LAST_PTR(curDirStack)); matchCount ++; if ((mSearchControl->flags & SEARCH_TEXT_CONTEXT) == 0) { displayQuickMatch(mSearchControl, mSearchData); } } } } /* Update cancel search detection, free tmp strings, and reset symlink flag */ g_static_mutex_lock(&mutex_Control); stopSearch = mSearchControl->cancelSearch; g_static_mutex_unlock(&mutex_Control); g_free(tmpFullFileName); g_free(tmpFileName); symlink = FALSE; } /* Clean up status/progress bar */ g_static_mutex_lock(&mutex_Control); stopSearch = mSearchControl->cancelSearch; g_static_mutex_unlock(&mutex_Control); if (((mSearchControl->flags & SEARCH_TEXT_CONTEXT) == 0) || (stopSearch == TRUE)){ updateStatusFilesFound(matchCount, status, mSearchControl); } gdk_threads_enter (); gtk_progress_bar_set_fraction(pbar, 0); gdk_threads_leave (); /* Clean up memory bar now! */ g_ptr_array_free(curDirStack, TRUE); g_ptr_array_free(scanDirStack, TRUE); if (mSearchControl->fileSearchIsRegEx) { regfree(&searchRegEx); } else { g_pattern_spec_free(searchGlob); } return matchCount; } /* * POSIX threaded: phase two of main search loop. * This function searches for contents within each of the files found in phase one. * Returns number of content matches found. Always <= phase 2 match count. */ glong phaseTwoSearch(searchControl *mSearchControl, searchData *mSearchData, statusbarData *status) { GtkStatusbar *statusbar = GTK_STATUSBAR(lookup_widget(mSearchControl->widget, "statusbar1")); glong matchCount=0; gint i; gsize length; gchar *tmpFileName, *contents; regex_t search; textMatch *newMatch; GtkProgressBar *pbar = GTK_PROGRESS_BAR(lookup_widget(GTK_WIDGET(mainWindowApp), "progressbar1")); gint pbarNudge; gdouble pbarNudgeCount = 0; gdouble pbarIncrement; gchar pbarNudgeCountText[6]; /* Stores "100%" worst case.. */ gboolean stopSearch; gint spinButtonValue = 0; gchar *tmpExtractedFile = NULL; /* the gchar* to switch the filenames if it's an Office File */ gboolean fDeepSearch = FALSE; /* special flag armed when we search inside complex files like Docx, ODT, PDF ... in order to keep the "true" filename for status bar */ gboolean fIsOffice=FALSE; /* flag if we found an office style file */ if (mSearchData->fullNameArray->len > 100) { pbarNudge = ((gdouble)mSearchData->fullNameArray->len / 100); /* Every pbarNudge - increment 1/100 */ pbarIncrement = (gdouble)pbarNudge / (gdouble)mSearchData->fullNameArray->len; } else { pbarNudge = 1; /* For every file, increment 1/MAX*/ pbarIncrement = 1 / (gboolean)mSearchData->fullNameArray->len; }/* endif */ /* Update the status bar */ g_snprintf(status->constantString, MAX_FILENAME_STRING, _("Phase 2 starting...")); gdk_threads_enter (); gtk_statusbar_pop(statusbar, STATUSBAR_CONTEXT_ID(statusbar)); gtk_statusbar_push(statusbar, STATUSBAR_CONTEXT_ID(statusbar), status->constantString); gdk_threads_leave (); /* Compile the regular expression */ regcomp(&search, mSearchControl->textSearchRegEx, mSearchControl->textSearchFlags); gdk_threads_enter (); gtk_progress_bar_set_fraction(pbar, 0); gdk_threads_leave (); /* Loop through all files, and get all of the matches from each */ for (i=0; i<(mSearchData->fullNameArray->len); i++) { if (((mSearchControl->flags & LIMIT_RESULTS_SET) != 0) && (matchCount == mSearchControl->limitResults)) { // printf("* phase 2 : je sors de la boucle à maxcount =%d *\n", matchCount); break; }/* endif */ /* Increment progress bar whenever pbarNudge files have been searched */ if (((i+1) % pbarNudge) == 0) { g_sprintf(pbarNudgeCountText, "%.0f%%", pbarNudgeCount * 100); gdk_threads_enter (); gtk_progress_bar_set_fraction(pbar, pbarNudgeCount); gtk_progress_bar_set_text(pbar, pbarNudgeCountText); gdk_threads_leave (); pbarNudgeCount += pbarIncrement; }/* endif */ tmpFileName = g_strdup_printf("%s", (gchar*)g_ptr_array_index(mSearchData->fullNameArray, i) );/* modifyed Luc A janv 2018 */ /* We must check the type-file in order to manage non pure text files like Office files Luc A. 7 janv 2018 */ // printf("* Phase 2 : je teste le fichier :%s\n", tmpFileName); // !!!! pnser à mettre une fonction qui renvoit un code et après faire un switch(code) /* DOCX from MSWord 2007 and newer ? */ if( g_ascii_strncasecmp (&tmpFileName[strlen(tmpFileName)-4],"docx", 4) == 0 ) { tmpExtractedFile = DocXCheckFile((gchar*)tmpFileName, GetTempFileName("monkey") ); if(tmpExtractedFile!=NULL) { fDeepSearch = TRUE; fIsOffice = TRUE; } } /* OPenDocument Text ? */ if( g_ascii_strncasecmp (&tmpFileName[strlen(tmpFileName)-3],"odt", 3) == 0 ) { /* thus we must change the location of tmpFileName : we unzip the original, and get a new location (in TMPDIR) to a plain text file extracted from the ODT */ tmpExtractedFile = ODTCheckFile((gchar*)tmpFileName, GetTempFileName("monkey") ); if(tmpExtractedFile!=NULL) { // printf("No problemo ODT :%s \n", tmpExtractedFile); /* now, we swap the current 'searchmonkey' mode for filename to the parsed pure text produced by the above function It's for this reason that I've changed Adam's code, where Adam only swapped pointers */ fDeepSearch = TRUE; fIsOffice = TRUE; } } /* Acrobat PDF ? */ if( g_ascii_strncasecmp (&tmpFileName[strlen(tmpFileName)-3],"pdf", 3) == 0 ) { // printf("* Phase 2 : fichier pdf ou ~pdf extension :%s<\n", &tmpFileName[strlen(tmpFileName)-3]); tmpExtractedFile = PDFCheckFile((gchar*)tmpFileName, GetTempFileName("monkey") ); if(tmpExtractedFile!=NULL) { fDeepSearch = TRUE; fIsOffice = TRUE; //if(tmpFileName!=NULL) // g_free(tmpFileName); // tmpFileName = g_strdup_printf("%s", tmpExtractedFile); // g_free(tmpExtractedFile); } } /* Update the status bar */ gdk_threads_enter (); g_snprintf(status->constantString, MAX_FILENAME_STRING, _("Phase 2 searching %s"), tmpFileName); if(fDeepSearch==TRUE) { if(tmpFileName!=NULL) g_free(tmpFileName); tmpFileName = g_strdup_printf("%s", tmpExtractedFile); g_free(tmpExtractedFile); fDeepSearch = FALSE; } gtk_statusbar_pop(statusbar, STATUSBAR_CONTEXT_ID(statusbar)); gtk_statusbar_push(statusbar, STATUSBAR_CONTEXT_ID(statusbar), status->constantString); gdk_threads_leave (); /* Open file (if valid) */ /* i's a wrapper for Glib's g_file_get_contents() */ /* in 'contents" string variable we have the content read from file */ if (g_file_get_contents2(tmpFileName, &contents, &length, NULL)) { /* Try to get a match line 954*/ if (getAllMatches(mSearchData, contents, length, &search, fIsOffice)) { /* get full filename pointer */ newMatch = GET_LAST_PTR(mSearchData->textMatchArray); newMatch->pFullName = g_ptr_array_index(mSearchData->fullNameArray, i); newMatch->pFileName = g_ptr_array_index(mSearchData->fileNameArray, i); newMatch->pLocation = g_ptr_array_index(mSearchData->pLocationArray, i); // newMatch->fileSize = length;/* be careful for Office Files */ getFileSize(mSearchData, newMatch);/* added by Luc A feb 2018 */ getLength(mSearchData, newMatch); getFileType(mSearchData, newMatch); getModified(mSearchData, newMatch); /* Convert the absolutes to relatives */ spinButtonValue = mSearchControl->numExtraLines; dereferenceAbsolutes(mSearchData, contents, length, spinButtonValue); /* Display the matched string */ displayMatch(mSearchControl, mSearchData);/* function is line 1765*/ /* Increment the match counter */ matchCount++; } if(tmpFileName!=NULL) g_free(tmpFileName); g_free(contents); /* Clear file contents from memory */ g_static_mutex_lock(&mutex_Control); stopSearch = mSearchControl->cancelSearch; g_static_mutex_unlock(&mutex_Control); if (stopSearch == TRUE) { break; } } }/* for next i */ /* Update statusbar/progress bar when done */ updateStatusFilesFound(matchCount, status, mSearchControl); gdk_threads_enter (); gtk_progress_bar_set_fraction(pbar, 0); gtk_progress_bar_set_text(pbar, ""); gdk_threads_leave (); /* Clean exit */ regfree(&search); return matchCount; } /* * If valid symbolic link, replace (full) file name with real folder/file. * If not directory and valid symlink, return TRUE. * Otherwise, do not change (full) file name data, and return FALSE. */ gboolean symLinkReplace(gchar **pFullFileName, gchar **pFileName) { gchar * tmpSymFullFileName = g_file_read_link(*pFullFileName, NULL); gchar ** tmpSymSplit = g_strsplit(tmpSymFullFileName, G_DIR_SEPARATOR_S, -1); guint splitLength = g_strv_length(tmpSymSplit); gboolean retVal = FALSE; /* If symlink splits into 1 or more parts, replace filename(s) with new symbolic link details */ if (splitLength != 0) { g_free(*pFullFileName); g_free(*pFileName); (*pFileName) = g_strdup(tmpSymSplit[splitLength - 1]); /* Copy last part as filename data */ (*pFullFileName) = tmpSymFullFileName; retVal = TRUE; } /* otherwise tmpFullFileName is a directory, so keep previous data */ g_strfreev(tmpSymSplit); return retVal; } /* * POSIX threaded: phase two helper function. * Searches through complete text looking for regular expression matches. * contents = gchar buffer with all text in the file open * Returns TRUE if >1 match found. */ gboolean getAllMatches(searchData *mSearchData, gchar *contents, gsize length, regex_t *search, gboolean fOffice /*, gint index*/ ) { regmatch_t subMatches[MAX_SUB_MATCHES]; gint tmpConOffset = 0; gchar *tmpCon; lineMatch *newLineMatch = NULL; textMatch *newTextMatch = NULL; tmpCon = contents; /* Loop through getting all of the absolute match positions */ while (regexec(search, tmpCon, MAX_SUB_MATCHES, subMatches, 0) == 0) { if ((subMatches[0].rm_so == 0) && (subMatches[0].rm_eo == 0)) { break; } if (newTextMatch == NULL) { newTextMatch = g_malloc(sizeof(textMatch)); newTextMatch->matchIndex = mSearchData->lineMatchArray->len; /* pre-empt new line being added */ newTextMatch->matchCount = 0; g_ptr_array_add(mSearchData->textMatchArray, newTextMatch); } newLineMatch = g_malloc(sizeof(lineMatch)); newLineMatch->fOfficeFile = fOffice; newLineMatch->pLine = NULL; newLineMatch->lineCount = 0; newLineMatch->lineLen = -1; newLineMatch->lineNum = -1; newLineMatch->offsetStart = tmpConOffset + subMatches[0].rm_so; newLineMatch->offsetEnd = tmpConOffset + subMatches[0].rm_eo; newLineMatch->invMatchIndex = (mSearchData->textMatchArray->len - 1); /* create reverse pointer */ g_ptr_array_add(mSearchData->lineMatchArray, newLineMatch); (newTextMatch->matchCount) ++; tmpCon += subMatches[0].rm_eo; tmpConOffset += subMatches[0].rm_eo; if (tmpConOffset >= length) { break; } } if (newTextMatch == NULL) { return FALSE; } return TRUE; } /* * POSIX threaded: phase two helper function. * Converts regular expression output into actual string/line matches within the text. * numlines = number of extralines besides the matches */ void dereferenceAbsolutes(searchData *mSearchData, gchar *contents, gsize length, gint numLines) { gsize lineCount = 0; gchar *tmpCon = contents; gchar *lineStartPtr = tmpCon; /* Initialise it.. */ gsize currentOffset = 0; gsize lineOffset = 1; /* Initialise at the starting char */ gsize currentMatch = 0; gsize lineNumber = 0; gsize lineStart = 0; gchar *tmpString2; gboolean needLineEndNumber = FALSE; textMatch *textMatch = GET_LAST_PTR(mSearchData->textMatchArray); lineMatch *prevLineMatch, *newLineMatch = g_ptr_array_index(mSearchData->lineMatchArray, textMatch->matchIndex); gsize absMatchStart = newLineMatch->offsetStart; gsize absMatchEnd = newLineMatch->offsetEnd; gint i = 0; gchar* displayStartPtr = NULL; gchar* displayEndPtr = NULL; /* Loop through whole file contents, one char at a time */ while (currentOffset < length) { /* Detect match start offset found - record localised stats */ if (currentOffset == absMatchStart) { newLineMatch->offsetStart = (lineOffset - 1); newLineMatch->lineNum = (lineCount + 1); } /* Detect match end offset found - record localised stats */ if (currentOffset == absMatchEnd) { newLineMatch->offsetEnd = (lineOffset - 1); newLineMatch->lineCount = ((lineCount - newLineMatch->lineNum) + 2); needLineEndNumber = TRUE; } if ((*tmpCon == '\n') || (*tmpCon == '\r') || (currentOffset >= (length - 1))) { if (needLineEndNumber) { newLineMatch->lineLen = lineOffset; if (lineStartPtr == NULL) { g_print ("%s: Error line %d, %d:%d", (gchar*)GET_LAST_PTR(mSearchData->fullNameArray), (gint) lineCount,(gint) newLineMatch->offsetStart,(gint) newLineMatch->offsetStart); } displayStartPtr = lineStartPtr; i = 0; while ((displayStartPtr > contents) && (i <= numLines)) { displayStartPtr--; if (*displayStartPtr == '\n') { i++; } } if (displayStartPtr != contents) { displayStartPtr++; /* Since otherwise it is on a \n */ } else { i++; /*Since here the first line hasn't been counted */ } newLineMatch->lineCountBefore = i;/* number of 'real' lines available besides matches, i<=numlines */ // printf("* numlines = %d, mis %d lignes autour *\n", numLines, i); displayEndPtr = lineStartPtr + newLineMatch->lineLen - 1;/* to be converted to a true # of bytes !!! */ i = 0; while ((displayEndPtr <= (contents + length - 1)) && (i < numLines)) { displayEndPtr++; if (*displayEndPtr == '\n') { i++; } } if (displayEndPtr != contents+length - 1) { displayEndPtr--; } newLineMatch->lineCountAfter = i; tmpString2 = g_strndup (displayStartPtr, (displayEndPtr - displayStartPtr) + 1); newLineMatch->pLine = g_string_chunk_insert(mSearchData->textMatchChunk, tmpString2); g_free(tmpString2); prevLineMatch = newLineMatch; if (++currentMatch >= textMatch->matchCount) { break; /* All matches are actioned - done! */ } newLineMatch = g_ptr_array_index(mSearchData->lineMatchArray, (textMatch->matchIndex + currentMatch)); /* Move pointer on one! */ absMatchStart = newLineMatch->offsetStart; absMatchEnd = newLineMatch->offsetEnd; /* If next match is on that same line -- rewind the pointers */ if (absMatchStart <= currentOffset) { currentOffset -= prevLineMatch->lineLen; tmpCon -= prevLineMatch->lineLen; lineCount -= prevLineMatch->lineCount; } needLineEndNumber = FALSE; } lineCount ++; lineOffset = 0; lineStart = currentOffset; lineStartPtr = (tmpCon + 1); /* First charactor after the newline */ } tmpCon ++; lineOffset++; currentOffset ++; } return; } /* * POSIX threaded: phase two helper function. * Converts file size (gsize) into human readable string. */ void getLength(searchData *mSearchData, textMatch *newMatch) { gchar *tmpString = NULL; // printf("taille newmatch %10.2f\n", (float)newMatch->fileSize); if (newMatch->fileSize < 1024) { tmpString = g_strdup_printf(_("%d bytes"), newMatch->fileSize ); } else if (newMatch->fileSize < (1024 * 1024)) { tmpString = g_strdup_printf (_("%1.1f KB"), ((float)newMatch->fileSize / 1024)); } else { tmpString = g_strdup_printf (_("%1.1f MB"), ((float)newMatch->fileSize / (1024*1024))); } newMatch->pFileSize = (g_string_chunk_insert_const(mSearchData->fileSizeChunk, tmpString)); g_free(tmpString); } /* * POSIX threaded: phase two helper function. * Converts filename into human readable string extension type. */ void getFileType(searchData *mSearchData, textMatch *newMatch) { textMatch *textMatch = GET_LAST_PTR(mSearchData->textMatchArray); gchar *tmpChar = textMatch->pFileName; gchar *tmpString = NULL; /* Find end of string */ while (*tmpChar != '\0') { tmpChar ++; } /* Find string extension */ while (tmpChar > textMatch->pFileName) { tmpChar --; if (*tmpChar == '.') { tmpChar++; tmpString = g_strdup_printf (_("%s-type"), tmpChar); newMatch->pFileType = (g_string_chunk_insert_const(mSearchData->fileTypeChunk, tmpString)); g_free(tmpString); return; } else { if (!g_ascii_isalnum(*tmpChar) && (*tmpChar != '~')) { break; /* Unexpected type - set to unknown */ } } } newMatch->pFileType = (g_string_chunk_insert_const(mSearchData->fileTypeChunk, _("Unknown"))); } /* * POSIX threaded: phase two helper function. * Converts file modified date into human readable string date using user's locale settings. */ void getModified(searchData *mSearchData, textMatch *newMatch) { struct stat buf; /* ce sont des structures propres au C dans les libs Stat et time */ gint stringSize; gchar *tmpString; char buffer[80];/* added by Luc A., 27/12/2017 */ textMatch *textMatch = GET_LAST_PTR(mSearchData->textMatchArray); lstat(textMatch->pFullName, &buf); /* Replaces the buggy GLIB equivalent */ /* added by Luc A., 27 dec 2017 */ strftime(buffer, 80, "%Ec", localtime(&(buf.st_mtime))); tmpString = g_strdup_printf ("%s",buffer); /* end addition by Luc A., 27/12/2017 */ // tmpString = g_strdup_printf ("%s", asctime (localtime ( &(buf.st_mtime) )));/* st_mtime vient de la struture de type 'tm' de stat.h et time.h = original version by Adam C.*/ stringSize = g_strlen(tmpString); if (tmpString[stringSize - 1] == '\n') { tmpString[stringSize - 1] = '\0'; } newMatch->mDate = buf.st_mtime; newMatch->pMDate = (g_string_chunk_insert_const(mSearchData->mDateChunk, tmpString)); g_free(tmpString); } /* * POSIX threaded: phase one helper function. * Get file size using lstat */ void getFileSize(searchData *mSearchData, textMatch *newMatch) { struct stat buf; lstat(newMatch->pFullName, &buf); /* Replaces the buggy GLIB equivalent */ newMatch->fileSize = buf.st_size; } /* * POSIX threaded: phase one/two helper function. * Updates the Gtk Statusbar with the search conclusion results. */ void updateStatusFilesFound(const gsize matchCount, statusbarData *status, searchControl *mSearchControl) { GtkStatusbar *statusbar = GTK_STATUSBAR(lookup_widget(mSearchControl->widget, "statusbar1")); gboolean stopSearch; /* Update statusbar with new data */ gdk_threads_enter(); if (matchCount == 1) { g_snprintf(status->constantString, MAX_FILENAME_STRING, _("%d file found"), (gint) matchCount); } else { g_snprintf(status->constantString, MAX_FILENAME_STRING, _("%d files found"),(gint) matchCount); } if ((mSearchControl->flags & SEARCH_INVERT_FILES) != 0) { g_strlcat(status->constantString, _(" [inv]"), MAX_FILENAME_STRING); } g_static_mutex_lock(&mutex_Control); stopSearch = mSearchControl->cancelSearch; g_static_mutex_unlock(&mutex_Control); if (stopSearch == TRUE) { g_strlcat(status->constantString, _(" [cancelled]"), MAX_FILENAME_STRING); } if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (lookup_widget(mSearchControl->widget, "dosExpressionRadioFile")))) { g_strlcat(status->constantString, _("-research mode with jokers(DOS like)"), MAX_FILENAME_STRING); } else g_strlcat(status->constantString, _("-research mode with RegEx"), MAX_FILENAME_STRING); gtk_statusbar_pop(statusbar, STATUSBAR_CONTEXT_ID(statusbar)); gtk_statusbar_push(statusbar, STATUSBAR_CONTEXT_ID(statusbar), status->constantString); gdk_threads_leave (); } /* * POSIX threaded: phase one helper function. * Provides min/max modified-date and file-size checking, if selected by user. * Returns TRUE if the file passes all criteria set by user. */ gboolean statMatchPhase(const gchar *tmpFullFileName, searchControl *mSearchControl) { struct stat buf; if ((mSearchControl->flags & SEARCH_SKIP_LINK_FILES) == 0) { stat(tmpFullFileName, &buf); } else { lstat(tmpFullFileName, &buf); } if ((mSearchControl->flags & SEARCH_MORETHAN_SET) != 0) { if (buf.st_size <= mSearchControl->moreThan) { return FALSE; } } if ((mSearchControl->flags & SEARCH_LESSTHAN_SET) != 0) { if (buf.st_size >= mSearchControl->lessThan) { return FALSE; } } if ((mSearchControl->flags & SEARCH_AFTER_SET) != 0) { if (difftime(buf.st_mtime, mSearchControl->after) <=0) { return FALSE; } } if ((mSearchControl->flags & SEARCH_BEFORE_SET) != 0) { if (difftime(mSearchControl->before, buf.st_mtime) <=0) { return FALSE; } } return TRUE; } /* * POSIX threaded: phase two helper function. * Updates the Gtk GUI with match results for a full contents search. */ void displayMatch(searchControl *mSearchControl, searchData *mSearchData) { GdkPixbuf *pixbuf; textMatch *newMatch = GET_LAST_PTR(mSearchData->textMatchArray); gchar *tmpStr = g_strdup_printf ("%d", (gint) newMatch->matchCount); pixbuf = get_icon_for_display(newMatch->pFileType); gdk_threads_enter (); g_assert(mSearchData->store != NULL); g_assert(mSearchData->iter != NULL); // g_assert(VALID_ITER (mSearchData->iter, GTK_LIST_STORE(mSearchData->store))); gtk_list_store_append (mSearchData->store, mSearchData->iter); gtk_list_store_set (mSearchData->store, mSearchData->iter, ICON_COLUMN, GDK_PIXBUF(pixbuf ),/* Luc A, 1 janv 2018 */ FULL_FILENAME_COLUMN, newMatch->pFullName, FILENAME_COLUMN, newMatch->pFileName, LOCATION_COLUMN, newMatch->pLocation, SIZE_COLUMN, newMatch->pFileSize, INT_SIZE_COLUMN, newMatch->fileSize, MATCHES_COUNT_COLUMN, newMatch->matchCount, MATCH_INDEX_COLUMN, newMatch->matchIndex, MODIFIED_COLUMN, newMatch->pMDate, INT_MODIFIED_COLUMN, newMatch->mDate, TYPE_COLUMN, newMatch->pFileType, MATCHES_COUNT_STRING_COLUMN, tmpStr, -1); gdk_threads_leave (); g_free(tmpStr); if (pixbuf!=NULL) g_object_unref(G_OBJECT(pixbuf));/* once loaded, the GdkPixbuf must be derefenced, cf : https://en.wikibooks.org/wiki/GTK%2B_By_Example/Tree_View/Tree_Models#Retrieving_Row_Data */ return; } /* * POSIX threaded: phase one helper function. * Updates the Gtk GUI with match results for just the filename matches. */ void displayQuickMatch(searchControl *mSearchControl, searchData *mSearchData) { const gchar *tmpStr = g_object_get_data(G_OBJECT(mainWindowApp), "notApplicable"); GdkPixbuf *pixbuf; textMatch *newMatch = g_malloc(sizeof(textMatch)); g_ptr_array_add(mSearchData->textMatchArray, newMatch); newMatch->pFullName = GET_LAST_PTR(mSearchData->fullNameArray); newMatch->pFileName = GET_LAST_PTR(mSearchData->fileNameArray); newMatch->pLocation = GET_LAST_PTR(mSearchData->pLocationArray); getModified(mSearchData, newMatch); getFileType(mSearchData, newMatch); getFileSize(mSearchData, newMatch); getLength(mSearchData, newMatch); pixbuf = get_icon_for_display(newMatch->pFileType); gdk_threads_enter (); g_assert(mSearchData->store != NULL); g_assert(mSearchData->iter != NULL); // g_assert(VALID_ITER (mSearchData->iter, GTK_LIST_STORE(mSearchData->store))); gtk_list_store_append (mSearchData->store, mSearchData->iter); gtk_list_store_set (mSearchData->store, mSearchData->iter, ICON_COLUMN, GDK_PIXBUF(pixbuf),/* Luc A, 1 janv 2018 */ FULL_FILENAME_COLUMN, newMatch->pFullName, FILENAME_COLUMN, newMatch->pFileName, LOCATION_COLUMN, newMatch->pLocation, SIZE_COLUMN, newMatch->pFileSize, INT_SIZE_COLUMN, newMatch->fileSize, MODIFIED_COLUMN, newMatch->pMDate, INT_MODIFIED_COLUMN, newMatch->mDate, TYPE_COLUMN, newMatch->pFileType, MATCHES_COUNT_STRING_COLUMN, tmpStr, -1); if (pixbuf!=NULL) g_object_unref(G_OBJECT(pixbuf)); gdk_threads_leave (); return; } /* * Convert from GDate to struct tm format */ void setTimeFromDate(struct tm *tptr, GDate *date) { tptr->tm_hour = 0; /* Hours */ tptr->tm_isdst = 0; /* Is daylight saving enabled */ tptr->tm_mday = date->day; tptr->tm_min = 0; /* Minutes */ tptr->tm_mon = (date->month - 1); /* Month : 0=Jan */ tptr->tm_sec = 0; /* Seconds */ tptr->tm_wday = 0; /* Day of the week: 0=sun */ tptr->tm_yday = 0; /* Day of the year: 0=NA */ tptr->tm_year = (date->year - 1900); /* Year : 0=1900 AD */ } /************************************************************* * Constructors and destructors for search data *************************************************************/ /* * Constructs and initialises the master search data structure. * This data is used to store all match results during the search process. */ void createSearchData(GObject *object, const gchar *dataName) { searchData *mSearchData; /* Create pointer arrays */ mSearchData = g_malloc(sizeof(searchData)); mSearchData->pLocationArray = g_ptr_array_new(); /* Only pointers to baseDirArray */ mSearchData->textMatchArray = g_ptr_array_new(); mSearchData->fileNameArray = g_ptr_array_new(); mSearchData->fullNameArray = g_ptr_array_new(); mSearchData->lineMatchArray = g_ptr_array_new(); /* Create string chunks */ mSearchData->locationChunk = g_string_chunk_new(MAX_FILENAME_STRING + 1); mSearchData->fileSizeChunk = g_string_chunk_new(MAX_FILENAME_STRING + 1); mSearchData->mDateChunk = g_string_chunk_new(MAX_FILENAME_STRING + 1); mSearchData->fileTypeChunk = g_string_chunk_new(MAX_FILENAME_STRING + 1); mSearchData->textMatchChunk = g_string_chunk_new(MAX_FILENAME_STRING + 1); // mSearchData->store = NULL; mSearchData->iter = g_malloc(sizeof(GtkTreeIter)); /* Attach the data to the G_OBJECT */ g_object_set_data_full(object, dataName, mSearchData, destroySearchData); } /* * Destroys the master search data structure. * This data is used to store all match results during the search process. * Automatically called when data object is destroyed, or re-created. */ void destroySearchData(gpointer data) { searchData *mSearchData = data; g_free(mSearchData->iter); /* Destroy string chunks */ g_string_chunk_free(mSearchData->locationChunk); g_string_chunk_free(mSearchData->fileSizeChunk); g_string_chunk_free(mSearchData->mDateChunk); g_string_chunk_free(mSearchData->fileTypeChunk); g_string_chunk_free(mSearchData->textMatchChunk); /* Destroy pointed to data */ g_ptr_array_foreach(mSearchData->textMatchArray, ptr_array_free_cb, GINT_TO_POINTER(1)); g_ptr_array_foreach(mSearchData->fileNameArray, ptr_array_free_cb, NULL); g_ptr_array_foreach(mSearchData->fullNameArray, ptr_array_free_cb, NULL); g_ptr_array_foreach(mSearchData->lineMatchArray, ptr_array_free_cb, NULL); /* Destroy pointer arrays, plus malloc'ed arrays */ g_ptr_array_free(mSearchData->pLocationArray, TRUE); g_ptr_array_free(mSearchData->textMatchArray, TRUE); g_ptr_array_free(mSearchData->fileNameArray, TRUE); g_ptr_array_free(mSearchData->fullNameArray, TRUE); g_ptr_array_free(mSearchData->lineMatchArray, TRUE); /* And last of all, remove the structure and NULL the pointers! */ // mSearchData->iter = NULL; g_free(mSearchData); //mSearchData->store = NULL; /* Clear the pointer to it.. */ } /* * Constructs and initialises the master search control structure. * This data is used to store pointers to the data stored within * the search criteria at the instance that search is pressed. * No custom destructor required as g_free is adequate. */ void createSearchControl(GObject *object, const gchar *dataName) { searchControl *prevSearchControl = g_object_get_data(object, dataName); searchControl *mSearchControl; if (prevSearchControl != NULL) { g_object_set_data(object, dataName, NULL); /* Try to force clean-up of the data prior to recreation */ } /* Create pointer arrays*/ mSearchControl = g_malloc(sizeof(searchControl)); mSearchControl->flags = 0; mSearchControl->textSearchFlags = 0; mSearchControl->fileSearchFlags = 0; mSearchControl->limitContentResults = 0; mSearchControl->numExtraLines = 0; mSearchControl->limitResults = 0; mSearchControl->folderDepth = 0; mSearchControl->textSearchRegEx = NULL; mSearchControl->fileSearchRegEx = NULL; mSearchControl->startingFolder = NULL; /* Attach the data to the G_OBJECT */ g_object_set_data_full(object, dataName, mSearchControl, destroySearchControl); } /* * Constructs and initialises the master search control structure. * This data is used to store pointers to the data stored within * the search criteria at the instance that search is pressed. * No custom destructor required as g_free is adequate. */ void destroySearchControl(gpointer data) { searchControl *mSearchControl = data; /* Free the text strings (if present) */ if (mSearchControl->textSearchRegEx != NULL) { g_free(mSearchControl->textSearchRegEx); } if (mSearchControl->fileSearchRegEx != NULL) { g_free(mSearchControl->fileSearchRegEx); } if (mSearchControl->startingFolder != NULL) { g_free(mSearchControl->startingFolder); } /* Finally free the remaining structure */ g_free(mSearchControl); } /* * Constructs and initialises the status bar structure. * This data is used to hold the status bar, and its associated text. */ void createStatusbarData(GObject *object, const gchar *dataName) { statusbarData *status; status = g_malloc(sizeof(statusbarData)); status->statusbarChunk = g_string_chunk_new(MAX_FILENAME_STRING + 1); /* Attach the data to the G_OBJECT */ g_object_set_data_full(object, dataName, status, destroyStatusbarData); } /* * Destroys the status bar structure. * This data is used to hold the status bar, and its associated text. * Automatically called by when object is destroyed, or re-created. */ void destroyStatusbarData(gpointer data) { statusbarData *status = data; g_string_chunk_free(status->statusbarChunk); g_free(status); } /* * Replacement pointer array free as it does not seem to really g_free the data being pointed to */ void ptr_array_free_cb(gpointer data, gpointer user_data) { g_free(data); } searchmonkey-0.8.3/src/search.h0000664000175000017500000002633513236161317013356 00000000000000#ifndef SEARCH_H #define SEARCH_H #include #include #include /* * External global variable declarations */ extern GtkWidget *mainWindowApp; /* Holds pointer to the main searchmonkey GUI. Declared in main.c */ /* max size for parser's buffer */ #define MAX_PARSER_BUFFER 256000 /* /* keycodes in order to set a sort of 'switch' command with a gchar /* /* added by Luc A. - 1 janv 2018 - idea here : answer #22 URL = https://stackoverflow.com/questions/4014827/best-way-to-switch-on-a-string-in-c please note that FORMAT_OTHERS must be equal to MAX_FORMAT_LIST !!!! */ #define FORMAT_OTHERS 47 #define FORMAT_TXT 1 #define FORMAT_OFFICE_TEXT 2 #define FORMAT_OFFICE_SHEET 3 #define FORMAT_OFFICE_BASE 4 #define FORMAT_OFFICE_PRESENT 5 #define FORMAT_IMAGE 6 #define FORMAT_VIDEO 7 #define FORMAT_MUSIC 8 #define FORMAT_ARCHIVE 9 #define FORMAT_ISO 10 #define FORMAT_PDF 11 #define FORMAT_SVG 12 #define FORMAT_ODG 13 #define FORMAT_CSV 14 #define FORMAT_ZIP 15 #define FORMAT_WAV 16 #define FORMAT_MP3 17 #define FORMAT_MP4 18 #define FORMAT_AVI 19 #define FORMAT_MKV 20 #define FORMAT_OTF 21 #define FORMAT_TTF 22 #define FORMAT_BZ2 23 #define FORMAT_PPT 24 #define FORMAT_DEB 25 #define FORMAT_GZ 26 #define FORMAT_RPM 27 #define FORMAT_SH 28 #define FORMAT_C 29 #define FORMAT_XML 30 #define FORMAT_HTML 31 #define FORMAT_JAR 32 #define FORMAT_JAVA 33 #define FORMAT_H 34 #define FORMAT_RAR 35 #define FORMAT_TIFF 36 #define FORMAT_DNG 37 #define FORMAT_GIF 38 #define FORMAT_ODP 39 #define FORMAT_JS 40 #define FORMAT_CSS 41 #define FORMAT_TGZ 42 #define FORMAT_XPM 43 #define MAX_FORMAT_LIST 47 /* * Global/miscillaneous constants */ #define MAX_FILENAME_STRING 512 /* String maximum for things like the statusbar, and other fixed length buffers - minimise usage */ #define TREEVIEW_HEADER_PIXEL_SIZE_Y 25 /* Treeview header size in pixels - on_treeview1_button_press_event() */ #define SEARCHMONKEY_CONFIG "config.ini" /* Configuration name for searchmonkey options - main()*/ #ifndef G_FILENAME_ENCODING #define G_FILENAME_ENCODING "UTF-8" /* If not set by operating system, force to UTF-8 */ #endif /* G_FILENAME_ENCODING */ /* * Progress bar constants - used to control speed, when it occurs, and sleep times */ #define MIN_STEP_VAL (1 / (G_EXE_LIST_MAX_DEPTH * (G_EXE_LIST_MAX_WIDTH + 1))) /* Minimum amount to move progress bar by when finding executables */ #define TOTAL_PBAR_JUMP_COUNT 6 /* Number of progress bar steps to reach 100% within function findExecutables() */ #define PBAR_SHOW_IF_MIN 100 /* Mininimum file list size before progress bar is shown*/ #define PHASE_ONE_PBAR_PULSE_MULTILPIER 8 /* Where true speed is 0.5/MULTIPLIER seconds between each pulse */ #define SPIN_BAR_USLEEP_TIME 100000 /* Micro sleep used to help allow the spin bar to be updated */ /* * Global Object Variable Names - use g_object_get_data to retrieve, and set to store. */ #define MASTER_SEARCH_DATA "search1" /* Storage for the Phase One data inside the g_object */ #define MASTER_SEARCH_CONTROL "control1" /* Storage for the Phase One data inside the g_object */ #define MASTER_STATUSBAR_DATA "status1" /* Storage for the Phase One data inside the g_object */ /* * seachmonkey macros to simplify pointer access, and getting the CONTEXT ID for statusbar * TODO: Consider converting these to functions instead */ #define GET_LAST_PTR(x) g_ptr_array_index(x, (x->len - 1)) /* Helper macro to simplify getting the last pointer from array */ #define DEL_LAST_PTR(x) g_ptr_array_remove_index_fast(x, (x->len -1)) /* Helper macro to simplify removing the nth item from pointer list */ /* * Status bar structures and macros * TODO: Convert macro to function */ #define STATUSBAR_CONTEXT_ID(x) (gtk_statusbar_get_context_id(x, MASTER_STATUSBAR_DATA)) /* Helper macro to get the status bar context id */ /* luc A. - 1 janv 2018 -> structure to switch with gchars */ typedef struct { gchar *key; gchar *icon_file_name ; gint val; } t_symstruct; typedef struct { gchar constantString[MAX_FILENAME_STRING + 1]; /* Constant for use with fixed info status messages */ GStringChunk *statusbarChunk; /* Mass storage for push/pop operations performed when tree searching the file system */ } statusbarData; /* * Search results data and control structures */ typedef struct { /* Structure to store each match result before being displayed */ gsize matchIndex; /* first lineMatch index */ gsize matchCount; /* Number of lineMatch items */ gchar *pFullName; /* pointer to the full name */ gchar *pFileName; /* pointer to the file name */ gchar *pLocation; /* pointer to the location */ gchar *pMDate; /* pointer to the modified date */ gchar *pFileSize; /* pointer to the file size */ gchar *pFileType; /* pointer to the file size */ long int mDate; /* modified date as an integer */ unsigned int fileSize; /* filesize as an integer */ } textMatch; typedef struct { /* Structure to store each line within the file that has a matching result */ gsize lineNum; gsize lineCount; /* Number of lines within this match */ gsize lineCountBefore; /* Number of displayed lines up to the line where matching text is found */ gsize lineCountAfter; /* Number of displayed lines after the line where matching text is found */ gchar *pLine; /* Copy of the line (NULL terminated) */ gsize offsetStart; /* Match offset start */ gsize offsetEnd; /* Match offset end */ gsize lineLen; /* Size of pLine */ guint invMatchIndex; /* inverse pointer to textMatch array */ gboolean fOfficeFile; /* flag : if it's an Office, i.e. structured text file, then the text is cuted in paragraphs and not lines */ } lineMatch; typedef struct { /* Structure to store all results together */ GPtrArray *pLocationArray; /* pointer to actual location chunk */ GPtrArray *textMatchArray; /* array of text match arrays */ GPtrArray *fileNameArray; /* array of file names */ GPtrArray *fullNameArray; /* array of full file names */ GPtrArray *lineMatchArray; /* array of lineMatch objects */ GStringChunk *locationChunk; /* Mass storage for all of the directory locations */ GStringChunk *fileSizeChunk; /* Mass storage for all of the file sizes */ GStringChunk *mDateChunk; /* Mass storage for all of the modified dates */ GStringChunk *fileTypeChunk; /* Mass storage for all of the file types */ GStringChunk *textMatchChunk; /* Mass storage for all of the matched lines */ GtkListStore *store; /* Pointer to the data store */ GtkTreeIter *iter; /* Malloc Iter */ } searchData; enum searchFlagsEnum { /* Enumeration of all of the search options set by the user configurations */ SEARCH_SUB_DIRECTORIES = 1, /* If set, allows sub-directories to be entered when searching files */ SEARCH_CASE_SENSITIVE = (1<<1), /* If set makes the search case sensitive */ SEARCH_HIDDEN_FILES = (1<<2), /* If set lets hidden files (starting with .) be found by phase one search */ SEARCH_SKIP_LINK_FILES = (1<<3), /* If set does not follow symbolic links.*/ // SEARCH_EXTENDED_REGEX = (1<<4), SEARCH_TEXT_CONTEXT = (1<<5), /* If set, performs phase two searching on file content */ SEARCH_INVERT_FILES = (1<<6), /* If set, inverts the file name search i.e. NOT (*.txt) */ SEARCH_MORETHAN_SET = (1<<7), /* If set, checks that file size is greater than user entry */ SEARCH_LESSTHAN_SET = (1<<8), /* If set, checks that file size is smaller than user entry */ SEARCH_AFTER_SET = (1<<9), /* If set, checks that file was modified after user entry */ SEARCH_BEFORE_SET = (1<<10), /* If set, checks that file was modified before user entry */ DEPTH_RESTRICT_SET = (1<<11), /* If set, restrict the maximum recursion depth for folders */ LIMIT_RESULTS_SET = (1<<12), /* If set, limits the number of file matches shown */ SEARCH_EXTRA_LINES = (1<<13), /* If set, allows some/more lines of results to be shown for every hit */ SEARCH_LIMIT_CONTENT_SHOWN = (1<<14) /* If set, limits the number of content lines shown */ }; typedef struct { /* Control structure for search keeps copy of all user settings, and pointers to widgets */ gchar *startingFolder; /* Pointer to the starting location */ gchar *fileSearchRegEx; /* Regular expression pointer for the file search */ gboolean fileSearchIsRegEx; /*If TRUE then fileSearchRegEx is a regex, else a glob pattern */ gchar *textSearchRegEx; /* Regular expression pointer for the text search */ guint fileSearchFlags; /* Flags for the file regexp */ guint textSearchFlags; /* Flags for the text regexp */ gint folderDepth; /* restrict depth to which folders should be recursed */ gint limitResults; /* Limits number of results */ gint numExtraLines; /* Number of extra lines to show beside each match */ gint limitContentResults; /* Limits number of content matches within each file */ GtkWidget *widget; /* Pointer to the main window widget */ time_t after; /* Copy of the modified after time */ time_t before; /* Copy of the modified before time */ off_t moreThan; /* Copy of the more than size in bytes */ off_t lessThan; /* Copy of the less than size in bytes */ enum searchFlagsEnum flags; /* Search criteria flags */ gboolean cancelSearch; /* If TRUE stops the current search ASAP */ } searchControl; enum { /* Enumeration for all of the file name results table columns */ ICON_COLUMN = 0, /* luc A - 1 janv 2018 */ FILENAME_COLUMN, LOCATION_COLUMN, SIZE_COLUMN, TYPE_COLUMN, MODIFIED_COLUMN, MATCHES_COUNT_STRING_COLUMN, FULL_FILENAME_COLUMN, INT_SIZE_COLUMN, INT_MODIFIED_COLUMN, MATCHES_COUNT_COLUMN, MATCH_INDEX_COLUMN, N_COLUMNS /* Total number of columns in results table */ }; /* Main search entry points (not threaded) */ void start_search_thread(GtkWidget *widget); void stop_search_thread(GtkWidget *widget); /* Main search POSIX thread */ void *walkDirectories(void *args); glong phaseOneSearch(searchControl *mSearchControl, searchData *mSearchData, statusbarData *status); glong phaseTwoSearch(searchControl *mSearchControl, searchData *mSearchData, statusbarData *status); gboolean symLinkReplace(gchar **pFullFileName, gchar **pFileName); gboolean getAllMatches(searchData *mSearchData, gchar *contents, gsize length, regex_t *search, gboolean fOffice); void dereferenceAbsolutes(searchData *mSearchData,gchar *contents, gsize length, gint numLines); void getLength(searchData *mSearchData, textMatch *newMatch); void getFileType(searchData *mSearchData, textMatch *newMatch); void getModified(searchData *mSearchData, textMatch *newMatch); void getFileSize(searchData *mSearchData, textMatch *newMatch); void updateStatusFilesFound(const gsize matchCount, statusbarData *status, searchControl *mSearchControl); gboolean statMatchPhase(const gchar *tmpFullFileName, searchControl *mSearchControl); void displayMatch(searchControl *mSearchControl, searchData *mSearchData); void displayQuickMatch(searchControl *mSearchControl, searchData *mSearchData); void setTimeFromDate(struct tm *tptr, GDate *date); /* Constructors and destructors for search data (not threaded) */ void createSearchData(GObject *object, const gchar *dataName); void destroySearchData(gpointer data); void createSearchControl(GObject *object, const gchar *dataName); void destroySearchControl(gpointer data); void createStatusbarData(GObject *object, const gchar *dataName); void destroyStatusbarData(gpointer data); void ptr_array_free_cb(gpointer data, gpointer user_data); #endif /* SEARCH_H */ searchmonkey-0.8.3/src/savestate.c0000664000175000017500000022350113236164262014077 00000000000000/* * File: savestate.c * Description: Contains config save/restore specific functions so that widgets can keep their * settings betweeen saves. * Todo: Make more of these files internal only, by merging the commands (where possible) into * very specific top level save/restore commands just called once. * Ideally this file should have only around 10 globally called functions - all the rest * will become internal to this file. * gConfigFile variable should become static to this file, and have functions modify its * value - i.e. setConfigLocation, getConfigLocation, saveConfig, loadConfig, etc */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include /* g_fopen, etc */ #include "interface.h" /* glade requirement */ #include "support.h" /* glade requirement */ #include "search.h" /* Add in column definitions */ #include "misc.h" /* Everything else */ #include "savestate.h" /* Externals */ extern GtkWidget *mainWindowApp; /* Holds pointer to the main searchmonkey GUI. Declared in main.c */ extern GStaticMutex mutex_Data; /* Created in search.c to control access to search results data. */ extern GStaticMutex mutex_Control; /* Created in search.c to control access to search controls. */ /************************************************************** * Keyfile interface commands **************************************************************/ /* * Creates a new config file */ void createNewKeyFile(GKeyFile *keyString) { gchar* tmpStr = g_strdup_printf(_(" %s settings auto-generated - Do not edit!"), PACKAGE); g_key_file_set_comment (keyString, NULL, NULL, tmpStr, NULL); g_key_file_set_string(keyString, "version-info", "version", CURRENT_VERSION); g_free(tmpStr); return; } /* * Attempts to load the searchmonkey config.ini file. * If invalid, or non-existant, creates new config file. */ void createGKeyFile(GObject *object, const gchar *dataName) { GKeyFile *keyString; keyString = g_key_file_new (); gchar *tmpStr; if (!g_key_file_load_from_file (keyString, gConfigFile, G_KEY_FILE_KEEP_COMMENTS, NULL)) { createNewKeyFile(keyString); } else { gchar* version = g_key_file_get_string(keyString, "version-info", "version", NULL); gint versionCmp = 1; if (version != NULL) { versionCmp = strcmp(version, CURRENT_VERSION); } if (versionCmp != 0) { GtkWidget* yesNoDialog; yesNoDialog = gtk_message_dialog_new(GTK_WINDOW(mainWindowApp), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_WARNING, GTK_BUTTONS_YES_NO, _("Configuration files are for a different version of Searchmonkey. This may cause errors. Delete old configuration files?")); if (gtk_dialog_run(GTK_DIALOG(yesNoDialog)) != GTK_RESPONSE_YES) { /*This is to prevent checking the next time */ g_key_file_set_string(keyString, "version-info", "version", CURRENT_VERSION); } else { g_key_file_free(keyString); g_remove(gConfigFile); keyString = g_key_file_new(); createNewKeyFile(keyString); } gtk_widget_destroy(yesNoDialog); } g_free(version); } g_object_set_data_full(object, dataName, keyString, destroyGKeyFile); } /* * Saves config file (config.ini) to disk, and frees associated memory. * Automatically called when save data is destroyed (i.e. user closed searchmonkey). */ void destroyGKeyFile(gpointer data) { GKeyFile *keyString = data; if (GPOINTER_TO_INT(g_object_get_data(G_OBJECT(mainWindowApp), CONFIG_DISABLE_SAVE_CONFIG_STRING)) != CONFIG_DISABLE_SAVE_CONFIG) { storeGKeyFile(keyString); } g_key_file_free(keyString); if (gConfigFile != NULL) { g_free(gConfigFile); } } /* * Internal helper: returns reference to current config.ini file (stored in RAM). */ GKeyFile *getGKeyFile(GtkWidget *widget) { GObject *window1 = G_OBJECT(lookup_widget(GTK_WIDGET(widget), "window1")); GKeyFile *keyString = g_object_get_data(window1, MASTER_OPTIONS_DATA); return keyString; } /* * Internal helper: saves the config.ini file to disk. * If configured to, user-prompt is created so that automatic saving of state is an option. * If storage fails, quietly informs user via the command line - not by pop-up, as this could * cause an annoyance to users. */ void storeGKeyFile(GKeyFile *keyString) { gsize length; gchar *outText; GError *error = NULL; gchar *folderName; GtkWidget *okCancelDialog; if (g_key_file_has_key(keyString, "configuration", "configPromptSave", NULL) && (g_key_file_get_boolean(keyString, "configuration", "configPromptSave", NULL))) { okCancelDialog = gtk_message_dialog_new(GTK_WINDOW(mainWindowApp), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, _("About to overwrite save configuration. Do you want to proceed?")); if (gtk_dialog_run(GTK_DIALOG(okCancelDialog)) != GTK_RESPONSE_OK) { gtk_widget_destroy(okCancelDialog); return; } gtk_widget_destroy(okCancelDialog); } /* Write the configuration file to disk */ folderName = g_path_get_dirname(gConfigFile); outText = g_key_file_to_data (keyString, &length, NULL); if (!g_file_set_contents2 (gConfigFile, outText, length, NULL)) { /* Unable to immediately write to file, so attempt to recreate folders */ mkFullDir(folderName, S_IRWXU); if (!g_file_set_contents2 (gConfigFile, outText, length, &error)) { g_print(_("Error saving %s: %s\n"), gConfigFile, error->message); g_error_free(error); error = NULL; } } g_free(outText); g_free(folderName); } /* * Callback/Internal helper: updates configuration panel with config file's location. * If no config file, or any error detected than [missing] is displayed instead. */ void setConfigFileLocation (GtkWidget *widget) { gchar *fullPath; if (g_file_test(gConfigFile, G_FILE_TEST_EXISTS)) { gtk_entry_set_text(GTK_ENTRY(lookup_widget(widget, "configFileLocation")), gConfigFile); } else { fullPath = g_strconcat(gConfigFile, _(" [missing]"), NULL); gtk_entry_set_text(GTK_ENTRY(lookup_widget(widget, "configFileLocation")), fullPath); g_free(fullPath); } } /************************************************************** * Top level save/restore commands **************************************************************/ /* * Callback helper: master realize function for searchmonkey main screen */ void realize_searchmonkeyWindow (GtkWidget *widget) { GKeyFile *keyString = getGKeyFile(widget); GtkComboBox* tmpCombo; GtkTreeIter iter; /* luc A janv 2018 */ gchar *sParamater1 = g_object_get_data(G_OBJECT(mainWindowApp), "argvParameter1"); gchar *sParamater2 = g_object_get_data(G_OBJECT(mainWindowApp), "argvParameter2"); gchar *sParamater3 = g_object_get_data(G_OBJECT(mainWindowApp), "argvParameter3"); /* Global stuff */ realizeWindow(widget, keyString, "application", "window1"); /* restore window size */ /* Search stuff */ initComboBox2(lookup_widget(widget, "fileName")); initComboBox(lookup_widget(widget, "containingText")); initComboBox(lookup_widget(widget, "lookIn")); initComboBox2(lookup_widget(widget, "fileName2")); initComboBox(lookup_widget(widget, "containingText2")); initComboBox(lookup_widget(widget, "lookIn2")); realize_searchNotebook(widget); /* directories parameters = parameter1 from command line - Luc A janv 2018 */ tmpCombo = GTK_COMBO_BOX(lookup_widget(widget, "lookIn")); g_assert(tmpCombo != NULL); if(sParamater1!=NULL) addUniqueRow(GTK_WIDGET(tmpCombo), sParamater1); /* Luc A janv 2018 */ else if (gtk_tree_model_get_iter_first(gtk_combo_box_get_model(tmpCombo), &iter) == FALSE) { addUniqueRow(GTK_WIDGET(tmpCombo), g_get_home_dir()); /* Set default look in folder */ } tmpCombo = GTK_COMBO_BOX(lookup_widget(widget, "lookIn2")); g_assert(tmpCombo != NULL); if(sParamater1!=NULL) addUniqueRow(GTK_WIDGET(tmpCombo), sParamater1); /* Luc A janv 2018 */ else if (gtk_tree_model_get_iter_first(gtk_combo_box_get_model(tmpCombo), &iter) == FALSE) { addUniqueRow(GTK_WIDGET(tmpCombo), g_get_home_dir()); /* Set default look in folder */ } /* file(s) name parameters = parameter2 from command line - Luc A janv 2018 */ tmpCombo = GTK_COMBO_BOX(lookup_widget(widget, "fileName")); g_assert(tmpCombo != NULL); if(sParamater2!=NULL) addUniqueRow(GTK_WIDGET(tmpCombo), sParamater2); /* Luc A janv 2018 */ tmpCombo = GTK_COMBO_BOX(lookup_widget(widget, "fileName2")); g_assert(tmpCombo != NULL); if(sParamater2!=NULL) addUniqueRow(GTK_WIDGET(tmpCombo), sParamater2); /* Luc A janv 2018 */ /* containing text parameters = parameter3 from command line - Luc A janv 2018 */ tmpCombo = GTK_COMBO_BOX(lookup_widget(widget, "containingText")); g_assert(tmpCombo != NULL); if(sParamater3!=NULL) addUniqueRow(GTK_WIDGET(tmpCombo), sParamater3); /* Luc A janv 2018 */ tmpCombo = GTK_COMBO_BOX(lookup_widget(widget, "containingText2")); g_assert(tmpCombo != NULL); if(sParamater3!=NULL) addUniqueRow(GTK_WIDGET(tmpCombo), sParamater3); /* Luc A janv 2018 */ /* Results stuff */ setResultsViewHorizontal(widget, TRUE); /* Default to horizontal */ gboolean autoColumnWidth = ((!g_key_file_has_key (keyString, "configuration", "autosize_columns", NULL)) || (g_key_file_get_boolean (keyString, "configuration", "autosize_columns", NULL))); initTreeView(widget); realizeTreeview(widget, keyString, "history", "treeview", autoColumnWidth); /* restore column widths, search order */ realizeTreeviewColumns(widget, keyString, "history", "treeview", autoColumnWidth); /* restore column widths, search order */ initTextView(widget); realizeTextviewFont(widget, keyString, "menuOptions", "font"); realizeTextviewHighlight(widget, keyString, "menuOptions", "highlight"); /* Status bar */ createStatusbarData(G_OBJECT(mainWindowApp), MASTER_STATUSBAR_DATA); realize_statusbar (widget); /* Menu stuff (do this last so that all view options get set) */ realize_menubar(widget); gtk_widget_grab_focus (lookup_widget(widget, "playButton1")); // g_free(sParamater1); } /* * Callback helper: master unrealize function for searchmonkey main screen */ void unrealize_searchmonkeyWindow (GtkWidget *widget) { GKeyFile *keyString = getGKeyFile(widget); unrealizeWindow(widget, keyString, "application", "window1"); /* Save window size */ /* Menu stuff */ unrealize_menubar(widget); /* Search stuff */ unrealize_searchNotebook(widget); /* Results stuff */ gboolean autoColumnWidth = ((!g_key_file_has_key (keyString, "configuration", "autosize_columns", NULL)) || (g_key_file_get_boolean (keyString, "configuration", "autosize_columns", NULL))); unrealizeTreeview(widget, keyString, "history", "treeview", autoColumnWidth); unrealizeTreeviewColumns(widget, keyString, "history", "treeview", autoColumnWidth); unrealizeTextviewFont(widget, keyString, "menuOptions", "font"); unrealizeTextviewHighlight(widget, keyString, "menuOptions", "highlight"); } /* * Callback helper: retrieve all configuration settings from config.ini */ void realize_configDialog (GtkWidget *widget) { GKeyFile *keyString = getGKeyFile(mainWindowApp); GtkFileChooser *chooser; gchar *fullPath; /* Save current treeview column sizes immediately */ unrealizeTreeviewColumns (GTK_WIDGET(mainWindowApp), keyString, "history", "treeview", FALSE); /* Restore global settings */ realizeToggle (widget, keyString, "configuration", "configForceSingle"); realizeToggle (widget, keyString, "configuration", "configExtendedRegex"); realizeToggle (widget, keyString, "configuration", "configPromptSave"); realizeToggle (widget, keyString, "configuration", "configPromptDelete"); realizeToggle (widget, keyString, "configuration", "configMatchBinary"); /* Restore store results settings */ realizeString (widget, keyString, "configuration", "configResultEOL"); realizeString (widget, keyString, "configuration", "configResultEOF"); realizeString (widget, keyString, "configuration", "configResultDelimiter"); /* Restore store results settings */ realizeString (widget, keyString, "configuration", "configFileLocation"); /* Restore system call settings */ realizeString (widget, keyString, "configuration", "configTextEditor"); realizeString (widget, keyString, "configuration", "configTextEditorAttributes"); realizeString (widget, keyString, "configuration", "configFileExplorer"); realizeString (widget, keyString, "configuration", "configFileExplorerAttributes"); realizeString (widget, keyString, "configuration", "configWebBrowser"); realizeString (widget, keyString, "configuration", "configWebBrowserAttributes"); setConfigFileLocation (widget); } /* * Callback helper: store all configuration settings into config.ini */ void unrealize_configDialog (GtkWidget *widget) { GKeyFile *keyString = getGKeyFile(mainWindowApp); GtkFileChooser *chooser; /* Restore global settings */ unrealizeToggle (widget, keyString, "configuration", "configForceSingle"); unrealizeToggle (widget, keyString, "configuration", "configExtendedRegex"); unrealizeToggle (widget, keyString, "configuration", "configPromptSave"); unrealizeToggle (widget, keyString, "configuration", "configPromptDelete"); unrealizeToggle (widget, keyString, "configuration", "configMatchBinary"); /* Restore store results settings */ unrealizeString (widget, keyString, "configuration", "configResultEOL"); unrealizeString (widget, keyString, "configuration", "configResultEOF"); unrealizeString (widget, keyString, "configuration", "configResultDelimiter"); /* Restore system call settings */ unrealizeString (widget, keyString, "configuration", "configTextEditor"); unrealizeString (widget, keyString, "configuration", "configTextEditorAttributes"); unrealizeString (widget, keyString, "configuration", "configFileExplorer"); unrealizeString (widget, keyString, "configuration", "configFileExplorerAttributes"); unrealizeString (widget, keyString, "configuration", "configWebBrowser"); unrealizeString (widget, keyString, "configuration", "configWebBrowserAttributes"); } /* * Callback helper: store all search settings into config.ini */ void realize_searchNotebook (GtkWidget *widget) { GKeyFile *keyString = getGKeyFile(widget); /* Store basic Tab */ realizeComboBox2(widget, keyString, "history", "fileName2"); realizeComboBox(widget, keyString, "history", "containingText2"); realizeToggle(widget, keyString, "history", "containingTextCheck2"); realizeComboBox(widget, keyString, "history", "lookIn2"); realizeToggle(widget, keyString, "history", "searchSubfoldersCheck2"); realizeToggle(widget, keyString, "history", "ignoreHiddenFiles"); /* Store advanced Tab */ realizeComboBox2(widget, keyString, "history", "fileName"); realizeToggle(widget, keyString, "history", "expertUserCheck"); realizeComboBox(widget, keyString, "history", "containingText"); realizeToggle(widget, keyString, "history", "containingTextCheck"); realizeComboBox(widget, keyString, "history", "lookIn"); realizeToggle(widget, keyString, "history", "searchSubfoldersCheck"); realizeToggle(widget, keyString, "history", "moreThanCheck"); realizeString(widget, keyString, "history", "moreThanEntry"); realizeComboBoxText(widget, keyString, "configuration", "MoreThanSize");/* Luc A - janv 2018 */ realizeToggle(widget, keyString, "history", "lessThanCheck"); realizeString(widget, keyString, "history", "lessThanEntry"); realizeComboBoxText(widget, keyString, "configuration", "LessThanSize");/* Luc A - janv 2018 */ realizeToggle(widget, keyString, "history", "afterCheck"); realizeString(widget, keyString, "history", "afterEntry"); realizeToggle(widget, keyString, "history", "beforeCheck"); realizeString(widget, keyString, "history", "beforeEntry"); realizeToggle(widget, keyString, "history", "folderDepthCheck"); realizeSpin(widget, keyString, "history", "folderDepthSpin"); /* Store Advanced Options Tab */ realizeToggle(widget, keyString, "history", "notExpressionCheckFile"); realizeToggle(widget, keyString, "history", "matchCaseCheckFile"); realizeToggle(widget, keyString, "history", "ignoreHiddenFiles"); realizeToggle(widget, keyString, "history", "dosExpressionRadioFile"); realizeToggle(widget, keyString, "history", "regularExpressionRadioFile"); realizeToggle(widget, keyString, "history", "singlePhaseCheckContents"); realizeToggle(widget, keyString, "history", "matchCaseCheckContents"); realizeToggle(widget, keyString, "history", "wildcardCheckContents"); realizeToggle(widget, keyString, "history", "regularExpressionRadioContents"); realizeToggle(widget, keyString, "history", "limitResultsCheckResults"); realizeSpin(widget, keyString, "history", "maxHitsSpinResults"); realizeToggle(widget, keyString, "history", "showLinesCheckResults"); realizeSpin(widget, keyString, "history", "showLinesSpinResults"); realizeToggle(widget, keyString, "history","followSymLinksCheck"); realizeToggle(widget, keyString, "history", "limitContentsCheckResults"); realizeSpin(widget, keyString, "history", "maxContentHitsSpinResults"); /* Store notebook global settings */ realizeNotebook(widget, keyString, "history", "searchNotebook"); } /* * Callback helper: store all search settings into config.ini */ void unrealize_searchNotebook (GtkWidget *widget) { GKeyFile *keyString = getGKeyFile(widget); GtkComboBox * combo = GTK_COMBO_BOX(lookup_widget(widget, "fileName")); /* Store notebook global settings */ unrealizeNotebook(widget, keyString, "history", "searchNotebook"); /* Store basic Tab */ unrealizeComboBox2(widget, keyString, "history", "fileName2"); unrealizeComboBox(widget, keyString, "history", "containingText2"); unrealizeToggle(widget, keyString, "history", "containingTextCheck2"); unrealizeComboBox(widget, keyString, "history", "lookIn2"); unrealizeToggle(widget, keyString, "history", "searchSubfoldersCheck2"); unrealizeToggle(widget, keyString, "history", "ignoreHiddenFiles"); /* Store advanced Tab */ unrealizeComboBox2(widget, keyString, "history", "fileName"); unrealizeToggle(widget, keyString, "history", "expertUserCheck"); unrealizeComboBox(widget, keyString, "history", "containingText"); unrealizeToggle(widget, keyString, "history", "containingTextCheck"); unrealizeComboBox(widget, keyString, "history", "lookIn"); unrealizeToggle(widget, keyString, "history", "searchSubfoldersCheck"); unrealizeToggle(widget, keyString, "history", "moreThanCheck"); unrealizeString(widget, keyString, "history", "moreThanEntry"); unrealizeComboBox(widget, keyString, "configuration", "MoreThanSize");/* Luc A - janv 2018 */ unrealizeToggle(widget, keyString, "history", "lessThanCheck"); unrealizeString(widget, keyString, "history", "lessThanEntry"); unrealizeComboBox(widget, keyString, "configuration", "LessThanSize");/* Luc A - janv 2018 */ unrealizeToggle(widget, keyString, "history", "afterCheck"); unrealizeString(widget, keyString, "history", "afterEntry"); unrealizeToggle(widget, keyString, "history", "beforeCheck"); unrealizeString(widget, keyString, "history", "beforeEntry"); unrealizeToggle(widget, keyString, "history", "folderDepthCheck"); unrealizeSpin(widget, keyString, "history", "folderDepthSpin"); /* Store Options Tab */ unrealizeToggle(widget, keyString, "history", "notExpressionCheckFile"); unrealizeToggle(widget, keyString, "history", "matchCaseCheckFile"); unrealizeToggle(widget, keyString, "history", "ignoreHiddenFiles"); unrealizeToggle(widget, keyString, "history", "dosExpressionRadioFile"); unrealizeToggle(widget, keyString, "history", "regularExpressionRadioFile"); unrealizeToggle(widget, keyString, "history", "singlePhaseCheckContents"); unrealizeToggle(widget, keyString, "history", "matchCaseCheckContents"); unrealizeToggle(widget, keyString, "history", "wildcardCheckContents"); unrealizeToggle(widget, keyString, "history", "regularExpressionRadioContents"); unrealizeToggle(widget, keyString, "history", "limitResultsCheckResults"); unrealizeSpin(widget, keyString, "history", "maxHitsSpinResults"); unrealizeToggle(widget, keyString, "history", "showLinesCheckResults"); unrealizeSpin(widget, keyString, "history", "showLinesSpinResults"); unrealizeToggle(widget, keyString, "history","followSymLinksCheck"); unrealizeToggle(widget, keyString, "history", "limitContentsCheckResults"); unrealizeSpin(widget, keyString, "history", "maxContentHitsSpinResults"); } /* * Callback helper: retrieve menubar settings from config */ void realize_menubar (GtkWidget *widget) { GKeyFile *keyString = getGKeyFile(widget); /* Restore View */ realizeMenuCheck(widget, keyString, "menuOptions", "toolbar2"); realizeMenuCheck(widget, keyString, "menuOptions", "status_bar1"); realizeMenuCheck(widget, keyString, "menuOptions", "horizontal_results1"); realizeMenuCheck(widget, keyString, "menuOptions", "vertical_results1"); /* Restore View->sort_Column */ realizeMenuCheck(widget, keyString, "menuOptions", "file_name1"); realizeMenuCheck(widget, keyString, "menuOptions", "location1"); realizeMenuCheck(widget, keyString, "menuOptions", "size1"); realizeMenuCheck(widget, keyString, "menuOptions", "type1"); realizeMenuCheck(widget, keyString, "menuOptions", "modified1"); realizeMenuCheck(widget, keyString, "menuOptions", "matches1"); /* Restore Settings */ realizeMenuCheck(widget, keyString, "menuOptions", "word_wrap1"); realizeMenuCheck(widget, keyString, "menuOptions", "autosize_columns"); } /* * Callback helper: store menubar settings to config */ void unrealize_menubar (GtkWidget *widget) { GKeyFile *keyString = getGKeyFile(widget); /* Store View */ unrealizeMenuCheck(widget, keyString, "menuOptions", "toolbar2"); unrealizeMenuCheck(widget, keyString, "menuOptions", "status_bar1"); unrealizeMenuCheck(widget, keyString, "menuOptions", "horizontal_results1"); unrealizeMenuCheck(widget, keyString, "menuOptions", "vertical_results1"); /* Store View->sort_Column */ unrealizeMenuCheck(widget, keyString, "menuOptions", "file_name1"); unrealizeMenuCheck(widget, keyString, "menuOptions", "location1"); unrealizeMenuCheck(widget, keyString, "menuOptions", "size1"); unrealizeMenuCheck(widget, keyString, "menuOptions", "type1"); unrealizeMenuCheck(widget, keyString, "menuOptions", "modified1"); unrealizeMenuCheck(widget, keyString, "menuOptions", "matches1"); /* Store Settings */ unrealizeMenuCheck(widget, keyString, "menuOptions", "word_wrap1"); unrealizeMenuCheck(widget, keyString, "menuOptions", "autosize_columns"); } /* * Callback helper: initialises the file name match result table columns. * Adds the "clicked" signals so that the sort columns can be chosen by the user. * Adds the "selection changed" signal so that the contents are changed when the user * clicks on a new row. */ void initTreeView_aux(GtkTreeView *treeview, GtkListStore *store, GtkTreeModel *sortedModel) { GtkCellRenderer *icon_renderer, *renderer, *folderRenderer;/* luc a. - 1 janv 2018 */ GtkTreeViewColumn *column; GtkTreeSelection *select; g_assert(treeview != NULL); gtk_tree_view_set_model (treeview, GTK_TREE_MODEL (sortedModel)); /* Create cell renderers */ renderer = gtk_cell_renderer_text_new (); folderRenderer = gtk_cell_renderer_text_new (); icon_renderer = gtk_cell_renderer_pixbuf_new();/* Luc A - 1 janv 2018 */ g_object_set(folderRenderer, "ellipsize", PANGO_ELLIPSIZE_MIDDLE, "ellipsize-set", TRUE, NULL); /* Add columns to the list */ /* icon view - Luc A - 1 janv 2018 */ column = gtk_tree_view_column_new_with_attributes ("", icon_renderer, "pixbuf", ICON_COLUMN, NULL); gtk_tree_view_append_column (treeview, column); /* end Luc A */ column = gtk_tree_view_column_new_with_attributes (_("Name"), renderer, "text", FILENAME_COLUMN, NULL); g_signal_connect ((gpointer) column, "clicked", G_CALLBACK (on_column_click), GINT_TO_POINTER(FILENAME_COLUMN)); gtk_tree_view_append_column (treeview, column); column = gtk_tree_view_column_new_with_attributes (_("Location"), folderRenderer, "text", LOCATION_COLUMN, NULL); g_signal_connect ((gpointer) column, "clicked", G_CALLBACK (on_column_click), GINT_TO_POINTER(LOCATION_COLUMN)); gtk_tree_view_append_column (treeview, column); column = gtk_tree_view_column_new_with_attributes (_("Size"), renderer, "text", SIZE_COLUMN, NULL); g_signal_connect ((gpointer) column, "clicked", G_CALLBACK (on_column_click), GINT_TO_POINTER(SIZE_COLUMN)); gtk_tree_view_append_column (treeview, column); column = gtk_tree_view_column_new_with_attributes (_("Type"), renderer, "text", TYPE_COLUMN, NULL); g_signal_connect ((gpointer) column, "clicked", G_CALLBACK (on_column_click), GINT_TO_POINTER(TYPE_COLUMN)); gtk_tree_view_append_column (treeview, column); column = gtk_tree_view_column_new_with_attributes (_("Modified"), renderer, "text", MODIFIED_COLUMN, NULL); g_signal_connect ((gpointer) column, "clicked", G_CALLBACK (on_column_click), GINT_TO_POINTER(MODIFIED_COLUMN)); gtk_tree_view_append_column (treeview, column); column = gtk_tree_view_column_new_with_attributes (_("Matches"), renderer, "text", MATCHES_COUNT_STRING_COLUMN, NULL); g_signal_connect ((gpointer) column, "clicked", G_CALLBACK (on_column_click), GINT_TO_POINTER(MATCHES_COUNT_STRING_COLUMN)); gtk_tree_view_append_column (treeview, column); /* Set up select call back handler */ /* Setup the selection handler */ select = gtk_tree_view_get_selection (treeview); gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE); g_signal_connect (G_OBJECT (select), "changed", G_CALLBACK (tree_selection_changed_cb), NULL); /* Allow clickable headers */ g_object_set(treeview, "headers-clickable", TRUE, NULL); } void initTreeView(GtkWidget *widget) { GtkListStore *store; GtkTreeModel *sortedModel; /* Attach new list store object to treeview widget */ store = gtk_list_store_new (N_COLUMNS, /* Total number of columns */ GDK_TYPE_PIXBUF, /* added Luc A. - 1 janv 2018 */ G_TYPE_STRING, /* File name */ G_TYPE_STRING, /* Location */ G_TYPE_STRING, /* File size */ G_TYPE_STRING, /* File Type */ G_TYPE_STRING, /* Modified date */ G_TYPE_STRING, /* Complete File Name */ G_TYPE_STRING, /* Match count (string) */ G_TYPE_UINT, /* File size in bytes */ G_TYPE_UINT, /* Modified date as int */ G_TYPE_UINT, /* Match count */ G_TYPE_UINT); /* Match index */ sortedModel = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL(store)); initTreeView_aux(GTK_TREE_VIEW(lookup_widget(widget, "treeview1")), store, sortedModel); initTreeView_aux(GTK_TREE_VIEW(lookup_widget(widget, "treeview2")), store, sortedModel); g_object_unref(store); } /* * Callback helper: initialises the two fonts for the content and match results buffer */ void initTextView_aux(GtkTextView *textview) { GtkTextBuffer *buffer; GtkTextTag *tag; g_assert(textview != NULL); buffer = gtk_text_view_get_buffer (textview); /* Used to highlight each match result */ tag = gtk_text_buffer_create_tag (buffer, "word_highlight", "foreground", "black","background", "#6DED2F", "weight", PANGO_WEIGHT_NORMAL, "weight-set", TRUE, "style", PANGO_STYLE_NORMAL, "style-set", TRUE, "underline", PANGO_UNDERLINE_SINGLE, "underline-set", FALSE, "justification", GTK_JUSTIFY_LEFT, NULL); /* Used to force the default font to standard i.e. no bold/italics */ tag = gtk_text_buffer_create_tag (buffer, "results_text", "weight", PANGO_WEIGHT_NORMAL, "weight-set", TRUE, "style", PANGO_STYLE_NORMAL, "style-set", TRUE, "left-margin", 30, "left-margin-set", TRUE, "justification", GTK_JUSTIFY_LEFT, NULL); /* Used to make the heading line stand out i.e. bold and italics */ tag = gtk_text_buffer_create_tag (buffer, "results_header", "weight", PANGO_WEIGHT_BOLD, "weight-set", TRUE, "style", PANGO_STYLE_ITALIC, "style-set", TRUE, NULL); /* Used to make the line numbers stand out i.e. just italics */ tag = gtk_text_buffer_create_tag (buffer, "results_line_number", "pixels-above-lines", 15, "pixels-above-lines-set", TRUE, "weight", PANGO_WEIGHT_NORMAL, "weight-set", TRUE, "style", PANGO_STYLE_ITALIC, "style-set", TRUE, "underline", PANGO_UNDERLINE_SINGLE, "underline-set", TRUE, NULL); tag = gtk_text_buffer_create_tag (buffer, "no_context", "weight", PANGO_WEIGHT_NORMAL, "weight-set", TRUE, "style", PANGO_STYLE_NORMAL, "style-set", TRUE, "foreground", "darkGrey", "underline-set", FALSE, NULL); return; } void initTextView(GtkWidget *widget) { initTextView_aux(GTK_TEXT_VIEW(lookup_widget(widget, "textview1"))); initTextView_aux(GTK_TEXT_VIEW(lookup_widget(widget, "textview4"))); } /* * Callback helper: initialises the statusbar memory structure - automatically destroyed with parent */ void realize_statusbar (GtkWidget *widget) { statusbarData *status; GtkStatusbar *statusbar = GTK_STATUSBAR(lookup_widget(widget, "statusbar1")); status = g_object_get_data(G_OBJECT(mainWindowApp), MASTER_STATUSBAR_DATA); /* we get the research mode - Luc A Feb 2018 */ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (lookup_widget(widget, "dosExpressionRadioFile")))) { g_sprintf(status->constantString, _("Ready-research mode with jokers(DOS like)")); } else g_sprintf(status->constantString, _("Ready-research mode with RegEx")); gtk_statusbar_push(statusbar, STATUSBAR_CONTEXT_ID(statusbar), status->constantString); } /************************************************************** * Generic save/restore commands **************************************************************/ /* * Callback helper: retrieve file dialog's filename from config.ini settings */ void realizeFileDialog(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { gchar *filename; GtkWidget *dialog = lookup_widget(widget, name); if (g_key_file_has_key(keyString, group, name, NULL)) { filename = g_key_file_get_string (keyString, group, name, NULL); if (filename != NULL) { gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog), filename); g_free(filename); } } } /* * Callback helper: store file dialog's filename into config.ini settings */ void unrealizeFileDialog(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { gchar *filename; GtkWidget *dialog = lookup_widget(widget, name); filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (dialog)); if (filename != NULL) { g_key_file_set_string (keyString, group, name, filename); g_free(filename); } } /* * Callback helper: retrieve generic menu item's checkbox value from config.ini settings */ void realizeMenuCheck(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { if (g_key_file_has_key(keyString, group, name, NULL)) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(lookup_widget(widget, name)), g_key_file_get_boolean (keyString, group, name, NULL)); } } /* * Callback helper: store generic menu item's checkbox value into config.ini settings */ void unrealizeMenuCheck(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { g_key_file_set_boolean (keyString, group, name, gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(lookup_widget(widget, name)))); } /* * Callback helper: retrieve generic text entry box text from config.ini settings */ void realizeString(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { gchar *tmpString; if (g_key_file_has_key(keyString, group, name, NULL)) { tmpString = g_key_file_get_string (keyString, group, name, NULL); if (tmpString != NULL) { gtk_entry_set_text(GTK_ENTRY(lookup_widget((widget), name)), tmpString); g_free(tmpString); } } } /* * Callback helper: store generic text entry box text into config.ini settings */ void unrealizeString(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { g_key_file_set_string (keyString, group, name, gtk_entry_get_text(GTK_ENTRY(lookup_widget(widget, name)))); } /* * Callback helper: retrieve file chooser button filename from config.ini settings */ gboolean realizeFileButton(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { GtkFileChooser *chooser = GTK_FILE_CHOOSER(lookup_widget(widget, name)); gchar *tmpString; gboolean retVal = FALSE; if (g_key_file_has_key(keyString, group, name, NULL)) { tmpString = g_key_file_get_string (keyString, group, name, NULL); if (tmpString != NULL) { retVal = gtk_file_chooser_set_filename (chooser, tmpString); g_free(tmpString); } } return retVal; } /* * Callback helper: store file chooser button filename into config.ini settings */ void unrealizeFileButton(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { GtkFileChooser *chooser = GTK_FILE_CHOOSER(lookup_widget(widget, name)); gchar *tmpString = gtk_file_chooser_get_filename (chooser); if (tmpString != NULL) { g_key_file_set_string (keyString, group, name, tmpString); g_free(tmpString); } } /* * Callback helper: retrieve generic toggle button value from config.ini settings */ void realizeToggle(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { if (g_key_file_has_key(keyString, group, name, NULL)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, name)), g_key_file_get_boolean (keyString, group, name, NULL)); } } /* * Callback helper: store generic toggle button value into config.ini settings */ void unrealizeToggle(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { g_key_file_set_boolean (keyString, group, name, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, name)))); } /* * Callback helper: retrieve generic current notebook page number from config.ini settings */ void realizeNotebook(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { if (g_key_file_has_key(keyString, group, name, NULL)) { gtk_notebook_set_current_page(GTK_NOTEBOOK(lookup_widget(widget, name)), g_key_file_get_integer (keyString, group, name, NULL)); } } /* * Callback helper: store generic current notebook page number into config.ini settings */ void unrealizeNotebook(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { g_key_file_set_integer (keyString, group, name, gtk_notebook_get_current_page(GTK_NOTEBOOK(lookup_widget(widget, name)))); } /* * Callback helper: retrieve generic toggle button value from config.ini settings */ void realizeSpin(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { gdouble spinValue; if (g_key_file_has_key(keyString, group, name, NULL)) { spinValue = (gdouble)g_key_file_get_integer (keyString, group, name, NULL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(lookup_widget(widget, name)), spinValue); } } /* * Callback helper: store generic toggle button value into config.ini settings */ void unrealizeSpin(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { gdouble spinValue = gtk_spin_button_get_value(GTK_SPIN_BUTTON(lookup_widget(widget, name))); g_key_file_set_integer (keyString, group, name, (gint)spinValue); } /************************************************************** * Specific save/restore commands (for more complex widgets) **************************************************************/ /* * Callback helper: retrieve window's dimensions from config.ini settings */ void realizeWindow(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { gint *width_height; gsize length; if (g_key_file_has_key(keyString, group, name, NULL)) { width_height = g_key_file_get_integer_list (keyString, group, name, &length, NULL); if (length == 2) { gtk_window_set_default_size (GTK_WINDOW(lookup_widget(widget,name)), width_height[0], width_height[1]); } g_free(width_height); } } /* * Callback helper: store window's dimensions into config.ini settings */ void unrealizeWindow(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { gint width_height[2]; gtk_window_get_size (GTK_WINDOW(lookup_widget(widget, name)), &width_height[0], &width_height[1]); g_key_file_set_integer_list (keyString, group, name, width_height, 2); } /* * Callback helper: retrieve content result's font description from config.ini settings */ void realizeTextviewFont(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { GtkTextView *textview; if (getResultsViewHorizontal(widget)) { textview = GTK_TEXT_VIEW(lookup_widget(widget, "textview1")); } else { textview = GTK_TEXT_VIEW(lookup_widget(widget, "textview4")); } gchar *newFont; PangoFontDescription *desc; PangoContext* context = gtk_widget_get_pango_context (GTK_WIDGET(textview)); g_assert(context != NULL); if (g_key_file_has_key(keyString, group, name, NULL)) { newFont = g_key_file_get_string (keyString, group, name, NULL); if (newFont != NULL) { desc = pango_font_description_from_string(newFont); if (desc != NULL) { gtk_widget_modify_font (GTK_WIDGET(textview), desc); pango_font_description_free(desc); } g_free(newFont); } } } /* * Callback helper: store content result's font description into config.ini settings */ void unrealizeTextviewFont(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { GtkTextView *textview; if (getResultsViewHorizontal(widget)) { textview = GTK_TEXT_VIEW(lookup_widget(widget, "textview1")); } else { textview = GTK_TEXT_VIEW(lookup_widget(widget, "textview4")); } PangoContext* context = gtk_widget_get_pango_context (GTK_WIDGET(textview)); PangoFontDescription *desc = pango_context_get_font_description(context); gchar *newFont = pango_font_description_to_string(desc); if (newFont != NULL) { g_key_file_set_string (keyString, group, name, newFont); g_free(newFont); } } /* * Callback helper: retrieve content result's highlight colour from config.ini settings */ void realizeTextviewHighlight(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { GtkTextView *textview; if (getResultsViewHorizontal(widget)) { textview = GTK_TEXT_VIEW(lookup_widget(widget, "textview1")); } else { textview = GTK_TEXT_VIEW(lookup_widget(widget, "textview4")); } gchar *newColor; GdkColor cp; GtkTextBuffer* textBuf = gtk_text_view_get_buffer (textview); GtkTextTagTable* tagTable = gtk_text_buffer_get_tag_table(textBuf); GtkTextTag* tag = gtk_text_tag_table_lookup(tagTable, "word_highlight"); g_assert(textview != NULL); g_assert(tag != NULL); g_assert(tagTable != NULL); g_assert(textBuf != NULL); if (g_key_file_has_key(keyString, group, name, NULL)) { newColor = g_key_file_get_string (keyString, group, name, NULL); if (newColor != NULL) { if (gdk_color_parse (newColor, &cp)) { g_object_set( G_OBJECT(tag), "background-gdk", &cp, NULL); } g_free(newColor); } } } /* * Callback helper: store content result's highlight colour into config.ini settings */ void unrealizeTextviewHighlight(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { GtkTextView *textview; if (getResultsViewHorizontal(widget)) { textview = GTK_TEXT_VIEW(lookup_widget(widget, "textview1")); } else { textview = GTK_TEXT_VIEW(lookup_widget(widget, "textview4")); } gchar *newColor; GdkColor *cp; GtkTextBuffer* textBuf = gtk_text_view_get_buffer (textview); GtkTextTagTable* tagTable = gtk_text_buffer_get_tag_table(textBuf); GtkTextTag* tag = gtk_text_tag_table_lookup(tagTable, "word_highlight"); g_object_get( G_OBJECT(tag), "background-gdk", &cp, NULL); newColor = gtk_color_selection_palette_to_string(cp, 1); g_key_file_set_string (keyString, group, name, newColor); gdk_color_free(cp); g_free(newColor); } /* * Callback helper: retrieve generic combo-model value from config.ini settings */ void realizeComboModel(GtkListStore *store, GKeyFile *keyString, const gchar *group, const gchar *name) { gchar **tmpString; gsize length; gint i; GtkTreeIter iter; g_assert(store != NULL); if (g_key_file_has_key(keyString, group, name, NULL)) { tmpString = g_key_file_get_string_list (keyString, group, name, &length, NULL); if (tmpString != NULL) { for (i=(gint)length; i>0; i--) { g_assert(store != NULL); gtk_list_store_prepend (store, &iter); gtk_list_store_set (store, &iter, 0, tmpString[i-1], -1); } g_strfreev(tmpString); } } } /* * Callback helper: retrieve generic Combo - box from config.ini settings */ void realizeComboBox(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { gchar *readString; gsize length; gint i; gint activeRow = 0; GtkComboBox *comboBox = GTK_COMBO_BOX(lookup_widget(widget, name)); /*Retrieve model */ realizeComboModel(GTK_LIST_STORE(gtk_combo_box_get_model(comboBox)), keyString, group, name); /* Retrieve active row */ readString = g_strconcat(name, "-active", NULL); g_assert(readString != NULL); if (g_key_file_has_key(keyString, group, readString, NULL)) { activeRow = g_key_file_get_integer (keyString, group, readString, NULL); gtk_combo_box_set_active (comboBox, activeRow); } g_free(readString); } /* callback only for size of files units Luc A - Janv 2018 */ void realizeComboBoxText(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name ) { GtkComboBox *comboBox = GTK_COMBO_BOX(lookup_widget(widget, name)); gchar* keyname; gint setActive; /* Retrieve active row */ setActive = (intptr_t)g_malloc(sizeof(gint)); keyname = g_strconcat(name, "-active", NULL); if (g_key_file_has_key(keyString, group, keyname, NULL)) { setActive = g_key_file_get_integer (keyString, group, keyname, NULL); } else { setActive = 0; } g_free(keyname); // printf("valeur de cette clef:%d\n", setActive); gtk_combo_box_set_active (GTK_COMBO_BOX (comboBox),setActive); } /* * Callback helper: retrieve Combobox with two models from config.ini settings */ void realizeComboBox2(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { GtkComboBox *comboBox = GTK_COMBO_BOX(lookup_widget(widget, name)); gint* setActive; gchar* keyname; /*Retrieve model */ keyname = g_strconcat(name, "regex", NULL); realizeComboModel(GTK_LIST_STORE(g_object_get_data(G_OBJECT(comboBox), "regex")), keyString, group, keyname); g_free(keyname); keyname = g_strconcat(name, "noregex", NULL); realizeComboModel(GTK_LIST_STORE(g_object_get_data(G_OBJECT(comboBox), "noregex")), keyString, group, keyname); g_free(keyname); /* Retrieve active row */ setActive = (gint *)g_malloc(sizeof(gint)); keyname = g_strconcat(name, "regex-active", NULL); if (g_key_file_has_key(keyString, group, keyname, NULL)) { *setActive = g_key_file_get_integer (keyString, group, keyname, NULL); } else { *setActive = -1; } g_free(keyname); g_object_set_data_full(G_OBJECT(comboBox), "regex-active", (gpointer)setActive, &g_free); setActive = (gint *)g_malloc(sizeof(gint)); keyname = g_strconcat(name, "noregex-active", NULL); if (g_key_file_has_key(keyString, group, keyname, NULL)) { *setActive = g_key_file_get_integer (keyString, group, keyname, NULL); } else { *setActive = -1; } g_free(keyname); g_object_set_data_full(G_OBJECT(comboBox), "noregex-active", (gpointer)setActive, &g_free); /* Default to Regex mode */ gtk_combo_box_set_model(comboBox, GTK_TREE_MODEL(g_object_get_data(G_OBJECT(comboBox), "regex"))); gtk_combo_box_set_active(comboBox, *((gint *)g_object_get_data(G_OBJECT(comboBox),"regex-active"))); } /* * Callback helper: store generic combo-box model into config.ini settings */ void unrealizeComboModel(GtkListStore *store, GKeyFile *keyString, const gchar *group, const gchar *name, gint activeRow) { GtkTreeIter iter; gchar *readString = NULL; gchar **outString; gint i=0; g_assert(store != NULL); /* Store active row */ readString = g_strconcat(name, "-active", NULL); g_key_file_set_integer (keyString, group, readString, activeRow); g_free(readString); /* Find first, and then loop through all until duplicate found */ if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL(store), &iter)) { outString = g_malloc((1+gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL))* sizeof(gchar *)); do { gtk_tree_model_get (GTK_TREE_MODEL(store), &iter, 0, &readString, -1); if (readString != NULL) { outString[i++] = readString; } } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter)); outString[i] = NULL; /* Terminate array */ g_key_file_set_string_list (keyString, group, name, (const gchar**)outString, i); /* Clean up */ g_strfreev(outString); } } /* * Callback helper: store generic combo box into config.ini settings */ void unrealizeComboBox(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { GtkComboBox *comboBox = GTK_COMBO_BOX(lookup_widget(widget, name)); gint activeRow = gtk_combo_box_get_active(comboBox); unrealizeComboModel(GTK_LIST_STORE(gtk_combo_box_get_model(comboBox)), keyString, group, name, activeRow); } /* * Callback helper: store combo box with two models into config.ini settings */ void unrealizeComboBox2(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name) { GtkComboBox *comboBox = GTK_COMBO_BOX(lookup_widget(widget, name)); gint regexActive; gint noregexActive; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "regularExpressionRadioFile")))) { regexActive = gtk_combo_box_get_active(comboBox); noregexActive = *((gint *)g_object_get_data(G_OBJECT(comboBox), "noregex-active")); } else { regexActive = *((gint *)g_object_get_data(G_OBJECT(comboBox), "regex-active")); noregexActive = gtk_combo_box_get_active(comboBox); } gchar * keyname = g_strconcat(name, "regex", NULL); unrealizeComboModel(GTK_LIST_STORE(g_object_get_data(G_OBJECT(comboBox), "regex")), keyString, group, keyname, regexActive); g_free(keyname); keyname = g_strconcat(name, "noregex", NULL); unrealizeComboModel(GTK_LIST_STORE(g_object_get_data(G_OBJECT(comboBox), "noregex")), keyString, group, keyname, noregexActive); g_free(keyname); } /* * Callback helper: retrieve file results table's sort column plus order from config.ini settings */ void realizeTreeview(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name, gboolean autoColumnWidth) { gchar *fullName; GtkCheckMenuItem *toggle_button; gint colNum; GtkSortType colOrder; /* restore sort column */ fullName = g_strconcat(name, "Sortcol", NULL); if (g_key_file_has_key(keyString, group, fullName, NULL)) { colNum = g_key_file_get_integer (keyString, group, fullName, NULL); } g_free(fullName); /* restore sort order */ fullName = g_strconcat(name, "SortcolOrder", NULL); if (g_key_file_has_key(keyString, group, fullName, NULL)) { colOrder = g_key_file_get_integer (keyString, group, fullName, NULL); } g_free(fullName); setSortMenuItem(colNum, colOrder); } /* * Callback helper: store file results table's column sort column plus order into config.ini settings */ void unrealizeTreeview(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name, gboolean autoColumnWidth) { gchar *fullName; GtkCheckMenuItem *toggle_button; gint colNum; GtkSortType sortOrder; /* save sort column + order */ getSortMenuItem(&colNum, &sortOrder); fullName = g_strconcat(name, "Sortcol", NULL); g_key_file_set_integer (keyString, group, fullName, colNum); g_free(fullName); fullName = g_strconcat(name, "SortcolOrder", NULL); g_key_file_set_integer (keyString, group, fullName, sortOrder); g_free(fullName); } /* * Callback helper: retrieve file results table's column width from config.ini settings * TODO: Replace strcmp command with index (i.e. numerical location) based test, as string name is liable to change with locale.. */ void realizeTreeviewColumns (GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name, gboolean autoColumnWidth) { GtkTreeView *treeview; if (getResultsViewHorizontal(widget)) { treeview = GTK_TREE_VIEW(lookup_widget(widget, "treeview1")); } else { treeview = GTK_TREE_VIEW(lookup_widget(widget, "treeview2")); } GList *allColumns = gtk_tree_view_get_columns(treeview); GtkTreeViewColumn *column; gchar *fullName; gint colWidth; g_assert(treeview != NULL); /* Internal error if unable to find treeview */ if (allColumns == NULL) { return; /* Not an error, just means treeview is not yet set up */ } /* restore column widths */ allColumns = g_list_first(allColumns); do { column = allColumns->data; if (autoColumnWidth) { gtk_tree_view_column_set_resizable (column, FALSE); if (strcmp(gtk_tree_view_column_get_title(column), _("Location")) == 0) { gtk_tree_view_column_set_min_width (column, 350); } else { gtk_tree_view_column_set_min_width (column, -1); } gtk_tree_view_column_set_max_width (column, -1); gtk_tree_view_column_set_fixed_width (column, 1); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); } else { gtk_tree_view_column_set_min_width (column, 50); gtk_tree_view_column_set_max_width (column, -1); gtk_tree_view_column_set_resizable (column, TRUE); gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); fullName = g_strconcat(name, gtk_tree_view_column_get_title(column), NULL); if (g_key_file_has_key(keyString, group, fullName, NULL)) { colWidth = g_key_file_get_integer (keyString, group, fullName, NULL); gtk_tree_view_column_set_fixed_width (column, colWidth); } g_free(fullName); } } while ((allColumns = g_list_next(allColumns)) != NULL); g_list_free(allColumns); } /* * Callback helper: store file results table's column width into config.ini settings */ void unrealizeTreeviewColumns (GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name, gboolean autoColumnWidth) { GtkTreeView *treeview; if (getResultsViewHorizontal(widget)) { treeview = GTK_TREE_VIEW(lookup_widget(widget, "treeview1")); } else { treeview = GTK_TREE_VIEW(lookup_widget(widget, "treeview2")); } GList *allColumns = gtk_tree_view_get_columns(treeview); GtkTreeViewColumn *column; gchar *fullName; gint colWidth; g_assert(treeview != NULL); /* Internal error if unable to find treeview */ if (allColumns == NULL) { return; /* Not an error, just means treeview is not yet set up */ } /* store column widths */ if (!autoColumnWidth) { allColumns = g_list_first(allColumns); do { column = allColumns->data; fullName = g_strconcat(name, gtk_tree_view_column_get_title(column), NULL); colWidth = gtk_tree_view_column_get_width (column); g_key_file_set_integer (keyString, group, fullName, colWidth); g_free(fullName); } while ((allColumns = g_list_next(allColumns)) != NULL); g_list_free(allColumns); } } /********************************************************* * Tree view handlers (Right click + sort columns) *********************************************************/ /* * Internal helper: destroys pop-up menu created with right-click on results table. */ void undo_popup_menu(GtkWidget *attach_widget, GtkMenu *menu) { gtk_widget_destroy(GTK_WIDGET(menu)); } /* * Callback helper: creates pop-up menu (user presses right-click on results table). * Sets maximum time, and links destructor to undo_popup_menu */ void do_popup_menu (GtkWidget *widget, GdkEventButton *event) { GtkWidget *menu; int button, event_time; menu = create_menu1(); if (event) { button = event->button; event_time = event->time; } else { button = 0; event_time = gtk_get_current_event_time (); } gtk_menu_attach_to_widget (GTK_MENU (menu), widget, undo_popup_menu); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, event->button, event->time); return; } /* * Callback helper: detaches the pop-up menu (user presses right-click on results table). * In turn, detached menu is destroyed by undo_popup_menu destructor. */ void detachMenu(GtkMenuItem *menuitem) { GtkWidget *treeView; if (getResultsViewHorizontal(GTK_WIDGET(menuitem))) { treeView = (lookup_widget(GTK_WIDGET(menuitem), "treeview1")); } else { treeView = (lookup_widget(GTK_WIDGET(menuitem), "treeview2")); } GList *menuList = gtk_menu_get_for_attach_widget (treeView); gtk_menu_detach(menuList->data); /* always first item */ } /* * Internal callback: signal set by initTreeView function. * Causes file's content matches to be displayed, and formatted. */ void tree_selection_changed_cb (GtkTreeSelection *selection, gpointer data) { GtkWidget *textBox; GtkTextBuffer *buffer; searchData *mSearchData; /* Master search data */ searchControl *mSearchControl; /* Master search control */ lineMatch *newTextMatch, *prevTextMatch = NULL; GtkTreeIter iter; GtkTreeModel *model; gchar *fullFileName, *size, *mdate, tmpString[MAX_FILENAME_STRING + 1]; gchar *tmpString2; GtkTextIter txtIter, tmpIter; GtkTextIter tmpStartIter, tmpEndIter; GtkTextIter start, end; gsize count=0, tmpCount; guint matchIndex; gint i = 0; gint lineCount = 2; /* Heading, plus options (i.e. 2-lines) */ GObject *window1; gboolean setWordWrap; gchar *t1; gchar *tmpStr = g_object_get_data(G_OBJECT(mainWindowApp), "noContextSearchString"); gint errorCount = 0; /* Temp debug */ gint a,b; gint tmpStartOffset, tmpEndOffset; gchar *tmptext = NULL; gint count_hits = 0; /* counter INSIDE a line in order to manage the max display hits option for results - Luc A janv 2018 */ gboolean fLimitHitsHighlighting = FALSE; gint max_count_hits = (gint) gtk_spin_button_get_value( GTK_SPIN_BUTTON(g_object_get_data(G_OBJECT(mainWindowApp), "maxContentHitsSpinResults"))); g_assert(tmpStr != NULL); g_assert(selection != NULL); fLimitHitsHighlighting = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON((g_object_get_data(G_OBJECT(mainWindowApp), "limitContentsCheckResults")))); if ( gtk_tree_selection_count_selected_rows(selection)== 1) { // printf("//// salut je suis dans savstat ////\n"); if (gtk_tree_selection_get_selected (selection, &model, &iter)) { // printf("//// passé test selection /////\n"); g_assert(model != NULL); if (getResultsViewHorizontal(GTK_WIDGET(gtk_tree_selection_get_tree_view(selection)))) { textBox = lookup_widget(GTK_WIDGET(gtk_tree_selection_get_tree_view(selection)), "textview1"); } else { textBox = lookup_widget(GTK_WIDGET(gtk_tree_selection_get_tree_view(selection)), "textview4"); } window1 = G_OBJECT(lookup_widget(GTK_WIDGET(textBox), "window1")); setWordWrap = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(lookup_widget(textBox, "word_wrap1"))); /* luc A janv 2018 */ GtkWrapMode wrap = GTK_WRAP_NONE; if(setWordWrap) wrap = GTK_WRAP_WORD; gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textBox), wrap); gtk_text_view_set_justification( GTK_TEXT_VIEW(textBox), GTK_JUSTIFY_LEFT ); g_assert(textBox != NULL); g_assert(window1 != NULL); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textBox)); g_assert(buffer != NULL); gtk_text_buffer_set_text(buffer, "", -1); /* Clear text! */ gtk_text_buffer_get_start_iter(buffer, &txtIter); /* Find start iter.. */ /* Get global data from the text view widget pointer */ // g_static_mutex_lock(&mutex_Data); mSearchData = g_object_get_data(window1, MASTER_SEARCH_DATA); g_assert(mSearchData != NULL); //g_static_mutex_unlock(&mutex_Data); //g_static_mutex_lock(&mutex_Control); mSearchControl = g_object_get_data(window1, MASTER_SEARCH_CONTROL); g_assert(mSearchControl != NULL); //g_static_mutex_unlock(&mutex_Control); gtk_tree_model_get (model, &iter, MATCHES_COUNT_COLUMN, &count, -1); if (count > 0) { gtk_tree_model_get (model, &iter, FULL_FILENAME_COLUMN, &fullFileName, SIZE_COLUMN, &size, MODIFIED_COLUMN, &mdate, MATCH_INDEX_COLUMN, &matchIndex, -1); g_assert(fullFileName != NULL); g_assert(size != NULL); g_assert(mdate != NULL); /* affiche le hAUT de la prévisua : chemin vers fichier avec sa date, en noir gras */ tmpString2 = g_strconcat(fullFileName, " (", size, " ", mdate, ")\n", NULL); gtk_text_buffer_insert_with_tags_by_name (buffer, &txtIter, tmpString2, -1, "results_header", NULL); g_free(tmpString2); /* Add line to describe options applied at run-time in medium grey*/ tmpString2 = generateContentOptionsString(mSearchControl); gtk_text_buffer_insert_with_tags_by_name (buffer, &txtIter, tmpString2, -1, "no_context", NULL); g_free(tmpString2); //g_static_mutex_lock(&mutex_Data); /* count = number of text hits inside the current text == all the file buffer*/ if ((mSearchControl->flags & SEARCH_EXTRA_LINES)!=0) { for (i=0; ilineMatchArray->len); newTextMatch = g_ptr_array_index(mSearchData->lineMatchArray,(guint)(i + matchIndex)); g_assert(newTextMatch != NULL); if ((prevTextMatch == NULL) || (prevTextMatch->lineNum != newTextMatch->lineNum)) { /* tmpcount = nbre caractères écrits, tmpstring buffer avec la chaîne, MAX_FILENAME_STRING longueur maxi autorisée, _("line" ) format d'affichage type C classique, nexyexymatch la valeur numérique sui sera passée dans %d */ if(newTextMatch->fOfficeFile) tmpCount = g_snprintf(tmpString, MAX_FILENAME_STRING, _("Paragraph Number: %d\n"),(gint) newTextMatch->lineNum); else tmpCount = g_snprintf(tmpString, MAX_FILENAME_STRING, _("Line Number: %d\n"),(gint) newTextMatch->lineNum); gtk_text_buffer_insert_with_tags_by_name (buffer, &txtIter, tmpString, -1, "results_line_number", NULL); gtk_text_buffer_insert_with_tags_by_name (buffer, &txtIter, newTextMatch->pLine, -1, "results_text", NULL); gtk_text_buffer_insert (buffer, &txtIter, "\n", -1); count_hits = 0; /* reset at every new line/paragraph */ lineCount += newTextMatch->lineCountBefore; } else { lineCount -= (prevTextMatch->lineCountAfter + 1); } /* Luc A janv 2018 */ if(((count_hitsoffsetStart, tmptext); tmpEndOffset = convertRegexGtk(newTextMatch->offsetEnd, tmptext); g_free(tmptext); // printf("lineCiunt=%d pline:::\n%s////\n", lineCount, newTextMatch->pLine); if ( ((b >= (tmpEndOffset)) && (b >= (tmpStartOffset)))) { // printf("off départ =%d corrigé = %d fin =%d corrigé=%d \n",newTextMatch->offsetStart, // tmpStartOffset ,newTextMatch->offsetEnd,tmpEndOffset ); //gtk_text_buffer_get_iter_at_line_offset (buffer, &start, lineCount, (newTextMatch->offsetStart)); //gtk_text_buffer_get_iter_at_line_offset (buffer, &end, lineCount, (newTextMatch->offsetEnd)); gtk_text_buffer_get_iter_at_line_offset (buffer, &start, lineCount, tmpStartOffset); gtk_text_buffer_get_iter_at_line_offset (buffer, &end, lineCount, tmpEndOffset); gtk_text_buffer_apply_tag_by_name(buffer, "word_highlight", &start, &end); count_hits++; // printf("***line %d hits inside =%d ***\n", lineCount, count_hits); }/* if tests a b */ else { errorCount ++; g_printf(_("\nInternal error %d! Unable to highlight line - offset beyond line-end.\n"),(gint) errorCount); g_printf(_("Please email all debug text to cottrela@users.sf.net.\n")); g_printf(_(" Debug: fn='%s'\n"), fullFileName); g_printf(_(" Debug: tc=%d + os=%d || oe=%d\n"),(gint) tmpCount,(gint) newTextMatch->offsetStart, (gint) newTextMatch->offsetEnd); g_printf(_(" Debug: %d) '%s'\n"), (gint)newTextMatch->lineNum, newTextMatch->pLine); if (errorCount > 3) { break; /* Exit loop as the rest of the file is likely to be corrupt too...*/ } }/* elseif test a b */ }/* end display block */ lineCount += (newTextMatch->lineCountAfter + 1); prevTextMatch = newTextMatch; } } else { /* Otherise, only display line numbers - no actual file contents */ for (i=0; ilineMatchArray, (i + matchIndex)); g_assert(newTextMatch != NULL); if ((prevTextMatch == NULL) || (prevTextMatch->lineNum != newTextMatch->lineNum)) { tmpCount = g_snprintf(tmpString, MAX_FILENAME_STRING, _("Line Number: %d\n"), (gint)newTextMatch->lineNum); gtk_text_buffer_insert (buffer, &txtIter, tmpString, -1); lineCount += newTextMatch->lineCountBefore; } else { lineCount -= (prevTextMatch->lineCountAfter + 1); } lineCount += (newTextMatch->lineCountAfter + 1); prevTextMatch = newTextMatch; } } //g_static_mutex_unlock(&mutex_Data); g_assert(fullFileName != NULL); g_assert(size != NULL); g_assert(mdate != NULL); g_free (fullFileName); g_free (size); g_free (mdate); } else { /* Print warning out just to fill the space */ gtk_tree_model_get (model, &iter, FULL_FILENAME_COLUMN, &fullFileName, SIZE_COLUMN, &size, MODIFIED_COLUMN, &mdate, MATCH_INDEX_COLUMN, &matchIndex, -1); tmpString2 = g_strconcat(fullFileName, " (", size, " ", mdate, ")\n", NULL); gtk_text_buffer_insert (buffer, &txtIter, tmpString2, -1); g_free(tmpString2); gtk_text_buffer_insert_with_tags_by_name (buffer, &txtIter, tmpStr, -1, "no_context", NULL); }/* elseif */ } }/* endif test rajouté par moi */ }/* end of function */ /* * Internal helper: returns new string containing a textual description for all content specific options * e.g. Options: None * e.g. Options: 2 extra lines shown per hit; case-sensitive; */ gchar *generateContentOptionsString(searchControl *mSearchControl) { GString *retGString = g_string_new(_("Options: ")); /* Return string */ guint options_flag; gint count1, count2; gboolean noFlags = TRUE; //g_static_mutex_lock(&mutex_Control); options_flag = mSearchControl->flags; count1 = mSearchControl->numExtraLines; // printf("* nbre extra lines :%d *\n", count1); count2 = mSearchControl->limitContentResults; //g_static_mutex_unlock(&mutex_Control); if (options_flag & SEARCH_CASE_SENSITIVE) { g_string_append(retGString, _("case sensitive; ")); noFlags = FALSE; } if (options_flag & SEARCH_EXTRA_LINES) { if (count1 == 1) { g_string_append(retGString, _("display 1 extra line around match; ")); noFlags = FALSE; } else if (count1 > 1) { g_string_append_printf(retGString, _("display %d extra lines around match; "), count1); noFlags = FALSE; } } else { g_string_append(retGString, _("only showing line numbers; ")); noFlags = FALSE; } if (options_flag & SEARCH_LIMIT_CONTENT_SHOWN) { if (count2 == 1) { g_string_append(retGString, _("only showing first content match; ")); noFlags = FALSE; } else { g_string_append_printf(retGString, _("only showing first %d content matches; "), count2); noFlags = FALSE; } } if (noFlags) { g_string_append(retGString, _("none")); } else { g_string_truncate(retGString, (retGString->len - 2)); } g_string_append(retGString, _(".\n")); return g_string_free(retGString, FALSE); } /* * Internal callback: signal set by initTreeView function. * Causes table to sort with respect to the user_data column. */ void on_column_click (GtkTreeViewColumn *treeviewcolumn, gpointer user_data) { setSortMenuItem(GPOINTER_TO_INT(user_data), -1); } /* * Callback helper: common function called whenever the sort order is changed in the menu. * This function causes the table to get up/down arrows, and for the data to actually be re-sorted. * All other sort-functions will eventually cause this function to be executed. */ void columnClick(GtkWidget *widget, gint column) { gint oldColumn; GtkSortType direction; GtkTreeView *listview; if (getResultsViewHorizontal(widget)) { listview = GTK_TREE_VIEW(lookup_widget(widget, "treeview1")); } else { listview = GTK_TREE_VIEW(lookup_widget(widget, "treeview2")); } GtkTreeSortable *sortable = GTK_TREE_SORTABLE(gtk_tree_view_get_model(listview)); GtkTreeViewColumn *treeviewcolumn; GList *columnList = gtk_tree_view_get_columns(GTK_TREE_VIEW(listview)); gint i=0; /* Change the sorted column */ if (GTK_IS_TREE_SORTABLE (sortable)) { gtk_tree_sortable_get_sort_column_id (sortable, &oldColumn, &direction); if ((oldColumn == column) && (direction == GTK_SORT_ASCENDING)) { direction = GTK_SORT_DESCENDING; } else { direction = GTK_SORT_ASCENDING; } gtk_tree_sortable_set_sort_column_id (sortable, column, direction); /* Update the treeview heading indicators */ if (column == INT_MODIFIED_COLUMN) { oldColumn = MODIFIED_COLUMN; } else if (column == INT_SIZE_COLUMN) { oldColumn = SIZE_COLUMN; } else if (column == MATCHES_COUNT_COLUMN) { oldColumn = MATCHES_COUNT_STRING_COLUMN; } else { oldColumn = column; } columnList = g_list_first (columnList); do { treeviewcolumn = GTK_TREE_VIEW_COLUMN(columnList->data); if (i == oldColumn) { gtk_tree_view_column_set_sort_indicator(treeviewcolumn, TRUE); gtk_tree_view_column_set_sort_order(treeviewcolumn, direction); } else { gtk_tree_view_column_set_sort_indicator(treeviewcolumn, FALSE); gtk_tree_view_column_set_sort_order(treeviewcolumn, GTK_SORT_ASCENDING); } i++; } while ((columnList = g_list_next(columnList)) != NULL); } } /* * Internal helper: called from unrealizeTreeview function. * Given column number (columnId), returns the sort order (ascending/descending). */ void getSortMenuItem(gint *columnId, GtkSortType *sortOrder) { GtkTreeView *treeview; if (getResultsViewHorizontal(GTK_WIDGET(mainWindowApp))) { treeview = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(mainWindowApp), "treeview1")); } else { treeview = GTK_TREE_VIEW(lookup_widget(GTK_WIDGET(mainWindowApp), "treeview2")); } GtkTreeSortable *sortable = GTK_TREE_SORTABLE(gtk_tree_view_get_model(treeview)); gtk_tree_sortable_get_sort_column_id (sortable, columnId, sortOrder); } /* * Internal helper: called from unrealizeTreeview function. * Given column number (columnId), checks the corresponding menu-item for sort order. * In turn, this causes Gtk to emit the activate signal, which calls the function columnClick() */ void setSortMenuItem(gint columnId, GtkSortType order) { GtkCheckMenuItem *toggle_button; switch(columnId) { case LOCATION_COLUMN: toggle_button = GTK_CHECK_MENU_ITEM(lookup_widget(GTK_WIDGET(mainWindowApp), "location1")); break; case INT_SIZE_COLUMN: /* Force to SIZE column */ case SIZE_COLUMN: toggle_button = GTK_CHECK_MENU_ITEM(lookup_widget(GTK_WIDGET(mainWindowApp), "size1")); break; case TYPE_COLUMN: toggle_button = GTK_CHECK_MENU_ITEM(lookup_widget(GTK_WIDGET(mainWindowApp), "type1")); break; case INT_MODIFIED_COLUMN: /* Force to MODIFIED column */ case MODIFIED_COLUMN: toggle_button = GTK_CHECK_MENU_ITEM(lookup_widget(GTK_WIDGET(mainWindowApp), "modified1")); break; case MATCHES_COUNT_STRING_COLUMN: /* Force to MATCHES column */ case MATCHES_COUNT_COLUMN: toggle_button = GTK_CHECK_MENU_ITEM(lookup_widget(GTK_WIDGET(mainWindowApp), "matches1")); break; case FILENAME_COLUMN: /* This is the default option */ default: toggle_button = GTK_CHECK_MENU_ITEM(lookup_widget(GTK_WIDGET(mainWindowApp), "file_name1")); break; } /* Special case, only works first time a button is selected */ if (order == GTK_SORT_DESCENDING) { gtk_check_menu_item_set_active (toggle_button, FALSE); gtk_check_menu_item_set_active (toggle_button, TRUE); } /* Hack to get the buttons working as expected */ gtk_check_menu_item_set_active (toggle_button, FALSE); gtk_check_menu_item_set_active (toggle_button, TRUE); } /* * Internal helper: set to TRUE to enable extended regex mode */ void setExtendedRegexMode(GtkWidget *widget, gboolean extended) { GKeyFile *keyString = getGKeyFile(widget); g_key_file_set_boolean(keyString, "configuration", "configExtendedRegex", extended); } /* * Internal helper: returns TRUE if extended regex mode is enabled */ gboolean getExtendedRegexMode(GtkWidget *widget) { GKeyFile *keyString = getGKeyFile(widget); if (g_key_file_has_key(keyString, "configuration", "configExtendedRegex", NULL)) { return (g_key_file_get_boolean(keyString, "configuration", "configExtendedRegex", NULL)); } return TRUE; /* default enable extended regex mode */ } searchmonkey-0.8.3/src/savestate.h0000664000175000017500000001322613236161317014103 00000000000000/* * File: savestate.c header * Description: Contains config save/restore specific functions so that widgets can keep their * settings betweeen saves. * * * */ #ifndef SAVESTATE_H #define SAVESTATE_H /* Externals */ extern gchar *gConfigFile; /* Holds pointer to the configuration file location. Declared in main.c*/ /* Local macros */ #define CONFIG_DISABLE_SAVE_CONFIG_STRING "CONFIG_DISABLE_SAVE_CONFIG" /* Used by config->restart to check for reset */ #define CONFIG_DISABLE_SAVE_CONFIG 1 /* Used by config->restart to check for reset */ #define MASTER_OPTIONS_DATA "options1" /* Storage for the Phase One data inside the g_object */ #define CURRENT_VERSION "0.8.1" /*Current version of searchmonkey */ /* Keyfile interface commands */ void createGKeyFile(GObject *object, const gchar *dataName); void destroyGKeyFile(gpointer data); GKeyFile *getGKeyFile(GtkWidget *widget); void storeGKeyFile(GKeyFile *keyString); void setConfigFileLocation (GtkWidget *widget); /* Top level save/restore commands */ void realize_searchmonkeyWindow (GtkWidget *widget); void unrealize_searchmonkeyWindow (GtkWidget *widget); void realize_configDialog (GtkWidget *widget); void unrealize_configDialog (GtkWidget *widget); void initTreeView(GtkWidget *widget); void initTextView(GtkWidget *widget); void realize_searchNotebook (GtkWidget *widget); void unrealize_searchNotebook (GtkWidget *widget); void realize_menubar (GtkWidget *widget); void unrealize_menubar (GtkWidget *widget); void realize_statusbar (GtkWidget *widget); /* Auto destroyed */ /* Generic save/restore commands */ void realizeFileDialog(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeFileDialog(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void realizeMenuCheck(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeMenuCheck(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void realizeString(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeString(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); gboolean realizeFileButton(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeFileButton(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void realizeToggle(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeToggle(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void realizeNotebook(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeNotebook(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void realizeSpin(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeSpin(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); /* Specific save/restore commands (for more complex widgets) */ void realizeWindow(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeWindow(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void realizeTextviewFont(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeTextviewFont(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void realizeTextviewHighlight(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeTextviewHighlight(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void realizeComboModel(GtkListStore *store, GKeyFile *keyString, const gchar *group, const gchar *name); void realizeComboBox(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void realizeComboBox2(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeComboModel(GtkListStore *store, GKeyFile *keyString, const gchar *group, const gchar *name, gint activeRow); void unrealizeComboBox(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void unrealizeComboBox2(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name); void realizeTreeview(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name, gboolean autoColumnWidth); void unrealizeTreeview(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name, gboolean autoColumnWidth); void realizeTreeviewColumns (GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name, gboolean autoColumnWidth); void unrealizeTreeviewColumns (GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name, gboolean autoColumnWidth); void realizeComboBoxText(GtkWidget *widget, GKeyFile *keyString, const gchar *group, const gchar *name ); /* Tree view handlers (Right click + left click + sort columns) */ void undo_popup_menu(GtkWidget *attach_widget, GtkMenu *menu); void do_popup_menu (GtkWidget *widget, GdkEventButton *event); void detachMenu(GtkMenuItem *menuitem); void tree_selection_changed_cb (GtkTreeSelection *selection, gpointer data); gchar *generateContentOptionsString(searchControl *mSearchControl); /* searchControl*/ void on_column_click (GtkTreeViewColumn *treeviewcolumn, gpointer user_data); void columnClick(GtkWidget *widget, gint column); void getSortMenuItem(gint *columnId, GtkSortType *sortOrder); void setSortMenuItem(gint columnId, GtkSortType order); void setExtendedRegexMode(GtkWidget *widget, gboolean extended); gboolean getExtendedRegexMode(GtkWidget *widget); #endif /* SAVESTATE_H */ searchmonkey-0.8.3/src/regexwizard.c0000664000175000017500000003764613236161317014446 00000000000000/* * File: regexwizard.c * Description: Contains functions that control the regular expression wizard * Todo: Improve regular expression building, and extensively test code to find * bugs in the regular expression building. * Advanced syntax (e.g. {min, max} occurances) are missing */ #include #include /* Add regular expression support */ //#include #include "interface.h" /* glade requirement */ #include "support.h" /* glade requirement */ #include "regexwizard.h" #include "misc.h" /* * Callback helper: within test regular expression dialog box. * Update the regular expression test panel with matches within the user typed sample text. * TODO: This function should really reuse some of the existing search functions, as currently it re-writes * nearly every aspect of searching a text string for matches. */ void refreshTestResults(GtkWidget *widget) { gint tmpStartOffset, tmpEndOffset;/* Luc A feb 2018 */ gchar *tmptext=NULL; GtkTextIter tmpStartIter, tmpEndIter; GtkTextBuffer *tBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(lookup_widget(widget, "SampleTextView"))); GtkTextIter startIter, endIter; gtk_text_buffer_get_start_iter (tBuffer, &startIter); gtk_text_buffer_get_end_iter (tBuffer, &endIter); gchar *sampleText = gtk_text_buffer_get_text (tBuffer, &startIter, &endIter, FALSE); regmatch_t subMatches[MAX_SUB_MATCHES]; const gchar *testExpression = gtk_entry_get_text(GTK_ENTRY(lookup_widget(widget, "testEntry"))); regex_t test; gint i; gchar test2[256+1]; gint errorCode; gchar *charMatch = sampleText; gsize intMatch = 0; gint matchCount = 0; GtkEntry *status= GTK_ENTRY(lookup_widget(widget, "testResultStatus")); /* Clear tags, and compile regex */ gtk_entry_set_text(status, ""); gtk_text_buffer_remove_all_tags (tBuffer, &startIter, &endIter); errorCode = regcomp(&test, testExpression, REG_ICASE | REG_EXTENDED | REG_NEWLINE); if (errorCode != 0) { regerror (errorCode, &test, test2, 256); gtk_entry_set_text(status, test2); g_free(sampleText); return; } /* Find matches */ while (regexec(&test, charMatch, MAX_SUB_MATCHES, subMatches, 0) == 0) { /* Highlight code */ #ifdef NOT_YET for (i=0; ilen > 0) { gtk_widget_set_sensitive(lookup_widget(widget, "okRegExWizard"), TRUE); } else { gtk_widget_set_sensitive(lookup_widget(widget, "okRegExWizard"), FALSE); } /* Write validated regex or clear text on failure */ tmpStr = g_string_free(tmpGStr, FALSE); if (tmpStr != NULL) { gtk_entry_set_text(output, tmpStr); g_free(tmpStr); } return; gtk_entry_set_text(output, ""); /* Should never reach this.. */ } /* * Internal helper: within regular expression wizard. * Given references to each of the widgets, extracts the text in order to generate * the regular expression (Majority of work done in makeInterimRegex2). * The position entry refers to whether it is the start, mid or end entry. * The resulting string is returned to the caller - g_free after use. * TODO: Create enum typedef for position so that beginning, middle or end is more explicit. * TODO: Choose a better name for this function - see makeInterimRegex2 */ gchar *makeInterimRegex(GtkComboBox *type, GtkEntry *entry, GtkComboBox *repeatc, gint position) { gint iType = gtk_combo_box_get_active (type); const gchar *pEntry = gtk_entry_get_text(entry); gint iRepeat = gtk_combo_box_get_active (repeatc); return makeInterimRegex2(GTK_WIDGET(type), iType, pEntry, iRepeat, position); } /* * Internal helper: within regular expression wizard. * Given the text entries for a particular use entry row, and its position (start, mid, or end) * return the resulting regular expression, including necessary brackets and conversions. * Returned string must be free'd * TODO: Create enum typedef for the type variable, so that it is more explicit. * TODO: Create enum typedef for position so that beginning, middle or end is more explicit. * TODO: Choose a better name for this function - see makeInterimRegex */ gchar *makeInterimRegex2(GtkWidget *widget, gint type, const gchar *pEntry, gint repeatc, gint position) { GString *output; gchar *tmpStr; gboolean convertInternal = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "convertRegex"))); /* Exit early if empty field detected */ if ((pEntry[0] == '\0') && ((type >= REGWIZ_THE_CHAR) && (type <= REGWIZ_THE_PHRASE))) { return NULL; } /* Set body */ switch (type) { case REGWIZ_ANY_CHAR: output = g_string_new("."); break; case REGWIZ_THE_CHAR: output = convertRegex(pEntry, convertInternal); break; case REGWIZ_ANY_ONE_CHAR: output = convertRegex2(pEntry, convertInternal); g_string_prepend_c(output, '['); g_string_append_c(output, ']'); break; case REGWIZ_ANY_CHAR_EXCEPT: output = convertRegex2(pEntry, convertInternal); g_string_prepend(output, "[^"); g_string_append_c(output, ']'); break; case REGWIZ_THE_PHRASE: output = convertRegex(pEntry, convertInternal); g_string_prepend_c(output, '('); g_string_append_c(output, ')'); break; case REGWIZ_SPACE: output = g_string_new("\\s"); break; case REGWIZ_ANY_NUMERIC: output = g_string_new("\\d"); break; case REGWIZ_ANY_TEXT: output = g_string_new("\\w"); break; case REGWIZ_DONT_KNOW: default: return NULL; /* This is just an empty string */ } /* Set repeat symbol */ switch (repeatc) { case REGWIZ_REPEAT_ONE_PLUS: g_string_append_c(output, '+'); break; case REGWIZ_REPEAT_ZERO_PLUS: g_string_append_c(output, '*'); break; case REGWIZ_REPEAT_ZERO_ONE: g_string_append_c(output, '?'); break; default: /* Do nothing */ break; } /* Set prefix/affix symbol */ if (position == REGWIZ_START_TYPE) { g_string_prepend_c(output, '^'); } if (position == REGWIZ_END_TYPE) { g_string_append_c(output, '$'); } /* Free up the GString, but return a gchar array */ return g_string_free(output, FALSE); } /* * Internal helper: within regular expression wizard. * Given a regular expression entry, convert reserved charactors into their regular expression * defined alternatives. For example [ becomes \[, and ^ becomes \^. * For the most part, a preceeding backslash is added to the supplied letter * This function is only valid for strings not within square brackets. * Resulting string is returned (even if identical), and must always be free'd * If change is FALSE, then no conversion is done, but malloc'ed string is still returned. * TODO: Rename this function to be more specific - see convertRegex2 */ GString *convertRegex(const gchar *input, gboolean change) { GString *output; gint index = 0; if (!change) { return g_string_new(input); } output = g_string_sized_new(DEFAULT_GSTRING_SIZE); do { switch (input[index]) { case '[': case '\\': case '^': case '$': case '.': case '|': case '?': case '*': case '+': case '(': case ')': g_string_append_c(output, '\\'); break; default: break; } g_string_append_c(output, input[index]); index ++; } while (input[index] != '\0'); return output; } /* * Internal helper: within regular expression wizard. * Given a regular expression entry, convert reserved charactors into their regular expression * defined alternatives. * This function is only valid for strings within square brackets as different rules apply.. * Resulting string is returned (even if identical), and must always be free'd * TODO: Change is not currently used - is it needed? * TODO: Rename this function to be more specific - see convertRegex */ GString *convertRegex2(const gchar *input, gboolean change) { GString *output = g_string_sized_new(DEFAULT_GSTRING_SIZE); /* Create output */ gint index = 0; guint flags = 0; /* Using enumerations defined in header */ do { switch (input[index]) { case ']': flags |= INC_RIGHT_BRKT; break; case '^': flags |= INC_CARET; break; case '-': flags |= INC_MINUS; break; default: g_string_append_c(output, input[index]); break; } index++; } while (input[index] != '\0'); /* Deal with start/end special cases */ if (flags & INC_CARET) { g_string_append(output, "^"); } if (flags & INC_MINUS) { g_string_append(output, "-"); } if (flags & INC_RIGHT_BRKT) { g_string_prepend(output, "]"); } /* Return gchar, but free g_string */ return output; } /* * Callbacks helper: within regular expression wizard. * When mid-regular expression add button is pressed, append the entry into the * table view directly below the entry boxes. Each entry, and its order, correspond * to a new part to the regular expression. */ void appendTableRow(GtkWidget *widget, gint num, ...) // gchar *entries[]) { gint i; va_list ap; /* define 'ap' as a pointer to the input strings */ gint Inc=0; va_start(ap, num); GtkTreeIter iter; gchar *readString; GtkListStore *store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(widget))); gtk_list_store_append (GTK_LIST_STORE(store), &iter); /* Loop throgh input strings, adding them to the current iter */ do { gtk_list_store_set (store, &iter, Inc, va_arg(ap, gchar *), -1); } while (++Inc < num); va_end(ap); } searchmonkey-0.8.3/src/regexwizard.h0000664000175000017500000000375513236161317014445 00000000000000/* * File: regexwizard.c header * Description: Contains functions that control the regular expression wizard */ #ifndef REGEXWIZARD_H #define REGEXWIZARD_H #include /* * Regular expression wizard enumerations and constants */ #define MAX_SUB_MATCHES 1 /* Control number of sub-matches regexec should return when searching text string */ enum { /* Enumerate the type selection combo box for expression wizard */ REGWIZ_NONE=-1, REGWIZ_DONT_KNOW, REGWIZ_ANY_CHAR, REGWIZ_THE_CHAR, REGWIZ_ANY_ONE_CHAR, REGWIZ_ANY_CHAR_EXCEPT, REGWIZ_THE_PHRASE, REGWIZ_SPACE, REGWIZ_ANY_NUMERIC, REGWIZ_ANY_TEXT, REGWIZ_START_TYPE, REGWIZ_END_TYPE }; enum { /* Enumerate the repeat selection combo box for expression wizard */ REGWIZ_REPEAT_ONCE=0, REGWIZ_REPEAT_ONE_PLUS, REGWIZ_REPEAT_ZERO_PLUS, REGWIZ_REPEAT_ZERO_ONE }; enum { /* Enumerate the expression wizard type */ FILE_REGEX_TYPE=1, CONTEXT_REGEX_TYPE }; enum { /* Enumerate the mid table columns for expression wizard */ REGEX_TYPE_COLUMN, REGEX_ENTRY_COLUMN, REGEX_REPEAT_COLUMN, REGEX_TYPE_INT_COLUMN, REGEX_REPEAT_INT_COLUMN, REGEX_N_COLUMNS }; enum { /* Internal enumeration for convertRegex2 function*/ INC_RIGHT_BRKT = 0x1, INC_CARET = 0x2, INC_MINUS = 0x4 }; /* Regex Wizard control functions */ void refreshTestResults(GtkWidget *widget); void updateTypeChangeEntry(GtkComboBox *comboBox, GtkWidget *entry, GtkWidget *repeat); void updateRegExWizard(GtkWidget *widget); gchar *makeInterimRegex(GtkComboBox *type, GtkEntry *entry, GtkComboBox *repeat, gint position); gchar *makeInterimRegex2(GtkWidget *widget, gint type, const gchar *pEntry, gint repeatc, gint position); GString *convertRegex(const gchar *input, gboolean change); GString *convertRegex2(const gchar *input, gboolean change); void appendTableRow(GtkWidget *widget, gint num, ...); /* Internal macros */ #define DEFAULT_GSTRING_SIZE 10 /* Default size for newly allocated GString types */ #endif /* REGEXWIZARD_H */ searchmonkey-0.8.3/src/systemio.c0000664000175000017500000012762613236164262013767 00000000000000/* * File: systemio.c * Description: This file deals with CSV file creation, and parsing */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include /* UNIX style errno support */ #include /* g_fopen,etc */ #include #include "interface.h" /* glade requirement */ #include "support.h" /* glade requirement */ #include "search.h" /* POSIX threaded search header */ #include "savestate.h" /* allow config file to be read */ #include "misc.h" /* Everything else */ #include "systemio.h" /* * Default list of binary files for automatic searching - this list should cover all OSs in preference order. * Make sure that exeList is symetrical, and that empty pointers are set to NULL. */ const gchar *G_EXE_LIST[G_EXE_LIST_MAX_DEPTH][G_EXE_LIST_MAX_WIDTH] = { {"firefox", "iexplore","opera"}, {"gedit", "emacs", "notepad"}, {"nautilus", "iexplore", NULL} }; /* thanks to : https://unicodebook.readthedocs.io/guess_encoding.html Luc A feb 2018*/ const char *UTF_16_BE_BOM = "\xFE\xFF"; const char *UTF_16_LE_BOM = "\xFF\xFE"; const char *UTF_8_BOM = "\xEF\xBB\xBF"; const char *UTF_32_BE_BOM = "\x00\x00\xFE\xFF"; const char *UTF_32_LE_BOM = "\xFF\xFE\x00\x00"; /*********************************** escape all spaces chars within a path or filename the entry string isn't freed, and a new string is allocated Luc A - feb 2018 ***********************************/ gchar *remove_spaces(const gchar *str) { gchar *str2 =NULL; gint i=0; gint j=1; if(strlen(str)==0) return str2; for(i=0;i<=strlen(str);i++) { if(str[i]==' ') { str2 = (gchar*)g_realloc(str2,j*sizeof(gchar)); str2[j-1]='\\'; j++; str2 = (gchar*)g_realloc(str2,j*sizeof(gchar)); str2[j-1]=' '; j++; } else { str2 = (gchar*)g_realloc(str2,j*sizeof(gchar)); str2[j-1]=str[i]; j++; } } str2[j-1]='\0'; return str2; } /* ********************************* function to get a valid file name in the $TEMPDIR system repertory ***********************************/ gchar *GetTempFileName(gchar *fileSchema) { gchar *tmpFile = NULL; tmpFile = tempnam(NULL, fileSchema ); return tmpFile; } /* * Internal helper: save results to CSV. * Iterates through table results (if any), and then returns a CSV string * containing all results, and formatted to boot. */ gchar *resultsToCsvString(GtkWidget *widget) { gchar *retString = NULL; gchar **retStringArray; GtkTreeIter iter; GtkTreeView *treeview; GtkTreeModel *model; gint lineCount; gint i, rowCount = 0; gchar **tmpData; tmpData = g_malloc0(7 * sizeof(gchar *)); gchar *columnSeparator, *rowSeparator, *oldString, *stringDelimiter; GKeyFile *keyString = getGKeyFile(widget); if (getResultsViewHorizontal(widget)) { treeview = GTK_TREE_VIEW(lookup_widget(widget, "treeview1")); } else { treeview = GTK_TREE_VIEW(lookup_widget(widget, "treeview2")); } model = gtk_tree_view_get_model(treeview); lineCount = gtk_tree_model_iter_n_children (model, NULL); g_assert(model != NULL); g_assert(treeview != NULL); g_assert(keyString != NULL); /* Count number of lines in output window */ if (lineCount <= 0) { return NULL; } retStringArray = g_malloc((2 + lineCount) * sizeof(gchar *)); /* Get column/row separator strings */ if (g_key_file_has_key(keyString, "configuration", "configResultEOF", NULL)) { oldString = g_key_file_get_string(keyString, "configuration", "configResultEOF", NULL); columnSeparator = g_strcompress (oldString); g_free(oldString); } else { columnSeparator = g_strdup(","); } if (g_key_file_has_key(keyString, "configuration", "configResultEOL", NULL)) { oldString = g_key_file_get_string(keyString, "configuration", "configResultEOL", NULL); rowSeparator = g_strcompress (oldString); g_free(oldString); } else { rowSeparator = g_strdup("\n"); } if (g_key_file_has_key(keyString, "configuration", "configResultDelimiter", NULL)) { oldString = g_key_file_get_string(keyString, "configuration", "configResultDelimiter", NULL); stringDelimiter = g_strcompress (oldString); g_free(oldString); } else { stringDelimiter = g_strdup("\""); } /* Create header */ gtk_tree_model_get_iter_first (model, &iter); tmpData[0] = quoteString(stringDelimiter, _("File name")); tmpData[1] = quoteString(stringDelimiter, _("Location")); tmpData[2] = quoteString(stringDelimiter, _("File size")); tmpData[3] = quoteString(stringDelimiter, _("File type")); tmpData[4] = quoteString(stringDelimiter, _("Modified date")); tmpData[5] = NULL; retStringArray[rowCount++] = g_strjoinv(columnSeparator, tmpData); /* Loop through to collect data */ do { gtk_tree_model_get (model, &iter, FILENAME_COLUMN, &tmpData[0], LOCATION_COLUMN, &tmpData[1], SIZE_COLUMN, &tmpData[2], TYPE_COLUMN, &tmpData[3], MODIFIED_COLUMN, &tmpData[4], -1); /* Put quotes around LOCATION and FILENAME (just in case) */ for (i=0; i<=4; i++) { oldString = quoteString(stringDelimiter, tmpData[i]); g_free(tmpData[i]); tmpData[i] = oldString; } retStringArray[rowCount++] = g_strjoinv(columnSeparator, tmpData); for (i=0; i<=4; i++) { g_free(tmpData[i]); } } while (gtk_tree_model_iter_next(model, &iter)); retStringArray[rowCount++] = NULL; retString = g_strjoinv(rowSeparator, retStringArray); g_strfreev(retStringArray); g_free(rowSeparator); g_free(columnSeparator); return retString; } /* * Internal helper: save results to CSV. * Adds delimiter (usually " symbol) to either side of given string. * Returns new string, that must be free'd */ gchar *quoteString(const gchar *delimiter, const gchar *string) { return g_strconcat(delimiter, string, delimiter, NULL); } /* * callback helper: save results to CSV. * Stores all results to Csv file. Delimeters, and other options * can be configured by the user (e.g. comma or semicolon between fields) */ void saveResults(GtkWidget *widget) { GError *error = NULL; gchar *filename; GtkWidget *warnMsg; GtkWidget *errMsg; GtkWidget *dialog = create_saveFileDialog(); GKeyFile *keyString = g_object_get_data(G_OBJECT(mainWindowApp), MASTER_OPTIONS_DATA); gchar *saveData = resultsToCsvString(widget); if (saveData == NULL) { errMsg = gtk_message_dialog_new(GTK_WINDOW(dialog), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_INFO, GTK_BUTTONS_OK, _("No results to save!")); gtk_dialog_run(GTK_DIALOG(errMsg)); gtk_widget_destroy(errMsg); return; } /* Set defaults, or get saved values*/ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), g_get_home_dir()); gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "results.csv"); realizeFileDialog(dialog, keyString, "saveResults", "saveFileDialog"); while (1) { if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) { filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); if (g_file_test(filename, G_FILE_TEST_EXISTS)) { warnMsg = gtk_message_dialog_new(GTK_WINDOW(dialog), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, _("A file named \"%s\" already exists. Are you sure you want to overwrite it?"), filename); if (gtk_dialog_run(GTK_DIALOG(warnMsg)) != GTK_RESPONSE_OK) { gtk_widget_destroy(warnMsg); g_free(filename); continue; } gtk_widget_destroy(warnMsg); } if (g_file_set_contents2 (filename, saveData, -1, &error)) { unrealizeFileDialog(dialog, keyString, "saveResults", "saveFileDialog"); g_free(filename); break; } else { errMsg = gtk_message_dialog_new(GTK_WINDOW(dialog), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,"%s", error->message); gtk_dialog_run(GTK_DIALOG(errMsg)); gtk_widget_destroy(errMsg); g_free(filename); g_error_free(error); error = NULL; continue; } } else { break; } } gtk_widget_destroy (dialog); g_free(saveData); return; } /* IMPORT EXPORT FUNCTIONS */ /* * Callback helper: import criteria from local text file, and parse user options. * TODO: Save state of import dialog so that users do not need to keep modifying options between sessions. */ void importCriteria(GtkWidget *widget) { GtkWidget *import = create_importCriteria(); GList *allCriteria; GtkWidget *dropDownBox; gchar *filename; gchar **splitResult; gchar *contents; gsize length; gint i; gchar *orString; GError *error = NULL; GtkWidget *warnDialog; while (gtk_dialog_run(GTK_DIALOG(import)) == GTK_RESPONSE_OK) { filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(lookup_widget(import, "filechooserwidgetImport"))); if (filename != NULL) { /* Choose the drop down box based on radio selection */ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(import, "fileNameRadioImport")))) { dropDownBox = lookup_widget(widget, "fileName"); } else { /* Assume containing text import */ dropDownBox = lookup_widget(widget, "containingText"); } if (g_file_get_contents (filename, &contents, &length, &error)) { splitResult = g_strsplit (contents, "\n", -1); /* Split completely */ if (splitResult != NULL) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(import, "singleImportRadio")))) { orString = g_strjoinv("|", splitResult); if (orString[g_strlen(orString) - 1] == '|') { orString[g_strlen(orString) - 1] = '\0'; } addUniqueRow(dropDownBox, orString); g_free(orString); } else { /* multiImportRadio */ i = 0; while (splitResult[i] != NULL) { addUniqueRow(dropDownBox, splitResult[i]); i++; } } g_strfreev(splitResult); break; } else { /* !splitResult */ warnDialog = gtk_message_dialog_new(GTK_WINDOW(import), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("File was empty/invalid.")); gtk_dialog_run(GTK_DIALOG(warnDialog)); gtk_widget_destroy(warnDialog); } } else { /* !g_file_get_contents */ warnDialog = gtk_message_dialog_new(GTK_WINDOW(import), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,"%s", error->message); gtk_dialog_run(GTK_DIALOG(warnDialog)); g_error_free(error); error = NULL; gtk_widget_destroy(warnDialog); } } else { /* !filename */ warnDialog = gtk_message_dialog_new(GTK_WINDOW(import), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error! No valid file selected.")); gtk_dialog_run(GTK_DIALOG(warnDialog)); gtk_widget_destroy(warnDialog); } } gtk_widget_destroy(import); } /* * Callback helper: export criteria to local text file, depending on user options. * TODO: Save state of export dialog so that users do not need to keep modifying options between sessions. */ void exportCriteria(GtkWidget *widget) { GtkWidget *export = create_exportCriteria(); gchar *filename; GtkWidget *dropDownBox; GtkTreeIter iter; GtkTreeModel *model; GString *gstr = NULL; gchar *outputString; gchar *readString; GError *error; GtkWidget *warnDialog; while (gtk_dialog_run(GTK_DIALOG(export)) == GTK_RESPONSE_OK) { filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(lookup_widget(export, "filechooserwidgetExport"))); if (filename != NULL) { /* Choose the drop down box based on radio selection */ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(export, "fileNameRadioExport")))) { dropDownBox = lookup_widget(widget, "fileName"); } else { /* Assume containing text export */ dropDownBox = lookup_widget(widget, "containingText"); } gstr = g_string_new (""); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(export, "singleExportRadio")))) { if ( gtk_combo_box_get_active_iter(GTK_COMBO_BOX(dropDownBox), &iter)) { model = gtk_combo_box_get_model(GTK_COMBO_BOX(dropDownBox)); g_assert(model != NULL); gtk_tree_model_get (model, &iter, 0, &readString, -1); if (readString != NULL) { g_string_append(gstr, readString); g_string_append(gstr, "\n"); g_free(readString); } } else { /* !gtk_combo_box_get_active_iter */ warnDialog = gtk_message_dialog_new(GTK_WINDOW(export), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error! You must select at least one entry in order to save drop down list.")); gtk_dialog_run(GTK_DIALOG(warnDialog)); gtk_widget_destroy(warnDialog); } } else { /* multiExportRadio */ model = gtk_combo_box_get_model(GTK_COMBO_BOX(dropDownBox)); g_assert(model != NULL); if (gtk_tree_model_get_iter_first(model, &iter)) { do { gtk_tree_model_get (model, &iter, 0, &readString, -1); if (readString != NULL) { g_string_append(gstr, readString); g_string_append(gstr, "\n"); g_free(readString); } /* Save each line to an open text file */ } while (gtk_tree_model_iter_next(model, &iter)); } else { /* !gtk_tree_model_get_iter_first */ warnDialog = gtk_message_dialog_new(GTK_WINDOW(export), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error! Unable to find first combo entry. Is drop down list blank?")); gtk_dialog_run(GTK_DIALOG(warnDialog)); gtk_widget_destroy(warnDialog); } } /* Save the text file to */ if (gstr != NULL) outputString = g_string_free(gstr, FALSE); if (g_file_set_contents2(filename, outputString, -1, &error)) { g_free(outputString); g_free(filename); break; /* My work here is done! */ } else { warnDialog = gtk_message_dialog_new(GTK_WINDOW(export), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,"%s", error->message); g_error_free(error); error = NULL; gtk_dialog_run(GTK_DIALOG(warnDialog)); gtk_widget_destroy(warnDialog); } g_free(outputString); g_free(filename); } else { /* !filename */ warnDialog = gtk_message_dialog_new(GTK_WINDOW(export), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error! No valid file selected.")); gtk_dialog_run(GTK_DIALOG(warnDialog)); gtk_widget_destroy(warnDialog); } } gtk_widget_destroy(export); } /* * Callback helper: configuration panel helper. * Checks that delimeter entered in CSV delimeter boxes is a valid charactor. * Expects a single charactor, but can be a special char e.g. \n for newline, etc. * This function is called after user focuses away from the entry box. * Errors and warnings produce pop-up messages immediately. * TODO: Update to allow Windows file endings i.e. \r\n */ void checkCsvEntry(GtkEntry *entry) { gchar *orig = g_strdup(gtk_entry_get_text(entry)); gchar *newExpanded; GtkWidget *errorMsg; if (orig[0] == '\\') { switch (orig[1]) { case 'b': case 'n': case 'r': case 't': case '"': case '\\': break; /* Everything is fine! */ default: errorMsg = gtk_message_dialog_new(GTK_WINDOW(lookup_widget(GTK_WIDGET(entry), "configDialog")), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, _("Illegal escape sequence: '\\%c'.\n Valid escape characters are: b n r t \" \\"), orig[1]); g_signal_connect ((gpointer) errorMsg, "response", G_CALLBACK (on_errorMsg_response), NULL); gtk_widget_show(errorMsg); gtk_entry_set_text(entry, ""); break; } } else { newExpanded = g_strescape(orig, NULL); if (newExpanded[0] == '\\') { if (g_strlen(newExpanded) == 2) { gtk_entry_set_text(entry, newExpanded); /* Automatically expand quotes, etc. */ } else { /* Non-ASCII expansion e.g. GBP key */ errorMsg = gtk_message_dialog_new(GTK_WINDOW(lookup_widget(GTK_WIDGET(entry), "configDialog")), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, _("Input string expands into non ASCII, or multi-byte key sequence: '%s'.\n Please try to use ASCII safe keys"), newExpanded); g_signal_connect ((gpointer) errorMsg, "response", G_CALLBACK (on_errorMsg_response), NULL); gtk_widget_show(errorMsg); gtk_entry_set_text(entry, ""); } } else if (orig[1] != '\0') { errorMsg = gtk_message_dialog_new(GTK_WINDOW(lookup_widget(GTK_WIDGET(entry), "configDialog")), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, _("Multi-byte string entered: '%s'.\nTruncating extra character (%c)"), orig, orig[1]); g_signal_connect ((gpointer) errorMsg, "response", G_CALLBACK (on_errorMsg_response), NULL); gtk_widget_show(errorMsg); orig[1] = '\0'; gtk_entry_set_text(entry, orig); } g_free(newExpanded); } g_free(orig); } /* * Internal helper: dialog destructor (automatically called from checkCsvEntry) * This function is required otherwise Focus out event is held up by user entry requirement. * This forces widget_show to be used in checkCsvEntry, rather than dialog_run (which halts function). */ void on_errorMsg_response (GtkDialog *dialog, gint arg1, gpointer user_data) { gtk_widget_destroy(GTK_WIDGET(dialog)); } /* * Clean up userExeData structure - callback from preferences pop-up destroy. */ void g_free_exeData(gpointer user_data) { userExeData *exeData = user_data; gint i,j; for (i=0; iretStr[i][j] != NULL) { g_free(exeData->retStr[i][j]); } } } g_free(exeData); } /* * get exeData - called via a timeout function from preferences. */ gboolean getExeData(gpointer user_data) { GtkWidget *dialog = user_data; GtkProgressBar *pbar = GTK_PROGRESS_BAR(lookup_widget(dialog, "progressbar3")); userExeData *exeData = g_object_get_data(G_OBJECT(dialog), "exeData"); gdouble tmpDbl = gtk_progress_bar_get_fraction(pbar) + PROGRESS_BAR_NUDGE_VALUE; gchar *tmpStr = g_strdup_printf("%.0lf%%", (tmpDbl * 100)); /* Change progress bar */ gtk_progress_bar_set_fraction (pbar, tmpDbl); gtk_progress_bar_set_text (pbar, tmpStr); g_free(tmpStr); /* Find all possible filenames */ tmpStr = (char *)G_EXE_LIST[exeData->i][exeData->j]; if (tmpStr != NULL) { exeData->retStr[exeData->i][exeData->j] = g_find_program_in_path(tmpStr); } /* Set next exe pointer */ (exeData->i)++; if ((exeData->i) >= G_EXE_LIST_MAX_DEPTH) { (exeData->i)=0; (exeData->j)++; if ((exeData->j) >= G_EXE_LIST_MAX_WIDTH) { gtk_progress_bar_set_fraction (pbar, 1.0); gtk_progress_bar_set_text (pbar, _("100%")); gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, TRUE); return FALSE; } } return TRUE; } /* * Callback/Internal helper: uses the user defined default application * to open up the supplied address. This function enables many different * operation systems to open 3rd party applications (e.g. web browsers, * text editors, etc). */ gboolean SMsyscall (const gchar *address, syscallType type) { GKeyFile *keyString = getGKeyFile(GTK_WIDGET(mainWindowApp)); gchar *executable, *attributes; gchar *s1, *s2; gboolean retVal = FALSE; GtkWidget *okDialog; g_assert(address != NULL); g_assert((type == BROWSER_LIST) || (type == TEXTEDITOR_LIST) || (type == FILEEXPLORER_LIST)); /* Read in executable string, plus attributes*/ switch (type) { case BROWSER_LIST: if ((!g_key_file_has_key(keyString, "configuration", "configWebBrowser", NULL)) || (!g_key_file_has_key(keyString, "configuration", "configWebBrowserAttributes", NULL))) { okDialog = gtk_message_dialog_new(GTK_WINDOW(mainWindowApp), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, _("Run configuration to set default web-browser:\n\"%s\""),address); gtk_dialog_run (GTK_DIALOG(okDialog)); gtk_widget_destroy(GTK_WIDGET(okDialog)); return -1; } executable = g_key_file_get_string (keyString, "configuration", "configWebBrowser", NULL); attributes = g_key_file_get_string (keyString, "configuration", "configWebBrowserAttributes", NULL); break; case TEXTEDITOR_LIST: if ((!g_key_file_has_key(keyString, "configuration", "configTextEditor", NULL)) || (!g_key_file_has_key(keyString, "configuration", "configTextEditorAttributes", NULL))) { okDialog = gtk_message_dialog_new(GTK_WINDOW(mainWindowApp), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, _("Run configuration to set default text editor:\n\"%s\""),address); gtk_dialog_run (GTK_DIALOG(okDialog)); gtk_widget_destroy(GTK_WIDGET(okDialog)); return -1; } executable = g_key_file_get_string (keyString, "configuration", "configTextEditor", NULL); attributes = g_key_file_get_string (keyString, "configuration", "configTextEditorAttributes", NULL); break; case FILEEXPLORER_LIST: if ((!g_key_file_has_key(keyString, "configuration", "configFileExplorer", NULL)) || (!g_key_file_has_key(keyString, "configuration", "configFileExplorerAttributes", NULL))) { okDialog = gtk_message_dialog_new(GTK_WINDOW(mainWindowApp), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, _("Run configuration to set default directory/folder browser:\n\"%s\""), address); gtk_dialog_run (GTK_DIALOG(okDialog)); gtk_widget_destroy(GTK_WIDGET(okDialog)); return -1; } executable = g_key_file_get_string (keyString, "configuration", "configFileExplorer", NULL); attributes = g_key_file_get_string (keyString, "configuration", "configFileExplorerAttributes", NULL); break; default: return -1; } /* Execute the command (replacing %f with filename) */ /* we must escape spaces from filenames - Luc A Feb 2018*/ if( type==TEXTEDITOR_LIST) s1 = replaceAttributeString(attributes,(gchar*) remove_spaces(address)); else s1 = replaceAttributeString(attributes, address); if (s1 != NULL) { s2 = g_strconcat(executable, s1, NULL); g_free(s1); if (s2 != NULL) { g_spawn_command_line_async (s2, NULL); g_free(s2); retVal = TRUE; } } /* Clean up */ g_free(executable); g_free(attributes); return retVal; } /* * Callback helper: wrapper for on_about1_activate. * Allows URL link (in about box) to call web link when clicked. */ void openUrlLinkFunc (GtkAboutDialog *about, const gchar *link, gpointer data) { /* TODO: Call up configuration if syscall returns FALSE */ SMsyscall(link, BROWSER_LIST); } /* * Internal helper: converts %f/%d charactors within rawString to supplied replacement string * Returned string must be free'd. */ gchar *replaceAttributeString(gchar *rawString, const gchar *replacement) { GString *s1 = g_string_new (rawString); gchar *pRawString = rawString; gchar *ptrAttribute; gssize len = g_strlen(rawString); gint pos; ptrAttribute = g_strstr_len (pRawString, len, "%"); pos = (ptrAttribute - pRawString); if (ptrAttribute != NULL) { switch (*(ptrAttribute + 1)) { case 'f': /* Filename */ case 'd': /* Directory */ g_string_erase(s1, pos, 2); g_string_insert(s1, pos, replacement); break; default: g_printf("Warning! Unexpected field %%%c supplied in executable argument.\n", *(ptrAttribute + 1)); break; } } else { if (rawString[len - 1] != ' ') { g_string_append(s1, " "); } g_string_insert(s1, pos, replacement); } if (rawString[0] != ' ') { g_string_prepend(s1, " "); } return g_string_free (s1, FALSE); } /* * Callback helper: start new instance of searchmonkey in the background. * TODO: Save currently typed, but not executed searches (i.e. non stored searches) * TODO: Save window size/column search data, etc. */ void spawnNewSearchmonkey(void) { GtkWidget *widget = GTK_WIDGET(mainWindowApp); gchar *searchmonkeyExe = g_object_get_data(G_OBJECT(mainWindowApp), "argvPointer"); GKeyFile *keyString = getGKeyFile(widget); unrealize_searchNotebook(widget); /* Store all search settings to the keyString */ unrealize_menubar(widget); storeGKeyFile(keyString); /* Attempt to save config first */ g_spawn_command_line_async (searchmonkeyExe, NULL); /* Assume it worked */ } /* * Internal helper: equivalent to mkdir -p on linux. * Will recursively create missing folders to make the required foldername, and mode. * Always returns true! */ gboolean mkFullDir(gchar *folderName, gint mode) { gchar *partialFolderName, *pPartialFolderName; gchar **folderParts; gint i = 0; /* Completely split folderName into parts */ folderParts = g_strsplit_set(folderName, G_DIR_SEPARATOR_S, -1); partialFolderName = g_strdup(folderName); pPartialFolderName = partialFolderName; while (folderParts[i] != NULL) { pPartialFolderName = g_stpcpy(pPartialFolderName, folderParts[i]); pPartialFolderName = g_stpcpy(pPartialFolderName, G_DIR_SEPARATOR_S); if (!g_file_test (partialFolderName, G_FILE_TEST_IS_DIR)) { g_mkdir(partialFolderName, mode); } i++; } return TRUE; } /* * callback helper: deletes the filename currently selected in the results table * If the user accepts, then file is deleted from disk, and removed from table too. * If row is not selected, then error message is displayed. */ void deleteFile(GtkWidget *widget) { GtkTreeView *treeView; gchar *fullFileName; GtkTreeSelection *selection; GtkTreeIter child_iter, iter; GtkWidget *dialog; GtkTreeModel *model; GKeyFile *keyString = getGKeyFile(widget); GtkListStore *store; if (getResultsViewHorizontal(widget)) { treeView = GTK_TREE_VIEW(lookup_widget(widget, "treeview1")); } else { treeView = GTK_TREE_VIEW(lookup_widget(widget, "treeview2")); } model = gtk_tree_view_get_model(treeView); selection = gtk_tree_view_get_selection(treeView); /* get selection */ g_assert(model != NULL); g_assert(selection != NULL); /* Get the line currently pointed at */ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) { dialog = gtk_message_dialog_new (GTK_WINDOW(lookup_widget(widget, "window1")), (GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL), GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s", _("Cannot delete file as name was not selected.") ); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy(dialog); return; } /* Get underlying model from the sort model */ gtk_tree_model_get (model, &iter, FULL_FILENAME_COLUMN, &fullFileName, -1); gtk_tree_model_sort_convert_iter_to_child_iter (GTK_TREE_MODEL_SORT(model), &child_iter, &iter); store = GTK_LIST_STORE(gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(model))); /* Prompt (or don't) and delete file */ if (fullFileName != NULL) { if (g_key_file_has_key(keyString, "configuration", "configPromptDelete", NULL) && (!g_key_file_get_boolean(keyString, "configuration", "configPromptDelete", NULL))) { g_remove (fullFileName); gtk_list_store_remove(store, &child_iter); } else { dialog = gtk_message_dialog_new (GTK_WINDOW(lookup_widget(widget, "window1")), (GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL), GTK_MESSAGE_WARNING, GTK_BUTTONS_OK_CANCEL, _("Are you sure you want to delete:\n\t'%s'"), fullFileName); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { g_remove (fullFileName); gtk_list_store_remove(store, &child_iter); } gtk_widget_destroy (dialog); } g_free(fullFileName); } } /* * callback helper: copies the full filename currently selected to clipboard * If row is not selected, then error message is displayed. * TODO: Allow users to configure which clipboard(s) are used (Linux only). */ void copyFile(GtkWidget *widget) { GtkTreeView *treeView; gchar *fullFileName; GtkClipboard *clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); GtkWidget *dialog; if (getResultsViewHorizontal(widget)) { treeView = GTK_TREE_VIEW(lookup_widget(widget, "treeview1")); } else { treeView = GTK_TREE_VIEW(lookup_widget(widget, "treeview2")); } fullFileName = getFullFileName(treeView, FULL_FILENAME_COLUMN); if (fullFileName != NULL) { gtk_clipboard_set_text (clipboard, fullFileName, -1); g_free(fullFileName); } else { dialog = gtk_message_dialog_new (GTK_WINDOW(lookup_widget(widget, "window1")), (GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL), GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s", _("Cannot copy full file name as name was not selected.") ); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy(dialog); } } gint check_bom(const char *data, size_t size) { if (size >= 3) { if (memcmp(data, UTF_8_BOM, 3) == 0) return 1; } if (size >= 4) { if (memcmp(data, UTF_32_LE_BOM, 4) == 0) return 2;/*"UTF-32-LE";*/ if (memcmp(data, UTF_32_BE_BOM, 4) == 0) return 2;/*"UTF-32-BE";*/ } if (size >= 2) { if (memcmp(data, UTF_16_LE_BOM, 2) == 0) return 4;/*"UTF-16-LE";*/ if (memcmp(data, UTF_16_BE_BOM, 2) == 0) return 4;/*"UTF-16-BE";*/ } return 0; } /* * internal helper: Wrapper function for g_file_get_contents() * In addition to calling GTK library, the resulting text, if valid * is converted to UTF-8 from its native format (usually UTF-8 also) * to remove illegal charactors * Luc A. 29 dec 2017 : this function is called from search.c module by the function * phaseTwoSearch() * perhaps I can add here a parser/decoder for doc-x and ODT files ? * in current lINUX distros, we dont' have to use g_str_escape() so I commented the code * */ gboolean g_file_get_contents2 (const gchar *filename, gchar **contents, gsize *length, GError **error) { gboolean retVal; gchar *retContents; gsize bytes_read; gsize bytes_written; gchar *charset; gint sBOM; retVal = g_file_get_contents(filename, contents, length, error); /* now me must check if is it a valid UTF8 string ! Luc A Feb 2018 */ if (g_utf8_validate (*contents, *length, NULL)){ return TRUE; } else{/* the text isn't encoded in UTF8 - Luc A deb 2018 */ sBOM= check_bom(*contents,(intptr_t)length ); /* we're trying to get a valid charset */ /* if sBOM == NULL then isn't a UTF string, thus probablu an ISO */ /* encoding = "ISO-8859-15" by default */ switch(sBOM) { case 0: { retContents = g_convert_with_fallback (*contents, *length, "UTF-8", "ISO-8859-1", NULL, &bytes_read, &bytes_written, error); if ((retContents == NULL)||(error)) { *contents = NULL; *length = 0; retVal = FALSE; } else { g_free(*contents); *contents = retContents; *length = bytes_written; retVal = TRUE; } break; } case 2: { retContents = g_convert_with_fallback (*contents, *length, "UTF-8", "UTF-32", NULL, &bytes_read, &bytes_written, error); if ((retContents == NULL)||(error)) { *contents = NULL; *length = 0; retVal = FALSE; } else { g_free(*contents); *contents = retContents; *length = bytes_written; retVal = TRUE; } break; } case 4: { retContents = g_convert_with_fallback (*contents, *length, "UTF-8", "UTF-16", NULL, &bytes_read, &bytes_written, error); if ((retContents == NULL)||(error)) { *contents = NULL; *length = 0; retVal = FALSE; } else { g_free(*contents); *contents = retContents; *length = bytes_written; retVal = TRUE; } } }/* end switch */ /* in other cases, we return Error - i.e empry string */ }/* else NOT UTF8 */ // printf("++++ je suis dans g_file_contents2() ****\n"); return retVal; /* Remove unknown ASCII */ /* bugged : remove all accented chars in modern Linux, so i've commented, but leaved the code for documentation Luc A., 29 dec 2017 if (retVal) { retContents = g_strescape(*contents, "\"\\\t\n\b\f\r"); printf("contenu nettoyé:%s\n",retContents); g_free(*contents); *contents = retContents; *length = g_strlen(retContents); } return retVal;*/ #ifdef NOTYET /* * Eventually, replace above with below. * Currently this code will causes seg. faults on certain files (e.g. with non-ASCII chars in). * Exact cause needs to be investigated, but is likely to be due to regex library requirements. */ gboolean retVal = TRUE; gchar *retContents; gsize bytes_read; gsize bytes_written; gchar *charset; /* Use built-in text file open utility to read raw text */ g_get_charset ((G_CONST_RETURN char **)&charset); if (g_file_get_contents(filename, contents, length, error)) { retContents = g_convert_with_fallback (*contents, *length, "UTF-8", charset, NULL, &bytes_read, &bytes_written, error); g_free(*contents); if (retContents == NULL) { *contents = NULL; *length = 0; retVal = FALSE; } else { *contents = retContents; *length = bytes_written; } } return retVal; #endif /* NOTYET */ } /* * internal helper: Equivalent function to g_file_set_contents() only available in library 2.8.x * Converts UTF-8 (internal) to locale format (usually UTF-8 too on modern systems) and writes * contents (assumed text) into the supplied filename. All errors are returned via error. * TODO: Check for library 2.8.x and if present, use the built-in g_file_set_contents command. */ gboolean g_file_set_contents2 (const gchar *filename, const gchar *contents, gssize length, GError **error) { FILE *fileSD; gssize wrote_size; gboolean retVal = TRUE; gchar *charset; gsize bytes_read; gsize bytes_written; gchar *cContents; /* Contents, but coverted to the locale */ if (length == -1) { length = g_strlen(contents); if (length < 0) { set_internal_error(error, errno); return FALSE; } } fileSD = g_fopen(filename, "w"); if (fileSD == NULL) { set_internal_error(error, errno); return FALSE; } g_get_charset ((G_CONST_RETURN char **)&charset); /* Get charactor set locale */ cContents = g_convert_with_fallback (contents, length, charset, "UTF-8", NULL, &bytes_read, &bytes_written, error); if (cContents == NULL) { retVal = FALSE; } else { wrote_size = fwrite(cContents, 1, bytes_written, fileSD); g_free(cContents); if (bytes_written != wrote_size) { set_internal_error(error, errno); retVal = FALSE; } } fclose(fileSD); return retVal; } /* * internal helper: Given filesystem locale error number, convert to GError format. */ void set_internal_error(GError **error, const gint err_no) { GQuark domain = g_quark_from_string(PACKAGE "Error"); GFileError gerrno = g_file_error_from_errno (err_no); gchar *gstrerr = strerror(err_no); g_assert (gstrerr != NULL); if (error != NULL) { g_assert (*error == NULL); *error = g_error_new_literal(domain, gerrno, gstrerr); } } /* * internal helper: Folder name clean up function (only tested on Linux - but should work for other OS too). * Attempts to fix hand typed folder names e.g. "/foo//test/" becomes "/foo/test" * TODO: Simplify function - should be const gchar * input, not combobox * Return: NULL on error, or newly allocated (and cleaned) folder name */ gchar *comboBoxReadCleanFolderName(GtkComboBox *combobox) { #if 1 /* Creating simplified function as over-complicated */ gchar *tmpStr[2]; gchar *retStr = NULL; /* Retrieve look-in directory, ensuring terminated with (extra?) directory separator */ tmpStr[0] = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(combobox)); g_assert(tmpStr[0] != NULL); tmpStr[1] = g_strconcat(tmpStr[0], G_DIR_SEPARATOR_S, NULL); g_assert(tmpStr[1] != NULL); /* Expects absolute folder names e.g. "/usr/bin/" or "C:\WINNT\" */ if ((*tmpStr[0] == '\0') || (g_unichar_isspace(*tmpStr[0]))) { /* If empty string or space */ retStr = g_strdup(g_get_home_dir()); } else if (g_path_is_absolute(tmpStr[1])) { /* If absolute folder/file name */ if (g_file_test(tmpStr[0], G_FILE_TEST_IS_DIR)) { /* Already a folder, so lets just clean it up */ retStr = g_path_get_dirname(tmpStr[1]); } else { /* Otherwise, not looking great, but give it one more shot.. */ retStr = g_path_get_dirname(tmpStr[0]); if (!g_file_test(retStr, G_FILE_TEST_IS_DIR)) { /* Still no-where near being a folder name so exit */ g_free(retStr); return NULL; } } } else { /* not absolute string, so try best to fix */ if ((tmpStr[0][0] == '.') && (tmpStr[0][1] == *G_DIR_SEPARATOR_S)) { g_free(tmpStr[1]); tmpStr[1] = g_strconcat(g_get_current_dir(), &tmpStr[0][2], NULL); if (g_file_test(tmpStr[1], G_FILE_TEST_IS_DIR)) { retStr = strdup(tmpStr[1]); } } else if ((tmpStr[0][0] == '~') && (tmpStr[0][1] == *G_DIR_SEPARATOR_S)) { g_free(tmpStr[1]); tmpStr[1] = g_strconcat(g_get_home_dir(), &tmpStr[0][2], NULL); if (g_file_test(tmpStr[1], G_FILE_TEST_IS_DIR)) { retStr = strdup(tmpStr[1]); } } } /* Clean exit */ g_free(tmpStr[0]); g_free(tmpStr[1]); return retStr; #else gchar *retStr = NULL; gchar *tmpStr[3]; gchar **test, **test2; tmpStr[0] = gtk_combo_box_text_get_active_text (combobox); /* Test that it is a proper filename */ if (g_file_test (tmpStr[0], G_FILE_TEST_IS_DIR)) { if (g_path_is_absolute (tmpStr[0])) { retStr = g_filename_display_name(tmpStr[0]); } else { tmpStr[2] = g_filename_display_name(tmpStr[0]); if (tmpStr[2] != NULL) { retStr = g_build_path(G_DIR_SEPARATOR_S, g_get_current_dir(), tmpStr[2], NULL); g_free(tmpStr[2]); } } } if (retStr == NULL) { return tmpStr[0]; /* Failed! */ } g_free(tmpStr[0]); /* Split directory into parts */ test = g_strsplit (retStr, G_DIR_SEPARATOR_S, -1); if (test == NULL) { g_print(_("%s Error! Unable to split %s with %c\n"), __func__, retStr, G_DIR_SEPARATOR_S); return retStr; } g_assert(test != NULL); /* Clean up any of the extra path separators */ test2 = strvdup(test); g_strfreev(test); if (test2 == NULL){ g_print(_("%s Error! Unable to duplicate string vector\n"), __func__); return retStr; } g_free(retStr); /* Recreate the cleaned up path name */ tmpStr[1] = g_strjoinv (G_DIR_SEPARATOR_S, test2); g_strfreev(test2); return tmpStr[1]; #endif /* Replaced code.. */ } /* * internal helper: local duplicate of GLIB function g_strdupv * TODO: Replace occurances with g_strdupv -- may require minor adjustments to * comboBoxReadCleanFolderName() function as it caused errors previously. */ gchar **strvdup(gchar **strv) { gchar **retVal; gint i = 0, j = 0; g_assert(strv != NULL); retVal = malloc(sizeof(gchar *) * (1 + g_strv_length(strv))); retVal[j++] = g_strdup(strv[i++]); /* Always copy first element */ while (strv[i] != NULL) { if (*strv[i] != '\0') { retVal[j++] = g_strdup(strv[i]); } i++; } retVal[j] = NULL; /* NULL terminate */ return retVal; } searchmonkey-0.8.3/src/systemio.h0000664000175000017500000000463613236164262013767 00000000000000#ifndef SYSTEMIO_H #define SYSTEMIO_H /* * File: systemio.c header * Description: This file deals with CSV file creation, and importing/exporting criteria */ /* * System callback constants. The actual executable file list is stored within search.c - namely G_EXE_LIST */ #define G_EXE_LIST_MAX_WIDTH 3 /* Maximum number of executables for each syscallType */ typedef enum { BROWSER_LIST = 0, TEXTEDITOR_LIST, FILEEXPLORER_LIST, G_EXE_LIST_MAX_DEPTH } syscallType; #define PROGRESS_BAR_NUDGE_VALUE (1 / (gdouble)(G_EXE_LIST_MAX_WIDTH * G_EXE_LIST_MAX_DEPTH)) typedef struct { /* Internal structure for */ GtkWidget *parent; gchar *retStr[G_EXE_LIST_MAX_WIDTH][G_EXE_LIST_MAX_DEPTH]; /* Used to store discovered file names */ gint i; /* loop counter A */ gint j; /* loop counter B */ guint gid; /* GSource ID */ } userExeData; gchar *remove_spaces(const gchar *str); gchar *GetTempFileName(gchar *fileSchema); /* CSV related functions */ gchar *resultsToCsvString(GtkWidget *widget); gchar *quoteString(const gchar *delimiter, const gchar *string); void saveResults(GtkWidget *widget); /* Check CSV configuration */ void checkCsvEntry(GtkEntry *entry); void on_errorMsg_response (GtkDialog *dialog, gint arg1, gpointer user_data); /* Allow import/export of data to a file for regular expressions */ void importCriteria(GtkWidget *widget); void exportCriteria(GtkWidget *widget); /* System call functions */ //void findExecutables2(GtkWidget *parent, GtkWidget *dialog); void g_free_exeData(gpointer user_data); gboolean getExeData(gpointer user_data); //void *findExecutables(void *args); gboolean SMsyscall (const gchar *address, syscallType type); void openUrlLinkFunc (GtkAboutDialog *about, const gchar *link, gpointer data); gchar *replaceAttributeString(gchar *rawString, const gchar *replacement); void spawnNewSearchmonkey(void); /* File I/O and clipboard commands */ gboolean mkFullDir(gchar *folderName, gint mode); void deleteFile(GtkWidget *widget); void copyFile(GtkWidget *widget); /* GLIB wrapper functions/replacements */ gboolean g_file_get_contents2 (const gchar *filename, gchar **contents, gsize *length, GError **error); gboolean g_file_set_contents2 (const gchar *filename, const gchar *contents, gssize length, GError **error); void set_internal_error(GError **error, const gint err_no); gchar *comboBoxReadCleanFolderName(GtkComboBox *combobox); gchar **strvdup(gchar **strv); #endif /* CSVLIBRARY_H */ searchmonkey-0.8.3/src/misc.c0000664000175000017500000004344713236161317013042 00000000000000/* * File: misc.c * Description: Contains helpere functions, and everything that doesn't fit elsewhere */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include "interface.h" /* glade requirement */ #include "support.h" /* glade requirement */ #include "misc.h" #include /**************************************************** display an erreor/warning dialog ****************************************************/ void miscErrorDialog(GtkWidget *widget, const gchar* msg) { GtkWidget *dialog; dialog = gtk_message_dialog_new_with_markup (GTK_WINDOW(widget), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, msg); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } /******************************************************************************************** convert a regex byte position in a string to a gtk gchar compatible position - Luc A janv 2018 entry1 = offset means the offset computed by regex function, with multubytes chars entre2 = contents = the string returned by regex output = the "true" gchar position compatible with Gtk *******************************************************************************************/ gint convertRegexGtk(size_t offset, const gchar *contents) { gint count = 0; gint len =0; gint i=0; size_t max = offset; while(max>0) { len = mblen(contents, max); if (len<1) break; //printf(">>> %c <<<<", contents[i]); i++; contents+=len; max-=len; } count = i; return count; } /* * callback/internal helper: returns the text stored within supplied columnNumber * Return string must be free'd. * TODO: convert column number to enumerator for table view results. * TODO: Consider renaming function to be more specific */ gchar *getFullFileName(GtkTreeView *treeView, gint columnNumber) { GtkTreeSelection *selection = gtk_tree_view_get_selection(treeView); /* get selection */ gchar *myString; GtkTreeIter iter; GtkTreeModel *model; if (gtk_tree_selection_get_selected (selection, &model, &iter)) { g_assert (model != NULL); gtk_tree_model_get (model, &iter, columnNumber, &myString, -1); return myString; } return NULL; } /* Initializes Combo Box having two models */ void initComboBox2(GtkWidget *comboBox) { GtkListStore* store; gint* setActive; store = gtk_list_store_new (1, G_TYPE_STRING); /* Create a simple 1-wide column */ g_object_set_data(G_OBJECT(comboBox), "noregex", store); setActive = (gint *)g_malloc(sizeof(gint)); *setActive = -1; g_object_set_data_full(G_OBJECT(comboBox), "noregex-active", (gpointer)setActive, &g_free); store = gtk_list_store_new (1, G_TYPE_STRING); /* Create a simple 1-wide column */ g_object_set_data(G_OBJECT(comboBox), "regex", store); setActive = (gint *)g_malloc(sizeof(gint)); *setActive = -1; g_object_set_data_full(G_OBJECT(comboBox), "regex-active", (gpointer)setActive, &g_free); gtk_combo_box_set_model(GTK_COMBO_BOX(comboBox), GTK_TREE_MODEL(store)); } /* * Callback helper: intialise generic combo box with new model, and single width column storage */ void initComboBox(GtkWidget *comboBox) { GtkListStore *store = gtk_list_store_new (1, G_TYPE_STRING); /* Create a simple 1-wide column */ gtk_combo_box_set_model (GTK_COMBO_BOX(comboBox), GTK_TREE_MODEL(store)); g_object_unref(store); } /* * Callback helper: clear all text entries (except active one) from a combo box with two models. */ void clearComboBox2(GtkWidget *comboBox) { GtkTreeIter iter; gchar *readString; GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model (GTK_COMBO_BOX(comboBox))); GtkListStore *store2 = GTK_LIST_STORE(g_object_get_data(G_OBJECT(comboBox), "regex")); gchar * clearActive = "regex-active"; gchar * zeroActive = "noregex-active"; g_assert(store != NULL); g_assert(store2 != NULL); if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX(comboBox), &iter)) { return; } gtk_tree_model_get (GTK_TREE_MODEL(store), &iter, 0, &readString, -1); gtk_list_store_clear (GTK_LIST_STORE(store)); if (readString != NULL) { gtk_list_store_prepend (store, &iter); gtk_list_store_set (store, &iter, 0, readString, -1); g_free(readString); gtk_combo_box_set_active_iter (GTK_COMBO_BOX(comboBox), &iter); } if (store == store2) { clearActive = "noregex-active"; zeroActive = "regex-active"; store2 = GTK_LIST_STORE(g_object_get_data(G_OBJECT(comboBox), "noregex")); g_assert(store2 != NULL); } gtk_list_store_clear(store2); gint * storeActive = (gint *)g_malloc(sizeof(gint)); *storeActive = -1; g_object_set_data_full(G_OBJECT(comboBox), clearActive, storeActive, g_free); storeActive = (gint *)g_malloc(sizeof(gint)); *storeActive = 0; g_object_set_data_full(G_OBJECT(comboBox), zeroActive, storeActive, g_free); } /* * Callback helper: clear all text entries (except active one) from a generic combo box model. */ void clearComboBox(GtkWidget *comboBox) { GtkTreeIter iter; gchar *readString; GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model (GTK_COMBO_BOX(comboBox))); g_assert(store != NULL); if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX(comboBox), &iter)) { return; } gtk_tree_model_get (GTK_TREE_MODEL(store), &iter, 0, &readString, -1); gtk_list_store_clear (GTK_LIST_STORE(store)); if (readString != NULL) { gtk_list_store_prepend (store, &iter); gtk_list_store_set (store, &iter, 0, readString, -1); g_free(readString); gtk_combo_box_set_active_iter (GTK_COMBO_BOX(comboBox), &iter); } } /* * Callback/internal helper: add a text entry to a combo box model, making sure that no duplicates exist * Duplicate entries cause existing entry to be re-displayed - transparant to users. * TODO: replace strcmp function with GTK equivalent for UTF-8 strings */ gboolean addUniqueRow(GtkWidget *comboBox, const gchar *entry) { GtkTreeIter iter; gchar *readString; GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model (GTK_COMBO_BOX(comboBox))); g_assert(store != NULL); /* Test for NULL/Empty using GTK API */ if ((entry == NULL) || g_ascii_isspace(entry[0])) { return TRUE; } /* Find first, and then loop through all until duplicate found */ if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL(store), &iter)) { do { gtk_tree_model_get (GTK_TREE_MODEL(store), &iter, 0, &readString, -1); if (strcmp(readString, entry) == 0) { g_free(readString); gtk_combo_box_set_active_iter (GTK_COMBO_BOX(comboBox), &iter); return FALSE; } g_free(readString); } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter)); } /* Else unique, so add a new row to the model */ gtk_list_store_prepend (store, &iter); gtk_list_store_set (store, &iter, 0, entry, -1); gtk_combo_box_set_active_iter (GTK_COMBO_BOX(comboBox), &iter); return TRUE; } /* * Low-tech replacement for standard strlen library for counting string bytes, assuming NULL terminated. * Note that "g_utf8_strlen" should be used if *character* count is required, as UTF8 chars are often multibyte */ gint g_strlen(const gchar *string) { gint i = 0; while (string[i] != '\0') { i++; } return i; } /* * Internal convenience function to copy info across between basic and advanced modes */ void copySettings(GtkWidget *widget, gboolean expertMode) { /* in each, index zero is for the basic mode, and 1 is for advanced mode*/ gint source = 0; gint target = 1; GtkWidget* filename[2]; GtkWidget* containingText[2]; GtkToggleButton* containingTextCheck[2]; GtkToggleButton* recursive[2]; GtkWidget* lookin[2]; gchar *tmpString; guint tmpFlags = 0; filename[0] = lookup_widget(widget, "fileName2"); filename[1] = lookup_widget(widget, "fileName"); containingText[0] = lookup_widget(widget, "containingText2"); containingText[1] = lookup_widget(widget, "containingText"); containingTextCheck[0] = GTK_TOGGLE_BUTTON(lookup_widget(widget, "containingTextCheck2")); containingTextCheck[1] = GTK_TOGGLE_BUTTON(lookup_widget(widget, "containingTextCheck")); recursive[0] = GTK_TOGGLE_BUTTON(lookup_widget(widget, "searchSubfoldersCheck2")); recursive[1] = GTK_TOGGLE_BUTTON(lookup_widget(widget, "searchSubfoldersCheck")); lookin[0] = lookup_widget(widget, "lookIn2"); lookin[1] = lookup_widget(widget, "lookIn"); if (expertMode == FALSE) { source = 1; target = 0; } tmpString = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(filename[source])); if (getExtendedRegexMode(widget)) { tmpFlags |= REG_EXTENDED; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(widget, "regularExpressionRadioFile")))) { if (test_regexp(tmpString, tmpFlags, _("Error! Invalid File Name regular expression"))) { addUniqueRow(filename[target], tmpString); addUniqueRow(filename[source], tmpString); } } g_free(tmpString); gtk_toggle_button_set_active(containingTextCheck[target],gtk_toggle_button_get_active(containingTextCheck[source])); tmpString = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(containingText[source])); if (test_regexp(tmpString, tmpFlags, _("Error! Invalid Containing Text regular expression"))) { addUniqueRow(containingText[target], tmpString); addUniqueRow(containingText[source], tmpString); } g_free(tmpString); tmpString = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(lookin[source])); if (validate_folder(tmpString)) { addUniqueRow(lookin[target], tmpString); addUniqueRow(lookin[source], tmpString); } g_free(tmpString); gtk_toggle_button_set_active(recursive[target], gtk_toggle_button_get_active(recursive[source])); } /* * Callback helper: Switch mode between expert/beginner */ void setExpertSearchMode (GtkWidget *widget, gboolean expertMode) { copySettings(widget, expertMode); } /* * Callback helper: Return TRUE if in expert mode */ gboolean getExpertSearchMode (GtkWidget *widget) { GtkWidget *searchNotebook = lookup_widget(widget, "searchNotebook"); /* modified by Luc A - if the current page == option, then all options are deactivated !!! FIXED janv 2018 */ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(searchNotebook)) != 0) { return TRUE; } else { return FALSE; } } void sel (GtkTreeModel *model, GtkTreePath *path,GtkTreeIter *iter, gpointer data) { GtkTreeSelection *tmpTreeSelection = NULL; tmpTreeSelection = (GtkTreeSelection *)data; if((tmpTreeSelection!=NULL) && (model!=NULL) && (path!=NULL)) gtk_tree_selection_select_path(tmpTreeSelection, path); } /* * Callback helper: Switch between horizontal and vertical results display */ void setResultsViewHorizontal(GtkWidget *widget, gboolean horizontal) { GtkTreeSelection *treeview1 = gtk_tree_view_get_selection(GTK_TREE_VIEW(lookup_widget(widget, "treeview1"))); GtkTreeSelection *treeview2 = gtk_tree_view_get_selection(GTK_TREE_VIEW(lookup_widget(widget, "treeview2"))); if((treeview1!=NULL)&&(treeview2!=NULL)) { /* we must chek if selection != NULL - Luc A feb 2018 */ if (horizontal) { gtk_widget_show(lookup_widget(widget, "resultsHPane")); gtk_widget_hide(lookup_widget(widget, "resultsVPane")); gtk_tree_selection_selected_foreach(treeview2, &sel, treeview1); } else { /* Vertical - default */ gtk_widget_hide(lookup_widget(widget, "resultsHPane")); gtk_widget_show(lookup_widget(widget, "resultsVPane")); gtk_tree_selection_selected_foreach(treeview1, &sel, treeview2); } }/* if treeview!=NULL*/ } /* * Callback helper: Return TRUE if horizontal, else vertical display */ gboolean getResultsViewHorizontal (GtkWidget *widget) { GtkWidget *menuitem = lookup_widget(widget, "horizontal_results1"); return (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))); } /* * Callback helper: change the model for filename combo boxes when user changes regexp/glob preference */ void changeModel(GtkWidget *widget, const gchar * from, const gchar * to) { gint* storeActive; GtkComboBox *advancedCombo = GTK_COMBO_BOX(lookup_widget(widget, "fileName")); GtkComboBox *basicCombo = GTK_COMBO_BOX(lookup_widget(widget, "fileName2")); GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model(advancedCombo)); GtkListStore *setStore; setStore = GTK_LIST_STORE(g_object_get_data(G_OBJECT(advancedCombo), to)); if (store != setStore) { gchar * setActiveKey = g_strconcat(from, "-active", NULL); gchar * getActiveKey = g_strconcat(to, "-active", NULL); /* Change the model */ /* Advanced tab */ storeActive = (gint *)g_malloc(sizeof(gint)); *storeActive = gtk_combo_box_get_active(advancedCombo); g_object_set_data_full(G_OBJECT(advancedCombo), setActiveKey, (gpointer)storeActive, &g_free); gtk_entry_set_text(GTK_ENTRY(GTK_BIN (advancedCombo)->child), ""); gtk_combo_box_set_model(advancedCombo, GTK_TREE_MODEL(setStore)); gtk_combo_box_set_active(advancedCombo, *((gint *)g_object_get_data(G_OBJECT(advancedCombo), getActiveKey))); /* Basic tab */ storeActive = (gint *)g_malloc(sizeof(gint)); *storeActive = gtk_combo_box_get_active(basicCombo); g_object_set_data_full(G_OBJECT(basicCombo), setActiveKey, (gpointer)storeActive, &g_free); gtk_entry_set_text(GTK_ENTRY(GTK_BIN (basicCombo)->child), ""); gtk_combo_box_set_model(basicCombo, GTK_TREE_MODEL(GTK_LIST_STORE(g_object_get_data(G_OBJECT(basicCombo), to)))); gtk_combo_box_set_active(basicCombo, *((gint *)g_object_get_data(G_OBJECT(basicCombo), getActiveKey))); g_free((gpointer)setActiveKey); g_free((gpointer)getActiveKey); } } /*Callback helper: Displays a calendar popup and returns selected date */ gchar *getDate(const gchar *curDate) { GtkWidget * calendarDialog = create_calendarDialog(); GtkCalendar *calendar = GTK_CALENDAR(lookup_widget(calendarDialog, "calendar1")); gchar* result = g_strdup(curDate); guint year, month, day; GDate date; g_date_set_parse(&date, curDate); if (g_date_valid(&date)) { year = g_date_get_year(&date); month = g_date_get_month(&date) - 1; /*Glib has months from 1-12 while GtkCalendar uses 0 - 11 */ day = g_date_get_day(&date); gtk_calendar_select_day(calendar, day); gtk_calendar_select_month(calendar, month, year); } if (gtk_dialog_run(GTK_DIALOG(calendarDialog)) == GTK_RESPONSE_OK) { gtk_calendar_get_date(calendar, &year, &month, &day); gtk_widget_destroy(calendarDialog); result = (gchar *)g_malloc(sizeof(gchar) * 24);/* improved from 12 to 24 - Luc A., 27 déc 2017 */ g_date_strftime(result, 23, "%d %b %Y", g_date_new_dmy(day, month +1, year));/* modifiyed from 11 to 23 - year with 4 digits Luc A., 27 déc 2017 */ } else { gtk_widget_destroy(calendarDialog); } return result; } gchar *get_regerror(int errcode, regex_t *compiled) { size_t length = regerror (errcode, compiled, NULL, 0); gchar *buffer = (gchar *)g_malloc (sizeof(gchar) * length); (void) regerror (errcode, compiled, buffer, length); return buffer; } gboolean test_regexp(gchar *regexp, guint flags, gchar *error) { gint regerr; regex_t testRegEx; GtkWidget *dialog; extern GtkWidget * mainWindowApp; GObject *window1 = G_OBJECT(mainWindowApp); regerr = regcomp(&testRegEx, regexp, flags); if (regerr != 0) { gchar* errorString = get_regerror(regerr, &testRegEx); gchar * msg = g_strconcat(error, "\n", errorString, NULL); dialog = gtk_message_dialog_new (GTK_WINDOW(window1), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,"%s", msg); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); g_free(errorString); g_free(msg); regfree(&testRegEx); return FALSE; } else { regfree(&testRegEx); return TRUE; } } /* * Used within misc, and search.c to validate that look-in folder exists and is not blank. * Produces pop-up error messages, and returns FALSE if folder not found. */ gboolean validate_folder(const gchar *folderName) { GtkWindow *window1 = GTK_WINDOW(mainWindowApp); GtkWidget *dialog; /* Test starting folder exists */ if (folderName == NULL) { dialog = gtk_message_dialog_new (window1, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Error! Look In directory cannot be blank.")); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); return FALSE; } if (!g_file_test(folderName, G_FILE_TEST_IS_DIR)) { dialog = gtk_message_dialog_new (window1, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Error! Look In directory is invalid.")); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); return FALSE; } return TRUE; } searchmonkey-0.8.3/src/misc.h0000664000175000017500000000226613236161317013041 00000000000000/* * File: misc.c header * Description: Contains helpere functions, and everything that doesn't fit elsewhere */ #ifndef MISC_H #define MISC_H extern GtkWidget *mainWindowApp; /* Holds pointer to the main searchmonkey GUI. Declared in main.c */ void miscErrorDialog(GtkWidget *widget, const gchar* msg); gint convertRegexGtk(size_t offset, const gchar *contents); gchar *getFullFileName(GtkTreeView *treeView, gint columnNumber); void initComboBox2(GtkWidget *comboBox); void initComboBox(GtkWidget *comboBox); void clearComboBox(GtkWidget *comboBox); gboolean addUniqueRow(GtkWidget *comboBox, const gchar *entry); gint g_strlen(const gchar *string); void copySettings(GtkWidget *widget, gboolean expertMode); void setExpertSearchMode (GtkWidget *widget, gboolean expertMode); gboolean getExpertSearchMode (GtkWidget *widget); void setResultsViewHorizontal(GtkWidget *widget, gboolean horizontal); gboolean getResultsViewHorizontal (GtkWidget *widget); void changeModel(GtkWidget *widget, const gchar *from, const gchar *to); gchar * getDate(const gchar *curDate); gboolean test_regexp(gchar *regexp, guint flags, gchar *error); gboolean validate_folder(const gchar *folderName); #endif /* MISC_H */ searchmonkey-0.8.3/src/lgpl.h0000664000175000017500000000131713236161317013040 00000000000000#include const gchar *LGPL_LICENSE = """ \ This program is free software: you can redistribute it and/or modify\ it under the terms of the GNU General Public License as published by\ the Free Software Foundation, either version 3 of the License, or\ (at your option) any later version.\ \n\n\ This program is distributed in the hope that it will be useful,\ but WITHOUT ANY WARRANTY; without even the implied warranty of\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\ GNU General Public License for more details.\ \n\n\ You should have received a copy of the GNU General Public License\ along with this program (see LICENSE.TXT).\ If not, see .\ \n\n\ """; searchmonkey-0.8.3/po/0000775000175000017500000000000013236164477011650 500000000000000searchmonkey-0.8.3/po/Makefile.in.in0000664000175000017500000001575613236161317014246 00000000000000# Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper # Copyright (C) 2004-2008 Rodney Dawes # # This file may be copied and used freely without restrictions. It may # be used in projects which are not available under a GNU Public License, # but which still want to provide support for the GNU gettext functionality. # # - Modified by Owen Taylor to use GETTEXT_PACKAGE # instead of PACKAGE and to look for po2tbl in ./ not in intl/ # # - Modified by jacob berkman to install # Makefile.in.in and po2tbl.sed.in for use with glib-gettextize # # - Modified by Rodney Dawes for use with intltool # # We have the following line for use by intltoolize: # INTLTOOL_MAKEFILE GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = @top_builddir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ datarootdir = @datarootdir@ libdir = @libdir@ localedir = @localedir@ subdir = po install_sh = @install_sh@ # Automake >= 1.8 provides @mkdir_p@. # Until it can be supposed, use the safe fallback: mkdir_p = $(install_sh) -d INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ MSGMERGE = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist GENPOT = INTLTOOL_EXTRACT="$(INTLTOOL_EXTRACT)" XGETTEXT="$(XGETTEXT)" srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot ALL_LINGUAS = @ALL_LINGUAS@ PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; else echo "$(ALL_LINGUAS)"; fi) USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep \^$$lang$$ $(srcdir)/LINGUAS 2>/dev/null`" -o -n "`echo $$ALINGUAS|tr ' ' '\n'|grep \^$$lang$$`"; then printf "$$lang "; fi; done; fi) USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)" -o -n "$(LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done) POFILES=$(shell LINGUAS="$(PO_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done) DISTFILES = Makefile.in.in POTFILES.in $(POFILES) EXTRA_DISTFILES = ChangeLog POTFILES.skip Makevars LINGUAS POTFILES = \ # This comment gets stripped out CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done) .SUFFIXES: .SUFFIXES: .po .pox .gmo .mo .msg .cat AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ INTLTOOL_V_MSGFMT = $(INTLTOOL__v_MSGFMT_$(V)) INTLTOOL__v_MSGFMT_= $(INTLTOOL__v_MSGFMT_$(AM_DEFAULT_VERBOSITY)) INTLTOOL__v_MSGFMT_0 = @echo " MSGFMT" $@; .po.pox: $(MAKE) $(GETTEXT_PACKAGE).pot $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox .po.mo: $(INTLTOOL_V_MSGFMT)$(MSGFMT) -o $@ $< .po.gmo: $(INTLTOOL_V_MSGFMT)file=`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) -o $$file $< .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ && rm -f $@ && gencat $@ $*.msg all: all-@USE_NLS@ all-yes: $(CATALOGS) all-no: $(GETTEXT_PACKAGE).pot: $(POTFILES) $(GENPOT) install: install-data install-data: install-data-@USE_NLS@ install-data-no: all install-data-yes: all linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ dir=$(DESTDIR)$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $$dir; \ if test -r $$lang.gmo; then \ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \ else \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $(srcdir)/$$lang.gmo as" \ "$$dir/$(GETTEXT_PACKAGE).mo"; \ fi; \ if test -r $$lang.gmo.m; then \ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ if test -r $(srcdir)/$$lang.gmo.m ; then \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \ $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $(srcdir)/$$lang.gmo.m as" \ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ true; \ fi; \ fi; \ done # Empty stubs to satisfy archaic automake needs dvi info ctags tags CTAGS TAGS ID: # Define this as empty until I found a useful application. install-exec installcheck: uninstall: linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ done check: all $(GETTEXT_PACKAGE).pot rm -f missing notexist srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m if [ -r missing -o -r notexist ]; then \ exit 1; \ fi mostlyclean: rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp rm -f .intltool-merge-cache clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES stamp-it rm -f *.mo *.msg *.cat *.cat.m *.gmo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f Makefile.in.in distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(DISTFILES) dists="$(DISTFILES)"; \ extra_dists="$(EXTRA_DISTFILES)"; \ for file in $$extra_dists; do \ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \ done; \ for file in $$dists; do \ test -f $$file || file="$(srcdir)/$$file"; \ ln $$file $(distdir) 2> /dev/null \ || cp -p $$file $(distdir); \ done update-po: Makefile $(MAKE) $(GETTEXT_PACKAGE).pot tmpdir=`pwd`; \ linguas="$(USE_LINGUAS)"; \ for lang in $$linguas; do \ echo "$$lang:"; \ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \ if $$result; then \ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.gmo failed!"; \ rm -f $$tmpdir/$$lang.new.po; \ fi; \ done Makefile POTFILES: stamp-it @if test ! -f $@; then \ rm -f stamp-it; \ $(MAKE) stamp-it; \ fi stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \ $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: searchmonkey-0.8.3/po/POTFILES.in0000664000175000017500000000030613236161317013332 00000000000000# List of source files containing translatable strings. src/main.c src/interface.c src/callbacks.c src/support.c src/search.c src/savestate.c src/regexwizard.c src/systemio.c src/misc.c src/lgpl.h searchmonkey-0.8.3/po/en_GB.po0000664000175000017500000007203113236164262013075 00000000000000# Searchmonkey - desktop searching with regular expression wizard. # Copyright (C) 2007 # This file is distributed under LGPL # Adam Cottrell , 2007. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: 0.8.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-08 15:39+0100\n" "PO-Revision-Date: 2007-01-31 16:52+0000\n" "Last-Translator: Adam Cottrell \n" "Language-Team: Adam Cottrell \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: savestate.c:1666 #, c-format msgid "" "\n" "Internal error %d! Unable to highlight line - offset beyond line-end.\n" msgstr "" #: main.c:68 msgid "" "\n" "No content searching performed for this file.\n" "\n" "Please ensure containing search was enabled, and that an expression was " "entered prior to starting search.\n" msgstr "" #: savestate.c:1671 #, c-format msgid " Debug: %d) '%s'\n" msgstr "" #: savestate.c:1668 #, c-format msgid " Debug: fn='%s'\n" msgstr "" #: savestate.c:1669 #, c-format msgid " Debug: tc=%d + os=%d || oe=%d\n" msgstr "" #: savestate.c:44 #, c-format msgid " %s settings auto-generated - Do not edit!" msgstr "" #: search.c:1719 msgid " [cancelled]" msgstr "" #: search.c:1712 msgid " [inv]" msgstr "" #: savestate.c:183 msgid " [missing]" msgstr "" #: search.c:1610 #, c-format msgid "%1.1f KB" msgstr "" #: search.c:1612 #, c-format msgid "%1.1f MB" msgstr "" #: interface.c:2978 #, c-format msgid "%d" msgstr "" #: search.c:1608 #, c-format msgid "%d bytes" msgstr "" #: search.c:1707 #, c-format msgid "%d file found" msgstr "" #: search.c:1709 #, c-format msgid "%d files found" msgstr "" #: interface.c:2969 interface.c:2987 #, c-format msgid "%f" msgstr "" #: search.c:1129 #, c-format msgid "%s %s\n" msgstr "" #: systemio.c:1077 #, c-format msgid "%s Error! Unable to duplicate string vector\n" msgstr "" #: systemio.c:1068 #, c-format msgid "%s Error! Unable to split %s with %c\n" msgstr "" #: search.c:1639 #, c-format msgid "%s-type" msgstr "" #: search.c:653 search.c:667 #, c-format msgid "%x" msgstr "" #: callbacks.c:1018 msgid "(Entry)" msgstr "" #: callbacks.c:1023 msgid "(Repeat)" msgstr "" #: callbacks.c:1013 msgid "(Type)" msgstr "" #: interface.c:3103 msgid "," msgstr "" #: search.c:1727 msgid "-research mode with RegEx" msgstr "" #: search.c:1724 msgid "-research mode with jokers(DOS like)" msgstr "" #: savestate.c:1776 msgid ".\n" msgstr "" #: callbacks.c:1148 msgid "0%" msgstr "" #: systemio.c:557 msgid "100%" msgstr "" #: interface.c:2311 msgid "" msgstr "" #: search.c:681 msgid "" "Error!\n" "\n" "Dates mismatch ! 'Before than' date must be more recent than 'After " "than' date.\n" "Search can't proceed correctly !\n" "Please check the dates." msgstr "" #: search.c:650 msgid "" "Error!\n" "\n" "Invalid 'After'date - format as dd/mm/yyyy or dd mmm yy." msgstr "" #: search.c:664 msgid "" "Error!\n" "\n" "Invalid 'Before' date - format as dd/mm/yyyy or dd mmm yy." msgstr "" #: search.c:630 msgid "" "Error!\n" "\n" "LessThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" #: search.c:614 msgid "" "Error!\n" "\n" "MoreThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" #: search.c:618 search.c:634 msgid "" "Error!\n" "\n" "MoreThan file size must be stricly inferior to LessThan file size.So " "this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" #: interface.c:3659 msgid "Export Source" msgstr "" #: interface.c:3692 msgid "Export Type" msgstr "" #: interface.c:1151 msgid "File Contents Options" msgstr "" #: interface.c:1107 msgid "File Name Options" msgstr "" #: interface.c:3474 msgid "Import Location" msgstr "" #: interface.c:3507 msgid "Import Type" msgstr "" #: interface.c:2664 msgid "Resulting expression" msgstr "" #: interface.c:1235 msgid "Results Options" msgstr "" #: interface.c:2292 msgid "Sample Text:" msgstr "" #: interface.c:2116 msgid "" "Select which data to delete:\n" "With this dialog, you can control how your entries will be cleared." msgstr "" #: interface.c:2331 msgid "Status:" msgstr "" #: interface.c:2275 msgid "Test Expression:" msgstr "" #: interface.c:2259 msgid "" "Test Regular Expressions (RegEx):\n" "With this dialog, you can test a RegEx before using it.\n" "Feel free to type a RegEx and put an example of text to test it." msgstr "" #: interface.c:2456 msgid "Text begins:" msgstr "" #: interface.c:2586 msgid "Text contains" msgstr "" #: interface.c:2600 msgid "Text ends:" msgstr "" #: interface.c:2168 msgid "Warning: Once cleared, history cannot be recovered!" msgstr "" #: interface.c:3888 msgid "" "Regular expression power search utility written in GTK+ and licensed " "under GPL v.3" msgstr "" #: interface.c:819 msgid "" "RegEx Expression Builder..." msgstr "" #: interface.c:848 msgid "" "RegEx Expression Builder..." msgstr "" #: systemio.c:198 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "" #: search.c:882 msgid "Aborting research-Searchmonkey" msgstr "" #: interface.c:3855 msgid "About searchmonkey" msgstr "" #: savestate.c:145 msgid "About to overwrite save configuration. Do you want to proceed?" msgstr "" #: interface.c:2690 msgid "Accept the resulting expression, and add it to the search rules." msgstr "" #: interface.c:4019 msgid "" "Adam Cottrell (en_GB)\n" "Luc Amimer (fr)" msgstr "" #: interface.c:2562 msgid "Add" msgstr "" #: interface.c:631 msgid "Add search criteria from a text file. Similar to the grep -f flag." msgstr "" #: interface.c:1048 msgid "Advanced" msgstr "" #: interface.c:998 msgid "After:" msgstr "" #: interface.c:2468 interface.c:2517 interface.c:2612 msgid "Any char except these" msgstr "" #: interface.c:2465 interface.c:2514 interface.c:2609 msgid "Any character" msgstr "" #: interface.c:2471 interface.c:2520 interface.c:2615 msgid "Any numeric character" msgstr "" #: interface.c:2467 interface.c:2516 interface.c:2611 msgid "Any one of these chars" msgstr "" #: interface.c:2472 interface.c:2521 interface.c:2616 msgid "Any text character" msgstr "" #: callbacks.c:1176 msgid "" "Are you sure that you wish to delete the config file, and restart " "searchmonkey?" msgstr "" #: systemio.c:804 #, c-format msgid "" "Are you sure you want to delete:\n" "\t'%s'" msgstr "" #: interface.c:2950 msgid "Attributes" msgstr "" #: interface.c:3762 msgid "Auto Complete" msgstr "" #: interface.c:3045 msgid "Auto search..." msgstr "" #: interface.c:517 msgid "Auto-size columns" msgstr "" #: interface.c:791 msgid "Basic" msgstr "" #: interface.c:1022 msgid "Before:" msgstr "" #: interface.c:2944 msgid "Binary/Executable" msgstr "" #: interface.c:896 msgid "Browse your file system and select the search directory..." msgstr "" #: interface.c:1955 msgid "C_ancel" msgstr "" #: systemio.c:845 msgid "Cannot copy full file name as name was not selected." msgstr "" #: systemio.c:781 msgid "Cannot delete file as name was not selected." msgstr "" #: interface.c:2904 msgid "Check this to allow" msgstr "" #: interface.c:484 msgid "Clear History..." msgstr "" #: interface.c:2097 msgid "Clear Search History" msgstr "" #: interface.c:2157 msgid "Clear all directories in the \"Folders:\" drop-down list" msgstr "" #: interface.c:2145 msgid "Clear all file names in the \"Files:\" drop-down list" msgstr "" #: interface.c:2151 msgid "Clear all patterns in the \"Containing:\" drop-down list" msgstr "" #: interface.c:2148 msgid "Clear containing text" msgstr "" #: interface.c:2142 msgid "Clear file names" msgstr "" #: interface.c:2154 msgid "Clear look in history" msgstr "" #: interface.c:2859 msgid "Configuration" msgstr "" #: savestate.c:79 msgid "" "Configuration files are for a different version of Searchmonkey. This may " "cause errors. Delete old configuration files?" msgstr "" #: interface.c:3652 msgid "Containing Text Export Criteria" msgstr "" #: interface.c:3467 msgid "Containing Text import" msgstr "" #: interface.c:835 msgid "Containing:" msgstr "" #: callbacks.c:1107 msgid "Context Expression Wizard" msgstr "" #: interface.c:2658 msgid "Convert Internals" msgstr "" #: interface.c:3898 msgid "Copyright (c) 2006-2018 Adam Cottrell" msgstr "" #: support.c:90 support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "" #: interface.c:649 msgid "Create a CSV file containing a list of results." msgstr "" #: interface.c:2566 msgid "Creates a new row in the list with the following rule." msgstr "" #: interface.c:3925 msgid "Credits" msgstr "" #: interface.c:3121 msgid "Csv Export" msgstr "" #: interface.c:3203 msgid "Current Config file location:" msgstr "" #: interface.c:3049 msgid "Default Applications" msgstr "" #: interface.c:2937 msgid "Default folder explorer:" msgstr "" #: interface.c:2930 msgid "Default text editor:" msgstr "" #: interface.c:2956 msgid "Default web browser:" msgstr "" #: interface.c:2580 msgid "Delete" msgstr "" #: interface.c:2584 msgid "Deletes an existing row in the rule table." msgstr "" #: interface.c:261 msgid "Desktop search to replace find and grep." msgstr "" #: regexwizard.c:100 msgid "Did not match any." msgstr "" #: interface.c:2683 msgid "Discard any changes." msgstr "" #: interface.c:1321 interface.c:1356 msgid "Displays the matching text lines when the result is selected." msgstr "" #: interface.c:2464 interface.c:2513 interface.c:2608 msgid "Don't know" msgstr "" #: interface.c:2554 msgid "" "Each row creates a new part to the rule, with the order reflecting the order " "in which the rule is to be matched." msgstr "" #: interface.c:1918 msgid "Edit (File)" msgstr "" #: interface.c:349 msgid "Edit File" msgstr "" #: interface.c:724 msgid "Enable contents search to find files with matching content too." msgstr "" #: interface.c:3079 msgid "End of row separator:" msgstr "" #: savestate.c:161 #, c-format msgid "Error saving %s: %s\n" msgstr "" #: callbacks.c:1622 msgid "Error! Invalid 'containing text' regular expression" msgstr "" #: callbacks.c:1598 msgid "Error! Invalid 'file name' regular expression" msgstr "" #: misc.c:298 search.c:845 msgid "Error! Invalid Containing Text regular expression" msgstr "" #: misc.c:288 search.c:839 msgid "Error! Invalid File Name regular expression" msgstr "" #: misc.c:509 search.c:820 msgid "Error! Look In directory cannot be blank." msgstr "" #: misc.c:520 search.c:831 msgid "Error! Look In directory is invalid." msgstr "" #: systemio.c:310 systemio.c:419 msgid "Error! No valid file selected." msgstr "" #: systemio.c:387 msgid "Error! Unable to find first combo entry. Is drop down list blank?" msgstr "" #: callbacks.c:1182 #, c-format msgid "Error! Unable to remove config file %s.\n" msgstr "" #: systemio.c:363 msgid "" "Error! You must select at least one entry in order to save drop down list." msgstr "" #: interface.c:1252 msgid "Expert Mode" msgstr "" #: interface.c:3594 msgid "Export Criteria" msgstr "" #: interface.c:635 msgid "Export Expression..." msgstr "" #: interface.c:2438 msgid "Expression Wizard" msgstr "" #: interface.c:2886 msgid "" "Extended regular expressions are recommended as they provide more " "functionality." msgstr "" #: interface.c:531 msgid "Extras" msgstr "" #: callbacks.c:1105 msgid "File Expression Wizard" msgstr "" #: interface.c:3645 msgid "File Name Export criteria" msgstr "" #: interface.c:3460 msgid "File Name import" msgstr "" #: interface.c:3438 interface.c:3622 msgid "File Selection" msgstr "" #: interface.c:2977 #, c-format msgid "File explorer attributes: %f=filename, %d=directory" msgstr "" #: systemio.c:110 msgid "File name" msgstr "" #: systemio.c:112 msgid "File size" msgstr "" #: systemio.c:113 msgid "File type" msgstr "" #: systemio.c:289 msgid "File was empty/invalid." msgstr "" #: interface.c:713 interface.c:806 msgid "Files:" msgstr "" #: interface.c:3022 msgid "Find default executables:" msgstr "" #: interface.c:743 interface.c:869 msgid "Folders:" msgstr "" #: interface.c:1083 msgid "Follow Symbol _Links" msgstr "" #: interface.c:1086 msgid "Follow Symbolic Links (Only on systems that support them)" msgstr "" #: interface.c:2897 msgid "Force a prompt before any files are deleted" msgstr "" #: interface.c:2892 msgid "Force a prompt before settings are saved." msgstr "" #: interface.c:2878 msgid "Force single window mode" msgstr "" #: regexwizard.c:104 #, c-format msgid "Found %d matches." msgstr "" #: regexwizard.c:102 msgid "Found 1 match." msgstr "" #: interface.c:966 interface.c:988 msgid "Gb" msgstr "" #: interface.c:2907 msgid "Global Settings" msgstr "" #: interface.c:3493 msgid "Grep style file (1-entry, OR each line)" msgstr "" #: interface.c:2677 msgid "Help with the Regular Expression Builder" msgstr "" #: interface.c:1225 msgid "Highlights per line :" msgstr "" #: interface.c:395 msgid "Horizontal results" msgstr "" #: interface.c:1192 msgid "" "If active, display extra lines around the matching line to help show context " "of match." msgstr "" #: interface.c:1080 msgid "Ignore hidden files (Unix filesystems only)" msgstr "" #: systemio.c:456 #, c-format msgid "" "Illegal escape sequence: '\\%c'.\n" " Valid escape characters are: b n r t \" \\" msgstr "" #: interface.c:3410 msgid "Import Criteria" msgstr "" #: interface.c:628 msgid "Import Expression..." msgstr "" #: interface.c:3470 interface.c:3503 interface.c:3688 msgid "Import a file identical to that generated by the export command." msgstr "" #: systemio.c:474 #, c-format msgid "" "Input string expands into non ASCII, or multi-byte key sequence: '%s'.\n" " Please try to use ASCII safe keys" msgstr "" #: callbacks.c:755 msgid "Internal Error! Unable to find calling wizard type!" msgstr "" #: interface.c:1067 msgid "Invert Search Expression" msgstr "" #: interface.c:1070 msgid "Inverts the file name search results i.e. find all becomes find none." msgstr "" #: interface.c:3681 msgid "Just save the currently displayed entry to a file." msgstr "" #: interface.c:964 interface.c:986 msgid "Kb" msgstr "" #: interface.c:968 msgid "Less than:" msgstr "" #: interface.c:1213 msgid "Limit Content Highlighting" msgstr "" #: interface.c:1165 msgid "Limit Match Files" msgstr "" #: interface.c:925 msgid "Limit files found by selecting maximum tree-depth to search." msgstr "" #: savestate.c:1623 savestate.c:1687 #, c-format msgid "Line Number: %d\n" msgstr "" #: interface.c:1199 msgid "Lines Displayed:" msgstr "" #: interface.c:1301 interface.c:1336 msgid "List of file(s) corresponding to research criteria." msgstr "" #: savestate.c:602 savestate.c:1395 systemio.c:111 msgid "Location" msgstr "" #: interface.c:3211 msgid "Location of your current searchmonkey configuration settings file." msgstr "" #: interface.c:443 msgid "Mat_ches" msgstr "" #: interface.c:1072 interface.c:1126 msgid "Match Case" msgstr "" #: interface.c:2900 msgid "Match strings within binary files too" msgstr "" #: savestate.c:638 msgid "Matches" msgstr "" #: interface.c:1175 msgid "Maximum Hits:" msgstr "" #: interface.c:954 msgid "Maximum filesize in kBytes/mBytes/gBytes." msgstr "" #: interface.c:965 interface.c:987 msgid "Mb" msgstr "" #: interface.c:976 msgid "Minimum filesize in kBytes/mBytes/gBytes." msgstr "" #: savestate.c:629 msgid "Modified" msgstr "" #: systemio.c:114 msgid "Modified date" msgstr "" #: interface.c:994 msgid "Modified:" msgstr "" #: interface.c:2578 msgid "Modifies an existing row in the rule table." msgstr "" #: interface.c:2574 msgid "Modify" msgstr "" #: interface.c:946 msgid "More than:" msgstr "" #: systemio.c:486 #, c-format msgid "" "Multi-byte string entered: '%s'.\n" "Truncating extra character (%c)" msgstr "" #: main.c:70 msgid "N/A" msgstr "" #: savestate.c:593 msgid "Name" msgstr "" #: interface.c:616 msgid "New Instance" msgstr "" #: systemio.c:179 msgid "No results to save!" msgstr "" #: interface.c:2488 interface.c:2537 interface.c:2632 msgid "Once" msgstr "" #: interface.c:2489 interface.c:2538 interface.c:2633 msgid "One or more times" msgstr "" #: interface.c:357 msgid "Open Folder" msgstr "" #: interface.c:619 msgid "Open a new search window." msgstr "" #: interface.c:1017 interface.c:1041 msgid "Open calendar dialog to choose modified date." msgstr "" #: interface.c:761 msgid "Opens a dialog to find a look in directory." msgstr "" #: interface.c:1240 interface.c:3512 interface.c:3697 msgid "Options" msgstr "" #: savestate.c:1729 msgid "Options: " msgstr "" #: interface.c:323 msgid "P_rint Setup..." msgstr "" #: savestate.c:1621 #, c-format msgid "Paragraph Number: %d\n" msgstr "" #: interface.c:3003 msgid "Paste and edit full file name of your preferred file explorer." msgstr "" #: interface.c:2995 msgid "Paste and edit full file name of your preferred text editor." msgstr "" #: interface.c:3011 msgid "Paste and edit full file name of your preferred web browser." msgstr "" #: interface.c:1124 msgid "" "Perform content searching immediately so that results are returned quicker." msgstr "" #: search.c:1026 search.c:1120 #, c-format msgid "Phase 1 searching %s" msgstr "" #: search.c:1326 #, c-format msgid "Phase 2 searching %s" msgstr "" #: search.c:1241 msgid "Phase 2 starting..." msgstr "" #: interface.c:3788 msgid "" "Please be patient!\n" "\n" "Searching for executables to perform the following functions:\n" " * text editing/viewing\n" " * folder browsing\n" " * web browsing\n" "\n" "The search algorithm uses a set of standard executables for all systems, and " "then attempts to find them on your local disk.\n" "\n" "Once complete, press OK to store the executables." msgstr "" #: savestate.c:1667 msgid "Please email all debug text to cottrela@users.sf.net.\n" msgstr "" #: interface.c:3796 msgid "Please wait..." msgstr "" #: interface.c:733 interface.c:845 msgid "" "Please, type here a word or a segment of a word researched in the file(s).\n" "Don't type spaces." msgstr "" #: interface.c:712 interface.c:815 msgid "" "Please, type here the name or a segment of the name of the file(s).\n" "Don't type spaces." msgstr "" #: interface.c:2491 interface.c:2540 interface.c:2635 msgid "Possibly once" msgstr "" #: interface.c:674 msgid "Print results direct to the configured printer." msgstr "" #: interface.c:4002 msgid "" "Project Manager:\n" "Adam Cottrell \n" "\n" "Programming:\n" " Adam Cottrell \n" " Salil Joshi \n" " Yousef AlHashemi\n" " Luc Amimer \n" "Artwork:\n" " Peter Cruickshank\n" " Luc Amimer \n" msgstr "" #: interface.c:2894 msgid "Prompt before deleting files" msgstr "" #: interface.c:2889 msgid "Prompt before saving state" msgstr "" #: savestate.c:777 msgid "Ready-research mode with RegEx" msgstr "" #: savestate.c:775 msgid "Ready-research mode with jokers(DOS like)" msgstr "" #: interface.c:785 interface.c:882 msgid "Recurse Folders" msgstr "" #: interface.c:587 msgid "Release _Notes" msgstr "" #: interface.c:3145 msgid "Remove all saved settings (restart required to complete):" msgstr "" #: interface.c:3164 msgid "Reset all" msgstr "" #: interface.c:2160 msgid "Reset size/modified options" msgstr "" #: interface.c:2163 msgid "Reset the size and modified search criteria." msgstr "" #: interface.c:922 msgid "Restrict depth:" msgstr "" #: systemio.c:618 #, c-format msgid "" "Run configuration to set default directory/folder browser:\n" "\"%s\"" msgstr "" #: systemio.c:605 #, c-format msgid "" "Run configuration to set default text editor:\n" "\"%s\"" msgstr "" #: systemio.c:592 #, c-format msgid "" "Run configuration to set default web-browser:\n" "\"%s\"" msgstr "" #: interface.c:411 msgid "S_ort by" msgstr "" #: interface.c:304 msgid "Save R_esults to CSV..." msgstr "" #: interface.c:646 msgid "Save Results..." msgstr "" #: interface.c:3678 msgid "Save active/displayed entry only" msgstr "" #: interface.c:3685 msgid "Save all entries (1-entry per line)" msgstr "" #: interface.c:3193 msgid "Save now" msgstr "" #: interface.c:3338 msgid "Save results to CSV file..." msgstr "" #: interface.c:3176 msgid "Save settings immediately (normally occurs on exit):" msgstr "" #: interface.c:3655 msgid "Save the Containing Text drop down entries into a file." msgstr "" #: interface.c:3648 msgid "Save the File Name drop down entries into a file." msgstr "" #: interface.c:1287 msgid "Search criteria" msgstr "" #: interface.c:3793 msgid "Search progress" msgstr "" #: interface.c:1377 msgid "Search progress bar." msgstr "" #: interface.c:3239 interface.c:3245 interface.c:3806 interface.c:3813 msgid "Searching for system files, please wait..." msgstr "" #: search.c:861 #, c-format msgid "Searchmonkey : search in %s/" msgstr "" #: interface.c:3500 msgid "Searchmonkey style (1-entry per line)" msgstr "" #: interface.c:4065 msgid "Select Date..." msgstr "" #: interface.c:2043 msgid "Select Font" msgstr "" #: interface.c:1864 msgid "Select a folder" msgstr "" #: interface.c:2000 msgid "Select highlighting Colour" msgstr "" #: interface.c:492 msgid "Settings" msgstr "" #: interface.c:1189 msgid "Show Line Contents" msgstr "" #: interface.c:385 msgid "Show _Statusbar" msgstr "" #: interface.c:380 msgid "Show _Toolbar" msgstr "" #: savestate.c:611 msgid "Size" msgstr "" #: interface.c:942 msgid "Size :" msgstr "" #: interface.c:2661 msgid "" "Some characters (such as . | ^ $) are reserved in certain circumstances.\n" "\n" "If you know what you are doing with these characters, unselect this checkbox." msgstr "" #: interface.c:2470 interface.c:2519 interface.c:2614 msgid "Space(s)" msgstr "" #: interface.c:1217 msgid "" "Specify the maximum number of content matches within each file to show. Does " "not limit the number of files to search." msgstr "" #: interface.c:1168 msgid "" "Specify the maximum number of matching files found. Does not limit the " "number of content matches within each file." msgstr "" #: interface.c:456 interface.c:658 msgid "Start" msgstr "" #: interface.c:661 interface.c:1260 msgid "Start the search!" msgstr "" #: interface.c:467 msgid "Stop" msgstr "" #: interface.c:667 interface.c:1285 msgid "Stop the search!" msgstr "" #: interface.c:1254 msgid "Switch search from basic to advanced mode." msgstr "" #: interface.c:3217 msgid "System" msgstr "" #: interface.c:2240 msgid "Test Regular Expression" msgstr "" #: interface.c:565 msgid "Test Regular Expression..." msgstr "" #: interface.c:3108 msgid "Text delimiter:" msgstr "" #: interface.c:2968 interface.c:2986 #, c-format msgid "Text editor attributes: %f=filename, %d=directory" msgstr "" #: interface.c:2466 interface.c:2515 interface.c:2610 msgid "The character" msgstr "" #: interface.c:2469 interface.c:2518 interface.c:2613 msgid "The phrase" msgstr "" #: interface.c:2654 msgid "This is the expression that will be copied back to the main screen." msgstr "" #: interface.c:2313 msgid "" "To see the results of your regular expression click apply. Once done, simply " "close the window. Searches are case sensitive.\n" "\n" "Note: this tool will highlight each match(es) found." msgstr "" #: interface.c:4021 msgid "Translated by" msgstr "" #: savestate.c:620 msgid "Type" msgstr "" #: search.c:1649 msgid "Unknown" msgstr "" #: interface.c:2568 msgid "Update" msgstr "" #: interface.c:2572 msgid "Updates a rule that was selected for the modify function." msgstr "" #: interface.c:3115 msgid "Use ASCII characters e.g. \" # $ '" msgstr "" #: interface.c:3101 msgid "Use ASCII or C style construct e.g. , \\t ;" msgstr "" #: interface.c:3086 msgid "Use ASCII or C style construct e.g. \\n" msgstr "" #: interface.c:1121 msgid "Use Single Phase Search" msgstr "" #: interface.c:1092 msgid "Use Wil_dcard Syntax" msgstr "" #: interface.c:1099 interface.c:1143 msgid "Use _Regular Expression Syntax" msgstr "" #: interface.c:512 msgid "Use _Word Wrap" msgstr "" #: interface.c:2883 msgid "Use extended regular expressions" msgstr "" #: interface.c:1102 interface.c:1146 msgid "Use regular expression syntax in file search criteria." msgstr "" #: interface.c:1135 msgid "Use simple search syntax" msgstr "" #: interface.c:1129 msgid "Use strict contents case matching." msgstr "" #: interface.c:1075 msgid "Use strict file case matching." msgstr "" #: interface.c:3463 interface.c:3496 msgid "Use the file in an identical to way to that of the grep -f command." msgstr "" #: interface.c:859 msgid "Use the wizard to create a containing text regular expression..." msgstr "" #: interface.c:829 msgid "Use the wizard to create a file name regular expression..." msgstr "" #: interface.c:962 interface.c:984 msgid "Use this option to choose the file size units." msgstr "" #: interface.c:838 msgid "" "Use this option to restrict your search results to files containing the " "provided text (or pattern)." msgstr "" #: interface.c:949 msgid "" "Use this option to restrict your search results to files that are bigger " "than the provided number of kilo Bytes." msgstr "" #: interface.c:971 msgid "" "Use this option to restrict your search results to files that are smaller " "than the provided number of kilo Bytes." msgstr "" #: interface.c:1001 msgid "" "Use this option to restrict your search results to files that were last " "modified after the provided time." msgstr "" #: interface.c:1025 msgid "" "Use this option to restrict your search results to files that were last " "modified before the provided time." msgstr "" #: interface.c:788 interface.c:887 msgid "Use this option to search all subfolders (recursively)." msgstr "" #: interface.c:1095 interface.c:1139 msgid "Use wildcard or glob syntax for file search criteria. E.g. *.txt" msgstr "" #: interface.c:3094 msgid "Value/field separator:" msgstr "" #: interface.c:401 msgid "Vertical results" msgstr "" #: interface.c:638 msgid "Write some or all of the search criteria to disk." msgstr "" #: interface.c:4004 msgid "Written by" msgstr "" #: interface.c:2490 interface.c:2539 interface.c:2634 msgid "Zero or more times" msgstr "" #: interface.c:3117 msgid "\\\"" msgstr "" #: interface.c:3088 msgid "\\n" msgstr "" #: interface.c:719 msgid "_Containing:" msgstr "" #: interface.c:365 interface.c:1926 msgid "_Copy (Filename)" msgstr "" #: interface.c:341 msgid "_Delete (File)" msgstr "" #: interface.c:1934 msgid "_Delete File" msgstr "" #: interface.c:334 msgid "_Edit" msgstr "" #: interface.c:1942 msgid "_Explore Folder" msgstr "" #: interface.c:549 msgid "_Export Regular Expression..." msgstr "" #: interface.c:281 msgid "_File" msgstr "" #: interface.c:418 msgid "_File Name" msgstr "" #: interface.c:591 msgid "_Forums" msgstr "" #: interface.c:569 msgid "_Help" msgstr "" #: interface.c:1077 msgid "_Ignore files beginning with '.'" msgstr "" #: interface.c:538 msgid "_Import Regular Expression..." msgstr "" #: interface.c:423 msgid "_Location" msgstr "" #: interface.c:438 msgid "_Modified" msgstr "" #: interface.c:288 msgid "_New Instance" msgstr "" #: interface.c:449 msgid "_Search" msgstr "" #: interface.c:428 msgid "_Size" msgstr "" #: interface.c:583 msgid "_Support" msgstr "" #: interface.c:433 msgid "_Type" msgstr "" #: interface.c:576 msgid "_User Guide" msgstr "" #: interface.c:373 msgid "_View" msgstr "" #: savestate.c:1744 msgid "case sensitive; " msgstr "" #: savestate.c:1753 #, c-format msgid "display %d extra lines around match; " msgstr "" #: savestate.c:1750 msgid "display 1 extra line around match; " msgstr "" #: callbacks.c:387 msgid "http://searchmonkey.embeddediq.com/index.php/contribute" msgstr "" #: callbacks.c:395 msgid "http://searchmonkey.embeddediq.com/index.php/support" msgstr "" #: callbacks.c:1212 msgid "http://searchmonkey.embeddediq.com/index.php/support/index" msgstr "" #: callbacks.c:762 msgid "" "http://searchmonkey.sourceforge.net/index.php/Regular_expression_builder" msgstr "" #: callbacks.c:438 msgid "http://sourceforge.net/forum/?group_id=175143" msgstr "" #: callbacks.c:1162 msgid "" "https://sourceforge.net/projects/searchmonkey/files/gSearchmonkey%20GTK" "%20%28Gnome%29/0.8.2%20%5Bstable%5D/" msgstr "" #: savestate.c:1772 msgid "none" msgstr "" #: savestate.c:1766 #, c-format msgid "only showing first %d content matches; " msgstr "" #: savestate.c:1763 msgid "only showing first content match; " msgstr "" #: savestate.c:1757 msgid "only showing line numbers; " msgstr "" #: callbacks.c:1531 msgid "research mode with RegEx" msgstr "" #: callbacks.c:1528 msgid "research mode with jokers(DOS like)" msgstr "" #: interface.c:2284 msgid "sample" msgstr "" #: interface.c:262 msgid "searchmonkey" msgstr "" #: callbacks.c:411 #, c-format msgid "searchmonkey %s" msgstr "" #: interface.c:3974 msgid "searchmonkey Credits" msgstr "" #: interface.c:2480 interface.c:2529 interface.c:2624 msgid "that occurs" msgstr "" searchmonkey-0.8.3/po/en_UK.po0000664000175000017500000007203113236164262013124 00000000000000# Searchmonkey - desktop searching with regular expression wizard. # Copyright (C) 2007 # This file is distributed under LGPL # Adam Cottrell , 2007. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: 0.8.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-08 15:39+0100\n" "PO-Revision-Date: 2007-01-31 16:52+0000\n" "Last-Translator: Adam Cottrell \n" "Language-Team: Adam Cottrell \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: savestate.c:1666 #, c-format msgid "" "\n" "Internal error %d! Unable to highlight line - offset beyond line-end.\n" msgstr "" #: main.c:68 msgid "" "\n" "No content searching performed for this file.\n" "\n" "Please ensure containing search was enabled, and that an expression was " "entered prior to starting search.\n" msgstr "" #: savestate.c:1671 #, c-format msgid " Debug: %d) '%s'\n" msgstr "" #: savestate.c:1668 #, c-format msgid " Debug: fn='%s'\n" msgstr "" #: savestate.c:1669 #, c-format msgid " Debug: tc=%d + os=%d || oe=%d\n" msgstr "" #: savestate.c:44 #, c-format msgid " %s settings auto-generated - Do not edit!" msgstr "" #: search.c:1719 msgid " [cancelled]" msgstr "" #: search.c:1712 msgid " [inv]" msgstr "" #: savestate.c:183 msgid " [missing]" msgstr "" #: search.c:1610 #, c-format msgid "%1.1f KB" msgstr "" #: search.c:1612 #, c-format msgid "%1.1f MB" msgstr "" #: interface.c:2978 #, c-format msgid "%d" msgstr "" #: search.c:1608 #, c-format msgid "%d bytes" msgstr "" #: search.c:1707 #, c-format msgid "%d file found" msgstr "" #: search.c:1709 #, c-format msgid "%d files found" msgstr "" #: interface.c:2969 interface.c:2987 #, c-format msgid "%f" msgstr "" #: search.c:1129 #, c-format msgid "%s %s\n" msgstr "" #: systemio.c:1077 #, c-format msgid "%s Error! Unable to duplicate string vector\n" msgstr "" #: systemio.c:1068 #, c-format msgid "%s Error! Unable to split %s with %c\n" msgstr "" #: search.c:1639 #, c-format msgid "%s-type" msgstr "" #: search.c:653 search.c:667 #, c-format msgid "%x" msgstr "" #: callbacks.c:1018 msgid "(Entry)" msgstr "" #: callbacks.c:1023 msgid "(Repeat)" msgstr "" #: callbacks.c:1013 msgid "(Type)" msgstr "" #: interface.c:3103 msgid "," msgstr "" #: search.c:1727 msgid "-research mode with RegEx" msgstr "" #: search.c:1724 msgid "-research mode with jokers(DOS like)" msgstr "" #: savestate.c:1776 msgid ".\n" msgstr "" #: callbacks.c:1148 msgid "0%" msgstr "" #: systemio.c:557 msgid "100%" msgstr "" #: interface.c:2311 msgid "" msgstr "" #: search.c:681 msgid "" "Error!\n" "\n" "Dates mismatch ! 'Before than' date must be more recent than 'After " "than' date.\n" "Search can't proceed correctly !\n" "Please check the dates." msgstr "" #: search.c:650 msgid "" "Error!\n" "\n" "Invalid 'After'date - format as dd/mm/yyyy or dd mmm yy." msgstr "" #: search.c:664 msgid "" "Error!\n" "\n" "Invalid 'Before' date - format as dd/mm/yyyy or dd mmm yy." msgstr "" #: search.c:630 msgid "" "Error!\n" "\n" "LessThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" #: search.c:614 msgid "" "Error!\n" "\n" "MoreThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" #: search.c:618 search.c:634 msgid "" "Error!\n" "\n" "MoreThan file size must be stricly inferior to LessThan file size.So " "this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" #: interface.c:3659 msgid "Export Source" msgstr "" #: interface.c:3692 msgid "Export Type" msgstr "" #: interface.c:1151 msgid "File Contents Options" msgstr "" #: interface.c:1107 msgid "File Name Options" msgstr "" #: interface.c:3474 msgid "Import Location" msgstr "" #: interface.c:3507 msgid "Import Type" msgstr "" #: interface.c:2664 msgid "Resulting expression" msgstr "" #: interface.c:1235 msgid "Results Options" msgstr "" #: interface.c:2292 msgid "Sample Text:" msgstr "" #: interface.c:2116 msgid "" "Select which data to delete:\n" "With this dialog, you can control how your entries will be cleared." msgstr "" #: interface.c:2331 msgid "Status:" msgstr "" #: interface.c:2275 msgid "Test Expression:" msgstr "" #: interface.c:2259 msgid "" "Test Regular Expressions (RegEx):\n" "With this dialog, you can test a RegEx before using it.\n" "Feel free to type a RegEx and put an example of text to test it." msgstr "" #: interface.c:2456 msgid "Text begins:" msgstr "" #: interface.c:2586 msgid "Text contains" msgstr "" #: interface.c:2600 msgid "Text ends:" msgstr "" #: interface.c:2168 msgid "Warning: Once cleared, history cannot be recovered!" msgstr "" #: interface.c:3888 msgid "" "Regular expression power search utility written in GTK+ and licensed " "under GPL v.3" msgstr "" #: interface.c:819 msgid "" "RegEx Expression Builder..." msgstr "" #: interface.c:848 msgid "" "RegEx Expression Builder..." msgstr "" #: systemio.c:198 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "" #: search.c:882 msgid "Aborting research-Searchmonkey" msgstr "" #: interface.c:3855 msgid "About searchmonkey" msgstr "" #: savestate.c:145 msgid "About to overwrite save configuration. Do you want to proceed?" msgstr "" #: interface.c:2690 msgid "Accept the resulting expression, and add it to the search rules." msgstr "" #: interface.c:4019 msgid "" "Adam Cottrell (en_GB)\n" "Luc Amimer (fr)" msgstr "" #: interface.c:2562 msgid "Add" msgstr "" #: interface.c:631 msgid "Add search criteria from a text file. Similar to the grep -f flag." msgstr "" #: interface.c:1048 msgid "Advanced" msgstr "" #: interface.c:998 msgid "After:" msgstr "" #: interface.c:2468 interface.c:2517 interface.c:2612 msgid "Any char except these" msgstr "" #: interface.c:2465 interface.c:2514 interface.c:2609 msgid "Any character" msgstr "" #: interface.c:2471 interface.c:2520 interface.c:2615 msgid "Any numeric character" msgstr "" #: interface.c:2467 interface.c:2516 interface.c:2611 msgid "Any one of these chars" msgstr "" #: interface.c:2472 interface.c:2521 interface.c:2616 msgid "Any text character" msgstr "" #: callbacks.c:1176 msgid "" "Are you sure that you wish to delete the config file, and restart " "searchmonkey?" msgstr "" #: systemio.c:804 #, c-format msgid "" "Are you sure you want to delete:\n" "\t'%s'" msgstr "" #: interface.c:2950 msgid "Attributes" msgstr "" #: interface.c:3762 msgid "Auto Complete" msgstr "" #: interface.c:3045 msgid "Auto search..." msgstr "" #: interface.c:517 msgid "Auto-size columns" msgstr "" #: interface.c:791 msgid "Basic" msgstr "" #: interface.c:1022 msgid "Before:" msgstr "" #: interface.c:2944 msgid "Binary/Executable" msgstr "" #: interface.c:896 msgid "Browse your file system and select the search directory..." msgstr "" #: interface.c:1955 msgid "C_ancel" msgstr "" #: systemio.c:845 msgid "Cannot copy full file name as name was not selected." msgstr "" #: systemio.c:781 msgid "Cannot delete file as name was not selected." msgstr "" #: interface.c:2904 msgid "Check this to allow" msgstr "" #: interface.c:484 msgid "Clear History..." msgstr "" #: interface.c:2097 msgid "Clear Search History" msgstr "" #: interface.c:2157 msgid "Clear all directories in the \"Folders:\" drop-down list" msgstr "" #: interface.c:2145 msgid "Clear all file names in the \"Files:\" drop-down list" msgstr "" #: interface.c:2151 msgid "Clear all patterns in the \"Containing:\" drop-down list" msgstr "" #: interface.c:2148 msgid "Clear containing text" msgstr "" #: interface.c:2142 msgid "Clear file names" msgstr "" #: interface.c:2154 msgid "Clear look in history" msgstr "" #: interface.c:2859 msgid "Configuration" msgstr "" #: savestate.c:79 msgid "" "Configuration files are for a different version of Searchmonkey. This may " "cause errors. Delete old configuration files?" msgstr "" #: interface.c:3652 msgid "Containing Text Export Criteria" msgstr "" #: interface.c:3467 msgid "Containing Text import" msgstr "" #: interface.c:835 msgid "Containing:" msgstr "" #: callbacks.c:1107 msgid "Context Expression Wizard" msgstr "" #: interface.c:2658 msgid "Convert Internals" msgstr "" #: interface.c:3898 msgid "Copyright (c) 2006-2018 Adam Cottrell" msgstr "" #: support.c:90 support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "" #: interface.c:649 msgid "Create a CSV file containing a list of results." msgstr "" #: interface.c:2566 msgid "Creates a new row in the list with the following rule." msgstr "" #: interface.c:3925 msgid "Credits" msgstr "" #: interface.c:3121 msgid "Csv Export" msgstr "" #: interface.c:3203 msgid "Current Config file location:" msgstr "" #: interface.c:3049 msgid "Default Applications" msgstr "" #: interface.c:2937 msgid "Default folder explorer:" msgstr "" #: interface.c:2930 msgid "Default text editor:" msgstr "" #: interface.c:2956 msgid "Default web browser:" msgstr "" #: interface.c:2580 msgid "Delete" msgstr "" #: interface.c:2584 msgid "Deletes an existing row in the rule table." msgstr "" #: interface.c:261 msgid "Desktop search to replace find and grep." msgstr "" #: regexwizard.c:100 msgid "Did not match any." msgstr "" #: interface.c:2683 msgid "Discard any changes." msgstr "" #: interface.c:1321 interface.c:1356 msgid "Displays the matching text lines when the result is selected." msgstr "" #: interface.c:2464 interface.c:2513 interface.c:2608 msgid "Don't know" msgstr "" #: interface.c:2554 msgid "" "Each row creates a new part to the rule, with the order reflecting the order " "in which the rule is to be matched." msgstr "" #: interface.c:1918 msgid "Edit (File)" msgstr "" #: interface.c:349 msgid "Edit File" msgstr "" #: interface.c:724 msgid "Enable contents search to find files with matching content too." msgstr "" #: interface.c:3079 msgid "End of row separator:" msgstr "" #: savestate.c:161 #, c-format msgid "Error saving %s: %s\n" msgstr "" #: callbacks.c:1622 msgid "Error! Invalid 'containing text' regular expression" msgstr "" #: callbacks.c:1598 msgid "Error! Invalid 'file name' regular expression" msgstr "" #: misc.c:298 search.c:845 msgid "Error! Invalid Containing Text regular expression" msgstr "" #: misc.c:288 search.c:839 msgid "Error! Invalid File Name regular expression" msgstr "" #: misc.c:509 search.c:820 msgid "Error! Look In directory cannot be blank." msgstr "" #: misc.c:520 search.c:831 msgid "Error! Look In directory is invalid." msgstr "" #: systemio.c:310 systemio.c:419 msgid "Error! No valid file selected." msgstr "" #: systemio.c:387 msgid "Error! Unable to find first combo entry. Is drop down list blank?" msgstr "" #: callbacks.c:1182 #, c-format msgid "Error! Unable to remove config file %s.\n" msgstr "" #: systemio.c:363 msgid "" "Error! You must select at least one entry in order to save drop down list." msgstr "" #: interface.c:1252 msgid "Expert Mode" msgstr "" #: interface.c:3594 msgid "Export Criteria" msgstr "" #: interface.c:635 msgid "Export Expression..." msgstr "" #: interface.c:2438 msgid "Expression Wizard" msgstr "" #: interface.c:2886 msgid "" "Extended regular expressions are recommended as they provide more " "functionality." msgstr "" #: interface.c:531 msgid "Extras" msgstr "" #: callbacks.c:1105 msgid "File Expression Wizard" msgstr "" #: interface.c:3645 msgid "File Name Export criteria" msgstr "" #: interface.c:3460 msgid "File Name import" msgstr "" #: interface.c:3438 interface.c:3622 msgid "File Selection" msgstr "" #: interface.c:2977 #, c-format msgid "File explorer attributes: %f=filename, %d=directory" msgstr "" #: systemio.c:110 msgid "File name" msgstr "" #: systemio.c:112 msgid "File size" msgstr "" #: systemio.c:113 msgid "File type" msgstr "" #: systemio.c:289 msgid "File was empty/invalid." msgstr "" #: interface.c:713 interface.c:806 msgid "Files:" msgstr "" #: interface.c:3022 msgid "Find default executables:" msgstr "" #: interface.c:743 interface.c:869 msgid "Folders:" msgstr "" #: interface.c:1083 msgid "Follow Symbol _Links" msgstr "" #: interface.c:1086 msgid "Follow Symbolic Links (Only on systems that support them)" msgstr "" #: interface.c:2897 msgid "Force a prompt before any files are deleted" msgstr "" #: interface.c:2892 msgid "Force a prompt before settings are saved." msgstr "" #: interface.c:2878 msgid "Force single window mode" msgstr "" #: regexwizard.c:104 #, c-format msgid "Found %d matches." msgstr "" #: regexwizard.c:102 msgid "Found 1 match." msgstr "" #: interface.c:966 interface.c:988 msgid "Gb" msgstr "" #: interface.c:2907 msgid "Global Settings" msgstr "" #: interface.c:3493 msgid "Grep style file (1-entry, OR each line)" msgstr "" #: interface.c:2677 msgid "Help with the Regular Expression Builder" msgstr "" #: interface.c:1225 msgid "Highlights per line :" msgstr "" #: interface.c:395 msgid "Horizontal results" msgstr "" #: interface.c:1192 msgid "" "If active, display extra lines around the matching line to help show context " "of match." msgstr "" #: interface.c:1080 msgid "Ignore hidden files (Unix filesystems only)" msgstr "" #: systemio.c:456 #, c-format msgid "" "Illegal escape sequence: '\\%c'.\n" " Valid escape characters are: b n r t \" \\" msgstr "" #: interface.c:3410 msgid "Import Criteria" msgstr "" #: interface.c:628 msgid "Import Expression..." msgstr "" #: interface.c:3470 interface.c:3503 interface.c:3688 msgid "Import a file identical to that generated by the export command." msgstr "" #: systemio.c:474 #, c-format msgid "" "Input string expands into non ASCII, or multi-byte key sequence: '%s'.\n" " Please try to use ASCII safe keys" msgstr "" #: callbacks.c:755 msgid "Internal Error! Unable to find calling wizard type!" msgstr "" #: interface.c:1067 msgid "Invert Search Expression" msgstr "" #: interface.c:1070 msgid "Inverts the file name search results i.e. find all becomes find none." msgstr "" #: interface.c:3681 msgid "Just save the currently displayed entry to a file." msgstr "" #: interface.c:964 interface.c:986 msgid "Kb" msgstr "" #: interface.c:968 msgid "Less than:" msgstr "" #: interface.c:1213 msgid "Limit Content Highlighting" msgstr "" #: interface.c:1165 msgid "Limit Match Files" msgstr "" #: interface.c:925 msgid "Limit files found by selecting maximum tree-depth to search." msgstr "" #: savestate.c:1623 savestate.c:1687 #, c-format msgid "Line Number: %d\n" msgstr "" #: interface.c:1199 msgid "Lines Displayed:" msgstr "" #: interface.c:1301 interface.c:1336 msgid "List of file(s) corresponding to research criteria." msgstr "" #: savestate.c:602 savestate.c:1395 systemio.c:111 msgid "Location" msgstr "" #: interface.c:3211 msgid "Location of your current searchmonkey configuration settings file." msgstr "" #: interface.c:443 msgid "Mat_ches" msgstr "" #: interface.c:1072 interface.c:1126 msgid "Match Case" msgstr "" #: interface.c:2900 msgid "Match strings within binary files too" msgstr "" #: savestate.c:638 msgid "Matches" msgstr "" #: interface.c:1175 msgid "Maximum Hits:" msgstr "" #: interface.c:954 msgid "Maximum filesize in kBytes/mBytes/gBytes." msgstr "" #: interface.c:965 interface.c:987 msgid "Mb" msgstr "" #: interface.c:976 msgid "Minimum filesize in kBytes/mBytes/gBytes." msgstr "" #: savestate.c:629 msgid "Modified" msgstr "" #: systemio.c:114 msgid "Modified date" msgstr "" #: interface.c:994 msgid "Modified:" msgstr "" #: interface.c:2578 msgid "Modifies an existing row in the rule table." msgstr "" #: interface.c:2574 msgid "Modify" msgstr "" #: interface.c:946 msgid "More than:" msgstr "" #: systemio.c:486 #, c-format msgid "" "Multi-byte string entered: '%s'.\n" "Truncating extra character (%c)" msgstr "" #: main.c:70 msgid "N/A" msgstr "" #: savestate.c:593 msgid "Name" msgstr "" #: interface.c:616 msgid "New Instance" msgstr "" #: systemio.c:179 msgid "No results to save!" msgstr "" #: interface.c:2488 interface.c:2537 interface.c:2632 msgid "Once" msgstr "" #: interface.c:2489 interface.c:2538 interface.c:2633 msgid "One or more times" msgstr "" #: interface.c:357 msgid "Open Folder" msgstr "" #: interface.c:619 msgid "Open a new search window." msgstr "" #: interface.c:1017 interface.c:1041 msgid "Open calendar dialog to choose modified date." msgstr "" #: interface.c:761 msgid "Opens a dialog to find a look in directory." msgstr "" #: interface.c:1240 interface.c:3512 interface.c:3697 msgid "Options" msgstr "" #: savestate.c:1729 msgid "Options: " msgstr "" #: interface.c:323 msgid "P_rint Setup..." msgstr "" #: savestate.c:1621 #, c-format msgid "Paragraph Number: %d\n" msgstr "" #: interface.c:3003 msgid "Paste and edit full file name of your preferred file explorer." msgstr "" #: interface.c:2995 msgid "Paste and edit full file name of your preferred text editor." msgstr "" #: interface.c:3011 msgid "Paste and edit full file name of your preferred web browser." msgstr "" #: interface.c:1124 msgid "" "Perform content searching immediately so that results are returned quicker." msgstr "" #: search.c:1026 search.c:1120 #, c-format msgid "Phase 1 searching %s" msgstr "" #: search.c:1326 #, c-format msgid "Phase 2 searching %s" msgstr "" #: search.c:1241 msgid "Phase 2 starting..." msgstr "" #: interface.c:3788 msgid "" "Please be patient!\n" "\n" "Searching for executables to perform the following functions:\n" " * text editing/viewing\n" " * folder browsing\n" " * web browsing\n" "\n" "The search algorithm uses a set of standard executables for all systems, and " "then attempts to find them on your local disk.\n" "\n" "Once complete, press OK to store the executables." msgstr "" #: savestate.c:1667 msgid "Please email all debug text to cottrela@users.sf.net.\n" msgstr "" #: interface.c:3796 msgid "Please wait..." msgstr "" #: interface.c:733 interface.c:845 msgid "" "Please, type here a word or a segment of a word researched in the file(s).\n" "Don't type spaces." msgstr "" #: interface.c:712 interface.c:815 msgid "" "Please, type here the name or a segment of the name of the file(s).\n" "Don't type spaces." msgstr "" #: interface.c:2491 interface.c:2540 interface.c:2635 msgid "Possibly once" msgstr "" #: interface.c:674 msgid "Print results direct to the configured printer." msgstr "" #: interface.c:4002 msgid "" "Project Manager:\n" "Adam Cottrell \n" "\n" "Programming:\n" " Adam Cottrell \n" " Salil Joshi \n" " Yousef AlHashemi\n" " Luc Amimer \n" "Artwork:\n" " Peter Cruickshank\n" " Luc Amimer \n" msgstr "" #: interface.c:2894 msgid "Prompt before deleting files" msgstr "" #: interface.c:2889 msgid "Prompt before saving state" msgstr "" #: savestate.c:777 msgid "Ready-research mode with RegEx" msgstr "" #: savestate.c:775 msgid "Ready-research mode with jokers(DOS like)" msgstr "" #: interface.c:785 interface.c:882 msgid "Recurse Folders" msgstr "" #: interface.c:587 msgid "Release _Notes" msgstr "" #: interface.c:3145 msgid "Remove all saved settings (restart required to complete):" msgstr "" #: interface.c:3164 msgid "Reset all" msgstr "" #: interface.c:2160 msgid "Reset size/modified options" msgstr "" #: interface.c:2163 msgid "Reset the size and modified search criteria." msgstr "" #: interface.c:922 msgid "Restrict depth:" msgstr "" #: systemio.c:618 #, c-format msgid "" "Run configuration to set default directory/folder browser:\n" "\"%s\"" msgstr "" #: systemio.c:605 #, c-format msgid "" "Run configuration to set default text editor:\n" "\"%s\"" msgstr "" #: systemio.c:592 #, c-format msgid "" "Run configuration to set default web-browser:\n" "\"%s\"" msgstr "" #: interface.c:411 msgid "S_ort by" msgstr "" #: interface.c:304 msgid "Save R_esults to CSV..." msgstr "" #: interface.c:646 msgid "Save Results..." msgstr "" #: interface.c:3678 msgid "Save active/displayed entry only" msgstr "" #: interface.c:3685 msgid "Save all entries (1-entry per line)" msgstr "" #: interface.c:3193 msgid "Save now" msgstr "" #: interface.c:3338 msgid "Save results to CSV file..." msgstr "" #: interface.c:3176 msgid "Save settings immediately (normally occurs on exit):" msgstr "" #: interface.c:3655 msgid "Save the Containing Text drop down entries into a file." msgstr "" #: interface.c:3648 msgid "Save the File Name drop down entries into a file." msgstr "" #: interface.c:1287 msgid "Search criteria" msgstr "" #: interface.c:3793 msgid "Search progress" msgstr "" #: interface.c:1377 msgid "Search progress bar." msgstr "" #: interface.c:3239 interface.c:3245 interface.c:3806 interface.c:3813 msgid "Searching for system files, please wait..." msgstr "" #: search.c:861 #, c-format msgid "Searchmonkey : search in %s/" msgstr "" #: interface.c:3500 msgid "Searchmonkey style (1-entry per line)" msgstr "" #: interface.c:4065 msgid "Select Date..." msgstr "" #: interface.c:2043 msgid "Select Font" msgstr "" #: interface.c:1864 msgid "Select a folder" msgstr "" #: interface.c:2000 msgid "Select highlighting Colour" msgstr "" #: interface.c:492 msgid "Settings" msgstr "" #: interface.c:1189 msgid "Show Line Contents" msgstr "" #: interface.c:385 msgid "Show _Statusbar" msgstr "" #: interface.c:380 msgid "Show _Toolbar" msgstr "" #: savestate.c:611 msgid "Size" msgstr "" #: interface.c:942 msgid "Size :" msgstr "" #: interface.c:2661 msgid "" "Some characters (such as . | ^ $) are reserved in certain circumstances.\n" "\n" "If you know what you are doing with these characters, unselect this checkbox." msgstr "" #: interface.c:2470 interface.c:2519 interface.c:2614 msgid "Space(s)" msgstr "" #: interface.c:1217 msgid "" "Specify the maximum number of content matches within each file to show. Does " "not limit the number of files to search." msgstr "" #: interface.c:1168 msgid "" "Specify the maximum number of matching files found. Does not limit the " "number of content matches within each file." msgstr "" #: interface.c:456 interface.c:658 msgid "Start" msgstr "" #: interface.c:661 interface.c:1260 msgid "Start the search!" msgstr "" #: interface.c:467 msgid "Stop" msgstr "" #: interface.c:667 interface.c:1285 msgid "Stop the search!" msgstr "" #: interface.c:1254 msgid "Switch search from basic to advanced mode." msgstr "" #: interface.c:3217 msgid "System" msgstr "" #: interface.c:2240 msgid "Test Regular Expression" msgstr "" #: interface.c:565 msgid "Test Regular Expression..." msgstr "" #: interface.c:3108 msgid "Text delimiter:" msgstr "" #: interface.c:2968 interface.c:2986 #, c-format msgid "Text editor attributes: %f=filename, %d=directory" msgstr "" #: interface.c:2466 interface.c:2515 interface.c:2610 msgid "The character" msgstr "" #: interface.c:2469 interface.c:2518 interface.c:2613 msgid "The phrase" msgstr "" #: interface.c:2654 msgid "This is the expression that will be copied back to the main screen." msgstr "" #: interface.c:2313 msgid "" "To see the results of your regular expression click apply. Once done, simply " "close the window. Searches are case sensitive.\n" "\n" "Note: this tool will highlight each match(es) found." msgstr "" #: interface.c:4021 msgid "Translated by" msgstr "" #: savestate.c:620 msgid "Type" msgstr "" #: search.c:1649 msgid "Unknown" msgstr "" #: interface.c:2568 msgid "Update" msgstr "" #: interface.c:2572 msgid "Updates a rule that was selected for the modify function." msgstr "" #: interface.c:3115 msgid "Use ASCII characters e.g. \" # $ '" msgstr "" #: interface.c:3101 msgid "Use ASCII or C style construct e.g. , \\t ;" msgstr "" #: interface.c:3086 msgid "Use ASCII or C style construct e.g. \\n" msgstr "" #: interface.c:1121 msgid "Use Single Phase Search" msgstr "" #: interface.c:1092 msgid "Use Wil_dcard Syntax" msgstr "" #: interface.c:1099 interface.c:1143 msgid "Use _Regular Expression Syntax" msgstr "" #: interface.c:512 msgid "Use _Word Wrap" msgstr "" #: interface.c:2883 msgid "Use extended regular expressions" msgstr "" #: interface.c:1102 interface.c:1146 msgid "Use regular expression syntax in file search criteria." msgstr "" #: interface.c:1135 msgid "Use simple search syntax" msgstr "" #: interface.c:1129 msgid "Use strict contents case matching." msgstr "" #: interface.c:1075 msgid "Use strict file case matching." msgstr "" #: interface.c:3463 interface.c:3496 msgid "Use the file in an identical to way to that of the grep -f command." msgstr "" #: interface.c:859 msgid "Use the wizard to create a containing text regular expression..." msgstr "" #: interface.c:829 msgid "Use the wizard to create a file name regular expression..." msgstr "" #: interface.c:962 interface.c:984 msgid "Use this option to choose the file size units." msgstr "" #: interface.c:838 msgid "" "Use this option to restrict your search results to files containing the " "provided text (or pattern)." msgstr "" #: interface.c:949 msgid "" "Use this option to restrict your search results to files that are bigger " "than the provided number of kilo Bytes." msgstr "" #: interface.c:971 msgid "" "Use this option to restrict your search results to files that are smaller " "than the provided number of kilo Bytes." msgstr "" #: interface.c:1001 msgid "" "Use this option to restrict your search results to files that were last " "modified after the provided time." msgstr "" #: interface.c:1025 msgid "" "Use this option to restrict your search results to files that were last " "modified before the provided time." msgstr "" #: interface.c:788 interface.c:887 msgid "Use this option to search all subfolders (recursively)." msgstr "" #: interface.c:1095 interface.c:1139 msgid "Use wildcard or glob syntax for file search criteria. E.g. *.txt" msgstr "" #: interface.c:3094 msgid "Value/field separator:" msgstr "" #: interface.c:401 msgid "Vertical results" msgstr "" #: interface.c:638 msgid "Write some or all of the search criteria to disk." msgstr "" #: interface.c:4004 msgid "Written by" msgstr "" #: interface.c:2490 interface.c:2539 interface.c:2634 msgid "Zero or more times" msgstr "" #: interface.c:3117 msgid "\\\"" msgstr "" #: interface.c:3088 msgid "\\n" msgstr "" #: interface.c:719 msgid "_Containing:" msgstr "" #: interface.c:365 interface.c:1926 msgid "_Copy (Filename)" msgstr "" #: interface.c:341 msgid "_Delete (File)" msgstr "" #: interface.c:1934 msgid "_Delete File" msgstr "" #: interface.c:334 msgid "_Edit" msgstr "" #: interface.c:1942 msgid "_Explore Folder" msgstr "" #: interface.c:549 msgid "_Export Regular Expression..." msgstr "" #: interface.c:281 msgid "_File" msgstr "" #: interface.c:418 msgid "_File Name" msgstr "" #: interface.c:591 msgid "_Forums" msgstr "" #: interface.c:569 msgid "_Help" msgstr "" #: interface.c:1077 msgid "_Ignore files beginning with '.'" msgstr "" #: interface.c:538 msgid "_Import Regular Expression..." msgstr "" #: interface.c:423 msgid "_Location" msgstr "" #: interface.c:438 msgid "_Modified" msgstr "" #: interface.c:288 msgid "_New Instance" msgstr "" #: interface.c:449 msgid "_Search" msgstr "" #: interface.c:428 msgid "_Size" msgstr "" #: interface.c:583 msgid "_Support" msgstr "" #: interface.c:433 msgid "_Type" msgstr "" #: interface.c:576 msgid "_User Guide" msgstr "" #: interface.c:373 msgid "_View" msgstr "" #: savestate.c:1744 msgid "case sensitive; " msgstr "" #: savestate.c:1753 #, c-format msgid "display %d extra lines around match; " msgstr "" #: savestate.c:1750 msgid "display 1 extra line around match; " msgstr "" #: callbacks.c:387 msgid "http://searchmonkey.embeddediq.com/index.php/contribute" msgstr "" #: callbacks.c:395 msgid "http://searchmonkey.embeddediq.com/index.php/support" msgstr "" #: callbacks.c:1212 msgid "http://searchmonkey.embeddediq.com/index.php/support/index" msgstr "" #: callbacks.c:762 msgid "" "http://searchmonkey.sourceforge.net/index.php/Regular_expression_builder" msgstr "" #: callbacks.c:438 msgid "http://sourceforge.net/forum/?group_id=175143" msgstr "" #: callbacks.c:1162 msgid "" "https://sourceforge.net/projects/searchmonkey/files/gSearchmonkey%20GTK" "%20%28Gnome%29/0.8.2%20%5Bstable%5D/" msgstr "" #: savestate.c:1772 msgid "none" msgstr "" #: savestate.c:1766 #, c-format msgid "only showing first %d content matches; " msgstr "" #: savestate.c:1763 msgid "only showing first content match; " msgstr "" #: savestate.c:1757 msgid "only showing line numbers; " msgstr "" #: callbacks.c:1531 msgid "research mode with RegEx" msgstr "" #: callbacks.c:1528 msgid "research mode with jokers(DOS like)" msgstr "" #: interface.c:2284 msgid "sample" msgstr "" #: interface.c:262 msgid "searchmonkey" msgstr "" #: callbacks.c:411 #, c-format msgid "searchmonkey %s" msgstr "" #: interface.c:3974 msgid "searchmonkey Credits" msgstr "" #: interface.c:2480 interface.c:2529 interface.c:2624 msgid "that occurs" msgstr "" searchmonkey-0.8.3/po/en_US.po0000664000175000017500000007716613236164262013152 00000000000000# Searchmonkey - desktop searching with regular expression wizard. # Copyright (C) 2007 # This file is distributed under LGPL # Adam Cottrell , 2007. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: 0.8.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-08 15:39+0100\n" "PO-Revision-Date: 2007-01-31 16:08+0000\n" "Last-Translator: Adam Cottrell \n" "Language-Team: Adam Cottrell \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: savestate.c:1666 #, c-format msgid "" "\n" "Internal error %d! Unable to highlight line - offset beyond line-end.\n" msgstr "" #: main.c:68 msgid "" "\n" "No content searching performed for this file.\n" "\n" "Please ensure containing search was enabled, and that an expression was " "entered prior to starting search.\n" msgstr "" #: savestate.c:1671 #, c-format msgid " Debug: %d) '%s'\n" msgstr "" #: savestate.c:1668 #, c-format msgid " Debug: fn='%s'\n" msgstr "" #: savestate.c:1669 #, c-format msgid " Debug: tc=%d + os=%d || oe=%d\n" msgstr "" #: savestate.c:44 #, c-format msgid " %s settings auto-generated - Do not edit!" msgstr "" #: search.c:1719 msgid " [cancelled]" msgstr " [canceled]" #: search.c:1712 msgid " [inv]" msgstr "" #: savestate.c:183 msgid " [missing]" msgstr "" #: search.c:1610 #, c-format msgid "%1.1f KB" msgstr "" #: search.c:1612 #, c-format msgid "%1.1f MB" msgstr "" #: interface.c:2978 #, c-format msgid "%d" msgstr "" #: search.c:1608 #, c-format msgid "%d bytes" msgstr "" #: search.c:1707 #, c-format msgid "%d file found" msgstr "" #: search.c:1709 #, c-format msgid "%d files found" msgstr "" #: interface.c:2969 interface.c:2987 #, c-format msgid "%f" msgstr "" #: search.c:1129 #, c-format msgid "%s %s\n" msgstr "" #: systemio.c:1077 #, c-format msgid "%s Error! Unable to duplicate string vector\n" msgstr "" #: systemio.c:1068 #, c-format msgid "%s Error! Unable to split %s with %c\n" msgstr "" #: search.c:1639 #, c-format msgid "%s-type" msgstr "" #: search.c:653 search.c:667 #, c-format msgid "%x" msgstr "" #: callbacks.c:1018 msgid "(Entry)" msgstr "" #: callbacks.c:1023 msgid "(Repeat)" msgstr "" #: callbacks.c:1013 msgid "(Type)" msgstr "" #: interface.c:3103 msgid "," msgstr "" #: search.c:1727 msgid "-research mode with RegEx" msgstr "" #: search.c:1724 msgid "-research mode with jokers(DOS like)" msgstr "" #: savestate.c:1776 msgid ".\n" msgstr "" #: callbacks.c:1148 msgid "0%" msgstr "" #: systemio.c:557 msgid "100%" msgstr "" #: interface.c:2311 msgid "" msgstr "" #: search.c:681 msgid "" "Error!\n" "\n" "Dates mismatch ! 'Before than' date must be more recent than 'After " "than' date.\n" "Search can't proceed correctly !\n" "Please check the dates." msgstr "" #: search.c:650 #, fuzzy msgid "" "Error!\n" "\n" "Invalid 'After'date - format as dd/mm/yyyy or dd mmm yy." msgstr "Error! Invalid 'After' date - format as mm/dd/yyyy or mmm dd yy." #: search.c:664 #, fuzzy msgid "" "Error!\n" "\n" "Invalid 'Before' date - format as dd/mm/yyyy or dd mmm yy." msgstr "Error! Invalid 'Before' date - format as mm/dd/yyyy or dd mmm yy." #: search.c:630 msgid "" "Error!\n" "\n" "LessThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" #: search.c:614 msgid "" "Error!\n" "\n" "MoreThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" #: search.c:618 search.c:634 msgid "" "Error!\n" "\n" "MoreThan file size must be stricly inferior to LessThan file size.So " "this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" #: interface.c:3659 msgid "Export Source" msgstr "" #: interface.c:3692 msgid "Export Type" msgstr "" #: interface.c:1151 msgid "File Contents Options" msgstr "" #: interface.c:1107 msgid "File Name Options" msgstr "" #: interface.c:3474 msgid "Import Location" msgstr "" #: interface.c:3507 msgid "Import Type" msgstr "" #: interface.c:2664 msgid "Resulting expression" msgstr "" #: interface.c:1235 msgid "Results Options" msgstr "" #: interface.c:2292 msgid "Sample Text:" msgstr "" #: interface.c:2116 msgid "" "Select which data to delete:\n" "With this dialog, you can control how your entries will be cleared." msgstr "" #: interface.c:2331 msgid "Status:" msgstr "" #: interface.c:2275 msgid "Test Expression:" msgstr "" #: interface.c:2259 msgid "" "Test Regular Expressions (RegEx):\n" "With this dialog, you can test a RegEx before using it.\n" "Feel free to type a RegEx and put an example of text to test it." msgstr "" #: interface.c:2456 msgid "Text begins:" msgstr "" #: interface.c:2586 msgid "Text contains" msgstr "" #: interface.c:2600 msgid "Text ends:" msgstr "" #: interface.c:2168 msgid "Warning: Once cleared, history cannot be recovered!" msgstr "" #: interface.c:3888 msgid "" "Regular expression power search utility written in GTK+ and licensed " "under GPL v.3" msgstr "" #: interface.c:819 msgid "" "RegEx Expression Builder..." msgstr "" #: interface.c:848 msgid "" "RegEx Expression Builder..." msgstr "" #: systemio.c:198 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "" #: search.c:882 msgid "Aborting research-Searchmonkey" msgstr "" #: interface.c:3855 msgid "About searchmonkey" msgstr "" #: savestate.c:145 msgid "About to overwrite save configuration. Do you want to proceed?" msgstr "" #: interface.c:2690 msgid "Accept the resulting expression, and add it to the search rules." msgstr "" #: interface.c:4019 msgid "" "Adam Cottrell (en_GB)\n" "Luc Amimer (fr)" msgstr "" #: interface.c:2562 msgid "Add" msgstr "" #: interface.c:631 msgid "Add search criteria from a text file. Similar to the grep -f flag." msgstr "" #: interface.c:1048 msgid "Advanced" msgstr "" #: interface.c:998 msgid "After:" msgstr "" #: interface.c:2468 interface.c:2517 interface.c:2612 msgid "Any char except these" msgstr "" #: interface.c:2465 interface.c:2514 interface.c:2609 msgid "Any character" msgstr "" #: interface.c:2471 interface.c:2520 interface.c:2615 msgid "Any numeric character" msgstr "" #: interface.c:2467 interface.c:2516 interface.c:2611 msgid "Any one of these chars" msgstr "" #: interface.c:2472 interface.c:2521 interface.c:2616 msgid "Any text character" msgstr "" #: callbacks.c:1176 msgid "" "Are you sure that you wish to delete the config file, and restart " "searchmonkey?" msgstr "" #: systemio.c:804 #, c-format msgid "" "Are you sure you want to delete:\n" "\t'%s'" msgstr "" #: interface.c:2950 msgid "Attributes" msgstr "" #: interface.c:3762 msgid "Auto Complete" msgstr "" #: interface.c:3045 msgid "Auto search..." msgstr "" #: interface.c:517 msgid "Auto-size columns" msgstr "" #: interface.c:791 msgid "Basic" msgstr "" #: interface.c:1022 msgid "Before:" msgstr "" #: interface.c:2944 msgid "Binary/Executable" msgstr "" #: interface.c:896 msgid "Browse your file system and select the search directory..." msgstr "" #: interface.c:1955 msgid "C_ancel" msgstr "" #: systemio.c:845 msgid "Cannot copy full file name as name was not selected." msgstr "" #: systemio.c:781 msgid "Cannot delete file as name was not selected." msgstr "" #: interface.c:2904 msgid "Check this to allow" msgstr "" #: interface.c:484 msgid "Clear History..." msgstr "" #: interface.c:2097 msgid "Clear Search History" msgstr "" #: interface.c:2157 msgid "Clear all directories in the \"Folders:\" drop-down list" msgstr "" #: interface.c:2145 msgid "Clear all file names in the \"Files:\" drop-down list" msgstr "" #: interface.c:2151 msgid "Clear all patterns in the \"Containing:\" drop-down list" msgstr "" #: interface.c:2148 msgid "Clear containing text" msgstr "" #: interface.c:2142 msgid "Clear file names" msgstr "" #: interface.c:2154 msgid "Clear look in history" msgstr "" #: interface.c:2859 msgid "Configuration" msgstr "" #: savestate.c:79 msgid "" "Configuration files are for a different version of Searchmonkey. This may " "cause errors. Delete old configuration files?" msgstr "" #: interface.c:3652 msgid "Containing Text Export Criteria" msgstr "" #: interface.c:3467 msgid "Containing Text import" msgstr "" #: interface.c:835 msgid "Containing:" msgstr "" #: callbacks.c:1107 msgid "Context Expression Wizard" msgstr "" #: interface.c:2658 msgid "Convert Internals" msgstr "" #: interface.c:3898 msgid "Copyright (c) 2006-2018 Adam Cottrell" msgstr "" #: support.c:90 support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "" #: interface.c:649 msgid "Create a CSV file containing a list of results." msgstr "" #: interface.c:2566 msgid "Creates a new row in the list with the following rule." msgstr "" #: interface.c:3925 msgid "Credits" msgstr "" #: interface.c:3121 msgid "Csv Export" msgstr "" #: interface.c:3203 msgid "Current Config file location:" msgstr "" #: interface.c:3049 msgid "Default Applications" msgstr "" #: interface.c:2937 msgid "Default folder explorer:" msgstr "" #: interface.c:2930 msgid "Default text editor:" msgstr "" #: interface.c:2956 msgid "Default web browser:" msgstr "" #: interface.c:2580 msgid "Delete" msgstr "" #: interface.c:2584 msgid "Deletes an existing row in the rule table." msgstr "" #: interface.c:261 msgid "Desktop search to replace find and grep." msgstr "" #: regexwizard.c:100 msgid "Did not match any." msgstr "" #: interface.c:2683 msgid "Discard any changes." msgstr "" #: interface.c:1321 interface.c:1356 msgid "Displays the matching text lines when the result is selected." msgstr "" #: interface.c:2464 interface.c:2513 interface.c:2608 msgid "Don't know" msgstr "" #: interface.c:2554 msgid "" "Each row creates a new part to the rule, with the order reflecting the order " "in which the rule is to be matched." msgstr "" #: interface.c:1918 msgid "Edit (File)" msgstr "" #: interface.c:349 msgid "Edit File" msgstr "" #: interface.c:724 msgid "Enable contents search to find files with matching content too." msgstr "" #: interface.c:3079 msgid "End of row separator:" msgstr "" #: savestate.c:161 #, c-format msgid "Error saving %s: %s\n" msgstr "" #: callbacks.c:1622 msgid "Error! Invalid 'containing text' regular expression" msgstr "" #: callbacks.c:1598 msgid "Error! Invalid 'file name' regular expression" msgstr "" #: misc.c:298 search.c:845 msgid "Error! Invalid Containing Text regular expression" msgstr "" #: misc.c:288 search.c:839 msgid "Error! Invalid File Name regular expression" msgstr "" #: misc.c:509 search.c:820 msgid "Error! Look In directory cannot be blank." msgstr "" #: misc.c:520 search.c:831 msgid "Error! Look In directory is invalid." msgstr "" #: systemio.c:310 systemio.c:419 msgid "Error! No valid file selected." msgstr "" #: systemio.c:387 msgid "Error! Unable to find first combo entry. Is drop down list blank?" msgstr "" #: callbacks.c:1182 #, c-format msgid "Error! Unable to remove config file %s.\n" msgstr "" #: systemio.c:363 msgid "" "Error! You must select at least one entry in order to save drop down list." msgstr "" #: interface.c:1252 msgid "Expert Mode" msgstr "" #: interface.c:3594 msgid "Export Criteria" msgstr "" #: interface.c:635 msgid "Export Expression..." msgstr "" #: interface.c:2438 msgid "Expression Wizard" msgstr "" #: interface.c:2886 msgid "" "Extended regular expressions are recommended as they provide more " "functionality." msgstr "" #: interface.c:531 msgid "Extras" msgstr "" #: callbacks.c:1105 msgid "File Expression Wizard" msgstr "" #: interface.c:3645 msgid "File Name Export criteria" msgstr "" #: interface.c:3460 msgid "File Name import" msgstr "" #: interface.c:3438 interface.c:3622 msgid "File Selection" msgstr "" #: interface.c:2977 #, c-format msgid "File explorer attributes: %f=filename, %d=directory" msgstr "" #: systemio.c:110 msgid "File name" msgstr "" #: systemio.c:112 msgid "File size" msgstr "" #: systemio.c:113 msgid "File type" msgstr "" #: systemio.c:289 msgid "File was empty/invalid." msgstr "" #: interface.c:713 interface.c:806 msgid "Files:" msgstr "" #: interface.c:3022 msgid "Find default executables:" msgstr "" #: interface.c:743 interface.c:869 msgid "Folders:" msgstr "" #: interface.c:1083 msgid "Follow Symbol _Links" msgstr "" #: interface.c:1086 msgid "Follow Symbolic Links (Only on systems that support them)" msgstr "" #: interface.c:2897 msgid "Force a prompt before any files are deleted" msgstr "" #: interface.c:2892 msgid "Force a prompt before settings are saved." msgstr "" #: interface.c:2878 msgid "Force single window mode" msgstr "" #: regexwizard.c:104 #, c-format msgid "Found %d matches." msgstr "" #: regexwizard.c:102 msgid "Found 1 match." msgstr "" #: interface.c:966 interface.c:988 msgid "Gb" msgstr "" #: interface.c:2907 msgid "Global Settings" msgstr "" #: interface.c:3493 msgid "Grep style file (1-entry, OR each line)" msgstr "" #: interface.c:2677 msgid "Help with the Regular Expression Builder" msgstr "" #: interface.c:1225 msgid "Highlights per line :" msgstr "" #: interface.c:395 msgid "Horizontal results" msgstr "" #: interface.c:1192 msgid "" "If active, display extra lines around the matching line to help show context " "of match." msgstr "" #: interface.c:1080 msgid "Ignore hidden files (Unix filesystems only)" msgstr "" #: systemio.c:456 #, c-format msgid "" "Illegal escape sequence: '\\%c'.\n" " Valid escape characters are: b n r t \" \\" msgstr "" #: interface.c:3410 msgid "Import Criteria" msgstr "" #: interface.c:628 msgid "Import Expression..." msgstr "" #: interface.c:3470 interface.c:3503 interface.c:3688 msgid "Import a file identical to that generated by the export command." msgstr "" #: systemio.c:474 #, c-format msgid "" "Input string expands into non ASCII, or multi-byte key sequence: '%s'.\n" " Please try to use ASCII safe keys" msgstr "" #: callbacks.c:755 msgid "Internal Error! Unable to find calling wizard type!" msgstr "" #: interface.c:1067 msgid "Invert Search Expression" msgstr "" #: interface.c:1070 msgid "Inverts the file name search results i.e. find all becomes find none." msgstr "" #: interface.c:3681 msgid "Just save the currently displayed entry to a file." msgstr "" #: interface.c:964 interface.c:986 msgid "Kb" msgstr "" #: interface.c:968 msgid "Less than:" msgstr "" #: interface.c:1213 msgid "Limit Content Highlighting" msgstr "" #: interface.c:1165 msgid "Limit Match Files" msgstr "" #: interface.c:925 msgid "Limit files found by selecting maximum tree-depth to search." msgstr "" #: savestate.c:1623 savestate.c:1687 #, c-format msgid "Line Number: %d\n" msgstr "" #: interface.c:1199 msgid "Lines Displayed:" msgstr "" #: interface.c:1301 interface.c:1336 msgid "List of file(s) corresponding to research criteria." msgstr "" #: savestate.c:602 savestate.c:1395 systemio.c:111 msgid "Location" msgstr "" #: interface.c:3211 msgid "Location of your current searchmonkey configuration settings file." msgstr "" #: interface.c:443 msgid "Mat_ches" msgstr "" #: interface.c:1072 interface.c:1126 msgid "Match Case" msgstr "" #: interface.c:2900 msgid "Match strings within binary files too" msgstr "" #: savestate.c:638 msgid "Matches" msgstr "" #: interface.c:1175 msgid "Maximum Hits:" msgstr "" #: interface.c:954 msgid "Maximum filesize in kBytes/mBytes/gBytes." msgstr "" #: interface.c:965 interface.c:987 msgid "Mb" msgstr "" #: interface.c:976 msgid "Minimum filesize in kBytes/mBytes/gBytes." msgstr "" #: savestate.c:629 msgid "Modified" msgstr "" #: systemio.c:114 msgid "Modified date" msgstr "" #: interface.c:994 msgid "Modified:" msgstr "" #: interface.c:2578 msgid "Modifies an existing row in the rule table." msgstr "" #: interface.c:2574 msgid "Modify" msgstr "" #: interface.c:946 msgid "More than:" msgstr "" #: systemio.c:486 #, c-format msgid "" "Multi-byte string entered: '%s'.\n" "Truncating extra character (%c)" msgstr "" #: main.c:70 msgid "N/A" msgstr "" #: savestate.c:593 msgid "Name" msgstr "" #: interface.c:616 msgid "New Instance" msgstr "" #: systemio.c:179 msgid "No results to save!" msgstr "" #: interface.c:2488 interface.c:2537 interface.c:2632 msgid "Once" msgstr "" #: interface.c:2489 interface.c:2538 interface.c:2633 msgid "One or more times" msgstr "" #: interface.c:357 msgid "Open Folder" msgstr "" #: interface.c:619 msgid "Open a new search window." msgstr "" #: interface.c:1017 interface.c:1041 msgid "Open calendar dialog to choose modified date." msgstr "" #: interface.c:761 msgid "Opens a dialog to find a look in directory." msgstr "" #: interface.c:1240 interface.c:3512 interface.c:3697 msgid "Options" msgstr "" #: savestate.c:1729 msgid "Options: " msgstr "" #: interface.c:323 msgid "P_rint Setup..." msgstr "" #: savestate.c:1621 #, c-format msgid "Paragraph Number: %d\n" msgstr "" #: interface.c:3003 msgid "Paste and edit full file name of your preferred file explorer." msgstr "" #: interface.c:2995 msgid "Paste and edit full file name of your preferred text editor." msgstr "" #: interface.c:3011 msgid "Paste and edit full file name of your preferred web browser." msgstr "" #: interface.c:1124 msgid "" "Perform content searching immediately so that results are returned quicker." msgstr "" #: search.c:1026 search.c:1120 #, c-format msgid "Phase 1 searching %s" msgstr "" #: search.c:1326 #, c-format msgid "Phase 2 searching %s" msgstr "" #: search.c:1241 msgid "Phase 2 starting..." msgstr "" #: interface.c:3788 msgid "" "Please be patient!\n" "\n" "Searching for executables to perform the following functions:\n" " * text editing/viewing\n" " * folder browsing\n" " * web browsing\n" "\n" "The search algorithm uses a set of standard executables for all systems, and " "then attempts to find them on your local disk.\n" "\n" "Once complete, press OK to store the executables." msgstr "" #: savestate.c:1667 msgid "Please email all debug text to cottrela@users.sf.net.\n" msgstr "" #: interface.c:3796 msgid "Please wait..." msgstr "" #: interface.c:733 interface.c:845 msgid "" "Please, type here a word or a segment of a word researched in the file(s).\n" "Don't type spaces." msgstr "" #: interface.c:712 interface.c:815 msgid "" "Please, type here the name or a segment of the name of the file(s).\n" "Don't type spaces." msgstr "" #: interface.c:2491 interface.c:2540 interface.c:2635 msgid "Possibly once" msgstr "" #: interface.c:674 msgid "Print results direct to the configured printer." msgstr "" #: interface.c:4002 msgid "" "Project Manager:\n" "Adam Cottrell \n" "\n" "Programming:\n" " Adam Cottrell \n" " Salil Joshi \n" " Yousef AlHashemi\n" " Luc Amimer \n" "Artwork:\n" " Peter Cruickshank\n" " Luc Amimer \n" msgstr "" #: interface.c:2894 msgid "Prompt before deleting files" msgstr "" #: interface.c:2889 msgid "Prompt before saving state" msgstr "" #: savestate.c:777 msgid "Ready-research mode with RegEx" msgstr "" #: savestate.c:775 msgid "Ready-research mode with jokers(DOS like)" msgstr "" #: interface.c:785 interface.c:882 msgid "Recurse Folders" msgstr "" #: interface.c:587 msgid "Release _Notes" msgstr "" #: interface.c:3145 msgid "Remove all saved settings (restart required to complete):" msgstr "" #: interface.c:3164 msgid "Reset all" msgstr "" #: interface.c:2160 msgid "Reset size/modified options" msgstr "" #: interface.c:2163 msgid "Reset the size and modified search criteria." msgstr "" #: interface.c:922 msgid "Restrict depth:" msgstr "" #: systemio.c:618 #, c-format msgid "" "Run configuration to set default directory/folder browser:\n" "\"%s\"" msgstr "" #: systemio.c:605 #, c-format msgid "" "Run configuration to set default text editor:\n" "\"%s\"" msgstr "" #: systemio.c:592 #, c-format msgid "" "Run configuration to set default web-browser:\n" "\"%s\"" msgstr "" #: interface.c:411 msgid "S_ort by" msgstr "" #: interface.c:304 msgid "Save R_esults to CSV..." msgstr "" #: interface.c:646 msgid "Save Results..." msgstr "" #: interface.c:3678 msgid "Save active/displayed entry only" msgstr "" #: interface.c:3685 msgid "Save all entries (1-entry per line)" msgstr "" #: interface.c:3193 msgid "Save now" msgstr "" #: interface.c:3338 msgid "Save results to CSV file..." msgstr "" #: interface.c:3176 msgid "Save settings immediately (normally occurs on exit):" msgstr "" #: interface.c:3655 msgid "Save the Containing Text drop down entries into a file." msgstr "" #: interface.c:3648 msgid "Save the File Name drop down entries into a file." msgstr "" #: interface.c:1287 msgid "Search criteria" msgstr "" #: interface.c:3793 msgid "Search progress" msgstr "" #: interface.c:1377 msgid "Search progress bar." msgstr "" #: interface.c:3239 interface.c:3245 interface.c:3806 interface.c:3813 msgid "Searching for system files, please wait..." msgstr "" #: search.c:861 #, c-format msgid "Searchmonkey : search in %s/" msgstr "" #: interface.c:3500 msgid "Searchmonkey style (1-entry per line)" msgstr "" #: interface.c:4065 msgid "Select Date..." msgstr "" #: interface.c:2043 #, fuzzy msgid "Select Font" msgstr "Select Color" #: interface.c:1864 #, fuzzy msgid "Select a folder" msgstr "Select Color" #: interface.c:2000 #, fuzzy msgid "Select highlighting Colour" msgstr "Select Color" #: interface.c:492 msgid "Settings" msgstr "" #: interface.c:1189 msgid "Show Line Contents" msgstr "" #: interface.c:385 msgid "Show _Statusbar" msgstr "" #: interface.c:380 msgid "Show _Toolbar" msgstr "" #: savestate.c:611 msgid "Size" msgstr "" #: interface.c:942 msgid "Size :" msgstr "" #: interface.c:2661 msgid "" "Some characters (such as . | ^ $) are reserved in certain circumstances.\n" "\n" "If you know what you are doing with these characters, unselect this checkbox." msgstr "" #: interface.c:2470 interface.c:2519 interface.c:2614 msgid "Space(s)" msgstr "" #: interface.c:1217 msgid "" "Specify the maximum number of content matches within each file to show. Does " "not limit the number of files to search." msgstr "" #: interface.c:1168 msgid "" "Specify the maximum number of matching files found. Does not limit the " "number of content matches within each file." msgstr "" #: interface.c:456 interface.c:658 msgid "Start" msgstr "" #: interface.c:661 interface.c:1260 msgid "Start the search!" msgstr "" #: interface.c:467 msgid "Stop" msgstr "" #: interface.c:667 interface.c:1285 msgid "Stop the search!" msgstr "" #: interface.c:1254 msgid "Switch search from basic to advanced mode." msgstr "" #: interface.c:3217 msgid "System" msgstr "" #: interface.c:2240 msgid "Test Regular Expression" msgstr "" #: interface.c:565 msgid "Test Regular Expression..." msgstr "" #: interface.c:3108 msgid "Text delimiter:" msgstr "" #: interface.c:2968 interface.c:2986 #, c-format msgid "Text editor attributes: %f=filename, %d=directory" msgstr "" #: interface.c:2466 interface.c:2515 interface.c:2610 msgid "The character" msgstr "" #: interface.c:2469 interface.c:2518 interface.c:2613 msgid "The phrase" msgstr "" #: interface.c:2654 msgid "This is the expression that will be copied back to the main screen." msgstr "" #: interface.c:2313 msgid "" "To see the results of your regular expression click apply. Once done, simply " "close the window. Searches are case sensitive.\n" "\n" "Note: this tool will highlight each match(es) found." msgstr "" #: interface.c:4021 msgid "Translated by" msgstr "" #: savestate.c:620 msgid "Type" msgstr "" #: search.c:1649 msgid "Unknown" msgstr "" #: interface.c:2568 msgid "Update" msgstr "" #: interface.c:2572 msgid "Updates a rule that was selected for the modify function." msgstr "" #: interface.c:3115 msgid "Use ASCII characters e.g. \" # $ '" msgstr "" #: interface.c:3101 msgid "Use ASCII or C style construct e.g. , \\t ;" msgstr "" #: interface.c:3086 msgid "Use ASCII or C style construct e.g. \\n" msgstr "" #: interface.c:1121 msgid "Use Single Phase Search" msgstr "" #: interface.c:1092 msgid "Use Wil_dcard Syntax" msgstr "" #: interface.c:1099 interface.c:1143 msgid "Use _Regular Expression Syntax" msgstr "" #: interface.c:512 msgid "Use _Word Wrap" msgstr "" #: interface.c:2883 msgid "Use extended regular expressions" msgstr "" #: interface.c:1102 interface.c:1146 msgid "Use regular expression syntax in file search criteria." msgstr "" #: interface.c:1135 msgid "Use simple search syntax" msgstr "" #: interface.c:1129 msgid "Use strict contents case matching." msgstr "" #: interface.c:1075 msgid "Use strict file case matching." msgstr "" #: interface.c:3463 interface.c:3496 msgid "Use the file in an identical to way to that of the grep -f command." msgstr "" #: interface.c:859 msgid "Use the wizard to create a containing text regular expression..." msgstr "" #: interface.c:829 msgid "Use the wizard to create a file name regular expression..." msgstr "" #: interface.c:962 interface.c:984 msgid "Use this option to choose the file size units." msgstr "" #: interface.c:838 msgid "" "Use this option to restrict your search results to files containing the " "provided text (or pattern)." msgstr "" #: interface.c:949 msgid "" "Use this option to restrict your search results to files that are bigger " "than the provided number of kilo Bytes." msgstr "" #: interface.c:971 msgid "" "Use this option to restrict your search results to files that are smaller " "than the provided number of kilo Bytes." msgstr "" #: interface.c:1001 msgid "" "Use this option to restrict your search results to files that were last " "modified after the provided time." msgstr "" #: interface.c:1025 msgid "" "Use this option to restrict your search results to files that were last " "modified before the provided time." msgstr "" #: interface.c:788 interface.c:887 msgid "Use this option to search all subfolders (recursively)." msgstr "" #: interface.c:1095 interface.c:1139 msgid "Use wildcard or glob syntax for file search criteria. E.g. *.txt" msgstr "" #: interface.c:3094 msgid "Value/field separator:" msgstr "" #: interface.c:401 msgid "Vertical results" msgstr "" #: interface.c:638 msgid "Write some or all of the search criteria to disk." msgstr "" #: interface.c:4004 msgid "Written by" msgstr "" #: interface.c:2490 interface.c:2539 interface.c:2634 msgid "Zero or more times" msgstr "" #: interface.c:3117 msgid "\\\"" msgstr "" #: interface.c:3088 msgid "\\n" msgstr "" #: interface.c:719 msgid "_Containing:" msgstr "" #: interface.c:365 interface.c:1926 msgid "_Copy (Filename)" msgstr "" #: interface.c:341 msgid "_Delete (File)" msgstr "" #: interface.c:1934 msgid "_Delete File" msgstr "" #: interface.c:334 msgid "_Edit" msgstr "" #: interface.c:1942 msgid "_Explore Folder" msgstr "" #: interface.c:549 msgid "_Export Regular Expression..." msgstr "" #: interface.c:281 msgid "_File" msgstr "" #: interface.c:418 msgid "_File Name" msgstr "" #: interface.c:591 msgid "_Forums" msgstr "" #: interface.c:569 msgid "_Help" msgstr "" #: interface.c:1077 msgid "_Ignore files beginning with '.'" msgstr "" #: interface.c:538 msgid "_Import Regular Expression..." msgstr "" #: interface.c:423 msgid "_Location" msgstr "" #: interface.c:438 msgid "_Modified" msgstr "" #: interface.c:288 msgid "_New Instance" msgstr "" #: interface.c:449 msgid "_Search" msgstr "" #: interface.c:428 msgid "_Size" msgstr "" #: interface.c:583 msgid "_Support" msgstr "" #: interface.c:433 msgid "_Type" msgstr "" #: interface.c:576 msgid "_User Guide" msgstr "" #: interface.c:373 msgid "_View" msgstr "" #: savestate.c:1744 msgid "case sensitive; " msgstr "" #: savestate.c:1753 #, c-format msgid "display %d extra lines around match; " msgstr "" #: savestate.c:1750 msgid "display 1 extra line around match; " msgstr "" #: callbacks.c:387 msgid "http://searchmonkey.embeddediq.com/index.php/contribute" msgstr "" #: callbacks.c:395 msgid "http://searchmonkey.embeddediq.com/index.php/support" msgstr "" #: callbacks.c:1212 msgid "http://searchmonkey.embeddediq.com/index.php/support/index" msgstr "" #: callbacks.c:762 msgid "" "http://searchmonkey.sourceforge.net/index.php/Regular_expression_builder" msgstr "" #: callbacks.c:438 msgid "http://sourceforge.net/forum/?group_id=175143" msgstr "" #: callbacks.c:1162 msgid "" "https://sourceforge.net/projects/searchmonkey/files/gSearchmonkey%20GTK" "%20%28Gnome%29/0.8.2%20%5Bstable%5D/" msgstr "" #: savestate.c:1772 msgid "none" msgstr "" #: savestate.c:1766 #, c-format msgid "only showing first %d content matches; " msgstr "" #: savestate.c:1763 msgid "only showing first content match; " msgstr "" #: savestate.c:1757 msgid "only showing line numbers; " msgstr "" #: callbacks.c:1531 msgid "research mode with RegEx" msgstr "" #: callbacks.c:1528 msgid "research mode with jokers(DOS like)" msgstr "" #: interface.c:2284 msgid "sample" msgstr "" #: interface.c:262 msgid "searchmonkey" msgstr "" #: callbacks.c:411 #, c-format msgid "searchmonkey %s" msgstr "" #: interface.c:3974 msgid "searchmonkey Credits" msgstr "" #: interface.c:2480 interface.c:2529 interface.c:2624 msgid "that occurs" msgstr "" #~ msgid "%d %b %Y" #~ msgstr "%b %d %Y" #~ msgid "" #~ "Wizard Help\n" #~ "Welcome to the Expression Wizard. This wizard can help you define exactly " #~ "what you are searching for.\n" #~ "searchMonkey uses regular expression to describe the patterns for string " #~ "matching. Regular expressions are very powerful, but they can also be " #~ "daunting for new users.\n" #~ "Some text characters are reserved as regular expression syntax, rather " #~ "than having its general term. This Wizard recognises that, and will " #~ "automatically prompt you if conversion is about to take place.\n" #~ "If you do not know how the text begins or ends just add your criteria in " #~ "the 'Followed by' list. Use drag and drop to re-arrange the rows of the " #~ "middle section.\n" #~ "Expression wizard does not provide all the functionality of regular " #~ "expressions, but if you know how to construct regular expressions you can " #~ "specify it yourself. Just add your regular expression as type 'Phrase' " #~ "in the 'Followed by' list and switch off escapes when prompted.\n" #~ "\n" #~ "To find out more about regular expressions see the XSearch User Guide.\n" #~ "\n" #~ "http://searchMonkey.sourceforge.net/index.php/Regex_wizard" #~ msgstr "" #~ "Wizard Help\n" #~ "Welcome to the Expression Wizard. This wizard can help you define exactly " #~ "what you are searching for.\n" #~ "searchMonkey uses regular expression to describe the patterns for string " #~ "matching. Regular expressions are very powerful, but they can also be " #~ "daunting for new users.\n" #~ "Some text characters are reserved as regular expression syntax, rather " #~ "than having its general term. This Wizard recognizes that, and will " #~ "automatically prompt you if conversion is about to take place.\n" #~ "If you do not know how the text begins or ends just add your criteria in " #~ "the 'Followed by' list. Use drag and drop to re-arrange the rows of the " #~ "middle section.\n" #~ "Expression wizard does not provide all the functionality of regular " #~ "expressions, but if you know how to construct regular expressions you can " #~ "specify it yourself. Just add your regular expression as type 'Phrase' " #~ "in the 'Followed by' list and switch off escapes when prompted.\n" #~ "\n" #~ "To find out more about regular expressions see the XSearch User Guide.\n" #~ "\n" #~ "http://searchMonkey.sourceforge.net/index.php/Regex_wizard" searchmonkey-0.8.3/po/fr_FR.po0000664000175000017500000014523413236164262013127 00000000000000# Searchmonkey - desktop searching with regular expression wizard. # Copyright (C) 2007 # This file is distributed under LGPL # Adam Cottrell , 2007. # msgid "" msgstr "" "Project-Id-Version: 0.8.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-08 15:39+0100\n" "PO-Revision-Date: 2018-02-10 09:47+0100\n" "Last-Translator: Adam Cottrell \n" "Language-Team: Adam Cottrell \n" "Language: FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" #: savestate.c:1666 #, c-format msgid "" "\n" "Internal error %d! Unable to highlight line - offset beyond line-end.\n" msgstr "" "\n" "Erreur interne %d ! Impossible de surligner au-delà de la fin de ligne.\n" #: main.c:68 msgid "" "\n" "No content searching performed for this file.\n" "\n" "Please ensure containing search was enabled, and that an expression was " "entered prior to starting search.\n" msgstr "" "\n" "Pas de recherche de contenu pour ce fichier.\n" "\n" "Vérifiez SVP que la recherche de contenu soit activée, et\n" "qu'une expression soit saisie avant de démarrer la recherche.\n" #: savestate.c:1671 #, c-format msgid " Debug: %d) '%s'\n" msgstr " Debogage: %d) '%s'\n" #: savestate.c:1668 #, c-format msgid " Debug: fn='%s'\n" msgstr " Debogage: fn='%s'\n" #: savestate.c:1669 #, c-format msgid " Debug: tc=%d + os=%d || oe=%d\n" msgstr " Debogage: tc=%d + os=%d || oe=%d\n" #: savestate.c:44 #, c-format msgid " %s settings auto-generated - Do not edit!" msgstr "%s configuration auto-générée - Ne pas modifier !" #: search.c:1719 msgid " [cancelled]" msgstr " [interrompu]" #: search.c:1712 msgid " [inv]" msgstr " [inv]" #: savestate.c:183 msgid " [missing]" msgstr "[absent]" #: search.c:1610 #, c-format msgid "%1.1f KB" msgstr "%1.1f Ko" #: search.c:1612 #, c-format msgid "%1.1f MB" msgstr "%1.1f Mo" #: interface.c:2978 #, c-format msgid "%d" msgstr "%d" #: search.c:1608 #, c-format msgid "%d bytes" msgstr "%d octets" #: search.c:1707 #, c-format msgid "%d file found" msgstr "Trouvé %d fichier" #: search.c:1709 #, c-format msgid "%d files found" msgstr "Trouvé %d fichiers" #: interface.c:2969 interface.c:2987 #, c-format msgid "%f" msgstr "%f" #: search.c:1129 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: systemio.c:1077 #, c-format msgid "%s Error! Unable to duplicate string vector\n" msgstr "%s Erreur ! Je ne peux dupliquer le vecteur chaîne\n" #: systemio.c:1068 #, c-format msgid "%s Error! Unable to split %s with %c\n" msgstr "%s Erreur ! Impossible de diviser %s avec %c\n" #: search.c:1639 #, c-format msgid "%s-type" msgstr "%s-type" #: search.c:653 search.c:667 #, c-format msgid "%x" msgstr "%x" #: callbacks.c:1018 msgid "(Entry)" msgstr "(Valeur)" #: callbacks.c:1023 msgid "(Repeat)" msgstr "(Répéter)" #: callbacks.c:1013 msgid "(Type)" msgstr "(Condition)" #: interface.c:3103 msgid "," msgstr "," #: search.c:1727 msgid "-research mode with RegEx" msgstr "-Mode de recherche avec RegEX" #: search.c:1724 msgid "-research mode with jokers(DOS like)" msgstr "-Mode de recherche avec Jokers(style DOS)" #: savestate.c:1776 msgid ".\n" msgstr ".\n" #: callbacks.c:1148 msgid "0%" msgstr "0%" #: systemio.c:557 msgid "100%" msgstr "100%" #: interface.c:2311 msgid "" msgstr "" #: search.c:681 msgid "" "Error!\n" "\n" "Dates mismatch ! 'Before than' date must be more recent than 'After " "than' date.\n" "Search can't proceed correctly !\n" "Please check the dates." msgstr "" "Erreur !\n" "\n" "Confusion dans les dates ! La date du champ 'Avant le' doit être plus " "récente que la date du champ 'Après le'.\n" "La recherche n'a pu s'effectuer correctement\n" "Veuillez vérifier les dates." #: search.c:650 msgid "" "Error!\n" "\n" "Invalid 'After'date - format as dd/mm/yyyy or dd mmm yy." msgstr "" "Erreur !\n" "\n" "Le format du champ 'Après le' doit être sous la forme jj/mm/aa ou jj mm aa." #: search.c:664 msgid "" "Error!\n" "\n" "Invalid 'Before' date - format as dd/mm/yyyy or dd mmm yy." msgstr "" "Erreur !\n" "\n" "Le format du champ 'Avant le' doit être sous la forme jj/mm/aa ou jj mm aa." #: search.c:630 msgid "" "Error!\n" "\n" "LessThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" "Erreur !\n" "\n" "La borne 'Inférieure à' doit être une valeur positive\n" "Par conséquent ce critère ne sera pas utilisé\n" "\n" "SVP, vérifiez votre saisie et les unités." #: search.c:614 msgid "" "Error!\n" "\n" "MoreThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" "Erreur !\n" "\n" "La borne 'Supérieure à' doit être une valeur positive\n" "Par conséquent ce critère ne sera pas utilisé\n" "\n" "SVP, vérifiez votre saisie et les unités." #: search.c:618 search.c:634 msgid "" "Error!\n" "\n" "MoreThan file size must be stricly inferior to LessThan file size.So " "this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" "Erreur !\n" "\n" "La valeur du champ 'Supérieure à' doit être strictement inférieure à " "celle du champ 'Inférieure à'.\n" "Ce critère ne sera donc pas utilisé.\n" "SVP, vérifiez votre saisie et les unités." #: interface.c:3659 msgid "Export Source" msgstr "Choix des expressions régulières à exporter" #: interface.c:3692 msgid "Export Type" msgstr "Choix du nombre d'expressions régulières à exporter" #: interface.c:1151 msgid "File Contents Options" msgstr "Pour le contenu" #: interface.c:1107 msgid "File Name Options" msgstr "Pour les fichiers" #: interface.c:3474 msgid "Import Location" msgstr "Contenu de l'importation" #: interface.c:3507 msgid "Import Type" msgstr "Organisation des données à importer" #: interface.c:2664 msgid "Resulting expression" msgstr "Expression résultante" #: interface.c:1235 msgid "Results Options" msgstr "Pour les résultats" #: interface.c:2292 msgid "Sample Text:" msgstr "Texte à analyser avec cette expression :" #: interface.c:2116 msgid "" "Select which data to delete:\n" "With this dialog, you can control how your entries will be cleared." msgstr "" "Choisissez quelles données seront effacées : \n" "Cette boîte de dialogue vous permet de contrôler les entrées qui seront " "supprimées." #: interface.c:2331 msgid "Status:" msgstr "Statut : " #: interface.c:2275 msgid "Test Expression:" msgstr "Formule d'Expression Régulière à tester :" #: interface.c:2259 msgid "" "Test Regular Expressions (RegEx):\n" "With this dialog, you can test a RegEx before using it.\n" "Feel free to type a RegEx and put an example of text to test it." msgstr "" "Tester une Expression Régulière (RegEx) :\n" "Cette boîte de dialogue vous permet d'essayer une RegEx avant de " "l'utiliser.\n" "Tapez la RegEx de votre choix et ajoutez un échantillon de texte afin de " "faire un essai." #: interface.c:2456 msgid "Text begins:" msgstr "Le texte commence par :" #: interface.c:2586 msgid "Text contains" msgstr "le texte contient" #: interface.c:2600 msgid "Text ends:" msgstr "le texte finit par:" #: interface.c:2168 msgid "Warning: Once cleared, history cannot be recovered!" msgstr "Attention ! L' historique sera définitivement effacé !" #: interface.c:3888 msgid "" "Regular expression power search utility written in GTK+ and licensed " "under GPL v.3" msgstr "" "Utilitaire de recherche performant basé sur les 'expressions régulières', " "écrit en GTK+ et sous licence GPL v.3" #: interface.c:819 msgid "" "RegEx Expression Builder..." msgstr "" "RegEx Assistant ..." #: interface.c:848 msgid "" "RegEx Expression Builder..." msgstr "" "RegEx Assistant ..." #: systemio.c:198 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "" "Un fichier nommé \"%s\" existe déjà. Êtes-vous sûr(e) de vouloir l'écraser ?" #: search.c:882 msgid "Aborting research-Searchmonkey" msgstr "Abandon de la recherche-Searchmonkey" #: interface.c:3855 msgid "About searchmonkey" msgstr "A propos de searchmonkey" #: savestate.c:145 msgid "About to overwrite save configuration. Do you want to proceed?" msgstr "Prêt à écraser le fichier de configuration. Voulez-vous continuer ?" #: interface.c:2690 msgid "Accept the resulting expression, and add it to the search rules." msgstr "Accepte l'expression résultante, et l'ajoute aux règles de recherche." #: interface.c:4019 msgid "" "Adam Cottrell (en_GB)\n" "Luc Amimer (fr)" msgstr "" "Adam Cottrell (en_GB)\n" "Luc Amimer (fr_FR) " #: interface.c:2562 msgid "Add" msgstr "Ajouter" #: interface.c:631 msgid "Add search criteria from a text file. Similar to the grep -f flag." msgstr "" "Ajoute un critère de recherche depuis un fichier texte. Similaire au drapeau " "'-f' de la commande 'grep'." #: interface.c:1048 msgid "Advanced" msgstr "Avancé" #: interface.c:998 msgid "After:" msgstr "Après le :" #: interface.c:2468 interface.c:2517 interface.c:2612 msgid "Any char except these" msgstr "Tous caractères sauf ceux-ci" #: interface.c:2465 interface.c:2514 interface.c:2609 msgid "Any character" msgstr "Tout caractère" #: interface.c:2471 interface.c:2520 interface.c:2615 msgid "Any numeric character" msgstr "Tout caractère numérique" #: interface.c:2467 interface.c:2516 interface.c:2611 msgid "Any one of these chars" msgstr "N'importe lequel de ces caractères" #: interface.c:2472 interface.c:2521 interface.c:2616 msgid "Any text character" msgstr "Tout caractère alphabétique" #: callbacks.c:1176 msgid "" "Are you sure that you wish to delete the config file, and restart " "searchmonkey?" msgstr "" "Êtes-vous sûr(e) de vouloir effacer le fichier de configuration, et relancer " "Searchmonkey ?" #: systemio.c:804 #, c-format msgid "" "Are you sure you want to delete:\n" "\t'%s'" msgstr "" "Êtes-vous sûr(e) de vouloir effacer :\n" "\t'%s'" #: interface.c:2950 msgid "Attributes" msgstr "Attributs" #: interface.c:3762 msgid "Auto Complete" msgstr "Auto-complétion" #: interface.c:3045 msgid "Auto search..." msgstr "Rechercher automatiquement ..." #: interface.c:517 msgid "Auto-size columns" msgstr "_Ajuster automatiquement les colonnes" #: interface.c:791 msgid "Basic" msgstr "Basique" #: interface.c:1022 msgid "Before:" msgstr "Avant le :" #: interface.c:2944 msgid "Binary/Executable" msgstr "Binaire/exécutable" #: interface.c:896 msgid "Browse your file system and select the search directory..." msgstr "" "Naviguez dans votre système de fichiers et sélectionnez le dossier de " "recherche ..." #: interface.c:1955 msgid "C_ancel" msgstr "_Annuler" #: systemio.c:845 msgid "Cannot copy full file name as name was not selected." msgstr "" "Je ne peux pas copier le chemin du fichier vers le presse-papiers car vous " "n'avez pas sélectionné de fichier !" #: systemio.c:781 msgid "Cannot delete file as name was not selected." msgstr "Je ne peux rien effacer car vous n'avez pas sélectionné de fichier !" #: interface.c:2904 msgid "Check this to allow" msgstr "Cocher afin de l'autoriser" #: interface.c:484 msgid "Clear History..." msgstr "_Effacer l'historique" #: interface.c:2097 msgid "Clear Search History" msgstr "Effacer historique de recherche" #: interface.c:2157 msgid "Clear all directories in the \"Folders:\" drop-down list" msgstr "Effacer tous les dossiers dans la liste déroulante \"Dossiers\"" #: interface.c:2145 msgid "Clear all file names in the \"Files:\" drop-down list" msgstr "Effacer tous les noms de fichiers dans liste déroulante \"Fichiers\"" #: interface.c:2151 msgid "Clear all patterns in the \"Containing:\" drop-down list" msgstr "Effacer tous les motifs dans liste déroulante \"contenant le texte\"" #: interface.c:2148 msgid "Clear containing text" msgstr "Effacer le(s) texte(s) recherché(s)" #: interface.c:2142 msgid "Clear file names" msgstr "Effacer les noms de fichiers" #: interface.c:2154 msgid "Clear look in history" msgstr "Effacer l'historique des emplacements explorés" #: interface.c:2859 msgid "Configuration" msgstr "Configuration" #: savestate.c:79 msgid "" "Configuration files are for a different version of Searchmonkey. This may " "cause errors. Delete old configuration files?" msgstr "" "Les fichiers de configuration sont prévus pour une autre version de " "Searchmonkey. Ceci peut provoquer des erreurs.\n" "Dois-je effacer les anciens fichiers de configuration ?" #: interface.c:3652 msgid "Containing Text Export Criteria" msgstr "Les entrées saisies dans le champ 'Contenant :'" #: interface.c:3467 msgid "Containing Text import" msgstr "" "formule d'Expression Régulière pour rechercher un texte spécifique dans un " "fichier" #: interface.c:835 msgid "Containing:" msgstr "Contenant :" #: callbacks.c:1107 msgid "Context Expression Wizard" msgstr "" "Assistant de construction d'Expression Régulière pour rechercher du texte " "dans un fichier" #: interface.c:2658 msgid "Convert Internals" msgstr "Corriger caractères de contrôle" #: interface.c:3898 msgid "Copyright (c) 2006-2018 Adam Cottrell" msgstr "Copyright (c) 2006-2018 Adam Cottrell" #: support.c:90 support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Je ne peux trouver le fichier pixmap %s." #: interface.c:649 msgid "Create a CSV file containing a list of results." msgstr "Créer un fichier CSV avec la liste des résultats." #: interface.c:2566 msgid "Creates a new row in the list with the following rule." msgstr "Crée une nouvelle rangée dans la liste avec la règle suivante." #: interface.c:3925 msgid "Credits" msgstr "Crédits" #: interface.c:3121 msgid "Csv Export" msgstr "Exportation en CSV" #: interface.c:3203 msgid "Current Config file location:" msgstr "Emplacement actuel du fichier de configuration : " #: interface.c:3049 msgid "Default Applications" msgstr "Applications par défaut" #: interface.c:2937 msgid "Default folder explorer:" msgstr "Navigateur de fichiers par défaut :" #: interface.c:2930 msgid "Default text editor:" msgstr "Editeur de texte par défaut :" #: interface.c:2956 msgid "Default web browser:" msgstr "Navigateur Internet par défaut :" #: interface.c:2580 msgid "Delete" msgstr "Effacer " #: interface.c:2584 msgid "Deletes an existing row in the rule table." msgstr "Effacer une ligne existante du tableau des règles" #: interface.c:261 msgid "Desktop search to replace find and grep." msgstr "" "Logiciel de Recherche pour le Bureau remplaçant les commandes 'find' et " "'grep'" #: regexwizard.c:100 msgid "Did not match any." msgstr "Aucune occurrence." #: interface.c:2683 msgid "Discard any changes." msgstr "Abandonner toutes les modifications" #: interface.c:1321 interface.c:1356 msgid "Displays the matching text lines when the result is selected." msgstr "" "Affiche les lignes de texte correspondantes quand le résultat est " "sélectionné." #: interface.c:2464 interface.c:2513 interface.c:2608 msgid "Don't know" msgstr "Je ne sais pas" #: interface.c:2554 msgid "" "Each row creates a new part to the rule, with the order reflecting the order " "in which the rule is to be matched." msgstr "" "Chaque rangée crée une nouvelle partie de la règle, le rang quant à lui " "reflète l'ordre dans lequel la règle doit être satisfaite." #: interface.c:1918 msgid "Edit (File)" msgstr "Éditer ce fichier" #: interface.c:349 msgid "Edit File" msgstr "Édit_er le fichier sélectionné" #: interface.c:724 msgid "Enable contents search to find files with matching content too." msgstr "" "Activer la recherche de contenu afin de rechercher des fichiers intégrant ce " "contenu" #: interface.c:3079 msgid "End of row separator:" msgstr "Caractère marquant la fin d'une ligne :" #: savestate.c:161 #, c-format msgid "Error saving %s: %s\n" msgstr "Erreur lors enregistrement de %s: %s\n" #: callbacks.c:1622 msgid "Error! Invalid 'containing text' regular expression" msgstr "Erreur ! Expression régulière de 'contenant texte' invalide" #: callbacks.c:1598 msgid "Error! Invalid 'file name' regular expression" msgstr "Erreur ! Le 'nom de fichier' dans l'expression régulière est incorrect" #: misc.c:298 search.c:845 msgid "Error! Invalid Containing Text regular expression" msgstr "Erreur ! Expression régulière de 'contenant texte' invalide" #: misc.c:288 search.c:839 msgid "Error! Invalid File Name regular expression" msgstr "Erreur ! Le 'Nom de Fichier' dans l'expression régulière est incorrect" #: misc.c:509 search.c:820 msgid "Error! Look In directory cannot be blank." msgstr "Erreur ! L'aperçu du dossier ne peut être vide." #: misc.c:520 search.c:831 msgid "Error! Look In directory is invalid." msgstr "Erreur ! L'aperçu du dossier est invalide." #: systemio.c:310 systemio.c:419 msgid "Error! No valid file selected." msgstr "Erreur ! Pas de fichier valide sélectionné." #: systemio.c:387 msgid "Error! Unable to find first combo entry. Is drop down list blank?" msgstr "" "Erreur ! Impossible de trouver la 1ère entrée de la liste double. La liste " "déroulante est-elle vide ?" #: callbacks.c:1182 #, c-format msgid "Error! Unable to remove config file %s.\n" msgstr "Erreur ! Impossible de supprimer le fichier de configuration %s.\n" #: systemio.c:363 msgid "" "Error! You must select at least one entry in order to save drop down list." msgstr "" "Erreur ! Vous devez sélectionner au moins une entrée afin de sauvegarder la " "liste déroulante." #: interface.c:1252 msgid "Expert Mode" msgstr "Mode expert" #: interface.c:3594 msgid "Export Criteria" msgstr "Exporter des critères de recherche" #: interface.c:635 msgid "Export Expression..." msgstr "Exporter expression ..." #: interface.c:2438 msgid "Expression Wizard" msgstr "Assistant d'Expression Régulière" #: interface.c:2886 msgid "" "Extended regular expressions are recommended as they provide more " "functionality." msgstr "" "Les expressions régulières 'étendues' sont recommandées car elles offrent " "plus de fonctionnalités." #: interface.c:531 msgid "Extras" msgstr "Suppléments" #: callbacks.c:1105 msgid "File Expression Wizard" msgstr "" "Assistant de construction d'Expression Régulière pour rechercher des fichiers" #: interface.c:3645 msgid "File Name Export criteria" msgstr "Les entrées du champ 'fichiers'" #: interface.c:3460 msgid "File Name import" msgstr "" "Formule d'Expression Régulière pour rechercher des fichiers spécifiques." #: interface.c:3438 interface.c:3622 msgid "File Selection" msgstr "Sélectionner le fichier" #: interface.c:2977 #, c-format msgid "File explorer attributes: %f=filename, %d=directory" msgstr "Paramètres du navigateur de fichiers : %f=nom de fichier, %d=dossier" #: systemio.c:110 msgid "File name" msgstr "Nom de fichier" #: systemio.c:112 msgid "File size" msgstr "Taille de fichier" #: systemio.c:113 msgid "File type" msgstr "Type de fichier" #: systemio.c:289 msgid "File was empty/invalid." msgstr "Le fichier est vide/invalide" #: interface.c:713 interface.c:806 msgid "Files:" msgstr "Fichiers :" #: interface.c:3022 msgid "Find default executables:" msgstr "" "Déterminer les applications par défaut\n" "sur cet ordinateur : " #: interface.c:743 interface.c:869 msgid "Folders:" msgstr "Dossiers :" #: interface.c:1083 msgid "Follow Symbol _Links" msgstr "Suivre _liens symboliques" #: interface.c:1086 msgid "Follow Symbolic Links (Only on systems that support them)" msgstr "" "Suivre les liens symboliques(uniquement si gérés par le système de fichiers)" #: interface.c:2897 msgid "Force a prompt before any files are deleted" msgstr "Confirmer avant tout effacement de fichier" #: interface.c:2892 msgid "Force a prompt before settings are saved." msgstr "Confirmer avant de sauvegarder la configuration" #: interface.c:2878 msgid "Force single window mode" msgstr "Forcer le mode fenêtre unique" #: regexwizard.c:104 #, c-format msgid "Found %d matches." msgstr "Trouvé %d occurrences." #: regexwizard.c:102 msgid "Found 1 match." msgstr "Trouvé une occurrence" #: interface.c:966 interface.c:988 msgid "Gb" msgstr "Go" #: interface.c:2907 msgid "Global Settings" msgstr "Configuration globale" #: interface.c:3493 msgid "Grep style file (1-entry, OR each line)" msgstr "Style de fichiers Grep(1-entrée, OU chaque ligne)" #: interface.c:2677 msgid "Help with the Regular Expression Builder" msgstr "Aide en ligne pour l'assistant d'Expressions RegEX" #: interface.c:1225 msgid "Highlights per line :" msgstr "Surlignages par ligne : " #: interface.c:395 msgid "Horizontal results" msgstr "Présenter les résultats _horizontalement" #: interface.c:1192 msgid "" "If active, display extra lines around the matching line to help show context " "of match." msgstr "" "Si coché, Searchmonkey affiche des lignes supplémentaires\n" "avant et après la ligne où se trouve le texte cherché\n" "afin de situer le contexte de l'occurrence." #: interface.c:1080 msgid "Ignore hidden files (Unix filesystems only)" msgstr "Ignorer les fichiers cachés(uniquement pour systèmes de fichiers UNIX)" #: systemio.c:456 #, c-format msgid "" "Illegal escape sequence: '\\%c'.\n" " Valid escape characters are: b n r t \" \\" msgstr "" "Séquence d'échappement incorrecte : '\\%c'.\n" "Les caractères d'échappement autorisés sont : b n r t \" \\" #: interface.c:3410 msgid "Import Criteria" msgstr "Importer des critères de recherche" #: interface.c:628 msgid "Import Expression..." msgstr "Importer Expression..." #: interface.c:3470 interface.c:3503 interface.c:3688 msgid "Import a file identical to that generated by the export command." msgstr "Importe un fichier identique à celui généré par la commande 'exporter'" #: systemio.c:474 #, c-format msgid "" "Input string expands into non ASCII, or multi-byte key sequence: '%s'.\n" " Please try to use ASCII safe keys" msgstr "" "La chaîne saisie déborde le code ASCII, ou vous avez tapé une séquence de " "touches multi-octets : '%s'.\n" "Veuillez utiliser des touches ASCII sûres." #: callbacks.c:755 msgid "Internal Error! Unable to find calling wizard type!" msgstr "" "Erreur interne ! Impossible de déterminer le type d'assistant appelant !" #: interface.c:1067 msgid "Invert Search Expression" msgstr "Inverser l'expression de recherche" #: interface.c:1070 msgid "Inverts the file name search results i.e. find all becomes find none." msgstr "" "Inverse les résultats de la recherche par 'nom de fichier', c-à-d que " "'trouver tous' devient 'trouver aucun'." #: interface.c:3681 msgid "Just save the currently displayed entry to a file." msgstr "" "Enregistrer seulement l'entrée affichée,\n" "soit celle du champ 'fichier,'\n" "soit celle du champ 'Contenant'" #: interface.c:964 interface.c:986 msgid "Kb" msgstr "Ko" #: interface.c:968 msgid "Less than:" msgstr "Inférieure à :" #: interface.c:1213 msgid "Limit Content Highlighting" msgstr "Limiter le surlignage :" #: interface.c:1165 msgid "Limit Match Files" msgstr "Limiter le nombre de fichiers trouvés" #: interface.c:925 msgid "Limit files found by selecting maximum tree-depth to search." msgstr "" "Contrôler le nombre de résultats en sélectionnant la profondeur\n" "maximale de l'arborescence des dossiers où se fera la recherche.\n" "Une valeur de zéro signifie : limiter au dossier courant." #: savestate.c:1623 savestate.c:1687 #, c-format msgid "Line Number: %d\n" msgstr "Numéro de ligne : %d\n" #: interface.c:1199 msgid "Lines Displayed:" msgstr "Nombre lignes affichées : " #: interface.c:1301 interface.c:1336 msgid "List of file(s) corresponding to research criteria." msgstr "Liste de fichier(s) correspondant aux critères de recherche." #: savestate.c:602 savestate.c:1395 systemio.c:111 msgid "Location" msgstr "Emplacement" #: interface.c:3211 msgid "Location of your current searchmonkey configuration settings file." msgstr "Emplacement de votre fichier actuel de configuration de Searchmonkey." #: interface.c:443 msgid "Mat_ches" msgstr "O_ccurrences" #: interface.c:1072 interface.c:1126 msgid "Match Case" msgstr "Respecter la casse" #: interface.c:2900 msgid "Match strings within binary files too" msgstr "Chercher les chaînes de texte dans les fichiers binaires également" #: savestate.c:638 msgid "Matches" msgstr "Occurrences" #: interface.c:1175 msgid "Maximum Hits:" msgstr "Résultats affichés :" #: interface.c:954 msgid "Maximum filesize in kBytes/mBytes/gBytes." msgstr "Taille minimale des fichiers en Kilo-octets/Mega-octets/Giga-octets" #: interface.c:965 interface.c:987 msgid "Mb" msgstr "Mo" #: interface.c:976 msgid "Minimum filesize in kBytes/mBytes/gBytes." msgstr "Taille maximale des fichiers en Kilo-octets/Mega-octets/Giga-octets" #: savestate.c:629 msgid "Modified" msgstr "Modifié" #: systemio.c:114 msgid "Modified date" msgstr "Date de modification" #: interface.c:994 msgid "Modified:" msgstr "Modifié :" #: interface.c:2578 msgid "Modifies an existing row in the rule table." msgstr "Modifie une ligne existante du tableau des règles" #: interface.c:2574 msgid "Modify" msgstr "Modifier " #: interface.c:946 msgid "More than:" msgstr "Supérieure à :" #: systemio.c:486 #, c-format msgid "" "Multi-byte string entered: '%s'.\n" "Truncating extra character (%c)" msgstr "" "Une chaîne multi-octets a été saisie :'%s'.\n" "Le caractère supplémentaire (%c) a été tronqué" #: main.c:70 msgid "N/A" msgstr "N/D" #: savestate.c:593 msgid "Name" msgstr "Nom" #: interface.c:616 msgid "New Instance" msgstr "Nouvelle instance" #: systemio.c:179 msgid "No results to save!" msgstr "Aucun résultat à enregistrer !" #: interface.c:2488 interface.c:2537 interface.c:2632 msgid "Once" msgstr "Une fois" #: interface.c:2489 interface.c:2538 interface.c:2633 msgid "One or more times" msgstr "Une fois ou plus" #: interface.c:357 msgid "Open Folder" msgstr "_Parcourir le dossier sélectionné" #: interface.c:619 msgid "Open a new search window." msgstr "Ouvrir une nouvelle fenêtre de recherche" #: interface.c:1017 interface.c:1041 msgid "Open calendar dialog to choose modified date." msgstr "Ouvrir la calendrier pour choisir une date donnée" #: interface.c:761 msgid "Opens a dialog to find a look in directory." msgstr "Cliquez sur ce bouton pour choisir le dossier à explorer ..." #: interface.c:1240 interface.c:3512 interface.c:3697 msgid "Options" msgstr "Options " #: savestate.c:1729 msgid "Options: " msgstr "Options :" #: interface.c:323 msgid "P_rint Setup..." msgstr "Configurer im_pression ..." #: savestate.c:1621 #, c-format msgid "Paragraph Number: %d\n" msgstr "Paragraphe n° : %d\n" #: interface.c:3003 msgid "Paste and edit full file name of your preferred file explorer." msgstr "" "Coller et modifier le nom complet de votre \n" "explorateur de fichier préféré" #: interface.c:2995 msgid "Paste and edit full file name of your preferred text editor." msgstr "" "Coller et modifier le nom complet de votre \n" " éditeur de texte préféré" #: interface.c:3011 msgid "Paste and edit full file name of your preferred web browser." msgstr "" "Coller et modifier le nom complet de votre \n" " navigateur Internet préféré" #: interface.c:1124 msgid "" "Perform content searching immediately so that results are returned quicker." msgstr "" "Exécute la recherche de contenu immédiatement afin que les résultats " "apparaissent plus vite." #: search.c:1026 search.c:1120 #, c-format msgid "Phase 1 searching %s" msgstr "* Passe 1* recherche dans %s" #: search.c:1326 #, c-format msgid "Phase 2 searching %s" msgstr "* Passe 2 * recherche dans %s" #: search.c:1241 msgid "Phase 2 starting..." msgstr "Début passe 2 ..." #: interface.c:3788 msgid "" "Please be patient!\n" "\n" "Searching for executables to perform the following functions:\n" " * text editing/viewing\n" " * folder browsing\n" " * web browsing\n" "\n" "The search algorithm uses a set of standard executables for all systems, and " "then attempts to find them on your local disk.\n" "\n" "Once complete, press OK to store the executables." msgstr "" "Veuillez patienter\n" "\n" "Je cherche les programmes installés pour\n" "réaliser ces tâches:\n" "* édition/visualisation de fichiers texte/documents\n" "* navigateur de fichiers\n" "* navigateur Internet\n" "L'algorithme de recherche utilise un ensemble de programmes standard pour " "tous les systèmes, et essaye de les trouver sur votre disque dur local.\n" "Une fois terminé, cliquez sur le bouton [Valider] pour mémoriser les " "résultats." #: savestate.c:1667 msgid "Please email all debug text to cottrela@users.sf.net.\n" msgstr "" "Envoyer SVP le texte de débogage (lire le terminal) à cottrela@users.sf." "net.\n" #: interface.c:3796 msgid "Please wait..." msgstr "Patientez SVP" #: interface.c:733 interface.c:845 msgid "" "Please, type here a word or a segment of a word researched in the file(s).\n" "Don't type spaces." msgstr "" "Veuillez SVP, taper ici le mot entier ou une partie du mot que vous " "recherchez dans le(s) fichier(s)\n" "Ne tapez pas d'espaces." #: interface.c:712 interface.c:815 msgid "" "Please, type here the name or a segment of the name of the file(s).\n" "Don't type spaces." msgstr "" "Veuillez taper ici le nom ou une partie du nom du ou des fichier(s).\n" "Ne tapez pas d'espaces." #: interface.c:2491 interface.c:2540 interface.c:2635 msgid "Possibly once" msgstr "Uniquement une fois" #: interface.c:674 msgid "Print results direct to the configured printer." msgstr "Imprimer directement les résultats sur l'imprimante sélectionnée" #: interface.c:4002 msgid "" "Project Manager:\n" "Adam Cottrell \n" "\n" "Programming:\n" " Adam Cottrell \n" " Salil Joshi \n" " Yousef AlHashemi\n" " Luc Amimer \n" "Artwork:\n" " Peter Cruickshank\n" " Luc Amimer \n" msgstr "" "Direction Projet:\n" "Adam Cottrell \n" "\n" "Programmation:\n" " Adam Cottrell \n" " Salil Joshi \n" " Yousef AlHashemi\n" " Luc Amimer \n" "\n" "Conception artistique:\n" " Peter Cruickshank\n" " Luc Amimer \n" #: interface.c:2894 msgid "Prompt before deleting files" msgstr "Confirmer avant d'effacer les fichiers" #: interface.c:2889 msgid "Prompt before saving state" msgstr "Confirmer avant d'enregistrer les données" #: savestate.c:777 msgid "Ready-research mode with RegEx" msgstr "Prêt--Mode de recherche avec RegEX" #: savestate.c:775 msgid "Ready-research mode with jokers(DOS like)" msgstr "Prêt--Mode de recherche avec Jokers(style DOS)" #: interface.c:785 interface.c:882 msgid "Recurse Folders" msgstr "Rechercher dans les sous-dossiers" #: interface.c:587 msgid "Release _Notes" msgstr "_Notes de version" #: interface.c:3145 msgid "Remove all saved settings (restart required to complete):" msgstr "" "Supprimer la configuration actuelle\n" "(un redémarrage de Searchmonkey est nécessaire)" #: interface.c:3164 msgid "Reset all" msgstr "Tout réinitialiser " #: interface.c:2160 msgid "Reset size/modified options" msgstr "Réinitialiser les options de taille et date de modification" #: interface.c:2163 msgid "Reset the size and modified search criteria." msgstr "" "Réinitialise les critères de recherche 'taille' et 'date de modification'" #: interface.c:922 msgid "Restrict depth:" msgstr "Limiter profondeur sous-dossiers :" #: systemio.c:618 #, c-format msgid "" "Run configuration to set default directory/folder browser:\n" "\"%s\"" msgstr "" "Impossible de lancer un navigateur de fichiers pour ouvrir :\n" "\"%s\"\n" "Rendez-vous dans le menu configuration pour choisir un navigateur de " "fichiers par défaut." #: systemio.c:605 #, c-format msgid "" "Run configuration to set default text editor:\n" "\"%s\"" msgstr "" "Rendez-vous dans le menu Configuration pour \n" "choisir un éditeur par défaut pour :\n" "\"%s\"" #: systemio.c:592 #, c-format msgid "" "Run configuration to set default web-browser:\n" "\"%s\"" msgstr "" "Lancer configuration du navigateur Internet par défaut:\n" "\"%s\"" #: interface.c:411 msgid "S_ort by" msgstr "_Trier par" #: interface.c:304 msgid "Save R_esults to CSV..." msgstr "En_registrer les résultats dans un fichier CSV" #: interface.c:646 msgid "Save Results..." msgstr "Sauvegarder résultats ..." #: interface.c:3678 msgid "Save active/displayed entry only" msgstr "Uniquement la dernière valeur saisie" #: interface.c:3685 msgid "Save all entries (1-entry per line)" msgstr "" "TOUTES les expressions régulières mémorisées dans l'historique\n" " (le fichier contiendra 1 entrée par ligne) " #: interface.c:3193 msgid "Save now" msgstr "Enregistrer maintenant" #: interface.c:3338 msgid "Save results to CSV file..." msgstr "Enregistrer les résultats dans un fichier CSV ..." #: interface.c:3176 msgid "Save settings immediately (normally occurs on exit):" msgstr "" "Enregistrer la configuration actuelle\n" "(sans attendre de quitter le programme):" #: interface.c:3655 msgid "Save the Containing Text drop down entries into a file." msgstr "Enregistre la liste des saisies du champ 'Contenant' dans le fichier" #: interface.c:3648 msgid "Save the File Name drop down entries into a file." msgstr "Enregistre les saisies de la liste déroulante 'Fichiers'." #: interface.c:1287 msgid "Search criteria" msgstr "Critères de recherche" #: interface.c:3793 msgid "Search progress" msgstr "Recherche en cours" #: interface.c:1377 msgid "Search progress bar." msgstr "Barre de progression de la recherche" #: interface.c:3239 interface.c:3245 interface.c:3806 interface.c:3813 msgid "Searching for system files, please wait..." msgstr "Recherche de fichiers systèmes, patientez SVP" #: search.c:861 #, c-format msgid "Searchmonkey : search in %s/" msgstr "searchmonkey : recherche dans %s" #: interface.c:3500 msgid "Searchmonkey style (1-entry per line)" msgstr "Dans le style Searchmonkey(1 -entrée par ligne)" #: interface.c:4065 msgid "Select Date..." msgstr "Sélectionner date ... " #: interface.c:2043 msgid "Select Font" msgstr "Choix de la police de l'aperçu" #: interface.c:1864 msgid "Select a folder" msgstr "Choisir un dossier" #: interface.c:2000 msgid "Select highlighting Colour" msgstr "Choix de la couleur de surlignage" #: interface.c:492 msgid "Settings" msgstr "Configuration" #: interface.c:1189 msgid "Show Line Contents" msgstr "" "Afficher la ligne/paragraphe \n" "contenant le texte recherché" #: interface.c:385 msgid "Show _Statusbar" msgstr "Montrer _barre d'état" #: interface.c:380 msgid "Show _Toolbar" msgstr "Afficher _palette d'outils" #: savestate.c:611 msgid "Size" msgstr "Taille" #: interface.c:942 msgid "Size :" msgstr "Taille :" #: interface.c:2661 msgid "" "Some characters (such as . | ^ $) are reserved in certain circumstances.\n" "\n" "If you know what you are doing with these characters, unselect this checkbox." msgstr "" "Certains caractères(tels que .|^$) sont des caractères de contrôle\n" "et font donc partie de la syntaxe réservée.\n" "Ils ne doivent pas être utilisés sans raison dans une expression régulière.\n" "En cochant cette case, Searchmonkey essayera de corriger lui-même vos " "erreurs.\n" "Si vous êtes sûr(e) de ce que vous voulez faire, et reprendre la main, " "décochez cette case." #: interface.c:2470 interface.c:2519 interface.c:2614 msgid "Space(s)" msgstr "Espace(s)" #: interface.c:1217 msgid "" "Specify the maximum number of content matches within each file to show. Does " "not limit the number of files to search." msgstr "" "Spécifie le nombre maximum d'occurrence du texte à l'intérieur de chaque " "fichier à afficher. Ne limite pas le nombre de fichiers à chercher." #: interface.c:1168 msgid "" "Specify the maximum number of matching files found. Does not limit the " "number of content matches within each file." msgstr "" "Spécifie le nombre maximum d'occurrences de fichiers trouvées.\n" "N'agit pas sur le nombre d'occurrences du texte recherchées\n" "dans chaque fichier." #: interface.c:456 interface.c:658 msgid "Start" msgstr "Démarrer recherche" #: interface.c:661 interface.c:1260 msgid "Start the search!" msgstr "Démarrer la recherche !" #: interface.c:467 msgid "Stop" msgstr "Arrêter recherche" #: interface.c:667 interface.c:1285 msgid "Stop the search!" msgstr "Arrêter la recherche !" #: interface.c:1254 msgid "Switch search from basic to advanced mode." msgstr "Basculer de la recherche basique vers la recherche avancée." #: interface.c:3217 msgid "System" msgstr "Système" #: interface.c:2240 msgid "Test Regular Expression" msgstr "_Tester une expression régulière" #: interface.c:565 msgid "Test Regular Expression..." msgstr "Tester une expression régulière ..." #: interface.c:3108 msgid "Text delimiter:" msgstr "Délimiteur de texte :" #: interface.c:2968 interface.c:2986 #, c-format msgid "Text editor attributes: %f=filename, %d=directory" msgstr "Paramètres de l'éditeur de texte : %f=nom de fichier, %d=dossier" #: interface.c:2466 interface.c:2515 interface.c:2610 msgid "The character" msgstr "Ce caractère" #: interface.c:2469 interface.c:2518 interface.c:2613 msgid "The phrase" msgstr "Cette section" #: interface.c:2654 msgid "This is the expression that will be copied back to the main screen." msgstr "C'est l'expression qui sera copiée au retour vers l'écran principal." #: interface.c:2313 msgid "" "To see the results of your regular expression click apply. Once done, simply " "close the window. Searches are case sensitive.\n" "\n" "Note: this tool will highlight each match(es) found." msgstr "" "Pour voir les résultats de votre expression régulière cliquez sur " "[appliquer]. Ceci fait, fermez la fenêtre. Les recherches sont sensibles à " "la casse\n" "\n" "Note : cet outil mettra en évidence toutes les occurrences " "trouvées." #: interface.c:4021 msgid "Translated by" msgstr "Traduit par" #: savestate.c:620 msgid "Type" msgstr "Type" #: search.c:1649 msgid "Unknown" msgstr "Je ne sais pas" #: interface.c:2568 msgid "Update" msgstr "Mettre à jour " #: interface.c:2572 msgid "Updates a rule that was selected for the modify function." msgstr "Mise à jour d'une règle sélectionnée pour la fonction 'modifier'" #: interface.c:3115 msgid "Use ASCII characters e.g. \" # $ '" msgstr "Utilisez des caractères ASCII p.e. \"#$'" #: interface.c:3101 msgid "Use ASCII or C style construct e.g. , \\t ;" msgstr "Utiliser le style ASCII ou C par exemple, \\t;" #: interface.c:3086 msgid "Use ASCII or C style construct e.g. \\n" msgstr "Utiliser le style ASCII ou C par exemple, \\n" #: interface.c:1121 msgid "Use Single Phase Search" msgstr "Recherche à une seule passe" #: interface.c:1092 msgid "Use Wil_dcard Syntax" msgstr "Permettre l'utilisation de _jokers" #: interface.c:1099 interface.c:1143 msgid "Use _Regular Expression Syntax" msgstr "" "Autoriser uniquement une syntaxe conforme\n" "aux expressions _régulières " #: interface.c:512 msgid "Use _Word Wrap" msgstr "_Retours à la ligne automatiques" #: interface.c:2883 msgid "Use extended regular expressions" msgstr "Autoriser les expressions régulières 'étendues' " #: interface.c:1102 interface.c:1146 msgid "Use regular expression syntax in file search criteria." msgstr "" "Utilise la syntaxe des 'expressions régulières' comme critère de recherche " "des fichiers." #: interface.c:1135 msgid "Use simple search syntax" msgstr "Utiliser une syntaxe simple pour la recherche" #: interface.c:1129 msgid "Use strict contents case matching." msgstr "Respecter une stricte correspondance de la casse du contenu" #: interface.c:1075 msgid "Use strict file case matching." msgstr "Respecter une stricte correspondance de la casse des noms de fichiers" #: interface.c:3463 interface.c:3496 msgid "Use the file in an identical to way to that of the grep -f command." msgstr "Utilise le fichier de la même façon que la commande 'grep -f'" #: interface.c:859 msgid "Use the wizard to create a containing text regular expression..." msgstr "" "Utiliser l'assistant pour générer une expression régulière portant sur le " "texte contenu dans les fichiers" #: interface.c:829 msgid "Use the wizard to create a file name regular expression..." msgstr "" "Lancer l'assistant pour créer une 'expression régulière' portant sur des " "noms de fichiers ..." #: interface.c:962 interface.c:984 msgid "Use this option to choose the file size units." msgstr "" "Utilisez cette option pour choisir les unités de mesure de la taille des " "fichiers.\n" "Vous pouvez mixer les unités." #: interface.c:838 msgid "" "Use this option to restrict your search results to files containing the " "provided text (or pattern)." msgstr "" "Cocher cette option pour restreindre la recherche aux fichiers contenant le " "texte indiqué(ou un motif de recherche)" #: interface.c:949 msgid "" "Use this option to restrict your search results to files that are bigger " "than the provided number of kilo Bytes." msgstr "" "Cocher cette option pour restreindre la recherche aux fichiers dont la " "taille est supérieure au nombre de Ko spécifiés." #: interface.c:971 msgid "" "Use this option to restrict your search results to files that are smaller " "than the provided number of kilo Bytes." msgstr "" "Cocher cette option pour restreindre la recherche aux fichiers dont la " "taille est inférieure au nombre de Ko spécifiés." #: interface.c:1001 msgid "" "Use this option to restrict your search results to files that were last " "modified after the provided time." msgstr "" "Cocher cette option pour restreindre la recherche aux fichiers dont la " "dernière modification est postérieure à la date choisie." #: interface.c:1025 msgid "" "Use this option to restrict your search results to files that were last " "modified before the provided time." msgstr "" "Cocher cette option pour restreindre la recherche aux fichiers dont la " "dernière modification est antérieure à la date choisie." #: interface.c:788 interface.c:887 msgid "Use this option to search all subfolders (recursively)." msgstr "" "Cocher cette option pour chercher récursivement (c-à-d en profondeur ) dans " "les dossiers" #: interface.c:1095 interface.c:1139 msgid "Use wildcard or glob syntax for file search criteria. E.g. *.txt" msgstr "" "Utilisez des jokers ou une syntaxe 'glob' pour les critères de recherche des " "fichiers, par ex. *.txt" #: interface.c:3094 msgid "Value/field separator:" msgstr "Séparateur de champ/valeur :" #: interface.c:401 msgid "Vertical results" msgstr "Présenter les résultats _verticalement" #: interface.c:638 msgid "Write some or all of the search criteria to disk." msgstr "Enregistrer une partie ou la totalité des critères de recherche" #: interface.c:4004 msgid "Written by" msgstr "Ecrit par" #: interface.c:2490 interface.c:2539 interface.c:2634 msgid "Zero or more times" msgstr "Zéro fois ou plus" #: interface.c:3117 msgid "\\\"" msgstr "\\\"" #: interface.c:3088 msgid "\\n" msgstr "\\n" #: interface.c:719 msgid "_Containing:" msgstr "_Contenant :" #: interface.c:365 interface.c:1926 msgid "_Copy (Filename)" msgstr "_Copier le chemin vers le fichier sélectionné" #: interface.c:341 msgid "_Delete (File)" msgstr "E_ffacer ce fichier" #: interface.c:1934 msgid "_Delete File" msgstr "E_ffacer ce fichier" #: interface.c:334 msgid "_Edit" msgstr "_Edition" #: interface.c:1942 msgid "_Explore Folder" msgstr "_Parcourir le dossier sélectionné" #: interface.c:549 msgid "_Export Regular Expression..." msgstr "_Exporter expression(s) régulière(s) ..." #: interface.c:281 msgid "_File" msgstr "_Fichier" #: interface.c:418 msgid "_File Name" msgstr "Nom _Fichier" #: interface.c:591 msgid "_Forums" msgstr "_Forums" #: interface.c:569 msgid "_Help" msgstr "_Aide" #: interface.c:1077 msgid "_Ignore files beginning with '.'" msgstr "_Ignorer les fichiers cachés" #: interface.c:538 msgid "_Import Regular Expression..." msgstr "_Importer expression(s) régulière(s) ..." #: interface.c:423 msgid "_Location" msgstr "Emp_lacement" #: interface.c:438 msgid "_Modified" msgstr "_Modifié" #: interface.c:288 msgid "_New Instance" msgstr "_Nouvelle instance" #: interface.c:449 msgid "_Search" msgstr "_Recherche" #: interface.c:428 msgid "_Size" msgstr "Tai_lle" #: interface.c:583 msgid "_Support" msgstr "_Support" #: interface.c:433 msgid "_Type" msgstr "_Type" #: interface.c:576 msgid "_User Guide" msgstr "G_uide Utilisateur" #: interface.c:373 msgid "_View" msgstr "Affichage" #: savestate.c:1744 msgid "case sensitive; " msgstr "sensible à la casse ;" #: savestate.c:1753 #, c-format msgid "display %d extra lines around match; " msgstr "afficher %d lignes supplémentaires avant et après l'occurrence ;" #: savestate.c:1750 msgid "display 1 extra line around match; " msgstr "affiche une ligne supplémentaire avant et après l'occurrence ;" #: callbacks.c:387 msgid "http://searchmonkey.embeddediq.com/index.php/contribute" msgstr "http://searchmonkey.embeddediq.com/index.php/contribute" #: callbacks.c:395 msgid "http://searchmonkey.embeddediq.com/index.php/support" msgstr "http://searchmonkey.embeddediq.com/index.php/support" #: callbacks.c:1212 msgid "http://searchmonkey.embeddediq.com/index.php/support/index" msgstr "http://searchmonkey.embeddediq.com/index.php/support/index" #: callbacks.c:762 msgid "" "http://searchmonkey.sourceforge.net/index.php/Regular_expression_builder" msgstr "" "http://searchmonkey.sourceforge.net/index.php/Regular_expression_builder" #: callbacks.c:438 msgid "http://sourceforge.net/forum/?group_id=175143" msgstr "http://sourceforge.net/forum/?group_id=175143" #: callbacks.c:1162 msgid "" "https://sourceforge.net/projects/searchmonkey/files/gSearchmonkey%20GTK" "%20%28Gnome%29/0.8.2%20%5Bstable%5D/" msgstr "" "https://sourceforge.net/projects/searchmonkey/files/gSearchmonkey%20GTK" "%20%28Gnome%29/0.8.2%20%5Bstable%5D/" #: savestate.c:1772 msgid "none" msgstr "aucune" #: savestate.c:1766 #, c-format msgid "only showing first %d content matches; " msgstr "afficher uniquement les %d premières occurrences du texte;" #: savestate.c:1763 msgid "only showing first content match; " msgstr "montrer uniquement la première occurrence ;" #: savestate.c:1757 msgid "only showing line numbers; " msgstr "Montrer seulement les n° de lignes" #: callbacks.c:1531 msgid "research mode with RegEx" msgstr "Mode de recherche avec RegEX" #: callbacks.c:1528 msgid "research mode with jokers(DOS like)" msgstr "Mode de recherche avec Jokers(style DOS)" #: interface.c:2284 msgid "sample" msgstr "exemple" #: interface.c:262 msgid "searchmonkey" msgstr "searchmonkey" #: callbacks.c:411 #, c-format msgid "searchmonkey %s" msgstr "searchmonkey %s" #: interface.c:3974 msgid "searchmonkey Credits" msgstr "Crédits de searchmonkey" #: interface.c:2480 interface.c:2529 interface.c:2624 msgid "that occurs" msgstr "présent(e) " #~ msgid "%d %b %Y" #~ msgstr "%b %d %Y" #~ msgid "Expression Builder..." #~ msgstr "Assistant ... " #~ msgid "Ready" #~ msgstr "Prêt" #~ msgid "Error! LessThan file size must be positive value" #~ msgstr "Erreur ! Le critère 'inférieur à...' doit être un nombre positif" #~ msgid "Error! MoreThan file size must be positive value" #~ msgstr "Erreur ! Le critère 'supérieur à...' doit être un nombre positif" #~ msgid "-new-tab %f" #~ msgstr "-nouvel-onglet %f" #~ msgid "Select which data to delete:" #~ msgstr "Sélectionner les données à effacer" #~ msgid "System Calls" #~ msgstr "Appels système" #~ msgid "http://%s.sf.net/index.php?title=V%s_Release_Notes" #~ msgstr "http://%s.sf.net/index.php?title=V%s_Release_Notes" #~ msgid "http://sf.net/forum/?group_id=175143" #~ msgstr "http://sf.net/forum/?group_id=175143" #~ msgid "Size (kB):" #~ msgstr "Taille(Ko) :" #~ msgid "http://sourceforge.net/support/getsupport.php?group_id=175143" #~ msgstr "http://sourceforge.net/support/getsupport.php?group_id=175143" #~ msgid "%s\n" #~ msgstr "%s\n" #~ msgid "Text ends:" #~ msgstr "Le texte se termine par :" #~ msgid "" #~ "Wizard Help\n" #~ "Welcome to the Expression Wizard. This wizard can help you define exactly " #~ "what you are searching for.\n" #~ "searchMonkey uses regular expression to describe the patterns for string " #~ "matching. Regular expressions are very powerful, but they can also be " #~ "daunting for new users.\n" #~ "Some text characters are reserved as regular expression syntax, rather " #~ "than having its general term. This Wizard recognises that, and will " #~ "automatically prompt you if conversion is about to take place.\n" #~ "If you do not know how the text begins or ends just add your criteria in " #~ "the 'Followed by' list. Use drag and drop to re-arrange the rows of the " #~ "middle section.\n" #~ "Expression wizard does not provide all the functionality of regular " #~ "expressions, but if you know how to construct regular expressions you can " #~ "specify it yourself. Just add your regular expression as type 'Phrase' " #~ "in the 'Followed by' list and switch off escapes when prompted.\n" #~ "\n" #~ "To find out more about regular expressions see the XSearch User Guide.\n" #~ "\n" #~ "http://searchMonkey.sourceforge.net/index.php/Regex_wizard" #~ msgstr "" #~ "Wizard Help\n" #~ "Welcome to the Expression Wizard. This wizard can help you define exactly " #~ "what you are searching for.\n" #~ "searchMonkey uses regular expression to describe the patterns for string " #~ "matching. Regular expressions are very powerful, but they can also be " #~ "daunting for new users.\n" #~ "Some text characters are reserved as regular expression syntax, rather " #~ "than having its general term. This Wizard recognizes that, and will " #~ "automatically prompt you if conversion is about to take place.\n" #~ "If you do not know how the text begins or ends just add your criteria in " #~ "the 'Followed by' list. Use drag and drop to re-arrange the rows of the " #~ "middle section.\n" #~ "Expression wizard does not provide all the functionality of regular " #~ "expressions, but if you know how to construct regular expressions you can " #~ "specify it yourself. Just add your regular expression as type 'Phrase' " #~ "in the 'Followed by' list and switch off escapes when prompted.\n" #~ "\n" #~ "To find out more about regular expressions see the XSearch User Guide.\n" #~ "\n" #~ "http://searchMonkey.sourceforge.net/index.php/Regex_wizard" searchmonkey-0.8.3/po/fr.po0000664000175000017500000014523613236164262012542 00000000000000# Searchmonkey - desktop searching with regular expression wizard. # Copyright (C) 2007 # This file is distributed under LGPL # Adam Cottrell , 2007. # msgid "" msgstr "" "Project-Id-Version: 0.8.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-08 15:39+0100\n" "PO-Revision-Date: 2018-02-10 09:50+0100\n" "Last-Translator: Adam Cottrell \n" "Language-Team: Adam Cottrell \n" "Language: FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" #: savestate.c:1666 #, c-format msgid "" "\n" "Internal error %d! Unable to highlight line - offset beyond line-end.\n" msgstr "" "\n" "Erreur interne %d ! Impossible de surligner au-delà de la fin de ligne.\n" #: main.c:68 msgid "" "\n" "No content searching performed for this file.\n" "\n" "Please ensure containing search was enabled, and that an expression was " "entered prior to starting search.\n" msgstr "" "\n" "Pas de recherche de contenu pour ce fichier.\n" "\n" "Vérifiez SVP que la recherche de contenu soit activée, et\n" "qu'une expression soit saisie avant de démarrer la recherche.\n" #: savestate.c:1671 #, c-format msgid " Debug: %d) '%s'\n" msgstr " Debogage: %d) '%s'\n" #: savestate.c:1668 #, c-format msgid " Debug: fn='%s'\n" msgstr " Debogage: fn='%s'\n" #: savestate.c:1669 #, c-format msgid " Debug: tc=%d + os=%d || oe=%d\n" msgstr " Debogage: tc=%d + os=%d || oe=%d\n" #: savestate.c:44 #, c-format msgid " %s settings auto-generated - Do not edit!" msgstr "%s configuration auto-générée - Ne pas modifier !" #: search.c:1719 msgid " [cancelled]" msgstr " [interrompu]" #: search.c:1712 msgid " [inv]" msgstr " [inv]" #: savestate.c:183 msgid " [missing]" msgstr "[absent]" #: search.c:1610 #, c-format msgid "%1.1f KB" msgstr "%1.1f Ko" #: search.c:1612 #, c-format msgid "%1.1f MB" msgstr "%1.1f Mo" #: interface.c:2978 #, c-format msgid "%d" msgstr "%d" #: search.c:1608 #, c-format msgid "%d bytes" msgstr "%d octets" #: search.c:1707 #, c-format msgid "%d file found" msgstr "Trouvé %d fichier" #: search.c:1709 #, c-format msgid "%d files found" msgstr "Trouvé %d fichiers" #: interface.c:2969 interface.c:2987 #, c-format msgid "%f" msgstr "%f" #: search.c:1129 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: systemio.c:1077 #, c-format msgid "%s Error! Unable to duplicate string vector\n" msgstr "%s Erreur ! Je ne peux dupliquer le vecteur chaîne\n" #: systemio.c:1068 #, c-format msgid "%s Error! Unable to split %s with %c\n" msgstr "%s Erreur ! Impossible de diviser %s avec %c\n" #: search.c:1639 #, c-format msgid "%s-type" msgstr "%s-type" #: search.c:653 search.c:667 #, c-format msgid "%x" msgstr "%x" #: callbacks.c:1018 msgid "(Entry)" msgstr "(Valeur)" #: callbacks.c:1023 msgid "(Repeat)" msgstr "(Répéter)" #: callbacks.c:1013 msgid "(Type)" msgstr "(Condition)" #: interface.c:3103 msgid "," msgstr "," #: search.c:1727 msgid "-research mode with RegEx" msgstr "-Mode de recherche avec RegEX" #: search.c:1724 msgid "-research mode with jokers(DOS like)" msgstr "-Mode de recherche avec Jokers(style DOS)" #: savestate.c:1776 msgid ".\n" msgstr ".\n" #: callbacks.c:1148 msgid "0%" msgstr "0%" #: systemio.c:557 msgid "100%" msgstr "100%" #: interface.c:2311 msgid "" msgstr "" #: search.c:681 msgid "" "Error!\n" "\n" "Dates mismatch ! 'Before than' date must be more recent than 'After " "than' date.\n" "Search can't proceed correctly !\n" "Please check the dates." msgstr "" "Erreur !\n" "\n" "Confusion dans les dates ! La date du champ 'Avant le' doit être plus " "récente que la date du champ 'Après le'.\n" "La recherche n'a pu s'effectuer correctement\n" "Veuillez vérifier les dates." #: search.c:650 msgid "" "Error!\n" "\n" "Invalid 'After'date - format as dd/mm/yyyy or dd mmm yy." msgstr "" "Erreur !\n" "\n" "Le format du champ 'Après le' doit être sous la forme jj/mm/aa ou jj mm aa." #: search.c:664 msgid "" "Error!\n" "\n" "Invalid 'Before' date - format as dd/mm/yyyy or dd mmm yy." msgstr "" "Erreur !\n" "\n" "Le format du champ 'Avant le' doit être sous la forme jj/mm/aa ou jj mm aa." #: search.c:630 msgid "" "Error!\n" "\n" "LessThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" "Erreur !\n" "\n" "La borne 'Inférieure à' doit être une valeur positive\n" "Par conséquent ce critère ne sera pas utilisé\n" "\n" "SVP, vérifiez votre saisie et les unités." #: search.c:614 msgid "" "Error!\n" "\n" "MoreThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" "Erreur !\n" "\n" "La borne 'Supérieure à' doit être une valeur positive\n" "Par conséquent ce critère ne sera pas utilisé\n" "\n" "SVP, vérifiez votre saisie et les unités." #: search.c:618 search.c:634 msgid "" "Error!\n" "\n" "MoreThan file size must be stricly inferior to LessThan file size.So " "this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" "Erreur !\n" "\n" "La valeur du champ 'Supérieure à' doit être strictement inférieure à " "celle du champ 'Inférieure à'.\n" "Ce critère ne sera donc pas utilisé.\n" "SVP, vérifiez votre saisie et les unités." #: interface.c:3659 msgid "Export Source" msgstr "Choix des expressions régulières à exporter" #: interface.c:3692 msgid "Export Type" msgstr "Choix du nombre d'expressions régulières à exporter" #: interface.c:1151 msgid "File Contents Options" msgstr "Pour le contenu" #: interface.c:1107 msgid "File Name Options" msgstr "Pour les fichiers" #: interface.c:3474 msgid "Import Location" msgstr "Contenu de l'importation" #: interface.c:3507 msgid "Import Type" msgstr "Organisation des données à importer" #: interface.c:2664 msgid "Resulting expression" msgstr "Expression résultante" #: interface.c:1235 msgid "Results Options" msgstr "Pour les résultats" #: interface.c:2292 msgid "Sample Text:" msgstr "Texte à analyser avec cette expression :" #: interface.c:2116 msgid "" "Select which data to delete:\n" "With this dialog, you can control how your entries will be cleared." msgstr "" "Choisissez quelles données seront effacées : \n" "Cette boîte de dialogue vous permet de contrôler les entrées qui seront " "supprimées." #: interface.c:2331 msgid "Status:" msgstr "Statut : " #: interface.c:2275 msgid "Test Expression:" msgstr "Formule d'Expression Régulière à tester :" #: interface.c:2259 msgid "" "Test Regular Expressions (RegEx):\n" "With this dialog, you can test a RegEx before using it.\n" "Feel free to type a RegEx and put an example of text to test it." msgstr "" "Tester une Expression Régulière (RegEx) :\n" "Cette boîte de dialogue vous permet d'essayer une RegEx avant de " "l'utiliser.\n" "Tapez la RegEx de votre choix et ajoutez un échantillon de texte afin de " "faire un essai." #: interface.c:2456 msgid "Text begins:" msgstr "Le texte commence par :" #: interface.c:2586 msgid "Text contains" msgstr "le texte contient" #: interface.c:2600 msgid "Text ends:" msgstr "le texte finit par:" #: interface.c:2168 msgid "Warning: Once cleared, history cannot be recovered!" msgstr "Attention ! L' historique sera définitivement effacé !" #: interface.c:3888 msgid "" "Regular expression power search utility written in GTK+ and licensed " "under GPL v.3" msgstr "" "Utilitaire de recherche performant basé sur les 'expressions régulières', " "écrit en GTK+ et sous licence GPL v.3" #: interface.c:819 msgid "" "RegEx Expression Builder..." msgstr "" "RegEx Assistant ..." #: interface.c:848 msgid "" "RegEx Expression Builder..." msgstr "" "RegEx Assistant ..." #: systemio.c:198 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "" "Un fichier nommé \"%s\" existe déjà. Êtes-vous sûr(e) de vouloir l'écraser ?" #: search.c:882 msgid "Aborting research-Searchmonkey" msgstr "Abandon de la recherche-Searchmonkey" #: interface.c:3855 msgid "About searchmonkey" msgstr "A propos de searchmonkey" #: savestate.c:145 msgid "About to overwrite save configuration. Do you want to proceed?" msgstr "Prêt à écraser le fichier de configuration. Voulez-vous continuer ?" #: interface.c:2690 msgid "Accept the resulting expression, and add it to the search rules." msgstr "Accepte l'expression résultante, et l'ajoute aux règles de recherche." #: interface.c:4019 msgid "" "Adam Cottrell (en_GB)\n" "Luc Amimer (fr)" msgstr "" "Adam Cottrell (en_GB)\n" "Luc Amimer (fr_FR) " #: interface.c:2562 msgid "Add" msgstr "Ajouter" #: interface.c:631 msgid "Add search criteria from a text file. Similar to the grep -f flag." msgstr "" "Ajoute un critère de recherche depuis un fichier texte. Similaire au drapeau " "'-f' de la commande 'grep'." #: interface.c:1048 msgid "Advanced" msgstr "Avancé" #: interface.c:998 msgid "After:" msgstr "Après le :" #: interface.c:2468 interface.c:2517 interface.c:2612 msgid "Any char except these" msgstr "Tous caractères sauf ceux-ci" #: interface.c:2465 interface.c:2514 interface.c:2609 msgid "Any character" msgstr "Tout caractère" #: interface.c:2471 interface.c:2520 interface.c:2615 msgid "Any numeric character" msgstr "Tout caractère numérique" #: interface.c:2467 interface.c:2516 interface.c:2611 msgid "Any one of these chars" msgstr "N'importe lequel de ces caractères" #: interface.c:2472 interface.c:2521 interface.c:2616 msgid "Any text character" msgstr "Tout caractère alphabétique" #: callbacks.c:1176 msgid "" "Are you sure that you wish to delete the config file, and restart " "searchmonkey?" msgstr "" "Êtes-vous sûr(e) de vouloir effacer le fichier de configuration, et relancer " "Searchmonkey ?" #: systemio.c:804 #, c-format msgid "" "Are you sure you want to delete:\n" "\t'%s'" msgstr "" "Êtes-vous sûr(e) de vouloir effacer :\n" "\t'%s'" #: interface.c:2950 msgid "Attributes" msgstr "Attributs" #: interface.c:3762 msgid "Auto Complete" msgstr "Auto-complétion" #: interface.c:3045 msgid "Auto search..." msgstr "Rechercher automatiquement ..." #: interface.c:517 msgid "Auto-size columns" msgstr "_Ajuster automatiquement les colonnes" #: interface.c:791 msgid "Basic" msgstr "Basique" #: interface.c:1022 msgid "Before:" msgstr "Avant le :" #: interface.c:2944 msgid "Binary/Executable" msgstr "Binaire/exécutable" #: interface.c:896 msgid "Browse your file system and select the search directory..." msgstr "" "Naviguez dans votre système de fichiers et sélectionnez le dossier de " "recherche ..." #: interface.c:1955 msgid "C_ancel" msgstr "_Annuler" #: systemio.c:845 msgid "Cannot copy full file name as name was not selected." msgstr "" "Je ne peux pas copier le chemin du fichier vers le presse-papiers car vous " "n'avez pas sélectionné de fichier !" #: systemio.c:781 msgid "Cannot delete file as name was not selected." msgstr "Je ne peux rien effacer car vous n'avez pas sélectionné de fichier !" #: interface.c:2904 msgid "Check this to allow" msgstr "Cocher afin de l'autoriser" #: interface.c:484 msgid "Clear History..." msgstr "_Effacer l'historique" #: interface.c:2097 msgid "Clear Search History" msgstr "Effacer historique de recherche" #: interface.c:2157 msgid "Clear all directories in the \"Folders:\" drop-down list" msgstr "Effacer tous les dossiers dans la liste déroulante \"Dossiers\"" #: interface.c:2145 msgid "Clear all file names in the \"Files:\" drop-down list" msgstr "Effacer tous les noms de fichiers dans liste déroulante \"Fichiers\"" #: interface.c:2151 msgid "Clear all patterns in the \"Containing:\" drop-down list" msgstr "Effacer tous les motifs dans liste déroulante \"contenant le texte\"" #: interface.c:2148 msgid "Clear containing text" msgstr "Effacer le(s) texte(s) recherché(s)" #: interface.c:2142 msgid "Clear file names" msgstr "Effacer les noms de fichiers" #: interface.c:2154 msgid "Clear look in history" msgstr "Effacer l'historique des emplacements explorés" #: interface.c:2859 msgid "Configuration" msgstr "Configuration" #: savestate.c:79 msgid "" "Configuration files are for a different version of Searchmonkey. This may " "cause errors. Delete old configuration files?" msgstr "" "Les fichiers de configuration sont prévus pour une autre version de " "Searchmonkey. Ceci peut provoquer des erreurs.\n" "Dois-je effacer les anciens fichiers de configuration ?" #: interface.c:3652 msgid "Containing Text Export Criteria" msgstr "Les entrées saisies dans le champ 'Contenant :'" #: interface.c:3467 msgid "Containing Text import" msgstr "" "formule d'Expression Régulière pour rechercher un texte spécifique dans un " "fichier" #: interface.c:835 msgid "Containing:" msgstr "Contenant :" #: callbacks.c:1107 msgid "Context Expression Wizard" msgstr "" "Assistant de construction d'Expression Régulière pour rechercher du texte " "dans un fichier" #: interface.c:2658 msgid "Convert Internals" msgstr "Corriger caractères de contrôle" #: interface.c:3898 msgid "Copyright (c) 2006-2018 Adam Cottrell" msgstr "Copyright (c) 2006-2018 Adam Cottrell" #: support.c:90 support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Je ne peux trouver le fichier pixmap %s." #: interface.c:649 msgid "Create a CSV file containing a list of results." msgstr "Créer un fichier CSV avec la liste des résultats." #: interface.c:2566 msgid "Creates a new row in the list with the following rule." msgstr "Crée une nouvelle rangée dans la liste avec la règle suivante." #: interface.c:3925 msgid "Credits" msgstr "Crédits" #: interface.c:3121 msgid "Csv Export" msgstr "Exportation en CSV" #: interface.c:3203 msgid "Current Config file location:" msgstr "Emplacement actuel du fichier de configuration : " #: interface.c:3049 msgid "Default Applications" msgstr "Applications par défaut" #: interface.c:2937 msgid "Default folder explorer:" msgstr "Navigateur de fichiers par défaut :" #: interface.c:2930 msgid "Default text editor:" msgstr "Editeur de texte par défaut :" #: interface.c:2956 msgid "Default web browser:" msgstr "Navigateur Internet par défaut :" #: interface.c:2580 msgid "Delete" msgstr "Effacer " #: interface.c:2584 msgid "Deletes an existing row in the rule table." msgstr "Effacer une ligne existante du tableau des règles" #: interface.c:261 msgid "Desktop search to replace find and grep." msgstr "" "Logiciel de Recherche pour le Bureau remplaçant les commandes 'find' et " "'grep'" #: regexwizard.c:100 msgid "Did not match any." msgstr "Aucune occurrence." #: interface.c:2683 msgid "Discard any changes." msgstr "Abandonner toutes les modifications" #: interface.c:1321 interface.c:1356 msgid "Displays the matching text lines when the result is selected." msgstr "" "Affiche les lignes de texte correspondantes quand le résultat est " "sélectionné." #: interface.c:2464 interface.c:2513 interface.c:2608 msgid "Don't know" msgstr "Je ne sais pas" #: interface.c:2554 msgid "" "Each row creates a new part to the rule, with the order reflecting the order " "in which the rule is to be matched." msgstr "" "Chaque rangée crée une nouvelle partie de la règle, le rang quant à lui " "reflète l'ordre dans lequel la règle doit être satisfaite." #: interface.c:1918 msgid "Edit (File)" msgstr "Éditer ce fichier" #: interface.c:349 msgid "Edit File" msgstr "Édit_er le fichier sélectionné" #: interface.c:724 msgid "Enable contents search to find files with matching content too." msgstr "" "Activer la recherche de contenu afin de rechercher des fichiers intégrant ce " "contenu" #: interface.c:3079 msgid "End of row separator:" msgstr "Caractère marquant la fin d'une ligne :" #: savestate.c:161 #, c-format msgid "Error saving %s: %s\n" msgstr "Erreur lors enregistrement de %s: %s\n" #: callbacks.c:1622 msgid "Error! Invalid 'containing text' regular expression" msgstr "Erreur ! Expression régulière de 'contenant texte' invalide" #: callbacks.c:1598 msgid "Error! Invalid 'file name' regular expression" msgstr "Erreur ! Le 'nom de fichier' dans l'expression régulière est incorrect" #: misc.c:298 search.c:845 msgid "Error! Invalid Containing Text regular expression" msgstr "Erreur ! Expression régulière de 'contenant texte' invalide" #: misc.c:288 search.c:839 msgid "Error! Invalid File Name regular expression" msgstr "Erreur ! Le 'Nom de Fichier' dans l'expression régulière est incorrect" #: misc.c:509 search.c:820 msgid "Error! Look In directory cannot be blank." msgstr "Erreur ! L'aperçu du dossier ne peut être vide." #: misc.c:520 search.c:831 msgid "Error! Look In directory is invalid." msgstr "Erreur ! L'aperçu du dossier est invalide." #: systemio.c:310 systemio.c:419 msgid "Error! No valid file selected." msgstr "Erreur ! Pas de fichier valide sélectionné." #: systemio.c:387 msgid "Error! Unable to find first combo entry. Is drop down list blank?" msgstr "" "Erreur ! Impossible de trouver la 1ère entrée de la liste double. La liste " "déroulante est-elle vide ?" #: callbacks.c:1182 #, c-format msgid "Error! Unable to remove config file %s.\n" msgstr "Erreur ! Impossible de supprimer le fichier de configuration %s.\n" #: systemio.c:363 msgid "" "Error! You must select at least one entry in order to save drop down list." msgstr "" "Erreur ! Vous devez sélectionner au moins une entrée afin de sauvegarder la " "liste déroulante." #: interface.c:1252 msgid "Expert Mode" msgstr "Mode expert" #: interface.c:3594 msgid "Export Criteria" msgstr "Exporter des critères de recherche" #: interface.c:635 msgid "Export Expression..." msgstr "Exporter expression ..." #: interface.c:2438 msgid "Expression Wizard" msgstr "Assistant d'Expression Régulière" #: interface.c:2886 msgid "" "Extended regular expressions are recommended as they provide more " "functionality." msgstr "" "Les expressions régulières 'étendues' sont recommandées car elles offrent " "plus de fonctionnalités." #: interface.c:531 msgid "Extras" msgstr "Suppléments" #: callbacks.c:1105 msgid "File Expression Wizard" msgstr "" "Assistant de construction d'Expression Régulière pour rechercher des fichiers" #: interface.c:3645 msgid "File Name Export criteria" msgstr "Les entrées du champ 'fichiers'" #: interface.c:3460 msgid "File Name import" msgstr "" "Formule d'Expression Régulière pour rechercher des fichiers spécifiques." #: interface.c:3438 interface.c:3622 msgid "File Selection" msgstr "Sélectionner le fichier" #: interface.c:2977 #, c-format msgid "File explorer attributes: %f=filename, %d=directory" msgstr "Paramètres du navigateur de fichiers : %f=nom de fichier, %d=dossier" #: systemio.c:110 msgid "File name" msgstr "Nom de fichier" #: systemio.c:112 msgid "File size" msgstr "Taille de fichier" #: systemio.c:113 msgid "File type" msgstr "Type de fichier" #: systemio.c:289 msgid "File was empty/invalid." msgstr "Le fichier est vide/invalide" #: interface.c:713 interface.c:806 msgid "Files:" msgstr "Fichiers :" #: interface.c:3022 msgid "Find default executables:" msgstr "" "Déterminer les applications par défaut\n" "sur cet ordinateur : " #: interface.c:743 interface.c:869 msgid "Folders:" msgstr "Dossiers :" #: interface.c:1083 msgid "Follow Symbol _Links" msgstr "Suivre _liens symboliques" #: interface.c:1086 msgid "Follow Symbolic Links (Only on systems that support them)" msgstr "" "Suivre les liens symboliques(uniquement si gérés par le système de fichiers)" #: interface.c:2897 msgid "Force a prompt before any files are deleted" msgstr "Confirmer avant tout effacement de fichier" #: interface.c:2892 msgid "Force a prompt before settings are saved." msgstr "Confirmer avant de sauvegarder la configuration" #: interface.c:2878 msgid "Force single window mode" msgstr "Forcer le mode fenêtre unique" #: regexwizard.c:104 #, c-format msgid "Found %d matches." msgstr "Trouvé %d occurrences." #: regexwizard.c:102 msgid "Found 1 match." msgstr "Trouvé une occurrence" #: interface.c:966 interface.c:988 msgid "Gb" msgstr "Go" #: interface.c:2907 msgid "Global Settings" msgstr "Configuration globale" #: interface.c:3493 msgid "Grep style file (1-entry, OR each line)" msgstr "Style de fichiers Grep(1-entrée, OU chaque ligne)" #: interface.c:2677 msgid "Help with the Regular Expression Builder" msgstr "Aide avec le constructeur d'Expressions Régulières" #: interface.c:1225 msgid "Highlights per line :" msgstr "Surlignages par ligne : " #: interface.c:395 msgid "Horizontal results" msgstr "Présenter les résultats _horizontalement" #: interface.c:1192 msgid "" "If active, display extra lines around the matching line to help show context " "of match." msgstr "" "Si coché, Searchmonkey affiche des lignes supplémentaires\n" "avant et après la ligne où se trouve le texte cherché\n" "afin de situer le contexte de l'occurrence." #: interface.c:1080 msgid "Ignore hidden files (Unix filesystems only)" msgstr "Ignorer les fichiers cachés(uniquement pour systèmes de fichiers UNIX)" #: systemio.c:456 #, c-format msgid "" "Illegal escape sequence: '\\%c'.\n" " Valid escape characters are: b n r t \" \\" msgstr "" "Séquence d'échappement incorrecte : '\\%c'.\n" "Les caractères d'échappement autorisés sont : b n r t \" \\" #: interface.c:3410 msgid "Import Criteria" msgstr "Importer des critères de recherche" #: interface.c:628 msgid "Import Expression..." msgstr "Importer Expression..." #: interface.c:3470 interface.c:3503 interface.c:3688 msgid "Import a file identical to that generated by the export command." msgstr "Importe un fichier identique à celui généré par la commande 'exporter'" #: systemio.c:474 #, c-format msgid "" "Input string expands into non ASCII, or multi-byte key sequence: '%s'.\n" " Please try to use ASCII safe keys" msgstr "" "La chaîne saisie déborde le code ASCII, ou vous avez tapé une séquence de " "touches multi-octets : '%s'.\n" "Veuillez utiliser des touches ASCII sûres." #: callbacks.c:755 msgid "Internal Error! Unable to find calling wizard type!" msgstr "" "Erreur interne ! Impossible de déterminer le type d'assistant appelant !" #: interface.c:1067 msgid "Invert Search Expression" msgstr "Inverser l'expression de recherche" #: interface.c:1070 msgid "Inverts the file name search results i.e. find all becomes find none." msgstr "" "Inverse les résultats de la recherche par 'nom de fichier', c-à-d que " "'trouver tous' devient 'trouver aucun'." #: interface.c:3681 msgid "Just save the currently displayed entry to a file." msgstr "" "Enregistrer seulement l'entrée affichée,\n" "soit celle du champ 'fichier,'\n" "soit celle du champ 'Contenant'" #: interface.c:964 interface.c:986 msgid "Kb" msgstr "Ko" #: interface.c:968 msgid "Less than:" msgstr "Inférieure à :" #: interface.c:1213 msgid "Limit Content Highlighting" msgstr "Limiter le surlignage :" #: interface.c:1165 msgid "Limit Match Files" msgstr "Limiter le nombre de fichiers trouvés" #: interface.c:925 msgid "Limit files found by selecting maximum tree-depth to search." msgstr "" "Contrôler le nombre de résultats en sélectionnant la profondeur\n" "maximale de l'arborescence des dossiers où se fera la recherche.\n" "Une valeur de zéro signifie : limiter au dossier courant." #: savestate.c:1623 savestate.c:1687 #, c-format msgid "Line Number: %d\n" msgstr "Numéro de ligne : %d\n" #: interface.c:1199 msgid "Lines Displayed:" msgstr "Nombre lignes affichées : " #: interface.c:1301 interface.c:1336 msgid "List of file(s) corresponding to research criteria." msgstr "Liste de fichier(s) correspondant aux critères de recherche." #: savestate.c:602 savestate.c:1395 systemio.c:111 msgid "Location" msgstr "Emplacement" #: interface.c:3211 msgid "Location of your current searchmonkey configuration settings file." msgstr "Emplacement de votre fichier actuel de configuration de Searchmonkey." #: interface.c:443 msgid "Mat_ches" msgstr "O_ccurrences" #: interface.c:1072 interface.c:1126 msgid "Match Case" msgstr "Respecter la casse" #: interface.c:2900 msgid "Match strings within binary files too" msgstr "Chercher les chaînes de texte dans les fichiers binaires également" #: savestate.c:638 msgid "Matches" msgstr "Occurrences" #: interface.c:1175 msgid "Maximum Hits:" msgstr "Résultats affichés :" #: interface.c:954 msgid "Maximum filesize in kBytes/mBytes/gBytes." msgstr "Taille minimale des fichiers en Kilo-octets/Mega-octets/Giga-octets" #: interface.c:965 interface.c:987 msgid "Mb" msgstr "Mo" #: interface.c:976 msgid "Minimum filesize in kBytes/mBytes/gBytes." msgstr "Taille maximale des fichiers en Kilo-octets/Mega-octets/Giga-octets" #: savestate.c:629 msgid "Modified" msgstr "Modifié" #: systemio.c:114 msgid "Modified date" msgstr "Date de modification" #: interface.c:994 msgid "Modified:" msgstr "Modifié :" #: interface.c:2578 msgid "Modifies an existing row in the rule table." msgstr "Modifie une ligne existante du tableau des règles" #: interface.c:2574 msgid "Modify" msgstr "Modifier " #: interface.c:946 msgid "More than:" msgstr "Supérieure à :" #: systemio.c:486 #, c-format msgid "" "Multi-byte string entered: '%s'.\n" "Truncating extra character (%c)" msgstr "" "Une chaîne multi-octets a été saisie :'%s'.\n" "Le caractère supplémentaire (%c) a été tronqué" #: main.c:70 msgid "N/A" msgstr "N/D" #: savestate.c:593 msgid "Name" msgstr "Nom" #: interface.c:616 msgid "New Instance" msgstr "Nouvelle instance" #: systemio.c:179 msgid "No results to save!" msgstr "Aucun résultat à enregistrer !" #: interface.c:2488 interface.c:2537 interface.c:2632 msgid "Once" msgstr "Une fois" #: interface.c:2489 interface.c:2538 interface.c:2633 msgid "One or more times" msgstr "Une fois ou plus" #: interface.c:357 msgid "Open Folder" msgstr "_Parcourir le dossier sélectionné" #: interface.c:619 msgid "Open a new search window." msgstr "Ouvrir une nouvelle fenêtre de recherche" #: interface.c:1017 interface.c:1041 msgid "Open calendar dialog to choose modified date." msgstr "Ouvrir la calendrier pour choisir une date donnée" #: interface.c:761 msgid "Opens a dialog to find a look in directory." msgstr "Cliquez sur ce bouton pour choisir le dossier à explorer ..." #: interface.c:1240 interface.c:3512 interface.c:3697 msgid "Options" msgstr "Options " #: savestate.c:1729 msgid "Options: " msgstr "Options :" #: interface.c:323 msgid "P_rint Setup..." msgstr "Configurer im_pression ..." #: savestate.c:1621 #, c-format msgid "Paragraph Number: %d\n" msgstr "Paragraphe n° : %d\n" #: interface.c:3003 msgid "Paste and edit full file name of your preferred file explorer." msgstr "" "Coller et modifier le nom complet de votre \n" "explorateur de fichier préféré" #: interface.c:2995 msgid "Paste and edit full file name of your preferred text editor." msgstr "" "Coller et modifier le nom complet de votre \n" " éditeur de texte préféré" #: interface.c:3011 msgid "Paste and edit full file name of your preferred web browser." msgstr "" "Coller et modifier le nom complet de votre \n" " navigateur Internet préféré" #: interface.c:1124 msgid "" "Perform content searching immediately so that results are returned quicker." msgstr "" "Exécute la recherche de contenu immédiatement afin que les résultats " "apparaissent plus vite." #: search.c:1026 search.c:1120 #, c-format msgid "Phase 1 searching %s" msgstr "* Passe 1* recherche dans %s" #: search.c:1326 #, c-format msgid "Phase 2 searching %s" msgstr "* Passe 2 * recherche dans %s" #: search.c:1241 msgid "Phase 2 starting..." msgstr "Début passe 2 ..." #: interface.c:3788 msgid "" "Please be patient!\n" "\n" "Searching for executables to perform the following functions:\n" " * text editing/viewing\n" " * folder browsing\n" " * web browsing\n" "\n" "The search algorithm uses a set of standard executables for all systems, and " "then attempts to find them on your local disk.\n" "\n" "Once complete, press OK to store the executables." msgstr "" "Veuillez patienter\n" "\n" "Je cherche les programmes installés pour\n" "réaliser ces tâches:\n" "* édition/visualisation de fichiers texte/documents\n" "* navigateur de fichiers\n" "* navigateur Internet\n" "L'algorithme de recherche utilise un ensemble de programmes standard pour " "tous les systèmes, et essaye de les trouver sur votre disque dur local.\n" "Une fois terminé, cliquez sur le bouton [Valider] pour mémoriser les " "résultats." #: savestate.c:1667 msgid "Please email all debug text to cottrela@users.sf.net.\n" msgstr "" "Envoyer SVP le texte de débogage (lire le terminal) à cottrela@users.sf." "net.\n" #: interface.c:3796 msgid "Please wait..." msgstr "Patientez SVP" #: interface.c:733 interface.c:845 msgid "" "Please, type here a word or a segment of a word researched in the file(s).\n" "Don't type spaces." msgstr "" "Veuillez SVP, taper ici le mot entier ou une partie du mot que vous " "recherchez dans le(s) fichier(s)\n" "Ne tapez pas d'espaces." #: interface.c:712 interface.c:815 msgid "" "Please, type here the name or a segment of the name of the file(s).\n" "Don't type spaces." msgstr "" "Veuillez taper ici le nom ou une partie du nom du ou des fichier(s).\n" "Ne tapez pas d'espaces." #: interface.c:2491 interface.c:2540 interface.c:2635 msgid "Possibly once" msgstr "Uniquement une fois" #: interface.c:674 msgid "Print results direct to the configured printer." msgstr "Imprimer directement les résultats sur l'imprimante sélectionnée" #: interface.c:4002 msgid "" "Project Manager:\n" "Adam Cottrell \n" "\n" "Programming:\n" " Adam Cottrell \n" " Salil Joshi \n" " Yousef AlHashemi\n" " Luc Amimer \n" "Artwork:\n" " Peter Cruickshank\n" " Luc Amimer \n" msgstr "" "Direction Projet:\n" "Adam Cottrell \n" "\n" "Programmation:\n" " Adam Cottrell \n" " Salil Joshi \n" " Yousef AlHashemi\n" " Luc Amimer \n" "\n" "Conception artistique:\n" " Peter Cruickshank\n" " Luc Amimer \n" #: interface.c:2894 msgid "Prompt before deleting files" msgstr "Confirmer avant d'effacer les fichiers" #: interface.c:2889 msgid "Prompt before saving state" msgstr "Confirmer avant d'enregistrer les données" #: savestate.c:777 msgid "Ready-research mode with RegEx" msgstr "Prêt--Mode de recherche avec RegEX" #: savestate.c:775 msgid "Ready-research mode with jokers(DOS like)" msgstr "Prêt--Mode de recherche avec Jokers(style DOS)" #: interface.c:785 interface.c:882 msgid "Recurse Folders" msgstr "Rechercher dans les sous-dossiers" #: interface.c:587 msgid "Release _Notes" msgstr "_Notes de version" #: interface.c:3145 msgid "Remove all saved settings (restart required to complete):" msgstr "" "Supprimer la configuration actuelle\n" "(un redémarrage de Searchmonkey est nécessaire)" #: interface.c:3164 msgid "Reset all" msgstr "Tout réinitialiser " #: interface.c:2160 msgid "Reset size/modified options" msgstr "Réinitialiser les options de taille et date de modification" #: interface.c:2163 msgid "Reset the size and modified search criteria." msgstr "" "Réinitialise les critères de recherche 'taille' et 'date de modification'" #: interface.c:922 msgid "Restrict depth:" msgstr "Limiter profondeur sous-dossiers :" #: systemio.c:618 #, c-format msgid "" "Run configuration to set default directory/folder browser:\n" "\"%s\"" msgstr "" "Impossible de lancer un navigateur de fichiers pour ouvrir :\n" "\"%s\"\n" "Rendez-vous dans le menu configuration pour choisir un navigateur de " "fichiers par défaut." #: systemio.c:605 #, c-format msgid "" "Run configuration to set default text editor:\n" "\"%s\"" msgstr "" "Rendez-vous dans le menu Configuration pour \n" "choisir un éditeur par défaut pour :\n" "\"%s\"" #: systemio.c:592 #, c-format msgid "" "Run configuration to set default web-browser:\n" "\"%s\"" msgstr "" "Lancer configuration du navigateur Internet par défaut:\n" "\"%s\"" #: interface.c:411 msgid "S_ort by" msgstr "_Trier par" #: interface.c:304 msgid "Save R_esults to CSV..." msgstr "En_registrer les résultats dans un fichier CSV" #: interface.c:646 msgid "Save Results..." msgstr "Sauvegarder résultats ..." #: interface.c:3678 msgid "Save active/displayed entry only" msgstr "Uniquement la dernière valeur saisie" #: interface.c:3685 msgid "Save all entries (1-entry per line)" msgstr "" "TOUTES les expressions régulières mémorisées dans l'historique\n" " (le fichier contiendra 1 entrée par ligne) " #: interface.c:3193 msgid "Save now" msgstr "Enregistrer maintenant" #: interface.c:3338 msgid "Save results to CSV file..." msgstr "Enregistrer les résultats dans un fichier CSV ..." #: interface.c:3176 msgid "Save settings immediately (normally occurs on exit):" msgstr "" "Enregistrer la configuration actuelle\n" "(sans attendre de quitter le programme):" #: interface.c:3655 msgid "Save the Containing Text drop down entries into a file." msgstr "Enregistre la liste des saisies du champ 'Contenant' dans le fichier" #: interface.c:3648 msgid "Save the File Name drop down entries into a file." msgstr "Enregistre les saisies de la liste déroulante 'Fichiers'." #: interface.c:1287 msgid "Search criteria" msgstr "Critères de recherche" #: interface.c:3793 msgid "Search progress" msgstr "Recherche en cours" #: interface.c:1377 msgid "Search progress bar." msgstr "Barre de progression de la recherche" #: interface.c:3239 interface.c:3245 interface.c:3806 interface.c:3813 msgid "Searching for system files, please wait..." msgstr "Recherche de fichiers systèmes, patientez SVP" #: search.c:861 #, c-format msgid "Searchmonkey : search in %s/" msgstr "searchmonkey : recherche dans %s" #: interface.c:3500 msgid "Searchmonkey style (1-entry per line)" msgstr "Dans le style Searchmonkey(1 -entrée par ligne)" #: interface.c:4065 msgid "Select Date..." msgstr "Sélectionner date ... " #: interface.c:2043 msgid "Select Font" msgstr "Choix de la police de l'aperçu" #: interface.c:1864 msgid "Select a folder" msgstr "Choisir un dossier" #: interface.c:2000 msgid "Select highlighting Colour" msgstr "Choix de la couleur de surlignage" #: interface.c:492 msgid "Settings" msgstr "Configuration" #: interface.c:1189 msgid "Show Line Contents" msgstr "" "Afficher la ligne/paragraphe \n" "contenant le texte recherché" #: interface.c:385 msgid "Show _Statusbar" msgstr "Montrer _barre d'état" #: interface.c:380 msgid "Show _Toolbar" msgstr "Afficher _palette d'outils" #: savestate.c:611 msgid "Size" msgstr "Taille" #: interface.c:942 msgid "Size :" msgstr "Taille :" #: interface.c:2661 msgid "" "Some characters (such as . | ^ $) are reserved in certain circumstances.\n" "\n" "If you know what you are doing with these characters, unselect this checkbox." msgstr "" "Certains caractères(tels que .|^$) sont des caractères de contrôle\n" "et font donc partie de la syntaxe réservée.\n" "Ils ne doivent pas être utilisés sans raison dans une expression régulière.\n" "En cochant cette case, Searchmonkey essayera de corriger lui-même vos " "erreurs.\n" "Si vous êtes sûr(e) de ce que vous voulez faire, et reprendre la main, " "décochez cette case." #: interface.c:2470 interface.c:2519 interface.c:2614 msgid "Space(s)" msgstr "Espace(s)" #: interface.c:1217 msgid "" "Specify the maximum number of content matches within each file to show. Does " "not limit the number of files to search." msgstr "" "Spécifie le nombre maximum d'occurrence du texte à l'intérieur de chaque " "fichier à afficher. Ne limite pas le nombre de fichiers à chercher." #: interface.c:1168 msgid "" "Specify the maximum number of matching files found. Does not limit the " "number of content matches within each file." msgstr "" "Spécifie le nombre maximum d'occurrences de fichiers trouvées.\n" "N'agit pas sur le nombre d'occurrences du texte recherchées\n" "dans chaque fichier." #: interface.c:456 interface.c:658 msgid "Start" msgstr "Démarrer recherche" #: interface.c:661 interface.c:1260 msgid "Start the search!" msgstr "Démarrer la recherche !" #: interface.c:467 msgid "Stop" msgstr "Arrêter recherche" #: interface.c:667 interface.c:1285 msgid "Stop the search!" msgstr "Arrêter la recherche !" #: interface.c:1254 msgid "Switch search from basic to advanced mode." msgstr "Basculer de la recherche basique vers la recherche avancée." #: interface.c:3217 msgid "System" msgstr "Système" #: interface.c:2240 msgid "Test Regular Expression" msgstr "_Tester une expression régulière" #: interface.c:565 msgid "Test Regular Expression..." msgstr "Tester une expression régulière ..." #: interface.c:3108 msgid "Text delimiter:" msgstr "Délimiteur de texte :" #: interface.c:2968 interface.c:2986 #, c-format msgid "Text editor attributes: %f=filename, %d=directory" msgstr "Paramètres de l'éditeur de texte : %f=nom de fichier, %d=dossier" #: interface.c:2466 interface.c:2515 interface.c:2610 msgid "The character" msgstr "Ce caractère" #: interface.c:2469 interface.c:2518 interface.c:2613 msgid "The phrase" msgstr "Cette section" #: interface.c:2654 msgid "This is the expression that will be copied back to the main screen." msgstr "C'est l'expression qui sera copiée au retour vers l'écran principal." #: interface.c:2313 msgid "" "To see the results of your regular expression click apply. Once done, simply " "close the window. Searches are case sensitive.\n" "\n" "Note: this tool will highlight each match(es) found." msgstr "" "Pour voir les résultats de votre expression régulière cliquez sur " "[appliquer]. Ceci fait, fermez la fenêtre. Les recherches sont sensibles à " "la casse\n" "\n" "Note : cet outil mettra en évidence toutes les occurrences " "trouvées." #: interface.c:4021 msgid "Translated by" msgstr "Traduit par" #: savestate.c:620 msgid "Type" msgstr "Type" #: search.c:1649 msgid "Unknown" msgstr "Je ne sais pas" #: interface.c:2568 msgid "Update" msgstr "Mettre à jour " #: interface.c:2572 msgid "Updates a rule that was selected for the modify function." msgstr "Mise à jour d'une règle sélectionnée pour la fonction 'modifier'" #: interface.c:3115 msgid "Use ASCII characters e.g. \" # $ '" msgstr "Utilisez des caractères ASCII p.e. \"#$'" #: interface.c:3101 msgid "Use ASCII or C style construct e.g. , \\t ;" msgstr "Utiliser le style ASCII ou C par exemple, \\t;" #: interface.c:3086 msgid "Use ASCII or C style construct e.g. \\n" msgstr "Utiliser le style ASCII ou C par exemple, \\n" #: interface.c:1121 msgid "Use Single Phase Search" msgstr "Recherche à une seule passe" #: interface.c:1092 msgid "Use Wil_dcard Syntax" msgstr "Permettre l'utilisation de _jokers" #: interface.c:1099 interface.c:1143 msgid "Use _Regular Expression Syntax" msgstr "" "Autoriser uniquement une syntaxe conforme\n" "aux expressions _régulières " #: interface.c:512 msgid "Use _Word Wrap" msgstr "_Retours à la ligne automatiques" #: interface.c:2883 msgid "Use extended regular expressions" msgstr "Autoriser les expressions régulières 'étendues' " #: interface.c:1102 interface.c:1146 msgid "Use regular expression syntax in file search criteria." msgstr "" "Utilise la syntaxe des 'expressions régulières' comme critère de recherche " "des fichiers." #: interface.c:1135 msgid "Use simple search syntax" msgstr "Utiliser une syntaxe simple pour la recherche" #: interface.c:1129 msgid "Use strict contents case matching." msgstr "Respecter une stricte correspondance de la casse du contenu" #: interface.c:1075 msgid "Use strict file case matching." msgstr "Respecter une stricte correspondance de la casse des noms de fichiers" #: interface.c:3463 interface.c:3496 msgid "Use the file in an identical to way to that of the grep -f command." msgstr "Utilise le fichier de la même façon que la commande 'grep -f'" #: interface.c:859 msgid "Use the wizard to create a containing text regular expression..." msgstr "" "Utiliser l'assistant pour générer une expression régulière portant sur le " "texte contenu dans les fichiers" #: interface.c:829 msgid "Use the wizard to create a file name regular expression..." msgstr "" "Lancer l'assistant pour créer une 'expression régulière' portant sur des " "noms de fichiers ..." #: interface.c:962 interface.c:984 msgid "Use this option to choose the file size units." msgstr "" "Utilisez cette option pour choisir les unités de mesure de la taille des " "fichiers.\n" "Vous pouvez mixer les unités." #: interface.c:838 msgid "" "Use this option to restrict your search results to files containing the " "provided text (or pattern)." msgstr "" "Cocher cette option pour restreindre la recherche aux fichiers contenant le " "texte indiqué(ou un motif de recherche)" #: interface.c:949 msgid "" "Use this option to restrict your search results to files that are bigger " "than the provided number of kilo Bytes." msgstr "" "Cocher cette option pour restreindre la recherche aux fichiers dont la " "taille est supérieure au nombre de Ko spécifiés." #: interface.c:971 msgid "" "Use this option to restrict your search results to files that are smaller " "than the provided number of kilo Bytes." msgstr "" "Cocher cette option pour restreindre la recherche aux fichiers dont la " "taille est inférieure au nombre de Ko spécifiés." #: interface.c:1001 msgid "" "Use this option to restrict your search results to files that were last " "modified after the provided time." msgstr "" "Cocher cette option pour restreindre la recherche aux fichiers dont la " "dernière modification est postérieure à la date choisie." #: interface.c:1025 msgid "" "Use this option to restrict your search results to files that were last " "modified before the provided time." msgstr "" "Cocher cette option pour restreindre la recherche aux fichiers dont la " "dernière modification est antérieure à la date choisie." #: interface.c:788 interface.c:887 msgid "Use this option to search all subfolders (recursively)." msgstr "" "Cocher cette option pour chercher récursivement (c-à-d en profondeur ) dans " "les dossiers" #: interface.c:1095 interface.c:1139 msgid "Use wildcard or glob syntax for file search criteria. E.g. *.txt" msgstr "" "Utilisez des jokers ou une syntaxe 'glob' pour les critères de recherche des " "fichiers, par ex. *.txt" #: interface.c:3094 msgid "Value/field separator:" msgstr "Séparateur de champ/valeur :" #: interface.c:401 msgid "Vertical results" msgstr "Présenter les résultats _verticalement" #: interface.c:638 msgid "Write some or all of the search criteria to disk." msgstr "Enregistrer une partie ou la totalité des critères de recherche" #: interface.c:4004 msgid "Written by" msgstr "Ecrit par" #: interface.c:2490 interface.c:2539 interface.c:2634 msgid "Zero or more times" msgstr "Zéro fois ou plus" #: interface.c:3117 msgid "\\\"" msgstr "\\\"" #: interface.c:3088 msgid "\\n" msgstr "\\n" #: interface.c:719 msgid "_Containing:" msgstr "_Contenant :" #: interface.c:365 interface.c:1926 msgid "_Copy (Filename)" msgstr "_Copier le chemin vers le fichier sélectionné" #: interface.c:341 msgid "_Delete (File)" msgstr "E_ffacer ce fichier" #: interface.c:1934 msgid "_Delete File" msgstr "E_ffacer ce fichier" #: interface.c:334 msgid "_Edit" msgstr "_Edition" #: interface.c:1942 msgid "_Explore Folder" msgstr "_Parcourir le dossier sélectionné" #: interface.c:549 msgid "_Export Regular Expression..." msgstr "_Exporter expression(s) régulière(s) ..." #: interface.c:281 msgid "_File" msgstr "_Fichier" #: interface.c:418 msgid "_File Name" msgstr "Nom _Fichier" #: interface.c:591 msgid "_Forums" msgstr "_Forums" #: interface.c:569 msgid "_Help" msgstr "_Aide" #: interface.c:1077 msgid "_Ignore files beginning with '.'" msgstr "_Ignorer les fichiers cachés" #: interface.c:538 msgid "_Import Regular Expression..." msgstr "_Importer expression(s) régulière(s) ..." #: interface.c:423 msgid "_Location" msgstr "Emp_lacement" #: interface.c:438 msgid "_Modified" msgstr "_Modifié" #: interface.c:288 msgid "_New Instance" msgstr "_Nouvelle instance" #: interface.c:449 msgid "_Search" msgstr "_Recherche" #: interface.c:428 msgid "_Size" msgstr "Tai_lle" #: interface.c:583 msgid "_Support" msgstr "_Support" #: interface.c:433 msgid "_Type" msgstr "_Type" #: interface.c:576 msgid "_User Guide" msgstr "G_uide Utilisateur" #: interface.c:373 msgid "_View" msgstr "Affichage" #: savestate.c:1744 msgid "case sensitive; " msgstr "sensible à la casse ;" #: savestate.c:1753 #, c-format msgid "display %d extra lines around match; " msgstr "afficher %d lignes supplémentaires avant et après l'occurrence ;" #: savestate.c:1750 msgid "display 1 extra line around match; " msgstr "affiche une ligne supplémentaire avant et après l'occurrence ;" #: callbacks.c:387 msgid "http://searchmonkey.embeddediq.com/index.php/contribute" msgstr "http://searchmonkey.embeddediq.com/index.php/contribute" #: callbacks.c:395 msgid "http://searchmonkey.embeddediq.com/index.php/support" msgstr "http://searchmonkey.embeddediq.com/index.php/support" #: callbacks.c:1212 msgid "http://searchmonkey.embeddediq.com/index.php/support/index" msgstr "http://searchmonkey.embeddediq.com/index.php/support/index" #: callbacks.c:762 msgid "" "http://searchmonkey.sourceforge.net/index.php/Regular_expression_builder" msgstr "" "http://searchmonkey.sourceforge.net/index.php/Regular_expression_builder" #: callbacks.c:438 msgid "http://sourceforge.net/forum/?group_id=175143" msgstr "http://sourceforge.net/forum/?group_id=175143" #: callbacks.c:1162 msgid "" "https://sourceforge.net/projects/searchmonkey/files/gSearchmonkey%20GTK" "%20%28Gnome%29/0.8.2%20%5Bstable%5D/" msgstr "" "https://sourceforge.net/projects/searchmonkey/files/gSearchmonkey%20GTK" "%20%28Gnome%29/0.8.2%20%5Bstable%5D/" #: savestate.c:1772 msgid "none" msgstr "aucune" #: savestate.c:1766 #, c-format msgid "only showing first %d content matches; " msgstr "afficher uniquement les %d premières occurrences du texte;" #: savestate.c:1763 msgid "only showing first content match; " msgstr "montrer uniquement la première occurrence ;" #: savestate.c:1757 msgid "only showing line numbers; " msgstr "Montrer seulement les n° de lignes" #: callbacks.c:1531 msgid "research mode with RegEx" msgstr "Mode de recherche avec RegEX" #: callbacks.c:1528 msgid "research mode with jokers(DOS like)" msgstr "Mode de recherche avec Jokers(style DOS)" #: interface.c:2284 msgid "sample" msgstr "exemple" #: interface.c:262 msgid "searchmonkey" msgstr "searchmonkey" #: callbacks.c:411 #, c-format msgid "searchmonkey %s" msgstr "searchmonkey %s" #: interface.c:3974 msgid "searchmonkey Credits" msgstr "Crédits de searchmonkey" #: interface.c:2480 interface.c:2529 interface.c:2624 msgid "that occurs" msgstr "présent(e) " #~ msgid "%d %b %Y" #~ msgstr "%b %d %Y" #~ msgid "Expression Builder..." #~ msgstr "Assistant ... " #~ msgid "Ready" #~ msgstr "Prêt" #~ msgid "Error! LessThan file size must be positive value" #~ msgstr "Erreur ! Le critère 'inférieur à...' doit être un nombre positif" #~ msgid "Error! MoreThan file size must be positive value" #~ msgstr "Erreur ! Le critère 'supérieur à...' doit être un nombre positif" #~ msgid "-new-tab %f" #~ msgstr "-nouvel-onglet %f" #~ msgid "Select which data to delete:" #~ msgstr "Sélectionner les données à effacer" #~ msgid "System Calls" #~ msgstr "Appels système" #~ msgid "http://%s.sf.net/index.php?title=V%s_Release_Notes" #~ msgstr "http://%s.sf.net/index.php?title=V%s_Release_Notes" #~ msgid "http://sf.net/forum/?group_id=175143" #~ msgstr "http://sf.net/forum/?group_id=175143" #~ msgid "Size (kB):" #~ msgstr "Taille(Ko) :" #~ msgid "http://sourceforge.net/support/getsupport.php?group_id=175143" #~ msgstr "http://sourceforge.net/support/getsupport.php?group_id=175143" #~ msgid "%s\n" #~ msgstr "%s\n" #~ msgid "Text ends:" #~ msgstr "Le texte se termine par :" #~ msgid "" #~ "Wizard Help\n" #~ "Welcome to the Expression Wizard. This wizard can help you define exactly " #~ "what you are searching for.\n" #~ "searchMonkey uses regular expression to describe the patterns for string " #~ "matching. Regular expressions are very powerful, but they can also be " #~ "daunting for new users.\n" #~ "Some text characters are reserved as regular expression syntax, rather " #~ "than having its general term. This Wizard recognises that, and will " #~ "automatically prompt you if conversion is about to take place.\n" #~ "If you do not know how the text begins or ends just add your criteria in " #~ "the 'Followed by' list. Use drag and drop to re-arrange the rows of the " #~ "middle section.\n" #~ "Expression wizard does not provide all the functionality of regular " #~ "expressions, but if you know how to construct regular expressions you can " #~ "specify it yourself. Just add your regular expression as type 'Phrase' " #~ "in the 'Followed by' list and switch off escapes when prompted.\n" #~ "\n" #~ "To find out more about regular expressions see the XSearch User Guide.\n" #~ "\n" #~ "http://searchMonkey.sourceforge.net/index.php/Regex_wizard" #~ msgstr "" #~ "Wizard Help\n" #~ "Welcome to the Expression Wizard. This wizard can help you define exactly " #~ "what you are searching for.\n" #~ "searchMonkey uses regular expression to describe the patterns for string " #~ "matching. Regular expressions are very powerful, but they can also be " #~ "daunting for new users.\n" #~ "Some text characters are reserved as regular expression syntax, rather " #~ "than having its general term. This Wizard recognizes that, and will " #~ "automatically prompt you if conversion is about to take place.\n" #~ "If you do not know how the text begins or ends just add your criteria in " #~ "the 'Followed by' list. Use drag and drop to re-arrange the rows of the " #~ "middle section.\n" #~ "Expression wizard does not provide all the functionality of regular " #~ "expressions, but if you know how to construct regular expressions you can " #~ "specify it yourself. Just add your regular expression as type 'Phrase' " #~ "in the 'Followed by' list and switch off escapes when prompted.\n" #~ "\n" #~ "To find out more about regular expressions see the XSearch User Guide.\n" #~ "\n" #~ "http://searchMonkey.sourceforge.net/index.php/Regex_wizard" searchmonkey-0.8.3/po/ru_RU.po0000664000175000017500000015327213236164262013166 00000000000000# Searchmonkey - desktop searching with regular expression wizard. # Copyright (C) 2007 # This file is distributed under LGPL # Adam Cottrell , 2007. msgid "" msgstr "" "Project-Id-Version: 0.8.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-08 15:39+0100\n" "PO-Revision-Date: 2018-02-08 15:54+0100\n" "Last-Translator: Stefan Zerkalica \n" "Language-Team: Russian\n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" #: savestate.c:1666 #, c-format msgid "" "\n" "Internal error %d! Unable to highlight line - offset beyond line-end.\n" msgstr "" "\n" "Внутренняя ошибка %d! Невозможно выделить файл - смещение за концом строки.\n" #: main.c:68 msgid "" "\n" "No content searching performed for this file.\n" "\n" "Please ensure containing search was enabled, and that an expression was " "entered prior to starting search.\n" msgstr "" "\n" "Поиск по содержимому не может быть осуществлен для этого файла\n" "\n" "Пожалуйста убедитесь в том, что поиск по содержимому включен и что поисковое " "выражение было введено перед началом поиска.\n" #: savestate.c:1671 #, c-format msgid " Debug: %d) '%s'\n" msgstr " Отладка: %d) '%s'\n" #: savestate.c:1668 #, c-format msgid " Debug: fn='%s'\n" msgstr " Отладка: fn='%s'\n" #: savestate.c:1669 #, c-format msgid " Debug: tc=%d + os=%d || oe=%d\n" msgstr " Отладка: tc=%d + os=%d || oe=%d\n" #: savestate.c:44 #, c-format msgid " %s settings auto-generated - Do not edit!" msgstr "Автоматически созданы настройки для %s - Не редактировать!" #: search.c:1719 msgid " [cancelled]" msgstr " [отменено]" #: search.c:1712 msgid " [inv]" msgstr " [инв]" #: savestate.c:183 msgid " [missing]" msgstr " [нет]" #: search.c:1610 #, c-format msgid "%1.1f KB" msgstr "%1.1f КБ" #: search.c:1612 #, c-format msgid "%1.1f MB" msgstr "%1.1f МБ" #: interface.c:2978 #, c-format msgid "%d" msgstr "%d" #: search.c:1608 #, c-format msgid "%d bytes" msgstr "%d байт" #: search.c:1707 #, c-format msgid "%d file found" msgstr "%d файл найден" #: search.c:1709 #, c-format msgid "%d files found" msgstr "%d файлов найдено" #: interface.c:2969 interface.c:2987 #, c-format msgid "%f" msgstr "%f" #: search.c:1129 #, c-format msgid "%s %s\n" msgstr "%s %s\n" #: systemio.c:1077 #, c-format msgid "%s Error! Unable to duplicate string vector\n" msgstr "Ошибка %s! Невозможно клонировать строковый вектор\n" #: systemio.c:1068 #, c-format msgid "%s Error! Unable to split %s with %c\n" msgstr "Ошибка %s! Невозможно соединить %s с %c\n" #: search.c:1639 #, c-format msgid "%s-type" msgstr "%s-тип" #: search.c:653 search.c:667 #, c-format msgid "%x" msgstr "%x" #: callbacks.c:1018 msgid "(Entry)" msgstr "(величина)" #: callbacks.c:1023 msgid "(Repeat)" msgstr "(повторение)" #: callbacks.c:1013 msgid "(Type)" msgstr "(условие)" #: interface.c:3103 msgid "," msgstr "," #: search.c:1727 msgid "-research mode with RegEx" msgstr "-Режим поиска с RegEX" #: search.c:1724 msgid "-research mode with jokers(DOS like)" msgstr "-Режим поиска с джокерами (как DOS)" #: savestate.c:1776 msgid ".\n" msgstr ".\n" #: callbacks.c:1148 msgid "0%" msgstr "0%" #: systemio.c:557 msgid "100%" msgstr "100%" #: interface.c:2311 msgid "" msgstr "<Скопируйте и вставьте текст примера сюда>" #: search.c:681 msgid "" "Error!\n" "\n" "Dates mismatch ! 'Before than' date must be more recent than 'After " "than' date.\n" "Search can't proceed correctly !\n" "Please check the dates." msgstr "" "ошибка !\n" "\n" "Смешанные даты! Дата «раньше» должна быть более новой, чем дата " "«после».\n" "Поиск не даст правильных результатов\n" "Пожалуйста, проверьте даты." #: search.c:650 msgid "" "Error!\n" "\n" "Invalid 'After'date - format as dd/mm/yyyy or dd mmm yy." msgstr "" "Ошибка! Неправильное поле даты 'После' - формат должен быть в виде " "mm/dd/yyyy или mmm dd yy." #: search.c:664 msgid "" "Error!\n" "\n" "Invalid 'Before' date - format as dd/mm/yyyy or dd mmm yy." msgstr "" "Ошибка! Неправильное поле даты 'До' - формат должен быть в виде mm/" "dd/yyyy или mmm dd yy." #: search.c:630 msgid "" "Error!\n" "\n" "LessThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" "ошибка !\n" "\n" "Размер файла «меньше» должен быть положительным.\n" "Поэтому этот критерий не будет использоваться.\n" "\n" "Проверьте значение и единицы измерения." #: search.c:614 msgid "" "Error!\n" "\n" "MoreThan file size must be positive value\n" "So this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" "Error!\n" "\n" "Размер файла «больше» должен быть положительным.\n" "Поэтому этот критерий не будет использоваться.\n" "\n" "Проверьте значение и единицы измерения." #: search.c:618 search.c:634 msgid "" "Error!\n" "\n" "MoreThan file size must be stricly inferior to LessThan file size.So " "this criteria will not be used.\n" "\n" "Please, check your entry and the units." msgstr "" "ошибка !\n" "\n" "«Более крупный» критерий должен быть строго ниже «меньшего» критерия.\n" "Поэтому этот критерий не будет использоваться.\n" "\n" "Проверьте значение и единицы измерения." #: interface.c:3659 msgid "Export Source" msgstr "Экспорт источника" #: interface.c:3692 msgid "Export Type" msgstr "Тип экспорта" #: interface.c:1151 msgid "File Contents Options" msgstr "Настройки поиска по содержимому" #: interface.c:1107 msgid "File Name Options" msgstr "Настройки имени файла" #: interface.c:3474 msgid "Import Location" msgstr "Куда импортировать" #: interface.c:3507 msgid "Import Type" msgstr "Тип импорта" #: interface.c:2664 msgid "Resulting expression" msgstr "Результирующее выражение" #: interface.c:1235 msgid "Results Options" msgstr "Настройки результатов" #: interface.c:2292 msgid "Sample Text:" msgstr "Текст примера :" #: interface.c:2116 msgid "" "Select which data to delete:\n" "With this dialog, you can control how your entries will be cleared." msgstr "" "Выберите данные для стирания\n" "С этим диалогом, проверите, как ваши данные будут стерта" #: interface.c:2331 msgid "Status:" msgstr "Статус:" #: interface.c:2275 msgid "Test Expression:" msgstr "выражение для проверки" #: interface.c:2259 msgid "" "Test Regular Expressions (RegEx):\n" "With this dialog, you can test a RegEx before using it.\n" "Feel free to type a RegEx and put an example of text to test it." msgstr "" "Проверить регулярное выражение (RegEx)\n" "С этим диалогом, вы можете проверить RegEx перед его использованием\n" "Введите RegEx по вашему выбору, и пример текста для тестирования. " #: interface.c:2456 msgid "Text begins:" msgstr "Начало текста:" #: interface.c:2586 msgid "Text contains" msgstr "Текст содержит" #: interface.c:2600 msgid "Text ends:" msgstr "Текст заканчивается" #: interface.c:2168 msgid "Warning: Once cleared, history cannot be recovered!" msgstr "Внимание: Очищенная история не восстанавливается" #: interface.c:3888 msgid "" "Regular expression power search utility written in GTK+ and licensed " "under GPL v.3" msgstr "" "Утилита поиска по регулярным выражением, написана на GTK+ и лицензирована " "под GPL v.3." #: interface.c:819 msgid "" "RegEx Expression Builder..." msgstr "" "RegEx помощник ..." #: interface.c:848 msgid "" "RegEx Expression Builder..." msgstr "" "RegEx помощник ..." #: systemio.c:198 #, c-format msgid "" "A file named \"%s\" already exists. Are you sure you want to overwrite it?" msgstr "Файл с именем \"%s\" уже существует. Вы хотите его перезаписать ?" #: search.c:882 msgid "Aborting research-Searchmonkey" msgstr "Отменить поиск- Searchmonkey" #: interface.c:3855 msgid "About searchmonkey" msgstr "О searchmonkey" #: savestate.c:145 msgid "About to overwrite save configuration. Do you want to proceed?" msgstr "Перезаписать настройки, продолжать ?" #: interface.c:2690 msgid "Accept the resulting expression, and add it to the search rules." msgstr "Принять результирующее выражение и добавить его в правила поиска." #: interface.c:4019 msgid "" "Adam Cottrell (en_GB)\n" "Luc Amimer (fr)" msgstr "Stefan Zerkalica (ru_RU) completed by Luc Amimer" #: interface.c:2562 msgid "Add" msgstr "Добавить" #: interface.c:631 msgid "Add search criteria from a text file. Similar to the grep -f flag." msgstr "Добавить условие поиска из текстового файла. Аналогично grep -f флагу." #: interface.c:1048 msgid "Advanced" msgstr "Расширенные" #: interface.c:998 msgid "After:" msgstr "После:" #: interface.c:2468 interface.c:2517 interface.c:2612 msgid "Any char except these" msgstr "Любой символ исключая эти" #: interface.c:2465 interface.c:2514 interface.c:2609 msgid "Any character" msgstr "Любой символ" #: interface.c:2471 interface.c:2520 interface.c:2615 msgid "Any numeric character" msgstr "Любая цифра" #: interface.c:2467 interface.c:2516 interface.c:2611 msgid "Any one of these chars" msgstr "Любой из этих символов" #: interface.c:2472 interface.c:2521 interface.c:2616 msgid "Any text character" msgstr "Любой символ текста" #: callbacks.c:1176 msgid "" "Are you sure that you wish to delete the config file, and restart " "searchmonkey?" msgstr "" "Вы уверены, что хотите удалить файл конфигурации и перезапустить " "searchmonkey?" #: systemio.c:804 #, c-format msgid "" "Are you sure you want to delete:\n" "\t'%s'" msgstr "" "Вы хотите удалить:\n" "\t'%s'" #: interface.c:2950 msgid "Attributes" msgstr "Атрибуты" #: interface.c:3762 msgid "Auto Complete" msgstr "Авто завершение" #: interface.c:3045 msgid "Auto search..." msgstr "Автопоиск..." #: interface.c:517 msgid "Auto-size columns" msgstr "Авторазмер колонок" #: interface.c:791 msgid "Basic" msgstr "Базовые" #: interface.c:1022 msgid "Before:" msgstr "До:" #: interface.c:2944 msgid "Binary/Executable" msgstr "Бинарный/Исполняемый" #: interface.c:896 msgid "Browse your file system and select the search directory..." msgstr "Открыть файловую систему и выбрать папку поиска..." #: interface.c:1955 msgid "C_ancel" msgstr "_Отмена" #: systemio.c:845 msgid "Cannot copy full file name as name was not selected." msgstr "Невозможно скопировать полное имя файла. Имя не было выбрано." #: systemio.c:781 msgid "Cannot delete file as name was not selected." msgstr "Невозможно удать файл - не было выбрано имя." #: interface.c:2904 msgid "Check this to allow" msgstr "Отметьте это для включения" #: interface.c:484 msgid "Clear History..." msgstr "Очистить историю..." #: interface.c:2097 msgid "Clear Search History" msgstr "Очистить историю поиска" #: interface.c:2157 msgid "Clear all directories in the \"Folders:\" drop-down list" msgstr "Очистит все папки в списке \"Папки:\"" #: interface.c:2145 msgid "Clear all file names in the \"Files:\" drop-down list" msgstr "Очистит все имена файлов в списке \"Файлы:\"" #: interface.c:2151 msgid "Clear all patterns in the \"Containing:\" drop-down list" msgstr "Очистит все шаблоны в списке \"Содержащие:\"" #: interface.c:2148 msgid "Clear containing text" msgstr "Очистить содержимое" #: interface.c:2142 msgid "Clear file names" msgstr "Очистить имане файлов" #: interface.c:2154 msgid "Clear look in history" msgstr "Очистить историю" #: interface.c:2859 msgid "Configuration" msgstr "Конфигурация" #: savestate.c:79 msgid "" "Configuration files are for a different version of Searchmonkey. This may " "cause errors. Delete old configuration files?" msgstr "" "Файлы настроек для другой версии Searchmonkey. Это может вызвать ошибки. " "Удалить старые файлы настроек ?" #: interface.c:3652 msgid "Containing Text Export Criteria" msgstr "Условия экспорта содержимого" #: interface.c:3467 msgid "Containing Text import" msgstr " Импорт содержимого" #: interface.c:835 msgid "Containing:" msgstr "Содержащие:" #: callbacks.c:1107 msgid "Context Expression Wizard" msgstr "Мастер выражений для содержимого" #: interface.c:2658 msgid "Convert Internals" msgstr "Преобразовывать символы" #: interface.c:3898 msgid "Copyright (c) 2006-2018 Adam Cottrell" msgstr "Копирайт (c) 2006-2018 Adam Cottrell" #: support.c:90 support.c:114 #, c-format msgid "Couldn't find pixmap file: %s" msgstr "Невозможно найти файл с графикой : %s" #: interface.c:649 msgid "Create a CSV file containing a list of results." msgstr "Создать CSV файл, содержащий список результатов." #: interface.c:2566 msgid "Creates a new row in the list with the following rule." msgstr "Создает новую строку в списке с последующим правилом" #: interface.c:3925 msgid "Credits" msgstr "Благодарности" #: interface.c:3121 msgid "Csv Export" msgstr "Экспорт в Csv" #: interface.c:3203 msgid "Current Config file location:" msgstr "Размещение файла настроек:" #: interface.c:3049 msgid "Default Applications" msgstr "программы по умолчанию" #: interface.c:2937 msgid "Default folder explorer:" msgstr "Проводник:" #: interface.c:2930 msgid "Default text editor:" msgstr "Текстовый редактор:" #: interface.c:2956 msgid "Default web browser:" msgstr "Веб браузер:" #: interface.c:2580 msgid "Delete" msgstr "Удалить" #: interface.c:2584 msgid "Deletes an existing row in the rule table." msgstr "Удаляет существующую строку из таблицы правил" #: interface.c:261 msgid "Desktop search to replace find and grep." msgstr "Поиск для рабочего стола на замену find и grep." #: regexwizard.c:100 msgid "Did not match any." msgstr "Нет соответвий." #: interface.c:2683 msgid "Discard any changes." msgstr "Отменить любые изменения." #: interface.c:1321 interface.c:1356 msgid "Displays the matching text lines when the result is selected." msgstr "Показать соответвующие строки текста, когда выбран результатю" #: interface.c:2464 interface.c:2513 interface.c:2608 msgid "Don't know" msgstr "Не знаю" #: interface.c:2554 msgid "" "Each row creates a new part to the rule, with the order reflecting the order " "in which the rule is to be matched." msgstr "" "Каждая строка создает новую часть правила с порядком, как в правиле, " "которому соответвует." #: interface.c:1918 msgid "Edit (File)" msgstr "Редактировать (Файл)" #: interface.c:349 msgid "Edit File" msgstr "Редактировать файл" #: interface.c:724 msgid "Enable contents search to find files with matching content too." msgstr "" "Включить поиск по содержимому для нахождения файлов с соответствующими " "данными." #: interface.c:3079 msgid "End of row separator:" msgstr "Конец разделителя строк:" #: savestate.c:161 #, c-format msgid "Error saving %s: %s\n" msgstr "Ошибка сохранения %s: %s\n" #: callbacks.c:1622 msgid "Error! Invalid 'containing text' regular expression" msgstr "Ошибка! Неправильное регулярное выражение для 'содержимого'" #: callbacks.c:1598 msgid "Error! Invalid 'file name' regular expression" msgstr "Ошибка! Неправильное регулярное выражение для 'имени файла'" #: misc.c:298 search.c:845 msgid "Error! Invalid Containing Text regular expression" msgstr "Ошибка! Регулярное выражение для содержимого ошибочно." #: misc.c:288 search.c:839 msgid "Error! Invalid File Name regular expression" msgstr "Ошибка! Регулярное выражение имени файла задано не верно." #: misc.c:509 search.c:820 msgid "Error! Look In directory cannot be blank." msgstr "Ошибка! Каталог поиска не может быть пустым." #: misc.c:520 search.c:831 msgid "Error! Look In directory is invalid." msgstr "Ошибка! Каталог поиска задан не верно." #: systemio.c:310 systemio.c:419 msgid "Error! No valid file selected." msgstr "Ошибка! Не было выбрано правильных файлов." #: systemio.c:387 msgid "Error! Unable to find first combo entry. Is drop down list blank?" msgstr "Ошибка! Невозможно найти первую область. Выпадающий список пуст?" #: callbacks.c:1182 #, c-format msgid "Error! Unable to remove config file %s.\n" msgstr "Ошибка! Невозможно удалить файл конфигурации %s.\n" #: systemio.c:363 msgid "" "Error! You must select at least one entry in order to save drop down list." msgstr "" "Ошибка! Вы должны выбрать по крайней мере одну область для сохранения " "выпадающего списка." #: interface.c:1252 msgid "Expert Mode" msgstr "Режим эксперта" #: interface.c:3594 msgid "Export Criteria" msgstr "Условия экспорта" #: interface.c:635 msgid "Export Expression..." msgstr "Экспортировать выражение...." #: interface.c:2438 msgid "Expression Wizard" msgstr "Мастер выражений" #: interface.c:2886 msgid "" "Extended regular expressions are recommended as they provide more " "functionality." msgstr "" "Расширенное регулярное выражение рекомендуется, т.к. оно дает больше " "возможностей." #: interface.c:531 msgid "Extras" msgstr "Дополнения" #: callbacks.c:1105 msgid "File Expression Wizard" msgstr "Мастер выражений для файла" #: interface.c:3645 msgid "File Name Export criteria" msgstr "Условия экспорта имени файла" #: interface.c:3460 msgid "File Name import" msgstr "Импорт имени файла" #: interface.c:3438 interface.c:3622 msgid "File Selection" msgstr "Выбраный файл" #: interface.c:2977 #, c-format msgid "File explorer attributes: %f=filename, %d=directory" msgstr "Атрибуты файлового менеджера: %f=имя файла, %d=папка" #: systemio.c:110 msgid "File name" msgstr "Имя файла" #: systemio.c:112 msgid "File size" msgstr "Размер файла" #: systemio.c:113 msgid "File type" msgstr "Тип файла" #: systemio.c:289 msgid "File was empty/invalid." msgstr "Файл был пустым/поврежденным." #: interface.c:713 interface.c:806 msgid "Files:" msgstr "Файлы:" #: interface.c:3022 msgid "Find default executables:" msgstr "Найти исполняемые файлы:" #: interface.c:743 interface.c:869 msgid "Folders:" msgstr "Папки:" #: interface.c:1083 msgid "Follow Symbol _Links" msgstr "Переходить по символьным ссы_лкам" #: interface.c:1086 msgid "Follow Symbolic Links (Only on systems that support them)" msgstr "" "Переходить по символьным ссылкам (Только на системах, поддерживающих их)" #: interface.c:2897 msgid "Force a prompt before any files are deleted" msgstr "Спрашивать перед удалением любых файлов" #: interface.c:2892 msgid "Force a prompt before settings are saved." msgstr "Спрашивать перед сохранением настроек." #: interface.c:2878 msgid "Force single window mode" msgstr "Форсировать однооконный режим" #: regexwizard.c:104 #, c-format msgid "Found %d matches." msgstr "Найдено %d соответвий." #: regexwizard.c:102 msgid "Found 1 match." msgstr "Найдено 1 соответвие." #: interface.c:966 interface.c:988 msgid "Gb" msgstr "гб" #: interface.c:2907 msgid "Global Settings" msgstr "Общие настройки" #: interface.c:3493 msgid "Grep style file (1-entry, OR each line)" msgstr "Grep стиль (1-область. OR каждая строка)" #: interface.c:2677 msgid "Help with the Regular Expression Builder" msgstr "Помощь по создателю регулярных выражений" #: interface.c:1225 msgid "Highlights per line :" msgstr "выделение строк :" #: interface.c:395 msgid "Horizontal results" msgstr "Результаты по горизонтали" #: interface.c:1192 msgid "" "If active, display extra lines around the matching line to help show context " "of match." msgstr "" "Если активно, показывать пустые строки вокруг найденой, что бы лучше увидеть " "соответствие поисковому запросу" #: interface.c:1080 msgid "Ignore hidden files (Unix filesystems only)" msgstr "Игнорировать скрытые файлы (только файловая система Unix)" #: systemio.c:456 #, c-format msgid "" "Illegal escape sequence: '\\%c'.\n" " Valid escape characters are: b n r t \" \\" msgstr "" "не правильная escape-последовательность : '\\%c'.\n" " Правильно: b n r t \" \\" #: interface.c:3410 msgid "Import Criteria" msgstr "Условия импорта" #: interface.c:628 msgid "Import Expression..." msgstr "Импортировать выражение..." #: interface.c:3470 interface.c:3503 interface.c:3688 msgid "Import a file identical to that generated by the export command." msgstr "Импортировать файл, идентичный созданному командой экспорта" #: systemio.c:474 #, c-format msgid "" "Input string expands into non ASCII, or multi-byte key sequence: '%s'.\n" " Please try to use ASCII safe keys" msgstr "" "Строка ввода расширена в не ASCII или много-байтовое представление: '%s'.\n" " Пожалуйста используйте безопасные ASCII символы" #: callbacks.c:755 msgid "Internal Error! Unable to find calling wizard type!" msgstr "Внутренняя ошибка! невозможно найти тип вызываемого мастера" #: interface.c:1067 msgid "Invert Search Expression" msgstr "Инвертировать поисковое выражение" #: interface.c:1070 msgid "Inverts the file name search results i.e. find all becomes find none." msgstr "" "Инвертировать результаты поиска имени файла, т.о. логика выражения найти все " "станет найти ничего" #: interface.c:3681 msgid "Just save the currently displayed entry to a file." msgstr "Сохранять только показываемые в данный момент области в файл" #: interface.c:964 interface.c:986 msgid "Kb" msgstr "кб" #: interface.c:968 msgid "Less than:" msgstr "Меньше чем:" #: interface.c:1213 msgid "Limit Content Highlighting" msgstr "Ограничение выделения контента" #: interface.c:1165 msgid "Limit Match Files" msgstr "Ограничить соотвествие файлов" #: interface.c:925 msgid "Limit files found by selecting maximum tree-depth to search." msgstr "Ограничить кол-во найденых файлов максимальной глубиной дерева поиска." #: savestate.c:1623 savestate.c:1687 #, c-format msgid "Line Number: %d\n" msgstr "Строка номер: %d\n" #: interface.c:1199 msgid "Lines Displayed:" msgstr "Строка показано:" #: interface.c:1301 interface.c:1336 msgid "List of file(s) corresponding to research criteria." msgstr "Список файл(ов), соответствующих критериям поиска" #: savestate.c:602 savestate.c:1395 systemio.c:111 msgid "Location" msgstr "Путь" #: interface.c:3211 msgid "Location of your current searchmonkey configuration settings file." msgstr "Размещение файла текущих настроек searchmonkey." #: interface.c:443 msgid "Mat_ches" msgstr "Соо_тветствия" #: interface.c:1072 interface.c:1126 msgid "Match Case" msgstr "Регистрозавимость" #: interface.c:2900 msgid "Match strings within binary files too" msgstr "Строки результатов у бинарных файлов" #: savestate.c:638 msgid "Matches" msgstr "Соответствий" #: interface.c:1175 msgid "Maximum Hits:" msgstr "Максимальное кол-во найденых:" #: interface.c:954 msgid "Maximum filesize in kBytes/mBytes/gBytes." msgstr "Максимальный размер файла в кБайтах/мб/гб" #: interface.c:965 interface.c:987 msgid "Mb" msgstr "Mb" #: interface.c:976 msgid "Minimum filesize in kBytes/mBytes/gBytes." msgstr "Миинимальный размер файла в кБайтах/мб/гб" #: savestate.c:629 msgid "Modified" msgstr "Изменено" #: systemio.c:114 msgid "Modified date" msgstr "Дата модификации" #: interface.c:994 msgid "Modified:" msgstr "Дата модификации:" #: interface.c:2578 msgid "Modifies an existing row in the rule table." msgstr "Изменяет существующую строку в таблице правил." #: interface.c:2574 msgid "Modify" msgstr "Изменить" #: interface.c:946 msgid "More than:" msgstr "Больше чем:" #: systemio.c:486 #, c-format msgid "" "Multi-byte string entered: '%s'.\n" "Truncating extra character (%c)" msgstr "" "Введена мультибайтовая строка: '%s'.\n" " Обрезаются экстра-символы (%c)" #: main.c:70 msgid "N/A" msgstr "Н/Д" #: savestate.c:593 msgid "Name" msgstr "Имя" #: interface.c:616 msgid "New Instance" msgstr "Копия" #: systemio.c:179 msgid "No results to save!" msgstr "Нет результатов для сохранения!" #: interface.c:2488 interface.c:2537 interface.c:2632 msgid "Once" msgstr "Однажды" #: interface.c:2489 interface.c:2538 interface.c:2633 msgid "One or more times" msgstr "Один или более раз" #: interface.c:357 msgid "Open Folder" msgstr "Открыть папку" #: interface.c:619 msgid "Open a new search window." msgstr "Открыть новое окно поиска" #: interface.c:1017 interface.c:1041 msgid "Open calendar dialog to choose modified date." msgstr "Открыть даилог календаря для выбора даты." #: interface.c:761 msgid "Opens a dialog to find a look in directory." msgstr "Открывает диалог для указания каталога поиска" #: interface.c:1240 interface.c:3512 interface.c:3697 msgid "Options" msgstr "Настройки" #: savestate.c:1729 msgid "Options: " msgstr "Настройки:" #: interface.c:323 msgid "P_rint Setup..." msgstr "Настройка _Печати" #: savestate.c:1621 #, c-format msgid "Paragraph Number: %d\n" msgstr "номер абзаца: %d\n" #: interface.c:3003 msgid "Paste and edit full file name of your preferred file explorer." msgstr "Вставьте и редактируйте полное имя любимого файлового менеджера." #: interface.c:2995 msgid "Paste and edit full file name of your preferred text editor." msgstr "Вставьте и редактируйте полное имя любимого текстового редактора." #: interface.c:3011 msgid "Paste and edit full file name of your preferred web browser." msgstr "Вставьте и редактируйте полное имя любимого веб браузера." #: interface.c:1124 msgid "" "Perform content searching immediately so that results are returned quicker." msgstr "" "Немедленно начинать поиск в содержимом, результаты появятся незамедлительно" #: search.c:1026 search.c:1120 #, c-format msgid "Phase 1 searching %s" msgstr "Фаза 1 поиск %s" #: search.c:1326 #, c-format msgid "Phase 2 searching %s" msgstr "Фаза 2 поиск %s" #: search.c:1241 msgid "Phase 2 starting..." msgstr "Фаза 2 запуск..." #: interface.c:3788 msgid "" "Please be patient!\n" "\n" "Searching for executables to perform the following functions:\n" " * text editing/viewing\n" " * folder browsing\n" " * web browsing\n" "\n" "The search algorithm uses a set of standard executables for all systems, and " "then attempts to find them on your local disk.\n" "\n" "Once complete, press OK to store the executables." msgstr "" "Внимание!\n" "\n" "Идет поиск программ для выполнения следующих действий:\n" " * просмотр/редактирование текста\n" " * открытие папок\n" " * открытие в веб браузере\n" "\n" "Алгоритм поиска использует стандартный набор програм для всех систем и " "попытается найти их на вашем диске\n" "\n" "После завершения нажмите OK для сохраниения результатов." #: savestate.c:1667 msgid "Please email all debug text to cottrela@users.sf.net.\n" msgstr "Пожалуйста, пошлите отладочный текст на емейл cottrela@users.sf.net\n" #: interface.c:3796 msgid "Please wait..." msgstr "Ждите..." #: interface.c:733 interface.c:845 msgid "" "Please, type here a word or a segment of a word researched in the file(s).\n" "Don't type spaces." msgstr "" "пожалуйста, напишите здесь слово или сегмент слова, который вы ищете в " "файле. \n" "не писать пробелы. " #: interface.c:712 interface.c:815 msgid "" "Please, type here the name or a segment of the name of the file(s).\n" "Don't type spaces." msgstr "" "Введите здесь имя или сегмент имени искомого файла (ов).\n" "Не записывайте пробелы." #: interface.c:2491 interface.c:2540 interface.c:2635 msgid "Possibly once" msgstr "Возможно один" #: interface.c:674 msgid "Print results direct to the configured printer." msgstr "Печатать результаты на настроенный принтер." #: interface.c:4002 msgid "" "Project Manager:\n" "Adam Cottrell \n" "\n" "Programming:\n" " Adam Cottrell \n" " Salil Joshi \n" " Yousef AlHashemi\n" " Luc Amimer \n" "Artwork:\n" " Peter Cruickshank\n" " Luc Amimer \n" msgstr "" "Менеджер проекта:\n" "Adam Cottrell \n" "\n" "Программирование:\n" " Adam Cottrell \n" " Salil Joshi \n" " Yousef AlHashemi\n" " Luc Amimer \n" "\n" "Дизайн:\n" " Peter Cruickshank\n" " Luc Amimer \n" #: interface.c:2894 msgid "Prompt before deleting files" msgstr "Спрашивать перед удалением файлов" #: interface.c:2889 msgid "Prompt before saving state" msgstr "Спрашивать перед сохранением" #: savestate.c:777 msgid "Ready-research mode with RegEx" msgstr "готовый-Режим поиска с RegEX" #: savestate.c:775 msgid "Ready-research mode with jokers(DOS like)" msgstr "готовый-Режим поиска с джокерами (как DOS)" #: interface.c:785 interface.c:882 msgid "Recurse Folders" msgstr "Рекурсивный обход каталогов" #: interface.c:587 msgid "Release _Notes" msgstr "За_метки о релизе" #: interface.c:3145 msgid "Remove all saved settings (restart required to complete):" msgstr "Удалить все сохраненные настройки (необходим перезапуск):" #: interface.c:3164 msgid "Reset all" msgstr "Сбросить все" #: interface.c:2160 msgid "Reset size/modified options" msgstr "Сбросить настройки размер/изменено" #: interface.c:2163 msgid "Reset the size and modified search criteria." msgstr "Сбросить условия поиска размер и дату изменения" #: interface.c:922 msgid "Restrict depth:" msgstr "Ограничить глубину:" #: systemio.c:618 #, c-format msgid "" "Run configuration to set default directory/folder browser:\n" "\"%s\"" msgstr "" "Настройте проводник по-умолчанию:\n" " \"%s\"" #: systemio.c:605 #, c-format msgid "" "Run configuration to set default text editor:\n" "\"%s\"" msgstr "" "Настройте текстовый редактор по-умолчанию:\n" " \"%s\"" #: systemio.c:592 #, c-format msgid "" "Run configuration to set default web-browser:\n" "\"%s\"" msgstr "" "Настройте веб-браузер по-умолчанию:\n" " \"%s\"" #: interface.c:411 msgid "S_ort by" msgstr "С_ортировать по" #: interface.c:304 msgid "Save R_esults to CSV..." msgstr "Сохранить р_езультаты в CSV..." #: interface.c:646 msgid "Save Results..." msgstr "Сохранить" #: interface.c:3678 msgid "Save active/displayed entry only" msgstr "Сохранять только активные/показываемые области" #: interface.c:3685 msgid "Save all entries (1-entry per line)" msgstr "Сохранить все области (1-область на файл)" #: interface.c:3193 msgid "Save now" msgstr "Сохранить" #: interface.c:3338 msgid "Save results to CSV file..." msgstr "Сохранить результаты в файл CSV" #: interface.c:3176 msgid "Save settings immediately (normally occurs on exit):" msgstr "Сохранить настройки немедленно (обычно это происходит на выходе):" #: interface.c:3655 msgid "Save the Containing Text drop down entries into a file." msgstr "Сохранить области найденого содержимого в файл" #: interface.c:3648 msgid "Save the File Name drop down entries into a file." msgstr "Сохранить области имени файла в файл" #: interface.c:1287 msgid "Search criteria" msgstr "Условия поиска" #: interface.c:3793 msgid "Search progress" msgstr "Прогресс поиска" #: interface.c:1377 msgid "Search progress bar." msgstr "Прогресс поиска." #: interface.c:3239 interface.c:3245 interface.c:3806 interface.c:3813 msgid "Searching for system files, please wait..." msgstr "Поиск системных файлов..." #: search.c:861 #, c-format msgid "Searchmonkey : search in %s/" msgstr "searchmonkey : искать в %s" #: interface.c:3500 msgid "Searchmonkey style (1-entry per line)" msgstr "Стиль Searchmonkey (1-область на файл)" #: interface.c:4065 msgid "Select Date..." msgstr "Выберите дату..." #: interface.c:2043 msgid "Select Font" msgstr "Выбрать шрифт" #: interface.c:1864 msgid "Select a folder" msgstr "Укажите папку" #: interface.c:2000 msgid "Select highlighting Colour" msgstr "Выберите цвет подсветки" #: interface.c:492 msgid "Settings" msgstr "Настройки" #: interface.c:1189 msgid "Show Line Contents" msgstr "Показать содержимое строк" #: interface.c:385 msgid "Show _Statusbar" msgstr "Показать строку _статуса" #: interface.c:380 msgid "Show _Toolbar" msgstr "Показать _Панель" #: savestate.c:611 msgid "Size" msgstr "Размер" #: interface.c:942 msgid "Size :" msgstr "Размер :" #: interface.c:2661 msgid "" "Some characters (such as . | ^ $) are reserved in certain circumstances.\n" "\n" "If you know what you are doing with these characters, unselect this checkbox." msgstr "" "Некоторые символы ( напр. . | ^ $) зарезервированны.\n" "\n" "Если вы не знаете, что они делают, снимите галку с этого чекбокса." #: interface.c:2470 interface.c:2519 interface.c:2614 msgid "Space(s)" msgstr "Пробел(ы)" #: interface.c:1217 msgid "" "Specify the maximum number of content matches within each file to show. Does " "not limit the number of files to search." msgstr "" "Указать максимальное кол-во строк найденных результатов. Не ограничивает кол-" "во файлов для поиска." #: interface.c:1168 msgid "" "Specify the maximum number of matching files found. Does not limit the " "number of content matches within each file." msgstr "" "Максимальное число найденых файлов, не ограничивает число соответствий в " "содержимом каждого файла." #: interface.c:456 interface.c:658 msgid "Start" msgstr "Старт" #: interface.c:661 interface.c:1260 msgid "Start the search!" msgstr "Запустить поиск!" #: interface.c:467 msgid "Stop" msgstr "Стоп" #: interface.c:667 interface.c:1285 msgid "Stop the search!" msgstr "Остановить поиск!" #: interface.c:1254 msgid "Switch search from basic to advanced mode." msgstr "Переключить поиск с базового на расширенный режим" #: interface.c:3217 msgid "System" msgstr "Система" #: interface.c:2240 msgid "Test Regular Expression" msgstr "Проверить регулярное выражение" #: interface.c:565 msgid "Test Regular Expression..." msgstr "Тестировать регулярное выражение" #: interface.c:3108 msgid "Text delimiter:" msgstr "Разделитель текста:" #: interface.c:2968 interface.c:2986 #, c-format msgid "Text editor attributes: %f=filename, %d=directory" msgstr "Атрибуты текстового редактора: %f=имя файла, %d=папка" #: interface.c:2466 interface.c:2515 interface.c:2610 msgid "The character" msgstr "Символ" #: interface.c:2469 interface.c:2518 interface.c:2613 msgid "The phrase" msgstr "Фраза" #: interface.c:2654 msgid "This is the expression that will be copied back to the main screen." msgstr "Это выражение, которое будет скопировано обратно в главное окно." #: interface.c:2313 msgid "" "To see the results of your regular expression click apply. Once done, simply " "close the window. Searches are case sensitive.\n" "\n" "Note: this tool will highlight each match(es) found." msgstr "" "Что бы увидеть результат регулярного выражения, нажмите применить. Поиск " "чувствителен к регистру букв.\n" "это сделано, закройте окно. поиск чувствителен к регистру\n" "Замечание: здесь будет выделено все вхождения" #: interface.c:4021 msgid "Translated by" msgstr "Переведено" #: savestate.c:620 msgid "Type" msgstr "Тип" #: search.c:1649 msgid "Unknown" msgstr "Неизвестно" #: interface.c:2568 msgid "Update" msgstr "Обновить" #: interface.c:2572 msgid "Updates a rule that was selected for the modify function." msgstr "Обновляет правило, которое было выбрано для изменения функции." #: interface.c:3115 msgid "Use ASCII characters e.g. \" # $ '" msgstr "Использовать ASCII символы, например \" # $ '" #: interface.c:3101 msgid "Use ASCII or C style construct e.g. , \\t ;" msgstr "Использовать конструкции ASCII или в C стиле, например , \\t ;" #: interface.c:3086 msgid "Use ASCII or C style construct e.g. \\n" msgstr "Использовать конструкции ASCII или в C стиле, например \\n" #: interface.c:1121 msgid "Use Single Phase Search" msgstr "Одиночная фаза поиска" #: interface.c:1092 msgid "Use Wil_dcard Syntax" msgstr "_Масочный синтаксис" #: interface.c:1099 interface.c:1143 msgid "Use _Regular Expression Syntax" msgstr "Синтаксис _регулярных выражений" #: interface.c:512 msgid "Use _Word Wrap" msgstr "Переносить сл_ова" #: interface.c:2883 msgid "Use extended regular expressions" msgstr "Использовать расширенное регулярное выражение" #: interface.c:1102 interface.c:1146 msgid "Use regular expression syntax in file search criteria." msgstr "Использование регулярных выражений для ввода условий поиска файла" #: interface.c:1135 msgid "Use simple search syntax" msgstr "Простой синтаксис поиска" #: interface.c:1129 msgid "Use strict contents case matching." msgstr "Более точный поиск по содержимому с учетом регистра." #: interface.c:1075 msgid "Use strict file case matching." msgstr "Использовать точный поиск в файлах" #: interface.c:3463 interface.c:3496 msgid "Use the file in an identical to way to that of the grep -f command." msgstr "Использование файла идентично выводу команды grep -f" #: interface.c:859 msgid "Use the wizard to create a containing text regular expression..." msgstr "" "Используйте этот мастер, что бы создать регулярное выражение для содержимого" #: interface.c:829 msgid "Use the wizard to create a file name regular expression..." msgstr "Используйте мастер для создания регулярного выражения имени файла..." #: interface.c:962 interface.c:984 msgid "Use this option to choose the file size units." msgstr "Используйте эту опцию для выбора части размера файла" #: interface.c:838 msgid "" "Use this option to restrict your search results to files containing the " "provided text (or pattern)." msgstr "" "Используйте эту настройку для ограничения результатов поиска файлами, " "содержащими искомый текст (или шаблон)." #: interface.c:949 msgid "" "Use this option to restrict your search results to files that are bigger " "than the provided number of kilo Bytes." msgstr "" "Используйте эту настройку для ограничения поисковых результатов файлами, чей " "размер больше указанного числа килобайт." #: interface.c:971 msgid "" "Use this option to restrict your search results to files that are smaller " "than the provided number of kilo Bytes." msgstr "" "Используйте эту настройку для ограничения поисковых результатов файлами, чей " "размер меньше указанного числа килобайт." #: interface.c:1001 msgid "" "Use this option to restrict your search results to files that were last " "modified after the provided time." msgstr "" "Используйте эту настройку для ограничения поисковых результатов файлами, с " "датой изменения после указанной даты." #: interface.c:1025 msgid "" "Use this option to restrict your search results to files that were last " "modified before the provided time." msgstr "" "Используйте эту настройку для ограничения поисковых результатов файлами, с " "датой изменения до указанной даты." #: interface.c:788 interface.c:887 msgid "Use this option to search all subfolders (recursively)." msgstr "Используйте эту настройку для поиска во всех подпапках (рекурсивно). " #: interface.c:1095 interface.c:1139 msgid "Use wildcard or glob syntax for file search criteria. E.g. *.txt" msgstr "Использование маскок для ввода условий поиска файла, например *.txt" #: interface.c:3094 msgid "Value/field separator:" msgstr "Разделитель значение/поле" #: interface.c:401 msgid "Vertical results" msgstr "Результаты по вертикали" #: interface.c:638 msgid "Write some or all of the search criteria to disk." msgstr "Записать некоторые из поисковых условий на диск." #: interface.c:4004 msgid "Written by" msgstr "Написано " #: interface.c:2490 interface.c:2539 interface.c:2634 msgid "Zero or more times" msgstr "Ноль или более раз" #: interface.c:3117 msgid "\\\"" msgstr "\\\"" #: interface.c:3088 msgid "\\n" msgstr "\\n" #: interface.c:719 msgid "_Containing:" msgstr "_Содержащие:" #: interface.c:365 interface.c:1926 msgid "_Copy (Filename)" msgstr "_Копировать (Имя файла)" #: interface.c:341 msgid "_Delete (File)" msgstr "_Удалить (Файл)" #: interface.c:1934 msgid "_Delete File" msgstr "_Удалить файл" #: interface.c:334 msgid "_Edit" msgstr "_Редактировать" #: interface.c:1942 msgid "_Explore Folder" msgstr "_Открыть папку" #: interface.c:549 msgid "_Export Regular Expression..." msgstr "_Экспортировать регулярное выражение" #: interface.c:281 msgid "_File" msgstr "_Файл" #: interface.c:418 msgid "_File Name" msgstr "Имя _файла" #: interface.c:591 msgid "_Forums" msgstr "_Форумы" #: interface.c:569 msgid "_Help" msgstr "Помо_щь" #: interface.c:1077 msgid "_Ignore files beginning with '.'" msgstr "_Игнорировать файлы с '.' в начале" #: interface.c:538 msgid "_Import Regular Expression..." msgstr "_Импортировать регулярное выражение" #: interface.c:423 msgid "_Location" msgstr "_Размещение" #: interface.c:438 msgid "_Modified" msgstr "_Дата модификации" #: interface.c:288 msgid "_New Instance" msgstr "_Копия" #: interface.c:449 msgid "_Search" msgstr "_Поиск" #: interface.c:428 msgid "_Size" msgstr "Р_азмер" #: interface.c:583 msgid "_Support" msgstr "Поддер_жка" #: interface.c:433 msgid "_Type" msgstr "_Тип" #: interface.c:576 msgid "_User Guide" msgstr "_Руководство пользователя" #: interface.c:373 msgid "_View" msgstr "_Просмотреть" #: savestate.c:1744 msgid "case sensitive; " msgstr "регистрозависимый; " #: savestate.c:1753 #, c-format msgid "display %d extra lines around match; " msgstr "показывать %d лишних строк вокруг соответвия; " #: savestate.c:1750 msgid "display 1 extra line around match; " msgstr "показывать 1 лишнюю строку вокруг соответвия; " #: callbacks.c:387 msgid "http://searchmonkey.embeddediq.com/index.php/contribute" msgstr "http://searchmonkey.embeddediq.com/index.php/contribute" #: callbacks.c:395 msgid "http://searchmonkey.embeddediq.com/index.php/support" msgstr "http://searchmonkey.embeddediq.com/index.php/support" #: callbacks.c:1212 msgid "http://searchmonkey.embeddediq.com/index.php/support/index" msgstr "http://searchmonkey.embeddediq.com/index.php/support/index" #: callbacks.c:762 msgid "" "http://searchmonkey.sourceforge.net/index.php/Regular_expression_builder" msgstr "" "http://searchmonkey.sourceforge.net/index.php/Regular_expression_builder" #: callbacks.c:438 msgid "http://sourceforge.net/forum/?group_id=175143" msgstr "http://sourceforge.net/forum/?group_id=175143" #: callbacks.c:1162 msgid "" "https://sourceforge.net/projects/searchmonkey/files/gSearchmonkey%20GTK" "%20%28Gnome%29/0.8.2%20%5Bstable%5D/" msgstr "" "https://sourceforge.net/projects/searchmonkey/files/gSearchmonkey%20GTK" "%20%28Gnome%29/0.8.2%20%5Bstable%5D/" #: savestate.c:1772 msgid "none" msgstr "ничего" #: savestate.c:1766 #, c-format msgid "only showing first %d content matches; " msgstr "показывать только первые %d соответвий" #: savestate.c:1763 msgid "only showing first content match; " msgstr "показывать только первое соответвие; " #: savestate.c:1757 msgid "only showing line numbers; " msgstr "показывать только номера строк; " #: callbacks.c:1531 msgid "research mode with RegEx" msgstr "Режим поиска с RegEX" #: callbacks.c:1528 msgid "research mode with jokers(DOS like)" msgstr "Режим поиска с джокерами (как DOS)" #: interface.c:2284 msgid "sample" msgstr "пример" #: interface.c:262 msgid "searchmonkey" msgstr "searchmonkey" #: callbacks.c:411 #, c-format msgid "searchmonkey %s" msgstr "searchmonkey %s" #: interface.c:3974 msgid "searchmonkey Credits" msgstr "Благодарности searchmonkey" #: interface.c:2480 interface.c:2529 interface.c:2624 msgid "that occurs" msgstr "и встречается" #~ msgid "%d %b %Y" #~ msgstr "%b %d %Y" #~ msgid "Expression Builder..." #~ msgstr "Создатель выражений..." #~ msgid "Ready" #~ msgstr "Готов" #~ msgid "Error! LessThan file size must be positive value" #~ msgstr "Ошибка! Значение поля 'Меньше чем' должно быть положительным" #~ msgid "Error! MoreThan file size must be positive value" #~ msgstr "Ошибка! Значение поля 'Больше чем' должно быть положительным" #~ msgid "-new-tab %f" #~ msgstr "-new-tab %f" #~ msgid "Select which data to delete:" #~ msgstr "Укажите данные для удаления:" #~ msgid "System Calls" #~ msgstr "Системные вызовы" #~ msgid "http://%s.sf.net/index.php?title=V%s_Release_Notes" #~ msgstr "http://%s.sf.net/index.php?title=V%s_Release_Notes" #~ msgid "http://sf.net/forum/?group_id=175143" #~ msgstr "http://sf.net/forum/?group_id=175143" #~ msgid "Size (kB):" #~ msgstr "Казмер (кБ):" #~ msgid "http://sourceforge.net/support/getsupport.php?group_id=175143" #~ msgstr "http://sourceforge.net/support/getsupport.php?group_id=175143" #~ msgid "%s\n" #~ msgstr "%s\n" #~ msgid "Text ends:" #~ msgstr "Текст оканчивается:" #~ msgid "Select Folder..." #~ msgstr "Выбрать папку" searchmonkey-0.8.3/po/ChangeLog0000664000175000017500000000015513236161317013331 0000000000000022-11-2006 Adam Cottrell * Added example en_GB.po and symbolic link en_GB.UTF-8.po