@H__PAGEZEROx__TEXT``__text__TEXT g" __symbol_stub1__TEXT6@6__stub_helper__TEXT88__cstring__TEXT<&<__const__TEXTbb__unwind_info__TEXTs$s__eh_frame__TEXT `x__DATA`P`__nl_symbol_ptr__DATA`@``__la_symbol_ptr__DATA@`@`h__program_vars__DATA@c(@c__const__DATAhchc__data__DATAcDc__bss__DATAT__common__DATA8H__LINKEDIT` V"0 xx 8&Xx 0 P-- f /usr/lib/dyldA'~4kb*  8}/usr/lib/libSystem.B.dylibjHHH}HuHHHH9uHl!"UH9|&+F9G|!F9G|F 9G |øøfUH9|05F9G|&+F9G|!F 9G |F9G|øøUHAHL`ME1ҋh~yT E1f.AHE9|A1Ʌ6L`AHAHcAAT 9AAD9h~ L`DhLJp"H@UHDh1E~1L`IT 11fHcIcHD9uIcHHH?HDfDUHATSHL%IHH5m&I<$1 HXt`I $ H=Q&!H`t,I $ H=8&[A\ [A\DfDH`uI $ H=% HXnfDfDUHAVAUATSIIHFx01҅~&HH 1fDfD19H9uH5%L1IUJ0~TE11DfDHB <t+H HrHB8HLH5AL1IUAHD9b0L[A\A]A^UHAWAVAUATSH8H}uHUIHQE1DR0E~}EE1DME~[O,?Le1#fIVHB B<8AI;]t,HB8J4(I<$DE芾DEtIVI;]uEIE9B0DH5f$H}1}L}EIVE1E1r0~dK$HB8H4I? u3IVHB B t&HBHR8HLH5z@H}1UIVAID9j0EIE9EuHEH8[A\A]A^A_fUHATSHH1H&H5iH9IĀ; v IH H5#L1 tH5~#L1h tH5g#L1IuodtH5S#L1#ytLLG[A\fDH5"L1{f.HH5"L1 HH5x"L1xH H5>"L1XH H5"L18mHH5!L1@HH5!L1HH5!H1HH5"L1HtH5!L1HH5!L1xjHH5!L1X=UHAUATSHIH=УHHHItest_paiLf@r1[HHHHx MtHHH0L[#HHHxH5fHHH= Hٺ+H= HٺH=!HٺH=!HٺH= iHٺH= PHٺ H= 7H H5 H1HHHH5;H1HٺH=NHٺH=LHٺH=HٺH= HٺH=tHٺH=[HٺH=BHٺ H=c)HH5H1H|H5H1H!HrHHIdali_paiLf@r1HHDHHxMt!H(HH0Lސ^HHHxH5%=xHHH5H1HٺH=>4HٺH=HٺH=kHٺH=gHٺH=HٺH=HٺH=)Hٺ H=H<H5>H1=H،H56H1%H}HHHImustang_L@pair@ 1=HHHHxMt!HHH0L5]H^HHxH5|;ϧHHmH5H1tHٺH=HٺH=rHٺH=YHٺH=@HٺH=F'HٺH=DHٺH=Hٺ H=HH5H1HH5H1|H}H%HHHTMalign_H8@pair@ 1蔉HHHHx>Mt!HHH0L茍\HHHxH59&HH H5=H1HٺH=HٺH=7HٺH=HٺH=HٺH=~HٺH=eHٺH=LHEH5H1HH5H1Hٺ H==H+|H|HHHcdna_fasH0@t_paf@ ir@1HHCHHxMt!H'HH0L݋ZHHHxH5$8wHHH=}KHٺH=2HٺH=HٺH=HٺH=Hٺ H=HH5H1HKH5H1nHzHHHHcdna_cfaHHst_pairHP1胆HHHHx-Mt!HHH0L{]HHHxH56HHH=6HٺH=9HٺH=5HٺH=+HٺH=&Hٺ H=!lH#H5%H1$HqJH5H1 HdyHHHIblast_msL f@a1)HHHHxMt!HkHH0L!\HJHHxH5h5軡HH H52H1`HٺH=6wHٺH=1^HٺH=EHٺH=,HٺH=rHٺH=Hٺ H=HBH5H1HH5H1HwH*HHHclustalwH@2_paf@ ir@1蓃HHHHx=Mt!HHH0L苇#ZHHHxH53%HHH5H1HٺH=HٺH=1HٺH=H|H5H1gHdH5H1OLLLLH5H11Hٺ H=HH.H5H1HH5H1H@vHHHIclustalwL@2_msf@ a1HH\HHxMt!H@HH0L.XHHHxH5=2萞HHcH5%H15HٺH=LHٺH=3HٺH=LHH5KH1HH5IH1LLLH5FH1Hٺ H=hHH5lH1kH@H5dH1SHtHHHIclustalwL@_paif@ r1iHHǾHHxMt!HHH0LaIVHHHxH50HHH5H1HٺH=HٺH=HٺH=HRH5H1=H:H5H1%L"LLH5H1Hٺ H=HH5H1H.H5H1HsHgHHIclustalwL@_msa@ 1~HH4HHxMt!HHH0L΂VTHHHxH5/hHH;H5H1 HٺH=A$HٺH= HٺH=$HH5#H1HH5!H1LLLH5H1tHٺ H=@HqH5DH1CHH-H5<H1+HqHԻH HImafftdefL@_paif@ r1A}HHH HxMt!HH H0L9qRHbH HxH5-әHHH=HH5H1_HٺH=vHٺH=]Hٺ H=DHٺH=w+Hٺ H=pHٺH=eHٺ H=HH5H1HEH5H1HoH)H(HHmafftdefH8@_msa@ 1{HHH(HxBMt!HڹH(H0LxPHH(HxH5+*HHH=HH5H1HٺH=FHٺH=HٺH=*HٺH=Hٺ H=iHٺH=PHٺ H=7H(H5H1HH5H1H/nHH0HHmafft_paH0f@ir@ 1yHHNH0HxMt!H2H0H0L}[HH0HxH5/*肖HHH=:VHGH5uH1HٺH=%HٺH=> Hٺ&H=HٺH=&Hٺ H=HٺH=Hٺ H=DHH5HH1GHH5@H1/HlHضH8HHmafft_msHf@a1LxHHH8HxMt!HH8H0LD|XHmH8HxH5(ޔHHH=HH5H1jHٺH=HٺH=hHٺ&H=OHٺH=6Hٺ H={HٺH=pHٺ H=Hٺ H=HH5H1H7H5H1rHjHH@HHmafftjttH@_paif@ r1vHHH@Hx2Mt!HʴH@H0LzVHH@HxH5&HHH5&H1HٺH=HٺH=&HٺH=HٺH=Hٺ H=rHٺ0H=6YHٺH=@Hٺ H='HH5H1HH5H1HiHpHHHImafftjttL @_msa@ 1tHH=HHHxMt!H!HHH0LxTHHHHxH5%qHHOH5}H1HٺH=-HٺH=HٺH=-HٺH=.Hٺ H='Hٺ0H=HٺH=Hٺ H=3~HoH57H16HH5/H1HvgHDZHPHHmafftginH@s_paf@ ir@10sHHHPHxMt!HrHPH0L(wRHQHPHxH5o#HHH=zHH5H1NHٺH=eHٺH=~LHٺ'H=H3HٺH=fHٺ H=_HٺH=THٺ H=HH5H1H4H5H1oHeHHXHImafftginL@s_msf@ a1qHHHXHx/Mt!HǯHXH0L}uPHHXHxH5!HHH=HH5 H1HٺH=3HٺH=Hٺ'H=HٺH=oHٺ H=VHٺH==Hٺ H=$HH5H1HH5H1HdHmH`HIdialigntL@x_paf@ ir@1oHH4H`HxMt!HH`H0LsNHH`HxH5 hHHH5H1 HٺH=$HٺH=t HٺH=$H=lh?HXH5hH1HٺH=HٺH==Hٺ&H=8{Hٺ H=bHH5H1H"H5H1HZbHHhHIdialigntL@x_msf@ a1nHHvHhHxMt!HZHhH0LrRH9HhHxH5W誊HHH5H1OHٺH=fHٺH=MHٺH=f4H=f0>HH5H1HٺH=;HٺH=Hٺ&H=zHٺ H=YHH5]H1\HdH5UH1DH`HHpHIdialigntL@_paif@ r1ZlHHHpHxMt!HHpH0LRpjQH{HpHxH5HH H5 H1HٺH=HٺH=HٺH=vH=:e<HH5H1HٺH=}1HٺH=Hٺ&H=Hٺ H=HH5H1HH5H1H^H/HxHHdialigntH8@_msa@ 1jHHHxHxHMt!HHxH0LnNHHxHxH50HHNH5dH1HٺH=[HٺH=LHٺH=H=4~c:H H50H1^HٺH=uHٺH=\Hٺ&H=CHٺ H=*H[H5H1HH5H1H"]HsHHHpoa_pairH0@1hHHGHHxMt!H+HH0LlKH HHxH5({HHYH5zH1 HٺH=7HٺH=HٺH=7HٺH=IHٺH=BHٺH=FH5TH=Za9H 9H?H5JH1PHٺ H=gHXH5 H1H*H5H1H_[HHHHpoa_msaH1*gHHHHxMt!HlHH0L"kJHKHHxH5i較HHH5H1aHٺH=xHٺH=_HٺH=xFHٺH=-HٺH=HٺH=H5H=_7H zHH5H1Hٺ H=]HH5aH1`HkH5YH1HHYHHHHprobconsH@_paif@ r1^eHHHHxMt!HHH0LVi8HHHxH5HHH5H1HٺH=HٺH=HٺH=zHٺ H=aHٺH=HHٺ H=/1xW HH5iht1^W HH5OhGQHٺH=HH5H1HH5H1~HWH'HHIprobconsL @_msa@ 1cHHHHx@Mt!HءHH0LgV7HHHxH5(HHH5 H1HٺH=]HٺH=HٺH=Hٺ H=HٺH=Hٺ H=g1U HH5ft1U HH5<f_OHٺH=2HH5H1H;H5H1HVH_HHHprobconsHIRNA_pairLX@1aHH%HHxqMt!H HH0LeCHHHxH5Y~HH%H5<H1HٺH=~HٺH=.HٺH=/Hٺ H=(HٺH=Hٺ H=MHٺH=H^H58H17HH50H1HwTHȞHHIprobconsLIRNA_msaLH14`HHHHxMt!HvHH0L,dTBHUHHxH5s|HHH5H1kHٺH=HٺH=iHٺH=PHٺ H=7HٺH=Hٺ H=HٺH=HH5H1HH5H1HRH5HHImuscle_pL@air1^HHHHxRMt!HHH0LbAHɜHHxH5:{HHyH5H1HٺH=HٺH=FHٺH=HٺH=KHٺH=GHٺ H=.yHH52H11H H5*H1HqQH›HHHmuscle_mH8f@sa@ 12]HHHHxMt!HtHH0L*a?HSHHxH5q yHHH5H1iHٺH= HٺH=gHٺH=NHٺH=5HٺH=Hٺ H=HUH5H1HH5H1HOHLHHHmuscle_pH0@air1[HHHHxiMt!HHH0L__3HHHxH5 QxHHH5H1HٺH= HٺH=]HٺH= ۿHٺH=b¿HٺH=^詿Hٺ H=E萿HH5IH1HH7H5AH10HNH٘HHHmus4_msaH@1OZHHHHxMt!HHH0LG^?2HpHHxH5 vHH H57H1膾HٺH=o蝾HٺH=脾HٺH=kHٺH=5RHٺH=59Hٺ H= HrH5H1ؽHH5H1HMHiHHHmus4_paiHf@r1XHH;HHx臾Mt!HHH0L\1HHHxH5 ouHHH5dH1HٺH=+HٺH={HٺH=+HٺH=HٺH=ǼHٺ H=c讼HH5gH1fHH5_H1NHKHHHImuscle_mL f@sa@ 1gWHHŕHHxMt!HHH0L_[/HHHxH5sHH8H5OH1螻HٺH=B赻HٺH=蜻HٺH=胻HٺH= jHٺH=QHٺ H=8HH5H1HH5H1غH0JHHHHt_coffeeH@_paif@ r1UHHLHHx蘻Mt!H0HH0LY.HHHxH5-rHHH=~THH5H1 HٺH=#HٺH=< HٺH=ZHٺH=ZعHٺ H=t迹HH5xH1wHH5pH1_HHHHHIt_coffeeL@_msa@ 1wTHHՒHHx!Mt!HHH0LoX-HHHxH5 qHHH=ݸHH5 H1蕸HٺH=%謸HٺH=蓸HٺH=zHٺH=aHٺ H=HH{H5H1HMH5H1H@GHHHIpcma_paiLf@r1SHHcHHx诸Mt!HGHH0LV,H&HHxH5DoHHH5-H1<HٺH=SHٺH=:HٺH=S!HٺH=gHٺH=zHٺ H=ֶHgH5H1莶HH5H1vHEHHHIpcma_msaL@1QHHHHx?Mt!H׏HH0LUu+HHHxH5'nHHH5H1̵HٺH=HٺH=CʵHٺH=豵HٺH=蘵HٺH= Hٺ H=fHH5H1HH5H1H^DHHHIkalign_pL@air1"PHHHHx̵Mt!HdHH0LTR*HCHHxH5alHHH=i舴HpH5~H1@HٺH=WHٺH=p>HٺH=?%HٺH=: Hٺ H=HH5H1諳HH5H1蓳HBH<HHHkalign_mH8f@sa@ 1NHH HHxVMt!HHH0LR,)H͌HHxH5>kHHH=HH5H1ʲHٺH=ZHٺH=ȲHٺH=诲HٺH=薲Hٺ H=2}HeH56H15HH5.H1HuAHƋHHHamap_paiH0f@r1:MHHHHxMt!H|HH0L2Q (H[HHxH5yiHHH=蠱HH5 H1XHٺH=طoHٺH=VHٺH==Hٺ H=$HٺH=w Hٺ H=HCH5H1誰H]H5H1蒰H?H;HHHamap_msaH@1KHHHHx[Mt!HHH0LO&H҉HHxH5ChHHH=`HhH5H1ϯHٺH=_HٺH=ͯHٺH=贯Hٺ H=蛯HٺH=肯Hٺ H=iHH5"H1!HH5H1 Ha>HH HHproda_paHf@ir@ 1"JHHH Hx̯Mt!HdH H0LN%HCH HxH5afHH)H5<H1YHٺH=.pHٺH=WHٺH=p>HٺH=q%Hٺ H=j HٺH=_Hٺ H=ڭHbH5H1蒭HH5H1zH<H#H(HIproda_msL f@a1HHHH(HxAMt!HنH(H0LLW$HH(HxH5)eHHH5H1άHٺH=HٺH=E̬HٺH=賬HٺH=蚬Hٺ H=߾聬HٺH=ԾhHٺ H=OHH5H1HH5H1HG;HH0HHprank_paHf@ir@ 1GHHfH0Hx責Mt!HJH0H0LK#H)H0HxH5GcHHXH5yH1?Hٺ H=kVHٺH=s=HٺH=n$1 IH=g HkHtH=OHLH5YH1诪HٺH=fƪHٺH=_譪Hٺ H=I蔪HeH5MH1LHH5EH14H9H݃H8HIprank_msLf@a1QEHHH8HxMt!HH8H0LII!HrH8HxH5aHHH5H1舩Hٺ H=蟩HٺH=L膩HٺH=m1VIH=iHHtH=QHLH5H1HٺH=HٺH=Hٺ H=ݨHH5H1蕨H"H5H1}H7H&H@HIfsa_pairL@1CHHH@HxFMt!HށH@H0LGL HH@HxH5.`HHH5H1ӧHٺH=HٺH=:ѧHٺH=踧HٺH=蟧Hٺ H=膧HٺH=ٹmHٺ H= TH"H5 H1 HDH5H1HL6HHHHIfsa_msaL1BHHuHHHxMt!HYHHH0LFH8HHHxH5V^HHdH5yH1NHٺH=ieHٺH=ŰLHٺH=e3HٺH=fHٺ H=_HٺH=THٺ H=ϥHH5H1臥HH5H1oH4HHPHItblastx_L@msa1@HH~HPHx5Mt!H~HPH0LDH~HPHxH5]HHkH5H1¤Hٺ H=٤HٺH=9HٺH=ѽ觤Hٺ H=ҽ莤HٺH=ԯuHٺH=\HٺH=CHٺ H=ߪ*HH5H1HH5۪H1ʣH"3Hs}HXHHtblastpxH8@_msa@ 1>HH@}HXHx茤Mt!H$}HXH0LBH}HXHxH5!t[HH³H5H1Hٺ H=E0HٺH=HٺH=bHٺ H=)HٺH=+̢HٺH=>賢HٺH=蚢Hٺ H=6聢HH5:H19HFH52H1!Hy1H{H`Hfem@1H=HH{H`HxM*H5xLFH)Hn{H`HxH5YIH5 LSH1裎HHSH5L1kHSH5.L1VHwL H=u`LH=GLH=ι.LH=ǹL H=HH5L1贠HH5L1蜠L/HEzHhHHconsan_pH0@air1;HHzHhHxbMt!HyHhH0L?('HyHhHxH5JXHHH5ٹH1Hٺ$H=HٺH=VHٺH=ԟHٺH=ն軟HٺH=ж袟1[DHH5H1WHٺ H=#nHH5'H1&HH5H1Hf.HxHpHHRNAplfolHf@d1+:HHxHpHx՟Mt!HmxHpH0L#>$HLxHpHxH5jVHHH=Ҹ葞HٺH=иxHٺH=˸_HиH5H1H޸H5H1HW-HwHxHHMMtf@op@19HH}wHxHxɞMt!HawHxH0L=H@wHxHxH5^UHHH=2腝HٺH=ķlHٺH=SHH5 H1 HH5H1HK,HvHHGOR4@18HHwvHHxÝMt!H[vHH0L<IH:vHHxH5XTHHH=pHٺH=fHٺH=MHFH5H1HWH5H1HE+HuHHHwublast_H@clief@ nt@16HH]uHHx詜Mt!HAuHH0L: H uHHxH5>SHHH=eHٺH=LHٺH=3HH5H1H7H5H1ӚH+*H|tHHIblastpgpL H_clientHX15HHFtHHx蒛Mt!H*tHH0L9h H tHHxH5'zRHHH=NHٺH=5HٺH=ݴHӠH5ՠH1ԙH`H5͠H1輙H)HesHHIncbi_netL@blasf@ t14HH0sHHx|Mt!HsHH0L82HrHHxH5dQHHH=8HٺH=wHٺH=dzHgH5H1辘HH5H1覘H'HOrHHIlocal_ncLIbiblastLH13HHrHHxeMt!HqHH0L7HqHHxH5MPHHH=!HٺH=`HٺH=HPH5H1觗HH5H1菗H&H8qHǀH[A\A]f.HqHHHsap_pairH@12HHpHHx1HpHH0L6HpHHxH5OHHܣH5H1ÖHٺH=ږHٺH=*HٺH=&訖HٺH=菖HٺH=vHٺH=+]Hٺ H=~DHH5H1H)H5H1H<%HoHHIsara_paiLf@r11HH_oHHx論Mʠf1# HH54+}|fD1# HH5o4HٺH=;IHٺ H=R0Hٺ H= 降f1Y# HH5J4yPfD1)# HH5ϛ4O H5kH1|J1" HH536fD1" HH5_3/fD1" HH5/z3/fD18HH5H1œ*18HH5wH1襓18HH5WH1腓f1i8HH57H1e1I8H #HH58H1>f18H HH5H1xfHlHHHdaliweb_H@pair@ 1 .HH~lHHxʓ閟HalHHIdali_paiLf@r1-HH3lHHxfDHlHHImustang_L@pair@ 1-HHkHHx*CHkHHITMalign_L@pair@ 10-HHkHHxڒ霣HqkHHHcdna_cfaH8Hst_pairHp1,HH;kHHx臒ZHkHHIcdna_fasL@t_paf@ ir@1z,HHjHHx$镤DfDHjHHHprobconsH@_msa@ 1 ,HH~jHHxʑHajHHHprobconsHIRNA_pairL`@1+HH'jHHxsf.HjHHHblastpgpHH_clientHP1m+HHiHHxHiHHIncbi_netL @blasf@ t1+HHliHHx踐<HAiH0HImafft_paLf@ir@ 1*HHiH0Hx[fHhH(HImafftdefL@_msa@ 1`*HHhH(Hx ȮHhH HImafftdefL@_paif@ r1*HHlhH Hx踏ͬHAhHHIclustalwL@_msa@ 1)HHhHHxZڪHgHHHclustalwH@_paif@ r1^)HHgHHxHgHHIclustalwL @2_msf@ a1(HH\gHHx討H1gHHHclustalwH@2_paf@ ir@1(HHfHHxDDfDHfHHHblast_msHf@a1E(HHfHHxfDHfHHHmus4_msaH8@1'HHUfHHx衍H1fHHHmus4_paiH0f@r1'HHfHHxOfDHeHHHmuscle_mHf@sa@ 1Q'HHeHHxfHeHHHt_coffeeH@_paif@ r1&HH\eHHx訌H1eHHIt_coffeeL @_msa@ 1&HHdHHxJ)HdHHHpcma_paiHf@r1U&HHdHHxPfDHdHHIpcma_msaL@1&HHedHHx豋rHAdHHIkalign_pL@air1%HHdHHx^DHcHHIkalign_mLf@sa@ 1a%HHcHHx fHcHHIamap_paiLf@r1%HHscHHx迊fDHQcHHHamap_msaH8@1$HH%cHHxqHcH HHproda_paH0f@ir@ 1q$HHbH HxOfHbH(HHproda_msHf@a1%$HHbH(HxωfDHabH0HHprank_paHf@ir@ 1#HH/bH0Hx{fHbH8HIprank_msL f@a1#HHaH8Hx/4fDHaH@HHfsa_pairH@17#HHaH@HxHqaHHHIfsa_msaL1"HHIaHHHx蕈fDfDH!aHPHItblastx_L@msa1"HH`HPHx> DH`HXHItblastpxL@_msa@ 1@"HH`HXHx^H`H`Hfem@1!HH]`H`Hx詇HA`HHGOR4@1!HH`HHxhH_HHHwublast_H0@clief@ nt@1Z!HH_HHx[DfDH_H@0HHslow_paiHf@r1!HHf_H@0Hx赆tfDfDHA_HhHIdialigntL@x_msf@ a1 HH _HhHxX閲H^H`HHdialigntH@x_paf@ ir@1J HH^H`HxtDfDH^HXHImafftginL @s_msf@ a1HHL^HXHx蘅iH!^HPHHmafftginH@s_paf@ ir@1HH]HPHx4ZDfDH]HHHHmafftjttH@_msa@ 10HH]HHHxڄQHq]H@HHmafftjttH0@_paif@ r1HH<]H@Hx舄VH]H8HHmafft_msH8f@a1HH\H8Hx/9fDH\HHHlocal_ncHIbiblastLX1-HH\HHx׃rHa\HHHprobconsHIRNA_msaLX1HH+\HHxw陽H\HHImuscle_pL@air1tHH[HHx̾DH[HHImuscle_mLf@sa@ 1!HH[HHx˂fHa[HHImuscle_pL@air1HH2[HHx~DH[HHHpoa_msaH81HHZHHx5afDfDHZHHHprobconsH0@_paif@ r1.HHZHHx؁жHaZH@(HHclean_slHIow_pairL`1HH.ZH@(Hx}m@HZH@ HHexon_paiHf@r1HHYH@ Hx5kfDfDHYHHIpoa_pairL@17HHYHHxNHqYHpHIdialigntL@_paif@ r1HHH81QHQHHHsap_pairH@1lHHQHHxyfDHQHhHIconsan_pL@air1HHrQHhHxx\DHٺH=w霰fHٺH=ˌw鴮Ad14HP\HPH`HxH5W/IUHAVAUATSIhu[A\A]A^LwA~0HcHE$hE~E1I$`A$T HHHcTHcA9$hEV0EwE1DAEIA9F0\F EuID$H@8JH5HH811fDUHAWAVAUATSHIIHtyH5L.IEl$0E~CE11ID$H4ID$8H<1THH5{L1uAHE9l$0LLH[A\A]A^A_1IxfDfDUHAWAVAUATSHXIDg0DD 8HEEHHEE1HEAzD9uP1MHEH5H*-HEE1AA_D9H}'HEHX[A\A]A^A_HEHHEALELuHUI\WF,1EE11fD9t+D9t&IB9BND9~D9~ MAfDHD9uEt>HcUHMHAH]H HH]IHBAIIE9RHEHEAfDAMHUJDBB0uAIE9IADDH5H}1LEsLE1HEH5TH+HEDfDUHAVAUATSIHhT ~CE1E1H`B H5L1sAIhT D9L rL[A\A]A^fUHAWAVAUATSHIIHHH@DH`H5ЍHH+j H5\zHH. H5ɚHH H5dHH HHH=H5HH I`tVAh HTHHHOIH`HHxhH`H HHHHEIG@0HuIGx0T3LMIIGx0;3HUHIGx0"3HMH HhH HhHmyers_miH Hller_paiHH@r_wif@se@H7uHIGHxXH5LH= HhHhǁx ǁ| HEHhHǡH5WEEnHx2HELxAAAHUHHHPHMHAI"<_Ht3_t*HhHœ L@HHH51nIOA0vWtHEE1HEML0EȉEI"_t)Ht$HA8J0H5u1>nIOf.Q0;UDeHUHULLmHHMHJ0Hu0dAIOQ0HEHID9D;etLMIUHPHD H5HH H5HH HhHUHxH`H`HBXH4J<0H@H1d("*I`H]H`*A*^,*tA` t jY*^tt.G9J ,d)D,LMIHJ0HLMB42HUHHJ0HB<:LMIJ 0HHUDDI"H@<3IGH@8L J 0DD$4$DEDH531kIGHxXH5sS H=ܵ HHhHhH5χ肗Y*,LhAx Aǁ| HEH5^HH tH5kHH HhHUHxH`L`AIAXH4J<0H@Ha*,*tJ d)D,1H5 HH- H`HFXJ<0QL`IAXH<=tJ ,d)D,tEHEIHE9Hx9H};@I"Ht iHhqIH}?HEH[A\A]A^A_IhtH5HH L`IAXJ<0-H`HBXH<HhHUHxH`苐 *tL`AA*t^tJ (^,d)D,OLEHxH0LH` *t =H5HH ugL`IAXHh| x H4J<0L@HhLhr *J ,d)tAH5pHHJ HUI* wYt,d)D,6H=A<IGx0d*H]AIOA0ADNDMEHEE1E1EfDfDIOHAJ4hHUH<L AH+NHH@MHML$HCXHp1H]H8*A$H.QAID;uuHDž`IOEHEu9q0@iE'*QZE4H5HHtSH5HHtd1L1`I$ Ht LtLELLHLdHHMH3 uPH]LeLmLuL}I$ HdLluHuI$ 9`UHAWAVAUATSH(IE1H`SHGDh0D *IHHt_coffeeH@E~KE11f.HIGH@8H4I@H<LESaLEI@0?AHE9uIOQ0E1AMn9MHÍCE̍B;EHDQ0E1W1n1fDfDI@0I@0X IGP0H9~!H@ D EtHI@0(^Ņ~.11fHI@0A*@^YHIG9H0LH([A\A]A^A_K6HEMˊD;etMHA BtAF0Et8I HHUHB*^|YlZ xLELMQ_ZLELI@0XLMLI@0XAIOQ0ID9uFUHAWAVAUATSHHH}IDo0H={HH={sH]EĉH={1(}iDmċuH=w{1 IcݾH HEHHEDD I1HEE~eE11AUUID811IHIދ HD9uDE1ɺLLAHE9uI$HUI$HcHU}AiEL}AUUE11E~`DIDHEDE%HuE1~-fDI HHcIAHA9uAHE9uDE1ɺLMI$AGI$HcHUI;]SH5CH}IƋEĉELmE11HEp0~+DAU9tH5yL1\HU9Z0AID;}|LUH} H}L2HEHH[A\A]A^A_IUPAHE9|JD;mH=x1EH5YH}IEMAͺQM)U.UHAWAVAUATSH(I1eI1[I1QHE1LsHHLBH(ELLH=Sx1DLLH=x10LXk IH5H}IEU0EEHEfDAV0Iv8IE8HMH<dRAăt=EN0E~41D9tDH5wL1ZA9^0EHEEA9E0LTHEH([A\A]A^A_ÐUHATSIHhh"dž"džp"DhEt1H`Ht%HcT HHHoH`#fDT HczH`T hHcHH`Ic$hIc$T HHI$`YA$hhH[A\fDUHAWAVAUATSH(IIH%I$X Ic$T IID$P0H5vL1XIT$Z0~CE11H4HzHB HB8H0L7H5zL1bXAIT$HD9z0I$XYI$XIc$T I$X L5XAEEIEHEAEẺUH5)vL1WA$T ~(1ATH5vL1WCHA9$T L WA$hEI$XIc$T I$X LWE}D;}HEEċMDH5uL1SWA$T ~.1fDATH5duL1*WCHA9$T L WEȋEA9$h~&D}EĉEMHEEċE9Eo1@]H5tL1VLH([A\A]A^A_H5HI@UHSHH"t1\H5tH1`VHٺ H=r/wVHH[fDUHAUATSHIwWI$XA$h~bE1A$T 1ۅ~DfDI$XI$X Aō<HcHI$`UA$T 9AE9$hLH[A\A]UHH]LeLmLuL}HPAAILMMA$ HtH5UHNVuLHu+AT$LH]LeLmLuL}fDHT@HuH5"sHVHt-AD$럿zMzHcIGH5rHUHEHtCHUH5& H1lUIUXIcH4IcH<1H_KV EAD$"H5rHTUuAEAD$H5HNtH5H{uTH5HhHSHDUHUIUXIcH4IcHH`DhH"DH5ah1(Iǃp"H[A\E1H`f.UHAWAVAUATSHXH}hEH`1轂HUH"H5g1HHMh1葂ډEHMh}HcHEwHEH]h HuHuEEDfDHEHE1aHUH~…cH]HM~É]uuHEUHE9hE1LmLe1YHHML4IcH]HLdHHH0H賳ƒxHHcHHHHH! t€DHAHDHH+Hy\HHHcHHHHHB0HAID9-LLHc=ZHA=>1OHH='18HH-<@UHSHEH5\DHÐH<#uH<CtuH7EH[HUH5\H1<fDUHAWAVAUATSH8HHH=\{.hzuHH8[A\A]A^A_1HEH5n[HHEH53H}IH}<Hu=H=;HuHH(H5#\H+=HHIHx|;EIE HEIEHEE1HEH8R;HEH8D;A AH5[L1;LAHS H5IL1k;AI}:HA9|L O;AD;}uLsLH/;H}uLmH]@UHAWAVAUATSHhuHUIEHEHE@H}HEEHEHEHMHMHEHxsRwPMt9Xt4Wt/SzL6H=[F;HDEHEE9EH==Ht+HMH99 H LxAhMt3H53ZLTt A>_AL:Hc1L: IHOHiHHuHDHEHL#s0H4=EHEE9E4H}IH}t HM9L8 II}XH50ZE]0EE1E1AIE9}0O$6IEJ< . HH5?tIEJ<  HH5?tIEJ< HH5\uLI]H;蜿HI] IEJ< r9B3IU AE(B92BM2AE(AIE9}0OLHh[A\A]A^A_Mt;H5KXLlt(A>_RL8H{HuLtHE{DfDMt;H5WL t(A>__PLy8HL* IHHuHHEHP0Hp8ID$8dH8HHHMH`HHQ8H<HLHCAt$0L:MtH5'WLH1L7 HHHLIH Ee0E~(E11fIEH<3AHE9e0LfHHuHHEHHs0H:AL-7HgMtH5bVLHMHUHxLHUHu}tIŋX0~'E11DIEH<L6AHE9e0EH} H} HEHEHxXHs65LH5UH)^H81LRL56H_PL6HA>_1SL5H$A>_XLL5Hmf.H !LH5THx]H8144HE"H LH5TH:]H81P4HE H LH5 UH]H814H=LD IcH kLH5TH\H813~SL4HfHH5SHy\H8135E1]LLx4HgfUHH]LeLmH0HAЉMLJ"LJp"HXHtaHX HcHHcT HIcHH13HXHX H}ܺ 3EH]LeLmf.HhuDT E,H`Ht?HcA1HqAE9~ IcՋE܉D"IcHH[HH`D"IckHH`UHAWAVAUATSHIHHHZHHU1HH5HgH`HIH dd1H11M2HcI$HH5FH2H4H5vRHz2HHDž@Ht_H,2HH@AT$DžHDž Dž8HDžP@fDDAHPHHA9HHPDB9|H I$HtHH?HHHBYHUH3qH[A\A]A^A_H _HHD\Dž<HHAP0Hp8ID$@HPH<d(HHBP0Hp8ID$@HHH<d蹤,(L LHL⋵\H ID$`HPHRHHH@AT$lHc(HHHc,HHE1fDID$XHPH4D舚ID$XHHH4DpID$XHPHB<8&&ID$XHB<8&H5CHu`HtVD1HDž8x'D1H8ID$XHPHB<8f%tN1H@AGIA9D$\AT$HH;\ID$XHHHB<8$uIT$XHHH B<8>yHPH B<8>c4t8KH ; >B,$@.I$0DHt)IcHHD,HcHH0A<0/E0Hh(1Hh,HhDHh0H4H : B HhHHhHhDHCHEHDH2 HuF0E1HEPhDH57@HDH81EoHUB0HuLvA9| LuEA9|HH([A\A]A^A_LuDmHUHB Hu<0 N0Hu09N‰E̅E1f.hD1HhMȺHAċhDHhDHhdHhD;euHEH0EȉHE;M(DUHAVAUATSIAIDT E~11A DLCHA9$T L[A\A]A^UHAVAUATSIL`1MHLJ`|I$XE$hE~OE1A$T 1ۅ~1f.AHA DLwA$T 9AE9$hI$`IDŽ$`[A\A]A^DUHSHHA9hHXHtWHX IcHHcT HHcHH1aHXHX H}3EH[H`Ht-T BHH[fD1H[HhHtHcIcHƋfDfDUHH]LeLmLuL}H0HAAAEŋT MHXHtm:HcT HX IcHHX1hT HX HXEEDRHH]LeLmLuL}fH`HtHcHHchH OoUHAUATSH(L-@IEHE1LHHD$(HT$ HHD$HtHD$Ht$HH$LIH ;1L1LH! t€DHAHDHL)Hyd%HLH H oH5`;H;HHH5M;:HUI3UuH([A\A]UHAVAUATSHIHHH=H5w5HIfDfDL*<LH=L H=Ht<*t<#t<$t< ttL(IHtH_LJ<(HH5IW1L"H3[A\A]A^L H[A\A]A^þ諹H萹H@UHH]LeLmLuL}HIH>HHU1Ht4E1LH =HUH3H]LeLmLuL}@A}hAU9@LIHtH5g.LHLTIHH^I\$!IHHH6H0LHtI$LpMtA@M"H58LL`IH Fd1L1vH58LcHIH Fd1H1EAL11HlH5^8LHH5{HIH5ALILA&DHKHSH5YzL1gAHI}A9|L詢L|E1I}H?}A^f.UHSHH1HtHHH[UHAWAVAUATSHXHu1THEAd 1OHEHMQH=7HUHHnIHIEEEE1'fDLML+eIIH8HxH56VHLmMIEH8HHxH5c6-HIEHxHHxH56 HIEHxHHxH56HIEHxHH8HcUH9ЋUGЉUI]L3LgHcUH9ЋUGЉULcLKHcUH9ЋUGЉUH[ AL11L訸I]HC 8H{茷HC(EEEHMCH=5HMPH=5HזH546H}1HM-H=T6HM-H=j6}HEH8III1L5 L=t6MLH+UI$IHH]HHHxH566kuHH{PHuHS(HIDHC 8LIEIMHT$HD$HCHD$Ủ$L DEH UH55H}1|WHM/H=5HM-H=`5sHEH8III1L5L=j5$fMLH+UI$IHH]HHHxH5&5[uHH{PHtHS(HIDHC 8LIEIMHT$HD$HCHD$Ủ$L DEH UH54H}1lWHM-H= 5}HM-H=P4cHEH8III1L5}L=Z4DfDH]HHHxH54fuXH HQ(HIDHA 8LIEIuHT$HD$HAHD$Ủ$L DEHUH53H}1 MLH+UI$IHoHM>H=J4 HM>H=p4k HEH8III1L5|L=b3H]HHHxH5QvuXH HQ(HIDHA 8LIEIuHT$HD$HAHD$Ủ$L DEHUH52H}1 MLH+UI$IHoHMrH=3 HMeH=84{ HH54H}12 HEHX[A\A]A^A_UHAVAUATSAHtIHPpHt@DhE~7H`E1EH;Ht D HuAHE9u1[A\A]A^ø[A\A]A^fDUHSHHuH[@HG(HtHx HtHǻ8~XdfUHAWAVAUATSHIHGp( x0IIEDx0HEE~'HXE1H; HEAHE9u1EhEAT E1E1AT I`AHH|t Hc HcDHID Eu IHcHcHI֋u IAE9hIkdLdAhE1Ʌ~(M`IAT 11HcIcI9uHHH?H}HHcLHLH?HHHH[A\A]A^A_DUHAVAUATSIIDhAEhT ~%1fA DLCHA9$T L[A\A]A^UHAVAUATSHHHhHHHdIƋhT ~EE1E1f.H`B H5KL1AIhT D9L Lh[A\A]A^1[A\A]A^DUHAWAVAUATSHxIHHEMIcT vIH}11ҾAHEIwHIH}H53'^HEE11HuL脤I1A<$!HE;X0~fDfDH}Ã#tauH}"1ۮH} LȮLHSH5"0Hk0H81!LHx[A\A]A^A_Hu#HEIV HUIFHEIVHUIFHEIVHUIFHxILpDfDHuL脣IH=A}!tH5/LHEA}#HEH$LMLEHMHUH5p/L1AAN9atUEhAD$AhAT ~/1fDA DLCHA9T M8AFA;F ~ AF)AHx)AVAV AF AF )AFHU)bHxLH5.L1IcHpH‹AIcFH‹AFMH}H}ɬH}k L賬L諬H1I@UHAWAVAUATSH(IHH=A>H5T$H|I1HEHEH(f.HcH ËUHHUH5GL1ujA9$T uL5E$hAEA$hE$T E~,1fA DL?CHA9$T 1ɻpA9$T tLѓLH([A\A]A^A_L5HE$hAEA$hA$T ~1fDA DLCHA9$T HcT HUHAVAUATSHIH@HHLPLX1DžHEHH0H Ic$T 蟧IŅ1H5LGQH;H|!H5'&H2Ht1HPH=XH5%1H5CH` H5%HHHtHhH5%1H5%HHHtLH5%1gH5%HHHtHpH5%16{H5%H^HHtHxH5%1JH5%H-HHtHUH5r%1H5k%HHHtHUH5Y%1H5 HHHtHUH57%1{H5t HHHtHUH5%1MH5#HuHHtHUH5$1dH5$HGHHtHUH5$16H5$HHHtHUH5$1H5$HHHtHUH5$1H5$HHHtHUH5y$1gH5o$HHHHUH5V$15zf.UHAWAVAUATSH(H}uH=kH}3DmE&H\DeELmEfEIE9EH=&IuH5#I} tH5aI}ɫIHPH=H5#1GH=HH5I}LMA0fDI]H.f@It$I}AI?IA9|̾LEIE9EHEH([A\A]A^A_H=2HJHY볾谜H z@UHAWAVAUATSHHHHHUHEDxH fHED D AASrEDArEDL H5JL|uA$]H5L`t,t11H}HH[A\A]A^A_f݃uEE~UEDmLmE1DfDA]HcHMH`H<ЋujH2EAIE9u1D9}kHEDxH MHEH`HcHHEEDmIcL,‹uLHEEDLHhEuH}HADH}HtEtXuH}aHt=HPpHt4DhE~+H`E1H;Ht DXHuAHE9uDuEdE[됉H}HtMHPpHtD@E~:H`E1f.H;HtuH~AHD;eu1ouH}HtAHPpHt8DhE~/H`E1H;HtuHAHE9uE1DH}=HtAHPpHt8DhE~/H`E1H;HtD4HRAHE9uEADH}HtCHPpHt:@Eą~0H`E1H;HtuHAHD;euEDfDUHAWAVAUATSHhHHIILLHOHHU1H=H=HUHH{HH5HL9H=<HHHMH3 uHh[A\A]A^A_HxHH5mHH81lH=HHaH H5:1H5RL H+HHH5115H=H5HƎnIL>hH5dHDHH5#H(HH5 HHHP0DžHDžE1HDDA9IcL$L4HHHHAt D9t!A;|A;DfDAIID9H9@H=~HHu;M1LIIH =1L1Lx~HH=(LhH@H=D鋕H511{H1mHHHL4HH>HHH5HLNu)A PH=UГHQ0HHxH ?HHT$HH$L L LH5(1)HHHBH#H{HHAH@8HH MLH57HH81H=~HHyH H_HHD$HH$L aLRF辏HGHy0<Hc蛏HHLtH5:HȊpAHGHH >>/dev/HHnull 2>&HPf@1 HHpH=16I1,ILHLHHa>HHt{H5PHLuH=.詑H -Ll$L$$L LLH5$11#HHHpHHHFHI >>/dev/LInull 2>&LPf@1TLHH HHhHD$Ll$L$$L pLaLH511~HHHAHxHdHHI >>/dev/LHnull 2>&Hxf@1H=H2HHHHH`-H{zHHCH Li4LH57HH81|}UHAWAVAUATSH8HuE1DhE8HcHEHHEE1E1HUHU@HX HcT HIHEH1oHXHX H}AED9~ghD9HXHHX HcT HIHEH1HXHX H}D}hAEII9~MEHXH(H`HtfDT EHIDE1AEII9DH8[A\A]A^A_H`Ht HhHHMHD`T HhHHuHDp IcHHhHHUHD` T HhHtYHMHDpIcHoE|$DPHEEH1DHHHuH֋u0HH9u%IcHE1T E1|T E1"H`T H`T #DfDUHAWAVAUATSH(H"H"Ht شHCx0zH"H"Ht 譴HCx0OH"hAHXH11eHXHX Le̺L4ẺEDhHEHXHPHX 1HXHX LẺEHcUH HL LH<H"HBH"I8hAAHUHUfDEHXHHcT HX I1GHXHX H}DmD9h1D9m3HcMHcUH"HD$H"HD$IcHcH"HD$H"HD$DmuAFhII90HcULHcEH<H L H"I4H"HhAǃ"HH([A\A]A^A_fHXHbHX HcT HIH1HXHX H}uD9m9ufH`Ht+DT HD,Ht,DT H4uHhE1HtJ8D(HhHMJ8pCH`HtUUHtf@KEE1E1E11WHcEH H<EE1E11HhEHtHEHhHtHH`xH`fUHH]LeLmH IIHHIc$IcL$H"HЋ4H"HЋT HcH)HcHcHH`LFLH`H)HAUH]LeLmUHH]LeLmLuH AIMHA9~B#AA)C$)IcHcH"HЋAEH"HЋAH$Ld$Ll$Lt$fDUHAWAVAUATSHIpDp"Et 9"Ix"IWDJ0EEHEHB HMDExnIME1E1Ix"J(J< Ix"LJ(|HIx"J(J AIWIHB HMD94}EHEM9J0qAhHcpHEHHEHEHEHUHhIcT IX Hu1!IXIX HhM̉xA;hEDž|E1HcEL4HcxL,E1EE1fDfDIx"J(J0Ix"LJ(H;Hc7HLXDP3HIx"J(J0Hc|LIx"J(J0HcMLIx"J(J0HcDPDLIx"ILXIIx"LIH;Hc7HLXDP~HIx"ILXIHcxLIx"IIHcMLIx"IIHcDPDLEHEHEA;h]IXHI`HAT HxHL,HAT H|HAT HEHAT HEHAT p HD HcEL4HcELHc|L$ALJp"pA"LHĈ[A\A]A^A_IXH8IX IcT HHuH1 IXIX HhM̉|A;h|6HcL$HcxL,E1EEE1E1IXHIX IcT HHEH4p1tIXIX HhCM̉MA;hgIXHIX IcT HHuH@H1 IXIX HhM̉MA;hUIXHIX IcT HHuHEH1IXIX HhtDMHcEL4HcELHc|L$HcxL,IhDžxE1HtHUHxHL,IhDž|HtHUH@|IhEHtHUH@EIhEHtHUH@ EIhH@HUHHMD HcEL4HcLHc|L$HcxL,E1IGHcx0#vIx"IGx0DžtHEHP LuMLIx"HE<HcuHIGHP HM xTE1E1Ix"LJ0uHIx"J0J AIGIHP HMD9, }tHEt9H0UHcEL4HcELHc|L$E1I`HcxL,DT HHcHHuEHt9DT HHcHHh1HtIcHHcHHhHXIcHHc@HH`H`fUHAWAVAUATSH(IHMMLMHEHEMOH5H}pHMIEx01҅~&HH 1fDfD19H9uH51L1蛨IUB0~TE11DfDHB <t+H HrHB8HLH5qL1MIUAHD9b0AhL1LLH([A\A]A^A_CH5H}GH5H}kGM*AhL1LLH([A\A]A^A_H=HtNIEx0HcKH[IEP0tE1E11-f.H1D<AAIEHD9`0=HMQ0Hq8H@8HfUHAWAVAUATSH8HUAσME;uHcEHEHHELcN4AHUHUzHX HcT HIHEH1HXHX H}ED91DH5hAIID;et9D9h~HXHuH`HDT EH렋h1H HDhDT D%uHXHu:H`HtIcHIcH kxfDHH8[A\A]A^A_諛HX11T HX HXEE1DׇHhHIHUAEFfDUHH]LeLmLuL}HHuAHxuHH]LeLmLuL}@H5eH9tH5(Hxz9tH5Hxc9tH5HxL9d EDEDT D%tHXH^ jHcT HX HcEHHX1藙T HX HXEE1D聆u;hy HXHl LcHcT HX I19HXHX Lm̺LẺEU;h EEEtt1ҋuHHeDmAD9mIcHMHHMuuHEHhfHXHGHcT HX Hu1iHXHX Hh8DuD9haHXHHX HcT HHuH1HXHX HhחD}D9hHXHHX HcT HHEH4p1覗HXHX HhuDeD9hiHXH:HX HcT HHuH@H1AHXHX HhED9utLDDeEDuD}DmAHEHED9m-E1E1D9hD1E1D9uuD9}uD9eu9EuM9hHXHHX HcT HHcHH41yHXHX HhHDefH5UHx53H5UHx5h;UHXHHX HcT HHcUHHH1וHXHX Hh覕De̋hD9HXH HX HcT HHuHH1pHXHX Hh?EB uHah;U'HXH HX HcT HHcUHH4vH4p1HXHX HhDe̋hA9HXHOHX HcT HHEH4vH4p1芔HXHX HhYEB uH`1DH`DMDDH^AIID;eH5ZHxi1uD;h1@H56Hx=1tH5Hx&1uD;h}HXH HX HcT HIHH1艑HXHX HpXkMdfDH`HDT HD,HDT HD 1H5KHxO0D9hHXHHX HcT HHEH41謐HXHX Hh{EA9}bD9hJHXHp HX HcT HHEH41FHXHX HhDeDuH\1E131E1?EEEEH`H`HET HD$:H`H,IcHIcH lH`HIcHHchH lHhE1Ht HUHD0HhE1Ht HMHDxHhE1Ht HuH0D`HhHHUH@ H5Hx .rH5ìHx-W(DH5Hx-jUDU|HhE1HtIDhHhH8J8DH1H5!Hxf-]D9hIHXH HX HcT HHEH41ÍHXHX Hh蒍EB uH ZOH`HDT HH`HDT HH`HET HD$dH`H2ET HD$!H`HET HEHET HEHET HEHET HEU9UM9MrHXHnHX HcT HIH1(HXHX LM̉Mu;hHXHHX HcT HIH4p1NjHXHX L蚋ẺEU;hHXH HX HcT HIH@H1cHXHX L6ủuE9E9uHE1H`HLDT HuH5EHxH*5uDu9uLc}JHEDeHUH`hE1EM1DHWMDHWDDHVMDHVAIHED;ejD9h~HXH6HcT HX I1HXHX H`Dűh1D9~XHXH HX HcT HIH1贉HXHX H`胉M̋hD9EED9HXHHcT HX I1BHXHX H`ẺED9hE1EESH`HDT HD4hHDT H 'H`HDT HEHDT HEHDT HEHDT HD4HXH( HX HcT HIH1HXHX H`ԇM̉MD9h"HXHHX HcT HIH4p1袇HXHX H`qẺED9h"HXHo HX HcT HIH@H1<HXHX H` DumHhH>HcEHD`M9MDEEEH`HDT Hk dh1H5ԳHx%H5Hx%H5Hx%HD9h^HXH|HX HcT HHEH41HXHX HhDe̋h1D9~ZHXHHX HcT HHEH41豅HXHX Hh者űhD9D9HXHHX HcT HHEH41EHXHX HhM̺uHQf.H`MH`HDT HD$HhHHcEHD`HhHHuH0@AHhHHcEHD`HhHSHUH@E1HhEHt HcEH‹EHhEHtHcEH‹@EHhEHtHcEH‹@EHhHHcEH‹@ EE9EU9UH5CHx"H5Hx"H5Hx"zMDMqfDfDHhHoHMHD0hHh1HHMHHqH`H6DT H5H`VHhHHuH@ HhEHt HUHEHhEHtHuH0@EHhEHtHUH@EHhHHMHDp HhHJ8kHdHhHHUHD`1u9u}EE1hHhHHMH@D;h,HXHHcT HX I1`HXHX H`/DuD9h1A9D9hHXHIHX HcT HIH4p1HXHX H`趀DuD9h3HXHHX HcT HIH@H1胀HXHX H`RED9hHXH4HX HcT HIH1HXHX H`EH`HtmDT HD4HtrDT HH`HtpDT HD4HtsDT H#1HhE1Ht HuHD0HhH#HUH@HhE1Ht HMHDpHhHtHuH@ H5.HxUH`HtjDT H4>H`.H`HtDT HD$hHhHthHMHD`hHh1HHuH1pH`'H`dH`H`:E1䋓hH`iH`#H``H`9MH`H`Ht`DT H D9hHXH'H`HuHhHHMHH?HhHiHUHHUHAWAVAUATSHXu袣IH@HEAiT Hc IEHUDR0EEEHEHB H]D EjHH]Ix"H EHEHuH1AEAT HUATEAT HMAL EAT HuA4EAT HUATEAT HE|EAIx"HuH1HuH0L{ A9H]H LA9}\ MTUDEMuL,PA;E~u9u(EuAT HcHL7#IEHEHUHB uH]94EHEMHU9J0mI`"M`ADžp"uAhH 21L\ǀp"HX[A\A]A^A_LDeȋETUAЉUuLHH5L1dHEHUHU1HMHK…HMLiHMH] 薩EEċ]9]}wE~pE1L~UuH}yHE1HHUHcHMHH3H}lHEH;rAD;eu]]HEMEą~_E1uD)LUH}[yHE1HHUHcHMHH3H}BlHEH;lrAD;euH}H}H]h+UH ўuHhH ,1HHEH"H}\HEH`[A\A]A^HC(HHH LH5H}1 q1dH}:]HH?]HEH8HCHXHthtuHtpH5)IƋhT ~;E1E1H`B H5fL1pAIhT D9L jpL1pH=S1W1 pUHAWAVAUATSHxHxIL1 EE;HxHǸ"toeHt[HEH@(HXHtHxH3H`HxhMH}t[HcHEHE1gH5H}1coLeEAEID$(HHx HN{HE8~Dh*A9u,S+{HD8~XA9u3Md$MtBID$(Ht Hx HuDA9tDEID$(HlE덋UUHMHMEEE؉lDfDHUHB(H/Hx H"mzHE8~HMC;]HcEH]HHE1S HUH臤… H]HMڤÉ]EE9EME1LUuH}uHE1:HHUHcHMHH3HxgHxH; nAD;eul]]DH}U~pDeD+eE1L.UDH}tHE1HHUHcHMHH3HxigHxH;mAAD;muH}H}Hxh+UH uHhH ='1HHEH"H}WHxHx[A\A]A^A_fHEH@HEE@]HC(HHH LH5gH}1k1_HxH"HpHUHB(H$Hx HwHǻ8~X;]Hx LpL{;H HH5*H}1]HWIHWH]H;IGHXHthtuHtpH5M#IƋhT ~;E1E1H`B H5L1jAIhT D9L jL ML}M1[jH=1 1H`HtAH)HH} DL iXEEAGE$hIA9AI$lHEhHHlIH5lH}1=A$hHH5lH}1=A*$hM^(Y0iZH5lH}=HE*hM^hYEZH5lH}@=HEHH[A\A]A^A_I$hHHUHI$X Ic$T I8WEfUHAWAVAUATSHXIIHnHGHEHVHUHHUHEHHuH}HEE1A$hHEH]H]DmMA$T HEHHE1f.I$XHI$X HHHEHcHH1<I$XI$X H};EfACA$T H9~IH E9$hr1I$`H?AՍHAAOH]H9]=HHH]H0HcH HHH8HEHHH HtxIcGTIcG LA7HAGtWtR9tNBAGAAG EhAEAhAT ~#1A DL@CHA9T EHEA9$hH}H}LuMLHX[A\A]A^A_I$hHHUHOEhAEAhAT n1fDfDA DLCHA9T ;I$X Ic$T IQUHHt'HFH9Gt f.HDfDUHAWAVAUATSHILL}A9ZIIĸ"tL8pH$HEH$AHUHB(HXHtLH H`AhEADuH]E1Hf.HyLHHID$HxII\$HAM"LWUDL?ILMLcH HH5fH1*Hp$IHu$HtID$HXMhIUH9S@HLHHID$;IA(HHH H5CeL17LH[A\A]A^A_H=V11c7L 7H}.HHuAh+UH duLAhH 1LϜM"H}"jf.UHH]LeLmLuL}H`IIHUHMLEH~XY MM$"MH5H= fI$"I$#MM$ HULH}AH"IHN"1eptu=L,$MLEHMHULLH]LeLmLuL}fI$"H5ueHK7HteL,$MLEHMHULL@H^L(H5[H}Q1҅tSE1I111LIH5eH6Ht-L,$MLEHMHULL=)HH5dH6HL,$MLEHMHULLUHAWAVAUATSH(IHIHMMH=72H)FiMH=L5H I"HH5d14H=H5d'HuH@IDEE~+1DI4MHMLL:IōCH9EܾL LH([A\A]A^A_EIuHEIE9F0~GH~ IhHHUHLcNLcHcLHcJEd EAOd Ad L}IX IcT eIfDUHLF0H`Htnh~^T 1H`T HHHcAHcDA]HT* Y,9hHfUHAWAVAUATSH8H}AHUHMMLHEHEHEHEHM HxEH]E1AEDHAA9~*H;uH;HDuHAA9EAtIcHUHtH:)HUHEH"H5YH}1(MHMHUHEH0H}pHËhH P1HHUH"HH8[A\A]A^A_HUHEH"DH5'YH}1A(MHMHUHEH0H}HËhH 1H蜍A~LeA1f.hH (F1HiAIE9CIt$MHMHUHHH5ELthH N1H}HtHUHzHBH9PH"H=Wp'UHAWAVAUATSHxH}uHUHMLEM1`EINj}HcHEDEE~%HE11 HAHD;euHEHx-}H]E1AEDHA9U~*H;&uH;HDuHA9UEtfAtIcHMHtH99'HE HD$HUHT$HMH $MLEHMHUH}NHHHx[A\A]A^A_HEht#HcEHUHHEHEh1HMEHEU9UUL%fD1HHMHcHHMHH5$UH}1#H]H;HtKܴHtAH3H}kHEH5BH}GH BIEHEh1H6MmHMH=T#HcEHUHH;HtRZHtHH3H}HEH5AH}H AHHEHEh1H譈HMHUH"H&HH}H}H5n IHMhT ~AE11HUH`H5eL1"AHHMhT D9L "LұHM LuH}ZH HUHzHB1H5nH=nQ_HUH"hHcEL,HMH4LEHMHUH}Iċh9HUJ<*t|HtwH5mIA$hA$T ~>E11I$`H5ZdL1~!AHA$hA$T D9L Z!L謰1!HJH"H=QU!˵|fDUHH]LeLmLuL}HPH}AHUHMLEMLmLeH] 1ZtAAH] LeLmMLEHMHUDH}H]LeLmLuL}DI$"H5Q!HtH] LeLmMLEHMHUDH}H]LeLmLuL}DfDUHAWAVAUATSHHXTHHH@L8dHc޾HHhHHxHHETDž`HEHUHXH<1 IH]HuHދpƋx4HEHhHH5ViLfHxHEE1AE~]AE~EE1E1fDIEXJ8B< ^مuAIcHuI7IA9MEIEA9E`HET9`H8y0lHpH8C01HpH@AH8S0H9ԅ~E1E1H8HF8N4(T~LH]E1HPHp@dLƒtHpID D ID PAHD;TuAIH8D9{0HHH>cHHUljHE1DdE~?HH1HHljUHE1ADdE~[HHIE1H3HEHEHEDuM)A$T HMHHM1z@I$XHI$X HHHEHcHH1I$XI$X H}nEfACA$T H9~IH E9$hr1I$`H3A֍HIcIcGHHMHIcWIcG HHEHEA9$hL˼AuA}~IEUEE11ID$P0Hp8IE@H<dkt[EME~RHHUH<11HUH~HcHDE~ J3HA9uAHE9}qH}H}LHH[A\A]A^A_I$hHHUH[I$X Ic$T 趸IUH1UHHHufHHxHufUHHHufHHxHufUHHHu/fHHxHuHPHt1fHRHu1UHHHtHHtHGHfUHHG LAUHHG LXAUHAVAUATSIHtUDw8Dx+HHE1DIE0H<胺AHE9uI]IEIEL[IL[A\A]A^fDfDUHSHHHHH t\Ht=?t8HpHtH{HxHtfHHxHuHHH[H߹HCHH[1HH[ÐUHAWAVAUATSH(IuHUHMHDE̅FLmLuE1,I>HID$ I>iAIID;} I]H5CHSHt I|$ H5iCH3Ht I|$'H5LCHHt I|$(H5!CHAYH5CI})uI\$ I>>H?H5CI}uI\$ I>HCfDH5BI}аIT$ IHBAIID;}H}>H}LH([A\A]A^A_þID$ AT$8HcIL$0HAT$8I] ڴID$ɾ0ĴID$(H5AI} tCH5BI}AL$8HcHID$0I6IT$(H2H0AL$8I>ID$(@EIľd3ID$0AT$8HcHAT$8A$lH5AI}Tt@H5}AI}@uBAL$8HcHID$0I6IT$(HrH0AL$8GI\$(I>)HC)H54AI}u,AL$8HcHID$0I6IT$(Hr H0AL$8H5@I}誮uI>ID$H5@I}脮u,AL$8HcHID$0I6IT$HrH0AL$8H5@I}Du+AL$8HcHID$0I6IT$H2H0AL$8LH5k@I}uI\$I>HCH YIUH5A@H27H81HfUHAWAVAUATSHHH0H8L@LHHH)H)HE)x)p)h)`)X)P)H)@HH6HH1H5?HH8- AAFHcؾH茱HHxHDž Dž$0HMH(H H0E1ALAH0HH@HafDfD@y1H1  0H0 HLH .>1H1 $=soH0$ZHZH <=1H߸k RH(HBH(,H(HBH(]H(HBH(돋 0s(H0 HLH <'H(HBH( @UHH]LeLmLuL}H@HAuE1LH]LeLmLuL}Hu @HH{HuA|$Hc"IžHIEH@HHBHuHBHt1fH@HuAEHHUE11AT$U;Etf.H[H*;EuE9}IcL4KD5HXD9} AǸžTKD5HA|$Hc8Hþ&HUHAWAVAUATSHILHGHEDw8Dx.HHE1IE0H<ïAHE9uIEIEL蟯HEL toMtCA?t=HEIGHtLxIHt IIHuL}LH[A\A]A^A_LFHEH@HEH[A\A]A^A_HEHEH[A\A]A^A_ÐUHAUATSHHAh~mE1/DHD9t!AD9h~9DHD9uʺDH= u1H[A\A]øH[A\A]fDUHAWAVAUATSHIHGp(Ƌx0IAhE1@DL`1DLQHM$ǺDL; HADLHM$ǺDLHAAE9hLH[A\A]A^A_UHAWAVAUATSHXIH%/H H=a8\IE@(EǃHc0HEHHEȋUPþHEHEEhEE1DL úDLAHcHUHHEL A$DLA$IcHULEU‰U9ŰEȉEUŰM9}4HMHAXHcHMH<EU‰U;U|HEHP`HMH EDuEA9VDeMA99D$UT$D$M $AEDL1蓅LHpLLHt9]̋MLbMLPML>D$ED$D$U$AEDL1LHpLHt9]̋MLMLMLAD;eAD;uEHUBHE;EHR`HMfDUHAWAVAUATSHHIuAHMDEHD_EH=VI~`被I~`2AVI~`{I~`1xHI~`SI~`1EI~`3I~`AV‰UAvL1z*HEEVE~mEEE11HLL֋MD9}?fDfDHUH0~IF`H8HcHcHHD9uAHE9NHEHhENE~|UE<EE1HcHHELe]D9}DfDHUIDB ~IF`J(0 H}tID9uEIEA9FH}HEHH[A\A]A^A_ËhE11DH}AƺDH}EDH}AźDH}AD9u~D9m~IcIcHÃ<E9E~D9}~HIcHÃ<AHEhD9\1H}SHEh1HTHHX HcT 迗Hx#MDH}MDH} MDH}8MDH}޿MDH}ʿMDH}趿UHAWAVAUATSHIAU, EĉǾ軵HEAhE1AE9h~|DDL= tDDL;E~̺DLHcHMHH HHL"IA$DDLA$AE9hUąxVE1EHxHEJ ~/QyA HUN 1EtAQ AAIII9uHEH[A\A]A^A_UHAVAUATSIAL-Iu A$T ~;1fDfDDLH5<4I}1_A9$T Iu [A\A]A^CfDUHAVAUATSIAIHֿ A$T ~/1ېDLcH5#L1A9$T L[A\A]A^UHAVAUATSIIhH5@#L1E$hE~dE1L E$T E~:1fDfDDLH5"L1@A9$T AE9$hL L[A\A]A^UHAVAUATSIHH5;#IA$hH5o"H1E$hE~cE1L E$T E~91DfDDLH5"L1pA9$T AE9$hL PL[A\A]A^f.UHAVAUATSIHH H=!2L+A$hH5!L1E$hE~bE1L A$T ~91DfDDLH53!L1A9$T AE9$hL [A\A]A^hUHY w#5&Z+G2+:=;#>? ACDSTclnprtt{z~twtotgtft^tVtNt/t>uø~DfD1fDfD øø DfDUHAWAVAUATSIDWEjW(1E1E1%((f.pMCD9|!MÉD9|A*^([A\A]A^A_A~MĉIFXN ((11J $f.X(À<ItcXH9t!B< Iu߀<ItNX(XH9u.zt%(^XAIA9Mw(@((XfUH4v))*UHH w,HH fDHH9u?E?A;5/)#[UOIC=71?93{ysmga[UOIga[UO}wq{uoysmga3-'971+%  HcNjUHHUHSHHHtoHHHH蟍H>H(HtHH[oH[fUHSHHH?HtHfKH{HHuH[UHH]LeLmLuH AAA־0HDDDHǀ(AFHc謉HHH$Ld$Ll$Lt$fDUHH]LeLmH IAtMH.Ht 9XH=H5R1HH]LeLmfDfDdHMtd܈IIH wH[H5oL17 H5|[LC1LHgL臋%fHcH@@H4H=>]3@UH1@UHAWAVAUATSH(IIHUH=SE_EjfWEHEHH@B@BEVEE1HEF EEEEGEE11DfDHaHcMHPXHcpHIFXHB 2EAHE9o~cIFXHB< ?IGXHHUȀ<IuHHcMHPXHcpHIFXHB 2EAHE9oHϽ@H@AD$IA9FLAxH=wEA@UW~11I@XIcPHH;uuM~11HGXHcWHH;uuH56,H=H5!,)*XEEEHEA9GHEEH([A\A]A^A_1MH1L<HfWEDUHAWAVAUATSH(H}HuAAΉF,0AHcHHE1E1_DfDH AtHUHB@HUH ZZZH5H H8ID9HUJHP*RH** (X(^*@X(^X(^A9^H fAtHUHB@HUH DD)ZZZH5xHI H8DID9ZH' H2 (WH([A\A]A^A_UHAWAVAUATSHIHHH@MDH}VIŋuHdzx荛HHD`E7}"E1KtJ1UAT$IHv;P|}"L5&UH5 I>1DUHAUATSHIIHt<1@OB<#IIEB+HLH9wLH[A\A]HxzI@UHATSHI~xE1E111LPf.1ɀ<O1B<&O‰!A!Dž!AHL9uEt$A*Y A9D*^([A\W([A\UHAVAUATSIL5#MtBHcH9r1E1BD+ADII\$LL9wL[A\A]A^LL|=HcyIHfDUHAWAVAUATSH(H}IEXIAfWɅ~\fW1ۍ@Lh!fWAu&HcBH<HD9D9u11 fI1IcHIHA9*f(H([A\A]A^A_YLPHyID+kdAlfUHH]LeLmH0IHEIHHHLELH]LeLmUHAVAUATSIIIH=Mtd1 ADHLH9v;B<#uB<3uJ#J 3HǽHЋADL[A\A]A^LwHxovI끾H|H1H8OfH HHuHu&@UHSHHH H=H H=H WH=H &H=H [H=H [H='zH yH=naH yH=HH KH=</H BH=sH @H=H ]H=H ]H=H QH=_H ?H=H uH=H GH=$ gH BH=S NH H=H51UHAWAVAUATSH8IIHӋ詒HEIc|$sHELEH 7=HjH5 H1/AT$1EW=D+HUHډEL$EIT$X11f.H<-HD9uHUH@CAT$H9DB1ɺH}+AD$+M̺H9~)HcH]HHHcH]HA9L$H}ʤHEH8[A\A]A^A_AOlA(A(A(A(A(E1EY1A0fDIwXI@HB<2IT$XHDD9|bID9|.(A(.((HUHY,ЉPAFIA9GEL$d@}IEJ<J4HF,0HA9AItH}0tV*XXHHD9C^(\e^(AY?}t*XXA0uUHAWAVAUATSH(IHH]HHH5!%H9HEL}vHEIcpHEHUHHIIIDfDMIEIHHxH5%kuIHxH5kuAIHxȃtHcHEHD#IHx DfDAWIw@IHxeA^HHUHIHxH댾H}H}蓠HEH([A\A]A^A_HH&HH010DfDUHAWAVAUATSHIIHHDEEEEHc~OoHPAEA;FD"Džp1EEEDžXDžpDžtHDžxHEHHUHHMHHEHAVIv@IE@HxH<d~?'E}EyHIVXHIEXHxL$11Dž\11E1Et)ID9tBEG #AIAIA„uAOAEID9uHHD$HH$LL\<D"SEW.vCtXppEXEEEXEEEXEEXHxXA9EttB*p^pE^EE^EE^ED"3EEEA}bDž`DždDžhDžlEE1HEH HUH(HMH8HEH0D}Au@E1E1EE1E10fD@`AAHE9eAVIv@IE@H<dDD<DDtHcIFXHB8IEXHB 8II@ƄpO„rjhAAHE9ecH8HT$H0H $L L(MDڋuDj:D"dEHPBEW.v0EEXEEEXEEEXEEAGIA9Ei]t.*E^EE^EE^EHEHD$HEH$LMLElhd`9D"oEH[A\A]A^A_fAOEtTtPfO@ttlEdEfE<\ZEEZMMZEEZMMHH}"]UMEHH5HUH8P.IE@HxHZ]ZUZMZEH5HH8 jE1EE1E1Dž\11Z]ZUZMZEH5]HH8[ZpZUZMZEH5HwH8rH^H0 _GDž`DždDžhDžl1H=1'd1UHAWAVAUATSHIH`\LLIc}gAEA;F \"E]EEEEHEHEH0HMH(H]H HuHAVIv@IE@HMH<dA8AMHIVXHIEXH]L$11E1EE1fDEt(I9tAEG #AIAIA„uAOAEI9uH HD$HH $L0L(Mu5\"EW.v EXEEEHEEA9EUt*M^M\"EEUEHEHEH8HMH@H]HPHuHHEEEME/E1E1EE1E1)D@AAAHE9eAVIv@IE@H<dDDD6DDtHcIFXHHMIEXH II@ƄmO„?7AAAHE9e`HPH\$HHH4$L8L@MDڋuD3\"8EEW.FEEEHEA9EAAAAI HD$IH$MMY3\"AY ,ALH[A\A]A^A_DfDAOEt4t0EO@t5t1AEfE<]fDfDAEAZ hAZpAZxAZMH`}hpxEHH5BHH8ƾ8IE@H]HZ]ZUZMZEH5HH8膾!E1EE1E1E1EUAZ AZAZAZH5HH8ZEH5HH8HH0 ׽E]EE1H=W1]1kUHAWAVAUATSHIIHPH`HHU1ҋVHv@dHPW2A]HHHXE1L`DfDJIE@LH d1L1\IFXHXHB IE@H<LPLH51讽AD$IA9ELHHMH3 uHĈ[A\A]A^A_fDfDUHAWAVAUATSHHIHHŰs)Iċ}̾'Hp}̾HxEwEEEEEHE}̅|DCEE1EHCXKcH IGXHHu0-B1Nf.OEA9~WHCXKcH0 IGXH0LUBH-IuHHHpJDCEA9}AAI9>EMGXLEEHEHUHMH Hu0oE1E1~yHCXLEM4E1ۃIA1O\11DIcB0HcLpID;ALxID\D9AH9uA9;oIEEHED9U51DmE(11E1rHcLxIH9s~CHCXIcHIGXHLUB<IuHcLpIH9sGH;EDSkDHHHxJDCL`Hp苏HxzWHĘ[A\A]A^A_ÀoOED9oIEEHEA9GL`HpHxHEHD$HEH$LMLEċMUu}+SYEBoO1E)DSGEEEE[f.UHAWAVAUATSHxHIHHŰs%HxuƋ{{IE1E̅~|C~iHCXHxJcH-11/HHCXLxKcHH-ID=B9sA@I9EHc{[HEHc{}[HEAGvEEEEHEE̅?s111҅#QfDHE1DfDD4$MEMHULH}sHAHE9eHEH8[A\A]A^A_UHHLMoH7UEUHAWAVAUATSHHIHuHӾH}wMEHUAuHTHEuA}pINjuA}pHEE11EUE~B1DME~*@J ?IEXH]HcH81FH9EAHE9EEE1}~PE1Au~7HEJHEJ4KAID9kDHuH}H[A\A]A^A_wUHAWAVAUATSHIHtZIWEDIT$It@DjDrHJ8; u; A9uA*XEEWEEH[A\A]A^A_fDfDUHAWAVAUATSH8IHUp:AAuL1HE1L豖I@AE~NE1fDfDEAYHUB$AEDH5HH81躩IA9]HH H="AEE1EDfDJHE]HUBAE~qE11@IFXIcNHIEXHB8 HUHHU ~,IE@HHEF DAH5nHH81AHE9eAF]AOHUFH5\HH81諨IEA9]+HH2 荨EnE~*11f.IFXIcVHHA9vLH8[A\A]A^A_fUHAWAVAUATSHH}HuHUHxLLpH=HExjHEHUrjHEjIHxQHq@HH]SHHHEE1HEHHhDEEHEE1E1HUHJc HMHAXHB<LX褦HxHAXHMH1ɀ<I1E-LXtaHcHcHIAIH]D9+N4E10@LHUJLHhH9MIItAKD(XH5FHpLX袧HLXuED)1ɅEI@I@HHuHUJ‹MH]JHhHB0BA@IH]9C_L{HUDBA1ɺH}ZLEH 4HhH5hHp1(}HM;y}YHcH]H4HHcHMHHHcH]HHHuHHE9xH}E{HEHĈ[A\A]A^A_H= HtUHAVAUATSHIEAFfDcE1D LY~"L11HH HDH9uEx.IcIT11fDfDHpHHp H9uIcHLE11EWA(A(DfWf.H7*VDDNHAA*\X(f(.zt (^ZA*X(.zt(^fA.vA.vD((f.HA9uZAZH5HxH8DMmDMA(H[A\A]A^DH,H%H01u1EWfWf(듐UHH]LeHHA1aqPHp@HoHD1H$Ld$;qDfDUHAWAVAUATSH(HAHUILELM}eIHc{FHUHHc{FHUHHUAH5HXKMc~CJ41IDD IDPILdA9tHABKH9DA1ɺLVHC@JDH5HH81СSD AE~DA>HcH4LE1HUHHR0A>AHHE9uۋSA9}LHEDIcH<IcItDfDHUHHR8AHEDHH9K׸H([A\A]A^A_UHAWAVAUATSH(H}HH5QHEȋKE1E1HED@EPE1E11Ҿ%fDfDHCXJ <A9rHHA9A*A*^HC@J ZH5HbH8]AID9{uH}nvHEH([A\A]A^A_@IAH<0L ?ItHID9c?IuEtHEHDHEF,AUHH]LeLmLuH0AAAfWɅt|EDD)D)gEDXEDDHEDD8MXMXMMZXEEZ\fW &f(H]LeLmLuUHH]LeLmLuL}H@H}IAIAHcLH9tH]LeLmLuL}fAt[E~kAtnEE1111fDAم!D9uDDY-,DF ADDE111E1111AD$LHHE1Ҁ<I1B=fDUHAWAVAUATSHHIIE艘HEEfWɅ~4fW1ۋEL`B<+M豎*MXHL9u*E^ZEfWf.vf(HH[A\A]A^A_þ;IDMEE1EHP @II9tC<0IuK(AII9uE11E1E1E11fDfDJ/A41B<7IA1Ʌ!Aą!A…!AHL9uE~$fW,fWLUO=UEEtDىD}+f(DUHAWAVAUATSHHH}IEHMHEAfWɅ~gfW1ۋELh*f.fWAHPw~0IFXJ 1ۺ9IueHB< IH9uAIE9~AVIv@dH8H5HP~{HEH5#H@0L}L}HPHU+HPAHcL$L}LWp(t(E1HxHH(H`DAAIE9~AUAuDEHDHoAo1E1E7xXXt^Ze-ӷmv1HxHH@HEH5]HuHEH5HHY+LPAG~OHXE1D*IcH`AHHPD9n %ME11HE\EE MEHPWHw@dHHt%LXAHH`A<1HHHË@~KE1HPQHq@HC@JHcH4HME1fDfDIH0A>AHHA9u9]~QHE8HcH4HcHUH HUHH0HE8HH;]uڋEUD AE~5A>HcH4HME1IH0A>AHHE9uD;M}RHMDIcH<IcHUH4Df.HUHH8AHEDHH;MuؾH}FH}|FHH[A\A]A^A_EEADe1 fUHAWAVAUATSH8IIHMLEL˾2HEH=k[8HEPHp@HIWHUA}2IAGHEHHEHcLH[HUE1E1fWHUHB< EEELcHUJHEH1f(HEL@XfHD9t*9tHcK<IuH*_HD9u,KfKB<IKfHAHUID9SD@1ɺL#HEDELL1E1HDHD9uE1E11E1E1HA)ljxDD))1)9}EAAHE9uDD)DD)A*A**1LcHEL@X 11W((HUHBHHBHPHEHB)*LCHEH8[A\A]A^A_H5LWHYf.UHAWAVAUATSHHHIHUHMLELMHc[HEE1DKE~=111ҋ{~%IDEt IcH}ȉ4AƍBH9CH9sǾ/HE{/HEE1E1ۋSE1E1E1E1LE1E>ID9t0HCXIc0JJ 2:uLHUJID9uJ4H}J4kdʉAAŋSIIID9EH}?H}WHw@H}HEHHEHUz.IH}GL}IHcLE1E1fWIB< HEDELcHEJHEH1f(HEL@X HD9t*9tHcK<IuH*_HD9u,KfKB<IKfHAHUID9\D@1ɺLH}DELL1E1HDHD9uE1E11E1E1仠HA)ljxDD))1)9}EAAHE9uDD)DD)A*A**HUHBPHBHHH}HB)*LX@H}J@HEHH[A\A]A^A_1LcHULBX11W((|AG9IIDfDUHAWAVAUATSHHIAAH=CU6L6UL'U1WIIIHI@HHuʋCIcHHEIcL,E1Mx5(fHCXHUHBD<-0(ދC~s1(@A9tZHCXHB4@-tGIFXJ(<II1}^HEH@XH8_HMDiIcH9ADEDxE9}AIcL$D fHMHA@J H5:I>1^ID9uIH=^H]LHPO|1L_HMHUIH0L1L^HË@A;Gt'LLH:HSH01HL9I%H H8H HcBLcdL$KL8MHcBLcdHLH8HHcBLcdXHxH8HDždADfDUHAWAVAUATSHHHHuAԉMM1IHEMcHUHBXJcH5H1lLEH HH5H1kLEH HbH5ΆH1kLEH fHH5H1kLEH uHH5H1ikLEH NHH5H1BkLEH 'HZH5aH1kLEH H-bH5xH1j}H(D"EqHcHHhDž@HDžxH]HHuHHEH#@Hx@H(9H HHxHcH0HHFXHhHH0<IuA}Ǿ _HHE]E#HHpH0HH8E1DfDIEXHpHB<0DDHHJD0JDpDj<H(DEcEE1}9DHHJHHHFXHhHB CHA;E*AU HH%DC1ɺ HHE9NÉEDB1ɺ H} LEH HyH5yH1b}A9}HcH]H4H@AU~1HH 1HPHBHA;E|HA9}?H=))IH5L'H ).fWX`1LfDUHAWAVAUATSHHHHHLLH='IHPHp@H,HHHHyHHjH@HDPEHHHpHc,HHxDž(HELIHpHHMHcHHAXHxH<I\L,HHB@J(\H5{HdH81;1HDJEHDž8E1AD$IH9B~rHHAXIDB< ;IFEt2u(HcHHB*X88H 9dH1=;z,8H5{H dH91;HUHHHQ\HUHQX(HHU(H9HrHPHy*HHHEHc,HHEHEEHEH9BlIƾZHþIHUHHHMH4tH`HEHEHHHMHcHHAXHMHD$HHAXHHU<9-t!Hc1AIHH`HEHEUH9zH=bHH=8B1IIuL11C-t"<-tIhHIhHHHh;uHITHHcIDHHPHHHHPJH`J)Hh`H00i7B0HG`H2-H7B-HHHE1IItFKTBt**^ZDH5vH _H96IIuHUHHH5vH_H8161 HHt2<1u1Iϋ~B2HHhuA HHuE1HB_H29C6IIt*C H5H _H916IIu1"HPHH HHt)A<HPHHHHuH^H0 5H` L HLADž4Dž0D0Hc0IH IcHAafDH=au)6Ht8AHA~߃4{D4Aċ40D4AEt$aDH=u5HuH H~D90tADDH5tH]H814oHHHHMHc,HHEEHELIHUHHMHcHHAXHMH<IlL4HHB@J0lH5sH\H8131HBHEE1AD$IH;B}rHHAXIA<3N,IB(t*u"HcHPHB*(XEEH 8\H1<3z,]ȉH5sH \H913HUHHHQlHUHQXEHHUEH9HPHDA1ɺHHHDEHHH1E1HDHD9uE1E11E11AHA)ljxDD))1)A9~EĉAAHE9uDD)D)A*** 11W((H@HBPHBHHH@HB)*HHH@H[A\A]A^A_ÐUHAWAVAUATSHhIHuHILxLAPIp@VAHCHE{HEHECILmIcHHEEHEHUHHpHMHHMHcHxHAXHMH<IEL<IF@J8MH5pHYH8101EfEHEE1fAD$IA9F~yIFXIB< /N,HpHF(Et'uHcHMHB*(XEEHXH0/AD$IA9F,]H5oH XH91/HUHMHQUHUHQXEHMHHU;ED@1ɺH}kHEDEHuH1E1HDHD9uE1E11E1E1HA)ljxDD))1)9}EAAHE9uDD)DD)A*A** 11W((HUHBHHBHPHEHB)*H}HEHh[A\A]A^A_UHAWAVAUATSHHpH`HXLPLHAPIp@L4HpxHEHEHpQH`HHuHcHHxHE}BH`HMHpS~-11D9tHcHXH Hp9HHXHB8LMLHHPHXH`HpsHhHpqHEHpCUHhHHuHEfDEHEHp9BH]HHUHtѾIH`E1E1HXHJc0HPHAXHxH0D,HpHAXHHu<0+-tHc1AIHIAIH`D981I̋@t-HUHHHuHHhH΋HHuLHPHAXHxHHu<0IEIIHpHB@J8MH5ckHgTH;1e+1HpFLhIHE1CHHp9F~\HpHBXJ8<*AL$IB tAW"uIcHMHB* XEE,]H5jHSH81*HUHMHыủ0HщXH}HhEHpQHE9DB1ɺH}(HpD[E!H}H11HHD9uE1E1E1E11AHAA)DD@D)D)Ɖ1)D9} EDAAHE9uAE)D)A*E*A*MDH5iH`RH810n)HpXD)HUHBMHHB0HE@H*H}IHEHĨ[A\A]A^A_E11E11WEEVUHAWAVAUATSHIHpHhH`LXLPAPIp@L葝A~aHE.HEAVHhHHEHcHHxHEMM̍BHhHEAv~$11;MtHcH`H A9NH`HBM̉LMLPHXH`HhLyIAF119| ǃ019}HcHcHHpHI׋AFHXHBXHxHH]<IEHH]IF@HMH5gHPH81'ANIHUI1HEfW*XEEH9uM1CHA9F~cIFXHMH< &AL$HUHB tAuIcIB* XEECHA9FRYE^E,U, Q11ۋMH5nfHNH8%HUHMHыUH5aH} 'HMHUHʉXLEAVHE9oDB1ɺH}A~HuH1E1HDH9uE1E1E1E1E1HAA)DD@DD)D)1)9}EEʼnAHA9uDD)DD)A*A** 11W((H]HCPHCHHH9)*H}HHĈ[A\A]A^A_f.UHAWAVAUATSHHPHHH@H8L0LLEH HdH5dH}1HHEH0PHp@HH@HHXH@yHEH@FLH8HHEHcHH`DžtHEHUHHMxHcH]1HPDNE~HHHEHEfWEE1HPHBXHMHB<8"|H@DEJ4HhE1E1fDfDH8HJc H0HAXH`H<OHHHL43IHh<uHPHAXHB<8tQHPHFXHB<8!u*IHh*9|XEEAIH@D9()AGIHP9BE^E MY,HEH]HCH0HFXH`HHu<0IHUH]HSHHSxptHXHE;tD@1ɺH}QHXD E@1L%=JHuH HcQHPHF@HDA H5aI<$1!CHXD HA9EHU1E1HDHD9uE11E11A1HMHA)ljxDD))1)D9}EĉAHA9DD)D)A***H]HCPHCHHHB )*H}fHHĨ[A\A]A^A_MXM11W((UHAWAVAUATSHHHH@H8H0L(LLEH H'`H5$`H}12DCHEH(PHp@HdH8HH`H8QH0HH]HH HHPDžhHEHHHMHGH0 HHBHcH]HH]HDžpfWxE1HHHBXHMHB<8lH8.JHXE1EE1H0HJc H(HAXHPH<OHH@L,IEHXuHHHAXHB<8Tt`HHHBXHB<8C-u9IEHX*9lCXxxE@AIH8D90]tHSFH2lSAGIHH9Ap^xZpZ^xD,x,pH(HCXHPHH]E1ɀ<IAZE1f.IcHH]HSHXHHHB@H]Hf(H5A]HEH8}hHEhH`9 ~+HUPpXpHH HHSuEEEE1EH8DEN<E113HHHBXJ(B<0:u@EAHH8D9 ~SH0HHcL,H@HF8EtHHHAXJ(B<0uEEHHQ]]AFI92*E*M^Z*U*^H(HB@H HZH5[HCH;HEHĸ[A\A]A^A_HcH]HH] Ff(E11 FWxUHAWAVAUATSHHPHHH@H8L0L(H]LEH HK[H5ZH1>LEH H5H5YH1>HEH0PHp@H(֎H@HHhH@DQEH8HH]HH HHXDžpHEHHHMHPDKEHHEHHEHEfWxE1HPHBXHMHB<8tH@DEJH`E1E1f.H8HJc(H0HAXHXH<OHHHL$I$H`<uHPHAXHB<8tpHPHBXHB<8uII$H`C~ }=MXM9tDfDAIH@D90 AGIHP9Bx^UZxZM^ZZEE1f.AH0HAXHXHHU1ɀ<IIcHcHH]HBXHPHB@H]HL(f(H5NXH'@H8"pHEpHh9 ~0HUXxx*HH HPSlEEEE1EH@N<E113HPHBXJ(B<0 u?EAHH@D9 ~RH8HHcL,HHHB48tHPHAXJ(B<0 uEEHPQ]]AFI95*E*M^Z*U*^H0HB@H HZH5VH>H;HEHĸ[A\A]A^A_HHEHHE 9Af( (AWDfDUHAWAVAUATSHIHu=E~YE1LpfDIM9t9Gd=DZ uHEJHDKHUIM9uNjEH[A\A]A^A_fDUHAWAVAUATSHHHHuAԉMUHE{DHESA1HE1HHE1HIIcHHEHUHBXHMH<AGE1AG=E1AG~{E119]tVH}HGXHUHD$IGXHB<( ƃ-t(1AIHcH}JHHHcA΍CHA9GAEIA9GiEoEDDEE1DuE1EgE~RE11DHUHBXHB<0-t HMJaHHR}9<DMAHE9gHUJM̉JDhAFIA9GxH][~Q1HUHxt2HMDYE~#Hc11ҐH]HCXH0-H9KGHHU9BH}=LH}H}H}HEHH[A\A]A^A_UHAWAVAUATSH(IIӉMHE1LgHE1LYIHcIEXH<AFE1AFAF11E1E1;]t-IFXJ B<(HHUHA‰AFI9A E11HMA~Kf.HUHBXHB<(vHMHQXHB*-HHUAHD9aAF~3E11fIFXHB<(*HHMAHE9fAEIA9FLH}bH}艷HEH([A\A]A^A_HMkd e@UHAWAVAUATSHXHHuAAMċHE{HESA1HE1H`HE1HRIIcHHEHUHBXH]H<AELEH }H%-H5PL14AUAME11ۅ?1AIHuJHHHcAuCH9~CA9tHuHFXHUHD$IEXHB<0^-uAuCH9AUAFI9eE1E11ۅ~r@IEXJ0< Au@HEH IcHHD|EtHA|uHUI@CAUH9AIE9}wE1DuE1AM~OE11fIEXHB<0j -t$HuJ aHcH4t HA<AAHE9eHUJ]JDxAFIA9EHuDFA1ɺH}6jd}̉AUAHUJD)~V1H]HHuV~0Hc11DfDH]HCXH0-H9KKWHljD)9H}ڃL2H}H}H}HEHX[A\A]A^A_AMfDfDUHAWAVAUATSHHIHuӉMFHEANA1HEANEfEHcHHEE1JH]1fIFXHB<8j AHUHBXHMHD$9]tAA8u41AIHMHAEHHHMH CHA9FAGAVI9~ ANM$E1E1AFWɅ~GE11IFXHB<8M*MXAAFHD9*^. 6HUHJ (11D EuH]HCJ(DEtHHhuփ\11DfDHUHJ (1t.HMHAJ(D 0EuH]IDډ0DfDH~AGIIA9FH}HEHH[A\A]A^A_UHAWAVAUATSHxIHxHplDhHEANA1HEAFAVHclHHEE1JH]1@IFXHB<8AHxHBXHMHD$9ht;Au.1AIHUHHMHHIcCAVH9AGIA9FWHclHHEHEEE9hskHMHHME1AGI9DHxHCXHMHH] B48D;htD;}t€Iȃu1@I9tHpHBEAF~JH]E1fDfDAD$IA9FIFXHUHB< TAIFXHMHB< ;A$uuA9tCHHH]HCJD,Ey}1oHEJM) AD$IA9FbAVAGI9EHE9jH}HEHx[A\A]A^A_AV!fUHH H(H H(H H(H H(Htr H(Ht` H(HtN H(Ht< H(Ht* H(Ht H(HRf1fDfDUHAWAVAUATSH8IHuHUMLHHEA|$A|$HcHEA|$A|$HcǩHEAHc譩IH}t^AD$~?E11DID$XH4H}`HUHBXH4H}KAHE9l$HuH}rA$1 H<t$HH4H>tLIHuՃ}"tHH}LH}I(HtMHUHuLH8[A\A]A^A_MndAZ$AZ LLH5EH}vA?uzA~\1E1IA9~FIB tE AAALLH5EH}1IA9Hu LH5dEH}1lfDfDUHAWAVAUATSHHH}IӉM1LHEHcID$XH<HUB1H}HE1H}IHExBIHUzHciIHExHcPHEID$XH4H}.uH};HUJ~rE1HEHEKD HUHBXJ4LuL:KHL,HHM1WH}C-,AD$IHU9BEEA1ɺL1_IcEID@AAE ~L1IAU~+Hc11fDfDIEXH0-HA9MWHAE 9ADž LxH};H}2LH}LLHH[A\A]A^A_fUHAWAVAUATSHhHHuHELEH oHH5?1&H=H5oHQHE1HIHUzfWEE1HEHEAvHEHEE1E1@LH HJ * g,YX,HJ EωBHJ UP HJ *XEE*XEEAEIIA9F~zDmEȃMHUHBXJ8IFXJ< $*HHMHUWHjf(9DIFXJ4 HUHBXJ<8HMHUWEIMA9NHEHh[A\A]A^A_fDUHAWAVAUATSHIIHLEH xgHH5v7H1pHLLIAA}茼HA}ǾyHEAwA}dHEQHEA}HczHEEuE~!1HMHщLMB ABHA9EE_EME1EEUE~oHcEH41HDHxHHIH@AHIHA HIH@AGEHHA9EAIE9OwDEA1ɺH.UDMEIEHEHHEI6UNMH(:DEEN IDFH5 :H!H;1A}<E11fIMXIHcPH <L I1AHE9eAuHcEH<HcU1IFAMH9~:IGXH IEXHOuHHHMHFAMH9ƅE1115HLMI 1AHE9E~PIEXHHHHLMI1tHLMI 19HHH]HC$1IHcH4IGXL$H=8E̅IG@HDI DAA\$ HT$Ld$H|$A$H5l8HMH81KIx~QHc@HUIHc@HMHHIHcAH]HHA IHcPHcLMIEIE9EEEA1ɺH}RAEE1HUJ4NHcH]D DFH57HvH81tAG~GE11HUJHcHMHH5bL 4I912AHE9gŋE̅AFIA;EVEeE~:E11IEXH IE@HH567L I91AHE9eHUH57HH811HĈ[A\A]A^A_ËQ1L$'HIHcH41L&I6V-HUJ1L&HH55H "H91 A1ɺHPfDfDUHAWAVAUATSHhH}HuHU|H=9H=CEH}VLMAI1EHE@HpHUUA9@‰UHEHHp9}ωHcEHHEHUHHUMHE@E1E11fCHHU9BLMAtHEHPXHMH D,LMJ D$D7sED#_LIIcIHIcH<:LMAAI9MAKE#AkdAAHUHBXHML$LMJH=1fWɅ~{1E1E11LPf1ɀ<O1B<&O‰!Dž!A!AHL9u1fWɅt#*YMA9D*^,*HUHHA*HH|"EELMAIHEHE;MfWEEHh[A\A]A^A_E1H=@uHNjE~+H'1DHH@HH;MuED}EtH}{HUHB@HUL HULDH53HH81H=:`HHEx<HnHUzHcSHE1HMQ~ HUHLMA9AHHHUELDfDUH"UHAWAVAUATSHIHHH@xH8DsEE1L5MHxJA\$DB JB$D H5 I>1"IH89ZDjEE1HxJE}DB JB$D DH5b I>1H]JD E~BA<H(FHH5I>1AHUJHD9 }I H=' IH8D9yNfDfDUHH]LeLmLuL}HIIHAHHHU1L`MH H H5fH1|H5 LMeuYHLLHþ0iHH HUH3H]LeLmLuL}H5G LduE1HLL:Hu1뉐H5 LdtMH5 LdH5 Ldu>HLLH5fDE1HLLH H5 L6dt+H5 L#du3E1HLL=HLLHH5QxLcuHLLHH5; LcLqLLH HH011YDHLLz1UHAWAVAUATSHHIH HHHU1Ht#H5HH01L`MH /HH5H1LPMH H:H5H1H@HIH H9H5VH1LCS;49K4N9tAH5HnH蓽fUHAWAVAUATSHIHHxHHHU1HxH5H H91̽HxH5HH81譽LTH /+HH5Hx1#L\H +HH5Hx1LXH *HH5jHx1H`HhIH HVH5?Hx1A2MIc`HDžEOE~1fD‰HA9W򉕠H5Hh\AG1A~wA~vIOX11H<-H9uEE1t=ED񋕘H5hHH81HAAGD91ʻESDLbHǹ#HxHHDH5Hh0[DE~H(DžHD2\T9iEA)F,3DžDžDžDžDžDE~AGA9E~ A9@AA9}ԋD XD$D$T$ $DAȋDH5HH81袺H(9{H(B1D)L%aHǹ#HxHjHNj;|!DDDcTDžDžDžDžH5EHhCYDžPDžHAwLKHLHH 'HIH5Hx1 LDH &HH5Hx1L@H &HH5Hx1@Ic]HIc]IAWʋHE1LP1{HHDžDžHLH`H;q HƉ<HZHHhHH5HH810PHE1DžE1HDž11ҋH~fHHcAH9HL`A#LHxHLHƋH~-11fDfDHHcAH9HHL.vhEHDžAHD9P)HtAWy'$A?AA ACADASATAcAlAnApArAtt}AzA~tvAtmAtdAAAtvAtmAt At[AtYA~1DfD H5+HH811H[A\A]A^A_ú кɺfDUHAWAVAUATSHHHHuIHLEH HJH5Y1{ǾCpIHEp{/pIHUJ~rE1KDS~SHN1IH HHD4E~IHIBFH9CAAIHu9FSHs@dH=!Aŋ{HcPHESMcŅ~JJ<11HU4ASH9~&HCXH8<-uHEASH9ILEE1D9dHuF AA\AOABA5AnAA^AA A#tA&bA+A2DA:A;A>A?AAzACADASATAcAl,AnApArAtAzt|A~AAAtLAtCAt:At1At$AtAA~ 1K DAAUD$HCXHuH0B($ H5?HH81HUDZE*SID9HH[A\A]A^A_ø EE1KB0H5.HH81荩EIuHU9r~˸ B8@UHAWAVAUATSHH@H84~"HHH01D4EE44H@HBH845HpHH@XH8H}H@HXH@HBH8輩CH@{0DžLHEHEEH8p0;HpGH@HBH]H4H}DH8HGHUH4HX%H}"HHXH9Hp{E1DžxE1@AI]D9IݍwA9|WE1E1E1MA9AMBA9}HpXMBME̅`HpHBXNW(11J(+fDWXȀ<I?XH9t-B<Iuۀ<IWXXH9uW.z(^XAAIA9UMA9)A*^ZH8HC8H}H 8H@HB8H]HDxH5H]H8XH@HBL$LmM1!OB<#IIEB+HL)H9wHp{E1Dž|E1!AI]D9mIݍwA9|WE1E1E1MA9AMBD9~HpXMBME̅xHpHBXNW(11J(+fDWXȀ<IXH9t-B<Iuۀ<IWXXH9uW.z(^XAAID9UMA9)A*^ZH8HC8H}H 8H@HB8H]HD|H5THmH8h4oUPH8C0H}HH(H(HUE9PLHELH@9{0H@H[A\A]A^A_DtIEHpHBXJ48J<(xAHpxID9L蠤HxGI44IEHpHGXJ48J<( |AHpxID9PXXW$W Hp@HpHBXH@H`]P]H}HH(H89X0H}H@HCH}H48H}董H8HBH]H4HXrH8HGHUH4H`SHp{E1EE1fDAI]D9 IݍwA9| WE1E1E1MA9AMBD9~HpXMBME̅f HpHBXNW(11J(+fDWXȀ<I_XH9t-B<Iuۀ<I WXXH9uW.z (^XAAID9UMA9)A*^ZH8Hs8H}H >H@HB8H]HDMH}L>H5HH8裠H@HBL$LmM1OB<#IIEB+HLyH9wHp{E1EE1AI]D9IݍwA9|WE1E1E1MA9AMBD9~HpXMBME̅~HpHBXMW(11ID*fDfDWXȀ<IXH9t-B<Iuۀ<I?WXXH9uW.z(^XAAID9UMA9)A*^ZH8Hs8H}H >H@HB8H]HDMH}L>H5HH8ÞEHE]H89Z04Hp@HpHBXH@Hh]ÉTH89_0DHcEHHEHcHHEH@HBH]H4H}=H8HGHUH4HXH8HCH}H4H`HCHUH4HhHp{E1EE1f.AI]D9IݍwA9|yWE1E1E1MA9AMBA9}HpXMBME̅HpHBXMW(11ID*fDfDWXȀ<IXH9t-B<Iuۀ<IqWXnXH9uW.zy(^XAAIA9UMA9)A*^ZH8HC8H}L HULH]H H@HG8H]H}<$H5eH.H8)H@HBL$LmM/1"fOB<#IIEB+HLH9rHp{E1EE1AI]D9IݍwA9|WE1E1E1MA9AMBD9~HpXMBME̅HpHBXNW(11J(+fDWXȀ<IOXH9t-B<Iuۀ<IWX~XH9uW.z(^XAAID9UMA9)A*^ZH8HC8H}L HULH]H H@HG8H]H}<$H5H>H89THETH89Z04Hp@HpHBXLpTH8G09HcEL,HcTL$H@HBH}H48H}豚H8HBH}H48HX蒚H8HBItH`vH8HGI4Hh[H8HBI4LDH8G09cIEHpHGXJ48J<(EAHpxID9LәHx<I4IEHpHGXJ48J<(PEAHpxID9#ĐDXXIEHpHGXI4I|EAHpxID9@LHx;ITIEHpHGXI4I|oEAHpxID9X`X?WWWWn$jH8G0>!H8HGHUH<ӗHH@HGHUH<踗HH8Hw8H@HB8H}HIHEL0H5HDH8171UH@gt$@at1f.A<@ct1ՐUHSHE~UHcH4HcH E11E1A9u-AIE9tJD 0JҋEׅ~A9t1[UHE1E1ɋWw~9LGXIL1B<-t [HAHB<-u=9uAAI9GD_G~Ic11HGXH0H9OMc11DfDLGXIB BH9wAAAI9GFE1f.UHDG0E~gE1E1E1HW E1B ~>DfDHF0JHcNJTHGJBDA@IHW B9AIID9_0HUHH`Hu1fDfDHcHHtH@HtHNUHAUATSHADVEE15ӿ(̿AE1WJ AHE9tb<u1(E1A9tA tH(B\_(ID9u.v(E.v(EAHE9uu E(([A\A]tA(([A\A]E (([A\A]5(AEfDfDUHHUHATSIHc6H~$L1DfDHcH9uH[A\@UHAUATSHIIHcx6Hƅ~1L1fDfDtA$HcЉ A$H9uHH[A\A]fUHHtV0Hv8eDfUHAWAVAUATSHH}AHUAHc5IE~4E11HEH<عdDHuAAHE9uLH[A\A]A^A_fDUHWHw@dH=CUHAUATSHIIHt^HtYHH8?tNH^@AT$0It$8dƒtIEHpHcID$8H<IHH8H?uLH[A\A]fDfDUHAUATSHHG~#E1E1HCXJ< CAID9kHH[A\A]UHAWAVAUATSHIHHGH8MeI<$DAE,AE(E1E1AE0[fMeK6I<Me IEH<C4IU AE(B92BM2AE(AE,B92BM2AE,AIE9}0LH[A\A]A^A_DUHAWAVAUATSHIHt{G~tE1E1EeAE~UIcfHAt?IEXJ0<跆uIEXJ0|衆t͸H[A\A]A^A_AIE9}1H[A\A]A^A_DfDUHAWAVAUATSHIAOHcHHEEEE1fIEXHUHB<0 u=EAU~21E1fDD9tIEXJ B<0مt;IA9]AFIA9EEąt1kUd}H[A\A]A^A_EAFIA9Ef1H[A\A]A^A_UHAWAVAUATSH(ILMAE11AD< tDHc< uD)‰UA9~DB()M̉AA)L螎HU1҅~SE1E1HHEDC<<Ƅ)D9| ;]HM9t9IcCuHCXJ0B >AD$I9CEIE9CNHH[A\A]A^A_UHAWAVAUATSHIIEE1DOE~qE11ED$E~QID$XJ0<ނu'IG0IcJ0IcOHID$XJ0DAōCHA9D$EIEA9D$H[A\A]A^A_fDUHAWAVAUATSHIE1E1D_E~^E11EUE~1IEXHB<8.AAHE9eAGIA9EDH[A\A]A^A_E1f.UHAWAVAUATSHIAOE1E1_)E11҅~ME11IFXHB<8DEDM膁AAANHD9DEDMAkdAD9}DA9EtAt0~)Ic11fIFXHB::HA9vANAAGIA9F?~Ic11IFXH0HA9NENLH[A\A]A^A_tD9~Et(ApDfDAdNE1AHsUHdUHAWAVAUATSH(IAHUHcHWXH<E1ɅE1HHEE1E~:Le1Ic$IGXHB<LEDMAID9LEDMuE9t8E~0IcHM1fHcIGXHB:HD9uAIL;EtE~#IcHM1HcIWXH8HD9uLH([A\A]A^A_UHAWAVAUATSHIADžE11LhB<3&AA)HL9uA|$Hc+HELE1AfD;~DuAIcHMD$HAA9HEH[A\A]A^A_þH[A\A]A^A_H+UHAWAVAUATSHIIH HHcL,I_MIt5Hu!I$@ @IH HHt\IFXHcJ(<~uINXI$HcPJ)<}uI $HcHuHAI $HcQHA LH[A\A]A^A_ÐUHAWAVAUATSHHDgEE1E1HCXJ<(6AčxHc)*IE~,AL$HcI1HCXJ(0HHʃuIcB0HCXJ<(LцAID9{L,HH[A\A]A^A_fDUHATS@AAgtAat%gt@at'1[A\@HHH[fDHHH[H5H賄HtHHH[H5H莄Ht HH5HqHt H|gH5HQHt Hs|GH5H1Ht HG'H5HHt H+H5HHHHEfDfDUHH]LeLmHL%jI$HE1HpH5YH蔃HYHt&HHUI3$H]LeLmH5HSHHuH5H8HHuH5HHHuH5]HHNHjH5HHHKH5pHĂIH^H)H5H袂HHLHEf.赀DfDUHATSHIHmI@CxmE1D9tDKABIA9|SDECt11C~.I@XIcHH0HCXH0B H9{D9KtA@L[A\DUHAWAVAUATSHI1#mHEAvE10]ANE1E11fDIFXHB<8wAAAFHD9Ӆ~CAtbE11DIFXHB<8nwuHUHBXHB81AHE;f|AGIA9FaHEH[A\A]A^A_1E1IFXJ B<8wuHUHBXJ UB8IA9^DfDUHATSHA1kIHHEALSfxc E@CcWNIDDAx~T11EL$0fDI@@H08#t%IHXHHcHD IHXHHcPH1D HA9xLIIHOL[A\A AvAkA`UHAWAVAUATSHIHAH=jAVIcL<EEE1IFXHB< _uE~%Hkj1fHB -HD9uIFXH@B< uH,jIB -AD$AVI9SE~XLjE11111EVE~"HCXH0I AHA9FHcHCXH0AHHE9uAECHH[A\A]A^A_HiI HCXHcUIB!EPE~>LcEH=ci11H9HCXHBB"HD9uE?HiUfDUHAWAVAUATSHHHuED_EE1E1HC@J4 H}D9ut|HC@LcmN<J4 J<8}HCXJ4 J<|HC0J4 Ht J<|HC8J4 Ht J<|HC`J8J HC`JJ @BEAID9sQẺCHH[A\A]A^A_fUHH]LeHHHtHty1H$Ld$;w0}H`HtHcL$MtH5oRHwuID$H5jH]uID$H5{HCuID$ H5oH)u ID$(mH5H u ID$8PH5MHu ID$@3H5|Hu ID$HH5HID$0UHH 1HtH`HH@HHUHH1Ht HpHHf.UHHP1HtHhHH@HHUHH]LeLmLuH IIIH=eLLHHH5LHCuHH$Ld$Ll$Lt$@H5{LHNtH5oLgHڅtH5IPLQuu H8념1뀾dH.e2H5HLuH5LuHPHHtH=dH51/yHd fUHH OHUHAWAVAUATSHIHE1Do0EJE1E1I$`J(HxAH59H,dI$`J(HxAH58HI$`J(Hx AH5HI$`J(Hx(AH5HudI$`J(Hx0AAIE9|$0~bH5jNHrH5xH[H5NH1tAIE9|$0DH[A\A]A^A_fDH5H2@H5H@H5οH@UHH]LeLmH HIHtLH5LkuLH]LeLmfDLHNLCHH5IL1u@UHATSH IHHE11E1E11E1ɅAxc~8P1W1CA1cA1NA1IHFHHuAL$AT$ʉ|$D\$DT$$H5HߝH81tLH [A\ÐAP1W1CA1cA1NA1IHFHHuqE11E1E11E1\UHAWAVAUATSHIw,7IHEAEEuELuIE11%fDfDLIPAHE9e~WIEXHHU<BkuIEXHHU<5sHIILIXAHE9eEHEA9EULH[A\A]A^A_DfDUHAWAVAUATSHHDž0H0fHH=uHH8tIċfx5H IcH HH  HJHD`E2L HDž(AD$HHD1E~LE1fDAAID;tTIEH(<qiuHcˋ0IHHH@AID;uDD)ITRPIHIHAy~F f.k0dADIHc1DŽ0HAH 9yH(IHH9(H H[A\A]A^A_fDI0HH@HIIHUHAWAVAUATSHhI3HEAFHUHHU1HEHE\f.HMHAHMdDzAFHQHUHMHHxA9|4HxHUHMHMHED9|HEHh[A\A]A^A_HEHHEHEHMD}HMHMAFEEE1fDEAEIA9F~IIVXHMH F$(HMH B<(mgDcgtEAEIA9FH}HEHxHuHUH21DEDEtkUdAEAFHEHEHE;EAF.H}HEHxHuHUH21fDfDUHAWAVAUATSH(I2HEAD$HcL4HHEEE1A|$1~5E11fID$XJ0<Nftj1AՍCA|$H9AkdLHEJ 0H]J{HU41EI]A9\$HEH([A\A]A^A_ID$XJ0<eyrfDfDUHAWAVAUATSHHI1HEAD$1HEHE;DHMH]HDHMdDjAD$LqA9|%LuHED9|HEHH[A\A]A^A_LuHEHHEDmHUHUE1HHMAt$1ۅ~/ID$XHMH<dtv1A׍CAt$H9HMH]HEHLAkdH]HHU41EAD$HEHH]HE;E)nf.ID$XHUH<JdibUHAWAVAUATSH8H}HuHULgXHHcIXt9HcHcIƒ$AHcEHMHHHxEHL9uDUEHED`EDDHUDbZDHMAD‰AA*Yv*M^D,+IǾ+]þHxw+Iƾh+HIGigIGDhIGigIGD`IOdD)IG@igIG D)IG @igLxI@I@I@I@ IsHuIC@ISLeA$؉BISAD$BIC@ igICigICHEIC@igISAD$BIC@igIC@ ICigMkIC@IC@igIC@IC@ igICigIS HhIC @igIC @IS A$؉BIS AD$B IC igLx HE@@@ @DMELxDEE1HMJHcLE1K GK΋BIBJDBKDBKN19N9ȺN 99FMDEE~MLeN'L ;DEIBHcHHHEH8HcLeALeI$IIIAuþLLx:H}:H:L:LxL:H} HEHx[A\A]A^A_ÉȺ'ȲN9 H}j:HcELeIHH=/"HOfDUHAWAVAUATSHxIAHUHHEIVX1H}t HMHcHH<dIčxHcHEE&EEE1HEH-HEAD$HHxHHUEHM ME1EHHUHHEH}E1E1DfDIFXHB<(DhgZDhuEIFXHJ(HMHDAHE9u]ątiD]EtD;E~ EEDEEHEȃ}7UHMAT IL;xH}8HEHx[A\A]A^A_E-LeEE1EA$tFHcIFXHB<(Dh~YDhuEIFXHJ(HMHDEID9}ufUHHwH1DfDUHAVAUATSHHIIL5vIHE1ƅƅp8IHG1 H8uDGIcH2@86E1@GHH1LpDfDHH@@B4DOAH0@8uIcƄpA@H8A@HH1L HHtB~8uHcƄpuguLHHUI3udH[A\A]A^IcƄpptHp_A$H1H_AEHp_A$N_E11_DUHAWAVAUATSH(H}HuIHM`IH}`A9tEEH([A\A]A^A_E~E1AD$LpHL9tHED$HMD, ALZuALJuIIHMHMfDUHAWAVAUATSH8IHuHUMOEHEIFXHUH<_HxHE1AVEE1E1AEIA9F~pIFXHMHF$(A܉UuHuhEtIcHMHM AIcHUD$AEAEIA9FIcHUIFXHMH<H^H}EHEEA9FLH8[A\A]A^A_@M9MtE IcHMHM AEUHH\f(f(Y^]f(YoYY^]YEUHAWAVAUATSH(IIHHGENME1~3H_XE1fDH;]IcH9DGAHD;uu}~)I\$XE1fH;]IcH9DGAHD;uuAWuuLO6Iŋ@At$HHL<EE1HEID$0J40IE0H<.]ID$8J40IE8H<]ID$XJ40IEXH<]ID$@J40IE@H<\ID$(J40IE(H<\IE`HID$`J0IE`HID$`J0@BII$HMȋB:IUID$B:EIHIHHMȋEA9D$AD$A9EAMEAEAD$AEA$AA$ALH([A\A]A^A_IUHAUATSHIA1vGHNjP‹p4HHcPH@@HI#=GC SS_LIanalyzeL@HSXHcCHHtH<[CI$Ht^EAMD$zcEu0zHcKHCXHcHD@<HcsHKXI$HcPHD@<MIIHuHH[A\A]UHAWAVAUATSHIIHHtbEHVHUPxc}u1CtOc WNQIL}IHEHuLH[A\A]A^A_ËHH5HNH81LYEt$E~E1E1ID$@J(8#tOIL$XIHcPJ)<XIL$XIHcJ)<qXىH5GHՁH81XAIE9t$DHH2 XHH5HH81XEl$E~E1E1fDID$@J(8#tOIL$XIHcPJ)<WIL$XIHcJ)<WىH5HH81XAIE9t$@HH5HH81WA\$E1E1fDfDID$@J(8#tOIL$XIHcPJ)<WIL$XIHcJ)<WىH5סHeH81cWAIE9t$HH5H1H81/WE\$EaE1E1DfDID$@J(8#tOIL$XIHcPJ)<kVIL$XIHcJ)<QVىH5'HH81VAIE9t$HH5`HH81VET$EE1E1DfDID$@J(8#tOIL$XIHcPJ)<UIL$XIHcJ)<UىH5wHH81VAIE9t$0UHAWAVAUATSH(IuHHEH HEHHH8VAd}HED}EMEHEE~[M/Le1ID9t=I4$LkVHt@HHH]HUH<L@IH51UEIHE]9]uH}&+HEH([A\A]A^A_HH_S_HB_G_AfUHAWAVAUATSHhIHHz}HHU1ҾdLxHELxA9AdLxAILxHt<_HMidmafAtH}LxLpIHEHEHELpLxHUIDU1E11f.HMIDM~)IDu0~IcȍBAD A@HaTAHuIcDE9ELE1E1HEHEH3H}LxLp4TDDAHE9LxLpuEtbHEH}hLLp)H}LpLH {HUH3qHh[A\A]A^A_HUHUIcIL%/L 'AHLH۾ IHcxHAVEE1E1f.IVXHBF$(HB<('1ۅD']ADžt%uaHcUH~DAEIA9FLKHcEHHH[A\A]A^A_HcMAWHTAEIA9FAT$0It$8HEI<dtI$HLcJMAM0At$0LLH([A\A]A^A_fUHH]LeLmLuL}H@IHuAHt}Htx0dIE~EHcHHEE11fHUHHMHcIE8H4IBHHK 99AHD9C0A|$HctIAD$E1E1ID$XJ40LALL7HID$`J0~[HH4ADJfI$H08x!HcHCH 0ID$pH@HDD AHE9uAIE9|$`L趻UHAWAVAUATSHhIHpKHxH5/HpHEHrH=8a1BAvHxH]H]EHEHEHEHHEUUHEL}fDH}ANE1@AD$IA9F~rIVXHMH F, J:B D uۉ uHMHEHIcHcH]HAD$IA9Ff.HxJ9H]HHM H]UHUHU9EOЉU9EMEEEAVHEI;UEHEHEHE9AF~cE1E1D]D+]M9MDHMLHBH]HHB2AFHH9|AIHEA9|H}xHxHh[A\A]A^A_HMHH]EEEH5_Hp}u@H]HEHIFXJ48HUH<t,HpҁHEyHpH=^1贱1gEHuLLH+UkdAHMHHB:AAFHHD9AIHEA9fDfDUHATSHAW9~NHc*HƋ{~*Ic1DfDHCXH2BH9CH[A\H=^1аfDUHAWAVAUATSHIIEE1DOEE1EGEDXtwMˍAЃ v IEXJ0A0B"AD$IA9G~YIEXJ0B EIGXJ0B IE@J40IG@J<0耯usۃxuIEXJ0B 9AD$IA9GEIEA9GCLH[A\A]A^A_}fu*IEXJ0B 0IH=]1苯;"IEXJ0B -UH!t**^ZȰdf. a;vD:\iZWT;Y:,fDUHH]LeLmLuHIHL-7IEHE11Ht2H5V\H(uDI$CI$NHUI3UH]LeLmLuH5\Hѭu}I$0LpIH [d1L1 I$NHH{I$AHLH6H8NLAYHH[H6H01IC f.UHAWAVAUATSHIIDW0E~iE1E1f.I`J0HtcAME1E~A11E~,fDfDHIDHD9uAIE9uL[A\A]A^UHAUATSHIAľI}ӦALE1E~811E~#fDfDHH+HD9uAHE9uLH[A\A]UHAUATSHITAľI}CALE1E~811E~#fDfDHH+HD9uAHE9uLH[A\A]UHAWAVAUATSHHI1LDAƋS‹sHIŋ@~?E1IcUIEXLHAHcB:AD$IA9EIcUIE@HЀ;fAHcB:IcUIE@HH@AHcB:IcUIE@HHAHcB:IcUIE@HHAHcB:IcUIE@HHAHcB:IcUIE@HHAHcB:IcUIE@HH}AHcB:IcUIE@HHVAHcB:IcUIE@HH/AHcB:IcUIE@HH AHcB:IcUIE@H@ AELH[A\A]A^A_fDfDUHAUATSHAI͍S@XE~1fLHD9uH[A\A]UHAWAVAUATSHHHuȋwƋIċC-S1~9H41f.ID$XHHCXH0:ASH9ۍGH9CH}AE1FHEAE H rHHLID$@I<EH5dQ1AID;k}3HEȀ8uEID$@I<DH5Mp1AID;k|͋C~ 11ID$XHcSHH9sCAD$CAD$LH[A\A]A^A_ËSE1E1AID$@I|DH5o1ID9s|DUHAWAVAUATSHIIHUvwƋA~QIAUEE1zfDIE@J48IcT$ID$@H<LcMFXH}H qHEMIEXJ8Ict$ID$XHHH81AL E1@UHH]LeLmH Hk7IHfasta_seI$fADŽ$qM$NLu LTt4I$`LHI$CL!LH]LeLmLH5R>HH81聏LIE1@UHAWAVAUATSHHIWVI@0C~`E1E1fDAUIu@HC@J< ,fbt"HC@J4 AF0HcIV8H11EEE~*fDfDIH0HA9MHH]9{0{0HEHEEHEHEEHEAUTDEHE]A9]:IE@HUH4HMHA8H]H<ZuIE`HUHMȉH}܏A}HcɌHEIEXH]H4H}H}GiH}莞H}蕏HUHBHMH<zHxrHEH]HCHUH4H}IH}hH}3HuH}薇HC HM411IH]HTHH]HC H]9EHEHEUHE9P0sH}軎H}貎LHX[A\A]A^A_L cAH1HuH}u IH=7Ht0HUHB8HMHH57HH81L E1ANEEE1E1QDfDEIFXHHHB"B:!EIIcHMH]AD$IA9F~fIFXHB< IFXH@B< E)]AA)lj ttuIIcHMHAD$IA9FkUd}~I~pL]L H]HC8HMHHH56H;1HUHB8HMHH56H;1H ?H=#7HUHB8HMHHH5D7H;1z zHHEHEfDUHAWAVAUATSH(HAAHMDE?#QQHq@dZsHL41JHEH50H'IEtEtEu DUEnHUHB@J0H5rL1DD EAE9~&IcHUHBXJ0<LnAHE9L VLs1H}H([A\A]A^A_鿑D]EOHUHB@J0EDH5E6L1DD _HUHBXJ0H5HL1넋AHL4HMHAXIcJ0HH5L1HH@}t H$uVHH55HO H81e xINHMHAXJ<0XHMHQ@J2AHDfDUHAWAVAUATSHHH}HuU11Ҿ11ҾH}r911ҾH}XHcؾHƆHEH赆HEDeEnEE1EIŋE9EHHEJ4H}aHUJ4H}PH}bH}b*HuH}ZtHMN$LIHEJ<HEE1E~ZE11AGLxHEN$A<.uHUJIcHM AƍCHL9uHUN$HA1ҋ]~JE11ۋELpHMJ<uHUJIcHM AčCHL9uHcHMJEIŋE9EH}-H}$1HH[A\A]A^A_11ҾH}$f.UHH]LeLmLuL}HPH}ȉuĉULEEH]HcI@H<ЉʋuXIHHSHcʍxH9FEt$CA9ƉAMH*HMcN,H@XJ<(L@HC`J(UĉHC`JupHC@JGyHAŋID9Hc yH=gHcyHD FEH5LILE11HWHNIGhH@HHNIGhH@H@BHNIGhH@H@BHNIGhH@H@B HNIGhH@H@ BAHHE9uAAIHIGhHx/I_h5iŖHC=OIGh8==HcwHHc="wHA`Hc=wH~4E1E1LHfowHAŋID9HcMwH&Hc=5wH5|H=[%\IGhHc=e&fDfDUHAWAVAUATSHH}HuAM9OtK~8HcM4Di1DfDAMDDHuH}D9uH[A\A]A^A_L%bI $H=$HEȋH~*1AH5?I<$1*CHHU9B1LHuH}ZZH5{$I<$H[A\A]A^A_UHAWAVAUATSH(AIE}1E_EE1A\$A9VfHcI4IcIHHDžHHcL4HHXXJ<3HHHA`J0D`LME1BHHLfHHHt I7~HC`IHcHcHIL;teHHXXIB<()AIJ4DADĉ1HHZXIB<(>kI0\H9HpHH[A\A]A^A_HHy`~XHHEHH HDžHZDž LbLk;{HclHDžDE~'1I$H H9EUECI|$HcHH11HHHA9u@UHAWAVAUATSHHAAH`|H{`舞SD$H{`|H{`1dxDYIċsH1IEAG 7D9uCIcL11DfDH9{~VHC`H0J.A~HcHH I ԋt~LDD)H[A\A]A^A_EEDD)9E]LǜL躜ED)H[A\A]A^A_ËCEf.UHAUATSHHH`{H{`SD$H{`[{H{`1xDIŋsH1IE1ɋCC~yN11fDH9{~MHC`H0J&B~HcHH ILt~HCXH0BH9{AAI9CpsH{X11lCsH{X-5LOLBHH[A\A]@UHATSHw1IľH8zsLH111qH[A\fUHSHHw0H(HCHH[f.UHSHHwHXHCXHH[f.UHH]LeLmLuH HIIHtzDgH8IcH9AT$sHHHcPH@@HQA)fDUHAWAVAUATSHHPIHHHU1HF@H`LH d1H13H5HHH51_ H51H3AH5q1HAHPA1LHE9_AAwLkIEEE~S1ID$XHHP2A|$~$ID$XH0-HA9L$HD9uE9~pEIcLPIE1ID$XHA:A|$~3ID$XHHCXHB:HA9t$IHIE9~A룀_tfIcHPHEID$XH2A|$~2ID$XH0-HA9L$AHHE9AD$~!Ic11ID$XH0HA9L$HE|$LHHMH3 uRHĈ[A\A]A^A_H H5~HgH81}#R_)UHAWAVAUATSHHAD1u1H輩IE~bE1E1载‹CK~@Hc11fDHCXHIEXH8B"H9sAIE9uS~Ic11HCXH0H9KD{LѦHH[A\A]A^A_Aw薖H1UHAWAVAUATSHHH}Huw0EHEHEHHEHUHRHUL4L1҅~tE1E1HHEH}u#fIL;etDH]HEL4G,&A݉H}诼HuIcF,0AHMHIHMIL;euIcHMH]HHEHX H@HMH<qHUȉEHHUȋ]HM9Y0HEHH[A\A]A^A_fHUHML4 G,&A݉H=*Ht$IcF,0AHEH@HEIL;euQH=λHuUHH=H5HtH=ʺHH=GH=诺H5HtH=藺HH=GH=|H5HtH=dHH=sG1H=BdH=?B1H=BdH=uB1H=gBdH=VB1H=}HBdH=x7BDUHAWAVAUATSH(HuHU]Ižt]HEDEE~RIEIHL~*E1LxIB<#菸HADIM9uEIE9EuE11HHt2A|tH}HuIcHUȈAHHuIcHUL_HEH([A\A]A^A_fDfDUHwHXH>(UHw0HH(UHAWAVAUATSH8HHuUHMǾzIH踰HEDUEHu1HHcHcHH]HH;}uEE1HUJMDpEnHcHHUHBH<蜸A9HMHIcD EuyANHcH1@Hu9}K]ĉKHMJ@BKpEIċ]9]WH},LH8[A\A]A^A_1fDUHAUATSHIADyHúDL݌E~111fHI̋HI̋@BHˉxHD9uHH[A\A]UHH]LeLmH H1QI1QIHL:LLH= 1LH]LeLmQUHAWAVAUATSHXH}HuUMLEMMHEǀDhE} EH} E} EH}EEEHE}t\EHUDbE~H1fDfDEHUHE9P~%HUHB@HUH4HUHB@H<TuHEX}EHcEHHEE1f }u5HUHBXHUHB48wHcƍNHD=E;ut}tMD]E~DE1E1fDCHEJ4HUHBXHUHB<8LCAID;muAGIHU9BTEHEUHE9PLHX[A\A]A^A_Hc-XI4DUHAWAVAUATSHhH}IEHcWHEWHEM11AHuH9uAHUDzEEHEE1A*EA*MHEH-HEWE~PLe1fDIc$HMHAXHB<8p~*pXID9u^M.ME~^LeE1Ic$HuHFXHB<82uHcHUH=XAIE9u1fDHHtVHM fWf.zt^Mf(p萲pYXMMHEHHHuEAGIHU9B]*EM^MH}XH}XEHh[A\A]A^A_HEDpE~HE1҉HD9u AEH}XH}XfWEHh[A\A]A^A_3EmUHAWAVAUATSHXIHuHUGEHEIE`HUHU@EAEHcHHEEE1AD$IA9E~lIEXHUHB< ,uIEXHUHB< D}D}McHUHBHUHB<09u:EAD$IA9EEHEEA9E7HX[A\A]A^A_HUHBHUHE IEXHUHA HED$UT$D<$EHUH5H;1H3LD1HX[A\A]A^A_UHAWAVAUATSH(HHuII1HI EsZH5`LgIL蕻HEȋEH jHvHH5tHH81P}L}ME1ED}r}gMt ACu4EIM9MAE}puHHMH`HLpICH5fH L茮H`uLH=萮H=EIM9M{LH=\IcGHMHQ8HH5L1I;]uuHcHHMH`HLp(MHMHAH HUHB8HL)H57L1蛭LH=譭LH=蔭L<H}sTH([A\A]A^A_HHMH`HLp09H LLH}H([A\A]A^A_UHAWAVAUATSHhH}uHUMLEHcHGXH<IĉÍxHcPHEEMEH}1<EHHEHEAD$HHpH}vPINjELuEHDžxfIcHMHAXHHU<脣urE~kE1E1HMJIcHMHAXHHU<XHCt#CCIcHxA;HNHxAID;muHxHMHHUHM EIE9E>LREHEHpH9UHHMEEt H}GRHEHh[A\A]A^A_HE@EHcOHEHUR~1HMBHHM9AEEH}-mHEHaHEHȍAaHHuEEH}言,UHAWAVAUATSHXH}uHUH=HEHcHMHAXH<8IĉÍxHc)NHEEDMEHE1AD$HHE}HEHEHEE1EE6HB;E~jEDefHEAAHED;utJHEHcHMHAXHB<8٨ALcJH DA誠t]1HMHcHMHAXHB<8HHҕHE;]uAGIL;}Hc؋ut H}OHMHHX[A\A]A^A_HE@EHcLHEHMDAE~1HEBHHM9AEq1냾gLHDfDUHAWAVAUATSHXIHu~Hc&LHEHExHc LHEE^EEHEHUHHUHMHHMfDHEPHp@IF@HMH<dHHHMHQXH4H}胨H}&(H}wEąLeLE1M|IEXJ8B uIEXN48Àt躖EIEA9ElLH[A\A]A^A_fDfDUHAVAUATSHO~{LcE1E1&HcHDfD腒AUHAWAVAUATSH8H}HGpHHxXH=1*Hc=6HEHc=~6IHc=~6IE1HE@+HcH]EHEHUHBXHUHHU<译DD藉D%x~E~8E1HEBHY~J4D*HUBAD$I9=~ˋ%~~>E1CH}J4D)CAD$I9}D}E~4E1@CH}J4D)CAD$I9}EHEUHE9PD裈uD=}~:HEpHU192u#IBH9+9uA DMu A >D7A܅u A H}7L7L7H8[A\A]A^A_H5|idmafFtH=|;H|H5|HclustalwHF_colF H=|;H{|H5|HclustalwHF_dotF H=M|X;H9|GH}HEH=O|,3H3|A*HUHBpHxXH5#/ HUHBpHxXH5^.HUHBpHxXH5.5{tHExL1A9?u tBH9ti9uKHUHBpHxXH57._=4{QHEpL1A96t96BH9u.A:UHAWAVAUATSHXH}HGXHcHHuH 0HMHcHHUHHEH胏IōDLcLr2HELa2HE1EE1E1AEHHEGIc׸-A.DDHMD$ A.DDHED,AIL;uHEE$AHUE,+uA͉M̉uÀHcHDE\$EEE1DDDUED)F+E;D$HcD9}1DfDID$XJ 0~D9*Eˆ9HD9uEI]A9\$dL\At$I|$p蝅LID$pLH[A\A]A^A_fHH5:HkH81!#EI]A9\$ A ACAD$)ЉʉÉF,:AE}@UHAWAVAUATSHHDDgELcE1E1FHHEfHCXJ(B< ǀ~HcHDq190q9|q 9|q9q99AMЋELcL ;ExLLhI2HcLuALxIAIIIu¾H}EEH},H/EL"ELELHhHĘ[A\A]A^A_HEB@DXmDXeq9CA**^YD,ADLD)UH}HL@>HMBAAH= HYdUHH]LeLmH IHLf,H5L3 uHLH]LeLmH5L HLH]LeLm fUHAWAVAUATSH(IIUHMWnHEAHcLEnH9t8LLH=1" H HHݕH01莢EfD/HLH8mH{LmHuHHIcIE~W1ҋEHH2fB*!tIcHUHDI11E1EME~AE11EEE~&IEXHB<0NujAHE9eAFIA9E1H1ILH1LHH=1|LUeImfD11Au~IGXHB0-HA9MyfDUHSHHWHw@dH=)t(SHs@dH= H[zf.1HHɐUHAWAVAUATSH(H}Hc]HEHEDPEEHEHUHBXHUL4LWEą|E11LhDfDB<3FMAA)HL9uA|$HcILE1A;MDu AIcE$HA9UIHEHUL<EHHEȋUHE9P(HEH([A\A]A^A_UHAWAVAUATSHIHHxH5̫HVHAEAEHxHHU1HEHEhHMHAHMd‰UAEHQHpHMHHh9E|=HhHUHpHMHEU9|HxHĈ[A\A]A^A_HEHHpHEHMMMHEHEE]EEEE1E1E1E1fDIEXHUH<DX0SAIEXHMH<S1A-1҃-‰DXt*1E1A9EAA1EACHA9ErDeEu}HEHpHUH 1]HUHMEAEHEHEHE;EE]EEEE1E1E1EDeEt}}}}}{HEHXHUL"!Et"*EA*^Zdf.~HUAHM ,kUd} HEHxHUH2E9EEN1EtkUdAHU HE HEHpHUH 1EkUdAHUHzHMH1E9EEM1EtH5HREHH5HREHH5ЩHREHiH5HbREHJH5HCREH+fDfDHUHrHEH1ED+UkdA `|\f(QZW|Y0|,@UHAWAVAUATSHIHHhH`HHHUEHЋ8Hh:ǾHpH5HAQHKE1HhEE1EHEH`HHXH`HH}8EHEHcEHHEHcEHpHHEEHEHXHHUEAEHcEL4Dž|EE1E1EDžxE1f.IEXH}H8B< DHD@hNIEXJ0B< TN1Ƀ-1҃-‰DHD@t/1x19EMA1|AAD$IA9EaEE1D|EtkUd|ADHUH}8HUPH}HDHEEHEHH}UHE9EHEEHh9#HcEHDmEtHhH`#HpHHHĘ[A\A]A^A_Ã}}}} }A!E *EA*^ZAdf.fy x\f(mMZWXyYxD,fDD;}MANE1ɅkUdAD;}MAME1ɅqDž|EE1E1EDžxE1E6D+xkdAAE1Ek|dAAHHhHHEAEHhBAuH`AE119|ƃ19}HcHcH`Hlj AEH5HLEHH5 HLEH~H5HLEH_H5գHLEH@H5HbLEH!DfDEHEUHAWAVAUATSHHH}HuHUHHQ7HHu fDHÀ;_tH=)7HKH7_HKIHtIH5fHKHt\H=6L 6L6HuH}HH[A\A]A^A_rT dCH6JH}(KEEEEEEE1HHE;EL8611D}t Ef.IL;utHEAEHEE<Hu}AA)HuD)ÉDe]EyDEEEEEEH=5H5R7JHtB1ɋuuu)HH[A\A]A^A_H=HB5hkUdMtH5L*u1DMEtkUd}H5pLtH5LuW.zt.zt_Y_^H5LuGWDE _Y*^(\H5dLYW,tb,**^Zȸdf. _w(;_\3ZW_Y_,**f.h_UHAWAVAUATSH(IHuUHN1I1ED]ELuEAUIw@,I>tvLcJ<HIW`H2Hc]H IE`HHIE`H4IG@H48IE@H<3IGXJ4IEXH<3IG0J4IE0H<3EEIE9E]uA;u}6HcH fIE@HIEXHHA9uދEAEIHtUHuIL@LH([A\A]A^A_ËwH@ =HAUHLnIžHfDfDUHAWAVAUATSHIAAׅt wA9>Et A|$A9|LH[A\A]A^A_þ+IAT$~=E1KD(KH1AiD$AEAT$I9DB1ɺL認1LHEAD$E1E1E1E1~@ID$XJ4HOXKHcJBAAD$ID9AIE9u~!Ic11ID$XHHA9t$LmH@D|;HDHLIľHKAD$UHH]LeHHwH@;IċSHHnHþLHH$Ld$UHAWAVAUATSHIkGdE1^A}PIIc}IAU~2E1KD KH/}̉AD$AUI9DB1ɺLʋEeE~`11fDIEXHJ:HA9MA]~/11fDfDIUXJ1HcIH HA9uLLAuI}@9IAUHLHþLHH[A\A]A^A_fUHAWAVAUATSH8IHuHHH51AiFESH}.Ht L;IƾCH}.H6A~HEHEAFAFE1E1E1-@EG1ɺH}'AAFID9~TIFXJ HU<$uIcHMHH IFXJ H]HH-}A냅~TE1E11IFXHHU<K$uIFXHIcHMHHM AAHE9fEHEA9FH}RH}-H^A^]A^]Ⱦ9HEEE1AFWE1E1AFvAIE9n~ZIFXJ B<8q#uHcUHEHH IFXJ B8HH,}ȉEAIE9nAGIA9FiEA1ɺH}KE1E1AF~YE11AF~?IFXHB<("uIFXHIcHMHB*AAHE9fAEIA9FH}FLH8[A\A]A^A_@HESCR;1CUHH]LeLmH @-*A"*AA*A *€gtHatSgt~atUAgtcAD$<Ag!H]LeLmHcHZQDH} HMZ]ZUZMZEH5{HIH8 H8H@!HtEH]ẺCEĉCHEu9p|oH8V1D[E]HCXJ0-BH9CAAEDžxDž|EEHEH[A\A]A^A_AAL E9utKB<AIE9uE9tt KB4܄t KE<KE4UHH]LeLmLuL}H0IAA1脺IH5kHbHEDHW=H5nH1HYLL#HH]LeLmLuL}qXUHAWAVAUATSHXH}IUEE1WE1HE@~bfIFXJ8F$(HUHBXLJ8;Aw!IcHGGD=tAD$;EfAEIHU9BEIUHE9PyEE1AFSIvXJ.AHEuRHcHFD=tFA9E|>AAf.J.HUDHHU{ȁvAtAHcDEHEEDE IcIHH1IFXJ(IFXJ(-HHD9uDDLYI1fDIFXJ(A$HID9uDDLYIH}EIEA9FH}0IHLDAVHEpH_IAFAEAE~'E11IFXH4IEXH<fAHE9e޾dL踑LLHX[A\A]A^A_AKAHcDEHEEDE McHLH1DfDIFXJ(IFXJ(-HHD9uDDLkXI1fDIFXJ(B"IHD9uHUHBXLJ8;DDLXIH}WAIvXxDEAifUHAWAVAUATSH8IHuDVEuFAt$A|$HEAt$A|$I1LYHEHEHHEEL$EE1E1E1ID$XJ4(H<HMHED$E~>1fID$XH<0-tHHHUH J;FHA9D$AAAD$ID9H]HH]At$0EE1E1AL$*HUHBXJ0C0B*AEIA9D$ID$XJ0B<(-tJK> tH]I҉à DH5tH}ظtH5?H}ĸhH5ftH}謸PH5BH}蔸KHE;XHUHBXLJ0;dAEIA9D$%EIEA9D$H5>H}/u[H]SHuLHH}1H"HEH}LHEH8[A\A]A^A_H5zsH}uHEPHuLYH]HCXLJ0;HE;EHb@UHAWAVAUATSH(IIHUAED˾@ݻHEȉEHUȉBEBDbDjHHHu1L%I1LHE1L HEE1A^E^E~E1E11fIFXHB<8AAAFHD9Ӆ~CAE11ېIFXHB<8^uHUHBXHB81AHE;f|AGIA9FdE1A11HuL袋HHuH}IHUHHIH}LHH}LH([A\A]A^A_1E1IFXJ B<8 uHUHBXJ B80IA9^@fDfDUHH]LeLmLuL}HĀH}IH56LHt!LH}H]LeLmLuL}HExzHEHMQE1E1AAI_A9|)IIBA9|HEH]LeLmLuL}K?HEHULHUH]DeLuHMILHMHEHHEHUH1HtHHMHAXHMH4HMH<LHUB:HMHUEHMQHEHEHE;U6yDUHAWAVAUATSHXH}Hu]HEHMQE1E1AAI^A9IIBA9|H}dzþHEH8贳AH}E1Ʌ~<11E~'fDHHd+HD9uAHA9uHEHX[A\A]A^A_K6HEHULHUH]DeMHMIL HMHEHHEHUH1HtHHMHAXJ48HMH<HM?HUB2HMHUEHMQHEIHE;UfUHAWAVAUATSHhIHuAHE1HcIA|$HEAT$E1E1AAIXA9IIBA9|E1El$EEE11ID$XH4L{LLqHkdIcT$H1HAAt$1~*HEH1DH9u9}}}EAHA9{H}LDHh[A\A]A^A_KHEHULHUH]DmL}HMILHMHEHHEI$1HtHID$XHMH4HMH<HMLx=LxHUBHMHUEAT$HEHEHE;UrUHAWAVAUATSHHIHuWHw@dH=mYLQHq@dH=JY轅HEPHp@dH=,Y蟅HMQHq@dH=Y{AHcID$XL,L~Íx5HE1I}E1AAHD9~tAJEр(uIcHuHHDD9~8HE1<(C<)A)H9HFBAAHD9IcHHUHIcHMHAXL,LÍxXHE1I}E1ADfDAHD9~tAJEр(uIcHuHHDD9~8HE1<(<)A)H9HHFBAAHD9IcHHUHAt$L1_CHEHMqH1JCHEEt$EE1EEE1VE11=:f(f(DMUID$@J(f(H5iH37H8.AIE9|$ID$@J<(?#tHuVHv@dÃtHMDHuL迆HEHMHuH}訆HEHUrA|$HHMHE1Ht.BtR tAHHcHHQHHuHuHE11HIH<DID$XHcJ(0IL$XIHcPJ)0IHHHAtQ tHHcHǀ<uID$XHcJ(6IL$XIHcPJ)6AE<(A@E<(ADMB3DMAkd*A*(^Z*^ZAi**^ZiE**M^ZH5~gH5H: LHH[A\A]A^A_1L/H1HH27DfDUHAWAVAUATSHIHxOE~2HW@11H8#H9uGljUHxHHHHUHxHUȋ0PAEEEE1EHcHpHcHhDuAL$LEAD9ID$@HDuLk8#tID$XHHp< EID$XHHh< EMMuEEDuAL$LkLEAD9kDkMduDkEdkEdk}dHULAB HMLDDABHMH1DD}FHMH1}ĉFHMHx c@IHMHMHHEHAL$0PAeEE11E111PDuAL$LkA9FLE DfDAL$AHD9ID$@H8#tID$XHHp<EID$XHHh<dEEEGuUU5u}5}X'DXAggAaga}}XDXAgAaga}E}E}}XDXAgUAagSa}g}Et<w }guE}-E}"E}}XDXAgAaMgaO}gEt<w }guEM9ME9EEAL$AHD9E.@NHUHxdtDxE5@c)@WHP@CHxHĈ[A\A]A^A_E2E&H wLHjUHAWAVAUATSHIGE1'fDfDD}A~~GE1E11fDfDIFXHB<8NAAHE9fAAVAGEȉI;UȉELc~CAv~3E1E11IFXHB<8AAHE9fAIMu1覚IH54KH脷HDEAMHuH5OH1HwLLH[A\A]A^A_AFIE=fUHAWAVAUATSHhItHHcբHxIc}HEH5lLmIHAUIu@dHlsEEUEHcEHHEHEILeE1EEE1fDuIcHEEEE9}IEXHUHH]<dEEMEE11/DfDZEXZB AHE9eIEXHXB<0 9EtUHUH* 9)\f(^))HEB MfWf.ztf(HEt@EHUH*^(AHED;}kUdA}HxB}NHxB9tIEXLHUH;*AFIAA9ErIuXIE8H]H IE@HL%k%L DEH5&XI<$1YEEW.vU^UEEEE11DHx IEXHUHH5WI<$1IEXHUH<OulEW.ztHxfWH5WI<$AA*MHE^ZDH5jWI<$oI4$ gCHA9E1ZEH5IWI<$71IEXLHUH;lfHxB*XEE&XEE*^E2ZHcEHHEEEE=H=7V1蠚PfDUHAWAVAUATSH8HuZHEHaHEHȍAaHHuH=jIľ;IŃ}xEE1AE1IcIuHȧHcUHMHEL_LIc HEȋEąDH A?HEHH5OHH81P1蹚Ic諗HEEDfDUHAWAVAUATSHHIuHUHcgHEUHE}HEH88AL}ILAH;AAHD;muUA|THcHHEH0HHf HAI7HHf HAID;eu6HUHH藙HUHHIHHUH8EIHxH5+>~HE}~hAA}AVIv@IJ< dgHHIFXH IF@HH5ԥH}1AID;muH}#I?L}IIWHUHBH}赘LHH[A\A]A^A_AVIv@IJ< dgfHHIFXH<rIFXH IF@HH5)H}1.AID;muPHEH01NtHUH:~HEHH c<HEHH5LHH81rHUFfUHAVAUATSHIwA;vt-HoH"H=LsAVSH8IċH~2E11fIFXH4ID$XH<,AHE9l$AFAD$L[A\A]A^UHAWAVAUATSHHHHHU1E1Ht HiALEDCH A]1L1MAI! t€DIGLDIM)DSDsH+IƋHcؾHPHH<Iċ~H1/DfDA$1AFHIV@HAFI<$,AFL[A\A]A^LfB(xMl$MfXbLfB(xMl$(MfXLfB(xMl$MfXlLfB(xMl$ MfX1UHAUATSHIHI蕒A|$(A|$0Hc}HED$0E~61IcTID$H4H,HCHA9D$0HH[A\A]fDfDUHAWAVAUATSH(IHuDO0EPEHEfDfDHEP0Hp8IG8HMH<_LcH]HCJ<2IHH8IGHUHINHC8JIG8H]H<MFH581IGH<?H]I_HUHBJ< HxHMA%f.H]I_It$H;HAI>]IA9|ԾLEHEMA9O0LH([A\A]A^A_fUHAWAVAUATSH(IIHUD_0EEE1 fDfDEIEA9F0AT$It$@IF8J<8d^uE1ET$E~t1EEBAV0Iv8ID$@J<(d]HHMIM.v]EIA9\$HcEL,ID$0J(Hf IF8I4ID$0I|OEIEA9F0LH([A\A]A^A_UHAWAVAUATSHH}A11AE~=LeE1I<$D)HHI<$HAIE9uHEH[A\A]A^A_UHSHHHXs-cHCXH8CHH[f.UHAWAVAUATSHIHUAV(Av0IAF0~0E11IH4IE(H< AAF0HD9AEAF(AEAF,AEEf0E]Eǃ}+EE1E1HEAIHEE9~0IE`J D8IE`J @IFJ4 IE0J< IFJ4 IE8J< jIF8J4 IE@J< UIFJ4 IEXJ< @IEXJ< fI]IEXJ< (HUȉ}MIFJ4 IEXJ< 3}+t"I}XAu-IEXH8AEMupLH[A\A]A^A_DUHAWAVAUATSHIHHH`HHU1Ht ;sH=AH H=AHHIH 1H1w1\H1RI1HIHz0Ǿ蟧IMhLHLL}LLl$L$$ILH mA1L1L賏H5L贜IĐLJ$uL=1IDA*AIHH5AL1DHtLwsLH HUH3H[A\A]A^A_H5 H_vH5V@HHt?H5 /H5t,HHHHHSHHL蓮IT1HHH LL,$ILH @Iseq2msa_LDžweigfDžhtƅHHSH Z.HH5h?H H81HH@UHAWAVAUATSHxHuUMD|ҸHDHUIHEx0)IHUz0HHMy0WEE1E11~+D9tJKX0HEx0H9JÍG*^Ju \.v(DMA@HUz0I9~bE1 EHE1E1E9t.K KJBYHY^B HMy0AIHD9HcdIHEHcx0OHEHUz0eHEHMq(Ƌy0HEHEp01WE1ML1W9tHh B\_H9uXI9u*1WI1W- \XH9u.v(щMI9u^](^Y ^EEȋUAUHcHpHEIcUHMHA8H4HEH8(IcUHMHAH4HEH8 HH H=<HHH=<HUDB0A eA/ *|lE~q1W1HMuIIcEI X0E~$L1HcI]0HD9u.r(ȉ}HD9uHcEHpUATHpHEHUz0W҅~F11WEx,1fAD9tHIQ \0_HH9uXH9u*^" Y^EEAA*M,;E!E,ZeHUHuHú1HIHHH=?;8HE;DuEHD;HDH5F;H H91HUH5?;HH81UEH54;H H9S0H5:;HgH81}kS0dHMy0H5,;H=H81SLHx[A\A]A^A_l.Es|ZMMIcTHMHA8Hf(H5:HH8IcTHMHA8H4HEH|IcTHMHAH4HEH|HUDB0H]eE9,<ZMM(E*W^M(AB9If.UHAWAVAUATSHHH}HuUDEH](*Eȃd~ ^E*Ẽd~ ^qE1EHE}HUHuHU HHEx0e裞HEHUr(Ƌz0莞HEHEDxEWE1E.zHE L%^A(EE~o11DfDHD9tT<u1(1f9ttI(\_(HD9u.v(AHD9uE.v8E9}3At-IcH8aAHE LHUDBDE.zHE LD%nAE(ԅ~r1E1I9tSB<u(11f9ttK(\_(H9u.vA(I9u.Uv7E9}2At,IcH8cAHE LHUzGEA5=A%E9EE1HUr0)tAD$IHU9B0PB tN,HcEL4HUHB8J4(HEJ<0UHUHBXJ4(HEJ<0EE[ARHU L HEpEE~z1((E1fDI9t^B<u1(1f9ttK(\_(H9u.v(A.v(AI9u}u+EAIcH8A}tHUHBJ4(HUHuDHǺ1lIŋEuLHH[A\A]A^A_HEP‹pL|IHUB0~HE1E1fDAD$IHU9B0~)BtHUHBXJ4IcIEXH<_AHUBAEdLLgfUHAWAVAUATSHIHIHHHU1Hc~0{HA^1fDfDHBHA9FE^EDžE1EfAEZIcHABIFXJ(<uIFXJ(|tDžA?1Ipwsim_frLDžagmefDžntƅIclusteriLDžng2Dž2E1DžDžDžE1DžHHHHxfDžE1H5T)LHHhH5HttH5HtDžIA9V|DžA?Ipwsim_frLDžagmefDžntƅHclusteriHDžng2DžH81TD9{0ODž R2E1AHHQ.D RDD)DA9D9AH=F-LDd$HQH $LRIH ,1L1u]LiHmHQHËH0DH5HZH81pK0D9=EL싕 R8H5L豽HQL蝽vH5H脽HHpDž RdA2AKH5|L6HL""UHAWAVAUATSHXIIHH`HHU1HH8tH14HHHHT$L$$IIH V1H1~1LHHMHtHǼqL,HA0HAW0~5E11ېIGHD(H}HH}HUHBIAHIED}̋PE11fDH@`HHcBIƋIEH@`HHHcIƋ@AIMHA`HHcHuHF8HHA@H<EDH5\1IEHD9`IAH}HU9PIH} LHEHH[A\A]A^A_HcEHD}wIHUr0E1E1LX:AIHD@HHMJыAABIHu9F0HMJу8tIct<*tAAHH4HHA <*tHHIHD@AHH}J׋AHyHƄ_fDUHAWAVAUATSHIHPHHHH=؟ H輴Hx WHxHH5H1cLEH H+H5Hx1LEH HH5Hx1LEH HH5Hx1LEH HH5Hx1}LEH b HH5kHx1VLמH pHH5DHx1,H52Hx諳HȉEH5Hx芳HXEązAOQ)ʉUEIc6VH`Ic!VHhDMECH5Hx HHTQþH;EQAHE1Ʌ~>11E~)HHd+HD9uAHA9uAWIw@1HXH@1H8HËP0Hp8L}IǾHXHHXZH5Hx,HL4HHdH5.HEHPZHHAWtH`HH@_L`E1E1HH5H藱HtIG@J<(HH uoHiH5oHdHt$IG0HtJ<(HHu7H1H53H,Ht$IGpH@J<(HHtA$AA_tIID98L`IL@t~nE1AD$tI9~EL`C tIG@JH5!H;H81QA_AD$tI9H`HH@DEDEqIƃ}~#L1HH9uDkI~H@1ҹf9HHHD9|E1ɺL~cIPEL衄:H`tHcL`E4Et;E EoEHcH4HUH<1fDHHUHHAHA;G|H`1tA_D]EEH5fHxҮHaLHHH5HEHPHPxE11AWIw@HPHA@H<e*"tHL`AAHLPE9aHHDAGt.dDUEEEȉEf}AIIILMIDIE D9M}"~t HGHDA<$t IHDAIIID9뱸d+EECHcH4RL^DeE1EGE~+1L`A1%<H1<LH5Ht$H$L +IH 1L1VH5?L^6AH a11H=ҧY>H5L%6AH 11H= >H5L51" H1H;I1>;LLt$0D|$(T$ L$H\$H5Ht$L$$L +IH ;1L1VH5L^5H5 LG51x HLt$D|$T$ $ILH C1H1֔H@HHH|HHxH5L4 H5L4 1 HLt$D|$t$$ILH 6^H5#LR4u^AH Y11H=Q<CH5L4AH 11H=<H5L3AH 11H=U;H5L3tH5L3]H5PLw3 HHHA E1HHHFIcH<譋1҅HHHA AD9~ tƺtj1K HLt$\$Dl$|4$ILH <11貒HH@HHTHHP1 HLt$\$Dl$|$ILH R11HH5$LS2AH V11H=N:H5L2tH5L21-IH5VHJIE1HHQ0~WE11HHH`HH@Ht#AHCHF8HH5L1AHHHD9`0LS!HHD9z0AH }11H=e9HHSCRIPT_tHHc_generiHHc_methodHH.pl@modeHH#RNA_temHHplate@tyHDžpe#_fDžF_ƅEH@HHH?HH1IMH 1H1WH5@L_0AH b11H=ӡZ8H5L&0AH )11H=!8H5L蟑HCE1E1HHDq0ErH5LmIHjHHHF8N4(H5gLCHtHHH`J(H{H5LHtHHH`J(H{ hH5uLHtHHH`J(H{(H5PL谐HtHHH`J(H{0H5ںLHtHHH`J(H{H5LNHtHHH`J(H{8H5LHtHHH`J(H{@taH5LHt0HHH`J(H{HuHA8J<(HLHCHAIHHD9~0'HB8I|L HC@HA8I|HLaHCHF8I|HL藟HC8H5LDHM L蘃1LtIEn0EDžHDžHHPHHQ0Hq8IF8HH<dAǃFIFHHH5H蔎HHt(IcHHHH`L,I}tH5HUHHt(IcHHHH`L,I}H5fHHHt(IcHHHH`L,I} H5-H׍HHt(IcHHHH`L,I}(H5H蘍HHt(IcHHHH`L,I}0H5HYHHt(IcHHHH`L,I}8RH5HHHt(IcHHHH`L,I}@nH5IHیHHt8IcHHHH`HH{HuHA8H<HHC@L;Ht&IFHPH4IcHHHAH<<HA9v0[L;Ht L֎MALH~H5HʳH8]H5LHMHA8H<HIE8HIFHPH}H5L)uPAH 11H=11HIMH 11zH5cL)AH 11H=}1HB8I|LIHC5HA8H<HIIEH8IFHH[HF8I|HL HC(HB8I|L_HC0HA8I|HL2HC LQsTHA8H<HI$HAt$0I|$8HHH5HęH81pA\$0~%1 A9\$0~LL*IHuLH[A\A]H[A\A]E=DUHAWAVAUATSHIIH="]Ht FA~A9}AM}-<3H\E1EeE~RE11@AVIv@IE@H<,tIcH\HH LHHtҸ[A\1[A\ÐUHAWAVAUATSHXH}IHHVO9Hc+IAGE1~e1E1IG`J IpH Hf0?HHtuIcAAAGI9A9'E LDL3HEAGALL3HELqHEAOnEHEHE@EHEHEUA9W7IG`HUHIpH Hx0QH HEHttHuHZXHAW‹pEHEAGxvEE1HMHAXH]HB<(bn11HE@~+H]HCXHB(H9KAEIA9G}HUB~711H]HIH]HHE9pHuH} HEHuH} HHAH}TLTH}TILHX[A\A]A^A_1LWHE@LѵH5rH+H81AjHEHǀILJLH}AWHUB~tLcuE11,f.HMHAXHB(AHHED9`~=HUHBXHB<0auHUHBXHIGXHMHB(B*EAEIA9GALDfDUHAWAVAUATSH(IHHcE IAD$E1~_1E1ID$`J(I|$pH H0]HHtufDIcAAAD$I9A9EuLDL0HELE1E\$E$EE1#EIEA9D$ID$`J8I|$pH H0HPIHtDEtLHTHAT$‹pAIEL$E~gE1fID$XJ8<._11EFE~!fIFXH-HA9NCHA9D$LH}O HEEIEA9D$ LQLQLeLH([A\A]A^A_1LSHE@fDA~~+Hc}11IFXHIEXH8HA9vECHA9D$IL uUHAUATSHHIIHpMtH{pLLHCpC~rE1E1AID9c~UH{pH HѯDHaHHtǀHC@J4(HB@H8gAID9cHH[A\A]2zHCpJfUHH]LeLmLuL}H IL-IEHE1AD$0us1H5LIH 1H1HHHID$8HS@H0H:WfHHUI3UuH]LeLmLuL}dE1E1LLIT$8LIt$蜣H1H5)HH HZ13HHID$8N(H 1L1cHLLH5HsH81qdAIE9|$0Y1"dUHAWAVAUATSHII0 'IAG0E1K@JHEAT$0It$8IG8HMH<dƒtKK@AD$0~z1AD$09}cH \H'LHHtЋPHp@IG8HMH<dcƒtKKPA\$09|AEIA9G0LH[A\A]A^A_UHAWAVAUATSH(H}HuHUHc0IHE@0HEE1HUJ0xHcHMHAHHUH}cIHcKE~3I$L[A\UHATSI%Hú%LHYID$HCI$0H0Hǃ`ǃ"Hǃhǃhǃp"Hǃx"H[A\UHSHHHtWHHXX)*HXHf(_Hf.ztf.wH[ÐY ؄Y ؄,H5LƣLH5H;1:XH +H=QXH[UHH]LeLmLuH IHLwLo1HD)*HXHf(_Hf.It$PLBXHHL HpPHDIcI9v1HDfDHH2HHI9wfDHH$Ld$Ll$Lt$HXHL1HpWf.]Y TY T,HLBLH5H;1VH +H="VCH=2MfDUHSHHH%t6$&uhCHcHCHȉCHH[f C; CHcHCH tC1HH[fDfDHH~H01c1HH[Ë-C~0H5&CH9t/H1 HAHH9t9u1HH[HcHLF9~(LFHcH DHHAH9uHcHIJ B5BHcHH=BHwB mBfDfDUHAWAVAUATSH(IO ~qEE1HG(B~KO<E1E1DIF0LJ8AvHcHH;LElHAIIF(LEF9,EIUA9V AFLH([A\A]A^A_UHAWAVAUATSHH8IփHc>1ҾhH@H8D EHHxSUKMCESUKMCESUHEH8HH0H8H H(H8HH H8HHH8HHL8IH8H H}HxHc91ҾqHHHxHE}{H0Hc:1Ҿ1HPH0DE0HE}H(Hc81ҾHXH(DEHE}H Hc91ҾH`H DEPHE}LHHc:1ҾkHhHDEHE}HHc81Ҿ)HpH:~vE1f}Ic?1ҾIA7~11DfDLH+I܍CHA9HpN$AEIH9HpHEHhH ‹EHEH9(HhHEH`H ‹EHEH 9H`HEHXH ‹EHEH(9HHXHEHPH ‹EHEH09HPHEHHH ‹EHEHx9hHHHEH@H ‹EHEH89H@H[A\A]A^A_fIc?L`IHHc9LAHpHHc9LHhH Hc9LH`H(Hc9LHXH0Hc9LHPHxHc9LHHH8Hc9LH[A\A]A^A_^UHAWAVAUATSH8HuIփHc>1ҾHEHEIISUHEHHED{DfD}tyIc}1ҾIAE~.1fDLHuDI܍CHA9EHEHUL$‹EHEHU9HEH8[A\A]A^A_Ic}LPIHc>1LH8[A\A]A^A_0UHH]LeLmLuL}HPIIHMȅE1Ht HcFIIE.E9|cAEDE~8M~DsLE1HMLH3DLEzHAHE9LEuLH]LeLmLuL}E1IcHLIE.AEDE1Ht!H^HVHEH tJH}t5Hc1HuA9}HcHuLH]LeLmLuL}HcFH1HH\uHFH=LELLEfUHH]LeHI1HtH_HtHcG1HH$Ld$fHtHFH= LIcD$1H@UHH]LeHH1HtLgHWHH t6Ht!Ic$1HH$Ld$fDHcGH1HfHYtHFH=KUHH]LeHH1HtLgHWHH t6Ht!Ic$1HH$Ld$fDHcGH1HfHsHFH=eKUHH]LeHH1HtLgHWHH t6Ht!Ic$1HH$Ld$fDHcGH1HfH9sHFH=մpJUHH]LeHH1HtLgHWHH t6Ht!Ic$1HH$Ld$fDHcGH1HfHrHFH=EIUHH]LeHH1HtLgHWHH t6Ht!Ic$1HH$Ld$fDHcGH1HfHrHFH=PIUHH]LeLmLuL}H0IA X6Mt{Ml$I}H5SFubI\$HIcD$1HD9EI]HIcE1HL=fqDH5I?1rH1H]LeLmLuL}DL=qIBH=PHIBH=7HICH=HT5L=pIFH=EGIcD$1HL=ypIFH=GIcE1HUHATSIHHt^HxHXiG)*HGXHPf(_H-f.ysKEDID$HtVHxHXG)*H߼XHf(_Hżf.szwuuDID$Ht[HxHXF)*HXHf(_Hef.rzt f.1[A\@f.vY rY r,HnLLH5FH;1EH +H=` F,fDfDf.Y rY r,H{nL LH5ҰH;1EH +H=E XY qY q,HnLLH5lH;1EH +H=1E1[A\UHAVAUATSHIHHLPLXIHcIDžHEHH0H ~tL12H |/H9t;0rHHBH}E1LH[A\A]A^LLLAIMtI|$I\$D)*HXHf(_Hƹf.pztf.xY pY p,HalLLH5H;1fCH +H=Ү}CUHAWAVAUATSHH0H8L@LHHDžHEHH HHc2Ią~[H1(@Hx/H9t,0rHHBHy1'nIc<$1ҾIA4$~5Mt$Dk1HLDIߍCHA9$MtSI|$I\$B)*HXHf(_HƷf.nzuLH[A\A]A^A_f.vY mY m,HPjLLH5H;1UAH +H=lAIc<$1ҾIA<$Ml$1Ic}HeIߍCHA9$Ic<$H;IUHAWAVAUATSH8H}HuA׉MEDH$}G4']]IcHEE9HML,Ef.IEHtgHxHXR@)*H0XH9f(_HfWf.ztf.fDfDAIE9uHuHH}HEȋE9EtGE~BE~=LcmLmH]E1fDLH;uHAHE9~E9E9}5LcmLmIcHUHE@LH;5HAHE9uHEH8[A\A]A^A_Y kY k,HgLyLH5?H;1>H +H=Y?zHMHEH/LhHPHMH t^H}uwHc@H1HEHUHcBII1DȉMDDDC'@H8[A\A]A^A_HgHFH=O>IcE1HuEfDUHEAȉщ'UHEAȉщUHEAȉщUHEAȉщUHEAȉщUH1fDUH1fDUH1fDUH1fDUH1fDUHHЉHƿ1uDUHAUATSHIA(HL=CD+Lz=HxHHCLR=SD1HCDd1HC Dd1HCHH[A\A]UHATSHE1Ht[H3IHpH{ID$It$ H{ rID$ It$H{XID$L[A\DfDUHAVAUATSIIHt) (; (HcH(L$Ay(MAF(DAD$AF0AD$Mt$p1ID$0AT$1oID$8AL$AT$1OID$XAT$e1/ID$@AT$,1ID$(AT$,1ID$PAT$1ID$`Ic|$VI$EL$E~11ID$`HHA9T$AD$ADŽ$Ic|$ID$Mt8I~8t1EF0E~(E11IF8H4ID$@H<n:AHE9n0L[A\A]A^AD$AD$AT$K5&HcHH=&H& u&@UHAVAUATSAHc@IE~HE1f1iHAHE9uL[A\A]A^UH6fDUHAWAVAUATSH(IuHUDgAĺhHËEC0Dc(HIH@pHBED]EhEHEE1fDfDHUHM LcJIE0H4ID$0J<08IE8J4ID$8J<08IE@J4ID$@J<08EUEx*1@ID$XJ0IEXH AHA9E}EID$`J0IE`HID$`J0IE`H@BID$`J0IE`H@BID$`J0IE`H@ B ID$`J0IE`H@BI$IBHMȉ IT$IEB EHEIE9EUAT$AEAD$LH([A\A]A^A_UHATSA8HúHCDcHSҹ1HCSѾ1HC SѾ1HC(Hc{6HC0H[A\f.UHAWAVAUATSHIIIt$Hx6I4$I>6A\$EEE1HEID$J48HHc]L,IFJ<(96IV0ID$0HMȋAD$~F11DIF J(ID$ J8 IF(J(ID$(J8 AD$H9EEIHE9E[LH[A\A]A^A_AD$fUHAVAUATSAAAԺhHùD1HCD1HC-D1HAMD1HCeD1HC8Ic4HC Dk(Ds,Dc0Dc4 HCXDX1OH`D1/HC@H[A\A]A^UHAWAVAUATSHHHW0w(,IEDc0EEE1HEfDfDHCHSJ<0HLc}N$HJ40IEJ< 3HCHtJ40Ht IEJ<3HCHtJ40Ht IEI<~3HCHtJ40Ht IEI<_3HC8HtJ40Ht IE8I<@3IE@J HC@J0IE@IHC@J0@BIU HC HMȋBI`J H`J0HHHBHAHBHAHBHAHB HA HB(HA(HB0HA0HB8HA8HB@HA@HBHHAHHBPHAPEEIHEE9C0C(AE(C,AE,MAM0H{`Ht IE`HsXI}XH2HshI}h;2C0AE4LHH[A\A]A^A_DfDUHH]LeLmLuL}H@IIHUȉMML˺%-ILhHhMtHlL1ADŽ$"M$XHEI$`EA$hADŽ$T IDŽ$X 1 I$ADŽ$"ADŽ$MtIc}0uI$!YI$=I$!I$I$LH]LeLmLuL}UHE1E1111Zf.UHAWAVAUATSHAHuȺ@I@Dx IcߺHqIE0H[IE(E~dE1E1fDfDI](HEJ<`/B#K$I]0HEJ<`/P1]HAIE9uLH[A\A]A^A_fDfDUHAWAVAUATSHH0H8L@LHHDžHEHH HHcbIą~[H1(@Hx/H9t,0rHHBHy1'lIc<$1ҾIE,$E~4Mt$Dk1HLDIߍCHA9$MtSI|$I\$2-)*HXHf(_Hf.BYzuLH[A\A]A^A_f.vY #YY #Y,HULxLH5חH;1,H +H=,Ic<$1ҾIE4$EMl$1Ic}1HIߍCHA9$Ic<$1HpIUH1vfDUH1VfDUH16fDUH1fDUH1fDUHHЉHƿ1DUHAWAVAUATSHIHLHcGH~/Dv1L`I|DHL9uIL*)*HXHf(_Hf.Vzt f.wfD1H[A\A]A^A_Y VY V,H$SLuLH5{H;1)*H +H=@*趾HI]2UHUHUHUHUHqUHAVAUATSH1Ht HcCHHH1HtHcBHDD9ADN9ADN1 IE11E~311E~DIDH HD9uAHE9u;HL[A\A]A^fUHAVAUATSH1HtHcGHH1HtzDD9ADN9ADN1SIE11E~;11E~'fDIDH HD9uAHE9užHL[A\A]A^fUHAWAVAUATSHHAAHAD$AUKDk9ADMD9EDM1DD)H…IcL<H{LHCE9}-IcH DfHCHD9uDsDcH{0DHC0H{8DlHC8H{@DWHC@H{(DBHC(H{PD-HCPH{XDDHCXH{`DEHC`HHtDD*HHHtDD HHLHE9}3IcH DfDfDHHD9uHH[A\A]A^A_D)H…n1H'@UHfDUHSHHtwH[HNjwH[UHSHHtwH[[HNjwH[xUHATSHA9w4G,9N‰G,G(9M‰G(HvHCH{DaHCS(H{DLHCH{8eD7HC8-DH;#HAt$HcHH{ HC H`ADX1H`Hs@AD1HC@Dc4H[A\ÐUHSHHHt;H>H-HHd1H[DfDUHAVAUATSH1Ht HcCHHH1HtHcBHDD9ADN9ADN1IE11E~611E~"fDIDH fHD9uAHE9uʾHLL[A\A]A^UHAVAUATSH1Ht HcCHHH1HtHcBHDD9ADN9ADN1IE11E~311E~DIDH HD9uAHE9u;HL[A\A]A^fUHH]LeLmLuL}H0IHH`HHxHX")*L5aAXAL-hf(A_EAEL=AAfWf.I$hI|$I\$")*AXAf(A_EAEAfWf.ztf.LH]LeLmLuL}f.fY MY M,H;JLlLH5H;1@!H +H=W!͵Y xMY xM,HILflLH5,H;1 H +H=F gfL5L-–L=fDUHAVAUATSH1Ht HcCHHH1HtHcBHDD9ADN9ADN1IE11E~511E~!DIDHH HHD9uAHE9u˾HL[A\A]A^UHAVAUATSL-֕I}Ht~AfDLLgHtSHD)*HXHf(_HifWf.zt f.wMeMu[A\A]A^Y KY K,HGLjLH5JH;1H +H=d腳UHH]LeLmLuL}H0IHHGHHxHX)*L5AXAL-f(A_EAEL=dAfWf.DfDI|$I|$ I|$I\$)*AXAf(A_EAEAfWf.zt f.1H]LeLmLuL}f.fY IY I,H[FLhLH5H;1`H +H=̈wY IY I,HELhLH5LH;1H +H=f臱fL5ђL-L=˒fDUHH]LeLmLuL}H0IHuE1LH]LeLmLuL}Ë5 ~H= L9't,H1DfD9tHBHL9uHcHLG9~$LGHcHǐHHBH9uHcHIFc Ml$pI|$(I|$XI$I$pI|$@aI|$PRID$ HOHxHX)*L=]AXAL5df(A_AH?fWf.zt f.I|$0I|$8I|$`I$HtQHxHX)*AXAf(A_AHfWf.zt f.ID$HtQHxHX)*AXAf(A_AHYfWf.zt f.I\$hHt-H{"I} HxȵHID$ Iu [I}pAT$It$I}pIt$0I}0ID$0It$8I}8ID$8It$@I}@pID$@It$(I}(VID$(It$PI}P<ID$PIEHID$HI|$X_AL$AT$1DID$X11AE~C1AE~-fID$XH0IEXH0 AHA9EHA9}It$`I}`ID$`IEpID$pIHtI$I$IHtI$I$I]hE1HtVH{3IHpH{oIFIv H{ WIF IvH{?IFMt$hIExID$xI}pAT$I$InII$AA$AA$AA$AA$AA$AA$AA$II$AA$IH1 I$L[A\A]A^f.Y;Y;,H8LZLH5jzH;1H +H=z/襣|HpHtEuD;w0YIIDŽ$L[A\A]A^ID$HtpHxHXH)*XHf(f(fTfUfVHdf.:zt f.Ic}藱ID$I$HtpHxHXH)*XHf(f(fTfUfVHʃf.:zt f.Ic}I$NDg(AAEA9DLhȰHDp0D`(HIH@pHRIEpID$pY9Y9,H5LzXLH5@xH;1 H +H=Zx {Y.9Y.9,H5LXLH5wH;1 H +H=w HE1UHAWAVAUATSH(IuHU1IƋE EHEE1HEHUHcL$IF0J4 IE0J<8 IF8H4IE8J<8 IFXH4IEXJ<8 IE`J8IF`J IE`J8IF`H؋@BIE`J8IF`H؋@BIE`J8IF`H؋@ B IE`J8IF`H؋@BIIHMȉ IUIF EHHMIE9EUAUIEXH8 AEL1LH([A\A]A^A_UHAWAVAUATSHIAHGHEȺ%Iƺ%LH HEIFE~AIE IF Iu(I~(Z IIG III I I(I(I0I0I8I8I@I@AHAHIPIPIXuAw I`I`IhIhAhAhIlIl AT AT IX IX Ap Ap A` A` Al Al Ad Ad Ah Ah At At Ax Ax A A A| A| A A A A A A A A I I A A I I | IIi AAAAAAAAAAAAAIIAAIIIIIIAIIAAIIIIoIIIIIIAAAAAgIIIIIIIEIAAAAAAAAIIIII!I!}AI!I!ArA!A!A"A"A"A"I"I"I"I"LH[A\A]A^A_HHEE1E1111HIHEIFAFI} nIF Iu(I~(IIIII E1HthĨIHI$HI$HI$M I(E1HthFIHpI$HUI$H:I$M(I0I0I8>IEHcx0踧I8IEP0~'11I8I8 HIE9p0I@|I@AHAHIPI!Htb@IċA$HCID$CAD$HCID$H{ HtIt$ SID$ HC(ID$(LI!A!A!I!HEHcx0舦I!HEȋ@011I!I!HHE9p0I!I!A!A!I!I!A!A!A!A!I!I!I "I "~A"A"I"I"MnAE1Ah~K1AT ~2DfDDLsDLA9T AE9hIhIhIh(I1IMHLHI$H{A$A$A$IM苤HLH!I$H A$A$A$IMHLHI$HA$A$A$II}补oI蹱D1=IXIdž8UHAUH1UHH]LeLmLuL}H0IHHGHkHxHX)*L5uAXAL-uf(A_EAEL=uAfWf.A;DfDI$HtWHxHXR)*AXAf(A_EAEAfWf.rlfDfDI|$I|$ I|$(ID$0HtIHxHX)*AXAf(A_EAEAfWf.zxuvfDI|$I\$y)*AXAf(A_EAEAfWf.zt f.q1H]LeLmLuL}f.vY b*Y b*,H&LPILH5iH;1H +H=0iQ,fDfDf.Y )Y ),HK&LHLH5hH;1PH +H=hgݑ8f.Y ~)Y ~),H%LlHLH52hH;1H +H=LhmhY )Y ),Hu%LHLH5gH;1zH +H=g2fL5QrL-brL=KrfDUHH]LeLmLuL}H0IHH?I|$I|$I|$I|$8I|$@I$`nID$XHpHxHX)*L5yqAXAL-qf(A_EAEL=YqAfWf.60ID$ HtFHxHX1)*AXAf(A_EAEAfWf.zuusI|$`I|$I\$)*AXAf(A_EAEAfWf.zt f.H]LeLmLuL}Ðf.vY &Y &,H/#LELH5eH;14H +H=eK,fDfDf.Y ^&Y ^&,H"LLELH5eH;1H +H=,eMhY %Y %,HU"LDLH5dH;1ZH +H=dqH]LeLmLuL}ҍfL5!oL-2oL=ofDUHSHHHXH{0H{8H{@H{H~H{XpH{`bHQH@H/H{p!H[f.UHAWAVAUATSH(IHEHHGHES I`HtIhHt IXHt1IHt I"Ht uI"Ht _Ix"HJINDA0EEHEE1HA HUȋ<I7E1E17fDz|Ix"I7INAIHA H]D9,J"HtHxHX)*HlXHl_HlfWf.t f.vY #Y #,HiLALH5aH;1nH +H=aI7Ht{HzHZH)*H&lXH/l f(f(fTfUfVHkfWf.zt f.INIx"EHEIE9A0NHtpH~H^)*HkXHkf(f(fTfUfVH_kfWf.zt f.I~ Htw0IHt#I Ht;HHHHIdž I(Ht;HtHcHRH蚛Idž(I8HtnHxHXn)*HLjXHUj f(f(fTfUfVHjfWf.wqI!HtH{ Ht HIHtnHxHX)*HiXHi f(f(fTfUfVH|ifWf.IHtnHxHXS)*H1iXH:i f(f(fTfUfVHifWf.IHtnHxHX)*HhXHh f(f(fTfUfVHhfWf.IHtnHxHXc)*HAhXHJh f(f(fTfUfVHhfWf.<6I!HtnHxHX)*HgXHg f(f(fTfUfVHgfWf.ZTI~I^{)*HYgXHbg f(f(fTfUfVH*gfWf.zt f.HEH([A\A]A^A_YUYU,HLC<LH5 \H;1H +H=#\DINIx"f.YY,H?L;LH5[H;1DH +H=[[ф'f.YzYz,HLh;LH5.[H;1H +H=H[iDf.YY,HoL;LH5ZH;1tH +H=Zbf.YY,HL:LH5^ZH;1 H +H=xZ#虃f.YBYB,HL0:LH5YH;1H +H=Z1f.YY,H7L9LH5YH;1<H +H=YSɂY|Y|,HLj9LH50YH;1H +H=JYkHGHHLJ`HhH9hH"I9"aH"I9"=Hx"I9x"HXI9XHI9HP I9V HI9H I9 nH(I9(JH8I98&H!I9!HI9HI9HI9H!I9!tvHI9SIGYY,HL7LH5lWH;1H +H=W1觀Idž!zIdžZIdž6IdžIdž!Idž8Idž(Idž Idž^IF =IdžIdžXIdžx"Idž"Idž"HLJhkDfDUHHǾ1fDUHSHHHtWHHX)*H`XH`f(_H~`f.ztf.w1H[Y Y ,HL5LH5\UH;1 H +H=vU!~1H[UHSHHHtWHHX)*H_XH_f(_H_f.ztf.w1H[Y Y ,HL4LH5lTH;1H +H=T1}1H[UHSHHH Ht 葽H{H[)*H^XH^f(_H^f.ztf.w 1H[ÐY Y ,H%L3LH5|SH;1*H +H=SA|1H[ÐUHHt'HWHHtHHtHPHHGHDfDUHSH(t.)HcH HȉHH[d5dHcHH=0H9fDHcHHHHcuHzHоH5RHHcHNHȉP‰/F*,"9z1҃~iHcHH HBHH8SHcHHо2H‰91zf.UHAUATSHIIfDH=XtAfDLL tLMtcAEtxHHI$L#MtNIH=uſHLL u1H[A\A]DL%tzIHAD$H[A\A]fUHH]LeLmLuH HAIIH=AAAt,H=%RhHH$Ld$Ll$Lt$H=9Huf.HH_LLYH= }HHuHLcHMtI$HtL`HHCHC HtH{Lk(Ls HAC L%1Ht'HSHHtHHtHPHHCC HC Ht H{HCHC HC(H,Ht=HHCHHHtHZH 8nHdHCHȐUHATSIHHHLHtKLH t1Mt(Ht3L`I$HHtHC[A\f.LcL`Mu֐I$Ǿ1fDfDUHAWAVAUATSHIIIHt_~jEE1HGJ<8Hu!fHHLLJHuIFEIUA9HZLR1H[A\A]A^A_HGDfDUHAWAVAUATSHHuHU\?IƉHcIF~4E1E1AߐLI^HMHUȾ1HAIE9uLH[A\A]A^A_@UHH]LeLmLuH AIMŋwkDDHcHGHHt'HD9cu.D9`tHHu1tKDfDH$Ld$Ll$Lt$1u1DZHLL1LL@1HtHHXHHHtHBD`H@H鐐UHH5HI)A)HIHH)HHHHk7H)H5HN6HIHH)HHHHk7H)HcLLVLILH)HHHHk7I)IcM M Haw̫LHHHiI)M HKY8m4HIH HHHH HUHH=UH=NE1IKY8m4Iaw̫IH7HIII LHL)HIH Hi'H)Hi'Ii'H)HHH)HHIHHiH)HHIHHiH)HOHI5tL}ÐUHAWAVAUATSHhHxr{Hc貂H{=UHc蕂Hf=8HcyHR=Hc]HEHDfEWE~JH=H1fEWHH9LEJHBHHD9uABE}D*LHHUH5HuLLEHxHHELxE1EfA(EHED D% D- ARtD5 D= D upAfA(Af.JJH8H JX48HD9|AHDtE9ufA(A\f(XLefA(AA|$H}ALfA(fA(1HBX0BXHD9uJBf(AYXXf(YXf(\f(\XX^f(f.v3f(\ af(f(fTf(fUfVEω]AHHA92IID9McJHc}L LfA(fA(1HAXBX HD9uN$I$B$\^X\^\AYf(\LmIAm\HEB4\f(fATAfTfAUfVf(fATAfTfAUfVHUHuL2HEDE~1ɺIFHD9ufA.Mt6LHUHBB<u fDHHHA<ufA.`Mt=LLEI@L€<8u%[fDfDHHH<;ufD.s f(AYAEHEEHAWE1~ JAHHE9t)ytHI4$K X8AYÅyK< 1HHJJHHD9uEHEHEIp9UD\AEsMcJHc}L fA(fA(IF8IFBzE1ɺHD9H<uIFE>1ɺHD9'H<uIFDD%D-E~.H$Azzt HcƉLH9uHcuH=HHcUHHcMLB$f(XH\AYf(HE\ \\\B\$f(fATAfTfAUfVf(fATAfTfAUfVf(fATAfTfAUfVH.IcLBTBLBE~$HxIt1ɺHHD9uHcEHxLH]AABHL$HcsHEfA.v~E~(IL߀<0t8LMHHH<t uAHAuHh[A\A]A^A_E~1ɺ HD9tH<uHxID0D HxIDD 0UHAVAUATSHIIIH={~KH=u1DfDHIEP4uIFP0t1@49AH9CI$HtLI\$fIHHHt-H5H8tuI$\@[A\A]A^[A\A]A^ËHcQyH*DUHATSHHtA5HcHH=|H HcHЍAy[A\@1=gt~#E1HQH<`AHD9%BH=1{H!#[A\@UHAWAVAUATSH(H}HAHMELMH=HHHUHPHD0DxL-Iu E~2E1H5wAI}1AHE9uIu E~-H]E1fDH57AI}1AHE9uHAHH/0H}tJH%HPHpH}VJH=@1XsHH5HMH}* H=@1/sLHL1E1E11A;4|AA"1IcA;4}IcHcIAHDHuH}H([A\A]A^A_ vHPvH2HUHBHcx0vH $UHAWAVAUATSHXH}HuHULELMDiE1AAEZEHEE|EuYD9~TI4DLfDfDD6Eu(LuKDN8*t.vD]A(ȻHH9AIE9IcHHMHcMH4H]HH]HH}HLuN$2HUL,HHMIMHHuLME$IMAH6H}E$E~;A7HcH E11LuIIU:A7AHHE9$A$HEDHE~E1E1fDfDAIHED9p~ZD;utHUEDEuMHML!H]H}JoHEJ hLMHUEDAH}H7H}A$H==1WpHU HEHX[A\A]A^A_UHAWAVAUATSHHPHHHBDp0DD˒HDD蹒HhIcHXHsHpAV|E1HEA!El$E9HEIED;||ݾHX|sHDuA~LLeDfDHHHL$L$$ILDHhHpHP}HPH=<1nH=HhHpuHPHĨ[A\A]A^A_IOHMHEHHEHpLHUHMHhHMDmL}HEHEHUHpADHhJDzD HMHUHHUHMHH`H]HMHHpATHhJtyLHHEDHEHHP]H`H{HMHHU UDH=1mEHEHEHEHED;ufUHAWAVAUATSHH*h*h\Xhf.zuH[A\A]A^A_Ë=ɼHcHuHӼ=HcHuH=HcHuH=vHcHxuHy=[HcH]uHË=DHcHFuIċ=-HcH/uIƋ=HcH<HuHxH@HxHHxHB ϻ=Ż)$tfWLLL ̻Hx1ɿfWD$AHIDIDHADrHR HB0HB(IDIDHDHHHD9uHctH@HxHDLjMLLAu 9~pHcH<f(HcIX8HR 9A<92tZf(HtI 8HcXHRHu;MmMt4HxHQAu 9HcH<f(A<92uHRHxLo$Es L<H=HUH :HPH=4HXH.HEHHHUHHMEHEDD DD$HHD%s$EMLf(HcXHRHuh\-f(AYE]AMDf(XE1DždA9}hHcLAXLDHcIf(AY XAX\\f.v Aωdf(Hv9|MIMA9h\-9E1DždE1E11HEE11I H(K!H0J H8KH@N,IEA$H( H0X\H8H@X\^X^\AYf(\HELHH(\HUA4\f(fATAfTfUfVf(fATAfTfUfVHMHPTHXDt~HMHAHH;uf.Mt5HuHUHBB<u@HHHB<uf.?Mt>HuHUHB<8u(MHHH<8*ufA(f.s f(AYHHHEHHxHHJHBHAHBHtHHHBHBHxHwHufHcHIA H\D9}VIAH\XAYA HvH;d|HcHf(D9|3f(HcHH}I: I\pIEI\qH0:H(9HxHWf(D9}HAXHRA9H0D9:f(HtHcAXHRHuH(H@HH8Ht~BH}L׾HHLJJ1HHH;uEHEHEHE9EQh\#hHxLhHxHxHuEHHJ40I HI HXHHD9|~HHI4IMHHIXHUHB8HUHBBHRxtHH;H<uHMHAًtAHH;*H<uHMHAHxLjLMMtLLAHRHHuHcuH=HLcEJHcM$f(XH\AYL=f(A\ \C\\A\$f(fATAfTfUfVf(fATAfTfUfVf(fATAfTfUfVHBHc$LBTB BDt~*HIt $HHHHH9uHcEHL,MA$HHH$LHIcrAf.E~-IEL<0tbHMHHH<tFuAIAuHiLiLiHxH[A\A]A^A_it~HL9tH<uHID DHID;D0uDD D}McN HcdHHUILMMMtA99E1DždE11HEE11fUHcf.UHAWAVAUATSH8H}HuUADE9tHH=-7DЯE~GHcEHUH AD9u(fDfDIHS D92HA9}E1E1DeAE~BIcHMHDB<(EHH DHHB<(muHcEHUHB(HH|Hu@;E"LcuJHEHBH5,H}=~DHUJ AAD9t(fDIHS D9tH9}Hc]IE~DIcHMHB<(EHHfHHB<(AuHMHUHB(HH|Hu?H$HMH5+H}H8[A\A]A^A_H8[A\A]A^A_E~GHcEHML HcL1 HD9t!HI 9uI<0uHD9uDEHuH}?V]~GLELEIcHUL 1 fH9t HI:uI<uH9uDEDHuH}EA]DUHAUATSHIIHH=*AعLLfHcHDH5P*L莼XAعLL"Hc;HTDH5 *LJAعLLHcHH5)LtL H=)LH=.MH[A\A]UHH]LeLmLuL}H@IIL=|IHE17 H1VIMHLHHSH$MMH &)1H1虺H]fIL$8AT$0HLTHUI3u*H]LeLmLuL}D19VIqFfDfDUHAUATSHI x vH{H5|HcH<\Iċ QQ~)1Hc\I܍C +QH9cLH5!L%I1HL!H= 5aH=)aH=aH=ީa~ 1I<`SHË9LH[A\A]鉹L;ffDUHAWAVAUATSHIIAIEHA|$|HE~hE11E1 11,fHTJ/0^DHD9tA9uHDLLHD9uAHE9uDLHLHHuLDLH[A\A]A^A_1TI6fUHAWAVAUATSHIIIΉ։{IE11~;11DfDIIT ZHH9uAHA9uLLLHþL$HH[A\A]A^A_fUHAWAVAUATSHIIIΉ։{zIE11~711DfDIIT* HH9uAHA9uLLLHþL舍HH[A\A]A^A_fDUHAVAUATSHMDmHH HDDyIE11E~611f.IH* HHD9uAHE9uHMDLL6HþL֌H[A\A]A^H+H5$HH81蛶AKVH5$HBUHAWAVAUATSHH`HXHPHHL@EH=1mIH5HcHH=]HHcL,‰~IcYIEPEgELI1AADfDEQDHHATuYE9~TI DLf.u+KDC0*t M.vDUAEHHA9AIA9LcUJHpHPHxLIcHPL M^ }y\AEhMiMhME MM(Y SAMlHHH@H`DbE~D11f.IuPI@Pu IAP1Ƀ< HH`9yElILUEE1HXHH8fDHHEEHHpH HMJpHEHPJpH=SH`DQE~WH=61fDfDHIEPD EuHCP0DEt1@49AHH`9BHXHHH8IIHHHtkH5H8RuI$\@,HUHM HUB2EID9}HxL)LHĨ[A\A]A^A_ødH`zHcVH=#~%E11HH<dAHD9%H=jYHסաRDDuHAGEHPHHU11HXHH0 LHED;EDhLrE9~HHELuDmHUHUH@HMHHhHEL HUHZH=H`DPE~LH=1HHCPD EuID$P0DEt1@49AHH`9BHXHHtpH0IIHHHtUH5H8oPuI$w\@,HhHM EHEHHMD;}dH`yHcTH fDUHAWAVAUATSH(H}IHMHcgTIAW<E1M5ʟHcHH=XHHcH‰AEAWI91fHKAHcSHCPKH@PBIG@J4KHx谰K@8K@|K@h?KH>=h~/E1fDfDHH<`AHD9%ҞH=DVHAEAWI9HcSHAGELẽ/f.AGAMHLHuLDIŃ}HUHH0 蕮H5pH}fHH5~Lm^H==tM~*E11DHH<_AHD9%ҝH=DUHLH([A\A]A^A_fDUHAWAVAUATSH(IHuIHMD1dHEH5THcHH=<UH02HcHuH4‰DkE~E1AAEQDCD8uPD9~KK 8DLƐu,KDD0*Et M.vE։UEAHH9AIA9McLcEȅ~NO,NO11DF4>Eu"HIMI0ItBH9uCHEJ HH]JE^ Bh@hHuHrHpHF HV(H1HEHH([A\A]A^A_Ã=ӛ~&E1E1HJ<(]AID95H=SH`UHAWAVAUATSH(H}IAHM=JtW~&E11ېH1H<@]AHD9%"H=RHIcdOIAWE1q5ʚHcHH=SHHcH‰KIG@J4H{K@8K@|AEAWI9~y1aHKHx=At~-E1f.H!H<0\AHD9%H=QHKQHcYNHAGELẽ &@AGALHLH}IŃ}HQH5H}&bHH5xyLYH,9=etT~1E11fDfDHAH<P[AHD9%2H=!PHLPIO@AWHuH}pH([A\A]A^A_HHH01UHH]LeLmH IHLmHH t;Ht%AT$LLHH]LeLmDH5)$HH0H5HH81蠨F=럐UHf.v&f(\YXf.vf(fDfDfDUHAWAVAUATSH8IHHHHHHE1HHHIcLLM9uLL)HJ401IH)LHLIv6f.BT1D1BD1T1IHHI9sHyI9r,HHHHHI9sO,>MM9M9LL)"LHIL9LLLDLDM9LLIv8f.BT)BD!BD)BT!J)I HI9sHyI9r*HHfDfDHHHI9sM)MM9LLLDLDM9LIv6BT1BD!BD1BT!IHI HI9sHyI9r#HHHHHI9sLL)LL)H9IKAI<9D9}(ILAE A}tD8ALAIE9uH9u[@UHSAHtu1[ÅxEtHcLHcHHNjA19}AI<:D9}/ILAE A tD9ALAIE9uH9u[@UHAHtuW(ÅxEtHcLHcLHBA19}AI:D9}8MLAfA(_TU(VAIE9uH9u(@UHAHtu fWf(ÅxEtHcLHcLHBA19}AI:D9}?MLAAf(_fTfUf(fVAIE9uH9uf(fUHSAHtu1[ÅxEtHcLHcHHA19}HAI<:D9}2ILAf.E fAtfD9AOAIE9uH9u[UHSHtu1[ÅxEtHcL HcH9}>AI<9D9}(ILAE A}tD8AOAIE9uH9u[@UHSAHtu1[ÅxEtHcLHcHHNjA19}AI<:D9}/ILAE A tD9AOAIE9uH9u[@UHAHtuW(ÅxEtHcLHcLHBA19}AI:D9}8MLAfA(]TU(VAIE9uH9u(@UHAHtu fWf(ÅxEtHcLHcLHBA19}AI:D9}?MLAAf(]fTfUf(fVAIE9uH9uf(fUHAх~ E11ONfOfNAHE9uUHAх~E119191AHE9uDUHAх~E11ɋAHE9uUHAх~E11ɋAHE9uUHAх~ E11HHHHAHE9uUH1t6HcHD~"HftfA9DLH9uAUH1t3HcHD~H}tA8DLH9uAÐUHE1t1HcHD~"H tA9DLH9uDUHWtHHcH~0@(_TU(VH9u,*DfDUHfWtXHcH~@W@f(_fTfUf(fVH9u,*f.UH1t6HcHD~"HftfA9DOH9uAUH1t3HcHD~H}tA8DOH9uAÐUHE1t1HcHD~"H tA9DOH9uDUHWtHHcH~0@(]+TU(VH9u,*DfDUHfWtXHcH~@@f(]fTfUf(fVH9u,*f.UH~0HcLA E1fDLH+AHA9ufDUH~7HcH*A*1fHH(\XH9uUHD(~LDE1HcLMىD9}$@LH(\XID9uAHA9ufUHDUH~*?xt'HO1DfDHHI?xt9u1HUHHtGt@HGIIHt#@8uAIHuHDfDUHSHE11҅~oHcD0EA t:Et5IcL HcHDIHEtEADEA uIc A9uIcEt[[ÐUHHt'~#Hcǀ<0-t|0-fD1fDfDUH=fUH< t0HOt(fDHHI tuHHHf.UHZ@UHFUH6UH(.|. w3z1(Y~XzYXrYXj@. awgze(YVXRYXJYXBzYXYXYX@(YXYXYXUHDEt@DHEt'E8t1HfDHA8tJuDGHEu1UHSH<0u H<0t[A\uHmH;tHCHMHFLoHxHLH#H8oHH[A\@UHAWAVAUATSH(H}uAAA}HcaINjM~}LeEI$H:oD)ƅ~L1fD0H9uI$A9|'HcI1I$ HHA9}I$LHnEIE9EuLHEH([A\A]A^A_UHAUATSHInÍxHcIĉx"HcJ (LfDHHƒuLLGnLKLH[A\A]fDUHAUATSHHnAōxHcIHHmIcLI9uMfD/t-HI9t3.uI9u.8/t HI9u8/uHH[A\A]A$<.tgAtH}H5I>1fHcH5I>1ffUHSHgHHtZ1H>ftLH-ft;Hft*H fH[1H[UHAUATSHIUg~@1L`fDHL9t!B4+H=9gHuH[A\A]øH[A\A]UHAWAVAUATSH(IIHUHfH}EMEE1HHEUuwMuEIL;eC H[A\A]A^A_UHAUATSHIJ~-1LhB<#8IB#HL9uLH[A\A]fDfDUHATSI1HHxLJH{LsJLqJHt=HcHHS:/t.@HHHHSH@:/tɃuHJt&H;JL#LJǃt7HcM4A8.t2@HcI @HIHH<.tσuH[A\AH3HH{IH[A\UHATSHIHxIHHHHHt,HH5:!L12IHL[A\H0L9IUHSH1DEtH[H=}6HHt/ HנH[߅tHH[1H@UH(WɅ~`HcH1W(fDH9t4H(\.ztZYZQXZH9u*^(DUHATSIH4L1fEWfA(fA(fA(fA(fA(HPXXf(YXf(YXYXH9ufD(DYf(YfD(DY*f(Y\f(YA\YQfA(fA.ztf(YA\^f(^^f(YYf(\f(YY\YfA(fA.ztYf(\Y^AQH[A\fEWfA(fA(fA(fA(fA(fE(fA(fE(@UHf(fWf.zu f(fDYf(Y\Q^f.zt^f(\^UHH]LeLmLuH IAAͅH9fW҅~WIcL1fWfAŘ*fDfDH<}t D8tf*f(\f(YXH9uQ*^ȸf. pv, 1H$Ld$Ll$Lt$fUHAUATSHIAE؅H9fW~eIcHL1fWf(pDfDH f.zt e\f(f.zt YXH9uQ*^of.wf( fDfWf(H[A\A]fDUHATSHAԅu fWf([A\Htt`~IcHH1fWoHf(XfTfUf(fVH9uf([A\þf.UHH]LeLmH IAՅ|Htw9i~eIcHLfWf(11oH f.ztXH9ut *^f(fWH]LeLmUHH]LeLmLuH IAAͅH9IcH IcHLfWf(E1E1.nH7f.zt  f.ztXA*XD,ɐAHA9uEt,A*^f(fWH$Ld$Ll$Lt$fWf(L8fUHAWAVAUATSHIAAADLM1DDDDME9L{DD)9D9HEHEE9IcIDIE~8E1E1K/t)AUHcI E1HIHDfDUHSH{Hc1҅~H1f.-H9uHcH[fDUHAWAVAUATSHu̅~KIE1M&L ~)1LhDfDB<# B#HL9uAID;}uH[A\A]A^A_UHATSI; ÍxHc/Hljx(HcI HfDfDHHƒuH[A\fDUHAWAVAUATSH8H}ȉuHU E1HHEHEE$EDmE~xLmE1I]HLE HHD<#DELE~7<#taH1A8u UB<#t?HA8t79uAID;uuHEE<IL;E]H8[A\A]A^A_ÃtAUHAWAVAUATSHHuUHMH}EHEHHEH E1HHEHEE$EDuE~xLmE1I]HLEh HHD<#DELE~7<#tuH1A8u iB<#tSHA8tK9uAID;uuHEE<IL;E]EHEE9E"HH[A\A]A^A_ÃtADfDUHAWAVAUATSHIIIIHcHf$DAV<F.IWHBIGIWHBIGEA0IWAHZ-A0IWAHf8 A0NIWAHfA0IWAHfDfHHcHBH9ǺDGIA$HB<w7BQ<FHALeȉ}EELeIWHBIG#A0IWAHHA0IWAHLA0IWAHH8IWHBIGIWHBIGIWHBIGyIWHBIG@IWHBIGlIWHBIGIWHBIG;IWHBIGmIWHBIG9IWHBIG1%ǀu5HcH DYX6 (YXYXYXK(YXYXYXA(YXYXYX(Y^XZYXRYXJl(Y(X$YXYX(YXYXYXz(YXYXYXJ3(YXYXzYXrT(YXYXYXz(Y^XZYXRYXJq(Y.X*YX"YX(YXYXYXN(YXYXYX(YXYXYXt(YnXjYXbYXZ(Y>X:YX2YX*fDUH(((.Z=f.D>.v[Zf..vZf.(fZf.RL((@Zf.(Z=f.zu (d@(\Zf.s.%p_.%.%(YXYXYX(\Zf.E;..W.^WQ(YKXGYX?YX7f.(\Zf.. lP. . (YXYXYXf.(\Zf.E. . W. ^(YKXGYX?YX7(X(@(\Zf.W. \. C. ga(YXYXYX1f.(\Zf.5._.G.N(Y;X7YX/YX'#(YXYXYX(X(g(YXYXYX(X((YqXmYXeYX](X(Y4X0YX(YX (X`-(YXYXYX(X(wm(YXYXYX(YmXiYXaYXY(Y:X6YX.YX&!Q(YXYXYX(YXYXYXU(YXYXYX(YbX^YXVYXN(YjXfYX^YXV(Y:X6YX.YX& (Y XYXYX0(YXYXYX(YXYXYXM(YzXvYXnYXf)fUHD((((.&Z%f.f..Zf.)#.Zf.ys.v[Zf.A.vAZf.;5(Zf.A((Zf.(Zf.RL(d@Zf.($@Z%f.zu (@(\Zf.s.0..  (YXYXYX{(\Zf.;. . .   (Y XYXYXf.(\Zf.. ,. c. }(YXYXYXwQf.(\Zf...f.(Y XYXYX(X(1A(\Zf.tJ. N. . (YzXvYXnYXff(A\Zf.. . . "(YXYXYXyf(\Zf.u. D. . (Y{XwYXoYXgf.(\Zf.w. . . (YXYXYX(X@(\Zf.e. . w:. ~(YkXgYX_YXW(f.(\Zf.'.S..sm(YXYXYX(YXYXYX(X(W(YaX]YXUYXM(X(j(Y!XYXYX (X(Jh(YXYXYXD(DXA(_(YXYXYXo(YhXdYX\YXT(AX((Y*X&YXYX(X6(YXYXYX(X6(YXYXYX(Xy(YsXoYXgYX_(Y)X%YXYX(YXYXYX-](YXYXYX(YXYX~YXvb(YTXPYXHYX@(YXYXYX Le(YXYXYX+(YXYXYX y(Y|XxYXpYXh*C(YFXBYX:YX2m(YNXJYXBYX:=(YXYXYX (YXYXYX](YXYXYX(YXYXYXzx(Y^XZYXRYXJ](Y.X*YX"YX(YXYXYX4(YXYXYX{(YXYXYXfDUHD(D(D((((.^Z%f.f.Zf.ic.Zf.A.AZf.'!A.vZAZf.DA.vAZf.(Zf.2,A((Zf.A(fDZf.A(cZf.RL($@Zf.(@Z%f.zu (@(\Zf.es.3 .{.? 9 (YoXkYXcYX[(\Zf.;. . .   (YXYXYXf.(\Zf.e.  . wc. ~{ u (YkXgYX_YXWQf.A(\Zf.. \. .   (YXYXYXfA(\Zf.dZ. H.v.}J D (YjXfYX^YXVfA(\Zf.. . . J D (YXYXYXD(DXA(F(A\Zf.D. . Vq. ](YJXFYX>YX6_f(A\Zf.f. kJ. . jd(YXYXYXf(A\Zf.D. . V. ]: 4 (YJXFYX>YX6f(\Zf.'. l#. . [U(YXYXYXmf.(\Zf.E. 7. Wy. ^ (YKXGYX?YX7gf.(\Zf..l.. (YXYXYX(YX}YXuYXm(X(JW(YAX=YX5YX-(X(*(YXYXYX(X( (YXYXYX(AX :(YXYXwYXo(AX{(YEXAYX9YX1(XQ>(YXYXYX(X(YXYXYX(X%(YXYXYXzD(DXA(b(YKXGYX?YX7D(DXA(q(YXYXYX;(YXYXYX(AX((YX|YXtYXlDh(YJXFYX>YX6(YXYXYX(YXYXYXf(YXYXYX(YrXnYXfYX^(Y<X8YX0YX((YXYXYXJ (YXYXYX(YXYXYXd(YdX`YXXYXPr(Y.X*YX"YX(Y6X2YX*YX"(YXYXYX(YXYXYX(YXYXYX(YvXrYXjYXb(YFXBYX:YX2(YXYX YX(YXYXYXr(YXYXYX(YXYXzYXr(YVXRYXJYXBb(Y&X"YXYXzDUH(.vdZ-f..vZf.MG(fZf.((@Z-$f.zu ((\Zf.s.m.."(YX YXYX(\Zf.;. ,}. . e_(YXYXYXwqf.(\Zf.. 3. C. (Y XYXYX1f.(\Zf..,J..(YXYXYXw3(YAX=YX5YX-(X(jw(YXYXYX(X(a(YXYXYX(X((YXYXxYXp(X(Y3X/YX'YX}(YXYXYX(YXYXYX(YXYXYXb(YXYXYX(YlXhYX`YXX(Y<X8YX0YX((Y XYXYX_DfDUHAVAUATSH0HI蠓 AƅffWEf(EE1f(f(H"DfDB &It6ItQHH9tdIueXeB &IueXeIufDIueXeHH9uEf.zD,mE9A}DEDD)e\e,]A9s{DED)޿mM\MA*\E,E\ED,D9'?A|$'ED)޿M\ME9A}DEDD)M\M,]WA9t/{DEA)DM\eXeEXEZXMMZ\ZWrH0[A\A]A^WH0[A\A]A^WM,]A9WEWeE9We-HH. H5H;1襏 H H5 H;1胏 =B UHH0EMf(]ef.f.fEf.EEf.Ef.EEf.ü Ef.Ev$Ef.E@f.x2,EEEDfDf.HEEf.(zfudEE5DEf.zuMDf(\Ef.sȍ X? MXE\Ef.s藍 Xg XEEgDfDE\Ef.v,S X#ʍ XEE E\Ef.6 X芍 XEEE\Ef.]E\EɌ X@ XEE2fDE\Ef.E\Ey XI XEEfDE\Ef.VhE\E) X蠌 XEE=fDf(\f.f(\M؋ XO MXMUHAWAVAUATSH(H}AE|$1D9ZA9~HcHML,HcH4LH tGBHHMLAMtPHtLLEk LEtAƉE9~I0ILH uLH([A\A]A^A_I0IL tAƉE9D9fE1fDUHH]LeLmLuL}H@IAHHt^uZ~VuYHE1AfDH3HtL讋 EDAHE9uDH]LeLmLuL}AHE1AHcHMH3HtHULf EDAHE9ufUHAWAVAUATSHxHxIHHHU1Ҿ,A}LIEuAEEMHxHHE1H3>-uF=w9HcHD=t(AEHcI-uF=HcHD=uAEHcIH8[A\A]@LRd HxJHHлL,d c ø|tVLefDCb 8u1Lld HAHtHH@tŋE^H/ HEH' HEH@HEHEHuH= 8b LeUHATSH'HHHPHXL`LhHH)H)HE)x)p)h)`)X)P)H)@L%ՊI$H81DžDž0HUHH@HH LH'1Ha HH8I3$u H'[A\` fDUHAWAVAUATSHIab H1HOb H|dFILH,b 1Hþ~L b HtI9x/AEM}1A=J:;uE11L5` t D3LC,IĄtaH5˼ HG 6H5ʼ HF H5z HF H5 HF u~H=N6;HA6MH 1fDLH5k HgH6AEH5HB (HkHHkHLH=q B HHD3H=<TH/H= 3HH51YC H3L- H5= L[C tM
E@H/H5^ L@ H3 H/ HEHH5( HgH81> yfUHH]LeLmLuL}H`AHuIILDMMH5r I1DxHD$EĉD$H\$L$$ME11LHuDIH[MtFHWL; t:HgL; t.HfL; t"H gL; tL= LH]LeLmLuL}E~L1fHD9uE1D1kI1DHD$EĉD$H\$H$ME1LLHuDIHlWUHH]LeLmLuL}H`AủUAMLMAE~"U+U‰1DD9uAuIIcHHD$HD$L4$E1MDŰuDѼIHLH]LeLmLuL}H5N IIcqHHD$Lt$H$E1E1DŰuDeIH:MtH6L;0tHdL;0sHdL;0cHdL;0SL; FfDfDUHAUATSHHHHH5Z HHE1I<\h`p'II HIHHiғ5wII)H+; HHuHbH;t1H&dH;t%HdH;tHdH;t HtH: LH[A\A]H5g H=X 1}; HH H5ѩ HcH81: =w: fDUHAUATSHHIx1Ht]H5Y HIH5P LHDfDHމL: L : uL: H9 H[A\A]UHAWAVAUATSH8'IIL=bIHE11/IH=*H*HHduMHMHLt$L,$IMH  '1H18 HdH5]X LHH{)H5k H1H9 HCH;t1HbH;t%HaH;tHaH;t HtH8 H)HUI3H8'[A\A]A^A_L% L&dH(HH;u1HvaH;tHRaH;tHfaH;tHtH*8 1ofD7 DfDUHH1t+dt&xxt0xxt*x x1fDfDfUHAWAVAUATSHIH1IH5V HIH5~ LIDfDLZ7 Ãt\Lo8 HtfL:7 tuLI7 tL77 L 7 uL 7 H6L;#t1H_L; t%H_L; tH_L; t MtL6 L;+t1H_L;(t%H_L;(tH_L;(t MtLx6 LH[A\A]A^A_UHAVAUATSHIE1>  HHRHH5bU HIE!ADH=&LHHtsH&LH97 HtH9uHL; H^L; H^L; H^L; tyMttL5 [A\A]A^HǫL; t)H^L; tHg^L; tH{^L; tMu1[A\A]A^IAL)5 1[A\A]A^ø[A\A]A^H=%LHtH%H=%LHH\H=k%L%6 HUHH]LeLmH IIHHtgHLHHL4 HƪH;t1H]H;t%Hf]H;tHz]H;t HtH>4 LH]LeLm1IDfDUHH]LeHIHHuE1LH$Ld$@HHtH5 S H4HHuf.L3 H3 uHH;tH\H;tH\H;tH\H;sHc3 fUHATSIHH5 HHtoLHHt_HpH;tCH4\H;t7H\H;t+H$\H;tH2 [A\fD[A\fD1[A\fUHH]LeHHHH5~ IHH2 LH$Ld$t2 UHAUATSHH5Q HE1E1H:2 t tnAH%2 uH_H;t1H#[H;t%HZH;tH[H;t HtH1 AD$D9ALH[A\A]f.AD$A9DLE1lfDfDUHATSH5P HE1D AHn1 uHH;t1HlZH;t%HHZH;tH\ZH;t HtH 1 D[A\fUHATSH5BP mHE1DAH0 uH2H;t1HYH;t%HYH;tHYH;t HtH0 D[A\fDfDUHAUATSHAH5O HE1ED9AH^0 uHH;t1H\YH;t%H8YH;tHLYH;t HtH0 DH[A\A]fDfDUHAUATSHHHHH5O H*I#DHcHXDHHWI H H5 H1) HH;t,HRH;t I;tHRH;tHt Hx) fH)VMH ɴ 1H1( H}IN$HUJHtH5 HQ* tPMH5)L5* H5 L* HtHL* u1( UHAWAVAUATSHIHHQHHU1g.plHE1L5UMu)DLH t6HtHLf) t"IEKHtH5 HD) uHtH5n H,) LHtL1qH== *( HtH{' HcL$HHJ< L( 1HLIHHAH<( HHBHunpaf@ck@HBH HcHHH H1I Hc}̾=IƋu̅E1HEHEHUH5b L1 Hc}ȾKMȅ~vAʼnH5a L1 E~.E11fDIH5< L1 AHE9uL v EIE9EuL Z HuL;8t1H9GL;8t%HGL;8tH)GL;8t MtL 1H[A\A]A^A_fDUHATSH1?IHH HDLH1҅t[A\H5< LHE1AHw uHH;t1HvFH;t%HRFH;tHfFH;t HtH* 1A ‰[A\@UHH]LeLmLuL}H0IHuE1LH]LeLmLuL}HtH5; L'HE1AH uL=I;t1HEH;t%HEH;tHEH;t HtHZ A}HcIH5y; LI1f.BD+AL" HÃuIcB(M;'HEL; HDL; HEL; ML UHH]LeHHE1HtH5HIHLH$Ld$UHH]LeLmLuHH8H@HHLPLXHH)H)HE)x)p)h)`)X)P)H)@IH1TIHDžDž0HEHH0H H5f LIHLH- HΐL; t1HCL; t%HnCL; tHCL; t MtLF L(Ht#H H]LeLmLu@1fDfDUHSHH1Ht%HH=8 ~HH=< 1mH[ÐUHSHH1HtzHH= >HH= 1-HH= 1HH= 1 HH= 1HH= 1HH= 1H[fDfDUHSH21H= HHtH4HH[H=ƥ P HHuں21H= áHHuH= ! Ht#H=  HtH= H[ H=~  HHsH=q  HH[H=d  HHCH=W  HH+H=I  HHH=; u HHfUHATSV I1MtEL2HHt:H= 0 HHH= 1JLH[A\Lؾ1[A\ÐUHH]LeLmLuL}H@HuKHHu#E1LH]LeLmLuL}H5aHIHfMtI? AA~HcEIA~)A1@I|HuRIAHE9uLaUHAVAUATSHHL5?IHE1 LAH £ 1L1 LMIH 1L1 LwH5n LIHt:HHt2I\$Hx'Ht I$HxEIHHHuL.1HUI3uH[A\A]A^X UHSHHHt,* Ht)HHĘ[DfD1HĘ[H|HtH`Ht td%=@t H 1H% 1fUHAUATSHIHHHHt H*HttH54 L6IH5` H$HHމ L uL H LH[A\A]HLR y1H[A\A]ÐUHH]LeLmLuL}H0=}TtHtTH]LeLmLuL}þd?I1w IHH5J L1 LLIH ~%1L`B<+B B+HL9uH5 L Ht.IwindowsLSL譺L襺L-H5Š L HtSlinufSxH5 Lr HtaSmacof\SsxWSH5v LB HuMH E d1H=#S1P RUH=_tH|_f.H=  HtcH=׉  IH aE 1H=;_1 L-_H >E 1H=o1 H= _H^H=  HtH= q IH D 1HtH5 H t1 IH n U^.TCtf^mp^KUHH]LeLmLuHP'IL5:IHE1HADh)EED K)AAA)HHPH$LH '1H1 HًH! t€DHAHDHH)HcH9HL fDzD(E(( AD(H  '1H=V1 HHHًH! t€DHCHDHH)1WHI H|@HH5H" ,HH= ʘ,H5H= 貘HE_E1LHUI3H]LeLmLufDfDD hEt+C ƺh )i')։5V'H=  Ht/ > @hHqL&IH 1r   hxfDfDUHH]LeLmLuHP'IL57IHE1HAŋME1H& MQMHHMHT$ $L &IH & '1H1 HًH! t€DHAHDHH)Hc &H9HL D%%(%M ADLH v '1H=%1 H%HًH! t€DHCHDHH)1H{ H|rH1hH Q%HH5H1 ,HH= ,H5%H= ѕHE#tH=X: 1HCHHuܾL?1[A\UHAWAVAUATSHIHuHrH5H& LpHE1E1H t *AH uH}H;t1H/H;t%H/H;tH/H;t HtH H5% LHE1fD AHn uH|H;t1Hl/H;t%HH/H;tH\/H;t HtH  AvD9ALA|$3IH59% LaILE1(fDLz HSH5c L1 AL HuH{L; t1H.L; t%H.L; tH.L; t MtLv DL腓IH5sQ H}½IIUHt$LH5 L1_ HSHHuHs{L; t1H7.L; t%H.L; tH'.L; t MtL LHL;HEH[A\A]A^A_AFA9DLE11HE~fDUHAWAVAUATSHhH}HuUH5# ȼHE1E1HY t `AH@ uHzzH;t1H>-H;t%H-H;tH.-H;t HtH At$D9ALVUHcIH5# H}'IHEEEE1EfL tU9U~vD;}DL}D}HyL;0t1Hw,L;0t%HS,L;0tHg,L;0t MtL+ uHU:#HEH5H" H}oIHEEE1HUHxfDL t D;}|eUt^HELHxL;2t1H+L;0t%H+L;0tH+L;0t MtLq HEHh[A\A]A^A_L LuLX L HLMd'@HcH6+D<u)HL9t5;ǀtҾv t׋Mu HEEL  LMd3fDfDHcH*D<u-HL9;ǀtξ tHUHcHUHHxH5 L葂HǾHUHcHUH ‹9UEHcҋẺA)L LuL L# LMd(DHcH)D<u)HL9t5;ǀtҾ t׋uu HUEL ~ULMd#HcHf)D<u)HL9t&;ǀtҾ tAD9}DM}D}EE1EXEA AD$A9DLE1vH5 H(H81 HUHcHUH ‹UHAWAVAUATSHIIIHE1A> L EMHLcmȐHH5.2 L1z tbH;*tLLLoHHH &HMH3 IH]LeLmLuL}1Ht1HqH;8t2HS$H;8t&H/$H;8tHC$H;8t fA$1HL[HHtH=H¾' H=lL1H[A\A]|H=YHpH;8t=H#H;8t1H#H;8t%H#H;8tHtu 1H[A\A]A$H5F'}HUHH]LeLmLuH IAAD IcH9srH"EDLH5߉ H;1 H H=݉   @P1[LH$Ld$Ll$Lt$HxHHRB+IcL H5qRL H=bR荠DfDUHH]LeLmLuL}H@HAHUHMHH߮A9XH; AE1A~&AH{ A9}AEAHE9uH}tHED8H}tlHED0cHuH~!DH5 H;1 H H=È  耜@P1E1DH]LeLmLuL}þA@UHAWAVAUATSHIHAIHtSHD9|AE1E~'@LHH5[L1 AHE9uLH[A\A]A^A_H H!H=  蜛@P1fDfDUHHtH) H0HJ  O@P1鰫UHAWAVAUATSH4H(H HLLHE HHH H1HH=?LL1HwIċ~71fI4܋HcHH<o CH9;LHDž0HE(HH HHu44[HmA H5d HH81 =[ H5H HtH5H HtH51H HYH5<HZ H0H5 H1 HH5… H 0HHHHHDž@HDžP0rZHHBHX0qHHHPHDž@HDžH0sHHHh0T HHHp0 HHH`0 HFHHXL1HtH8IH(Dž<M.MdWD4EGH(E1AH3Ht,L; EDAHD;4uAu1AI6Ht,H` DDI;4uA.HH5ق H H91 HH5̂ HH81 UH5 H H91 HpHhH5 HH81 HXHXH`H5 HZH81p HH5 H ;H91Q Dž||H"HH3 ~H[A\A]A^A_HHBHAH(E1AH3Ht,H=e EDAHD;4uDž|A\H8-A HEoD94IcH(L$Dž|DuA`f.M9||AMƉ|H5|H& tHfD|AID94~%I$;-uC=wHcHD=uD|EHpRHtH5O H YH1HppIDž|DEE1C|H9)HtH5H% HtH5HH HtH5H HkH5H ^ HBH5C H 'I< ZHH Hp8t HH5H? H Hp H1H`(oIH1HXoHDž|H H8HhHDHHH5 1 |1E1I;|HtH5KHa HtH5H< HtH5H HrH5нH  HIH5} H .HHBZH5+ H H9 I;|H H H0 Z LHvH5H, HH5KH HH5H tvHH5H HH5F| H vH Hc|ZHH RHc|HPHH1H`lIH1HXlHD|ELPE1E1<DfDIHHAIID;|HtH5H` uI<$5{HuI<$H${HuHH(LI $HH5{ H; H5{ H SHEDfDH5H  H0 *HH8 *H@B*f.w f.,HH(LD,HH50{ H;1 DNH}4 H5X H;1 =&N fHLH5y H 1 H`8 HX$ HHBZ f.w f.ZZH2H(HZZHH5z H;% I4HPH< HHBHHHBHHHBHV<H7HIDžI49MwA>-uAF=wHcHDD=uH5, Lp H HtO~EHE1AH3Ht,L EDAHD;uALH(HHL dILH5?w H;1 H@ Hc|H@} HH1HhgI1DE=s MdMHC|H9~'|HhtH5UHh uLD|EHH5H  HH5>H H_H5Hg H6H5 H> uHhHH5u H HhH5<Hh HHf.A<$sHH5Bu H uHCH5LHb HH5H9 HH5H tkHH5ʹH t^HH5t H LB ZHH oHPH EDAHE9uAHL2L輓A9qLE1EH 6 HH5OL1 AHE9u B1` HoHH5n H;1{ `HOH!H=m  g@P1ɑMHHH5To HH81 DH5WHh H@DH HHH5n HH81 D1H5Hp HOHH5m H;1W LH5e I?1 uIHE1DHAtCA < uIcB(AEtEH;L%I;$t/HH;t#HH;tHtH f.HH5^ H=+p1z ..wfI $H=_ | H oH H5_ I<$1, 1HUI3UH[A\A]I $H= _  H oHP H5_ I<$1 1fI $H=^ H H5 ^ I<$1 ZH5.^ I<$p ZH  H] H5C^ I<$E DfDL%! UHH]LeHĀL%I$HE1}t%sHUI3$H]Le21H=Y^ It)21H=B^ I$H=)^ HtH=^ H kH=^ Ht$H=^ u H ; H=] UHt1S`HHH=] 1oH觧H]IH d1H1, E< tHKuHHJ 8HHI< t܄ufDfDUHAWAVAUATSHL%)=H=)tOw AƋ )~=E11fDHy)HPt D;0AHD9-_)վ1KI11119H=8 HtH=7 HD L@Mu2+DfDI\$I<$jLjHII<$ LI<$E tD%=@uI$LH tD%=@uHH=?C 1`vL-H` H5 \ I}1 MtWL59 L=:\ IH=\ HtH= \ H9 tfI\$I<$iLiHuIu r fDfDHĘ[A\A]A^A_@D :H'H8SHLIDH'HH5[ I}1 `DUH1u=' f.UHAWAVAUATSHIH5 yI1\IH5 HyI%؉L{ HLD 1蕸 ID9uHH9 DDH5S HGH8Z HyDH'HMH3 LH([A\A]A^A_H5. L 1RSIH5 H0pHL% Hމ I<$賷 uL=-I;L5I;HH;I;$HHW yfDfDHHzHueE1L5FHHHc@HHHHHH5 I>1 HD9uqH5!R uK HH 5H=P H 2H=P ۶ H 0H=P ¶ H JH=Q 詶 H H=PQ 萶 H %H=LQ w uH H57% H;1% =W f.UHAWAVAUATSH8'AIHHHU1HhHE1AfH3HtdH=Ƕ EDAHE9uALE1DH3HtdH=P 臶 EDAHE9uAƅ ƅHHLE1E1HHRf.H;HuREu/'H5 HK 'H3H7 E1AHE9t4EtH;?-tHtH5P 訵 uAAHE9u̾dXI! ƺh )i')։H5O L1) 'H5O H藳 H5 LXlHHH=O , H*H;t1HH;t%HH;tHH;t HtH蕳 HOLH=wO 1 LZuIH pHUH3u/H8'[A\A]A^A_ƅHH赲 yH H5;" H H81" =T UHH0EMUf(mf.vf.fEf.1f. fDEf.EEf.c Ef.EEf.3Ef.Ev$Ef. E@f.EEEDfDf.B<EEf.EE-fDf.hzvutMf.f.Hzu]f(fDE\f.'sM Xz Mf(Xf(\Ef.uİ X; MXUfE\Ef. 胰 XS XEEE\Ef.fC X躰 XEEE\Ef.&< Xz XEEE\Ef.E\E蹯 X0 XEEfDE\Ef.hE\Ei X9 XEE=fDE\Ef.FE\E X萯 XEEfD\f.nf(\EMˮ XB MXM;DfDf(\f.f(\} XM MXUHHtGHtBG\FO\NW\VYYXYXQf.8fDUHAWAVAUATSHHH}E'%RIH}9|EXRIƾQIFA$xB xHH='uEEH5 H}eHHl >uH5H1蒭 HN uH5ҢH1t H0 uEL}Lm EEH tEHމ芮 LLH5H1 Eτtk EHcUADEȉEHcEB H*IcPIFE~+E1E1LI^{PHAIE9uA>HcZPIF H5? H}fdIL >uH5L1# L߫ uH5cL1 L uEE1L5 IFN$(EA$I\$ IL$ID$HD$ID$H$ML$MD$HH5L1蕫 A|$@} EIcL$IVDH5HJuIcT$IF LdEIL TEAFA>Hc&OIF(Ax+E1E1LI^( NHAIE9.}AFEE1IFJ(Lc H5YLJuHcCIV(HDHH59LIuHcCIV(HDHXH5LIuHcCIV(HDHXH5LIuHcCIV(HDHXEIEA9FQLc9H}QLHH[A\A]A^A_UHAWAVAUATSHxNIHpHHHU1LLGH h f'1L1 HLpH C '1H1Ψ L2[H*[HLHu)LH)HMH3 DHxN[A\A]A^A_I~L E1HǞHp,7INjxHcMHAHcLHAWDž|E1E12tIcHDAD$AWI9IGXHB< ՟1ۅIGXH@B< 輟A|tu#Hc|HDDfDIcՋ|HDHc|AEHDAD$AWI9ZrHcHI~ OIF AwHcHI~(OIF(AwHcI~}OIFE.E;o}6IcL$DLI^( zKHAIE9oAN(HHHDžE1IFJ(HcCHCLc H5LYFu HcSIF H\H5sL9FuHcCIV(HDHH5SLFuHcCIV(HDHXH51LEuHcCIV(HDHXH5LEuHcCIV(HDHXfIA9NHp$ 1E1HHh5IVHp HIH;hHz E1fDfDEAD$HILc}AD9e~H;z HI9vAD9eE11@MuIE0I ^ZUH5psH}'y AHE9eHu y HEH[A\A]A^A_H-H=ry UHAUATSHIy Ič|@HcH1E~>L1AD$Ht@ D oD oBHHH9uHHH[A\A]fDUHSHHH5srumsfHH[@H5?pHuHfasta_alHfCnHH[UHAVAUATSHIA'trMtw=xA(A|H5WL?gHtBHUH5qH1[x HcUHHDHHH[A\A]A^H=ruLa~PE11@HQHH8-H>HHxH*H< AHD9%H=  1.iw ƺ )iҠAA)H pd1H=Q1u A~1E1Ë|I9~YHqJ H0LuHWIHXH H|pHݞH01莫1pHcHH=v HHcHؾHHcHHLv HxHHcHHHd}HHcHHLH8Qv HcjHHdHHxHH5o1u =HcH7HHX‰#13HËIE1HJ L@HHnH5F H1QAID9-/UHAWAVAUATSHu̅~gIE1M.Lqu ~E1L`fHL9t*B4+H=n/u HtH[A\A]A^A_AID;}u1fDUHH]LeHI@HID$ 86HID$ 86HCHH$Ld$@UHAUATSHHIH~hH5S H+ILUH 0nHþ H54nH1:s H~nH$ATACGAH5:nL1s AD$~u1fDID$hHpH<HFD 8HFD8HF 8H8ID$XHD$HF 8$H5mL1r CHA9D$H[A\A]HXH.H= mr UHAVAUATSHH5# v*IHH=W Jr Ht_HmH5ow L1q C~4E1E1HCXJ HC@J H5%L1q AID9kHHuL[A\A]A^fDUHATSHH5w )IH:H= mq Lч H \HH5)mL1Hq HSpHC`HHc0Hz HB8H HHDH5mL1q HSpHC`H@Hc0Hz HB8H HHDH5lL1p L[A\/UHAWAVAUATSH(H}IIHMHH5y (HEE11E1G;$|ÃJE1LcG;$}IcHMJHc4I~XIF0H IF@HLH5UlH}1.p AH}HEH([A\A]A^A_X HEHdfDfDUHAWAVAUATSHH}IAHHtsH5 (IE~DE1fDHc3I|$XID$0H ID$@HLH5kL1o AHE9uLHEH[A\A]A^A_ HEH|fUHAVAUATSHHtNu [A\A]A^H5 Q'IƋS~=E1E1HsXHC0J HC@J N&H5jL1n AID9kL[A\A]A^f.UHAVAUATSAHHtJH5{ &IE~&E1HH5s L1ln AHE9uL[A\A]A^[A\A]A^UHAWAVAUATSH8H}HuHH5 X&HEHEHPH5,jH}1m HUJ1E1AfDZMf9|AMIڍA9|HMH=im H}H8[A\A]A^A_Le]MHUHBHUJtjHUH J0BZ>H5iH}Rm EHEHIHE;Ma@UHAVAUATSIHHtuH5 HK%IHt^At$~?E11DID$0IT$HZZH5iLl AHE9l$L[A\A]A^1[A\A]A^f.UHAWAVAUATSHIAHH5W $IE~HcQHAD$9~&ID$XH8H8buxQHAD$9AHE9D$9H[A\A]A^A_Gt3GuωH5MLO AD$IA9EL O EIEA9E H[A\A]A^A_L1H[A\A]A^A_fUHAVAUATSIHHtQHtL1E1KtJ 1D HHuIIuE1u7L[A\A]A^HZ H5LHwH81N p뉾TIL1E11HDJD DD t"HcIHA*HA*@HHuIHIuL2IƾLB$8fDUHH]LeLmLuL}H@IHIIEH*HL!HEMM„u]uYMttIcIEXHI}XH5 N X(MEXH = HEHoH01H|UHAWAVAUATSHIIAG IʼnMtIA$~.1AELh@B<3DHLJG HL9uLH[A\A]A^A_Í|@Hc=IUHAWAVAUATSHHH}AHnHHU1HQEHEOEEHELuLH! t€DHAHDHL)ىME1DىMDM/KD5HUH EEUI$I;]tWC|5{A H5D?HjH81A II9uHjH2 A LH jHA}*A HA LA}A A<$@ HcI HHI^ZIW.ztC^ZW.zt1X^ZY^W.DfD1H5P>HiH81@ IM9JHiH2 @ IM9H iH1 @ HiHUH3u0H([A\A]A^A_Z@ Y)lZ,f? UHSHHHc_HcH[UHAWAVAUATSH8H}IHUHt Hi?HEE}EE~/I]@E1E1H;@ IcH9DGAHE9uADeH5 H}HEH];htdH]1 H}1M? H >UH5>H}1> AUH5>H}1> \H $] H5O>H}1> 덅EE1AE/HEHEE1 }LHEHEӉUH5=oDEnclt{gEEtqfD}Nu}tAUH5=H}1= sf}`AUH5=H}1= EE11AEUf.IEXJ8<4ADcHE9eEEDH5=H}1[= FE11AE4@IEXJ8|4u*ADcHE9e~IEXJ8<t4uIEXJ8<_4tIEXJ8|t1IE@J 8UH5O<H}1< AEIEXJ<8= HH5I<H}1< uEu7EIUA9UH}H8[A\A]A^A_E1EHu A< <_HHHUHHƿ HHIHUH3uH[A\A]A^A_ UHAWAVAUATSH(HH=IHHU1H5-l IDcEE1E1L}p@fEDLEHS0HC@J N"LH5"L1 HCXJ4 L2]IHH= AID9s~{HCXJ< HH5}k pHCXJ< HH5& LHCXJ< 迢HH5-k о2fEP1E#L葮HHHUH3uH([A\A]A^A_w fDUHAVAUATSIHDnE~ E1E1HCXJ< 蓟AID9kHL[A\A]A^CUHAWAVAUATSHH}HH~xLsxMfH5fj IAD$ ~I1E1fDIA9\$ ~/ID$0J (9tSaH53!L11 IA9\$ A~Hc1IAF~ 1@IaB"BHA9FHUH5L1 LL2AHLH޿  HH[A\A]A^A_H i HH5R H[FH81q H}UHAWAVAUATSHX'HIH#FHHU1ҋFdE1E1HEHLf.fEDLEID$@J(H$LLH '1L1' ID$XJ<(uH5h LHID$@J(H5H1 ID$XJ4(Hڿ2HHH= H诫AIE9t$~~ID$XJ<(蓟HH5 h 褻ID$XJ<(nHH54# ID$XJ<(IHH5g ZfEP1EHDHEH3uHX'[A\A]A^A_ fDfDUHAVAUATSHH5cg IŋCE1E1fHCXJ< HCXJ< ` HS@J"H5OL1+ HCXJ< .HCXJ4 L2艜IHH= AID9sL[A\A]A^0UHAVAUATSHH5f IċS H5H1 C~jE1E1HCXJ<(CHC@J(H5<L1j HCXJ4(L2՛IHH=$i AID9sL[A\A]A^|fDfDUHHMt>utH=& 2HtH= He Df.UHAWAVAUATSHIAH5ze IAE~wE11AIEXH<#IE@HH5e L1J L C IEXH4L2訚IHƿ  AHE9uLH[A\A]A^A_UL  IEXH4L2>IHƿ  AHE9u~IEXH<TIE@HH5 e L1{ IE0H<?ttIE0HH5CZ L1P xDfDUHUHAWAVAUATSH8'IIH@HHU1ҋVEHGHE1E1HHHHID$@IN(H '1H1 ID$XJ<(JH5kc HHID$0J (ID$@J(H5b H1Q ID$XJ4(Hڿ2軘HHƿ 1 H胦AGIIA9D$~[H5L uA~H%"fID$@N(H '1H1 H?HUH3uH8'[A\A]A^A_ UHH]LeLmLuL}HPIIIHtH5+LµI~p:I~pE1E1111HLLHËhH 1H{hIFpH$L 5 E1L1HlH%HH]LeLmLuL}h H5L I}۩HEȾ船HH5Fi H} HH53i 1 HCAE MAhH 1LzH5` LMHLHھjIHKHH54 LHLFHH}H"M9LH5Lt`H5L tMMAhH 21LyAhIFpH$L 54 E1L1LkHpMAhH 1LyH5_ LLIu HL]H+L)IFpH]LeLmLuL}UHAWAVAUATSH8H}HuHeDSzEuLDoE~2H_@E1H; Hc/zH9F%zzAHE9uՃ zy<HEXHHUHz` HEHM1w Mb)H5tH}1 Hu  EHUr\HEHcMHMHEHHMHEH4IIHUHB@J 85yDNDH5H}1` Ey9EEHM;ALuADIHED9h~dHUHML$IA$HUHBXJ8B<0i )A$HMHAXJ8B<0] Hu AŋE|xD9HUHMHыPH5dH}1 EHEHU9BHu  ,xM̋UHE9PHMH=8 w H}iHEH8[A\A]A^A_fDUHVfDUHAWAVAUATSHhHI1LHHHcH HHDžHHfIDHHHHuu藴HAH IHDžENEDžE1IVXHxHxJ<#ȐIFXJ< IFXHxJ H H H*H%Hc;Xf. I;vs1THc5;XHHH;X:XA*Hf.wIA9F11fWfA.DztHcHHHuYE1CLIcH LI1NfHJDŽKDŽyHIHfWf.ztAL]fWf.ztA$f.ztf.t^Y^^K HJ 9Y,KZGIIAHHH踨H5' HHf1 HHtMALfWf.ztZZ,^H5H HHu1AfWfA.TzrupHHuHDHHLHh[A\A]A^A_HH H*XIcH HHE1fWfC.LzuIHIuPHIf(^ZBZZD,DDH5H fDUHAWAVAUATSHHhH`IHH5 HH= z {HEH`!HEL{!HEH`DpEE~WH`H@@HpH8p E1EAD$HHpHLcmAE9~H;D HI9vAE9EoE~+I_@E1H; HcUH9‹MFȉMAHE9uIcHEH5V HhHEH!H= H`X~:1E1H`HB@J H5H}1n IH`9YHMH=r H`DXELuWMEEHEEWEMLmE11fDHUHBH4HMHAHUH<L LE*|ZH`HB@HML IG@HHD$E$f(Af(DUH5 H}PV IG@L H`HB@HMHHD$E$Pf(Af(‹MDH5 H} |AXA|AXEAEEX|EAEHIE9gEHEIUH`9PP1ۅ~dB*HE^H`HB@LH lH $ZDMDɉH5 H}: CH`QH9*EM^ZEH}&H}(EL DEH DH5 H} H}HĘ[A\A]A^A_H=Q wHEj3EyUHAWAVAUATSHH`IHXDvEE~UHF@HhH8R E1DEAD$HHhHLcmAE9~H;! HI9vAE9Ic HpH5R H`IH!H=  EgE~11E1DIG@J H5L1 IA9_LH=  AWW|EHEHEHEHEHEHP,fD]HELp9HELuHEDeBD9Յ~j1B*Hp^IG@LHH$ZDMDɉH57 L CAWH9Hp苬H}*E|^ZL MDEH DH5 L LwHĸ[A\A]A^A_HUHHULuH5 HX H(IGXHUH4HUH< .(ZIG@HUL HUHHD$E$f(Af(‰DH5L@0f IG@HUL HUHHD$E$@f(Af(DH5L 0HUHpDXDHEHpXX||EAWHEHE9H5HX HH5wHX Ht2HPH5d H1[ HEHUHHU*H5:HXj HEHEutIH}HiH@HUH4HUH<L LE! *H=iH5HX HH=q rHELHTiH5{HX HEOH5hHX H)H5M HXs HtxIGXHUH4HUH<H iM HX *OfDfDHhH@HUH4HUH<L &M H=K qHE)IGXHUH4HUH<HXHX }(DUHSHHH1Ht!HɐH[fDHY1HHuHK1HiHuH)L 1HSHuH)1H=HHt PH 1HHHuH1HH1HuLUHH11Ht HfDUHH11Ht H迏fDUHH1~1Ht H菏fDUHH1N1Ht H_fDUHH11Ht H/fDUHHf11Ht HfDUHATSHHhHH)1HE1Ht H讎AH 1HzHt H荎AH1HYHt$HlAD$[A\f.1[A\fUHH]LeLmLuL}HP'IL='IHE1迢IMt'LHtLt>MDfDLHUI3H]LeLmLuL}f.1艙IHH Hx@HLH& LLIIH '1L1I L LELEZ/ DUHH11Ht HfDUHSHHoHtJH1HHt4HHHHtH襌H[f1H[UHAWAVAUATSHIH%HHU1H5 -HE1DAHHL HHuA~ IHHL=DfDHLH5/s H1 HcIU@H L18 AHE9gL $ EI}[uLH=( EoE~5LmIE11IEH5= L1 AHE9g۾H}LH[A\A]A^A_UHH]LeLmLuL}HpIHHL#HHU11褕I1蚕IHL|HMMH P1H1{ H?LHH[1L-HLLH5, H1 La ZHLLH5E LԱHZH5HǸu H͈HF"HUH3u2H]LeLmLuL}W UHAVAUATSHHcIH5 HI1 DBD+AL HÃuIcB(L[A\A]A^@UHAVAUATSHHIHHHaHLDhsDH.IIc^HH5D LlILmHcEIVXHHHH5}c H1 H;LHc\H\HuH蓧IcHMHAL+LHEH[A\A]A^A_UHAWAVAUATSHIHEH8+ AHc蛗HEAA~]H]AAHE9t7LcH5ZLc HuAHcHML$AAHE9uH}$HEH[A\A]A^A_ÐUHAVAUATSIƺHm uIucDL^dtHcIU0lL~LHHMH3 uGHĈ[A\A]A^A_H : HXH5vHH81 蓃E1C fUHSHH1HtH5H1҅‰H[fUHSHHH5BtH[H5/HuH5 H讷H[UHH5UHH5M_UHSHH~Ht=H5H+dtH[fH5Hu 1҉H[fH5HetۉH[UHATSHL%#I$HE1H IH  1Hu H5DHrtHUI3$u*H[A\ÐH1҅tH( UHH]LeLmLuL}H0IL5oIHE1Hu)E1LHUI3H]LeLmLuL}À?tH=CS'SH50SL#a StHcHSL$H=SL H=RLH561 H=RE"L%RHcRHHRL Hx辏HHcRHRHIĺHHLH$Ld$fUHAWAVAUATSHHIIHH_ HxWIHH= L; Hx3ILH H5GLV_H58LG_L HL H9E1CHHE%@to@ AXEAEIL;etyC<<ǀHcHdDWHFEIEA9F0GH}H[A\A]A^A_DfDUHAWAVAUATSH8IHuUIHwEU0EXEE1IU  BF 2E!O<61-to AX$A$CHIU B92IEJ8<ǀu`HcH6DLIE1DžUUHH]LeLmH0HAnǀHcHD nDD) ntxA܉ nth AD D LeD,$AAH #1L1 xL9x1H]LeLmLuL}UHAWAVAUATSHH@H81ҾxHEHwH@ HTfWɅ~$fW1ҍ@HH8*XHH9u*T^Mf(YEf(YEH| siHEH@HT 1HP8S1_1BHP@S2_1BHPPS3_1BHPXS4_1BHPhS1_2BHPpS2_2BHS3_2BHS4_2BHS1_3BHS2_3BHS3_3BHS4_3BHSTARfBTHP NCEHP(NCSHPHNC1HPxNC2HNC3HPfI1BHPfI2BHPfI3BHP0fC1BHP`fC2BHfC3BHSTOP@bHLHETHcgHh Hp HxHXH`HM1LIIjLfDIIjLHHuHIjLHHjH<HHuHHHnIH@IH@(I@(H@(I@(H@ I@(H@I@H@I@H@I@H@0I@0H@`I@0HjHI@0HjHP0I@`HǀI@`IjLx0I@`IjLp`IE@0IIjLh`IIjLIE@ IHǀIH@ I@ H@ I@0@8I@8H@@I@@H@HI@HH@HI@HH@PI@PH@XI@XH@`I@XHjHI@XIjLX0I@`@hI@hH@pI@pH@xI@xH@xI@xHǀIHǀIHǀIIjLP0IIjLH`IIHǀIHǀIHǀIHǀIHǀIH@0IHjHx`IHjHHEHPH?HHMHQHHQH8HQ8H8HQ@HHQPHHQXH8HQhH8HQpHHHHH8HH8HHHHHH8HpHHxHHjHIjL:HHpHHxHIjL4IjL*HHuHpHHHHDTE>E1H@A<L軽 HcHHHHMHME1E1؉4*(LDHpJDIjMHxJDIIIHEIH8B*XEEAAA vAlA kAaAWAMACHMHHHf.z*HjH]E11q@AHXJH`J AEXXEEtf.EvEEf.HHAIAEHHpJEEf.ztEf.ztA 8A8A X)A f(A ,@,@4LDLLDLHHLHXJLAIcHJHHLH`JL(A tH`JHpJDEAHxJDA*AAf(f(fWfWHUA<x(LH`JLIcH\IAF9TQHcTHHhHHxHƋT*HcH,HHu1E1E1 EA!Ѓ }LN HcHM LID9THhB,LB,4H@A<E4AŃ:t t fHcHMFCHFOL藸 JHxLHpLLH}ێHXʎH`蹎Hh_H}_HEH[A\A]A^A_HcHMFtt ptȃ tÃOf.UHAWAVAUATSH(H}Hu„IHEDX0EHEfDLmIHUHEH4HUHBJ<(IƾFH賸 HtHUHB8J4(H=1WIGJ<(^LeII_ L腸 B#LI_IG B< Hci[HIGJ<(LJ LN^EHEHU9B08LH([A\A]A^A_UfUHAVAUATSI ILH= 1VA~HcZIE~Z1AFLp-@HcHDIcHpHHMEGEHEHED9EUHEAG9-#\HEA\HEA[I1HMHH@H@H@ HHuHUH@HH@HMHA@HHHHUHBHB@ HHPHMHAAwtDž\EEEHEAO1҅MII@I@I@ BAOH9}ǃ AIE1E1AIcGHpHB4EouHEHIMHHHcPHIMHHHcPHLRELQÍ{Hc&HEH5 L:IH耂 AE1t>vL\ uLUDDMIƋEAF0H5^ L:IH AăEfDL AAA>uHcUHUIIIF8J4(LIF8HUHA tIFHcIDD$fIFIDHlHuL0Lڀ tu1fDL躀 >t4t/uGHcHDuA9DLA9DOfDfD IFHcIDI^ IFI|b HUEA)LH}C'H}:'H}1'LH8[A\A]A^A_?UHH]LeLmLuL}H0IHtGHw0qIEM}8Eu0E~&LE1fH;xHAHE9uM}8LH]LeLmLuL}fDfDUHAWAVAUATSHIHHw0pIF0Iv8A~vpIF8M~@EnE~,LE1H;HAHE9uM~@MnpMtKIuA}0pIEIE8HEE}0E~!HE1@H;HAHE9uHEIE8MnpLH[A\A]A^A_DfDUHAVAUATSIHH5h 6HH5HÐH~ uE1EH~ u@HcHDUETUEHED9}]M\]EHED9} |ET|EHED9}|HĈ[A\A]A^A_CDEmCDECDECDEB +EB +E.B +EB)E<2Dž|fDfDUHAWAVAUATSH8IHEd HE>L@EL?Í{HcHEH5 L(IHp AE1t>L\p uLUDD;INjEAG0H5^ L(HEHp Aă*EDH}o AAA>uHcUHUIIIG8J40H}xIG8HUHuIGIcII_ IGI<2p HUEAH}[H}H} H}LH8[A\A]A^A_IGIH HuLvLzn tu1fDLZn >t4t/uGHcHMDuA9DLA9DOfDfDrm LfUHAWAVAUATSHH15 HEH5IH"VIH5 H}%III^ML= Hu^~HcHDe HHHgdHHuHPDžlHXDSE~<1HHXHQXH8Hc HllHX9BHXHAXH8e HXCDžlDKE~xE1HXDAE~KHclL$HXL`A$H@XHB<([)A$AEIHX9CllHX9BDžlHX{v1l‰lHX9PTHXHAXHcH<C[uHXHCXHclH@< [A}c HP'HH_c HH@HX9P;LH  '1H(1b NAT$It$@HcH<ƹdt@IcT$ID$(H ID$@HL5ЋH5qI>1b H=qc Ht~AL'Hb HHkn1HXHsHMH3 uWHu[A\A]A^A_HXHcBHR@H:b ]a fDUHAWAVAUATSH8AHuHUHcHEHHEE~'HE1dgH2AHE9uD5YA\$Eu+A\$1E1ɹA9H9|D $11ɾA91H9|i'=AljH5OpL"I;18a Ai'EA'EEH}蒀HHUL4AD-E1E1ɹ H9tCA9~IL]MDKHHEHtHA9MAIHA9H9uD ~i'= AA9E}'EE̋E9E~ A')DH5GoLI;1` HEH8[A\A]A^A_Å11ҾH9hA9~L]FTN AHDAx'L]IDs8AIHE9~DAyL]IDs8׿'IcH9A}'DH5mnL3I;1I_ EL]FTN AHDAx+L]IDs8AIHE9DAyL]IDs81iIL]MDKHHEHtHA9MAIHA9DUHAWAVAUATSH'IIHgHHU1ҋ0L!H@A0:!HHA0(!HPIc0SH0A0~-E11IGH<H0H AA0HD91AHDž:‰"H[UHAWAVAUATSHIHHEE1EE1E1DfDHgLLXIHt~LH}X 1HcHDW fDL*W Ã/tgÀuIHcHD%TH($AAGHcؾHBH0H.IH5u H(8IHU EDžP"LXH`H !LU Ã>uH L]fLZU tuLDHXEU HXE1L*U Ã>tgtbÀuDHcH~D<t A@xLtABT D9PPALʼnPE9EOL TPD INjTP0H5s H( IHOT AăDžLDL*T AAA>uHcLH8HH@IG8H4L<\IG8H8HAĀujIcH`|DLi!EL AA|$Hc)HEH5q L6 IHQ EEt>DLQ ÃuL ŰuD IƋỦP0H5p L IH\Q AăEDL:Q AAA>uHcEHEIIIF8J4(LVYIF8HUHAĀuzIcH`yD<t?IFHcIDD$DfDIFIDHLfDfDAGofDDQO IFHcIDI^ IFI|P HUEAhL H}H}H}LH8[A\A]A^A_HuLWfLJO tuE1fDfDL*O Ã>tgtbÀuDHcHxD<t A@xFtABN D9eȋEALĉEE9EOUHAWAVAUATSHX+HHvwHHU1HHIH 5 f1H1M -HPO HH! t€DHAHDH+HH5l HIHYLM ÃjDžA?BDžLHcHDLZM Ã0>uLLULH! t€DHAHDHL)H;rHHL$N tLHL HE1fLL Ã>tgtbÀuDHcHuD<t A@DtAK D9ALԉE9EOLDINjH0H5k HBIHK AăFDžHcHLK AAA>uHcHHHIG8H4LSIG8HHHL IH;rHHHsL {.HFL HtIG8HHH9L IIcHD8,LHJ HE1fDLJ Aă>1AĀÅtcIcHsDuH HD@AHHL$E1.t;-t6IA$A<*tAÀu HcHpD<tAƾ(G D9ALƉE9EOIcH< DHP01DžHDžH H=HHA8HHH=H5V1G H ѭHAHHG HDHHBHH<H1G IcHL4DžkIcHvoDc HfIH5 H=SPHH5 H=S6HxH5Џ H=SHL`E1H Sd1L1C H5 LHAH ]Sd1L1B H5` LHAH )Sd1L1B H5, L|HAH Rd1L1{B H5 LHHAH Rd1L1GB H5Ď LHAH Rd1L1B H5 LHAH YRd1L1A H5\ LHAH %Rd1L1A H5( LxHAH Qd1L1wA H5 LDHpHH芅A'Džf.LA #uLA #tLC 1DHyHLmA ƒ#uL]HcBH 6t d1L1@ fDL*A #tt`E1'DHLA #)t*H=AE9uAHHϧIcHçL7H+HHHHHHHHHpHx1H H5LPH10@ H9}HyHhHUH3Hx[A\A]A^A_H=̦Ic8LHHVHŠLH5O1? 9ML4$MMLLH5oOHx1y? LH5EOH1\? 멾'kH$ > f.UHAWAVAUATSHX'HHgHHU1ҾHH5] HIHL> ÃE1A?BDžHHf.Lj> Ã>uHH52q L1~> LH4> HE1fL> Ã>}tx ts tnÀuFHcHfD<t AfDX5tA"= f.E9ELE9EOLDDIƋAF0H5v\ HIH1= AăDžL = AAA>uHcHHHIF8H4LEIF8HH  1AĀÅtaIcHGeDHLH/ HLH5b L1/ E1HcHXD<A}ǀHcHmXDL聾IIGJ0H5b L1c/ LH/ HLH5a L1L1- HPH5&L1- HHH5L1- H@H5L1- H8H5L1- H0H5L1- H(H5L1h- LH5L1T- H H5L1<- HH5jL1$- HH5RL1 - HH5:L1, HH5"L1, H5L1, LIGISD WEIGHL0ITS GENERLhIATED WITL`HH THE PRHXIOGRAM AMLX IPS IN PALP(IIRWISE MLH0@8ODEHxCLH[A\A]A^A_þb+ K+ nIW(,MHc,EHH<ILʋuH‰4A0IW H<ʋuH‰47^@UHAWAVAUATSHH8H0HOTHHU1ҾoHXH5QJ H8uIHL+ ÃE1A?BDžTH`H(L* à >uL* PL1, H(L2LHX* HXE1Lj* Ã>Àu|HcHRSD<tAfDfD!tAL) ;RL) ;u@fDB) E9ELE9EOTLTDDHHTP0H5H H8IHX) AăDžP#L*) AAmA>uL) PtL* HcPH@IIHHHB8J48L1HHHA8H@H 1AĀÅIcHPDHx1H=i)c;EHxÍ{HcμHEH57 HxIHn AăbAEE"fDL: AAA>uHuLi fL  tuE1fDfDL Aă>totjAĀu2IcH@D<Dt4IcHUADD Du@AtH5*(H}!ED9mMAL͉ME9EOA L详E8UuDHEUHEP0H516 HxUHEH AăEA'H} AAAA>uHcMHMIIH]HC8J40H}AHC8HUHDAAĀr@D m11H}+IH5 H)HHHCH8; AžHU11pHEE11fDH]HCHH;MuHMHAIHYfAEuHUHBIcIHMHAI<HtH5%t_AH]HC HUD IHHHt%H@8ǀt@t tLbL1LH[A\A]A^A_fDUHH]LeLmLuL}H0HIL=7IHE11IAH Ȕ HH5Z~ HLL,$MIH 1L1 Lq1LHUI3uH]LeLmLuL}} UHH]LeLmLuL}H0IHI1%IL躞HMHH5L1 H=HtLH5% Hn6H81 L謸1L2HHt^L%IHtHC8LH8_ LcC0HLH8B HS C,C(t,L4L,HH]LeLmLuL}H1UHH]LeHIH5:HHtHH$Ld$DfDH5fLqHHt$H W LH5HA5H81H W LH5,H5H81ӭ눐UHAWAVAUATSH(1HEHH@HEH8HE@0EA~oHELx8AEE1E1DKt 1H[@1HHtH HH[fDUHH]LeLmLuL}H@Hlu1H]LeLmLuL}1HfHEHtLpI>H HUDj0E~$LcLE1 AHE9t#H;v L9tDH} {EE1DEHEDh0ID;m~K>H) AHĉHELpK<> A9tHUr0H 1p0H UHSHHO1҅tH1҅‰H[ÐUHH]LeLmLuH Id膬ILKHtfH1L Ht{H蓗HstockholI$AD$m_alfAD$ nLH$Ld$Ll$Lt$fDfDH aS LH5H0H81 tfL記Ht&H5LuhH5LuBLudH1L HtdH辖Hmsf_alnI$7H5tLtHblast_alI4$fAD$n Hpdb_struI$fAD$cL tHfasta_seI$fAD$qLstLLtL{9LktHpir_seqI$pH5% L赾HH1IH轕H5b LΥtzLbL*H Hd 1LHHO 1LAHHtgTIswissproM$AD$t_sefAD$ qLHoligo_alI $fAD$nIfasta_alM4$fAD$n~Lt/Iclustal_M$AD$alnVIpir_alnM,$CH 1LHHt虔Iconc_alnM $AD$ H5 LtA$tc_lfAD$ibAD$H5 LSuH5& L@uH5 L-tItc_lib_0M$fAD$2L膘zHnewick_tI<$AD$ree^fUHSHHOHtJHHHt8uH]1H[@H5q-HS HufDfD1H[HH[fDfDUHSHH返HtJH2HHt8uHͪ1H[@H5H HufDfD1H[H航H[fDfDUHfDUHH]LeLmLuHIL5,IHE1HDH5D1XhMW4I]H5 H3t/ALDHUI3H]LeLmLuH5_ HuH5L$ HuI}APuI]H;Ht!HHHt 80HEI]H Ht!H|HHt 8)HI}qH:HAXfI}H褒HIEI}艒HIEAWI}HqHHHMEIH 4 1H1 H5i HtH9H'Wg H54H  HHASH5*H HHҧAAHMEH ]3 1H1 H5Ht AMH^A?HhAMUHSHHI HxAHHEH& ;H5#t HHt,H}H}HH51 HEH[H}H UHAWAVAUATSH(H}A詣IELeE1HEHEIFIHt;D@E~2E11fDH@(H<L AIHD9`I~tIFI(H5HYuI6LjI>IFIH5H'uI6LiI>IFIH5pH1趂IAH m H H5(W HHL$$ML H R1H1w H;1LIF@PHQI~I6IH5HI1 IAH l HH5|V H4HL$$MLH 1H1 H菑1LIF@PHPI~I6IlH5=H8 uwH1YHAH 9l HH5U H胍LHH$MIH 1L1 Lې1HH5Hu1L&H5Hu1L>bXH5>HʄtH5L H跄u61LIIFH5H! AD$PH5Hnu&1LsHIF+I6lIH5H5tH5H"uH5LHtZIFH5HtH5H߃um1LHIFHPI6IpH5LHHtiH / LH5H H81藅I^H5pH_ux1LHIFHQI6XIH H / LH5H;1.IFLH5H;1xmH5kHԂtH5aHu LH5JH衂uL蕞IMH5kH~uL貱IFI&H5SHWu LH5PH7u L+UH5Hu L[H5HtH5HHHHL?HH HIFE1E1111HIF0LIF0HPI~I6HHIH5 H,HH5Hu1L׈H5HLsHIF1I6If.UHAWAVAUATSHHIHuH:DEH_@E1E1H; IcH9DGAHE9uAADmHWED}EA~HcĄHEEnE1HMBHA9F1AuIF`HЋ@EEHu G EHEIEA9FHu UUŰMA9NZHMH=X  H}HEHH[A\A]A^A_Hu EEEEfE~EȉEEVEsL}EHEHcUHUIF@HUH UH55H}1_ AM9MA9NLmAnAIFXHUHB<(AAtvtZIFXHMHB(Hu AD;eqIE9fdEA9FuADLKf.IFXHUHB<( IFXHMHB<( AH5H}1Y AH5H}1? EVEkH=HX E2HOH=,< H E3f.UHH]LeLmLuL}HpHHuDgDoDD1E1kHDd$(Dl$ Dt$MDMb)ʉT$H@HD$H H$ILDfH H( H5H}1( HuHH]LeLmLuL}UHATSHHt)L%f.I4$HHHu[A\UHAWAVAUATSH(IIHӋzyIŋ{e艟HEAD$~21f.IDITHBAHA9D$I}DCA1ɺAT$~11fIDHcID$@H4HEH< CAT$H9HuL藨IH5' LIEL$E$AD$$H dHOH5`L1 At$H}NAAD$~71fITID$@H DBDH5TL1Z CHA9D$L F LLHjLPH}H([A\A]A^A_D@UHAWAVAUATSH(H}HuHU1|I@HUHHcHMHAXH< AEE1E1HEHEHUD;<| AAzE1IcHMHHUD;<}HUHMcHJcHMHAXH4IcUIEXH<[ HJcHMHA@H4IcUIE@H<7 AAEHEsIcEIU@HLL%f.I4$HHHuLH([A\A]A^A_fUHH]LeLmLuL}HpHHuDgDoDD1E1fgHDd$(Dl$ Dt$MDMb)ʉT$H HD$H H$IL$bH H$ H5H}1 HuHH]LeLmLuL}UHAWAVAUATSH8HIH O<;Q?Ic~|HEH5x$ HȐIANAVH5qH1l EAFeAF6HEHEHcEHEHUHMIF@HMHH5L1 HEHUE>9EMA;NH]AE12DfDL- AċEO>D9~fHE9f~]A AIFXHUH<IVXHMH <-uH <LS AċE=D9L 5 EHEHEA9FL  =EUA9VLH=O LH8[A\A]A^A_%fDIVXHMVL A H. H5L1 1H= 2HH= H UHAWAVAUATSHhIIHUH=%K HZAwIGXH8oHEOu#fDQot HOtE9uuHcEHu ;]uHEBH5H}1 vAwEHGEtHuH= E2HH= H EuƉuEIGXH8E1mUHH*UHHUHAWAVAUATSHX'HIHHHU11KI@AO1E1HHZMf9|2MڍA9|H:HUH3HX'[A\A]A^A_LIGXJ40IEXH8& IG@J40IE@H8 IG@HH4IE@Hx IGXHH4IEXHx AEIG@N 0HHH$LH `'1H1 IEXH8 AEL\FH!LH&AOH; UHAWAVAUATSHX'HIHHHU11蛓I@AO1E1HHZMf9|2MڍA9|HHUH3HX'[A\A]A^A_LIGXJ40IEXH8v IG@J40IE@H8b IG@HH4IE@HxF IGXHH4IEXHx* AEIG@N 0HHH$LH '1H18 IEXH8 AELDHqLHvAOH; UHAWAVAUATSHHIVHCD8A EH5 HjHA|$E1E1AfH޿ ID$XJ4(HDoNHHƿ AIE9t$~PID$@J(H5F H1 ID$0J<(?tuID$0J(H5 H1 qHH[A\A]A^A_[H= A2HH=y H ADzUHH]LeLmLuL}HpH`ID\MHHHU1H<2<1II<3I>H5H ku HI IFHIIIfHII9fHL`I%11H?bI H5H+ju9\~,IHt#0 I>HIkIF1H5xHiu01\~IwI>HI)IF H5DHiu;H=9j1҃\~IWI>Iu HIIFNH5HNiu41҃\~IWI>"IuHIIFH5HiuO\I1HHIIuI>>SHIHIEH5HhuIWIuI>q IzH5HzhubI I IOIWAAIuI>X>4HHUH= I]H5CHhu\\t*HQH9H=% \I IOIWAMGIuI>:5H5 HguIWIuI>`nH5Hng}H5HWgDH5H@guH5H)guV\t*HuH)H= "\I IWIuI>gIH5Hfu[\t*H H,H=C [I>IOIWIuHIIFRH5HRf1bH1 bII6H;I>I~eLMIH Q1L1 Lq1LHIF1I1҃\~IWIuI>C1 H5HeIHt{Hx@D`1DoHÃ\PIH5Oe8E~/E1H:tH5 HH81 AHE9u1`13 1҃\~IWIuI>1 H5HcuSI IV0HDhE}1ɉT HH`tIV09hRH5-HRcIFDP0E~mIOHx\,E11HxH8% INHAHHAH4HA8H<E11Z-AHIFD;`0|1WH5HbI~Iu IFDH0E~.E11H@8H4IH@@H< AIFHD9`0Iv I~ZCH`HG1I>ZHH`H8HpTIVDB0E1H`HHPpIV9J0E1E1I_HxH: INHAJ HAJ4 HA8J< E1HZ+AIIFD;h0|H5{HaI f.YI| ZIwIoIF(H5HZu+HH1҃\~IWIu(I~(M\H5\HYH5OHYI~(!1NM7I]H*HL \ IH膹 I~LHq1蘹 M6I]I~(1H#HH(C0~DžE1HC8J0H5HqH81o C0~J\iE1E1HHJ0B H5H -H91+ AID;k0|HH2  I9K0b1\IHtwj I~诇HH5H(XuPH}HIvI}1{HH3H_1!MIv(IO$1" 1H5mHWH5cHWH5YHWu(1\~ I蟷 I~(IF(\H5/H\Wu+W\~ I] ZI~(IF(H5HWuOIW\I>RIF(I~(HjHIu1) IwI~(1 H5HVu1\~IFIF(H5HVIǀcE1E1IHtH5LWVt1HH:J0B(H5HH81衶 AID9c0qI~(11 HI~(1HH5HUH5HU1I>ТHH`HHC\3H5HI}UH=?%H{IE1111ԄHHHH;rHH`H8H`HBIHcSHC@Hcons@H5# HSHHcSHCXH<} 1҃\~IWIuI>Y1 H5ITEH=+?.%H`HzIE1111HHH`H9虯H`HyI_H$H`HzIE1111謃HHjH5QHT:H5WHSt]H5bHSu1\~IwI>LIH5:HSSIuI>IIwI>*ZH5HH8 I_H5zH HH= \tIP HAH K1H1 H==#H`HzIE1111fHHcH\=H= \~Iֲ H=\~I軲 1\~IwH`tWH`H9HtHى ZH5H5HKRu!I>_HIIFI>H5HRu1MtIuI>YIH5HQu61҃\~IW1MtIuI>HI(IFH5YHQ1H5SHQdVHHH5\~Iw H5 \tIwI>OHI>I~fHH.IFHX H脲 HIFH@H8e I~11IHUXHIXH5hHPujI訰 I蝰 I~IFX1ۃ\~I_\~_IHtVa HI>ԱIq H5HPtOH5HPuA+D$ AD$ 1H5HOu8A+D$$AD$$H6H1MtIuI>8O1 H5HOtH5HOuI~I6VH5hHVOuEd\t I[ I>1%I~w0uI>IFIHBpH5HNtH5 HNuIwI>+IH5 HNuVd\tIɮ þ\t I谮 H 1HIIF[H5H[Nu.\tIe …H$H5THNH`u)H H5:HSH81i CH`H;H\tIѭ Iƭ ىH`H7I> IyH5HyMubI|$1YHIvH躱IFI>I~urHIAT$I~Qs0HvH#H5HM1I>販Iă\~HIHt?H5qLIHt"H5 LuAT$1LyI1LTHDhE~+E1E1IH@@J4(HC@J<( AID9{L%I>IHIF*IW\LGHIF(1&P0Hp8L7yIaH5HK\tZI]HCHCpIH4HCpI6I}dP0Hp8I>xII~w0I>IFvH5w IuKI>W1xIIH5HIKKMIuH\MgI_HHuIIAAH@@J<(1HIWH莨HAIID9`뛃\-MgI_HH5HI^H5HIIW\I~(FIF(H5KIII>jzIsH5CH% HHQ\~BI<$Ht9LA1H1I>蓧IAD9\| H{HHuI>IFH5IHI}(1P0Hp8I>vII~w0I>-IFH5HHIW\I>ɰIrDžDžd\uI{ Il HHH=֨ IFD`0E$DžHDžH@8HH4H=1sHIFH@8HH<1艩IŋP1HDžB9YHHH89LH8HH5{HqGIW\I>eI1{<7IAIEXJ4 HH<H  H\9/9|'IEXHHH5HeH81c AAUID9=H5HFIͦ I辦 AI貦 AI 覦 DDDDEEA;HR H5kHH81¦ A1DꋵI>#ID9| LIFH9X0H=bHH=聦 IFX0DžHDžH@8HH4H=f1 FIFH@8HH<16INjH1HDžA95DjHHH0D9H0HDE H5H EuzI XvHHFH01I>DWE~1E1DDOE~9k9GA@I9GFH5KH|DH5_HeD1I>sII5HtcIwL趩I6HKILIFH9x0MHkH0 l 1) I_I AI HDL&{H5HCIW\I>FIoM.HDžA}~WIWHpDžE1IE@J40HpH99CNIA9U~ HtAMHDžAIEXHHŚEA]E1~2IuX11HH89H9uDkdI褢 DDE9|CHHIv D MGDH5HH81譢 HAE9e%Y H5HBu|IOI~11ˮIA}HcpFHAuE11IEXJ0<藙HCHA;E|OH5HqAu;E1䃽\uMgIt Ii LI>bI#H5RH#A^IGHIw2HtI \ɉ1HDžGwwDžHHHHcHHL,ǀw%DžDžH5} LH@tH5$L5@IHA@ED$ H8=HIy~jAAHA@J<8ED$ HH@H8诪t1HH'HAIID9i9HINI>>I~dHIAT$I~q=H5r L=?3DžHH5J H;?aDžAHD$SI HP8H@0H5H>I_I 0HtI諔CD\AE1E~EE1AI1ҾH;LH1LL;&IAHE9uMNI>I~GcHIAT$I~#H5;H=tH53H= IFx0CaHIFx(HcFBHI@'DžDžE1IFH@J4(H HH \LDžIFH@8J4(H{=t{H{H5\=u t2H{H5<H\9u;IFH@8J(H H5HH81 IFH@J(II9XI~iIFI>%HsI~kaHIAT$I~GIFH@8J<(dHaHcHH<IFH@8J4(b H5H;tH5H;@0@H MNIuHAI>IA\ I_HhHÜ HH HH賜 \@I1Ht" H B\'I1Ht H A\I 1HtԚ H \I(1Ht讚 H G\I01Ht臚 H B\t~I8Htuf H AH=e`#t H=U #H=XD#t H=H#EtyH C,fsa2C0H I>NI1H BH AH H GH @1@H G,fsa1G0HH7H=O 1蕙 H GlowefGrH=&E1HHBH11H#IHI>EIs0H7L诃ArH5H811I>aH51H;8H;識 tOED$ IL荳H1HL HIgHX8Dh0ED$ IL>HoH5L7HH| H5(H7u_H$H1I>DŽIHH_\~/IHt&袗 I>L%yHIڭIFR1H5·HN7/M.AE(E1HDžIEXHL$LAL蜘 Hx;HIJ4 Hu HLj Hn>AHE9}EIGXH4HH<H  HL9(9| IGXHH5LH H91ߖ AAOHD9贬IF,11HGXHB-I>H9OxH5H6u(I>\II~w0=I>UIFH5XH5u;I IWIwI>.7II~w0I>IFH5H5u(I>)II~w0贙I>̫IFDH5HD5u>1\t IL I>BII~w0cI>{IFH5H4tH5H4u(I>DeII~w0I>-IFH5pH4u,IwI>UII~w0֘I>IFfH58Hf4u(I>II~w0蛘I>質IF+H5H+4uIFH@H8H5H4M&DžlE1AD$1E1AD$~cIL$XIAD<-<~t:<.ǀ#HcHD諩IF#I4{VUUU)ʍR)׍G0AD5H5H2u{WII~w0I>4IFH5H2uIIH@pI>Iw1_,HIIFlO IL$XH5aHP2u-I~IudII~w0耖I>蘨IFH58H2u9IvI}/ZI6I}II~w04I>LIFH5H1u;1҃\~IWIwI>eII~w0I>IFvH5Hv1u)I~,II~w0誕I>§IF:H5H:1uF1Ƀ\~IOIW1MtIuI>II~w0QI>iIFH57H0uII_\t I_I IvHI>tII~w0I> IFH5H0\MgH5±I\04HM$H d1H1 MgD\AH5xH0H HxAt I\$Hx1+HI<$ 1MtIu(LxHىI>*/H1I>|HHHھ袜HHھrHP@pI>s{I\H=D HAt ID$H1+HI<$Y 1MtIu(LYH5 I/HaHIH=U蘏 $MgH5~H.u#1҃\~IWIuI>%fIH5NH.uII_\t I_I萎 IvHI>1II~w0袒I>躤IF2H5H2.\YA 1LKIHXIwH@Hxf IwIEHxU IwIEHx D Iw IEHx03 IEHf-1@HHM}HHHHHHHHH8q HL@H d1H1 HL@H ` d1H1 HHHL@ H / d1H1趌 HHH L@0H d1H 1腌 L LHHH5H׵H;1 H&Hm D`Ex ID;`| H=X_DHC HA&H XxI;X| H= DH D@DI>ILIIHNH=H7  L`rIPHp@dHAIPHp@dHBH5nH-+uR1Ƀ\~IO1҃\~IW1\~IwI>$oHIHmPIFȿH5H*Q/IH5״I*HabcdefghI$IijklmnopM\$IqrstuvwxMT$fAD$yzAD$IDžHDžr~mE1E1J~GHBXHHA\ˉ,ADŽAEII;B|H9z1鵾H5-ISH H5nH H9 E1_,L H_IH@@HHEGDH5 HH81覉 )H5 IqIHXdH5TI(IABCDEFGHM $IIJKLMNOPMD$HQRSTUVWXI|$fAD$YZAD$RH5H(uA1҃\~IW1H`t H`H0I>HIӞIFKH5HK(G1I>YuHH`H藞H`HAE1P0~'1H@H<C AH`HGHD9`0ۃ\ MA\TRIPHp@I}d!ƒ$ H`HAHcH@L$II}蔇 I}艇 Hcۃ/AAID;uH`H{1WH L.I踈 Hx+IIwH蕈 H5H&M.L0H8\uMAHH\TRIPHp@I}dÃI}臆 HcL$HH8J!ȉMEH { d1H1 H5mH &uBIH@XHcJ ; AID;CI>>IF鶺H5H%tH0HcIHHH(HHHH L H(HH5H01v L IPHp@dH4 LcN$HcH8J!ȉH5ҔH p$uSHcIH@XHJ IEXJ<H =H5ܦH0$uL+ H5BH $XIEXHcJ  H5H#u:1҃\~IW1\~IwI>HI IF鄸H5DH#\IIu H`HA\uH5H#4I<$u,,FI$AD$H5H"IcMHHDžDžAD$HcI$HAD$f#-BE1탽DDD;| D;~ A>H5dH!ugI$AL$AT$$1Ht HH7IADI>IAt AA wI~;I>貗IF*H5H*!u+AT$$1Ht HH0DI>IH5$H u.AT$$1Ht HH1DI>IRH5xH ;AT$$1Ht HH7DI>I H5.Hf I$AL$AT$$1Ht HH7IADI>IHxH5ρ H) H5Т1賁 H H`HH`HDžAzIEXHcJ ; H5׏HyH5HbH5HKH5H4H5HpH5Hu1MtIuI>۳H5ܡHvH5ˡH \u H H+H=C H=á"H̡HtH=HLIH 1L1$~ FXLAH 1L1} HHPAH ^1HP1} HHHAH 71HH1} HH@AH 11u} I6L薰HL MH 1H1A} H)MOHƠHD$ H@HT$HHHL$HPH|$L,$MH Ӡ1H1| H(IH_HCpIHXppHx@H@豌HC`H@agLYgHPMgHHAg鍱H5HI~Iwh.HIF1腕IN\WIwIGHt 8[DDžI<$u,,}?I$AD$HcM,IcD$I$HI9}E|$E~41ALI$HH5MyHH81{ CHA;D$|I~w0ZI>rIFz_HxH5| Hz H51{| Hz HHH5HH81{ H0W IUH5ϜHH81z IH5֙ 3IIcILHH(LL(LLH5d L1z IPHp@dL]ƒH`HAHcH@HcH0D늾,,ƌIFHR\uIWIwI~R1 鶬H5/Hu$1҃\uIWIwI~cIH5 Hu%1҃\uIWIwI~aIF(GH5HGu$1҃\uIWIwI~fIH5ǛHuI~H5HuMI~B}ΫIcHcItIDt ADH5H'H81%w H5[Hu~I~H5 *1 `E1AL$MM$H`H7I>I9}HH5HH81v LH5ܚHucIXݪ11H@@HHPH_t&8_t!tHH_tx_tH@uIH9x鈪H5tHuJIuI~&,PZHZZZH5JH˞H8u 1o +H5]H+-H5H<H5GHtVH5ěHu#1\~IwI>i1 鴩HH5HH81(u 锩@4IǾ"H1I>UHH11I>sIH=HHzHHDMgLu HL,H=\HtH=LAGH=-(tH=AGH=tH=AGH=tH=EAGH=}tH=AGH=]tH=hAGI}LXHIEHI>IZPZHZH5HH8s 鿹H5[Lt HL LHCHDH01\%IGHHHIH d1H1mr HH5[HH81r IHcxHIEHcxHI>DOE~ME11HG@H<1sHH;IEH@@H<1sHHAI>HD9gA DžhZAE1DGEXDž`Dž\Džd1HH4HH/H=&z\dIDžTHt o T\CIDžXHt o X\"IDžLHt o L\I DžPHt do P\I(H~?o AIHcxHIEHcxHIHE11H@@H<1pHHIEH@@H<1kpHH AIHD9`H<WD@HE1HJ4HJdhhitI>FAA)I>'UHAWAVAUATSH(IIHauBDE~2H_@E1H;Xm HcH9FAHE9uՃHUIcUIE@HCONS@A1@r Mb)H5=oL1k AH5&L1k E}E~5E11I IE@HXH5L1bk AHE9eL Nk E1EeE HEA]EHEIcHUIE@HUH H5hL1j DA9E;}LeDzL{H5dzLd HHHHhǀHPpHp1H>>Iċ@DžxDž|E1HpQ0Hq8ID$@I<dXHp!HHt{|AD$~lE11IT$XIDD<-t;IcH<rP 0ot9ht 5iAEAIT$XI CHA;D$|xIxA9L$&|HLHhۺ"H HxHAyH01H5sxLuHI4$HH8谛M4$IML11LH l H5xHxH01wAH5KxLCH5oLDulHMu)H H5_bHxnH81E 4I<$I$I}E I4$HH9)H5nLtH5nLjH5nLSH5nLHHH1HkH5lLDHI4$HH8®1FDžAEIEXH8E AEH,[LH1nL.H5LAH5mL*H5mLuMHI$HH0H+gI$IML11LqH5qmL7u.HHHzHw HJ1H5JCLu)HdHH1H.H5lLu0H(HYHH0HlH5lLwtH5lLdtH5XLQu0HHXHH1HrlIH5vBLtH5 LtH5GLtH51lLtH5BLmH5eULu)HHH0HH5kLouxHHHHHtEDdEuHH FHH3HHu.H5XkLqH5HkLu-H;I$HH1HH5kLtH5@Lzu)HHH0HbsyH58L>tH5SL+tH5bjLA HH@IHH:PHHpHxXAHH3HHH8HHAH5iL9A HNI^AFlowefCrH5iH]H=_ytH=}_9AFH=^_YtH=N_AFH=_9tH=_AH=etH=weAFH=_tH=_AFH=UetH=EeAF EAF,fsa2AF0HH9L#HHHTHHAHUH1HhbH5}dH'H5ə HHL H{hHLgH01sH=]HE1H'NH11HVIHHH9HHs0HALG(AH5>L]unHHH0H%\H5ژ L> HI^Hunalign2I~CAF,fsa1AF0kH5gLukHJHH: HHHHm#H5bL;> HtSI^HunalignIvH5<L^uWHHH0H]H=\HHHHfHDI^H= H56LtH5fLtH5fLu.HUH5MdLtH59LuSHuHHC~ E1E1HCXJ< AID9kHHH59Lu)HHH0HiH5cLeu)HHH2H]dH5icL)u)HHH1Hg(H5XX Lu)H[HH0H%iH5cLu0HHHH5fMH!H5bLnuUHHHx0HhHGH$L bE1H1rHAH5KLtH5:LuGHaHHLH HH5%H H5:Lt H5\:L!8 u,HHHLHV }H5aLBu"HHH:18H5aL u8H{HH8̠HH2H6H5RaLuOH0H5 H]HHHPH5*T H15 HTH5`L`tH5^VLMu?HHHxH3HHHHo6H5`Lu=HiHH91HHHHH5Z`LuSH1HH9!HËpHxX詠HCXHH1H)H5_LEu)HHH0HDH5_L Hs1HH:!HËpHxXHCXH7JINj@0DžHDžIGHHHʹH5 Aą~LE1AXH\DAE9~E9~HC-HD9}A9HAE9HA9G0p1L%LHH5^Lu?H\1HH:HH1HH5f^Lu$H HH81虝LH58^Leu"HHH9gH5^L0u"HHH9O|H5]Lu`HiMu)H} H5OH/[H81E2 I<$mHI$HH9oMtA}u@H5]L|HHH1H6wH5;]L2 uHID$HPHHH@XH2H82 HH@I4$H H5\Lu)HH=O! H *H=Px! H FH=P_! H CH=KPF! H 4H=zP-! H $H=P! H H=P H H=P H 2H=P H 7H=P H /H=P H 8H= Q~ H 0H=2Qe H H=JQL H ,H=HQ3 H *H=_Q H EH=vQ H FH=Q H 5H=Q H 0H=Q H 2H=R H 2H=1R H +H=PRk H :H=gRR H3  H AH=R, H DH=R H #H=R H $H=R H )H=R H >H=S H MH=;S H TH=rS} H 2H=Sd H 6H=SK H 8H=S2 H FH=T H -H=ET H5iTH;1 H @H=T H 1H=T H :H=T H HH=U H 'H=7Ur H +H=FUY H HH=]U@ H 'H=T' H VH={U H EH=U H 6H=U H 7H=V H H='V H H=.V H OH=5Vx H GH=lV_ H 6H=VF H @H=V- H @H=V H bH=W H ;H=gW H KH=W H FH=W H GH=W H <H=#X~ H 8H=JXe H 0H=qXL H 'H=X3 H >H=X H EH=X H BH=X H ?H=$Y H ,H=KY H 4H=bY H +H=Y H >H=Yk H BH=YR H FH=Y9 H MH=Z  H aH=TZ H !H=Z H MH=Z H 5H=Z H GH=[ H MH=7[ H NH=n[q H #H=[X H FH=[? H ;H=[& H AH= \  H HH=9\ H 2H=p\ H 3H=\ H 1H=\ H 1H=\ H #H=\w H 4H=\^ H 8H=]E H =H=A], H JH=h] H #H=] H JH=] H AH=] H H=^ H 6H=^ H H=1^} H 5H=9^d H :H=X^K H BH=^2 H >H=^ H IH=^ H DH= _ H TH=;_ H DH=z_ H %H=_ H &H=_ H /H=_j H 3H=_Q H %H=_8 H -H= ` H 3H=_ H 3H= ` H QH=)` H <H=h` H GH=` H #H=` H H=`p H @H=`W H +H=a> H <H=a% H :H=Aa  H AH=ha H 6H=a H CH=a H @H=a H ;H=b H H=;bv H >H=Jb] H -H=qbD H 1H=b+ H HH=b H )H=b H 9H=b H 1H=c H LH=;c H TH=rc H CH=c| H H=cc H CH=cJ H BH=d1 H 7H=Md H H=|c H <H=Sd H 5H=zd H 7H=d H UH=d H @H=d H ?H=&ei H PH=MeP H CH=e7 H >H=e H JH=e H JH=f H KH=Pf H JH=f H MH=f H FH=f H hH=$go H GH={gV H -H=g= H TH=g$ H PH=h  H (H=?h H :H=Vh H 1H=}h H 1H=h H ,H=h H ,H=hu H5hH;14 H 8H=iK H5LiH;1  H gH=ni! H TH=i H <H=i H ;H=#j H VH=Jj H YH=j H ?H=j H pH=jr H VH=VkY H mH=k@ H BH=k' H @H=l H )H=Jl H [H=al H ^H=l H EH=l H OH=m H 'H=Umx H 'H=dm_ H AH=smF H SH=m- H BH=m H DH=n H CH=?n H AH=nn H @H=n H DH=m H GH=n~ H TH=ne H QH=!oL H MH=`o3 H WH=o H ZH=o H5*pH;1 H5ypH;1 H MH=p H ]H=p H HH=)q H JH=`q{ H EH=qb H CH=qI H AH=q0 H JH=$r H @H=[r H AH=r H5rH;1 H KH=r H ,H=/s H =H=Fs H JH=msp H5sH;1/ H JH=sF H HH="t- H 6H=Yt H *H=xt H DH=t H 9H=t H KH=t H FH=u H HH=Ku~ H BH=ue H CH=uL H JH=u3 H 4H=v H OH=6v H FH=mv H FH=v H @H=v H IH=v H OH=1w H GH=hwk H JH=wR H MH=w9 H JH=x H JH=-tL{ AD9eAtIcHHHHHUHHUHH5}H0 t-H5}H菡uZHMHH5r}H uHH5o}H*H81 HEHHHtH( AMHMHH5W}H HEHHHtL AEEELH5~H8 zHEH@:bLLH( HPHH(t H(9uLRHhDUEt"HhLH5~H)H81 LHH0HXH0DMEtOH0t H08uHHpHpHH5}H)H812 LHH,H`H`HX0H2HDhE~CE1HDHH`HAHtHcH@HcOHЋGDAD9hH`HpH8;dd|HE}1+H5B}H;(H81Q ;]HcHMH:+uDsHrHEH8. D9uIcHUH4€>+CHHE1H3IH>+tAE|$HMJ| D9uMEHMH`HXHP2DPH}HPtHuHPH8?HPHHXtHuHXH9HXHH`tHuH`H9H`HHPtHPHy(HuHPHB(HXtHXHy(HuHXHB(H`tH`Hy(HugH`HB(H89uCH8u7Hht Hh:uH SHhHhH8a LH8H`HXHPL HH`HXHP͢H5H uLHMHHHtH=3)A\LH5 H%H81 $H5H uvHUHHH|  H='AH:H G H5yH%H81+ ѐfDfDH5wH HEHHH| H=vAiH`HPHp@dH= pH`H1HPH8*HH`HHr$H5H_ HMHHH| H=ƃAfDABA?KH lF LH5RxH#H81 f.uHeHEH5dH u A?H8t H:u脞H`HH5xH'#H81= H5uH- uOHUHHH|  H= 蘂AHHPH9lH% AH57H u,HEHHH|D H=6A)H5iuH u,HMHHH| H=AH56uHM tH5*uH謘uZHUHH5tH uHH5uH!H81 HMHHHtH0 AjHUHH5tH u'HcEHMHEseqnf@os@A)H5tH utAD9eHEHHHt>-HcEHMHHEIcHUHEHMH9> AD;eHsHEH>-uH5 u%HUHHHt H$ AH5pH u"HEHHHtI} AnH5pH u%HMHHHtH A6H5pH u%HUHHHt Hx AH5SpHa tH5JpHN u%HEHHHtH4 AH5pH u%HMHHHtH A{H5oH uAEAXH5oH uAE6H5oH u ]^AHH5oH\H81Z NUH@{t$@}t@]t(@[t"(<v#@>@:{}[]()UHAWAVAUATSHIHHPEHEAH@@HMHTLoH oH5oL1 HHUHDHoZH5oL[ E1E1HJ B0fWt HJ Bk0d**^ZH57oL HB0fWt HJ Bk0d**^ZLnH5nL AID9BHB 0DH5nL1W EHHEIM9HLH[A\A]A^A_f.UHAWAVAUATSH8H}HH6N1E1HE DzIEHEA9|&LmHEDA9|HEH8[A\A]A^A_HED}HMHMHF@HuH 0J(LmH5mH}1 HJ(HmHMZH5mH}P E1E1fDfDHJ(HuH0B fWt$HJ(H0Bk d**^ZH5mH} HJ(Hu0fWt(HJ(HuH0Bk d**^ZLlH5lH}i AID9%HJ(HU DH5ulH}1" EH3NHEHE;M'XUHAWAVAUATSHIIHV@H5/l1 IUHH5&lL1 A}XEE1HEIUhIE`J 8N:UH5kL1 IEpHUȋ4~CE11fDfDIExJ8HH5YL1C AHIEpHUD9$LH=kE EIHEEA9EXXLH[A\A]A^A_f.UHSHHH iH:8 H5IH;1 H &H=k H H=+k H H=!k H H=k} H !H=!kd H H=*kK H H=k2 H H=k H #H= k H H=k H 'H=k H /H=*k H 'H=Ak H +H=Pk H 'H=gkj H ;H=vkQ H H=k8 H *H=k H H=k H 'H=k H )H=k H &H=k H FH=k H H= l H 4H=lp H (H=4lW H H=Dl> H H=6l% H H=(l H H=l H H=l H H=l H &H=l H 1H=,l H 2H=Klv H ?H=jl] H H=lD H H=l+ H !H=l H H=l H3 1H[_}UHSHHH5l tH5H~ 1҅‰H[UHAUATSHAAHӋzHcXI1DCE~NIcH<IcH4LE11fDfDHC0H8H0AHHD9CIcALH[A\A]fUHAWAVAUATSHHII Hx賋IHH LLEEHCHxHw 1H5k HHHuDMEEE1KHxH5' \ HL' H5 1C HKH8 H5jL% HKCDCDHH< &K CTBCDHH1H8H:H9YH>*11҉L2HH藚IH茚IǀE 1H5HUH3H[A\A]A^A_H5OWH u/AEHMH r ,1H01 AH5WHqAEHMH , ,1H81 AH8H:&LH=H WHstdifAnLIH;H>iHLLIH8HDHH:HDHHH5k 辉HAT$0AN0Dž9tH5 DžLL A|$0QE11AHE9l$0ID$H<łIFH<踂ID$H<QIFH<QIFH4ID$H< tID$8HH5VH1 DžAHE9l$0vAt$0E11ID$H<)IFH<ID$H<PIFH<PID$H<= IIFH<- HI9t.ID$8HADH5]VH1 DžAHE9|$0dH I$H5DTH AEHIǀ;[H5!H~ HI[b][b]+[L!Hh][h]=[sHYAtrucfA]AJDž E1BHcIHL>HHL>HL>HE1E1111LcHE1E1111LLIH.HHHHLHIHHX HcT oH0H{HcnH`{lj覍HhHH5QH)jK HhL`IE1HHp0DHAHD9h1DH蝰AĺDH膰HDH0HH`McJAHcHAHhJHHDH0LHpHH1ɺDHHHu MHAT$0H5O1A AT$0E11ID$H<; IT$8HAH5NH1 AAT$0HD9L H8LHDž~eE11HD HH4HH A\H5AHм u/AEHMH u 1HP1 AH5@H莼 )AEHHHcHHHI4HH<K EeD;HXL43I;-H5?H tH5=H yIcI4HHH<ۻ DEeD;HcHXHH;?-H5?蓻 AT$9HHL4HcM,DAHcHXH<€?-tVIcHHH3HHN &AD;K|7?-IcI<{<}][(<v^AHhRHHH4H=I 肄HHHDAƅ(ƅ)Aƅ[ƅ]Aƅ{ƅ}Q ƅ ƅ H5H u/AEHMH ,1H`18 AVH5:=Hʸ AEHI<ǀ?[taH5G觸 uHHI[b][b]+[LIh][h]=[sLSItruc];[*LKI][*]=[toLCfC t]C"AHHI HH5<HH81 KAUHt'~t2 ~ FH#@w.G0FHfDFH-FH*~HDfDUHAWAVAUATSHHIL=mIHE1He=HEHb=HEH_=HEH\=HEHY=HEW=EQ=fEH=ELMMAI! t€DICLDIM)EMHEIHE~SIyILACMLH HBA 9OHL9uII9tIBMIB ą~LHUI3uMHH[A\A]A^A_ME1E~11HI)0HD9uAIA9ut f.UHAVAUATSIAaL-DH5I}1д I$H5;I}1踴 I$H5;I}1藴 HHhuAIA{u[A\A]A^UHAWAVAUATSHIIDwEE~-H_@E1fH;R HcUH9ЋUGЉUAHE9uH5 LMlIAH5';H1 AE~QD}AE11fDIIU@D LZMDH5:L1観 AHE9eLBH[A\A]A^A_fDUHSHHHBHsZ1H[f.UHATSIGWH@ @(11C0CC C4^H5 L&kHCH[A\f.UHSHHˋ~HxuHs谲 HH[Hq蝲 HH[fDUHAWAVAUATSH(HuAH5I jIEHEEMą~7LmLe1IEBZ H5m9L II;]uӋ]E1fDHUHMHQBZ H5%9Lʱ IA9L 踱 EHED9}_LH([A\A]A^A_@f.UHSHHw8tHOH=8胱 HKH=8i H{@HHX1H[UHSHHHO H=\8 S$H{H5S81հ H{H5Q81ð H{H5G81豰 H{@HW1H[UHATSITH@ @(<11MC0CCC4^H5& LvhHHCSH571 H{H571 HKH=7" S$‰S$H{H571֯ KSH{H571辯 H[A\fDUHH]LeLmLuL}H@AHII̋QAE؃Dr 9y4ŰI AT$I|$H5X71A I|$EMDH5L71% I|$AZoAZgAZZSZKZH5R7 AL$ AT$I|$EH5l71ˮ EAD$LH]LeLmLuL}AD$,AD$,A;D$(tE9l$4tAD$AD$E)t$ DAD$,AD$AD$AD$AD$ IL$ H=5h ED$$AED$$I|$E%%H561 FfDUHAWAVAUATSHIHuII ~(1LhB<3LLHu IHL9uLH[A\A]A^A_UHAWAVAUATSHXIHuUHMLELMLzQIƾLhQHEHƿULJQIHƿUAD$E1ۅ~7I\$@E1E1H; IcH9DGAHD;euAANH='H}UH DEEN]EHEH=M̋UH5I51h H H=LHuUH}̅~hLeH]E1fDI$DY^,LUH fLL UHQAIHD;mu]E1f.HUHMHQBY ^V,LUH LL UHI9]HLHu UHEHEE9EH=U H=jRLbRHX[A\A]A^A_þ'?OHpJUHH HHD$HHD$H)H$L L'11@fUHH]LeLmLuL}HAIH|HHU1҃2Dy8Lq@HEL+@HEHƿUL @HEHƿUAHc?HEAG~ 1IG`HЋ@HMBHA9GHphHH=EwEE~HĘ[A\A]A^A_AH=/H5 1苘 H H=HUHu`HH=AH5̬1K H H=HUHu`Hy4HUHuXHAWHUHu XHvHuUH cHUHuH= `HGHu UH 4HUHuH=` `HHu1UH HUHuH=: `HH'}:HIF@ITH!H5H;10 HMHUH5H;1 IFXILHxHBXJH5H;1 讕 @UHHHaHD$HH$L L H lUHHHHD$HuH$L LcH UHHHAHD$HEH$L L3H wUHAVAUATSHAIH=bA 1I\$*DH5H1ĕ A wdIcHHHOH4I|$ ŕ HH/HA$H@AD$H@AD$H[A\A]A^DfDAtjAtdA~t^AE7vUA AuID$ AD$ 0000f@00@HvalueinkIL$*C1A$AD$AD$AD$ HvaluedefH;CaultC ?A$AD$AD$H[A\A]A^I|$* H51蔔 HH VH 6VHHHI#6666FFLHH>8HxH?HHH@I#00FF00LHHHA?DHHH1pHH@I#66FF00LHbHHL?HHHpHJH@H#CCFF00HH*HHHHHpHH@ I#FFFF00L0HH HH@Y?HpHH@(H#FFCC00HHH(HH@333?HpHH@0I#FF9900LHH0HHD@HpHqH@8I#FF6600LHQH8HHxHpH=H@@I#FF3300LHH@HH@L>HpHH@HI#FF2000LHHHHHpHpH=,"H6H5< H=`IHfDH *uHڐ uLuH躐 Hމ9 LH5K H1ϐ t^HcUH*H H'HLILAH5[H1蘐 f.HJ tuHމȑ oHEAD$ HvaluegapIt$*C?A$AD$AD$UHfDUHfDUHAWAVAUATSHXHHHHU1HmHEHmHEHmHEHMHH! t€DHAHDH+H5AH.Ipam250mtLƅHHHH5.L%:t"H5_ Hs.L%\ >QIDE E1ENAZA҉HI4E11fDHK ׋IBAHHE9~I93QHE1LE1HA|蠍 HIHHA< 肍 HKBHA|c HIHHA<? HKBHA| HIHHA< HKBHA| HIHHA< Ō HKBID9ID9HH=o, HHHHH˜HHHHHHHLDžHL*IA> HL!IA>܋ HcHAADA>ŋ HHHHPA>請 HHH@LHL(IA> HL"IA>] HcHAADA>F HHHHA>) HHH‹IƋ9HHHH@LBPHHHH@LBPHHHHHHHHL$aHHH˳HMH3 @HX[A\A]A^A_H5H5*gH5H*tH5H *Iblosum62LfDžmtƅHHH/H=肊 DždHtH=ʼn Džobj1LLIC|,p HIHC|,X HC|,< HIHC|,* H C|, HIHC|, HC|, HIHC|,Ȉ H LLfLH! t€DHAHDHL)H9HHHHH˜HHHH)H5gCH(H5C~H'L%H5wH'L%_cH5^H'L%AH5EH'L%[H5,Hp'L%H5HN'L%WH5H,'L%uH5H 'L%H5H&L%quH5j H&L%/SH5H&8H5~H&L%RH5hHg&L%H5RHE&L%NH5;H#&L%H5$H&L%JH5 H%L%ȽlH5H%L%FJH5H%L%d(H5Hy%L%H5HW%L%`H5H5%L%&H5H%L%!H5iH$L%~H5SH$L%2\H5;H$L%7:H5#H$L%4.H5 Hi$L%)H5HG$L%0HH5H%$L%nLH5H$L%,?H5H#L%:nH5H#L%HCLH5H#L%%fFHH5 HV#tH5W HC#u.DžidmafDžtHHHy H5 H#tHHIH . 1H1蹂 H,H5H"EIEbojxEH LE1HcHHIAuHcH IHIH HHH5 H"QEHH 1H1趁 HH! t€DHFHDHH+HE111HH9uAHA9u1ҍFHHHHǀHH9uHHtHHnHtH}uHMHu1dHHPHqtH56 HZ9HH $t?uH^1 ,Dž}HSHCIH蓀 DE~[E1E1E1IcHKH5 H1螀 tUAE9~H5u\H1聀 AD9~LExE1McH CH HLBV1H BHUHH]LeHIHH=Ck>uLH$Ld$(HH= uLH$Ld$LHH5 HGH81] 1H$Ld$fDUHAWAVAUATSHHHuIHLELMHMHLHUHc#HHMHHMHD8HEEHEE1J)HM HMJ)~4E1fILJ(; ~ AT$IHMJ)9EHE0HEI;u~ HEH둃~CHDHB9OA9DLH9uHU HED8HH[A\A]A^A_DDfDUHSHH,tO2t*-t5H HH01hHiH[fYHt!IH Y d1H=31| H3 HLH0@1fDUHSHH,tO2t*-t5H& HH01踲H9H[f)Ht!IH d1H=10| H HH0@1OfDUHAWAVAUATSHIH=} HEL}} E!EE1E11Lhf.HL9tEB<#suB<#PtB<#sEB<#sAAHL9uAkdkUdA}~dbʉARNA DNALHUȉH=3Hu| HEH[A\A]A^A_B<#sh1E11ɋ5tRH5Ht>tdtcHUHPROTEINH HEHUNKNOWNH8HEHPROTEINHk뢾HhH}{ Hn,UHAWAVAUATSHAHdHEE~ZIE1E1H;{ AAHE9uA~HcxI1IuLF{ ID9uHIL}HH}%{ L)!HEH[A\A]A^A_fDUHSHHHtHw0HH{Xz HH[fDUHAWAVAUATSHHLIǾI@ @(11Q_AD$0AD$AD$ AD$4^ID$#EH=H5 EEHH<%t<#HHc]HHMHHH]H}k/HuHEȉEHEAE1=n=atL-HHEL%H=* .I=' HcHUD='^ 5~!H51D22B aH9H=kHc8LHMHl HxHLHuHH=+l HxxHHH`l HMHIHuHHcJ0HJ<0H"l H5HUHJ<0 l HMHJ0Hk ~jE1Lh,HcHDHuHJ0B<#ǀtǾ@i tH]HJ0AHEAIE9EH=`)j 11fDLD;ESDpLjD;uHMHL<N$(DdI4$L k J I;]DfDHHi H;>uHj  H4H€> u H9sH4dLj AD$dLLiHzH=kIi H5Z<Lsj AE<I]LVj HH8 1H"H=h H5'gHڃ tUtQH*tIHcHڄtFfHHu5W'A؃ t'x*UjHrH=cAh H=RH5ת tH;HMi  H4H€> u H9sH4dL0i AD$dL,L LH5HÐH81g HH=g H=H5C, tN1HH=lg Ht5%'cHfڃ tQtMH/tEHcHuڄtFHHu5'A؃ tu'/YH DHHJI9sJ4"1E1Lf CD%LL 5Q'HcH7HH tFHHu 5 H'S -.tX*t tuH6H=e H-H=t'u!ft9fHH=d HHd H;>uHe  H4H€> u H9sH4dLe AD$dL LO AE1HOH=@d H&5'cHڃ tQtMH>tEHcH'ڄtFHHu5'A؃ tu'>YfH<>uL-XL%IH=qH=|11c HbH=C1c HJH=+c HH= uA~!1HH=b ;]uHHc 11ɺHHAHހ> uAHHzH9sH4dD)HcLc AD$dL Lz54'H=aG< tHu8H=IHZ0b HH=( tHPtFHAT5'AH< tt뿁'ufDfDH=H5f=EHu}HcЍCHHHB<" t HHL9v)ddNLcL'LH=1HPHRH=H5t8EHHZH<><%<"<#tsEHv'H=-1E|kHD =E'uE<#1{;EH HdH= EHSI=HelH'QHaUHATSHIHL` L` AAx]Ic]tQ.tAHcH E1"H]t*IHvHɀ.tAD9yIcEx BD'[A\L_ fB .[A\UHH]LeHIHH|_ HHLt_ H$Ld$ÐUHSHHHH5|HH81^ HHdHH[] fDfDUHAWAVAUATSH8IAAHHHU1LHHfDfDEELH5HH81}] H vHLN] HH5 L1D^ t]A9|/9~KH5H H81!] |fDfDDH5sH߅H81\ PADH˅HMH3 uH8[A\A]A^A_-\ UHAWAVAUATSHHIHrHHU1L=rL5sHLLf.f(H5HH8/\ LH5I?\ IH[ LH5 H1\ t2f.bH5kkHHUH3uHH[A\A]A^A_Z UHATSIHH;Z uL[A\UHATSIHH;Z uL[A\UHAVAUATSI\ AAxFE1 C,_IE9|4C,H=[ HuÀtؾ@Z IE9}L[A\A]A^UHH]LeLmHH8H@HHLPLXHH)H)HE)x)p)h)`)X)P)H)@ILDžDž0HEHH0H H͂H H=Z LLH;F[ H H= Y H]LeLmUHH]LeLmHH8H@HHLPLXHH)H)HE)x)p)h)`)X)P)H)@ILDžDž0HEHH0H HH H=X LLH;6Z H H= X H]LeLmUHH]LeLmHH8H@HHLPLXHH)H)HE)x)p)h)`)X)P)H)@ILDžDž0HEHH0H HH H=W LLH;&Y H H=~ W 3H]LeLmDUHfDUHSHBHHt HH[H=Q1HH[UHSH-HHtHH[DfDH=1bHH[UHAVAUATSIW LcK4!fHcHDAX@hX.vAIA9uA**^(^\[A\AX@hXA}[A\UHHHufHHxHufUHHHB9A~|B9A|1øUH1H?t@HGHHufDUHSHHHtJHSH{XJH{`AH{8H{/H{H&H{PH1H[fDfDUHSHHHt5|t'H(HC(H{ HC H{0HC0HJHH[UHATSIH?Ht LDfDH{HHuLv1[A\UHSH(HH|H= HS HUHC(HEHC0HEH=H1HtJ|H@HGHOHS(1Htr|1H@HGHOHS01Htr|1H@A11ҾCHlHBHc@H|H{ HBHc@HDHC(HHc@HDHC0HC H{(HC(H{0HC0HH([þHfUHH]LeLmLuH HAHL5tH5I>1K H{(DH5I>1K AuH{(AH{ DH5I>1oK At$H{ aAH{0tgDH5I>1CK At$H{051K8tHKDH5 I>K DH$Ld$Ll$Lt$DH5I>1J f.L5sH5I>1J H{(DfDDH5I>1J EH{ DH5I>1\J UHH]LeLmLuL}H@IAIHMHt$H(I} HMLDAu8uLH]LeLmLuL}IEHEIUH5WL1I E~;E11HUHBPH5. L1I AHE9uHUH5f L1sI pUHH]LeHA0^HAD$HcIHHH$Ld$UHSHHH@ H@(H@@h@|@tC@eHCHH[fDUHAUATSHIAHtGDD_8EtLH[A\A]HHaIcݾHQID$HI|$PBH5ID$PI|$X&HID$XI|$` HID$`I|$ DKHI|$(D;HHt2DSDE~)11fDHCHHcID$PH9sDHt;DODE~211HGHHcID$PH9wDEHuxH1ID$PD0EtGAD$DHcIT$HH(I~ LL 3 IFHtrHx1Ʌ~IFP1fDH9u9|NE1E1~2fDIFPAH5! L13 AIA9uLH[A\A]A^A_E1E1~IFPB+ H5̠ L123 AIA9u멋BtE‰-"@UHAWAVAUATSHIHAL=[I72 E~6E11fDIFPH5B I?12 AHE9uH[A\A]A^A_fDUHH]LeLmLuL}H0IIAԉMH57~ LILDLLmHLH]LeLmLuL}HUHAUATSHHIHHHIc}0HCHH{PIc}0HCPH{XIc}0HCXH{`Ic}0HC`CDDc8EH{ LXIH{(LIHMt2E\$DE~(11ID$HHcHCPHA9t$DHt8DWDE~/11fDHGHHcHCPH9wDEM0E~pMbH1DHCPD0Et>CDHcHSHCDHcHSHHHH5r -kHEIc}IHEHcxIHUR~A1AUIu@HMHA@H<عdxAx HACHHU9BH 0QH1 I( HEPBMt$EMȉMAF9MMDA $xjZAVAAHuLgHHAE~#1ABHA9EHHEPEI;UEIB;EJIc}I1AE~1At HcAƍBHA9ELLHþH}IL1HH([A\A]A^A_;H5HOH81& HMQ/fDA $UHAWAVAUATSHHIIUHMHcھHIľHIWA1Mt'L(1IX@hADH@ZHHu}HEHHEM(1EE1HUHL(M9 E1MKMtFDL1E1L;DDҸDDH9uAXChEuMMKMuMM9]X]IcAX\]EA.vAH;}QLU\LTuUtMąuX*E*M]^(^\¿E褹EHH[A\A]A^A_AXCh:XEf*E*M]^(^\HH[A\A]A^A_LLS|UHATSI@HcHFMD @M~(M9w(]fHIG(L2MOM^fIW0HtI9tHI9G(DI;G IG0HW0Ht*HȋH;tHHH9G(H;G IC0IT$0HtI9tHI9D$(I;D$ ID$0wf.HID$(Lg(HID$ Lg Mt$(M~ HIG &IQ0HtL9tHI9A( I;A uIQ IA0HIA(#MO(MO HIA IR0HtL9tHI9B(I;B uIR IB0OMQ(HIB(MQ HI@(MB(HIB IP0HtL9tHI9@(jI;@ uIP I@0MB HI@ Mh(IW IQ(IU0HtL9tHI9E(I;E IE0dHIE(HIE Mh |HHC(I](HS0HtL9tHH9C(H;C HC0H{(HHC oI] RHHG(HW(XHHG H{ cHW :IT$(eIT$ [IV(OIV FIW(IR(/IP(IU(IU HS(FHS =fUHH]LeLmLuL}HPH}I1H0_|GHELx(EME_|EbMg(EMt2ET$|EdEWA.D$hNHMo 1Mt%EM|ExWA.EhhbfEEWA.GhztffDHELx 1M=A|Mo(EMAu|Me(EMtaAL$|tEWA.D$hztDI|$(LI|$ L؉EWA.D$hzt Me 1MtUAT$|tWA.D$hzt=I|$(L0I|$ L!WA.D$hztf.EȉEWA.EhfDMo 1MA]|Me(EMtUE\$|EtEWA.D$hzt7I|$(LI|$ L{؉EWA.D$hzt Me 1MtUET$|EtWA.D$hztHB H]Hz H{ HQH]LeLmHx(/HB(El$0E~*E11ID$8H4H=Й1ڥAHE9l$0ۿ| fUHfDUHAWAVAUATSH(H}IHHHULj MMMI] Ht/MM&H{ LH{(LHcII](Ht/MMGH{ L`H{(LTHcIIcM,HMHI(HMH"L}MHELh Mt\LuMI} LI](Ht/MMH{ LH{(LHcIIcM,HULj(MLuMRI] Ht/MMH{ LtH{(LhHcII](Ht/MM@H{ L@E@E@Ek@AEf.A E f.AEf.A$E%f.AXEYf.AEf.UHAUATSHHH/Do8EWELg(H_ HEؾLXEMXMEDH9þL*B(~o*M^MZH5bHCH8>EH[A\A]WXGhE41fDfDfWH5HH8EEH[A\A]f.Lg(H_ HEؾLWXXEEE1UHAWAVAUATSHH}IAՉMHHH=oHL=IH=kKEE11fDIFPH5b I?1AHE9uMFPHEHxPDA0AAmDЉA1fD9иDEȍAA9 DATHu؅uAD)E1fD9EȍBA9+DAtHƒuԅuиAH=CfnHt HHH=AIv MDH}N,*JIv(MDH}/,*+Iv0MDH},*fDxH[A\A]A^A_At EH=mHD}}}}E~CHULBPI~PA11;t%fDfDATDH9D9uHEHhAFh(\T!_W.v(Y9^,~*bMFPHEHxPE2EEHULBPI~PA11;1H5`HH81}}}}.E~?HEL@PI~PA11;t! ATDH9D9uHUJhAFh(\T _W.(Y^HU*B|BhE~8HEHxPIvPE11;t}TDH9ufAE9uH=%HkHt HHH=}uHUȋB|*BhWH[A\A]A^A_ATDH9jD9u[E1E~;HELHPAI~P;:11ATDH9 AD9uE9DAN*,E1E~;HUHzPIvP;QE11TDH97AAE9uE9ENA*NfDUHH]LeLmLuL}H@IIA։MHHH=iHt`HNHH=E~;E11DfDIEPH5\ H H81!AHE9uI}twA}D~pMDLLvXEI} MDLXEEI}(MDLXE@WH]LeLmLuL}WEfDUHAWAVAUATSHHH}A1HHG HEHHEH@(HEEH9HULz MLb(EMtII|$ I|$(DvI|$ Dg؉EA9HULz 1MMo MMg(EMtFI|$ I|$(DI|$ D؉EA9~ AD$hMo 1Mt4I} (I}(DI} DA9~AEhEA9~AGhEEA9HUHR HU1H}HELx MHP(HUEHHELh M=L`(E1MtII|$ I|$(DI|$ D D<E9~ AD$hHELh 1Mt4I} I}(DI} DA9~AEhAD}E9~ HUBhHELx 1MMo MMg(EMtFI|$ qI|$(DTI|$ DE؉EA9~ AD$hMo 1Mt0I} I}(DI} DA9EA9~AGhEA9~ HUBhEA9~ HUBhHH[A\A]A^A_fHE@hAD$h9fI|$(EE#AD$hEI}()E@AEh,Mg(ME^aL`(MEEN@hE;Mg(MVEHW(HUHGhfI|$(WEEzAD$hEeI|$(AE6AD$h(I}((E;>fI|$(EEAD$hEI}(EfLb(MEEBhEHP(HUHEmHE@hXfDfDUHHpNhFhHF0HF HGfDH~("HVH95HOH9HV H~IH"zhJhHB0HB HHz(HJH9H9HJ HrIHqhyhHA0HA HHy(HyH9H9Hy HQH>DGhwhHG0HG HH(HwH9 H9kHw HOHt(NhDFhHF0HF HHFHF H~HHu HrDLHHV(HFIHtDJhJhHB0HB HHz(uHzH9tH9Hz HrHtSDGhDOhHG0HG HH(HwH9t"H9Hw HWHGHG HOIL?H H~HBHB HrHDfDHHQHAHA HQHuHOHuHWHGHG HWofDUHAVAUATSHIEHLo(MI](HH{(H{ EEYCh^E,*ClMe MtqI|$(EsI\$ Ht8H{(E[H{ EMEYCh^E,*ClEAYD$h^E,*AD$lEAYEh^E,*AElMn MMe(MI\$(Ht8H{(EH{ EEYCh^E,*ClI\$ Ht8H{(EH{ EqEYCh^E,*ClEAYD$h^E,*AD$lMe MI\$(Ht8H{(EH{ EEYCh^E,*ClI\$ Ht8H{(EH{ EEYCh^E,*ClEAYD$h^E,*AD$lEAYEh^E,*AElEAYFhE^E,*AFlLH[A\A]A^E`E UHAUATSHIHfI](HtW{|tKH{(H{ H[0Ht0{|t$H{(H{ H{0fMe MA$A|$|I\$(Ht'{|tH{(@H{ 7H{0.I\$ Ht'{|tH{(H{ H{0I\$0Ht3{|t'H{(H{ H{0fDfDMe0MA$A|$|I\$(Ht'{|tH{(H{ wH{0nI\$ Ht'{|tH{(OH{ FH{0=I\$0HtC{|t7H{(H{ Lk0MtAEA}|fH[A\A]DUHH]LeLmLuL}H@IIH~|:IF(HEHp|^HELh(Mt=AM|tI}Lt%Iu(L}HIu LnH9ILCHEL` Mt'AT$|I|$LMuDM9MCLeMn M*AE|Mu(MtqAF|tI~L~tYIv(LHEMf Mt4AD$|It$(LHIt$ LH9ILCL;eLuMCMe MAD$|Ml$(Mt1AE|2Iu(LVHIu LGH9ILCMd$ Mt4AD$|It$(LHIt$ L H9ILCM9MBM9MMCL9mLuMBLH]LeLmLuL}fIt$(LHIt$ LH9ILCd@H~L}f.I}Lt}nKHxLT}I}L4}I|$L}fDI|$L|=fDI|$L|>fDUHAWAVAUATSHIIItIcE<A}|I] AHcM$A{|HcCIE I}0D.IE0DUHAWAVAUATSHIIHu1H[A\A]A^A_HtH~PMGPP1ɾ1A;EH9uAu%1@1f.A;ADH9uMe(MyI|$P1ɾ1fA;EH9uAu%1@1f.A;ADH9u Mt$(MI~P1ɾ1fA;EH9uAu1@1A;ADH9ut(Iv(LHIv LmIMMd$ MtyMD$PIP1ɾ1DA;EH9uAu1@1ҋA;ADH9utIt$(LHjIMDMm MMEPIP1ɾ1ҋA;EH9uAu%1@1f.A;ADH9uMe(MMD$P1ɾ1fA;EH9uAu%1@1f.A;ADH9uLt'It$(LH It$ LHMe M.MD$PIP1ɾ1fDA;EH9uAu%1@1f.A;ADH9uIt$(LUHMd$ MMD$PIP1ɾ1fDfDA;EH9uAu%1@1f.A;ADH9ut8It$(LHu'Ml$ MI}PMGP1Ҿ1LILH[A\A]A^A_LIt$ LqL@UHH]LeLmLuL}H0IIAIHHH I(LDLAghW.MFPIPE1ɾ1f.A;EHD9uAu%1@1fA;ADHD9utWIv(DLxHH,Agh7@1ۉH]LeLmLuL}LIALWT%S(Ht)^h(W\(W(T(UV(_AXEAEHAWD~maAEXAED)9O*AE XAE Ht+(AXEAEAXMAM]AXeAe]AXeAeAEjIv DL1HfUHH]LeLmLuL}HpIHuIՉM$tIľ$sHLLȝILH}蹝IAU0LHLDAU0HLL2AD$EKMAD$EKMA$E MAD$ EK MAD$EKMAD$EKML(vH v}tz}tDEXEYzMXM^H]LeLmLuL}EXEY6MXM^EXEYMXM^UHH]LeLmLuL}H@II1H|Lo(EMA}|Me(EMt*A|$|I|$(I|$ Lu؉EMe 1Mt*A|$|I|$(LLI|$ L=EȉEMn 1MA}|I](EHtT{|1H{(LALc 1Mt*A|$|I|$(LI|$ LDEMm 1Mt{A}|Me(E1Mt,A|$|I|$(L|I|$ LmD4Me 1Mt*A|$|NI|$(LEI|$ L6DEEH]LeLmLuL}IT$H5 LQ:HWH5 L-fDHSH5 L1 EMm 1MoIT$H5\ L1EMe 1M4IT$H5 LIUH5 LIUH5 L1`EIT$H5 L@IT$H5 L1 A_IUH5 LzDfDUHH]LeLmLuL}H@IIIHMȋG|lH HI|$(HID$ LHHLJHǀMHHLiAE:AE:CIF(ILHH5^H}1I\$ Ht${|H{(HuH{ HuHMȺH=P^I\$(Ht${|H{(HuVH{ HuIHuȿ)AAM$AH]LeLmLuL}VHv@Hd;>HIVXHI$1HM,mHMLLI|$(gHSH5k H}1HSH5P H}1/UHATSHIHEHUHID$(HH5]H1HWEH[A\fDUHAWAVAUATSHXH}HH5Y茰IHH8EEE tIƋM~BE11D}IEHtIF@H<IFXHaIFXH@AHE9uHcEIV@Hcons@EAFAFM}EI}IU HUHEHEILmUUE1E1U~qHUHI|ۃIII|҃IIFXJ IFXJ PIFXJ @AID;muIHpIF(H8AFHHEHHULH}IF(HH5'[H1HUEL}IHEH EHX[A\A]A^A_UHH]LeLmLuL}H@IIHDE|Lg(Mt`E$EuWA$A|$|I|$(I|$ LzAI|$0LjA‰UEMe M|E $EusA$A|$|I|$(LI|$ LAI|$0LA‰U/1H]LeLmLuL}EMe0ME$EA$A|$|I|$(L~EMl$ MA}AEA}|UI}(LBI} L4AI}0L%AD<1ҋEE#IT$H5 L1KE&IT$H5 L1)IT$H5 L1 EWHWH5m L1E1Md$0MtMA4$uEA$A|$|tFI|$(LOI|$ L@AI|$0L0AT1ҋMAIT$H5 L1`IUH5 L1DA[fUHH]LeLmLuL}HPI1H|Lg(EMtDA|$|I|$(I|$ AI|$0ATA$EMn EM A}|yMe(EMtDA|$|I|$(3I|$ 'AI|$0ATA$EMe EMtAA|$|yI|$(I|$ AI|$0AT‰UA$Me01Mt>A|$|I|$(I|$ AI|$0zATA$EEЉEAMn01M A}|Me(EMtDA|$|I|$(I|$ AI|$0ATA$EMe EMtAA|$|?I|$(I|$ AI|$0AT‰UA$Me01Mt>A|$|sI|$(yI|$ mAI|$0`ATA$EEȍAEEAH]LeLmLuL}fDfDADŽ$ELJfADžEpfADžEEAmADŽ$EADŽ$EADŽ$E3ADŽ$E-ADŽ$EEȍAfDADŽ$bfDUHAUATSHIEHwO|OH_(Ht)S|HCHt Hx%EChI\$(I\$ Ht)C|[HCHt Hx2EChI\$ Ml$0MAE|I](Ht)C|RHCHt HxEChI](I] Ht)C|WHCHt HxEChI] I]0Ht)C|HCHt HxEChI]0IEHt Hx0EAEhMl$0ID$HtHxt'EAD$hLH[A\A]fDHx0uEYLAD$hH{(E"HC(H{ EHC Lk0Mt+AE|IEHt HxEAEhLk0DH{(HC(H{ EHC H{0EHC0Hx0EYChHx0EY`AEhHx0EY=ChH{(EHC(H{ EHC H{0EHC0H{(EHC(H{ EHC H{0EHC0sH{(EHC(H{ EHC H{0E{HC0nI}(EdIE(I} ERIE I}0E@IE0@Hx0EY/ChHx0EY Ch Hx0.EYCh!Hx0EYAEhUHH]LeLmH HIIH[HH`HHt"p|tAHCHt Hx}ChLLKtHHH]LeLm#eHx(HC(H{ HC H{0HC0{fDfDHx0xChsfUHAUATSHIHIHǀ"HH0HDE11H1LJWI 1THAT$0It$8I H,H@H8LHHt"x|tNHCHt HxChI HHcHI >HH[A\A]Hx(HC(H{ HC H{0HC0nfDfDHx0kChffUHH]LeLmLuL}H@IAH.$G88HGHHcHHGHHcHDpHGHHcHpE~MeME4$EA$A\$8ID$HHcHID$HHcHDxID$HHcH@EwI\$HtcD Eu[DC8EtHCHHcHHCHHcHDpHCHHcH@AvH{1HA$AEHH]LeLmLuL}fDfDFELg Mt A$E~Me(MA$A$AD$8|ID$HHcHID$HHcHDpID$HHcHỦPI|$1DHA$ZfA$AD$8ID$HHcHID$HHcHDpID$HHcHỦPE~I|$1DHA$I|$ DdHI\$(HtkDEucDS8EHCHHcHHCHHcHDxHCHHcH@EwH{1DHEw^I|$ DHI|$(DH]I|$ DHI|$(DHH{ DxHH{(DdHH{ DKHH{(D7H#UHAWAVAUATSHIIfL*AMA;A)xA,tҾ3XIH@ H@(H@@h@|@tA$AD$@eWID$Ml$I} I}(WHH@ H@(H@@h@|@t-%C@eIWHCIE HC IE(HC(LkI] Me(A(uMfLDYIT$hIt$LAD$|AD$8lfDfD IUhIuLʄMmAI](HI} tLH{YHCHH[A\A]A^A_þhVIH@ H@(H@@h@|@t@@de"VIEd VIEHMe I] WUHAUATSHHELcg@UIH@ H@(H@@h@|@tD`@eUIELqUIEHHSrhLkKhUYP(WT(V(]Sh\JhIU I](IEA]hAE|H9Z HBHB(HLjHHtLH"HQHQ(HAAhqhHHt%HH9A uHQHQ HAAhqhHHuHHW HtHBhXGhBhHGHBHGH9x tZHP(HG LH[A\A]HBHB THW(BhXGhBhHGHBHGH9x tHP(HG(HP HP fDfDUHH]LeLmLuH IHwLcg@SHH@ H@(H@E1Dph@|@tD`@eSHCLwSHCHI] LkMce@XSHH@ H@(H@Dph@|@tD`@eSHCLSHCHI](LkH$Ld$Ll$Lt$UHH]LeLmH IHDEH_HDEu<H{HHCH{(HC(H{ HC I\$I\$(HtB;u<H{HPHCH{(CHC(H{ 6HC I\$(I\$ H3H{H}HCLk(MtHAMu@AEI}HIEI}(IE(I} IE AELk(Lk MtHAUu@AEI}H1sIEI}(fIE(I} YIE AELk I\$ A$LH]LeLmH(ID$ @hXGh@hGhHGHxI@|SH{(HC @hXGh@hGhHGHxH@|S4H{(HC @hXGh@hGhHGHxH@|dSMH{(HC @hXGh@hGhHGHxH@|,SI}(IE @hXGh@hGhHGHxI@|RI}(IE @hXGh@hGhHGHxI@|R-UHSHHHt@DEu8HHt8HCH{(HC(H{ HC HH[DH{(HC @hXGh@hGhHGHxH@|RDfDUHAWAVAUATSHIHc_@NIH@ H@(H@E1Dph@|@tX@eNID$HNID$HIGID$Mcl$@pNHH@ H@(H@Dph@|@tDh@e0NHCLNHCHI\$ LcMcl$@MHH@ H@(H@Dph@|@tDh@eMHCLMHCHI\$(LcM|$ MgMd$AD$|Et$hEt$lAD$tID$LH[A\A]A^A_fDUHAWAVAUATSHHIAULEIEEE1EE1HEHEhHDHuHL]&(L]W.zt.v+ChX.vEM.}AID;uHUHJ H{uEoE~W(1E1E11LJI1HJWH9uHHXBhHAH9uHH9S tS(XRhXAM(TUVEHD9uA*A*(^^\(XRhXAIUEEAID;uM9Ic_@~KIH@ H@(H@@h@|@tX@eI|$ 2AI|$0%AAD$|Me0E1MtEA|$|t8I|$(HI|$ AI|$0AAD$|EAE|EAG|H]LeLmLuL}fI} GI}01*AHE9u1It$(LzHIt$ LjH9HBJC8tTHCHHcIƉHCHHcI@HCHHcI@H{L1ҾKIH{ L1*HH{(1ILLH&H*H01fDUHAWAVAUATSHHH=ە1HHH1E1MًV0B9}Űuօ~hHcHhL E1E11E_0E~=f.I +EDHLhIø+:9AHE9G0ЋUAID9UCAM0H9OHPEG0AA19HpH5mHPdIIEHHXH5H@}HH5rHvHpHHXHML4ACAW0Iw8IEH<dƒtIcHXHHcHAHIEH8{A9|AIIEH>L]AQHEHHEEHEHxHHHHpHH@L]E EEHEAG011fHHxH L@IHUH0HHH0HLxIHpHH]H<0t HLHIHpHH]H1Ƀ<0t AG0H9dUAHL4HxH6HuLxM[L]LhE1Dž`Džd@I$LHH}Iz`LHH},zdAID;mud9`N`H5H zH91xyHiH3(jyEw0E~`E11@AHE9g0~HH@HL]JD,EtIG8HXH5% H H81yAHE9g0HH H=` yE_0E~gE11DfDAHE9g0~HHpHHuH0DEtIG8HXH5 LzI;1xxAHE9g0DdD+`DA1A)d`H5H/H81-xEHEMHU9 $EHEuH]931wDž`Džd1MHpAW0uHhjHHpHxQ+HUBA0o:HpHAG0H]AO011HpHHPHA9O0DUHAWAVAUATSHxHxHpHhHpHEHEHpx0<HcHEHpz0<HcIHxky0dHcI1HE1HEHx@0EHcwHx IHpR0UH5H}k.IHxA0~g1ItLH}A>d*EYHx*J0^LZHUH5 H&H8!tE~VE11AHD;et@B<31uD;etHpHB8HH5H ҜH91sAHD;euHH0 sLH5z H H91sLH5e H wH91usHfH0 gsLEHEHEHp9B01r*EYHx*H0^HMZHUH5 HH8rDeESE11fDfDAHD;e0HU<1uD;etHpHA8HH5HH81rHUH5L1IE1H8HpJUHAWAVAUATSH(H}Dw0I1H8HEHEP0H5HH81rEEE1HUHB8J8H5H͚H81qLE1DKMt A|$|LDHuLIHx(LDHuMID$(I\$ Ht{|~CLDHuHrHHx(LDHuHC(H{ LDHuHC I\$ ȉMe(Me jMt A|$|LDHuLIHX(:,H{|ȉ I\$(I\$ Ht{|~CLDHuH~HHx(LDHuHC(H{ LDHuHC I\$ Me LH]LeLmLuL}fHIH5H=u fDfDHH5H=E PfDfDLDHuHHHx(LDHu(HC(H{ LDHuHC HH5H= eDfDHiH5H= e1DfDH9H5H=e pe:DfDH H5H=5 @eDfDUHH]LeLmLuL}H0IAHӅtH5h H:Hu$LH]LeLmLuL}WH5 H;E1A~L{AE~ H{dAƋ5WILDL1HHx(LDLlHC(H{ LDLVHC HH]LeLmLuL}H5\ H;dDH9H1LH]LeLmLuL}HH5H= c;fUHAWAVAUATSHHHuHU1IHH`1HEIc}0nHEIc}0\HEDEEHEHE}HUH:'dAL}ILAH; dAAHD;uuEA|DHcHHUH2cHHcf HAI7cHHcf HAID;eu%HUHH HUHHIHHUH8aAA}0~1fDHEBHA9E0A~EAAU0Iu8IH<dHHUAHE9uIHHAu0HUH}vHEȾI>7LuIHEHEH}HEHH[A\A]A^A_HEH01tHUH:lHEHH HEHH5UHH81$aHUUHAWAVAUATSHXH}HuAIMH 1H}jHEA}pDH5LIL 1HuH}*HL.ىH5& H_H81u`LHX[A\A]A^A_uE1HUB0A9ʼnANIY@LMHEH5LdIL~ 21HuH}F*H^L6.A*EHEHEHUHUHHf(A*.ED,A9EA2A2u!D,mD,E9thEH5\LIL D1HuH})HL-AHuH}UM*蒶A9uD,HH H= (_DDH5 H;1^g@d!HLH8_L%LH5 I<$1^HH1H}HI $H= ^H}TtHHY,HNYHLH}ZHH? HEAfDUHAWAVAUATSHxH}HxHpH=a1H}qHHE1E1I݋Q0BA9}AAI]D9~IEHA8J48J<(AH TID9q0~ѾHCa1HxHH#1E1MQ0B9}lMe9~MAHA8J48J<(AH ID9q0~H}H pH HʅH01{1H}`HE1HxNHEHH}oIHH}UHL*HLHxrUHLw*IH=71vAw0<8HEAw0<&HEH= 1DEEHMAw0HUHHMAw0HULM̅HEA0HEHULE~L1ҋMH9u]ȉ]E1 HME1HL1E1ېDH9uH1E1DfDDH9u11fDH9~1A<u1<H9DiC lE11fD1Au 1<AH9DDl 1E1E1E1AiA9D)؉É9MA9DLAHD;m9}N}DH5 Hp1ZEW0E~6E11HUHMHыH5Hp1NZAHE9g0ϋEHE9EDL]H}]H}]1YHxsH HłH01vUHAWAVAUATSH8H}HuH=xv]1H}+HHYE1E1 fI݋Q0BA9}AAI]D9~IEHA8J48J<(AH ID9q0~ѾH\1H}HH1E1 MQ0B9}lMe9~MAHA8J48J<(RAH ID9q0~H}+H H} HvH01'1H} HE1H}HEHH}=kHEx0HuH}2QHHu6&IHuH}QHHu&IǾ$(Iľ$IHEP0LLL~HMQ0LLLi1Mt|t8H(HΪI|$ ªAI|$0赪ATAD$|1LHHLHCSMt*H5O| Lt[H5#d LLLIHH=z MOLH]LeLmLuL}@s0LLH]LeLmLuL}MfDI|$ I|$0AD$|f.H55LEH LH5 HQwH81gN ;UHH]LeHIHtXH=t[H=H5[HHH5LH^H=߷H$Ld$01H$Ld$1HUHATSHIHH?Ht HDHLH{HHu[A\UHAUATSHIIH1HHLH= 1rHNHL1I}tuHGHHu*EHt;H{(E5gH{ E'gwxYCh^E,*ClHH[A\A]WE1IH5HI}HtLHH5|H{HHuHfUHH]LeLmLuL}H@IHIE.wzW.zMHtH\H軽IWI<$t!L1fHBHHu*YED,HEEuFHEH]LeLmLuL}fDfDHLH]LeLmLuL}A}HcIE~ 11IHcIIHD9u1LHELAHbI<$Ht!LfDfDH{HHuL+UHAWAVAUATSH8H}HuHU~HHEp0HcHIE1HUDJ0EE1@AGIHU9B0KHUHB8J8DMHMDA0ZH H5 HnH8EEHUB0HEI;ED@1ɺH}+HEHh[A\A]A^A_HMHHzIEjHEIcHHUHH]Hc HRL4L0AHEHUIVMcf@HH@ H@(H@@h@|@tD`@emHCLYHCHI^ LsMcf@:HH@ H@(H@@h@|@tD`@eHCLHCHI^(LsI~ L,$LMLELHULIH<<,?L IH<E1<:UE1H5eHH= l<~<'IψYALG<I<',AWAAdufDL<<'uf,<) L;؃:uL$=HUH5 L1;HUH5 L1;tELIHE@AH]'wI~(L,$LMLELHULWIHR;<,Ic^@!HEH@ H@(H@@h@|@tX@eHMHAHH]HCHIFHCLcc@HH@ H@(H@@h@|@tD`@e`HCLLHCHHEHX HCLc`@)HH@ H@(H@@h@|@tD`@eHCLHCHHUHZ(HSLr IVHRB|BhBlBtHBIcHHMHH]Hc H]HSH]HHAHEH{(L,$LMILHUHTIHH=_ hIHwHaH'H= 9RAcIcAofUHAWAVAUATSHhH}HuAHMEEEHHۮH֮H5qWHIH8<(t&HUH5 HaH81)8L8(HECHcؾHHUHHHUHBHHUHH]HCIIHCIH@ H@(H@1ۉXh@|@tDx@ekID$IcVID$HID$AD$|A\$hA\$lAD$tID$f @HMHUL,$LMLE1LH6H=D;8t(MDH5O H_H816THHMILEHU]ą~211DH]HHB|B8HHBhBpH9uEEE1@LeE1Mu AIE9tMHUHIH{dI4$6uDkIE1HEHUHEH<1HËp0E1E1Aŋs0ID9HC8J< dDLuѾd"HIcI@B*II9I9oHH]MH0 ^$LHqH4MH /H= S$HLHxL~jH1R R(](_(H9u1R\H\Y^H9HLvp1HHË@~kE1E1AV0Iv8HC@I<dHt:C~31HCXHI-:-tH,0AH;C|AID9kHHHGH/ HHHHH1f"H $H5 HHDžHH`DžDž|Dž8Dž<DžHH`DEDž0D;DE)DTD)㋍E, fDHF9ED9EA9T9TA9| E99THH$LDTDDHH@4.|8D<@DDHDLTPDž04|fDAċAD9AD9|DA9xAD9}苅01K HDDH5> H?H81CH;|ZXH5 H?H:XUHAWAVAUATSH8IHuHHMG0E1dIHHAA~0ǾHEEIc~0"IEEAF0!E1fCDEH}tIF8JH5D H}1CDEAF0~v1CHA9F0~cI4K<HUNE,duADCDH}t IF8HH5T>H2>H810ECHA9F0H}t*UH5 H=H81fDAD$IA9F0AV0E1E1ېADH}tT*\;@Y/@*^HIF8HZH5 H}kIpAvlE1E1LH"pIc~HAIE9f<UHAVAUATSHIHHsHuHsHt HHsHuH1H@ HuHfH@HurOIIE1fDE11Ift[tfx"ID$XH48HcK(IFHcHBfH[AHHt@S,uID$XH8B-ID$XH8B*ID$XH8B#IY A@IHtIXHc11ҐID$XH0HD9uID$XH8AD$El$L[A\A]A^DUHH]LeHIHz1H;HHLiHH$Ld$'UHH]LeLmLuL}HPII։MMDMnL=,HMH5 I?1EMt%AD$,EA\$,AT$(H5 I?1EMt%AF,EȋEAF,AV(H5v I?1^EMt%AE,E̋EAE,AU(H5W I?1-Hy1H;HHLIH&MtEAD$,MtEAF,MtEAE,H]LeLmLuL}fDUHAUATSHIHHuI|$HtII|$HufDMl$#fI\${0t5C0HnMd$ MuMMu1H[A\A]H=I ԹfUHAUATSHHLo f.HH{HuH؋{,xeD@,EyTH@Hu#H= pC0HMt)LHS HCHtHP HtHBLc{0uLH[A\A]DUHAWAVAUATSH8IU!I~Mv 9uI]M}IEHEMM;n tHkYH} HCHWYM1A;M@}HH8YE|HcHL%YI$H}UDI$~I$H9}蠒HEAuNHAEHME]E~11fD9t HcH A9MHE@HCD8H}7HcUE1H9H VXHHuH}薧IċU9UHc}uE1A=DIcHUIEXI 9HMHAXI 9AIH;ut7I$FEtIEXI8-HUHBXI8-IH;uuH=W腦H}LDH}[H}RHUHfWHxw0LH8[A\A]A^A_þ%HH/Wǀ!ǀt H=6\HhHWǀx ǀ| HHfUHAWAVAUATSH(AAAIH=V1LHD1HE1LHC7DI1LHAUԒHEIcIFXH5,tt A~$11IHcHCXHAD-HA96AF~JLcME11IHc8HHCXH4IMHC`HHcHAHBAD2AHE9$EfDEBIHED9@ A~3Ic11fDIHcHCXHDHA96EvE~8MOIc11fDIHcHCXHDHA94$IHcHCXH<CH>HUHBHSxH([A\A]A^A_fA~ILcME11IHc8HHCXH4IMHC`HHcHAHBAD2AHE9AF~YLcME11IHc8HHCXH4IMHC`HHcHAHBAD2AHE9$EEtA~MLcME11@IHc8HHCXH4IMHC`HHcHAHBAD2AHE9EAF11fDIHcHCXHAD-HA94$IHpHxL dű1UHHU(1 t | UHHU(1 t DfD| ÐUHHU(1 t | UHHU(1 t DfD| ÐUHHU(1 t | UHHU(1 t DfD| ÐUHATSDeHHt 9p{D<EHHHE1fDAHE9HH9ru9zuH9}HH HD@Hw;H} HHh;H~ HHYD;@} D@HHD;@ D@ D;E9H5H;5HD&D[A\E9IcH/GHHHAC{;HМHǜpHxHH HD@HHHHD@ D@D&;E9OD[A\9P|HTHUHFHH0H57A)HHQ;} HHHD9uf.UHSD:AH#FL E1AfDIcHII ;DOIOIHD9uHH4HAB':A9tHHHHH HHHaH9 RtH[HH@H[E11HvE@UHAWAVAUATSHH@H84D-: :A9H=9H59H 9D%j9AH9D59Lv9L w9E^4tqIcHL8H<H4HJ M LI.E*E)AIHHHHHIID9rAD/D&D*E9}DDIcHL8H<H4H IIAD/D&D)DDAIHHHHHA9}ʋ8L 8DžTDžX9DHHHUH@HL HMHHE8LÉdD-84ttL95j8~ =b8tD9tAAEMDMIcHH8L<LDɉ\D`E1ED 7E)΋=7D)A9N AƉ\`Ho7)Hs7 Hy74HW7D$E)HY7THY7XD9 AԉTX6HBHHMHH5BHHu$ H@H=BHH D9(u6LDE1E9 ETXE9 E\`HHl6DDMDHHh6dHHf68}2H>6D$HC6DTD HA6XD;|6Ny6s6AHID9t<4tL; 26Hc %6H5H5H]H5H5H5H5H~5H5Hz5H5Hv5H5L 5HmHmHm;L 5v5|5DžlDžpH@HH(pl='5DpEt 4lt54~DFD4D \44 D;4 IcL|4AHHMHH5>HH D z3D9uD;H@H=>HHuL2ML;=& HxDLh2Hi2H5r2H=c2L\$IcH8DD$HBHD$AB$IH AA׋PD0}DhE E9ETDXE9tE}DMHHU2PDHHP2 MHHI20h:DH%2D$H22TH*2X D;52N22,2lu%29D; 2wDžlM1HHxHm;EL151D9}=11DžlDžpFy}=n10D-m1EMDM[1A9 AAމMIcHH8HHEUUA1DžpD 0E)΋ 0)A99AƉ}DEL0B)H0 H04Hl0D$E)Hn0THn0XD9AԉTX0 u0HcH5;HHH=;HHu$H@L ;IHD9(u/E1D9D拽TDXD9WD}DEB4HH/EHH/M:DHi/D$Hn/DTD Hl/X;5/N//DpEu%/9D;v/DžpA͋Q/HHmD9$Hc50/HcH.H.H.H.H.H.H.H.H.H.H.H.DlE9.9D9.Džl z.4vg.;g.bDpERDžll D-AD .D.D% .AD5.D=.H"9HE1YfHrD9%zD99Z|D9b |D9D9AHE9učA- -H[A\A]A^A_L ,ML;=!$H@DDL,H,H5,H=,LL$LMAAD$HBHD$AB$IH AA׉L,}DE ,A9U;TmTX89}q}DE;}n}DE;TdTDXa9T~X; c,9EDM1D; G,p;}}DM{b;TnTDXDA95;TaTX;}}DM3+}E1L *ML;;HuDL*H*H5*H=*LL$AGD$HBHD$AB$IH AAӋ}D8dMEE9 ;TTXE9;\\`A9D;TTX'9\\`9T~X;5t*o9EpE;\*lVH8I9+H@DDLX)H I9L8)AABHxDHI9HL(AABfHUD3;T}X9);E}M9 ) f)]9T9XMXXKD9EDMEDE90D;EDLE" D;XDLXD (PL(Hc5(HcAHo(H(Hk(H(Hg(Hu(H;(Hy(H7(Hm(H3(pd(9~ D; ](19T~X;G(9E~ M; 7( (Džp (~lD;MDLM^9}D9MDMMDM'Z]h]DžPLz'9/DEEDžlD;XDLX9T9XMXXp;`L`^@;XLX.9T9XMXXL9&AABH@DD9`M`` &$=&D/&ArDžlDžpD k&DMEDžpH@DDEEH{%HpXH h%HHcIcHH<MhHAHcHMHcQHHIA+ 4HxDEEH$HpXH $HHcIcHH<MhHAHcIcL8IcTHHIA+ hHMDEEHx$HpXH e$HHcIcHH<MhHAHcIcWHHIA+ UHAWAVAUATSHhH}HULM$ȉE$$ʉU$Hc $HHH#HHUH#LxLEEEEHM HHxHu(HHpUʋM; #|u;5#EMHEE7HcEHUAGHcEHMHuFHE D0EVEEEE1E1HxD.EAHxD9 ~xH"HHXHU(HJc0IcWH\HpHJc0HuHcVHDlWu 1A9EAuD5UyEIMHU 9 EDeEtzU}HEEEEHEIEHE]~"AGHcEHUHMAEMHcEHuAGEHE@E1HEMHu!Hh[A\A]A^A_fDUHAWAVAUATSHHhH`\XDTDPa\/ \|L r!AQ!ًK!L\!߉)É)11ALADH;Xu勅|T؉EEHEHEX‰DMMH D8 )]UAD+- AA 5 D)D)9ADMH DA)H )D9EDM` E HH ,HHH,HHt3D 9uhfD9ZH@H +HHuL ML;;HUHhDD LHH5H=~LL$H`D D$HBHD$AB$IH AAF8E9DAMD9DMHHwD8DHrD$AHD;DEHEHE|9]LH0H/HcXHHpH 5AA؋XHHHEHHH=AAD))EEDEHHDȋX9]uߋ\ȉE9|PډUHHhHHEH`HEHHHHpHUŰ *)M]AD+-LHAH]Du 5D)D)9ADMHDA)H)D9EDMOEHH e)HHH_)HHt2D&9uD9H@H -)HHuL ML;xHEDLHH5H=LL$AD$HBHD$AB$IH AAӋUDE9DAMD9DMHHMDHD$HIAMHm]9|WL=HHpDF8L-A}DE48H|HUDE1E1E1A9HMA;< t G;AAHHILHAD9X|)IË9DA48HHHD9}AD9X}D HpHuH]I XDQDDA9} AAƿHHu|D .DTDH`HhiHHHD)X|)\\IcH`H4HcHhH|DPDXDHĸ[A\A]A^A_%HI9tZHEHhDDL8HI9%LAABtCHUDEALAABHUHhDD FHMDEHHpXH HHcIcHH<MhHAHcIcHHIA+ HEHhDDEHKHpXH 8HHcIcHH<MhHAHcH`HcT HHIA+ E1>7H\ډHHlD\D5D5ADTDዕ|H`HhD)X|)\IcH`H4HcHhHVFH.VDH$VxHVDpHVD]DX HVXHUDXDXHUX X;y3H UH; UkHbD H I9LLAABHHD7;}}D9AD;p-EH@HHHPDeD9%%kDE@LmHTHT9}a;USD;uDLuE9ELA9D9DEADED~D]DDEDž+HHHH4THzALZIH;} HSHAHD;uAHXE9DGHD9EkNEHDž`IH`Hc HUHBXH4HUHBXIcH>EH`MA9 UHAWAVAUATSHHhH`HXTDPDLH={HhHM(x H| D<DMEDHED]P'PxLAH=UUU11ɐDATDHD;uu狕xrHXHH8H`HH@DUEHDD]EDDETEDLDEAfDfDC<]9ADMHDB(HB(E9LL](L\$Dt$H8HHD$H@$LM0DELXI H`LHhD(L](AEA9AM9؉MLHUH{B(EIAƋ]9]D("EDDxD9]H@H/HcEHHpH EHHHEHHH5MM MM EE1fDD AHHDD;Uu勝Pˉ]9xDTPE\D]E HXHH8H`HH@LD]B\4HpH8UDDmD4LeECT=]9ADMHDB HB E9LL](L\$Dt$H8HHD$H@$LM0DELXI H`LHhD(L](AEA9AM9؉MLHPỦH:B EIAD(D9U#MD}MM9xLLHpB<B<LA|AЉ|HE11ҋELH; tA;4tHL9t&A A4;||~Aԉ|HL9uHpH4 H]I UAy+H9|}Aԉ|AHHuAL]0L\$ HE(HD$D$UT$D$$DLDxAȋTHXH`Hh$HHHx)PTLL]0L\$ HE(HD$U T$D$D)e]$DLG DPAHXH`Hh|H[A\A]A^A_L]0L\$ HE(HD$x D$ML$D$$DLDxTHXH`HhxTH]0H\$ L](L\$E D$Ax D$D)eU$LE DPD+xHXH`HhDž|DPE=LH5Pډ-HHDPDH|.RH]HHD}EDHD|fUADHcؾHHHHoHHSHH7H=CH=/H=H=HHHHDž|HHEAEU9U NU Љ|HXHHMH`HH]EAD]ȋUʉAHEHEDLADžA1ADeDDHU(HT$Dt$HMHHD$L]A$LM0DTHXHL`ALHhD(L](AEO]D;|D(~ D|A‹EED}AAAN~0 HqʉiHHVHOGHBH4DD9]ED)؉BHBH  HD(D-HHDHMHHHlHH+P~HMHHH~HrʉPHHZHNPʉPHa]5HH"DUHAWAVAUATSHHxIHpIHH1HEHxHXXHpHHcH<+vIĉELpIHpHFHcH<vHÉEB| HcHEsHdHuHt$ Ll$D$D$$E1E1HpLHx]EHEHD$ Ll$D$D$$E1E1HpL1 HUHUu EHuHHuH111ɋBHH;}u;uuHYHxpHMIċx6HHUHZEEEMnHuD^AA~?LcMLcE11@HpHHc0H ID$XHBB HA9>AF~BLcMLcE11fDIHc0H ID$XHBB HA9}EEEHEHEu9u@U9U4HnuAt$AAFAD$EE~aHcHEEE1HpHJcHHu0HJcH4ID$XHAF~%11DIHcHB-HA9MAIIE9uD]D][))DHxpH JIċx3HHUHEMn5oUHDDUD] Eu1EtWɅ~AHLW1Q DHcHA<x ADxXH9uE~MIcH<HM1 fDHcID8Ex DxXHD9uY A*^,UHAVAUATSMMMEeE1HAAIYLA?KH0H HG@AH HG@AHHG@ B AAHE9t:HOIcLHË1;2uA;BuA9BMBBAHE9uE]MD[A\A]A^@UHAWAVAUATSHIAHULËx E̋| MHcHGXH<oIAHH;!A9cELEE1AGLHE~`x11f.IcIT$XH0-t-u HHC-u-t HHC HHC(HHL9uAIE9uEA*LKLC *ULcL[LS(11- % I* 0HI*0^(\ZYY,2I$^(\ZYY,2IUȉ0HI HII0HD9sHH[A\A]A^A_þHBDC/H{ƿ//HVUHAWAVAUATSH(IAHULËx E̋| EHcHGXH<mIAHH;A9eE~LEE1AGLHE~_x11fIcIT$XH0-t-u HHC-u-t HHC HHC(HHL9uAIE9uEA*LKLC U̍*LcL[LS(11- % I* 0HI*0^(\ZYY,2I$^(\ZYY,2IU0HI HII0HD9sHH([A\A]A^A_þH@D<-Hyƿ(-HTUHAWAVAUATSHHhH`HXHPMDLH_XHHcH< kEHXHBHcHPI~DPLhE9`LhMRXLUA|$HcHE1EE1IcH8L`G;,EN OIcH(II111-HD9t6I<uHXIJcHcLUIHD9uH8HXIH(HcLEIHE눾YHHUHEHHMD!HHX[A\A]A^A_A$EHcHH}HEEHcuHH}HEHHLHUD"Ed1HX[A\A]A^A_UHAWAVAUATSHH HHILL1HIHpAXH|HHH 1蔍HhIGHcx0HEHHH(HC LILUE1E1HUHJc H HAXH<HuHAIL(E9*H HXXHHHcHH-HuHHu1DžTHEHHHMHcHH0HhIHHUDHMLx"HHH8KH8H08EAFd8Nc8NIcL,KH Ћ1E1fA9}jEDLAAtHcHMHы HcHuHHcHU HMLx"K IL1A9|EL0K H8HI M9=THEDTHD9DPEGnDPD9\ZHEDEuHcHUHHDEuHcD`HuDÅHLmE1EPM)EeGEHuHt$AD$D$LUIHD$H($LhDHHLALH LUAdPtyP9\tkD;`tb|9XHcXHpLIHMDPDID`IDB IdPXIcHMAIA9HEM}H}H}H})Hh)LXH3HpLIH[A\A]A^A_DfDIc|AHcfDfDHuLx"K IL1D`E%HE1ۉH;u1ILLIX|HcHHpHp?HHHu1DUHAWAVAUATSHIHHHLL1HIHHA0HPHHL1訆H@HHAHcx0HpHHHHFuLIE1E1IEJc IGXHH[A\A]A^A_LIIcH|LAHcLhI6Hc4HDlDT4HcTMLXE1E+E~E~eEt`$98tRD;~CH}VfIcH|LAHcHcHhHH1J\L`LE1DžXE1AHD;\t[HcHhHNj0kdAXu ADžXA9DLyH=` 1AHD;\uDDEE1}+}kUdA;|ct_,98tQ;H@HMHHcH<>HDHHCHcx0Hh@9DMDƿHx@E1HHH~VN,E11HHHcIGXHB<03uHxHHB(AHHD9&IL;uDuHE1HH~VN,E11HuHHcIGXHB<0)3uHxHBHB(AHHD9IL;u~.11HuHHcHhHH9HHaHEȋDþHEHc1H`@UUWEEHEHEM}E4~HDE~HMHHMEDž\Dž8HEHHHMHcHH HHHHHUDHMLx"HHH(I2H(H8TEAElEdJc8LIcL4KH D A*^ e E1DfDE9EDDHAHhtHcHpHы *^7e (](HcHuHHW.Pu!z.vHc\H` \HUXUXHHd XHELx"KI D E92EH JH(HI ]98HE8H9!D\EL`E1]+]E^E.g 49@;DHcIEuH} H`uHp uHH HhuHx 1;DmExUIEI6 !Ex*E11ېIEH5 I>1AHE9}EIE9E}H[A\A]A^A_UHHXH`HhLpLxDž0HEH8HPH@E1҅E1PfH@H0D/vUH8HBH8EtD9~DAAA9t900rH8HHH8D@HA0DDfDUHAWAVAUATSHHXHPHHH@H H_XL"Ic$H<IƉtHHHH`LHIBHcHutDxA1Hu uDuA1gHtDfDE1EHEHH9MHtHctLcxHBHF HBHB HBHBD$$AH81:|xtHEL 3tHcEIHB<}E1DxD tDtx(IcH]HHSAʼnMAE tJHcIcIHcHȋ EtIcLUIIRAAʼnMAE uAEHcDHEH8HUHzDHXD;i%LXMRXLUHHE1E1E1IcH0HPF;$EN HMM McLMI111f-HD9t6I<uHHIJcHcLUIHD9uH0HHIHHcLUIHUHpHDUHhDA*‹EA*^MDZDH=e EHĘ[A\A]A^A_D9eV2uH= 1EEHcHH}HE藄IH=hL莶HSLH=DLrH/LE7EHMHUH}1HLHxt1HxH`t HHUHuH}衲HKHxHUHuH}蝹DfDUHAWAVAUATSHH}HuHUHMLxLpHH=mKHxHHULpEDUH~EHEHXXHUHHcH<*ALUILUHUHBHcH<ED]EHJHHxH1 Hxu HAHuUMuH= 1~DUEWuH=ʃ 1~EEHĈ[A\A]A^A_HXJHEHHuM1ҋuH=Z =~H.JHHtE1HE8DfDE̋E9E\H]HIHHEH>pH= 1}HIH 1EA)DHD)HAE9|9E|E4EAEEE9D;mDUD9U=HcEHUHHHID HDhHDD)B HHH5!ILULT$AED$HUHHD$LUAB$IED$HEHAH}LUAEAAAE9D9m$E̋E9EuH=ہ 1|DEA1ɺH}h9LUHxLUHp*‹EA*^MDZuH= -|ADUIcHH}HEHH=GHGH=GرHGE%HMHUH}1)HGH}t5HEH`t'HHUHuH}HJG1HMHUHuH}UHEH`tfEGUHAWAVAUATSH(HHuHUIMMD}HMMLH~EA_A#MMLHUHuHEEA1ɺI>L7MEeHAAIZLALfDKH0H HG@AH HG@AHHG@ B AAHE9t:HOIcLHË1;2uA;BuA9BMBBAHE9uE]MDH([A\A]A^A_MMLHUHuHuzAI$`tqE$MMLHUHuHAMMLHUHuH蒣AI8-IAEHUHu3E$MMLHUHuH"A:f.UHAWAVAUATSH8H}HIHME|IŋCAEMe3Auƿ;IAE~(I~11HI HA94$A]~(I11IH HA9uLeD$$MLCHMLLH}DMLCHMLLH}jmD$$MLCHMLL1H8[A\A]A^A_fDUHH]LeLmLuL}H`IIIHEHEL}HEHED$$MI#DMLEHLLLlAƉH=`| 1vD$$MLEHLL1DH]LeLmLuL}UHH]LeLmLuL}H`HIIIEHEHEHEHEHED$ $LMINDMLELLLHkAH { LLH-2I$AuHLIT$AuHLD$$LMLELLLHDMLELLLHRkAD$$LMLELLL1DH]LeLmLuL}ÐUHAWAVAUATSHXHIHUHMH=AHt;uHEHX[A\A]A^A_H5 HgttH=\AHTttH=IAHHDHLIĉE~HH] Y$ ZZEHEHEIE1DeDHHEE1fDI]HUB BY ZK>KXAIHD;luLH-HUXfhHcEHHEEHL4EHL,E1E1fHa-HMHJ HUEHE JT`B +HHM AXLAXDBXEB3AIIID;huhHcEHHEEHL4EHL,E11AL%,HXHHHMEHZHE HTPC ,HHMA X X{XEC4IHID;hul]]]]EEHEHET9E{EHEP9UH+HĈ[A\A]A^A_ÀgtGHcHHfH++HHcbH++HfH=x+eHh+V+1rUHAWAVAUATSHHH}IԉMELML}H_XHLc(JnHP PHH/H501'7H.H.HHuHHuH=Ex説qHEL=)xHH`EEHUB<:ժHMB<9˪HL4H5HMHH OHL,B.HH]LMILMHHEE1C<IH8H2A>HH0ADIH0ADID9e;HEH`H9MlHlHKlHMlH/ MHH HHT$(HHT$ HHT$HD$HHD$L 6vL $L vLHu]H=HHH=,HyH=jHUH=FOH6H='~HH=~HH=OHH=>}HH=wOH~pHD$HD$H$E1E11111KHD$HD$H$E1E11111>HD$H$WE1E11111W1H=Yt辨IĉƉXjHIcKIHE4L1L-Q Hj AD$LPADAHcH@H E11I:AHHE9uHL9u15HH51|FH=l 1_5HH5PFH=H HHhHǑH5rRHHH]J HMHE1L qC<ۤALqC<ͤL HUMMHMH MJ4I:H2BMI8H2BHI8H2I:H2OI8H2LUA:IH8H2A:HH0AIH0AID9u.IL;X?gH)gHgHfH GHHH iHrHT$(H~HT$ HjHT$HD$HiHD$H}pH$L bprH=pۤIĉƉufHIcGIHEL1H L-' AD$LPAHcHHJ (E11I:AHHE9uHL9usfDUH11111fDfDUHAWAVAUATSH8HhH`HXHPH_XHHcH<ףIƉEHXHHpHXHBHcH<訣IʼnEEAAD12_HEAD1_HEHXH`Hh1HEM]teHEE11A}E11DUExgLUIHIBHIBHIBHIB HIB(HH9uAHE9uHPx LH| D@HMHHxH]HCHE~4II DA~IHHD9uE~5LEIDA}IHHD9uE~5LEI(@A~IHH@9uE~5LEI@A}IHH@9uEHEAH`HH0LUI(L(HEHH HUH HHMHHH]HHHuHHLUI LHEHHHUH(HAFHHEE1ۋE@HPHL$\$HpHHD$L0A$LMDEHXHH`LHhLPAAHxHLsJIN$9HHIDDDHHIDTLIHI<D$(H(HIDDD$ D$L IIDDD$D$JD9D$A1$DA$HHM$HxHIHTHHHI<AFD#1&$DALIIM$JL8HxHIDHHHHI<AD1#DA$L IM$HxHILTHHHI<AFD#1e#@AH(HIM$JL8LxIIDLHHHI<AD1#@A$LAF9EGHEILL9UHc]LceHUHBHFHxHHBH}D$(HuHF(HBD$ D$HFHBD$D$HF HB$A1>"EHcELUIHB4uE1E E}DeHcHcHUHIcHȋ Et4EttMEA t*IcHuHHVAʼnMEA uAEHcDHEH8HUHzDHhD;iHhHvXHuH?HE1E1E1McL8L`G;$EN LEMIcHII111-HD9t6I<uHXIJcHcLUIHD9uH8HXIHHcHuHH~HHL$HD$HnHD$HH$L AHHHHLcL%Hp 1x-H9uL}%H`1H9uH=HLpAHH LABA@ILULAGA@I L}HB A@ HHUHAA@DLEPЍ P؍|H'HHH0L.IrH(LLE1DžXDž\DžTHEDG|DHDDPETBHHELpMLEHc\L}MHcHHpH4L`N8MDXE11E1HcHHHȃHHЃHHHHHcHCHHCHHxCHHpCHHhDHH`DHHXHHPHD鉍LLBH`HBLM?LIGH(L}B8(HX IXH LBXH(H@HX@ .LB BEH0HHB HpHLcX(BX IXHH`XIBX@.tLPBH`HBL0M?LIGB (BX IXHHXXIB X@.HU L}BEAA\HEHIIHID;LEAEHpHIHXAX.v AL(IHXAX.v AIBLxBXAX.v AIBHpXAX.v AIB LhBXAX.v AHHHHMHpH(LBX IXHHXH(HX@.H H`HHHHEHU HP H`HߋM̋LXTHED9TTHcHpHXl1. w lBHLpAL AX.lv lBHLpAHEX.lv lBHHpHuX.lv lBHHpLEAX.lv lPL=H8DPD LIILP1,H8HIEDaHDAA tfHL`Et)tL8IIEH8HIEAD$HcDH8H8gDI} gHD;bHHvXH@H HE1E1E1IcHHF;,EN L8OIcH II111-HD9t9I<uLKJcHcL@IHD9uHHIH HcH@HhHH5 HH81tH=+HEHXXH{ uIH;uASUľ6IŋEąxL1HH9uHEE1HUHBXHUL$J\8LtEHtADE1ɋUHLI}HNjEE AA~;HAHVHcILHBAHE9uܾBIII\HEH}II}DEA1ɺLH([A\A]A^A_Ã~UHAWAVAUATSHHIǀ@$@(@  AD$AD$ x AD$| AD$ AD$ AD$4ID$HA|$ lj4ID$8A|$ x>E1111ID$8H0 A|$ H9} 4ID$@ADŽ$ADŽ$ADŽ$AD$XAD$\AD$`AD$dAD$hAD$pAD$ A$PA$PA$PA$PA$A$E11ID$@Ic$H8A$ID$@Ic$H8DID$@Ic$H8ID$@IcT$XH8ID$@IcT$\H8ID$@IcT$`H8ID$@IcT$dH8ID$@IcT$hH8ID$@IcT$pH8ID$@Ic$HTA$ID$@Ic$HDDID$@Ic$HDID$@IcT$XHDID$@IcT$\HDID$@IcT$`HDID$@IcT$dHDID$@IcL$hHTAD$ID$@HTAD$p1A|$tAL$H ID$@Ic$HTA$ID$@Ic$HDDID$@Ic$HDID$@IcT$XHDID$@IcT$\HDID$@IcT$`HDID$@IcT$dHDID$@IcL$hHTAD$ID$@HTAD$p1A|$tAL$H HwID$@Ic$H0A$ID$@Ic$H0DID$@Ic$H0ID$@IcT$XH0ID$@IcT$\H0ID$@IcT$`H0ID$@IcT$dH0ID$@IcT$hH0ID$@IcT$pH0ID$@Ic$HTA$ID$@Ic$HDDID$@Ic$HDID$@IcT$XHDID$@IcT$\HDID$@IcT$`HDID$@IcT$dHDID$@IcL$hHTAD$ID$@HTAD$p1A|$tAL$H ID$@Ic$HTA$ID$@Ic$HDDID$@Ic$HDID$@IcT$XHDID$@IcT$\HDID$@IcT$`HDID$@IcT$dHDID$@IcL$hHTAD$ID$@HTAD$p1A|$tAL$H Hw0ID$@Ic$H0A$ID$@Ic$H0DID$@Ic$H0ID$@IcT$XH0ID$@IcT$\H0ID$@IcT$`H0ID$@IcT$dH0ID$@IcT$hH0ID$@IcT$pH0ID$@Ic$HTA$ID$@Ic$HDDID$@Ic$HDID$@IcT$XHDID$@IcT$\HDID$@IcT$`HDID$@IcT$dHDID$@IcL$hHTAD$ID$@HLAD$p1A|$tAT$HID$@Ic$HTA$ID$@Ic$HDDID$@Ic$HDID$@IcT$XHDID$@IcT$\HDID$@IcT$`HDID$@IcT$dHDID$@IcL$hHTAD$ID$@HTAD$p1A|$tAL$H AHHA^ID$@Ic$HA$ID$@Ic$HID$@Ic$HID$@IcT$XHID$@IcT$\HID$@IcT$`HID$@IcT$dHID$@IcL$hHAD$ID$@HAD$p1A|$ tAL$H IcT$$ID$@Ic$HA$ID$@Ic$HID$@Ic$HID$@IcT$XHID$@IcT$\HID$@IcT$`HID$@IcT$dHID$@IcT$hHID$@IcT$pHIcT$(ID$@Ic$HA$ID$@Ic$HID$@Ic$HID$@IcT$XHID$@IcT$\HID$@IcT$`HID$@IcT$dHID$@IcT$hHID$@IcT$pHAD$$wEHEIT$@HLJ Ic$LUMJ4+Ic$ + 1 t Ic$A9$A9$…ID$8IcT$(HJIHMEL$$EE1E1\A$9E$A9A$9ID$8JB AAT$$ID9ID$@J4Ic$J H<+LgxH?H{8H{@H{HHLH$Ld$fUHAWAVAUATSHxHHHHHHHHHYXLIHcH<GIƉHHHHHBHcHUHx9EN$Eʉ8DžHDž`HDžhLIF@H`H4IcFdEHH Hx+1)IcV`EȉL+1)ЉEE+1)9EMEEIFPMc^hH`LIFxHD$8L$HHHD$LA$LDHHHLHCډLIFHH`H DE ˆ9DD9} uuA Dž$HDžXfDHHD,IcHHA8HHhD$A t ]t DD1l tAB(A t D9~ tHHhD4A$HHCHL`J 0HX$9|HXD4IcHHQ8HHhD$ A@H=H=mH=Yn`DDH=>EEDHcH4HD%IcNIC(HH H(Hx[A\A]A^A_DEAAAmLIIHcHT1DžH=ܤH=ȤH=HHHHDž(UH=  tHfGFH=  uf.UHATSHG11HtdE1ADE1E~.L1DfDA9AID9|1A9AHGHHuAkd[A\f.UHATSIHH=ˤLLME1Ґ;H  t7HcI sBf1fA;tAfuA9I;H  uA9LQA=  t%HfACIA=  uL"D[A\Ë=,Hc5H=HcH(fDUHAWAVAUATSH8}HUHMHEHaEHBHHuH5+EEH]EHML1D}D}D9}}*DeH]ȐLcKHIAHE9uIAAHcHIIIcMLIcIMLMHEȋE9QHEH8[A\A]A^A_þKWAdžIuăHcHH}]HEHcEHUL4EIH_HELHUHEzfUHAVAUATSIIIEIMeIEHtDI]ǀI$HI$HǀIHHHuLL[A\A]A^@UHAWAVAUATSH}̉uHUAEAAA^A~HcdIIcTHDž~kD)9~bHcHULAfDIAE)EDNA49OA9IcHDH9}At IA9D)NAL$9O9HcHH9}D)NA 9O9HcHH9}uD)NEA 9O9HcHH9}uD)NUA 9O9HcHH9}x'H1ɋtAEAEHALHD9uLH[A\A]A^A_UHAWAVAUATSH8IHuHcT I1ɸAU0~41E1IEJ4 LEhHIA9]0LEH@L8HMMtDA11DbLkA9|5LDA9|HELxHHEMuHEH8[A\A]A^A_MDeIB;0AIAA@IDA@IADA@ A@dHuLLE%ILEAIB0A@IDA@IADA@ A@dHuLLEO%ALEEI;M'UHAWAVAUATSHH}IHFHED~H=L11H5ffDHL)H9HE8II  t}dIhHgIH1IHwHEH5Q H诓HpIH}0EI H=bAHbHb@蘶HabHH@H5j?H} ZH5Z?H}BH5H}ْ8%fDfDUHH]LeLmLuL}HPH}HuIID H=yaADžHaacaI`\$H$AELLHuH}IHEHXXIGHcH<IIHcH<ALDIILLHuH}þLwL_H]LeLmLuL}\$H$AELLHuH}_IFH H=i`4HU`UHH]LeLmLuL}H`H}HuIID EH= `H_`I`\$H$AELLHuH}bHEEEHEHXXIFHcH<0IIHcH<1EHUD/IMLLHuH}FþH}LޗH]LeLmLuL}fDHEHXXIFHcH<IIHcH<E1DHUDInf.At5\$H$AELLHuH}$HEDfD\$H$AELLHuH}OHEH H=h^#HT^IUHAWAVAUATSHXIHuHUHMD DH="^I_XHHcH<IHMHHMHUHBHcHL]A DEtDmȉEDž0E1AHEfL O<CD<4A$9OЋ8  $A,D>DH<1LhmLh;l~DDdEhlMA$,A$Ẽ)`8H}BDDfDEIIHEE90UUH5PHHL$Dt$HHHD$LA$IDEHHHHLhLAƃ<Lh4 D90Dž0D00<D9DN‹8D,HI HM$:4BDB9DH M<BD<4A$9LEA1E1Dž0 4D9fDfDD9DM‹8D,HLLMԋ4HBDLC9D#0HMBDf.L]CD DAHuBD]HE8U9DdEHxRHPFH@UHX)HHH H=MHGLI{X1E11LA; |AA1IcLA; }HcHHHcHDfDHpHHxqDhEdDhDDžLE1DAHuHL@Iu~jE~eHcIcHLHЋE= tGHcLH@HLIcHAAẢDLH@H8GH@HzL1LH;KHHvXHuE1E1HDžH@LE; |*AAE1IcHHLE; }LMIcHHEIH]HcHHF`HHEs8IHcHF`HH Ah8DE}E1E1DIL]IcHHA`L$IA$HuHA|LxDpDhf)A$AIE9LxDpDhuAHKEBADHcH1HpHpHE= HcLL@ILIcICAẢDcIHcHHA`HЋhX Dd0Dz1E1E1LcLcHcLHf.HB;|AA1McHB;}J HL1HcL IJcELIEH}H1DLE~xH@H1E11%fDfDLXB-H;Lt9H<uIIcIcL]IHXAH;LuHHXIIcELIEHMH)IIcH@b)B HcHLIHIMH@AIMHIMH@AIMH@ A @>@|CcG5g,FfS!s@IEP~2H H H=q IE@IEPHH!IE@ x IEpHH HH]IEDPEDEHG H xH=p ~H gH=bq eIEDH P$DHH5q H H;1H H=q 1L- DfDBD3AI}Hà uIcB0jH>)‰HDž9I]HH)HHǀHH HMH3 HH[A\A]A^A_I]H HIE@ Hx I]HsMH d1H1IE@:LIHHHBP0Hp8dHc8A11~+IMHHHSHR 2HD9uMeIA$I\A$A~HHRHHHHHtHHH5m H H81H\LH Kd1H14HD@EuAH2 H %H=n iH5m L1!HH詮HHH賥HǁHHQHH 8HHHcHHH8HHի1~DI]HH)HH5 l H ) H91?1UH H 7H=cl >HHHA0ȅ~bE1A1HQ DHA8HXEGD DH5Ul H H81HHJHQ D$AHA0D9H q H1 Jf.UHAWAVAUATSH8IH!Dh8EoD`4E1'I!*YU ,ЉI!P4p0LrHNjXt1葬ILH裣LLOHH 6HLH=i lHjPTEIGH@H8IL 1HǀH]I!LIWHLQHH6I!`IWHL*HSL|$LmLl$LeLd$H]H$A E D1 }DEAHw L|$Ll$Ld$H$AA }DEAHwL|$Ll$Ld$H$AA}DEAHwL|$Ll$Ld$H$AAdHNjUȃũ L}HǀHRILH8[A\A]A^A_TIUHAUATSHIaII$!1ۋ@8t=LIELH[A\A]þ@LVeIfLHcIDHtI$!@4uÁuUHAWAVAUATSHILJ!H;HHHH!HhHBH!HHBH!HHB(HGDp0AE~$HXE1H;製E|AHE9uAwjHEȾWHED&I$PID$P0E1AE1H@J48HEH8HUHHfXID$H@J<8Hƅ~KIcHI$PHD0I$PHHAH9uIcI$PH AID$ID9p0~ADHUHcatsf@eq@HUHuȿHIt$1HBID$H}XH}Js0HϾLH[A\A]A^A_ÐUH=F+@UHAWAVAUATSH}IHF@0EEH}EEHEHHE8LmE1ED9u{I}?trHED`DWE1E~ZI11E~1IcCI HLH1ҐHcAE HD9uID9u~DDADMAID;ujE9E} EċEEEHEE9E#E[A\A]A^A_fDUHS~SHcH E1E1E1Au(D9t#HBEtD9~ADAfDAIA9uĉ[UH勂t19t19!f.UHAWAVAUATSH8IAW@HcHEHHEEEEWEE1E1E1E11E?fDAHE9IEXHB<8ίuAAIEXHUHB<8DEDM蠯1҅‰ЄDEDMtJEtEEE9EtM*XEEEAGIA9E~_UEE1D uEE1E1guEt E땄tEɸEEELcLuWEIEpH@ HUȋ*M^ZH5]d H. H8H8[A\A]A^A_3UHAWAVAUATSHIII׋`&R&ME11+f.H!&L9,t6AD$IH;&}wH%H<L,VuH%L,H%H4L螷H%BALH[A\A]A^A_E11H %L9,1tAD$IH9LH5Nc H H81-H=. mE1렾d-ZHN%ddxH0%dZH%Hc #%HkH %HH$HIfasta_cdL Hna_pair_HX@wise@$HcH$$HH xlH$H H$HIcfasta_cLIdna_pairLP@_wisf@et$HcHR$[$HH HC$H H0$HIidscore_LIpair_wisL@f@e$HcH##HH5H#H4H#HHgotoh_paH8Hir_wiseHH#HcH##HH zH#H Hx#HHgotoh_paHIir_wise_L`@lgp\#HcH:#C#HH H+#H H#HHgotoh_paHIir_wise_LXIlgp_sticLPf@ky@"HcH""HH YH"H H"HIproba_paLIir_wiseL@"HcHp"y"HH Ha"H HN"HHbiphasicH8H_pair_wiHHf@se@/"HcH ""HH }/H!H H!HHsubop1_pHIair_wiseL`@!HcH!!HH /H!H H!HHsubop2_pHIair_wiseLX@u!HcHS!\!HH=*`XAċUHD9MAID9*^f.pHMHHEą~+E11UHcHE 8HE ‰UAHD9EH]HH@EEHEE9EE~ HUHEHx[A\A]A^A_ËUfWFfDUHH]LeLmLuL}H0IL= IHE11HLH9l1ILH] H$IIH 3 1L1裃Lg/L1HtAFLLUHHHUI3uH]LeLmLuL}UDfDUH1pH1DUHAWAVAUATSH'HpHhAH`Hu HHU1H?,7Hp7ljeFHxDžHpH>6Hp6lj.FHHh~CHpE1H3>St!HcHxH<AHD;u1I1Iĺ1H`JHHL\jHlDLLH=1 1LeHD1LRHDžHLH1HH5Ha:IDSE~KE1E1HsXHC0J HC@J N&H5} L1ׁAID9kL"HI?HIH[HkDE~DHp11XH=RH= RH=rRHHHH}hHH=pA|$>HH=]A|$>Hi?@UHAWAVAUATSHIIAՋO9 D,AHcIE~71fDfD|A|$HcIuA9׾XIAt$>HAT$1E1f9|AA419}HcE9tIcItHcHӉ<AT$HAuLHSAuLLHLLOA$L!HPL!LH[A\A]A^A_UHAWAVAUATSHIIZIAt$=IAL$~=1f.zЃ)HI4HcID‰A9\$H H0 yIUA6LIUAvLLLLLKA$L LOLH[A\A]A^A_fDfDUHAWAVAUATSHHAIH^KEI$"DH5) 1 yAKsID$Hp8HEHE~SE1f.LHuHLHJD}A)AI$"EDH5) 1xE9uI$"DH5) 1xHH[A\A]A^A_LHbHËHOKD4 8DfDUHAWAVAUATSH(IHu9HEAt$:IAD$EHE@II@IGH H0 w}AAID$XJ4(HxxID$XH8xIT$@J*H5( HH H81^wHMLHuLL3HID$XHH8DxHHH H0 wAID;ucAD$LH([A\A]A^A_UHH]LeLmH IAHLD1$HljDLH]LeLmUHAWAVAUATSHH}HuUMMLxHt HH5' H H813v HUzTHMHHMH5E( H}u'HxL*HHHĈ[A\A]A^A_H5 H}BAu0uIE8HEIUHUE1111H}HMH L9iA}0Q8IEM0EEHEHuHFP0Hp8IE8HMH<d-EE0E~|HL4E11DHuHFP0Hp8IE8HH@XHxH*LLLHLKLNELQEH}CEILJhLvHǾrHH@pH[A\A]A^A_DH=LoH=IhHghfHsIydH?dsHUHAWAVAUATSHIIHH=NEHAidmafBtIE11LL"INjxHcHE1E_E~yE1-fA'et;HEA-AD$IA9G~EIWXHF4 HBF, AމdudtMHUE,AD$IA9GHHULWHǾqHEH[A\A]A^A_DAdtHEE4\fDE8u HUE4DH}L-WHE뛾,HUHAWAVAUATSHIHuHAEMH=t1H=^>H=YHumH=BLfm%cIǀt H=:I$h /I$HTqI$HUI$ADŽ$` ADŽ$!ADŽ$ E$x E$| ADŽ$ HvasilikyI$ AƄ$ ADŽ$ADŽ$ADŽ$H5OI$ nl1LWHHu$IHP@HpXxID$=HAv-IAGLCHUȋBC~#11DfDIEH9A~I}11HAG2HA9LLHLHAHL@L4rHǾ7nIFpLH[A\A]A^A_þd^H'dCHUHAWAVAUATSH8Hݒ HHU1HGHHHHW(LbI$`HH@HHLB H q1H1hHuH@t*HT H>H= iHLzHH=(hIc0< HDE'LDžE1Iij LIcHIGHHHIOI`HH@0HXHH@HHIGH4HHBXJ<0iHHAH@8H4HHC@J<0[iHC`J0D II9tBEeH5 H1IcHIWHHHTHHBHHApHBHHCHH@HHHBD EHmH5^HHH HPAw0~61@HHHHt IWH;tHAHA9G0HH HH HMH3 IH8[A\A]A^A_HAXH8HHBXHxHHKHHB`HHcHAH1eHWdIrH1HLIIH  '1L1cLI%H1IIIH { '1L1cLR1kH11QLIHD$(H\$ HHHD$Ld$HHHD$HH$HLMH 5 '1L1cL1HdHHIGHcH@8H4HC@H8sdIGHcH@8H4HC@HxSdIwH3yHH LH0IHcMLH HUH3usHX+[A\A]A^A_HQH5 H H81bgfLLH5t H| H81braUHH]LeLmLuL}H'I󉕌IH4 HHU1HyHHcHHH`HHHHxHIH1/H1!H1HHHLIH  '1H1`H H5aHHIWLcHBJ HB8JH58 H1>aH1ONMHD$(HHT$ IHD$HHL$IHD$HH$MMH  '1H1&`H 1HaHHIGH@8HH4HC@H8aIGH@8J4HC@HxxaIwHXvHH: LH.IHJLH  HUH3u:H]LeLmLuL}HLH5B H׈ H81_P_fDUHH]LeLmLuL}H IIIL= IHE1u)HH5 Hj H81_&HMH -1H1^H5H`H^H51m`H^AH51T`H^LDL|HDLlHUI3uH]LeLmLuL}2^UHAWAVAUATSHX+IIIH HHU1ҀVHMH =1H1]H5H_H]H51}_H]H51a_H]I~HI~IHH1(H1IHHLIH  '1H1\HMMH  '1H1\H1H1hJMHD$(H\$ IHD$Ld$IHD$HH$MMH . '1H1M\H 1H^HHIFHcH@8H4HC@H8]IFHcH@8H4HC@Hx]IvH|rHH^ LH7*IHFLH: HMH3 unHX+[A\A]A^A_HH5 H H81\|HLH5j Hʄ H81[w@[fDUHAWAVAUATSHIIIH HHU11H1HHMH >1H1ZH5H\HZAH5,HxIE~T1H51P\HZIvHHVH HV8HH5 L1ZD9uL41GMLHD$HHL$IHD$HH$MMH  1L1YLI H5 HtH5ܣHu`1Hr[HHH  LH'IHYDLH HMH3 H[A\A]A^A_H5HQtH5yH>uHL2Ht(ILLH5 Hm H81YmLLH5e HJ H81`YRXfDUHAWAVAUATSHHHH HHU1H5PZHXH5{1:ZHXAH5b1!ZH{XAHHyH 60 H1D'IHHxH 0 H DHMHH yH(cH0MH87H@H=FXH0H=k1XHIH ,114WdHXHLH5 H1XdH`LHH5 H1`XHXYHXMcLMcL'XIž'FIH 1HRWHH H@WHxfHxV uLHLPE1DžlE1DžpDžt'E1:1D9lplHHB (HPF<*IEHxLIHt_H5 LwWHD9t}ѥtHctHHHHHHHPHPUHHuUAHx&IcHPHH1IH5H IHH=}. ULH= UHHmVHHQHR8HHLHH5Cw L1UHP-VHHQHR8HHLPH5w L1TLH= TE~01EىH5Z L1TD9uLH=E TL H=- TLLHX-HLY>H MH(AH05H8)H@HHHPHXH`1HH| HMH3 eH[A\A]A^A_H5. LA$lLTE|0H`UC7B8AA)C6)H`McLHcHkpdAH5VqH2TAH"HH5 H1SDDžsap1IHHzIcHHGHD]HLH菮I1IHHxIcHHGHDHLHOH1LLXIH 1L1pQHMHLH=! 1nwLHt LITulHHyDHHHxD|LHHH5 Hqz H81'LoHL>1袽uH= RHXPL UHAWAVAUATSHhHHy HHU1HIH f1H1HPH=fH5GHRH_PH501QHIPAH51QH0PþdIHHAH@8HcL<IcL4J 8J0H5 L1(QL&H1LcQIHtuHc:1LIQHHHreHH$ HHIH":LH x HUH3Hh[A\A]A^A_E11HH5yHHHHPHBI HB8IH5T H1ZOH1 HHQHR8M LLd$HD$HH$L H  ,1L1aNMu'L1LPHtH!9H8Hw H H= NEtAA t=18LH5 H;1uNA޾HH 5H=y lNLT8E1ZMUHAVAUATSHHI1TIH=)"H=#/H=P NHH=K NHH=NH5&HNH>MH51NH(MAH51NHM1&IVHHcLMcJ HzH={L,$IH5 1NH=_RLL'&HL,7HH[A\A]A^fDfDHIalign_pdLf@bHHؼDfDUHH]LeLmLuL}Hp'IHL=Lu IHE11I1IH{LdIHL3HHo HT$Ll$H C H$MIH 8 '1H1KKHL1Ht'AD$LLLHL5L5HHUI3uH]LeLmLuL}JfUHH]LeLmLuL}HP'IHL=DfDUHAWAVAUATSHHHHg HHU11?H11H1Hl+I1H[+I1HJ+INj1LWIƋL@IHQL%ILH&HHHDLIH p1L1=HHa HD$HH$LMH i 1H1G=H L#(1H?HAVIv@e IHLLHLLHHH**IH'L'L'LH Mf HUH3uH[A\A]A^A_<DUHH]LeLmLuL}HP'IHL=e IHE11TI1JIH{LUIHL"HMMH \ '1H1<HLE1Ht/1LQ#H@P1LHUIċs0H<@LHUI3uH]LeLmLuL};DUHAWAVAUATSHIIHe HHU1ҾLI1Iǀt HH@HxXH5aH5 HJHمHDL`IH tnd1L1:HvasilikyHƅADŽ$ALqI$hA A$x A= EA$| H5 LtH5 LxADŽ$ ADŽ$ ADŽ$ADŽ$Hfasta_paI$ Hir_wiseI$ HI$ 1x;H5Y LI H5) Ht LHTLH 0c HUH3+H[A\A]A^A_fID$HxXH5SDžidmafDžtH5 HaH HDL`IH ld1L19ADŽ$A/MH Rld1L18 H5 LADŽ$ ADŽ$ ADŽ$I$ Hsubop1_pI$ Hair_wiseHX@HI$ 19IDŽ$`H\I$H>I$ADŽ$!>DID$HxXH5?L`H5` LtH5\ LIDŽ$`ADŽ$ ADŽ$ IFID$ADŽ$ADŽ$@@Hfasta_paI$ Hir_wiseI$ ADŽ$HI$ 18fDH5SHcY9c ,A$x ZH5 L uzIDŽ$`ADŽ$ ADŽ$ ADŽ$H^I$HI$HI$ 1 8ADŽ$!u6H5 L|u_IDŽ$`ADŽ$ ADŽ$ ADŽ$HI$H2I$ADŽ$ bH5 L uWADŽ$ ADŽ$ ADŽ$I$ Iviterbi_M$ Ipair_wisLhf@e?H5X LuwADŽ$ ADŽ$ ADŽ$I$ Hglocal_pI$ Iair_wiseLX@HI$ 16IDŽ$`H5 LuTADŽ$ ADŽ$ ADŽ$I$ Itest_paiM$ @r_wif@ se@H5} LADŽ$ ADŽ$ ADŽ$IDŽ$`HP I$H1:I$ADŽ$!I$ Igotoh_paM$ Iir_wise_L@Hlgp_sticHxf@ky@HI$ 1a5H55VLtH5 LADŽ$ ADŽ$ ADŽ$I$ Hmyers_miI$ Hller_paiHH@r_wif@se@HI$ 14LH= Fu/HWI$HI$ADŽ$!LH=SUIDŽ$`H I$H8I$ADŽ$!H5 LuqADŽ$ ADŽ$ ADŽ$I$ IbiphasicM$ I_pair_wiLhf@se@HI$ 13AH50^L.ADŽ$ ADŽ$ ADŽ$Hproba_paI$ Iir_wiseM$ HI$ 43IDŽ$`HVI$Hx7I$ADŽ$!H5 LADŽ$ ADŽ$ ADŽ$I$ Igotoh_paM$ Iir_wise_LH@lgpHI$ 1y2IDŽ$`H\UI$H I$ADŽ$!H5 LADŽ$ ADŽ$ ADŽ$I$ Igotoh_paM$ Hir_wise_Hx@lgpHI$ 11IDŽ$`HTI$H6I$ADŽ$!ADŽ$ H5 LADŽ$ ADŽ$ ADŽ$I$ Hmyers_miI$ Hller_paiHH@r_wif@se@HI$ 10IDŽ$`HSI$HI$ADŽ$!QH5e L9ADŽ$ ADŽ$ ADŽ$I$ Hgotoh_paI$ Iir_wise_Lx@lgpHI$ 120IDŽ$`HSI$H6I$ADŽ$!H5 L~uCADŽ$ ADŽ$ ADŽ$I$ Isubop2_pM$ H5q L(ADŽ$ ADŽ$ ADŽ$I$ Imyers_miM$ Iller_paiLP@r_wif@se@HI$ 1/IDŽ$`1I$hHH I$hHǀI$hHI$hH@\HHuH5y L%ADŽ$ ADŽ$ ADŽ$I$ Imyers_miM$ Iller_paiL@@r_wif@se@HI$ 1.IDŽ$`1I$hHI$hHPǀI$hHI$hHP@\HHuH5 L&ADŽ$ ADŽ$ ADŽ$I$ Hmyers_miI$ Hller_paiHp@r_wif@se@HI$ 1-IDŽ$`1I$hHH I$hHǀI$hHI$hH@\HHuH5 L#tH5 LuqIDŽ$`ADŽ$ ADŽ$ ADŽ$HEI$H0I$HOI$AA$H5 LuKIDŽ$`ADŽ$ ADŽ$ ADŽ$HI$HwH5 L.IDŽ$`ADŽ$ ADŽ$ IFID$ADŽ$I$ Hcfasta_cI$ Hdna_pairHP@_wisf@eHblosum62H`fDžhmtƅjLI$hADŽ$!A A$ A A$ HvI$HGI$ADŽ$7H5 LtH5 L*IDŽ$`ADŽ$ ADŽ$ ADŽ$I$ Ifasta_cdM$ Ina_pair_Lh@wise@ADŽ$!ADŽ$x ADŽ$| ADŽ$ ADŽ$ L0E1TDfDUHHdz R)HUHHdz P)HUHAWAVAUATSHH(AH= H(HBH@HEHB(HHHMHX H=[ g(HE "H0H#4HH@HPH=E^ H8HKH8CHC H@C BHUHzs/H`HMHys HhH}IL%ɗL`"HǀXHǀhǀhH}hHxL`"HǀXHǀhǀhH`H{p1袵HIFHhHxp苵IFHhZH`YEtH}Hdz P'Ha]`HE11H`DYE~UHhDRE~7HcH]H 1DfDH8HPHHh9SH`9xIFH0HP8H`pHx@HEIFH0HP8HhsH{@HEEDMEeHEHEEHUHLchHMJLc HEJHHH=Е H5 1X&HH5 H(1"H(HH@LpHIH(I8DEE>HEH0IFHP8HcH HHHcHHM FD$F$DLEH5H H;1$H`HBXJ<ʜHXHhHAXJ<诜IAhH5' H;1$Ah1EE11DL AHH1;ƒDL HH1D; ƒDL L%vHcHXAT$HAAD$ DLQ AD$H==GHxAE9hRAdžhHXLHxhH ? 1H}EHEE9EI~'H}_H}VuHxhH 1Hx虈eIHxhE1H@HDHx0 HH DHx HHDHxHݒHDHxHkPd}HADAHxD9hKHhBH`9ANA*,Ld19ALHxhJE1AHxD9h.HHDHxHH DHxHӑHDHxHHDHxH=WGkWd}D9;Hu=-HE1H`HCXJ<ܘHXHhHBXJHhLH΍%HUHcT HōoUHAWAVAUATSHHHF HHU1HW(LbHGLhHR HH")HH@HH=$9H=FLsIEHcSH@8H4H=L{ IEHcS H@8H4H=͌IH5B u1AI$ PRHI}A6՟HI}A7Ht{HH1E1E1H11fuHHHL%HHD HMH3 WH[A\A]A^A_fDfDH5k LuI}LHofM$H5 LٺueH9IHHHDLLHMt1Et$ELfDL H5 LatH5 LNqH5 L7ZH5 L CH5 L ,H5 LH5 L۹H5<LĹH5e L譹H5 L薹H5[ LH5 LhH5d LQtH5 L:]H5 L#FH5u L /H5X LH5 L޸H5q LǸH5 L谸H5 L虸H5' LH5M LftH5 LSumH賮IH@IDAe讼Hψe蓼HH5CLӷtH5, LuHPHH5 L虷uH)HH5 Lrt8H5 L_ulH迭ILLHHH蚭IHMH 1H1HLLGHEH54 LtH5h LͶuLHLgH%H5C L蠶tH5= L荶uLHLwHH5#L`uLLHzHH5 L3t-H5 L u4LHLʷHxLHL萶H^H5 LٵuLHLH1H5 L謵uLHLHH5a LuH5U LhuLHHH57 L>u0IM(ILMH5 HHH5 Lu0IM(ILMH5 HH=H5 L踴uLHHI"H `LH5 1H=ׄ1DfDUHAWAVAUATSHhH}H=ӄHUHBH@H@HEDp0EE~LHMLy8I?E1fDEAD$HILcmAE9~H;xHI9vAE91ƢHH5`跳*1訢HH5N虳 HUHB(Hp H= H= HÃxt*H< H<H= jHUH`HcKHxIIJ8HUHc[ HpIIJ0HEHJ(HMH@(HEHRHUHMHIHMHUHBH@HEH=G2HMHAJ40J<8L  L#LH=}>HIHuHI`H=tHIHuH}I$`P!H}H}HMHA(HEH@(HUHB8HxH HpL DEDH5 H+; H81AHUHB(L`H}HMHUHJ(HMHUHJ(Hh[A\A]A^A_H v]H H: H01GHEH EHHMHA8I M DEDH5} H: H81HUHB(LhVHEH@(HUHB(HMHA8HxH HpL DEDH5 HMHA8I M DEDH5' ud3HJH=[ HUHAWAVAUATSHXH}H=HUHBH@H@HEDp0EE~LHMLy8I?E1fDEAD$HILcmAE9}H;xHI9vAE9|1ƞHH5l路HUHB(Hp H=<+H=0;HÃxt*H8 H<H=' 舤HMH`HcCL<J:HEHcC L4N,2HUHR(HUIM(HMHEH@HEIUHUHMHAH@HEH=fH=:H?IHuHI$`H= HHHuHH`H}H}t{HEH@(IE(HUHB8J 8N 0DEDH5r H7 H81HUHB(HXH}dHMHUHJ(HUIU(HX[A\A]A^A_HMHA8J 8N 0DEDH5 H<7 H81RHUHB(L`1轜HH5Z训H YHP H6 H01CH=X~H~dH} f.UHH]LeLmLuL}H@IuAIMDH=K}Ht H=-}Ht LLL&UHH }LbVH|H1L-HDULH]LeLmLuL}FyfDUHAWAVAUATSHIIHUHЋh1Hb A}IAU~gE1fDJK IE`HK IE`H@AKIE`HHcIGH< +CCAD$AUI9AML11H}|HLHIHEȋhH 1HqHXLH[A\A]A^A_fDUHH]LeLmLuHH}HuHUMHu!HEH]LeLmLuDfDDHEH@(HEHUHR HUHM\H׋MHUHuiMHUHuH}UHuLvHDnDHEL`HXDH=zH5yzHhzL"DnLrHMH}bHU*HMHAHHcH]HCXH< CHUHHMHuHAċEH HuHazHE HUDHMDADHuHuH"H\$ D$H]CD$Dd$HuFD$H5 1 S@1YHE1NHE@Eu@Aąt{H]1Hދ}譯1HD蠯HuH}HuH}\HE襭Hx菭HxC}tt16MHUHuH}RH]HKHSDHuH}蚜11MHUHuH}H]HKHSDHuH}`1HuFDHU;BDDNeDepfDUHAWAVAUATSHHUMHH gIHt IHtLvI"$H= I8HtzIGHcx0hI8IGP0~7E1E1LI8Hp8JEą3H1Hx~HcIǀHA99MUHH]LeLmLuL}H0IIIALIH5W|H8u/IDLLLH]LeLmLuL}vfDIDLLLH]LeLmLuL}nUHAWAVAUATSH(H}L EMPMg EMI\$ E1Ht1H{ E1HtAH{(HtAED3I\$(Ht5H{ E1HtjAH{(HtYAŋAF4(E4$DuA$Mg(MI\$ E1Ht1H{ E1Ht AH{(HtAED3I\$(Ht5H{ E1HtAH{(HtAŋAF4(A$A$EDEEAEAHELx(MMg EMI\$ E1Ht1H{ E1HtDAH{(Ht3AED3I\$(Ht5H{ E1Ht AH{(HtAŋAF4(E4$DuA$Mw(MI^ EHt2H{ E1HtAH{(HtAD#DeMf(MI\$ EHt2H{ E1HtWAH{(HtFAD+DmI\$(Ht6H{ E1HtAH{(Ht AŋEDEA$A$EẺEAAEEȉEAAEEĉEHEEHEEH([A\A]A^A_fDUHATSfHHHuH{ E1HtcAH{(HtRAD#D[A\UHH]LeLmLuL}H`IIA֋F8uT*M.s>1.vE1E1HCHJc IFXH IF@HH5 H}1AID9kDH}P~HUH5]0L1DK8EuC|H[A\A]A^A_fDfDUHAWAVAUATSHHIIkDdHc襒HLLHI1躉HHLH=J 11HHËpLiIDsE~VE1E1AT$It$@HC@J<(dcƒtHCXJ4(HcID$XH<AID9sCAD$HLߔLH[A\A]A^A_fDUHAWAVAUATSH(IHuHUDw|*Eg|Etr;E|MEMEu{Ml$ M|$(LL~WEu|EEuI}(I} É]Eg|Eu@I(gI \rHUHuLAD$|H([A\A]A^A_fDfDUHAUATSHIH#II]A| Ax $E1ILHuHPH S0QDH@HL[C|uLLHIċC|tLH[A\A]f.UHH]LeLmLuL}H@IIUDG|EtRHHdU`AFxfDfDH]LeLmLuL}f.Lo A}|HI}dUV`AExADmMn(AU|(Me AD$|6MI|$dUL`AD$xADeMm(AE|`MyI}dUL_AExEMe At$|MI|$dULq_AD$xADeMe(AL$|MI|$dUL._AD$xEȉEMn(AU|MI}dUL^AExfE8GxGx!AExEmxiI|$ ULI|$(UL؉E'@Me AD$|KMI|$dULQ^AD$xAMe(AD$|M.I|$dUL^AD$xDMAExAEx I|$ ULI|$(UL؉EI|$ ULI|$(ULvAD$xEd$x#AD$xAD$xPAD$xEd$xjAExAExI|$ UL=I|$(UL+I|$ ULI|$(ULD4AD$xAD$xAD$xEt$xUHAWAVAUATSHIII1V81Hv(uIE PDUH@HHEHcVDTHVHHTŐ~HUHuLL蛢*AI] C8o1uHC PDUH@HHp@HS(Hc΋BDDHBHHpƃ~HpHuLL**Lc AD$8u|1uID$ PDUH@HHE@IT$(Hc΋BDDHBHHD̀ƃ~HUHuLLá*A$It$ LLIt$(LLH[(C8v1uHC PDUH@HHE@HS(Hc΋BDDHBHHD̀ƃ~HUHuLL:*Hs LLHs(LLMe(AD$8?1uID$ PDUH@HHE@IT$(Hc΋BDDHBHHD̀ƃ~HUHuLL豠*A$I\$ Dk8Eu1uHC PDUH@HHp@HS(Hc΋BDDHBHHpƃ~HpHuLL@*Hs LLHs(LLMd$(E\$8EC1uID$ PDUH@HH`@IT$(Hc΋BDDHBHH`ƃ~H`HuLL謟*A$I\$ DS8EI\$(DK8E1uHC PDpH@HHP@HS(Hc΋BDpHBHHPƃ~HPHpLL*Hs LLHs(LLfDHĈ[A\A]A^A_f1uHC PDpH@HHP@HS(Hc΋BDpHBHHPƃ~HPHpLLR*Hs LL'Hs(LLUHAWAVAUATSHHHAHUH"'H= HUH7IHEH"H= HEHX| x $E1IHLkHPH S0QDH@L AL$81uID$ PDUH@HHE@IT$(Hc΋BDDHBHHDͰƃ~HUHuH s L*A$It$ HQ LIt$(H= LHEH"H=" Ai|$DHc臅IŻdE;t$DˉLLA9~LLLlHEHДIHEH"H= ,LMA*H{1IAHII>\A9|HEH"H=t H}譇LMtLHHuLHH[A\A]A^A_fUHH]LeLmLuH HIIH?s8tAUHcHCHAAULc MtoAL$xtfA$u^A$AD$8RI|$ Ht GxI|$(Ht GxAD$xtI|$Ht LL1Lc(MtwAD$xtnA$ufA$E\$8EI|$ Ht DWxE(I|$(Ht DOxEED$xEtI|$HtLL{xeH[HX3NK8H{ Ht WxLc(MAD$xtyA$uqA$AD$8tAUHcID$HAAUI|$ Ht GxI|$(Ht GxwAD$xtI|$Ht LLDcxEH[HDEuxDS8EtAUHcHCHAAUH{ Ht DOxE+H{(Ht DGxEsxtH{HtLLKDfDAEH$Ld$Ll$Lt$AUHcID$HAAUAUHcID$HAAUAUHcHCHAAUTLLLLLLRLL-LLLLvyLLfTLLVLLFUHH]LeLmLuL}H0IIID_8Et DWxEuI\$ Ht DKxEI\$(HCxuC8zLc MEl$xEE\$8EMl$ Mt+EUxEt"EM8EAHcIEHAAMd$(MtRAL$xtIAT$86I|$ Ht GxI|$(HtGxtLLDfDH[(HCxC8Lc Mt,AD$xt#AD$8AHcID$HAAH[(HtOD[xEtFDS8EIH{ Ht DOxE>H{(HtDGxEtLL&fDADC8ELk MtJA}xtBAu8+I} Ht OxI}(HtWxtLLH[(HCxC8H{ Ht GxTH{(HGxLLVHcHGHAAfDfDH]LeLmLuL}f.AHcHCHAAAAHcHCHAA(AHcID$HAAAHcIEHAAI|$ Ht DoxEI|$(HDgxELLdI} Ht DGxEuhI}(Hwx LL*LLLL 3LLLL[LLLLUHAWAVAUATSHhHHuHUMHHUHEDhxE? |IH^GpDɚIL L=DGE_8EEWxEAUHcIGHAAUDfDHMqxILEeAD$xIvHuIFHEIUHUAT$8QHAMHcID$HDAEEEA$HuH"AE$H5G 1HMLLH}.HU*H Z LLH};EXHuH"H=1 IAuH}MHEHHMȋ1H}MAD$xL}L蓬HMDi|EH]Dc|EHC HEHS(HUH{HuDvxEHUDbxEuI Ht DOxEJI(H=DGxE0LL5 HϋMHUHu]HEH]Dc|EWHEHh[A\A]A^A_fDIHcHuHFXHLLHCHMH" zIHUHuI|$(HgHEDHUHuHMDUHAWAVAUATSHHIHuHUMHMl$ Mt$(EU|EEN|EwIH1CpD茖HEHEE8Et A}xI} Ht wxI}(Ht OxA}D}HEHHEHUHZIOHMAV8t AFxI~ Ht GxEI~(Ht GxBA~DdB‰\BA$AHMDEEAH]H"$H5^ 11A?AExHEȋAFxLyH}蚨HEHH[A\A]A^A_AWHcIFHAWA~D5IFHAfDfDAHcIEHAA}DIEHAoEAH]H"$H5 1HHULH}?)HU*A$H HULH}蠌9EALLH]; IOIO@xBxHEH"H5f 1HMHA7H}GH]HHEȋ0H}GAHU9MHMAAD$DAED~8E11AT$DHcIL$HIEH8AT$DAHE9EDAFD~8E11AT$DHcIL$HIFH8AT$DAHE9FDAD$xfDfDH]D[@MHUHuLHE2@MHUHuLHEHLIlHHu8HHu'HL&AExAFxH]HHcHMHAXH<HHUHLELHuH}qHUH"HىH5 17AHMH]COH=>GD>DfDUHATSHMH_KD2LHHƹ(LHyHƹLHfHƹLHSHƹ LH@H1LH01[A\fUHH]LeLmH IMH_KDD[|EtFCx2LLH H1LH1H]LeLmfDfDH{ 11H{(11@UHAWAVAUATSHXIHuI׉MHzMl$ Mt$(A}|Av|qHEH=pDNHEA}DHAM8I} Ht GxI}(Ht GxA~DHUHHUHMHYHEHHEAF8I~ Ht GxqI~(HtGx{f:<‰2<A$EAI"H]$HEDH5 1wLHUHH}$HU*A$H HUHH}e9ELmLHM;LIOH];IO@xCxI"H56 1HEHHM1H}BH]HHEȋ0H}BHUHM9MH]CH] HHHuL9mHEHHEȋHu1o[H1IHL;%:HUAD$DE}DE~4E11AT$D@HcIL$HIEH8AT$DAHE9EDA^D~=E11fDAT$DHcIL$HIFH8AT$DAHE9FDAD$xH}qH}赠HEHX[A\A]A^A_AUxHMHcIEHH]A~D$HEHHEHUHHUHMQHcH]HKIFHHEPHCA1AFxHMQHcIFHH]SMLHuLHEMLHuLwHEAExAFxHUHHcHMHAXH<}HILEHMLH}kI"HىH5 1+H]HUHMAL;%8HHHHuHMHUHu1$XH1HHHEHcH IEHHEHAsHHuI}(HOUHHuDHHuI~(HHHu}H=7GD7oL9mtgHUH H]H]ȋHu1XH1:ILHEHHEoH H H01^HUH H]fDfDUHAWAVAUATSHIAILB| x $E1LPH@HH@ HXID$@0CD11H>2LLH H1LHEE1ADŽ$alnA11LLdI$ L6MD$A$| A$x $E1LLPH@HH@ HXID$@0CD11H2LLHLH1LH AE9PLH[A\A]A^A_UHAVAUATSH0HHqILc| x $E1MHHVOHPH AT$0QDH@L ED$8E1uID$ PDUH@HHE@IT$(Hc΋BDDHBHHDƃ~HUHuH k L谀*A$It$ Hj L~It$(Hj LjAi|$DHcDiIƻdA|$D~@ˉLLLLL,I12`HHLH= 1K1HH0[A\A]A^ÐUHAWAVAUATSHIHPHHH@EDHuH1DXLPAAGEȉẼDXLPHPRHMHuAAD$LEAL]AEHxIcHHD H D2L8AL@AHHHPHELhL9ELED]EIcLpI011LhMsH`LxjD9HcHhHDHAL`II@AÉDEt`IcHcHpHƋ4tHcLhIDIC H`HHFAEuHhH8ZHhHzHH`H97L`Ix%~ 11L]IH;uE1҅E11E1AIA9HhHB4 IB IB uDž~˾H}DXiE1H}{vHEDXA‹~+HIcH411DHH;u1AIA9X~ADEHMHHHHZH ZH8ZH@ZHHZHPZH0ZH(wZHXvHZZHNZHBZHhAH`0HpH}EHĨ[A\A]A^A_Aʉ2 t0HcH1LhIDI L`IIH9L(IAVL0IH0DA L]AAHAGu8H8HHMLHILELPIL]AA'HLL(BT9"E߅HcH1LhIDI L`IIAH9EL`IB tcZIcHcHMHD=A $H@HHE9 DIcHcL]IÍFDLEA؉EAEE 1LhMpL`M{H6ufDfDUHAWAVAUATSHIMLH5 L藜HHm LRH^ SIHE prIŋCA$AFAD$1E111fDfDA; |ǃ1HcA; }HcIDDAHLLLHH=L؛HLMVLPHH[A\A]A^A_ÐUH1UH1UH1UH1UH1UH1UH1UH1UH1UHAVAUATSIH5CH=q fII"HH@PP<~;E11fH@@HH5Re L1AI"HH@PHD9`<LH=?q L;=蛭UHLUHcH"HHHPi,HcIHЋ8McIJ;8tWf;y(|WɅ~dIAHIBJ1W(1% f\(W(TUV(\XH9u(Y *Y^(UHAVAUATSHIH΋W~1H։H@BH9GGE1E1E1ҋOE1ۅ~bE1.@HcI"HIcH@ H<t%AA@I9~/JHW`J‹F AyJHOA@I91A9AAID9g{A*[A\A]A^W[A\A]A^ÐUHGOWYYXYXUHH]LeLmLuL}H@AIHMMEHcHcIϋtRHcB(B)΍{)D9}gsD)A9~:f.1H]LeLmLuL}Ή)A9DEMHMLDKfHML4sD)A9DUHZWZOZGH5Fn H H8ѪUHH]LeHHIHHtBCA\D$@CA\D$@CA\D$@H$Ld$@NUHH]LeHHIHHtBCAXD$@CAXD$@CAXD$@H$Ld$@NUHH]LeLmLuH IIIHLMK[c(AYl$(AYEX(AYFX(AYT$(AYEX(AYFXAYL$AY]XAYfXHhPH$Ld$Ll$Lt$f.MLfDfDUHAWAVAUATSHH@}@uH HHU1H=?tD(HuHID$HpTAT D9D(~AAIII;|~HpD<D9E~HhHHMDHhHHUEHEHEHEHEu9uuDA$AD$CAD$CAD$CAD$CIt$ H{ .H[A\f!GHfDfDUHAVAUATSIHt]9w~XxTDOE~jLcE11AHE9l$~QID$XHB<0t۸[A\A]A^fDH5H=e 1+1[A\A]A^fDUHAWAVAUATSHHIIHUZD{E1AIHIDE9DHOD9~ID}8M\|J HMEHOHMMPLUMIK*^KL]BeM\|C_EE9XID}HUȋHLUILUBLuLUHUHUHUzމdILUAJHx1A r9HIA9|Hd LH}1IǾLv11~511IDIH9uH9uLHH[A\A]A^A_MxAMILHOKDDB^EY,IB8AHEHIID9-뻀}M\|CEE1uDfDUHAWAVAUATSHDM΅EBHL,IJ(E̍AHL$HUHJ ;]D}DMAG;hdH=b}CD*W(D.z*L8I~1ɺIH9u(DUE(E1ɿ= 5 %= Ix1@IFJ(LUIBJ :\(W(TUVIDxIx\ X(^XD.r(.s.r(.s( H9vAHD;MH(Y A^H[A\A]A^A_ÉH=Ht tH=`HjWH[A\A]A^A_@UHHL"HcILH8HcIH@8H$,*,@UHAWAVAUATSHDML}HcH"HH@P@,E̅EBHL,IJ(EȍAHL$IJ ;]ȋEMÉE; UH= n*uYuW(.zL I~1ɺIH9u(D]E(E1ɿ% Ix1DfDIFJ(IGJ :\(W(TUVIDxIxT ]\(XL.r(.s.r(.s( H9yAHD;MD(YE ^H[A\A]A^A_É H= Ht qHs =e &^H_ yWH[A\A]A^A_UHHL"HcILH0HcIH@0H$,fDfDUHATSHHH"LcJLH8HcHH@8H$HI,H"JH@P+P8*,H[A\fUHHL"HcILH0HcIH@0H$,fDfDUHAWAVAUATSHHAAAEHhEEHhHHCHHIcIcHHDH4H * \IcIcHHDHH*\_*\^H[A\A]A^A_WH[A\A]A^A_H=# HHhH* f 1H1fD*]HHuHHu 5 UHAWAVAUATSH(IuHUIMHrH= OML)HLuLLH=}\ IHtH H8AC(LnLLH=I\ 远IHt%H H8ZC,LnLLH=\ 耜IHt%HA H8ɗ*C$LSnLLH=[ AHHt H Hx0H3HnLLH=[ IHtHH8PC8LmLLH= ΛIHt"HH8x LmLLH= 蒛IHt*H[H8Ֆ,| Ldm@H=1Hǜ HuH=Hǜ H5 o6H=Hǜ H5Z M6HHX0H5Z H+6HHHLceN,HLH"H;H([A\A]A^A_HaH Isim_pairL0I_wise_laLh@lign@SH51 H5H HHQHH Igotoh_paL Hir_wise_HXf@sw@HE1E1111dHh9HHt@(@,@@$`A`9HC0HEHx0L=H2@82H,ǃt IGHCǃ ǃ Hcx09H"Hǀ!ǀ ǀx ǀ| HvasilikyI AƇ Hǀǀǀ IGH@8J<(覧HH5) gHH UH"JH;HBPLH"IGH@J4H;)HHLH"H;}HHwH5W HO3uHHH#H5W H"3u-HHjHH=81 H5W H2uHoHuHH5W H2uHBHHH5W H2uHHsH\H5tW H[2uH`HH/H5cW H.2uHHHH5RW H2uHHHH5AW H1uHiHZHH50W H1uHLH-H{H5W Hz1uH/HHNH5W HM1uHHH!H5V H 1uHHHH5V H0uHHyHH5V H0uHHLHHH5V H H81 %pUHAWAVAUATSHXH}IHUHMw1vHEHEHEE1HUHUEE1M9M-HEH"HEHP`J:HcH<J2HcH<HUzSHEEHMQ1fDHcH DHpAvDžhE1IF`J8HcH8H"HHt H{H~GE1E1LHpI7A~CHAAvID9hI9h|L1臵H`AvHE&HpH}EEEHEHEEAFLEILHE1E1fDfDIF`LEJJ 8D9}bH8H"HcHHEH<>HcHH@H<%IFXJHU<ǀHcH DLHAȉEI<$DEH5B H H81{HuLPhHEH@XHUH<k-HMHAXJ< Z-H]HCXH]HuH0;zH}HGXH]J ;zAVEWEE^EQHUHHcUIH@E^EEQH ZH5LB H;zLEAǀDuLHUHBXHr@H}H H7M M4H5B H;1zAvy=L0Ix0H5A -H0@$E.|1.EEEW|\](W= (W(T(UVL0A@ Z .v&HUHJ HXHHXH]HIHXHHXHIHXHIHH (YXXUUXMMH0Hz0H5H@ HMH`H1I44HH L0AH$+1)*E.L)ȉ1)*1.EoHHCHAvJIVXH`I D HuHF(H IB($lH5|? H' H81%xH}HGXLLEI;wHUHBXLI;swf.UHAWAVAUATSHHIHHH5/HE1HH5H/H81HH5^H/H01H H5:H/H@IHIGpp0~AHH"H1Ht#fDHPHH9uHDžHDž(HDžHHA`t$1H(H5H.HHHMH=> vIHLHHCXW. ILEHHL>HAwL1ɪHAlj8HHEHEAGz DžHEHEWAGE1DžPE1^HcH D t f(H5> H@EtDžDžDžDžH5> H@sH5> H@sH5> H@sHX t%,,H5> H@1sHHzPH5f= uXW.zt Y ^,AAHHHyPH5kh udW.zt,YY^YM ,AAHH0H@H8HDY`Et HHHH}>HH=HH =HHDV`EtH(H=HHٺ6H=)= rHٺ;H=H= rHٺ6H=o= qHٺ7H== qHZ@$H5= H߸qHٺDH== q1HNHEEWEAwLEE11E1~HII 1fDH@U_W(MTUVEH9uID9uAIE9uUY \G1EE1E21E1HIBIGXIA<g%IG`IHcHH"H<EOEpHcHHE1EDžDžTDžXE1IGXIA9]BgIG`IHcHH"H<HIJ(HMHW.ztq Y@^X XTT@W.r+XEEŚ XXXfIA9_HHxPH58 iTW.zS Y^] ,HHAXIAAD$AwI9EI]A9_9EWHRPHkfHHCXIA떺yHHxPH5tc 1҅XXW.ztY\U^,º )*,EDžDžTDžXEGE~%1IcWHHFXHAHA;G|ݾd}HHB HHyPH5.7 uXHH{ H59 nHu mH}iH(CHHH[A\A]A^A_HH~PH53b H uHHx ZEH59 mW.nILEHHLdHAH@H=6 {l DžDžDžDžH5l6 H@lW.zYu ^ZH5N6 H@k^ZH5J6 H@kYY^Z 6AwEDž\~E9~HEHE@EDžDžDžDžDžDžHDžpHDžxIG`HpH0HcHH"H<w EDžDžDžDžHDž`HDžhu9uIG`H`HHcHH"H<gAG DžDžDžE1-A`D@aAD$IA9GyIWXHpHF, H`H2F4 HHBȉHA\tD`u?D`u3HH3HcH`HHW.IGXLHpHDhIGXLH`HDhhHA`D@`uFD4`u:HpHH3HcH`HHW.IGXIW@H`H4HpHH HpHF &F H5/ HH1:hD_bD_RHpHHHcH`HHW.zp Y@^Dž?H.BvXHHDh`EXXAD$IA9GHpHH HhE9ELXXXXEH`HhEA9GBIG@HpHH5/ H01gfIG@HpH W.ztΑ Y^ZH5o/ H0fIG@HpHW.zy Y^ZH5>/ H0eIG@HpH^ZH5+/ H0zeIG@HpHYY^ZH5. H0eHHxPH5. uSHHW.zt$o Y^,Hx HDc EHH~PH5Y u_HHW.zt0YY^ŏ Y,Hx AOEHpHx;MBH@H=&. dW.OI HIG@H`H HH5+ H81cIG@H`H 0H W.zt Y^ZH5p+ H87cIG@H`H HpHW.z Y^ZH5<+ H8bIG@H`H H^ZH5-+ H8b,IG@H`H 0HpHYY^ZAH5* H83b,H5+ H81bXXXXIGXIW@H`H4HpHH HpHZF &F H5M) HH\aIGXLHpH0D`IGXLH`HD`H0HHH5K) H8`IG@H`H HpHH5A) H8`,IG@H`H 0HpH+DžDžDžHHH5) H0%`IG@HpHH5) H0_IG@HpH,,H5) H01_DžDžDžDžY ^ZGfUHAWAVAUATSHHHHӉ"IHDjE~1IԉBHH9AH@HH5`, H1_HhHH5F, H1_HHH53, 1u_H`HH5, H1K_rHHHH5, H1!_HHPHH5+ H1^HXHH5+ H1^HpHH5+ H1^H{Ǿd {HcH({Hc{Hc}{HckHHHD[E1AE1IH9Y~CLIypHuHHB@J(H5* H H81\E1Eu$H 3H$+ H H01>HHCpp0~CHH"H1Ht%6HPHH9uLAq~FE1E1HHB`J(HcHH"HHt H{HAID9H1薐HH~HLAyHHx]HHzeHH A$zDHA0sphef@re@LAq~'1IԉI@BHqH9HK1҅E1E1E1E11>f.HcHH"HHcH@ H<AAH9~;HHHHS`HʋB<yIHsAH9HH1A9AAID9SA*,ЃDF1ɺLI$HHcHHC@HH5( H H81YI$HcHC@H4HqHHHw1qHYIHHw?*Y *^ZH5( H f H9aYHU|H=( 1QH5"H@nHHDSE Dž<HEEHuH}DELEAEE11AHHD9f~yHHBXHHM<OtDeHEEHD;g|H<GH. H=H=J' eX1WH[LMILDžHEHBȅEAE1*}}LAAMZEIM;EHHB`JD(}HHL$HH4$L LHыLLpEEHBMZ;EhHcHHEMHLHxHLH]HLHuHLH}LO| ]MfDHHD$HH$L LHLLLL>HIL5MLI"HEHH1HHRHLMB4 HcL HHB`IHcHHAHcHHHH}A8HHA\(W (W(T(UVLLKT LHxH(XLHIT5LH}H(XLLKD LHUHLHID LHuHHGIHxHEHEHEII9(#HELA9AHHHWHMHHDeHHcHHNE1LK[ HD$D$$L GC LH b LL1 VQHHHEHT$8HT$0HHD$(H HT$ HHHD$HZ HD$D$$L B LH o LL1UHhHHT$8HT$0H4HD$(HRHT$ HhHD$H"Z HD$D$$L +B LH  LL1U5H`H)HT$8HT$0HHD$(HĻHT$ H`HD$HY HD$D$$L A LH o LL1vTHXHHT$8HT$0HHD$(H6HT$ HXHD$HY HD$D$$L A LH  LL1SH#HT$8HT$0HHD$(H~[ HT$ HEHD$H HD$D$$L  LH  LL1sSHHT$8HT$0H HD$(HD$ HEHD$H#X HT$D$$L LH  LL1SH HD$8H HT$0HD$(HD$ HEHD$H HD$D$$L LH c LL1RHtHT$8Hbe HD$0HT$(HD$ HEHD$Ho HT$D$$L H LH 7 LL1)RHHD$8Hd HT$0HD$(HT$ HEHD$H9 HD$D$$L  LH  LL1QHHT$8Hd HD$0HT$(HD$ HEHD$H HT$D$$L l LH  LL1MQHHD$8HD$0HHT$(HT$ HEHD$HU HD$D$$L LH  LL1PHHT$8HT$0HeG HD$(HD$ HEHD$HU HT$D$$L hLH n LL1qPHHD$8HD$0H=HT$(H+c HD$ HEHD$H HT$D$$L  LH  LL1O-H8H!HD$8H HT$0HHD$(HT$ H8HD$HT HT$D$$L YD LH  LL1nOH@HHD$8H HT$0HT$(HF HD$ H@HD$HS HT$D$$L C LH ' LL1NH0HHD$8HD$0H HT$(H|HD$ H0HD$HpS HT$D$$L =C LH  LL1RN,cHHwHD$8HD$0HHT$(He HD$ HHT$HR HD$D$$L : LH g LL1MHPHHT$8HT$0H: HD$(H HT$ HPHD$HNR HD$D$$L W: LH  LL10MaH HUHT$8HT$0Hd HD$(HZ HT$ H HD$HQ HD$D$$L 9 LH LL1LH(HHT$8HT$0HHD$(HHT$ H(HD$H HD$D$$L @ LH LL1LEHH9HT$8HT$0H? HD$(H, HT$ HHD$HT HD$D$$L q@ LH  LL1K,dIċHHT$8HT$0H,HD$(H HT$ Ld$H HD$D$$L *8 LH t LL1K.HH"HT$8HT$0HHD$(HC7 HT$ HHD$HT HD$D$$L 7 LH 7 LL1oJLEHHT$8HT$0H HD$(H%] HT$ LD$H HD$D$$L  H  LL1JuH=LEH)HT$8HT$0H HD$(H HT$ LD$H HD$D$$L  H  LL1IuH= 5LEHHT$8HT$0H7\ HD$(HD$ LD$H HT$D$$L & H  LL1IuH=”LEH6HD$8HD$0H HT$(HT$ LD$H HD$D$$L  H h LL1HuH=fILEHHT$8HT$0HK[ HD$(Hw HT$ LD$H2 HD$D$$L 3 H  LL1HuH=LEHCHT$8HT$0H HD$(H HT$ LD$H HD$D$$L  H  LL1GuH=OHHHT$8HT$0H; HD$(HHT$ HHD$HL HD$D$$L ; LH { LL1G2HH&HT$8HT$0HͭHD$(HD$ HH\$HK HT$D$$L e; LH  LL1zFH> H= HHHD$8HD$0H HT$(HR HD$ HHD$HR HT$D$$L : LH MR LL1EHH=ZR =HHHD$8HD$0Hi HT$(H!HD$ HHD$HMJ HT$D$$L : LH  LL1/EHjHD$8HD$0H{HT$(HW HD$ HEHD$HI HT$D$$L LH ~ LL1DH5?1 I}JHH=LQ H@H5; EHD$D$$E1E11LL1(DH(HhH5Hh6hHEHBEB EB$EąiEHB HHHBHHB0HPrHHBPEBXEB\EB`EBdHhHcI輒HI<$5Hp+H=` 4HpI4$#HHpH=4s4HhL MEH H\ H01iIuHh5Htrmsf@dHHD$8HD$0H HT$(HHD$ H\$HjA HT$D$$L 71 LH LL1L<.t<)tHcB uH M HUH3H[A\A]A^A_L- AEV AEAH Ld1HH1 $HcAt<(t7<.t<)tHcAuÉHHH5d L1e$MAEޔ AEAH ԑd1H@1#HcAt<(t7<.t<)tHcAuÉH@H5 L1#AAEf AEAH \d1H81#HcAt<(t7<.t<)tHcAuÉH8H5t L1u#AAE AEAH d1H01"HcAt<(t7<.t<)tHcAuÉH0H5 L1">AEs AEAH id1H(1("HcAt"<(t7<.t<)tHcAuÉH(H5y L1z"6AE AEAH d1H 1!HcAt"<(t7<.t<)tHcAuÉH H5 L1!1AEs AEAH id1H1(!HcAt"<(t<<.t<)tHcAuÉHH5y L1z!1DAE AEAH d1H1 LLL_XHH5 L1!Ir UHAWAVAUATSHHIIHI HHU1ҾL&zIM`H5lLIHH= L!HMHH5 L1m LH=y A$t51H`HXDfD<(tl<.t<)tHcAuL H=( - LUL LHH HMH3 HĈ[A\A]A^A_@Hi 9 AH 1d1HX1LLLXHXH5^ L1_81裺IfDUHAWAVAUATSH8HH"LcNMcIB0HJELcN LcIA0HJDIz8HJEMI8IJDH<$HDUD]A(H"JHx@JHH@HPPj,HJ0HJ;0DUD]tB1D9UDMUD9]DM]1E t,ǍH8[A\A]A^A_;r(|WɅ~dHAJHGJ1W(1%bJ f\(W(TUV(\XH9u(Y hI *Y^,;DfDUHH"HcHLH@HcHHp@HHPi,HcHHЋ8McIJ;8t 1;y(|WɅ~dHFHIAJ1W(1%I f\(W(TUV(\XH9u(Y H *Y^,ÐUHHUHMt;tË D E~HIDA tIcI8 tDHcI@HcIHcI@UHAWAVAUATSHIHuHPWEE1ID$`J 0HcQH]HPHDUDxID$`J0AGBE1AD$~;1ID$XJ0<AōCHA9D$ID$pHcUH@8HID$@J<0GD=DH5% 1@EI]A9\$ ^@M,*f(\f(Y,? f(Y 8M X 8M YX 4M YX 0M YX ,M YX (M Y\ $M Yf(YM XM YXM YXM YXM YX M Y%= X^Xу H HcHfzf(X L f(XL Yf(X K Yf(X = YX= YppXf(f(f(f(f(fW= Ef.EWQfWf(A?CE*\ P= f(YJ fWf(fW < CHE 9< ^MYf(\= Mp\< pYMf(YqK XqK Y\mK YXiK Y\eK YXaK YEX\K XCô?]\J f(f(Yf(Yf(YI \I YXI Y\I YXI Yf(YI \I YXI Y\I YXI Yf(YI XI Y\I YXI Y\I XYI \\\I X=]f(`+f(fW-: Ci?`B%W: \;f.IYMfT O; H ^pEuMMpEf(\9 YUf(Y2H fWppQ]%9 \f(f(Y: f(Y I X I YX I YX I YX I Y\ H Yf(YI XI YX{I YXwI YXsI YX^XXH HcH llFF\ 4G f(YG fW8 fW?%8 \f(YF fWl9 \YF y fWMY E9 f(M M\Xf(YF ,`?~ \F %8 \A$fDUHHH}fDUH@ B<w:aƒafDi~+n.ƒcH= t1ƒbÀt~w~"ytH= H1ƒdƒe@UHAWAVAUATSHI8}I  eHID$NHI\$H3HI\$HHI\$HHI\$H HI\$H(ǮHI\$H0謮HI\$H8葮HI\$H@vH dID$ MH5?)LgIE1LuLH5n L1' ID$ EZB(LH5E L1 LH51 L1 ID$J(EZfLH5 L1 ID$J(EZHHuH5y L1 IIH( ID$J(ZZH5t I> ID$J(ZZH5; I>HHuI6 IIHWA$H5 I>1LLH[A\A]A^A_L\? M1AID$ AZ8ID$HIcAZAIDfDID$H8HcAZ2HHuHITAHHuZUHAWAVAUATSHHHBHEHB HEEfWۅLzHcL4B7ELj(*B4EE1fW1fDA] HEYHUHMBX 0UAXT^Y]XAHD;euf(HH[A\A]A^A_UHAWAVAUATSHH}H=x ުIAaE1AIA{DtfWHEfA.ztѻaE1ftCHEAHw J0B* YfWf.vY1 XCXDeCDeI{uAIA{gAUf(1f.A]THHu\AEfWXȰfDfDAD\ADXHHuZ-1 ^ZELAaDt EYAHA{uLH[A\A]A^A_H=9 AąDhAIID9}0}E97ADUE1(¸DDDDEEEEEEE1Dm8EulHU3 )(HUH]3)9~DeEE8OEA)ƒ~9}]۸OEA)DHx[A\A]A^A_ËE8ȃwHU21)HU:1)9H]DK9HEP~9D~9HA}8\~ E EA)…~ E EA)E~ E EA)…)E EA)H]3)H]S1DuEOEA)PHEDHA1DEEOEA)Eąt_DDh1ۅEDÉEA}iDDAIID9e0Dh}UUD}EEHcE0H]L,LeID}0AuA<$DhAƅDhuAIID9}(~fDDE1D9}(`DE1DAuA<$DxDhsDxDhu!AII9](~A9tݸD)HH@A)E)D|IcH@D^EEKEEdUHAWAVAUATSH8HIDe(D}0E1E9x5u@t$(D|$ Dd$u t$ut$HuH4$LH7AE9|yIcHICA}u>HIUHM8HDAHIE9|1;Xt;Lu(Du AHIE9}DH8[A\A]A^A_@A}uUHAWAVAUATSHIUE19}ZLcuE11AE~9IEXHB<0AAHE9eEIƋE9EuDH[A\A]A^A_fDUHAWAVAUATSH8IHWAVDEEE1H-HEEHEA~"fDCHA9FIFXJ8DdD,AuAuIIHMHDIFXHUHDlEAu}tIHUHMHD+EDeECHA9FPEAFHE;E ,kUd}*,H8[A\A]A^A_EE;E~If.UHH]LeHIHHH5 Մu1HHH HHH$Ld$H5 L葄uHHHHH5 L`tH5| LMuNHHHHsHy HH= FH5 Lu!HHH3HH5 L踃u!HHHHH5L脃uHhH5 LcuHhH5 LBuHhH5{ L!uHhH5c LuHhH5W L߂uHhH5C L辂uHhoH5/ L蝂uHhoH5 L|uHhH5 L[uHhgH5 L:uHhgH5'LuHhH5+LHHH;Hǃ` H~HHHH?HH HH9HHHHKHH.HHJBHHIHkH5ӻ LumHHHXHǃ` -H+HH-H HJHHl8HH5L葀HRHHTHǃ` H:HHHH&HHHgHHHHFHHH!H%H5 Lu+H VHHHǃ` HhH +LH5M H H81tfDUHAWAVAUATSH(IH5H=* H #AHluHn{A>0IH5vH= 蚗IAE1HEHEHEHELtj#0EuAAHMHUH5 L1!IcI\}nHUȉf.L uLuLnA1%9 IH(((1f(](_(HHu\\^Y@HI\^YHHu؍AHA9`LH([A\A]A^A_L uE1fUHH]LeLmLuL}H0dՁ= 5 - %      Ae=DA4o=DA[Ӽ=DAT9EMEEII9uHK7H9uL}ȍGIDHEE1Hu>HKT=HMH]+EC|=EHu>AC|=AT$HcHuH փAHUAHcH֋uăAHcH12IM9fHEHEH9EJHEH8[A\A]A^A_ÐUHAWAVAUATSHH}HUMFHH5[HEHEPʉUH=G #H5G AM1H}2HEPE1fWE1!A]Mf9|/MAݍBA9|*^ZHĈ[A\A]A^A_MAH hG HUHBXN 1JJ40HExD$0HEHD$(EĉD$ D$ED$ED$JH$EDMLU*Y/ ZMXAHEPLUID9+[x=HF UHAUATSHIIHHLADOWE~rIIIW1DIIDHE1f.HHED+DA*XAHE9uID9uA*^(H[A\A]fUHATSIHHADOWE~3I$H1W@HH*XHD9uA*^([A\UHATSHIH%ADOE~nLW(E1 L1A9t!HHH*XXHD9uAHA9u(^[A\ [A\fDfDUHAWAVAUATSHHIjwIIABCDEFGHLIIKLMNPQRLHISTVWXYZL@H0IH5HDIH H=ݭ E~{IL}E1AEHHEf.E1DfDK'J#HMHH5 L1HA9}L wIL;}uLH=U LH[A\A]A^A_afUHAWAVAUATSHXH}HuAALH=vC LaC IL[C E1E1E1 A HAY,A~#IcI1A H9uAIIuEEL}IHEH-HEE1WEEEEAH5B ډAHcHc I ډAHcHc4AHcHcHMH Mx*XEEw XXEEE.nE^E(^]E^EE^ZZUZZEH5 HR H8eEH8[A\A]A^A_1*1cH= 'MpH= WEEUHH]LeLmLuL}H0HAAI;IHH50 H H81LDDLH]LeLmLuL}UHAWAVAUATSHHHIH=< HH]X EfWMMEL-< IHEE1K>HUL$IADE1J;A*MYMEAYDZXEXEEHHuIIu< \EfTG Mf.  zt Mf.vMMEMEH5¥ H$ H87Ef. w" 8 XMMÉ}MEH5t H H8ZEHH[A\A]A^A_1HG; _f.UHAWAVAUATSHHH}I1ILH}ZEH5 HK H8^fWEE1E1M@D9~AA1D9IcJ (HcJ(HHuHAAYZEfWf.z u *MYMEXEzEMXM EE^EYEEYEMXMZEZH5ܣ H H8.ZEHH[A\A]A^A_f.UHAWAVAUATSHIIIH=&< DAN&MfA]L < LAfWf(%{ SDDRQD\RG *W^ԃ~PIhHHHLHcB Hcf(AY *B^YXكH D9uAH E9uA$Eef.zt_f(eZ*e^ f(\f(YA*^\YY ,H[A\A]A^A_1H[A\A]A^A_þ'jHH>H:  G@HADA*&@AHAuQfUHAWAVAUATSHxH}HuUIDLMH=7 E1DmE.HcHHEHcE HHELeEHEHxHUHcHLMII`HD0D]EHEL<H]E1uAA tX~T~PHM(HxDhHDht(D`A E0ACDBAHD;mtgHUHJ`HcHы0H=6 D7wILMB OLMIHUG 9MA9DA DHx[A\A]A^A_EHEU9UHo HH= E볾hH5 ZfDUHH]LeLmLuL}HPIAAEċE~E~!t" 1H]LeLmLuL}H=7 tHH=7 D?Dw_Dg D9t'HuL#HHtHcEE9u댾gH@7 UHAWAVAUATSHhIHuUHMDELMDmHEHEU |HE(HpEIcHHEHcL<HMEIN`HUHcHUHUHHUE~sE~nH]E1DAHE9tTIN`HcH HUHB8~AUuHpR= uHh[A\A]A^A_fDfDEHEE9EOHpHU(|E HUHUDmLMDEHMUHuLHh[A\A]A^A_UHAWAVAUATSHXIHuUHDELMD}Lu(93 HMu53 D=3 |3 r3 H=c3 Ht 輗IFx0XH93 G3 EIEA}E]IcIL$`HEHH3 ELEHH4H52 E1IL$`AHcHDHDHPH>I 1HtHIcHGAIHE9uUMD }2 H=^2 Do2 A1ɺ;EIu9uIe42 Ẻ7HcEHHEHcE HHEHcHHEE1E1H1 H It$`HcHDH}HHU<HcQH֋HuHHUD~ 1EAA9~*B AA)C )A8B)Ǎ?AA)DLA= tI*XEEAA9|>t:EtLA*M^A *\,HX[A\A]A^A_AHD;}@fW뼋;0 t>Hu7H HHH=z H=nIhD9=0 t H}HM;r0 /UHAWAVAUATSH(HH HDLH}(HH=J0  Dž8  HcL<H/ H L%0 L/ LE1IcUHHA`HЋHHB8HcLHcH HL Hx"JJ:~TAfDHc4:HcDHHI TIAHx"JJH D9AID; 0Dž<MHcE L<L . L(L%. L. LmE1fDfDIcUHHA`HЋHHB8HcLHcH(HL Hx"JJ:~TAfDHc4HcD:HHI T:IAHx"JJH D9AID;u3DMD9 2fWEeHcE HHHH- HhH- HUH - HxH5- HuL5- H=- H}LMLPfWEHPHcHHHQ`HHHHH 8HcL,HcHMIIHx"J(J88OAAHxHϋ<HEHHHEHHHEHHI<9N*XAK1AAHx"J(J8I D9 ~qJc L IctLMHhLAHxHϋ+ LE1IcEHHHQ`HHHAHcLHcIIL Hx"JJ8~Mf.HcHcL0IIHx"JJH 98AID; /Y  DH D9:QEHX9EEHcE HH0H2" HL5D" L--" HMHPHMEDž$HHK`HuHcHH2HHH0QHcH4HHcHHI$x"HHHH4H:ADLHcLHcDLJJ:~fAfHc4HcD:HHI D9LTAOIDAI$x"JJH D9HH49AHHH D9:SHHJ`EHEu9uH= HhH HpH H`fWEHPHcHHHHH04pI$x"HcHHEHcHuHHuH4H]H:EHDžHHHHcHHEHcDL<HUHJ88AHhH<:HpHH3HJHH`H4KT<9O*XfAKDAI$x"HuH1J8I 9Ic4LJcLL MOAHhHH\$DT$L\$$‰Ё t )‰H([DH\$DT$L\$$)DUHAWAVAUATSH(IuA׉MDEE̅[ERH=  UuLIHcEH4H L4IcL,IB(M$x"LI2J<?~AAAJcJcLHBDAM$x"I2J<I D9HcEH LcEI JE1~ }I2J:~FAf.HcHcTHAI$x"H0JH D9 M.H BAECH([A\A]A^A_1H([A\A]A^A_HGHcx0JH ID$P0E1E1K\-Hw H@ B<(HcpJHAID$ID9p0?HATRUHcGHcWHËtG 9NA9DLAH D;MuDUHAWAVAUATSH8IuA׉MDEEȅEH= uLD}xAxHMHU(HhIHDHHIID9LY I2N1~ lj>MJIrN1~ lj>MBIrN1~ lj>II9$|1IH[A\A]A^A_1SI9ډI9͉ɋE؃H= B1LZDH I^XHELc JMAIFH@HUHB<8!MIFH@HUHA|MMH MHHH B B<Et|҉} 1HĈ[A\A]A^A_fDfDHcxHHEHcHUHctHHEMcDž|EH HJJ||EH JJH||EAA1 HP H5AkH=c) eIE1HEHhHUH`HEHXHUHPLKÃLGMLLHIŃ#tLhL`HXHPH5( H1LH= HHEHUHHMHHuHE|HEHUHHMHHuHE|,Lt%H ǀDŽHHuǀǀǀǀǀǀfDfDUHAWAVAUATSHIAAEąEH=x IEIcH@HcH<IIEIcH@IcH<ID) fWE~LHcH<HcH4H 1fWDH8\0ZYXHD9uQ^ YPu ,H[A\A]A^A_1H[A\A]A^A_H= iH ~ ~$j 1 u X9uN QF > fUHAWAVAUATSH8H}HuHNFHEL=[FH}D7A*AFHHHMHHMHEHEHFt>HL9uHEH9]uHEH8[A\A]A^A_DfDD#A*tODGADGAT$HcHHHMH1H}H: AUHc҃AHHMHщI;E|EIUHE9PϾH}EHH[A\A]A^A_AMAt$HcHUHBAMHcH}HB~$~ AH}LMUBULMAIE9]UHAWAVAUATSHHAAՉMEDVEMH= HNHC@(;k t(c HCp(Ƌx0HI DHvQIIcHL) JHEIcL,HB( M$x"H4IH<0?~HAAf.Ic8IcL8IAD8AM$x"IH<0I D9HcEL4McK2JfWۃHfWAU (LR8*^*O ^_ZXAH A9tFHcGHcWIËt= u*G ^ZXAH A9uMtgJH:~?AHcHcTIAI$x"HHH D9 HEL(K3BAEID$*@0^YT ,H[A\A]A^A_1H[A\A]A^A_HC@( UHAWAVAUATSHHIHMDE;H  < H   HEH U H=Ϛ jH=ƚ YH= H H H H 5 LrH 5w L[xHl 5V L~H7 HX 5> LbH# % 1;! É HcH HHcIGXH1}$LUȋuLULtILH5I>1M$LUȋuLUHDHL9HL1 O 1J?IHJ9H*Y,ЉHHuHHuL11fDfDJ?IHJ9H*Y,ЉHHuHHuMMȋUHFQWH[A\A]A^A_@UHAWAVAUATSH8HUMMNIHCII1 N 1J&HHJ!H*Y,ЉHHuHHuI11J&HHJ!H*Y,ЉHHuHHuEyY EWEEE1ZEEH5 HDK H8W"LHH11f.J&HHJ!H*YE,ЉHHuHHuMMUHLO(W (N _D]Et E.v4HJ H0*M!MMEEELdHRLdLRHv] XEZEAA'EH8[A\A]A^A_UHAWAVAUATSHIHUȉMMkYsL EZH5HI H8 HǐHjIHE1H={L%`MK MLHHHHH*YE,ЉHH9uIIuLQHiIHE1L K4 LMDfDHHHHH*Y}K ,ЉHH9uIIuLLH=TLLdLQLdLPMMċULLVMLH[A\A]A^A_@UHAWAVAUATSH(IHc0nIEe0EEE1IU B2~pG$>K6HE14HcHG DCHIU B92~,IEHUH<ǀt EAM0I;Mt~JLfW1*XH9uLMA*E0M^f(H([A\A]A^A_fWUHAWAVAUATSHHIHc0NIAN0EE1IV F<*E~yGdO|-17f.HcHF D ,H([A\A]A^A_1H([A\A]A^A_*Y*d ^?HhH HDEMDDLID$Hcx0ɶH ID$P0EE1K6H H@ B<0Hc膶HEID$IU9P0[H4 2I|$u HCID$HHIcAEHHH4I$hHcUEHHHH HfWAPD|RHcGHcWIċtG 9N*XAH E9ufDUHH]LeLmLuL}H@Le(HW`Hc9HEHEHcHʋEMcHBHcU IDHpHyH,1H"HHEJ< HHHĘ[A\A]A^A_HLH}q a5 \ZEHDžhfWxhfDUHH]LeLmLuH HI譧IL5L9thH5L譨u)HLH$Ld$Ll$Lt$Jxf.H5Lqu-HLH$Ld$Ll$Lt$>H5U$L1H5B$L H_L HxHLH$Ld$Ll$Lt$yf.H5LH5L誧H5#L蓧H5#L. HH58 Ldu]E1LH$Ld$Ll$Lt$DHLH$Ld$Ll$Lt$aL9DhEuH5LtH5LuHLH$Ld$Ll$Lt$.H5L详tH5L蜦tH5L艦tH5LvuHLH$Ld$Ll$Lt$H5LDtH5L1tH5LtH5L uHLH$Ld$Ll$Lt$H5jL٥tH5lLƥtH5oL賥tH5nL蠥uHLH$Ld$Ll$Lt$}H5OLntH5NL[tH5@LHtH5@L5uHLH$Ld$Ll$Lt$H QLH5HZ. H81pH=IuUHAWAVAUATSHHHuILMtVLIIL%fDLHuHMt2I$IHHuLH[A\A]A^A_HuJIIfUHAWAVAUATSH(H}HuHMIIH5 LE1uLH([A\A]A^A_Lk;{HcyIE11E11fDfD;4|AA"1Ic;4}IcHcIAA1H}HE3AuLHpHEHHtjLHuHQII(fLHuH1MtI$IHHuH}H}L蛪LHuH}IIH]f.UHH]LeLmLuL}H@IIHEMH= v IT$`Hc3HEHEHcHʋEIcIHcU ID4HE(HxuHHM(LHyuIHE(Hxu}IH=v sEDCEN1MtIEhIcH@ H<1MtIGhIcH@ H4HHYMH LDHU(AԉHM( )‰H]LeLmLuL}D1fDfDHU(HzuH EHU(HBHHHcUȍCHHH4HcUAFHHHHnt HHM(+ PH=u HU(HBHcMH@IcHG H=25qHt  *HCu @@ @@dPH5u HM(HAHcMH@IcHF }HU( fDfDUHH]LeLmLuL}HPIAӉMEH=HIHEI}uHEI}D IH=bt E~DKED$1MtIFhIcH@ H<1H}tHUHBhIcH@ H4H{HH}LLC LE]H]LeLmLuL}AfD1H]LeLmLuL}I}uD H~E~Et${ErIcLcIEH@HA|EIEH@HA<AHc]McIEH@HA|eAIEH@HA<LAD;D1IhSHc҃AHHDEAHcAGHcH4AFLcAD$HcJɋ)A)CfDH=r IEIcH@IcHG i \ \ \ ȺfWt_HcHH* HH9N*^Y   \^ Y ,ZZHHLATLLKHT$H5CHT H8g$HHH$9IA DH`Hً1H`L‹2D9A/HcABDABLB;HxHAA9~ADA9~HHHED1JHcALH[A\A]A^A_fDUHAWAVAUATSHXH}HuHUIMAH*Ef.ztLE*@Hf.uzEHc؋EHU9BHELxXHUIHUHZXHMHHcHIc\$H}=ITH[A\A]A^A_H H1HxIHMH}@UHSHHHGXH8x,HCX1H8P@H[@UHATSH HHtuL%V HH5I<$1aDKDCCXD$,CD$C $ H?H5ڋI<$1'H[HuI4$ H [A\H [A\UHAUATSHAHH HHx@AtQARA(A AzHtHp HCHHXPHa HH[A\A]HT HC@HI HC@HC8H* H,HX8HC@H   CXCC C  HחHCHCHC HC(HC0P`MH @X H= u`M@XHk HB8HP@H\ F A`qMH@XH0 HX8HC@H! A AuXAu1H A uHSPH9tH; HC8HP@HJ8HB8H HH8HA@H HC8DcXEu  D[XECXH[@Hu߉] S H{X9CC C  IחLkHCHC HC(HC0CXH{@PH; 3HS8HtHC@HB@HC@HtHP8HC8HC@H HX8HC@H  u 1H=a HufHH_@NHE HuH=A 1Hu DHH_@TNH Hu`4KH p   H5ƇH H811d  1QH HJ8HB8HC@H H; H=n9^@UHSHHHH~XHtY{XtSCBCBC B HCHBHCHBHC HB HC(HB(HC(HB0HH[DfDBB B  HחHBHBHB HB(1DfD1H>fDfDUHH]LeLmLuL}HpH}HIILEMLmA}AAEEAAYAf.z)D)щ9M*N*fWf.-f.A;IN(IcEHf(H  f.zt6f.zt.f(\ZYf.f(f.IF HHpf.zt+f.zt#f(Yf.?9f(f(H]LeLmLuL}fDf.f.5H HH=(EL$ED$AD$XD$A,D$D$AD$ $A $Ḧ́H5hH H81诣EMEEAEXD$A,ED$AE $AMHH5$HU H81kH HKzXAA|$XA$AD$BAD$BAD$ B ID$HBID$HBID$ HB ID$(HB(ID$(HB0HC H4 HzXA}XAEAEBAEBAE B IEHBIEHBIE HB IE(HB(IE(HB0H IFHBHD$H$L  LELLHH}H @IcUHIF LIcL$IF(H MAJpf.-f.zt9Ef.zt,Xf.zf.ztXDfDf(kIN(IcEHIcD$H f(f.zf(XfHEHHMHL$GD$IGHD$C$IAIH}ARx*A\$XX1H1HBB B  HחHBHBHB HB(1BB B  HחHBHBHB HB(1ZUHAWAVAUATSHHHHHLLLeMHDHD@H H‹@XD$,BD$B $ HӀH5nH;1輟H}HMDIDAAXD$,AD$A $ HH5'H;1uHHw^H8HM MH[xLEE@DELIXXHHHcH<IʼnHHHAHcH<HÉLDED+8DDD8\H= H= B1HPDžpMt I$pDžhM98Hc8HHEE8)]ȉ]HDž`p\ pe pv H`5HpHchHH \9U626HM]Ӊ]DEDEHMEEEIEDžl32Mll}tEÈuEMHUJL=HǃHX[A\A]A^A_DfD9Ef}oUHAWAVAUATSHHPHHH@H8L0L(Mv H(DHD@H H‹@XD$,BD$B $ HHH5HH;1gH} HMDIDAAXD$,AD$A $ HHH5KHH;1gHP H(E H(UHM MLEE@DEH(@pHPHYXL@IHcHEH !1HH1U>I DH5!Hg H81>HhHI4HxHHD;dHyLHf HMH3 uHĘ [A\A]A^A_Y=UHAWAVAUATSH(IAW0G0HcHEE1HEID$HUH<>HEHx IE~E1AD$0DHIT$H4LT>AD$0DHIT$HHEHt'I\$HL>HH5 H}1=AHEE9t$0)LH([A\A]A^A_fUHAWAVAUATSHH`HXHPHHL@D< EH`f=p&IH`J=AEAEADždADždIEXHXH8=IEXHxH`<LH[A\A]A^A_Hc@f.HUJDHMJDB(AID9eK\-HMJDEE|$HEHD$H5SHX H81/HxHB8HMH}HtOJ (H}H8F>H5HX H81/IIHx9Z0A|$qH 1c (0Hxy00Hxy09t' HcHH HHp D;% H}6UHAWAVAUATSHHHHW HHU1DžtHt1<_HzH5.HwW H81.3H5aHHHH|H5@1E/DžxH50HHHtHxH51 /H5HRHHtHxH51.xH5HHHHtH51.H5HHHH H51m. ^X H5HHD͢ Ǣ HctFH8Hct.H@tdHhHctH(HctfDž`XƅIpavie_idLDžmatDtHQ0AAIcHPE~%HSH5!)L1#L#HuLA^0HcH`HINj~KډA9<_HnH5HL H81.#ԷL1HEH`H0H`H(H5 HH]HB H5H1#) ^1N 1ڽH$ALYH IH5Ȑ11HMy0H8H]K0HEHEȉ0DUH]HH9hHHEHEQE9H5H&HtH5HH3H8H8[A\A]A^A_H]H5H"H'HEHxH@8H]H H]HH4HEL1(hIHUHBH4IFXH8A"HMHAH]H4IFXHx$"HUHBHMH<"AFLߗH5tH\fH5`HHL+D,AH]LcHEIH!DlHUIH!DDžlAVEDHDDžhE1IVXHBF$(HB<(1ۅDwHADžt0t,HD)1)*XllhAEIA9Fht*hl^lH5oCH̷HHEH8LdHMH H5H蘷HqOKYDZHEHUAH5HUH&LD H]K0HE;9H5dHHH5JHHH50H̶H ?HUHBHMH4H]H<HH$DL(H0H aIHUHB8H4IF@H8 HMHA8H]H4IF@HxH5HHHUHMH8HTZDHMH H]jH5H迵HwHUDr0E1E~SHMHI8HH9YE1AAD$HHHMcAE9~H;.HI9vAE9IcHPHE H H=HE@0~:1E1HUHB8IH5HE H81IHU9Z0H{E H H= HEP0LPIE1DžLW\AA]9IIAݍBA9|~h1HMB*HP^HA8LHH$ZEDH5w HD H8CHMQ0H9|HP*L\^ZL EH 9 DH53 H_D H8ZHKD H:諪HXH|_IFHx]LuLeH8IDHMZXZHUHB8HxL HUHHD$D<$f(Ef(‹MDH5 HC H8HUHB8HML HxHHD$D<$f(Ef(DUH5HEC H8@XAXD$AD$XHUX\XX\ELHEP0HEHE;UHUHB8H]H H]HZlEEH5qHB H8H~B HHpAvA~HAVAJEE1E1AFE1E1IcHDD)HHIF@J HcKHC@HD9t5HcCHS@HE~11HcCHSXH^HD9uCAEED;DKHpH6H.HNjp0H5~H HsBC\DnfDKHDHHS1E1fW9#HD9|A*^H(B HBMIAHHA*XAAHD9~HUH0HMA0+E1E1HMHA8J(H5*H? H;1HEDx0EE11H8IDTBY,H5H m? H91kAHUB0HD9AID9nUHH]LeLmLuH HIHH5éIHLHRI1HIŋS0Hs8HLC\LLLH$Ld$Ll$Lt$†fUHAWAVAUATSH(IuHU1nH}H}EAv0EE1IFJ<8n~jE1Lh DIM9tRƺQ)kd)֍F;E}IFLJ8}HcHM IM9uEIEA9F0qLH([A\A]A^A_A^0͸II~H[HEI$DfDUHAWAVAUATSHIHHH<= HHU1Ҳ1,IE1E1111L+HH Imyers_miL Iller_paiLH@r_wif@se@fdžnjƆIidscoreLH=(D.IHuH52HHL`LH5NFH1HԢH ^LH5H<< H81LZIhALJx A^0EII~HiYHI$MhHDHHS1E1fWD9HD9|A*^,A| ALJt H; HI"H5zH۪HA| Ax $E1MLL̛H@L0A}~'E11IEXH<AHE9eIGH0Iv(I~ MLl AUIuPLH : HUH3H[A\A]A^A_HBMIAHHA*XAAHD9L`LH MDd1L1H5WH謩HHtbHyiH5*eHV5IHHH5H1 HdH56iL5HIHHLI{5DfDUHAWAVAUATSHIHIH9 HHU1H5LԨHH5LHPHHLIA}0&IH5CL脨HAU0~n1AI8AE0~611fDfDD9tIHI,2AE0H9I HȋÉGAU0H9DB1ɺL]lIHcH@IU8HD@H H5HM8 H81cAU0~OH@I41IH,ʉPAAU0H9~#IΉ9uI@AAU0H9DB1ɺLkA}0dIH@HHXIE8H4I<$A}0~d1IDHcIE8H4I|ItILIE8HXHDFH5HK7 H81aCHA9E0H.7 H2 G1L&HNjPLHHP5LL+L.HH 6 H]H3HĘ[A\A]A^A_H5LH2H5,LHLHLHH5LåHH5sL諥HHeH52aLb1IH`HHH5[H1HaH5BeL*1AU0Iu8dHHÃt&HcH@x1HDž@f. H 5XHHH5H5 H81 DHDž@!H]5 H7H= 1oUHSHH85 H XH=W H FH=C> H SH=r% H lH= 1 DUHAWAVAUATSH(HIH4 HHU1ҋO_HG(HL 1L 脯HnH.Hf Hp)HcйHL H RLH5H1 H HLH5tH1 MH5 PL HHHIH m=HH57L1-/H`HIH ==HTH5L1.HN3 HH=m HH5H 3 H91 HH5H3 H;1 HzHLcLH)HE1LԭHAIHD;u݋H55H2 H81 DžHDžH5$H O2 H91M LHDžHHL,HHE1HtL HHËHHHLH*HADHIƋ9H5HIH5(HHDžDžDžHDžHHBXHHH<1` ^}HcL<E1E1DHHBXJ B<01 u.HcHHAAID;uH9)kdHHH4щ*H_H0 H XH= H FH= H SH=;H lH=z1h1H59H / H91Hu/ H3 vHHSHHH'[HKH?H3H H=*H. HUH3u^H([A\A]A^A_þIH@H9&UH+fDUHF+G@UHAWAVAUATSILH0G EȅHcHHEEE1LHUHBE11IBLHEHHGHBME1E1fDLI IJ6IDGHWJ BAIIA9uAHA9yEIU9UJL[A\A]A^A_fUHAVAUATSH0AIHHL5- IHE1I-I8HEAEEAECEGET1HM B*BHA9EADžADž ADžADžADž ADž$ADž0ADž8ADž<ADžLADžPADžTADžXADž`ADžhH='sI0HEI3H0[A\A]A^fDAEEAECEDEEEFEGEHEIEKELEMENEPEQERESETEVEWEYEX1HM B*BHA9EADžADž ADžADžADžADžADž ADž$ADž(ADž,ADž0ADž4 ADž8 ADž< ADžD ADžH ADžLADžPADžTADž\ADž`ADžhADždH=|KoqI0CUHAVAUATSIAx2HHE1fDfDIFH<#AHE9uI~[A\A]A^fDUHAVAUATSAI~HE1DH;اAHE9uL[A\A]A^鼧fDfDUHSHHH?蜧H{蓧H{H[鄧@UHAWAVAUATSHI6uHcHEE1(NK@K@KH}&HCEą~5E1E1DKLHX&HAID;muK@&IIqH[A\A]A^A_UHAWAVAUATSHIA芣HIuHcHIFMH;HIF%HIFIF E|$Ic߾HIF8IFIF H¢IF(E~GE1E1LI^(蚢HLI^8聢HAIE9u¾cIF0H[A\A]A^A_f.UHAWAVAUATSHIAHIHIFIFIFIFA\$Hc趡IF~3E1E1ADLI^芡HAIE9u۾lIF H[A\A]A^A_UHAVAUATSIH Hc-IDMt$LAE1DAT$ ~JE~+J<L1҉fH89~AщHD9uIcBC*ABIA9D$ L[A\A]A^UHAWAVAUATSHH}AUADE9|WE9E}HHHcTID$LHHyH1yHHuID9SH! HUH3uNHH[A\A]A^A_E|$ LI\$IcHH;ΠHID9uE|$ #fUHAWAVAUATSH(HIHz! HHU1He2薜IH5|HXIHIHIHmHE1E2@ILOIcHL⾖LHt.A}>uAD;uuAN2MHcHI?ӟHILHeDH HMH3 uHe[A\A]A^A_H=J\fUHAWAVAUATSH8H}HuHIHR HHU1HeH}xH@IHU,H!LH:E1DfDHU,LHA<$>AƄ$+ A$< tMtIcHU<-u/AEHHDfDL-AH<-tA<-tLAAFI< `XIcHU< t0AEHHL-IH< uL 2HeH  HUH3uHe[A\A]A^A_n@UHAWAVAUATSHH}HuIHMDML}HE HxHU0HpH  HHE1HeE)McHUNLE1I0LHPLl$0L2L[L EL2L@LEL2L%LEL2L LEE1IMH`fL2LHA]*H`mMt,ItZDu~IcL AH~8Xu-~IcJ81:X)AH…g_IcJ81:X)AH…7uHcEHMHHpHuL}Hc](HHxuHxLHHx1HMH1LE1IEHhfDL2LxHA]*Hh Mt,ItZDu~IcJ81:X)AH…뚅~IcJ81:X)AH…g_IcLAHB8Xu-MHcEHMHHpHuLHeH HMH3 He[A\A]A^A_HxLHpHD$ U(T$HxHL$ED$L<$DMDEHMLHuH}0HxL(HpHD$ U(T$HxHL$ED$L<$DMDEHMLHuH}%6fDfDUHAWAVAUATSH(H}HuMEE0ILEEHcL<E111.DH};H51L1GAHE9tGHMHA ~uHEH5L1 AHE9uf.L H([A\A]A^A_E~HcHHEHcL<E111*HEH5L1AHE9tHEHHMHH}ȋ 8B :~օuH};H5;L1KEKHcL<E1114H};H5L1AHE9HMHA ~uHEH5L1UHAWAVAUATSH(H}uIՉLIHUH5eL1pD;EE1}E~yE1113f.HEH5L1'AHE9t=HMHB 0~uHEH5L1AHE9uL EIU9UbLH=8H([A\A]A^A_UHAWAVAUATSHHIIEHHU11LAWH5NL1HAWH59L13AW H5$L1AWH5L1 AW U}ω}̅EHEHcHEHHEDEEIWLm1A12AUH5L1IWAHID;et!HH} 8~uAUH5HH}HEHHU ~taHEH5L1,L %EHEU9U7LH=HH[A\A]A^A_HEH5L1IW111bf.UHAWAVAUATSHhHHuHUALELMDeHGH7HVDHDFH5iH}1^DDH5^H}1FHLxHCLpEMEDEIE1EE*HEHHEE11f@w$ILMLELLDU}DUHcETDH5H}1AAEfDHE9HUHHMH @ƄZ@t$DLMLELLDUw}DUHcETDH5.H}1 AAEHE9kHcETDH5H}1HMH=MHMH=3Hh[A\A]A^A_$MLMLELLDUDMEDUuAAEAHcETDH5@H}1AAfDUHAWAVAUATSHHhH`HXILPLHLuHE D(EAHAWEHEGH5HH1EMEIEDAG EHPR UHhHHXHEf.ztH`Hf.!EEEEAMtE1EEEM9ME]9]E}IcËLTH5HH1U+UE+E9LHE)Ѓ ;E}BD HUDtE~,LE1 HMAHcHH;8HHE9u܀}tuHcELHcEH<E111E~ fJ1IGH8BHD9uEEAIH]9]DH5HH1}}HcELHcEH<E111E~(J1HPHCH8BHD9uEEAIHE9EDH5kHH1:HHH=}MEHĨ[A\A]A^A_À}f.u{zyE~4H<11J1HpHCH8H]HD9uAt)IcڋLTH5Hh1DEEAdE~XL L11J 6HpHBH0IGH0BBH]HD9uEuEEEE1IcڋLTH5:Hh1Df.UHAWAVAUATSHXHHHILHA(HHQ0H AA(A0HH8HQH@HIHHw PH@ TI0HXVHcPHL8ILHIL@IHcTH TE1IA*Y0X(II~.L,IIHH AHuH HIHIH~.H4IH~.H H*F `H*@ X``H=R .HHRHhHHIHpMd$8LxEE1H@ ~kE1E1E12*$HxJB AIIHD9n ~.HpJB0HxJHJ EI9]xHHHUPɉMTΉuL=Q HcHEHHEEHHHHH8HHHcHH~QE1E1*,CAIA9t/HhJHUHKAIA9uHMHH8L1I*EY0X(HHHHHHIHHHH@HHHI~.L4DmERHHHuHHMLEHHHMHB0HuH(BX 0_X0B2HHBD2I(AXL_X0B2fW҅~;E1E1Cf. 19uAIA9uIHMHAXTB0LIHHB 0f.v LIHHB 0f.v EIT9uMHMEHm}HHD$H HT$HH $LLHH@HHH8OHX[A\A]A^A_EE1HxJB0f.ZzXuVEI9]uHc}HN HcHL8IL@IIIHcTX\`LLeHMI LI HXH*YXL6fDfDUHAWAVAUATSHhIIHHDDH HHU1DDHc|H1)sIċu( HH$MMH 1H1HHL)H5LuH/fE1LHHIWHfH,LHauf.H,LHt}tluHBA9HHHUH1H=AH1HHcH)‹A)HHHIIcA\AD$HEtAD$HATArZ1HcHL~I>EEt[H}HHL)VUUUDAD)H HMH3 Hh[A\A]A^A_H='M9 AD+AG ~]E1'@CD%C\%CD%dAI t*HBD9̍rZ1HcHL}IGtHBA9>IcADAFHADAFHADdA^HB9HcADAFHADAFHADdA^HB9{HcADAFHADAFHADdA^ HB9HcADAF HADAF HADdA^ HB9HcADAF HADAFHADdA^HB9ZHcADAFHADAFHADdA^HB9HcADAFHADAFHADdA^HB9HcADAFHADAFHADdA^HB92HcADAFHADAFHADdA^HB9HcAD AFHADAFHADdEf~HBjAEAE AEdHB!AE AE AEdHBAEAEAE dHB AE$AE(AE,dHB 8AE0AE4AE8dHBAE<AE@AEDdHBAEHAELAEPdHBVAETAEXAE\dHBAE`AEdAEhdHBAElAEpAEtdDA D+AEAIx5EdADADdAAH E9t1HBD9ȍrZH2HcHLxIGdrZ1HcHLwI'rZH2HcHLwIrZ1HcHLwIrZH2HcHLwI>rZ1HcHL|wIrZH2HcHLYwIrZ1HcHL=wI\rZH2HcHLwI rZ1HcHLvIrZH2HcHLvIsrZ1HcHLvIrZH2HcHLvIrZ1HcHLvIMrZH2HcHL]vIrZ1HcHLAvIrZH2HcHLvI%rZ1HcHLvIrZH2HcHLuIbrZ1HcHLuIrZH2HcHLuI H=E1ZUHAWAVAUATSHhIIHHDDH; HHU1DDHcWqH1yhHDEELH$MMH 1L1TL2HL9H5HHfE1HHHfH,HpHHHH1H1H1HH1xH1nH1dHDpH1NH1DHD`HBA9}YAD)HHH8%IcE4AEHE$AEHAADrZ1HcHLlsIEEtxHrH-HL8VUUUDAD)H HMH3 Hh[A\A]A^A_LH$MMH H=!9AD+AE ~_E1"C'C\'CD'dAI t1HBD9͍rZH2HcHLbrIGtmHBA9IcAAFHAAFHAdA^HB9HcAAFHAAFHAdA^HB9JHcAAFHAAFHAdA^ HB9HcAAF HAAF HAdA^ HB9HcAAF HAAFHAdA^HB9+HcAAFHAAFHAdA^HB9HcAAFHAAFHAdA^HB9nHcAAFHAAFHAdA^HB9HcAAFHAAFHAdA^HB9HcA AFHAAFHAdEn}HBQAAG AGdHBAG AG AGdHBAGAGAG dHB iAG$AG(AG,dHB  AG0AG4AG8dHBAG<AG@AGDdHBAGHAGLAGPdHB7AGTAGXAG\dHBAG`AGdAGhdHBAGlAGpAGtdDA D+AEE1x'E$ADADdAAH E9t*HBD9ɍrZ1HcHLmIGlv7rZH2HcHL{mI?rZ1HcHL_mIrZH2HcHLHEċUĉH@HEEBHHPB HcED(HuDEpD1DMD9MIcHUHIcHHML,LeIEDEE=HAUAUHHA$A$HIc$HPB HAFBHIc$L8AB1ҋtHHLHIcELHH*b H@HyIc$H4*Y 1fW1fDIA*L^H*D^YXH;tuYn,HPHcEDMHPD A$EAVAHIIDuD9}|AHcEHDAHP IcL$HMID E|9pHL:8HEH-8HEH8HEEE-AAA1E3UHAWAVAUATSH(IAHHLLHE$H萔(H~Ilj,HU,0(4HcN7H8IcݾH77IE LH1ɋ(+GH HD9uH `HLH6H@H6HHH6HPA$9( 11ɿ"fHB'H9( ֋()H@ HH VD9uN\`L89HuH0Hh,Hc6H(Hc5HpHHp5H8H D0A1EwD5H8HDHDDD@HDDHDD`HDXAHD0E9uIcL$AD}(ʉ|AMMEiDHc,HHHDžxHHA0;4IcH8HھD4HxxH@H0BHHB HcDHpDExD1\9`IcH8L4HcHH@HH]LHIʼnUDEDžd3IHu‰IHAEAEIIcEHB IAGBIIcEHBHv H@ D$EHLQH]LcN HLFIcEH<HE11IIADD*XEEH;$uM&IHA|=HHhHHIcEH|H* *U^Y,A$HcdMH A]dAWEIHEID}̋u9`|AIHcdHDAH IcL$H8ID ,9XHL1Hx0H,PHHB H@HAGB9,H+,HcHpPHD>AIcL$D`Ex#Hc`,HH9 )`D\E~$Hc\xH@9t)\x9|~~EuA0;4,4Hc4HH8D4H8DHULcHEH,+xBAWUE,AD94}#44HcHH84H8H8L&0H(0H@HcHHHHHpDB H@,HcEH8L,Hc|LƂ EA;E|BE~5E1E1LI]Au&HcHH;%HAIE9uAE&HU< t IE1u\E1DE`UAHL$I]A>DE|HHUHcDHB DEAAFI< tt<-tE~UAHL$11f.IEHB HD9uyEAE HeH HEH3uHe[A\A]A^A_ |UHAWAVAUATSHIAH0H(L LH|}HÉXH(g}Ilj\H,`H(H90DGDAЉdHc HhMcL HELH1ɋX+GH HD9uH /vLHoLHpLHx9XW11ɿ&HH9X֋X)‰Hp HxVD9uNMuMH |uLHLHpLHxEEH!HH0HU\HcH8XHcHEH8eHhHD`A1EwD*HhHDHDDD@H8DDHDD`HDXAHD`E9uIcL$AD}ċXˉ]AuuEiDDHc\H8HHHEHHHMHHH0HHH(HHUA;dIcHhH޾DHEUH@HE`BHH8B HcEDH]DApuD1M9M@HcHhL4HcHHpL<0LxIʼnMDE̋EEEf]]KIAAIHAEAEIIcEH8B IEȉBIIcEHBM&IIcH<0@wHHHHIcEH<wHA$HcEuH84AEEEEIIIUŰM9MHcEHH8HcEL$HhID\9HHL#Hu0H\PHHHB H@HEȉB9\H+\HcH]PEHHEHL$ExHcE\Hx9 )EE~HcEuHp9t)EE9E~hDEUA;dDdHcdHHhDHhDH\+EB/U‰UDE\AD9dHhLHX0H@HcHPHHuDB H@\MHcEHhL,HcELHHDžHH0IoHc H HHD9IcH(E1( HJ@J@JH( HCE~8E1E1fHJLHX&_ HAIE9uHJ@&II_1ZHH5RfIǾ IHHHHH=}R1\gH5EZHgH5eRHg( HHFhH Hx"H8HLH0H5* fH1WHH5QeHH=QfH8H5eHHĀHT$0HfDžE1Dž$AHHHf.HHPHcHH4LHD9IcHH4LDHHHIcL$D;H e$+HcHHLdHJ"AŋX$$MLHHHAHHdLdH\HHeHcAH1meHcH1UeHc$9AIcHHHHyHHLh1H3LcD9AIcL$HIHHLHH8@h1H3LcD;wAUHcHH9 HNHH01b~H1H HMH3 He[A\A]A^A_HH1p뽾0HHHHHAHAHHB1HHA 1HHB(H =HxH@H0AHHDH@H5٭aH1.HH5MaIA~HcHLaH1E~,HE1@LXaXAHE9uIcH DL [aLwaHHHL$ H)D$Ll$Dt$HH$DD$HHHjH`H`H`H`L`L`HL1HL$LE1@IFH<AHD;uI~zHLp1fDIFI<SID9uI~?H3H'DE5H5|SH`HH9HHxHHzHHnH5LH`tRH5BKHt`oHH_H H@8HHs_HHH5JH_ucHH=Jd_HH0H@LqH=J_H5KHq_H9HHL@H J1H1{]HPLd$0H8H5}]IH5٩H]H HL]L2L]HuL]H]HyI~HLqg1H8H=_I#^HH5IHm^u@H8H0E1DXE|\H5IH^u֋H8HHH0HDDOH=UHs]HH0H0[oH=ED9N &N>I@Ic JcD&At;9ʉN*YIDuB* f.v9AfDfDAIIID9AHBD>mD9L1E1DfDDH9uE~QDH1D9}BHcLK48uIcHJ 8K 1I0AD9|D[A\A]A^A_BD>AHUf.UHAWAVAUATSHIIL=7~ IHE11cULLLUHtD>t8 tڄt֍CHLLDfDÈQ tHHu맍CHB0HEI3uH[A\A]A^A_TfDUH!t**^ZȰdf. vD\TZWY,fDUHAWAVAUATSH8HHuHUH} HHU1He2!HMH2 HUHH5rHSIHIH7EE2E1LLxSHAEL<>t'DfD< t̄t<-ABHLc}JHMHLcSHE~HUHFdE1EM9MqE2EHcH4HUH:HMHHHHEH8HUH+HcUHMHDdLRHeEH{ HMH3 uHe[A\A]A^A_QH=>*SA$D}D9}zHEHHELmLuLeMeH]HuHH H H}HcH}H4DEH}A$AHEHEHED9}HEHh[A\A]A^A_HcؾHH HHw fUHAWAVAUATSH(IIHHWu HHU1HeL~LHĀILeH+LlfE<$*tXLuLLSMHKL1?MHKHcfA_LeLKA<$*uHeHt HUH3uHe[A\A]A^A_KfUHH]LeLmLuL}H@IIIHMDËG8IcHL$Lf8DF A$F@D9tdI~ AHMLLI~(EE@HMLLuID$AD$A\$A$H]LeLmLuL}F@fHwJHHI<BT8)ʃ~QHcHH4Iu8AE A9]@t'FFHcHMHHFV iCAE@HcHUȋQUHAVAUATSIA͋=  tfDHBH=  uE~.HE1f ~DH5C6L1IAHE9uLH=h[A\A]A^IfUHAWAVAUATSH8H}AHUHM1ytMcLIEE111YHI=tHEH4IHx\JI@8I@|AHE9uL:HDuA~+LmfELHLH}Iǃ}HH5H} HH5\LH1sLHuHMDH}H8[A\A]A^A_H߶HPq H01~LoHDuaUHAWAVAUATSHIIE1EE1f.9EAIC,t jGC<4^G-u̓-uԸ!Et*EA*^ZȰdf. svH[A\A]A^A_?s\GZWsYs,H[A\A]A^A_UHAWAVAUATSHHXHPHHH@DD]EHcUH`H@HDt]ĉ]H=A DH=+(@:?UHH]LeLmLuL}H@II׉HcH4H4HuȋF9|=)HHL,Au9~AM9"AUEEH5R+L1>HEȋH9)HcHM,AE9B)HHM$At$9|AD$9OAT$E$H5*L1>AM9G)HcHM$At$9qAD$9DAT$E$H5*L1H>AMAUEEH5*L1+>HUȋJHЋPDH5c*L1H]LeLmLuL}=D)HcHM$At$9~gAD$9~FAT$E$H5*L1=AMfDfD))AM9{)؉LL AD$)މLLf)؉LLAD$D)މLLpfDfD)؉LLAD$D)މLL{fDfDUHAWAVAUATSHIHhH`\LPHe HHU1H=n k\ȅHPHHDžHDžLHHHpHH`HcDHhH41L<<LL;HtD>t8 tڄt֍CHH LÈQ tHHu맍CHH 9\UHH\9HPH Ed HUH3HĈ[A\A]A^A_HH`HHHHHHHcHhH41L;LL:Ht=>t1 tڄt֍CHH LÈQ tHHuH` HCHHHHIHxHHHL=' DžDžE19ICtAH1 BD2H‰< tuLL8<>u̍CHcؾHHy HH] 7UHAWAVAUATSHHH}IO8HcHHHEHN8HHEF HMN@9MHEH@ HEP8HcHL<M|$8AD$ AAt$@9HULr AF8HcHL,Ml$8AD$ AEAT$@9I~ LAT$@I~(L IEAEA]EmDmAT$@HMLq(AF8HcHL,Ml$8AD$ AEA;T$@/AT$@I~ LAT$@I~(LIEAEA]AEIGAGEAGE?D}AT$@HMLy(AG8HcHHHEIL$8HHEAD$ HMAL$@9qMw AF8HcHL,Ml$8AD$ AEAT$@9mI~ LAT$@I~(LIEAEA]EmDmAT$@I_(C8zHcHL4Mt$8AD$ AA;T$@AT$@H{ LPEAT$@L{(AG8HcHL,Ml$8AD$ AEA;T$@AT$@I LAT$@I(LIEAEA]AEIFAFEAFAHUHBBMȉJHUHBBMJHH[A\A]A^A_Hx4EN@fDHHH[A\A]A^A_Y4fIG4yBAD$@DH{'4BfI~4EQI~3YfI~3EAt$@9@AL$@@I3BAD$@BAD$@AT$@AT$@%UHAWAVAUATSHHHH\ HHU1ҋ_ ˉHw8HHHxJHHz2H1HHHcyHHHH[HHHvH H@(HHR(H0HcH8HHcy H@HHc{ HH1H H0H2LHL;2Ht(>t1 BT H tuHc۾H6HH"IHHcz  HHHAHS ~1ɉ AHS H9HV@HF HB Hc~ HDE(,HDžDžHHHHHH8HHʉHHHLHDHLHt P9(H1D,E~H;,u1P~7H111HcH09~ωH;PuHcHHH 0HcH H41HS0HH/H> tʄtƍCHHHHÈP tHHuLPHH HHDPE~DE11HHHD HH<^H51=0AHD;PuHHPHcHL0EF8E LHLh8HB AED9J@uDb@HS@I~ H>HV@I~()IEAEA]H(D9aH@HHH8zH ;W H]H3 HH[A\A]A^A_@CHHP HHHDžDžTDžXHHcH H41H-HH-HtG>t; t҄t΍CHI HfÈP tHHu뜍CHAE1E1E19AAIHAt ,C<<,-uƃ-u͸CEtTA*A*^Zdf.Yw, vX\f(-ZWYYFX,иd);X}TXP9HcTHH HH@,~lHA,PD)ƉʉƉDHHHSKAHD;,uHKLHH HHHHHHl,1AAHALED9,XHL4HL,I<AM؋t-IcLHH4HJDZBIEAAHID9,AIeD9,DlE~K1H5HH91~+HADH5H;1]+AHD;luHHlHH`HHcH H41H=*HH)HtD>t8 t҄t΍CHHHHÈP tHHu럍CHHHclHP9lHHHHHH@HHHHHlHHcH H41HA)HH(HtD>t8 t҄t΍CHI HfDÈP tHHu럍CHAE1E1E19AAIHA t 'C<<'-uƃ-u͸CEtTA*A*^Zdf.pTw, S\f({(ZWfTYS,иd)HHHHHHHP9wlHHHDžHHHHHH@HHHHHHcH H41H\'HH'HtO>tC t҄t΍CHHHHDfDÈP tHHu딍CHHHsP9lHHpHHxHHl\HpHcH H41H`&HH&HtL>t@ t҄t΍CHI HÈP tHHu뗍CHAE1E1E19AAIHAt %C<<$-uƃ-u͸CEt,A*A*^Zdf.Qod)Hx;}H\HpHxHP9\Hl9tD,Ex!1ҋ,HH8HH9uDPE~$HH1HcH8H;PuHl~H8BH;luHH8P~i11HHHcH8HʉHcHHH;Pu11HHH;Puߋl~K1H5HH81$HADH5H;1a$AHD;luH`HDHH8HH8H`HAHH9CH`H~3H`Hx#H`HzH`HD: sN\f(#ZWOYCN,`HFDžl HHHH I~"D!UHAWAVAUATSHHG ȉ HW8H(Hc_H.H0HH8HyH@H{HH{HP1HXHc{HHsH`HCHhSpHK(HxHcqHEHc{ _HEHc{ MHEHc{ ;HH(HCHH ~1҉BHK H9HN@H(F H(B Hc~ HD EptHEEH@HHHuHHEȉ$HUH(HT HUDeHH]D| D9pH1DtE~H;tu1E~1HU111HcHx9~ωHD9uHcHHUHHc HuȋIIHcFHhHH4HDHL8H0H`OALA~iH]AEHcCHhH4HDAH8H0H`D9}DeAAHE9uHcEH]H AAHvt~cH]A~DD)ƉʉƉDHHUHSKAHD;tuHKLHHUHhH`HHHHHH}GEt1AAHALED9tDpHL$HPHI<EMft,IcLHPH4HHJDZBHAAHID9tDAI[D9tDmE~H1H5 H@H91)HADH5 H;1AHD;euH@HXuHP4HEH]HcHhHH`H0;HcEHD9}}mHIILmILeIċ]IcHhH4HD@H8H0H` AEA$IIID9u} EHEHHHUHHHMHHHEHH]HuHcDHhHH`H0GEHuDD9}}zLHLDefDIcEHhH4HDAH8H0H` ;}uA6AIHIE9uEHEE9E7DtEx1ҋtHHMHH9uE~HU1HcH]HD9uH}~HUBH;MuHHME~W11H]HcHUHʉHcH]ȋHHD9u11HH]ȉHD9u]~H1H5H@H81%HADH5}H;1AHD;euHUHD$HMHUHH88HMHAHH9HuH~HEHxHUHzH}HDeHE(ED9 H}H}H}H[A\A]A^A_xLHDHUHhH`HHE~=E11HuH(HDH@HmEAIcB0A9rDHDL{IIcH[HHD;HHS|DDMDLHCL4AA(HcLݵIH AIcB0DHDLIIcH[HHD;HHCD+AuDMDLHCAGHLiLaHH 6 HUH3uCHh[A\A]A^A_ÁHcH4vHHH]L fUHAWAVAUATSHhH}HuHUAEE̾˰HE踰IA*A* ,AF؉\$L<$LMEHMDDH}&IždIAAH5XH} HELcL7HEL&HEA7Lt$HEHD$HEH$LMLEL1#A~!LE1fDH{ײAHE9'LòH}p H}豲H}訲H}蟲L藲LHh[A\A]A^A_遲UHWDF+D+D))DfUH9MUHAWAVAUATSHXIIHHH3 HHU11AHËELH$MMH 1L1 L HH HH5)H HHHH,HQ H,H9 H,H! wfDžE1H$DHLD(D`DpIH,H HHH H1 H1 H1 H; AH1 H1 H1 H AH1 H1 HAH9+p(2HcH4HHHHHHHH1 HMH3 u/HX[A\A]A^A_LH$MMH 6fDfDUHAWAVAUATSHHHAH@H8LeH HÉEH8p IljEA,$EH8H9@DGDAЉEHc4HEEEE~RHHHA11H9Xx'[HB H9H7D9uA]]DmM$0Le]Hc譫HP}Hc蔫HEHPnHuH"DeE1Ew?HUHDHDMHHPLHDD`HDXMHDeD9uHcL$AD}̋EȉEAUUEiD\HcEHPHHpEHc]EE;EHEHؾyHEUH@HEEBHHPB HcEHH`uHU4ƉuM9M2HcH@HHL|AfAID9uIGu90uxuH IGHc]HEHؾ躩HIWHc LcbHD`HPJHhHHhB HEȉBHABEAL+H@| 1HcH8A| 1HHuHAEEHhIGHIGIGHEAID9uHc]L$HMID u9pHL貨HUHMHHHpB H@HEȉBE9\H)HcHMP]HpÉ]HcL$ux#HcEH@HHHDM;H)EM~"HcEH@HHHT+B;Eu9uDEE̋UMD 9ElH]L貧Hu0H@HcHxHHuDB H@UHcEHUL,HcELAHھL[Hu11HIcuHE1DfDHھLHt4A}>u5HIcHHuE~HE1fAHE9tH3LWu A}>t/HL6LLHLLHu1HLD9WLHHLLH 1H1 H5H*HH¾LoHھL_HھLOJfLLL1DL1tHtÃ~HHH HUH3uHe[A\A]A^A_aUHAWAVAUATSHIHH HHU1Ҿ/HH;~LIH `$1L1L ILDL"HtxHXH5fuH^tH5aoHKtIMH 1L1LL HH=LHu L1H  HUH3uIH[A\A]A^A_H=@LLKIH 1L1fUHAWAVAUATSHxHHHxtH& HHU1HHHH5- IHDžHHGAʼntAHctHHHGf11LEDžHHhLHXHHhHHA9~E9t*AHh1qHA9~E9t!AHcHE1HcHE1_LH HHF1HH5:HIH5 HyIċt~}LE1IcHH41LzLH.LHGf;>t LH,LHHuAID;tuLLHLxLH x1H1"HHH HUH3uHe[A\A]A^A_DfDUHH]LeHAA)AD$H$Ld$DUHAWAVAUATSHHh`XH HHU1H5 HHƅ0HHHHHH>uHHHDžE1䀽>tpHHH! t€DHAHDHH+HHHH >uLc&HLHHLHHHHu11HdÏHDž|DžDžDždDžE1HDžP@HHHD8HD8p>HPHH HpAAEALHHL$tHcH Dt LHLHhHut6 t؄tԍCHLLfÈQ tHHuHEB<0-.CHB0HMH=1LH52H}1HUHrHx1&fDfD<-tHIcHHHHuHE@ HUB<2-!CHB0HMH=hHUHrHx1<-tHIcHHHHuHE@ H}HeH H]H3He[A\A]A^A_ÍCHB0HMH=LH5H}1HUHrHx1(<-tHIcHHHHuHE@ CHB0HMH=mGH]HsHx1<-tHIcHHHHuHE@ 9UHAWAVAUATSHH8H0H(H Hq HHU1HhHH\$ ~{Ižl{H@V{HpH8HHpHHxHpHHHHpH@HH8D2zHPzHzHXzHzIH5tH(LHHH¾H E1DHHHt0>t(Hf.PH)ـ tuAAwHcL}HIcHH`HL}IE~1HD9u11HAHHTHtN>tHD$(HHT$ HHD$H OHL$D$$L LH HL1,d0H(HDXH\$8H\$0H5Ht$(HHD$ H(HT$H HL$D$d$L LH HL1Aƾ,d蛉H0H\$8H\$0HqH\$(H5pHt$ HD$HHD$D$d$L 1LH HL1AC|5,HDž$E~YH(E1fAHE9t?H5ܻH;UetHc$HH<$H3AHE9uE~[H0E1@AHE9t?H5|H;dtHc$HH<$H3eAHE9uH(tH0c4iHH(VH\$8H\$0H5KHt$(Ht$ HHD$HHD$D$$L LH FHL1xLH\$8H\$0HDHT$(H 2HL$ LD$H5H\$D$$L TH HL1 LH5>UHt$8Ht$0HHD$(HHT$ LD$H HL$D$$L TH ںHL1gHHTH\$8H\$0H5a3Ht$(Ht$ HHD$H̺HD$D$$L 5LH HL1 Hg:HLEHH8H~/H@8-t&HHH=M>HdHH=e7E8 8 DE[HHt ?ZD$EhH=Ht1H=~HljHH=HHZ9HHsDHH7HLLH5Ht$8HHD$0Ht$(HD$ L|$H:HT$D$$L PRMH HH1XHXHH'H\$8H5Ht$0H\$(Ht$ HL$HHD$D$$L QIH ҽHH1XyZHTHHHD$8HHT$0HD$(HT$ Ht$H HL$D$$L JQIH ½HH1RHPHH5!Ht$8HHD$0Ht$(HD$ H\$HHT$D$$L PIH HH1dHH PHL$8HL$0H H\$(H5y6Ht$ HHD$H^HD$D$$L 3LH )HH1@_LH HT$8H HL$0HT$(HL$ LD$H(H\$D$$L OH HH1LH5Ht$8HHD$0Ht$(HD$ LD$HHT$D$$L DOH ļHH1O~WQXLH fH H5H!H811H5HUH3Hh[A\A]A^A_DEaH8HHtH5-9]DTƺh )i'LAA)H _d1L1ƼsaHHH=JHH5BHH1DXLLAE1H{MHDEAHD;DuEVXAIwHHƽHHӽf HHAID;DuH讽HI -type_oL@nly f@ >LHnHgLHLqWHH5&ytHHH dHH51$`HH MHL$8HL$0HH\$(H5/Ht$ HHD$HsHD$D$$L LH 3HH1]H葥_HHvLHT$8HT$0H +HL$(H!H\$ HHD$H5 Ht$D$$L LH йHH1^HHKHD$8HD$0H*HT$(H HL$ HHD$H;H\$D$$L TLH jHH1%V^HH5JKHt$8Ht$0H)HD$(HHT$ HHD$H HL$D$$L LH θHH1LHJH\$8H\$0H5THt$(Ht$ LD$HHD$D$$L =H uHH1N]HH\$8H\$0H(HT$(H HL$ HHD$HKH\$D$$L LH HH1H5IHt$8Ht$0HHD$(HHT$ HHD$H HL$D$$L 5LH HH1,{HXH3IH\$8H\$0H5'Ht$(HHD$ HXHT$H ηHL$D$$L LH HH1xT[HH9H\$8H5'Ht$0HrHD$(HD$ HHD$HRHT$D$$L LH FHH1ܿ [HH HHL$8HL$0HKH\$(H5Ht$ HHD$HHD$D$$L uLH HH1FLHHT$8H HL$0HT$(HL$ LD$HH\$D$$L FH XHH1ԾH5pHt$8HjHD$0HeHT$(HT$ HHD$H RHL$D$$L {LH HH1T,dexHhHyFH\$8H\$0H5+Ht$(H%HD$ HhHT$H |HL$D$$L LH 7HH1辽t,dwHËH5EHt$8Ht$0H^+HD$(H|$HT$ H\$H kHL$D$$L \LH 3HH1-Aƅ~IIHctHhHE1I4$H;(AIHE9uDtLHEHD$8HD$0HHT$(H HL$ LD$HӴH\$D$$L H HH1dH= <,dcvHxH5wDHt$8Ht$0H)HD$(H#HT$ HxHL$HʴH\$D$$L LH HH1輻,uH`H5CHt$8Ht$0HX)HD$(Hv"HT$ H`HL$HfH\$D$$L OLH /HH1 ,+uHH5?CHt$8Ht$0H(HD$(H!HT$ HHL$H"H\$D$$L LH 1MHH1脺,tHH5BHt$8Ht$0H (HD$(H>!HT$ HHL$H\$D$$L LH HH1,sHHBH\$8H\$0H5 Ht$(Ht$ HD$H?HD$D$$L LH HH1a,lsHH\$8H\$0H. HT$(HT$ HD$H xHL$D$$L LH ǧHH1ڸ,rHH\$8H\$0H}&H\$(H5Ht$ HD$HHD$D$$L {LH KHH1L,WrIċHo@HT$8HT$0H HL$(HL$ HD$HH\$D$$L LH ƱHH1·RHH5?Ht$8Ht$0HHD$(HD$ HHD$HHT$D$$L \LH qHH1-^RHH R?HL$8HL$0HH\$(H\$ HHD$H5LHt$D$$L ͣLH HH1螶,pHH>HD$8HD$0H\$(H\$ HHT$H HL$D$$L ELH HH1HK>H\$8H\$0H5Ht$(Ht$ HHD$HHD$D$$L }LH HH1藵H\$8H\$0H$HT$(H XHL$ HHD$HH\$D$$L E}LH QHH1H5Y=Ht$8Ht$0HHD$(HHT$ HHD$H THL$D$$L |LH HH1螴OHxH<H\$8H\$0H5JfHt$(HʫHD$ HxHD$HHT$D$$L LH ׯHH19OHpH\$8H\$0H HL$(HH\$ HpHD$H5ׯHt$D$$L LH HH1yH;HD$8HD$0HEHT$(H 3HL$ HHD$HH\$D$$L {LH HH1*NHhH5;Ht$8Ht$0HdHD$(H%HT$ HhHD$H IHL$D$$L VLH HH1cLH:H\$8H\$0H5(Ht$(HHD$ LD$HHT$D$$L 9H HH1MH`H\$8H\$0H HL$(H(H\$ H`HD$H5Ht$D$$L LH cHH1[H9HD$8HD$0H!HT$(HT$ HHD$H HL$D$$L yLH HH1H9H\$8H\$0H5Ht$(HHD$ HHD$H HT$D$$L xLH HH1bH\$8H\$0H KHL$(H#H\$ HHD$H5Ht$D$$L xLH ƮHH1H$8HD$8HD$0HHT$(H\$ HHD$H HL$D$$L wLH HH1pH7H\$8H\$0H5RHt$(H*HD$ HHD$HfHT$D$$L wLH KHH1H\$8H\$0H HL$(HL$ HHD$HH\$D$$L vLH HH1~IHXH56Ht$8Ht$0HJHD$(H`HT$ HXHD$H HL$D$$L ۢLH UHH1IHPH 6H\$8H\$0H5_Ht$(HHD$ HPHD$HHT$D$$L ELH HH1RHHHH\$8H\$0H tHL$(HL$ HHHD$HH\$D$$L WtLH gHH1ʬGH@H5Ht$8Ht$0H&<HD$(HD$ H@HD$H3HT$D$$L jLH HH1;lGH8H `4HL$8HL$0HH\$(H5۫Ht$ H8HD$H˫HD$D$$L ԘLH HH1襫FH0H3HT$8HT$0H dHL$(HL$ H0HD$HH\$D$$L ELH ZHH1LH5J3Ht$8Ht$0HHD$(HɽHT$ LD$H tHL$D$$L 2H GHH1蝪"LEH(,dHH2H\$8H\$0H5EHt$(H\HD$ H(HD$HHT$D$$L ֞LH 2tHH1LH\$8H\$0H HL$(HL$ LD$HH\$D$$L m1H nHH1x,cHH51Ht$8Ht$0H.HD$(H#HT$ HHL$HH\$D$$L LH HH1 DH H51Ht$8Ht$0HHD$(HD$ H HD$HHT$D$$L oLH ̩HH1M~CHH r0HL$8HL$0HYH\$(H\$ HHD$H5Ht$D$$L LH HH1辧H/HD$8HD$0HHT$(H ~HL$ HHD$HdH\$D$$L eoLH .HH1>oBHH5c/Ht$8Ht$0HLHD$(HD$ HHD$HEHT$D$$L ޓLH HH1详AHH .HL$8HL$0HH\$(H5Ht$ HHD$HHD$D$$L HLH HH1JAHH>.HT$8HT$0H HL$(HMH\$ HHD$H5IHt$D$$L LH HH1胥H-HD$8HD$0HOHT$(HT$ HHD$H 8HL$D$$L 1mLH HH1 HE-H\$8H\$0H5Ht$(HķHD$ HHD$H(HT$D$$L lLH HH1芤H\$8H\$0H HL$(HKH\$ HHD$H57Ht$D$$L 8lLH HH1HL,HD$8HD$0HHT$(H\$ HHD$H ΨHL$D$$L kLH HH1蘣>HH+H\$8H\$0H5Ht$(HHD$ HHD$HhHT$D$$L 1LH HH13>HH\$8H\$0H HL$(HL$ HHD$HH\$D$$L LH HH1z=HH5*Ht$8Ht$0HΧHD$(HD$ HHD$HHT$D$$L LH ~HH1=HH *HL$8HL$0H?H\$(H5Ht$ HHD$H{HD$D$$L LH <HH1UHH1蹑HpH5F(m3HpH=( ,HhHHT$8HT$0H 7CHL$(HH\$ HhHD$H5Ht$D$$L LH ^HH1HhH57'2HhH=G+H`HHD$8HD$0HsBHT$(H HL$ H`HD$HWH\$D$$L $LH HH11,BJHH5VHt$8Ht$0HHD$(HHT$ HHL$HH\$D$$L |LH |HH1蛏*HXH5Ht$8Ht$0H HD$(H HT$ HXHD$H HL$D$$L LH HH10*HPH$H\$8H\$0H57Ht$(Ht$ HPHD$HќHD$D$$L cLH HH1p)HHH\$8H\$0HHT$(HT$ HHHD$H IHL$D$$L ۂLH /HH1)H@H\$8H\$0H+H\$(H5Ht$ H@HD$HHD$D$$L zLH ̛HH1Y(H8H~HT$8HT$0H `HL$(HL$ H8HD$HH\$D$$L yLH zHH1ʌ'H0H5Ht$8Ht$0HHD$(HTHT$ H0HD$H ZHL$D$$L cyLH !HH14e'H(HYH\$8H\$0H5Ht$(HpSHD$ H(HD$HĚHT$D$$L xLH ʚHH1螋H\$8H\$0H +HL$(HL$ H(HD$HH\$D$$L SSLH dHH1,H5gHt$8Ht$0H*WHD$(HHT$ H$HD$H HL$D$$L RLH THH1謊HH\$8H\$0H5xHt$(HfHD$ HHD$HhHT$D$$L SRLH 9HH1,H\$8H\$0H HL$(HH\$ H H\$H5Ht$D$$L QLH әHH1賉$H HHD$8HD$0HHT$(H S;HL$ H HD$H5Ht$D$$L LvLH RHH1HXHD$8HD$0HHT$(H כHL$ H\$HH\$D$$L PLH ĘHH1褈5H5Ht$8Ht$0HbHD$(HPHT$ HHD$H HL$D$$L =PLH kHH1HQH\$8H\$0H5Ht$(HКHD$ HHD$HtHT$D$$L OLH 1HH1薇H\$8H\$0H iHL$(HWH\$ HHD$H53Ht$D$$L DOLH HH1HXHD$8HD$0HHT$(H\$ H HD$H HL$D$$L NLH HH1褆,@HHH\$8H\$0H5pHt$(HMHD$ HHT$H HL$D$$L =sLH [HH1 9!HH\$8H\$0HH\$(H\$ HHD$H5nHt$D$$L rLH 0HH1者H HD$8HD$0HRHT$(H :HL$ HHD$HH\$D$$L 'MLH HH1H5QHt$8H˗HD$0HHT$(HT$ HHD$H HL$D$$L LLH HH1耄HPH\$8H5KHt$0H[HD$(HD$ HHD$HHT$D$$L 'LLH HH1H ݺHL$8H˖H\$0HL$(H\$ L|$H5ĖHt$D$$L LH HH1莃HkHD$8H\$0HD$(H\$ L|$HHT$D$$L JKLH kHH1#THH OHL$8H\$0HqH\$(H\$ HHD$H5rHt$D$$L oLH HH1蔂H>$HNHD$8HOHT$0HT$(HT$ HHD$H !HL$D$$L 2JLH HH1 #$.HHMH\$8H5Ht$0H3HD$(HHT$ HHD$H HL$D$$L nLH HH1`HH\$8HH\$0H5Ht$(Ht$ HHD$HWHD$D$$L nLH HH1рHH=K>HHHT$8HT$0H ZxHL$(HXH\$ HHD$H5FHt$D$$L WmLH HH1(YHHMHD$8HD$0HHT$(HT$ HHD$HT$D$$L lLH ڔHH1H }HL$8HkH\$0HL$(H\$ HHD$H5Ht$D$$L NGLH HH1'HHD$8H\$0HD$(H\$ HHD$HSHT$D$$L FLH HH1~H=1cHH HL$8HL$0HoH\$(H5C0Ht$ HHD$HHD$D$$L lHHH\$8H\$0H5Ht$(Ht$ HHD$HHD$D$$L hgLH [HH19zH8HdHT$8HT$0H HL$(HH\$ HHD$H5gHt$D$$L ALH HH1yH={WHHD$8HD$0HyHT$(H\$ HHD$H ܏HL$D$$L EALH HH1yH=HGH\$8H\$0H5Ht$(HƋHD$ HHD$HJHT$D$$L @LH HH1xH HL$8HL$0H`H\$(H58Ht$ HHD$HHD$D$$L %@LH HH1wZH+HT$8HT$0H HL$(HH\$ HHD$H5.Ht$D$$L ?LH HH1pwHHD$8HD$0HDHT$(H HL$ HHD$HH\$D$$L ?LH HH1vHH5Ht$8Ht$0HHD$(HD$ HHD$HKHT$D$$L tcLH HH1EvH>lHH蒖HD$D$$E1E11HH1uHXH 9}DXEd P HHt 9LHHt 9iME1LH֍1I}lHG HH5VI}}$Hf.H lteHމmLH5wqH1#lLHtȋHcH`HYDt S(9 Ht S09f#H0H5}H IDtE 1E1Dp0E~~H30LYHDEA9]0EtTI]hH0HQH H5"}H1gYHLAHHH5HLH8 +DEHH=|OXDE~qLxE1I$HHHHH5)/1WH0I4$LIH]WM&AID;uLZHËHHMsHDEHnHHPXH5\HAH81?Ws0H[ H(HH8(X~OA1H(H0HVHH|HLDH5y1WAHD;uH0H=k踈H H HL$8HL$0H5.Ht$(HHD$ H\$HdHT$D$$L SLH ,HH1^HqH5"Ht$8Ht$0HHD$(HqHT$ HHL$H\$D$$L jIH ]gHH1r^H8Ivery_fasL0f@t鿳H=j}HhWH=`HpvHH=H=qpgHIH=H=Gt=H=zlH=>u[4H=zJH=t9HH=t3H=UtH\}H0H=A11H{8IHH5b0H{8H(S0LHk;HL'*HH5yT1҅E1I111H"IHH TIH@HHI"HI!TH0H8A1L@I H0Ht ;yH(H LHB0xdHxHy0HpHv0~&1HpHBHH;F0|HH5HAcHËH07E1DžlE1HP0Hp8HC8J< dSt%HclHxHSAID9k01fHLSH5L< HDžE1lHA0xE11E1CHpH^B0AHIHD9`0+HHpJquHHF8J4(HxJH&2H8H5StH;HH2H8H5$q)aH;HFbHMH;H2bHJH0H0HPHxHH5q1OHHHH`H`H`HHYHPH!H=Q%dNDtELhE1sI$HHHHH50%1MH0I4$LIH]MMAID;tH5TI<$uHH5pHNHbrna2CSHcH`HK1HHPKH5HPH`A~1LAHKIH5oH`1uJAHE9uH`1HHX[KH5(HXtHDLVH~LQ HHt >Ap H1IHIJOHPI(JHHIJI@I<I8HI^JHhIHDJI4I0I,HxIIHpIHIA AAAH`HtHH5CH0HSIH H5n?IH`H=tt(AHI"6IHI##IHIpIIGx0=P Hx8tnH ? GHH`H8HHH`HD$L|$HH$LL1ҾH`Y&I1IhD||H1tIGx0~EhEuIhA` HHt >1A!DA!A!HI!GHI "GE!EtA!nALJt A H=dm DE IhIGHxXH5(H5$bIhqYxq,Ax gfff)A| I"H5l1EA A A 1HH5TMAAA*AHI #FHI FA HIEAhHH5Gl1DHL1_IƋAAh~Hx?1ۋuP~1L0I9닅~1LI9H8I#EH0IEH@IDH8H=;`VPTDEDXE DPE DTEp-\ -HDž8HDž@HDžHD EDE` R % UINj ~-E11HH4IG8H<CAHD; uI HprecompuI Hted_pairHP@_wisf@eAdžalnIFP0Hp8H8H8IH0XIFHH~&HHHBHIFH0Hr(Hz MH8bH+tALIƋ~1L"I9닅~1LI9HLpH d1H1R<HxH5ȈHHL-;H HxHE1HRdH5\d\I" HH~HmHAHHxHH0*DIl9ZHHHF8J (HxJpH5IaH1;H5HL(HcID$@H -speciLP@Ial_mode LHHIaccurateL@PH [Slow] HxX@`E HcHC H‰/ HChange tH0Hhe WidthHHH of yourHPI MSA witLxIh the enLp IvironemeL`(Int variaLX0Ible ALN_LP8ILINE_LENLH@IGTH (allL@HH formatsHxPf@X) HcH H‰t HAlign 2 H0Hor more HHHprofilesHPI with -pLxIrofiles=Lp I aln1, aL`(@0ln2 HcH H‰ I-specialLI_mode=exLPIpresso tLHIo fetch L@Hyour strHx Huctures Hp(HautomatiHH0@8callf@ LpIto use yL`Iour own LXIguide trLP f@(ee@* HcH H‰ I-infile=LI -sL@Hpecial_mHxHode=evalHpHuate to HH HevaluateHP(I your owLx0In alignmLp8@@ent HcH H‰ I-other_pL Ig seq_reLXIformat tLPIo accessLHI seq_refL@ @(ormaf@,t HcH H‰ H-other_pH8Hg extracHpHt_from_pHHHdb to usHPIe our pdLx Ib retrieLp(@0ver) HcH' H‰ IAll the L Ilatest vLXIersions LPIon www.tLHIcoffee.oL@ f@(rg@* HcH H H-versionH:H to checHrHk for upHJBdatefBsl HcHj H‰V H-output=HIhtml wilLxIl producLpIe a coloL`Ired outpLX f@(ut@* HcH H‰ I-outordeLIr=aligneLHId will oL@Hrder theHxH sequencHp Hes accorHH(Hding to HP0Ithe guidLx8Ie tree iLp@In newickL`H@PV HcHT H‰@ I-specialLI_mode=quLPIickaln wLHIill prodL@Huce fastHx H/low accHp(Huracy alHH0HignmentsHP8@@Ǖ HcHŕ H< H5rJ1  HcH H‰ I-tip=allL8I to see LpIall the L`Itips, tiLXIp=no wilLP Il prevenLH(It them aL@0f@8ll@: HcH H‰ H-other_pH8Hg unpackHpH_all wilHHHl unpackHPI all theLx I perl scLp(Iripts wiL`0Ithin t_cLX8@@offef@DeH5B<H_1Q ƋT ȉAA\$H@ HH^H5IL1-HcH H ADH5}IL1H H liH5%?HFH;脲銺H H谮HH HH0qIFP0Hp8H85HIFP0H(H8IGHxXH5V@ϼDIGHxXH5購H5HD(H;HH0ݽHH:HHH9/I.H5BHJHQ0HxE1DžlHDH&Ht HclHxHd1L1xLH0H:ҼHH=EHXHE1HdH5E|H HXH5bHHXvH{HXH5MF$E1LH8觤HHLfHH@HCH01P1MHLH5fL#HHtHcHr09NƉlL9~u1L,3H11者IHDlH ?1H11H1LhfHH-0ILHzAu0~PE11IE8H4HxH<HxH H5L?HBH81AAu0HD9L;LH5H!誽HHHH-in XbloH8Hsum62mt Hp@HnHH-distancHHe_matrixHPI_mode ktLx@up H3HI-maxnseqL0I 10000 LXH HI-dpa_maxLInseq 0 LHHHI-dp_modeLH fasta_pHxHair_wiseHpf@ HHH-extend_HHmode matHP@rix @H|HI-gapopenL8@ -10f@ HWHI-gapext L0@-1 H8HI-iterateL@ 0 MF$ILH8GHHH54H<ŻHHHI-cosmetiLIc_penaltLH@y=-5f@0 @H|HI-distancLHe_matrixHxH_mode=slHp@ow HAHH-output HHclustalwHPI,score_aLx@sciif@ HHI-evaluatL0Ie_mode=nLXIon_extenLPIded_t_coLH@ ffeef@$ HHI-clean_aL@ln 0f@ TDH LH0HH5@18I~1.IL>E11HH HH<1LHH HHHE1H5HAHD;u1W@ĹI!HH=2 I!lB0I!hB4I!duA` gfff)ЉI!`B8u*u uAdžx 8Adž| LWIHWIIPILJPI>ҭIVHE1E1䋅~qHJLI>tHJY,2HxAhIFH$L <E11Lh1H5;-H#謵HHHH -quiet=H8Hstdout HpHtHH -outputHH score_aHPIscii htmLxf@l @H6HI -iteratL0@e 0 @ HHI -evaluaL@te 鼬1I_H5HHH{ARH5 H衴HHHI -msa_moLIde=precoLHImputed L@H[HH -seq_weH8Hight=no Hp@H1HH -evaluaHHte_mode HP@no HHI -in XpaL8Im250mt Lp馫H5;HHLD1¦QH5 Hu{蛳HHHI-in MsapLI_pair -LPItemplateLHI_file SEL@@ LF_Pf@$_ @&LD3PH5H耮 HHHH-in MsapH8H_pair -tHpHemplate_HHHfile EXPHP@ RESSf@$OpHH5'8MHH582HH57ȭH8ǁH5H蛭$HHH<H5V龩H8H5K6LLH8PH8HDžHwHH5A7>HH5,7#H8ǃH5nH辬GHH6HI-in MproL8Iba_pair LpI-templatLXIe_file BLPILAST LH 魨H8H5M5;LH8 H8HDžHkH5HtH5HH54XH8Ы&H5!XH8赫GH5VH8蚫H81@HۧH8H54ifLH8EH8HDžHH5H,AH5HH5HdH5H*pHAH %11H=&вHB HI -extendLH_mode rnHxHa2 -tempHpHlate_filHHHe PDB,RNHP IA -in MbLx(Iest_pairLp0I4rna -trLX8Iansform LP@Idna2rna LHHI-relax_lL@P@Xib 0@\ZH8H53LH8BH8HDžHH5H覩uH81;HH5H}tH5HjuxH81X*%@*%B*%D*%F*%H*%J*%L*%N*%P*%R*%T*%V*%X*%Z*%\*%^*%`*%b*%d*%f*%h*%j*%l*%n*%p*L9'AS%)'hhh!h6hNhbhwhhhhhxhnhdhZhPhFh%h4h(*h= hLh[ hjhyhhhhhhhhhhhh/h>vhNlh^bhmXh|NhDh:h0%s NOTHING FILE SET MEM SET ! TC_LIB_FORMAT_01 %d EXECUTABLE %s IN_FLAG %s OUT_FLAG %s OUT_MODE %s ALN_MODE %s SEQ_TYPE %s WEIGHT %s MATRIX %s GOP %d GEP %d MINID %d MAXID %d PARAM %s PARAM1 %s IN_FLAG2 %s EXECUTABLE test_pair DOC Fast alignmnents on the best diagonals ALN_MODE pairwise OUT_MODE fL IN_FLAG no_name OUT_FLAG no_name SEQ_TYPE S built_inADDRESS %s PROGRAM %s EXECUTABLE fast_pair RNAMATRIX dna_idmat GOP -50 GEP -1 EXECUTABLE exon3_pair SEQ_TYPE G MATRIX exon2mt GOP 0 GEP -1 EXECUTABLE exon2_pair GOP -10 EXECUTABLE exon_pair DOC regular dynamic Programming EXECUTABLE slow_pair WEIGHT clean MATRIX dna_idmat GOP -10 GEP -1 DOC bi-phasic dynamic Programming EXECUTABLE biphasic_pair DOC Probabilistic pairwise alignment EXECUTABLE proba_pair GOP %d DOC Combination of the best template methods EXECUTABLE best_pair4prot ERROR: The mode best_pair4prot is only suited for Proteins [FATAL:%s] EXECUTABLE best_pair4rna DOC local alignment reporting the N best pairwise local alignments EXECUTABLE lalign_id_pair MATRIX dna_idmat MATRIX blosum50mt GEP -4 MAXID 100 EXECUTABLE align_pdb_pair SEQ_TYPE P EXECUTABLE lalign_pdb_pair EXECUTABLE ktup_msa ALN_MODE multiple SEQ_TYPE s EXECUTABLE seq_pair EXECUTABLE tc_P_generic_method.pl OUT_MODE A EXECUTABLE tc_R_generic_method SEQ_TYPE R EXECUTABLE thread_pair EXECUTABLE2 t_coffee ALN_MODE pairwise IN_FLAG -infile= IN_FLAG2 -pdbfile1= OUT_FLAG -outfile= SEQ_TYPE Ps EXECUTABLE2 fugueali http://www-cryst.bioc.cam.ac.uk/fugue/download.htmlfuguealiEXECUTABLE pdb_pair IN_FLAG -pdbfile1= IN_FLAG2 -pdbfile2= EXECUTABLE profile_pair EXECUTABLE2 hhalign IN_FLAG -profile1= IN_FLAG2 -profile2= SUPPORTED NOEXECUTABLE2 clustalw sap_pairhttp://mathbio.nimr.mrc.ac.uk/wiki/Softwaresap ******************** WARNING: **************************************** SAP is not installed TMalign will be used instead tmalign is FASTER than SAP and *almost* as accurate ********************************************************************** http://zhang.bioinformatics.ku.edu/TM-align/TMalign.fDOC: TM-Align: pairwise structural aligner [%s] EXECUTABLE2 TMalign TMalignDOC: sap: pairwise structural aligner [%s] EXECUTABLE sap_pair WEIGHT 100 DOC: SARA: pairwise structural RNA aligner [%s] EXECUTABLE rna_pair EXECUTABLE2 runsara.py DOC: Dalilite: pairwise structural aligner [%s] EXECUTABLE pdbid_pair EXECUTABLE2 daliweb EXECUTABLE2 DaliLite http://www.cs.mu.oz.au/~arun/mustangDOC: Mustang: pairwise structural aligner [%s] EXECUTABLE2 mustang mustangEXECUTABLE cdna_fast_pair EXECUTABLE cdna_cfast_pair ftp://ftp.ncbi.nih.gov/blast/executables/LATESTDOC: BLAST multiple Aligner [%s] EXECUTABLE seq_msa EXECUTABLE2 blastpgp blastpgphttp://www.clustal.orgDOC: clustalw [%s] EXECUTABLE clustalw OUT_MODE aln IN_FLAG %sINFILE= OUT_FLAG %sOUTFILE= PARAM %sOUTORDER=INPUT %sNEWTREE=SCRATCH_FILE %salign clustalw2DOC clustalw[%s] EXECUTABLE clustalw2 EXECUTABLE mafft http://align.bmr.kyushu-u.ac.jp/mafft/online/server/DOC Mafft [%s] PARAM1 IN_FLAG &bnsp OUT_FLAG > PARAM &bnsp2>/dev/null mafft PARAM1 --localpair --maxiterate 1000 PARAM EXECUTABLE mafft PARAM1 --jtt 250 --localpair --maxiterate 1000 PARAM1 --globalpair --maxiterate 1000 http://dialign-tx.gobics.de/DOC dialign-tx [%s] EXECUTABLE dialign-tx /usr/share/dialign-tx/PARAM1 %s OUT_FLAG &bnsp PARAM >/dev/null&bnsp2>/dev/null dialign-txdialign-thttp://www.bioinformatics.ucla.edu/poa/DOC Partial Order Graph Alignment [%s] EXECUTABLE poa PARAM1 -toupper IN_FLAG -read_fasta&bnsp OUT_FLAG -clustal&bnsp blosum80.mat/usr/share/PARAM %s/%s&bnsp2>/dev/null poahttp://probcons.stanford.edu/DOC probcons [%s] EXECUTABLE probconsRNA EXECUTABLE probcons probconsprobconsRNAhttp://www.drive5.com/muscle/DOC Muscle [%s] EXECUTABLE muscle IN_FLAG -in&bnsp OUT_FLAG -out&bnsp muscleEXECUTABLE mus4 IN_FLAG --input&bnsp OUT_FLAG --output&bnsp mus4DOC Mus4 [%s] EXECUTABLE t_coffee http://www.tcoffee.orgDOC T-Coffee [%s] IN_FLAG -infile&bnsp OUT_FLAG -outfile&bnsp ftp://iole.swmed.edu/pub/PCMA/DOC PCMA [%s] EXECUTABLE pcma pcmaEXECUTABLE kalign http://msa.cgb.ki.seDOC kalign [%s] IN_FLAG -i&bnsp OUT_FLAG -o&bnsp kalignEXECUTABLE amap http://bio.math.berkeley.edu/amap/DOC amap [%s] amaphttp://proda.stanford.eduDOC proda [%s] EXECUTABLE proda prodahttp://www.ebi.ac.uk/goldman-srv/prank/DOC prank [%s] EXECUTABLE tc_generic_method.pl ALN_MODE pairwise OUT_MODE aln PRANK_4_TCOFFEEprankPARAM -method=%s -mode=seq_msa -tmpdir=%s IN_FLAG -infile= OUT_FLAG -outfile= ALN_MODE multiple http://fsa.sourceforge.net/DOC fsa [%s] EXECUTABLE fsa fsaDOC tblastx [%s] PARAM -mode=tblastx_msa OUT_MODE L DOC tblastpx [%s] PARAM -mode=tblastpx_msa em@http://selab.janelia.org/software/consan/DOC consan (sfold) RNA pairwise sequence aligner [%s] EXECUTABLE fasta_seq2consan_aln.pl PARAM -d&bnsp%s&bnsp2>/dev/null sfoldEXECUTABLE RNAplfold ALN_MODE predict SEQ_TYPE RNA http://www.tbi.univie.ac.at/~ivo/RNA/RNAplfoldEXECUTABLE HMMtop SEQ_TYPE PROTEIN www.enzim.hu/hmmtop/hmmtopEXECUTABLE GORIV http://mig.jouy.inra.fr/logiciels/gorIV/gorIVEXECUTABLE wublast.pl EXECUTABLE blastpgp.pl blastpgp.plEXECUTABLE blastcl3 EXECUTABLE blastall ALN_MODE %s ERROR: Sequence %s is not connected 2 %d %dktup2very_fastacdefghiklmnpqrstvwy-ACDEFGHIKLMNPQRSTVWYidscorecscoregeometricslowrandom Error: %s is an unknown distance_matrix_mode [FATAL:%s]fasta_pair_wise COMPUTE PAIRWISE SIMILARITY [dp_mode: %s] [distance_matrix_mode: %s][Similarity Measure: %s] Seq: %s %-*s %-*s identity=%3d%% score=%3dprune_lib_modeNS=%d 2 %d %dt_coffee %s -in Xblosum62mt -outfile=%s -msa_mode iterative_tree_alnt_coffee -other_pg seq_reformat -in %s -action +trim _aln_n5 -output fasta_seq > %s%d #%d %d %5d ! CPU %d consOWlensubsetwinsimcdna Could not find the PDB structure: [FATAL:%s] ERROR: mode overaln not currently supported [FATAL:%s] ERROR: Weight Mode %s is unknown [FATAL:%s]***%d %d rrelax Library Relaxation:[%d] --->[%d] Library Relaxation: Multi_proc [%d] Submit Job Total Relaxation: [%d]--->[%d] Entries THROutput Error: %s is not a sequence [FATAL:%s] pair# 1 2 lib# %d %d pcraw%5d %5d %5d %*s %d %*s PU %d '+BLOCK+'+BLOCK+%5d %5d ERROR: NO IN FILE [FATAL:%s] ANY ERROR: Sequence Error in %s [FATAL:%s] Warning: Could not use PDB: %s Sequence Error in %s [FATAL:%s] ALSMXPRWG ERROR: %s is neither a file nor a method [FATAL:%s] PROTEIN_DNA_subset_ [DEBUG_LIBRARY:aln2constraint_list]Could use a pair of constraints PB: Sequence %s, Residue %d : Cache=%d SHRINK Constraint List [%d element(s)]slow_pair!SEQ_1_TO_NERROR: Wrong Sequence Numbering in %s [FATAL:%s] WARNING:PARSING ERROR #1 (Too many Fields) IN %s AT LINE %d: C=%c n=%d WARNING:PARSING ERROR #2 IN %s (Not enough Fields) AT LINE %d: C=%c ERROR: Seq1=%d (len=%d, name=%s), Seq2=%d (len=%d, name=%s), Res1 %d, Res2 %d ERROR: Library %s, line %d, Field 1: Bad residue numbering (%d)[FATAL:%s] ERROR: Seq1: %d, Seq2 %d, Res1 %d, Res2 %d ERROR: Library %s, line %d, Field 2: Bad residue numbering (%d)[FATAL:%s] PARSING ERROR 3 IN %s AT LINE %d: [%c] [read_constraint_list_file]cp %s faulty_library.tc_libcncn: making artificial lib[%d-%d]%s %s %s%s %s %s%s %s&bnspno_nameADDRESSPROGRAMEP@ ####### Compiling the list of available methods ... (will take a few seconds) ALN_MODESEQ_TYPE ####### Methods For which an Interface is available in T-Coffee You must install the packages yourself when required (use the provided address) Contact us if you need an extra method to be added [%s] ****** Pairwise Sequence Alignment Methods: -------------------------------------------- pairwiseNOT%-*s %-*s [pg: %*s is %s Installed][%s] ****** Pairwise Structural Alignment Methods: ****** Multiple Sequence Alignment Methods: multiple ####### Prediction Methods available to generate Templates ------------------------------------------------------------- All these Methods are supported by T-Coffee, but you HAVE to install them yourself [use the provided address] These methods were selected because they are freeware opensource, easy to install and well supported Contact us if you need an extra method to be added [%s] Warning: incomplete library [%s] # #%d %d%d %d %d %d %dToo Many Fields in List [FATAL/add_list_entry2list]=%e%mPARAM1 %s PARAM2PARAMEXECUTABLE2EXECUTABLE2 %sEXECUTABLEEXECUTABLE %sIN_FLAG2IN_FLAG2 %sIN_FLAGIN_FLAG %sOUT_FLAGOUT_FLAG %sOUT_MODEOUT_MODE %sALN_MODE %sSEQ_TYPE %sWEIGHT %sMATRIXMATRIX %sGOPGOP %dGEPGEP %dMAXIDMAXID %dMINIDMINID %d4dna%s4dnano_methodparam->out=%s param->TCM=%p %s (%s) is not a valid method [FATAL:%s] param->TCM=%pprune WARNING: %s is not part of the sequence dataset param->TCM=%p param->method=%s param->aln_c=%s param->seq_c=%s io->in=%s io->out=%s m_s_ Information: Method %s cannot be applied to [%s vs %s]. Use proba_pair insteadproba_pair_F_ [%d][%d]=>%d [%d][%d]=>%d [%d][%d %d] [%d %d] [%d-%d]=>[%d-%d]sc_eq_conswe_eq_conssc_eq_wePconssc_eq_consPwewb UNKOWN MODE FOR OUTPUT: %s [FATAL] method_log# CONC_MSF_FORMAT_01 %s #---------------------------------------------- #%s [DEBUG_LIBRARY:produce_list] Instruction: %s L FAILED TO EXECUTE:%s [SERIOUS:%s]fAfL ERROR: Unknown out_mode=%s for method[FATAL:%s] Nomirrormirror_sumshrink_bestshrink_worstbestworstconsPwewePcons Method %s: No Suitable Sequences [Type: %s] Multi Core Mode: %d processors: io->CL=%p control->submitF=%p control->retrieveF=%p control->mode=%sProcessed Job Multi Core Mode: %d processors [jobline] Multi Core Mode: %d processors [subset] shadow WARNING: The %s CLEANING MODE DOES NOT EXIST Seq %3d: %5d%-15s:%d pairs (Evaluated matrix), %d pairs in the other (%s) %-15s:%d pairs Acurracy=%.2f%% Sensitiv=%.2f%% /dev/nulljobcellsjoblinesjobs ERROR: The descriptor %s could not be identified as a file or a method.[FATAL] If it is a method file please indicate it with M%s %s [%s] lib_list ERROR: Library %s: binary mode is not any more supported [FATAL:%s] make_test_libmethodstructure ERROR: Wstructure must come before Mmethod or Aaln [FATAL:%s] NO SEQUENCE WAS SPECIFIED[FATAL] READ/MAKE LIBRARIES:[%d] --- Process Method/Library/Aln %s xxx Retrieved %s All Methods Retrieved methodsL%scontrolioparamcontrol->submitFcontrol->retrieveFcontrol->modeparam->methodparam->TCMparam->aln_cparam->seq_cio->outio->inio->CLERROR: print_lib_job2: %s is unknown [FATAL:%s] =%lf%ld DO ANALYSE %4d %s %4d %4d %4d ERROR: AA matrix cannot be masked with mask_list_with_aln_pair%4d PRINT LIST: %d Elements PRINT LIST%s_COMPLIST_TOTAL >#Method %d Compound %15s sp=%.2f sn=%.2f sn2=%.2f >#Combined: T=%d Compound %15s sp=%.2f sn=%.2f sn2=%.2f_DEPTH_ MotifCompound %25s sp: %.2f sn: %.2f sen2: %.2f best: %.2f motif: [%2s] N-motifs %d or_sar options: _ORCL_: Command_line in a file _ROTATE_ : rotate the sar matrix (if each entry is a compound rather than a sequence) _JNIT_ : number cycles of Jacknife _JNSEQ_ : Number of sequences picked up in alignment [0 to keep them all, 10 by default] _JSAR_ : Number of compounds picked up in the SAR matrix [0 to keep them all => default _JRSAR_ : Randomization of the SAR file between each JNIT iteration: S, C, R, SC, SR... (S: seq, C, column, R: residue _JRALN_ : Randomization of the ALN file between each JNIT iteration: S, C, R, SC, SR... (S: seq, C, column, R: residue _NPOS_ : Number of positions used to make the prediction [4 by default] _DEPTH_ : Depth of the motif degenerated alphabet [Default=2] _POSFILE_ : Predefined list of positions in a file%-s sp: %.2f sn: %.2f sn2: %.2f best: %.2f [SEQ] >Tot sp: %.2f sn: %.2f sen2: %.2f best: %.2f N: %d[SEQ] >%-25s sp: %.2f sn: %.2f sen2: %.2f best: %.2f [COMP] >FullTot sp: %.2f sn: %.2f sen2: %.2f best: %.2f N: %d[COMP] >TotSeq sp: %.2f N: %d[SEQ] %c_%s_%s MotifCompound %25s best: %.2f motif: word_MOTIFMODE_regexp P: cons %*d %*d S: %4d [DISPLAY_FULL_POS] P: %s %d %d S: %d [DISPLAY_POS] P: cons %d %d S: %d [DISPLAY_POS]SIMTEST100000_MAXN2_ ERROR: Do not use filed %d in display_prediction T =%d SN=%.2f SP= %.2f Jacknife fromsequence %s [%d] >%-10s CMPSIM: %.2f %d%d%d%d0000001110100101111110010110 %.2ffirstCOMP: %s REF SEQ: %s >%-15s %d %c OVERALL_SIM:%d POSITION_SIM %d %s >%-15s Sp %.2f Sn %.2f Pred %.2f E %.2f N11 %5d SP %.2f SN %.2f SIM %.2f %15s N11 %5d SP %.2f Limit: %d NPRED %d AVGSIM %d SN %.2f SP %.2f TP %d FP %d FN %d_TM_COMP S: %3d %3d %s %20s %2d # SEQ1 S: %3d %3d %s %20s %2d # SEQ2 S: %3d %3d %s %20s %2d # 30_SWTHR__ZSCORE__MAXN1_ ZSCORE: KEEP COL %d SCORE: %f SCORE: %d _MAXN3_ %f n 1: %.2f 0: %.2f%s__METHOD__TARGET__SUBSET__JACK_11_FILTER__DISPLAY_Error: %s is incompatible with the reference alignment [FATAL:%s] Compound %s ; Ntargets %d;%s;npred; %s;%d >%-15s %10s %c Compound_Count:%d primary_predictions: %s Total: %d;%d;%d;_T3__FILTER1_1000000_FILTER2__FILTER3__FILTER4_0.95_QUANT_1_SIMWEIGHT__TRAIN__WEIGHT_0.0>%-10s %d SCORE: %5d SPRED RSPRED: RSPRED: %c: %5.2f SC: %d RSPRED bjoxz MATANALYZE %c %c %d %d %d SCORE: %5d SPRED %d RATIO: %.2f 0.5_THR_PSEQ: %-10s SC: %5d R: %4d PSEQ: %-10s SC: %4d MAX: %4d S: %.2f R: %4d >%s USED_POSITIONS: COL: %.2f RES: %.2f COMP 0.09 >%s %d%d SCORE %.2f C %s [SEQ] _T1_ >%-10s Mode: %s Accuracy: %6.2f E-value: %6.2f Motif: %s >%-10s Mode: %s P: cons %3d SC: %4d>%-25s %-25s Pos %3d ZScore %3d Rscore %3d Activity +: %d -: %d %s %s xSEQ %5d %5d %5d %s %20s %d | COM %5d %5d %5d %s %s %20s %d | POS %4d %4d %4d %c #MSA >%s #MSA %s #MSA >cons #MSA %sSIM: %d %d [%s %s] ID_PREDMODE__POSW__TPOSFILE_RBP2Unknown mode: %s P_current: %d S: %.3f D: %d R:%d R_best: %.3f with %d posscan_POSMODE_matERROR: %s is an unknown _POSMODE_ mode_OUTALN__OUTTREE__JNIT__JNSEQ__JNAR__JRSAR__JRALN_>%d %c Best: %d %d P2: cons %4d %4d [FINAL]R: %.3fTOTPOSCompound %-15s Reactivity %c SAR_SCORE %5d >%20s %20s %c %s Pred: %s Real: %s P: cons %d %d [FINAL]_SARTHRES_>%-15s SC: %.2f E; %.2f %s %s P: cons %4d RS: %4d RC: %5d FC: %4d %4d[FINAL] P: cons %4d RS: %4d RC: %5d FC: %4d %4d CLIST: [COMP_LIST]predictjackloocomploocompposposselftestERROR: %s is an unknown mode of or_sar [FATAL:%s] helpHELPsingle_SARMODE__RSAR__RALN__ROTATE__START__END_ERROR: _START_%d and _END_%d are incompatible with the aln [len=%d][FATAL:%s]ERROR: Alignment and SAR matrix are incompatible [FATAL:%s] PARAMETERS: %s 15_SW__SMINW__SSTART__SMODE_P: %*d S: %4d P: %*d I: %*d %*d Score: %5d L: %2d scan_comp_STH__SEV_ Process: %s ... >%s PPPP: S: %s SC: %d EV: %d NBest: %d W: %s %d >TOT_P: %d %dscan_comp_old Process: %s ... >%s PPPP: %d %d SC: %dS=%dPos %d SEQ %s: %d ABL1PT: %d %4d %5d %5d %5d [%c] [%2d] ALNmaximum depth: %dWARNING %s (%d) and %s (%d) do not have the same length>2 %15s %15s CORR: %.3f EVAL: %5d >2 %15s %15s ANTI: %.3f EVAL: %5d >2 %15s %15s %15s CORR: %.3f EVAL: %5d >2 %15s %15s %15s %15s CORR: %.3f EVAL: %5d >2 %15s %15s %15s %15s ANTI: %.3f EVAL: %5d #=GC SS_consPDB strucRNA Fold_S_Sequeence_R_Profile_G_Genomic_E_Protein Secondary Structure_T_Protein Trans Membrane Structure _U_Unicode and stringsrfoldprfssptmpunicodetemplate_filetemplate_nameseq_namepdb_idA_*_ %s: Template=%s, File=%s@@ TOT Nseq:%d tot_len: %d fold: %d neutral: %d watson: %d CorWC: %d cor: %d Incompatible: %d blosum62mt ERROR: unaligned strings@@ WC Compensated pair: %4d %4d =>[%c%c]@@ Neural Compensated pair: %4d %4d =>@@ WC pair: %4d %4d =>@@ Neutral pair: %4d %4d =>@@ incompatible pair: %4d %4d =>>%s _%s_ %ssimpleclustalwpolarityvasilikyclustalw_dotmake_allcleancov%cpwsim_fragment %s %s >%s %s :T-COFFEE THE TWO cDNAs DO NOT HAVE THE SAME LENGTH [FATAL:get_cdna_seq_sim:%s** %d %d PROTEINDNAwKEEPREMOVE ERROR: +grep [FATAL: %s]SEQCOMMENTNAME ERROR: +grep [FATAL: %s]>%s %s WARNING: Sequence %s does not contain any residue: automatically removed from the set [WARNING:%s]RAW STUFFsarmat2ERROR: %s is an unknown mode of raw_sim ERROR: index (p=%d) loger than aln (l=%d) [FATAL]Unsorted aln in score_aln2score_asciiremovedisplayTemplate %s Unkonwn mode %s for template handling [FATAL:%s]blossum62mtDistance Matrix Computation: Sim %d Min %d Max %d>%s %s %s WARNING: winsim not implemented for cDNA%s_%s%d%s%s%s WARNING: _U_ Template %s Could Not Be Found WARNING: Could Not Fill _F_ (Fold) template for sequence |%s|%d %d%s %d %d WARNING: wrong format in coordinate file (line=%d) WARNING: Seq %s does not belong to the alignment (line %d) WARNING: Illegal coordinates [%s %d %d] (line %d) Warning Missing positions in File %s%s %d %d SEQFILE_SEQFILE_G_ WARNING: _G_ Template %s Could Not Be Found WARNING: _E_ Template %s Could Not Be Found WARNING: _T_ Template %s Could Not Be Found DEBUG_RECONCILIATION [DEBUG_RECONCILIATION:fix_aln_seq] Reconciliation of %s A=Ref_sequence B=New_seq Two different sequences have the same name: %s If %s is a PDBID, Make sure it identifies the right chain (A, B, 1, 2...) Chain number or index must be added to the PDB id (i.e. 1gowA) If You want to use %s anyway, rename it with a non-PDB identifier such as seq_%s Could not find Sequence %s [FATAL]>%s_%d_%d Repeat_%d_%dagct-[Best Overlap: %d Residues] W: %.4f>%s aggggg fasta_aln2fasta_aln_unique_name.pl %s > %s Warning: Sequence %s is duplicated in file %s. The sequence will be renamed>seq1 %shmmtop.archfasta_seq2hmmtop_fasta.pl -in=%s -out=%s -arch=%s/%s -psv=%s/%shmmtop.psv H: %3d I: %3d O: %3d P: %c Error: Attempt to stack incompatible aln and aligned sequence[FATAL] %s%s%c%s_QUERY Unappropriate format for the alignment [%s:FATAL]AGCTUNRYMKSWHBVD-agctunrymkswhbvdEBIpdb_db_4_TCOFFEEprot_db_4_TCOFFEEuniprotprot_min_simprot_min_covprot_max_covpdb_min_simpdb_max_simpdb_min_covpdb_max_covRNAalifold %s >%s 2>/dev/null %s Residue [%c %d, %c %d] line %d seq %d ERROR: Mixed seq_type not supported for external methods [FATAL:%s] #TC_LINE_SEPARATOR >%s %s%sTARGET_SEQ_NAME: N coding=%d ERROR: Sequence %s has different length in the alignment and in the structure Alignment [FATAL:%s] conWARNING: Could Not Use the Consensus Sequence [WARNING:%s] %c%c#%c ERROR: %s is not in your MSA [FATAL: %s] Warning: probabilistic_rm_aa, pos out of range [%s] sim1-.#*~MID_EXON_FACTORfsa2fsa1 %s %s ERROR: Comparing unaligned sequences [FATAL:%s] MotifCompound %d pred: %.2f motif: [%s]-SCORE: %d %2d P: %d S:%.3f Delta= %d R: %3f P: XXXX P: XXXXX A=%d / %d%4d WARNING: Illegal coordinates in extract_block start=%d end=%d len=%d [Note : [start-end[, with [1...n] %d-%d WARNING: Illegal coordinates in extract_pos_list [%s]sim3gap1cov1logidsarmat WARNING: _P_ Template |%s| Could Not Be Found WARNING: _P_ Template |%s| Could Not be Used for Sequence |%s|: Structure Not Found WARNING: _P_ Template %s Could Not be Used for Sequence %s: Similarity too low [%d, Min=%d] WARNING: If you want to include this sequence in anycase, please use the -pdb_minsim=%d flag WARNING: _P_ Template |%s| Could Not be Used for Sequence |%s|: Coverage too low [%d, Min=%d] WARNING: If you want to include this sequence in anycase, please use the -pdb_mincov=%d flag case_%c_printstat>%s S=%c sp=%6.2f sn=%6.2f sen2=%6.2f best=%6.2f >TOT S=%c sp=%6.2f sn=%6.2f re=%6.2f best=%6.2f printalnnumberunalign2@@ Seq: %s Overalp: %.2f Al1: %.2f Al2: %.2f @@ Seq: Tot Overalp: %.2f usegapstatps%s is an unknown:sequence [FATAL]>%s %s [i=%d] %s # %c %4d LogOdd: %6.2f Pos: %5d E-Val: %9.2f#average conservation: %.2f ERROR: file <%s> does not exist [FATAL:%s] ERROR IN ALN CAT: DIFFERENT NSEQ SEQ2MSA_WEIGHTpwsim ERROR: %s is not a valid mode for weight computation [FATAL:%s]%s %s -i %s -w %s%s %s -w %s%*s %f TRIM: 1-Chosen Sequences ADD %s (set score: %.2f %%) 2-Informations: multiple_alnpairwise_aln Use...........: %s weight_mode...: %s percent_weight: %.2f%% (max=%d%%) n_seq.........: %d reduction.....: %d%% of original set WARNING: trimseq: Nseq(N) max_val=100%% [Automatic reset] SIMILARITY MATRIX %15s Vs %15s : %3.2f %% id List of sequences with their closest removed neighbors %s: %s TRIM seq Informations: cluster_mode..: %s sim_mode......: %s lower_id_bound: %.2f%% upper_id_bound: %.2f%% nseq_kept.....: %d (out of %d) BottomTop Trim_direction: From %s TRIM Informations: trimTC: computation of an Approximate MSA [DONE] # ERROR: trimTC Indicate the maximum number of sequences Nnseq OR the maximum average similarity of the chosen sequencesSx EX: +trimTC S20 OR +trimTC N5 [FATAL:%s]t_coffee%s -infile %s -trim -trimfile=%s -split_score_thres %d -convert -iterate 0 -seq_to_keep %s -infile %s -trim -trimfile=%s -split_score_thres %d -convert -iterate 0 TrimTC: Sim %d Nseq %d %s%s.%s.%s_fileSIMILARITY_MATRIX_FORMAT_01SIMILARITY_MATRIXSimilarity Matrix Computation: _memory_%ld_%s__%%_n_N_F_O_f_min_cov_Tseq_ FORCED KEEP %s REMOVED OUTLAYER: %3d %% avg similarity with remaining sequences [Seq %s]_I_i_C_cERROR: %s is not a valid sequence_seq_tmpname_%d WARNING: _R_ Template %s Could Not Be Found remove_template_fileno_templateMODE_SSPGORNew_KS.267.seqSCRIPT_tc_generic_method.pl@mode#ssp_template@seq#%s/%s@obs#%s/%s@cache#%s@type#_E_New_KS.267.obsPSISSPPSIGORNCBIblastcl3LOCALSCRIPT_tc_generic_method.pl@mode#psissp_template@seq#%s/%s@obs#%s/%s@cache#%s@minid#%d@maxid#%d@mincov#%d@server#%s@type#_E_TMSCRIPT_tc_generic_method.pl@mode#tm_template@arch#%s/%s@psv#%s/%s@type#_T_PSITMSCRIPT_tc_generic_method.pl@mode#psitm_template@arch#%s/%s@psv#%s/%s@cache#%s@minid#%d@maxid#%d@mincov#%d@server#%s@type#_T_PSIBLASTSCRIPT_tc_generic_method.pl@mode#psiprofile_template@database#%s@method#psiblast@cache#%s@minid#%d@maxid#%d@mincov#%d@server#%s@type#_R_BLASTSCRIPT_tc_generic_method.pl@mode#profile_template@database#%s@method#blastp@cache#%s@minid#%d@maxid#%d@mincov#%d@server#%s@type#_R_EXPRESSOSCRIPT_tc_generic_method.pl@mode#pdb_template@database#%s@method#blastn@cache#%s@minid#%d@maxid#%d@mincov#%d@server#%s@type#_P_SCRIPT_tc_generic_method.pl@mode#pdb_template@database#%s@method#blastp@cache#%s@minid#%d@maxid#%d@mincov#%d@server#%s@type#_P_RCOFFEE%s %s SCRIPT_tc_generic_method.pl@mode#calc_rna_template@pdbfile#%s@cache#%s@type#_F_SELF_ Unkown mode for Template [FATAL:%s] _P_ _F_ _S_ _R_ _G_ _T_ _E_ _U_ fasta_seqTemplate_ListSCRIPT_templates@type#%s%s_%s%d.template_list%s%s_%s%d.%d.template_list -@ ------ Fetch %Templates [Multi Core Mode %d CPUs] %s -infile=%s -outfile=%s -tmpdir=%s%s -infile=%s -outfile=%swebblast.pl WARNING: Could not Run %s to find templates[%s] %s -other_pg %s -infile=%s -outfile=%s -tmpdir=%s%s -other_pg %s -infile=%s -outfile=%s%c%c%c%c%c%c%c%c[DEBUG_RECONCILIATION:add_sequence] %s %s WARNING: DISCREPANCY:%s in [%s] and [%s] cfasta_pair_wiseIMPOSSIBLE TO RECONCILIATE SOME SEQUENCES[FATAL:%s] ERROR: %s is duplicated in file %s[FATAL] [ERROR:expand_number_aln] Using as a master an expanded aln (%d %d) [FATAL:%s]%s.prf OUTPUT %s dy ERROR in read_array_size: trying to read the size of a malloced block write_size is a deprecated function [Warning:%s] # %s Memory Usage: Current= %.3f Mb, Max= %.3f Mb %s Requires Too Much Memory: %d Megabytes [FATAL:%s] Tip: Rerun your Job with a smaller dataset FAILED TO ALLOCATE REQUIRED MEMORY (vmalloc) FAILED TO ALLOCATE REQUIRED MEMORY (vcalloc) FAILED TO ALLOCATE REQUIRED MEMORY (realloc) ERROR: Unknown mode for aln_stack **************************************************************** DEBUG MODE [Rebuild For Better Performances] ***************************************************************** Faulty Allocation: Size=%d Access=%d Unknown MODE for allocate_hasch_entry %dAlignDoneDONEfinished( :%7.5f, :%7.5f) :%7.5f)TRICHOTOMYclustalw -infile=%s -newtree=%s -tree %s Error: make_nj_tree, must provide an alignment or a distance matrix [FATAL:%s]idmat ERROR: non empty heap in upgma [FATAL] WARNING RECAPITULATION: %d Warning%c [PROGRAM: %s] **WARNING: %3d** %s # Command Line: %s [PROGRAM:%s] # TERMINATION STATUS: FAILURE [PROGRAM: %s] # TERMINATION STATUS: SUCCESS [PROGRAM: %s] # Results Produced with %s (%s) # %s is available from %s # %s Sp: %.3f Sn: %.3f Sen2: %.3f AC: %.3f NULL RETURNED ERROR: You must set %s %s %s [%s:FATAL] [%s:WARNING] 0123456789.-+ Pointer change in vfgets...HERE: NO_WARNING_4_TCOFFEE ,;DEBUG_SRANDUu [%s][TOT=%5d][%3d %%][ELAPSED TIME: %4d sec.] [%s][TOT=%5d][%3d %%][ELAPSED TIME: %4d sec.]# %s CPU Usage: %d millisec abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-+12345678901234567890xabcdefABCDEF1234567890.e+-Realloc %s %s delta=%d %d %d__ ERROR: Negative Factorial [FATAL:%s] ERROR: M chosses N out of bounds ( M>N) [FATAL:%s] ERROR: M chosses N out of bounds ( N>50). Use log space [FATAL:%s] ERROR: factorial log out of bounds (%d %d) [FATAL:%s] You must set the variable %s [FATAL] ERROR: Could not fork processes. Run again with -multi_core=no ERROR PID=%d superior to MAX_N_PID=%d [FATAL]Splice_out_seg out of bound: Length %d seg: [%d %d] [splice_out_seg::util.c][FATAL:%s] ERROR: translate_string function: IN alphabet (%s) must have the same size as OUT alphabet (%s) [FATAL:%s] DEBUG_BLASTDEBUG_MALNDEBUG_LIBRARYDEBUG_FUGUEDEBUG_REFORMATDEBUG_TMP_FILEDEBUG_SEQ_REFORMATDIR_4_TCOFFEE=%sCACHE_4_TCOFFEE=%sTMP_4_TCOFFEE=%sPLUGINS_4_TCOFFEE=%sMCOFFEE_4_TCOFFEE=%sMETHODS_4_TCOFFEE=%sHOME_4_TCOFFEETMPTEMPERROR: Could not set a HOME directory. Set any of the following environement variables to some suitable location: HOME, HOME_4_TCOFFEE, TMP or TEMP [FATAL:%s] WARNING: The Home directory was set to %s ERROR: too many parameters, recompile with MAX_N_PARAM set at a higher velue [FATAL:%s] WARNING: Could not UNSET the value of %s. You must SET the value before it is usedcl_emailemailEMAIL_4_TCOFFEEEMAIL%s %dstdinstdoutstderrSTDINSTDOUTSTDERReuclidian~NONO_FILEno_file Command %s Failed to produce File %s UNIQUE_DIR_4_TCOFFEE=;, ######### RUN_REPORT START ###### ######### PROGRAM_VERSION START ###### %s, %s ######### PROGRAM_VERSION END ###### ######### COMMAND_LINE START ###### ######### COMMAND_LINE END ###### ######### RUN_REPORT END ###### SCRATCH_FILEsh-c/bin/shmkdir %s ERROR: Could Not Create Directory %s [FATAL:%s]DIR_4_TCOFFEE%s/.t_coffee ************************************************************************************************* * IMPORTANT: Please Read Carefuly * * * * ------------------------------FIRST RUN CONFIGURATION---------------------------------------- * * Some commands of T-Coffee use the EBI BLAST webservices. The EBI requires a valid E-mail * * address for this service to be used (check: www.ebi.ac.uk/Tools/webservices/). * * T-Coffee will keep it for further run but only to be used with the EBI webservices. * * !!!!!!!!!!!!!!!!!! Your Email will not be sent to us, ONLY to the EBI !!!!!!!!!!!!!!!!!!!!!!!!* * -blast_server=EBI is the default mode of T-Coffee. If you do NOT want to provide your E-mail * * you can use: * * -blast_server=NCBI (NCBI netblast) * * -blast_server=LOCAL Local NCBI BLAST * *The address you provide can be changed anytime by editing the file: * * %s/t_coffee_env * If you are behind a firewall, you must enter your proxy address to use webservices * * This address is usualy something like: http://some.place.here:8080 * * The proxy you will provide can be changed anytime by editing the file: * * %s/t_coffee_env METHODS_4_TCOFFEE%s/methods/MCOFFEE_4_TCOFFEE%s/mcoffee/CACHE_4_TCOFFEE%s/cache/rm -r %swhich %s>%s 2>/dev/null.exe%s.exe************** %s is missing from your system. T-Coffee will make an attempt to install it. install.pl %s -plugins=%s -clean #***************************************************************** #ERROR [FATAL:%s] #WARNING [%s] # The Program %s Needed by %s Could not be found # If %s is installed on your system: # -Make sure %s is in your $path: # If %s is NOT installed obtain a copy from: # %s # # # and install it manualy ****************************************************************** http://www.gnu.org/software/wget/wgetwget %s -O%s >/dev/null 2>/dev/nullhttp://curl.haxx.se/curlcurl %s -o%s >/dev/null 2>/dev/nullERROR: Impossible to fectch external file: Neither wget nor curl is installed on your system [FATAL:%s] extract_from_pdbtc_generic_methodinstallDEBUG_PERL | | ; ;install.plunpack_shell,//rm %s [DEBUG_TMP_FILE:%s] TEMPORARY CACHE HAS NOT Been Removed: %s useignoreupdate%s/localmv %s* %srmdir %serror_report.%sNO_ERROR_REPORT_4_TCOFFEE ****************************************************************** * Job NOT Completed:[%s, %s] * Please CHECK: * -1 The format of your Input Files * -2 The parameters * -3 The use of special characters in sequence names: * (@, |, %%...) * -4 The Online Doc (%s) * -5 Send the file %s to:cedric.notredame@europe.com * %s * If you run T-Coffee over the WEB: * Windows Cut and Paste is sometimes erratic and * it can loose carriage returns. If you suspect this, * try to cut and paste through an intermediate application * (word pad) and inspect the results * CONFIDENTIALITY: * The File %s may contain your personnal DATA * Remove ALL confidential DATA from this file BEFORE sending it ****************************************************************** [ERROR] Attempt to use the Null Function [FATAL:%s]StderrStdoutStdinacr COULD NOT READ %s New name: FORCED EXIT (NON INTERACTIVE MODE) DEBUGca COULD NOT Append anything to %s CANNOT WRITE %s READWRITE FORCED EXIT (NON INTERACTIVE MODE): %s %s Warning from util.c:hasch_file: No File [FATAL:%s] ls -l %s%s%s >%s 2>/dev/null######### OUTFILE: %s START ###### ######### OUTFILE: %s END ###### IIII INPUT File Type= %10s Format= %10s Name= %s | NOT PRODUCED [WARNING:%s:%s] #### File Type= %10s Format= %10s Name= %s #### File Type= %10s Format= %10s Name= %s | NOT PRODUCED [WARNING:%s:%s] perl_script Unpack Script %s #!/usr/bin/env perl%s %s chmod u+x %sEndListRUN_LOCAL_SCRIPT WARNING: Local Copy of %s detected [Debug mode]. DELETE this file ./%s WARNING: Running external copy of %s [Debug mode]. cp `which %s` %s; chmod u+x %swww.google.comEMAIL_4_TCOFFEE=%sEMAIL=%sHTTP_proxy_4_TCOFFEE=%sHTTP_proxy=%shttp_proxy=%sHTTP_PROXY=%sALL_proxy=%sALL_PROXY=%sall_proxy=%scl_proxyhttp_proxy_4_TCOFFEEproxyHTTP_proxyhttp_proxyHTTP_PROXYALL_proxyall_proxyALL_PROXYPATHPATH=%s:%slist_file_%dls -1 %s>%s 2>/dev/nulluname > %scygwinlinuxosxdarwinTMP_4_TCOFFEEwindows%s/tmp%d%dvtmpnam_prefixe1vtmpnam_prefixe2%s%d%s%d%d_%s/%s%d_TCtmp%sPLUGINS_4_TCOFFEE%s/plugins/%s/pluginsPLUGINS_4_TCOFFEE=no%s/mafftMAFFT_BINARIESMAFFT_BINARIES=%sCLUSTALW_4_TCOFFEECLUSTALW2_4_TCOFFEEFUGUE_4_TCOFFEETMALIGN_4_TCOFFEESAP_4_TCOFFEEDALILITEc_4_TCOFFEEMUSTANG_4_TCOFFEENCBIBLAST_4_TCOFFEEMAFFT_4_TCOFFEEDIALIGNTX_4_TCOFFEEPOA_4_TCOFFEEPROBCONS_4_TCOFFEEPROBCONSRNA_4_TCOFFEETCOFFEE_4_TCOFFEEPCMA_4_TCOFFEEKALIGN_4_TCOFFEEAMAP_4_TCOFFEEPRODA_4_TCOFFEECONSAN_4_TCOFFEERNAPlfold_4_TCOFFEEHMMtop_4_TCOFFEEGOR4_4_TCOFFEE *:, ERROR %dCLOSE THE FILE String=%s, start=%d end=%dWrong End in crop String [FATAL] BAD REQUEST: Number of strings=%d, expected number=%d[FATAL/util.c] ORB in print_array_char [FATAL] %s IS NOT A PARAMETER OF %s [FATAL/%s %s] FLFPARAMETER : %s USAGE : %s MAX_N_VALUES: %d DEFAULT : %s OR %s (when flag set) anyRANGE : [%s]...[%s] TYPE : %s WRONG PARAMETER DEFINITION %s Must Start with a dash Parameter %s is not optional Param %s needs a value [FATAL/%s]PARAM %s: File %s does not exist [FATAL/%s] %s out of range [%d %d] [FATAL/%s] %s out of range [%s: %s out of range [%f %f] [FATAL/%s] %-15s %s [%d] %s %d %f %d * Full Log of [%s, %s] in File [%s]curl %s -O%s >/dev/null 2>/dev/nullENV_4_TCOFFEE%s/t_coffee_envt_coffee_envenv > %s ### EMAIL Input, Enter your email and type Return: You have entered:%s Is this correct ([Y] or N)?: Unknown mode for Email [FATAL:%s] ERROR: Could not use provided proxy. Provide proxy via the -email flag [FATAL:%s] ### Tip: If you work from home (ADSL) you probably do no need a proxy. ### Tip: The proxy is the address you may have had to enter in your navigator. ### Proxy Input, Enter your proxy and type Return (Type Return if you do not need a proxy): (No Proxy Needed) You have entered:[%s]%s Is this correct ([Y] or N)?: http_proxy_4_TCOFFEE=%sUnknown mode for Proxy [FATAL:%s(%s)] ERROR: You do not seem to have an active Internet Connection. Check your Proxy Setting [proxy:%s][%s:SERIOUS] *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * * Your Internet Connection Does not seem to be available. You may need to reconfigure your Proxy NO Proxy Set* ------- Current Proxy Value: [%s] * www.tcoffee.org/Packages/%s/%s.versionVersion_%f Update Status: outdated Your version of %s is not up to date Download the latest version %.2f with the following command: wget %s/%s_distribution_Version_%.2f.tar.gz Update Status: beta-release Your are using a beta-release of %s(%s) Update Status: uptodate Program %s(%s) is up to date n_coreNUMBER_OF_PROCESSORS_4_TCOFFEENUMBER_OF_PROCESSORS/proc/cpuinfogrep "^processor" /proc/cpuinfo | wc -l>%s [DEBUG_TMP_FILE:%s] TEMPORARY FILES HAVE NOT Been Removed:PRINT_TMPFILE_NAMEYES %s [EXISTS:%s]grep %s %s > %s()'perl -e '$s="%s";$x=($s=~/%s/);$x=($x==1)?1:0;print $x;'>%sCOM: %s pwd > %s quantile [] Splits your data in two according to the quantile Returns the top quantile or the bottom quantile Data must be in with two fields/line: Field1=index, Field2=value 1 27 2 46 3 5 ... Value can either be integer or floatbottom Quantile %.2f T= %d Out of N= %d entries tcoffee_test_seq.pep-seqTCIT_%d -seq tcoffee_test_seq.pep -quiet -no_error_report>A thecat >B thecat rm %s.*rec_sum.plcount.plprocess_list.plmake_license.plCCsed.scriptmsa2bootstrap.plt_coffee_dpat_coffee_dpa2tc_generic_method.plgeneric_method.tc_methodclustalw_method.tc_methodclean_cache.plmoccadalilite.plwublast.plRNAplfold2tclib.plfasta_seq2RNAplfold_templatefile.plfasta_seq2hmmtop_fasta.plfasta_seq2consan_aln.plclustalw_aln2fasta_aln.plmsf_aln2fasta_aln.plblast_aln2fasta_aln.plblast_xml2fasta_aln.plfasta_aln2fasta_aln_unique_name.plnewick2name_list.plexcel2fasta.plany_file2unix_file.pluse File::Copy; use Env qw(HOST); use Env qw(HOME); use Env qw(USER); $x_field=0; $y_field=1; $interval=0; $file="stdin"; $print_avg=1; $print_sd=0; $print_sum=0; $print_n=0; foreach $value ( @ARGV) { if ($value ne $ARGV[$np]) { ; } elsif($value eq "-print_all") { $print_sd=$print_avg=$print_n=$print_sum=1; $np++; } elsif($value eq "-print_sum") { $print_sum=1; $print_avg=0; $np++; } elsif($value eq "-print_n") { $print_n=1; $print_avg=0; $np++; } elsif($value eq "-print_avg") { $print_avg=1; $print_avg=0; $np++; } elsif($value eq "-sd") { $print_sd=1; $print_avg=0; $np++; } elsif($value eq "-h") { $header=1; $np++; } elsif ($value eq "-i") { $interval= $ARGV[++$np]; $np++; } elsif ($value eq "-r") { $min= $ARGV[++$np]; $max= $ARGV[++$np]; $np++; } elsif ($value eq "-x") { $x_field= $ARGV[++$np]-1; $np++; } elsif ($value eq "-y") { while ($ARGV[$np+1] && !($ARGV[$np+1]=~/\-/)) { $y_field[$nyf++]=$ARGV[++$np]-1; $y_field_set=1; } $np++; } elsif ($value eq "-file") { $file= $ARGV[++$np]; $file_set=1; $np++; } elsif ( $value eq "h" || $value eq "-h" || $value eq "-H" || $value eq "-help" || $value eq "help") { print STDOUT "data_analyse: Analyse and discretization of data\n"; print STDOUT " -file: ,.\n"; print STDOUT " -x: ,...............\n"; print STDOUT " -y: ,...............\n"; print STDOUT " -i:,...............\n"; print STDOUT " -i:<0:only one interval>\n"; print STDOUT " -r:\n"; print STDOUT " -sd: print standard deviation on the Y"; print STDOUT " -h : print column header \n"; exit (0); } elsif ($value=~/-/) { print "$value is not a valid FLAG[FATAL]\n"; exit (0); } elsif ($list eq "") { $file=$ARGV[$np]; $np++; } } if ($file eq "stdin") { $remove_file=1; $file="tmp$$"; open (F, ">$file"); while () { print F $_; } close (F); ;} open(F,$file); if ($interval) { $interval_size=($max-$min)/$interval; } while () { $line=$_; if (!/\S/){next;} @list=($line=~/(\S+)/g); if ($interval==0){$bin=0;} else{$bin=int (($list[$x_field]-$min)/($interval_size));} if ($bin && $bin==$interval){$bin--;} for ( $a=0; $a<$nyf; $a++) { $sum{$a}{$bin}+=$list[$y_field[$a]]; $sum2{$a}{$bin}+=$list[$y_field[$a]]*$list[$y_field[$a]]; $n{$a}{$bin}++; } } if (!$interval){$interval=1;} for ( $a=0; $a<$interval; $a++) { printf ( "%3d %3d ", $interval_size*$a, $interval_size*($a+1)); for ( $b=0; $b<$nyf; $b++) { $i=$interval*$a; if ( $n{$b}{$a}==0) { $avg=0; $sd=0; } else { $avg=$sum{$b}{$a}/$n{$b}{$a}; $sd=sqrt($sum2{$b}{$a}*$n{$b}{$a}-$sum{$b}{$a}*$sum{$b}{$a})/($n{$b}{$a}*$n{$b}{$a}); } if ($print_n) {printf "%10.4f ", $n{$b}{$a};} if ($print_sum){printf "%10.4f ", $sum{$b}{$a};} if ($print_avg){printf "%10.4f ", $avg} if ($print_sd) {printf "%10.4f ", $sd;} } printf ("\n"); } if ( $remove_file){unlink $file;} use File::Copy; use Env qw(HOST); use Env qw(HOME); use Env qw(USER); foreach $v (@ARGV){$cl.=$v;} if ( $cl=~/-k(\d+)/){$k=$1;} else {$k=1;} if ( $cl=~/-w(\d+)/){$w=$1;} else {$w=-1;} if ( $cl=~/-p(\d+)/){$p=$1;} else {$p=-1;} while () { @l=($_=~/(\S+)/g); $v=$l[$k-1]; if ( !$h{$v}){@ll=($v, @ll);} if ( $w==-1) {$h{$v}++;} else {$h{$v}+=$l[$w-1];} if ($p!=-1){$print{$v}=$l[$p-1];} } foreach $v (@ll) { print "$v $print{$v} $h{$v}\n"; } use Env qw(HOST); use Env qw(HOME); use Env qw(USER); $random_tag=int (rand 10000)+1; $unique_prefix="$$.$HOST.$random_tag"; $queue="distillery.and.mid"; $monitor=0; $stderr_file="/dev/null"; $stdio_file="/dev/null"; $log_file="/dev/null"; $pause_time=0; $max_sub_jobs=60; $min_sub_jobs=30; $output_all=0; $var='\$'; foreach $value ( @ARGV) { if ($value ne $ARGV[$np]) { ; } elsif ($value eq "-max_sub_jobs") { $max_sub_jobs= $ARGV[++$np]; $np++; } elsif ($value eq "-min_sub_jobs" ) { $min_sub_jobs= $ARGV[++$np]; $np++; } elsif ($value eq "-para") { $para=1; $monitor=1; $np++; } elsif ($value eq "-monitor") { $monitor=1; $np++; } elsif ($value eq "-no_monitor") { $monitor=0; $np++; } elsif ($value eq "-queue") { $queue=$ARGV[++$np]; $np++; } elsif ($value eq "-stderr_file") { $stderr_file=$ARGV[++$np]; $np++; } elsif ($value eq "-stdio_file") { $stdio_file=$ARGV[++$np]; $np++; } elsif ($value eq "-output_all") { $output_all=1; $np++; } elsif ($value eq "-pause") { $pause_time=$ARGV[++$np]; $np++; } elsif ($value eq "-log") { $log=1; if ($ARGV[$np+1]=~/\-\S+/) { $log_file="stderr"; } else { $log_file=$ARGV[++$np]; ++$np; } } elsif ( $value eq "-com") { if (!$ARGV[$np+1]=~/^\'/) { $com=$ARGV[++$np];} else {$com=$ARGV[++$np];} $np++; } elsif ( $value eq "-check") { if (!$ARGV[$np+1]=~/^\'/) { $check=$ARGV[++$np];} else {$check=$ARGV[++$np];} $np++; } elsif ($com eq "") { $com_set=1; $com=$ARGV[$np]; $np++; } elsif ($list eq "") { $list_set=1; $list=$ARGV[$np]; $np++; } elsif ( $var_set eq "") { $var_set=1; $var=$ARGV[$np]; $np++; } } if ( $com eq ""){print "You Need to Provide a Command [FATAL]\n"; die; } if ($list_set==0) { $x= int (rand 100000)+1; $tmp_file_name="tmp_file_$x"; open ( TMP, ">$tmp_file_name"); while () { print TMP $_; } close (TMP); open (F, $tmp_file_name); } else { open (F, $list); } if ($para==0) { @tc_list= ; close (F); foreach $val(@tc_list) { $loc_com=$com; if ($check){$loc_check=$check;} @i_val=($val=~/([^\s]+)/g); if ( $#i_val==0) { if ($check){$loc_check=~s/$var/$i_val[0]/g;} $loc_com=~s/$var/$i_val[0]/g; } else { for ($n=1; $n<=$#i_val+1;$n++ ) { $sub="$var$n"; $loc_com=~s/$sub/$i_val[$n-1]/g; if ($check){$loc_check=~s/$var/$i_val[0]/g;} } } if ( $check && -e $loc_check) { print STDERR "skipping $loc_com...\n"; } else { system "$loc_com"; } } exit; } elsif ($para==1) { print STDERR "do parallel execution of: \"$com $list\"\n"; if ($log==1) { if ($log_file eq "stdout" || $log_file eq "stderr" ) { $log_file=""; } else { system "echo LOG FILE> $log_file"; } } else { open ( OUT, ">/dev/null"); } $id=0; $n_sub=0; while ($val=) { $job_log[$id]="$HOME/tmp/$unique_prefix.$id.log_file"; $job=$unique_prefix."_$id"; open (JOB, ">$job"); $loc_com=$com; chop $val; $loc_com=~s/\$/$val/g; print JOB "#!/bin/csh\n"; print JOB "#\$ -cwd\n"; print JOB "#\$ -N $unique_prefix\n"; if ($queue && !($queue eq " ")) {print JOB "#\$ -l $queue\n";} print JOB "#\n"; print JOB "$loc_com\n"; print JOB "echo FINISHED >> $job_log[$id]\n"; print JOB "pwd\n"; close (JOB); if ( $output_all==1) { system "qsub $job > $unique_prefix"; } else {system "qsub $job -e $stderr_file -o $stdio_file >$unique_prefix"; } print STDERR "$id: $output_all\n"; $n_sub++; if ( $max_sub_jobs && $n_sub==$max_sub_jobs) { $n_sub=monitor_process($min_sub_jobs,@job_log); } unlink $unique_prefix; sleep $pause_time; $id++; } close (OUT); close (F); print STDERR "Your $id Jobs Have Been Submited (NAME=$unique_prefix)\n"; monitor_process (0, @job_log); foreach $file(@job_log) {if (-e $file) {unlink($file);}} } sub monitor_process ( @job_list) { my (@job_list)=@_; my $min_sub_jobs=shift (@job_list); my $n_sub_jobs; my $finished; my $n=0; $n_sub_jobs=-1; $finished=0; print STDERR "\nMonitor Batch: [$min_sub_jobs]"; while (!$finished && (($n_sub_jobs>$min_sub_jobs)|| $n_sub_jobs==-1) ) { $finished=1; $n_sub_jobs=0; $n=0; foreach $file (@job_list) { if (-e $file){;} else { $finished=0; $n_sub_jobs++; } } system "sleep 1"; } return $n_sub_jobs; } if ($tmp_file_name){unlink($tmp_file_name);} foreach ($np=0; $np<=$#ARGV; $np++) { $value=$ARGV[$np]; if ($value eq "-file") { $file= $ARGV[++$np]; } elsif ($value eq "-type") { $type= $ARGV[++$np]; } elsif ($value eq "-institute") { $institute= $ARGV[++$np]; } elsif ($value eq "-author") { $author= $ARGV[++$np]; } elsif ($value eq "-date") { $date= $ARGV[++$np]; } elsif ($value eq "-program") { $program= $ARGV[++$np]; } elsif ($value eq "-email") { $email= $ARGV[++$np]; } else { print "$value is an unkown argument[FATAL]\n"; exit (1); } } open F, $file || die; print $INSTITUTE; if ( $type eq "c"){print "/*********************************COPYRIGHT NOTICE**********************************/\n";} if ( $type eq "perl"){print "#################################COPYRIGHT NOTICE#################################/\n";} if ( $type eq "txt"){print "----------------------------------COPYRIGHT NOTICE---------------------------------/\n";} while () { s/\$INSTITUTE/$institute/g; s/\$AUTHOR/$author/g; s/\$DATE/$date/g; s/\$PROGRAM/$program/g; s/\$EMAIL/$email/g; if ( $type eq "txt"){print $_;} elsif ($type eq "c"){chop $_; print "\/*$_*\/\n";} elsif ($type eq "perl"){print "\#$_";} } close (F); if ( $type eq "c"){print "/*********************************COPYRIGHT NOTICE**********************************/\n";} if ( $type eq "perl"){print "#################################COPYRIGHT NOTICE#################################/\n";} if ( $type eq "txt"){print "----------------------------------COPYRIGHT NOTICE---------------------------------/\n";} while (<>) { s/\=cc/123456789/g; s/\bcc/\$\(CC\)/g; s/123456789/\=cc/g; print $_; } $version="1.00"; $rseed= int(rand(100000))+1; if ( $#ARGV==-1) { print "msa2bootstrap -i -input -n -o -tmode -dmode -alignpg -rtree -stype -recompute -system "; print "\n\t-i: input file, can be sequneces, msa, matrix, trees, type is specified via -input"; print "\n\t-input: Type of input data"; print "\n\t\tmsa: msa in fasta format"; print "\n\t\tseq: compute an msa with -alignpg"; print "\n\t\tmatrix: phylipp distance matrix fed directly to method -tmode [caveat: tmode=nj or upgma]"; print "\n\t\ttree: list of newick trees directly fed to consence in order to generate a bootstraped tree"; print "\n\t-n: number of bootstrap replicates"; print "\n\t-o: name of the output tree. Files are not overwritten. Use -recompute to overwrite existing file"; print "\n\t-tmode: tree mode: nj|upgma|parsimony|ml"; print "\n\t-dmode: distance mode"; print "\n\t-alignpg: program for aligning sequences (t_coffee=default)"; print "\n\t-rtree: replicate tree file (default: no file)"; print "\n\t-rmsa: replicate msa file (default: no file)"; print "\n\t-rmat: replicate matrix file (default: no file)"; print "\n\t-stype: sequence type: protein, dna or cdna"; print "\n\t-recompute: force files to be overwritten"; print "\n\t-system: cygwin|unix"; &my_exit (EXIT_FAILURE); } foreach $arg (@ARGV){$command.="$arg ";} print "CLINE: $command\n"; $threshold=100; $trim_msa=0; $stype="prot"; print "msa2bootstrap "; $system="cygwin"; if(($command=~/\-system (\S+)/)) { $system=$1; if ( $system eq "cygwin") { $exec_extension=".exe"; } elsif ( $system eq "unix") { $exec_extension=""; print "system=Unix";die; } else { print "msa2boostrap: -system=$system is an unknown mode [FATAL]\n"; die; } print "-system $system "; } if(($command=~/\-stype (\S+)/)) { $stype=$1; } print "-stype=$stype "; if(($command=~/\-i (\S+)/)) { $msa=$1; print "-i $msa "; } if(($command=~/\-rtree (\S+)/)) { $rtree=$1; print "-rtree=$rtree "; } if(($command=~/\-rmsa (\S+)/)) { $rmsa=$1; } if(($command=~/\-rmat (\S+)/)) { $rmat=$1; } $input="seq"; if(($command=~/\-input (\S+)/)) { $input=$1; } print "-input=$input "; $dmode="kimura"; if(($command=~/\-dmode (\S+)/)) { $dmode=$1; } print "-dmode=$dmode "; $alignpg="muscle"; if(($command=~/\-alignpg (\S+)/)) { $alignpg=$1; } print "-alignpg=$dmode "; $tmode="nj"; if(($command=~/\-tmode (\S+)/)) { $tmode=$1; } print "-tmode=$tmode "; $recompute=0; if(($command=~/\-recompute/)) { $recompute=1; print "-recompute "; } $out=$msa; $out=~s/\..*//; $out.=".bph"; if(($command=~/\-o (\S+)/)) { $out=$1; } print "-out=$out "; if (-e $out && !$recompute) { print "\nNo Computation Required $out already exists\n"; &my_exit (EXIT_SUCCESS); } $n=100; if(($command=~/\-n (\d+)/)) { $n=$1; } print "-n=$n "; $seed=3; if(($command=~/\-s (\d+)/)) { $seed=$1; } print "-s=$seed "; if(($command=~/\-run_name (\d+)/)) { $suffix=$1; } else { $msa=~/([^.]+)/; $suffix=$1; } print "-run_name=$suffix\n"; if ( $input eq "seq") { $seq=$msa; $msa="$suffix.prot_msa"; if ($stype eq "cdna") { $cdna_seq=$seq; $clean_cdna_seq=&vtmpnam(); $seq=&vtmpnam(); `t_coffee -other_pg seq_reformat -in $cdna_seq -action +clean_cdna >$clean_cdna_seq`; `t_coffee -other_pg seq_reformat -in $clean_cdna_seq -action +translate >$seq`; } if (!-e $msa || $recompute) { print "\n##### Compute an MSA With $alignpg\n"; if ( $alignpg eq "t_coffee") {`$alignpg $seq -outfile=$msa >/dev/null 2>/dev/null`;} elsif ( $alignpg eq "muscle") { `$alignpg -in $seq > $msa 2>/dev/null`; } elsif ( $alignpg eq "clustalw") { `$alignpg -infile=$seq -outfile=$msa -quicktree >/dev/null 2>/dev/null`; } elsif ( $align eq "mafft") { `$alignpg $seq > $msa >/dev/null 2>/dev/null`; } else { `$alignpg -in=$seq -outfile=$msa`; } } if (!-e $msa) { print "\nError: $alignpg Could Not produce the MSA $msa [FATAL]\n"; } if ($stype eq "cdna") { $msa2="$suffix.cdna_msa"; `t_coffee -other_pg seq_reformat -in $clean_cdna_seq -in2 $msa -action +thread_dna_on_prot_aln -output fasta_aln >$msa2`; $msa=$msa2; } $input="msa"; } $seqboot_o=&vtmpnam(); $seqboot_c=&vtmpnam(); $protdist_o=&vtmpnam(); $protdist_c=&vtmpnam(); if ( $input eq "msa") { if ($tmode eq "nj" || $tmode eq "upgma"){$input="matrix";} $lmsa= &vtmpnam (); `t_coffee -other_pg seq_reformat -in $msa -output phylip_aln > $lmsa`; if ( -e "outfile"){unlink ("outfile");} # run seqboot if ( $n>1) { print "Run SeqBoot ....."; open (F, ">$seqboot_c"); print F "$lmsa\nR\n$n\nY\n$seed\n"; close (F); `seqboot$exec_extension < $seqboot_c`; if ( -e "outfile"){ print "[OK]\n";} else { print "[FAILED]\n";&my_exit (EXIT_FAILURE);} `mv outfile $seqboot_o`; } else { `cp $lmsa $seqboot_o`; } if ($rmsa){`cp $seqboot_o $rmsa`;} if ($tmode eq "nj" || $tmode eq "upgma") { if ( $stype eq "prot") { # run protdist print "Run Protdist [dmode=$dmode]"; if ($dmode eq "kimura") { $dmode="P\nP\nP"; } else { print "\n$dmode is an unknown mode for Protdist [FATAL:msa2bootstrap.pl]\n"; &my_exit (EXIT_FAILURE); } open (F, ">$protdist_c"); if ($n>1){print F "$seqboot_o\n$dmode\nM\nD\n$n\nY\n";} else {printf F "$seqboot_o\n$dmode\nY\n";} close (F); `protdist$exec_extension < $protdist_c`; if ( -e "outfile"){ print "[OK]\n";} else { print "[FAILED]\n";&my_exit (EXIT_FAILURE);} `mv outfile $protdist_o`; } elsif ( $stype eq "cdna" || $stype eq "dna") { print "Run dnadist [dmode=default"; open (F, ">$protdist_c"); if ($n>1){print F "$seqboot_o\nM\nD\n$n\nY\n";} else {printf F "$seqboot_o\nY\n";} close (F); `protdist$exec_extension < $protdist_c`; if ( -e "outfile"){ print "[OK]\n";} else { print "[FAILED]\n";&my_exit (EXIT_FAILURE);} `mv outfile $protdist_o`; } } } elsif ( $input eq "matrix") { $protdist_o=&vtmpnam(); print "MSA: $msa\n"; `cp $msa $protdist_o`; $n=1; } $nb_o=&vtmpnam(); $nb_c=&vtmpnam(); if ($input eq "matrix" && $tmode ne "parsimony" && $tmode ne "ml") { print "Run neighbor [tmode=$tmode]"; if ($tmode eq "nj") { $tmode="\nN\nN"; } elsif ( $tmode eq "upgma") { $tmode = "\nN"; } else { print "\n ERROR: $tmode is an unknown tree computation mode\n"; &my_exit (EXIT_FAILURE); } open (F, ">$nb_c"); if ($n>1){print F "$protdist_o$tmode\nM\n$n\n$seed\nY\n";} else {print F "$protdist_o$tmode\nY\n";} close (F); `neighbor$exec_extension < $nb_c`; if ( -e "outtree"){ print "[Neighbor OK]\n";} else { print "[FAILED]\n";&my_exit (EXIT_FAILURE);} `mv outtree $nb_o`; unlink ("outfile"); } elsif ($input eq "msa" && $tmode eq "parsimony") { if ( -e "outfile"){unlink ("outfile");} if ( -e "outtree"){unlink ("outtree");} if ($stype eq "prot") { print "Run protpars [tmode=$tmode]"; open (F, ">$nb_c"); if ($n>1){print F "$seqboot_o\nM\nD\n$n\n$seed\n10\nY\n";} else {print F "$seqboot_o\nY\n";} close (F); `protpars$exec_extension < $nb_c`; } elsif ( $stype eq "dna" || $stype eq "cdna") { print "Run dnapars [tmode=$tmode]"; open (F, ">$nb_c"); if ($n>1){print F "$seqboot_o\nM\nD\n$n\n$seed\n10\nY\n";} else {print F "$seqboot_o\nY\n";} close (F); `dnapars$exec_extension < $nb_c`; } if ( -e "outtree"){ print "[OK]\n";} else { print "[FAILED]\n";&my_exit (EXIT_FAILURE);} `mv outtree $nb_o`; unlink ("outfile"); } elsif ($input eq "msa" && $tmode eq "ml") { if ( -e "outfile"){unlink ("outfile");} if ( -e "outtree"){unlink ("outtree");} if ($stype eq "prot") { print "Error: ML impossible with Protein Sequences [ERROR]"; &my_exit (EXIT_FAILURE); } elsif ( $stype eq "dna" || $stype eq "cdna") { print "Run dnaml [tmode=$tmode]"; open (F, ">$nb_c"); if ($n>1){print F "$seqboot_o\nM\nD\n$n\n$seed\n10\nY\n";} else {print F "$seqboot_o\nY\n";} close (F); `dnaml$exec_extension < $nb_c`; } if ( -e "outtree"){ print "[OK]\n";} else { print "[FAILED]\n";&my_exit (EXIT_FAILURE);} `mv outtree $nb_o`; unlink ("outfile"); } else { `cp $msa $nb_o`; $n=2; } if ($rmsa && -e $seqboot_o){print "\nOutput List of $n Replicate MSA: $rmsa\n";`cp $seqboot_o $rmsa`;} if ($rmat && -e $protdist_o){print "\nOutput List of $n Replicate MATRICES: $rmat\n";`cp $protdist_o $rmat`;} if ($rtree && -e $nb_o){print "\nOutput List of $n Replicate TREES: $rtree\n";`cp $nb_o $rtree`;} $con_o=&vtmpnam(); $con_c=&vtmpnam(); if ($n >1) { print "Run Consense....."; open (F, ">$con_c"); print F "$nb_o\nY\n"; close (F); `consense$exec_extension < $con_c`; if ( -s "outtree" > 0) { print "[OK]\n";} else { print "[FAILED]\n";&my_exit (EXIT_FAILURE);} `mv outtree $con_o`; unlink ("outfile"); } else { `cp $nb_o $con_o`; } `cp $con_o $out`; if ( !-e $out) { print "Tree Computation failed [FAILED]\n"; &my_exit (EXIT_FAILURE); } elsif ($n>1) { print "\nOutput Bootstrapped Tree: $out\n"; $avg=`t_coffee -other_pg seq_reformat -in $out -action +avg_bootstrap`; $avg=~s/\n//g; print "$avg\n"; } else { print "\nOutput Tree: $out\n"; } open (F, "$out"); while () { $tree.=$_; } close (F); $tree=~s/\n//g; print "BPH: $tree\n"; &my_exit (EXIT_SUCCESS); sub my_exit { my $m=@_[0]; &clean_vtmpnam(); exit ($m); } sub vtmpnam { my $file; $ntmp++; $file="tmp4msa2bootstrap.$rseed.$$.$ntmp"; push (@tmpfile, $file); return $file; } sub clean_vtmpnam { my $t; foreach $t (@tmpfile) { if ( -e $t){unlink ($t)}; } } use Env; $seq_reformat="t_coffee -other_pg seq_reformat "; $VersionTag="1.00"; $step=1; $unset=""; $scoreT1=$scoreT2=$nseqT=$dp_limit=$unset; @tl=(); chomp($tc_version=`t_coffee -version`);$tc_version=~s/PROGRAM: //; print STDERR "\n*****************************************************************"; print STDERR "\n* HIGH LEVEL PROGRAM: T-COFFEE_DPA Version $VersionTag"; print STDERR "\n* LOW LEVEL PROGRAM: $tc_version "; print STDERR "\n*****************************************************************"; if (!@ARGV) { print "t_coffee_dpa accepts every t_coffee_flag.\nType t_coffee to obtain a list\n"; print "Requires $TC_VERSION\n"; print "Requires "; print "t_coffee_dpa specific flags:\n"; print "\t-dpa_master_aln....................Master alignment: provided OR computed\n"; print "\t-dpa_master_aln....................By default, Computed with t_coffee -very_fast\n"; print "\t-dpa_master_aln=.............Use file, (must be an aln in Fasta or ClustalW\n"; print "\t-dpa_master_aln=..........Compute aln with pg -in seq -out aln`\n"; print "\t-dpa_maxnseq.......................Maximum number of sequences in subgroups\n"; print "\t-dpa_min_score1....................Minimum Id for two sequences to be grouped in ref_aln\n"; print "\t-dpa_min_score2....................Minimum Id within a subgroup\n"; print "\t-dpa_debug.........................Keep Tmp File (for debug purpose)\n\n"; exit (0); } foreach $arg (@ARGV) { $arg_list.=" $arg"; } $arg_list=~s/[=,;]/ /g; ($seq0, $arg_list)=&extract_val_from_arg_list("^",$arg_list, "SPLICE","unset"); ($seq1, $arg_list)=&extract_val_from_arg_list("-seq",$arg_list, "SPLICE","unset"); ($seq2, $arg_list)=&extract_val_from_arg_list("-in",$arg_list, "KEEP","unset"); ($seq3, $arg_list)=&extract_val_from_arg_list("-infile",$arg_list, "SPLICE","unset"); ($prf, $arg_list)=&extract_val_from_arg_list("-profile",$arg_list, "SPLICE","unset"); $gl{'Seq'}=$seq=&vtmpnam();#file containing all the sequences #1-remove sequences from -in if ( $arg_list =~/\-in\b/) { my $save, $name; while($arg_list=~/\-in\b[^-]+(\bS[\w.]+)/) { $name=$1;$name=~s/^.//; if ( !-e $name){$save.=" S$name ";} $arg_list=~s/S$name/ /; } $arg_list=~s/\-in\b/\-in $save /; } #2-prepare if (!($arg_list=~/\-outorder/)) { $output_cl .=" -outorder=$seq"; } @output_flag=("-output","-outfile", "-run_name", "-outorder"); foreach $v1 (@output_flag) { ($v2, $arg_list)=&extract_val_from_arg_list($v1,$arg_list, "SPLICE","unset"); if ($v2 ne "") { if ($v1 eq "-run_name"){$run_name=$v2;$output_cl .=" $v1 $v2 ";} elsif ( $v1 eq "-outorder") { if ( $v2 eq "input"){$v2=$seq;} $outorder=$v2;$output_cl .=" $v1 $v2 "; } else { $output_cl .=" $v1 $v2 "; } } } ($dpa_master_aln, $arg_list) =&extract_val_from_arg_list("-dpa_master_aln",$arg_list, "SPLICE", "t_coffee"); $dpa_master_aln=~s/\s//g; ($nseqT, $arg_list) =&extract_val_from_arg_list("-dpa_maxnseq",$arg_list, "SPLICE", 30); ($scoreT1, $arg_list) =&extract_val_from_arg_list("-dpa_min_score1",$arg_list, "SPLICE", 80); ($scoreT2, $arg_list) =&extract_val_from_arg_list("-dpa_min_score2" ,$arg_list, "SPLICE", 30); ($dpa_limit, $arg_list) =&extract_val_from_arg_list("-dpa_limit" ,$arg_list, "SPLICE", 0); ($dpa_delta_id, $arg_list) =&extract_val_from_arg_list("-dpa_delta_id" ,$arg_list, "SPLICE", 1); ($dpa_debug, $arg_list) =&extract_val_from_arg_list("-dpa_debug" ,$arg_list, "SPLICE", 0); $in_seq=$seq0." ".$seq1." ".$seq2." ".$seq3; $in_prf=(($prf ne $unset)?"$prf ":""); &exit_dpa (($in_seq eq "" && $in_prf eq "")?1:0, "ERROR: You did not Provide any sequences. Use the -seq flag [FATAL: t_coffee_dpa]\n", EXIT_FAILURE); print STDERR "\nSTART DPA COMPUTATION"; if ($in_seq=~/\S+/) { print STDERR "\n Step $step: Gather all the sequences into the tmp file: [$seq]";$step++; &my_system ("t_coffee $in_seq -convert -quiet -output fasta_seq -outfile=$seq -maxnseq 0"); } if ( !-e $seq){$seq="";} if ($in_prf=~/\S+/) { $seq_in_type="profile"; $seq.= $in_prf; } if ($seq eq ""){ &exit_dpa (1, "\nERROR: No Sequence FOund. Provide Sequences with the -seq flag [FATAL: t_coffee_dpa]", EXIT_FAILURE);} if ( $run_name) { $suffix=$run_name; } elsif ($in_seq=~/\b(S[\w.]+\b)/) { my $suffix1, $sufffix2; $suffix1=$suffix2=$1; $suffix2=~s/^S//; if ( -e $suffix1){$suffix=$suffix1;} elsif ( -e $suffix2){$suffix=$suffix2;} else { $suffix=&vtmpnam(); } $suffix=~s/\.\w+//; } else { $suffix=&vtmpnam(); } if (!$run_name){$output_cl.=" -run_name $suffix ";} $gl{'Tree'}=&seq2dpa_tree ($seq, "$suffix.dpadnd"); print STDERR "\n Step $step: Prepare guide tree: $gl{'Tree'}";$step++; print STDERR "\n Step $step: Identify and Align Closely Related Groups";$step++; %gl=&make_one_pass (0, $scoreT1,"Align",%gl); print STDERR "\n Step $step: Make Multiple Group Alignment";$step++; while (!%gl ||$gl{'Ng'}>$nseqT) { %gl=&make_one_pass ($nseqT, $scoreT2,"t_coffee",%gl); if ( $gl{'Newgroups'}==0){$scoreT2--;} } print STDERR "\n Step $step: Make The Final Alignment";$step++; $arg_list .=$output_cl; %gl=&tree2group (0,0, %gl); $gl{$gl{'0'}{'File'}}{'Output'}=""; $a=0; &align_groups ("t_coffee",'0', $arg_list, " ", %gl); if ( !$dpa_keep_tmpfile){&clean_tmp_file (@tl);} sub seq2dpa_tree { my $seq=@_[0]; my $newtree=@_[1]; my $aln=&vtmpnam (); &my_system ("t_coffee -special_mode quickaln -in $seq -outfile $aln -quiet"); &my_system ("$seq_reformat -in $aln -action +aln2tree +tree2dpatree -output newick >$newtree"); return $newtree; } sub seq2dpa_tree_old { my $aln=@_[0]; my $newtree=@_[1]; &my_system("$seq_reformat -in $aln -action +seq2dpatree -output newick > $newtree"); return $newtree; } sub aln2dpa_tree { my $aln=@_[0]; my $newtree=&vtmpnam(); &my_system("$seq_reformat -in $aln -action +aln2tree +tree2dpatree -output newick > $newtree"); return $newtree; } sub group_file2ngroups { my $file=@_[0]; my $n; open ( F, $file); while () { $n+=/\>/; } close (F); return $n; } sub make_one_pass { my ($N, $ID,$pg, %gl)=@_; my $a; %gl=&tree2group ($N,$ID,%gl); if (!$gl{'Newgroups'}){return %gl;} else { for ( $a=0; $a< $ng; $a++) { if ($gl{$gl{$a}{'File'}}{'Ng'}>1){&display_group($a, %gl);} &align_groups ($pg, $a, $arg_list, " -quiet=quiet ", %gl); } return %gl; } } sub tree2group { my ($N, $ID, %gl)=@_; my $prefix=&vtmpnam(); my $group_file=&vtmpnam(); my $file; my $oldtree=&vtmpnam(); my $n; my $tree; if ( $gl{'Ng'}==1){return %gl;} $tree=$gl{'Tree'}; #1 extract the groups &my_system ("$seq_reformat -in $tree -action +tree2group $N $ID $prefix > $group_file"); $n=group_file2ngroups($group_file); $gl{'Newgroups'}=1; if ( $n==$gl{'Ng'}) { $gl{'Newgroups'}=0; return %gl; } $gl{'Iteration'}++; $gl{'MaxNseq'}=$N;$gl{'MinID'}=$ID; $gl{'GroupFile'}=$group_file;$gl{'Ng'}=$ng=0; #2 Process the group list into the hash open (F, $group_file); while () { $gl{'File'}.=$_; if (/\>/) { $line=$_; $line=~s/\>//; @list=($line=~/(\S+)/g); $file=$gl{$ng}{'File'}=shift @list; $gl{$file}{'Output'}=$file; $gl{$file}{'Ng'}=$#list+1; if ($gl{$file}{'Ng'}>1){ $gl{$file}{'Tlist'}=$gl{$file}{'Alist'}="(";} foreach $l (@list) { $gl{$file}{'List'}.=" $l "; if (!$gl{$l}{'Tlist'}) { $gl{$l}{'Tlist'}="$l"; $gl{$l}{'Alist'}="$l"; $gl{$l}{'Nseq'}=1; $gl{$l}{'Ng'}=1; } $gl{$file}{'Tlist'}.="$gl{$l}{'Tlist'},"; $gl{$file}{'Alist'}.="$gl{$l}{'Tlist'}|"; $gl{$file}{'Nseq'}+=$gl{$l}{'Nseq'}; } chop($gl{$file}{'Tlist'});chop($gl{$file}{'Alist'}); if ($gl{$file}{'Ng'}>1){$gl{$file}{'Tlist'}.=")"; $gl{$file}{'Alist'}.=");";} $ng++; } } $gl{'Ng'}=$ng; close (F); #3 Update the old tree with the new groups $gl{'Tree'}=&vtmpnam(); &my_system ("$seq_reformat -in $tree -action +collapse_tree $group_file -output newick > $gl{'Tree'}"); return %gl; } sub display_group { my ($g,%gl)=@_; my $f; if ( $g==-1) { print STDERR "\nIteration $gl{'Iteration'} [MaxN=$gl{'MaxNseq'}][MinID=$gl{'MinID'}]"; } else { $f=$gl{$g}{'File'}; $action=($gl{$f}{'Ng'}==1 || $gl{'Iteration'}==1)?"KEEP ":"ALIGN "; print STDERR "\n\t[$action][MaxN=$gl{'MaxNseq'}][MinID=$gl{'MinID'}][File $f][Nseq=$gl{$f}{'Nseq'}][Ngroups=$gl{$f}{'Ng'}][$gl{$f}{'Alist'}]"; } } sub align_groups { my ($pg, $g, $arg, $extra_arg,%gl)=@_; my $f; my $Output,$Outflag; $f=$gl{$g}{'File'}; $Output=($gl{$f}{'Output'}); if ( $pg eq "Align") { if ( !-e $f) { $command="$seq_reformat -in $gl{'Seq'} -action +extract_aln $gl{'GroupFile'}"; if ($gl{$f}{'Ng'}>1) { &my_system ($command); $command="t_coffee -special_mode quick_aln S$f -outfile=$Output -quiet"; } } else {$command="";} } elsif ( -e $f) { $Outflag=($Output)?"-outfile=$Output":""; $command="$pg -infile $f $Outflag -quiet stdout $arg $extra_arg -maxnseq 0 -convert -quiet stdout"; } elsif ( $gl{$f}{'Ng'}==1) { $action=($dpa_debug)?"cp":"mv"; $command="$action $gl{$f}{'List'} $Output"; } else { $Outflag=($Output)?"-outfile=$Output":""; $command="$pg -profile $gl{$f}{'List'} $Outflag $arg $extra_arg -maxnseq 0"; } &my_system ($command); return $outfile; } sub my_system { my $command=@_[0]; my $force=@_[1]; my $status; if ( $dpa_debug) {print STDERR "\nCOMMAND: $command";} $status=system ($command); if (!$force) { &exit_dpa (($status==1), "Failed in Command:\n$command\n[FATAL: t_coffee_dpa]\n", EXIT_FAILURE); } return $status; } sub vtmpnam { my $prefix=@_[0]; my $tmp_file_name; $tmp_prefix=($prefix)?$prefix:"dpa_tmp_file_$$"; $tmp_count++; $tmp_file_name="$tmp_prefix"."$tmp_count"; $tl[$#tl+1]=$tmp_file_name; return $tmp_file_name; } sub clean_tmp_file { my $list; my $file; if ($dpa_debug){return;} $list=vtmpnam(); `ls -1 | grep $tmp_prefix>$list`; open (F,$list); while ( ) { $file=$_; chop $file; if ( -e $file){unlink $file;} } close (F); unlink $list; } sub exit_dpa { my $condition=@_[0]; my $error_msg=@_[1]; my $exit_value=@_[2]; if ( $condition) { print "$error_msg\n"; exit ($exit_value); } else { return; } } sub extract_val_from_arg_list { my $arg=@_[0]; my $arg_list=@_[1]; my $keep_flag=@_[2]; my $default_value=@_[3]; my $val=""; #protect $arg_list=~s/\s-/ \@/g; $arg=~s/-/\@/g; #search if ($arg eq "^") { $arg_list=~/^([^@]*)/; $val=$1; } else {$arg_list=~/$arg ([^@]*)/;$val=$1;} #remove trailing spaces $val=~s/\s*$//; #remove the parsed sequence if needed if (($val ne "") && $keep_flag ne "KEEP") { if ( $arg eq "^"){$arg_list=~s/$val/ /;} else {$arg_list=~s/($arg [^@]*)/ /;} } #unprotect $arg_list=~s/\@/-/g; $arg=~s/\@/-/g; if (($val eq "") && $default_value ne "unset"){$val=$default_value;} return $val, $arg_list; } $program="T-COFFEE (Version_7.90)";\n $DEBUG=1; $dpa_nseq=10; $dpa_sim=0; if (!@ARGV) { `t_coffee`; exit (0); } foreach $arg (@ARGV) { $arg_list.=" $arg"; } $max_nseq=10; ($seq0, $arg_list)=&extract_val_from_arg_list("^",$arg_list); ($seq1, $arg_list)=&extract_val_from_arg_list("-seq",$arg_list); ($seq2, $arg_list)=&extract_val_from_arg_list("-in",$arg_list, "KEEP"); ($seq3, $arg_list)=&extract_val_from_arg_list("-infile",$arg_list); $in_seq=$seq0." ".$seq1." ".$seq2." ".$seq3; $seq=vtmpnam(); `t_coffee $in_seq -convert -output fasta_seq -outfile=$seq`; ($dpa_nseq, $arg_list)=&extract_val_from_arg_list("-dpa_nseq",$arg_list); ($master_aln, $arg_list)=&extract_val_from_arg_list("-master_aln",$arg_list); ($sim_matrix, $arg_list)=&extract_val_from_arg_list("-sim_matrix",$arg_list); ($core_seq, $arg_list)=&extract_val_from_arg_list("-core_seq",$arg_list); ($dpa_sim, $arg_list)=&extract_val_from_arg_list("-dpa_sim",$arg_list); ($run_name, $arg_list)=&extract_val_from_arg_list("-run_name",$arg_list); ($output, $arg_list)=&extract_val_from_arg_list("-output",$arg_list); if (!$sim_mat && !$master_aln)#Compute the fast alignment { $ref_aln=vtmpnam(); `t_coffee -seq=$seq -very_fast -outfile=$ref_aln -quiet`; } if (!$sim_mat) { $sim_mat=vtmpnam(); `seq_reformat -in $ref_aln -output sim > $sim_mat`; } if ( !$core_seq) { $core_seq=vtmpnam(); `seq_reformat -in $ref_aln -action +trimTC N$max_nseq -output fasta_seq > $core_seq`; } @core_name=`seq_reformat -in $core_seq -output name `; @tot_name=`seq_reformat -in $seq -output name `; foreach $s (@core_name){$s=~s/\s//g;$hcore{$s}=1;} foreach $s (@tot_name){$s=~s/\s//g;} print STDERR "T-Coffee_dpa:\n"; print STDERR "\tTOTAL SEQ: @tot_name\n"; print STDERR "\tCHOSEN SEQ: @core_name\n"; open (F, $sim_mat); while ( ) { @l=($_=~/(\b[\S]+\b)/g); if (($l[0] eq "TOP" || $l[0] eq "BOT")) { $s1=$l[1];$s2=$l[2];$v=$l[3]; if ($hcore{$s1} && !$hcore{$s2}) { if (!$hseq{$s2}{"sim"} || $v>$hseq{$s2}{"sim"}) { $hseq{$s2}{"sim"}=$v;$hseq{$s2}{"seq"}=$s1; } } } } close (F); foreach $s (@tot_name) { if ( !$hseq{$s}{"seq"}){;} else { $s2=$hseq{$s}{"seq"}; $v=$hseq{$s}{"sim"}; if ($v>$dpa_sim) { $hseq{$s}{'used'}=1; $seq_list{$s2}{$seq_list{$s2}{'nseq'}++}=$s; } } } foreach $s (@core_name){$seq_list{$s}{$seq_list{$s}{'nseq'}++}=$s;$hseq{$s}{'used'}=1;} foreach $s (@tot_name){if (!$hseq{$s}{'used'}){$seq_list{'unused'}{$seq_list{'unused'}{'nseq'}++}=$s;}} $n=0; foreach $s (@core_name) { $ng++; $n=$seq_list{$s}{'nseq'}; for (@g_list=(), $a=0; $a<$n; $a++){@g_list=(@g_list,$seq_list{$s}{$a});} $g_seq=vtmpnam(); $g_aln=vtmpnam(); print STDERR "Group $ng: $#g_list Seq: @g_list: "; `seq_reformat -in $seq -action +lower +keep_name +extract_seq @g_list -output fasta_seq > $g_seq`; if ( $#g_list==0) { print STDERR "[No aln]\n"; $g_aln=$g_seq; } elsif ($#g_list<$max_nseq) { print STDERR "[t_coffee]\n"; `t_coffee $g_seq -outfile=$g_aln -quiet $arg_list`; } else { print STDERR "[t_coffee_dpa]\n"; `t_coffee_dpa2 $g_seq -outfile=$g_aln $arg_list -sim_matrix $sim_matrix -dpa_nseq $dpa_nseq`; } @profile_list=(@profile_list, $g_aln); } print "UNUSED $seq_list{'unused'}{'nseq'}"; if ($seq_list{'unused'}{'nseq'}) { $prf=vtmpnam(); `t_coffee -profile @profile_list $arg_list -outfile=$prf -quiet`; $n=$seq_list{"unused"}{'nseq'}; $new_seq=vtmpnam(); $new_prf=vtmpnam(); for ($a=0; $a<$n-1; $a++) { $s=$seq_list{"unused"}{$a}; print STDERR "\nADD Sequence $s"; `seq_reformat -in $seq -action +lower +keep_name +extract_seq $s -output fasta_seq > $new_seq`; `t_coffee -profile $prf $new_seq $arg_list -outfile=$new_prf`; `cp $new_prf $prf`; } $s=$seq_list{"unused"}{$a}; `seq_reformat -in $seq -action +lower +keep_name +extract_seq $s -output fasta_seq > $new_seq`; @profile_list=($prf, $new_seq); } if ($run_name){$arg_list.=" -run_name $run_name";} else { $in_seq=~/([\w-]+)/; $arg_list.=" -run_name $1"; } if ( $output){$arg_list.=" -output $output ";} `t_coffee -profile @profile_list $arg_list`; &clean (@tmp_file_list); sub vtmpnam { my $tmp_file_name; $tmp_name_counter++; $tmp_file_name="tmp_file_$tmp_name_counter\_Pid$$"; $tmp_file_list[$ntmp_file++]=$tmp_file_name; return $tmp_file_name; } sub clean { my @fl=@_; my $file; return; foreach $file ( @fl) { if ( -e $file){unlink($file);} } } sub extract_val_from_arg_list { my $arg=@_[0]; my $arg_list=@_[1]; my $keep_flag=@_[2]; #protect $arg_list=~s/\s-/ \@/g; $arg=~s/-/\@/g; #search if ($arg eq "^") { $arg_list=~/^([^@]*)/; $val=$1; } else {$arg_list=~/$arg ([^@]*)/;$val=$1;} #remove the parsed sequence if needed if ($val && $keep_flag ne "KEEP") { if ( $arg eq "^"){$arg_list=~s/$val/ /;} else {$arg_list=~s/($arg [^@]*)/ /;} } #unprotect $arg_list=~s/\@/-/g; $arg=~s/\@/-/g; return $val, $arg_list; } use Env; $BLAST_MAX_NRUNS=2; $EXIT_SUCCESS=0; $EXIT_FAILURE=1; use Cwd; $REF_EMAIL=""; $tmp_dir=""; $init_dir=""; $program="tc_generic_method.pl"; $test=0; if ($test==1) { $SERVER="NCBI"; $query=$ARGV[0]; $hitf=$ARGV[1]; %s=read_fasta_seq($query); @sl=keys(%s); &blast_xml2profile ("xx", $s{$sl[0]}{seq},$maxid,$minid,$mincov, $hitf); myexit ($EXIT_FAILURE); } foreach $v(@ARGV){$cl.="$v ";} ($mode)=&my_get_opt ( $cl, "-mode=",1,0); ($A)=(&my_get_opt ( $cl, "-name1=",0,0)); ($B)=(&my_get_opt ( $cl, "-name2=",0,0)); ($TMPDIR)=(&my_get_opt ( $cl, "-tmpdir=",0,0)); ($CACHE)=(&my_get_opt ( $cl, "-cache=",0,0)); ($SERVER)=((&my_get_opt ( $cl, "-server=",0,0))); ($EMAIL)=((&my_get_opt ( $cl, "-email=",0,0))); if (!$A){$A="A";} if (!$B){$B="B";} if (!$TMPDIR) { $HOME=$ENV{HOME}; if ($ENV{TMP_4_TCOFFEE}){$TMPDIR=$ENV{TMP_4_TCOFFEE};} else{$TMPDIR="$HOME/.t_coffee/tmp/";} } if ( ! -d $TMPDIR) { mkdir $TMPDIR; } if ( ! -d $TMPDIR) { print "ERROR: Could not create temporary dir: $TMPDIR\n"; myexit ($EXIT_FAILURE); } $EMAIL=~s/XEMAILX/\@/g; if (!$EMAIL) { if ($ENV{EMAIL_4_TCOFFEE}){$EMAIL=$ENV{EMAIL_4_TCOFFEE};} elsif ($ENV{EMAIL}){$EMAIL=$ENV{EMAIL};} else {$EMAIL=$REF_EMAIL;} } ($maxid,$minid,$mincov)=(&my_get_opt ( $cl, "-maxid=",0,0, "-minid=",0,0,"-mincov=",0,0)); if (!$cl=~/\-maxid\=/){$maxid=95;} if (!$cl=~/\-minid\=/){$minid=35;} if (!$cl=~/\-mincov\=/){$mincov=80;} if ($mode eq "seq_msa") { &seq2msa($mode,&my_get_opt ( $cl, "-infile=",1,1, "-method=",1,2, "-param=",0,0, "-outfile=",1,0)); } elsif ( $mode eq "tblastx_msa") { &seq2tblastx_lib ($mode,&my_get_opt ( $cl, "-infile=",1,1, "-outfile=",1,0)); } elsif ( $mode eq "tblastpx_msa") { &seq2tblastpx_lib ($mode,&my_get_opt ( $cl, "-infile=",1,1, "-outfile=",1,0)); } elsif ( $mode eq "thread_pair") { &seq2thread_pair($mode,&my_get_opt ( $cl, "-infile=",1,1, "-pdbfile1=",1,1, "-method=",1,2,"-param=",0,0, "-outfile=",1,0, )); } elsif ( $mode eq "pdbid_pair") { &seq2pdbid_pair($mode,&my_get_opt ( $cl, "-pdbfile1=",1,0, "-pdbfile2=",1,0, "-method=",1,2,"-param=",0,0, "-outfile=",1,0, )); } elsif ( $mode eq "pdb_pair") { &seq2pdb_pair($mode,&my_get_opt ( $cl, "-pdbfile1=",1,1, "-pdbfile2=",1,1, "-method=",1,2,"-param=",0,0, "-outfile=",1,0, )); } elsif ( $mode eq "profile_pair") { &seq2profile_pair($mode,&my_get_opt ( $cl, "-profile1=",1,1, "-profile2=",1,1, "-method=",1,2,"-param=",0,0, "-outfile=",1,0, )); } elsif ( $mode eq "pdb_template") { &blast2pdb_template ($mode,&my_get_opt ( $cl, "-infile=",1,1, "-database=",1,0, "-method=",1,0, "-outfile=",1,0)); } elsif ( $mode eq "profile_template") { &psiblast2profile_template ($mode,&my_get_opt ( $cl, "-infile=",1,1, "-database=",1,0, "-method=",1,0, "-outfile=",1,0)); } elsif ( $mode eq "psiprofile_template") { &psiblast2profile_template ($mode,&my_get_opt ( $cl, "-infile=",1,1, "-database=",1,0, "-method=",1,0, "-outfile=",1,0)); } elsif ( $mode eq "RNA_template") { &seq2RNA_template ($mode,&my_get_opt ( $cl, "-infile=",1,1, "-outfile=",1,0)); } elsif ( $mode eq "tm_template") { &seq2tm_template ($mode,&my_get_opt ( $cl, "-infile=",1,1,"-arch=",1,1,"-psv=",1,1, "-outfile=",1,0,)); } elsif ( $mode eq "psitm_template") { &seq2tm_template ($mode,&my_get_opt ( $cl, "-infile=",1,1,"-arch=",1,1,"-psv=",1,1, "-outfile=",1,0,)); } elsif ( $mode eq "ssp_template") { &seq2ssp_template ($mode,&my_get_opt ( $cl, "-infile=",1,1,"-seq=",1,1,"-obs=",1,1, "-outfile=",1,0)); } elsif ( $mode eq "psissp_template") { &seq2ssp_template ($mode,&my_get_opt ( $cl, "-infile=",1,1,"-seq=",1,1,"-obs=",1,1, "-outfile=",1,0)); } elsif ( $mode eq "rna_pair") { &seq2rna_pair($mode,&my_get_opt ( $cl, "-pdbfile1=",1,1, "-pdbfile2=",1,1, "-method=",1,2,"-param=",0,0, "-outfile=",1,0, )); } elsif ( $mode eq "calc_rna_template") { &calc_rna_template($mode,&my_get_opt ( $cl, "-infile=",1,1,"-pdbfile=",1,1, "-outfile=",1,0)); } else { print STDERR "$mode is an unknown mode of tc_generic_method.pl [FATAL]\n"; } myexit ($EXIT_SUCCESS); sub seq2ssp_template { my ($mode, $infile,$gor_seq,$gor_obs,$outfile)=@_; my %s, %h; my $result; my (@profiles); &set_temporary_dir ("set",$infile,"seq.pep"); %s=read_fasta_seq ("seq.pep"); open (R, ">result.aln"); #print stdout "\n"; foreach $seq (keys(%s)) { open (F, ">seqfile"); $s{$seq}{seq}=uc$s{$seq}{seq}; print (F ">$s{$seq}{name}\n$s{$seq}{seq}\n"); close (F); $lib_name="$s{$seq}{name}.ssp"; $lib_name=&clean_file_name ($lib_name); if ($mode eq "ssp_template"){&seq2gor_prediction ($s{$seq}{name},$s{$seq}{seq}, "seqfile", $lib_name,$gor_seq, $gor_obs);} elsif ($mode eq "psissp_template") { &seq2msa_gor_prediction ($s{$seq}{name},$s{$seq}{seq},"seqfile", $lib_name,$gor_seq, $gor_obs); } if ( !-e $lib_name) { print STDERR ("GORIV failed to compute the secondary structure of $s{$seq}{name} [FATAL:$mode/$method/$program]\n"); myexit ($EXIT_FAILURE); } else { print stdout "\tProcess: >$s{$seq}{name} _E_ $lib_name \n"; print R ">$s{$seq}{name} _E_ $lib_name\n"; } unshift (@profiles, $lib_name); } close (R); &set_temporary_dir ("unset",$mode, $method,"result.aln",$outfile, @profiles); } sub seq2tm_template { my ($mode, $infile,$arch,$psv,$outfile)=@_; my %s, %h; my $result; my (@profiles); &set_temporary_dir ("set",$infile,"seq.pep"); %s=read_fasta_seq ("seq.pep"); open (R, ">result.aln"); #print stdout "\n"; foreach $seq (keys(%s)) { open (F, ">seqfile"); print (F ">$s{$seq}{name}\n$s{$seq}{seq}\n"); close (F); $lib_name="$s{$seq}{name}.tmp"; $lib_name=&clean_file_name ($lib_name); if ($mode eq "tm_template") { &safe_system ("t_coffee -other_pg fasta_seq2hmmtop_fasta.pl -in=seqfile -out=$lib_name -arch=$arch -psv=$psv"); } elsif ( $mode eq "psitm_template") { &seq2msa_tm_prediction ($s{$seq}{name},$s{$seq}{seq},"seqfile", $lib_name,$arch, $psv); } if ( !-e $lib_name) { print STDERR ("RNAplfold failed to compute the secondary structure of $s{$seq}{name} [FATAL:$mode/$method/$program]\n"); myexit ($EXIT_FAILURE); } else { print stdout "\tProcess: >$s{$seq}{name} _T_ $lib_name\n"; print R ">$s{$seq}{name} _T_ $lib_name\n"; } unshift (@profiles, $lib_name); } close (R); &set_temporary_dir ("unset",$mode, $method,"result.aln",$outfile, @profiles); } sub seq2RNA_template { my ($mode, $infile,$outfile)=@_; my %s, %h, ; my $result; my (@profiles); &set_temporary_dir ("set",$infile,"seq.pep"); %s=read_fasta_seq ("seq.pep"); open (R, ">result.aln"); #print stdout "\n"; foreach $seq (keys(%s)) { open (F, ">seqfile"); print (F ">$s{$seq}{name}\n$s{$seq}{seq}\n"); close (F); $lib_name="$s{$seq}{name}.rfold"; $lib_name=&clean_file_name ($lib_name); &safe_system ("t_coffee -other_pg RNAplfold2tclib.pl -in=seqfile -out=$lib_name"); if ( !-e $lib_name) { print STDERR ("RNAplfold failed to compute the secondary structure of $s{$seq}{name} [FATAL:$mode/$method/$program]\n"); myexit ($EXIT_FAILURE); } else { print stdout "\tProcess: >$s{$seq}{name} _F_ $lib_name\n"; print R ">$s{$seq}{name} _F_ $lib_name\n"; } unshift (@profiles, $lib_name); } close (R); &set_temporary_dir ("unset",$mode, $method,"result.aln",$outfile, @profiles); } sub psiblast2profile_template { my ($mode, $infile, $db, $method, $outfile)=@_; my %s, %h, ; my ($result,$psiblast_output,$profile_name,@profiles); &set_temporary_dir ("set",$infile,"seq.pep"); %s=read_fasta_seq ("seq.pep"); open (R, ">result.aln"); #print stdout "\n"; foreach $seq (keys(%s)) { open (F, ">seqfile"); print (F ">$A\n$s{$seq}{seq}\n"); close (F); $psiblast_output=&run_blast ($s{$seq}{name},$method, $db, "seqfile","outfile"); if ( -e $psiblast_output) { %profile=blast_xml2profile($s{$seq}{name}, $s{$seq}{seq},$maxid, $minid,$mincov,$psiblast_output); unlink ($psiblast_output); $profile_name="$s{$seq}{name}.prf"; $profile_name=&clean_file_name ($profile_name); unshift (@profiles, $profile_name); output_profile ($profile_name, %profile); print stdout "\tProcess: >$s{$seq}{name} _R_ $profile_name [$profile{n} Seq.] [$SERVER/blast/$db][$CACHE_STATUS]\n"; print R ">$s{$seq}{name} _R_ $profile_name\n"; } } close (R); &set_temporary_dir ("unset",$mode, $method,"result.aln",$outfile, @profiles); } sub blast2pdb_template { my ($mode, $infile, $db, $method, $outfile)=@_; my %s, %h, ; my ($result,$blast_output); &set_temporary_dir ("set",$infile,"seq.pep"); %s=read_fasta_seq ("seq.pep"); open (R, ">result.aln"); #print stdout "\n"; foreach $seq (keys(%s)) { open (F, ">seqfile"); print (F ">$A\n$s{$seq}{seq}\n"); close (F); $blast_output=&run_blast ($s{$seq}{name},$method, $db, "seqfile","outfile"); %p=blast_xml2profile($s{$seq}{name}, $s{$seq}{seq},$maxid, $minid,$mincov,$blast_output); unlink ($blast_output); if ($p{n}>1) { $pdbid=id2pdbid($p{1}{identifyer}); if ( length ($pdbid)>5){$pdbid=id2pdbid($p{1}{definition});} print R ">$s{$seq}{name} _P_ $pdbid\n"; print stdout "\tProcess: >$s{$seq}{name} _P_ $pdbid [$SERVER/blast/$db][$CACHE_STATUS]\n"; } else { print R ">$s{$seq}{name}\n"; print stdout "\tProcess: >$s{$seq}{name} _P_ No Template Found [$SERVER/blast/$db][$CACHE_STATUS]\n"; } } close (R); &set_temporary_dir ("unset",$mode, $method,"result.aln",$outfile); } sub blast_msa { my ($infile,$outfile)=@_; my ($a, %seq); %s1=&read_fasta_seq ($infile); foreach $s (keys (%s1)) { $i=$s1{$s}{order}; $s{$i}{name}=$s; $s{$i}{seq}=$s1{$s}{seq}; $s{$i}{len}=length( $s{$i}{seq}); $s{n}++; } `formatdb -i $infile`; `blastpgp -i $infile -d $infile -m7 -j4 > io`; &set_blast_type ("io"); %FB=&xml2tag_list ("io", "BlastOutput"); open (F, ">$outfile"); print F "! TC_LIB_FORMAT_01\n"; print F "$s{n}\n"; for ( $a=0; $a<$s{n}; $a++) { print F "$s{$a}{name} $s{$a}{len} $s{$a}{seq}\n"; } for ( $a=0; $a<$FB{n}; $a++) { %p=blast_xml2profile ($s{$a}{name}, $s{$a}{seq},100, 0, 0, $FB{$a}{body}); for ($b=1; $b<$p{n}; $b++) { my $l=length ($p{$b}{Qseq}); my $hit=$p{$b}{definition}; my $Qstart=$p{$b}{Qstart}; my $Hstart=$p{$b}{Hstart}; my $identity=$p{$b}{identity}; my @lrQ=split (//,$p{$b}{Qseq}); my @lrH=split (//,$p{$b}{Hseq}); my $i= $s1{$s{$a}{name}}{order}+1; my $j= $s1{$hit}{order}+1; #if ( $j==$i){next;} printf F "# %d %d\n", $i, $j; # print F "\n$p{$b}{Qseq} ($Qstart)\n$p{$b}{Hseq} ($Hstart)"; for ($c=0; $c<$l; $c++) { my $rQ=$lrQ[$c]; my $rH=$lrH[$c]; my $n=0; if ($rQ ne "-"){$n++, $Qstart++;} if ($rH ne "-"){$n++; $Hstart++;} if ( $n==2) { printf F "\t%d %d %d\n", $Qstart-1, $Hstart-1,$identity; } } } } print F "! SEQ_1_TO_N\n"; close (F); return $output; } sub seq2msa { my ($mode, $infile, $method, $param, $outfile)=@_; &set_temporary_dir ("set",$infile,"seq.pep"); $param.=" >/dev/null 2>&1 "; #make sure test.pep is in FASTA &safe_system ("t_coffee -other_pg seq_reformat -in seq.pep -output fasta_seq > x"); `mv x seq.pep`; if ( $method eq "blastpgp") { &blast_msa ("seq.pep", "result.aln"); } elsif ( $method eq "muscle") { `muscle -in seq.pep -out result.aln $param`; } elsif ( $method eq "probcons") { `probcons seq.pep >result.aln 2>/dev/null`; } elsif ( $method eq "mafft") { `mafft --quiet --localpair --maxiterate 1000 seq.pep> result.aln 2>/dev/null` } elsif ( $method=~/prank/) { `$method -d=seq.pep -o=result.aln -quiet 2>/dev/null`; `mv result.aln.1.fas result.aln`; } else { `$method -infile=seq.pep -outfile=result.aln`; } &set_temporary_dir ("unset",$mode, $method,"result.aln",$outfile); myexit ($EXIT_SUCCESS); } sub seq2thread_pair { my ($mode, $infile, $pdbfile1, $method, $param, $outfile)=@_; &set_temporary_dir ("set",$infile,"seq.pep",$pdbfile1,"struc.pdb"); if ($method eq "fugueali") { #Env Variable that need to be defined for Fugue if (!$ENV{FUGUE_LIB_LIST}){$ENV{FUGUE_LIB_LIST}="DUMMY";} if (!$ENV{HOMSTRAD_PATH}) {$ENV{HOMSTRAD_PATH}="DUMMY";} if (!$ENV{HOMS_PATH}){$ENV{HOMS_PATH}="DUMMY";} `joy struc.pdb >x 2>x`; &check_file("struc.tem", "Joy failed [FATAL:$program/$method]"); `melody -t struc.tem >x 2>x`; &check_file("struc.tem", "Melody failed [FATAL:$program/$method]"); `fugueali -seq seq.pep -prf struc.fug -print > tmp_result.aln`; &check_file("tmp_result.aln", "Fugue failed [FATAL:$program/$method]"); &safe_system ("t_coffee -other_pg seq_reformat -in tmp_result.aln -output fasta_aln >result.aln"); } elsif ( $method eq "t_coffee") { &safe_system ("t_coffee -in Pstruc.pdb Sseq.pep Mslow_pair -outfile result.aln -quiet"); } else { &safe_system ("$method -infile=seq.pep -pdbfile1=struc.pdb -outfile=result.aln $param>x 2>x"); } &set_temporary_dir ("unset",$mode,$method,"result.aln",$outfile); myexit ($EXIT_SUCCESS); } sub seq2pdbid_pair { my ($mode, $pdbfile1, $pdbfile2, $method, $param, $outfile)=@_; my ($name); &set_temporary_dir ("set"); $name=$pdbfile1." ".$pdbfile2; if ( &cache_file("GET","","$name","$method","dali",$outfile,"EBI")) {return $outfile;} else { if ($method eq "daliweb") { $pdbfile1=~/(....)(.)/; $id1=$1; $c1=$2; $pdbfile2=~/(....)(.)/; $id2=$1; $c2=$2; $command="t_coffee -other_pg dalilite.pl --pdb1 $id1 --chainid1 $c1 --pdb2 $id2 --chainid2 $c2 --email=$EMAIL >dali_stderr 2>dali_stderr"; $dali=`$command`; open (F, "dali_stderr"); while () { if ( /JobId: dalilite-(\S+)/) { $jobid=$1; } } close (F); unlink ("dali_stderr"); $output1="dalilite-$jobid.txt"; if ( -e $output1) { unlink ($output1); &url2file ("http://www.ebi.ac.uk/Tools/es/cgi-bin/jobresults.cgi/dalilite/dalilite-$jobid/aln.html", "output2"); if ( -e "output2") { my ($seq1, $seq2); $seq1=$seq2=""; open (F, "output2"); while () { $l=$_; if ( $l=~/Query\s+(\S+)/) { $seq1.=$1; } elsif ( $l=~/Sbjct\s+(\S+)/) { $seq2.=$1; } } close (F); unlink ("output2"); if ($seq1 ne "" && $seq2 ne "") { $output3=">$A\n$seq1\n>$B\n$seq2\n"; $output3=~s/\./-/g; open (F, ">result.aln"); print F "$output3"; close (F); } } } } } &cache_file("SET","","$name","$method","dali","result.aln","EBI"); &set_temporary_dir ("unset",$mode, $method, "result.aln",$outfile); myexit ($EXIT_SUCCESS); } sub seq2pdb_pair { my ($mode, $pdbfile1, $pdbfile2, $method, $param, $outfile)=@_; &set_temporary_dir ("set",$pdbfile1,"pdb1.pdb",$pdbfile2,"pdb2.pdb"); if ($method eq "t_coffee") { &safe_system ("t_coffee -in Ppdb1.pdb Ppdb2.pdb -quiet -outfile=result.aln"); } elsif ( $method eq "DaliLite") { if ( &safe_system ("DaliLite -pairwise pdb1.pdb pdb2.pdb >tmp1")==$EXIT_SUCCESS) { my ($seq1, $seq2); $seq1=$seq2=""; open (F, "tmp1"); while () { $l=$_; if ( $l=~/Query\s+(\S+)/) { $seq1.=$1; } elsif ( $l=~/Sbjct\s+(\S+)/) { $seq2.=$1; } } close (F); unlink ("tmp1"); if ($seq1 ne "" && $seq2 ne "") { my $output3=">$A\n$seq1\n>$B\n$seq2\n"; $output3=~s/\./-/g; open (F, ">result.aln"); print F "$output3"; close (F); } } else { print "ERROR: DalLite failed to align the considered structures[tc_generic_method.pl]\n"; } } elsif ( $method eq "TMalign") { if ( &safe_system ("TMalign pdb1.pdb pdb2.pdb >tmp1")==$EXIT_SUCCESS) { `tail -4 tmp1 > tmp2`; open (F, "tmp2"); while () { unshift(@l, $_); } close (F); open (F, ">result.aln"); $l[3]=~s/[^a-zA-Z0-9-]/\-/g; $l[1]=~s/[^a-zA-Z0-9-]/\-/g; print F ">$A\n$l[3]\n>$B\n$l[1]\n"; close (F); } else { print "ERROR: TMalign failed to align the considered structures[tc_generic_method.pl]\n"; `rm result.aln >/dev/null 2>/dev/null`; } } elsif ( $method eq "mustang") { if ( &safe_system ("mustang -i pdb1.pdb pdb2.pdb -F fasta >/dev/null 2>/dev/null")==$EXIT_SUCCESS) { `mv results.afasta result.aln`; } else { print "ERROR: mustang failed to align the considered structures[tc_generic_method.pl]\n"; `rm result.aln >/dev/null 2>/dev/null`; } } else { if ( &safe_system ("$method -pdbfile1=pdb1.pep -pdbfile2=pdb2.pdb -outfile=result.aln $param>x 2>x")==$EXIT_SUCCESS) { `mv results.afasta result.aln`; } else { print "ERROR: $method failed to align the considered structures[tc_generic_method.pl]\n"; `rm result.aln >/dev/null 2>/dev/null`; } } &set_temporary_dir ("unset",$mode, $method, "result.aln",$outfile); myexit ($EXIT_SUCCESS); } sub seq2profile_pair { my ($mode, $profile1, $profile2, $method, $param, $outfile)=@_; if ($method eq "clustalw") { &set_temporary_dir ("set",$profile1,"prf1.aln",$profile2,"prf2.aln"); `clustalw -profile1=prf1.aln -profile2=prf2.aln -outfile=result.aln`; &set_temporary_dir ("unset",$mode, $method, "result.aln",$outfile); } elsif ( $method eq "hhalign") { hhalign ( $profile1,$profile2,$outfile,$param); } else { `$method -profile1=prf1.aln -profile2=prf2.aln -outfile=result.aln $param>x 2>x`; } myexit ($EXIT_SUCCESS); } sub pg_is_installed { my @ml=@_; my $r, $p, $m; my $supported=0; my $p=shift (@ml); $r=`which $p 2>/dev/null`; if ($r eq ""){return 0;} else {return 1;} } sub check_pg_is_installed { my @ml=@_; my $r=&pg_is_installed (@ml); if (!$r) { print STDERR "\nProgram $p Supported but Not Installed on your system [FATAL:tc_generic_method]\n"; myexit ($EXIT_FAILURE); } else { return 1; } } sub set_temporary_dir { my @list=@_; my $dir_mode, $a, $mode, $method; $dir_mode=shift (@list); if ( $dir_mode eq "set") { $initial_dir=cwd(); if ( !$tmp_dir) { srand; $rand=rand (100000); $tmp_dir="$TMPDIR/tmp4tcoffee_profile_pair_dir_$$_P_$rand"; } if ( !-d $tm_dir) { `mkdir $tmp_dir`; } for ( $a=0; $a<=$#list; $a+=2) { `cp $list[$a] $tmp_dir/$list[$a+1]`; } chdir $tmp_dir; } elsif ( $dir_mode eq "unset") { $mode=shift (@list); $method=shift (@list); if (!-e $list[0]) { print STDERR ("Program $method failed to produce $list[1] [FATAL:$mode/$method/$program]\n"); myexit ($EXIT_FAILURE); } else { chdir $initial_dir; # `t_coffee -other_pg seq_reformat -in $tmp_dir/$list[0] -output fasta_aln -out $tmp_dir/result2.aln`; `cp $tmp_dir/$list[0] $tmp_dir/result2.aln`; if ( $list[1] eq "stdout") { open (F, "$tmp_dir/result2.aln"); while (){print $_;}close(F); } else { `mv $tmp_dir/result2.aln $list[1]`; } shift (@list); shift (@list); foreach $f (@list) { `mv $tmp_dir/$f .`; } } } } sub clean_dir { my $dir=@_[0]; if ( !-d $dir){return ;} elsif (!($dir=~/tmp/)){return ;}#safety check 1 elsif (($dir=~/\*/)){return ;}#safety check 2 else { `rm -rf $dir`; } return; } sub myexit { my $code=@_[0]; &clean_dir ($tmp_dir); exit ($code); } sub my_get_opt { my @list=@_; my $cl, $a, $argv, @argl; @argl=(); $cl=shift @list; for ( $a=0; $a<=$#list; $a+=3) { $option=$list[$a]; $optional=$list[$a+1]; $status=$list[$a+2]; $argv=""; if ($cl=~/$option(\S+)/){$argv=$1;} @argl=(@argl,$argv); #$optional:0=>optional #$optional:1=>must be set #$status: 0=>no requirement #$status: 1=>must be an existing file #$status: 2=>must be an installed package if ($optional==0){;} elsif ( $optional==1 && $argv eq "") { print STDERR "ERROR: Option $option must be set [FATAL:$program/$mode/$method]\n"; myexit ($EXIT_FAILURE); } if ($status==0){;} elsif ($status ==1 && $argv ne "" && !-e $argv) { print STDERR "ERROR: File $argv must exist [FATAL:$program/$mode/$method]\n"; myexit ($EXIT_FAILURE); } elsif ( $status==2 && $argv ne "" && &check_pg_is_installed ($argv)==0) { print STDERR "ERROR: $argv is not installed [FATAL:$program/$mode/$method]\n"; myexit ($EXIT_FAILURE); } } return @argl; } sub check_file { my ($file, $msg)=@_; if ( !-e $file) { print "\n$msg\n"; myexit ($EXIT_FAILURE); } } sub hhalign { my ($aln1, $aln2, $outfile, $param)=@_; my $h1, $h2; $h{0}{index}=0; $h{1}{index}=1; $h{0}{aln}=$aln1; $h{1}{aln}=$aln2; %{$h{0}}=aln2psi_profile (%{$h{0}}); %{$h{1}}=aln2psi_profile (%{$h{1}}); $param=~s/#S/ /g; $param=~s/#M/\-/g; $param=~s/#E/\=/g; $command="hhalign -i $h{0}{a3m} -t $h{1}{a3m} -tc $outfile.tmp -rank 1 -mapt 0 $param"; `$command`; # `hhalign -i $h{0}{a3m} -t $h{1}{a3m} -tc $outfile.tmp -rank 1 -mapt 0 -gapf 0.8 -gapg 0.8`; # To run global use the following open (I, "$outfile.tmp"); open (O, ">$outfile"); $h{0}{cons}=s/\./x/g; $h{1}{cons}=s/\./x/g; print O "! TC_LIB_FORMAT_01\n2\n$h{0}{name} $h{0}{len} $h{0}{seq}\n$h{1}{name} $h{1}{len} $h{1}{seq}\n#1 2\n"; while () { if (/(\d+)\s+(\d+)\s+(\d+)/) { print O "\t$h{0}{$1}\t$h{1}{$2}\t$3\n"; } } print O "! SEQ_1_TO_N\n"; close (O); close (I); } sub aln2psi_profile { my (%h)=@_; my ($aln,$i,$hv, $a, @c, $n); $i=$h{index}; $aln=$h{aln}; `cp $aln $$.hhh_aln`; $command="t_coffee -other_pg seq_reformat -in $aln -output hasch"; $hv=`$command`;chomp ($hv); $h{a2m}="$tmp/$hv.tmp4hhpred.a2m"; $h{a3m}="$tmp/$hv.tmp4hhpred.a3m"; if ( -e $h{a3m}){;} else { `hhconsensus -M 50 -i $h{aln} -oa2m $h{a2m}`; if (!-e $h{a2m}) { print STDERR "Program tc_generic_method.pl FAILED to run:\n\thhconsensus -M 50 -i $h{aln} -oa2m $h{a2m}"; myexit ($EXIT_FAILURE); } `hhconsensus -M 50 -i $h{aln} -oa3m $h{a3m}`; if (!-e $h{a3m}) { print STDERR "Program tc_generic_method.pl FAILED to run:\n\thhconsensus -M 50 -i $h{aln} -oa3m $h{a3m}"; myexit ($EXIT_FAILURE); } `buildali.pl $h{a3m} -n 1`; } $h{a2m_seq}=`head -n 2 $h{a2m} | grep -v ">"`;chomp ($h{a2m_seq}); $h{a3m_seq}=`head -n 2 $h{a3m} | grep -v ">"`;chomp ($h{a3m_seq}); $h{cons}=$h{a2m_seq}; $h{seq}=`head -n 2 $h{aln} | grep -v ">"`;chomp ($h{seq}); @c=split (//, $h{cons}); $h{len}=$#c+1; for ($n=0,$a=0, $b=0; $a<$h{len};$a++) { if ( $c[$a]=~/[A-Z]/) { $h{++$n}=++$b; } elsif ( $c[$a]=~/[a-z\.]/) { ++$b; } } $name=`head -n 2 $h{aln} | grep ">"`; $name=~/\>(\S+)/; $h{name}=$1; `cp $h{a2m} $i.a2m`; `cp $h{a3m} $i.a3m`; `cp $h{aln} $i.hh_aln`; return %h; } sub read_fasta_seq { my $f=@_[0]; my %hseq; my (@seq, @com, @name); my ($a, $s,$nseq); open (F, $f); while () { $s.=$_; } close (F); @name=($s=~/>(\S*).*\n[^>]*/g); @seq =($s=~/>.*.*\n([^>]*)/g); @com =($s=~/>\S*(.*)\n([^>]*)/g); $nseq=$#name+1; for ($a=0; $a<$nseq; $a++) { my $s; my $n=$name[$a]; $hseq{$n}{name}=$n; $seq[$a]=~s/[^A-Za-z]//g; $hseq{$n}{order}=$a; $hseq{$n}{seq}=$seq[$a]; $hseq{$n}{com}=$com[$a]; } return %hseq; } sub file_contains { my ($file, $tag, $max)=(@_); my ($n); $n=0; if ( !-e $file && ($file =~/$tag/)) {return 1;} elsif ( !-e $file){return 0;} else { open (FC, "$file"); while ( ) { if ( ($_=~/$tag/)) { close (FC); return 1; } elsif ($max && $n>$max) { close (FC); return 0; } $n++; } } close (FC); return 0; } sub file2string { my $f=@_[0]; my $string, $l; open (F,"$f"); while () { $l=$_; #chomp ($l); $string.=$l; } close (F); $string=~s/\r\n//g; $string=~s/\n//g; return $string; } sub my_get_opt { my @list=@_; my $cl, $a, $argv, @argl; @argl=(); $cl=shift @list; for ( $a=0; $a<=$#list; $a+=3) { $option=$list[$a]; $optional=$list[$a+1]; $status=$list[$a+2]; $argv=""; if ($cl=~/$option(\S+)/){$argv=$1;} @argl=(@argl,$argv); #$optional:0=>optional #$optional:1=>must be set #$status: 0=>no requirement #$status: 1=>must be an existing file #$status: 2=>must be an installed package if ($optional==0){;} elsif ( $optional==1 && $argv eq "") { print STDERR "ERROR: Option $option must be set [FATAL:$program/$mode/$method]\n"; myexit ($EXIT_FAILURE); } if ($status==0){;} elsif ($status ==1 && $argv ne "" && !-e $argv) { print STDERR "ERROR: File $argv must exist [FATAL:$program/$mode/$method]\n"; myexit ($EXIT_FAILURE); } elsif ( $status==2 && $argv ne "" && &check_pg_is_installed ($argv)==0) { print STDERR "ERROR: $argv is not installed [FATAL:$program/$mode/$method]\n"; myexit ($EXIT_FAILURE); } } return @argl; } sub tag2value { my $tag=(@_[0]); my $word=(@_[1]); my $return; $tag=~/$word="([^"]+)"/; $return=$1; return $return; } sub hit_tag2pdbid { my $tag=(@_[0]); my $pdbid; $tag=~/id="(\S+)"/; $pdbid=$1; $pdbid=~s/_//; return $pdbid; } sub id2pdbid { my $in=@_[0]; my $id; $in=~/(\S+)/; $id=$in; if ($id =~/pdb/) { $id=~/pdb(.*)/; $id=$1; } $id=~s/[|��_]//g; return $id; } sub set_blast_type { my $file =@_[0]; if (&file_contains ($file,"EBIApplicationResult",100)){$BLAST_TYPE="EBI";} elsif (&file_contains ($file,"NCBI_BlastOutput",100)) {$BLAST_TYPE="NCBI";} else { $BLAST_TYPE=""; } return $BLAST_TYPE; } sub blast_xml2profile { my ($name,$seq,$maxid, $minid, $mincov, $file)=(@_); my (%p, $a, $string, $n); if ($BLAST_TYPE eq "EBI" || &file_contains ($file,"EBIApplicationResult",100)){%p=ebi_blast_xml2profile(@_);} elsif ($BLAST_TYPE eq "NCBI" || &file_contains ($file,"NCBI_BlastOutput",100)){%p=ncbi_blast_xml2profile(@_);} else { print "************ ERROR: Blast Returned an unknown XML Format **********************"; myexit ($EXIT_FAILURE); } for ($a=0; $a<$p{n}; $a++) { my $name=$p{$a}{name}; $p{$name}{seq}=$p{$a}{seq}; } return %p; } sub ncbi_tblastx_xml2lib_file { my ($outlib,$string)=(@_); my ($L,$l, $a,$b,$c,$d,$i,$nhits,@identifyerL); my (%ITERATION); open (F, ">>$outlib"); $seq=~s/[^a-zA-Z]//g; $L=length ($seq); %ITERATION=xml2tag_list ($string, "Iteration"); for ($i=0; $i<$ITERATION{n};$i++) { my ($qindex, $qlen, %hit, $string); $string=$ITERATION{$i}{body}; $qindex=xmltag2value($string,"Iteration_iter-num"); $qlen =xmltag2value($string,"Iteration_query-len"); %hit=&xml2tag_list ($string, "Hit"); for ($a=0; $a<$hit{n}; $a++) { my ($string); $string=$hit{$a}{body}; $hindex=xmltag2value($string,"Hit_accession")+1; if ($hindex<=$qindex){next;} else {print F "# $qindex $hindex\n";} $hlen=xmltag2value ($string,"Hit_len"); %HSP=&xml2tag_list ($string, "Hsp"); for ($b=0; $b<$HSP{n}; $b++) { my ($string, $qs,$qe,$qf,$hs,$he,$hf,$s, $d, $e); $string=$HSP{$b}{body}; $qs=xmltag2value ($string,"Hsp_query-from"); $qe=xmltag2value ($string,"Hsp_query-to"); $qf=xmltag2value ($string,"Hsp_query-frame"); $hs=xmltag2value ($string,"Hsp_hit-from"); $he=xmltag2value ($string,"Hsp_hit-to"); $hf=xmltag2value ($string,"Hsp_hit-frame"); $s=xmltag2value ($string,"Hsp_identity"); $l=xmltag2value ($string,"Hsp_align-len"); $s=int(($s*100)/$l); if ($qf>0) {$rqs=$qs; $rqe=$qe;} else { $rqe=($qlen-$qs)+1; $rqs=($qlen-$qe)+1; } if ($hf>0) {$rhs=$hs; $rhe=$he;} else { $rhe=($hlen-$hs)+1; $rhs=($hlen-$he)+1; } for ($d=0,$e=$rqs; $e<$rqe; $e++,$d++) { my ($r1,$r2); $r1=$e; $r2=$rhs+$d; print F " $r1 $r2 $s 0\n"; } } } } print F "! SEQ_1_TO_N\n"; close (F); return %lib; } sub ncbi_tblastpx_xml2lib_file { my ($outlib,$string,%s)=(@_); my ($L,$l, $a,$b,$c,$d,$i,$nhits,@identifyerL); my (%ITERATION,%hdes, %qdes); open (F, ">>$outlib"); $seq=~s/[^a-zA-Z]//g; $L=length ($seq); %ITERATION=xml2tag_list ($string, "Iteration"); for ($i=0; $i<$ITERATION{n};$i++) { my ($qindex, $qlen, %hit, $string); $string=$ITERATION{$i}{body}; $qdef=xmltag2value($string,"Iteration_query-def"); %qdes=&tblastpx_name2description($qdef,%s); $qlen =xmltag2value($string,"Iteration_query-len"); %hit=&xml2tag_list ($string, "Hit"); for ($a=0; $a<$hit{n}; $a++) { my ($string); $string=$hit{$a}{body}; $hdef=xmltag2value($string,"Hit_def"); %hdes=&tblastpx_name2description($hdef,%s); if ($hdes{index}<=$qdes{index}){next;} else {print F "# $qdes{index} $hdes{index}\n";} $hlen=xmltag2value ($string,"Hit_len"); %HSP=&xml2tag_list ($string, "Hsp"); for ($b=0; $b<$HSP{n}; $b++) { my ($string, $l,$qs,$qe,$qf,$hs,$he,$hf,$s, $d, $e, @s1, @s2); $string=$HSP{$b}{body}; $qs=xmltag2value ($string,"Hsp_query-from"); $qe=xmltag2value ($string,"Hsp_query-to"); $qf=$qdes{frame}; $qseq=xmltag2value ($string,"Hsp_qseq"); $hs=xmltag2value ($string,"Hsp_hit-from"); $he=xmltag2value ($string,"Hsp_hit-to"); $hf=$hdes{frame}; $hseq=xmltag2value ($string,"Hsp_hseq"); $s=xmltag2value ($string,"Hsp_identity"); $l=xmltag2value ($string,"Hsp_align-len"); $s=int(($s*100)/$l); @s1=tblastpx_hsp2coordinates($qseq,$qs,$qe,%qdes); @s2=tblastpx_hsp2coordinates($hseq,$hs,$he,%hdes); for ($f=0; $f<=$#s1; $f++) { if ($s1[$f]==-1 || $s2[$f]==-1){next;} else { print F " $s1[$f] $s2[$f] $s 0\n"; } } } } } print F "! SEQ_1_TO_N\n"; close (F); return %lib; } sub tblastpx_hsp2coordinates { my ($seq, $s, $e, %des)=@_; my @list; my @sa; my @gap=(-1,-1,-1); $s=$des{start}+3*($s-1); if ($des{strand} eq "d"){;} else {$s=($des{length}-$s)+1;} foreach $c (split (//,$seq)) { if ( $c eq '-'){push (@list,@gap);} elsif ($des{strand} eq "d") { push(@list,$s++,$s++,$s++); } else { push(@list, $s--,$s--,$s--); } } return @list; } sub tblastpx_name2description { my ($name, %s)=@_; my @at=split("__", $name); my %des; $des{name}=$at[0]; $des{strand}=$at[1]; $des{start}=$at[2]; $des{end}=$at[3]; $des{length}=$at[4]; $des{index}=$s{$at[0]}{order}+1; return %des; } sub ncbi_blast_xml2profile { my ($name,$seq,$maxid, $minid, $mincov, $string)=(@_); my ($L,$l, $a,$b,$c,$d,$nhits,@identifyerL); $seq=~s/[^a-zA-Z]//g; $L=length ($seq); %hit=&xml2tag_list ($string, "Hit"); for ($nhits=0,$a=0; $a<$hit{n}; $a++) { my ($ldb,$id, $identity, $expectation, $start, $end, $coverage, $r); my (%ID,%DE,%HSP); $ldb=""; %ID=&xml2tag_list ($hit{$a}{body}, "Hit_id"); $identifyer=$ID{0}{body}; %DE=&xml2tag_list ($hit{$a}{body}, "Hit_def"); $definition=$DE{0}{body}; %HSP=&xml2tag_list ($hit{$a}{body}, "Hsp"); for ($b=0; $b<$HSP{n}; $b++) { my (%START,%END,%E,%I,%Q,%M); %START=&xml2tag_list ($HSP{$b}{body}, "Hsp_query-from"); %HSTART=&xml2tag_list ($HSP{$b}{body}, "Hsp_hit-from"); %LEN= &xml2tag_list ($HSP{$b}{body}, "Hsp_align-len"); %END= &xml2tag_list ($HSP{$b}{body}, "Hsp_query-to"); %HEND= &xml2tag_list ($HSP{$b}{body}, "Hsp_hit-to"); %E=&xml2tag_list ($HSP{$b}{body}, "Hsp_evalue"); %I=&xml2tag_list ($HSP{$b}{body}, "Hsp_identity"); %Q=&xml2tag_list ($HSP{$b}{body}, "Hsp_qseq"); %M=&xml2tag_list ($HSP{$b}{body}, "Hsp_hseq"); for ($e=0; $e<$Q{n}; $e++) { $qs=$Q{$e}{body}; $ms=$M{$e}{body}; $expectation=$E{$e}{body}; $identity=($LEN{$e}{body}==0)?0:$I{$e}{body}/$LEN{$e}{body}*100; $start=$START{$e}{body}; $end=$END{$e}{body}; $Hstart=$HSTART{$e}{body}; $Hend=$HEND{$e}{body}; $coverage=(($end-$start)*100)/$L; if ($identity>$maxid || $identity<$minid || $coverage<$mincov){next;} @lr1=(split (//,$qs)); @lr2=(split (//,$ms)); $l=$#lr1+1; for ($c=0;$c<$L;$c++){$p[$nhits][$c]="-";} for ($d=0,$c=0; $c<$l; $c++) { $r=$lr1[$c]; if ( $r=~/[A-Za-z]/) { $p[$nhits][$d + $start-1]=$lr2[$c]; $d++; } } $Qseq[$nhits]=$qs; $Hseq[$nhits]=$ms; $QstartL[$nhits]=$start; $HstartL[$nhits]=$Hstart; $identityL[$nhits]=$identity; $endL[$nhits]=$end; $definitionL[$nhits]=$definition; $identifyerL[$nhits]=$identifyer; $comment[$nhits]="$ldb|$identifyer [Eval=$expectation][id=$identity%][start=$Hstart end=$Hend]"; $nhits++; } } } $profile{n}=0; $profile{$profile{n}}{name}=$name; $profile{$profile{n}}{seq}=$seq; $profile {n}++; for ($a=0; $a<$nhits; $a++) { $n=$a+1; $profile{$n}{name}="$name\_$a"; $profile{$n}{seq}=""; $profile{$n}{Qseq}=$Qseq[$a]; $profile{$n}{Hseq}=$Hseq[$a]; $profile{$n}{Qstart}=$QstartL[$a]; $profile{$n}{Hstart}=$HstartL[$a]; $profile{$n}{identity}=$identityL[$a]; $profile{$n}{definition}=$definitionL[$a]; $profile{$n}{identifyer}=$identifyerL[$a]; $profile{$n}{comment}=$comment[$a]; for ($b=0; $b<$L; $b++) { if ($p[$a][$b]) { $profile{$n}{seq}.=$p[$a][$b]; } else { $profile{$n}{seq}.="-"; } } } $profile{n}=$nhits+1; return %profile; } sub ebi_blast_xml2profile { my ($name,$seq,$maxid, $minid, $mincov, $string)=(@_); my ($L,$l, $a,$b,$c,$d,$nhits,@identifyerL,$identifyer); $seq=~s/[^a-zA-Z]//g; $L=length ($seq); %hit=&xml2tag_list ($string, "hit"); for ($nhits=0,$a=0; $a<$hit{n}; $a++) { my ($ldb,$id, $identity, $expectation, $start, $end, $coverage, $r); my (%Q,%M,%E,%I); $ldb=&tag2value ($hit{$a}{open}, "database"); $identifyer=&tag2value ($hit{$a}{open}, "id"); $description=&tag2value ($hit{$a}{open}, "description"); %Q=&xml2tag_list ($hit{$a}{body}, "querySeq"); %M=&xml2tag_list ($hit{$a}{body}, "matchSeq"); %E=&xml2tag_list ($hit{$a}{body}, "expectation"); %I=&xml2tag_list ($hit{$a}{body}, "identity"); for ($b=0; $b<$Q{n}; $b++) { $qs=$Q{$b}{body}; $ms=$M{$b}{body}; $expectation=$E{$b}{body}; $identity=$I{$b}{body}; $start=&tag2value ($Q{$b}{open}, "start"); $end=&tag2value ($Q{$b}{open}, "end"); $startM=&tag2value ($M{$b}{open}, "start"); $endM=&tag2value ($M{$b}{open}, "end"); $coverage=(($end-$start)*100)/$L; # print "$id: ID: $identity COV: $coverage [$start $end]\n"; if ($identity>$maxid || $identity<$minid || $coverage<$mincov){next;} # print "KEEP\n"; @lr1=(split (//,$qs)); @lr2=(split (//,$ms)); $l=$#lr1+1; for ($c=0;$c<$L;$c++){$p[$nhits][$c]="-";} for ($d=0,$c=0; $c<$l; $c++) { $r=$lr1[$c]; if ( $r=~/[A-Za-z]/) { $p[$nhits][$d + $start-1]=$lr2[$c]; $d++; } } $identifyerL[$nhits]=$identifyer; $comment[$nhits]="$ldb|$identifyer [Eval=$expectation][id=$identity%][start=$startM end=$endM]"; $nhits++; } } $profile{n}=0; $profile{$profile{n}}{name}=$name; $profile{$profile{n}}{seq}=$seq; $profile {n}++; for ($a=0; $a<$nhits; $a++) { $n=$a+1; $profile{$n}{name}="$name\_$a"; $profile{$n}{seq}=""; $profile{$n}{identifyer}=$identifyerL[$a]; $profile{$n}{comment}=$comment[$a]; for ($b=0; $b<$L; $b++) { if ($p[$a][$b]) { $profile{$n}{seq}.=$p[$a][$b]; } else { $profile{$n}{seq}.="-"; } } } $profile{n}=$nhits+1; return %profile; } sub output_profile { my ($name,%profile)=(@_); my ($a); open (P, ">$name"); for ($a=0; $a<$profile{n}; $a++) { print P ">$profile{$a}{name} $profile{$a}{comment}\n$profile{$a}{seq}\n"; } close (P); return; } sub blast_xml2hit_list { my $string=(@_[0]); return &xml2tag_list ($string, "hit"); } sub xmltag2value { my ($string_in, $tag)=@_; my %TAG; %TAG=xml2tag_list ($string_in, $tag); return $TAG{0}{body}; } sub xml2tag_list { my ($string_in,$tag)=@_; my $tag_in, $tag_out; my %tag; if (-e $string_in) { $string=&file2string ($string_in); } else { $string=$string_in; } $tag_in1="<$tag "; $tag_in2="<$tag>"; $tag_out="/$tag>"; $string=~s/>/>##1/g; $string=~s//g; @l=($string=~/(\<[^>]+\>)/g); $tag{n}=0; $in=0;$n=-1; foreach $t (@l) { $t=~s/<#//; $t=~s/#>//; if ( $t=~/$tag_in1/ || $t=~/$tag_in2/) { $in=1; $tag{$tag{n}}{open}=$t; $n++; } elsif ($t=~/$tag_out/) { $tag{$tag{n}}{close}=$t; $tag{n}++; $in=0; } elsif ($in) { $tag{$tag{n}}{body}.=$t; } } return %tag; } sub seq2gor_prediction { my ($name, $seq,$infile, $outfile, $gor_seq, $gor_obs)=(@_); my ($l); `gorIV -prd $infile -seq $gor_seq -obs $gor_obs > gor_tmp`; open (GR, ">$outfile"); open (OG, "gor_tmp"); while () { $l=$_; if ($l=~/\>/){print GR "$l";} elsif ( $l=~/Predicted Sec. Struct./) { $l=~s/Predicted Sec. Struct\.//; print GR "$l"; } } close (GR); close (OG); return; } sub seq2msa_tm_prediction { my ($name, $seq,$infile, $outfile, $arch, $psv)=(@_); my (%p,%gseq,%R, $blast_output, %s, $l); $blast_output=&run_blast ($name,"blastp", "uniprot", $infile, "outfile"); %p=blast_xml2profile($name,$seq,$maxid, $minid,$mincov,$blast_output); open (F, ">tm_input"); for ($a=0; $a<$p{n}; $a++) { my $s; $s=$p{$a}{seq}; $s=uc($s); print F ">$p{$a}{name}\n$s\n"; #print stdout ">$p{$a}{name}\n$s\n"; } close (F); print "\tPSITM: kept $p{n} Homologues for Sequence $p{0}{name}\n"; &safe_system ("t_coffee -other_pg fasta_seq2hmmtop_fasta.pl -in=tm_input -out=tm_output -arch=$arch -psv=$psv"); unlink ("tm_input"); %gs=read_fasta_seq("tm_output"); foreach $s (keys(%gs)) { my (@list, $seq, @plist, @pseq, $L, $PL); #Prediction $seq=$gs{$s}{seq}; $seq=uc($seq); $L=length($seq); @list=split //, $seq; #Original Profile Sequence $pseq=$p{$s}{seq}; $pseq=uc($pseq); $PL=length($pseq); @plist=split //, $pseq; for ($c=0,$b=0; $b<$PL; $b++) { my $r=$plist[$b]; if($r ne "-" && $r ne "X") { $r=$plist[$b]=$list[$c++]; } } if ($c!=$L) { print "ERROR: Could Not Thread the Prediction Back [FATAL:tc_generic_method.pl]\n"; myexit ($EXIT_FAILURE); } for ($b=0;$b<$PL; $b++) { my $r=$plist[$b]; if ( $r ne "-" && $r ne "X") { $R{$b}{$r}++; } } } $L=length ($p{0}{seq}); open (R2, ">$outfile"); print R2 ">$name\n"; for ($a=0; $a<$L; $a++) { my ($v,$v_max,$r,$r_max, @rl); $v=$v_max=0; @rl=keys (%{$R{$a}}); foreach $r (@rl) { $v=$R{$a}{$r}; if ($v>=$v_max) { $v_max=$v; $r_max=$r; } } print R2 "$r_max"; } print R2 "\n"; close (R2); return; } sub seq2msa_gor_prediction { my ($name, $seq,$infile, $outfile, $gor_seq, $gor_obs)=(@_); my (%p,%gseq,%R, $blast_output, %s, $l); $blast_output=&run_blast ($name,"blastp", "uniprot", $infile, "outfile"); %p=blast_xml2profile($name,$seq,$maxid, $minid,$mincov,$blast_output); open (F, ">gor_input"); for ($a=0; $a<$p{n}; $a++) { my $s; $s=$p{$a}{seq}; $s=~s/\-//g; $s=~s/X//g; $s=uc($s); print F ">$p{$a}{name}\n$s\n"; } close (F); print "\tPSIGOR: kept $p{n} Homologues for Sequence $p{0}{name}\n"; `gorIV -prd gor_input -seq $gor_seq -obs $gor_obs > gor_tmp`; unlink ("gor_input"); open (GR, ">gor_output"); open (OG, "gor_tmp"); while () { my $l; $l=$_; if ($l=~/\>/){print GR "$l";} elsif ( $l=~/Predicted Sec. Struct./) { $l=~s/Predicted Sec. Struct\.//; print GR "$l"; } } close (GR); close (OG); %gs=read_fasta_seq("gor_output"); foreach $s (keys(%gs)) { my (@list, $seq, @plist, @pseq, $L, $PL); #Prediction $seq=$gs{$s}{seq}; $seq=uc($seq); $L=length($seq); @list=split //, $seq; #Original Profile Sequence $pseq=$p{$s}{seq}; $pseq=uc($pseq); $PL=length($pseq); @plist=split //, $pseq; $tseq=""; for ($c=0,$b=0; $b<$PL; $b++) { my $r=$plist[$b]; if($r ne "-" && $r ne "X") { $r=$plist[$b]=$list[$c++]; } $tseq.=$r; } if ($c!=$L) { print "ERROR: Could Not Thread the Prediction Back [FATAL:tc_generic_method.pl]\n"; print "SEQ:$seq\nPSEQ:$pseq\nTSEQ:$tseq"; myexit ($EXIT_FAILURE); } for ($b=0;$b<$PL; $b++) { my $r=$plist[$b]; if ( $r ne "-" && $r ne "X") { $R{$b}{$r}++; } } } $L=length ($p{0}{seq}); open (R2, ">$outfile"); print R2 ">$name\n"; for ($a=0; $a<$L; $a++) { my ($v,$v_max,$r,$r_max, @rl); $v=$v_max=0; @rl=keys (%{$R{$a}}); foreach $r (@rl) { $v=$R{$a}{$r}; if ($v>=$v_max) { $v_max=$v; $r_max=$r; } } print R2 "$r_max"; } print R2 "\n"; close (R2); return; } sub run_blast { my ($name, $method, $db, $infile, $outfile, $run)=(@_); if (!$run){$run=1;} if (&cache_file("GET",$infile,$name,$method,$db,$outfile,$SERVER)){return $outfile;} else { if ( $SERVER eq "EBI") { $cl_method=$method; if ($cl_method =~/wu/) { $cl_method=~s/wu//; if ( $cl_method eq "psiblast") { print STDERR "\n***************WARNING: PSI BLAST cannot be used with the NCBI BLAST Client. Use server=EBI Or server=LOCAL. blastp will be used instead***********\n"; $cl_method="blastp"; } $command="t_coffee -other_pg wublast.pl --email $EMAIL $infile -D $db -p $cl_method --outfile $outfile -o xml>/dev/null 2>/dev/null"; &safe_system ( $command); if (-e "$outfile.xml") {`mv $outfile.xml $outfile`;} } else { if ($cl_method eq "psiblast"){$cl_method ="blastp -j5";} $command="t_coffee -other_pg blastpgp.pl --email $EMAIL $infile -d $db --outfile $outfile -p $cl_method --mode PSI-Blast>/dev/null 2>/dev/null"; &safe_system ( $command); if (-e "$outfile.xml") {`mv $outfile.xml $outfile`;} } } elsif ($SERVER eq "NCBI") { if ($db eq "uniprot"){$cl_db="nr";} else {$cl_db=$db;} if ( $method eq "psiblast") { print STDERR "\n***************WARNING: PSI BLAST cannot be used with the NCBI BLAST Client. Use server=EBI Or server=LOCAL. blastp will be used instead***********\n"; $cl_method="blastp"; } else { $cl_method=$method; } $command="blastcl3 -p $cl_method -d $cl_db -i $infile -o $outfile -m 7"; &mysystem ($command); } elsif ($SERVER =~/CLIENT_(.*)/) { my $client=$1; $command="$client -p $method -d $db -i $infile -o $outfile -m 7"; &mysystem ($command); } elsif ( $SERVER eq "LOCAL_blastall") { if ($method eq "blastp") { $command="blastall -d $db -i $infile -o $outfile -m7 -p blastp"; } &mysystem ($command); } elsif ( $SERVER eq "LOCAL") { if ($ENV{"BLAST_DB_DIR"}) { $x=$ENV{"BLAST_DB_DIR"}; $cl_db="$x$db"; } else { $cl_db=$db; } if ($method eq "blastp") { $command="blastpgp -d $cl_db -i $infile -o $outfile -m7 -j1"; } elsif ($method eq "psiblast") { $command="blastpgp -d $cl_db -i $infile -o $outfile -m7 -j5"; } elsif ($method eq "blastn") { $command="blastall -p blastn -d $cl_db -i $infile -o $outfile -m7 -W6"; } &mysystem ($command); } else { print ("*************** ERROR: $SERVER is an Unknown Server***********"); } if ( !-e $outfile) { if ( $run==$BLAST_MAX_NRUNS) { print STDERR "COM: $command\n"; print STDERR ("BLAST failed against $name [FATAL:$mode/$method/$program]\n"); if ( $SERVER eq "EBI" && !($method=~/wu/)) { print STDERR ("Try WuBlast instead"); return run_blast ($name,"wublastp", $db,$infile, $outfile); } } else { print STDERR "(Blast for $name failed [$command][Attempt $run/$BLAST_MAX_NRUNS] [Try again]\n"; return run_blast ($name, $method, $db,$infile, $outfile, $run+1); } } &cache_file("SET",$infile,$name,$method,$db,$outfile,$SERVER); return $outfile; } } sub mysystem { my $command=@_[0]; my $count=0; my $r; while (($r=&safe_system($command))!=$EXIT_SUCCESS && $count<5) { print "\nCOMMAND $command Failed. Will try again\n"; $count++; } return $r; } sub cache_file { my ($cache_mode,$infile,$name,$method,$db, $outfile,$server)=(@_); my $cache_file; #Protect names so that they can be turned into legal filenames $name=&clean_file_name ($name); if ($db=~/\//) { $db=~/([^\/]+)$/; $db=$1; } $cache_file_sh="$name.$method.$db.$server.tmp"; $cache_file="$CACHE/$name.$method.$db.$server.tmp"; if ($infile ne "") { $cache_file_infile_sh="$name.$method.$db.$server.infile.tmp"; $cache_file_infile="$CACHE/$name.$method.$db.$server.infile.tmp"; } if ($cache_mode eq "GET") { if ($CACHE eq "" || $CACHE eq "no" || $CACHE eq "ignore" || $CACHE eq "local" || $CACHE eq "update"){return 0;} elsif ( !-d $CACHE) { print STDERR "ERROR: Cache Dir: $CACHE Does not Exist"; return 0; } else { if ( -e $cache_file && &fasta_file1_eq_fasta_file2($infile,$cache_file_infile)==1) { `cp $cache_file $outfile`; $CACHE_STATUS="READ CACHE"; return 1; } } } elsif ($cache_mode eq "SET") { if ($CACHE eq "" || $CACHE eq "no" || $CACHE eq "ignore" || $CACHE eq "local" || $CACHE eq "update"){return 0;} elsif ( !-d $CACHE) { print STDERR "ERROR: Cache Dir: $CACHE Does not Exist"; return 0; } elsif (-e $outfile) { `cp $outfile $cache_file`; if ($cache_file_infile ne ""){ `cp $infile $cache_file_infile`;} #functions for updating the cache #`t_coffee -other_pg clean_cache.pl -file $cache_file_sh -dir $CACHE`; #`t_coffee -other_pg clean_cache.pl -file $cache_file_infile_sh -dir $CACHE`; return 1; } } $CACHE_STATUS="COMPUTE CACHE"; return 0; } sub file1_eq_file2 { my ($f1, $f2)=@_; if ( $f1 eq ""){return 1;} elsif ( $f2 eq ""){return 1;} elsif ( !-e $f1){return 0;} elsif ( !-e $f2){return 0;} elsif ($f1 eq "" || $f2 eq "" || `diff $f1 $f2` eq ""){return 1;} return 0; } sub clean_file_name { my $name=@_[0]; $name=~s/[^A-Za-z1-9.-]/_/g; return $name; } sub url2file { my ($address, $out)=(@_); if (&pg_is_installed ("wget")) { return &safe_system ("wget $address -O$out >/dev/null 2>/dev/null"); } elsif (&pg_is_installed ("curl")) { return &safe_system ("curl $address -o$out >/dev/null 2>/dev/null"); } else { print stderr "ERROR: neither curl nor wget are installed. Imnpossible to fectch remote file [FATAL]\n"; exit ($EXIT_FAILURE); } } sub fasta_file1_eq_fasta_file2 { my ($f1, $f2)=@_; my (%s1, %s2); my @names; %s1=read_fasta_seq (%f1); %s2=read_fasta_seq (%f2); @names=(keys (%s1)); foreach $n (keys(%s1)) { if ($s1{$n}{seq} ne $s2{$n}{seq}){return 0;} } foreach $n (keys(%s2)) { if ($s1{$n}{seq} ne $s2{$n}{seq}){return 0;} } return 1; } sub safe_system { my $com=@_[0]; my $pid; my $status; if ($com eq ""){return 1;} if (($pid = fork ()) < 0){return (-1);} if ($pid == 0) { exec ($com); } else { $PIDCHILD=$pid; } waitpid ($pid,WTERMSIG); return $?; #contains the status of the exit } END { kill ($PIDCHILD); } sub read_template_file { my $pdb_templates = @_[0]; open (TEMP, "<$pdb_templates"); my %temp_h; while () { $line = $_; $line =~/(\S+)\s(\S+)/; $temp_h{$1}= $2; } close(TEMP); return %temp_h; } sub calc_rna_template { my ($mode, $infile, $pdbfile, $outfile)=@_; my %s, %h ; my $result; my (@profiles); &set_temporary_dir ("set",$infile,"seq.pep"); %s=read_fasta_seq ("seq.pep"); %pdb_template_h = &read_template_file($pdbfile); my $pdb_chain; open (R, ">result.aln"); #print stdout "\n"; foreach $seq (keys(%s)) { if ($pdb_template_h{$seq} eq "") { next; } open (F, ">seqfile"); print (F ">$s{$seq}{name}\n$s{$seq}{seq}\n"); close (F); $pdb_chain = $pdb_template_h{$seq}; $lib_name="$s{$seq}{name}.rfold"; $lib_name=&clean_file_name ($lib_name); safe_system ("secondary_struc.py seqfile $CACHE$pdb_chain $lib_name"); if ( !-e $lib_name) { print STDERR ("RNAplfold failed to compute the secondary structure of $s{$seq}{name} [FATAL:$mode/$method/$program]\n"); myexit ($EXIT_FAILURE); } else { print stdout "\tProcess: >$s{$seq}{name} _F_ $lib_name\n"; print R ">$s{$seq}{name} _F_ $lib_name\n"; } unshift (@profiles, $lib_name); } close (R); &set_temporary_dir ("unset",$mode, $method,"result.aln",$outfile, @profiles); } sub seq2rna_pair{ my ($mode, $pdbfile1, $pdbfile2, $method, $param, $outfile)=@_; if ($method eq "runsara.py") { open(TMP,"<$pdbfile1"); my $count = 0; my $line; while () { $line = $_; if ($count ==1) { last; } $count += 1; } $chain1 = substr($line,length($line)-3,1); close TMP; open(TMP,"<$pdbfile2"); my $count = 0; while () { $line = $_; if ($count ==1) { last; } $count += 1; } $chain2 = substr($line,length($line)-3,1); close TMP; srand; $rand=rand (100000); $tmp_file = "file.$rand"; while ( -e $tmp_file) { $rand=rand (100000); $tmp_file = "file.$rand"; } system("runsara.py $pdbfile1 $chain1 $pdbfile2 $chain2 -s -o $tmp_file --limitation 5000 > /dev/null 2> /dev/null") == 0 or die "sara did not work $!\n"; open(TMP,"<$tmp_file") or die "cannot open the sara tmp file:$!\n"; open(OUT,">$outfile") or die "cannot open the $outfile file:$!\n"; my $switch = 0; my $seqNum = 0; foreach my $line () { next unless ($line=~/SARAALI/); if ($line=~/>/) { $switch =0; print OUT ">seq$seqNum\n"; $seqNum++; } if ($switch < 2){ $switch++; next; } if ($line =~/REMARK\s+SARAALI\s+([^\*]+)\*/) { my $string = $1; print OUT "$string\n"; } } close TMP; close OUT; unlink($tmp_file); } } sub seq2tblastx_lib { my ($mode, $infile, $outfile)=@_; my (%s, $method,$nseq); $method=$mode; &set_temporary_dir ("set",$infile,"infile"); %s=read_fasta_seq("infile"); foreach $seq (keys(%s)) { $slist[$s{$seq}{order}]=$s{$seq}{seq}; $sname[$s{$seq}{order}]=$s{$seq}{name}; $slen[$s{$seq}{order}]=length ($s{$seq}{seq}); } $nseq=$#sname+1; open (F, ">outfile"); print F "! TC_LIB_FORMAT_01\n"; print F "$nseq\n"; for ($a=0; $a<$nseq;$a++) { print F "$sname[$a] $slen[$a] $slist[$a]\n" } close (F); `formatdb -i infile -p F`; `blastall -p tblastx -i infile -d infile -m 7 -S1>blast.output`; ncbi_tblastx_xml2lib_file ("outfile", file2string ("blast.output")); &set_temporary_dir ("unset",$mode, $method, "outfile",$outfile); myexit ($EXIT_SUCCESS); } sub seq2tblastpx_lib { my ($mode, $infile, $outfile)=@_; my (%s, $method,$nseq); $method=$mode; &set_temporary_dir ("set",$infile,"infile"); %s=read_fasta_seq("infile"); foreach $seq (keys(%s)) { $slist[$s{$seq}{order}]=$s{$seq}{seq}; $sname[$s{$seq}{order}]=$s{$seq}{name}; $slen[$s{$seq}{order}]=length ($s{$seq}{seq}); } $nseq=$#sname+1; open (F, ">outfile"); print F "! TC_LIB_FORMAT_01\n"; print F "$nseq\n"; for ($a=0; $a<$nseq;$a++) { print F "$sname[$a] $slen[$a] $slist[$a]\n" } close (F); `printenv > /home/notredame/tmp/ce`; `t_coffee -other_pg seq_reformat -in infile -output tblastx_db1 > tblastxdb`; `formatdb -i tblastxdb -p T`; `blastall -p blastp -i tblastxdb -d tblastxdb -m7 >blast.output`; ncbi_tblastpx_xml2lib_file ("outfile", file2string ("blast.output"), %s); &set_temporary_dir ("unset",$mode, $method, "outfile",$outfile); myexit ($EXIT_SUCCESS); } $program="T-COFFEE (Version_8.32)";\n *TC_METHOD_FORMAT_01 ******************generic_method.tc_method************* * * Incorporating new methods in T-Coffee * Cedric Notredame 26/08/08 * ******************************************************* *This file is a method file *Copy it and adapt it to your need so that the method *you want to use can be incorporated within T-Coffee ******************************************************* * USAGE * ******************************************************* *This file is passed to t_coffee via -in: * * t_coffee -in Mgeneric_method.method * * The method is passed to the shell using the following *call: * * *Conventions: * *: no_name <=> Replaced with a space *:   <=> Replaced with a space * ******************************************************* * ALN_MODE * ******************************************************* *pairwise ->all Vs all (no self )[(n2-n)/2aln] *m_pairwise ->all Vs all (no self)[n^2-n]^2 *s_pairwise ->all Vs all (self): [n^2-n]/2 + n *multiple ->All the sequences in one go * ALN_MODE pairwise * ******************************************************* * OUT_MODE * ******************************************************* * mode for the output: *External methods: * aln -> alignmnent File (Fasta or ClustalW Format) * lib-> Lib file (TC_LIB_FORMAT_01) *Internal Methods: * fL -> Internal Function returning a List (Librairie) * fA -> Internal Function returning an Alignmnent * OUT_MODE aln ******************************************************* * SEQ_TYPE * ******************************************************* *G: Genomic, S: Sequence, P: PDB, R: Profile *Examples: *SEQTYPE S sequences against sequences (default) *SEQTYPE S_P sequence against structure *SEQTYPE P_P structure against structure *SEQTYPE PS mix of sequences and structure * SEQ_TYPE S * ******************************************************* * COMMAND LINE * *EXECUTABLE PARAM1 IN_FLAG OUT_FLAG PARAM * ******************************************************* ******************************************************* * EXECUTABLE * ******************************************************* *name of the executable *passed to the shell: executable * EXECUTABLE tc_generic_method.pl * ******************************************************* * IN_FLAG * ******************************************************* *IN_FLAG *flag indicating the name of the in coming sequences *IN_FLAG S no_name ->no flag *IN_FLAG S &bnsp-in&bnsp -> " -in " * IN_FLAG -infile= * ******************************************************* * OUT_FLAG * ******************************************************* *OUT_FLAG *flag indicating the name of the out-coming data *same conventions as IN_FLAG *OUT_FLAG S no_name ->no flag *if you want to redirect, pass the parameters via PARAM1 *set OUT_FLAG to > * OUT_FLAG -outfile= * ******************************************************* * PARAM_1 * ******************************************************* * *Parameters sent to the EXECUTABLE and specified *before* IN_FLAG *If there is more than 1 PARAM line, the lines are *concatenated *Command_line: @EP@PARAM@-gapopen%e10%s-gapext%e20 * %s white space * %e equal sign * *PARAM1 * * * ******************************************************* * PARAM_2 * ******************************************************* * *Parameters sent to the EXECUTABLE and specified *after* IN_FLAG and *before* OUT_FLAG *If there is more than 1 PARAM line, the lines are *concatenated * *PARAM1 * * ******************************************************* * PARAM * ******************************************************* * *Parameters sent to the EXECUTABLE and specified *after* OUT_FLAG *If there is more than 1 PARAM line, the lines are *concatenated * PARAM -mode=seq_msa -method=clustalw PARAM -OUTORDER=INPUT -NEWTREE=core -align -gapopen=-15 * ******************************************************* * END * ******************************************************* *TC_METHOD_FORMAT_01 ***************clustalw_method.tc_method********* EXECUTABLE clustalw ALN_MODE pairwise IN_FLAG -INFILE= OUT_FLAG -OUTFILE= OUT_MODE aln PARAM -gapopen=-10 SEQ_TYPE S ************************************************* $VersionTag = 2.43; $SILENT=" >/dev/null 2>/dev/null"; $EXIT_SUCCESS=0; $EXIT_FAILURE=1; $INTERNET=-1; use FileHandle; use Env qw(HOME); my %onelett_prot=&fill_onelett_prot(); my %threelett_prot=&fill_threelett_prot(); my %onelett_RNA=&fill_onelett_RNA(); my %threelett_RNA=&fill_threelett_RNA(); my %onelett_DNA=&fill_onelett_DNA(); my %threelett_DNA=&fill_threelett_DNA(); my %onelett = ( 'P' => \%onelett_prot, 'D' => \%onelett_DNA, 'R' => \%onelett_RNA ); my %threelett = ( 'P' => \%threelett_prot, 'D' => \%threelett_DNA, 'R' => \%threelett_RNA ); if($ARGV[0]=~/help/ ||$ARGV[0]=~/man/ || $ARGV[0]=~/HELP/ || $ARGV[0]=~/Man/ || $ARGV[0] eq "-h" || $ARGV[0] eq "-H" ) {die "SYNTAX: extract_from_pdb Version $VersionTag Minimum: [extract_from_pdb file] OR [... | extract_from_pdb] Flags (Default setting on the first line) -version...................[Returns the Version Number] -force.....................[Forces the file to be treated like a PDB file] [Regenerates the header and SEQRES fields] -force_name................[Forces the file to be named after name]] -infile.....file...........[Flag can be omited] [File must be pdb or fro pgm] [File can also be compressed Z or gz] [In the case of a compressed file, you can omit the gz|Z extension] -netfile...................[File will be fetch from the net using wget] [wget or curl must be installed] [ftp://ftp.gnu.org/pub/gnu/wget/] [http://curl.haxx.se/] [Must also be used to retrieve the file from a local pdb copy (cf netaddress)] -netaddress................[Address used for the retrieving the netfile] [http://www.rcsb.org/pdb/cgi/export.cgi/%%.pdb.gz?format=PDB&pdbId=%%&compression=gz] [http://www.expasy.ch/cgi-bin/get-pdb-entry.pl?%%] [local -> will get the file from pdb_dir (see pdb_dir)] -netcompression............[Extension if the netfile comes compressed] [gz] -pdb_dir...................[address of the repertory where the pdb is installed] [Supports standard ftp style installation OR every stru in DIR] [Give the ..../pdb/structure/ dir] [If value omitted, the pg gets it from the env variable PDB_DIR] -netcompression_pg.........[gunzip] -is_pdb_name........name...[Returns 1 if the name is a PDB ID, 0 otherwise] -get_pdb_chains.....name...[Returns the list of chains corresponding to the entry] -get_pdb_id.........name...[Returns the PDB id within the provided pdb file] -get_fugue_name.....name...[Turns a name into a name valid for fugue] [Uses the netaddress to do so] -chain......FIRST..........[Extract the first chain only] A B C..........[Extract Several chains if needed] ALL............[Extract all the chains] -ligand.....ALL............[Extract the ligands in the chain (HETATM)] ,[Extract All the named lignds] -ligand_only...............[Extract only the ligands] -ligand_list...............[Extract the list of ligands] -coor..........[Coordinates of the fragment to extract] [Omit end to include the Cter] -num........absolute.......[absolute: relative to the seq] file...........[file: relative to file] -num_out....new............[new: start 1->L] old............[old: keep the file coordinates] -delete........[Delete from residue start to residue end] -atom.......CA.............[Atoms to include, ALL for all of them] CA O N.........[Indicate several atoms if needed] -code.......3..............[Use the 1 letter code or the 3 letters code] -mode.......raw............[Output original pdb file] pdb............[Output something that looks like pdb] fasta..........[Output the sequences in fasta format] simple.........[Output a format easy to parse in C ] -seq_field..ATOM...........[Field used to extract the sequence] SEQRES.........[Use the complete sequence] -seq.......................[Equivalent to -mode fasta] -model......1..............[Chosen Model in an NMR file] -nodiagnostic..............[Switches Error Messages off] -debug.....................[Sets the DEBUG ON] -no_remote_pdb_dir.........[Do not look for a remote file] -cache_pdb.................[Cache Value, default is $HOME/.t_coffee/cache, other values: NO<=> No cache] Environement Variables These variables can be set from the environement Command line values with the corresponding flag superseed evironement value NO_REMOTE_PDB_DIR..........[Prevents the program from searching remote file: faster] PDB_DIR....................[Indicates where PDB file must be fetched (localy)] PROBLEMS: please contact cedric.notredame\@europe.com\n"; exit ($EXIT_SUCCESS); } $np=0; $n_para=$#ARGV; $model=1; $pdb_dir=$ENV{'PDB_DIR'};if ($pdb_dir){$pdb_dir.="/";} $debug=$ENV{'DEBUG_EXTRACT_FROM_PDB'}; $no_remote_pdb_dir=$ENV{NO_REMOTE_PDB_DIR}; $HOME=$ENV{'HOME'}; if ( $ENV{CACHE_4_TCOFFEE}) {$cache=$ENV{CACHE_4_TCOFFEE};} else { $cache="$HOME/.t_coffee/cache/"; } $netaddress="http://www.rcsb.org/pdb/files/%%.pdb.gz"; $netcompression_pg="gunzip"; $netcompression="gz"; foreach ($np=0; $np<=$n_para; $np++) { $value=$ARGV[$np]; if ($np==0 && !($value=~/^-.*/)) { $pdb_file= $ARGV[$np]; } elsif ( !($value=~/^-.*/)) { print "@ARGV"; die; } elsif ($value eq "-nodiagnostic"){$nodiagnostic=1;} elsif ($value eq "-force") { $force_pdb=1; } elsif ($value eq "-force_name") { $force_name=$ARGV[++$np]; $force_pdb=1; } elsif ($value eq "-is_pdb_name") { $pdb_file= $ARGV[++$np]; $is_pdb_name=1; } elsif ($value eq "-debug") { $debug=1; } elsif ($value eq "-get_pdb_chains") { $pdb_file= $ARGV[++$np]; $get_pdb_chains=1; } elsif ($value eq "-get_pdb_ligands") { $get_pdb_ligands=1; } elsif ($value eq "-get_pdb_id") { $pdb_file= $ARGV[++$np]; $get_pdb_id=1; } elsif ( $value eq "-get_fugue_name") { $pdb_file= $ARGV[++$np]; $get_fugue_name=1; } elsif ( $value eq "-infile") { $pdb_file= $ARGV[++$np]; } elsif ($value eq "-netfile") { $netfile=1; if ( !($ARGV[$np+1]=~/^-.*/)){$pdb_file= $ARGV[++$np];} } elsif ( $value eq "-num") { $numbering= $ARGV[++$np]; } elsif ( $value eq "-num_out") { $numbering_out= $ARGV[++$np]; } elsif ( $value eq "-netaddress") { $netadress=$ARGV[++$np]; } elsif ( $value eq "-netcompression") { $netcompression=$ARGV[++$np]; } elsif ( $value eq "-pdb_dir") { if ( !($ARGV[$np+1]=~/^-.*/)){$pdb_dir= "$ARGV[++$np]/";} } elsif ( $value eq "-no_remote_pdb_dir") { $no_remote_pdb_dir=1; if ( !($ARGV[$np+1]=~/^-.*/)){$pdb_dir= "$ARGV[++$np]/";} } elsif ( $value eq "-cache") { $cache=$ARGV[++$np]; } elsif ($value eq "-netcompression_pg") { $netcompression_pg=$ARGV[++$np]; } elsif ($value eq "-mode") { $MODE=$ARGV[++$np]; } elsif ( $value eq "-model") { $model= $ARGV[++$np]; } elsif ($value eq "-seq_field" ) { $seq_field= $ARGV[++$np]; } elsif ($value eq "-coor" ) { $start= $ARGV[++$np]; if (($ARGV[$np+1] eq "") ||($ARGV[$np+1]=~/^-.*/)){$end="*";} else {$end= $ARGV[++$np];} $coor_set=1; } elsif ($value eq "-delete" ) { $delete_start= $ARGV[++$np]; $delete_end= $ARGV[++$np]; $delete_set=1; } elsif ($value eq "-code") { $code= $ARGV[++$np]; } elsif ($value eq "-no_hetatm") { $no_hetatm=1; } elsif ($value eq "-chain") { while (!($ARGV[$np+1] eq "") &&!($ARGV[$np+1]=~/^-.*/)) { ++$np; @c_chain=(@chain, $ARGV[$np]); $hc_chain{$ARGV[$np]}=$#c_chain+1; } } elsif ($value eq "-atom") { while (!($ARGV[$np+1] eq "") && !($ARGV[$np+1]=~/^-.*/)) { ++$np; $atom[$n_atom++]= $ARGV[$np]; $atom_list{$ARGV[$np]}=1; } } elsif ( $value eq "-unfold") { $unfold=1; } elsif ($value eq "-seq" ||$value eq "-fasta" ) { $MODE="fasta"; } elsif ( $value eq "-version") { print STDERR "\nextract_from_pdb: Version $VersionTag\n"; &myexit ($EXIT_SUCCESS); } elsif ( $value eq "-ligand") { while (!($ARGV[$np+1] eq "") && !($ARGV[$np+1]=~/^-.*/)) { ++$np; $ligand=1; $ligand_list{$ARGV[$np]}=1; } $hc_chain{'LIGAND'}=1; } elsif ( $value eq "-ligand_only") { $ligand_only=1; } } if ( $debug) { print STDERR "\n[DEBUG:extract_from_pdb] NO_REMOTE_PDB_DIR: $no_remote_pdb_dir\n"; print STDERR "\n[DEBUG:extract_from_pdb] PDB_DIR: $pdb_dir\n"; } if ( $is_pdb_name) { if (remote_is_pdb_name($pdb_file, $netaddress)) { print "1"; } else { print "0"; } exit ($EXIT_SUCCESS); } if (!$force_name) { $pdb_file=~/([^\/]*)$/; $force_name=$1; } $local_pdb_file=$pdb_file; if ( $debug){print STDERR "\n[DEBUG: extract_from_pdb] Scan For $local_pdb_file\n";} $mem=$no_remote_pdb_dir; $no_remote_pdb_dir=1; $tmp_pdb_file=get_pdb_file ($local_pdb_file); if ( !-e $tmp_pdb_file || $tmp_pdb_file eq "") { $local_pdb_file=$pdb_file; ($local_pdb_file, $suffix_chain)=&pdb_name2name_and_chain($local_pdb_file); if ($local_pdb_file) { if ( $debug){print STDERR "\nSplit $pdb_file into $local_pdb_file and $suffix_chain \n";} $tmp_pdb_file=get_pdb_file ($local_pdb_file); if ( $tmp_pdb_file ne "") { @c_chain=(); @c_chain=($suffix_chain); %hc_chain=(); $hc_chain{$suffix_chain}=1; } } } $no_remote_pdb_dir=$mem; if ($no_remote_pdb_dir==0) { if ( !-e $tmp_pdb_file || $tmp_pdb_file eq "") { $local_pdb_file=$pdb_file; ($local_pdb_file, $suffix_chain)=&pdb_name2name_and_chain($local_pdb_file); if ($local_pdb_file) { if ( $debug){print STDERR "\nSplit $pdb_file into $local_pdb_file and $suffix_chain \n";} $tmp_pdb_file=get_pdb_file ($local_pdb_file); if ( $tmp_pdb_file ne "") { @c_chain=(); @c_chain=($suffix_chain); %hc_chain=(); $hc_chain{$suffix_chain}=1; } } } } if ( $debug){print STDERR "\n$pdb_file copied into ##$tmp_pdb_file##\n";} if ( !-e $tmp_pdb_file || $tmp_pdb_file eq "") { if ($is_pdb_name) { print "0\n"; exit ($EXIT_SUCCESS); } else { print "\nEXTRACT_FROM_PDB: NO RESULT for $pdb_file [FATAL:EXTRACT_FROM_PDB Version $VersionTag]\n"; &myexit ($EXIT_FAILURE); } } %molecule_type=&pdbfile2chaintype($tmp_pdb_file); $pdb_id=&get_pdb_id ($tmp_pdb_file); if ( $pdb_id eq ""){$pdb_id=$force_name;} @f_chain=&get_chain_list ($tmp_pdb_file); if ( $get_pdb_chains) { print "@f_chain\n"; &myexit ($EXIT_SUCCESS); } if ( $get_pdb_ligands) { %complete_ligand_list=&get_ligand_list ($tmp_pdb_file); print $complete_ligand_list{"result"}; &myexit ($EXIT_SUCCESS); } elsif ( $get_pdb_id ||$get_fugue_name ) { if (@c_chain && $c_chain[0] eq "FIRST"){$pdb_id=$pdb_id.$f_chain[0];} elsif (@c_chain && $c_chain[0] ne " "){$pdb_id=$pdb_id.$c_chain[0];} print "$pdb_id\n"; &myexit ($EXIT_SUCCESS); } elsif ( $is_pdb_name) { printf "1\n"; &myexit ($EXIT_SUCCESS); } $structure_file=vtmpnam(); $INFILE=vfopen ("$tmp_pdb_file", "r"); $TMP=vfopen ("$structure_file", "w"); $print_model=1; $in_model=0; while ( <$INFILE>) { my $first_model=0; $line=$_; if ( !$first_model && ($line =~/^MODEL\s*(\d*)/)) { $first_model=$1; if ($model==1){$model=$first_model;} } if (($line =~/^MODEL\s*(\d*)/)) { if ($1==$model) { $in_model=1; $print_model=1; $is_nmr=1; } elsif ( $in_model==0) { $print_model=0; } elsif ( $in_model==1) { last; } } if ($print_model){print $TMP $line;} } close ($TMP); close ($INFILE); if ($numbering eq ""){$numbering="absolute";} if ($numbering_out eq ""){$numbering_out="new";} if ( $delete_set && $coor_set) {die "-delete and -coor are mutually exclusive, sorry\n";} if ( $n_atom==0){$atom_list[$n_atom++]="ALL";$atom_list{$atom_list[0]}=1;} if ( $seq_field eq ""){$seq_field="ATOM";} if ( $MODE eq ""){$MODE="pdb";} elsif ( $MODE eq "simple" && $code==0){$code=1;} if ( $code==0){$code=3;} if ($f_chain[0] eq " "){$hc_chain{' '}=1;$c_chain[0]=" ";} elsif (!@c_chain){$hc_chain{FIRST}=1;$c_chain[0]="FIRST";}#make sure the first chain is taken by default if ($hc_chain{ALL}) { @c_chain=@f_chain; foreach $e (@c_chain){$hc_chain{$e}=1;} } elsif($hc_chain{FIRST}) { @c_chain=($f_chain[0]); $hc_chain{$f_chain[0]}=1; } $MAIN_HOM_CODE=&get_main_hom_code ($structure_file); $INFILE=vfopen ($structure_file, "r"); if ( $MODE eq "raw_pdb" || $MODE eq "raw") { while (<$INFILE>) { print "$_";} close ( $INFILE); &myexit($EXIT_SUCCESS); } if ( $MODE eq "raw4fugue" ) { while (<$INFILE>) { $l=$_; if ($l=~/^SEQRES/) { $c= substr($l,11,1); if ($hc_chain {$c}){print "$l";} } elsif ( $l=~/^ATOM/) { $c=substr($l,21,1); if ($hc_chain {$c}){print "$l";} } } close ( $INFILE); &myexit($EXIT_SUCCESS); } if ( $MODE eq "pdb") { $read_header=0; while (<$INFILE>) { $line=$_; if ($line =~ /^HEADER/){print "$line";$read_header=1;} } close ($INFILE); if (!$read_header) { print "HEADER UNKNOWN 00-JAN-00 $force_name\n"; } $INFILE=vfopen ($structure_file, "r"); print "COMPND 1 CHAIN:"; $last=pop(@c_chain); foreach $c ( @c_chain){ print " $c,";} if ( $last eq " "){print " NULL;\n";} else { print " $last;\n"; } @c_chain=(@c_chain, $last); print "REMARK Output of the program extract_from_pdb (Version $VersionTag)\n"; print "REMARK Legal PDB format not Guaranteed\n"; print "REMARK This format is not meant to be used in place of the PDB format\n"; print "REMARK The header refers to the original entry\n"; print "REMARK The sequence from the original file has been taken in the field: $seq_field\n"; print "REMARK extract_from_pdb, 2001, 2002, 2003, 2004, 2005 2006 (c) CNRS and Cedric Notredame\n"; if ( $coor_set) { print "REMARK Partial chain: Start $start End $end\n"; } if ( $is_nmr) { print "REMARK NMR structure: MODEL $model\n"; } if ( $n_atom!=0) { print "REMARK Contains Coordinates of: "; foreach $a (@atom){print "$a ";} print "\n"; } } my $residue_index = -999; my $old_c = "TemporaryChain"; while (<$INFILE>) { $line=$_; if ($line =~ /^SEQRES/) { @field=/(\S*)\s*/g; $c= substr($_,11,1); $l=$#field; for ($a=4; $a<$#field ;) { if (!$onelett{$molecule_type{$c}}->{$field[$a]}) { splice @field, $a, 1; } else { $a++; } } if ( $c ne $in_chain) { $pdb_chain_list[$n_pdb_chains]=$c; $pdb_chain_len [$n_pdb_chains]=$len; $in_chain=$c; $n_pdb_chains++; } for ( $a=4; $a<$#field;$a++) { @{$complete_seq{$c}}->[$complete_seq_len{$c}++]=$field[$a]; } } elsif ( $line=~/^ATOM/ || ($line=~/^HETATM/ && &is_aa(substr($line,17,3),substr($line,21,1)) && !$no_hetatm)) { $RAW_AT_ID=$AT_ID=substr($line,12,4); $RES_ID=&is_aa(substr($line,17,3),substr($line,21,1)); $CHAIN=substr($line,21,1); $RES_NO=substr($line,22,4); $HOM_CODE=substr ($line, 26, 1); $TEMP=substr($line,60,6); $TEMP=~s/\s//g; $AT_ID=~s/\s//g; $RES_ID=~s/\s//g; $RES_NO=~s/\s//g; if ( $HOM_CODE ne $MAIN_HOM_CODE){next;} elsif ( $already_read2{$CHAIN}{$RES_ID}{$AT_ID}{$RES_NO}){next;} else{$already_read2{$CHAIN}{$RES_ID}{$AT_ID}{$RES_NO}=1;} if ($coor_set && $numbering eq "file" && $residue_index ne $RES_NO) { if ( $RES_NO<=$start){$real_start{$CHAIN}++;} if ( $RES_NO<=$end){$real_end{$CHAIN}++;} } elsif ($numbering eq "absolute") { $real_start{$CHAIN}=$start; $real_end{$CHAIN}=$end; } $KEY="ALL"; if ( $CHAIN ne $in_atom_chain) { $pdb_atom_chain_list[$n_pdb_atom_chains]=$c; $pdb_atom_chain_len [$n_pdb_atom_chains]=$len; $in_atom_chain=$c; $n_pdb_atom_chains++; } if ( $residue_index ne $RES_NO) { $residue_index = $RES_NO; @{$atom_seq{$CHAIN}}->[$atom_seq_len{$CHAIN}++]=$RES_ID;; } } } close ($INFILE); $INFILE=vfopen ($structure_file, "r"); foreach $c (@c_chain) { if ( $seq_field eq "SEQRES"){@pdb_seq=@{$complete_seq{$c}};} elsif ( $seq_field eq "ATOM") {@pdb_seq=@{$atom_seq{$c}};} $full_length=$l=$#pdb_seq+1; if ( $real_end{$c}=="*"){$real_end{$c}=$full_length;} if ( $coor_set) { if ( $real_end{$c} < $l){splice @pdb_seq, $real_end{$c}, $l;} if ( $real_start{$c} < $l){splice @pdb_seq, 0, $real_start{$c}-1;} $l=$#pdb_seq; } elsif ( $delete_set) { splice @pdb_seq, $delete_start, $delete_end-$delete_start+1; $l=$#pdb_seq; } $new_fasta_name="$pdb_id$c"; if ( $coor_set) { if ( $n_pdb_chains==0){$new_fasta_name="$new_fasta_name$c";} $new_fasta_name= $new_fasta_name."\_$start\_$end"; } if ( $MODE eq "pdb") { $nl=1; $n=0; foreach $res ( @pdb_seq) { if ( !$n) { printf "SEQRES %3d %1s %4d ", $nl,$c, $l; $nl++; } $res=~s/\s//g; if ($code==1){ printf "%3s ",$onelett{$molecule_type{$c}}->{$res};} elsif ($code==3){ printf "%3s ",$res}; $n++; if ( $n==13){$n=0;print "\n";} } if ( $n!=0){print "\n"; $n=0;} } elsif ( $MODE eq "simple") { print "# SIMPLE_PDB_FORMAT\n"; if ( $new_fasta_name eq " "){$new_fasta_name="dummy_name";} print ">$new_fasta_name\n"; foreach $res ( @pdb_seq) { print "$onelett{$molecule_type{$c}}->{$res}"; } print "\n"; } elsif ( $MODE eq "fasta") { $n=0; print ">$new_fasta_name\n"; foreach $res ( @pdb_seq) { print "$onelett{$molecule_type{$c}}->{$res}"; $n++; if ( $n==60){print "\n"; $n=0;} } print "\n"; } } if ( $MODE eq "fasta") { &myexit($EXIT_SUCCESS); } $charcount=0; $inchain="BEGIN"; $n=0; while (<$INFILE>) { $line=$_; if ($line =~/^ATOM/ || ($line=~/^HETATM/)) { $line_header="UNKNWN"; $RES_ID=substr($line,17,3); $chain = substr($line,21,1); if ($line =~/^ATOM/) { $line_header="ATOM"; $RES_ID=(&is_aa($RES_ID,$chain))?&is_aa($RES_ID,$chain):$RES_ID; } elsif ($line=~/^HETATM/ && ($ligand_list {$RES_ID} ||$ligand_list {'ALL'} || !&is_aa($RES_ID,$chain))) { $line_header="HETATM"; } elsif ($line=~/^HETATM/ && (&is_aa($RES_ID,$chain) && !$no_hetatm)) { $line_header="ATOM"; $RES_ID=&is_aa($RES_ID,$chain); } else { next; } $X=substr($line,30,8); $Y=substr($line,38,8); $Z=substr($line,46,8); $TEMP=substr($line,60,6); $RAW_AT_ID=$AT_ID=substr($line,12,4); $CHAIN=substr($line,21,1); $RES_NO=substr($line,22,4); $HOM_CODE=substr ($line, 26, 1); $X=~s/\s//g; $Y=~s/\s//g; $Z=~s/\s//g; $TEMP=~s/\s//g; $AT_ID=~s/\s//g; $RES_ID=~s/\s//g; $RES_NO=~s/\s//g; if ( $HOM_CODE ne $MAIN_HOM_CODE){next;} elsif ( $already_read{$CHAIN}{$RES_ID}{$AT_ID}{$RES_NO}){next;} else{$already_read{$CHAIN}{$RES_ID}{$AT_ID}{$RES_NO}=1;} $KEY="ALL"; if ( $RES_NO ==0){$start_at_zero=1;} $RES_NO+=$start_at_zero; if ( $current_chain ne $CHAIN) { $current_chain=$CHAIN; $pos=$current_residue=0; $offset=($coor_set)?($real_start{$CHAIN}-1):0; if ( $seq_field eq "SEQRES"){@ref_seq=@{$complete_seq{$CHAIN}};} elsif ( $seq_field eq "ATOM") {@ref_seq=@{$atom_seq{$CHAIN}};} } if ($current_residue != $RES_NO) { $current_residue=$RES_NO; if ( $seq_field eq "SEQRES"){$pos=$current_residue;} elsif ( $seq_field eq "ATOM"){$pos++;} } if ($n_atom==0 || $atom_list{$AT_ID}==1 || $atom_list{$KEY}==1) { $do_it=(!@c_chain || $hc_chain{$CHAIN} ||$hc_chain{'LIGAND'} ); $do_it= ($do_it==1) && ($coor_set==0 ||($pos>=$real_start{$CHAIN} && $pos<=$real_end{$CHAIN})); $do_it= ($do_it==1) && ($delete_set==0 || $pos<$delete_start ||$pos>$delete_end ); if ($ligand==0 && $line_header eq "HETATM" ){$do_it=0;} if ($ligand_only==1 && $line_header eq "ATOM" ){$do_it=0;} if ($ligand==1 && $line_header eq "HETATM" && $ligand_list{$RES_ID}==0 && $ligand_list{"ALL"}==0){$do_it=0;} if ( $do_it) { $n++; $out_pos=$pos; if ( $delete_set) { if ( $out_pos< $delete_start){;} else {$offset=$delete_end-$delete_start;} } if ( $numbering_out eq "new"){$out_pos-=$offset;} elsif ( $numbering_out eq "old"){$out_pos=$RES_NO;} if ( $code==1){$RES_ID=$onelett{$molecule_type{$c}}->{$RES_ID};} if ($unfold) { $unfolded_x+=5; $X=$unfolded_x; $Y=0; $Z=0; $float=1; } else { $float=3; } if ( $MODE eq "pdb") { printf "%-6s%5d %-4s %3s %s%4d %8.3f%8.3f%8.3f 1.00 %5.2f\n",$line_header, $n, $RAW_AT_ID,$RES_ID,$CHAIN,$out_pos, $X, $Y, $Z,$TEMP; } elsif ( $MODE eq "simple") { if ( $RES_ID eq ""){$RES_ID="X";} printf "%-6s %5s %s %2s %4d %8.3f %8.3f %8.3f\n",$line_header, $AT_ID, $RES_ID,($CHAIN eq"" || $CHAIN eq " ")?"A":$CHAIN,$out_pos, $X, $Y, $Z,$TEMP; } } } } } print "\n"; close($INFILE); if ( $error ne "") {$error=$error."\nDiagnostic: SEQRES and the residues in ATOM are probably Incompatible\n"; $error=$error. "Recomendation: Rerun with '-fix 1' in order to ignore the SEQRES sequences\n"; } if (!$nodiagnostic){print STDERR $error;} &myexit ( $EXIT_SUCCESS); sub remote_is_pdb_name { my $in=@_[0]; my $netaddress=@_[1]; my $ref_file, $pdb; my $value; if ( $in=~/[^\w\d\:\_]/){return 0;} $ref_file="$cache/pdb_entry_type.txt"; if ( !-e $ref_file || (-M $ref_file)>2 || -z $ref_file) { &url2file("ftp://ftp.wwpdb.org/pub/pdb/derived_data/pdb_entry_type.txt", $ref_file); } $pdb=substr ($in,0, 4); $value=`grep -c $pdb $ref_file`; return $value; } sub is_pdb_file { my @arg=@_; if ( !-e $arg[0]){return 0;} $F=vfopen ($arg[0], "r"); while ( <$F>) { if (/^HEADER/) { close $F; return 1; } elsif ( /^SEQRES/) { close $F; return 1; } elsif ( /^ATOM/) { close $F; return 1; } } return 0; } sub get_pdb_id { my $header_file=@_[0]; my $id; $F=vfopen ("$header_file", "r"); while ( <$F>) { if ( /HEADER/) { $id=substr($_,62,4 ); return $id; } } close ($F); return ""; } sub get_ligand_list { my $pdb_file=@_[0]; my $chain; my $ligand; my %complete_ligand_list; $F=vfopen ($pdb_file, "r"); while ( <$F>) { if ( /^HETATM/) { $line=$_; $chain=substr($line,21,1); $ligand=substr($line,17,3); if (!$complete_ligand_list{$chain}{$ligand}) { $complete_ligand_list{"result"}.="CHAIN $chain LIGAND $ligand\n"; $complete_ligand_list{$chain}{$ligand}=1; } } } close ($F); return %complete_ligand_list; } sub get_chain_list { my $header_file; my @chain_list; my @list; my $n_chains; my %chain_hasch; my $pdb_file=@_[0]; my $c; my %hasch; my $chain; $F=vfopen ($pdb_file, "r"); while ( <$F>) { if (/SEQRES\s+\d+\s+(\S+)/) { $chain = substr($_,11,1);$chain=~s/\s//g;if ( $chain eq ""){$chain=" ";} if (!$hasch{$chain}){$hasch{$chain}=1;push @chain_list, $chain;} } if (/^ATOM/ || /^HETATM/) { $chain = substr($_,21,1); $chain=~s/\s//g;if ( $chain eq ""){$chain=" ";} if (!$hasch{$chain}){$hasch{$chain}=1;push @chain_list, $chain;} } } close ($F); if (!@chain_list) { @chain_list=("A"); } return @chain_list; } sub token_is_in_list { my @list=@_; my $a; for ($a=1; $a<=$#list; $a++) { if ( $list[$a] eq $list[0]){return $a;} } } sub pdb_name2name_and_chain { my $pdb_file=@_[0]; my $pdb_file_in; my @array; my $chain; my $c; $pdb_file_in=$pdb_file; $pdb_file=~/^(.{4})/;$pdb_id=$1; @array=($pdb_file=~/([\w])/g); $chain=uc ($array[4]); $chain=($chain eq "")?"FIRST":$chain; return ( $pdb_id, $chain); if ( $#array==3){return ($pdb_id, "FIRST");} elsif ( $#array<4){ return ($pdb_id, "");} else {return ( $pdb_id, $chain);} } sub get_main_hom_code { my $pdb_file=@_[0]; my %hom, $n, $best, $best_h; open (F, $pdb_file); while () { if ( $_=~/^ATOM/) { $h=substr ($_,26, 1); $n=++$hom{$h}; if ($n>$best) { $best=$n; $best_h=$h; } } } close (F); return $best_h; } sub get_pdb_file { my ($pdb_file_in)=(@_); my $result; my @letter; my @chain; my $v; my $pdb_file=$pdb_file_in; $pdb_file=($pdb_file_in=~/\S+_S_(\S+)/)?$1:$pdb_file_in; if ($no_remote_pdb_dir==0) { $no_remote_pdb_dir=1; $result=get_pdb_file3 ($pdb_file); $no_remote_pdb_dir=0; if ( $result){return $result;} else { lc ($pdb_file); $result=get_pdb_file3($pdb_file); return $result; } } else { return get_pdb_file3 ($pdb_file); } } sub get_pdb_file3 { my $pdb_file_in=@_[0]; my $result; my @letter; my @chain; my $lcfile; my $ucfile; my $pdb_file=$pdb_file_in; $lcfile=lc $pdb_file; $ucfile=uc $pdb_file; if ( ($result=get_pdb_file2 ($pdb_file))){return $result;} if ($lcfile ne $pdb_file && ($result=get_pdb_file2 ($lcfile))){return $result;} if ($ucfile ne $pdb_file && ($result=get_pdb_file2 ($ucfile))){return $result;} return ""; } sub get_pdb_file2 { my $pdb_file=@_[0]; my $return_value; $return_value=""; if ( ($result=get_pdb_file1 ($pdb_file))){$return_value=$result;} elsif ( !($pdb_file=~/\.pdb/) && !($pdb_file=~/\.PDB/)) { if ( ($result=get_pdb_file1 ("$pdb_file.pdb"))){$return_value=$result;} elsif ( ($result=get_pdb_file1 ("$pdb_file.PDB"))){$return_value=$result;} elsif ( ($result=get_pdb_file1 ("pdb$pdb_file.pdb"))){$return_value=$result;} elsif ( ($result=get_pdb_file1 ("pdb$pdb_file.PDB"))){$return_value=$result;} elsif ( ($result=get_pdb_file1 ("PDB$pdb_file.PDB"))){$return_value=$result;} elsif ( ($result=get_pdb_file1 ("PDB$pdb_file.pdb"))){$return_value=$result;} elsif ( ($result=get_pdb_file1 ("$pdb_file.ent"))){$return_value=$result;} elsif ( ($result=get_pdb_file1 ("pdb$pdb_file.ent"))){$return_value=$result;} elsif ( ($result=get_pdb_file1 ("PDB$pdb_file.ent"))){$return_value=$result;} elsif ( ($result=get_pdb_file1 ("$pdb_file.ENT"))){$return_value=$result;} elsif ( ($result=get_pdb_file1 ("pdb$pdb_file.ENT"))){$return_value=$result;} elsif ( ($result=get_pdb_file1 ("PDB$pdb_file.ENT"))){$return_value=$result;} } return $return_value; } sub get_pdb_file1 { my ($pdb_file)=(@_); my $return_value; $return_value=""; if ( ($result=get_pdb_file0 ($pdb_file))){$return_value=$result;} elsif ( ($result=get_pdb_file0 ("$pdb_file.Z"))){$return_value=$result;} elsif ( ($result=get_pdb_file0 ("$pdb_file.gz"))){$return_value=$result;} elsif ( ($result=get_pdb_file0 ("$pdb_file.GZ"))){$return_value=$result;} return $return_value; } sub get_pdb_file0 { my ($pdb_file, $attempt)=(@_); my $pdb_file=@_[0]; my $tmp_pdb_file; my $return_value; if ( !$attempt){$attempt=1;} $local_pdb_file="$pdb_file"; if ( $local_pdb_file eq "") { $tmp_pdb_file=vtmpnam(); open F, ">$tmp_pdb_file"; while (){print F "$_";} close (F); if (-e $tmp_pdb_file && &is_pdb_file ( $local_pdb_file)) {return $tmp_pdb_file;} } $local_pdb_file="$pdb_file"; &debug_print ("\nTry access local file: $local_pdb_file"); $local_pdb_file=&check_pdb_file4compression ($local_pdb_file); if ( -e $local_pdb_file && (&is_pdb_file ($local_pdb_file) || $force_pdb)) { &debug_print ( "\n\tIs in Current Dir"); $tmp_pdb_file=vtmpnam(); `cp $local_pdb_file $tmp_pdb_file`; return $tmp_pdb_file; } else { &debug_print ("\n\tFile Not in Current Dir"); } if ($pdb_file=~/^pdb/||$pdb_file=~/^PDB/){$pdb_div=substr ($pdb_file, 4, 2);} else { $pdb_div=substr ($pdb_file, 1, 2); } $local_pdb_file="$pdb_dir/$pdb_div/$pdb_file"; $local_pdb_file=&check_pdb_file4compression ( $local_pdb_file); &debug_print ("\nTry access file From PDB_DIR: $local_pdb_file"); if ($pdb_dir && -e $local_pdb_file && &is_pdb_file ($local_pdb_file)) { &debug_print ( "\n\tIs in Local PDB DIR"); $tmp_pdb_file=vtmpnam(); `cp $local_pdb_file $tmp_pdb_file`; return $tmp_pdb_file; } $local_pdb_file="$pdb_dir/$pdb_file"; $local_pdb_file=&check_pdb_file4compression ( $local_pdb_file); &debug_print ("\nTry access file From PDB_DIR: local_pdb_file"); if ($pdb_dir && -e $local_pdb_file && &is_pdb_file ($local_pdb_file)) { &debug_print ( "\n\tIs in Local PDB DIR"); $tmp_pdb_file=vtmpnam(); `cp $local_pdb_file $tmp_pdb_file`; return $tmp_pdb_file; } $local_pdb_file="$pdb_dir$pdb_file"; $local_pdb_file=&check_pdb_file4compression ( $local_pdb_file); &debug_print ("\nTry access file From PDB_DIR: $local_pdb_file"); if ($pdb_dir && -e $local_pdb_file && &is_pdb_file ($local_pdb_file)) { &debug_print ( "\n\tIs in Local PDB DIR"); $tmp_pdb_file=vtmpnam(); `cp $local_pdb_file $tmp_pdb_file`; return $tmp_pdb_file; } else {&debug_print ( "\n\tNot In Local Pdb Dir");} if ($cache ne "NO" && $cache ne "no") { $local_pdb_file="$cache/$pdb_file"; $local_pdb_file=&check_pdb_file4compression ( $local_pdb_file); &debug_print("\nTry access file From Cache: $local_pdb_file"); if (-e $local_pdb_file && &is_pdb_file ($local_pdb_file)) { &debug_print ( "\n\tIs in T-Coffee Cache"); $tmp_pdb_file=vtmpnam(); `cp $local_pdb_file $tmp_pdb_file`; return $tmp_pdb_file; } else{&debug_print ( "\n\tNot in Cache Dir");} } if (!$no_remote_pdb_dir) { my $return_value=""; if ( &remote_is_pdb_name ($pdb_file, $netaddress)==1) { &debug_print ("\n*******************************************************\nTry Remote Access for $pdb_file"); $tmp_pdb_file=vtmpnam(); $netcommand=$netaddress; $netcommand=~s/%%/$pdb_file/g; &url2file("$netcommand", "$tmp_pdb_file.$netcompression"); &debug_print("\nREMOTE: $netcommand\n"); $compressed_tmp_file_name="$tmp_pdb_file.$netcompression"; if ($netcompression && -B $compressed_tmp_file_name) { my $r; &debug_print ("\n\tFile Found Remotely"); if (($r=safe_system ( "$netcompression_pg $compressed_tmp_file_name")!=$EXIT_SUCCESS) && $attempts<5) { &debug_print ("\n\tProper Download Failed Try again"); unlink $compressed_tmp_file_name; print "\nFailed to Download $compressed_tmp_file_name. New Attempt $attempt/5\n"; return &get_pdb_file0($pdb_file, $attempt+1); } elsif ($r== $EXIT_SUCCESS) { &debug_print ("\n\tProper Download Succeeded "); $return_value=$tmp_pdb_file; } else { &debug_print ("\n\tProper Download Failed "); &debug_print ("\nFile Not Found Remotely"); unlink $compressed_tmp_file_name; } } else { &debug_print ("\nFile Not Found Remotely"); unlink $compressed_tmp_file_name; } if ($cache ne "no" && $cache ne "update" && -e $return_value) { `cp $return_value $cache/$pdb_file.pdb`; } } &debug_print ("\nRemote Download Finished"); return $return_value; } return ""; } sub check_pdb_file4compression { my $file=@_[0]; my $tmp; my $r; $tmp=&vtmpnam(); if (-e $tmp){unlink $tmp;} $file=~s/\/\//\//g; if (-B $file && ($file=~/\.Z/)) {`cp $file $tmp.Z`;`rm $tmp`;`gunzip $tmp.Z $SILENT`;$r=$tmp;} elsif (-B $file && ($file=~/\.gz/)){`cp $file $tmp.gz`;`gunzip $tmp.gz $SILENT`;return $r=$tmp;} elsif (-B $file ){`cp $file $tmp.gz`;`gunzip $tmp.gz $SILENT`;$r=$tmp;} elsif ( -e $file ) {$r= $file;} elsif ( -e "$file.gz" ){ `cp $file.gz $tmp.gz`;`gunzip $tmp.gz $SILENT`;$r=$tmp;} elsif ( -e "$file.Z") {`cp $file.Z $tmp.Z`; `gunzip $tmp.Z $SILENT`;$r=$tmp;} else {$r= $file;} if ( -e "$tmp.Z"){unlink "$tmp.Z";} if ( -e "$tmp.gz"){unlink "$tmp.gz";} return $r; } sub vtmpnam { my $tmp_file_name; $tmp_name_counter++; $tmp_file_name="tmp_file_for_extract_from_pdb$$.$tmp_name_counter"; $tmp_file_list[$ntmp_file++]=$tmp_file_name; if ( -e $tmp_file_name) {return &vtmpnam ();} else {return $tmp_file_name;} } sub safe_system { my $com=@_[0]; my $pid; my $status; if ($com eq ""){return 1;} if (($pid = fork ()) < 0){return (-1);} if ($pid == 0) { exec ($com); } else { $PIDCHILD=$pid; } waitpid ($pid,WTERMSIG); return $?; #contains the status of the exit } END { kill ($PIDCHILD); clean(@tmp_file_list); } sub myexit { my $exit_status=@_[0]; &clean(@tmp_file_list); exit ( $exit_status); } sub clean { my @fl=@_; my $file; if ( $debug){print STDERR "remove $#fl files\n";} foreach $file ( @fl) { if (-e $file) { if ( $debug){print STDERR "\n$file [NOT DELETED]";} else{unlink ($file);} } } } sub vfopen { my $file=@_[0]; my $mode=@_[1]; my $tmp; my $F = new FileHandle; $tmp=$file; if ( $mode eq "r" && !-e $file){ die "Cannot open file $file [FATAL: EXTRACT_FROM_PDB]\n";} elsif ($mode eq "w"){$tmp=">$file";} elsif ($mode eq "a"){$tmp=">>$file";} open ($F,$tmp); return $F; } sub debug_print { my $message =@_[0]; if ($debug){print STDERR "NO_REMOTE_PDB_DIR: $no_remote_pdb_dir - $message [DEBUG:extract_from_pdb]";} return; } sub is_aa { my ($aa, $chain) =@_; my $one; my $trhee; if ( $onelett{$molecule_type{$chain}}->{$aa} eq 'X' || !$onelett{$molecule_type{$chain}}->{$aa} ){return '';} else { $one=$onelett{$molecule_type{$chain}}->{$aa}; $three=$threelett{$molecule_type{$chain}}->{$one}; return $three; } } sub pg_is_installed { my @ml=@_; my $r, $p, $m; my $supported=0; my $p=shift (@ml); $r=`which $p 2>/dev/null`; if ($r eq ""){return 0;} else {return 1;} } sub check_pg_is_installed { my @ml=@_; my $r=&pg_is_installed (@ml); if (!$r) { print STDERR "\nProgram $p Supported but Not Installed on your system [FATAL:tc_generic_method]\n"; myexit ($EXIT_FAILURE); } else { return 1; } } sub url2file { my ($address, $out, $wget_arg, $curl_arg)=(@_); my ($pg, $flag, $r, $arg, $count); if ( $INTERNET==-1) { $INTERNET=1; $INTERNET=&check_internet_connection(); } if ($INTERNET==0){exit($EXIT_FAILURE);} if (&pg_is_installed ("wget")) {$pg="wget"; $flag="-O";$arg=$wget_arg;} elsif (&pg_is_installed ("curl")){$pg="curl"; $flag="-o";$arg=$curl_arg;} else { print stderr "ERROR: neither curl nor wget are installed. Imnpossible to tectch remote file [FATAL]\n"; exit ($EXIT_FAILURE); } $r=safe_system ("$pg $flag$out $address >/dev/null 2>/dev/null"); if ($r!=$EXIT_SUCCESS) { unlink $file; } return $r; } sub check_internet_connection { my $internet; if ( -e "x"){unlink ("x");} url2file("www.google.com", "x"); if ( !-e "x" || -s "x" < 10){$internet=0;} else {$internet=1;} if (-e "x"){unlink "x";} return $internet; } sub pdbfile2chaintype { my $file=@_[0]; my %ct; my $F; $F=vfopen ($file, "r"); while (<$F>) { my $line=$_; if ($line =~/^ATOM/) { my $C=substr($line,21,1); if (!$ct{$C}) { my $r=substr($line,17,3); $r=~s/\s+//; if (length ($r)==1){$ct{$C}="R";} elsif (length ($r)==2){$ct{$C}="D";} elsif (length ($r)==3){$ct{$C}="P";} else { print "ERROR: Could not read RES_ID field in file $file [FATAL:extract_from_pdb]\n";die; } } } } close ($F); return %ct; } sub fill_threelett_RNA { my %threelett=( 'A', ' A', 'T', ' T', 'U', ' U', 'C', ' C', 'G', ' G', 'I', ' I', #Inosine ); return %threelett; } sub fill_onelett_RNA { my %onelett=( ' A' => 'A', ' T' => 'T', ' U' => 'U', ' C' => 'C', ' G' => 'G', 'CSL' => 'X', 'UMS' => 'X', ' I' => 'I', 'A' => 'A', 'T' => 'T', 'U' => 'U', 'C' => 'C', 'G' => 'G', 'I' => 'I', ); return %onelett; } sub fill_onelett_DNA { my %onelett=( ' DA', 'A', ' DT', 'T', ' DC', 'C', ' DG', 'G', 'DA', 'A', 'DT', 'T', 'DC', 'C', 'DG', 'G', ); return %onelett; } sub fill_threelett_DNA { my %threelett=( 'A', ' DA', 'T', ' DT', 'C', ' DC', 'G', ' DG', ); return %threelett; } sub fill_threelett_prot { my %threelett; %threelett=( 'A', 'ALA', 'C', 'CYS', 'D', 'ASP', 'E', 'GLU', 'F', 'PHE', 'G', 'GLY', 'H', 'HIS', 'I', 'ILE', 'K', 'LYS', 'L', 'LEU', 'N', 'ASN', 'M', 'MET', 'P', 'PRO', 'Q', 'GLN', 'R', 'ARG', 'S', 'SER', 'T', 'THR', 'V', 'VAL', 'W', 'TRP', 'Y', 'TYR', ); return %threelett; } sub fill_onelett_prot { my %onelett; %onelett=( '10A', 'X', '11O', 'X', '12A', 'X', '13P', 'X', '13R', 'X', '13S', 'X', '14W', 'X', '15P', 'X', '16A', 'X', '16G', 'X', '1AN', 'X', '1AP', 'X', '1AR', 'X', '1BH', 'X', '1BO', 'X', '1C5', 'X', '1CU', 'X', '1DA', 'X', '1GL', 'X', '1GN', 'X', '1IN', 'X', '1LU', 'L', '1MA', 'X', '1MC', 'X', '1MG', 'X', '1MZ', 'X', '1NA', 'X', '1NB', 'X', '1NI', 'X', '1PA', 'A', '1PC', 'X', '1PE', 'X', '1PG', 'X', '1PI', 'A', '1PM', 'X', '1PN', 'X', '1PU', 'X', '1PY', 'X', '1UN', 'X', '24T', 'X', '25T', 'X', '26P', 'X', '2AB', 'X', '2AM', 'X', '2AN', 'X', '2AP', 'X', '2AR', 'X', '2AS', 'D', '2BL', 'X', '2BM', 'X', '2CP', 'X', '2DA', 'X', '2DG', 'X', '2DP', 'X', '2DT', 'X', '2EP', 'X', '2EZ', 'X', '2FG', 'X', '2FL', 'X', '2FP', 'X', '2FU', 'X', '2GL', 'X', '2GP', 'X', '2HP', 'X', '2IB', 'X', '2IP', 'X', '2LU', 'L', '2MA', 'X', '2MD', 'X', '2ME', 'X', '2MG', 'X', '2ML', 'L', '2MO', 'X', '2MR', 'R', '2MU', 'X', '2MZ', 'X', '2NO', 'X', '2NP', 'X', '2OG', 'X', '2PA', 'X', '2PC', 'X', '2PE', 'X', '2PG', 'X', '2PH', 'X', '2PI', 'X', '2PL', 'X', '2PP', 'X', '2PU', 'X', '2SI', 'X', '2TB', 'X', '34C', 'X', '35G', 'X', '3AA', 'X', '3AD', 'X', '3AH', 'H', '3AN', 'X', '3AP', 'X', '3AT', 'X', '3BT', 'X', '3CH', 'X', '3CN', 'X', '3CO', 'X', '3CP', 'X', '3DR', 'X', '3EP', 'X', '3FM', 'X', '3GA', 'X', '3GP', 'X', '3HB', 'X', '3HC', 'X', '3HP', 'X', '3IB', 'X', '3ID', 'X', '3IN', 'X', '3MA', 'X', '3MB', 'X', '3MC', 'X', '3MD', 'D', '3MF', 'X', '3MP', 'X', '3MT', 'X', '3OL', 'X', '3PA', 'X', '3PG', 'X', '3PO', 'X', '3PP', 'X', '3PY', 'X', '49A', 'X', '4AB', 'X', '4AM', 'X', '4AN', 'X', '4AP', 'X', '4BA', 'X', '4BT', 'X', '4CA', 'X', '4CO', 'X', '4HP', 'X', '4IP', 'X', '4MO', 'X', '4MV', 'X', '4MZ', 'X', '4NC', 'X', '4NP', 'X', '4OX', 'X', '4PB', 'X', '4PN', 'X', '4PP', 'X', '4SC', 'X', '4SU', 'X', '4TB', 'X', '55C', 'X', '5AD', 'X', '5AN', 'X', '5AT', 'X', '5CM', 'X', '5GP', 'X', '5HP', 'E', '5HT', 'X', '5IT', 'X', '5IU', 'X', '5MB', 'X', '5MC', 'X', '5MD', 'X', '5MP', 'X', '5MU', 'X', '5NC', 'X', '5OB', 'X', '5PA', 'X', '5PV', 'X', '6AB', 'X', '6CT', 'X', '6HA', 'X', '6HC', 'X', '6HG', 'X', '6HT', 'X', '6IN', 'X', '6MO', 'X', '6MP', 'X', '6PG', 'X', '6WO', 'X', '70U', 'X', '7DG', 'X', '7HP', 'X', '7I2', 'X', '7MG', 'X', '7MQ', 'X', '7NI', 'X', '87Y', 'X', '8AD', 'X', '8BR', 'X', '8IG', 'X', '8IN', 'X', '8OG', 'X', '95A', 'X', '9AD', 'X', '9AM', 'X', '9AP', 'X', '9DG', 'X', '9DI', 'X', '9HX', 'X', '9OH', 'X', '9TA', 'X', 'A12', 'X', 'A15', 'X', 'A23', 'X', 'A24', 'X', 'A26', 'X', 'A2G', 'X', 'A2P', 'X', 'A32', 'X', 'A3P', 'X', 'A4P', 'X', 'A5P', 'X', 'A70', 'X', 'A76', 'X', 'A77', 'X', 'A78', 'X', 'A79', 'X', 'A80', 'X', 'A85', 'X', 'A88', 'X', 'A9A', 'X', 'AA3', 'X', 'AA4', 'X', 'AA6', 'X', 'AAA', 'X', 'AAB', 'X', 'AAC', 'X', 'AAE', 'X', 'AAG', 'R', 'AAH', 'X', 'AAM', 'X', 'AAN', 'X', 'AAP', 'X', 'AAR', 'R', 'AAS', 'X', 'AAT', 'X', 'ABA', 'X', 'ABC', 'X', 'ABD', 'X', 'ABE', 'X', 'ABH', 'X', 'ABI', 'X', 'ABK', 'X', 'ABM', 'X', 'ABN', 'X', 'ABP', 'X', 'ABR', 'X', 'ABS', 'X', 'ABU', 'X', 'AC1', 'X', 'AC2', 'X', 'ACA', 'X', 'ACB', 'D', 'ACC', 'C', 'ACD', 'X', 'ACE', 'X', 'ACH', 'X', 'ACI', 'X', 'ACL', 'R', 'ACM', 'X', 'ACN', 'X', 'ACO', 'X', 'ACP', 'X', 'ACQ', 'X', 'ACR', 'X', 'ACS', 'X', 'ACT', 'X', 'ACV', 'V', 'ACX', 'X', 'ACY', 'X', 'AD2', 'X', 'AD3', 'X', 'ADC', 'X', 'ADD', 'X', 'ADE', 'X', 'ADH', 'X', 'ADI', 'X', 'ADM', 'X', 'ADN', 'X', 'ADP', 'X', 'ADQ', 'X', 'ADR', 'X', 'ADS', 'X', 'ADT', 'X', 'ADU', 'X', 'ADW', 'X', 'ADX', 'X', 'AE2', 'X', 'AEA', 'X', 'AEB', 'X', 'AEI', 'D', 'AEN', 'X', 'AET', 'T', 'AF1', 'X', 'AF3', 'X', 'AFA', 'D', 'AFP', 'X', 'AG7', 'X', 'AGB', 'X', 'AGF', 'X', 'AGL', 'X', 'AGM', 'R', 'AGN', 'X', 'AGP', 'X', 'AGS', 'X', 'AGU', 'X', 'AH0', 'X', 'AH1', 'X', 'AHA', 'X', 'AHB', 'D', 'AHC', 'X', 'AHF', 'X', 'AHG', 'X', 'AHH', 'X', 'AHM', 'X', 'AHO', 'X', 'AHP', 'X', 'AHS', 'X', 'AHT', 'Y', 'AHU', 'X', 'AHX', 'X', 'AI1', 'X', 'AI2', 'X', 'AIB', 'X', 'AIC', 'X', 'AIM', 'X', 'AIP', 'X', 'AIQ', 'X', 'AIR', 'X', 'AJ3', 'X', 'AKB', 'X', 'AKG', 'X', 'AKR', 'X', 'AL1', 'X', 'AL2', 'X', 'AL3', 'X', 'AL4', 'X', 'AL5', 'X', 'AL6', 'X', 'AL7', 'X', 'AL8', 'X', 'AL9', 'X', 'ALA', 'A', 'ALB', 'X', 'ALC', 'X', 'ALD', 'L', 'ALE', 'X', 'ALF', 'X', 'ALG', 'X', 'ALL', 'X', 'ALM', 'A', 'ALN', 'A', 'ALO', 'T', 'ALP', 'X', 'ALQ', 'X', 'ALR', 'X', 'ALS', 'X', 'ALT', 'A', 'ALY', 'K', 'ALZ', 'X', 'AMA', 'X', 'AMB', 'X', 'AMC', 'X', 'AMD', 'X', 'AMG', 'X', 'AMH', 'X', 'AMI', 'X', 'AML', 'X', 'AMN', 'X', 'AMO', 'X', 'AMP', 'X', 'AMQ', 'X', 'AMR', 'X', 'AMS', 'X', 'AMT', 'X', 'AMU', 'X', 'AMW', 'X', 'AMX', 'X', 'AMY', 'X', 'ANA', 'X', 'ANB', 'X', 'ANC', 'X', 'AND', 'X', 'ANE', 'X', 'ANI', 'X', 'ANL', 'X', 'ANO', 'X', 'ANP', 'X', 'ANS', 'X', 'ANT', 'X', 'AOE', 'X', 'AOP', 'X', 'AP1', 'X', 'AP2', 'X', 'AP3', 'X', 'AP4', 'X', 'AP5', 'X', 'AP6', 'X', 'APA', 'X', 'APB', 'X', 'APC', 'X', 'APE', 'F', 'APF', 'X', 'APG', 'X', 'APH', 'A', 'API', 'X', 'APL', 'X', 'APM', 'X', 'APN', 'G', 'APP', 'X', 'APQ', 'X', 'APR', 'X', 'APS', 'X', 'APT', 'X', 'APU', 'X', 'APX', 'X', 'APY', 'X', 'APZ', 'X', 'AQS', 'X', 'AR1', 'X', 'AR2', 'X', 'ARA', 'X', 'ARB', 'X', 'ARC', 'X', 'ARD', 'X', 'ARG', 'R', 'ARH', 'X', 'ARI', 'X', 'ARM', 'R', 'ARN', 'X', 'ARO', 'R', 'ARP', 'X', 'ARQ', 'X', 'ARS', 'X', 'AS1', 'R', 'AS2', 'X', 'ASA', 'D', 'ASB', 'D', 'ASC', 'X', 'ASD', 'X', 'ASE', 'X', 'ASF', 'X', 'ASI', 'X', 'ASK', 'D', 'ASL', 'X', 'ASM', 'N', 'ASO', 'X', 'ASP', 'D', 'ASQ', 'X', 'ASU', 'X', 'ATA', 'X', 'ATC', 'X', 'ATD', 'X', 'ATF', 'X', 'ATG', 'X', 'ATH', 'X', 'ATM', 'X', 'ATO', 'X', 'ATP', 'X', 'ATQ', 'X', 'ATR', 'X', 'ATT', 'X', 'ATY', 'X', 'ATZ', 'X', 'AUC', 'X', 'AUR', 'X', 'AVG', 'X', 'AXP', 'X', 'AYA', 'A', 'AZ2', 'X', 'AZA', 'X', 'AZC', 'X', 'AZD', 'X', 'AZE', 'X', 'AZI', 'X', 'AZL', 'X', 'AZM', 'X', 'AZR', 'X', 'AZT', 'X', 'B12', 'X', 'B1F', 'F', 'B2A', 'A', 'B2F', 'F', 'B2I', 'I', 'B2V', 'V', 'B3I', 'X', 'B3P', 'X', 'B7G', 'X', 'B96', 'X', 'B9A', 'X', 'BA1', 'X', 'BAA', 'X', 'BAB', 'X', 'BAC', 'X', 'BAF', 'X', 'BAH', 'X', 'BAI', 'X', 'BAK', 'X', 'BAL', 'A', 'BAM', 'X', 'BAO', 'X', 'BAP', 'X', 'BAR', 'X', 'BAS', 'X', 'BAT', 'F', 'BAY', 'X', 'BAZ', 'X', 'BB1', 'X', 'BB2', 'X', 'BBA', 'X', 'BBH', 'X', 'BBS', 'X', 'BBT', 'X', 'BBZ', 'X', 'BCA', 'X', 'BCB', 'X', 'BCC', 'X', 'BCD', 'X', 'BCL', 'X', 'BCN', 'X', 'BCR', 'X', 'BCS', 'C', 'BCT', 'X', 'BCY', 'X', 'BCZ', 'X', 'BDA', 'X', 'BDG', 'X', 'BDK', 'X', 'BDM', 'X', 'BDN', 'X', 'BDS', 'X', 'BE1', 'X', 'BE2', 'X', 'BEA', 'X', 'BEF', 'X', 'BEN', 'X', 'BEO', 'X', 'BEP', 'X', 'BER', 'X', 'BES', 'X', 'BET', 'X', 'BEZ', 'X', 'BF2', 'X', 'BFA', 'X', 'BFD', 'X', 'BFP', 'X', 'BFS', 'X', 'BFU', 'X', 'BG6', 'X', 'BGF', 'X', 'BGG', 'X', 'BGL', 'X', 'BGN', 'X', 'BGP', 'X', 'BGX', 'X', 'BH4', 'X', 'BHA', 'X', 'BHC', 'X', 'BHD', 'D', 'BHO', 'X', 'BHS', 'X', 'BIC', 'X', 'BIN', 'X', 'BIO', 'X', 'BIP', 'X', 'BIS', 'X', 'BIZ', 'X', 'BJH', 'X', 'BJI', 'X', 'BJP', 'X', 'BLA', 'X', 'BLB', 'X', 'BLE', 'L', 'BLG', 'P', 'BLI', 'X', 'BLM', 'X', 'BLV', 'X', 'BLY', 'K', 'BM1', 'X', 'BM2', 'X', 'BM5', 'X', 'BM9', 'X', 'BMA', 'X', 'BMD', 'X', 'BME', 'X', 'BMP', 'X', 'BMQ', 'X', 'BMS', 'X', 'BMT', 'T', 'BMU', 'X', 'BMY', 'X', 'BMZ', 'X', 'BNA', 'X', 'BNG', 'X', 'BNI', 'X', 'BNN', 'F', 'BNO', 'L', 'BNS', 'X', 'BNZ', 'X', 'BO3', 'X', 'BO4', 'X', 'BOC', 'X', 'BOG', 'X', 'BOM', 'X', 'BOT', 'X', 'BOX', 'X', 'BOZ', 'X', 'BPA', 'X', 'BPB', 'X', 'BPD', 'X', 'BPG', 'X', 'BPH', 'X', 'BPI', 'X', 'BPJ', 'X', 'BPM', 'X', 'BPN', 'X', 'BPO', 'X', 'BPP', 'X', 'BPT', 'X', 'BPY', 'X', 'BRB', 'X', 'BRC', 'X', 'BRE', 'X', 'BRI', 'X', 'BRL', 'X', 'BRM', 'X', 'BRN', 'X', 'BRO', 'X', 'BRS', 'X', 'BRU', 'X', 'BRZ', 'X', 'BSB', 'X', 'BSI', 'X', 'BSP', 'X', 'BT1', 'X', 'BT2', 'X', 'BT3', 'X', 'BTA', 'L', 'BTB', 'X', 'BTC', 'C', 'BTD', 'X', 'BTN', 'X', 'BTP', 'X', 'BTR', 'W', 'BU1', 'X', 'BUA', 'X', 'BUB', 'X', 'BUC', 'X', 'BUG', 'X', 'BUL', 'X', 'BUM', 'X', 'BUQ', 'X', 'BUT', 'X', 'BVD', 'X', 'BX3', 'X', 'BYS', 'X', 'BZ1', 'X', 'BZA', 'X', 'BZB', 'X', 'BZC', 'X', 'BZD', 'X', 'BZF', 'X', 'BZI', 'X', 'BZM', 'X', 'BZO', 'X', 'BZP', 'X', 'BZQ', 'X', 'BZS', 'X', 'BZT', 'X', 'C02', 'X', 'C11', 'X', 'C1O', 'X', 'C20', 'X', 'C24', 'X', 'C2F', 'X', 'C2O', 'X', 'C2P', 'X', 'C3M', 'X', 'C3P', 'X', 'C3X', 'X', 'C48', 'X', 'C4M', 'X', 'C4X', 'X', 'C5C', 'X', 'C5M', 'X', 'C5P', 'X', 'C5X', 'X', 'C60', 'X', 'C6C', 'X', 'C6M', 'X', 'C78', 'X', 'C8E', 'X', 'CA3', 'X', 'CA5', 'X', 'CAA', 'X', 'CAB', 'X', 'CAC', 'X', 'CAD', 'X', 'CAF', 'C', 'CAG', 'X', 'CAH', 'X', 'CAL', 'X', 'CAM', 'X', 'CAN', 'X', 'CAO', 'X', 'CAP', 'X', 'CAQ', 'X', 'CAR', 'X', 'CAS', 'C', 'CAT', 'X', 'CAV', 'X', 'CAY', 'C', 'CAZ', 'X', 'CB3', 'X', 'CB4', 'X', 'CBA', 'X', 'CBD', 'X', 'CBG', 'X', 'CBI', 'X', 'CBL', 'X', 'CBM', 'X', 'CBN', 'X', 'CBO', 'X', 'CBP', 'X', 'CBS', 'X', 'CBX', 'X', 'CBZ', 'X', 'CC0', 'X', 'CC1', 'X', 'CCC', 'X', 'CCH', 'X', 'CCI', 'X', 'CCM', 'X', 'CCN', 'X', 'CCO', 'X', 'CCP', 'X', 'CCR', 'X', 'CCS', 'C', 'CCV', 'X', 'CCY', 'X', 'CD1', 'X', 'CDC', 'X', 'CDE', 'X', 'CDF', 'X', 'CDI', 'X', 'CDL', 'X', 'CDM', 'X', 'CDP', 'X', 'CDR', 'X', 'CDU', 'X', 'CE1', 'X', 'CEA', 'C', 'CEB', 'X', 'CEC', 'X', 'CED', 'X', 'CEF', 'X', 'CEH', 'X', 'CEM', 'X', 'CEO', 'X', 'CEP', 'X', 'CEQ', 'X', 'CER', 'X', 'CES', 'G', 'CET', 'X', 'CFC', 'X', 'CFF', 'X', 'CFM', 'X', 'CFO', 'X', 'CFP', 'X', 'CFS', 'X', 'CFX', 'X', 'CGN', 'X', 'CGP', 'X', 'CGS', 'X', 'CGU', 'E', 'CH2', 'X', 'CH3', 'X', 'CHA', 'X', 'CHB', 'X', 'CHD', 'X', 'CHF', 'X', 'CHG', 'G', 'CHI', 'X', 'CHN', 'X', 'CHO', 'X', 'CHP', 'G', 'CHR', 'X', 'CHS', 'F', 'CHT', 'X', 'CHX', 'X', 'CIC', 'X', 'CIN', 'X', 'CIP', 'X', 'CIR', 'X', 'CIT', 'X', 'CIU', 'X', 'CKI', 'X', 'CL1', 'X', 'CL2', 'X', 'CLA', 'X', 'CLB', 'A', 'CLC', 'S', 'CLD', 'A', 'CLE', 'L', 'CLF', 'X', 'CLK', 'S', 'CLL', 'X', 'CLM', 'X', 'CLN', 'X', 'CLO', 'X', 'CLP', 'X', 'CLQ', 'X', 'CLR', 'X', 'CLS', 'X', 'CLT', 'X', 'CLX', 'X', 'CLY', 'X', 'CMA', 'R', 'CMC', 'X', 'CMD', 'X', 'CME', 'C', 'CMG', 'X', 'CMK', 'X', 'CMN', 'X', 'CMO', 'X', 'CMP', 'X', 'CMR', 'X', 'CMS', 'X', 'CMT', 'C', 'CMX', 'X', 'CNA', 'X', 'CNC', 'X', 'CND', 'X', 'CNH', 'X', 'CNM', 'X', 'CNN', 'X', 'CNO', 'X', 'CNP', 'X', 'CO2', 'X', 'CO3', 'X', 'CO5', 'X', 'CO8', 'X', 'COA', 'X', 'COB', 'X', 'COC', 'X', 'COD', 'X', 'COE', 'X', 'COF', 'X', 'COH', 'X', 'COI', 'X', 'COJ', 'X', 'COL', 'X', 'COM', 'X', 'CON', 'X', 'COP', 'X', 'COR', 'X', 'COS', 'X', 'COT', 'X', 'COY', 'X', 'CP1', 'G', 'CP2', 'X', 'CP4', 'X', 'CPA', 'X', 'CPB', 'X', 'CPC', 'X', 'CPD', 'X', 'CPG', 'X', 'CPH', 'X', 'CPI', 'X', 'CPM', 'X', 'CPN', 'G', 'CPO', 'X', 'CPP', 'X', 'CPQ', 'X', 'CPR', 'X', 'CPS', 'X', 'CPT', 'X', 'CPU', 'X', 'CPV', 'X', 'CPY', 'X', 'CR1', 'X', 'CR6', 'X', 'CRA', 'X', 'CRB', 'X', 'CRC', 'X', 'CRG', 'X', 'CRH', 'X', 'CRO', 'T', 'CRP', 'X', 'CRQ', 'X', 'CRS', 'X', 'CRT', 'X', 'CRY', 'X', 'CSA', 'C', 'CSB', 'X', 'CSD', 'C', 'CSE', 'C', 'CSH', 'X', 'CSI', 'X', 'CSN', 'X', 'CSO', 'C', 'CSP', 'C', 'CSR', 'C', 'CSS', 'C', 'CST', 'X', 'CSW', 'C', 'CSX', 'C', 'CSY', 'X', 'CSZ', 'C', 'CT3', 'X', 'CTA', 'X', 'CTB', 'X', 'CTC', 'X', 'CTD', 'X', 'CTH', 'T', 'CTO', 'X', 'CTP', 'X', 'CTR', 'X', 'CTS', 'X', 'CTT', 'X', 'CTY', 'X', 'CTZ', 'X', 'CU1', 'X', 'CUA', 'X', 'CUC', 'X', 'CUL', 'X', 'CUO', 'X', 'CUZ', 'X', 'CVI', 'X', 'CXF', 'X', 'CXL', 'X', 'CXM', 'M', 'CXN', 'X', 'CXP', 'X', 'CXS', 'X', 'CY1', 'C', 'CY3', 'X', 'CYB', 'X', 'CYC', 'X', 'CYF', 'C', 'CYG', 'C', 'CYH', 'X', 'CYL', 'X', 'CYM', 'C', 'CYN', 'X', 'CYO', 'X', 'CYP', 'X', 'CYQ', 'C', 'CYS', 'C', 'CYU', 'X', 'CYY', 'X', 'CYZ', 'X', 'CZH', 'X', 'CZZ', 'C', 'D12', 'X', 'D13', 'X', 'D16', 'X', 'D18', 'X', 'D19', 'X', 'D1P', 'X', 'D24', 'X', 'D34', 'X', 'D35', 'X', 'D4D', 'X', 'D4T', 'X', 'D6G', 'X', 'DA2', 'R', 'DA3', 'X', 'DA6', 'X', 'DA7', 'X', 'DAA', 'X', 'DAB', 'X', 'DAC', 'X', 'DAD', 'X', 'DAE', 'X', 'DAF', 'X', 'DAG', 'X', 'DAH', 'A', 'DAJ', 'X', 'DAK', 'X', 'DAL', 'A', 'DAM', 'A', 'DAN', 'X', 'DAO', 'X', 'DAP', 'X', 'DAQ', 'X', 'DAR', 'R', 'DAS', 'D', 'DAT', 'X', 'DAU', 'X', 'DAV', 'X', 'DBA', 'X', 'DBD', 'X', 'DBF', 'X', 'DBG', 'X', 'DBI', 'X', 'DBV', 'X', 'DBY', 'Y', 'DCA', 'X', 'DCB', 'X', 'DCE', 'X', 'DCF', 'X', 'DCG', 'X', 'DCH', 'X', 'DCI', 'I', 'DCL', 'X', 'DCM', 'X', 'DCP', 'X', 'DCS', 'X', 'DCT', 'X', 'DCY', 'C', 'DCZ', 'X', 'DDA', 'X', 'DDB', 'X', 'DDC', 'X', 'DDF', 'X', 'DDG', 'X', 'DDH', 'X', 'DDL', 'X', 'DDM', 'X', 'DDO', 'L', 'DDP', 'X', 'DDQ', 'X', 'DDT', 'Y', 'DDU', 'X', 'DEA', 'X', 'DEB', 'X', 'DEC', 'X', 'DEF', 'X', 'DEL', 'X', 'DEM', 'X', 'DEN', 'X', 'DEP', 'X', 'DEQ', 'X', 'DES', 'X', 'DET', 'X', 'DFC', 'X', 'DFG', 'X', 'DFI', 'X', 'DFL', 'X', 'DFO', 'X', 'DFP', 'X', 'DFR', 'X', 'DFT', 'X', 'DFV', 'X', 'DFX', 'X', 'DG2', 'X', 'DG3', 'X', 'DG6', 'X', 'DGA', 'X', 'DGD', 'X', 'DGG', 'X', 'DGL', 'E', 'DGN', 'Q', 'DGP', 'X', 'DGT', 'X', 'DGX', 'X', 'DH2', 'X', 'DHA', 'A', 'DHB', 'X', 'DHC', 'X', 'DHD', 'X', 'DHE', 'X', 'DHF', 'X', 'DHG', 'X', 'DHI', 'H', 'DHL', 'X', 'DHM', 'X', 'DHN', 'V', 'DHP', 'X', 'DHQ', 'X', 'DHR', 'X', 'DHS', 'X', 'DHT', 'X', 'DHU', 'X', 'DHY', 'X', 'DHZ', 'X', 'DI2', 'X', 'DI3', 'G', 'DI4', 'X', 'DI5', 'X', 'DIA', 'X', 'DIC', 'X', 'DIF', 'X', 'DIG', 'X', 'DII', 'X', 'DIL', 'I', 'DIM', 'X', 'DIO', 'X', 'DIP', 'X', 'DIQ', 'X', 'DIS', 'X', 'DIT', 'X', 'DIV', 'V', 'DIX', 'X', 'DIY', 'X', 'DKA', 'X', 'DLA', 'X', 'DLE', 'L', 'DLF', 'X', 'DLS', 'K', 'DLY', 'K', 'DM1', 'X', 'DM2', 'X', 'DM3', 'X', 'DM4', 'X', 'DM5', 'X', 'DM6', 'X', 'DM7', 'X', 'DM8', 'X', 'DM9', 'X', 'DMA', 'X', 'DMB', 'X', 'DMC', 'X', 'DMD', 'X', 'DME', 'X', 'DMF', 'X', 'DMG', 'G', 'DMH', 'N', 'DMI', 'X', 'DMJ', 'X', 'DML', 'X', 'DMM', 'X', 'DMN', 'X', 'DMO', 'X', 'DMP', 'X', 'DMQ', 'X', 'DMR', 'X', 'DMS', 'X', 'DMT', 'X', 'DMV', 'X', 'DMY', 'X', 'DNC', 'X', 'DND', 'X', 'DNH', 'X', 'DNJ', 'X', 'DNN', 'X', 'DNP', 'X', 'DNQ', 'X', 'DNR', 'X', 'DO2', 'X', 'DO3', 'X', 'DOA', 'X', 'DOB', 'X', 'DOC', 'X', 'DOH', 'D', 'DOM', 'X', 'DOS', 'X', 'DOX', 'X', 'DP5', 'X', 'DP7', 'X', 'DPA', 'X', 'DPC', 'X', 'DPD', 'X', 'DPE', 'X', 'DPG', 'X', 'DPH', 'F', 'DPM', 'X', 'DPN', 'F', 'DPO', 'X', 'DPP', 'X', 'DPR', 'P', 'DPS', 'X', 'DPT', 'X', 'DPX', 'X', 'DPY', 'X', 'DPZ', 'X', 'DQH', 'X', 'DQN', 'X', 'DR1', 'X', 'DRB', 'X', 'DRC', 'X', 'DRI', 'X', 'DRP', 'X', 'DRT', 'X', 'DRU', 'X', 'DSA', 'X', 'DSB', 'X', 'DSC', 'X', 'DSD', 'X', 'DSE', 'S', 'DSI', 'X', 'DSN', 'S', 'DSP', 'D', 'DSR', 'X', 'DSS', 'X', 'DSX', 'X', 'DSY', 'X', 'DTB', 'X', 'DTD', 'X', 'DTH', 'T', 'DTN', 'X', 'DTO', 'X', 'DTP', 'X', 'DTQ', 'X', 'DTR', 'W', 'DTT', 'X', 'DTY', 'Y', 'DUD', 'X', 'DUO', 'X', 'DUR', 'X', 'DUT', 'X', 'DVA', 'V', 'DVR', 'X', 'DX9', 'X', 'DXA', 'X', 'DXB', 'X', 'DXC', 'X', 'DXG', 'X', 'DXX', 'X', 'DZF', 'X', 'E09', 'X', 'E20', 'X', 'E2P', 'X', 'E3G', 'X', 'E4N', 'X', 'E4P', 'X', 'E64', 'X', 'E6C', 'X', 'E96', 'X', 'E97', 'X', 'EA2', 'X', 'EAA', 'X', 'EAP', 'X', 'EBP', 'X', 'EBW', 'X', 'ECO', 'X', 'EDA', 'X', 'EDC', 'X', 'EDE', 'X', 'EDO', 'X', 'EDR', 'X', 'EEB', 'X', 'EEE', 'X', 'EFC', 'X', 'EFZ', 'X', 'EG1', 'X', 'EG2', 'X', 'EG3', 'X', 'EGC', 'X', 'EGL', 'X', 'EHP', 'A', 'EIC', 'X', 'EJT', 'X', 'ELA', 'X', 'EMB', 'X', 'EMC', 'X', 'EMD', 'X', 'EMM', 'X', 'EMO', 'X', 'EMP', 'X', 'EMR', 'X', 'ENA', 'X', 'ENC', 'X', 'ENH', 'X', 'ENO', 'X', 'ENP', 'X', 'EOA', 'X', 'EOH', 'X', 'EOT', 'X', 'EOX', 'X', 'EPA', 'X', 'EPE', 'X', 'EPH', 'X', 'EPI', 'X', 'EPN', 'X', 'EPO', 'X', 'EPT', 'X', 'EPU', 'X', 'EPX', 'X', 'EPY', 'X', 'EQI', 'X', 'EQP', 'X', 'EQU', 'X', 'ERG', 'X', 'ERI', 'X', 'ERY', 'X', 'ESC', 'X', 'ESD', 'X', 'ESI', 'X', 'ESO', 'X', 'ESP', 'X', 'EST', 'X', 'ESX', 'X', 'ETA', 'X', 'ETC', 'X', 'ETD', 'X', 'ETF', 'X', 'ETH', 'X', 'ETI', 'X', 'ETN', 'X', 'ETO', 'X', 'ETP', 'X', 'ETR', 'X', 'ETS', 'X', 'ETY', 'X', 'EU3', 'X', 'EUG', 'X', 'EYS', 'C', 'F09', 'X', 'F2B', 'X', 'F3S', 'X', 'F42', 'X', 'F43', 'X', 'F4S', 'X', 'F6B', 'X', 'F6P', 'X', 'F89', 'X', 'FA1', 'X', 'FA5', 'F', 'FAA', 'X', 'FAB', 'X', 'FAC', 'X', 'FAD', 'X', 'FAF', 'X', 'FAG', 'X', 'FAM', 'X', 'FAR', 'X', 'FAS', 'X', 'FAT', 'X', 'FBA', 'X', 'FBE', 'X', 'FBI', 'X', 'FBP', 'X', 'FBQ', 'X', 'FBS', 'X', 'FBT', 'X', 'FBU', 'X', 'FCA', 'X', 'FCB', 'X', 'FCI', 'X', 'FCN', 'X', 'FCO', 'X', 'FCR', 'X', 'FCT', 'X', 'FCX', 'X', 'FCY', 'C', 'FD1', 'F', 'FD2', 'F', 'FD3', 'F', 'FD4', 'F', 'FDA', 'X', 'FDC', 'X', 'FDI', 'X', 'FDP', 'X', 'FDS', 'X', 'FE2', 'X', 'FEA', 'X', 'FEL', 'X', 'FEM', 'X', 'FEN', 'X', 'FEO', 'X', 'FEP', 'X', 'FER', 'X', 'FES', 'X', 'FFB', 'X', 'FFC', 'X', 'FFF', 'X', 'FFO', 'X', 'FGL', 'G', 'FHB', 'X', 'FHC', 'X', 'FHP', 'X', 'FHU', 'X', 'FID', 'X', 'FII', 'X', 'FIP', 'X', 'FK5', 'X', 'FKA', 'X', 'FKI', 'X', 'FKP', 'X', 'FL2', 'X', 'FL9', 'X', 'FLA', 'A', 'FLC', 'X', 'FLD', 'X', 'FLE', 'L', 'FLF', 'X', 'FLO', 'X', 'FLP', 'X', 'FLT', 'Y', 'FLU', 'X', 'FLX', 'X', 'FM1', 'X', 'FM2', 'X', 'FMA', 'X', 'FMB', 'X', 'FMC', 'X', 'FME', 'M', 'FMN', 'X', 'FMP', 'X', 'FMR', 'X', 'FMS', 'X', 'FMT', 'X', 'FNE', 'X', 'FNP', 'X', 'FNS', 'X', 'FOC', 'X', 'FOE', 'X', 'FOG', 'F', 'FOH', 'X', 'FOK', 'X', 'FOL', 'X', 'FON', 'X', 'FOP', 'X', 'FOR', 'X', 'FOS', 'X', 'FPA', 'X', 'FPC', 'X', 'FPI', 'X', 'FPO', 'X', 'FPP', 'X', 'FPT', 'X', 'FQP', 'X', 'FRA', 'X', 'FRD', 'F', 'FRU', 'X', 'FS3', 'X', 'FS4', 'X', 'FSB', 'X', 'FSO', 'X', 'FSX', 'X', 'FTC', 'X', 'FTP', 'X', 'FTR', 'W', 'FTT', 'X', 'FTY', 'Y', 'FUA', 'X', 'FUC', 'X', 'FUM', 'X', 'FUP', 'X', 'FVF', 'X', 'FXP', 'X', 'FXV', 'X', 'FYA', 'F', 'G16', 'X', 'G1P', 'X', 'G20', 'X', 'G21', 'X', 'G23', 'X', 'G26', 'X', 'G28', 'X', 'G2F', 'X', 'G37', 'X', 'G39', 'X', 'G3H', 'X', 'G3P', 'X', 'G4D', 'X', 'G6D', 'X', 'G6P', 'X', 'G6Q', 'X', 'G7M', 'X', 'GA2', 'X', 'GAA', 'X', 'GAB', 'X', 'GAC', 'X', 'GAI', 'X', 'GAL', 'X', 'GAM', 'X', 'GAN', 'X', 'GAO', 'X', 'GAP', 'X', 'GAR', 'G', 'GAS', 'X', 'GAT', 'X', 'GBC', 'X', 'GBI', 'X', 'GBP', 'X', 'GBS', 'X', 'GBX', 'X', 'GC4', 'X', 'GCA', 'X', 'GCD', 'X', 'GCG', 'G', 'GCH', 'G', 'GCK', 'X', 'GCL', 'X', 'GCM', 'X', 'GCN', 'X', 'GCO', 'X', 'GCP', 'X', 'GCR', 'X', 'GCS', 'X', 'GCU', 'X', 'GD3', 'X', 'GDB', 'X', 'GDM', 'X', 'GDN', 'X', 'GDP', 'X', 'GDS', 'X', 'GDU', 'X', 'GE1', 'X', 'GE2', 'X', 'GE3', 'X', 'GEA', 'X', 'GEL', 'X', 'GEM', 'X', 'GEN', 'X', 'GEP', 'X', 'GER', 'X', 'GFP', 'X', 'GGB', 'X', 'GGL', 'E', 'GGP', 'X', 'GHP', 'G', 'GIP', 'X', 'GIS', 'X', 'GKR', 'X', 'GL2', 'X', 'GL3', 'G', 'GL4', 'X', 'GL5', 'X', 'GL7', 'X', 'GL9', 'X', 'GLA', 'X', 'GLB', 'X', 'GLC', 'X', 'GLD', 'X', 'GLE', 'X', 'GLF', 'X', 'GLG', 'X', 'GLH', 'Q', 'GLI', 'X', 'GLL', 'X', 'GLM', 'G', 'GLN', 'Q', 'GLO', 'X', 'GLP', 'X', 'GLR', 'X', 'GLS', 'X', 'GLT', 'X', 'GLU', 'E', 'GLV', 'X', 'GLW', 'X', 'GLY', 'G', 'GLZ', 'X', 'GM1', 'X', 'GMA', 'X', 'GMC', 'X', 'GMH', 'X', 'GMP', 'X', 'GMY', 'X', 'GN7', 'X', 'GNA', 'X', 'GNB', 'X', 'GNH', 'X', 'GNP', 'X', 'GNT', 'X', 'GOA', 'X', 'GOL', 'X', 'GOX', 'X', 'GP1', 'X', 'GP3', 'X', 'GP4', 'X', 'GP6', 'X', 'GP8', 'X', 'GPB', 'E', 'GPC', 'X', 'GPE', 'X', 'GPG', 'X', 'GPI', 'X', 'GPJ', 'X', 'GPL', 'K', 'GPM', 'X', 'GPN', 'G', 'GPP', 'X', 'GPR', 'X', 'GPS', 'X', 'GPX', 'X', 'GR1', 'X', 'GR3', 'X', 'GR4', 'X', 'GSA', 'X', 'GSB', 'X', 'GSC', 'G', 'GSE', 'S', 'GSH', 'X', 'GSP', 'X', 'GSR', 'X', 'GSS', 'X', 'GT9', 'C', 'GTA', 'X', 'GTB', 'X', 'GTD', 'X', 'GTE', 'X', 'GTH', 'T', 'GTN', 'X', 'GTO', 'X', 'GTP', 'X', 'GTR', 'X', 'GTS', 'X', 'GTT', 'X', 'GTX', 'X', 'GTZ', 'X', 'GU7', 'X', 'GUA', 'X', 'GUD', 'X', 'GUM', 'X', 'GUN', 'X', 'GUP', 'X', 'GUR', 'X', 'GW3', 'X', 'GZZ', 'X', 'H2B', 'X', 'H2P', 'H', 'H2S', 'X', 'H2U', 'X', 'H4B', 'X', 'H5M', 'P', 'H5P', 'X', 'HAA', 'X', 'HAB', 'X', 'HAC', 'A', 'HAD', 'X', 'HAE', 'X', 'HAG', 'X', 'HAI', 'X', 'HAM', 'X', 'HAP', 'X', 'HAQ', 'X', 'HAR', 'R', 'HAS', 'X', 'HAV', 'V', 'HAX', 'X', 'HAZ', 'X', 'HBA', 'X', 'HBC', 'X', 'HBD', 'X', 'HBI', 'X', 'HBO', 'X', 'HBU', 'X', 'HBY', 'X', 'HC0', 'X', 'HC1', 'X', 'HC4', 'X', 'HCA', 'X', 'HCC', 'X', 'HCI', 'X', 'HCS', 'X', 'HDA', 'X', 'HDD', 'X', 'HDF', 'X', 'HDN', 'X', 'HDS', 'X', 'HDZ', 'X', 'HE1', 'X', 'HE6', 'X', 'HEA', 'X', 'HEB', 'X', 'HEC', 'X', 'HED', 'X', 'HEE', 'X', 'HEF', 'X', 'HEG', 'X', 'HEM', 'X', 'HEN', 'X', 'HEO', 'X', 'HEP', 'X', 'HEU', 'X', 'HEV', 'X', 'HEX', 'X', 'HEZ', 'X', 'HF1', 'X', 'HFA', 'X', 'HFP', 'X', 'HGA', 'Q', 'HGB', 'X', 'HGC', 'X', 'HGI', 'X', 'HGU', 'X', 'HHO', 'X', 'HHP', 'X', 'HIB', 'X', 'HIC', 'H', 'HII', 'X', 'HIN', 'X', 'HIO', 'X', 'HIP', 'H', 'HIS', 'H', 'HLE', 'X', 'HLT', 'X', 'HMA', 'A', 'HMB', 'X', 'HMC', 'X', 'HMD', 'X', 'HMF', 'A', 'HMG', 'X', 'HMH', 'X', 'HMI', 'L', 'HMM', 'X', 'HMN', 'X', 'HMO', 'X', 'HMP', 'X', 'HMR', 'R', 'HNI', 'X', 'HNP', 'X', 'HOA', 'X', 'HOE', 'X', 'HOH', 'X', 'HOM', 'X', 'HOP', 'X', 'HOQ', 'X', 'HP1', 'A', 'HP2', 'A', 'HP3', 'X', 'HPA', 'X', 'HPB', 'X', 'HPC', 'X', 'HPD', 'X', 'HPE', 'A', 'HPG', 'X', 'HPH', 'F', 'HPP', 'X', 'HPQ', 'F', 'HPR', 'X', 'HPT', 'X', 'HPY', 'X', 'HQO', 'X', 'HQQ', 'X', 'HQU', 'X', 'HRG', 'R', 'HRI', 'X', 'HSA', 'X', 'HSE', 'S', 'HSF', 'X', 'HSM', 'X', 'HSO', 'H', 'HSP', 'X', 'HT1', 'X', 'HT2', 'X', 'HTA', 'X', 'HTL', 'X', 'HTO', 'X', 'HTP', 'X', 'HTR', 'W', 'HUP', 'X', 'HUX', 'X', 'HV5', 'A', 'HV7', 'X', 'HV8', 'X', 'HXA', 'X', 'HXC', 'X', 'HXP', 'X', 'HY1', 'X', 'HYA', 'X', 'HYB', 'X', 'HYD', 'X', 'HYG', 'X', 'HYP', 'P', 'I06', 'X', 'I10', 'X', 'I11', 'X', 'I17', 'X', 'I2P', 'X', 'I3N', 'X', 'I3P', 'X', 'I40', 'X', 'I48', 'X', 'I4B', 'X', 'I52', 'X', 'I5P', 'X', 'I84', 'G', 'IAG', 'G', 'IAS', 'X', 'IB2', 'X', 'IBB', 'X', 'IBP', 'X', 'IBR', 'X', 'IBS', 'X', 'IBZ', 'X', 'IC1', 'X', 'ICA', 'X', 'ICI', 'X', 'ICL', 'X', 'ICP', 'X', 'ICT', 'X', 'ICU', 'X', 'ID2', 'X', 'IDC', 'X', 'IDG', 'X', 'IDH', 'X', 'IDM', 'X', 'IDO', 'X', 'IDP', 'X', 'IDR', 'X', 'IDS', 'X', 'IDT', 'X', 'IDU', 'X', 'IFG', 'X', 'IFP', 'X', 'IGL', 'X', 'IGN', 'X', 'IGP', 'X', 'IGU', 'X', 'IH1', 'X', 'IH2', 'X', 'IH3', 'X', 'IHB', 'X', 'IHN', 'X', 'IHP', 'X', 'IIC', 'X', 'IIL', 'I', 'IIP', 'X', 'IK2', 'X', 'IKT', 'X', 'ILA', 'I', 'ILE', 'I', 'ILG', 'X', 'ILO', 'X', 'ILX', 'I', 'IM1', 'X', 'IM2', 'X', 'IMC', 'X', 'IMD', 'X', 'IME', 'X', 'IMF', 'X', 'IMG', 'X', 'IMH', 'X', 'IMI', 'X', 'IML', 'I', 'IMM', 'X', 'IMN', 'X', 'IMO', 'X', 'IMP', 'X', 'IMR', 'X', 'IMU', 'X', 'IN0', 'D', 'IN1', 'R', 'IN2', 'K', 'IN3', 'L', 'IN4', 'X', 'IN5', 'A', 'IN6', 'L', 'IN7', 'X', 'IN8', 'X', 'IN9', 'X', 'INA', 'L', 'INB', 'X', 'INC', 'X', 'IND', 'X', 'INE', 'X', 'INF', 'F', 'ING', 'F', 'INH', 'R', 'INI', 'X', 'INJ', 'X', 'INK', 'X', 'INL', 'X', 'INM', 'X', 'INN', 'A', 'INO', 'X', 'INP', 'X', 'INQ', 'X', 'INR', 'X', 'INS', 'X', 'INT', 'V', 'INU', 'X', 'INV', 'X', 'INW', 'X', 'INX', 'X', 'INY', 'X', 'INZ', 'X', 'IOA', 'X', 'IOB', 'X', 'IOC', 'X', 'IOD', 'X', 'IOE', 'X', 'IOF', 'X', 'IOH', 'X', 'IOL', 'X', 'IOP', 'X', 'IP1', 'X', 'IP2', 'X', 'IP3', 'X', 'IP4', 'X', 'IPA', 'X', 'IPB', 'X', 'IPD', 'X', 'IPG', 'G', 'IPH', 'X', 'IPL', 'X', 'IPM', 'X', 'IPN', 'X', 'IPO', 'F', 'IPP', 'X', 'IPS', 'X', 'IPT', 'X', 'IPU', 'X', 'IPY', 'A', 'IQB', 'X', 'IQP', 'X', 'IQS', 'X', 'IR3', 'X', 'IRI', 'X', 'IRP', 'X', 'ISA', 'X', 'ISF', 'X', 'ISO', 'X', 'ISP', 'X', 'ISQ', 'X', 'ISU', 'X', 'ITM', 'X', 'ITP', 'X', 'ITR', 'W', 'ITS', 'X', 'ITU', 'X', 'IU5', 'X', 'IUM', 'X', 'IUR', 'X', 'IVA', 'X', 'IYG', 'G', 'IYR', 'Y', 'J77', 'X', 'J78', 'X', 'J80', 'X', 'JE2', 'X', 'JEN', 'X', 'JST', 'X', 'K21', 'X', 'KAH', 'X', 'KAI', 'X', 'KAM', 'X', 'KAN', 'X', 'KAP', 'X', 'KCP', 'X', 'KCX', 'K', 'KDO', 'X', 'KEF', 'X', 'KET', 'X', 'KGR', 'X', 'KH1', 'X', 'KIF', 'X', 'KIV', 'V', 'KNI', 'X', 'KPH', 'K', 'KTH', 'X', 'KTN', 'X', 'KTP', 'X', 'KWT', 'X', 'L04', 'X', 'L1P', 'X', 'L24', 'E', 'L2P', 'X', 'L34', 'E', 'L37', 'E', 'L3P', 'X', 'L4P', 'X', 'L75', 'X', 'LAC', 'X', 'LAD', 'X', 'LAK', 'X', 'LAM', 'X', 'LAR', 'X', 'LAT', 'X', 'LAX', 'X', 'LCO', 'X', 'LCP', 'X', 'LCS', 'X', 'LDA', 'X', 'LDO', 'L', 'LDP', 'X', 'LEA', 'X', 'LEO', 'X', 'LEU', 'L', 'LG2', 'X', 'LG6', 'X', 'LGC', 'X', 'LGP', 'X', 'LHG', 'X', 'LHY', 'F', 'LI1', 'X', 'LIG', 'X', 'LIL', 'X', 'LIM', 'X', 'LIN', 'X', 'LIO', 'X', 'LIP', 'X', 'LLA', 'X', 'LLP', 'K', 'LLY', 'K', 'LMG', 'X', 'LML', 'X', 'LMT', 'X', 'LMU', 'X', 'LMZ', 'X', 'LNK', 'X', 'LNL', 'X', 'LNO', 'X', 'LOF', 'X', 'LOL', 'L', 'LOM', 'X', 'LOR', 'X', 'LOS', 'X', 'LOV', 'L', 'LOX', 'X', 'LP1', 'X', 'LP2', 'R', 'LPA', 'X', 'LPC', 'X', 'LPF', 'X', 'LPL', 'X', 'LPM', 'X', 'LPP', 'X', 'LRB', 'X', 'LRU', 'X', 'LS1', 'X', 'LS2', 'X', 'LS3', 'X', 'LS4', 'X', 'LS5', 'X', 'LTA', 'X', 'LTL', 'X', 'LTR', 'W', 'LUM', 'X', 'LVS', 'L', 'LXC', 'X', 'LY2', 'X', 'LY3', 'X', 'LYA', 'X', 'LYB', 'X', 'LYC', 'X', 'LYD', 'X', 'LYM', 'K', 'LYN', 'X', 'LYS', 'K', 'LYT', 'X', 'LYW', 'X', 'LYZ', 'K', 'M1A', 'X', 'M1G', 'X', 'M2G', 'X', 'M3L', 'K', 'M6P', 'X', 'M6T', 'X', 'M7G', 'X', 'MA1', 'X', 'MA2', 'X', 'MA3', 'X', 'MA4', 'X', 'MA6', 'X', 'MAA', 'A', 'MAB', 'X', 'MAC', 'X', 'MAE', 'X', 'MAG', 'X', 'MAH', 'X', 'MAI', 'R', 'MAK', 'X', 'MAL', 'X', 'MAM', 'X', 'MAN', 'X', 'MAO', 'X', 'MAP', 'X', 'MAR', 'X', 'MAS', 'X', 'MAT', 'X', 'MAU', 'X', 'MAZ', 'X', 'MBA', 'X', 'MBD', 'X', 'MBG', 'X', 'MBH', 'X', 'MBN', 'X', 'MBO', 'X', 'MBR', 'X', 'MBS', 'X', 'MBV', 'X', 'MBZ', 'X', 'MCA', 'X', 'MCD', 'X', 'MCE', 'X', 'MCG', 'G', 'MCI', 'X', 'MCN', 'X', 'MCP', 'X', 'MCT', 'X', 'MCY', 'X', 'MD2', 'X', 'MDA', 'X', 'MDC', 'X', 'MDG', 'X', 'MDH', 'X', 'MDL', 'X', 'MDM', 'X', 'MDN', 'X', 'MDP', 'X', 'ME6', 'X', 'MEB', 'X', 'MEC', 'X', 'MEL', 'X', 'MEN', 'N', 'MEP', 'X', 'MER', 'X', 'MES', 'X', 'MET', 'M', 'MEV', 'X', 'MF2', 'X', 'MF3', 'M', 'MFB', 'X', 'MFD', 'X', 'MFU', 'X', 'MG7', 'X', 'MGA', 'X', 'MGB', 'X', 'MGD', 'X', 'MGG', 'R', 'MGL', 'X', 'MGN', 'Q', 'MGO', 'X', 'MGP', 'X', 'MGR', 'X', 'MGS', 'X', 'MGT', 'X', 'MGU', 'X', 'MGY', 'G', 'MHB', 'X', 'MHF', 'X', 'MHL', 'L', 'MHM', 'X', 'MHO', 'M', 'MHS', 'H', 'MHZ', 'X', 'MIA', 'X', 'MIC', 'X', 'MID', 'X', 'MIL', 'X', 'MIM', 'X', 'MIN', 'G', 'MIP', 'X', 'MIS', 'S', 'MIT', 'X', 'MJI', 'X', 'MK1', 'X', 'MKC', 'X', 'MLA', 'X', 'MLC', 'X', 'MLE', 'L', 'MLN', 'X', 'MLT', 'X', 'MLY', 'K', 'MLZ', 'K', 'MM3', 'X', 'MM4', 'X', 'MMA', 'X', 'MMC', 'X', 'MME', 'M', 'MMO', 'R', 'MMP', 'X', 'MMQ', 'X', 'MMT', 'X', 'MN1', 'X', 'MN2', 'X', 'MN3', 'X', 'MN5', 'X', 'MN7', 'X', 'MN8', 'X', 'MNA', 'X', 'MNB', 'X', 'MNC', 'X', 'MNG', 'X', 'MNL', 'L', 'MNO', 'X', 'MNP', 'X', 'MNQ', 'X', 'MNS', 'X', 'MNT', 'X', 'MNV', 'V', 'MO1', 'X', 'MO2', 'X', 'MO3', 'X', 'MO4', 'X', 'MO5', 'X', 'MO6', 'X', 'MOA', 'X', 'MOB', 'X', 'MOC', 'X', 'MOE', 'X', 'MOG', 'X', 'MOH', 'X', 'MOL', 'X', 'MOO', 'X', 'MOP', 'X', 'MOR', 'X', 'MOS', 'X', 'MOT', 'X', 'MOX', 'X', 'MP1', 'X', 'MP3', 'X', 'MPA', 'X', 'MPB', 'X', 'MPC', 'X', 'MPD', 'X', 'MPG', 'X', 'MPH', 'M', 'MPI', 'X', 'MPJ', 'M', 'MPL', 'X', 'MPN', 'X', 'MPO', 'X', 'MPP', 'X', 'MPQ', 'G', 'MPR', 'X', 'MPS', 'X', 'MQ0', 'X', 'MQ7', 'X', 'MQ8', 'X', 'MQ9', 'X', 'MQI', 'X', 'MR2', 'X', 'MRC', 'X', 'MRM', 'X', 'MRP', 'X', 'MS2', 'X', 'MSA', 'X', 'MSB', 'X', 'MSD', 'X', 'MSE', 'M', 'MSF', 'X', 'MSI', 'X', 'MSO', 'M', 'MSQ', 'X', 'MST', 'X', 'MSU', 'X', 'MTA', 'X', 'MTB', 'X', 'MTC', 'X', 'MTD', 'X', 'MTE', 'X', 'MTF', 'X', 'MTG', 'X', 'MTO', 'X', 'MTS', 'X', 'MTT', 'X', 'MTX', 'X', 'MTY', 'Y', 'MUG', 'X', 'MUP', 'X', 'MUR', 'X', 'MVA', 'V', 'MW1', 'X', 'MW2', 'X', 'MXA', 'X', 'MXY', 'X', 'MYA', 'X', 'MYC', 'X', 'MYG', 'X', 'MYR', 'X', 'MYS', 'X', 'MYT', 'X', 'MZM', 'X', 'N1T', 'X', 'N25', 'X', 'N2B', 'X', 'N3T', 'X', 'N4B', 'X', 'NA2', 'X', 'NA5', 'X', 'NA6', 'X', 'NAA', 'X', 'NAB', 'X', 'NAC', 'X', 'NAD', 'X', 'NAE', 'X', 'NAF', 'X', 'NAG', 'X', 'NAH', 'X', 'NAI', 'X', 'NAL', 'A', 'NAM', 'A', 'NAN', 'X', 'NAO', 'X', 'NAP', 'X', 'NAQ', 'X', 'NAR', 'X', 'NAS', 'X', 'NAU', 'X', 'NAV', 'X', 'NAW', 'X', 'NAX', 'X', 'NAY', 'X', 'NBA', 'X', 'NBD', 'X', 'NBE', 'X', 'NBG', 'X', 'NBN', 'X', 'NBP', 'X', 'NBS', 'X', 'NBU', 'X', 'NCA', 'X', 'NCB', 'A', 'NCD', 'X', 'NCH', 'X', 'NCM', 'X', 'NCN', 'X', 'NCO', 'X', 'NCR', 'X', 'NCS', 'X', 'ND4', 'X', 'NDA', 'X', 'NDC', 'X', 'NDD', 'X', 'NDO', 'X', 'NDP', 'X', 'NDT', 'X', 'NEA', 'X', 'NEB', 'X', 'NED', 'X', 'NEM', 'H', 'NEN', 'X', 'NEO', 'X', 'NEP', 'H', 'NEQ', 'X', 'NES', 'X', 'NET', 'X', 'NEV', 'X', 'NFA', 'F', 'NFE', 'X', 'NFG', 'X', 'NFP', 'X', 'NFS', 'X', 'NG6', 'X', 'NGA', 'X', 'NGL', 'X', 'NGM', 'X', 'NGO', 'X', 'NGP', 'X', 'NGT', 'X', 'NGU', 'X', 'NH2', 'X', 'NH3', 'X', 'NH4', 'X', 'NHD', 'X', 'NHE', 'X', 'NHM', 'X', 'NHP', 'X', 'NHR', 'X', 'NHS', 'X', 'NI1', 'X', 'NI2', 'X', 'NIC', 'X', 'NID', 'X', 'NIK', 'X', 'NIO', 'X', 'NIP', 'X', 'NIT', 'X', 'NIU', 'X', 'NIY', 'Y', 'NLA', 'X', 'NLE', 'L', 'NLG', 'X', 'NLN', 'L', 'NLP', 'L', 'NM1', 'X', 'NMA', 'A', 'NMB', 'X', 'NMC', 'G', 'NMD', 'X', 'NME', 'X', 'NMN', 'X', 'NMO', 'X', 'NMQ', 'X', 'NMX', 'X', 'NMY', 'X', 'NNH', 'R', 'NNO', 'X', 'NO2', 'X', 'NO3', 'X', 'NOA', 'X', 'NOD', 'X', 'NOJ', 'X', 'NON', 'X', 'NOP', 'X', 'NOR', 'X', 'NOS', 'X', 'NOV', 'X', 'NOX', 'X', 'NP3', 'X', 'NPA', 'X', 'NPC', 'X', 'NPD', 'X', 'NPE', 'X', 'NPF', 'X', 'NPH', 'C', 'NPI', 'X', 'NPL', 'X', 'NPN', 'X', 'NPO', 'X', 'NPP', 'X', 'NPT', 'X', 'NPY', 'X', 'NRG', 'R', 'NRI', 'X', 'NS1', 'X', 'NS5', 'X', 'NSP', 'X', 'NTA', 'X', 'NTB', 'X', 'NTC', 'X', 'NTH', 'X', 'NTM', 'X', 'NTP', 'X', 'NTS', 'X', 'NTU', 'X', 'NTZ', 'X', 'NU1', 'X', 'NVA', 'V', 'NVI', 'X', 'NVP', 'X', 'NW1', 'X', 'NYP', 'X', 'O4M', 'X', 'OAA', 'X', 'OAI', 'X', 'OAP', 'X', 'OAR', 'X', 'OAS', 'S', 'OBA', 'X', 'OBN', 'X', 'OC1', 'X', 'OC2', 'X', 'OC3', 'X', 'OC4', 'X', 'OC5', 'X', 'OC6', 'X', 'OC7', 'X', 'OCL', 'X', 'OCM', 'X', 'OCN', 'X', 'OCO', 'X', 'OCP', 'X', 'OCS', 'C', 'OCT', 'X', 'OCV', 'K', 'OCY', 'C', 'ODA', 'X', 'ODS', 'X', 'OES', 'X', 'OET', 'X', 'OF1', 'X', 'OF2', 'X', 'OF3', 'X', 'OFL', 'X', 'OFO', 'X', 'OHE', 'X', 'OHO', 'X', 'OHT', 'X', 'OIC', 'X', 'OIP', 'X', 'OKA', 'X', 'OLA', 'X', 'OLE', 'X', 'OLI', 'X', 'OLO', 'X', 'OMB', 'X', 'OMC', 'X', 'OMD', 'X', 'OME', 'X', 'OMG', 'X', 'OMP', 'X', 'OMT', 'M', 'OMU', 'X', 'ONE', 'X', 'ONL', 'L', 'ONP', 'X', 'OPA', 'X', 'OPD', 'X', 'OPE', 'X', 'OPG', 'X', 'OPH', 'X', 'OPN', 'X', 'OPP', 'X', 'OPR', 'R', 'ORN', 'X', 'ORO', 'X', 'ORP', 'X', 'OSB', 'X', 'OSS', 'X', 'OTA', 'X', 'OTB', 'X', 'OTE', 'X', 'OTG', 'X', 'OUT', 'X', 'OVA', 'X', 'OWQ', 'X', 'OXA', 'X', 'OXE', 'X', 'OXI', 'X', 'OXL', 'X', 'OXM', 'X', 'OXN', 'X', 'OXO', 'X', 'OXP', 'X', 'OXS', 'X', 'OXY', 'X', 'P11', 'A', 'P24', 'X', 'P28', 'X', 'P2P', 'X', 'P2U', 'X', 'P3M', 'X', 'P4C', 'X', 'P4P', 'X', 'P5P', 'X', 'P6G', 'X', 'PA1', 'X', 'PA2', 'X', 'PA3', 'X', 'PA4', 'X', 'PA5', 'X', 'PAA', 'X', 'PAB', 'X', 'PAC', 'X', 'PAD', 'X', 'PAE', 'X', 'PAG', 'X', 'PAH', 'X', 'PAI', 'X', 'PAL', 'D', 'PAM', 'X', 'PAN', 'X', 'PAO', 'X', 'PAP', 'A', 'PAQ', 'F', 'PAR', 'X', 'PAS', 'X', 'PAT', 'W', 'PBA', 'X', 'PBB', 'X', 'PBC', 'X', 'PBF', 'F', 'PBG', 'X', 'PBI', 'X', 'PBM', 'X', 'PBN', 'X', 'PBP', 'X', 'PBR', 'X', 'PBZ', 'X', 'PC2', 'X', 'PCA', 'E', 'PCB', 'X', 'PCD', 'X', 'PCE', 'X', 'PCG', 'X', 'PCH', 'X', 'PCL', 'X', 'PCM', 'X', 'PCP', 'X', 'PCR', 'X', 'PCS', 'X', 'PCU', 'X', 'PCV', 'X', 'PCY', 'X', 'PD1', 'X', 'PDA', 'X', 'PDC', 'X', 'PDD', 'A', 'PDE', 'A', 'PDI', 'X', 'PDL', 'A', 'PDN', 'X', 'PDO', 'X', 'PDP', 'X', 'PDT', 'X', 'PDU', 'X', 'PE2', 'X', 'PE6', 'X', 'PEA', 'X', 'PEB', 'X', 'PEC', 'X', 'PED', 'X', 'PEE', 'X', 'PEF', 'X', 'PEG', 'X', 'PEL', 'X', 'PEO', 'X', 'PEP', 'X', 'PEQ', 'X', 'PER', 'X', 'PET', 'X', 'PFB', 'X', 'PFC', 'X', 'PFG', 'X', 'PFL', 'X', 'PFM', 'X', 'PFZ', 'X', 'PG4', 'X', 'PG5', 'X', 'PG6', 'X', 'PGA', 'X', 'PGC', 'X', 'PGD', 'X', 'PGE', 'X', 'PGG', 'G', 'PGH', 'X', 'PGL', 'X', 'PGO', 'X', 'PGP', 'X', 'PGQ', 'X', 'PGR', 'X', 'PGS', 'X', 'PGU', 'X', 'PGX', 'X', 'PGY', 'G', 'PH1', 'X', 'PH2', 'X', 'PH3', 'X', 'PHA', 'F', 'PHB', 'X', 'PHC', 'X', 'PHD', 'X', 'PHE', 'F', 'PHG', 'X', 'PHH', 'X', 'PHI', 'F', 'PHL', 'F', 'PHM', 'X', 'PHN', 'X', 'PHO', 'X', 'PHP', 'X', 'PHQ', 'X', 'PHS', 'H', 'PHT', 'X', 'PHW', 'P', 'PHY', 'X', 'PI1', 'X', 'PI2', 'X', 'PI3', 'X', 'PI4', 'X', 'PI5', 'X', 'PI6', 'X', 'PI7', 'X', 'PI8', 'X', 'PI9', 'X', 'PIA', 'X', 'PIB', 'X', 'PIC', 'X', 'PID', 'X', 'PIG', 'X', 'PIH', 'X', 'PIM', 'X', 'PIN', 'X', 'PIO', 'X', 'PIP', 'X', 'PIQ', 'X', 'PIR', 'X', 'PIV', 'X', 'PKF', 'X', 'PL1', 'X', 'PL9', 'X', 'PLA', 'D', 'PLC', 'X', 'PLE', 'L', 'PLG', 'G', 'PLH', 'X', 'PLM', 'X', 'PLP', 'X', 'PLS', 'S', 'PLT', 'W', 'PLU', 'L', 'PLY', 'X', 'PMA', 'X', 'PMB', 'X', 'PMC', 'X', 'PME', 'F', 'PML', 'X', 'PMM', 'X', 'PMO', 'X', 'PMP', 'X', 'PMS', 'X', 'PMY', 'X', 'PN2', 'X', 'PNA', 'X', 'PNB', 'X', 'PNC', 'G', 'PND', 'X', 'PNE', 'A', 'PNF', 'X', 'PNG', 'X', 'PNI', 'X', 'PNL', 'X', 'PNM', 'X', 'PNN', 'X', 'PNO', 'X', 'PNP', 'X', 'PNQ', 'X', 'PNS', 'X', 'PNT', 'X', 'PNU', 'X', 'PO2', 'X', 'PO4', 'X', 'POB', 'X', 'POC', 'X', 'POL', 'X', 'POM', 'P', 'PON', 'X', 'POP', 'X', 'POR', 'X', 'POS', 'X', 'PP1', 'X', 'PP2', 'X', 'PP3', 'A', 'PP4', 'X', 'PP5', 'X', 'PP6', 'X', 'PP7', 'X', 'PP8', 'N', 'PP9', 'X', 'PPB', 'X', 'PPC', 'X', 'PPD', 'X', 'PPE', 'E', 'PPG', 'X', 'PPH', 'F', 'PPI', 'X', 'PPJ', 'V', 'PPL', 'X', 'PPM', 'X', 'PPN', 'A', 'PPO', 'X', 'PPP', 'X', 'PPQ', 'X', 'PPR', 'X', 'PPS', 'X', 'PPT', 'X', 'PPU', 'X', 'PPX', 'F', 'PPY', 'X', 'PPZ', 'X', 'PQ0', 'X', 'PQN', 'X', 'PQQ', 'X', 'PR1', 'X', 'PR2', 'X', 'PR3', 'X', 'PRA', 'X', 'PRB', 'X', 'PRC', 'X', 'PRD', 'X', 'PRE', 'X', 'PRF', 'X', 'PRH', 'X', 'PRI', 'P', 'PRL', 'X', 'PRN', 'X', 'PRO', 'P', 'PRP', 'X', 'PRR', 'A', 'PRS', 'P', 'PRZ', 'X', 'PS0', 'X', 'PSA', 'X', 'PSD', 'X', 'PSE', 'X', 'PSF', 'S', 'PSG', 'X', 'PSI', 'X', 'PSO', 'X', 'PSQ', 'X', 'PSS', 'X', 'PST', 'X', 'PSU', 'X', 'PT1', 'X', 'PT3', 'X', 'PTA', 'X', 'PTC', 'X', 'PTD', 'X', 'PTE', 'X', 'PTH', 'Y', 'PTL', 'X', 'PTM', 'Y', 'PTN', 'X', 'PTO', 'X', 'PTP', 'X', 'PTR', 'Y', 'PTS', 'X', 'PTT', 'X', 'PTU', 'X', 'PTY', 'X', 'PUA', 'X', 'PUB', 'X', 'PUR', 'X', 'PUT', 'X', 'PVA', 'X', 'PVB', 'X', 'PVH', 'H', 'PVL', 'X', 'PXA', 'X', 'PXF', 'X', 'PXG', 'X', 'PXP', 'X', 'PXY', 'X', 'PXZ', 'X', 'PY2', 'X', 'PY4', 'X', 'PY5', 'X', 'PY6', 'X', 'PYA', 'A', 'PYC', 'X', 'PYD', 'X', 'PYE', 'X', 'PYL', 'X', 'PYM', 'X', 'PYO', 'X', 'PYP', 'X', 'PYQ', 'X', 'PYR', 'X', 'PYS', 'X', 'PYT', 'X', 'PYX', 'X', 'PYY', 'X', 'PYZ', 'X', 'PZQ', 'X', 'Q82', 'X', 'QNC', 'X', 'QND', 'X', 'QSI', 'Q', 'QTR', 'X', 'QUA', 'X', 'QUE', 'X', 'QUI', 'X', 'QUO', 'X', 'R11', 'X', 'R12', 'X', 'R13', 'X', 'R18', 'X', 'R1P', 'X', 'R56', 'X', 'R5P', 'X', 'RA2', 'X', 'RAD', 'X', 'RAI', 'X', 'RAL', 'X', 'RAM', 'X', 'RAN', 'X', 'RAP', 'X', 'RBF', 'X', 'RBU', 'X', 'RCA', 'X', 'RCL', 'X', 'RCO', 'X', 'RDC', 'X', 'RDF', 'W', 'RE9', 'X', 'REA', 'X', 'RED', 'K', 'REO', 'X', 'REP', 'X', 'RET', 'X', 'RFA', 'X', 'RFB', 'X', 'RFL', 'X', 'RFP', 'X', 'RG1', 'X', 'RGS', 'X', 'RH1', 'X', 'RHA', 'X', 'RHC', 'X', 'RHD', 'X', 'RHM', 'X', 'RHO', 'X', 'RHQ', 'X', 'RHS', 'X', 'RIA', 'X', 'RIB', 'X', 'RIC', 'X', 'RIF', 'X', 'RIN', 'X', 'RIP', 'X', 'RIT', 'X', 'RMB', 'X', 'RMN', 'X', 'RMP', 'X', 'RNG', 'X', 'RNS', 'X', 'RNT', 'X', 'RO2', 'X', 'RO4', 'X', 'ROC', 'N', 'ROI', 'X', 'ROM', 'X', 'RON', 'V', 'ROP', 'X', 'ROS', 'X', 'ROX', 'X', 'RPA', 'X', 'RPD', 'X', 'RPH', 'X', 'RPL', 'X', 'RPP', 'X', 'RPR', 'X', 'RPX', 'X', 'RQ3', 'X', 'RR1', 'X', 'RR6', 'X', 'RRS', 'X', 'RS1', 'X', 'RS2', 'X', 'RS7', 'X', 'RSS', 'X', 'RTA', 'X', 'RTB', 'X', 'RTC', 'X', 'RTL', 'X', 'RUB', 'X', 'RUN', 'X', 'RWJ', 'X', 'RXP', 'X', 'S02', 'X', 'S11', 'X', 'S1H', 'S', 'S27', 'X', 'S2C', 'C', 'S3P', 'X', 'S4U', 'X', 'S57', 'X', 'S58', 'X', 'S5H', 'X', 'S6G', 'X', 'S80', 'X', 'SAA', 'X', 'SAB', 'X', 'SAC', 'S', 'SAD', 'X', 'SAE', 'X', 'SAF', 'X', 'SAH', 'C', 'SAI', 'C', 'SAL', 'X', 'SAM', 'M', 'SAN', 'X', 'SAP', 'X', 'SAR', 'X', 'SAS', 'X', 'SB1', 'X', 'SB2', 'X', 'SB3', 'X', 'SB4', 'X', 'SB5', 'X', 'SB6', 'X', 'SBA', 'L', 'SBB', 'X', 'SBD', 'A', 'SBI', 'X', 'SBL', 'A', 'SBN', 'X', 'SBO', 'X', 'SBR', 'X', 'SBS', 'X', 'SBT', 'X', 'SBU', 'X', 'SBX', 'X', 'SC4', 'X', 'SCA', 'X', 'SCC', 'X', 'SCD', 'X', 'SCH', 'C', 'SCI', 'X', 'SCL', 'X', 'SCM', 'X', 'SCN', 'X', 'SCO', 'X', 'SCP', 'S', 'SCR', 'X', 'SCS', 'X', 'SCV', 'C', 'SCY', 'C', 'SD8', 'X', 'SDK', 'X', 'SDZ', 'X', 'SE4', 'X', 'SEA', 'X', 'SEB', 'S', 'SEC', 'X', 'SEG', 'A', 'SEI', 'X', 'SEL', 'S', 'SEM', 'X', 'SEO', 'X', 'SEP', 'S', 'SER', 'S', 'SES', 'X', 'SET', 'S', 'SEU', 'X', 'SF4', 'X', 'SFG', 'X', 'SFN', 'X', 'SFO', 'X', 'SGA', 'X', 'SGC', 'X', 'SGL', 'X', 'SGM', 'X', 'SGN', 'X', 'SGP', 'X', 'SHA', 'X', 'SHC', 'X', 'SHF', 'X', 'SHH', 'X', 'SHP', 'G', 'SHR', 'E', 'SHT', 'T', 'SHU', 'X', 'SI2', 'X', 'SIA', 'X', 'SIF', 'X', 'SIG', 'X', 'SIH', 'X', 'SIM', 'X', 'SIN', 'X', 'SKD', 'X', 'SKF', 'X', 'SLB', 'X', 'SLE', 'X', 'SLZ', 'K', 'SMA', 'X', 'SMC', 'C', 'SME', 'M', 'SML', 'X', 'SMM', 'M', 'SMN', 'X', 'SMP', 'X', 'SMS', 'X', 'SN1', 'X', 'SN6', 'X', 'SN7', 'X', 'SNC', 'C', 'SNN', 'X', 'SNP', 'X', 'SO1', 'X', 'SO2', 'X', 'SO3', 'X', 'SO4', 'X', 'SOA', 'X', 'SOC', 'C', 'SOM', 'X', 'SOR', 'X', 'SOT', 'X', 'SOX', 'X', 'SPA', 'X', 'SPB', 'X', 'SPC', 'X', 'SPD', 'X', 'SPE', 'X', 'SPG', 'X', 'SPH', 'X', 'SPI', 'X', 'SPK', 'X', 'SPM', 'X', 'SPN', 'X', 'SPO', 'X', 'SPP', 'X', 'SPS', 'X', 'SPY', 'X', 'SQU', 'X', 'SRA', 'X', 'SRB', 'X', 'SRD', 'X', 'SRL', 'X', 'SRM', 'X', 'SRS', 'X', 'SRY', 'X', 'SSA', 'X', 'SSB', 'X', 'SSG', 'X', 'SSP', 'X', 'ST1', 'X', 'ST2', 'X', 'ST3', 'X', 'ST4', 'X', 'ST5', 'X', 'ST6', 'X', 'STA', 'X', 'STB', 'X', 'STE', 'X', 'STG', 'X', 'STI', 'X', 'STL', 'X', 'STN', 'X', 'STO', 'X', 'STP', 'X', 'STR', 'X', 'STU', 'X', 'STY', 'Y', 'SU1', 'X', 'SU2', 'X', 'SUC', 'X', 'SUI', 'X', 'SUL', 'X', 'SUR', 'X', 'SVA', 'S', 'SWA', 'X', 'T16', 'X', 'T19', 'X', 'T23', 'X', 'T29', 'X', 'T33', 'X', 'T3P', 'X', 'T42', 'A', 'T44', 'X', 'T5A', 'X', 'T6A', 'T', 'T6P', 'X', 'T80', 'X', 'T87', 'X', 'TA1', 'X', 'TAA', 'X', 'TAB', 'X', 'TAC', 'X', 'TAD', 'X', 'TAF', 'X', 'TAM', 'X', 'TAP', 'X', 'TAR', 'X', 'TAS', 'X', 'TAU', 'X', 'TAX', 'X', 'TAZ', 'X', 'TB9', 'X', 'TBA', 'X', 'TBD', 'X', 'TBG', 'G', 'TBH', 'X', 'TBM', 'T', 'TBO', 'X', 'TBP', 'X', 'TBR', 'X', 'TBS', 'X', 'TBT', 'X', 'TBU', 'X', 'TBZ', 'X', 'TC4', 'X', 'TCA', 'X', 'TCB', 'X', 'TCH', 'X', 'TCK', 'X', 'TCL', 'X', 'TCM', 'X', 'TCN', 'X', 'TCP', 'X', 'TCR', 'W', 'TCS', 'X', 'TCZ', 'X', 'TDA', 'X', 'TDB', 'X', 'TDG', 'X', 'TDP', 'X', 'TDR', 'X', 'TDX', 'X', 'TEA', 'X', 'TEM', 'X', 'TEN', 'X', 'TEO', 'X', 'TEP', 'X', 'TER', 'X', 'TES', 'X', 'TET', 'X', 'TFA', 'X', 'TFB', 'X', 'TFH', 'X', 'TFI', 'X', 'TFK', 'X', 'TFP', 'X', 'THA', 'X', 'THB', 'X', 'THC', 'T', 'THD', 'X', 'THE', 'X', 'THF', 'X', 'THJ', 'X', 'THK', 'X', 'THM', 'X', 'THN', 'X', 'THO', 'T', 'THP', 'X', 'THQ', 'X', 'THR', 'T', 'THS', 'X', 'THT', 'X', 'THU', 'X', 'THX', 'X', 'THZ', 'X', 'TI1', 'X', 'TI2', 'X', 'TI3', 'P', 'TIA', 'X', 'TIH', 'A', 'TK4', 'X', 'TLA', 'X', 'TLC', 'X', 'TLM', 'X', 'TLN', 'X', 'TLX', 'X', 'TM5', 'X', 'TM6', 'X', 'TMA', 'X', 'TMB', 'T', 'TMC', 'X', 'TMD', 'T', 'TME', 'X', 'TMF', 'X', 'TML', 'K', 'TMM', 'X', 'TMN', 'X', 'TMP', 'X', 'TMQ', 'X', 'TMR', 'X', 'TMT', 'X', 'TMZ', 'X', 'TNB', 'C', 'TND', 'X', 'TNK', 'X', 'TNP', 'X', 'TNT', 'X', 'TOA', 'X', 'TOB', 'X', 'TOC', 'X', 'TOL', 'X', 'TOP', 'X', 'TOS', 'X', 'TOT', 'X', 'TP1', 'G', 'TP2', 'P', 'TP3', 'E', 'TP4', 'E', 'TP7', 'T', 'TPA', 'X', 'TPE', 'X', 'TPF', 'X', 'TPI', 'X', 'TPL', 'W', 'TPM', 'X', 'TPN', 'G', 'TPO', 'T', 'TPP', 'X', 'TPQ', 'A', 'TPR', 'P', 'TPS', 'X', 'TPT', 'X', 'TPV', 'X', 'TPX', 'X', 'TPY', 'X', 'TQ3', 'X', 'TQ4', 'X', 'TQ5', 'X', 'TQ6', 'X', 'TR1', 'X', 'TRA', 'X', 'TRB', 'X', 'TRC', 'X', 'TRD', 'X', 'TRE', 'X', 'TRF', 'W', 'TRG', 'K', 'TRH', 'X', 'TRI', 'X', 'TRJ', 'X', 'TRM', 'X', 'TRN', 'W', 'TRO', 'W', 'TRP', 'W', 'TRQ', 'X', 'TRS', 'X', 'TRX', 'W', 'TRZ', 'X', 'TS2', 'X', 'TS3', 'X', 'TS4', 'X', 'TS5', 'X', 'TSA', 'X', 'TSB', 'X', 'TSI', 'X', 'TSM', 'X', 'TSN', 'X', 'TSP', 'X', 'TSU', 'X', 'TTA', 'X', 'TTE', 'X', 'TTN', 'X', 'TTO', 'X', 'TTP', 'X', 'TTX', 'X', 'TXL', 'X', 'TYA', 'Y', 'TYB', 'Y', 'TYD', 'X', 'TYI', 'Y', 'TYL', 'X', 'TYM', 'W', 'TYN', 'Y', 'TYQ', 'Y', 'TYR', 'Y', 'TYS', 'Y', 'TYV', 'X', 'TYY', 'A', 'TZB', 'X', 'TZC', 'X', 'TZE', 'X', 'TZL', 'X', 'TZO', 'X', 'TZP', 'X', 'U01', 'X', 'U02', 'X', 'U03', 'X', 'U04', 'X', 'U05', 'X', 'U0E', 'X', 'U10', 'X', 'U18', 'X', 'U2G', 'X', 'U3P', 'X', 'U49', 'X', 'U55', 'X', 'U5P', 'X', 'U66', 'X', 'U89', 'X', 'U8U', 'X', 'UAA', 'X', 'UAG', 'A', 'UAP', 'X', 'UAR', 'X', 'UC1', 'X', 'UC2', 'X', 'UC3', 'X', 'UC4', 'X', 'UD1', 'X', 'UD2', 'X', 'UDP', 'X', 'UDX', 'X', 'UFG', 'X', 'UFM', 'X', 'UFP', 'X', 'UGA', 'X', 'UIN', 'X', 'UKP', 'A', 'UM3', 'X', 'UMA', 'A', 'UMG', 'X', 'UMP', 'X', 'UNA', 'X', 'UND', 'X', 'UNI', 'X', 'UNK', 'X', 'UNN', 'X', 'UNX', 'X', 'UP5', 'X', 'UP6', 'X', 'UPA', 'X', 'UPF', 'X', 'UPG', 'X', 'UPP', 'X', 'UQ1', 'X', 'UQ2', 'X', 'UQ6', 'X', 'UR2', 'X', 'URA', 'X', 'URE', 'X', 'URF', 'X', 'URI', 'X', 'URS', 'X', 'UTP', 'X', 'UVC', 'X', 'UVW', 'X', 'V35', 'X', 'V36', 'X', 'V4O', 'X', 'V7O', 'X', 'VAA', 'V', 'VAC', 'X', 'VAD', 'V', 'VAF', 'V', 'VAG', 'X', 'VAL', 'V', 'VAN', 'X', 'VAS', 'X', 'VAX', 'X', 'VDX', 'X', 'VDY', 'X', 'VG1', 'X', 'VIB', 'X', 'VIR', 'X', 'VIT', 'X', 'VK3', 'X', 'VO3', 'X', 'VO4', 'X', 'VS1', 'F', 'VS2', 'F', 'VS3', 'F', 'VS4', 'F', 'VXA', 'X', 'W01', 'X', 'W02', 'X', 'W03', 'X', 'W11', 'X', 'W33', 'X', 'W35', 'X', 'W42', 'X', 'W43', 'X', 'W54', 'X', 'W56', 'X', 'W59', 'X', 'W71', 'X', 'W84', 'X', 'W8R', 'X', 'W91', 'X', 'WAY', 'X', 'WCC', 'X', 'WO2', 'X', 'WO4', 'X', 'WRB', 'X', 'WRR', 'X', 'WRS', 'X', 'WW7', 'X', 'X2F', 'X', 'X7O', 'X', 'XAA', 'X', 'XAN', 'X', 'XAO', 'X', 'XBB', 'X', 'XBP', 'X', 'XDN', 'X', 'XDP', 'X', 'XIF', 'X', 'XIM', 'X', 'XK2', 'X', 'XL1', 'X', 'XLS', 'X', 'XMP', 'X', 'XN1', 'X', 'XN2', 'X', 'XN3', 'X', 'XUL', 'X', 'XV6', 'X', 'XYD', 'X', 'XYH', 'X', 'XYL', 'X', 'XYP', 'X', 'XYS', 'X', 'YOF', 'Y', 'YRR', 'X', 'YT3', 'X', 'YZ9', 'X', 'Z34', 'G', 'Z5A', 'X', 'ZAF', 'X', 'ZAP', 'X', 'ZEB', 'X', 'ZEN', 'X', 'ZES', 'X', 'ZID', 'X', 'ZMR', 'X', 'ZN3', 'X', 'ZNH', 'X', 'ZNO', 'X', 'ZO3', 'X', 'ZPR', 'P', 'ZRA', 'A', 'ZST', 'X', 'ZYA', 'A', 'ASN','N'); } use Cwd; use File::Path; use FileHandle; use strict; our (%MODE, %PG, %ENV_SET, %SUPPORTED_OS); our $EXIT_SUCCESS=0; our $EXIT_FAILURE=1; our $INTERNET=0; our $CP="cp "; #was causing a crash on MacOSX our $SILENT=">/dev/null 2>/dev/null"; our $WEB_BASE="http://www.tcoffee.org"; our $TCLINKDB_ADDRESS="$WEB_BASE/Resources/tclinkdb.txt"; our $OS=get_os(); our $ROOT=&get_root(); our $CD=cwd(); our $CDIR=$CD; our $HOME=$ENV{'HOME'}; our $CXX="g++"; our $CXXFLAGS=""; our $CPP="g++"; our $CPPFLAGS=""; our $CC="gcc"; our $CFLAGS=""; our $FC="f77"; our $FFLAGS=""; my $install="all"; my $default_update_action="no_update"; my @required_applications=("wget_OR_curl"); my @smode=("all", "clean", "install"); &initialize_PG(); my $cl=join( " ", @ARGV); if ($#ARGV==-1 || ($cl=~/-h/) ||($cl=~/-H/) ) { print "\n!!!!!!! ./install t_coffee --> installs t_coffee only"; print "\n!!!!!!! ./install all --> installs all the modes [mcoffee, expresso, psicoffee,rcoffee..]"; print "\n!!!!!!! ./install [mcoffee|rcoffee|..] --> installs the specified mode"; print "\n!!!!!!! ./install -h --> print usage\n\n"; if ( $#ARGV==-1){exit ($EXIT_FAILURE);} } if (($cl=~/-h/) ||($cl=~/-H/) ) { my $m; print "\n\n!!!!!!! advanced mode\n"; foreach $m ((keys (%MODE)),@smode) { print "!!!!!!! ./install $m\n"; } print "!!!!!!! ./install [target:package|mode|] [-update|-force|-exec=dir|-dis=dir|-root|-tclinkdb=file|-] [CC=|FCC=|CXX=|CFLAGS=|CXXFLAGS=]\n"; print "!!!!!!! ./install clean [removes all executables]\n"; print "!!!!!!! ./install [optional:target] -update [updates package already installed]\n"; print "!!!!!!! ./install [optional:target] -force [Forces recompilation over everything]\n"; print "!!!!!!! ./install [optional:target] -root [You are running as root]\n"; print "!!!!!!! ./install [optional:target] -exec=/foo/bar/ [address for the T-Coffee executable]\n"; print "!!!!!!! ./install [optional:target] -dis=/foo/bar/ [Address where distributions should be stored]\n"; print "!!!!!!! ./install [optional:target] -tclinkdb=foo|update [file containing all the packages to be installed]\n"; print "!!!!!!! ./install [optional:target] -tclinkdb=foo|update [file containing all the packages to be installed]\n"; print "!!!!!!! ./install [optional:target] -clean [clean everything]\n"; print "!!!!!!! ./install [optional:target] -plugins [plugins directory]\n"; print "!!!!!!! mode:"; foreach $m (keys(%MODE)){print "$m ";} print "\n"; print "!!!!!!! Packages:"; foreach $m (keys (%PG)){print "$m ";} print "\n"; print "\n\n"; exit ($EXIT_FAILURE); } my (@argl)=($cl=~/(\S+=[^=]+)\s\w+=/g); push (@argl, ($cl=~/(\S+=[^=]+\S)\s*$/g)); foreach $a (@argl) { if ( ($cl=~/CXX=(.*)/)){$CXX=$1;} if ( ($cl=~/-CC=(.*)/ )){$CC=$1;} if ( ($cl=~/-FC=(.*)/ )){$FC=$1;} if ( ($cl=~/-CFLAGS=(.*)/)){$CFLAGS=$1;} if ( ($cl=~/-CXXFLAGS=(.*)/)){$CXXFLAGS=$1;} } our ($ROOT_INSTALL, $NO_QUESTION, $default_update_action,$BINARIES_ONLY,$force, $default_update_action, $INSTALL_DIR, $PLUGINS_DIR, $DISTRIBUTIONS,$tclinkdb, $proxy, $clean); if ( ($cl=~/-root/)){$ROOT_INSTALL=1;} if ( ($cl=~/-no_question/)){$NO_QUESTION=1;} if ( ($cl=~/-update/)){$default_update_action="update";} if ( ($cl=~/-binaries/)){$BINARIES_ONLY=1;} if ( ($cl=~/-force/)){$force=1;$default_update_action="update"} if ( ($cl=~/-exec=\s*(\S+)/)){$INSTALL_DIR=$1;} if ( ($cl=~/-plugins=\s*(\S+)/)){$PLUGINS_DIR=$1;} if ( ($cl=~/-dis=\s*(\S+)/)){$DISTRIBUTIONS=$1;} if ( ($cl=~/-tclinkdb=\s*(\S+)/)){$tclinkdb=$1;} if ( ($cl=~/-proxy=\s*(\S+)/)){$proxy=$1;} if ( ($cl=~/-clean/)){$clean=1;} if ($tclinkdb){&update_tclinkdb ($tclinkdb);} our $TCDIR=$ENV{DIR_4_TCOFFEE}; our $TCCACHE=$ENV{CACHE_4_TCOFFEE}; our $TCTMP=$ENV{CACHE_4_TCOFFEE}; our $TCM=$ENV{MCOFFEE_4_TCOFFEE}; our $TCMETHODS=$ENV{METHODS_4_TCOFFEE}; our $TCPLUGINS=$ENV{PLUGINS_4_TCOFFEE}; our $PLUGINS_DIR=""; our $INSTALL_DIR=""; &add_dir ($TCDIR="$HOME/.t_coffee"); &add_dir ($TCCACHE="$TCDIR/cache"); &add_dir ($TCTMP="$CDIR/tmp"); &add_dir ($TCM="$TCDIR/mcoffee"); &add_dir ($TCMETHODS="$TCDIR/methods"); &add_dir ($TCPLUGINS="$TCDIR/plugins/$OS"); our $BASE="$CD/bin"; our $BIN="$BASE/binaries/$OS"; our $DOWNLOAD_DIR="$BASE/download"; our $DOWNLOAD_FILE="$DOWNLOAD_DIR/files"; our $TMP="$BASE/tmp"; &add_dir($BASE); &add_dir($BIN); &add_dir($DOWNLOAD_DIR); &add_dir($DOWNLOAD_FILE); if (!$DISTRIBUTIONS){$DISTRIBUTIONS="$DOWNLOAD_DIR/distributions";} &add_dir ($DISTRIBUTIONS); &add_dir ($TMP); if (!$PLUGINS_DIR && !$ROOT_INSTALL){$PLUGINS_DIR=$TCPLUGINS;} elsif (!$PLUGINS_DIR && $ROOT_INSTALL){$PLUGINS_DIR="/usr/local/bin/";} if (!$INSTALL_DIR && !$ROOT_INSTALL){$INSTALL_DIR="$HOME/bin/";mkpath ($INSTALL_DIR);} elsif (!$INSTALL_DIR && $ROOT_INSTALL){$INSTALL_DIR="/usr/local/bin/";} if (-d "mcoffee"){`cp mcoffee/* $TCM`;} our $ENV_FILE="$TCDIR/t_coffee_env"; &env_file2putenv ($ENV_FILE); &set_proxy($proxy); my ($target, $p, $r); $target=$p; foreach $p ( ((keys (%PG)),(keys(%MODE)),(@smode)) ) { if ($ARGV[0] eq $p && $target eq ""){$target=$p;} } if ($target eq ""){exit ($EXIT_FAILURE);} foreach $r (@required_applications) { my @app_list; my $i; $i=0; @app_list=split (/_OR_/, $r); foreach my $pg (@app_list) { $i+=&pg_is_installed ($pg); } if ($i==0) { print "One of the following packages must be installed to proceed: "; foreach my $pg (@app_list) { print ("$pg "); } die; } } &sign_license_ni(); $PG{C}{compiler}=get_C_compiler($CC); $PG{Fortran}{compiler}=get_F_compiler($FC); $PG{CXX}{compiler}=$PG{CPP}{compiler}=$PG{GPP}{compiler}=get_CXX_compiler($CXX); if ($CXXFLAGS){$PG{CPP}{options}=$PG{GPP}{options}=$PG{CXX}{options}=$CXXFLAGS;} if ($CFLAGS){$PG{C}{options}=$CFLAGS;} foreach my $c (keys(%PG)) { my $arguments; if ($PG{$c}{compiler}) { $arguments="$PG{$c}{compiler_flag}=$PG{$c}{compiler} "; if ($PG{$c}{options}) { $arguments.="$PG{$c}{options_flag}=$PG{$c}{options} "; } $PG{$c}{arguments}=$arguments; } } if ($PG{$target}){$PG{$target}{install}=1;} else { foreach my $pg (keys(%PG)) { if ( $target eq "all" || ($PG{$pg}{mode}=~/$target/)) { $PG{$pg} {install}=1; } } } foreach my $pg (keys(%PG)) { if (!$PG{$pg}{update_action}){$PG{$pg}{update_action}=$default_update_action;} elsif ($PG{$pg}{update_action} eq "never"){$PG{$pg}{install}=0;} if ( $force && $PG{$pg}{install}) { `rm $BIN/$pg $BIN/$pg.exe $SILENT`; } if ($PG{$pg}{update_action} eq "update" && $PG{$pg}{install}){$PG{$pg}{update}=1;} } if (($target=~/clean/)) { print "------- cleaning executables -----\n"; `rm bin/* $SILENT`; exit ($EXIT_SUCCESS); } if ( !$PG{$target}){print "------- Installing T-Coffee Modes\n";} foreach my $m (keys(%MODE)) { if ( $target eq "all" || $target eq $m) { print "\n------- The installer will now install the $m components $MODE{$m}{description}\n"; foreach my $pg (keys(%PG)) { if ( $PG{$pg}{mode} =~/$m/ && $PG{$pg}{install}) { if ($PG{$pg}{touched}){print "------- $PG{$pg}{dname}: already processed\n";} else {$PG{$pg}{success}=&install_pg($pg);$PG{$pg}{touched}=1;} } } } } if ( $PG{$target}){print "------- Installing Individual Package\n";} foreach my $pg (keys (%PG)) { if ( $PG{$pg}{install} && !$PG{$pg}{touched}) { print "\n------- Install $pg\n"; $PG{$pg}{success}=&install_pg($pg);$PG{$pg}{touched}=1; } } print "------- Finishing The installation\n"; my $final_report=&install ($INSTALL_DIR); print "\n"; print "*********************************************************************\n"; print "******** INSTALLATION SUMMARY *****************\n"; print "*********************************************************************\n"; print "------- SUMMARY package Installation:\n"; print "------- Executable Installed in: $BIN\n"; foreach my $pg (keys(%PG)) { if ( $PG{$pg}{install}) { my $bin_status=($PG{$pg}{from_binary} && $PG{$pg}{success})?"[from binary]":""; if ( $PG{$pg}{new} && !$PG{$pg}{old}) {print "*------ $PG{$pg}{dname}: installed $bin_status\n"; $PG{$pg}{status}=1;} elsif ( $PG{$pg}{new} && $PG{$pg}{old}) {print "*------ $PG{$pg}{dname}: updated $bin_status\n" ; $PG{$pg}{status}=1;} elsif (!$PG{$pg}{new} && $PG{$pg}{old} && !$PG{$pg}{update}){print "*------ $PG{$pg}{dname}: previous\n" ; $PG{$pg}{status}=1;} elsif (!$PG{$pg}{new} && $PG{$pg}{old} && $PG{$pg}{update}){print "*------ $PG{$pg}{dname}: failed update (previous installation available)\n";$PG{$pg}{status}=0;} else {print "*------ $PG{$pg}{dname}: failed installation";$PG{$pg}{status}=0;} } } if ( !$PG{$target}){print "*------ SUMMARY mode Installation:\n";} foreach my $m (keys(%MODE)) { if ( $target eq "all" || $target eq $m) { my $succesful=1; foreach my $pg (keys(%PG)) { if (($PG{$pg}{mode}=~/$m/) && $PG{$pg}{install} && $PG{$pg}{status}==0) { $succesful=0; print "*!!!!!! $PG{$pg}{dname}: Missing\n"; } } if ( $succesful) { $MODE{$m}{status}=1; print "*------ MODE $MODE{$m}{dname} SUCCESFULY installed\n"; } else { $MODE{$m}{status}=0; print "*!!!!!! MODE $MODE{$m}{dname} UNSUCCESFULY installed\n"; } } } if ($clean==1 && ($BASE=~/install4tcoffee/) ){print "*------ Clean Installation Directory: $BASE\n";`rm -rf $BASE`;} foreach my $pg (keys(%PG)){if ($PG{$pg}{install} && $PG{$pg}{status}==0){exit ($EXIT_FAILURE);}} exit ($EXIT_SUCCESS); sub get_CXX_compiler { my $c=@_[0]; my (@clist)=("g++"); return get_compil ($c, @clist); } sub get_C_compiler { my $c=@_[0]; my (@clist)=("gcc", "cc", "icc"); return get_compil ($c, @clist); } sub get_F_compiler { my ($c)=@_[0]; my @clist=("f77", "g77", "gfortran", "ifort"); return get_compil ($c, @clist); } sub get_compil { my ($fav,@clist)=(@_); #return the first compiler found installed in the system. Check first the favorite foreach my $c ($fav,@clist) { if (&pg_is_installed ($c)){return $c;} } return ""; } sub exit_if_pg_not_installed { my (@arg)=(@_); foreach my $p (@arg) { if ( !&pg_is_installed ($p)) { print "!!!!!!!! The $p utility must be installed for this installation to proceed [FATAL]\n"; die; } } return 1; } sub set_proxy { my ($proxy)=(@_); my (@list,$p); @list= ("HTTP_proxy", "http_proxy", "HTTP_PROXY", "ALL_proxy", "all_proxy","HTTP_proxy_4_TCOFFEE","http_proxy_4_TCOFFEE"); if (!$proxy) { foreach my $p (@list) { if ( ($ENV_SET{$p}) || $ENV{$p}){$proxy=$ENV{$p};} } } foreach my $p(@list){$ENV{$p}=$proxy;} } sub check_internet_connection { my $internet; if ( -e "x"){unlink ("x");} if (&pg_is_installed ("wget")){`wget www.google.com -Ox >/dev/null 2>/dev/null`;} elsif (&pg_is_installed ("curl")){`curl www.google.com -ox >/dev/null 2>/dev/null`;} else { printf stderr "\nERROR: No pg for remote file fetching [wget or curl][FATAL]\n"; exit ($EXIT_FAILURE); } if ( !-e "x" || -s "x" < 10){$internet=0;} else {$internet=1;} if (-e "x"){unlink "x";} return $internet; } sub url2file { my ($cmd, $file,$wget_arg, $curl_arg)=(@_); my ($exit,$flag, $pg, $arg); if ($INTERNET || check_internet_connection ()){$INTERNET=1;} else { print STDERR "ERROR: No Internet Connection [FATAL:install.pl]\n"; exit ($EXIT_FAILURE); } if (&pg_is_installed ("wget")){$pg="wget"; $flag="-O";$arg=$wget_arg;} elsif (&pg_is_installed ("curl")){$pg="curl"; $flag="-o";$arg=$curl_arg;} else { printf stderr "\nERROR: No pg for remote file fetching [wget or curl][FATAL]\n"; exit ($EXIT_FAILURE); } if (-e $file){unlink($file);} $exit=system "$pg $cmd $flag$file $arg"; return $exit; } sub pg_is_installed { my ($p, $dir)=(@_); my ($r,$m); my ($supported, $language, $compil); if ( $PG{$p}) { $language=$PG{$p}{language2}; $compil=$PG{$language}{compiler}; } if ( $compil eq "CPAN") { if ( system ("perl -M$p -e 1")==$EXIT_SUCCESS){return 1;} else {return 0;} } elsif ($dir) { if (-e "$dir/$p" || -e "$dir/$p\.exe"){return 1;} else {return 0;} } elsif (-e "$PLUGINS_DIR/$p" || -e "$PLUGINS_DIR/$p.exe"){return 1;} else { $r=`which $p 2>/dev/null`; if ($r eq ""){return 0;} else {return 1;} } return 0; } sub install { my ($new_bin)=(@_); my ($copied, $report); if (!$ROOT_INSTALL) { if (-e "$BIN/t_coffee"){`$CP $BIN/t_coffee $INSTALL_DIR`}; `cp $BIN/* $PLUGINS_DIR`; $copied=1; } else { $copied=&root_run ("You must be root to finalize the installation", "$CP $BIN/* $INSTALL_DIR $SILENT"); } if ( !$copied) { $report="*!!!!!! Installation unsuccesful. The executables have been left in $BASE/bin\n"; } elsif ( $copied && $ROOT) { $report="*------ Installation succesful. Your executables have been copied in $new_bin and are on your PATH\n"; } elsif ( $copied && !$ROOT) { $report= "*!!!!!! T-Coffee and associated packages have been copied in: $new_bin\n"; $report.="*!!!!!! This address is NOT in your PATH sytem variable\n"; $report.="*!!!!!! You can do so by adding the following line in your ~/.bashrc file:\n"; $report.="*!!!!!! export PATH=$new_bin:\$PATH\n"; } return $report; } sub sign_license_ni { my $F=new FileHandle; open ($F, "license.txt"); while (<$F>) { print "$_"; } close ($F); return; } sub install_pg { my ($pg)=(@_); my ($report, $previous, $language, $compiler, $return); if (!$PG{$pg}{install}){return 1;} $previous=&pg_is_installed ($pg); if ($PG{$pg}{update_action} eq "no_update" && $previous) { $PG{$pg}{old}=1; $PG{$pg}{new}=0; $return=1; } else { $PG{$pg}{old}=$previous; if ($PG{$pg} {language2} eq "Perl"){&install_perl_package ($pg);} elsif ($BINARIES_ONLY && &install_binary_package ($pg)){$PG{$pg}{from_binary}=1;} elsif (&install_source_package ($pg)){;} else { if (!&supported_os($OS)) { print "!!!!!!!! $pg compilation failed, binary unsupported for $OS\n"; } elsif (!($PG{$pg}{from_binary}=&install_binary_package ($pg))) { print "!!!!!!!! $pg compilation and binary installation failed\n"; } } $PG{$pg}{new}=$return=&pg_is_installed ($pg,$BIN); } return $return; } sub install_perl_package { my ($pg)=(@_); my ($report, $language, $compiler); $language=$PG{$pg} {language2}; $compiler=$PG{$language}{compiler}; if (!&pg_is_installed ($pg)) { if ( $OS eq "windows"){`perl -M$compiler -e 'install $pg'`;} elsif ( $ROOT eq "sudo"){system ("sudo perl -M$compiler -e 'install $pg'");} else {system ("su root -c perl -M$compiler -e 'install $pg'");} } return &pg_is_installed ($pg); } sub install_source_package { my ($pg)=(@_); my ($report, $download, $arguments, $language, $address, $name, $ext, $main_dir, $distrib); my $wget_tmp="$TMP/wget.tmp"; my (@fl); if ( -e "$BIN/$pg" || -e "$BIN/$pg.exe"){return 1;} if ($pg eq "t_coffee") {return &install_t_coffee ($pg);} elsif ($pg eq "TMalign"){return &install_TMalign ($pg);} chdir $DISTRIBUTIONS; $download=$PG{$pg}{source}; if (($download =~/tgz/)) { ($address,$name,$ext)=($download=~/(.+\/)([^\/]+)(\.tgz).*/); } elsif (($download=~/tar\.gz/)) { ($address,$name,$ext)=($download=~/(.+\/)([^\/]+)(\.tar\.gz).*/); } elsif (($download=~/tar/)) { ($address,$name,$ext)=($download=~/(.+\/)([^\/]+)(\.tar).*/); } else { ($address,$name)=($download=~/(.+\/)([^\/]+)/); $ext=""; } $distrib="$name$ext"; if ( !-d $pg){mkdir $pg;} chdir $pg; #get the distribution if available if ( -e "$DOWNLOAD_DIR/$distrib") { `$CP $DOWNLOAD_DIR/$distrib .`; } #UNTAR and Prepare everything if (!-e "$name.tar" && !-e "$name") { &check_rm ($wget_tmp); print "\n------- Downloading/Installing $pg\n"; if (!-e $distrib && &url2file ("$download", "$wget_tmp")==$EXIT_SUCCESS) { `mv $wget_tmp $distrib`; `$CP $distrib $DOWNLOAD_DIR/`; } if (!-e $distrib) { print "!!!!!!! Download of $pg distribution failed\n"; print "!!!!!!! Check Address: $PG{$pg}{source}\n"; return 0; } print "\n------- unzipping/untaring $name\n"; if (($ext =~/z/)) { &flush_command ("gunzip $name$ext"); } if (($ext =~/tar/) || ($ext =~/tgz/)) { &flush_command("tar -xvf $name.tar"); } } #Guess and enter the distribution directory @fl=ls($p); foreach my $f (@fl) { if (-d $f) { $main_dir=$f; } } if (-d $main_dir) { chdir $main_dir;} else { print "Error: $main_dir does not exist"; } print "\n------- Compiling/Installing $pg\n"; `make clean $SILENT`; #sap if ($pg eq "sap") { if (-e "./configure") { #new sap distribution &flush_command ("./configure"); &flush_command ("make clean"); &flush_command ("make"); &check_cp ("./src/$pg", "$BIN"); } else { #old style distribution `rm *.o sap sap.exe ./util/aa/*.o ./util/wt/.o $SILENT`; &flush_command ("make $arguments sap"); &check_cp ($pg, "$BIN"); } } elsif ($pg eq "clustalw2") { &flush_command("./configure"); &flush_command("make $arguments"); &check_cp ("./src/$pg", "$BIN"); } elsif ($pg eq "fsa") { &flush_command("./configure --prefix=$BIN"); &flush_command("make $arguments"); &flush_command ("make install"); `mv $BIN/bin/* $BIN`; `rmdir $BIN/bin`; } elsif ($pg eq "clustalw") { &flush_command("make $arguments clustalw"); `$CP $pg $BIN $SILENT`; } elsif ($pg eq "mafft") { my $base=cwd(); my $c; #compile core mkpath ("./mafft/bin"); mkpath ("./mafft/lib"); chdir "$base/core"; `make clean $SILENT`; &flush_command ("make $arguments"); &flush_command ("make install LIBDIR=../mafft/lib BINDIR=../mafft/bin"); #compile extension chdir "$base/extensions"; `make clean $SILENT`; &flush_command ("make $arguments"); &flush_command ("make install LIBDIR=../mafft/lib BINDIR=../mafft/bin"); #put everything in mafft and copy the coompiled stuff in bin chdir "$base"; if ($ROOT_INSTALL) { &root_run ("You Must be Roor to Install MAFFT\n", "mkdir /usr/local/mafft/;$CP mafft/lib/* /usr/local/mafft;$CP mafft/lib/mafft* /usr/local/bin ;$CP mafft/bin/mafft /usr/local/bin/; "); } else { `$CP mafft/lib/* $BIN`; `$CP mafft/bin/mafft $BIN`; } `tar -cvf mafft.tar mafft`; `gzip mafft.tar`; `mv mafft.tar.gz $BIN`; } elsif ( $pg eq "dialign-tx") { my $f; my $base=cwd(); chdir "./source"; &flush_command (" make CPPFLAGS='-O3 -funroll-loops' all"); chdir ".."; &check_cp ("./source/$pg", "$BIN"); &check_cp ("./source/$pg", "$BIN/dialign-t"); } elsif ($pg eq "poa") { &flush_command ("make $arguments poa"); &check_cp ("$pg", "$BIN"); } elsif ( $pg eq "probcons") { `rm *.exe $SILENT`; &flush_command ("make $arguments probcons"); &check_cp("$pg", "$BIN/$pg"); } elsif ( $pg eq "probcons" || $pg eq "probconsRNA") { `rm *.exe $SILENT`; &flush_command ("make $arguments probcons"); &check_cp("probcons", "$BIN/$pg"); } elsif ( $pg eq "muscle") { `rm *.o muscle muscle.exe $SILENT`; &flush_command ("make $arguments all"); &check_cp("$pg", "$BIN"); } elsif ( $pg eq "mus4") { `rm *.o muscle muscle.exe $SILENT`; &flush_command ("mk"); &check_cp("$pg", "$BIN"); } elsif ( $pg eq "pcma") { &flush_command ("make $arguments pcma"); &check_cp("$pg", "$BIN"); } elsif ($pg eq "kalign") { &flush_command ("./configure"); &flush_command("make $arguments"); &check_cp ("$pg",$BIN); } elsif ( $pg eq "amap") { chdir "align"; `make clean $SILENT`; &flush_command ("make $arguments all"); &check_cp ("$pg", $BIN); } elsif ( $pg eq "proda") { &flush_command ("make $arguments all"); &check_cp ("$pg", $BIN); } elsif ( $pg eq "prank") { &flush_command ("make $arguments all"); &check_cp ("$pg", $BIN); } elsif ( $pg eq "mustang") { &flush_command ("make $arguments all"); if ( $OS=~/windows/){&check_cp("./bin/MUSTANG_v.3", "$BIN/mustang.exe");} else {&check_cp("./bin/MUSTANG_v.3", "$BIN/mustang");} } elsif ( $pg eq "RNAplfold") { &flush_command("./configure"); &flush_command ("make $arguments all"); &check_cp("./Progs/RNAplfold", "$BIN"); } chdir $CDIR; return &pg_is_installed ($pg, $BIN); } sub install_t_coffee { my ($pg)=(@_); my ($report,$cflags, $arguments, $language, $compiler) ; #1-Install T-Coffee chdir "t_coffee_source"; &flush_command ("make clean"); print "\n------- Compiling T-Coffee\n"; $language=$PG{$pg} {language2}; $arguments=$PG{$language}{arguments}; if (!($arguments =~/CFLAGS/)){$arguments .= " CFLAGS=-O2 ";} if ( $CC ne ""){&flush_command ("make -i $arguments t_coffee");} &check_cp ($pg, $BIN); chdir $CDIR; return &pg_is_installed ($pg, $BIN); } sub install_TMalign { my ($pg)=(@_); my $report; chdir "t_coffee_source"; print "\n------- Compiling TMalign\n"; `rm TMalign TMalign.exe $SILENT`; if ( $FC ne ""){&flush_command ("make -i $PG{Fortran}{arguments} TMalign");} &check_cp ($pg, $BIN); if ( !-e "$BIN/$pg" && pg_has_binary_distrib ($pg)) { print "!!!!!!! Compilation of $pg impossible. Will try to install from binary\n"; return &install_binary_package ($pg); } chdir $CDIR; return &pg_is_installed ($pg, $BIN); } sub pg_has_binary_distrib { my ($pg)=(@_); if ($PG{$pg}{windows}){return 1;} elsif ($PG{$pg}{osx}){return 1;} elsif ($PG{$pg}{linux}){return 1;} return 0; } sub install_binary_package { my ($pg)=(@_); my ($base,$report,$name, $download, $arguments, $language, $dir); my $isdir; &input_os(); if (!&supported_os($OS)){return 0;} if ( $PG{$pg}{binary}){$name=$PG{$pg}{binary};} else { $name=$pg; if ( $OS eq "windows"){$name.=".exe";} } $download="$WEB_BASE/Packages/Binaries/$OS/$name"; $base=cwd(); chdir $TMP; if (!-e $name) { `rm x $SILENT`; if ( url2file("$download","x")==$EXIT_SUCCESS) { `mv x $name`; } } if (!-e $name) { print "!!!!!!! $PG{$pg}{dname}: Download of $pg binary failed\n"; print "!!!!!!! $PG{$pg}{dname}: Check Address: $download\n"; return 0; } print "\n------- Installing $pg\n"; if ($name =~/tar\.gz/) { `gunzip $name`; `tar -xvf $pg.tar`; chdir $pg; if ( $pg eq "mafft") { if ($ROOT_INSTALL) { &root_run ("You Must be Roor to Install MAFFT\n", "$CP mafft/bin/* /usr/local/mafft;mkdir /usr/local/mafft/; $CP mafft/lib/* /usr/local/bin/"); } else { `$CP $TMP/$pg/bin/* $BIN $SILENT`; `$CP $TMP/$pg/lib/* $BIN $SILENT`; } } else { if (-e "$TMP/$pg/data"){`$CP $TMP/$pg/data/* $TCM $SILENT`;} if (!($pg=~/\*/)){`rm -rf $pg`;} } } else { &check_cp ("$pg", "$BIN"); `chmod u+x $BIN/$pg`; unlink ($pg); } chdir $base; $PG{$pg}{from_binary}=1; return &pg_is_installed ($pg, $BIN); } sub add_dir { my $dir=@_[0]; if (!-e $dir && !-d $dir) { return mkpath ($dir); } else { return 0; } } sub check_rm { my ($file)=(@_); if ( -e $file) { return unlink($file); } return 0; } sub check_cp { my ($from, $to)=(@_); if ( !-e $from && -e "$from\.exe"){$from="$from\.exe";} if ( !-e $from){return 0;} `$CP $from $to`; return 1; } sub check_file_list_exists { my ($base, @flist)=(@_); my $f; foreach $f (@flist) { if ( !-e "$base/$f"){return 0;} } return 1; } sub ls { my $f=@_[0]; my @fl; chomp(@fl=`ls -1 $f`); return @fl; } sub flush_command { my $command=@_[0]; my $F=new FileHandle; open ($F, "$command|"); while (<$F>){print " --- $_";} close ($F); } sub input_installation_directory { my $dir=@_[0]; my $new; print "------- The current installation directory is: [$dir]\n"; print "??????? Return to keep the default or new value:"; if ($NO_QUESTION==0) { chomp ($new=); while ( $new ne "" && !input_yes ("You have entered $new. Is this correct? ([y]/n):")) { print "???????New installation directory:"; chomp ($new=); } $dir=($new eq "")?$dir:$new; $dir=~s/\/$//; } if ( -d $dir){return $dir;} elsif (&root_run ("You must be root to create $dir","mkdir $dir")==$EXIT_SUCCESS){return $dir;} else { print "!!!!!!! $dir could not be created\n"; if ( $NO_QUESTION) { return ""; } elsif ( &input_yes ("??????? Do you want to provide a new directory([y]/n)?:")) { return input_installation_directory ($dir); } else { return ""; } } } sub input_yes { my $question =@_[0]; my $answer; if ($NO_QUESTION==1){return 1;} if ($question eq ""){$question="??????? Do you wish to proceed ([y]/n)?:";} print $question; chomp($answer=lc()); if (($answer=~/^y/) || $answer eq ""){return 1;} elsif ( ($answer=~/^n/)){return 0;} else { return input_yes($question); } } sub root_run { my ($txt, $cmd)=(@_); if ( system ($cmd)==$EXIT_SUCCESS){return $EXIT_SUCCESS;} else { print "------- $txt\n"; if ( $ROOT eq "sudo"){return system ("sudo $cmd");} else {return system ("su root -c \"$cmd\"");} } } sub get_root { if (&pg_is_installed ("sudo")){return "sudo";} else {return "su";} } sub get_os { my $raw_os=`uname`; my $os; $raw_os=lc ($raw_os); if ($raw_os =~/cygwin/){$os="windows";} elsif ($raw_os =~/linux/){$os="linux";} elsif ($raw_os =~/osx/){$os="macosx";} elsif ($raw_os =~/darwin/){$os="macosx";} else { $os=$raw_os; } return $os; } sub input_os { my $answer; if ($OS) {return $OS;} print "??????? which os do you use: [w]indows, [l]inux, [m]acosx:?"; $answer=lc(); if (($answer=~/^m/)){$OS="macosx";} elsif ( ($answer=~/^w/)){$OS="windows";} elsif ( ($answer=~/^linux/)){$OS="linux";} else { return &input_os(); } return $OS; } sub supported_os { my ($os)=(@_[0]); return $SUPPORTED_OS{$os}; } sub update_tclinkdb { my $file =@_[0]; my $name; my $F=new FileHandle; my ($download, $address, $name, $l, $db); if ( $file eq "update"){$file=$TCLINKDB_ADDRESS;} if ( $file =~/http:\/\// || $file =~/ftp:\/\//) { ($address, $name)=($download=~/(.*)\/([^\/]+)$/); `rm x $SILENT`; if (&url2file ($file,"x")==$EXIT_SUCCESS) { print "------- Susscessful upload of $name"; `mv x $name`; $file=$name; } } open ($F, "$file"); while (<$F>) { my $l=$_; if (($l =~/^\/\//) || ($db=~/^#/)){;} elsif ( !($l =~/\w/)){;} else { my @v=split (/\s+/, $l); if ( $l=~/^MODE/) { $MODE{$v[1]}{$v[2]}=$v[3]; } elsif ($l=~/^PG/) { $PG{$v[1]}{$v[2]}=$v[3]; } } } close ($F); &post_process_PG(); return; } sub initialize_PG { $PG{"t_coffee"}{"4_TCOFFEE"}="TCOFFEE"; $PG{"t_coffee"}{"type"}="sequence_multiple_aligner"; $PG{"t_coffee"}{"ADDRESS"}="http://www.tcoffee.org"; $PG{"t_coffee"}{"language"}="C"; $PG{"t_coffee"}{"language2"}="C"; $PG{"t_coffee"}{"source"}="http://www.tcoffee.org/Packages/T-COFFEE_distribution.tar.gz"; $PG{"t_coffee"}{"update_action"}="always"; $PG{"t_coffee"}{"mode"}="tcoffee,mcoffee,rcoffee,expresso,3dcoffee"; $PG{"clustalw2"}{"4_TCOFFEE"}="CLUSTALW2"; $PG{"clustalw2"}{"type"}="sequence_multiple_aligner"; $PG{"clustalw2"}{"ADDRESS"}="http://www.clustal.org"; $PG{"clustalw2"}{"language"}="C++"; $PG{"clustalw2"}{"language2"}="CXX"; $PG{"clustalw2"}{"source"}="http://www.clustal.org/download/2.0.10/clustalw-2.0.10-src.tar.gz"; $PG{"clustalw2"}{"mode"}="mcoffee,rcoffee"; $PG{"clustalw"}{"4_TCOFFEE"}="CLUSTALW"; $PG{"clustalw"}{"type"}="sequence_multiple_aligner"; $PG{"clustalw"}{"ADDRESS"}="http://www.clustal.org"; $PG{"clustalw"}{"language"}="C"; $PG{"clustalw"}{"language2"}="C"; $PG{"clustalw"}{"source"}="http://www.clustal.org/download/1.X/ftp-igbmc.u-strasbg.fr/pub/ClustalW/clustalw1.82.UNIX.tar.gz"; $PG{"clustalw"}{"mode"}="mcoffee,rcoffee"; $PG{"dialign-t"}{"4_TCOFFEE"}="DIALIGNT"; $PG{"dialign-t"}{"type"}="sequence_multiple_aligner"; $PG{"dialign-t"}{"ADDRESS"}="http://dialign-tx.gobics.de/"; $PG{"dialign-t"}{"DIR"}="/usr/share/dialign-tx/"; $PG{"dialign-t"}{"language"}="C"; $PG{"dialign-t"}{"language2"}="C"; $PG{"dialign-t"}{"source"}="http://dialign-tx.gobics.de/DIALIGN-TX_1.0.1.tar.gz"; $PG{"dialign-t"}{"mode"}="mcoffee"; $PG{"dialign-t"}{"binary"}="dialign-t"; $PG{"dialign-tx"}{"4_TCOFFEE"}="DIALIGNTX"; $PG{"dialign-tx"}{"type"}="sequence_multiple_aligner"; $PG{"dialign-tx"}{"ADDRESS"}="http://dialign-tx.gobics.de/"; $PG{"dialign-tx"}{"DIR"}="/usr/share/dialign-tx/"; $PG{"dialign-tx"}{"language"}="C"; $PG{"dialign-tx"}{"language2"}="C"; $PG{"dialign-tx"}{"source"}="http://dialign-tx.gobics.de/DIALIGN-TX_1.0.1.tar.gz"; $PG{"dialign-tx"}{"mode"}="mcoffee"; $PG{"dialign-tx"}{"binary"}="dialign-tx"; $PG{"poa"}{"4_TCOFFEE"}="POA"; $PG{"poa"}{"type"}="sequence_multiple_aligner"; $PG{"poa"}{"ADDRESS"}="http://www.bioinformatics.ucla.edu/poa/"; $PG{"poa"}{"language"}="C"; $PG{"poa"}{"language2"}="C"; $PG{"poa"}{"source"}="http://downloads.sourceforge.net/poamsa/poaV2.tar.gz"; $PG{"poa"}{"DIR"}="/usr/share/"; $PG{"poa"}{"FILE1"}="blosum80.mat"; $PG{"poa"}{"mode"}="mcoffee"; $PG{"poa"}{"binary"}="poa"; $PG{"probcons"}{"4_TCOFFEE"}="PROBCONS"; $PG{"probcons"}{"type"}="sequence_multiple_aligner"; $PG{"probcons"}{"ADDRESS"}="http://probcons.stanford.edu/"; $PG{"probcons"}{"language2"}="CXX"; $PG{"probcons"}{"language"}="C++"; $PG{"probcons"}{"source"}="http://probcons.stanford.edu/probcons_v1_12.tar.gz"; $PG{"probcons"}{"mode"}="mcoffee"; $PG{"probcons"}{"binary"}="probcons"; $PG{"mafft"}{"4_TCOFFEE"}="MAFFT"; $PG{"mafft"}{"type"}="sequence_multiple_aligner"; $PG{"mafft"}{"ADDRESS"}="http://align.bmr.kyushu-u.ac.jp/mafft/online/server/"; $PG{"mafft"}{"language"}="C"; $PG{"mafft"}{"language"}="C"; $PG{"mafft"}{"source"}="http://align.bmr.kyushu-u.ac.jp/mafft/software/mafft-6.603-with-extensions-src.tgz"; $PG{"mafft"}{"windows"}="http://align.bmr.kyushu-u.ac.jp/mafft/software/mafft-6.603-mingw.tar"; $PG{"mafft"}{"mode"}="mcoffee,rcoffee"; $PG{"mafft"}{"binary"}="mafft.tar.gz"; $PG{"muscle"}{"4_TCOFFEE"}="MUSCLE"; $PG{"muscle"}{"type"}="sequence_multiple_aligner"; $PG{"muscle"}{"ADDRESS"}="http://www.drive5.com/muscle/"; $PG{"muscle"}{"language"}="C++"; $PG{"muscle"}{"language2"}="GPP"; $PG{"muscle"}{"source"}="http://www.drive5.com/muscle/downloads3.6/muscle3.6_src.tar.gz"; $PG{"muscle"}{"windows"}="http://www.drive5.com/muscle/downloads3.6/muscle3.6_win32.zip"; $PG{"muscle"}{"linux"}="http://www.drive5.com/muscle/downloads3.6/muscle3.6_linux_ia32.tar.gz"; $PG{"muscle"}{"mode"}="mcoffee,rcoffee"; $PG{"mus4"}{"4_TCOFFEE"}="MUS4"; $PG{"mus4"}{"type"}="sequence_multiple_aligner"; $PG{"mus4"}{"ADDRESS"}="http://www.drive5.com/muscle/"; $PG{"mus4"}{"language"}="C++"; $PG{"mus4"}{"language2"}="GPP"; $PG{"mus4"}{"source"}="http://www.drive5.com/muscle/muscle4.0_src.tar.gz"; $PG{"mus4"}{"mode"}="mcoffee,rcoffee"; $PG{"pcma"}{"4_TCOFFEE"}="PCMA"; $PG{"pcma"}{"type"}="sequence_multiple_aligner"; $PG{"pcma"}{"ADDRESS"}="ftp://iole.swmed.edu/pub/PCMA/"; $PG{"pcma"}{"language"}="C"; $PG{"pcma"}{"language2"}="C"; $PG{"pcma"}{"source"}="ftp://iole.swmed.edu/pub/PCMA/pcma.tar.gz"; $PG{"pcma"}{"mode"}="mcoffee"; $PG{"kalign"}{"4_TCOFFEE"}="KALIGN"; $PG{"kalign"}{"type"}="sequence_multiple_aligner"; $PG{"kalign"}{"ADDRESS"}="http://msa.cgb.ki.se"; $PG{"kalign"}{"language"}="C"; $PG{"kalign"}{"language2"}="C"; $PG{"kalign"}{"source"}="http://msa.cgb.ki.se/downloads/kalign/current.tar.gz"; $PG{"kalign"}{"mode"}="mcoffee"; $PG{"amap"}{"4_TCOFFEE"}="AMAP"; $PG{"amap"}{"type"}="sequence_multiple_aligner"; $PG{"amap"}{"ADDRESS"}="http://bio.math.berkeley.edu/amap/"; $PG{"amap"}{"language"}="C++"; $PG{"amap"}{"language2"}="CXX"; $PG{"amap"}{"source"}="http://baboon.math.berkeley.edu/amap/download/amap.2.2.tar.gz"; $PG{"amap"}{"mode"}="mcoffee"; $PG{"proda"}{"4_TCOFFEE"}="PRODA"; $PG{"proda"}{"type"}="sequence_multiple_aligner"; $PG{"proda"}{"ADDRESS"}="http://proda.stanford.edu"; $PG{"proda"}{"language"}="C++"; $PG{"proda"}{"language2"}="CXX"; $PG{"proda"}{"source"}="http://proda.stanford.edu/proda_1_0.tar.gz"; $PG{"proda"}{"mode"}="mcoffee"; $PG{"fsa"}{"4_TCOFFEE"}="FSA"; $PG{"fsa"}{"type"}="sequence_multiple_aligner"; $PG{"fsa"}{"ADDRESS"}="http://fsa.sourceforge.net/"; $PG{"fsa"}{"language"}="C++"; $PG{"fsa"}{"language2"}="CXX"; $PG{"fsa"}{"source"}="http://sourceforge.net/projects/fsa/files/fsa-1.15.3.tar.gz/download/"; $PG{"fsa"}{"mode"}="mcoffee"; $PG{"prank"}{"4_TCOFFEE"}="PRANK"; $PG{"prank"}{"type"}="sequence_multiple_aligner"; $PG{"prank"}{"ADDRESS"}="http://www.ebi.ac.uk/goldman-srv/prank/"; $PG{"prank"}{"language"}="C++"; $PG{"prank"}{"language2"}="CXX"; $PG{"prank"}{"source"}="http://www.ebi.ac.uk/goldman-srv/prank/src/prank/prank.src.091016.tgz"; $PG{"prank"}{"mode"}="mcoffee"; $PG{"sap"}{"4_TCOFFEE"}="SAP"; $PG{"sap"}{"type"}="structure_pairwise_aligner"; $PG{"sap"}{"ADDRESS"}="http://mathbio.nimr.mrc.ac.uk/wiki/Software"; $PG{"sap"}{"language"}="C"; $PG{"sap"}{"language2"}="C"; $PG{"sap"}{"source"}="http://mathbio.nimr.mrc.ac.uk/download/sap-1.1.1.tar.gz"; $PG{"sap"}{"mode"}="expresso,3dcoffee"; $PG{"TMalign"}{"4_TCOFFEE"}="TMALIGN"; $PG{"TMalign"}{"type"}="structure_pairwise_aligner"; $PG{"TMalign"}{"ADDRESS"}="http://zhang.bioinformatics.ku.edu/TM-align/TMalign.f"; $PG{"TMalign"}{"language"}="Fortran"; $PG{"TMalign"}{"language2"}="Fortran"; $PG{"TMalign"}{"source"}="http://zhang.bioinformatics.ku.edu/TM-align/TMalign.f"; $PG{"TMalign"}{"linux"}="http://zhang.bioinformatics.ku.edu/TM-align/TMalign_32.gz"; $PG{"TMalign"}{"mode"}="expresso,3dcoffee"; $PG{"mustang"}{"4_TCOFFEE"}="MUSTANG"; $PG{"mustang"}{"type"}="structure_pairwise_aligner"; $PG{"mustang"}{"ADDRESS"}="http://www.cs.mu.oz.au/~arun/mustang"; $PG{"mustang"}{"language"}="C++"; $PG{"mustang"}{"language2"}="CXX"; $PG{"mustang"}{"source"}="http://www.cs.mu.oz.au/~arun/mustang/mustang_v.3.tgz"; $PG{"mustang"}{"mode"}="expresso,3dcoffee"; $PG{"lsqman"}{"4_TCOFFEE"}="LSQMAN"; $PG{"lsqman"}{"type"}="structure_pairwise_aligner"; $PG{"lsqman"}{"ADDRESS"}="empty"; $PG{"lsqman"}{"language"}="empty"; $PG{"lsqman"}{"language2"}="empty"; $PG{"lsqman"}{"source"}="empty"; $PG{"lsqman"}{"update_action"}="never"; $PG{"lsqman"}{"mode"}="expresso,3dcoffee"; $PG{"align_pdb"}{"4_TCOFFEE"}="ALIGN_PDB"; $PG{"align_pdb"}{"type"}="structure_pairwise_aligner"; $PG{"align_pdb"}{"ADDRESS"}="empty"; $PG{"align_pdb"}{"language"}="empty"; $PG{"align_pdb"}{"language2"}="empty"; $PG{"align_pdb"}{"source"}="empty"; $PG{"align_pdb"}{"update_action"}="never"; $PG{"align_pdb"}{"mode"}="expresso,3dcoffee"; $PG{"fugueali"}{"4_TCOFFEE"}="FUGUE"; $PG{"fugueali"}{"type"}="structure_pairwise_aligner"; $PG{"fugueali"}{"ADDRESS"}="http://www-cryst.bioc.cam.ac.uk/fugue/download.html"; $PG{"fugueali"}{"language"}="empty"; $PG{"fugueali"}{"language2"}="empty"; $PG{"fugueali"}{"source"}="empty"; $PG{"fugueali"}{"update_action"}="never"; $PG{"fugueali"}{"mode"}="expresso,3dcoffee"; $PG{"dalilite.pl"}{"4_TCOFFEE"}="DALILITEc"; $PG{"dalilite.pl"}{"type"}="structure_pairwise_aligner"; $PG{"dalilite.pl"}{"ADDRESS"}="built_in"; $PG{"dalilite.pl"}{"ADDRESS2"}="http://www.ebi.ac.uk/Tools/webservices/services/dalilite"; $PG{"dalilite.pl"}{"language"}="Perl"; $PG{"dalilite.pl"}{"language2"}="Perl"; $PG{"dalilite.pl"}{"source"}="empty"; $PG{"dalilite.pl"}{"update_action"}="never"; $PG{"dalilite.pl"}{"mode"}="expresso,3dcoffee"; $PG{"probconsRNA"}{"4_TCOFFEE"}="PROBCONSRNA"; $PG{"probconsRNA"}{"type"}="RNA_multiple_aligner"; $PG{"probconsRNA"}{"ADDRESS"}="http://probcons.stanford.edu/"; $PG{"probconsRNA"}{"language"}="C++"; $PG{"probconsRNA"}{"language2"}="CXX"; $PG{"probconsRNA"}{"source"}="http://probcons.stanford.edu/probconsRNA.tar.gz"; $PG{"probconsRNA"}{"mode"}="mcoffee,rcoffee"; $PG{"sfold"}{"4_TCOFFEE"}="CONSAN"; $PG{"sfold"}{"type"}="RNA_pairwise_aligner"; $PG{"sfold"}{"ADDRESS"}="http://selab.janelia.org/software/consan/"; $PG{"sfold"}{"language"}="empty"; $PG{"sfold"}{"language2"}="empty"; $PG{"sfold"}{"source"}="empty"; $PG{"sfold"}{"update_action"}="never"; $PG{"sfold"}{"mode"}="rcoffee"; $PG{"RNAplfold"}{"4_TCOFFEE"}="RNAPLFOLD"; $PG{"RNAplfold"}{"type"}="RNA_secondarystructure_predictor"; $PG{"RNAplfold"}{"ADDRESS"}="http://www.tbi.univie.ac.at/~ivo/RNA/"; $PG{"RNAplfold"}{"language"}="C"; $PG{"RNAplfold"}{"language2"}="C"; $PG{"RNAplfold"}{"source"}="http://www.tbi.univie.ac.at/~ivo/RNA/ViennaRNA-1.7.2.tar.gz"; $PG{"RNAplfold"}{"mode"}="rcoffee"; $PG{"hmmtop"}{"4_TCOFFEE"}="HMMTOP"; $PG{"hmmtop"}{"type"}="protein_secondarystructure_predictor"; $PG{"hmmtop"}{"ADDRESS"}="www.enzim.hu/hmmtop/"; $PG{"hmmtop"}{"language"}="C"; $PG{"hmmtop"}{"language2"}="C"; $PG{"hmmtop"}{"source"}="empty"; $PG{"hmmtop"}{"update_action"}="never"; $PG{"hmmtop"}{"mode"}="tcoffee"; $PG{"gorIV"}{"4_TCOFFEE"}="GOR4"; $PG{"gorIV"}{"type"}="protein_secondarystructure_predictor"; $PG{"gorIV"}{"ADDRESS"}="http://mig.jouy.inra.fr/logiciels/gorIV/"; $PG{"gorIV"}{"language"}="C"; $PG{"gorIV"}{"language2"}="C"; $PG{"gorIV"}{"source"}="http://mig.jouy.inra.fr/logiciels/gorIV/GOR_IV.tar.gz"; $PG{"gorIV"}{"update_action"}="never"; $PG{"gorIV"}{"mode"}="tcoffee"; $PG{"wublast.pl"}{"4_TCOFFEE"}="EBIWUBLASTc"; $PG{"wublast.pl"}{"type"}="protein_homology_predictor"; $PG{"wublast.pl"}{"ADDRESS"}="built_in"; $PG{"wublast.pl"}{"ADDRESS2"}="http://www.ebi.ac.uk/Tools/webservices/services/wublast"; $PG{"wublast.pl"}{"language"}="Perl"; $PG{"wublast.pl"}{"language2"}="Perl"; $PG{"wublast.pl"}{"source"}="empty"; $PG{"wublast.pl"}{"update_action"}="never"; $PG{"wublast.pl"}{"mode"}="psicoffee,expresso,3dcoffee"; $PG{"blastpgp.pl"}{"4_TCOFFEE"}="EBIBLASTPGPc"; $PG{"blastpgp.pl"}{"type"}="protein_homology_predictor"; $PG{"blastpgp.pl"}{"ADDRESS"}="built_in"; $PG{"blastpgp.pl"}{"ADDRESS2"}="http://www.ebi.ac.uk/Tools/webservices/services/blastpgp"; $PG{"blastpgp.pl"}{"language"}="Perl"; $PG{"blastpgp.pl"}{"language2"}="Perl"; $PG{"blastpgp.pl"}{"source"}="empty"; $PG{"blastpgp.pl"}{"update_action"}="never"; $PG{"blastpgp.pl"}{"mode"}="psicoffee,expresso,3dcoffee"; $PG{"blastcl3"}{"4_TCOFFEE"}="NCBIWEBBLAST"; $PG{"blastcl3"}{"type"}="protein_homology_predictor"; $PG{"blastcl3"}{"ADDRESS"}="ftp://ftp.ncbi.nih.gov/blast/executables/LATEST"; $PG{"blastcl3"}{"language"}="C"; $PG{"blastcl3"}{"language2"}="C"; $PG{"blastcl3"}{"source"}="empty"; $PG{"blastcl3"}{"update_action"}="never"; $PG{"blastcl3"}{"mode"}="psicoffee,expresso,3dcoffee"; $PG{"blastpgp"}{"4_TCOFFEE"}="NCBIBLAST"; $PG{"blastpgp"}{"type"}="protein_homology_predictor"; $PG{"blastpgp"}{"ADDRESS"}="ftp://ftp.ncbi.nih.gov/blast/executables/LATEST"; $PG{"blastpgp"}{"language"}="C"; $PG{"blastpgp"}{"language2"}="C"; $PG{"blastpgp"}{"source"}="empty"; $PG{"blastpgp"}{"update_action"}="never"; $PG{"blastpgp"}{"mode"}="psicoffee,expresso,3dcoffee"; $PG{"SOAP::Lite"}{"4_TCOFFEE"}="SOAPLITE"; $PG{"SOAP::Lite"}{"type"}="library"; $PG{"SOAP::Lite"}{"ADDRESS"}="http://cpansearch.perl.org/src/MKUTTER/SOAP-Lite-0.710.08/Makefile.PL"; $PG{"SOAP::Lite"}{"language"}="Perl"; $PG{"SOAP::Lite"}{"language2"}="Perl"; $PG{"SOAP::Lite"}{"source"}="empty"; $PG{"SOAP::Lite"}{"mode"}="psicoffee,expresso,3dcoffee"; $MODE{"tcoffee"}{"name"}="tcoffee"; $MODE{"rcoffee"}{"name"}="rcoffee"; $MODE{"3dcoffee"}{"name"}="3dcoffee"; $MODE{"mcoffee"}{"name"}="mcoffee"; $MODE{"expresso"}{"name"}="expresso"; $PG{C}{compiler}="gcc"; $PG{C}{compiler_flag}="CC"; $PG{C}{options}=""; $PG{C}{options_flag}="CFLAGS"; $PG{C}{type}="compiler"; $PG{"CXX"}{compiler}="g++"; $PG{"CXX"}{compiler_flag}="CXX"; $PG{"CXX"}{options}=""; $PG{"CXX"}{options_flag}="CXXFLAGS"; $PG{CXX}{type}="compiler"; $PG{"CPP"}{compiler}="g++"; $PG{"CPP"}{compiler_flag}="CPP"; $PG{"CPP"}{options}=""; $PG{"CPP"}{options_flag}="CPPFLAGS"; $PG{CPP}{type}="compiler"; $PG{"GPP"}{compiler}="g++"; $PG{"GPP"}{compiler_flag}="GPP"; $PG{"GPP"}{options}=""; $PG{"GPP"}{options_flag}="CFLAGS"; $PG{GPP}{type}="compiler"; $PG{Fortran}{compiler}="g77"; $PG{Fortran}{compiler_flag}="FCC"; $PG{Fortran}{type}="compiler"; $PG{Perl}{compiler}="CPAN"; $PG{Perl}{type}="compiler"; $SUPPORTED_OS{macox}="Macintosh"; $SUPPORTED_OS{linux}="Linux"; $SUPPORTED_OS{windows}="Cygwin"; $MODE{t_coffee}{description}=" for regular multiple sequence alignments"; $MODE{rcoffee} {description}=" for RNA multiple sequence alignments"; $MODE{psicoffee} {description}=" for Homology Extended multiple sequence alignments"; $MODE{expresso}{description}=" for very accurate structure based multiple sequence alignments"; $MODE{"3dcoffee"}{description}=" for multiple structure alignments"; $MODE{mcoffee} {description}=" for combining alternative multiple sequence alignment packages\n------- into a unique meta-package. The installer will upload several MSA packages and compile them\n "; &post_process_PG(); return; } sub post_process_PG { my $p; %PG=&name2dname (%PG); %MODE=&name2dname(%MODE); foreach $p (keys(%PG)){if ( $PG{$p}{type} eq "compiler"){$PG{$p}{update_action}="never";}} } sub name2dname { my (%L)=(@_); my ($l, $ml); foreach my $pg (keys(%L)) { $l=length ($pg); if ( $l>$ml){$ml=$l;} } $ml+=1; foreach my $pg (keys(%L)) { my $name; $l=$ml-length ($pg); $name=$pg; for ( $b=0; $b<$l; $b++) { $name .=" "; } $L{$pg}{dname}=$name; } return %L; } sub env_file2putenv { my $f=@_[0]; my $F=new FileHandle; my $n; open ($F, "$f"); while (<$F>) { my $line=$_; my($var, $value)=($_=~/(\S+)\=(\S*)/); $ENV{$var}=$value; $ENV_SET{$var}=1; $n++; } close ($F); return $n; } use Env; use Cwd; @suffix=("tmp", "temp", "cache", "t_coffee", "core", "tcoffee"); if ($#ARGV==-1) { print "clean_cache.pl -file -dir= -size=\n0: unlimited -1 always.\nWill only clean directories matching:["; foreach $k(@suffix){print "*$k* ";} print "]\n"; exit (EXIT_FAILURE); } $cl=join (" ",@ARGV); if (($cl=~/\-no_action/)) { exit (EXIT_SUCCESS); } if (($cl=~/\-debug/)) { $DEBUG=1; } else { $DEBUG=0; } if (($cl=~/\-dir=(\S+)/)) { $dir=$1; } else { $dir="./"; } if ($cl=~/\-file=(\S+)/) { $file=$1; } else { $file=0; } if ($cl=~/\-size=(\S+)/) { $max_size=$1; } else { $max_size=0;#unlimited } if ($cl=~/\-force/) { $force=1; } else { $force=0; } if ($cl=~/\-age=(\S+)/) { $max_age=$1; } else { $max_age=0;#unlimited } $max_size*=1000000; if ( ! -d $dir) { print STDERR "\nCannot process $dir: does not exist \n"; exit (EXIT_FAILURE); } if ( !($dir=~/^\//)) { $base=cwd(); $dir="$base/$dir"; } $proceed=0; foreach $s (@suffix) { if (($dir=~/$s/)){$proceed=1;} $s=uc ($s); if (($dir=~/$s/)){$proceed=1;} } if ( $proceed==0) { print STDERR "Clean_cache.pl can only clean directories whose absolute path name contains the following strings:"; foreach $w (@suffix) {print STDERR "$w ";$w=lc($w); print STDERR "$w ";} print STDERR "\nCannot process $dir\n"; exit (EXIT_FAILURE); } $name_file="$dir/name_file.txt"; $size_file="$dir/size_file.txt"; if ( $force){&create_ref_file ($dir,$name_file,$size_file);} if ($file){&add_file ($dir, $name_file, $size_file, $file);} &clean_dir ($dir, $name_file, $size_file, $max_size,$max_age); exit (EXIT_SUCCESS); sub clean_dir { my ($dir, $name_file, $size_file, $max_size, $max_age)=@_; my ($tot_size, $size, $f, $s); $tot_size=&get_tot_size ($dir, $name_file, $size_file); if ( $tot_size<=$max_size){return ;} else {$max_size/=2;} #recreate the name file in case some temprary files have not been properly registered &create_ref_file ($dir, $name_file, $size_file, $max_age); $new_name_file=&vtmpnam(); open (R, "$name_file"); open (W, ">$new_name_file"); while () { my $line=$_; ($f, $s)=($line=~/(\S+) (\S+)/); if ( !($f=~/\S/)){next;} elsif ($max_size && $tot_size>=$max_size && !($f=~/name_file/)) { remove ( "$dir/$f"); $tot_size-=$s; } elsif ( $max_age && -M("$dir/$f")>=$max_age) { remove ( "$dir/$f"); $tot_size-=$s; } else { print W "$f $s\n"; } } close (R); close (W); open (F, ">$size_file"); print F "$tot_size"; if ( -e $new_name_file){`mv $new_name_file $name_file`;} close (F); } sub get_tot_size { my ($dir, $name_file, $size_file)=@_; my $size; if ( !-d $dir){return 0;} if ( !-e $name_file) { &create_ref_file ($dir, $name_file, $size_file); } open (F, "$size_file"); $size=; close (F); chomp ($size); return $size; } sub size { my $f=@_[0]; if ( !-d $f){return -s($f);} else {return &dir2size($f);} } sub dir2size { my $d=@_[0]; my ($s, $f); if ( !-d $d) {return 0;} foreach $f (&dir2list ($d)) { if ( -d $f){$s+=&dir2size ("$d/$f");} else {$s+= -s "$dir/$f";} } return $s; } sub remove { my $file=@_[0]; my ($f); debug_print( "--- $file ---\n"); if (($file eq ".") || ($file eq "..") || ($file=~/\*/)){return EXIT_FAILURE;} elsif ( !-d $file) { debug_print ("unlink $file\n"); if (-e $file){unlink ($file);} } elsif ( -d $file) { debug_print ("++++++++ $file +++++++\n"); foreach $f (&dir2list($file)) { &remove ("$file/$f"); } debug_print ("rmdir $file\n"); rmdir $file; } else { debug_print ("????????? $file ????????\n"); } return EXIT_SUCCESS; } sub dir2list { my $dir=@_[0]; my (@list1, @list2,@list3, $l); opendir (DIR,$dir); @list1=readdir (DIR); closedir (DIR); foreach $l (@list1) { if ( $l ne "." && $l ne ".."){@list2=(@list2, $l);} } @list3 = sort { (-M "$dir/$list2[$b]") <=> (-M "$dir/$list2[$a]")} @list2; return @list3; } sub debug_print { if ($DEBUG==1){print @_;} } sub create_ref_file { my ($dir,$name_file,$size_file)=@_; my ($f, $s, $tot_size, @l); if ( !-d $dir){return;} @l=&dir2list ($dir); open (F, ">$name_file"); foreach $f (@l) { $s=&size("$dir/$f"); $tot_size+=$s; print F "$f $s\n"; } &myecho ($tot_size, ">$size_file"); close (F); } sub add_file { my ($dir,$name_file,$size_file,$file)=@_; my ($s, $tot_size); if ( !-d $dir) {return;} if ( !-e "$dir/$file" ) {return;} if ( !-e $name_file){&create_ref_file ($dir,$name_file,$size_file);} $s=&size("$dir/$file"); open (F, ">>$name_file"); print F "$file\n"; close (F); $tot_size=&get_tot_size ($dir,$name_file,$size_file); $tot_size+=$s; &myecho ($tot_size, ">$size_file"); } sub myecho { my ($string, $file)=@_; open (ECHO, $file) || die; print ECHO "$string"; close (ECHO); } sub vtmpnam { my $tmp_file_name; $tmp_name_counter++; $tmp_file_name="tmp_file_for_clean_cache_pdb$$.$tmp_name_counter"; $tmp_file_list[$ntmp_file++]=$tmp_file_name; if ( -e $tmp_file_name) {return &vtmpnam ();} else {return $tmp_file_name;} } $t_coffee="t_coffee"; foreach $value ( @ARGV) { $seq_file=$seq_file." ".$value; } $name=$ARGV[0]; $name=~s/\.[^\.]*$//; $lib_name="$name.mocca_lib"; $type=`t_coffee $seq_file -get_type -quiet`; chop ($type); if ( $type eq "PROTEIN"){$lib_mode="lalign_rs_s_pair -lalign_n_top 20";} elsif ( $type eq"DNA"){$lib_mode="lalign_rs_s_dna_pair -lalign_n_top 40";} if ( !(-e $lib_name)) { $command="$t_coffee -mocca -seq_weight=no -cosmetic_penalty=0 -mocca_interactive -in $lib_mode -out_lib $lib_name -infile $seq_file"; } elsif ( (-e $lib_name)) { $command="$t_coffee -mocca -seq_weight=no -cosmetic_penalty=0 -mocca_interactive -in $lib_name -infile $seq_file"; } system ($command); exit; my $WSDL = 'http://www.ebi.ac.uk/Tools/webservices/wsdl/WSDaliLite.wsdl'; use SOAP::Lite; use Data::Dumper; use Getopt::Long qw(:config no_ignore_case bundling); use File::Basename; my $checkInterval = 5; my %params=( 'async' => '1', # Use async mode and simulate sync mode in client ); GetOptions( 'pdb1=s' => \$params{'sequence1'}, 'chainid1=s' => \$params{'chainid1'}, 'pdb2=s' => \$params{'sequence2'}, 'chainid2=s' => \$params{'chainid2'}, "help|h" => \$help, # Usage info "async|a" => \$async, # Asynchronous submission "polljob" => \$polljob, # Get results "status" => \$status, # Get status "jobid|j=s" => \$jobid, # JobId "email|S=s" => \$params{email}, # E-mail address "trace" => \$trace, # SOAP messages "sequence=s" => \$sequence, # Input PDB ); my $scriptName = basename($0, ()); if($help) { &usage(); exit(0); } if($trace) { print "Tracing active\n"; SOAP::Lite->import(+trace => 'debug'); } my $soap = SOAP::Lite ->service($WSDL) ->on_fault(sub { my $soap = shift; my $res = shift; # Throw an exception for all faults if(ref($res) eq '') { die($res); } else { die($res->faultstring); } return new SOAP::SOM; } ); if( !($polljob || $status) && !( defined($params{'sequence1'}) && defined($params{'sequence2'}) ) ) { print STDERR 'Error: bad option combination', "\n"; &usage(); exit(1); } elsif($polljob && defined($jobid)) { print "Getting results for job $jobid\n"; getResults($jobid); } elsif($status && defined($jobid)) { print STDERR "Getting status for job $jobid\n"; my $result = $soap->checkStatus($jobid); print STDOUT "$result", "\n"; if($result eq 'DONE') { print STDERR "To get results: $scriptName --polljob --jobid $jobid\n"; } } else { if(-f $params{'sequence1'}) { $params{'sequence1'} = read_file($params{'sequence1'}); } if(-f $params{'sequence2'}) { $params{'sequence2'} = read_file($params{'sequence2'}); } my $jobid; my $paramsData = SOAP::Data->name('params')->type(map=>\%params); # For SOAP::Lite 0.60 and earlier parameters are passed directly if($SOAP::Lite::VERSION eq '0.60' || $SOAP::Lite::VERSION =~ /0\.[1-5]/) { $jobid = $soap->runDaliLite($paramsData); } # For SOAP::Lite 0.69 and later parameter handling is different, so pass # undef's for templated params, and then pass the formatted args. else { $jobid = $soap->runDaliLite(undef, $paramsData); } if (defined($async)) { print STDOUT $jobid, "\n"; print STDERR "To check status: $scriptName --status --jobid $jobid\n"; } else { # Synchronous mode print STDERR "JobId: $jobid\n"; sleep 1; getResults($jobid); } } sub clientPoll($) { my $jobid = shift; my $result = 'PENDING'; # Check status and wait if not finished #print STDERR "Checking status: $jobid\n"; while($result eq 'RUNNING' || $result eq 'PENDING') { $result = $soap->checkStatus($jobid); print STDERR "$result\n"; if($result eq 'RUNNING' || $result eq 'PENDING') { # Wait before polling again. sleep $checkInterval; } } } sub getResults($) { $jobid = shift; # Check status, and wait if not finished clientPoll($jobid); # Use JobId if output file name is not defined unless(defined($outfile)) { $outfile=$jobid; } # Get list of data types my $resultTypes = $soap->getResults($jobid); # Get the data and write it to a file if(defined($outformat)) { # Specified data type my $selResultType; foreach my $resultType (@$resultTypes) { if($resultType->{type} eq $outformat) { $selResultType = $resultType; } } $res=$soap->poll($jobid, $selResultType->{type}); write_file($outfile.'.'.$selResultType->{ext}, $res); } else { # Data types available # Write a file for each output type for my $resultType (@$resultTypes){ #print "Getting $resultType->{type}\n"; $res=$soap->poll($jobid, $resultType->{type}); write_file($outfile.'.'.$resultType->{ext}, $res); } } } sub read_file($) { my $filename = shift; open(FILE, $filename); my $content; my $buffer; while(sysread(FILE, $buffer, 1024)) { $content.= $buffer; } close(FILE); return $content; } sub write_file($$) { my ($tmp,$entity) = @_; print STDERR "Creating result file: ".$tmp."\n"; unless(open (FILE, ">$tmp")) { return 0; } syswrite(FILE, $entity); close (FILE); return 1; } sub usage { print STDERR < [options] pdbFile [--outfile string] Returns: saves the results to disk Asynchronous job: Use this if you want to retrieve the results at a later time. The results are stored for up to 24 hours. The asynchronous submission mode is recommended when users are submitting batch jobs or large database searches Usage: $scriptName --email --async [options] pdbFile Returns: jobid Use the jobid to query for the status of the job. Usage: $scriptName --status --jobid Returns: string indicating the status of the job: DONE - job has finished RUNNING - job is running NOT_FOUND - job cannot be found ERROR - the jobs has encountered an error When done, use the jobid to retrieve the status of the job. Usage: $scriptName --polljob --jobid [--outfile string] [Help] For more detailed help information refer to http://www.ebi.ac.uk/DaliLite/ EOF ; } my $WSDL = 'http://www.ebi.ac.uk/Tools/webservices/wsdl/WSWUBlast.wsdl'; use strict; use SOAP::Lite; use Getopt::Long qw(:config no_ignore_case bundling); use File::Basename; my $checkInterval = 15; my $numOpts = scalar(@ARGV); my ($outfile, $outformat, $help, $async, $polljob, $status, $ids, $jobid, $trace, $sequence); my %params= ( # Defaults 'async' => 1, # Force into async mode 'exp' => 10.0, # E-value threshold 'numal' => 50, # Maximum number of alignments 'scores' => 100, # Maximum number of scores ); GetOptions( # Map the options into variables "program|p=s" => \$params{program}, # BLAST program "database|D=s" => \$params{database}, # Search database "matrix|m=s" => \$params{matrix}, # Scoring matrix "exp|E=f" => \$params{exp}, # E-value threshold "echofilter|e" => \$params{echofilter}, # Display filtered sequence "filter|f=s" => \$params{filter}, # Low complexity filter name "alignments|b=i" => \$params{numal}, # Number of alignments "scores|s=i" => \$params{scores}, # Number of scores "sensitivity|S=s" => \$params{sensitivity}, # Search sensitivity "sort|t=s" => \$params{sort}, # Sort hits by... "stats|T=s" => \$params{stats}, # Scoring statistic to use "strand|d=s" => \$params{strand}, # Strand to use in DNA vs. DNA search "topcombon|c=i" => \$params{topcombon}, # Consistent sets of HSPs "outfile=s" => \$outfile, # Output file "outformat|o=s" => \$outformat, # Output format "help|h" => \$help, # Usage info "async|a" => \$async, # Asynchronous mode "polljob" => \$polljob, # Get results "status" => \$status, # Get job status "ids" => \$ids, # Get ids from result "jobid|j=s" => \$jobid, # JobId "email=s" => \$params{email}, # E-mail address "trace" => \$trace, # SOAP trace "sequence=s" => \$sequence, # Query sequence ); my $scriptName = basename($0, ()); if($help || $numOpts == 0) { &usage(); exit(0); } if($trace){ print STDERR "Tracing active\n"; SOAP::Lite->import(+trace => 'debug'); } my $soap = SOAP::Lite ->service($WSDL) ->proxy('http://localhost/', #proxy => ['http' => 'http://your.proxy.server/'], # HTTP proxy timeout => 600, # HTTP connection timeout ) ->on_fault(sub { # SOAP fault handler my $soap = shift; my $res = shift; # Throw an exception for all faults if(ref($res) eq '') { die($res); } else { die($res->faultstring); } return new SOAP::SOM; } ); if( !($polljob || $status || $ids) && !( defined($ARGV[0]) || defined($sequence) ) ) { print STDERR 'Error: bad option combination', "\n"; &usage(); exit(1); } elsif($polljob && defined($jobid)) { print "Getting results for job $jobid\n"; getResults($jobid); } elsif($status && defined($jobid)) { print STDERR "Getting status for job $jobid\n"; my $result = $soap->checkStatus($jobid); print STDOUT "$result\n"; if($result eq 'DONE') { print STDERR "To get results: $scriptName --polljob --jobid $jobid\n"; } } elsif($ids && defined($jobid)) { print STDERR "Getting ids from job $jobid\n"; getIds($jobid); } else { # Prepare input data my $content; my (@contents) = (); if(-f $ARGV[0] || $ARGV[0] eq '-') { $content={type=>'sequence',content=>read_file($ARGV[0])}; } if($sequence) { if(-f $sequence || $sequence eq '-') { $content={type=>'sequence',content=>read_file($ARGV[0])}; } else { $content={type=>'sequence',content=>$sequence}; } } push @contents, $content; # Submit the job my $paramsData = SOAP::Data->name('params')->type(map=>\%params); my $contentData = SOAP::Data->name('content')->value(\@contents); # For SOAP::Lite 0.60 and earlier parameters are passed directly if($SOAP::Lite::VERSION eq '0.60' || $SOAP::Lite::VERSION =~ /0\.[1-5]/) { $jobid = $soap->runWUBlast($paramsData, $contentData); } # For SOAP::Lite 0.69 and later parameter handling is different, so pass # undef's for templated params, and then pass the formatted args. else { $jobid = $soap->runWUBlast(undef, undef, $paramsData, $contentData); } # Asynchronous mode: output jobid and exit. if (defined($async)) { print STDOUT $jobid, "\n"; print STDERR "To check status: $scriptName --status --jobid $jobid\n"; } # Synchronous mode: try to get results else { print STDERR "JobId: $jobid\n"; sleep 1; getResults($jobid); } } sub getIds($) { my $jobid = shift; my $results = $soap->getIds($jobid); for my $result (@$results){ print "$result\n"; } } sub clientPoll($) { my $jobid = shift; my $result = 'PENDING'; # Check status and wait if not finished while($result eq 'RUNNING' || $result eq 'PENDING') { $result = $soap->checkStatus($jobid); print STDERR "$result\n"; if($result eq 'RUNNING' || $result eq 'PENDING') { # Wait before polling again. sleep $checkInterval; } } } sub getResults($) { my $jobid = shift; my $res; # Check status, and wait if not finished clientPoll($jobid); # Use JobId if output file name is not defined unless(defined($outfile)) { $outfile=$jobid; } # Get list of data types my $resultTypes = $soap->getResults($jobid); # Get the data and write it to a file if(defined($outformat)) { # Specified data type if($outformat eq 'xml') {$outformat = 'toolxml';} if($outformat eq 'txt') {$outformat = 'tooloutput';} my $selResultType; foreach my $resultType (@$resultTypes) { if($resultType->{type} eq $outformat) { $selResultType = $resultType; } } $res=$soap->poll($jobid, $selResultType->{type}); if($outfile eq '-') { write_file($outfile, $res); } else { write_file($outfile.'.'.$selResultType->{ext}, $res); } } else { # Data types available # Write a file for each output type for my $resultType (@$resultTypes){ #print STDERR "Getting $resultType->{type}\n"; $res=$soap->poll($jobid, $resultType->{type}); if($outfile eq '-') { write_file($outfile, $res); } else { write_file($outfile.'.'.$resultType->{ext}, $res); } } } } sub read_file($) { my $filename = shift; my ($content, $buffer); if($filename eq '-') { while(sysread(STDIN, $buffer, 1024)) { $content .= $buffer; } } else { # File open(FILE, $filename) or die "Error: unable to open input file"; while(sysread(FILE, $buffer, 1024)) { $content .= $buffer; } close(FILE); } return $content; } sub write_file($$) { my ($filename, $data) = @_; print STDERR 'Creating result file: ' . $filename . "\n"; if($filename eq '-') { print STDOUT $data; } else { open(FILE, ">$filename") or die "Error: unable to open output file"; syswrite(FILE, $data); close(FILE); } } sub usage { print STDERR < [options...] seqFile Returns: saves the results to disk Asynchronous job: Use this if you want to retrieve the results at a later time. The results are stored for up to 24 hours. The asynchronous submission mode is recommended when users are submitting batch jobs or large database searches Usage: $scriptName --async --email [options...] seqFile Returns : jobid Use the jobid to query for the status of the job. Usage: $scriptName --status --jobid Returns : string indicating the status of the job: DONE - job has finished RUNNING - job is running NOT_FOUND - job cannot be found ERROR - the jobs has encountered an error When done, use the jobid to retrieve the status of the job. Usage: $scriptName --polljob --jobid [--outfile string] Returns: saves the results to disk [Help] For more detailed help information refer to http://www.ebi.ac.uk/blast2/WU-Blast2_Help_frame.html EOF ; } my $WSDL = 'http://www.ebi.ac.uk/Tools/webservices/wsdl/WSBlastpgp.wsdl'; use SOAP::Lite; use Getopt::Long qw(:config no_ignore_case bundling); use File::Basename; my $checkInterval = 15; my %params=( 'async' => '1', # Use async mode and simulate sync mode in client ); GetOptions( "mode=s" => \$params{mode}, # Search mode: PSI-Blast or PHI-Blast "database|d=s" => \$params{database}, # Database to search "matrix|M=s" => \$params{matrix},# Scoring maxtrix "exp|e=f" => \$params{exp}, # E-value "expmulti|h=f" => \$params{expmulti}, # E-value "filter|F=s" => \$params{filter}, # Low complexity filter "dropoff|X=i" => \$params{dropoff}, # Dropoff score "finaldropoff|Z=i" => \$params{finaldropoff}, # Final dropoff score "scores|v=i" => \$params{scores}, # Max number of scores "align=i" => \$params{align}, # Alignment view "startregion|S=i" => \$params{startregion}, # Start of region in query "endregion|H=i" => \$params{endregion}, # End of region in query "maxpasses|j=i" => \$params{maxpasses}, # Number of PSI iterations "opengap|G=i" => \$params{opengap}, # Gap open penalty "extendgap|E=i" => \$params{extendgap}, # Gap extension penalty "pattern=s" => \$params{pattern}, # PHI-BLAST pattern "usagemode|p=s" => \$params{usagemode}, # PHI-BLAST program "appxml=s" => \$params{appxml}, # Application XML "sequence=s" => \$sequence, # Query sequence "help" => \$help, # Usage info "polljob" => \$polljob, # Get results "status" => \$status, # Get status "ids" => \$ids, # Get ids from result "jobid=s" => \$jobid, # JobId "outfile=s" => \$outfile, # Output filename "outformat|o=s" => \$outformat, # Output file format "async|a" => \$async, # Async submission "email=s" => \$params{email}, # User e-mail address "trace" => \$trace, # Show SOAP messages ); my $scriptName = basename($0, ()); if($help) { &usage(); exit(0); } if ($trace){ print "Tracing active\n"; SOAP::Lite->import(+trace => 'debug'); } my $soap = SOAP::Lite ->service($WSDL) ->on_fault(sub { my $soap = shift; my $res = shift; # Throw an exception for all faults if(ref($res) eq '') { die($res); } else { die($res->faultstring); } return new SOAP::SOM; } ); if( !($polljob || $status || $ids) && !( (defined($ARGV[0]) && -f $ARGV[0]) || defined($sequence) ) ) { print STDERR 'Error: bad option combination', "\n"; &usage(); exit(1); } elsif($polljob && defined($jobid)) { print "Getting results for job $jobid\n"; getResults($jobid); } elsif($status && defined($jobid)) { print STDERR "Getting status for job $jobid\n"; my $result = $soap->checkStatus($jobid); print STDOUT $result, "\n"; if($result eq 'DONE') { print STDERR "To get results: $scriptName --polljob --jobid $jobid\n"; } } elsif($ids && defined($jobid)) { print STDERR "Getting ids from job $jobid\n"; getIds($jobid); } else { if(-f $ARGV[0]) { $content={type=>'sequence', content=>read_file($ARGV[0])}; } if($sequence) { if(-f $sequence) { $content={type=>'sequence', content=>read_file($sequence)}; } else { $content={type=>'sequence', content=>$sequence}; } } push @content, $content; my $jobid; my $paramsData = SOAP::Data->name('params')->type(map=>\%params); my $contentData = SOAP::Data->name('content')->value(\@content); # For SOAP::Lite 0.60 and earlier parameters are passed directly if($SOAP::Lite::VERSION eq '0.60' || $SOAP::Lite::VERSION =~ /0\.[1-5]/) { $jobid = $soap->runBlastpgp($paramsData, $contentData); } # For SOAP::Lite 0.69 and later parameter handling is different, so pass # undef's for templated params, and then pass the formatted args. else { $jobid = $soap->runBlastpgp(undef, undef, $paramsData, $contentData); } if (defined($async)) { print STDOUT $jobid, "\n"; print STDERR "To check status: $scriptName --status --jobid $jobid\n"; } else { # Synchronous mode print STDERR "JobId: $jobid\n"; sleep 1; getResults($jobid); } } sub getIds($) { $jobid = shift; my $results = $soap->getIds($jobid); for $result (@$results){ print "$result\n"; } } sub clientPoll($) { my $jobid = shift; my $result = 'PENDING'; # Check status and wait if not finished #print STDERR "Checking status: $jobid\n"; while($result eq 'RUNNING' || $result eq 'PENDING') { $result = $soap->checkStatus($jobid); print STDERR "$result\n"; if($result eq 'RUNNING' || $result eq 'PENDING') { # Wait before polling again. sleep $checkInterval; } } } sub getResults($) { $jobid = shift; # Check status, and wait if not finished clientPoll($jobid); # Use JobId if output file name is not defined unless(defined($outfile)) { $outfile=$jobid; } # Get list of data types my $resultTypes = $soap->getResults($jobid); # Get the data and write it to a file if(defined($outformat)) { # Specified data type my $selResultType; foreach my $resultType (@$resultTypes) { if($resultType->{type} eq $outformat) { $selResultType = $resultType; } } $res=$soap->poll($jobid, $selResultType->{type}); write_file($outfile.'.'.$selResultType->{ext}, $res); } else { # Data types available # Write a file for each output type for my $resultType (@$resultTypes){ #print "Getting $resultType->{type}\n"; $res=$soap->poll($jobid, $resultType->{type}); write_file($outfile.'.'.$resultType->{ext}, $res); } } } sub read_file($) { my $filename = shift; open(FILE, $filename); my $content; my $buffer; while(sysread(FILE, $buffer, 1024)) { $content.= $buffer; } close(FILE); return $content; } sub write_file($$) { my ($tmp,$entity) = @_; print STDERR "Creating result file: ".$tmp."\n"; unless(open (FILE, ">$tmp")) { return 0; } syswrite(FILE, $entity); close (FILE); return 1; } sub usage { print STDERR < [options...] seqfile Returns: saves the results to disk Asynchronous job: Use this if you want to retrieve the results at a later time. The results are stored for up to 24 hours. The asynchronous submission mode is recommended when users are submitting batch jobs or large database searches Usage: blastpgp.pl --email --async [options...] seqFile Returns: jobid Use the jobid to query for the status of the job. Usage: blastpgp.pl --status --jobid Returns: string indicating the status of the job DONE - job has finished RUNNING - job is running NOT_FOUND - job cannot be found ERROR - the jobs has encountered an error When done, use the jobid to retrieve the results of the job. Usage: blastpgp.pl --polljob --jobid [--outfile ] Returns: saves the results to disk EOF ; } my $PROBTRESH = 0.3;# base pairs below this prob threshold will be ignored my $WEIGHT = 100.0; # float!! my $NUCALPH = "ACGTUNRYMKSWHBVD"; use vars qw($NUCALPH $WEIGHT); my $myname = basename($0); use strict; use warnings; use File::Basename; use Getopt::Long; use File::Glob ':glob'; use File::Spec; use File::Temp qw/ tempfile tempdir /; sub tcoffeelib_header($;$) { my ($nseq, $fd) = @_; if (! defined($fd)) { $fd = *STDOUT; } printf $fd "! TC_LIB_FORMAT_01\n"; printf $fd "%d\n", $nseq; } sub tcoffeelib_header_addseq($$;$) { my ($id, $seq, $fd) = @_; if (! defined($fd)) { $fd = *STDOUT; } printf $fd "%s %d %s\n", $id, length($seq), $seq; } sub tcoffeelib_comment($;$) { my ($comment, $fd) = @_; if (! defined($fd)) { $fd = *STDOUT; } printf $fd "!" . $comment . "\n"; } sub tcoffeelib_struct($$$;$) { my ($nseq, $len, $bpm, $fd) = @_; if (! defined($fd)) { $fd = *STDOUT; } # output basepair indices with fixed weight printf $fd "#%d %d\n", $nseq, $nseq; # output basepairs (only once) and with unit-offset for (my $i=0; $i<$len; $i++) { for (my $j=$i+1; $j<$len; $j++) { if (! defined($bpm->[$i][$j])) { print STDERR "ERROR: \$bpm->[$i][$j] undefined\n"; } if ($bpm->[$i][$j]>0) { print $fd $i+1; print $fd " "; print $fd $j+1; print $fd " " . $bpm->[$i][$j] . "\n"; } } } } sub tcoffeelib_footer(;$) { my ($fd) = @_; if (! defined($fd)) { $fd = *STDOUT; } print $fd "! SEQ_1_TO_N\n"; } sub plfold($$$) { my ($id, $seq, $probtresh) = @_; my (@struct);# return my ($templ, $fhtmp, $fnametmp, $cmd, $ctr, $window_size); our $ntemp++; $templ = $myname . ".pid-" . $$ .$ntemp .".XXXXXX"; ($fhtmp, $fnametmp) = tempfile($templ, UNLINK => 1); print $fhtmp ">$id\n$seq\n"; # --- init basepair array # for (my $i=0; $i> 8; return; } #unlink($fnametmp); my $fps = sprintf("%s_dp.ps", $id); # check long name if (! -s $fps) { { $fps = sprintf("%s_dp.ps", substr($id,0,12)); # check short name if (! -s $fps) { die("couldn't find expected file $fps\n"); return; } } } # --- read base pairs from created postscript # open(FH, $fps); while (my $line = ) { my ($nti, $ntj, $prob); chomp($line); # line: bp bp sqrt-prob ubox my @match = ($line =~ m/^([0-9]+) +([0-9]+) +([0-9\.]+) +ubox$/); if (scalar(@match)) { $nti=$1; $ntj=$2; $prob=$3*$3;# prob stored as square root if ($prob>$probtresh) { #printf STDERR "\$struct[$nti][$ntj] sqrtprob=$3 prob=$prob > $probtresh\n"; $struct[$nti-1][$ntj-1] = $WEIGHT } # store with zero-offset } } close(FH); # remove or gzi postscript # unlink($fps); # # or gzip #$cmd = "gzip -qf $fps"; #system($cmd); #if ($? != 0) { # printf STDERR "ERROR: gzip ($cmd) exited with error status %d\n", $? >> 8; #} return \@struct; } sub rnaseqfmt($) { my ($seq) = @_; # remove gaps $seq =~ s/-//g; # uppercase RNA $seq = uc($seq); # T -> U $seq =~ s/T/U/g; # check for invalid charaters $_ = $seq; s/[^$NUCALPH]//g; return $_; } sub usage(;$) { my ($errmsg) = @_; if ($errmsg) { print STDERR "ERROR: $errmsg\n"; } print STDERR << "EOF"; $myname: Creates a T-Coffee RNA structure library from RNAplfold prediction. See FIXME:citation Usage: $myname -in seq_file -out tcoffee_lib EOF exit(1); } sub read_fasta_seq { my $f=$_[0]; my %hseq; my (@seq, @com, @name); my ($a, $s,$nseq); open (F, $f); while () { $s.=$_; } close (F); @name=($s=~/>(\S*).*\n[^>]*/g); @seq =($s=~/>.*.*\n([^>]*)/g); @com =($s=~/>(\S*)(.*)\n([^>]*)/g); $nseq=$#name+1; for ($a=0; $a<$nseq; $a++) { my $n=$name[$a]; my $s; $hseq{$n}{name}=$n; $s=$seq[$a];$s=~s/\s//g; $hseq{$n}{seq}=$s; $hseq{$n}{com}=$com[$a]; } return %hseq; } my $fmsq = ""; my $flib = ""; my %OPTS; my %seq; my ($id, $nseq, $i); my @nl; GetOptions("in=s" => \$fmsq, "out=s" => \$flib); if (! -s $fmsq) { usage("empty or non-existant file \"$fmsq\"") } if (length($flib)==0) { usage("empty out-filename") } %seq=read_fasta_seq($fmsq); @nl=keys(%seq); $nseq=$#nl+1; open FD_LIB, ">$flib" or die "can't open $flib!"; tcoffeelib_header($nseq, *FD_LIB); foreach $id (keys (%seq)) { my ($seq, $fmtseq); $seq = $seq{$id}{seq}; $fmtseq = rnaseqfmt($seq);# check here, formatting for folding important later if (length($seq)!=length($fmtseq)) { print STDERR "ERROR: invalid sequence $id is not an RNA sequence. read seq is: $seq\n"; exit } tcoffeelib_header_addseq($id, uc($seq), *FD_LIB); } tcoffeelib_comment("generated by $myname on " . localtime(), *FD_LIB); $i=0; foreach $id (keys (%seq)) { my ($cleanid, $seq, $bpm); $seq=$seq{$id}{seq}; $cleanid = $id; $cleanid =~ s,[/ ],_,g;# needed for rnaplfold $seq = rnaseqfmt($seq); $bpm = plfold($cleanid, rnaseqfmt($seq), $PROBTRESH); tcoffeelib_struct($i+1, length($seq), $bpm, *FD_LIB); $i++; } tcoffeelib_footer(*FD_LIB); close FD_LIB; exit (0); $cmd=join ' ', @ARGV; if ($cmd=~/-infile=(\S+)/){ $seqfile=$1;} if ($cmd=~/-outfile=(\S+)/){ $libfile=$1;} %s=read_fasta_seq ($seqfile); open (F, ">$libfile"); foreach $name (keys (%s)) { my $tclib="$name.RNAplfold_tclib"; print (F ">$name _F_ $tclib\n"); seq2RNAplfold2tclib ($name, $s{$name}{seq}, $tclib); } close (F); exit (EXIT_SUCCESS); sub seq2RNAplfold2tclib { my ($name, $seq, $tclib)=@_; my ($tmp); $n++; $tmp="tmp4seq2RNAplfold_tclib.$$.$n.pep"; open (RF, ">$tmp"); print (RF ">$name\n$seq\n"); close (RF); system "t_coffee -other_pg RNAplfold2tclib.pl -in=$tmp -out=$tclib"; unlink ($tmp); return $tclib; } sub read_fasta_seq { my $f=@_[0]; my %hseq; my (@seq, @com, @name); my ($a, $s,$nseq); open (F, $f); while () { $s.=$_; } close (F); @name=($s=~/>(\S*).*\n[^>]*/g); @seq =($s=~/>.*.*\n([^>]*)/g); @com =($s=~/>\S*(.*)\n([^>]*)/g); $nseq=$#name+1; for ($a=0; $a<$nseq; $a++) { my $n=$name[$a]; $hseq{$n}{name}=$n; $hseq{$n}{seq}=$seq[$a]; $hseq{$n}{com}=$com[$a]; } return %hseq; } use Getopt::Long; GetOptions("-in=s" => \$fmsq1, "-out=s" => \$outfile, "-arch=s" => \$arch,"-psv=s" => \$psv, "-hmmtop_home=s", \$hmmtop_home ); open (O, ">$outfile"); if (!$hmmtop_home){$hmmtop_home="/home/notredame/packages/hmmtop/hmmtop_2.1";} if ($arch){$ENV{'HMMTOP_ARCH'}=$arch;} else {$ENV{'HMMTOP_ARCH'}="$hmmtop_home/hmmtop.arch";} if ($psv){$ENV{'HMMTOP_PSV'}=$psv;} else{$ENV{'HMMTOP_PSV'}="$hmmtop_home/hmmtop.psv";} $fmsq="seq2convert.$$.tmp"; system ("t_coffee -other_pg seq_reformat -in $fmsq1 -output fasta_seq > $fmsq"); %seq=read_fasta_seq($fmsq); $tmpfile="fasta_seq2hmmtop_fasta.$$.tmp"; foreach $s (keys (%seq)) { open F, ">$tmpfile"; print F ">seq\n$seq{$s}{seq}\n"; close F; $result=`hmmtop -if=$tmpfile -sf=FAS -pl 2>/dev/null`; @r=($result=~/(.+)/g); foreach $l (@r) { if ($l=~/pred(.*)/) {$p.=$1;} } $p=~s/\s//g; print O ">$seq{$s}{name}\n$p\n"; $p=""; } unlink "$tmpfile"; unlink "$fmsq"; close (O); sub read_fasta_seq { my $f=$_[0]; my %hseq; my (@seq, @com, @name); my ($a, $s,$nseq); open (F, $f); while () { $s.=$_; } close (F); @name=($s=~/>(.*).*\n[^>]*/g); @seq =($s=~/>.*.*\n([^>]*)/g); @com =($s=~/>.*(.*)\n([^>]*)/g); $nseq=$#name+1; for ($a=0; $a<$nseq; $a++) { my $n=$name[$a]; my $s; $hseq{$n}{name}=$n; $s=$seq[$a];$s=~s/\s//g; $hseq{$n}{seq}=$s; $hseq{$n}{com}=$com[$a]; } return %hseq; } my $FMODEL =""; my $TMPDIR = "/tmp"; my $NUCALPH = "ACGTUNRYMKSWHBVD"; my $PRIMNUCALPH = "ACGTUN"; use vars qw($NUCALPH $PRIMNUCALPH $TMPDIR); my $errmsg; use vars qw($errmsg); use Getopt::Long; use Cwd; use File::Basename; use File::Temp qw/ tempfile tempdir /; use File::Copy; use File::Path; sub usage(;$) { my ($errmsg) = @_; my $myname = basename($0); if ($errmsg) { print STDERR "ERROR: $errmsg\n"; } print STDERR << "EOF"; $myname: align two sequences by means of consan\'s sfold Usage: $myname -i file -o file -d path Options: -i|--in : pairwise input sequence file -o|--out: output alignment -d|--directory containing data EOF } sub read_stk_aln { my $f=$_[0]; my ($seq, $id); my %hseq; open (STK, "$f"); while () { if ( /^#/ || /^\/\// || /^\s*$/){;} else { ($id,$seq)=/(\S+)\s+(\S+)/; $hseq{$id}{'seq'}.=$seq; } } close (STK); return %hseq; } sub read_fasta_seq { my $f=$_[0]; my %hseq; my (@seq, @com, @name); my ($a, $s,$nseq); open (F, $f); while () { $s.=$_; } close (F); @name=($s=~/>(.*).*\n[^>]*/g); @seq =($s=~/>.*.*\n([^>]*)/g); @com =($s=~/>.*(.*)\n([^>]*)/g); $nseq=$#name+1; for ($a=0; $a<$nseq; $a++) { my $n=$name[$a]; $hseq{$n}{name}=$n; $hseq{$n}{seq}=$seq[$a]; $hseq{$n}{com}=$com[$a]; } return %hseq; } sub sfold_parseoutput($$) { my ($frawout, $foutfa) = @_; my %haln; my ($fstk, $cmd, $id); open FOUTFA, ">$foutfa"; $fstk = $frawout . ".stk"; # first line of raw out contains info # remaining stuff is stockholm formatted $cmd = "sed -e '1d' $frawout"; system("$cmd > $fstk"); if ($? != 0) { $errmsg = "command failed with exit status $?."; $errmsg .= "Command was \"$cmd\""; return -1; } # this gives an error message. just ignore it... %haln=read_stk_aln ( $fstk); foreach $i (keys (%haln)) { my $s; $s=$haln{$i}{'seq'}; $s =~ s/\./-/g; print FOUTFA ">$i\n$s\n"; } close FOUTFA; return 0; } sub sfold_wrapper($$$$) { my ($fs1, $fs2, $fmodel, $foutfa) = @_; my ($cmd, $frawout, $ferrlog, $freadme, $ftimelog, $fstk); # add basename($fmsqin) (unknown here!) $frawout = "sfold.log"; $ferrlog = "sfold.err"; $ftimelog = "sfold.time"; $freadme = "sfold.README"; $fstk = "sfold.stk"; # prepare execution... # # ./tmp is essential for dswpalign # otherwise you'll get a segfault mkdir "./tmp"; $cmd = "sfold -m $fmodel $fs1 $fs2"; open(FREADME,">$freadme"); print FREADME "$cmd\n"; close(FREADME); # and go # system("/usr/bin/time -p -o $ftimelog $cmd >$frawout 2>$ferrlog"); if ($? != 0) { $errmsg = "command failed with exit status $?"; $errmsg .= "command was \"$cmd\". See " . getcwd . "\n"; return -1; } return sfold_parseoutput($frawout, $foutfa); } my ($help, $fmsqin, $fmsaout); GetOptions("help" => \$help, "in=s" => \$fmsqin, "out=s" => \$fmsaout, "data=s" => \$ref_dir); if ($help) { usage(); exit(0); } if (! defined($fmsqin)) { usage('missing input filename'); exit(1); } if (! defined($fmsaout)) { usage('missing output filename'); exit(1); } if (scalar(@ARGV)) { usage('Unknown remaining args'); exit(1); } $FMODEL = "$ref_dir/mix80.mod"; if (! -e "$FMODEL") { die("couldn't find sfold grammar model file. Expected $FMODEL\n"); } my %hseq=read_fasta_seq ($fmsqin); my $id; foreach $id (keys(%hseq)) { push(@seq_array, $hseq{$id}); } if ( scalar(@seq_array) != 2 ) { die("Need *exactly* two sequences as input (pairwise alignment!).") } my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); my $datei = sprintf("%4d-%02d-%02d", $year+1900, $mon+1, $mday); my $templ = basename($0) . "." . $datei . ".pid-" . $$ . ".XXXXXX"; my $wd = tempdir ( $templ, DIR => $TMPDIR); copy($fmsqin, "$wd/" . basename($fmsqin) . ".org"); # for reproduction copy($FMODEL, "$wd"); my $fmodel = basename($FMODEL); my $orgwd = getcwd; chdir $wd; my @sepseqfiles; foreach $id (keys(%hseq)) { my ($seq, $orgseq, $fname, $sout); $seq=$hseq{$id}{'seq'}; $fname = basename($fmsqin) . "_$id.fa"; # replace funnies in file/id name (e.g. "/" " " etc) $fname =~ s,[/ ],_,g; open (PF, ">$fname"); print (PF ">$id\n$seq\n"); close (PF); push(@sepseqfiles, $fname); } my ($f1, $f2, $fout); $f1 = $sepseqfiles[0]; $f2 = $sepseqfiles[1]; $fout = $wd . basename($fmsqin) . ".out.fa"; if (sfold_wrapper($f1, $f2, $fmodel, "$fout") != 0) { printf STDERR "ERROR: See logs in $wd\n"; exit(1); } else { chdir $orgwd; copy($fout, $fmsaout); rmtree($wd); exit(0); } use Env qw(HOST); use Env qw(HOME); use Env qw(USER); $tmp=clean_cr ($ARGV[0]); open (F, $tmp); while ( ) { my $l=$_; if ( $l=~/^# STOCKHOLM/){$stockholm=1;} elsif ( $stockholm && $l=~/^#/) { $l=~/^#(\S+)\s+(\S+)\s+(\S*)/g; $l="_stockholmhasch_$1\_stockholmspace_$2 $3\n"; } $file.=$l; } close (F); unlink($tmp); $file1=$file; $file=~s/\#/_hash_symbol_/g; $file=~s/\@/_arobase_symbol_/g; $file=~s/\n[\.:*\s]+\n/\n\n/g; $file=~s/\n[ \t\r\f]+(\b)/\n\1/g; $file=~s/(\n\S+)(\s+)(\S)/\1_blank_\3/g; $file=~s/[ ]//g; $file=~s/_blank_/ /g; $file =~s/\n\s*\n/#/g; $file.="#"; $file =~s/\n/@/g; @blocks=split /\#/, $file; shift (@blocks); @s=split /\@/, $blocks[0]; $nseq=$#s+1; $file=join '@', @blocks; @lines=split /\@/,$file; $c=0; foreach $l (@lines) { if (!($l=~/\S/)){next;} elsif ($stockholm && ($l=~/^\/\// || $l=~/STOCKHOLM/)){next;}#get read of STOCHOLM Terminator $l=~/(\S+)\s+(\S*)/g; $n=$1; $s=$2; $seq[$c].=$s; $name[$c]=$n; $c++; if ( $c==$nseq){$c=0;} } if ( $c!=0) { print STDERR "ERROR: $ARGV[0] is NOT an MSA in Clustalw format: make sure there is no blank line within a block [ERROR]\n"; exit (EXIT_FAILURE); } for ($a=0; $a< $nseq; $a++) { $name[$a]=cleanstring ($name[$a]); $seq[$a]=cleanstring ($seq[$a]); $seq[$a]=breakstring($seq[$a], 60); $line=">$name[$a]\n$seq[$a]\n"; print "$line"; } exit (EXIT_SUCCESS); sub cleanstring { my $s=@_[0]; $s=~s/_hash_symbol_/\#/g; $s=~s/_arobase_symbol_/\@/g; $s=~s/[ \t]//g; return $s; } sub breakstring { my $s=@_[0]; my $size=@_[1]; my @list; my $n,$ns, $symbol; @list=split //,$s; $n=0;$ns=""; foreach $symbol (@list) { if ( $n==$size) { $ns.="\n"; $n=0; } $ns.=$symbol; $n++; } return $ns; } sub clean_cr { my $f=@_[0]; my $file; $tmp="f$.$$"; open (IN, $f); open (OUT, ">$tmp"); while ( ) { $file=$_; $file=~s/\r\n/\n/g; $file=~s/\n\r/\n/g; $file=~s/\r\r/\n/g; $file=~s/\r/\n/g; print OUT "$file"; } close (IN); close (OUT); return $tmp; } use Env qw(HOST); use Env qw(HOME); use Env qw(USER); $query_start=-1; $query_end=-1; while (<>) { if ( /\/\//){$in_aln=1;} elsif ( $in_aln && /(\S+)\s+(.*)/) { $name=$1; $seq=$2; $seq=~s/\s//g; $seq=~s/\~/\-/g; $seq=~s/\./\-/g; if ( $list{$n}{'name'} && $list{$n}{'name'} ne $name) { print "$list{$n}{'name'} Vs $name"; exit (EXIT_FAILURE); } else { $list{$n}{'name'}= $name; } $list{$n}{'seq'}=$list{$n}{'seq'}.$seq; $nseq=++$n; } else {$n=0;} } for ($a=0; $a<$nseq; $a++) { print ">$list{$a}{'name'}\n$list{$a}{'seq'}\n"; } use Env qw(HOST); use Env qw(HOME); use Env qw(USER); use strict; use warnings; use diagnostics; my $in_hit_list, my $in_aln=0, my(%name_list)=(),my (%list)=(),my $n_seq=0; my $test=0; my($j)=0, my $n=0, my $nom, my $lg_query, my %vu=(); open (F, ">tmp"); $/="\n"; while (<>) { print F $_; if($_ =~ /Query=\s*(.+?)\s/i) { $nom=$1;} if ( /Sequences producing significant alignments/){$in_hit_list=1;} if ($_=~ /^pdb\|/i) { $_=~ s/pdb\|//g; } if ($_=~ /^(1_\d+)\s+\d+/) { $_=~ s/$1/QUERY/;} if ( /^(\S+).+?\s+[\d.]+\s+([\de.-]+)\s+$/ && $in_hit_list) { my($id)=$1; # $id=~ s/\|/_/g; # if ($id =~ /.+_$/) { chop($id) }; # $name_list{$n_seq++}=$id; $name_list{$n_seq-1}=~ s/.*\|//g; } if (/query/i) {$in_aln=1;} if ( /^(\S+)\s+(\d+)\s+([a-zA-Z-]+)\s+(\d+)/ || /^(\S+)(\s+)(\-+)(\s+)/ && ($in_aln == 1)) { my $name=$1; my $start=$2; my $seq=$3; my $end=$4; if ($name =~ /QUERY/i) { $lg_query=length($seq); } unless ($test > $n) #m { my(@seqq)= split('',$seq); my($gap_missing)= scalar(@seqq); while ($gap_missing != $lg_query) { unshift (@seqq,"-"); $gap_missing= scalar(@seqq); } $seq=join('',@seqq); #m } if ($name =~ /QUERY/i) { $n=0; %vu=(); $j=0; $list{$n}{'real_name'}="$nom"; } else { unless (exists $vu{$name}) { ++$j;} $list{$n}{'real_name'}=$name_list{$j-1}; } $list{$n}{'name'}=$name; $seq=~tr/a-z/A-Z/; $list{$n}{'seq'}=$list{$n}{'seq'}; $list{$n}{'seq'}.=$seq; $n++; $vu{$name}++; $test++; } } my @numero=(); for (my $a=0; $a<$n; $a++) #m { my $long=length($list{0}{'seq'}); my $long1= length($list{$a}{'seq'}); while ($long1 ne $long) { $list{$a}{'seq'}.="-"; $long1= length ($list{$a}{'seq'}); } push (@numero,"$list{$a}{'name'} $list{$a}{'real_name'}\n"); } my %dejavu=(); for (my $i=0; $i<=$#numero; $i++) { my $s=">$list{$i}{'real_name'}\n$list{$i}{'seq'}\n"; my $k=0; if (exists $dejavu{$numero[$i]}) {next;} else { for ($j=0; $j<$n ; $j++) { if ("$numero[$i]" eq "$numero[$j]" && $j != $i ) { ++$k; $s .=">$list{$j}{'real_name'}\n$list{$j}{'seq'}\n"; } } } if ($k>0) { my $cons; open (SOR,">tempo_aln2cons"); print SOR $s; close SOR ; open (COM,"t_coffee -other_pg seq_reformat -in tempo_aln2cons -action +aln2cons +upper |") ; while () { if (/^>/) { $cons =">$list{$i}{'real_name'}\n"; next;} $_=~ s/\n//g; $cons .=$_; } close COM; unlink ("tempo_aln2cons"); print $cons,"\n"; print F $cons,"\n"; } else { print $s; print F $s; } $dejavu{$numero[$i]}++; } #m exit; use Env; $tmp_dir=""; $init_dir=""; $program="tc_generic_method.pl"; $blast=@ARGV[0]; $name="query";$seq=""; %p=blast_xml2profile($name,$seq,100, 0, 0, $blast); &output_profile (%p); sub output_profile { my (%profile)=(@_); my ($a); for ($a=0; $a<$profile{n}; $a++) { print ">$profile{$a}{name} $profile{$a}{comment}\n$profile{$a}{seq}\n"; } return; } sub file_contains { my ($file, $tag, $max)=(@_); my ($n); $n=0; if ( !-e $file && ($file =~/$tag/)) {return 1;} elsif ( !-e $file){return 0;} else { open (FC, "$file"); while ( ) { if ( ($_=~/$tag/)) { close (FC); return 1; } elsif ($max && $n>$max) { close (FC); return 0; } $n++; } } close (FC); return 0; } sub file2string { my $f=@_[0]; my $string, $l; open (F,"$f"); while () { $l=$_; #chomp ($l); $string.=$l; } close (F); $string=~s/\r\n//g; $string=~s/\n//g; return $string; } sub tag2value { my $tag=(@_[0]); my $word=(@_[1]); my $return; $tag=~/$word="([^"]+)"/; $return=$1; return $return; } sub hit_tag2pdbid { my $tag=(@_[0]); my $pdbid; $tag=~/id="(\S+)"/; $pdbid=$1; $pdbid=~s/_//; return $pdbid; } sub id2pdbid { my $id=@_[0]; if ($id =~/pdb/) { $id=~/pdb(.*)/; $id=$1; } $id=~s/[|_]//g; return $id; } sub set_blast_type { my $file =@_[0]; if (&file_contains ($file,"EBIApplicationResult",100)){$BLAST_TYPE="EBI";} elsif (&file_contains ($file,"NCBI_BlastOutput",100)) {$BLAST_TYPE="NCBI";} else { $BLAST_TYPE=""; } return $BLAST_TYPE; } sub blast_xml2profile { my ($name,$seq,$maxid, $minid, $mincov, $file)=(@_); my (%p, $a, $string, $n); if ($BLAST_TYPE eq "EBI" || &file_contains ($file,"EBIApplicationResult",100)){%p=ebi_blast_xml2profile(@_);} elsif ($BLAST_TYPE eq "NCBI" || &file_contains ($file,"NCBI_BlastOutput",100)){%p=ncbi_blast_xml2profile(@_);} else { print "************ ERROR: Blast Returned an unknown XML Format **********************"; die; } for ($a=0; $a<$p{n}; $a++) { my $name=$p{$a}{name}; $p{$name}{seq}=$p{$a}{seq}; } return %p; } sub ncbi_blast_xml2profile { my ($name,$seq,$maxid, $minid, $mincov, $string)=(@_); my ($L,$l, $a,$b,$c,$d,$nhits,@identifyerL); $seq=~s/[^a-zA-Z]//g; $L=length ($seq); %hit=&xml2tag_list ($string, "Hit"); for ($nhits=0,$a=0; $a<$hit{n}; $a++) { my ($ldb,$id, $identity, $expectation, $start, $end, $coverage, $r); my (%ID,%DE,%HSP); $ldb=""; %ID=&xml2tag_list ($hit{$a}{body}, "Hit_id"); $identifyer=$ID{0}{body}; %DE=&xml2tag_list ($hit{$a}{body}, "Hit_def"); $definition=$DE{0}{body}; %HSP=&xml2tag_list ($hit{$a}{body}, "Hsp"); for ($b=0; $b<$HSP{n}; $b++) { my (%START,%END,%E,%I,%Q,%M); %START=&xml2tag_list ($HSP{$b}{body}, "Hsp_query-from"); %HSTART=&xml2tag_list ($HSP{$b}{body}, "Hsp_hit-from"); %LEN= &xml2tag_list ($HSP{$b}{body}, "Hsp_align-len"); %END= &xml2tag_list ($HSP{$b}{body}, "Hsp_query-to"); %HEND= &xml2tag_list ($HSP{$b}{body}, "Hsp_hit-to"); %E=&xml2tag_list ($HSP{$b}{body}, "Hsp_evalue"); %I=&xml2tag_list ($HSP{$b}{body}, "Hsp_identity"); %Q=&xml2tag_list ($HSP{$b}{body}, "Hsp_qseq"); %M=&xml2tag_list ($HSP{$b}{body}, "Hsp_hseq"); for ($e=0; $e<$Q{n}; $e++) { $qs=$Q{$e}{body}; $ms=$M{$e}{body}; if ($seq eq""){$seq=$qs;$L=length($seq);} $expectation=$E{$e}{body}; $identity=($LEN{$e}{body}==0)?0:$I{$e}{body}/$LEN{$e}{body}*100; $start=$START{$e}{body}; $end=$END{$e}{body}; $Hstart=$HSTART{$e}{body}; $Hend=$HEND{$e}{body}; $coverage=(($end-$start)*100)/$L; if ($identity>$maxid || $identity<$minid || $coverage<$mincov){next;} @lr1=(split (//,$qs)); @lr2=(split (//,$ms)); $l=$#lr1+1; for ($c=0;$c<$L;$c++){$p[$nhits][$c]="-";} for ($d=0,$c=0; $c<$l; $c++) { $r=$lr1[$c]; if ( $r=~/[A-Za-z]/) { $p[$nhits][$d + $start-1]=$lr2[$c]; $d++; } } $Qseq[$nhits]=$qs; $Hseq[$nhits]=$ms; $QstartL[$nhits]=$start; $HstartL[$nhits]=$Hstart; $identityL[$nhits]=$identity; $endL[$nhits]=$end; $definitionL[$nhits]=$definition; $identifyerL[$nhits]=$identifyer; $comment[$nhits]="$ldb|$identifyer [Eval=$expectation][id=$identity%][start=$Hstart end=$Hend]"; $nhits++; } } } $profile{n}=0; $profile{$profile{n}}{name}=$name; $profile{$profile{n}}{seq}=$seq; $profile {n}++; for ($a=0; $a<$nhits; $a++) { $n=$a+1; $profile{$n}{name}="$name\_$a"; $profile{$n}{seq}=""; $profile{$n}{Qseq}=$Qseq[$a]; $profile{$n}{Hseq}=$Hseq[$a]; $profile{$n}{Qstart}=$QstartL[$a]; $profile{$n}{Hstart}=$HstartL[$a]; $profile{$n}{identity}=$identityL[$a]; $profile{$n}{definition}=$definitionL[$a]; $profile{$n}{identifyer}=$identifyerL[$a]; $profile{$n}{comment}=$comment[$a]; for ($b=0; $b<$L; $b++) { if ($p[$a][$b]) { $profile{$n}{seq}.=$p[$a][$b]; } else { $profile{$n}{seq}.="-"; } } } $profile{n}=$nhits+1; return %profile; } sub ebi_blast_xml2profile { my ($name,$seq,$maxid, $minid, $mincov, $string)=(@_); my ($L,$l, $a,$b,$c,$d,$nhits,@identifyerL,$identifyer); $seq=~s/[^a-zA-Z]//g; $L=length ($seq); %hit=&xml2tag_list ($string, "hit"); for ($nhits=0,$a=0; $a<$hit{n}; $a++) { my ($ldb,$id, $identity, $expectation, $start, $end, $coverage, $r); my (%Q,%M,%E,%I); $ldb=&tag2value ($hit{$a}{open}, "database"); $identifyer=&tag2value ($hit{$a}{open}, "id"); $description=&tag2value ($hit{$a}{open}, "description"); %Q=&xml2tag_list ($hit{$a}{body}, "querySeq"); %M=&xml2tag_list ($hit{$a}{body}, "matchSeq"); %E=&xml2tag_list ($hit{$a}{body}, "expectation"); %I=&xml2tag_list ($hit{$a}{body}, "identity"); for ($b=0; $b<$Q{n}; $b++) { $qs=$Q{$b}{body}; $ms=$M{$b}{body}; if ($seq eq""){$seq=$qs;$L=length($seq);} $expectation=$E{$b}{body}; $identity=$I{$b}{body}; $start=&tag2value ($Q{$b}{open}, "start"); $end=&tag2value ($Q{$b}{open}, "end"); $startM=&tag2value ($M{$b}{open}, "start"); $endM=&tag2value ($M{$b}{open}, "end"); $coverage=(($end-$start)*100)/$L; # print "$id: ID: $identity COV: $coverage [$start $end]\n"; if ($identity>$maxid || $identity<$minid || $coverage<$mincov){next;} # print "KEEP\n"; @lr1=(split (//,$qs)); @lr2=(split (//,$ms)); $l=$#lr1+1; for ($c=0;$c<$L;$c++){$p[$nhits][$c]="-";} for ($d=0,$c=0; $c<$l; $c++) { $r=$lr1[$c]; if ( $r=~/[A-Za-z]/) { $p[$nhits][$d + $start-1]=$lr2[$c]; $d++; } } $identifyerL[$nhits]=$identifyer; $comment[$nhits]="$ldb|$identifyer [Eval=$expectation][id=$identity%][start=$startM end=$endM]"; $nhits++; } } $profile{n}=0; $profile{$profile{n}}{name}=$name; $profile{$profile{n}}{seq}=$seq; $profile {n}++; for ($a=0; $a<$nhits; $a++) { $n=$a+1; $profile{$n}{name}="$name\_$a"; $profile{$n}{seq}=""; $profile{$n}{identifyer}=$identifyerL[$a]; $profile{$n}{comment}=$comment[$a]; for ($b=0; $b<$L; $b++) { if ($p[$a][$b]) { $profile{$n}{seq}.=$p[$a][$b]; } else { $profile{$n}{seq}.="-"; } } } $profile{n}=$nhits+1; return %profile; } sub blast_xml2hit_list { my $string=(@_[0]); return &xml2tag_list ($string, "hit"); } sub xml2tag_list { my ($string_in,$tag)=@_; my $tag_in, $tag_out; my %tag; if (-e $string_in) { $string=&file2string ($string_in); } else { $string=$string_in; } $tag_in1="<$tag "; $tag_in2="<$tag>"; $tag_out="/$tag>"; $string=~s/>/>##1/g; $string=~s//g; @l=($string=~/(\<[^>]+\>)/g); $tag{n}=0; $in=0;$n=-1; foreach $t (@l) { $t=~s/<#//; $t=~s/#>//; if ( $t=~/$tag_in1/ || $t=~/$tag_in2/) { $in=1; $tag{$tag{n}}{open}=$t; $n++; } elsif ($t=~/$tag_out/) { $tag{$tag{n}}{close}=$t; $tag{n}++; $in=0; } elsif ($in) { $tag{$tag{n}}{body}.=$t; } } return %tag; } use Env qw(HOST); use Env qw(HOME); use Env qw(USER); while (<>) { if ( /^>(\S+)/) { if ($list{$1}) { print ">$1_$list{$1}\n"; $list{$1}++; } else { print $_; $list{$1}=1; } } else { print $_; } } use Env qw(HOST); use Env qw(HOME); use Env qw(USER); open (F,$ARGV[0]); while ( <>) { @x=/([^:,;\)\(\s]+):[^:,;\)\(]*/g; @list=(@list,@x); } $n=$#list+1; foreach $n(@list){print ">$n\nsequence\n";} close (F); open (F, $ARGV[0]); while ( ) { @l=($_=~/(\S+)/g); $name=shift @l; print STDOUT "\n>$name\n"; foreach $e (@l){$e=($e eq "0")?"O":"I";print "$e";} } close (F); use Env qw(HOST); use Env qw(HOME); use Env qw(USER); $tmp="$ARGV[0].$$"; open (IN, $ARGV[0]); open (OUT, ">$tmp"); while ( ) { $file=$_; $file=~s/\r\n/\n/g; $file=~s/\n\r/\n/g; $file=~s/\r\r/\n/g; $file=~s/\r/\n/g; print OUT "$file"; } close (IN); close (OUT); open (OUT, ">$ARGV[0]"); open (IN, "$tmp"); while ( ) { print OUT "$_"; } close (IN); close (OUT); unlink ($tmp); 0123456789ABCDEF%*s%*s %*s %c %*c %d %*f %*f %*f %*s %s %s %*c %d %f %f %f CACCBNest_idmatextract_from_pdb -seq_field %s -infile %s -atom ALL -chain FIRST -mode simple> %s [DEBUG_EXTRACT_FROM_PDB:read_ca_trace] %s ERROR[normalize_pdb_file]: %s is not a pdb file[FATAL:%s] extract_from_pdb -infile %s -atom ALL -chain FIRST -coor %d %d -nodiagnostic > %smyers_miller_pair_wise-Incompatibility between the repeat [%s] and the master Sequence [%s] %sextract_from_pdb %s -coor %d %d -seq_field SEQRES> %s>%s _P_ %s cp %s %sALLextract_from_pdb -infile %s -atom %s -mode simple -force >%sATOM_P_ %s#Distance_map_format_01 #Sequence %s with T= %.2f %s Residue %d fasta>%s R=%d T=%.2f %s %s #%s (%s) struc2contacts_01 Structure %s vs %sSEQRES Residue %3d [%s] vs %3d [%s] %9.4f Angstromextract_from_pdb -infile %s -atom ALL -mode simple -force >%s Process: Structure %s Against Ligand %s T=%.2f Angstromextract_from_pdb -infile %s -ligand ALL -atom ALL -mode simple -force >%sextract_from_pdb -infile %s -chain %s -ligand %s -ligand_only -atom ALL -mode simple -force >%s [DONE] UN-WEIGHTED MODE: EVERY SEQUENCE WEIGHTS 1 WEIGHTED MODE:%s %*s %.2f gcg#CODE: %s <=> %s TCTAG_%d%s_%d_%dUnknown Mode for Decode_name [FATAL:%s]bojBOJ Format output_est_prf Impossible: No profile Cedric Notredame Consensus Sequence Reconstructed with %s (%s,%s) %4c %4c %4c %4c %15s Consensus Internal Gaps%4d %4d %4d %4d %15d %c #### TC REC SEPARATOR ### Lalign mode: best local alignments between two sequences %s(%s) [%s] Comparison of: (A) %s %s -%d aa (B) %s %s -%d aa >%s %s %s %s $ %s %s %f $ %s %.2f %d %s doolittle ERROR: %c is not an amino acid [FATAL::aa2hydropathy::%s]volume ERROR: %s is an unknown mode [FATAL::aa2hydropathy::%s]ALAARGASNASPCYSGLNGLUGLYHISILELEULYSMETPHEPROSERTRPTYRVAL# BLAST_MATRIX FORMAT #ALPHABET=%s %3c %5darndcqeghilkmfpstwyvbzx*P1;F1;DL;DC;RL;RC;XX;%s %d %*c %c %*f %*f %*f %d%d%d%c%c%c%-*s - %-*s %d# STOCKHOLM 1.0 // %c %d %c -1 ERROR: mat2cmp needs two matrices [FATAL:%s] ERROR in function reformat:output_fasta_seqX[FATAL:%s]>%s_%d %s # BLAST_MATRIX FORMAT #ALPHABET=%s #TRANSITION MATRIX TRAINED ON %d Sequence #rna2dnaSequences should be *RNA* type [FATAL:%s] dna2rnaSequences should be *DNA* type (type=%s) [FATAL:%s] Unknown -transform mode: %s [FATAL:%s] abcdefghij-hnrglNLname%-*s nresngapnlgtNSEQ %d LEN %d %-5d Consrna_numbersaga_alnnumber_alnclustal_alnfasta_alnnumber_fastamsf_alndali_alndali_seqbarton_list_tcest_prfgotoh_alnamps_alnpir_alnpir_seqest_fastaamps_sd_scorespima_alndialign_alngor_seqgor_strucstockholm_aln3d_aliallset1set2 WARNING: POSITION WITH NO INFORMATION [clean_est:%s] %.1f%% identity in %d aa overlap; score: %d %-4d ---------- Format: GLALIGN_01 [Generated with %s ] #Each Line corresponds to a column #First column coresponds to first genome #Last Column gives the column reliability on a 0-9 scale #[-1] Indicates that the reliability was not evaluated Genome List Genome %s Alignment List Alignment %d Len %d Score %d ---- [ %d ]%s.mss%s.one_rnaST AS %s >%s;%s %s WARNING Could Not Output Model %s [%s]#STATE %c: %s %s;%s_%s.seq>%s !%s %d @ %d %d ALN_LINE_LENGTHseq%s.seqextended_pairextended_libextended_cosmeticT_COFFEE ALIGNMENT CPU TIME:%d sec. %-*s %3d %4d %4d # %c tot: %6d freq: %7.5f # %c%c tot: %6d freq: %7.5f log_odd: %9.3f idscoreDNA# TC_SIMILARITY_MATRIX_FORMAT_01 # PW_SEQ_DISTANCES BOT %4d %4d %5.2f %*s %*s %5.2f TOP %4d %4d %5.2f %*s %*s %5.2f AVG %d %*s %*s %5.2f TOTTOT %*s %*s %5.2f _sarmat2_sar_memory__idscore_covscoreSAGACLUSTALClustalWclustalT-COFFEE_MSAINTERLEAVED_MSACONC_MSF_FORMAT_01BLAST_MATRIXTC_SIMILARITY_MATRIX_FORMAT_01TC_DISTANCE_MATRIX_FORMAT_01PAVIE_MATRIXCLUSTALW_MATRIX HEADER SEQRES ATOMextract_from_pdb %s > %sSIMPLE_PDB_FORMATSEQ_INDEXALPHABET%c |- |more %s | gmat-inf-gc-v2c -A abcdefghijklmnopqrstuvwxyz> %sln(p-value):%.6f WARNING: Seq Name Too long: [%s]. Truncated to %dextract_from_pdb -is_pdb_name '%s' > %sDEBUG_EXTRACT_FROM_PDB [DEBUG_EXTRACT_FROM_PDB:is_pdb_name] %s TC_LIB_LIST_FORMAT_01z ID SQ MSF:STOCKHOLMSINGLE_SEQ_WEIGHT_FORMAT_01 ERROR: File %s is not in Format SINGLE_SEQ_WEIGHT_FORMAT_01 [FATA:%s]%s %fTC_LIB_FORMAT_01T-COFFEE_LIB_FORMAT_01TC_LIB_FORMAT_02LambdaAltschul,TC_METHOD_FORMAT_01%s.pdbextract_from_pdb -netfile '%s' > %s 2>/dev/null [DEBUG_EXTRACT_FROM_PDB:is_pdb_struc] %s cp %s %s%s ERROR Could not download structure %s [FATAL:%s] %s_%d_%d.pdbextract_from_pdb -infile '%s' -chain FIRST -coor %d %d > %s%s [DEBUG_EXTRACT_FROM_PDB:get_pdb_struc] %s ERROR Could not extract segment [%d %d] from structure %s [FATAL:%s] extract_from_pdb -get_pdb_id %s > %s [DEBUG_EXTRACT_FROM_PDB:get_pdb_id] %s [DEBUG_EXTRACT_FROM_PDB:get_pdb_id]DONE # PAVIE_MATRIX FORMAT #ALPHABET=%s %c %c %.3f - - %.3f ERROR: NO SEQUENCE READ [FATAL:%s] Unknown type INPUT SEQUENCES: %d SEQUENCES [%s] Input File %-*s Seq %-*s Length %4d type %s Struct Yes PDBID %s Struct No Struct UncheckedFfERROR: Gene and target have different length [FATAL] gene: %s # SEQ_INDEX %s %dPW_SEQ_DISTANCESBOTBOT TOP %*s %d %d %fgcagccgctgcntgctgtgacgatgaagagttctttggagggggcggtggncaccatataatcattaaaaagctactgctccttttattgctnatgaacaatccaccgccccctccncagcaacgacggcgccgtagaaggcgntcatcgtcctctagcagtacaacgaccactacngtagtggtcgttgtntggtactattagtaatgaagctacdefghiklmnpqrstvwy>%s__%c__%d__%d__%d %s ----FRAMESHIFT: %sNEUTRAL_SUBSTITUTIONRANDOM_SUBSTITUTIONRANDOM_DELETIONAMINO_ACID_DELETIONAMINO_ACID_SUBSTITUTIONclustalw_col PROBLEM: [%d %d]->%d frame: %d frame: %d Reverse ComplementALPHABET=%s%c %c %f%c %d %d %d %d %c %c %f %s Parsing_error when reading blast_matrix %s: %c %c %c ;(),:#><'�Index%*d >%s1*ta_agechannel%d_FIRSTYEAR_FIRSTYEAR%d__agechannel%d %s %s %s WARNING (get_amps_seq_name): Sequence %s Duplicated in File %s ALLOW_DUPLICATE [FATAL:%s] I_Score=%d Score=%d Score=%d is THERE %s %d Independant Cluster(s) in your sequencesi_%sare COULDN'T OPEN %s SQ ID%s.pep%s.check>P1;%sbarton_seq_list_largemake_dirbarton_lengthbarton_nseq%d%s.pep mkdir %s mv %s.pep %s mv %s.check %s %d: %d Best_T: %d Avg_T: %d WARNING (read_number_aln): Sequence %s Duplicated in File %s COULDN'T READ %suse_diskSEQ_ON_DISK_4_TCOFFEEPDBWarning: Read Sequence from ATOM field in %s [%s:WARNING] WARNING: failed to extract sequence from %s [%s:WARNING] WARNING: Could not fetch PDB file: %smsf_aln2fasta_aln.pl %s > %s ERROR: file %s does not have a legal msf format [FATAL:%s]clustalw_aln2fasta_aln.pl %s > %sCould Not Read File %s [FATAL:%s] _stockholm_stockholmspace__stockholmhasch_%s %s > %sextract_from_pdb -seq_field %s -chain FIRST -infile '%s' -mode fasta > %s [DEBUG_EXTRACT_FROM_PDB:get_pdb_seq] %s ERROR: %s Does Not Exist [FATAL:%s] ALMSPRALSMXPRW%c%s ERROR: %s not recognised [FATAL:%s]t_coffee_alnconc_alnblast_aln WARNING (main_read_aln): %s is duplicated in File %s # MONOAA_MATRIX_FORMAT_01 %c %c %d %d # DIAA_MATRIX_FORMAT_01 %c%c %c%c %d %d !Protected!!protected!cat %s | blast_aln2fasta_aln.pl | fasta_aln2fasta_aln_unique_name.pl >%sblast_xml2fasta_aln.pl %s >%s Format %s tc_libswissprot_seqtreefile_listfile_listlistfasta_treetree_listtreelist>Tree_%d %s matrixnewick_treenhnew_hampshireexcel_seqpavie_seqpavie2fasta.plperl_raw_fastapdb_strucFAILED TO find PDB File %smocca_libalifold %4d %4d%s, %s (%s) [%s] [MODE: %s] %s CPU %d sec SCORE %d NSEQ %d LEN %d MOCCA,(%s,%s, C. Notredame) SCORE %d NSEQ %d LEN %d %-*s: %3d %3d %d %-10.10s %10.10s SEP_4_TCOFFEEstrict_clustalCLUSTAL W (1.83) multiple sequence alignmentCLUSTAL FORMAT for %s %s [%s] [MODE: %s ], CPU=%.2f sec, SCORE=%d, Nseq=%d, Len=%d tc_clustal%s_%s_%s.pw_lib_saga_aln%s_%s_%s.libseqnosaln2bootstrapaln2samplealn2random_alnor_scanOR SCANor_sarsar2subsar in=aln, in2=sar sar2subsar [filter value compound1 compound2...] | [jack1] | [file] display_sarsar2simpredsar2simpred2 ERROR: +sar2simpred2 seqnamesfile posfile compound limitsar_analyzesimple_sar_predictdisplay_sar_analyzedisplay_sar_analyze_pcweight2sar ERROR: +weight2sar sar_weight ERROR: +sar_weight name2unique_namefasta_aln2fasta_aln_unique_name.pl %s >%srm_tagrm_templatetemplateadd_templateswap_headerseq2yearswap_lib_headerweight_libstruc2nbseq2contactsstruc2contacts >%s %s %streelist_pruneprune_treelisttree2unresolved_nodesSIZE: %d COUNT: %d tree_pruneprune_treetree2seqseq2dpatreetree2dpatreetree2groupunroottreelist2grouptreelist2groupssplits2treecount_splitscount_groupstree2dist%-15s lengthtreelist2ltitreelist2frametreelist2seqtreelist2leafgrouptreelist2splitstreelist2dmattree_cmptree_comparetree_scansplit_cmpnode_sortavg_bootstrapgenepred2acctree_cog_cmptree_aln_cmpchange_bootstrapchange_distancesaln2treesimilarities2treeoriginal_seqnosaln2predevaluatesarboxshadeboxshade_%dsp_evaluate0SP Score: %.2flat_evaluate LAT_SCORE: %.2fadd_scaleRNAfold_cmpaln2alifoldadd_alifoldalifold2analyzealn2conservationaln2consseq2filteraln2resindexkeep_nameuse_consensususe_consungaprmgaprm_gaprmgap_collandscapeclean_maln [You Need an evaluation File: Change the output format][FATAL:%s] extractreorder_columntreereorderscramblecat_alnmsalist2cat_pwaln>A process %sxxx%s >B collapse_treecollapse_alnextract_alnremove_aa WARNING: rm_aa, position (pos) and iteration number (n) simulatneously defined. Iteration number reset to 1 [%s] remove_nucRemove_nuc: indicate a number between 1 and 3 conserved_positionsCOL: %d Res: %c %s %d extract_blockextract_pos_listseq2msarealign_blockextract_seqextract_seq_listremove_seqrm_seqemptyWARNING: Sequence %s does not contain any residue: automatically removed from the set [WARNING:%s] uniquealn2overalnoveraln_paramexon_boundariesaln2unalign lower|number|unalign|uanlign2 F P1 P2 P3 T overaln_targetoveraln_thresholdunalign_groupsaln2unalignclean_cdnaclean_cdna2aln2short_alncomplementtranslateback_translatebacktranslaterotateinverttest_dna2genecode_dna_alnmutatethread_profile_on_msathread_dna_on_prot_alnthread_struc_on_alnsim_filterseq2blasttrimtrimTCtrimTC2NSEQ TrimTC2 () chainmaster_trimforce_aln ERROR: force_aln requires files in TC_LIB_FORMAT_02 [FATAL:%s] FORCE: %s %s %s %swrong sequence indexgrepfindmerge_annotationcolor_residue WARNING: Could not find Sequence %sedit_residue%s %d %s clean_flagaln2caseconvertkeepswitchcasegap-[]count_pairs %c %c %dcount_misccountmsa_weight Error: msa_weight requires a weight_methodMETHOD_4_MSA_WEIGHTSpetra_weight%d.aln%d.ph%d.dst%d.weight >>/dev/null 2>&1clustalw -infile=%s -tree -outputtree=dist %s%s -method %s -aln %s -tree %s -dmatrix %s -weightfile %s %spavie_seq2random_seqpavie_seq2noisy_seqpavie_seq2pavie_matpavie_seq2pavie_alnpavie_seq2pavie_dm_MATDIST_pavie_seq2pavie_msapavie_seq2pavie_treepavie_seq2pavie_sortaln2mat_diaaaln2matseq2latmatrm_target_pdbmat2cmp MATRIX COMPARISON: R=%.3f R2=%.3f On %d pairs of values overaln_listF P1 P2 P3 T_case_l_ %d: sn: %.2f sp: %.2f re: %.2f F: %d P: %d P2: %d T: %d TOT: sn: %.2f sp: %.2f re: %.2f F: %d P: %d P2: %d T: %doveraln_list_scanSCAN Results will be ouput in %s TOT: sn: %.2f sp: %.2f re: %.2f P: %d P2: %d P3: %d T: %d F: %dunalign ERROR: unknown overal_mode in overal output [%s] [FATAL:%s]overaln_P2overaln_P4case_l_sn %.2f sp %.2f re %.2f aln2hitMat WARNING: ACTION %s UNKNOWN and IGNORED SCORE=%d %s: %d SAGA FORMAT alignement %s nseq=%d len=%d SAGA FORMAT alignement %s nseq=%d len=%d MSF: %d Type P Check: 5083 .. Name: %s PileUp MSF:%5d Type: Check:%6ld .. Name: %s oo Len:%5d Check:%6ld Weight: %.3f // expanded_aln2lib %5d %5d %5d scorehtml [You Need an evaluation File: Change the output format or use +evaluate][FATAL:%s] _ps_pdf_ascii_seqsec_html_E_html You must provide a TM template file [FATAL:%s]tm_html_T_htmlcolor_exoset You must provide an obj file via the -struc_in flag [FATAL:%s]color_protogenecolor_htmltc_alntcoffeeanalyse_pdblower0lower1lower2lower3lower4lower5lower6lower7lower8lower9align_pdbmalign_pdbrepeatfilter0filter1filter2filter3phylip_alnphymocca_alnsaga_pw_sd_weightsclustal_tcmsaclustalw_alnlalign_alnlalignglalign_alnglalign ERROR: unknown overaln_mode in overaln output [%s] [FATAL:%s]clean_est_fasta_seqmsfrnaligntblastx_db1tblastx_dbtblastx_db3tblastx_db2gotoh_seqfasta_seq1pirpir_seq1pw_lib_saga_alnpdb_constraint_listconstraint_listasciicache_idcompress_alnn_seqnseqtdna_fasta_seq1exonswexonstexonssexonstdna_alncdna_fasta_seq1mutate_cdna_alntdna_sp_alnrna_graph_fastafreq_matmaln_pvalmodel_alnmultconservationnrlncode_name %s C%dseq2strucATOM%7d CA %s A%4d%12.3f%8.3f%8.3f 1.00 5.30 extract_from_pdb -infile %s -force > %spavie_age_channel%s_pavie_age_matrix.mat_list%s_age_channel.fasta%s_age_mat_mod%d.matMAT_LISTAGE_MAT_LISTFASTAAGE_SEQ Modulo:%d yearsage_matrixtransitionsstatisticsbinarysarsimpair_sim -output=pair_sim: provide aln1 via -in and aln2 via -in2 [FATAL:%s] blast_matrix %s is an UNKNOWN OUTPUT FORMAT [FATAL:%s] h-h-help-man %s (%s,%s,%s [%s]) *********** MINIMUM SYNTAX ***************** seq_reformat -in -output Some File formats are automatically recognised See Format section *********** MAIN FLAGS ****************** -in name........Name of the file read -input format......Name of the format read, see Input Format Section ...................Automatic detection, except for seqs of numbers ...................-input number_aln | number_fasta -in2 fname......Second alignment -input2 format.....See -input -exon_boundaries obj file -out fname......Output file (defualt is STDOUT -output format.....Output Format, default is fasta_aln -struc_in name...File containing a coded aln -struc_in_f format.See -input and output format section -struc_out fname..Name of the output structure -struc_out_f symbol -keep_case=on|off..keep case, On by default -action +ac1 +ac2..See the action section -rename .....Rename the sequences following indications ...................File Format: One couple /line ...................Rename order into ...................code file: -output code_name -code Rename file to -decode Rename file to -no_warning........Suppresses all warnings -cache.............use,ignore,update,local, DirectoryName *********** REFORMAT ACTIONS ***************** +Xaction.............Specifies which file undergoes the action +Xaction.............X=1: -in +Xaction.............X=2: -in2 +Xaction.............X=3: -struc_in +name2unique_name....replace duplicated name with name_# +swap_header........,swapp comments: replace comments/name in 1 by in 2 +swap_lib_header.F...Replace the sequences in the tc_lib (-in) with those in F .....................F is a legal FASTA file +translate[0-2]......Translate on Frame 0, 1, 2 +translate[3]........longuest ORF on direct strand +translate[4]........longuest ORF on direct+complementary strand +add_scale...addscale below aln +rm_gap n ...........Removes col with n%% gap [n=100] +rmgap_col SEQ1:SEQ2.Removes column with a gap in SEQ [#] +backtranslate.......Random Backtranslation +complement..........Produces the reverse complement +reorder.............Reorders sequences of according to .........random......Random_order .........tree........Tree Order (in2) +reorder_columns.....Reorders sequences of according to .........tree..mode..Tree Order (comuted with mode: sarmat, idmat, blosum62mt... +aln2random_aln SCR..Randomize the aln, S: swap sequences names .....................Swap residues within colums .....................Swap residues across the aln +aln2sample......N...... +aln2bootstrap...N...... +chain...............Identifies all the intermediate sequences from <-in> .....................needed to join every sequence pair in <-in2> +aln2cons mat_name..Ouputs a consensus sequence .....................The consensus is determined using mat .....................By Default, mat=blosum62mt, name=Cons +aln2resindex........Prints the sequence index of each residue in -in for each -in2 sequence +collapse_aln | file name .....................Replaces a group of sequences with its consensus .....................The replacement sequence is named .....................List of sequences can be provided via a file .....................File:>new_name seq1 seq2 seq3.... +original_seqnos.....Keep original seqnos [SWITCH] +seqnos..............Print Seqnos [SWITCH] +code_dna_aln........Undocumented +grep..[NAME|SEQ|COMMENT]..[KEEP|REMOVE]..[string]...... .....................Keeps or Removes Sequences matching string +extract_block | | .....................Extract column pos OR [start to end[ ..................... Format .......................seq start end | seq pos .......................# for comments .......................! seq offset_value (0 by default) .....................Can extract as many positions as needed .....................seq=cons: measure positions on the full aln +cat_aln.............Concatenates the alignments input via -in and -in2 +cat_aln.............-if no -in2, -in is expected to be a list of alignments to concatenate +msalist2cat_pwaln.min..max .....................extract all pw projections and conctaenates those .....................where id>=min and id<=max .....................min and max can be omitted (min=0, max=100) +seq2blast ..gather all possible homologues from NR (EBI BLAST) +seq2msa ....makes a standard progressive alignment using matrix +realign_block .....................Realign column c1 to c2 (non inc.) with pg) .....................pg reads fasta and outputs fasta .....................pg -infile= -outfile= +extract_seq seq_name (start end seq_name start end...) | filename .....................seq_name='*': every seq .....................start='*' : real start .....................end='*' : real end .....................filename: fasta format +extract_seq_list name1 name2 .....................Extracts entire sequences +remove_seq sn1 sn2..Removes sequences sn1, sn2... +remove_seq empty....Removes empty sequences (gap only) +remove_seq unique...Remove all multiple occurences except the first +thread_profile_on_msa .....................Threads a list of profiles on corresponding seq .....................File: >seqname _R_ [nlines] +thread_dna_on_prot_aln .....................-in DNA.seq and -in2 AA.aln +thread_struc_on_aln .....................-in structure and -in2 aln +use_cons............Use the consensus for n[SWITCH] +upper.n|[n1-n2].....n omitted sets everything to upper case .....................To use n: provide a number_aln via: .....................-struc_in -struc_in_f number_aln .....................if use_cons is set n, is read on the cons .....................n: will upper every residue with a value of n in struc_in .....................[n1-n2]: upper residues between n1 and n2 +lower n|[n1-n2]....See +upper +switchcase n|[n1-n2]See +upper +color_residue | file .....................File: seq_name pos color .....................color: 0-9 +edit_residue | file .....................edit: upper|lower|symbol +keep n|[n1-n2]....Only keep residues that have a score between n1 and n2 +invert..............Inverts the sequences: CAT => TAC +rotate name Rotate an MSA, names each sequence name_col# +convert n|[n1-n2] s1 s2 .... +merge_annotation.... .....................Converts residues with your alignment .....................similar to upper .....................s1: ABCDe turns every ABCD into e .....................s1: #e turns any residue into e aln2short_aln L C S..Turns sequences into shorter sequences .....................L: list of residues to keep .....................S: Size of Streches replaced by symbol C +random n l..........Generates N random sequences of len l .....................You must provide a file with -in +count n|[n1-n2] s1 s2.... .....................Counts residues with your alignment .....................similar to convert +print_format........prints the format name +keep_name...........Keep the original sequence name on extraction +remove_aa pos Ml Ncycle Random_len .....................Randomly modifies an alignment .....................pos=0: chosen randomly .....................MaxLen of the deletions, Ncycle: number of cycles .....................Random_len: 0 sets the len to maxlen, 1 to a random value +remove_nuc.x........Remove Position 1, 2 or 3 of every codon +evaluate matrix..gop..gep .....................Make a similarity evaluation with matrix .....................use -output=score_ascii, or score_html. .....................You can filter on the values .....................Make an SP evaluation with matrix .....................Uses Natural Gap penalties .....................gop and gep must be negative .....................use -output=color_ascii, color_html to get a color display .....+evaluate_lat........Make a lateral evaluation with matrix +msa_weight proc.....Computes weights using the procedure RNA analysis Post Processing___________________________________________________ +aln2alifold.........Turns the MSA into a consensus structure +add_alifold.........adds an alifold consensus structure +alifold2analyze.mode..mode=stat_cache_list_aln_color_html_ps_usegap .......................stat: compile Number of compensated mutations .......................cache: ascii-code compensated mutations on aln .......................html: color-code compensated mutations on aln .......................aln: mark compensated mutations on stockholm aln .......................usegap: do not ignore positions with gaps +RNAfold_cmp.........compares the sec struc of in1 and in2 (computes them with alifold if missing) MSA Post Processing___________________________________________________ +force_aln filename|seq1 res1 seq2 res2 .....................Forces residue 1 of seq1 to be aligned with res2 of seq 2 .....................In a file, there must be one pair of interaction/line +sim_filter[_aln_Ix_iy_Cz_cw ....................._, aln is assumed ....................._I max identity to seq ....................._i min identity to seq ....................._C max cov on seq ....................._c min cov on seq +trim[_aln_%%%%50_n111_N50_T_Fn_fS_pS_max_sim] [string2] ....................._, aln is assumed ....................._%%%% ....................._max Or _min ....................._cov Or _sim Filter according to the coverage [Def: _sim] ....................._n ....................._N ....................._T Reorder the sequences according to a tree BEFORE triming ....................._Fn Keep only sequences that have AT LEAST ONE residue aligned ......................in the n first and n last columns. ....................._O Remove outlayers that have less than min average sim with other sequences .....................Keeping Sequences: Sequences provided via -in2 will be kept .....................Keeping Sequences: Sequences whose name contains in field fS will be kept ....................._f designates a field ..................... is a Perl regular expression +aln2unalign Mode Penalty Threshold .....................Identifies all the streches less conserved than than the average .....................Mode: lower|number|unalign Act on all the resiues withs score with tree <-in2>) ......................+tree_scan help to get P1 information ......................+aln2tree help to get P2 information +treelist2groups.N....count all topologies within a list of trees .....................-in is in fasta format with each name being a newick file .....................-in2 can be a list of sequences used to trim the trees ......................N can be used to unresolve the trees with Depth N +treelist2lti.N.C.....Reports the average stability of each sequence neighborhood ......................Species can be selected via -in2 [Fasta file with Taxon names] ......................OR the sequences observed in C% of the files are kept [Def: C=100] +treelist2seq.C.......Reports the species observed in C% of the trees +treelist2splits......List and counts all the splits in a list of trees ......................splits can be restricted to a list of sequences provided via -in2 +treelist2dmat.......outputs a distance matrix for a list of trees +tree_compute n s....Computes a tree using the MSA provided with -in ....................n:0-9, controls the way the MSA is filtered ....................s:pam250mt|blosum62mt|categories|enthropy ....................s:controls the column evaluation in MSA +change_distances.f.f:float, sets all the distances to f in the tree +change_bootstrap n..:n=0 removes all the bootstrap values .....................:n!=0 adds a the value n to every node +tree2dpatree........Replaces tree distances with the minimum %%ID in .....................the depending subgroup. The ID is measured on an .....................-in=TREE -in2=ALN +unroot..............Removes the root in the input tree +tree2group.N.I.P....Reports all the tree subgroup with at most Nseq .....................and at min I%% identity. Output format can be read by .....................collapse_tree. New groups are named P_1, P_2... +collapse_tree.F.....Collapses trees. F is either a file or a list ..................... ... +aln2tree............Computes a tree ..ktupN|aln|sarmat ktupN: match size N to estimate distances .....................aln: Measures distances on aln .....................sarmat: expects in to be a SAR matrix of O and I ..nj | cw............Runs Neighbor Joining OR Cw to compute Tree ..dpa................Turns the tree into a daptree (+tree2dpatree) +node_sort.....Sort leafs of tree n1, by node distance Matrix Analysis___________________________________________________ +aln2mat_diaa........computes a dinucleotide matrix on a list of aln +aln2mat.............computes a log odd matrix +seq2lat_mat.........computes a transition matrix on seq provided via -in Structure Analysis___________________________________________________ +struc2contacts.A.B D.Displays in capitals all the residues of A ......................Less than D Angs from a residue of B ......................A and B are pdb file, D is a distance in Angs +seq2contacts.A.D.....Identifies all the residues in contact with ligands ......................Ligands are in the FASTA header of struc in ......................>Name _S_ [Target Struc] [Ligand1] [Chain] ... ......................Output: number_fasta: 0=no contact, 1=ligand 1... ......................9: residues in contact with more than 1 ligand ......................Use -output=color_html/ascii to display result +struc2nb...D.........Display a list of all the residues D appart +rm_template...V......Removes _[S|G|R]_[template] to sequence names ......................V: omitted | sequences <=> Output sequences ......................V: template <=> Output templates +add_template.F.......Add _[S|G|R]_[template] to sequence names ......................F can either be a fasta file or an executable ......................F: File: >name _S_ template ......................F: executable: pg -infile= -outfile= Matrix Comparison___________________________________________________ +mat2cmp...............Returns the correlation coefficient between two matrices .......................-in mat1 -input matrix, -in2 mat2 -input2 matrix *********** INPUT FORMATS: Alignments ***************** AUTOMATIC RECOGNITION perl_xxx:............. runs xxx onto the input file xxxx > outfile..xxx reads any formats, outputs fasta amps_aln saga_aln clustal_aln fasta_aln msf_aln dali_aln gotoh_aln pima_aln dialign_aln matrix conc_aln NON AUTOMATIC RECOGNITION (use the -input file to specify the format number_aln newick_tree *********** INPUT FORMATS: Sequences ***************** fasta_seq dali_seq pir_seq barton_list_tc amps_sd_scores EST_fasta gor_seq gor_struc number_fasta[*] swissprot tc_lib pdb_struc *********** INPUT FORMATS: Structures ***************** rna_number alifold *********** OUTPUT FORMATS: Alignments ****************** compressed_aln saga_aln clustal_aln phylip_aln msf_aln fasta_aln pir_aln color_html,color_ps......colored using the struc_in file color_protogene..........colors codons color_exoset.............mixes conservation (gray) and introns (RGB) color_pdf pw_lib_saga_aln tdna_aln thread_dna_on_prot_aln *********** OUTPUT FORMATS: sequence ****************** fasta_seq fasta_seq1 gotoh_seq gor_seq cache_id tblastx_db1 tblastx_db2 tblastx_db3 *********** OUTPUT FORMATS: weights ****************** constraints saga_pw_sd_weights nseq *********** OUTPUT Formats: special **************** len name statistics<_hnrglNL> sim............outputs a similarity matrix based on an id comparison of -in sim_sarmat.....in is sar matrix sim_idscore....makes dp alignment of the sequences using Blosum62mt sim_idscoreDNA.makes dp alignment of the sequences using idmat sim............if -in2 is set: in1 vs in2, idscore code_name......Outputs a compact list of names for code/decode-in_f-input WARNING: %s deprecated, use -input instead-cache-overaln_target-overaln_P2-overaln_P4-in2_f-input2 WARNING: %s deprecated, use -input2 instead-seqnos-action-keep_caseonOn-convset-struc_in_f-input3-out_f-output WARNING: %s deprecated, use -output instead-struc_out_f-output_struc-in-rename-code-decode-in2-coor-out-out2-struc_in-in3-struc_out-rm_gap-print_format-no_warning UNKNOWN OPTION: %shasch FILE:%s FORMAT:%s FORMAT of file %s Not Supported[FATAL:%s] FORMAT of file %s Not Supported [FATAL:%s] STRUC %s UNKNOWN[FATAL] WARNING: Action %s Unknown. Actions start with a + ..%-10s %-10s%s%5.1f%s%5.1f %c%5.1f%c%s%c%5d%c AL1: %s AL2: %s ST %d: %s [%s]/[] ******INPUT*************************** -al1 al1_file -al2 al2_file -compare_mode [sp] or column -pep (compare only the sequences -count -pep1 pep1_file -pep1 pep2_file -st str_file st_format conversion **st_format: aln, pep **conversion: 3d_ali, conv abcZ #X NOTE: Several structures in a row are possible ****DISTANCE MEASURE***************** -sim_cat category_format or category_name **category_format: [*][*]=[tot] **category_name : 3d_ali (<=>[h][h]+[e][e]=[Struc] -sim_matrix matrix_name **matrix_name: idmat,pam250mt.. -sim_aln al1 or al2 ****COMPARISON*********************** -io_cat category_format or category_name **category_format: [*][*]=[tot] **category_name : 3d_ali(<=>[h][h]+[e][e]=[Struc];[*][*]=[Tot] NOTE: if two structures: [he.123][#]=[he123VShe123];[beh.*][he.2345]=[other] ****OUTPUT**************************** -f stdout stderr file_name -io_format hts H ->large Header h ->small Header t->global (average)results s ->average results for each sequence p ->results for each pair of sequences -output_aln Outputs al1 with conserved bits in Upper -output_aln_threshold [100] -output_aln_file [stdout] -output_aln_format [clustalw] -output_aln_modif [lower]pep[]+*. A Structure is Missing[FATAL]Simseq2seq1%-10s %-10s %s%-3s%s%-12s%s Tot%-5s%-13s %-7d%s?-f-sim_aln-sim_matrix-compare_mode-sim_cat %s: Unknown category for distance measure-grep_value-al1-al2-pep1-pep2-pep-count-output_aln-output_aln_threshold-output_aln_file-output_aln_format-output_aln_modif-stconv-sep-io_cat OPTION %s UNKNOWN[FATAL] ERROR: %s DOES NOT EXIST[FATAL:%s] A%sNumber of seq: %d %d %-15s %d %d DIFFERENCE TYPE 1: Different number of sequences %3d/%3dDIFFERENCE TYPE 2: %s is different in the 2 files DIFFERENCE TYPE 3: %s has != length in the 2 files (%d-%d) DIFFERENCES found between: %s %s ********** spcolumnal1abcdefghiklmnpqrstvwxyzABCDEFGHIKLMNPQRSTVWXYZ %2dALN_SCORE %d SEQ_SCORE %*.*s %3d %6.2f showpage %%%%Pages: %d %%%%EOF%%%% %%!PS-Adobe-2.0 /Courier findfont %d scalefont setfont %%%%Pages: (atend) newpath %%%%Page: %d %d %d %d translate %d %d moveto 0 %d rlineto %d 0 rlineto 0 -%d rlineto closepath %3.1f %3.1f %3.1f setrgbcolor fill %3.1f %3.1f %3.1f setrgbcolor %d %d moveto (%c) show %c%cPage: %d %d %*d class=%s%s%s
Fri Mar 26 20:08:02 CET 2010%s, %s(%s) %s CPU TIME:%d sec. %sSCORE=%d * * %-*.*s : %3d ERROR: Incompatible cache ON sEQ: %s %s %s %s %s %s, %s(%s) %s IN HEL OUT seq_reformat.color%s %f %f %fvalue%dpamPAMblosumBLOSUMidpam250mtmd_350mtmd_250mtmd_120mtmd_40mtpam350mtpam160mtpam120mtblosum80mtexon2mtblosum62mt3blosum62mt2blosum55mtblosum50mtblosum45mtblosum40mtblosum30mtbeta_matalpha_matcoil_matrblosum80mtrblosum62mtrblosum30mtrpam250mtrpam350mtrpam160mtrpam120mttmpam250mtrtmpam250mtrbeta_matralpha_matrcoil_matjtttm250mttdamat%d,EXONVALUE_4_TCOFFEEexon_mt Error: Unknowm Format %s for Matrix %s[FATAL]Error: sequence type unset in io_func.c:set_seq_typeError: unknown mode in function io_func.c:set_seq_type, use SET, GET or UNSETError: programme mode unset in io_func.c:set_seq_type ps2pdf%s %s %sABCDEFGHIKLMNPQRSTVWXYZPILEUP/SQSequence %s truncated to %d residuesSequence too long. Maximum is %dMultiple sequences found with same name (first %d chars are significant)ABCDEFGHIKLMNPQRSTUVWXYZ-ACGTUN%s: %s (%d..%d) [%d]: ERROR: Max. value=%d ERROR: Min. value=%d %s (%.1lf-%.1lf) [%.1lf]: ERROR: Max. value=%.1lf ERROR: Min. value=%.1lf ;,(): WARNING: ERROR: FATAL ERROR: Out of memory Enter system command Node %d: has parents) Node %d: NO parents) Node %d has Right Child Node %d No Right Node %d has Left Child Node %d No Left Node %d has Bot Child Node %d No Bot Node %d is %swww.phylip.comconsense%s Y outtreemv outtree %soutfilemv outfile %sconsense <%s > /dev/null 2>/dev/nullmv %s outtreemv %s outfileCHECK %sERROR: Empty Group %10s N %10s D :%.4f Go Left Go Right Go Bot EMPTY %s Going Right Going Left %2d (%s,%s);((%s,%s),%s);%s, %s),%s),%s,%s); %s:%.5f:%.5f; >%s_%d tree2ngroup ERROR: Sequence %s is in the Tree but Not in the Sequence dataset [code_lseq][FATAL:%s]#%s %s N: %d Lower: %d Sim: %d DELTA: %d %s -->%d --> #Could Not Find any Intermediate sequence [MAx chain %d MinID %d EOFDEBUG_TREE [DEBUG_TREE:tree_file2nseq]%st_coffee -other_pg seq_reformat -in %s -action +rm_gap %d -output clustalw > %scategoriest_coffee -other_pg seq_reformat -in %s -action +evaluate %s -output clustalw > %st_coffee -other_pg seq_reformat -in %s -struc_in %s -struc_in_f number_aln -action +use_cons +keep '[%d-8]' +rm_gap -output clustalw > %s > NumberSplit %5d SplitSize %5d Score %5.2f %s %s %sprune pb ---%s AVERAGE BOOTSRAP: %.3f on %d Branches DEBUG_TREE_COMPARE [1][%d][-1][0] NODE NODE_CLASH: COG %s (%s,%s):();( TOT_CLASH COG %s N %dERROR: %s is not in the tree [FATAL:%s] >%s %d %d Sequence %s is duplicated %d Times in the tree %5d cp %s split_filecat %s | grep 1| sort > %sLEGEND: <#occurences> <(group1,)> <(group2,> SEQ_INDEX %d %s SPLIT_COUNT %3d %s (),() _NB__TLIST__ORDER_ READ TREE LIST [%d Trees.....]First Tree Trees Ordered according to: %s #ORDER %15s : %3d SPLIT: %d and its Neighborhood +/^- %d groupgroup2 %d ) +/- () + %d - %d Delta %dcat %s | grep %s| sort > %s%s %s %s %s %6.2f %s LIST: %s LIST %s %d %-10s %.4f %s.phclustalw -infile=%s -tree -newtree=%s %s mv %s %s +aln2tree| _MATRIX_ : matrix used for the comparison (idmat, sarmat, pam250mt..) +aln2tree| _SCORE_ : score mode used for the distance (sim, raw) +aln2tree| _COMPARE_: comparison mode (aln, ktup, align, nordisaln) +aln2tree| _TMODE_ : tree mode (nj, upgma) _SCORE__COMPARE_nj_TMODE_nordisaln_STD__CENTER_cwdpanorhit+aln2tree _COMPARE_nordisaln__STD_%d__CENTER_%d_Limit:%d Gap: %d Columns: %4d Left: %4d Right %4d BL:%4.2f Computation of an NJ tree using conserved positions fj Compute Phylogenetic tree [Matrix=%s] Compute dpa tree #TrimTC: Split in %d Groups at a minimum of %d%% ID DONE2 First Tree Contains Duplicated Sequences [main_compare_trees][FATAL:%s] Second Tree Contains Duplicated Sequences [main_compare_trees]2 %4d %4d ERROR: Your two do not have enough common leaf to be compared [FATAL:PROGRAM]Tree Cmp #tree_cmp|T: %.f W: %.2f L: %.2f RF: %d N: %d S: %d #tree_cmp_def|T: ratio of identical nodes #tree_cmp_def|W: ratio of identical nodes weighted with the min Nseq below node #tree_cmp_def|L: average branch length similarity #tree_cmp_def|RF: Robinson and Foulds #tree_cmp_def|N: number of Nodes in T1 [unrooted] #tree_cmp_def|S: number of Sequences in T1 ERROR: %s is an unknown tree format [FATAL:%s] msa2bootstrap.pl -i %s -o %s -input tree >/dev/null 2>/dev/null NSPECIES: %d >%-20s %-20s LTI: %7.3f [Kept %d Trees Out of %d] [DEBUG_TREE:create_tree] Unrooted Tree Name is too long%f:%fError: Wrong format in tree file %s Error: tree not compatible with alignment (%d sequences in alignment and %d in tree Error: input tree is unrooted and has no distances, cannot align sequences ERROR: Sequence %s in the tree [%s] is not in the alignment[FATAL:%s] ERROR: Sequence %s in the sequences is not in the tree [%s][FATAL:%s] >%s >%s LIMIT: %d %% .score_csv.ts_html.hit_matrix.hit_html.trees_txt +tree_scan| _W_ : Window size for the tree computation|STD size in norscan mode +tree_scan| _MODE_ : Mode for the number of windows (single, double, list, scan, pairscan, norscan, hit, norhit) +tree_scan| _MINW_ : Minimum Window size when using the scan mode (4) +tree_scan| _OUTTREE_ : specify the format of outputing tree in every position (default: not ouput)_W__MODE__MINW__POSFILE_wobleP: %*d I: %*d %*d SIM: %6.2f P: %*d I: %*d %*d SIM: %6.2f L: %2d hitPosition,Win_Beg,Win_End,Similarity,Win_Len %*d,%*d,%*d,%6.2f,%2d a+norscanPosition,Similarity,STD_Len %*d,%6.2f,%d [STRAT] Calculate the hit matrix of the tree scan %d, [END]Calculate the hit matrix of the tree scan pairscanP1: %*d I1: %*d %*d P2: %*d I2: %*d %*d SIM: %6.2f L: %2d multiplescanScan %d Possibilities[%3d %3d %3d] SCORE: %.2f Tree %s:__ N=%d >%-15s %4d %6.2f TOPOLOGY_LIST Total Number of different topologies: %d Score=%d%s => %d [%d] >Tree_%d [%d %%] freeing free block ERROR: NOT a GAP GRAPH Check %s #%d SEq pb Free Node read ERROR: lost residues ERROR: left != right: [%d %d][%d %d] ERROR: parent != child: [%d %d][%d %d] Cycle %d LIGHT NODE: %s A: seq %d res %d B: seq %d res %d C: seq %d res %d Completion: [%5.2f%%] WARNING: -clean_aln is not supported anymore [PROGRAM:%s] Substitution %sDeletion %sInsertion %sanalyseL=0 i=%d j=%d*********** %dFILTER: %d->%d [THR=%d]dONE Title %s %3d sim2Add %d diagonals, starts %d N=%d S=%dAddition Finished n=%d N=%d r=%.3f [l1=%d l2=%d]***********First: %didmat_simLIB_SIZE_OLD: %dERROR in subop_pair Forward: %d BackWard: %d ERROR 2 SEQUENCES ONLY [FATAL:%s ERROR: function make_fasta_cdna_pair_wise can only handle two sequences at a time [FATAL:%s]agpstdenqfwyhkrilmv%s%s Heap size: %d, Free Heap: %d ERROR: improper use of the function precomputed pairwise:[FATAL:%s]DEBUG_TCOFFEE Ndiag=%d%% CDNAB make_fasta_gotoh_pair_wise_sw not implemented yet fasta_gotoh_pair_wise_sw not implemented yet cfasta_gotoh_pair_wise_sw not implemented yet %s_%d_1%s_%d_%dERROR in function: sw_pair_is_defined Start=%d Len=%d Start=%d %d START=%d LEN=%3d SCORE=%5d [%d] %d %d=>%d (%d, %d)[%d] **************************************************************Version_8.38 ******************** MOCCA: %s *********** MENU: Type Flag[number] and Return: ex |10 |x -->Set the START to x 100 start=100 on concatenated sequences human:100 start=100 on human sequence >x -->Set the LEN to x Gx -->Set the Gap Opening Penalty to x Cx -->Set the sCale to x Sname -->Save the Alignment Fformat -->Save the Alignment Format return -->Compute the Alignment X -->eXit ERROR: %s NOT in Sequence Setdefault.domain_aln.%d Output file [%15s] in [%10s] format WARNING: THRESHOLD RESET to 0 ERROR: ILLEGAL COORDINATES! SEQUENCE BOUNDARY CROSSED %15s=> Abs:[%d %d] Rel:[0 %d] Enter the following parameters: START value: |x [Return] LENgth value: >y [Return] type [Return] START is measured on the total length of the concatenated sequences x and y are positive integers NO MATCH FOUND: LOWER THE SCALE (C) [ITERATION %3d][START=%s][LEN=%3d][GOPP=%3d][SCALE=%4d] Your Choice: Qq[%.2f] [%s] is an unknown mode for dp_mode[FATAL] ERROR pw_parameters_set must be set in pair_wise [FATAL] >%s %s PROGRESSIVE_ALIGNMENT [Tree Based] PAIRWISE_ALIGNMENT [No Tree] Tree Pb [FATAL:%s] ********* USE EXTERNAL ALIGNER: START: COMMAND: %s -lib %s -seq %s -usetree %s -outfile %s %s -lib %s -seq %s -usetree %s -outfile %s ********* USE EXTERNAL ALIGNER: END [Computation of an Approximate MSA...t_coffee -infile=%s -special_mode quickaln -outfile=%s %s -outorder=input [%d]->[%d][%s %s %d] %s %didmat_sim2clustalw -infile=%s -outorder=input -outfile=%s %st_coffee -seq %s -msa_mode groups -outfile=%s -maxnseq=0 -in Xblosum62mt -dp_mode gotoh_pair_wise_lgp -dpa_maxnseq=%dt_coffee -seq %s -msa_mode groups -outfile=%s -quiet=xxtest -in Xblosum62mt -distance_matrix_mode ktup -dpa_maxnseq=%d -maxnseq=0Attempt to switch to DPA failed: Could not run %s [FATAL:%s] R%s SEQ: %d %d SCORE=%d Iterated Refinement: %d cycles START: score= %d Iteration Cycle: %d Score=%d Improvement= %d Iterated Refinement: Completed Improvement=%d [%30s]->[len=%5d] ERROR: No CL->tree_mode specified (make_tree::util_dp_drivers.c [FATAL:%s] MAKE GUIDE TREE [MODE=%s][---Two Sequences Only: Make Dummy Pair-Tree ---](%s:0.1, %s:0.1):0.1; cwphorderERROR: %s is an unknown tree computation mode [FATAL:%s] ERROR: fast_pw_aln can only handle two seq at a time [FATAL] G ERROR: rna_pair requires a structural alignment method: rna_pair@EP@EXECUTABLE2@ [FATAL:%s] extract_from_pdb -infile %s -atom ALL -chain FIRST -nodiagnostic > %stc_generic_method.pl -mode=rna_pair -method=%s %s%s %s%s %s%s -tmpdir=%s rna_pair/%s failed: %s sim>%s %s tc_generic_method.pl -mode=thread_pair -method=%s %s%s %s%s %s%s -tmpdir=%s thread_pair/%s failed: %s ERROR: thread_pair requires a threading method: pdb_pair@EP@EXECUTABLE2@ [FATAL:%s] ERROR: pdb_pair requires a structural alignment method: pdb_pair@EP@EXECUTABLE2@ [FATAL:%s] tc_generic_method.pl -mode=pdb_pair -method=%s %s%s %s%s %s%s -tmpdir=%s pdb_pair/%s failed: %s t_coffee -other_pg tc_generic_method.pl -mode=seq_msa -method=%s %s%s %s%s -tmpdir=%s seq_msa/%s failed: %s %s_%s.sap_results%s %s %s >%s 2>/dev/nullWARNING: SAP failed to align: %s against %s [%s:WARNING] super.pdbPercenteighted!alnumOW%d2 #1 2 %d %d %d 1 0 ! CPU 0 %s_%s.lsqman_alnlsqman%s -pdb %s -pep %s > %s%s lsqman failed: will be retried %s Could not run Fugue: will replace it with slow_pair ALIGN_4_TCOFFEEALIGN_PDB_4_TCOFFEE%s -in P%s P%s -gapopen=-40 -max_delta=2.5 -gapext=0 -scale=0 -hasch_mode=hasch_ca_trace_bubble -maximum_distance=10 -output pdb_constraint_list -outfile stdout> %s%sclustalw %sinfile=%s %soutfile=%s %st_coffee -seq %s -very_fast -outfile %s -quiet ERROR: pdbid_pair requires a structural alignment method: pdb_pair@EP@EXECUTABLE2@ [FATAL:%s] tc_generic_method.pl -mode=pdbid_pair -method=%s %s%s %s%s %s%s -email=%s -cache=%s -tmpdir=%s ERROR: profile_pair requires a method: thread_pair@EP@executable2@ [FATAL:%s] >prf_seq1_%d %s >prf_seq2_%d %s tc_generic_method.pl -mode=profile_pair -method=%s %s%s %s%s %s%s -param=%s -tmpdir=%s profile_pair/%s failed: %s %s%s_%s.%s.align_pdb%s -infile=%s -outfile=%s %sprrp -E/dev/null -o%s -F9 %s >/dev/nulldefaultdna_idmatfast_pairifast_pairdiag_fast_pairidiag_fast_pairblast_pairlalign_blast_pairviterbi_pairglocal_pairtest_pairsticky_pairislow_pairsubop1_pairbiphasic_pairdiaa_slow_pairr_slow_pairtm_slow_pairmonoaa_slow_pairsubop2_pairexon2_pairexon3_pairexon_pairlalign_len_pairlalign_id_pairtm_lalign_id_paircdna_cfast_paircdna_fast_pairDEBUG_TCOFFEE_profile2listIN2 %d %dparam->seq_c=%s Profile aln %s %s %s [(%d,%d):%d %%id] =>%d pairs NPairs=%dBEF FREE SCL2 CL->ne=%dOUTfullktup_msaprrp_alnbest_pair4protbest_pair4rna%s_subset_objOBJ-seq_msaprofile_pairhh_pairthread_pairpdb_pairrna_pairpdbid_pairfugue_pairlsqman_pairalign_pdb_pairgotoh_pair_wiselalign_pdb_pairsim_pair_wise_lalignalign_pdb_pair_2 ERROR: THE FUNCTION %s DOES NOT EXIST [FATAL:%s] ERROR: Protein Sequences Only with bestprot_pair [FATAL:%s] ERROR: best_pair can only handle two seq at a time [FATAL] %-*s %-*s: Direct Sequence Alignment %-*s %-*s: Structure Based Alignment t%-*s %-*s: PSIBLAST Profile Alignment %-*s %-*s: Direct Sequence Alignment (No Profile) ERROR: RNA Sequences Only with best4rna_pair [FATAL:%s] sara_pairshrink[Forked] Group %4d: [Group %4d (%4d seq)] with [Group %4d (%4d seq)]-->[Score=%4d][Len=%5d][PID:%d]%st_coffee -profile %s -outfile=%s -dp_mode gotoh_pair_wise_lgp -msa_mode iterative_tree_aln -quiet ##### DPA ##### Compute Fast Alignment ##### DPA ##### Identify Nodes ##### DPA ##### Split Nodes ##### DPA ##### Save Nodes ##### DPA ##### FinishedERROR: Unresolved Node On Groups %d [FATAL:%s] S-Delayed Group %4d: [Group %4d (%4d seq)] with [Group %4d (%4d seq)]-->idmat_sim1 [Further Delayed] [Score=%4d][Len=%5d][thr=%d] F-Group %4d: [Group %4d (%4d seq)] with [Group %4d (%4d seq)]-->Skipped F-Group %4d: [Group %4d (%4d seq)] with [Group %4d (%4d seq)]-->[Delayed (Sim=%4d). Kept Group %4d][Score=%4d][Len=%5d] Group %4d: [Group %4d (%4d seq)] with [Group %4d (%4d seq)]--> Error: Empty groupt_coffee -profile %s -outfile=%s -dp_mode gotoh_pair_wise_lgp -msa_mode iterative_tree_alnRepeat_%dtest_file TEST OK%.2f %.2f %.2f ERROR: values out of range in aln_column_contains_gap [FATL:%s] _TMODE_upgma-nca-max_delta-maximum_distance-local_mode-scaleswhasch_ca_trace_nbhasch_ca_trace_sap1_bubblehasch_ca_trace_sap2_bubblehasch_ca_trace_transversalhasch_ca_trace_bubble_2hasch_ca_trace_bubble_3custom_pair_score_function1custom_pair_score_function2custom_pair_score_function3custom_pair_score_function4custom_pair_score_function5custom_pair_score_function6custom_pair_score_function7custom_pair_score_function8custom_pair_score_function9custom_pair_score_function10 %s is an unknown hasch mode, [FATAL] RAPDB QUANTILE REMOVE S1: %3d S2: %3d COL: %3d SCORE*100: %d RAPDB QUANTILE KEEP S1: %3d S2: %3d COL: %3d SCORE*100: %d _NIRMSD_GRAPH %s %s POS: %4d Removed: %4d NiRMSD: %.2f # MINIMISATION FILTER ON: NiRMSD minimsation resulted in the removal of %d [out of %d] Columns On the alignment %s Vs %s RAPDB S1: %s S2: %s POS %d %d %c %d %c spherewindowNB %d %d %c %d %c APDB: UNDEFINED APDB: %.2f SEQ1: %s %s SEQ2: %s %s APDB_RESULT_FORMAT_02 _IRMSD_GRAPH %10s %10s ALN: %c%c iRMSD: -1.00 IRMSD_GRAPH %10s %10s ALN: %c%c iRMSD: %.2f #PAIRWISE: %s Vs %s PAIRWISE EVALUATED: %6.2f %% [%s Vs %s] PAIRWISE APDB: %6.2f %% [%s Vs %s] PAIRWISE iRMSD: %6.2f Angs [%s Vs %s] PAIRWISE NiRMSD: %6.2f Angs [%s Vs %s] [%d pos] RAPDB PAIRS PAIRWISE N_NONEMPTY_PAIRS %d N_MAXIMUM_PAIRS %d #AVERAGE For Sequence %s AVERAGE EVALUATED: %6.2f %% [%s] AVERAGE APDB: %6.2f %% [%s] AVERAGE iRMSD: %6.2f Angs [%s] AVERAGE NiRMS: %6.2f Angs [%s]apdb RAPDB PAIRS AVERAGE N_NONEMPTY_PAIRS %d N_MAXIMUM_PAIRS %d #TOTAL for the Full MSA TOTAL EVALUATED: %6.2f %% TOTAL APDB: %6.2f %% TOTAL iRMSD: %6.2f Angs TOTAL NiRMSD: %6.2f Angs RAPDB PAIRS TOTAL N_NONEMPTY_PAIRS: %d N_MAXIMUM_PAIRS %d # EVALUATED: Fraction of Pairwise Columns Evaluated # APDB: Fraction of Correct Columns according to APDB # iRMDS: Average iRMSD over all evaluated columns # NiRMDS: iRMSD*MIN(L1,L2)/Number Evaluated Columns # Main Parameter: -maximum_distance %.2f Angstrom # Undefined values are set to -1 and indicate LOW Alignment Quality # APDB Evaluation: Color Range Blue-[0 %% -- 100 %%]-Red # Sequence Score: APDB # Local Score: APDB # iRMSD Evaluation: # Sequence score: NiRMSD (Angstrom*10) # Local Score: iRMSD, Blue-[%.2f Ang. -- 0.00 Ang.]-Red %s.tot_pos_list%s.consense_output%s.pos_list%s.struc_tree_full%s.struc_tree10%s.struc_tree100%s.struc_tree50%s.struc_tree.html --- ERROR: %s has no structural template. All sequence in the MSA must have a known structure [FATAL] ---- ERROR: All provided sequences must have a valid PDB identifier [FATAL:tRMSD-%s] Remove Sequence [%s] that contains %d un-suitable positions ERROR: No suitable pair of column supporting a tree [FATAL] ---- Number of usable positions: %d [%.2f %%] Gapped=%d >Tree_%d Column newickTreeListphylipConsenseTree Phylip is not installed: the program could not produce the consense output. This is not mandatory but usefulTreescore_htmlColored MSAR_F-parametersNULLRead the files in the parameter file=:;, PROGRAM: %s -io_formathsgd0123456-aln-repeat_seq-repeat_pdbD-n_excluded_nbExclude the N Nb on each side of the central residue. -1 triggers an automatic setting equal to the window size corresponding to the sphere-similarity_threshold70-filter1.00-1.00Filter by only keeping the best quantile-filter_alnLower Case For Residues Filtered Out-irmsd_graphOutputs the irmsd, position/position-nirmsd_graphOutputs the NIRMSD VS N Removed Residues Curve-md_threshold-print_rapdbPrints the neighborhood of each pair of aligned residues, along with the associated local score-run_name-outfile-apdb_outfile-color_modeoffuse,ignore,update,local, directory nameMode for choosing the Neighborhood (bubble or window) When selecting window, maximum distance becomes the window 1/2 size, in residues When using sphere, maximum_distance is the sphere radius in Angstrom-template_file_SELF_P_List of templates file for the sequencesMode: irmsd, -prot_min_sim20Minimum similarity between a sequence and its PDB target-prot_max_sim10090Maximum similarity between a sequence and its BLAST relativesprot_max_sim-prot_min_covMinimum coverage of a sequence by its BLAST relatives-pdb_min_sim35-pdb_max_simMaximum similarity between a sequence and its PDB target-pdb_min_cov2550Minimum coverage of a sequence by its PDB target-pdb_blast_server-blast-blast_serverblast_server-protein_db-gapped ---- ERROR: File %s must be a valid alignment [FATAL:%s-%s] S%s ##Turn a repeat List into a Template File Looking For Sequence Templates: Template Type: [%s] Mode Or File: [%s] [Start_P_%s.apdb_result Your Alignment Does Not Contain Enough Sequences With a known Structure To Use APDB, your alignment must include at least TWO sequences with a known structure. These sequences must be named according to their PDB identifier, followed by the chain index (if any) ex: 1fnkA [FATAL:%s] APDB_RESULT_FORMAT_01APDB_RESULTmsa2tree%s.%sMSA%s %d 100 ! TC_LIB_FORMAT_01 1 %s %d %s #1 1 ! SEQ_1_TO_N CODE UNDEFINEDERROR in dirichlet_code%f %f %f N_C=%d PB: j=%d Warning: CL was not setrna0rna1rna2rna3rna4tripletrelative_tripletg_coffeeg_coffee_quadrupletsfast_triplettest_tripletvery_fast_tripletslow_tripletmixtquadruplettmcurvature ERROR: %s is an unknown extend_mode[FATAL:%s] properties.txt%f %c %*s WARNING: CL->evaluate_residue_pair Not set Set to: extend_residue_pair int []={ %3d, }; Rand=%8.3f %8.3f Id =%8.3f %8.3f Good=%8.3f %8.3f Random=%8.3f Id=%8.3f Good=%8.3f [%7.2f] Matrix=%15s %f %f RESULT: %f %f Lambda=%f tq=%f **%s.curvatureERROR: %c %c%s %d %c %f [%s] is an unknown profile_profile function[FATAL:%s] RELAX CYCLE: %2d AVG: %5d [%10d] [WARNING:%s]THE FUNCTION coffee_evaluate_output IS NOT ANYMORE SUPPORTED [WARNING]fast_coffee_evaluate_output WILL BE USED INSTEAD ERROR: get_cdna_dp_cost mode is only for pair-wise ALN [FATAL] 1******2******monoaa_mat.mat%s %s %d %ddiaa_mat.matERROR: Incompatible alignments in overlay_alignment_evaluation ERROR: %s is not a valid sequenceLambda=%.2f Lambda=%.2fabcdefghiklmnpqrstvwxyz_RB_ SCORE_MODE: %s Cycle: %2d LIB: %6d AVG LENGTH: %6.2f NSD: %8.2f SCORE: %.2f Selected Cycle: %d (SCORE=%.4f)----> t_coffee_fasttcoffee_fastfast_tcoffeefast_t_coffeet_coffee_slowtcoffee_slowslow_tcoffeeslow_t_coffeetcoffee_non_extendedt_coffee_non_extendednon_extended_tcoffeenon_extended_t_coffeetcoffee_heuristict_coffee_heuristicheuristic_tcoffeeheuristic_t_coffeesequences UNKNOWN MODE FOR ALIGNMENT EVALUATION: *%s* [FATAL:%s] [%d %d]=> %.2f ERROR in HMM definition [FATAL:%s] STATE %d: %s DI %d DJ %d E %f Reached FROM: [ %s %f ] Goes TO: ERROR: Wrong Size Of Alignmnent (Real %d, Observed %d)[FATAL:%s]_first #### %s %s: i=%d j=%d st=%d pst=%d sc=%d Free %d Allocated: %d Free %d Warning: Disjoined Diagonals S E%s: Cell is undefined ERROR: The Requested Model (Cf Above) Cannot Produce the Pair-Alignment You must allow extra possible transitions [FATAL:%s] Traceback_AGECHANNEL_MCHSCOREError: mchscore >2 [FATAL] Unknown Mode [pavie_aln2id:FATAL:%s]_TWE00__TWE01__TWE02__TWE03__TWE04__TWE05__TWE06_ Symbol %c Freq %5.2f %%pavie_matrix%s.cycle_%d.mat_list Output Pavie Matrix: %spavie_matrix%s.ch_%d.cy_%d.pavie_matpavie_matrix%s.ch_%d.cy_last.pavie_matmatrix.ch%d.pavie_mat Channel %d Matrix: %sFIRSTYEARFIRSTYEAR%d %s %s: %d Keep %s Vs %s : %d%% ID Sample_size: %d Used alignments: %d ERROR: parameters must start and finish with an underscore: _parameters_ [FATAL:%s] _THR_THR%d__SAMPLE_SAMPLE%d__PARALOGOUS_PARALOGOUS%d__CHANNEL_CHANNEL%d__TGEPF_TGEPF%f__PAMLOGODD_-. Delta=%d: Delta=%d Mat: _GEP_GEP%d_X_MSA__ID01__ID02__ID04__ID05__ID06__ID05_ID06_MATSIM__MAT############# Alignment %s %s: %d %% ID SCORE %d DELTA_AGE %.2f %s.c%d_NOPRINT__MFORMAT2# TC_DISTANCE_MATRIX_FORMAT_01 # SEQ_INDEX %s %d %s %6d _MATDIST_NOPRINT_ Warning: Multiple Channel Not Supported. Used First Channel Only for MSA [Matrix: %s][WARNING:%s]_QUICKTREE__USETREE USETREE%s_IDSORT__MASTERSORTavg AVG %s %s %d MASTERSORT%s ERROR: Sequence %s is not in the dataset [FATAL:%s] TOP %s %s %d_TREESORT_ ERROR: pavie_seq2sort <_IDSORT_ | _TREESORT_> +aln2hitMat| _MODE_ : how to compare the two positions of the alignment (default:id) .................id : the sequence identity of those two positions .............pairscore : the pairwise score of the residues of those two positions +aln2hitMat| _MATRIX_ : matrix used for the comparison (idmat, blosum62mt, pam250mt.. default:blosum62mt) _aln.hit_matrix.alnhit_html_MATRIX_[START] aln to hit matrix Mode:%s Matrix:%s Process positions pairscore[END] aln to hit matrix %c%i%c%i%i 0 %i 1 %i %i %i %i %i %i %i 0 %i 1 %c%i I%i D%i ~/Download/blastz-source/blastz %s %s B=0 K=10000> %sSORRY - no BLASTZ with amino accidBLASTZ NOT SUCCESFULLblat %s %s %s -out=blast8 -q=dna -t=dna -maxGap=0 >/dev/null 2>/dev/nullblat %s %s %s -out=blast8 -prot -maxGap=0 >/dev/null 2>/dev/nullBLAT NOT SUCCESFULL bl2seq -p blastn -i %s -j %s -D 1 -g F -o %s -S 1 -F Fbl2seq -p blastp -i %s -j %s -D 1 -g F -o %s -F F -S 1bl2seq -p blastn -i %s -j %s -D 1 -g F -o %s -S 1 -F F -W 6 -e %ibl2seq -p blastp -i %s -j %s -D 1 -g F -o %s -F F -S 1 -e %iBLAST NOT SUCCESFULLWHAT THE HELL ARE YOU DOING HERE?>%i blastCalculate Sum of pairs ScoreScore: %f w+METHOD: %s nwudiscERROR - METHODCONSTRUCT TREE%s.treeCONSTRUCT ALIGNMENTCalculate ScoreSCORE: %f FILE NOT FOUND%i %i %i %i %i %iTREE_OUT%i %i %i %i %i %i ICH TUWAS%i %i %i || %i %i %i parttreeout->alnoligotree-d--is_dna-a--is_aa-i--in-t--tree_file--tree_method-o--outfile-m--methodgotohMethod %s unknown -b--diag_methodblastzblatDIAG Method %s unknown -g--gop-e--gep-k--p1--p2--eval_aln-s--score--tree_out--tree_only--agreement_score--make_ref_aln--aln_ref--gap_iterate--aln2test--help-?Fastal - a fast alignment tool-i --in The sequence_file-t --tree_file The treefile --tree_method The method to produce the tree: oligo - very fast method parttree - method like in mafft-o --outfile The output file-m --method The method to use: fast - fast approximate algorithm [default] nw - needleman-wunsch gotoh - gotoh-d --is_dna Sequence are DNA-a --is_aa Sequences are amino acids-g --gop Gap opening costs-e --gep Gap extension costs-r --retree Number of reconstructions [default=0] --tree_only only tree is produced --eval_aln calculates only the sum-of-pairs-score of a given alignment-s --score calculates the sum of paris score after construction of an alignment. Can take a long time. [default: off]Argument %s unknown t_coffee -other_pg aln_compare -al1 %s -al2 %s HOME%s/%s%s %f mafft --quiet %s > %sFILE COULD NOT BE OPENED!%s %s %i %i madet_coffee -in %s -outfile %s/%i.fa -output fasta_aln 2>/dev/null >/dev/nullGAPNOGAPINDEX: %i g n Could not open alignment file %s EDITAHAfast-in Mprobcons_msa Mmafft_msa Mmuscle_msa -extend_mode rna2 -template_file RCOFFEE -transform dna2rna -check_type -type DNA -relax_lib 0-in Mconsan_pair -multi_core templates_relax_msa -dp_mode myers_miller_pair_wise -extend_mode rna2 -template_file RCOFFEE -transform dna2rna -type DNA -relax_lib 0-dp_mode myers_miller_pair_wise -extend_mode rna2 -template_file RCOFFEE -transform dna2rna -type DNA -relax_lib 0-other_pgseq_reformatsalttaln_compareirmsdtrmsdquantilefastal-no_error_reportLimit the maximum memory usage (in Megabytes). 0: no limitget bottom parametersS-modeHARD_CODEDunspecifiedspecifies a special mode: genome, quickaln, dali, 3dcoffee-special_mode[DEPRECATED ** -special_mode is deprected use -mode instead]-t_coffee_defaultsget top parameters-type_onlyexit after checking the type and returning it to the stdout-check_typeMake sure that -type and the real type of the sequences agree-typeprotein or dna. Automatically set, but can be forced with this flag-seq -methodTCOFFEE_DEFAULTS%s/.t_coffee_defaults%d.tmpgenepredx-method tblastx_msa -evaluate_mode sequences -genepred -relax_lib 0 -output fasta_seq,exons,texons,wexons -seq_weight no -check_type -type DNA -out_libgenepredpx-method tblastpx_msa -evaluate_mode sequences -genepred -relax_lib 0 -output fasta_seq,exons,texons,wexons -seq_weight no -check_type -type DNA -out_libregularregular_fastgenomequickalndaliprecomputed3dcoffeeexpressorepeats-in slow_pair -matrix idmat -out_lib -profile_comparison profile -profile_mode channel_profile_profile -dp_mode myers_miller_pair_wise psicoffeeaccurateaccurate_slowpsicoffee_expressoaccurate4DNAaccurate4RNAbest4RNAaccurate4PROTEINlow_memorymemorydnaproteinmcoffee-in Mclustalw2_msa Mt_coffee_msa Mpoa_msa Mmuscle_msa Mmafft_msa Mdialignt_msa Mpcma_msa Mprobcons_msa -multi_core methods_relax_msa dmcoffee-in Mkalign_msa Mt_coffee_msa Mpoa_msa Mmuscle_msa Mmafft_msa Mdialignt_msa Mprobcons_msa Mamap_msa -multi_core methods_relax_msafmcoffeercoffee_consanrmcoffeemrcoffeercoffeercoffee_slow_accuratercoffee_fast_approximate ERROR: special_mode %s is unknown [FATAL:%s] TCOFFEE_EXTRA_PARAM-versionforces the program to output the version number and exit-scoreDEPRECATED: use -special_mode evaluate instead -evaluateUse -special_mode evaluate for a default behavior -genepredUse -special_mode genepred for a default behavior -convertforces the program to make a conversionW_F-quietDefines the file in which the log output is written-check_configurationchecks that the required programs are installed-updatechecks the existence of an updated versionPROGRAM: %s (%s) PROGRAM: %s (%s) -full_logfull_logSets the prefix of all the output files-genepred_scorensdnsd,tot, -mem_modememDeprecated-extendDo Library Extention On the Fly-extend_modeLibrary extension mode-max_n_pair310Indicates the Number of Pairs to Compare when making prf Vs prf. 0<=>every pair -seq_name_for_quadrupletIndicates which sequence must be used to compute quadruplets-compact-cleanno-do_selfMake self extension. Used by Mocca-do_normalise10000-100001000Normalisation factor when computing scores-template_modeList of template procedures-remove_template_fileRemove all the template files: 0 keep all, 1: only remove the template files 2: remove template files AND template lists -profile_template_fileList of templates files asscoaciated with profilesReads the Ssequences, Mmethods, Llibraries,Xmatrices,Rprofiles,Pstructures,AAlignmentsList of sequences in any acceptable format-method_limitsList of limits for selected methods: method maxnseq maxlen (-1 = nolimit)-lib-profileInput one or many MSA that will be treated as profiles-profile1Input one profile (ClustalW option)-profile2Input a profile (ClustalW option)-pdbReads/fetch a pdb file: PDBID(PDB_CHAIN)[opt] (FIRST,LAST)[opt],-relax_libself extend the library, without adding new positions-filter_libRemoves from the library every value below the threshold-shrink_libRunks linked_pairwise on the lib to remove every useless diagonal-out_libPrompts the program to write the computed library file-out_lib_modeextendedprimarySave the primary or the extended library:[primary|extende]extended_[pair|lib]_[raw|pc]-lib_onlyOnly Compute the library-outseqweightPrompts the program to write the sequuence weight values-dpaUse DPA mode-seq_sourceIndicates the files that will be used as sequence sources, important for dpa. With the default mode alignments must be provided with the Sflag as well as tye Aflag if they contribute novel sequences-cosmetic_penaltyA very low Gap Opening Penalty.It only affects the non stable portions of the alignmnent.Negative values penalize gaps, positive values reward them-gapopenGap opening penalty. Must be negative, best matches get a score of 1000-gapextGap Extension Penalty. Positive values give rewards to gaps and prevent the alignment of unrelated segments-fgapopen-fgapext-nomatch-newtreeName of the output guide tree-tree-usetreeUse an existing guide tree-tree_modenj, upgma, cwph-distance_matrix_modektupComputation of the distances for the tree: slow, fast, very_fast, ktup-distance_matrix_sim_modeChoice of the distance measure: _sim1, _sim2, _sim3, _cov, _gap-quicktreeUse distance_matrix_mode=very_fastName of the output alignment-maximisealn,htmlSpecifies one or many formats that must be output: clustalw_aln, msf_aln. The file extension is the output format-infileinput a pre-computed alignment, or a file to reformat-matrixSpecifies the substitution matrix.-tg_mode0: Penalise Term gap with gapopen and gapext 1: gapopen only 2: No penalty -profile_modecw_profile_profileFunction used to compute profile2profile scores-profile_comparisonfull50profileMethod used to compare two profiles: full: compares pair of sequence and every pair of structure if a structure method is used,profile: compares only the profiles. -dp_modelinked_pair_wiseType of alignment algorithm used by T-Coffee: gotoh_pair_wise, myers_millers_pair_wise, -ktupleWord size when using the heursitic dynamic programming modes fasta_pair_wise and cfasta_pair_wise -ndiagNumber of diagonals to consider when using the heursitic dynamic programming modes fasta_pair_wise and cfasta_pair_wise-diag_thresholdND-diag_mode0: Use the whole Diag 1: Use the best match Degenerated matrix used to compute a similarity-transformdna2rna, rna2dna, dna2prot-outorderinputSpecifies the order of the sequences in the msa: input or aligned-inorderalignedaligned: sort the sequences in alphabetic order before starting thus making the input order irrelevant but delivering a library in arbitratry order, keep: input order is used in the library but results become input order dependantAdds Residue Numbers to the MSA-caseupperCauses the case to be: kept:lower:upper.-cpuMakes it possible to add a pre-specified amount of cpu time to the measured usage-maxnseqMaximum number of sequences (-1=no max)-maxlen-1Maximum length of a sequence (-1=no max)-weightDefines the library weight: sim OR sim_(matrix) OR winsim-seq_weightDefines the sequences weighting scheme t_coffee-alignforces the program to make the alignment-moccaforces the program to extract domains-domain-startstart of the master domain in the mocca mode-lenlength of the master domain in the mocca modeDecreases the t_coffee score by Scale, so that non match get negative values-mocca_interactiveRuns Mocca in an interactive manneer-method_evaluate_modeSpecifies which method should be used to evaluate the score at the pairwise level-evaluate_modeMode used to produce the color output:t_coffee_fast,t_coffee_slow -get_typeforces t_coffee top get the type of the sequences-clean_alnForces weak portion of aln to be realigned-clean_thresholdThreshold for the portions of the MSA that will are realigned by '-clean_evaluate_mode'. The threshold refers to the CORE score set by '-evaluate_mode'-clean_iterationNumber of rounds for '-clean_aln'-clean_evaluate_modeMode used to score residues (see evaluate_mode)-extend_matrixenvblast_server_4_TCOFFEE-pdb_dbpdbNon Redundant PDB databasepdb_dbprotein_db_4_TCOFFEEprot_db-method_log-struc_to_useSpecifies the structures that must be used when combining sequences and structures. The default is to use all the structures.Specifies that a cache must be used to save the structures and their comparison, as well as the blast searches. available modes are: use,ignore,update,local, directory name-align_pdb_param_fileparameter_file-align_pdb_hasch_modehasch_ca_trace_bubble-external_alignerseqan_tcoffeeUse seqan to compute the MSA-msa_modeAlgorithm used to compute the MSA: tree | graph-one2allAlign all the sequences to the master sequence-subset2all-lalign_n_topNumber of local alignments reported by the local method (lalign) when building the library-iterateNUmber of iteration on the progressive alignment [0: no iteration, -1: Nseq iterations]-trimtrim dataset-splitsplit dataset-trimfiletrim dataset filename-split_nseq_thresMaximum Number of sequences within a subgroup-split_score_thresMinimum score within a split dataset-check_pdb_statusReports the existance of a PDB file-clean_seq_nameRemove Special Char from sequence names-seq_to_keepFile containing the name of the sequences to keep when triming OR a list of names)-dpa_master_alnApproximate Alignment: File|method-dpa_maxnseqMaximum number of sequences to be aligned with DPA-dpa_min_score1Minimum percent ID to merge sequences in the approximate alignment-dpa_min_score2Threshold for aligning a group in the slow double progressive alignment (automatically readjusted)-dpa_keep_tmpfilePrevents deletion of the tmpfile generated by t_coffee_dpa-dpa_debugDEbug mode for DPA ( causes dpa tmp files to be kept)-multi_coretemplates_jobs_relax_msaMulti core: template_jobs_relax_msamulti_core-n_coreNumber of cores to be used by machine [default=0 => all those defined in the environement]-lib_listA File that contains every pair/group of sequence to process when computing the lib, Format: -prune_lib_mode5-tiponeControls The Output of A TIP When Computation is over [one,all,none]-rna_libSuppresses all Warnings-run_local_scriptRun Local Script if in current directoryrun_local_script-pluginsSet the directory containing the plugins [no if no plugin]-proxyunsetproxy used to access to webservices, when required-emailemail provided to webservices, when required-clean_overalnRatio between overaligned exon id Vs legitimates *100-overaln_paramParameters for the overaln-overaln_modelower || uanlaignoveraln_mode-overaln_modelfsa1 (no exon boundaries), fsa2 (exon boundaries)overaln_model-overaln_threshold-overaln_P1overaln_P1-overaln_P3overaln_P3-exon_boundariesexon_boundaries [EBI boj format] ERROR: When using -evaluate, Provide a multiple sequence alignment via the -infile flag [FATAL:%s] ERROR: FILE %s is NOT a valid alignment [FATAL:%s] FILE_LISTM%sBOJbojP%s WARNING: File %s was not properly tag. Potential ambiguity ERROR: You have NOT provided enough arguments [FATAL:%s]ASLX%s_1P ERROR: You have not provided any sequence [FATAL:%s] INPUT FILES Input File (%c) %s Format %s ERROR: The format of %s is not supported[FATAL:%s]%s%s.dnd%s%s.ph %s is not a valid format [FATAL:%s] %s%s.%s%s%s.tc_libProteinrna INCORRECT SEQUENCE TYPE (USE %s ONLY) [FATAL:%s] ERROR: Your Dataset Contains %d Sequence. For multiple alignments you need at least 2 sequences[FATAL:%s] SEQUENCES TOO LONG [Longuest=%d][MAX=%d][FATAL:%s] TOO MANY SEQUENCES [N=%d][MAX=%d][FATAL:%s] SELF_S_ Impossible to find %s Templates Check that your blast server is properly installed [See documentation][FATAL:%s] %s%s.template_file Looking For Profile TemplatesImpossible to find %s Templates Check that your blast server is properly installed [See documentation][FATAL:%s] disk2 %s %s _aln_n%d Master Sequence: %sERROR: %s is neither a file nor a method nor a number for subset2all [FATAL:%s] %s%s.method_log ******************ERROR***************************************** You have not provided any method or enough Sequences[FATAL] If you have used the '-in' Flag, ADD the methods you wish to use: -in Mlalign_id_pair Mfast_pair And make sure you provide at least TWO sequences nomatchgcuta AUTOMATIC PENALTIES: gapopen=%d gapext=%d MANUAL PENALTIES: gapopen=%d gapext=%d Library Total Size: [%d] lib_%stc_lib_format_01TCLIBtc_weightWEIGHT quad: %s WARNING: Sequence %s is not in the set and cannot be used for quadruplet extension seq_alnsorted_alnfull_sorted_alnprofile_alniterative_alniterative_tree_alndpa_alnnew_dpa_alndelayed_tree_alngroupsupgmagraph DO GRAPH ALIGNMENTtsp DO TSP ALIGNMENT ERROR: distance_matrix_mode=aln requires an aln passed via the -infile flag [FATAL:%s]aln READ PRECOMPUTED TREE: %s ERROR: msa_mode %s is unknown [%s:FATAL] ONretainUpperUPPERlowerLowerLOWERoveralnexpand OUTPUT RESULTSGUIDE_TREEPHYLOGENIC_TREE SPLIT DATASET: %d Groups SPLIT_GROUP %d ; Nseq %d ; Score %d ; List %s.split.%d.%s ; File %sSPLIT_SEQ TRIM_SEQ: Kept sequence %s%s.trim.%sTRIM_SEQcore-other_pg seq_reformat -in -action +trim %%50 Will reduce the redundancy of your MSAnone # TIP :See The Full Documentation on www.tcoffee.org # TIP %d: %s # TIP %2s: %s# TIP %2d: %s -batch AB?@?@$@zDL=Y@?@@BHCAB@F' @I@?5P?@@i@@O=?-C6?Ơ>iAח?x? }?G?p?6u6??Q? ?Р?G@\?C?w0? ?P ?nz? va?ס?7O?-=#t?(@?@RV@ ?2Sl? TD?U: ?9G?0O\>aZ>:tA?٠Jvs?@vn^ߎ?@@_@@_ =4>b>u1? @n M>> 01?@喻<=4*2?_?xAAYjS@h㈵>{JΉ=,@ff@33s@333@33?ff?̾333fffLff̿L`yq=j?G@̬?R?= ?{?ff?(??Q?= ?H??@?p}?(?@z?A? #<a=V=5=#R=la<{=f=g=<[=c=p=:{w7;<Ʈ;d:c0:~<H#;I:q:V:#F9x8l::::m:z0:W:9::<3;';E;:;*x::@;Rz;:~:px$;L; f::e:\<N;: F;:uA:R:K;W ;!K:)#;F;g$;8t:::D;LT<9Ř9C\9'98;W9y9Y9?H9Y9(I:B&9l*9`:Z$9A9ނ9K;*ά:,S:΀D:5-:98:r:j:::;$:@ :#q;`9:gx:x5:O#<;s:`:':,: :8: :h;:y*7<;<6 ;uh;Y';:U;a; 9:}`x>_>b|>b|>Xң9K>ٖ<9=[<[L<t=t=*89=L<<<8[<t=g|>d8[<t=g|>d8dj8*8<8d8d87@z?{Gz?x-@??9@j@@HBPG>=?}]6>?d>7#=Kj>\=Hv;fz< =$=d<ׅ=<;=pB@ǻ?':=q>sC?=>;\>&n>C?tA}>=>3>!?Y>Y?#>h>< ==5@"=6?=4= 6.=b8<L<=E/@[(=br<Է;a'};C;i>1<?;W>;VU6P<:<*=:]$@]==dK< <+T=\ZB=Zn7>N1< =K=_'u<= k<~$<`@>L=!\=Vb=6=3Æ=R8==,=>>= ?ms>]3?囍>N=Z=>>֎>>sh)? |=p(L> 7p>= *;Y;9D;;cGc;ᲊ<o;q!;lv;G;:?;l[5?sA?.ӂb?j쑺?AՔB?8$4a L?.n? f? ƍ'?PBü?E?9hs&^?a~H?徜?YO?x6?Ȱ}gij?@>[A}I?u.t?'?ӓ?tbE?@@C ZLgK?AˀC?8ϘJ?\.lf?;UUUUU?i}ɐ?RBtp>M,?]?oS?O@~?bU>?7X?}P?ƶ@?kحg?{T"?L? +g?$ N?PDvI?o\G?]@?aWZj?|SU?PP?+%@aץ@MbP?{Gzt?@?d:l ;->PLpL@OOPQ RTTUVpXabbvv0zp{`|}p`@Т@@p@p @ @ Ppp@pP`Pp@@@P@@@P @`@ Pppp` P ` `  0 `ppPP`$$ %&&@'()@*+P,-0.../2`35P66@70889`9=>P@@0APAA0B`CC0EPJ KVWP[`[[__`Pe`gPijkkkm0n@oqPP`P `p  @ `@`@pp `Ppp@  0PP P!!"P$p%+0+,/p;<=?@Z[\]]` apfh@kpmn qr@u`u P@  Pи@```P@p `p        0  0        &  & 5 6 7 P8 p9 9 : ; p; > `? 0@ B @D E 0F F `H I PI I J pV V ` Pg 0       & `' `* + , @- p. . 2 3 3 6 7 F G 0J @J 0Z pZ f `f @ P   D @E PJ N pO S U X 0  0   `    p  P   @  0p `p01 245p588@99p: ;;< ?0@p@@AABBDEFGGJKLMNpQQUUVXYPZ^@bkPlmqv`p pP`P0P @0P   P $%<=ABCKKO@P\0]0P`PPP `ЦP@P  !!1 1ZZe`fmmP@ 0  I@IIpYY0[]]`b ckklpnn`P``м@P0@p `@`0 P 0@ACPgg P p0`@0@@0 Ppff`rsPx0yzЃPН@pPP P @`''KKLp@ y`z@PДp;;EPFz`zp Т h zRx ,H> ,LXH ,|x ,U 48 4А 4LXn  4 4(A  4@9 4,:  4d:  4H<~ 4< 4 MA 4D0NO  4|HP8  4PSO  4hT 4$ U\  ,\HWS 4xW  4WA 4[ ,4]= 4d]  ,HaN 4ha 40c  ,<gN 4lg  4j ,8nj 4 xn  4Do  4|Xw! 4PxY 4xN 4$  4\  4P  4] 4  ,< h 4l  4 "  4 < 4 V ,L 1 4|   4 pz , N 4 ؛{  4T ] 4 H 4   4 Ƞ  44 ~ 4l X 4   4 H  4   4L h  4   4   4 `e  4,  4dN  4 4 4  4Dp  4|(  4s  4q  4$`c  4\G  4  48  4  4<X  4t:  4  4   4 4T0- 4(P  4@  4  44R 4l![  4$ 4X*  4-  4Lx3R 47   4(D 4D  4,MJ  4dU 4V 4 Z  4 [  4D_2  ,|b5 4(b6  40d 4e8  4Tj  4k  ,@p 4po  4,r  4dx 4xy5 4 4   zRx ,X ,L8 ,|( ,A ,8 , ( ,< 4lt ,0 4g  4  4D@r 4|  zRx 4H  4T  4X  4] 4(C 44@ 4l  zRx 4xH  4T 4h 4  4 44@ zRx , 4L  ,x ,hM ,  ,h ,Dȫ9 4tث 40 ,  4  4Lpp  4 4pl  4 4, 4dx  4`M 4x , @ 4<  4t  4p 4Ho 4 4Th6 4p  4 4@  44( 4l  ,h  4Xx  4   4D8  4|  48  4Y 4$8  4\E  4  4`0  4 X 4< Z 4t   4 pr 4  4 @C  4T X  4   4 8M 4 P{ 44 k  4l o  4   4 0 4   4L   4   4 @'  4 8  4,   4d   4 u  4 (W  4 * 4D/Y 4|2  4x6 4;[  4$(<  4\F  4R   4T 4XZF 4<p^ 4tbQ 4hE 4m  4m  4To  4q  4tq  40w  ,4z 4dz4  4|  4~1  4 Z  4D 4|Ћ  , 4 4 4TȘ| 40  4  4j 44$  4ln  4 4|  48  4L  4  4p!  4h 4,е] 4d 41  4#  4 L  4D  zRx ,X? ,Lhi ,| ,Xy ,= 4  ,D  4tL 4n  ,' 4z  ,L 4|  4`H  4x  4$  4\x  408  48  4  4<x  4tp  , 4  4  4LX  4  4xx , ,$D 4TU 4 4`%  4X 44@  4l  4=  ,- , & ,<- 4lW , 4  4 | 4D 2 4|   4 / 4   4$ P  4\ (x  4 pc  4  4 `Z  4< .  ,t  4 p  4   4   ,L Q 4| ()  4   4   4$ >  4\   4 p*a 4 + 4,  4<H.\  4tp/  4/ 43  46  4T`:u  4;  4= 4>  ,4@ 4d@g  4AF  4C 4 K 4D0M  4|O 4P  4R 4$R_  4\ST  4Wz 4HW`  ,pXZ 44XV 4lY  ,0Z , Z 4Z}  4<X[G  4tp] 4^ 4p^  4^  4T _4  4(aM  4@a  4bE  44dT  4lf 4@g 4g  4h 4Lhm ,m 4`n   48o}  ,$p  4Tpp 4(r 4r 48s 44s  4l8te  4pu  ,v 4 v  4D0{5  4|8}6  4@8 4H?  4$P  4\g 4 $  4  4  ,<XV ,lU 4 4  4 X  4D0l 4|hv  4\  4ؗG ,$& ,T& 4 4ؘ  4  4,H#  4d@ 4؝  4  ,  4<   ,t  , С 4 J  4 !آy  4D! _ 4|!H  4!  4!  4$"  4\"h  4"Э%  4"ȯ^  4#  4<#X  4t#0 4#X  4# 4$XO  4T$pO  4$!  4$s  4$h  ,4% ,d% ,% ,% 4% 4,&x  ,d&  4&X 4&8  4'  4<'h ,t'0 4' '  4'  4(  4L(w 4(7  4(<  4(M 4,)!  ,d) 4)Q  4)  4*`E  4<*x  4t*  4* 4*0  ,+_ 4L+2  4+  4+ 4+  4,,x8 4d,  4,h   4,   , -  4<-  4t- G 4-8   4-5  4.  4T.@  4. 4.  4.(  44/P  4l/W  4/i  4/  40  4L0+ 40p+  40.  401  4,13[ 4d14w  416  417U  4 2=t 4D2PC  4|2HW  420IZ  42XM8  4$3`O  4\3S  43V 43V 44Xo 4<4Z  4t4P[  44\I  44]y  ,5^6 4L5^  45_ 45Xbv  45h  4,6xm 4d6u  46xx 460 4 7 ,D7 ,t7p 47` 47ȉ/ 48  4L8@  48  48H  48   ,,9x 4\9X 49   49 4: ,<:Y 4l:  4:  4:j 4;  4L;8  4;  4;  4;@H  4,<X 4d<   4<  4<@_ 4 =h  4D=0  4|=  4=@x 4=1  4$>Q  zRx ," ,L 4| ,% 4  ,p$ ,Lp$ ,|p$ ,p$ ,p$ , pX ,< ,l@  4  4 , p  ,<P 4l0 4r ,- 4 x 4D( 4| , 4x , 4L@  4B 4   4g 4,l  4d(  4  4  4 0  4D  4| 4H 4 4$m 4\P  , , , ,$  ,T  ,  , x , h , X ,D H ,t 8 4 (  4 u 4 \ 4L 0R , X  4 8  4  4$   4\ A 4 5  4  ,  44   4l h ,  ,  , ,4 ,d , 4x9  , ,,` ,\@ ,  , 4 4$h 4\  ,  ,8 ,8 4$ ,\U 4 48 4 44  4l0  4  4  4h 4LP  ,8  4 4 4$ 4\  4   ,' ,p' 4,P' 4d** ,- 4`.U   ,; ,4x; ,d8< ,< zRx ,=5 ,L= 4|P?  4? 4At 4$A  4\@B  4B zRx ,XC ,LD zRx 4D  4TL 4M 48N  4P2  44R 4lT  ,Xa 4HaK  4 `d9  4Dhe 4| f*  4g  4g  4$Hh  4\h 4hi 40os  4xq  4<`s  4tu zRx ,vZ 4LHv 40y  ,y_ ,y3 ,y# ,Ly8 ,|y* ,y2 ,y2 , y2 ,<z^ ,l8z( ,8za ,xz( ,xz& ,,xz& ,\xz( ,xz ,z| ,({ ,{ ,L{ ,|x| ,|| ,(} , } ,<} ,lx~- ,x~+ ,x~) ,x~) ,,x~- ,\x~B ,~? ,~A ,~U ,~f ,L8B ,|X? ,hA ,U , f ,<: ,lA ,(^ ,X  ,89 ,, HU ,\ x , ؀4 ,  , ȀF ,  ,L Ȁ ,|  ,  , HQ , x 4< H ,t 0# , 0T 4 `  4 ȃT ,D  4t `s 4 [ 4 ЄJ 4 < 4T   , \ , ȇB 4 ~  4$0H 4\HZ 4pf  4  ,5 ,4 $ ,d $ 4 i 4X 4Љb 4< 4t 4  ,p. 4p}  4L7  4  , 4Ȑ  ,$0 4T , ,X , ,x ,LH 4|( 4} 4< ,$W ,T0 , ] 4P 4 4$0  4\؛s  4   4 4 J  ,<8G ,lX7 4h  ,- 4Z 4<(v  ,tp( ,p$ 4p , y 4<8i  4tp  ,ȡ 4j ,7 4D  4|X 4 ,X' ,X ,L8 ,|(# 4( ,  4Фu  4Lh 4P 4 ,. ,$. 4T ,X 4 4@r 4,  4d 4ث|  4 |  4 h 4D 4|X  4  4h  4$ C 4\8T  ,` 4PU  ,x 4, h  4d P  4 8T  4 ` 4 !(m ,D!` ,t!{ 4! ,!hR 4 " 4D"P  4|" 4"p 4" 4$#t  4\#(t  4#p 4#8 4$  4<$  4t$0  4$ 4$P 4% 4T%  4%8  4% 4%X 44&  4l&  4& 4&t 4'  4L' 4'py  4'y  4' 4,(x 4d(  4(h  4( 4 )hC 4D) 4|)8t 4)  4) 4$*|  4\*(|  4*p 4* 4+`  4<+  4t+p 4+ 4+`C 4,x 4T,C 4, 4,K ,,2 4,-O  4d- 4-X  ,- . 4.   ,<.xC ,l.B ,.F ,.B ,.D ,,/9 4\/(M  4/@  4/  40  4<0  4t0`X  40  40  41  4T1U  418n ,1p) ,1pN ,$2N ,T2N 42 42  420"  4,3(  4d3 43X  43  4 48 4D4  ,|4J 44(  ,4J 45r  4L5HZ 45p  458%  450(  4,6(  ,d6 46 ,6q ,6hY ,,7 4\7A  47 47.  ,8 448&  4l8r  ,8  ,8 49 4<9x   4t9 49  49@  4:  ,T:  4:pp 4:n 4:   4,;8   ,d;  4; #  ,;  ,;8 4,<( 4d<  4<X  4<  4 =  4D=P  ,|=G ,= ,= , >Hk 4<> 4t>` 4>  ,>C  ,?# ,D?p+  ,t? 8k ,?`G 4?PL(  , @HO 4<@R  4t@PS 4@S 4@V  4AX  ,TAY ,AZ 4Ap\_  ,A] 4B]G 4TB]5 4B^  4B0`-  ,B(d ,,Cd ,\Cd ,Cc 4CcD  ,Cg ,$Dg ,TDg ,Dg ,DgV 4Dg?  ,Eh  4LEi 4E0j 4Elb  4E0m  4,Fn  4dFs 4F8t  4Fu  4 GXvh  ,DGw ,tG@x ,G z` ,GP{ ,H{ ,4H| ,dH|k 4H|  4H}i 4I 4  ,\H9 489k  4p: 48?  zRx ,h?4 ,Lx?- 4|x? ,`@_ ,@U ,@U ,D@\ 4t Ay  4hA  4B  4B  ,TPC` 4C_  4F  4G\  4,(G@  4d0H 4H 4PI  4 I  4D`J 4|Ji 4J   4K 4$0L  ,\xLf 4L ,PPU 4Q 4,8R  4dRp  ,S ,S 4hT 44PV  4l`   4a  4hd 4en  4LHf# 4@gm 4xhz 4h;  4, kM  4d m  4 8n  4 o! , s! 4< s7  4t w  4 z  , |@ , | 4D ~ 4| ؀D  , & 4  4 h_  4T   4 R  4 o 4 X  44 Ѝa 4l c  4 @M 4 XH  4p 4L 4 ,V 4He  ,$ 4T` 4ؗ 4`  ,Ȝ  4, 4dh 4ȥ , ,0* ,40* ,d0* ,0* ,0* ,0* 4$0 4\ ,* ,i 4Э  4,P 4d0  4r 4l 4 8  4Dб 4|h 4 4x  4$  4\> ,3 ,i ,/ ,$/ 4T ,7 ,a ,ظ ,ȸ ,L 4|  4 4X 4$@ 4\U  4 E  48  4 G  4<8Z  4t`  4%  4  4  4T0 4xK  4  4x   44PY  4lx  4@ 4  4  4L 4 ?  4( 4 4,(* 4d   4x   4Pa 4   4D T 4|H 4C 4)  4$ 4\(  4 4h f  4 !%  4< %M  4t & 4 ,  4 /   4!/ 4T!1 4!8:{  4!=r ,!Ba 4,"C+  4d"E 4"H  4"`L 4 #Q 4D# VF 4|#8[W 4#`_  4#d 4$$h 4\$m 4$ps 4$v  4%  4<%H 4t%  4%ȇ 4%0  4& 4T&1 4&  4&  4&  ,4' / ,d' c 4'`- ,'X/ 4'X ,4(@ ,d( ,(  4( ,( 4,)  4d)  4)(  4)p 4 *ȡ  4D*` 4|*M  ,*0  4*  4+V  4T+ 4+X= 4+`  4+>  44, 4l,  4,   ,, , - 4<-ؿ 4t-P 4-B  4-_ 4.H#  ,T.'  4.'  4.*  4.+p  4,//g  4d/P44 ,/h ,/h 4/ha 440i1 zRx , P 4L@  4؜  4  ,1 ,$@ 4Tȣ  40~  4xt 4" 44  4l`  4( 4  4 4Lh 4! zRx ,U 4L  4@ 4  ,`& 4$`f ,\C 4  ,a ,y 4$ 4\ 40a  4h}  ,G 44 4lHn  4%   ,x@ , @ ,<@ 4l ,@@ ,P@ ,`@ 44p  ,lH  ,(  4 4  4<H5  ,tP , 4P  4   ,D3 4t  4(  4  4   4T Y  4  ,p_ , ,$   ,T p_ ,  ,   zRx 4Xh 4T  zRx 4  4T ?  , D 4 - 4!I 4,") 4d") 4"m 4" 4 # 4D$  ,|p%  ,P%8 ,`%H 4 %{ 4D% 4|@& zRx 4& 4T8' ,( ,'p ,0(j ,p(, 4Lp) ,H*4 4X* ,* ,*0 ,L*# ,|*d , +P 4@+A ,X+> 4Dh, 4|- 4.H  ,. 4/\  4T82 42\  42 403 44x3 4l 5v  ,h7v 47  4 9u  4DX: 4|:  4h;  4;q 4$8=* ,\0>V 4`>h 4?L  4@s  44@x 4l@A-  48E^ 4`Fm 4 IY  4L K!  4 M 4 0N)  4 (O 4, P  4d (SU 4 PVf 4 W.  4 ^ 4D d  ,| gb 4 h^ , j  4 iO  4L m^  4 8r  4 w  4 8y  4, ~3 4d   , p 4   4  4<J 4t}  4@  4 4  4T7 4 4U 4( 44S 4l  4' 43 4R  4LЯ 4G  4 4H  4,  4dh 4P) ,H 4  4<@2  4tH  4   4x 4   4Tn  40  4  4  44  4l`  4  4  4X  4L  4h  ,< 4 4$H  4\  4 4 4h 4<  4t  4@ 4n 4  4TH  4O  4  4   44x   4l@ 4'  4  4 4L  4h= 4p  4X 4,  4dA  4 4  4 @ 4D  4|p%p  ,*/ ,*6 4*  4LP,  4/4  41 4HF  4,J  4dhL  40M~ zRx ,`MK ,LM ,|Me ,0N> 4@N  4O(  4LQ= 4R 4pR  4(T[ 4,PUI  4dhUJ 4V  4V  4 `WZ  4DZ  4|\  4`u  zRx ,c ,Lc ,|b 4b  4@g>  4Hj  ,Tl5 zRx ,l ,Ll ,|l ,xl 4Xl+ 4Pm+ 4LHn* 4@or  4}b  ,  ,$/ ,T  ,/ ,  ,/ zRx 4x ,TP 4p 4(  4 4,(& zRx 4  4T@ zRx ,p 4L  4  4  4H1  ,,P  4\0p 4h  4@ 4 4< 4t8z 4 ,  4h  4L0 4  4# 4#  4,@'v ,d*& 4*p 4,  4(9  4<;  ,tH< 4=  ,pG 4 `G  ,DHQ 4tRR 4U\ ,8[_ 4h[  4Le 4Xj ,n) 4n&  4$pC  4\q 4XrA zRx 4Xs  4Tu 4x 4`{  4} 44pB  4lA 4   4xd  4  4LH  , 4  4Ȭ ,$@ ,T  4 zRx 4  4T  4! 4~ 4; 44  zRx ,x* 4Lxg  4 zRx , & 4L  4x  4@   4 4,0  4d  4`(  4X 4 A  4D 4|  ,  4  ,j ,L# ,| 4(  4  4p! 4T%  42  484 47K ,4  4<@M  4tX  4  4x\  4A  4T  4   4T  40f  44h 4l  4x 4  4m 4Lz 4! 4  4hf  4, 4d( 4 4 zRx 4h  4T zRx ,@6 ,LP9 ,|`9 ,p6 4  4h  4L2  4  4`  , ,$&  ,T+ ,(1P 4H7  48  4$9 4\>  4(B  4B  4C  4<F?  4tH,  ,I< 4 I 4Il  ,LM 4|N8 4S1 4eJ 4$j 4\2  42  4t  4؃  4<  4t 4  4`  zRx 4  4T 4X  4=  4W  44   4lث  4  4XQ 4'  4Lxq 4/ 4M  4m 4, 4d`%  4X 4c zRx ,{ 4LPI zRx ,P  ,L0  4|  4  4Z 4$D ,\, 4  4f  4  44 4l  ,u 4 4 0  4D  4|p4 4x  4P  4$8  4\  4X6 4` 4 4<p  4te  4 $ 42 48 4T?  40Ip  4hRf  4]  448g  4lh  4Hrs  4v 4z  4Lz,  4{  4  4x  zRx 4v  4T ,Z 4Ȏ  4`  4,88  4d@  4ؓ  4`  4 Q 4D0 4|}  4И  4x 4$0 4\] 4  4( 4p0  4<h  ,t@ zRx ,5 4L(  4  4&  4N 4,  zRx ,H ,L8  4| 4p 4]  zRx 4 4T0  zRx ,  4L 4w 4 4;  4,u 4dR zRx ,G 4L(  4] 4 4@   4,(a  4d` zRx ,  ,L } ,| q ,@  , F , @ 4<z 4t [88889 999(929<9F9P9Z9d9n9x99999999999999:::":,:6:@:J:T:^:h:r:|::::::::::::::;;;&;0;:;D;N;X;b;l;v;;;;;;;;;;;;;;< << <*<4<><H<R<\<f<p<z<<<cccc,',<IZguR$>Vpx)8XlBUVp8NhQkHp( X(()**d'                                                                     lS)l71&04l l):  l7%1;3X%34&" - (3 3 %;   34 (  &aa1 9 6 a71"  " (1 aa6N   a 1(   7     /4!8q!8K!!%%= P!!G !c!!=!!!*4!**4%*%**=!4%!!!!G%%%U%*!!!G%!/G%!!!!!!4%!!!!%!!*8%%4%!%8 %% !  PP( P d2<Z  d(  d( (x  ( P( 2  Z ( <P  ( 2<ZF 2( (2 ( d   n( (< ( 2((Z ( ( <(2Z2(((((2(P((2Z(   F22  (P  2   MH$ lH].3R  ])  W$)g  $ M$$ .$R )3H )38WC3$ $. ) W$  g$$8.3$)W $)8$.W3)$$$$.$M)$$$)$3R$   >..)M )   | 4&9 Q&9>&44> M+&&!>+&!H!&C&!!>&+> !+&4M!40+&0+9+!C!&+0 4&!&&C+0!!!+C+&&&!+!++!4+&!!&!!&!09&4++&> !   + `/$4S$4 9$/ 49  I)$$$9)$$D$>$ $ 9)/> $/$4I$//)$/)4)>) )/ /$$$>)4)D)$$$$)))/)$$$$$)4$4))$9   ) c*"/U"/ 3"/ /3 H&"&" 7&&&<&7& "" "7**< "*"3<"**&"*&*& """<"& ** /&&"3*/"""&<&""""&"&&"*&""""""""&/"3**"3 "  * k '$+\$+ .$+ .. L'$$$ 1$$$8!'1$ $! $1 +.; $+!15!'''$'$'$!!!!!!5!' '++$$$.!!'.!$!'8$$!$!$!$$!!$$!!!$!!$$!$'!.+'!1 $  . z *<.*T3 <=.41#9 !5(.<$<"#3 B$" * #$< .( & = $   #5*# &a,f@!2 F# D$!fE@ 0  '42!$4! %-9@! f&f'2D W& # '# 2$2&f$@ 9 !!.!#E# * $2 ,2 $"2 !  /$|3!( e @|L3G='!F !I43!| $|"'@ O$" ('$|3 4  !,! L  7 , '<( '1;                   1I1M  $-$ 511 1 EI - $$ IE1$-$ $  =$5I11 E19E1 $$EE 95 M1EE 11I 5    1$15 -E1 $$$    ( $E $M$E  I a{ARNDCQEGHILKMFPSTWYV1u.?A8A8">">C >f?f?ACGUTN<<;0<;0<'`>'`>ި>ި>ARNDCQEGHILKMFPSTWYVL? d?]-?8a? a?@?)Pb?b|Z?`El? ?`WW?`K=? ;? 8?`?a?d?ZY?\?` 5?`~?7k?f?ib?`SYt?8?El?+?@j}x?;_?`Kg?Ec?@1UG?VW?a?Kͤ?PR?U? "W?hO?@P1?ZR?`U?@P?Ɓ?j?8V?Q?BQ?N?WP?YT?YW?`WC? 5?`%jr?8d?kBZ?XZ?ܰV? ]?0b?oa?MOR?@?`Y?@,k?ex?.e?d? >?i? Oq?`%>e?S?Y?De?[?`edX? $I? vD?T??38?BH?`&H?E?`1;?[b?r?@!O?@&p?[?,M?K? F?!A? jC?eI?R?G?`f?u? L?` S?O?ib?4iQ?!nP?@܊T?`6?M?wX?a~Y?@?MQ?@Y?J^Y?>?C?@]?`fy?db?h?`]g?@O? Q_?|h?RJo?S?o\?d?ci?L?`S?L]??o?{^? b? 7]?.H?@JQY?`a?a? yI?X?s?ɜ?@9?3?q+?$??`*?6/?6k9?)?89?%I?@Ȥ2? M%?PL?`R$? (b1?[0?` w?@řU?eJP?H?E?8?!G? }SN?`CM?!xU? T? a?@P?A?`5n?L3??^P? O?F?Iw?ou?`n[?aV?$T?S?U?`G]? <_?MrG? O?`g?Fa?-`? d?`?V?c?"l?A9??X???@__DefaultRuneLocaleQr @___stack_chk_guardr@___stderrpr@___stdinp@___stdoutpr(@dyld_stub_binderrr@@___errorrH@___maskrunerP@___sprintf_chkrX@___stack_chk_failr`@___strcat_chkrh@___strncpy_chkrp@___tolowerrx@___toupperr@___vsprintf_chkr@_accessr@_atexitr@_atofr@_atoir@_atolr@_bsearchr@_callocr@_closedirr@_cosr@_execvpr@_exitr@_expr@_fcloser@_fflushr@_fgetcr@_fgetsr@_floorr@_fopenr@_forkr@_fprintfr@_fputcr@_fputsr@_freadr@_freer@_fscanfr@_fseekr@_ftellr@_fwriter@_getcr@_getcharr@_getenvr@_getpidr@_killr@_logr@_log10r@_logfr@_mallocr@_memcmpr@_memcpyr@_memsetr@_mkdirr@_modfr@_opendir$INODE64r@_popenr@_powr@_printfr@_putcharr@_putenvr@_putsr@_randr@_readdir$INODE64r@_reallocr@_remover@_renamer@_rewindr@_rmdirr@_signalr@_sinr@_sprintfr@_srandr@_sscanfr@_stat$INODE64r@_strcatr@_strchrr@_strcmpr@_strcpyr@_strlenr@_strncmpr@_strncpyr@_strrchrr@_strstrr@_strtodr@_strtokr@_sysconfr@_systemr@_timer@_timesr@_tmpfiler@_tmpnamr@_tolowerr@_toupperr@_ungetcr@_unlinkr@_vfprintfr@_vsprintfr@_waitr@_waitpid_ start$_cfps TC_method2method_file lbnjrevam"i%d'g8u;wEqGoMtnhSЕkݖLEHEREMPCoDisplayHmmRviterbiNzmh_execute_header_progname( olh.acmp_rputenvuw_ʜkfasta_mnuntlpy_de_ffee_il_matpbine_gmonsextetaute_oundUress_alnjle_pairrect_list?_constraint_list_entrylistBsipos_columnjRNA_foldnodetaln_tree4bsearch() iora1ree_Flprintf_forkscanf_seq_nameull_sorted_alneature_extractlnd|x_rst_memterl_5eZ_conlist?alnTkeep_residues_in_alnזstraint_listvert_alnі)scatenate_ňdense_alnverttraint_listensus_get_dp_cost2_is_ avgbin_filefraction_covered/raw_file1+ raWos2fw_aln2clean_xgush_stringstrcmperl_dbinto eLf_une_ާ_f_ CL_mem liIpLshmܧcexit_ahtml_šnewick_treetreeѮgraphаfastal_tree,a e h"ort(u>pIiatrcwlow_kip_sec_pwaln_malnquare_atomve_ rOtoife_systemplist_ sub_list_header raw_constraint_listextended_constraint_listconstraint_list>full_listOheader footer-/2duce_ gr?cess_ibafilexy_messagemethod_file listBstate_name7connected sorted;q t_\arch_ՙg2 pair2weight_kan_tree_alnrdiWweighted_sar_score_sjP_jT_uU_templatevE_template_stringvnvalxp~tfilterˆR_template_profileunique_name_seqcԐblastlhaschecl_matna_libes_lenioeft_pad_string_arraysgammaau_RviterbiDstnght_nodesְ2_file2dpa_list_filepresidue_;matAstringnodup_listӵlinked_pair_wiserune_listosk_old3istance_matrixefined_residuesBpa_tree2ea@inked_pair_wiseuster_dipair_listlist_bordersɶsorted_diagonalsstance_matrixag_cap tstd_tree_2ĭclustalw_alnprrp_alnXmatrix_pexponantdirichlet_plambdaoligomer_distance_treeref_alignments_coffee_weightcoffee_aln_quick ieQsearch_toireak_listaluild_consensuson_phasic_pair_wiseݻfile2constraint_listlistLfork_eZozamej_treeعuw__explorereproduce_listBlax_constraint_listad_n_constraint_listE_4gpobacknifeetttm250mt_list2multi_thread_job_list2first_seq/k_mat_ward_proba_pair_wiserecell_produce_list@line_produce_list@subset_produce_list@lax_constraint_listad_n_constraint_listE_4gp ena_Am_name_tag{oa_generate_array_ight_pad_string_arrayrmdirt؞bpamcoil_mat lax_constraint_listat3s<_weight_constraint_listEindex_constraint_listEname_seq_in_mmove_uorder_crootframe_atom_4gp_pair2dl_seqs scr:nEaglib_listpavie_matrixblast_mdtreeeqize_t_uencein_weightlistn_listpu_in_listonstraint_list"a_trace xvaluate_Crrorchomst_dituclidean_distnpt4and_lore_weight_matrixconstraint_list_number_alnaln¤file4gp? wre(ixermalloccafstmprite_clistaitЇ ld/bl1_evaluationOnaly`rtopfter_strstra2propertypgreement_scoremino_acid_nitlocpha2_!postc defined_residuesFpYjack`neweighted_sar_scorehsogtrunique_name_alnhbalȑeђinv_posКmНtreefj_treeЭlocal_penaltiesٵo ase_alnlԜns!vmunt_matvllapsed_alntraint_list!_yervationfile2constraint_list"has_stockholm_structuremis_alignedmgap2random_aacstackrink_"ift_oconstraint_list"aln_"Bfile"raw_file2a#e)o=inimise_repeat_cooryu҃sa2struc_distd_ke#in7sKrk_xϗtp_contacts_$compositiontable̿pointtablet%al)sdgroup_aa{rnj_treeǻupgma_treeone_sub_tree_listاfast̽dmoca_nol_alnlup_tablecw_luindex_of_filepest_lib%reen&s*gnore_cachedteratrmsdmin_apdb_filtrationsert_&dex_7ver?tպput_crease_ref_timeitia_clentry2list'gap_colȏhasch_entry_in_listroottree_nodeu'i,eHoKnapayhoff_translatemp_'plicate_constraint_list'msaa(moved_clist(lloc_(ed_alnconstraint_list(floatstring_arrayintlist_int_)2on_n_fields)inv?n_command)l_sub_tree_listthod)rge_Basure_mlast_)22file*name2method_file*list2method4dna_list2uses__tag2value*2TC_method2_*dirblancexecin_+nJwatsonidgarnaspmblast_clustalw_matrixlibout_format_listtiedֹpre_set_method_list,s{format_lists,chotomyffrichlet_codeagpl,tay_,m-pUoXs\X_templatevafile_contentinput_filenameweightsleaftreedistۤcodenoderna_ssethod_names-ateck_.aseqIalno pro/seq_2environement_variable_is_setdir_getenvlifinternet_connectionctreegraphfile_seq_type/gram_is_installedd/just_est_alnu_/rand2node entry2list1list_entry2list2method_output2method_log>random_sequence2alnaseqǣpwarningfile2file_listconstraint2st1ctorialtal_1aread_constraint_list_file2aln2sim_֚nj_treeҹpairget_dp_costcoffee_evaluate_outputtype2pair_in_list;job_list3pw_clurn_3rieve_Bm32Dmʾswmean_rz_scoreax3inean__3lenc4shortintfloatdoubleo4harnstraint_list4or_r4end_Aact_4eme_seqj entry5dmsualnone_seqnol_local_alnȜhasch_entry_from_listcharm_diag_strechesN_diagРp7X_templateۈU_templateF_templateG_templateS_templateE_templateT_templatesequence_strucP_template˛R_templatechartabmatrixarguments_os_matrix7arametersconstraint_list7res_constraint_list:seq_tree_nodeа_8search_in_list_constraint8exitoutputread_ڔprune_treecoe9ruide_treeaotoh_local¸t9nej_9pid_refenv4debugstrΝintԝrealڝb:undefined_listKcSsVp^nla|rd݂wݛtehome_4_tcoffeelint_variablegmfosounds:earton_list_tc_seqкna_;ename_filelib;struc_numbertotal_;partial_extended_weight>extended_weight;weight>n>bin>ascii>b>mmit_>_vstituteoplib_job>jobHt_?se_constraint_list?alnqslist_еessive_index_res_constraint_list@am_namen@r_tree_@As@efunctioncdna_alngdna_alnalnmalnhadowAtringequencehaschlistAstructureresidue_pairdiagonals_pairAlib_extensionBpairstruc2rna_libconstraint_listBannotationseqlistlib_jobCjobHmodeseq_type cDsPpZnode_similaritydڼest_ordermtrandom_matchblast_profile_scorealn_profile_scoreoDa_trace_dna_matrix_scoreurvature_scorenstraint_list_referenceEmbined_matrix_scoreА_constraint_listEumber_alneightEritegetarningind_constraint_listF2sarhмqueueGjobHorpRX_templatepfadintcsAlignment׵weightsܶblast_paramTC_parammocatree͢read_treegotohktup_hasch_dataHmmnwuGsorteueHantile2H_catIheapHlastHnHscend_queueHlJcRgap_alnmfine_b_jobIstO2IIliIarse_dyntIce_out_I2ӻjob_listJseupgma_mergeͻconditionnodes_ete_Jayed__gap_from_profilejobJfileeJumberver_undefinedKutralwick_Kmain_uble_logBanalyse_listKsystemk_Kter_trimseqentryLlist_with_alnLpare_Lcomputelist_and_seq4swLc_pairLL  aMhylip_treerogram_informations_irMram utput_Mr_Qneletaa2threeletaald_ϖverlay_alignment_evaluationpNlOwscaest_prffmblast_matgrAlignmentt߇informationsŗhnode_alnaOir_w_hylip_alnirOvie_mat׌ _wise_sequence_resultsiOastOb   Б _OseU2_aPvs_Wprofile2scorefevaluate_outputln2PnalyzedcorPdeltaTevarfmotifϙЕ ar_scoreQys_call_ioolegments_with_ktupsp_matrix_score2Q1a nchmark_sarQst_ta_mat testRloo\id_evaluate\aln2pos_alngjackgcomp_gsgpredicth  _listR lare_Rode_nameor_predictionSfadoubleintۮcspAlignmentͰweightsrna_structure_numtree_nodektup_hasch_datahmm oTdna_ache_timel_paramurvaturempound_nameTv_wУ 4T_˖sarTtree0T3d4f2f1f5f  redictionUos_ _2`2Us2motifs\regexp_motifUword_motif\motif\ qUt2subsarsetc2anti_sarseqV_pair2eva ar_simWeyim_plit_޸thortest_stringwissprot_sequenceub_fasta_sequencesec_no_cost 2aseqWnp iseqWseqW4W1a 4W2a3a5a1a iXdƟrth2filenamevie_mr_Xnt_nodes2alignedseq2seqXwiseres_suitable4trmsdcolumns_suitable4trmsd r_Yutput_filenamehelpYsummaryf rYos_simpleedYofileictiYœve_positionsYon\_YgmatYscang 2Z_namepos_listZstringli rZhysico_scoreedictionZofile_score w_[g_matrix2pos_matrixݘighborhood_matchevaluate_prediction[recompare_dinsert_nodesearch_splitget_nodeߪ ar\imple_sar_analyze_ceqplits _evaluate\h 2\ 2\\  Ў    s^orp_fblast_default_valuesmwarning_modefdoubleinpunique_dir_4_tcoffeeemaillandscape_msanode_scoreconstraint_list4align_pdbaa_frequenciesar^tring_variableeq_type r_lugins_4_tcoffeeawddb_Ȋiőediction_target_o   cache__jack`simpredaprofilefcount`probacadrianad1`3d2d Ф  _group`nife1`2c3c ze_`se_compoundsaoveralnsequence Ю     м    2aa  magnifple_b_ilarities_file2sar_btrcheck_internet_connectionreprogressive_alnanalyze_bpredictfpair_colbvotccolf pair_colccolf _c2dnewcolde     chectse_insensitive_strcmplc2predd_5d4d_e3e2f1f  im_preddymbolsub_tree_list       _egappumbercol4trmsdcomp_coleres  forbiden_resenewe  6e5e М         _simf offsetfnameh       simglistkЎ     posglooh imgelf_predictharhcanh 2_predictionshn_predictionshtwo_matricesprofiles2file         _compoundhh   eq_posiub_alnplitЌcacheirepeatest_sequencebarton_entryar_sequenceiplitЛ2iqtrucjubseqim_mateq_chainpdb_idjtemplate_filev2jrpredprotkexons name2lhas_templateucoor2alnlist2is_pdb_strucreformatalnmsagenepred2accviterbipair2indexlcooryremoved_seq_nameame_indexloˎumber_list_in_fileprocext_bestseqmalntreeդ_msmapeqmub_alnperagemwefined_seqnomain hread_neqrc_trimseqwo_޹oild_substitutempype_is_exon_boundariessp_alndopȤaa_seq_on_dna_seqseq_struc2alnefined_residues_on_alnonaseq_on_prot_alntphort_alnzampleeq܋imcub_rucpd_treeʭlnprray_npp4treev_pospdex_listdate_qgma_per_stringstrRNAfold_listqaln_random_tagstringcachemplate_type2rstߓtype_namershort_type_namerrrazore_ isnrchrsctocatfget_param_overlapucaighten_ngsp_file_from_comments_s2~s2alnconsarray_variable_issettains_template_tagtvert2t_list2blockblockthmmtop_predap_cachetraphfoldtgn2u_list2cov_listcov_uacacheustatvaln{list{seq_from_alnugȀecharsettemplate_stringvvaluev_X_templatevumberbЅ2aln2vvcalloccowmax_simsnseq_prfecl_raw_scoreunt_matwns_seq_maty3w2ܡЇmaster_aln_arraywaln_arraywnxphabet_x2simposxgroupenna2listxterbipw_alnxaln_weightÙ_fsay1y2Й2ތseqymaj_matyqyparating_char_yuencesimzfsim|winsimכ_z3z2|distributionrmalzden_extended_t_coffee_evaluate_outputize׆ck_{ndard_initialisationaln{progressive__upgmaame_group_aa{ettruct_category2_|maxgroup_aa_distribution|worst_seq_oldtoken_in_filelongest_branchl}tomic_distancemps_srray_typevg_matrix_n_}phaco}stockholm_structureʚtypel_weight~mpare_simalphabet~keyinverted_stringlistnum_listfilecontactswsim~dbrofile_fragmentЄnrge_residue_coordinatenel_profile_profilees_indexagb_valuesemplate_mstrucblastx_dbЎfileseqtype2€ap_columnraph_gap_columnseq_best_frame_dp_costsimwinsimцКandom_́esindexseqorderalnep_aphseqfunctionmpty_sequencendseq˂aln_2ׂefined_residuesiomain_dp_costp_costw_sim_aln_arrayndom_valueo΃at͞lumnmpare2string_contains_gapore_an_aln2score_ascii_alngapgЄcal_wid_score_2adestroycreateseuristic_coffee_evaluate_outputndle_…sX_template_filesseq_template_file_template_filesuence_seq_template_files2_Scorearraypdb_filearray2dist_arrayfilter֡pair_wise_lalign_array2sim_array2nj_treeance_treeandom_alneoot_treetate_alnoted_treewalnՈseqߞb_ffixeseqaln32ment_щte_agreement_scorestringalnə2_črandom_subsettype_nameΔimunkate_local_alnaeemsdmat2tree_seqaln_seq֋ca_traceseqborderswith_seq_nameЋ_mainchainaln_seqpdb_filefasta_file،in_file_2geneseq2geneseqaln2idmatcons_seq_3frame_cdna_alnٞlist2unique_name_listis_in_listarray2index_arraymmtop_preditMat_2l_de_distancealn_borderseqlitomgn_seq2alnfold2alnĚumnsalnresiduesʕ_Μpos2maln2global_malntree_alnootstrapΐlocklow_treeean_sequstalw_alnrayg_parse2alphabet‘_is_in_setphabetݑifoldЀЁ_s2accuracyinmiscn_st_aln˒t_stringsntropycl_raw_scoreify_y_fast_alnmemoryЙexon_boundariesٓinternal_gaps_dna2genefuncgene2prothsort_list_arraypumn_is_͔lapse_sub_treelowersuitable4trmsdcolumnres_weightssegmentaln_columnĕspdbTseq2STalneqHCtartconvertlower_upperupper_lowerswitchcaseŖeep_residues_in_ill_child_pidtupalnseqbilistic_rm_aaɗ_pair_wiseѻ_ڗshiftintexplorememic_ate_get_seq_simƘevaluate_profile_score_normal_distributionaln_arraymaster_aln_arrayћ_normal_distributionВГИbest_comboin_list_for_clusternode_sar_alnЩбmatlist2imub_aln__mat_oldśinsim_aln_arrayeightramble_seqaleӞЯean_pw_alnustalw_alnstr_4_tcoffeealign_sequence_aln_arrayʝance2charost_similar_sequenceatnalyzelnaln_fileǞseqap__headershortcharintfloatdoublegap_in_graphd_ߟ_string_arraystringalnП123mp_matޠv_matntactsq_in_aln_listtimseqee_cmpІ_templatesСs_names݌и22_P_template_filesensitivityevaluelistconsensusfileseq2template_seqpairalntree_alnfile2profileuenceڣ2alnrf2seqackage2_tcoffee_envin_seqgotohnwrofile_files2alnairnameresax_memodesequence_lentimeboot_treedist_treevisited_nodesЫynamic_memoryefined_naistance_matrix_fileډrray_sizeئlmps_aln_new_2filesize_iterated_alndoublefloatħintʧcharЧshort֧Юem_usageoca_interactive_choicesair_wiserollocƨt_nomemset٨ߨжnameloatȮ blast_param̩TC_paramҩmocaةdީcweightssintfloatistance_matrixoubleonstraint_listhar4lib_computationǶree۪closegetsoм_rraylnӰNݯ2nomemsetloc_ȫign_òadoublefloatintcharstreerraylN2doubleܬfloatintcharshort_eassertivsscanfmkdirsystemnameޭloatastal_profilenomemsetұhortequenceִ_nomemsetر_nomemsetޱ_nomemsetharonstraint_listl_nodes_nohortʯequencetructure̱plitأ_nomemset_nomemsetrofileidtableprofileǰacintdoublefloatshort_array22equencetringhort_simpleƱБmemsetderrayNlnݵoubleistance_matrixܴata_in_alnp_yn_matrixКharonstraint_listhortequenceparsealloc_ӳroot_treeintcharshortfloatdoubleМignmentn22ƴ_array4lib_computationallcl_nodegraphܰfileѵba_pair_wise׻_arraylntomonstraint_listhar_softֶ_fullИМТate__memhasch_entryݷktup_hasch_dataearchort_initnj_treeظget_dp_costcoffee_evaluate_outputdistsizenode_heappair_wisemergetree_aln̹_aln_rowsƹway_splitpass_linked_pair_wiseĺoat_ag_dist2nj_treeϺlogB_leneractive_domain_extractiondist2variable_issetlogBnj_treeupgma_treeupgma_treetree_fastalarrayfilecԼarraylist_filemppyЦfloatlist_intؽinttree_arrayҡword_2ҽ_inv2_memcpy_p_typeshortintfloatdoubleľax_ھin_shortcintfloatdoubleharoor_shortݿcintfloatdoubleharoor_и_hor_hor_horл_hor_hor_lenshortcintfloatdouble_horharoor__hor_hor_horп_horintfloat2D_float_is_installed2path_Ncharoldrarting_ucۀlinesimvariabletypeopapraph_gap_columnmpose_extension_modefile2remove_is_ondiagonalsile2remove_p_oextensionnffOISTOKUPG_nanfuisnumbernt_lognumberken_is_in_fileggle_case_in_align_two_sequencest__seg2number_array2number2tes2sensitivityndomize_listlpha_matdir4_tcoffeestringvoidnullarray_arning_listexonsڂopu_usagemmand_linentactsfailure_messagesuccess_messageccuracyvg_bootstrapycle_oarrayfilestring_listint_listtequchard_alnimilaritiesaga_alnɖriockholm_alnԂatisticsng_wrapct_clustal_alnXPmailMPTYaddfunction2N3456doubleintdoubleintpair4tfoЉ_variableafter_charidЌ_eate_ashop_stringfilelinear_treetreefile2remove_listt_coffee_environementtringeq2xitrs_miller_pair_wiseǵexistsis_emptycatpcommentary_line_in_filespacecursive_combination_tablef_alignmentЛОtrrandstrncmpcmpenatmatistТch_motif2rix_filenamnamearray_intemailproxysimilaritiesconc_alnабpid_npid2мum_d_chardoublefloatintshortchardfloatintshortchardoublefloatintshortchardoublefloatintshortchardoublefloatintshortchardoublefloatintshortchardoublefloatintshorter_stringstr2inv1Dse_tTree_ram_setfnamecategory_listחiff_floatoublechardoublefloatintshortВб_aln_listegories_evaluate_outputд_rankapdb_filtrationintfilearrayоcharintshortfloatdoubletrstr_lqman_pairupperlowerh_filechla_struc_format˗pha_linensymbol_in_arrayres_in_arraygap_in_arrayline_in_filechar_bet_um_line2path_is_specialm2plotll_functionssinovcleic_acid_orderupperconvertlowerimemp_4_tcoffee_coffee_environementrerm_gep_costurn_ot_prob˻ableolustal_alnmpnlor_letionact_alnÖ4halfmatЀЁЂ2_oldADDPLUS_EQUALS54673Джз2н_log_chooses_NainDeltaMatStatelognv_variablemxitst_exitexitsystemfilerkpenidroxyath_4_pluginsnscebacklate_form_sequenceversal_matchsdna_nametringplice_dna_alnst_for_dupnk_from_fileist_of_tokensongest_int_variablesmodeint_variablesmodetring_variableeq_typetring_variableeq_typeЈailitPairsʺ_from_envtringsplits_in_fileeo֒ometric_distancep_costile_existsor_update_startend_directЩЫethods_4_tcoffeecoffee_4_tcoffeesa_line_lengthatrixлн_clachel_for_moca_exitfile_if_string_listint_listcopyrename Є   Ј lca_distancesdomain_lengthmatrix_ongest_line_in_fileambda  in_filex_in_file  iasta_Ώeaturesrst_non_white_charle_   all_perl_scriptperl_scriptseq_   Щ Э rray_intln   nesstж    xyfile_mode_function_from_env        rt_tmpnam_2w_pair nam_2am250mt te_liıvtmpnamprofiles   utenvos2profile  block_patternlistГ  _nlines rameterthir_wise_function  stringframeʎ rray_charlnscii_tom  !!!!rlstom_pair_score_function!л!!!!!!!!!!rerlScriptoeviousxybaк!!!!!!!!strstrreformat2fasta֓!!!l4t_coffeeonfiguration4program"""ad_code_treeca_tracetreeƯ"К"Ф""Ъ""2nblist2nb_matches_pattern""entify_score_pairmatcontactsseq_formataln_format”formatȔlist_formatԔ"""_2ݿca_traceseq_bubblenbtransversal""""""""""amvgccuracy_counts"inax""""tiap_fileeqroŋechuc_"""name2aln_format_nameis_""###c_alns#lignrge_header_headeraln#asta_req_matormatstreealnub_alneq2###checkalnڅseq#weights4sagalib_saga_aln#_uence_resultsweightsreliability_ascii######GCGCheckSum#ault_fasta_seqosf_alntln_pvalŠ#rix_headerЧ#ir_nameՀavie_matrixdb_#_gorture_residueї#cklance_treetch_main_translate_dna_ʁward_proba_pair_wisecodonseqalnЭ#idcl_with_moca_domain#eneric_lalignointerleaved_aln΂clustal_aln###cmpinverted_mat#Xц#####ervation_statistics̃traints#tate_scle_profile_profilesolacdna_aln##lnmino_acid##in_format_listout_format_list$$$$atrixethod$$Џ$$З$$$nalignԅeliability_Ш$$$1del_alncca_aln$г$r_seqtoh_seq$$$_fasta_seqˆ$$1S$$_withscore_res_numberout_header$_with_res_numberهscore$ransitionsotal_results$_pw$$sшconc_alnoligomsfpirfastaagawissprot$$matrixfile$mngle_seq_weight_fileilarity_matrix_fileԉple_pdb_file$$$$filenamestruc$$$$alntree$$$$file݊sidь$$$%%roupotoh_aln%%ifoldnʓ%%%%ckholm_alnڋp܎%%_list0%12%%%В%%%trucˌequenceܓ%%%%dna_alnseqЪ%%2_seq2accuracy_countsaÍorf_lensdzsum2ccэvguracy_counts%%4all%%%codonseqaln%%%_on3frame֎S%%%%%%&&&&&&&&&matrixaln&&sȏ&sequencetree_rawnum&&&eq_named_scoresʒ&&&st_̐ta_Գmatchgroup&''ee_file_listansition_cost͵''''''''ma_sequencer_sequenceВ''''res_weights4acname_and_dist'_daliĒtype(((r_sequencep_scaling_factorТ(((sf_alnatrice(ockholm_alnēructureݗ((((((_seqaln(((_seqaln(((((((((alnseqtree((_diaa))))s_from_position)ata_structureݕirichlet))в)))))м))))))))++О++output_msf_alnmain_read_tree̯+++,,_aln,Ц,----Д--Н----imeq-eaderit_ԙ---б---_asciiטhtmlps..rix..asciihtmlps.asciipshtml.charΙstringĜ.matrixcolor_....charstring..formathtml..char֚stringܚ..formatasciihtmlp...sdf.format˛asciiћhtmlכpݛ...sdf.............///read_sequencesprofile_///////////etypeȝked_pair_wise//////ankosum_to_line////freeƞvrealloc̞allocҞ/п//rimmpam250mt//////splittrees///2ȟ_sortիsnleafprofile_listideeq_listub_aln_score/_àonsulate_sum_of_pairs_score_affineroot_meanڠmean/2listء_ root̡sgroupntot_distdcollapsed_treeܭNgroupfileao//2_file2consense nǢsldmatavg_treecmpbootstrapfprune_treelistgroups/_nodeܢ//list//isplay_treeeclare_tree_nodeޣpa_aln/_nbңbelow_node//////////plit_listtɨeq//_rintϤair_wiseܹ////print_treelocal_tree_aln/00_file000de_ҥmpute_local_alntreesequence000000file2nseqڦdist2normalized_tree_distc۫scanrealnalnp00000nodetree0nodeode_branchesleafseq_unresolvedҧ00roottree000_list00011reesèwo_mat1ar_nodesߨring1111111к111111mpare_ѩffee_evaluate_outputaln_treecog_treesplitstrees11111pa_treeist11from_node٪duplicates122_nodeЎ22222_tree2Ь222_splitɫϫп222ompntains_duplicatesmpute֭2222_list2plitsЬeqүub_seqد_oldެ2222ree_groupshreshold_nodes2eafgroupti23333Й33333333_pmultiple_posޯosair_posˮ3_wobleŮ333_list333iltered_bootstraprame33323333344Ј444444444444444442alnʰ_aln444444graph_alnaln4445_gep_costing_point55ze_se_aa_physico_chemical_property_tablesdna_dp_modelƽeg2prf_modelseq_modelcoring_scheme5segmentalnblock_old555gep_coststerm_gep_cost5gep_costγs̴term_gep_cost5gep_coststerm_gep_cost55ub_costtart_gep_cost5ub_costƴtart_gep_cost5ub_costtart_gep_costР55555555555566_atom7774link77_nolgpfastal77_reföecl϶diag77_ڶnorawpcrmext_raw7quad777788_ŷcsԷmat_old2888888Щ8pair_wisematrix2edit_filedyn8_2_pair_wise_pair_wiseй88_maxa_8lswgpalign8_sticky_pair_wise_lgpʹ8888seq_wise9Џ99_clmat999и99п999bilisticModelMatrix2CL99mputeTotalProbabilitypyMatState99_oldŻ999:::2_pair_wise1_pair_wise::_2pathpath2alnDL_pair_wise̼hmm:_OLDiaomain_alngonalsa_matrix_score_cdnawith_for_two_sequences;;_ٽa_dp_pair_wisegeneric_dp_pair_wiseƿtreeЬ;cdna_pair_wisegotoh_pair_wise;_˾l_cdna_pair_wisegotoh_pair_wise;cdna_pair_wisegotoh_pair_wise;resultmodel;;;<_fastalsimconstraint_list<Ђ<Є<<<<А<_fast<uence<ktupclist<_1_comparisonpair_wisedist_mat_haschstrР<<<<<<d_pair_wise_log_B<Я<<<_sw<<<<<<<=gotoh_pair_wisealn==_sw=_sw===pairaln====pair_is_definedget_dp_cost===uence==_with_coordinates=proximate_domaindb=====alnslow_get_dp_costevaluate_matrix_scoreresidue_pair_extended_list=======>pty_pair_wiseitPairsDefaultК>>_wise>>pair_wisetree_aln>>>п>_>>alnnol_aln_with_seq_coor>_with_seq_coor>ive_ealntree_aln>_seq>>>>>>_thr21X>>>>clustrandom_bipart>_n>>_aln>progressive_alnidmat>Ѐ???_ment2filestwo_pdb_pairsequencesaln????У?2?Ю?_pairid_pair??_pair1_neighborhood_match2_neighborhood_match??_2?????????profilestructure@@@@protrna@@@@@@@2@@@@@AAЃAAidmaxnseqAAAalmsa2ign_nodenAAAAAШA2AA21_modeAA21AAAelayed_tree_alnistance_matrixAAmatch_list2alnpair_wiseseq2domainAAB 234567891BBАBBBBBB0BBBBBBBBBBЧBBBBsapbubblenbtransversal1_bubble2_bubbleBB_23BBBmatchevaluate_outputйBBBBBB_residuesBBЯCCDDDDDDDDresiduesalnDDD_z_scoreDDDoatrix_scoreca_domainnoaa_matrix_scoreDDD_r2DDDDDDD2DDDDDDDprofileget_dp_cost_countoldDEEEEpos_avgenthropyEEEgp_decoded_chromosomem_matrix_scoreEEEEt_sum_pairndscape_msast_memEEEвEE_EE_pairup_profileEdiffmEatchmEEE_arrayE2EEEEEEdue_pair_ze_dyn_matrixnon_extended_listextended_listrelative_extended_listtest_functionEE_2quadruplet3EEF_Fquadrupletpblosum_matrixF_g_coffeeoldrawquadrupletmixtpc4gpF_quadrupletТFFFFFtestpcоFFFFF_oldxshade_evaluate_outputund_hmmFFFFFFFseq_evaluate_outputevaluate_output_old2FFGGGGGGraw_scorescoreGGGGGGGGGGGGGG2G_windowoldGGG4rnaG_refGG2143HHHHHHHВHHHHHЧHHHHHHHHHw_matrixam_matrixHH2HH_sub_alnHHHHHIemissionpair_wiseseq2aln2delta_ageIxDeltaMatStatetStateAreIdenticalnageMatStateIIIIlist2tablements2intIIfull_modeltwo_mat_modelsimple_modelmnm_modelprobcons_modelIIIIIIIII_2pathhmmpair_wiseIJJJJJJJJJ_hmmGL_hmmJ_GL_hmmpair_wiseJJhmmpair_wiseJDL_hmmGL_hmm_hmmKKKKKhmmpair_wiseKKKKrandom_seqtrained_pavie_matpavie_noisy_seqKKLalntreemsasortLLLLL_helpLLcomparemainL_compareonalLLLLLLLgotohnwsparseLLLLLLL_seq2aligned_seq2Lalignmentseq_patternMMMMMMmatrix2edit_filedynMMbladiagonal_stt_diagonalz_diagonal_diagonalMMM2swiftownNNNs2int_compare_dotgap_testeuclidfNNNNNOOOOМOOOOOOos_len_index_of_fileartTree_retreeOO_halfOOO_simOrocessarseO_simpleOOOOOOOetreePPPPcomparerecursivePPPPPPPPPPPPPQQQQQQQЫQQQlarge_profvironдQQQQQQTXArgFPcvuuuuNameFileuuordercodesuu30mt4562mt80mtu0mt5mtuu0mt5mtuuv32vvv1250mt350mt20mt60mtvvvv40mt120mt250mt350mtvvvvvvvw_matbetDefaultwwlosumeta_mat30mt62mt80mtwww1250mt350mt20mt60mtwwwwwwwwwІx؆xxxxxxzzzmemnseqzzzzzzzzzzzzzzzzzzz1zzzzzz_gapowzzabcdzzzzzPP: Md w@  ) @   p @h @ c g0.P9PC>PhpuP0h"i;0kQ@lhm8ff m@m ns @c hc c c' e< eL ] r          ) 2 E T d q (~ 0 8 @ H P X ` h p x    1 = H S f r             ( 0 8$ @- H6 PC XL `U hb po x{      @" H" P" X" `" h" p" x"  " "* "9 "G "R "] "h "s "~ " " " " " " " # # # # # (# 0#+ 8#6 @#F H#Q P#e X#r `# h# p# x# # # # # # #  #  #  ##  #1  #>  #L  #Y  #g  #x  #  $  $  $  $  $  ($  0$  8$  @$  H$  P$&  X$/  `$?  h$H  p$U  x$b  $p  $|  $  $  $  $  $  $  $  $  $  $  $  $  $$  $-  $0  %3  &@  &K  &T  &]  &g  &q  &{  &  &  &  '  '  '  '  '  ('  0'  @'  H'  P'  T'  X'  `'"  h'0  p'=  x'I  'T  '`  'l  'y  '  '  '  '  '  '  '  '  '  '  (!  O-  O9  OB  OS  Oa  @On  Pvz  Tv  `v  v  v  v  v  v  v  v  v  w  w w" w+ w< (wN 0wW 8wh @wz Hw Lw Pw Xw `w w w {( ? T i u ȏ Џ ؏       " . : E (N ,a 0k 8t @ H P X ` h    h l p x% 2 7 > E O [ f t   Ȝ М Ԝ ؜     d h  p x( ? M \ e p {    ȝ Н ԝ ؝      & 2 > I X a m ( 0 8 @ H P X ` h p  x % 0 ; G R ] h w   ` ğ ȟ         ) (5 0A 8F @Q `Z m          ( 0 8 @ H P$ T- X6 \B `K hW p^ xh q {        ȡ С ء                 ( 0 8 @ H! P% X) `- h1 p5 x9 |= A E I M S Y _ e h k s {    Ȣ Т آ           ($ 0/ 8; @F HQ P_ Tm Xv ` h p x           ȣ) У: أK f w        ( , 0  8 @# H, P5 X> `G h\ lo p x         ) Ȥ4 Ф> ԤH ؤ\ ܤn w         $ ( , @$ H0 P: XD `N hW lh py x      ȥ Х إ      * 6 @ J V ` (j 0v 8} @ H P X ` h p x      & ; D Y Ħi Ȧ~ Ц ئ           (" 0- 8; @F HT P_ Xl `{ h p x            ȧ  Ч'  ا3  ?  K  W  c  o          (  0  8  @  H  P  X! `! h! p(! x3! @! M! X! d! p! |! ! ! ! Ȩ! Ш! ب! ! ! !  " " /" ?" O" ]" o" " (" 0" 8" @" H" P" X" `# h# p# x)# 5# E# R# _# o# |# # # # # Щ# # # # # # $  $ $ "$ (0$ 0=$ 8J$ @W$ Hd$ Ps$ X$ `$ h$ p$ x$ $ $ $ $ $  % % (% 1% Ȫ:% ЪC% تL% [% h% u% % % % % % % (% 0% 8% @% H% P% X& `& h%& p2& x?& L& Y& b& ȫp& Ы{& ث& ܫ& & & & & & & & & & & &  ' (' ,!' 00' 89' @K' HU' P_' Xk' \w' `' h' p' x' ' ' ' ' ' ' ' ( (  ( 3( A( ȬQ( Ьa( جl( v( ( ( ( ( ( ( ( ( (( 0( r ))w#)*)@/)g6)@<)B)0EK)pU)`{_)qi) s)})G))f)k)@)S)@S)S)X* c * c* d"* c2*<*zL*x`*jt*`l{***`* ****** c*++H-+C+ a^+o+r++? + 9 +p-++@3+,+,8,0Q,@M^,l,y,`e ,V,W,,&,@B,E ,2,@, -0---+D-`T-f-u-`-J-8- R--Ѐ-~--y .. +.p=.>P.Ќ^.0l.`~.P8.....@..P /0/ /-// 8/`+D/*U/hf/s/`/@/// / /= /@ /$0%0O000@0 J0rV0kf00rx0@ 0 0O0@g0`G0 01@1(1@61CB10GM1_1 Mh1 w1K10110!1 1p1C11 1g2[2F"2&52@N20^ [2` u22Х2222i2 2 3 3 P#3 e530I3PV3pl3@~y3c3S 3 3@303@3ph3:3}40.4`4  24L4d4l~4 4@n4L444P"4P&4 4@5 D 505 *5 55 @jA5 nM5 sY5 `we5 {q5 }5 5 5 @5Z555 5P5566@"6/6<6 I6b6r6p66 6 6} 6I6$6P7p#7C7@Z7pGr7J7 7B77<7 7 h8`#8G8 Z8nl8p+ y8pm8) 8P8 +88l9>9 9 #9Q:9`VE9 N9 V9 b9o9 9 9P\9 \9R9W99 : ': <:` R: l:@ ~:: :0: ::з : ; ;k;r*; :;@M F;@ V; d;(r; ~;T ;_;@!;!;;;@;; <  <PU <6$<<<0(X<y< < <<P<X<@Z<pE= =P*=N5=C=0BL= &^=@l p==`==@ = =Ѝ=  >pG >p+>eB>R>Ae>@E>P> W>0>p>>`/>>09?4#?k3?@0E?P*e?w?pR?p ?p??5?K?@@3@M@+o@-@0@i@`4@@@#@Г@@p, AA$A .A`6]\]PLw]0>]]@ ]`]0]P6]5]P ] ^ ^3/^` 9^#C^Y^PNd^`m^pPw^Q^p^^`^"^P( ^;^ ^6^P  _ _ (_@76_`? G_X_@j_{___pD__P__V __0``@!` Y ?`Z a`z```08``6``]``#aP7a[ Lapia waM ae aPP ad a0a a bp b,baAbbWbcjb b`|b bM bpd b O b0e bP]cc)cFcP XcP.mc@{cQcccPcpc@!c d@d"(d-;dqOd0\d9wd3d%dpdpfddadPid e *e Be Re%`e2xe`' eepepB e0eP eff`+fk >f=RfP ^f uff  fPf}f ) fPoff qf;g" g8gp;Gg Qg > _gO kg`* }gM g g g0+gpg@g@khhz"hI4h"KhZh jh0 h h0 h`hhD hhh0ii` i:i0Ji Xi ki@ ~iiPi0iiai jM jB -j`eAj@Rj/bj sjpjjN j j j]jkB k=!kP$4k@~Bk@ Wk0 kkM ~kd kM kd k/kQkkl@ llp #l +l#>l 3Pl[l0Msl@l`l`(l0HlPlp1 l: lpvmm`|m@(5m)Omfmqmmmmmm@ mpm'm@'n U nTn6nU?n LnWnbn`!nnn`$n3 n n3 n7 n. n nGopA o.oh5o@HoPX_o]zoo oP o`Woo0C pB 'pQ >p6Qp+cptp E pdpPphp] pptp. pTq` q@ 0q0Bq`Wqpsq 8}qqnqpq0qqqq r %r`&0r&Crp%Tr%grsr9rr rN rp/r2 r2r)rPI r6  sp7  s3sPCs7 \s.dsws.sТs( s s0$spsPsX t  tH tI t`H ,t 7tI Bt` NtP/bt mtxt t@7 t7 t0@ tJ tt /t9 tP3 t6  up9 u0I 9u`F Ku0p Tu`_u xu u@=uuuP6u0uup_uнupuAvPvv+(vHv eTvjvp}v@vv vPv0vp;v09vxw w Pw0w*9w!Cw 3 Pw Zw^lw0 w w ww w`ww xxzExgixx_x^xpxwxp.xx`xbxy y_yZ*y'7yEy hJyXy `y fysy&|y yy5y1y-yp2zpn zn 6z Kz0 _z@ujz wz z1 zp8 zG z@ z\zY {`{#{o:{P{Pj{P{{ !{{{pJ||<,|>@|2P|`c|q|* |||| 3| }F} .}p=}p\ Q}  _}n}y}}}}P}}}~1~6&~p@:~`<S~kc~l~^~~~~М~+~ `~~@~ ~ ~ ~ @~ i4DUsmCHB  7# :=W!ppPpyP ؀!pk *)w8 p>N ofPrPg    ƁЁ`ہ[ K   B46 D\0m`e  ǂd ڂ 0 q s) 7p HPZn  0` ȃ܃ 08vA:MG`ZoVP  pЄ؄0 0/@  X! 0@7:DLpSa u `QPiTȅ؅R ez ~a)Ps1pByKc\Wd`PmPY  p# U چp] @ & &8@f LP ` u 0 С P >҇P@ 2Bi T f ypV @p̈߈X  p; a .N ^ n` U    ҉PJ 0   0I 4h @pFM< _`kcpZ   ̊݊FG  Q P^ 2 BT0 d u`f   ڋ @  @ "P 2 C au@E / @+ Ό f  'V = & Qfpu@OO0Kэ @d  * 4 `> H SpO hu`SƎ׎!"p&, BX0up`( xǏяPGڏ6z'7@0XKW_m0Z x?`  0А PA )<2 Ip Z m)|$H@0mɑ ܑpE0z # 20 CPR0 _0\ n0 zp l\ʒےp  +P;I^Wrк:Hʓߓ;#=PiOp]0.  0 ڔP P#*{4@N]"i"u#~$p• ΕXޕp    @ # @. I@D W& a pF  PȖޖ@1*@J ?+O0 _B kC z@ $   p җA f  00/F @]0J m}Pp% ԘP p  0  П`)мDpapJ `G  `ʙؙ` p@ p)09PHpUgv @+ @$0 ƚ0*ۚ` "=M`ug~6 5 ˛ޛ p . 6 C@[ ``q p@sDƜ לP] @x  0A5.02D`pp( HmP@ޞp$Drd:#Ɵ@؟   `%?0X oàpנp5` Lpezp`šڡpN @$`;pPgpz ɢНݢ @  &>Rev@@ţpݣ  p30J\Пr` pͤ פ  0*;N`p P`P Х`5 @ ,60IVp3bȭg r `}  ` ` @@զ  /`AS`h@}* -@JͧSܧpP@C$!70EaS`mPzc ` ʨѨ` 5<``0Gpĩ` ة` & H&Ap UP,k A  U.pժE'4@DOM0ZkPTzp~`zPyϫPݫ0}p{ `"} 0=,IPT d@q0a{P @r`ɬ֬UP000 ,P}9pDTQ[^hkl {@0 Pǭgԭ`g@@A >0&@4WBTлfиxXp` ǮMt,^/iG`^wP ``ϯ߯PY| ,8C^sP пʰݰ `OZ00",60n?@JS0 avPñ5 ұp%@@* //p; Q: h 0Cв  50+C8Wg hPxp `[ѳ PpX 4!;]Pis+ 0pӴߴ0@@o #5~F,VpEiF{@\ ` εٵpPp)>`W`t``0  öڶ N  @[ 1PBPOgPQs`C0BCƷ`:ܷD8"`92I~V`pzV0pR Р˸0[   7pHZ`gpp#¹ԹP[pY@] P`*19sI`]hup* 0LPpsú@ ` j"?2 >0 LV`pp0 Pƻ`[ 0(P|AS@]Pfp{@С  ` j ʼ` ޼0o    0 5pG`Z gp @ П | 0 p ǽ ؽ4 @ t % V #1 3 >` I S dH u @: 1` 0  ;pQ p 9 ,8 C [ o0 ~ P   ̿ P'     ,$ ; GP `P n    0  T`I PJ`&5pI0R`mv|``uo@O0K>  $`4ANЦY0h `pp   P "9G@V@cdybbg@ @!P@0-CHQ ` n zp   mP`0* p4 `p&4HVjzw@ P!P `* p%@/8?5KUc l@^xP]GWP Э#ح',16; AU^jy #,4>CKQV^fmt{ !(.?FKS\djp '/7@HNU^fox         ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v @@              ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v _fast_merge_constraint_list_slow_merge_constraint_list_ebi_email_message_add_file2error_report_output_age_matrix_seq2year_get_pdb_sequence_from_field_code_dpa_tree_find_seq_chain_compute_cw_tree_compute_fj_tree_locate_diff_sim_forward_so_dp_biphasic_forward_so_dp_suboptimal_pair_wise_backtrack_basePair_make_p_ptrs_pavie_mat2pavie_id_mat_pavie_score_pavie_aln2id_pavie_aln2fmat_pavie_fmat2pavie_logodd_mat_output_pavie_mat_list_seq2pavie_seq_align_pavie_sequences_pavie_seq2pavie_fmat_get_accurate4PROTEIN_defaults_get_low_memory_defaults_get_rcoffee_defaults_get_rmcoffee_defaults_get_rcoffee_consan_defaults stub helpers_emitSingleDefault_emitPairsDefault_DNAemitSingleDefault_DNAemitPairsDefault_dm_pot.13016_pvars_digits.21132_line.16321_MAX_EST_SIZE.18565_max_n_warning.18285_max_diag.20945_alphabetDefault_initDistrib2Default_gapOpen2Default_gapExtend2Default_DNAalphabetDefault_DNAgapOpen2Default_DNAgapExtend2Default_mchscore.14390_issued.19782_list.19779_g_matrix.19397_tot_extended_weight.18293_S.18061_translation.16804_sn_list.16648_max_nseq.16647_entry.16543_entry.16323_sn_list.16320_dp_mode.16318_mat.16317_name.16315_buf.16228_buf.16068_read_mode.15975_entry.15336_posC.15111_posA.15110_S.15058_NCL.14880_line.14273_subcommand.14272_line.14243_buf.14242_buf.14037_proba_pairM.13732_list.13705_lines.13704_bufA.13695_bufS.13694_fname.13693_set.13630_log_file.13629_file.13628_header.13626_entry_len_njobs_entry.10687_lname.23036_S.23035_isset.23034_O.22940_I.22939_M.22818_slist.22816_O.22606_I.22605_array.22351_plist.22350_tpos.22349_list.22348_plist.20916_words.20915_a.19620_v.19619_aa.19013_naa.18854_aal.18853_aa.18852_clen.18800_iseq.18799_result.18708_lu.18640_fresult.18538_result.18537_iresult.17975_result.17974_sim.17173_mat.17012_mat.16851_mat.16725_sim.16377_sim.15465_tscore.14006_cscore.14005_r.29450_alp_lu.29449_alp.29448_buf2.29447_buf1.29446_list.29445_smat.29175_smat.28832_mat.28589_entry.27853_ln_group.27761_lgl.27760_ln_group.27703_lgl.27702_distribution.27701_field.26041_field.25914_cw_dot.23824_ng_cw_dot.23823_cw_col.23821_ng_cw_col.23820_cw_star.23818_ng_cw_star.23817_mat.23816_mat.23642_mode.23638_gop.23491_mat.22986_array.22773_rv_buf.21575_ntemp.20837_script.20836_ntemp.20816_script.20815_name_list.20428_blen.19215_buf.19214_aa.18754_first.18567_string2.18555_string1.18554_new_tot_count.18553_old_tot_count.18552_column_count.18551_alp_size.17424_alp.17423_O.17407_I.17406_seqindex.16862_S.14884_score.14786_Cache.14785_result.14784_coor.14543_seq2.14542_seq1.14541_warning.14256_tag.14166_max_size.14085_size.14084_list.14083_key.10606_a.10605_free_heap.10604_heap_size.10603_heap.10602_root.10582_s.10563_j_a_split.14206_mat.14105_h.14016_n.14015_fl.13830_ns.13829_ls.13828_mat.13679_first_seq_last_seq_nseqs_names_tmat_av_left_branch_right_branch_tkill_lu.20669_lu.20638_ref_time.20440_flag.20439_ref_val.20438_fname2.20343_fname1.20342_state.20270_nbuf.20158_buf.20157_path.20133_name.19915_debug.19885_buf.19858_line.19789_fp.19788_number_of_parameters.19515_parameter_list.19514_stdin_file.19298_name2.19297_name.19296_done.19207_name_size.19120_root2.19118_file.19116_root.19115_v.19069_name_size.19082_tmpdir.19081_root2.19080_file.19078_root.19077_ext.19022_email.18988_set.18967_email.18966_ntries.18944_ntries.18908_set.18858_proxy.18857_no_plugin.18819_value2.18768_value1.18767_buf.18766_n.18699_val_array.18698_name_array.18697_n.18608_val_array.18607_name_array.18606_standard_initialisation_end_done.18241_standard_initialisation_done.18154_string.18120_pid.18111_os.18046_nproc.18027_methods_4_tcoffee.18019_mcoffee_4_tcoffee.18011_cache_4_tcoffee.18003_tmp_4_tcoffee.17990_dir_4_tcoffee.17980_home.17958_home_4_tcoffee.17957_plugins_4_tcoffee.17942_attempt.17752_com.17691_email_set.17587_proxy_set.17586_n_unpacked.17585_unpacked_list.17584_closeF.17489_openF.17488_time.17433_time.17412_buf.17354_s.17157_initialized.15651_np.15517_p.15516_string.15300_check.15242_l.11313_l.11297_key2_size.11233_key2.11231_CACHE_4_TCOFFEE_TMP_4_TCOFFEE_DIR_4_TCOFFEE_global_exit_signal_no_error_report_sort_field_order_local_table_ref_child_ticks_pidtable_pidtable_s_n_warning_warning_list_warning_mode_tmpname_ntmpname_n_tmpname_file2remove_flag_cache_R.14234_ligand_file.14079_struc_file.14078_tag.27216_n.27215_name_list.27214_clean_flag.24365_lu.24234_amino_acid_list.24233_cw_col.24231_triplet.24230_r.23848_mat.22100_mat.21784_mat.21502_mdiag.20943_ml.20879_m.20878_max_score.20798_output_header.20227_line.19848_put_seq.19446_line.18965_max_len.18964_line.18884_max_len.18883_S.17743_name.16873_buf2.15472_buf.15390_display.27132_s.14027_nbuf.14026_buf_result.14025_buf_names.14024_file_name2.14023_file_name1.14022_nbuf.13928_buf_result.13927_buf_names.13926_format.13720_r.14148_struc_r2.14145_struc_r1.14144_fps.11728_buf.11727_fps.11363_buf2.11361_buf.11360_fps.11168_buf.11165_ps_code.11045_html_code.11044_type.10475_type.10455_warning.10382_ltype.10381_l1.10659_title.10655_sname1.10654_seq1.10653_line.10652_line.10758_line.10821_line.10841_line.10436_line.10357_line.10498_fin_seqFormat_chartab_tmp_outfile.18525_tmp_outtree.18524_command.18523_S.16843_dup.16797_S.16796_node_index.16768_n.16700_f.15363_list.15036_in_fj_tree.14773_pos.14173_B.14172_group_number_pw_sim_node_index_root4dc_n.13337_Nlen.13247_N.13245_galn.13078_cycle_CL.13067_M.13066_CL.12984_mat.13734_mat.13644_mat.13555_M.12898_zero_CL_ns_l_s_Aln_pos_seqc0_seqc1_min0_min1_max0_max1_mins_q_r_qr_tt_numnode_CC_DD_RR_SS_EE_FF_HH_WW_II_JJ_XX_YY_m1_mm_n1_nn_rl_cl_lmin_flag_sapp_last_I_J_no_mat_no_mis_al_len_SS.13063_RR.13062_DD.13061_CC.13060_sapp_last_max_size.17569_sortseq.17568_MT2.17567_MM.17566_MJ.17565_MI.17564_slist.17563_list.17483_diag.16016_pos.16014_diag.15904_pos.15902_alp.15108_max_lj.14474_max_li.14473_m.14472_t.14471_gpl.14470_trace.14223_al.14214_max_lj.13736_max_li.13735_m.13734_t.13733_gpl.13732_kword_warray_rmat.14566_TinsProb.14185_TmatchProb.14184_emitSingle.14183_emitPairs.14182_transProb.14181_initialDistribution.14180_matchProb.14179_insProb.14178_transMat.14177_max_l.13816_forward.13815_max_l.13618_backward.13617_entry.13465_tot_new.13345_tot_old.13344_list_max.13337_list.13336_entry.13335_s.12698_p.12697_s.12671_p.12670_TmatchProb_ml.12656_TinsProb_ml.12655_TmatchProb.12654_TinsProb.12653_emitSingle.12652_emitPairs.12651_transProb.12650_initialDistribution.12649_matchProb.12648_insProb.12647_transMat.12646_trace.13595_LMat.13594_Mat.13593_mJ.13589_mI.13588_max_len_diag.13587_max_len_al.13586_M.13281_group_list.12954_n_groups.12953_group_list.12903_n_groups.12902_trace.12910_LMat.12909_Mat.12908_mJ.12906_mI.12905_max_len_diag.12904_max_len_al.12903_buf.15089_pseq.14821_H1.14820_ng.14700_gl.14699_a.14566_free_heap.14565_heap_size.14564_heap.14563_a.14467_group_list.14102_n_groups.14101_group_list.14055_n_groups.14054_group_list.13980_n_groups.13979_entry.13672_l_s.13436_ns.13435_gl.13434_ng.13433_prod.13254_ng.13173_aa.13172_code.13171_cp.13119_ct.13118_memo.13117_tsize_series.13359_trace.13126_pos0.13113_alphabet.12899_mat.17764_dps.17679_dpl.17678_pwl.17677_npw.17676_ls.17541_ns.17540_R.17076_n_groups_done.16992_R.16991_n_groups_done.16794_R.16793_n_groups_done.16617_do_split.16451_n_groups_done.16450_target.15212_dm.15211_rm.15210_local_coor2.14892_local_coor1.14891_align_mode.14654_M.14653_matrix.14652_A.14645_align_mode.14585_matrix.14584_ns.14467_l_s.14466_blosum.14392_seq.14371_blosum.14307_seq.14287_entry.14038_program.13597_command.13596_s2.13175_s1.13174_buf1.12951_max_L_len.12927_L.12926_entry.12917_align_two_seq_keep_case_SNL_A.13407_thread.16173_mat.15955_ca2.14044_ca1.14043_vZ_2.14042_vY_2.14041_vX_2.14040_vZ_1.14039_vY_1.14038_vX_1.14037_table_size.14024_table.14023_table_size.13925_table.13924_table_size.13824_table.13823_min.13670_pdb_param.13381_PWCL.13380_mat.13353_B.13316_R.13359_D.13358_matrix.13280_lup.13224_array.13124_array.13101_tgp.21082_freq.20515_list.20514_freq.20335_list.20334_frequency.20262_entry.19867_dummy.19648_last_tag.19647_dummy.19555_last_tag.19554_NCL.19503_last_tag.19502_check_list.19394_last_top2.19393_last_top1.19392_last_ns2.19391_last_ns1.19390_n_pair.19385_is_in_col2.19156_is_in_col1.19155_n_hasch2.19154_n_hasch1.19153_hasch2.19152_hasch1.19151_is_in_col2.18905_is_in_col1.18904_n_hasch2.18903_n_hasch1.18902_hasch2.18901_hasch1.18900_seq2.18808_seq1.18807_last_tag.18806_cons2.18750_cons1.18749_last_tag.18748_cons2.18714_cons1.18713_last_tag.18712_ref.18577_cons.18576_ns.18575_list.18574_lu.18572_pr.18571_last_tag.18570_score.18323_B.18322_l2.18321_l1.18320_matrix.18144_matrix.18056_entry.17918_hasch.17917_hasch.17807_hasch.17668_max_len.17561_hasch.17560_max_len.17454_hasch.17453_max_len.17347_hasch.17346_max_len.17182_hasch.17181_max_len.17083_hasch.17082_max_len.16987_hasch.16986_max_len.16896_hasch.16895_R.16784_R.16690_R.16676_R.16662_rna_lib.16647_hasch.16503_entry.16453_coil.16266_beta.16265_alpha.16264_st.16263_tmat.16186_st.16185_st.16096_alp.15926_m.15925_alp.15737_m.15736_max.15667_n_prop.15666_prop_table.15665_exp_lu.15332_dummy.15214_nlist.15166_flist.15165_nfunc.15164_a.12947_seqlen_array_seq_array_nseqs_dnaflag_max_aln_length_max_aa_next_curr_frag_maxsf_accum_diag_index_slopes_free.15558_alloc.15557_Aheap.15554_Fheap.15553_LenI.14920_LenJ.14919_toclean.14917_M.14916_main_jlist.14915_cE.14761_cS.14760_LenI.14390_LenJ.14389_toclean.14387_M.14386_main_jlist.14385_cE.14239_cS.14238_LenI.13914_LenJ.13913_M.13912_list.13728_tot.13717_use_age.14389_mat.14388_cmat.14387_tgep_factor_id_thres_used_aln_log_odd_mode_log_test.16514_max_size.14899_MT2.14898_MM.14897_MJ.14896_MI.14895_prod.13910_seq2.13811_seq1.13810_table2.13750_table1.13749_n.15071_tip.15070_NO_METHODS_IN_CL_ComputeTotalProbability_CopyMatState_DisplayHmm_EMPTY_EXP_Email_HERE_LIST_LOG_ADD_LOG_ADD3_LOG_ADD4_LOG_ADD5_LOG_ADD6_LOG_ADD7_LOG_PLUS_EQUALS_LOOKUP_M_chooses_N_M_chooses_Nlog_ManageMatState_MatStateAreIdentical_MaxDeltaMatState_MinDeltaMatState_NFP_NXArgc_NXArgv_PerlScriptFile_PerlScriptName_Previous_ProbaMatrix2CL_ProbaMatrix2CL_old_ProbabilisticModel_Proxy_RviterbiDGL_hmm_RviterbiD_hmm_RviterbiL_hmm_SHC_STseq2STaln_Seq_SeqGCGCheckSum_Start_TC_method2method_file___progname__mh_execute_header_aa2property_abl1_evaluation_add2file2remove_list_add2t_coffee_environement_add_alifold2aln_add_align_seq2aln_add_atom_add_constraint2aln_add_constraint2graph_aln_add_entry2list_add_file2file_list_add_list_entry2list_add_method_output2method_log_add_package2_tcoffee_env_add_prf2seq_add_random_sequence2aln_add_seq2aln_add_sequence_add_warning_addnode_addrand_addrandinit_adjust_est_aln_after_strstr_agreement_score_alifold2aln_alifold2analyze_alifold2cov_aln_alifold2cov_cache_alifold2cov_list_alifold2cov_stat_alifold_list2cov_list_align_pdb_pair_align_pdb_pair_2_align_two_aln_align_two_sequences_alignment2files_alloc_mem_allocate_hasch_entry_allocate_ktup_hasch_data_aln2alifold_aln2alphabet_aln2block_aln2bootstrap_aln2case_aln_aln2clean_pw_aln_aln2clustalw_aln_aln2collapsed_aln_aln2cons_maj_aln2cons_seq_aln2cons_seq_mat_aln2conservation_aln2constraint_list_aln2count_mat_aln2count_mat2_aln2cov_aln2coverage_aln2defined_residues_aln2ecl_raw_score_aln2entropy_aln2fj_tree_aln2gap_cache_aln2graph_aln2hitMat_aln2hitMat_help_aln2hmmtop_pred_aln2inv_pos_aln2jack_group1_aln2jack_group2_aln2jack_group3_aln2jacknife_aln2local_penalties_aln2local_penalties4link_aln2mat_aln2mat_diaa_aln2most_similar_sequence_aln2n_comp_col_aln2n_res_aln2ncol4trmsd_aln2ngap_aln2number_aln2pos_simple_aln2pos_simple_2_aln2pred_aln2prediction_aln2predictive_positions_aln2predictive_positions_mat_aln2predictive_positions_scan_aln2profile_aln2random_aln_aln2random_order_aln2random_seq_aln2resindex_aln2sample_aln2scale_aln2scramble_seq_aln2seq_aln2seq_chain_aln2seq_main_aln2short_aln_aln2sim_aln2sim_mat_aln2std_tree_aln2struc_aln2sub_aln_file_aln2sub_seq_aln2tree_aln2unique_name_aln_aln2weighted_sar_score_aln_cat_aln_column2string_aln_column_contains_gap_aln_compare_aln_file2constraint_list_aln_gap2random_aa_aln_has_stockholm_structure_aln_is_aligned_aln_stack_alnpos2block_alnpos2hmmtop_pred_alnpos_list2block_alpha_mat_alphabetDefault_amino_acid_codes_amino_acid_order_analyse_aln_column_analyse_pdb_analyse_pdb_residues_analyse_seq_analyse_sequence_analyse_sim_analyze_compounds_analyze_overaln_analyze_sequence_apdb_approximate_domain_arg_parse_array2alphabet_array_is_in_set_atop_back_translate_dna_aln_back_translate_dna_codon_back_translate_dna_seq_backward_proba_pair_wise_balance_tree_batch_main_benchmark_sar_best_double_best_int_best_pair4prot_best_pair4rna_beta_mat_bin_file2constraint_list_bin_list_biphasic_pair_wise_blank_to__blankline_blosum30mt_blosum40mt_blosum45mt_blosum50mt_blosum55mt_blosum62mt_blosum62mt2_blosum62mt3_blosum80mt_bound_hmm_boxshade_evaluate_output_break_list_bsearch_array_bsearch_file_btoi_build_consensus_cache2pred1_cache2pred2_cache2pred3_cache2pred4_cache2pred5_cache2pred_forbiden_res_cache2pred_new_cache_cl_with_moca_domain_cache_id_calc_mean_calc_root_mean_calcons_calculate_sum_of_pairs_score_affine_case_insensitive_strcmp_cat_aln_list_categories_evaluate_output_categories_evaluate_output_old_cfasta_cdna_pair_wise_cfasta_gotoh_pair_wise_cfasta_gotoh_pair_wise_sw_change_residue_coordinate_channel_profile_profile_char2number_char_array2number_check_cl4t_coffee_check_configuration4program_check_dir_getenv_check_environement_variable_is_set_check_file_exists_check_for_update_check_graph_check_internet_connection_check_link_check_list_for_dup_check_profile_seq_type_check_program_is_installed_check_seq_pair_in_list_check_seq_type_check_tree_chomp_choose_extension_mode_chseqIaln_ckalloc_ckfree_ckvrealloc_cl2diag_cap_cl2distance_matrix_cl2list_borders_cl2pair_list_cl2pair_list_diag_cl2pair_list_diag_cl_cl2pair_list_diag_mat_cl2pair_list_ecl_cl2pair_list_ecl_noext_raw_cl2pair_list_ecl_norm_cl2pair_list_ecl_pc_cl2pair_list_ecl_raw_cl2pair_list_ecl_rawquad_cl2pair_list_ref_cl2sorted_diagonals_cl2sorted_diagonals_cs_cl2sorted_diagonals_cs_old2_cl2sorted_diagonals_mat_clean_clean_aln_clean_cdna_aln_clean_est_clean_exit_clean_function_clean_gdna_aln_clean_maln_clean_sequence_clean_shadow_clean_string_cleanhasch_clear_tree_clinked_pair_wise_cluster_compare_cluster_recursive_cmp_float_cmp_int_cmp_list_int_cmp_list_int2_cmp_tree_array_cmp_word_code_dna_aln_code_seq_coffee_evaluate_output_coffee_seq_evaluate_output_coffee_seq_evaluate_output_old2_coil_mat_collapse_sub_tree_column_is_lower_column_is_suitable4trmsd_combine_2_predictions_combine_n_predictions_combine_profiles2file_combine_two_matrices_commonsextet_comp_pair_compact_list_compare_compare_RNA_fold_compare_aln_tree_compare_constraint_list_entry_compare_constraint_list_entry4bsearch_compare_list_compare_node_compare_pos_column_compare_sar_sequence_compare_split_compare_trees_compare_two_mat_compare_two_mat_array_complement_aln_complement_string_complete_agreement_score_compound2motif_compound2regexp_motif_compound2word_motif_compounds2motifs_compress_aln_compute_X_compute_clustalw_aln_compute_dirichlet_p_compute_exponant_compute_lambda_compute_matrix_p_compute_oligomer_distance_tree_compute_prrp_aln_compute_ref_alignments_compute_std_tree_2_compute_t_coffee_weight_compute_tcoffee_aln_quick_concatenate_aln_concatenate_seq_condense_aln_consensus_get_dp_cost_constraint_list2avg_constraint_list2bin_file_constraint_list2fraction_covered_constraint_list2raw_file_constraint_list_is_connected_constraint_list_is_sorted_convert_convert2_copy_aln_copy_atom_copy_char_copy_constraint_list_copy_double_copy_float_copy_int_copy_profile_copy_short_count_count_in_aln_count_int_strings_count_misc_count_n_char_in_file_count_n_char_x_in_file_count_n_gap_in_array_count_n_line_in_file_count_n_res_in_array_count_n_symbol_in_array_count_splits_count_strings_count_strings_in_file_count_threshold_nodes_count_tree_groups_counts2accuracy_cputenv_crash_crash_if_create_file_create_linear_tree_create_tree_create_tree_node_crop_string_curl_custom_pair_score_function1_custom_pair_score_function10_custom_pair_score_function2_custom_pair_score_function3_custom_pair_score_function4_custom_pair_score_function5_custom_pair_score_function6_custom_pair_score_function7_custom_pair_score_function8_custom_pair_score_function9_cw_profile_get_dp_cost_cw_profile_get_dp_cost_old_cw_profile_get_dp_cost_window_cw_profile_profile_cw_profile_profile_count_cw_profile_profile_old_cw_read_sequences_dayhoff_translate_declare_Alignment_declare_aln_declare_aln2_declare_aln_array_declare_array_declare_arrayN_declare_arrayN2_declare_arrayN2nomemset_declare_arrayNnomemset_declare_array_nomemset_declare_char_declare_char_node_declare_char_nomemset_declare_cl_nodes_declare_constraint_list_declare_constraint_list_simple_declare_double_declare_double_nomemset_declare_float_declare_float_nomemset_declare_fname_declare_hmm_declare_int_declare_int_nomemset_declare_ktup_hasch_data_declare_or_prediction_declare_pidtable_declare_profile_declare_rna_structure_num_declare_sequence_declare_short_declare_short_nomemset_declare_split_declare_structure_declare_tree_node_declare_weights_decode_name_define_full_model_define_mnm_model_define_probcons_model_define_simple_model_define_two_mat_model_degap_aln_del_gap_from_profile_delayed_pair_wise_delayed_tree_aln1_delayed_tree_aln2_delayed_tree_aln_mode1_delayed_tree_aln_mode2_delete_file_delete_job_descend_queue_diag_compare_diagonal_compare_diagonals2int_diagonals2int_dot_diagonals2int_euclidf_diagonals2int_gap_test_dichotomy_diff_diff_atom_dirichlet_code_displ_display_X_template_display_accuracy_display_avg_bootstrap_display_code_display_dist_display_file_content_display_input_filename_display_leaf_display_leaf_below_node_display_leaf_nb_display_mat_display_matrix_display_method_names_display_node_display_or_help_display_or_summary_display_output_filename_display_pos_display_prediction_display_prediction_2_display_rna_ss_display_sar_display_seq_template_files_display_sequence_templates_display_sequences_names_display_simple_sar_analyze_col_display_simple_sar_analyze_pair_col_display_splits_display_tree_display_tree_duplicates_display_tree_from_node_display_weights_dist2nj_tree_dist_array2sim_array_distance_tree_dna2gene_dna_aln2_3frame_cdna_aln_dna_aln2cons_seq_dna_idmat_dnaseq2geneseq_do_analyse_list_do_system_domain_match_list2aln_domain_pair_wise_domain_seq2domain_double_logB_double_logB2_dp_max_dpa_align_node_dpa_aln_dpa_msa2_dump_constraint_list_dump_msa_duplicate_TC_param_duplicate_blast_param_duplicate_char_duplicate_constraint_list_duplicate_constraint_list4lib_computation_duplicate_constraint_list_soft_duplicate_distance_matrix_duplicate_double_duplicate_float_duplicate_int_duplicate_moca_duplicate_sequence_duplicate_short_duplicate_string_duplicate_weights_echo_edit2alignment_edit2seq_pattern_edit_seq2aligned_seq_emitPairsDefault_empty_pair_wise_enlarge_prof_environ_error_error_exit_error_file_est_idmat_est_progressive_aln_euclidean_dist_euclidean_dist_half_evaluate_aln_profile_score_evaluate_blast_profile_score_evaluate_ca_trace_bubble_evaluate_ca_trace_bubble_2_evaluate_ca_trace_bubble_3_evaluate_ca_trace_nb_evaluate_ca_trace_sap1_bubble_evaluate_ca_trace_sap2_bubble_evaluate_ca_trace_transversal_evaluate_cdna_matrix_score_evaluate_combined_matrix_score_evaluate_constraint_list_reference_evaluate_curvature_score_evaluate_diaa_matrix_score_evaluate_diagonals_evaluate_diagonals_cdna_evaluate_diagonals_for_two_sequences_evaluate_diagonals_with_clist_evaluate_diagonals_with_ktup_evaluate_diagonals_with_ktup_1_evaluate_domain_aln_evaluate_domain_aln_z_score_evaluate_est_order_evaluate_matrix_score_evaluate_moca_domain_evaluate_monoaa_matrix_score_evaluate_node_similarity_evaluate_physico_score_evaluate_prediction_evaluate_profile_score_evaluate_random_match_evaluate_random_match2_evaluate_sar_score1_evaluate_sar_score2_evalua