From 9e73f8721831dab56cabbef51d7b26b301342b9b Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Tue, 22 May 2012 14:28:39 +0000 Subject: [PATCH] Major changes to the MAP65 branch. This branch is now a copy of MAP65 v2.3.0, r631, as checked out from the SVN repository on pulsar.princeton.edu. If all goes well with this commit, subsequent MAP65 development will use the Berlios repository. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@2461 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- DFINC.MAK | 87 - GeoDist.f | 102 - KVASD.EXE | Bin 427092 -> 0 bytes KVASD_g95.EXE | Bin 380112 -> 0 bytes LICENSE.TXT | 344 - LICENSE_WHEATLEY.TXT | 30 + MAP65_Beta_Release.docx | Bin 0 -> 23951 bytes Makefile.CVF | 96 - Makefile.MinGW | 100 - Makefile.ifort | 112 - Makefile.in | 112 - Makefile.linux.g95 | 121 - Makefile.linux.gfortran | 120 - Pmw.py | 9233 ----------------------- PmwBlt.py | 643 -- PmwColor.py | 361 - QtSupport.iss | 10 + RxWav/Samples/W8WN_010809_110400.WAV | Bin 327532 -> 0 bytes TSKY.DAT | Bin 129600 -> 0 bytes a2d.f90 | 35 - about.cpp | 23 + about.h | 24 + about.ui | 41 + aclocal.m4 | 220 - afmhot.dat | 257 + astro.cpp | 102 + astro.f | 115 - astro.h | 35 + astro.py | 52 - astro.ui | 37 + astro0.f90 | 123 - astropak.f | 14 - audio_init.f90 | 74 - avecom.h | 4 - avemsg65.f | 64 - azdist.f | 108 - azdist0.f90 | 14 - bandmap.cpp | 89 + bandmap.h | 34 + bandmap.ui | 43 + blue.dat | 256 + ccf65.f | 115 - char.h | 57 - chkmsg.f | 31 - commons.h | 42 + configure | 6910 ----------------- configure.ac | 220 - datcom.f90 | 5 - db.f | 5 - decode1.f90 | 87 - decode1a.f | 110 - deep65.f | 186 - detect.f | 29 - devsetup.cpp | 325 + devsetup.h | 83 + devsetup.ui | 1583 ++++ displaytext.cpp | 15 + displaytext.h | 22 + f2py.py | 4 - ffft.f | 69 + fftw3single.lib | Bin 82152 -> 0 bytes fil651.f | 67 - fil652.f | 44 - fil653.f | 49 - filbig.f | 119 - files.txt | 36 - fivehz.f90 | 250 - fivehz.h | 5 - flat1.f | 30 - flat2.f | 28 - flatten.f | 105 - flushqqq.f90 | 10 - four2.f | 350 - four2a.f | 111 - fstatqqq.f90 | 14 - fthread.c | 74 - ftn_init.f90 | 171 - ftn_quit.f90 | 9 - ftsky.f | 24 - g.py | 32 - gcom1.f90 | 51 - gcom2.f90 | 124 - gcom3.f90 | 20 - gcom4.f90 | 10 - gen65.f | 82 - gencwid.f | 36 - gentone.f | 13 - getdev.cpp | 259 + getfile.cpp | 105 + getfile.f90 | 14 - getfile.h | 12 + getfile2.f90 | 71 - getpfx1.f | 45 - getsnr.f | 35 - go.py | 1 - gp.bat | 2 - i1tor4.f90 | 19 - in.dat | 16 + install-sh | 323 - jtaudio.c | 263 - killbyname.cpp | 282 + kvasd | Bin 64817 -> 0 bytes kvasd2.exe | Bin 0 -> 184832 bytes kvasd_g95 | Bin 448837 -> 0 bytes kvasd_gfortran | Bin 64817 -> 0 bytes libfftw3f.a | Bin 1301332 -> 0 bytes libm65/JT65code.f90 | 47 + libm65/Makefile.MinGW | 92 + libm65/Makefile.linux | 96 + afc65b.f => libm65/afc65b.f | 9 +- libm65/astro.f | 109 + libm65/astro0.f90 | 81 + libm65/astrosub.f90 | 14 + ccf2.f => libm65/ccf2.f | 6 +- libm65/ccf65.f90 | 118 + chkhist.f => libm65/chkhist.f | 0 libm65/chkmsg.f | 32 + coord.f => libm65/coord.f | 20 +- cutil.c => libm65/cutil.c | 0 dcoord.f => libm65/dcoord.f | 17 +- libm65/decode0.f90 | 64 + libm65/decode1a.f | 149 + decode65b.f => libm65/decode65b.f | 32 +- decode_rs.c => libm65/decode_rs.c | 526 +- libm65/deep65.f90 | 169 + deg2grid.f => libm65/deg2grid.f | 0 demod64a.f => libm65/demod64a.f | 18 +- display.f90 => libm65/display.f90 | 343 +- dot.f => libm65/dot.f | 0 libm65/dpol.f90 | 41 + encode65.f => libm65/encode65.f | 0 encode_rs.c => libm65/encode_rs.c | 104 +- extract.f => libm65/extract.F | 35 +- f77_wisdom.f => libm65/f77_wisdom.f | 0 fchisq.f => libm65/fchisq.f | 4 + libm65/fftw3.f | 64 + fil6521.f => libm65/fil6521.f | 0 libm65/filbig.f | 134 + libm65/four2a.f90 | 89 + libm65/ftninit.f90 | 63 + libm65/ftnquit.f90 | 9 + libm65/gen65.f90 | 93 + geocentric.f => libm65/geocentric.f | 0 getdphi.f90 => libm65/getdphi.f90 | 38 +- libm65/getpfx1.f | 96 + getpfx2.f => libm65/getpfx2.f | 2 +- graycode.f => libm65/graycode.f | 0 grid2deg.f => libm65/grid2deg.f | 2 - grid2k.f => libm65/grid2k.f | 0 igray.c => libm65/igray.c | 44 +- indexx.f => libm65/indexx.f | 0 init_rs.c => libm65/init_rs.c | 252 +- int.h => libm65/int.h | 0 interleave63.f => libm65/interleave63.f | 0 libm65/ipcomm.cpp | 34 + libm65/iqcal.f90 | 30 + libm65/iqfix.f90 | 29 + k2grid.f => libm65/k2grid.f | 0 libm65/kvasd.exe | Bin 0 -> 185856 bytes libm65/m65.f90 | 130 + libm65/m65a.F90 | 97 + map65a.f90 => libm65/map65a.f90 | 849 ++- moon2.f => libm65/moon2.f | 0 MoonDop.f => libm65/moondop.f | 13 +- nchar.f => libm65/nchar.f | 1 + packcall.f => libm65/packcall.f | 5 +- packdxcc.f => libm65/packdxcc.f | 0 packgrid.f => libm65/packgrid.f | 0 packmsg.f => libm65/packmsg.f | 38 +- packtext.f => libm65/packtext.f | 0 libm65/pctile.f | 13 + pfx.f => libm65/pfx.f | 0 pfxdump.f => libm65/pfxdump.f | 0 ptt.c => libm65/ptt.c | 8 +- ptt_unix.c => libm65/ptt_unix.c | 774 +- libm65/recvpkt.f90 | 70 + libm65/rfile3a.f90 | 14 + rs.h => libm65/rs.h | 0 libm65/s3avg.f90 | 42 + sec_midn.f90 => libm65/sec_midn.f90 | 8 - set.f => libm65/set.f | 0 setup65.f => libm65/setup65.f | 18 +- libm65/sleep.h | 32 + libm65/sleep_msec.f90 | 3 + sort.f => libm65/sort.f | 0 ssort.f => libm65/ssort.f | 0 sun.f => libm65/sun.f | 4 +- libm65/symspec.f90 | 193 + libm65/tastro.f90 | 35 + libm65/timer.f90 | 110 + timeval.h => libm65/timeval.h | 0 libm65/timf2.f90 | 220 + libm65/tm2.f90 | 14 + libm65/tmoonsub.c | 514 ++ toxyz.f => libm65/toxyz.f | 0 trimlist.f => libm65/trimlist.f | 9 +- twkfreq.f => libm65/twkfreq.f | 1 + libm65/unpackcall.f | 142 + unpackgrid.f => libm65/unpackgrid.f | 2 +- unpackmsg.f => libm65/unpackmsg.f | 41 +- unpacktext.f => libm65/unpacktext.f | 0 wrapkarn.c => libm65/wrapkarn.c | 153 +- libsamplerate.lib | Bin 5166 -> 0 bytes loc.c | 4 - main.cpp | 11 + mainwindow.cpp | 1970 +++++ mainwindow.h | 274 + mainwindow.ui | 1611 ++++ map65.iss | 36 +- map65.pro | 77 + map65.py | 1996 ----- map65.rc | 1 + map65rc | 9 - map65rc.win | 9 - messages.cpp | 81 + messages.h | 40 + messages.ui | 100 + morse.f | 90 - msgtrim.f90 | 37 - options.py | 133 - pa.lib | Bin 98936 -> 0 bytes paInputDevice.c | 56 + pa_get_device_info.c | 172 + palettes.py | 1566 ---- pctile.f | 13 - peakup.f | 8 - pix2d65.f90 | 28 - plotter.cpp | 711 ++ plotter.h | 127 + plrr.F90 | 43 - plrr.exe | Bin 382548 -> 0 bytes plrr_subs.c | 67 - plrr_subs_win.c | 108 - plrs.F90 | 156 - plrs_subs.c | 41 - plrs_subs_win.c | 64 - portaudio.h | 1123 --- prcom.h | 1 - pulsar.f90 | 82 - recvpkt.f90 | 181 - rfile.f90 | 13 - rfile2.f | 26 - rfile3.c | 22 - rfile3a.f90 | 18 - runqqq.f90 | 17 - samplerate.h | 196 - savetf2.f90 | 58 - set570.cpp | 275 + short65.f | 190 - sleep.h | 48 +- slope.f | 41 - smeter.py | 73 - smooth.f | 13 - soundin.cpp | 403 + soundin.h | 85 + soundout.cpp | 170 + soundout.h | 42 + spcom.f90 | 3 - spec.f90 | 142 - specjt.py | 574 -- ss.bat | 1 + sss.bat | 1 + start_portaudio.c | 30 - symspec.f90 | 173 - symsync65.f | 35 - sysqqq.f90 | 13 - thcvf.f90 | 68 - thnix.f90 | 58 - unpackcall.f | 35 - widegraph.cpp | 318 + widegraph.h | 77 + widegraph.ui | 421 ++ wsjt | 15 - wsjtgen.f90 | 131 - 274 files changed, 15846 insertions(+), 32067 deletions(-) delete mode 100644 DFINC.MAK delete mode 100644 GeoDist.f delete mode 100755 KVASD.EXE delete mode 100644 KVASD_g95.EXE delete mode 100755 LICENSE.TXT create mode 100644 LICENSE_WHEATLEY.TXT create mode 100644 MAP65_Beta_Release.docx delete mode 100644 Makefile.CVF delete mode 100644 Makefile.MinGW delete mode 100644 Makefile.ifort delete mode 100644 Makefile.in delete mode 100644 Makefile.linux.g95 delete mode 100644 Makefile.linux.gfortran delete mode 100644 Pmw.py delete mode 100644 PmwBlt.py delete mode 100644 PmwColor.py create mode 100644 QtSupport.iss delete mode 100644 RxWav/Samples/W8WN_010809_110400.WAV delete mode 100644 TSKY.DAT delete mode 100644 a2d.f90 create mode 100644 about.cpp create mode 100644 about.h create mode 100644 about.ui delete mode 100644 aclocal.m4 create mode 100644 afmhot.dat create mode 100644 astro.cpp delete mode 100644 astro.f create mode 100644 astro.h delete mode 100644 astro.py create mode 100644 astro.ui delete mode 100644 astro0.f90 delete mode 100644 astropak.f delete mode 100644 audio_init.f90 delete mode 100644 avecom.h delete mode 100644 avemsg65.f delete mode 100644 azdist.f delete mode 100644 azdist0.f90 create mode 100644 bandmap.cpp create mode 100644 bandmap.h create mode 100644 bandmap.ui create mode 100644 blue.dat delete mode 100644 ccf65.f delete mode 100644 char.h delete mode 100644 chkmsg.f create mode 100644 commons.h delete mode 100755 configure delete mode 100644 configure.ac delete mode 100644 datcom.f90 delete mode 100644 db.f delete mode 100644 decode1.f90 delete mode 100644 decode1a.f delete mode 100644 deep65.f delete mode 100644 detect.f create mode 100644 devsetup.cpp create mode 100644 devsetup.h create mode 100644 devsetup.ui create mode 100644 displaytext.cpp create mode 100644 displaytext.h delete mode 100644 f2py.py create mode 100644 ffft.f delete mode 100644 fftw3single.lib delete mode 100644 fil651.f delete mode 100644 fil652.f delete mode 100644 fil653.f delete mode 100644 filbig.f delete mode 100644 files.txt delete mode 100644 fivehz.f90 delete mode 100644 fivehz.h delete mode 100644 flat1.f delete mode 100644 flat2.f delete mode 100644 flatten.f delete mode 100644 flushqqq.f90 delete mode 100755 four2.f delete mode 100644 four2a.f delete mode 100644 fstatqqq.f90 delete mode 100644 fthread.c delete mode 100644 ftn_init.f90 delete mode 100644 ftn_quit.f90 delete mode 100644 ftsky.f delete mode 100644 g.py delete mode 100644 gcom1.f90 delete mode 100644 gcom2.f90 delete mode 100644 gcom3.f90 delete mode 100644 gcom4.f90 delete mode 100644 gen65.f delete mode 100644 gencwid.f delete mode 100644 gentone.f create mode 100644 getdev.cpp create mode 100644 getfile.cpp delete mode 100644 getfile.f90 create mode 100644 getfile.h delete mode 100644 getfile2.f90 delete mode 100644 getpfx1.f delete mode 100644 getsnr.f delete mode 100644 go.py delete mode 100644 gp.bat delete mode 100644 i1tor4.f90 create mode 100644 in.dat delete mode 100755 install-sh delete mode 100644 jtaudio.c create mode 100644 killbyname.cpp delete mode 100755 kvasd create mode 100644 kvasd2.exe delete mode 100755 kvasd_g95 delete mode 100755 kvasd_gfortran delete mode 100644 libfftw3f.a create mode 100644 libm65/JT65code.f90 create mode 100644 libm65/Makefile.MinGW create mode 100644 libm65/Makefile.linux rename afc65b.f => libm65/afc65b.f (90%) create mode 100644 libm65/astro.f create mode 100644 libm65/astro0.f90 create mode 100644 libm65/astrosub.f90 rename ccf2.f => libm65/ccf2.f (85%) create mode 100644 libm65/ccf65.f90 rename chkhist.f => libm65/chkhist.f (100%) create mode 100644 libm65/chkmsg.f rename coord.f => libm65/coord.f (50%) rename cutil.c => libm65/cutil.c (100%) rename dcoord.f => libm65/dcoord.f (60%) create mode 100644 libm65/decode0.f90 create mode 100644 libm65/decode1a.f rename decode65b.f => libm65/decode65b.f (65%) rename decode_rs.c => libm65/decode_rs.c (96%) create mode 100644 libm65/deep65.f90 rename deg2grid.f => libm65/deg2grid.f (100%) rename demod64a.f => libm65/demod64a.f (78%) rename display.f90 => libm65/display.f90 (70%) rename dot.f => libm65/dot.f (100%) create mode 100644 libm65/dpol.f90 rename encode65.f => libm65/encode65.f (100%) rename encode_rs.c => libm65/encode_rs.c (95%) rename extract.f => libm65/extract.F (69%) rename f77_wisdom.f => libm65/f77_wisdom.f (100%) mode change 100755 => 100644 rename fchisq.f => libm65/fchisq.f (90%) create mode 100644 libm65/fftw3.f rename fil6521.f => libm65/fil6521.f (100%) create mode 100644 libm65/filbig.f create mode 100644 libm65/four2a.f90 create mode 100644 libm65/ftninit.f90 create mode 100644 libm65/ftnquit.f90 create mode 100644 libm65/gen65.f90 rename geocentric.f => libm65/geocentric.f (100%) rename getdphi.f90 => libm65/getdphi.f90 (63%) create mode 100644 libm65/getpfx1.f rename getpfx2.f => libm65/getpfx2.f (91%) rename graycode.f => libm65/graycode.f (100%) rename grid2deg.f => libm65/grid2deg.f (91%) rename grid2k.f => libm65/grid2k.f (100%) rename igray.c => libm65/igray.c (93%) rename indexx.f => libm65/indexx.f (100%) rename init_rs.c => libm65/init_rs.c (96%) rename int.h => libm65/int.h (100%) rename interleave63.f => libm65/interleave63.f (100%) create mode 100644 libm65/ipcomm.cpp create mode 100644 libm65/iqcal.f90 create mode 100644 libm65/iqfix.f90 rename k2grid.f => libm65/k2grid.f (100%) create mode 100644 libm65/kvasd.exe create mode 100644 libm65/m65.f90 create mode 100644 libm65/m65a.F90 rename map65a.f90 => libm65/map65a.f90 (53%) rename moon2.f => libm65/moon2.f (100%) rename MoonDop.f => libm65/moondop.f (82%) rename nchar.f => libm65/nchar.f (84%) rename packcall.f => libm65/packcall.f (91%) rename packdxcc.f => libm65/packdxcc.f (100%) rename packgrid.f => libm65/packgrid.f (100%) rename packmsg.f => libm65/packmsg.f (69%) rename packtext.f => libm65/packtext.f (100%) create mode 100644 libm65/pctile.f rename pfx.f => libm65/pfx.f (100%) rename pfxdump.f => libm65/pfxdump.f (100%) rename ptt.c => libm65/ptt.c (82%) rename ptt_unix.c => libm65/ptt_unix.c (92%) create mode 100644 libm65/recvpkt.f90 create mode 100644 libm65/rfile3a.f90 rename rs.h => libm65/rs.h (100%) create mode 100644 libm65/s3avg.f90 rename sec_midn.f90 => libm65/sec_midn.f90 (69%) rename set.f => libm65/set.f (100%) rename setup65.f => libm65/setup65.f (76%) create mode 100644 libm65/sleep.h create mode 100644 libm65/sleep_msec.f90 rename sort.f => libm65/sort.f (100%) rename ssort.f => libm65/ssort.f (100%) rename sun.f => libm65/sun.f (94%) create mode 100644 libm65/symspec.f90 create mode 100644 libm65/tastro.f90 create mode 100644 libm65/timer.f90 rename timeval.h => libm65/timeval.h (100%) create mode 100644 libm65/timf2.f90 create mode 100644 libm65/tm2.f90 create mode 100644 libm65/tmoonsub.c rename toxyz.f => libm65/toxyz.f (100%) rename trimlist.f => libm65/trimlist.f (70%) rename twkfreq.f => libm65/twkfreq.f (93%) create mode 100644 libm65/unpackcall.f rename unpackgrid.f => libm65/unpackgrid.f (92%) rename unpackmsg.f => libm65/unpackmsg.f (64%) rename unpacktext.f => libm65/unpacktext.f (100%) rename wrapkarn.c => libm65/wrapkarn.c (68%) delete mode 100644 libsamplerate.lib delete mode 100644 loc.c create mode 100644 main.cpp create mode 100644 mainwindow.cpp create mode 100644 mainwindow.h create mode 100644 mainwindow.ui create mode 100644 map65.pro delete mode 100644 map65.py create mode 100644 map65.rc delete mode 100644 map65rc delete mode 100644 map65rc.win create mode 100644 messages.cpp create mode 100644 messages.h create mode 100644 messages.ui delete mode 100644 morse.f delete mode 100644 msgtrim.f90 delete mode 100644 options.py delete mode 100644 pa.lib create mode 100644 paInputDevice.c create mode 100644 pa_get_device_info.c delete mode 100644 palettes.py delete mode 100644 pctile.f delete mode 100644 peakup.f delete mode 100644 pix2d65.f90 create mode 100644 plotter.cpp create mode 100644 plotter.h delete mode 100644 plrr.F90 delete mode 100644 plrr.exe delete mode 100644 plrr_subs.c delete mode 100644 plrr_subs_win.c delete mode 100644 plrs.F90 delete mode 100644 plrs_subs.c delete mode 100644 plrs_subs_win.c delete mode 100644 portaudio.h delete mode 100644 prcom.h delete mode 100644 pulsar.f90 delete mode 100644 recvpkt.f90 delete mode 100644 rfile.f90 delete mode 100644 rfile2.f delete mode 100644 rfile3.c delete mode 100644 rfile3a.f90 delete mode 100644 runqqq.f90 delete mode 100644 samplerate.h delete mode 100644 savetf2.f90 create mode 100644 set570.cpp delete mode 100644 short65.f delete mode 100644 slope.f delete mode 100644 smeter.py delete mode 100644 smooth.f create mode 100644 soundin.cpp create mode 100644 soundin.h create mode 100644 soundout.cpp create mode 100644 soundout.h delete mode 100644 spcom.f90 delete mode 100644 spec.f90 delete mode 100644 specjt.py create mode 100644 ss.bat create mode 100644 sss.bat delete mode 100644 start_portaudio.c delete mode 100644 symspec.f90 delete mode 100644 symsync65.f delete mode 100644 sysqqq.f90 delete mode 100644 thcvf.f90 delete mode 100644 thnix.f90 delete mode 100644 unpackcall.f create mode 100644 widegraph.cpp create mode 100644 widegraph.h create mode 100644 widegraph.ui delete mode 100755 wsjt delete mode 100644 wsjtgen.f90 diff --git a/DFINC.MAK b/DFINC.MAK deleted file mode 100644 index 08c8f9b16..000000000 --- a/DFINC.MAK +++ /dev/null @@ -1,87 +0,0 @@ -#+ -# DFINC.MAK - Visual Fortran application master NMAKE definitions file -# -# This software DFINC.MAK is part of the Visual Fortran kit. -# -# This file should be included at the top of all MAKEFILEs as follows: -# !include -# -# NMAKE Options: -# -# Use the table below to determine the additional options for NMAKE -# Application Information Type Invoke NMAKE -# ---------------------------- ------------ -# For Debugging Info nmake debug=1 -# For linker map nmake linkmap=1 -# For linking with the DLLs nmake linkdll=1 -#- - -# Set the defaults for all the MSVCxx versions - -crtimplib=msvcrt.lib - -!IFNDEF link -link = link -!ENDIF -!IFNDEF libr -libr = lib -!ENDIF - -# Define the compiler verbs. -FOR = df - -# Macros for the compiler -!IFDEF DEBUG -df_debug = /debug:full -lnk_debug = /debug:full /debugtype:both -!ELSE -df_debug = -lnk_debug = /debug:none -!ENDIF - -!IFDEF LINKDLL -df_dll = /call_dll -dflibs = dfordll.lib $(crtimplib) kernel32.lib -!ELSE -df_dll = -dflibs = dfor.lib libc.lib kernel32.lib -!ENDIF - -fflags = $(df_debug) $(df_dll) - -# Macros for the FPP Preprocesor -fppflags = -fpp = $(FOR) $(fflags) /fpp="$(fppflags)" - -# Macros for the linker. -!IFDEF LINKMAP -lflags = /map:$(*B).map $(lflags) -!ELSE -lflags = $(lflags) -!ENDIF - -# SUFFIXES list -.SUFFIXES: .exe .obj .asm .c .bas .cbl .fpp .for .f90 .pas .res .rc - -# Define the inference rules -.obj.exe: - $(FOR) $(df_dll) $(df_debug) /link $(lflags) $(lnk_debug) $*.obj - -.for.exe: - $(FOR) $(fflags) $*.for /link $(lflags) - -.f90.exe: - $(FOR) $(fflags) $*.f90 /link $(lflags) - -.fpp.exe: - $(fpp) $*.fpp /link $(lflags) - -.for.obj: - $(FOR) $(df_debug) $*.for /nolink /object:$@ - -.f90.obj: - $(FOR) $(df_debug) $*.f90 /nolink /object:$@ - -.fpp.obj: - $(FOR) $(df_debug) /nolink /object:$@ /fpp:"$(fppflags)" $*.fpp - diff --git a/GeoDist.f b/GeoDist.f deleted file mode 100644 index e896ded90..000000000 --- a/GeoDist.f +++ /dev/null @@ -1,102 +0,0 @@ - subroutine geodist(Eplat, Eplon, Stlat, Stlon, - + Az, Baz, Dist) - implicit none - real eplat, eplon, stlat, stlon, az, baz, dist - -C JHT: In actual fact, I use the first two arguments for "My Location", -C the second two for "His location"; West longitude is positive. - -c -c -c Taken directly from: -c Thomas, P.D., 1970, Spheroidal geodesics, reference systems, -c & local geometry, U.S. Naval Oceanographic Office SP-138, -c 165 pp. -c -c assumes North Latitude and East Longitude are positive -c -c EpLat, EpLon = End point Lat/Long -c Stlat, Stlon = Start point lat/long -c Az, BAz = direct & reverse azimuith -c Dist = Dist (km); Deg = central angle, discarded -c - - real BOA, F, P1R, P2R, L1R, L2R, DLR, T1R, T2R, TM, - + DTM, STM, CTM, SDTM,CDTM, KL, KK, SDLMR, L, - + CD, DL, SD, T, U, V, D, X, E, Y, A, FF64, TDLPM, - + HAPBR, HAMBR, A1M2, A2M1 - - real AL,BL,D2R,Pi2 - - data AL/6378206.4/ ! Clarke 1866 ellipsoid - data BL/6356583.8/ -c real pi /3.14159265359/ - data D2R/0.01745329251994/ ! degrees to radians conversion factor - data Pi2/6.28318530718/ - - BOA = BL/AL - F = 1.0 - BOA -c convert st/end pts to radians - P1R = Eplat * D2R - P2R = Stlat * D2R - L1R = Eplon * D2R - L2R = StLon * D2R - DLR = L2R - L1R ! DLR = Delta Long in Rads - T1R = ATan(BOA * Tan(P1R)) - T2R = ATan(BOA * Tan(P2R)) - TM = (T1R + T2R) / 2.0 - DTM = (T2R - T1R) / 2.0 - STM = Sin(TM) - CTM = Cos(TM) - SDTM = Sin(DTM) - CDTM = Cos(DTM) - KL = STM * CDTM - KK = SDTM * CTM - SDLMR = Sin(DLR/2.0) - L = SDTM * SDTM + SDLMR * SDLMR * (CDTM * CDTM - STM * STM) - CD = 1.0 - 2.0 * L - DL = ACos(CD) - SD = Sin(DL) - T = DL/SD - U = 2.0 * KL * KL / (1.0 - L) - V = 2.0 * KK * KK / L - D = 4.0 * T * T - X = U + V - E = -2.0 * CD - Y = U - V - A = -D * E - FF64 = F * F / 64.0 - Dist = AL*SD*(T -(F/4.0)*(T*X-Y)+FF64*(X*(A+(T-(A+E) - + /2.0)*X)+Y*(-2.0*D+E*Y)+D*X*Y))/1000.0 - TDLPM = Tan((DLR+(-((E*(4.0-X)+2.0*Y)*((F/2.0)*T+FF64* - + (32.0*T+(A-20.0*T)*X-2.0*(D+2.0)*Y))/4.0)*Tan(DLR)))/2.0) - HAPBR = ATan2(SDTM,(CTM*TDLPM)) - HAMBR = Atan2(CDTM,(STM*TDLPM)) - A1M2 = Pi2 + HAMBR - HAPBR - A2M1 = Pi2 - HAMBR - HAPBR - -1 If ((A1M2 .ge. 0.0) .AND. (A1M2 .lt. Pi2)) GOTO 5 - If (A1M2 .lt. Pi2) GOTO 4 - A1M2 = A1M2 - Pi2 - GOTO 1 -4 A1M2 = A1M2 + Pi2 - GOTO 1 -c -c all of this gens the proper az, baz (forward and back azimuth) -c - -5 If ((A2M1 .ge. 0.0) .AND. (A2M1 .lt. Pi2)) GOTO 9 - If (A2M1 .lt. Pi2) GOTO 8 - A2M1 = A2M1 - Pi2 - GOTO 5 -8 A2M1 = A2M1 + Pi2 - GOTO 5 - -9 Az = A1M2 / D2R - BAZ = A2M1 / D2R -c -c Fix the mirrored coords here. -c - az = 360.0 - az - baz = 360.0 - baz - end diff --git a/KVASD.EXE b/KVASD.EXE deleted file mode 100755 index 618af5b9c9e1619a104f8120dc247faeeaf9b745..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427092 zcmeFaeSB2awLd(WISB(yI0H;D>Y%BOZFGWylW25;PD0**Buqj`KzXypxhX|OoT;dj zK%5M6vN;I%s@2xErs<1qy#=jp(JJNz@`4J4C`3U(s`kWyA}9oindiIqJ~K%WYj5xK zJip%`=JT1%Is0Ypwbx#It+m%)dr#4=8w@6c!64xi4jT+x@J)Yi{{NrtvJU#<64tz6@&_9SKksjp@qWv-r#3Fcw_)7J8|UNuU~2Ei>HPhZjc?=o z&)0sk(Ti`YHxD1wV0`QL_Ek%t$e8-JmCRGEKAzbMi0LZ)O$;ZOhkpJ%LODEsF{ zhUWs$LV^15bp7ob-yJJ`c)t3K-Y@Ebj$foglEJX}niWfK_uXzV9Csp>`tH`h@fG=V zBlQ|l%&_t*H0nXQM>kUuw4uko$8{rh(q41P*qt<%bi?;(Hge~rC{)cEG{8wz|w zfo~}A4F$fTz&8~5h63ME;2R2jLxFE7@C^n2w-lJejs}lj6MIUr4CGB@#N-;(gbdWFG@`txR6Ft~6Ez|KHJ0+GPWlm6kQ}`G z>%rfsgFlJYsG4pCR5c-)@bMpTo>Jz#tj4BNTD%?q*_;E4|FDw#LR;?Uk!V^eYH!Qk zLaqR1&hEC{Mp`ASxtrT^w~e5Vq<=Ox$IzDhx*0EodC_4{x#-yhq?D-X$C0n4{EYWc zjXjDtDwd$(L5+VO|I5|%!}#))sRsqx+TQq$k$c_rmqEgA*^oTt>-$wZww z-D>>n$W(H>fp8_!yHxdqz%fKuYQ0=DJkQ%@$3u;BC?7@CgjA|q)UC|v=7ioxji8pN zT>G!TP+_Ymdw)7rUW!{yW4WR`|++69UyGd zU#14Y8|9^1?9e*vc%2;M*VO6!bF>Hk`D(n|^fl${hm=oM;|r(*U&85yL7eW1ly~k4 zonq-U4D!#LogFn(>G9(Ja9Dn<>DxQx+Bz_;voXk%4f11+&OJ9ClpkyU_HMt8`We3& zFiW%tP^#yufpGZkSQ-`XSaa^_p186UY?w~8XYoFIo=D&i9X_=!NB&8(bLZ$Cz8QS* zh_}>q;wd$OihI;}KD@ESQ01j+`VfXf9%ranVyN=c5|8FY^I#~JPIXu;0U)RenRrmr z2?@*yJgezRloCs*fJuo;U{WG(xf;*MB%ManQwk=16_WxmgHx%ZL0)G78*Q~<^tKRx za-k3yF_jXkM>_W?a}Lb--kbxhUEaFUMQzwr-uKwf;lu9 z1XXhR93rtmEK8$tyC|k`iOfe};ce`L1ud`BAD8Rq7d3eQSgx5Fo;-a<$?Yc&$nE!N z6Lt&c_+UY^WZ>l^|LWU`CCic%%b71Zxq=0flS7UEo8C5dPn;hs*fh&`5gWnc%kb)I zS~Z%DsV}6*_G(+@ZdBG@J8mQ{SsJ75{KRNrImwpbQ8P2+AyJ8Mbb}k|*{;NIqvyip zBxY!6r^k_wCMEuLJT>g5*PP@uX6F6sI*f_{-LQ?28?`@{zLj`GR<7ag#sgOtjLR`} z^SAC#-?b;d+pW#}m{2fldw>dSSKQc`V_!<+b*RiZ7Rlmu$Ip&S27wL&B`9Kd5eC3>`eUWFGpjD!-cm)GE=no6{B z>}z-*U!~eOUXlaXkN~!FHikN?F9${KUN)AcQNL?2 zs_8rxY7BfEDg-4wCE914O{h5dUXh-!r!sl2u8Uqp1Q_K|5^{GT0B((sTJu(mcXAg zUov1AenlW+bnK}LVPBoYkx>f`#u9BERTovDv@9xgn<16T!VH5usj_WI`;x6P`;~AUcU%^6H}&COTTmhwq!Sz!S-jjkKJwoEd(rw98i zfs=x^LU^cIVMyC+SpxOZ(O%${w-#E$UZpVG$Px&W{mZI)*9P}&hEVMxHIoENN2+6Y3M**Ip|=xVB#g6-iJ z=N?y+{8Te*ZV`OPX(+HOa5V+Kh1mek0%B!ZMix)9oLa>r5yI6}bqLs7SpsDgfB@M> zgW>+;ddE4fM87@tRDybcE`dhJsyDZx-U2u^N0-3vQ44F63W7aSsIiTh$>2Z1k(oWG zyn;>TJvgpDn!Fl0jsOXSM?u)!&tfybGB@+)0XE2R>g{mr56B|nj;hq5p0oyZ4wY>>12(W zY-^N?ewILV$yWGRFZ%T>ys~soGU<7iKo7{JFIt#y#}W{;W-<|y%xUK-R~wK>sT!}A zB~LbGOXy3Ut1a+3C9<*?CKH_I?Iw%kcOlr*IUd`wGv_gxG5u)2~i3J+du?ay&7E&DNQ)c^DJ!7EIVX zLgzr#wS|t!p<0Y3w*}c$8eT_RLnhdwo_Lqr4h{4)WF~Le5IkyyYKG33J%>#qp;0d8 zV1+XbhOpve3$~hBUO$^pPZrgK8L`{+4lDl*Q{KiVazRCcDA|gPuEVCYj%ImNv#GlX z`Bwk-dcuHB;&T}l_;khUD!ARukefLT1jThB%%s8eml>Z-etBYx{f%gntjoJ@D4tfg$v$3d)wO`Z+9F#6C9M~ zq(Op5bLxrIv)RN{d_{-|2~Nxw3d^-GgWp&JNi?-EIa%Pm0eOxcYT8S9wfBxhFYO!( zE1S|E{8*X=bE1(1f$w6LPP11{Tf^?69LGlmCd(gS_8u2>O(&^&fm|*NC(%NT#W`|l zUeMUen?7=EH#NNoW1AM-p*>YbQzrAfpFR)in1)jcj@xv(*hny_%zbrod$T+XYZRKbNqUH}x=S?N&n6wB6DC|T~mWQBcy3gcsyYg+JR_mjOwEp#VVU@7DwPS_}!8v(d|>nKl0)b;G*r zc{lA(m=3bEE%hYFOz5g@F7(s#`T&ttu@!J;plQ~GX$Hoism2*f4z+&~rd3UCDv9^L z-dMqBoW}(_&4OPJGmlxe4svx580V{bKAJ0xo_fJPpMrf%t(<{$_5tH2R>eVo+Fr95P(ebWnsgG@e8}kuLe5vg7n?6c$`H(PTY((vCZW#lqKPz#)s<#; z1B*X^M{co!{P%d7WjP#k^0g#tXc(}_h9aHmRiqXEP7?URZ8_Wo)$LCU{Dov_I*-8$ zO&xB9inR)iUusNRr54thS=RAjk7X9~)uytG)w0@DI5bpgO&&zXQ?>KSth>&?pH1`- zzno$%tnjH+^}!g&uG8J2j;f`O9#<31tyPz@-KXDS6W5`b^5_e%gYgyVPkHVcFwT2e z0#ANfBwJvokdY{0=HxfQXRdfQLs*m{CzZ$r>}fG)VS(f zU(p7ZzC8k(IxVIR(+#ad%(QU5Xwu+)lQ*@pw@ez>mM(48_l9GH6_sLno|7+%R9_S+ z8<4WHeQFMn>N1&OcFX`$;F0N!cb#-%tGX;DMu%SgOJW*FvpOqWpu`_VPa)!{yqaT; zX^`-4YHC=GfmEj%;kk4QT$og+7Mf#9w7*;fnb8LKwm^k(2;>PsztA@u^)1waCwRli z5k4JeJ84YfQkFno7*_i-(VwNhgpo;BaxE;L=ubX?Ij{(5B;h<=&gMvMxwN}vs3#=d zs^y^wvp`FP{U>xdZPG(jNFbt?#6Y*tV3rN_)CE+^LM3CU(Mt;*|H;rE{~=ZsMZs3% zZ8OFgdKmbKx5A1fH|a^$QgdEoyr2IHcmXG!y5VRokZb<~4U4gRnfDtmi%0%J2+w~x z1$Ih`Iule~JPFFAY}FSaWYZDQ^5vDB#_Bp7u{d^J_E-CWR}!0om7fPF!yvz2wRqTB zVTqD9xH#A}z~=u9LfneBO$VVL7C_frJj<)hGy3;|Pm?haDQqeUQfG%3zGllKrk!Gm zl8t#>>{ZMVph<9SxVosdzy|Pzo$1dj;t`T)#4mzN z6#GLoUT8&uRhCu*YB~0*Qn8o$i~~WI)JPvYtkT1!_}6;p+P#fRotupyv#tXNT`PRhq%z-{Ir|JrjeC7ouk(=s7n+PeDuQ zDI=2}Hnj>`Vj(N#K{_XS6(esE>l12}8iX5$fefOXIgn}8)phImgh1~VsZPl?3toof zj`WedemnNpqVfY%a;oZkD!|Ey)v=MayWXz4h>a=H684fyjV24&Xc`*reTN8Fs`bA$ zBx8}Yap8hc$87-{i{AorC@^(-B{yW@(VA@}pM|_8HwyMA#BAqg3Ey%+qp*D`GwO%Y zT@=+Cyl4B%Lmd_JdThWNf;+>`a6JdpX3RrpY*^xt7$D6@c8_gDbpcBtU%a#N6|%Pk zR8a5MCr^LD^^%$i1!MCd=^i*VexCx_-S1b=3q zGVaK89Cy5C+F7Fg@+$5IW8I-s)iT@ZY-Hy;drtmge24esAG~eSy%3fhBKK%umb#kQ z0Le@Fk)IGyTC-Zw%?I;?;TVwR!Rovxc^_2Yg9Gq~f23A~J3pWarT1t8I+cPs_ml4u zJ@SYiuoG!Y23rScd13RvMKA@F(`TZD@Uro!_I;{`btFt~ffwq#Ia(a4^>>mLPR$hPSUj1f zc}#jp$$73{xO$EU9(C@AVMOb>_1F#s)ySf9Haf#?5+nu`OQXF0IkMkG#wm7=O`^3A z+w0iPY*({Xv*{xx74wJcF`JnzUQ4jKNwMi^m=rVpuVK=`twKG7cCX4&(_SIq|3gqZ z06>I=&@v5r*YyrZeO(dJPXly)=4>NmxUZId>NvsYP%%Uvb||RO;3OJeuGrOD{jOuj ztHgKHF?X!4UGlnT@j|oe7>6I+Zp_1sN}(BL<1;FyI-9jchKs$^`FEB;%0OVlEaSmt z%S%et%;nm`E6<-xWKfctwhlswG7d{1RK*NRMoob__$D7Sh$V2$xrs=KI=W`K&dTfO zfega_Gq;El>3JCTq;P)n^{Zt+-)SUk@Exd|1C4K=)oywdvPzqy9ptUNj#eSe5Uc{G z4johP4_AMeb+cA@pPoD&#{T)HwyZqtS;CZJd$CQ_+2`2p`dpdaAJ~sUPMWR#7+?T^ z^#KG{VbG(TmNZwK;TtEfx{`IPxnWly_8T6h{f7JWsXR?W6Zsf|_XrM6raUEs#`q-7 zk-)2Vpz3`5|);#18J({ggLm)@)ry_^x=xJS-4g#|c`Xc@b+78{I_Y zlG#8#k@l%!w^qkjzD)i5F~lFyqs`H>vT6?PWW(0UQ`4%+>`4NYMCu>vV52k++_DH_ z_ug+)9W&EH`@L<@4t%#E$;;%DIod_Y^G=CFcCgJDY&FjG{{yWi6I?PSh;YG=jWEFq zIBaSIN&cTNT(Ic2c~Mevo04Od5>f_lh*S&VQPcx0TX5pd3B+Sn!QdFDdS+T zak>|k$*p7eH!rwt(ZUulp@VOZ8vjRI^(X^wRhP$9lxs)Pb>7F_td-z_tSXESOO~*( z&}ZiP($SK|GT3FNb8I3} z8E#YvJul0A&^x8dFx~%m>J*n9XkkY17)G0%h*ipiD7vldc%5U=P=G}6AGXG6rraqc2j6Gp zJIZbjN44-x=@RYp*C418s1A)Eb}#v(*pE$}0|2Q*0MK@GV{0s-M?4eY&I~6;ZEW2< z%i8(LW0`FOcqomMN{qGp#p`lbLi+(roEUC zwhHeQTNVcCEj9D{V3_<_pWFhJk{GR~(XaWPeXe%kUm2hk>3np4{#GCe@fui$GN%Wg ziSbG7jow(cQ{L3hnjEdL{BLFngrJyu1=DFUWuGx*DTQ5FT1ri^XRGDmP_uuxqt&s~ zzXMeEfcFbK{}IIm&2@f=v3}I$ORkh3`76ybV5drBT-#T{*)!P8^a9>Y_Jx|6LCx&& z?*>_us1en+!qjZq;o4sP3bjWN9ow-ZIE`(0w5pcLo$n2WOtND?Xk{OJA=r8sc3u$q zN`E=_F=GB^83N z_*nJT95_1XXlI|ZFPJ?BtrP=`@nDU){W>}t#+AC3cjx`VIAtIFhC-PjU10MiZz#GK&r(F9HCSF}3sMz5fjifOKpY*4g zUgLH9oyQ=7#=)Vs3_QEOf#x$2Bmklvcl4nrOJF*Ake0$MH@Gy+va*2ry8TqCmwdl* zYy#-93w0(NYcqetIuMW)5=P(*Ohs`2?=nh$1;083;+&S>(@Ol};sR zgx--ux6&Lzl4+;u9qjZF06;Vy#8wZ!@oY1F>^di}zfR1hvN});ouAD8!kvd*twg3k zoP&RZh@46F^tpQaT%uOz5f^PM&6n3V(sn7v2qWVG3oJoyQZB7OG#WV?CwW~t%Jdut zaRqr%gT4XwrYZUS2*;Af4iD`J!myx+HQKw z^;-2`fKwUf4oaa_NU-3UTL^`~h+q$YfFwFuO`C8e!z&>T$e%wSNL9+A0-`C@TGVfW zWcW$q&hX?U@K+&v%2$g^v2H}sLZl&9g{Q5{MjBV15w!{0tQ${>oPgHj9=6uT}p8c-ed2907iQjUMGk+VRXL5iAV)Sk@_2 zEp#w;!-(vI3OAicJf*F{*e%AW7J?j^&Qma50tRMz5gR%4SUj1((5zU$h!I*T6m%ss zBO!+s(AN@HU}0|3>$KzH#?~!MAk49y&2^Atw^|r7WJ42A;$6uJ!6x3~4Q9?Y_+s)v z+!_AA2M1#0^>rW-$Yq1av60Y-0p}$K?gKqIdpq7n6J=m<50geC9AyTqb5fi)vb4v2 zleht!Kgc2%LleP%Eg&9IZk4$8>j9`TkQNb{UWCeW{~26o!h4ZTo=0N#L~5q`r!)-k zj*DT2BOfdyKeC0)kpwm(W- zpQ`p6H^{P##6AixXC`L5jPGiu`e?d&*m2Vi#|Z{&NE$;clWz$@B^s8382DsUOGLm) z)4Wq+K)fQD000V(q_t)$)*c{-L{J#>3pi#- zBh2K`V$7al(g8XYI+`ZIcG0QDkTM01-HsmWmij;#^_N4$P|udBwp&0o4|6h`106)z z88)$UKm&A6wP0-~P5B@74`9*9<>({&7dNzj2(mt}f33s&w`@rNmJ?EhpB%bfNC%s~ z$p#DdT2ee@w?gqa+A+KyNFEv#$bS`aDHbyYZT3;;$&ek#GM@*l1i&ig+^P@3o4gqf zr1~bS(k#_h2M6FKpiy!}>VeDQi`K2gxyEAuVE{_y<2H_lR$ux+b$Pr~F6zC5SwkHh z-c5k#*avXjpyC#x5s-AL8ihXu@>?7#K?hu#L3SR@VPwDql~yxO{-zW{cHj_st{zpl-ECGYIf}KvQ+p)5xWD|!bwyDmyAU2a<4K9 z(8_|X{es2uOo04bkUAITlBP2w_6FK8sJ=0(gorsj(T0Kl^9b{EVFy*n0|TpXN5#dC z_URm*%!gFlNQ}^2hM=Y!^uZ#m=CZdM#BrP;aE+;_{y0BofZZf7o=h%e(r3{9G;Nk}I?cOmDo z6i1*Dnp#5ql^xtJxjL!O)JJ*!C1UcDSu&qtyLq`aKTla{R+d}q#U|m}Y{j-#-;*R0 zAgwN<9(-x6ot=TcK$xUXpg6$Rd(ns+UM{ z92%>oE9qb`p>Z@ z=WBFsfynFL!aLju7({~`CP)E2fb9zbKM9}AFWDxmP(j!x5xc|(y)~5^55hv>wn^&M z(CF6;S|&XJYVXNL<%nf+J)RNSM>Y*v8?a2c9-W_DAZ!k4Bif(OxIr?PrQP7fkY`>d zTyQLHE7+Mr@L++gLAgq{+zh|aT=HZtVaqL1s{`*4zOecOu%BTJLuaFhut6*}+yvq6 zlL@j6I7lg^Y=C%5)D+pzO%ZZkf%@l}BKNRejzj3zasc))>EeIG2tj4=FA4vzH$s+w zg%JXu73qpHF)Ee~xoj!)fq;Odzo+iceiu{;(Ju{^kDzVe@2 z9w1Fd#QJ!hiv~bO%aCv}L$q^LGZ#V&4xQoL`dEyCTNXT~TOU9b(`GSP2HN?y|BZGY zKd6~+Jx?>I{f{*>k$oI`sB7o9BHH-}QSE&5zoDH8Dp8CyG+d_B12U(th0hUmd17=F^uLJ!XU|6LD4W3j8h(S!fC9;DSUIozP5$l7hfh7OV- ziD|z%35Tr3;+s@r3eGvK8;y6U!}0Lz*EZgUH5YshB^nml2DrJ~1OqEX#j-|^F-oWMwEm_PDo#NU`$$a(Zq}8dUa7{-EbEoRhhQ>r9Vu!S z*7PHprSpKX!Zo@*0T|7~B;m%xjZ$5;Wx9y1!t<)n5OIM95T#0x6d3B!rjHKWU&^Vk zyanjRm!X&_T<$4>fgjJqrffB(TKjjX+ZK=B#^9aW(@k z_+n8e%e5o$-ohY4@n+8nHC8Z9u04*ihy<{*1ZtD-N)#b>W-4u}W1DR$;zoI#Bt-=y ztd_^~W0Q;B+7Bjh97II$FEB=WL@+-`aiQGT$>2zMAO8y|(k=6OQ`@T)@8M{|CN7Vz z-N&X<*GXDRcSpSf2)X9b%Zl`SQJwKU=6Z@~1{BuCq-PMB?Pzl}e|2c_F%S!(#bj9a zBEFJvsn6g9rfsEQBb^{1)tMB@Wo8i?%85XZkfHI!A{3eeKQ|3_{Jc=;!CdOHyy@*| zJaNllK&VX*2<3rsU_gq1wz5O8;Q3IfSpBNf17cl>Ws7qU!_K93Cft3F00mX^u!r(~ zN7*azPwBCt*c?H;PiQ|Pi3u3lw6wo7xPuDAjc7{CL{dR4fsV={Kw}0?Ys^r1$ZaI} zlQ6GAv!hrDa$1lTGm;k3TCW~AD^7NB5`kf0jU=+P-(P6#`QF`EafXPB(Bo$JVws8+ z-;fw_j0};9mIuSgj{m4HZyisRAI!g)+Y3hP87%ysa> z9E(~u!l%+4I)+MF^@371_)pFeRqVuqJSr3%#H=ix@`H^Q+FvM#ckpN^%y#*1=BzrM z`+UI!6lj@F6O9B82B28Ctfe)Pb3!(3dg?9Z`I`rWa9ljTMg-VmUM@%F6(ua57j;Va zc(h&I&qebd`=S(b!|P&6AJ~q_gax3CXU@phDj7NJ9vIEkT?M8gWSoT^4 zBACubBbXL(hp;*gF~MoK2Kz4ZD%Z&m{}R(ToE$nj#|{2jffiT9;Ug_%&9}8sLgc}s z=Ncmkk)qKA1PHC5QqhD&yb!Qx!k9>1M8mJZnajbPxM)t~Va%{1l}|u-RBqS~1v2t^ zqoHzJ^!4m>q-Ct-TJC0SxYm2^2o137K9N(@`&YS6NQ=A?Ep$#8^RHhe}>ijpAg zUqorR3?vU-t${<3-@(MTV8N7c@Qu>>W{L%T!)LW($?JR%n`VK7>Wnat9m2A#>mR{B zchwEERSR^3nEW|Y23U8^-zhr6bto{(+17d3>y*lSjiyF$&lKqQnlpq~VCQZ6@;!Ke zb&M~i^0O!j{|d@grj|zt{0v?}QG|b;_#@vL2lmd!He)rQ2$4fErxpku>Nx@(-NC+F z0v~|Y_(a2ALa?tIn}=pPY-tVzv@QKqGm<&AA7sFup&5II6tYd-c#%p3o2%g)=i%|J zm8%ts4B}hHbPg4}h*E`UGk82EujWi2$uV-45sj6cvHgK|PGQ!>rzxMK1f1)l@@UO0 zY)}lTR@WccSx*oa#S#(=8%Q1xQRWzL$WzH1>hMcmXJZQltQpHEe@u&jC<0TstSM)3 zJf{I6YSpxJArPKHkWe30I{X(`W=4rTZ4(bw0Fl-I29a~9g+ZVkoPb)&>xb62&W(`m2zoAPka~Xo*+f7~g(~S3`0N>QU^mnT3=X)LYV==PQC=B{R;Y|tcpeoHNjnDaycUHH zG?;c3`%m%MwxKiZe0-K%0G}74;73Nm&mM|T=aEv)F$|-l(JFgE0U^@5Z5I=Q;--tlTT%ET zQ8?dqt{P#S6!aAxQj%t#${dsu8oL5SCsqt=^%x+;Gt%jF@R1&_Tdv)UR>~V}keXU0 z9+6HRXh=jtxmM0ICqqJOGx6AvhNt??$bu3q(K3+466m#o>@igu=h2dp7Q|IC$3o!- zT8zl+YXNRHyqH$8F~@@$5M{wPExV53xX~;+1MO@?5U#|Wt*+hGX11gA47p{31GfYY zvv@)dJDO>~WATKRBK@v9uJbGkVl71pZPM@2hM}IywMoy=GrDL6DH3yMVP7B5frp@h zCnI0nn^FC1bjC2OGe1Og%e+C&yc<&_g}sFU^PDOD{A44!j_rJ{ERMqC z5S=M)gRWc=BZ2nOfDJo+D46QTl5HBC;Yfv())ojN-x@&x`;hd8Zv72TVnf&8P3K&F zykF~`( zZrr<&XJy5l^zBtyY@s!aHL+^*lc&!q#THi^V!Zl7;lQN`)NDE3-Fev5k_+JHM{MsRrNq9lg=O0pDOq@c{e%lR=3wxwTyHrW zm8BBxQx;nkU^2r@v{h!+rR zQGq~mk}1qCV^?P(;+fe^EHwofy9nc=0W@cKy-|IbL~HM2XNLo&S6=@$br#YA{3K>i zbi9jrl5T>*MKfAQb?i<%c4Z-uW-Pl2Uo3M3tl(K>1%Co$ZR`Pa7HwzkBK{Vkdy8(P z;N_&YY&-BZu+qeZ3vd#t1@n=Xd?`YVA~4Q3R+S#~1~Ux)OJ~8wfFFEcIjp6=^s}oM0kpocUT5ZYUgtH~{6z-5FeFOSAaJImbQ+#B=pn=3)*CC};#Ppr zoufFLyZLGXd!^pCEF6Ht0ZANF5}^dbeUv&@xI&^!lh3h$!n|7nDrLe6FzCFgMrDVrHUL{0^tn`@pGbVQX_N*pIhrGU>#jgt0zUR%kwsA zEpad(KPSQzS(;8~koI|Ie}Z<-uoM3iiknyz$5Nj$r9Q!9D3&_mw7HfNKIRg8sq-Lx z--lCrn@RMVT6r?oqGTXA4=VOLflHR_4SC)DBzY+kD~v09KB>-dHsb#zXj7DB>4YCk z-N@RzzF<3oAH;Nhz$|N=Z;(fscgOA89_Y$;y%lK3{WhPFEXOB9UcUkK;GF~3G`}-g zr=yFVV40iQA(XIoox_OYm^$c_$LyPNn*dMoPjG!Ms}GZ!TtwDJ*SS0z`Hv{|9!kyJ ztPuNgw7_|YMDMvD>3r;{mwp`MxYI~`;_aM}V2C7ettAGGi)TBOQU(|_o%;~Ukw>(% zz%@k-jRH2o=+K)i6T@%cDhQ8rn;`u{W`735n}LlL)U5eHoVIwz1R54EoQc1y6@u3`DB4V_8AFdsb@M8IhMU0#3oMH>1qm~ zBB_zau3|gcTLRg5-R$i;0_So@-Av;JGib*H{$AL8)i`Dn3SU5BTDah)AFgFF+81IMm90|&V83PIWXF!r{tBP7dMo3j(` z; z%$FV-))0#IQ8R>PE_}8{*oERaT55*R7z~fQ^9**}Xxey{Ts{V#rC0>6LqH6)K8}nT zpBvd9kTN~{<_ab`P0;v;{XFdr)NSYGTygHyGbi0g|rD3B5 zInP0(a|96@8BzQ87g_2C)pi5KpXptak*PSzWS_@uLIA$yb=t{(NMaui5rYsC$;imU zXeF9jK`RJE{+8yQg2T6*qG@B8UDgHQNirBL5P>_qN&$>-GpOKq0j!%uU}^bMgtdaV zwaKSAZNXOSuf|R&+v%lg!ghP7kn47a|8#`ZoV;KW*r=GjU>7nUQXyGEY?w;Q%D7%J z4A?BH7uwj>R{bE?#Dtx$iN99+n$Oq1cN@Q~ei7~PRqB_worR<23Kt|DG(e+-dR7qP zo6b>dREuL^DdFNn(sl^A#qKQ6K{^(Snwl3w`*qbWXzY{cY3xkW*kP8s21@%M@Q6D< zQSi)bV*vq;jmoawf$eH}4D@yvm?V*;I-(&lp)q`!Li2M8+2iPC+vzakpyKx545vE+ z!%$d7#^pkH<5)EgXEp~up*-3$VYnvE_D5Y?gBuhWSHhwogCK!=nT=C26#!OsHMO8? zjB!F^JWd(|SaW61OS@4#u$KWN9Am|rYT}SeW0>uaLn;*9|93%UT%_gNA+Jj(GY5PL zPfj}6#n~u~H9~~UPNCkg!$6Hes1GVRXiIPnQST_o&D2sLJYO>K^SmZkpT~B zu6@2ygTT3*>N@Or4P;D2a5hXLsHfjxf=~C2t9+Ey)2U-ZJ*`EaE+i4YR{aCEm)*n; z31t}nH`KuG#a(}&g7)eln=X_=w~LXjrspL9Dwt06`GIfdhebqmg_J?61%_on~C;31o~wMu%L$kL_1o?Pym$M!L4>42u)p<{Eai z(6G>N&Ti{$p*rn)fsSc_L#U?BCGYb52FEAi(za71K@SAbnO2q7*f%sr<;ayp7n z8q3vEJr{N(1$$)TKIQiRZRfeo&__KFJPXFN3M#cj@A4sZo}G>;OQegA!i4x&ItrVD zcd?tggeNR?+*s)Jrb0TL!&RaaV0mzJY;?3a=R4%BakT}G=yjmD=&Bns>!4i_3NQ&9 zaJOLc?+{)hOqwqL}5N5Jmx8w8?N>2Bm2DrqC ze5Q6tv}1A8?Kn>6H$HZ-21WFxfjO|39?e#C3z;K%8~+7F^OCWIUJO`tTq zp}6$@yMUDzM0~|ZMimN!;X+c(IbPZ9?4AKkGyFYX9O2wm^B!!i)%V9v4|eopw=4z+ zxgjaAtM~w4_+3W85riKMV<2KohQQ^Nt zJQ$9{RWu{0-(m=YO_rvQ&;tyjHPY`hXod=JMF25J+GvipH)c4}qTgofw>8*;vw(Vg z`1uF{f?}bKu75FQD>%Y=D>SzsJx2$U0$VAD8~ zg|z6yDiSl6yWmiJ7)~MgKC*1a?sCUD{jC+{Y+YQR=-4T zQ8d3B(`+;iIGuBG1GYVjR#mi`q4#ba

8Rqc!mUDEN1Ly8Bg}?zgPvzE=~BAWH$< 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 diff --git a/KVASD_g95.EXE b/KVASD_g95.EXE deleted file mode 100644 index 81fbbdaac978aa1d0f356e904c5745b54fb28402..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380112 zcmeEv4S1B*mH$lg0ud)ptP_hG*4Sce)LK$t>olPGV8WLJ191ScqoQO4i-0gAh?#sa z8O-G}5Gzq?p-VPym$vL0D`*s<384%q)$mbG1TocU-!Z8Mv=ERr|KBJ{wo03f?lZL#$Fu>BOerXKS^x66D2LSl|L^}{3b@5b!LA!3 zV~1&4ZoVn(I4i~uORL>9A>R~noTYw6v|%RXAlVXj^x!K+zv1R2lj!m^hkf5Mas8Cq zdQ=EC`exKM;-PlP2?yT%vw}VCzHbE^Gle!xKXg-)Nv2adyoo!9Y5D=AaM55-qi<-i zF_(&MIj`8Sk)nq9YUY+8zMYC(vgyVMEK8UpOhwP z8uKK0*ZRaxlo%7nwXk?dWBDxS15aCjM>7U-1WD53}ecwV~ z|7au{4TWF(E|u(U+1`tPoi9^W5=^nGFQRJaht)edtq&|sEBzS*?B$_GYvpoOMH{{KJ}|NJq07LR{;spmEDM8I;r>r`6P;r{JH1lV{kB{z3I22I&;>e{qRqTN%)uB9wyH zNa)sh@zHovz((Rp0lOidd$W-i4)vTRV8ijQo*CFMyhcKI#*5FylLF?#lL9t2o;%)1 z3x~eIz=+TtcvsI1EElg4M>+S=QK`U`7*!&nMR-!(_Zey7kcm6E4Dafh!OX{N#8CyR znDoCK#;7{J2nN0|`{wA+*ML$3TK?pK3V{F^unA8VqMlh#L==Y}~TBUX!~T6&7) zYSaVuTuzol3aS~eui^Fgz(-%+gpYs1M|30&lcSoD1P4Bp6b^j_)^mj&)h>O`ACb5_ z?V+T(f0&wYis$K;H#r^BWR9M80rWBeEaF&~h~B!3qW2a+C!m*(y84kud<-P?YS0;d z3ntRJB)E>-SbrtHVkB69p*C_Cb;KLU^^w9>jpZ);OJ6!GR0D}}6!{{aRbGi#STE?$ z1~LU=ZEXmX;&rOOQrZg(PGcK4@C z#Ict~JJyrEB7ct2leyFr<2i-O=!+qYgIy^PY2nZu45v%aevyaXNV|{IJpIx%PP?RE z+K)NyufI*KOH&%~UQSG-nd#Dp_DiD)=F%_emqxS2rT-N&73``1+YVqo`~yg-(AhJ+ zy}=#yX|`701@Wd{l6*;>SDj0#Eb8D3ji3bgZOm1W71m0UiL!<|TYCq@t$mkou*wIw zUlVcc&zuaPG*0_n`tB-5Ai4xIMir`~I&C4MOWOb!J@0!r`hI(Phok(9T>sUwhNx3J zo&ozWl_4Tbj-$tSf5g$ESm$sq(26)(73&;TOwvxQ6LECJnWV!N=DPS|dWX45a7R1- zj^eKse~0nc;?mzFGVC5Mxkw!$CAm@^p`lO^jvh?@aOeb2{m@)s1;{4j3-StYB>nJ3 z5*1%0rCs_6%%|Y)OvyDujmvI}ICO>aS!OYZ4xOAOoo6RV$Jz0#DsP|$tUFu8USSKF zGD&Wo?KMeA8t ztv)j$ZEhMUqd&d1uhiU|DWy`S=<@+kI;!?H8ye5OVD|mIF1T;yKr{MbRY4yCq?=#GLR-68Pa(}=%6*U7?Z5c)Hc8bP1&~Z zy+6I*{$AV3-41Kzoyd^xj@mS2*psYlv-rKeHq&@dr}t#(Ia+rg^sgLPH;29k)y<`^ zE3#Td`g}aqEy70wv;HNA+C}PoU{SXSA8qN4?GDrQ>8>N%FwC^J#-rB{xhB_i?Db=( z--F?HBop@E?lkFXZws98O2>(<7O!x0w>{i_#M9OG@CoVc5~62^CEeCpnjf3m%Lvzy6A=5;93+l;B!(+c;mP3gwBDL`- zP#uos&=Fr|Enz0ospEA-7LiJQjtrop^bf*Lrc=MB>AtBZQ=Jcwwe-$QgV~g{3~w_T z4VUhsgp!1WYm1Ojo{(@E666>rS0$2biIQ18*}b%U_y%grp#&Y|sH?)a{rx}&1O!GD zFJ75K_H9_RdWE)poc;ZhF9^L+G$zya&;(RYr{_8oI(OII)1Y4_nSdI-y7b~}VNRFB zIGI^XNh`n80e9I6N#sk;xPxTi?>y9hod*3}dIY5D_5 zsVm1A#CkuC66ygwme4c}38sV+^+=GT7)UN!zIVF*cLX+-Q`%AR?y0(kpripCrfFEq zZE8;<>a6=aW|O*ZG(fA8pFl0}P>@2>%A4AgUHT%UOtn$w2Pl&;giq4&)C2TPuISRs zDIpV>#1a-#LN)pqOSp%|WK1_w>N1H!=|sF*BAZMlI!%ywR-Y9uO=qq>b-Jzv$)Y){ z2mBZwYaU#;2=8HSBN-OdgM&j=4;C5Nl|gXJp;QUu-)eu~x`x~-)SZGPm)_w7Dvh8? zEtLp1G7-K{#AzoKC^4*sVz3`IVCMoSqRyW%53_p}bo={d6Qr6!;2$OzR+!W_m3HYr zQguU(LfdYw{3+Eusmj~mw5}eF_i-^mrA=I&yX4Z%Mx!mD3^m#VpxM1SV+gl0mjY2O z_M%FYel0+tSXfIr(1Q_${gA=bFk0PA_%M#yC&gYA=YsYQn|_uT7=K7J<{h1wiOAY#=+H-W< zPX(@#Ly0|PD#nXAUSyj9v@z@&LzqLUtV zcMIs#A>!8HZVT~N^Y5syolS;=<9B!=|IXB@x)&Mx0s2@CyH$VZGJG7&gdFJdL|+{P zXGo$y!O-WPl=3mlNby)hZvjyD!D`|k(VEq=D)-W=vFWY(!84bZekR9|xRj$vQG{po z0{w4;Ug(od9Zo8&C#%J4-8pu^J474&O`T{z5r}3V#OLLzh&Q4^tWn4R%7RdiA|(d4 zq59!*y{_p+dht-uk5wNAd*ZThCN{yu1MrED{Wbfbnv?d|16Qgd$Si{8frh8&+g~r~ zHl|@SxWv$sH%?TOm0H^~fO{OZVhSlLx@9`CfcOY5770I#1>P~sDrs90+}mqEP&U|p zz`CLF`d$zy?(bvzSt{%)l`6)%g8i!f7UYBfnejOQe& z{X*I*#JY_-%1c!(H*`d(C;$60oz#sS%4%38iY9w&z^3RkQLg5e%zN#vB`09v0E5s$ z|H$kkIowj8u*DO*j3?tv-SDC zBK1C07cCR5&+n2OxGn4R&E}@y8FN`Q99mC~AXOx^jB1`aulMQo=qq|m0-CkvC{oB! zqco{&Dp4sizy;*!Ut~Zvc#r;xFo_fqDxv(451*7Oxl@y*A{WfqN=b^JdTrlj4Zi@5 zSzAu{PS+%Z7Wa_6nCTS*#nmiWg1a=;sI;xGrBRT!YJ&3+s-nkYdYbk5mOX_Qv*ca{ z_t?w_R0nzfg^u_uWQfK#5?W^(?Q&uBF1UK zh$V-O$AE`9SB*cDVuUu!H(u5-d7CQ!L@n2rgX-dHrVXV_Z9V24(qzUe8KxmHw+eHx zNvoyd5uB1+N6!kg&^~J@A9Gfw(?Ign$!e(^4(ir2_r%QcI(mx=@Qgyd>@pc53fP$f zC3o@I$uRMRF>0zyg&M|DTm=LKXNC^?uIo2g+zgFXi)x}6$Y2mnNQ&Nt=l>1LY@|^w z5d0NAOtYJ3PxRl={TOclf@kq5kCxdvYvV#*Lw(LW>0*k&*|Ad}``Mzu^O ze#jI26>UVZ*n0KmS{4GSCgcl8JER<>K`kv3)p`gX9-0tvqNuMf`V!6-;W#X3X|xDD z7A}B%f+UjpDZ<$m++~r@7VGmPE2I~t_;pp%;8^#5( zCM}UqN_V?-w1@))bXtly1_0INk6BFC$_6wj9Y^JaG~wK9ecn=yrI&a;Y{@q770&%| z(g3)0AP0?pE*<-=&o_o`KREP3)-Gxth;~SSJNR#k@VEQdOHUW`=z%YVrwiztn|Rp( z#0iYM>j;W#)zYmWYKK^G>qi`Vo2Rv{vF*%z?aFC(HrIdUdu?r=?lwnvYoN8w-5S$F zWOJp_+WFqg*^KObmr>KH>*j8B9>@|-t-vYzAgNX;o|yf`)>lOr+&CsRxgA@CV-wl$ zgR#yJyBn0`7VdgEbQ6ioG4(X9)$)fHt&j!)DLku1V1o#ei&E5(Q&Kv&$c>aWp_Z6H z;1&Nz%Itk`gndVjVHRl?J7`~ElB}UG8CWf~XS2Gc?FsV%NLn2>2pXFt-5bu$>XeQx zvW8ld87m|kWun{MMoMZUwVu_~a61j)=ohgBJ1t&^9gjuXm*O4B`l=fS(9qUP{}$M8 zjhb-OhfZ2UlL%Nk3pn>CnNBSmOiK708h8v#O2<~=-XdyfA1{NpOlC zw96rfrZLINX*xK{g?pWFJ|{fuMWCvd`j6(=QrpB0)U#S_Ct`(ujM}1xwqrz?wr9jf z+K>@D?!c#XY?U<(-cv0XrG$=1%Wr+R$Q@Kida4ykjrn*{%5Eg&#mNiP7QF}&6~Q~w zR?n0)AIf?|G>LabE3a-9A>SdZ$GOQHas1k33hnc`!=45iBCKT%W9_Mj2B(H<#^MuZ z?gYgX;)K+s^weXrz>~E4ChaM_NG=p?*1Xb|FFf_$Z1=B2`~3TJ{N>iw{|e>mm7ZTq z=T@({D~aZ)Z-jKOlVKu^^gIWJu~@b09ictqmCj#ZPpVC7LFw6=)#Dvu$@hv$P&iCE zTfO<6VDD|E$-&QVm(F#n{v)b}B?!Nhs%?HWlw`(WkcQKs|wveko$L*qM!M;6nId0m9b*(x@YdtK}xFFA8GO@r~- z`vkZfgNx6RD<(;vBhrn@@ei0BqgR+u^W@+moFoGq&dutS7{DFz0et!51Lz`b69({3 z9zeoOIsP#Ui32E3UVQv`@Mz>PvuNaui4_~aTAGa@^hP2-DEWxAy{O3Td`@Om^ilj> zyqVvZ9wPVSGO!*LCrf=PhynVB-X>B9D&;6P9|K$DJt?*1W1BGp%z!F0gL^Ct*M*l^ z>Pa8?BVJ?3befJBG{BqX8(dpXQ_Zoib9+pZ${HRB&vP(q6q<__j`u`}|#V%B8}WodgMfw4C#3}|jFQI)<9rK8uvFrZ#scUFD3U=vBEvh*KX&jO7F zzjL+lY!J+6(fufrxE{KLoW!H<1A!xIo4SC0q6rr*ur;F90@j%7DQ(1h? zVV7CdbP=F+A!=D1ICbQvFeOAnU*MA(vsTfDQ|O3w%`=4cm=>C?+bB2tNO&BKjELb+ zmNnFs13l(l;XEYo32SMBd&jEX&W~k_IBk)x2DZ~UY>)%iOrx3L3RMfzSU#zRA% zwVwb@$uyR^2>&25)l%EJydJ#(;kc$Ef1Fa%ZrB4CrWcbTYmW%+2K33+N_gwAa-$w` zU#x5XnZ|1y<-!SjhZ<5fWHPKHRc@qDVOddNpsM(Oe2TO@0~3V$g%L7*5B|TX-bEh( zPe~;a>Uazrb~Ue2kubrQs(1}Ue?yL}3hnbo#!gH!n|wEhEfc-cEOyBdm9O}KFoE;I zEAzfGpMYqe;l(;Fnl#DZCb_;0Q#r3pib-zsF;H-+S0u?0;V5gUMerki*|}@h)qbMD zD4J_IOox(GgA?r0!ai!dWJr-)5dg15ZkK)x(VIl=m_%i2w-gF4Z2)|&^IxzHqXZl1 zCBwuOa`ZDXg6(L>yEih(3?eh_D#Ijr`)F@(wub92NJA0YPq6w?lAwwI0wt;bMJOq^ z5#>P7Lcvdxo9{=-8t$ADdzCfR55@I@mewSbL|#ht7Fw&5*rPc-y59U1M3YOOHp<{R zA|mk|vyWg(M^}Kgc>X4il{IWavca{5<|c#SpGKq9hkjaxg;B;6qV-fO7U3kD3-aMK zWYJXmZuHiK3Z$~K_S)Z2`lIYSF~xKt5GZAUh?OE?^|zH*i8ZFUmi;vPat|;~V86g8 z=Xa;`?eo^3w0}K@+^oEsia5HVC9wAAMZaRDGj>OJ*%er?JG&w1;WEw>&Te~C>1QZR z#6`9>{01JRqbnC%1z2wjOqa3uel;1!-o2rdrL&a({L5O}J7r>tGU5=dPj_1`V{~#flX8P8|mqu%3!BvA4H9r47xwa zf<%~u6mWeZKnf4+AnH2io$}au#UShIQKX#IKCj7(kWT9pKI3zunUvu%VamUVw1RuzM#0-PkSeg0F%1o0Z2ts3#$N7A7qS zN0ha$rQp->=vg3WFp@+x^~!PR^C0Q(La$5517bL15q3dblU=;R!17RSeKIK%JDhBE zxbzmr&O4$2fRclqNub_Nf?xn>Rsg!~bI(L_N8%#HqnQkhGG!dOsw87$ehG?0=i|2UvVttD- z*&}f#dnpbHM4ApT(@*u0DF(-E(D_P$QBD!nNib*u_zMIByQwIHmhnt1^4i917#au} z&=tPt4TS=Yp1Nk}e~*o3;;D36d0`qX=ghnBaXn<#Z#23P&r`aROJLtdxteVa;}qW! zGrm<4N*Jl|bV##Wwbw7*%>E*XK!_f3q_pj8Z9KNGzvs^y`WU^2_fLhyVA5~3WFLvg z#k5mg4C3ANod)fh!zW|*=Xlx!dAu!Y*nfrtM|^qeD@<272b&N_BTmC_h8>@H*i2Rv zIXmxYI6DpiO5Py7hVb;0F5TeI9DfRYiGiCSj~#mU5&Q5m8`=*q>#eqb>ASfAiT07} zOW_sm5E=D_C|yF^&5lcYQ8L1RdG*$nu63t>ygiF;@s=c}7l5la4=)U_NPxG{CMTj;+)Wy*ODY>~O zJh$yb>``lKBTV~a$H{m4fNHHRfGsk|Ne(*tqV3@?j%56z?ctLJF_15H{w5wOcEN|d zB|j;iL*Z`^EPQy8AJJlc@otFfdU*D{1qk5ETsqG;H*@LYgd+m+)!T=w0tRzr*;o!HR@DiZ4oEm?aeUj_*HIB)hq6f6A*`N2<< zkT*#p_^c=`Tm%w1=PaHfDV#te>Ljl_QO3)73F+TmsA zz01WOgz4A`aq0H}DO8>0k78=l#5`{fT_pZ;wtv~Y`SWHkM*Qf!M{#JcZ&t-7PCt2C z(M6^s#uvKR1G)wZ%_oA9N4v>_4x#`aWtStI3SotL$FWLzLC7E z*0lp@9697lY`hsM#AMr)dv|%@LzC}v4r7w+ zM}{{>I2t1y*Gz3mPpf?+`7*6*A0{9DHsxSGjOB?4w1j%CRe>QyfTN*a^x9Hyt-PP! zhvp&(10((z*zfTv{=Z_qDg!Mr)lj2y6PyCrV#_<_Xdw#}yJG%iyu;#N>J*-venq%i zE0=wfs_hl8OUI_HUBEe4a+Ur#`!{2Wu1#W`lSe)wcTk6rvJ~R3DCFMYf19h{RJnsn3Pwxm3wR5e+JQvON3S&K zEVa@;%oT}t5TVS+%>=NtNxJt!`a|^Rf;iOZ>#7OJ6K>=`0RH0S2pHrDfE-s+PqDq` zXo1_(t;2YajV-7KNq(Dj?*|DG{sqE>Em!_W&^YLSNAk9tJ0@RYDgx3)1-)(F`Xw(?3 z*bw50Xfw4h;p~97htRfjqa~Z5eN@YVAF7^R90H352q!o}6Cmt^GV%r=Pr?j&>1ujM6WhS471T#anhDXr?%D)@P%8@(8wlttoLiwn$-Q>GOI?%NS;do7Ar`Wj# zGnFPDUNmrpeOLiby>F23lweN*>BHVIxgA$-t#&Gw45A@wb|h z8GU?xkK9NY5O-7i*2)*ZL9ky_8+nuSl-S|9k=(DE=QXO6pW|#Tv(b$HDY)K@E&EOI zw>Vo%gP6$XlbFXrHLX3HgPpev&t~rAH>LAAn%U0<1JBW%cRv^WN?4eH2g~@^qGstXh1;#=K)_H@Ymzn&d6b7-jS<6`0 z2B_u^!b57WP_=%Qd~eu|a&D9}T;N!P~EDOH+=1QUt0M|0vz0RSU;z z>0U3fKOR^|k(psK5G8MHV|156>#32ltR=X!htJ;VJ z*EkRF2`vN|Y_iY6m)J2JpY~H_x5+TQ%N?}!4Cg;}O6?A72ns>-4WP$(lh2$lx#Bog z-@c7%mF}8oUGpS}o}fhit*Rljn$Kl^#Iry_N@Keg+O$Cg%0s=&Zc`_Uq`wmSG^0Y= zR{DmZd&?7;S86K}P(20qDikhjNY!!e36UIA&#iDo^5o!V7Sl<(jf zBnL@LwY8E?s?`!}i&LSKG6N~UM@r1J;*lP?9f5~v(cB%UYd%Kgu_^uzl_9UddLd>o zVToauFk973f#uo^n%dpv)-~e@u)AD<#7YC7r$h753e_#N*d49bH3u(61sJ}tfDw&V zQ-a(aR|?EQSBfz|`b}mIsIaa%auz@gzAc@GSc{u z>lzM2byvxuybsNhGvb)cPstVeDKb9|U)YgmMP}KaCoJ1Vm<-~a0i<9lEcQ;k$&wXX zj%9nPUGid0vVsvxSB`yF6WX&mW4QbfIrdeQTv=+3tJvYF-x)EQ*vQaSypJuIlS&)$ zrGwO36u#?qxxLQy2tculYkG+1*I@x5{Oj#sSy%U*iV3TyXrbunNU#wqI3>|WxQ9|M zY9kD%T*F3aq415bZ6lndAc3!8BfN=n{cHqkMuf%_Ey+e0i-)+4K&se{5V&eXi%abp z_!*Q=#CVU7>qVFVd}{#lprcA+GdWEK8_Hz}HsCSL)$)Y9Qmu<&8L<8rVHyMbao7Va z8DyC8fRW=|FLw|sQhP!vO16*whCM(=Si&4}#O(oQwz6f0Jy1i+LBbVddrG*=ahf16 zCVnfW?PZzqf+Q>9KV}lJ?17bx0OACbV4WfI;QD5(V1hCWM40A083%>5NLSrf4$MZ2BEaA5-Ms^`)%AffCC2{_V3#QFEBSyOJoZ)ktpbA3*-_NDD1U5t4C&RAAhbT zFiZ0M7kukQEMAy}35I=Qf<2I^&k=sd1TeoT*@8gPM+`Zgt=)5Bdw@+D!=6x*K4S&h z6NWu73H~qG1GG<+Ft~jJkgc3V0q7_v*+-Em@R%rcVzLj;ll9ihtFRx!`jZD*W+3UW zu+muW^$ETIg8qzY&*fzM{Y~vjr_U0!=K!kkAJ(3)(*8!Dl2Y0eBO6zp|3xJQ-AQcp zzow*?g5!C-3?((4-v4hXDdr+9yjVauTJ8MMr=(I@No`w1W2VGxe?^t?LV?J5!B93( zPAtes-n;ps7x@1!z_#OSK% zgH%7ES&pDI)`kel4U}VH0!83SEJHn#Eb$B?kd>W05@OE~S4)(c{mwa^=IC?k_q*|u zMbY2mE{a6pov#NQZ&z!%XdXEm5{KibCz0?!G8}elDS<9ub2u*j0@eQ0!y%*3e%`;? z=rl@DlktCKI8L7Ek3iyZ{IVMY@ML~o^pU^BOud76Vwa&c9Kj>G)ZB4T8XP)K_(0OY z9dN0!|C`Jc=^=mGB>10T|9CdQ?3tdRb|7e}0-Rc4vq^?mjG3(;hs71@^ghSf?+LPh zlex`&f*fOrKiF(Oh?WhpqE7MBtIu=E~S&|7b_dKN_8nOykH< zbos|vsNr}ioq9&>-|O&T)X~1ixrgMZ9^?JxI$HO_m#{p0U!Q|5C$$B&OD%f_@P1MB zz(*8yi6q(@8%i~d)AlZXumYo`F`Zw3(Kj@{8ek)pCA)EM{ngGb05P|_06U|N>1xaS zKs@DNRZ8>`knX&#F;2M1{@9%lFS<8=#|f^ooK{@4aIr6*gzHKSdn4(|- za3nWZRZb_LBvn>W+`3U8J8LlZ>F`GiqCwazwpQ3=AC&hbFO%$+XG*U?j7=TkC3b~# zd+m2Tp_O%W8$)=pf%t}M+6uL-%F9WmVx`ApVFe0hj-6E(CQz6ZUytC@?>ef+o%)FJ za&-H?P3%Gg4t9AQ{t0YR)=}U03}6~X--9-xF-p4^qc+&4M(qubCsXvS=&Glwm|6`O zGQA$COl1tG$ut!|t>Fr>rV(6`nyj~06_7CzMAf;g zQ51P!OA#?RTSBWiZcTXB34b}}pKx!$!9CQNqE6UIcUAU2O!~)_RvEd1Pho-2Get9> zJra(}@S}9LsuE|eaCRcAJK3@V=Su#f4qX}ig8cGx^ZB$Dqyvrwzb!LfG{3u@w&Js1 z7cGL9&lKbICEVhC)QTd7l&azr9n0Y~XN;0ZRb;n`jX%a`Y`p^S#745$aE$E;4qy4cZ5)(wS28~&(ld5a2gh+% zC(^MmU7>^Bz>A-=QXPMTmUYhh>|X3#&g3&XY*E$_X2P>2c1FjA*Z2t?lK41A!_>aX zhEq&i=&aQ`I%`!!1-&Ci9GqH8AqFQiY z3d9y9C64Z5qzOoY0pU`aN)t>t*LS{%!(cI)9Na~FWzhf$Q}uWwmYK%mch1Hi|3EgZ zimy*Rb2N&B0o_%?xlVY>g@02t1$DBIsB1m!pToJ4aMJ;BRreg&KQH+_`X~ljjpyLO znFR}rz212b%qw2tTavlZi~FGGJ&e1y9_<&ab)mb-NCEp7{A9txr3*5>d`s6O{^BLR z;yIb#dByYRWGPb6sBOT<>ACx;QsT$=^eAH6>3$a&Wf|L8sgB#PVTqW;_D(frSf}_!j#g z;26yL3lWFOSJPp{XJf!{y;`vvx9d!qeS>z(U?UK(Up!H;YlsY39?I1{7(d);gF{8Q z$_lDjpFaRkq)Cukjseqi)CjA^ZT7ypOq8;p#@Hf;n6E<%Tm>5nE60i0UdPJram<`a zdFDp@>5@N(r@)Bi*!M%l-Qg+b;OX1TZV8W^1lWgwmyd#J+v0*%~6FPL3fAVbu;Q#hW2dNR086Mo@oV@bqn^pR$!O$t%WAD&>UZ zNQhKUI*U4pvadK@j<3?cgbPX`(gClIggFkV`gNwap`mw@+&T3Xpd%7d4|bcC)WPOv z2kPp2AvYGzf8rmu@{f=lEKvnA~6gVbB!rC{YshG@tJTel@FnlhUA^%_^kE9~G zn38Wovf_~^@l@^3Zp4gaE7pRYQQwH{MlY^@yICB-&B`ov)O`wu)LaGMvkKBNx1w|T zoP75M;?`o;`ryH1=RG=a$-IRNGVgyZb9wRNg>x z^kDMW>OuV@G&WZ!^k4y=FU~uZ^B?P9ACI5wf9u!3$iBY*jfwY<@5S6=WS!H&HD9ZP z)r+Zvc7TWpmoT3HW(O~*`tP6j=pIV9TvX;;h$2P$?s(E5-=yr5Ietso4X7T*&7APip$K^m zubrlEh?j$(H4R6LETtd7I21TdfD0H=ZtkKbFnNm6I$BUSWpYZ9kx~~glc!RmC9o&s zi8mXG6odpz==vr7jW(?53`4q4AEGW#cpSCCyqG$-#79(bjxf~$rdR(akT$Bt=yd~D zgiRkN73puF9DcB(ZWGoJICG|NkG;cvs{boq>e6T}jT1_>^pXqfyS4=>aJu6X*)XM% zlO-YTF-jv(BnV)fs{=C;y5k#E@FWp5I;Uyx^3d$x4o zfzv4QP0rA9RwbhS0!V-%Ipmd+-6?!}$lYBMiu-E$Le}~{)RF$3+dye9pw2}V5vnN7 zgjGU9nvc@bsEet?L9NdyN6xJ{Lt%g28or+L zJr=s5`|dRPXo~PO3V%J$p`Ac5HK2S<*Lph|A*F}#5u$o{TAez%Sp$tAZZaI<97TMT zC`%1q30q$dr8R`H>*i??{?{Uob}E3Pc1OE)Z6lsnIgdshyJ=;B`}~20=}__RL&Z2} z(TZo_wA=1!wT8>^?3MnH`P?0(v$+A1!t!wD69nk1w>1j|v5dBTJ>1Zp7WC#{S{iEnC5I)oc zs)WvxlP!Rw;d^lgy2}m(SJTCe(hX!S1-75%G*x0;UaTf+XN18_sWro_tU+X_&+wk zjv4cjHyHTXOL z!B~%4a5o5!BEccf9`DBJcaa}I@0Q(L1X8C^VSgHR7@Dyn;<|ylg17f&H2!c?GUambOv5Pb_ z!`@Z~Cbh`LL!@hn;1h``IXTbXhV!6k`mT(b+?7Om2>i&yLaSi%l;Lh&nmS^t7RkeI z4EV4J9UTHZfm|dnjgsu|l+D7?J)Dw+i+YKMsC+*dql<)?^QgcfJIokom)-Je$&~DU zInFfPdq5K`1w9xjGhUS=8xRm+K7k17q~NY3?h8tlcGK2n=`OEypCIZM4v7?IP;*|9 z7Ti6=u!3}S6l8GNvYOG`Z&AT33G_fY@>R@)WI9t~K;?cPCuB5a*|J)~ZNrkMQ66FNWj%4@x1 zV<}BW>>k|-)d4Bb#}xUuq}ZA14dQll|7Do{h2GvI)Lm-w;ly%R)^Xfqj!Dr?Utw+O zRP4V2kZ8j1!sw*d_bRo1I>}mDL3^WkSUUlmK*7`aQIju8Z1M>zL)Q7bRMbZN*2oST zJGFl!_$)|u_DT3&-z>YtJHocK(EeuWDGHAdxmf^rs6Y@f_dV1L4=xzc?!o2fe4(BF zP3}qArBoB%Hq`wq*G;Cnyrr)C+nXG|tJi+4?3-*KdF9xpNpRAkik7|0eysFUu@^L~ z`XOos+s}$OaqCX^cxxrDsy8vXtt7g+#hpkpd3$kqJ=Q4BrW=i}p;D?*Py?lsQR-@3 zSEY@x?=91S<2@b(Vesi7V!W%R2QY)+zTe^J#sxZ1b+ zFoLtw!05cT%>CQ?3rZRYBKp)o(4ZY*q-YnRQgMvnIVFtF13id9r^UPRQ>vsWgu^lh zJ{Rc5AnFEHqi*=`HL$sas}Q+v=bjs)TWw6KTMv_=U<@Kc?eP9sdoa*GsI(n4HJ84w zpf(ZION^r|y||NSCODTa=H~|pdZ-^g`y?8=S@I5|id+D9Ern6w`-ak4TF^{KY!N-J zF+a8=fD#ouf`N|PtZODy9G+8;9>-1x#&k-w4GH1AiAtW(q&@z4BfSb6&JrLr+j?g+&adaVZKF)lb`#H{q6Rcl)xL zryT7B+c%MEdpjM7Z2uLfd<(HkYCazzGaw(B6W)xoW>PB8(ase(#09dJI@Jl?)86?q zZzQ#MZt}_y5d+t4!~EgK>9Wa{+=R9AmuQ-r;p1iiwUHt;0HpvIn~1%}n5owhgQm+2hs-bh{&9-5*< zvCVa$M{PY)Z#(zkEsjp-Pw{3%Oc^K^Mv21+0k2f@HsW}j25FENcL#gL45%^H_0;>& zb^LMyheP968^Yhi)WT>bv0E9^nn%@9P6Mb2PEZkd0ZW-XSMebkcxszgMHPq;$8aOs z;CKT`4vJ;tUDHGDGUHa@|E!{lg%0|zQqQ(0B-cvDgJWH?1?Opvu1t~6atOs4U>QP1 zF-mgAlSsonr6>l5fLNMB^(!RCNv*F+fV1i&ABR#gzFgLb{=vQfawv6Qw5q!`bM3gO zVuTz;3n#J72hemNo=<{AvYCC35YN5?sPXkD|o@%y2w%48g&y zemgMQxZ)L|*o-m7w5Ssy#}D-c+s&(-9iWZv#q3?e_F|#>84CV&E!?1nQ^*M5=B6;$ zMGFBh`ISn^K9Y}XPSm}}_Cwb2PcS!RDx=Q_$i*pzeb)QpxCp?wY!G|^j2rbYfoa=r ze+ND0!Z_L|6gvLvWT2fh-R(FWt8%G&tbp%*^}AibrQI6-GX^vX?> zttxTUdAx{L<8m=ZM5z}=cUG&|H4%+0Lv$lUz%cCK(Y37wU0M|Q%Z;;fmM09rYkQp? zj~(g+uyP_R4d*{Wjq20NNdS4Rqb*thTg`3O01ria{6Zo z7>vF|p_k5Xx*OyYuW(kX?IaQkb;MXO>(mj+p~PWcxhzS=$cWRbAl+=tlVz1EmQgQS z6>TqN{{XnF9UR`e%2}z8w|FlQT$TS={SR&o{99{de& z0-n)2e&ETzComIHgEV`cRR(T2q^EE~a8w*2Yvq0rzVK@{pW|O$@~Sx9uVq3w{0Nwl zn2m0e+7qy=ruhaPqw(h0%zDA-98GrLrQyj*qUTUMU>q#8A1iqm_p~0Qk;8rE0qC%+ zvRl0(FDbi)8o`q${rGxhpf@sZAZ>|{!)`l1vC+==okcsL;0vRpX>NF6AUvL=Zjg8D zWUlTcvw#n}K@xfNz>kzzdX+fOkV?kv?}y`H$TtiZqnNXeI$46CV*f#M!Vr!lI)mT` z;*=EeMvPAaKbGlA_|R|(zIU3*VUWRwCOF5Ka)U*W(MW9Y&jdfX*x+v$ZRd@EcvB6) zczaXeR%7IMDcZCDK}~Z-dw3EQ*WFqOd2jU1{&vX`qg&o=Ki!XluHn>}S3Hh8&M20F zE%_*2&tF~GNiGG<8W;d0r{GdKJ^DQ;=2}vPM%?r&M7w+C(t%##|D_iPDJwq%ouP(E zbEz$3;ohY5)d@t!83q`xogVp=n!{Oa;c*E#C=5g7DF7kMfpt6#5w;*Otzkbn-WIR( zT#f-#Rk;LRN3A_&m|Et&FbYw@y*_3}EXCc~h|T<5>{2Qmfpi8wIEKZ+dC9i*k`Hf- zLs&Vp3dcd9S-7z|4g{h_dVa}`8is&6O61sNoIt>@LwGg`$A)AIB~vQhhQpvS2ns$B z!3D*eU}L~G;T9R9S9qQ^aMM;KBl3^|#0;N|0&lhl&^I8O-+{=aLEaG~>12>sEY*BB zU{s%_Wa<8;SNsr$ma=*54+e;uS+oKXiV0H0|QrSKvW}`oWR)C;~sRgqbGt3nIIog25q^VSP z@d*qkuJ+`cz7sa@g`-^H#sN8QAS@m=j3b}qi((oP{pfDQkMqFx6mQU=qg(hJm!t*^ zDX$9mR#nIHq_NJ`f-%I{0we~=z-Zw%O1A+XL}!Ys(|6`>^P5ye@(7|hnbonP2)}hS z(k~StsG3F*ZwyXc>y;K9ns&m^<9`*TPlAK#K3mCu{7#?r0 zv>NOgCN@HdZfu6L>4l5@W43Y3Dkft?s9W^mr(?Nj*v1j$;$xD)D5#%$y&0J5#K{{9(SaZ=-YNDb&umjp=0(0Caad!h2-ic zBh`8QQl!zY3TD-wgdG0&?O&K{tY#r`*`#|GfqXn#Xzh?;{aSIiGsu`|`{M99(H+*` zaj*>n$jM|U^}|j2AAsqp^b!nE_yA$v#?Y~blHe&Zy1OfIBXJKaNvyWdElIZ}#7dUD z&8|e&4^shEk5LRp^1t#Z$Bf-O6O3J$_euj}(Hpl$uQRMs&KY4td@W4fihhyyf+PYEFA0)=Y7K6A@sJ8v7b65d!A#W_$LucZBXC``)UMJ2rWohfgmfNi$|HZ0&=i57IicI*6Q%y6T9iukJHyU2_F6Nqp4zfp(` zu1m#Rar|=>{>rNA-v?!ColmZqG5xl(eos>$sCl4>?Kl?8uri|qJ_RO9Cc44C-zGCs zjSqfSwH<3b+y(+^Lvx5tI!krJvNf8_KBp;=_WS(!83J}W#hpExl0r(t#hpE4W6qxI zX}YnXg^V}6J0#c#v0OJLnWFRfz*C}k$KMW#w+KJ5NWsGGofvF5R(Mm(Xj~jiXjFLi ztHW(FBParUrS>!;_KfwKZJgoSF(j>JrL;W_;A^wm6vCrdW}jq#S=JdCLvWLkCbo@F z=)Gu$5X`}kAn<-E?VSqeZqYP>>@2thR}=A zt{ysz5PeHm`#s*^?IvqYBmW{E4tPdirgRlRrQ(wix~X>TGZE2>U5nVwtEU4$R31a7 zFkF{tVKRtN%555i(}Hw*z)g9y{KW3YY4j|jm7)WD6kLrD12XQ>g?z`}7k1(l7TNo7 zUFd1@zh_Ww^1mPP-%m;egu!(abjPCwx8|mKg(aWelqe0qamM6eQxeMm6>}69LV6S_ zfZrr=ZVbB$2_@*XWnn)OoN?twb9YeZ6fxm|Wvj^O4lYGh7f1&K zU2woUY3^csVs|EQL?E6Uz5qo(1fsxYM%&X+r6|@b7vcWM-4N>8a3Gz6U#AR8CIx$_ z5`Mpi*nD?3&~-~r!eBhweEgDKOzo`%RSL z^SDr8qn`?v+2EM)kwTndkxNrlG-+9yeGh)XU{5w(rZkGw-cUk=u5EIqVNK|6z{c7s z{KAh5+neM$LLV?!aDAF|G?;f$H&hSCFyb?&t8Pr!|M??E9oJZ6i_W^{AE91(35kBJ zz6LL~j60TLqo|^^Re9w=IV(d>98w@=VJ}d-i{W~uiN{Rj+gz?`D8p|qy{erC2~44f ze>?=oVRUk+5NVb@@b8di&0ipiK{Whc`>ni5_oU3taMjY*zpK_opVax>Auip9B?iEX zX8e!^=v#`P{?V;sC930xC}Uv&wJsWifCb}6m1h)9*Xh^oP|x0q4Ky6G=tY;qgE1Cx zFW|RWQHXxfEOir+8Lk*7Vvx%TMk+xHYX!=SEj)X1`62)M*-?obny~He>7d_JnEI8q zYBw1n4hzO&8P*It4X%b&-AIDQaA{*B+p-crW`xNIaYB=3KbDSpWFNHQr;>I`Pm7vF zO8fwrac(T*X}XY4TWM~U8EcTNBA_{e-sE)S!ps9Wvz>*_Zt_gw)Daj2GZ^|$F#jfQMw z^>qE4_z^?JJFzS@Q+h!T(w4JFUzOzm< zF1iIN|3xTv^Mbnd@1Y(LS=26%y zr{GtA=x4H~WXN$tyuvnK6>+&{OzT|7lA{QtU8DkB&{5TI9OMCGCA?Bx%v5uWOZ81_ zz_vw-OZQ?%aSArQ;b3+#JgOC=Ryz6uw#FTIrB6luaG1p7+ZOO43tWIad;a`|4^Yh5 zY=kMEA3w$?XuPv2nta}J+>^a<0d8`Al;X3E_(j}5tkuv~gG>MCe~iV8A&9AR1c^I` z1zS>8ZzqD9PqwxxZtd*Zqp=(wA1F}VtCJN|c*hql|kTA=*l}G`{ z6+{Ybl<3ke(#>}e#aptSFUJ}M|poqv#n08$PCo49mSyb5B|?&R1s=o$)vlh@)m z=kXKM$7*98DH!6*MBRwi>+Fi;W|01{hHl3v#6V1(pyJ&6pTYWmrj4oH`DQ#NWTZSB zPg$Z;qHe&5C*ETu{u{}u7_DQ<(;YRk-HxllD(2&gfMgc(0^#v~dQ(Ov3Yy;3Ach*rp z+Q;!I4%|{a=+bHO&#WcQgZOb&n8{+*rN4k@_}ic%@N@IeaRxE7OJA=Fk+{}Z^D_%@ zy__r1auyYqa0V?&T>69jOh%kbzgs3=S*a{^c(TKuQ|@| z%&*x;f?dNA5E4;8y8zP%eITciPUfBC19lxzlD!$1d?LsNKVQwaZ{rg`T2zqZvEh@N}1rC$q=Vfs0iG z`-$ECEh4ZxjGw)uTYS~!+AyLZHSR4i9I!zzZL2LHWwLOwmc|ebF00%Yz!&3z<#XH1G`me zblb9$F0t^ps)WF9gx;VoI?gs2E{)Uf0WA)fwy{BYG=Bnict8_`^bjdlTR}l$%&xK@ zvZX^Kr9deSYFmkGCezRrbx}8=MaDB@T!n$g^a^9ASTFhqni`md-B35u@de}=^${&N z+Chb|qrC!GI5yo_;nJ>~eE(Opo^p3QWO``uH2mIu4Nogok^`tz=G@$Ts|oop8~Hf? zi{PsMdDlFn>K16h0De-@5gb#FlkX<~rF!i~v#ECgy+JkC4nKkKlm<~%Rdp&F)-K0y z1)LdxU)AinmhK+M9hPoOZ5ov^iF~!M%7+JeezOR4r1TEgQ#WvH` zvV(c)GD}|zk-$L+<{tzyg(A^X9)IQi`+LzrJ1H}N*KI`9%zNMj_vJfpG z9t*G>U7e}@INJKs!0aQVuea9hs%*r%)A~|lXqWE>C~_k{y1@F9HsYLo|0m>5{v+@< zd%DfX0HP3;D+fT%Sa%K#_RP0deh<%ObAmk&SSu$`^4iZ)8XCW{9p8!T*#;~h@M}KX z=}Yxg7k3Wh-ad&4W3kKnQekgZ656QBH)BE-5*>c{b8b3%JLE~QXNiiJ4fZVazX0hK zbaZK8Vieo-6ae67BO>~qXF*ZW5!YBEre~kHL$&aIY5@g)jMtK3n*KbBbv}z%4W|sp z4g+r^1bUdBVifZY)6B=Hu)Y!njm+OX%eWXs2z^PGFfBMURODOF94lX!)(^1=?x|IX zeGh=5_oEvsKSjC-_d9_p+Ra3ylqxomisg{>Y~+R4cF>eM#25l|Dt-SmNP;`sAV5`8 z^bd@SdcReS9;W~9X8`jBQv1di{1SGg87$)=>jC1F6uUA0)UVOk`>a*T1(l8d=Xc(eU6z!k@`L z1WCZ#+}!zOyb{{u-ON4^Kdp{Yqh~#a33pH`_}sIPC~32@Kc^Q3cbCib%^%`=5L}&0 zZj;(Y^g=OEc#)|s&^r_ext88WZK5}93s%tEP%eq^0W(O9`xc6{>soTHl^;=FK?y*t zc^8iYtPplop$8V?C7jMUJ2l^=mtnEUP02+i;q~Px*lDxwOfEqF&}sS1f%@GjBf2Mt z8p}RHawd}X@kolH!-5R_z?MC%}ytNyBM=kCJm?s3e6a5gJfwQ!OW8L;I;)#O30`PCB)nCxo zYNNvNawIlUqCjGFESM7s&6Kc=njT8UtS=>3Hu|nX2KC>%v$25M)MuaoXZeW+`>D=Y zBz67^wHKqSYPN+kze_EA0PMVE??O~ojH!lNGglnT^j-D}eTh^`fK&xMnj0MB#BEKw z--K|vgd&C`C-MBp5dEKkzCL^fgz9z(Z2i$WiaM~u0PqXoKtf6X2ZVyf8Zc&{rhhUU zQaI6`1b#YM@%kbHb)jw=}@l|o=b)#4Q$sDiZf$stOOxX1e8$tzfj2;ZhYFb7DDYInaC}vqX+=tO2`E@`hC)gj z?m?=xlD7LB7I1+-P=RUm{y5%)XTFL$@De)@g-~|k>4B*w{AXqQb7VjHEpYFRl=-7E zGxLLAegzTtB`*Fc1Dr_y5Hr4HehTttt0J@d5Ktfjp$I>H7ToLr)5hwd` z8XwIQH2vOu;MUw(o1lL%AJ9Ic9C;k_hg6&)OzMVz;4t|L2pK&D|*UdiLI?4+dtp+*3!zV(s&M z2fuy6{01h$<@smD&`k7CjA|#WU!4icT)!M2xzOdh90^dd{1TSHlZUD;Qc)kfN{Zqei|!Qea^)T80K00yfz)}NF^{} z!Yg9~K{H_l7!OTA`T-$&fNve9i+%%mE1{gPHDNsac;2YP%=7WQ7~jT0_MI<*JgrUZ zV68ZCUsRR=`D%bHuZ$sh*^ihhQzKp1ehQ7`C^2xDu;&6L4 zvAi!$mJ`#Xz^B;<_lcI~eXr7JA(m?;V0}*sq*4o94E`S2`#+n zJNPBr{2|u0FQ7tRu-Sqgrz5HmRhL5o*M(haee|M(H#pp^D(0D+QM}8*0l|2=DdMjC zIxi7<_sNwM$|LezKNC~$6nS%EXum=Y!i>-iL}1&r;T{Y0IFl(UtLGEl4*LI|I~2*~ zPDck~AQUSwnP3L@qE5j_;FxO z?7_6gZ1xY}gC&Z9pErGZt#sWfb6xgBCF4r-6jJ5X47OLUY8*i0gB1!^CFq3yFd8rr z%|r&xWS-W2)7idf>302NKXuU>qNAB|3=izMxpo{F4I=^GtQN$Ng9JZ-hv8>(oQu3N zGw#ejA`Ub~uQfMae#p9|&3xcXyQiaMLD>KtfqV2pS?0nSJ8!k!-xWv}xU&lOI%pXl zO%hsB%5|U2olB-X<~*p8qPxPdtPlz4ws=WX9Zt@%4O>-Pnh{95jCu1behcvlMC9 z-$&zp#GlGY2XkkdgRUR14b(`Z zZ?ircb~#3(@&RaMz+$_r9io}p<^OQ@E$~ql*Z;f81{Mh3AVFh|5^Y2xsHB1t0nLLA z5qSy$R3g|?)YewSyC!NNflV~m>uPGzN?Th~?60=9#a6`-5c8nf#77O$Y7`$)QSZ9> z)uMR0S%g;_wb}TwK;gI;&~b z6Hr=pO?GzC&LJD?`dmftqE+sfjSlPQSfg3ztSHNttuiqd*sDTib|2~9PG2m4ndTkiD@!R_S$1`0fZc@Rh^>hG342 zeP|iY`iRQ%A^juqED6xd-Wy)d+~>v-S##DhbLn!kba9}uKhOz3EZ7yh3`E_Y`yPVi z9lU9Q@s_!C0S>p^AHZEr+q%d7mVrl;igyzkDibzBo(DJ~60|C89HG((OXs5=3~BoW z?|i{~odJIIb%XThDf(r1(kll?UUOdsiyOW+uzU6%Jd>5(F|0}Fu8QiTJ$*I!0fzqp zdZG@zCX89DjHN4$SvSk|9P_MnE;^vvx7fX0ST2ob9wq%)i2)FYcQinAEA%hG2?7qL z8W)2g?qS1-V0Y!68d9{!Xp&*9?u5)i8JB(`x1dW=D{$DORXvC#U`OrOhI%`pUWR;| z1C^v2hXiXJwgKUEeA&zF#)-g2$g+`~$hlPTJrGchflXP(MG&FL{VhzFByaUM;8!#& zol!i0ct2pjhh!+F*1zGMV6>?{cCNBjV+s-neDRMxKHLJo)2{C5<;CcytQ>{)=I98a~W@7d(3*0q60b`uEDktw& z+#J33)@j$S($|`KE45vzi3rVRfGWR=_c8Nt#jBV&<6pbd)UsOKtvRo(orqVP@d$4ItxBSlEk=kyyinEa z9 z4?AJ8V4L(*LwQozo^ZcHc^UdpZYD$?=3$uGD8yY{b|W|+%xaYqEbUbGj@ibpwi>M6 zD#3M81KAGPStzgQ9m>xDAXk`XxFTby?CavjPsI--hn08(Gtw}_-DuK#Mk84B3 z2r;ILgwUs&V^{@lsbk-3AiHY3X+6HSdC>v!V2EIcOs zkwzUqq!u;nf*(s$(`_Ml-70hKnyhcC_pU#Srp6uYj|h|eTg}-k!66u?)9;07kL3rU zDPrL-Tch6q3AkpZY|AKu)O0VDanBX4cgfTfzpM^cHC&eoG5xa?NoVF~-8tvAXY8&g&KN0l# zU|)bt$4YD+pre}<Dt z`|LGQ3jPCYoAnHI2cYz*^w_4tdl+~HBb2|Az{6bnIA28X(l50xCt2)Pyk=1mrT7w* zAx%HP&`0w^xkUmX2bn-brhvCUDHqc@SSXujo3EeRKs<~VeSz_{^$J|C1)<;~jNVGD z@Nl(Nx24`_#1qoM3Z;Of#gHHH`Amor3rNd+qdE}vlrMv2*v zDS4~3dvn>Xm~d|FPpm0edu0DHRuN~xtp+lSRwD4hvNh|58_U+%!)$b12hlm8-`VmT zhIZLsh}h1@{F!Fv-Ac#@J8>P~95 zw{5hi6oDvQ%BEKL`-dYROo>F7&=Ys*_ZrWL!tfXs2svS}UIqr?Z1Sv9<>p6Kxo-I0 zVe0@TPTTs9IUhvnf;LyYkE&c3pC1Q0!Q@kLhRVkp26VZp3LpI@wRM3igxRR*i>-r= z^p^GZB)Cvvj8e;18Vha?{}1LH_&8pZF2(`9yh!bExDrBFAUX0_|r2k&UZs@p}h_pt5fU)2|Hw07FO6)<+PcLC+P&;mGCzc(#6m{=roQHX(mX zpx=XD>V<*+B;y-p3V?cnGi^?f3$bGX@~7iGU7rlP0ygzvN|R2;^N(E~gr5V)h8y4b zcPac{SY1mx@DP&=58+i{<${Mwi=K`H=d70P8KfaIu}-QPc{z$$#lRiy{u;>X!%HUx zXW^XBU0O>>Ut3;eMyk}Zj`r;SGonf`{Ze%(*q@|TuRwyT@V59SqpG{tdIjHdTA}I- zJuqh8KwnbnQ0xSCtUu`JWn6}CgYzv9SljF8;-{RywAUB&v%S8Ae^%GF*MDFAzD@lG zybV2l>=ewst>CqizMQZ1>$oBN3Gg9jv{?7?Yk4L@FViLyd|V7>50`;EIWy`X04Pi! zIr$}jE!zjaIF_iNO}bMh0wGsnKB(#BSe9E*bk}ZH<(7mly^+_Q^Aed-2<8jC)YLb{ z;s99%i`r(a+}2_!`t9Lkke*?uCTC3L`Hls1w}BRsoCfWG4~o?=zBeE>i4< zFB;Ua7HwGKi$G&D(U!D1sKFayR1J4gTUoacTZO89s0n0jA>3;%#Qu>>%||GrNcD{L z2S=fQ^#~151oai@ap8@Gx+q0z8MSlRiQAZ@Xmt-7QUDdLp5Tbs45w9JdUDuXmjKW> z0`lzxW>w#@G3HhQTOsS$B51Yhi=!Avp*AL-6yv*!0kwmhWkrYgfKGgWt3O6u*n26zf0ZFQhOS(~WGkbr#lL+DXn53+5QtV>nxA5!% zES8`djs~b9eQU9|*o&NcW^^=;qUuS;_)mKQbw9{rQ_M98>W^%w|3(qj=P1uskz!&5 z!o=gVUA*sr2h93of!g+q5o3J=RGkqcpF?S!Hz1{kgCM?~Z5RBhX}{gp>< zh6-AFqzEe7u#TtP`Z?iz)WtN@wz*+xsY%G63ad~z3c=$fILGatSAC%3lkf#jn++Ut zqgE(6hHwi~#K3L+l17n4r^66&9%27Vswiu|ul&u2iS*iqv7E9VT$DtbnV^NjGVJrlXz z08y23)GGY|_{}4DH9@W$1T_RJFQM{WTtT(1)LJ#fILF?Z+7Kk+;(?hq3V>7vHPcc- zwt<=UUDOr#A~lcUtPlgqmP$t>KfDqf^i8g9GQDjhuUm`R6PT1i~-vQJT zRH?-ZC<5NP1AxL4kc2yG!}SrU==Sx5-$yDOc9O$y;^QPdepeNMr4Ypv%ekBY@_SES zzx{LMcd#MO@SkhFCBDFluVB24fn+OS zCTV4=U7{^o;tCnJUU*WMf%!l?k5>Kh$w%b#Zs2|cYNI6ToT6%@&Y$rWz7WkpU*HT6 z!9fUr!f&BP#efekLbZ@Dxrl4Mk4vh{Ub@4#!;?q$!cY}yt%XW;3^vj5zfjrsx(#o@ zw*kwJTJ6JUx3G=mH2{Xx$n#NsNY28Xqo4`!kA@nNDOwV=&NI!T@i^s9HFGm*q?o`x z-Y{D&YHzX68T|jk(!gDxy`O0LkVof^imVPow<66}y~Nywqjk|Y(=0z1cy*>dJFS0X z83q`}&V+XOr%~;rLJCkK1Tp3NAD)Z??c8SD^`{Kf&v)uK9#@|OO5Nl5`v0N~QSJYS z`dCa(Qvdn?sy^BF#O?e4tNP@PDiLsxUo>$;6YtDQH5838>adwG#VG-l`a*mI>n(3=z^L=ZvLjyem zeRsoe1Rp#c@Kp{VPykkq;;G$7Uk%{8MsW24E23*d1iDkuZL#nG%yF3viW$C?7@Q#U z9?ZV*87Ij+n>8iO=B%{iz;0kBcg!aOyNY0&<1z>Ob{QC1F3k?q9LRhZ#0b}%q$WIe zT@t|IL^T_kIqxJjKVfFJo!N&YtOxO3&uw$KN~Jb%I~3>}t|talT}E-GsIZt{vfr75 zBX7gEyRH_S00XzLa6skTY0ggOUf?Ozle6z{;fB_N)M*QFyv_4)V{x!84^REz%-XVk zinW~jg`6jwg%mJ%^xw;gj_8xV-E#E(ZKFBRoDyfBw$Hz30+Jkle;HWUn5bWae~0MP z?EN3&PJkPD$k+cU1p|-^`r61Kl!;&L;&w{E*WMrRo+CUA`EC~Pq?TuG$D$W`1(i$~ z{jsBjps@voH}YrnAKN@`GRLs%4bZ?HIb0%xf4qNzUB1{WN?S>IJIEV7Um1Xhe9q^R z@aB`|qc6z6>!kUVMryDd;upkS$Y!MQ81OOt4U|p9#^5D16qTN=bSJXRjrC}rzuw@le2lnO zUBXY>63Qc&pR(rdQ>zd7PgB}djZ^|t{T(I2FV>mZ1F_X-2i1HKzhO-UjH-dw^Tva% zM&L+?ZN0-98|kWNyv5%;SuSsmaWA(X=KYP5A^z52;_6$FYurnVdZ2;-Cg4FT9?AvE z*v9P`DytS$AfVL*tQHHqk9Y|rKb0#bc&80;>pLK)$bi<)F31NdOOmZ*&3rx`lBrs8 zOBMS2)qAeBs~FKLYCMiBx+|AObwIx%TGU2bs~W*xu1(|l6gJpAU}NvHn5sNn@+KJ@ zxv9oFy^;F~{^gF9f4OlG<;vK&T#^tCQ5IvZs!`|-vw!W2xh_02yEe6cWl0{+!Td?} zjW6Z8jE$Un=w$T@v}N~Bt2&1b=Vf46Mw0-g@-veITFy_K2c6&qo@qjiZlZ(;0(=;3RS577uqNi`n{Gb>f6v}zt&I~Dgi74JjEaKb=NL&|lk z3)YXAQ#p`RKa)9Rv_;H0hN-TEa&-+xLs$)yPChZUwJIL&JIz(uRm0CCao0}%0#Aki zK^Qh)b1s3ewW?+4uTyWI(`5HQP*U}8D)Q|qv33=C?{-yzoZXOmy^Z}=R0v-O`1M6h z!Un9qmM(%+@HXy7Q5lMjjr_uJtUNVJ-|qrkeYsQVsc5A)qm^Wyqtb+dN~fX{xth~C zY~e@XF7WR&J01RgX3lZ^8!iAX%>0`Lk^EJ}Vt4`AuTy&v`wx2x84D3Zj2g3%w=Dd$ z>Zr{6XB2`StMyHX9FC=3@+~L-e+KfGk=&G9TJ@U*m6rx=UE#I?u-h}1gGM|zy$#jm zcB+-MQ07FwJ*RKye6QMsIt|NMSaEwh09n&m=QHG3*)S2>!&SxKf7y$5@1J%G2e^C~ zOa|Oyk%Ni=A(2? zd>#p64;OviYdsHc6+vVD(Ak(dbHWd;zdf9aD=nO#Qa%lL-|d|PMCVy%kq(VC-Eu7u zBHUp!9v3gauRZ(@dTgVYhLg4~vyxf{^8OAE1{~*<{G2yXPB}^WpN-v?M1E`LFB7KB zUrZX*aWy0>%+F4`TDCP_ZYx>fGt&=-hMT zFg)xZ{X48D$p$i)s8RhIIRjnLs_(^b)A8Io#jK&6X1NVWM>8+*dNT(E4yU!uv(H?w zTLaIEtQH8~2Sp#_X^eAhj((Z>E7_~|)i{HY16<>}HKBYtqBHZklAdbjLsaXx$a!=r z+FD&}ne&8}6V$Q)k3d6f83vR5yB1`y&g9*7ffmYNgDS3wqAgpxcnnqsaTl0^dcqIo zSJ=hE8(I58fsO-i(ict<=!+|2hVs?NMoG30$Tr@LthW#H@CCiHkFp1P_09L4UfB&8 z*WDV%i!?U{E^_**IP`#D%hppS;PK|%=>Cng0w z!`%1*_0~v;d=abPiGOT~*V;q=;;1y#zMbm|VY!1?JBxLVT230eQ*-}Y5mS3L_+ zsT#&YO1-;oITe~e14f|2lc?j;eXlt*7IcHfS`fF^8yG4CF$f$=QYSYE=>7-}Zgem8 zkc&7c{k?(p)OjHa?a3`>mZ{vz0ihuPZsbogXC(*v67kF5YZOj4XJriJ6=A5=FXqiL zm!<^{!<@7o@NkA`d;EsQ9|JR6rowWLd(m`h-JG|;ykW8NR(4zV2gBgmn1#WyDYQNP z26Tf(kdTuod2ffvj35>t)HxfP)to5;Pz+-*mG7 zi0m-$@2mA8G>f}V2mkC&ym}KZQ%Z^qT`KNCNQ-x{UOnq6!8tI0DL=vG;6V_h5tIfG zXjQ|guioQ9Qag#iCYOf@* zN92Ur$`LehPa5j-K`Jv5Rxzz=r<6)h(yG|uB6zeiPw`Rya>_?01nx;s^rtA(pl&0h)&k%?WVmqL+3#B54i%)cZjn|^7l_rhc86v!=ki1Ci;KtrtG%CtPIPJy zjX_~so#1QM^|=_vFjq177$^9d%#%r&)FPhvwozjo~#>b-OKsEDgz)xZ62!n;On4b_@F);ff5}vY_m&5L!A}YvSqiL0V1FPmC63hodsijlb?3(L zOMbZk%P%9O2L#f-xSo+s@5V$k2F4+-2e-mRC}b@L&E{X+ulA(dyE`8t}RG6{Li2CaWy2+SJ& z7f?PU76iWaOCUEe=V0OiqEhIcR;)~agP`Vq#rPT?d^h3L#k!`A(nsbIoR1b`n-hKl zg>11?-{(~SIji4`9Or(at>59X8n`6Ep{OJ|CnT;(srtg457u2G#t&e}8|)*m$E$3< z9*WrSBG#PHpNXDTGu3mN^2ci64ichL%*;h>0lSw&;(?_Gy##9@er&r*+8h|kSbRkQs5Jl<2L`+F1L}gKq%R|X1Gf*AxzhS$WaIgze(Ng02 ziuR4M@ZT{e#V5zCuhM_`Wo}MBgDO5o|wBo_+joWBA`W*~7us5U)+(5>SP%=ND;qH>l zXwK@&YK1H3fZG>rgHbPW9snF#O7C#{zVQj@A?F(iRfGUTcoi%qG8*_`8uwWXAbG*b zS%DU>nTU_i84*csDP*v_n~8I>@TfW%L(m!fx}X!k0R0#E1RhwIaz2`Y4+y@_h1Gpn z2SV*bc|2q9!8Zb*Bvc<*e^Ff~lp}CfU8?-;(Y9&xW@+1+rukCznU#lz>NDX-0jq{q z00)te1G~NUTc!u9Tsxo4ccu70uW6e&e7akEw7K%oNNM9Kw|{u$q2+oKo@0!(<3*&% zZrt9(lz1`H!2PG-2bQJ0;eA{1t}hjiop_=w(04xF+BP-9NdX8e-<4$G>D9LRta&v< z5h)Q@8`k4>yIyUZtKZj)@L$@tt{UIxHBHk>;1I{PWTMx`C)vU04EE%f165}#oQF$q zLE(F9aX&n{23;1o6;IWo;qwQzPk);Sxe_}#@VBf~e!LGUvJip0#1M?l#F1jS^^>U7 zwYeWf3x8-GI&|Kw$S*Me@#~l9#=J-kz8-EJx_sWOz>yL9?dz`z92p7M)+5XH#k8&I zsM$KSjAP;ZywUPZAEs^VxN}}jhvzb87bCj{FqxaFsm#lmS<@6rwNYsa92u%#6gV>6 z|L4E_n3XbENt-n<`~n#5FLy>Fs4yw=4F5&7_y4js^3GpwjQk^RedT=G&_fL;SW-i= zj5#?Io|BkRGOzHw9z;m}#P8aR)5IO(%V6odaQ%Nb>(M*VV8rzJ(|K9MaC5FOhG z9&%MRmW|MMbxa$>Qsw7TC}6_d5@J9)dwfj2mWPLph<-wMO7^c|f zQ%>4^YqSpf8}--DhU*9KiJC_>(1y8@g!#`?RE9{*Kv)Ut9QT#~-lA z3zyfgko75N&pJ+umE~hpXhJs z6l4q!6WOJUAax?oS#(8@>~iQyM)HPO$`xGL3x(ahs+SMQKy!ymyq|cZs$e!(i(+O&yK;OyfFh1Rm_WRck(S8Q+%C-`tE&hIvXczn8!~F)e zu~sN|`UTc*)BwRkWmmzOdW?w}o4r;C($HHoH#w&ux%@o18jnKs=2(~i)r_|@i6b); zZALzVzkipN!)h&fmt{0yJis4`3dFi6kvmQ0ZjKvYNH<&sqFxM2fNn=cB zqXSIcW9B6z7V`QGK=~I|5TM>A@feIkU>j2b$zUAicA*+?a+F7k;;1 z!4$=dx7-m3UWl$w&Nm8DB?63nEKuN8L0}-t|t;(*qg{J{{g@M#TsLGHyRH{^k+}@-ny00GR+yQ@NZ5FH;2cthMAuCZ)I}o z`#0l{yqAkDa1NRrligVl2JJuiRZj2PJZF9wy#?A3Rym2U>>)KI;n>uCo3K zGlaU3!b1x1Y_R;2G`=_7i$@^Aig@(Cj{U<+MeEKr4x<^<^BOyb5a#$|PvQ2L2Dd*{ zDgT68!aX?1l^wY5tCPNT;sx6IUUNkY=4oKWB z(*)JEA0pzO(I?cfdZBcMDP1k3$IGAaeYBP2Hb7J;Eg0n831~w1hMSNpH zhR32CLL}?^N(HYBE<-5hULFfPiQ0HHN|Ap>G9vUI<1pNL0fr&QUIBiKj)!nYff|pT z4@&oOIC?e%t&(2);#`FGogvw4j^wzSr5u$O85J!s5(TJa6#xZi<6mBc@sP6azfU`h zqqi3E+heZcn`4-Wd3fq!^pVVV!uc{?=^Gdf^i58%=EIlJe>OJY#0@@suI*y?8_78t z*gaisuo)&>ztb$mbffd>ImTf)s2DRJZ$nI-iW>^(Z~8%n1kSekU&@)<`n2HE6w$v_ zJRQ_1a5tgsm$X0F(Z<%0#M3iv-$CmykBadx39Uuy&H2f}JWJxwgl38Oa&U4aiVA%( z9ZFny5_*kf;%}c?J`Zinsc=Gi%)xS!i2+!L-L+Q5i>gpBu0}-dzJ7gX%zn*W>Or_V zJqJ??H#-iyg6ZB!8h97;rBEi!AJI1Em;05RQcuNafl!LT@P`7n<0Gs;d?IT%R1lEz zLt%S_AJMA*1Z?4miP>4?2^?~*KM%n(N!#a1TkW9-kzGjoepO+`;=>v!ZlyfSHvg_BCu9! zRc%Ep#wA#L@9~7xiJpF`^l^(UEWT9mf>!keap7E5S)A;0K(d9x7srG+!f|1;;$4zX z5Lww?qg#v*FekxRTBtA$#W1Z@R93UlgEvAO*Pjzyl6s=?GiD+XcFsIc#aGzwba2J6 zD>@^iwEbK#dH8bB9i{#+7>2Lq@L)Z5=rNJTCxow_?=dfj?-=p~`j|=xwU?oD`MpM$BX(7wiq(jgu(>)v7;) zF;ol4}%tH z6ms8hvKd%aVYY*G#)WMAipLSejli%h<|d@#X|UcV{3_$G+wn_6c%x=8{Zwshi*;;2 zBzzMu2mr&TG`wx2ZEZG}h(ufrVxTwH{QzhdCUc(LhT^7gAHx0=vWBrD8L_fY3r8>+ z9sHf~oDPcz)W%Xz&Nu7MH2RcVc*XU`VhCQkgnv`sBl&KUIhWZM6|c{Y!!Qljf2OODeO&$9^}9vt=|7CFBWJ{|Ba5Qz z$eoDhgmvaWtshuCxP)+cCSi8PAa;9g%=+PA=gb&&A?B2=7?RsC6=LmYA|EEA&(L2W zt%aq~LTaWoa%P_B-%IFq(67(Oo{a0kd|3=CJdw!=R(rMAcv;)}R$(v|))EQGi<%Iq z$q@X&6J&Jb4d+a&77gdz;i-5v(2^qH{C}~zs0C8V-D<8+HvG6Mt3$crIWzS*hBs(4 z@AiOm!2xKspVsR26O27-Su+==7Mgi!fu`iFj$EVpU}w|evFCKaW(~&TBSJkD?_)w> zn}Od}#n+;4w(8#vVvhMO0LLjKnajTqZmd{>3G@_>n-%Vn?R53y>fFB z8%U8oUg+OunRi_V=ElO*g5&$6ZS6&o@{du~T$UUe!$l3`JtF&PvO@8d*gZ;A<9&l= zr3!(Q`X^vh4SQI0cPj^*e?qekWQ^{uF^!I@?*B-oI;@C9p z{^C3cQJR77PPjl|8D6Gs^Hv_p2AY+JuC)&u{7Whi-K8(AJf!P$Di1BzXH_1WBn9R< z1@bEo{aBw-d1$phwenCQj%Eu4M_a*?{V?o?khfl9Rp2oamT~`IkQ{QcFVP>A7yP00 z1?Rk~%c3(1n6Myu`={uM$<1=o_AomIt(ab4=wlClT94Mn^iSE7ICK4dxWSI?syLT- z&HzhHq47fuabwW??fVrhkM%cX0{W;pRhsJ~hN9sROQALE*Q(TMYUwAa`bV_N{w=hk zM0RW2Mu0*Hc+_9jt{2$$ByHCoZCkVU!UJ+Vq`lB|U^l`HJ>}gs34PX+b}hx9s`k5* zc3p;#rq4ZDUn9c(h+%J6wflD)GYEK~vG5HTUu|1~dwLm}YMH}S58_M-l_Ge21MyU3 z2*Q`3sJ*`1^i<>h>U2<{%SxgQS4{G660rCQ>_rr9{G*^wCES5H#NsJB4LKmQ2MKjV zhqbJ6OpGlx1_`o$fWPAB!}VxT2tLK;;4O`W0@iDqCaibXmYqn*?sVn@BXnOieWHF| z!SoEhw|*EJmMV%4ENjmQX%FVP_X^|?LjA4S`g8nwO&TLHi>X%4`BLc#=KOgu<@^C!5aCjzv7uTAeuaq{Jp$b^ z1}#P2RP>T=i4fAwG4BBr*i?oGcI%uDw3qnWX5~y-fs>(NNn6PGYVo}MVh*#fqp;9- zP007AZ{`YNPExeuJ5bBmG~~xmFULTaJcVT}rBFnmu3eNP&`=YqbcSomw;Y5Ja2 zO~tN%ON>^qOp5V_^&uBjz(Y5LOD<+NMgzgqp^%v3AD&a-(Z3zQ0WFgKUjs9{{AuW- z)&DrBr3Ax5rH?s>BA?h3Bi2454JI3Jn8FuXz#JSC(l3!6!Z=%;D0>f=9b%s_$sz!2-L3z z0y8`KHgp$)P4KE84CPm1k`3ZFoUb_fm>`Y#E(t#cF&5R&8lG_SOTzugIIey)AN7BM zxmgmvIj+8U7Td=a05b85$Wq%6h6(0<-UgK~JYu&$KDIvnbwiw@>9Ds$37Iw(d;&dl z!0Q2*G{APfYl6v_8LwbriY`;RvGN_#YBU6#lj;A`u333_24d7Dx)`*v2mmRL z6Iv5z6fjgEon_U|hwB%SStA1iK1(Oxgnl71=PG{hP~SK5dn>-{IA%0j+z0$%?^f)2 z7qe@T-Eanyvzn_r*N=t6%Fx=@nd6_z$j#{}Kfo^pVHDn9jgn?T>Wq$Kxh}10IyNCQ zp6KUiC)OokQBH7qC?xEVY8Iq{BamK=bhc=nM*!eEt@;95%Ku_z=1bz z5WE24jY1+|Z{~LrzkR$^(NCY@0sUHBbs4~sZ?QaN%Ez!ff50id=hq@_Y+5|ywAHX# zRO*%ipPF> za6qDe2TA{8Qb#mtERwLd>$hHvCM7c%m*X^}v|}9c!L3PxrpL-_5e4GJ(|-w0gyY}S z5q!iR8|OSlFO#}SkR)Vb`fk*@&X>c8mC(qC+GiwmL(ydynk?su*nIR-WLV%qED+rP zq@j2M&eM(y1C8_{A-QsaytoL<#i>{sl_MKZy%xiHLcsQS#4BHF8wtWJC(SoWo1X2r za6o7$z)-D0+7{vs2j(7J5N3bEQ$fZUd0s5K0oGRp5W_oJGS^CMa}^xv5Y-ATp#Ltb z6U&=E9 z*le*D?+-rSMFtd?Gspc=7mNlx9(PWr&63t2>_6yQX1wfplZk!|fds1ySLL+&N}x^C zZ6$uCW*-ngQ>>5Nae9!Hg2D4z6EMLc>Fbw39F4A%1~Lre(<-AxM?A4T^ub`35Zr=h`Ak`g7TE4W61oIe$)>89@} z4#)@ASL##Yn~*nf-pcR^lRzQ95ar3do1;DMJ5&MG6##k`X16y~tAQ7_pFKzv__)gJ zpCBa~iC(>wQdk%S^gaNARjV7tB&A;sahcsnnz49VJw9N`#%HSYKuZd`rN}2HDXT{S zq?2^b3dT_EG(m)v;P?BCHe0&TyFB=~MWVuW&?=Qma19d;Ax?im|CRmGW&muBV5S*x zd^ibLV?V+CoB1MnZO@td}rYrJ@6KGSeC=Q4h?tI5Tw@=c+Idn1-Do3SVXm??~tM zBwB$$9+*3@@o?Uhl&KQ=y=bwK->j|`CX8$raz-9T>oo9Lg#yS^kGa{8Q0g(~B@+LZ z5)=Fy^c}??7)r#XY+H4xQUaCz;1KxnU~f(sI-Z9+O3$d;|F-^}g|4&sw7)RI&m9E3i zkA;XW#p6+mO(F3k$PfB zb)+6TgE55uaYzY2j!sngC4*wN@cRk!x$`(CG@?c4qi;56*#E{+w`n5JvcbzGJchx%YZzyghBonl6N7lDB7kl!#_h<^`&H2c4R z%arvbxYlTnd{A8H!g(5mVB`^d|F<9)$cfSrU1>n^6fA4jOB3Nc*~L8};&mcX#{B2F z%(jKu!c`3`@nwu$jDI1+>zQthS&n~genc&DR-|o!-@pvG4T!xKw=i>X^b$888833Y z(7(@?XwIucIGGxdQ?`M95sSq zz%js&vN=M z0C~l;1*?Mfjs4?Yw7`~n$Q4+>5gRqZ__SdHbc;Ka8Zz*w1ajv%{fqKK>~HOnSL5he z&zfq#R!o11)6Ci9>&GK4aLBC>t8SP40e?2cKvBEkXD0}9?Go=9hB0UViOFlDqmL>d zjyrb^1h#$vwd3fkwu;2>A@F~DWM>?HF{phTsA0F9ewE;)pAp67d>fa@hFU?rJ*NNv zFZ9u*{doGQ_I
    Z27~Vq~^mpgJFULeVFtJx-lJ#L$Dk8{&Q|{sp|TU=L5QT9##U z6abe@Aiv6J>PbR5t|D>z$sWN7)iccn&Xo4_PldONsImYK0ZH$u=XYIo$5dp zeL-$xsHjN(qa@1Z73a^^mw+hK0W*7V_5o`qz+!*%^}rrdVMY3!OZs$T*T2RS*$eU* zAHX9yzA$7^tI>kw$mgJ#@j>MM0eUTh{^)cl0c*5Ap<+}K)+cZ%TE|-iZ4W7;ok5~m z#%SYe53QL(mDR>*e9J#F9yRfI9K64VtP|K%Pt?C${U*DM5!k4xmf-n7-~ODIJ12_* zhsBeN;Mr&s$qg9*&-AR8pl66Q3*uxWGX@iPM^+c=P{vxHeS09QWPfB+jQj!r%j7cM zkz^#}?wQ|PlyA5p6Tjg~db~VQ=dVH93Gx1H3U6saUR)x0YgIHEu}!A^8uEz|lrK*MF|B$xrl*&UqgsVKn^Ee3sJGVx|`DO2{*^D0D>(5ie zW{+)sJ;#<^yXQgpl&|X{DE-tRfPoS(K;g6bDSBXA+-t{t#Dh9M3%J0B`W{CxJil% z_de+PMQ~1DhcUN%cHxF~-B;paZe(c>O-CtGgUq9CJ6qcY(`{4KI@?-#Btxq{21M$3 zGc{1Z3dP+1o#tEsH2CsWcVw%bwT4+*HJuA!(%??C8=vSKJ5|^^^dcc18l^)>CYqIc zX5}2@AM668Fz@Zgwxd;zMPA`-_5m+PNoR;FpSG0|%FwFbCXqm)z6t69=Rn_uTGhXh z$W|txmB_WAv!GC;5d(4Ki$U2HE_fy_r1|mjtVRa|oa`JzUjBp|_Zyh>G z*izy^#SVLz3wv!bX9OJXla2gjqbP++YMi`5elqh@jQkX%DEat&tf$~F%*mX0E6&Bu zlD0dNua|wf62m#~mZw$>&uP2!6a`i}YL~RYbsGf+{JG-&^{1H$<~7^~;yesu!(8IA zeu}<8&Vh$JZ>K-Ez*x6sApbFu_l~~6_%HDFH^<0!3zt>8tUT1*!k;{9j_&tF+rxCT z{rwltY$=H#b}!~Z4>hB*B1AU?RPG05S6v6Bz6g?wNh`GCuu ztlz0PloogY5{Ha9>vAYKR4BL<_fY@>6l^WKR5|~rz@7g^={;`X>8A~%oGp*gPsSAi zy*?zp`YcmwBu93r@kIOf`XJUiFgT~m|6mtr6z>nL+mGPcz3ab+tzP=`D{sQab1%;N z@bJsr{fK>!E5W^dwoI$Kmm&amr}bUtS)^!W1W-&guP0(xq0TMxWHTU3U*Jwwyx-c0 zDZuXB^`?1!a^&^$Aqd9Xf5#&j@K*s%3{oCzB!(Sp4DJcQY!5&gb*q5I7NSyjGyXBo z;=fy%sQQD#ynzYcjM`J6k5&O<$XCOYQ(V&v`5q{qch%yMuXcrR-pr71(^Yx%RWTij3j4$nSU0no{+>p!(X7@qG#h*{h4L<(oieO{wo4Ac=(op&4$weNnF?8ymP8-8=`unPg7+$Cg0pwT*I-xk$lNt-D5nL0Lc#l-U9|M4s(5qkhb_byV&332mf(%7nbI+QiTELsPj(}} zV5WN0A-mId1E_bs{PStX`f~GH2`nUbj=}||+gP<vehTV0Fk> zxx!U14E}f-r?^B8t|y-x)#XUwC~y%HYPEiY5;lWhcj^Fx|CqRf!MEWr7@=9e(Ns?) zFIvNcp0Ug>(8HTR7d&kz@bV<2kskmRZNoc&nDwu(@EcFJHRB?gdU?>3NzYMbL$oeM z{5ZU=_9cp{v8-Qx+gjbm873sx>JuP6DhBD_;z)tb6WQ%&0IPT9y=+@aR?MB1Q1JN`(QP8ZU(q|w7M^n?Gu?8ND>@a384&|2-N+@5r zE0n)dekEYg`a}61^(UQa*aycAwGIWjBhzP!k>p zL}4FOk@!9>!979Kbr7#$4eL;XQ0>Q^^`?$tJRzQHs1!N`e;uJWj8@6ojCpJfv0jA3 zF1&Sl*-YlNooBP|>rjF*sq4Dwu%qT?s8B{=vr)JpN)F6s3GEvyl(FOJ6waw90--`R zsD)}Ym4FEq!om)u3Um3#YM>dru#8i9E0)DN1|A)Z_-P7pX4!~O9*nrkvk^b-gou;I z{{`ZN^xq)v9zgs67PPv@PJnpH--P1KvJwB|=YuG&@@&LQ_MV91|0Uvt^xq&})EA}r z3?OdrG2`_W_$m9n5SuxZAEz>)9)TaY&~mE2LKfni9Av9Obf9yJCQ4sU%1y6gz`H%D{(6myTs*5_;?g(Vq8uVxHb zOmn`m=)4$wh%EmerDjW?Np5UU`;|ZXdAKS%8`Mu1YC%Khk%@g zcitV%)aHCqkDz@f!)^yfuRlml4 z)t)c>-vk%B2jRy@jpOh`e}D-3)363mSQ_1EP2!J9tx31zkIPy%P>J`s^;eE-eLx=@ z+`hz?g)y+IQ{Qx=YSHo?3g7V67_oSJ=1Io`zCJPI@$lUz7>~z~4(jj!$9N2t@kne6 zCprW21qVc(KmHfvf%+JarY{oxUmrgpN1++m10wwU-;77wK%M_)JmTAr8IYeIHz2}) zs(ho3uNshn^Rwvw7e;wn{I#ke_^0BsBCQG@_c7y=k(H@xpW=tjz6gS!W3Fe3_8z*ny9+*=xQyz@%xJ>Wp`gDB##xE59^4cf; zEA0C>^v6gJ9Krxu9H7gu(yE>r7$EC=rC2t7J;=iGFl0D7iChuD6lANQ3^~Trz#)tg z-`@xv^7>ygQy|5#e&XuN+T-t{SGF7z7ZceX=zf2YMKup(-yub3T`XnEXw{uw=Cu zZw-6b|6*{dTb=r0e6^Qg{D29n6d2Jq`T#)NO&cA;L%=1wISW?`UWQ3(;;z?Tef8BC zd1JI4{0vhy=y}-PIKHW-4Rim6munKQhEl%|%ym4Wra}2~2n8_+A0agR>&D)=f}TgvahJQJsXNi#5%g3V%}rl;F{f)f8oLu*9WHdPvT0Jyh^uS%;Ht!{=vp`f zlDF0r@(pT@ge*YrafCFQviD@cp7k-7J)vZ6Ed8>Ce#Rb>uhai2+u-#ksvqU2t{*N2 zoNzN2mv!B)(q6HmhX0D+G2`LzGaTXY+8F~4+x%PzfwNWdbFNyDf1*Q=gSzs2+&+e? z0MEQH@1^1b^NxKcL zEBp-xE;tDT-;qQH&Te;D7P`1V%8ez;xp<~ZZ&)iP&3Qd)FzQ}!W(X*b%1+xDnUdQx9 zri1CF{T)!j!3DydXcr7B_{Y;RQYqsH`eB-4x}R2Z0^+rR-$dn=MeRSV$0Z1LB~A>u z1&AG%@y5XYCU<_`^x^t29JG8R=hfHqj3&B1I{wPGlPJ!g%5p*YJ9rZ^*}OK*ygePp z7h_L0;>aV4{P!`^#xb78yUgp-cIG)YV4dvy6%C61sJnyK5$zuKisf-Ra(%ekcbv1wD1No#E-m=3l$dHFwF3`=Z#IhY;&%t0 z19um9jl%2SbKlFE`)b94a_q&ra(r#2g#=faVV3O6>cDf0SuGT>LC;X`)42P(46@I- zVJeF($pjW?3oS)X1Dl&mGR%3IMsb@l_tlUxBbmOoY8b#@x1fV>St^FHfNfMvm1 z2x6aNmQHndNokZd{M|UpTAB(igVCyIrQjwn?#z!W-p5<&bNBHOsGEmC`r0r~JYD9} zsU{koH65XKQb$qAk&^-m{+jWo+IMR;^iM`Jo87JMSr~-(jMAy2mh$QB_p!f0Moue2 zmJ?d>dzIy<^$*vohT<0kk^GxAXQcpH3@3&!t0n6LoHb<-$k!I%gw5&I9(aePSob@u zEBpVsJq&4F0;+N4<=NQ=tjxB?Xf7qnU=w2xI&cEizyF4fxl&iM^~p#6mbrVx%mq79bL z!71FgFox!eOpuO~VSYx=yP%);;6or3v3&&l7{OM*o#6YdRU8P=8MR8m?_H>Z>a079 z{N!#m{5|HZ+$;n?MZ9KXewwj@B0js*jnG87AhEk`)Vt6JmS!5w6N8ti{y`GJj0O+;w@5jRzi09F%VN-0o2&`!*-~x<(hjms7k?d*~_< zLVMtL{F~$J*6zI-AK@wZ2lkz%QzL)OY18hbIXd!u%>KdeHP=IQYSjq6=Mqr@qF_4T zpv1^~=Dd`gH-so3l6&UThjo;-9E343^+nzoC6>{Jnc&8x#Z_$V5emJdFnj0ra2i-L z4X$uT*h1H$BP>_JpV(uMaH&1(Z%|Ofz43;FjUm?Cg)1A|@c4tmYX%c^*fq$?Ua=QyNMxmoi<_vJ{ zx|=Y}W&&1G@EX`2>;~zGe+#E#YH#M?385K>tb7=WeBT%NG;e^k!$!H={bAPYnEl3* z4CAmdFEjF6Dyj>x$Ff=emt^@`$R|je`}p#3oF!@S}c}(jTIR<{4UKjR(Orl%V7R+HPP2SwU83jd{>^xb8BQ|_DB{7iC7Lrf@?NsA;P%{)Kjdg7HSdB%=U;GA1An z;G&7fqRGahqkU2ZmvRxRNg6_fcEfzeEtWhis1 z7T(VUXGb~*{2u_ucJA-Tf#&i4b;!qQ9o(8TprHyrhyOk9-hVLjg)I$Q@ z$M98mRF3j=PvHAU|6S*T6A8C7_;JJ>>EW+-`E}47ZXKg^M-`1h76>G=0|c@(!z z-6?dP$nJpiz(^Kp`XVX28Phm8{Zykj`)zYf8WOW#-wym-*>4+T2;ksH#tbH7|L}Fz zyL-NHzuWZ1*(S^rdzwBPo3$tF?}oIHeGs9KcqV`b7`j#H9rX3_!WpL1iX)%`oXdTE zQGb5mD_bubYe2|hbx#ZF{WsSwhuc5a;}^O%e1yTQ*hN(N@TwDjQ~CSe^2Q4|+=rXE zl@d%&&|Y}QXfw`Mi33S^qax7iLC1$B%)je3VlZ`voJ%J-|{yJ^l1+@f*GD~=X2~FxXOwu3l6&9-p*nUBqP zYF3*+ZAH{A7wpo zxf=s*Zf$F0(388RhyLnJ!#+&UJ5pBw)j$*NLc z+uEkR(0ofHrvtp0jFBwm?#S*GNZZY&eWVn?@C;vUJXd!$a_Edk_V+sz0KXcHigtcf(=K&dTkNN%AHp-;38; zkPP0b+`dJUxgKrbiq8#)lK>-7{d?MduL~UPni{uvGHHRfu}6|>ne-8p zW^DgP>LUyq)_46P)3yC55`vFY=3{lI&l1%H>zwQH`<+4SF$-XjM&FG=>cA=km3d4G zNO`04WkcXv1MFzKz>gGjl`fgbjy(%Ack9sa5?LC~w~&3_^s?0xQ~WDJu@rMWj(lG z1aSO)AI8szO6W`3fhOd-JbF!~ld2(1Cg6~9zeEP#Lot`ZH=*oqDt*nj$&M+cXCj{6 zh0r0f>rUP-Am-pAAQfti0yn=ks2!(KBGKrQ(|#H+vgG!wl@BpODD?tjCf|5aQ40Vi z=oyPrp3KOz#y63T$LZhD@B258tVG+9T!w)L6H%UzMrj@Pdd83H>V+*E|33VO6+;ILb4)u%CGa%K^` z8uhQRO24K&N`WH>8HoKroomo9+-p0dG4pHB;+mP4fFw@1iP-i;Nf#$+SrPpgDL1#; zn=zH(igDPjr>~_iXFW#UrKg~$Y4@O~yTQJ^Zw}>Q#xJpiy4%laJczT;1jkW#U_FWI z@6wecKa#FA>uKo9_6z`(Ib?^I`_oronArC)v3@E46?>XkJEXpB!E{eeT6QOlC0OlZ z)>AD0st@*?u=+IACH7W@)AqOQ0&CF8)_iw{qSIHNX*CJr?-nS#^|Fe|)ZglMqH`o? zfm1iEk}v>u66wm08`uJk3w&-JSsT46!6^(eTJNCl0*F>u#^Cjq^MU&*MCDU2AEnUH zgZLf1!Vz`ZyVR^*4s5YH-iixg?Z#vLrJVCdW?&gK7u<@?FnsUDd-zYtl=UQVEa}ec zfxvVQng-niV|pwRd%Z2J6h|lj<#CfnaXkwAFR5c$^yC8jeb~v+RL)lU{h80N1nAhB z;W936ci8L0B9s2#;gp`<4FI?p~CRcKVWOM@E zUj-VcS$txUHE11TjQ|aTZvYk=2zpNENZp0n^;rZ@f8X#32R8h4kb6CH!v}#JOoiv8 zkkchJqK`(}xk$s_67I>q9@K<-)5CVeuBRXvKSR@Ues}Q?oqS%ChaII?#E`hfdoA~4 zXg!FQq-Uz`i%0B98R-5x(74#*yXN6rh>d+6?7bfdkA!C;4Jrmgd4^@3IWRDv%W{?4-6)&vx1Jmm5(11}Qv5UuK5a1w`ySYq;; z(xmXqQDBJ^0Eo^3WK*Zh+^q#w!VIRe1L}iI5n0yC?Gz|Rkg&ru@sEhn@ML~LS#gCg zz*hrz55^->CIi3iF^(d@abc_0L2?BeDp!oaYR4DqM4`w#fC2U91li9ry8+om?D*Q7 znEeZ6vmeK2`;jg45yI&r?^2JZERjXq|a>0?vJ6{0s-_W6u6> zxtjM2Ci8Y+qkm{9mrq8=3PfUi>Xy9evzo8@qdGLmW)?D|v7$J(89*s@> zSJpiY?6!lBtuwDk$gujMXd*N?BDwBY}hl_y~<;Jt*7*?eKG z!+b*XLxDX|zu0;a7@5V5Y8_cHIk0=VeRL}CnzHfh;~Mt|ct5SnBELjx(Fro6oM+>k zoG0#B_$D#KSCZ*{YC>G1zRBC+^VPSoV)1TF>1&dW;+-HwP7~r6uFJ$JpCj*7U}No} zb5O-tOgYeqw-25x|D3o{zT43cLq6`*T(tmJyb}e?Z>_^K2`RNE<$?Jfhy!hFDO;+*T@MJVIYjqw2;x>28Y==Qn#7D2LCeGA=Q z$G7!!tPtUe_+m@Jlec8m!Al3!;Yb)IPlxkCK{AMp-}B%W@i)c!b)fHJ=mU6yU2e`A zpTeG(6F8J1X?WpIZqxeD4;&gMDF_avQpN-hP1Gj^4o%ZjvpadySM-e%+sNJ`vqF9Z z>bZ!!^}X4hk+%nuOUvv=g;2HJLn@1T>wSxhxX=JMY$ z3-GTwQvMyo6g*}%R@+vrs@9~s`;(X#r%whwr*2_U+X0C)C+ktLR!bd=+FLnkS|s!T zeg>JqCT9={UHr$}AECXn_y}&)3pNUaLCwYKqj-D?V3<9|`2Y-kY{t$`5 z`XT92w?+XN2Sh7bw0#Rx>T2FTv3{zKF)d5Pja6-`1I&*w`=$za0UODen3l@A#45jzl@|AKI=KE6CDa z616jCz42PVMY_fF+Cbk#Tywf={psZDs`cP~^jTj4WZJ`Ahy#7+_`en=G@b3iC$aoz znF3_E|9~0>yC^vr<2S0kej-4IhX9hQ)h;W&lydmIr+ymBL>`j)AcAnqN>E0@D~9U+ z>5^Tp=E#Uef!&pel8vlLMon|&7n3#|a$T71u9$+W+S;zpU@{_HXLaPXm1nvUV>q#( zs?pzNjGTn>xDL^-Ut>K1@fYZ+RQDqV1zd(SE6aeZ&B*oB*TJ|#6{Bi42y`1NPzAz3 zcK}7JV!i+n9C^p`#4v7kVB`V@tM5PqTu}tZG{6Y+nq~R)^xCQm4|P^a8ADp z<0#iC7Fibof%9M)a#hyv+>-D5vA#x{Ybib>-G5LTeRxOnOq;AtZUWxGPy23`7Y(yki9pY2Q*^jm%ZQMa%fcR$g^%jO>__`}-vw2~6 zCAXIg@g*&&SSi|vwpwWm7@|T#_$2|UMxmMrXw-=Jx~ZmONg$Lw-|v}wH=9V?-{*Pw zgWSD$=FB-~&YU@O=FFKMhzeGwkQFulPmUhDOWwH2$hFv=laQx*@5;I7Y_Vi%bJ&kUZ?~2)p1B&Pxe6t$R?pOOr zi+#pA=aV;&5CngcsoIv^*oGCpf}b`MVX~QpD5HM??P*JX1&L3p=v)j-PX(jEWLLwj zQk)ZrRzj+5T+&5_$Jh)UclH>UP-o$s(DJXN-kSCJfkX;i#NW!VBl!ZcJTyVzm_YYS zx}f5~xO{v-ntg<|HDXn%&UkLlE(iY}6&-i;M8ByH$0ETYlt$(n)<|{9E=P1vDqELB zgNaSTY!ek=f?yNv8M5dGh~=FX06lIVVB{71aon9(C6#8QeoBuk-`d+asDv_+GvIYo z;T=h59LBu2l_K#W%D{g_+Goe>*79%JXsZ)OS?YW}~ zKNsSsb9mO}Y39rGz+!SO$y~Y>xvsG;$5Pk+1E2weGL*7jodxM;2Vx76N}x{pIOE$w zSeN+4suB5!F3$GYIx1S{(<=2%#OQ*Wkg4hLY{0k&Znma;wRlZkz8O{GMMHr1;^F8n z@`M!s4?y+vMs7$!gogDx0t2XRywRS!wWaSt+`x^e*sT%2^(XfuZq?xD+tufrqXnME z_)F066RhPdvQ6qkAK#0`4eF1LqdtJ&oAPndUHIUCSOLB<6)@`E0_F9UFnzcq{$H(0+$+1$76>_G)WA6d_R>D1Y>5@M(X)xj_1Yy?1D zS70Vf9sVnzWdW}ld=N!yJq<7eXN2e2?xKTW)DrooWMR>A^k)zHlV88fuebMqy-ZtL zh24S1u)w_#Zq?Y&5gJq;=cefv3HMSCyMV#k1@e8V;q9#gFu z4o)s4zvgnqSTBq`1br%?QGIKF^%{s&O7%{+`aTpPHO3d9=9eJJ88-{GrMC?cYFc$g z?;R`=LJ3UL*dXW0Sl6TrpBz0b)AZr~Y5K>YfkGj3GbDp@&Ra4tMZYhy=RNhU=!ZVL z0Ei`L9;aMlA5mIIY`%~IVwFH$(CdTv>W5{-&_0CXiXkMl7I=E>BVt4~qs8c1A-S9JT9NW~R8;NP zh}P>1jpdM8i30YQ$!|_~hl==Z7l2vsfN)oBEwZVZOh*u%HA#3+`KzMgkc8~Wh|ue( ziTg~ptmeDG?(in7S|9{=hyF;Q=Mp3FIIM={qcEyeqcyRC1+HhS-%n{(TZ-K|7_V{P z@_{XDaYq$MJZEJ!TNEGB06r&L<)^~dqs7O9Sg_`0_PDhQ?c~;3AASxZnOU4ZHVkrQ zg+UZfy%qx3U_A<)!2i7vQ2PKZu>lRhn*(Kzp_TXzK>Z4!touNu>M!R1wH`xtM{Y2n z|D{xak4ud^ptbl>@P$J(UaWAmj!*}>1if__s~i~Sv4L2-E(AFPkrnwsc^`XA;;N8!kxKSvL?>S*3_lf{g+L<>F}X9nSjYO2zpJ(cZh9H*?jS zQDz~mQLG5GrH=u&tCT)TicSP?ZN?Ns0;Ut0u}NfpKxC!?8K<8nCoPVaszK9)7C#fV z2q%U3a*Pj|n`)Rg#riw;psXGMc2$}zX@U*pSd~%%{UX13Y@6PhJhwS<^2Ei+fA#lcHj{&~Sp*V{<6gMf`=n`7{)?N^X(f`c^m1?MqQuGs|1W8VsShQ6R{=tQ{ zgNnK@v2}oguped%Ag&zUM&kYq?JRwuEQQ+v-@Xs;Sf&pwai|f~dVtF%-=$`>Lyf&3 z4I;zBElz`r(N!QfqsDct*y|m}rUP#DNS?hMj3ptTe+mX4LCboB{TIkG@oGc=5{DTg z+x6DZLBG7z$8m{azl%ARb$^KWszFC{LoZVLFTg|`-=@W%MVp+)xqi>Xw>ZxHKML5e zkJcqkG{=kyk7m929#jEn`*wwH;_nLnO4@$$z4mCRHz(fI8Um!nKDF}j1WzQ!Q@*=4 z2!D!=a(BN7dy;C4pF5M>0h#zq*#S9PEs5@L&I9%0@OzoFz4OSq$$7;5>^_38?jwc9 zDL~b$9_hc4{V66IarRTKC&6Pl1(6eUlI!$Vj&QiaKa3uR`w{EX;b0J5SmBl(xZU3R zvD6s>V@UiThx?Sa*lNu^?uYQ}iD#4aihrzzepZA$O#q(e>K?Ei0+A)`gy8y>Yf|~} zGS{>#FKk9l44jd1^3tWKzzo^)YZdq}i`oS8VPIpYAU{w1vn2-`J-1XGyKNTMH~C&% zgOob7V&H4VcD7G9n)8Lzi1kx^NnMWhmvZ=bgStTK0vu$(snEL6oyIs>mhBDyz=(7i zb9r-}_YLbz3>F^pnu(=8jv9sML?afqT@J82U>-8_3I>6bHsd*HCLzC1#*#5}EDb3} z4@Vov8bh(4^@LhA^K=YdD^2RgM6QNCr5E7rm?KX{R+}-S%~yDw+YyU95Fl9gUhdw! z;?BrwoNAtpV-ktWzKTrtKx6{N?V%yoV>Z;*%#1=@dsvKH5^n;lNKm*Av5EQ-s{_;~ z{$?#iDPU~FZHdzS@EShY7vN{oKYBxMpW*Q zV~D3r>)xxMj%ZZJM^&>9Qf2*!T4lSs%~tVOE$O!GqRheCvaW+ROY9TPYyDU?A*;Nv z?yr(KYX*uS99doCB(6$rQzad%HJ{Ne^^)hvI&qR#<813gx3SEW~Mu&}gF<`Y?4-@HW z_W&#O$Oa&6Z3obb?W9qVMZPTOd z%FC+wza|OTuZr(2d)JzaQrOB#D#qbTF`mcGMWrf7syErH9d~}Y5_^eS{25@c`iLqI z9x(1QSvvvKX3}!2tD~Qa_+>!WdawUYs9m;|u^*Y($b*HF*S0V-_YgK*E}4XN1UhzP z4gRj3ivO4fY0L%uHIbj-o>PCO$T$C57BmV|H|CpH%Cs~Q%(a@niP1gnnO zIGY$gjfq>N{zaT=j`mE`VrSvO7$ZgDa`dyq#!Ns($=x^uHKRv{YVj5DyCCHp-VY7e zMtjZ<|GGo}%v#5nY+`XZXYZ>N%jZ_#al@SX9Hg#9&F0!6c$)!{r) zQ;UQzQ63_bMIIgip3(#AjtQAK#e=I?(K<1vku{`k8U!Rdjm+_CvB~)1Vh>GT!G(U- z#5LrgF_K)RLSI8(J4v_RfHp+73uy8(;E{CR-ABp_(RKDmG-`S#g+|o;n0$R7wpT7T zM$lESlArqOtMPyRhd%S>i!-eHkKi0DMBWXLrxI7M7G_TDDL;G}tQNe$2^L&g+iIu8#*1dKqH)dgm+@FnNv5EL%UxKnz zCu#9=a+u;v0Dp&7q(&0oSW6vHo7~rWd^(=K(t&^r=-BBd1>0!9ZISxM_Mgc2PJPOF0Rro@>fb}9&N zJkpvvv>1qsG{rXnfELe2dqy=Si+MvhB-e*bz66_lRtJQ?Gu7&6{^~6v>c+ZrYo;=}>e&O8AWE zZ2Zw2^0AK2o8zrH5~AiupdG}%|-+fZ0Ov+=&R%(hC10$ zdKo-&tLK43}04RH17i9stqN=d}3K+6W zqQ`3h-}rvOrpKqJdF0bVJ%v`lbEM?E#!RhfawZ`DHS)CM3QoC4JDTc!(&hL zH8w(GC4_-R*n97B)^zt9E4BD%&`&8U^ka$-rfN0#Btj^|S_RE0?I~MWcmoq!2viA8 z9r4+*g?xt$Wug;9*#jgXa-HgQFD^%o&Lis{7p{4+M^k!co)W6kGg;AZD4~Pwk*|rD zjG>8xPKlEDAb)&o-_EYy$R2`5N6x=ehtI z!jRI&7-A<(_P%S~2=|m715t|1QFx-qU@i!c_J))p);nJrVqc5)E^yw=RBwih8|eVJ zZ~nin*-KH@{tl3;nFuq_-Ukph zv-m`(e$7w#)Ql&!6Fv#zi~DCs7$Z3^BIZo1S&kCo&$SQ3cY+ayNJhN=17D9IQXk?q zmZTz8%0k+P%Lqy-z^hXidi;t1{#4piM1N-@vP;1QaXDJ|K#q-eM{T4 zWIi5cVOE$qta8T1Sw;ngOH^C@ znlcRrhNtYFqnlwWd(2rA*Rl}SSVs>20XU768*a~oOJZJzesYt_vdk^-G(k}>!0loK zvQp?L^Xo}Y$$wjn_Z3W}Z2Mr-;eNNr$q$4>^Ule=p-Bs>qIn~Y`!hn5Dtd|SeHj(K z$ zGv)l`ntZ^A#|(~_6KHAhCnEl^F}&Bh2D%jP1SAWL9x0|Xt@`;@1&(IqAsJa}!x?<8 zDkmy4#Y+%+*PPyx$XqiIAWdJnIisLuEuT^2pU@q+uKk~gxk+;I?i|CyYbW5p#7IXT5VDD%GM!j7X{Tbr zdJ(`)X$^O%w?B2>X3N{q>k5ThC`2@=FtPn;rj{p6^cLI4X9^9Tdq8;Y*VJ<-pEdQ& zn@>QcMh)3>b!{fzYOx)78SVK_?FsUWY0zu2nDeOil1)9Qs_ubeiT2E^Jy8lTm#Wv* zj+S5Ltm?;OqM>#S{s0lCkf}XQJ^zr;XQ<~J_jpko;`!go6ywkSn@r)J z1c(E7jJIJ0XHOw)ggy}V1$>spMvFax&qLMwEIw!9d2=1rNDD$H0mA+lsK)r?_{}|p z5LACt5Qh_C?gzX0$66~~!M2e&p}U@hrz$ubXI)vD2XWN(Pt*sb%`C!|QeD>NAOZI& zHRby-cs_)@gmg@h0FfN%#0*|16v}Yvu_dbUT(3aW&gR_=e{6z&Sr7ikn07}2dXWxpC=zr^F zsqWL_*T6=nJ4H1bV#%-2EjNk-JE{q%;8g>#bE$}{rc*lXES4KX-9`lFWf`LE^m%^C z1qhhbhz`td8lc5r;#zJIqZ=W?xJG9Ug@xwkBmlP;<0bHq_GnscHt3fAdlfJ3yneFn z+wsC`MbkVeA1g<>wfTUe+Cii2X{!>=+1Id7=tAdIq}Ky5^bsW2ACT+%MP3x9Ed zU5lRzko|nhqIgk0ek4r}(PAr5P?|&`qd=_XJJ1rY)zOyUhKHJYl#1VSFm3`a9_xIC zY)F$@oErON(gCt(_H*cOG<9(;_kBK*Of+eqIDmi+ET9Nz11-_sv5as^0D@2wtsy1w zVIgb;E;kS|55HBPNdNe)->_QG5G_6*U#!RRi^J$&I2X96Od5sI(q@ zmS~!uP0X!g0WwaDHKHA%$o?rlTS0k`X4yVSI|F~5&OZXf(&Z@VBWd3vdkWdK_V5by zZp{P^-FqE%zU zkH<;r-{be@?fBwo=O^%6_6wn(ksqR>li{SW&|u}@hOW%Del%gV5IJ1Vy_bH*nmbpc zHUgo{cnz>*Owco5!{616gjUjf32R{?h8IRn4LF{2EP8Be>2Pyqt1bc4SdZ~rHLDn= z{9p45%e|iSPPA`c>5#4S@Jl)J`07 ztYA?hB78EUq(SU+I=1my3@1H08!$mk^hW0|HU;t9ktpjvdP$})C&3M8L`V`#ePY1J(^ppY891c(s4lrLQ8ExJ6CA zAeQ?P{>E|ft&ADfg$5-D73_Zn(a84?Y7YbMr0A59xbh-DBk{$8Dt#LtY*k#JH$gqP z5^*^Y(i@dSXg+X}ai^~**J{c!+9?u)_^paC39DYka##wc{=@jk=zkm?piY1=I(7zg zGcah@Jw{RUlr#3N7ft~J*w^^yX&f}H28nSz3tK6KMYSy~n+g;WgoG-=Ct0}b^sDf# z>m9I9r-D`bNzU)!id5d>hznK`KcfyJIr3!qjJ$&E@F_+?7JQz%&zO!w$e#-1$&7rw z;l^u{ElS@-JMTn(RVK9jKKllFaSAdih$}$>e?7zta`PVYg~njC`ksbY!3WG#Iecsi zZYQlMle;(2%f&A0q~WKY7P%+)P~uY1TWAz*FlG$RGUxmI^x(62bN-xX_4z}yS$4+B zIJ^!%|y3lVIaHw;z@0N#_Hz6KyS$xC^SeO(F$oY zG9oAI+oIe2;sMrPWCb{sdrLkCK%>A3CGg{{02PpR>5I@}*tI56IHoyE#!cui{U`z` zE;Jf|KQ;rFPk{_a>-;JCF%)fpQy8tw4BX@^`^*L6tlu$TAvGto$0Btu3Ld+_L4B4# zGReFq6Z<9CW)vFJGY5ntT#MX9xJb(%tbgA)kT%dyn&SZyvJF5`M zj0nEjob5$AXePfuqh5RQFk1Tnorgj??sD@vH+CWIXhZIfXs;X^50;l+=w>=LWqhHj z>BfxHFo@1uhQHbPTLs_&vjnUx`@ocI%Q!jjMjsff`BtEnjt3mX=_)wiQ?p>Y|o&|Ylv z$}uF6h8+UdO*tWiPQ~m8dzL%l;}! zmsH89l+X0Ofh)dpcADSr@6lvIh@+hADM2FI409~37f1+lE4 z0RzR6q5Erzd9=<4&wDa!Vc#E6Q_7h)r)NYz>d{w|r~2wUNrc$**fd`LD7zY$4MOIO z5s@?4NB!g7VTqHXfg+BCvB=5DRG2;tULS|Wo4XEhyw!XKkQg7TKJ=(?2)efP zWLMY98!)vnaHFs6?Q3k}27O6FOrMawm9oJ`xand|27KAqNa4S$kCD$G#)KB5RRyMS zr|>s;LxcK1lSj#zuf!if_Um=4PKxE2Qm2Af%Tv$ zu1rQ@Es(=jq2cEAKK->oPiQJCo4zvBw-?5f&!Z;B07p*45uPW-P&c*60m(1lqLa$dLpVT73vf3(EiBjFUV=k;O5*m_nw$ zjaA>&51;(t{MV(HlyK$b95gd={n4uKNEbddXv@0=d>8Keg>pADC(AS#Isv#qm(B)B zxk-|c(;)Cg*%%`~8w-I^ft}j&hf!Je5;z;+{66tSAcH%ud}U0$KEDDt)GAWYw)SF+ z5p2&X>dBBq)j)LM9qe#yj7)_9v4qV)*k0vb4m(zK>uz@7* zNZ{hc(}BD8vlzF5=18S@X`TKAK1Iam@zLbXSIAy59Btsp=(YIcuHT}a6X?aq#DT0v zVWx;RW?^ayWf`|*!Wll!5l3|%d{FM!D(u7M&BU z9Vz-`Mj*?WAMhJD=VpN~93As>(d)aB(>ZTOAiM18yqj~g%U1Tmg;x(&bOeH3B|Dki zxh_!D8D8QxA|E25reHg`=+O@%C$e$%Wq#v2KXN_xjL)slsh4YFcr{A^m&(i_Z>3BY z=C5qyI+#eQ^QlpojkM$Qyn2h8V5O3VN<^fAh(v?!nM9^qMw`vd%pgn7hhv7PB*VbO zEG{-?Qhx>xhekOzW;O;s4NU5pf0P_>Y)r&Px<)1*5zmJ6=8|!dqudB1J4hF^AI>Ct zH+rc`g8o38eiIxIC;^ekjN~9@)3_X}4)`<`D7l)M9|CP9AEG*P zIY+l=P|w(1Sf6A3t2tk+lw}l2WVNDNM2t^m30~2cFm1MB)pi_ zXf85N{K*P*Kk~&jSYA{$Mq14O)d)MOHPEWJYEN&gx5me}g|ElPaplthi-ET6m;8HB zTXq0{z1=wn6GIw@O`dhtgNKzLLZaLnXW?EKNynDvyP$HI-G}~e6qR$K`Rao}$bNuW zVO}z4dS#00$!SGTPPFuA1taNS=dkHyG$ivv1m98`>2F|`*XG%82@Ax9Eij7BS#qgE z-oLNWIOAL1Aldn=C&A9Wi|6A-+WAs<#YkokSAOKeP&(Fg3f{_lpy2Qo zjNh^?Jkb%GXwOBVk(DhM|;-ko~L4`X3kz35J7lniwP2EXM)(Fo@Qh9Aal@1rBSm)uet5y*_$RPP6d@>GrlF0a@UPwjxt- zkXELP^6>8FB}!0sM0Pfy9d}HoYg?+>Y3ifmnMo{-^#sp3>>txPU=8UTUB2-={w6r6 zWz~ZL?Q|g8Y56tkj9X8I*@O`&E`V1l3Carq2eR8OP`ZmaU_OJ#7Glz<#U7+;fY-EN z9MG(_91!hW*ogE=W7_!zx-io|2zR$CYi;f&5M&6SN1 zD4=Kt(myM0_&Pp9100w6gM{23IWfpsIG>EA`JJJzKP9(dNmj(b;R7$c=EyQIN5&l`~TD`#CUZ)YHoq z?_(39lgg(|Msf{&q+xOLsUp|BB?x0285w~CjS5O)EnE$*!r^-=9Qh6|-gOlf4mqwA z4&p`BH>Et$i_C``9`bS}JB6x+m}E&KQUoo)wxrWb+PWMI3!*ucNDG=|*d$vM7qfcKd#ovjhacsX=&I($j_Efsd>7jcks!o#vK76^vPew?q;B$?g=x6D zC&o)qshRQk3?6AFy+$rgotSelWr&RzeE;|)zK~;zYBj{96~#mAuib1&i#>#fVJE3_ za}@;+6V-U14@eH*g>IV>z?hF!*AeIY;NumEjopP$&U;Gq)QOUyP!JjiF!o%2mp*Lt zoS&~mMj|)}?>kxa4Gcq({$3Ci=5kp46{Eral%qSC5nb$0*Wxk!kV)K(e-|uw#t3L; zd#v&VtK1?AffSWbxloHU_yh-|CTsCO5f|Z3v@YG9fD6(SCrzCkexOgyj?!ClkzLsC zm%r#|Y1B$+#o-Hha1q*4y=DIlfJskMnB&)el_vc?V%S4HAhIaY=c2(HS)KYMMPIbT zA8$l59eoj2b1y~##;rAD4kgpo5MoED!6ZXVX^TlL$!X&MTn(`Ry4U<4r7AAFZ?>oj zpQwq%bVobfHk;aku-uAwITcS<6~j$cO4;kX3!xGc^e3q)2_6GANHI050VU_m*^!c3 z8q478Fx0I`2{6F~{V_cA_?DrD4}$l__Wrr#nN(!YbeC{w7KgD zL3a1|YFw0UkpL-)F5q%FQIKrdo$Zvp zj0RibYZ7>ks*eLbksC=@zc_*!Q2YE;?d$lcNNk*W9C>8C>+GiBJ{04m zfE`%5_)dh8GdGyV1fu}|=EF>oJ7_;FRlk<6fE0vXc`kO>Hk1UbV;1n21&ZQ6_^GCa z_+{)|Ugqeo#F#6bbqrI69vEU?4enXF1OYtS);KG%ZWI)~%M~j?q^Qj4bj8vl<22?+ z{$~Jy&IANecUEwbGDH@#rhFB9DXst+-_0^)Z4t#$>Sc^t3cRK*UyQ$cYYtAwA_nw4 z{7};u1dPzt5i_w{jvj%0 zngz(uU+QivH4dFHduF_@th;fjhx1#%9{rHoj=xtP!T38sbk+D%{6q*j(v+hLJUCkH6UbTlk@FE9 z0S}N99f4CSf>ilKu!3TYokTBU{st*8pGT4?^mh~ZO8`DVQaGfX_1NVofTLe%s4;Ew zaTQ~M*Jcc?eAD0Ub{q`w_%8o5TA?9ZudVn$cvQk99?xzRc~bqO>|W`3AHFLV zA~hE4}*K7*%w?b89>kt0Qf(mY=JHKZDhP0bM!4UE0|Ri2T(7@$E1O3TJlzOg_&LawXIyRT!Wz>i2_2JW^TW?4I zc*F14Oh%{4YKtep;WGao+>4UDQRpXp?q*Fji{UBH;5C5M*j+RO%7>Dpp{W!w{_grI z`PzjhbEC&_9IOS9OM}s4KAa3gW6@(7T1Xu||j% z^NqWo=Z1G;>jPOe=X7dYaIqZn1xz4FjE~rfcxVj1;YnP9Zm(=8PfRYy$(*I{q4n~} z8=2Zt+$avmY48o?cr<z=ZwIP(=-MSLHR||Bn{SH2G z$b0h9JbDpgj13|k%p!|xH-eesi+M4Hp>BE0Dc`BZ2?nuXzKL(5R?QyPBA*{btwb|s zVG@P}WMpsX1`;+0giVsvyyZuRFRD_x7Zz<1a^6Djg&GL5Bwo1h_i(rs?K6X|*3TfD zAYunDUT8(G1@cZ$v&W=R(CT2cFZ_%h00ceQg8Pn}g3Z7Rrv_E;{sqs{yKC`)gQ9(j zyTv}bVDi-AmBA)$DfbU5`j`yjz7vtS4{$1u;nyy0DV$sI&+A9(+tajXzew{oZpI6o z3kf!je&=O8m1)m*d%cHN<q^(4kS z=vivaX(mtz_pt8P=v(l)@=8*#eyvZU@`1k7K`jn>d(m!aQGt$W+btlIY z_MbVPIypT~PM7g?HJ+top1}YxBAt38vQ}IX?Zt?qAEWd-1|r9PM1!CgBZ{Ze-4S&W zcF_ioe>YkO^8+`)QpeW^Fc#gb>MV>A#_ItFB zj8|Ih2|PeFE(clBNEYyV3on$uysY>&ZRzju6Qd^!L!p)c4}DbG0AbHTN{$8`t6rkx zyXQ5t$TEW+)@AUt#c(mB7L)U+ku1>kT@)yN7O?$cBxI|LT9czamugF2Mm0q9AEo35 z_Yqq_7i`;`f_3=l!C-Q+eFHxQ+pTy&5ZFwSAB8WL1rELo0`F-{WuYVJGEv`)joM3H z0vhAAOIxxRh1FOciVtQ{yBXYP#g4dGXMz8Knh`p!^f!X>^GS>sjRdx>zb^1VYKJ}W zxHDe2$aoE5imeXjijh-$e#%)SYKK^}k^3p4(nh3QdsBGjaChf~}#2vuO{t>uaP4FuVMNxi!a6p%Uf->~*o%7~-}d54%#}uPgHg0{D^WtMlU}qQ;bNJi z^f^y$;VWa#Q~DfaBAl}}=k-(H$%|}Qq-jfdE-Ej)UR!b=9uS)0owI&)(FU`q#SHGU z_P}vi8C)BKf%HEL$&64yTaIlUr18n}YjLjIp!?RkV~yt{!0@UyVEDqd=ZY%=55wd< z3I_LD#o4haWuJwzj{G`byonB@xK7*Jh`8pIiR>x;JsJ(svh3 zRhc7oDR7X#0&t+*VT%pxZj0{r zbni7HS-Pg*>XY+MdVTI&TWEJA&Z`ppXhFph}b87-nTXZjOUm-XfoK8UtTwE9iqsGo`q? z7+?#`42s90Hc(!vDZea0liy{@>jh{nlwCCVdVz8M*9$0O)4JP?qAY!c{W;{?A#)`t zPDvx{l4-+p=oVSbUXb)%qD_)T{^2rfD_;#rXj>xAtql8h6j27f$g3RC%g#gW5De|2 z&d6yHL^oa-HpA5Q@xJiTnfPAPh5xjeoaMnn{)_q#hv>M=-S;Ofgev!eNlihn$@1lN z^zZnT820AEj#=?wN2nWdg-4Lf3l;P)A~zuNX95c3MB0^L_qS(eeM3KN_^Nid!??%% zqx)8w1>U@1CIV`)ikk6=Pun!7eYZ6{xDT7^s65H9Bmk0JfGY*$7;d|@RSe2$BJ&xmL&r=$i84I zvmB=Y=XnpB%qz-_oX7Tjk1#&R_k`f zW(Z!xTdsROV0LE-jRGjC68x9Ux8>@Wi9i*;A-#GkzG|_Lhv2aGNwc-ss1c06;a9;K z`)^2(F>4qL`@#o!Gy(n?iTK1b+!+jq8%KZa|;$9kDN~J$xTO3Ngb#eop?rBw5di-W-B2$mUWI$gCz10LY!Y=rsotr*Q`HOXG*nnr zvZk=idqkJlfg=KvTr}c}RHCYb5&uunz=?i<-@$TSkqg)l;FDBX`o&~%B&fg?HguneLiENN~zIKQgafvHdy2Stg zLQ||H*(Cb-(E70wY~WQvabbY^?XXhN`wlkf6f3h(NU`$xQ2+N7XA{zMF2!UB`6oz# zf5IT}?;gAtOa+fP2NU_n*AD;q%5eDSQvAPyrf4N3xOMQqG^3y?{*hMl?|%hN!8k5% zic%LhHb_d@5+y}Q0i|~iL}4~RgHpbBDCH}cQWv-XUuX(97aALbmXP7WX9R%of4OCG z^H3;V@JNjjh06?1*}gc>K*rXXE1crD%x;~{Kt;E;nKU%Efh>-Fj>Y+32ziS2zw*JoU+DuMVY3eaQFQ=YLkIjFA+@Rl5Y?M)mx3pHrEr=WyEwnF@4@C6|5wt&pVh_ zx|oVw0@MF(E!CD=>v^_S$+n(nTkFu)W)U^EhRL^Roe_))0x>uK)0l5oLVnkY{H{BW z{Kmd2zn7au>!36sxhj<(Tsv}mfVbDW@XMt9-Uj*I!d0uIedMIZOdnSKKr%zG&Ie;n z`Ck`ZWn@!BT`uvj&Y++nGL$qOneww`sF%*VaVb~zK8IbH>VdP+Z z;C@5yxMFR{YWmx?Q){t6!^ZB`l0V~N>_i+sT6`y#MA5?+n^{Xr$3^XnYsbeE*COKk zQwjaAKjO>TW@bHV&i_>>PIVni*VA#LLof94lujW}YU+hJg6K!ahBB-M{^E<*EzXf0 z#hkAC_95PM1C5|<1C8pP#SOJ3e=P89edV_Wp6<59!+pNL{D-oL-$P~#{o~N2(o7`L z4t+n`;}2b2jO+4z;lsr^rO$!fly(RHcTT+~UlwGjZ@b{0YrtFe)2UJ5myZRRs?4%0 z2G=ilE2P!Sx8(Xu_$fOg{`d~$f7U9~(JS>mL-cJRHU}C5j&`nGWgTNY=rgnYNbNKl z+&iilbtFdN9EaiiwVoFJ)Q8_#@Z?205~J}}oy5cIz&rTxz~7yPQ0avO*FW=@9>qP^ zIJMd}8-1Eq_Ss;6FV3N37YDU-4;fw}FyHSb23I*KEWQG#k|q$tU}sLy8nnNTrCg_x z_3PaS@L=gJyDei*$8bbI>)xpCy9yg05AK&D!H(Sr^vO}n2e+|!@y+SunnQ;!kQTM*G1Y&CuH)A2jn-etXTH}x~utR8d5L=Dpw-UgVtdSB$! zJ}e-MTATP0d*Qx7Q3uY>0o~C~jpz}Nw*0sFXcSvUIubVa;J1Wp@C1-$ggY={LY37Y zNP|;TFKS7Qs>1tOILBtB1$s)0jbIDNHH!BbzMAfd2B%0YcZ+tx_iv6JYNUIc1I>Cm zoc}nZfnP0w7Crs`R|oWue8FBDRXv;m38nN4hM$!nOSk6`p7VhzMuOZ7}MQE*+<^5p^z9J#2XfE z@*UORthdt+K4<>uOA!JY{~upx;0SBph#EB6S8{sU_$wEmVtkK$5dWm_7XhDf--(Md zu6*#I^H4V7clsAmzB# zv}FN&(a}jbt#q2+R{ueoUW{F#)6v&@al5r{A+Mvo&u5lQ)S{nsfh0ZBaqzj^L-5s` z+`l&>9eQL>Vg%^Ri?r&;A`jx&T3~YNeMV%DnYEF4@fh6L%ksi?a2%1&<@ze9>v_^h!`nYWeIoe}51wsd;rIKF`l5ZSD zL$pLr(jS1|7|ZO<79;;CI5DbkPP-H;>kxk9d!!Shn9`%ej56N?Cp$elYCw-xxm^lD zbbA%7)!)T#sH6^(@r8ur(ay2#3QJgysE5pI8B!l~A@TW*cVaZnpLmkq9Q}~~B>iG5 zh*y|CFvdeRtHX~sdy(e~uVu5Q9b4Rbi#6#egx945i1d^4zyybi z>;Y7y*oQ7XhZ?-0wb=9oTmZ#PXYqb-phUnJs1Nz{v=q464qX30xDR*~yf=FfKBtMZ zz-5vF`RjY@5LXwSq?csR7fW)bfXajrma?GsBPf!_pmC zUQhU!0xO@e!ZpA~KzK2oDS1rR(c;%qX8=pwbH%453gHU38fG!P#@td@j$4>eDEYzL z;66@pXG(Q`9rANs?q0Ac6m%F=3rfhK+f_UoQ;?8BhcNf|RH#jToMOGQ0{b>)9xXPP zL;2f2NmYXJXpE>h?1g-2F$Bqafc#Yt(q2tO9o>xe1Hcu{gbVU>l12 z^TXgzCY~}u>(7O11xAY_qab+zP?%%Go53t@0b<8hPZM}m(mnu&irluf_!OrS8qE*w zR_!{7Y4NW)ADOm1&Rs934^>(b;wX)bXCsMK{XjpWaSu!c=vxj@g}xSNG;lu&HS)_P z;rC8OAwi2XRT!Hr#}*ugC}Bu@eV*CaHs?xU;QZcif84xxNI7!b>>D|COM#~?f=$a{ zBW@9I9Wn#I7mV~Eav-?9ZQ=I4#WigU5lL8sE1%tIcIHoHemzCT{syS-HTMA2s@xWw zt|-dz25XEo`Jq(?Amy-b_$pX~0VxomMOv)1R2Ut2@sA%Xphod40vGGe8l2GSpWIuV z0`heaYHY=eq|Vv^Wps)@XT5ygrK};W@3CFBX*jMSFF$-y<(wBopI0_x;|bv%+=Dg{ z64D1Vr+5Q&@Ha$WYv6D7bf0Br4%1J-{Hq6_!9mxsKibnbguMkXnzCT>F`g}r5^tVj7fZ-8R#lIfO<{7 zCG0W)k}%w8pN1YUAAVdF^tK^2~P|zsD5nJwp)KzM-P^bLp?1v6aTY7 zCNLnb!B?zDuq93=$t#>Pk8~hW00UO~$v(qT7t+ZQKeAWwbUThkXF&0iMFpAmBJ5)Uv5L!-W&gOPm3= zRs<9t87%T3A(w0MURJ+117S(=ETji2%e41->b%cFgFXe;%BT#nVz7>+QyD@7*XpDzL+GmL<04sG!Cw`9r*0({=gYInXOrH_gb(qkO~`V<^Ye2v^mkoU zn(N!g>(~2@>wRw~hPMKznb>Z^yW!1meyYzTp3?|LzupHdUllCvg8&G70`%Wae7OuS zySt*VLRv=PGO(!U^NOFc<^N1S3+h8l75(-qR8SqYjOk{<1IoGe=;!d7bjvr@T*)K& z#OcIZ#8131l$Zz~meIF|&-5c$H}dnVc+oVI-1IcfBtTCSeb^phtE83~^mV54LCh2% zMB*)Hns@gTZzk7^GI5G&Dk85A0?WUvztB(B!Y*vdZBUu{L(p{d$(8m_!? z_hkr+M_(UHlwhyk(Q_)Z^1L$*oD8^mSMBZd4G!@ znYm~#vNYcYG=Qd0=3RXwn~(`Lx2{0ZsuyM2bRhNx)fG+Zt$i2;U(PRpQTbx8K8;P{ zJOtY@qcYYiz=gaL-hD7e1>};1_7Lv2+&YHX-!2*N)qgK z;Dz}X8`ta##MeT$a_jP>rnY<@e#v~J0(8wHxJLZeA2H2gllvM~2|#!eu(skf{I7r* z_>z*$@fvN*Df;2*62JR43o(B8T$GUj1+$=qOA#1%7Z6)z6}Y!CU%_r(F$y2FEu*KS zDDSENAldPDI=<9m(BR$!kvjSRgldtt*fLB@ePS+iGCc*w5a!g~h|*oS3I;Vr=V31!5zf+&4fzZGr0mUSm5kRLs=Qv!a5eE3sTcQS14{Pe z&QNo+z;ERT6seaPfVkAxB_r!pBg?gNMXyxuEPY~H-tmSo{dLg zlN!SI6wc%k1Qj1Jw2AiHR=87a!jlbK`m7Dt{|Y(S4d0kOjz zS^5E{dpTY6XWAHuw#}R<0b7|?27KK#ELW*IsN&YS2zBfw?A%~;Q*alpu!NDjH-3nk zuzd081yyfah4HS?VMg|kR{||+Q4RRS8Q59jh*nwvV_j6$z_Gr0JYWgoIc*4m5!r|< zZ5TTHN~H-Cr#Wy?HJ`cyj-TP*R@&mh4ms$Dd?CSg_D;;i7#T1zxWK^^BJcK*kwwk0 zV@_WXjqLIud19~y0Q~S~A<$>I5pHFMNnEwOFM1kaUJo>1|bhqQOq_l(!SU{WKS*_m@ODrG)+l~NIq`A{>D;LDZ?kb<1|s+=^r zkIOD|W!vr#ofk3lPDr8t4}?K&b8_I$k3X+y&UdDlmXdn=kAMZu37NOf04Fd60M`}g zTVX}d#u;a5RTLo47_pdX4TE`RKZ&>GESl+?Znxl<5~Lo~SAsMb?~LMIl=ag=x3dRb z%hPJe7r!Ja3Mb^&i7@o>`tBvPM3XX*{^r8}*xyRDz6FRWT3rdRUz&z^&7pYhAn42U zQ$YW}h! zc%$B0|EWA}t55hBfW8pSR!UiG_$q8k^J!0b2EyG$^1{;~gOEBeq>ip+NL|GXY=>Zh z1&#>vmr>3CA%h};@1g(nFgGUj;$4Y1Dr{6NPp03puRzE1Gkn!uZw!C$XjmgZ=4Gk3JNoZCk@EV-ZkAfu zyF3daS@_1WYGO?PJ&)S=cxn{v77%4t<nIos{re|KZU#3uR;0!L_*=+G z7CH(0bSIt-IDHkkkgm)#yhZmSZu&%RQ@Sy_zWo$=TaG2&Xv_kcybU%qqGC9OgFL7> z1ASN~DRnXbAD5n?phutO!wQj9X+(FXuinZMvYF8T z3wh$-1AXHC$uzv;<$wzaN>bZ8J>zV;g!wB=+cJH)V9We(C|{I$J?n(Ct^>b|{h<*G zzchu02$u0K%WkG2Ri0-AUv7{M)EUXlhJ%3&GALz@2Tte|Gq+DmCb9oYy~Z)6HF>%RT_@HmEGvc>J==M#8eVzyxq*KTJXYw>8#5XYO#~ z3#5M$nZd*6(14lvlY!*{7gTC)q;nA95A~0CGkBD{b3$Yf%bU2Tp})dIG;e}E7}P^{ zM6J>WTt9#@@b#u(PZXT)-Uilt!e86WA5gvV{>I~k7-KF}3{54I95gSW*@BnYlYf}H@I12CVVnUarc`6p#R@Y~+H2YcBK zh$jhlB^s0YD7zB1ECzo6H~j5E_+K#?e{2U~o1gfXOxT=`Un%Vqf6SuW9>m$lfyi$- zM={jJ|D&zIzrB`!QtA)FAN|m!s&yq^a_~ngSmppNM!zF&ug45qNDqoLfb0!AA0;qn z>_qEcS|!9YthJ@%Rtp2^LnB8SG6Ok7*4VmIY}7=1>_{H=OxTE%QA$e!_K8HusvHyj8H_e_vCU*h~r?p~)F zf>!p_U7N3>H15JwersevRJMb<^w z!&1DQWtRheC0>b(kWaEM z>Zqn59sSUFJ;(5eQ2qxlur{Kk=EG>`BvoJLa?%ZZ0=WxNQPqcEj9_>Q6=1rK(Q*Qq zxd6XE2xOAuLE!BJi3(mT{(z6|Nq8L!P`mmgaeD}PKSo;#@SX-dAubgj){m+`abz-- zTQ&wqC_}Sh1OAaV;Id7y0dwmbqDMxA&WaxKhYuhK8y(_~_Z#%vss_2>UPUsVi^bd* ze-*zjbom9Rn#X<(W^Z!5&35gbJ)*9g#oobzfPwZ-E|A8GJ9md%D=8Mhd_*?$^fFAw zneYWKf@fzBp!4EY$39W2YY$I}sW>G9{+L%~nW!>55FvfDA9 zWzL2t|1SWGArZAsAuXL{?TL4g&%I9O1K}|@XNi+DXLeyBK&iO^p*#0q3SD>wzT=y+ z*gk&0y}Tn>el$Nc)V1E)KHzdRJ$x92_D&Lg-}afSsh#+^%^7S2Q;@?nNC3`c!Y-%% z#6()?`9)5{KSIN8pWXkX{jGRQ`!=HN+c1qTWue>*raJwnEUvi-7sU)c>-cl>Y7`$V z2*fzCKYf4E@#Wp3Q(qZwf51dMC|>p7+HXJ?Q?u$fu_^4u80s#+UE(80w~8R(s$wo8 zxe_4#bVlO>_@&FiE8&3_W!$yHhc0Ka!xheuoyw~XgU&c;j}AEQs{>P@+YFv zFMszOue@v!ipXN$-6=aCti$Y?f4uVWR|PYQWtwyB5BV*VqVjk0w=*sBegicg)DA!T zgt$BT-P&OV?7+sELSLx?w>-NqsiRm2_^khLjw?y`(@xK?Ah$65CM6@Ge`QH)zNWZ64_-*{V`p$4PCqxd<)uLmm&!duW? zIJB!Ql&QdNkoEh2h9_JQsvMYt-@1Ny8GZi^o~s&=$e<3oftrD=bw!Ev-UxV1*t+P% zLF;iLsdbc}-r#hn5Sh}Si?MLv@Q*S5$pZ^HVq*0B{af0W zT8_C9nm0T5Ey0Jzb+8l3?sB-!N?D;f3WM@lhiZeVnjKzct%DVsupRk9K3NzLZS9Fx z8LyUskNCCI(IWk-4a0mKjWPG>cvzQ#ZK2_ambSgre|*RWK-WHnJwRWwl*gEK zD`c=7BTx9(!i=9RpE7^Q%mF`2L+bPax~6d3Pvm3&K);VGAIFTgk4W4EcKWQSugCBk}8tLc@R}Zo{)RHvu zdpF`qxo8qk^xFeT`)Sbla8)PA#}sst$j^)Y^0UE}pX1Sf3ips@VGENPo+l-4V8d)M zAwQINd?K$!t-(ZAiTuENOjwTC7xaOD*dhtGBWOKn%@#B2L5vm*6Iv+k@<&B@C4O0D z{S1{MU%zwYYfuj&y)k!>QJ_-6@0XuzaTC<><)=ASevqNU1kRF^PU_2FfCDXJV@j&bC4D3kN8>YBm!`}F{ph*IB2Bh7u`KOzjGFTBn%!W}>o z-vN_+;CU;#-$xb@NGmI3J4%?2N-QU+H(Ieu6Z!fL`p(f$N%=Y+ZNK`Mv@s$B@+A>2 zC8#-Az6KNV2x@(Wf0VD4u;vHKS6>;r8ZZ0_WNW^;lxrz$53*P_%CZEDS@+8O|-^C=Ahw3VU35~M)~;`43U2M zNhyCVm*OcEE`sgP3g^&?FaDvVJZoF79X?o~Z*}DJ#{=Y3=}##?SfDR*DqPA6UxhDL z&j6LnG^|8u2>vSjjI)(*0gV4L?3-n@MUJ&CJlf`IJKC1rw(ywvPrmwnKfdoj&i5j> zep=g*$Kg1Da}ukF-+8d&4f*h+{k?hsK1~4k^RFMiTYvw5s=t3=ea^S>I-G4&_DjK= zR=BrVZ*liyz;8KyiUW529uEWOK_g?;rQ4-AF$=%PkFcH+zX#)C;P+?;`beX=*E-=j zBxP#5WAAHcAai8;SqC5KrXNpl#cAKx`kwLLck7Rg%E6ZZB=4I#ZnhfB3wUv!lzxyJ zaV9vnH>VKsJzJYGLtsz0XkxV88}0JyLv!n*c}N0Wrw_}mtH`5u!5`R}g*AiZH{c#J z!kJ4LxU5XIn<}t98Jy5W)r#Ezcu%Kx(g;vZA;$>3>u zWj?|1`BY39By@aCi;jn>7CQkgxfmj{K30$4{TOQTJNVndvSI5$ESY`L+RuTp@&kNQ zSYG^ZF}Pna$Q;NkBw_`J9Sq9pw7PQ;2E@?CVEI4{;y>fJLY(i`;>+bRgWUTm9<89@ z^#bvt`6#h^D!!Zf2UW+#KgFYZDM^Q`Mq`7_HX;NMJAK@V1v`11u5Mxfhq7FN{hEb?=ly3pdxX<^)t{dVLY zPJ*BfYtf$pk#t+P>D)C6GX<3k8474olJy4r0(`KxN$I~POP_+5vi}43F!z74e8P~0 zSB4vT&K`)E1OJ!2_W+3Mi2j8KK?N+>ds&S}v13Q0g0Lz|lVV3)VJQj=S#}Y70gWqS zi!D)Oi6$C*?1~W^*u{=D*dmA;j0IcV_d9d%T`nss$v^LX@B6;h;of_u&zw2u%$YMY zuWuj`lirHzi2znvs~!^9wAc#;CDT>Y)&U3QryA(66W>zT&EY(!w^-@LMP9T-`5aTQ z%83EF&XnlOiyFr-uXT(Wo}Z2a5T9f>2 zTK_ebp9qkofhFqoS0?8OILs^3tVjNU189Xc8DUid9Yy%Yi8(~E zzpp{Gp>>SoSF^BI{v5P}mN{rXD=vEEq=<_kIS)+h7m`1P&RLNk4WG;uEa%D9;tCYy zc+M&@V$K?~pi7TmeIhZ^kJrafR-a|dP#^zS{A?Ot5sV)b{)zSB3o1f=xD5uvqb@?t za!J206=x5?M*MgH=s+OP-4tsrfT%uDiivS}ZKsNc9R(8Q_5Ltw&b_O}y{QGVX`Ac^ zDT~k#%Sg#(6TPM8G1C`9-T?7%EzseUWDPWKDK${0&_Fj#HYR)>i3aC5bhrWA=#>|* zH;zBz3QBP`E9a#+jY34MY6>ltK`RmB$q+eP$l3=#9suHn&{CNw=OiHx6&dSLVjN0= zA8lJ$x)e0$nzVXKIc9Ruy{lMm&JIJ`0z{Uw*it-PfihA=-cnbeWVb-fIi~v*Ytg!( zzqB-)h{D~Y!10H`BO$S4fB|6|_4nr=TPt8w$D1XiH-tg3J^&tz3 z6ia1hMgMyaMmiSZt=;Np#Vnqdf9qfr&Iz?RNAD04vAYu5Wi02PbU1Ev%;uV*Bup3L z)2xjiH*k3K=tY^5g4Dpw#Si>rwNxS{p;#PKVVYE?G`BqPy) z)kx27^LtAAu*G{zkKH)NqawUKw%|ZnVb6ZRb~>N8n%y^ajC`VgwZjt4YDFJ098QguTr(BD$3QoHW@r4OZ{S02|JMu0ZS{6Uurnv zaNOc@`LpOyhx3jeN3>-}A*D=5j})yH_F$d2$SwaSUirv6UYW(Q0ZW!Ra>Sq|IYWQ1 zls;2e8Cwc~h)@<`@u3IV6w^88Fo!0)wsP@DhH#Oe^LK~ie3upWQ?>@alRSa*g!&t< zkkPKy)Z=j~XtT~7d|LvOhs+Z8sYyMpr(Vb6xFI8_4v$ag)ChaI)3C`MKVd}p=T5wD zc*<+%aNcgsp$nNW4=Qw42AtVusEe~}c!358hnP5b%lY1iu%mqB|jr4ARRtvLjh3;`Iz_ww^f>fTK_Nrz8-P5kK`&G-zdhIF)e zGt6_QSD`_72p5qad;{){>SEN}AH>gP;6+`Bvk@&_uMH?!F zoca>=)<2s1Qr{8>%cta2C1VW>Sme@J7iowmo%8d6Fa#}ZD_QJ_N8N#*!Ag%?0>lMl zd6hR09VK)TDa9-ASwoZRW@W(sg>>vK_c%qz1xY=uS0{QavYl62%;f1ute z6wPj9`h|x=^I^!LYdz7)qu1dux>Eibn5qB)>GpDTJZKsS5yhi2n@UJ6cn4@sXq2-+ z(g*PQvX$X*qBY02&bAYKj_Z?Tb($K+a3*O;HETmaZqm4N*l3+&54jW;Vnn8_6H7W? z(AFQ-)bZe`MvfOomC#mkJgBV@ADL?%|EIO*=t~YMfgDEycT>UmE6)I`o&xd`&;Ki= zR|DNcTjB$zySofIh{mbI;=`yn20CVQx!V$wUf$s2OC~L%~U^pHZYvLqwqLvsg z)MOqP?Y^O1ns!sp<1d=d?whN45t}XhG~R`dGmU4WpF}+yBr;$G?p>!QoKPCdS8S6y z2clp&Bpr|i22A}5q{&PgZ4D#=16F3mjg#RQ&IQ5+@m|FF(fimrf&wMj^4`C}dmn=k zEnsO;5k*e1ptGwET6gxp2vpR5F{*rLWqNEav4BKEfi!$%oBEr^nOI#=g{;xD>2Mx& zxyKFrTbPjZPRFLgL%4i}w^w3G3?CsQ!(kN4=7Qb)gLXTQqkE8)CucJ^aG2OZYtU_v zEN=9UsW0#G!`L0!#H>Fsq45;bOtUsfU5!c3%Zboy0^xPT2oe3Qg_(bv6X!ALekYuQ zBhqkGiCO~K3Vkb>oTX(&0b>Flp&{(1R0lTOePfBgXbrn5*z$tzY3B;mB$b`vGOVW1?sP)O45L+OqC`*045%#IR-p}rk`dZSv9@@ z&4Xmqj=};}A;98nzBjNI#Od|;x|i3Gr*Z`hW+f%VMaX-0n{zFG2V=qg^)T+jku5}J zv#R?)`jM9ar)Kd&kXGJ5zmQPO?oC-Q)pIuV=v2?6ybZTX;5ZT7h_}iv39J&qxisvg zRx$Y=hA%&cHv2x1aBs?CDOwXT8lA6Xie~biNzt&|oMmq!G9)Ey>bMBJo&R-tUH6cghjcjXW1`+`X+x<+fx2}q0nXgelin%!uTU=1O2NmuE-o>5^!kzyNTWG4wRl+x`vV+ zIF^JSKG1eYS$w?18BPapTmF~=SW?>;GY@xX{JcDL>TZJNYI^t<~ z#*=}Hoc4(AEc7V}I9 zYwZqLEwe>|5-S~@gF+-)9i_4m`T~o2sH`9?(tTJins4IP6fls!6)RxwiQe`_yyEku^tLqfengiR=z$q6EAevl3*=| zsiSo&YnAF`f!&vsnRt93<}!o^-yv{fKsxOJJKoiCo?_Y=fUQmdah3;IwG) zEl@783}uYtJdfE;?~Q1fNBo!z2+br88p^O6LePOgh&gG>-Dn9UKmi;p6Dh+<9cLt9+xK}t}zTqT< z;-v*=7>0mJ4(DwS8}tdBWkB$hL}^37ZehNZ=rIQ(R${<>NLPvaE%go>?CM>Bpb%&^ zp`jte=9s>&oWFY_39#8xB;=MfoU=Kodu(V&wGjCUZ%N(E1+nmV`ghx`ZV#4`s9?8PF z)U_!i1MkP|M2g8b2A2}?b3D35yeo)D1EO*Sh4h-ikq)_V9GyA@apf53foo@IGul)v zA+IDX;S4$JC01y8OJRNgA>I>taVjXWxhfO@m1B6TD7p>Pg=2=^5V zO|=_urW6urANp<*3$j)Kp552&GlQf_v$cA=OyhwP?q##4@O@sS&>Jt5%DS_qHCfDMVh zI60N$-F*S?vS+}WMoS5t;(Io2`nwg+r7@|-F|E!I`P=bPO zieU+wCWZy`5yQeiYqA&?yi(-Z1RW_t!6Elj;=3uWEPoLS5k^dxpiyGF;Fe;#@XxYG z*z6WmZx;(L&t+W!?q^S=^%&=F*_)_3%4D>;kd%QB3eL))r%2Bpi;yEi##cfQ*?TKRKrDtsbn>FANa%`?DPWa9npH8SDSqtW#IG{Z1SdP%> z$dY?QmzL#+tYrh_5^z;4AC#Sl(-!`Mj0|K*pnIOk8(5y?YeD{%;GcaMU|v!WY6go` zXI|3m=fHV1lp9JY>RScohoIKel?T8NQM!M`1}h2dr5ss@`~v+lMg!-BEkVdQCv1V2 zd`>t53+zys)aHwghFnifORGupw|{9|rP>__6mj@O++R~V)dCk!9`LoJ$q`<9(j@2j z)O1~GewR?d9@QBQ?%N2IcegzRB6;~)+>T3t2r5Pa~D)b z0kuF+FtO9`Hf2@@Ax-j~c(d9{&TflycB|ZAH}f~nZs|hiMCFE0vD^8Du-oaxZfA0K zJHP1ccDuxGai9_?*-XxEH^|xTmz>=yMDmy12xVj+<+niI?b!OoxuKD?Hl=lK1jeuq za+%Z^{K}rJo{$A;PzK;UFy(ex6#Z!^74r!|Y6(6gps{}hV^l^8UH}j1BwQS{O7s@= z#`a|oBV@mE_%eDxF}VfukH_wu+B_4>uN>{B{shcQwQSW#C>>6hgl6S7@&f^aDMc+K z?h!|1;?);1ZVTnr`{7}d?6QYaaOK6kYtW5y>5XKECIA9$_wcUGC1 z!BQyaRa~6Q_CyrORU!|Bs@!9Ban1sjYZK>k7HHrskl%K~wU9|V&H^O`qutbUs2f_e z$SiO*vB1T|0v8+fOB3}Q68)E&v%m%*Q^W#m5xJ7~f5%6z75HBXK*6j(>|+5upXy-6S#Hg6ysn!gBI9 zl`ITs4C^uf+LG-cd=ZY#EQ$Bd%4&8=@4@_XZjoM=%s(*hxmqqS1Gj+AvH%3Q@Y3r!=39Xuo!6gh`(5azre7H zPszA&Ao7d{z-e=ykp-CDEM~?tHUs)`p79-7b`sB6A&NWsJVOK0R0z*lgeD}O5hUjs zVMOSKVa``*%9!&EfnNwbkyb}433rC`fo^dvsdVek9@Xq-S3-vqN2KH8lKNU;hAGj; z1S_D$$L3@EIfJN$ivGWJKE~xBakgZ{G$g=U;tvK`c1dj@@P|gA?hs)xxuRGif1oJD zAFK=I534Z{Wc=Y0`kZE2@o&H(R$>&u_EqE%-{Q*%lXs8pjvm(9rXT2Mktb&tB(i{A zBKLC%iPV(uBSXO~n64l;c;!ThZ!bz=G#Kxz_nvs)np;vz;)Knj`hWx*q#i?~y8 zb1qU1zz?`c`rQIt#2KG5E<%^6|4(O9JyGZXdL~6Ct;9x14Hh!TG=KU7pM}n!F2LhM z{&57A{g8i5!1yI-LH@B=3|o+Y_=sT(@{g}XXhHt*r3fv^Kb*vL3-XUQK(*`==u+Ye zIh-q00z*ij(1~BUsI=|@r4z(M>(2U0<8t%-D>(*KvYQo;@eIVtPD5=?3}E6dB$Y@> z1XMCy&byW5SHmL5R#00}3Zh7!orWMLzHkDP(Fc6t1yVBO3sZ0$PWFCkb$@HlU8aM( zh~rNG#a?0|yNTsu)B&lpzC~q01Aj=N;g{VHVWox!jtKLltd>ZUpamN`8$&T?Gq?{O zeE1*g_s(4)s*ublHa4K1d}3pbmqPgr*Y(L74YhViNi8O-{^WdyPSG>xGminYn^ne) z&ujRgyEBVTCgqtp4ro z=kMr_hz zzCJ`>dh1DD!A~GF*((MckTS2CzMp%hJ2)O?NnJ`=h7l}``%sz)F@vg;qruKLb z0&vkOdl_26#Frji0qYnHZxhq;rvYR>8JUzJ6h$@}DTC5w??75$2emQsNZ&<=*ZE>v zo~SS9cr`{*uz%=;|Gz8_CDMwzMKQ;#+9!Oa*K}Tjus)Us?H%lU8Jhh&#dSv}T zc!mR}@=YKR{`y@RfXBC9neK*FDj3M--T95EJ2qQOZ$2YMZaUVPkZ^*`z43n^K41<>ArW@%6yMf~6c3C4kLS%%j*R#tg$hDR2iCQAmGFba8n;jSSU=MVcoBKSiaY?H-$ z_9MVE4QYnII1u&?d9bs&Y&e*A*YUEptliWgbTF=KjvtJt8;tn;@tl(fdtJ0aUIwf| z@~&l<wrRqdtm3Xc;4Us^2hGP+-SE`#mS%Kry#3R8`=dLW5Jfv{IKxe4kD$vt zI-awe_72`?GXG;zLby-G{}eS6tN{2i$t{KDe>$;cXdpksp>x2I*bXpw66~DF!pT32 zOs^=o?wk-@th|trEUw-D!|}OwVH#kUKn7yGQ<{?fF3gu^cw}6-V|X>gH3UK-A!BhJ}P5u}9_BxpEkpH}?>rFBtAD?{kx zV|41+DJ;C2YM1SfW}X8?>WH+_TR@*1c`vi+HhJIZ7NI)SP{YgLct2=4KdQOj`~o*5Vm&!xAv(*@7_c2=9)%uI`ytu zp@<%k0aJM#=I@_L-TMgLTL%p*^_w2;kaL^YON*mx9yuy+#MVGvXxL-Tf4o_OF!O5a zaiivVYPg*1O_isrU(2RVQI4tFzYK4(hw(0x+W!OkC~yBvwEq=YXBh&pV^80}aLq9z zb|@|ceMzKCPU-S#TW9}AcHdl~h5%7Zjel8JuL6kZN0uY5ApVBz2SoZ&SORmnv7cSS zG6bXQy+K~+ge=O^kWp9+w1Yq~acbi|tZt(F(2dl6S8USA?B^*)rt%SWTNc4N#YBr` z(OG{6+=m4^3MiO&ULGn-6!VJKQP;{LWlmw)5slCJ!|>A7H%KGfhqrFbDU=1owXkS& zj1BKSRkAsAP%r*7Hq15qeq{EYY4)9E_I<6bS9W@g{x%)YJ6zAKr1H!%Bt zXO_R8nZLW)_aw7#o!R#=vu|&+?_Or#u4dnh&Ay|}zT?ck+nRmPG5ZcS`<`$19cK0& zVfLM1_C4L~yP4UyliBxIX5RzMz8jl;&ouj1n0*g1`#xsYf78vr*P4BwGW(uy_C3e! zJK5|z!R$NT?0dJ__Yt%24QAh4%)S?!ea|%e9%uGF$?QAD?0bdT_foU()n?z@3x0zn z&_Kt7KZQ~M|J>hq5c6qL1r-Nl3MGHiHy!ER4BwJpE1BP4@T2oNmhn2IcE_vf*9&jK zaCGYqg`or}4GRnU%UI>pgG=7`|Gx5$&K2smspwYxl)n%?9Zw+y55_Kt@T+F7h*A%A^K;E{`c@K2G1-!sgAjLLLcxuA&W^f)@_NTEJuDKYlBc4<~>DN{CcM<(1xb*BL`g@4}zIe*x2Z;V*qJNa=A1gko zKA)=phM?}W8pMBd?kbu0dnc9-mkc=lDh79FWIjs2`7-|ofYWcB_@wv6GXI$({4SnS zyJf(i8J*Y)xaXpO2ept6#do@=WGPn8EECREgm1u8ieC->QvB_re}j;G|5`Htwt&;` zTk%Qn+hzH$72(A~^Yf=Lt%^A_C%AGVe6-B}hAjR}5netlKmWBde+A(5Q_K7x$^3Pq zf3o5zew)N6|G=MN7S4>J{6|E%>xlgR%aXD-VlleE0`A-tzhw&`OEgu-WC(Hk$=-)abKm84| z`a6m6)iVDrGXL!&JTWpq{%)E7Vi9hs$@ix^WCHhc8Twa*@58e?dEj?MR=!iBfB&fb z_{U`Fhl%hbGXGroI{|lx!Ce&L)uX$cX#aEgPlDeHxMqOUFHU^Y`#V|sGe!7Cng1)9 z|2+|2=j;6PFq(pDe<2Wd5aP{_jM1D{X%M6T|Hl z!~G_P^Y`rI>DAwpd3v#dN?(C@$s34&QCd76iWbe!ajB4^|&PdiU3; z+u^Hyuaqkgnzp5`C&iyCh-@^-~3yG z|L=HyRxWfZnCncaLI25bWUMMCxJ3wS+^A1KXJ1!Ec#H!7qC#}dgVjOdG2u}fbX*X+ zN=t3ao7+bX?D36?h>CxSTH7n4ViB}wkH+oW+P6?B{Lm-CS|ATP zJx1XY6+K!T9vY@=>|(EI-KteP#qiOH+&d~p9UZ3VrSMaYj)>AWQ}ouhXr}1n(A!T+ zfl2^uP^cn8qX-!yks2cEV^9*kh6)!E9;DU;0Rgm8k;o@l-4BBf1@==1g=tXM&~SB3 zGljdmOEZN^6O6bhPP8^kCk#y?4S!$Y6mUzYXy2@To3_nbwd&BKQOlNM%S5V1D~78T zJkJoVS{;GU(MW7`l!oISZ<}bnHX60TI7b#Cs-WmY z0Docw8re6GmAVlP&il@xMXN^kLLUdKbb5hS24nmOf&Mt_&}=AtLr#}M!Xxk+qX0z> z*U?LT)-Z_Gx3^_}AS&wNs-Tgb6q+cVLKUkDk5CPdP&cDWMN_mx7K(^NLn$g-(eX9ivl6D%4tSl(rMWS_N0b&7(I~WfjV>HD$@gV$L~S)7W=c~G zz=EQ*)SwDy7e6;IPelyqeRxQ?I+(dcX+nUQy#GOtkrg3VR5YPL3{#5q4y9+l`k)|n zOiYMA0`yg<*J?geNan270uNOYTD2;eo)J;NC}h=L6|9I=Md&fy^h7w3j4GIU>LWos zgZQ8fiHI7d0P1lMFFnc;qKH&SMrlWb2y-4P)RYft)`PlL$|fpWtwGO#Y^#6(Kv4|3 za2?Onyjsj7JSK+n|GHBATmsWAJ{3pl_23$9!bQ>B&iUZ(9nztQG-i_f)+K5LFGX_-9i+jqx6bVB=YE@6p^ZtYMC^Y zFM7l%sGt!TY9A1J1!|76hpF@+Ccy#{$#XOn zpZWN8dSzoY-Z!)_DKzumHby z(1|6$b%JXQR}t{J-%%2jMTCbYi>Uwwx&F zzL&wq%iiVThJ6Gsg>iwu`jit}WR^Dh_X1oB*Hrc{!RT4`BXB9qQ>5?g+Rxe3MJW+s zk==?yZw%;{0`fR$GFY70;*2T1d_EDr@DxEjJ-rxXzHWm)mDwjFyQnn8Px&w-tmPb7 zq_rrV0)xdBS>$sa9w11F1yMv8i$FO@6aJn8ZShmOieyY2Cx|bRWTC=*Xnizr;ROci z;fyRs;PjmS5*wrf5e?<^T%^HVL=dSB)gqs+iv|9me1){3SV>iMv|7cAxa%X{Fe&#spev?oP`uxS}+AZeTtE|gHUOKc1vxS zPrr#Dah@V}hMeMx^j_)W=HcuvqxqkX^C7Mlsi_z^pBau9EuK^-QK%8elNmmI(8Z>{ zArw}qLWq~CKuR^L;8>L=h#08YHwAGg5+sy_Y{<}j)<$Eq2LuvLFg_u>5N?4z2SZM5 z-duq?by4V4p$ZLVB#?pRj87DGSyV(Y)2K%=tvWga!YRWXRHX|FW2%_&7yw6wYl0bJ z86Lv$AYn=-mN1d2qU>q}gvhFmiVjn=ul1NaFbyPIHb$+DLQ)X7_(=j?}RBB;NYJEzU&trA06-dw`pLaWG3<>NBmKQAB`VdZ^C(=beEFeMY{ zvrx(|jeK2voc&ySH7cYSA7GhTF?^MM{gs}6ZXivfH2z_4Nqoh;4GQU2E>V4u=Z8s( z;XaR@B#WBkN+HSd^vv<{W8n(+%ZH&T&(DuEfv!XDcKduSgs>t~$$RvJfx+hnh4G4l z$jbP{R1p*b0tzC_8RCZ($)_LCW++TW<+FH!P)VIm36O}*f4=(RqSUHYLjvdemMCE& zIXns~l$cJ6#tnlzH4L^VgcE~es6?nWq0kRB3}(UV5S2bc2kILX9uB!7QWdV@vnf6g z#SA0aJ4f8OPX;6tN4@~Qw`h3o>8(O zRJm}dr9~~TJrlF>^7s4K`2Z`5o{`eWN66@(*N3ZSic%kcUnMmivO-(>a`kaU_;8LV zLRm@vHZ>DZ7C4OF!H@?An|y@8EqEJ2{BU#jM0!x zMIca|G)BUl*(Ais5sExr`2l7}T;qM4_lrm>2hOcK1~()Dbc2 zQBd`$h03~ldIKLQcZ@N}Fi-=U7oa&Q?LtU7tU}FDDn2WSRB1;7^<|AYf`mMktrXg< zRAP2LJ-vLCfugZk5=Y#ziAOb3@T+y1jwXNlBgLiIkd2q8kW~n z$j;Bh+trQNO_2Se6yqHzN{gJ1QuBF1uc{5lt5DRM$vEkY%4Oi^Ns?Z-`!nV*x zkRN)E1lAa}PSFy6Ep?I61S1WykgdOGcmEzels-z=KxcP%M$ynO&`@I-i)cyVHN*8G zL~nyp0>3ao_&A5YVw3_srcrR}BFv9s6vIJ~A==x53?L&?C=w>Zaj9FFjYJWV2o8^d zNIV+d6&@L>1_tY((iY0)+smtepu3lgzi)n-qM=nJbuEZFsdqt81m&?ve>kcXRGG#= zR42(=Ow-THJJ7|;74tDuJ!5oH(Olgqj09-8qg7aILXl`Rin`f25II_9Fh^e@Subzm zvd->--tH(Z^j*A|f{GOr)aVF3mNUXbF*<+|LRry%gx3mafg{6#Pt>f1;DoEPhqJ%C zUm!_03~ETuxu97Rc!!AHB5R{2mZ2Nxnn=}yG~D^UV52Eqn>2;; z$~v@?ew+fhyZQPB`YOGlQuFiTIP0q>(ScSwMB0P;X*fOzS)mXj-9nL|JqB;kfnCzt zg~UFH#zkX(6k|&ri_y)M^R%+T^@y?-0{W@YqMA?$n>>op54=>$0p3I(+-YGh8tO(Z zQ9p1vGIiP%nBoBYl5F2lXKZ zr%cHQqC;BSV6mfU`6`kyfV9OtX;5QXJ!GRF#dh{|1rPG}f#%Y=yStz>5Q|0VC^TO) z^b;kw1i+%mwlwjdd{6~{s0^?SVK~Ks@ zzJQBmm?0`IMhR_`Ux>o1;5*RQPw5fpfr1980MX826!=?Aijgu;x;D1wGt6{e1%mDSe=HGtm#;_%RBa zfD4NsLerzSfFD>C7soyg{rqNZOgxX!3~QB~kv6kc#{x&g(Of7Dnm}0M5mr-BCP^}) zB`qOQ$`Hlmv={*>8fNr@jzSe-OC%VXn1qH=7<1?hURoNF6kR^RWvJ-f-OGp2BEOEo z`pD=QAUg;a1U1!gutAR2LYvXrH%fvLVWRY4s>%Uao&KMifmB8MiCRKRbyJ%wnB}u*r13B zL!+QWvEWH72WU-5dj&j^gREIvw=Kq5Itd_@c^Rlbsg4BG;ROq8%wKxQXb`wMg%tcW{ z;F%;^QPJHz`#HP2xqd!f8d$Ur1H1|cu@{zyqeQ`lQlchtb?aC3GKR;7^HB&g%ZY`l zzFz&5K0VyM`WLCbC>NPi(8_IohoFzeBtF|-h|et>3MSy@sT_dSxFWPS;*(?|n1Mj0 z5R+dDg`uA_2xsVggBk+)fN)0L{i}x*r&4kJL331^l!bKBMKs&}AW;-im=T+mR0QT1SOl2T zwe^u3T7cC-*6+k@3vV`B4@Re=e{5Yy0FGZ4J-oT_rlScI zv430EJt`^!1YUs%rc_NY=no-gVb&sGbG(>}#tw?+3I|6=7?!w!{E(6d5ycv|rGh3SOd(gc;T0p;|E(UDKHjiwU?pja=kud^c_N)%(gVjyWcQqi_G#xL%<2eW{m7BDIr4E7sO)yB1+`P%eOUC5jaJW?v=&i*rJy^vNyaz&IgWK{D6q z`83zmRHl?kg68YBuuGyP0&e9?b1RzkfOm$fO|((!6J!meO%h8?Ucs{dC6NiM@cA9i z0ifTpppKzxvIr7X<75iuTd?}BwB8OmE|lx!m}Gq{k0JGeM88DJQUH5FX@c}|KJi8z9qJM$S+VEW+C{YP zlYAJvL{ z!t{W@j~dn~q@0BOVj6$IO_Sjo@Sp3mxP=#EM7Br+lOO5hVTtvHYeHxqKKc_$a*-D* zwdShk;xzK(NixGAXJ+{kcOCGexR1pr__;#dr^5f&erd?x+)+E4i3VarVc<#~g>h;# z#F_Pkqvv(;{VASBaTKp8?mfbhlZR~^Q1F}l3WLex{M+|`lD`kFd=ZBy(HQe2L1iuh zNK+^6BPrO9JRT9h{74iV%30Gs7MQ>daOR6P%OyJ{#Ym zfzB)%&;D@j;i|&D0qhW-PlkWq9an+Q!bxG}?-K0aK0lXMjo|!zQ-Xwd=}B>40#+3F zZ_7vVr2OP*6b6&~|CjHD+zi&~#&pB!*a#A??y9E2U&wrAZ7s^ceNKcB}9I&Fe ze_K9^w@J)bo1FN&k^8E_}i*F`BSg_DPszZWI`r^5Wxw06tN zOmUr2=b|_&1I48{wjrN)6iyyi{$7;$p9)jdwCWd9PKsNUKBh1l#9tfsc}L;oVdd{d ziT|lEMNKOXq;!=Hz;yzan$zS4~()a)Ar<6a2p0Cq z#7IkyTo)_pj7{E9VXNb~7bOg{9~iIGx@|-hP8VYQn=6zh<9$V=hB1w}l``MXLu-XX zJAJLksv?f{(8f?h!61{LWg(Ro8~d^Ghzy!}15tU|S{?QGMx-{bU_616Uy!d`CZa7Is;MRfVQA}E`vRmz01R8egrOsN&AdHg-b!0ZH0u}AcL)uy-R7+ z^Sh70r7)A>Pe0p9&aC3Z|2y1|VmYeF%0#e5aI-|e`gp#X?96K8`2^29aPx}jrXk$N z>N*B~9-_Yj&u1vZ1GwvOXWb44^YE?G3lHWY#)NrxIA@? zU#xb~ac%e&SYL)oEp43$!Fgz~MwS^f3h!@;-Jn6e5 z+%UNL_}&4hNXU0Ts^I1^*tR8+XvwTHfA0=#fv9{UQ^2+oPQpcNAE9u9p#!m!V9t>WP=M}D!AU<_YYh}_{w2E_ZgfVAvjvR*B(5(k9{1ztU`dh!q!`ge zuwW=yWBuw}B)4>%Gy9l(3%|nL$HM>D@Mp-sFxLw3qPS0$=M2&)%zY}(f9aQs{0nn) zwmY+;xKEWO3uzSQJ{9M`^t+4v3v+XJpl(HQpDIhhPRKxoxKG9TFa7+GcVUi?XA-u} zEspu1#-1m08NYCo3yD17FxFz0R>ez{w6?J=Rk}=ByK?0#RIF6FO4VxBYt*b&yG~t2 zz4~7?X!vEL#`aB`Hf!FZWh;l)ZQ8bL-=U*pr_Nt>>DtZ7xw{K?dG_q(*1M0pho_f! zUmssT|9<@k3>-9gNWjp*VITJ&J8t}hiIXNziBFh1?VIU_8HqEKX3d^6ciy-27c5+~ z_`C0yEM4})@)avr{kVF~Pd~3+_sjYX8#is-HLtcUnPqV{}l{B$5QsM*qkE$Go?_h6{}_``&X=5 zk^V{Xi{+1l|DV3K!_`Cc_PvW5dZ1Fr%H5JTjB9%9I9<%VcG-cj^b398AGX~%HfV}Z zmF#!8C$rZZ)r2j#I@f<68R)5uw{`(6_V3k$m$a~%5t}kDwClFnZITUa z-<`VkR(s1a{tfbQF=tMR7T%>x?fT|kJ4altwP{3Oz%08NdygMK`(EQ4i)$^7Nr+ni z+GwoR>B}B@w)J)l3)tIs%-Z#jivw0Ja+!0t(~m7`tqMttnOW@d&{sy|AKnMXgf#eh zZi&<-XDYtf zC2n|a9TWVn>(bPk*_G`q-0xOQePJ~Ad;dH@(`Q4Kp{l3z%bsNs3c$8?zSBSB!cuj) ziocI+a^mQQG0)LfuiE&$^!Hoo@~cCPZ@)U1E$@(S3MzjE| z->{sXeP)*kxNkpvS}VO%nd!Jr{zxySOB-7+zg&aO^yII%)Vz(`ve$i;F}`x?>rJ}U zK36mKh5Pf)fHh6uq5rPl-Nxrb=B-%R?XdF#+zGw!eRa)|b<0jH&YbL+Vy2MG|e5< ztzM0;KUZ(^H*OOz`L2iGd_!RBsI#Sg8dV-TyFXx&As0Qbt+?80bLyS*5uMK;+lniW z&%D^@rg<9iU`+Y)0rkI|{<0KclP>4E4*hl7Ua!0-Gn4lv>D0L0wfll8PSqY?ZrOF; ztt#99u5|1-+%HYt>p3c2i~G)- z_FoYG=c5@L&S$PXUeRIf_EWgpx}(FP;g#)wYqlyWpi{rer-Q!)%e zi~DS-q5n0Z^y0MAt(RY!h06hl4BpWrC2&#iv5P9sa!^NkX5nu0>mFZp&lqvwLBmAf z@QF2a5zc_69o{o`)svuZV>+x~kP$ydy#&|J-U;0sv+vC*$75@Le_{8t&5RegCiTql zZV???4t}O+ba!5T&)CXdfUWz|NnP&x;!Y0Ns=j%pTGU}3Zdt9dZTnEG$upe>XZ|#= z&EDFxEdgsibHRXXdyL&8jr(zvliG~Dh5F7o6uBB>Nf*y?wD$-+ue$fy8L5iXocF{ z|C)BqXl!%r+@Rf;s-3-}@P3oL`PYq^SAqArfB7|BUANwY`ZrH*9e?1PPJr#`qW3C! zrlCg<-)P!c_gwXI@SVG@Q-9yv^W}uIM&pR-Kk1bF zvhT0>c2%T%SoWKYGoYPLwIXwsrJ8MTdt#o~y#q&D16F;1*^sffTAjaLVQQRBfxW-`hq^sZrSpS0wzE`&g zzP>d)duG;;ntI=#G#U@@spFYhY-uCclS3-pQp^r}egb7FS;4LLiYIQbI!79^b9Yqr z1kCQ<0N2+;J62vlsY9*FcNX3L`8aOjJb!&+@Wa{ms`v#b-u6sCWC7TX@{30uU+7r8 zWXgp%H@4-?9em7a>{jV!REa}(es1+=sHU|=|9d;qj7CMVRbjQB{kZ>Di)n^wcQ@Ry z18m>ITdH=oH(c_p9QC%2Pk=Ez72&ER4&Jch=M(GnWsGm^ij6;f)My;!y2Ag*_=>B# zboxH!=hwYQ)dtKypsIKE=BlILPHU+Pnj1KK)DfexXX%H%x2c-cJ@JS85YI|4UYt8@ zG&TyU&}06fZZ2Qk+V{uqKHIA|1+3le8P11i9U0WER!`e`JuD&;4jGN_epouDN0-XY zA1P1vTwm{x3%3p$jnlSn);`>Q;=!Yp(?5Q+1pjqDqZ4ZZ)a_#}xgy7@-Bc@u^ zFs`xfXn3=jpJz~*h%y;N81PAQzX^banEl2AR%dEXU;N*V|8;zJ*O?jzSf36C=VgEX zoZ7E!^I!GfRfyd;^&Gkb z*0rHs?D;LduRndhctK3{_F3HkYn`ASs!y_Zn-ws|_0X81zFz^>IDJ;1ye^TQN=o+?i zG~mS2Rk5Z2Y%_XI%K1uw-C9%8cZ+6x*3ruYUZy<^(U%9TPo3EAgBm(KUKY1;=>jSyTVgycm-8uq0r%`m(NjJGE${ z7}@whld6yRSppXO`G&nx8DK|$tJQyBnVo){`@FnVCZR-eO!17% z7H?4oeLeJM!^?BamrDO(*=xXBKA#kIuI8d+QD5xb;ks?n@RxwieA#AT*}HKo2G)Aj zWW?+ZHJ<_2<>-)}Ur%Z7(R0h|ef6&PbNdsp;npp*QXE#SOXSJIK1j z9l-3n8Ui*9JCIR&*p^?`Z7R|1cfj^JTHq)nj zo4S1zt9GW*n5PR^g8jPdo0DyJCTns5^Z8=V;%ZJO9=)*Nd;7atSGOp|Slc6&Fa0&Ej{9NNfVq7yy^g&ISkCCP zcblxNeD7|2VEM$X#xus?^0wDolb#jd(B`Zp7SBA0a?H#80S|(UOYxKb3 z=CfnN(*SFsZ$z@w(q_(zRmMmk!5k|@vSrShjjTe<-P9wj>jYGN0`lP`;O!cf@bn9((k(w^de! zhy&FN@eyQHK0%LWmw!L+K z$-yv|U21*HUc1uGm-KtA z*|J@C>ed|Vayjj*pf7vg9dCF)k_^`u(00N6OeH=WM9msYio;sb>IFStnZ+)ySOZ}T=z1y7`y5{c#-O;$G0zC z%Ov0E=9;<DGyL?dodE`*y9z*iRem zCnsMRl>B$+w>vxDjNEz;Fv}fPW_WrR>v3iLxR|t8w~o)K&se>mR(@OOt6jZvO8kB= zd(7}&t-fGvQTU~0zqIc=vUukeqsyJR_U1BRw!iFO>-q*~KG*mn@r!zGRQzv$PKWK$bMcB$9(w6e3a`rT=mfZggt8tG=HZnb`1`APfS2VOP}n&3=@ zNq;t8*yNhigjSpP9vvAACE z1Vde)ooTgNV|^-P{I2W2tkU1z{D<4sDLc;}0?c69>_{M6J#psdj2qv7r}`@lyY9b; z-+N9q)BpXdDMQM1^HNPK+m^9yS2|{n-IhJUF~uRXYx025?SR#qzw6I($Cp;m4cw!( z-crMAFfPRC+_Ax=GBMTHpZhDew&GDpUyJsPHEn5}?x1|Iv8VTjW=%Ip3IoPvLw{>+b^=S9b2H z_I*7=I_zIrZn$;ZpA$Rb4$1P{ueEvbjc1vWcdd%IsOIf}+xxCHJ(vBZpYQPHb?4OV zJ34#m6~Ll?e*OB_%a}UkEgfn%5F@(qUt#il0^}Hk zULlY1jQ~3)hs_XRZ{)C99OkrC4x7ti-iPI|`5e~Zxg55bV3QUumcy11Op*MX9QFgj z8jpM;hpi&m>tYM!ur+`=?Q+>Ghph#y+?tD7a@YpInmkCDD~D|c?78BP9e_=e;J*Uq zurBZ}zE?=Foq!!UUUL?{A(05bJ%F`HUbPipMK zHApZ_`HV+%;x;lie1inTRMWWY%PSdd(im_o;fHCjv31XFnZNRRSoW1gXsXZ8x%$wrh1MKwizmDJX45fBiO|S=m zIgN{Yx3Kg|) z%}n4?>okJB0Bm8Yir)_@AJK_9O~lB8TnE_LGmBETRW5m)m0RA2U~d7d0Y#wVdar%# z;xuqZ;jUiq?_w7|pI&CiB-cuiKwy6ax4K)UWQQE@J1hLJ^0qDx*etK=Ie$02U&DI+ z*#HU$(T?pt_vgIdI-E_ve`4hzf|Z7Al)8S`#^RR6f9TTtDL$PbPO&Y!7T&L(=8{_c z^wLOtrc*{|T2GiAHRR#gFW8iO_*_*5f2JG=*p~S0UX5mxR^0^3&475phPP~&scH4Y z$_|QBm(VsFYXi2dOTC%OTgBGYfBq%fum~CA8q6H?Osrf6;5<~C5|_U z4vR7!mcdu`ez=D9{HxB4oR|2BUM zYDD~u6NR^2JSR=$pl-wUxTFa;EER0cP@L8zKaYerF#-7z2l%UsjWV6{#659BDNcvM zB~JNAIB__cPy|K5&01TRVO_1uvOd;!Y@l^H7G_{a7H(6ECD_zvD{Shp{Wf*kbsGhHV^fdSu&vKJ z+kU|UY#Xpiwhh^8+b`L1+eYk9+s3R)DSOtnR1=h(VfkMyH(MHHL2vuMpg1+M=N==N|pPv;L1L1M`d4DvWg!YRK=fds?v{H zR_)IQRvo~$R2|5ys|{kRYJ=InYC~9+>H$m(ceeUa)~rS#n^9vJ%dVkfZZ(IqUup)i z(zSwFR4p~TP%DIWtR2dJs2#?N*9m8lbw;qubw)C$x)E%B-AGnd5y=u18unBX#RBU^ zvorO+W?k!R+2;B&tlk$oHvbDfvu+T}#y1$no;8SLBN~oocN&gigTEZhE`2$Uc{du* zPBogq+!{|{X^kf`rTrv!#C|e!Z8C)&Z4%FVHcenBnoeb&&8D#n&Awp+n@?w%%?&K9 z#SHeeMIsy9awaR$Dv8Z&HH+1Cn9VlAebssnJK1_J8{B3dd(`GzHlgi&R=(W=wx-=e z)~Wp>mfn6b3+?b7Gj{l%E$+C4wRT*}PCG7R;hlb9B|0x>tKnR}TEXsowUSNgvWk7t z^+$HJ>uMI(Z4E2!^b_0a^fT-4yq3LpUdMjw{tNSRSO z+b@Ke>eEE!G1nJGnVV&^dCb1Olgbi&LCm3E^vrfXHIiZ`x&2+EB%TMO{+dQ~|EMT< zT+QClJkFA_E^~+78&IAxhs$^L$^F1HTWCBsZM9&>AAT7h8fVQOFE}*2_@E{v9&jwKQ}iEX%_GTS?Qe?Fec{}aXbNOL=nOU(ZfjiQDb zEIzwx_m88%Uy=L-`A@L_@3YrMsh>KZCC&MNEXl7-Cv`}eXeS@@UxOt59k@%~5-WbU zf1h8ktc5C%RA?nk{`Gj(#H?-;*?Qm(_0NHISrCKYrpx`U>Hfk#Ac%tO5DCXDi}8&5 zuS3g*+XGbtkjY=OHvc+S_pYg=BUhv6ic%!>8T z9yKRNm*Q2akgUXd~kC26q^s1Uxvchz2MEs>&EbzKHHk0%nv&ZE{P191I>C zvMpUvK?xdue*2~dDSE$@Ktp0+gqjjViHOicX*t37uv2^cZV0hGAtOF9NeCx8YZo~1 z{z_to5bF$!`rk4D^7t%C1&a6H?i!ILch$HJP(SAODeOOpTBPOOpT|-)y&U>k?+pKa z4Zt%kDG1NB+yz6N^%vhnAAbF}eF0H$s=`A=B#wA8B-t*yw%50xBFdzIUO>$>HD?pq+*3O)RmuLg-ry2-2m zMhZk=)?skQ_VX;EVEOim=Lkgl-^Kw;L2i4<#wE{r5E2^P;t59yartWp3qrGMo;IR~ zZeCOE$b@G=w?X^wM)Dw@a%4CjnL4MP>j{VD+C7Y2|ERVB05(-z{jtwNK`Ga<^~CoeQdjU$Xec z2iNcjzZ`{R*ecaKgaH6qEDUWmr-TGK|8_BPM;Y}fESuq0T_8Z*FT0fFB}v-z>Kkhv0xCXFk!Hg5fbl{1gebu$7OqGfbaV2oWGmL*(ZdkvmX@c!=LU-Jl-)b@-|}(Fy=CCoV0H- zXzPee^oxsg%{}Je#P_sf1@5Nmntjj;8f=Q zw~YV{eYiB++<5+(2XcmLJ zpxv{(Vbtm8uf4(k3y3TWE@FCrBg+G_UAFoG77OaJ?*mt~?cq581qLYrQ{`nkfY`6w z9yeki7H=JhY`5{aekjP`Uk6Po@76WgAQefYBH<&RyirO}?e?j0(U+C?|7Ms5{l@I& zhhPqPHyU{I;h(RhtrvkmU9GmC`WG-rEccN9DUuk#FTi`7F%oq4N8v^ysWQJrF#ZLO zBGd$RI+U+H^Z~q!!OpK!!H8jiAzX};q5a+80Tj`~Y@*Z03N!nNY2I7ArmKwJf;{nW zD82}d{GFlX5vz{v<*p7`r2X^+vjJwy>j27{lt$U1=HuVs;i9_B-&4w*_f%BM52w zeUw!ISBKug^du$21xVYFyQOR$n-UVv)s^F{5~|b5Bp)uU3k|Qmu2sGhRxzWt*THGk z_w-P8w}Zm)XvYC>_z1wDjzRyn!1`gmCX{u-?ZDD&FS`y)J~}&_#$f!Ik3cMIJISgk ziM%^Y*Hcn4FV$)b;%g%jIptwZu1nkq|ETlUCR2K=&5Yz>pH(zrYAsb)ic~k~r}3bI zguZAF0|WN_z$Sxxzr1kzWm#pq&2#^p|Xg!*{fdjat;ULz}=N!-{lhYEJ z(SLXPcqRU_RqNZcL}?^Vj}Sl;C0Hh$fyw_CxPQMG`I<;U1PHFWatUF_Q*&l#LIY?@ zr#gDz;XS<{e%(t+v$;Ii0G!X&j#t{scjk*7!X!A_uG`w){5$rRs8UenbdD+O1A&k} zAAcxyJYg=6BqEWiy}7&xy!Gw`?(-FjkiBpO@^H zZ_Bm|vRdd}6V#Uc=_Aqnyyl;N-NY5gMQIzOR3MkYdF+I)?LuTSZ8K2vq? zls6(lX}rrq{I8wRf>R4aLCSHoR|%GaadL=IEb0-*@2eLBQVM z95(#fz3)@mdPXJqFA-GX`Ud^T0fe{G&|ep5Om-x>kaLdrgeF`#Pp`EY?VF@f{Oi~u zBDTVe9;Cl~_p(`J0;vO_(?<<4({Wd(fvZ>oj-Ptq_n*Mf$fuSq4Z?i zp7~o!01(0kw_xOkS11)_h=6~q7T4U=UiE}7e!Jvd3NM`W#5O0^|J!jMXLXSy^N?kg z6uuDwyqoK^?uMi6lgTGvAXH21P&*~J_b$c7P3S*6 zj!K1Cy-edy$+j3>RoFut@9RMZPtGN7(+oB4^fmXWb#sQg{%kh~PbN`|#tunC@Frd8 zY6-qJt%(oJT3t2U2G*T`W#@0EM%VnASSZEX-Tf@^D7RAXBSZ~}zsTaxB|xLNIg{7n z4&VRg$wciv&HhXkTR?n50aS4!e~$rVt$J_0YYw>>qqxc%$8|iDox=Mnm)23`Ir~HN-;NTDyKq&5Aw>fs}kOf@L<~ z3lP9YN2A#+W7oc(aB_MFT{qI(umL}eVJ!l)pZa=EvZ?2A9EP+Y8w|j*J(h!p=kz18 z5E0+bc5f>5B{r$+L3YA*eWRJiFMT=$nxjd81{VNj4#s2=C2uw*CLhnk>4w#Lbof3n zp9E{9qMg5+go)R}Or9>c9SWeqzDG5OsY8Tx*}0L1gww94ZIYx%LBg)=JuLVn^F5LR3Oru0NEL`1W1Z!# zEPFsiE3SuRs-O0I0|L}^YXe?w$gT2!VGLM{C7v3l!9Q1$>IDC0uLSpCNV9LWa6Hw3 zwtYktD@B7{86WH0+~4r=DE6<&9#)~<@5bj>2Xqm_3sv&Zyl(#jW{Jm2urP}%-woXM zw!Yer&)teA{I7jnkc-8*^EIzW{y?Fys*U8AyPvMGP#3>%@KF~`oJuXi85_K>znNSY z{MY`dLK`1aqgBwBcVAq${hLqL5S0NpP08=BWCJExMJsXmvgtQ+seNNz#afxMGL8i7dt)Wnlzq*j&2IP5 z5hG5?Es_B9&L2Ux!IGa4iR|Yjc=A7wE;*%=Pgkr?JSh=N29M;c$O<@y$~hcWnoOrT z4`oZn#ga(mE4Gs%69NBAkX*{}{n%F02wT;aUNujAE%7qa?WtlB_At0;>K8P=$NTl} zJf#g?YQ-PbkxyZ$6B0eUu~jqB}kQlf9V_-zP#+U|$@p{q1Z(-+69+0aLSJvx*K zs6*x*a@kcDkZ)k;V7X>%4Nec*t=6|?;X1$UWS$>>~8`+djSs8H@}KLfa=!$98lH?eAx_N!LD@N10grA z=IToaBfjA{mR>`3%A9b4c4w70vhTZf`%P>5p@mR~Akr-H9EGIqF0N=Y}Q|5pBjb zP8E3oZK>2p;w{Q6$tmlM+!Yi3K`$~2xX|bcAP=5AOAvs;G=iC+)tCd6?BleBIP~Wn zY6RJT6z4hB7!7)6936j}Ug^JrluSnC^D{8XW^MNrxGHIv~%srAW*bU|N&kSs6+kh6fJ`n#c!ifFv7)_)}ve zu*D14&C#Z7&z(CvZ!yB;6EM#j-dR@>_jw)ySZz-gUj#}yYM6{^Yi9t|<0 zT9=O>de=KIA?IoTQ9%XnN0Zw+={X0e=REOgaF9~1dU7KOonbgJEPYzSq@@gw$Dyz| zlYKbHJ;SE=YGD(A={F3Lf_(BcP{nzPbdO9L9cUA* z=L`@Uq?~xt373+{l!U@WYp&*7Hub#zjSvO*q4O!acB!|>5Sj^F2hMa=s^eNs%f+m< zr>elJN0TsHy90q9gub-Srr91p1dzO2e@o5@{8Iz$@xl*i5l`J32WXr*bV4kr3n`)d zWpu%`g`;v9IvoopH=2nhcTbgJTxK|}~YxEqglKlW+RA@Ysj z@MR~sO{yAd$#Mwn(zPcp()5>4)3X3+DEkU?cS_zrJv6J)Cw;Yq>e1N!Uxyo~64Q?v zfhTtLH9>ClT%;Gcl}1yi(+JK{8GG{0tpq8Ab@ZFG(Ry%yAYBj6bnpCT8H)Wd076k8ApIlIVcxrXc>_PoXHH z;umf`P%?Tar(EeKZQqwSVxH{RrVNN<{D)_<->fjiLb9=cS3-ypXBD;F2c%QvYBDWf zYTVK#JRB0(rjss3Q~!7==e~yH>unZ3S#s`p!yOZVPX`G)M-?Y zipCcNL8?7CNCnN(eGV~u8Na>eZ~H}Ct@s|pcup#w-X zbU{vnA*dU-rin$R(7e$+$n@9x+8P7>+#thcN4-ncaFMH{`stw;K5UA;^0^WY&4yZM z0QcCzuZVc!1EA%o4)ajE_j@z38vzNNU=U=Q-Jy7fLx>Yvsljt(cBcckh`u79fFhdv zXCWKZV*hwqCdz3S!^l{ap22?FgZNOh;EooXxP5A*Bj)K`9%dP??rS$s`oVxgtf9__ zo+Zl#D=h}DXS{IiyrQGi8>rRQogl75Rp6Z9=&^T2J?2aM_C|3I8^2J{@-R1s|3Sgt z%htzA5W_YnXM@BGrhfS(YZWg6PCdrT z6NEyTsfLzGNFRX1jy@(GCEF0@?qt+|G@!t1&9Z}DI!2q{E|A)mcUsMal)~E}Yjs?p zI0aq@Tcqj&`-kXV`Q-CH5KzQ?LTv9(MZjj{K>;5FjJ2%>=rMPb99%7D#xGzc2!Yr{ z>R6FdbfO?0$xbcq)AE;wL{LD~SBMe%hy8iV5+I#fKan5ztn{4YXwl!()A)Vqa9v=_ zNu>9l*LMvyZHmjdyt|fI)69+&UeEz^OT-U1Gv16-%8;9+X@;f~7+2H~mdhjy_N(6DBj??LHSP)6tC{Z3MR5a<33(FDRQI1-#!PNjtDK7Q$%p9I zV{>?cx_B=L6RCz-$#J9Ow~ zcxm9izp@S+;`~zw*dWZ3E1dXt+>~O-MR%YlKuB~DkJpRUKViG0c)y(q?l*>fTxn9_2IOSOx}vA z!!HAfT@`NCLP%Mxv(3ye#y4EXq9ym&M2Q zvhfeVdQ06l#iM|BrS!^{Bp^7#xQOrzFs)Sbl-g=^{sTUm;1FAk!+jr6y9hMfV4VJ1 z0u%cJemCIruSq_5v)X2QZu1cK!6$mWo+RYmOeOIGZeN?fS5xRQ zX!t9WPOLa|%bEiihs3W^r2zA*mYO#dH@Dc`(pJ5?ek$yBkAfedNYp=a`VOwKJ_(A4 zwpGfmhc)mYAU-(}o!iQH7&BAC1k@(kwg|c{%=d)QePgv7<}-~RzJ%jxo+(HMmbA{8 z#vKz%i~`Ve9Fzv}PN5fl`8$C%<CFkCTeB2@B&)^BFuU@9hux)!P~& zjvOKpFgPy;JiJIC&8G$6OLAYGN`7=($(+CXvJIMi>|_;$_~01yS-=cZ^-wS`1o^pQ z2E2V1A`*i>8Wi+p`q+Ga4^dH*5L4@{@Rb9x+cuI`-+k!+0%ct6tT29ud0{-h-6bj9 zoqq&9>p=!LtHT}NGJ&DTQS|uGrS7$lQ1aZ;0x~(88it7V{(%L%4>d{T_2+d7z|lUL zUP24D*i|A=bsOJM_SiLwF9AEM*ode=#*=NtI^wF?hwucZ`g-{nJ z5l2O??mhFeQzlgcQ7XefSFkH|G;UBfl{4~!#l+vdU=OwadJiS`iDQ{LI!xy~aO+x7 z^t7twmAr(eArq>?AEWwdUk(~*l-43$>!D8|?dy0uJx+w9n<|5Y%ES_KHwka^(BIwo zDge3CvrPJo(+-B4+l{sX%Ap6i?YJbX%|08gMW++JW z#Z%Q1da%a+%0YWYno?xOvW8Woz)?D~uPlbq9(Nz~i6s|)GUjo@>}^FeCg`c8`$M0r zd6VSoTt3nANpU;VvxA8F&|9QIa_vXNxc(PXFZ3}%*|4bl@}K30$+N58SIIOmCYqs*Mdr>zV$DBLjCSI%M-@+Pav&l*T2z8gdQ(fm?n zz}Zz+2w~E3FaW51_rHyG{yKWZbM#H^i=ws4>7O8+_S|PsMxt+CiC_ z$_UYTG3w~Fgj3zRt8S2>MoX4JtrJTA-F)_zdhroX`=fq;(G1j4@}lE2{Ol7x?)6}= zdvfe?4Ig{I(lYr4;gvYC93ZF26XIIoG;(*_d(eKfzS-7Cgh@8I$+jxA0t7fK&xdSL zJKl}F-HRE744V6KkQndKDz-Z*UV@SB|U=G=a$ zk1MJ90}7C3#`m?LFUEPc-(%m)bV(0HmFs|0 zj_lmAzPn&)L-odxn=r3wQ(6Ein#iKS>b4r$w!KaKitaLQ{CTaLv4pshaq|h7eq^*L zuOf8O>FZp%wJK=p*RQOgYoqmH&x1+LU3~$#NQZzXQ+;-M$)EilWbTo#D#-8}{54X);gD+Yq5AztBUdXsOq zqnV*r*@Vka6-tz#;y9|kVlsopmSD-yiO2(c#=U>nRrm-ww>93a(u?GB2)tLhnfs-FoH9R9~$3#^oYRvh&b z{se-bQJDw>FEK*=TusJCF(Vi(r)y;=hd|>^4Eu<}#@)RcG%s+j%^Ka?zRPPm{f6*+ z_29YnBDO~QzLR04SOU4&OHGMg)Z>^-L4VY@|DAh^aO-gB2F2`{(nlX0eZodre*VnG zU@!Sv$7CHWJP?SB-CacFc2dOr-G3CrOZmmd;kM8A&_|7bVHr$UXloJi^I5~ENJaz& zpBy^y0%5$*%SH9P!ID#abHr0w4gzMV)!8ix_a2rhGft9)AkKJm^s75$7w=!=3XbU& zXBNiWQ#0aJVEtzX;5AxNn-nU^4{rCum_9%C#M?6nFCEh;Pz8JEyW^lf6nYz@2mYQw zQi1a%ml6^}=)9r8QnNMh3Z@6Yw0pp)+7@2~M7fhHNIw zIr0o8+DHzacl3XN>dQmDdGJ~~WOGx2ie@3SrwOAG&dQ4R=Gz{-@qa*{^hlKl+!F1Q z$`Sr-d*@-Of|O#@s0W@V&2|35>T_PyvGoD22Mf{Iwer|svonQTrbSsiq5r%EiimIM zK6?;?{s;K4%k%7T1#8;yR0F%*BMvW3N)T+xX9P&$j0Gnck%hADCfr2${;cc1zS%wt zRK&W4cs9^p%%{(#hRzyCI}Qb?0skCyCCo_3FQBj?GQH#U{ZZm5tBM2@BsW8`|Bpbj z)1+8p0}NY9d^(zPVmx&;%Y4P2XejKGXvx^W>7qJ-@D6!#rd>66cW^=_PF)f-K|`w|2eDjTYU7N=rLo=}*K4y@O_<~4 z>rYlU4lLjtML);9A+qZqk-cble19iamJ`Y%wm<@lS;iF{${cqL-+DacjdnA>V8JMF zG#sFj*Ql8sWfktH7ucswk+?#JWA6! zW@OyYNYb`b^k`$chJM3IwCkxCXMd8PW=$q|MD|y|m#C)4;NK-tgUI@{qnV`MN}YO@ zSCrXR{dxe~Q@epnhax-9@h*G4PRZD#{gqJqHH^Bz;jUeQ3hd z?Z!^bp|P8U^piMDy$zLZz&3J)-fwxwIH^UTWt)x%$0>5@<_E{4)g<{vKf|l(o;JuA zE{mcs86+w(1=}H@b1Y+A!uy(b3D}Dzk2QS0z5+mdzB16_O=NDHG!5TU>>V|yLWHb8 zDPi2_sk=1)4M<(x73HZ`bG zH8uDk7(!t^w)SLo#%F0tm8B($C$v#c6{b$jbwEH~#s285Yl-cPDmtDNw|x}BD6eoL z$d#Z*X<~vmR5L2jP_Gy~Yd=RT5$`)b>IL0XT*93};5lejHri^XiN|w_mWYbEp^#vH z3R%`Da(@~*TDQE0d)G#)b+3f<)vYn!kR22|=LuSwXs(<%h~$b`I;gOc^2wNVlh0DA%1nZ87ZhGR4(l~92N@jhwM0w07&1zM zx9gNCQ)cc3vLHH;0aed#P^} ztc8aT!O^o-r;nnO%Rf~HA91wd%);u&A&92s$;etX0S8Tif{}&aumwG&e-MR5qR*bU`!6!*DT;Z7myp{G_`z@ub<6 zwPvy-#al$B)F)=>dgT1*+M9&Qp)5^;vaGQJC*TRn=F#a+Dw=+b7W(S~Pixrpw`goh z9-w`J>I-)U;UrFuP6->CjSj)DUHC#f<5FlHFbGS0F_D&hR-dWcOG5}5_Ki;8dUES`Fc~L@3-820$nktyknk< z5(G4`+-Ty%x!pWQ^Zs`?F+p3%!~5?^4>UyBH*RG99Nvh?x=QfCDe=TayIfa&N~_jz zvJA7E14>yh@rW#58GCks?{Pd9YEq_H%xhJFG|qo7BYeae`zyxgo4LIr2UXxS+1uP+ zv3G}gXF6qwoZ4Q62sFf1Rk1xw{aTeIvq0QEiNQe?+3~d;ls}%k05H)p7hZ1w{BKY> zmy#Wo&pXtgf_Lqt^Nb^0LNQZ_+kH>tp%m7J-HkQbklN#FWyC~W=b|VA6QSVZ3np_s z*?8;g(iPpFPMaQMAq!I+%@RGE|HBPESxeQn)#{%)Kvc8x_D+bF$_Rl(#PHOfO=WkD z->@fQ0>ZQ*4FISzNTj-@tKY>kd4Q7Rm-`vC+c&VME zoc2FrGnZR$Zr8Hd^qB5GdW-47Zae0kdg~*1BZ>XG4FI#Q+*WzOdgNQW2%6k7g57^v z+f_*Q46`*$zQInB;}Gc*IkHYZ^IX|Bsz*_@30L1}b!q%kRYHz`s1 z2#axZKW(bXDvkQfNWP)rsm<_n!YjP%ciJhAVq82KUQ@IxJ`AjSuAcq89lu!Bevto1 ze84OYABS=Yo4N3KISbBA)z)K_aTqD=VWrv5zEZKecUc2%8Z^M0MRk9Xq7ljcbJN9N z^6FT!_1ZF8S~`0m?JJc>)el`EvoV{4{ddAxxWTJetcBUk(Y!Q*xk$arJ9UB2gM!>4 zSlKJnD3$|E5IT>sqR0!QIsV)FEEhdPk}9`yswQ_O@7mhr0TFS5-{;m@%wsetnEd|Q z^9Ze$YQhkufmq?+R$x(?t+x&<**#TeZTw9ohObY!2TZcLbZDi{1YpXtxPdO6x%6%7 zOK*o7QGeT5?adiGDJG#(gTve!A9_#vyJKwH-GkB{Ew_n9q|6JUn@FRXdQ_b<8&H#e z&DthhhOiq4FQ1ONeQ~XX%N*WW~^d0(LW47Xv-`zf~F`nOn37;8$w^b0sSRL zER9wbn6ktcHTnUVVk~K`%RrNz3Pkb7ug+xLcV+xKKYVwD+s@8Fz+T!?`jEy-d|&XS zz0z)G?&mk6*xyhgs$%iRB~@RT>YkzaJ|_&7L~H35SBdL&o$G1~ja(rFh1gqAat?N* z(fMuIP;$#O&PJ~~HxC8tpbmOf1xP*NC@#bwrJHz~QG1Et!Gzf1AO_s8{SYL0k3r~j z$I!eU5}KaaM)%nGX&;dM-QA>I7(HbOdKJ#}N{)bsEOW07bDAGnP; zYs%CeuEu^_;m(+WtrGRy`I6Kaf>Q1Fr20viwyr{p;F7q7BK-)(ivJ+&Um(n{Op>FHC*6(J!<* zfM=qp4(xGAnRFu#E9Mnr1ZDen3!ZnVkE%J8{$cMay(e7p8W)BYuGYfC3 Q4p~VY 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

    kB7$}+s!6Q>pJN2z_@t!K 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

    $k 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�C6IWBIELoAeh3I8p@ujio3qL8#O_hu9|hGrBQuG=Z2h1&1j$>3P3m_Zdul4 z6wU3(7j&OfQIA?lK1;OGZjOPVax$jH<1bM!C0l_XXBV)9M8*wu`G^tV+0 z`^UH?AFryAqNVo;#KuL6j%p#RgLyXvkjNy77Q3`H zqxm!rOEA&pxn*>{iS-@zvC>Xm>5!#%R!ky(H^VId7Y#Iu_EUF$yrZEau zP4*ef#Z?I2TZQABF8t`04hj+xlHUR->SaRX(orbr)BiJVfLsXCCT^(M^NNS{4_>)w zF`uI|{#k@H(9-lt&b&+IEM+!~)IuI^Z_WFujJ5B4)UV4xkuUZ$%cDz?S$)F?7Ek2w zzJa(NI$v)f0Vki3;B|!ppF=|ddlOOde=YYWuf#%%MS`y0w@`ZtUK%F;cn_>X#!XjC z$NP@9r#C+CZ3e=uo<+1^+g~WH)9QkSboy6@9(ul`pr9N%5x}vaP~tPsJzM0L?w)qM zwRgoDl4Pc#MUEqaSN;j%siPlh5)l~^ox*kNnst{?vlIO9FR)dQ19JPi zb%U6CN<412co9+FJ^X967ENL;+L;S6GmauqOkD(yF`_sD@x2vqMJjgHrQ?`Z@X(3T z*`p@SRZ`!@sD>2OLIq&5OP`3H%}tfsHqr1rNBTX7-3W^RHx;*Ox2aE&1cLez_#d_?9&DvG{V+6!<0P_J>sd~1*n>EtqQx^6q{0wO##!9a#N#>T4B{GCwH zbMFeL8}V9cV}>m~0lQv2IC1W(&tFv2COh)h%cS0p_Eo^rWiM|HG(93>;HQ?VSBHLM zgbQHp=6_f28jD?0PN^TV7$~vb!5-S8B(;EC;o2*L&56~>!F;yRTEwJo&@KD%UF#Xy zG~(cT(k>KjRM$aeXp0e+r;Z}Hfwfu8_pOY~_(N;XbehhVkhW4tWa+v9xiXjiHD32mQ7F~KKtN;9=94|O@J!}DhOKkZ@-4hqnw zgCdgfoVnF%{t!HopmH&Ip@sI=k^ra8fTd8cnwLtOAYiCH;Es`cBUwCuJeAb@6qu1ZxwXRM z%ti9rG&m6UezI62dN8LvI`bwzt+$!g!_qPcR3aFT3AsU?48HxOjZ#?;8VS~4iupbL z)h;Jg|2u3?%jS)Y7_#2nr@vlQMio*&`C8?qfH$W`BLCI0bkqV9CdJtYlQo=d+;<=P z?(iVMI>ojKrdgBKjb3V{GkQ#;7<=U8EXT!+lcPSP(%}q`WnG6%s6u7LC9|z&Y>i6AJkP3rD$c(UA++gU-wTtJ^JJ3+DFU|kRe{9U@uvH0wZ;s4veShUvh^e|SxkSBt%`nrOmoIPwl8qPj( z3{*WXc^v+XlC&@JyWnaE&C0EL>%6;PZh^$JZ(S@GJSeV@Y`h<~T?e2SSbP6c^2yo~ zHtMvqpQM#_vcPD1??=8cB)KRubPJW&=6OkA{y0Ngvt$iF_@E8|000000P#;tB;XG& zR9qkz0k_QJVQ+Y6U?LWOPXROTzt&&Ac^r%@WcZk1OKm^)dIhAmo)~r?SF*mUm=zAQ zm#L#!+LhlJsln8!QQ_O#>IS?HB@zZ3eJPe1FzKLp(oR+`)~9Fy#;hQ8oDf>I#e`j9WE?j={j7|sk7(|J5M(a` z?F3Rd&`0#S%^FbDQWFuV#>WFvd+!IM;_$fUuJ*<{*XxF^0{n_iqtfr4fhaQIW4AI5 zx|Man($_dBJ^&;2v`V|20)F z5xQ082qzy!3Izthy9F&D$!y-$cZ;Y+EzASfYqOiDtA%Ug*tjhecV;uFKU+nO10n+ab)_Wy8z+VAgnaNF9WU;=ZmfBa( zyKDr&*Yr!N=(?F)`ibXm_Hw9ldGo{c%f6X-Zo#?QouHHxHiA}9b<2d#a4Gd{9CGd) zXa+>C-BDtGqL)iBg2hVJ`*^da^I(bsXn9ZGa~q$?y(Lf!Nj0V~)h6akv@!~jA8eb( z&##6yr{O_$u@Cp;`@D{jx7ZmF z{;yLD{SX5sz<$y2%Iu3TlGo}USl>I;fS;eLOf-gclpSM_ZA}#_)%0DM?Wpe;W2=w{ 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�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 l - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/LICENSE_WHEATLEY.TXT b/LICENSE_WHEATLEY.TXT new file mode 100644 index 000000000..8b0ce2498 --- /dev/null +++ b/LICENSE_WHEATLEY.TXT @@ -0,0 +1,30 @@ ++ + + This Software is released under the "Simplified BSD License" + + + +Copyright 2010 Moe Wheatley. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY Moe Wheatley ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL Moe Wheatley OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation +are those of the authors and should not be interpreted as representing +official policies, either expressed or implied, of Moe Wheatley. diff --git a/MAP65_Beta_Release.docx b/MAP65_Beta_Release.docx new file mode 100644 index 0000000000000000000000000000000000000000..acdc027735b80ce5530632bc1abc9b12e2a51c59 GIT binary patch literal 23951 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 #Some definitions for Compaq Visual Fortran -gcc = cl -FC = df -#To do bounds checking (with useless reports) put "/check:all" in the -# --opt= line below (line 56, more or less ...) -#FFLAGS = /traceback /check:all -FFLAGS = /traceback /fast /nologo /check:all - -all: MAP65.EXE plrs.exe - -OBJS2C = init_rs.o encode_rs.o decode_rs.o jtaudio.o plrr_subs.o - -F2PYONLY = ftn_init ftn_quit audio_init getfile azdist0 astro0 spec - -SRCS2F90 = a2d.f90 astro0.f90 audio_init.f90 azdist0.f90 \ - decode1.f90 ftn_init.f90 ftn_quit.f90 wsjtgen.f90 \ - runqqq.f90 fivehz.f90 flushqqq.f90 \ - rfile.f90 rfile3a.f90 spec.f90 map65a.F90 display.F90 \ - getfile.f90 getfile2.f90 recvpkt.f90 savetf2.F90 \ - symspec.f90 sec_midn.F90 getdphi.f90 thcvf.f90 - -SRCSCOM = datcom.f90 gcom1.f90 gcom2.f90 gcom3.f90 gcom4.f90 spcom.f90 - -SRCS2F77 = indexx.f gen65.f chkmsg.f \ - gentone.f gencwid.f set.f db.f pctile.f sort.f ssort.f \ - avemsg65.f demod64a.f encode65.f extract.f four2a.f getpfx1.f \ - getpfx2.f graycode.f grid2k.f interleave63.f k2grid.f \ - deep65.f morse.f nchar.f packcall.f packgrid.f \ - packmsg.f packtext.f setup65.f unpackcall.f unpackgrid.f \ - unpackmsg.f unpacktext.f astro.f azdist.f coord.f dcoord.f \ - deg2grid.f dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f \ - moon2.f MoonDop.f sun.f toxyz.f pfxdump.f \ - ccf65.f trimlist.f chkhist.f decode1a.f \ - filbig.f fil6521.f twkfreq.f decode65b.f \ - afc65b.f fchisq.f ccf2.f - -SRCS2C = ptt.c igray.c wrapkarn.c rfile3.c - -MAP65.EXE: Audio.pyd map65.spec - python c:\python23\installer\Build.py map65.spec - -plrs.exe: plrs.f90 sec_midn.F90 plrs_subs_win.c - cl /c /Foplrs_subs.obj plrs_subs_win.c - df /fpp /define:CVF plrs.f90 sec_midn.F90 plrs_subs.obj \ - /link ws2_32.lib - -Audio.pyd: $(OBJS2C) $(SRCS2F90) $(SRCS2F77) $(SRCS2C) $(SRCSCOM) - python f2py.py -c \ - --quiet --"fcompiler=compaqv" \ - --opt="/nologo /traceback /warn:errors /fast /fpp /define:CVF \ - /define:USE_PORTAUDIO" \ - $(OBJS2C) \ - -lwinmm -lws2_32 -lpa -lfftw3single \ - -m Audio \ - only: $(F2PYONLY) : \ - $(SRCS2F90) $(SRCS2F77) $(SRCS2C) - -map65.spec: map65.py astro.py g.py options.py palettes.py smeter.py specjt.py - python c:\python23\installer\makespec.py --icon wsjt.ico \ - --tk --onefile map65.py - -jtaudio.o: jtaudio.c - $(CC) /nologo /c /DWin32 /Fojtaudio.o jtaudio.c - -init_rs.obj: init_rs.c - $(CC) /nologo /c /DBIGSYM=1 init_rs.c - -init_rs.o: init_rs.c - $(CC) /nologo /c /DBIGSYM=1 /Foinit_rs.o init_rs.c - -encode_rs.obj: encode_rs.c - $(CC) /nologo /c /DBIGSYM=1 encode_rs.c - -encode_rs.o: encode_rs.c - $(CC) /nologo /c /DBIGSYM=1 /Foencode_rs.o encode_rs.c - -decode_rs.obj: decode_rs.c - $(CC) /nologo /c /DBIGSYM=1 decode_rs.c - -decode_rs.o: decode_rs.c - $(CC) /nologo /c /DBIGSYM=1 /Ox /Zd /Fodecode_rs.o decode_rs.c - -wrapkarn.obj: wrapkarn.c - $(CC) /nologo /c /DCVF=1 wrapkarn.c - -igray.obj: igray.c - $(CC) /nologo /c /DCVF=1 igray.c - -plrr_subs.o: plrr_subs_win.c - $(CC) /nologo /c plrr_subs_win.c /Foplrr_subs.o - -.PHONY : clean - -clean: - -del *.o *.obj MAP65.EXE Audio.pyd map65.spec diff --git a/Makefile.MinGW b/Makefile.MinGW deleted file mode 100644 index 2eb667a53..000000000 --- a/Makefile.MinGW +++ /dev/null @@ -1,100 +0,0 @@ -#Makefile to compile MAP65.EXE for Windows. -#!include #Some definitions for Compaq Visual Fortran -CC = /mingw/bin/gcc -FC = g95 -CFLAGS = -I. -fPIC -FFLAGS = -Wall -Wno-precision-loss -fbounds-check -fPIC -fno-second-underscore - -.f.o: - ${FC} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.f=.o} $< - -all: MAP65.EXE - -OBJC1 = init_rs.o encode_rs.o decode_rs.o jtaudio.o plrr_subs.o deep65.o - -F2PYONLY = ftn_init ftn_quit audio_init getfile azdist0 astro0 spec - -SRCF90 = a2d.f90 astro0.f90 audio_init.f90 azdist0.f90 \ - decode1.f90 ftn_init.f90 ftn_quit.f90 wsjtgen.f90 \ - runqqq.f90 fivehz.f90 flushqqq.f90 \ - rfile.f90 rfile3a.f90 spec.f90 map65a.f90 display.f90 \ - getfile.f90 getfile2.f90 recvpkt.f90 savetf2.f90 \ - symspec.f90 sec_midn.f90 getdphi.f90 thnix.f90 msgtrim.f90 - -SRCCOM = datcom.f90 gcom1.f90 gcom2.f90 gcom3.f90 gcom4.f90 spcom.f90 - -SRCF77 = indexx.f gen65.f chkmsg.f \ - gentone.f gencwid.f set.f db.f pctile.f sort.f ssort.f \ - avemsg65.f demod64a.f encode65.f extract.f getpfx1.f \ - getpfx2.f graycode.f grid2k.f interleave63.f k2grid.f \ - morse.f nchar.f packcall.f packgrid.f \ - packmsg.f packtext.f setup65.f unpackcall.f unpackgrid.f \ - unpackmsg.f unpacktext.f astro.f azdist.f coord.f dcoord.f \ - deg2grid.f dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f \ - moon2.f MoonDop.f sun.f toxyz.f pfxdump.f \ - ccf65.f trimlist.f chkhist.f decode1a.f f77_wisdom.f \ - fil6521.f twkfreq.f decode65b.f afc65b.f fchisq.f ccf2.f - -SRC2F77 = four2a.f filbig.f - -SRCS2C = ptt.c igray.c wrapkarn.c cutil.c start_portaudio.c fthread.c - -OBJF77 = ${SRCF77:.f=.o} - -MAP65.EXE: Audio.pyd map65.spec - c:/python25/python c:/python25/pyinstaller-1.3/Build.py map65.spec - -Audio.pyd: $(OBJC1) $(OBJF77) $(SRCF90) $(SRC2F77) $(SRCS2C) $(SRCCOM) Makefile - c:/Python25/python C:/python25/scripts/f2py.py -c -I. \ - --quiet --fcompiler=g95 \ - --opt="-fbounds-check -O0 -cpp" \ - --compiler=mingw32 \ - $(OBJC1) $(OBJF77) libfftw3f_win.a \ - libportaudio.a libpthreadGC2.a -lwinmm -lws2_32 \ - -m Audio \ - only: $(F2PYONLY) : \ - $(SRCF90) $(SRC2F77) $(SRCS2C) - -map65.spec: map65.py astro.py g.py options.py palettes.py smeter.py specjt.py - C:/Python25/python C:/Python25/pyinstaller-1.3/makespec.py \ - --icon wsjt.ico --tk --onefile map65.py - -deep65.o: deep65.f - $(FC) -c -O0 -Wall -fPIC -fno-second-underscore deep65.f - -jtaudio.o: jtaudio.c - $(CC) -c -DWin32 -o jtaudio.o jtaudio.c - -init_rs.obj: init_rs.c - $(CC) -c -DBIGSYM=1 init_rs.c - -init_rs.o: init_rs.c - $(CC) -c -DBIGSYM=1 -o init_rs.o init_rs.c - -encode_rs.obj: encode_rs.c - $(CC) -c -DBIGSYM=1 encode_rs.c - -encode_rs.o: encode_rs.c - $(CC) -c -DBIGSYM=1 -o encode_rs.o encode_rs.c - -decode_rs.obj: decode_rs.c - $(CC) -c -DBIGSYM=1 decode_rs.c - -decode_rs.o: decode_rs.c - $(CC) -c -DBIGSYM=1 -o decode_rs.o decode_rs.c - -wrapkarn.obj: wrapkarn.c - $(CC) -c -DWin32=1 wrapkarn.c - -igray.obj: igray.c - $(CC) -c -DWin32=1 igray.c - -plrr_subs.o: plrr_subs_win.c - $(CC) -c plrr_subs_win.c -o plrr_subs.o - -.PHONY : clean - -clean: - rm -f *.o Audio.pyd map65.spec MAP65.EXE - - diff --git a/Makefile.ifort b/Makefile.ifort deleted file mode 100644 index a53d214dd..000000000 --- a/Makefile.ifort +++ /dev/null @@ -1,112 +0,0 @@ -MV ?= mv -CC ?= gcc -MKDIR ?= mkdir -INSTALL= install -FFLAGS = -O2 -C -threads -reentrancy threaded -traceback -static -LDFLAGS = -L/usr/lib -L/usr/local/lib -LIBS = -lpthread -lportaudio -lsamplerate -lfftw3f -CPPFLAGS = -I/usr/include -I/usr/local/include -CFLAGS = -Wall -O0 -g -PREFIX = /usr/local/ -# Map65 specific C flags -CFLAGS += -DBIGSYM=1 -fPIC -DEFS = -DPACKAGE_NAME=\"map65\" -DPACKAGE_TARNAME=\"map65\" -DPACKAGE_VERSION=\"0.9\" -DPACKAGE_STRING=\"map65\ 0.9\" -DPACKAGE_BUGREPORT=\"\" -DFC_LIB_PATH=\"/opt/g95-install/bin/../lib/gcc-lib/i686-pc-linux-gnu/4.1.3//\" -DFC=\"g95\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_ERRNO_H=1 -DHAVE_SYS_SYSLOG_H=1 -DHAVE_STDDEF_H=1 -DHAVE_LIBGEN_H=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_WAIT_H=1 -DHAVE_STDIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_LINUX_PPDEV_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1 -DTIME_WITH_SYS_TIME=1 -DSTRING_WITH_STRINGS=1 -DNDEBUG=1 -DHAS_SAMPLERATE_H=1 -DHAS_PORTAUDIO=1 -DHAS_PORTAUDIO_H=1 -DHAS_PORTAUDIO_LIB=1 -DHAS_FFTW3_H=1 -DHAS_FFTW3FLIBS=1 -CFLAGS += ${DEFS} -CPPFLAGS += ${DEFS} -I. - -# MAP65 specific Fortran flags -# gfortran has no -Wno-precission-loss -#FFLAGS += -Wall -fbounds-check -fno-second-underscore -fPIC#FFLAGS += -Wall -Wno-precision-loss -fbounds-check -fno-second-underscore -fPIC -#FFLAGS += -Wall -fbounds-check -fno-second-underscore -ffixed-line-length-none -fPIC -#FFLAGS += -Wall -fbounds-check -fno-second-underscore -fPIC -#FFLAGS += -cpp -fno-second-underscore - -all: Audio.so plrs plrr - -# The default rules -.c.o: - ${CC} ${CPPFLAGS} ${CFLAGS} -c -o ${<:.c=.o} $< - -.f.o: - ${FC} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.f=.o} $< - -.F90.o: - ${FC} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.F90=.o} $< - -OS=Linux -FC=ifort -FCV=intel -COMPILER += /opt/g95-install/bin/../lib/gcc-lib/i686-pc-linux-gnu/4.1.3// - -LDFLAGS += -L${COMPILER} - -PYTHON ?= /usr/bin/python -RM ?= /bin/rm -F2PY = /usr/bin/f2py - -### - -OBJS2C = init_rs.o encode_rs.o decode_rs.o plrr_subs.o loc.o deep65.o - -F2PYONLY = ftn_init ftn_quit audio_init getfile azdist0 astro0 spec - -SRCS2F90 = astro0.F90 audio_init.F90 azdist0.f90 \ - decode1.F90 ftn_init.F90 ftn_quit.f90 wsjtgen.F90 \ - runqqq.F90 fivehz.F90 flushqqq.F90 \ - rfile.f90 rfile3a.F90 spec.f90 map65a.F90 display.F90 \ - getfile.F90 getfile2.F90 recvpkt.F90 savetf2.F90 \ - symspec.f90 sec_midn.F90 getdphi.f90 thnix.f90 - -SRCS2F77 = indexx.f gen65.f chkmsg.f \ - gentone.f gencwid.f set.f db.f pctile.f sort.f ssort.f \ - avemsg65.f demod64a.f encode65.f extract.f four2a.f getpfx1.f \ - getpfx2.f graycode.f grid2k.f interleave63.f k2grid.f \ - morse.f nchar.f packcall.f packgrid.f \ - packmsg.f packtext.f setup65.f unpackcall.f unpackgrid.f \ - unpackmsg.f unpacktext.f astro.f azdist.f coord.f dcoord.f \ - deg2grid.f dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f \ - moon2.f MoonDop.f sun.f toxyz.f pfxdump.f \ - ccf65.f trimlist.f chkhist.f decode1a.f \ - filbig.f fil6521.f twkfreq.f decode65b.f \ - afc65b.f fchisq.f ccf2.f rfile2.f - -OBJS2F77 = ${SRCS2F77:.f=.o} - -SRCS3C = ptt_unix.c igray.c wrapkarn.c cutil.c fthread.c -OBJS3C = ${SRCS3C:.c=.o} - -AUDIOSRCS = a2d.f90 jtaudio.c start_portaudio.c - -deep65.o: deep65.F - $(FC) -c -O0 -Wall -fno-second-underscore -fPIC deep65.F - -Audio.so: $(OBJS2C) $(OBJS3C) $(OBJS2F77) $(SRCS2F90) $(AUDIOSRCS) - ${F2PY} -c --quiet --opt="-O ${CFLAGS} \ - ${FFLAGS}" $(OBJS2C) $(OBJS2F77) -m Audio \ - --f77exec=${FC} --f90exec=${FC} ${CPPFLAGS} ${LDFLAGS} ${LIBS} \ - only: $(F2PYONLY) \ - : $(SRCS2F90) \ - ${SRCS3C} ${AUDIOSRCS} - - -init_rs_int.o: init_rs.c - $(CC) $(CFLAGS) -c -DBIGSYM=1 -o init_rs_int.o init_rs.c -encode_rs_int.o: encode_rs.c - $(CC) $(CFLAGS) -c -DBIGSYM=1 -o encode_rs_int.o encode_rs.c -decode_rs_int.o: decode_rs.c - $(CC) $(CFLAGS) -c -DBIGSYM=1 -o decode_rs_int.o decode_rs.c - -plrr: plrr.F90 sec_midn.F90 plrr_subs.c cutil.c - $(CC) -c plrs_subs.c cutil.c - $(FC) -o plrr -fno-second-underscore plrr.F90 sec_midn.F90 plrr_subs.o cutil.o - -plrs: plrs.F90 sec_midn.F90 plrs_subs.c cutil.c - $(CC) -c plrs_subs.c cutil.c - $(FC) -o plrs -fno-second-underscore plrs.F90 sec_midn.F90 plrs_subs.o cutil.o - -.PHONY : clean -clean: - ${RM} -f *.o *.pyc *.so *~ map65 map65.spec - -distclean: clean - ${RM} -f config.log config.status Makefile diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index 16bdf431b..000000000 --- a/Makefile.in +++ /dev/null @@ -1,112 +0,0 @@ -MV ?= mv -CC ?= @CC@ -MKDIR ?= mkdir -INSTALL= install -FFLAGS = @FFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -CPPFLAGS = @CPPFLAGS@ -CFLAGS = @CFLAGS@ -PREFIX = @PREFIX@ -# Map65 specific C flags -CFLAGS += -DBIGSYM=1 -fPIC -DEFS = @DEFS@ -CFLAGS += ${DEFS} -CPPFLAGS += ${DEFS} -I. - -# MAP65 specific Fortran flags -# gfortran has no -Wno-precission-loss -#FFLAGS += -Wall -fbounds-check -fno-second-underscore -fPIC#FFLAGS += -Wall -Wno-precision-loss -fbounds-check -fno-second-underscore -fPIC -#FFLAGS += -Wall -fbounds-check -fno-second-underscore -ffixed-line-length-none -fPIC -#FFLAGS += -Wall -fbounds-check -fno-second-underscore -fPIC -#FFLAGS += -cpp -fno-second-underscore - -all: Audio.so plrs plrr - -# The default rules -.c.o: - ${CC} ${CPPFLAGS} ${CFLAGS} -c -o ${<:.c=.o} $< - -.f.o: - ${FC} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.f=.o} $< - -.F90.o: - ${FC} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.F90=.o} $< - -OS=@OS@ -FC=@FC@ -FCV=@FCV@ -COMPILER += @FC_LIB_PATH@ - -LDFLAGS += -L${COMPILER} - -PYTHON ?= @PYTHON@ -RM ?= @RM@ -F2PY = @F2PY@ - -### - -OBJS2C = init_rs.o encode_rs.o decode_rs.o plrr_subs.o loc.o deep65.o - -F2PYONLY = ftn_init ftn_quit audio_init getfile azdist0 astro0 spec - -SRCS2F90 = astro0.F90 audio_init.F90 azdist0.f90 \ - decode1.F90 ftn_init.F90 ftn_quit.f90 wsjtgen.F90 \ - runqqq.F90 fivehz.F90 flushqqq.F90 \ - rfile.f90 rfile3a.F90 spec.f90 map65a.F90 display.F90 \ - getfile.F90 getfile2.F90 recvpkt.F90 savetf2.F90 \ - symspec.f90 sec_midn.F90 getdphi.f90 thnix.f90 - -SRCS2F77 = indexx.f gen65.f chkmsg.f \ - gentone.f gencwid.f set.f db.f pctile.f sort.f ssort.f \ - avemsg65.f demod64a.f encode65.f extract.f four2a.f getpfx1.f \ - getpfx2.f graycode.f grid2k.f interleave63.f k2grid.f \ - morse.f nchar.f packcall.f packgrid.f \ - packmsg.f packtext.f setup65.f unpackcall.f unpackgrid.f \ - unpackmsg.f unpacktext.f astro.f azdist.f coord.f dcoord.f \ - deg2grid.f dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f \ - moon2.f MoonDop.f sun.f toxyz.f pfxdump.f f77_wisdom.f \ - ccf65.f trimlist.f chkhist.f decode1a.f \ - filbig.f fil6521.f twkfreq.f decode65b.f \ - afc65b.f fchisq.f ccf2.f rfile2.f - -OBJS2F77 = ${SRCS2F77:.f=.o} - -SRCS3C = ptt_unix.c igray.c wrapkarn.c cutil.c fthread.c -OBJS3C = ${SRCS3C:.c=.o} - -AUDIOSRCS = a2d.f90 jtaudio.c start_portaudio.c - -deep65.o: deep65.F - $(FC) -c -O0 -Wall -fno-second-underscore -fPIC deep65.F - -Audio.so: $(OBJS2C) $(OBJS3C) $(OBJS2F77) $(SRCS2F90) $(AUDIOSRCS) - ${F2PY} -c --quiet --noopt --debug \ - --f77flags="${FFLAGS}" --f90flags="${FFLAGS}" \ - $(OBJS2C) $(OBJS2F77) -m Audio \ - --fcompiler=${FCV} --f77exec=${FC} --f90exec=${FC} \ - ${CPPFLAGS} ${LDFLAGS} ${LIBS} \ - only: $(F2PYONLY) : $(SRCS2F90) \ - ${SRCS3C} ${AUDIOSRCS} - -init_rs_int.o: init_rs.c - $(CC) $(CFLAGS) -c -DBIGSYM=1 -o init_rs_int.o init_rs.c -encode_rs_int.o: encode_rs.c - $(CC) $(CFLAGS) -c -DBIGSYM=1 -o encode_rs_int.o encode_rs.c -decode_rs_int.o: decode_rs.c - $(CC) $(CFLAGS) -c -DBIGSYM=1 -o decode_rs_int.o decode_rs.c - -plrr: plrr.F90 sec_midn.F90 plrr_subs.c cutil.c - $(CC) -c plrs_subs.c cutil.c - $(FC) -o plrr -fno-second-underscore plrr.F90 sec_midn.F90 plrr_subs.o cutil.o - -plrs: plrs.F90 sec_midn.F90 plrs_subs.c cutil.c - $(CC) -c plrs_subs.c cutil.c - $(FC) -o plrs -fno-second-underscore plrs.F90 sec_midn.F90 plrs_subs.o cutil.o - -.PHONY : clean -clean: - ${RM} -f *.o *.pyc *.so *~ map65 map65.spec - -distclean: clean - ${RM} -f config.log config.status Makefile diff --git a/Makefile.linux.g95 b/Makefile.linux.g95 deleted file mode 100644 index 256ef3356..000000000 --- a/Makefile.linux.g95 +++ /dev/null @@ -1,121 +0,0 @@ -CC ?= gcc -FFLAGS = -g -O2 -LDFLAGS = -L/usr/local/lib -lpthread -lasound -CPPFLAGS = -I/usr/local/include -I/usr/include/alsa -CFLAGS = -Wall -O0 -g -Wall -O0 -g -# WSJT specific C flags -CFLAGS += -DBIGSYM=1 -DEFS = -DPACKAGE_NAME=\"wsjt\" -DPACKAGE_TARNAME=\"wsjt\" -DPACKAGE_VERSION=\"5.9.2\" -DPACKAGE_STRING=\"wsjt\ 5.9.2\" -DPACKAGE_BUGREPORT=\"\" -DG95_LIB_PATH=\"/u/g95/g95-install/bin/../lib/gcc-lib/i686-pc-linux-gnu/4.0.1//\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_ERRNO_H=1 -DHAVE_SYS_SYSLOG_H=1 -DHAVE_STDDEF_H=1 -DHAVE_LIBGEN_H=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_WAIT_H=1 -DHAVE_STDIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_LINUX_PPDEV_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1 -DTIME_WITH_SYS_TIME=1 -DSTRING_WITH_STRINGS=1 -DSIZEOF_INT64_T=8 -DSIZEOF_LONG_LONG=8 -DNDEBUG=1 -DPREFIX=\"/usr/local/\" -DUSE_SERIAL=1 -DUSE_ALSA=1 -DHAS_ASOUNDLIB_H=1 -DHAS_SOUNDCARD_H=1 -DHAS_SAMPLERATE_H=1 -CFLAGS += ${DEFS} -CPPFLAGS += ${DEFS} - -# WSJT specific Fortran flags -#FFLAGS += -Wall -fbounds-check -fno-second-underscore -ffixed-line-length-none -FFLAGS += -Wall -fbounds-check -fno-second-underscore -#FFLAGS += -cpp -fno-second-underscore -# The default rules -.c.o: - ${CC} ${CPPFLAGS} ${CFLAGS} -c -o ${<:.c=.o} $< - -.f.o: - ${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.f=.o} $< - -.F90.o: - ${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.F90=.o} $< - -OS=Linux -G95=/usr/X11R6/bin/g95 -COMPILER=/usr/lib/gcc/i686-pc-linux-gnu/3.4.6// -#COMPILER=/u/g95/g95-install/bin/../lib/gcc-lib/i686-pc-linux-gnu/4.0.1// -FC=/usr/X11R6/bin/g95 - -LDFLAGS += -L${COMPILER} -LDFLAGS += -lg2c - -PYTHON ?= /usr/X11R6/bin/python -RM ?= /usr/X11R6/bin/rm -F2PY = /usr/X11R6/bin/f2py - - -OBJS1 = JT65code.o nchar.o grid2deg.o packmsg.o packtext.o \ - packcall.o packgrid.o unpackmsg.o unpacktext.o unpackcall.o \ - unpackgrid.o deg2grid.o packdxcc.o chkmsg.o getpfx1.o \ - getpfx2.o k2grid.o grid2k.o interleave63.o graycode.o set.o \ - igray.o init_rs_int.o encode_rs_int.o decode_rs_int.o \ - wrapkarn.o - -F2PYONLY = ftn_init ftn_quit audio_init spec getfile azdist0 astro0 - -SRCS2F90 = abc441.F90 astro0.F90 audio_init.F90 azdist0.f90 \ - blanker.f90 decode1.F90 decode2.f90 decode3.F90 ftn_init.F90 \ - ftn_quit.f90 get_fname.F90 getfile.F90 horizspec.f90 hscroll.f90 \ - i1tor4.f90 pix2d.f90 pix2d65.f90 rfile.f90 savedata.F90 spec.f90 \ - wsjtgen.F90 runqqq.F90 fivehz.F90 -OBJS2F90 = ${SRCS2F90:.f90=.o} - -SRCS2F77 = wsjt1.f astro.f azdist.f coord.f dcoord.f deg2grid.f \ - dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f moon2.f \ - MoonDop.f sun.f toxyz.f pfxdump.f \ - avesp2.f bzap.f spec441.f spec2d.f mtdecode.f stdecode.f \ - indexx.f s2shape.f flat2.f gen65.f chkmsg.f gen6m.f gentone.f \ - syncf0.f syncf1.f synct.f decode6m.f avemsg6m.f \ - set.f flatten.f db.f pctile.f sort.f ssort.f ps.f smooth.f \ - ping.f longx.f peakup.f sync.f detect.f avemsg65.f decode65.f \ - demod64a.f encode65.f extract.f flat1.f four2.f rfile2.f \ - gencw.f getpfx1.f getpfx2.f getsnr.f graycode.f grid2k.f \ - interleave63.f k2grid.f limit.f lpf1.f deep65.f morse.f \ - nchar.f packcall.f packgrid.f packmsg.f packtext.f setup65.f \ - short65.f slope.f spec2d65.f sync65.f unpackcall.f \ - unpackgrid.f unpackmsg.f unpacktext.f xcor.f xfft.f xfft2.f wsjt65.f -OBJS2F77 = ${SRCS2F77:.f=.o} - -SRCS2C = init_rs.c encode_rs.c decode_rs.c -OBJS2C = ${SRCS2C:.c=.o} - -# ok, so far for now -# Windows start_alsa.c will be a2d.f90 jtaudio.c since it uses portaudio -# for *nix start_alsa.c will also be a2d.f90, jtaudio.c -# and start_portaudio.c for systems using portaudio -# for *nix start_alsa.c will be start_alsa.c for alsa -# for *nix start_alsa.c will be start_oss.c for oss -# -# ptt_unix.c vs. ptt.c I'll sort out later. -# ditto for cutil.c (only used on *nix) -# --db -# jtaudio.c/start_threads.c mess will have to be sorted out later -# to minimise #ifdef's -# --db -# and mostly sorted -# --db -# -SRCS3C = ptt_unix.c igray.c wrapkarn.c cutil.c -OBJS3C = ${SRCS3C:.c=.o} -AUDIOSRCS = start_alsa.c - -all: wsjt6 -JT65code: $(OBJS1) - $(FC) -o JT65code $(OBJS1) - -wsjt6: Audio.so #wsjt.spec -# ${PYTHON} c:\python23\installer\Build.py wsjt.spec -# ${RM} wsjt6 - -# -# -Audio.so: $(OBJS2C) $(OBJS3C) $(OBJS2F77) $(SRCS2F90) $(AUDIOSRCS) - ${F2PY} -c --quiet --opt="-O -D${CFLAGS} \ - -fno-second-underscore" $(OBJS2C) $(OBJS2F77) -m Audio \ - --f77exec=${G95} --f90exec=${G95} ${CPPFLAGS} ${LDFLAGS} \ - only: $(F2PYONLY) \ - : $(SRCS2F90) \ - ${SRCS3C} ${AUDIOSRCS} - -wsjt.spec: wsjt.py astro.py g.py options.py palettes.py smeter.py specjt.py -# ${PYTHON} c:\python23\installer\makespec.py --icon wsjt.ico \ -# --tk --onefile wsjt.py - - -.PHONY : clean -clean: - ${RM} -f *.o *.so *~ JT65code wsjt6 - diff --git a/Makefile.linux.gfortran b/Makefile.linux.gfortran deleted file mode 100644 index bd9608559..000000000 --- a/Makefile.linux.gfortran +++ /dev/null @@ -1,120 +0,0 @@ -CC ?= gcc -FFLAGS = -g -O2 -fPIC -LDFLAGS = -L/usr/local/lib -lpthread -lasound -CPPFLAGS = -I/usr/local/include -I/usr/include/alsa -I. -CFLAGS = -Wall -O0 -g -Wall -O0 -g -fPIC -# WSJT specific C flags -CFLAGS += -DBIGSYM=1 -DEFS = -DPACKAGE_NAME=\"wsjt\" -DPACKAGE_TARNAME=\"wsjt\" -DPACKAGE_VERSION=\"5.9.2\" -DPACKAGE_STRING=\"wsjt\ 5.9.2\" -DPACKAGE_BUGREPORT=\"\" -DG95_LIB_PATH=\"/usr/lib/gcc/x86_64-linux-gnu/4.0.3/\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_ERRNO_H=1 -DHAVE_SYS_SYSLOG_H=1 -DHAVE_STDDEF_H=1 -DHAVE_LIBGEN_H=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_WAIT_H=1 -DHAVE_STDIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_LINUX_PPDEV_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1 -DTIME_WITH_SYS_TIME=1 -DSTRING_WITH_STRINGS=1 -DSIZEOF_INT64_T=8 -DSIZEOF_LONG_LONG=8 -DNDEBUG=1 -DPREFIX=\"/usr/local/\" -DUSE_SERIAL=1 -DUSE_ALSA=1 -DHAS_ASOUNDLIB_H=1 -DHAS_SOUNDCARD_H=1 -CFLAGS += ${DEFS} -CPPFLAGS += ${DEFS} - -# WSJT specific Fortran flags -FFLAGS += -Wall -fbounds-check -fno-second-underscore -ffixed-line-length-none -#FFLAGS += -Wall -fbounds-check -fno-second-underscore -#FFLAGS += -cpp -fno-second-underscore -# The default rules -.c.o: - ${CC} ${CPPFLAGS} ${CFLAGS} -c -o ${<:.c=.o} $< - -.f.o: - ${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.f=.o} $< - -.F90.o: - ${G95} ${CPPFLAGS} ${FFLAGS} -c -o ${<:.F90=.o} $< - -OS=Linux -G95=/usr/bin/g95 -COMPILER=/usr/lib/gcc/x86_64-linux-gnu/4.0.3/ -FC=/usr/bin/g95 - -LDFLAGS += -L${COMPILER} -LDFLAGS += -lg2c - -PYTHON ?= /usr/bin/python -RM ?= /bin/rm -F2PY = /usr/bin/f2py - - -OBJS1 = JT65code.o nchar.o grid2deg.o packmsg.o packtext.o \ - packcall.o packgrid.o unpackmsg.o unpacktext.o unpackcall.o \ - unpackgrid.o deg2grid.o packdxcc.o chkmsg.o getpfx1.o \ - getpfx2.o k2grid.o grid2k.o interleave63.o graycode.o set.o \ - igray.o init_rs_int.o encode_rs_int.o decode_rs_int.o \ - wrapkarn.o - -F2PYONLY = ftn_init ftn_quit audio_init spec getfile azdist0 astro0 - -SRCS2F90 = abc441.F90 astro0.F90 audio_init.F90 azdist0.f90 \ - blanker.f90 decode1.F90 decode2.f90 decode3.F90 ftn_init.F90 \ - ftn_quit.f90 get_fname.F90 getfile.F90 horizspec.f90 hscroll.f90 \ - i1tor4.f90 pix2d.f90 pix2d65.f90 rfile.f90 savedata.F90 spec.f90 \ - wsjtgen.F90 runqqq.F90 fivehz.F90 -OBJS2F90 = ${SRCS2F90:.f90=.o} - -SRCS2F77 = wsjt1.f astro.f azdist.f coord.f dcoord.f deg2grid.f \ - dot.f ftsky.f geocentric.f GeoDist.f grid2deg.f moon2.f \ - MoonDop.f sun.f toxyz.f pfxdump.f \ - avesp2.f bzap.f spec441.f spec2d.f mtdecode.f stdecode.f \ - indexx.f s2shape.f flat2.f gen65.f chkmsg.f gen6m.f gentone.f \ - syncf0.f syncf1.f synct.f decode6m.f avemsg6m.f \ - set.f flatten.f db.f pctile.f sort.f ssort.f ps.f smooth.f \ - ping.f longx.f peakup.f sync.f detect.f avemsg65.f decode65.f \ - demod64a.f encode65.f extract.f flat1.f four2.f rfile2.f \ - gencw.f getpfx1.f getpfx2.f getsnr.f graycode.f grid2k.f \ - interleave63.f k2grid.f limit.f lpf1.f deep65.f morse.f \ - nchar.f packcall.f packgrid.f packmsg.f packtext.f setup65.f \ - short65.f slope.f spec2d65.f sync65.f unpackcall.f \ - unpackgrid.f unpackmsg.f unpacktext.f xcor.f xfft.f xfft2.f wsjt65.f -OBJS2F77 = ${SRCS2F77:.f=.o} - -SRCS2C = init_rs.c encode_rs.c decode_rs.c -OBJS2C = ${SRCS2C:.c=.o} - -# ok, so far for now -# Windows start_alsa.c will be a2d.f90 jtaudio.c since it uses portaudio -# for *nix start_alsa.c will also be a2d.f90, jtaudio.c -# and start_portaudio.c for systems using portaudio -# for *nix start_alsa.c will be start_alsa.c for alsa -# for *nix start_alsa.c will be start_oss.c for oss -# -# ptt_unix.c vs. ptt.c I'll sort out later. -# ditto for cutil.c (only used on *nix) -# --db -# jtaudio.c/start_threads.c mess will have to be sorted out later -# to minimise #ifdef's -# --db -# and mostly sorted -# --db -# -SRCS3C = ptt_unix.c igray.c wrapkarn.c cutil.c -OBJS3C = ${SRCS3C:.c=.o} -AUDIOSRCS = start_alsa.c - -all: wsjt6 -JT65code: $(OBJS1) - $(FC) -o JT65code $(OBJS1) - -wsjt6: Audio.so #wsjt.spec -# ${PYTHON} c:\python23\installer\Build.py wsjt.spec -# ${RM} wsjt6 - -# -# -Audio.so: $(OBJS2C) $(OBJS3C) $(OBJS2F77) $(SRCS2F90) $(AUDIOSRCS) - ${F2PY} -c --opt="-O ${CFLAGS} -fPIC \ - -fno-second-underscore" $(OBJS2C) $(OBJS2F77) -m Audio \ - --f77exec=${G95} --f90exec=${G95} ${CPPFLAGS} ${LDFLAGS} \ - only: $(F2PYONLY) \ - : $(SRCS2F90) \ - ${SRCS3C} ${AUDIOSRCS} - -wsjt.spec: wsjt.py astro.py g.py options.py palettes.py smeter.py specjt.py -# ${PYTHON} c:\python23\installer\makespec.py --icon wsjt.ico \ -# --tk --onefile wsjt.py - - -.PHONY : clean -clean: - ${RM} -f *.o *.so *~ JT65code wsjt6 - diff --git a/Pmw.py b/Pmw.py deleted file mode 100644 index dfc3f7334..000000000 --- a/Pmw.py +++ /dev/null @@ -1,9233 +0,0 @@ - -import PmwColor -Color = PmwColor -del PmwColor - -import PmwBlt -Blt = PmwBlt -del PmwBlt - - -### Loader functions: - -_VERSION = '1.2' - -def setversion(version): - if version != _VERSION: - raise ValueError, 'Dynamic versioning not available' - -def setalphaversions(*alpha_versions): - if alpha_versions != (): - raise ValueError, 'Dynamic versioning not available' - -def version(alpha = 0): - if alpha: - return () - else: - return _VERSION - -def installedversions(alpha = 0): - if alpha: - return () - else: - return (_VERSION,) - - -###################################################################### -### File: PmwBase.py -# Pmw megawidget base classes. - -# This module provides a foundation for building megawidgets. It -# contains the MegaArchetype class which manages component widgets and -# configuration options. Also provided are the MegaToplevel and -# MegaWidget classes, derived from the MegaArchetype class. The -# MegaToplevel class contains a Tkinter Toplevel widget to act as the -# container of the megawidget. This is used as the base class of all -# megawidgets that are contained in their own top level window, such -# as a Dialog window. The MegaWidget class contains a Tkinter Frame -# to act as the container of the megawidget. This is used as the base -# class of all other megawidgets, such as a ComboBox or ButtonBox. -# -# Megawidgets are built by creating a class that inherits from either -# the MegaToplevel or MegaWidget class. - -import os -import string -import sys -import traceback -import types -import Tkinter - -# Special values used in index() methods of several megawidgets. -END = ['end'] -SELECT = ['select'] -DEFAULT = ['default'] - -# Constant used to indicate that an option can only be set by a call -# to the constructor. -INITOPT = ['initopt'] -_DEFAULT_OPTION_VALUE = ['default_option_value'] -_useTkOptionDb = 0 - -# Symbolic constants for the indexes into an optionInfo list. -_OPT_DEFAULT = 0 -_OPT_VALUE = 1 -_OPT_FUNCTION = 2 - -# Stacks - -_busyStack = [] - # Stack which tracks nested calls to show/hidebusycursor (called - # either directly or from activate()/deactivate()). Each element - # is a dictionary containing: - # 'newBusyWindows' : List of windows which had busy_hold called - # on them during a call to showbusycursor(). - # The corresponding call to hidebusycursor() - # will call busy_release on these windows. - # 'busyFocus' : The blt _Busy window which showbusycursor() - # set the focus to. - # 'previousFocus' : The focus as it was when showbusycursor() - # was called. The corresponding call to - # hidebusycursor() will restore this focus if - # the focus has not been changed from busyFocus. - -_grabStack = [] - # Stack of grabbed windows. It tracks calls to push/popgrab() - # (called either directly or from activate()/deactivate()). The - # window on the top of the stack is the window currently with the - # grab. Each element is a dictionary containing: - # 'grabWindow' : The window grabbed by pushgrab(). The - # corresponding call to popgrab() will release - # the grab on this window and restore the grab - # on the next window in the stack (if there is one). - # 'globalMode' : True if the grabWindow was grabbed with a - # global grab, false if the grab was local - # and 'nograb' if no grab was performed. - # 'previousFocus' : The focus as it was when pushgrab() - # was called. The corresponding call to - # popgrab() will restore this focus. - # 'deactivateFunction' : - # The function to call (usually grabWindow.deactivate) if - # popgrab() is called (usually from a deactivate() method) - # on a window which is not at the top of the stack (that is, - # does not have the grab or focus). For example, if a modal - # dialog is deleted by the window manager or deactivated by - # a timer. In this case, all dialogs above and including - # this one are deactivated, starting at the top of the - # stack. - - # Note that when dealing with focus windows, the name of the Tk - # widget is used, since it may be the '_Busy' window, which has no - # python instance associated with it. - -#============================================================================= - -# Functions used to forward methods from a class to a component. - -# Fill in a flattened method resolution dictionary for a class (attributes are -# filtered out). Flattening honours the MI method resolution rules -# (depth-first search of bases in order). The dictionary has method names -# for keys and functions for values. -def __methodDict(cls, dict): - - # the strategy is to traverse the class in the _reverse_ of the normal - # order, and overwrite any duplicates. - baseList = list(cls.__bases__) - baseList.reverse() - - # do bases in reverse order, so first base overrides last base - for super in baseList: - __methodDict(super, dict) - - # do my methods last to override base classes - for key, value in cls.__dict__.items(): - # ignore class attributes - if type(value) == types.FunctionType: - dict[key] = value - -def __methods(cls): - # Return all method names for a class. - - # Return all method names for a class (attributes are filtered - # out). Base classes are searched recursively. - - dict = {} - __methodDict(cls, dict) - return dict.keys() - -# Function body to resolve a forwarding given the target method name and the -# attribute name. The resulting lambda requires only self, but will forward -# any other parameters. -__stringBody = ( - 'def %(method)s(this, *args, **kw): return ' + - 'apply(this.%(attribute)s.%(method)s, args, kw)') - -# Get a unique id -__counter = 0 -def __unique(): - global __counter - __counter = __counter + 1 - return str(__counter) - -# Function body to resolve a forwarding given the target method name and the -# index of the resolution function. The resulting lambda requires only self, -# but will forward any other parameters. The target instance is identified -# by invoking the resolution function. -__funcBody = ( - 'def %(method)s(this, *args, **kw): return ' + - 'apply(this.%(forwardFunc)s().%(method)s, args, kw)') - -def forwardmethods(fromClass, toClass, toPart, exclude = ()): - # Forward all methods from one class to another. - - # Forwarders will be created in fromClass to forward method - # invocations to toClass. The methods to be forwarded are - # identified by flattening the interface of toClass, and excluding - # methods identified in the exclude list. Methods already defined - # in fromClass, or special methods with one or more leading or - # trailing underscores will not be forwarded. - - # For a given object of class fromClass, the corresponding toClass - # object is identified using toPart. This can either be a String - # denoting an attribute of fromClass objects, or a function taking - # a fromClass object and returning a toClass object. - - # Example: - # class MyClass: - # ... - # def __init__(self): - # ... - # self.__target = TargetClass() - # ... - # def findtarget(self): - # return self.__target - # forwardmethods(MyClass, TargetClass, '__target', ['dangerous1', 'dangerous2']) - # # ...or... - # forwardmethods(MyClass, TargetClass, MyClass.findtarget, - # ['dangerous1', 'dangerous2']) - - # In both cases, all TargetClass methods will be forwarded from - # MyClass except for dangerous1, dangerous2, special methods like - # __str__, and pre-existing methods like findtarget. - - - # Allow an attribute name (String) or a function to determine the instance - if type(toPart) != types.StringType: - - # check that it is something like a function - if callable(toPart): - - # If a method is passed, use the function within it - if hasattr(toPart, 'im_func'): - toPart = toPart.im_func - - # After this is set up, forwarders in this class will use - # the forwarding function. The forwarding function name is - # guaranteed to be unique, so that it can't be hidden by subclasses - forwardName = '__fwdfunc__' + __unique() - fromClass.__dict__[forwardName] = toPart - - # It's not a valid type - else: - raise TypeError, 'toPart must be attribute name, function or method' - - # get the full set of candidate methods - dict = {} - __methodDict(toClass, dict) - - # discard special methods - for ex in dict.keys(): - if ex[:1] == '_' or ex[-1:] == '_': - del dict[ex] - # discard dangerous methods supplied by the caller - for ex in exclude: - if dict.has_key(ex): - del dict[ex] - # discard methods already defined in fromClass - for ex in __methods(fromClass): - if dict.has_key(ex): - del dict[ex] - - for method, func in dict.items(): - d = {'method': method, 'func': func} - if type(toPart) == types.StringType: - execString = \ - __stringBody % {'method' : method, 'attribute' : toPart} - else: - execString = \ - __funcBody % {'forwardFunc' : forwardName, 'method' : method} - - exec execString in d - - # this creates a method - fromClass.__dict__[method] = d[method] - -#============================================================================= - -def setgeometryanddeiconify(window, geom): - # To avoid flashes on X and to position the window correctly on NT - # (caused by Tk bugs). - - if os.name == 'nt' or \ - (os.name == 'posix' and sys.platform[:6] == 'cygwin'): - # Require overrideredirect trick to stop window frame - # appearing momentarily. - redirect = window.overrideredirect() - if not redirect: - window.overrideredirect(1) - window.deiconify() - if geom is not None: - window.geometry(geom) - # Call update_idletasks to ensure NT moves the window to the - # correct position it is raised. - window.update_idletasks() - window.tkraise() - if not redirect: - window.overrideredirect(0) - else: - if geom is not None: - window.geometry(geom) - - # Problem!? Which way around should the following two calls - # go? If deiconify() is called first then I get complaints - # from people using the enlightenment or sawfish window - # managers that when a dialog is activated it takes about 2 - # seconds for the contents of the window to appear. But if - # tkraise() is called first then I get complaints from people - # using the twm window manager that when a dialog is activated - # it appears in the top right corner of the screen and also - # takes about 2 seconds to appear. - - #window.tkraise() - # Call update_idletasks to ensure certain window managers (eg: - # enlightenment and sawfish) do not cause Tk to delay for - # about two seconds before displaying window. - #window.update_idletasks() - #window.deiconify() - - window.deiconify() - if window.overrideredirect(): - # The window is not under the control of the window manager - # and so we need to raise it ourselves. - window.tkraise() - -#============================================================================= - -class MegaArchetype: - # Megawidget abstract root class. - - # This class provides methods which are inherited by classes - # implementing useful bases (this class doesn't provide a - # container widget inside which the megawidget can be built). - - def __init__(self, parent = None, hullClass = None): - - # Mapping from each megawidget option to a list of information - # about the option - # - default value - # - current value - # - function to call when the option is initialised in the - # call to initialiseoptions() in the constructor or - # modified via configure(). If this is INITOPT, the - # option is an initialisation option (an option that can - # be set by the call to the constructor but can not be - # used with configure). - # This mapping is not initialised here, but in the call to - # defineoptions() which precedes construction of this base class. - # - # self._optionInfo = {} - - # Mapping from each component name to a tuple of information - # about the component. - # - component widget instance - # - configure function of widget instance - # - the class of the widget (Frame, EntryField, etc) - # - cget function of widget instance - # - the name of the component group of this component, if any - self.__componentInfo = {} - - # Mapping from alias names to the names of components or - # sub-components. - self.__componentAliases = {} - - # Contains information about the keywords provided to the - # constructor. It is a mapping from the keyword to a tuple - # containing: - # - value of keyword - # - a boolean indicating if the keyword has been used. - # A keyword is used if, during the construction of a megawidget, - # - it is defined in a call to defineoptions() or addoptions(), or - # - it references, by name, a component of the megawidget, or - # - it references, by group, at least one component - # At the end of megawidget construction, a call is made to - # initialiseoptions() which reports an error if there are - # unused options given to the constructor. - # - # After megawidget construction, the dictionary contains - # keywords which refer to a dynamic component group, so that - # these components can be created after megawidget - # construction and still use the group options given to the - # constructor. - # - # self._constructorKeywords = {} - - # List of dynamic component groups. If a group is included in - # this list, then it not an error if a keyword argument for - # the group is given to the constructor or to configure(), but - # no components with this group have been created. - # self._dynamicGroups = () - - if hullClass is None: - self._hull = None - else: - if parent is None: - parent = Tkinter._default_root - - # Create the hull. - self._hull = self.createcomponent('hull', - (), None, - hullClass, (parent,)) - _hullToMegaWidget[self._hull] = self - - if _useTkOptionDb: - # Now that a widget has been created, query the Tk - # option database to get the default values for the - # options which have not been set in the call to the - # constructor. This assumes that defineoptions() is - # called before the __init__(). - option_get = self.option_get - _VALUE = _OPT_VALUE - _DEFAULT = _OPT_DEFAULT - for name, info in self._optionInfo.items(): - value = info[_VALUE] - if value is _DEFAULT_OPTION_VALUE: - resourceClass = string.upper(name[0]) + name[1:] - value = option_get(name, resourceClass) - if value != '': - try: - # Convert the string to int/float/tuple, etc - value = eval(value, {'__builtins__': {}}) - except: - pass - info[_VALUE] = value - else: - info[_VALUE] = info[_DEFAULT] - - def destroy(self): - # Clean up optionInfo in case it contains circular references - # in the function field, such as self._settitle in class - # MegaToplevel. - - self._optionInfo = {} - if self._hull is not None: - del _hullToMegaWidget[self._hull] - self._hull.destroy() - - #====================================================================== - # Methods used (mainly) during the construction of the megawidget. - - def defineoptions(self, keywords, optionDefs, dynamicGroups = ()): - # Create options, providing the default value and the method - # to call when the value is changed. If any option created by - # base classes has the same name as one in , the - # base class's value and function will be overriden. - - # This should be called before the constructor of the base - # class, so that default values defined in the derived class - # override those in the base class. - - if not hasattr(self, '_constructorKeywords'): - # First time defineoptions has been called. - tmp = {} - for option, value in keywords.items(): - tmp[option] = [value, 0] - self._constructorKeywords = tmp - self._optionInfo = {} - self._initialiseoptions_counter = 0 - self._initialiseoptions_counter = self._initialiseoptions_counter + 1 - - if not hasattr(self, '_dynamicGroups'): - self._dynamicGroups = () - self._dynamicGroups = self._dynamicGroups + tuple(dynamicGroups) - self.addoptions(optionDefs) - - def addoptions(self, optionDefs): - # Add additional options, providing the default value and the - # method to call when the value is changed. See - # "defineoptions" for more details - - # optimisations: - optionInfo = self._optionInfo - optionInfo_has_key = optionInfo.has_key - keywords = self._constructorKeywords - keywords_has_key = keywords.has_key - FUNCTION = _OPT_FUNCTION - - for name, default, function in optionDefs: - if '_' not in name: - # The option will already exist if it has been defined - # in a derived class. In this case, do not override the - # default value of the option or the callback function - # if it is not None. - if not optionInfo_has_key(name): - if keywords_has_key(name): - value = keywords[name][0] - optionInfo[name] = [default, value, function] - del keywords[name] - else: - if _useTkOptionDb: - optionInfo[name] = \ - [default, _DEFAULT_OPTION_VALUE, function] - else: - optionInfo[name] = [default, default, function] - elif optionInfo[name][FUNCTION] is None: - optionInfo[name][FUNCTION] = function - else: - # This option is of the form "component_option". If this is - # not already defined in self._constructorKeywords add it. - # This allows a derived class to override the default value - # of an option of a component of a base class. - if not keywords_has_key(name): - keywords[name] = [default, 0] - - def createcomponent(self, componentName, componentAliases, - componentGroup, widgetClass, *widgetArgs, **kw): - # Create a component (during construction or later). - - if self.__componentInfo.has_key(componentName): - raise ValueError, 'Component "%s" already exists' % componentName - - if '_' in componentName: - raise ValueError, \ - 'Component name "%s" must not contain "_"' % componentName - - if hasattr(self, '_constructorKeywords'): - keywords = self._constructorKeywords - else: - keywords = {} - for alias, component in componentAliases: - # Create aliases to the component and its sub-components. - index = string.find(component, '_') - if index < 0: - self.__componentAliases[alias] = (component, None) - else: - mainComponent = component[:index] - subComponent = component[(index + 1):] - self.__componentAliases[alias] = (mainComponent, subComponent) - - # Remove aliases from the constructor keyword arguments by - # replacing any keyword arguments that begin with *alias* - # with corresponding keys beginning with *component*. - - alias = alias + '_' - aliasLen = len(alias) - for option in keywords.keys(): - if len(option) > aliasLen and option[:aliasLen] == alias: - newkey = component + '_' + option[aliasLen:] - keywords[newkey] = keywords[option] - del keywords[option] - - componentPrefix = componentName + '_' - nameLen = len(componentPrefix) - for option in keywords.keys(): - if len(option) > nameLen and option[:nameLen] == componentPrefix: - # The keyword argument refers to this component, so add - # this to the options to use when constructing the widget. - kw[option[nameLen:]] = keywords[option][0] - del keywords[option] - else: - # Check if this keyword argument refers to the group - # of this component. If so, add this to the options - # to use when constructing the widget. Mark the - # keyword argument as being used, but do not remove it - # since it may be required when creating another - # component. - index = string.find(option, '_') - if index >= 0 and componentGroup == option[:index]: - rest = option[(index + 1):] - kw[rest] = keywords[option][0] - keywords[option][1] = 1 - - if kw.has_key('pyclass'): - widgetClass = kw['pyclass'] - del kw['pyclass'] - if widgetClass is None: - return None - if len(widgetArgs) == 1 and type(widgetArgs[0]) == types.TupleType: - # Arguments to the constructor can be specified as either - # multiple trailing arguments to createcomponent() or as a - # single tuple argument. - widgetArgs = widgetArgs[0] - widget = apply(widgetClass, widgetArgs, kw) - componentClass = widget.__class__.__name__ - self.__componentInfo[componentName] = (widget, widget.configure, - componentClass, widget.cget, componentGroup) - - return widget - - def destroycomponent(self, name): - # Remove a megawidget component. - - # This command is for use by megawidget designers to destroy a - # megawidget component. - - self.__componentInfo[name][0].destroy() - del self.__componentInfo[name] - - def createlabel(self, parent, childCols = 1, childRows = 1): - - labelpos = self['labelpos'] - labelmargin = self['labelmargin'] - if labelpos is None: - return - - label = self.createcomponent('label', - (), None, - Tkinter.Label, (parent,)) - - if labelpos[0] in 'ns': - # vertical layout - if labelpos[0] == 'n': - row = 0 - margin = 1 - else: - row = childRows + 3 - margin = row - 1 - label.grid(column=2, row=row, columnspan=childCols, sticky=labelpos) - parent.grid_rowconfigure(margin, minsize=labelmargin) - else: - # horizontal layout - if labelpos[0] == 'w': - col = 0 - margin = 1 - else: - col = childCols + 3 - margin = col - 1 - label.grid(column=col, row=2, rowspan=childRows, sticky=labelpos) - parent.grid_columnconfigure(margin, minsize=labelmargin) - - def initialiseoptions(self, dummy = None): - self._initialiseoptions_counter = self._initialiseoptions_counter - 1 - if self._initialiseoptions_counter == 0: - unusedOptions = [] - keywords = self._constructorKeywords - for name in keywords.keys(): - used = keywords[name][1] - if not used: - # This keyword argument has not been used. If it - # does not refer to a dynamic group, mark it as - # unused. - index = string.find(name, '_') - if index < 0 or name[:index] not in self._dynamicGroups: - unusedOptions.append(name) - if len(unusedOptions) > 0: - if len(unusedOptions) == 1: - text = 'Unknown option "' - else: - text = 'Unknown options "' - raise KeyError, text + string.join(unusedOptions, ', ') + \ - '" for ' + self.__class__.__name__ - - # Call the configuration callback function for every option. - FUNCTION = _OPT_FUNCTION - for info in self._optionInfo.values(): - func = info[FUNCTION] - if func is not None and func is not INITOPT: - func() - - #====================================================================== - # Method used to configure the megawidget. - - def configure(self, option=None, **kw): - # Query or configure the megawidget options. - # - # If not empty, *kw* is a dictionary giving new - # values for some of the options of this megawidget or its - # components. For options defined for this megawidget, set - # the value of the option to the new value and call the - # configuration callback function, if any. For options of the - # form _
    O{DZvfa5ou5S5x>IYwK)DMu}`*s?d~> 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

    dxu5{F+npAM1s@y%+ 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 diff --git a/TSKY.DAT b/TSKY.DAT deleted file mode 100644 index e122680d0ec1745e348e226f25e20b767896b0ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129600 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

    >)yw0pibap)XHqWXRRo6q<0d%9m#9hk>=ivwM6 zr`}A@NYB2Xrk`#Uj8RL^!pc-zY!oxa6t^qt9`AkEWA#1O_w8r#cFy=*zq0K1k&o>+ zD*I;E^*r>f?9aD7cU8HpB0laYCmp>V{A}3ZB)#80jojLAbbh)U8?IsNomv@!H{#J8 z`_?fhFWIZmbKm)+Bcm#AjZ{3F>l&Fs+he__zVhc>g`@Yj*K2#t)<++G+;RUy7l!T8 z@7>#;kKV2bZmf=S+&|XGZSV6+b2f*`j=Q(Tl)trlWj^setupUi(this); + ui->labelTxt->clear(); + m_Str = "

    " + m_Revision + "

    \n\n"; + m_Str += "MAP65 implements a wideband polarization-matching receiver
    "; + m_Str += "for the JT65 protocol, with a matching transmitting facility.
    "; + m_Str += "It is primarily intended for amateur radio EME communication.

    "; + m_Str += "Copyright 2001-2012 by Joe Taylor, K1JT. Additional
    "; + m_Str += "acknowledgments are contained in the source code.
    "; + ui->labelTxt->setText(m_Str); +} + +CAboutDlg::~CAboutDlg() +{ + delete ui; +} diff --git a/about.h b/about.h new file mode 100644 index 000000000..3fe089598 --- /dev/null +++ b/about.h @@ -0,0 +1,24 @@ +#ifndef ABOUTDLG_H +#define ABOUTDLG_H + +#include + +namespace Ui { + class CAboutDlg; +} + +class CAboutDlg : public QDialog +{ + Q_OBJECT + +public: + explicit CAboutDlg(QWidget *parent=0, QString Revision=""); + ~CAboutDlg(); + +private: + QString m_Revision; + Ui::CAboutDlg *ui; + QString m_Str; +}; + +#endif // ABOUTDLG_H diff --git a/about.ui b/about.ui new file mode 100644 index 000000000..0a2d5b3f8 --- /dev/null +++ b/about.ui @@ -0,0 +1,41 @@ + + + CAboutDlg + + + Qt::NonModal + + + + 0 + 0 + 374 + 164 + + + + + 0 + 0 + + + + About MAP65 + + + + + 20 + 10 + 331 + 131 + + + + + + + + + + diff --git a/aclocal.m4 b/aclocal.m4 deleted file mode 100644 index 4cd09488d..000000000 --- a/aclocal.m4 +++ /dev/null @@ -1,220 +0,0 @@ -dnl {{{ ax_check_gfortran -AC_DEFUN([AX_CHECK_GFORTRAN],[ - -AC_ARG_ENABLE(g95, -AC_HELP_STRING([--enable-g95],[Use G95 compiler if available.]), -[g95=$enableval], [g95=no]) - -AC_ARG_ENABLE(gfortran, -AC_HELP_STRING([--enable-gfortran],[Use gfortran compiler if available.]), -[gfortran=$enableval], [gfortran=no]) - -dnl -dnl Pick up FC from the environment if present -dnl I'll add a test to confirm this is a gfortran later -db -dnl - -FCV="" - -if test -n $[{FC}] ; then - gfortran_name_part=`echo $[{FC}] | cut -c 1-8` - if test $[{gfortran_name_part}] = "gfortran" ; then - gfortran_name=$[{FC}] - FC_LIB_PATH=`$[{FC}] -print-file-name=` - g95=no - gfortran=yes - FFLAGS="$[{FFLAGS_GFORTRAN}]" - FCV="gnu95" - else - unset $[{FC}] - fi -fi - -dnl -dnl Note regarding the apparent silliness with FCV. -dnl The FCV value for g95 might be system dependent, this is -dnl still to be fully explored. If not, then the FCV_G95 -dnl stuff can go away. -db -dnl - -AC_MSG_CHECKING([uname -s]) -case `uname -s` in - CYGWIN*) - AC_MSG_RESULT(Cygwin) - CYGWIN=yes - ;; - SunOS*) - AC_MSG_RESULT(SunOS or Solaris) - AC_DEFINE(__EXTENSIONS__, 1, [This is needed to use strtok_r on Solaris.]) - ;; -dnl -dnl Pick up current gfortran from ports infrastructure for fbsd -dnl - FreeBSD*) - if test -z $[{gfortran_name}] ; then - gfortran_name=`grep FC: /usr/ports/Mk/bsd.gcc.mk | head -1 |awk '{print $[2]}'` - fi - FCV_G95="g95" - ;; - *) - FCV_G95="g95" - AC_MSG_RESULT(no) - ;; -esac - -dnl -dnl look for gfortran if nothing else was given -dnl - -if test -z $[gfortran_name] ; then - gfortran_name="gfortran" -fi - -AC_PATH_PROG(G95, g95) -AC_PATH_PROG(GFORTRAN, $[{gfortran_name}]) - -if test ! -z $[{GFORTRAN}] ; then - echo "*** gfortran compiler found at $[{GFORTRAN}]" - if test "$[{gfortran}]" = yes; then - FC_LIB_PATH=`$[{GFORTRAN}] -print-file-name=` - FC=`basename $[{GFORTRAN}]` - g95=no - FFLAGS="$[{FFLAGS_GFORTRAN}]" - FCV="gnu95" - fi -else - echo "*** No gfortran compiler found" -fi - -if test ! -z $[{G95}] ; then - echo "*** g95 compiler found at $[{G95}]" - if test "$[{g95}]" = yes; then - FC_LIB_PATH=`$[{G95}] -print-file-name=` - FC=`basename $[{G95}]` - gfortran=no - FFLAGS="$[{FFLAGS_G95}]" - FCV=$[{FCV_G95}] - fi -else - echo "*** No g95 compiler found" -fi - -dnl -dnl if FC is not set by now, pick a compiler for user -dnl -if test -z $[{FC}] ; then - if test ! -z $[{GFORTRAN}] ; then - if test "$[{g95}]" = yes; then - echo "You enabled g95, but no g95 compiler found, defaulting to gfortran instead" - fi - FC_LIB_PATH=`$[{GFORTRAN}] -print-file-name=` - FC=`basename $[{GFORTRAN}]` - g95=no - gfortran=yes - FFLAGS="$[{FFLAGS_GFORTRAN}]" - FCV="gnu95" - elif test ! -z $G95 ; then - if test "$[{gfortran}]" = yes; then - echo "You enabled gfortran, but no gfortran compiler found, defaulting to g95 instead" - fi - FC_LIB_PATH=`$[{G95}] -print-file-name=` - FC=`basename $[{G95}]` - g95=yes - gfortran=no - FFLAGS="$[{FFLAGS_G95}]" - FCV=$[{FCV_G95}] - fi -fi - -AC_DEFINE_UNQUOTED(FC_LIB_PATH, "${FC_LIB_PATH}", [Path to fortran libs.]) -AC_SUBST(FC_LIB_PATH, "${FC_LIB_PATH}") -AC_DEFINE_UNQUOTED(FC, "${FC}", [Fortran compiler.]) -AC_SUBST(FC, "${FC}") -AC_SUBST(FCV, "${FCV}") - -dnl ========================================= -dnl pick gfortran or g95 - -])dnl }}} - - -dnl {{{ ax_check_portaudio -AC_DEFUN([AX_CHECK_PORTAUDIO],[ - -HAS_PORTAUDIO_H=0 -HAS_PORTAUDIO_LIB=0 -HAS_PORTAUDIO=0 - -AC_MSG_CHECKING([for a v19 portaudio ]) - -portaudio_lib_dir="/usr/lib" -portaudio_include_dir="/usr/include" - -AC_ARG_WITH([portaudio-include-dir], -AC_HELP_STRING([--with-portaudio-include-dir=], - [path to portaudio include files]), - [portaudio_include_dir=$with_portaudio_include_dir]) - -AC_ARG_WITH([portaudio-lib-dir], -AC_HELP_STRING([--with-portaudio-lib-dir=], - [path to portaudio lib files]), - [portaudio_lib_dir=$with_portaudio_lib_dir]) - -if test -e $[{portaudio_include_dir}]/portaudio.h; then - HAS_PORTAUDIO_H=1 -fi - -if test -e $[{portaudio_lib_dir}]/libportaudio.so \ - -o -e $[{portaudio_lib_dir}]/libportaudio.a;then - HAS_PORTAUDIO_LIB=1 -fi - -if test $[{HAS_PORTAUDIO_H}] -eq 1 -a $[{HAS_PORTAUDIO_LIB}] -eq 1; then - LDFLAGS="-L$[{portaudio_lib_dir}] $[{LDFLAGS}]" - LIBS="$[{LIBS}] -lportaudio" - CPPFLAGS="-I$[{portaudio_include_dir}] $[{CPPFLAGS}]" - AC_CHECK_LIB(portaudio, Pa_GetVersion, \ - [HAS_PORTAUDIO_VERSION=1], [HAS_PORTAUDIO_VERSION=0]) - if test $[{HAS_PORTAUDIO_VERSION}] -eq 0; then - AC_MSG_RESULT([This is likely portaudio v18; you need portaudio v19]) - else - HAS_PORTAUDIO=1 - fi -else - AC_MSG_RESULT([portaudio not found trying FreeBSD paths ]) - portaudio_lib_dir="/usr/local/lib/portaudio2" - portaudio_include_dir="/usr/local/include/portaudio2" -dnl -dnl Try again to make sure portaudio dirs are valid -dnl - AC_MSG_CHECKING([for a v19 portaudio in FreeBSD paths.]) - HAS_PORTAUDIO_H=0 - HAS_PORTAUDIO_LIB=0 - - if test -e $[{portaudio_include_dir}]/portaudio.h; then - HAS_PORTAUDIO_H=1 - fi - - if test -e $[{portaudio_lib_dir}]/libportaudio.so \ - -o -e $[{portaudio_lib_dir}]/libportaudio.a;then - HAS_PORTAUDIO_LIB=1 - fi - - if test $[{HAS_PORTAUDIO_H}] -eq 1 -a $[{HAS_PORTAUDIO_LIB}] -eq 1; then - AC_MSG_RESULT([found portaudio in FreeBSD paths, double checking it is v19 ]) - LDFLAGS="-L$[{portaudio_lib_dir}] $[{LDFLAGS}]" - LIBS="$[{LIBS}] -lportaudio" - CPPFLAGS="-I$[{portaudio_include_dir}] $[{CPPFLAGS}]" - AC_CHECK_LIB(portaudio, Pa_GetVersion, \ - [HAS_PORTAUDIO_VERSION=1], [HAS_PORTAUDIO_VERSION=0]) - if test $[{HAS_PORTAUDIO_VERSION}] -eq 0; then - AC_MSG_RESULT([How did you end up with a portaudio v18 here?]) - else - AC_MSG_RESULT([found v19]) - HAS_PORTAUDIO=1 - HAS_PORTAUDIO_H=1 - fi - fi -fi - -])dnl }}} diff --git a/afmhot.dat b/afmhot.dat new file mode 100644 index 000000000..8b312a11c --- /dev/null +++ b/afmhot.dat @@ -0,0 +1,257 @@ + 0 0.0000 0.0000 0.0000 + 1 0.0000 0.0000 0.0000 + 2 0.0078 0.0000 0.0000 + 3 0.0157 0.0000 0.0000 + 4 0.0235 0.0000 0.0000 + 5 0.0314 0.0000 0.0000 + 6 0.0392 0.0000 0.0000 + 7 0.0471 0.0000 0.0000 + 8 0.0549 0.0000 0.0000 + 9 0.0627 0.0000 0.0000 + 10 0.0706 0.0000 0.0000 + 11 0.0784 0.0000 0.0000 + 12 0.0863 0.0000 0.0000 + 13 0.0941 0.0000 0.0000 + 14 0.1020 0.0000 0.0000 + 15 0.1098 0.0000 0.0000 + 16 0.1176 0.0000 0.0000 + 17 0.1255 0.0000 0.0000 + 18 0.1333 0.0000 0.0000 + 19 0.1412 0.0000 0.0000 + 20 0.1490 0.0000 0.0000 + 21 0.1569 0.0000 0.0000 + 22 0.1647 0.0000 0.0000 + 23 0.1725 0.0000 0.0000 + 24 0.1804 0.0000 0.0000 + 25 0.1882 0.0000 0.0000 + 26 0.1961 0.0000 0.0000 + 27 0.2039 0.0000 0.0000 + 28 0.2118 0.0000 0.0000 + 29 0.2196 0.0000 0.0000 + 30 0.2275 0.0000 0.0000 + 31 0.2353 0.0000 0.0000 + 32 0.2431 0.0000 0.0000 + 33 0.2510 0.0000 0.0000 + 34 0.2588 0.0000 0.0000 + 35 0.2667 0.0000 0.0000 + 36 0.2745 0.0000 0.0000 + 37 0.2824 0.0000 0.0000 + 38 0.2902 0.0000 0.0000 + 39 0.2980 0.0000 0.0000 + 40 0.3059 0.0000 0.0000 + 41 0.3137 0.0000 0.0000 + 42 0.3216 0.0000 0.0000 + 43 0.3294 0.0000 0.0000 + 44 0.3373 0.0000 0.0000 + 45 0.3451 0.0000 0.0000 + 46 0.3529 0.0000 0.0000 + 47 0.3608 0.0000 0.0000 + 48 0.3686 0.0000 0.0000 + 49 0.3765 0.0000 0.0000 + 50 0.3843 0.0000 0.0000 + 51 0.3922 0.0000 0.0000 + 52 0.4000 0.0000 0.0000 + 53 0.4078 0.0000 0.0000 + 54 0.4157 0.0000 0.0000 + 55 0.4235 0.0000 0.0000 + 56 0.4314 0.0000 0.0000 + 57 0.4392 0.0000 0.0000 + 58 0.4471 0.0000 0.0000 + 59 0.4549 0.0000 0.0000 + 60 0.4627 0.0000 0.0000 + 61 0.4706 0.0000 0.0000 + 62 0.4784 0.0000 0.0000 + 63 0.4863 0.0000 0.0000 + 64 0.4941 0.0000 0.0000 + 65 0.5020 0.0000 0.0000 + 66 0.5098 0.0098 0.0000 + 67 0.5176 0.0176 0.0000 + 68 0.5255 0.0255 0.0000 + 69 0.5333 0.0333 0.0000 + 70 0.5412 0.0412 0.0000 + 71 0.5490 0.0490 0.0000 + 72 0.5569 0.0569 0.0000 + 73 0.5647 0.0647 0.0000 + 74 0.5725 0.0725 0.0000 + 75 0.5804 0.0804 0.0000 + 76 0.5882 0.0882 0.0000 + 77 0.5961 0.0961 0.0000 + 78 0.6039 0.1039 0.0000 + 79 0.6118 0.1118 0.0000 + 80 0.6196 0.1196 0.0000 + 81 0.6275 0.1275 0.0000 + 82 0.6353 0.1353 0.0000 + 83 0.6431 0.1431 0.0000 + 84 0.6510 0.1510 0.0000 + 85 0.6588 0.1588 0.0000 + 86 0.6667 0.1667 0.0000 + 87 0.6745 0.1745 0.0000 + 88 0.6824 0.1824 0.0000 + 89 0.6902 0.1902 0.0000 + 90 0.6980 0.1980 0.0000 + 91 0.7059 0.2059 0.0000 + 92 0.7137 0.2137 0.0000 + 93 0.7216 0.2216 0.0000 + 94 0.7294 0.2294 0.0000 + 95 0.7373 0.2373 0.0000 + 96 0.7451 0.2451 0.0000 + 97 0.7529 0.2529 0.0000 + 98 0.7608 0.2608 0.0000 + 99 0.7686 0.2686 0.0000 + 100 0.7765 0.2765 0.0000 + 101 0.7843 0.2843 0.0000 + 102 0.7922 0.2922 0.0000 + 103 0.8000 0.3000 0.0000 + 104 0.8078 0.3078 0.0000 + 105 0.8157 0.3157 0.0000 + 106 0.8235 0.3235 0.0000 + 107 0.8314 0.3314 0.0000 + 108 0.8392 0.3392 0.0000 + 109 0.8471 0.3471 0.0000 + 110 0.8549 0.3549 0.0000 + 111 0.8627 0.3627 0.0000 + 112 0.8706 0.3706 0.0000 + 113 0.8784 0.3784 0.0000 + 114 0.8863 0.3863 0.0000 + 115 0.8941 0.3941 0.0000 + 116 0.9020 0.4020 0.0000 + 117 0.9098 0.4098 0.0000 + 118 0.9176 0.4176 0.0000 + 119 0.9255 0.4255 0.0000 + 120 0.9333 0.4333 0.0000 + 121 0.9412 0.4412 0.0000 + 122 0.9490 0.4490 0.0000 + 123 0.9569 0.4569 0.0000 + 124 0.9647 0.4647 0.0000 + 125 0.9725 0.4725 0.0000 + 126 0.9804 0.4804 0.0000 + 127 0.9882 0.4882 0.0000 + 128 0.9961 0.4961 0.0000 + 129 1.0000 0.5039 0.0000 + 130 1.0000 0.5118 0.0118 + 131 1.0000 0.5196 0.0196 + 132 1.0000 0.5275 0.0275 + 133 1.0000 0.5353 0.0353 + 134 1.0000 0.5431 0.0431 + 135 1.0000 0.5510 0.0510 + 136 1.0000 0.5588 0.0588 + 137 1.0000 0.5667 0.0667 + 138 1.0000 0.5745 0.0745 + 139 1.0000 0.5824 0.0824 + 140 1.0000 0.5902 0.0902 + 141 1.0000 0.5980 0.0980 + 142 1.0000 0.6059 0.1059 + 143 1.0000 0.6137 0.1137 + 144 1.0000 0.6216 0.1216 + 145 1.0000 0.6294 0.1294 + 146 1.0000 0.6373 0.1373 + 147 1.0000 0.6451 0.1451 + 148 1.0000 0.6529 0.1529 + 149 1.0000 0.6608 0.1608 + 150 1.0000 0.6686 0.1686 + 151 1.0000 0.6765 0.1765 + 152 1.0000 0.6843 0.1843 + 153 1.0000 0.6922 0.1922 + 154 1.0000 0.7000 0.2000 + 155 1.0000 0.7078 0.2078 + 156 1.0000 0.7157 0.2157 + 157 1.0000 0.7235 0.2235 + 158 1.0000 0.7314 0.2314 + 159 1.0000 0.7392 0.2392 + 160 1.0000 0.7471 0.2471 + 161 1.0000 0.7549 0.2549 + 162 1.0000 0.7627 0.2627 + 163 1.0000 0.7706 0.2706 + 164 1.0000 0.7784 0.2784 + 165 1.0000 0.7863 0.2863 + 166 1.0000 0.7941 0.2941 + 167 1.0000 0.8020 0.3020 + 168 1.0000 0.8098 0.3098 + 169 1.0000 0.8176 0.3176 + 170 1.0000 0.8255 0.3255 + 171 1.0000 0.8333 0.3333 + 172 1.0000 0.8412 0.3412 + 173 1.0000 0.8490 0.3490 + 174 1.0000 0.8569 0.3569 + 175 1.0000 0.8647 0.3647 + 176 1.0000 0.8725 0.3725 + 177 1.0000 0.8804 0.3804 + 178 1.0000 0.8882 0.3882 + 179 1.0000 0.8961 0.3961 + 180 1.0000 0.9039 0.4039 + 181 1.0000 0.9118 0.4118 + 182 1.0000 0.9196 0.4196 + 183 1.0000 0.9275 0.4275 + 184 1.0000 0.9353 0.4353 + 185 1.0000 0.9431 0.4431 + 186 1.0000 0.9510 0.4510 + 187 1.0000 0.9588 0.4588 + 188 1.0000 0.9667 0.4667 + 189 1.0000 0.9745 0.4745 + 190 1.0000 0.9824 0.4824 + 191 1.0000 0.9902 0.4902 + 192 1.0000 0.9980 0.4980 + 193 1.0000 1.0000 0.5059 + 194 1.0000 1.0000 0.5137 + 195 1.0000 1.0000 0.5216 + 196 1.0000 1.0000 0.5294 + 197 1.0000 1.0000 0.5373 + 198 1.0000 1.0000 0.5451 + 199 1.0000 1.0000 0.5529 + 200 1.0000 1.0000 0.5608 + 201 1.0000 1.0000 0.5686 + 202 1.0000 1.0000 0.5765 + 203 1.0000 1.0000 0.5843 + 204 1.0000 1.0000 0.5922 + 205 1.0000 1.0000 0.6000 + 206 1.0000 1.0000 0.6078 + 207 1.0000 1.0000 0.6157 + 208 1.0000 1.0000 0.6235 + 209 1.0000 1.0000 0.6314 + 210 1.0000 1.0000 0.6392 + 211 1.0000 1.0000 0.6471 + 212 1.0000 1.0000 0.6549 + 213 1.0000 1.0000 0.6627 + 214 1.0000 1.0000 0.6706 + 215 1.0000 1.0000 0.6784 + 216 1.0000 1.0000 0.6863 + 217 1.0000 1.0000 0.6941 + 218 1.0000 1.0000 0.7020 + 219 1.0000 1.0000 0.7098 + 220 1.0000 1.0000 0.7176 + 221 1.0000 1.0000 0.7255 + 222 1.0000 1.0000 0.7333 + 223 1.0000 1.0000 0.7412 + 224 1.0000 1.0000 0.7490 + 225 1.0000 1.0000 0.7569 + 226 1.0000 1.0000 0.7647 + 227 1.0000 1.0000 0.7725 + 228 1.0000 1.0000 0.7804 + 229 1.0000 1.0000 0.7882 + 230 1.0000 1.0000 0.7961 + 231 1.0000 1.0000 0.8039 + 232 1.0000 1.0000 0.8118 + 233 1.0000 1.0000 0.8196 + 234 1.0000 1.0000 0.8275 + 235 1.0000 1.0000 0.8353 + 236 1.0000 1.0000 0.8431 + 237 1.0000 1.0000 0.8510 + 238 1.0000 1.0000 0.8588 + 239 1.0000 1.0000 0.8667 + 240 1.0000 1.0000 0.8745 + 241 1.0000 1.0000 0.8824 + 242 1.0000 1.0000 0.8902 + 243 1.0000 1.0000 0.8980 + 244 1.0000 1.0000 0.9059 + 245 1.0000 1.0000 0.9137 + 246 1.0000 1.0000 0.9216 + 247 1.0000 1.0000 0.9294 + 248 1.0000 1.0000 0.9373 + 249 1.0000 1.0000 0.9451 + 250 1.0000 1.0000 0.9529 + 251 1.0000 1.0000 0.9608 + 252 1.0000 1.0000 0.9686 + 253 1.0000 1.0000 0.9765 + 254 1.0 0.0 0.0 + 255 1.0 1.0 0.0 + 256 0.0 1.000 0.0 diff --git a/astro.cpp b/astro.cpp new file mode 100644 index 000000000..5fa98c2e7 --- /dev/null +++ b/astro.cpp @@ -0,0 +1,102 @@ +#include "astro.h" +#include "ui_astro.h" +#include +#include +#include +#include +#include "commons.h" + +Astro::Astro(QWidget *parent) : + QWidget(parent), + ui(new Ui::Astro) +{ + ui->setupUi(this); + ui->astroTextBrowser->setStyleSheet( + "QTextBrowser { background-color : cyan; color : black; }"); + ui->astroTextBrowser->clear(); +} + +Astro::~Astro() +{ + delete ui; +} + +void Astro::astroUpdate(QDateTime t, QString mygrid, QString hisgrid, + int fQSO, int nsetftx, int ntxFreq, QString azelDir) +{ + static int ntxFreq0=-99; + static bool astroBusy=false; + char cc[300]; + double azsun,elsun,azmoon,elmoon,azmoondx,elmoondx; + double ramoon,decmoon,dgrd,poloffset,xnr; + int ntsky,ndop,ndop00; + QString date = t.date().toString("yyyy MMM dd"); + QString utc = t.time().toString(); + int nyear=t.date().year(); + int month=t.date().month(); + int nday=t.date().day(); + int nhr=t.time().hour(); + int nmin=t.time().minute(); + double sec=t.time().second() + 0.001*t.time().msec(); + int isec=sec; + double uth=nhr + nmin/60.0 + sec/3600.0; + int nfreq=(int)datcom_.fcenter; + if(nfreq<10 or nfreq > 50000) nfreq=144; + + if(!astroBusy) { + astroBusy=true; + astrosub_(&nyear, &month, &nday, &uth, &nfreq, mygrid.toAscii(), + hisgrid.toAscii(), &azsun, &elsun, &azmoon, &elmoon, + &azmoondx, &elmoondx, &ntsky, &ndop, &ndop00,&ramoon, &decmoon, + &dgrd, &poloffset, &xnr, 6, 6); + astroBusy=false; + } + + sprintf(cc,"Az: %6.1f\n" + "El: %6.1f\n" + "Dec: %6.1f\n" + "DxAz: %6.1f\n" + "DxEl: %6.1f\n" + "SunAz: %6.1f\n" + "SunEl: %6.1f\n" + "Dop: %6d\n" + "DXDop: %6d\n" + "Tsky: %6d\n" + "MNR: %6.1f\n" + "Dgrd: %6.1f", + azmoon,elmoon,decmoon,azmoondx,elmoondx,azsun,elsun, + ndop,ndop00,ntsky,xnr,dgrd); + ui->astroTextBrowser->setText(" "+ date + "\nUTC: " + utc + "\n" + cc); + + QString fname=azelDir+"/azel.dat"; + QFile f(fname); + if(!f.open(QIODevice::WriteOnly | QIODevice::Text)) { + QMessageBox mb; + mb.setText("Cannot open " + fname); + mb.exec(); + return; + } + int ndiff=0; + if(ntxFreq != ntxFreq0) ndiff=1; + ntxFreq0=ntxFreq; + QTextStream out(&f); + sprintf(cc,"%2.2d:%2.2d:%2.2d,%5.1f,%5.1f,Moon\n" + "%2.2d:%2.2d:%2.2d,%5.1f,%5.1f,Sun\n" + "%2.2d:%2.2d:%2.2d,%5.1f,%5.1f,Source\n" + "%4d,%6d,Doppler\n" + "%3d,%1d,fQSO\n" + "%3d,%1d,fQSO2\n", + nhr,nmin,isec,azmoon,elmoon, + nhr,nmin,isec,azsun,elsun, + nhr,nmin,isec,0.0,0.0, + nfreq,ndop, + fQSO,nsetftx, + ntxFreq,ndiff); + out << cc; + f.close(); +} + +void Astro::setFontSize(int n) +{ + ui->astroTextBrowser->setFontPointSize(n); +} diff --git a/astro.f b/astro.f deleted file mode 100644 index 5883318ad..000000000 --- a/astro.f +++ /dev/null @@ -1,115 +0,0 @@ - subroutine astro(AppDir,nyear,month,nday,uth,nfreq,Mygrid, - + NStation,mode,MoonDX,AzSun,ElSun,AzMoon,ElMoon0, - + ntsky,doppler00,doppler,dbMoon,RAMoon,DecMoon,HA,Dgrd,sd, - + poloffset,xnr,auxra,auxdec,azaux,elaux) - -C Computes astronomical quantities for display in JT65, CW, and EME Echo mode. -C NB: may want to smooth the Tsky map to 10 degrees or so. - - character*80 AppDir,fname - character*6 MyGrid,HisGrid - logical first,ltsky - real LST - real lat,lon - real ldeg - integer*1 n1sky(129600) - integer*2 nsky - common/sky/ nsky(360,180) - common/echo/xdop(2),techo,ElMoon,mjd - equivalence (n1sky,nsky) - data first/.true./ - data rad/57.2957795/ - save - - if(first) then - do i=80,1,-1 - if(ichar(AppDir(i:i)).ne.0 .and. - + ichar(AppDir(i:i)).ne.32) go to 1 - enddo - 1 lenappdir=i - call zero(nsky,180*180) - fname=Appdir(1:lenappdir)//'/TSKY.DAT' - call cs_lock('astro') -#ifdef CVF - open(13,file=fname,status='old',form='binary',err=10) - read(13) nsky - close(13) -#else - open(13,file=fname,status='old',access='stream',err=10) - read(13) nsky - close(13) -#endif - ltsky=.true. - first=.false. - call cs_unlock - endif - go to 20 - 10 ltsky=.false. - call cs_unlock - - 20 call grid2deg(MyGrid,elon,lat) - lon=-elon - call sun(nyear,month,nday,uth,lon,lat,RASun,DecSun,LST, - + AzSun,ElSun,mjd) - - freq=nfreq*1.e6 - - call MoonDop(nyear,month,nday,uth,lon,lat,RAMoon,DecMoon, - + LST,HA,AzMoon,ElMoon,ldeg,bdeg,vr,dist) - -C Compute spatial polarization offset - xx=sin(lat/rad)*cos(ElMoon/rad) - cos(lat/rad)* - + cos(AzMoon/rad)*sin(ElMoon/rad) - yy=cos(lat/rad)*sin(AzMoon/rad) - if(NStation.eq.1) poloffset1=rad*atan2(yy,xx) - if(NStation.eq.2) poloffset2=rad*atan2(yy,xx) - - techo=2.0 * dist/2.99792458e5 !Echo delay time - doppler=-freq*vr/2.99792458e5 !One-way Doppler - t408=ftsky(ldeg,bdeg) !Read sky map - tsky=t408*(408.0/nfreq)**2.6 !Tsky for obs freq - if(ltsky.and.(tsky.lt.3.0)) tsky=3.0 !Minimum = 3 Kelvin - - xdop(NStation)=doppler - if(NStation.eq.2) then - HisGrid=MyGrid - go to 900 - endif - - doppler00=2.0*xdop(1) - if(mode.eq.2 .or. mode.eq.5) doppler=xdop(1)+xdop(2) - if(mode.eq.3) doppler=2.0*xdop(1) - dBMoon=-40.0*log10(dist/356903.) - sd=16.23*370152.0/dist - -! if(NStation.eq.1 .and. MoonDX.ne.0 .and. -! + (mode.eq.2 .or. mode.eq.5)) then - if(NStation.eq.1 .and. MoonDX.ne.0) then - poloffset=mod(poloffset2-poloffset1+720.0,180.0) - if(poloffset.gt.90.0) poloffset=poloffset-180.0 - x1=abs(cos(2*poloffset/rad)) - if(x1.lt.0.056234) x1=0.056234 - xnr=-20.0*log10(x1) - if(HisGrid(1:1).lt.'A' .or. HisGrid(1:1).gt.'Z') xnr=0 - endif - - tr=80.0 !Good preamp - tskymin=13.0*(408.0/nfreq)**2.6 !Cold sky temperature - tsysmin=tskymin+tr - tsys=tsky+tr - dgrd=-10.0*log10(tsys/tsysmin) + dbMoon - - 900 ElMoon0=Elmoon - ntsky=nint(tsky) - - auxHA = 15.0*(LST-auxra) !HA in degrees - pi=3.14159265 - pio2=0.5*pi - call coord(pi,pio2-lat/rad,0.0,lat/rad,auxha*pi/180.0, - + auxdec/rad,azaux,elaux) - AzAux=azaux*rad - ElAux=ElAux*rad - - return - - end diff --git a/astro.h b/astro.h new file mode 100644 index 000000000..bf8f0107c --- /dev/null +++ b/astro.h @@ -0,0 +1,35 @@ +#ifndef ASTRO_H +#define ASTRO_H + +#include +#include + +namespace Ui { + class Astro; +} + +class Astro : public QWidget +{ + Q_OBJECT + +public: + explicit Astro(QWidget *parent = 0); + void astroUpdate(QDateTime t, QString mygrid, QString hisgrid, + int fQSO, int nsetftx, int ntxFreq, QString azelDir); + void setFontSize(int n); + ~Astro(); + +private: + Ui::Astro *ui; +}; + +extern "C" { + void astrosub_(int* nyear, int* month, int* nday, double* uth, int* nfreq, + const char* mygrid, const char* hisgrid, double* azsun, + double* elsun, double* azmoon, double* elmoon, double* azmoondx, + double* elmoondx, int* ntsky, int* ndop, int* ndop00, + double* ramoon, double* decmoon, double* dgrd, double* poloffset, + double* xnr, int len1, int len2); +} + +#endif // ASTRO_H diff --git a/astro.py b/astro.py deleted file mode 100644 index f88f0042f..000000000 --- a/astro.py +++ /dev/null @@ -1,52 +0,0 @@ -#------------------------------------------------------ astro -from Tkinter import * -import Pmw -import g - -def done(): - g.astro_geom0=root.geometry() - root.withdraw() - -root=Toplevel() -root.withdraw() -root.protocol('WM_DELETE_WINDOW',done) -if g.Win32: root.iconbitmap("wsjt.ico") -root.title("AstroData") -frame=Frame(root) -frame.pack() - -def astro2(t): - root.geometry(t) - root.deiconify() - root.focus_set() - -def update(): - t1= " Az El\n" - t2= "Moon: %6.2f %6.2f\n" % (g.AzMoon,g.ElMoon) - t3= "Moon/DX: %6.2f %6.2f\n" % (g.AzMoonB,g.ElMoonB) - t4= "Sun: %6.2f %6.2f\n" % (g.AzSun,g.ElSun) - t4a="Source: %6.2f %6.2f\n\n" % (g.AzAux,g.ElAux) - t5= " Doppler df/dt\n" - t6= "DX: %7d %7.2f\n" % (g.ndop,g.dfdt) - t7= "Self: %7d %7.2f\n\n" % (g.ndop00,g.dfdt0) - t7a=" RA DEC\n" - irah=int(g.RAMoon) - iram=int(60.0*(g.RAMoon-irah)) - t7b="Moon: %2.2d:%2.2d %6.2f\n" % (irah,iram,g.DecMoon) - irah=int(g.RaAux) - iram=int(60.0*(g.RaAux-irah)) - t7c="Source: %2.2d:%2.2d %6.2f\n\n" % (irah,iram,g.DecAux) - t8= "Freq: %4d Tsky:%6d\n" % (g.nfreq,g.ntsky) - t9= "MNR: %5.1f Dgrd:%6.1f\n" % (g.MaxNR,g.Dgrd) - t10="DPol: %4d SD:%8.2f\n" % (g.poloffset,g.sd) - t=t1+t2+t3+t4+t4a+t5+t6+t7+t7a+t7b+t7c+t8+t9+t10 - lab1.configure(text=t) - g.astro_geom=root.geometry() - frame.after(1000,update) - -g2font=g.g2font -lab1=Label(frame,font=g2font,justify=LEFT,bg="#66FFFF", - relief=RIDGE,bd=4,anchor=N) -lab1.pack(ipadx=4) - -frame.after(1000,update) diff --git a/astro.ui b/astro.ui new file mode 100644 index 000000000..99be8538f --- /dev/null +++ b/astro.ui @@ -0,0 +1,37 @@ + + + Astro + + + + 0 + 0 + 262 + 427 + + + + Form + + + + + 0 + 10 + 256 + 411 + + + + + Courier New + 20 + 75 + true + + + + + + + diff --git a/astro0.f90 b/astro0.f90 deleted file mode 100644 index f2420fabb..000000000 --- a/astro0.f90 +++ /dev/null @@ -1,123 +0,0 @@ -subroutine astro0(nyear,month,nday,uth8,nfreq,grid,cauxra,cauxdec, & - AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00, & - dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,sd8,poloffset8,xnr8,dfdt,dfdt0, & - RaAux8,DecAux8,AzAux8,ElAux8) - -!f2py intent(in) nyear,month,nday,uth8,nfreq,grid,cauxra,cauxdec -!f2py intent(out) AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00,dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,sd8,poloffset8,xnr8,dfdt,dfdt0,RaAux8,DecAux8,AzAux8,ElAux8 - - character grid*6 - character*9 cauxra,cauxdec - real*8 AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,AzAux8,ElAux8 - real*8 dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,xnr8,dfdt,dfdt0 - real*8 sd8,poloffset8 - include 'gcom2.f90' - data uth8z/0.d0/,imin0/-99/ - save - - call cs_lock('astro0a') - auxra=0. - i=index(cauxra,':') - if(i.eq.0) then - read(cauxra,*,err=1,end=1) auxra - else - read(cauxra(1:i-1),*,err=1,end=1) ih - read(cauxra(i+1:i+2),*,err=1,end=1) im - read(cauxra(i+4:i+5),*,err=1,end=1) is - auxra=ih + im/60.0 + is/3600.0 - endif -1 auxdec=0. - i=index(cauxdec,':') - if(i.eq.0) then - read(cauxdec,*,err=2,end=2) auxdec - else - read(cauxdec(1:i-1),*,err=2,end=2) id - read(cauxdec(i+1:i+2),*,err=2,end=2) im - read(cauxdec(i+4:i+5),*,err=2,end=2) is - auxdec=abs(id) + im/60.0 + is/3600.0 - if(cauxdec(1:1).eq.'-') auxdec=-auxdec - endif - -2 nmode=1 - if(mode(1:4).eq.'JT65') then - nmode=2 - if(mode(5:5).eq.'A') mode65=1 - if(mode(5:5).eq.'B') mode65=2 - if(mode(5:5).eq.'C') mode65=4 - endif - if(mode.eq.'Echo') nmode=3 - if(mode.eq.'JT6M') nmode=4 - uth=uth8 - - call cs_unlock - call astro(AppDir,nyear,month,nday,uth,nfreq,hisgrid,2,nmode,1, & - AzSun,ElSun,AzMoon,ElMoon,ntsky,doppler00,doppler, & - dbMoon,RAMoon,DecMoon,HA,Dgrd,sd,poloffset,xnr,auxra,auxdec, & - AzAux,ElAux) - AzMoonB8=AzMoon - ElMoonB8=ElMoon - call astro(AppDir,nyear,month,nday,uth,nfreq,grid,1,nmode,1, & - AzSun,ElSun,AzMoon,ElMoon,ntsky,doppler00,doppler, & - dbMoon,RAMoon,DecMoon,HA,Dgrd,sd,poloffset,xnr,auxra,auxdec, & - AzAux,ElAux) - - RaAux8=auxra - DecAux8=auxdec - AzSun8=AzSun - ElSun8=ElSun - AzMoon8=AzMoon - ElMoon8=ElMoon - dbMoon8=dbMoon - RAMoon8=RAMoon/15.0 - DecMoon8=DecMoon - HA8=HA - Dgrd8=Dgrd - sd8=sd - poloffset8=poloffset - xnr8=xnr - AzAux8=AzAux - ElAux8=ElAux - ndop=nint(doppler) - ndop00=nint(doppler00) - - if(uth8z.eq.0.d0) then - uth8z=uth8-1.d0/3600.d0 - dopplerz=doppler - doppler00z=doppler00 - endif - - dt=60.0*(uth8-uth8z) - if(dt.le.0) dt=1.d0/60.d0 - dfdt=(doppler-dopplerz)/dt - dfdt0=(doppler00-doppler00z)/dt - uth8z=uth8 - dopplerz=doppler - doppler00z=doppler00 - - imin=60*uth8 - isec=3600*uth8 - - if(isec.ne.isec0 .and. ndecoding.eq.0) then - call cs_lock('astro0b') - ih=uth8 - im=mod(imin,60) - is=mod(isec,60) - rewind 14 - write(14,1010) ih,im,is,AzMoon,ElMoon, & - ih,im,is,AzSun,ElSun, & - ih,im,is,AzAux,ElAux, & - nfreq,doppler,dfdt,doppler00,dfdt0, & - mousefqso,nsetftx -1010 format(i2.2,':',i2.2,':',i2.2,',',f5.1,',',f5.1,',Moon'/ & - i2.2,':',i2.2,':',i2.2,',',f5.1,',',f5.1,',Sun'/ & - i2.2,':',i2.2,':',i2.2,',',f5.1,',',f5.1,',Source'/ & - i4,',',f8.1,',',f8.2,',',f8.1,',',f8.2,',Doppler'/ & - i4,',',i1,',fQSO') - call flushqqq(14) - nsetftx=0 - isec0=isec - call cs_unlock - endif - - return -end subroutine astro0 diff --git a/astropak.f b/astropak.f deleted file mode 100644 index d28781e4b..000000000 --- a/astropak.f +++ /dev/null @@ -1,14 +0,0 @@ -! include 'astro.f' - include 'azdist.f' - include 'coord.f' - include 'dcoord.f' - include 'deg2grid.f' - include 'dot.f' - include 'ftsky.f' - include 'geocentric.f' - include 'GeoDist.f' - include 'grid2deg.f' - include 'moon2.f' - include 'MoonDop.f' - include 'sun.f' - include 'toxyz.f' diff --git a/audio_init.f90 b/audio_init.f90 deleted file mode 100644 index 0b74f3acf..000000000 --- a/audio_init.f90 +++ /dev/null @@ -1,74 +0,0 @@ -!------------------------------------------------ audio_init -subroutine audio_init(ndin,ndout) - -#ifdef CVF - use dfmt - integer Thread1,Thread2,Thread3 - external a2d,decode1,recvpkt -#endif - - include 'gcom1.f90' - include 'gcom2.f90' - - nmode=2 - if(mode(5:5).eq.'A') mode65=1 - if(mode(5:5).eq.'B') mode65=2 - if(mode(5:5).eq.'C') mode65=4 - ndevout=ndout - TxOK=0 - Transmitting=0 - nfsample=11025 - nspb=1024 - nbufs=2048 - nmax=nbufs*nspb - nwave=60*nfsample - ngo=1 - f0=800.0 - do i=1,nwave - iwave(i)=nint(32767.0*sin(6.283185307*i*f0/nfsample)) - enddo - -#ifdef CVF -! Priority classes (for processes): -! IDLE_PRIORITY_CLASS 64 -! NORMAL_PRIORITY_CLASS 32 -! HIGH_PRIORITY_CLASS 128 - -! Priority definitions (for threads): -! THREAD_PRIORITY_IDLE -15 -! THREAD_PRIORITY_LOWEST -2 -! THREAD_PRIORITY_BELOW_NORMAL -1 -! THREAD_PRIORITY_NORMAL 0 -! THREAD_PRIORITY_ABOVE_NORMAL 1 -! THREAD_PRIORITY_HIGHEST 2 -! THREAD_PRIORITY_TIME_CRITICAL 15 - - m0=SetPriorityClass(GetCurrentProcess(),NORMAL_PRIORITY_CLASS) -! m0=SetPriorityClass(GetCurrentProcess(),HIGH_PRIORITY_CLASS) - -! Start a thread for doing A/D and D/A with sound card. -! (actually, only D/A is used in MAP65) - Thread1=CreateThread(0,0,a2d,0,CREATE_SUSPENDED,id1) - m1=SetThreadPriority(Thread1,THREAD_PRIORITY_ABOVE_NORMAL) - m2=ResumeThread(Thread1) - -! Start a thread for background decoding. - Thread2=CreateThread(0,0,decode1,0,CREATE_SUSPENDED,id2) - m3=SetThreadPriority(Thread2,THREAD_PRIORITY_BELOW_NORMAL) - m4=ResumeThread(Thread2) - -! Start a thread to receive packets from Linrad - Thread3=CreateThread(0,0,recvpkt,0,CREATE_SUSPENDED,id3) - m5=SetThreadPriority(Thread3,THREAD_PRIORITY_ABOVE_NORMAL) - m6=ResumeThread(Thread3) - -#else -! print*,'Audio INIT called.' - ierr=start_threads(ndevin,ndevout,y1,y2,nmax,iwrite,iwave,nwave, & - 11025,NSPB,TRPeriod,TxOK,ndebug,Transmitting, & - Tsec,ngo,nmode,tbuf,ibuf,ndsec,PttPort,devin_name,devout_name) - -#endif - - return -end subroutine audio_init diff --git a/avecom.h b/avecom.h deleted file mode 100644 index 6cc378569..000000000 --- a/avecom.h +++ /dev/null @@ -1,4 +0,0 @@ - parameter (MAXAVE=120) - common/ave/ppsave(64,63,MAXAVE),nflag(MAXAVE),nsave, - + iseg(MAXAVE) - diff --git a/avemsg65.f b/avemsg65.f deleted file mode 100644 index 2bf306863..000000000 --- a/avemsg65.f +++ /dev/null @@ -1,64 +0,0 @@ - subroutine avemsg65(mseg,mode65,ndepth,decoded,nused, - + nq1,nq2,neme,nsked,mycall,hiscall,hisgrid,qual, - + ns,ncount) - -C Decodes averaged JT65 data for the specified segment (mseg=1 or 2). - - parameter (MAXAVE=120) !Max avg count is 120 - character decoded*22,deepmsg*22 - character mycall*12,hiscall*12,hisgrid*6 - real s3(64,63) - logical ltext - common/ave/ppsave(64,63,MAXAVE),nflag(MAXAVE),nsave,iseg(MAXAVE) - -C Count the available spectra for this Monitor segment (mseg=1 or 2), -C and the number of spectra flagged as good. - - nused=0 - ns=0 - nqual=0 - deepmsg=' ' - do i=1,nsave - if(iseg(i).eq.mseg) then - ns=ns+1 - if(nflag(i).eq.1) nused=nused+1 - endif - enddo - if(nused.lt.1) go to 100 - -C Compute the average of all flagged spectra for this segment. - do j=1,63 - call zero(s3(1,j),64) - do n=1,nsave - if(nflag(n).eq.1 .and. iseg(n).eq.mseg) then - call add(s3(1,j),ppsave(1,j,n),s3(1,j),64) - endif - enddo - enddo - - nadd=nused*mode65 - call extract(s3,nadd,ncount,decoded,ltext) !Extract the message - if(ncount.lt.0) decoded=' ' - - nqual=0 -C Possibly should pass nadd=nused, also: - if(ndepth.ge.3) then - flipx=1.0 !Normal flip not relevant for ave msg - call deep65(s3,mode65,neme,nsked,flipx, - + mycall,hiscall,hisgrid,deepmsg,qual) - nqual=qual - if(nqual.lt.nq1) deepmsg=' ' - if(nqual.ge.nq1 .and. nqual.lt.nq2) deepmsg(19:19)='?' - else - deepmsg=' ' - qual=0. - endif - if(ncount.lt.0) decoded=deepmsg - -C Suppress "birdie messages": - if(decoded(1:7).eq.'000AAA ') decoded=' ' - if(decoded(1:7).eq.'0L6MWK ') decoded=' ' - - 100 if(nused.lt.1) decoded=' ' - return - end diff --git a/azdist.f b/azdist.f deleted file mode 100644 index 9f02ee231..000000000 --- a/azdist.f +++ /dev/null @@ -1,108 +0,0 @@ - subroutine azdist(MyGrid,HisGrid,utch,nAz,nEl,nDmiles,nDkm, - + nHotAz,nHotABetter) - - character*6 MyGrid,HisGrid,mygrid0,hisgrid0 - real*8 utch,utch0 - logical HotABetter,IamEast - real eltab(22),daztab(22) - data eltab/18.,15.,13.,11.,9.,8.,7.,6.,5.3,4.7,4.,3.3,2.7, - + 2.,1.5,1.,0.8,0.6,0.4,0.2,0.0,0.0/ - data daztab/21.,18.,16.,15.,14.,13.,12.,11.,10.7,10.3,10., - + 10.,10.,10.,10.,10.,10.,9.,9.,9.,8.,8./ - data mygrid0/" "/,hisgrid0/" "/,utch0/-999.d0/ - save - - if(MyGrid.eq.HisGrid) then - naz=0 - nel=0 - ndmiles=0 - ndkm=0 - nhotaz=0 - nhotabetter=1 - go to 999 - endif - - if(mygrid.eq.mygrid0 .and. hisgrid.eq.hisgrid0 .and. - + abs(utch-utch0).lt.0.1666667d0) go to 900 - utch0=utch - mygrid0=mygrid - hisgrid0=hisgrid - utchours=utch - - if(MyGrid(5:5).eq.' ') MyGrid(5:5)='m' - if(MyGrid(6:6).eq.' ') MyGrid(6:6)='m' - if(HisGrid(5:5).eq.' ') HisGrid(5:5)='m' - if(HisGrid(6:6).eq.' ') HisGrid(6:6)='m' - - if(MyGrid.eq.HisGrid) then - Az=0. - Dmiles=0. - Dkm=0.0 - El=0. - HotA=0. - HotB=0. - HotABetter=.true. - go to 900 - endif - - call grid2deg(MyGrid,dlong1,dlat1) - call grid2deg(HisGrid,dlong2,dlat2) - call geodist(dlat1,dlong1,dlat2,dlong2,Az,Baz,Dkm) - - ndkm=Dkm/100 - j=ndkm-4 - if(j.lt.1) j=1 - if(j.gt.21)j=21 - if(Dkm.lt.500.0) then - El=18.0 - else - u=(Dkm-100.0*ndkm)/100.0 - El=(1.0-u)*eltab(j) + u*eltab(j+1) - endif - - daz=daztab(j) + u * (daztab(j+1)-daztab(j)) - Dmiles=Dkm/1.609344 - - tmid=mod(UTChours-0.5*(dlong1+dlong2)/15.0+48.0,24.0) - IamEast=.false. - if(dlong1.lt.dlong2) IamEast=.true. - if(dlong1.eq.dlong2 .and. dlat1.gt.dlat2) IamEast=.false. - azEast=baz - if(IamEast) azEast=az - if((azEast.ge.45.0 .and. azEast.lt.135.0) .or. - + (azEast.ge.225.0 .and. azEast.lt.315.0)) then -C The path will be taken as "east-west". - HotABetter=.true. - if(abs(tmid-6.0).lt.6.0) HotABetter=.false. - if((dlat1+dlat2)/2.0 .lt. 0.0) HotABetter=.not.HotABetter - else -C The path will be taken as "north-south". - HotABetter=.false. - if(abs(tmid-12.0).lt.6.0) HotABetter=.true. - endif - if(IamEast) then - HotA = Az - daz - HotB = Az + daz - else - HotA = Az + daz - HotB = Az - daz - endif - if(HotA.lt.0.0) HotA=HotA+360.0 - if(HotA.gt.360.0) HotA=HotA-360.0 - if(HotB.lt.0.0) HotB=HotB+360.0 - if(HotB.gt.360.0) HotB=HotB-360.0 - - 900 continue - naz=nint(Az) - nel=nint(el) - nDmiles=nint(Dmiles) - nDkm=nint(Dkm) - nHotAz=nint(HotB) - nHotABetter=0 - if(HotABetter) then - nHotAz=nint(HotA) - nHotABetter=1 - endif - - 999 return - end diff --git a/azdist0.f90 b/azdist0.f90 deleted file mode 100644 index 618c32d25..000000000 --- a/azdist0.f90 +++ /dev/null @@ -1,14 +0,0 @@ - -!---------------------------------------------------- azdist0 - -subroutine azdist0(MyGrid,HisGrid,utch,nAz,nEl,nDmiles,nDkm,nHotAz,nHotABetter) - character*6 MyGrid,HisGrid - real*8 utch -!f2py intent(in) MyGrid,HisGrid,utch -!f2py intent(out) nAz,nEl,nDmiles,nDkm,nHotAz,nHotABetter - - if(hisgrid(5:5).eq.' ' .or. ichar(hisgrid(5:5)).eq.0) hisgrid(5:5)='m' - if(hisgrid(6:6).eq.' ' .or. ichar(hisgrid(6:6)).eq.0) hisgrid(6:6)='m' - call azdist(MyGrid,HisGrid,utch,nAz,nEl,nDmiles,nDkm,nHotAz,nHotABetter) - return -end subroutine azdist0 diff --git a/bandmap.cpp b/bandmap.cpp new file mode 100644 index 000000000..deb3ed775 --- /dev/null +++ b/bandmap.cpp @@ -0,0 +1,89 @@ +#include "bandmap.h" +#include "ui_bandmap.h" +#include + +BandMap::BandMap(QWidget *parent) : + QWidget(parent), + ui(new Ui::BandMap) +{ + ui->setupUi(this); + ui->bmTextBrowser->setStyleSheet( + "QTextBrowser { background-color : #000066; color : red; }"); + m_bandMapText=""; + ui->bmTextBrowser->clear(); +} + +BandMap::~BandMap() +{ + delete ui; +} + +void BandMap::setText(QString t) +{ + m_bandMapText=t; + int w=ui->bmTextBrowser->size().width(); + int ncols=1; + if(w>220) ncols=2; + QString s="QTextBrowser{background-color: "+m_colorBackground+"}"; + ui->bmTextBrowser->setStyleSheet(s); + QString t0="" + "
    \n"; + QString tfreq,tspace,tcall; + QString s0,s1,s2,s3,bg; + bg="."; + s0=""; + s1=""; + s2=""; + s3=""; + + ui->bmTextBrowser->clear(); + QStringList lines = t.split( "\n", QString::SkipEmptyParts ); + int nrows=(lines.length()+ncols-1)/ncols; + + for(int i=0; i=3) t0 += s3; + t0 += (tfreq + tspace + tcall + "
    \n"); + } + + if(ncols==2) { //2-column display + t0 += "

    \n"; + for(int i=nrows; i=3) t0 += s3; + t0 += (tfreq + tspace + tcall + "
    \n"); + } + if(2*nrows>lines.length()) t0 += (s0 + "
    \n"); + } + ui->bmTextBrowser->setHtml(t0); +} + +void BandMap::resizeEvent(QResizeEvent* ) +{ + setText(m_bandMapText); +} + +void BandMap::setColors(QString t) +{ + m_colorBackground = "#"+t.mid(0,6); + m_color0 = "#"+t.mid(6,6); + m_color1 = "#"+t.mid(12,6); + m_color2 = "#"+t.mid(18,6); + m_color3 = "#"+t.mid(24,6); + setText(m_bandMapText); +} diff --git a/bandmap.h b/bandmap.h new file mode 100644 index 000000000..c20069375 --- /dev/null +++ b/bandmap.h @@ -0,0 +1,34 @@ +#ifndef BANDMAP_H +#define BANDMAP_H + +#include + +namespace Ui { + class BandMap; +} + +class BandMap : public QWidget +{ + Q_OBJECT + +public: + explicit BandMap(QWidget *parent = 0); + void setText(QString t); + void setColors(QString t); + + ~BandMap(); + +protected: + void resizeEvent(QResizeEvent* event); + +private: + Ui::BandMap *ui; + QString m_bandMapText; + QString m_colorBackground; + QString m_color0; + QString m_color1; + QString m_color2; + QString m_color3; +}; + +#endif // BANDMAP_H diff --git a/bandmap.ui b/bandmap.ui new file mode 100644 index 000000000..4eca022b7 --- /dev/null +++ b/bandmap.ui @@ -0,0 +1,43 @@ + + + BandMap + + + + 0 + 0 + 329 + 379 + + + + + 0 + 0 + + + + Form + + + + + + + 107 + 0 + + + + + Courier New + 9 + + + + + + + + + diff --git a/blue.dat b/blue.dat new file mode 100644 index 000000000..d9fc8863d --- /dev/null +++ b/blue.dat @@ -0,0 +1,256 @@ + 0 0.0000 0.0000 0.0000 + 1 0.0902 0.0902 0.2558 + 2 0.1176 0.1176 0.2694 + 3 0.1412 0.1412 0.2820 + 4 0.1569 0.1569 0.2938 + 5 0.1725 0.1725 0.3049 + 6 0.1843 0.1843 0.3154 + 7 0.1961 0.1961 0.3254 + 8 0.2039 0.2039 0.3349 + 9 0.2157 0.2157 0.3440 + 10 0.2235 0.2235 0.3528 + 11 0.2314 0.2314 0.3612 + 12 0.2392 0.2392 0.3693 + 13 0.2471 0.2471 0.3772 + 14 0.2549 0.2549 0.3848 + 15 0.2588 0.2588 0.3921 + 16 0.2667 0.2667 0.3992 + 17 0.2706 0.2706 0.4061 + 18 0.2784 0.2784 0.4129 + 19 0.2824 0.2824 0.4194 + 20 0.2902 0.2902 0.4258 + 21 0.2941 0.2941 0.4319 + 22 0.2980 0.2980 0.4380 + 23 0.3059 0.3059 0.4439 + 24 0.3098 0.3098 0.4496 + 25 0.3137 0.3137 0.4553 + 26 0.3176 0.3176 0.4608 + 27 0.3216 0.3216 0.4661 + 28 0.3294 0.3294 0.4714 + 29 0.3333 0.3333 0.4765 + 30 0.3373 0.3373 0.4815 + 31 0.3412 0.3412 0.4865 + 32 0.3451 0.3451 0.4913 + 33 0.3490 0.3490 0.4960 + 34 0.3529 0.3529 0.5006 + 35 0.3569 0.3569 0.5052 + 36 0.3608 0.3608 0.5096 + 37 0.3647 0.3647 0.5140 + 38 0.3686 0.3686 0.5183 + 39 0.3725 0.3725 0.5225 + 40 0.3765 0.3765 0.5266 + 41 0.3804 0.3804 0.5306 + 42 0.3843 0.3843 0.5346 + 43 0.3843 0.3843 0.5385 + 44 0.3882 0.3882 0.5423 + 45 0.3922 0.3922 0.5460 + 46 0.3961 0.3961 0.5497 + 47 0.4000 0.4000 0.5533 + 48 0.4039 0.4039 0.5569 + 49 0.4078 0.4078 0.5603 + 50 0.4118 0.4118 0.5638 + 51 0.4118 0.4118 0.5671 + 52 0.4157 0.4157 0.5704 + 53 0.4196 0.4196 0.5736 + 54 0.4235 0.4235 0.5768 + 55 0.4275 0.4275 0.5799 + 56 0.4314 0.4314 0.5829 + 57 0.4314 0.4314 0.5859 + 58 0.4353 0.4353 0.5889 + 59 0.4392 0.4392 0.5917 + 60 0.4431 0.4431 0.5946 + 61 0.4471 0.4471 0.5973 + 62 0.4471 0.4471 0.6001 + 63 0.4510 0.4510 0.6027 + 64 0.4549 0.4549 0.6053 + 65 0.4588 0.4588 0.6079 + 66 0.4627 0.4627 0.6104 + 67 0.4627 0.4627 0.6129 + 68 0.4667 0.4667 0.6153 + 69 0.4706 0.4706 0.6176 + 70 0.4745 0.4745 0.6199 + 71 0.4745 0.4745 0.6222 + 72 0.4784 0.4784 0.6244 + 73 0.4824 0.4824 0.6266 + 74 0.4863 0.4863 0.6287 + 75 0.4863 0.4863 0.6308 + 76 0.4902 0.4902 0.6328 + 77 0.4941 0.4941 0.6348 + 78 0.4980 0.4980 0.6367 + 79 0.5020 0.5020 0.6386 + 80 0.5020 0.5020 0.6404 + 81 0.5059 0.5059 0.6422 + 82 0.5098 0.5098 0.6440 + 83 0.5098 0.5098 0.6457 + 84 0.5137 0.5137 0.6474 + 85 0.5176 0.5176 0.6490 + 86 0.5216 0.5216 0.6506 + 87 0.5216 0.5216 0.6521 + 88 0.5255 0.5255 0.6536 + 89 0.5294 0.5294 0.6551 + 90 0.5333 0.5333 0.6565 + 91 0.5333 0.5333 0.6578 + 92 0.5373 0.5373 0.6591 + 93 0.5412 0.5412 0.6604 + 94 0.5451 0.5451 0.6617 + 95 0.5451 0.5451 0.6629 + 96 0.5490 0.5490 0.6640 + 97 0.5529 0.5529 0.6651 + 98 0.5569 0.5569 0.6662 + 99 0.5569 0.5569 0.6672 + 100 0.5608 0.5608 0.6682 + 101 0.5647 0.5647 0.6692 + 102 0.5647 0.5647 0.6701 + 103 0.5686 0.5686 0.6710 + 104 0.5725 0.5725 0.6718 + 105 0.5765 0.5765 0.6726 + 106 0.5765 0.5765 0.6733 + 107 0.5804 0.5804 0.6740 + 108 0.5843 0.5843 0.6747 + 109 0.5843 0.5843 0.6753 + 110 0.5882 0.5882 0.6759 + 111 0.5922 0.5922 0.6765 + 112 0.5961 0.5961 0.6770 + 113 0.5961 0.5961 0.6774 + 114 0.6000 0.6000 0.6779 + 115 0.6039 0.6039 0.6783 + 116 0.6039 0.6039 0.6786 + 117 0.6078 0.6078 0.6789 + 118 0.6118 0.6118 0.6792 + 119 0.6157 0.6157 0.6794 + 120 0.6157 0.6157 0.6796 + 121 0.6196 0.6196 0.6798 + 122 0.6235 0.6235 0.6799 + 123 0.6235 0.6235 0.6800 + 124 0.6275 0.6275 0.6800 + 125 0.6314 0.6314 0.6800 + 126 0.6353 0.6353 0.6799 + 127 0.6353 0.6353 0.6799 + 128 0.6392 0.6392 0.6797 + 129 0.6431 0.6431 0.6796 + 130 0.6431 0.6431 0.6794 + 131 0.6471 0.6471 0.6791 + 132 0.6510 0.6510 0.6789 + 133 0.6549 0.6549 0.6785 + 134 0.6549 0.6549 0.6782 + 135 0.6588 0.6588 0.6778 + 136 0.6627 0.6627 0.6773 + 137 0.6627 0.6627 0.6769 + 138 0.6667 0.6667 0.6763 + 139 0.6706 0.6706 0.6758 + 140 0.6745 0.6745 0.6752 + 141 0.6745 0.6745 0.6746 + 142 0.6784 0.6784 0.6739 + 143 0.6824 0.6824 0.6732 + 144 0.6824 0.6824 0.6724 + 145 0.6863 0.6863 0.6716 + 146 0.6902 0.6902 0.6708 + 147 0.6941 0.6941 0.6699 + 148 0.6941 0.6941 0.6690 + 149 0.6980 0.6980 0.6680 + 150 0.7020 0.7020 0.6670 + 151 0.7020 0.7020 0.6660 + 152 0.7059 0.7059 0.6649 + 153 0.7098 0.7098 0.6638 + 154 0.7098 0.7098 0.6626 + 155 0.7137 0.7137 0.6614 + 156 0.7176 0.7176 0.6601 + 157 0.7216 0.7216 0.6589 + 158 0.7216 0.7216 0.6575 + 159 0.7255 0.7255 0.6561 + 160 0.7294 0.7294 0.6547 + 161 0.7294 0.7294 0.6533 + 162 0.7333 0.7333 0.6518 + 163 0.7373 0.7373 0.6502 + 164 0.7412 0.7412 0.6486 + 165 0.7412 0.7412 0.6470 + 166 0.7451 0.7451 0.6453 + 167 0.7490 0.7490 0.6436 + 168 0.7490 0.7490 0.6418 + 169 0.7529 0.7529 0.6400 + 170 0.7569 0.7569 0.6382 + 171 0.7608 0.7608 0.6363 + 172 0.7608 0.7608 0.6343 + 173 0.7647 0.7647 0.6324 + 174 0.7686 0.7686 0.6303 + 175 0.7686 0.7686 0.6282 + 176 0.7725 0.7725 0.6261 + 177 0.7765 0.7765 0.6239 + 178 0.7804 0.7804 0.6217 + 179 0.7804 0.7804 0.6194 + 180 0.7843 0.7843 0.6171 + 181 0.7882 0.7882 0.6147 + 182 0.7882 0.7882 0.6123 + 183 0.7922 0.7922 0.6098 + 184 0.7961 0.7961 0.6073 + 185 0.8000 0.8000 0.6047 + 186 0.8000 0.8000 0.6021 + 187 0.8039 0.8039 0.5994 + 188 0.8078 0.8078 0.5967 + 189 0.8078 0.8078 0.5939 + 190 0.8118 0.8118 0.5911 + 191 0.8157 0.8157 0.5882 + 192 0.8196 0.8196 0.5853 + 193 0.8196 0.8196 0.5823 + 194 0.8235 0.8235 0.5792 + 195 0.8275 0.8275 0.5761 + 196 0.8275 0.8275 0.5729 + 197 0.8314 0.8314 0.5697 + 198 0.8353 0.8353 0.5664 + 199 0.8392 0.8392 0.5630 + 200 0.8392 0.8392 0.5596 + 201 0.8431 0.8431 0.5561 + 202 0.8471 0.8471 0.5525 + 203 0.8471 0.8471 0.5489 + 204 0.8510 0.8510 0.5452 + 205 0.8549 0.8549 0.5414 + 206 0.8588 0.8588 0.5376 + 207 0.8588 0.8588 0.5337 + 208 0.8627 0.8627 0.5297 + 209 0.8667 0.8667 0.5257 + 210 0.8667 0.8667 0.5215 + 211 0.8706 0.8706 0.5173 + 212 0.8745 0.8745 0.5130 + 213 0.8784 0.8784 0.5086 + 214 0.8784 0.8784 0.5042 + 215 0.8824 0.8824 0.4996 + 216 0.8863 0.8863 0.4950 + 217 0.8863 0.8863 0.4902 + 218 0.8902 0.8902 0.4854 + 219 0.8941 0.8941 0.4804 + 220 0.8980 0.8980 0.4754 + 221 0.8980 0.8980 0.4702 + 222 0.9020 0.9020 0.4649 + 223 0.9059 0.9059 0.4595 + 224 0.9098 0.9098 0.4540 + 225 0.9098 0.9098 0.4484 + 226 0.9137 0.9137 0.4426 + 227 0.9176 0.9176 0.4366 + 228 0.9176 0.9176 0.4306 + 229 0.9216 0.9216 0.4243 + 230 0.9255 0.9255 0.4179 + 231 0.9294 0.9294 0.4114 + 232 0.9294 0.9294 0.4046 + 233 0.9333 0.9333 0.3977 + 234 0.9373 0.9373 0.3905 + 235 0.9373 0.9373 0.3831 + 236 0.9412 0.9412 0.3754 + 237 0.9451 0.9451 0.3675 + 238 0.9490 0.9490 0.3594 + 239 0.9490 0.9490 0.3509 + 240 0.9529 0.9529 0.3420 + 241 0.9569 0.9569 0.3328 + 242 0.9608 0.9608 0.3232 + 243 0.9608 0.9608 0.3131 + 244 0.9647 0.9647 0.3024 + 245 0.9686 0.9686 0.2912 + 246 0.9686 0.9686 0.2792 + 247 0.9725 0.9725 0.2664 + 248 0.9765 0.9765 0.2526 + 249 0.9804 0.9804 0.2375 + 250 0.9804 0.9804 0.2208 + 251 0.9843 0.9843 0.2020 + 252 0.9882 0.9882 0.1800 + 253 1.0 0.0 0.0 + 254 1.0 1.0 0.0 + 255 0.0 1.000 0.0 diff --git a/ccf65.f b/ccf65.f deleted file mode 100644 index f49e255e4..000000000 --- a/ccf65.f +++ /dev/null @@ -1,115 +0,0 @@ - subroutine ccf65(ss,nhsym,sync1,ipol1,dt1,flipk,syncshort, - + snr2,ipol2,dt2) - - parameter (NFFT=512,NH=NFFT/2) - real ss(4,322) - !Input: half-symbol powers, 4 pol'ns - real s(NFFT) !CCF = ss*pr - complex cs(0:NH) !Complex FT of s - real s2(NFFT) !CCF = ss*pr2 - complex cs2(0:NH) !Complex FT of s2 - real pr(NFFT) !JT65 pseudo-random sync pattern - complex cpr(0:NH) !Complex FT of pr - real pr2(NFFT) !JT65 shorthand pattern - complex cpr2(0:NH) !Complex FT of pr2 - real tmp1(322) - real tmp2(322) - real ccf(-27:27,4) - logical first - integer npr(126) - data first/.true./ - equivalence (s,cs),(pr,cpr),(s2,cs2),(pr2,cpr2) - save - -C The JT65 pseudo-random sync pattern: - data npr/ - + 1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0, - + 0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1, - + 0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1, - + 0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1, - + 1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1, - + 0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1, - + 1,1,1,1,1,1/ - - if(first) then -C Initialize pr, pr2; compute cpr, cpr2. - fac=1.0/NFFT - do i=1,NFFT - pr(i)=0. - k=2*mod((i-1)/8,2)-1 - pr2(i)=fac*k - enddo - do i=1,126 - j=2*i - pr(j)=fac*(2*npr(i)-1) - enddo - call four2a(pr,NFFT,1,-1,0) - call four2a(pr2,NFFT,1,-1,0) - first=.false. - endif - -C Look for JT65 sync pattern and shorthand square-wave pattern. - ccfbest=0. - ccfbest2=0. - do ip=1,4 !Do all four pol'ns - do i=1,nhsym ! ?? nhsym-1 ?? - s(i)=min(4.0,ss(ip,i)+ss(ip,i+1)) - enddo - do i=nhsym+1,NFFT ! ?? nhsym ?? - s(i)=0. - enddo - call four2a(s,NFFT,1,-1,0) !Real-to-complex FFT - do i=0,NH - cs2(i)=cs(i)*conjg(cpr2(i)) !Mult by complex FFT of pr2 - cs(i)=cs(i)*conjg(cpr(i)) !Mult by complex FFT of pr - enddo - call four2a(cs,NFFT,1,1,-1) !Complex-to-real inv-FFT - call four2a(cs2,NFFT,1,1,-1) !Complex-to-real inv-FFT - - do lag=-27,27 !Check for best JT65 sync - ccf(lag,ip)=s(lag+28) - if(abs(ccf(lag,ip)).gt.ccfbest) then - ccfbest=abs(ccf(lag,ip)) - lagpk=lag - ipol1=ip - flipk=1.0 - if(ccf(lag,ip).lt.0.0) flipk=-1.0 - endif - enddo - - do lag=-8,7 !Check for best shorthand - ccf2=s2(lag+28) - if(ccf2.gt.ccfbest2) then - ccfbest2=ccf2 - lagpk2=lag - ipol2=ip - endif - enddo - - enddo - -C Find rms level on baseline of "ccfblue", for normalization. - sum=0. - do lag=-26,26 - if(abs(lag-lagpk).gt.1) sum=sum + ccf(lag,ipol1) - enddo - base=sum/50.0 - sq=0. - do lag=-26,26 - if(abs(lag-lagpk).gt.1) sq=sq + (ccf(lag,ipol1)-base)**2 - enddo - rms=sqrt(sq/49.0) - sync1=ccfbest/rms - 4.0 - dt1=2.5 + lagpk*(2048.0/11025.0) - -C Find base level for normalizing snr2. - do i=1,nhsym - tmp1(i)=ss(ipol2,i) - enddo - call pctile(tmp1,tmp2,nhsym,40,base) - snr2=0.398107*ccfbest2/base !### empirical - syncshort=0.5*ccfbest2/rms - 4.0 !### better normalizer than rms? - dt2=2.5 + lagpk2*(2048.0/11025.0) - - return - end diff --git a/char.h b/char.h deleted file mode 100644 index 469dd8624..000000000 --- a/char.h +++ /dev/null @@ -1,57 +0,0 @@ -/* Include file to configure the RS codec for character symbols - * - * Copyright 2002, Phil Karn, KA9Q - * May be used under the terms of the GNU General Public License (GPL) - */ -#define DTYPE unsigned char - -/* Reed-Solomon codec control block */ -struct rs { - int mm; /* Bits per symbol */ - int nn; /* Symbols per block (= (1<= rs->nn) { - x -= rs->nn; - x = (x >> rs->mm) + (x & rs->nn); - } - return x; -} -#define MODNN(x) modnn(rs,x) - -#define MM (rs->mm) -#define NN (rs->nn) -#define ALPHA_TO (rs->alpha_to) -#define INDEX_OF (rs->index_of) -#define GENPOLY (rs->genpoly) -#define NROOTS (rs->nroots) -#define FCR (rs->fcr) -#define PRIM (rs->prim) -#define IPRIM (rs->iprim) -#define PAD (rs->pad) -#define A0 (NN) - -#define ENCODE_RS encode_rs_char -#define DECODE_RS decode_rs_char -#define INIT_RS init_rs_char -#define FREE_RS free_rs_char - -void ENCODE_RS(void *p,DTYPE *data,DTYPE *parity); -int DECODE_RS(void *p,DTYPE *data,int *eras_pos,int no_eras); -void *INIT_RS(int symsize,int gfpoly,int fcr, - int prim,int nroots,int pad); -void FREE_RS(void *p); - - - - - diff --git a/chkmsg.f b/chkmsg.f deleted file mode 100644 index ea67f0b26..000000000 --- a/chkmsg.f +++ /dev/null @@ -1,31 +0,0 @@ - subroutine chkmsg(message,cok,nspecial,flip) - - character message*22,cok*3 - - nspecial=0 - flip=1.0 - cok=" " - - do i=22,1,-1 - if(message(i:i).ne.' ') go to 10 - enddo - i=22 - - 10 if(i.ge.11 .and. (message(i-3:i).eq.' OOO') .or. - + (message(20:22).eq.' OO')) then - cok='OOO' - flip=-1.0 - if(message(20:22).eq.' OO') then - message=message(1:19) - else - message=message(1:i-4) - endif - endif - -! if(message(1:3).eq.'ATT') nspecial=1 - if(message(1:2).eq.'RO') nspecial=2 - if(message(1:3).eq.'RRR') nspecial=3 - if(message(1:2).eq.'73') nspecial=4 - - return - end diff --git a/commons.h b/commons.h new file mode 100644 index 000000000..b27217579 --- /dev/null +++ b/commons.h @@ -0,0 +1,42 @@ +#ifndef COMMONS_H +#define COMMONS_H + +#define NFFT 32768 + +extern "C" { + +extern struct { //This is "common/datcom/..." in Fortran + float d4[4*5760000]; //Raw I/Q data from Linrad + float ss[4*322*NFFT]; //Half-symbol spectra at 0,45,90,135 deg pol + float savg[4*NFFT]; //Avg spectra at 0,45,90,135 deg pol + double fcenter; //Center freq from Linrad (MHz) + int nutc; //UTC as integer, HHMM + int idphi; //Phase correction for Y pol'n, degrees + int mousedf; //User-selected DF + int mousefqso; //User-selected QSO freq (kHz) + int nagain; //1 ==> decode only at fQSO +/- Tol + int ndepth; //How much hinted decoding to do? + int ndiskdat; //1 ==> data read from *.tf2 or *.iq file + int neme; //Hinted decoding tries only for EME calls + int newdat; //1 ==> new data, must do long FFT + int nfa; //Low decode limit (kHz) + int nfb; //High decode limit (kHz) + int nfcal; //Frequency correction, for calibration (Hz) + int nfshift; //Shift of displayed center freq (kHz) + int mcall3; //1 ==> CALL3.TXT has been modified + int ntimeout; //Max for timeouts in Messages and BandMap + int ntol; //+/- decoding range around fQSO (Hz) + int nxant; //1 ==> add 45 deg to measured pol angle + int map65RxLog; //Flags to control log files + int nfsample; //Input sample rate + int nxpol; //1 if using xpol antennas, 0 otherwise + int mode65; //JT65 sub-mode: A=1, B=2, C=4 + char mycall[12]; + char mygrid[6]; + char hiscall[12]; + char hisgrid[6]; + char datetime[20]; +} datcom_; +} + +#endif // COMMONS_H diff --git a/configure b/configure deleted file mode 100755 index 5d9ab182e..000000000 --- a/configure +++ /dev/null @@ -1,6910 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.62 for map65 0.9. -# -# $Id: configure.ac 1251 2009-05-19 22:49:52Z va3db $ -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS - - - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell bug-autoconf@gnu.org about your system, - echo including any error possibly output before this message. - echo This can help us improve future autoconf versions. - echo Configuration will now proceed without shell functions. -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - -exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Identity of this package. -PACKAGE_NAME='map65' -PACKAGE_TARNAME='map65' -PACKAGE_VERSION='0.9' -PACKAGE_STRING='map65 0.9' -PACKAGE_BUGREPORT='' - -ac_default_prefix=/usr/local/ -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -F77 -FFLAGS -ac_ct_F77 -G95 -GFORTRAN -FC_LIB_PATH -FC -FCV -CPP -GREP -EGREP -SET_MAKE -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -RM -CP -MV -LN -SED -AR -LD -TEST -PYTHON -F2PY -OS -CLOBBER -PREFIX -LIBOBJS -LTLIBOBJS' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_g95 -enable_gfortran -with_portaudio_include_dir -with_portaudio_lib_dir -enable_clobber -enable_assert -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -F77 -FFLAGS -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 - { (exit 1); exit 1; }; } - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 - { (exit 1); exit 1; }; } - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 - { (exit 1); exit 1; }; } - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 - { (exit 1); exit 1; }; } - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { $as_echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { $as_echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) { $as_echo "$as_me: error: Unrecognized options: $ac_unrecognized_opts" >&2 - { (exit 1); exit 1; }; } ;; - *) $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { $as_echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures map65 0.9 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/map65] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of map65 0.9:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-g95 Use G95 compiler if available. - --enable-gfortran Use gfortran compiler if available. - --enable-clobber Don't preserve old binaries on make install - --enable-assert Enable assert(). - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-portaudio-include-dir= - path to portaudio include files - --with-portaudio-lib-dir= - path to portaudio lib files - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - F77 Fortran 77 compiler command - FFLAGS Fortran 77 compiler flags - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -map65 configure 0.9 -generated by GNU Autoconf 2.62 - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. - -$Id: configure.ac 1251 2009-05-19 22:49:52Z va3db $ -_ACEOF - exit -fi -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by map65 $as_me 0.9, which was -generated by GNU Autoconf 2.62. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" -done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## -## File substitutions. ## -## ------------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - ac_site_file1=$CONFIG_SITE -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test -r "$ac_site_file"; then - { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - - - - - - - - - - - - - - - - - - - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -fail=0 - - - -OLD_CFLAGS="$CFLAGS" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:$LINENO: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:$LINENO: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:$LINENO: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:$LINENO: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { (ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi - -{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -if test -z "$ac_file"; then - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext - -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -{ $as_echo "$as_me:$LINENO: result: yes" >&5 -$as_echo "yes" >&6; } - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if test "${ac_cv_objext+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_compiler_gnu=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_c89=$ac_arg -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:$LINENO: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:$LINENO: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu -if test -n "$ac_tool_prefix"; then - for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_F77+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -n "$F77"; then - ac_cv_prog_F77="$F77" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_F77="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -F77=$ac_cv_prog_F77 -if test -n "$F77"; then - { $as_echo "$as_me:$LINENO: result: $F77" >&5 -$as_echo "$F77" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$F77" && break - done -fi -if test -z "$F77"; then - ac_ct_F77=$F77 - for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_ac_ct_F77+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_F77"; then - ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_F77="$ac_prog" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_F77=$ac_cv_prog_ac_ct_F77 -if test -n "$ac_ct_F77"; then - { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 -$as_echo "$ac_ct_F77" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_F77" && break -done - - if test "x$ac_ct_F77" = x; then - F77="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - F77=$ac_ct_F77 - fi -fi - - -# Provide some information about the compiler. -$as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -rm -f a.out - -# If we don't use `.F' as extension, the preprocessor is not run on the -# input file. (Note that this only needs to work for GNU compilers.) -ac_save_ext=$ac_ext -ac_ext=F -{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 -$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } -if test "${ac_cv_f77_compiler_gnu+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF - program main -#ifndef __GNUC__ - choke me -#endif - - end -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_compiler_gnu=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_f77_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 -$as_echo "$ac_cv_f77_compiler_gnu" >&6; } -ac_ext=$ac_save_ext -ac_test_FFLAGS=${FFLAGS+set} -ac_save_FFLAGS=$FFLAGS -FFLAGS= -{ $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 -$as_echo_n "checking whether $F77 accepts -g... " >&6; } -if test "${ac_cv_prog_f77_g+set}" = set; then - $as_echo_n "(cached) " >&6 -else - FFLAGS=-g -cat >conftest.$ac_ext <<_ACEOF - program main - - end -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_f77_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_f77_g=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_prog_f77_g=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 -$as_echo "$ac_cv_prog_f77_g" >&6; } -if test "$ac_test_FFLAGS" = set; then - FFLAGS=$ac_save_FFLAGS -elif test $ac_cv_prog_f77_g = yes; then - if test "x$ac_cv_f77_compiler_gnu" = xyes; then - FFLAGS="-g -O2" - else - FFLAGS="-g" - fi -else - if test "x$ac_cv_f77_compiler_gnu" = xyes; then - FFLAGS="-O2" - else - FFLAGS= - fi -fi - -if test $ac_compiler_gnu = yes; then - G77=yes -else - G77= -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -CFLAGS="$OLD_CFLAGS" - -CPPFLAGS="-I/usr/local/include ${CPPFLAGS}" -LDFLAGS="-L/usr/local/lib ${LDFLAGS}" -LIBS=" -lpthread ${LIBS}" -FFLAGS_GFORTRAN="${FFLAGS} -fno-range-check -ffixed-line-length-none\ - -Wall -fbounds-check -fno-second-underscore -fPIC" -FFLAGS_G95="${FFLAGS} -Wall -Wno-precision-loss -fbounds-check -fno-second-underscore -fPIC" -#-Wall -Wno-precision-loss -fbounds-check -fno-second-underscore -fPIC - - - -# Check whether --enable-g95 was given. -if test "${enable_g95+set}" = set; then - enableval=$enable_g95; g95=$enableval -else - g95=no -fi - - -# Check whether --enable-gfortran was given. -if test "${enable_gfortran+set}" = set; then - enableval=$enable_gfortran; gfortran=$enableval -else - gfortran=no -fi - - - -FCV="" - -if test -n ${FC} ; then - gfortran_name_part=`echo ${FC} | cut -c 1-8` - if test ${gfortran_name_part} = "gfortran" ; then - gfortran_name=${FC} - FC_LIB_PATH=`${FC} -print-file-name=` - g95=no - gfortran=yes - FFLAGS="${FFLAGS_GFORTRAN}" - FCV="gnu95" - else - unset ${FC} - fi -fi - - -{ $as_echo "$as_me:$LINENO: checking uname -s" >&5 -$as_echo_n "checking uname -s... " >&6; } -case `uname -s` in - CYGWIN*) - { $as_echo "$as_me:$LINENO: result: Cygwin" >&5 -$as_echo "Cygwin" >&6; } - CYGWIN=yes - ;; - SunOS*) - { $as_echo "$as_me:$LINENO: result: SunOS or Solaris" >&5 -$as_echo "SunOS or Solaris" >&6; } - -cat >>confdefs.h <<\_ACEOF -#define __EXTENSIONS__ 1 -_ACEOF - - ;; - FreeBSD*) - if test -z ${gfortran_name} ; then - gfortran_name=`grep FC: /usr/ports/Mk/bsd.gcc.mk | head -1 |awk '{print $2}'` - fi - FCV_G95="g95" - ;; - *) - FCV_G95="g95" - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } - ;; -esac - - -if test -z $gfortran_name ; then - gfortran_name="gfortran" -fi - -# Extract the first word of "g95", so it can be a program name with args. -set dummy g95; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_G95+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $G95 in - [\\/]* | ?:[\\/]*) - ac_cv_path_G95="$G95" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_G95="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -G95=$ac_cv_path_G95 -if test -n "$G95"; then - { $as_echo "$as_me:$LINENO: result: $G95" >&5 -$as_echo "$G95" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "${gfortran_name}", so it can be a program name with args. -set dummy ${gfortran_name}; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_GFORTRAN+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $GFORTRAN in - [\\/]* | ?:[\\/]*) - ac_cv_path_GFORTRAN="$GFORTRAN" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_GFORTRAN="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -GFORTRAN=$ac_cv_path_GFORTRAN -if test -n "$GFORTRAN"; then - { $as_echo "$as_me:$LINENO: result: $GFORTRAN" >&5 -$as_echo "$GFORTRAN" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - - -if test ! -z ${GFORTRAN} ; then - echo "*** gfortran compiler found at ${GFORTRAN}" - if test "${gfortran}" = yes; then - FC_LIB_PATH=`${GFORTRAN} -print-file-name=` - FC=`basename ${GFORTRAN}` - g95=no - FFLAGS="${FFLAGS_GFORTRAN}" - FCV="gnu95" - fi -else - echo "*** No gfortran compiler found" -fi - -if test ! -z ${G95} ; then - echo "*** g95 compiler found at ${G95}" - if test "${g95}" = yes; then - FC_LIB_PATH=`${G95} -print-file-name=` - FC=`basename ${G95}` - gfortran=no - FFLAGS="${FFLAGS_G95}" - FCV=${FCV_G95} - fi -else - echo "*** No g95 compiler found" -fi - -if test -z ${FC} ; then - if test ! -z ${GFORTRAN} ; then - if test "${g95}" = yes; then - echo "You enabled g95, but no g95 compiler found, defaulting to gfortran instead" - fi - FC_LIB_PATH=`${GFORTRAN} -print-file-name=` - FC=`basename ${GFORTRAN}` - g95=no - gfortran=yes - FFLAGS="${FFLAGS_GFORTRAN}" - FCV="gnu95" - elif test ! -z $G95 ; then - if test "${gfortran}" = yes; then - echo "You enabled gfortran, but no gfortran compiler found, defaulting to g95 instead" - fi - FC_LIB_PATH=`${G95} -print-file-name=` - FC=`basename ${G95}` - g95=yes - gfortran=no - FFLAGS="${FFLAGS_G95}" - FCV=${FCV_G95} - fi -fi - - -cat >>confdefs.h <<_ACEOF -#define FC_LIB_PATH "${FC_LIB_PATH}" -_ACEOF - -FC_LIB_PATH="${FC_LIB_PATH}" - - -cat >>confdefs.h <<_ACEOF -#define FC "${FC}" -_ACEOF - -FC="${FC}" - -FCV="${FCV}" - - - - - - - -HAS_PORTAUDIO_H=0 -HAS_PORTAUDIO_LIB=0 -HAS_PORTAUDIO=0 - -{ $as_echo "$as_me:$LINENO: checking for a v19 portaudio " >&5 -$as_echo_n "checking for a v19 portaudio ... " >&6; } - -portaudio_lib_dir="/usr/lib" -portaudio_include_dir="/usr/include" - - -# Check whether --with-portaudio-include-dir was given. -if test "${with_portaudio_include_dir+set}" = set; then - withval=$with_portaudio_include_dir; portaudio_include_dir=$with_portaudio_include_dir -fi - - - -# Check whether --with-portaudio-lib-dir was given. -if test "${with_portaudio_lib_dir+set}" = set; then - withval=$with_portaudio_lib_dir; portaudio_lib_dir=$with_portaudio_lib_dir -fi - - -if test -e ${portaudio_include_dir}/portaudio.h; then - HAS_PORTAUDIO_H=1 -fi - -if test -e ${portaudio_lib_dir}/libportaudio.so \ - -o -e ${portaudio_lib_dir}/libportaudio.a;then - HAS_PORTAUDIO_LIB=1 -fi - -if test ${HAS_PORTAUDIO_H} -eq 1 -a ${HAS_PORTAUDIO_LIB} -eq 1; then - LDFLAGS="-L${portaudio_lib_dir} ${LDFLAGS}" - LIBS="${LIBS} -lportaudio" - CPPFLAGS="-I${portaudio_include_dir} ${CPPFLAGS}" - { $as_echo "$as_me:$LINENO: checking for Pa_GetVersion in -lportaudio" >&5 -$as_echo_n "checking for Pa_GetVersion in -lportaudio... " >&6; } -if test "${ac_cv_lib_portaudio_Pa_GetVersion+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lportaudio $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char Pa_GetVersion (); -int -main () -{ -return Pa_GetVersion (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_portaudio_Pa_GetVersion=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_portaudio_Pa_GetVersion=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_portaudio_Pa_GetVersion" >&5 -$as_echo "$ac_cv_lib_portaudio_Pa_GetVersion" >&6; } -if test $ac_cv_lib_portaudio_Pa_GetVersion = yes; then - \ - HAS_PORTAUDIO_VERSION=1 -else - HAS_PORTAUDIO_VERSION=0 -fi - - if test ${HAS_PORTAUDIO_VERSION} -eq 0; then - { $as_echo "$as_me:$LINENO: result: This is likely portaudio v18; you need portaudio v19" >&5 -$as_echo "This is likely portaudio v18; you need portaudio v19" >&6; } - else - HAS_PORTAUDIO=1 - fi -else - { $as_echo "$as_me:$LINENO: result: portaudio not found trying FreeBSD paths " >&5 -$as_echo "portaudio not found trying FreeBSD paths " >&6; } - portaudio_lib_dir="/usr/local/lib/portaudio2" - portaudio_include_dir="/usr/local/include/portaudio2" - { $as_echo "$as_me:$LINENO: checking for a v19 portaudio in FreeBSD paths." >&5 -$as_echo_n "checking for a v19 portaudio in FreeBSD paths.... " >&6; } - HAS_PORTAUDIO_H=0 - HAS_PORTAUDIO_LIB=0 - - if test -e ${portaudio_include_dir}/portaudio.h; then - HAS_PORTAUDIO_H=1 - fi - - if test -e ${portaudio_lib_dir}/libportaudio.so \ - -o -e ${portaudio_lib_dir}/libportaudio.a;then - HAS_PORTAUDIO_LIB=1 - fi - - if test ${HAS_PORTAUDIO_H} -eq 1 -a ${HAS_PORTAUDIO_LIB} -eq 1; then - { $as_echo "$as_me:$LINENO: result: found portaudio in FreeBSD paths, double checking it is v19 " >&5 -$as_echo "found portaudio in FreeBSD paths, double checking it is v19 " >&6; } - LDFLAGS="-L${portaudio_lib_dir} ${LDFLAGS}" - LIBS="${LIBS} -lportaudio" - CPPFLAGS="-I${portaudio_include_dir} ${CPPFLAGS}" - { $as_echo "$as_me:$LINENO: checking for Pa_GetVersion in -lportaudio" >&5 -$as_echo_n "checking for Pa_GetVersion in -lportaudio... " >&6; } -if test "${ac_cv_lib_portaudio_Pa_GetVersion+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lportaudio $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char Pa_GetVersion (); -int -main () -{ -return Pa_GetVersion (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_portaudio_Pa_GetVersion=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_portaudio_Pa_GetVersion=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_portaudio_Pa_GetVersion" >&5 -$as_echo "$ac_cv_lib_portaudio_Pa_GetVersion" >&6; } -if test $ac_cv_lib_portaudio_Pa_GetVersion = yes; then - \ - HAS_PORTAUDIO_VERSION=1 -else - HAS_PORTAUDIO_VERSION=0 -fi - - if test ${HAS_PORTAUDIO_VERSION} -eq 0; then - { $as_echo "$as_me:$LINENO: result: How did you end up with a portaudio v18 here?" >&5 -$as_echo "How did you end up with a portaudio v18 here?" >&6; } - else - { $as_echo "$as_me:$LINENO: result: found v19" >&5 -$as_echo "found v19" >&6; } - HAS_PORTAUDIO=1 - HAS_PORTAUDIO_H=1 - fi - fi -fi - - - -if test "$ac_cv_prog_cc_g" = yes; then - CFLAGS="$CFLAGS -g" -fi - -if test ! -z "$CFLAGS"; then - CFLAGS="$CFLAGS $CFLAGS" -fi - - -{ $as_echo "$as_me:$LINENO: checking for library containing strerror" >&5 -$as_echo_n "checking for library containing strerror... " >&6; } -if test "${ac_cv_search_strerror+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char strerror (); -int -main () -{ -return strerror (); - ; - return 0; -} -_ACEOF -for ac_lib in '' cposix; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_search_strerror=$ac_res -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext - if test "${ac_cv_search_strerror+set}" = set; then - break -fi -done -if test "${ac_cv_search_strerror+set}" = set; then - : -else - ac_cv_search_strerror=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 -$as_echo "$ac_cv_search_strerror" >&6; } -ac_res=$ac_cv_search_strerror -if test "$ac_res" != no; then - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -{ $as_echo "$as_me:$LINENO: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if test "${ac_cv_c_inline+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifndef __cplusplus -typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } -#endif - -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_c_inline=$ac_kw -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -done - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } - - -case $ac_cv_c_inline in - inline | yes) ;; - *) - case $ac_cv_c_inline in - no) ac_val=;; - *) ac_val=$ac_cv_c_inline;; - esac - cat >>confdefs.h <<_ACEOF -#ifndef __cplusplus -#define inline $ac_val -#endif -_ACEOF - ;; -esac - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done -done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done -done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -if test $ac_cv_c_compiler_gnu = yes; then - { $as_echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 -$as_echo_n "checking whether $CC needs -traditional... " >&6; } -if test "${ac_cv_prog_gcc_traditional+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_pattern="Autoconf.*'x'" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -Autoconf TIOCGETP -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -else - ac_cv_prog_gcc_traditional=no -fi -rm -f conftest* - - - if test $ac_cv_prog_gcc_traditional = no; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -Autoconf TCGETA -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -fi -rm -f conftest* - - fi -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 -$as_echo "$ac_cv_prog_gcc_traditional" >&6; } - if test $ac_cv_prog_gcc_traditional = yes; then - CC="$CC -traditional" - fi -fi - -{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:$LINENO: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 -$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} - { (exit 1); exit 1; }; } -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - -done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -# Extract the first word of "rm", so it can be a program name with args. -set dummy rm; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_RM+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $RM in - [\\/]* | ?:[\\/]*) - ac_cv_path_RM="$RM" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -RM=$ac_cv_path_RM -if test -n "$RM"; then - { $as_echo "$as_me:$LINENO: result: $RM" >&5 -$as_echo "$RM" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "cp", so it can be a program name with args. -set dummy cp; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_CP+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $CP in - [\\/]* | ?:[\\/]*) - ac_cv_path_CP="$CP" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -CP=$ac_cv_path_CP -if test -n "$CP"; then - { $as_echo "$as_me:$LINENO: result: $CP" >&5 -$as_echo "$CP" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "mv", so it can be a program name with args. -set dummy mv; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_MV+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $MV in - [\\/]* | ?:[\\/]*) - ac_cv_path_MV="$MV" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -MV=$ac_cv_path_MV -if test -n "$MV"; then - { $as_echo "$as_me:$LINENO: result: $MV" >&5 -$as_echo "$MV" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "ln", so it can be a program name with args. -set dummy ln; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_LN+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $LN in - [\\/]* | ?:[\\/]*) - ac_cv_path_LN="$LN" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -LN=$ac_cv_path_LN -if test -n "$LN"; then - { $as_echo "$as_me:$LINENO: result: $LN" >&5 -$as_echo "$LN" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "sed", so it can be a program name with args. -set dummy sed; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_SED+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $SED in - [\\/]* | ?:[\\/]*) - ac_cv_path_SED="$SED" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -SED=$ac_cv_path_SED -if test -n "$SED"; then - { $as_echo "$as_me:$LINENO: result: $SED" >&5 -$as_echo "$SED" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_AR+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $AR in - [\\/]* | ?:[\\/]*) - ac_cv_path_AR="$AR" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -AR=$ac_cv_path_AR -if test -n "$AR"; then - { $as_echo "$as_me:$LINENO: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "ld", so it can be a program name with args. -set dummy ld; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_LD+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $LD in - [\\/]* | ?:[\\/]*) - ac_cv_path_LD="$LD" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_LD="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -LD=$ac_cv_path_LD -if test -n "$LD"; then - { $as_echo "$as_me:$LINENO: result: $LD" >&5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "test", so it can be a program name with args. -set dummy test; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_TEST+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $TEST in - [\\/]* | ?:[\\/]*) - ac_cv_path_TEST="$TEST" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_TEST="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - test -z "$ac_cv_path_TEST" && ac_cv_path_TEST="test" - ;; -esac -fi -TEST=$ac_cv_path_TEST -if test -n "$TEST"; then - { $as_echo "$as_me:$LINENO: result: $TEST" >&5 -$as_echo "$TEST" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "python", so it can be a program name with args. -set dummy python; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_PYTHON+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $PYTHON in - [\\/]* | ?:[\\/]*) - ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -PYTHON=$ac_cv_path_PYTHON -if test -n "$PYTHON"; then - { $as_echo "$as_me:$LINENO: result: $PYTHON" >&5 -$as_echo "$PYTHON" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "f2py", so it can be a program name with args. -set dummy f2py; ac_word=$2 -{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_F2PY+set}" = set; then - $as_echo_n "(cached) " >&6 -else - case $F2PY in - [\\/]* | ?:[\\/]*) - ac_cv_path_F2PY="$F2PY" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_F2PY="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - - ;; -esac -fi -F2PY=$ac_cv_path_F2PY -if test -n "$F2PY"; then - { $as_echo "$as_me:$LINENO: result: $F2PY" >&5 -$as_echo "$F2PY" >&6; } -else - { $as_echo "$as_me:$LINENO: result: no" >&5 -$as_echo "no" >&6; } -fi - - -{ $as_echo "$as_me:$LINENO: checking OS" >&5 -$as_echo_n "checking OS... " >&6; } -OS=`uname` -OS="${OS}" - - - -{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if test "${ac_cv_header_stdc+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_stdc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - $as_echo "$as_me: program exited with status $ac_status" >&5 -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -rf conftest.dSYM -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if test `eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - - - - - - - - - - - - - -for ac_header in inttypes.h stdint.h sys/resource.h sys/param.h errno.h \ -sys/syslog.h stddef.h libgen.h sys/wait.h wait.h stdio.h termios.h \ -sys/resource.h linux/ppdev.h dev/ppbus/ppi.h sys/stat.h fcntl.h sys/ioctl.h -do -as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 -$as_echo_n "checking $ac_header usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 -$as_echo_n "checking $ac_header presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 -$as_echo_n "checking for $ac_header... " >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - -fi -if test `eval 'as_val=${'$as_ac_Header'} - $as_echo "$as_val"'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -{ $as_echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if test "${ac_cv_header_time+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_time=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_time=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -cat >>confdefs.h <<\_ACEOF -#define TIME_WITH_SYS_TIME 1 -_ACEOF - -fi - - -if test "${ac_cv_header_fftw3_h+set}" = set; then - { $as_echo "$as_me:$LINENO: checking for fftw3.h" >&5 -$as_echo_n "checking for fftw3.h... " >&6; } -if test "${ac_cv_header_fftw3_h+set}" = set; then - $as_echo_n "(cached) " >&6 -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_fftw3_h" >&5 -$as_echo "$ac_cv_header_fftw3_h" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking fftw3.h usability" >&5 -$as_echo_n "checking fftw3.h usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking fftw3.h presence" >&5 -$as_echo_n "checking fftw3.h presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: fftw3.h: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: fftw3.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: fftw3.h: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: fftw3.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: fftw3.h: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: fftw3.h: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: fftw3.h: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: fftw3.h: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: fftw3.h: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: fftw3.h: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: fftw3.h: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: fftw3.h: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: fftw3.h: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: fftw3.h: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: fftw3.h: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: fftw3.h: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for fftw3.h" >&5 -$as_echo_n "checking for fftw3.h... " >&6; } -if test "${ac_cv_header_fftw3_h+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_header_fftw3_h=$ac_header_preproc -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_fftw3_h" >&5 -$as_echo "$ac_cv_header_fftw3_h" >&6; } - -fi -if test $ac_cv_header_fftw3_h = yes; then - HAS_FFTW3_H=1 -else - HAS_FFTW3_H=0 -fi - - -if test "${ac_cv_header_samplerate_h+set}" = set; then - { $as_echo "$as_me:$LINENO: checking for samplerate.h" >&5 -$as_echo_n "checking for samplerate.h... " >&6; } -if test "${ac_cv_header_samplerate_h+set}" = set; then - $as_echo_n "(cached) " >&6 -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_samplerate_h" >&5 -$as_echo "$ac_cv_header_samplerate_h" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking samplerate.h usability" >&5 -$as_echo_n "checking samplerate.h usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking samplerate.h presence" >&5 -$as_echo_n "checking samplerate.h presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: samplerate.h: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: samplerate.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: samplerate.h: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: samplerate.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: samplerate.h: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: samplerate.h: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: samplerate.h: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: samplerate.h: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: samplerate.h: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: samplerate.h: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: samplerate.h: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: samplerate.h: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: samplerate.h: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: samplerate.h: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: samplerate.h: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: samplerate.h: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for samplerate.h" >&5 -$as_echo_n "checking for samplerate.h... " >&6; } -if test "${ac_cv_header_samplerate_h+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_header_samplerate_h=$ac_header_preproc -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_samplerate_h" >&5 -$as_echo "$ac_cv_header_samplerate_h" >&6; } - -fi -if test $ac_cv_header_samplerate_h = yes; then - HAS_SAMPLERATE_H=1 -else - HAS_SAMPLERATE_H=0 -fi - - - -{ $as_echo "$as_me:$LINENO: checking whether string.h and strings.h may both be included" >&5 -$as_echo_n "checking whether string.h and strings.h may both be included... " >&6; } -if test "${gcc_cv_header_string+set}" = set; then - $as_echo_n "(cached) " >&6 -else - - cat >conftest.$ac_ext <<_ACEOF -#include - #include -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - gcc_cv_header_string=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - gcc_cv_header_string=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:$LINENO: result: $gcc_cv_header_string" >&5 -$as_echo "$gcc_cv_header_string" >&6; } - -if test "$gcc_cv_header_string" = "yes"; then - -cat >>confdefs.h <<\_ACEOF -#define STRING_WITH_STRINGS 1 -_ACEOF - -fi - -{ $as_echo "$as_me:$LINENO: checking for sfftw_destroy_plan_ in -lfftw3f" >&5 -$as_echo_n "checking for sfftw_destroy_plan_ in -lfftw3f... " >&6; } -if test "${ac_cv_lib_fftw3f_sfftw_destroy_plan_+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lfftw3f $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char sfftw_destroy_plan_ (); -int -main () -{ -return sfftw_destroy_plan_ (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - ac_cv_lib_fftw3f_sfftw_destroy_plan_=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_fftw3f_sfftw_destroy_plan_=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_fftw3f_sfftw_destroy_plan_" >&5 -$as_echo "$ac_cv_lib_fftw3f_sfftw_destroy_plan_" >&6; } -if test $ac_cv_lib_fftw3f_sfftw_destroy_plan_ = yes; then - \ - HAS_FFTW3FLIBS=1 -else - HAS_FFTW3FLIBS=0 -fi - - -if test "${ac_cv_header_stdarg_h+set}" = set; then - { $as_echo "$as_me:$LINENO: checking for stdarg.h" >&5 -$as_echo_n "checking for stdarg.h... " >&6; } -if test "${ac_cv_header_stdarg_h+set}" = set; then - $as_echo_n "(cached) " >&6 -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdarg_h" >&5 -$as_echo "$ac_cv_header_stdarg_h" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:$LINENO: checking stdarg.h usability" >&5 -$as_echo_n "checking stdarg.h usability... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:$LINENO: checking stdarg.h presence" >&5 -$as_echo_n "checking stdarg.h presence... " >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { $as_echo "$as_me:$LINENO: WARNING: stdarg.h: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: stdarg.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: stdarg.h: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: stdarg.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { $as_echo "$as_me:$LINENO: WARNING: stdarg.h: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: stdarg.h: present but cannot be compiled" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: stdarg.h: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: stdarg.h: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: stdarg.h: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: stdarg.h: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: stdarg.h: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: stdarg.h: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: stdarg.h: proceeding with the preprocessor's result" >&5 -$as_echo "$as_me: WARNING: stdarg.h: proceeding with the preprocessor's result" >&2;} - { $as_echo "$as_me:$LINENO: WARNING: stdarg.h: in the future, the compiler will take precedence" >&5 -$as_echo "$as_me: WARNING: stdarg.h: in the future, the compiler will take precedence" >&2;} - - ;; -esac -{ $as_echo "$as_me:$LINENO: checking for stdarg.h" >&5 -$as_echo_n "checking for stdarg.h... " >&6; } -if test "${ac_cv_header_stdarg_h+set}" = set; then - $as_echo_n "(cached) " >&6 -else - ac_cv_header_stdarg_h=$ac_header_preproc -fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdarg_h" >&5 -$as_echo "$ac_cv_header_stdarg_h" >&6; } - -fi -if test $ac_cv_header_stdarg_h = yes; then - : -else - { { $as_echo "$as_me:$LINENO: error: ** stdarg.h could not be found - wsjt will not compile without it **" >&5 -$as_echo "$as_me: error: ** stdarg.h could not be found - wsjt will not compile without it **" >&2;} - { (exit 1); exit 1; }; } -fi - - - - -# Check whether --enable-clobber was given. -if test "${enable_clobber+set}" = set; then - enableval=$enable_clobber; clobber=$enableval -else - clobber=no -fi - - -if test "$clobber" = yes; then - CLOBBER=yes - -fi - -# Check whether --enable-assert was given. -if test "${enable_assert+set}" = set; then - enableval=$enable_assert; assert=$enableval -else - assert=no -fi - - -if test "$assert" = no; then - -cat >>confdefs.h <<\_ACEOF -#define NDEBUG 1 -_ACEOF - -fi - -if test "$prefix" = "NONE"; then - prefix=${ac_default_prefix} -else - - - prefix=`echo ${ac_default_prefix} | sed 's/\/$//'` -fi - - -if test -z $FC ; then - fail=1 - echo "You need g95 or gfortran to compile this program!" -fi - -if test $HAS_FFTW3_H -eq 0; then - fail=1 - echo "You need to install the fftw3 libraries" -fi - -if test $HAS_SAMPLERATE_H -eq 0; then - fail=1 - echo "You need to install the samplerate library" -else - cat >>confdefs.h <<\_ACEOF -#define HAS_SAMPLERATE_H 1 -_ACEOF - - LIBS="${LIBS} -lsamplerate" -fi - -if test $HAS_PORTAUDIO -eq 1; then - cat >>confdefs.h <<\_ACEOF -#define HAS_PORTAUDIO 1 -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define HAS_PORTAUDIO_H 1 -_ACEOF - - cat >>confdefs.h <<\_ACEOF -#define HAS_PORTAUDIO_LIB 1 -_ACEOF - -else - fail=1 - echo "This program needs portaudio v19 to compile." - echo "Please use --with-portaudio-include-dir= and" - echo " --with-portaudio-lib-dir= to set the paths." -fi - -if test $HAS_FFTW3_H -eq 1; then - cat >>confdefs.h <<\_ACEOF -#define HAS_FFTW3_H 1 -_ACEOF - -else - fail=1 - echo "You are missing the fftw3.h include file" -fi - -if test $HAS_FFTW3FLIBS -eq 1; then - LIBS="${LIBS} -lfftw3f" - cat >>confdefs.h <<\_ACEOF -#define HAS_FFTW3FLIBS 1 -_ACEOF - -else - fail=1 - echo "You are missing the fortran shim in libfftw3." -fi - -if test "$F2PY" = ""; then - echo "You are missing f2py, trying local copy." - F2PY="python f2py.py"; -fi - - -if test $fail -eq 1; then - { { $as_echo "$as_me:$LINENO: error: Please check error messages and install missing packages." >&5 -$as_echo "$as_me: error: Please check error messages and install missing packages." >&2;} - { (exit 1); exit 1; }; } -fi - -PREFIX="${prefix}" - -CPPFLAGS="${CPPFLAGS}" - -LDFLAGS="${LDFLAGS}" - -LIBS="${LIBS}" - - - -F2PY="${F2PY}" - -ac_config_files="$ac_config_files Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file - else - { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -# -# If the first sed substitution is executed (which looks for macros that -# take arguments), then branch to the quote section. Otherwise, -# look for a macro that doesn't take arguments. -ac_script=' -:mline -/\\$/{ - N - s,\\\n,, - b mline -} -t clear -:clear -s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g -t quote -s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g -t quote -b any -:quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g -s/\$/$$/g -H -:any -${ - g - s/^\n// - s/\n/ /g - p -} -' -DEFS=`sed -n "$ac_script" confdefs.h` - - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: ${CONFIG_STATUS=./config.status} -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 - -# Save the log message, to keep $[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by map65 $as_me 0.9, which was -generated by GNU Autoconf 2.62. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - -Configuration files: -$config_files - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_version="\\ -map65 config.status 0.9 -configured by $0, generated by GNU Autoconf 2.62, - with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2008 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" - ac_need_defaults=false;; - --he | --h | --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { $as_echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || -{ - $as_echo "$as_me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=' ' -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } -ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` = $ac_delim_num; then - break - elif $ac_last_try; then - { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\).*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\).*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ - || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 -$as_echo "$as_me: error: could not setup config files machinery" >&2;} - { (exit 1); exit 1; }; } -_ACEOF - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ -s/:*$// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - - -eval set X " :F $CONFIG_FILES " -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -$as_echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - ac_file_inputs="$ac_file_inputs '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin" \ - || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -$as_echo "$as_me: error: could not create $ac_file" >&2;} - { (exit 1); exit 1; }; } ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= - -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p -' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ - || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -$as_echo "$as_me: error: could not create $ac_file" >&2;} - { (exit 1); exit 1; }; } - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" - case $ac_file in - -) cat "$tmp/out" && rm -f "$tmp/out";; - *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; - esac \ - || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 -$as_echo "$as_me: error: could not create $ac_file" >&2;} - { (exit 1); exit 1; }; } - ;; - - - - esac - -done # for ac_tag - - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:$LINENO: WARNING: Unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - - -echo -echo - -if test $g95 = "yes"; then - echo "Using g95 as fortran compiler."; -elif test $gfortran = "yes"; then - echo "Using gfortran as fortran compiler."; -fi - -echo -echo "Compiling $PACKAGE_NAME $PACKAGE_VERSION" -echo - -echo "Installing into: $prefix" - -echo diff --git a/configure.ac b/configure.ac deleted file mode 100644 index cde16dc82..000000000 --- a/configure.ac +++ /dev/null @@ -1,220 +0,0 @@ -dnl $Id$ -dnl Process this file with autoconf to produce a configure script. - -dnl AC_PREREQ(2.61) - -dnl Sneaky way to get an Id tag into the configure script -AC_COPYRIGHT([$Id$]) - -AC_INIT([map65],[0.9]) - -fail=0 - -AC_PREFIX_DEFAULT(/usr/local/) - -OLD_CFLAGS="$CFLAGS" -dnl Checks for programs. -AC_PROG_CC -AC_LANG(C) -AC_PROG_F77 - -dnl Make sure autoconf doesn't interfere with cflags -jmallett -CFLAGS="$OLD_CFLAGS" - -dnl Lets guess at some likely places for extra libs/includes XXX -db -CPPFLAGS="-I/usr/local/include ${CPPFLAGS}" -LDFLAGS="-L/usr/local/lib ${LDFLAGS}" -LIBS=" -lpthread ${LIBS}" -FFLAGS_GFORTRAN="${FFLAGS} -fno-range-check -ffixed-line-length-none\ - -Wall -fbounds-check -fno-second-underscore -fPIC" -FFLAGS_G95="${FFLAGS} -Wall -Wno-precision-loss -fbounds-check -fno-second-underscore -fPIC" -#-Wall -Wno-precision-loss -fbounds-check -fno-second-underscore -fPIC - -AX_CHECK_GFORTRAN -AX_CHECK_PORTAUDIO - -dnl If we support -g, use it! -if test "$ac_cv_prog_cc_g" = yes; then - CFLAGS="$CFLAGS -g" -fi - -dnl jdc -- If CFLAGS is defined, best use it everywhere... -dnl NOTE: jv says it must be added to the *END*, because things like -dnl "gcc -O9 -O2" will result in -O2 getting preference. How stupid. -if test ! -z "$CFLAGS"; then - CFLAGS="$CFLAGS $CFLAGS" -fi - - -AC_ISC_POSIX -AC_C_INLINE -AC_PROG_GCC_TRADITIONAL -AC_PROG_MAKE_SET -AC_PROG_INSTALL -AC_PATH_PROG(RM, rm) -AC_PATH_PROG(CP, cp) -AC_PATH_PROG(MV, mv) -AC_PATH_PROG(LN, ln) -AC_PATH_PROG(SED, sed) -AC_PATH_PROG(AR, ar) -AC_PATH_PROG(LD, ld) -AC_PATH_PROG(TEST, [test], [test]) -AC_PATH_PROG(PYTHON, python) -AC_PATH_PROG(F2PY, f2py) -AC_MSG_CHECKING([OS]) -OS=`uname` -AC_SUBST(OS, "${OS}") - -dnl Checks for header files. - -AC_HEADER_STDC - -AC_CHECK_HEADERS([inttypes.h stdint.h sys/resource.h sys/param.h errno.h \ -sys/syslog.h stddef.h libgen.h sys/wait.h wait.h stdio.h termios.h \ -sys/resource.h linux/ppdev.h dev/ppbus/ppi.h sys/stat.h fcntl.h sys/ioctl.h ]) - -AC_HEADER_TIME - -AC_CHECK_HEADER([fftw3.h], [HAS_FFTW3_H=1], [HAS_FFTW3_H=0]) -AC_CHECK_HEADER([samplerate.h], [HAS_SAMPLERATE_H=1], [HAS_SAMPLERATE_H=0]) - -dnl See whether we can include both string.h and strings.h. -AC_CACHE_CHECK([whether string.h and strings.h may both be included], -gcc_cv_header_string, -[ - AC_COMPILE_IFELSE( - [#include - #include ], - [gcc_cv_header_string=yes], - [gcc_cv_header_string=no]) -]) - -if test "$gcc_cv_header_string" = "yes"; then - AC_DEFINE(STRING_WITH_STRINGS, 1, [Define to 1 if string.h may be included along with strings.h]) -fi - -dnl check for a fortran shim entry point -AC_CHECK_LIB(fftw3f, sfftw_destroy_plan_, \ - [HAS_FFTW3FLIBS=1], [HAS_FFTW3FLIBS=0]) - -dnl Check for stdarg.h - if we can't find it, halt configure -AC_CHECK_HEADER(stdarg.h, , [AC_MSG_ERROR([** stdarg.h could not be found - wsjt will not compile without it **])]) - -dnl Debug-related options -dnl ===================== - -AC_ARG_ENABLE(clobber, -AC_HELP_STRING([--enable-clobber], [Don't preserve old binaries on make install]), -[clobber=$enableval], [clobber=no]) - -if test "$clobber" = yes; then - AC_SUBST(CLOBBER, yes) -fi - -AC_ARG_ENABLE(assert, -AC_HELP_STRING([--enable-assert],[Enable assert().]), -[assert=$enableval], [assert=no]) - -if test "$assert" = no; then - AC_DEFINE(NDEBUG, 1, [Define this to disable debugging support.]) -fi - -if test "$prefix" = "NONE"; then - prefix=${ac_default_prefix} -else - -dnl Don't get bitten by Cygwin's stupidity if the user specified -dnl a custom prefix with a trailing slash - - prefix=`echo ${ac_default_prefix} | sed 's/\/$//'` -fi - -dnl sanity tests. -dnl ============= - -if test -z $FC ; then - fail=1 - echo "You need g95 or gfortran to compile this program!" -fi - -if test $HAS_FFTW3_H -eq 0; then - fail=1 - echo "You need to install the fftw3 libraries" -fi - -if test $HAS_SAMPLERATE_H -eq 0; then - fail=1 - echo "You need to install the samplerate library" -else - AC_DEFINE(HAS_SAMPLERATE_H, 1, ) - LIBS="${LIBS} -lsamplerate" -fi - -if test $HAS_PORTAUDIO -eq 1; then - AC_DEFINE(HAS_PORTAUDIO, 1, ) - AC_DEFINE(HAS_PORTAUDIO_H, 1, ) - AC_DEFINE(HAS_PORTAUDIO_LIB, 1, ) -else - fail=1 - echo "This program needs portaudio v19 to compile." - echo "Please use --with-portaudio-include-dir= and" - echo " --with-portaudio-lib-dir= to set the paths." -fi - -if test $HAS_FFTW3_H -eq 1; then - AC_DEFINE(HAS_FFTW3_H, 1, ) -else - fail=1 - echo "You are missing the fftw3.h include file" -fi - -if test $HAS_FFTW3FLIBS -eq 1; then - LIBS="${LIBS} -lfftw3f" - AC_DEFINE(HAS_FFTW3FLIBS, 1, ) -else - fail=1 - echo "You are missing the fortran shim in libfftw3." -fi - -if test "$F2PY" = ""; then - echo "You are missing f2py, trying local copy." - F2PY="python f2py.py"; -fi - -dnl -dnl -dnl If fail a pre-requisite then fail -dnl - -if test $fail -eq 1; then - AC_MSG_ERROR([Please check error messages and install missing packages.]) -fi - -AC_SUBST(PREFIX, "${prefix}") -AC_SUBST(CPPFLAGS, "${CPPFLAGS}") -AC_SUBST(LDFLAGS, "${LDFLAGS}") -AC_SUBST(LIBS, "${LIBS}") -AC_SUBST(CFLAGS) -AC_SUBST(FFLAGS) -AC_SUBST(F2PY, "${F2PY}") -AC_CONFIG_FILES(Makefile) -AC_OUTPUT - -dnl do summary - -echo -echo - -if test $g95 = "yes"; then - echo "Using g95 as fortran compiler."; -elif test $gfortran = "yes"; then - echo "Using gfortran as fortran compiler."; -fi - -echo -echo "Compiling $PACKAGE_NAME $PACKAGE_VERSION" -echo - -echo "Installing into: $prefix" - -echo diff --git a/datcom.f90 b/datcom.f90 deleted file mode 100644 index c278c6389..000000000 --- a/datcom.f90 +++ /dev/null @@ -1,5 +0,0 @@ -parameter (NSMAX=60*96000) !Samples per 60 s file -real*4 dd !92 MB: raw data from Linrad timf2 -character*80 fname80 -common/datcom/dd(4,NSMAX,2),nutc,newdat2,kbuf,kxp,kk,kkdone,nlost, & - nlen,fname80 diff --git a/db.f b/db.f deleted file mode 100644 index 92e6df59b..000000000 --- a/db.f +++ /dev/null @@ -1,5 +0,0 @@ - real function db(x) - db=-99.0 - if(x.gt.1.259e-10) db=10.0*log10(x) - return - end diff --git a/decode1.f90 b/decode1.f90 deleted file mode 100644 index b0768ff3b..000000000 --- a/decode1.f90 +++ /dev/null @@ -1,87 +0,0 @@ -subroutine decode1(iarg) - -! Get data and parameters from gcom, then call the decoders when needed. -! This routine runs in a background thread and will never return. - -#ifdef CVF - use dflib -#endif - - character sending0*28,mode0*6,cshort*11 - integer sendingsh0 - - include 'datcom.f90' - include 'gcom1.f90' - include 'gcom2.f90' - include 'gcom3.f90' - include 'gcom4.f90' - data kbuf0/0/,ns00/-999/ - data sending0/' '/ - save - - kkdone=-99 - ns0=999999 - newdat2=0 - kbuf=1 - -10 continue - if(newdat2.gt.0) then - call getfile2(fname80,nlen) - newdat2=0 - kbuf=1 - kk=NSMAX - kkdone=0 - newdat=1 - endif - - if(kbuf.ne.kbuf0) kkdone=0 - kbuf0=kbuf - kkk=kk - if(kbuf.eq.2) kkk=kk-5760000 - n=Tsec - - if((ndiskdat.eq.1 .or. ndecoding.eq.0) .and. ((kkk-kkdone).gt.32768)) then - call symspec(dd,kbuf,kk,kkdone,nutc,newdat) - call sleep_msec(10) - endif - - if(ndecoding.gt.0 .and. mode(1:4).eq.'JT65') then - ndecdone=0 - call map65a(newdat) - if(mousebutton.eq.0) ndecoding0=ndecoding - ndecoding=0 - endif - - if(ns0.lt.0) then - rewind 21 - ns0=999999 - endif - if(n.lt.ns0 .and. utcdate(1:1).eq.'2') then - call cs_lock('decode1a') - write(21,1001) utcdate(:11) -1001 format(/'UTC Date: ',a11/'---------------------') - ns0=n - call cs_unlock - endif - - if(transmitting.eq.1 .and. (sending.ne.sending0 .or. & - sendingsh.ne.sendingsh0 .or. mode.ne.mode0)) then - ih=n/3600 - im=mod(n/60,60) - is=mod(n,60) - cshort=' ' - if(sendingsh.eq.1) cshort='(Shorthand)' - call cs_lock('decode1b') - write(21,1010) ih,im,is,mode,sending,cshort -1010 format(3i2.2,' Transmitting: ',a6,2x,a28,2x,a11) - call flushqqq(21) - call cs_unlock - sending0=sending - sendingsh0=sendingsh - mode0=mode - endif - - call sleep_msec(100) !### was 100 - go to 10 - -end subroutine decode1 diff --git a/decode1a.f b/decode1a.f deleted file mode 100644 index 1a1908f8b..000000000 --- a/decode1a.f +++ /dev/null @@ -1,110 +0,0 @@ - subroutine decode1a(dd,newdat,freq,nflip, - + mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi,ndphi, - + ipol,sync2,a,dt,pol,nkv,nhist,qual,decoded) - -C Apply AFC corrections to a candidate JT65 signal, and then try -C to decode it. - - parameter (NFFT1=77760,NFFT2=2430) - parameter (NMAX=60*96000) !Samples per 60 s - real*4 dd(4,NMAX) !92 MB: raw data from Linrad timf2 - complex c2x(NMAX/4), c2y(NMAX/4) !After 1/4 filter and downsample - complex c3x(NMAX/16),c3y(NMAX/16) !After 1/16 filter and downsample - complex c4x(NMAX/64),c4y(NMAX/64) !After 1/64 filter and downsample - complex cx(NMAX/64), cy(NMAX/64) !Data at 1378.125 samples/s - complex c5x(NMAX/256),c5y(NMAX/256),c5y0(NMAX/256) - complex c5a(256), c5b(256) - complex z - - real s2(256,126) - real a(5) - real*8 samratio - logical first - character decoded*22 - character mycall*12,hiscall*12,hisgrid*6 - data first/.true./,jjjmin/1000/,jjjmax/-1000/ - save - -C Mix sync tone to baseband, low-pass filter, and decimate by 64 - dt00=dt -C If freq=125.0 kHz, f0=48000 Hz. - f0=1000*(freq-77.0) !Freq of sync tone (0-96000 Hz) - call filbig(dd,NMAX,f0,newdat,cx,cy,n5) - joff=0 - sqa=0. - sqb=0. - do i=1,n5 - sqa=sqa + real(cx(i))**2 + aimag(cx(i))**2 - sqb=sqb + real(cy(i))**2 + aimag(cy(i))**2 - enddo - sqa=sqa/n5 - sqb=sqb/n5 - -C Find best DF, f1, f2, DT, and pol - -! a(5)=dt00 -! fsample=1378.125 -! i0=nint((a(5)+0.5)*fsample) -! if(i0.lt.1) i0=1 -! nz=n5+1-i0 -! call afc65b(cx(i0),cy(i0),nz,fsample,nflip,ipol,a,dt, -! + ccfbest,dtbest) - - call fil6521(cx,n5,c5x,n6) - call fil6521(cy,n5,c5y0,n6) - -! Adjust for cable length difference: - z=cmplx(cos(dphi),sin(dphi)) - do i=1,n6 - c5y(i)=z*c5y0(i) - enddo - - fsample=1378.125/4. - a(5)=dt00 - i0=nint((a(5)+0.5)*fsample) - 2 - if(i0.lt.1) i0=1 - nz=n6+1-i0 - - call afc65b(c5x(i0),c5y(i0),nz,fsample,nflip,ipol,a,dt, - + ccfbest,dtbest) - - pol=a(4)/57.2957795 - aa=cos(pol) - bb=sin(pol) - sq0=aa*aa*sqa + bb*bb*sqb - sync2=3.7*ccfbest/sq0 - -C Apply AFC corrections to the time-domain signal - call twkfreq(cx,cy,n5,a) - -C Compute spectrum at best polarization for each half symbol. -C Adding or subtracting a small number (e.g., 5) to j may make it decode. - nsym=126 - nfft=256 - j=(dt00+dtbest+2.685)*1378.125 + joff - if(j.lt.0) j=0 - do k=1,nsym - do i=1,nfft - j=j+1 - c5a(i)=aa*cx(j) + bb*cy(j) - enddo - call four2a(c5a,nfft,1,1,1) - do i=1,nfft - j=j+1 - c5b(i)=aa*cx(j) + bb*cy(j) - enddo - call four2a(c5b,nfft,1,1,1) - - do i=1,256 - s2(i,k)=real(c5a(i))**2 + aimag(c5a(i))**2 + - + real(c5b(i))**2 + aimag(c5b(i))**2 - enddo - enddo - - flip=nflip - call decode65b(s2,flip,mycall,hiscall,hisgrid,neme,ndepth, - + nqd,nkv,nhist,qual,decoded) - dt=dt00 + dtbest - - return - end diff --git a/deep65.f b/deep65.f deleted file mode 100644 index 6b4b9f600..000000000 --- a/deep65.f +++ /dev/null @@ -1,186 +0,0 @@ - subroutine deep65(s3,mode65,neme,flip,mycall,hiscall, - + hisgrid,decoded,qual) - - parameter (MAXCALLS=7000,MAXRPT=63) - real s3(64,63) - character callsign*12,grid*4,message*22,hisgrid*6,c*1,ceme*3 - character*12 mycall,hiscall - character mycall0*12,hiscall0*12,hisgrid0*6 - character*22 decoded - character*22 testmsg(2*MAXCALLS + 2 + MAXRPT) - character*15 callgrid(MAXCALLS) - character*180 line - character*4 rpt(MAXRPT) - integer ncode(63,2*MAXCALLS + 2 + MAXRPT) - real pp(2*MAXCALLS + 2 + MAXRPT) - common/mrscom/ mrs(63),mrs2(63) - common/c3com/ mcall3a - - data neme0/-99/ - data rpt/'-01','-02','-03','-04','-05', - + '-06','-07','-08','-09','-10', - + '-11','-12','-13','-14','-15', - + '-16','-17','-18','-19','-20', - + '-21','-22','-23','-24','-25', - + '-26','-27','-28','-29','-30', - + 'R-01','R-02','R-03','R-04','R-05', - + 'R-06','R-07','R-08','R-09','R-10', - + 'R-11','R-12','R-13','R-14','R-15', - + 'R-16','R-17','R-18','R-19','R-20', - + 'R-21','R-22','R-23','R-24','R-25', - + 'R-26','R-27','R-28','R-29','R-30', - + 'RO','RRR','73'/ - save - - if(mycall.eq.mycall0 .and. hiscall.eq.hiscall0 .and. - + hisgrid.eq.hisgrid0 .and. mcall3a.eq.0 .and. - + neme.eq.neme0) go to 30 - - mcall3a=0 - call cs_lock('deep65a') - rewind 23 - k=0 - icall=0 - do n=1,MAXCALLS - if(n.eq.1) then - callsign=hiscall - do i=4,12 - if(ichar(callsign(i:i)).eq.0) callsign(i:i)=' ' - enddo - grid=hisgrid(1:4) - if(ichar(grid(3:3)).eq.0) grid(3:3)=' ' - if(ichar(grid(4:4)).eq.0) grid(4:4)=' ' - else - read(23,1002,end=20) line - 1002 format (A80) - if(line(1:4).eq.'ZZZZ') go to 20 - if(line(1:2).eq.'//') go to 10 - i1=index(line,',') - if(i1.lt.4) go to 10 - i2=index(line(i1+1:),',') - if(i2.lt.5) go to 10 - i2=i2+i1 - i3=index(line(i2+1:),',') - if(i3.lt.1) i3=index(line(i2+1:),' ') - i3=i2+i3 - callsign=line(1:i1-1) - grid=line(i1+1:i2-1) - ceme=line(i2+1:i3-1) - if(neme.eq.1 .and. ceme.ne.'EME') go to 10 - endif - - icall=icall+1 - j1=index(mycall,' ') - 1 - if(j1.le.-1) j1=12 - if(j1.lt.3) j1=6 - j2=index(callsign,' ') - 1 - if(j2.le.-1) j2=12 - if(j2.lt.3) j2=6 - j3=index(mycall,'/') ! j3>0 means compound mycall - j4=index(callsign,'/') ! j4>0 means compound hiscall - callgrid(icall)=callsign(1:j2) - - mz=1 -! Allow MyCall + HisCall + rpt (?) - if(n.eq.1 .and. j3.lt.1 .and. j4.lt.1 .and. - + flip.gt.0.0 .and. callsign(1:6).ne.' ') mz=MAXRPT+1 - do m=1,mz - if(m.gt.1) grid=rpt(m-1) - if(j3.lt.1 .and.j4.lt.1) - + callgrid(icall)=callsign(1:j2)//' '//grid - message=mycall(1:j1)//' '//callgrid(icall) - k=k+1 - testmsg(k)=message - call encode65(message,ncode(1,k)) - - if(n.ge.2) then -C Insert CQ message - if(j4.lt.1) callgrid(icall)=callsign(1:j2)//' '//grid - message='CQ '//callgrid(icall) - k=k+1 - testmsg(k)=message - call encode65(message,ncode(1,k)) - endif - enddo - 10 continue - enddo - - 20 continue - call cs_unlock - ntot=k - neme0=neme - - 30 mycall0=mycall - hiscall0=hiscall - hisgrid0=hisgrid - modified0=modified - ref0=0. - do j=1,63 - ref0=ref0 + s3(mrs(j),j) - enddo - - p1=-1.e30 - p2=-1.e30 - do k=1,ntot - pp(k)=0. -! Test all messages if flip=+1; skip the CQ messages if flip=-1. - if(flip.gt.0.0 .or. testmsg(k)(1:3).ne.'CQ ') then - sum=0. - ref=ref0 - do j=1,63 - i=ncode(j,k)+1 - sum=sum + s3(i,j) - if(i.eq.mrs(j)) then - ref=ref - s3(i,j) + s3(mrs2(j),j) - endif - enddo - p=sum/ref - pp(k)=p - if(p.gt.p1) then - p1=p - ip1=k - endif - endif - enddo - - do i=1,ntot - if(pp(i).gt.p2 .and. pp(i).ne.p1) p2=pp(i) - enddo - -C ### DO NOT REMOVE ### - call cs_lock('deep65b') - rewind 77 - write(77,*) p1,p2 - call cs_unlock - -C ### Works OK without it (in both Windows and Linux) if compiled -C ### without optimization. However, in Windows this is a colossal -C ### pain because of the way McMillan Installer wants to run the -C ### compile step. - - if(mode65.eq.1) bias=max(1.12*p2,0.335) - if(mode65.eq.2) bias=max(1.08*p2,0.405) - if(mode65.ge.4) bias=max(1.04*p2,0.505) - - if(p2.eq.p1 .and. p1.ne.-1.e30) stop 'Error in deep65' - qual=100.0*(p1-bias) - - decoded=' ' - c=' ' - - if(qual.gt.1.0) then - if(qual.lt.6.0) c='?' - decoded=testmsg(ip1) - else - qual=0. - endif - decoded(22:22)=c - -C Make sure everything is upper case. - do i=1,22 - if(decoded(i:i).ge.'a' .and. decoded(i:i).le.'z') - + decoded(i:i)=char(ichar(decoded(i:i))-32) - enddo - - return - end diff --git a/detect.f b/detect.f deleted file mode 100644 index dcea8f917..000000000 --- a/detect.f +++ /dev/null @@ -1,29 +0,0 @@ - subroutine detect(data,npts,f,y) - -C Compute powers at the tone frequencies using 1-sample steps. - - parameter (NZ=11025,NSPD=25) - real data(npts) - real y(npts) - complex c(NZ) - complex csum - data twopi/6.283185307/ - - dpha=twopi*f/11025.0 - do i=1,npts - c(i)=data(i)*cmplx(cos(dpha*i),-sin(dpha*i)) - enddo - - csum=0. - do i=1,NSPD - csum=csum+c(i) - enddo - - y(1)=real(csum)**2 + aimag(csum)**2 - do i=2,npts-(NSPD-1) - csum=csum-c(i-1)+c(i+NSPD-1) - y(i)=real(csum)**2 + aimag(csum)**2 - enddo - - return - end diff --git a/devsetup.cpp b/devsetup.cpp new file mode 100644 index 000000000..b4db9393a --- /dev/null +++ b/devsetup.cpp @@ -0,0 +1,325 @@ +#include "devsetup.h" +#include "mainwindow.h" +#include +#include + +#define MAXDEVICES 100 + +//----------------------------------------------------------- DevSetup() +DevSetup::DevSetup(QWidget *parent) : QDialog(parent) +{ + ui.setupUi(this); //setup the dialog form + m_restartSoundIn=false; + m_restartSoundOut=false; +} + +DevSetup::~DevSetup() +{ +} + +void DevSetup::initDlg() +{ + int k,id; + int valid_devices=0; + int minChan[MAXDEVICES]; + int maxChan[MAXDEVICES]; + int minSpeed[MAXDEVICES]; + int maxSpeed[MAXDEVICES]; + char hostAPI_DeviceName[MAXDEVICES][50]; + char s[60]; + int numDevices=Pa_GetDeviceCount(); + getDev(&numDevices,hostAPI_DeviceName,minChan,maxChan,minSpeed,maxSpeed); + k=0; + for(id=0; id= minSpeed[id] && 96000 <= maxSpeed[id]) { + m_inDevList[k]=id; + k++; + sprintf(s,"%2d %d %-49s",id,maxChan[id],hostAPI_DeviceName[id]); + QString t(s); + ui.comboBoxSndIn->addItem(t); + valid_devices++; + } + } + + const PaDeviceInfo *pdi; + int nchout; + char *p,*p1; + char p2[50]; + char pa_device_name[128]; + char pa_device_hostapi[128]; + + k=0; + for(id=0; idmaxOutputChannels; + if(nchout>=2) { + m_outDevList[k]=id; + k++; + sprintf((char*)(pa_device_name),"%s",pdi->name); + sprintf((char*)(pa_device_hostapi),"%s", + Pa_GetHostApiInfo(pdi->hostApi)->name); + + p1=(char*)""; + p=strstr(pa_device_hostapi,"MME"); + if(p!=NULL) p1=(char*)"MME"; + p=strstr(pa_device_hostapi,"Direct"); + if(p!=NULL) p1=(char*)"DirectX"; + p=strstr(pa_device_hostapi,"WASAPI"); + if(p!=NULL) p1=(char*)"WASAPI"; + p=strstr(pa_device_hostapi,"ASIO"); + if(p!=NULL) p1=(char*)"ASIO"; + p=strstr(pa_device_hostapi,"WDM-KS"); + if(p!=NULL) p1=(char*)"WDM-KS"; + + sprintf(p2,"%2d %-8s %-39s",id,p1,pa_device_name); + QString t(p2); + ui.comboBoxSndOut->addItem(t); + } + } + + ui.myCallEntry->setText(m_myCall); + ui.myGridEntry->setText(m_myGrid); + ui.idIntSpinBox->setValue(m_idInt); + ui.pttComboBox->setCurrentIndex(m_pttPort); + ui.astroFont->setValue(m_astroFont); + ui.cbXpol->setChecked(m_xpol); + ui.rbAntennaX->setChecked(m_xpolx); + ui.saveDirEntry->setText(m_saveDir); + ui.azelDirEntry->setText(m_azelDir); + ui.dxccEntry->setText(m_dxccPfx); + ui.timeoutSpinBox->setValue(m_timeout); + ui.dPhiSpinBox->setValue(m_dPhi); + ui.fCalSpinBox->setValue(m_fCal); + ui.faddEntry->setText(QString::number(m_fAdd,'f',3)); + ui.networkRadioButton->setChecked(m_network); + ui.soundCardRadioButton->setChecked(!m_network); + ui.rb96000->setChecked(m_fs96000); + ui.rb95238->setChecked(!m_fs96000); + ui.comboBoxSndIn->setEnabled(!m_network); + ui.comboBoxSndIn->setCurrentIndex(m_nDevIn); + ui.comboBoxSndOut->setCurrentIndex(m_nDevOut); + ui.sbPort->setValue(m_udpPort); + ui.cbIQswap->setChecked(m_IQswap); + ui.cb10db->setChecked(m_10db); + ui.cbInitIQplus->setChecked(m_initIQplus); + ui.mult570SpinBox->setValue(m_mult570); + ui.cal570SpinBox->setValue(m_cal570); + sscanf(m_colors.toAscii(),"%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x%2x", + &r,&g,&b,&r0,&g0,&b0,&r1,&g1,&b1,&r2,&g2,&b2,&r3,&g3,&b3); + updateColorLabels(); + ui.sbBackgroundRed->setValue(r); + ui.sbBackgroundGreen->setValue(g); + ui.sbBackgroundBlue->setValue(b); + ui.sbRed0->setValue(r0); + ui.sbRed1->setValue(r1); + ui.sbRed2->setValue(r2); + ui.sbRed3->setValue(r3); + ui.sbGreen0->setValue(g0); + ui.sbGreen1->setValue(g1); + ui.sbGreen2->setValue(g2); + ui.sbGreen3->setValue(g3); + ui.sbBlue0->setValue(b0); + ui.sbBlue1->setValue(b1); + ui.sbBlue2->setValue(b2); + ui.sbBlue3->setValue(b3); + + m_paInDevice=m_inDevList[m_nDevIn]; + m_paOutDevice=m_outDevList[m_nDevOut]; + +} + +//------------------------------------------------------- accept() +void DevSetup::accept() +{ + // Called when OK button is clicked. + // Check to see whether SoundInThread must be restarted, + // and save user parameters. + + if(m_network!=ui.networkRadioButton->isChecked() or + m_nDevIn!=ui.comboBoxSndIn->currentIndex() or + m_paInDevice!=m_inDevList[m_nDevIn] or + m_xpol!=ui.cbXpol->isChecked() or + m_udpPort!=ui.sbPort->value()) m_restartSoundIn=true; + + if(m_nDevOut!=ui.comboBoxSndOut->currentIndex() or + m_paOutDevice!=m_outDevList[m_nDevOut]) m_restartSoundOut=true; + + m_myCall=ui.myCallEntry->text(); + m_myGrid=ui.myGridEntry->text(); + m_idInt=ui.idIntSpinBox->value(); + m_pttPort=ui.pttComboBox->currentIndex(); + m_astroFont=ui.astroFont->value(); + m_xpol=ui.cbXpol->isChecked(); + m_xpolx=ui.rbAntennaX->isChecked(); + m_saveDir=ui.saveDirEntry->text(); + m_azelDir=ui.azelDirEntry->text(); + m_dxccPfx=ui.dxccEntry->text(); + m_timeout=ui.timeoutSpinBox->value(); + m_dPhi=ui.dPhiSpinBox->value(); + m_fCal=ui.fCalSpinBox->value(); + m_fAdd=ui.faddEntry->text().toDouble(); + m_network=ui.networkRadioButton->isChecked(); + m_fs96000=ui.rb96000->isChecked(); + m_nDevIn=ui.comboBoxSndIn->currentIndex(); + m_paInDevice=m_inDevList[m_nDevIn]; + m_nDevOut=ui.comboBoxSndOut->currentIndex(); + m_paOutDevice=m_outDevList[m_nDevOut]; + m_udpPort=ui.sbPort->value(); + m_IQswap=ui.cbIQswap->isChecked(); + m_10db=ui.cb10db->isChecked(); + m_initIQplus=ui.cbInitIQplus->isChecked(); + m_mult570=ui.mult570SpinBox->value(); + m_cal570=ui.cal570SpinBox->value(); + + QDialog::accept(); +} + +void DevSetup::on_soundCardRadioButton_toggled(bool checked) +{ + ui.comboBoxSndIn->setEnabled(ui.soundCardRadioButton->isChecked()); + ui.rb96000->setChecked(checked); + ui.rb95238->setEnabled(!checked); + ui.label_InputDev->setEnabled(checked); + ui.label_Port->setEnabled(!checked); + ui.sbPort->setEnabled(!checked); + ui.cbIQswap->setEnabled(checked); + ui.cb10db->setEnabled(checked); +} + +void DevSetup::on_cbXpol_stateChanged(int n) +{ + m_xpol = (n!=0); + ui.rbAntenna->setEnabled(m_xpol); + ui.rbAntennaX->setEnabled(m_xpol); + ui.dPhiSpinBox->setEnabled(m_xpol); + ui.labelDphi->setEnabled(m_xpol); +} + +void DevSetup::on_cal570SpinBox_valueChanged(double ppm) +{ + m_cal570=ppm; +} + +void DevSetup::on_mult570SpinBox_valueChanged(int mult) +{ + m_mult570=mult; +} + +void DevSetup::updateColorLabels() +{ + QString t; + int r=ui.sbBackgroundRed->value(); + int g=ui.sbBackgroundGreen->value(); + int b=ui.sbBackgroundBlue->value(); + int r0=ui.sbRed0->value(); + int r1=ui.sbRed1->value(); + int r2=ui.sbRed2->value(); + int r3=ui.sbRed3->value(); + int g0=ui.sbGreen0->value(); + int g1=ui.sbGreen1->value(); + int g2=ui.sbGreen2->value(); + int g3=ui.sbGreen3->value(); + int b0=ui.sbBlue0->value(); + int b1=ui.sbBlue1->value(); + int b2=ui.sbBlue2->value(); + int b3=ui.sbBlue3->value(); + + t.sprintf("QLabel{background-color: #%2.2x%2.2x%2.2x;" + "color: #%2.2x%2.2x%2.2x}",r,g,b,r0,g0,b0); + ui.lab0->setStyleSheet(t); + t.sprintf("QLabel{background-color: #%2.2x%2.2x%2.2x;" + "color: #%2.2x%2.2x%2.2x}",r,g,b,r1,g1,b1); + ui.lab1->setStyleSheet(t); + t.sprintf("QLabel{background-color: #%2.2x%2.2x%2.2x;" + "color: #%2.2x%2.2x%2.2x}",r,g,b,r2,g2,b2); + ui.lab2->setStyleSheet(t); + t.sprintf("QLabel{background-color: #%2.2x%2.2x%2.2x;" + "color: #%2.2x%2.2x%2.2x}",r,g,b,r3,g3,b3); + ui.lab3->setStyleSheet(t); + + m_colors.sprintf("%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x" + "%2.2x%2.2x%2.2x",r,g,b,r0,g0,b0,r1,g1,b1,r2,g2,b2,r3,g3,b3); +} + +void DevSetup::on_sbBackgroundRed_valueChanged(int r) +{ + updateColorLabels(); +} + +void DevSetup::on_sbBackgroundGreen_valueChanged(int g) +{ + updateColorLabels(); +} + +void DevSetup::on_sbBackgroundBlue_valueChanged(int b) +{ + updateColorLabels(); +} + + +void DevSetup::on_sbRed0_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_sbGreen0_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_sbBlue0_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_sbRed1_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_sbGreen1_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_sbBlue1_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_sbRed2_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_sbGreen2_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_sbBlue2_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_sbRed3_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_sbGreen3_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_sbBlue3_valueChanged(int arg1) +{ + updateColorLabels(); +} + +void DevSetup::on_pushButton_5_clicked() +{ + QColor color = QColorDialog::getColor(Qt::green, this); + if (color.isValid()) { + } +} diff --git a/devsetup.h b/devsetup.h new file mode 100644 index 000000000..56f6bd6ad --- /dev/null +++ b/devsetup.h @@ -0,0 +1,83 @@ +#ifndef DEVSETUP_H +#define DEVSETUP_H + +#include +#include "ui_devsetup.h" + +class DevSetup : public QDialog +{ + Q_OBJECT +public: + DevSetup(QWidget *parent=0); + ~DevSetup(); + + void initDlg(); + qint32 m_idInt; + qint32 m_pttPort; + qint32 m_nDevIn; + qint32 m_nDevOut; + qint32 m_inDevList[100]; + qint32 m_outDevList[100]; + qint32 m_paInDevice; + qint32 m_paOutDevice; + qint32 m_timeout; + qint32 m_dPhi; + qint32 m_fCal; + qint32 m_udpPort; + qint32 m_astroFont; + qint32 m_mult570; + + double m_fAdd; + double m_cal570; + + bool m_xpolx; + bool m_network; + bool m_fs96000; + bool m_xpol; + bool m_IQswap; + bool m_restartSoundIn; + bool m_restartSoundOut; + bool m_10db; + bool m_initIQplus; + + QString m_myCall; + QString m_myGrid; + QString m_saveDir; + QString m_azelDir; + QString m_dxccPfx; + QString m_colors; + + QColor m_colorBackground; + +public slots: + void accept(); + +private slots: + void on_soundCardRadioButton_toggled(bool checked); + void on_cbXpol_stateChanged(int arg1); + void on_cal570SpinBox_valueChanged(double ppm); + void on_mult570SpinBox_valueChanged(int mult); + void on_sbBackgroundRed_valueChanged(int arg1); + void on_sbBackgroundGreen_valueChanged(int arg1); + void on_sbBackgroundBlue_valueChanged(int arg1); + void updateColorLabels(void); + void on_sbRed0_valueChanged(int arg1); + void on_sbGreen0_valueChanged(int arg1); + void on_sbBlue0_valueChanged(int arg1); + void on_sbRed1_valueChanged(int arg1); + void on_sbGreen1_valueChanged(int arg1); + void on_sbBlue1_valueChanged(int arg1); + void on_sbRed2_valueChanged(int arg1); + void on_sbGreen2_valueChanged(int arg1); + void on_sbBlue2_valueChanged(int arg1); + void on_sbRed3_valueChanged(int arg1); + void on_sbGreen3_valueChanged(int arg1); + void on_sbBlue3_valueChanged(int arg1); + void on_pushButton_5_clicked(); + +private: + int r,g,b,r0,g0,b0,r1,g1,b1,r2,g2,b2,r3,g3,b3; + Ui::DialogSndCard ui; +}; + +#endif // DEVSETUP_H diff --git a/devsetup.ui b/devsetup.ui new file mode 100644 index 000000000..cf5d80577 --- /dev/null +++ b/devsetup.ui @@ -0,0 +1,1583 @@ + + + DialogSndCard + + + + 0 + 0 + 392 + 379 + + + + Setup + + + + + + 0 + + + + Station + + + + + 12 + 33 + 348 + 267 + + + + + + + + + + + + 0 + 20 + + + + My Call: + + + + + + + + 0 + 20 + + + + My Grid: + + + + + + + + 0 + 20 + + + + ID Interval (min): + + + + + + + + 0 + 20 + + + + PTT Port: + + + + + + + Astro Font Size: + + + + + + + + + + + + 60 + 16777215 + + + + K1JT + + + + + + + + 60 + 16777215 + + + + FN20qi + + + + + + + -20 + + + 10 + + + + + + + + 60 + 16777215 + + + + false + + + + None + + + + + COM1 + + + + + COM2 + + + + + COM3 + + + + + COM4 + + + + + COM5 + + + + + COM6 + + + + + COM7 + + + + + COM8 + + + + + COM9 + + + + + COM10 + + + + + COM11 + + + + + COM12 + + + + + COM13 + + + + + + + + 12 + + + 32 + + + 20 + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + + + + 0 + 20 + + + + DXCC: + + + + + + + + 0 + 20 + + + + Timeout (min): + + + + + + + + 0 + 20 + + + + Fcal (Hz): + + + + + + + + 0 + 20 + + + + Fadd (MHz) + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + + + + + + 16777215 + 16777215 + + + + PJ9 + + + + + + + 20 + + + + + + + -2000 + + + 2000 + + + + + + + 0.0 + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + + + + + + 0 + 0 + + + + + 0 + 55 + + + + Antennas: + + + + + 10 + 23 + 321 + 22 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Xpol + + + true + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + + + + + true + + + + + + + x + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + + 0 + 20 + + + + Dphi: + + + + + + + + 0 + 20 + + + + -90 + + + 90 + + + 10 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + 75 + 20 + + + + Save Directory: + + + + + + + C:\Users\joe\wsjt\map65\save + + + + + + + + + + + + 75 + 20 + + + + AzEl Directory: + + + + + + + C:\Users\joe\wsjt\map65 + + + + + + + + + + + I/O Devices + + + + + 0 + 10 + 361 + 291 + + + + + + + Input Source (Rx, Baseband) + + + + + 13 + 14 + 341 + 211 + + + + + + + + + true + + + SoundCard + + + false + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Network + + + true + + + + + + + + + + + false + + + + 0 + 20 + + + + Swap I/Q + + + + + + + false + + + +10 dB + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 57 + 0 + + + + 20000 + + + 51000 + + + 50004 + + + + + + + + 0 + 0 + + + + + 26 + 0 + + + + + 16777215 + 20 + + + + Port + + + + + + + + + false + + + + 0 + 0 + + + + Dev Ch API Name + + + + + + + + + false + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 50 + 13 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 13 + + + + + + + + + 0 + 0 + + + + + 16777215 + 60 + + + + Sample Rate + + + + + 30 + 20 + 282 + 22 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 96000 Hz + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 95238 Hz + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 55 + + + + Output Device (Tx Audio) + + + + + 10 + 20 + 291 + 22 + + + + + + + + + + + Si570 + + + + + 70 + 90 + 228 + 111 + + + + + + + + + Frequency multiplier: + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 47 + 20 + + + + + + + + 1 + + + 8 + + + 2 + + + + + + + + + + + Frequency correction (ppm): + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 10 + 20 + + + + + + + + 3 + + + -100.000000000000000 + + + 100.000000000000000 + + + + + + + + + Initialize IQ+ on startup + + + + + + + + + Colors + + + + + 12 + 21 + 351 + 281 + + + + + + + + 10 + + + + Choose colors for Band Map and Messages Windows + + + Qt::AlignCenter + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 80 + 20 + + + + + + + + Red + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 31 + 20 + + + + + + + + Green + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 34 + 20 + + + + + + + + Blue + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 80 + 20 + + + + + + + + + + + + + 60 + 16777215 + + + + Background + + + Qt::AlignCenter + + + + + + + 255 + + + + + + + 255 + + + + + + + 255 + + + 102 + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 55 + 20 + + + + + + + + + + + + + 60 + 16777215 + + + + Newest + + + Qt::AlignCenter + + + + + + + 255 + + + 255 + + + + + + + 255 + + + + + + + 255 + + + + + + + + 0 + 0 + + + + + 50 + 16777215 + + + + + Courier New + 9 + + + + K1ABC + + + + + + + + + + + + 60 + 16777215 + + + + 2nd + + + Qt::AlignCenter + + + + + + + 255 + + + 255 + + + + + + + 255 + + + 255 + + + + + + + 255 + + + + + + + + 0 + 0 + + + + + 50 + 16777215 + + + + + Courier New + 9 + + + + K1ABC + + + + + + + + + + + + 60 + 16777215 + + + + 3rd + + + Qt::AlignCenter + + + + + + + 255 + + + 150 + + + + + + + 255 + + + 150 + + + + + + + 255 + + + 150 + + + + + + + + 0 + 0 + + + + + 50 + 16777215 + + + + + Courier New + 9 + + + + K1ABC + + + + + + + + + + + + 60 + 16777215 + + + + Oldest + + + Qt::AlignCenter + + + + + + + 255 + + + 100 + + + + + + + 255 + + + 100 + + + + + + + 255 + + + 100 + + + + + + + + 0 + 0 + + + + + 50 + 16777215 + + + + + Courier New + 9 + + + + K1ABC + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Color Selector + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + DialogSndCard + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + DialogSndCard + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/displaytext.cpp b/displaytext.cpp new file mode 100644 index 000000000..4f2ac0b6d --- /dev/null +++ b/displaytext.cpp @@ -0,0 +1,15 @@ +#include "displaytext.h" +#include +#include + +DisplayText::DisplayText(QWidget *parent) : + QTextBrowser(parent) +{ +} + +void DisplayText::mouseDoubleClickEvent(QMouseEvent *e) +{ + bool ctrl = (e->modifiers() & 0x4000000); + emit(selectCallsign(ctrl)); + QTextBrowser::mouseDoubleClickEvent(e); +} diff --git a/displaytext.h b/displaytext.h new file mode 100644 index 000000000..7362ad196 --- /dev/null +++ b/displaytext.h @@ -0,0 +1,22 @@ +#ifndef DISPLAYTEXT_H +#define DISPLAYTEXT_H + +#include + +class DisplayText : public QTextBrowser +{ + Q_OBJECT +public: + explicit DisplayText(QWidget *parent = 0); + +signals: + void selectCallsign(bool ctrl); + +public slots: + +protected: + void mouseDoubleClickEvent(QMouseEvent *e); + +}; + +#endif // DISPLAYTEXT_H diff --git a/f2py.py b/f2py.py deleted file mode 100644 index c5fb5a360..000000000 --- a/f2py.py +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env python.exe -# See http://cens.ioc.ee/projects/f2py2e/ -import f2py2e -f2py2e.main() diff --git a/ffft.f b/ffft.f new file mode 100644 index 000000000..d475875c1 --- /dev/null +++ b/ffft.f @@ -0,0 +1,69 @@ + subroutine ffft(d,npts,isign,ireal) + +C Fourier transform of length npts=2**k, performed in place. +C Input data in array d, treated as complex if ireal=0, and as real if ireal=1. +C In either case the transform values are returned in array d, treated as +C complex. The DC term is d(1), and d(npts/2+1) is the term at the Nyquist +C frequency. The basic algorithm is the same as Norm Brenner's FOUR1, and +C uses radix-2 transforms. + +C J. H. Taylor, Princeton University. + + complex d(npts),t,w,wstep,tt,uu + data pi/3.14159265359/ + +C Shuffle the data to bit-reversed order. + + imax=npts/(ireal+1) + irev=1 + do 5 i=1,imax + if(i.ge.irev) go to 2 + t=d(i) + d(i)=d(irev) + d(irev)=t +2 mmax=imax/2 +3 if(irev.le.mmax) go to 5 + irev=irev-mmax + mmax=mmax/2 + if(mmax.ge.1) go to 3 +5 irev=irev+mmax + +C The radix-2 transform begins here. + + api=isign*pi/2. + mmax=1 +6 istep=2*mmax + wstep=cmplx(-2.*sin(api/mmax)**2,sin(2.*api/mmax)) + w=1. + do 9 m=1,mmax + +C This in the inner-most loop -- optimization here is important! + do 8 i=m,imax,istep + t=w*d(i+mmax) + d(i+mmax)=d(i)-t +8 d(i)=d(i)+t + +9 w=w*(1.+wstep) + mmax=istep + if(mmax.lt.imax) go to 6 + + if(ireal.eq.0) return + +C Now complete the last stage of a doubled-up real transform. + + jmax=imax/2 + 1 + wstep=cmplx(-2.*sin(isign*pi/npts)**2,sin(isign*pi/imax)) + w=1.0 + d(imax+1)=d(1) + + do 10 j=1,jmax + uu=cmplx(real(d(j))+real(d(2+imax-j)),aimag(d(j)) - + + aimag(d(2+imax-j))) + tt=w*cmplx(aimag(d(j))+aimag(d(2+imax-j)),-real(d(j)) + + + real(d(2+imax-j))) + d(j)=uu+tt + d(2+imax-j)=conjg(uu-tt) +10 w=w*(1.+wstep) + + return + end diff --git a/fftw3single.lib b/fftw3single.lib deleted file mode 100644 index be2c5fde317c7aec788ba87794651fc51823d4d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82152 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 DDTA1b diff --git a/fil651.f b/fil651.f deleted file mode 100644 index 7f633d91c..000000000 --- a/fil651.f +++ /dev/null @@ -1,67 +0,0 @@ - subroutine fil651(d,n1,c,n2) - -C FIR lowpass mixing filter designed with ScopeFIR. Real in, complex out. - -C fsample = 5512.5 Hz -C Ntaps = 31 -C fc = 1000 Hz -C fstop = 1378.125 Hz -C Ripple = 0.5 dB -C Stop Atten = 50 dB -C fmix = 1378.125 Hz -C fout = 2706.25 Hz - - parameter (NTAPS=31) - parameter (NH=NTAPS/2) - parameter (NDOWN=2) !Downsample ratio - - real d(n1) - complex c(n2) - - complex ck(-NH:NH) - data ck/ - + (-0.000000073578,-0.000859869243), - + ( 0.008518289457,-0.000000680308), - + ( 0.000000834309, 0.011250152594), - + (-0.001061705254, 0.000000072679), - + ( 0.000000875897, 0.013958392128), - + (-0.010047338711, 0.000000573160), - + ( 0.000000770320, 0.015003869984), - + (-0.025027880956, 0.000001142192), - + ( 0.000000285583, 0.007151700551), - + (-0.043634723888, 0.000001493512), - + (-0.000000478847,-0.016788108005), - + (-0.061886192046, 0.000001412144), - + (-0.000001258694,-0.073548459509), - + (-0.075261027462, 0.000000858668), - + (-0.000001749252,-0.306638863572), - + ( 0.419826269508, 0.000000000000), - + (-0.000001749252, 0.306638863572), - + (-0.075261027462,-0.000000858668), - + (-0.000001258694, 0.073548459509), - + (-0.061886192046,-0.000001412144), - + (-0.000000478847, 0.016788108005), - + (-0.043634723888,-0.000001493512), - + ( 0.000000285583,-0.007151700551), - + (-0.025027880956,-0.000001142192), - + ( 0.000000770320,-0.015003869984), - + (-0.010047338711,-0.000000573160), - + ( 0.000000875897,-0.013958392128), - + (-0.001061705254,-0.000000072679), - + ( 0.000000834309,-0.011250152594), - + ( 0.008518289457, 0.000000680308), - + (-0.000000073578, 0.000859869243)/ - - n2=(n1-NTAPS+NDOWN)/NDOWN - k0=NH-NDOWN+1 - - do i=1,n2 - c(i)=0. - k=k0 + NDOWN*i - do j=-NH,NH - c(i)=c(i) + d(j+k)*conjg(ck(j)) - enddo - enddo - - return - end diff --git a/fil652.f b/fil652.f deleted file mode 100644 index ac0d26dba..000000000 --- a/fil652.f +++ /dev/null @@ -1,44 +0,0 @@ - subroutine fil652(c1,n1,c2,n2) - -C FIR lowpass filter designed using ScopeFIR - -C fsample = 2756.25 Hz -C Ntaps = 31 -C fc = 500 Hz -C fstop = 689.0625 Hz -C Ripple = 0.5 dB -C Stop Atten = 50 dB -C fout = 1378.125 Hz - - parameter (NTAPS=31) - parameter (NH=NTAPS/2) - parameter (NDOWN=2) !Downsample ratio - complex c1(n1) - complex c2(n2) - -C Filter coefficients: - real a(-NH:NH) - data a/ - + -0.000859869246,-0.008518289484,-0.011250152625,-0.001061705256, - + 0.013958392156, 0.010047338728,-0.015003870003,-0.025027880982, - + 0.007151700557, 0.043634723913, 0.016788108012,-0.061886192062, - + -0.073548459520, 0.075261027466, 0.306638863577, 0.419826269508, - + 0.306638863577, 0.075261027466,-0.073548459520,-0.061886192062, - + 0.016788108012, 0.043634723913, 0.007151700557,-0.025027880982, - + -0.015003870003, 0.010047338728, 0.013958392156,-0.001061705256, - + -0.011250152625,-0.008518289484,-0.000859869246/ - - n2=(n1-NTAPS+NDOWN)/NDOWN - k0=NH-NDOWN+1 - -C Loop over all output samples - do i=1,n2 - c2(i)=0. - k=k0 + NDOWN*i - do j=-NH,NH - c2(i)=c2(i) + c1(j+k)*a(j) - enddo - enddo - - return - end diff --git a/fil653.f b/fil653.f deleted file mode 100644 index aa60ba026..000000000 --- a/fil653.f +++ /dev/null @@ -1,49 +0,0 @@ - subroutine fil653(c1,n1,c2,n2) - -C FIR lowpass filter designed using ScopeFIR - -C fsample = 1378.125 Hz -C Ntaps = 45 -C fc = 100 Hz -C fstop = 172.265625 Hz -C Ripple = 0.5 dB -C Stop Atten = 50 dB -C fout = 172.265625 Hz -C BW = 200 Hz - - parameter (NTAPS=45) - parameter (NH=NTAPS/2) - parameter (NDOWN=4) !Downsample ratio - complex c1(n1) - complex c2(n2) - -C Filter coefficients: - real a(-NH:NH) - data a/ - + -0.000005569862,-0.002503777832,-0.004040335617,-0.005717910288, - + -0.006153385485,-0.004446125293,-0.000305215272, 0.005557289511, - + 0.011329120672, 0.014496551280, 0.012703875898, 0.004837591829, - + -0.008060363689,-0.022474422302,-0.032964876083,-0.033575486327, - + -0.019743889907, 0.009895672340, 0.052467109908, 0.101031155027, - + 0.146073001698, 0.177927966814, 0.189427119395, 0.177927966814, - + 0.146073001698, 0.101031155027, 0.052467109908, 0.009895672340, - + -0.019743889907,-0.033575486327,-0.032964876083,-0.022474422302, - + -0.008060363689, 0.004837591829, 0.012703875898, 0.014496551280, - + 0.011329120672, 0.005557289511,-0.000305215272,-0.004446125293, - + -0.006153385485,-0.005717910288,-0.004040335617,-0.002503777832, - + -0.000005569862/ - - n2=(n1-NTAPS+NDOWN)/NDOWN - k0=NH-NDOWN+1 - -C Loop over all output samples - do i=1,n2 - c2(i)=0. - k=k0 + NDOWN*i - do j=-NH,NH - c2(i)=c2(i) + c1(j+k)*a(j) - enddo - enddo - - return - end diff --git a/filbig.f b/filbig.f deleted file mode 100644 index 5773ccd55..000000000 --- a/filbig.f +++ /dev/null @@ -1,119 +0,0 @@ - subroutine filbig(dd,nmax,f0,newdat,c4a,c4b,n4) - -C Filter and downsample complex data for X and Y polarizations, -C stored in array dd(4,nmax). Output is downsampled from 96000 Hz -C to 1500 Hz, and the low-pass filter has f_cutoff = 375 Hz and -C f_stop = 750 Hz. - - parameter (NFFT1=5376000,NFFT2=77175) - real*4 dd(4,nmax) !Input data - complex c4a(NFFT2),c4b(NFFT2) !Output data - complex ca(NFFT1),cb(NFFT1) !FFTs of input - real*8 df -C Impulse response of filter (one side) - real halfpulse(8) - complex cfilt(NFFT2) - !Filter (complex; imag = 0) - real rfilt(NFFT2) !Filter (real) - integer plan1,plan2,plan3,plan4,plan5 - logical first - include 'fftw3.f' - equivalence (rfilt,cfilt) - data first/.true./ - data halfpulse/114.97547150,36.57879257,-20.93789101, - + 5.89886379,1.59355187,-2.49138308,0.60910773,-0.04248129/ - save - - if(nmax.lt.0) go to 900 - if(first) then - npatience=1 - nflags=FFTW_ESTIMATE - if(npatience.eq.1) nflags=FFTW_ESTIMATE_PATIENT - if(npatience.eq.2) nflags=FFTW_MEASURE - if(npatience.eq.3) nflags=FFTW_PATIENT - if(npatience.eq.4) nflags=FFTW_EXHAUSTIVE -C Plan the FFTs just once - call sfftw_plan_dft_1d_(plan1,NFFT1,ca,ca, - + FFTW_BACKWARD,nflags) - call sfftw_plan_dft_1d_(plan2,NFFT1,cb,cb, - + FFTW_BACKWARD,nflags) - call sfftw_plan_dft_1d_(plan3,NFFT2,c4a,c4a, - + FFTW_FORWARD,nflags) - call sfftw_plan_dft_1d_(plan4,NFFT2,c4b,c4b, - + FFTW_FORWARD,nflags) - call sfftw_plan_dft_1d_(plan5,NFFT2,cfilt,cfilt, - + FFTW_BACKWARD,nflags) - -C Convert impulse response to filter function - do i=1,NFFT2 - cfilt(i)=0. - enddo - fac=0.00625/NFFT1 - cfilt(1)=fac*halfpulse(1) - do i=2,8 - cfilt(i)=fac*halfpulse(i) - cfilt(NFFT2+2-i)=fac*halfpulse(i) - enddo - call sfftw_execute_(plan5) - - base=cfilt(NFFT2/2+1) - do i=1,NFFT2 - rfilt(i)=real(cfilt(i))-base - enddo - - df=96000.d0/NFFT1 - first=.false. - endif - -C When new data comes along, we need to compute a new "big FFT" -C If we just have a new f0, continue with the existing ca and cb. - - if(newdat.ne.0) then - nz=min(nmax,NFFT1) - do i=1,nz - ca(i)=cmplx(dd(1,i),dd(2,i)) - cb(i)=cmplx(dd(3,i),dd(4,i)) - enddo - - if(nmax.lt.NFFT1) then - do i=nmax+1,NFFT1 - ca(i)=0. - cb(i)=0. - enddo - endif - call sfftw_execute_(plan1) - call sfftw_execute_(plan2) - newdat=0 - endif - -C NB: f0 is the frequency at which we want our filter centered. -C i0 is the bin number in ca and cb closest to f0. - - i0=nint(f0/df) + 1 - nh=NFFT2/2 - do i=1,nh !Copy data into c4a and c4b, - j=i0+i-1 !and apply the filter function - c4a(i)=rfilt(i)*ca(j) - c4b(i)=rfilt(i)*cb(j) - enddo - do i=nh+1,NFFT2 - j=i0+i-1-NFFT2 - if(j.lt.1) j=j+NFFT1 !NFFT1 was NFFT2 - c4a(i)=rfilt(i)*ca(j) - c4b(i)=rfilt(i)*cb(j) - enddo - -C Do the short reverse transform, to go back to time domain. - call sfftw_execute_(plan3) - call sfftw_execute_(plan4) - n4=min(nmax/64,NFFT2) - go to 999 - - 900 call sfftw_destroy_plan_(plan1) - call sfftw_destroy_plan_(plan2) - call sfftw_destroy_plan_(plan3) - call sfftw_destroy_plan_(plan4) - call sfftw_destroy_plan_(plan5) - - 999 return - end diff --git a/files.txt b/files.txt deleted file mode 100644 index e0af35de7..000000000 --- a/files.txt +++ /dev/null @@ -1,36 +0,0 @@ -LU fname write read write thread --------------------------------------------------------------------------- -10 *.tf2 getfile2 -11 prefixes.txt pfxdump GUI GUI (once only) -11 decoded.txt map65a GUI decoder (60 s) -12 -13 tsky.dat astro0.F -14 azel.dat astro0.F GUI (1 s) -15 -16 -17 *.tf2 savetf2 decoder -18 TxData wsjtgen -19 messages.txt display.txt GUI decoder -20 bandmap.txt display.txt GUI decoder -21 ALL65.TXT map65a decoder -22 kvasd.dat extract KVASD decoder -23 CALL3.TXT deep65 decoder -24 meas24.txt savetf2 decoder -25 meas25.txt savetf2 decoder -26 tmp26.txt map65a,display display decoder -27 dphi.txt map65a decoder -28 -29 debug.txt -77 deep65 decoder --------------------------------------------------------------------------- - -So ... the problem may be writing to azel.dat from the GUI thread? -(Could put astro data into a common, and write to file from decode1.F90.) - -Also: look at write(line,...) forms ... - - unpackgrid unpackmsg symspec display savetf2 (all in decoder thread) - -read(char,...) - - packcall packgrid astro0 display getfile2 diff --git a/fivehz.f90 b/fivehz.f90 deleted file mode 100644 index 298b72bff..000000000 --- a/fivehz.f90 +++ /dev/null @@ -1,250 +0,0 @@ -subroutine fivehz - -! Called at interrupt level from the PortAudio callback routine. -! For nspb=2048 the callback rate is nfsample/nspb = 5.38 Hz. -! Thus, we should be able to control the timing of T/R sequence events -! here to within about 0.2 s. - -! Do not do anything very time consuming in this routine!! -! Disk I/O is a bad idea. Writing to stdout (for diagnostic purposes) -! seems to be OK. - -#ifdef CVF - use dflib - use dfport -#endif - - parameter (NTRING=64) - real*8 tt1(0:NTRING-1) - logical first,txtime,filled - integer ptt - integer TxOKz - real*8 fs,fsample,tt,u - include 'gcom1.f90' - include 'gcom2.f90' - data first/.true./,nc0/1/,nc1/1/ - save - - n1=time() - n2=mod(n1,86400) - tt=n1-n2+tsec-0.1d0*ndsec - - if(first) then - rxdelay=0.2 - txdelay=0.4 - tlatency=1.0 - first=.false. - iptt=0 - ntr0=-99 - rxdone=.false. - ibuf00=-99 - ncall=-1 - u=0.05d0 - fsample=11025.d0 - mfsample=110250 - filled=.false. - endif - - if(txdelay.lt.0.2d0) txdelay=0.2d0 - -! Measure average sampling frequency over a recent interval - ncall=ncall+1 - if(ncall.eq.9) then - ntt0=0 - ntt1=0 - tt1(ntt1)=tt - endif -! if(ncall.ge.10 .and. mod(ncall,2).eq.1) then - if(ncall.ge.10) then - ntt1=iand(ntt1+1,NTRING-1) - tt1(ntt1)=tt - if(ntt1.eq.NTRING-1) filled=.true. - if(filled) ntt0=iand(ntt1+1,NTRING-1) - if(mod(ncall,2).eq.1) then - nd=ntt1-ntt0 - if(nd.lt.0) nd=nd+NTRING - fs=nd*2048.d0/(tt1(ntt1)-tt1(ntt0)) - fsample=u*fs + (1.d0-u)*fsample - mfsample=nint(10.d0*fsample) - endif - endif - - if(trperiod.le.0) trperiod=30 - tx1=0.0 !Time to start a TX sequence - tx2=trperiod-(tlatency+txdelay) !Time to turn TX off - if(mode(1:4).eq.'JT65') then - if(nwave.lt.126*4096) nwave=126*4096 - tx2=txdelay + nwave/11025.0 - if(tx2.gt.(trperiod-2.0)) tx2=trperiod-tlatency-1.0 - endif - - if(TxFirst.eq.0) then - tx1=tx1+trperiod - tx2=tx2+trperiod - endif - - t=mod(Tsec,2.d0*trperiod) - txtime = t.ge.tx1 .and. t.lt.tx2 - -! If we're transmitting, freeze the input buffer pointers where they were. - receiving=1 - if(((txtime .and. (lauto.eq.1)) .or. TxOK.eq.1 .or. transmitting.eq.1) & - .and. (mute.eq.0)) then - receiving=0 - ibuf=ibuf000 - iwrite=iwrite000 - endif - ibuf000=ibuf - iwrite000=iwrite - nsec=Tsec - ntr=mod(nsec/trperiod,2) !ntr=0 in 1st sequence, 1 in 2nd - - if(ntr.ne.ntr0) then - ibuf0=ibuf !Start of new sequence, save ibuf -! if(mode(1:4).ne.'JT65') then -! ibuf0=ibuf0+3 !So we don't copy our own Tx -! if(ibuf0.gt.1024) ibuf0=ibuf0-1024 -! endif - ntime=time() !Save start time - if(mantx.eq.1 .and. iptt.eq.1) then - mantx=0 - TxOK=0 - endif - endif - -! Switch PTT line and TxOK appropriately - if(lauto.eq.1) then - if(txtime .and. iptt.eq.0 .and. & - mute.eq.0) i1=ptt(nport,pttport,1,iptt) !Raise PTT - if(.not.txtime .or. mute.eq.1) TxOK=0 !Lower TxOK - else - if(mantx.eq.1 .and. iptt.eq.0 .and. & - mute.eq.0) i2=ptt(nport,pttport,1,iptt) !Raise PTT - if(mantx.eq.0 .or. mute.eq.1) TxOK=0 !Lower TxOK - endif - -! Calculate Tx waveform as needed - if((iptt.eq.1 .and. iptt0.eq.0) .or. nrestart.eq.1) then - call wsjtgen - nrestart=0 - endif - -! If PTT was just raised, start a countdown for raising TxOK: - nc1a=txdelay/0.18576 - if(nc1a.lt.2) nc1a=2 - if(iptt.eq.1 .and. iptt0.eq.0) nc1=-nc1a-1 - if(nc1.le.0) nc1=nc1+1 - if(nc1.eq.0) TxOK=1 ! We are transmitting - -! If TxOK was just lowered, start a countdown for lowering PTT: - nc0a=(tlatency+txdelay)/0.18576 - if(nc0a.lt.5) nc0a=5 - if(TxOK.eq.0 .and. TxOKz.eq.1 .and. iptt.eq.1) nc0=-nc0a-1 - if(nc0.le.0) nc0=nc0+1 - if(nc0.eq.0) i3=ptt(nport,pttport,0,iptt) - - if(iptt.eq.0 .and.TxOK.eq.0) then - sending=" " - sendingsh=0 - endif - - nbufs=ibuf-ibuf0 - if(nbufs.lt.0) nbufs=nbufs+1024 - tdata=nbufs*2048.0/11025.0 - if(mode(1:4).eq.'JT65' .and. monitoring.eq.1 .and. tdata.gt.53.0 & - .and. ibuf0.ne.ibuf00) then - rxdone=.true. - ibuf00=ibuf0 - endif - iptt0=iptt - TxOKz=TxOK - ntr0=ntr - - return -end subroutine fivehz - -subroutine fivehztx - -! Called at interrupt level from the PortAudio output callback. - -#ifdef CVF - use dflib - use dfport -#endif - - parameter (NTRING=64) - real*8 tt1(0:NTRING-1) - logical first,filled - real*8 fs,fsample,tt,u - include 'gcom1.f90' - data first/.true./ - save - - n1=time() - n2=mod(n1,86400) - tt=n1-n2+tsec-0.1d0*ndsec - - if(first) then - first=.false. - ncall=-1 - fsample=11025.d0 - u=0.05d0 - mfsample2=110250 - filled=.false. - endif - -! Measure average sampling frequency over a recent interval - ncall=ncall+1 - if(ncall.eq.9) then - ntt0=0 - ntt1=0 - tt1(ntt1)=tt - endif - if(ncall.ge.10) then - ntt1=iand(ntt1+1,NTRING-1) - tt1(ntt1)=tt - if(ntt1.eq.NTRING-1) filled=.true. - if(filled) ntt0=iand(ntt1+1,NTRING-1) - if(mod(ncall,2).eq.1) then - nd=ntt1-ntt0 - if(nd.lt.0) nd=nd+NTRING - fs=nd*2048.d0/(tt1(ntt1)-tt1(ntt0)) - fsample=u*fs + (1.d0-u)*fsample - mfsample2=nint(10.d0*fsample) - endif - endif - - return -end subroutine fivehztx - -subroutine addnoise(n) - integer*2 n - real*8 txsnrdb0 - include 'gcom1.f90' - data idum/0/ - save - - if(txsnrdb.gt.40.0) return - if(txsnrdb.ne.txsnrdb0) then - snr=10.0**(0.05*(txsnrdb-1)) - fac=3000.0 - if(snr.gt.1.0) fac=3000.0/snr - txsnrdb0=txsnrdb - endif - i=fac*(gran(idum) + n*snr/32768.0) - if(i>32767) i=32767; - if(i<-32767) i=-32767; - n=i - - return -end subroutine addnoise - -real function gran(idum) - real r(12) - if(idum.lt.0) then - call random_seed - idum=0 - endif - call random_number(r) - gran=sum(r)-6.0 -end function gran diff --git a/fivehz.h b/fivehz.h deleted file mode 100644 index f39fe4be0..000000000 --- a/fivehz.h +++ /dev/null @@ -1,5 +0,0 @@ -#include - -void addnoise_(int16_t *n2); -void fivehztx_(void); -void fivehz_(void); diff --git a/flat1.f b/flat1.f deleted file mode 100644 index 37adbfff3..000000000 --- a/flat1.f +++ /dev/null @@ -1,30 +0,0 @@ - subroutine flat1(psavg,s2,nh,nsteps,nhmax,nsmax) - - real psavg(nh) - real s2(nhmax,nsmax) - real x(8192),tmp(33) - - nsmo=33 - ia=nsmo/2 + 1 - ib=nh - nsmo/2 - 1 - do i=ia,ib - call pctile(psavg(i-nsmo/2),tmp,nsmo,50,x(i)) - enddo - do i=1,ia-1 - x(i)=x(ia) - enddo - do i=ib+1,nh - x(i)=x(ib) - enddo - - do i=1,nh - psavg(i)=psavg(i)/x(i) - do j=1,nsteps - s2(i,j)=s2(i,j)/x(i) - enddo - enddo - - return - end - - diff --git a/flat2.f b/flat2.f deleted file mode 100644 index f4d4156e8..000000000 --- a/flat2.f +++ /dev/null @@ -1,28 +0,0 @@ - subroutine flat2(ss,n,nsum) - - real ss(2048) - real ref(2048) - real tmp(2048) - - nsmo=20 - base=50*(float(nsum)**1.5) - ia=nsmo+1 - ib=n-nsmo-1 - do i=ia,ib - call pctile(ss(i-nsmo),tmp,2*nsmo+1,50,ref(i)) - enddo - call pctile(ref(ia),tmp,ib-ia+1,68,base2) - -C Don't flatten if signal is extremely low (e.g., RX is off). - if(base2.gt.0.05*base) then - do i=ia,ib - ss(i)=base*ss(i)/ref(i) - enddo - else - do i=1,n - ss(i)=0. - enddo - endif - - return - end diff --git a/flatten.f b/flatten.f deleted file mode 100644 index 1db43a1fa..000000000 --- a/flatten.f +++ /dev/null @@ -1,105 +0,0 @@ - subroutine flatten(s2,nbins,jz,psa,ref,birdie,variance) - -C Examines the 2-d spectrum s2(nbins,jz) and makes a reference spectrum -C from the jz/2 spectra below the 50th percentile in total power. Uses -C reference spectrum (with birdies removed) to flatten the passband. - - real s2(nbins,jz) !2d spectrum - real psa(nbins) !Grand average spectrum - real ref(nbins) !Ref spect: smoothed ave of lower half - real birdie(nbins) !Spec (with birdies) for plot, in dB - real variance(nbins) - real ref2(750) !Work array - real power(300) - -C Find power in each time block, then get median - do j=1,jz - s=0. - do i=1,nbins - s=s+s2(i,j) - enddo - power(j)=s - enddo - call pctile(power,ref2,jz,50,xmedian) - if(jz.lt.5) go to 900 - -C Get variance in each freq channel, using only those spectra with -C power below the median. - do i=1,nbins - s=0. - nsum=0 - do j=1,jz - if(power(j).le.xmedian) then - s=s+s2(i,j) - nsum=nsum+1 - endif - enddo - s=s/nsum - sq=0. - do j=1,jz - if(power(j).le.xmedian) sq=sq + (s2(i,j)/s-1.0)**2 - enddo - variance(i)=sq/nsum - enddo - -C Get grand average, and average of spectra with power below median. - call zero(psa,nbins) - call zero(ref,nbins) - nsum=0 - do j=1,jz - call add(psa,s2(1,j),psa,nbins) - if(power(j).le.xmedian) then - call add(ref,s2(1,j),ref,nbins) - nsum=nsum+1 - endif - enddo - do i=1,nbins !Normalize the averages - psa(i)=psa(i)/jz - ref(i)=ref(i)/nsum - birdie(i)=ref(i) !Copy ref into birdie - enddo - -C Compute smoothed reference spectrum with narrow lines (birdies) removed - do i=4,nbins-3 - rmax=-1.e10 - do k=i-3,i+3 !Get highest point within +/- 3 bins - if(ref(k).gt.rmax) then - rmax=ref(k) - kpk=k - endif - enddo - sum=0. - nsum=0 - do k=i-3,i+3 - if(abs(k-kpk).gt.1) then - sum=sum+ref(k) - nsum=nsum+1 - endif - enddo - ref2(i)=sum/nsum - enddo - call move(ref2(4),ref(4),nbins-6) !Copy smoothed ref back into ref - - call pctile(ref(4),ref2,nbins-6,50,xmedian) !Get median in-band level - -C Fix ends of reference spectrum - do i=1,3 - ref(i)=ref(4) - ref(nbins+1-i)=ref(nbins-3) - enddo - - facmax=30.0/xmedian - do i=1,nbins !Flatten the 2d spectrum - fac=xmedian/ref(i) - fac=min(fac,facmax) - do j=1,jz - s2(i,j)=fac*s2(i,j) - enddo - psa(i)=dB(psa(i)) + 25. - ref(i)=dB(ref(i)) + 25. - birdie(i)=db(birdie(i)) + 25. - enddo - -900 continue - return - end diff --git a/flushqqq.f90 b/flushqqq.f90 deleted file mode 100644 index a76a58ccd..000000000 --- a/flushqqq.f90 +++ /dev/null @@ -1,10 +0,0 @@ -subroutine flushqqq(lu) - -#ifdef CVF - use dfport -#endif - - call flush(lu) - - return -end subroutine flushqqq diff --git a/four2.f b/four2.f deleted file mode 100755 index b3f4aeaa9..000000000 --- a/four2.f +++ /dev/null @@ -1,350 +0,0 @@ - SUBROUTINE FOUR2a (DATA,N,NDIM,ISIGN,IFORM) - -C Cooley-Tukey fast Fourier transform in USASI basic Fortran. -C multi-dimensional transform, each dimension a power of two, -C complex or real data. - -C TRANSFORM(K1,K2,...) = SUM(DATA(J1,J2,...)*EXP(ISIGN*2*PI*SQRT(-1) -C *((J1-1)*(K1-1)/N(1)+(J2-1)*(K2-1)/N(2)+...))), summed for all -C J1 and K1 from 1 to N(1), J2 and K2 from 1 TO N(2), -C etc, for all NDIM subscripts. NDIM must be positive and -C each N(IDIM) must be a power of two. ISIGN is +1 or -1. -C Let NTOT = N(1)*N(2)*...*N(NDIM). Then a -1 transform -C followed by a +1 one (or vice versa) returns NTOT -C times the original data. - -C IFORM = 1, 0 or -1, as data is -C complex, real, or the first half of a complex array. Transform -C values are returned in array DATA. They are complex, real, or -C the first half of a complex array, as IFORM = 1, -1 or 0. - -C The transform of a real array (IFORM = 0) dimensioned N(1) by N(2) -C by ... will be returned in the same array, now considered to -C be complex of dimensions N(1)/2+1 by N(2) by .... Note that if -C IFORM = 0 or -1, N(1) must be even, and enough room must be -C reserved. The missing values may be obtained by complex conjuga- -C tion. - -C The reverse transformation of a half complex array dimensioned -C N(1)/2+1 by N(2) by ..., is accomplished by setting IFORM -C to -1. In the N array, N(1) must be the true N(1), not N(1)/2+1. -C The transform will be real and returned to the input array. - -C Running time is proportional to NTOT*LOG2(NTOT), rather than -C the naive NTOT**2. Furthermore, less error is built up. - -C Written by Norman Brenner of MIT Lincoln Laboratory, January 1969. -C See IEEE Audio Transactions (June 1967), Special issue on FFT. - - parameter(NMAX=2048*1024) - DIMENSION DATA(NMAX), N(1) - NTOT=1 - DO 10 IDIM=1,NDIM - 10 NTOT=NTOT*N(IDIM) - IF (IFORM) 70,20,20 - 20 NREM=NTOT - DO 60 IDIM=1,NDIM - NREM=NREM/N(IDIM) - NPREV=NTOT/(N(IDIM)*NREM) - NCURR=N(IDIM) - IF (IDIM-1+IFORM) 30,30,40 - 30 NCURR=NCURR/2 - 40 CALL BITRV (DATA,NPREV,NCURR,NREM) - CALL COOL2 (DATA,NPREV,NCURR,NREM,ISIGN) - IF (IDIM-1+IFORM) 50,50,60 - 50 CALL FIXRL (DATA,N(1),NREM,ISIGN,IFORM) - NTOT=(NTOT/N(1))*(N(1)/2+1) - 60 CONTINUE - RETURN - 70 NTOT=(NTOT/N(1))*(N(1)/2+1) - NREM=1 - DO 100 JDIM=1,NDIM - IDIM=NDIM+1-JDIM - NCURR=N(IDIM) - IF (IDIM-1) 80,80,90 - 80 NCURR=NCURR/2 - CALL FIXRL (DATA,N(1),NREM,ISIGN,IFORM) - NTOT=NTOT/(N(1)/2+1)*N(1) - 90 NPREV=NTOT/(N(IDIM)*NREM) - CALL BITRV (DATA,NPREV,NCURR,NREM) - CALL COOL2 (DATA,NPREV,NCURR,NREM,ISIGN) - 100 NREM=NREM*N(IDIM) - RETURN - END - SUBROUTINE BITRV (DATA,NPREV,N,NREM) -C SHUFFLE THE DATA BY BIT REVERSAL. -C DIMENSION DATA(NPREV,N,NREM) -C COMPLEX DATA -C EXCHANGE DATA(J1,J4REV,J5) WITH DATA(J1,J4,J5) FOR ALL J1 FROM 1 -C TO NPREV, ALL J4 FROM 1 TO N (WHICH MUST BE A POWER OF TWO), AND -C ALL J5 FROM 1 TO NREM. J4REV-1 IS THE BIT REVERSAL OF J4-1. E.G. -C SUPPOSE N = 32. THEN FOR J4-1 = 10011, J4REV-1 = 11001, ETC. - parameter(NMAX=2048*1024) - DIMENSION DATA(NMAX) - IP0=2 - IP1=IP0*NPREV - IP4=IP1*N - IP5=IP4*NREM - I4REV=1 -C I4REV = 1+(J4REV-1)*IP1 - DO 60 I4=1,IP4,IP1 -C I4 = 1+(J4-1)*IP1 - IF (I4-I4REV) 10,30,30 - 10 I1MAX=I4+IP1-IP0 - DO 20 I1=I4,I1MAX,IP0 -C I1 = 1+(J1-1)*IP0+(J4-1)*IP1 - DO 20 I5=I1,IP5,IP4 -C I5 = 1+(J1-1)*IP0+(J4-1)*IP1+(J5-1)*IP4 - I5REV=I4REV+I5-I4 -C I5REV = 1+(J1-1)*IP0+(J4REV-1)*IP1+(J5-1)*IP4 - TEMPR=DATA(I5) - TEMPI=DATA(I5+1) - DATA(I5)=DATA(I5REV) - DATA(I5+1)=DATA(I5REV+1) - DATA(I5REV)=TEMPR - 20 DATA(I5REV+1)=TEMPI -C ADD ONE WITH DOWNWARD CARRY TO THE HIGH ORDER BIT OF J4REV-1. - 30 IP2=IP4/2 - 40 IF (I4REV-IP2) 60,60,50 - 50 I4REV=I4REV-IP2 - IP2=IP2/2 - IF (IP2-IP1) 60,40,40 - 60 I4REV=I4REV+IP2 - RETURN - END - SUBROUTINE COOL2 (DATA,NPREV,N,NREM,ISIGN) -C DISCRETE FOURIER TRANSFORM OF LENGTH N. IN-PLACE COOLEY-TUKEY -C ALGORITHM, BIT-REVERSED TO NORMAL ORDER, SANDE-TUKEY PHASE SHIFTS. -C DIMENSION DATA(NPREV,N,NREM) -C COMPLEX DATA -C DATA(J1,K4,J5) = SUM(DATA(J1,J4,J5)*EXP(ISIGN*2*PI*I*(J4-1)* -C (K4-1)/N)), SUMMED OVER J4 = 1 TO N FOR ALL J1 FROM 1 TO NPREV, -C K4 FROM 1 TO N AND J5 FROM 1 TO NREM. N MUST BE A POWER OF TWO. -C METHOD--LET IPREV TAKE THE VALUES 1, 2 OR 4, 4 OR 8, ..., N/16, -C N/4, N. THE CHOICE BETWEEN 2 OR 4, ETC., DEPENDS ON WHETHER N IS -C A POWER OF FOUR. DEFINE IFACT = 2 OR 4, THE NEXT FACTOR THAT -C IPREV MUST TAKE, AND IREM = N/(IFACT*IPREV). THEN-- -C DIMENSION DATA(NPREV,IPREV,IFACT,IREM,NREM) -C COMPLEX DATA -C DATA(J1,J2,K3,J4,J5) = SUM(DATA(J1,J2,J3,J4,J5)*EXP(ISIGN*2*PI*I* -C (K3-1)*((J3-1)/IFACT+(J2-1)/(IFACT*IPREV)))), SUMMED OVER J3 = 1 -C TO IFACT FOR ALL J1 FROM 1 TO NPREV, J2 FROM 1 TO IPREV, K3 FROM -C 1 TO IFACT, J4 FROM 1 TO IREM AND J5 FROM 1 TO NREM. THIS IS -C A PHASE-SHIFTED DISCRETE FOURIER TRANSFORM OF LENGTH IFACT. -C FACTORING N BY FOURS SAVES ABOUT TWENTY FIVE PERCENT OVER FACTOR- -C ING BY TWOS. DATA MUST BE BIT-REVERSED INITIALLY. -C IT IS NOT NECESSARY TO REWRITE THIS SUBROUTINE INTO COMPLEX -C NOTATION SO LONG AS THE FORTRAN COMPILER USED STORES REAL AND -C IMAGINARY PARTS IN ADJACENT STORAGE LOCATIONS. IT MUST ALSO -C STORE ARRAYS WITH THE FIRST SUBSCRIPT INCREASING FASTEST. - parameter(NMAX=2048*1024) - DIMENSION DATA(NMAX) - - real*8 twopi,wstpr,wstpi,wr,wi,w2r,w2i,w3r,w3i,wtempr - - TWOPI=6.2831853072*FLOAT(ISIGN) - IP0=2 - IP1=IP0*NPREV - IP4=IP1*N - IP5=IP4*NREM - IP2=IP1 -C IP2=IP1*IPROD - NPART=N - 10 IF (NPART-2) 60,30,20 - 20 NPART=NPART/4 - GO TO 10 -C DO A FOURIER TRANSFORM OF LENGTH TWO - 30 IF (IP2-IP4) 40,160,160 - 40 IP3=IP2*2 -C IP3=IP2*IFACT - DO 50 I1=1,IP1,IP0 -C I1 = 1+(J1-1)*IP0 - DO 50 I5=I1,IP5,IP3 -C I5 = 1+(J1-1)*IP0+(J4-1)*IP3+(J5-1)*IP4 - I3A=I5 - I3B=I3A+IP2 -C I3 = 1+(J1-1)*IP0+(J2-1)*IP1+(J3-1)*IP2+(J4-1)*IP3+(J5-1)*IP4 - TEMPR=DATA(I3B) - TEMPI=DATA(I3B+1) - DATA(I3B)=DATA(I3A)-TEMPR - DATA(I3B+1)=DATA(I3A+1)-TEMPI - DATA(I3A)=DATA(I3A)+TEMPR - 50 DATA(I3A+1)=DATA(I3A+1)+TEMPI - IP2=IP3 -C DO A FOURIER TRANSFORM OF LENGTH FOUR (FROM BIT REVERSED ORDER) - 60 IF (IP2-IP4) 70,160,160 - 70 IP3=IP2*4 -C IP3=IP2*IFACT -C COMPUTE TWOPI THRU WR AND WI IN DOUBLE PRECISION, IF AVAILABLE. - THETA=TWOPI/FLOAT(IP3/IP1) - SINTH=SIN(THETA/2) - WSTPR=-2*SINTH*SINTH - WSTPI=SIN(THETA) - WR=1. - WI=0. - DO 150 I2=1,IP2,IP1 -C I2 = 1+(J2-1)*IP1 - IF (I2-1) 90,90,80 - 80 W2R=WR*WR-WI*WI - W2I=2*WR*WI - W3R=W2R*WR-W2I*WI - W3I=W2R*WI+W2I*WR - 90 I1MAX=I2+IP1-IP0 - DO 140 I1=I2,I1MAX,IP0 -C I1 = 1+(J1-1)*IP0+(J2-1)*IP1 - DO 140 I5=I1,IP5,IP3 -C I5 = 1+(J1-1)*IP0+(J2-1)*IP1+(J4-1)*IP3+(J5-1)*IP4 - I3A=I5 - I3B=I3A+IP2 - I3C=I3B+IP2 - I3D=I3C+IP2 -C I3 = 1+(J1-1)*IP0+(J2-1)*IP1+(J3-1)*IP2+(J4-1)*IP3+(J5-1)*IP4 - IF (I2-1) 110,110,100 -C APPLY THE PHASE SHIFT FACTORS - 100 TEMPR=DATA(I3B) - DATA(I3B)=W2R*DATA(I3B)-W2I*DATA(I3B+1) - DATA(I3B+1)=W2R*DATA(I3B+1)+W2I*TEMPR - TEMPR=DATA(I3C) - DATA(I3C)=WR*DATA(I3C)-WI*DATA(I3C+1) - DATA(I3C+1)=WR*DATA(I3C+1)+WI*TEMPR - TEMPR=DATA(I3D) - DATA(I3D)=W3R*DATA(I3D)-W3I*DATA(I3D+1) - DATA(I3D+1)=W3R*DATA(I3D+1)+W3I*TEMPR - 110 T0R=DATA(I3A)+DATA(I3B) - T0I=DATA(I3A+1)+DATA(I3B+1) - T1R=DATA(I3A)-DATA(I3B) - T1I=DATA(I3A+1)-DATA(I3B+1) - T2R=DATA(I3C)+DATA(I3D) - T2I=DATA(I3C+1)+DATA(I3D+1) - T3R=DATA(I3C)-DATA(I3D) - T3I=DATA(I3C+1)-DATA(I3D+1) - DATA(I3A)=T0R+T2R - DATA(I3A+1)=T0I+T2I - DATA(I3C)=T0R-T2R - DATA(I3C+1)=T0I-T2I - IF (ISIGN) 120,120,130 - 120 T3R=-T3R - T3I=-T3I - 130 DATA(I3B)=T1R-T3I - DATA(I3B+1)=T1I+T3R - DATA(I3D)=T1R+T3I - 140 DATA(I3D+1)=T1I-T3R - WTEMPR=WR - WR=WSTPR*WTEMPR-WSTPI*WI+WTEMPR - 150 WI=WSTPR*WI+WSTPI*WTEMPR+WI - IP2=IP3 - GO TO 60 - 160 RETURN - END - SUBROUTINE FIXRL (DATA,N,NREM,ISIGN,IFORM) -C FOR IFORM = 0, CONVERT THE TRANSFORM OF A DOUBLED-UP REAL ARRAY, -C CONSIDERED COMPLEX, INTO ITS TRUE TRANSFORM. SUPPLY ONLY THE -C FIRST HALF OF THE COMPLEX TRANSFORM, AS THE SECOND HALF HAS -C CONJUGATE SYMMETRY. FOR IFORM = -1, CONVERT THE FIRST HALF -C OF THE TRUE TRANSFORM INTO THE TRANSFORM OF A DOUBLED-UP REAL -C ARRAY. N MUST BE EVEN. -C USING COMPLEX NOTATION AND SUBSCRIPTS STARTING AT ZERO, THE -C TRANSFORMATION IS-- -C DIMENSION DATA(N,NREM) -C ZSTP = EXP(ISIGN*2*PI*I/N) -C DO 10 I2=0,NREM-1 -C DATA(0,I2) = CONJ(DATA(0,I2))*(1+I) -C DO 10 I1=1,N/4 -C Z = (1+(2*IFORM+1)*I*ZSTP**I1)/2 -C I1CNJ = N/2-I1 -C DIF = DATA(I1,I2)-CONJ(DATA(I1CNJ,I2)) -C TEMP = Z*DIF -C DATA(I1,I2) = (DATA(I1,I2)-TEMP)*(1-IFORM) -C 10 DATA(I1CNJ,I2) = (DATA(I1CNJ,I2)+CONJ(TEMP))*(1-IFORM) -C IF I1=I1CNJ, THE CALCULATION FOR THAT VALUE COLLAPSES INTO -C A SIMPLE CONJUGATION OF DATA(I1,I2). - parameter(NMAX=2048*1024) - DIMENSION DATA(NMAX) - TWOPI=6.283185307*FLOAT(ISIGN) - IP0=2 - IP1=IP0*(N/2) - IP2=IP1*NREM - IF (IFORM) 10,70,70 -C PACK THE REAL INPUT VALUES (TWO PER COLUMN) - 10 J1=IP1+1 - DATA(2)=DATA(J1) - IF (NREM-1) 70,70,20 - 20 J1=J1+IP0 - I2MIN=IP1+1 - DO 60 I2=I2MIN,IP2,IP1 - DATA(I2)=DATA(J1) - J1=J1+IP0 - IF (N-2) 50,50,30 - 30 I1MIN=I2+IP0 - I1MAX=I2+IP1-IP0 - DO 40 I1=I1MIN,I1MAX,IP0 - DATA(I1)=DATA(J1) - DATA(I1+1)=DATA(J1+1) - 40 J1=J1+IP0 - 50 DATA(I2+1)=DATA(J1) - 60 J1=J1+IP0 - 70 DO 80 I2=1,IP2,IP1 - TEMPR=DATA(I2) - DATA(I2)=DATA(I2)+DATA(I2+1) - 80 DATA(I2+1)=TEMPR-DATA(I2+1) - IF (N-2) 200,200,90 - 90 THETA=TWOPI/FLOAT(N) - SINTH=SIN(THETA/2.) - ZSTPR=-2.*SINTH*SINTH - ZSTPI=SIN(THETA) - ZR=(1.-ZSTPI)/2. - ZI=(1.+ZSTPR)/2. - IF (IFORM) 100,110,110 - 100 ZR=1.-ZR - ZI=-ZI - 110 I1MIN=IP0+1 - I1MAX=IP0*(N/4)+1 - DO 190 I1=I1MIN,I1MAX,IP0 - DO 180 I2=I1,IP2,IP1 - I2CNJ=IP0*(N/2+1)-2*I1+I2 - IF (I2-I2CNJ) 150,120,120 - 120 IF (ISIGN*(2*IFORM+1)) 130,140,140 - 130 DATA(I2+1)=-DATA(I2+1) - 140 IF (IFORM) 170,180,180 - 150 DIFR=DATA(I2)-DATA(I2CNJ) - DIFI=DATA(I2+1)+DATA(I2CNJ+1) - TEMPR=DIFR*ZR-DIFI*ZI - TEMPI=DIFR*ZI+DIFI*ZR - DATA(I2)=DATA(I2)-TEMPR - DATA(I2+1)=DATA(I2+1)-TEMPI - DATA(I2CNJ)=DATA(I2CNJ)+TEMPR - DATA(I2CNJ+1)=DATA(I2CNJ+1)-TEMPI - IF (IFORM) 160,180,180 - 160 DATA(I2CNJ)=DATA(I2CNJ)+DATA(I2CNJ) - DATA(I2CNJ+1)=DATA(I2CNJ+1)+DATA(I2CNJ+1) - 170 DATA(I2)=DATA(I2)+DATA(I2) - DATA(I2+1)=DATA(I2+1)+DATA(I2+1) - 180 CONTINUE - TEMPR=ZR-.5 - ZR=ZSTPR*TEMPR-ZSTPI*ZI+ZR - 190 ZI=ZSTPR*ZI+ZSTPI*TEMPR+ZI -C RECURSION SAVES TIME, AT A SLIGHT LOSS IN ACCURACY. IF AVAILABLE, -C USE DOUBLE PRECISION TO COMPUTE ZR AND ZI. - 200 IF (IFORM) 270,210,210 -C UNPACK THE REAL TRANSFORM VALUES (TWO PER COLUMN) - 210 I2=IP2+1 - I1=I2 - J1=IP0*(N/2+1)*NREM+1 - GO TO 250 - 220 DATA(J1)=DATA(I1) - DATA(J1+1)=DATA(I1+1) - I1=I1-IP0 - J1=J1-IP0 - 230 IF (I2-I1) 220,240,240 - 240 DATA(J1)=DATA(I1) - DATA(J1+1)=0. - 250 I2=I2-IP1 - J1=J1-IP0 - DATA(J1)=DATA(I2+1) - DATA(J1+1)=0. - I1=I1-IP0 - J1=J1-IP0 - IF (I2-1) 260,260,230 - 260 DATA(2)=0. - 270 RETURN - END diff --git a/four2a.f b/four2a.f deleted file mode 100644 index 969d51944..000000000 --- a/four2a.f +++ /dev/null @@ -1,111 +0,0 @@ - subroutine four2a(a,nfft,ndim,isign,iform) - -C IFORM = 1, 0 or -1, as data is -C complex, real, or the first half of a complex array. Transform -C values are returned in array DATA. They are complex, real, or -C the first half of a complex array, as IFORM = 1, -1 or 0. - -C The transform of a real array (IFORM = 0) dimensioned N(1) by N(2) -C by ... will be returned in the same array, now considered to -C be complex of dimensions N(1)/2+1 by N(2) by .... Note that if -C IFORM = 0 or -1, N(1) must be even, and enough room must be -C reserved. The missing values may be obtained by complex conjuga- -C tion. - -C The reverse transformation of a half complex array dimensioned -C N(1)/2+1 by N(2) by ..., is accomplished by setting IFORM -C to -1. In the N array, N(1) must be the true N(1), not N(1)/2+1. -C The transform will be real and returned to the input array. - - parameter (NPMAX=100) - parameter (NSMALL=16384) - complex a(nfft) - complex aa(NSMALL) - integer nn(NPMAX),ns(NPMAX),nf(NPMAX),nl(NPMAX) - real*8 plan(NPMAX) !Actually should be i*8, but no matter - data nplan/0/ - include 'fftw3.f' - save plan,nplan,nn,ns,nf,nl - - if(nfft.lt.0 .or. ndim.lt.0) go to 999 - - nloc=loc(a) - do i=1,nplan - if(nfft.eq.nn(i) .and. isign.eq.ns(i) .and. - + iform.eq.nf(i) .and. nloc.eq.nl(i)) go to 10 - enddo - if(nplan.ge.NPMAX) stop 'Too many FFTW plans requested.' - nplan=nplan+1 - i=nplan - nn(i)=nfft - ns(i)=isign - nf(i)=iform - nl(i)=nloc - -C Planning: FFTW_ESTIMATE, FFTW_ESTIMATE_PATIENT, FFTW_MEASURE, -C FFTW_PATIENT, FFTW_EXHAUSTIVE - npatience=1 - nflags=FFTW_ESTIMATE - if(npatience.eq.1) nflags=FFTW_ESTIMATE_PATIENT - if(npatience.eq.2) nflags=FFTW_MEASURE - if(npatience.eq.3) nflags=FFTW_PATIENT - if(npatience.eq.4) nflags=FFTW_EXHAUSTIVE - if(nfft.le.NSMALL) then - jz=nfft - if(iform.eq.0) jz=nfft/2 - do j=1,jz - aa(j)=a(j) - enddo - endif - call sleep_msec(0) - if(isign.eq.-1 .and. iform.eq.1) then -#ifdef CVF - call sfftw_plan_dft_1d_(plan(i),nfft,a,a,FFTW_FORWARD,nflags) - else if(isign.eq.1 .and. iform.eq.1) then - call sfftw_plan_dft_1d_(plan(i),nfft,a,a,FFTW_BACKWARD,nflags) - else if(isign.eq.-1 .and. iform.eq.0) then - call sfftw_plan_dft_r2c_1d_(plan(i),nfft,a,a,nflags) - else if(isign.eq.1 .and. iform.eq.-1) then - call sfftw_plan_dft_c2r_1d_(plan(i),nfft,a,a,nflags) -#else - call sfftw_plan_dft_1d(plan(i),nfft,a,a,FFTW_FORWARD,nflags) - else if(isign.eq.1 .and. iform.eq.1) then - call sfftw_plan_dft_1d(plan(i),nfft,a,a,FFTW_BACKWARD,nflags) - else if(isign.eq.-1 .and. iform.eq.0) then - call sfftw_plan_dft_r2c_1d(plan(i),nfft,a,a,nflags) - else if(isign.eq.1 .and. iform.eq.-1) then - call sfftw_plan_dft_c2r_1d(plan(i),nfft,a,a,nflags) -#endif - else - stop 'Unsupported request in four2a' - endif - call sleep_msec(0) - i=nplan - if(nfft.le.NSMALL) then - jz=nfft - if(iform.eq.0) jz=nfft/2 - do j=1,jz - a(j)=aa(j) - enddo - endif - - 10 continue - call sleep_msec(0) -#ifdef CVF - call sfftw_execute_(plan(i)) -#else - call sfftw_execute(plan(i)) -#endif - call sleep_msec(0) - return - - 999 do i=1,nplan -#ifdef CVF - call sfftw_destroy_plan_(plan(i)) -#else - call sfftw_destroy_plan(plan(i)) -#endif - enddo - - return - end diff --git a/fstatqqq.f90 b/fstatqqq.f90 deleted file mode 100644 index 78aa7f066..000000000 --- a/fstatqqq.f90 +++ /dev/null @@ -1,14 +0,0 @@ -subroutine fstatqqq(lu,istat,ierr) - -#ifdef CVF - use dfport -#endif - -#ifdef CVF - ierr=fstat(lu,istat) -#else - call fstat(lu,istat,ierr) -#endif - - return -end subroutine fstatqqq diff --git a/fthread.c b/fthread.c deleted file mode 100644 index d8b0a13ec..000000000 --- a/fthread.c +++ /dev/null @@ -1,74 +0,0 @@ -/* -* fthread.c -* -* pthread library interface to Fortran, for OSs supporting pthreads -* -* Adapted from code by V. Ganesh -*/ -#include -#include - -// Create a new fortran thread through a subroutine. -void fthread_create_(void *(*thread_func)(void *), pthread_t *theThread) -{ - pthread_create(theThread, NULL, thread_func, NULL); -} - -/* -// Yield control to other threads -void fthread_yield_() -{ - pthread_yield(); -} -*/ - -// Return my own thread ID -pthread_t fthread_self_() -{ - return pthread_self(); -} - -// Lock the execution of all threads until we have the mutex -int fthread_mutex_lock_(pthread_mutex_t **theMutex) -{ - return(pthread_mutex_lock(*theMutex)); -} - -int fthread_mutex_trylock_(pthread_mutex_t **theMutex) -{ - return(pthread_mutex_trylock(*theMutex)); -} - -// Unlock the execution of all threads that were stopped by this mutex -void fthread_mutex_unlock_(pthread_mutex_t **theMutex) -{ - pthread_mutex_unlock(*theMutex); -} - -// Get a new mutex object -void fthread_mutex_init_(pthread_mutex_t **theMutex) -{ - *theMutex = (pthread_mutex_t *) malloc(sizeof(pthread_mutex_t)); - pthread_mutex_init(*theMutex, NULL); -} - -// Release a mutex object -void fthread_mutex_destroy_(pthread_mutex_t **theMutex) -{ - pthread_mutex_destroy(*theMutex); - free(*theMutex); -} - -// Waits for thread ID to join -void fthread_join(pthread_t *theThread) -{ - int value = 0; - pthread_join(*theThread, (void **)&value); -} - -// Exit from a thread -void fthread_exit_(void *status) -{ - pthread_exit(status); -} - diff --git a/ftn_init.f90 b/ftn_init.f90 deleted file mode 100644 index dd9c6d9ba..000000000 --- a/ftn_init.f90 +++ /dev/null @@ -1,171 +0,0 @@ -! Fortran logical units used in WSJT6 -! -! 10 binary input data, *.tf2 files -! 11 decoded.txt -! 12 decoded.ave -! 13 tsky.dat -! 14 azel.dat -! 15 -! 16 -! 17 saved *.tf2 files -! 18 test file to be transmitted (wsjtgen.f90) -! 19 messages.txt -! 20 bandmap.txt -! 21 ALL65.TXT -! 22 kvasd.dat -! 23 CALL3.TXT -! 24 meas24.dat -! 25 meas25.dat -! 26 tmp26.txt -! 27 dphi.txt -! 28 fftw_wisdom.dat -! 29 debug.txt -!------------------------------------------------ ftn_init -subroutine ftn_init - - character*1 cjunk - integer ptt - include 'gcom1.f90' - include 'gcom2.f90' - include 'gcom3.f90' - include 'gcom4.f90' - - call cs_init - call cs_lock('ftn_init') - i=ptt(nport,pttport,0,iptt) !Clear the PTT line - addpfx=' ' - nrw26=0 - - do i=80,1,-1 - if(AppDir(i:i).ne.' ') goto 1 - enddo -1 iz=i - lenappdir=iz - call pfxdump(appdir(:iz)//'/prefixes.txt') - - do i=80,1,-1 - if(AzElDir(i:i).ne.' ') goto 2 - enddo -2 iz2=i - -#ifdef CVF - open(11,file=appdir(:iz)//'/decoded.txt',status='unknown', & - share='denynone',err=910) -#else - open(11,file=appdir(:iz)//'/decoded.txt',status='unknown', & - err=910) -#endif - endfile 11 - -#ifdef CVF - open(12,file=appdir(:iz)//'/decoded.ave',status='unknown', & - share='denynone',err=920) -#else - open(12,file=appdir(:iz)//'/decoded.ave',status='unknown', & - err=920) -#endif - endfile 12 - -#ifdef CVF - open(14,file=azeldir(:iz2)//'/azel.dat',status='unknown', & - share='denynone',err=930) -#else - open(14,file=azeldir(:iz2)//'/azel.dat',status='unknown', & - err=930) -#endif - -#ifdef CVF - open(19,file=appdir(:iz)//'/messages.txt',status='unknown', & - share='denynone',err=911) -#else - open(19,file=appdir(:iz)//'/messages.txt',status='unknown', & - err=911) -#endif - endfile 19 - -#ifdef CVF - open(20,file=appdir(:iz)//'/bandmap.txt',status='unknown', & - share='denynone',err=912) -#else - open(20,file=appdir(:iz)//'/bandmap.txt',status='unknown', & - err=912) -#endif - endfile 20 - -#ifdef CVF - open(21,file=appdir(:iz)//'/ALL65.TXT',status='unknown', & - access='append',share='denynone',err=950) -#else - open(21,file=appdir(:iz)//'/ALL65.TXT',status='unknown', & - access='append',err=950) - do i=1,9999999 - read(21,*,end=10) cjunk - enddo -10 continue -#endif - -#ifdef CVF - open(22,file=appdir(:iz)//'/kvasd.dat',access='direct',recl=1024, & - status='unknown',share='denynone') -#else - open(22,file=appdir(:iz)//'/kvasd.dat',access='direct',recl=1024, & - status='unknown') -#endif - -#ifdef CVF - open(24,file=appdir(:iz)//'/meas24.txt',status='unknown', & - share='denynone') -#else - open(24,file=appdir(:iz)//'/meas24.txt',status='unknown') -#endif - -#ifdef CVF - open(25,file=appdir(:iz)//'/meas25.txt',status='unknown', & - share='denynone') -#else - open(25,file=appdir(:iz)//'/meas25.txt',status='unknown') -#endif - -#ifdef CVF - open(26,file=appdir(:iz)//'/tmp26.txt',status='unknown', & - share='denynone') -#else - open(26,file=appdir(:iz)//'/tmp26.txt',status='unknown') -#endif - -#ifdef CVF - open(27,file=appdir(:iz)//'/dphi.txt',status='unknown', & - share='denynone') -#else - open(27,file=appdir(:iz)//'/dphi.txt',status='unknown') - open(28,file='fftw_wisdom.dat',status='unknown') - call import_wisdom_from_file(isuccess,28) - close(28) - if(isuccess.ne.0) write(*,1000) -1000 format('Using optimized FFTs.') -#endif - -#ifdef CVF - open(29,file=appdir(:iz)//'/debug.txt',status='unknown', & - share='denynone') -#else - open(29,file=appdir(:iz)//'/debug.txt',status='unknown') -#endif - - call cs_unlock - return - -910 print*,'Error opening DECODED.TXT' - stop -911 print*,'Error opening messages.txt' - stop -912 print*,'Error opening bandmap.txt' - stop -920 print*,'Error opening DECODED.AVE' - stop -930 print*,'Error opening AZEL.DAT' - stop -950 print*,'Error opening ALL65.TXT' - stop - -end subroutine ftn_init diff --git a/ftn_quit.f90 b/ftn_quit.f90 deleted file mode 100644 index 2592038bf..000000000 --- a/ftn_quit.f90 +++ /dev/null @@ -1,9 +0,0 @@ -!------------------------------------------------ ftn_quit -subroutine ftn_quit - include 'gcom1.f90' - ngo=0 -! Destroy the FFTW plans - call four2a(a,-1,1,1,1) - call filbig(id,-1,f0,newdat,c4a,c4b,n4) - return -end subroutine ftn_quit diff --git a/ftsky.f b/ftsky.f deleted file mode 100644 index 4ed6bb82c..000000000 --- a/ftsky.f +++ /dev/null @@ -1,24 +0,0 @@ - real function ftsky(l,b) - -C Returns 408 MHz sky temperature for l,b (in degrees), from -C Haslam, et al. survey. Must have already read the entire -C file tsky.dat into memory. - - real*4 l,b - integer*2 nsky - common/sky/ nsky(360,180) - save - - j=nint(b+91.0) - if(j.gt.180) j=180 - xl=l - if(xl.lt.0.0) xl=xl+360.0 - i=nint(xl+1.0) - if(i.gt.360) i=i-360 - ftsky=0.0 - if(i.ge.1 .and. i.le.360 .and. j.ge.1 .and. j.le.180) then - ftsky=0.1*nsky(i,j) - endif - - return - end diff --git a/g.py b/g.py deleted file mode 100644 index 244b1a0aa..000000000 --- a/g.py +++ /dev/null @@ -1,32 +0,0 @@ -DFreq=0.0 -Freq=0.0 -PingTime=0.0 -PingFile="current" -report="26" -rms=1.0 -mode_change=0 -showspecjt=0 -g2font='courier 16 bold' - -#------------------------------------------------------ ftnstr -def ftnstr(x): - y="" - xs=x.tostring() - for i in range(len(xs)): - y=y+xs[i] - return y - -#------------------------------------------------------ filetime -def filetime(t): -# i=t.rfind(".") - i=rfnd(t,".") - t=t[:i][-6:] - t=t[0:2]+":"+t[2:4]+":"+t[4:6] - return t - -#------------------------------------------------------ rfnd -#Temporary workaround to replace t.rfind(c) -def rfnd(t,c): - for i in range(len(t)-1,0,-1): - if t[i:i+1]==c: return i - return -1 diff --git a/gcom1.f90 b/gcom1.f90 deleted file mode 100644 index e1578ca28..000000000 --- a/gcom1.f90 +++ /dev/null @@ -1,51 +0,0 @@ -! Variable Purpose Set in Thread -!--------------------------------------------------------------------------- -integer NRXMAX !Max length of Rx ring buffers -integer NTXMAX !Max length of Tx waveform in samples -parameter(NRXMAX=2097152) ! =2048*1024 -parameter(NTXMAX=1653750) ! =150*11025 -real*8 tbuf !Tsec at time of input callback SoundIn -integer ntrbuf !(obsolete?) -real*8 Tsec !Present time SoundIn,SoundOut -real*8 rxdelay !Delay between PTT=1 and Tx audio SoundIn -real*8 txdelay !Delay from end of Tx Audio and PTT=0 SoundOut -real*8 samfacin !(Input sample rate)/11025 GUI -real*8 samfacout !(Output sample rate)/11025 GUI -real*8 txsnrdb !SNR for simulations GUI -integer*2 y1 !Ring buffer for audio channel 0 SoundIn -integer*2 y2 !Ring buffer for audio channel 1 SoundIn -integer nmax !Actual length of Rx ring buffers GUI -integer iwrite !Write pointer to Rx ring buffer SoundIn -integer iread !Read pointer to Rx ring buffer GUI -integer*2 iwave !Data for audio output SoundIn -integer nwave !Number of samples in iwave SoundIn -integer TxOK !OK to transmit? SoundIn -! NB: TxOK=1 only in SoundIn; TxOK=0 also in GUI -integer Receiving !Actually receiving? SoundIn -integer Transmitting !Actually transmitting? SoundOut -integer TxFirst !Transmit first? GUI -integer TRPeriod !Tx or Rx period in seconds GUI -integer ibuf !Most recent input buffer# SoundIn -integer ibuf0 !Buffer# at start of Rx sequence SoundIn -real ave !(why is this here?) GUI -real rms !(why is this here?) GUI -integer ngo !Set to 0 to terminate audio streams GUI -integer level !S-meter level, 0-100 GUI -integer mute !True means "don't transmit" GUI -integer newdat !New data available for waterfall? GUI -integer ndsec !Dsec in units of 0.1 s GUI -integer ndevin !Device# for audio input GUI -integer ndevout !Device# for audio output GUI -integer mfsample !Measured sample rate, input SoundIn -integer mfsample2 !Measured sample rate, output SoundOut -integer ns0 !Time at last ALL.TXT date entry Decoder -character*12 devin_name,devout_name ! GUI - -common/gcom1/Tbuf(1024),ntrbuf(1024),Tsec,rxdelay,txdelay, & - samfacin,samfacout,txsnrdb,y1(NRXMAX),y2(NRXMAX), & - nmax,iwrite,iread,iwave(NTXMAX),nwave,TxOK,Receiving,Transmitting, & - TxFirst,TRPeriod,ibuf,ibuf0,ave,rms,ngo,level,mute,newdat,ndsec, & - ndevin,ndevout,mfsample,mfsample2,ns0,devin_name,devout_name - -!### volatile /gcom1/ - diff --git a/gcom2.f90 b/gcom2.f90 deleted file mode 100644 index 7aa596cc5..000000000 --- a/gcom2.f90 +++ /dev/null @@ -1,124 +0,0 @@ -! Variable Purpose Set in Thread -!------------------------------------------------------------------------- -real*8 fcenter !Linrad center freq, from pkt header recvpkt -real*8 forcefcenter !Optional override of fcenter GUI -real ps0 !Spectrum of best ping, FSK441/JT6m Decoder -real psavg !Average spectrum Decoder -real s2 !2d spectrum for horizontal waterfall GUI -real ccf !CCF in time (blue curve) Decoder -real green !Data for green line GUI -real fselect !Specified QSO frequency GUI -real pctlost !Percent of lost packets Decoder -real pctblank !Percent of blanked blocks/packets Decoder -real rxnoise !Rx noise in dB recvpkt -real dphi !Phase shift between pol'n channels GUI,Decoder -integer ngreen !Length of green GUI -real dgain !Digital audio gain setting GUI -integer ndecoding !Decoder status (see decode2.f90) GUI,Decoder -integer ndecoding0 !Status on previous decode GUI,Decoder -integer mcall3 !CALL3.TXT has been modified GUI,Decoder -integer mousebutton !Which button was clicked? GUI -integer multicast !1 for multicast data, 0 for unicast GUI -integer ndecdone !Is decoder finished? GUI,Decoder -integer nfloat !Floating-point data from Linrad? recvpkt -integer ierr !Error opening *.tf2 file GUI -integer lauto !Are we in Auto mode? GUI -integer mantx !Manual transmission requested? GUI,SoundIn -integer nrestart !True if transmission should restart GUI,SoundIn -integer ntr !Are we in 2nd sequence? SoundIn -integer nmsg !Length of Tx message SoundIn -integer nsave !Which files to save? GUI -integer nadd5 !Prepend 5 sec of 0's before decoding? GUI -integer dftolerance !DF tolerance (Hz) GUI -logical LDecoded !Was a message decoded? Decoder -logical rxdone !Has the Rx sequence finished? SoundIn,Decoder -integer monitoring !Are we monitoring? GUI -integer nzap !Is Zap checked? GUI -integer minsigdb !Decoder threshold setting GUI -integer nclearave !Set to 1 to clear JT65 avg GUI,Decoder -integer nfreeze !Is Freeze checked? GUI -integer nafc !Is AFC checked? GUI -integer newspec !New spectra in ss(4,322,NSMAX) GUI,Decoder -integer nfa !Low end of map65 search (def 100 kHz) GUI -integer nfb !High end of map65 search (def 160 kHz) GUI -integer nfcal !Calibration offset, Hz GUI -integer idphi !Phase offset in Y channel (deg) GUI -integer nkeep !Timeout limit for band maps (min) GUI -integer nmode !Which WSJT mode? GUI,Decoder -integer mode65 !JT65 sub-mode (A/B/C ==> 1/2/4) GUI,SoundIn,Decoder -integer nbpp !# FFT Bins/pixel, wideband waterfall Spec -integer ndebug !Write debugging info? GUI -integer ndphi !Set to 1 to compute dphi GUI,Decoder -integer nhispol !Pol angle matching HisCall or HisGrid Decoder -integer nt1 !Time to start FFTs GUI -integer nxant !Antenna configuration: 0='+', 1='x' GUI -integer nblank !Is NB checked? GUI -integer nfmid !Center frequency of main display GUI -integer nfrange !Frequency range of main display GUI -integer nport !Requested COM port number GUI -integer mousedf !Mouse-selected freq offset, DF GUI -integer mousefqso !Mouse-selected QSO freq GUI -integer neme !EME calls only in deep search? GUI -integer nrw26 !Request to rewind lu 26 (tmp26.txt) GUI,Decoder -integer naggressive !Is "Aggressive decoding" checked? GUI -integer ntx2 !Is "No shorthands if Tx1" checked? GUI -integer nagain !Decode same file again? GUI -integer shok !Shorthand messages OK? GUI -integer sendingsh !Sending a shorthand message? SoundIn -integer*2 d2a !Rx data, extracted from y1 Decoder -integer*2 d2b !Rx data, selected by mouse-pick Decoder -integer*2 b !Pixel values for waterfall spectrum GUI -integer jza !Length of data in d2a GUI,Decoder -integer jzb !(why is this here?) -integer ntime !Integer Unix time (now) SoundIn -integer idinterval !Interval between CWIDs, minutes GUI -integer msmax !(why is this here?) -integer lenappdir !Length of Appdir string GUI -integer idf !Frequency offset in Hz Decoder -integer ndiskdat !1 if data read from disk, 0 otherwise GUI -integer nlines !Available lines of waterfall data GUI -integer nflat !Is waterfall to be flattened? GUI -integer ntxreq !Tx msg# requested GUI -integer ntxnow !Tx msg# being sent now GUI -integer ndepth !Requested "depth" of JT65 decoding GUI -integer nspecial !JT65 shorthand msg#: RO=2 RRR=3 73=4 Decoder -integer ndf !Measured DF in Hz Decoder -real ss1 !Magenta curve for JT65 shorthand msg Decoder -real ss2 !Orange curve for JT65 shorthand msg Decoder -character mycall*12 !My call sign GUI -character hiscall*12 !His call sign GUI -character hisgrid*6 !His grid locator GUI -character txmsg*28 !Message to be transmitted GUI -character sending*28 !Message being sent SoundIn -character mode*6 !WSJT operating mode GUI -character utcdate*12 !UTC date GUI -character*24 fname0 !Filenames to be recorded, read, ... Decoder -character*24 fnamea -character*24 fnameb -character*6 fnamedate -character*24 decodedfile -character*80 AppDir !WSJT installation directory GUI -character*80 AzElDir !Directory for azel.dat GUI -character*80 SaveDir !Directory for saved data files GUI -character*80 filetokilla !Filenames (full path) Decoder -character*80 filetokillb -character*12 pttport -character*8 utcdata !HHMM UTC for the processed data Decoder - -common/gcom2/fcenter,forcefcenter,ps0(431),psavg(450),s2(64,3100),ccf(-5:540), & - green(500),fselect,pctlost,pctblank,rxnoise,dphi,ngreen,dgain, & - ndecoding,ndecoding0,mcall3,mousebutton,multicast,nsetftx,ierr, & - ndecdone,nfloat,lauto,mantx,nrestart,ntr,nmsg,nsave,nadd5, & - dftolerance,LDecoded,rxdone,monitoring,nzap,minsigdb, & - nclearave,nfreeze,nafc,newspec,nfa,nfb,nfcal,idphi,nkeep, & - nmode,mode65,nbpp,ndebug,ndphi,nhispol,nt1,nxant, & - nblank,nport,mousedf,mousefqso,neme,nrw26,naggressive,ntx2,nagain, & - shok,sendingsh,d2a(661500),d2b(661500),b(60000),jza,jzb,ntime, & - idinterval,msmax,lenappdir,idf,ndiskdat,nlines,nflat,ntxreq,ntxnow, & - ndepth,nspecial,ndf,nfmid,nfrange,ss1(-224:224),ss2(-224:224), & - mycall,hiscall,hisgrid,txmsg,sending,mode,fname0,fnamea, & - fnameb,fnamedate,decodedfile,AppDir,AzElDir,SaveDir, & - filetokilla,filetokillb,utcdate,pttport,utcdata - -!### volatile /gcom2/ - diff --git a/gcom3.f90 b/gcom3.f90 deleted file mode 100644 index 223cf5748..000000000 --- a/gcom3.f90 +++ /dev/null @@ -1,20 +0,0 @@ -! Variable Purpose Set in Thread -!------------------------------------------------------------------------- -integer*2 nfmt2 !Standard header for *.WAV file Decoder -integer*2 nchan2 -integer*2 nbitsam2 -integer*2 nbytesam2 -integer*4 nchunk -integer*4 lenfmt -integer*4 nsamrate -integer*4 nbytesec -integer*4 ndata -character*4 ariff -character*4 awave -character*4 afmt -character*4 adata - -common/gcom3/ariff,nchunk,awave,afmt,lenfmt,nfmt2,nchan2,nsamrate, & - nbytesec,nbytesam2,nbitsam2,adata,ndata - -!### volatile /gcom3/ diff --git a/gcom4.f90 b/gcom4.f90 deleted file mode 100644 index d7ac35cc8..000000000 --- a/gcom4.f90 +++ /dev/null @@ -1,10 +0,0 @@ -! Variable Purpose Set in Thread -!------------------------------------------------------------------------- -character addpfx*8 !Add-on prefix, as in ZA/PA2CHR GUI -integer*2 d2c !Rx data recovered from recorded file GUI -integer jzc !Length of data available in d2c GUI -character filename*24 !Name of wave file read from disk GUI - -common/gcom4/addpfx,d2c(661500),jzc,filename - -!### volatile /gcom4/ diff --git a/gen65.f b/gen65.f deleted file mode 100644 index 5b3896568..000000000 --- a/gen65.f +++ /dev/null @@ -1,82 +0,0 @@ - subroutine gen65(message,mode65,samfac,iwave,nwave,sendingsh, - + msgsent) - -C Encodes a JT65 message into a wavefile. - - parameter (NMAX=60*11025) !Max length of wave file - character*22 message !Message to be generated - character*22 msgsent !Message as it will be received - character*3 cok !' ' or 'OOO' - character*6 c1,c2 - real*8 t,dt,phi,f,f0,dfgen,dphi,twopi,samfac,tsymbol - - integer*2 iwave(NMAX) !Generated wave file - integer dgen(12) - integer sent(63) - integer sendingsh - common/c1c2/c1,c2 - include 'prcom.h' - data twopi/6.283185307d0/ - save - - if(abs(pr(1)).ne.1.0) call setup65 - - call chkmsg(message,cok,nspecial,flip) - if(nspecial.eq.0) then - call packmsg(message,dgen) !Pack message into 72 bits - sendingsh=0 - if(iand(dgen(10),8).ne.0) sendingsh=-1 !Plain text flag - call rs_encode(dgen,sent) - call interleave63(sent,1) !Apply interleaving - call graycode(sent,63,1) !Apply Gray code - tsymbol=4096.d0/11025.d0 - nsym=126 !Symbols per transmission - else - tsymbol=16384.d0/11025.d0 - nsym=32 - sendingsh=1 !Flag for shorthand message - endif - -C Set up necessary constants - dt=1.0/(samfac*11025.0) - f0=118*11025.d0/1024 - dfgen=mode65*11025.0/4096.0 - t=0.d0 - phi=0.d0 - k=0 - j0=0 - ndata=(nsym*11025.d0*samfac*tsymbol)/2 - ndata=2*ndata - do i=1,ndata - t=t+dt - j=int(t/tsymbol) + 1 !Symbol number, 1-126 - if(j.ne.j0) then - f=f0 - if(nspecial.ne.0 .and. mod(j,2).eq.0) f=f0+10*nspecial*dfgen - if(nspecial.eq.0 .and. flip*pr(j).lt.0.0) then - k=k+1 - f=f0+(sent(k)+2)*dfgen - endif - dphi=twopi*dt*f - j0=j - endif - phi=phi+dphi - iwave(i)=32767.0*sin(phi) - enddo - - do j=1,5512 !Put another 0.5 sec of silence at end - i=i+1 - iwave(i)=0 - enddo - nwave=i - call unpackmsg(dgen,msgsent) - if(flip.lt.0.0) then - do i=22,1,-1 - if(msgsent(i:i).ne.' ') goto 10 - enddo - 10 msgsent=msgsent(1:i)//' OOO' - endif - - return - end - diff --git a/gencwid.f b/gencwid.f deleted file mode 100644 index 7061610a4..000000000 --- a/gencwid.f +++ /dev/null @@ -1,36 +0,0 @@ - subroutine gencwid(msg,wpm,freqcw,samfac,iwave,nwave) - - parameter (NMAX=10*11025) - character msg*22,msg2*22 - integer*2 iwave(NMAX) - - integer*1 idat(460) - real*8 dt,t,twopi,pha,dpha,tdit,samfac - data twopi/6.283185307d0/ - - do i=1,22 - if(msg(i:i).eq.' ') go to 10 - enddo - 10 iz=i-1 - msg2=msg(1:iz)//' ' - call morse(msg2,idat,ndits) !Encode part 1 of msg - - tdit=1.2d0/wpm !Key-down dit time, seconds - dt=1.d0/(11025.d0*samfac) - nwave=ndits*tdit/dt - pha=0. - dpha=twopi*freqcw*dt - t=0.d0 - s=0. - u=wpm/(11025*0.03) - do i=1,nwave - t=t+dt - pha=pha+dpha - j=t/tdit + 1 - s=s + u*(idat(j)-s) - iwave(i)=nint(s*32767.d0*sin(pha)) - enddo - - return - end - diff --git a/gentone.f b/gentone.f deleted file mode 100644 index d827bbff9..000000000 --- a/gentone.f +++ /dev/null @@ -1,13 +0,0 @@ - subroutine gentone(x,n,k) - - real*4 x(512) - - dt=1.0/11025.0 - f=(n+51)*11025.0/512.0 - do i=1,512 - x(i)=sin(6.2831853*i*dt*f) - enddo - k=k+512 - - return - end diff --git a/getdev.cpp b/getdev.cpp new file mode 100644 index 000000000..698fd9d60 --- /dev/null +++ b/getdev.cpp @@ -0,0 +1,259 @@ +#include +#define MAXDEVICES 100 +#include +#include +#include + +//------------------------------------------------------- pa_get_device_info +int pa_get_device_info (int n, + void *pa_device_name, + void *pa_device_hostapi, + double *pa_device_max_speed, + double *pa_device_min_speed, + int *pa_device_max_bytes, + int *pa_device_min_bytes, + int *pa_device_max_channels, + int *pa_device_min_channels ) +{ + + (void) n ; + (void) pa_device_name; + (void) pa_device_hostapi; + (void) pa_device_max_speed; + (void) pa_device_min_speed; + (void) pa_device_max_bytes; + (void) pa_device_min_bytes; + (void) pa_device_max_channels; + (void) pa_device_min_channels; + const PaDeviceInfo *deviceInfo; + PaError pa_err; + PaStreamParameters inputParameters; + int i,j, speed_warning; + int minBytes, maxBytes; + double maxStandardSampleRate; + double minStandardSampleRate; + int minInputChannels; + int maxInputChannels; + +// negative terminated list + static double standardSampleRates[] = {8000.0, 9600.0, + 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0, + 44100.0, 48000.0, 88200.0, 96000.0, 192000.0, -1}; +// ******************************************************* + + + *pa_device_max_speed=0; + *pa_device_min_speed=0; + *pa_device_max_bytes=0; + *pa_device_min_bytes=0; + *pa_device_max_channels=0; + *pa_device_min_channels=0; + minInputChannels=0; + if(n >= Pa_GetDeviceCount() ) return -1; + deviceInfo = Pa_GetDeviceInfo(n); + if (deviceInfo->maxInputChannels==0) return -1; + sprintf((char*)(pa_device_name),"%s",deviceInfo->name); + sprintf((char*)(pa_device_hostapi),"%s", + Pa_GetHostApiInfo( deviceInfo->hostApi )->name); + speed_warning=0; + +// bypass bug in Juli@ ASIO driver: +// this driver hangs after a Pa_IsFormatSupported call + i = strncmp(deviceInfo->name, "ASIO 2.0 - ESI Juli@", 19); + if (i == 0) { + minStandardSampleRate=44100; + maxStandardSampleRate=192000; + minBytes=1; + maxBytes=4; + maxInputChannels= deviceInfo->maxInputChannels; + minInputChannels= 1; + goto end_pa_get_device_info; + } + +// Investigate device capabilities. +// Check min and max samplerates with 16 bit data. + maxStandardSampleRate=0; + minStandardSampleRate=0; + inputParameters.device = n; + inputParameters.channelCount = deviceInfo->maxInputChannels; + inputParameters.sampleFormat = paInt16; + inputParameters.suggestedLatency = 0; + inputParameters.hostApiSpecificStreamInfo = NULL; + +// ************************************************************************ +//filter for portaudio Windows hostapi's with non experts. +//only allow ASIO or WASAPI or WDM-KS + i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name, "ASIO", 4); + if (i==0 ) goto end_filter_hostapi; + i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name, + "Windows WASAPI", 14); + if (i==0 ) goto end_filter_hostapi; + i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name, + "Windows WDM-KS", 14); + if (i==0 ) goto end_filter_hostapi; + speed_warning=1; +end_filter_hostapi:; + +// ************************************************************************ + i=0; + while(standardSampleRates[i] > 0 && minStandardSampleRate==0) { + pa_err=Pa_IsFormatSupported(&inputParameters, NULL, + standardSampleRates[i] ); + if(pa_err == paDeviceUnavailable) return -1; + if(pa_err == paInvalidDevice) return -1; + if(pa_err == paFormatIsSupported ) { + minStandardSampleRate=standardSampleRates[i]; + } + i++; + } + if(minStandardSampleRate == 0) return -1; + j=i; + while(standardSampleRates[i] > 0 ) i++; + i--; + + while(i >= j && maxStandardSampleRate==0) { + pa_err=Pa_IsFormatSupported(&inputParameters, NULL, + standardSampleRates[i] ); + if(pa_err == paDeviceUnavailable) return -1; + if(pa_err == paInvalidDevice) return -1; + if( pa_err == paFormatIsSupported ) { + maxStandardSampleRate=standardSampleRates[i]; + } + i--; + } + +// check if min SampleRate = max SampleRate + if(maxStandardSampleRate==0 && (minStandardSampleRate != 0)) { + maxStandardSampleRate= minStandardSampleRate; + } + +// check min and max bytes + minBytes=2; + maxBytes=2; + inputParameters.sampleFormat = paUInt8; + pa_err=Pa_IsFormatSupported(&inputParameters, NULL, + maxStandardSampleRate ); + if( pa_err == paFormatIsSupported ) { + minBytes=1; + } + inputParameters.sampleFormat = paInt32; + pa_err=Pa_IsFormatSupported(&inputParameters, NULL, + maxStandardSampleRate ); + if( pa_err == paFormatIsSupported ) { + maxBytes=4; + } + +// check min channel count + maxInputChannels= deviceInfo->maxInputChannels; + inputParameters.channelCount = 1; + inputParameters.sampleFormat = paInt16; + pa_err=paFormatIsSupported+32000; + while(pa_err != paFormatIsSupported && + ( inputParameters.channelCount < (maxInputChannels+1)) ) { + pa_err=Pa_IsFormatSupported(&inputParameters, NULL, + maxStandardSampleRate ); + inputParameters.channelCount++; + } + if( pa_err == paFormatIsSupported ) { + minInputChannels=inputParameters.channelCount-1; + } else { + return -1; + } + +end_pa_get_device_info:; + + *pa_device_max_speed=maxStandardSampleRate; + *pa_device_min_speed=minStandardSampleRate; + *pa_device_max_bytes=maxBytes; + *pa_device_min_bytes=minBytes; + *pa_device_max_channels= maxInputChannels; + *pa_device_min_channels= minInputChannels; + + return speed_warning; +} + + +void paInputDevice(int id, char* hostAPI_DeviceName, int* minChan, + int* maxChan, int* minSpeed, int* maxSpeed) +{ + int i; + char pa_device_name[128]; + char pa_device_hostapi[128]; + double pa_device_max_speed; + double pa_device_min_speed; + int pa_device_max_bytes; + int pa_device_min_bytes; + int pa_device_max_channels; + int pa_device_min_channels; + char p2[50]; + char *p,*p1; + static int iret, valid_dev_cnt; + + iret=pa_get_device_info (id, + &pa_device_name, + &pa_device_hostapi, + &pa_device_max_speed, + &pa_device_min_speed, + &pa_device_max_bytes, + &pa_device_min_bytes, + &pa_device_max_channels, + &pa_device_min_channels); + + if (iret >= 0 ) { + valid_dev_cnt++; + + p1=(char*)""; + p=strstr(pa_device_hostapi,"MME"); + if(p!=NULL) p1=(char*)"MME"; + p=strstr(pa_device_hostapi,"Direct"); + if(p!=NULL) p1=(char*)"DirectX"; + p=strstr(pa_device_hostapi,"WASAPI"); + if(p!=NULL) p1=(char*)"WASAPI"; + p=strstr(pa_device_hostapi,"ASIO"); + if(p!=NULL) p1=(char*)"ASIO"; + p=strstr(pa_device_hostapi,"WDM-KS"); + if(p!=NULL) p1=(char*)"WDM-KS"; + + sprintf(p2,"%-8s %-39s",p1,pa_device_name); + for(i=0; i<50; i++) { + hostAPI_DeviceName[i]=p2[i]; + if(p2[i]==0) break; + } + *minChan=pa_device_min_channels; + *maxChan=pa_device_max_channels; + *minSpeed=(int)pa_device_min_speed; + *maxSpeed=(int)pa_device_max_speed; + } else { + for(i=0; i<50; i++) { + hostAPI_DeviceName[i]=0; + } + *minChan=0; + *maxChan=0; + *minSpeed=0; + *maxSpeed=0; + } +} + +void getDev(int* numDevices0, char hostAPI_DeviceName[][50], + int minChan[], int maxChan[], + int minSpeed[], int maxSpeed[]) +{ + int i,id,numDevices; + int minch,maxch,minsp,maxsp; + char apidev[256]; + + numDevices=Pa_GetDeviceCount(); + *numDevices0=numDevices; + + for(id=0; id +#include +#include +#include + +extern qint16 id[4*60*96000]; + +void getfile(QString fname, bool xpol, int dbDgrd) +{ + int npts=2*52*96000; + if(xpol) npts=2*npts; + +// Degrade S/N by dbDgrd dB -- for tests only!! + float dgrd=0.0; + if(dbDgrd<0) dgrd = 23.0*sqrt(pow(10.0,-0.1*(double)dbDgrd) - 1.0); + float fac=23.0/sqrt(dgrd*dgrd + 23.0*23.0); + + memset(id,0,2*npts); + char name[80]; + strcpy(name,fname.toAscii()); + FILE* fp=fopen(name,"rb"); + + if(fp != NULL) { + fread(&datcom_.fcenter,sizeof(datcom_.fcenter),1,fp); + fread(id,2,npts,fp); + int j=0; + + if(dbDgrd<0) { + for(int i=0; i0) datcom_.nutc=100*fname.mid(i0-4,2).toInt() + + fname.mid(i0-2,2).toInt(); + } +} + +void savetf2(QString fname, bool xpol) +{ + int npts=2*52*96000; + if(xpol) npts=2*npts; + + qint16* buf=(qint16*)malloc(2*npts); + char name[80]; + strcpy(name,fname.toAscii()); + FILE* fp=fopen(name,"wb"); + + if(fp != NULL) { + fwrite(&datcom_.fcenter,sizeof(datcom_.fcenter),1,fp); + int j=0; + for(int i=0; i= 1.0 || rsq == 0.0); + fac = sqrt(-2.0*log(rsq)/rsq); + gset = v1*fac; + iset++; + return v2*fac; +} diff --git a/getfile.f90 b/getfile.f90 deleted file mode 100644 index 4e9b7a5c3..000000000 --- a/getfile.f90 +++ /dev/null @@ -1,14 +0,0 @@ -!----------------------------------------------------- getfile -subroutine getfile(fname,len) - character*(*) fname - - include 'datcom.f90' - include 'gcom2.f90' - - fname80=fname - nlen=len - newdat2=1 - ierr=0 - - return -end subroutine getfile diff --git a/getfile.h b/getfile.h new file mode 100644 index 000000000..11912a019 --- /dev/null +++ b/getfile.h @@ -0,0 +1,12 @@ +#ifndef GETFILE_H +#define GETFILE_H +#include +#include +#include +#include "commons.h" + +void getfile(QString fname, bool xpol, int dbDgrd); +void savetf2(QString fname, bool xpol); +float gran(); + +#endif // GETFILE_H diff --git a/getfile2.f90 b/getfile2.f90 deleted file mode 100644 index fbd84f2c7..000000000 --- a/getfile2.f90 +++ /dev/null @@ -1,71 +0,0 @@ -subroutine getfile2(fname,len) - -#ifdef CVF - use dflib -#endif - - character*(*) fname - real*8 sq - - include 'datcom.f90' - include 'gcom1.f90' - include 'gcom2.f90' - include 'gcom4.f90' - integer*2 id(4,NSMAX) - -1 if(ndecoding.eq.0) go to 2 -#ifdef CVF - call sleepqq(100) -#else - call usleep(100*1000) -#endif - - go to 1 - -2 do i=len,1,-1 - if(fname(i:i).eq.'/' .or. fname(i:i).eq.'\\') go to 10 - enddo - i=0 -10 filename=fname(i+1:) - ierr=0 - - n=8*NSMAX - ndecoding=4 - monitoring=0 - kbuf=1 - - call cs_lock('getfile2a') -!### -! NB: not really necessary to read whole file at once. Save memory! - call rfile3a(fname,id,n,ierr) - do i=1,NSMAX - dd(1,i,1)=id(1,i) - dd(2,i,1)=id(2,i) - enddo -!### - - call cs_unlock - if(ierr.ne.0) then - print*,'Error opening or reading file: ',fname,ierr - go to 999 - endif - - sq=0. - ka=0.1*NSMAX - kb=0.8*NSMAX - do k=ka,kb - sq=sq + dd(1,k,1)**2 + dd(2,k,1)**2 + dd(3,k,1)**2 + dd(4,k,1)**2 - enddo - sqave=174*sq/(kb-ka+1) - rxnoise=10.0*log10(sqave) - 48.0 - call cs_lock('getfile2b') - read(filename(8:11),*,err=20,end=20) nutc - call cs_unlock - go to 30 -20 nutc=0 - -30 ndiskdat=1 - mousebutton=0 - -999 return -end subroutine getfile2 diff --git a/getpfx1.f b/getpfx1.f deleted file mode 100644 index 2a1e541e2..000000000 --- a/getpfx1.f +++ /dev/null @@ -1,45 +0,0 @@ - subroutine getpfx1(callsign,k) - - character callsign*12 - character*8 c - character addpfx*8 -C Can't 'include' *.f90 in *.f - common/gcom4/addpfx - include 'pfx.f' - - iz=index(callsign,' ') - 1 - if(iz.lt.0) iz=12 - islash=index(callsign(1:iz),'/') - k=0 - c=' ' - if(islash.gt.0 .and. islash.le.(iz-4)) then -! Add-on prefix - c=callsign(1:islash-1) - callsign=callsign(islash+1:iz) - do i=1,NZ - if(pfx(i)(1:4).eq.c) then - k=i - go to 10 - endif - enddo - if(addpfx.eq.c) then - k=449 - go to 10 - endif - - else if(islash.eq.(iz-1)) then -! Add-on suffix - c=callsign(islash+1:iz) - callsign=callsign(1:islash-1) - do i=1,NZ2 - if(sfx(i).eq.c(1:1)) then - k=400+i - go to 10 - endif - enddo - endif - - 10 if(islash.ne.0 .and.k.eq.0) k=-1 - return - end - diff --git a/getsnr.f b/getsnr.f deleted file mode 100644 index b6418778e..000000000 --- a/getsnr.f +++ /dev/null @@ -1,35 +0,0 @@ - subroutine getsnr(x,nz,snr) - - real x(nz) - - smax=-1.e30 - do i=1,nz - if(x(i).gt.smax) then - ipk=i - smax=x(i) - endif - s=s+x(i) - enddo - - s=0. - ns=0 - do i=1,nz - if(abs(i-ipk).ge.3) then - s=s+x(i) - ns=ns+1 - endif - enddo - ave=s/ns - - sq=0. - do i=1,nz - if(abs(i-ipk).ge.3) then - sq=sq+(x(i)-ave)**2 - ns=ns+1 - endif - enddo - rms=sqrt(sq/(nz-2)) - snr=(smax-ave)/rms - - return - end diff --git a/go.py b/go.py deleted file mode 100644 index 936cf4c62..000000000 --- a/go.py +++ /dev/null @@ -1 +0,0 @@ -import map65 diff --git a/gp.bat b/gp.bat deleted file mode 100644 index 5d5e130c6..000000000 --- a/gp.bat +++ /dev/null @@ -1,2 +0,0 @@ -gcc -c plrr_subs_win.c -g95 -o pulsar -fno-second-underscore -fbounds-check -ftrace=full pulsar.f90 plrr_subs_win.o diff --git a/i1tor4.f90 b/i1tor4.f90 deleted file mode 100644 index e9c18f3b2..000000000 --- a/i1tor4.f90 +++ /dev/null @@ -1,19 +0,0 @@ - -!--------------------------------------------------- i1tor4 -subroutine i1tor4(d,jz,data) - -! Convert wavefile byte data from to real*4. - - integer*1 d(jz) - real data(jz) - integer*1 i1 - equivalence(i1,i4) - - do i=1,jz - n=d(i) - i4=n-128 - data(i)=i1 - enddo - - return -end subroutine i1tor4 diff --git a/in.dat b/in.dat new file mode 100644 index 000000000..5294129cb --- /dev/null +++ b/in.dat @@ -0,0 +1,16 @@ + 35 36 22 8 31 11 14 55 20 36 55 13 24 15 56 38 16 28 61 58 + 15 26 45 8 41 53 37 57 59 60 29 29 41 46 44 35 52 61 24 26 + 16 20 53 35 2 6 9 27 47 28 57 6 15 9 16 10 56 9 63 46 + 9 15 3 + 74 61 44 233 29 245 254 64 119 64 250 111 38 145 53 29 140 194 119 99 + 55 86 48 110 142 95 48 120 61 66 252 252 245 88 62 41 124 249 246 68 + 250 249 65 64 140 142 88 190 237 90 240 52 79 216 55 31 112 135 66 44 + 99 57 68 + 54 61 26 5 13 60 3 56 30 58 57 4 16 43 28 43 6 61 13 19 + 56 8 4 9 45 32 9 7 14 52 4 38 40 27 3 26 51 54 40 29 + 36 63 34 43 3 48 36 49 46 30 8 20 40 59 29 28 17 11 8 19 + 11 63 5 + 38 25 35 8 28 0 0 60 60 25 0 31 28 52 14 24 9 30 18 54 + 49 55 48 15 27 54 26 22 30 27 1 1 4 31 35 29 23 2 2 27 + 0 1 25 32 21 84 28 19 5 60 2 27 15 9 39 23 42 12 29 17 + 16 50 49 diff --git a/install-sh b/install-sh deleted file mode 100755 index 4d4a9519e..000000000 --- a/install-sh +++ /dev/null @@ -1,323 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2005-05-14.22 - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -chmodcmd="$chmodprog 0755" -chowncmd= -chgrpcmd= -stripcmd= -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src= -dst= -dir_arg= -dstarg= -no_target_directory= - -usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: --c (ignored) --d create directories instead of installing files. --g GROUP $chgrpprog installed files to GROUP. --m MODE $chmodprog installed files to MODE. --o USER $chownprog installed files to USER. --s $stripprog installed files. --t DIRECTORY install into DIRECTORY. --T report an error if DSTFILE is a directory. ---help display this help and exit. ---version display version info and exit. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG -" - -while test -n "$1"; do - case $1 in - -c) shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - --help) echo "$usage"; exit $?;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t) dstarg=$2 - shift - shift - continue;; - - -T) no_target_directory=true - shift - continue;; - - --version) echo "$0 $scriptversion"; exit $?;; - - *) # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - test -n "$dir_arg$dstarg" && break - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dstarg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dstarg" - shift # fnord - fi - shift # arg - dstarg=$arg - done - break;; - esac -done - -if test -z "$1"; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src ;; - esac - - if test -n "$dir_arg"; then - dst=$src - src= - - if test -d "$dst"; then - mkdircmd=: - chmodcmd= - else - mkdircmd=$mkdirprog - fi - else - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dstarg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dstarg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst ;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dstarg: Is a directory" >&2 - exit 1 - fi - dst=$dst/`basename "$src"` - fi - fi - - # This sed command emulates the dirname command. - dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` - - # Make sure that the destination directory exists. - - # Skip lots of stat calls in the usual case. - if test ! -d "$dstdir"; then - defaultIFS=' - ' - IFS="${IFS-$defaultIFS}" - - oIFS=$IFS - # Some sh's can't handle IFS=/ for some reason. - IFS='%' - set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` - shift - IFS=$oIFS - - pathcomp= - - while test $# -ne 0 ; do - pathcomp=$pathcomp$1 - shift - if test ! -d "$pathcomp"; then - $mkdirprog "$pathcomp" - # mkdir can fail with a `File exist' error in case several - # install-sh are creating the directory concurrently. This - # is OK. - test -d "$pathcomp" || exit - fi - pathcomp=$pathcomp/ - done - fi - - if test -n "$dir_arg"; then - $doit $mkdircmd "$dst" \ - && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } - - else - dstfile=`basename "$dst"` - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - trap '(exit $?); exit' 1 2 13 15 - - # Copy the file name to the temp name. - $doit $cpprog "$src" "$dsttmp" && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && - - # Now rename the file to the real destination. - { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ - || { - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - if test -f "$dstdir/$dstfile"; then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ - || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ - || { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit 1 - } - else - : - fi - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" - } - } - fi || { (exit 1); exit 1; } -done - -# The final little trick to "correctly" pass the exit status to the exit trap. -{ - (exit 0); exit 0 -} - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/jtaudio.c b/jtaudio.c deleted file mode 100644 index 0748ada30..000000000 --- a/jtaudio.c +++ /dev/null @@ -1,263 +0,0 @@ -#include -#include -#include - -void fivehz_(); -void fivehztx_(); -void addnoise_(short int *n); - -// Definition of structure pointing to the audio data -typedef struct -{ - double *Tsec; - double *tbuf; - int *iwrite; - int *ibuf; - int *TxOK; - int *ndebug; - int *ndsec; - int *Transmitting; - int *nwave; - int *nmode; - int *trperiod; - int nbuflen; - int nfs; - short *y1; - short *y2; - short *iwave; -} -paTestData; - -typedef struct _SYSTEMTIME -{ - short Year; - short Month; - short DayOfWeek; - short Day; - short Hour; - short Minute; - short Second; - short Millisecond; -} SYSTEMTIME; - -#ifdef Win32 -extern void __stdcall GetSystemTime(SYSTEMTIME *st); -#else -#include -#include - -void GetSystemTime(SYSTEMTIME *st){ - struct timeval tmptimeofday; - struct tm tmptmtime; - gettimeofday(&tmptimeofday,NULL); - gmtime_r((const time_t *)&tmptimeofday.tv_sec,&tmptmtime); - st->Year = (short)tmptmtime.tm_year; - st->Month = (short)tmptmtime.tm_year; - st->DayOfWeek = (short)tmptmtime.tm_wday; - st->Day = (short)tmptmtime.tm_mday; - st->Hour = (short)tmptmtime.tm_hour; - st->Minute = (short)tmptmtime.tm_min; - st->Second = (short)tmptmtime.tm_sec; - st->Millisecond = (short)(tmptimeofday.tv_usec/1000); -} -#endif - -// Output callback routine: -static int SoundOut( void *inputBuffer, void *outputBuffer, - unsigned long framesPerBuffer, - const PaStreamCallbackTimeInfo* timeInfo, - PaStreamCallbackFlags statusFlags, - void *userData ) -{ - paTestData *data = (paTestData*)userData; - short *wptr = (short*)outputBuffer; - unsigned int i,n; - static short int n2; - static int n0; - static int ia=0; - static int ib=0; - static int ic=0; - static int TxOKz=0; - static double stime0=86400.0; - int nsec; - double stime; - SYSTEMTIME st; - - // Get System time - GetSystemTime(&st); - nsec = (int) (st.Hour*3600.0 + st.Minute*60.0 + st.Second); - stime = nsec + st.Millisecond*0.001 + *data->ndsec*0.1; - *data->Tsec = stime; - nsec=(int)stime; - - if(*data->TxOK && (!TxOKz)) { - n=nsec/(*data->trperiod); - // ic = (int)(stime - *data->trperiod*n) * data->nfs/framesPerBuffer; - // ic = framesPerBuffer*ic; - ic = (int)(stime - *data->trperiod*n) * data->nfs; - ic = ic % *data->nwave; - } - - TxOKz=*data->TxOK; - *data->Transmitting=*data->TxOK; - - if(*data->TxOK) { - for(i=0 ; iiwave[ic]; - addnoise_(&n2); - *wptr++ = n2; //left - *wptr++ = n2; //right - ic++; - if(ic>=*data->nwave) { - if(*data->nmode==2) { - *data->TxOK=0; - ic--; - } - else - ic = ic % *data->nwave; //Wrap buffer pointer if necessary - } - } - } else { - memset((void*)outputBuffer, 0, 2*sizeof(short)*framesPerBuffer); - } - fivehz_(); //Call fortran routine - fivehztx_(); //Call fortran routine - return 0; -} - -/*******************************************************************/ -int jtaudio_(int *ndevin, int *ndevout, short y1[], short y2[], - int *nbuflen, int *iwrite, short iwave[], - int *nwave, int *nfsample, int *nsamperbuf, - int *TRPeriod, int *TxOK, int *ndebug, - int *Transmitting, double *Tsec, int *ngo, int *nmode, - double tbuf[], int *ibuf, int *ndsec) -{ - paTestData data; - PaStream *outstream; - PaStreamParameters outputParameters; - - int nfs,ndin,ndout; - PaError err1,err2,err2a,err3,err3a; - double dnfs; - - data.Tsec = Tsec; - data.tbuf = tbuf; - data.iwrite = iwrite; - data.ibuf = ibuf; - data.TxOK = TxOK; - data.ndebug = ndebug; - data.ndsec = ndsec; - data.Transmitting = Transmitting; - data.y1 = y1; - data.y2 = y2; - data.nbuflen = *nbuflen; - data.nmode = nmode; - data.nwave = nwave; - data.iwave = iwave; - data.nfs = *nfsample; - data.trperiod = TRPeriod; - - nfs=*nfsample; - err1=Pa_Initialize(); // Initialize PortAudio - if(err1) { - printf("Error initializing PortAudio.\n"); - printf("%s\n",Pa_GetErrorText(err1)); - goto error; - } - - ndin=*ndevin; - ndout=*ndevout; - dnfs=(double)nfs; - printf("Opening device %d for output.\n",ndout); - - outputParameters.device=*ndevout; - outputParameters.channelCount=2; - outputParameters.sampleFormat=paInt16; - outputParameters.suggestedLatency=1.0; - outputParameters.hostApiSpecificStreamInfo=NULL; - err2a=Pa_OpenStream( - &outstream, //address of stream - NULL, - &outputParameters, - dnfs, //Sample rate - 2048, //Frames per buffer - paNoFlag, - (PaStreamCallback *)SoundOut, //Callback routine - (void *)&data); //address of data structure - if(err2a) { - printf("Error opening Audio stream for output.\n"); - printf("%s\n",Pa_GetErrorText(err2a)); - goto error; - } - - err3a=Pa_StartStream(outstream); //Start output stream - if(err3a) { - printf("Error starting output Audio stream\n"); - printf("%s\n",Pa_GetErrorText(err3a)); - goto error; - } - - printf("Audio output stream running normally.\n******************************************************************\n"); - - while(Pa_IsStreamActive(outstream)) { - if(*ngo==0) goto StopStream; - Pa_Sleep(200); - } - - StopStream: - Pa_AbortStream(outstream); // Abort stream - Pa_CloseStream(outstream); // Close stream, we're done. - Pa_Terminate(); - return(0); - -error: - printf("%d %f %d %d %d\n",ndout,dnfs,err1,err2a,err3a); - Pa_Terminate(); - return(1); -} - - -int padevsub_(int *numdev, int *ndefin, int *ndefout, - int nchin[], int nchout[]) -{ - int i; - int numDevices; - const PaDeviceInfo *pdi; - PaError err; - // PaHostApiInfo *hostapi; - - Pa_Initialize(); - - // numDevices = Pa_CountDevices(); - numDevices = Pa_GetDeviceCount(); - - *numdev=numDevices; - if( numDevices < 0 ) { - err = numDevices; - goto error; - } - - - printf("\nAudio Output Device Name\n"); - printf("Device Channels\n"); - printf("----------------------------------------------------------\n"); - - for( i=0; imaxInputChannels; - nchout[i]=pdi->maxOutputChannels; - if(nchout[i]>0) - printf(" %2d %2d %s\n",i,nchout[i],pdi->name); - } - - Pa_Terminate(); - return 0; - - error: - Pa_Terminate(); - return err; -} - diff --git a/killbyname.cpp b/killbyname.cpp new file mode 100644 index 000000000..51e8c80d6 --- /dev/null +++ b/killbyname.cpp @@ -0,0 +1,282 @@ +#include +#include +#include + +int killbyname(const char *szToTerminate) +// Created: 6/23/2000 (Ravi Kochhar) +// Last modified: 3/10/2002 (RK) +// Please report any problems or bugs to kochhar@physiology.wisc.edu +// The latest version of this routine can be found at: +// http://www.neurophys.wisc.edu/ravi/software/killproc/ +// Terminate the process "szToTerminate" if it is currently running +// This works for Win/95/98/ME and also Win/NT/2000/XP +// The process name is case-insensitive, i.e. "notepad.exe" and "NOTEPAD.EXE" +// will both work (for szToTerminate) +// Return codes are as follows: +// 0 = Process was successfully terminated +// 602 = Unable to terminate process for some other reason +// 603 = Process was not currently running +// 604 = No permission to terminate process +// 605 = Unable to load PSAPI.DLL +// 606 = Unable to identify system type +// 607 = Unsupported OS +// 632 = Invalid process name +// 700 = Unable to get procedure address from PSAPI.DLL +// 701 = Unable to get process list, EnumProcesses failed +// 702 = Unable to load KERNEL32.DLL +// 703 = Unable to get procedure address from KERNEL32.DLL +// 704 = CreateToolhelp32Snapshot failed + +{ + BOOL bResult,bResultm; + DWORD aiPID[1000],iCb=1000,iNumProc; //,iV2000=0; + DWORD iCbneeded,i,iFound=0; + char szName[MAX_PATH],szToTermUpper[MAX_PATH]; + HANDLE hProc,hSnapShot,hSnapShotm; + OSVERSIONINFO osvi; + HINSTANCE hInstLib; + int iLen,iLenP,indx; + HMODULE hMod; + PROCESSENTRY32 procentry; + MODULEENTRY32 modentry; + + // Transfer Process name into "szToTermUpper" and convert to upper case + iLenP=strlen(szToTerminate); + if(iLenP<1 || iLenP>MAX_PATH) return 632; + for(indx=0;indx=KX$apGhV` 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 YOi*0$QZI#aPS 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 literal 0 HcmV?d00001 diff --git a/kvasd_g95 b/kvasd_g95 deleted file mode 100755 index 5c4c12576196842b60a57d189eec1cd6e0b290ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 448837 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

    0*v0sEF_-Ide3s zHb+Mt6$;!zq0A)S2XxD zn*Xo<^d%VCaE&V({24X=SARl&+8p8k=bs8j6^$!Zu2Qv{N%a~vYnj%rQ@39I1`QiE zZql?_^A;^ziOgF6)W-bhwicG{+FMz7=xAfxsdJaE-MaU%>)ES!pT71ElCgmZ&4h%? z#*GgPkBE$#fKEjf9TOWjam2_`qXWkL`2M6{CQq3fKW%zKV$zJ6v(&RSbCT!Io4;V; zuZvO^FIoEAvgIpQ{=RDUnzifxSpVmSjhi-a*}84}j-9)9|FviDzQ6Y$IC$vrk)y{_ zkDoYs>U3Iq#+kF{GS6SQn04v$m8;jT-?(|}_MPmz_wMIBc=+h?lc&#e^PcCwc=_se z!JD`5-hcR5_~~;|@t3b9TJC?_en%%~%=PtmbsI3y-NVz%dytQ>pa0+?Lx&CL+yCSH z|4+1E7goa(-awfQs^F^{tFwx7#MQAl7|$|N90z`jF#B#{9@Nu3hy}WINpVvb!^AW^ zoAc36Qwu(<9)O3J$~@A9==e7P3W$^23x7xF&muFT5pd1;F$FHa@x&S0Z26^tEP`Dj z(o&B}KZLM}HIL=`{a}Ehb8zw!v6dtW>uGSz!m$*`MjZQbWZ;OxfeBb|4gq;ih{9v` zy(1>O5RV_qJ{&nl0p#Nd3t4ns?{{!=RM|S3f)tdGBNYdo@5kYTsbDXfsujCXIsL_c zx^7AtiGd%YQFzGln>3i^{yq(MqwkEPBZVw60E!BY)Gy}Y7ufv340bqNtkvM4-`L~) zdC#L*bMr3_%J**$3#6mt-=r1N{I}_aeC7TAPwOX=O~b?6_=%@;;giV2RtwkkJClcH z7{X@rup&d)Tn2NXolo?i1q|kWQV+n%A_i+i`|#*LO9>Xgc&Q$MljQ^x9X@IZ`<-AG z<6jxV))MTq5$$`d|Eveh;csWQg{lDD2w3g)SJ|`O0&FW_?Vcqr5U%NW2Vn0-Pxs<9 zp04S$8!+2V0grIHny%@y53plrn$5+jF$3W10AL*suib^y(*o=;U_HlI#|GC9(E=pKWAyf#UDV14BJjP*_C3$WXO zwVikFLQhkXo=^7xi?y?#mRN1kC!}Nf@uo}djVkljJgI)58(`j)pWaAv{>Er_Ly-mAQ)b0qpjPd`{_!L+)

    F5`w2Q0PTQ;&zSWnJjYHxz!b%@$Y7nY>{)u755 zuJ)>d1j8#pwM|bPDG=RpJ;Ys|(UM>QX}y1oUi^Mm&Ast1_3IIgys1Cz>mRnw_kOtA z{}!WlCBWu-HOc>K{-kNuEf+^ox@tJ~UwXapX!na*PtL9xPOus{+NN#!dt0T7m45Ft z;0-PvO!2kz@5N7=q&ufoI=_O}g=JAi7dlOu7di6zq@TFyk8!!SA-<*`8}*mw-Q%WK z@oTXSO8o35fQ{|gH7CO6_ch%`)vtjz+gbp&vX9vu@javUt>6C)8g|JP0ahv5a>w-) z=UVM|MJh;NPV$z6ArI%Y$?OOFuZk#p%8$Z=w^4Hw9 z#ZxRd-Pv)t+P=dP1%UbdG=FJhhqEs}SRQ=v+wHGi7vqV^73R&>&2#fEI=3!X>Gs0q zU~e#V#MUv}Cr+L;VBi*?&FnB zLBotOIoz;be{{g^&s|P6xb}8#OZStKp$i6G`y720u>81-kJ_zi@c2bLo z+5d2I=l9LSYheqpdlwds?DKPKiSqK^m*dR}>p{4z6^&L+lB5^y)=uu#>DE5u1Atw5 z-(d6E(Vo#JExxor)J0k|pf>RPcztie_C3+3&wCr^)(!hosSd|=&kZ?|eAw~QOY6$N z{IX$Kw=IArTi&=RUwm#~n*4Egp#A11gX(fz%SK)9Jz0J{l*_ArBrNaroI=2sx0v^G zlWEer#tXY|IX8Iv_>~Z9*UZmf9gY}X+xE72=n#j!pIqvr&rqJ6d2HwV%x5-jeCM8R z$2|wE*vWjsr+&GILhBvwkRa}{ZhiykP7UkjgI`AM+@s9AH@|A_{BBT)`mRsckBfb< zYQhKe*Nx}NH)R7hwCAW@qUcrUFD_d8Ea=ke8PlPmrrO_+i0%&CxXsZ#ps$zr9SiIf zK6=@Kv!`mB9M0d`qG!K0gVQbmCaHS(=J~53ce|}RpxV&TwTBW4=Ha>T*&wGc4qN}w^&l`qj8@0ibqH@j>|r{ zFuB$!r<7%pe_dS}UfZc=bB?>^Jz|OEw8yU>U1}cAws%SU3$R1QS!-Am7bbB6C zv_ypW^6p&y=E4OdhkIu?b!`<<$G5K;$Njn0a@yf5!w-M$RlKjq-SAzH0js#T;cQQD zqkcCg|Ds6$bnndU)*NT{=bB$z_Ws*7zw-UZc@xLF+Q6VJkzHH4x!a)em3pm?t9|x% z(RIK~HXqsOQWV5RHT_9*!No8Cmo~6tIl+4pa@>cHEr?whRFp$KFegyCQ0H zr)|u@Y7aiQ%>b;kywe4<>{_OhtOi#~#+?t3z%FQ4-R0T7JL%(YO z?YljHc+%9qCBs)&YjB`&@Ik<4>?$l?_U6FX6B||C{TECzlUP8f*X^8P(l_dro$a#s zliJjsR>cy}2q?AlUJmN`;+l!J+s>{VA8i9H`Ssi1_U1J99LZH!8#FK0!M7dcIePIQ zuf}_KYJOr}M`hb$dT_4pVQhyGZh9;41V^)ht^bZqsN)SJ!Iongmon ze@|=$Iq1{s%$mVD!;;cl^|Yv&(uQ>u`VcU~`Q?Z~t6H0OHs~Qqd{9Nq^-{u}ihh z>3eu+$R5C&FZ%m+?K3Ny6a*ZQSKZmvctlr@>(!%8d`(4@EtlR#w-CJu9#o+l`k#*4 zS+?S5+xmNNJ=4?DeDnsudR&ZNxbUZ!18-_BKewHFb%IBCj(d=wvclKtnzyWd?Ilm+ zkKKF+n04dO4U&{m<5zU6bS>kc-0HU;9QX9E&%65$FPggU#o~oc8y{b1Z-+hpKMy(P z5cFs3<3pU)=U3I-@&vHhS_?9}4e|``eq>GUu~oZl(Da0}R%g%c&d+9g)*S!HxKfA4 z-nPB)3`hG*c|ZI4j$PGiezQSwc`I%J7P;Z`=iS$@o7a6g>gK`9;^tG}Wqc`Fm9)=y zoLBtmjI;gsxcIi|gY}S~?#!JWa_(rGMX|Ai@3%ExxIOic?!%_nJ+m=?(T*pF0V^J{_F%Om+ehWg zife?J4ueLQ|0&OZp90?|_?yopz*;8d55oU`{I~Sk-!dr{uz}sxjw@epNE=+sdbjG= z#>Ps(wrcK#rtGdULA~=qo}W+K)e`{w>H0(8Iw#g8N2ETRxw+PXCJ}&5zt_z9c9(rO z+MI87W!B9x55@sD?rgyL(Pl^9_HzBL<)6u2j6wjL)$6JMlxH?4QYt@~(yH&Mou~?aGz!)r`}I|;5_aty|}7>%o(?Y?X}z*{Wf)F?nN_OC&2oen?_&WIpEHl z_e)b0O}gdU1J)@~K3bJr)ot#mi7qE5j`r;hm_^pyfrWj-dsd%PEHmo(MAZW@hxo^_ zLl;jPB@SG;X~nJxHN9GfJHKyCJ@J_VzfZq&aKLd*l}>;Kn*?}lTG?~$z^-m%*DUL8 z*8#8_&gUj=99t;6_sVgl(SoAm?E$M>v0C6uPpd;y&6f|j=#Wyu0E?nX7!);=hbF_EgtsFVPeS|^Rpo;hp>?S&a|=E;CVMgMx9-;HoC^^&T;Eg zFV_d`-uimJJ0m9Np1wZxWBT)8RUNW$d=mt7at?)&%VS;=$ui_R4(_ z*mlR+PRh0BCV;uut?Ms4b6`(y(%Xm+BXgfu0n9{I%jICt4(&waEsnKo^zu+ez@lG0 z3TwCE(WYhh6zA%gyQYy-fBI1-cZ@zo3&(7Z$%qV%7 z2iW``_1tD8`0uKAZrBrL59#zLlrA}6d85Z`Pt(|u*L;Up?fwuj%f9MSTgM!`S!2x3 z&6~DYwxaC{57}NFFxVrrUbXmlul&p}AHD-v`@91&M^RR`gziW|X%FcVeT9Q%gHig)0Jil@W z?;6$rp82?|-Brz~?c)XkR?%KNVDjX7k1ev7HeaDgjNF0^Rh#$xxnH4)+1@du4tANi zam&j}fYlCP>1cocWrgNzgVPmrj9!k$AnmF5v5CQLHY})|w){f955EuJU#QjknrF$~ zS8Z;P8TDuJ0BO7NbphM%5;VTs_=tk>(~Vw?JeoQ@>?8D{lOpI#-xX=i@*0>{aDP-U z4Fkc!CGST?4BXmqwB*gAS{J!65nzAydN}0fl@-$3_3n>vclPwwiSI$HPn~@}`unYM z-fgS!9o+KTRlFPe{oY6J!OD6SXXSdf+p>JjxDJ2~9+TgH;JnJCo>-2ZVWV=WISbnj zpTf%j&L&=d1?p;VR)n|j}z+@Qvtc70l0YL@oF{e3UM+Gp)m{bu&a;&Sl9 z)r;*hv!;DFG->x0+hxC|( zch5NJRrqSo;X}zvDF)$ADbpPqzr5bD@1c7Q_k69Nar8Ofp3`Z2EQZaC58Qfju#I(h z`^JDZ>-ivRu1(7bd9B#ClRRUxld@PUd~x_rk?GjJ(<{sxQFeDu?;Mb zTCGhU)pPK)^FcoY=2sLj()RYe{+8z&-sF0&_z;hPz(tc z=m%C^@;>Oeep93HnavW%&1u~Qut1lk1GhF+?M|$*G`&WrRX657(P~GI*xN5PV99_< zOX|(Fl}38zBIt0(<0q$^0+xRAz@)XW0_`Vu-;#1OVWM>TBdzvf z$U()SqD;Gt_4hxRZm2fU;h29j(^7>xGaB4HpkAOfAXENse!A z1=xa#jU^B4E5%%2mlIOAh11&^2>5i)xHNqKwZ<23h`fsq@7TR9=N9C?;H{teAFa%u zwZ409*W_a}djht%kIJjc1#^#nzIU&UUU0nmqMNXHAwC04?&jApQY7!^YQL-e3PGh) za}&k;8qYfMTs*~R#P0>2T>*RFrLyCUKQ}g>UhVf+XR;?fT60~i^$7nXu3PKh=IkGL zw7qQSc2^8#lIx*~%te@1Is@0b4 z(gdd8Obp!Gz;ollr;Yrp0rt1D`KX8e79FYDwrWoPwv5$*SJ288(!p^#+Q6;u_;QP)(EiTX`S5rJpbD*u3MKI{rB|om~cs}UB6n~ zKVkXWZf^En?zC}FZ+#AdwJiJ1PTl3R*Nd*Cs%LM@yVM4-O@?P?B#KT9O((WJZ z|8dGi_(Ze*REiJfJz4$h+Hm*KyrP>IU^^X}hZl&eTkYv`cA?kfW2ZU+*5pX7;7Rvv zE&djV8E~ezdg--I<#T(jrz*E z4uB0gp6GjPPr&DUWAo^9uGh@&wHE@lcn~qkA;i65qY~w1-O`Y&e5AM_j%$HR$;~OG!e?+2a0LCn^Az zU1w>`nZIHgUw&UP zv0tAC)-S~8`fo9Ndgb16t#-z)9rEY<&t4gEB*dkUtnF_-0DGJ#9)Hfa^ZZ|jcl)h* zuY}b|v$W#B#Zg<<5zc{AVZi&1->OlQTqpSv{bU7JX-LW5FQ-aP6 z2}`QbRJ-1!hq`E~-;S|y)x3T^2+w}CL$CA2+G-j9ZyX=a@_3}3E5(OkS-8HfgGn=s zwdTONBMyI@55axOzdSDK$}g|IcW^J`3}5dU{C)yWo&aW!I=bR`Vu+K$c_rLyfI}#A zKJxYWhMr>GeGgsz)V`!k{89CCv6hYk90ZHQk%43ARm=-rDb|J>9IJ7@0QYX$5Qd(M36h22=@mQy63CuE;5RyC*(eRapPX*xI_8dp@hpjicA^TEVr`CLi{kHK zzXKeh*?9gR$1EJFIQkp5lMqMQSXCVnsR{`tItU-Qfzi{QX79;1K z!2bvQTi|~rrR&_e^E({+55n{GS<3(L-;@_2fO7}|tV9T4@RV_fm6R88f)a!ZlJK8T zu>;DBf>!AZ!wJ1$10OaP;ZJ#7@=|tZu0{Z13<3zBP6TbH@`8HZ*H+!ye0Xf$&$j#C zeZ5NMq1;tMOoHm7@`8h(rW=MY5Q@hq=QI1!eG$(4tj}g{57^mkZnDE+W953; z_@Z4FvtsSro!;Y5m+YQIb)c?Qsb|-SmqgS}=yl&Knd(><^))@JkI4=Eufu;7)sdO` z<+CBF5sJsB?+W&#`=WYxsxvbiesFuW_4Au0eKJ(0(+`= z;W_Q9xOB^&rq%cU`J&^Ywp4HQQEmEAyFD3~J;v64R=nvA)mwkN_Vf1s4<_QjKK{2; zy_uQzD-3Z#7$3ncuaop6d>1%Y!2O6+o*${vQyYgv)QAy-xmS@L>~ZpMH9eTlx>-XNE?&9`ffdUi><4 z@tR{Mgr6mjrtQW%oNzvpRIH9XPx!@YwX3{~oHB+DSo~|BebQ9IZzx>%$NPPI7GzJ_ zpZU{N8^W&x!WS(zR9s^UZ|wA>h3Jaq90+oAmg&ZPK|_0BN7&xY%OCj4`4##c#up z_9vV%BwV#-cjZOBua4Nb>eF>A!Wl!j^Z@}??FOEa*G=D7qX*%P;nnBnF$1dnKFM@R z++)+qg!5bAJYn|S$4=X1_s+dKbCPg=4V(>ikZ{fi&W1WjIKKnVhV8%<1y|6j>>N3@ z;~d)2@nT7RFS9q^J6)bis2vCmXp5)!y}eFmZJvEC0I#;?ID`;ZW!DMWSb1#k!c9*m z8B;p|OZU4T?=y2^^{(~qFH53!An)hA>SoU@hj}{PTwEc9+EGI7*r42bpfKu8|B^BE zs$amoPI_KiFmhwp^Sy5Mi5p7o_=x4 z!j-fwJJ(NbBi*QW{?h82Yb)Lke4AT~+D0FDhstN>&rbCI(qWwswGE(E9dp;+U3T4P z_o%PynY{umz1PDU*Bs_N`+e^(^HQm8fPFsO)cdS=7E5rq!u!TC{CA44y3v z-c=YpYMT~qGqgF>HZ9slZ4o}0lHs(U*gA$BoU)J5-ms^^88cjcrp?PT3J1RIQ)P90 z(Z<_3C34wuO{qSaph?#&P_YsZ6mZ7Hl#?fbwYd5{x1RzFpb37^XoRg@D$+t z6uN)1>&VR0Z~tun`L`bM?)gt=XN5Lq$NZ16sg=73G~i4&YBz^Boj9;ZV!S|u_!2p0U}Lp{jTLAB6RQ=>ET+CVQ?_;`p89|G5oBZP?Bki*ZogDZTy$fgK$n&; z-)N7y+&Q;C?tDvuE}gp+Y70$d_Eo|h6arlwDtyrH^>8+=HnX<3K$rQBZ?&z>>eoBB zvHl+dU5Y{rwR;!6s6I7s&YuEZdN_a3K05Gh?){%^Y72C!yy&fV#KtwduUqxLD$pen zosu0orON1(1iGwG_@JFRaBi4D=wA#0%MBDFWO8<{T zA9xA0y3`Ue>pe$aEW7dIjXeD<$5F5p`z5hA}w@3I$rZqJw;j4zf2oNP$*&5bz%JB&#*e^$4_r zYo`_bI)PT5J2QWg(GOFR9KZfaJC&ETQXMSXk(ufIzDv`7fop0D^!tQ(lCSNF)r}9I zVSXLpt0v`XwO2>S1hN9b#ZUyF2Et@4W1~K))Htt3YSnADy*8KMTYQ zy`7~shsAFETcDpDake&#j@FJ^yzq%Yzbfdgm!Pw*jLur1-x=gR{HT75nMuR12=s$1 ztA#5Y1Xs4IK))p9rMWfguLb%AKh;hZ`ZG+&a%}xrj&{|zG<|+1GxKf5Hm}xiEVdJ9 zDur^tGTyf7;=+j;f=nJmC*0tt8ncftckd(6v?E}*+s_Nzbz;>Vfu@s?_tMAR{YU?m z-cg|Gd8Bi?eX&Nftn4EKP4VtN?Uk&G-e$&r;Q~$PBX8By#zE~WZE_W8dK>A?;W+e! z;~>z~8?aXge!5V##;I6=rt6V++{UdHs+)djDA4p7)eFZV1dfA1(=mWy?L%Iw;`IZ8 zrf}W0aNU1`>%L5&={ux@>%I@Jd#XUwsIS_og5NICH1msgmC%1+`k7;E@=CNsHugc$ z%x6eIqJ$*>iXGir9u?@k4kwSFwmUWH&iZWvoe`eWdS)#fZnbIV3xUpm12#6%@lEWn zn>Gk^UJux$CktK<{`Bi0fzAkbX~R2C+S7H?m%0L-4*=#`{M(v}%MJ|@=)4iIrV}}n z#Q4qO0-b3P;|(Xq2TqJY=R<%61!VOP>9TFTK<>1#AYKm;yL4 z0-X;7W-;09v6cBbH-XL=s%SA(X@Q~2NP*7h0K-saA%-e!0}RrA5NIlfD$y9K3>E0S z9eOSF-2$Bveyk|a9@Fw1t$j>I=vPO2Ha4aEr*Yhmy*+;2F|)>~j(sqlqixveQreu3 z?d}P*$JCNGV!KoCzen93Akh93VAY2Eo-_Y2|E@rL$~(u#q9n4@2S0)Kly^wWTceZg zo9q>6PkCQT=Y0&G7qC{KJ%&hHnSJLj4vIn(f%cSl4IHYfaHs^@e+F!JwG5Go&w|P4Y*{@lArpgrYPz@cgkhf1J5<@Fv`aX`!G)>j4EQ(oQBteQZ3%8Q}daSYAO z1sO-)sTi8cF*JKE&>neLVQ6*%L$me*?UA>l;4=ucN8VF{&wwQi9IZS3q_vO!mLJ5E z&{NM$AMQHT6Da6E)Av58H~jZ;ZUR5(#)LZIVV~AM3>Wx8u=D=2`tKV!;*7u#f;o;K z*W{0uyL$=zAXwFehmk+~dYu;dL9nww-5FTWcHKvT9|Sw{;!?{OZwBrW_(8CbaPGRm zxfA$7u=iYj?+X5Rx(NIrm~Dk7Z5-RxbrSeNu%mG9LgCyA{21+?i&^lnP_L&-|@x&*=UJ;K@G|oHVIoVckuTY-$-RQvFwb@6) z4S6)QS>HELHZ5*r$fFKxlV1k-9kw>)(E*b;xzV!r?4`yu#-Z}|{JHqebF)MB40$B+ z{_-;D`KHE(Jc$b*Ij3noV|Oen<3xEpKM#w``SWdL%xak?E0#i{r71@-P%%n zUdfVu3zr-6?fTVDC4GWorW^9D#_VHX-TO57$&hdT;q-dJ={4lrt#y4$9xVx-WXQLR zHO_y{KH_xSkZ%>>^lpaJYsfdFPOc?>Z4$>C@(rPeuLw018}bdIh7yDtvJLr$P(ukq z4St4vL#W{^LJfI_d_$;+ckggKt(s{+Sre zqc!&0scemX$+x@=p0FabUFZgPJtJ{)Ecv9ii_@k1hP+(Tf>I-u}lF6;Dg`*9C0k$_xj--*|l4UW9d@b2LDTF$%Z(V-QWOx0vv!N zjwK9r5I%GtM-Xu=L9_w~(TW`6Sb}H;4x$w{#IXd?3LHc${D@--q7^uZRyq;K5=1L- z5Utc9eg;9b0teB`AH=Z)(FzkJ%8%cZ~NhoPqe{1aW)`rH z5!}gYtOjv>eHH$~KQUnrBaW}B0jOnJ1qLFHuc*Kgd{pM;XT^Kn@-j6V#PO8^Cj)HYWB_q|$>WdVEQBshqY&=JQML`iTE zC7~dWFNl)hAWA|-9A6M6!9kQHg*d(-N`iwZDGzacL6igsQ4%TQ_<|@24x*$)#PR(v z$44Ar5GBDuloW_Kz9341Lzy|^_<|_uY|Q1rAVb%~z)PU(Vg6nkb0nqi?jikMKg2N? zF#^YXUpQ6}$6PuY4!>Up=Rh2D%6D+McUt{h#4(>S1?NbC1v-dh9-IpP!fg3B7sN5& z@CWlJ7#l|s$K3J-n3G~@Lx4EuU%`n`b1>3i_}MxXB?jyZ_V;2=8VL>zMvoxwqL216Wk5S_t6bmopY<{&zQgXk;; zam+z<1_#mESHv*~(HR^>XWWQm4x%$Sh|WY2$Naw<3gVc9=nM{`Gke4_2hkZEL}y`$ zV-BJ-I8>WJ9CHwzon>bVzys(SD0m9E2Fm@ccJ@EVR~8N3-6js^d59kPZh*Nagg!Bd z9;kp5j>9H7ZNuT2dpgXB9?XKiiaYyOh#rK1zQqSeOo$$^?|^xd<*y15J$MM_ zk3}=8QzClM3i?ihlO#kBoI&5HaV;N2528WeFGQu8h#s7RzAE4(3DJXE(AT^`pcv5u z5Ea5fR7iv90f-9WAS&cU^Z-PKa1a#=BYFU$LO6&DLlHdyQ6U^eg-3`UfT$1-qC#Fo z4?t812T>s!q6h!guMj-|Q6U^eg&Bw*fT$1-qQVeF4?t81hw4{|9)PG24&{W19)PIu zEGtw7Za~+ka#}M7X06)H~xp(G3ud!a+1zj_3vr=nJCJK14S_ zGztgNs4t=$AR2{(X!Itc8z35mgJ_f-(G3ud!a+1ji|7W3M&TeDH9>R(M5AZ5Lqs>W z!FnJX4MlVV`h&qB8ns7s14N^6sCJ0x1~eBKM5AMfZh&a?Y_2?_8=Rmobj<%02m)Ov z*#=!F3ED3Dk`E3zTycjf!H@oL`3e3-8Q!Ij=*t3VQ{u1xzYGsrc^bfUl??~cml4qR zx%;&uqAyV2wR*XJL|>r3i|fBy5q%j2Z8Iw|yokOmf;LNV@`&gQnC1wVF1+uG=nIH* z;m@?hDG_~v`c{FHM?_zs55^5sc@{)ppuQjqK0x#ZM8R+n1-l^n0`&z^@F=1$1tTN+0-|6zh=RQkeVG7lAPP=L^abh*)ol@d0dX!IM8P)^eVGJpAPTlc z^aaGZaHwvJ=nK>rM8O@1zWjpL1I0c>U!cBF4vgpvn8tc`U4{mb2D+}64_sF}1==n; z1ft;X{Z)5x{7ewDihz>#Pf#|y)(IKb}MBi+P4nciE^zDM^5VRhMzP}+l1hs+a zTNu$Hs4s}VLlGT<)`M#1hz>z*Ao^BBbO`DTqVEhuhoJSKnmM9FP#cK8brBtc`hw`Y z3eh2GJ*Z}m=n&Kfo#P-n1oZ{VbZdk0b^dp4HrRwgFX4ZVbD(wlKIFQ9)&FNf^^T55 z^a}c+7h%%b91QSJD9%1x7-L!r5xs&M*Z%H(K=cY~BYsZNgy`adCh1+_u*6%f6G+CbD_gXk612BQ8vM6aMWXublXS5O;>`s)zAg4&>S zD@3nAlMv*QE^zC=YyLqS^eY?w^AP$uw8T#re1#qZaeL% zaM887VzRx9u6?)aIlSmvldRamMb}DbRQ4{q#s*ICFS>SIVRLZNwIimGy^F5ZfD`M|BS-VE(brG7X&@uv*kW6{Gxw4AZ)nk z-#&#H{GxxLlmox$A1LL(FZu^cIq-}Afl?0qqJN;21HZVf1En1JMgKr4=WGY`UtI%w z9nd_Ti~fO94*a5jpp*l@=pQss=c0e0lykP>`S08w`W>K@1Hb4WG*9QEf1s2Dzvv$* z<-jlc2hG#D=pQ(jgkSUzoEpH5frS6v-vm4r=;^{QIysA8*$q8U#AO`w_gSGDv?c%7 zeyer;l9QzsE0>&1&G>!EN$(pQmz*?WU%ljHz2L$nCu2bHanVV^>{aL%1^?ruT>ru) zC#^v6anVUxs`Vhgyu+HbP|-VE;$KGSC^cG=15(15|pkkISJ-g zUvd)6t%jR}vHb6zJ8(Gd1}I%!@|3cw^OC3fCMTCXP1HTTd3QBdCJO!n?OP)gW(=K`nN_Ce!1*N)6oAJ7^DC0 z4F!^i7tn0ui`&@L7*O=Nu=v-4!aV2;nv?(gk>fD@lDkBp=f(X#Sv~xcyH-EIb^S^)BxBlN#Wc+|>tx&_#D$zJqKEdOR>6_`k=a0N1Kr-0v%bK?NN;DfW`jpcH$_XJ}sLMV~<__L9$_6nn{MXkO+;pFt`1lFy(Nd&y^LUgkxg zK`Hi<&!7~0$!BO@rY>*|@thr$VlVj&O0k!G2G#0NeuH0k8nr0PFxx05^aKzz5(52m*uv zA^pb$_Bs07pi8USAb?SO7TFJKVx6EF^#0?Yvx z0jq!wzz*O5@D~6>LV=+GFaX#9d?ZvDF@PLE17HB$1h4=&06YKzfCxYmAPZ0gr~)(r zIsij}8Q>+r4&V%M19$@70fGQwfM_H%SOOpwkOjyGlmMy#^?(*Y7oZRD126%Y1uOy9 z0lR=>01`493>|<2AOesBXaP)sI{wuepdjMX5FyIkD z5ugsx1(*V?0nPw-fFB?f5DQ2FWCIETm4F67JD?Zv^9m+x3a|v&0vrQSz#KCiz%>9Z z;3j|_@BknNkOQa!o&!t()__+4Pe33b5|9YU1QY-&0gZr8zyQis*f`)fU;}UjKta6< z!v&B5=mB>D_W{BH8Gs7lIlvTP3vdPa0zv`tfRBLBfJ#6Upc^m@m_o&ZEdzD|Ff=R} z7T_9y4saL10}uts1JnTqfR}(*0B^v1Ks+D=Pzd+}Xa)2E#sLd}Ex-u?104%SgpLiP z0o(@M2Z#b512h4~09(KtKmZ^bkOue+s0OqG`T>)GWxyT)83P-J3!nfn11-)M)PG;e z|9y4)_tggZ{2$!d=U*`e&%d&;Lt9jE&F1cTPor}p^qJxUeV6^@FXeBwlO{G*6A zBNGB<#hKapzu+GI=Zk7xsD+)|1{s*BbGGDE43LZ16}y64)158y&`o2ZaOL0k9_x8N z&qOR){(y}WwD{!fe&~>-pUosY|31!O7H2~**Gkmo{QHwlYl*@obyhjk^WV5x#r4c4 zv}VB-^ZX4gOGR(L-~ZXynoZ!Wga1wDMFL9mRF1W~XK!eJXPuwMJHi_$sZ(cftln-_ zZv98C=FM9MXKyfcA6V#qu+V*Bp$B-iceAD98aD9E?@NE+FWUYpn?E;&eGKyXShYNeIJ zDum5U6fnTRh`fdF_6ptg6}tN?_`9jDBMzJ!_tuo8$Qyesz#hj^NFJ$ZCpFISO$#n1 z0j!o@&=bv}?G|j`X-xW^Dy%4tpXpJQ?dhe%ksh@3YlELKn&U+}V-x=y23UrO zC6m~v`P1D>List(hla%9wLuHtBl<52%C1M>K4^P5wDRm4oj1d%&2qCsQY`0C@dtfn zr>=FLoa+koVR~VcF~af`>{Zu=F1(!*b%+>@$+YjL~CAexW@Z(EhcMp z=TKE~D$QsVMv01&PM;F^0IgX_x~y%84>4 z8;dV0$n1y;v`=&G8TWi+Kb2fk^{XOKp31@vW1QbyR#7MsCwtqlW~GdSf@%tg^fNA-U4QSs}cA_$~KN!6Mk(I*UjT zWOaVSr%9003?2jba>Qz}3Z#bxYe~JlF13rI5{>@0xk)ST;nyM~kVa7j=VC*eaEHe+OeN*s~ zvMgPV!z;AQKTZ2t3;ef%-5q&9ZT=uUiT?35NyeA3@u2`wEWJto%} z$H?-1t)7=LBg?HZ_vB(eKl%Ob{Kv4hN7(4rrBbeXsVqMO8n3#hHDNuwH@xME`tJjg z`a+Q5p0Bax0`nYic^mhOyWbwPZL-#dQ2zU1Fwt@rZY04Ne46a3-v7p?ok^791##U{AzkjmVNWsZ>_0?>ZxrsGzrw_;r(7OBcos0YF}N02bhwbU zTncw}yx6|)`~yS4y@%nOAWw>Xj66RTA;)IF6k;s(LGg_g>G=mo6|?7V5~jEP)dk#F zhO=*0#ou?rjBp~HjO=&MoV&^%EUP&rEjNMmRI}7?s0pIik zhen*BpZl~s7~OGs=ID#BA1r&bLrsRCx#$^i zk1@A1i(m$0E|0f0wXxbQoVoJM~r&PjxVve%+F_Eq z)ls5VfDfR5eY-A#+pH!<9m*IzR?2KKaw+J5^;nge+ZR5aRB~s#-52r8Oi@(82Z+`EAlL*Xg zqvrYjBe}d#mSzc~hHHbeF(Xms zZYq>LK#Rl=r!VYT3CrQnKgq&%cNZUpTy1`q-e}pB1~1cz?Y;%ocA!OrOD*R>>}u5H zPvzHt=Q@L4v~l%x-fL&JUs19{c)EUn)9xK}p>zBdQOtULEld@=rQnsD>{_d2|f zEHJ-!rS0xa)p{}G(Nx~QSU+flzFSp!z zX9l1I2HcYwJKziH$B=@jImuFJ_lsq$C0bU zvgk35F)gmk>wdjo^4?re4ok%!cFGWWdy^KepS?4DY%YpQXnz=;{9{f(NSYW@Eou2g zp(RZEsqt((=tf36ID9_afKacRgh$h6Rw@_l9^mVt>;(t+#;;sQ*T^d)Zjhgu-;k9x zy$Ai`un*|t8;K7S(q43rtIU&pZ)qk(i~q<_s~u$0;BDbn>f(&K1+6!P%Pdz)!iT{^ zd#aHA+7fM|Uz-M*r?_aa7PTpc+|JirldT%su-uZVbM<*aeQP>l@4d7U!*wN^p_r>g zF3vZ~s5oR7gVEr#i%WD&DzTho&Q<+)vu*|FqoU)ov(`Kso{?^sM(X{a#n znQ!SN)J~5=v+-%{Z0Gxejw9n5_mz5HPyVWA@k#0ryvkoC#zF24TAS4KsAk5#R@MgedRVjt?zLi$x@RbJ3Z_?;7cFB??6cPG;U9 zb4QcMyf6>@Jm)v#X}$S7`r~vo-TCUUDF0V4zB_LTyJfazOKRB2U*CQC8XI%{?KTbZ z4^yYS7a<%Ko?G`#x3d1Nzf_<@gP~O;ZY%s-Ro~1O7>EzNuN8xaz=0L{5+xm&mMo*+gL4er18y>lgOuc`Zm&)lXX##rBC%}YVqcE zTo-=_jk9p}uP=|MU0picaCXGP$_Rx!Ud^dVDQB+Uw~EuKUiEvqzZ6sS_|-4V0MCZU z^KgoSXhl};;Ij?r+A*@fw(uWa#|py~p=83l@cQ)RyqiN|`%eDPwV6tTn*3kGeJwV_ z7ciUjpeK~Nf}1}ek~OCgwNLkuN_+gco`XiG>(hWO7dEhdB965CGsfHu zb^}=K$wIM-iroxW+l|GQR8jV^zxR9or12(v-D)jHxgUVS%vqjSFo8taD z2YaMahO({Laa$1gychVT%}LLiyhT}b;~i_>W3b`P$;eI5ZwQ@}k$!YfsvEYh)%@;8 zK<`?N7#5i^Ru8Mz5G?mMWo@8CYx<&=KL~*31vEJfn+F^nUz%+ioLtH6?agc{Cd}AZ z;&ndd#aiyZjiTleSX3=L#Sz&1SrQrM!P0!Z(@XzE@g`oy_7;&E5wYmFn>OEY9J$5; z6>m6fn7G8Z$|>Wu-f0D)xgHkGXSQd#o%nNnSchyxQ=LJHuAz*)!vGB%l6&n)DA^b? ztLfX+>pX;xux~sO_XLs#9W$5BpP~A&}2VYC!{>E^- zK~r?|$ot3sz%wr@q!S+bKS}5?O5OrveOPL(x6L=PAp1<@cxrbKF(zXpsW*3RTB04g zW@5R2Fm#26pl*_SW>GN1-jTgPT18?ijp4bXTq`MzgB!Ryc@(X=BuOtwz9JUn+Y!K`bGKKru1n4`%B-(HF9O{NVmP?VxBqOOV78x~j-+GG| z2Gxn6MbGZT4k5aB%=CgYTam{1=T)PhcuH3_kTsTiv8LzR{M_igS)I+&+#ZP$c-Fj? z9}+w72AdbgZF|npw`1~7Yt5kneKbkp={29^My%QpVtym%gD%9+aSJjai zQxM-6S5rd9c|Q`X?n493nBwlp-)|Owt;+QuB>Sz{m6!Ot+!JJ4rz$k=TkXel4ojX_ zuCAedgwb_X;QYAH?9S=bcJq!ae8K&7fKG}#>84fdoj$QHlmFimrS1KsX=TwoPf z)C+cwm*iMI12_|kXHQf_u>YW!et~m4D|*jICFgy?8>(`o_-hRUPx7W%Tdton2&J7= zC8ICX>>n||<-uZ*P>MVo2?-9$apKQjR~n=?dlNGsf46)U5`uwj)4-OXZLmC&zE{G3 zXD5}0IXr&gcasYVZ-GYiJQN?oG>+fNnHq-^G#Hl?lZg1EGwHOq-@eM-^ap)#BSM6; z&+GQjueajrMp5WJznfc-y=YiJyCff0yO;&;3p1|PfD~$CCh?i6YHVp`hy$}L=LTcx ztQ728#31j_-jhlRvQGgR*T`Q}HGQ^dfqq|6pwufim|R68MlUMfGn1M`nXm+wQ3a<6Qq~Fn5p=PcRy&odQx`#rJH_8ry0fB^*avLM$gw^u959`@Tq0nP(Bko3}epi z%@0KWdKV*riq5Rv6hv**f#37|L%LU*SC}WM{l-+3(N?K@Bi8Rs${VciHd00uQ+@mEUhgBV& zPEo8jcg3k3iu{JeyO%u+%E^xFW`2E2=M|OkAMJcd>bsCNe>@FFf(|Q>bippjeM5Kt zUcQ3r0ok33Z|cF)PPuo~PohFB!(0}sEp?u9P|9k47T@EuPx6s+T`>bYnhYK-M=!BD z&*Hh)J9;6XMqGbHpwu*3sc4K=ZmqR5{4n#$WSl5Ce&^I|qSiwvLH5DOGL8W3aQLo$ zQwUS42zGTcZe40q5w_-@y_WZlHM36aLv6-tF(*NSaD|f9a+YczS{ZhZ#w+Z<^l-Hm z=&CkcO$lql-WM)eB&Go!-%(d3+ww#}z} zLC?k!o<#HInB!}(p%I4t?Ez1YJ~fOfrbHvN9@5Rb=$505q{Q-3YeCu%jVl6Q|JHOq z>A$aH$Q9ToOiD-+xxZu!yCqUG(996>m!#sBZY{xITpXveDF!<6N;^Z3<@AOD9(ZK6 zp?j;wHVt9ME^6hxn7yXi+)&s<-1nGjXo%P3>!yx%RhIaQ>&P;~i-n}^kw^PxI)`bR(D2QdL`TV#%1w8HtW&w3 zwBJa*`F5*8yu<$bUz<@|Xig#zUZ!deNk5(yq~b;G^L?J=XrfeO^nAxDhgeCME}_z! zRs7H$o7Dpo-$*p6fr71Qb*P_eByMwY^!AOG+cxj4xr536ZAM|_BxyfMl~7~y|NdxE zQ!t5|&O}d$SyY+ye)!vmP4Q5cwAp9HA(@3HR1m2$NOHJ&WQaS11FPvZls!U=o7ruC zrznbTgLR&X@*tEI6H#XLy?|`BSl+jZYoU`a_B|isvh=%gjsMNobYrS zQJ!~)+29S{P+9S=-_9d_5?+5T23@Y6;d{AE`5}cX(Z@k`3rQS&n0L7S7U31zgWB0u zTJaeX`YqD!zkdJvbIUWfeTghep^B3d=QcSF21?vIE^d2=VS`lgcUNE(x)Td>XJ^AR+9 zlfowRDQMc7ADNQTr%*kM?9OvdPt1o8Wp+oV%byv1z}{+B@qy(?`-b-K;#8K$VG6O< zJhp4*@jKrk9y-zgu~n`&;kt$Ot~Ac}i@3{=;pRZL`#g4?B4**88#qGM16lFN^47`y zRNo|G!(jLL7xMgt`>y3&KYIZaYI&ItQ)|%BzVoE}f-@C0Q*Mrd>NQ+q;hjgg<2xl1 z{OR;ks5l<%)YPF!+J`@oH*R?A7K&c8l}|tGuT-He!pB@dM}tOsFBO^naXBW|F>U5Y z8AIWg7gBQVURpQrMb6mBTRrf)cebO9iX4=rskg|Erm@># z!rAqGe~)J&`5}+PuE;2@k=s)E_l^y{EiZ}qp^+biH%K%|rL2E1yx{Y?%NV+a2R(tM z-^}_kUnpcYV}*)qMLN>HZ4r6X@)65)NsA>P+P&&44NZnyd^k1+TwsSKCYMHyw1w6mCfkSeEc;WjQK@w&X`}*i-#RIpqF`+Z%DvV}3fO9pQhN z+XVUxR!=c*{!xy#JXD=Yaj&Q6TJ)5vke_(;{=30-CXZ|1#Fc{k#tdiviif-*o510g z#-AO4}#5F71KBQw`4n@jXjcC+Nb^h*3Efl5Qmr-$9`KYgp4 zG!4tf^PTG!4XEU`A7R2$%|-5HwL~}%wz|zO-^su8!u#)r>}LlDVi$FNuGi&WW7q`9 zs%&xl^o5hKRsOV(-&%G96pWr#25tv?^qaB5m`J34ijB``GSArCM33o>QbqqMbup2X zH8!bUK{W^smljsNnzMQ`^x0Yi<-?sjJSY?0<-teoan+42@2ChCVO3@Ze9H1KTkFjq z@oY#hiG}{j_A^I);|xdn7*D<4H*O{JiBmp#m&Kg3o&rN3Y;+?w2n=lJe!=DdV&bkZkj#qG-yYcUj5ddf?kl>Y;XQWc3g#sO0gpB zUGG_kXB|O15&CHG7{&t1!zT%WfppHlRJco~hhL-WguiNqvt$te+rj&szI+F(_mZU* zS~|VPPChN(yCNMp75~Ihs3X=!zT;1QE7++X@0VKyOeA4cS7oVdXJ2(U+Ny+}wJ948#`M1MA86D=s$(qo?z1=qVu*>1N>M1&J{2DDm2uIcm zX=t`mo#{h*8eg7CZ|^j(AGaCwvZ-yZdT^~C&jQ25;`76Js?xxBzsYExG_13 z#b)JdGmnKDf1SW%Zmki$Q^ZRXh5h^t*ne$N&>`$W4~oA~S(%`Bdyjh5GkKI4t>*>l z_@AFW{&PyH_esbh=RUgNU4(6>#psK(f4c7xfwggOk#TL%~iI%ct!q= z#_AV+!!J6d&qiL4qaMqSt5U#OkE^5(Z8=gVFKRQ`qW&t+^}osR?ac2F5(cmQWNA-W z%^92QIFN2K!{~A3TG2v{xLMSZK}*VUeck%(0Ac?4%L5^_I5v$1RQD>n@I`y=)ruDK zT5h7$Roc^LQA}ox8$`VGi&vACWHdL&Y`XAoV?9BO?WOqD>98S?WOtO3%XJ-kVXszl znFMH0)@r?}-IKFN10D?|#*DicVe2v_C+`i&v)0{g)**Wxbe}TTuDM*6?@+m)C!Y3z z(D&J%T=6|p(K$v<^i=3^wBw%D-2JebQ5F;7PAw}@ZhoC)@3FU&&{Q=gO&^2LLU~uu zY&2JKCIMmTA{ zCrLB=9uTD}sFxWKO;Qr)6MlrNskd68oINUiZNxD4DQAEk-ZlPF(hXd1vqmv{nfPxN z(4SLvf{Lxfy!>pUrUU`;HoZR>d7KxiV?5H6 z^sn_*7tsvv!hIPdJ6cgXw_XdDcm&vB3j}H?9{O2)pSt%IZw4-C_K3j6Jg{XXB!gep z#mAbYMf0g){pWmeU?Dbek94W#=6yro0@$K6K>Q^yONQEX|b{FFB z)q}jCsZUU{!5=N1q{v1`GcR^|NYxTw^piDSgyU%&hD`HTspUrJvk3~rcCWt!oZ$bDtbL3tmw!EbG+3q zeT7Pv;>p0^;^M4ce*9zXnjyCn;YRrUm5=yCdRPUmJlTs50pWv1s|V7(qc7Fl4=8nT z%!A9nqto{*Gc$kDhB?ezu*uDcvd4!ydBtD985Crt(^n0MDidLNUyKU8bp$Ipcq=m|Uk$(KFXMnBwi4R*{ zmE;XfOH=<;YjVFHT-yBMYiuh8Rgb!}ef5z0wQO3yXidv6kX*-X330w6zz`pv5ZpBw z9!OLA<2viWt8D9c?brQj%gkGEwC%SeYN!QDdS3CypDHzuoMz3+egO{*uvnXxQXkc&rx`Z1hgacC}s!=e@L zA|q~#vAFjjZl8soV%vq;m){egQ12-&azZo%{hZ)t%hPdd93}R_skW!7$IFEk&Uk#kKH`LQ^kO-2BpGrkkjsZ$GkRsP$4{miFB^PfEHEgF(;1wPT7FOa&5 zzFG9ip1XXaNS;e9YLC%yp@?~T>j|bWwW}C1{jwnS*LS#YQJ%cYomIaE9t&Eix14m3 zC?#`m4rEg`?XkE$4X&kVBJZvE(EQrUn3JLGm8ulhdzDw-sEW(Il{?&dn}#mNi|)w*y-eV_b5WMtjHciI^H_wmG>$_MvgTl4sB zii9WpQcW^sS2?f+t8beu{hN4qi#LoyB!@qBjKb=)&DDmM|4ImMTf~P3AFs`qDCGBS zEo%lneo8+qC?YgNe)wiZ)j1o-t66{;rO6jP@up#y!z+#>0rvEvEAQ{0zu<3V!`>2) zZ!^pI-Z@yX;z_)L-}-2F2DkY`SjFvYZW|96KHuW}w_Fzb^tg+AD4b<5tkNkYcMnc%CIB8-1QlDKYZR76aYcF@cuaE2OE1w_upuSi< z==exiEl4dakhNx}IT@iw$#K&jTY-1&&TSsoMr))g!wOvUu%_#eS)@Mx-EI`kJ#oyP zKKas}mp8be;Qct`cI(vw#b1MGcf$a6VXA=fO`hyDu5e)%@s9*w)n?25j@rc^29l?Z z^%GgPaiZ%UL`oC>=uY>YG2mWr?vPjCd7@#un+w;`x$*9Ol;4A)Np6b>t(%-aXK$ce zQ1Rm`QfU_SG0_)_nERW+WAGhcKU1lYx=j9PmH%Uamc2>cfjM$jIpV6^-prNoMDi9Y>|DniYc74S;Hx%f;jHY zpl!^0<}2J%U6CNR4j2-giMH{+7JX@K@;G_bz5UL89mSs!(TgIfzsqYJbCw-pia;+IGmh2LC906hW9#E<+pB~H5}5d3vvU8S zZfiB%?=+I1HjA>+FaDT8M7~gVbzB|kS6Y=_L;pNR~blD>~g399WYIA2Ib(yJ^YsNnevDQwVCYuLMW4d z^W(@bL>=n&8zC^Y7}7)w5|$O)ux2c`e7f1Tp7d0P#cemAJ=q6T^ui9-@ire%;;Z#u zoBwL01&?P`)u14L!i$V$7BDkU-s6JyZt%-;um60G{@RzCl1}839R~smi|Lq$Kl&cn z7-U;5;Bww9_G@-X=yhQT{v<5Jfx>%#2Q6dKfLOaD2|V6mQgevv78Mo`PU#Cb4=ju8 z>CCxN#6>PjYiYR!p1U}2+vL?eNlo^7xyYICZ%VWJ$iUlQ=l02A5?K^As)*Sg6O-Y! z(DMau8}figt=|>Sc^_ovb@7U?nX`eV zugsWdR`pEg__{{OXWf2BFYw_ghNHuRqqeI|ST(bk73Vkc3hhd&WilQjOQkG++8(`Q zF0*5_D`HE>}JBhluSLUtPQg^OPkNN4f)H4=V@vEgw43&@m=h z<4R*H+G3M*ROIU_1#3}{42K7NSO#=~Pn#si2<=-=I;ADz^=J6Rc1%^&kM)Rz$~C{t zb4&B*q|V4SkkE&cJyW+gO`S_-#d*h2wy{~=6`PGwWodQ1- zOFCS$DZVm-y3v)9jlmV^c|g^%@0xtett^@>Pc+)@XwmG4>ZA64uCMs1lv$ypLJv~{ z!{%;wkI7nzF?afQ(0R7est_5cJiS>(WvfK~5Xe`Q?mD%EeLu4f0#CwAJcAac0{6C#UOCn!@-sFR|RFhZVN%QTg`*YWOCZZc_NQP4t_s zKiTcO!j{704&wJv*7@v@ZY0bd^315B4_hU2R;HQ1BSLm7C63m+#~tV9f^|LC?Mrf`Ahjc7p8v!kAdi%~Z1;s41$6*<#RjyN{6V_!n+9&xB#SeeJpM;O1^^xV$NzApO zJ57^XtBwm%VykfvA#TiBNB=Bl$T6|!e~g1 z`HHW3;>)%L9&Bd+zU^WdR(VhR^QRi6=n9TDITU!DoxFp7U>4gje#nzj3`6xJzWS?z zF;e&0>~G(N(-D2lTFwlz^zQl1e15=3p#MER1YK}A*6x(X#U|j1(_Hmvm7K@0$=-1M zcAtrALF{_e$?RK_Vm-O!ywz&w$N8}PN7-IZ18 z5i~RsAG|CDVJ+r2DO(Kqr!<}J3~IDXMjxBS+{k^{ZTlpN@Os3fc%Lg^3;(<+sGuYC z{pXH5&X?-Y*f=%nu?Y8kw;bh?Q|z;kocv77aYkWxLW&K@lg#4e#X>~B)jQJHmMHGU zZ+R7!dOB}j17Un~)9L+6!a=(C# zTzymQI3j$`80$-{wsY__4t>##YLNV3lf=7gw{1^Yn#3c`v?$_cQji*vC1Ws37zO9)( z5{x5)^7C$?NO*!^m`X%R3lV)=id*5j&qNL#J`OCnuED-H+$fm#SL4T!EwlVMu($o3sH~K&C<1G&Y?dONJZ?&S*1^+p$W^tf)Nj^xv#4=MP4CJ<{*usFL*G|e zO$Fb4(>Y$$d=dtx`Fk6qFn+fd8GWK@PNv6Y{)iogP1L~u@gHT|5^(`j;pGKiVL;J}(e4Q^*(%4U^KC6m>1Iheo z*tJqLE-A63W}?^gs6^&_#49ozpZ&7Z`90KFFpY0-T21Mqja;Qh?kI@8YPywUn`wCW z8VxK!b>diV`B#L83hzmu;O!r@lQi46uH8P^3^mSE1P7FQo5(M{=}-(6N&EHnU8r>k zdre~;i_CK+IBxrv&9Iyfl(Fg0(F)!VySn!Bm_QM|^<6=F4%JqqB&2!t5#jte8fOJ;TS|RdgcJ&^qo<3bdTx zV+j7U?2yckH_VlKdkN!KUMz>mpz7@n*>t)gGAFuTT|TsUy2hC6Iap zWq1nr3hY(5blo2bldmI^-kAy5)6!i^0v(Ym7Pa3NX(*~0T>48Iv!msy4`f*}n1_Pz ze$zVsE5VdMP>8GlmGC&)M3qZI%;TdUTMAx~17W#Kf6!g#R$^8|89bQwxK%}tHp;ND zew6T4AtRfESe8EvnPep>LGhkx#U@l^R?}!E_eo*O9`eLrQRRqhBcOA7FRa00pzWT?HzWJ}e zwGoFjXjE&UySIzIK_c;4T?%Ki{H+oj{TOz0mQZZNPBc@_)XgD}v~kkrdh54HPrtpZeC!(OlsknWVym11I~bo}2A1GgX?0zR3DB z$nlArfGeBOs~-wu4K#N&$oxl9<%XIwSuis=@)gs5Pyfx~wUiNx^I?R5{ybX#UY*{VW_@8sXfAlr( zNA0WZYo00IrJdDE(jl!{gUs6NBZzM%()g|8KUVFLiB{{i*e4{f)z)uGL$-pwS9Guj{R(QZKs@(lR5)?w`Xp%6b1U$sH8jfLXiyrFq*aU4q9q=MC^`JL@X_ zKJ&cRl`Q_E>7-%9+!&#&mVn#5_5W!51}@QJrP;A<+qP}nwr$(CZQHhO+cwV3ne*n} z`~8Kte?YIDtfW)vuByDzRl0nuJ>^3_#1#v~QKS=V|6lyxIg`6tN~pVT4fqA(B5V7c-vEGL5gD+0_)ZK zG+UZlpwqEng&zvmAr6LGY+aZ#S@C*}QF&5|s!c+^$dtS6HxW-2%x0G9op{&TIfDS2 z|HYS75*|VRm`XHc0NKX5t3OgK=@EN8*QrZa8K_~P<$wvfd-y26cp~02g!Md1N_wAx zoW_1Mj9TR73o)_j-iqs*P!gzQt2?WJUewSl^YaJ)ke`$jkk^S zM-=gdGJD%h)_TLX@CEa?vO)dlLk!-Oik2Pb=)PvPOCepGy`5D6#`mb!%Vu;|_S84r zO3|s3>s&!OMDsuyF4UfNeotT0jd&Pu1SXeAjsF2%LdayQJI*DZ@J{+N1;cCF) ze#BNaZ2Wr8-5m3L=1PA=>bp??JAhK!{gpC8Y=)A2=tne>^ZGAtoTzyLU19{eOU)4k zyLV5wl30X{>{$272<+63#3PhR;-s#nLltgU5klb5^F;cGq1~qhS$|i{c?dg>mY^<;MRn z0LFElo|KX-Yl288isCIxrA^r$^bt|Pc1g~k7^f-jr@TyrU(MZQT&bziZioltCV(pT z6Xi(Z-OHPh1|mN~Tv3#bVS*DVyct(nrf=E>Q4MdVtG49fs!Jiy`7aPol>B^fwd41t zey(X^=D#^Uk({(wD~%92#JxV-r|(;c-IS$775F4E(4TUgBOotiqW9FsJY`nLy7qz| zw$dcY4C?(B6Cle!FDJP7Qo*P!3A|KCpd&UvABFiZAYQfKYmuekb=vGV@CD+@b@p() zqif)*Rx?XY57NJHLmuT1owF3!>p0kX=71;}CjEP@JL%^M+!CB_#yOAL-}*PE`QAvd zA3IFExZ14DQJ z%x+DR(I#IO1fr07jIL-G2b`>~%+F+WiMPPmdEH-;S2lFp6XBFd zhfi)Zl|SD%WWhuU+806sCr%-ffXdkHLtde^$Ri|eP+(RR%2q2D(1S+yC}x5rmCcLH z^Y)3la3{Xz3u(7t*Jh0_y6d&fD}<~R_(uv7Z%rB~>j==dc%2gdyFxLErS}uQV?y*V zLH$gkbmg>(>rZMdm_PWtj7Ux)Fe*A7k^$1BAsQKk*E#ex82{3C2BJ4$SlP8isW+x` zrKUooPC#|gRJI~uP%y{}fA^wHV|IrIvjMeXWM7p20%+fQcb%2HfwbK?T(`I84{|xw zk2v22jN{lG_MjgbMxl$fy4M%%+$CmLUpivWE@XvRlko0pRx`ywa&W^A%?JTyhPDhx z9?CvKcQOzy7yx9016gA(OAgbJU5)y_p3;?KsytR)&?`+F#Hww3t&uS6n>l-=0P6u{ z^r+{62dOw_tMR2MSYlvN=bJi=3ZsOfw~`VqSkUyqQKFOl!AkM$$D}VNy1BMW`4P+^ z-v9UbflxBOZwqjVr^p;WG3jz~>-AIR0a#VJIl|Eu(*k&w676-#CgNVg#nL~K&}f^9 z7=z`0^w5qucMk$WyW->xF(sJB!(}U_P%w^X@q{zP612h4j-$p^vEeaq)J;%v}EYMWf2 z42AqF>VXE)=82y6=xqJCDT1(kG_|IP}90N!YYPH{d zb67WXZQB*H-#L>^XJBD)`Phb+Nunp%UAg%qp*@xZ@}muoPRB)zDDJR7RQjWbbW^Kjo-ecutbM}rINLCR zPVA2*Pjv?ce9JhJ^#?`}M@>CXV(G#|41e(Q^*?=!OcdnLPC?q3e|Z6X+p^E%!|d}g z3R~Sc08?KIF&}JQtN^YqW;Y1tQOXQD_F0Nqm%o~9q z&}>L|sVdB#cFt~2tuY_te}4xc@oo4g%Oj>yTYW&Qi6nN_jwhYnNyNN8g$s1+Slevc z5JHqdd;A|t1Ufxh=1q>aQSx{uapX9;q9>B-eBvC4lO$ZrC^r*oH5#kni|xbhp}b__ zbcHUX7zdkZ2kwN`0oAjS18j#5v2qcbs2_RU9mtcCbmS9Rk_@B1lCG_lacl$RSTR5 z^AcJ*sCeDWXr!=gZ^kfYBE zfjFqKlw6*CUBzZQKm2Ff00iCl{MX%xz%4?N-a@O8UZJC+U)w|>W7IC|l_=)x1*21w zgVJKcqIu9-`(RTNa`_G&Wgb+bZFWf?q_Ik}V-7X;2eGT_4(gt~(xK0hBE1W$*)I0peY}87wX7HzWSF7Q@{0z`mwq-KS{s5Ys(g-R8nCVu%t)%5nFuFwC$zEouiOsc({P|3agK6e(Jwz?_5<*g4lLMaXgSz0 zuXVyBe^0rEH%sYNUtEPO1JK@1e#%-kDUx-rea8IVlj!-98hJ@$OKkwZyT@3RKPFBe ze-5X-D%%Pq6zO}ezd{4IzA9RuwII|y*Rj1OJ~#3rb&VQg#LE~}^7KGj#YkfG^#;#r z7tc$!8OKO#^Neg|3CM7MIX&)UqeiwB7LbcNqL{Thj!A~k zW2&NWHef6f=Rl}$s4dImpUn8tVUzuk?Seb`YNZ6pn3sCY7||CR4!C9Z`9qv9K-XJL znolMbH_P>h35<`V`(nP!)$#~;*otP5%3xzzv92@BiN}g}MVCYQheCM}>}r%NOc7gH zDtNNzuUl=#4$ojqB`1RaE(ZWgpd(L`@ur7qcSmR1S~jdlbpBc)ezu@Pc!rZ}t`j~3 z9I5hXRrMmd#kZQ%&ZI>#dx1^GkC2zz=9mTs!KF^Cx&gr2VZt7w%JTk}jYNOo-NdZapcx`|3{#VWh zC_Lr^^$%vbHa`r?$cU^DNfne>%nD9AXr^l}Hbs%%)Q}KgIQbY8z>&Is3R4CheLd)K zUQ`o<6EOb!$Hk^QT|`X7NHUuU5C?ee# zt!G7q493WvOGGiKB6)U^ZDOBvm^91G%gsM%l2SJLwDYelxFZz?E1pZ2EoXEFM^z(J zqYlKvb|1z-FRe5fEy=ZzXM8Y&>Vs|!G#aC^@PmQ1Z5HIkz{RiN1PNgFH^pMXHc(^@ z;Td-c|8sB@Ekg)iln8UvnjXm=PK?#iDN0ovyppBgHu%4G3xFa$0WN_kzUcBm<7k{E zuXmNq&%u@sTof}Uj6lv79ba876^Q$XG%*ffekvh;&Pj4mm^y#XW?f{1#D=ciB7crV z;p#~PFd0U1&!jgLO@yze7Lr3`cnr@TzWR(bsRdn)cmhkL9q&qb-QpD29TeRNd|O_U z&|i!cQ@I~F=Z*-na-3Yh;{Yhle}$=P2SOYJ!0NWnA`thQ&wZwhs=~Njlt;Q z5m|>;@P|PXw`QWEBPw#oNl=5B1*_(w)$&#QB<)!Q$`zKYwBz#Aa))!-MM~=gWw*R{ zik%#~mYn^`K)r1*gBO3ccpcNlA9KzQGQhg;Hq={u&eO^PY;4esiIr1y6~F;qx^H&k zL}IoP+Vi}+ie{d|jq&$RWW3NQ(3`z-$XxW<`d=Kz0A?@S4=u?wHpA*Z9FdDVHL;CX zRPs7NnwiRYBo~vTbdS0HG)=&P$!D<6DdI)QfpL!dC6DjM6h*jVm%de_ZvF3q_b$b7 z_VxBZLs3+65|XlP`o*Q&>f%8rutWaze&9>&e`%Q8Bk> z%uJ1Xhl1h(50nSLxp<(8`v$RaGp#vsnnr`}C+Ys#J~ck9b;HHp)#@+`{p~T|zArVdIA(_`E=s6d(8P;|BWPBg8&rC03o}luAfsuDT;>Z(bEQ z4T$SDEpa5B>~H6sp$(#~fs0&-K*kIaaBpfr*O!1PDH%fqh(u*p_pwPx^&tZE+6_Un zVynz_>;D{c8+<*25IY_)lDvWXEpQ`tOWUz#?jWt?=q4_q1tkrg8A(c^CA3Fs1Cm-6 zQN&c8`1e3S`CG8!`&X9(!-o`Yc{h)pFlK`qiQH2Ann)W#e*wK((*Kg9Z@()bqz9N? z$Z_PR&W3@3{4aCDbBBXP2+C>a^Dd-H+tn*I;qXpJ>B*q{j6EO){uq#U<}=I2GJM@_ z3}(tHe$=}&Fh2$u-iH={XhCmT71O8an|z``L5hrLw&xkd5%4)j%PoxbSig<3v-N5e6bdZX%W%cw z*YnA+g3$?>5{lX9oshtbc-k$Ro&g%g<&^bjv+{CXGZv|-J><-f(|;Z*?`tx;(=lu* zlf|Ric8e>{&a;)RMIdc*=;mJ*0B59ixoWyxOK9Bafc3(!#u4eMd;t)GouWbVS=1%x z)>=)O~BIO)Wc=(E}KML)gxSw(x!TcJFV#TxBqc1Ty z($qxu(kG*nr#^qn9JO*s^cPr>9-`Wv;QI6MPgFVVZ%v8bVpeU>^hI!$>2EaR40o>d zI0t|wtg;uoh38PdO+}of%Q7ZMv9X!(MEYd~plSg}DRjv{#LV9oFG!8y8cudhKqrkI@&C5_p50=Mn!AyEk;A zU+9MTQE!pWX4*G%G!?7KFu3nVHn^;(=H@mU2|j9lDxeGRy(yPgE=QZE;EsI_c2mVU zU{)1F5sYe_7`bB*c3?`QT3Xxn9bSJ%9SDYatnBj~g=5zo&EKw#8Jehk&a!(95JKW$ zatpw4Oy)k3^f2A)lY~$1F(Zbg&)d7&-(oMoc<@(9MB2nk+?bJ|-=P_(^>{8RjLI5u z2a;f-exyU3C7kC7rk9cJBrosVQT;ds>U9`FBr|xzRGS6^X-w6KV3;tr$iQwq*c`>< z08f$?A{-DP1>~+n2D|`?bh)&%_2JplZsExt7E!|zoTxxA zdiLD)*dhmz`n2@Uzj~w+V*uv?;+br9^nu;p1WEjX6JSpk2edGg`QOgxrac<*iFGao z;o9g+R`g+=FIkC?GzzBO)m**seLe%o7L2T90s}{fe!Tq|&%1*y<1fML!xyhCHwl-s z*+UkZ+gWm`<$G1QV}pn*>geM@Jw(a^^wVqand3hQe-I!ZsEOTj%U7eUVQu8#87;Uy z{-L|b7lKp>C&M{Ah=@vdO-6s)IC3}prm2f$f`@DtKu?4l_*j0*;5a(VpV}A_kwyO9 z&Z3~UC!w?_N{d3LQJsk4NW*Yu*B@{k2Uv^8@G*x zKjEimgm3~%!=--y!#+9#lXm#Y6XZP(QAUj%GUSA78KZBMMkE%9zbEW-wLrG}1cnR( zS;0W&f1#>p|6u0RwyefH04~_J<4n5VjzaJig*Lp$Dq9uFuD~k+SEQ`1m+zoH7vf8# z<&R!OqRn*b`#6`n-&#d8JBBGQu5n{ofI7l0XMY$-{XnaN5{_YOr7!W+-Kb;p)j(Qa zT`C~xfEIt90^k+lCm@d|LIF-`zQtdU2t=GpY%riM{x|qM4xk6BR?os?85)CYQ0H9(m61u0WU-b?gZ~^g6_W_=1vSqB=W2Kgan24FsZL&f&iS_@pi~t;;lr-89Q-OmV zVSAa~$uW=GvFCipS;?~8r0=SH-Fk;py*&vi&S{u9!=12@w3UyJu8-Y7=*f*d*}G`0 z>7jXTA?lS+k-Q{^viPhMVym$bM|VJH7w;N!Qk(hN_K{oxn^)uBREv4v$)wOyYd)9j zma@K{Vxy2+@2(;mSpc+wDvo#MO&CGSm%vhGs;gXJf8?Jik+n!hD0Pw+fRf=Y0p)Yf zf+YMh5B4D8Z8AM-#H!!}-baxrZEZD;yUT+(krj4jyO=iw?X-7J&G%gCceIT|2+xU- z{!S1py)Chtj>9|p)GfcWSt*_4ne6*%WP-+LU8Ft0h&lDC4wRIvC|{k9wvE$lS0&K| z>QBCG(uy~*U^U;d7~!>mBWRAhS>W;tQx zJ|73~qNA4-(jEu)(GLOFCRE{W%bVzL4l+@rKBX<(&f5wCuhKejuUay6Wv3Lz01r1g zpwwnl5ro>8FQ;v^dReqAks2#FcrsHsMC9B5kdJ>q!oR;lgGaBw`R#eI{fi6#6k51) z(Gr)XIZD=EPWS~u?sha`1bInl)s0T$3Q5p9w`2@8lrW>Ynb4vx|uY0(kG_J z@1Z#Mk=2)g{Z%4!nViuSR(&N=WG3o24lx<8PIxf_0FBB<#K}e>94=YV3*`<#N|yfz?ZUWW)GMyBG`9RlIb zG*^L0rwn5Sb!=5{3yz;974OHjO^Va<@v{)#Tx{RcuqLI|Cqz$qpOL4aMfZ{qWv71V zMQI1F?CPkjjVUx=pDLay7R3&n6@}oqEE(13RSpb_J0<$!0+Fl3Fox;F^mGycz$6r; z3}6f{+}xt-CWRrdmA{iz`sqyqCedHqg(;nA`=X4az7WlSw!6{Jh3agv@j(`zArFvx zCHB3A?l|n>JJ_zHG^Q&SGb^av==rNIyQe~&8)vh_6}N_+Nswy!i1mf!r7fwpSU#7INvOvi2xhA*( zEIN;3)^yqA8CS%R0?|5}bC2|BArYc-4kc#?DA;mdDa$<9+TnLRa`jpV4E6qR6ZCf; z7ZvuqWa&gajdx4RtBHsb4kq|bugq0uBG>J*Te1`j6JpK7csUo=oB_@8kds(OLwWGo z&_ot<9D3u+nR8U%Y{qh;*O`fF59LeGPs2-9Rxs9AT6jx3-otnYxOG_tI~4$rk^*Vw z2MRYnER{{#)#lQDxtaH@X3Da!*dNYXpJO@YTlE;a79Se^;-0#}hW{bOVgAP`HQBWm zFr3^;QNp;u0B3CjD*di4Sy5@B&16V>^bcU3KnlvW+>=iB@}TdJRIl3=K7DsABqNLz z(Uy5nI9Kd>b;w&MGj{BWL~uCp6Uo7dh8BK-iHuI&Z5bjpMVJWoC|^^y3c5{ag@b@Y z(}Z=+9r?L-aGb-1SwDGy`w`NfX1caV0c_hIAhwof2VtA&?)!PeB?jEhno@V0xNb#k ztshvG6=Yv5#mA64aBm5W)Bjilzq*WVKAL;*zbV3-uZ`t)U`BUMoc+15%_3Y~7%FGb z1=cPPqe}o-dT(fa;m{nj=gGXCuqlISt>Y5v;Bx~$={MWH2nEjCYjWW4l4-254Oq#{%VS#+)=o$V$G zMW5tz^q?QP;2ooJansBzgXMO=&0=DyU8q9FN>(O~*#~|EPbq2k`vYWU1gowBvsp=NnLBRr-rfJJI{*6P z;({WM3pWyKYOn#N$bGGPMv9e537)Yp0x6Umi{beT_V8w;&~Qfmw!2*{HM`i0x42q9 zHxnB^;Ky9(kfY|YdbU(*KcAy^mdRYkYTS2F@~?$5eiMeUY$j(eYy@iP+lwy5?6R_< z4a~4~Oa`5!fy;WO+VmFXyi*uB=4s4&SEB+KEPOi#SUb@Nqyo84B-Nu5QkE2+Qo$_0 zHa||e2fsBy#Eib9u&v$AIr3(h%Y{Y9m!WHBNix$EKPtA_Vwubjgx1v=4t>U)KFyQ7XZO@kf;tBrK953oA47lQ5>!5R8jckt+@oUs8rp@x|% zrbh*~zG}8^%Og$LsS(ahE7^VkdxFqlfv|1~;4(3181tcKg%{d3EQl97dqtdj^%jg} zYcQC=4wyaoak-^{UPe(*P!_D!Oaq5iRIMI#fBXQ&?bX-6r92yxkcJt5io(7W%N(pw znb#17F6wPvby>87X3I`9u}Rc`B+&g%zYVkn_)SsHT;*Ze8xD4TIVB*Z?CrQmpfv&} z^^XtNshaf-OVB1d!Rn7JV&+tvr3+|`8Qg7n=H z^1yntYnprAe6}#8Qga|LB(dBNE{eB5ieDZk^57Omx^NAmWB4#?R#%^VvMB-9D(lB! z|Ku0b2&4)GEBO=T|32fPF6I0j;6oMAHc~IP!L3a;O|R1W#Izj1XnQppMubaXA5Q0Jv1rGyKFD%&!2wk$s+;forfyAEeU`Emcq4uF5#1 z9n6aGL0#Dah#cnDC&;6VpMy%JnBwcW!Q&y#D9FPTR@5jgOTG)(si=>^?hebzkVP~- zin=5QjdG&SLFJ6Rt#bodD)CY=2@KVe2ZFkO3Wq?ik=>#Xr`tGQkk6)uCzq$OFF~_% zx60L9NHYZX%#bb zzK!t??wbI<`$_5X^`#4ODW)grYQ17)S;MUd;8HSHrn8Tz&2WxZ9L~eqU0_4zs#l2D zqxNgh&p8n+DXb-@7HqBKtiTBoNl}$6%Ma!61VWJ9hVb62fEEysn36)I-$RRe%egz% zuUX&K9lylLcKX3GC(amIJQd0L2!D!P=cv4pCUn}Q@p>MBaFD*3Nld|E;&2Xw7?)&o zKY_l~^qbm0QcI27@wJhN$%6Dl-1QGc_eT^r>{U5Jrz077uJ9(*Pg}0R)p_v{eDnUh zqqx5oz+R2O`G=+pL}k)8auo#N@KC~~1u6q)!eS>Y<176;*Z|e(cv2JCualD&k0E9s zs2p~98)cNxWaPug&2bS5{L&7LjH(rh*)rp?Y%7~d9f~tLMF5cWl*f_bIpT^HF~K;t zN2f8$*Q%N>nd#Di)ab<+On&|(ng)7zz^$*P>rFg6bt0NNP9qQD&scbDvUNHSj`2?bXGg;^FDGPsI6MzI>e`-sAipv^Mtpq z#5CIA>~3ffOp7)PQW-MuZ1+5U#Y%qKeibO3TZVS9chkw`$ZT)GlCnNjS`kK<*I@tJ z`0Bb5S`Cu%`6tKRK2owK{IEx%?K%gEP?Qb6~aep#Xp7ppMv4AZxF-hmk&8Xtk zGJgU{%Ys%^N07qsUN2O1;eR8AY<9~n|AYtGsCs4@Yx4CN`L=YTU0Le~Y~)0^QOyqN zEVscv$^8jSA7i9y>*&nwwW58>$h#}Hh5hX--;ICy3HS7NYZnULpvqQt)xo<)_6FGq z*q>0Bk!S;Y`3?PGErC8!EAzEPM`lk?I~1V{)YAsZ8b>tA5k|#=I827lW%Jz!l78+k zpTSFdBWRk6bc#YK)QOa9)Nrlm^{eWFl!@0-sk0G6=l~d(t|PGUrGc^hR*AhDf}FR> zfu)=qZdAF$T0d3eVXb91mZ;klhoiBX=Co)X8f&hUeN787Oyy<_r8@T@bpH9{9X4Z) zSo)mu_qiE;{pd6@3;~L-pm)@$n?h{|)Zz5F8cE7XF=ZcPcD=NVd9Uz&oi|cs)RRb9KNx`~G-(f*kf9TZfHchB&~6*co;OiH3w*Wllki$4c*pf2I9E4I=4jw8 zzDAI+v*5Zhij{GZtduT1BfE!Swfwr>X1zc6H1Unl@WW&U#a;*CK4jNk{w5dsvXn%-nsc*OG&0vTgJkH}Fn;9z*GSpC+id|LevyftugPk6MK6?KH%Cn)|2{ed!Njx9uhb7$h36)=ubdb|>F10CCNVqnnmjE)chRs;zw^6z z%=|@j6riPT{X_LO*!puuT{-W)is!A?% zyK;i5hqYrGA`Qz-;fbAE#SQL3TeYonuOf$1wpKP&W-rO_d1XP>XxQcmj`-!zldf6{5%ZH5ccz4h{}y~(~Jk>e!qDwFGoRC ziq*NS{g8NHdP{Kf zvlgjfEjP%BC1no%4nqti036g_A&cU1-STjNPVFw!<_Du)gddfrvTjHXAw6-K;f^kx z6f+mw`j-5%K(=30B^UTYY-iM4I4w9>#tV%h`chqRTF?}XhF1e2GwLXPs+IashCzX) z(7z(`FQR;P-~R~Q1*axCtn}zLRxZTP$QKe=K8kY8W)W7%tv)<~(JWz=61=dt@fJy! z)q8;v=>;fV;}S2lI!(rtVDXWLZecX!^)InTcptNrQFhZ4{3(9x(jsrd>?2k30(d?? z(ddsk!VEgy6IDbkerV%OBH1=CxPdx})}St0FawNmD6|Aa%L1LrPZ_IlP?O0Tq614e zN=s_R`A)%UvA^6{znj#tK&R#DIsx%Uc19HeWEjXh8u<&MEU^<8`84nTfq#WzcHadW zh1{Q~8JnHvz6tuO?58Z3je1w)ohZG zO^B)G+&+we3|}P6&!|d!30RT|%`)^TB~Pj;2R@t96!;x7@QUb$kl(Q=Fqn~v{QVH5 z8fs})bd_53Zk%x$+UusX5r5qsb|L+Fw4^C=T%tMaPle(5mq$H3lk}!W6ZGfn1|6BSAoYQU&e~JY>Qp%t^Ps^{-A{O;=0Hr*%xA(k#Zs%irHXZ6m3?t)%BnpcPLkzxhkRiC=L8u zlhj=-*@;=H^b;WAQlZSSjsSQ|FHCVVO3;%lJ0tTaU36>cI@?iO^J)iLkJJSOmW7+2 zbD{iQ8&6f30HoWwKW`XZV_esF9#0twY6Hc_rRd>XH zm9>w<#YIL6!&tEXhH;l_xmU^C!H@dB)ky9lzkC%!ew4FFg-B81{2(41b7Y`4?ksL_btyIYexv8P;M;rQjYm=>w&@$Uxt@jLAWN$9K!-+7{zO~ zctf+h`3uy5G`W%bY4LvjX?b%3+Rerd_4B|yF=l5Y@0af$FGTN;tLRxy`T;v{Q;DpA z0bT8aat(p18}RSpm>6QM!jJcTS6N*SQ7nWKF;m;qyq!`8+ZV+gLfGzx#=O)~UGB^d*pJwk$%>f?(gN9oLV*T2`&;=3os3V56tlj2XeWfFQ($A6!9noi}vu!@%kT&YDx}&}42~6Ak8r)@m`W;!m zP{!+STkzrRBUNMYiN*43s#A1So_^` zJXc;(#Xp)ua`aHuXlg1*c2`slB{5z^{gfhTY8^PrM!Bi zKFdw{srAo3!bYo74dP9TxBduaflqcX>cRY6BJAqs+VLi9><`+2kZA?$J}9RWE&Q+C zc|Ah)np`u>vg4*_t?C@eGBAdRiZK8ub%n>`0q-_ir5(IrOftn@vIwNv-$W{+trn|}R zxJywcTM8KeKm4IYTD(wPP4R6^L4 zRi|_3X?Vw44hK{aQE5T8eoQmIJ8g79g_FwW-oet;xd+H$XwW2@^kE0}KjopO9J&Y= z_Udio%2umlKA9^F?W!jwphRsYVsCw}oUK-*t0mPfAf;A=aAB6OmE)771$~BPiF5#6 zW~{dV$j385Fo8>JhL?jo@-3hER$-wX<*QUU+W9W*+r(Z24+a}r^Zmwx?d-Do3M0Rt zuD{Hz>f8pe~K8I|RL@H{kXk}k8J~ir5 z4u>48ItC4+7S9|p*@}uffQXFFPg$gteZG#)esL%;T%DK{9$w4n7)kl03-eLU2?w)- zJ?1{!(s3e!vx-nXqcez&UPRD<5b*Q8#QX!R76NaQki)J?Kgv&^OhnPoWli!uOX|q% zZv3bh>QmGiaf-371l$R^ToDC_eE;2c0E$gByg=9)CRms4+RPwd&ly9wmjvlfb8rodbWChn2004Y$I`_RBzp8z zzI@i|`^4@_bw`tdgtRHxd{;7h)JJ~qW^S+vUt+Qr3CqsKIHT#zOf0K?2)+8u=42_5 zj@z#^H9|h%z;=#AIp=w6LUS((iJYR}WmQK>s$|^0}e8viq2iNxk`XiT{a^wJYw1B(|4!7JAe%g_%^>iFe6fg0>qgIn@B2{W6m8Ju>L+18T zpM#b_8|A<54!?SS1q?D-%`g|0Gq5!zT;P1c%s56oVn9hH(9D=Sa#xjA^+tI$R+xl~EWn#Y> z_a-jX6<3GwUcPP){BTDdbSyC}=PGL~kamm5gGZ;F133pQ-0xg25JeP0GCNSxiWr*a z8xmoiq;AZR4>s|?u@G84P73^SmE%}yO>qcN6R{aYI`JA8uH^F=1&yn3JWcCKFJ%Mc|&-c`!`C)^)Z zBAOee(~*`NQ-p4)`~&>`8f)gNoII}N6h8?It;pselvg$WNQH@#o4~8ZX+yu7XtL2w zPe5EX2)!~ue~|rXpaJ@2cyutE(I|oJR_BQwQ!q+Yh_Htw?#jguyHVD*R?hcyK91`F z6)2Nb4RL-PB+6Q4ps`|CF>XWxzutt32{!+rCGW_nG^Ez6RbW&@b1uz9vX)zC)z0fO zW<>40=YAiMvrqH|)5FwU(tnU{p5S~LtPs$cTea46&TNU(sj&T2>e@|0{6#jIfZxHy zbQvditABJw03x4E{Ky0PF|HXzp#?p`8#d%fc)`8esy$xsd0tTi7$di8NQ4!YBkXc!i0Db4J)g&4yVB!S7VB-Dg1(m3F>I;|B~Di17XGf* z#|yXk)XP8!k>EvFOs85KmEoajmO@X?Se`xJtJQ7S^{GIp>)TMqcKKk`l$B8<{pxF< z4Je2C)VRDZbrCJsKOd!UKA?OZO$HgP{?Kp6)P{&i-HJmdHEL{Is2@??2DIV|)idxu$lZ(lOId@01jL;uA5p&@PDD*qey_fp8^Xe9=I-8?Nq zxq=6evSef{OC`fJ)}G|G#DzTIrlH`39p^O2{7obiS z8*S07Ycf6vnW^*@n9rE=s&d<4k{XQP+9tFbr`2tR zob=K8KVB}lnOKgzTl~wBBT#n;=oV@&6ySGtOI3Lx$S1ipIe-0(56lq@M|s663#t|4 zH@d@|QIhxkm7mnBYyTerYe1C0KI=~RG=W(Iy+z5d2)+MPcv$&3%!j5FR0OpS!Bp7L z66Fvfz8;vdDC$ovuI&~=Otno>VFO629LMIsHMa7KXCWU0F>R@qYEfI{m~k`y+8 zr*4H{H1w~~%AehB64cGgWK@hc z!AY_z=|Iqwn3|GAx5C%Wx8^J}7jljRdwoQtpMjo$B9A*eBT$|_oLmZc@VH}g+*Zmm z!ziXKIU8gCISFBdPPlCtFTt`9NB)frj>3?w6Llm(>1QZV+Mr&ITB|Q^+xUvUV6w~< z$DB|Z@jTft9AG=d>E_jmnKUo?a#p;`o{EdKZy+xL)bH_Nwdg-*z&(eaoKA9|9U1ot zA?w<;^CG(GSxpApzsY{^H|1TBJnpVpm5QS*4(ZoG>m2mRnbSQXb2+SCCyWvlGL_C6 zYqD8(Wd@JcL(FJT&sUR`i}k-DlXv8TW1q44fDPNkZ4tYi;w~{&wImt*mAqh*#P|WCp?jq z2C3xCBCe$rXE3B1%)H5lUp`L10wR}$8CN=dL)_rux)aM|i}j#&S4boOMietJrev=c{QU((Lq#qeow5x$H=;_n$fEPvMmf0>cS8JW>kz57je7brr-=TwHx!{~3he z(rDk7N!wkGf18%B=}xjO;?EnBI*r%m{wC(kwnwvOTAQo}O-fx?i{Z=k0T(uCq~-?- z0oo=_2o3m$VX``QDuw5>!;}n(_2frFVkd~2>(wcc5nTXLBNcFtfb=C%oM%PhZR6=F zkie}1_`I~mR4DM1bWIv|SL|8vyzgVjlptboRkzXmKg1Q~xecaD;ix>tWhr;mfMaM! zfeKW7STO$Z!iNRJJm6RboICofzir`k(C9ToTjY2!0+V0byHm zH!L8ri^bAbvJ-iU0vzUuCs5t3(ZAM>q6C~yHW=ZHLLp*@%8JBlDp>jt$PvO-e zFfNvyV1qgiu1#M+4ooi-3Xau?W{69MG;F2>(kI$#`m#&V(GEVYL0ptX&%m@$!**6g zW8!5BT>0zkRr{3uC{@3}8Z{p@HB1-G;IjHPaI2F3{3D=ib!<+o=tg|x6bmAl*DApJ z&l}c2B2d0fOsa$uMzx*-@Hm%{+dbnhozNqXh<>PFI0b^juF2D}$0Yq^)`d-|8oHhC zb`cK(NC!Kid5cHPLl`Lw-_R~)?D?w}65YwdxCcknZrtFX3#WxPoe~S0lIqkf^T12> zoO?~sj-+{#0OBFN9Q|i)GA34g0QK_+031g|WRoTG@{H9qoNFQs)fXNWDsj)#157YS z*vfTfrol;7KoIT4O%zR$IfmhCA)^h@UD6x@Pbs>SFmiQ-Rl67@weB+POo+bA(hw87 z3Ok+$8g8FlKIh>CvrrEh4Z7G?9FtzoK9Aiez}0wU?WNh}X-o{kd@l1VWQUz3zxWU9 zv(&OXL2^4q-<_&N%ATa8s&#sV^5SwM2khL>ov1k4v{HT%Rjv*lC5>}=Uq6aaW=hPAvb(!zfBL4hVhim zue$1Da?EpWX^EIiXMxE+dS7MxxQF4B1BK>bM)}?_9qdn~Y@!Jcbk;-{nhgOnhk}qM z(X~^bWZ}?VY;3o<-16#`Xzd7HWM z;z~JS>DU~0_%S|;xD+!2z&c>2x3YPUv{7wcnS{Pj)g~eDV0@QU%`8j^uQ|brKH0@f zbEtprI}F5d`2mOm1-AJSF^^EIJaDN-yH)oA|NsRkqIU#7=eq@{e;@mPTY zE%gBnh*?3AW*T`D{w0kALVbO+w85eHQoTI@8!rB0$`c$LYzCzKCaJJ+0KQPhwxAM~p8s_9y1qmv)0@}*zoH1V(! zMCbZ-l#;fV&iaa}0I=?y2PN>UVKb8HR=9F)2jPJ=-8<2Oe_xNmvisr9` zaN%&c7gx>9mBqpGy`&9oDRQ@yzY9HTJvVW3PyhmuRY@q??VP(=2pO4Fsv@b}VH z3^Vnf7Zn7FMYRxPHYZ0DjUB|a%N#&seHeez8+r`HpNSPdr8X6#u_^=+TbQe4j@5yP zc5&^cny#C;Z|f|d5@hJxpD>}0CSbt4NGBSUPx6aA>#q5?fO9uCceWNQak!G5Sk!hF zrluM^Jr_ufak`%liPu4Mvl$rZ*sv7kVUbz4`?bJ8X4qYejH%;y z*@>7rtl{6-b~PCxrBayAs~1ao$qVp0Y?POy0mrj=6GLc=GhTMm)g~!B0{?VG5ZL5_ zmV50d=r3i^2m1dI|L}cmWaaExIW&*ykSZHW=5o)NzVdtNAaph3?L?e4b*4QUaJ03o z7$I*0^OUeij_}ZkAiqQ^^nYLJ9)SEB~l!+|C%9oxUtMmzK)MSSpR5tCv4=nd4b&Pln z`Xd7I&4B)nJlx+PR;Hvr8pbm0jz`=p&C=}|p78^K!nC!@29F0l2f6ietGM(G%1jQ>HoW2FY4=Tu(v&(>d0`0hOsu13O0JgqV7&P5cNAk%7eFU_!i9){ zRI%TmyOYQx96{i=UC0sv<`TRk@kj9on4mk!F&kKT1u$aytxn7emU>9+IM^a&t7FzA zFHF=Z_izDSJn*$*^;@J9ENS&e{2M@*3~b{|*`nYBBA|@q(>^W&T#r{GjF2k!poZ4P zxa_A_BWg@^g9-)vcY@X7wdQ7pVNHX2sk**&pN=(iw(z2mZFNHBe*jdT>Qrd*uqUT5 zfLqx?VjqBy+4@CW+qY(kh8yjK+=1Ycuq)cZdFNb6et=9Lsuhvffb}fH7*^SVt7+&j?6Ui}83~`Lb})Zbry6{U?kFD|woaBXl zEt@*e4!c6Nk#-+-(MYq%PTv#ZOh9R*w(|P-!AeCF6|B~tm<_lNvAwAfSFnT=deieL7M?ghe(SlrSW|7&qw(3b}90kr5p+(WS;c$!zPNYI> zz$=0C<@@MA8ro4*pt+hel9ZU@UqIK8?QwL2A#dx^C-qles@4bpk`Ou^4?WG!NxXo+ z)xqT?@k4XyR8SK)hW$h7wzjO0GYr8yUP9M4*RUb}`1p$uFbr<+i(5QxucOYSO8TiQ z?(T^tz|r^2o4ycd2RO5y@zcGt)Qkkm1~QnN;+Cn(nIGUL1E#)Tn5X0BN3aa7R3PlS zL?`RRuYFC`2Y`*Ojq}AOi>e|6mG;lKZ`zp%Rv5FBca36E45gis&Dq+U(5WuNSh=>7 z=U#x9-edk>3BDyTG}BU^?}}nnZAy&2@La^EEs%7mgW}X4<-w$XW`!?r)DZG-n9ON# zenp}*rk!V}j6WdcPF#BPM^Diy%-e?P5L#SnN@ek=!EP^1A${D&jC(KU6|w_zsoRt& zyjPoP>+#$>g%^Yx2)_!F=2GxRtg#;Sp{v+TYh7tqB=yZ|T}6ZuE(#M0N?yF{G8VGRwjp6C)BD3j8)%5q!!@ZGM-9lpreLV2PHD8)vT&WPSx z5aYP2L=%mzyH)C_4wU%O8*7IKO&Jc)o-3i$Pc`A7w0!c-Ww{uR&vY6!cQ-gebm6&Z zKg`$fQf{_@h-Q;tpc!t)&ErWjWTZFIq#D2?QmqgK28@_0Cqe}XW<^DJ`(Ps zt^#j^76dqL`>r0>_T-b1aRCT?_OP~d7f`fW8f9&cuhCMEv9}WeZp!OuNc3C@h*@RJ zArb2lT81r6qfhf@%<)URs{e60CCkS*pG2O%9cJN->ym*aQGy-)*l&58y?U!ld;U|UwM$k?h(H|L z^U_J|`ePCU7G+|rZ0R7`yGzFs{F`$g|Eo&@g?59#!5V5Zaj_7<6NOsz_6~P$_r5 zY7NJI2*6AV4qrvkm4W-n<#G*ZazqEMCed!oIHR^Es)x_loYxv-rqaOQ%8P@-s`>S> zijt&bWXjZ`*E^<{(gjqo6^=iTMkLbr?VW1Xod$Ca{c34{b}da77>@X;Tf&NKMN+bw zY_D}}v|eE)M_3KX?vFw^dyq_VBDfXYkur1ensRQj?3cZ&AE0R2909HztX%}-7=_wV z-@h7$v^?&;6q`6k&h!6Ck1ZU6uP0I4#f zeA9OAt_?g#<6vj z|HRu`$-~15d=>_dH^o+dLVSPQZAq*6z()ECE!5U8eSS~E!74EJwaq!?RqUWBj~+ms z{LJuTZ5STl>+u|yPiZpNKV;p>Dk8C8s0#(b^!Ef~#KsvV$L$!Y^SzZe8Wn#o2LS;T zy6lH3f7)5O$;}B&xa-Gkh9B@9RET>omW{6RMQ)~|C!$}y+4Z*VQ4(T8kbwWk!V7MF zWsX#Y>{$~DWlgL?9&C+t*AfT`o1j6eqil#tJTyD|D3TLst6KeV3&zmUQ7Z0rlF6`D zR%5|@k*j=c&{5e&bQ=6O*uYhy&ZSV^7$inN;I(5K9}f^ppoBQnwCO?FVwzH`;9dN# zsl)1f-VR?ko4~6Wcd@5(Xgl_;J<|CrCHGw(61%kDI@|huxA+ z1=o*TgRXiRRIgwaHMp2$aOj>OT@ZWf2mk;803q;uoxnl>dGiFSN_8@;S1E7N^&RnY z9UnsYtK6V8qjq5q%**%qd_a7ER?^745hjTXz$EGYp*=Qbhp`XnBc)Sb zR%w_}uc-UFnYoML}~_FG}zV zFE5YqOGAw_TX=vN#s&iL5K}m_)O(wcsI(333ONbCxjL0V0PqD_{d^sJmpoB{in!4U zBBj-VrXXE4O778+f5(;04QCpU7$6CgazpCTmOCBN`KQ0Z4%=XbQMTLe#C|9ctXSp{Wu9-=nn&?$oRJg%on;La?@gt7xxm91GUg-!+SSnAV@TJO(ML;);m`Q$(vs^SqHag8=#irWCg3WR6j7&%6Zn~G( zk-guVNfX!^fALrxM38}WfghIu9fwel%KE{!2tvkXreYxb0opXaT}KG}w5-6XzI3;LF^ZAekSc5^|AHr5k4G1yrEB#}!SX z0b8qf>xuRJPncl1000000NFdbJs^gNbl>Ts0jI($Yu3ves(zZ<{?$ujaSUOyNP?#I zcx=&^OwVCicPI3E@-<&w?cajkd!T>bInhCUn8T91BjA=}{bb>bB5se|ejfrxR=>GO zNgmM(lZ!NZe!i5tNxcqG;OU%vW7-^8VvKU!oGL-@uuZnvw|_Fx};d`a7D zF|(sKeU73pZ~iwCpR{qkOsS<52=8ikm!D%xCpDa3Jh^<~aBP28%A4X>-jbP+G4H7D zFDjej{|x7uk=A4IZ^Zi+@#(r7{?1;$+6&V{6iQ9x4(in@1*^!IDi_^{T_w-2B8_ZtSq?r%q# zd{6`byiVs!X#ig`mI);O0(R5bpbfq8?hBEIn3bMAZKHkujt;2Tv}8b-FG4Wh_{Le| zPORHl^ZX{*DyE&~h|TeuaWBjFOaynbsR@!sERR2*rJzQfc<^KoSV9GLBX~2SqwI`n zH0tlGm*PHMYSFw2wK#ge3jjnRJ}eo$EtwxKfFUOye_vbGYc1ruU_6%zh=zFh>&k^8 zA0S!Bvt8UP^T6Tf(SXi1oWh$AM_7A!#0|j5`8@~_J-NMCp^NpZo=sK^zx`7XR@QX6 z)@u(iZPnxs000000MS!Oh14!5*IP}fJ|_Y)`-`7Tm%MSt!`mt$ZK|sK3P%N5Kj;Z9 zBII4XeGhMGlVE3O!I1}w0VF%Vb}whXO0UhJPhsc(phYjtL=PlwmeVu$^G&k5bSw zk{|W;0+Q-!1kb%GS2Hx`ZV%B;-0N|X)HG*|L2lkL&3>~MfIKHwXyk1~gAEA?%8kA( z6D}oP4dSJqb?wVz1TY#hyf{~t7t#JnYaJoJh-P1UlI4AOt*(%7I0@0eZM1Q$3XSCU zqVN$4t%LRfYg;&~vx&wM2Rla;#BUmBR~T{c9gj`r&*Zvxqz8f`tAjd2BT#@Tsc)n) zQetjEO2pOo3!3_Suwcs9Mj|9LYXb*Lpk{h?$C1|K7!Uxu!CJxeMHH~r{q{b-j~Q@5 zZ!j4iO6S1kppM!_$4f-$^dE-xRE^}>8C;6K8L0~-Y%a2hT(x4r2oaNE;$7&N>}j`e z;3PR=hRRGZ2f&*8i}W=6VsP|4MZWm1x**6`=9TX;sP3i`51S%$*!zTx{U$@__*%uQ zGq+Ac$7QGR{unT*7t+ge>{N_iN9p*=jEEFOV{Y-lDcgqBQtb{jsG(N0000000{=Z&qdKKt`2=1wFYf42)^L?r-Lk>@U-3ow#A$_8Ffvi zDsKodl029c`y|(R_B4Dc`FmIY>**u2Rz@rwC5CEpGu6)N>}RswPT$LQjE^~?|72|T zK9<`==C#VP8>P+sIj3u%ripW?B1v!Tfc!l?&d<@jL#uHp9}aFum;e{7R2^hjiuf|b ze1g5`%&n`}{P^hQmSRB9`z?20!*IzqlND*4pVgy6 zliUTn5%PBnmiT*mjXPmWEAOr%3^W<>4&r@Ke8gECve;%gpXQ74n~u6~n#64lJOMZl z@_)&HtC8*#DMZa7fRWPnmu76@Xb4H9Ui|=Bj>SvQV(vfbDY$d?Y*z z`2wt97Cuk*OyVX=8vj&NWshP~NVDuHnktkX4(Y-M11T@7C20{Fw63N8?9H5 z{~cc~Xx_Y7$i{S)Z+z=XoUR`&LE#tx000000D&;4jeOd!sxi0C4mX3Yo=Ss68~VqV zHqpPmW^wjNG}Vd6qx8NezKkK}=yMINAXQZa?lH1|VCQVU2N_xF4?S_osciyf4{|n_h%mte07ZGet5x6QHRaB3=WzTm7UMbAc{q53rU&(E&@mHOCzq*#A&tkd^?J%!_ zp0d-o@m6S@#0)ZKN=)G{9lEu)4f_oU0z1s)_(0RywTR1-t{}Do(Q(RAnLpRVyBodt zpkw+KVZ%l3zEE{;u1JfjcdB30-SJvO|84?V1Tw0`NcfldW7Q6zSA54xS^CEjkm!*NU)a&{qX^KUz;noJugeZ>(^3&ISiaB2ABgLgCw zZIf?n#cB{|r+45)3E`&kWxyrZKi5`94bA=Z^O=aW%*=hoB6GXb^yHcpt>vz?|ZguOm zYd)k7Fj}v;ol(<<*+h98qNJI4mHTeMY8cb~)wfk^Bm00000069S~ z7j7ZRHycnyVP~k^zMxb&d4Al+oo`XRP@I-a>EcM8b{<;MU9FP3@y56YS4^dm|S z8$s>B!N5`!zWLc)#$1zM!D#R=ePY||ld}a3^p3a0DaLdTX}}(ns4y$)=bzOg8Xgbv zu16Zxw$B%bU#1RPcNgA>EbUS2!4`rkgM^>C60XN~hn6hRk7cNGLj0d5nHB!Ia=Wwf zamtGIflsaU3Mww6qdeuBt1~-|mwQ4PEa;pkeJ3rQt*2|ZfwUnXkY@*S}t$sFuO;Mr0_!0L5+F?tMz(c zq!&x>q#lM0B%j-TM%Tnna`#dE!2VHc15L2%WqOs-+R$lVSjf0iYZH2rOwe9q_SwJp z4h$i7X`1|ubpBlFZLhx2f)gZ#X%_GP56DZhpCO7SVhWHv1rBR))^SW=ie7k(nJ%Ji zuf8L(&BQqn&~A-DVy8_SFl2-{@}!S2fX!VZS8gNuQTSa9$P<;a-O~+HC=!$GigBjz zR_YG-gwzxzyZqF2u2B!DG3JuOuO)y(gQ`>Y*31;BOiJh|kIiElIe)$OUnjlYt1FHW z9jL}&r$3F!odfIQenc<>tS@KMPFz8pba|j7wGWwc9)LkH&|pDn!wO7 z?}f@RVgGx`!08Q6LEtcB{;)7bE^fqhS$kCaBn&ihuJk~+nMO4&7Xw#CmboG@qX_p= zsiQ8)lPN%-E#gQTN|Oe&k0}5E0000005P@@Ku-BD*L0#pJM+9Sa0;q-i+o za8+>OZv=(80yg2~ej83E>$6QXwjcUfsVYfqFUF8{8u3#ZeytXjlR#+KIQ4VjY;8uL z{n7L1|KV4k(cfeXxmVWpI^CzOF1G;k|CC&K)k7-$;)(6rx6OX&g33c&89FvJ46e2Tgbdw4OHUraIw| zwtIwG5J(tlOlt@)O*1({%G(s8Qx6Y8rL{&YJ440PAi9NjaP3Nxb|(jh<)|fTp^j`H z$RSdKD~VyOBknlK4&7MQ*n*zW4lGPe>nqOEssRBv(i#gdQ;`^9k_>FD`*tezVCk*# zk55~odwS#JI?qy7I^Zb26?7v@^!nQk)T>y}|@07~LgR6yeV@L*~ zMO&Qk;cv1l_oo;Y9iXq2E1&+2HJ&-GvnQuW z`#`yOSmqdsf{Ul3Q0`?#g?t-$gO{i14264c_z4ffWN%@1E|zvinZiV14T3l*0mV>c zA!)%lL^Tgsxe38?y-o%&V6R8^jJW(Em=K&*w%vlX-yJax>oZHt)OmTwmYI-{qHdD3 z-$a5=Zd6++c}K3GQng#y*?Jq_Pj5IbtA1gwqcFt@AOR-K@zi~cRDVy!pI)jsHS+oQ zv#D_-lX2CghFW1$iXt!F`(sX{WX1jwHN`Zb=(#D~1=p51jz-?z=4yN|jzQ6$(xH?J z^`z{nb99|*f6EI|)dca)5z(tBS#aa+5|(G|3Mkjo*U*v}C<_SaBbOHpA^Kt;tdl0#ghZ?_5 z$%vj7(k}%8?I)9nAUh|V8Cmit`p0O@aVw40{aAyAL8Bs`Xn&^_|2ap#*t%mx4;0-r zi)cO`Uq-gh>LtC4?&{A~p9jCt z=4YA<;Ek?gLPF1hxv&amgv$dSR*A3`wMSRotsm`MyLAxU=dykr4IvKC6e=|YRQGY# z@c(-H_1?2R=O|LRdC_E#9cSc*b6xR!WB^u0qE_vL4nZpVa65|l72l3NFg^x3J-n0q zx{Z6g?%)Oge)gbWl2J}c-3B*htjiTvY(ES8Xon5aUf4W^+%3p}r~Z5Yd+#lI;*v{p|i z5~p%qn!Ycim<9?CF9Kpp{v!S~<0 z`Ep&BNf*sJcFmh1XmS1T^pDdw7CEoZ>Iu5LwdE;>Hou!P&BsVgp8>~8tGH;lw{Z+W z8ZHv6SE!T>c8j4c;8--CY_Uz{vf*IC%i#4VDh+|1)0hXVAa2mq*z&DY6_%G zW15hrsi1JRUh&)ELwI0*l=?;m@nZ63Ldc#QM@B0Cg(>LfvDxpc_4)Gg zA&%8C@r~$BLZ?gB0yxOESQ3YqfqNn%RmDdQxjLb^0eEPZk(Aa?M#R}|4` zFMp{R5qIj@!CRrF;#T$dpM}NDYyx)AxiIuzFvS0qeIF@5Tnd^Ws6!aD%0}B?%=o;I zWAJ%y0zj)TuS_Al^c5QKEx(?BOtk+sSk#(c*{or1nQ8uu|2H=qrE`fOtXUP+Y(Ks< z7zz6mB7wr+mt@o_3z#zmMPCM3M3&TPAB@QE$!a{XpvsUCFDg$)p;@`;(->l0cjY;@ ze+f6do`h#zi;oWp-7P#)YTBXqEyxep+z)Hl2^qycnkxb($4#@#*Jr`v(-$eE@wWN0 zlvRfVf6Bb%(i@P9Oe~9UN$TwXPKiv$plmh*&2{NX~zrTS`SEb@c1&{x-mqipekKRj8MR`;o}O+pf}G zBL)vTWy(Y@?T`Nw*_z=gEY%dIb+xhi3ZWtJX}TLWR)GkZ6RhC3ZinMPKZ*8#@K5A| zukEPhI6_g>q@jUD)rJe=G>ocxz6ZSdEAL)Di-B4BmdsbZk}%&9B}PaH1*!AF8bV)j zm$hubBcY<`j1PA)%}@%PvnU(EKY^ZbR+m;72Q<$DfThT|15A9t{F{-CbEJbQje1}$ zB5$TyNlt4nhGPzg)8}s?%Y(n*3Ahyf^#~9fe6l%>XTWxUnNj}RXWTIp%p3xiCvnK( zXE5Eq$;pddGjHN4WhO5|P~fxFBjxnvOWW%UEE`VK2*9tfF|jhSDSFPZg$d%#UsQOS zx!2gv-7Z0_k6EU4L^#K%=!|=8=ZzDcB(6XJAHtDvJ&&G>6yU+LBDt=akt!TL*ZgQn zAQuDG<9;dP0z|Zv)vN8_8x(VFdS#|nc4OzO|G%EC`kjN<9H?+ywn~ic*}F1NtbW>g zCIEe@f0eNJb`KqU5im-rL@qK-34wTuit(*G;A6y2=EX0jsaB5Y8dj@DE@noLlgSWL zX(YrJc{omcnenF)!q$|JlJjzpwLu@;7S`PvRGNF9TuQt4YKLJk6O9KZV?;bheZf-M;?R>kqUUx>sHa0Lgf}l{Khg z`YlP4^4kJeFVHz=X(YmE024>G{^}8jHpbF*3$BSvoU!gP85QAtAQE{Nkh4hAe7hIq zMmmG4Q`i*M{&mAZxWSGHCf%tIJuekY-PfyFCrYPPd>8VEGWj9XqXfDn%Qt$dpdkT( zaF%f)&8Qxb`SHOr5N0b$cf7*+$GCw)iuf1ut#e7cP4r+DNzs4-@F>_$=OGkHUVP#I zdS5L#@14>F?4{Gix)2 z1zr!iY3|6zS;?|-glIp!5+zcgwmn0Hu*x#)0?70NoBI8{{7ZikM@12GEOJaFTnM=o zPMPzmMSe=OL>`9EQ$Sl2`y(d(v8_Ywn|X*ymNUgrT173yk0!GM8fyyqSp--8C#*lI zD^HtM(ed_`RS225To}IDkNud`7?~W2a6nt9Rlh~`n<*7tt!%FE<1f*t`XAe91>>RR znKf_gxz;{Jn^Pg{%bC4u)k+O^Gvdx|5JJ(#eqqlIr0Y>>X+~(Mno*Juw;Uh6#-c;f zO-_>tvt7#!QwHi>H!;^Y6pDa+QSnb|kcr#YE6F^?=Idv8Yp5v6hfck2`6`|x2({Pv zw6VF6yWK&BdP^(NUyzve)|4fvA_(Kv@>tJ-T8|TioD1O{=@@@V)f|ju@&q{KK825r~B@8*hBn6AlJ)8`#&k5N|hqi zRqjuKIBkh66*e0xt3BmO-ll2rTgWGZ?)8#DJvPKfOg1PZdjyosQ7e}ETUWrgm8uzi zpb@BYki5YF06`sI^_#ntLONj(#or%Zz@(r`Df2e%JzXMVfwx$1Gm^es{%^<2GKddZ!IlaV$cQO3Cp`Va~h7Q^T*; z>Uem@dD0jOA0*EmCZhI2Y9a=?>?9zbohaip0lU!kNB3(2#2GF3d$ z6yT`^;AxV>eq&iujOEZ7!31Z#k8r@y-NnFMNI1I2hwwF?lOzEQ2=to1l9QVg`5DbH zpcJ!YLRQI;c18gvyN3T4dsKT}>~JCAF9{5!TE++0kcXPG%Ih zsM{JYy=Q7=QF)3Jf38gd^eXjZ&%?Z<&!}2|cAQ%%638n_ilGOU& zzu%9za~dMLBxH={_CUTp>k_xorOTrw9y~WgEYiNP-I#qrmK{ogg6rnt%3T9RS{EjR(Bca! z|CagsZ9wz}rDpn0FrOY%jW&|k^}!eyouMSf9nmyfdoSefE9(j(vI?<9Q@i;KjJ0z-v+iC>y6K;W9UJTAZ2jP5cFn zeU`$t0{H$bjI^yUklG+Nh9_;31Qsd4kZyew;FdoKkMrn)Ip$_Kw;sJ$;!H=(n`Tm? zX;ib168>~VEJm^%g zQ%%2klI~8bposky+t; zWlerZ{mLFIKWo_{MQ>*McJVoiSL+K|h2LWULaVWxLD$OiJ4423WZ%7!>|<5Xy`^^i z4P;eC9|F^(_o6au{37J8!BnAAMV9oO`XUtqNJ>QuU|2-3+8WZ*=XYso*i+ zzHP5Nva@8-T!gVBx3MReYdiSO#`OHbo(Erc}ruw;1n*R`$1 zOfr_wlkUC#n$Tv61Ub$nn3SSt8q!C-+*Qe!7L@P>h3)tJg+OcTqLh828V7pbcloh| zah&_Q7RO$1Z(+cZ!1eP^(2u_PQr)82*{Ohrh?<<8z0ye5BI za`%y@2*g$(KHe?iRshjkl9WA-XNhAY^XA{roP*QY!3}{4nLJ&@`Wt8p6%7Gv2R+)&Paj_G zAC#?SpE5onCIr+VC5d~3Enry(Gu9lFlFAcjW!UoD(F=a&3W2${I(UGPq14!i?wqTJ z=N0^FB_HY$kpGN^B?kBX`bpq4$X?Wwz1KbLrUke^Zb2rfvxza@p#1Bxe+BpLt! z04W&YX2ycjFx%*IiT(O8oV{_3KiuhF4ezM{Q%U|+-wiC(ci*6}o>w2fbbX-Tg~Ef( zxuKBw;7W@Xz*|q&GZ|;-UC@I&0>EU-qo2;aZw2q zt$DwJg8sXyRKd17K@D9c1X;QwkS^h#1agc56xy*=u;mZH zrZhT%1?8(5FV_22Vg|o;+gzp|S+?z>(A^|9lzfT*o zqqxu;V_j{~y-4fmQO+UG7uRUY#iEx53?e_uXMhqYC^t;po^+2jw?m=GzqESGF+UQo z)S?B0%Y%CB16~?<_>E=dOZec^4n4hqzI>K>$?ljf(L&ku-1O?hf~`L-JTKjyl)E9$ zMn5otuzDj^L$8Syl+i$(S*K+7El)|LW>KECEb}DzDWq6C{Pqx+0ZnFp>>*bgr>b85 zxD(q;Lze{1KvwvoUpc$wIy;JjV7OH!C*H`Xfo+`Osw869czRp1b~>_z8CdDhT+XiU zxs;uwVa4~mWS_EI6Q-{D))$6+=S#Wl>UuQ+1c?L*-3k3Nd?X_(W!fOv(9|1(?!Qkf z7J<|l@!Qa8;XpAtX2gtT(LJMl!3#|B>)YT=1`N_xhBe__OpBTLj}mFJND)mFX-(SG z=w&_l2W=KbV~gp@%&Smg#gGXF!2h#ApY&}`|0svH!k(F%jS?z+8NLdi90C9U0HMiL zC+#2!{D&E@psBt$i*E{}lMPZjst^+P5Eh8$q)^}P8L!#W)6!YMY>MmMJ)H%%a%3@X zu3fIM#+AP7WvdLIMAv(__jHb8Ts~oW+;HV~9SZEi(^Rf4r4o8~NfZIC+v+q9%^-xp ztRyNp6WqN5Ls(%e0U3cBEB-i9jap*E2*ayHYTda>5`~~-d1Ck%-SdhVfSL;=ekkcf zGvc>UZj{HsNSiCNdlpmxS5HK^IQ&ejUi>fj;Q zJvUOU+&>c^1iRk+0HRwXy$Yl@Ta?MOmj6#My=x&=rah6x6lW`sh}xpQrBI$aWjCm4 zxDe_HyO$;v^+XwLo#*JRfLLa+@7aRu_0(muHPnDD014afJ2u(xZoiDv19)Ro@6dUh zKpUM!FGMgM6LR{=Pv#_~O3d-Csj_O(qoE8c6V>x@>Zp$9-VC@Kv;DVNZ>fFv;wpO| zbYJio+--7`s`6a%;kjLggt-bCS9x~SYqm!JJXc)g*MhAj+d_leBGCga`QuU#^aW}zb=J3ueh899e1r!TBgWY@U&)l!T541$@$5`PJL;4FEr82H z{+*Z6e;eXV4hf=%vhPm6d@O<5C!u#)M@3& zVB7`IGpA$p!9-{foC8Nzk+sb{Ve#_u!!lIguOAz^4)H!t-)jWcfe%8-bxT-!Vc95$=f7>Wb#Xf{0ka?)BZnbuR=qsv?o^XVyc)uj)qq*Zz_905NtB-5|M2TF%QgH zXG+fkR;W%NK14zO1vnGROMdaL*%P_kZ+b93W#EPG%S%Q2)>$;*+;+LA)Y~?{Z7sdr zccDw{>r(t)@`5Go+V)59#@jRlZiX)lg=?VRy@dpzN)cbpJ{d#E?IXtAhbdzcje#Ss z`Cwx(3bSBmgt^9=EOC+g#lT?H8b3>s0yIQjC`;2cj6MmyGoY0zN?j{vK!@HjwH#*$ z?`A6;sRXG@djU9XRE?1Y}7CCgF=}*;9nJn$DY>yKDmBcZJ2z@2RCI^ zD;+m|Yzsa@E+#XT1POFqEY{8A%y#kn4AQsZ3E&c>gg@y_d8cb7(ErzZYa1QpEA+2e zX*Gt4tiFJgNIw`_sBx4j|MYHH@Q$UGlK@7518yZ46`C{(SL3{aElVYl&A0-t=Y%YC zq(#}VcNbx@h&gV)>3X)^i9y`qdQD6Rl8*qszxpI-aB7-p0&yX7014oy4g>i_gfHYV zjQ=l16H-uhLV1B&-)i-4^^Zjkz`x`D6JcEz|m0#AT0|!uu-zIPjc zS+B>@GJ+n)!LJATe~Udj&u;I@(G}QazH7$Mh5?^Rn$v`AMliEp?xTLMB{(BM00Ka^ z4%`0K9Z|i`mBc4tD{6j1B_*~P(nSmLRvkJ-Mt_BOlPf0l9=Bh)_4?p&k&0K~IQ}f6 z_z>qj2>j@R-;cT8YOh-<62$V8!_BX zQ0_vt%}7UX79LkJuQ|RS4}T_`&0qmgZ7}_10{M8WER(th4CCbVh|yv-a$?G?H8o;wgYxrhp!^xpR37^(LaPC7RawUuT^fWKohiZP2pQ24 z7(<4+9W92)I&hzsT!u|YeMJ1z%sxvB??YgTV6!eo?J+J=c6{;^!UM?m{0baudj9KX z58+MyB$y*zPiZ=<<({bh|9~}NVsY-BI&p<1Z}~+gT~pXkQU}{c+#oEJTrgZl zimKX6{$h4(alqAfM?0WS%T=#I=->Yu-m@1H|hpbmkEH>FplB-6#BRMB zW2%vSmcng;fIHEq>!DuFH3&o)NLxJsS+B}@g2+No9=A+9{(|{W`C=;Px!>mKWWYkONmnKIBQethgZGbEnEHm>7N62%c~Esb<}_#7p~IvD z74k83E{3a|!rJBcU>8qlq;8x%l6io=W4feu4&gfc_oCH9Rp0b+4YBHJVe)W!|UFdCwroqmu}#&G%mwCn%3oJXmW}g z1JWf43*(LWx#D$+=h&Th?pcW7Bnxb{k91P{todG0F4EyHiC~N{ej71HwGJNK&(qaR zOfoVpczl97@SEStu^#qy_NvFQCCzcvC00#Sa=^AIyi zgvbxpw1~vqTR?Lb97+K9e6Rf;d?&VfN>NKsr3+pXqYftlZgp*$&{@ZWM~uzXf#D7M zXU!vRoik5Ld!N#!Szqs|{?{Y<^o@#+g)u55eT(;ubBay4o8G7g&3{Kuv=w6G0STv12tGkMu=$}M9nrAmi(@T(_Sp6PAM}I`OPR$7 zUF_&fd`8xVPH-fqK8d2FcKSdW_+}1aDs;h_(}phrI5J+NQnaDYghUtI{5sjF^@(SFqC zHagge4w$WI=%?ldXATb+J)1MDeqpJOp|3Xu!t6vTAx3^*4W0* z-A^x&0?Xr)_rd@gak<+MZRW&xJ0P)JwViB4lIsIy)jq@3v!*>)gUMjp*&9+e2D$Y| zlnv17eqBn+O`hM3%fG5pb`j*5cZ?^;tp-`TWQfqhPNneyb~E^QU&|(=zkj_ogN#o> zuP3u89r2i)y}fXG!DlAzQj{}g-_69 zK-KBm%_U-J0XbvLq8!{VXOjXo&xklp%kW)*+oYo802x`-EJUTl`$X1W2Q+0}Nif%@ zSkRdkiVt+TH8^J2<3;(rEZog`y^g9x7D(6tYT2euqO4I#+#N>xTO(1`7OnaTjysWvxFmNah1AEdhrXMKCrYri%L3>$^qtJ5Mh7P}9%u(!(izQph%9^>^1%s0; z@7|>(G&FlVaUXLo@!^RXW25~@5}|f)0=BF|uBW9bwGqN=Htt8aK<)^{i5C(W;?@Gh zHN?Pns>t-g$b@l|?OSn9NIaY#(Sy{j5T>M10@((e@>E-`wBcT8~mzzOqCjC6ac)ff$MQSTz4NbYwUkhW*&t+S;Fd znT0m-Vv_eXrOPQo(rr;8O#^UjseK|g5xY-ilNcwPtiTP2%DDo`-bva+;9^zJk}Eg z@`uS1yr?E(fYrxU;UzSrXj&NDAvhw+JikzwBxOp>Veg?>yXtmb7zt#!sG^41~OKu_ivnxM9s?BZ{+j#{T-8V zLpgN3FooScdo(G&@5$>g4>tDY#v36vAM#FlG00Y$fu|6-FM>z*4_4I$O<9$B+TBg^ zEDZHQUk$W0>-Y(MFMR1*jbI=s?-Qei2!yhH2>8szLONtoJ}^9aNlfEhL+zT8OfLDC zL%5j|!2?)qsi|ait?X3)_$Y*2*Ya1zW8VDae-u@7Of&92=BA1WHbP1*=uufMTJ-jAB(5smn-MLNvga1Htl*Z& z)1mxPwAPF}6wH^+#3}TNruvMFxTAX1aC7Lh)$auUPC%PFB5N+^Cn%<^PrU%^zqwf( zf~&7<2|K3wfkY0uoVuA!>B{ZV;|R5_AMK9`rLh&K=srm8_mBdul|83bc-sfeX7MII zj@k4+-Ihu(mtgras;U8c0c)h^AgrOQAGxXubUYcctB9CSt)RfpOUASvbeEXDYC^At zp(feAi=~f^VQR+=N&1uA9m@DwcbA*(7@)?U+Dh2e;Of*vQELEyybe%M)8oB#9CA3v zXRyKbx)pC4-yyOwODi~-%kUwL{=MJX<@6Aa@U2jgz4Bz@&~WKqL(!0yn*{AUgPcd{ zjJL)isvJi^PXAfwqci9LN?Go=i$!BW-Lz800@$}Svtp+xEBY1ggWEWLXWD*BDTt!mH7tv+jM52yI-%^ZUTD3Z$n00000008Nt)H#7!=Q*a| z0Y_MlGrkn0ccu%@o|Gw2FQ{v>N4H#D5pQ@FFlsT$jfiwIX?uu6tf2Y)@*w9Cdp@vC zA)^G7PaCGtCh#J%pfcNQSV;E&Y^S0C7%S;vQko|5R*ja2G=mY8Wx1$H(L+1k)d@CB z#gY+mP}hq+whQd0$N%&Md|6iei7r{nReP{84vsA`VTyX*(TCI?w}r%(%c`m~NGAr- z=b@^{g9Pc`=z`1vike_m>vxTLW;9lMyk}apk=dM>@tos0QCOJYLGr~4q0wgdP*HnH zZR%WaMSN3=I>g49bSBnxJj^%7Htsi|Ni4U+Cn|8FoLD(=`!%N8RXfQUaS z=%~x?f4iz#bu}N^`@NB{!$deblNbIKe5)S#kDV&CJ^it$^j1;fvfyMRve{Y54Ntbndz`v!2b`ufO41)!>L6a;?gl%D+s*R6UMk+A>nmQz z6f5*spZ6oKwn&-0%Avhmj(-^99WG7s+!^nO1Jr#$5nNO@mJkEy)VW zZF@yVA*s#K(gtHmdLsk&g@{4Lbzyo63YgVu9Nj@@8UleeGYOSb?tWg?#dgl@{nn*9 z-pEcOB|*#{;4(k(D!2|{d0zQZ4(b!btTPCz8Ws{qHrL|jd0z0f^(LxVOff!3+kO!} zC0AtA;BhMpv%L%=l~rv!PCctS&bHzGT(dnVy<`{PEmFx~vsx|(1w6dG$0=Srp=g7f z75CM8t~@{vdI%yS+xqxD=xum_M|S>9Cz|L0Vn1={p&bCECK4DfKL|MVWV2L>TlrI( zr@sgKi@Q$$meq;Q7@fNfWj2nrG6RoAA`${TTes}0TiP<}&s=qWzi|)%00000003bQ zd}aWw=xzTOlR`y;Z-9*)>BPY`4&ne`#`gBg8Q*C8RK9jH?;>PQC8^ zuzm7{gkFQnLgQzclO7=%r5-J%&kgMKg^0&Q$N>YhVA#>Y?#$*AEkX@ox=NJzYMC6w zLG(h;{zu>g#uFLIg=Lozi6`@3!zV)j4tC9fu*|VQt&k0*2o}7W@$trqUW5Xy)lVO;88JPRpJOYH)JDY6-M5HK9qe?{qh&%__C3AxTKzrU;Khd-*>@zve-v( ztNm{l$Q0&2Lpv$-ptx*%gV=>}F}VQIy31@f2LSRZuyga9EBP--R_@EbQ=ANX9>%ZRN@{pEZqV$l}CBEr|IN*g}2aj6s8av%T{;#EUj02 zoEW~sh0+jbysYa&nF9a89CFHdSur=?9_?;3GpFl4*gNLfVDofe$7SK*%yFKF*g+Rq zXRCOO4^#mF00000000>nwO_T036v;4EW!cE6nj=j;wW#_Z3Hf-iG*GnlGFZ;l@-Dl zSri`f>JzNvbjqY@0Yg!iCp$523$crYpt?h1te0pdK-Cr$!+Yuz``0C=(a*f3>-~D0 z=QQS4eRcavmy`4bg@37`8hWW;*1pp}tyMt|S8gy#tt@tbD_h@e|I}N3g`qPORE!M% zy?M)ToHwY9ys&lplw-Ia;!|Bj3-oWQek+$ICS!QjfEFa&+`SZ8#m07@fB3sD+3G;c zi{_;1L$(W2ex=5f33^dc8}xIL`B$1Hnf#1w9?rvz(jK&R6!#;Q%Mu`hHplf(UX6IG zqiIBXM39%_*Y_}Y+~b6NQU1#w`AUlbYeP({iKm0APA~{p_IDpNV^fHMYWQ}qFWEjgIT{WhCVs^?`E8z#Rk#3 z7JbKpX%&Rl)_(N)Y5_{>H#;h2r-s%ook?7l5l7BRfyU>32N=<~GEA4L=hIG<$_(2h zit;cNPe-Uv=Kmw*x}bLsbst5}zn;zP9ojNJ>aIWTB}I&~y%T+TVMzMWXRn~$$(3Z| zL@rh>*qJT1n({>HYKPgL`S~p^6D-AD9WKK=4jGUZ<*UG2-+*V9|0D=H z?_^_Z{p8uD`;{gDSM z7bxG)JDy(b;;m>eW;!8hH}$-9$d?zEoaeR))->kE4VJ&LaAPU+{;au=fF8{5K|Sar z_4w;uz3}hdSG?cPZFrzp=ptPn!R=Y~30y_gL7Lc~Fs0yli#D;5KRMRzePzxEQG$Tn z**AV#Sox_^*ZfM02V*%AOJn|dbf`eS1P2Ctlh!ET$n-_j*vp{O0NKZY=_m`}Im5N@u!U(vijk!AC&($KqXxFxq{bi-=-(!eW zYNIw64zKDsAM>X9hkk9iy9#8`;rgYxBmg{9gI z?Pt>w339#uC*?EZQ4b);YEv}Uvcwx=_LMPhfKLJN)hxurL^j)_i=)Nj$!kN@qyjwQK|{P<{+9lGNn_ zRdYEhhPAl*=wEhQ$W@M>M^8AptPfqJHgYzxuPAhP{8tI0`g+ps^#>_OK;r`XxImI= zF~F|x)#1ib8^%}9MLb-RDP zX4&e1YJSi56tWAMIao|9J&R1PA-0_(cUth6Hr1a^=aDZS?jrB(^=$rY(lxf9j?RQy z#*4MvT1IRBM(uTMZUvvF50(b&iltw%Vv<^;GUqt+>62CSJEb4&KOYg9x#JA{nMmS6 z;I#5^+d7gth1SgR-`u%~AaCfx)d=XKc&xTVz>2rEf^2-p`oevC(v*wxRVYK( zHw^f5wNW*#&{Ho7Vob-NFmRYFfu>7eHt3n$NtAoUq<<|l7{4w{F3X@^%l=CMw@;pg z$7#eJJPd5PflYSYo3s>?pGO@1z8@mdxv}F4{A& z7xAc7=mj)WRw5BTj*%#e(@}RH%H4k{%l6?86e!neQcF86x9|-sA{kHr{?`&sjlW+I zI08wIN4@hx<4wj?+Ejvlbp&-t*lho&&sdx(*o20tftz zqu}n}X3q>K1wb}QAyiaS=LsdV8n2TOJ>Q?TezQO78E5B{B^DUCy4Tx7##CxL(uv2V zt63!Jd7u)FlpE(&7J-5KP3v=6BckY6e63GFZ)-rR<^IbJH95o)+uigaJKtpzS10cSq?6SZEx5+m|B zosf40MSPkL$N))kK7?D z?S!b5x*;@+L-h$w0XV9OIIftp^p^WjB@aUktJ&v6@?Sr_$w1C3pGE5TW*M89O08iY zn*(R4)LUuC4Q07Cct9V-(u0*w!ah#st(0p8Y=DT)Ze11d{SH z3{5}hg-C@(g=wbS=*39MwLW|McKw~@Phjd9nqq5KWPvROP<_BuYqcnHjh)wfxj`M= zEAZ*inWyj{fH=b6WDT0j2FFV-5gg59==^|r7-2tAaeT>!E>LbHl$-^ybuuVJX6FbN zOOz(2_=r-flHhl**`q4<({U?xQYrUaj#B(1RDzT&$2=p=??ikz@Qef~hNu7)k=ns; z<8KZ<>FI$NN&pwTpE1jns0&PKH{WX!bPU&R$&pFpEdar$cRprd!87}WPWM*NcZ`vE zlXiPkiAHQ}h10m>45DUhc|RNgw+e_dg0c3bHWfNIfM1T=X=k*gd*%}y_;f&RQmn<( zc85h7Uq7^SX@|g>OSB!s;BhneUzt|#<3DUq1lU!KrUOD)j?k8p-TT2*BV%DM>K*-j z>+i2Di|s-*llxN^d4*>Hn%>a*dRNdxAXFPM{#6bg>}&J@GMx~$M3cV&)DsQTizq<$ za1=ye5Li}B-cu6lM?|QF={~!HGhG}exV-rCYFjDfXhMOpx8iHOf3wEzbq~NIL$jl3 z|MDXi%wQuPgk0HJocx+bRXqx98If+jIVG&P$!1bkTyt{~NJ-uWe3HlGC1XgXx8&y4 z>sqh6u5My?_mto*g4fc{lU}gPr>-wJBNb%ivsu}&-D1s5tlq-EL^BUq_J@kopO#9* zvP;sQ9j%s~iOmz~2Wt3PhH$Cd5pQdI94SU>UC)0~T8#eO{X{Abw%FTJpULz3|8{u6 z?2j+hAychxqDpDIH5P8;1F)!3mji#X5 ze=A#8)O{dtz0Z#(c{LWm&_lD&Uzbnbr@w}x%>fJQ$`80X#vOP>o>&}IZ*JO+09-qJ zDteSZy$tHZgbx(;j>jVpP2^8;v)%Y#B6FHBSDJu^)x8G)#fI}+^zOa_VrkQ$v*YM!%;yUCK! zrG1FeLfB@3Qi7yjR5SMPh9z+t1-14a;^aft%0t};LDF>TpCLD-5oXKQ;P(^f78Hz= zd+ICtz}Q^3PXAGTQVxF$;L6 z9v6tcj8i;Oy-EBwrM5QFlQrG4vS9KWj{vRAcp=yS>%Td_ za+nh_8cPRcEh5Th0zlm-kWQS>kqjX)p7KG$x+e$*oh1)c@57WuoV!ik_M+Fc)k*d# z{h|L7UwE?(elj(dD4{D>|$`*LtiE5JW_h{k1G_qk?|il<=mZ39w%2A!d0RzpghH3@OqdD0Cp(mV_7qkv#t!_iff$-C8Ys^c2sJc*gba z0dPTcs7o)3q3@w0J9p8N)0;%?TK1%J(^o#mDJ79pZHw&s6T_9H-c7qd&Qu0CFmZt1 zN&c~iuUyWhBs;R#=Qzr+X#`Aq!Z&T|ftY3k>uY07%0KUJ|0`u8yBN%hT}L=2Ob<(S z`AxPLl&5)|N8Iv8Go0N(O7`N@!oKY8z+}NTOsk=R8c6&r^oXckcdIh`_Xi4Poq(24 zTrdh}JCdXla6*CH2L@s+I2@1~xkVD|g5v76fQ6QTcS#1!kF(MrxRXnEkZVMW@Y+|8 z?>ZjrrylUm_zwK}7ED!4u8O0H2+_>KWcm@1F{>K=S4)(vcj63YuvEC_)(JS;-EW*|lrygkRz zCtDY!wdH`yfJ77kr#^W!xmc{4Os7z_fKXN5gi*w^gk0E^INW{Ty^3*Tm460W7JOHL z-IFxm5M2w)s){kDX9M_K7GVvw*RUikp)}grNg_Ok>l0fNj1aREJAsBeGU^YOkE<5i z*nkglgBs{E6!hVUIWm~~SSWCzB>I?EM-JnOW#y4nyC;I_ML(jt;S|GH zNx*)030NvzMi||P``32Fsh+w)XjulwI5(W+gJHu|aT?8_15x)BGCngJ^4b5Qd#SE= z7}&tXd!6TtoF2ir$vFI2kJ>M;#MTu+T`V04kpOvRf0042gTf%vad{!X)J|x(o@&s0E$*CBSR@FZzB`O?BU{hey*HTYVJ*XQgyB zh9I?`!je%y1w`{*g&5p!5!^}`L4Z6tt4gq8gh_Uyf;Qmcuyue0=Nk&a{nE=iYcxy+ zM$Igh(ZIunj-A+vACn2yr^*mN^un8&Uxj4@%k$M8f$k*l=qJWJ(4__dG=5N5Pd9?P zmnF#dxHk}^KViprz3 zf%79%-3?1sW}Qz;fG*Ph{XW+FMoRfJ**g z=O;FY8ARl3mHT0lC(3#5ujHsg%SqpQN(l>jq3-1q>BIxF0gXSC($#a_6@sLx2HYYU zvYR{on9FgPRrD)|#^Bq&s!4<1txElm>qjZUb>(8Erb5CEMqp#215Cmc)4P||pQXvzr+6-ok z_|m^BvnM%IjLRKrms!RwH!d*-005~y5>Z(FrVWE#FF6Ss&?MWM?znS&6f@nAH=du9 zMk}_n%f_IzuED(;EQ;h3@1qlepQ0V)bBNQ2?R}DBR2zznjqLDcJA8CMyY)wb16%z=aZ<^;xv78hBILa z^Uv;_iUb0yx`KjWNG8?Sq%otSpeU#tsYY##Y-kr`UuW&JjGtx(+w(&}Y5nTIX)B5W z6Z?lLqo%x&8?&4DIoC9I0d6Ayl^)arB|ZoIXy+v?_r|}3z$HIAv3`OG^VjA^okp0t zP=I^nefh6hj&eZokE9_tj*v=}p#uyNIxW8>>5&(1--b5rQ#C)Uat;T%WotM>Ucjp8 zvl8xgKdK*-35`xw(6?DVKjc4-69Cl0oZ9@UmNy{}1e0pm+jAAvbmvH#L~CY#SVFqMr&s-m{2$yb%%$yLWNHstJ1%4ict)^c{WeOgc@ zJfTv45xAg!+6OOhwV$EQqWCKCrJg{>JMPzy!tS|#eq+mQE^t3{y|FoV zO9H~q`s)=RACoJC7ahJTbQM-oF33R`$9Wku!S05+p(OP5);W5t|-7L3+d+ImB(Vzrk8R@HllO+sDFcc9PZJTT6F=1OWE=1 zv*mC2+}8`Q2Hk3Ayf>loERvCaF_VKwy@{*M5x^ala?&9`kWe^ams-MQp+_L?Ve5CG zgB2rCe|^QhfO_lG+`YuP+cVa`=np<>VYfF~g>?MSOxVYY%QO2wR_410yrTVTnGSrK z4$;j1?a(N_2cP{`20;%P$)LC7p@iC+c@*4rpg9u(;*6G>@pP~oRJykg~*8wI-pzFpA&!=vB^ zham?Q2K1JX9W)L5LN8^m%L%P7&gHGFCwk;ilpFMZOaa?(3e)T)EE|5sJx9^Qr~XVU5{F|$CxvJ?g2CTyQJfeoXugrY|=I2W5-+FA&a_@61QRzahS z>QKKH&QN?x*~Lbm>@Fs2T=gKwyWtgl7pwcD9Td_dL*yyW&Ck}iOaT@T+l^DaIhdT9}4;-BJ5AMe@42hhl0=61G6V2PU5io@9Ey-JD z(!{$F0Ru53PUWzr(_#$Hj24$wxYNCrQ&CMH0034j+%!qV91cuOca7>$Y0}T@Z_Z2W zWRezowVUjp>bT#}iz&QM6%b8-g!5s!T>We#Fm1Loe0-x;bcBrxQe)X95!iQ6;CvL9rb11|J-wsqQn@o2NA5P1L-Y#m2S9tFpQvYXdLFJW6Uk^$)k!;6xsHFdD`V_2!$<@PT%!$~_Fp|B-gfn2BGuwotkPDjJ zVLXoN;%Z{rk<6Ua(e1+-)_lz;ze~#UXc@!-NxW!D$II4R9!4(rG{}p7MJd zRcg63VXfzi=jc#ns&6jWEB1lWndSCVBD!CdUM&}meu1C6BuSt3*UOUb�V(Awr7a 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%0AYNwP zh%uIESvhU+t6ak0QC59fo+EJO^T(UY7nHBn>!p4%{%)r_1~|O+L9sJ=$p>Z&Z+#x1 zx19aU$$h+ZiZmCgP=3$a;Z< zL$JGf{8FBN7VHt~B#FFV1C$Z3fn20kyUiQTG4m5d4^ew8;)x#7ikj&5a`PrKdxfPP zwzR`|q2yj|{#~V`Vw=m&+lZG7p@-)PPy1dF$@xwf$qS8K(fPYX$rIMca~;qA@;*+( zYW@BI0`tj83TAg^2WVgE>o8bdZr(_D*jH{Yp#M5UYWru~)bvC*!XF+|D)H^-xsGQS zXOkW-4dY&*H3C07M;>5q*&s0=8Wit&Q*7kZMH>go&40<;3DV8xO}G&>0LYCn&r@!M z2VZyp#)q2lASeP4Lfcb(0paW&^BPqaf7|Gy_mb#Cuj?h&%X~P+&?Ag%Rnze zoO8{;9kt&@=BmCv?u{#EfEqq-rGnKR7N^Y3HCX+Ej^ewg#`%PMSj@}A!% z2_t!~A+*GI5jrCBSxvuu7vZKAZO>u;UAb!IrHkj^CMw}v^Y0Lfsj=^r6qFwhljmjr zZThvBT=l{AA7))Oe&yf4V)<42e#;%Fbkc>{S0_yP)`5=FFf;4i2t7{car|2cI!~f+ z9q0`eW@jBJDZC@k>^y_8Os>424L}l$>1^a}C!6FWX#*6RoQzcc)?U6DuTGQYn*GaCX%x#>k7H8EeBne}$R1hetFW4WCVIQ4U*1>@JCgC%Lt@ciPgiZP!z39trIIByWM2~+ z5=66(>E;}az3>_K?v8Tz>X3XeBp-xyFeM+b? z-N-a6yA92@gTU^d4NniJ)DJtcmCL70?-yyVAaJZ zszT4zx3sk-GFSR~dGMZ0uxT)4?nA@1OY;PjMdc()<4p@}(BVK|pdiQzqEk66Q1r72 ztWUfg5ZPej=b%c(*hADBgyzNHmRvO9AXc82O5dVtS2);7hD8}=UAG}z2T8>?4tL0; zEuyY`o9w~6sfRW+e$vk5I=GKA_6Ld!=cbK5*_U83dOGQ^~ALcnd5Cak~$MI#q}!p&yIOhsQR^N zX;~n?s^1S|Sx4iwEG;qIdS55uWrh1v)#QH^`CH6*AM-Y8LH=GvVb5wVl|8GoopD?2 z!JdtKECPGB<=?SqPv0@Gnc3~xEH;#X(F;rDoSR>=v-UARe@ZPy%6l?Fy0Oje^q;DW zv2RGw8-dPkr_0K`IkkrQ$<*8#HN-R7>1uP-rOHosJYmF=iq7Q7U3`}Me%Tu0WOr76 z|LJzR%Klv3WM-$Yd@go+$BGq;?eraNL!Zk|@1%~lP(g=y>c>VYwfV#Mlfm|?FaFKD zf_;9HAojVLpgtDsTV%8~BZx*4x6e;NCHwqZTAhJNb7$cltyMPk7RSB0VX_w++AZF~ zjm?u-J5PR@zoW3TRGm5Ozv09~zO_L!J#@PdGdrJq#8$nBsWIQe@L=~C_sd|Eb(E}O zEF^}^gLq@?S_~3#+1I^hn9D}MTrayVw6s;ui?BYmFp+a1425ID;8sqlv7wF%rBRvd zMge`UEWH6@*@A{YT)}Hd_fxP)Y?uD@W1^VEW=6UFzF$1u;x>>wNQH?O_q-TuJ`?~u zJz$50cQ*!hnJc=vuRxp@m%Sf@(iSB-)tA*GE-BT38IzS7;6s$rJcr4Ns^ZQmORY~T zHLwSiIZOBu6JV%;S(n+ZG^>W4)saDTP2H)zwW`8Br)7<+jU1*;*5vqe)T%971$Z6p zAZ4f{1A}!J>!?Vy)sX<|NRO0J9T{QJri`x6n-9*iNS65G%8Pp2g5L5)PpMEtAtJLN z>z*w07wa6A?CvRd_b#!}lQoR7QB`|0l22z&D-}8|l>482CQnrwN;(ArRXUgOp^#gZ zkYe%GI+FzloMh?L>dR|QqeiGT1H-AvSZkZbSehk(TGIn=I7{zk?a&<84mqu2#c**Q zQ3+l%SyI)9#f>c`E4rn;wDi+gau!y_gfgWn;&CS|oPDW?LELd@7T`@%Ik7Lo>QWEH zJles7&~}BiknrPCI6pyJRq?8|NHC2oUf1Pl#negK{hn5uOh~z6Fya@aL1g^Td$e?! zD}%#=kS&1Hw=lF;AA7L;AWbQ|_5r+#R9U(CQ{~UoR7J94vPSbG?KWh z5*rXzC&rw{cKlc)33(k?rorJJ7TA8suY;-#FAD_A)14lqF_rK`gE}1T%Ovn~&TE_p zA**@u@{5DiqruLKMy~A#sU<%ZE~}s8duSCa76uVqx_8?;tAnK=mL(=AuPv#pC_ujv z?k#hRk#P-nPN^sI<2(p0Dz3^2R;A{%jl<~DgH{#apb@`@>@3GV1!|u1_SpL!e9IBZ zSsK$&hj0*UPOtwzuCfU>$xE~}e5Y&E-FZVXm-dr8ozvSNatAXAy(GO?2hKCp3* zMPP!zG??Hgp)(Uao2gG0_{wuy;C>jbot&f&BZLmnY~IKtITCUhp|`?JwW7Vr3?yihCxzS#3mxRN2jQ z2?N^fW-&UK-TZ3eWCvD${{`&kmCxO7zU(>J&Fw4Nu2^h0@1}XqWjD|Lh}+G*>KOd4 zS}l8X%icWEo(yP-|pv4PtA}5Hj;h z?!7Q;nr$Q=Zg-t?!Vi0;mw3v05n<<|Ns0(bf*ulypziz?BJ3Yup1@}f4>-2#AvEeS@- zTpy?wk%QPXOU`1;EZ6|%u*Y!2kPXJ8Eu>_<$x7K*l23IA(|5?qDLby-d}PD4nmkcq zj+Ngpyi={c>iY?3G9X$jMQjTT`J256zX7fz&}alCIA+cJlp1Qna3ru07la9^Jzm#} z+5ET=|8(qMu*UrLlm{_Y{B>Kbu}1(;dlKzP4+R=rvJGJIu#IWE8KP4J<$VP_DSCU6 zBT&nI9qBii4dSoU+E&4Fr?z+mTMyFA$&glt6E}T{yHvIWP*}tAfrj;iA~{#5wEENQ z3f@3nRC$-GSq%i-Sy;o73li3u8Z~>ufpWLb&8uZshlHyQj(XT(de{N3gQTqgwCgab z5723CP*>S_Xb;KF=Nt1atYt-ZpJmwO8QM~DLFeXrD0ze}L#nh5^^kwK-88Y){ z=HP?jGZ?o#sx~0}mOU!?q0eIcnBQ@NjI7Lux!T!ui`lYzwjbL7D>2du%o}eivWyehhQh70nfA4x*qq zdql6326)UhqQMjAZBVq1pg3AsnBwdLfHog!!#GEpPNHSN`d)_7&N??d*?}8-5v1iM z5X(pFabN#hdBcmB$t0GKCVAFXWV(}ZRsLxkYC~TudS8=gT~*-=(-K!j5YUMryAlZ- ziWp&zeg4=3bW?G#HO?z-9MJN>H(JdN?PoPu^W0~Pu{rEywvOar-&j+frRRY|L>1xRqj6R0%_X+$Bp#+N8+5MACG7nL`ZBzQO>qa96S^)6j_wvS5J z2E|sfla($DorNK?V#8OAcCtDS30c`d5nkY2m6nPT7cL>=^nU0W zFO-I=SZ}c&Rex4*)F08Y{(RL!MQGNJ)e<(wLbZf#Ii1;I5DUV4kq+{CHGSl!dZoBm zqj6!4?s~Hl=s1x|qgL2gxQ=(_@8uhGVQQn`VGpbrSM{g83>syZC<9$grBDavp+j9< z6R4)}f)LUyP)aZB?^Gzf%BykQTr!KwfczQ~(3>q#OOd57D#dl}l2+}Y!$rLINZ(XD zXfM?j-wm;_=(Wt!yS*noYss@jL6&X|)2fMh`-cW2gfEJN?`smWiV2J8MFokC5!bjX zhIESYpU&XwWDE3Aj9@UBO0CU8!(vv(sur{TJkw%!-Nro@!D9B_fAjq$S-^2WX?a@B zUY6N<&#u=Zui5V_vDJT?|CQfRr^CIAo)wA+g>`Eu$+d260{@)Wtv`W$zVcgR-Ee-G@YPgf(|C=NP^BJXcZ7|k6m^X9lnG03QgE;jqW?pFf8A}Z=vH%4c7rOcX~uV;8OVGGvP=tWbx>|r&~>elX&y1(!49F;v_U^3Xl*@Y+Z8Fc z(?V^@&+*Xm0%^ovi%@Nr1Y_U_ZMkWG#25c^fnZ6>uFTWPrKy7#EL8SU`PJoEv4&Pw6U^AC*9&*3EGTH?i0U9gK1cn>Xal7CUx4*#IEAQ zQIf}{)XZvjji{+hms0bxNhyo7u!fWNtRl6h;!7h|4_a0w7r`Rm0*)flUzfM$A2)if z99t@Tahrv7DGi)54-=MA*mN~1WoZQ|!)imc_Q?mChkU75QmRsAlOvzji`R9SFJicAyhC)TLMHQSras>@qsRsp-)Qn78%LfcwtA|61RZgyfz-WL( z1F6QR{J@?i)>vVQaXm>Rlc&M2jgX72pTzyCz57fGwo*8L8_qo0_I8%gOk~#O%o=n` zvDRy#T}V7y#@Y{n5*)C0H~|N%R94EMp+-Djt?td zE{JgRm6!~}MBb$VcxYhRA9>7+$AsS`T8wvDs_U{MG27m+OA6*YlOS>SG2SPufs&AoM3oxV7zNe_)Cs>Owdj{MdR??zUDSyx zcqEfEz%&4=&=SE1Sf~7*6uwGG=r~ByhZL-ejS3eUcWyh(=CLgcy3Tt`y=swN?ba5{KI##XsTBU}y zENgUXQhT^z_V%i6p$Tj;uSla`!;Y}dx3)mI#n{sZLBl4ZhDnL2Ih*#PhUq}SguT;1 zOqc~_IS`UTV?E9^huUm{Qu6|F^@?-H3ZWCqQ5+*>BXL=$)WkqYLll%6o}l!t`+1HX z$g3|c@bj)3Zz%{{*czf<$$Y(6_xy7R$J`WMLA4r7!}%txx)~$awM|?;7;P`x-EO2V zns993AFy+!{YW7{z&Ow32Ux#xk2wbL1C)awV1W4O2WUusfXkB~pn)8}gYo(V|0}gxo@pJcHb*_G*0E|v$Eb}p2y_}|>2>VQ z#Qm2$M|$~lUdL7+BYnpAtvgm;?%Uy2?^~aw%FeZp%@L>ZYgX0D52eiHo`?N#z2C*y z)5s9f#Ce+L!dO1P@n6rs>$|t#NPo-~)@LW5e)21TEsPfB^UB#jFK0hnKA*RN*#lj$ z)f7DUI+fY{=R`eLZvL$8I=qar>*eq~Z}02&ZM?tkuJ8WV-%Xa{*m8axTh4J{h65&< zP5i%||CL`uXMh(!D>LWmQ0(_i{Z4ftb*S8PFq1F<*6)rRX6b&Xw*#a{mERB3f7DcA8{V^geZokdEE*Aj-ha9=h7YKGRc<-hiAtTT*UeEw>UH`Mhklyea?eAr)5&dE+v)9% zryA&hI-%D>2W&+<+vtSt)(Mw?TpCswshj-vlV6?Oz$^ar$Fuk(c-QV= ze?_Mn z<^HQ`ebGl4zwkw$)MM7ZzK$>Yv_iNGc(@b#Fp!+k>$swZMZ_7!zj*^59>8cUP02xHWaZ0Wt#m=X&YO9o= zL8?TpvqHhD1B#?uw{>fQiSuUyWp=DUHwp}$Fk!&&{W<4;&-cl{rS-MF@OicQe!lm6 z?z!jwJNMtY_hu$9E~WdIROWxe#%U8a%`rc04FS((N{~qy$Wf^p7c$vID%;f6VE{_D zZ)PgH=T3An2Y5(y@-QvBbD6i28ddL#t5x-l85Q7-PR0mcfoLzT2eV)9qE&N8k||3O zUQ>t@nj@N>&|uyYEZslmQQsxH7F;qGf7fjuFQ{k~$`f>BiM1jvvE}T&8 zwTTMFkVXyzLI<8+dzD_A+1&%+qhf5=i@1S3b~_?ae(V;3u0pV+(!OIqxY};a^F7w2 zU(SVGxSc$B(UZFCDD?6M+ZQ-q7u zj)?gnyh@&-9pR{R2HGuO`;8y@Ix%DXG=pN(#lEh_oSKdU7#5YgV6Lj82Rbafl{Qp9 zCxFf(<@vBp`Jg(oRk?MDLUE8YZdA=UDnZ|r-6Q&@qj`MJBz0#3G2EQRFqTm!{XQqp-ae0-J@Pu)i)+SlbKh+Bhsq_H z4YwM{O&Q0DX-l(1`l~#c^t+&(agQ^$$Gi;g?$8=fsSS=T#<4p%ju^-BjN`)k=>@N- zPO8P*biX4r8X2P(fSW9Qbo3oEN;|HmyAtg=c*%OK^+K$fcgp7u(LIhD0f1fuK} zfiBk;iPb}ktY=P7#%8m#Q39*Bh7R78vFQe=(@K2O;?cxOONCQeDopxSU!Ja=3M{$g z8PEFiWlscCm-wHo`S! zJHu>IaA7((SvpH%OJ@Zc>D-kiP^Tx5VlXG2JF)~S?dK^P2nZk94Q`+SgvT5PhQ>`851Z9sr_1ka_#{Dq1?TktJ zcGd^eiNls5NAnD66+dTf&~GA(49WC&Cp>LAHaTo=wS)Dwq&~6Lcxq&6nY>h$X@W(a z*O~fE*6vMqOn7d*zc35yEejQ2%R&hmS=g+El>%z=lvgs$$--im@`aorWue8^v#?QA zo`nrgr{LyfVSUD^P6Q}8lGv(xBb2_CwXoRcMDL@uhzO0-Rjji{q`^F?U$NWLPV+FS zf;8)s=ZC?ael1q?5ICrW=!$6EmWxcE7kNjbf=W|Y(HG3?BaGt~#)&+PLLP>}Nnb3; zic|H62%^qeHdrKUjh8wfy|Wwo2w7h_vm>&aVR>f}E4@CX@8iBe zIpwJ(8%lTt$%Au!Jisd{*sc`B;yqI}tv48EP=Cr$>e&r&!t2c$I)M_+k7b&Sr^YyU$G_PTXnC@5-4!B*2foCHtnfMYp!1*2ft!DXkxo7Su{-rW7`6frYdt%5%fsheTYm6sWg( zk&<%YtxIoe64h^^9J*^#=_CHOKch+eH$*t#pKA39dmn#Ow2hgX(Q#{lC7#plb{dPW z`dNzott@`ALrLDW%7^w;jATlDKyIvJeJ(A6X^*fzY9&m|&8!V(z9_f6P9+a+yX-?y zUt%T78EHy{sVor+l8N?85@v~zcBXjJ@Uhv&S0eB>l94Kkw=1h9R7#Jj?8^IIC$6d_ zPN_8I7ZzftUD8JnoKaX`pP9BWvAyV{KJ$m3m6O`^s|ee)l-FRT=Wx->h2s6**YH*Fl+WfvA@+ zY{}(DlA;yeheXK2p31_`QZpS3aZe~f(P?f&c;Q@v-LfktBy3Y*W{X5c|2{~QCz{c$3?149Ckpcyr)FT1VxTa zGT+yiU70;CVbj{Qc8n+zHe;ddth-Xpq3ozv$!_YjKS2qrG(ytUbgI0v6F_?zw)vIB zTGG~b6&tjvUuZ#*;V|A@$rxLR>&dbyPr!6^)|ByA`G7HI6VABX{K0sxy+*Qj(I`&b zYb&`k@hq_qNm|)E%(&Pmc_i*^|90-yE0EZ8?MK|R4-MdMof_>NP@>eqeP+tDE7<}} z#R@-?W2f)Dtykl`HGag;kRIMBqww^i=>mrohyxOE+(wTOYp5B-(|S>fyHRo3>+?i$ z@|rqqsSsj9VlS!`RubDQzqRJy4k{^NxKD)Qyw^jY6bYq63Chffzo~u6uER z<3*2=UU~7jrl|X{Z%TxU=WZu4@n}dZ#G{=t@e~C*ap~3{OOr`?q83>!nds50-$G%vyC8~t)m5g2neah4e zx%}9S$8LdS+3P;`$VV!RyUlm1p2~7!HRYzPPJF16{eJW5HPkZ4`Qk&NB!Q-l$cy@o z=G&@~3Ndmh-HCz{(EBz-VbG{jHEMVHm4;SHRs8U$@|`MacP4!QJnmB&cX^IVI#kKM z(<`avpEE^xE8&W+dXgz&26En3;ZpU>D(Q{NRIj9hl%wqukeMZY7@u3C56MkcX`AB0 zu|V!)tNUosSKlYdfWcm@6sw2XR{5uL)C#!v` znH~+jMg&uQRWoHIOkV{%S?sl3{z_@+z$_LU`5W|jWIG9s%K%&~O=v?rPTM_Bo+k5Z zwxx+xX|K!bnCgsAH$S855n;BurJ;QqlT&U~{j%AKwdvkS?Maq3`qcy24)ZQOa^A7 zw>|{v*a7>7joI_R=6lWVf+Sn-^&1{+g|4aq^%q%_`U3ysSGuNTc%&yiU+YhEockxO z?jFaxR(BiuO8q|lvr%41LGV@Emjvn!^wvP%Vj0)zei-OySiE(&7X-Q&a|3tNd5MlL z4AdFu{{{MLpeMyWVNVP6>_E>8^y)xw3iSJd{xHyA1p3=R{~YLepoaqeDA4ocRIl>oXmg-91Uf+lbS@_YodUV_!$qu; z`_~r*dNJsctRLnYPw5Pwi&s@use&(O{UBXJGf-juAobub(jICD3xqB{i=KVSx7Ud< zevhX014$M?lp?JT5$G`Ci`iwb(D>4Br$7p!z zzb1`&!roHM8tDJHJGStnHsiz2gk*Qs6?Rt*vb*~JkKFF6n6<;zncdYR+@Gns@++k9 z>r{Q>*HUuWFz*=z0aE)sf_Jsgawig}-#(Ay(KW}`K-)mBS8fZp&jq4ul z)+Ft6dPQl#zY4vgXt|46D0b84vbbKkmv8^uY%agyi z(B7TfXP(HjXj|&oE2K41sU1^7D6DmLP;1l8w4DJ}Fns&W%S~CCCywecwZ+=A>A8m4 zbl+{{)d^lJPw_-E1lCrmH|xllNh+j-OI+??@qPdmOF` z34|;Ce+`*g3Y+O8E`D$c*KgsHoyXr;%slBCO&4$0?CFq}Eq%RaHM% zvPV_(yr;WX{!Ln0(~8o{j6lvzD}Mk@=34pB0{u;(zYlbCpd*1EPoVDirvg1I&~pP_ z9%y4AO{utF^-UZd1$k?5E?UFg&JT0}=n-0jxd%L$jqN2Qh7x4C)<9`bq$*kiC8xXK zY^^~Rp)b|TypV6wZ~5=h>}Aruj~`<3dqKRbb?V@4VK4K{4tStTUU|I3X|x7ys|xnZ zE%bH4{8Ft!FDazf;1o~&l#hkSq&3LTg&aGj1I-6$1qNvahN!K>v;tdFEASqYvOHX0 z*$SxR*;Gd1Zz&e6Whl}PG#R3CsLOkzb*U#>Yu5bM95fc;&*1}V4bb!SE9Z4eb?cs= zeZcIKO#6zgCexnS91V@hOtqSbPP}96ATBg5aH*w(YRyDrY9_2rKwGkHl^u=NOmG$w zyMUykyqPG>t}8CqOrX`+hX}Fse1ipFO1fR=xQPv>Qfi{SJzJ`|(YA%uj4ipJNVX1K zF_(5ia&x00spOlJ>XlNyDV>L%ex+ zrGDyj-bBg$q$>j6^edI@ar&*ralEUwQ0s`Wr{9PF%h3HF5A^SWz7eQE0It8a2Jc7< zHjV}Zod|R?&?%6&0vDkz+{cRoy%_Wet-##vk=6>ZJ@T}6S}0A4Kt(H{WO5g!ugXq= z(3ffj)+NbA>%X6TD{yApBh?C2PBkpI(_&@Y#jU>8B5wsYZ&f?_B-F?+>l{z}3%QbIytNYcBot;g|gSp?Ad&4DH6yt_+?#sX+Vama!A#kRIH-pvV5=Q9U?c!Cxr%`R>yTZ2bP5xcp?0eC_D>VDAdW?UCVc)e(gnva2lPg&} z3MRwO$)b*GOTo*)i)E1f>%>EdI6I-_S$0jKZ!N!V*>cb+3%IFj;OnP90P?`Cj z$?mRUzPDAW=oYWzKs+fX73O;*a&_~)ElyxDoU-_l6=sJrb6%U|U|)jRVQG|Jhunvf zg3Oc0G)m=GjYKjiANR$puDmMK7bL~TPUW%9cZ5{tqlWTh+ZD1Bcpyue220?^EP?0w zkYO2;c1swYxytEYf=8?@bpmzpb+-wyHy2>JO&&Y$G%<8TVJ(MkXQJ#fQ6}}5e$t#d zQJq_TzX_u)8QOZ`+b<-TSyuLY;z>FPC=~uK5s85gXj!4@JD9QoK;Krh=vDR^_L^Mj ziOF3(GLc)Q>&aOWZEZYqzeh8cR*N@_>WF*OQ*2Vb)E#A%70HI+EMyDVe5{g|j}}Z9 zpgi_~LRSXWW~nk`sd8+I3@TqSsQNgj@lW^=j|r*sMRk#9X$L~2EG-EtOEcTWb{x{_ z)ni9<#v5Ww(7aMo9^0qDu$g6Vad{mkvtD^Oo9I2Bp}GV-{IM0MX3-3lSeBuko@kQI zGPFbQhsaCpcjQ)?p(TCGGIYFXuWXUPHRVUjR?Db%ob7T)u~{TDRo>gotCfV5rK#Gt zDx~qEq$IrvNtwOWTX~%kARK4 zcqHwLh>h|+b~qD}okgD2nsuL@(2RRUncG=xknc(n>*X+RTusC}e-~Rsw67St^HyHR zfEN+(%0=AJsau-z6o@9JJhmqjXj3LorwPocZ@jp@-Pn3mV|s}5j?u8z#u&Rp`!4J2*`F{d(YGarlA2W24%W689$*yP1eVzUIa zvshG#Qy-$>AC$LHEB*M|=#GjRRf^2WsO$ZMm5V7a7oH_EQ=VhqL#fN?Yn|R?nQ~di zi`lF^r{qRFZfVczCF%(%z)Vu_SurmYV52Ju6D)f7fJ zJSg&UE5e9s(UgIjWut<`Mq6G~g-qbibR%cm$ z(z5(imgQ^}Aahd(#9(sCtH^`O{dL1uddDlufEA|+wbNFHku~RJaHqReRu>IdXMKOR z#YzKN-W3G-Y+o_3<}Do)Id&)yFh3%a%>?r2y(WXnB^Uabc#PdB;S~LjEc*Qx{ee9C zGdU-N+@mL#N}*-LgOCcyguc_?6$C=tSKsrT&Z-$EbFgs^1cvg&F}Es1G$`WWw4r)T_wau@2OJgCEWxuarYb^6YX`lx@flEGdA zQF|85V0NrGuhWM!`a@1{vS1G9^p-$bot_q{*XaWy_ByR(n^&iA6k%Sc_lsEjD@D4X zPVWUk#^dTp;I)e$azge+z`rR4*Bp}_(Vl_LJ zn~EK^2Nayw3xmFozM{Rm5rXpAcveb=v!bV|o7su#tdwA5opUnCVTN+4tQY&_;AY%b zFZTMof*^zKtM4_Z{+aerb<6@Bkq8qeh-!y#K2M@giBWRNtMqPM%cc;lO0%ulo9Yo0 zT?^((4^7IuCxSsvaFk1>=)2_Ln=DN9o&K&M5Z%6}t?SGVtJzk)N&)6~@64~D)z_yz zs}m)YsUwqVKB0G6w<%C>t+xWBCXe${HYH*aW%Hd!blR96T7qf$iavVIB-@~Qmv#w{ zmez;#HyQd?c3robk40;?a+LH)sUvx;#;j~IPUs@eyI)tT4>W#!80do%hT z05b*K)nA~qwVq00Hoy~Ro$pm+Ktg(fHt4&~c;R89clf(PL3I1dNQyV+WK_H8bBbc_ zfxq*rt53aHUF^-OREx>hxIVScQ@BK^gX0A#F zg`tacXfS`*lGQe7ozNJF6wuc>jrTTlTC|!ge@UH`R+2iZ`DT?`*hQZ{Lv_{z`ajZW2xg9p9=};BeZsP4+N<4-b ze6lIPheV^>>e%cnH;#~!3!@kwh-nj$7Dk;-?jP4z3*%0qiM#aIr9C0&(i%+Lo-=9J z4XD0ya5rQ=V`&U+9?Th9^ffU+lXN>7D4QsJQ*O7JFG>*|O1vYkvR8A3I-SQtW0rw5 zri5FJwA9L2RxXE*!G#DlQ2bc)tp?V6$<=2jfPBlc)gslzI+a(S4X$-M6(SfbeUQw_ z5kQr_M#O1=?8GW&&?x!ftg@zyrdx>>YRD(Ed{(DQ^ovbQJ}h16o7AjYe>J=_Ce^om zO3Yr}b&)Bt2Suy~T1C!U_vAA%)SM?7Eh@GN*|Zo>iJFS)DVN0JKjraH$((i%xl%d_ znXx+I^p*rul}SJ^Vs6k!Od}kJKFMvLF?Wze$8hF82CE+$U0XSsQXEuHHY|FygiV86 z)uC2h(QgY+yUmMQ|ANp&QGXYy;7M&*QFgUqW!u%pQ9PO2I1DJSYc;73XHrdyrAcLH zK`g@DXXE7SicXVimwAy?y+RXx`n!n7B-J5(cB!TXU8(~>lj=r5c^#%9=n{=sEvYPVYckokn@7oJX*XeszKF*p+kTO|Z2N$z)a(^Rb3CX}k!xLz z3ANRDOFJDGnmD1q^LcyK*v6;wx*>Vqu@x>R+qn6cY{$iT;)MRr_phmLjVf5qggmV& zNJr?EqP0g4CM)!jZH@k>B(@gW?FXeSX1pXD9o<)_Q>mafDXIjll6n_pmJN40y-_gc zb9&{M_rD=MDpL75?4-&;*2w5h3$RO3elk75es57_6`jq5dUe-%6q?x2VO>{3IQ+Z%Xc4M;JgWAJv zB)qn2%5uEe?{A%YQ?~ih7aCVVlX64dFW#zoB*8``t_qTtocLr56)Y3`+xCo^pP5D( z;NSuOq{&;}jyuO=&QZBEEROd8h7^5<*P_r)Uv(}CK@C(YSA$OKG~BAn>bq!|K2Zd9 zFFIo%(Qx4^u-_RPAEtW62Z7y3M9Fn)pOb11SwTuxELf=#qGs|+elatXn7xq7!YrL5 z#u!Hqx0H8`kRP^dkWsXp?$g#mJnMx6?CH(Rm9)~k+DWc~P#eiv9!H3S*pzon=S-B; z&IBt5{OMi$BAo+1#Ls%ywzbmEzd(;L1d~VQk($FLcSnOL@of1p)MW0BUSa7GK%bt7WzX$$7(ckJ5iC zE1_1z=xr-EMCw_!*~8a}1CiC!z@r8Xyjc&%)k9^)$hs3*GtS_h?AzpwQ~?OHU!gG4 z_BWO1ROq@Pv+~*H^jc1UzTosT9`I3#fs8S>=#;N)Mu9pfGNvZIBJT7z>Ang@)FJ*! zg%B5eWdtPGg^Gw349P*1E9788(dEbjW-u!`a=peWsyz+V{qfqsmzM0loj*1+36c{bN*OydRDZ!SV}aj`ieC6gFE)kD^YCa;hJG9 zvhqSdko8dk)|+`)DM^>BoYcGS$T&*6i?Mb2ju4`>hujuaOcOHCD?*; zsxnBJN?asR`dF7#M-t4)joO8%SJde~4+fV`oywcalh>;}Bd3=BL(6P)w{af$QoxOpKn;fn zEshbiiVhq(eWfyJmm`VgOd6aCV;T?oBxReRHHe9zoAhEW6o7)rN}^n*it4WiRd+@u zpbmR8GGIo$qDfCRyDN&xrJ(2MEXH*TmRc)fwEKA?M%jZzJiDTxcdtaXE}>d{!dBNQ z!tN(XBviLVki@BSV)d&aw$6d)9-7OE9Y|0UQ1dM{^5k-hmAxicMs0kol#1acyGfGd z#K0ui2-68AxW_muZ?(&$k^}dmzbOzkikj4)TVC5pAZqY5bpY)pvb5{({okA66IBOy zV>ac?xUs6d8h&r}Cx}j0cs?q+}|DHQsbE^ijgdS9!-wCb24(HMg5Hwh9-zlyG9on}S%# z+iLB2G1XeDI;2isgS^(t5)kGLc>#!fN@c-^u0+Pm8`@}^pQO1`8(PF6}F#sujSB;7z~wo(EYCrRg(_e93)xO=zym}+NM z+Kb|$$}3=%*Qz*KX3X2%XIDlgpgK{&U6r?}r&V67&gw0i1yQOr#LZrlYgTQk4q`w` zrz(v%WwTc>8^M4tpcn&xQkk`q%aJdjESfYG9z15AUqQ{^%>XzU7j zzkNz4L-|opDz(WdCADSS&5yNZ#*|qSF+IZ2hn);Cok~pU)9Lo+EBeJ)qtrM&>bOe* zV=GZGrZO`jzdL8G!j8NrL`hovo8^ZDVsKC)IlBkc6f0M)LOA<@g@w8EoGI7OAypRBgf9^#Q21-i;jP^^Rk4_2%EZQo-4nJGvu2j$N=$&68=9FQn}O!$q0n#A;@x(w`-+jw!rc@KL?8r{!K z`2bzIN&SD)$7u$gM#FJvY^a~ntZ0NAGsPEI-u5|v2=`tSfe9uOb&j^5}->ve7m*G^K>bn32?bP^PO zDtVHWbGnVjkxbCXqqM{w94Ih@M>`mYs=IEBDyEpJdRQ_$E8Z-p;mE!*c9>SS?}uTB zocqO9J3)6$g64|IJ#OO4pwMY8F_=X1w?p!|Kv-kT#FRcJk5iV4YX{4^e{^_UayNt5a-p`rZCEd;6I_-OUOju9X2@wY$%Sk-0j1Ou zjh~=J1*m~*s-7bXU`vKQwMHQH$^CsYk7Lz6on!qA67TpJ=kUs_P7W8z+BN9 zou<`kPC1Qc)kAz23DFdi^@Lp}9f2{Nwz=tk#$kIWe3LBg$EGDq66q-ktxE0|D|+QT zNVE~XQQlQV=N89w>Xlc?Z6c%X<*~3p?$*aC=cp>V<3SvZSw*!Rs;rhH5D>W7;Ze*N za#iUiNaeX#Nm0)gF^>1r)xg6r9Ctq|(MvF7GDjaf?1tar@{YR}Fx^CvpiNX?PJED0 zTo;yz?}SjD5ipuAHB>qNh}*i+0Z9dJd~LGw~B|(HUG_uN#3reZdygV>g}QqSW~0e!>uKL z)Il$)!M(*uXBCNQIOncfMm$vKBEG3YGSBBUR@sPaB~5BfvZl|tZ%%Cw6V(lp^CYJTuAgM@&?j+|Ols3CZS-L=!nY0vfqpy%tV`{blsChpgTI#N46Zf`$T!i2?Db!z+uZakh}wXOzSk;QE;1KF#vU+ zv&b8`4vxO-;700>;wGM53CG1?d)MgbLvZ?r4(P3j?1U+V#w#0>=ry8sXtleZ*%&bE+eU{ zFjF0BNG(%Ov5+0zirfX{E~pNPGTJEBA?PdQ^g7gtdz;mvCXNd+V~@G5L33qI(s?EA zCVNFcPc^B{Ytku#oL`d$@|x5{U^+~sbv}y@_Nr^!dPlLyv(b%T=E_l z!gze3HwAi2px+5J5@_OQGQWQm=x+l3U7*=OCj(V+BcR8vCeRB5T^eX(pjQO?lRzI1 zv_H^+K)3v#ER6pQ^qgmBZm$fqKhS|dhXdUiXyt{O-%_Ao3G}u=*9H26K%WS7IM8U^`xaVZ(rvg1Y(2D~7QlQa5?+f(7KsN-sE711? zJ>{Y-v}Xh=25JtpCeX$}uL|_qK))I2!+|~(=#D^N5A@AI{~hQo`rhYS?XC;-v_OCI z-0bUtK(_~)3G~%K=RYs=u{zMp1HCTL)q(yX&_4$He4u{|bWflM0@XY}3#~5DGXh-{ z=;eWi18onqE6|?@`dFY(1-d!V7Xr-$`gaaI@|65~pzj3wL7->7Fr&LD(8YmX9O&-@ zeLB$R0{y>0_XYY+pdSP}=S5j)R|I-}psNB61=<#9XP`d~^p}C&wKC&85omj${~PF^ z0^J(u3xU2EXw#~UUr(T44|GkSYXiME(E9^@DA2b9eJ{{i7iVFd7wB1mE()|V(B*-? z*P8kLaiAx1c$eq-lLK8AXicD(2D&29!9ceM`nN#;9_Sl^{xi@I1D$heCczs6T^;C} zK<^Ip2Z25i=r02OO`wb0GR`j!v_8-)0$mg6cLV)ipg#!o<3LZmJmY*ppbG=ND9~kr z)&|-b=)-~jCeSAW-5ls&1ARHreSy9msPDy@RQ-VlKGOYY9Qv)d{Kh+m-mX5YKIgZw zs~hSr@>9+K-R83R$)7j#?MEVv-=lfT&(nh|J$A#WoAi@B>%j}pdL!;y?Q}o;7Ebur1SacmJN58M zY=%LTdOJ|u&13A_XJ7l{^WWD%u9pX^uN&e>;{N*U2Dsq!%lvIG4>sV|`n|jP+fp8^ z;S@NWo9ttAd4TKGL{==9bnPkok@?#=dlnu%(QzHcI;H_TbiN17@8BSaT7u=i9Hua|y`V?4 zJ1l$Nj(|P5=p4JvnjnEywPI7R!|>RPgaA6`lo`ZnSltX0JKVG|Q(Gh!HnJyyI7C2# z)Li!fYc%p>=gxI-uYKi~zWg)_=JQhE-3VDA_)W~6X^ul2J8>HZ+gujUO?D`AKgZ5# z){WUSJEU!3-kh8cVBVbO>V-G?Tm3)+xA6v_wf-2CTxn6y zcXHB~w>0OItpM1ppUt~S3ZMBnil6=po(%2b$(2buHoEaWd__{5<23oin-7{g%g-}K zro>gUBDqu;2&n;?tU4rC2kDVZlv@IT0%?smGA7Q*tvMA71Gz$4lim1Qm7e*mrGTVW z0k-3+sRy%-H^3E%#RG(tAu*||ut+zPY_7z75Ir$b7%6onF=zL=#ML3O@n&5maZYo< zci%r>TH~qtC`)1SB{v%g-=)SXK!h>;7p`x4*bi{s zlAW`CZZ;=!S=D=g)A}cxh|`2!{`>ioz&GN2`ls=|geJoK zNb3W=D$p+n`n5pU1p1>u9}M(Yf&MPgrvu#{=<9*L6X=J59)C_I)lUcdKY?^gp3D65 zK(7h(ra*5EbWNZS1p08Gj|TcwpxXoeOQ8P>^us{slJG9e`GKAp==p*28Kte^whiR{ zm)pYa^MSqudW8PVWeZO(zl_XR0a&j8qOvx(|1uITDqFl%O`FT&{g-?BruI1hRkq4x z;-bB$$`+aATa-o|6@%<2UZ;0f?PX`weWA10b|$@-m6u+=p!d>^8e6LO(n|`d_i{=} z$?pmLFFXdlm;AKBt%Sh&g4QqbrFpt1Q*v~B0D3Tcc^kX`Y|aE62VMJx^WQf}K9su~ zucMQ|o|;V@9ot>Uqg3v$<Rr0Lgwy0T)HxZTQ|FL-n9-|i=^$xpRMc+rtZi9y$NyZ zN4v8sNs#n@BtKmX_|(j9thI0nTOAsDQ^p6nf<)tpv+M5Tn%nB~?8c_qjm_|1>S!~% zJ{G}w9UoY*ZR;b~-Na!Dgm~`k#_G8N+9~Xf2!Drl;If0=>3Avl8c9s=v6}a>*^PzS zjhf6~s{gZzbw#>YSi$(FNi|_wJsh{3AW?g*Go-{(^Gu^ZW*wBD!Iv(TQXhe~HnoFv z1tv(83o`G0=Dm*)&3x*l$ z0_bl)0or<_cS+P&ObAO3WW*9}j1qD4Y-3qV%7jN3=#SZWroL(81RT_*qmRkoEum`bX}x%~IClH*nB z*_@v4TKPBi4vynpy@P7LA?@k+4!#>LauqDRo$Ctpi-ArAk~ON+X<^)3w~GkZ-Ch*v z#h^!M-P#tmZcI>ADFVy2Zc3}Ut(&6nE=n8mDDX#o7QOF>Z_?NK?tmU&N@8sD!Di?Phu=~rj+O&mxME2?e zO;@|MVvXx0UqD)Zef@PTu7B@K{B6w|(ozFM^yc89CNZ^zHh6E~!1&T^ z2iISEvqpWRMbb^>TzY|J@P;MNH|SE6b3NzGvnb59%^Q|FBg;(J%!=}EHIrL3igb$+ zd-weTn=}$qS8C=(&}f?vH<=`ty~Pne;H)7(?S+J6j3eRV>_V-Wd;99E=hp1trE$)! zA~dq{>^+5gXHl5lP@LOxrKYk=eSzzBmdl1kkD$#q>+0-J4azl3&{ZsSnK}ubVUeXb%YZm~#q-u+E>+G-ZardZ}C z24@+lmDIj*jiMRzT2h@$gE)js7f&^a&YzB$wfoP)MXeuA>idbbii@_GK|0f?A-b_p z%i4?E02U`!z-XXNO029Xe|B}d+U0urRTl_MpWyv?8N}-ro@%1|d2;uQ#^%W+n3)3H zdSXt1`3ba>W*C&Im2v!R@@E`kt^j%)@f#2GX(RYdZ1_;*5Qanh-%msj*{$g*i78cV zSuL|EmaEj0-9}cfEPK>Hs*xd|tbu!|_TIx$Z2D*VZ0;xB91|8ZicNRSu`sJaWHhTW zKQ>20Za5^l>B59hc$iO1hltHRDK_+aEH>yP40jN0Zj3N$%A!OJ==xq8^@XA_O`mF$ z`hD-GE2WCtc>N;%8;n54ZY|~go3no479d*@EA?+4pY?ApU)aBSJY;vEk8k3C{`-ZJ zn#>fIFhMpRC}ck@g-1>P@tL7=sPt_bv$=mkAHkWTn|8GWA@ z1bS(pR|UE{(C-GiA<)f%@>zy+=#zM8PY!fJpce$XB+!~bFAwyZKyL~(5@<5ekwE_( z=-&g~7w89p&LIn2zViY-JPjwqlf$aE%M13)Z*uqt%ChoD={0|aXM}pQjW4y(==Ws)7aoINWEHo&WjDKh z`hxS*%1#UFt%K&c6YbW;oj%=6<8J1zo*u2`{2BRN-cV29pli#<@c$lK^M*1#r|S0{%N949XvcIHPEo^2YkSlJ(x)nKs5TDty2RmNc>}!< zINC~w^#5n?K0%v*3$%^Ng0aiS=8d!uwAl!=sa&d|0cnD$ajd*vxOs*<%tqm7t%TMK zsF`XXvpoc;esj^fL{n-tz6sqe3eS1g(QMo+jut{KAGthdjQIhzYZthyIwUq0E~Jp? zK1Nt>586eCQk^#s?>^F|UJVc8XzpC|BI?e`9I?^*Hpge5US6-zSgRQ2KD709v_6fa z<@MF}d?f+*zPJ88Jo+@EzWJtWG;)3yRYP%bU^-lG&N>Z&Q@aaTN^Ht=e4}OF`}C($}8X6ch$gELkmB=z3IoUkRi~>(FK)ZUlxW4xyH6v*m(rrgiHx-9 zz+5w$(cgcUWCYrRtG^sRa z(wa8ureb6x6||}AJI0qc<5If&Cg$#3)Aq26&S+RZrDd(3tg(pfwKc4^-4r(V1*@RL zLsr=g-822l$U4`u_n5koy}V5#s%I@7rDCnFJrDK98Hbk{$;w~7{gvjH)~9oPBBKkN zclJPOLeh9iAv2*UerSq;a;ciDDbQ-tt-RIUeG9|0#xZnYa|+dsz}wJ%7J%zN(}-@6 z&C~(*;C*z+rN2+W?u4a+Mxe&Co+y1qA2|m4SF9N6Ij`DdoDFHb>NNu@-?{@0$#rj8qpl!kI{4r$s$1%L*wwS$Tbb1JlTAH$ z&QZ^+mQc^>nlfdZ?s&A{$hwk)LVDJvr@JopH)-i!SV&82^oVSyuccN0T{B)4=!1d& zI?$H_-5cl|fpUF)0R`XrT@>izK))2I4}qO-E6BC9)==H;qk%pJT24#Py(3-4Psy;H zmR6D>j)mx2dbhbOuBC70+y4?R9e1G5*V6IfjJ0%jo$+#g-Bm3uE9YzJcaddFX=#nJ zq@`;aL+JOj{4YEveO;d!{qzN|T=P4Z{po7;ebwj9`oDg&aUU9c7;U|UY0eQOVZL-+ zj{~-6k;}@q^LFhw&wrm5%h9~j-c%;*^-9lMFBnbI5|7{X+Hf zWYA%Ih%`ZDmPuOHp$BU7Ld<3GHQSY^X$tzQ`eNs8YCVi;2q@SOr-F?6knM&;^~hQ$ z*ZQ5Ao@P1{ZS6g3lU9>C+E{vvCUuw(qi2mw9fo}$x^}ph2q%+>NfF-D#38ud=T-2f z_M|<{NOhr&&*oiikd88AdKm4m6+~-~B(1kc-gfYvmZ;67Q%fY>?QL0V3)S;iYv%hB zHLKfFB5SHsp@~|`gMk3&o>{AkhMzgeG#l?~m1fj>aP2ya(R0jnsqoiBi{20_HVTtSoxr8|0#As+^ zy|vh{fYDBZR_p3Jgw3w#tedHr*Z&3!iDQTQ<}|Rn5LzoX+DzxamzVtc!t`8~p6gfQiW#B7H+Q$^m@>8y@9!xS>vIq!2jiX162@`G$utFvzg1{y@4zFrnW5q z{lvy>aar~J-avdfZOiixFEZ!{na#6yXL6T94#t<^9)shp9FiMXmw!DGGz%(TDCL7nf z@&;=j>A2?{QKNNfGrp{aWzKT~+IBR#8ek3eSW!{~%wL*W4b!p?fe+lQOOnfI12uIs zXhJ2Snp#QL#E{c1kLbo|py`87!t*AUry5qYGlNBIV(BJWQ%_^=16wumqPMTfpVM0- z4ZU$Vm_ja)UaVuPUBnkB%h1Qtf}57%`e>arXwzU=Ef)=x^g-5~6I-={*}_(0&8%4qeg$GAi(U)GhOkGSGpk?Ov>sg_g-?sF zlxC5XF4a+d)s)va5}mJFNVV36HEQswV_7d?;JC5QEUj_V5LUg&gEM`U26Yj=YmrY$ zDo!oo+Lngm2k~)_hS%lw4TNOFT>2swJM}`CDrBfkJnMNL_aDJ0ndH;(?84k;C79KYU5Zv~}U%CRlQZY+L2YYp|L zISuut*;Z(kh3lzV{>xhHRV9CKN>6`V>~CtVcf&%hwffj+)LQ=r9=x^roj}upjs|*4 zw3Rxt&wacs(5nOW1nLX)JAvL4Xj>qivF7~l3^WtyM4)d4x-{C^)qyqy(hV8T@6QA6 z4Rm85-GA zlME(>x6H@QW$~6-D~1Uw8~!W*>*w(CRkQ>K15$i?qb8*M8w$tEs_F%ox)0%CN8vb#h&G z5!C+P_G=|l`K;?6M=M=juKsJb8CH#4ch1YssV$!MqqBZ+?HAttm9axLmAYoBNjHjr z)tkiafA~w9X9VxkJmP|gr$5^!mFcx<56ElNZQ=I$K$>k^rZ&x;^iucLe#_OS5vY{O zlETZwG*9_j%qH+&zNswazelq+Jtt>N==y1j-G7qjHNb2MBIdT{RiQ#YyrE1ee-DJY0R<7OG9ZSxT#hd9|W~`CNq`b4LFbs@dvKYRjE^1G4^UXU6*zHogJ<1(?U&wt>z8M~JTtHQU925GDCsH<hcwKv0ps7HIL8&zhw{Hjf0ce@}ck!I1L92ffak=`p+h{85-|^&Y zvHGXoxGF#S?-pFaGOY!rIaEgM&B zBszZ-I(q5>B*T!hnoMRYT1Q$lF|D(rG0L?wrT5zL*33^g$Z_0`qsFH96#g_iUHy1m z*OsWzF*;o&+Z^!*g%@>(0|uI&~t zzotMFzC#QP?4)VNKtuM<=&nUPc(xjY@>-3K%WDT+3jfNe(7xIzQb_djM}XQCp{uuM z+_?|NTq>g%X(B%`+2lHkTY0UGQP*}_7)|!K-$TmcYa`t@`B!WYGGbfN%$seB%?>!{ z1{x6{M3bI7?G#;-nv=N-9e*Y)WtBL5TLq#Py?eU06<`-tQ!OATj4&FCy_i(JUtM zUOtr9ZZU~%a$>DkHOgyylEkwsl$18F-%k|tx4!aPTXR_3<&=JH02yuBY8gGZU{G9o z%WE~&QC>Tc{20X}7mj{L*;>ue5Z?{dEeobBLbj)=Z{{1RH1C$EGTlkXvueg#1x%;- zX*`>bW7T}eq|GyvB(lBLt|YD7^rld@i;v3QHb8l;t%0*LQ(oI4xmlYjuPs_U`aB-2 zVMHo%wwPD8@>-jSS-UC4)r$Qir%z{jt)^|tYlo7b(?}ofN$QFe(t3&?!h&828oNz3k9z|rA>Dwi`;Uc=(d;$!l!`ps+>#ft7qcKoACX#-zz zO^5orp>;Yi)W5}yk7lJr4ebaIUoWD7WM0#^UHP|zmd9*)DzEpsrW0&qDsL2SWg&?v z6{dEWgYrclzUZyh7QFOLD>&_%j^T@NoB6SF)J`W!%Rv_q`f&y5r?eBf23({XX409- zObC(kOumuOW--V2Y4@>@2XA-z+X=mSG8IS=*@{=%h|Ai+7l@LxpV1Igc4=BHXzIkS zhnd5Su3o|TRARl>A@%N|h?I2X8<}L&jpg-P>1xuX7jf5NjHDbXqLry8x9*tG@>q46 zY%8xX@}-#4O1O~HiYYAurF#jVv?4WzNLI9_yl8QJqeS!4V>!k|De`DqFr8t|MNpD9 z9rMm@IC@iB(E#AORsMaZFgvtS&e9vnIUSK}t8lQ+6U%98ocqr309#D$Yu(w|iw3VU zbh-WRTg&TZs#2F?++qeRjbls)uCFD&+z&G`dz2NqNS|h?Yh`~(Iy94>Zp%_9S1)h4 z*AXf_Qi+<%t`AT#nVIs2NP?^0Ynw$XIq3}hRO$8DM zqwN;uYLDn{d*P32WS+e4oM_yG(WvT;gJPPIP|}CwxxBvBQ-;`SJF6y9XFscHMlC9n zMwFqNNTVhMts!}pM#9x8mFnfLw86ce)UDPe=-7|9S^tRMk_KWvKUoB6e)86{ZXP>e zpP8aO{M{e_c=XT%NLD#>aPg{ama@Q?&(p)QU+GOH2OHD#=hM?&7yFyWFUMh_@k={2 zXEc8KOFa1a<>P_A73kqW>M%N8eW2$BS{0~0P)DFY4zxSaM*`g#==MPQEaf-CEni)H z9K(2*o)@Zcc7nQ0P21(2=udo zv{S*qZVdFwK))17rz$v|b|5%K)~?HRU9E-Uyi-$9`pgO?iNmq=iB%a1Cd`6+h`kHH8(UoWm@cFkw2 zvDRW1x|vzFwrjt8{`*D=ns$p>>l&X&L&dk`)7Y&s-&RV~*o@RgOAnu3lm2Q1rABq; zvuUEuxAj-6No1){tImzdsFk)3+tXiwK|Af*SwA@Izpwr7yFa4Yx7x}kERGyjnN=^r zf0^ZfRVi~>?wMM!Y3S5~i5+2|{%m&(9=zrq3Um_W^)k2iKc9SbI$4h{Q!iT=&bvvl z<>uX{jV7y?Rdvm6@sMvTH~y zTUyd0QeG?n?<3U8-K3dnWwS@A>WSdOV^Axrl5OYPhTmcKoxY~zHI!XA%zHO6Lmf5r zHpHORQYo#L0S!RYoZL-sF^H)`#Xc@gG`X!#Gau;bX#wt{IsIC% zGT^mY<0eOc5$JCNeI}5y$m!Hkchm`TJ#lroy*1D~LCffgxn^KCKd-1PrzaF`{+Sfs z0`;1U+RMtFe4;t$tT7%c=lSm^r6hPuig0G2ktX(jkU zBIdv6loFW#OwJ1*Ne`$tNDoNG5%THlfj8p8>+(ATT^r~VfwcVLbh=m5>-@%Wdu5>4 zgO;iDa}7+a&P(j&>b#=Jzlu6vGMB~c{FQuDnazJcsX8BaB=hQgxSw&I&${f(t;t>9 zx^PYIS1(+;$G-a+sc&$Br`o^pC_Dyr{^;k2S3h*c@S11reEpi2OrEnQTcaB}`Nh>U zzjpPSySD6IUGw<2*?OJU?WW(|u;%O!y<*K+>1nI?{@m}b(fXa%@mhY+`I7TL_U<(= z`^NLv{P#y*V(WQY*UQ%M=CAE#BZbjZlV~;8^!DkozqnrymTvUeRy?4`-r}?#2a1RE zVD6j;YkIqQXie|APseqwYFV;39o!l0CSn^+`|rAYaa@#ClhU! zkdwt>zN$R;@`bFm*W|h&Q3-g+m}w!iJbEkwUOsJ^z{V$wisKeUtUYd0bX5tu0qG;1 z_;HINDJbF7LS&aneIc^bi6sn)Hf~fTqf#X$V~2>9j3trks$hi=sr)c*&?sTD*e)uC z-Ujexa9#!>DUWVVu_Isg?yKXYha=9F#kXI))pf~>Z=ZRx#q`lV$y1i<6vAGdEaYB! zU69h{wOW8LkDiR+PA7>axRqfsjWXP-NO~D=QDTf2_1Vg>Vn!lM)>K5BMXYkzBvPf) zxP2x8MVwN%C@Q6H!5J!G_*gRN6eTUYa1VXPs{v3ReJI6+G7h<~=tH&HUTk51^u~zp z;zfCr(c1F==&nS&SfX}Aw=hu&tjie4a-cjq6M>yh+Dc|CzTzFlw_Z_H0jl$a&_^r2 ziWMm$fm89V6{#2B8Yh-8R(wT80?SWI;A#;ofvZHS;;Zn<3;BuS`> zl9DOMPB&6=>yFXAj}X!k)__$;8Wq4D6wV`P@&>(7L-iOhN(^u4c~R)8PoO1Q>!xTs zNa`iHh<8DRh&zjSItNLg`Y7Wjc63yjwi%FgzCakx&gQ7tsEi&K8%m1xJebI_zLDAk z7tNeA(Ne$3Z7dFngO)L|5fYCT3T$SZ#|(!3yb{7rGwp((k~Ac8sS}B}!Ux1p`FbND z8I+9f^yDp@Wl4GTE`L?2%G=aA`C2DYJYQ=CJ+?LCt$eK(@6iVno1H}|zhr{4)2?z) zRw<+VA0ebHU**~Ib!V~4f+c&6^`zZ6Pn;!9WUqu+kiG1~vFz2*`49r`hsbtEPZsxy z=eXI)MY>7;ik!?cSly8dXQkp^F;WKa5t}T7$4%0d%jzz8x0x4HOKKG2n>2a)rl>0L<08BVU>&IO z;wF)B=e6UgVaDcgcZ^d7YQ?nl~je z;hfOhiY~F@e%(%cnx{Jj&(jC-(g(}eqjJb%tVr_WF;?{PIbQS_r*9r(`{o89ZWw4W zw)Q8<#f94ya*ZdsQj9&S>QcF7pvP_2oON6#&Ieo+OFc|9oR_8ER7$;hakM_aqUEuN zjkw?FY^+4MMFuP-H@*gZkqIKc-62bnRPN(>VjyU~nH<|?N=z{5^G?Qb(Y%IkZBsonZM0kzTx z@lsJZ=5K0|%NrB5cJxVv;2q{a@`PMsQC{B@ybC5UycH|mEeO`yZs8cm_UWpfk zq!ox)Uep0~LP~VfH%^GY0YIV=0O20?Vx*>lw@w^qSF}T6m2gs|W|e4_&|Z^OBo(Gj zUwMig5!@~k&NJdQT=fQcCR{Z-aW1h1)Q0dI1jMJ}!6C!l^dvO*VpqQ0WCY09Bpb z&9s{rjZ)mY8o}rW#w#x^L73{Eu11idW*;BB^$|Nwm79Zr67O;UHMY&OD+-E}+Y#%X zIw2Q5i#&}{4~!o0B9}T3>e0-geZ@9AoyAW?QDNq!m~;jTTpGkh@zcHRE^Ctl$YRm# zp=1$G-#o(h&8rvo%hWBu`M_i$HxxRBMY7Pam@JZ6m7!oylZ6wCnNjM$b?a?by&WEwz>*u+d<<<2AQF6@mQFj=~#94IOwLMtg zm?$VM$v9FR`iw(~=ce-d?%>gk+%#K#9BLx}ee$2a;@`fG@ns0kI+H~gUGRjfnytM&UgAj7QH*ABSwN?+P9*CIfzZ`J$cKeLUfjDBxifD)nkg zNIx|!y!Gi#WuTpIlwN>sxNns^lT%JLpf}}bD{guLwm{V=cem(etYR;9q&~vXV^v0H z-)bwrsl~yr+p@a}%65IEfmYVisgOTL_Bf`U@!AzqO#9_!CS25eS{tXx)+j_3*#f?g zxo`D*c{`;yG?(61R9hKwD;nEr#!;a2mdnLOhSV-@y$Vtm5sR04?jFtb%@ZJf^LS~q zybdx?vP>0|EE0lvNu-FETMc_D)je(&mvq!#Zf>iDnPFV76!C=N?dW20vht7ADYmI4 zks+?m^^q-bqsqVCFJcXdo44XF8)?z$aGloj#zaB6F$$Hv_L)B8P|dTUyuLHao{lZB z^51Cw`{X};#lL-(e;xlLi`rVA#q#=1;lIiJ^QFL-8lEjYo5~v#1w4$xdB~8QB~GL) zl-KtM4<$M+fViuCbYMd+lMEJBHO7$HZh2!r8p+Iecae}Rj2z|R=DT--wBYIHyZVgz z?w7wN^W8~a=B#|SE^ZW&PTMQt_4}-_*su4Rl08Ry{8{zd^fcE+|75liEN9(DhHQc8 zjMhXSz=N-Kem_tRCB@yI9_U4ZRtI`jAgzSDkAXl#f&L=UM+1F2&~1U#p>i(yIYIg9 zK)L;HktB9HRV_zv2=ul<*9ZDQpc?{xJkXIq{}SlSfxa4OUs&FLGSEz*`vUzq(7C7( zmrpmZIMU54jxGsex3^Wxex52#@L0py(2m0GU z{}kxfKwk^=tw0Y2($-L3_@b6zG+KdIG&W(C-EM<3Jw{^fMSkcs!mT z=;s1$4D{|m?+f&ofj$ywHqbqR{v*)$1Jyk#3-_6Ungd-P=xu?1JJ9b3+8*fBfo=)( z&w>6e(1&TpJ-+(_eJ0S+K-C=6>2yC8==p&z4)lgVZw~ZZf!-bHj{^O9ppOOmr$FBg z^rJxMKP8jpseyhz(8~h-VxZnY&!P|G@n{b8;y|5&t_d_6Xh)zw33PLyBY|cE-4p1+ zKxaKQlb|lpGXuRc&}#!-73kLjZ4b07&{Uus0zLJov(TO$Xl0<)fd&I@3A8QH&OiqO z9SZb?Kwk{>%|PD|^mqm-p7u`*)ETHdP;a0&2ihKJSD>jtHv}ruiSRHwK~!trt`4`i z26`um%2)LW=agSM*C?9itx8>!r|FKnc-08iX<B*r?*>2*JJ(I#OWZ-SVy;D{n%;-h+Nq%>qi;1 z(Ti<&)5jWScXSAkZB(e%y68r&U|UyS8!!)M=8iImOs))o83h}y89{2KrBM^6kSG() zm1O6?v23T3&NmFAS=;gNxT3x_N=!D@W=kzYNgFcQu#2-$Gs{X1gH$761EZ&NdxA+{ z<6N>$tSlEXVzbb++gtlobw;>(WVzOu(7CDdAXI1U^5jO{!Qfxz1|`zxbU0;n*{)8F z4B>|KZoS>1Q413Z8nPto?T^~Q;PsUw6>dTP2Qho^fs6E@+g5dhDx>|HO8#s}&+Oe@ z7yFy-)qsUYCTN*68=36FgKMMRfo=$NW1#6kcLe%!psxq|PN2sjl5>7ipoT#CPQ^>Z ztrTcepf?2S52V!-=d5{P*P!{Srsu~<;sVez8g$;R!peCi;c^;unsE7-G^ptS!jiAW zH0XtVQ~l3>kERBFPR=%I(4}{k#I3>e6ll1gspV+gD!i=zTzT>31^eatQ|Hbtr9TxF z>CbIE_0vheg~vdDW|p0qCFj_wMs#M2PEkT{w#iZ)o!Noz?9}}Zmy_!p1&X4qHAQKA zN0^+-4$#b0W>Ot&xX*4$$PVf>^_fk2X+kPfO}g7o?1(^h-~zO%C>o&fIT+nXqbZnCI}w}PYwU&`eAPgJ zk-B!V8<%P`Z_xWpA9BLu?ytCRW%s(>V8dk3sIExpa!uGRO_;7o_?&6N#!5}tCTn$R zSj}PhZ&k^knf|Lw@9w(T-=zOWU?Ke{Wq<&uZ>|1IcyL{ERiNJrbZwwN3iQE1e;4Re zfo=)(*+An6=V9ytxxUKhV?G~WzXV!FU(LHGRv9mT%jqj65C1Ck)wH=RuCMOpo9bKs z`$_4mxCeHgz6$p<)mL#(?6Ugm(n}WTtLHJdvy{Fnq06MNj`Gy+LjD&X1AX=Ge|_#6 z-3$BR=#%Vj*j=xAo!u3yJ7ZV==;^DU_?m9JLsoamcK+4-SL@zbM4597SQoc|u?B>0 z(=A||&~0`Ln6~MoYh1UXikhiN*15C8eock2#}56{!$k20+xxP?cE@ax`LlhODHJ>A z(veR$XNM+RcXESldrjwv3hma4To}?Zp-w=X>4oy~tLaQB>j5^SXPVf3$JDsKnTMHg znx@jdS<*IXahlz^bj5V+Od%clbYymgh8DJ<;HM&Kxq>^!$dsxX9pq~lil=oqU8LF| z+cGu&>139MbPL00`KF6utgA{WI()f4Efst=?zqhFA)qU(&M)Fgze=NXbchzjDsFqg z#dJ0XW_*y{n9Q%4BKPRCl6e7d1$8g!=W6#5=~K&9X-7zsM1;EbB$U;mdbxJGNMe9z z7|>m|L{<;gd1xNLenwX}WL&iNz{)|QBu&*{#-%=`w{y}u1gkPF9x>PQy{_f$o-*}! zxu@*V4;S21cKO`?F4KTjnjQAvPflhZ}pyvm=B+%MG`8@p_!|m4ty))2tf&L)S2Lt7^`2QGgp9z$o$MMhM zc2A(iPT|lEo*oaa8awI=^twO;f!-D9P@t0_Z@11xzd4ul1L>TNW!kNIH&d$cE9;hP zx26e~=vjzK_Y#(TE!xlK+l5f)zn@gQ6*o`LYq!GvjM}aIPRhcvyE0dkhyAhf+HQ!f<;F7T4~nbhVnXV&eo+S%1>Wkr)I6Z&bs*7%!aI` z^HuB7=&HhZB)Lj75r#jrD<)N_{RPOIW+gShvjwJh2=^NnZ;c&iu-G?!`f zw7W+=Ypty|`?*NG)!G^Qw0(CVK*0{bw@_@BL*Yvf)mF_+Ojz$78E6aaTQ)ZWXGu^G z50t;PMtY-HUm-=4_wPBUYLph6iO6hi!p& zF)DtKrVdTpK#e;A@mpno^+)n_@?7LN8Wp1C9E$Uek8};CT}rufWp)tFvRZRh%VjO| zwdNNn8cX%|3nZg@``L{qmzn%ky_IQ&)1tppRn_zhf8`zTSoC9s;|O#QPF=L-2cLZM z>eu|)HETA0?5@>)J+EE!K;Q4Knfh}7n$nu>s|T-s!kW(wuT8!CR%R~zeqU+QA$s-$ z+*!7z*sGa~%V->_yQomzZ6<{PtfwC@-8y?V8m&bYN-A$dQljd;Hq$##SBz+vSnAU@ z$<@aOsqb&20=fE#AkBlwwIEmL8zTS|FH;Wml#4`I&jL^DF?&xL7xl#Nz7MxsQh!>< zY&2*(Lb^NajJNPsNZQqUsM2xf4UHLUjhioUw)tC_)SFJNQLqX`0Z0sjLT?u2!qdC( zJ~OS(yL2f%V_lOGBIdqCEnk&Fi&OGdokdY$8O=etWWJn_hi_r27p{vwXg7?8cEh;g z#}W)39wC8q`MkC96sjeBRJKxxp1U-KrxlA8=W1=6kzcgxQs%tu1w@%0Y_$?(j5d)uZZ3=W zD0DN6+QrZDKcIl<_dlVlbB1`os zc9Rg>h>vdI(N9XQQ1$5dDCW)wcGF|%W1YkAL>t0Hn#0}cF>Fzf;RxB{YaR8r)-h+U zPYsw__pYSyzroH&E&qLO)o0KKS6}hCotrdeH!hQKj*4c0W^;?>4eDF? zoTBwGoOgQ#@9h3-t;<;dB>GL9w)S?w& zp%zUIEV7<{i*^MbTp#{+ppOR1SDbU3*;i0Z-N$sGF9gc1ShdebvBTO1zT+lTBTBYbMr!AEfh+`qTw(K>R#kJ*Fk^>Lv_rF40#wnp^GX7e1`m4j2 zwOsDYE%~g~mbFW3%ic>|Tb|;npZYR|$3R=^j3AvAl${f#Gl6tAPkwoi{Z9JfZok(W9q&SaafBp+P-3*F=x~#bG_R6}RYd zpg5w(-r~3(>=5C>xk9pG*11C8ycpL}6+p&$ja117t#tFO*Ugwb>l7x>THRN|vqm!U ztk!u*ruSpiHd)+6>!jXtkrQ%YDWyF+P5MjAOId0yXLQ6J08SEL(%Cwtxz6mJ5L=d- z;g8gek#sCaw;)#|r|s<3x?r1=F>syXbT-b90O`Pm^nKbqb;wb4CHZ#7QlreBsS)BR z6%lB6VH=>l)@Jxd3-bgba0JTE=IO2YiU5`Z<rmlP=EXN?ES%B{|E99)NUK*XZD!yeS$=Y53e75^U6ZoDW0(&$9w2L($`nsc{n<0C611s)U&@SiF7I>Rb22W#;JgNaXy;)IxJsDW~My(6Xlep!5j~Vg9ER5TD$QAbfb>Hds#pOdPPL8{ERl5FYZq#{lUT7Xwvo=lGORP!xliDoKK*~@-Uq(#tE&IcwyZ=5E@*^;(S48z0Rp6J)@2adPieMh618kWDg+m{AVH#3 z2vELMNNLtTemd5#23I9YmHd8oqw3K9U|`j5>qfhkv9A7c^=Ia$>y-{h75lKV^z+pfFtxQv;aqnNKTH{Z)4hi)RfI+7!=D-)L&Lz30cK%MW~}YPve(Ee>w5~6%KClo0H|s^vwOe< zaZ`idCVJI9V5=oi@z>4Pw-%IBgw0BK{Z!^|ss>?P#OLb)V+siKDuz~A<+NEMjmPQ% z$8s)?Rpr8Zz>szCp{jIq4_I5IJi7;sdddp79;ffV`-xsA$y%u62$t>a%)4Uyjx5u~g>P0}OM@<5l;79z{@VDSHIf3CXDLt9n3p z#_Dn`V?J5JD0)Dr0=)-xIG!=>7H6#oh@I2}+C|cPKpP;Lw=xZT16FC?16qZu9#C?s zVh((QlH;Ml6%i>^iZ%F{vs%q!;lJsI^YV#CC<0v-ZL&nT{68+9#|!HhCsC|%YZ zx&j5+=k`qd_Mm;#jQ30SSxqcN$A?l49Y7za|Fj0lLKT0las9%er!`x@;@F~YyHl*J z-#!arRYFMZUg`A73#rnikzMXgzHW!D7lb4oRki!+%=>ikE)IHf0;~)HEB2gZW&P?| zT$D4C_r9%$3M<|6&#a8QGx>VM=n{gVq((ATabt}{+ zZwsnLYCoY`Mw7{+>Q>&EV>Kw&y+p9ONtjb+kY`pus#gRxp*l}S)dELW_^j*PWrg5u zJ&vqm_$MW_gfR`4+>UDH;;4@bRXKR1KqV@ROQGJG@_8a-9d|6XKmxr;;os`q2_6%w zcs(LiSws^3hj20)Zu(LfSN?xR(!o@ z0$|lIx2Q*p7Uj16D(gq*A=*+9T_{Qqr2(N?)RMu${)p#Cq}CtGi5!YVEQFqh&R;#t zRvAsAy_eM&Yi5B5v<`@#=mSrKrPFEMy0a=B7P`1JH|)-d?VgiZG6qteVttWfoux=k zh)zmWYf=_)gwT+bGMpV!jg7mNI1M-txLbt{l4XH4t6V3lR*?sVMJKaWBw~e}2$=fV zQj`4CsT6AMY`+s#DWpZncrpTJa+{PcD*ZG-Aa@5M9D5Vn2MKFpd!3dl4hAj9EUi>X zY8%-AW%4Lk*kimIzgrz024k6fdlgYu2+&3yMad44gXx20ZMP7Ra0lhV6SQ(BUzBn3 zRfdIbjqx_8*B1F8ho1W+sOAjYiY#Y16^3Vc7bGmhJDrx*2AXP7wu(`Tk2f}E@R$IBp znmWdN>Z2Gk?;-wyY z&^=}ug*6dxc8@(IH1Dww2%N9Sic}>Ter@PJTF(5x|H zzi>UpeF8Oh8j{Z)-eXlzv~|k_7TdiVm0!~!ZF9E@8zjqu+lrgjW48*c=&|O+kh^^6 z>#>`is7fJv>91L2HC(OVrav17H>xB1a-cZUM zpe)xJW2w8|PE57r=&oz4C??Bxv%Bl45Q^?Cl7K+k*oVy-ZQX=Pj&u(*; z;3QEedHImjeZY}rxp=2&YKgOHOugjJ>F?^O*$w7kDM~2G>mcv+UDJJ>-rKZSX#3=e z`J}Sx_SnZ(e-SCe!F(qRZMp6sYUKt+AzVJVxuN5PE1T-%qx_}Yfygu}oGC9VR;LR0 zqQX-Jr{U8*trS@9R+R#itY_>FvEe0QP%4J0ylhbZA*j+|ue%wAY!BB}RLBRw*MY94 z!}q0Oa?+Et`a!z%T-kJll1Le@vi+$XA=Y9a zQ2-Z?N>-C9Iz^y;Pywv_2xZfW3YINXsT%Bn^$k0OBL$;jsmyRWF|?(d6dY*|l1Hj* z+%_Gkheyr(dh+>p z2X%6rbPNBJD#Sj!!=4*1hU65E+^UjA;P-MK!ZUUuda(4RBOLzRgVk6Ae~U?f%sJMw zk{nJtC9NEBZI{c16RCpN36vtHM?C)<#8=UE56xj5fL^w^21cl265FMZ)0{(cSbwb%c%_VXGpj zm5q2zwFEtmt@==JQY_;a{)7vr$l(%kx8LZPw`ELFjE$+xhG-H&DO5HIE%;uQ+35E{ zOdF*{KduTw&XY@H9eO4WrTjjJG6uS=te2B&Zb0kP`-D&^3SQwQj&;>uXbe8Hl1M`I+17>f!~ zhjgwa(v+RZ3GvK^g;$bxuyNVGzgJQ>Xja}`j=$OQQ?aT%!5>rRk{#}xEf|^2yX^#% zaHkVe?X&IZxmDjYrHc~PjGD|EG7}0-<)}>43lzI@MH^Z17OGg@_te{jO|s}O3{3`k z9c^czp^6}kC{7DpQLbzfh82*KUrm;6eo)gS)l^t&bGX!4Dw~d1M+g(bDkkfDYKGvd z1?d1B#8;ndh*4;vI*q6yzhp|VM6!S`_H+xi~cw_dHP zU3gJl8+jC2#I@ei?j-xXT6d{kqI36Z?Xha@BLVfjUi(^GXcGgq=HFYL)>fw_5foaI zyJ2>GK3bZ+N{U2F5qW);oF&rY)DDW8kLNHZhbAM9ZjIF;^*JQluwF=Xt7Xd?f|#?T zJW&+N;mn0SDQji>TB^-NONPQPly~ZKP0oy^pP4bv^2}(=XqrI@5PU&VwV7qnMkk`) z1q(G~nER_<-7Kt&EVMBFX4I^VZv zOcFLW7!yIkC7MJ~3YASl3%+|Z-+ih>Q1}qxh$?By50LmE`nZT|KCuF4*`z+<{RffK z9KDXh{*_|quDXU~}I(58vwHYZd-5;R3Y$?1l=51+wjU zmW-Xrr$gWSt;il!Qj7~i)@r$n?_s@LW7p~xB4iuOriH@hsi%6-Q|RMg=aK88AJFKk!?+^gse&}uIBYzmGe=2%4tC@e`8+vPL_K6CUd zEce+xjuHTbX#=i|9(pGYjcA}q?OJUB4h24?zu`AQs>CxAS zbyo0vAht%FsM!m!K0E5+Lms|b;p(#j)GgYfqHfWquNGGqwkDsFzTRi20M#>vtez@l z@3TU#vR{uHLmntXJk=>rbs>q7s`{)z`s_AGyUo#dI9i9$#Jm78XH3DIG3kBQDxV>V z`03(adTryvlDzJv&u$m(a!kK=$_d$vrfnZNrDf2s)}(bIrZ5?a^^lO zbM7Wh?snW=9!Q^U2glp8BILHL@aZXgje^o+sf=4z!E>Kgc+qE#0W?5(dY?7&xzG0J zwD%GYpF4%dV$NMV_*6EXkY8rj%!O;!dz+)&u0Uo3cTMr}+ZN8YqGq;*3Ac(zgdOfu zLKS;ez$3_=BkXmQ#F9u8T?th-2`yL}$$7AOmfZ&LvzqeAktRSZMwBkZvYBABqSLAf z@`qkSMpmiO{ zJdi<{r>cZ-c&cR_FvgfyovO27Vd|~A$}?(I)_|!=lN2YM&9+(mct=0HyE(J$3E3WR$lYn`65(h(xA6;A;LRVPU=&8))sbR^1DxCONXI zDG%34Pj9+Nug5UUgn1IH#dS_R(M;*}VJDT|A4$WB_n~g1(M6ypF;df%hHF%*iCqEK zhcpQit|<}kfgCPC?X{7_)rT7NwLV0E^&vjF4|S@?2t$2HG2jCqVfcl+)Q37qLDL)Q zX|luB>FKEt38b7$_-bwgM>8F+7RPa59-h?t+w;2}z-=^)Qo4jUf(xH?Uz|Q9F0BuN zF^fM@(aR8e>7|cvyL!)~%0X_ZT5&Ul_1Hr!YMS&OSv2&PCsc2tJ@ys`mkXzduwBM$ z8oBqVzvSMdgoa4S`i%l2nbDlgDmdvPIbB!psBAh|jntWu$^`a;q`U2%l`A@fAE9S{ zdP%Abk}ehUwuWAPai(`yA*~`%$#wE=t87wG@YH9?{a~wI=izeCR@$y#@Y@FD<`wVR zu*ZUV8{_8>>TQexf~s%&b)EWYj4=}X+fM%IH@Ky2-}2l1TX$Xhn(w@S(rv#ZkobJh z6L=Tn1{St{6Yu{C=p$^yyWhtH`bHv;ezX$a6XXl*%OF+-Uc(d2c^#N@R=wLu! z59nV4`pS4-Wbqt1@xVO&j0BgE$ z=<0w50(wV4?+$1ppicz!)qoxj=)C9Wbe|T`#Q|L&&@BOdDxkj!=&pdqUXbZ+4(Rs- z`s08O26QN(Zw2(dfTZy78oW55HwAQkK%)WuuYi6hpw9&K+@H<#o*&T50$Lo<%nLK# zKLzw}0iFM%9Qyizt_$cl1NvY{aTpx+BU*fc`6> zr(>wjdtPfm|0|#m2edVyiGZd8+7-~J1KJbNk1oz>JUgJ)fI0(uO+Y^v&@Tlv5YVyC zOt0b6Z2RIxK%S3R1oSE(#Ff+8zL>}E_&Q>o$@Ya72IqmN6y2IbiL?}JKKrdJ2-DtJ z@q03DUoc$7kHrDMSBG2tT!Smy^$7do)%II40TTXaX9nZxZijI3IoKgwTw{muRtoP& zjnmp!X7<**9SkWa^<$!-Y@d9qL7%+!)>kih_s3p+|F_1L-v6z-Wxw72@T))9zIo|I ztM6Ib{gvNe`nmRorT^b6$FVm4^<_tI|NW&ed-~Gu7wjx8{pKYbmJYq{lBFZvKfY|1 z<)M9J7`2#yTg+H&*T)~I#M}TxYgfW=wf>t`$eqv%dGXKJy^x@5-D!cC7?$r1CIjB zdQc~@GRhp*7r&Kg)b}1=m`i=FK?OXTq z^j)03?mOS#q-QEaLVBh?aL&o9)R&0hv)+ZwFAfzNr#}n7!m9fB!tYt3N&2aPUK-G) z0WAxtu@!Wu37Lbg+dgzLPemM1r3wEBhq_C*#@~)Eo3X54Uq}om;Db!I)TPY%)>C*4T{4YHP zlEUfVqwB-o;2`z}hp_cNjD_M6Yz@lh;MyDh`J#_Jk0wa39%X2gttwuY({#_Q%BQeE znC2v%f3lg|Eeo5SLCsbgQ3rVQD9z}}I-q7T?RPO3`}`a>j&lsG3c5U@3y7A6Q|ic4 zfuxC)cDqq(Lmn}yA&kqjkzpYvM(=LMQ*9yWZ##E;l1X7G*cK;v_^5L+3X@q)IhOTi z-Tsk(jsYe!XOl27ytTm|y`zX46BaYBg)#pmqs5NJ%-3!cqNaQpQNj%n0qzy7X21lZ z4h#!su^!{f>nkf|n6Q_dCboHkyIzb`$5aflBnsII?@C?^2^<(P943Clxl`LA>ml1U zJ!I04wnJ1#Wxj2mZB0|Y_X}@cEL8=N3&%{;E4vCySa8xTPAuE9w@=|<>)x=6A^|dd z!;*~STRhsu(YBSW6qoeiVUgD!m6GLSZeGLAK9PD9!>}mJStX()`ngPu*4z^JGU<_A zLoxE6;m^bTI-hFCAepDyf4=CZAD9v1zN)GAl+T^3|7(2r--@z-+tRlyecgAyziFl& zgM?;U$uh8Y_VybK`}xJYDKCq;^ooEAtBr36zjp-m?tp$Ppvi!C26S6MUkT`;fW95j ze*`q&8!6o}tM&x+3jr0DfqyOhMg!U$(6)g7AfP(~x<8<=1av&0M+161pklX51EbH# zdNI$T@ql&$sckQ)`+WF)F`%yjsezu_u4VNbvT6O>scJvdEUhL&u~yB}d(CJ5S^67< zY0fErKNPcc?ZdHW@vgw7=P*lOQnQ|)X03jzS-Qj^v6Ujyfd~Cih}V^#f?4|ehac0+ zU`z9BEOm8bOZ7U-vQ_6VyWp!=&t9va7-rU9$3lG!Zdj;~>$BUAm#|P5yDZeV>Ema+ zn68Ipdh%kboY`|reJf@p`J)xK&BuFL^=cKab*UelU?tZI0S0kan{GiEsFc>%ycUq= zYdzIsGdrQYU0^mq>}>()*i2rzQuDXZ%;v}YTa2v(t&Q`o&aNeeE8*X%i6pt3iPr&D9X8OBiXM*k%aZXyAceKrl~1IN%F1RCbjpAQb%{hJAn1gH zKT+TZuyiakzd&YT>fDsH*+S9OX_^EkD@~bjz1rWKS*?jla}*cM;}||Rj`eT@){N~< zHeDG92BLCz-a#F+ew+(JGR^;0N%X+`~2a<99^E`cfP-A7T*C0&Ejp~oYO4+ zyF~DLrg+QjoiT@Q3h3s54h3{Hpl=2AuL1p6KtB>Q-A@Gc8v(sHpz(mV2K4cO{vx26 zfW8sXzXtRiio$cGVacHv2ec?49h34<9Vk?_FR1%g_i1Gr#F^$* zRT_n4T=?qui22MvuU=5^vjh>+?}uVuz4VE!ewUp6yxLj2`u#mh;#BkMASI}YN{0pY zdlvsobx*#YTsD<=0YKVHOzYJeOwr_7yRgYW;j6bt0=V z%-b4QacG9oJgB9X(rbRxgkySZW>zRI)chN(D7Ui=zkY= zbS%;9V3%Cpb;;cM>bj?&x<{(u)g!m60{C&*t*-PG^vE;6N~5Cy9N^in&sM)1z1wd* zV@6Y+d+gpc>cI!);<6$iUZuH>j}|=tPV=j*DARAVYEYe%C6EdDgL$!|12~vbBT{;& zV<#Y@vraHznoRyODt<8rbZGObp+HRxK^nr*Ae z)-jOtqOP|pmC6cxo?*psm0w!=tg~cwtms0i_efL6igJQH@Fw@1q_h-UQ(3Xja-+o^ z_($rF)hX1Aj_2wzNX%buufYnu4eJ5gHio?dDxRv*F&|+Lz^!dD=UVI5H@A=(y>4L z8n>gy?X2abmR90-m95Nld+;F^bAFqx7r%#sqgLa##}-+p_H{L5%1gWP+fB@NsOdhS zS}}L))bLo8tpik7rkJJU)s-_{ejDNIR(QT3<8-q2%j)rpk}X|X-K~^5R0nl5VP&Fz zNgJ04P7iT^R0MU&O$3J^Nb62~+f71K0Ndieva*9r*%B2SUD7o}oMe(hGcArwq-IM> z-4s=0PQ?61HyO}1LhG7Z*C!M%iU!(t#Zl!pLqHBdt-4Xus)fRWbq11Q(Q7_-C`uiK z4z40ntKr~R3L{<$W05ZiS{$NMC^U2|>cHV|R#xiV-7zab-LGqc19EXMO4_s-ms%Tt z%bn~bNey6&XqMd4=}Wndy{G9Rv=l0pHu;+Rn@no-AvY7A`Y2%P*ETSK*^^Y%HtKSWVB+%<5fvjek9@uTeR@q6LfwPAe+cQgTo#giD*y;EI0yTW6KT zR4$1%l!REZSiZ|sPrR~gVSu_^FGI!JZUm^xEjvKZoTKzo=%k_0@;A=hFZGPhQnsw0Imi}+!&1u7e!M+s zo25RrhxVkZsjO_5ua&|Nw%XLjM0bqTT;qQnC~H>sSTM?!Xa2ixXznJcO0JBBTzXZw zMDVX=acJxaj zj|TL|0ev!{aVi%F|91juaA5yG{Jt2_*MLqh;a4xZegA*)C2BHflJM2Ms7~X;_bK+8 z&-@yxZxAMVwfH@m68;lCrMLJT7u|NAzc{3K<~8?{OKaBLKYf}t_aFtjl_EN!g5^i^ zsVhAN623H28%{_e)h2}$YwZqJzg?`g%Qt-OqL2JMI{=*wU@#ckhkeHxRE5iGGCHz5Z5>K&S1U)rWJ^`n%I|ai-pR1T2VG_0AGb z#hP#Zy@D{cwc__=_Rc4&5j)4jIllfb4(FV)cV6Cgc}?%s*{xG)#CA|h>YaLjK)+}3 zzw{LJ&U_kY;rpMxOeb`_w-%Z)EpyhdknHx2Cn@aEw%tVrZo1|N+$N~jws9EZR6lE} z)P?_krtIIWdCOn-o$qhz-RcnP-C97v)Y;2NzeNP^$r|t+(z?!}senEkkgCT+Wy;Z^ zULYSC3W=&XVg;UZ-1&RJ=5M_e-_3|n)`;*mSnv@+^LJOp z=Wo}H`@F7MyesR|-`Ti@fg+vLE0#;luUR>#p5{e&-VPe1r7F~Bt-^cs1CJNlbO7FQEDG&g(McrF9 zQoMnYLYnz1X<$j-2~*GdF*R=cwUrYv_nW+HKXXO~RU@gN{m8I_2;RH@FrY66^rZFu z>P_U-_m`ZNR{q@kzKWpu{V??XbKFEueZLUe&!m-Ka{1z#n>Am-(#5Hyf--6+Nd>ZO zqThP{m!5*Yf5EXU>>c_1ro7%~*E{lhPhRiJ>;3k>ZT`Trti7*&OMX8+1Fijo`tU%R zKD%3w>9e)?un z@F=6=>GR6+P~}Tmp5A}o3t|>N%)6vPX8n%Y-Y9TH(H=S53j>HCdUkw|KzkOxOZW^P zo;cnpTN}XG4d@TU8;10yldZZaz?kB1vY-?a>HPGHwA2T1Ol6!M0K7!${8W~QDp?Ao z&HDX50pw4pGtZ?bE+zI02L9@dMw($ssN~wM@2&o#r0G$H=PDke!2#^Jkl%*pa8Rh2*eVaj559facv9KMURyq3mAM4KjK06fX-4Ed|O zmYWvcVWPkYs4TZ*UhB1z@(Ob$T6!f{B2TsV`Uf+y*edWmiWXO((pw*%nYH3hw~UtRvwEhQeX*0c0?f-ocmmFFM;&rN2Qw0Dz= zU>AP5p-$)U>K&ZQ@-C|_Ya}U}HPnUXz1`y&H7Pi2TjKy}r`EVy{O}}v|SCxn%o2g9Zn3q`M+l43Y{PP#aNzvct>v5`Om8`(isil_@^BH0r^6uRcCaDuWsZ)0qOS(ZY7B z&vBd5qngM4;TG@w$xwdLeSAkXN3o`#iK*`3E5}b^MRn7>#fGw%c$;!gokbt!rl;~S zcoa;OPHTMMjm)m0ZBZ1q?-mzlxIm=oLVJ(ek@j6TnXTQd45B|G;wmYbgtAgLffYbW zw8&ieUN5#LFSfF~N^*(QWKUa-t;d5}9Z`epG}g-IPD4r9jLm{HIEgwmbwYqr8z$`uPMCB@`73CGHNnB2fkLi8oY6`|lwmGd- zhU4}`3Q<);G(DAiBP!i_jhIzD?ZRH4i3LUosBt07m=2EdoXcRkBgDyfvW#wAd4xZZv3Ct=x zjOxgYu=f8)QxUDD;6_zGN2^|OxuREXOvmZhsN8x1)+SmyQ?NFd-fqv`<4RqpU68xw z!*hu4ql&C|pIv;w8Nx>(xlsTxlYU+g~A#I zOxe=_xHOjI8pbo(W#=`eh4R!%5Lr&AR9 zbRfZcr~>0fk!|kM9GcE0$(&DLvcWFXJ$-VgGahi$ByQA`HY;X&7$hDQ5xJTisT4RH zqI~3hSuT5^vc}Wj=b2K0z?+IExN+OzQuh#hazQ72{CLg)-#)b}9jWqG6()oR zkr{N<;V$iUsW>#A$*evtNQRdN?QfsVMW-?D3LP-gpk~yEFvdju!w*$f_NB>)6ARwP zWLk)GJ%r0t)auI0kx0KeV+=7;>fi~NGn*s*5l>$iGKUCV&9}Ge^@l6^a|<6PWEJH$ zq>G#VL0t!{Y?Qs->!Cp)O^NUlaEe0-R9+5=Qy4C2%Mg>0AguKACQlAa~%EV zP~Rt+aes2nhk|i?Z!L`nnsYP)iJ5VG2awv6#DZ%?B>Z`sWH+5Q-auGt<85hEgEl2! zqu@N)kdt{RDNOCHGgu0SEKDuD7~x6;o+QdNCtrwwYpdd=cVp}rGP4AirILkoGfri0 z_#mFO(0aa>rbv(n5zLf$_C>CglbkcS*C8utG)8E$@~)RLN1caMGW$V+BNb5CX-}My zYUaaycx+V@u%FB7riJNnON-k1P_%^fqz>ovterQhou|`5wDX~&op)F}Z_$aN+|CDz zcHT`36ZIyw^MPpR(mUA5tcyz}!WZ&wtE^lX>7z(-j81Fk&1&cMgyKv3vXVtVQv2;B zb{pS?RZkgQA@ly$&$dppe>-w z0_q9qO#u}a*54O?;{p9iK%3bfbjrUI&>sc#{|0n0phE#24(Oi(x}Sl~>3t=jBLN)` zsF_jJ@md0UVL&er=sN+O4CrYn^F3~JK(7ht=K^|TK-UHIn*n_=pc@1FgMbbOG#$|K zfF22``J&8AOF%CP=#qfm7|?YA{YF5e0eunC#q;)HK;H@IWI!+Ef}rEQJfQA?dIGv8 zpuvFN8PK|b{yd=11#~c=Ljj!(sP4xy2TcJzJD_qvy#e(H^u~bpF(7(Ajswv=a6PR# z`&|^!PXf^ZPHhQiN%dhHKMA*_Q^V|;cGNW_Gmsh=zN1be7HhtQD3yUW04=WDeh+eJ#z`&fM2a;+d<}@t%RK5s~=|c z>q<|-uG*#tuU{&gbx-@lilxeq@AKXNRaLwHfAQZsC)85NT$i2toRH2BF$LG{QRlQ@TiL()L|}Hi z?|gsrNkB+Q>RJfSIZ0i&62V8OzYJ(kKwk*x%K`mkK#v6Uct8ta#Oaj+Y73~4?0UlQ z7Xs4K-Q#LS;Lv*m8Vl%HKn?UhA5mWvvfwKMdKJ)VN7T!zF1x353YXQX2+uU49)Sb? z8IL}qmPkvn<{MF05T@~=_&u2;>JvS^c-grPsD4hN>+DC=%e&HmS}I1=-=QQ&ev zOQT{k38qnt6*$90GrkxFv!h66xYL$_+^?5F=uJYCJ-P!kEqY(;`j0 zhDG+8U?G4?)|6ws4E76OE?JH&;^r*w|&PvFw%YM;4oQOY0X&Zk3N? z{dpYw!9_P+Wak}A#W>cL&oF6}R6q7#XE_1+o1CZqq!FtO35{49YL)RV^`=j#+pw?k zu2UVXH2=>K!N-Pw2&foMh9T=C!X_ZcE39aI48PNk2(#W1a2czM+5gNVg0jQEsu5w# zeC8h!K0%n;ck%mS7!jV(>j9Ua{fMw=NynvgWvugAH=k-mC?kJqM9}k^`d!Tb(o--Z z{N+t+mi7MW%}aZJ>Mxc)}$E{b6zP^N=9p~NWB zjlT(0#V}zza|B@v*u=6c?PP#i@3&z@=M#L-S9bXjc{(W=&NHXsM#D<7Fv$H0aHZqQ zSUS)k>wU7Tq$d!0h)}BFZ=|hKQ*d=7fT3=4hRs5r5}5vuBromXVqd>Q9*mq&Xq7tJ z5JphC>Y+y8f;zwe)|s{d#Di;1QQXC*iZo+}(*m`m_WuH+o8d^Ho4G%UbKhl1yT|#F ztX9(1KaGLFI+z33vaCz-HXZ&a851=2q@~N*Mjiye2^AY>N)NL$BaFQ7x z0Cgl~thgZ;#tnIBB2kWVghu2paA581 zN8~$*;3Ms~0xIOdpJA-?(8U4iK8O3gE}%CDRGc^e&G1_vP%*B5H2nTBpuZ33a6pd+ zBu%NO`%E(H&~pNMK|qE5{Brme7I#;NUtw`~U--#tuFpVE3ti+z0sSPr^FYl1cZHF4?nOrByy@ok}Ks0bv?Xi{B5!40QQ9%A_Nsi@ILM8#p6xfA^^7p);MG z?d)7qW6@#_-RCkZhIv-`%ubqtq}|o;jr=b?1vAjE{_5!ae)Zb?n9uO_m%QuR#dY&| zcFyN{>3p6`=JUL4KF_ZCJTITmb5X~cB!{l|>)^K>;wKWBQ-L>;DQB&yGU0Yk^_|3y? zZDD~o4Z8nfL>;P?cvt})NX!y z72WZ=fL>~T-QiaTQu|s^*AsrdKrc4GzVKTG)MkGD;kO#-Mdqis-aU;$pck6oQ1}f4 z{jB+ogx?yVR`ZjU1CP5F=mqAtF8s!Te#ZR9!*4Ut^UZH-_-z9!ncqbCZ3mL%vY>7< z{B{7z7X5;{sqotg^i$@yEBtN)(qdyl-R|(a9Z0(p3+ncS-(Dc;)fUw43%~t9T(iON zVE8=%Bz@t6xkhv%5MmX6J>mEAUw!+?Tk+HHzkg6y_qOx0;C8)x^7rMVZ(Tc@ zTpDgJI8SemOX@0qPo|tof!1kkP+BTQZ!reY?#`F@JU^Ef6#$Nfzb>${&pT>-Zm9A3 zc#V&45&o9>aNOv|n_4PGAdA2B0|6~o$-Ws1T z*ZAn|li6wgpvLFNy>LOx`I44@b}Z@mXZy%L?rfjyYkc&w*=(FjjgM@&&&K&ojgMYU znT_+!8XvuwG8^Z|X>qfCUQ*+;yvApBjn6x4d^XnjOxF1PWsQ$4$L zQ-y>Tl^SXtr-~CR(YaAVNjf(m_EY8toRZ^HG8}u|b4i88$GHKuIW)O`Zh^3>nGbWG zLS^|-%bu-0YH1>8*Lv0#pw>LKc(ui*6;v(WeB9KQla_6@aclETo2h;-x4Jk_(JbdH zIipg`ta;b+Yu>din|CeO=6wpr7uDp^uxqP9-nA7W-`c8>Z*67Bcm5pCpTYU_x43SY zw$o8;6`WC1bID~(7MJW->>jQ~q>$t?-+7F^Y^O+5)2HnzeoxiQM0LDGlwT#%i$tQm&q{!`LO~l+zZqR49T{_^LW;3o0$Is`U@(HkXPx&h-9tqHa$4a@Gfb9f4HVrT- zIys~PkImH{EqILKVW{KPAq&|~Sc^B;G9tQ8dW?okPZN(A#+vZcCdBZ}({L-@nVuW+ zeU#%kQCUx#wYZrp#FAK?so!M#58Tbp2oC}fDmDoP5?fW2CNknSA;O-*_>LB|RBNUa zUz5UybC|YDb75!)mfch(;pNtfNBx#N9-Eozxv{tdl57j=j_0&E*=zTD4+%_HxxP)% z1MU`cc7OYzyTv0{k@t~F-ILre-*m;dQLx_%;~2CeqShZ`d%>yNa}|@Vd+}#q1yhd+ ze-9q1c&zOEEsI`@IhS0lu&*GzYDw zbSM+(*0-jTW4Fj_NY`O{%v9-WxV~NN%7mdVAn%rAuVwo-fqtcXmq5MPtYg-?GC1J| zGt(t8%Z>;RaUeZQTkXUTa8p_7l0-TZ@5Xlz zbN!ahqg69JT6twFHE zXdPwBQkMbtD#Z4J2tTgyblvJ4taDtl5?MC;%lQ3us6S*qm9wwWv2Ey+8k*~6n{ zuC)aHb_$KwuS29tVBZlBb<3zK*`bxE8f#RQ8f#RQ9`MdoQgu0nsE*c%pTa$UgqH~4 zZzTDn>N>^;zkPD)x={;lRt`YjWt)<}RUM8aIOtaC4zR8#I0&xHZ_1)BJAFVc6bq$6 zHK-yF&{Jp#6iC0CEVrf)Pzme^QkG+oRGsSF2pfvT*NHXVE1(ll89hb(nK$RCjaItY zqf@*VaQ!i}_8GQ`dB3ixI}Pq29iR$y8CQd^*V{r8D-l`mmo?8Um|>T>Iu@7As$=oG z`wev)cG>K8K1?rU+R}FA=U;sHhI@K9V3UJfaN*#uFde$(k@fo?!DXA5C~uz53ck+g z{<<4KExf1mzmvJTo&Uw}>axR2=X?u{4CT`!MAu$r6aM7v?Dr}kgC8ZmpiXN^hrS<> z-l}%L-wWtZ1KJbNfqN0sZ+*9@l*31e6inTi`DjI1s|)%BVUp{L-;=2el5Q{mXb}9Q zk@cVWxdO0uX;G|we7SqwocB3doep1r?YrLkHg+iA`mVaCtGEga{G~I?!AmYp$LI<< zxZyN%@D9poE1b4#(BmhqW9cc_v4m_``dWWN(#EWg9wvNjhQA0qgbYH!@XC_+R+|tt5OM3l=#RL~#9C#s z`evRcskIQCLTo}X^7(`VJ3}+|H-R%K;fVq8sLr;eiT>_F0Muo07yKBEZ7w+c&q-+7 zO9o76Isk^v;hcoQPqKr~wj`TFy11>0h_nVwQ0qsCs=pZy`ke!8c!b#I3~af}r9gzf zzFOW92qd50rsVH10e6=`&bsiC`5B(XBz&iNnwa25L{j*-6LUL+EGd5yAj(-wiRMD6 z>}Q66*IYkslyQ^Q4_A$EEMn4J52G0Voq zHs#}>-Oo$U7UW_+nsTyPIZ-i>SLZ~_8!Z_u`LdOKZged)oO)|2-74Okz2)t57Zj@C>ca6ydDnbf%0}>Q1^?&%P&+2JXUl6yZ=8YkAcGiNa)(B<7B{ zju9Q%B2}*>j(zgs9w#5P#!7;sm&>52Y7l_I%q?8!%JQ3*S?WmnK%C@5E2}AA5+KsR zoHc&s009x=E;vb`(Ircle0ogsk>G`}L~&5`u)A99W~oWCa=R5;pJe5mOibg6`XoCI z8--MSzUU)@jLBQs%qhSmCf^5lDq(6vuk^M;ZC{AkUyyJo14E1pm>`tMrS(m#t#5dg zab^Ii*%twlT73(Q1t^s!_*@7#Rs?$1McYb9iz?Uw7EpR9C zzl9Pk&0N_#b7h~Bv&xbr&!OZ^hqdC+%1a}XaaOg)D5Y{^fdX%2qGa+Wrvd5mX$6!_ zs3_qnADZTHH|1Icu|JjBmq=|#rn8iKKkfg3>{Y>5KWvef!Vgk-^aPmeb>>X?&O+@S z47G#S6kQh9x>@owLanAG3AHErhETg2p;iG^LhS>%OsK7A|0~P1m(=Vt7yHhQiqBkp zQisgq_e*65m(KYHLI6q5EkQzZZUX_Ti7jV)N_r0wh>NT>6VPJ;Jr^;|L*E$C+JLmj z;^Z}sL$)(kH z;*(s;7QG7YOmeB}h>TXrr6tmGAG}R29W-BRGvQzDo8OYzw@HOW-Tsk&E$oI0k@E;GcW zhvMaO(}au!+iW51tqICfp4;^B+&uFHEsgxnpHl@jIOH2;2()93!dm$N|eE8ZIa;h3XVu>CT8r# z0+v`cb8t3s=Novg4^7le2y+duq$EVjDkbo2A{x4E>T>xxSWQy&iVmYSVglVY2zWQ! z3s5e4I%l_K&L&(qC>Y#DNFpf7cPGxuiVkJiscx$+nH6#=7$UHcG`rWdTQ2L3DO*G2 zsXb1ns}{GBxLS^py0h}yR#%Smw(^!cjhEHN%Qce8A&~1)-BKBxmzT}T&^4`!p+agh zI!JS-hE7W+RX_BYfK%GvVA5CXU?R7wm~8D+^GwQlX`y@FZDL89?UR{E7lVmuY`KX@ zVkQA*hmx8wGc2UG%d}vz3Otn5;L3m}1Ru z!i_a1?QW9dCR$4nw@AiW8tcML$KNJpEnJt6Bn+9M)h zuXAK+CWDA6O_$B#P7@KB+FOEmb4|M0rY~^WL87s2;Z0`SEW1T9*;ks#mItlbyQuo0 zbl%oaUDzk)BSgW|kdmxFX{&cU6-Kfrgp$k+Y6YU4k)31u+>2Wo#C?QMs)q;VGj8@y z32##-v=Q*AFz#aE!m!Z@%$gwE!jZyV_I+HN&sX6r5L~a{s{Bt`4S+M{CcWk((K{~* zY3fyJ#8lCzb$;?2cN0M<%?QzBVHz#%+KlWfNzrQ_T-Jf@WLD?fiG*^0l6YZ8XP4Ow zvM~~sKIr`r!vgF#(t=3}cV7rS%*a2js4X`m$FdcmwT8*5GU24VF+C{s^AaGdL8+2Xj8q&Ia&OShz&a0IA=+#oQX(dJ* z$+Z)or5`D_M{*BqBCCou(K=>{+h&f93sZTN(4GM0r>*Yj)@E8tHA9c`wPj26Ol_}N z-#sjK!a{0J+b#7@B@K8QTcCMFY1a00rW(;sR5U$n8)n=FMq+97i9Y_g9KHux)k`G? zr9R$decU|!ox8MwIc0mzLFc&BvBA96*rXPD zR@TFmgI3lPd}C$3X2Tu}U}gQ-qrP1vkvy%eFN&4*sUKI-`r=Lm^3U5FH-uD+KDEcaL|J{-_9$b$R5I3O9{aKG_@J{QoTfSw)e<(~~` zAfWdK^r?V88_>T5R3Gc=R|j-OK%)VT1+?EDq`NBhF>U_jps=&^vF#(LS~UKG%a z1A28pBLRINpg$p^$Nj5-_6PLkfQ|?BZvi#X<8e^-KM_z{Kq~_Jm4MzK&<6HQJnl^a z{c%9DP358g5YRsc^qqkIC7@@rk?Ap>AJFRqdV4^}XlRaiJfIUmuIG3W)0Bt4BA{0R zoleg&>tP+=f8!d18uFR+9O^SPyed71x`F%PZF-Ipsf*5h`)?}<)4IL*{SfFm;uzZ5 z>p7|(+Bu`1WASBr9b3O*|E-J4JC&Yej1t{S0X0%q`aMUPd0JOMcGia-?qsJYEH~D;}5#-yTss)3Q-!4F!lWhQzP8UQr7K4E?SuqU3!bgf zB-qIiK3gnlT`42k={bOdNRPtA-7Y*G_VJ~p0j(<7v^iiZ9_2eNn}s-qlgZhOA?;1s zqRN)$z8mAF?8%o(#>!bO%l6%Jbu8Q>m3{rknZ57O8s4g9+^{UqR;H$TaB(*6_$cEg z&$vpr1u(r@AxREtD6M!Wvw86ykYtIgMLsfalD#HPJkq9VgHoKdHJPoDgpLS=iX_4s zltzInS&!UXD=X`$VvF<(xk0v~EL&)*29!>wYVh1iDKl!NCB1+BO=5;@t3by{lKM7+ zZ)&Dk&~kiSLSdxRN#sUTp_m>@(hP+r0aVsn)=_k_jI6ezb2wG?a5uS5>u_EK0hB<= zBasiGsFQNY*WR|3s^zWe)U-7<-a00y*)P>P7l+$?^(A+bD<@otX1%L$%gYG>8sZoq zLVaL5QxpszXKcX--O+PJ#kA?$W z)hiK&f5Cd)#kR4QcS~83cN019_-*y$n|aeO?c&iO27NvzNhu}+9op8o&0K!izbhrawORJ>b$Xk?2|HLY! z*rgn`Wsa|CrRvCwFg7RIrDP3-p2+rgwMDOEl%eZVBf_Nti-c`(@8^i6_9CSW;+;6y zm3iql$FTKadYvFG(9>w_OEGpVnP9XO(J4Dvw!ZYf7P5;O2e(hvC?!Fe_dR)1=}>DP+ZK#pO$CxVNsFo~X#h5*;QwMAGJoS^(SdLbSQ!oEOYnw{WX}xrz8SWwE1zC zLc!A4A%lnE|A=#0C%(LY6US!HC`nWKpvH-|mt+uA0O%lsYB?(a@|oSNSaZ2c8|toH zlP!ENM|E-1QimsHbz)rV(osG-S0bfVQc!8G#bska(hTPk&$=R&q#xUrJ`dLJJA5C1 zwc$VEI(%!Rc9O%-6}P4~x>IcAHmVa2NFlUQlnx(93(!N-(gLjE8(M(18}?WLT7bsy zyB46A@T3K33N65r)9kM|k?av<*lGS3zqgbfUYWit(${^f|0X?vZmvoX&`8)h=>a|z zYwwQ)bZbDx8hux+xOWG1cR+^%`u_tuuRgB{pA*o<0bRhv?<>Y<1f+Ys?)Tz=t_o;% zKx+b88_?gz%KV{#e!3ykTN+S31?6cp1k?!R>)4gy_lp6&3Fvg|*jbN6`Z{)r-!49{ z?)2wKRp+#qs&%ZY(S20M6joi?eCA)rUQgH$-8s^@WOdf-*y>}XXI#g2U9!YhvDNF? z;}qGc*0CD>G&k*1vGSvF)Rmrs{d(P>Vno(c?+Y0=S}>s2y5YO$-|+npzKQ-=s;sTw z@?VdA9k7kzW9B@6w*BbL`7`yOwc*YssOKUS@Jhw4GZ)OD?hN5+rscB?M_L~|51QxQ z@!~r-+|_Wy_doQREz|jg`uTaZImKZfx^&$}{(q4F#jmNH;JM!dB|&MN*@08zjC{{& zoS7nm_d5-=4($T+e)p~L`(8l*33Qr%H~W~3^*fHq*zZjJPGz9xP@Lc15k3Ic?~a(y z{QXYnrqqs#-;=37T3C=pd!^sY!bkk{;Ho{peQw8OIK92N>JsA_d)=ar-0ceOk?fzG zs@LtMgw*S@4OC5TrKh0R{lj0qc^RaW73qa^z;-%d2OUsvGC8#N`uPL2+^cZYOXYBau_f%P{%P%7`X*Ss%(NEnG-c z9PI(H+b4rm3vT6L`n#k)Ah%8lS;27NFuR38c)#PT{6JC(5L>*XOZB2%1%_wDQI#K1 z#W$*yePD5XNE5!DI_wqp9aSDZ9!up&n2}Z)IT3-m^!w*}FmPBurrb9PL?T-#$2x_rS0Fgi&32*_aNMM)* zbbpFtU9%Htv;>IX0AT4HDbiV0q*I^MsjE(BE$Q@GtOs+foTV;O?9Eze)arzj5pgh` zIAEskD-t*<1a&AcB3)JLsm{S_=#?$LHrT6*=ux9g4jut8ULG(6vqezO38-_Rv4weB zjWUf(JmC_7)HX}Gx^%1^3>E4$3M$7})_GdlPMo6mnQUDsEPuLBC(F#4d{HM$je*#b zU&NrUgzl$U4=PQxlH%Yl0J&3)MBchcle6KW&554qT9r3?sAUQ*ku#|V0n4hdl&J>L ztPR#XzGWM2qO+iKXNOF^j(rfJsx>{X=m(*rJj0(#fTB`)ROSDqImM5itTQJYCc<^A z%Bd8L`{NL|*DCKWetL9rcx(@K3GfHkD;hF}e;D>o$eD}|>*+5-^j=ni9Nbvi?& z(_!gM7@4%y#ldIA*GRq_z|z@f2$qh{E2sS2COoCH3n0=NC7pJQwKd1eT~5c)+tOfe z32!zGCIQv}+NP1#Sc_`iUSs=I^u@=NfQKT5W>P3s=cFIHIzi3x_e4+}8V?fcY}y=1 zHnZWrhXZbR*!4Bp+K^Jcl|*(3QxA-@j{!*4sT_CrtNRIcn zH75Y6M5Z(DA;(o#rg?nEP}mCb1XOM*!UKwMl$ZxSg0V2=EO4R9lTtY({QWtBeZqIP zRqrsQYDrjoGu1u9V)B^H0oT_G+}ktmZsDdkT0NJP5!a?fy*iJ#DT2ylmq)PVIrS`( ziDhkj5_`ZF-7tDGh8CKesv7b)ZO-;P5Ud4tWzug!L@K%}%6{=CR-xK2_UWY$Pwf}` zCZE!N&~C%wrNt?3GQdW$pX=AzyJqP2i;Fw$0`4k6vh35!Ivg};6$4cxER$nY89Tfd z{p{d0@1Cb7s*)m#3Yf;E`kT!4w;cd7tA&AC`V>L+L#1t4 zM{|TVijX)!oD>H-Z!NwlW94f^sCR-Rk&z(H&bTyC;8Mw^qU%;1HbFcfiGAt@jB_g7 zbd{DStzDKY*UntI4s^w;+P*1^9@{spNJP$daBQD3rO&RBr!T@xV|$sn&4Lh|b~yuL zX?n^S6n$|$Wn5X=YIk$v?Ha^3?(w1Qe*Cp}$R!6${N{X=)9=>WZgJWL(iW#SaeTd` zUCynZs zE;e88Y5TG`0o#zOOiXj2C-xYP@W$;%X41(dB@#v2F5Y4{j^%{X^pX@OjKa;Xk=E+cD6qThJIS;>R$U_H48;N9%mX{VMj_kcnebaQ+L%L5C1@Iv zPPLMIqLwQ*6)qIjU9Gl!LBw=ECGrtN;#|bg3WOLFcCd#jXP2!>XbFuTXP;7Wv5jfT z942XMLv(X>*jN#Ehc)a8-@#S=GxtU)4kshQ)k?r)njD*HrX+k?uZI&Grs|v}<;@~m zz+G`cLFXs#w>|d()&9My3$Wv^cwT5K2^E1;QXXjzSK7JltY_4AF&B;VE-Yv1E&2^A zb1POPe~;dz=+uB*8#h}ck}4NAas~R0^R%Cfdc!DL{Tn0W&WI#dEAEZ^jmW{-M0z-I zL4JHwm?QZ{#F~IrC`76&REt+@0*^z5>Xe)6JSm#v-da-I$&IEhH-Sfmqb499;ymJU z_E%T)-l#~cg00nI<3*TW$JRt}0ut06N9?K*ono{jCn6_^P9!xBCvsdwH1r>H6w6t< zq2$M47!@`OYi6SoB<-Rt^v!My+l$gukx+e!s4`1i*tpZk>~b=>9yz;F-6FOb5o-~~ zOWcZ32}06X$wyW)4J~}*7SGn!$)YV7BfeWt@%yQinwuF~_*S)oi6S48A(J&W1VM8& zz=sw4x^Pmonq<=*EAOJote>QBkJqSdBZEgQt7IpV!kkD-!0YEhPc0eXWA&xzWP=aH zq#eOEs5T}1bc?~}1?uzxPqN>!dWFT}+bNt71&?!3Xs(DkqU2np+YbnBG2ka}(k;Y% z^hb+4zt6(NC}eaA6Ri&xWvA4q{frEZ?GqiIMw(-aOEO@m3SXAIc#S*LIaJUQd(bgP zCR+E3P8`rVBG<+-`#Y|`g^93nS9>t2B-(okX9#00szgP5j?@M9{`#`kMy_X_by!!O@Wq*f}zE3KTuJ;ckY8N@O~nilu+Z z#qh90BsNazZyx4V14n9WKnK4dqY{IR@t7E61*rH}rZY{&0MVwDy$(h6L?TK~Qc)XE zexf&yIpyeDo_kxT38sT!OjL0&~3 zFNHb96edaAZ%I>^>C_b}BX##F*Nw5LaaT{#&L)T*?QEMItN|QL%2iy=?lNtcH-oK0 z^C4mfU>YJe15$vK3iPv22pRG##t2=qQnAyw6=H?gMnNQ*LCM4Gc2V%V{!~33%foQFMm$0&Y#K#J6rB=2`pRF8ZE5D~~;MhR=zQModIr~q(V@GuDZnqFh2G9PE-6mRq??!7N zap)&t*r68&q_-;EZ*f4c4d|MHek-620evi>PXyG;;gm!#psNCUT|mDc(0c;f7|=%o z`WOw+>HTd$<+wrip@81Pc{IoSoq(Q0OLo8BfI8WjcfZ#JbbUbY4d{2r>JRApfYt;w#Zx0rHyDh3l)jx@>>)objsXF~}Bz#0t!a@l`qBHN^ zL&DxD#P~g#r$3&U?a$&Zg|j;TA={sw=XQGR(vFh-iqm6SET8K17zJmi$F}m-kAaBN ztQ)K@Df!R$E7#TSeff3oe)oJ~)qZ2(>CEPa6CG$qdXPJMIW^YD_`Zr$WBuvWSedHU zk+F3s(EpLYO?HH=an=zsW(Lg)IumxDNfqtWFJ^vjo6+$s)avV*@7!vh6zF!%ZO(bK z7E|xAh4A5-7F7P9ovClN7z%$LfZTlFgn zv&nPLl_~xZ@wHzygh)605Sqk1#IE&88$*tqd>gpUFd-p4ok)$@zBrAh%;)21tK&G@ zLLEo@#((>9w2m}K*XPq{_Nbit%34Zz4gZT@N7>Wf3sW(-{ znP1?R3d~0isjwW9R?Wwi&xfC0kn_;50i9-C>6|sJ*qPMM#O#^I6_o-1s>T&%%Y8&b zx!Y?#^N%avAWZ$F_*M57btIiyo%^fqDTpKU;wTP7d;GjpzAW70rw3Q-=r2tf}WEXqvO_)Rl;( z&2Uy^yv)rWw?+}R!2Q&!^dlp5)B0Oy>OW-*1-+=<{wYR}4ut(=qy$%gvQvZseFmm{ z!BV&DE>s)if|l&B*v&Ru9re-sJ6U)1`bk$C+j?wlW7G1(q{)bNiw$v{dOv)}mPc4g z;NKqJ8ugsCuJe@H?=s?Sm6zpCm$*0pq2w9f80NUNsheqTEk!rRaM|#OhzpAc>{M@I2t3rBG9AcP_ z!6t|_D~u|-CZw~v6c7h=S>ha39$Ri9tOt@@5hX9WY|0mY*;nPR-4MKU@+T$R7sGD8 zrlfj=#O$+BrW0Xn^yd|2{O<(2lZJh&NozDSZ zm`C1InKMCm11NvM* z_XPCSfPR88&f~ryphW>)9?)w8dUHV9%<;IAO&pRw$Y%q+f$e^J1KT0Jfqk0UV77q^ zn+-56XDuHT1M?V!5(B+ zTgs<_m@F`=gi9(Z?F!mBkFtSN22*)1dS=$Cm75_ zs^7MK7!RKis@Jcqc%cdHeViNEBQ))h)j7$&Nw6cn6 zM&_h7)u>3cI>@uL^lY5BO%skPr^)BKta*J{^@^mgO&@GepcPhiYr-kbtY{@J6CHn> ztEM}x0Q{vF&7yhEnWPwE&S}$}GoI$0(LCoY$aBtVF2G7=J)ge#A2j#kS1vnz*0W6s z5}IwKDy96+ehpAqmHr-4eO$kkf!3ib0{Y8<{yv~GJUia61*DS)?$;KO^v^zvye<6n z=B49(0O&Nc$n5K-Hj6BQQ)To_vxv$RW~*iq6_fkmZL`Rr`OH6yY)G65*MI->v&gw! zFV!qkt*SWFO_fDmU5gf#^ebkOw%${(DRwMPvxsh?@%tzKm!5)I^s+BN|)vs4mRCN(CkzSh-r-~M0OFtUvAD)G;^Z_(HK$gE{TEf&d zEHSxp)DJ*6S3pQ7De)XvsCMVZ#ChU!6*J(?IFy@NwAKk*wAL!b9;i!b1;tU}h~gT6 zOmW*0W#9oPmUFdyFvUt~a29p;f#i{#+^~R$Dz9Vdc5`LR4$;~lj2%s*u5F~S15 zTOS#omW;{yQaQ&h#px-FgJ-9EDh8g4k7tKIDmK4qAs(TsRM^pO*Jr#{MT@7U!C`6Y z4VQ|9`2Ak%Drr1Z5+X{6xloEbL?JGt32X24Gdtul?oRieex{IUS{7!t*5@RZhiSAc zsk5jGiK+@n&AJyntM8sF9;TcJT}831IS&$7iv-HTKjj;SNJj_=0etmEyK8^UHS)%l5u;r7b8RnQZ!x)#GeK0C2iBR z^V_i^0m>y@s>UA`t5mGo3kB0P8|~U+g`x>7wc84Gqe#&TMJn9q>zw!de82hAW%aQ= zxZkb$ocH^E&Uv5rzw`co-j*kot*?+HXaFc}xJXK99c@XG-m%VW_5q#AXNqulX>gxo zw9aZj^@`)zsWVf07NE`|JoT_;?;;#YncF2(bGWA>!TYoN^zp#(3uCG(`Trtj3p|IgUeo& z6E0LBdqX{<&Zv{4CKSP=)?F-$j7h$jSFO2 zkMDkgZjGF)VZxSv*$a?c*7oyrwT-pqwz0>kk_L#LWw(3}loPC^kQ3C+eK-0tE$7VW%hn2g)=045m}KhhCq*~2FY76{*EP;$T36GPt`Ee#zi&r@(ZGP&wWqcQ&}&CWjl`Z3VQ|O9r&^)yppu3zB99 ziM9zKa`)U^x!a#}*VDBKf|>fT*0`1KV3&{#**$Nn81Q)f6KFULD&QbJ;*7RC$UX2; zzd-Xj6rZ1xoTOJ0){#?Rp~2C+%fZ0kDHTMaN(?+3+;h8oS`m*FcX%UQiKk@=twHTg z9l~}GQrW{~y{K6)cTZ&xp2m{9z?o#oL)DUyY(ykpi*WVHWF-s`>D+(sK0B_VaeF=5vPX|o2_2zDY`uf-_?3}Xi;8_?V{^at z>8qS>jmNfDbgpHHdr&UVoNiGnbGjVgGG}ah=4^Ey17)g}nX1#N)IOqQn$3}Nfl*!3 z`h~K0E}0IoQ5|Y?Hmij)>gV?qH*PD8=TE5kI2%P z6KB4wDEkn(R?auao9F|x607`e%nU)@znH*Q|x;Zwh3yN-Q zm64v9gLD>6>bCYu5VsS*M<7j@k7<_Oa_4SqmmJ=0jR};Ucwv&3o%*<)cpVh5^4S59 z%V+zAxpH_Q=dh=15Q6D>oGw^1jAxKTx3zcPRIym=@q4#5f`jykb97tV<>%ejdim2d z5V5r1G{i(R3zhc^udJ?7Bafr!P z@&&Px{yFb##)XovucrR$g8QB3lc>&Rs2l9=(xWYVOgfd&5!x!_{S=obH)W&~LeeD1y^dHrJMNSxJie2P z&oA&1`#HHhdyaaHG+oEvDg4~YsD?)_)2)}oX3kJ1GMjN{vrnjF>0WSUE~i`b9{K)E zwa=-}IMqcy2)kdde09-yIMrTJsh`{9RF|CUs8d;`8}mx%_`5UyF2`3>K{nN9Vo{aF zbx1D99}~W6%udIbILIO4z__YRL(Mx^*OAO- zyR+G$wHum;x0$qttHr1!>;O`c8B9RI08y*+xU{^B%hsvX&uih~2p(#;1n+R<5xJD; zeE+ZC)2OBja%#p~-L=h;)sw9enwHL(%{Ya`K-WKS@*s+^UQN1Zvpn2@8ZnA9m6lnJ z2!?g^b!vFM{<0sXu=@cN#^$@8)aX_68)VpOoTQYNvNXzNE@3j{-e#D@Pb8=_wpQe? z6){V|av6RoE$tv_$?}3YZPYZB3p&Y$fYCA%f|A147KtTg_@YW|_>%s{{T|LQuI9FI zX(^Av`Z?i5ZKX4oOUE*OEN8lU?$zS1s=7)7k~1onFY0(-CKp3ZsI3$07EobnqqMY_d`w4NtjIO9mq305B^8>*)n4~IAr_9_B6R7T zW=VxP4XQr}PgVg+3juZ;wkp{V5jY#CHKx0Z(CQqEi)QRH$qwSEJbhO@7C;O*~rXrVcR`!SHENxL50#>F3Cm*b4fD%5~)U-j2Oz~iIdl(M6L>w$W=jH@ail= zm5X2rk$D~kAgx5iQj6u;Nz1eIo@W&;Zz)EXW;8ox!zAN9XR72$1*|qUJ;r9w?5yva zk@b=VCYC~%1efHhG#yh~x^{XE*tiYOGdP(zs8!LbN?3lI!I#ofoeq!79`qbXXOpk@ zCcKxtCuiE+bxAJI#7m^eTC8opuo0;urn_;({bj_9LR5iYP)@MPq7tJ^;e$(~GF zWAfkRIkd2mFXhEZ!hD!4n~$2?dew%pVvh^f<*rp8-*kGcS~*?j14nH`GgFl)T8q^# z25%e5dDvzNmMqOxNBpL}y_~CHrmOl4AF{tk^;gI4sPBMg{D@sU`EoJ)e)@M+9P85U z!oC{25N+nG9z%O3$$}&%48%fiGtV%*Qf!91^jA^bKY4^Bh%$_%!#3i7xb$k7vTM{t z7sggoHE0lds1v1xe6pmH>+Z6YGOZP(;X}&oVU<0+$0@i{#~PLbij=UFmXNa2%EyI9 zKqlsbVm1vXq!gvbOR8vA&dX(>CeLJF(a0H~X;*{q&M^+25J#>(%&5JCsz*rWrL1jw zHB3IK`l%SK`e{>MwOc`qrBxj`98yM{5TdHzH~<)$b%9}13QEacnj}muC?X2Ov;_tG zT51-`Pt{0%l)_MP&|_Hbg7vzqTdtY(R{cb$>L)&M^y;@?qLi!OJ~_SmS+czP?Uk>p zpHhJQd-NH$+B9s%cqES{bx}B}SD+Fu#l{`AA~E9SIYMVtz};d>Hj7RbaF^V} zYwT~o{vIi9+~?d=HT3$ow9{A{xoV#1QZ=AWs@s^T ze3YeCE2~}dOKfxPvSKttHKnDkkXEX(2_&7X9*yOCq*{V3sxzq`?Nkiv#713Ot7&6i z)4U!@b``Iyy&b|=bsBMet4?FNI;kFkuUZBE{Mu;9s}loe#lRvnALv!9X3@{34PAY0 zmnf<~s$F@9X{*a;=~KtYoJcLU}JwBB=cV>3ZDMOGY@lkTIAW>m!sI+wT3?^f< znJ9Xgn1n6?N_V(Xk_29Q}Y4e)*LRc7c9gQnz}WnOdg;5Gw9X3&C)BZ{})NGz0l=)=@I%d zb!!6>Maw7mShu!TPMy8O0-+0OiF7S3`P~lLoySYBuBj|amR~Or0Xn-*TW!;_QMp5b zCVoo0202@m|HIq(oAr9fN|d^fqGOzz4~6b^=C!k!OFWocGRP5kSt^EWa7+!?@;ApY zs7Q%qn&?}i%NaoY>RByVnCvZ1DDB!y`D-b#GD|PqDfL{i0u)}iNi%o5~_+Hrn?)r6^+#{g${YFQq*6! z^|$UUMVCvl!>jzbHvp~fAk#j%7BmorI@Wsok~%t6!Rin zq3ALnB=zGcE6b903balGjdK{$J6udjG>JxXF->T?2NSc-#0x9VoQ#kU?aVA=r?2_wd`5qdeCJDa`3D&rq9)&$jd3*-WEals)K9Z4Awruwi{>5}TRj@yDd+H* z{vP3AHH#W$W?{9biC|+UD?u<5sm;Ev7CbnoWhoi?nPwA;`Ilnpu~ibKqnt`sIutZ~ zT1A;HT_qh3n`$#Hg>*GD`U90DDNzMPs$O?>%C)?AYI$E-m6hta4ug5B?@Z!DArN7WaX3SgFjs%>s~t>JE3gTEcm9-a_AIYv5`&60}WBsD?d!-h3n1SSEfjS$K^ zHD~uAsVqpslnU05MC?g}l@dBNtOQOCEAv^VTg0YYR!gwbvx_E~45)F-U&XXXHIlOz zt`62n^ROQ8wYAmsP*E99O3YEfVM^(u=&VB_?6f(ANd0nkpr>-Rz*#SO{LEJ!U{VK* z1WGB@DwujK<}B2Byb=Z}Bw9qAq;Qc;3MnO*B89mWNy4m@ys6ierKm1TQI(~*gye9W zs5U9~^T9RhE-gW)`^U8H8Zd3#i887c70O9|jFf4H$_7>dlicpAmn+d_J|rDFqlb^t z>)4li<%?oEK{v@1SfCnwUIMj+g(Mh98(d6DJIM;XiOC<+oqSwOB1bq>ib71KDBDa> zYK#ji3E@yML1%D4DJ9CxNy2!ho`Yp7+OqG09<4to^o0iOIx+*Hml#^o5`n}w&Ey?ANiykR0Ehb%L3$8Y{gNyF8(Htd89v2!h zD~}@9o}ZXc4SS>M1ZIS44bPWtQo}2491{cZ&qT%s!LPDV#*}t zaxK_jITb3&NTsP##-$d45k>nuWL#Qjb17|{aB&B`i@_~@rA!|+l{TIf3s+Pk%-lq4<0i31 z*h=GkOM7Oumz`kEXnRUWIh8C(;I1?b$j04FHl4aomxnzz_)8Lv@!Gw;TLh z+BTENM&ZujqWp);Q9f|l?=F=>G6A@B+B%;plhcIG;9_)4l|<*vCXL}xW zxw`Bf^CkyZno_DR`=1jzuXcwj$YZ7*63$h@h@$i<)OLYV1=|$NcDXn)Xz}s1 zNAj#qTBKe))VTX3218*Nc0ev>q;jQMU*FKEhS_X)(PlG08uu}7fmg%V^+1acG@uJJfSoKznb5xe78n9BqEt2 z=z)W(29D)!rnR)RX&MLB^We}E9IQS)NM>?`3yi7ZZmaaGtkQSSRq54)D=WPOH|?Ut zO!iR@!;6eZo$**Z7Z26gN*;qE#Zm*=GC;PdW={=oH!dT_rFkwc(jt{y#1$_6aOvZ_ zerou*u{dEY7R|-t+%y)@kbpk&(pdGuYFPP}tjjL#pQYj?=?vv0FSrcAWzfO3qy=co z4BeKNcFp3lhtNtc7&;xL`O1FJA-=Mu;D$~~$fo@khN07I4!WV!ouFj93LRlr0W)fU z4cn>?{?&08y_SFR>$tPS;L~gUJKpbK^PK)C+3YDm{@KoAbsM2f79YPAg*EITx;2AR zKnpnm<9<2;?9kh3Qw|LUv?HLM0qqOuI{{rq4mj=81G+w-mj?9afbI`ycTJ}KbU!{eZp|(BFj})RO^yHK2bE=*Mcae9sN2F`(vv)&{g8 zpgjQ{2SKyMD{odF#V=wd(%!b<9O0W}1)JfJTI^iV+G3h285y#ST&vivBWjziB5 z=!F3-4yY%fQb0Qb`on-e9?-)9T?pt|nCt1Ny~)dIS2?=VrX40sUDa`+YH>+81QMx`3V=&$4(M<|e;?471NurpUwTpI_fSCR0=f{;^^FGIiZ9wk|Xj?!J1@ve@-wx>e z0X_e}WX>-R=;nZK3+T>(-V@M=0{WwXjs*0DfW92iR|0xlbB_020lhn*4+V5FpanN( zin@S)GN9iM=v@Jo0(x&ie-qH(26QB#F9h`5#W}Vc0%{JZHK5*r)&%snfZiFw!vTFE zpa%lF`j#B;j|B9LfSwc3&X;GrT>-ygK_BQ}&Smr)Bs+ibR^_tIRtTqw$RUyXjiL}~8cN0H`di-7zZppI@*KA9$q&;~) zE>p0wFn!CFSeRbC_{LebV7n>M%h`g}s`oY|-OX1&6mM05Y^}^G`Oo$1sCxVsrnj7Y z!);&r<6mpP_QTI>Z@6J)`{|K)v_IvBQ@6S0={4AbUC(axAkpYuaeaJ_h>0eNx9J;C z+5C;`-u+UFywqK*<6NcgMLJuBIVCL9mAb3>G?cpQ`P7+TJ=UsASYl$Q$4td8Vi@0O zP|eiUw(nN`UhOtz(|($#%K9^xfHx70U5ocHanWqHm$`2Br!))5xSD`!3EF19oW}6S zfRAaGDbs(o2#jgge&DkE2rw3B7kOAGu-sU9V5p^OoV%Ir3xlw3&HRm1zuC6yPMFDM zlRh^eD|3WhVJfiKE#+atq@UFnLcqkYMzP33UteJMWK7c6W2OV~slRz(EXls|ASuki# znR67uTg}b263d+I_Ka0Vwp3(fi@D1gY3}r--I28P%bSg!v21?(y6IuABlKX3u`}%M zc48b?T8@MwL30Yl&$2|=O=<1*uv2-aP;^ZeW}HM1=e*x#JR|dtg4@f#9{%-BJ(~h1 z-2QeT*I_b=z2glqmxXef(On5b%Z!)84q)1`yo<@s^(GKySGNh6_10~7_oN^TGxhjfIn74|QbNs$)6_i|TlqJw8|;K!>jundu58`lA0Y64_f$aV z0=g8CcHbQD`hZ>>(9Hp9OV9CsF`(B6)F04bK-&U(e?Yqe+8fYk0(w@gaJ(>}TLM}Z z&>aE2A)vPg^p1cw1yo);`EdAsG@wrf^x1&E5YX2G`es1i3uuf2@_gA9&~6|f-+V3n zz8TQ>fF5IfbIVIKFo~bWHw^a7PW*i18`U*3vtoRs>f=6Qh@Oj5@G{Bx>KZ6Y!W7frXHVaVmoy5S9Lh&;Gs*Kmh z5k2;>2t%@A_*C0)Loa<)LtVV{EDPPpmNTyQPR=ozkd{g=f5Wf(&n0FU;9T&G|n|s&xN7&TkFUW zb?F0BD;lR(G!bLE0z=}kfIM8$J6gA$c=W;J{>eU=uBe|{p`N%*hUMlUQ@5vWls*L1 zzCj=2t*Dt=QPJ0veV8SFzn{7!R=UbfoI|1u_K^*AYbhBGP1lkjJqXZ8Xc{u&>bG%3 zKc#l<)Qai~QS9i|`>oscho?0#f%%HU)QTc_@h|`)V91{inqED>4q)RN6&<(Jk|0A? zQ;5w0+ab~>Mp=~g1nLPqHYo^Q(LA-H#pGd2`jpQ6Kbr_@5h$HZ`SYn2i>6lS)t7WQ zx}rp@YI_a- zU!uu=o`2=vD?1!soW4!z>%NtL)9BzdiLf2q^~=p&u%+sMn9+_EG_N= zAGfP~6i9ZJSF)~YKnD|Fk1i2Oh zdV;orv+S!NnaYZNRI` zROf+l1d&hBS76;wAhS%3_c86@c8SL2aJxkN0aNG!G_ktKeG1h%hP?p9(<^HrC}Tib z3qygf4%t?r?~OMadl5(jOu>0M$BzfFJx(tQS+_~rQ>+DE=p#RmRe6i$KMt-kXM-+5rF^TU3hV?4>!B)R+4 zM|u|BdEh%!h|i+H2l!O;QTCO?ad~3ki(X$u?CUr-vq%{_zg-WHZ4%@ft*T7&c zg}5?KoPnkIOgLUIs8vL^fI#1-AyS-pQN821fMv|{?0m5uH?bn^q$iawV31Yz?BM8( zpJ5`0RFPjr6?1?e_DNyh~+e zZgrW%l;Ti{BoFFIeO`2ty^LeFG}EiXKE^3UZcvzp;ueJ!Pl04N(Ds(I@T39SQT+o4 z69qF4+^7=pHnaxYBUEJv4{mVcMKQ9J`MxR+im3n4815q9 zbWmi|eI1+jTL7m-uKRaCC32kbJd%5A9?9KWHEqo&JLqDo?xR2Y4FAf%U+8dn>5Q-Y zR{qVSJIFPD-if->?(#w4wYYRS`vQm3h2E79STUtew_BlV~i-v2JY7x zP**^I63|}+^yz@^4d@>O`lo>YB_O@6;c@5{s3d(rvgzi2va;up%(OZ5`hfmNK(a>X zp&trpPe8{4`j>z{Rh=pRA)s#s^rH)M=$!%m?|?oX&_e;8p&(s?vjLq0N~36kJoKdj z{S44!jG}LyJ&L}SGFL^JZxpRMNx@dE5uFYnynPf+?3W!y6Q*%t`S-&gMc;a5qv$s* ze%mWv@ru{o*z9BJd0#HMX>m)ze&v@-{(-up@=<=hWZ;eK2Flq{wUhd*PEhkH{eFyp zg(qPY4cqp&uKU;a`ggp){nO9B+eXcs&NZ>~)q%G3cURfm(VMHhh`3tMAs(RQ(Ij1^ zjv5BM8s2FaMO{^C8KbNXKt&H{YibkE8!_B+cfzZ47eg^EtkO!5GJi`{7gfmKb%&AZNqI5<3;L zIW4H54HJVFDG`c8{ZM`{tB{6N>1;ebNdYOf-T_Vx5~T4oD-;oHadOS& zd9|$#owj%yAYL@dpl2gPo#jOmD>-WE$MojwtH|gc+kCi6CD40U-9|kG^-5lS-89i; z9nqSo$8+~WHrJ&t`tRi({w=0&efqlZTz~V)MOdg8(ij*?9)BL zR7DT{v4EZxka{Z*ePcjx3Fx;2x-*~;2Bbd9X;%W(T8wWBzqbVRJ3y)-bG~F9d0VMz zRk4%}(v5SjROC|ya7G-H!YO*qXYO?g?NUfblz&g8My*`WCnA2G5s~D14X)Q!RHd0G z3?d_@>)7P|rZ@hN-+Frv`3NR;Eivq3Z{!6r=D$TnRU|Om1Ozl^lTOS zReE+?(z6^kq+Fi(lLr4<{a4dgCN`bxM91pY*&fD`y}a_a1|8dvj$JDq`;+7{?W9ld z2GU&AWVD=YK3aTs2yN>N=Q`kiziuQXjfVD?4lx}jmBjn3rKB~XMt7Q?*34g1aIMe! z)J~YdqT{H57NA?udF)7ge5TLQ&@9lKB&N?bnP#1wzuJqoX}5G)jvt*SEl1zr8a(v2 z#hv6$w}woIYl5Pq`Au18*W+lOyvKF6CST2HPx1Mm6k8k`z&yGjoK(3ZgEM|l10I)@pM=eV3Nt z>!-#saj69imMMxYlbR^fL(wzfY_NA=*#1b|>yVzVhrFsXtzC1<`=!$ICZOyu9X?Rj z;p>tPf0W1kHcfO+*Wruj*5R5_NQ23Aq5p30@NaYaE=phbo$GJX%v{yY?-bJ0z0hqP<#(Efn#59oRX_Rz%v4F$9d$aTB+ zY#s0K0(t;Q#qgNAeeq1)E`Iarc4Z?XT8ysS$IWMM-Tp9P(o5yv4^Ou*&U*R{Z|Qqu z{~HI&T0cVk2-%hB_Vlj!ykqEFW{;tNjrq~#bo=R~+xw-@_~~q1;YrZ#|M-_*X2to- zw|)E6Z!?bm3C7cJN7oPDcJ-G&-`?K6k#Y5Pru#L%);L?^Z9ieQ()2%vx#$D>(EaKI z*3uUY=vbMGoi^6*Td^86C(VzKjhz=XlOP%8XtFPwoc+%!^JNJP{V#vh-yJ2k@X-70 zM(MA{&!+uMTQ`D*>mJj-ZK5lR&Y$I=KQIn0C3f{ht5J7}J;5>uj$X0FRpCA`c_tYl zu(cs1)R`t&n>5O{WngWg(TmsuBd6)oNvlWk(~N?2tH*OleUC%P zqF&IKlhreUr<}?u%qy>ODd=dM8YmiCy;1?~{BZP{4U$7cGv$G>NVzRhdw-bDS?Pcf zvx=mkb$Y51<=)01oNfbGo8}pfwi2&Csm`>%%>=wZP`^MwMC|I=imZW-v*mlt<|z%7 zfjT?&RL!U8H=3~u{#kA1!l{;V|G`P70JxCgtD1votJ}x^4LtO4)I#9SEI~;-V{|RH zGpXJUuB|Z83aGDyYGYVEm3nXWtlmw11)nBl;_s<{rdPFiCsO|?vr{q(4L9sn(O0Pt zws@*7o`#LAfU=;d!G)x5CA%6n{yfF9PQBQHs}2ILS1-mR!;B5UN-X-l+IBs zPvf(y!Id32`Q6ZApQ@Lnue;{@oBFO^Sg7x60S6f#f8X^E2)u9D5YXKLm1ih_8-C@v z$}^%TdUilB3h35=mId_70sTQh9}h^AZT@6IpI$yu1B0wCI!u!3Q<}-J{caSjY?DFr2*YCya=(GC02)Xip zFTJ2XZ@+iz;#qT=7gLaz>-Rb+j%{SxQ56fn7x1s}B=mcqsrw!;+kW=8FWvg?_8T8K z(XR7Gn&&*@o42>WcGJ1k$8|H$>7$=pLm$^q-?o;1Zh(Gno%8^cn=Wm_eDjhSL+l3-JcO*WwjWuLn^TO85=pDxZ`R?u1EabC*N5g}Q- z*Az*MPiKJI2+{IUtF78-(&Lk+X4IpWq?&BPL`;?4O70M&>tiX0eS&4`noG-4r)2Sa zhg;EUYJzj0o%m@??>W%H*{Tj|Y4RJySRjpG<=ddeCZx6Z#G#VH)`F4F;5IUkpsSJ2 z?x4pVmrAyo5`Q}<`{2lIMct~t>S}F!i{q?lWx7@iNu4kqoe}GhYa`p6aFh;b<2W5z z7ELo&>F6Nq#L=U&KC1|JC!*G9B`j^iB0){+(xv_B1!DKEMxCp5_7*3zqtxfB&r!dp z-d{aZpH{`JH&&1NAY^>K7xdjo2sP2P{-wlT9C53{Bej&5I&Y*rOb?Y76Vv24t zCRxidtAA#+knr)h0f;2}0R{`wW?h~K`lcqG=%)3>F7}r`$4Q}06W!DM(Z_hz-S?Q3 z!1vSe{P%Mm{%uL$#`JaHx&EepbsQGzR}0`=QNKDCJ=5-hbdJ~isQUu?YCzu(=qDH) zJ6<86mjv|kfL;;M8v=S~KpO-4{eb>gKpzX}69G*GbTlCCKe;U53Ft@36!-gyfNlur zB>~+QkVZI8@rwbyHlT@sbcV|N?rW)PPH|m8&jy;e@1FK%z3QuqZoa--#Z2~FjNW%^ zn@3c0os)V2VJ`r?{QKec-SH;=jpi|Elj@b6cJPEBuD?GkpQ$s^(py3o~G(|?T%`~8v%@6#~*ZJyzH6L5EuP(i%ru44r zJKMB!(drH8Fa!(_|IgG_3=Fi(InG$;Fs(|vm}*r_o!dAd{K=nVo_rt3ZFkjua`OZ4 zn)veMriq$q?d+!1&hFBrvkKK*^?L&BSJUC&^ICP{m%r|s>u+jpI|);3Qx(6W*7iaO zytR!5bO^}X-PgkJn*n_fXufuLQ{~dCwL1wmU%T6BIF;@0bfTK8pVAJTw@{Gm_d{!U zH(hRNH3F`@-964-vzuC5XU#A_Pw`x?-JRxelJ!zg^E~?{K7}Wt-TlbFUueH^XI=ZF zuX$_xj(Z<$zxvF*?H_#8AGY88>6N$r=EV17ra5~is#)m4+g`h=-)5zL3r01P)4wP6 z;l)CIMy8z%-tQ-a(|KP%Abcmryuj2XRaRt6b!tH;1lR%HE;{#v*nC;FPRB}Z!j+bw%RyTq zfqU6w2oIZ^4>Ln%i?IdiPqLIrDqC$!4&`j~bW%ZBMQR(twE4W34GYxF-B;iXX3X-n z6s^O#S}biwv_Yb?0?;iY%}V=NyVhdpf(}A#oqHYO3)|%C=NPf>7%`QT8vzFd3zPKf z&XG7U-zD=nC2TZWme9K}h6M-Rhgqvhx2Q5Fqtreu*LF8}2SO1Bg;>~GTNqAHkppI+NN;Y5x%~( z#O^>d=4EoeL`&*S@LRz)cdxc-lM61poQt&wUxDFPyDB@e`8rfO9_t5TiC?F#Ia{4@ zSmHQ!PiaZL78A6Xs(R4Omz+`T>*Q{dKjDq?*8)dr3At+6)Dpv%T|)V{CT#M|ux)W8 zWyn}@rx=lXBv@Y|-wwPveyt42+0~b_%Y<8$o-*KodO@h#9#Lc*{&#l{Pr`AnI>SQQ_I=$JO=Tm~;nNdxVujOG|7Ora@j5 zQa#@!Lti?APh5*cXHRaigHl@3nYN(FBGDlOgD|9Hb;ee?@E652*~YSLtH`>69D9~& z%w_T$agsb0s`mPQ)hb=WPx&@5sU>FRTa6^hg~}=TYPm@Z9~s_D#X5$I z9NET)eADg4E{k0V=}O;_brpoJMe^>lY&1E~mwZ(r$)?n{p{+ zYnzputfr-Akq*JD%4_j5SNYs5_DgzqVqr#>8S}u;|T-0p}-g0U2Ue!<()4xT zx&G!^IxIAASP9M*%^S))S6@%#@N25Bi8Zum2Bb6LKEL>zfXXK}bj#jDzaG$c19~cx zBM<$tfc`2V?J;@i-v{(SK>rrd)fAB9{dhoHYjeN%1@uP&-4oDP1Nv@2SJ8fxQ~^CJ zpce)7(tz3nS`pAlK%)W4W{z{-8_+~RM*}(;(3yZ1L+G?G4@j1?-LE^K*9Y|L0lhPz zjRAcwpc4V<96SH>Pp8)%x)f0Lwb`#OpoW0f1hh7wjRE~$Ksy538PJ}9_60N*(0>H< zbegJ5b$viD4rp;e9RaNjXmvon0evE%PX=^!@YNR*S_Q z<;CJ=ompjyT;9Nakd51ZCSsbC_~z}gJiyk(b#fdA+LolNe`xXus9d-E7)LD+Pn{-& zyL20WfwkuE63}^9-N!b6`(1ye^{_?LI<}U}9(`1;{*0uxUp}!u|B1&;k@~pPxc^gY zW3s#AE%!`7vX|p6w|o}lrT97C&j8KWa;Mv`QyTSezLtC1aB|DN4p)J=L^api*zHLo z(9-XTY`Kk@DPM27OT$O)Sffr}b^K zqEBn4X>Vj*DNPzUk-%X@g>r0+*%$0-?jQRF5ZlV9#X59a?AzDf{mVc2!4K5(Yp1pR zmtCgin}(t+{8#AkZ(bXpzx}6nuLh!auPG8@J^oW;82?P|`BwsZOF(x8^x=Stsl8oO zwGznn!<)jdd~@Y@@S9IROgo-sxi~;%&i|b5tbH!q0#S$rXS)E z)=d2n0avUa(&4Q6^+P_CT%jLyXXtYM`XIR`{h-I3^?S1V_41xoE&8BpvlC}3}|LIoHKTXz%sSXc|#ihZ=#rU9SkgR|TY#pYyfr zX-796_nw#%!T%NQy2E_tZr5)hO!Ah0KeToo2Q+53>j=2=cAW<7^X*07+WfLvc5j~c z{L8oN4vwm-T^~(HR=)sTcoN3zul)L-wtx4}Kixk08((W5Jo}pV>;B>g?akji^s^_{ zH?`M1^;?|CTyfiH>VBtv{9QZRpYoAo?bnYy(EhWdo7#83{6E?^b-e$!qknhtwu}Gu zV*8hF{ZUSBuCo0!?W<{jP5W%xSJVEQ_T6m%jgy@^;i;3J+GoqBJN=~R%ssZ%Xf^iO z`t=ztuGNP}ZS~n*T&K_e;(C3y6$kZUX_60nY^(TakL{Ds#CMs_g;twwI0hNM9Wm+; zmp;NajJ=L>b!o-=yeTnS?4ruDdA_W}c0JgJ%S7r)(JrI*EMsW};p}F_HXVAZw9L2Z zddf6v8%CpdAoG?T;l2YhT5PrOlI`r3mi3kiTRcFAREdRvOwp_W+3b+$wrkc+deMdM zgLqwX51EuKF)BHDsvF6kL)o*_Jy(g-kUzgUWY0|Ek^rV#M~fYxc_M^=fYYY;a@JLP zmjozG8*(ibyvCfDHlzII+GYj%vuhg5B8c(>>6Ct4N)-D&V!1#ox3+ty87f(Y31iwNpPR2gF(9(kv;zg!kgkXrhsbMuZT z;jxWXTGkDA#qQ{6Q3EieDHsjm6l3g?B4rNOBZGOzbZw4P`@p029Ae%$B`DW`MIxoL zHCvorna1DR)IJ*lL`FcSsPV{#ib@H2A>pPPisWRiJSL{9i&mJ6NdF|=G^~_~N62F# zunCfjyGB_i*{X%$I|BAh;z7&X(IT@g<>_egk_d)Sj?ZvND-e`kdbG0#{XOen;~bTY9U5b3lu5x zj26$z$yT8Wh>gB;qGO zEZI^rlM0wC&JzUqMs;b~K)LWWGO&bJDO@+Kr~`!OI-q5J&uD?01@`<|!n15iY4)!t`S__(s+pD}L9 zyN-b5u!6z5D6CwK4+%@vcmjaIq6dSeIO2@KxUf{r`-L@>U%6C1;8Kzpl`gcMCRc|0 zM4-ak>jbBT@@PVF({4nilAv~o@g5OKj@=@-f6^c43<6=|r}9VyyE4I;$DmRN z8n#ysuVH({UDqa%zAu>Ih6(OqVxsH@IaShK&cdH}B!49CRNB(lxfA8gc4d*0uuYjc zmbbT+;HX_&g`@l&0_aMZ8W-lc}$- zM^zaYKF=MUwns%9DI zRjm(7=H$r@K;hl;9*FjIwA(o-?% zfEL})h_f+@v0|bSDup9L%d9-48u61@%De1!*otfvE|X_UOE~kfULY5Z*V&f_pd8sQ z$3g`uP6b(3A)Ml8P458FDMfZX#7Q%&#NxaVjZ`ee%2{X-Blgw~B}ZvV_tb&`Ve_uV zT77eo9hYOFfwbvP$RgC@i| zsqD)+tMRaD7S&QZJGm)7s~xClp)%?bQl`)VmliQn9E5_zGMW$#=OT>nHu<8w%&{E@ zu@4n{E5oFhVuYn8#33}patman0a3qRJ$%8tCL?_uV zmQ<}Z&P`>mj7$MXQ-Dm0T5c=#oQcpmrGx3XQeWcG%Qt29MPV(p0E*lK?4nkZK*y1e zsG5St*(M#B=mDHsu$sS7=#z4I0F6;WsWFle6N3XdN*$-5rWULcG9})vFO~u&?cvgf zea1t99z?T!&=X?i$8fW<{4^O-j#1b)FVeX@Mjk2?Mm3d~1vzvWub&V(0M~%KGs+K# z#xgOE9x6%~r{OR8P!98jGFNL(pNi7yttizSIZ3Jl&djPne$E=LfE2yV2`2313K>(Q zlI>OM`KmZl`B**h0LsS#tbF{~P%q?bRJ?ZRMioQkswj#4ETC5mwP*`4a^0QN<;DKe z5^RiGQP9$?XmU$FWTXlbse-%-x>-|;StZ(->Vh8Yuqu#Z-X%h-COqEZ0jXkjt3<|% znwpYV=ajvSzW5-!no*B6BMtv17j}sYoxV9%N(SYxdgIB3a^g^5?ugLQS23f~X~We7 zIgfk_Z@0>k188kVG_|1Bz9}~^$l(W9Ay!Z(){((g ztP33Al-ksS7U7|jn=6S=7_owqHHu^oopy)VtNGi9Nx3B)W@|FCsRfOd==L8=G} z^0-+7QO*n%HRUItPAF#>)90Mg)n1j>i2VKB;ZSkR90f5^n8qy;wx%*nd8?|ZquiN? z$Z$B1qIgIxJC79RJW`m~r#7%SfDC5Qhu}sKe#i3GFP#!ZW_D+vo zy0(aZ^9#)Bl`D%~z2}&*sNt{IoO17JZFDTRQLFPz_sKCUG4*A#e8R}kGBN4HUFJyo zaLDH}Sr_*NB1z1{mP{`am^rS?8I_Dw~yO%6W~PLU|ci-d#etbcTxW$~KQ5)OlQ7+F@^ ziTs?AD@Y~U$=Atc>r57hsSI67Q8Jim61KMIsWSJMHXN1HkGoQ$3M`jsJy@L_Q|-f! z+!BtKx~fj9J6DO_kc8emA2@i*9X)bP-{T4 z2kdz74QMQ&^6AcH*Jix(smKq8pAH;5mp|bAokJ4={d+)b*}(VEuLX25pcTA;?V+y< z==A~pdO*J$(B^>N7tn_TdS-3r_kw_45l~M+0|BiM=ss({`S&<6whOh88h`cgn& z3+Vd+{RjgRm*DzYe4S{=u|*o4M^|3dmL9W zXm#k>0qG5R_q#cu+X7l0(CY(wdqBSv&<6tgNI;(m=#v3G_Zd01pAP8d0j&tAH=y4P zXnjC;2K46v{dGV`0{TKg-wNov0oDFQmZdJBmjrZkK(7esj)2}8&~FE{Euh~I=yL%* z5YVFmeJ7wFWtTpcOh7LV=$3$n0@@bPM*{k2KnDXl640rDz8cW?1GbK3j$ga z&?^G!38*iiiGa=m(MiDbTF!4c=j#G`HV_K@F)e}KJncv>-G0>${>^vdPQw_+nigZS zszO|sJCXYW!oC1@`S(Pg%z1H{t(Knob%u{l3QappUw$%r*3q2*{F&VRsPueib8cMR zI_qrCCm6ZWvGJR2O}~TWY$N2TC##BTR8@Eq&gNYE;g7U`<&VGGzUAb@w>{;C*Yck9 zcX?O(P&!{<&lx;f)^FwU_Fax7&RF*IBGhGewIF7P?4_!866I%FYx63{42rbVKbW<5*aB+hin6bvcDjK*+BB zSA9OSqTZ~Y*=@`fvUessZOn9zaI%7Ed8m*>#C4jECHxwj2@zDozgn}yxoGNoog7?Q zK1bY@&Jpi4`}g(JrYW~n-8FE7y`b?4HAnkBzr(+a()T6l>%MdS&2tl2Xl_E=zOuQ= zuR`Fu=gk4VJ)qwWXmdb!2UI>s{Kw(d?kA z+oVI6hL3dUYFu%vA)ck3sX`;*icdG@him86pf}!<3{#aY?JRu^4O$@Awjuj&zWOPb z3r~UuoozqzG2bHjCCVL3g&Y^G!wesvMcB~eqgP3~{CZN2>Cl>dgaA|YD6OlK+QaaH zZ2=T9wxB0N3Qi|%hfMKm(aFrb>jW2JSv|^M3rU^ubQ|*50~aPAw&TvyQtV$Tn58`F zN$I+*FVT2ND->3HOo8%E>hm-~x)60r=6;LG=Aq#vCZ_Gm_6t$!MyZ1%Fhm^aFdd05 zEXYbQa;D`z^ycz<4riNk2KO>AgdCpZg^*U$kc#K`)!6K}xWm7N^v#;medqd{G~`ZL zNJC0pC?D>uwj)1PnT#J!~Yc;?X>wwgH*m0B%G_Sx|%j=S`U~1 zerOsko+6#8(IViAHCleGbY6{i(~Yxi7~TIE8f`FXv|4cVW7=6&coH;Pey8+ZU;LBy z3me`Y@0ITOZ(nM^@%taVjcDz?((-)`-PN#rTZ|Li7$XnPD}aPufMTT@|#(@MBx_3bo@?sUhc77U@W~ru|bv#oR8=Umw8=NZc-P1G{Cn^ z91FEK%nN+6CZ4uaj=E+e<22TjnG0K2w?lvn&9{%Wb6Ge)jDhlloV~k`8zDzdeFY7L zvC~HAO1IZCShX`Hx7W+Ytn08vX~!#Xg~`6Uk8#l#F#^`&I;-@h+iPslSML@)ZZDXi zXuI3%OjoAuEf&tD!0Z%2R=X%qytH1<#s|k!?=Rh6ZM=A=8u|u=H%sQX`)w3y%x)i3 z-Uql!V@lps8ZeDnm^P-o)ifqctyTY`hHAf?JN%n9W-+PqR*czD}A|Su>wzMS;%HtR3bvw`P^iSm}lG?}w&Y<9WK7nl%EhNVCSn zb%nybH{5PqJbSG8*H@rfS>CKFJPDc=wsX8)*NFCPV^-aP_UuG^u0(rwqdiwidw!Iv z$YE#=6j68jYd6xRvv@WY4+f3+4Lii(PbaMvT0o7UL)~Ax&>_>E!tj#==vE&dnubmO z)3kEN)fEfvL+ZK(nn+E7>F+&g#hb)a|2b-+R%KM4@?f>2}%n)|++Gb_Khn>o8+O`AVziSdx)!2F>Pc!%%6; z91mLGV`2!c{o*q+1}D9F&}QeQ+vRC-k)GO9>VzagH4J_Hxw@=Pdy+QoHEr4$+LYQl z$1PvBsj6ff+J7(a@Nd51Ur28Eo$K!m&8qbgO7-z;)*}$OHhUnT?*?>rXua}G`kCSP zlL5Uhpf?BfTLI~HRga?-&=aLar32o8y#BLUDPGEkE7PK?67y+M>45U@iPWOcF0++# z=eIa~q}5mAn&Uk>RjK41it}~zy+rrA8*fb3KIYe&i*LO7W|S+x@(g=1`?Hr@qZ}j~ zw;^lo0vG=lK7}ViYyP)C__y{8V;^n*-Y4I4+ls$f)!x_hkL?}pi`qZ8?m+wbzW-<+ z`|{cLwQu^pv}W0cHq{FbtI(#a(WX6UR(q*P+H@1004=81*DM#Q@%Y3UA5EM+tn618 ze(1+dTA?hGNNF?@s&zxwGj)_jUoHHcI)IV@%T_G?OqCyyI)*N8K_eO+Vh8q;z!TN+z5rXuC0U$FdP?bdSR>lVTSMv6;s&f%K6ioeB@-_O<) z6&r9Dyw?HZ?NsZHWaxXDdMEWeK7K|9z5atPuO(if+thWScGBw8pE zEnE!CX^BDokaDql8m+L)@rskjYgj>xca`$g`!Z?)d@5pvds$-Po^s06SGnv#3!jQu zkvPSg`>;r@#cKUomYLNOn6>gI2YuG^0&p`|9tCSvx`iV_^p;0ib0SHtf_a6tVX}{E zC!88^^z@)$ty?!6)QE4B&v%wrgWF`jMW99?(8R2se+~RAqyfP7ns@Y<*Rt29o^q?b z{Log>Q{Fg7Pg%K?!eNZ6FQqweRn<)$N_16KvBN%to&Gh)+<$VfNfv27(g>Cs{+*9^ z1?MgZyhnRqKpzR{qXGS8Kr&O{6vqOZYaOV(ioGEE${!Et1p$>;v41xFelDQ@9#FYI zerxz`3g|rneK?>$3+S%`x;LQms`xYLs60i_3+TTD^s<0%59p47G&geEHwX0AfZi3* zT>*U{pg#`i&jR{C0hKN4{eAeA-?n%p{QfPVtEopW%ff*4-n#p}Fd$hJcfUp;HO6bI zR)pWH0{UejX_3plxTya34TSqIjaY6}6}+nIv0u|=QxF`N!fhpWn9pVAeT1q1E&u+X z7_r>=pBb^_mn!BTv1od z7?JcdA{k)xvA)=+(TEx!eI0YV^j0Fv^y&@0XJoXX8C(lv3$3baT!6`E@3YWfJ!}?e zOrpo0%$3F}_*ZNJ&_^>tvH=>mz36pKm5t zBa&MGtT|%Fw^z-X6Y9?1=jabw*jk`Zx(^ig2kzs}?DZC=j;T+31zPP_7`+u@funV; z0_Rqj*MaCE{=g!=mHL=IHa>JSgPj8Hz&eI67DBDv3mr&q^~z@1@j9 z>ai^1Zw!p`dfA$Cztx}mt=HHLueGAzy8Pp{(if-IciaP9S;fXcm7c|Y}uo0nCZWlUObvBaKN%aOzxTF!hfqvZ%wn=SwTpU`q)r147T zWsCF1=lrW#w=}ojVrs5DFI&6h@>*_Zi)*>2mw7(DoD42J30h7zT4bw5Hd|!7MK)Sw zt3@_jWV=PST4b|DHeY1>MK)k$3r03yWcx)nU}OtMwqIleCfjexZztqe`t*K+?7ieS z6v}p8%C=l8ZM^u~3Ee2Y(rB?ypS{I3`ivC&_1RxstIzJ@fIi!b>-6D{1Rw0Wbn%g0 zm*?Ds@0LNb5dBY;n&5bj3s5Sz*&&1yLcl?M1*4 zFa@7F$3#TevpW1a{M zz){wt#U_AcaAwPCg-=Uahf?O|YBqbQuTHY|SlY7F(JRc(9JVU}2q?169?s?Z-n^)( zB}?9qwVZ8~bO$EyHAhj7W2YYCPUSdB%C~|?iv`JfPx82*g*;562$w6_O8r9sij391 znKnL@1NA~>POBkTZ)E^I*Ham)E9+@r_<$j}3wit6+9avlDQp{WmLfPyn-W~=?S;18*r3IIww!OOpR^~P2pygAw7lyKnhA?Du#eICQu6n4- zGVBt45;guzx|}~`IXF31R4yTi^7JAo3?fF07lfOH7|TK^rQn;8j(=YGsx9Y)uiO2W zM?+RhxRlL__1Vn&jI)-=G+8eAt8Q#nwz;K)(?WEk8YcnaqRbAVB`x`)(odWxGv^b| zS&@RFiZV51(&Ccr;45v%h41-z6fhat*m5aKPB~ExzNM@Rprq9rYNDg$I&_H+*)sMb zKxxa6(@!&WbwMb~pYuZ5>?l;N_2rs)&bYXhtJ0Q<5Q3WM4$#|X*2J?Aks8&+GotsJ zcv>JevD0ee{t8xZAq3kmV3am{h@M{YD#%wRV8jy>Fk+&6lga@yPD#L}7`+05bErBc zYXX2k<&jlC2_u6oR-B&OoI37kx!kORrz)b%`2bo48hTo{ZAR;ZQ zdV59hRd0_#s@_UtwXcGenL)ym!Y(jMn>}P^)l(S!c8iIso^pU}Qxb3~#;AH*m47Po zAyD33W|o-RG<&@*GvKS7=`KdH~^QNy=4EvXUo~Jn>zf`L1%liV_S7 zfXI>+mm~*YDeD%#DoqzavMIIYToe_f5*y^G9`)yXbkMqmF)`6xdbGF`(9%7cfgJ$J zV%28nX7#JI*||}N;O13Mqp{D~Sz+v?i06@0_oxZNce}W(SY_2`cUdMv1}vh|GQwyF z9+qqHT7?~Ot8b+(C#KQ$JKbjYMU18_2KIK0j$9IRa!I&EwN0Oc)U{E&KAG})NWMcx zL!l^2!Ux^c=*OIX#B3#^Qy;cUEJRoXf z`%zHW<4)#vjzQwwRppz7&nEVe@|&-O(uqofnw*vD1RPYTlrgj>g!k`_prm?UtiZ+) zk+A*ZDw&{MpVpBSM5pT8;8d2C*whh~+MngH*Yx^~TIZ-+#fzt4gt|bYupBf}?2{8q z9}4vRvB$_5(Ln{eg)=6@l}rR~xu6vLXw@yhm9}gvdr@^HU$6LjYv}=`GPq+kj?!jl zL3LyS%NxqF0jt^0sN7I6p(#d3Q+w%luGW6VRlrJdT+w2U=4gc+6p>JP-kdNRjfdq% z(`4kO6(pR^V~{= ze;#~~N(0=X9OXH&87itWK&=v-HU{=QJgZ36)Xr33`{j3NmDvcXjGop)PK!!WpL8nA z&SaTHlMLl#Dx^uFJ_zawM>Uqr<%CggAw@Zdik2y3mMN))9ES?&EgUO=xct$%(w38? zGqn(!SV0U_ot71?B6?`9hz*2lGCbxqr44p!x7IWDp|h zSftO8nQ5|g)ynN9SR+ujbljw-yFZbGmW94Vh`O9U zqa3ZE94THTEH(C%Vqm86N}C-iOD`K4AnC}@IYcrm8g2&71ed`Z5+Zu0p2<8FCygjS z`9YzJ8&s*?X1NNtSw9%Eyrx!Ie#j=13F8{+kV;$6Rbh?M%e$KNr^?BE)Eq-3g*rzS z9#o>(!VMqQsd4d8mE2#+K`03697IRDQf=1;x%u2fb9@NGec~Wid!2)dY?A3DA6O_K zklK>3Mv!YE792h1vd8WUdM0>IFG9Fkc21|?C3^M&lH%vJP0^zwlJKevNmLC!m7Ni$ zyiQ>UQq$S#;$RaFAY~SM#+X=+X?4o!EP@5f1YXb-U&~)*!48*+VUT1A!zrp3 z+5HiqJ`0fSchcV0Sdw>CP>v*%p4M!(i@`FG=ly8>*Toqv_5eg4I+JK`PB*Q+iEp&G)h-ibD#?;8 z(0DDtbx5(gLCnyVE*s*Idoc2LFyzeC%3-z*EJ!swz-8kf@6ra9Hc=g%ytlNWN<`y!e$$%U z^)P$bEp^f;bsSzsXPickWPwh~PVr5S6&2=d+@%d2;-+ZWmE=KH?Mf1PN~Pg5LlI6| zX?B~R#Q&%$HjEQwL~yq}Va!Kn;5w>g=w5(>RLpf^1DXQJC{L{tjZ0Zz8rRJpQi~mV zs|TwjAhl8$^HP$`dG&k5O|sI>hE2yqPM8WnnMo|lT8qWAzh80O&rpFwRNJL$Sj*D5 z9M!d(E^_$DPumxr=oy#l1JdYs!H z=eEbWb-2rh^HMh|uVix5N^3w|h!omnSCovXsmut!bPSI8Gsj=h4+&%TY|n9x#b4TR zNStzM9RjypT3O_^m60iC`qm9wE9ul+jBaww(?bFkLByuWRjXE3inubDl{T@Uw5=T) zzPpYq3%WRkUQWN}x0KKcWpx)fcUUv?T;EQB;f)qoOBD6Ys}vPY-f5)aVw2eNTMh6qvZ5)ampohoSb(O)Zd|de}d`>1tUzU8uNaRO^o%#an#>VYGxX?bh%mSyEc&5&Ozqh=?!#>8@&lUr+M z*UQB#Hzrosgl^^3M{-pIdiAw(GFG{qnsdUHAj&DlBl=_mn!P=9sG%t5&-2asw&6TM z)5=NFsGJn7u=iAA?+I+IW{c_A^!QR+^!ThTQci0@%<(N*o5j`cJmhJc`kd#0TGbf` z-GW8d{!Q{^%IMj)n-8urJgtb>A(mj$d__e@m+AO@j^FS2eZtS0CbcZnegzSc=ILpN zTZ41k?cBzkTeG{)%T?BX;(_*a%ehAoK_aEbK_=9TQ!Xna~UHjDv)ml{=5iC$o?X9Y{GWo4J`AQH~ zEyW@FWYe6fyE)dH7^MvtC05G44HpS=4tk~sp>05b&^8vJg!WZp?+a}7k(iE6k55sM zPadC*K`5d_4Cwhr+d5 zx#tGiZNbyhs^LPlh)9k}#@7c%1XNXU8w+mYJysOcDbH}!nHPXHze`GA${a^XI@9tL zP2;L!TB4K=#P&p4RoFU~v44o}MtrG-hb%c7MXT#a&NbEb>TvC_%uGenn7 zOP@7Im%=>rRENiHq4Aue(cJ5(DWJ2N-eMv`#pF-15TT@)9J4hcJWq%;OQDEyxD+WS z#u$}SxJVYJ)H3Nj_2@|sJE{4xXfY`c{v-^AXUx+(FAOXx7;Q6kf`eITRH=Z49sE^a zY6Y5V?~>|Vo0Nk{YsKIuRgY=9)S8I;RM?rQZyHg00)`zUA**oPL`2O$Be!-3HG@0@ zhq&ZOOeO}%9YV@7N@P(E$umW_VMvroi>eAkoa)|b&?XnQ2$}3NM>Btw%FarGJ2SZ| z4EbfXa6ywCnkk$#%Em-ltfVYXqa1Teq!w~eijkxqlV_HCY^Kz#CWd;rDC^ z-kRqj5s|#^^j#&cQoJTu;x-oC#G5TT@lJ08fI2Q(@8-0;X3pdb=N=1P&EM4U_sfHB zWP$OTmcU*Q@&xvY~wF9CSg5ds$5Ib(ed*qE(RJQbXXbN`bqwz^X6^JTCGD)pDre?-Y=3%#}7YRZ=!h zqa1Tek_d&Qc1kgl)RG{i-VK{fY*I6QcOsX%#vLwoZQ>xr;Bd5pgO03{?sPo!Br&G3 zD_Y+ied18r@V7hv9)+@>sanYDi0U>jJYxu&nyfYaZ6YFhtJAkfT-ETmR&X23+{6Z< z#5Ai9P=|z?UizTnn=|>sS*j!+`4Hzpc`#v70vYk}!Q~0;^B_-PFAhXerO<0Dxvh&9E*kpiW9 z6%Tm;daM!!pB{WXW<`d>V@})|MOVh`Vpy2cHockm!<`39xXjVRw+~h-A2n^YG@5p2 zaUkEwEp4!|b!sz9lBt!>;=0MP;vm?`cD?oH*2-uj1C=#>fW*->MKRWFzuPqHP$dsMe~a2xzsdlazY9>MX9!<`haBR#ghQ zDhs(DA&11(jmT(WtIw~NN?Wy5(zKLm#+-%()w+z(s2wV4d*zd5+&fc7*2tX#87Xb0 z4;cZB_Jn*g?THFn9U>=vIulLlT~a;Ct5+Ayv0fa?&6dmE;H_8CSl-!Lulm9&FrIk~ zoyXKrVo*Z`v_=x}?Kg?=?aF+hRK0Wta231!ZWDMb8PnQeo~zU=%?+1<#BFWn)(O3( zh1y)17Ku-grKPK=QKWLAr`Q41!-E#|4KDp&Nsmh@qqA{|8sy63?G|%%d5mZP(dDoU z=15_RK~qm1Q`FNQI(THJJ8-p-BPkY6*m*39dUDKnwz-T=xW_AYI6U5!idVEAZwm8x zQ&?)97GGzvz>W;p))ay2HZla*8_Gu02a+4UDL!wgb? zbqDU?Rrlcz(h?e5~ zt`F#^1G*`okI0Z(tzF+&?f`heqE;cgMj`jpic*MJfQ0qWr}A7 z)EJNqy0`@YHK02KIvLQtPtSOt59nk-X9BtwgILb5E}-WIbVER|59sXy{b4|V8PG&P ze;?54fW8sXQ|ofPKM~Li1N!NJUKUo$mj=`o(5isSme7a7@7)2tKcLSC^l(5=$AGNo z!3zRv31~?`-2wedK<@}>IH30h^r3)GF#hp4s)FYb|cJ zg>C?JEL{7y>I3TySHpvSLV#|=-@)u%a4{2vKhid};Ls$PzU^J4;YRBX{&P6(U4Wq5 zXOKYuX1|%A%kbsd^03yhbB(!9!L25TX5ilT--wVd+>#Y=Y6wm#^~Rb z6`U7o9Dm;L%9f12=To8chR!{4^n))1&il_h&lp|(-yb;-;m&(*czX1yKaGuUzVw%) zTdKcv-ZS_9`{*-|8C~sL2};2V#S(aRq1?`w-f#{J6*u$iZrLk=*@_kTqTL{8FtECx zp+>cfJhKxpiftWmxGHTw3ROw|8Ax6!tALeO?!QC4ARC`z8mQKKj^>7h9=ab*fkxAT zpwAe=3at~p1SQcmh_)8ckR);msRr+x*1b_$^>3AL2r#PQ3b;l0G9gZD;g@8I;)*Re zM5jWbEx=DVcRp@~zv=P~l>v+iYMbkBE9Ev6`f|^n>C~ctNh?`_egtMFh)Lk5$?PH` z4}zmmaFS$0|B_-j0xac5DFLM)-WboeJU3m1>_VTQ}kFSR{B_{6vef| ze-lKU9e6hb7e}0Y$BYOVwO+uuu+>FEhYMPoPi3%J zC9aSzCR@W816zNMu=O_ymWRd0A8h@#z~*1;;#VTej^>;_p_sO$vb5uF=9-*sAhCq8NQ@G2 zR*~r$9;d@rF{faGI5UeIwsau;7o1Gc0>MIy=gRFo(0z9T(-HG78Yd{fxRhvEvIPo} zTQD($Xo_hfgyTFX*aqIwjgY)lXcH~Qt_RuFNhC@743#gEYN7JgGB3rAonYAx;k<=e zOEy$E=m2A;G78f_&`J>EtqHb_jYl2e;&qoJ;wUSLRvcEVFTjwfv|vi4$*$k#jC$mpH+b*<7;p zh>w=Z;TcdN#K&Ve`%86?I`_Ms1jw^V-V9Y^)b+ZeupLMUvZ#(6Lh9 zw22LK&Y7=7ZhBYd%$l4zGZ9#BF5Kq$t|!5g=lrC;OU(OI=B?Pie$A}egeW*`l9NIv z20m+^4O*(RgFi2hv$#tvCBE#z9rx4rux7PrbmzU|#7EbciA`FmyWSR4tT*1_=> zYPQf4K+swwOwBBuV6z`=7G@VgwMx!(7G5EkzGvaJaO0ff zKktiKIRDzx0o(_0&LPagqlU-i@$F8A4=@WSL1mVrinfy4;ECzqVPAXy{=}Q?EheDFV8LlQDc z%R;gN%Z~||!s&za9hPCT#7w(1y~fEI%UKd|Dtd7YA~UKw+cdfdw9d$%3*0rLD7*WCQY1hZ03itxzz5 zg*E)J?i%r)gcguo@GTRn96BT9F*9JCWMQk9;IuFum{P)0(oT)$`~&(oqD8G zYx7i(JW-$#ws~rWA8NX>wI<=+IFLM{T?(+=MG(Dbww3up#n60m4ep=SMR*~iE1-+y z&0k=vVpw-wd_IQDT_~(KrK>h7)k50h^Pv;6K_>RLoQeIMz76|F5Xp})*5p|@A*n!_ zc~_XXV*C0vv;1mA@t$V+W<;tp(tZnl)XuSISm*)^HCd>|LN{9IhZgFz&~6L8Y@vM? zqNNPY!3QmLv4xr})MlY}3oWzIEf(5sp}$$k*H$S)MQLiMSm+E3t+No1RB*iGHe7US z4H2=>iGU6~7oU^AB0gszb1@qdRU;|tTpU1JoWc9LJMvVx#o*h2-WPN6IqzjfJaXW3 zaiXfS_gs7nYNEdtG5MRNs3IQs;xi0?vB2S%gVPo=?I6=OGVLy>U)EJ{DrXf8*)3MZ zE#SmkG1VqH)hmQJhah6r_=ZUyP6YU>gx##o zf~Pv8D7dPuQ`fGrI#2m5jV@yXkLd)C=>ulhcsvQ~V8(`b3FE;#j#xOU$`ov-YNiiq zu1vtWCXhtlsceB=BWv7b4R9kl7zX&q>RBzY;L=`MJ+H@f2^pqIks{DArqM|_56kN$ zw}JwPVQH7sbQ$1k7z%`Z8zsT*kn2S%DTdG}^)2aa#)Rz4V++l?vCAFHf{6qZcbCbk znZ7xFV||FKG5AoTS@dgvkc|+mt2No!b)PoTJ(?Z?)19cmFUR435y)n zMs!wvE==m%o2v@Vw_^MHHFMQ2M8Ua=il;&x3uLhD; zMrWp|vqB7M^*1Ywg&S#{|GY0|g^}-JR`54R4|+2|WkrQf3OVq&qpQ$)y}UEqE- zq@L=eNbN7`jh}x!yRk35y3>C@;Pfgt{6VN5A{DXf0!mXQIDb zyy>eQPj#l(g?+YkL|{2Oi|p3pg{L4XufS{Et;OTL^{cO6Gpbj>jiZ{h^pHk%IRfZN zT4|w;fH*FO241kZS1t4opaYJx-0cXnYd?Z)l#G}Ijk6WvCwH9fGNJn7z8I5^NO+Rx zaE>#mZ`udL9}m<`%tLN)0^q)GMm)sr2-QLuG4OkahF4bR-HbTsnEuDvilcO#m62D$ z1C^g6GR`WVcmy|WEW-^N@8AZF4Wr44kt5@c6dp&m=;aki9nz4y`MO(9gF+~BKfmse zujcD6IdccO3Hu;cd0X+qO&AoIkXc)b1_x8+7-kK&k;~0yfwEZUnt)tp4Hn`M7^4*Y zS}`FN#u%0jrjCIl*G4yRZAR^ZY+9O(8{T?bhTMvQXne-a9I_+trpM)knYul`P-DcQ zHxaHNla)qjLat7DJKQS>G6KE~F3Oi-N5dEr? zxENWY5QsO`Qqy4z#2qm}EwaN+&4tatP$beUY!w77Vyuk2L*y`#ziKZ<+;b@Ti@Fr_ zAb)Vl$shP*_@<~wDnj^C;Ck|-gmsP}suV zt4S!!R>Z+_B=Jrl_)DgTOJ3QZ-7)px)@3hfOe@%4;cU0LW7tI4cNtSIJyz0K$Q;7x zji%9p7^j=q%*q4lPzY3scRAj5$hhv*;7!&PnFUu*h$1NN;hh@)&Rv@N-_MjDHLN3)ZtyuRHeLlOL?UR2r+f36Qtf~Q=gxc zy6#K4V=6WEns^&3e<_2?xk!nYGCxz1ImNF<(!4sYMpRpLae@pWs3|@nX22|~#x&Rr z@Mx@b0W?9>6hGk=za7Dl2fqnS9?%4)aDGRi3=)F?4bgz1EorkdBtt3qjc~}=gjZng<2hSeC7Z+?Qy~mpE zD{t}O*$SX@7`lEhVvE6F5Oc9S3#TR(7-Qb$=B?Piehr@&LlormV(@cFeBO@{K>555 z3-z^c=4+}90c)xuzG0znS?Ey<{oO+Uuuxx8yGzhLG`=e>^koYzvXE<`?^x(D3%y~X zZVMd^4NHxAn1wF3P@{$BTZm^0HN-b9^lb}0Y@sJDwBJG@1k|v{S?B}{U16cA7FuK> z$3ow+(Dy79N8{oHf3<+veTN3FwYb?9x&hFEIq>{D@J0-eA-;pHblJVYR!c67Mv!3o zmVc(}ON-a}abdQ1%1wGh_9 zU%N2)R`6Z8)nuY~E`H*x|B+r-=o3vUUEt^shI8Oe(ho}gk>tA0H;GmH8ds`NHmv60RZyf1Ro<=x%glx7w9W(8$6`Z%?n6%BwuBrRtqh&(DyAwdtzob24rSqi<@mB>LVYJ9^`ID8hUU} zfCV_{Y>b%kUvgn)W5M(@8^evg+kf5<^xzOTBb6Tbn~?{n2jzMnZ7fIbTzdd|un@IG zdcb=s_^^dzM}Qvqa_1;$KnZ9-8D`{i4A%tcKsD$x_p@!7i(+Pfjz zyBXTM3HqvZ3$zf{j;7q(mw~HB!lIW+bs+za@pZRc*aZ1^3BT@_d$%C}F6Y-$xyTCg z?@D|@{>>YGL@zK3#|cS{0vCL>N~n_*gx)MRRl%a)uBI+=yYoWSNRBiVE^h*3Zb+Wc zWSkI0M5UB-`}Z3Qwga-A2S5jSr893RGPliO^8<(8@Ua#GXC#O2icb;`q`(g~EDBlD ze&zty7tQfJ3VvYw6<)x`*sGS9DTsW;uLv${7>c9|_t?@e192x&lqn$MZS@L;DBxA% zdKrMX0|56Nk##+M+g$>qLIE7gTAt$%d1hQ9RX0~Sb#y);)wxTHBuPChDiPFD@D8-W zcq{V=TkXvD&dpK_)V)HC%oM7Ka^xXN!eXGen*LaRnjIr2M+D#WB8A=V2ghyK*qWdZ z1jf}~bb&TMy~0wTd>X8Yz>82K+6eF77Q}qN*0{Wp96Sp^HzLq~R?7#xef>$Ch(Kby zfI!0#kFO{3awpVEZC3hmbpoxWq5C+vqh{f*Er8p7>27y68ohvAI3nW`rbNQP$qTd5 zgej85rh8%3m?<{^fI=#8))0CV9t+d?JYuE!RmdP=w+|S6uh!~h0njHOQ6#NXp^5kf zpLB!Idlkw00g^>Sz0k58e6AyMJ-&Z|Zz=Iz>cA4h_b&DQQ$?}}7&|x1g*@VWg*vdv z=o2(as>9)S;`Nv*1dsgCD~=FIu(Bm}n+BGQt<;S1vNfgx`9258&G51FmF!l4%hfYe z!hN1=(O>?Y6V+0BM0c&Evv$`dKp{4k5Cz?Z7rt05lf`xhVS6nE;B6VT`OR`ayh<7G z1>lOT042X!KH$ykPj>@>iXt9y{esRDYNUy=$wVfG<+uxIiR-6y9|w1|G~B(uv6AlS zPb7XhH`Hl=S|MTJgfNr*Ft?j9#S*63PwX~2pg#eH5OB`zPb`e|r#6&Y`V%q8;(UG^ z`=={KYa7UvBAIKHk%a@YRgtV8AXzkoW1{FtTHF@+km62PuPf-d7TseFJg~}}iTApP zd?*g%+wUGt8klv1bXdJ*l3aX$yD- zop}*Dx2XJd>*#eih{er%rH1cP3l~JovLY+e@-X|(FD-WsL$Z8H0Ny@di{CQK;Z^Eo zDFAQB5AI$!SVDJ}r=9K-8l+{*{O}9uj+TW3S{4o((ApvOwhL2U5Sat<1>a%ccM54> zOVwQJIib$;-GI$ib~$XWnoB*$!A;Y^9EKvZ0B8&51HN!59Gi~Z&|sdcSvf60-Yyq3 zz&A^YeGHmMWr5J`h9vkV%}>C$IYrK>Ft@O=jdaTgg9X#V9>*HAm}jRwMiPWDd=xwuOv$H#DXt==R$doj0q$y_16T^iqA8s7@O zj;+yHbV=8)cPp(_bL{PUi_%K%PmmW?t6$|QWLq*x3_1#3KtLD$g5PFuR<9fJ_XbsA z(Zxj|&uFgXe#(_zDOYN)e#$(qMm>?lXs?%wS}7HUvPdPZ)JlXOQv%E5xr%E-CH3jx}V@tnXZg)cSbHp|ZTt+!N3k6WQpqQf;DSVCqcnqtR-UIN7wQ zVZN^Z)PAYaT7H?uhRT(ePrg>_7nE^O$klXT>D@heoBF<=zK1X$y1a=2 z0x_e44f4k?zBQk~RwADH8c!2Lw(G@5?RuG#U)Sa8$IL^u{AyPwi+*^s2i0uWvu2B# z22{C=B;}r_=sk1!)RBSY%vdkkYOI%R#ZVtZg#@kRml=WdI904cUuK+~jhM#Hb*|_! zkc_i0ZzYcMbm`5>&Su2lTLT95eHWwfdUToBqyMHQdPM6$zOXjo7uAoj+)(%1)qSac z-OH~bWr$GgnvE-UUB)_=rpBA@NQP=k?eR7ZS*P(t^()LTzpe`vTcCcL^{dtMqjg<| zy4DkTVvxK*Qg#=$<82FPHRq`xgu{CwIKn>i5WMhaT~qHu>-t&X{JJh9-C&%o>oA>A z*Pglt>v|n=wyw)j*CniLV5NI8B@V8Y{PyZP?$z~+ED=^qT0Z&01)%(bIv(ms`ZX8; zb!Uf$Z+7qO5Z0;IwbUy6HH;3Jp~|BarrxE#ix8Le?RLFQv0X0SLcc9xT+9|{N!Ue# zzl5ezMi=eaNV8V`k={_ntC&`)S+tx=L?Lg_Eu?BO!81=b6yc5Y53E3AW_=55T^TkI zR53QKwL*5SIIjxfd6HLui=IR@>Y1@Od$CJ1Nmtm3%_U>>d9_jUs@4FIrfB)LYx(30 z3N`%V5fjtDvF=cJc5IZN-5kju8`Bb+NrAbH6N9>@i_~ElaY)}@>0NsKm2*e;7Qq{VKIw3L?cs7wg+85TEDqyR(x#$Z1?)y+)X>r^TYM?Le5Vi@lN zLx3QoHY5m@nDYFK{e4s8J0S-vWLzi@Q{mj$08UUg+ZH`Sj1V8j-R#9J1W4i*5`^sB zotvG61cAyD1%wb6R^#QXEG6-!Dob?cxyU_KS)vd!M_!NZ_X9jh1bmX&<E%XNqZM4vK3)OwV3vs!H zR$6Ggg*q*?+d?l{s2tQv)BUW4TnpW1q2F6*vxT0t(6bgg3X_7yH_SrAE%Yf1O}3D4 zNBr9scfW;RvC!KVItiN+nnsz0k`}79&`b->v(POT`o4w!XrWCO`b5M_qufHHEi~Rj zKeW)D7JA4+k6Gwl3k?Mk(%e^AsLDd$w$SYsy3<0xv``pFoHUjbEOf4g##-nL7Mf$B zJ1q2L3%zThf)Co5Ep&>77FuYDg??qB-&$ywgdFa#z7@C4yvJXPy>yF zT5253MVn&=PC|=-8U_FhC_NQS$U+c;rn#s>e-)Mt)Ol3?rw7Vrwj#{V260>U=GUdZQ(A+q*p7TkP{(qYlV&fg1zc5cnMjr#zoX>f6(a zJi~k|wy$5qb?rhF@db;K3eA`s#0>}Q)FGU@db4=Lid5j9M z3J*q6S>5=bLs4T$i=p~Dzevkiq!0dcI4SCT)!!WDoobxZd`(KHlWV8Vnm5-&&lD0m zXWF$h=BB3238`PMoob6!IN)Ac{M7O6txb1_;6&zjsQjV&M2l| zE&}x|1GOv%^-O?zQiD243QBv&ZyC3vjufmra#JDnywdB6 zd*mG=;RU^qQ?bYbxS(WuDmWS{EZ75a}QM@O8uZIw|(uTiUs0NWKZaN^P2;Z={ zn=JG_KnJ7<`;{D|2Y(4pm-ibocK6t4_^khOvHXxAcuQn&jol(mr0UHLrK zX~?aHIL|^CT4P*~%(E?tK^!8vnw&#pco!eYp z`M;qG*j|0{UP)k=;%_Vd_;9$zjsT^-=9<*?*G%!Q^O#m%F{Lul3s+GNT<$|c;yon* zAW%dPWKTiU0xHKZN9fQ%!s5=lW=6|2eDQg=I}o@w=vCg;ip1|(scG|5<_p~$c7c-k zWy$^LaP}3(%=|Mg<~$IfpkE(w2}JktR9GB2iShU{wn*mAZuwGb>gT6O51KQ4j)%9E zD;3$xaEaEq{QA@OL3>lh@bX0Oc{_E0c{_&Uu{YhN#l-sS$n+-95{ajg?O7o4w6XPM zRv2@24D+;}mE`FRoX+Ar%}qFW7G}$z@dgIr);%i#-hCL{R>G_!doy_J&J1SG5V(F= z3fDcPu+RIC7v3K?MPRmuQBMBab%5Ct;#|rZ5fdp@|1kN*Md5A><}7Y9adK9H3*MXp zu``8fQn#fr8PX722pnaiXYikn%nhrKdmFO4gR0?wa|h$RU#LiqG;mg(6q@CPAp ze$6sU#?6%N)f8iOVZli?kqIxttI|xU_sN8+#*Vau8Oz#C^gFg+dn<)gl0f6>xnjU( zL*8TN%@v4(^JWYl4r$)J3;}em`kaOOl6QQ~x~{U&Z!Pq=g?3wrgIHre+CrbS&0gzGQK)TId}>{mq~{f_+*Bs-QI=h#|g%&7iDM{Ff3a#oHwqQkZ6KJ4!v(QYSMQk~8w4+n)j+4pYe5@8x4`M=oGYXB7IFyUN!3V= zz{ktCp`6cfO<{J(^^6EsFtqiNgX3y|{=}M#&{TwA*8-uTa2m^i@mP&`)K*-~MtM}k z85HZnvat{^Lq&_fCMJ$Z6=`XONgL6%Rg7TdAw;fsNGNSp)18`8xNsHJjAa^a^@P<( zvQpO}$en7@YIrPhh{;Alv^@zkq9#?WQK~2h<{(Jf_PFcv8Q6 z(nE4Ny&pplS0jq|L=S(22$gF6#zNaH^r(eiu+Xa(@};!Ct>SWIMC0@K?x}yIICeLM zQWpBUg}!B>bryONkkZ4WFp@NE#6l+m>X#nM2=7S`m64301i`?8tv<3s@n2Fj93awS zsJ`gosc?IL(ZgI$Zy@xrB{jSptBG0H7@Byn)kMXJiah?0x0YkO70?Ej@W8q z&NRrc%gd)tnKOL))l*uhHv5FXhukv%LsuSiX8#YvPxB&}+uAZCHD_w`jQIo0f=OS) zS9m3`)7J7__lgP>kWmlUa{9jV%jIG6!n1;AHxIai*t*`6G{8dhUTxmH%sa*bWFGHk z70@g2-Gv)Mq9x}v#6vIAN7_5l+k`Ms2Ee#$21HUjG(h<++2f&s7K>{I1f>SxNJ-Qm z)$iD^h6bn{rnrTGNFjy>+AVGgAf+kPIa7akTIg4RNNM}pA(8=-OHu+;=E5r;<{ST! z4j*#LD+B|2L3FPtpQE}DzH}GF^LjWrs+bpPfb@$`A`f##9%exv=8infnmo+2JupL2 zE{`pfPK}lRtZSysO--HEJata9=jN?kr_G;swTGJ{{-u-Wb0U?BUi>0a?g{uC9lVO5{n!ccN>ZB6XWjU3a0wk=txxXU20H z{$fXfx-#y1{Jn<1<@iJ61~}vAjBauv9IP1OMIab4Y^HZ1=0N642p@)r0(dBNFRSswxR)h? zDS+QX&=vK2_a_*n#G4q-WGkMDiQ&xCYEJvoX(gw%o>r>Ar2%FvbN}h|kNhF;F-QyI z?)fz+LexD!iC3X}em!1c_xw619A}YN!#7-AmvDKFjgq zf$w(xEaT_C#S8IUFz>_e6`_hJ(w_=O+CPF}y7-CI5aA6MZ;G@(i)wbS54l%`SS1(Y zr=;W0gPmfnQKVevRdtE;0MaR7+XNqGg`r-UMIzJ>wm5-cD+N&PA*U`L#viTVi#sBt zDH;zh$Jz6C-Y=D@!!o}iUJbvYOe$W9xWfov;7%#<@`2i_20G+kU+5$>2B6~ZB_Zbl z_sVciPS|dm!djatL>9IgLqF&*Q;SzS>m%(CBl~FQGB0fwdNr10EGvt~IR-C{9XqDCJvtb<=?NN+|7!H;$l@J@z7h&X zmTdsU$t2MAdqBPRX>~Qo{cY}0)grAL_o`athu83xz$6%lU$I-?fK12T>2+>nJz6vB z)?%aN6~q}pDUkC*Daqm|oChMyeoib_iemQz6&IJptM<6ZIL9q0N3_M6y1(qlmP;l& z$l1^!;3%W0>?5+a=;Xvgm#pW4Y3p3G0$bUQ&x(|Ii7FkS-B?y^JuPb9^3u*8; zBfeS0kKu2q%-||jF2J`!TGyCLwsAn&#kV7P<$}3F5jJ5Y+t;^9M1Q6gmwM%Nz~xZYqT)T4*L9 z?x#cpUj?M4JQ_prWWhQ3)jFUakh*S%YfN18rSd>a?enb<8Tiy$LO5l{849k8mX|MGco)H@!J>IHD&7cQ)f=o8H|1g2WaCzHD~sh+3*I_I%meLl+JJlbKT6=mZ`I3 zo->%Kt*tFz4g^SS6qC=-J%SQ)7WSXR$%VHW0LWC#e>i}^=+ zetwaMS)YgL%){)-!wd;}C@-xKv`FeciP5jtuJUHKGe2_bx zmLohg=<8;xgBQ_^YvxRwR_=YxZk;>jx~a|0)*vMjUzs*%w&y|nm2B2{sMJ(;J`;Uv z+N`;==S)e>o-=D^g@?Rura_lm-r1rma!{>vW`DkA+I6}WR52yj1)bUd7TJIl!%Kmk z-5VEEkez9BW=(DB;i$vNwkQV)7hJrjQs}Ib41E zGS;)OD2hu{_QCanhzZwA!i?uk{KbwC*V}}+m!lu;!aEQQ;(t(N-0WzDpqQCo(;@Rm z{;EtaM6x?TF1SplU|0vlOiFf_yh8|Vtj9Fyr_bPyZ2$|jW_~4@g3N`r!PR7%n3ImT z2XVf}WJf-#pb#iB8p@JzmPhoM`_^Xa2k%+y?6X|%0J-SgsWJyH@x&!(`s=4Y`0AVx zJwcx$P(+4BSWZh~*&fS4Xdo}S#%uoZ(vB>D?^d?DtODx3_34$ymV3~amJ2!JDwkeCa%~g4G5pdq7*fe z_ID7@y#m(a3fuy&4S4OEY8HhU)tG|Fss}RRuX)TU0`aCtw{Y>pk#=68s@mTn_lhv% zjI{I8Rom6DL{au`AHtPI+OKAS2_d(h3#tO=CAYNz*$eJtpOj3Nz78f#yBIiWcM31A zM6cr>YZ>};q4a0;Lcq%L!v@xEs2)Tg@#ll^;VbMacwjdMz zX4kd&a`siM?z#v7ULTcjbp5I;!jZ-Mana)+&}@OOy?`<^ySvul?d)?eDR3*&?_z
      9| z6li;aHgj!B#QWs}y}m$K6zI3P%O>LeX@PDo&~e;M6QTPH^u7Xpvp_4kk0#t1( zFADUY0)41J>wYSyeOiH@SD^C>^t%OmV}Y(N(4Q9QT?Kkifo>_#T?Kj?_t8Y1#|pHm zKrblJB?a1DpeqXW_5%H@r{w(JQlRS#G+&_46zIMJo%7Q>f z1)3|+2MTmsfxcLvZx!h5r{;3E6lk(Q7Zzx`K>xKse^#J(7H9)K#Z*| z#qR|L`eh)^V28CW#=7-F!sG7|+7>@r_uC|MTd|j;*(i&X)rr?XNiXIUK57f|ZmngX z+Z{KXr=9kk_0Ku&+3QbV-)zQ#`1tp< zv9V`8>sf@KvHr}6+CL|M_pwZI#>7$^W$BMECu|?C{#Nm8GL=;ECI99ATD98TGhcD> z#mj|N{W`>Z(FHGl;iX@=4R6eY7v$_4zE94T!wek-Zj3yCNQz#>gI6{A7}E#9PJAX8 zw1%2Q&I8~C^i~BZDqiS!N6xXK5c)rf6%?Sd_pI5_82QOP>qi=xK_OwVo+HAv3&VCa zo5&`wY+Tk+I5s(xykY!hX4FgetRtHz*6*gWuWO8~*8R{Fi+D_ZEE-QDvAQaVE7-?lIw%#CqZjlSe)wA{>Bi%6-}P zS6;07L(K{wrB~~E_F10$>e!R`NdK?OO-Q)x`IIUr5i|1Ps(uy)LJTW^%Bxm8y?m=a z{}*4&oe)`{eIGjW<)$u>_AqYhI{nPk&sfZTr&#_ExrR%*uT)f*6Sjsp`eVbHzIpVy z?^joxc~12g-1rpG2RBxC!;Lq}xpH``oY3CFjo0xdZv0d9XZQI-V!OMB{|Zt_H*oD5 zew{zennRhBxbv>z5r?dfH0Jzqr`N9GTWDsw%q#8$qrmehNw-%8S33{(y;WSK4Raoc zeQQ0B(GwQaSQ*3D;BRb9uvE0chF_P^ax-qDP*&*MxQ1$^)l!aQjgbj5Q;slWGs;Q% zR<}Yv;2 zkT@q~%S^#8ER%_NHuXvuEI2@3Qkx!U6*uZ8r{v5APnfguH0{sh(k5m{UlYHnDyVN< zg-ZbVp32`l<6GX1k)a$@mD*8>sqc&8Ti%|rFmq<+$qGz0x=cUGGtYi4CvglWOiTuu zC3l6IFlfUyJH@e1qzWPzrp8^v!}bC%(gp}A%#Jp-nY>e7habAxp0o-sLP`pD9h@j> z|0=5C94j_>7a%<0drYy>aj=`$6D{r<7JZiKdDrl*j>ruCDbLTIWMhw-X%$l+p0Els z_VsK}+Ovk4`Nx#=ymD5hQQsL1Bcc2S&CV+#OfbaQ+ji}4O?r5LX#hz_L!ud_NBEdiEDh46_70tQ8Xuz^ z_(jS%&PEArE+~yQn%NN!ZIQ(gYVT2l)B&!YF&Zvsj0QUrN$&9NaVUZSj#bPdWw(v} z`>$C)bdY@9!{npOgiuvoJ=}2|UcYiRIoRg!{YhoDQTis#9r_CIp5rCs31GUNGvjoo zrffbA+2-oK6y;&2D(fshQb9;fw-aLOAH|^HW1{$dDKwT`w$uz;c^=h6f1%Ya7&UD51#0U8B5FA~N#HI;A zinH@^r8v8>{$AuZG3z#Rn?jM>&i;nwHu+w9K(k7y&=A}9T=#Th@JDIih4g0GsLo`0 z48LQKBR770*ZHpVU8K7s+;sP8rm)U{ShBU{s@0yG+|!dAzSV!ThK$lB-3<};u%x?} zugv$`y{16-6zCfTT0sF41yT7Jw;qemp+ zg@|Jbc-O-GspBA2YWM(gLB;I#)M6b#wfOAay7H_FztK#mxHEVeQ{CvIFnmn zNDA3(0lMq^{?b@uWb+t#_j6#Q&RH`pVQvANbb{Y%N}f1)fO>q|^_aIe^487b&j%0o zGeFcth74;vNBVf<;Kxb#_oQRfL0+SQ!Zj(NDT+?oiT@(-@*4$UfPx&-4{E$lV9}w0*{Y#Rf;!p2~r|+MO5gEI*B;# zJku^P4GeL24Bzg##MLWxf7dwpchM$LT|pnsVHXFPCaegX&Z(Z{&mrePk1B`Ukiq1= z*rM;AOUEeI`x^(}PdT6Xnkrr`2dgz?Ys5p_T+~!f$U>Uly5}+-Mj_)08BEJ$+_tal z3XVEXa$+R8y>ak%O1zg6ZyhKRoA=wh=Z-`y9w`18vA#pB`GHvXV;k8$7bz)<@2Q}J z@1tAx1|^An2CKt{uTEy{ay2Z?ATUuQQ?P~Kd4Ht{C{>UJp-n{7k&~JVqM}gLoMR!! z;eUMi+hS`L|L(afqDFb(^s1HC)}(13gxuLZcYQ=nm!=*31eH(Q;i9QUSUJQMj@@&I zBgsb_2R{l{{%HwT7O+t7p1U?QyT_8>!wCLx!(Qjo;l?zv}0MPAIv|9e^o7jVl4dy zq=iJbRVaGM(e)snn=8Le^5JwXR@?HTbb4TE+F1G!M@c!{0h$o)lW50BF+I`v_NqDg z+~7-=3&vtwzh#-+`DGR62~Fd4Ui8s(NZOT-E!4_z^;#OnaPWQa%w2H-WO}Q2#nrB2 zc#(P*x!-l~Q!@MzZ;JQmffMG8k5@c&_iha77@1@!QA7DV~Z{ zsWk-`yW&D6+U^{g0mh}(o!}_N0!LUh8`M-JD~CBFX}ij!3}(Q}Ovw!S8K%R2kFs!} zZx~!4Cv^s60nKn=%I1r2F|$ZFSY66PgL~F|?y`d|CjH-k-2H5(FH}|n%j_A4*D+M@ z7}f>H)Q-jFS9=UDKV;ftxCO~KScj~&tlD;nR_#S#?j-#gpL|@G{yDWJ&Z32=*mHWldA1^WMiBEK68 z^bZC4#{#Wpr4aE>0gC+2DbS7*dSCGyM^KD-FE5amLgDvg1v&r}IUg#}O+dO~X;n?H zIz?!sK)QKKw?r?yLP~P{g@ni7Bitk185xa{$x&BP)D{wxdHJ({a1j1tNpWXWH(tnk@bVyK2M;cKzJJq_99eeuPweA%m~UOkngSpk3A zD;~-fO^-EVAI2R`&p!RMXE*)V-~W6TTLwI%#NX1DRu7GdR$4o-KGEOH`8B@>E3N-C zcQmbIe0BE?pC#wI;q`LRn&P~9*YFw~srFyI*1j9~wEjKY9ZobQjP@AQjggCn8Z15L z4I}m(LN<(5+!WO6)rs6m$*5QiTvZ_sQY8BRC8uGH4ffHIa)C8jkDA&HhS=2DgRl!BKG593&fFcHx7QA zxQNc9`{O=p3Yl|U+J=4~$@P8}+%Y0}fZkyo;^1f_LtA3ndE#L65ZA5oFgkaXJ#CXJ37l2dvOb8 z+z0n(Vuq#h&=7+nFvG3`Z?Q;}Za&8Pgw9bF3-woW1` zR6}!I*vFNuq?vOXDJX)t)N$;3c?mV^Ff`b%5qOgeYG>^K^~S-klSV7t`x=v+okK1} z{SxI-HhL1nK@BKr7=S9a*BIR!m#&QLO{XgN#xX5@6Yg0PJoWiaO=Nc|RC;P&v(Es1l-83Gt z_XcSn{Pc{LRc*yFetOk{7@!k(bT>^!5~xPh=(TJ*$8ebSY*=7eZ^8*8GSP`5){w`y znZFv7fQ-{wH5rl~IKMSx^k5Cbh5_aty~LKM`{?NyJ*>>svEEMaHJrW%QV$jUHCm zP6D50vA0Nf8Z+&>Dw7+ zP!$>;v^L(Y8#m5Of-U1r$|~b*uHX!Hj^QPWFRXAhEk2+JsWx2{3DN$!QAzt}SVL+M zjr8{Cx|`0+XlyzEpt69KWDt!(Wh1$IGo^Z0#=Iv!xkzoJF4bqrVOW(MLbEHF3Cg>594~jFj6jA%X z3B+r`UgPbC9*p5%Wpz-QxyqOe+?e}dy3z*$AFdCWF;wl575_z*TX03A)PO}dgQP~0|ImHO z&OPh?n_te`7l#Pb=0opD?B_Sv?^*xiWM7@mq)P$+x%TyVJiD^Kx3W1(# z4mWig6m^P_m<;`$s8e1O!%*cHC3wg6ee?FjK+@_w%iIof|I~r?a8V_ZVbR_)fCLe?3B};6b-mlNS$|%OoXh7o$mAM zq>j^_8q;9vvn*>Q?X(PWlc14ofJXW!`P@^%B(2AvYD^G49r5SLyR$E;XY|Qwx-6@d z{8|c_WI5_yAV0lnUFAk6CPn^0YKtK#iKQ0?@f$*M z{>Fw)R2FHJVK!gyZaOheoD%sWo8GL4s30DdGXYnmBMc(AYq{80Nkc1#EC|YmCQ4gv zm2~Q6L??F&YkRqL-tx70z`NPkatmhad)jouR7*jWPHz6>jn+M+LRL3@W z!?WGkww>~pbR~)mbwgc(3cFULbR(N1EtW3*E<+N8hjKwSyDF=?o3?th`V{&bT&g`B zdCYy~cEiM?-IbC7u zOI~rclpG6YjZ|hWEC=WeUx&S<*G6`L`E4xL&T{W51p-M_x6@p3F|MbGP7r4xL1@wiFS`@eq|}Wk)M`zB<*&1& zWq9u8;nuP}e~D3mv=h`Oxpso42zXdKK?@{6k&0IT3}_{w*HGtxzJjO{(8)+Q0ksPB z-wSk0ft~=$BHpF~T?7=CV6QLGttIr^1v>4xoc31>bQw^j-BX}HF3?{VNS5fS+ycF> zK-UyV`!JE;%>}xvKnn%Zm8_B9Wd(Y7fj(EDVYY1|-US7ETY)}Ypl<+0xxa<|R6zd- z6lvG3$x=N9Pa3-rqcdR2km0u<$bus{zK=(%i)Md*J7iZcGNK-U!L ze--E>1^RS>{;5DK*+z?8UIi36Us0d~1-iFD&%?kiQv5=JwiW2t3$(jHZ!OTD73kds zT1%l(?#2TBR)OA8pzRFfDEFcQ?EvC`M(CdvzrQTdwLsbeI_xgt_ti;C?XR72`V{r8 z*P6?ol*zBXh#$g`Xm#Fg6pITVylXI~+Khd)msfqkL~)L--$2;Q6|ww%f9^K+&sKid zyNwU$wB>21EqRsr<8Xb3Ab-p3HiFd43E4p${lU0u&Dx`X-bd$qF8jjj?#|(1P7#iD zw+%PDmkggGi_FJUg>ry$MLJZuVwj_rdrocqJKEUA!J?rI#oYsR}oES_~khW4EL zDst}rzgt&Qj-0_nxnj@S6T2&h_vog3R`d@v4n9EA<+X2nHl9Qw{C`j5;623Bs(quc#kh_GkZsM!i4H}LEKjkE%8Cbu857|PNH z$t7(l_+d#KFC~HG+*P$J3iQ_nnlI431=>zgO!B1AF@u0~s3*AOpB2BqEYP(;Oj3vE zh>Ok_iYKin{?U1ou*UyYo>Y94-aN@Zhv7+tY2@_(9!;LK^nBsZ^b3MV>hIj*qZ)4G zYdH&ua^mp2U`dvFAI1s9)1LhtPKN8RZ~w3psgg;Yzoi_h39`kJ_L&G{c5QwSI8ycW zq2M@ycoQXe_YHqqPAtLS%y}TbWSDR&TV@cviV0X_~h54eX6`qxC!CrfJd>u-h@WNtH&vy zNspCe8&0v!N6|5>N6q8v9;)&}+NS%_J`C%h*t70utlRCIFwoEn-;_p8F>ZzUO%#U~pFKS?qf8xN|d7a9|v?6%hI+4zRQ)>it&d&laW!){q&Gl5A7T`9$g zZxoW%$l#j0Ocuv_vUt4iGHUBoe9IR(VpA&xBBbP=(it-Ly66cyM5|zy-r~Mc5q++e zdljR4u=+6tJ`!O^dau&b%eW^g-1d_~m*ww>P zPhn~H+~7RwwIfUP>LD6jnLUN{@WI=&XU{&%&z?Ff$3m&{_x(A0mUCI()$I8z5AU4T z>CawbJ@_O<4HlsMEuB4k5R6#Fj>kB{_w1b3OE24TPW89=+}855>unGPFErjS=j!1H zaL4P{9kPfUw-4;*uHivmAC$iL)`9zi$6RD6n7qTG=Il{rIZ5*6Je9)PSBOJoo z#vv?Li;8t~GM7)%G1HUf zv_DBG?CyAnsa+0aVN8|6kc951%5Uk9_Q4M64=UbW=$}EWxkX`*5b$#L2to*(^&*NF zH^UH)5w@%moY1{Ci|bo@aS4l zn`(+>!ki0dze;XCM-(?MXiY#ng(+GABitd{LAdoJ0|)PYXGX{c$g><5YFZT5b|Ynh z4r;G$;Y+>u_!zUD5N_4E61T-@)A|Kt0rMG)-PI<8>BF3*T5yf89PY@amP5J%xPO+4 zQDyYGHfLF$PgOGxIo%bfs37CK_q!|diUVWpR^M#nQI>go(-o~SAQi?1rO~`W1r#&j zgDf%oXrVfwWqlPb&?}p*MvKpJA>`{s*C}3A*n8k0)vMA$Dox}^+&^0?=P!4T%CgY1 zyJthRYa_BuQvz`Qd-&(5+9dxj&r!Xf(p8&Pwa3!vfWA|ppF?;Fzh5oTpBCt*0)3@G zCm;z&iWdQ~c|^{yD$v_YsLXvMp5)_zo>rhXP)b{%OA55RKz|ApY40e|8rVkool~GG zpvdoc3iQSTU0I;H0^M7nI{SQ)-xCY;wgUA}RINm$i+F!jAno&o-*&nxYH(43b^u9F z#12XE`^y4d3&h6GVb(YyXJ1Ho{5|4xRL*FOOpdk=60JfQm35HFFML!7I-oXVpXJv< zHxTv=MJ#`h<~rz6I!6^l_K4@Ge&r#aqav$^bB^ka)0W&=@drmZN7Z8UOe>+AzQ^aN zj`o)Q(au>dUO81)Rf3maNnOJDVkM=H;Mx1|e%sU&S zOj`mME!fC{)t}=a4d0I6T)0Kd8F}M2U3e-0Z5LkCDaaSK zQ-pJ1y%;N;j`Qm)2$8v`oPd)Na*4=!t+)xJ=FFK~Z~WiweGPbBRhjMy9_kSeo}(Uy zs1Xn4RKu8JQld?6>v&4i656z+kka4{Jq<}pLqijj(;p< z0{e>at3!faQ%Q|5x7l1N6oklKg3#pPc>Sl*EdPX`K&8001N?=HlIL*!ci$}hC*9JwGP96D93<1$-c*gb%Lvh zp$l$+%tRKC^zprRkRKBi`bSXGDfbga^&&j(q#`p7_R|R$Au`f9jq#&;iT<1xGJdM6(QX+C?uJn z&(SOQ=sNzQlf5#67f&WoZZecd3Mm_eP+nU=xyeu#d=6#7dz6zNWoCx|7b>e16#Tvf zCDB-ML1m{e#|BYX;07T!L6acOV!*+$fziu1yewTiN#t5)Kq2%+uYfSIg13}lxhQFq ze}vz!RCAeIw^n7KCnEcwzyzdFm9MPFT!EyNw33q4&v2gHz^{CI!cbHObSXBAvrH z*{$xvtfG8vK{+Nkt3ZnpiPd_{t!vVUhVLx#=A9o3PbYl#di^xQ{uPPRtdODx2Mue* zP>rE^Y$+BcJi%3h@<(I^qzm@se>G2>Aw3cdS%csL5)c(7PT>f6S+kuS0_fIl)h5m~ zSd2m+)}3@;ixxdegch9syqDfQAKCvrrpe=x{f}c(9my5TsDS$ytG9vqIuySykwkqsvD@0#TBDim!aO>7n6p`ixuG?KN;L zr-2Il8VHpd^oIIsut8}fBzQg^;!|ZMXe5im+-dxahl*$xm3=Dg)t$8K$Z(0%sj;xN zxOI(M4CkRV8HXs&7lo-x&D&3*p{Bm&rAR9RAffM(s*REzr-`Tx!Rc}1xnQlV$b;mF zFkq6TTwGG7ia}{WRi&U9nG@ytk_DZ)*|R4DWVfo;prykuVhZfyeFH?c`}8kdos?+W-Vse zFcYfVBqUBgCv`9wHpHGKqg=_~;&W1xbehB^m&vVjGAbyYlPxF27vje}0|Uh4rO>T~ z6Ywr$m^oquqDd|QC4YnavE4^K)RMhQmpstdV{^%m(tsi{NiP9LnNhzQ_m&s+t9Tv3JIM!1 zj1+dE2Ti#CgSHV;IYTm80hZ1f8w=gDHUN#4o7f+T-#!0u!} zKPZEYiIEePCG)@>x)26Q6fr&A{A80FBn>(inK&;}Q@Uo#a5C7KF)5ytLFNTU0Ny<4 zJ6LfL?*nO)G|46A&ygd-8p>cvCqnfPz8i{e_5_O*2A&94A_?CkFQ@%YhKFy)MmZQR z2bm19ZIr)-VIsoln0PDyr+4^IaUHkeXxbvLmt0UuN{Dlt{Bi@*2EGeZ71%PxvNSSX(LQu&kC6vL7B0!$6r)#AR=LxoXlKC*9D&-l#`^h~H zPALx?io|iPHC8rEeTn1h6+fT?XCk+5KvtlvC$Xi3am>{-2rPg2G3gLt^f;LxZzMZt z&61H!vuPbLx)ero$?2CJL&W>MglH~|VKc+N{Lx%A&oQ8j1J|k%T{6LB)bPYQYUW98 zgx67;Ak~#EiT;k7p*zA~&#Z>U;|-k+`I;mqo1v23hw*2BBd80@{sK^tSzt&hWkZS! z^+Lr!QkSmBLB#wRA*l;PhgtBm$YmXjcf!y?mn1t1L`lhSrX3z^Q0`Aqdqf$Q7BTjB zBMpf~V!C)%XO|*g*=Lp_%M}dV5q;A=UmqE>L)UE=VK692qf?&e^YoUc+&C@KH5aus#nJy?y)Y0M z#D9C8ew@}Aiod})tp%6?^n;oexD7+APzC0PLMaQ;LZi56E%ayT8^twS=+hQ@0FZj2 z9kkG&!}6jfS}b&jg&wrflYq4BGZuQuLa$qhwhpDY(?Wa?p5mq~RQeW=-fRoaw@|%> zz6wao{zz=%R(<%D1lY2R90JP z#6kxw^co;@ZQb-RV`1*ECpvk>3ru4NZmsM|uDEp(@a{>DNNTWFt! zp0dz$7P=5-HLZ8Cg+67W2P||R3~bt#cUtHJ7WxksT4kXQ3vIU04hy{iNb8Nkg-xL) z7V5Xqqky#DA6n=a7W!8UML|OIz1Koj7D`%Z6cGMlZGF!|Qx>Yg;?>lBfRx@r3q1x1 z|4{bLuqA0~#6s@|L=#hSPfN9NwIf}x-_r_t#=dxWg*2!ajX9MyllvhyBs{ejr^PK! zF?<&2Lgm3pr&yfUrRbD4=CRkmO>5?<;1}**Gow{eTs~<@YpC;sCe{DUZoPpyy{iaONXNi~B!3gPPs1 zi>Qq#6dp@X_Dh{hAu%Bu=mhh4aa#AtjfvChwsBhPbKgkoUYu4h#4#JEHOi7RjMGvwd2w27yu@jJiF6pLdXhLTT4E3uq;}9jDS%r_ z;Be_gC{=ehRBM!}1?pr-?Xci5RBQbVLbdo=cGZ=L0st!W=E8U_eV%;XKSWl>Ysm=B zEMALS_jK`EC;2!;>r*CP%c)P4NzXMx-W6*WLXc%he9upZ+n<^6Gw3yXBk(p&GGve5 z`Y`AG17@5I1V0f5EeLuSpErX#qm?2p+|Ub^6jYO<``_e6RUu4H-Wug83!oMFd}5Ge z0ZSJxCIq2Op#L}|3XT!F8NxgJILG}KR(RFBS1t%V^$!_E<9H9zoGCIQFLdtM}A z0ccDKg18<7>2oj){9&)bmi#3V4=q?L_beW{V*hQg>JFXLl*ieAU-FA zYcx}#KLeyCDlD|mrXIA=V}Ky~QM$lRs%0Y+Q;Z0vl)MDZheUHQ#r-F2$_T z{_>x$ljuaAu6J=ja6#Zjulr9|jw`?BmwP1xGye)Uq9nh}vOC7o=RZt3&Y_`w;k`$R zt9o+B*rs0z=maIaGoV=@2L=KYhxip_l$Q*y;C4K@DVQxj_7%zZOQWv)d)^HlE7Pn_ zI#G(ZLBw}F>9i(d>C1)6fgr#07jX6>HK-NW4d7i7G3?%PtNH2y>55!x zajOAw4aWj}4}#{~WTDRhQhGc!xF^H{58clG()a|~%fAD7 zZOO@#^Tl?yZo2O*-(ZVy|KZi+!`$w}{FM*$WgmuPpqEGa2@eq<<`=k2rPud$wsrKU zx;A#DJ3GAhEAY-s@^J0looyR8^%kOgyW2LVwsfV}r#2c|UICAEe`osEwyhqvD+l&+ z7}8#rf?J!bXXCn5f4XgBM_Zq5X?lHUicQ$q+2<8UTe8m-=uXf3(A;(uH9Om>_O#kc z6PlVMF)%QME1{Ugz{4eXPYWSeyvUx$(uG&@H1@Q0>(X1+rR19)>-$oh``R{cNZs7| z@v2l`=gnRHX*~Y4pZ}2rE#LQh6UdgI$0=~yEy#U#Jhxnf=9fR%bHSZQv00Ac&S^GV zB{yDaKe5Vr>;nW54!hey{NzK5gNV_Bu808JFBY;QD8zQ`QfcF(e zk>tdbM{yg$FEoVkQ|dH?@l)nBM7cQd3aYBZL&u^}XeP*dI0K2GdwtR?w_r`fKzL|h z6eh;KBjjx)eMP+++gX>J=jg;wl%r8{L6C|Tkh#!ZQxCQ#+VUUQ@JKYTYI6Owj!pci zqibED9OF3`vk9X%cTWG@t#dj)IHx`^r+iNDoXgD5Wr2>abpAV^^qpGN&sMtKiE4Ls zBld!*ySf2C;X6KA!!KAxhF#SE5Dzf$P@$^Bl%crDor=WNssJ+A{$N|3KF^NB=~nlu z`b_mbZup)BD^8@}H*~yY`&$;Qcr9JV{s0!GNFabwa2gXKrBGMP2}gShsl-4JfywWr3ls10|n4uWD>)U$>NI!;xiJ zpMl?g9wcbEJaDc*Lx1Zv#!Nb~RtB>nz6JCAY+3$iv zW?4xqh!vh7wRE?iN=BlZx7x4f|Ah-ok<;GrcCeh~=xRD`QT3RxWsZ#DPjg^cqfQAG& ziOBFMCkdJQMhp}PqPn$6DFvW4oN&m^_mOdChmb9bD5pVIRga+yC#F_L zk+)^Xm=nA=GR({+=|puMa7_RzYmaBT@n)a9S~2O+ca826zK5=XY?c=WCFsOD%yp?W*`7+bc`T^YhuX=X#+j|WjQvg@C+ zM9n;1R*Hv+x&1K=LDXFq#a-C#51V>`3~3EIt z;75u%kB&dZm+!QqOAe>sUUeAr;5~Ta7PMXIHe=?Q-E#c%RPkWuxfR&vDl`KM9Gm!_ zJPzDRE;~5B67vQ9#Tju+FlRn+R-*|E*@VnBoDYpMA8LreLb{VbrYGwY70#r)GFtKi zI;Y%S87_H2=0h{*!`0q=Xih9dYdTOj=Rg@M)p=p(L(qFHOcj%{dMZOz^RHo!E6Lh{{Zed(IUGJdF^!9 za5|jvxeytC2Of~~;Rxo#_yk9u^RO{dgMs@mT2BgHLh<6f` zGHXLkL;Du)owy*6@g6$1u%ImsrY-gEb@d=7wV`6Eys)}u%$z_A*g|hwH}WBPthXlE z&X6<`2eCec*A_f&O_BDja-JJHR_@$*!d(>_`uU{0H0*vXgn8;b9oeYTc+rfST+@q}~iMrFa}Ik^Vn_&+PaC92#vI?6!gycI`TTp{Wk z6uJTsCFxjT1O8qr(B~}l0HE1|J8YpOR*;rmW}zD_bgzZ}mxZ3P&}^J7?-hD2fG!ru z0rVcN15lYjAAxvIMNcfy42bQH1^O*?8y=HU#<9TNfT*vF1-=OAodSK|rv45PzkV1C zL?MWj3KR#Vt*3LHLe+rOvtkvXOC(<#pxFX#w$Kg;8(QyufVAGP0n&PZVpHFO^`Z5a z0n&Oa0cmaj%|ed=N=O~=#Bgb91t7)kM~b%P@^xL^ow(zr)=el+&(MlKAV%Y1jHN zH~BDqKFqKW^F<%#zxyz|eVC_w7-8!L>$UKAzC3ToIOyf&d7lqMpTGP(e2Z&7hO0Oq zv)PBaGY`YnZY0H9H&77m>`S%hsHxg|d%JH-QJ_e9;5tmq-nK0p6;W8)yYK1kPqlS) z%*(z1L}y=*cdzq}x|bYGU(Ze5owtfY#ww${j9#{M=f?h?K6)B)P8VR&#?Fm7MNQ_a zEUK-$yQiJnt*(s)Wz#)<8#h#W$oBO;J^1!(Ut33)RkNXE*a=ZLLvipb{J6-743uE&eJdi*TO<|Ck8iJ5i?zq}3s#=ijA>?!E^aSoT_q>bYoj#a&a zlRiq$Es6|o**CfSE&!Ga(|V!@imf%AjVsOTZXPYnkWR#80f;E=tC~_(+wC?j4@!p4l8QR?x!sxhtB$OprZsuW!U- zvTJ6c^T=6DU4+(eyDIPbz{rE0OlHFOKw4X{@E%1dwqNb` z#cKP=_JuJLYa@TXC-SWqz@3o~kAZiNy4#}|_K>@Rd7xaeLM3FDFyG(oz1 zp}W_=GIR&fC6VC_Mjb=9*6j(q%LBF7gd)SA0IKTAsxjD=-a53eF;|z6M&nSiyC#%b zcr6>934c4&6?AV1g7aOEw$!_~3}n*pf#>+nSAUloD4lZlTbaCk%0-48xqQ)pdt=C5 ztc?FZQ7UXrEQF{I=~l)Y^6#VDq@zuL9jLz#tyV$(W$@b_Zc7O4VAWxr%=MHqBAFi{ z2S&DnIUydQPbzU+&RhJFpYZwvl2D~Q57_oh@Y+oC9l^*jjnj~(&ykTpITyn8L9{7` z3PqsiO%yj3?$W5Fg!LvYHxz4YxQyJTSst04!~{kdw~(BnU6W5NvI9 zTIw_CtcC`ssR`X&o$a;*OQdURj~`efT{iF*XL39U3C4K^EvS}9X}m8mwA-q2+~)hJ zEBWb_<a_rAa_-kj|2}&SquseiYXbTRx3*73v-DQxy ze;nDh+g%ph{j+l@itGj@Y7ormFAJAE0Ssi=5FSnhmEhF%BAoo%1@Ud3h{Ay)cRzF4 zq!ziA7fxDeIUtn+XaUvKTL7u#LWA!mlH)l3#szA|l-7J%iKGInTxE_4Kq_gx3sQyh z^bZ13o}S(l%G1+RLiu-kN+`XHEOaR#F#JA3>ZVN{ z9bKLMms{4G9O`t|#bT_y5d*9Zv_L-axYyI?@QbtVg$zFKvvPn}nJL=d(`#A&TZ^#r zK4!ePt9?U9*R39zGsK(2ZZ?1Jy7}`x-=0(P<~1Lxjq8==&FP{1c9|D`-n4~c%1g`jRLNosd{vlm-I68Et5Z#li&msoU)|i0TG8Ba?czoC*Cp}!5KX&!#nsIz z4_oPB>lzm?TCu7rH-U{>mnx{kF54omGa@{1$@7t+J-cS^`u2J2+ts9fs&#qA{40!O zN_Jhgo;STcdlK?A*X2M+yOr}JeiqgxsdJ{qOVpl?pVPNz(~xcS`BtXrIYlK7q|- zh8FIo)3k73DE<@>pkUvY{mrv)4`bL7WKIdR0lfdvYr*t7wQ#q>)QJ2zm|)#b(z?B> zKHs!W#ZnQ|_7@@1Y2OaRzMYjBA?-akv6m8JB=aTI4-sx5r=PW7(kkhyE!*oh z8Y~;akj2G#{aMZk8n3A#X@r5Y+Ze4W6H@qVh7i~!hDx4WkX@Tmkk+&)=nevf(o~I1 zUCWbK4A(m&!>=Gg43#DSiniUgiE{QI-8}iAn8AnkzcEwwS}ffh{Q!4Cow|>XUx4w# zV@_wPZiK1YOwjSaqp6ycqT*h^shW-u3n96;gPsoV*H8;8t-((q(=&xpN>;s?qw|_> zoTJ`2Q#o(Oc|E94GtT0mz&d6+&TqxQ(hgmhGtRUYcZ=1wS**rK(b|v;_myyhjGS~9 zjLTdv@G*g*`s6MN52`1|66=zXHZBP_s7u1jTpLPM2iVXa+8d*y)?J~BiZ#|H0sEhq z{Z6)lDkP)-0SuRf$nbo0Jk=rGrpF^3RfMac+h~UV7H&s|j#0BzjS3PN@JckH+(kF2 z-8qO`s&&-XT#CCgcUe8@je#EeAWQ=@Jw(tQSUTDok^s4(eHDADqp85&S6V>7x_}HR zla31ma*h@TEt8g@Ur>W-32CE=eNH#XufVtd#lQ`gow$EwCW z8!+cY9RFvoWBCAbtM=iKW&drqx|lBlqJ}6IcoC3lWg4J?Q7uXekZOL0EYyt6PIWfj zfK+F*8IbC1sCUuSrva&cW&)6EV2%UQCw~+43<^a6srIH4&?VBAg@9%Yw9-Ng!Hg?q zzWYM!T?0t#z1yaa0n&PZ07&b79+1{HAJa^s6@U^_$99X`X>t3JqHXcZF3O~~BZqgL zjy5QcLL#YP+bO&}-H#`!WOYBI$jVZ{%+UVJ{^KImQoNaq|J(C?&VZe~LgJiG7NG67Qp$hN`L{fKXK z)@&=@2`PJDT$5z5XV(aQak)+<)y}J_sn(oXsrDwU!b@c) z`n64?*dHm?R$zzYMcr-uEJ?K^piPbQA^dV8s;>D@$`WiP-f2w1HXhbW?Z#4l_AJ41 z3_PU|7tBi8q|IgQp-9 z|6SA$*(6Roa5*SiJ1`mCa#UyRz=_CR?SD8s@cFO<&w>aco(?m%1pl8mYzdA-bom?9 zJ5x(=5_>Mjkrv-POYkWzzva%R6Jq&&EywH|h1u5_ePQtpXM%TN3_|YtYTS+NdLk1Z zp$KCPyf7Vm*4?abeuP`||09;(2Ovo(_r3>^a_{F_3E=`OAzWyoO8_ZHe+?j&6;9vM zJ0GK_GR4U(y|TgQnR-u$x2LqhlTi=jKdz;hvL$EgbiDoDNF%q9z0M?WpR{B>u6VT% zbF&Y##fSN{4SMDSIkouRLuY$9;CJy(V~b#!-@0S9tt-mj8YjA|&-8 z#iE_ZFqY)M8&%AdSlakm;J=}j0!vBHy;Y$dPez7cLY)BJZDF{yWzrXk1KhT7rV$=+ ziw`*mcfPvqkh3`45cwPbhYi1(WlAR@=~3Q(fnDJE}ARA{%{6E_=U#8~cFpc;_c(LWC89l*^B z&<~vbIxBEHAo?B53Je0G^?g?0t2XuP7U$PldF!AZWwMuy5N>%!WHlSvbV59DdqG+9 zND}pzBYBubz>HdqUyt++q@6Eiy+3E_tVyNBlcdd~tIM#(yTz|!dVH8{ytkL<3%)#l zoBZQ8k9Q(4%vLXAehbj=4{k8|FJdrAGcu|Cw?cSW`|5|)ZC&XlJ$=`8ZM?a=^O~D( z>15E7I1vDLVq%-}R4t|t|J1xJ0$LkXOkDrB|mbA%Edzuc; zpFdGe$2>9a7pOYCP<79z`46Y*;4b<5X*%fF3llSJ={4}jch3=D_sDP^1Q3YBpIv}o z2)!)~NsoMXF7IGTtNO0HB)nirG=1KJC9(9m`ko=Yr3h(F5XhovO4##+zg~hU-4(Pb z$+<%*`{$TCtkzu=Ua%+{8GZ!!3l_y9!w&*@2oDpWq|5g&rRN}D%PV)>0UUhfKf{8I z)m$BR=hbe3i~Lq#jEj5(p2T_zKKMRlm!?95udzPzE!IaK0%>XiUoB(h#|;OLZdUPPGm;8XlskmBaJ!1k$cz@ILLJ`{5l=UwHA0XH#jxq@z4s zPH-!RLNfN41_fxIF2cKXd{VxQyeF6ua+qgvsNq~H3??Yp(eO%88X zAZelHfKKj1f2rg+j=!@7D&|9fCANXMq{gvHsogdSNbR=#zO-6Me+x);Ea!p6Qyt3( z0hLPG`GB;2AGOdjK&oS5e6Q+QXv-y28w)%R=n{br15zr#0;Day%xDr~fmT3D`E!60 zQi9qRE$in>vx=6v6bR>Cj_AIbN7Aw#*ay(hy#CPImaJ}twO8XmXLkw4=S=}W2Ye11 z$zI4_XNm(R#YL8^$CYyb(aXcE_Yi0yrV*~KKFpmy%$Iza2Yi@4KFmM*Fvolt89Kpw z?YXeT%j99oeVD~Q4A+TXUa2-8X1fnV`6XNGKjW^rM&=~%aVio>duF}wWl4A}`0t~W qu~7u3@Jy64^YDtRzAi+)dKF76@}p!G)wL0ByzQNZ`Ol6X=l=q}(Gu?f diff --git a/libm65/JT65code.f90 b/libm65/JT65code.f90 new file mode 100644 index 000000000..35289e823 --- /dev/null +++ b/libm65/JT65code.f90 @@ -0,0 +1,47 @@ +program JT65code + +! Provides examples of message packing, bit and symbol ordering, +! Reed Solomon encoding, and other necessary details of the JT65 +! protocol. + + character*22 msg0,msg,decoded,cok*3 + integer dgen(12),sent(63),recd(12),era(51) + + nargs=iargc() + if(nargs.ne.1) then + print*,'Usage: JT65code "message"' + go to 999 + endif + + call getarg(1,msg0) !Get message from command line + msg=msg0 + + call chkmsg(msg,cok,nspecial,flip) !See if it includes "OOO" report + if(nspecial.gt.0) then !or is a shorthand message + write(*,1010) +1010 format('Shorthand message.') + go to 999 + endif + + call packmsg(msg,dgen) !Pack message into 72 bits + write(*,1020) msg0 +1020 format('Message: ',a22) !Echo input message + if(iand(dgen(10),8).ne.0) write(*,1030) !Is plain text bit set? +1030 format('Plain text.') + write(*,1040) dgen +1040 format('Packed message, 6-bit symbols: ',12i3) !Display packed symbols + + call rs_encode(dgen,sent) !RS encode + call interleave63(sent,1) !Interleave channel symbols + call graycode(sent,63,1) !Apply Gray code + write(*,1050) sent +1050 format('Channel symbols, including FEC:'/(i5,20i3)) + + call graycode(sent,63,-1) + call interleave63(sent,-1) + call rs_decode(sent,era,0,recd,nerr) + call unpackmsg(recd,decoded) !Unpack the user message + write(*,1060) decoded,cok +1060 format('Decoded message: ',a22,2x,a3) + +999 end program JT65code diff --git a/libm65/Makefile.MinGW b/libm65/Makefile.MinGW new file mode 100644 index 000000000..87a663b87 --- /dev/null +++ b/libm65/Makefile.MinGW @@ -0,0 +1,92 @@ +# Makefile for MinGW on Windows +CC = gcc +FC = g95 + +FFLAGS = -O2 -fbounds-check -Wall -Wno-precision-loss -fno-second-underscore +CFLAGS = -I. -fbounds-check + +# Default rules +%.o: %.c + ${CC} ${CFLAGS} -c $< +%.o: %.f + ${FC} ${FFLAGS} -c $< +%.o: %.F + ${FC} ${FFLAGS} -c $< +%.o: %.f90 + ${FC} ${FFLAGS} -c $< +%.o: %.F90 + ${FC} ${FFLAGS} -c $< + +all: libm65.a m65.exe JT65code.exe + +OBJS1 = trimlist.o display.o getdphi.o pctile.o ccf65.o \ + decode1a.o sort.o filbig.o fil6521.o afc65b.o \ + twkfreq.o decode65b.o indexx.o ssort.o fchisq.o setup65.o \ + extract.o deep65.o ccf2.o demod64a.o chkhist.o graycode.o \ + interleave63.o unpackmsg.o encode65.o igray.o set.o unpackcall.o \ + unpackgrid.o grid2k.o unpacktext.o getpfx2.o packmsg.o \ + deg2grid.o packtext.o getpfx1.o packcall.o k2grid.o packgrid.o \ + wrapkarn.o nchar.o init_rs.o encode_rs.o decode_rs.o \ + four2a.o rfile3a.o grid2deg.o pfxdump.o dpol.o \ + astro.o tm2.o sun.o moondop.o coord.o tmoonsub.o \ + geocentric.o moon2.o toxyz.o dot.o dcoord.o f77_wisdom.o \ + gen65.o chkmsg.o ptt.o astrosub.o astro0.o recvpkt.o symspec.o \ + iqcal.o iqfix.o timf2.o + +libm65.a: $(OBJS1) + ar cr libm65.a $(OBJS1) + ranlib libm65.a + +OBJS3 = m65.o m65a.o map65a.o symspec.o decode0.o ftninit.o ftnquit.o \ + timer.o ipcomm.o sec_midn.o cutil.o +LIBS3 = -L'c:/QtSDK/Desktop/Qt/4.7.4/mingw/lib' -lQtCore4 + +m65.exe: $(OBJS3) libm65.a + g++ -o m65.exe $(OBJS3) $(LIBS3) libm65.a ../libfftw3f_win.a \ + c:/MinGW/lib/libf95.a + cp m65.exe ../../install + +OBJS2 = JT65code.o +JT65code.exe: $(OBJS2) libm65.a + $(FC) -o JT65code.exe $(OBJS2) libm65.a + +INCPATH = -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/include/QtCore' \ + -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/include' \ + -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/include/ActiveQt' \ + -I'release' -I'.' -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/mkspecs/win32-g++' +ipcomm.o: ipcomm.cpp + g++ -c $(INCPATH) ipcomm.cpp + +#m65a.o: m65a.f90 +# $(FC) -c -fno-second-underscore -cpp m65a.f90 + +sec_midn.o: sec_midn.f90 + $(FC) -c -fno-second-underscore sec_midn.f90 + +#symspec.o: ../symspec.f90 +# $(FC) -c $(FFLAGS) -o symspec.o ../symspec.f90 + +OBJS4 = tastro.o astro0.o libm65.a +tastro.exe: $(OBJS4) + $(FC) $(FFLAGS) -o tastro.exe $(OBJS4) libm65.a + +OBJS5 = t1.o timer.o libm65.a +t1.exe: $(OBJS5) + $(FC) $(FFLAGS) -o t1.exe $(OBJS5) libm65.a + +#astro0.o: ../astro0.f90 +# $(FC) -c $(FFLAGS) -o astro0.o ../astro0.f90 + +init_rs.o: init_rs.c + $(CC) -c -DBIGSYM=1 -o init_rs.o init_rs.c + +encode_rs.o: encode_rs.c + $(CC) -c -DBIGSYM=1 -o encode_rs.o encode_rs.c + +decode_rs.o: decode_rs.c + $(CC) -c -DBIGSYM=1 -o decode_rs.o decode_rs.c + +.PHONY : clean + +clean: + rm -f *.o libm65.a m65.exe jt65code.exe diff --git a/libm65/Makefile.linux b/libm65/Makefile.linux new file mode 100644 index 000000000..73b6652d7 --- /dev/null +++ b/libm65/Makefile.linux @@ -0,0 +1,96 @@ +CC = gcc +FC = gfortran + +FFLAGS = -O2 -fbounds-check -Wall +# For ptt_unix: +CFLAGS = -I. -fbounds-check -DHAVE_STDLIB_H=1 -DHAVE_STDIO_H=1 \ + -DHAVE_FCNTL_H=1 -DHAVE_SYS_IOCTL_H=1 + +# Default rules +%.o: %.c + ${CC} ${CFLAGS} -c $< +%.o: %.f + ${FC} ${FFLAGS} -c $< +%.o: %.F + ${FC} ${FFLAGS} -c $< +%.o: %.f90 + ${FC} ${FFLAGS} -c $< +%.o: %.F90 + ${FC} ${FFLAGS} -c $< + +all: libm65.a m65 + +OBJS1 = trimlist.o display.o getdphi.o pctile.o ccf65.o \ + decode1a.o sort.o filbig.o fil6521.o afc65b.o \ + twkfreq.o decode65b.o indexx.o ssort.o fchisq.o setup65.o \ + extract.o deep65.o ccf2.o demod64a.o chkhist.o graycode.o \ + interleave63.o unpackmsg.o encode65.o igray.o set.o unpackcall.o \ + unpackgrid.o grid2k.o unpacktext.o getpfx2.o packmsg.o \ + deg2grid.o packtext.o getpfx1.o packcall.o k2grid.o packgrid.o \ + wrapkarn.o nchar.o init_rs.o encode_rs.o decode_rs.o \ + four2a.o rfile3a.o grid2deg.o pfxdump.o dpol.o \ + astro.o tm2.o sun.o moondop.o coord.o tmoonsub.o \ + geocentric.o moon2.o toxyz.o dot.o dcoord.o f77_wisdom.o \ + gen65.o chkmsg.o ptt_unix.o astrosub.o astro0.o recvpkt.o \ + symspec.o iqcal.o iqfix.o timf2.o s3avg.o + +libm65.a: $(OBJS1) + ar cr libm65.a $(OBJS1) + ranlib libm65.a + +OBJS3 = m65.o m65a.o map65a.o symspec.o decode0.o ftninit.o ftnquit.o \ + timer.o ipcomm.o sec_midn.o cutil.o + +m65: $(OBJS3) libm65.a + g++ -o m65 $(OBJS3) libm65.a -lfftw3f -lQtCore -lfftw3f -lgfortran + +OBJS2 = m65a.o ipcomm.o sec_midn.o cutil.o decode0.o map65a.o \ + timer.o ftninit.o ftnquit.o +LIBS2 = -lQtCore -lfftw3f -lgfortran + +m65a: $(OBJS2) libm65.a + g++ -o m65a $(OBJS2) libm65.a -lQtCore -lfftw3f -lgfortran + +OBJS6 = t3.o ipcomm.o +LIBS2 = -lQtCore -lgfortran + +t3: $(OBJS6) + g++ -o t3 $(OBJS6) $(LIBS2) + +t3: + +INCPATH = -I. -I'/usr/include/qt4' -I'/usr/include/qt4/QtCore' + +ipcomm.o: ipcomm.cpp + g++ -c $(INCPATH) ipcomm.cpp + +m65a.o: m65a.F90 + $(FC) -c -fno-second-underscore -DUNIX m65a.F90 + +extract.o: extract.F + $(FC) -c -fno-second-underscore -DUNIX extract.F + +sec_midn.o: sec_midn.f90 + $(FC) -c -fno-second-underscore sec_midn.f90 + +OBJS4 = tastro.o astro0.o libm65.a +tastro: $(OBJS4) + $(FC) $(FFLAGS) -o tastro $(OBJS4) libm65.a + +OBJS5 = t1.o timer.o libm65.a +t1: $(OBJS5) + $(FC) $(FFLAGS) -o t1 $(OBJS5) libm65.a + +init_rs.o: init_rs.c + $(CC) -c -DBIGSYM=1 -o init_rs.o init_rs.c + +encode_rs.o: encode_rs.c + $(CC) -c -DBIGSYM=1 -o encode_rs.o encode_rs.c + +decode_rs.o: decode_rs.c + $(CC) -c -DBIGSYM=1 -o decode_rs.o decode_rs.c + +.PHONY : clean + +clean: + rm -f *.o libm65.a m65 m65a diff --git a/afc65b.f b/libm65/afc65b.f similarity index 90% rename from afc65b.f rename to libm65/afc65b.f index fb3d4aeb8..a1a4341ae 100644 --- a/afc65b.f +++ b/libm65/afc65b.f @@ -1,6 +1,7 @@ - subroutine afc65b(cx,cy,npts,fsample,nflip,ipol,a,dt0, + subroutine afc65b(cx,cy,npts,fsample,nflip,ipol,xpol,a, + ccfbest,dtbest) + logical xpol complex cx(npts) complex cy(npts) real a(5),deltaa(5) @@ -9,16 +10,14 @@ a(2)=0. a(3)=0. a(4)=45.0*(ipol-1.0) - deltaa(1)=2.0 deltaa(2)=2.0 deltaa(3)=2.0 deltaa(4)=22.5 deltaa(5)=0.05 - nterms=4 - + nterms=3 + if(xpol) nterms=4 chisqr=0. - nfree=npts-nterms C Start the iteration chisqr0=1.e6 diff --git a/libm65/astro.f b/libm65/astro.f new file mode 100644 index 000000000..acd0f5928 --- /dev/null +++ b/libm65/astro.f @@ -0,0 +1,109 @@ + subroutine astro(nyear,month,nday,uth,nfreq,Mygrid, + + NStation,MoonDX,AzSun,ElSun,AzMoon0,ElMoon0, + + ntsky,doppler00,doppler,dbMoon,RAMoon,DecMoon,HA,Dgrd,sd, + + poloffset,xnr,day,lon,lat,LST) + +C Computes astronomical quantities for display and tracking. +C NB: may want to smooth the Tsky map to 10 degrees or so. + + character*6 MyGrid,HisGrid + real LST + real lat,lon + integer*2 nt144(180) + +! common/echo/xdop(2),techo,AzMoon,ElMoon,mjd + real xdop(2) + + data rad/57.2957795/ + data nt144/ + + 234, 246, 257, 267, 275, 280, 283, 286, 291, 298, + + 305, 313, 322, 331, 341, 351, 361, 369, 376, 381, + + 383, 382, 379, 374, 370, 366, 363, 361, 363, 368, + + 376, 388, 401, 415, 428, 440, 453, 467, 487, 512, + + 544, 579, 607, 618, 609, 588, 563, 539, 512, 482, + + 450, 422, 398, 379, 363, 349, 334, 319, 302, 282, + + 262, 242, 226, 213, 205, 200, 198, 197, 196, 197, + + 200, 202, 204, 205, 204, 203, 202, 201, 203, 206, + + 212, 218, 223, 227, 231, 236, 240, 243, 247, 257, + + 276, 301, 324, 339, 346, 344, 339, 331, 323, 316, + + 312, 310, 312, 317, 327, 341, 358, 375, 392, 407, + + 422, 437, 451, 466, 480, 494, 511, 530, 552, 579, + + 612, 653, 702, 768, 863,1008,1232,1557,1966,2385, + + 2719,2924,3018,3038,2986,2836,2570,2213,1823,1461, + + 1163, 939, 783, 677, 602, 543, 494, 452, 419, 392, + + 373, 360, 353, 350, 350, 350, 350, 350, 350, 348, + + 344, 337, 329, 319, 307, 295, 284, 276, 272, 272, + + 273, 274, 274, 271, 266, 260, 252, 245, 238, 231/ + save + + call grid2deg(MyGrid,elon,lat) + lon=-elon + call sun(nyear,month,nday,uth,lon,lat,RASun,DecSun,LST, + + AzSun,ElSun,mjd,day) + + freq=nfreq*1.e6 + if(nfreq.eq.2) freq=1.8e6 + if(nfreq.eq.4) freq=3.5e6 + + call MoonDop(nyear,month,nday,uth,lon,lat,RAMoon,DecMoon, + + LST,HA,AzMoon,ElMoon,vr,dist) + +C Compute spatial polarization offset + xx=sin(lat/rad)*cos(ElMoon/rad) - cos(lat/rad)* + + cos(AzMoon/rad)*sin(ElMoon/rad) + yy=cos(lat/rad)*sin(AzMoon/rad) + if(NStation.eq.1) poloffset1=rad*atan2(yy,xx) + if(NStation.eq.2) poloffset2=rad*atan2(yy,xx) + + techo=2.0 * dist/2.99792458e5 !Echo delay time + doppler=-freq*vr/2.99792458e5 !One-way Doppler + + call coord(0.,0.,-1.570796,1.161639,RAMoon/rad,DecMoon/rad,el,eb) + longecl_half=nint(rad*el/2.0) + if(longecl_half.lt.1 .or. longecl_half.gt.180) longecl_half=180 + t144=nt144(longecl_half) + tsky=(t144-2.7)*(144.0/nfreq)**2.6 + 2.7 !Tsky for obs freq + + xdop(NStation)=doppler + if(NStation.eq.2) then + HisGrid=MyGrid + go to 900 + endif + + doppler00=2.0*xdop(1) + doppler=xdop(1)+xdop(2) +! if(mode.eq.3) doppler=2.0*xdop(1) + dBMoon=-40.0*log10(dist/356903.) + sd=16.23*370152.0/dist + +! if(NStation.eq.1 .and. MoonDX.ne.0 .and. +! + (mode.eq.2 .or. mode.eq.5)) then + if(NStation.eq.1 .and. MoonDX.ne.0) then + poloffset=mod(poloffset2-poloffset1+720.0,180.0) + if(poloffset.gt.90.0) poloffset=poloffset-180.0 + x1=abs(cos(2*poloffset/rad)) + if(x1.lt.0.056234) x1=0.056234 + xnr=-20.0*log10(x1) + if(HisGrid(1:1).lt.'A' .or. HisGrid(1:1).gt.'R') xnr=0 + endif + + tr=80.0 !Good preamp + tskymin=13.0*(408.0/nfreq)**2.6 !Cold sky temperature + tsysmin=tskymin+tr + tsys=tsky+tr + dgrd=-10.0*log10(tsys/tsysmin) + dbMoon + 900 AzMoon0=Azmoon + ElMoon0=Elmoon + ntsky=nint(tsky) + +! auxHA = 15.0*(LST-auxra) !HA in degrees +! pi=3.14159265 +! pio2=0.5*pi +! call coord(pi,pio2-lat/rad,0.0,lat/rad,auxha*pi/180.0, +! + auxdec/rad,azaux,elaux) +! AzAux=azaux*rad +! ElAux=ElAux*rad + + return + + end diff --git a/libm65/astro0.f90 b/libm65/astro0.f90 new file mode 100644 index 000000000..ef37f7d21 --- /dev/null +++ b/libm65/astro0.f90 @@ -0,0 +1,81 @@ +subroutine astro0(nyear,month,nday,uth8,nfreq,mygrid,hisgrid, & + AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00, & + dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,sd8,poloffset8,xnr8,dfdt,dfdt0, & + width1,width2,w501,w502,xlst8) + + parameter (DEGS=57.2957795130823d0) + character*6 mygrid,hisgrid + real*8 AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8 + real*8 dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,xnr8,dfdt,dfdt0,dt + real*8 sd8,poloffset8,day8,width1,width2,w501,w502,xlst8 + real*8 uth8 + data uth8z/0.d0/ + save + + uth=uth8 + call astro(nyear,month,nday,uth,nfreq,hisgrid,2,1, & + AzSun,ElSun,AzMoon,ElMoon,ntsky,doppler00,doppler, & + dbMoon,RAMoon,DecMoon,HA,Dgrd,sd,poloffset,xnr, & + day,xlon2,xlat2,xlst) + AzMoonB8=AzMoon + ElMoonB8=ElMoon + call astro(nyear,month,nday,uth,nfreq,mygrid,1,1, & + AzSun,ElSun,AzMoon,ElMoon,ntsky,doppler00,doppler, & + dbMoon,RAMoon,DecMoon,HA,Dgrd,sd,poloffset,xnr, & + day,xlon1,xlat1,xlst) + + day8=day + xlst8=xlst + call tm2(day8,xlat1,xlon1,xl1,b1) + call tm2(day8,xlat2,xlon2,xl2,b2) + call tm2(day8+1.d0/1440.0,xlat1,xlon1,xl1a,b1a) + call tm2(day8+1.d0/1440.0,xlat2,xlon2,xl2a,b2a) + fghz=0.001*nfreq + dldt1=DEGS*(xl1a-xl1) + dbdt1=DEGS*(b1a-b1) + dldt2=DEGS*(xl2a-xl2) + dbdt2=DEGS*(b2a-b2) + rate1=2.0*sqrt(dldt1**2 + dbdt1**2) + width1=0.5*6741*fghz*rate1 + rate2=sqrt((dldt1+dldt2)**2 + (dbdt1+dbdt2)**2) + width2=0.5*6741*fghz*rate2 + + fbend=0.7 + a2=0.0045*log(fghz/fbend)/log(1.05) + if(fghz.lt.fbend) a2=0.0 + f50=0.19 * (fghz/fbend)**a2 + if(f50.gt.1.0) f50=1.0 + w501=f50*width1 + w502=f50*width2 + + AzSun8=AzSun + ElSun8=ElSun + AzMoon8=AzMoon + ElMoon8=ElMoon + dbMoon8=dbMoon + RAMoon8=RAMoon/15.0 + DecMoon8=DecMoon + HA8=HA + Dgrd8=Dgrd + sd8=sd + poloffset8=poloffset + xnr8=xnr + ndop=nint(doppler) + ndop00=nint(doppler00) + + if(uth8z.eq.0.d0) then + uth8z=uth8-1.d0/3600.d0 + dopplerz=doppler + doppler00z=doppler00 + endif + + dt=60.0*(uth8-uth8z) + if(dt.le.0) dt=1.d0/60.d0 + dfdt=(doppler-dopplerz)/dt + dfdt0=(doppler00-doppler00z)/dt + uth8z=uth8 + dopplerz=doppler + doppler00z=doppler00 + + return +end subroutine astro0 diff --git a/libm65/astrosub.f90 b/libm65/astrosub.f90 new file mode 100644 index 000000000..c1f8b3282 --- /dev/null +++ b/libm65/astrosub.f90 @@ -0,0 +1,14 @@ +subroutine astrosub(nyear,month,nday,uth8,nfreq,mygrid,hisgrid, & + AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00, & + RAMoon8,DecMoon8,Dgrd8,poloffset8,xnr8) + + implicit real*8 (a-h,o-z) + character*6 mygrid,hisgrid + + call astro0(nyear,month,nday,uth8,nfreq,mygrid,hisgrid, & + AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00, & + dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,sd8,poloffset8,xnr8,dfdt,dfdt0, & + width1,width2,w501,w502,xlst8) + + return +end subroutine astrosub diff --git a/ccf2.f b/libm65/ccf2.f similarity index 85% rename from ccf2.f rename to libm65/ccf2.f index 4fe6e6aa1..9bec42122 100644 --- a/ccf2.f +++ b/libm65/ccf2.f @@ -1,7 +1,7 @@ subroutine ccf2(ss,nz,nflip,ccfbest,lagpk) -! parameter (LAGMAX=20) - parameter (LAGMAX=200) + parameter (LAGMAX=60) +! parameter (LAGMAX=200) real ss(nz) real ccf(-LAGMAX:LAGMAX) integer npr(126) @@ -26,7 +26,7 @@ C The JT65 pseudo-random sync pattern: do i=1,126 j=2*(8*i + 43) + lag if(j.ge.1 .and. j.le.nz-8) then - x=ss(j)+ss(j+8) + x=ss(j)+ss(j+8) !Add two half-symbol contributions if(npr(i).eq.0) then s0=s0 + x else diff --git a/libm65/ccf65.f90 b/libm65/ccf65.f90 new file mode 100644 index 000000000..6e7737981 --- /dev/null +++ b/libm65/ccf65.f90 @@ -0,0 +1,118 @@ +subroutine ccf65(ss,nhsym,ssmax,sync1,ipol1,jpz,dt1,flipk,syncshort, & + snr2,ipol2,dt2) + + parameter (NFFT=512,NH=NFFT/2) + real ss(4,322) !Input: half-symbol powers, 4 pol'ns + real s(NFFT) !CCF = ss*pr + complex cs(0:NH) !Complex FT of s + real s2(NFFT) !CCF = ss*pr2 + complex cs2(0:NH) !Complex FT of s2 + real pr(NFFT) !JT65 pseudo-random sync pattern + complex cpr(0:NH) !Complex FT of pr + real pr2(NFFT) !JT65 shorthand pattern + complex cpr2(0:NH) !Complex FT of pr2 + real tmp1(322) + real tmp2(322) + real ccf(-27:27,4) + logical first + integer npr(126) + data first/.true./ + equivalence (s,cs),(pr,cpr),(s2,cs2),(pr2,cpr2) + save + +! The JT65 pseudo-random sync pattern: + data npr/ & + 1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0, & + 0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1, & + 0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1, & + 0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1, & + 1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1, & + 0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1, & + 1,1,1,1,1,1/ + + if(first) then +! Initialize pr, pr2; compute cpr, cpr2. + fac=1.0/NFFT + do i=1,NFFT + pr(i)=0. + pr2(i)=0. + k=2*mod((i-1)/8,2)-1 + if(i.le.NH) pr2(i)=fac*k + enddo + do i=1,126 + j=2*i + pr(j)=fac*(2*npr(i)-1) +! Not sure why, but it works significantly better without the following line: +! pr(j-1)=pr(j) + enddo + call four2a(pr,NFFT,1,-1,0) + call four2a(pr2,NFFT,1,-1,0) + first=.false. + endif + +! Look for JT65 sync pattern and shorthand square-wave pattern. + ccfbest=0. + ccfbest2=0. + ipol1=1 + ipol2=1 + do ip=1,jpz !Do jpz polarizations + do i=1,nhsym-1 +! s(i)=ss(ip,i)+ss(ip,i+1) + s(i)=min(ssmax,ss(ip,i)+ss(ip,i+1)) + enddo + s(nhsym:NFFT)=0. + call four2a(s,NFFT,1,-1,0) !Real-to-complex FFT + do i=0,NH + cs2(i)=cs(i)*conjg(cpr2(i)) !Mult by complex FFT of pr2 + cs(i)=cs(i)*conjg(cpr(i)) !Mult by complex FFT of pr + enddo + call four2a(cs,NFFT,1,1,-1) !Complex-to-real inv-FFT + call four2a(cs2,NFFT,1,1,-1) !Complex-to-real inv-FFT + + do lag=-27,27 !Check for best JT65 sync + ccf(lag,ip)=s(lag+28) + if(abs(ccf(lag,ip)).gt.ccfbest) then + ccfbest=abs(ccf(lag,ip)) + lagpk=lag + ipol1=ip + flipk=1.0 + if(ccf(lag,ip).lt.0.0) flipk=-1.0 + endif + enddo + + do lag=-8,7 !Check for best shorthand + ccf2=s2(lag+28) + if(ccf2.gt.ccfbest2) then + ccfbest2=ccf2 + lagpk2=lag + ipol2=ip + endif + enddo + + enddo + +! Find rms level on baseline of "ccfblue", for normalization. + sum=0. + do lag=-26,26 + if(abs(lag-lagpk).gt.1) sum=sum + ccf(lag,ipol1) + enddo + base=sum/50.0 + sq=0. + do lag=-26,26 + if(abs(lag-lagpk).gt.1) sq=sq + (ccf(lag,ipol1)-base)**2 + enddo + rms=sqrt(sq/49.0) + sync1=ccfbest/rms - 4.0 + dt1=2.5 + lagpk*(2048.0/11025.0) + +! Find base level for normalizing snr2. + do i=1,nhsym + tmp1(i)=ss(ipol2,i) + enddo + call pctile(tmp1,tmp2,nhsym,40,base) + snr2=0.398107*ccfbest2/base !### empirical + syncshort=0.5*ccfbest2/rms - 4.0 !### better normalizer than rms? + dt2=2.5 + lagpk2*(2048.0/11025.0) + + return +end subroutine ccf65 diff --git a/chkhist.f b/libm65/chkhist.f similarity index 100% rename from chkhist.f rename to libm65/chkhist.f diff --git a/libm65/chkmsg.f b/libm65/chkmsg.f new file mode 100644 index 000000000..69882b2b1 --- /dev/null +++ b/libm65/chkmsg.f @@ -0,0 +1,32 @@ + subroutine chkmsg(message,cok,nspecial,flip) + + character message*22,cok*3 + + nspecial=0 + flip=1.0 + cok=" " + + do i=22,1,-1 + if(message(i:i).ne.' ') go to 10 + enddo + i=22 + + 10 if(i.ge.11) then + if ((message(i-3:i).eq.' OOO') .or. + + (message(20:22).eq.' OO')) then + cok='OOO' + flip=-1.0 + if(message(20:22).eq.' OO') then + message=message(1:19) + else + message=message(1:i-4) + endif + endif + endif + + if(message(1:3).eq.'RO ') nspecial=2 + if(message(1:4).eq.'RRR ') nspecial=3 + if(message(1:3).eq.'73 ') nspecial=4 + + return + end diff --git a/coord.f b/libm65/coord.f similarity index 50% rename from coord.f rename to libm65/coord.f index a7641350e..d5476ee54 100644 --- a/coord.f +++ b/libm65/coord.f @@ -1,18 +1,21 @@ - SUBROUTINE COORD(A0,B0,AP,BP,A1,B1,A2,B2) + SUBROUTINE COORD(A0,B0,AP,BP,A1,B1,A2,B2) C Examples: C 1. From ha,dec to az,el: -C call coord(pi,pio2-lat,0.,lat,ha,dec,az,el) +C call coord(pi,pio2-lat,0.,lat,ha,dec,az,el) C 2. From az,el to ha,dec: -C call coord(pi,pio2-lat,0.,lat,az,el,ha,dec) +C call coord(pi,pio2-lat,0.,lat,az,el,ha,dec) C 3. From ra,dec to l,b -C call coord(4.635594495,-0.504691042,3.355395488,0.478220215, -C ra,dec,l,b) +C call coord(4.635594495,-0.504691042,3.355395488,0.478220215, +C ra,dec,l,b) C 4. From l,b to ra,dec -C call coord(1.705981071d0,-1.050357016d0,2.146800277d0, +C call coord(1.705981071d0,-1.050357016d0,2.146800277d0, C 0.478220215d0,l,b,ra,dec) -C 5. From ecliptic latitude (eb) and longitude (el) to ra, dec: -C call coord(0.e0,0.e0,-pio2,pio2-23.443*pi/180,ra,dec,el,eb) +C 5. From ra,dec to ecliptic latitude (eb) and longitude (el): +C call coord(0.d0,0.d0,-pio2,pio2-23.443*pi/180,ra,dec,el,eb) +C 6. From ecliptic latitude (eb) and longitude (el) to ra,dec: +C call coord(0.d0,0.d0,-pio2,pio2-23.443*pi/180,el,eb,ra,dec) + SB0=sin(B0) CB0=cos(B0) @@ -29,6 +32,7 @@ C call coord(0.e0,0.e0,-pio2,pio2-23.443*pi/180,ra,dec,el,eb) SBB=sin(AP-A0)*CB0 SA2=SAA*CBB-CAA*SBB CA2=CAA*CBB+SAA*SBB + TA2O2=0.0 !Shut up compiler warnings. -db IF(CA2.LE.0.e0) TA2O2=(1.e0-CA2)/SA2 IF(CA2.GT.0.e0) TA2O2=SA2/(1.e0+CA2) A2=2.e0*atan(TA2O2) diff --git a/cutil.c b/libm65/cutil.c similarity index 100% rename from cutil.c rename to libm65/cutil.c diff --git a/dcoord.f b/libm65/dcoord.f similarity index 60% rename from dcoord.f rename to libm65/dcoord.f index aed49450e..81c0603a4 100644 --- a/dcoord.f +++ b/libm65/dcoord.f @@ -1,19 +1,19 @@ - SUBROUTINE DCOORD(A0,B0,AP,BP,A1,B1,A2,B2) + SUBROUTINE DCOORD(A0,B0,AP,BP,A1,B1,A2,B2) - implicit real*8 (a-h,o-z) + implicit real*8 (a-h,o-z) C Examples: C 1. From ha,dec to az,el: -C call coord(pi,pio2-lat,0.,lat,ha,dec,az,el) +C call coord(pi,pio2-lat,0.,lat,ha,dec,az,el) C 2. From az,el to ha,dec: -C call coord(pi,pio2-lat,0.,lat,az,el,ha,dec) +C call coord(pi,pio2-lat,0.,lat,az,el,ha,dec) C 3. From ra,dec to l,b -C call coord(4.635594495,-0.504691042,3.355395488,0.478220215, -C ra,dec,l,b) +C call coord(4.635594495,-0.504691042,3.355395488,0.478220215, +C ra,dec,l,b) C 4. From l,b to ra,dec -C call coord(1.705981071d0,-1.050357016d0,2.146800277d0, +C call coord(1.705981071d0,-1.050357016d0,2.146800277d0, C 0.478220215d0,l,b,ra,dec) C 5. From ecliptic latitude (eb) and longitude (el) to ra, dec: -C call coord(0.d0,0.d0,-pio2,pio2-23.443*pi/180,ra,dec,el,eb) +C call coord(0.d0,0.d0,-pio2,pio2-23.443*pi/180,ra,dec,el,eb) SB0=sin(B0) CB0=cos(B0) @@ -30,6 +30,7 @@ C call coord(0.d0,0.d0,-pio2,pio2-23.443*pi/180,ra,dec,el,eb) SBB=sin(AP-A0)*CB0 SA2=SAA*CBB-CAA*SBB CA2=CAA*CBB+SAA*SBB + TA2O2=0.0 !Shut up compiler warnings. -db IF(CA2.LE.0.D0) TA2O2=(1.D0-CA2)/SA2 IF(CA2.GT.0.D0) TA2O2=SA2/(1.D0+CA2) A2=2.D0*atan(TA2O2) diff --git a/libm65/decode0.f90 b/libm65/decode0.f90 new file mode 100644 index 000000000..27642bed6 --- /dev/null +++ b/libm65/decode0.f90 @@ -0,0 +1,64 @@ +subroutine decode0(dd,ss,savg,nstandalone) + + parameter (NSMAX=60*96000) + parameter (NFFT=32768) + + real*4 dd(4,NSMAX),ss(4,322,NFFT),savg(4,NFFT) + real*8 fcenter + integer hist(0:32768) + character mycall*12,hiscall*12,mygrid*6,hisgrid*6,datetime*20 + character mycall0*12,hiscall0*12,hisgrid0*6 + common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain, & + ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift, & + mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,mode65, & + mycall,mygrid,hiscall,hisgrid,datetime + common/tracer/ limtrace,lu + data neme0/-99/,mcall3b/1/ + save + + call timer('decode0 ',0) + + if(newdat.ne.0) then + nz=52*96000 + hist=0 + do i=1,nz + j1=min(abs(dd(1,i)),32768.0) + hist(j1)=hist(j1)+1 + j2=min(abs(dd(2,i)),32768.0) + hist(j2)=hist(j2)+1 + j3=min(abs(dd(3,i)),32768.0) + hist(j3)=hist(j3)+1 + j4=min(abs(dd(4,i)),32768.0) + hist(j4)=hist(j4)+1 + enddo + m=0 + do i=0,32768 + m=m+hist(i) + if(m.ge.2*nz) go to 10 + enddo +10 rmsdd=1.5*i + endif + nhsym=279 + ndphi=0 + if(iand(nrxlog,8).ne.0) ndphi=1 + + if(mycall.ne.mycall0 .or. hiscall.ne.hiscall0 .or. & + hisgrid.ne.hisgrid0 .or. mcall3.ne.0 .or. neme.ne.neme0) mcall3b=1 + + mycall0=mycall + hiscall0=hiscall + hisgrid0=hisgrid + neme0=neme + + call timer('map65a ',0) + call map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & + mousedf,mousefqso,nagain,ndecdone,ndiskdat,nfshift,ndphi, & + nfcal,nkeep,mcall3b,nsave,nxant,rmsdd,mycall,mygrid, & + neme,ndepth,hiscall,hisgrid,nhsym,nfsample,nxpol,mode65) + + call timer('map65a ',1) + call timer('decode0 ',1) + if(nstandalone.eq.0) call timer('decode0 ',101) + + return +end subroutine decode0 diff --git a/libm65/decode1a.f b/libm65/decode1a.f new file mode 100644 index 000000000..384e4d262 --- /dev/null +++ b/libm65/decode1a.f @@ -0,0 +1,149 @@ + subroutine decode1a(dd,newdat,f0,nflip,mode65,nfsample,xpol, + + mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi, + + nutc,nkhz,ndf,ipol,sync2,a,dt,pol,nkv,nhist,qual,decoded) + +! Apply AFC corrections to a candidate JT65 signal, then decode it. + + parameter (NMAX=60*96000) !Samples per 60 s + real*4 dd(4,NMAX) !92 MB: raw data from Linrad timf2 + complex cx(NMAX/64), cy(NMAX/64) !Data at 1378.125 samples/s + complex c5x(NMAX/256),c5y(NMAX/256),c5tmp(NMAX/256) !Data at 344.53125 Hz + complex c5a(512) + complex z + real s2(66,126) + real s3(64,63),sy(63) + real a(5) + logical first,xpol + character decoded*22 + character mycall*12,hiscall*12,hisgrid*6 + data first/.true./,jjjmin/1000/,jjjmax/-1000/ + data nutc0/-999/,nkhz0/-999/ + save + +! Mix sync tone to baseband, low-pass filter, downsample to 1378.125 Hz + dt00=dt + call timer('filbig ',0) + call filbig(dd,NMAX,f0,newdat,nfsample,xpol,cx,cy,n5) +! NB: cx, cy have sample rate 96000*77125/5376000 = 1378.125 Hz + call timer('filbig ',1) + joff=0 + sqa=0. + sqb=0. + do i=1,n5 + sqa=sqa + real(cx(i))**2 + aimag(cx(i))**2 + sqb=sqb + real(cy(i))**2 + aimag(cy(i))**2 + enddo + sqa=sqa/n5 + sqb=sqb/n5 + +! Find best DF, f1, f2, DT, and pol. Start by downsampling to 344.53125 Hz + z=cmplx(cos(dphi),sin(dphi)) + cy(:n5)=z*cy(:n5) !Adjust for cable length difference + call timer('fil6521 ',0) + call fil6521(cx,n5,c5x,n6) + call fil6521(cy,n5,c5y,n6) + call timer('fil6521 ',1) + +! Add some zeros at start of c5 arrays -- empirical fix for negative DT's +! NB: might be better to add zeros to cx and cy, rather than here. +! Q: is the DT search range big enough? + + nadd=200 + c5tmp(1:nadd)=0. + c5tmp(1+nadd:n6+nadd)=c5x(1:n6) + c5x(1:n6+nadd)=c5tmp(1:n6+nadd) + c5tmp(1+nadd:n6+nadd)=c5y(1:n6) + c5y(1:n6+nadd)=c5tmp(1:n6+nadd) + n6=n6+nadd + + fsample=1378.125/4. + a(5)=dt00 + i0=nint((a(5)+0.5)*fsample) - 2 + 200 + if(i0.lt.1) then + write(13,*) 'i0 too small in decode1a:',i0,f0 + flush(13) + i0=1 + endif + nz=n6+1-i0 + +! We're looking only at sync tone here... so why not downsample by another +! factor of 1/8, say? Should be a significant execution speed-up. + call timer('afc65b ',0) +! Best fit for DF, f1, f2, pol + call afc65b(c5x(i0),c5y(i0),nz,fsample,nflip,ipol,xpol,a, + + ccfbest,dtbest) + call timer('afc65b ',1) + + pol=a(4)/57.2957795 + aa=cos(pol) + bb=sin(pol) + sq0=aa*aa*sqa + bb*bb*sqb + sync2=3.7*ccfbest/sq0 + +! Apply AFC corrections to the time-domain signal +! Now we are back to using the 1378.125 Hz sample rate, enough to +! accommodate the full JT65C bandwidth. + + call timer('twkfreq ',0) + call twkfreq(cx,cy,n5,a) + call timer('twkfreq ',1) + +! Compute spectrum at best polarization for each half symbol. +! Adding or subtracting a small number (e.g., 5) to j may make it decode.\ +! NB: might want to try computing full-symbol spectra (nfft=512, even for +! submodes B and C). + + nsym=126 + nfft=512/mode65 + j=(dt00+dtbest+2.685)*1378.125 + joff + if(j.lt.0) j=0 + + call timer('sh_ffts ',0) + +! Perhaps should try full-symbol-length FFTs even in B, C sub-modes? +! (Tried this, found no significant difference in decodes.) + + do k=1,nsym + do n=1,mode65 + do i=1,nfft + j=j+1 + c5a(i)=aa*cx(j) + bb*cy(j) + enddo + call four2a(c5a,nfft,1,1,1) + if(n.eq.1) then + do i=1,66 + s2(i,k)=real(c5a(i))**2 + aimag(c5a(i))**2 + enddo + else + do i=1,66 + s2(i,k)=s2(i,k) + real(c5a(i))**2 + aimag(c5a(i))**2 + enddo + endif + enddo + enddo + + call timer('sh_ffts ',1) + + flip=nflip + call timer('dec65b ',0) + call decode65b(s2,flip,mycall,hiscall,hisgrid,mode65,neme,ndepth, + + nqd,nkv,nhist,qual,decoded,s3,sy) + dt=dt00 + dtbest + call timer('dec65b ',1) + + if(nqd.eq.1 .and. nkv.eq.0) then + if(nutc.ne.nutc0) syncbest=0. + if(sync2.gt.syncbest) then + if(nutc.eq.nutc0) nsave=nsave-1 + if(nkhz.ne.nkhz0) nsave=0 + nkhz0=nkhz + nsave=min(32,nsave+1) + npol=nint(57.296*pol) + call s3avg(nsave,mode65,nutc,ndf,dt+0.8,npol,s3,nkv,decoded) + syncbest=sync2 + endif + nutc0=nutc + endif + + return + end diff --git a/decode65b.f b/libm65/decode65b.f similarity index 65% rename from decode65b.f rename to libm65/decode65b.f index d673cc5b6..b371069f2 100644 --- a/decode65b.f +++ b/libm65/decode65b.f @@ -1,30 +1,30 @@ - subroutine decode65b(s2,flip,mycall,hiscall,hisgrid,neme,ndepth, - + nqd,nkv,nhist,qual,decoded) + subroutine decode65b(s2,flip,mycall,hiscall,hisgrid,mode65, + + neme,ndepth,nqd,nkv,nhist,qual,decoded,s3,sy) - real s2(256,126) - real s3(64,63) + real s2(66,126) + real s3(64,63),sy(63) logical first,ltext character decoded*22,deepmsg*22 character mycall*12,hiscall*12,hisgrid*6 -! include 'avecom.h' - include 'prcom.h' + common/prcom/pr(126),mdat(126),mref(126,2),mdat2(126),mref2(126,2) data first/.true./ save if(first) call setup65 first=.false. - call setup65 do j=1,63 k=mdat(j) !Points to data symbol if(flip.lt.0.0) k=mdat2(j) do i=1,64 - s3(i,j)=s2(i+2,k) !### Check the "i+2" ### + s3(i,j)=s2(i+2,k) enddo + k=mdat2(j) !Points to data symbol + if(flip.lt.0.0) k=mdat(j) + sy(j)=s2(1,k) enddo - mode65=2 - nadd=mode65 + nadd=mode65 call extract(s3,nadd,ncount,nhist,decoded,ltext) !Extract the message C Suppress "birdie messages" and other garbage decodes: if(decoded(1:7).eq.'000AAA ') ncount=-1 @@ -37,22 +37,12 @@ C Suppress "birdie messages" and other garbage decodes: endif qual=0. - if(ndepth.ge.1 .and. (nqd.eq.1 .or. flip.eq.1.0)) then call deep65(s3,mode65,neme,flip,mycall,hiscall, + hisgrid,deepmsg,qual) if(nqd.ne.1 .and. qual.lt.10.0) qual=0.0 + if(ndepth.lt.2 .and. qual.lt.6.0) qual=0.0 endif - -C Save symbol spectra for possible decoding of average. -! do j=1,63 -! k=mdat(j) -! if(flip.lt.0.0) k=mdat2(j) -! call move(s2(8,k),ppsave(1,j,nsave),64) -! enddo - -! endif - if(nkv.eq.0 .and. qual.ge.1.0) decoded=deepmsg return diff --git a/decode_rs.c b/libm65/decode_rs.c similarity index 96% rename from decode_rs.c rename to libm65/decode_rs.c index aecc47faf..c00a6648d 100644 --- a/decode_rs.c +++ b/libm65/decode_rs.c @@ -1,263 +1,263 @@ -/* Reed-Solomon decoder - * Copyright 2002 Phil Karn, KA9Q - * May be used under the terms of the GNU General Public License (GPL) - */ - -#ifdef DEBUG -#include -#endif - -#include - -#define NULL ((void *)0) -#define min(a,b) ((a) < (b) ? (a) : (b)) - -#ifdef FIXED -#include "fixed.h" -#elif defined(BIGSYM) -#include "int.h" -#else -#include "char.h" -#endif - -int DECODE_RS( -#ifdef FIXED -DTYPE *data, int *eras_pos, int no_eras,int pad){ -#else -void *p,DTYPE *data, int *eras_pos, int no_eras){ - struct rs *rs = (struct rs *)p; -#endif - int deg_lambda, el, deg_omega; - int i, j, r,k; - DTYPE u,q,tmp,num1,num2,den,discr_r; - DTYPE lambda[NROOTS+1], s[NROOTS]; /* Err+Eras Locator poly - * and syndrome poly */ - DTYPE b[NROOTS+1], t[NROOTS+1], omega[NROOTS+1]; - DTYPE root[NROOTS], reg[NROOTS+1], loc[NROOTS]; - int syn_error, count; - -#ifdef FIXED - /* Check pad parameter for validity */ - if(pad < 0 || pad >= NN) - return -1; -#endif - - /* form the syndromes; i.e., evaluate data(x) at roots of g(x) */ - for(i=0;i 0) { - /* Init lambda to be the erasure locator polynomial */ - lambda[1] = ALPHA_TO[MODNN(PRIM*(NN-1-eras_pos[0]))]; - for (i = 1; i < no_eras; i++) { - u = MODNN(PRIM*(NN-1-eras_pos[i])); - for (j = i+1; j > 0; j--) { - tmp = INDEX_OF[lambda[j - 1]]; - if(tmp != A0) - lambda[j] ^= ALPHA_TO[MODNN(u + tmp)]; - } - } - -#if DEBUG >= 1 - /* Test code that verifies the erasure locator polynomial just constructed - Needed only for decoder debugging. */ - - /* find roots of the erasure location polynomial */ - for(i=1;i<=no_eras;i++) - reg[i] = INDEX_OF[lambda[i]]; - - count = 0; - for (i = 1,k=IPRIM-1; i <= NN; i++,k = MODNN(k+IPRIM)) { - q = 1; - for (j = 1; j <= no_eras; j++) - if (reg[j] != A0) { - reg[j] = MODNN(reg[j] + j); - q ^= ALPHA_TO[reg[j]]; - } - if (q != 0) - continue; - /* store root and error location number indices */ - root[count] = i; - loc[count] = k; - count++; - } - if (count != no_eras) { - printf("count = %d no_eras = %d\n lambda(x) is WRONG\n",count,no_eras); - count = -1; - goto finish; - } -#if DEBUG >= 2 - printf("\n Erasure positions as determined by roots of Eras Loc Poly:\n"); - for (i = 0; i < count; i++) - printf("%d ", loc[i]); - printf("\n"); -#endif -#endif - } - for(i=0;i 0; j--){ - if (reg[j] != A0) { - reg[j] = MODNN(reg[j] + j); - q ^= ALPHA_TO[reg[j]]; - } - } - if (q != 0) - continue; /* Not a root */ - /* store root (index-form) and error location number */ -#if DEBUG>=2 - printf("count %d root %d loc %d\n",count,i,k); -#endif - root[count] = i; - loc[count] = k; - /* If we've already found max possible roots, - * abort the search to save time - */ - if(++count == deg_lambda) - break; - } - if (deg_lambda != count) { - /* - * deg(lambda) unequal to number of roots => uncorrectable - * error detected - */ - count = -1; - goto finish; - } - /* - * Compute err+eras evaluator poly omega(x) = s(x)*lambda(x) (modulo - * x**NROOTS). in index form. Also find deg(omega). - */ - deg_omega = deg_lambda-1; - for (i = 0; i <= deg_omega;i++){ - tmp = 0; - for(j=i;j >= 0; j--){ - if ((s[i - j] != A0) && (lambda[j] != A0)) - tmp ^= ALPHA_TO[MODNN(s[i - j] + lambda[j])]; - } - omega[i] = INDEX_OF[tmp]; - } - - /* - * Compute error values in poly-form. num1 = omega(inv(X(l))), num2 = - * inv(X(l))**(FCR-1) and den = lambda_pr(inv(X(l))) all in poly-form - */ - for (j = count-1; j >=0; j--) { - num1 = 0; - for (i = deg_omega; i >= 0; i--) { - if (omega[i] != A0) - num1 ^= ALPHA_TO[MODNN(omega[i] + i * root[j])]; - } - num2 = ALPHA_TO[MODNN(root[j] * (FCR - 1) + NN)]; - den = 0; - - /* lambda[i+1] for i even is the formal derivative lambda_pr of lambda[i] */ - for (i = min(deg_lambda,NROOTS-1) & ~1; i >= 0; i -=2) { - if(lambda[i+1] != A0) - den ^= ALPHA_TO[MODNN(lambda[i+1] + i * root[j])]; - } -#if DEBUG >= 1 - if (den == 0) { - printf("\n ERROR: denominator = 0\n"); - count = -1; - goto finish; - } -#endif - /* Apply error to data */ - if (num1 != 0 && loc[j] >= PAD) { - data[loc[j]-PAD] ^= ALPHA_TO[MODNN(INDEX_OF[num1] + INDEX_OF[num2] + NN - INDEX_OF[den])]; - } - } - finish: - if(eras_pos != NULL){ - for(i=0;i +#endif + +#include + +#define NULL ((void *)0) +#define min(a,b) ((a) < (b) ? (a) : (b)) + +#ifdef FIXED +#include "fixed.h" +#elif defined(BIGSYM) +#include "int.h" +#else +#include "char.h" +#endif + +int DECODE_RS( +#ifdef FIXED +DTYPE *data, int *eras_pos, int no_eras,int pad){ +#else +void *p,DTYPE *data, int *eras_pos, int no_eras){ + struct rs *rs = (struct rs *)p; +#endif + int deg_lambda, el, deg_omega; + int i, j, r,k; + DTYPE u,q,tmp,num1,num2,den,discr_r; + DTYPE lambda[NROOTS+1], s[NROOTS]; /* Err+Eras Locator poly + * and syndrome poly */ + DTYPE b[NROOTS+1], t[NROOTS+1], omega[NROOTS+1]; + DTYPE root[NROOTS], reg[NROOTS+1], loc[NROOTS]; + int syn_error, count; + +#ifdef FIXED + /* Check pad parameter for validity */ + if(pad < 0 || pad >= NN) + return -1; +#endif + + /* form the syndromes; i.e., evaluate data(x) at roots of g(x) */ + for(i=0;i 0) { + /* Init lambda to be the erasure locator polynomial */ + lambda[1] = ALPHA_TO[MODNN(PRIM*(NN-1-eras_pos[0]))]; + for (i = 1; i < no_eras; i++) { + u = MODNN(PRIM*(NN-1-eras_pos[i])); + for (j = i+1; j > 0; j--) { + tmp = INDEX_OF[lambda[j - 1]]; + if(tmp != A0) + lambda[j] ^= ALPHA_TO[MODNN(u + tmp)]; + } + } + +#if DEBUG >= 1 + /* Test code that verifies the erasure locator polynomial just constructed + Needed only for decoder debugging. */ + + /* find roots of the erasure location polynomial */ + for(i=1;i<=no_eras;i++) + reg[i] = INDEX_OF[lambda[i]]; + + count = 0; + for (i = 1,k=IPRIM-1; i <= NN; i++,k = MODNN(k+IPRIM)) { + q = 1; + for (j = 1; j <= no_eras; j++) + if (reg[j] != A0) { + reg[j] = MODNN(reg[j] + j); + q ^= ALPHA_TO[reg[j]]; + } + if (q != 0) + continue; + /* store root and error location number indices */ + root[count] = i; + loc[count] = k; + count++; + } + if (count != no_eras) { + printf("count = %d no_eras = %d\n lambda(x) is WRONG\n",count,no_eras); + count = -1; + goto finish; + } +#if DEBUG >= 2 + printf("\n Erasure positions as determined by roots of Eras Loc Poly:\n"); + for (i = 0; i < count; i++) + printf("%d ", loc[i]); + printf("\n"); +#endif +#endif + } + for(i=0;i 0; j--){ + if (reg[j] != A0) { + reg[j] = MODNN(reg[j] + j); + q ^= ALPHA_TO[reg[j]]; + } + } + if (q != 0) + continue; /* Not a root */ + /* store root (index-form) and error location number */ +#if DEBUG>=2 + printf("count %d root %d loc %d\n",count,i,k); +#endif + root[count] = i; + loc[count] = k; + /* If we've already found max possible roots, + * abort the search to save time + */ + if(++count == deg_lambda) + break; + } + if (deg_lambda != count) { + /* + * deg(lambda) unequal to number of roots => uncorrectable + * error detected + */ + count = -1; + goto finish; + } + /* + * Compute err+eras evaluator poly omega(x) = s(x)*lambda(x) (modulo + * x**NROOTS). in index form. Also find deg(omega). + */ + deg_omega = deg_lambda-1; + for (i = 0; i <= deg_omega;i++){ + tmp = 0; + for(j=i;j >= 0; j--){ + if ((s[i - j] != A0) && (lambda[j] != A0)) + tmp ^= ALPHA_TO[MODNN(s[i - j] + lambda[j])]; + } + omega[i] = INDEX_OF[tmp]; + } + + /* + * Compute error values in poly-form. num1 = omega(inv(X(l))), num2 = + * inv(X(l))**(FCR-1) and den = lambda_pr(inv(X(l))) all in poly-form + */ + for (j = count-1; j >=0; j--) { + num1 = 0; + for (i = deg_omega; i >= 0; i--) { + if (omega[i] != A0) + num1 ^= ALPHA_TO[MODNN(omega[i] + i * root[j])]; + } + num2 = ALPHA_TO[MODNN(root[j] * (FCR - 1) + NN)]; + den = 0; + + /* lambda[i+1] for i even is the formal derivative lambda_pr of lambda[i] */ + for (i = min(deg_lambda,NROOTS-1) & ~1; i >= 0; i -=2) { + if(lambda[i+1] != A0) + den ^= ALPHA_TO[MODNN(lambda[i+1] + i * root[j])]; + } +#if DEBUG >= 1 + if (den == 0) { + printf("\n ERROR: denominator = 0\n"); + count = -1; + goto finish; + } +#endif + /* Apply error to data */ + if (num1 != 0 && loc[j] >= PAD) { + data[loc[j]-PAD] ^= ALPHA_TO[MODNN(INDEX_OF[num1] + INDEX_OF[num2] + NN - INDEX_OF[den])]; + } + } + finish: + if(eras_pos != NULL){ + for(i=0;i0 means compound mycall + j4=index(callsign,'/') ! j4>0 means compound hiscall + callgrid(icall)=callsign(1:j2) + + mz=1 +! Allow MyCall + HisCall + rpt (?) + if(n.eq.1 .and. j3.lt.1 .and. j4.lt.1 .and. & + flip.gt.0.0 .and. callsign(1:6).ne.' ') mz=MAXRPT+1 + do m=1,mz + if(m.gt.1) grid=rpt(m-1) + if(j3.lt.1 .and.j4.lt.1) callgrid(icall)=callsign(1:j2)//' '//grid + message=mycall(1:j1)//' '//callgrid(icall) + k=k+1 + testmsg(k)=message + call encode65(message,ncode(1,k)) + +! Insert CQ message + if(j4.lt.1) callgrid(icall)=callsign(1:j2)//' '//grid + message='CQ '//callgrid(icall) + k=k+1 + testmsg(k)=message + call encode65(message,ncode(1,k)) + enddo +10 continue + enddo + +20 continue + ntot=k + call timer('deep65a ',1) + +30 continue + call timer('deep65b ',0) + ref0=0. + do j=1,63 + ref0=ref0 + s3(mrs(j),j) + enddo + + p1=-1.e30 + p2=-1.e30 + do k=1,ntot + pp(k)=0. +! Test all messages if flip=+1; skip the CQ messages if flip=-1. + if(flip.gt.0.0 .or. testmsg(k)(1:3).ne.'CQ ') then + sum=0. + ref=ref0 + do j=1,63 + i=ncode(j,k)+1 + sum=sum + s3(i,j) + if(i.eq.mrs(j)) ref=ref - s3(i,j) + s3(mrs2(j),j) + enddo + p=sum/ref + pp(k)=p + if(p.gt.p1) then + p1=p + ip1=k + endif + endif + enddo + + do i=1,ntot + if(pp(i).gt.p2 .and. pp(i).ne.p1) p2=pp(i) + enddo + +! ### DO NOT REMOVE ### + rewind 77 + write(77,*) p1,p2 +! ### Works OK without it (in both Windows and Linux) if compiled +! ### without optimization. However, in Windows this is a colossal +! ### pain because of the way F2PY wants to run the compile step. + + if(mode65.eq.1) bias=max(1.12*p2,0.335) + if(mode65.eq.2) bias=max(1.08*p2,0.405) + if(mode65.ge.4) bias=max(1.04*p2,0.505) + + if(p2.eq.p1 .and. p1.ne.-1.e30) stop 'Error in deep65' + qual=100.0*(p1-bias) + + decoded=' ' + c=' ' + + if(qual.gt.1.0) then + if(qual.lt.6.0) c='?' + decoded=testmsg(ip1) + else + qual=0. + endif + decoded(22:22)=c + +! Make sure everything is upper case. + do i=1,22 + if(decoded(i:i).ge.'a' .and. decoded(i:i).le.'z') & + decoded(i:i)=char(ichar(decoded(i:i))-32) + enddo + call timer('deep65b ',1) + + return +end subroutine deep65 diff --git a/deg2grid.f b/libm65/deg2grid.f similarity index 100% rename from deg2grid.f rename to libm65/deg2grid.f diff --git a/demod64a.f b/libm65/demod64a.f similarity index 78% rename from demod64a.f rename to libm65/demod64a.f index cf057a011..b62037c09 100644 --- a/demod64a.f +++ b/libm65/demod64a.f @@ -1,4 +1,4 @@ - subroutine demod64a(signal,nadd,mrsym,mrprob, + subroutine demod64a(s3,nadd,mrsym,mrprob, + mr2sym,mr2prob,ntest,nlow) C Demodulate the 64-bin spectra for each of 63 symbols in a frame. @@ -11,7 +11,7 @@ C mrprob probability that mrsym was the transmitted value C mr2prob probability that mr2sym was the transmitted value implicit real*8 (a-h,o-z) - real*4 signal(64,63) + real*4 s3(64,63) real*8 fs(64) integer mrsym(63),mrprob(63),mr2sym(63),mr2prob(63) common/mrscom/ mrs(63),mrs2(63) @@ -23,29 +23,31 @@ C Compute average spectral value sum=0. do j=1,63 do i=1,64 - sum=sum+signal(i,j) + sum=sum+s3(i,j) enddo enddo ave=sum/(64.*63.) + i1=1 !Silence warning + i2=1 C Compute probabilities for most reliable symbol values do j=1,63 s1=-1.e30 fsum=0. do i=1,64 - x=min(afac*signal(i,j)/ave,50.d0) + x=min(afac*s3(i,j)/ave,50.d0) fs(i)=exp(x) fsum=fsum+fs(i) - if(signal(i,j).gt.s1) then - s1=signal(i,j) + if(s3(i,j).gt.s1) then + s1=s3(i,j) i1=i !Most reliable endif enddo s2=-1.e30 do i=1,64 - if(i.ne.i1 .and. signal(i,j).gt.s2) then - s2=signal(i,j) + if(i.ne.i1 .and. s3(i,j).gt.s2) then + s2=s3(i,j) i2=i !Second most reliable endif enddo diff --git a/display.f90 b/libm65/display.f90 similarity index 70% rename from display.f90 rename to libm65/display.f90 index 39935e495..6925373aa 100644 --- a/display.f90 +++ b/libm65/display.f90 @@ -1,174 +1,169 @@ -subroutine display(nkeep) - -#ifdef CVF - use dfport -#endif - - parameter (MAXLINES=500,MX=500) - integer indx(MAXLINES),indx2(MX) - character*81 line(MAXLINES),line2(MX),line3(MAXLINES) - character out*50,cfreq0*3 - character*6 callsign,callsign0 - character*12 freqcall(100) - character*40 bm2 - real freqkHz(MAXLINES) - integer utc(MAXLINES),utc2(MX),utcz - real*8 f0 - - call cs_lock('display') - ftol=0.02 - rewind 26 - - do i=1,MAXLINES - read(26,1010,end=10) line(i) -1010 format(a80) - read(line(i),1020) f0,ndf,nh,nm -1020 format(f7.3,i5,26x,i3,i2) - utc(i)=60*nh + nm - freqkHz(i)=1000.d0*(f0-144.d0) + 0.001d0*ndf - enddo - -10 nz=i-1 - utcz=utc(nz) - nz=nz-1 - if(nz.lt.1) go to 999 - nquad=max(nkeep/4,3) - do i=1,nz - nage=utcz-utc(i) - if(nage.lt.0) nage=nage+1440 - iage=(nage/nquad) + 1 - if(nage.le.1) iage=0 - write(line(i)(78:81),1021) iage -1021 format(i4) - enddo - - nage=utcz-utc(1) - if(nage.lt.0) nage=nage+1440 - if(nage.gt.nkeep) then - do i=1,nz - nage=utcz-utc(i) - if(nage.lt.0) nage=nage+1440 - if(nage.le.nkeep) go to 20 - enddo -20 i0=i - nz=nz-i0+1 - rewind 26 - if(nz.lt.1) go to 999 - do i=1,nz - j=i+i0-1 - line(i)=line(j) - utc(i)=utc(j) - freqkHz(i)=freqkHz(j) - write(26,1010) line(i) - enddo - endif - - call flushqqq(26) - call indexx(nz,freqkHz,indx) - - nstart=1 - k3=0 - k=1 - m=indx(1) - if(m.lt.1 .or. m.gt.MAXLINES) then - print*,'Error in display.F90: ',nz,m - m=1 - endif - line2(1)=line(m) - utc2(1)=utc(m) - do i=2,nz - j0=indx(i-1) - j=indx(i) - if(freqkHz(j)-freqkHz(j0).gt.ftol) then - if(nstart.eq.0) then - k=k+1 - line2(k)="" - utc2(k)=-1 - endif - kz=k - if(nstart.eq.1) then - call indexx(kz,utc2,indx2) - k3=0 - do k=1,kz - k3=min(k3+1,500) - line3(k3)=line2(indx2(k)) - enddo - nstart=0 - else - call indexx(kz,utc2,indx2) - do k=1,kz - k3=min(k3+1,500) - line3(k3)=line2(indx2(k)) - enddo - endif - k=0 - endif - if(i.eq.nz) then - k=k+1 - line2(k)="" - utc2(k)=-1 - endif - k=k+1 - line2(k)=line(j) - utc2(k)=utc(j) - j0=j - enddo - kz=k - call indexx(kz,utc2,indx2) - do k=1,kz - k3=k3+1 - line3(k3)=line2(indx2(k)) - enddo - - rewind 19 - rewind 20 - cfreq0=' ' - nc=0 - callsign0=' ' - do k=1,k3 - out=line3(k)(5:12)//line3(k)(28:31)//line3(k)(39:43)// & - line3(k)(35:38)//line3(k)(44:67)//line3(k)(77:81) - if(out(1:3).ne.' ') then - if(out(1:3).eq.cfreq0) then - out(1:3)=' ' - else - cfreq0=out(1:3) - endif - write(19,1030) out -1030 format(a50) - i1=index(out(24:),' ') - callsign=out(i1+24:) - i2=index(callsign,' ') - if(i2.gt.1) callsign(i2:)=' ' - if(callsign.ne.' ' .and. callsign.ne.callsign0) then - len=i2-1 - if(len.lt.0) len=6 - if(len.ge.4) then !Omit short "callsigns" - nc=nc+1 - freqcall(nc)=cfreq0//' '//callsign//line3(k)(80:81) - callsign0=callsign - endif - endif - if(callsign.ne.' ' .and. callsign.eq.callsign0) then - freqcall(nc)=cfreq0//' '//callsign//line3(k)(80:81) - endif - endif - enddo - call flushqqq(19) - nc=nc+1 - freqcall(nc)=' ' - nc=nc+1 - freqcall(nc)=' ' - freqcall(nc+1)=' ' - freqcall(nc+2)=' ' - iz=(nc+2)/3 - do i=1,iz - bm2=freqcall(i)//' '//freqcall(i+iz)//' '//freqcall(i+2*iz) - write(20,1040) bm2 -1040 format(a40) - enddo - call flushqqq(20) -999 continue - call cs_unlock - return -end subroutine display +subroutine display(nkeep,ftol) + + parameter (MAXLINES=400,MX=400) + integer indx(MAXLINES),indx2(MX) + character*81 line(MAXLINES),line2(MX),line3(MAXLINES) + character out*50,cfreq0*3,cqlive*52 + character*6 callsign,callsign0 + character*12 freqcall(100) + real freqkHz(MAXLINES) + integer utc(MAXLINES),utc2(MX),utcz + real*8 f0 + + rewind 26 + + do i=1,MAXLINES + read(26,1010,end=10) line(i) +1010 format(a80) + read(line(i),1020) f0,ndf,nh,nm +1020 format(f8.3,i5,25x,i3,i2) + utc(i)=60*nh + nm + freqkHz(i)=1000.d0*(f0-144.d0) + 0.001d0*ndf + enddo + +10 nz=i-1 + utcz=utc(nz) + nz=nz-1 + if(nz.lt.1) go to 999 + nquad=max(nkeep/4,3) + do i=1,nz + nage=utcz-utc(i) + if(nage.lt.0) nage=nage+1440 + iage=nage/nquad + write(line(i)(80:81),1021) iage +1021 format(i2) + enddo + + nage=utcz-utc(1) + if(nage.lt.0) nage=nage+1440 + if(nage.gt.nkeep) then + do i=1,nz + nage=utcz-utc(i) + if(nage.lt.0) nage=nage+1440 + if(nage.le.nkeep) go to 20 + enddo +20 i0=i + nz=nz-i0+1 + rewind 26 + if(nz.lt.1) go to 999 + do i=1,nz + j=i+i0-1 + line(i)=line(j) + utc(i)=utc(j) + freqkHz(i)=freqkHz(j) + write(26,1010) line(i) + enddo + endif + + call flush(26) + call indexx(nz,freqkHz,indx) + + nstart=1 + k3=0 + k=1 + m=indx(1) + if(m.lt.1 .or. m.gt.MAXLINES) then + print*,'Error in display.f90: ',nz,m + m=1 + endif + line2(1)=line(m) + utc2(1)=utc(m) + do i=2,nz + j0=indx(i-1) + j=indx(i) + if(freqkHz(j)-freqkHz(j0).gt.2.0*ftol) then + if(nstart.eq.0) then + k=k+1 + line2(k)="" + utc2(k)=-1 + endif + kz=k + if(nstart.eq.1) then + call indexx(kz,utc2,indx2) + k3=0 + do k=1,kz + k3=min(k3+1,400) + line3(k3)=line2(indx2(k)) + enddo + nstart=0 + else + call indexx(kz,utc2,indx2) + do k=1,kz + k3=min(k3+1,400) + line3(k3)=line2(indx2(k)) + enddo + endif + k=0 + endif + if(i.eq.nz) then + k=k+1 + line2(k)="" + utc2(k)=-1 + endif + k=k+1 + line2(k)=line(j) + utc2(k)=utc(j) + j0=j + enddo + kz=k + call indexx(kz,utc2,indx2) + do k=1,kz + k3=min(k3+1,400) + line3(k3)=line2(indx2(k)) + enddo + + rewind 19 + rewind 20 + cfreq0=' ' + nc=0 + callsign0=' ' + do k=1,k3 + out=line3(k)(6:13)//line3(k)(28:31)//line3(k)(39:43)// & + line3(k)(35:38)//line3(k)(44:67)//line3(k)(77:81) + if(out(1:3).ne.' ') then + cfreq0=out(1:3) + if(iw.lt.MAXLINES-1) iw=iw+1 + cqlive=line3(k)(6:13)//line3(k)(28:31)//line3(k)(39:43)// & + line3(k)(23:27)//line3(k)(35:38)//line3(k)(44:67)// & + line3(k)(80:81) + if(index(cqlive,' CQ ').gt.0 .or. index(cqlive,' QRZ ').gt.0 .or. & + index(cqlive,' QRT ').gt.0 .or. index(cqlive,' CQV ').gt.0 .or. & + index(cqlive,' CQH ').gt.0) write(19,1029) cqlive +1029 format(a52) + write(*,1030) out +1030 format('@',a50) + i1=index(out(24:),' ') + callsign=out(i1+24:) + i2=index(callsign,' ') + if(i2.gt.1) callsign(i2:)=' ' + if(callsign.ne.' ' .and. callsign.ne.callsign0) then + len=i2-1 + if(len.lt.0) len=6 + if(len.ge.4) then !Omit short "callsigns" + nc=nc+1 + freqcall(nc)=cfreq0//' '//callsign//line3(k)(80:81) + callsign0=callsign + endif + endif + if(callsign.ne.' ' .and. callsign.eq.callsign0) then + freqcall(nc)=cfreq0//' '//callsign//line3(k)(80:81) + endif + endif + enddo + flush(19) + nc=nc+1 + freqcall(nc)=' ' + nc=nc+1 + freqcall(nc)=' ' + freqcall(nc+1)=' ' + freqcall(nc+2)=' ' + iz=(nc+2)/3 + + do i=1,nc + write(*,1042) freqcall(i) +1042 format('&',a12) + enddo + +999 continue + return +end subroutine display diff --git a/dot.f b/libm65/dot.f similarity index 100% rename from dot.f rename to libm65/dot.f diff --git a/libm65/dpol.f90 b/libm65/dpol.f90 new file mode 100644 index 000000000..23a55bce5 --- /dev/null +++ b/libm65/dpol.f90 @@ -0,0 +1,41 @@ +real function dpol(mygrid,hisgrid) + +! Compute spatial polartzation offset in degrees for the present +! time, between two specified grid locators. + + character*6 MyGrid,HisGrid + real lat,lon,LST + character cdate*8,ctime2*10,czone*5,fnamedate*6 + integer it(8) + data rad/57.2957795/ + + call date_and_time(cdate,ctime2,czone,it) + nyear=it(1) + month=it(2) + nday=it(3) + nh=it(5)-it(4)/60 + nm=it(6) + ns=it(7) + uth=nh + nm/60.0 + ns/3600.0 + + call grid2deg(MyGrid,lon,lat) + call MoonDop(nyear,month,nday,uth,-lon,lat,RAMoon,DecMoon, & + LST,HA,AzMoon,ElMoon,vr,dist) + xx=sin(lat/rad)*cos(ElMoon/rad) - cos(lat/rad)* & + cos(AzMoon/rad)*sin(ElMoon/rad) + yy=cos(lat/rad)*sin(AzMoon/rad) + poloffset1=rad*atan2(yy,xx) + + call grid2deg(hisGrid,lon,lat) + call MoonDop(nyear,month,nday,uth,-lon,lat,RAMoon,DecMoon, & + LST,HA,AzMoon,ElMoon,vr,dist) + xx=sin(lat/rad)*cos(ElMoon/rad) - cos(lat/rad)* & + cos(AzMoon/rad)*sin(ElMoon/rad) + yy=cos(lat/rad)*sin(AzMoon/rad) + poloffset2=rad*atan2(yy,xx) + + dpol=mod(poloffset2-poloffset1+720.0,180.0) + if(dpol.gt.90.0) dpol=dpol-180.0 + + return +end function dpol diff --git a/encode65.f b/libm65/encode65.f similarity index 100% rename from encode65.f rename to libm65/encode65.f diff --git a/encode_rs.c b/libm65/encode_rs.c similarity index 95% rename from encode_rs.c rename to libm65/encode_rs.c index 911bc36dd..acfb798fe 100644 --- a/encode_rs.c +++ b/libm65/encode_rs.c @@ -1,52 +1,52 @@ -/* Reed-Solomon encoder - * Copyright 2002, Phil Karn, KA9Q - * May be used under the terms of the GNU General Public License (GPL) - */ -#include - -#ifdef FIXED -#include "fixed.h" -#elif defined(BIGSYM) -#include "int.h" -#else -#include "char.h" -#endif - -void ENCODE_RS( -#ifdef FIXED -DTYPE *data, DTYPE *bb,int pad){ -#else -void *p,DTYPE *data, DTYPE *bb){ - struct rs *rs = (struct rs *)p; -#endif - int i, j; - DTYPE feedback; - -#ifdef FIXED - /* Check pad parameter for validity */ - if(pad < 0 || pad >= NN) - return; -#endif - - memset(bb,0,NROOTS*sizeof(DTYPE)); - - for(i=0;i + +#ifdef FIXED +#include "fixed.h" +#elif defined(BIGSYM) +#include "int.h" +#else +#include "char.h" +#endif + +void ENCODE_RS( +#ifdef FIXED +DTYPE *data, DTYPE *bb,int pad){ +#else +void *p,DTYPE *data, DTYPE *bb){ + struct rs *rs = (struct rs *)p; +#endif + int i, j; + DTYPE feedback; + +#ifdef FIXED + /* Check pad parameter for validity */ + if(pad < 0 || pad >= NN) + return; +#endif + + memset(bb,0,NROOTS*sizeof(DTYPE)); + + for(i=0;i dev_null') +#else + iret=system('kvasd -q > dev_null') +#endif +! call timer('kvasd ',1) if(iret.ne.0) then - call cs_lock('extractb') if(first) write(*,1000) iret 1000 format('Error in KV decoder, or no KV decoder present.'/ + 'Return code:',i8,'. Will use BM algorithm.') - call cs_unlock ndec=0 first=.false. go to 20 endif + read(22,rec=2) nsec2,ncount,dat4 + j=nsec2 !Silence compiler warning decoded=' ' ltext=.false. if(ncount.ge.0) then - call unpackmsg(dat4,decoded) !Unpack the user message + call unpackmsg(dat4,decoded) !Unpack the user message if(iand(dat4(10),8).ne.0) ltext=.true. + do i=2,12 + if(dat4(i).ne.dat4(1)) go to 20 + enddo + write(13,*) 'Bad decode?',nhist,nfail,ipk, + + ' ',dat4,decoded + ncount=-1 !Suppress supposedly bogus decodes + decoded=' ' endif endif 20 if(ndec.eq.0) then diff --git a/f77_wisdom.f b/libm65/f77_wisdom.f old mode 100755 new mode 100644 similarity index 100% rename from f77_wisdom.f rename to libm65/f77_wisdom.f diff --git a/fchisq.f b/libm65/fchisq.f similarity index 90% rename from fchisq.f rename to libm65/fchisq.f index f6e051ecc..190112b99 100644 --- a/fchisq.f +++ b/libm65/fchisq.f @@ -9,6 +9,7 @@ data twopi/6.283185307/a1,a2,a3/99.,99.,99./ save + call timer('fchisq ',0) baud=11025.0/4096.0 if(a(1).ne.a1 .or. a(2).ne.a2 .or. a(3).ne.a3) then a1=a(1) @@ -61,12 +62,15 @@ C Compute 1/2-symbol powers at 1/16-symbol steps. enddo ccfmax=0. + call timer('ccf2 ',0) call ccf2(ss,nout,nflip,ccf,lagpk) + call timer('ccf2 ',1) if(ccf.gt.ccfmax) then ccfmax=ccf dtmax=lagpk*dtstep endif fchisq=-ccfmax + call timer('fchisq ',1) return end diff --git a/libm65/fftw3.f b/libm65/fftw3.f new file mode 100644 index 000000000..90748b2fd --- /dev/null +++ b/libm65/fftw3.f @@ -0,0 +1,64 @@ + INTEGER FFTW_R2HC + PARAMETER (FFTW_R2HC=0) + INTEGER FFTW_HC2R + PARAMETER (FFTW_HC2R=1) + INTEGER FFTW_DHT + PARAMETER (FFTW_DHT=2) + INTEGER FFTW_REDFT00 + PARAMETER (FFTW_REDFT00=3) + INTEGER FFTW_REDFT01 + PARAMETER (FFTW_REDFT01=4) + INTEGER FFTW_REDFT10 + PARAMETER (FFTW_REDFT10=5) + INTEGER FFTW_REDFT11 + PARAMETER (FFTW_REDFT11=6) + INTEGER FFTW_RODFT00 + PARAMETER (FFTW_RODFT00=7) + INTEGER FFTW_RODFT01 + PARAMETER (FFTW_RODFT01=8) + INTEGER FFTW_RODFT10 + PARAMETER (FFTW_RODFT10=9) + INTEGER FFTW_RODFT11 + PARAMETER (FFTW_RODFT11=10) + INTEGER FFTW_FORWARD + PARAMETER (FFTW_FORWARD=-1) + INTEGER FFTW_BACKWARD + PARAMETER (FFTW_BACKWARD=+1) + INTEGER FFTW_MEASURE + PARAMETER (FFTW_MEASURE=0) + INTEGER FFTW_DESTROY_INPUT + PARAMETER (FFTW_DESTROY_INPUT=1) + INTEGER FFTW_UNALIGNED + PARAMETER (FFTW_UNALIGNED=2) + INTEGER FFTW_CONSERVE_MEMORY + PARAMETER (FFTW_CONSERVE_MEMORY=4) + INTEGER FFTW_EXHAUSTIVE + PARAMETER (FFTW_EXHAUSTIVE=8) + INTEGER FFTW_PRESERVE_INPUT + PARAMETER (FFTW_PRESERVE_INPUT=16) + INTEGER FFTW_PATIENT + PARAMETER (FFTW_PATIENT=32) + INTEGER FFTW_ESTIMATE + PARAMETER (FFTW_ESTIMATE=64) + INTEGER FFTW_ESTIMATE_PATIENT + PARAMETER (FFTW_ESTIMATE_PATIENT=128) + INTEGER FFTW_BELIEVE_PCOST + PARAMETER (FFTW_BELIEVE_PCOST=256) + INTEGER FFTW_DFT_R2HC_ICKY + PARAMETER (FFTW_DFT_R2HC_ICKY=512) + INTEGER FFTW_NONTHREADED_ICKY + PARAMETER (FFTW_NONTHREADED_ICKY=1024) + INTEGER FFTW_NO_BUFFERING + PARAMETER (FFTW_NO_BUFFERING=2048) + INTEGER FFTW_NO_INDIRECT_OP + PARAMETER (FFTW_NO_INDIRECT_OP=4096) + INTEGER FFTW_ALLOW_LARGE_GENERIC + PARAMETER (FFTW_ALLOW_LARGE_GENERIC=8192) + INTEGER FFTW_NO_RANK_SPLITS + PARAMETER (FFTW_NO_RANK_SPLITS=16384) + INTEGER FFTW_NO_VRANK_SPLITS + PARAMETER (FFTW_NO_VRANK_SPLITS=32768) + INTEGER FFTW_NO_VRECURSE + PARAMETER (FFTW_NO_VRECURSE=65536) + INTEGER FFTW_NO_SIMD + PARAMETER (FFTW_NO_SIMD=131072) diff --git a/fil6521.f b/libm65/fil6521.f similarity index 100% rename from fil6521.f rename to libm65/fil6521.f diff --git a/libm65/filbig.f b/libm65/filbig.f new file mode 100644 index 000000000..23c4b1004 --- /dev/null +++ b/libm65/filbig.f @@ -0,0 +1,134 @@ + subroutine filbig(dd,nmax,f0,newdat,nfsample,xpol,c4a,c4b,n4) + +C Filter and downsample complex data stored in array dd(4,nmax). +C Output is downsampled from 96000 Hz to 1375.125 Hz. + + parameter (MAXFFT1=5376000,MAXFFT2=77175) + real*4 dd(4,nmax) !Input data + complex ca(MAXFFT1),cb(MAXFFT1) !FFTs of input + complex c4a(MAXFFT2),c4b(MAXFFT2) !Output data + real*8 df + real halfpulse(8) !Impulse response of filter (one sided) + complex cfilt(MAXFFT2) !Filter (complex; imag = 0) + real rfilt(MAXFFT2) !Filter (real) + integer*8 plan1,plan2,plan3,plan4,plan5 + logical first,xpol + include 'fftw3.f' + equivalence (rfilt,cfilt) + data first/.true./,npatience/1/ + data halfpulse/114.97547150,36.57879257,-20.93789101, + + 5.89886379,1.59355187,-2.49138308,0.60910773,-0.04248129/ + save + + nfft1=MAXFFT1 + nfft2=MAXFFT2 + if(nfsample.eq.95238) then + nfft1=5120000 + nfft2=74088 + endif + if(nmax.lt.0) go to 900 + if(first) then + nflags=FFTW_ESTIMATE + if(npatience.eq.1) nflags=FFTW_ESTIMATE_PATIENT + if(npatience.eq.2) nflags=FFTW_MEASURE + if(npatience.eq.3) nflags=FFTW_PATIENT + if(npatience.eq.4) nflags=FFTW_EXHAUSTIVE +C Plan the FFTs just once + call timer('FFTplans ',0) + call sfftw_plan_dft_1d(plan1,nfft1,ca,ca, + + FFTW_BACKWARD,nflags) + call sfftw_plan_dft_1d(plan2,nfft1,cb,cb, + + FFTW_BACKWARD,nflags) + call sfftw_plan_dft_1d(plan3,nfft2,c4a,c4a, + + FFTW_FORWARD,nflags) + call sfftw_plan_dft_1d(plan4,nfft2,c4b,c4b, + + FFTW_FORWARD,nflags) + call sfftw_plan_dft_1d(plan5,nfft2,cfilt,cfilt, + + FFTW_BACKWARD,nflags) + call timer('FFTplans ',1) + +C Convert impulse response to filter function + do i=1,nfft2 + cfilt(i)=0. + enddo + fac=0.00625/nfft1 + cfilt(1)=fac*halfpulse(1) + do i=2,8 + cfilt(i)=fac*halfpulse(i) + cfilt(nfft2+2-i)=fac*halfpulse(i) + enddo + call timer('FFTfilt ',0) + call sfftw_execute(plan5) + call timer('FFTfilt ',1) + + base=cfilt(nfft2/2+1) + do i=1,nfft2 + rfilt(i)=real(cfilt(i))-base + enddo + + df=96000.d0/nfft1 + if(nfsample.eq.95238) df=95238.1d0/nfft1 + first=.false. + endif + +C When new data comes along, we need to compute a new "big FFT" +C If we just have a new f0, continue with the existing ca and cb. + + if(newdat.ne.0) then + nz=min(nmax,nfft1) + do i=1,nz + ca(i)=cmplx(dd(1,i),dd(2,i)) + if(xpol) cb(i)=cmplx(dd(3,i),dd(4,i)) + enddo + + if(nmax.lt.nfft1) then + do i=nmax+1,nfft1 + ca(i)=0. + if(xpol) cb(i)=0. + enddo + endif + call timer('FFTbig ',0) + call sfftw_execute(plan1) + if(xpol) call sfftw_execute(plan2) + call timer('FFTbig ',1) + newdat=0 + endif + +C NB: f0 is the frequency at which we want our filter centered. +C i0 is the bin number in ca and cb closest to f0. + + i0=nint(f0/df) + 1 + nh=nfft2/2 + do i=1,nh !Copy data into c4a and c4b, + j=i0+i-1 !and apply the filter function + if(j.ge.1 .and. j.le.nfft1) then + c4a(i)=rfilt(i)*ca(j) + if(xpol) c4b(i)=rfilt(i)*cb(j) + else + c4a(i)=0. + if(xpol) c4b(i)=0. + endif + enddo + do i=nh+1,nfft2 + j=i0+i-1-nfft2 + if(j.lt.1) j=j+nfft1 !nfft1 was nfft2 + c4a(i)=rfilt(i)*ca(j) + if(xpol) c4b(i)=rfilt(i)*cb(j) + enddo + +C Do the short reverse transform, to go back to time domain. + call timer('FFTsmall',0) + call sfftw_execute(plan3) + if(xpol) call sfftw_execute(plan4) + call timer('FFTsmall',1) + n4=min(nmax/64,nfft2) + go to 999 + + 900 call sfftw_destroy_plan(plan1) + call sfftw_destroy_plan(plan2) + call sfftw_destroy_plan(plan3) + call sfftw_destroy_plan(plan4) + call sfftw_destroy_plan(plan5) + + 999 return + end diff --git a/libm65/four2a.f90 b/libm65/four2a.f90 new file mode 100644 index 000000000..a132d7389 --- /dev/null +++ b/libm65/four2a.f90 @@ -0,0 +1,89 @@ +subroutine four2a(a,nfft,ndim,isign,iform) + +! IFORM = 1, 0 or -1, as data is +! complex, real, or the first half of a complex array. Transform +! values are returned in array DATA. They are complex, real, or +! the first half of a complex array, as IFORM = 1, -1 or 0. + +! The transform of a real array (IFORM = 0) dimensioned N(1) by N(2) +! by ... will be returned in the same array, now considered to +! be complex of dimensions N(1)/2+1 by N(2) by .... Note that if +! IFORM = 0 or -1, N(1) must be even, and enough room must be +! reserved. The missing values may be obtained by complex conjugation. + +! The reverse transformation of a half complex array dimensioned +! N(1)/2+1 by N(2) by ..., is accomplished by setting IFORM +! to -1. In the N array, N(1) must be the true N(1), not N(1)/2+1. +! The transform will be real and returned to the input array. + + parameter (NPMAX=100) + parameter (NSMALL=16384) + complex a(nfft) + complex aa(NSMALL) + integer nn(NPMAX),ns(NPMAX),nf(NPMAX),nl(NPMAX) + integer*8 plan(NPMAX) !Actually should be i*8, but no matter + data nplan/0/,npatience/1/ + include 'fftw3.f' + save plan,nplan,nn,ns,nf,nl + + if(nfft.lt.0) go to 999 + + nloc=loc(a) + do i=1,nplan + if(nfft.eq.nn(i) .and. isign.eq.ns(i) .and. & + iform.eq.nf(i) .and. nloc.eq.nl(i)) go to 10 + enddo + if(nplan.ge.NPMAX) stop 'Too many FFTW plans requested.' + nplan=nplan+1 + i=nplan + nn(i)=nfft + ns(i)=isign + nf(i)=iform + nl(i)=nloc + +! Planning: FFTW_ESTIMATE, FFTW_ESTIMATE_PATIENT, FFTW_MEASURE, +! FFTW_PATIENT, FFTW_EXHAUSTIVE + nflags=FFTW_ESTIMATE + if(npatience.eq.1) nflags=FFTW_ESTIMATE_PATIENT + if(npatience.eq.2) nflags=FFTW_MEASURE + if(npatience.eq.3) nflags=FFTW_PATIENT + if(npatience.eq.4) nflags=FFTW_EXHAUSTIVE + + if(nfft.le.NSMALL) then + jz=nfft + if(iform.eq.0) jz=nfft/2 + do j=1,jz + aa(j)=a(j) + enddo + endif + if(isign.eq.-1 .and. iform.eq.1) then + call sfftw_plan_dft_1d(plan(i),nfft,a,a,FFTW_FORWARD,nflags) + else if(isign.eq.1 .and. iform.eq.1) then + call sfftw_plan_dft_1d(plan(i),nfft,a,a,FFTW_BACKWARD,nflags) + else if(isign.eq.-1 .and. iform.eq.0) then + call sfftw_plan_dft_r2c_1d(plan(i),nfft,a,a,nflags) + else if(isign.eq.1 .and. iform.eq.-1) then + call sfftw_plan_dft_c2r_1d(plan(i),nfft,a,a,nflags) + else + stop 'Unsupported request in four2a' + endif + i=nplan + if(nfft.le.NSMALL) then + jz=nfft + if(iform.eq.0) jz=nfft/2 + do j=1,jz + a(j)=aa(j) + enddo + endif + +10 continue + call sfftw_execute(plan(i)) + return + +999 do i=1,nplan +! The test is only to silence a compiler warning: + if(ndim.ne.-999) call sfftw_destroy_plan(plan(i)) + enddo + + return +end subroutine four2a diff --git a/libm65/ftninit.f90 b/libm65/ftninit.f90 new file mode 100644 index 000000000..a94cd866e --- /dev/null +++ b/libm65/ftninit.f90 @@ -0,0 +1,63 @@ +! Fortran logical units used in WSJT6 +! +! 10 binary input data, *.tf2 files +! 11 prefixes.txt +! 12 timer.out +! 13 map65.log +! 14 +! 15 +! 16 +! 17 saved *.tf2 files +! 18 test file to be transmitted (wsjtgen.f90) +! 19 livecq.txt +! 20 +! 21 map65_rx.log +! 22 kvasd.dat +! 23 CALL3.TXT +! 24 +! 25 +! 26 tmp26.txt +! 27 +! 28 fftw_wisdom.dat +!------------------------------------------------ ftn_init +subroutine ftninit(appd) + + character*(*) appd + character cjunk*1,firstline*30 + character addpfx*8 + integer junk(256) + common/pfxcom/addpfx + + addpfx=' ' + call pfxdump(appd//'/prefixes.txt') + open(12,file=appd//'/timer.out',status='unknown',err=920) + open(13,file=appd//'/map65.log',status='unknown') + open(19,file=appd//'/livecq.txt',status='unknown') + open(21,file=appd//'/map65_rx.log',status='unknown',access='append',err=950) + open(22,file=appd//'/kvasd.dat',access='direct',recl=1024,status='unknown') + read(22,rec=2,err=12) junk + go to 18 +12 junk=0 + write(22,rec=1) junk + write(22,rec=2) junk + +18 open(26,file=appd//'/tmp26.txt',status='unknown') + +! Import FFTW wisdom, if available: + open(28,file=appd//'/fftwf_wisdom.dat',status='old',err=30) + read(28,1000,err=30,end=30) firstline +1000 format(a30) + rewind 28 + call import_wisdom_from_file(isuccess,28) + close(28) + if(isuccess.ne.0) write(13,1010) firstline +1010 format('Imported FFTW wisdom: ',a30) + +30 return + +920 write(0,*) '!Error opening timer.out' + stop +950 write(0,*) '!Error opening ALL65.TXT' + stop + +end subroutine ftninit diff --git a/libm65/ftnquit.f90 b/libm65/ftnquit.f90 new file mode 100644 index 000000000..d3a63dcbe --- /dev/null +++ b/libm65/ftnquit.f90 @@ -0,0 +1,9 @@ +subroutine ftnquit + +! Destroy the FFTW plans + call four2a(a,-1,1,1,1) + call filbig(id,-1,f0,newdat,nfsample,c4a,c4b,n4) + stop + + return +end subroutine ftnquit diff --git a/libm65/gen65.f90 b/libm65/gen65.f90 new file mode 100644 index 000000000..56e4c48bc --- /dev/null +++ b/libm65/gen65.f90 @@ -0,0 +1,93 @@ +subroutine gen65(message,mode65,samfac,nsendingsh,msgsent,iwave,nwave) + +! Encodes a JT65 message into a wavefile. +! Executes in 17 ms on opti-745. + + parameter (NMAX=60*11025) !Max length of wave file + character*22 message !Message to be generated + character*22 msgsent !Message as it will be received + character*3 cok !' ' or 'OOO' + real*8 dt,phi,f,f0,dfgen,dphi,twopi,samfac + integer*2 iwave(NMAX) !Generated wave file + integer dgen(12) + integer sent(63) + logical first + integer nprc(126) + real pr(126) + data nprc/1,0,0,1,1,0,0,0,1,1,1,1,1,1,0,1,0,1,0,0, & + 0,1,0,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1, & + 0,1,1,0,1,1,1,1,0,0,0,1,1,0,1,0,1,0,1,1, & + 0,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,1, & + 1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1, & + 0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1, & + 1,1,1,1,1,1/ + data twopi/6.283185307179586476d0/,first/.true./ + save + + if(first) then + do i=1,126 + pr(i)=2*nprc(i)-1 + enddo + first=.false. + endif + + call chkmsg(message,cok,nspecial,flip) + if(nspecial.eq.0) then + call packmsg(message,dgen) !Pack message into 72 bits + nsendingsh=0 + if(iand(dgen(10),8).ne.0) nsendingsh=-1 !Plain text flag + + call rs_encode(dgen,sent) + call interleave63(sent,1) !Apply interleaving + call graycode(sent,63,1) !Apply Gray code + nsym=126 !Symbols per transmission + nsps=4096 + else + nsym=32 + nsps=16384 + nsendingsh=1 !Flag for shorthand message + endif + if(mode65.eq.0) go to 900 + +! Set up necessary constants + dt=1.d0/(samfac*11025.d0) + f0=118*11025.d0/1024 + dfgen=mode65*11025.d0/4096.d0 + phi=0.d0 + i=0 + k=0 + do j=1,nsym + f=f0 + if(nspecial.ne.0 .and. mod(j,2).eq.0) f=f0+10*nspecial*dfgen + if(nspecial.eq.0 .and. flip*pr(j).lt.0.0) then + k=k+1 + f=f0+(sent(k)+2)*dfgen + endif + dphi=twopi*dt*f + do ii=1,nsps + phi=phi+dphi + if(phi.gt.twopi) phi=phi-twopi + xphi=phi + i=i+1 + iwave(i)=32767.0*sin(xphi) + enddo + enddo + + iwave(nsym*nsps+1:)=0 + nwave=nsym*nsps + 5512 + call unpackmsg(dgen,msgsent) + if(flip.lt.0.0) then + do i=22,1,-1 + if(msgsent(i:i).ne.' ') goto 10 + enddo +10 msgsent=msgsent(1:i)//' OOO' + endif + + if(nsendingsh.eq.1) then + if(nspecial.eq.2) msgsent='RO' + if(nspecial.eq.3) msgsent='RRR' + if(nspecial.eq.4) msgsent='73' + endif + +900 return +end subroutine gen65 diff --git a/geocentric.f b/libm65/geocentric.f similarity index 100% rename from geocentric.f rename to libm65/geocentric.f diff --git a/getdphi.f90 b/libm65/getdphi.f90 similarity index 63% rename from getdphi.f90 rename to libm65/getdphi.f90 index 3d5b32f6a..f44c2d06e 100644 --- a/getdphi.f90 +++ b/libm65/getdphi.f90 @@ -1,20 +1,18 @@ -subroutine getdphi(qphi) - - real qphi(12) - - s=0. - c=0. - do i=1,12 - th=i*30/57.2957795 - s=s+qphi(i)*sin(th) - c=c+qphi(i)*cos(th) - enddo - - dphi=57.2957795*atan2(s,c) - call cs_lock('getdphi') - write(11,1010) nint(dphi) -1010 format('Best-fit Dphi =',i4,' deg') - call cs_unlock - - return - end +subroutine getdphi(qphi) + + real qphi(12) + + s=0. + c=0. + do i=1,12 + th=i*30/57.2957795 + s=s+qphi(i)*sin(th) + c=c+qphi(i)*cos(th) + enddo + + dphi=57.2957795*atan2(s,c) + write(*,1010) nint(dphi) +1010 format('!Best-fit Dphi =',i4,' deg') + + return + end diff --git a/libm65/getpfx1.f b/libm65/getpfx1.f new file mode 100644 index 000000000..eaa86349e --- /dev/null +++ b/libm65/getpfx1.f @@ -0,0 +1,96 @@ + subroutine getpfx1(callsign,k,nv2) + + character*12 callsign0,callsign,lof,rof + character*8 c + character addpfx*8,tpfx*4,tsfx*3 + logical ispfx,issfx,invalid + common/pfxcom/addpfx + include 'pfx.f' + + callsign0=callsign + nv2=0 + iz=index(callsign,' ') - 1 + if(iz.lt.0) iz=12 + islash=index(callsign(1:iz),'/') + k=0 + c=' ' + if(islash.gt.0 .and. islash.le.(iz-4)) then +! Add-on prefix + c=callsign(1:islash-1) + callsign=callsign(islash+1:iz) + do i=1,NZ + if(pfx(i)(1:4).eq.c) then + k=i + go to 10 + endif + enddo + if(addpfx.eq.c) then + k=449 + go to 10 + endif + + else if(islash.eq.(iz-1)) then +! Add-on suffix + c=callsign(islash+1:iz) + callsign=callsign(1:islash-1) + do i=1,NZ2 + if(sfx(i).eq.c(1:1)) then + k=400+i + go to 10 + endif + enddo + endif + + 10 if(islash.ne.0 .and.k.eq.0) then +! Original JT65 would force this compound callsign to be treated as +! plain text. In JT65v2, we will encode the prefix or suffix into nc1. +! The task here is to compute the proper value of k. + lof=callsign0(:islash-1) + rof=callsign0(islash+1:) + llof=len_trim(lof) + lrof=len_trim(rof) + ispfx=(llof.gt.0 .and. llof.le.4) + issfx=(lrof.gt.0 .and. lrof.le.3) + invalid=.not.(ispfx.or.issfx) + if(ispfx.and.issfx) then + if(llof.lt.3) issfx=.false. + if(lrof.lt.3) ispfx=.false. + if(ispfx.and.issfx) then + i=ichar(callsign0(islash-1:islash-1)) + if(i.ge.ichar('0') .and. i.le.ichar('9')) then + issfx=.false. + else + ispfx=.false. + endif + endif + endif + + if(invalid) then + k=-1 + else + if(ispfx) then + tpfx=lof + k=nchar(tpfx(1:1)) + k=37*k + nchar(tpfx(2:2)) + k=37*k + nchar(tpfx(3:3)) + k=37*k + nchar(tpfx(4:4)) + nv2=1 + i=index(callsign0,'/') + callsign=callsign0(:i-1) + callsign=callsign0(i+1:) + endif + if(issfx) then + tsfx=rof + k=nchar(tsfx(1:1)) + k=37*k + nchar(tsfx(2:2)) + k=37*k + nchar(tsfx(3:3)) + nv2=2 + i=index(callsign0,'/') + callsign=callsign0(:i-1) + endif + endif + endif + + return + end + diff --git a/getpfx2.f b/libm65/getpfx2.f similarity index 91% rename from getpfx2.f rename to libm65/getpfx2.f index cbf339939..ebcdec351 100644 --- a/getpfx2.f +++ b/libm65/getpfx2.f @@ -3,7 +3,7 @@ character callsign*12 include 'pfx.f' character addpfx*8 - common/gcom4/addpfx + common/pfxcom/addpfx k=k0 if(k.gt.450) k=k-450 diff --git a/graycode.f b/libm65/graycode.f similarity index 100% rename from graycode.f rename to libm65/graycode.f diff --git a/grid2deg.f b/libm65/grid2deg.f similarity index 91% rename from grid2deg.f rename to libm65/grid2deg.f index c1667d4d7..324a15eb7 100644 --- a/grid2deg.f +++ b/libm65/grid2deg.f @@ -30,11 +30,9 @@ C and North latitude. n20d = 2*(ichar(g3)-ichar('0')) xminlong = 5*(ichar(g5)-ichar('a')+0.5) dlong = nlong - n20d - xminlong/60.0 -c print*,nlong,n20d,xminlong,dlong nlat = -90+10*(ichar(g2)-ichar('A')) + ichar(g4)-ichar('0') xminlat = 2.5*(ichar(g6)-ichar('a')+0.5) dlat = nlat + xminlat/60.0 -c print*,nlat,xminlat,dlat return end diff --git a/grid2k.f b/libm65/grid2k.f similarity index 100% rename from grid2k.f rename to libm65/grid2k.f diff --git a/igray.c b/libm65/igray.c similarity index 93% rename from igray.c rename to libm65/igray.c index 395f79712..b1d9dbaf5 100644 --- a/igray.c +++ b/libm65/igray.c @@ -1,22 +1,22 @@ -#ifdef CVF -extern int __stdcall IGRAY(int *n0, int *idir) -#else -int igray_(int *n0, int *idir) -#endif -{ - int n; - unsigned long sh; - unsigned long nn; - n=*n0; - - if(*idir>0) return (n ^ (n >> 1)); - - sh = 1; - nn = (n >> sh); - while (nn > 0) { - n ^= nn; - sh <<= 1; - nn = (n >> sh); - } - return (n); -} +#ifdef CVF +extern int __stdcall IGRAY(int *n0, int *idir) +#else +int igray_(int *n0, int *idir) +#endif +{ + int n; + unsigned long sh; + unsigned long nn; + n=*n0; + + if(*idir>0) return (n ^ (n >> 1)); + + sh = 1; + nn = (n >> sh); + while (nn > 0) { + n ^= nn; + sh <<= 1; + nn = (n >> sh); + } + return (n); +} diff --git a/indexx.f b/libm65/indexx.f similarity index 100% rename from indexx.f rename to libm65/indexx.f diff --git a/init_rs.c b/libm65/init_rs.c similarity index 96% rename from init_rs.c rename to libm65/init_rs.c index 7e1e09e5b..c335c8994 100644 --- a/init_rs.c +++ b/libm65/init_rs.c @@ -1,126 +1,126 @@ -/* Initialize a RS codec - * - * Copyright 2002 Phil Karn, KA9Q - * May be used under the terms of the GNU General Public License (GPL) - */ -#include - -#ifdef CCSDS -#include "ccsds.h" -#elif defined(BIGSYM) -#include "int.h" -#else -#include "char.h" -#endif - -#define NULL ((void *)0) - -void FREE_RS(void *p){ - struct rs *rs = (struct rs *)p; - - free(rs->alpha_to); - free(rs->index_of); - free(rs->genpoly); - free(rs); -} - -/* Initialize a Reed-Solomon codec - * symsize = symbol size, bits (1-8) - * gfpoly = Field generator polynomial coefficients - * fcr = first root of RS code generator polynomial, index form - * prim = primitive element to generate polynomial roots - * nroots = RS code generator polynomial degree (number of roots) - * pad = padding bytes at front of shortened block - */ -void *INIT_RS(int symsize,int gfpoly,int fcr,int prim, - int nroots,int pad){ - struct rs *rs; - int i, j, sr,root,iprim; - - /* Check parameter ranges */ - if(symsize < 0 || symsize > 8*sizeof(DTYPE)) - return NULL; /* Need version with ints rather than chars */ - - if(fcr < 0 || fcr >= (1<= (1<= (1<= ((1<mm = symsize; - rs->nn = (1<pad = pad; - - rs->alpha_to = (DTYPE *)malloc(sizeof(DTYPE)*(rs->nn+1)); - if(rs->alpha_to == NULL){ - free(rs); - return NULL; - } - rs->index_of = (DTYPE *)malloc(sizeof(DTYPE)*(rs->nn+1)); - if(rs->index_of == NULL){ - free(rs->alpha_to); - free(rs); - return NULL; - } - - /* Generate Galois field lookup tables */ - rs->index_of[0] = A0; /* log(zero) = -inf */ - rs->alpha_to[A0] = 0; /* alpha**-inf = 0 */ - sr = 1; - for(i=0;inn;i++){ - rs->index_of[sr] = i; - rs->alpha_to[i] = sr; - sr <<= 1; - if(sr & (1<nn; - } - if(sr != 1){ - /* field generator polynomial is not primitive! */ - free(rs->alpha_to); - free(rs->index_of); - free(rs); - return NULL; - } - - /* Form RS code generator polynomial from its roots */ - rs->genpoly = (DTYPE *)malloc(sizeof(DTYPE)*(nroots+1)); - if(rs->genpoly == NULL){ - free(rs->alpha_to); - free(rs->index_of); - free(rs); - return NULL; - } - rs->fcr = fcr; - rs->prim = prim; - rs->nroots = nroots; - - /* Find prim-th root of 1, used in decoding */ - for(iprim=1;(iprim % prim) != 0;iprim += rs->nn) - ; - rs->iprim = iprim / prim; - - rs->genpoly[0] = 1; - for (i = 0,root=fcr*prim; i < nroots; i++,root += prim) { - rs->genpoly[i+1] = 1; - - /* Multiply rs->genpoly[] by @**(root + x) */ - for (j = i; j > 0; j--){ - if (rs->genpoly[j] != 0) - rs->genpoly[j] = rs->genpoly[j-1] ^ rs->alpha_to[modnn(rs,rs->index_of[rs->genpoly[j]] + root)]; - else - rs->genpoly[j] = rs->genpoly[j-1]; - } - /* rs->genpoly[0] can never be zero */ - rs->genpoly[0] = rs->alpha_to[modnn(rs,rs->index_of[rs->genpoly[0]] + root)]; - } - /* convert rs->genpoly[] to index form for quicker encoding */ - for (i = 0; i <= nroots; i++) - rs->genpoly[i] = rs->index_of[rs->genpoly[i]]; - - return rs; -} +/* Initialize a RS codec + * + * Copyright 2002 Phil Karn, KA9Q + * May be used under the terms of the GNU General Public License (GPL) + */ +#include + +#ifdef CCSDS +#include "ccsds.h" +#elif defined(BIGSYM) +#include "int.h" +#else +#include "char.h" +#endif + +#define NULL ((void *)0) + +void FREE_RS(void *p){ + struct rs *rs = (struct rs *)p; + + free(rs->alpha_to); + free(rs->index_of); + free(rs->genpoly); + free(rs); +} + +/* Initialize a Reed-Solomon codec + * symsize = symbol size, bits (1-8) + * gfpoly = Field generator polynomial coefficients + * fcr = first root of RS code generator polynomial, index form + * prim = primitive element to generate polynomial roots + * nroots = RS code generator polynomial degree (number of roots) + * pad = padding bytes at front of shortened block + */ +void *INIT_RS(int symsize,int gfpoly,int fcr,int prim, + int nroots,int pad){ + struct rs *rs; + int i, j, sr,root,iprim; + + /* Check parameter ranges */ + if(symsize < 0 || symsize > 8*sizeof(DTYPE)) + return NULL; /* Need version with ints rather than chars */ + + if(fcr < 0 || fcr >= (1<= (1<= (1<= ((1<mm = symsize; + rs->nn = (1<pad = pad; + + rs->alpha_to = (DTYPE *)malloc(sizeof(DTYPE)*(rs->nn+1)); + if(rs->alpha_to == NULL){ + free(rs); + return NULL; + } + rs->index_of = (DTYPE *)malloc(sizeof(DTYPE)*(rs->nn+1)); + if(rs->index_of == NULL){ + free(rs->alpha_to); + free(rs); + return NULL; + } + + /* Generate Galois field lookup tables */ + rs->index_of[0] = A0; /* log(zero) = -inf */ + rs->alpha_to[A0] = 0; /* alpha**-inf = 0 */ + sr = 1; + for(i=0;inn;i++){ + rs->index_of[sr] = i; + rs->alpha_to[i] = sr; + sr <<= 1; + if(sr & (1<nn; + } + if(sr != 1){ + /* field generator polynomial is not primitive! */ + free(rs->alpha_to); + free(rs->index_of); + free(rs); + return NULL; + } + + /* Form RS code generator polynomial from its roots */ + rs->genpoly = (DTYPE *)malloc(sizeof(DTYPE)*(nroots+1)); + if(rs->genpoly == NULL){ + free(rs->alpha_to); + free(rs->index_of); + free(rs); + return NULL; + } + rs->fcr = fcr; + rs->prim = prim; + rs->nroots = nroots; + + /* Find prim-th root of 1, used in decoding */ + for(iprim=1;(iprim % prim) != 0;iprim += rs->nn) + ; + rs->iprim = iprim / prim; + + rs->genpoly[0] = 1; + for (i = 0,root=fcr*prim; i < nroots; i++,root += prim) { + rs->genpoly[i+1] = 1; + + /* Multiply rs->genpoly[] by @**(root + x) */ + for (j = i; j > 0; j--){ + if (rs->genpoly[j] != 0) + rs->genpoly[j] = rs->genpoly[j-1] ^ rs->alpha_to[modnn(rs,rs->index_of[rs->genpoly[j]] + root)]; + else + rs->genpoly[j] = rs->genpoly[j-1]; + } + /* rs->genpoly[0] can never be zero */ + rs->genpoly[0] = rs->alpha_to[modnn(rs,rs->index_of[rs->genpoly[0]] + root)]; + } + /* convert rs->genpoly[] to index form for quicker encoding */ + for (i = 0; i <= nroots; i++) + rs->genpoly[i] = rs->index_of[rs->genpoly[i]]; + + return rs; +} diff --git a/int.h b/libm65/int.h similarity index 100% rename from int.h rename to libm65/int.h diff --git a/interleave63.f b/libm65/interleave63.f similarity index 100% rename from interleave63.f rename to libm65/interleave63.f diff --git a/libm65/ipcomm.cpp b/libm65/ipcomm.cpp new file mode 100644 index 000000000..83e98ebd4 --- /dev/null +++ b/libm65/ipcomm.cpp @@ -0,0 +1,34 @@ +#include +#include +#include + +QSharedMemory mem_m65("mem_m65"); +QSystemSemaphore sem_m65("sem_m65", 1, QSystemSemaphore::Open); + +extern "C" { + bool attach_m65_(); + bool create_m65_(int nsize); + bool detach_m65_(); + bool lock_m65_(); + bool unlock_m65_(); + char* address_m65_(); + int size_m65_(); + + bool acquire_m65_(); + bool release_m65_(); + + extern struct { + char c[10]; + } m65com_; +} + +bool attach_m65_() {return mem_m65.attach();} +bool create_m65_(int nsize) {return mem_m65.create(nsize);} +bool detach_m65_() {return mem_m65.detach();} +bool lock_m65_() {return mem_m65.lock();} +bool unlock_m65_() {return mem_m65.unlock();} +char* address_m65_() {return (char*)mem_m65.constData();} +int size_m65_() {return (int)mem_m65.size();} + +bool acquire_m65_() {return sem_m65.acquire();} +bool release_m65_() {return sem_m65.release();} diff --git a/libm65/iqcal.f90 b/libm65/iqcal.f90 new file mode 100644 index 000000000..c7ee7fd95 --- /dev/null +++ b/libm65/iqcal.f90 @@ -0,0 +1,30 @@ +subroutine iqcal(nn,c,nfft,gain,phase,zsum,ipk,reject) + + complex c(0:nfft-1) + complex z,zsum,zave + + if(nn.eq.0) then + zsum=0. + endif + nn=nn+1 + smax=0. + ipk=1 + do i=1,nfft-1 !Find strongest signal + s=real(c(i))**2 + aimag(c(i))**2 + if(s.gt.smax) then + smax=s + ipk=i + endif + enddo + pimage=real(c(nfft-ipk))**2 + aimag(c(nfft-ipk))**2 + p=smax + pimage + z=c(ipk)*c(nfft-ipk)/p !Synchronous detection of image + zsum=zsum+z + zave=zsum/nn + tmp=sqrt(1.0 - (2.0*real(zave))**2) + phase=asin(2.0*aimag(zave)/tmp) !Estimate phase + gain=tmp/(1.0-2.0*real(zave)) !Estimate gain + reject=10.0*log10(pimage/smax) + + return +end subroutine iqcal diff --git a/libm65/iqfix.f90 b/libm65/iqfix.f90 new file mode 100644 index 000000000..59ac0a3fe --- /dev/null +++ b/libm65/iqfix.f90 @@ -0,0 +1,29 @@ +subroutine iqfix(c,nfft,gain,phase) + + complex c(0:nfft-1) + complex z,h,u,v + real*8 sq1,sq2 + + nh=nfft/2 + h=gain*cmplx(cos(phase),sin(phase)) + + do i=1,nh-1 + u=c(i) + v=c(nfft-i) + x=real(u) + real(v) - (aimag(u) + aimag(v))*aimag(h) + & + (real(u) - real(v))*real(h) + y=aimag(u) - aimag(v) + (aimag(u) + aimag(v))*real(h) + & + (real(u) - real(v))*aimag(h) + c(i)=0.5*cmplx(x,y) + z=u + u=v + v=z + x=real(u) + real(v) - (aimag(u) + aimag(v))*aimag(h) + & + (real(u) - real(v))*real(h) + y=aimag(u) - aimag(v) + (aimag(u) + aimag(v))*real(h) + & + (real(u) - real(v))*aimag(h) + c(nfft-i)=0.5*cmplx(x,y) + enddo + + return +end subroutine iqfix diff --git a/k2grid.f b/libm65/k2grid.f similarity index 100% rename from k2grid.f rename to libm65/k2grid.f diff --git a/libm65/kvasd.exe b/libm65/kvasd.exe new file mode 100644 index 0000000000000000000000000000000000000000..36fd64aec92d2c8d91a5f5583498711434ee692e GIT binary patch literal 185856 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�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 F{{UZtF{=Oo literal 0 HcmV?d00001 diff --git a/libm65/m65.f90 b/libm65/m65.f90 new file mode 100644 index 000000000..eb35520b8 --- /dev/null +++ b/libm65/m65.f90 @@ -0,0 +1,130 @@ +program m65 + +! Decoder for map65. Can run stand-alone, reading data from *.tf2 files; +! or as the back end of map65, with data placed in a shared memory region. + + parameter (NSMAX=60*96000) + parameter (NFFT=32768) + integer*2 i2(4,87) + real*8 hsym + real*4 ssz5a(NFFT) + logical*1 lstrong(0:1023) + common/tracer/limtrace,lu + real*8 fc0,fcenter + character*80 arg,infile + character mycall*12,hiscall*12,mygrid*6,hisgrid*6,datetime*20 + common/datcom/dd(4,5760000),ss(4,322,NFFT),savg(4,NFFT),fc0,nutc0,junk(34) + common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain, & + ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift, & + mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,mode65, & + mycall,mygrid,hiscall,hisgrid,datetime + + nargs=iargc() + if(nargs.lt.1) then + print*,'Usage: m65 [95238] file1 [file2 ...]' + print*,' Reads data from *.tf2 files.' + print*,'' + print*,' m65 -s' + print*,' Gets data from shared memory region.' + go to 999 + endif + call getarg(1,arg) + if(arg(1:2).eq.'-s') then + call m65a + call ftnquit + go to 999 + endif + nfsample=96000 + nxpol=1 + mode65=2 + ifile1=1 + if(arg.eq.'95238') then + nfsample=95238 + call getarg(2,arg) + ifile1=2 + endif + + limtrace=0 + lu=12 + nfa=100 + nfb=162 + nfshift=6 + ndepth=2 + nfcal=344 + idphi=-50 + ntol=500 + nkeep=10 + + call ftninit('.') + + do ifile=ifile1,nargs + call getarg(ifile,infile) + open(10,file=infile,access='stream',status='old',err=998) + i1=index(infile,'.tf2') + read(infile(i1-4:i1-1),*,err=1) nutc0 + go to 2 +1 nutc0=0 +2 hsym=2048.d0*96000.d0/11025.d0 !Samples per half symbol + nhsym0=-999 + k=0 + fcenter=144.125d0 + mousedf=0 + mousefqso=125 + newdat=1 + mycall='K1JT' + + if(ifile.eq.ifile1) call timer('m65 ',0) + do irec=1,9999999 + call timer('read_tf2',0) + read(10) i2 + call timer('read_tf2',1) + + call timer('float ',0) + do i=1,87 + k=k+1 + dd(1,k)=i2(1,i) + dd(2,k)=i2(2,i) + dd(3,k)=i2(3,i) + dd(4,k)=i2(4,i) + enddo + call timer('float ',1) + nhsym=(k-2048)/hsym + if(nhsym.ge.1 .and. nhsym.ne.nhsym0) then + ndiskdat=1 + nb=0 +! Emit signal readyForFFT + call timer('symspec ',0) + fgreen=-13.0 + iqadjust=1 + iqapply=1 + nbslider=100 + gainx=0.9962 + gainy=1.0265 + phasex=0.01426 + phasey=-0.01195 + call symspec(k,nxpol,ndiskdat,nb,nbslider,idphi,nfsample,fgreen, & + iqadjust,iqapply,gainx,gainy,phasex,phasey,rejectx,rejecty, & + pxdb,pydb,ssz5a,nkhz,ihsym,nzap,slimit,lstrong) + call timer('symspec ',1) + nhsym0=nhsym + if(ihsym.ge.278) go to 10 + endif + enddo + +10 continue + if(iqadjust.ne.0) write(*,3002) rejectx,rejecty +3002 format('Image rejection:',2f7.1,' dB') + nutc=nutc0 + nstandalone=1 + call decode0(dd,ss,savg,nstandalone,nfsample) + enddo + + call timer('m65 ',1) + call timer('m65 ',101) + call ftnquit + go to 999 + +998 print*,'Cannot open file:' + print*,infile + +999 end program m65 diff --git a/libm65/m65a.F90 b/libm65/m65a.F90 new file mode 100644 index 000000000..2f5db5562 --- /dev/null +++ b/libm65/m65a.F90 @@ -0,0 +1,97 @@ +subroutine m65a + +! NB: this interface block is required by g95, but must be omitted +! for gfortran. (????) + +#ifndef UNIX + interface + function address_m65() + end function address_m65 + end interface +#endif + + integer*1 attach_m65,lock_m65,unlock_m65 + integer size_m65 + integer*1, pointer :: address_m65,p_m65 + character*80 cwd + logical fileExists + common/tracer/limtrace,lu + + call getcwd(cwd) + call ftninit(trim(cwd)) + limtrace=0 + lu=12 + i1=attach_m65() + +10 inquire(file=trim(cwd)//'/.lock',exist=fileExists) + if(fileExists) then + call sleep_msec(100) + go to 10 + endif + + inquire(file=trim(cwd)//'/.quit',exist=fileExists) + if(fileExists) then + call ftnquit + i=detach_m65() + go to 999 + endif + + nbytes=size_m65() + if(nbytes.le.0) then + print*,'m65a: Shared memory mem_m65 does not exist.' + print*,'Program m65a should be started automatically from within map65.' + go to 999 + endif + p_m65=>address_m65() + call m65b(p_m65,nbytes) + + write(*,1010) +1010 format('') + flush(6) + +100 inquire(file=trim(cwd)//'/.lock',exist=fileExists) + if(fileExists) go to 10 + call sleep_msec(100) + go to 100 + +999 return +end subroutine m65a + +subroutine m65b(m65com,nbytes) + integer*1 m65com(0:nbytes-1) + kss=4*4*60*96000 + ksavg=kss+4*4*322*32768 + kfcenter=ksavg+4*4*32768 + call m65c(m65com(0),m65com(kss),m65com(ksavg),m65com(kfcenter)) + return +end subroutine m65b + +subroutine m65c(dd,ss,savg,nparams0) + integer*1 detach_m65 + real*4 dd(4,5760000),ss(4,322,32768),savg(4,32768) + real*8 fcenter + integer nparams0(37),nparams(37) + character*12 mycall,hiscall + character*6 mygrid,hisgrid + character*20 datetime + common/npar/fcenter,nutc,idphi,mousedf,mousefqso,nagain, & + ndepth,ndiskdat,neme,newdat,nfa,nfb,nfcal,nfshift, & + mcall3,nkeep,ntol,nxant,nrxlog,nfsample,nxpol,mode65, & + mycall,mygrid,hiscall,hisgrid,datetime + equivalence (nparams,fcenter) + + nparams=nparams0 !Copy parameters into common/npar/ + npatience=1 + if(iand(nrxlog,1).ne.0) then + write(21,1000) datetime(:17) +1000 format(/'UTC Date: 'a17/78('-')) + flush(21) + endif + if(iand(nrxlog,2).ne.0) rewind 21 + if(iand(nrxlog,4).ne.0) rewind 26 + + nstandalone=0 + if(sum(nparams).ne.0) call decode0(dd,ss,savg,nstandalone) + + return +end subroutine m65c diff --git a/map65a.f90 b/libm65/map65a.f90 similarity index 53% rename from map65a.f90 rename to libm65/map65a.f90 index c6ca0ddf3..b518bccc3 100644 --- a/map65a.f90 +++ b/libm65/map65a.f90 @@ -1,411 +1,438 @@ -subroutine map65a(newdat) - -! Processes timf2 data from Linrad to find and decode JT65 signals. - - parameter (MAXMSG=1000) !Size of decoded message list - real tavg(-50:50) !Temp for finding local base level - real base(4) !Local basel level at 4 pol'ns - real tmp (200) !Temp storage for pctile sorting - real sig(MAXMSG,30) !Parameters of detected signals - real a(5) - character*22 msg(MAXMSG) - character*3 shmsg0(4) - integer indx(MAXMSG),nsiz(MAXMSG) - logical done(MAXMSG) - character decoded*22,blank*22 - include 'spcom.f90' - real short(3,NFFT) !SNR dt ipol for potential shorthands - real qphi(12) - include 'gcom2.f90' - include 'datcom.f90' - common/c3com/ mcall3a - - data blank/' '/ - data shmsg0/'ATT','RO ','RRR','73 '/ - data nfile/0/,nutc0/-999/,nid/0/,ip000/1/,ip001/1/,mousefqso0/-999/ - save - - mcall3a=mcall3 - if(mcall3.eq.1) mcall3=0 - if(mousefqso.ne.mousefqso0 .and. nagain.eq.1) newspec=2 - mousefqso0=mousefqso - nfoffset=nint(1000*(fcenter-144.125d0)) - mfqso=mousefqso - nfoffset - - rewind 11 - rewind 12 - if(nrw26.ne.0) then - endfile (26) !Compiler bug? Don't write "end file 26" !!! - rewind 26 - rewind 19 - endfile (19) - rewind 19 - nrw26=0 - endif - -#ifdef CVF - open(23,file='CALL3.TXT',status='unknown',share='denynone') -#else - open(23,file='CALL3.TXT',status='unknown') -#endif - - if(nutc.ne.nutc0) nfile=nfile+1 - nutc0=nutc - df=96000.0/NFFT !df = 96000/NFFT = 2.930 Hz - ftol=0.020 !Frequency tolerance (kHz) - foffset=0.001*(1270 + nfcal) - fselect=mfqso + foffset - dphi=idphi/57.2957795 - - do i=12,3,-1 - if(hiscall(i:i).ne.' ') go to 1 - enddo - i=0 -1 len_hiscall=i - - iloop=0 -2 if(ndphi.eq.1) dphi=30*iloop/57.2957795 - do nqd=1,0,-1 - if(nqd.eq.1) then !Quick decode, at fQSO - fa=1000.0*(fselect+0.001*mousedf-100.0) - dftolerance - fb=1000.0*(fselect+0.001*mousedf-100.0) + dftolerance + 4*53.8330078 - ia=nint((fa+23000.0)/df + 1.0) ! 23000 = 48000 - 25000 - ib=nint((fb+23000.0)/df + 1.0) - else !Wideband decode at all freqs - fa=1000*(nfa-100) - fb=1000*(nfb-100) - ia=nint((fa+23000.0)/df + 1.0) ! 23000 = 48000 - 25000 - ib=nint((fb+23000.0)/df + 1.0) - endif - - km=0 - nkm=1 - nz=n/8 - - do i=1,NFFT - short(1,i)=0. - short(2,i)=0. - short(3,i)=0. - enddo - - freq0=-999. - sync10=-999. - fshort0=-999. - sync20=-999. - ntry=0 - do i=ia,ib !Search over freq range - call sleep_msec(0) - freq=0.001*((i-1)*df - 23000) + 100.0 -! Find the local base level for each polarization; update every 10 bins. - if(mod(i-ia,10).eq.0) then - do jp=1,4 - do ii=-50,50 - iii=i+ii - if(iii.ge.1 .and. iii.le.32768) then - tavg(ii)=savg(jp,iii) - else - print*,'Error in iii:',iii,ia,ib,fa,fb - go to 999 - endif - enddo - call pctile(tavg,tmp,101,50,base(jp)) - enddo - bmax=max(base(1),base(2),base(3),base(4)) - endif - -! Do not process extremely strong signals - if(nqd.eq.0 .and. bmax.gt.1000.0) go to 70 - -! Find max signal at this frequency - smax=0. - do jp=1,4 - if(savg(jp,i)/base(jp).gt.smax) smax=savg(jp,i)/base(jp) - enddo - - if(smax.gt.1.1) then - ntry=ntry+1 -! Look for JT65 sync patterns and shorthand square-wave patterns. - call ccf65(ss(1,1,i),nhsym,sync1,ipol,dt,flipk, & - syncshort,snr2,ipol2,dt2) - -! ########################### Search for Shorthand Messages ################# -! Is there a shorthand tone above threshold? - thresh0=1.0 -! Use lower thresh0 at fQSO - if(nqd.eq.1 .and. dftolerance.le.100) thresh0=0. - - if(syncshort.gt.thresh0) then -! ### Do shorthand AFC here (or maybe after finding a pair?) ### - short(1,i)=syncshort - short(2,i)=dt2 - short(3,i)=ipol2 -! Check to see if lower tone of shorthand pair was found. - do j=2,4 - i0=i-nint(j*53.8330078/df) -! Should this be i0 +/- 1, or just i0? -! Should we also insist that difference in DT be either 1.5 or -1.5 s? - if(short(1,i0).gt.1.0) then - fshort=0.001*((i0-1)*df - 23000) + 100.0 - - noffset=0 - if(nqd.eq.1) noffset=nint(1000.0* & - (fshort-foffset-mfqso)-mousedf) - if(abs(noffset).le.dftolerance) then -! Keep only the best candidate within ftol. -!### NB: sync2 was not defined here! - sync2=syncshort !### try this ??? - if(fshort-fshort0.le.ftol .and. sync2.gt.sync20 & - .and. nkm.eq.2) km=km-1 - if(fshort-fshort0.gt.ftol .or. & - sync2.gt.sync20) then - km=km+1 - sig(km,1)=nfile - sig(km,2)=nutc - sig(km,3)=fshort - sig(km,4)=syncshort - sig(km,5)=dt2 - sig(km,6)=45*(ipol2-1)/57.2957795 - sig(km,7)=0 - sig(km,8)=snr2 - sig(km,9)=0 - sig(km,10)=0 -! sig(km,11)=rms0 - sig(km,12)=savg(ipol2,i) - sig(km,13)=0 - sig(km,14)=0 - sig(km,15)=0 - sig(km,16)=0 -! sig(km,17)=0 - sig(km,18)=0 - msg(km)=shmsg0(j) - fshort0=fshort - sync20=sync2 - nkm=2 - endif - endif - endif - enddo - endif - -! ########################### Search for Normal Messages ########### -! Is sync1 above threshold? - thresh1=1.0 -! Use lower thresh1 at fQSO - if(nqd.eq.1 .and. dftolerance.le.100) thresh1=0. - noffset=0 - if(nqd.eq.1) noffset=nint(1000.0*(freq-foffset-mfqso)-mousedf) - if(sync1.gt.thresh1 .and. abs(noffset).le.dftolerance) then -! Keep only the best candidate within ftol. -! (Am I deleting any good decodes by doing this?) - if(freq-freq0.le.ftol .and. sync1.gt.sync10 .and. & - nkm.eq.1) km=km-1 - if(freq-freq0.gt.ftol .or. sync1.gt.sync10) then - nflip=nint(flipk) - call decode1a(dd(1,1,kbuf),newdat,freq,nflip, & - mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi,ndphi, & - ipol,sync2,a,dt,pol,nkv,nhist,qual,decoded) - -! If hiscall or hisgrid is in decoded message, save the pol'n angle. - i1=index(decoded,hiscall(1:len_hiscall)) - i2=index(decoded,hisgrid(1:4)) - if(i1.ge.5 .or. i2.ge.9) then - nhispol=nint(57.2957795*pol) - endif - km=km+1 - sig(km,1)=nfile - sig(km,2)=nutc - sig(km,3)=freq - sig(km,4)=sync1 - sig(km,5)=dt - sig(km,6)=pol - sig(km,7)=flipk - sig(km,8)=sync2 - sig(km,9)=nkv - sig(km,10)=qual -! sig(km,11)=idphi - sig(km,12)=savg(ipol,i) - sig(km,13)=a(1) - sig(km,14)=a(2) - sig(km,15)=a(3) - sig(km,16)=a(4) -! sig(km,17)=a(5) - sig(km,18)=nhist - msg(km)=decoded - freq0=freq - sync10=sync1 - nkm=1 - endif - endif - endif -70 continue - enddo - if(nqd.eq.1) then - nwrite=0 - do k=1,km - decoded=msg(k) - if(decoded.ne.' ') then - nutc=sig(k,2) - freq=sig(k,3) - sync1=sig(k,4) - dt=sig(k,5) - npol=nint(57.2957795*sig(k,6)) - flip=sig(k,7) - sync2=sig(k,8) - nkv=sig(k,9) - nqual=sig(k,10) -! idphi=nint(sig(k,11)) - if(flip.lt.0.0) then - do i=22,1,-1 - if(decoded(i:i).ne.' ') go to 8 - enddo - stop 'Error in message format' -8 if(i.le.18) decoded(i+2:i+4)='OOO' - endif - nkHz=nint(freq-foffset) + nfoffset - f0=144.0+0.001*nkHz - ndf=nint(1000.0*(freq-foffset-nkHz+nfoffset)) - -! ndf0=nint(a(1)) -! ndf1=nint(a(2)) -! ndf2=nint(a(3)) - nsync1=sync1 - nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ### - if(decoded(1:4).eq.'RO ' .or. decoded(1:4).eq.'RRR ' .or. & - decoded(1:4).eq.'73 ') nsync2=nsync2-6 - nwrite=nwrite+1 - if(nxant.ne.0) then - npol=npol-45 - if(npol.lt.0) npol=npol+180 - endif - call cs_lock('map65aa') - if(ndphi.eq.0) then - write(11,1010) nkHz,ndf,npol,nutc,dt,nsync2,decoded,nkv,nqual -1010 format(i3,i5,i4,i5.4,f5.1,i4,2x,a22,i5,i4,i4) - else - if(iloop.ge.1) qphi(iloop)=sig(k,10) - write(11,1010) nkHz,ndf,npol,nutc,dt,nsync2,decoded,nkv, & - nqual,30*iloop - write(27,1011) 30*iloop,nkHz,ndf,npol,nutc, & - dt,sync2,nkv,nqual,decoded -1011 format(i3,i4,i5,i4,i5.4,f5.1,f7.1,i3,i5,2x,a22) - endif - call cs_unlock - endif - enddo - if(nwrite.eq.0) then - nfqso=mfqso + nfoffset - call cs_lock('map65ab') - write(11,1012) nfqso,nutc -1012 format(i3,9x,i5.4) - call cs_unlock - endif - - endif - if(ndphi.eq.1 .and.iloop.lt.12) then - iloop=iloop+1 - go to 2 - endif - if(ndphi.eq.1 .and.iloop.eq.12) call getdphi(qphi) - if(nqd.eq.1) then - write(11,*) '$EOF' - call flushqqq(11) - ndecdone=1 - endif - if(nagain.eq.1) go to 999 - enddo - -! Trim the list and produce a sorted index and sizes of groups. -! (Should trimlist remove all but best SNR for given UTC and message content?) - call trimlist(sig,km,indx,nsiz,nz) - - do i=1,km - done(i)=.false. - enddo - j=0 - ilatest=-1 - do n=1,nz - ifile0=0 - do m=1,nsiz(n) - i=indx(j+m) - ifile=sig(i,1) - if(ifile.gt.ifile0 .and.msg(i).ne.blank) then - ilatest=i - ifile0=ifile - endif - enddo - i=ilatest - - if(i.ge.1) then - if(.not.done(i)) then - done(i)=.true. - nutc=sig(i,2) - freq=sig(i,3) - sync1=sig(i,4) - dt=sig(i,5) - npol=nint(57.2957795*sig(i,6)) - flip=sig(i,7) - sync2=sig(i,8) - nkv=sig(i,9) - nqual=min(sig(i,10),10.0) -! rms0=sig(i,11) - do k=1,5 - a(k)=sig(i,12+k) - enddo - nhist=sig(i,18) - decoded=msg(i) - - if(flip.lt.0.0) then - do i=22,1,-1 - if(decoded(i:i).ne.' ') go to 10 - enddo - stop 'Error in message format' -10 if(i.le.18) decoded(i+2:i+4)='OOO' - endif - nkHz=nint(freq-foffset) + nfoffset - f0=144.0+0.001*nkHz - ndf=nint(1000.0*(freq-foffset-nkHz+nfoffset)) - ndf0=nint(a(1)) - ndf1=nint(a(2)) - ndf2=nint(a(3)) - nsync1=sync1 - nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ### - if(decoded(1:4).eq.'RO ' .or. decoded(1:4).eq.'RRR ' .or. & - decoded(1:4).eq.'73 ') nsync2=nsync2-6 - if(nxant.ne.0) then - npol=npol-45 - if(npol.lt.0) npol=npol+180 - endif - call cs_lock('map65ac') - write(26,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, & - nsync2,nutc,decoded,nkv,nqual,nhist - write(21,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, & - nsync2,nutc,decoded,nkv,nqual,nhist -1014 format(f7.3,i5,3i3,f5.1,i5,i3,i4,i5.4,2x,a22,3i3) - call cs_unlock - - endif - endif - j=j+nsiz(n) - enddo - call cs_lock('map65ad') - write(26,1015) nutc -1015 format(39x,i4.4) - call flushqqq(26) - call cs_unlock - call display(nkeep) - ndecdone=2 - -!### Temporarily disable the optional saving of raw data -! if(nsave.gt.0 .and. ndiskdat.eq.0) call savetf2(id(1,1,kbuf), & -! fnamedate,savedir) -!### - -999 close(23) - ndphi=0 - if(kbuf.eq.1) kkdone=60*96000 - if(kbuf.eq.2 .or. ndiskdat.eq.1) kkdone=0 - kk=kkdone - nagain=0 - - return -end subroutine map65a +subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & + mousedf,mousefqso,nagain,ndecdone,ndiskdat,nfshift,ndphi, & + nfcal,nkeep,mcall3b,nsave,nxant,rmsdd,mycall,mygrid, & + neme,ndepth,hiscall,hisgrid,nhsym,nfsample,nxpol,mode65) + +! Processes timf2 data from Linrad to find and decode JT65 signals. + + parameter (MAXMSG=1000) !Size of decoded message list + parameter (NSMAX=60*96000) + parameter (NFFT=32768) + real dd(4,NSMAX) + real*4 ss(4,322,NFFT),savg(4,NFFT) + real tavg(-50:50) !Temp for finding local base level + real base(4) !Local basel level at 4 pol'ns + real tmp (200) !Temp storage for pctile sorting + real sig(MAXMSG,30) !Parameters of detected signals + real a(5) + real*8 fcenter + character*22 msg(MAXMSG) + character*3 shmsg0(4) + character mycall*12,hiscall*12,mygrid*6,hisgrid*6,grid*6,cp*1 + integer indx(MAXMSG),nsiz(MAXMSG) + logical done(MAXMSG) + logical xpol + character decoded*22,blank*22 + real short(3,NFFT) !SNR dt ipol for potential shorthands + real qphi(12) + common/c3com/ mcall3a + common/testcom/ifreq + + data blank/' '/ + data shmsg0/'ATT','RO ','RRR','73 '/ + data nfile/0/,nutc0/-999/,nid/0/,ip000/1/,ip001/1/,mousefqso0/-999/ + save + + mcall3a=mcall3b + mousefqso0=mousefqso + xpol=(nxpol.ne.0) + if(.not.xpol) ndphi=0 + +!### Should use AppDir! ### +! open(23,file='release/CALL3.TXT',status='unknown') + open(23,file='CALL3.TXT',status='unknown') + + if(nutc.ne.nutc0) nfile=nfile+1 + nutc0=nutc + df=96000.0/NFFT !df = 96000/NFFT = 2.930 Hz + if(nfsample.eq.95238) df=95238.1/NFFT + ftol=0.010 !Frequency tolerance (kHz) + dphi=idphi/57.2957795 + foffset=0.001*(1270 + nfcal) !Offset from sync tone, plus CAL + fqso=mousefqso + foffset - 0.5*(nfa+nfb) + nfshift !fqso at baseband (khz) + iloop=0 + +2 if(ndphi.eq.1) dphi=30*iloop/57.2957795 + + do nqd=1,0,-1 + if(nqd.eq.1) then !Quick decode, at fQSO + fa=1000.0*(fqso+0.001*mousedf) - ntol + fb=1000.0*(fqso+0.001*mousedf) + ntol + 4*53.8330078 + else !Wideband decode at all freqs + fa=-1000*0.5*(nfb-nfa) + 1000*nfshift + fb= 1000*0.5*(nfb-nfa) + 1000*nfshift + endif + ia=nint(fa/df) + 16385 + ib=nint(fb/df) + 16385 + ia=max(51,ia) + ib=min(32768-51,ib) + + km=0 + nkm=1 + nz=n/8 + freq0=-999. + sync10=-999. + fshort0=-999. + syncshort0=-999. + ntry=0 + short=0. !Zero the whole short array + jpz=1 + if(xpol) jpz=4 + + do i=ia,ib !Search over freq range + freq=0.001*(i-16385)*df +! Find the local base level for each polarization; update every 10 bins. + if(mod(i-ia,10).eq.0) then + do jp=1,jpz + do ii=-50,50 + iii=i+ii + if(iii.ge.1 .and. iii.le.32768) then + tavg(ii)=savg(jp,iii) + else + write(13,*) ,'Error in iii:',iii,ia,ib,fa,fb + flush(13) + go to 999 + endif + enddo + call pctile(tavg,tmp,101,50,base(jp)) + enddo + endif + +! Find max signal at this frequency + smax=0. + do jp=1,jpz + if(savg(jp,i)/base(jp).gt.smax) then + smax=savg(jp,i)/base(jp) + jpmax=jp + endif + enddo + + if(smax.gt.1.1) then + +! Look for JT65 sync patterns and shorthand square-wave patterns. + call timer('ccf65 ',0) +! ssmax=4.0*(rmsdd/22.5)**2 + ssmax=savg(jpmax,i) + call ccf65(ss(1,1,i),nhsym,ssmax,sync1,ipol,jpz,dt,flipk, & + syncshort,snr2,ipol2,dt2) + call timer('ccf65 ',1) + +! ########################### Search for Shorthand Messages ################# +! Is there a shorthand tone above threshold? + thresh0=1.0 +! Use lower thresh0 at fQSO + if(nqd.eq.1 .and. ntol.le.100) thresh0=0. + if(syncshort.gt.thresh0) then +! ### Do shorthand AFC here (or maybe after finding a pair?) ### + short(1,i)=syncshort + short(2,i)=dt2 + short(3,i)=ipol2 + +! Check to see if lower tone of shorthand pair was found. + do j=2,4 + i0=i-nint(j*mode65*10.0*(11025.0/4096.0)/df) +! Should this be i0 +/- 1, or just i0? +! Should we also insist that difference in DT be either 1.5 or -1.5 s? + if(short(1,i0).gt.thresh0) then + fshort=0.001*(i0-16385)*df + noffset=0 + if(nqd.eq.1) noffset=nint(1000.0*(fshort-fqso)-mousedf) + if(abs(noffset).le.ntol) then +! Keep only the best candidate within ftol. +!### NB: sync2 was not defined here! +! sync2=syncshort !### try this ??? + if(fshort-fshort0.le.ftol .and. syncshort.gt.syncshort0 & + .and. nkm.eq.2) km=km-1 + if(fshort-fshort0.gt.ftol .or. & + syncshort.gt.syncshort0) then + if(km.lt.MAXMSG) km=km+1 + sig(km,1)=nfile + sig(km,2)=nutc + sig(km,3)=fshort + 0.5*(nfa+nfb) + sig(km,4)=syncshort + sig(km,5)=dt2 + sig(km,6)=45*(ipol2-1)/57.2957795 + sig(km,7)=0 + sig(km,8)=snr2 + sig(km,9)=0 + sig(km,10)=0 +! sig(km,11)=rms0 + sig(km,12)=savg(ipol2,i) + sig(km,13)=0 + sig(km,14)=0 + sig(km,15)=0 + sig(km,16)=0 +! sig(km,17)=0 + sig(km,18)=0 + msg(km)=shmsg0(j) + fshort0=fshort + syncshort0=syncshort + nkm=2 + endif + endif + endif + enddo + endif + +! ########################### Search for Normal Messages ########### +! Is sync1 above threshold? + thresh1=1.0 +! Use lower thresh1 at fQSO + if(nqd.eq.1 .and. ntol.le.100) thresh1=0. + noffset=0 + if(nqd.eq.1) noffset=nint(1000.0*(freq-fqso)-mousedf) + + if(sync1.gt.thresh1 .and. abs(noffset).le.ntol) then +! Keep only the best candidate within ftol. +! (Am I deleting any good decodes by doing this?) + if(freq-freq0.le.ftol .and. sync1.gt.sync10 .and. & + nkm.eq.1) km=km-1 + if(freq-freq0.gt.ftol .or. sync1.gt.sync10) then + nflip=nint(flipk) + f00=(i-1)*df !Freq of detected sync tone (0-96000 Hz) + ntry=ntry+1 + if((nqd.eq.1 .and. ntry.ge.40) .or. & + (nqd.eq.0 .and. ntry.ge.400)) then +! Too many calls to decode1a! + write(*,*) '! Signal too strong? Decoding aborted.' + write(13,*) 'Signal too strong? Decoding aborted.' + call flush(13) + go to 999 + endif + call timer('decode1a',0) + ifreq=i + ikHz=nint(freq+0.5*(nfa+nfb)-foffset)-nfshift + idf=nint(1000.0*(freq+0.5*(nfa+nfb)-foffset-(ikHz+nfshift))) + call decode1a(dd,newdat,f00,nflip,mode65,nfsample,xpol, & + mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi, & + nutc,ikHz,idf,ipol,sync2,a,dt,pol,nkv,nhist,qual,decoded) + dt=dt+0.8 !### empirical tweak + call timer('decode1a',1) + + if(km.lt.MAXMSG) km=km+1 + sig(km,1)=nfile + sig(km,2)=nutc + sig(km,3)=freq + 0.5*(nfa+nfb) + sig(km,4)=sync1 + sig(km,5)=dt + sig(km,6)=pol + sig(km,7)=flipk + sig(km,8)=sync2 + sig(km,9)=nkv + sig(km,10)=qual +! sig(km,11)=idphi + sig(km,12)=savg(ipol,i) + sig(km,13)=a(1) + sig(km,14)=a(2) + sig(km,15)=a(3) + sig(km,16)=a(4) +! sig(km,17)=a(5) + sig(km,18)=nhist + msg(km)=decoded + freq0=freq + sync10=sync1 + nkm=1 + endif + endif + endif +!70 continue + enddo + + if(nqd.eq.1) then + nwrite=0 + do k=1,km + decoded=msg(k) + if(decoded.ne.' ') then + nutc=sig(k,2) + freq=sig(k,3) + sync1=sig(k,4) + dt=sig(k,5) + npol=nint(57.2957795*sig(k,6)) + flip=sig(k,7) + sync2=sig(k,8) + nkv=sig(k,9) + nqual=sig(k,10) +! idphi=nint(sig(k,11)) + if(flip.lt.0.0) then + do i=22,1,-1 + if(decoded(i:i).ne.' ') go to 8 + enddo + stop 'Error in message format' +8 if(i.le.18) decoded(i+2:i+4)='OOO' + endif + nkHz=nint(freq-foffset)-nfshift + mhz=fcenter ! ... +fadd ??? + f0=mhz+0.001*nkHz + ndf=nint(1000.0*(freq-foffset-(nkHz+nfshift))) + nsync1=sync1 + nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ### + if(decoded(1:4).eq.'RO ' .or. decoded(1:4).eq.'RRR ' .or. & + decoded(1:4).eq.'73 ') nsync2=nsync2-6 + nwrite=nwrite+1 + if(nxant.ne.0) then + npol=npol-45 + if(npol.lt.0) npol=npol+180 + endif + +! If Tx station's grid is in decoded message, compute optimum TxPol + i1=index(decoded,' ') + i2=index(decoded(i1+1:),' ') + i1 + grid=' ' + if(i2.ge.8 .and. i2.le.18) grid=decoded(i2+1:i2+4)//'mm' + ntxpol=0 + cp=' ' + if(xpol) then + if(grid(1:1).ge.'A' .and. grid(1:1).le.'R' .and. & + grid(2:2).ge.'A' .and. grid(2:2).le.'R' .and. & + grid(3:3).ge.'0' .and. grid(3:3).le.'9' .and. & + grid(4:4).ge.'0' .and. grid(4:4).le.'9') then + ntxpol=mod(npol-nint(2.0*dpol(mygrid,grid))+720,180) + if(nxant.eq.0) then + cp='H' + if(ntxpol.gt.45 .and. ntxpol.le.135) cp='V' + else + cp='/' + if(ntxpol.ge.90 .and. ntxpol.lt.180) cp='\\' + endif + endif + endif + + if(ndphi.eq.0) then + write(*,1010) nkHz,ndf,npol,nutc,dt,nsync2, & + decoded,nkv,nqual,ntxpol,cp +1010 format('!',i3,i5,i4,i5.4,f5.1,i4,2x,a22,i5,i4,i5,1x,a1) + else + if(iloop.ge.1) qphi(iloop)=sig(k,10) + write(*,1010) nkHz,ndf,npol,nutc,dt,nsync2, & + decoded,nkv,nqual,30*iloop + write(27,1011) 30*iloop,nkHz,ndf,npol,nutc, & + dt,sync2,nkv,nqual,decoded +1011 format(i3,i4,i5,i4,i5.4,f5.1,f7.1,i3,i5,2x,a22) + endif + endif + enddo + + if(nwrite.eq.0) then + write(*,1012) mousefqso,nutc +1012 format('!',i3,9x,i5.4,' ') + endif + + endif + if(ndphi.eq.1 .and.iloop.lt.12) then + iloop=iloop+1 + go to 2 + endif + + if(ndphi.eq.1 .and.iloop.eq.12) call getdphi(qphi) + if(nagain.eq.1) go to 999 + enddo + +! Trim the list and produce a sorted index and sizes of groups. +! (Should trimlist remove all but best SNR for given UTC and message content?) + call trimlist(sig,km,ftol,indx,nsiz,nz) + + do i=1,km + done(i)=.false. + enddo + j=0 + ilatest=-1 + do n=1,nz + ifile0=0 + do m=1,nsiz(n) + i=indx(j+m) + ifile=sig(i,1) + if(ifile.gt.ifile0 .and.msg(i).ne.blank) then + ilatest=i + ifile0=ifile + endif + enddo + i=ilatest + + if(i.ge.1) then + if(.not.done(i)) then + done(i)=.true. + nutc=sig(i,2) + freq=sig(i,3) + sync1=sig(i,4) + dt=sig(i,5) + npol=nint(57.2957795*sig(i,6)) + flip=sig(i,7) + sync2=sig(i,8) + nkv=sig(i,9) + nqual=min(sig(i,10),10.0) +! rms0=sig(i,11) + do k=1,5 + a(k)=sig(i,12+k) + enddo + nhist=sig(i,18) + decoded=msg(i) + + if(flip.lt.0.0) then + do i=22,1,-1 + if(decoded(i:i).ne.' ') go to 10 + enddo + stop 'Error in message format' +10 if(i.le.18) decoded(i+2:i+4)='OOO' + endif + mhz=fcenter !... +fadd ??? + nkHz=nint(freq-foffset)-nfshift + f0=mhz+0.001*nkHz + ndf=nint(1000.0*(freq-foffset-(nkHz+nfshift))) + ndf0=nint(a(1)) + ndf1=nint(a(2)) + ndf2=nint(a(3)) + nsync1=sync1 + nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ### + if(decoded(1:4).eq.'RO ' .or. decoded(1:4).eq.'RRR ' .or. & + decoded(1:4).eq.'73 ') nsync2=nsync2-6 + if(nxant.ne.0) then + npol=npol-45 + if(npol.lt.0) npol=npol+180 + endif + +! If Tx station's grid is in decoded message, compute optimum TxPol + i1=index(decoded,' ') + i2=index(decoded(i1+1:),' ') + i1 + grid=' ' + if(i2.ge.8 .and. i2.le.18) grid=decoded(i2+1:i2+4)//'mm' + ntxpol=0 + cp=' ' + if(xpol) then + if(grid(1:1).ge.'A' .and. grid(1:1).le.'R' .and. & + grid(2:2).ge.'A' .and. grid(2:2).le.'R' .and. & + grid(3:3).ge.'0' .and. grid(3:3).le.'9' .and. & + grid(4:4).ge.'0' .and. grid(4:4).le.'9') then + ntxpol=mod(npol-nint(2.0*dpol(mygrid,grid))+720,180) + if(nxant.eq.0) then + cp='H' + if(ntxpol.gt.45 .and. ntxpol.le.135) cp='V' + else + cp='/' + if(ntxpol.ge.90 .and. ntxpol.lt.180) cp='\\' + endif + endif + endif + write(26,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, & + nsync2,nutc,decoded,nkv,nqual,nhist,cp + write(21,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, & + nsync2,nutc,decoded,nkv,nqual,nhist +1014 format(f8.3,i5,3i3,f5.1,i4,i3,i4,i5.4,2x,a22,3i3,1x,a1) + + endif + endif + j=j+nsiz(n) + enddo + write(26,1015) nutc +1015 format(39x,i4.4) + call flush(21) + call flush(26) + call display(nkeep,ftol) + ndecdone=2 + +999 close(23) + ndphi=0 + nagain=0 + mcall3b=mcall3a + + return +end subroutine map65a diff --git a/moon2.f b/libm65/moon2.f similarity index 100% rename from moon2.f rename to libm65/moon2.f diff --git a/MoonDop.f b/libm65/moondop.f similarity index 82% rename from MoonDop.f rename to libm65/moondop.f index a0004e82e..787606e8e 100644 --- a/MoonDop.f +++ b/libm65/moondop.f @@ -1,5 +1,5 @@ subroutine MoonDop(nyear,month,nday,uth4,lon4,lat4,RAMoon4, - + DecMoon4,LST4,HA4,AzMoon4,ElMoon4,ldeg4,bdeg4,vr4,dist4) + + DecMoon4,LST4,HA4,AzMoon4,ElMoon4,vr4,dist4) implicit real*8 (a-h,o-z) real*4 uth4 !UT in hours @@ -11,8 +11,6 @@ real*4 HA4 !Local Hour angle, degrees real*4 AzMoon4 !Topocentric Azimuth of moon, degrees real*4 ElMoon4 !Topocentric Elevation of moon, degrees - real*4 ldeg4 !Galactic longitude of moon, degrees - real*4 bdeg4 !Galactic latitude of moon, degrees real*4 vr4 !Radial velocity of moon wrt obs, km/s real*4 dist4 !Echo time, seconds @@ -22,10 +20,8 @@ real*8 RMA(6) !Vector from Obs to Moon real*8 pvsun(6) real*8 rme0(6) - real*8 lrad logical km,bary - common/stcomx/km,bary,pvsun data rad/57.2957795130823d0/,twopi/6.28310530717959d0/ km=.true. @@ -64,19 +60,12 @@ C determining Earth-rotation contribution to Doppler. call fromxyz(rma,alpha1,delta1,dtopo0) !Get topocentric coords vr=dot(rma(4),rma)/dtopo0 - rarad=RA/rad - decrad=Dec/rad - call dcoord(4.635594495d0,-0.504691042d0,3.355395488d0, - + 0.478220215d0,rarad,decrad,lrad,brad) - RAMoon4=topRA DecMoon4=topDec LST4=LST HA4=HA AzMoon4=Az ElMoon4=El - ldeg4=lrad*rad - bdeg4=brad*rad vr4=vr dist4=dist diff --git a/nchar.f b/libm65/nchar.f similarity index 84% rename from nchar.f rename to libm65/nchar.f index b4263ac1c..0730e905b 100644 --- a/nchar.f +++ b/libm65/nchar.f @@ -4,6 +4,7 @@ C Convert ascii number, letter, or space to 0-36 for callsign packing. character c*1 + n=0 !Silence compiler warning if(c.ge.'0' .and. c.le.'9') then n=ichar(c)-ichar('0') else if(c.ge.'A' .and. c.le.'Z') then diff --git a/packcall.f b/libm65/packcall.f similarity index 91% rename from packcall.f rename to libm65/packcall.f index 0abb19fed..c0aa1761c 100644 --- a/packcall.f +++ b/libm65/packcall.f @@ -23,6 +23,9 @@ C Work-around for Swaziland prefix: else if(callsign(1:4).eq.'QRZ ') then ncall=NBASE + 2 return + else if(callsign(1:3).eq.'DE ') then + ncall=267796945 + return endif tmp=' ' @@ -33,7 +36,7 @@ C Work-around for Swaziland prefix: text=.true. return endif - tmp=' '//callsign + tmp=' '//callsign(:5) else text=.true. return diff --git a/packdxcc.f b/libm65/packdxcc.f similarity index 100% rename from packdxcc.f rename to libm65/packdxcc.f diff --git a/packgrid.f b/libm65/packgrid.f similarity index 100% rename from packgrid.f rename to libm65/packgrid.f diff --git a/packmsg.f b/libm65/packmsg.f similarity index 69% rename from packmsg.f rename to libm65/packmsg.f index 5d5f301e8..d92652fba 100644 --- a/packmsg.f +++ b/libm65/packmsg.f @@ -1,9 +1,10 @@ subroutine packmsg(msg,dat) parameter (NBASE=37*36*10*27*27*27) + parameter (NBASE2=262178562) character*22 msg integer dat(12) - character*12 c1,c2 + character*12 c1,c2,c2z character*4 c3 character*6 grid6 c character*3 dxcc !Where is DXCC implemented? @@ -49,19 +50,36 @@ C ... and if so, does it have a reply frequency? c3=' ' if(ic.ge.ib+1) c3=msg(ib+1:ic) if(c3.eq.'OOO ') c3=' ' !Strip out the OOO flag - call getpfx1(c1,k1) + call getpfx1(c1,k1,junk) call packcall(c1,nc1,text1) - call getpfx1(c2,k2) + c2z=c2 + call getpfx1(c2,k2,nv2) call packcall(c2,nc2,text2) - if(k1.lt.0 .or. k2.lt.0 .or. k1*k2.ne.0) go to 10 - if(k2.gt.0) k2=k2+450 - k=max(k1,k2) - if(k.gt.0) then - call k2grid(k,grid6) - c3=grid6 + if(nv2.eq.0) then + if(k1.lt.0 .or. k2.lt.0 .or. k1*k2.ne.0) go to 10 + if(k2.gt.0) k2=k2+450 + k=max(k1,k2) + if(k.gt.0) then + call k2grid(k,grid6) + c3=grid6(:4) + endif endif call packgrid(c3,ng,text3) - if((.not.text1) .and. (.not.text2) .and. (.not.text3)) go to 20 + if(nv2.eq.0 .and. (.not.text1) .and. (.not.text2) .and. + + (.not.text3)) go to 20 + if(nv2.gt.0) then + if(nv2.eq.1) then + if(c1(1:3).eq.'CQ ') nc1=262178563 + k2 + if(c1(1:4).eq.'QRZ ') nc1=264002072 + k2 + if(c1(1:3).eq.'DE ') nc1=265825581 + k2 + endif + if(nv2.eq.2) then + if(c1(1:3).eq.'CQ ') nc1=267649090 + k2 + if(c1(1:4).eq.'QRZ ') nc1=267698375 + k2 + if(c1(1:3).eq.'DE ') nc1=267747660 + k2 + endif + go to 20 + endif C The message will be treated as plain text. 10 call packtext(msg,nc1,nc2,ng) diff --git a/packtext.f b/libm65/packtext.f similarity index 100% rename from packtext.f rename to libm65/packtext.f diff --git a/libm65/pctile.f b/libm65/pctile.f new file mode 100644 index 000000000..096e222ed --- /dev/null +++ b/libm65/pctile.f @@ -0,0 +1,13 @@ + subroutine pctile(x,tmp,nmax,npct,xpct) + real x(nmax),tmp(nmax) + + do i=1,nmax + tmp(i)=x(i) + enddo + call sort(nmax,tmp) + j=nint(nmax*0.01*npct) + if(j.lt.1) j=1 + xpct=tmp(j) + + return + end diff --git a/pfx.f b/libm65/pfx.f similarity index 100% rename from pfx.f rename to libm65/pfx.f diff --git a/pfxdump.f b/libm65/pfxdump.f similarity index 100% rename from pfxdump.f rename to libm65/pfxdump.f diff --git a/ptt.c b/libm65/ptt.c similarity index 82% rename from ptt.c rename to libm65/ptt.c index 494062d0a..d0ee0cb1e 100644 --- a/ptt.c +++ b/libm65/ptt.c @@ -1,7 +1,7 @@ #include #include -int ptt_(int *nport, char *unused, int *ntx, int *iptt) +int ptt_(int *nport, int *ntx, int *iptt) { static HANDLE hFile; static int open=0; @@ -18,8 +18,8 @@ int ptt_(int *nport, char *unused, int *ntx, int *iptt) hFile=CreateFile(TEXT(s),GENERIC_WRITE,0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); if(hFile==INVALID_HANDLE_VALUE) { - printf("PTT: Cannot open COM port %d.\n",*nport); - return(1); + // printf("PTT: Cannot open COM port %d.\n",*nport); + return 1; } open=1; } @@ -38,5 +38,5 @@ int ptt_(int *nport, char *unused, int *ntx, int *iptt) *iptt=0; open=0; } - return(0); + return 0; } diff --git a/ptt_unix.c b/libm65/ptt_unix.c similarity index 92% rename from ptt_unix.c rename to libm65/ptt_unix.c index 9351b03ca..647762f57 100644 --- a/ptt_unix.c +++ b/libm65/ptt_unix.c @@ -1,383 +1,391 @@ -/* - * WSJT is Copyright (c) 2001-2006 by Joseph H. Taylor, Jr., K1JT, - * and is licensed under the GNU General Public License (GPL). - * - * Code used from cwdaemon for parallel port ptt only. - * - * cwdaemon - morse sounding daemon for the parallel or serial port - * Copyright (C) 2002 -2005 Joop Stakenborg - * and many authors, see the AUTHORS file. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -# if HAVE_STDIO_H -# include -#endif -#if STDC_HEADERS -# include -# include -#else -# if HAVE_STDLIB_H -# include -# endif -#endif -#if HAVE_UNISTD_H -# include -#endif -#if HAVE_SYS_IOCTL_H -# include -#endif -#if HAVE_FCNTL_H -# include -#endif - -#ifdef HAVE_LINUX_PPDEV_H -# include -# include -#endif -#ifdef HAVE_DEV_PPBUS_PPI_H -# include -# include -#endif - -int lp_reset (int fd); -int lp_ptt (int fd, int onoff); - -#ifdef HAVE_SYS_STAT_H -# include -#endif -#if (defined(__unix__) || defined(unix)) && !defined(USG) -# include -#endif - -#include -/* parport functions */ - -int dev_is_parport(int fd); -int ptt_parallel(int fd, int *ntx, int *iptt); -int ptt_serial(int fd, int *ntx, int *iptt); - -int fd=-1; /* Used for both serial and parallel */ - -/* - * ptt_ - * - * generic unix PTT routine called from Fortran - * - * Inputs - * unused Unused, to satisfy old windows calling convention - * ptt_port device name serial or parallel - * ntx pointer to fortran command on or off - * iptt pointer to fortran command status on or off - * Returns - non 0 if error -*/ - -/* Tiny state machine */ -#define STATE_PORT_CLOSED 0 -#define STATE_PORT_OPEN_PARALLEL 1 -#define STATE_PORT_OPEN_SERIAL 2 - -int -ptt_(int *unused, char *ptt_port, int *ntx, int *iptt) -{ - static int state=0; - char *p; - - /* In the very unlikely event of a NULL pointer, just return. - * Yes, I realise this should not be possible in WSJT. - */ - if (ptt_port == NULL) { - *iptt = *ntx; - return (0); - } - - switch (state) { - case STATE_PORT_CLOSED: - - /* Remove trailing ' ' */ - if ((p = strchr(ptt_port, ' ')) != NULL) - *p = '\0'; - - /* If all that is left is a '\0' then also just return */ - if (*ptt_port == '\0') { - *iptt = *ntx; - return(0); - } - - if ((fd = open(ptt_port, O_RDWR|O_NONBLOCK)) < 0) { - fprintf(stderr, "Can't open %s.\n", ptt_port); - return (1); - } - - if (dev_is_parport(fd)) { - state = STATE_PORT_OPEN_PARALLEL; - lp_reset(fd); - ptt_parallel(fd, ntx, iptt); - } else { - state = STATE_PORT_OPEN_SERIAL; - ptt_serial(fd, ntx, iptt); - } - break; - - case STATE_PORT_OPEN_PARALLEL: - ptt_parallel(fd, ntx, iptt); - break; - - case STATE_PORT_OPEN_SERIAL: - ptt_serial(fd, ntx, iptt); - break; - - default: - close(fd); - fd = -1; - state = STATE_PORT_CLOSED; - break; - } - return(0); -} - -/* - * ptt_serial - * - * generic serial unix PTT routine called indirectly from Fortran - * - * fd - already opened file descriptor - * ntx - pointer to fortran command on or off - * iptt - pointer to fortran command status on or off - */ - -int -ptt_serial(int fd, int *ntx, int *iptt) -{ - int control = TIOCM_RTS | TIOCM_DTR; - - if(*ntx) { - ioctl(fd, TIOCMBIS, &control); /* Set DTR and RTS */ - *iptt = 1; - } else { - ioctl(fd, TIOCMBIC, &control); - *iptt = 0; - } - return(0); -} - - -/* parport functions */ - -/* - * dev_is_parport(fd): - * - * inputs - Already open fd - * output - 1 if parallel port, 0 if not - * side effects - Unfortunately, this is platform specific. - */ - -#if defined(HAVE_LINUX_PPDEV_H) /* Linux (ppdev) */ - -int -dev_is_parport(int fd) -{ - struct stat st; - int m; - - if ((fstat(fd, &st) == -1) || - ((st.st_mode & S_IFMT) != S_IFCHR) || - (ioctl(fd, PPGETMODE, &m) == -1)) - return(0); - - return(1); -} - -#elif defined(HAVE_DEV_PPBUS_PPI_H) /* FreeBSD (ppbus/ppi) */ - -int -dev_is_parport(int fd) -{ - struct stat st; - unsigned char c; - - if ((fstat(fd, &st) == -1) || - ((st.st_mode & S_IFMT) != S_IFCHR) || - (ioctl(fd, PPISSTATUS, &c) == -1)) - return(0); - - return(1); -} - -#else /* Fallback (nothing) */ - -int -dev_is_parport(int fd) -{ - return(0); -} - -#endif -/* Linux wrapper around PPFCONTROL */ -#ifdef HAVE_LINUX_PPDEV_H -static void -parport_control (int fd, unsigned char controlbits, int values) -{ - struct ppdev_frob_struct frob; - frob.mask = controlbits; - frob.val = values; - - if (ioctl (fd, PPFCONTROL, &frob) == -1) - { - fprintf(stderr, "Parallel port PPFCONTROL"); - exit (1); - } -} -#endif - -/* FreeBSD wrapper around PPISCTRL */ -#ifdef HAVE_DEV_PPBUS_PPI_H -static void -parport_control (int fd, unsigned char controlbits, int values) -{ - unsigned char val; - - if (ioctl (fd, PPIGCTRL, &val) == -1) - { - fprintf(stderr, "Parallel port PPIGCTRL"); - exit (1); - } - - val &= ~controlbits; - val |= values; - - if (ioctl (fd, PPISCTRL, &val) == -1) - { - fprintf(stderr, "Parallel port PPISCTRL"); - exit (1); - } -} -#endif - -/* Initialise a parallel port, given open fd */ -int -lp_init (int fd) -{ -#ifdef HAVE_LINUX_PPDEV_H - int mode; -#endif - -#ifdef HAVE_LINUX_PPDEV_H - mode = PARPORT_MODE_PCSPP; - - if (ioctl (fd, PPSETMODE, &mode) == -1) - { - fprintf(stderr, "Setting parallel port mode"); - close (fd); - return(-1); - } - - if (ioctl (fd, PPEXCL, NULL) == -1) - { - fprintf(stderr, "Parallel port is already in use.\n"); - close (fd); - return(-1); - } - if (ioctl (fd, PPCLAIM, NULL) == -1) - { - fprintf(stderr, "Claiming parallel port.\n"); - fprintf(stderr, "HINT: did you unload the lp kernel module?"); - close (fd); - return(-1); - } - - /* Enable CW & PTT - /STROBE bit (pin 1) */ - parport_control (fd, PARPORT_CONTROL_STROBE, PARPORT_CONTROL_STROBE); -#endif -#ifdef HAVE_DEV_PPBUS_PPI_H - parport_control (fd, STROBE, STROBE); -#endif - lp_reset (fd); - return(0); -} - -/* release ppdev and close port */ -int -lp_free (int fd) -{ -#ifdef HAVE_LINUX_PPDEV_H - lp_reset (fd); - - /* Disable CW & PTT - /STROBE bit (pin 1) */ - parport_control (fd, PARPORT_CONTROL_STROBE, 0); - - ioctl (fd, PPRELEASE); -#endif -#ifdef HAVE_DEV_PPBUS_PPI_H - /* Disable CW & PTT - /STROBE bit (pin 1) */ - parport_control (fd, STROBE, 0); -#endif - close (fd); - return(0); -} - -/* set to a known state */ -int -lp_reset (int fd) -{ -#if defined (HAVE_LINUX_PPDEV_H) || defined (HAVE_DEV_PPBUS_PPI_H) - lp_ptt (fd, 0); -#endif - return(0); -} - -/* SSB PTT keying - /INIT bit (pin 16) (inverted) */ -int -lp_ptt (int fd, int onoff) -{ -#ifdef HAVE_LINUX_PPDEV_H - if (onoff == 1) - parport_control (fd, PARPORT_CONTROL_INIT, - PARPORT_CONTROL_INIT); - else - parport_control (fd, PARPORT_CONTROL_INIT, 0); -#endif -#ifdef HAVE_DEV_PPBUS_PPI_H - if (onoff == 1) - parport_control (fd, nINIT, - nINIT); - else - parport_control (fd, nINIT, 0); -#endif - return(0); -} - -/* - * ptt_parallel - * - * generic parallel unix PTT routine called indirectly from Fortran - * - * fd - already opened file descriptor - * ntx - pointer to fortran command on or off - * iptt - pointer to fortran command status on or off - */ - -int -ptt_parallel(int fd, int *ntx, int *iptt) -{ - if(*ntx) { - lp_ptt(fd, 1); - *iptt=1; - } else { - lp_ptt(fd, 0); - *iptt=0; - } - return(0); -} +/* + * WSJT is Copyright (c) 2001-2006 by Joseph H. Taylor, Jr., K1JT, + * and is licensed under the GNU General Public License (GPL). + * + * Code used from cwdaemon for parallel port ptt only. + * + * cwdaemon - morse sounding daemon for the parallel or serial port + * Copyright (C) 2002 -2005 Joop Stakenborg + * and many authors, see the AUTHORS file. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +# if HAVE_STDIO_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif +#if HAVE_SYS_IOCTL_H +# include +#endif +#if HAVE_FCNTL_H +# include +#endif + +#ifdef HAVE_LINUX_PPDEV_H +# include +# include +#endif +#ifdef HAVE_DEV_PPBUS_PPI_H +# include +# include +#endif + +int lp_reset (int fd); +int lp_ptt (int fd, int onoff); + +#ifdef HAVE_SYS_STAT_H +# include +#endif +#if (defined(__unix__) || defined(unix)) && !defined(USG) +# include +#endif + +#include +/* parport functions */ + +int dev_is_parport(int fd); +int ptt_parallel(int fd, int *ntx, int *iptt); +int ptt_serial(int fd, int *ntx, int *iptt); + +int fd=-1; /* Used for both serial and parallel */ + +/* + * ptt_ + * + * generic unix PTT routine called from Fortran + * + * Inputs + * unused Unused, to satisfy old windows calling convention + * ptt_port device name serial or parallel + * ntx pointer to fortran command on or off + * iptt pointer to fortran command status on or off + * Returns - non 0 if error +*/ + +/* Tiny state machine */ +#define STATE_PORT_CLOSED 0 +#define STATE_PORT_OPEN_PARALLEL 1 +#define STATE_PORT_OPEN_SERIAL 2 + +//int ptt_(int *unused, char *ptt_port, int *ntx, int *iptt) +int ptt_(int *unused, int *ntx, int *iptt) +{ + static int state=0; + char *p; + +// ### Temporary: + char* ptt_port; + if(*unused != -99) { + *iptt=*ntx; + return 0; + } +// ### + + /* In the very unlikely event of a NULL pointer, just return. + * Yes, I realise this should not be possible in WSJT. + */ + if (ptt_port == NULL) { + *iptt = *ntx; + return (0); + } + + switch (state) { + case STATE_PORT_CLOSED: + + /* Remove trailing ' ' */ + if ((p = strchr(ptt_port, ' ')) != NULL) + *p = '\0'; + + /* If all that is left is a '\0' then also just return */ + if (*ptt_port == '\0') { + *iptt = *ntx; + return(0); + } + + if ((fd = open(ptt_port, O_RDWR|O_NONBLOCK)) < 0) { + fprintf(stderr, "Can't open %s.\n", ptt_port); + return (1); + } + + if (dev_is_parport(fd)) { + state = STATE_PORT_OPEN_PARALLEL; + lp_reset(fd); + ptt_parallel(fd, ntx, iptt); + } else { + state = STATE_PORT_OPEN_SERIAL; + ptt_serial(fd, ntx, iptt); + } + break; + + case STATE_PORT_OPEN_PARALLEL: + ptt_parallel(fd, ntx, iptt); + break; + + case STATE_PORT_OPEN_SERIAL: + ptt_serial(fd, ntx, iptt); + break; + + default: + close(fd); + fd = -1; + state = STATE_PORT_CLOSED; + break; + } + return(0); +} + +/* + * ptt_serial + * + * generic serial unix PTT routine called indirectly from Fortran + * + * fd - already opened file descriptor + * ntx - pointer to fortran command on or off + * iptt - pointer to fortran command status on or off + */ + +int +ptt_serial(int fd, int *ntx, int *iptt) +{ + int control = TIOCM_RTS | TIOCM_DTR; + + if(*ntx) { + ioctl(fd, TIOCMBIS, &control); /* Set DTR and RTS */ + *iptt = 1; + } else { + ioctl(fd, TIOCMBIC, &control); + *iptt = 0; + } + return(0); +} + + +/* parport functions */ + +/* + * dev_is_parport(fd): + * + * inputs - Already open fd + * output - 1 if parallel port, 0 if not + * side effects - Unfortunately, this is platform specific. + */ + +#if defined(HAVE_LINUX_PPDEV_H) /* Linux (ppdev) */ + +int +dev_is_parport(int fd) +{ + struct stat st; + int m; + + if ((fstat(fd, &st) == -1) || + ((st.st_mode & S_IFMT) != S_IFCHR) || + (ioctl(fd, PPGETMODE, &m) == -1)) + return(0); + + return(1); +} + +#elif defined(HAVE_DEV_PPBUS_PPI_H) /* FreeBSD (ppbus/ppi) */ + +int +dev_is_parport(int fd) +{ + struct stat st; + unsigned char c; + + if ((fstat(fd, &st) == -1) || + ((st.st_mode & S_IFMT) != S_IFCHR) || + (ioctl(fd, PPISSTATUS, &c) == -1)) + return(0); + + return(1); +} + +#else /* Fallback (nothing) */ + +int +dev_is_parport(int fd) +{ + return(0); +} + +#endif +/* Linux wrapper around PPFCONTROL */ +#ifdef HAVE_LINUX_PPDEV_H +static void +parport_control (int fd, unsigned char controlbits, int values) +{ + struct ppdev_frob_struct frob; + frob.mask = controlbits; + frob.val = values; + + if (ioctl (fd, PPFCONTROL, &frob) == -1) + { + fprintf(stderr, "Parallel port PPFCONTROL"); + exit (1); + } +} +#endif + +/* FreeBSD wrapper around PPISCTRL */ +#ifdef HAVE_DEV_PPBUS_PPI_H +static void +parport_control (int fd, unsigned char controlbits, int values) +{ + unsigned char val; + + if (ioctl (fd, PPIGCTRL, &val) == -1) + { + fprintf(stderr, "Parallel port PPIGCTRL"); + exit (1); + } + + val &= ~controlbits; + val |= values; + + if (ioctl (fd, PPISCTRL, &val) == -1) + { + fprintf(stderr, "Parallel port PPISCTRL"); + exit (1); + } +} +#endif + +/* Initialise a parallel port, given open fd */ +int +lp_init (int fd) +{ +#ifdef HAVE_LINUX_PPDEV_H + int mode; +#endif + +#ifdef HAVE_LINUX_PPDEV_H + mode = PARPORT_MODE_PCSPP; + + if (ioctl (fd, PPSETMODE, &mode) == -1) + { + fprintf(stderr, "Setting parallel port mode"); + close (fd); + return(-1); + } + + if (ioctl (fd, PPEXCL, NULL) == -1) + { + fprintf(stderr, "Parallel port is already in use.\n"); + close (fd); + return(-1); + } + if (ioctl (fd, PPCLAIM, NULL) == -1) + { + fprintf(stderr, "Claiming parallel port.\n"); + fprintf(stderr, "HINT: did you unload the lp kernel module?"); + close (fd); + return(-1); + } + + /* Enable CW & PTT - /STROBE bit (pin 1) */ + parport_control (fd, PARPORT_CONTROL_STROBE, PARPORT_CONTROL_STROBE); +#endif +#ifdef HAVE_DEV_PPBUS_PPI_H + parport_control (fd, STROBE, STROBE); +#endif + lp_reset (fd); + return(0); +} + +/* release ppdev and close port */ +int +lp_free (int fd) +{ +#ifdef HAVE_LINUX_PPDEV_H + lp_reset (fd); + + /* Disable CW & PTT - /STROBE bit (pin 1) */ + parport_control (fd, PARPORT_CONTROL_STROBE, 0); + + ioctl (fd, PPRELEASE); +#endif +#ifdef HAVE_DEV_PPBUS_PPI_H + /* Disable CW & PTT - /STROBE bit (pin 1) */ + parport_control (fd, STROBE, 0); +#endif + close (fd); + return(0); +} + +/* set to a known state */ +int +lp_reset (int fd) +{ +#if defined (HAVE_LINUX_PPDEV_H) || defined (HAVE_DEV_PPBUS_PPI_H) + lp_ptt (fd, 0); +#endif + return(0); +} + +/* SSB PTT keying - /INIT bit (pin 16) (inverted) */ +int +lp_ptt (int fd, int onoff) +{ +#ifdef HAVE_LINUX_PPDEV_H + if (onoff == 1) + parport_control (fd, PARPORT_CONTROL_INIT, + PARPORT_CONTROL_INIT); + else + parport_control (fd, PARPORT_CONTROL_INIT, 0); +#endif +#ifdef HAVE_DEV_PPBUS_PPI_H + if (onoff == 1) + parport_control (fd, nINIT, + nINIT); + else + parport_control (fd, nINIT, 0); +#endif + return(0); +} + +/* + * ptt_parallel + * + * generic parallel unix PTT routine called indirectly from Fortran + * + * fd - already opened file descriptor + * ntx - pointer to fortran command on or off + * iptt - pointer to fortran command status on or off + */ + +int +ptt_parallel(int fd, int *ntx, int *iptt) +{ + if(*ntx) { + lp_ptt(fd, 1); + *iptt=1; + } else { + lp_ptt(fd, 0); + *iptt=0; + } + return(0); +} diff --git a/libm65/recvpkt.f90 b/libm65/recvpkt.f90 new file mode 100644 index 000000000..300139611 --- /dev/null +++ b/libm65/recvpkt.f90 @@ -0,0 +1,70 @@ +subroutine recvpkt(nsam,nblock2,userx_no,k,buf4,buf8,buf16) + +! Reformat timf2 data from Linrad and stuff data into r*4 array dd(). + + parameter (NSMAX=60*96000) !Total sample intervals per minute + parameter (NFFT=32768) + integer*1 userx_no + real*4 d4,buf4(*) !(348) + real*8 d8,buf8(*) !(174) + complex*16 c16,buf16(*) !(87) + integer*2 jd(4),kd(2),nblock2 + real*4 xd(4),yd(2) + real*8 fcenter + common/datcom/dd(4,5760000),ss(4,322,NFFT),savg(4,NFFT),fcenter,nutc,junk(34) + equivalence (kd,d4) + equivalence (jd,d8,yd) + equivalence (xd,c16) + + if(nsam.eq.-1) then +! Move data from the UDP packet buffer into array dd(). + if(userx_no.eq.-1) then + do i=1,174 !One RF channel, r*4 data + k=k+1 + d8=buf8(i) + dd(1,k)=yd(1) + dd(2,k)=yd(2) + enddo + else if(userx_no.eq.1) then + do i=1,348 !One RF channel, i*2 data + k=k+1 + d4=buf4(i) + dd(1,k)=kd(1) + dd(2,k)=kd(2) + enddo + else if(userx_no.eq.-2) then + do i=1,87 !Two RF channels, r*4 data + k=k+1 + c16=buf16(i) + dd(1,k)=xd(1) + dd(2,k)=xd(2) + dd(3,k)=xd(3) + dd(4,k)=xd(4) + enddo + else if(userx_no.eq.2) then + do i=1,174 !Two RF channels, i*2 data + k=k+1 + d8=buf8(i) + dd(1,k)=jd(1) + dd(2,k)=jd(2) + dd(3,k)=jd(3) + dd(4,k)=jd(4) + enddo + endif + else + if(userx_no.eq.1) then + do i=1,nsam !One RF channel, r*4 data + k=k+1 + d4=buf4(i) + dd(1,k)=kd(1) + dd(2,k)=kd(2) + + k=k+1 + dd(1,k)=kd(1) + dd(2,k)=kd(2) + enddo + endif + endif + + return +end subroutine recvpkt diff --git a/libm65/rfile3a.f90 b/libm65/rfile3a.f90 new file mode 100644 index 000000000..db12e4df1 --- /dev/null +++ b/libm65/rfile3a.f90 @@ -0,0 +1,14 @@ +subroutine rfile3a(infile,ibuf,n,fcenter,ierr) + + character*(*) infile + integer*8 ibuf(n) + real*8 fcenter + + open(10,file=infile,access='stream',status='old',err=998) + read(10,end=998) (ibuf(i),i=1,n/8),fcenter + ierr=0 + go to 999 +998 ierr=1002 +999 close(10) + return +end subroutine rfile3a diff --git a/rs.h b/libm65/rs.h similarity index 100% rename from rs.h rename to libm65/rs.h diff --git a/libm65/s3avg.f90 b/libm65/s3avg.f90 new file mode 100644 index 000000000..905a32d3d --- /dev/null +++ b/libm65/s3avg.f90 @@ -0,0 +1,42 @@ +subroutine s3avg(nsave,mode65,nutc,ndf,xdt,npol,s3,nkv,decoded) + + real s3(64,63),s3b(64,63) + real s3a(64,63,32) + integer iutc(32),idf(32),ipol(32) + real dt(32) + character*22 decoded + logical ltext + save + + n=nsave + iutc(n)=nutc + idf(n)=ndf + ipol(n)=npol + dt(n)=xdt + s3a(1:64,1:63,n)=s3 + + s3b=0. + nsum=0 + idfdiff=100 + dtdiff=0.2 + do i=1,n + if(mod(iutc(i),2).ne.mod(nutc,2)) cycle + if(abs(ndf-idf(i)).gt.idfdiff) cycle + if(abs(xdt-dt(i)).gt.dtdiff) cycle + s3b=s3b + s3a(1:64,1:63,i) + nsum=nsum+1 + enddo + + decoded=' ' + if(nsum.ge.2) then + nadd=mode65*nsum + call extract(s3b,nadd,ncount,nhist,decoded,ltext) !Extract the message + nkv=nsum + if(ncount.lt.0) then + nkv=0 + decoded=' ' + endif + endif + + return +end subroutine s3avg diff --git a/sec_midn.f90 b/libm65/sec_midn.f90 similarity index 69% rename from sec_midn.f90 rename to libm65/sec_midn.f90 index f021f0da4..0bbe62c2c 100644 --- a/sec_midn.f90 +++ b/libm65/sec_midn.f90 @@ -5,15 +5,7 @@ end function sec_midn subroutine sleep_msec(n) -#ifdef CVF - use dflib -#endif - -#ifdef CVF - call sleepqq(n) -#else call usleep(1000*n) -#endif return end subroutine sleep_msec diff --git a/set.f b/libm65/set.f similarity index 100% rename from set.f rename to libm65/set.f diff --git a/setup65.f b/libm65/setup65.f similarity index 76% rename from setup65.f rename to libm65/setup65.f index fb19184c8..980361e25 100644 --- a/setup65.f +++ b/libm65/setup65.f @@ -1,20 +1,10 @@ subroutine setup65 -C Defines arrays related to the pseudo-random synchronizing pattern. +C Defines arrays related to the JT65 pseudo-random synchronizing pattern. C Executed at program start. - integer npra(135),nprc(126) - include 'prcom.h' - -C JT44 - data npra/ - + 1,1,1,0,1,0,0,0,0,1,1,1,0,0,1,1,0,0,0,0, - + 1,0,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,1,1,1, - + 1,0,0,1,0,0,1,0,1,1,1,0,0,1,1,1,0,0,0,0, - + 0,0,1,1,1,0,1,1,1,0,1,0,0,1,1,1,1,0,1,0, - + 1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,0,1,0,1,0, - + 1,1,1,1,1,0,1,0,1,1,0,1,0,0,0,0,0,1,1,0, - + 1,1,1,0,1,1,0,1,1,0,1,0,1,1,0/ + integer nprc(126) + common/prcom/pr(126),mdat(126),mref(126,2),mdat2(126),mref2(126,2) C JT65 data nprc/ @@ -25,7 +15,7 @@ C JT65 + 1,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1, + 0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,1,1, + 1,1,1,1,1,1/ - data mr2/0/ !Silence g77 warning + data mr2/0/ !Silence compiler warning C Put the appropriate pseudo-random sequence into pr nsym=126 diff --git a/libm65/sleep.h b/libm65/sleep.h new file mode 100644 index 000000000..df60bc92a --- /dev/null +++ b/libm65/sleep.h @@ -0,0 +1,32 @@ +/* + * sleep.h 1.0 02/03/10 + * + * Defines cross-platform sleep, usleep, etc. + * + * By Wu Yongwei + * + */ + +#ifndef _SLEEP_H +#define _SLEEP_H + +#ifdef _WIN32 +# if defined(_NEED_SLEEP_ONLY) && (defined(_MSC_VER) || defined(__MINGW32__)) +# include +# define sleep(t) _sleep((t) * 1000) +# else +# include +# define sleep(t) Sleep((t) * 1000) +# endif +# ifndef _NEED_SLEEP_ONLY +# define msleep(t) Sleep(t) +# define usleep(t) Sleep((t) / 1000) +# endif +#else +# include +# ifndef _NEED_SLEEP_ONLY +# define msleep(t) usleep((t) * 1000) +# endif +#endif + +#endif /* _SLEEP_H */ diff --git a/libm65/sleep_msec.f90 b/libm65/sleep_msec.f90 new file mode 100644 index 000000000..7308d410b --- /dev/null +++ b/libm65/sleep_msec.f90 @@ -0,0 +1,3 @@ +subroutine sleep_msec(n) + return +end subroutine sleep_msec diff --git a/sort.f b/libm65/sort.f similarity index 100% rename from sort.f rename to libm65/sort.f diff --git a/ssort.f b/libm65/ssort.f similarity index 100% rename from ssort.f rename to libm65/ssort.f diff --git a/sun.f b/libm65/sun.f similarity index 94% rename from sun.f rename to libm65/sun.f index 137062367..f9772070e 100644 --- a/sun.f +++ b/libm65/sun.f @@ -1,4 +1,4 @@ - subroutine sun(y,m,DD,UT,lon,lat,RA,Dec,LST,Az,El,mjd) + subroutine sun(y,m,DD,UT,lon,lat,RA,Dec,LST,Az,El,mjd,day) implicit none @@ -35,6 +35,7 @@ C Equatorial coords of sun (geocentric) real xhor,yhor,zhor real Az,El + real day real rad data rad/57.2957795/ @@ -81,6 +82,7 @@ C RA and Dec in degrees: zhor = xx*cos(lat/rad) + zz*sin(lat/rad) Az = mod(rad*atan2(yhor,xhor) + 180.0 + 360.0,360.0) El = rad*asin(zhor) + day=d-1.5 return end diff --git a/libm65/symspec.f90 b/libm65/symspec.f90 new file mode 100644 index 000000000..64ec3e9f3 --- /dev/null +++ b/libm65/symspec.f90 @@ -0,0 +1,193 @@ +subroutine symspec(k,nxpol,ndiskdat,nb,nbslider,idphi,nfsample,fgreen, & + iqadjust,iqapply,gainx,gainy,phasex,phasey,rejectx,rejecty, & + pxdb,pydb,ssz5a,nkhz,ihsym,nzap,slimit,lstrong) + +! k pointer to the most recent new data +! nxpol 0/1 to indicate single- or dual-polarization +! ndiskdat 0/1 to indicate if data from disk +! nb 0/1 status of noise blanker +! idphi Phase correction for Y channel, degrees +! nfsample sample rate (Hz) +! fgreen Frequency of green marker in I/Q calibrate mode (-48.0 to +48.0 kHz) +! iqadjust 0/1 to indicate whether IQ adjustment is active +! iqapply 0/1 to indicate whether to apply I/Q calibration +! pxdb power in x channel (0-60 dB) +! pydb power in y channel (0-60 dB) +! ssz5a polarized spectrum, for waterfall display +! nkhz integer kHz portion of center frequency, e.g., 125 for 144.125 +! ihsym index number of this half-symbol (1-322) +! nzap number of samples zero'ed by noise blanker + + parameter (NSMAX=60*96000) !Total sample intervals per minute + parameter (NFFT=32768) !Length of FFTs + real*8 ts,hsym + real*8 fcenter + common/datcom/dd(4,5760000),ss(4,322,NFFT),savg(4,NFFT),fcenter,nutc,junk(34) + real*4 ssz5a(NFFT),w(NFFT) + complex z,zfac + complex zsumx,zsumy + complex cx(NFFT),cy(NFFT) + complex cx0(0:1023),cx1(0:1023) + complex cy0(0:1023),cy1(0:1023) + logical*1 lstrong(0:1023) + data rms/999.0/,k0/99999999/,nadjx/0/,nadjy/0/ + save + + if(k.gt.5751000) go to 999 + if(k.lt.NFFT) then + ihsym=0 + go to 999 !Wait for enough samples to start + endif + if(k.lt.k0) k1=0 + if(k0.eq.99999999) then + pi=4.0*atan(1.0) + do i=1,NFFT + w(i)=(sin(i*pi/NFFT))**2 + enddo + endif + + nzap=0 + sigmas=1.5*(10.0**(0.01*nbslider)) + 0.7 + peaklimit=sigmas*max(10.0,rms) + faclim=3.0 + px=0. + py=0. + + iqapply0=0 + iqadjust0=0 + if(iqadjust.ne.0) iqapply0=0 + nwindow=2 + nfft2=1024 + kstep=nfft2 + if(nwindow.ne.0) kstep=nfft2/2 + nblks=(k-k1)/kstep + do nblk=1,nblks + j=k1+1 + do i=0,nfft2-1 + cx0(i)=cmplx(dd(1,j+i),dd(2,j+i)) + if(nxpol.ne.0) cy0(i)=cmplx(dd(3,j+i),dd(4,j+i)) + enddo + call timf2(nxpol,nfft2,nwindow,nb,peaklimit,iqadjust0,iqapply0,faclim, & + cx0,cy0,gainx,gainy,phasex,phasey,cx1,cy1,slimit,lstrong, & + px,py,nzap) + + do i=0,kstep-1 + dd(1,j+i)=real(cx1(i)) + dd(2,j+i)=aimag(cx1(i)) + if(nxpol.ne.0) then + dd(3,j+i)=real(cy1(i)) + dd(4,j+i)=aimag(cy1(i)) + endif + enddo + k1=k1+kstep + enddo + + hsym=2048.d0*96000.d0/11025.d0 !Samples per JT65 half-symbol + if(nfsample.eq.95238) hsym=2048.d0*95238.1d0/11025.d0 + npts=NFFT !Samples used in each half-symbol FFT + + if(k.lt.k0) then + ts=1.d0 - hsym + savg=0. + ihsym=0 + endif + k0=k + ihsym=ihsym+1 + ja=ts+hsym !Index of first sample + jb=ja+npts-1 !Last sample + + ts=ts+hsym + i=0 + fac=0.0002 + dphi=idphi/57.2957795 + zfac=fac*cmplx(cos(dphi),sin(dphi)) + do j=ja,jb !Copy data into cx, cy + x1=dd(1,j) + x2=dd(2,j) + if(nxpol.ne.0) then + x3=dd(3,j) + x4=dd(4,j) + else + x3=0. + x4=0. + endif + i=i+1 + cx(i)=fac*cmplx(x1,x2) + cy(i)=zfac*cmplx(x3,x4) !NB: cy includes dphi correction + enddo + + if(nzap/178.lt.50 .and. (ndiskdat.eq.0 .or. ihsym.lt.280)) then + nsum=nblks*kstep - nzap + if(nsum.le.0) nsum=1 + rmsx=sqrt(0.5*px/nsum) + rmsy=sqrt(0.5*py/nsum) + rms=rmsx + if(nxpol.ne.0) rms=sqrt((px+py)/(4.0*nsum)) + endif + pxdb=0. + pydb=0. + if(rmsx.gt.1.0) pxdb=20.0*log10(rmsx) + if(rmsy.gt.1.0) pydb=20.0*log10(rmsy) + if(pxdb.gt.60.0) pxdb=60.0 + if(pydb.gt.60.0) pydb=60.0 + + cx=w*cx !Apply window for 2nd forward FFT + if(nxpol.ne.0) cy=w*cy + + call four2a(cx,NFFT,1,1,1) !Second forward FFT + if(iqadjust.eq.0) nadjx=0 + if(iqadjust.ne.0 .and. nadjx.lt.50) call iqcal(nadjx,cx,NFFT,gainx,phasex, & + zsumx,ipkx,rejectx0) + if(iqapply.ne.0) call iqfix(cx,NFFT,gainx,phasex) + + if(nxpol.ne.0) then + call four2a(cy,NFFT,1,1,1) + if(iqadjust.eq.0) nadjy=0 + if(iqadjust.ne.0 .and. nadjy.lt.50) call iqcal(nadjy,cy,NFFT,gainy,phasey,& + zsumy,ipky,rejecty) + if(iqapply.ne.0) call iqfix(cy,NFFT,gainy,phasey) + endif + + n=ihsym + do i=1,NFFT + sx=real(cx(i))**2 + aimag(cx(i))**2 + ss(1,n,i)=sx ! Pol = 0 + savg(1,i)=savg(1,i) + sx + + if(nxpol.ne.0) then + z=cx(i) + cy(i) + s45=0.5*(real(z)**2 + aimag(z)**2) + ss(2,n,i)=s45 ! Pol = 45 + savg(2,i)=savg(2,i) + s45 + + sy=real(cy(i))**2 + aimag(cy(i))**2 + ss(3,n,i)=sy ! Pol = 90 + savg(3,i)=savg(3,i) + sy + + z=cx(i) - cy(i) + s135=0.5*(real(z)**2 + aimag(z)**2) + ss(4,n,i)=s135 ! Pol = 135 + savg(4,i)=savg(4,i) + s135 + + z=cx(i)*conjg(cy(i)) + q=sx - sy + u=2.0*real(z) + ssz5a(i)=0.707*sqrt(q*q + u*u) !Spectrum of linear polarization +! Leif's formula: +! ssz5a(i)=0.5*(sx+sy) + (real(z)**2 + aimag(z)**2 - sx*sy)/(sx+sy) + else + ssz5a(i)=sx + endif + enddo + if(ihsym.eq.278) then + if(iqadjust.ne.0 .and. ipkx.ne.0 .and. ipky.ne.0) then + rejectx=10.0*log10(savg(1,1+nfft-ipkx)/savg(1,1+ipkx)) + rejecty=10.0*log10(savg(3,1+nfft-ipky)/savg(3,1+ipky)) + endif + endif + + nkhz=nint(1000.d0*(fcenter-int(fcenter))) + if(fcenter.eq.0.d0) nkhz=125 + +999 return +end subroutine symspec diff --git a/libm65/tastro.f90 b/libm65/tastro.f90 new file mode 100644 index 000000000..d9ede4a67 --- /dev/null +++ b/libm65/tastro.f90 @@ -0,0 +1,35 @@ +program tastro + + implicit real*8 (a-h,o-z) + + character grid*6 + character*9 cauxra,cauxdec + + character*12 clock(3) + integer nt(8) + equivalence (nt(1),nyear) + + grid='FN20qi' + nfreq=144 + cauxra='00:00:00' + +10 call date_and_time(clock(1),clock(2),clock(3),nt) + ih=ihour-ntz/60 + if(ih.le.0) then + ih=ih+24 + nday=nday+1 + endif + uth8=ih + imin/60.d0 + isec/3600.d0 + ims/3600000.d0 + call astro0(nyear,month,nday,uth8,nfreq,grid,cauxra,cauxdec, & + AzSun8,ElSun8,AzMoon8,ElMoon8,AzMoonB8,ElMoonB8,ntsky,ndop,ndop00, & + dbMoon8,RAMoon8,DecMoon8,HA8,Dgrd8,sd8,poloffset8,xnr8,dfdt,dfdt0, & + RaAux8,DecAux8,AzAux8,ElAux8,width1,width2,w501,w502,xlst8) + + write(*,1010) nyear,month,nday,ih,imin,isec,AzMoon8,ElMoon8, & + AzSun8,ElSun8,ndop,dgrd8,ntsky +1010 format(i4,i3,i3,i4.2,':',i2.2,':',i2.2,4f8.1,i6,f6.1,i6) + + call system('sleep 1') + go to 10 + +end program tastro diff --git a/libm65/timer.f90 b/libm65/timer.f90 new file mode 100644 index 000000000..421ca9e81 --- /dev/null +++ b/libm65/timer.f90 @@ -0,0 +1,110 @@ +subroutine timer(dname,k) + +! Times procedure number n between a call with k=0 (tstart) and with +! k=1 (tstop). Accumulates sums of these times in array ut (user time). +! Also traces all calls (for debugging purposes) if limtrace.gt.0 + + character*8 dname,name(50),space,ename + character*16 sname + logical on(50) + real ut(50),ut0(50),dut(50),tt(2) + integer ncall(50),nlevel(50),nparent(50) + integer onlevel(0:10) + common/tracer/ limtrace,lu + data eps/0.000001/,ntrace/0/ + data level/0/,nmax/0/,space/' '/ + data limtrace/0/,lu/-1/ + save + + if(limtrace.lt.0) go to 999 + if(lu.lt.1) lu=6 + if(k.gt.1) go to 40 !Check for "all done" (k>1) + onlevel(0)=0 + + do n=1,nmax !Check for existing name + if(name(n).eq.dname) go to 20 + enddo + + nmax=nmax+1 !This is a new one + n=nmax + ncall(n)=0 + on(n)=.false. + ut(n)=eps + name(n)=dname + +20 if(k.eq.0) then !Get start times (k=0) + if(on(n)) print*,'Error in timer: ',dname,' already on.' + level=level+1 !Increment the level + on(n)=.true. + ut0(n)=etime(tt) + ncall(n)=ncall(n)+1 + if(ncall(n).gt.1.and.nlevel(n).ne.level) then + nlevel(n)=-1 + else + nlevel(n)=level + endif + nparent(n)=onlevel(level-1) + onlevel(level)=n + + else if(k.eq.1) then !Get stop times and accumulate sums. (k=1) + if(on(n)) then + on(n)=.false. + ut1=etime(tt) + ut(n)=ut(n)+ut1-ut0(n) + endif + level=level-1 + endif + + ntrace=ntrace+1 + if(ntrace.lt.limtrace) write(lu,1020) ntrace,dname,k,level,nparent(n) +1020 format(i8,': ',a8,3i5) + go to 998 + +! Write out the timer statistics + +40 write(lu,1040) +1040 format(/' name time frac dtime', & + ' dfrac calls level parent'/73('-')) + + if(k.gt.100) then + ndiv=k-100 + do i=1,nmax + ncall(i)=ncall(i)/ndiv + ut(i)=ut(i)/ndiv + enddo + endif + + total=ut(1) + sum=0. + sumf=0. + do i=1,nmax + dut(i)=ut(i) + do j=i,nmax + if(nparent(j).eq.i) dut(i)=dut(i)-ut(j) + enddo + utf=ut(i)/total + dutf=dut(i)/total + sum=sum+dut(i) + sumf=sumf+dutf + kk=nlevel(i) + sname=space(1:kk)//name(i)//space(1:8-kk) + ename=space + if(i.ge.2) ename=name(nparent(i)) + write(lu,1060) float(i),sname,ut(i),utf,dut(i),dutf, & + ncall(i),nlevel(i),ename +1060 format(f4.0,a16,2(f10.2,f6.2),i7,i5,2x,a8) + enddo + + write(lu,1070) sum,sumf +1070 format(/36x,f10.2,f6.2) + nmax=0 + eps=0.000001 + ntrace=0 + level=0 + space=' ' + onlevel(0)=0 + +998 flush(lu) + +999 return +end subroutine timer diff --git a/timeval.h b/libm65/timeval.h similarity index 100% rename from timeval.h rename to libm65/timeval.h diff --git a/libm65/timf2.f90 b/libm65/timf2.f90 new file mode 100644 index 000000000..d2bc704fb --- /dev/null +++ b/libm65/timf2.f90 @@ -0,0 +1,220 @@ +subroutine timf2(nxpol,nfft,nwindow,nb,peaklimit,iqadjust,iqapply,faclim, & + cx0,cy0,gainx,gainy,phasex,phasey,cx1,cy1,slimit,lstrong,px,py,nzap) + +! Sequential processing of time-domain I/Q data, using Linrad-like +! "first FFT" and "first backward FFT". + +! cx0,cy0 - complex input data +! nfft - length of FFTs +! nwindow - 0 for no window, 2 for sin^2 window +! iqapply - 0/1 determines if I/Q phase and amplitude corrections applied +! gainx,y - gain error in Q channel, relative to I +! phasex,y - phase error +! cx1,cy1 - output data + +! Non-windowed processing means no overlap, so kstep=nfft. +! Sin^2 window has 50% overlap, kstep=nfft/2. + +! Frequencies with strong signals are identified and separated. The back +! transforms are done separately for weak and strong signals, so that +! noise blanking can be applied to the weak-signal portion. Strong and +! weak are finally re-combined in the time domain. + + parameter (MAXFFT=1024,MAXNH=MAXFFT/2) + parameter (MAXSIGS=100) + complex cx0(0:nfft-1),cx1(0:nfft-1) + complex cy0(0:nfft-1),cy1(0:nfft-1) + complex cx(0:MAXFFT-1),cxt(0:MAXFFT-1) + complex cy(0:MAXFFT-1),cyt(0:MAXFFT-1) + complex cxs(0:MAXFFT-1),covxs(0:MAXNH-1) !Strong X signals + complex cys(0:MAXFFT-1),covys(0:MAXNH-1) !Strong Y signals + complex cxw(0:MAXFFT-1),covxw(0:MAXNH-1) !Weak X signals + complex cyw(0:MAXFFT-1),covyw(0:MAXNH-1) !Weak Y signals + real*4 w(0:MAXFFT-1) + real*4 s(0:MAXFFT-1),stmp(0:MAXFFT-1) + logical*1 lstrong(0:MAXFFT-1),lprev + integer ia(MAXSIGS),ib(MAXSIGS) + complex h,u,v + logical first + data first/.true./ + save w,covxs,covxw,covys,covyw,s,ntc,ntot,nh,kstep,fac,first + + if(first) then + pi=4.0*atan(1.0) + do i=0,nfft-1 + w(i)=(sin(i*pi/nfft))**2 + enddo + covxs=0. + covxw=0. + covys=0. + covyw=0. + s=0. + ntc=0 + ntot=0 + nh=nfft/2 + kstep=nfft + if(nwindow.eq.2) kstep=nh + fac=1.0/nfft + slimit=1.e30 + first=.false. + endif + + cx(0:nfft-1)=cx0 + if(nwindow.eq.2) cx(0:nfft-1)=w(0:nfft-1)*cx(0:nfft-1) + call four2a(cx,nfft,1,1,1) !First forward FFT + + if(nxpol.ne.0) then + cy(0:nfft-1)=cy0 + if(nwindow.eq.2) cy(0:nfft-1)=w(0:nfft-1)*cy(0:nfft-1) + call four2a(cy,nfft,1,1,1) !First forward FFT + endif + + if(iqapply.ne.0) then !Apply I/Q corrections + h=gainx*cmplx(cos(phasex),sin(phasex)) + v=0. + do i=0,nfft-1 + u=cx(i) + if(i.gt.0) v=cx(nfft-i) + x=real(u) + real(v) - (aimag(u) + aimag(v))*aimag(h) + & + (real(u) - real(v))*real(h) + y=aimag(u) - aimag(v) + (aimag(u) + aimag(v))*real(h) + & + (real(u) - real(v))*aimag(h) + cxt(i)=0.5*cmplx(x,y) + enddo + else + cxt(0:nfft-1)=cx(0:nfft-1) + endif + + if(nxpol.ne.0) then + if(iqapply.ne.0) then !Apply I/Q corrections + h=gainy*cmplx(cos(phasey),sin(phasey)) + v=0. + do i=0,nfft-1 + u=cy(i) + if(i.gt.0) v=cy(nfft-i) + x=real(u) + real(v) - (aimag(u) + aimag(v))*aimag(h) + & + (real(u) - real(v))*real(h) + y=aimag(u) - aimag(v) + (aimag(u) + aimag(v))*real(h) + & + (real(u) - real(v))*aimag(h) + cyt(i)=0.5*cmplx(x,y) + enddo + else + cyt(0:nfft-1)=cy(0:nfft-1) + endif + endif + +! Identify frequencies with strong signals, copy frequency-domain +! data into array cs (strong) or cw (weak). + + ntot=ntot+1 + if(mod(ntot,128).eq.5) then + call pctile(s,stmp,1024,50,xmedian) + slimit=faclim*xmedian + endif + + if(ntc.lt.96000/nfft) ntc=ntc+1 + uu=1.0/ntc + smax=0. + do i=0,nfft-1 + p=real(cxt(i))**2 + aimag(cxt(i))**2 + if(nxpol.ne.0) p=p + real(cyt(i))**2 + aimag(cyt(i))**2 + s(i)=(1.0-uu)*s(i) + uu*p + lstrong(i)=(s(i).gt.slimit) + if(s(i).gt.smax) smax=s(i) + enddo + + nsigs=0 + lprev=.false. + iwid=1 + ib=-99 + do i=0,nfft-1 + if(lstrong(i) .and. (.not.lprev)) then + if(nsigs.lt.MAXSIGS) nsigs=nsigs+1 + ia(nsigs)=i-iwid + if(ia(nsigs).lt.0) ia(nsigs)=0 + endif + if(.not.lstrong(i) .and. lprev) then + ib(nsigs)=i-1+iwid + if(ib(nsigs).gt.nfft-1) ib(nsigs)=nfft-1 + endif + lprev=lstrong(i) + enddo + + if(nsigs.gt.0) then + do i=1,nsigs + ja=ia(i) + jb=ib(i) + if(ja.lt.0 .or. ja.gt.nfft-1 .or. jb.lt.0 .or. jb.gt.nfft-1) then + cycle + endif + if(jb.eq.-99) jb=ja + min(2*iwid,nfft-1) + lstrong(ja:jb)=.true. + enddo + endif + + do i=0,nfft-1 + if(lstrong(i)) then + cxs(i)=fac*cxt(i) + cxw(i)=0. + if(nxpol.ne.0) then + cys(i)=fac*cyt(i) + cyw(i)=0. + endif + else + cxw(i)=fac*cxt(i) + cxs(i)=0. + if(nxpol.ne.0) then + cyw(i)=fac*cyt(i) + cys(i)=0. + endif + endif + enddo + + call four2a(cxw,nfft,1,-1,1) !Transform weak and strong X + call four2a(cxs,nfft,1,-1,1) !back to time domain, separately + + if(nxpol.ne.0) then + call four2a(cyw,nfft,1,-1,1) !Transform weak and strong Y + call four2a(cys,nfft,1,-1,1) !back to time domain, separately + endif + + if(nwindow.eq.2) then + cxw(0:nh-1)=cxw(0:nh-1)+covxw(0:nh-1) !Add previous segment's 2nd half + covxw(0:nh-1)=cxw(nh:nfft-1) !Save 2nd half + cxs(0:nh-1)=cxs(0:nh-1)+covxs(0:nh-1) !Ditto for strong signals + covxs(0:nh-1)=cxs(nh:nfft-1) + + if(nxpol.ne.0) then + cyw(0:nh-1)=cyw(0:nh-1)+covyw(0:nh-1) !Add previous segment's 2nd half + covyw(0:nh-1)=cyw(nh:nfft-1) !Save 2nd half + cys(0:nh-1)=cys(0:nh-1)+covys(0:nh-1) !Ditto for strong signals + covys(0:nh-1)=cys(nh:nfft-1) + endif + endif + +! Apply noise blanking to weak data + if(nb.ne.0) then + do i=0,kstep-1 + peak=abs(cxw(i)) + if(nxpol.ne.0) peak=max(peak,abs(cyw(i))) + if(peak.gt.peaklimit) then + cxw(i)=0. + if(nxpol.ne.0) cyw(i)=0. + nzap=nzap+1 + endif + enddo + endif + +! Compute power levels from weak data only + do i=0,kstep-1 + px=px + real(cxw(i))**2 + aimag(cxw(i))**2 + if(nxpol.ne.0) py=py + real(cyw(i))**2 + aimag(cyw(i))**2 + enddo + + cx1(0:kstep-1)=cxw(0:kstep-1) + cxs(0:kstep-1) !Recombine weak + strong + if(nxpol.ne.0) then + cy1(0:kstep-1)=cyw(0:kstep-1) + cys(0:kstep-1) !Weak + strong + endif + + return +end subroutine timf2 diff --git a/libm65/tm2.f90 b/libm65/tm2.f90 new file mode 100644 index 000000000..9d7777750 --- /dev/null +++ b/libm65/tm2.f90 @@ -0,0 +1,14 @@ +subroutine tm2(day,xlat4,xlon4,xl4,b4) + + implicit real*8 (a-h,o-z) + parameter (RADS=0.0174532925199433d0) + + real*4 day4,xlat4,xlon4,xl4,b4 + + glat=xlat4*RADS + glong=xlon4*RADS + call tmoonsub(day,glat,glong,el,rv,xl,b,pax) + xl4=xl + b4=b + +end subroutine tm2 diff --git a/libm65/tmoonsub.c b/libm65/tmoonsub.c new file mode 100644 index 000000000..3b171b540 --- /dev/null +++ b/libm65/tmoonsub.c @@ -0,0 +1,514 @@ +#include +#include +#include + +#define RADS 0.0174532925199433 +#define DEGS 57.2957795130823 +#define TPI 6.28318530717959 +#define PI 3.1415927 + +/* ratio of earth radius to astronomical unit */ +#define ER_OVER_AU 0.0000426352325194252 + +/* all prototypes here */ + +double getcoord(int coord); +void getargs(int argc, char *argv[], int *y, int *m, double *tz, double *glong, double *glat); +double range(double y); +double rangerad(double y); +double days(int y, int m, int dn, double hour); +double days_(int *y, int *m, int *dn, double *hour); +void moonpos(double, double *, double *, double *); +void sunpos(double , double *, double *, double *); +double moontransit(int y, int m, int d, double timezone, double glat, double glong, int *nt); +double atan22(double y, double x); +double epsilon(double d); +void equatorial(double d, double *lon, double *lat, double *r); +void ecliptic(double d, double *lon, double *lat, double *r); +double gst(double d); +void topo(double lst, double glat, double *alp, double *dec, double *r); +double alt(double glat, double ha, double dec); +void libration(double day, double lambda, double beta, double alpha, double *l, double *b, double *p); +void illumination(double day, double lra, double ldec, double dr, double sra, double sdec, double *pabl, double *ill); +int daysinmonth(int y, int m); +int isleap(int y); +void tmoonsub_(double *day, double *glat, double *glong, double *moonalt, + double *mrv, double *l, double *b, double *paxis); + +static const char +*usage = " Usage: tmoon date[yyyymm] timz[+/-h.hh] long[+/-dddmm] lat[+/-ddmm]\n" + "example: tmoon 200009 0 -00155 5230\n"; + +/* + getargs() gets the arguments from the command line, does some basic error + checking, and converts arguments into numerical form. Arguments are passed + back in pointers. Error messages print to stderr so re-direction of output + to file won't leave users blind. Error checking prints list of all errors + in a command line before quitting. +*/ +void getargs(int argc, char *argv[], int *y, int *m, double *tz, + double *glong, double *glat) { + + int date, latitude, longitude; + int mflag = 0, yflag = 0, longflag = 0, latflag = 0, tzflag = 0; + int longminflag = 0, latminflag = 0, dflag = 0; + + /* if not right number of arguments, then print example command line */ + + if (argc !=5) { + fprintf(stderr, usage); + exit(EXIT_FAILURE); + } + + date = atoi(argv[1]); + *y = date / 100; + *m = date - *y * 100; + *tz = (double) atof(argv[2]); + longitude = atoi(argv[3]); + latitude = atoi(argv[4]); + *glong = RADS * getcoord(longitude); + *glat = RADS * getcoord(latitude); + + /* set a flag for each error found */ + + if (*m > 12 || *m < 1) mflag = 1; + if (*y > 2500) yflag = 1; + if (date < 150001) dflag = 1; + if (fabs((float) *glong) > 180 * RADS) longflag = 1; + if (abs(longitude) % 100 > 59) longminflag = 1; + if (fabs((float) *glat) > 90 * RADS) latflag = 1; + if (abs(latitude) % 100 > 59) latminflag = 1; + if (fabs((float) *tz) > 12) tzflag = 1; + + /* print all the errors found */ + + if (dflag == 1) { + fprintf(stderr, "date: dates must be in form yyyymm, gregorian, and later than 1500 AD\n"); + } + if (yflag == 1) { + fprintf(stderr, "date: too far in future - accurate from 1500 to 2500\n"); + } + if (mflag == 1) { + fprintf(stderr, "date: month must be in range 0 to 12, eg - August 2000 is entered as 200008\n"); + } + if (tzflag == 1) { + fprintf(stderr, "timz: must be in range +/- 12 hours, eg -6 for Chicago\n"); + } + if (longflag == 1) { + fprintf(stderr, "long: must be in range +/- 180 degrees\n"); + } + if (longminflag == 1) { + fprintf(stderr, "long: last two digits are arcmin - max 59\n"); + } + if (latflag == 1) { + fprintf(stderr, " lat: must be in range +/- 90 degrees\n"); + } + if (latminflag == 1) { + fprintf(stderr, " lat: last two digits are arcmin - max 59\n"); + } + + /* quits if one or more flags set */ + + if (dflag + mflag + yflag + longflag + latflag + tzflag + longminflag + latminflag > 0) { + exit(EXIT_FAILURE); + } + +} + +/* + returns coordinates in decimal degrees given the + coord as a ddmm value stored in an integer. +*/ +double getcoord(int coord) { + int west = 1; + double glg, deg; + if (coord < 0) west = -1; + glg = fabs((double) coord/100); + deg = floor(glg); + glg = west* (deg + (glg - deg)*100 / 60); + return(glg); +} + +/* + days() takes the year, month, day in the month and decimal hours + in the day and returns the number of days since J2000.0. + Assumes Gregorian calendar. +*/ +double days(int y, int m, int d, double h) { + int a, b; + double day; + + /* + The lines below work from 1900 march to feb 2100 + a = 367 * y - 7 * (y + (m + 9) / 12) / 4 + 275 * m / 9 + d; + day = (double)a - 730531.5 + hour / 24; + */ + + /* These lines work for any Gregorian date since 0 AD */ + if (m ==1 || m==2) { + m +=12; + y -= 1; + } + a = y / 100; + b = 2 - a + a/4; + day = floor(365.25*(y + 4716)) + floor(30.6001*(m + 1)) + + d + b - 1524.5 - 2451545 + h/24; + return(day); +} +double days_(int *y0, int *m0, int *d0, double *h0) +{ + return days(*y0,*m0,*d0,*h0); +} + +/* +Returns 1 if y a leap year, and 0 otherwise, according +to the Gregorian calendar +*/ +int isleap(int y) { + int a = 0; + if(y % 4 == 0) a = 1; + if(y % 100 == 0) a = 0; + if(y % 400 == 0) a = 1; + return(a); +} + +/* +Given the year and the month, function returns the +number of days in the month. Valid for Gregorian +calendar. +*/ +int daysinmonth(int y, int m) { + int b = 31; + if(m == 2) { + if(isleap(y) == 1) b= 29; + else b = 28; + } + if(m == 4 || m == 6 || m == 9 || m == 11) b = 30; + return(b); +} + +/* +moonpos() takes days from J2000.0 and returns ecliptic coordinates +of moon in the pointers. Note call by reference. +This function is within a couple of arcminutes most of the time, +and is truncated from the Meeus Ch45 series, themselves truncations of +ELP-2000. Returns moon distance in earth radii. +Terms have been written out explicitly rather than using the +table based method as only a small number of terms is +retained. +*/ +void moonpos(double d, double *lambda, double *beta, double *rvec) { + double dl, dB, dR, L, D, M, M1, F, e, lm, bm, rm, t; + + t = d / 36525; + + L = range(218.3164591 + 481267.88134236 * t) * RADS; + D = range(297.8502042 + 445267.1115168 * t) * RADS; + M = range(357.5291092 + 35999.0502909 * t) * RADS; + M1 = range(134.9634114 + 477198.8676313 * t - .008997 * t * t) * RADS; + F = range(93.27209929999999 + 483202.0175273 * t - .0034029*t*t)*RADS; + e = 1 - .002516 * t; + + dl = 6288774 * sin(M1); + dl += 1274027 * sin(2 * D - M1); + dl += 658314 * sin(2 * D); + dl += 213618 * sin(2 * M1); + dl -= e * 185116 * sin(M); + dl -= 114332 * sin(2 * F) ; + dl += 58793 * sin(2 * D - 2 * M1); + dl += e * 57066 * sin(2 * D - M - M1) ; + dl += 53322 * sin(2 * D + M1); + dl += e * 45758 * sin(2 * D - M); + dl -= e * 40923 * sin(M - M1); + dl -= 34720 * sin(D) ; + dl -= e * 30383 * sin(M + M1) ; + dl += 15327 * sin(2 * D - 2 * F) ; + dl -= 12528 * sin(M1 + 2 * F); + dl += 10980 * sin(M1 - 2 * F); + lm = rangerad(L + dl / 1000000 * RADS); + + dB = 5128122 * sin(F); + dB += 280602 * sin(M1 + F); + dB += 277693 * sin(M1 - F); + dB += 173237 * sin(2 * D - F); + dB += 55413 * sin(2 * D - M1 + F); + dB += 46271 * sin(2 * D - M1 - F); + dB += 32573 * sin(2 * D + F); + dB += 17198 * sin(2 * M1 + F); + dB += 9266 * sin(2 * D + M1 - F); + dB += 8822 * sin(2 * M1 - F); + dB += e * 8216 * sin(2 * D - M - F); + dB += 4324 * sin(2 * D - 2 * M1 - F); + bm = dB / 1000000 * RADS; + + dR = -20905355 * cos(M1); + dR -= 3699111 * cos(2 * D - M1); + dR -= 2955968 * cos(2 * D); + dR -= 569925 * cos(2 * M1); + dR += e * 48888 * cos(M); + dR -= 3149 * cos(2 * F); + dR += 246158 * cos(2 * D - 2 * M1); + dR -= e * 152138 * cos(2 * D - M - M1) ; + dR -= 170733 * cos(2 * D + M1); + dR -= e * 204586 * cos(2 * D - M); + dR -= e * 129620 * cos(M - M1); + dR += 108743 * cos(D); + dR += e * 104755 * cos(M + M1); + dR += 79661 * cos(M1 - 2 * F); + rm = 385000.56 + dR / 1000; + + *lambda = lm; + *beta = bm; + /* distance to Moon must be in Earth radii */ + *rvec = rm / 6378.14; +} + +/* +topomoon() takes the local siderial time, the geographical +latitude of the observer, and pointers to the geocentric +equatorial coordinates. The function overwrites the geocentric +coordinates with topocentric coordinates on a simple spherical +earth model (no polar flattening). Expects Moon-Earth distance in +Earth radii. Formulas scavenged from Astronomical Almanac 'low +precision formulae for Moon position' page D46. +*/ + +void topo(double lst, double glat, double *alp, double *dec, double *r) { + double x, y, z, r1; + x = *r * cos(*dec) * cos(*alp) - cos(glat) * cos(lst); + y = *r * cos(*dec) * sin(*alp) - cos(glat) * sin(lst); + z = *r * sin(*dec) - sin(glat); + r1 = sqrt(x*x + y*y + z*z); + *alp = atan22(y, x); + *dec = asin(z / r1); + *r = r1; +} + +/* +moontransit() takes date, the time zone and geographic longitude +of observer and returns the time (decimal hours) of lunar transit +on that day if there is one, and sets the notransit flag if there +isn't. See Explanatory Supplement to Astronomical Almanac +section 9.32 and 9.31 for the method. +*/ + +double moontransit(int y, int m, int d, double tz, double glat, double glong, int *notransit) { + double hm, ht, ht1, lon, lat, rv, dnew, lst; + int itcount; + + ht1 = 180 * RADS; + ht = 0; + itcount = 0; + *notransit = 0; + do { + ht = ht1; + itcount++; + dnew = days(y, m, d, ht * DEGS/15) - tz/24; + lst = gst(dnew) + glong; + /* find the topocentric Moon ra (hence hour angle) and dec */ + moonpos(dnew, &lon, &lat, &rv); + equatorial(dnew, &lon, &lat, &rv); + topo(lst, glat, &lon, &lat, &rv); + hm = rangerad(lst - lon); + ht1 = rangerad(ht - hm); + /* if no convergence, then no transit on that day */ + if (itcount > 30) { + *notransit = 1; + break; + } + } + while (fabs(ht - ht1) > 0.04 * RADS); + return(ht1); +} + +/* + Calculates the selenographic coordinates of either the sub Earth point + (optical libration) or the sub-solar point (selen. coords of centre of + bright hemisphere). Based on Meeus chapter 51 but neglects physical + libration and nutation, with some simplification of the formulas. +*/ +void libration(double day, double lambda, double beta, double alpha, double *l, double *b, double *p) { + double i, f, omega, w, y, x, a, t, eps; + t = day / 36525; + i = 1.54242 * RADS; + eps = epsilon(day); + f = range(93.2720993 + 483202.0175273 * t - .0034029 * t * t) * RADS; + omega = range(125.044555 - 1934.1361849 * t + .0020762 * t * t) * RADS; + w = lambda - omega; + y = sin(w) * cos(beta) * cos(i) - sin(beta) * sin(i); + x = cos(w) * cos(beta); + a = atan22(y, x); + *l = a - f; + + /* kludge to catch cases of 'round the back' angles */ + if (*l < -90 * RADS) *l += TPI; + if (*l > 90 * RADS) *l -= TPI; + *b = asin(-sin(w) * cos(beta) * sin(i) - sin(beta) * cos(i)); + + /* pa pole axis - not used for Sun stuff */ + x = sin(i) * sin(omega); + y = sin(i) * cos(omega) * cos(eps) - cos(i) * sin(eps); + w = atan22(x, y); + *p = rangerad(asin(sqrt(x*x + y*y) * cos(alpha - w) / cos(*b))); +} + +/* + Takes: days since J2000.0, eq coords Moon, ratio of moon to sun distance, + eq coords Sun + Returns: position angle of bright limb wrt NCP, percentage illumination + of Sun +*/ +void illumination(double day, double lra, double ldec, double dr, double sra, double sdec, double *pabl, double *ill) { + double x, y, phi, i; + y = cos(sdec) * sin(sra - lra); + x = sin(sdec) * cos(ldec) - cos(sdec) * sin(ldec) * cos (sra - lra); + *pabl = atan22(y, x); + phi = acos(sin(sdec) * sin(ldec) + cos(sdec) * cos(ldec) * cos(sra-lra)); + i = atan22(sin(phi) , (dr - cos(phi))); + *ill = 0.5*(1 + cos(i)); +} + +/* +sunpos() takes days from J2000.0 and returns ecliptic longitude +of Sun in the pointers. Latitude is zero at this level of precision, +but pointer left in for consistency in number of arguments. +This function is within 0.01 degree (1 arcmin) almost all the time +for a century either side of J2000.0. This is from the 'low precision +fomulas for the Sun' from C24 of Astronomical Alamanac +*/ +void sunpos(double d, double *lambda, double *beta, double *rvec) { + double L, g, ls, bs, rs; + + L = range(280.461 + .9856474 * d) * RADS; + g = range(357.528 + .9856003 * d) * RADS; + ls = L + (1.915 * sin(g) + .02 * sin(2 * g)) * RADS; + bs = 0; + rs = 1.00014 - .01671 * cos(g) - .00014 * cos(2 * g); + *lambda = ls; + *beta = bs; + *rvec = rs; +} + +/* +this routine returns the altitude given the days since J2000.0 +the hour angle and declination of the object and the latitude +of the observer. Used to find the Sun's altitude to put a letter +code on the transit time, and to find the Moon's altitude at +transit just to make sure that the Moon is visible. +*/ +double alt(double glat, double ha, double dec) { + return(asin(sin(dec) * sin(glat) + cos(dec) * cos(glat) * cos(ha))); +} + +/* returns an angle in degrees in the range 0 to 360 */ +double range(double x) { + double a, b; + b = x / 360; + a = 360 * (b - floor(b)); + if (a < 0) + a = 360 + a; + return(a); +} + +/* returns an angle in rads in the range 0 to two pi */ +double rangerad(double x) { + double a, b; + b = x / TPI; + a = TPI * (b - floor(b)); + if (a < 0) + a = TPI + a; + return(a); +} + +/* +gets the atan2 function returning angles in the right +order and range +*/ +double atan22(double y, double x) { + double a; + + a = atan2(y, x); + if (a < 0) a += TPI; + return(a); +} + +/* +returns mean obliquity of ecliptic in radians given days since +J2000.0. +*/ +double epsilon(double d) { + double t = d/ 36525; + return((23.4392911111111 - (t* (46.8150 + 0.00059*t)/3600)) *RADS); +} + +/* +replaces ecliptic coordinates with equatorial coordinates +note: call by reference destroys original values +R is unchanged. +*/ +void equatorial(double d, double *lon, double *lat, double *r) { + double eps, ceps, seps, l, b; + + l = *lon; + b = * lat; + eps = epsilon(d); + ceps = cos(eps); + seps = sin(eps); + *lon = atan22(sin(l)*ceps - tan(b)*seps, cos(l)); + *lat = asin(sin(b)*ceps + cos(b)*seps*sin(l)); +} + +/* +replaces equatorial coordinates with ecliptic ones. Inverse +of above, but used to find topocentric ecliptic coords. +*/ +void ecliptic(double d, double *lon, double *lat, double *r) { + double eps, ceps, seps, alp, dec; + alp = *lon; + dec = *lat; + eps = epsilon(d); + ceps = cos(eps); + seps = sin(eps); + *lon = atan22(sin(alp)*ceps + tan(dec)*seps, cos(alp)); + *lat = asin(sin(dec)*ceps - cos(dec)*seps*sin(alp)); +} + +/* +returns the siderial time at greenwich meridian as +an angle in radians given the days since J2000.0 +*/ +double gst( double d) { + double t = d / 36525; + double theta; + theta = range(280.46061837 + 360.98564736629 * d + 0.000387933 * t * t); + return(theta * RADS); +} + +void tmoonsub_(double *day, double *glat, double *glong, double *moonalt, + double *mrv, double *l, double *b, double *paxis) +{ + double mlambda, mbeta; + double malpha, mdelta; + double lst, mhr; + double tlambda, tbeta, trv; + + lst = gst(*day) + *glong; + + /* find Moon topocentric coordinates for libration calculations */ + + moonpos(*day, &mlambda, &mbeta, mrv); + malpha = mlambda; + mdelta = mbeta; + equatorial(*day, &malpha, &mdelta, mrv); + topo(lst, *glat, &malpha, &mdelta, mrv); + mhr = rangerad(lst - malpha); + *moonalt = alt(*glat, mhr, mdelta); + + /* Optical libration and Position angle of the Pole */ + + tlambda = malpha; + tbeta = mdelta; + trv = *mrv; + ecliptic(*day, &tlambda, &tbeta, &trv); + libration(*day, tlambda, tbeta, malpha, l, b, paxis); +} diff --git a/toxyz.f b/libm65/toxyz.f similarity index 100% rename from toxyz.f rename to libm65/toxyz.f diff --git a/trimlist.f b/libm65/trimlist.f similarity index 70% rename from trimlist.f rename to libm65/trimlist.f index 4270cafac..1834b4cac 100644 --- a/trimlist.f +++ b/libm65/trimlist.f @@ -1,18 +1,17 @@ - subroutine trimlist(sig,kk,indx,nsiz,nz) + subroutine trimlist(sig,km,ftol,indx,nsiz,nz) parameter (MAXMSG=1000) !Size of decoded message list real sig(MAXMSG,30) integer indx(MAXMSG),nsiz(MAXMSG) - data ftol/0.02/ C 1 2 3 4 5 6 7 8 C nfile nutc freq snr dt ipol flip sync - call indexx(kk,sig(1,3),indx) !Sort list by frequency + call indexx(km,sig(1,3),indx) !Sort list by frequency n=1 i0=1 - do i=2,kk + do i=2,km j0=indx(i-1) j=indx(i) if(sig(j,3)-sig(j0,3).gt.ftol) then @@ -22,7 +21,7 @@ C nfile nutc freq snr dt ipol flip sync endif enddo nz=n - nsiz(nz)=kk+1-i0 + nsiz(nz)=km+1-i0 nsiz(nz+1)=-1 return diff --git a/twkfreq.f b/libm65/twkfreq.f similarity index 93% rename from twkfreq.f rename to libm65/twkfreq.f index 588fdb664..0199342ef 100644 --- a/twkfreq.f +++ b/libm65/twkfreq.f @@ -8,6 +8,7 @@ C Apply AFC corrections to the c4aa and c4bb data w=1.0 + wstep=1.0 x0=0.5*(n5+1) s=2.0/n5 do i=1,n5 diff --git a/libm65/unpackcall.f b/libm65/unpackcall.f new file mode 100644 index 000000000..feb5bb466 --- /dev/null +++ b/libm65/unpackcall.f @@ -0,0 +1,142 @@ + subroutine unpackcall(ncall,word,iv2,psfx) + + parameter (NBASE=37*36*10*27*27*27) + character word*12,c*37,psfx*4 + + data c/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ '/ + + n=ncall + iv2=0 + if(n.ge.262177560) go to 20 + word='......' + if(n.ge.262177560) go to 999 !Plain text message ... + i=mod(n,27)+11 + word(6:6)=c(i:i) + n=n/27 + i=mod(n,27)+11 + word(5:5)=c(i:i) + n=n/27 + i=mod(n,27)+11 + word(4:4)=c(i:i) + n=n/27 + i=mod(n,10)+1 + word(3:3)=c(i:i) + n=n/10 + i=mod(n,36)+1 + word(2:2)=c(i:i) + n=n/36 + i=n+1 + word(1:1)=c(i:i) + do i=1,4 + if(word(i:i).ne.' ') go to 10 + enddo + go to 999 + 10 word=word(i:) + go to 999 + + 20 if(n.ge.267796946) go to 999 + +! We have a JT65v2 message + if((n.ge.262178563) .and. (n.le.264002071)) Then +! CQ with prefix + iv2=1 + n=n-262178563 + i=mod(n,37)+1 + psfx(4:4)=c(i:i) + n=n/37 + i=mod(n,37)+1 + psfx(3:3)=c(i:i) + n=n/37 + i=mod(n,37)+1 + psfx(2:2)=c(i:i) + n=n/37 + i=n+1 + psfx(1:1)=c(i:i) + endif + + if((n.ge.264002072) .and. (n.le.265825580)) Then +! QRZ with prefix + iv2=2 + n=n-264002072 + i=mod(n,37)+1 + psfx(4:4)=c(i:i) + n=n/37 + i=mod(n,37)+1 + psfx(3:3)=c(i:i) + n=n/37 + i=mod(n,37)+1 + psfx(2:2)=c(i:i) + n=n/37 + i=n+1 + psfx(1:1)=c(i:i) + endif + + if((n.ge.265825581) .and. (n.le.267649089)) Then +! DE with prefix + iv2=3 + n=n-265825581 + i=mod(n,37)+1 + psfx(4:4)=c(i:i) + n=n/37 + i=mod(n,37)+1 + psfx(3:3)=c(i:i) + n=n/37 + i=mod(n,37)+1 + psfx(2:2)=c(i:i) + n=n/37 + i=n+1 + psfx(1:1)=c(i:i) + endif + + if((n.ge.267649090) .and. (n.le.267698374)) Then +! CQ with suffix + iv2=4 + n=n-267649090 + i=mod(n,37)+1 + psfx(3:3)=c(i:i) + n=n/37 + i=mod(n,37)+1 + psfx(2:2)=c(i:i) + n=n/37 + i=n+1 + psfx(1:1)=c(i:i) + endif + + if((n.ge.267698375) .and. (n.le.267747659)) Then +! QRZ with suffix + iv2=5 + n=n-267698375 + i=mod(n,37)+1 + psfx(3:3)=c(i:i) + n=n/37 + i=mod(n,37)+1 + psfx(2:2)=c(i:i) + n=n/37 + i=n+1 + psfx(1:1)=c(i:i) + endif + + if((n.ge.267747660) .and. (n.le.267796944)) Then +! DE with suffix + iv2=6 + n=n-267747660 + i=mod(n,37)+1 + psfx(3:3)=c(i:i) + n=n/37 + i=mod(n,37)+1 + psfx(2:2)=c(i:i) + n=n/37 + i=n+1 + psfx(1:1)=c(i:i) + endif + + if(n.eq.267796945) Then +! DE with no prefix or suffix + iv2=7 + psfx = ' ' + endif + + 999 if(word(1:3).eq.'3D0') word='3DA0'//word(4:) + + return + end diff --git a/unpackgrid.f b/libm65/unpackgrid.f similarity index 92% rename from unpackgrid.f rename to libm65/unpackgrid.f index 6d605eade..76bf8f099 100644 --- a/unpackgrid.f +++ b/libm65/unpackgrid.f @@ -8,7 +8,7 @@ dlat=mod(ng,180)-90 dlong=(ng/180)*2 - 180 + 2 call deg2grid(dlong,dlat,grid6) - grid=grid6 + grid=grid6(:4) go to 100 10 n=ng-NGBASE-1 diff --git a/unpackmsg.f b/libm65/unpackmsg.f similarity index 64% rename from unpackmsg.f rename to libm65/unpackmsg.f index 7bf24cc94..07bbd7b88 100644 --- a/unpackmsg.f +++ b/libm65/unpackmsg.f @@ -3,7 +3,7 @@ parameter (NBASE=37*36*10*27*27*27) parameter (NGBASE=180*180) integer dat(12) - character c1*12,c2*12,grid*4,msg*22,grid6*6 + character c1*12,c2*12,grid*4,msg*22,grid6*6,psfx*4,junk2*4 logical cqnnn cqnnn=.false. @@ -21,10 +21,9 @@ go to 100 endif - if(nc1.lt.NBASE) then - call unpackcall(nc1,c1) - else - c1='......' + call unpackcall(nc1,c1,iv2,psfx) + if(iv2.eq.0) then +! This is an "original JT65" message if(nc1.eq.NBASE+1) c1='CQ ' if(nc1.eq.NBASE+2) c1='QRZ ' nfreq=nc1-NBASE-3 @@ -32,16 +31,28 @@ write(c1,1002) nfreq 1002 format('CQ ',i3.3) cqnnn=.true. - endif - endif - - if(nc2.lt.NBASE) then - call unpackcall(nc2,c2) - else - c2='......' + endif endif + call unpackcall(nc2,c2,junk1,junk2) call unpackgrid(ng,grid) + + if(iv2.gt.0) then +! This is a JT65v2 message + n1=len_trim(psfx) + n2=len_trim(c2) + if(iv2.eq.1) msg='CQ '//psfx(:n1)//'/'//c2(:n2)//' '//grid + if(iv2.eq.2) msg='QRZ '//psfx(:n1)//'/'//c2(:n2)//' '//grid + if(iv2.eq.3) msg='DE '//psfx(:n1)//'/'//c2(:n2)//' '//grid + if(iv2.eq.4) msg='CQ '//c2(:n2)//'/'//psfx(:n1)//' '//grid + if(iv2.eq.5) msg='QRZ '//c2(:n2)//'/'//psfx(:n1)//' '//grid + if(iv2.eq.6) msg='DE '//c2(:n2)//'/'//psfx(:n1)//' '//grid + if(iv2.eq.7) msg='DE '//c2(:n2)//' '//grid + go to 100 + else + + endif + grid6=grid//'ma' call grid2k(grid6,k) if(k.ge.1 .and. k.le.450) call getpfx2(k,c1) @@ -55,7 +66,7 @@ msg=' ' j=0 if(cqnnn) then - msg=c1//' ' + msg=c1//' ' j=7 !### ??? ### go to 10 endif @@ -73,7 +84,7 @@ msg(j:j)=c2(i:i) if(c2(i:i).eq.' ') go to 20 enddo - j=j+1 + if(j.le.21) j=j+1 msg(j:j)=' ' 20 if(k.eq.0) then @@ -81,7 +92,7 @@ if(j.le.21) j=j+1 msg(j:j)=grid(i:i) enddo - j=j+1 + if(j.le.21) j=j+1 msg(j:j)=' ' endif diff --git a/unpacktext.f b/libm65/unpacktext.f similarity index 100% rename from unpacktext.f rename to libm65/unpacktext.f diff --git a/wrapkarn.c b/libm65/wrapkarn.c similarity index 68% rename from wrapkarn.c rename to libm65/wrapkarn.c index d22163f75..1b1a6311f 100644 --- a/wrapkarn.c +++ b/libm65/wrapkarn.c @@ -1,83 +1,70 @@ -#include -#include -#include -#include -#include -#include "rs.h" - -void *rs; -static int first=1; - -#ifdef CVF -void __stdcall RS_ENCODE(int *dgen, int *sent) -#else -void rs_encode_(int *dgen, int *sent) -#endif - - // Encode JT65 data dgen[12], producing sent[63]. -{ - int dat1[12]; - int b[51]; - int i; - - if(first) { - // Initialize the JT65 codec - rs=init_rs_int(6,0x43,3,1,51,0); - first=0; - } - - // Reverse data order for the Karn codec. - for(i=0; i<12; i++) { - dat1[i]=dgen[11-i]; - } - // Compute the parity symbols - encode_rs_int(rs,dat1,b); - - // Move parity symbols and data into sent[] array, in reverse order. - for (i = 0; i < 51; i++) sent[50-i] = b[i]; - for (i = 0; i < 12; i++) sent[i+51] = dat1[11-i]; -} - -#ifdef CVF -void __stdcall RS_DECODE(int *recd0, int *era0, int *numera0, int *decoded, int *nerr) -#else -void rs_decode_(int *recd0, int *era0, int *numera0, int *decoded, int *nerr) -#endif - - // Decode JT65 received data recd0[63], producing decoded[12]. - // Erasures are indicated in era0[numera]. The number of corrected - // errors is *nerr. If the data are uncorrectable, *nerr=-1 is - // returned. -{ - int numera; - int i; - int era_pos[50]; - int recd[63]; - - if(first) { - rs=init_rs_int(6,0x43,3,1,51,0); - first=0; - } - - numera=*numera0; - for(i=0; i<12; i++) recd[i]=recd0[62-i]; - for(i=0; i<51; i++) recd[12+i]=recd0[50-i]; - if(numera) - for(i=0; i +#include +#include +#include +#include +#include "rs.h" + +static void *rs; +static int first=1; + +void rs_encode_(int *dgen, int *sent) +// Encode JT65 data dgen[12], producing sent[63]. +{ + int dat1[12]; + int b[51]; + int i; + + if(first) { + // Initialize the JT65 codec + rs=init_rs_int(6,0x43,3,1,51,0); + first=0; + } + + // Reverse data order for the Karn codec. + for(i=0; i<12; i++) { + dat1[i]=dgen[11-i]; + } + // Compute the parity symbols + encode_rs_int(rs,dat1,b); + + // Move parity symbols and data into sent[] array, in reverse order. + for (i = 0; i < 51; i++) sent[50-i] = b[i]; + for (i = 0; i < 12; i++) sent[i+51] = dat1[11-i]; +} + +void rs_decode_(int *recd0, int *era0, int *numera0, int *decoded, int *nerr) +// Decode JT65 received data recd0[63], producing decoded[12]. +// Erasures are indicated in era0[numera]. The number of corrected +// errors is *nerr. If the data are uncorrectable, *nerr=-1 is returned. +{ + int numera; + int i; + int era_pos[50]; + int recd[63]; + + if(first) { + rs=init_rs_int(6,0x43,3,1,51,0); + first=0; + } + + numera=*numera0; + for(i=0; i<12; i++) recd[i]=recd0[62-i]; + for(i=0; i<51; i++) recd[12+i]=recd0[50-i]; + if(numera) + for(i=0; iioQg%tQ*|Zf>)pikS2~xF5mUR*&+Af8rjaWhyg18`zch?ZBPQ0>R zN>9BYPW=;lLj41J;83X&;?P5ddPF_<*b^u2>3cJtAKvlqVu-Nx?3wr8`15-+-<$Et z^G?{={i3*7O<&8)^>b@=l-0C;De0~?R+853A^@BMn2Z664*^P#0cKBdnR)?0GV>&n zb$p_fYg}d@pdZOgE|oR_$@EPwb2yI47CuqRkGM=t;Co5#bE!PXaVXQzNNjuK%GTBG z9sAPP*Dh{vZ0%g#wtcT1IeR_d4V~Bp+upq1YME~EQ_7Ef?R&EuJvzORaFYVEFqfY4cVlUX|FCxd3GVOoQ4WpE= zR4Bh*7dffL(K z7&<>D>BzLGk$eD--(@MHqpds)Z13;is7xoIF$alaq+(b zAP)ilMS_+JN3k{JLS`e0k+XxZab`kC@}(Pl%E#b=Z^2UQy6x}p&R-KyYuNBHe*J1f z`Ky}Obz*0}F7)qW<5%?iJ@KU&o3QjW@mmpoSnS{*&5!g=s6NG%VUCYc7Ya)YFjvOX z3OrMQbr9g7TDjtN!XOIn#MOoEGu76{=4Em>uH&eok@N;W6O$~(N0`oBBh5~**TWAz zs7}Dafj|{ANMAMvBHktd`_^5dVUZEqxX?7n2NfWFETtj+r*um$dON_ENsk_5a0~Bm zP{T*@D<>oBjb(ZIY!${BBYtDwNnZxNAr8rtiDPn zPa)oj#g{vu^1xN4e;;CJt3Wk*9OQ|9%=v4$%M@vvsKTIxr&(d8_zOKxa@Rh0_KiW6rMh&5G!d%lz8I&XF}$W zQ9FC-tB7_uIvOy{z9Xgyn>W(N0DgXeh;;m5sM)0;e}rQ5>&xoLh(kLV!xHCYGql`z z!+80gz~e{pLqN06X0Oqci1fZdQ>XnyKpa*H)+J)rU%m;RcimV+D(r&9=D#e5fHs8x Nw0hXek-vo|-v1f)vM2xm diff --git a/loc.c b/loc.c deleted file mode 100644 index 47fd5e777..000000000 --- a/loc.c +++ /dev/null @@ -1,4 +0,0 @@ -int loc_(void *a) -{ - return (int)a; -} diff --git a/main.cpp b/main.cpp new file mode 100644 index 000000000..d904ced9e --- /dev/null +++ b/main.cpp @@ -0,0 +1,11 @@ +#include +#include +#include "mainwindow.h" + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + return a.exec(); +} diff --git a/mainwindow.cpp b/mainwindow.cpp new file mode 100644 index 000000000..97e33ff57 --- /dev/null +++ b/mainwindow.cpp @@ -0,0 +1,1970 @@ +//------------------------------------------------------------- MainWindow +#include "mainwindow.h" +#include "ui_mainwindow.h" +#include "devsetup.h" +#include "plotter.h" +#include "about.h" +#include "astro.h" +#include "widegraph.h" +#include "messages.h" +#include "bandmap.h" +#include "sleep.h" +#include + +#define NFFT 32768 + +short int iwave[60*11025]; //Wave file for Tx audio +int nwave; //Length of Tx waveform +bool btxok; //True if OK to transmit +double outputLatency; //Latency in seconds +qint16 id[4*60*96000]; + + +Astro* g_pAstro = NULL; +WideGraph* g_pWideGraph = NULL; +Messages* g_pMessages = NULL; + +BandMap* g_pBandMap = NULL; +QSharedMemory mem_m65("mem_m65"); + +QString rev="$Rev: 631 $"; +QString Program_Title_Version=" MAP65 v2.3.0, r" + rev.mid(6,3) + + " by K1JT"; + +extern const int RxDataFrequency = 96000; +extern const int TxDataFrequency = 11025; + +//-------------------------------------------------- MainWindow constructor +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); + + on_EraseButton_clicked(); + ui->labUTC->setStyleSheet( \ + "QLabel { background-color : black; color : yellow; }"); + ui->labTol1->setStyleSheet( \ + "QLabel { background-color : white; color : black; }"); + ui->labTol1->setFrameStyle(QFrame::Panel | QFrame::Sunken); + ui->dxStationGroupBox->setStyleSheet("QFrame{border: 5px groove red}"); + + QActionGroup* paletteGroup = new QActionGroup(this); + ui->actionCuteSDR->setActionGroup(paletteGroup); + ui->actionLinrad->setActionGroup(paletteGroup); + ui->actionAFMHot->setActionGroup(paletteGroup); + ui->actionBlue->setActionGroup(paletteGroup); + + QActionGroup* modeGroup = new QActionGroup(this); + ui->actionJT65A->setActionGroup(modeGroup); + ui->actionJT65B->setActionGroup(modeGroup); + ui->actionJT65C->setActionGroup(modeGroup); + + QActionGroup* saveGroup = new QActionGroup(this); + ui->actionSave_all->setActionGroup(saveGroup); + ui->actionNone->setActionGroup(saveGroup); + + QActionGroup* DepthGroup = new QActionGroup(this); + ui->actionNo_Deep_Search->setActionGroup(DepthGroup); + ui->actionNormal_Deep_Search->setActionGroup(DepthGroup); + ui->actionAggressive_Deep_Search->setActionGroup(DepthGroup); + + QButtonGroup* txMsgButtonGroup = new QButtonGroup; + txMsgButtonGroup->addButton(ui->txrb1,1); + txMsgButtonGroup->addButton(ui->txrb2,2); + txMsgButtonGroup->addButton(ui->txrb3,3); + txMsgButtonGroup->addButton(ui->txrb4,4); + txMsgButtonGroup->addButton(ui->txrb5,5); + txMsgButtonGroup->addButton(ui->txrb6,6); + connect(txMsgButtonGroup,SIGNAL(buttonClicked(int)),SLOT(set_ntx(int))); + connect(ui->decodedTextBrowser,SIGNAL(selectCallsign(bool)),this, + SLOT(selectCall2(bool))); + + setWindowTitle(Program_Title_Version); + + connect(&soundInThread, SIGNAL(readyForFFT(int)), + this, SLOT(dataSink(int))); + connect(&soundInThread, SIGNAL(error(QString)), this, + SLOT(showSoundInError(QString))); + connect(&soundInThread, SIGNAL(status(QString)), this, + SLOT(showStatusMessage(QString))); + createStatusBar(); + + connect(&proc_m65, SIGNAL(readyReadStandardOutput()), + this, SLOT(readFromStdout())); + + connect(&proc_m65, SIGNAL(error(QProcess::ProcessError)), + this, SLOT(m65_error())); + + connect(&proc_m65, SIGNAL(readyReadStandardError()), + this, SLOT(readFromStderr())); + + QTimer *guiTimer = new QTimer(this); + connect(guiTimer, SIGNAL(timeout()), this, SLOT(guiUpdate())); + guiTimer->start(100); //Don't change the 100 ms! + + m_auto=false; + m_waterfallAvg = 1; + m_network = true; + m_txFirst=false; + m_txMute=false; + btxok=false; + m_restart=false; + m_transmitting=false; + m_killAll=false; + m_widebandDecode=false; + m_ntx=1; + m_myCall="K1JT"; + m_myGrid="FN20qi"; + m_appDir = QApplication::applicationDirPath(); + m_saveDir="/users/joe/map65/install/save"; + m_azelDir="/users/joe/map65/install/"; + m_txFreq=125; + m_setftx=0; + m_loopall=false; + m_startAnother=false; + m_saveAll=false; + m_onlyEME=false; + m_sec0=-1; + m_hsym0=-1; + m_palette="CuteSDR"; + m_map65RxLog=1; //Write Date and Time to all65.txt + m_nutc0=9999; + m_kb8rq=false; + m_NB=false; + m_mode="JT65B"; + m_mode65=2; + m_fs96000=true; + m_udpPort=50004; + m_adjustIQ=0; + m_applyIQcal=0; + m_colors="000066ff0000ffff00969696646464"; + + ui->xThermo->setFillBrush(Qt::green); + ui->yThermo->setFillBrush(Qt::magenta); + +#ifdef WIN32 + while(true) { + int iret=killbyname("m65.exe"); + if(iret == 603) break; + if(iret != 0) msgBox("KillByName return code: " + + QString::number(iret)); + } +#endif + + if(!mem_m65.attach()) { + if (!mem_m65.create(sizeof(datcom_))) { + msgBox("Unable to create shared memory segment."); + } + } + char *to = (char*)mem_m65.data(); + int size=sizeof(datcom_); + if(datcom_.newdat==0) { + int noffset = 4*4*5760000 + 4*4*322*32768 + 4*4*32768; + to += noffset; + size -= noffset; + } + memset(to,0,size); //Zero all decoding params in shared memory + + PaError paerr=Pa_Initialize(); //Initialize Portaudio + if(paerr!=paNoError) { + msgBox("Unable to initialize PortAudio."); + } + readSettings(); //Restore user's setup params + QFile lockFile(m_appDir + "/.lock"); //Create .lock so m65 will wait + lockFile.open(QIODevice::ReadWrite); + QFile quitFile(m_appDir + "/.lock"); + quitFile.remove(); + proc_m65.start(QDir::toNativeSeparators(m_appDir + "/m65 -s")); + + m_pbdecoding_style1="QPushButton{background-color: cyan; \ + border-style: outset; border-width: 1px; border-radius: 5px; \ + border-color: black; min-width: 5em; padding: 3px;}"; + m_pbmonitor_style="QPushButton{background-color: #00ff00; \ + border-style: outset; border-width: 1px; border-radius: 5px; \ + border-color: black; min-width: 5em; padding: 3px;}"; + m_pbAutoOn_style="QPushButton{background-color: red; \ + border-style: outset; border-width: 1px; border-radius: 5px; \ + border-color: black; min-width: 5em; padding: 3px;}"; + + genStdMsgs(""); + + on_actionAstro_Data_triggered(); //Create the other windows + on_actionWide_Waterfall_triggered(); + on_actionMessages_triggered(); + on_actionBand_Map_triggered(); + g_pMessages->setColors(m_colors); + g_pBandMap->setColors(m_colors); + g_pAstro->setFontSize(m_astroFont); + if(m_mode=="JT65A") on_actionJT65A_triggered(); + if(m_mode=="JT65B") on_actionJT65B_triggered(); + if(m_mode=="JT65C") on_actionJT65C_triggered(); + + future1 = new QFuture; + watcher1 = new QFutureWatcher; + connect(watcher1, SIGNAL(finished()),this,SLOT(diskDat())); + + future2 = new QFuture; + watcher2 = new QFutureWatcher; + connect(watcher2, SIGNAL(finished()),this,SLOT(diskWriteFinished())); + +// Assign input device and start input thread + soundInThread.setInputDevice(m_paInDevice); + if(m_fs96000) soundInThread.setRate(96000.0); + if(!m_fs96000) soundInThread.setRate(95238.1); + soundInThread.setBufSize(10*7056); + soundInThread.setNetwork(m_network); + soundInThread.setPort(m_udpPort); + if(!m_xpol) soundInThread.setNrx(1); + if(m_xpol) soundInThread.setNrx(2); + soundInThread.start(QThread::HighestPriority); + + // Assign output device and start output thread + soundOutThread.setOutputDevice(m_paOutDevice); +// soundOutThread.start(QThread::HighPriority); + + m_monitoring=true; // Start with Monitoring ON + soundInThread.setMonitoring(m_monitoring); + m_diskData=false; + m_tol=500; + g_pWideGraph->setTol(m_tol); + g_pWideGraph->setFcal(m_fCal); + if(m_fs96000) g_pWideGraph->setFsample(96000); + if(!m_fs96000) g_pWideGraph->setFsample(95238); + g_pWideGraph->m_mult570=m_mult570; + g_pWideGraph->m_cal570=m_cal570; + if(m_initIQplus) g_pWideGraph->initIQplus(); + +// Create "m_worked", a dictionary of all calls in wsjt.log + QFile f("wsjt.log"); + f.open(QIODevice::ReadOnly); + QTextStream in(&f); + QString line,t,callsign; + for(int i=0; i<99999; i++) { + line=in.readLine(); + if(line.length()<=0) break; + t=line.mid(18,12); + callsign=t.mid(0,t.indexOf(",")); + m_worked[callsign]=true; + } + f.close(); + + if(ui->actionLinrad->isChecked()) on_actionLinrad_triggered(); + if(ui->actionCuteSDR->isChecked()) on_actionCuteSDR_triggered(); + if(ui->actionAFMHot->isChecked()) on_actionAFMHot_triggered(); + if(ui->actionBlue->isChecked()) on_actionBlue_triggered(); + // End of MainWindow constructor +} + + //--------------------------------------------------- MainWindow destructor +MainWindow::~MainWindow() +{ + writeSettings(); + if (soundInThread.isRunning()) { + soundInThread.quit(); + soundInThread.wait(3000); + } + if (soundOutThread.isRunning()) { + soundOutThread.quitExecution=true; + soundOutThread.wait(3000); + } + if(!m_decoderBusy) { + QFile lockFile(m_appDir + "/.lock"); + lockFile.remove(); + } + delete ui; +} + +//-------------------------------------------------------- writeSettings() +void MainWindow::writeSettings() +{ + QString inifile = m_appDir + "/map65.ini"; + QSettings settings(inifile, QSettings::IniFormat); + + settings.beginGroup("MainWindow"); + settings.setValue("geometry", saveGeometry()); + settings.setValue("MRUdir", m_path); + settings.setValue("TxFirst",m_txFirst); + settings.setValue("DXcall",ui->dxCallEntry->text()); + settings.setValue("DXgrid",ui->dxGridEntry->text()); + + if(g_pAstro->isVisible()) { + m_astroGeom = g_pAstro->geometry(); + settings.setValue("AstroGeom",m_astroGeom); + } + + if(g_pWideGraph->isVisible()) { + m_wideGraphGeom = g_pWideGraph->geometry(); + settings.setValue("WideGraphGeom",m_wideGraphGeom); + } + if(g_pMessages->isVisible()) { + m_messagesGeom = g_pMessages->geometry(); + settings.setValue("MessagesGeom",m_messagesGeom); + } + if(g_pBandMap->isVisible()) { + m_bandMapGeom = g_pBandMap->geometry(); + settings.setValue("BandMapGeom",m_bandMapGeom); + } + settings.endGroup(); + + settings.beginGroup("Common"); + settings.setValue("MyCall",m_myCall); + settings.setValue("MyGrid",m_myGrid); + settings.setValue("IDint",m_idInt); + settings.setValue("PTTport",m_pttPort); + settings.setValue("AstroFont",m_astroFont); + settings.setValue("Xpol",m_xpol); + settings.setValue("XpolX",m_xpolx); + settings.setValue("SaveDir",m_saveDir); + settings.setValue("AzElDir",m_azelDir); + settings.setValue("DXCCpfx",m_dxccPfx); + settings.setValue("Timeout",m_timeout); + settings.setValue("IQamp",m_IQamp); + settings.setValue("IQphase",m_IQphase); + settings.setValue("ApplyIQcal",m_applyIQcal); + settings.setValue("dPhi",m_dPhi); + settings.setValue("Fcal",m_fCal); + settings.setValue("Fadd",m_fAdd); + settings.setValue("NetworkInput", m_network); + settings.setValue("FSam96000", m_fs96000); + settings.setValue("SoundInIndex",m_nDevIn); + settings.setValue("paInDevice",m_paInDevice); + settings.setValue("SoundOutIndex",m_nDevOut); + settings.setValue("paOutDevice",m_paOutDevice); + settings.setValue("IQswap",m_IQswap); + settings.setValue("Plus10dB",m_10db); + settings.setValue("InitIQplus",m_initIQplus); + settings.setValue("UDPport",m_udpPort); + settings.setValue("PaletteCuteSDR",ui->actionCuteSDR->isChecked()); + settings.setValue("PaletteLinrad",ui->actionLinrad->isChecked()); + settings.setValue("PaletteAFMHot",ui->actionAFMHot->isChecked()); + settings.setValue("PaletteBlue",ui->actionBlue->isChecked()); + settings.setValue("Mode",m_mode); + settings.setValue("SaveNone",ui->actionNone->isChecked()); + settings.setValue("SaveAll",ui->actionSave_all->isChecked()); + settings.setValue("NDepth",m_ndepth); + settings.setValue("NEME",m_onlyEME); + settings.setValue("KB8RQ",m_kb8rq); + settings.setValue("NB",m_NB); + settings.setValue("NBslider",m_NBslider); + settings.setValue("GainX",(double)m_gainx); + settings.setValue("GainY",(double)m_gainy); + settings.setValue("PhaseX",(double)m_phasex); + settings.setValue("PhaseY",(double)m_phasey); + settings.setValue("Mult570",m_mult570); + settings.setValue("Cal570",m_cal570); + settings.setValue("Colors",m_colors); + settings.endGroup(); +} + +//---------------------------------------------------------- readSettings() +void MainWindow::readSettings() +{ + QString inifile = m_appDir + "/map65.ini"; + QSettings settings(inifile, QSettings::IniFormat); + settings.beginGroup("MainWindow"); + restoreGeometry(settings.value("geometry").toByteArray()); + ui->dxCallEntry->setText(settings.value("DXcall","").toString()); + ui->dxGridEntry->setText(settings.value("DXgrid","").toString()); + + m_astroGeom = settings.value("AstroGeom", QRect(71,390,227,403)).toRect(); + + m_wideGraphGeom = settings.value("WideGraphGeom", \ + QRect(45,30,1023,340)).toRect(); + m_messagesGeom = settings.value("MessagesGeom", \ + QRect(800,400,381,400)).toRect(); + m_bandMapGeom = settings.value("BandMapGeom", \ + QRect(280,400,142,400)).toRect(); + m_path = settings.value("MRUdir", m_appDir + "/save").toString(); + m_txFirst = settings.value("TxFirst",false).toBool(); + ui->txFirstCheckBox->setChecked(m_txFirst); + settings.endGroup(); + + settings.beginGroup("Common"); + m_myCall=settings.value("MyCall","").toString(); + m_myGrid=settings.value("MyGrid","").toString(); + m_idInt=settings.value("IDint",0).toInt(); + m_pttPort=settings.value("PTTport",0).toInt(); + m_astroFont=settings.value("AstroFont",20).toInt(); + m_xpol=settings.value("Xpol",false).toBool(); + ui->actionFind_Delta_Phi->setEnabled(m_xpol); + m_xpolx=settings.value("XpolX",false).toBool(); + m_saveDir=settings.value("SaveDir",m_appDir + "/save").toString(); + m_azelDir=settings.value("AzElDir",m_appDir).toString(); + m_dxccPfx=settings.value("DXCCpfx","").toString(); + m_timeout=settings.value("Timeout",20).toInt(); + m_IQamp=settings.value("IQamp",1.0000).toDouble(); + m_IQphase=settings.value("IQphase",0.0).toDouble(); + m_applyIQcal=settings.value("ApplyIQcal",0).toInt(); + ui->actionApply_IQ_Calibration->setChecked(m_applyIQcal!=0); + m_dPhi=settings.value("dPhi",0).toInt(); + m_fCal=settings.value("Fcal",0).toInt(); + m_fAdd=settings.value("FAdd",0).toDouble(); + soundInThread.setFadd(m_fAdd); + m_network = settings.value("NetworkInput",true).toBool(); + m_fs96000 = settings.value("FSam96000",true).toBool(); + m_nDevIn = settings.value("SoundInIndex", 0).toInt(); + m_paInDevice = settings.value("paInDevice",0).toInt(); + m_nDevOut = settings.value("SoundOutIndex", 0).toInt(); + m_paOutDevice = settings.value("paOutDevice",0).toInt(); + m_IQswap = settings.value("IQswap",false).toBool(); + m_10db = settings.value("Plus10dB",false).toBool(); + m_initIQplus = settings.value("InitIQplus",false).toBool(); + m_udpPort = settings.value("UDPport",50004).toInt(); + soundInThread.setSwapIQ(m_IQswap); + soundInThread.set10db(m_10db); + soundInThread.setPort(m_udpPort); + ui->actionCuteSDR->setChecked(settings.value( + "PaletteCuteSDR",true).toBool()); + ui->actionLinrad->setChecked(settings.value( + "PaletteLinrad",false).toBool()); + ui->actionAFMHot->setChecked(settings.value( + "PaletteAFMHot",false).toBool()); + ui->actionBlue->setChecked(settings.value( + "PaletteBlue",false).toBool()); + m_mode=settings.value("Mode","JT65B").toString(); + ui->actionNone->setChecked(settings.value("SaveNone",true).toBool()); + ui->actionSave_all->setChecked(settings.value("SaveAll",false).toBool()); + m_saveAll=ui->actionSave_all->isChecked(); + m_ndepth=settings.value("NDepth",0).toInt(); + m_onlyEME=settings.value("NEME",false).toBool(); + ui->actionOnly_EME_calls->setChecked(m_onlyEME); + m_kb8rq=settings.value("KB8RQ",false).toBool(); + ui->actionF4_sets_Tx6->setChecked(m_kb8rq); + m_NB=settings.value("NB",false).toBool(); + ui->NBcheckBox->setChecked(m_NB); + m_NBslider=settings.value("NBslider",40).toInt(); + ui->NBslider->setValue(m_NBslider); + m_gainx=settings.value("GainX",1.0).toFloat(); + m_gainy=settings.value("GainY",1.0).toFloat(); + m_phasex=settings.value("PhaseX",0.0).toFloat(); + m_phasey=settings.value("PhaseY",0.0).toFloat(); + m_mult570=settings.value("Mult570",2).toInt(); + m_cal570=settings.value("Cal570",0.0).toDouble(); + m_colors=settings.value("Colors","000066ff0000ffff00969696646464").toString(); + settings.endGroup(); + + if(!ui->actionLinrad->isChecked() && !ui->actionCuteSDR->isChecked() && + !ui->actionAFMHot->isChecked() && !ui->actionBlue->isChecked()) { + on_actionLinrad_triggered(); + ui->actionLinrad->setChecked(true); + } + if(m_ndepth==0) ui->actionNo_Deep_Search->setChecked(true); + if(m_ndepth==1) ui->actionNormal_Deep_Search->setChecked(true); + if(m_ndepth==2) ui->actionAggressive_Deep_Search->setChecked(true); +} + +//-------------------------------------------------------------- dataSink() +void MainWindow::dataSink(int k) +{ + static float s[NFFT],splot[NFFT]; + static int n=0; + static int ihsym=0; + static int nzap=0; + static int n60z=0; + static int nkhz; + static int nfsample=96000; + static int nxpol=0; + static float fgreen; + static int ndiskdat; + static int nb; + static int nadj=0; + static float px=0.0,py=0.0; + static uchar lstrong[1024]; + static float rejectx; + static float rejecty; + static float slimit; + + + if(m_diskData) { + ndiskdat=1; + datcom_.ndiskdat=1; + } else { + ndiskdat=0; + datcom_.ndiskdat=0; + } +// Get x and y power, polarized spectrum, nkhz, and ihsym + nb=0; + if(m_NB) nb=1; + nfsample=96000; + if(!m_fs96000) nfsample=95238; + nxpol=0; + if(m_xpol) nxpol=1; + fgreen=(float)g_pWideGraph->fGreen(); + nadj++; + if(m_adjustIQ==0) nadj=0; + symspec_(&k, &nxpol, &ndiskdat, &nb, &m_NBslider, &m_dPhi, &nfsample, + &fgreen, &m_adjustIQ, &m_applyIQcal, &m_gainx, &m_gainy, &m_phasex, + &m_phasey, &rejectx, &rejecty, &px, &py, s, &nkhz, + &ihsym, &nzap, &slimit, lstrong); + QString t; + m_pctZap=nzap/178.3; + if(m_xpol) t.sprintf(" Rx noise: %5.1f %5.1f %5.1f %% ",px,py,m_pctZap); + if(!m_xpol) t.sprintf(" Rx noise: %5.1f %5.1f %% ",px,m_pctZap); + lab4->setText(t); + ui->xThermo->setValue((double)px); //Update the bargraphs + ui->yThermo->setValue((double)py); + if(m_monitoring || m_diskData) { + g_pWideGraph->dataSink2(s,nkhz,ihsym,m_diskData,lstrong); + } + + if(nadj == 10) { + if(m_xpol) { + t.sprintf("Amp: %6.4f %6.4f Phase: %6.4f %6.4f", + m_gainx,m_gainy,m_phasex,m_phasey); + } else { + t.sprintf("Amp: %6.4f Phase: %6.4f",m_gainx,m_phasex); + } + ui->decodedTextBrowser->append(t); + m_adjustIQ=0; + } + + //Average over specified number of spectra + if (n==0) { + for (int i=0; i=m_waterfallAvg) { + for (int i=0; isetFuture(*future2); + } + } + soundInThread.m_dataSinkBusy=false; +} + +void MainWindow::showSoundInError(const QString& errorMsg) + {QMessageBox::critical(this, tr("Error in SoundIn"), errorMsg);} + +void MainWindow::showStatusMessage(const QString& statusMsg) + {statusBar()->showMessage(statusMsg);} + +void MainWindow::on_actionDeviceSetup_triggered() //Setup Dialog +{ + DevSetup dlg(this); + dlg.m_myCall=m_myCall; + dlg.m_myGrid=m_myGrid; + dlg.m_idInt=m_idInt; + dlg.m_pttPort=m_pttPort; + dlg.m_astroFont=m_astroFont; + dlg.m_xpol=m_xpol; + dlg.m_xpolx=m_xpolx; + dlg.m_saveDir=m_saveDir; + dlg.m_azelDir=m_azelDir; + dlg.m_dxccPfx=m_dxccPfx; + dlg.m_timeout=m_timeout; + dlg.m_dPhi=m_dPhi; + dlg.m_fCal=m_fCal; + dlg.m_fAdd=m_fAdd; + dlg.m_network=m_network; + dlg.m_fs96000=m_fs96000; + dlg.m_nDevIn=m_nDevIn; + dlg.m_nDevOut=m_nDevOut; + dlg.m_udpPort=m_udpPort; + dlg.m_IQswap=m_IQswap; + dlg.m_10db=m_10db; + dlg.m_initIQplus=m_initIQplus; + dlg.m_cal570=m_cal570; + dlg.m_mult570=m_mult570; + dlg.m_colors=m_colors; + + dlg.initDlg(); + if(dlg.exec() == QDialog::Accepted) { + m_myCall=dlg.m_myCall; + m_myGrid=dlg.m_myGrid; + m_idInt=dlg.m_idInt; + m_pttPort=dlg.m_pttPort; + m_astroFont=dlg.m_astroFont; + if(g_pAstro->isVisible()) g_pAstro->setFontSize(m_astroFont); + m_xpol=dlg.m_xpol; + ui->actionFind_Delta_Phi->setEnabled(m_xpol); + m_xpolx=dlg.m_xpolx; + m_saveDir=dlg.m_saveDir; + m_azelDir=dlg.m_azelDir; + m_dxccPfx=dlg.m_dxccPfx; + m_timeout=dlg.m_timeout; + m_dPhi=dlg.m_dPhi; + m_fCal=dlg.m_fCal; + m_fAdd=dlg.m_fAdd; + g_pWideGraph->setFcal(m_fCal); + m_fs96000=dlg.m_fs96000; + m_network=dlg.m_network; + m_nDevIn=dlg.m_nDevIn; + m_paInDevice=dlg.m_paInDevice; + m_nDevOut=dlg.m_nDevOut; + m_paOutDevice=dlg.m_paOutDevice; + m_udpPort=dlg.m_udpPort; + m_IQswap=dlg.m_IQswap; + m_10db=dlg.m_10db; + m_initIQplus=dlg.m_initIQplus; + m_colors=dlg.m_colors; + g_pMessages->setColors(m_colors); + g_pBandMap->setColors(m_colors); + m_cal570=dlg.m_cal570; + m_mult570=dlg.m_mult570; + g_pWideGraph->m_mult570=m_mult570; + g_pWideGraph->m_cal570=m_cal570; + soundInThread.setSwapIQ(m_IQswap); + soundInThread.set10db(m_10db); + + if(dlg.m_restartSoundIn) { + soundInThread.quit(); + soundInThread.wait(1000); + soundInThread.setNetwork(m_network); + if(m_fs96000) soundInThread.setRate(96000.0); + if(!m_fs96000) soundInThread.setRate(95238.1); + soundInThread.setFadd(m_fAdd); + if(!m_xpol) soundInThread.setNrx(1); + if(m_xpol) soundInThread.setNrx(2); + soundInThread.setInputDevice(m_paInDevice); + soundInThread.start(QThread::HighestPriority); + } + + if(dlg.m_restartSoundOut) { + soundOutThread.quitExecution=true; + soundOutThread.wait(1000); + soundOutThread.setOutputDevice(m_paOutDevice); +// soundOutThread.start(QThread::HighPriority); + } + } +} + +void MainWindow::on_monitorButton_clicked() //Monitor +{ + m_monitoring=true; + soundInThread.setMonitoring(true); + m_diskData=false; +} +void MainWindow::on_actionLinrad_triggered() //Linrad palette +{ + if(g_pWideGraph != NULL) g_pWideGraph->setPalette("Linrad"); +} + +void MainWindow::on_actionCuteSDR_triggered() //CuteSDR palette +{ + if(g_pWideGraph != NULL) g_pWideGraph->setPalette("CuteSDR"); +} + +void MainWindow::on_actionAFMHot_triggered() +{ + if(g_pWideGraph != NULL) g_pWideGraph->setPalette("AFMHot"); +} + +void MainWindow::on_actionBlue_triggered() +{ + if(g_pWideGraph != NULL) g_pWideGraph->setPalette("Blue"); +} + +void MainWindow::on_actionAbout_triggered() //Display "About" +{ + CAboutDlg dlg(this,Program_Title_Version); + dlg.exec(); +} + +void MainWindow::on_autoButton_clicked() //Auto +{ + m_auto = !m_auto; + if(m_auto) { + ui->autoButton->setStyleSheet(m_pbAutoOn_style); + ui->autoButton->setText("Auto is ON"); + } else { + btxok=false; + ui->autoButton->setStyleSheet(""); + ui->autoButton->setText("Auto is OFF"); + on_monitorButton_clicked(); + } +} + +void MainWindow::on_stopTxButton_clicked() //Stop Tx +{ + if(m_auto) on_autoButton_clicked(); + btxok=false; +} + +void MainWindow::keyPressEvent( QKeyEvent *e ) //keyPressEvent +{ + switch(e->key()) + { + case Qt::Key_F3: + m_txMute=!m_txMute; + break; + case Qt::Key_F4: + ui->dxCallEntry->setText(""); + ui->dxGridEntry->setText(""); + if(m_kb8rq) { + m_ntx=6; + ui->txrb6->setChecked(true); + } + case Qt::Key_F6: + if(e->modifiers() & Qt::ShiftModifier) { + on_actionDecode_remaining_files_in_directory_triggered(); + } + break; + case Qt::Key_F11: + if(e->modifiers() & Qt::ShiftModifier) { + } else { + int n0=g_pWideGraph->DF(); + int n=(n0 + 10000) % 5; + if(n==0) n=5; + g_pWideGraph->setDF(n0-n); + } + break; + case Qt::Key_F12: + if(e->modifiers() & Qt::ShiftModifier) { + } else { + int n0=g_pWideGraph->DF(); + int n=(n0 + 10000) % 5; + if(n==0) n=5; + g_pWideGraph->setDF(n0+n); + } + break; + case Qt::Key_G: + if(e->modifiers() & Qt::AltModifier) { + genStdMsgs(""); + break; + } + case Qt::Key_L: + if(e->modifiers() & Qt::ControlModifier) { + lookup(); + genStdMsgs(""); + break; + } + } +} + +void MainWindow::bumpDF(int n) //bumpDF() +{ + if(n==11) { + int n0=g_pWideGraph->DF(); + int n=(n0 + 10000) % 5; + if(n==0) n=5; + g_pWideGraph->setDF(n0-n); + } + if(n==12) { + int n0=g_pWideGraph->DF(); + int n=(n0 + 10000) % 5; + if(n==0) n=5; + g_pWideGraph->setDF(n0+n); + } +} + +bool MainWindow::eventFilter(QObject *object, QEvent *event) //eventFilter() +{ + if (event->type() == QEvent::KeyPress) { + //Use the event in parent using its keyPressEvent() + QKeyEvent *keyEvent = static_cast(event); + MainWindow::keyPressEvent(keyEvent); + return QObject::eventFilter(object, event); + } + return QObject::eventFilter(object, event); +} + +void MainWindow::createStatusBar() //createStatusBar +{ + lab1 = new QLabel("Receiving"); + lab1->setAlignment(Qt::AlignHCenter); + lab1->setMinimumSize(QSize(80,10)); + lab1->setStyleSheet("QLabel{background-color: #00ff00}"); + lab1->setFrameStyle(QFrame::Panel | QFrame::Sunken); + statusBar()->addWidget(lab1); + + lab2 = new QLabel("QSO freq: 125"); + lab2->setAlignment(Qt::AlignHCenter); + lab2->setMinimumSize(QSize(90,10)); + lab2->setFrameStyle(QFrame::Panel | QFrame::Sunken); + statusBar()->addWidget(lab2); + + lab3 = new QLabel("QSO DF: 0"); + lab3->setAlignment(Qt::AlignHCenter); + lab3->setMinimumSize(QSize(80,10)); + lab3->setFrameStyle(QFrame::Panel | QFrame::Sunken); + statusBar()->addWidget(lab3); + + lab4 = new QLabel(""); + lab4->setAlignment(Qt::AlignHCenter); + lab4->setMinimumSize(QSize(80,10)); + lab4->setFrameStyle(QFrame::Panel | QFrame::Sunken); + statusBar()->addWidget(lab4); + + lab5 = new QLabel(""); + lab5->setAlignment(Qt::AlignHCenter); + lab5->setMinimumSize(QSize(50,10)); + lab5->setFrameStyle(QFrame::Panel | QFrame::Sunken); + statusBar()->addWidget(lab5); +} + +void MainWindow::on_tolSpinBox_valueChanged(int i) //tolSpinBox +{ + static int ntol[] = {10,20,50,100,200,500,1000}; + m_tol=ntol[i]; + g_pWideGraph->setTol(m_tol); + ui->labTol1->setText(QString::number(ntol[i])); +} + +void MainWindow::on_actionExit_triggered() //Exit() +{ + OnExit(); +} + +void MainWindow::closeEvent(QCloseEvent*) +{ + OnExit(); +} + +void MainWindow::OnExit() +{ + g_pWideGraph->saveSettings(); + m_killAll=true; + mem_m65.detach(); + QFile quitFile(m_appDir + "/.quit"); + quitFile.open(QIODevice::ReadWrite); + QFile lockFile(m_appDir + "/.lock"); + lockFile.remove(); // Allow m65 to terminate + bool b=proc_m65.waitForFinished(1000); + if(!b) proc_m65.kill(); + quitFile.remove(); + qApp->exit(0); // Exit the event loop +} + +void MainWindow::on_stopButton_clicked() //stopButton +{ + m_monitoring=false; + soundInThread.setMonitoring(m_monitoring); + m_loopall=false; +} + +void MainWindow::msgBox(QString t) //msgBox +{ + msgBox0.setText(t); + msgBox0.exec(); +} + +void MainWindow::stub() //stub() +{ + msgBox("Not yet implemented."); +} + +void MainWindow::on_actionOnline_Users_Guide_triggered() //Display manual +{ + QDesktopServices::openUrl(QUrl( + "http://www.physics.princeton.edu/pulsar/K1JT/MAP65_Beta_Release.pdf", + QUrl::TolerantMode)); +} + +void MainWindow::on_actionAstro_Data_triggered() //Display Astro +{ + if(g_pAstro==NULL) { + g_pAstro = new Astro(0); + g_pAstro->setWindowTitle("Astronomical Data"); + Qt::WindowFlags flags = Qt::Dialog | Qt::WindowCloseButtonHint | + Qt::WindowMinimizeButtonHint; + g_pAstro->setWindowFlags(flags); + g_pAstro->setGeometry(m_astroGeom); + } + g_pAstro->show(); +} + +void MainWindow::on_actionWide_Waterfall_triggered() //Display Waterfalls +{ + if(g_pWideGraph==NULL) { + g_pWideGraph = new WideGraph(0); + g_pWideGraph->setWindowTitle("Wide Graph"); + g_pWideGraph->setGeometry(m_wideGraphGeom); + Qt::WindowFlags flags = Qt::WindowCloseButtonHint | + Qt::WindowMinimizeButtonHint; + g_pWideGraph->setWindowFlags(flags); + connect(g_pWideGraph, SIGNAL(freezeDecode2(int)),this, + SLOT(freezeDecode(int))); + connect(g_pWideGraph, SIGNAL(f11f12(int)),this, + SLOT(bumpDF(int))); + } + g_pWideGraph->show(); +} + +void MainWindow::on_actionBand_Map_triggered() //Display BandMap +{ + if(g_pBandMap==NULL) { + g_pBandMap = new BandMap(0); + g_pBandMap->setWindowTitle("Band Map"); + Qt::WindowFlags flags = Qt::Dialog | Qt::WindowCloseButtonHint | + Qt::WindowMinimizeButtonHint; + g_pBandMap->setWindowFlags(flags); + g_pBandMap->setGeometry(m_bandMapGeom); + } + g_pBandMap->show(); +} + +void MainWindow::on_actionMessages_triggered() //Display Messages +{ + if(g_pMessages==NULL) { + g_pMessages = new Messages(0); + g_pMessages->setWindowTitle("Messages"); + Qt::WindowFlags flags = Qt::Dialog | Qt::WindowCloseButtonHint | + Qt::WindowMinimizeButtonHint; + g_pMessages->setWindowFlags(flags); + g_pMessages->setGeometry(m_messagesGeom); + connect(g_pMessages, SIGNAL(click2OnCallsign(QString, QString)),this, + SLOT(doubleClickOnMessages(QString, QString))); + } + g_pMessages->show(); +} + +void MainWindow::on_actionOpen_triggered() //Open File +{ + m_monitoring=false; + soundInThread.setMonitoring(m_monitoring); + QString fname; + if(m_xpol) { + fname=QFileDialog::getOpenFileName(this, "Open File", m_path, + "MAP65 Files (*.tf2)"); + } else { + fname=QFileDialog::getOpenFileName(this, "Open File", m_path, + "MAP65 Files (*.iq)"); + } + if(fname != "") { + m_path=fname; + int i; + i=fname.indexOf(".iq") - 11; + if(m_xpol) i=fname.indexOf(".tf2") - 11; + if(i>=0) { + lab1->setStyleSheet("QLabel{background-color: #66ff66}"); + lab1->setText(" " + fname.mid(i,15) + " "); + } + on_stopButton_clicked(); + m_diskData=true; + int dbDgrd=0; + if(m_myCall=="K1JT" and m_idInt<0) dbDgrd=m_idInt; + *future1 = QtConcurrent::run(getfile, fname, m_xpol, dbDgrd); + watcher1->setFuture(*future1); + } +} + +void MainWindow::on_actionOpen_next_in_directory_triggered() //Open Next +{ + int i,len; + QFileInfo fi(m_path); + QStringList list; + list= fi.dir().entryList().filter(".iq"); + len=14; + if(m_xpol) { + list= fi.dir().entryList().filter(".tf2"); + len=15; + } + for (i = 0; i < list.size()-1; ++i) { + if(i==list.size()-2) m_loopall=false; + if(list.at(i)==m_path.right(len)) { + int n=m_path.length(); + QString fname=m_path.replace(n-len,len,list.at(i+1)); + m_path=fname; + int i; + i=fname.indexOf(".iq") - 11; + if(m_xpol) i=fname.indexOf(".tf2") - 11; + if(i>=0) { + lab1->setStyleSheet("QLabel{background-color: #66ff66}"); + lab1->setText(" " + fname.mid(i,len) + " "); + } + m_diskData=true; + int dbDgrd=0; + if(m_myCall=="K1JT" and m_idInt<0) dbDgrd=m_idInt; + *future1 = QtConcurrent::run(getfile, fname, m_xpol, dbDgrd); + watcher1->setFuture(*future1); + return; + } + } +} + //Open all remaining files +void MainWindow::on_actionDecode_remaining_files_in_directory_triggered() +{ + m_loopall=true; + on_actionOpen_next_in_directory_triggered(); +} + +void MainWindow::diskDat() //diskDat() +{ + double hsym; + //These may be redundant?? + m_diskData=true; + datcom_.newdat=1; + + if(m_fs96000) hsym=2048.0*96000.0/11025.0; //Samples per JT65 half-symbol + if(!m_fs96000) hsym=2048.0*95238.1/11025.0; + for(int i=0; i<281; i++) { // Do the half-symbol FFTs + int k = i*hsym + 2048.5; + dataSink(k); + if(i%10 == 0) qApp->processEvents(); //Keep the GUI responsive + } +} + +void MainWindow::diskWriteFinished() //diskWriteFinished +{ +// qDebug() << "diskWriteFinished"; +} + //Delete ../save/*.tf2 +void MainWindow::on_actionDelete_all_tf2_files_in_SaveDir_triggered() +{ + int i; + QString fname; + int ret = QMessageBox::warning(this, "Confirm Delete", + "Are you sure you want to delete all *.tf2 and *.iq files in\n" + + QDir::toNativeSeparators(m_saveDir) + " ?", + QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); + if(ret==QMessageBox::Yes) { + QDir dir(m_saveDir); + QStringList files=dir.entryList(QDir::Files); + QList::iterator f; + for(f=files.begin(); f!=files.end(); ++f) { + fname=*f; + i=(fname.indexOf(".tf2")); + if(i==11) dir.remove(fname); + i=(fname.indexOf(".iq")); + if(i==11) dir.remove(fname); + } + } +} + //Clear BandMap and Messages windows +void MainWindow::on_actionErase_Band_Map_and_Messages_triggered() +{ + g_pBandMap->setText(""); + g_pMessages->setText(""); + m_map65RxLog |= 4; +} + +void MainWindow::on_actionFind_Delta_Phi_triggered() //Find dPhi +{ + m_map65RxLog |= 8; + on_DecodeButton_clicked(); +} + +void MainWindow::on_actionF4_sets_Tx6_triggered() //F4 sets Tx6 +{ + m_kb8rq = !m_kb8rq; +} + +void MainWindow::on_actionOnly_EME_calls_triggered() //EME calls only +{ + m_onlyEME = ui->actionOnly_EME_calls->isChecked(); +} + +void MainWindow::on_actionNo_shorthands_if_Tx1_triggered() +{ + stub(); +} + +void MainWindow::on_actionNo_Deep_Search_triggered() //No Deep Search +{ + m_ndepth=0; +} + +void MainWindow::on_actionNormal_Deep_Search_triggered() //Normal DS +{ + m_ndepth=1; +} + +void MainWindow::on_actionAggressive_Deep_Search_triggered() //Aggressive DS +{ + m_ndepth=2; +} + +void MainWindow::on_actionNone_triggered() //Save None +{ + m_saveAll=false; +} + +// ### Implement "Save Last" here? ### + +void MainWindow::on_actionSave_all_triggered() //Save All +{ + m_saveAll=true; +} + //Display list of keyboard shortcuts +void MainWindow::on_actionKeyboard_shortcuts_triggered() +{ + stub(); +} + //Display list of mouse commands +void MainWindow::on_actionSpecial_mouse_commands_triggered() +{ + stub(); +} + //Diaplay list of Add-On pfx/sfx +void MainWindow::on_actionAvailable_suffixes_and_add_on_prefixes_triggered() +{ + stub(); +} + +void MainWindow::on_DecodeButton_clicked() //Decode request +{ + int n=m_sec0%60; + if(m_monitoring and n>47 and (n<52 or m_decoderBusy)) return; + if(!m_decoderBusy) { + datcom_.newdat=0; + datcom_.nagain=1; + decode(); + } +} + +void MainWindow::freezeDecode(int n) //freezeDecode() +{ + if(n==2) { + ui->tolSpinBox->setValue(5); + datcom_.ntol=m_tol; + datcom_.mousedf=0; + } else { + ui->tolSpinBox->setValue(3); + datcom_.ntol=m_tol; + } + if(!m_decoderBusy) { + datcom_.nagain=1; + datcom_.newdat=0; + decode(); + } +} + +void MainWindow::decode() //decode() +{ + ui->DecodeButton->setStyleSheet(m_pbdecoding_style1); + if(datcom_.nagain==0 && (!m_diskData)) { + qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000; + int imin=ms/60000; + int ihr=imin/60; + imin=imin % 60; + datcom_.nutc=100*ihr + imin; + } + + datcom_.idphi=m_dPhi; + datcom_.mousedf=g_pWideGraph->DF(); + datcom_.mousefqso=g_pWideGraph->QSOfreq(); + datcom_.ndepth=m_ndepth; + datcom_.ndiskdat=0; + if(m_diskData) datcom_.ndiskdat=1; + datcom_.neme=0; + if(ui->actionOnly_EME_calls->isChecked()) datcom_.neme=1; + + int ispan=int(g_pWideGraph->fSpan()); + if(ispan%2 == 1) ispan++; + int ifc=int(1000.0*(datcom_.fcenter - int(datcom_.fcenter))+0.5); + int nfa=g_pWideGraph->nStartFreq(); + int nfb=nfa+ispan; + int nfshift=nfa + ispan/2 - ifc; + + datcom_.nfa=nfa; + datcom_.nfb=nfb; + datcom_.nfcal=m_fCal; + datcom_.nfshift=nfshift; + datcom_.mcall3=0; + if(m_call3Modified) datcom_.mcall3=1; + datcom_.ntimeout=m_timeout; + datcom_.ntol=m_tol; + datcom_.nxant=0; + if(m_xpolx) datcom_.nxant=1; + if(datcom_.nutc < m_nutc0) m_map65RxLog |= 1; //Date and Time to all65.txt + m_nutc0=datcom_.nutc; + datcom_.map65RxLog=m_map65RxLog; + datcom_.nfsample=96000; + if(!m_fs96000) datcom_.nfsample=95238; + datcom_.nxpol=0; + if(m_xpol) datcom_.nxpol=1; + datcom_.mode65=m_mode65; + + QString mcall=(m_myCall+" ").mid(0,12); + QString mgrid=(m_myGrid+" ").mid(0,6); + QString hcall=(ui->dxCallEntry->text()+" ").mid(0,12); + QString hgrid=(ui->dxGridEntry->text()+" ").mid(0,6); + + strncpy(datcom_.mycall, mcall.toAscii(), 12); + strncpy(datcom_.mygrid, mgrid.toAscii(), 6); + strncpy(datcom_.hiscall, hcall.toAscii(), 12); + strncpy(datcom_.hisgrid, hgrid.toAscii(), 6); + strncpy(datcom_.datetime, m_dateTime.toAscii(), 20); + + //newdat=1 ==> this is new data, must do the big FFT + //nagain=1 ==> decode only at fQSO +/- Tol + + char *to = (char*)mem_m65.data(); + char *from = (char*) datcom_.d4; + int size=sizeof(datcom_); + if(datcom_.newdat==0) { + int noffset = 4*4*5760000 + 4*4*322*32768 + 4*4*32768; + to += noffset; + from += noffset; + size -= noffset; + } + memcpy(to, from, qMin(mem_m65.size(), size)); + datcom_.nagain=0; + datcom_.ndiskdat=0; + m_call3Modified=false; + + QFile lockFile(m_appDir + "/.lock"); // Allow m65 to start + lockFile.remove(); + + decodeBusy(true); +} + +void MainWindow::m65_error() //m65_error +{ + if(!m_killAll) { + msgBox("Error starting or running\n" + m_appDir + "/m65 -s"); + exit(1); + } +} + +void MainWindow::readFromStderr() //readFromStderr +{ + QByteArray t=proc_m65.readAllStandardError(); + msgBox(t); +} + + +void MainWindow::readFromStdout() //readFromStdout +{ + while(proc_m65.canReadLine()) + { + QByteArray t=proc_m65.readLine(); + if(t.indexOf("") >= 0) { + if(m_widebandDecode) { + g_pMessages->setText(m_messagesText); + g_pBandMap->setText(m_bandmapText); + m_widebandDecode=false; + } + QFile lockFile(m_appDir + "/.lock"); + lockFile.open(QIODevice::ReadWrite); + ui->DecodeButton->setStyleSheet(""); + decodeBusy(false); + m_map65RxLog=0; + m_startAnother=m_loopall; + return; + } + + if(t.indexOf("!") >= 0) { + int n=t.length(); + if(n>=30) ui->decodedTextBrowser->append(t.mid(1,n-3)); + if(n<30) ui->decodedTextBrowser->append(t.mid(1,n-3)); + n=ui->decodedTextBrowser->verticalScrollBar()->maximum(); + ui->decodedTextBrowser->verticalScrollBar()->setValue(n); + m_messagesText=""; + m_bandmapText=""; + } + + if(t.indexOf("@") >= 0) { + m_messagesText += t.mid(1); + m_widebandDecode=true; + } + + if(t.indexOf("&") >= 0) { + QString q(t); + QString callsign=q.mid(5); + callsign=callsign.mid(0,callsign.indexOf(" ")); + if(callsign.length()>2) { + if(m_worked[callsign]) { + q=q.mid(1,4) + " " + q.mid(5); + } else { + q=q.mid(1,4) + " *" + q.mid(5); + } + m_bandmapText += q; + } + } + } +} + +void MainWindow::on_EraseButton_clicked() //Erase +{ + ui->decodedTextBrowser->clear(); +} + +void MainWindow::decodeBusy(bool b) //decodeBusy() +{ + m_decoderBusy=b; + ui->DecodeButton->setEnabled(!b); + ui->actionOpen->setEnabled(!b); + ui->actionOpen_next_in_directory->setEnabled(!b); + ui->actionDecode_remaining_files_in_directory->setEnabled(!b); +} + +//------------------------------------------------------------- //guiUpdate() +void MainWindow::guiUpdate() +{ + static int iptt0=0; + static int iptt=0; + static bool btxok0=false; + static int nc0=1; + static int nc1=1; + static char msgsent[23]; + static int nsendingsh=0; + int khsym=0; + + double tx1=0.0; + double tx2=126.0*4096.0/11025.0 + 1.8; //### depend on TxDelay? ### + + if(!m_txFirst) { + tx1 += 60.0; + tx2 += 60.0; + } + qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000; + int nsec=ms/1000; + double tsec=0.001*ms; + double t120=fmod(tsec,120.0); + bool bTxTime = t120 >= tx1 && t120 < tx2; + + if(m_auto) { + if(bTxTime and iptt==0 and !m_txMute) { + int itx=1; + int ierr = ptt_(&m_pttPort,&itx,&iptt); // Raise PTT + if(ierr != 0) { + on_stopTxButton_clicked(); + char s[18]; + sprintf(s,"Cannot open COM%d",m_pttPort); + msgBox(s); + } + if(!soundOutThread.isRunning()) { + soundOutThread.start(QThread::HighPriority); + } + } + if(!bTxTime || m_txMute) { + btxok=false; + } + } + +// Calculate Tx waveform when needed + if((iptt==1 && iptt0==0) || m_restart) { + char message[23]; + QByteArray ba; + if(m_ntx == 1) ba=ui->tx1->text().toLocal8Bit(); + if(m_ntx == 2) ba=ui->tx2->text().toLocal8Bit(); + if(m_ntx == 3) ba=ui->tx3->text().toLocal8Bit(); + if(m_ntx == 4) ba=ui->tx4->text().toLocal8Bit(); + if(m_ntx == 5) ba=ui->tx5->text().toLocal8Bit(); + if(m_ntx == 6) ba=ui->tx6->text().toLocal8Bit(); + + ba2msg(ba,message); + int len1=22; + int mode65=m_mode65; + double samfac=1.0; + + gen65_(message,&mode65,&samfac,&nsendingsh,msgsent,iwave,&nwave,len1,len1); + msgsent[22]=0; + + if(m_restart) { + QFile f("map65_tx.log"); + f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append); + QTextStream out(&f); + out << QDateTime::currentDateTimeUtc().toString("yyyy-MMM-dd hh:mm") + << " Tx message: " << QString::fromAscii(msgsent) << endl; + f.close(); + } + + m_restart=false; + } + +// If PTT was just raised, start a countdown for raising TxOK: + if(iptt==1 && iptt0==0) nc1=-9; // TxDelay = 0.8 s + if(nc1 <= 0) nc1++; + if(nc1 == 0) { + ui->xThermo->setValue(0.0); //Set the Thermos to zero + ui->yThermo->setValue(0.0); + m_monitoring=false; + soundInThread.setMonitoring(false); + btxok=true; + m_transmitting=true; + + QFile f("map65_tx.log"); + f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append); + QTextStream out(&f); + out << QDateTime::currentDateTimeUtc().toString("yyyy-MMM-dd hh:mm") + << " Tx message: " << QString::fromAscii(msgsent) << endl; + f.close(); + } + +// If btxok was just lowered, start a countdown for lowering PTT + if(!btxok && btxok0 && iptt==1) nc0=-11; //RxDelay = 1.0 s + if(nc0 <= 0) nc0++; + if(nc0 == 0) { + int itx=0; + ptt_(&m_pttPort,&itx,&iptt); // Lower PTT + if(!m_txMute) soundOutThread.quitExecution=true; + m_transmitting=false; + if(m_auto) { + m_monitoring=true; + soundInThread.setMonitoring(m_monitoring); + } + } + + if(iptt == 0 && !btxok) { + // sending="" + // nsendingsh=0 + } + + if(m_monitoring) { + ui->monitorButton->setStyleSheet(m_pbmonitor_style); + } else { + ui->monitorButton->setStyleSheet(""); + } + + lab2->setText("QSO Freq: " + QString::number(g_pWideGraph->QSOfreq())); + lab3->setText("QSO DF: " + QString::number(g_pWideGraph->DF())); + + if(m_startAnother) { + m_startAnother=false; + on_actionOpen_next_in_directory_triggered(); + } + + if(nsec != m_sec0) { //Once per second + soundInThread.setForceCenterFreqMHz(g_pWideGraph->m_dForceCenterFreq); + soundInThread.setForceCenterFreqBool(g_pWideGraph->m_bForceCenterFreq); + + if(m_pctZap>30.0 and !m_transmitting) { + lab4->setStyleSheet("QLabel{background-color: #ff0000}"); + } else { + lab4->setStyleSheet(""); + } + + if(m_transmitting) { + if(nsendingsh==1) { + lab1->setStyleSheet("QLabel{background-color: #66ffff}"); + } else if(nsendingsh==-1) { + lab1->setStyleSheet("QLabel{background-color: #ffccff}"); + } else { + lab1->setStyleSheet("QLabel{background-color: #ffff33}"); + } + char s[37]; + sprintf(s,"Tx: %s",msgsent); + lab1->setText(s); + } else if(m_monitoring) { + lab1->setStyleSheet("QLabel{background-color: #00ff00}"); + m_nrx=soundInThread.nrx(); + khsym=soundInThread.mhsym(); + QString t; + if(m_network) { + if(m_nrx==-1) t="F1"; + if(m_nrx==1) t="I1"; + if(m_nrx==-2) t="F2"; + if(m_nrx==+2) t="I2"; + } else { + if(m_nrx==1) t="S1"; + if(m_nrx==2) t="S2"; + } + if((abs(m_nrx)==1 and m_xpol) or (abs(m_nrx)==2 and !m_xpol)) + lab1->setStyleSheet("QLabel{background-color: #ff1493}"); + if(khsym==m_hsym0) { + t="Nil"; + lab1->setStyleSheet("QLabel{background-color: #ffc0cb}"); + } + lab1->setText("Receiving " + t); + } else if (!m_diskData) { + lab1->setStyleSheet(""); + lab1->setText(""); + } + + QDateTime t = QDateTime::currentDateTimeUtc(); + int fQSO=g_pWideGraph->QSOfreq(); + g_pAstro->astroUpdate(t, m_myGrid, m_hisGrid, fQSO, m_setftx, + m_txFreq, m_azelDir); + m_setftx=0; + QString utc = " " + t.time().toString() + " "; + ui->labUTC->setText(utc); + if((!m_monitoring and !m_diskData) or (khsym==m_hsym0)) { + ui->xThermo->setValue(0.0); // Set Rx levels to 0 + ui->yThermo->setValue(0.0); + lab4->setText(" Rx noise: 0.0 0.0 0.0% "); + } + m_hsym0=khsym; + m_sec0=nsec; + } + iptt0=iptt; + btxok0=btxok; +} + +void MainWindow::ba2msg(QByteArray ba, char message[]) //ba2msg() +{ + bool eom; + eom=false; + for(int i=0;i<22; i++) { + if((int)ba[i] == 0) eom=true; + if(eom) { + message[i]=32; + } else { + message[i]=ba[i]; + } + } + message[22]=0; +} + +void MainWindow::on_txFirstCheckBox_stateChanged(int nstate) //TxFirst +{ + m_txFirst = (nstate==2); +} + +void MainWindow::set_ntx(int n) //set_ntx() +{ + m_ntx=n; +} + +void MainWindow::on_txb1_clicked() //txb1 +{ + m_ntx=1; + ui->txrb1->setChecked(true); + m_restart=true; +} + +void MainWindow::on_txb2_clicked() //txb2 +{ + m_ntx=2; + ui->txrb2->setChecked(true); + m_restart=true; +} + +void MainWindow::on_txb3_clicked() //txb3 +{ + m_ntx=3; + ui->txrb3->setChecked(true); + m_restart=true; +} + +void MainWindow::on_txb4_clicked() //txb4 +{ + m_ntx=4; + ui->txrb4->setChecked(true); + m_restart=true; +} + +void MainWindow::on_txb5_clicked() //txb5 +{ + m_ntx=5; + ui->txrb5->setChecked(true); + m_restart=true; +} + +void MainWindow::on_txb6_clicked() //txb6 +{ + m_ntx=6; + ui->txrb6->setChecked(true); + m_restart=true; +} + +void MainWindow::selectCall2(bool ctrl) //selectCall2 +{ + QString t = ui->decodedTextBrowser->toPlainText(); //Full contents + int i=ui->decodedTextBrowser->textCursor().position(); + int i0=t.lastIndexOf(" ",i); + int i1=t.indexOf(" ",i); + QString hiscall=t.mid(i0+1,i1-i0-1); + if(hiscall!="") { + if(hiscall.length() < 13) doubleClickOnCall(hiscall, ctrl); + } +} + //doubleClickOnCall +void MainWindow::doubleClickOnCall(QString hiscall, bool ctrl) +{ + if(m_worked[hiscall]) { + msgBox("Possible dupe: " + hiscall + " already in log."); + } + ui->dxCallEntry->setText(hiscall); + QString t = ui->decodedTextBrowser->toPlainText(); //Full contents + int i2=ui->decodedTextBrowser->textCursor().position(); + QString t1 = t.mid(0,i2); //contents up to text cursor + int i1=t1.lastIndexOf("\n") + 1; + QString t2 = t1.mid(i1,i2-i1); //selected line + int n = 60*t2.mid(13,2).toInt() + t2.mid(15,2).toInt(); + m_txFirst = ((n%2) == 1); + ui->txFirstCheckBox->setChecked(m_txFirst); + QString rpt=""; + if(ctrl) rpt=t2.mid(23,3); + lookup(); + genStdMsgs(rpt); + if(t2.indexOf(m_myCall)>0) { + m_ntx=2; + ui->txrb2->setChecked(true); + } else { + m_ntx=1; + ui->txrb1->setChecked(true); + } +} + //doubleClickOnMessages +void MainWindow::doubleClickOnMessages(QString hiscall, QString t2) +{ + if(m_worked[hiscall]) { + msgBox("Possible dupe: " + hiscall + " already in log."); + } + ui->dxCallEntry->setText(hiscall); + int n = 60*t2.mid(13,2).toInt() + t2.mid(15,2).toInt(); + m_txFirst = ((n%2) == 1); + ui->txFirstCheckBox->setChecked(m_txFirst); + lookup(); + genStdMsgs(""); + if(t2.indexOf(m_myCall)>0) { + m_ntx=2; + ui->txrb2->setChecked(true); + } else { + m_ntx=1; + ui->txrb1->setChecked(true); + } +} + +void MainWindow::genStdMsgs(QString rpt) //genStdMsgs() +{ + QString hiscall=ui->dxCallEntry->text().toUpper().trimmed(); + ui->dxCallEntry->setText(hiscall); + QString t0=hiscall + " " + m_myCall + " "; + QString t=t0 + m_myGrid.mid(0,4); + msgtype(t, ui->tx1); + if(rpt == "") { + t=t+" OOO"; + msgtype(t, ui->tx2); + msgtype("RO", ui->tx3); + msgtype("RRR", ui->tx4); + msgtype("73", ui->tx5); + } else { + t=t0 + rpt; + msgtype(t, ui->tx2); + t=t0 + "R" + rpt; + msgtype(t, ui->tx3); + t=t0 + "RRR"; + msgtype(t, ui->tx4); + t=t0 + "73"; + msgtype(t, ui->tx5); + } + t="CQ " + m_myCall + " " + m_myGrid.mid(0,4); + msgtype(t, ui->tx6); + m_ntx=1; + ui->txrb1->setChecked(true); +} + +void MainWindow::lookup() //lookup() +{ + QString hiscall=ui->dxCallEntry->text().toUpper().trimmed(); + ui->dxCallEntry->setText(hiscall); + QString call3File = m_appDir + "/CALL3.TXT"; + QFile f(call3File); + if(!f.open(QIODevice::ReadOnly | QIODevice::Text)) { + msgBox("Cannot open " + call3File); + return; + } + char c[132]; + qint64 n=0; + for(int i=0; i<999999; i++) { + n=f.readLine(c,sizeof(c)); + if(n <= 0) { + ui->dxGridEntry->setText(""); + break; + } + QString t=QString(c); + if(t.indexOf(hiscall)==0) { + int i1=t.indexOf(","); + QString hisgrid=t.mid(i1+1,6); + i1=hisgrid.indexOf(","); + if(i1>0) { + hisgrid=hisgrid.mid(0,4); + } else { + hisgrid=hisgrid.mid(0,4) + hisgrid.mid(4,2).toLower(); + } + ui->dxGridEntry->setText(hisgrid); + break; + } + } + f.close(); +} + +void MainWindow::on_lookupButton_clicked() //Lookup button +{ + lookup(); +} + +void MainWindow::on_addButton_clicked() //Add button +{ + if(ui->dxGridEntry->text()=="") { + msgBox("Please enter a valid grid locator."); + return; + } + m_call3Modified=false; + QString hiscall=ui->dxCallEntry->text().toUpper().trimmed(); + QString hisgrid=ui->dxGridEntry->text().trimmed(); + QString newEntry=hiscall + "," + hisgrid; + + int ret = QMessageBox::warning(this, "Add", + newEntry + "\n" + "Is this station known to be active on EME?", + QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); + if(ret==QMessageBox::Yes) { + newEntry += ",EME,,"; + } else { + newEntry += ",,,"; + } + QString call3File = m_appDir + "/CALL3.TXT"; + QFile f1(call3File); + if(!f1.open(QIODevice::ReadOnly | QIODevice::Text)) { + msgBox("Cannot open " + call3File); + return; + } + QString tmpFile = m_appDir + "/CALL3.TMP"; + QFile f2(tmpFile); + if(!f2.open(QIODevice::WriteOnly | QIODevice::Text)) { + msgBox("Cannot open " + tmpFile); + return; + } + QTextStream in(&f1); + QTextStream out(&f2); + QString hc=hiscall; + QString hc1=""; + QString hc2=""; + QString s; + do { + s=in.readLine(); + hc1=hc2; + if(s.mid(0,2)=="//") { + out << s + "\n"; + } else { + int i1=s.indexOf(","); + hc2=s.mid(0,i1); + if(hc>hc1 && hchc1 && !m_call3Modified) + out << newEntry + "\n"; + if(m_call3Modified) { + QFile f0(m_appDir + "/CALL3.OLD"); + if(f0.exists()) f0.remove(); + QFile f1(m_appDir + "/CALL3.TXT"); + f1.rename(m_appDir + "/CALL3.OLD"); + f2.rename(m_appDir + "/CALL3.TXT"); + f2.close(); + } +} + +void MainWindow::msgtype(QString t, QLineEdit* tx) //msgtype() +{ +// if(t.length()<1) return 0; + char message[23]; + char msgsent[23]; + int len1=22; + int mode65=0; //mode65 ==> check message but don't make wave() + double samfac=1.0; + int nsendingsh=0; + int mwave; + t=t.toUpper(); + int i1=t.indexOf(" OOO"); + QByteArray s=t.toUpper().toLocal8Bit(); + ba2msg(s,message); + gen65_(message,&mode65,&samfac,&nsendingsh,msgsent,iwave,&mwave,len1,len1); + + QPalette p(tx->palette()); + if(nsendingsh==1) { + p.setColor(QPalette::Base,"#66ffff"); + } else if(nsendingsh==-1) { + p.setColor(QPalette::Base,"#ffccff"); + } else { + p.setColor(QPalette::Base,Qt::white); + } + tx->setPalette(p); + int len=t.length(); + if(nsendingsh==-1) { + len=qMin(len,13); + if(i1>10) { + tx->setText(t.mid(0,len).toUpper() + " OOO"); + } else { + tx->setText(t.mid(0,len).toUpper()); + } + } else { + tx->setText(t); + } +} + +void MainWindow::on_tx1_editingFinished() //tx1 edited +{ + QString t=ui->tx1->text(); + msgtype(t, ui->tx1); +} + +void MainWindow::on_tx2_editingFinished() //tx2 edited +{ + QString t=ui->tx2->text(); + msgtype(t, ui->tx2); +} + +void MainWindow::on_tx3_editingFinished() //tx3 edited +{ + QString t=ui->tx3->text(); + msgtype(t, ui->tx3); +} + +void MainWindow::on_tx4_editingFinished() //tx4 edited +{ + QString t=ui->tx4->text(); + msgtype(t, ui->tx4); +} + +void MainWindow::on_tx5_editingFinished() //tx5 edited +{ + QString t=ui->tx5->text(); + msgtype(t, ui->tx5); +} + +void MainWindow::on_tx6_editingFinished() //tx6 edited +{ + QString t=ui->tx6->text(); + msgtype(t, ui->tx6); +} + +void MainWindow::on_setTxFreqButton_clicked() //Set Tx Freq +{ + m_setftx=1; + m_txFreq=g_pWideGraph->QSOfreq(); +} + +void MainWindow::on_dxCallEntry_textChanged(const QString &t) //dxCall changed +{ + m_hisCall=t.toUpper().trimmed(); + ui->dxCallEntry->setText(m_hisCall); +} + +void MainWindow::on_dxGridEntry_textChanged(const QString &t) //dxGrid changed +{ + int n=t.length(); + if(n!=4 and n!=6) return; + if(!t[0].isLetter() or !t[1].isLetter()) return; + if(!t[2].isDigit() or !t[3].isDigit()) return; + if(n==4) m_hisGrid=t.mid(0,2).toUpper() + t.mid(2,2); + if(n==6) m_hisGrid=t.mid(0,2).toUpper() + t.mid(2,2) + + t.mid(4,2).toLower(); + ui->dxGridEntry->setText(m_hisGrid); +} + +void MainWindow::on_genStdMsgsPushButton_clicked() //genStdMsgs button +{ + genStdMsgs(""); +} + +void MainWindow::on_logQSOButton_clicked() //Log QSO button +{ + int nMHz=int(datcom_.fcenter); + QDateTime t = QDateTime::currentDateTimeUtc(); + QString logEntry=t.date().toString("yyyy-MMM-dd,") + + t.time().toString("hh:mm,") + m_hisCall + "," + m_hisGrid + "," + + QString::number(nMHz) + ",JT65B\n"; + QFile f("wsjt.log"); + if(!f.open(QFile::Append)) { + msgBox("Cannot open file \"wsjt.log\"."); + return; + } + QTextStream out(&f); + out << logEntry; + f.close(); + m_worked[m_hisCall]=true; +} + +void MainWindow::on_actionErase_map65_rx_log_triggered() //Erase Rx log +{ + int ret = QMessageBox::warning(this, "Confirm Erase", + "Are you sure you want to erase file map65_rx.log ?", + QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); + if(ret==QMessageBox::Yes) { + m_map65RxLog |= 2; // Rewind map65_rx.log + } +} + +void MainWindow::on_actionErase_map65_tx_log_triggered() //Erase Tx log +{ + int ret = QMessageBox::warning(this, "Confirm Erase", + "Are you sure you want to erase file map65_tx.log ?", + QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); + if(ret==QMessageBox::Yes) { + QFile f("map65_tx.log"); + f.remove(); + } +} + +void MainWindow::on_actionJT65A_triggered() +{ + m_mode="JT65A"; + m_mode65=1; + g_pWideGraph->setMode65(m_mode65); + lab5->setText(m_mode); + ui->actionJT65A->setChecked(true); +} + +void MainWindow::on_actionJT65B_triggered() +{ + m_mode="JT65B"; + m_mode65=2; + g_pWideGraph->setMode65(m_mode65); + lab5->setText(m_mode); + ui->actionJT65B->setChecked(true); +} + +void MainWindow::on_actionJT65C_triggered() +{ + m_mode="JT65C"; + m_mode65=4; + g_pWideGraph->setMode65(m_mode65); + lab5->setText(m_mode); + ui->actionJT65C->setChecked(true); +} + +void MainWindow::on_NBcheckBox_toggled(bool checked) +{ + m_NB=checked; + ui->NBslider->setEnabled(m_NB); +} + +void MainWindow::on_NBslider_valueChanged(int n) +{ + m_NBslider=n; +} + +void MainWindow::on_actionAdjust_IQ_Calibration_triggered() +{ + m_adjustIQ=1; +} + +void MainWindow::on_actionApply_IQ_Calibration_triggered() +{ + m_applyIQcal= 1-m_applyIQcal; +} + +void MainWindow::on_actionFUNcube_Dongle_triggered() +{ + proc_qthid.start(QDir::toNativeSeparators(m_appDir + "/qthid")); +} diff --git a/mainwindow.h b/mainwindow.h new file mode 100644 index 000000000..482bed51b --- /dev/null +++ b/mainwindow.h @@ -0,0 +1,274 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H +#include +#include +#include +#include +#include +#include "soundin.h" +#include "soundout.h" +#include "commons.h" +#include "sleep.h" + +#define NFFT 32768 +#define NSMAX 5760000 + +//--------------------------------------------------------------- MainWindow +namespace Ui { + class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + bool m_network; + +public slots: + void showSoundInError(const QString& errorMsg); + void showStatusMessage(const QString& statusMsg); + void dataSink(int k); + void diskDat(); + void diskWriteFinished(); + void freezeDecode(int n); + void readFromStdout(); + void readFromStderr(); + void m65_error(); + void guiUpdate(); + void doubleClickOnCall(QString hiscall, bool ctrl); + void doubleClickOnMessages(QString hiscall, QString t2); + +protected: + virtual void keyPressEvent( QKeyEvent *e ); + void closeEvent(QCloseEvent*); + virtual bool eventFilter(QObject *object, QEvent *event); + +private slots: + void on_tx1_editingFinished(); + void on_tx2_editingFinished(); + void on_tx3_editingFinished(); + void on_tx4_editingFinished(); + void on_tx5_editingFinished(); + void on_tx6_editingFinished(); + void on_actionDeviceSetup_triggered(); + void on_monitorButton_clicked(); + void on_actionExit_triggered(); + void on_actionAbout_triggered(); + void OnExit(); + void on_actionLinrad_triggered(); + void on_actionCuteSDR_triggered(); + void on_autoButton_clicked(); + void on_stopTxButton_clicked(); + void on_tolSpinBox_valueChanged(int arg1); + void on_actionAstro_Data_triggered(); + void on_stopButton_clicked(); + void on_actionOnline_Users_Guide_triggered(); + void on_actionWide_Waterfall_triggered(); + void on_actionBand_Map_triggered(); + void on_actionMessages_triggered(); + void on_actionOpen_triggered(); + void on_actionOpen_next_in_directory_triggered(); + void on_actionDecode_remaining_files_in_directory_triggered(); + void on_actionDelete_all_tf2_files_in_SaveDir_triggered(); + void on_actionErase_Band_Map_and_Messages_triggered(); + void on_actionFind_Delta_Phi_triggered(); + void on_actionF4_sets_Tx6_triggered(); + void on_actionOnly_EME_calls_triggered(); + void on_actionNo_shorthands_if_Tx1_triggered(); + void on_actionNo_Deep_Search_triggered(); + void on_actionNormal_Deep_Search_triggered(); + void on_actionAggressive_Deep_Search_triggered(); + void on_actionNone_triggered(); + void on_actionSave_all_triggered(); + void on_actionKeyboard_shortcuts_triggered(); + void on_actionSpecial_mouse_commands_triggered(); + void on_actionAvailable_suffixes_and_add_on_prefixes_triggered(); + void on_DecodeButton_clicked(); + void decode(); + void decodeBusy(bool b); + void on_EraseButton_clicked(); + void on_txb1_clicked(); + void on_txFirstCheckBox_stateChanged(int arg1); + void set_ntx(int n); + void on_txb2_clicked(); + void on_txb3_clicked(); + void on_txb4_clicked(); + void on_txb5_clicked(); + void on_txb6_clicked(); + void on_lookupButton_clicked(); + void on_addButton_clicked(); + void on_setTxFreqButton_clicked(); + void on_dxCallEntry_textChanged(const QString &arg1); + void on_dxGridEntry_textChanged(const QString &arg1); + void selectCall2(bool ctrl); + void on_genStdMsgsPushButton_clicked(); + void bumpDF(int n); + void on_logQSOButton_clicked(); + void on_actionErase_map65_rx_log_triggered(); + void on_actionErase_map65_tx_log_triggered(); + void on_NBcheckBox_toggled(bool checked); + void on_actionJT65A_triggered(); + void on_actionJT65B_triggered(); + void on_actionJT65C_triggered(); + void on_NBslider_valueChanged(int value); + void on_actionAdjust_IQ_Calibration_triggered(); + void on_actionApply_IQ_Calibration_triggered(); + + void on_actionAFMHot_triggered(); + + void on_actionBlue_triggered(); + + void on_actionFUNcube_Dongle_triggered(); + +private: + Ui::MainWindow *ui; + qint32 m_nDevIn; + qint32 m_nDevOut; + qint32 m_idInt; + qint32 m_waterfallAvg; + qint32 m_DF; + qint32 m_tol; + qint32 m_QSOfreq0; + qint32 m_ntx; + qint32 m_pttPort; + qint32 m_astroFont; + qint32 m_timeout; + qint32 m_dPhi; + qint32 m_fCal; + qint32 m_txFreq; + qint32 m_setftx; + qint32 m_ndepth; + qint32 m_sec0; + qint32 m_map65RxLog; + qint32 m_nutc0; + qint32 m_mode65; + qint32 m_nrx; + qint32 m_hsym0; + qint32 m_paInDevice; + qint32 m_paOutDevice; + qint32 m_udpPort; + qint32 m_NBslider; + qint32 m_adjustIQ; + qint32 m_applyIQcal; + qint32 m_mult570; + + double m_fAdd; + double m_IQamp; + double m_IQphase; + double m_cal570; + + bool m_monitoring; + bool m_transmitting; + bool m_diskData; + bool m_loopall; + bool m_decoderBusy; + bool m_txFirst; + bool m_auto; + bool m_txMute; + bool m_restart; + bool m_killAll; + bool m_xpol; + bool m_xpolx; + bool m_call3Modified; + bool m_startAnother; + bool m_saveAll; + bool m_onlyEME; + bool m_widebandDecode; + bool m_kb8rq; + bool m_NB; + bool m_fs96000; + bool m_IQswap; + bool m_10db; + bool m_initIQplus; + + float m_gainx; + float m_gainy; + float m_phasex; + float m_phasey; + float m_pctZap; + + QRect m_astroGeom; + QRect m_wideGraphGeom; + QRect m_messagesGeom; + QRect m_bandMapGeom; + + QLabel* lab1; // labels in status bar + QLabel* lab2; + QLabel* lab3; + QLabel* lab4; + QLabel* lab5; + QLabel* lab6; + + QMessageBox msgBox0; + + QFuture* future1; + QFuture* future2; + QFutureWatcher* watcher1; + QFutureWatcher* watcher2; + + QProcess proc_m65; + QProcess proc_qthid; + + QString m_path; + QString m_pbdecoding_style1; + QString m_pbmonitor_style; + QString m_pbAutoOn_style; + QString m_messagesText; + QString m_bandmapText; + QString m_myCall; + QString m_myGrid; + QString m_hisCall; + QString m_hisGrid; + QString m_appDir; + QString m_saveDir; + QString m_azelDir; + QString m_dxccPfx; + QString m_palette; + QString m_dateTime; + QString m_mode; + QString m_colors; + + QHash m_worked; + + SoundInThread soundInThread; //Instantiate the audio threads + SoundOutThread soundOutThread; + +//---------------------------------------------------- private functions + void readSettings(); + void writeSettings(); + void createStatusBar(); + void updateStatusBar(); + void msgBox(QString t); + void genStdMsgs(QString rpt); + void lookup(); + void ba2msg(QByteArray ba, char* message); + void msgtype(QString t, QLineEdit* tx); + void stub(); +}; + +extern void getfile(QString fname, bool xpol, int idInt); +extern void savetf2(QString fname, bool xpol); +extern int killbyname(const char* progName); +extern void getDev(int* numDevices,char hostAPI_DeviceName[][50], + int minChan[], int maxChan[], + int minSpeed[], int maxSpeed[]); + +extern "C" { +//----------------------------------------------------- C and Fortran routines + void symspec_(int* k, int* nxpol, int* ndiskdat, int* nb, int* m_NBslider, + int* idphi, int* nfsample, float* fgreen, int* iqadjust, + int* iqapply, float* gainx, float* gainy, float* phasex, + float* phasey, float* rejectx, float* rejecty, float* px, + float* py, float s[], int* nkhz, int* nhsym, int* nzap, + float* slimit, uchar lstrong[]); + + void gen65_(char* msg, int* mode65, double* samfac, int* nsendingsh, + char* msgsent, short iwave[], int* nwave, int len1, int len2); + + int ptt_(int* nport, int* itx, int* iptt); + } + +#endif // MAINWINDOW_H diff --git a/mainwindow.ui b/mainwindow.ui new file mode 100644 index 000000000..335f77955 --- /dev/null +++ b/mainwindow.ui @@ -0,0 +1,1611 @@ + + + MainWindow + + + + 0 + 0 + 616 + 477 + + + + + 0 + 0 + + + + + 2048 + 800 + + + + SpecJT by K1JT + + + + + + + + + + + + + 0 + 0 + + + + + 453 + 170 + + + + + 620 + 16777215 + + + + Freq DF Pol UTC DT dB KV DS TxPol + + + + + + + 0 + 0 + + + + + 421 + 100 + + + + + 610 + 400 + + + + + Courier New + 10 + + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAsNeeded + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Courier New'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + false + + + + + + + + + + + + + 50 + 0 + + + + Log &QSO + + + + + + + + 50 + 0 + + + + &Stop + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + + 16777215 + 16777215 + + + + &Monitor + + + + + + + + 50 + 0 + + + + &Decode + + + + + + + + 50 + 0 + + + + &Erase + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + &Auto is OFF + + + + + + + + 0 + 0 + + + + + 50 + 0 + + + + St&op Tx + + + + + + + + + + + + 0 + 0 + + + + + 16777215 + 26 + + + + dB + + + + + + + + 0 + 0 + + + + + 43 + 180 + + + + 1 + + + 60.000000000000000 + + + 0.000000000000000 + + + 8 + + + 0.000000000000000 + + + + + + + + 0 + 0 + + + + + 12 + 177 + + + + 1 + + + 60.000000000000000 + + + 0.000000000000000 + + + 8 + + + 0.000000000000000 + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + + 0 + 40 + + + + + 290 + 16777215 + + + + + + + DX Call Grid + + + + + 231 + 13 + 50 + 23 + + + + + 50 + 16777215 + + + + SetMsgs + + + + + + 7 + 13 + 150 + 64 + + + + + + + + + + 0 + 0 + + + + + 0 + 23 + + + + + 70 + 16777215 + + + + + + + + + + + + 0 + 0 + + + + + 0 + 23 + + + + + 70 + 16777215 + + + + + + + + + + + + + + + + 50 + 16777215 + + + + &Lookup + + + + + + + + 50 + 16777215 + + + + Add + + + + + + + + + + + 40 + 80 + 70 + 23 + + + + + 70 + 16777215 + + + + &GenStdMsgs + + + + + + + + + 150 + 40 + + + + + 20 + + + + QFrame::Panel + + + 01:23:45 + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 30 + 20 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + + 0 + 23 + + + + + 70 + 16777215 + + + + Tx first + + + + + + + + 70 + 16777215 + + + + Set Tx Freq + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + NB + + + + + + + false + + + + 0 + 0 + + + + + 70 + 16777215 + + + + 0 + + + 100 + + + 40 + + + Qt::Horizontal + + + + + + + + + + 0 + 0 + + + + + 30 + 0 + + + + + 25 + 18 + + + + 500 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + true + + + + 0 + 0 + + + + + 0 + 23 + + + + + 18 + 16777215 + + + + 0 + + + 6 + + + 5 + + + + + + + + 0 + 0 + + + + + 20 + 16777215 + + + + Tol + + + + + + + + + + + + + + + + 160 + 0 + + + + + 180 + 24 + + + + + MS Shell Dlg 2 + + + + + + + + + + + + 160 + 0 + + + + + 180 + 24 + + + + + + + + + 160 + 0 + + + + + 180 + 24 + + + + + + + + + 160 + 0 + + + + + 180 + 24 + + + + + + + + + 160 + 0 + + + + + 180 + 24 + + + + + + + + + 160 + 0 + + + + + 180 + 24 + + + + + + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + true + + + buttonGroup + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + buttonGroup + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + buttonGroup + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + buttonGroup + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + buttonGroup + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + buttonGroup + + + + + + + + + + + + 50 + 20 + + + + + 0 + 16 + + + + + 29 + 20 + + + + Tx1 + + + + + + + + 0 + 16 + + + + + 29 + 20 + + + + Tx2 + + + + + + + + 0 + 16 + + + + + 29 + 20 + + + + Tx3 + + + + + + + + 0 + 16 + + + + + 29 + 20 + + + + Tx4 + + + + + + + + 0 + 16 + + + + + 29 + 20 + + + + Tx5 + + + + + + + + 0 + 16 + + + + + 29 + 20 + + + + Tx6 + + + + + + + + + + + + + + + + + 0 + 0 + 616 + 21 + + + + + File + + + + + + + + + + + + + + + Setup + + + + + + + + + + + + + + View + + + + Waterfall palette + + + + + + + + + + + + + + + + Decode + + + + + + + + + + + Save + + + + + + + Help + + + + + + + + + + Mode + + + + + + + + + + + + + + + + TopToolBarArea + + + false + + + + + + Exit + + + + + Options + + + F2 + + + + + About MAP65 + + + Ctrl+F1 + + + + + Astro Data + + + Shift+F10 + + + + + Band Map + + + + + Messages + + + + + Wide Waterfall + + + + + Open + + + + + Open next in directory + + + F6 + + + + + Decode remaining files in directory + + + Shift+F6 + + + + + Delete all *.tf2 and *.iq files in SaveDir + + + + + Erase Band Map and Messages + + + + + Erase map65_rx.log + + + + + true + + + false + + + Linrad + + + + + true + + + true + + + CuteSDR + + + + + Find Delta Phi + + + + + true + + + F4 sets Tx6 + + + + + true + + + Only EME calls + + + + + true + + + No shorthand decodes if Tx1 + + + + + true + + + true + + + No Deep Search + + + + + true + + + Normal Deep Search + + + + + true + + + Aggressive Deep Search + + + + + true + + + true + + + None + + + + + true + + + Save all + + + + + true + + + 50 + + + + + true + + + true + + + 144 + + + + + true + + + 222 + + + + + true + + + 432 + + + + + true + + + 1296 + + + + + true + + + 2304 + + + + + Online User's Guide + + + F1 + + + + + Keyboard shortcuts + + + + + Special mouse commands + + + + + Available suffixes and add-on-prefixes + + + + + Erase map65_tx.log + + + + + true + + + JT65A + + + + + true + + + true + + + JT65B + + + + + true + + + JT65C + + + + + I/Q Calibration + + + F7 + + + + + Adjust I/Q Calibration + + + + + true + + + Apply I/Q Calibration + + + + + true + + + AFMHot + + + + + true + + + Blue + + + + + FUNcube Dongle Settings + + + + + + + DisplayText + QTextBrowser +
      displaytext.h
      +
      + + QwtThermo + QWidget +
      qwt_thermo.h
      +
      +
      + + + + monitorButton + toggled(bool) + MainWindow + update() + + + 264 + 275 + + + 126 + 515 + + + + + + + + true + + + +
      diff --git a/map65.iss b/map65.iss index abb78f569..5d5c5f7f2 100644 --- a/map65.iss +++ b/map65.iss @@ -1,21 +1,31 @@ [Setup] AppName=MAP65 -AppVerName=MAP65 Version 1.1 r24254 -AppCopyright=Copyright (C) 2001-2011 by Joe Taylor, K1JT -DefaultDirName={pf}\MAP65 +AppVerName=MAP65 Version 2.3.0 r631 +AppCopyright=Copyright (C) 2001-2012 by Joe Taylor, K1JT +DefaultDirName=c:\MAP65 DefaultGroupName=MAP65 [Files] -Source: "c:\Users\joe\wsjt\map65\map65.exe"; DestDir: "{app}" -Source: "c:\Users\joe\wsjt\map65\CALL3.TXT"; DestDir: "{app}"; Flags: onlyifdoesntexist -Source: "c:\Users\joe\wsjt\map65\wsjt.ico"; DestDir: "{app}"; Flags: onlyifdoesntexist -Source: "c:\Users\joe\wsjt\map65\TSKY.DAT"; DestDir: "{app}"; Flags: onlyifdoesntexist -Source: "c:\Users\joe\wsjt\map65\KVASD_G95.EXE"; DestDir: "{app}"; -Source: "c:\Users\joe\wsjt\map65\map65rc.win"; DestDir: "{app}"; -Source: "c:\Users\joe\wsjt\map65\WSJT.LOG"; DestDir: "{app}"; +Source: "c:\Users\joe\map65\install\m65.exe"; DestDir: "{app}" +Source: "c:\Users\joe\map65\install\map65.exe"; DestDir: "{app}" +Source: "c:\Users\joe\map65\install\wsjt.ico"; DestDir: "{app}" +Source: "c:\Users\joe\map65\install\kvasd.exe"; DestDir: "{app}" +Source: "c:\Users\joe\map65\install\CALL3.TXT"; DestDir: "{app}"; Flags: onlyifdoesntexist +Source: "c:\Users\joe\map65\install\fftwf-wisdom.exe"; DestDir: "{app}"; Flags: onlyifdoesntexist +Source: "c:\Users\joe\map65\install\wisdom1.bat"; DestDir: "{app}"; +Source: "c:\Users\joe\map65\install\wisdom2.bat"; DestDir: "{app}"; +Source: "c:\Users\joe\map65\install\afmhot.dat"; DestDir: "{app}"; +Source: "c:\Users\joe\map65\install\blue.dat"; DestDir: "{app}"; +Source: "c:\Users\joe\map65\install\qthid.exe"; DestDir: "{app}"; + +Source: "c:\Users\joe\map65\QtSupport\*.dll"; DestDir: "{sys}"; Flags: onlyifdoesntexist + +Source: "c:\Users\joe\map65\install\save\dummy"; DestDir: "{app}\save"; [Icons] -Name: "{group}\MAP65"; Filename: "{app}\map65.exe"; WorkingDir: {app} -Name: "{userdesktop}\MAP65"; Filename: "{app}\map65.exe"; WorkingDir: {app} - +Name: "{group}\MAP65"; Filename: "{app}\map65.exe"; WorkingDir: {app}; IconFilename: {app}\wsjt.ico +Name: "{userdesktop}\MAP65"; Filename: "{app}\map65.exe"; WorkingDir: {app}; IconFilename: {app}\wsjt.ico +[Run] +Filename: "{app}\wisdom1.bat"; Description: "Optimize plans for FFTs (takes a few minutes)"; Flags: postinstall +Filename: "{app}\wisdom2.bat"; Description: "Patiently optimize plans for FFTs (up to one hour)"; Flags: postinstall unchecked diff --git a/map65.pro b/map65.pro new file mode 100644 index 000000000..ff65e3ed3 --- /dev/null +++ b/map65.pro @@ -0,0 +1,77 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2011-07-07T08:39:24 +# +#------------------------------------------------- + +QT += core gui network +CONFIG += qwt thread +#CONFIG += console + +TARGET = map65 +VERSION = 2.3.0 +TEMPLATE = app + +win32 { +DEFINES = WIN32 +DESTDIR = ../install +F90 = g95 +g95.output = ${QMAKE_FILE_BASE}.o +g95.commands = $$F90 -c -O2 -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} +g95.input = F90_SOURCES +QMAKE_EXTRA_COMPILERS += g95 +} + +unix { +DEFINES = UNIX +DESTDIR = ../install +F90 = gfortran +gfortran.output = ${QMAKE_FILE_BASE}.o +gfortran.commands = $$F90 -c -O2 -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} +gfortran.input = F90_SOURCES +QMAKE_EXTRA_COMPILERS += gfortran +} + +SOURCES += main.cpp mainwindow.cpp plotter.cpp about.cpp \ + soundin.cpp soundout.cpp devsetup.cpp \ + widegraph.cpp getfile.cpp messages.cpp bandmap.cpp \ + astro.cpp displaytext.cpp getdev.cpp + +win32 { +SOURCES += killbyname.cpp set570.cpp +} + +HEADERS += mainwindow.h plotter.h soundin.h soundout.h \ + about.h devsetup.h widegraph.h getfile.h messages.h \ + bandmap.h commons.h sleep.h astro.h displaytext.h \ + +DEFINES += __cplusplus + +FORMS += mainwindow.ui about.ui devsetup.ui widegraph.ui \ + messages.ui bandmap.ui astro.ui + +RC_FILE = map65.rc + +unix { +INCLUDEPATH += $$quote(/usr/include/qwt-qt4) +LIBS += -lfftw3f /usr/lib/libgfortran.so.3 +LIBS += ../trunk/libm65/libm65.a +LIBS += /usr/lib/libqwt-qt4.so +LIBS += -lportaudio +#LIBS +- -lusb +} + +win32 { +INCLUDEPATH += c:/qwt-6.0.1/include +LIBS += ../trunk/libm65/libm65.a +LIBS += ../trunk/libfftw3f_win.a +LIBS += ../QtSupport/palir-02.dll +LIBS += libwsock32 +LIBS += C:/MinGW/lib/libf95.a +CONFIG(release) { + LIBS += C:/qwt-6.0.1/lib/qwt.dll +} else { + LIBS += C:/qwt-6.0.1/lib/qwtd.dll +} +LIBS += -lusb +} diff --git a/map65.py b/map65.py deleted file mode 100644 index 096d5a326..000000000 --- a/map65.py +++ /dev/null @@ -1,1996 +0,0 @@ -#--------------------------------------------------------------------- MAP65 -# $Date$ $Revision$ -# -from Tkinter import * -from tkFileDialog import * -import Pmw -from tkMessageBox import showwarning -import g,os,time -import Audio -from math import log10 -try: - from numpy.oldnumeric import zeros -except: - from Numeric import zeros -import dircache -import Image,ImageTk #, ImageDraw -from palettes import colormapblue, colormapgray0, colormapHot, \ - colormapAFMHot, colormapgray1, colormapLinrad, Colormap2Palette -from types import * -import array - -root = Tk() -Version="1.1 r" + "$Rev$"[6:-1] -Version=Version.strip() -print "******************************************************************" -print "MAP65 Version " + Version + ", by K1JT" -print "Revision date: " + \ - "$Date$"[7:-1] -print "Run date: " + time.asctime(time.gmtime()) + " UTC" - -#See if we are running in Windows -g.Win32=0 -if sys.platform=="win32": - g.Win32=1 - try: - root.option_readfile('map65rc.win') - except: - pass -else: - try: - root.option_readfile('map65rc') - except: - pass -root_geom="" - - -#------------------------------------------------------ Global variables -appdir=os.getcwd() -g.appdir=appdir -isync=1 -isync_save=0 -iclip=0 -itol=5 #Default tol=500 Hz -ntol=(10,20,50,100,200,500,1000) #List of available tolerances -idsec=0 -lauto=0 -altmsg=0 -bm_geom="" -bm2_geom="" -cmap0="Linrad" -fileopened="" -font1='Helvetica' -fqso0=125 -hiscall="" -hisgrid="" -hisgrid0="" -isec0=-99 -isec00=-99 -k2txb=IntVar() -kb8rq=IntVar() -kxp0=0 -loopall=0 -mode=StringVar() -mode.set("") -mrudir=os.getcwd() -multicast=IntVar() -nafc=IntVar() -naz=0 -ndepth=IntVar() -nel=0 -nblank=IntVar() -ncall=0 -ndmiles=0 -ndkm=0 -ndebug=IntVar() -ndebug2=IntVar() -ndebug.set(0) -ndebug2.set(0) -neme=IntVar() -nfreeze=IntVar() -nopen=0 -nosh441=IntVar() -noshjt65=IntVar() -setseq=IntVar() -tx6alt="" -txminute=0 -txsnrdb=99. -TxFirst=IntVar() -worked={} -green=zeros(500,'f') -im=Image.new('P',(500,120)) -im.putpalette(Colormap2Palette(colormapLinrad),"RGB") -pim=ImageTk.PhotoImage(im) -balloon=Pmw.Balloon(root) - -g.freeze_decode=0 -g.mode="" -g.ndecphase=0 -g.ndevin=IntVar() -g.ndevout=IntVar() -g.DevinName=StringVar() -g.DevoutName=StringVar() - -g.fc=["" for i in range(200)] - -#------------------------------------------------------ showspecjt -def showspecjt(event=NONE): - if g.showspecjt==0: g.showspecjt=1 - -#------------------------------------------------------ restart -def restart(): - Audio.gcom2.nrestart=1 - Audio.gcom2.mantx=1 - -#------------------------------------------------------ restart2 -def restart2(): - Audio.gcom2.nrestart=1 - -#------------------------------------------------------ toggle_freeze -def toggle_freeze(event=NONE): - nfreeze.set(1-nfreeze.get()) - -#------------------------------------------------------ toggle_zap -def toggle_zap(event=NONE): - nzap.set(1-nzap.get()) - -#------------------------------------------------------ btx (1-6) -def btx1(event=NONE): - ntx.set(1) - Audio.gcom2.txmsg=(tx1.get()+' ')[:28] - Audio.gcom2.ntxreq=1 - restart() -def btx2(event=NONE): - ntx.set(2) - Audio.gcom2.txmsg=(tx2.get()+' ')[:28] - Audio.gcom2.ntxreq=2 - restart() -def btx3(event=NONE): - ntx.set(3) - Audio.gcom2.txmsg=(tx3.get()+' ')[:28] - Audio.gcom2.ntxreq=3 - restart() -def btx4(event=NONE): - ntx.set(4) - Audio.gcom2.txmsg=(tx4.get()+' ')[:28] - Audio.gcom2.ntxreq=4 - restart() -def btx5(event=NONE): - ntx.set(5) - Audio.gcom2.txmsg=(tx5.get()+' ')[:28] - Audio.gcom2.ntxreq=5 - restart() -def btx6(event=NONE): - ntx.set(6) - Audio.gcom2.txmsg=(tx6.get()+' ')[:28] - Audio.gcom2.ntxreq=6 - restart() - -#------------------------------------------------------ quit -def quit(): - root.destroy() - -#------------------------------------------------------ testmsgs -def testmsgs(): - for m in (tx1, tx2, tx3, tx4, tx5, tx6): - m.delete(0,99) - tx1.insert(0,"@A") - tx2.insert(0,"@B") - tx3.insert(0,"@C") - tx4.insert(0,"@D") - tx5.insert(0,"@1000") - tx6.insert(0,"@2000") - -#------------------------------------------------------ delta_phi -def delta_phi(): - global lauto - Audio.gcom2.monitoring=0 - lauto=0 - Audio.gcom2.lauto=0 - Audio.gcom2.ndphi=1 - decode() - -#------------------------------------------------------ -def messages(event=NONE): - global Version,bm,bm_geom,msgtext - bm=Toplevel(root) - bm.title("Messages") - bm.geometry(bm_geom) - if g.Win32: bm.iconbitmap("wsjt.ico") - iframe_bm1 = Frame(bm, bd=1, relief=SUNKEN) - Label(iframe_bm1,text='Freq DF Pol UTC dB').pack(anchor=W, \ - pady=0,side='top') - msgtext=Text(iframe_bm1, height=35, width=45, bg="Navy", fg="yellow") - msgtext.bind('',dbl_click_msgtext) - msgtext.pack(side=LEFT, fill=X, padx=1, pady=3) - bmsb = Scrollbar(iframe_bm1, orient=VERTICAL, command=msgtext.yview) - bmsb.pack(side=RIGHT, fill=Y) - msgtext.configure(yscrollcommand=bmsb.set) - msgtext.tag_configure('age0',foreground='red') - msgtext.tag_configure('age1',foreground='yellow') - msgtext.tag_configure('age2',foreground='gray75') - msgtext.tag_configure('age3',foreground='gray50') - iframe_bm1.pack(expand=1, fill=X, padx=4) - -#------------------------------------------------------ bandmap -def bandmap(event=NONE): - global Version,bm2,bm2_geom,bmtext - bm2=Toplevel(root) - bm2.title("Band Map") - bm2.geometry(bm2_geom) - if g.Win32: bm2.iconbitmap("wsjt.ico") - iframe_bm2 = Frame(bm2, bd=1, relief=SUNKEN) - bmtext=Text(iframe_bm2, height=24, width=39, bg="Navy", fg="yellow") - bmtext.bind('',dbl_click_bmtext) - bmtext.pack(side=LEFT, fill=X, padx=1, pady=3) - bmtext.tag_configure('age0',foreground='red') - bmtext.tag_configure('age1',foreground='yellow') - bmtext.tag_configure('age2',foreground='gray75') - bmtext.tag_configure('age3',foreground='gray50') - iframe_bm2.pack(expand=1, fill=X, padx=4,pady=5) - -#------------------------------------------------------ logqso -def logqso(event=NONE): - t=time.strftime("%Y-%b-%d,%H:%M",time.gmtime()) -# t=t+","+hiscall+","+hisgrid+","+str(g.nfreq)+","+g.mode+"\n" - t=t+","+ToRadio.get()+","+HisGrid.get()+","+str(g.nfreq)+","+g.mode+"\n" - t2="Please confirm making the following entry in MAP65.LOG:\n\n" + t - if worked.has_key(hiscall.strip()): - t2=t2 + "\n\n*** Dupe: " + hiscall + "is already in LOG ***" - msg=Pmw.MessageDialog(root,buttons=('Yes','No'),message_text=t2) - msg.geometry(msgpos()) - if g.Win32: msg.iconbitmap("wsjt.ico") - msg.focus_set() - result=msg.activate() - if result == 'Yes': - f=open(appdir+'/WSJT.LOG','a') - f.write(t) - f.close() - worked[hiscall.strip()]=1 - -#------------------------------------------------------ monitor -def monitor(event=NONE): - bmonitor.configure(bg='green') - Audio.gcom2.monitoring=1 - -#------------------------------------------------------ stopmon -def stopmon(event=NONE): - global loopall - loopall=0 - bmonitor.configure(bg='gray85') - Audio.gcom2.monitoring=0 - -#------------------------------------------------------ dbl_click_text -def dbl_click_text(event): - t=text.get('1.0',END) #Entire contents of text box - t1=text.get('1.0',CURRENT) #Contents from start to cursor - dbl_click_call(t,t1,'OOO',1,event) -#------------------------------------------------------ dbl_click3_text -def dbl_click3_text(event): - t=text.get('1.0',END) #Entire contents of text box - t1=text.get('1.0',CURRENT) #Contents from start to mouse pointer - n=t1.rfind("\n") - rpt=t1[n+24:n+27] - if rpt[0:1] == " ": rpt=rpt[1:] - dbl_click_call(t,t1,rpt,1,event) -#------------------------------------------------------ dbl_click_msgtext -def dbl_click_msgtext(event): - t=msgtext.get('1.0',END) #Entire contents of text box - t1=msgtext.get('1.0',CURRENT) #Contents from start to cursor - dbl_click_call(t,t1,'OOO',2,event) -#------------------------------------------------------ dbl_click_bmtext -def dbl_click_bmtext(event): - t=bmtext.get('1.0',END) #Entire contents of text box - t1=bmtext.get('1.0',CURRENT) #Contents from start to cursor - dbl_click_call(t,t1,'OOO',3,event) -###------------------------------------------------------ dbl_click_ave -##def dbl_click_ave(event): -## t=avetext.get('1.0',END) #Entire contents of text box -## t1=avetext.get('1.0',CURRENT) #Contents from start to cursor -## dbl_click_call(t,t1,'OOO',1,event) -#------------------------------------------------------ dbl_click_call -def dbl_click_call(t,t1,rpt,nbox,event): - global hiscall - i=len(t1) #Length to mouse pointer - i1=t1.rfind(' ')+1 #index of preceding space - i2=i1+t[i1:].find(' ') #index of next space - hiscall=t[i1:i2] #selected word, assumed as callsign - if hiscall[:1]=='*': hiscall=hiscall[1:] - if worked.has_key(hiscall.strip()): -# MsgBox("Possible dupe: " + hiscall) - t3="Possible dupe: " + hiscall - msg=Pmw.MessageDialog(root,buttons=('OK','Cancel'),message_text=t3) - msg.geometry(msgpos()) - if g.Win32: msg.iconbitmap("wsjt.ico") - msg.focus_set() - result=msg.activate() - else: - result='OK' - if result == 'OK': - ToRadio.delete(0,END) - ToRadio.insert(0,hiscall) - i3=t1.rfind('\n')+1 #start of selected line - if i>=4 and i2>i1: - nsec=0 - try: - nsec=3600*int(t1[i3+13:i3+15]) + 60*int(t1[i3+15:i3+17]) - except: - pass - if setseq.get() and nbox!=3: - TxFirst.set((nsec/int(Audio.gcom1.trperiod))%2) - lookup() - GenStdMsgs() - if rpt <> "OOO": - n=tx1.get().rfind(" ") - t2=tx1.get()[0:n+1] - tx2.delete(0,END) - tx2.insert(0,t2+rpt) - tx3.delete(0,END) - tx3.insert(0,t2+"R"+rpt) - tx4.delete(0,END) - tx4.insert(0,t2+"RRR") - tx5.delete(0,END) - tx5.insert(0,t2+"73") - i3=t[:i1].strip().rfind(' ')+1 - if t[i3:i1].strip() == 'CQ' or nbox >= 2: - ntx.set(1) - else: - ntx.set(2) - if event.num==3 and not lauto: toggleauto() - -#----------------------------------------------------------- textkey -def textkey(event=NONE): - text.configure(state=DISABLED) -##def avetextkey(event=NONE): -## avetext.configure(state=DISABLED) - -#------------------------------------------------------ decode -def decode(event=NONE): - if Audio.gcom2.ndecoding==0: #If already busy, ignore request - if isec0>=45 and txminute==0 and Audio.gcom2.monitoring==1 and \ - Audio.datcom.kkdone!=-99 and Audio.gcom2.ndiskdat!=1: - bc='yellow' - bdecode.configure(bg=bc,activebackground=bc,state=DISABLED) - else: - Audio.gcom2.nagain=1 - n=1 - Audio.gcom2.mousebutton=0 - if Audio.gcom2.ndecoding0==4: n=4 - Audio.gcom2.ndecoding=n #Standard decode, full file (d2a) - -#------------------------------------------------------ decode_include -def decode_include(event=NONE): - global isync,isync_save - isync_save=isync - isync=-99 - Audio.gcom2.minsigdb=-99 - decode() - -#------------------------------------------------------ decode_exclude -def decode_exclude(event=NONE): - global isync,isync_save - isync_save=isync - isync=99 - Audio.gcom2.minsigdb=99 - decode() - -#------------------------------------------------------ openfile -def openfile(event=NONE): - global mrudir,fileopened,nopen - nopen=1 #Work-around for "click feedthrough" bug - try: - os.chdir(mrudir) - except: - pass - fname=askopenfilename(filetypes=[("Linrad timf2 files","*.tf2 *.TF2")]) - if fname: - Audio.getfile(fname,len(fname)) - if Audio.gcom2.ierr: print 'Error ',Audio.gcom2.ierr, \ - 'when trying to read file',fname - mrudir=os.path.dirname(fname) - fileopened=os.path.basename(fname) - os.chdir(appdir) - -#------------------------------------------------------ opennext -def opennext(event=NONE): - global ncall,fileopened,loopall,mrudir - if fileopened=="" and ncall==0: - openfile() - ncall=1 - else: -# Make a list of *.tf2 files in mrudir - la=os.listdir(mrudir) - la.sort() - lb=[] - for i in range(len(la)): - j=la[i].find(".tf2") + la[i].find(".TF2") - if j>0: lb.append(la[i]) - for i in range(len(lb)): - if lb[i]==fileopened: - break - if ihc1 and hchc1 and modified==0: - stmp.append(NewEntry+"\n") - try: - f=open(appdir+'/CALL3.TMP','w') - f.writelines(stmp) - f.close() - except: - print 'Error in opening or writing to CALL3.TMP' - - if modified: - if os.path.exists("CALL3.OLD"): os.remove("CALL3.OLD") - os.rename("CALL3.TXT","CALL3.OLD") - os.rename("CALL3.TMP","CALL3.TXT") - Audio.gcom2.mcall3=1 - -#-------------------------------------------------------- clrToRadio -def clrToRadio(event): - ToRadio.delete(0,END) - HisGrid.delete(0,99) - ToRadio.focus_set() - if kb8rq.get(): - ntx.set(6) - nfreeze.set(0) - -#------------------------------------------------------ whois -def whois(hiscall): - whodat="" - try: - f=open(appdir+'/CALL3.TXT','r') - s=f.readlines() - f.close() - except: - print 'Error when searching CALL3.TXT, or no such file present' - s="" - for i in range(len(s)): - if s[i][:2] != '//': - i1=s[i].find(',') - if s[i][:i1] == hiscall: - return s[i] - return "" - -#------------------------------------------------------ cleartext -def cleartext(): - f=open(appdir+'/decoded.txt',mode='w') - f.truncate(0) #Delete contents of decoded.txt - f.close() - f=open(appdir+'/decoded.ave',mode='w') - f.truncate(0) #Delete contents of decoded.ave - f.close() - -#------------------------------------------------------ ModeJT65 -def ModeJT65(): - global isync,itol - cleartext() - Audio.gcom1.trperiod=60 -## iframe4b.pack(after=iframe4,expand=1, fill=X, padx=4) -## bclravg.configure(state=NORMAL) -## binclude.configure(state=NORMAL) -## bexclude.configure(state=NORMAL) - itol=4 - inctol() - nfreeze.set(0) - ntx.set(1) - GenStdMsgs() - erase() - -#------------------------------------------------------ ModeJT65A -def ModeJT65A(event=NONE): - if g.mode != "JT65A": - if lauto: toggleauto() - mode.set("JT65A") - ModeJT65() - -#------------------------------------------------------ ModeJT65B -def ModeJT65B(event=NONE): - if g.mode != "JT65B": - if lauto: toggleauto() - mode.set("JT65B") - ModeJT65() - -#------------------------------------------------------ ModeJT65C -def ModeJT65C(event=NONE): - if g.mode != "JT65C": - if lauto: toggleauto() - mode.set("JT65C") - ModeJT65() - -#------------------------------------------------------ msgpos -def msgpos(): - g=root_geom[root_geom.index("+"):] - t=g[1:] - x=int(t[:t.index("+")]) # + 70 - y=int(t[t.index("+")+1:]) # + 70 - return "+%d+%d" % (x,y) - -#------------------------------------------------------ about -def about(event=NONE): - global Version - about=Toplevel(root) - about.geometry(msgpos()) - if g.Win32: about.iconbitmap("wsjt.ico") - t="MAP65 Version " + Version + ", by K1JT" - Label(about,text=t,font=(font1,16)).pack(padx=20,pady=5) - t=""" -MAP65 is a weak signal communications program designed primarily -for the Earth-Moon-Earth (EME) propagation path. - -Copyright (c) 2001-2007 by Joseph H. Taylor, Jr., K1JT, with -contributions from additional authors. MAP65 is Open Source -software, licensed under the GNU General Public License (GPL). -Source code and programming information may be found at -http://developer.berlios.de/projects/wsjt/. -""" - Label(about,text=t,justify=LEFT).pack(padx=20) - t="Revision date: " + \ - "$Date$"[7:-1] - Label(about,text=t,justify=LEFT).pack(padx=20) - about.focus_set() - -#------------------------------------------------------ shortcuts -def shortcuts(event=NONE): - scwid=Toplevel(root) - scwid.geometry(msgpos()) - if g.Win32: scwid.iconbitmap("wsjt.ico") - t=""" -F1 List keyboard shortcuts -Shift+F1 List special mouse commands -Ctrl+F1 About MAP65 -F2 Options -F3 Tx Mute -F4 Clear "To Radio" -F5 What message to send? -F6 Open next file in directory -Shift+F6 Decode all wave files in directory -Shift+F8 JT65B -F10 Show Waterfall -Shift+F10 Show astronomical data -F11 Decrease DF -F12 Increase DF -Shift+F11 Decrease QSO Frequency -Shift+F12 Increase QSO Frequency -Alt+1 to Alt+6 Tx1 to Tx6 -Alt+A Toggle Auto On/Off -Alt+D Decode -Alt+E Erase -Alt+G Generate Standard Messages -Ctrl+G Generate Alternate JT65 Messages -Alt+I Include -Alt+L Lookup -Ctrl+L Lookup, then Generate Standard Messages -Alt+M Monitor -Alt+O Tx Stop -Alt+Q Log QSO -Alt+S Stop Monitoring or Decoding -Alt+X Exclude -""" - Label(scwid,text=t,justify=LEFT).pack(padx=20) - scwid.focus_set() - -#------------------------------------------------------ mouse_commands -def mouse_commands(event=NONE): - scwid=Toplevel(root) - scwid.geometry(msgpos()) - if g.Win32: scwid.iconbitmap("wsjt.ico") - t=""" -Click on Action --------------------------------------------------------- -Waterfall (upper) Click to set QSO frequency; double-click to set - QSO frequency and Decode - -Waterfall (lower) Click to set target DF; double-click to set - target DF and Decode - -Main screen, Double-click puts callsign in Tx messages -text area -""" - Label(scwid,text=t,justify=LEFT).pack(padx=20) - scwid.focus_set() - -#------------------------------------------------------ what2send -def what2send(event=NONE): - screenf5=Toplevel(root) - screenf5.geometry(root_geom[root_geom.index("+"):]) - if g.Win32: screenf5.iconbitmap("wsjt.ico") - t=""" -To optimize your chances of completing a valid JT65 QSO, use -the following standard procedures and *do not* exchange pertinent -information by other means (e.g., internet, telephone, ...) while -the QSO is in progress! - -If you have received - ... less than both calls, send both calls and your grid locator. - ... both calls, send both calls, your grid locator, and OOO. - ... both calls and OOO, send RO. - ... RO, send RRR. - ... RRR, the QSO is complete. However, the other station may not -know this, so it is conventional to send 73 to signify that you are done. - -Sending grid locators is conventional in JT65, but numerical signal -reports such as "-22" or "R-24" may be substituted. -""" - Label(screenf5,text=t,justify=LEFT).pack(padx=20) - screenf5.focus_set() - -#------------------------------------------------------ prefixes -def prefixes(event=NONE): - pfx=Toplevel(root) - pfx.geometry(msgpos()) - if g.Win32: pfx.iconbitmap("wsjt.ico") - f=open(appdir+'/prefixes.txt','r') - s=f.readlines() - t2="" - for i in range(4): - t2=t2+s[i] - t="" - for i in range(len(s)-4): - t=t+s[i+4] - t=t.split() - t.sort() - t1="" - n=0 - for i in range(len(t)): - t1=t1+t[i]+" " - n=n+len(t[i])+2 - if n>60: - t1=t1+"\n" - n=0 - t1=t1+"\n" - if options.addpfx.get().lstrip(): - t1=t1+"\nOptional prefix: "+(options.addpfx.get().lstrip()+' ')[:8] - t2=t2+"\n"+t1 - Label(pfx,text=t2,justify=LEFT).pack(padx=20) - pfx.focus_set() - -#------------------------------------------------------ azdist -def azdist(): - if len(HisGrid.get().strip())<4: - labAz.configure(text="") - labDist.configure(text="") - else: - labAz.configure(text="Az: %d" % (naz,)) - if options.mileskm.get()==0: - labDist.configure(text=str(ndmiles)+" mi") - else: - labDist.configure(text=str(int(1.609344*ndmiles))+" km") - -#------------------------------------------------------ inctol -def inctol(event=NONE): - global itol - maxitol=6 - if itol0 : itol=itol-1 - ltol.configure(text='Tol '+str(ntol[itol])) - -#------------------------------------------------------ incdsec -def incdsec(event): - global idsec - idsec=idsec+5 - bg='red' - if idsec==0: bg='white' - ldsec.configure(text='Dsec '+str(0.1*idsec),bg=bg) - Audio.gcom1.ndsec=idsec - -#------------------------------------------------------ decdsec -def decdsec(event): - global idsec - idsec=idsec-5 - bg='red' - if idsec==0: bg='white' - ldsec.configure(text='Dsec '+str(0.1*idsec),bg=bg) - Audio.gcom1.ndsec=idsec - -#------------------------------------------------------ erase -def erase(event=NONE): - text.configure(state=NORMAL) - text.delete('1.0',END) - text.configure(state=DISABLED) -## avetext.configure(state=NORMAL) -## avetext.delete('1.0',END) -## avetext.configure(state=DISABLED) - Audio.gcom2.decodedfile=" " -###------------------------------------------------------ clear_avg -##def clear_avg(event=NONE): -## avetext.configure(state=NORMAL) -## avetext.delete('1.0',END) -## avetext.configure(state=DISABLED) -## f=open(appdir+'/decoded.ave',mode='w') -## f.truncate(0) #Delete contents of decoded.ave -## f.close() -## Audio.gcom2.nclearave=1 - -#------------------------------------------------------ delwav -def delwav(): - t="Are you sure you want to delete\nall *.tf2 files in " + \ - options.savedir.get() + " ?" - msg=Pmw.MessageDialog(root,buttons=('Yes','No'),message_text=t) - msg.geometry(msgpos()) - if g.Win32: msg.iconbitmap("wsjt.ico") - msg.focus_set() - result=msg.activate() - if result == 'Yes': -# Make a list of *.tf2 in SaveDir - la=dircache.listdir(options.savedir.get()) - lb=[] - for i in range(len(la)): - j=la[i].find(".tf2") + la[i].find(".TF2") - if j>0: lb.append(la[i]) -# Now delete them all. - savedir=options.savedir.get() - if savedir[-1:] != '/' and savedir[-1:] != '\\': - savedir=savedir + '/' - for i in range(len(lb)): - fname=savedir+lb[i] - os.remove(fname) - -#------------------------------------------------------ del_all -def del_all(): - Audio.gcom1.ns0=-999999 - -#------------------------------------------------------ clr_all -def clr_all(): - Audio.gcom2.nrw26=1 #Request rewind of tmp26.txt - msgtext.delete('1.0',END) - bmtext.delete('1.0',END) - -#------------------------------------------------------ toggleauto -def toggleauto(event=NONE): - global lauto - lauto=1-lauto - Audio.gcom2.lauto=lauto - if lauto: - monitor() - else: - Audio.gcom1.txok=0 - Audio.gcom2.mantx=0 - if lauto==0: auto.configure(text='Auto is OFF',bg='gray85',relief=RAISED) - if lauto==1: auto.configure(text='Auto is ON',bg='red',relief=SOLID) - -#----------------------------------------------------- dtdf_change -# Readout of graphical cursor location -def dtdf_change(event): - if event.y<40 and Audio.gcom2.nspecial==0: - lab1.configure(text='Time (s)',bg="#33FFFF") #light blue - t="%.1f" % (12.0*event.x/500.0-2.0,) - lab6.configure(text=t,bg="#33FFFF") - elif (event.y>=40 and event.y<95) or \ - (event.y<95 and Audio.gcom2.nspecial>0): - lab1.configure(text='DF (Hz)',bg='red') - idf=Audio.gcom2.idf - t="%d" % int(idf+1200.0*event.x/500.0-600.0,) - lab6.configure(text=t,bg="red") - else: - lab1.configure(text='Time (s)',bg='green') - t="%.1f" % (53.0*event.x/500.0,) - lab6.configure(text=t,bg="green") - -#---------------------------------------------------- mouse_click_g1 -def mouse_click_g1(event): - global nopen - if not nopen: - Audio.gcom2.mousedf=int(Audio.gcom2.idf+(event.x-250)*2.4) - nopen=0 - -#------------------------------------------------------ double-click_g1 -def double_click_g1(event): - if Audio.gcom2.ndecoding==0: - g.freeze_decode=1 - -#------------------------------------------------------ mouse_up_g1 -def mouse_up_g1(event): -# This is a fix for certain mouse-clicks - pass - -#------------------------------------------------------ right_arrow -def right_arrow(event=NONE): - n=5*int(Audio.gcom2.mousedf/5) - if n!=0: n=n+5 - if n==Audio.gcom2.mousedf: n=n+5 - Audio.gcom2.mousedf=n - -#------------------------------------------------------ left_arrow -def left_arrow(event=NONE): - n=5*int(Audio.gcom2.mousedf/5) - if n==Audio.gcom2.mousedf: n=n-5 - Audio.gcom2.mousedf=n - -#------------------------------------------------------ inc_fqso -def inc_fqso(event=NONE): - Audio.gcom2.mousefqso=Audio.gcom2.mousefqso + 1 - -#------------------------------------------------------ dec_fqso -def dec_fqso(event=NONE): - Audio.gcom2.mousefqso=Audio.gcom2.mousefqso - 1 - -#------------------------------------------------------ set_ftx -def set_ftx(event=NONE): - Audio.gcom2.nsetftx=1 - -#------------------------------------------------------ GenStdMsgs -def GenStdMsgs(event=NONE): - global altmsg - t=ToRadio.get().upper().strip() - ToRadio.delete(0,99) - ToRadio.insert(0,t) - if k2txb.get()!=0: ntx.set(1) - Audio.gcom2.hiscall=(ToRadio.get()+' ')[:12] - for m in (tx1, tx2, tx3, tx4, tx5, tx6): - m.delete(0,99) - if ToRadio.get().find("/") == -1 and \ - options.MyCall.get().find("/") == -1: - t=ToRadio.get() + " "+options.MyCall.get() + " "+options.MyGrid.get()[:4] - tx1.insert(0,t.upper()) - else: - tx1.insert(0,ToRadio.get() + " "+options.MyCall.get()) - tx2.insert(0,tx1.get()+" OOO") - tx3.insert(0,"RO") - tx4.insert(0,"RRR") - tx5.insert(0,"73") - t="CQ " + options.MyCall.get()+ " "+options.MyGrid.get()[:4] - tx6.insert(0,t.upper()) - altmsg=0 - -#------------------------------------------------------ GenAltMsgs -def GenAltMsgs(event=NONE): - global altmsg,tx6alt - t=ToRadio.get().upper().strip() - ToRadio.delete(0,99) - ToRadio.insert(0,t) - if k2txb.get()!=0: ntx.set(1) - Audio.gcom2.hiscall=(ToRadio.get()+' ')[:12] - if ToRadio.get().find("/") == -1 and options.MyCall.get().find("/") == -1: - for m in (tx1, tx2, tx3, tx4, tx5, tx6): - m.delete(0,99) - t=ToRadio.get() + " "+options.MyCall.get() - tx1.insert(0,t.upper()) - tx2.insert(0,tx1.get()+" OOO") - tx3.insert(0,tx1.get()+" RO") - tx4.insert(0,tx1.get()+" RRR") - tx5.insert(0,"TNX 73 GL ") - tx6.insert(0,tx6alt.upper()) - altmsg=1 - -#------------------------------------------------------ update -def update(): - global root_geom,isec0,naz,nel,ndmiles,ndkm,nopen,kxp0, \ - im,pim,cmap0,isync,isync_save,idsec,first,itol,txsnrdb,tx6alt,\ - bm_geom,bm2_geom,hisgrid0,fqso0,isec00,worked,txminute - - utc=time.gmtime(time.time()+0.1*idsec) - isec=utc[5] - txminute=0 - if Audio.gcom2.lauto and utc[4]%2 != Audio.gcom1.txfirst: txminute=1 - - if isec != isec0: #Do once per second - isec0=isec - t=time.strftime('%y%m%d',utc) - Audio.gcom2.fnamedate=t[:6] - t=time.strftime('%Y %b %d\n%H:%M:%S',utc) - Audio.gcom2.utcdate=t[:12] - ldate.configure(text=t) - t="Rx: %.1f dB %.1f %% %d" % (Audio.gcom2.rxnoise, \ - Audio.gcom2.pctblank,Audio.gcom2.nfloat) - msg4.configure(text=t) - t="Drop: %.2f %%" % Audio.gcom2.pctlost - msg5.configure(text=t) - root_geom=root.geometry() - try: - bm_geom=bm.geometry() - bm2_geom=bm2.geometry() - except: - pass - utchours=utc[3]+utc[4]/60.0 + utc[5]/3600.0 - naz,nel,ndmiles,ndkm,nhotaz,nhotabetter=Audio.azdist0( \ - options.MyGrid.get().upper(),HisGrid.get().upper(),utchours) - azdist() - g.nfreq=nfreq.get() - kxp=int(Audio.datcom.kxp) - if kxp-kxp0 >=0 and kxp-kxp0 < 50000 and \ - ((not Audio.gcom2.lauto) or (not Audio.gcom1.transmitting)): - msg5.configure(text='No Rx data',bg='red') - else: - msg5.configure(bg='gray85') - kxp0=kxp - - if Audio.gcom2.ndecoding==0: - g.AzSun,g.ElSun,g.AzMoon,g.ElMoon,g.AzMoonB,g.ElMoonB,g.ntsky, \ - g.ndop,g.ndop00,g.dbMoon,g.RAMoon,g.DecMoon,g.HA8,g.Dgrd, \ - g.sd,g.poloffset,g.MaxNR,g.dfdt,g.dfdt0,g.RaAux,g.DecAux, \ - g.AzAux,g.ElAux = Audio.astro0(utc[0],utc[1],utc[2], \ - utchours,nfreq.get(),options.MyGrid.get().upper(), \ - options.auxra.get()+' '[:9], \ - options.auxdec.get()+' '[:9]) - - if len(HisGrid.get().strip())<4: - g.ndop=g.ndop00 - g.dfdt=g.dfdt0 - - if (len(HisGrid.get().strip())<4) or (hisgrid != hisgrid0): - msg6.configure(text=" ",bg='gray85') - hisgrid0=hisgrid - Audio.gcom2.nhispol=-999 - - astrotext.delete(1.0,END) - astrotext.insert(END,' Moon\n') - astrotext.insert(END,"Az: %7.1f\n" % g.AzMoon) - astrotext.insert(END,"El: %7.1f\n" % g.ElMoon) - astrotext.insert(END,"DxAz: %5.1f\n" % g.AzMoonB) - astrotext.insert(END,"DxEl: %5.1f\n" % g.ElMoonB) - astrotext.insert(END,' Sun\n') - astrotext.insert(END,"Az: %7.1f\n" % g.AzSun) - astrotext.insert(END,"El: %7.1f\n\n" % g.ElSun) - astrotext.insert(END,"Dop:%7d\n" % g.ndop) - astrotext.insert(END,"Dgrd:%6.1f\n" % g.Dgrd) - - if g.freeze_decode and mode.get()[:4]=='JT65': - if g.freeze_decode==1: - itol=5 - ltol.configure(text='Tol '+str(500)) - Audio.gcom2.dftolerance=500 - Audio.gcom2.mousedf=0 - else: - itol=3 - ltol.configure(text='Tol '+str(100)) - Audio.gcom2.dftolerance=100 - nfreeze.set(1) - Audio.gcom2.nfreeze=1 - if Audio.gcom2.monitoring: - Audio.gcom2.ndecoding=1 - # Audio.gcom2.nagain=0 - Audio.gcom2.nagain=1 - else: - Audio.gcom2.ndecoding=4 - Audio.gcom2.nagain=1 - g.freeze_decode=0 - - t=g.ftnstr(Audio.gcom2.decodedfile) - i=g.rfnd(t,".") - t=t[:i] - if mode.get() != g.mode or first: - if mode.get()[:4]=='JT65': - msg1.configure(bg='#00FFFF') - elif mode.get()=='Measure': - msg1.configure(bg='yellow') - g.mode=mode.get() - first=0 - - samfac_out=Audio.gcom1.mfsample2/110250.0 - t="%6.4f" % (samfac_out) - options.meas_rateout.setvalue(t) - msg1.configure(text=mode.get()) - t="QSO Freq:%4d" % (int(Audio.gcom2.mousefqso),) - msg2.configure(text=t) - t="QSO DF:%4d" % (int(Audio.gcom2.mousedf),) - msg3.configure(text=t) - if int(Audio.gcom2.mousefqso) != fqso0: - itol=5 - ltol.configure(text='Tol '+str(500)) - Audio.gcom2.dftolerance=500 - fqso0=int(Audio.gcom2.mousefqso) - -## if mode.get()[:4]=='JT65' and (Audio.gcom2.ndecoding>0 or \ -## (isec>=options.nt1.get() and txminute==0 and \ -## Audio.gcom2.monitoring==1 and \ -## Audio.datcom.kkdone!=-99 and Audio.gcom2.ndiskdat!=1)): - if mode.get()[:4]=='JT65' and Audio.gcom2.ndecoding>0: -#Set button bg while decoding - bc='#66FFFF' - bdecode.configure(bg=bc,activebackground=bc,state=DISABLED) - else: - bdecode.configure(bg='gray85',activebackground='gray85',state=ACTIVE) - g.ndecphase=0 - - tx1.configure(bg='white') - tx2.configure(bg='white') - tx3.configure(bg='white') - tx4.configure(bg='white') - tx5.configure(bg='white') - tx6.configure(bg='white') - if len(tx5.get())>13: tx5.configure(bg='pink') - - if tx6.get()[:1]=='#': - try: - txsnrdb=float(tx6.get()[1:]) - if txsnrdb>-99.0 and txsnrdb<40.0: - Audio.gcom1.txsnrdb=txsnrdb - tx6.configure(bg='orange') - except: - txsnrdb=99.0 - else: - txsnrdb=99.0 - Audio.gcom1.txsnrdb=txsnrdb - if Audio.gcom2.monitoring and not Audio.gcom1.transmitting: - bmonitor.configure(bg='green') - else: - bmonitor.configure(bg='gray85') - if Audio.gcom1.transmitting: - nmsg=int(Audio.gcom2.nmsg) - t=g.ftnstr(Audio.gcom2.sending) - t="Txing: "+t[:nmsg] - bgcolor='yellow' - if Audio.gcom2.sendingsh==1: bgcolor='#66FFFF' #Shorthand (lt blue) - if Audio.gcom2.sendingsh==-1: bgcolor='red' #Plain Text - if Audio.gcom2.sendingsh==2: bgcolor='pink' #Test file - if txsnrdb<90.0: bgcolor='orange' #Simulation mode - if Audio.gcom2.ntxnow==1: tx1.configure(bg=bgcolor) - elif Audio.gcom2.ntxnow==2: tx2.configure(bg=bgcolor) - elif Audio.gcom2.ntxnow==3: tx3.configure(bg=bgcolor) - elif Audio.gcom2.ntxnow==4: tx4.configure(bg=bgcolor) - elif Audio.gcom2.ntxnow==5: tx5.configure(bg=bgcolor) - else: tx6.configure(bg=bgcolor) - else: - bgcolor='green' - t='Receiving' - msg8.configure(text=t,bg=bgcolor) - - if Audio.gcom2.ndecdone>0 or g.cmap != cmap0: - if Audio.gcom2.ndecdone==1: - if isync==-99 or isync==99: - isync=isync_save - Audio.gcom2.minsigdb=isync - try: - f=open(appdir+'/decoded.txt',mode='r') - lines=f.readlines() - f.close() - except: - lines="" - text.configure(state=NORMAL) - for i in range(len(lines)-1): - text.insert(END,lines[i]) - text.see(END) - g.ndecphase=1 - - if Audio.gcom2.nhispol != -999: - npol=int(Audio.gcom2.nhispol) - npol=180-npol #Reverse sign of x - txpol=(npol - 2*g.poloffset + 360) % 180 - t="Tx pol: %d " % txpol - if txpol < 45 or txpol > 135: - t=t + 'H' - color='pink' - else: - t=t + 'V' - color='yellow' - msg6.configure(text=t,bg=color) - -# text.configure(state=DISABLED) - - try: - f=open(appdir+'/decoded.ave',mode='r') - lines=f.readlines() - f.close() - except: - lines[0]="" - lines[1]="" -## avetext.configure(state=NORMAL) -## avetext.delete('1.0',END) -## if len(lines)>1: -## avetext.insert(END,lines[0]) -## avetext.insert(END,lines[1]) -### avetext.configure(state=DISABLED) - cleartext() - Audio.gcom2.ndecdone=0 - - if Audio.gcom2.ndecdone==2: - try: - f=open(appdir+'/messages.txt',mode='r') - lines=f.readlines() - f.close() - except: - lines="" - msgtext.configure(state=NORMAL) - msgtext.delete('1.0',END) - for i in range(len(lines)): - try: - nage=int(lines[i][45:]) - except: - nage=0 - lines[i]=lines[i][:45]+'\n' - if nage==0: attr='age0' - if nage==1: attr='age1' - if nage==2: attr='age2' - if nage>=3: attr='age3' - msgtext.insert(END,lines[i],attr) - msgtext.see(END) - -# Display Band Map information: - try: - f=open(appdir+'/bandmap.txt',mode='r') - lines=f.readlines() - f.close() - except: - lines="" - bmtext.configure(state=NORMAL) - bmtext.delete('1.0',END) - g.fc=["" for i in range(200)] - for i in range(len(lines)): - for j in range(3): - ka=14*j - kb=ka+12 - t=lines[i][ka:kb] - try: - nage=int(t[10:]) - except: - nage=0 - t=t[:11]+' ' - t2="" - if t[0]!=' ': - fqso=t[:3] - tcall=t[4:10] - cstar=' *' - if worked.has_key(tcall.strip()): cstar=' ' - t2=fqso + cstar + tcall + ' ' - if j==2: - t=t+'\n' - t2=t2+'\n' - if nage==0: attr='age0' - if nage==1: attr='age1' - if nage==2: attr='age2' - if nage>=3: attr='age3' - bmtext.insert(END,t2,attr) - t=t[:12] - if t!=" ": - try: - k=int(t[:3]) - c=t[4:10] - if c!=NONE: - t=g.fc[k] - if t.find(c+" ") == -1: - g.fc[k]=g.fc[k] + c + " " - except: - pass - bmtext.see(END) - - Audio.gcom2.ndecdone=0 - if loopall: opennext() - nopen=0 - - if g.cmap != cmap0: - im.putpalette(g.palette) - cmap0=g.cmap - -# Save some parameters - g.mode=mode.get() - Audio.gcom1.txfirst=TxFirst.get() - try: - Audio.gcom1.samfacin=options.samfacin.get() - except: - Audio.gcom1.samfacin=1.0 - try: - Audio.gcom1.samfacout=options.samfacout.get() - except: - Audio.gcom1.samfacout=1.0 - Audio.gcom2.mycall=(options.MyCall.get()+' ')[:12] - Audio.gcom2.hiscall=(ToRadio.get()+' ')[:12] - Audio.gcom2.hisgrid=(HisGrid.get()+' ')[:6] - Audio.gcom4.addpfx=(options.addpfx.get().lstrip()+' ')[:8] - Audio.gcom2.ntxreq=ntx.get() - tx=(tx1,tx2,tx3,tx4,tx5,tx6) - Audio.gcom2.txmsg=(tx[ntx.get()-1].get()+' ')[:28] - Audio.gcom2.mode=(mode.get()+' ')[:6] - Audio.gcom2.nsave=nsave.get() - Audio.gcom2.nzap=nzap.get() - n=ndebug.get() - if ndebug2.get(): n=2 - Audio.gcom2.ndebug=n - Audio.gcom2.minsigdb=isync - Audio.gcom2.nclip=iclip - Audio.gcom2.nblank=nblank.get() - Audio.gcom2.nafc=nafc.get() - Audio.gcom2.nfreeze=nfreeze.get() - Audio.gcom2.dftolerance=ntol[itol] - Audio.gcom2.neme=neme.get() - Audio.gcom2.ndepth=ndepth.get() - Audio.gcom2.multicast=multicast.get() - Audio.gcom2.nxant=options.xant.get() - try: - Audio.gcom2.idinterval=options.IDinterval.get() - except: - Audio.gcom2.idinterval=0 - Audio.gcom2.ntx2=0 - try: - Audio.gcom2.nkeep=options.nkeep.get() - except: - Audio.gcom2.nkeep=20 - try: - Audio.gcom2.idphi=options.dphi.get() - except: - Audio.gcom2.idphi=0 - try: - Audio.gcom2.nfa=options.fa.get() - except: - Audio.gcom2.nfa=100 - try: - Audio.gcom2.nfb=options.fb.get() - except: - Audio.gcom2.nfa=160 - try: - Audio.gcom2.nfcal=options.fcal.get() - except: - Audio.gcom2.nfcal=0 - try: - Audio.gcom2.nt1=options.nt1.get() - except: - Audio.gcom2.nt1=48 - try: - Audio.gcom2.forcefcenter=options.forceFcenter.get() - except: - Audio.gcom2.forcefcenter=0.0 - t=options.savedir.get() + \ - ' ' + \ - ' ' - Audio.gcom2.savedir=t[:80] - -# Audio.gcom1.rxdelay=float('0'+options.RxDelay.get()) -# Audio.gcom1.txdelay=float('0'+options.TxDelay.get()) - if ntx.get()==1 and noshjt65.get()==1: Audio.gcom2.ntx2=1 - Audio.gcom2.nslim2=isync-4 - try: - Audio.gcom2.nport=int(options.PttPort.get()) - except: - Audio.gcom2.nport=0 - Audio.gcom2.pttport=(options.PttPort.get() + ' ')[:12] - if altmsg: tx6alt=tx6.get() - ldate.after(100,update) # Queue up the next update - -#------------------------------------------------------ Top level frame -frame = Frame(root) - -#------------------------------------------------------ Menu Bar -mbar = Frame(frame) -mbar.pack(fill = X) - -#------------------------------------------------------ File Menu -filebutton = Menubutton(mbar, text = 'File') -filebutton.pack(side = LEFT) -filemenu = Menu(filebutton, tearoff=0) -filebutton['menu'] = filemenu -filemenu.add('command', label = 'Open', command = openfile, \ - accelerator='Ctrl+O') -filemenu.add('command', label = 'Open next in directory', command = opennext, \ - accelerator='F6') -filemenu.add('command', label = 'Decode remaining files in directory', \ - command = decodeall, accelerator='Shift+F6') -filemenu.add_separator() -filemenu.add('command', label = 'Delete all *.tf2 files in SaveDir', \ - command = delwav) -filemenu.add('command', label = 'Erase Band Map and Messages', command = clr_all) -filemenu.add('command', label = 'Erase ALL65.TXT', command = del_all) -filemenu.add_separator() -filemenu.add('command', label = 'Exit', command = quit) - -#------------------------------------------------------ Setup menu -setupbutton = Menubutton(mbar, text = 'Setup') -setupbutton.pack(side = LEFT) -setupmenu = Menu(setupbutton, tearoff=0) -setupbutton['menu'] = setupmenu -setupmenu.add('command', label = 'Options', command = options1, \ - accelerator='F2') -setupmenu.add_separator() -setupmenu.add('command', label = 'Generate messages for test tones', command=testmsgs) -setupmenu.add('command', label = 'Find Delta Phi', command=delta_phi) -setupmenu.add_separator() -setupmenu.add_checkbutton(label = 'F4 sets Tx6',variable=kb8rq) -setupmenu.add_checkbutton(label = 'Double-click on callsign sets TxFirst', - variable=setseq) -setupmenu.add_checkbutton(label = 'GenStdMsgs sets Tx1',variable=k2txb) -setupmenu.add_separator() -setupmenu.add_radiobutton(label = 'Input data multicast', variable=multicast, \ - value=1) -setupmenu.add_radiobutton(label = 'Input data unicast', variable=multicast, \ - value=0) -setupmenu.add_separator() -setupmenu.add_checkbutton(label = 'Enable diagnostics',variable=ndebug) -setupmenu.add_checkbutton(label = 'Verbose diagnostics',variable=ndebug2) - -#------------------------------------------------------ View menu -viewbutton=Menubutton(mbar,text='View') -viewbutton.pack(side=LEFT) -viewmenu=Menu(viewbutton,tearoff=0) -viewbutton['menu']=viewmenu -viewmenu.add('command', label = 'SpecJT', command = showspecjt, \ - accelerator='F10') -viewmenu.add('command', label = 'Messages', command = messages) -viewmenu.add('command', label = 'Band Map', command = bandmap) -viewmenu.add('command', label = 'Astronomical data', command = astro1, \ - accelerator='Shift+F10') - -#------------------------------------------------------ Mode menu -modebutton = Menubutton(mbar, text = 'Mode') -modebutton.pack(side = LEFT) -modemenu = Menu(modebutton, tearoff=0) -modebutton['menu'] = modemenu - -# To enable menu item 0: -# modemenu.entryconfig(0,state=NORMAL) -# Can use the following to retrieve the state: -# state=modemenu.entrycget(0,"state") - -#modemenu.add_radiobutton(label = 'JT65A', variable=mode, command = ModeJT65A, \ -# state=DISABLED, accelerator='F8') -modemenu.add_radiobutton(label = 'JT65B', variable=mode, command = ModeJT65B, \ - accelerator='Shift+F8') -#modemenu.add_radiobutton(label = 'JT65C', variable=mode, command = ModeJT65C, \ -# state=DISABLED, accelerator='Ctrl+F8') -modemenu.add_radiobutton(label = 'Measure', variable=mode) -modemenu.add_radiobutton(label = 'Pulsar', variable=mode,state=DISABLED) - -#------------------------------------------------------ Decode menu -decodebutton = Menubutton(mbar, text = 'Decode') -decodebutton.pack(side = LEFT) -decodemenu = Menu(decodebutton, tearoff=0) -decodebutton['menu'] = decodemenu -decodemenu.add_checkbutton(label='Only EME calls',variable=neme) -decodemenu.add_checkbutton(label='No Shorthands if Tx 1',variable=noshjt65) -decodemenu.add_separator() -decodemenu.add_radiobutton(label = 'No Deep Search', - variable=ndepth, value=0) -decodemenu.add_radiobutton(label = 'Normal Deep Search', - variable=ndepth, value=1) -decodemenu.add_radiobutton(label = 'Aggressive Deep Search', - variable=ndepth, value=2) -#decodemenu.add_radiobutton(label ='Include Average in Aggressive Deep Search', -# variable=ndepth, value=3) - -#------------------------------------------------------ Save menu -savebutton = Menubutton(mbar, text = 'Save') -savebutton.pack(side = LEFT) -savemenu = Menu(savebutton, tearoff=1) -savebutton['menu'] = savemenu -nsave=IntVar() -savemenu.add_radiobutton(label = 'None', variable=nsave,value=0) -savemenu.add_radiobutton(label = 'Save all', variable=nsave,value=1) -nsave.set(0) - -#------------------------------------------------------ Band menu -bandbutton = Menubutton(mbar, text = 'Band') -bandbutton.pack(side = LEFT) -bandmenu = Menu(bandbutton, tearoff=1) -bandbutton['menu'] = bandmenu -nfreq=IntVar() -bandmenu.add_radiobutton(label = '50', variable=nfreq,value=50) -bandmenu.add_radiobutton(label = '144', variable=nfreq,value=144) -bandmenu.add_radiobutton(label = '222', variable=nfreq,value=222) -bandmenu.add_radiobutton(label = '432', variable=nfreq,value=432) -bandmenu.add_radiobutton(label = '1296', variable=nfreq,value=1296) -bandmenu.add_radiobutton(label = '2304', variable=nfreq,value=2304) -nfreq.set(144) -#------------------------------------------------------ Help menu -helpbutton = Menubutton(mbar, text = 'Help') -helpbutton.pack(side = LEFT) -helpmenu = Menu(helpbutton, tearoff=0) -helpbutton['menu'] = helpmenu -helpmenu.add('command', label = 'Keyboard shortcuts', command = shortcuts, \ - accelerator='F1') -helpmenu.add('command', label = 'Special mouse commands', \ - command = mouse_commands, accelerator='Shift+F1') -helpmenu.add('command', label = 'What message to send?', \ - command = what2send, accelerator='F5') -helpmenu.add('command', label = 'Available suffixes and add-on prefixes', \ - command = prefixes) -helpmenu.add('command', label = 'About MAP65', command = about, \ - accelerator='Ctrl+F1') - -#------------------------------------------------------ Label above text -iframe2 = Frame(frame, bd=1, relief=FLAT,height=15) -lab2=Label(iframe2, text='Freq DF Pol UTC DT dB') -lab2.place(x=3,y=6, anchor='w') -lab7=Label(iframe2,text='F3',fg='gray85') -lab7.place(x=495,y=6, anchor=CENTER) -iframe2.pack(expand=1, fill=BOTH, padx=4) - -#-------------------------------------------------------- Decoded text -iframe4 = Frame(frame, bd=2, relief=SUNKEN) -text=Text(iframe4, height=16, width=65) -text.bind('',dbl_click_text) -text.bind('',dbl_click3_text) -text.bind('',textkey) - -root.bind_all('', shortcuts) -root.bind_all('', mouse_commands) -root.bind_all('', about) -root.bind_all('', options1) -root.bind_all('', txmute) -root.bind_all('', clrToRadio) -root.bind_all('', what2send) -root.bind_all('', opennext) -root.bind_all('', decodeall) -#root.bind_all('', ModeJT65A) -root.bind_all('', ModeJT65B) -#root.bind_all('', ModeJT65C) -root.bind_all('', showspecjt) -root.bind_all('', astro1) -root.bind_all('',left_arrow) -root.bind_all('',dec_fqso) -root.bind_all('',right_arrow) -root.bind_all('',inc_fqso) -root.bind_all('',btx1) -root.bind_all('',btx2) -root.bind_all('',btx3) -root.bind_all('',btx4) -root.bind_all('',btx5) -root.bind_all('',btx6) - -root.bind_all('',toggleauto) -root.bind_all('',toggleauto) -##root.bind_all('',clear_avg) -##root.bind_all('',clear_avg) -root.bind_all('',decode) -root.bind_all('',decode) -root.bind_all('',erase) -root.bind_all('',erase) -root.bind_all('',toggle_freeze) -root.bind_all('',toggle_freeze) -root.bind_all('',GenStdMsgs) -root.bind_all('',GenStdMsgs) -root.bind_all('', GenAltMsgs) -root.bind_all('', GenAltMsgs) -root.bind_all('',decode_include) -root.bind_all('',decode_include) -root.bind_all('',lookup) -root.bind_all('',lookup) -root.bind_all('',monitor) -root.bind_all('',monitor) -root.bind_all('',txstop) -root.bind_all('',txstop) -root.bind_all('',openfile) -root.bind_all('',openfile) -root.bind_all('',logqso) -root.bind_all('',logqso) -root.bind_all('',set_ftx) -root.bind_all('',set_ftx) -root.bind_all('',decode_exclude) -root.bind_all('',decode_exclude) -root.bind_all('',toggle_zap) -root.bind_all('',toggle_zap) -root.bind_all('',lookup_gen) -root.bind_all('',lookup_gen) - -text.pack(side=LEFT, fill=X, padx=1) -sb = Scrollbar(iframe4, orient=VERTICAL, command=text.yview) -sb.pack(side=LEFT, fill=Y) -text.configure(yscrollcommand=sb.set) - -astrotext_font='"Lucida Console" 16' -astrotext=Text(iframe4, bg="#66FFFF",height=10,width=11,font=astrotext_font) -astrotext.pack(side=LEFT, fill=BOTH, padx=4) -g2font=astrotext_font -if g2font!="": g.g2font=g2font -iframe4.pack(expand=1, fill=X, padx=4) - -##iframe4b = Frame(frame, bd=2, relief=SUNKEN) -##avetext=Text(iframe4b, height=2, width=65) -##avetext.bind('',dbl_click_ave) -###avetext.bind('',dbl_click_ave) -##avetext.bind('',avetextkey) -##avetext.pack(side=LEFT, fill=X, padx=1) -##iframe4b.pack(expand=1, fill=X, padx=4) - -#------------------------------------------------------- Button Bar -iframe4c = Frame(frame, bd=1, relief=SUNKEN) -blogqso=Button(iframe4c, text='Log QSO',underline=4,command=logqso, - padx=1,pady=1) -bstop=Button(iframe4c, text='Stop',command=stopmon, - padx=1,pady=1) -bmonitor=Button(iframe4c, text='Monitor',underline=0,command=monitor, - padx=1,pady=1) -bdecode=Button(iframe4c, text='Decode',underline=0,command=decode, - padx=1,pady=1) -berase=Button(iframe4c, text='Erase',underline=0,command=erase, - padx=1,pady=1) -##bclravg=Button(iframe4c, text='Clear Avg',underline=0,command=clear_avg, -## padx=1,pady=1) -##binclude=Button(iframe4c, text='Include',underline=0, -## command=decode_include,padx=1,pady=1) -##bexclude=Button(iframe4c, text='Exclude',underline=1, -## command=decode_exclude,padx=1,pady=1) -btxstop=Button(iframe4c,text='TxStop',underline=4,command=txstop, - padx=1,pady=1) - -blogqso.pack(side=LEFT,expand=1,fill=X) -bstop.pack(side=LEFT,expand=1,fill=X) -bmonitor.pack(side=LEFT,expand=1,fill=X) -bdecode.pack(side=LEFT,expand=1,fill=X) -berase.pack(side=LEFT,expand=1,fill=X) -##bclravg.pack(side=LEFT,expand=1,fill=X) -##binclude.pack(side=LEFT,expand=1,fill=X) -##bexclude.pack(side=LEFT,expand=1,fill=X) -btxstop.pack(side=LEFT,expand=1,fill=X) -iframe4c.pack(expand=1, fill=X, padx=4) - -#-----------------------------------------------------General control area -iframe5 = Frame(frame, bd=1, relief=FLAT,height=180) - -#------------------------------------------------------ "Other station" info -f5a=Frame(iframe5,height=170,bd=2,relief=GROOVE) -labToRadio=Label(f5a,text='To radio:', width=9, relief=FLAT) -labToRadio.grid(column=0,row=0) -ToRadio=Entry(f5a,width=9) -ToRadio.insert(0,'W8WN') -ToRadio.grid(column=1,row=0,pady=3) -bLookup=Button(f5a, text='Lookup',underline=0,command=lookup,padx=1,pady=1) -bLookup.grid(column=2,row=0,sticky='EW',padx=4) -labGrid=Label(f5a,text='Grid:', width=9, relief=FLAT) -labGrid.grid(column=0,row=1) -HisGrid=Entry(f5a,width=9) -HisGrid.grid(column=1,row=1,pady=1) -bAdd=Button(f5a, text='Add',command=addtodb,padx=1,pady=1) -bAdd.grid(column=2,row=1,sticky='EW',padx=4) -labAz=Label(f5a,text='Az 257 El 15',width=11) -labAz.grid(column=1,row=2) -labDist=Label(f5a,text='16753 km') -labDist.grid(column=2,row=2) - -#------------------------------------------------------ Date and Time -ldate=Label(f5a, bg='black', fg='yellow', width=11, bd=4, - text='2005 Apr 22\n01:23:45', relief=RIDGE, - justify=CENTER, font=(font1,16)) -ldate.grid(column=0,columnspan=3,row=3,rowspan=2,pady=2) -f5a.pack(side=LEFT,expand=1,fill=BOTH) - -#------------------------------------------------------ Receiving parameters -f5b=Frame(iframe5,bd=2,relief=GROOVE) -nzap=IntVar() -bblank=Checkbutton(f5b,text='NB',justify=RIGHT,variable=nblank) -bblank.grid(column=0,row=0,padx=2,pady=20,sticky='EW') -ltol=Label(f5b, bg='white', fg='black', text='Tol 400', width=8, relief=RIDGE) -ltol.grid(column=0,row=1,padx=2,pady=1,sticky='EW') -Widget.bind(ltol,'',inctol) -Widget.bind(ltol,'',dectol) -ldsec=Label(f5b, bg='white', fg='black', text='Dsec 0.0', width=8, relief=RIDGE) -ldsec.grid(column=0,row=2,ipadx=3,padx=2,pady=5,sticky='EW') -Widget.bind(ldsec,'',incdsec) -Widget.bind(ldsec,'',decdsec) - -f5b.pack(side=LEFT,expand=1,fill=BOTH) - -#------------------------------------------------------ Tx params and msgs -f5c=Frame(iframe5,bd=2,relief=GROOVE) -txfirst=Checkbutton(f5c,text='Tx First',justify=RIGHT,variable=TxFirst) -f5c2=Frame(f5c,bd=0) -ftx=Button(f5c,text='Set Tx Freq',underline=0,command=set_ftx, - padx=1,pady=1) -genmsg=Button(f5c,text='GenStdMsgs',underline=0,command=GenStdMsgs, - padx=1,pady=1) -auto=Button(f5c,text='Auto is Off',underline=0,command=toggleauto, - padx=1,pady=1) -auto.focus_set() - -txfirst.grid(column=0,row=0,sticky='W',padx=4) -f5c2.grid(column=0,row=1,sticky='W',padx=4) -#sked.grid(column=0,row=3,sticky='W',padx=4) -ftx.grid(column=0,row=2,sticky='EW',padx=4) -genmsg.grid(column=0,row=4,sticky='W',padx=4) -auto.grid(column=0,row=5,sticky='EW',padx=4) - -ntx=IntVar() -tx1=Entry(f5c,width=24) -rb1=Radiobutton(f5c,value=1,variable=ntx) -b1=Button(f5c, text='Tx1',underline=2,command=btx1,padx=1,pady=1) -tx1.grid(column=1,row=0) -rb1.grid(column=2,row=0) -b1.grid(column=3,row=0) - -tx2=Entry(f5c,width=24) -rb2=Radiobutton(f5c,value=2,variable=ntx) -b2=Button(f5c, text='Tx2',underline=2,command=btx2,padx=1,pady=1) -tx2.grid(column=1,row=1) -rb2.grid(column=2,row=1) -b2.grid(column=3,row=1) - -tx3=Entry(f5c,width=24) -rb3=Radiobutton(f5c,value=3,variable=ntx) -b3=Button(f5c, text='Tx3',underline=2,command=btx3,padx=1,pady=1) -tx3.grid(column=1,row=2) -rb3.grid(column=2,row=2) -b3.grid(column=3,row=2) - -tx4=Entry(f5c,width=24) -rb4=Radiobutton(f5c,value=4,variable=ntx) -b4=Button(f5c, text='Tx4',underline=2,command=btx4,padx=1,pady=1) -tx4.grid(column=1,row=3) -rb4.grid(column=2,row=3) -b4.grid(column=3,row=3) - -tx5=Entry(f5c,width=24) -rb5=Radiobutton(f5c,value=5,variable=ntx) -b5=Button(f5c, text='Tx5',underline=2,command=btx5,padx=1,pady=1) -tx5.grid(column=1,row=4) -rb5.grid(column=2,row=4) -b5.grid(column=3,row=4) - -tx6=Entry(f5c,width=24) -rb6=Radiobutton(f5c,value=6,variable=ntx) -b6=Button(f5c, text='Tx6',underline=2,command=btx6,padx=1,pady=1) -tx6.grid(column=1,row=5) -rb6.grid(column=2,row=5) -b6.grid(column=3,row=5) - -f5c.pack(side=LEFT,expand=1,fill=BOTH) -iframe5.pack(expand=1, fill=X, padx=4) - -#------------------------------------------------------------ Status Bar -iframe6 = Frame(frame, bd=1, relief=SUNKEN) -msg1=Message(iframe6, text="Message #2", width=300,relief=SUNKEN) -msg1.pack(side=LEFT, fill=X, padx=1) -msg2=Message(iframe6,width=300,relief=SUNKEN) -msg2.pack(side=LEFT, fill=X, padx=1) -msg3=Message(iframe6, text="", width=300,relief=SUNKEN) -msg3.pack(side=LEFT, fill=X, padx=1) -msg4=Message(iframe6, text="", width=300,relief=SUNKEN) -msg4.pack(side=LEFT, fill=X, padx=1) -msg5=Message(iframe6, text="", width=300,relief=SUNKEN) -msg5.pack(side=LEFT, fill=X, padx=1) -msg6=Message(iframe6, text="", width=300,relief=SUNKEN) -msg6.pack(side=LEFT, fill=X, padx=1) -##msg7=Message(iframe6, text="", width=300,relief=SUNKEN) -##msg7.pack(side=LEFT, fill=X, padx=1) -msg8=Message(iframe6, text=' ', width=300,relief=SUNKEN) -msg8.pack(side=RIGHT, fill=X, padx=1) -iframe6.pack(expand=1, fill=X, padx=4) -frame.pack() - -# Create "worked", a dictionary of all calls in WSJT.LOG -try: - f=open(appdir+'/WSJT.LOG','r') - s=f.readlines() -except: - print 'Error opening WSJT.LOG' - s="" -f.close() -tcall="" -for i in range(len(s)): - tcall=s[i].split(',',3)[2] - worked[tcall]=1 - -ldate.after(100,update) -lauto=0 -isync=1 -ntx.set(1) -ndepth.set(1) -import options -ModeJT65B() -lookup() -balloon.unbind(ToRadio) -g.astro_geom0="+0+0" -Audio.gcom1.mute=0 - -#---------------------------------------------------------- Process INI file -try: - f=open(appdir+'/MAP65.INI',mode='r') - params=f.readlines() -except: - params="" - if g.Win32: - options.PttPort.set("0") - else: - options.PttPort.set("/dev/ttyS0") - Audio.gcom2.nport=0 - -try: - for i in range(len(params)): - key,value=params[i].split() - if key == 'MAP65Geometry': root.geometry(value) - elif key == 'BMGeometry': bm_geom=value - elif key == 'BM2Geometry': bm2_geom=value - elif key == 'Mode': - mode.set(value) - if value=='JT65A': - ModeJT65A() - elif value=='JT65B': - ModeJT65B() - elif value=='JT65C': - ModeJT65C() - elif key == 'MyCall': options.MyCall.set(value) - elif key == 'MyGrid': options.MyGrid.set(value) - elif key == 'HisCall': - hiscall=value - if hiscall=="______": hiscall="" - ToRadio.delete(0,END) - ToRadio.insert(0,hiscall) - elif key == 'HisGrid': - hisgrid=value - if hisgrid == "XX00xx": - lookup() - HisGrid.delete(0,END) - HisGrid.insert(0,hisgrid) -# elif key == 'RxDelay': options.RxDelay.set(value) -# elif key == 'TxDelay': options.TxDelay.set(value) - elif key == 'IDinterval': options.IDinterval.set(value) - elif key == 'PttPort': - try: - options.PttPort.set(value) - try: - Audio.gcom2.nport=int(options.PttPort.get()) - except: - Audio.gcom2.nport=0 - except: - if g.Win32: - options.PttPort.set("0") - else: - options.PttPort.set("/dev/ttyS0") - Audio.gcom2.nport=0 - Audio.gcom2.pttport=(options.PttPort.get()+' ')[:12] - elif key == 'Mileskm': options.mileskm.set(value) - elif key == 'Xant': options.xant.set(value) - elif key == 'AudioOut': - try: - g.ndevout.set(value) - except: - g.ndevout.set(0) - g.DevoutName.set(value) - options.DevoutName.set(value) - Audio.gcom1.devout_name=(options.DevoutName.get()+' ')[:12] - elif key == 'SamFacOut': options.samfacout.set(value) - elif key == 'AddPrefix': options.addpfx.set(value.replace("_"," ").lstrip()) - elif key == 'AuxRA': options.auxra.set(value) - elif key == 'AuxDEC': options.auxdec.set(value) - - elif key == 'nkeep': options.nkeep.set(value) - elif key == 'fa': options.fa.set(value) - elif key == 'fb': options.fb.set(value) - elif key == 'fcal': options.fcal.set(value) - elif key == 'Nt1': options.nt1.set(value) - elif key == 'ForceFcenter': options.forceFcenter.set(value) - elif key == 'dphi': options.dphi.set(value) - elif key == 'SaveDir': options.savedir.set(value.replace("#"," ")) - elif key == 'AzElDir': options.azeldir.set(value.replace("#"," ")) - elif key == 'TxFirst': TxFirst.set(value) - elif key == 'KB8RQ': kb8rq.set(value) - elif key == 'K2TXB': k2txb.set(value) - elif key == 'SetSeq': setseq.set(value) - elif key == 'Nsave': nsave.set(value) - elif key == 'Band': nfreq.set(value) - elif key == 'Sync': isync=int(value) - elif key == 'Clip': iclip=int(value) - elif key == 'Zap': nzap.set(value) - elif key == 'NB': nblank.set(value) - elif key == 'NAFC': nafc.set(value) -# elif key == 'Sked': nsked.set(value) - elif key == 'NoSh441': nosh441.set(value) - elif key == 'NoShJT65': noshjt65.set(value) - elif key == 'NEME': neme.set(value) - elif key == 'NDepth': ndepth.set(value) - elif key == 'Multicast': multicast.set(value) - elif key == 'Debug': ndebug.set(value) - elif key == 'Debug2': ndebug2.set(value) - elif key == 'HisCall': - Audio.gcom2.hiscall=(value+' ')[:12] - ToRadio.delete(0,99) - ToRadio.insert(0,value) - lookup() #Maybe should save HisGrid, instead? - elif key == 'MRUDir': mrudir=value.replace("#"," ") - elif key == 'AstroGeometry': g.astro_geom0 =value - else: pass -except: - print 'Error reading MAP65.INI, continuing with defaults.' - print key,value - -g.mode=mode.get() -Audio.gcom2.appdir=(appdir+' ')[:80] -Audio.gcom2.azeldir=(options.azeldir.get()+' ')[:80] -Audio.gcom2.ndepth=ndepth.get() -Audio.gcom2.multicast=multicast.get() -f=open(appdir+'/tmp26.txt','w') -f.truncate(0) -f.close -Audio.ftn_init() -GenStdMsgs() -Audio.gcom4.addpfx=(options.addpfx.get().lstrip()+' ')[:8] -Audio.gcom2.mousefqso=125 -Audio.gcom2.nhispol=-999 -monitor() -first=1 -if g.Win32: root.iconbitmap("wsjt.ico") -root.title(' MAP65 by K1JT') -messages() -bandmap() -import astro -import specjt - -# SpecJT has a "mainloop", so it does not return until terminated. -#root.mainloop() #Superseded by mainloop in SpecJT - -# Clean up and save user options before terminating -f=open(appdir+'/MAP65.INI',mode='a') -root_geom=root_geom[root_geom.index("+"):] -f.write("MAP65Geometry " + root_geom + "\n") -bm_geom=bm_geom[bm_geom.index("+"):] -f.write("BMGeometry " + bm_geom + "\n") -bm2_geom=bm2_geom[bm2_geom.index("+"):] -f.write("BM2Geometry " + bm2_geom + "\n") -f.write("Mode " + g.mode + "\n") -f.write("MyCall " + options.MyCall.get() + "\n") -f.write("MyGrid " + options.MyGrid.get() + "\n") -t=g.ftnstr(Audio.gcom2.hiscall) -if t[:1]==" ": t="______" -f.write("HisCall " + t + "\n") -t=g.ftnstr(Audio.gcom2.hisgrid) -if t==" ": t="XX00xx" -f.write("HisGrid " + t + "\n") -#f.write("RxDelay " + str(options.RxDelay.get()) + "\n") -#f.write("TxDelay " + str(options.TxDelay.get()) + "\n") -f.write("IDinterval " + str(options.IDinterval.get()) + "\n") -f.write("PttPort " + str(options.PttPort.get()) + "\n") -f.write("Mileskm " + str(options.mileskm.get()) + "\n") -f.write("Xant " + str(options.xant.get()) + "\n") -f.write("AudioOut " + options.DevoutName.get() + "\n") -f.write("SamFacOut " + str(options.samfacout.get()) + "\n") -if options.addpfx.get().lstrip()=="": options.addpfx.set("_") -f.write("AddPrefix " + options.addpfx.get().lstrip() + "\n") -if options.auxra.get()=="": options.auxra.set("0") -if options.auxdec.get()=="": options.auxdec.set("0") -f.write("AuxRA " + options.auxra.get() + "\n") -f.write("AuxDEC " + options.auxdec.get() + "\n") -f.write("nkeep " + str(options.nkeep.get()) + "\n") -f.write("dphi " + str(options.dphi.get()) + "\n") -f.write("fa " + str(options.fa.get()) + "\n") -f.write("fb " + str(options.fb.get()) + "\n") -f.write("fcal " + str(options.fcal.get()) + "\n") -f.write("Nt1 " + str(options.nt1.get()) + "\n") -f.write("ForceFcenter " + str(options.forceFcenter.get()) + "\n") -savedir2=options.savedir.get().replace(" ","#") -azeldir2=options.azeldir.get().replace(" ","#") -f.write("SaveDir " + str(savedir2) + "\n") -f.write("AzElDir " + str(azeldir2) + "\n") -f.write("TxFirst " + str(TxFirst.get()) + "\n") -f.write("KB8RQ " + str(kb8rq.get()) + "\n") -f.write("K2TXB " + str(k2txb.get()) + "\n") -f.write("SetSeq " + str(setseq.get()) + "\n") -f.write("Nsave " + str(nsave.get()) + "\n") -f.write("Band " + str(nfreq.get()) + "\n") -f.write("Sync " + str(isync) + "\n") -f.write("Clip " + str(iclip) + "\n") -f.write("Zap " + str(nzap.get()) + "\n") -f.write("NB " + str(nblank.get()) + "\n") -f.write("NAFC " + str(nafc.get()) + "\n") -f.write("NoSh441 " + str(nosh441.get()) + "\n") -f.write("NoShJT65 " + str(noshjt65.get()) + "\n") -f.write("NEME " + str(neme.get()) + "\n") -f.write("NDepth " + str(ndepth.get()) + "\n") -f.write("Multicast " + str(multicast.get()) + "\n") -f.write("Debug " + str(ndebug.get()) + "\n") -f.write("Debug2 " + str(ndebug2.get()) + "\n") -mrudir2=mrudir.replace(" ","#") -f.write("MRUDir " + mrudir2 + "\n") -if g.astro_geom[:7]=="200x200": g.astro_geom="316x373" + g.astro_geom[7:] -f.write("AstroGeometry " + g.astro_geom + "\n") -f.close() - -Audio.ftn_quit() -Audio.gcom1.ngo=0 #Terminate audio streams -Audio.gcom2.lauto=0 -Audio.gcom1.txok=0 -time.sleep(0.5) diff --git a/map65.rc b/map65.rc new file mode 100644 index 000000000..9a0de814a --- /dev/null +++ b/map65.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON DISCARDABLE "wsjt.ico" diff --git a/map65rc b/map65rc deleted file mode 100644 index f251f2bfe..000000000 --- a/map65rc +++ /dev/null @@ -1,9 +0,0 @@ -*font: Arial 10 -*Label*font: Arial 10 -*Text*font: "Courier New" 12 -*Canvas*font: "Lucida Console" 16 -*background: gray85 -*Text*background: white -*Entry*background: white -*foreground: black -*Listbox*foreground: RoyalBlue diff --git a/map65rc.win b/map65rc.win deleted file mode 100644 index 6c1bca5ff..000000000 --- a/map65rc.win +++ /dev/null @@ -1,9 +0,0 @@ -*font: Arial 8 -*Label*font: Arial 8 -*Text*font: "Courier New" 9 -*Canvas*font: "Lucida Console" 16 -*background: gray85 -*Text*background: white -*Entry*background: white -*foreground: black -*Listbox*foreground: RoyalBlue diff --git a/messages.cpp b/messages.cpp new file mode 100644 index 000000000..5d0302886 --- /dev/null +++ b/messages.cpp @@ -0,0 +1,81 @@ +#include "messages.h" +#include "ui_messages.h" +#include "mainwindow.h" + +Messages::Messages(QWidget *parent) : + QDialog(parent), + ui(new Ui::Messages) +{ + ui->setupUi(this); + ui->messagesTextBrowser->setStyleSheet( \ + "QTextBrowser { background-color : #000066; color : red; }"); + ui->messagesTextBrowser->clear(); + m_cqOnly=false; + connect(ui->messagesTextBrowser,SIGNAL(selectCallsign(bool)),this, + SLOT(selectCallsign2(bool))); +} + +Messages::~Messages() +{ + delete ui; +} + +void Messages::setText(QString t) +{ + QString cfreq,cfreq0; + m_t=t; + + QString s="QTextBrowser{background-color: "+m_colorBackground+"}"; + ui->messagesTextBrowser->setStyleSheet(s); + + ui->messagesTextBrowser->clear(); + QStringList lines = t.split( "\n", QString::SkipEmptyParts ); + foreach( QString line, lines ) { + QString t1=line.mid(0,48); + if(m_cqOnly and t1.indexOf(" CQ ") < 0) continue; + int n=line.mid(48,2).toInt(); + if(n==0) ui->messagesTextBrowser->setTextColor(m_color0); + if(n==1) ui->messagesTextBrowser->setTextColor(m_color1); + if(n==2) ui->messagesTextBrowser->setTextColor(m_color2); + if(n>=3) ui->messagesTextBrowser->setTextColor(m_color3); + cfreq=t1.mid(0,3); + if(cfreq == cfreq0) { + t1=" " + t1.mid(3,-1); + } + cfreq0=cfreq; + ui->messagesTextBrowser->append(t1); + } +} + +void Messages::selectCallsign2(bool ctrl) +{ + QString t = ui->messagesTextBrowser->toPlainText(); //Full contents + int i=ui->messagesTextBrowser->textCursor().position(); + int i0=t.lastIndexOf(" ",i); + int i1=t.indexOf(" ",i); + QString hiscall=t.mid(i0+1,i1-i0-1); + if(hiscall!="") { + if(hiscall.length() < 13) { + QString t1 = t.mid(0,i); //contents up to text cursor + int i1=t1.lastIndexOf("\n") + 1; + QString t2 = t1.mid(i1,i-i1); //selected line + emit click2OnCallsign(hiscall,t2); + } + } +} + +void Messages::on_checkBox_stateChanged(int n) +{ + m_cqOnly = (n!=0); + setText(m_t); +} + +void Messages::setColors(QString t) +{ + m_colorBackground = "#"+t.mid(0,6); + m_color0 = "#"+t.mid(6,6); + m_color1 = "#"+t.mid(12,6); + m_color2 = "#"+t.mid(18,6); + m_color3 = "#"+t.mid(24,6); + setText(m_t); +} diff --git a/messages.h b/messages.h new file mode 100644 index 000000000..7bf30ab8b --- /dev/null +++ b/messages.h @@ -0,0 +1,40 @@ +#ifndef MESSAGES_H +#define MESSAGES_H + +#include + +namespace Ui { + class Messages; +} + +class Messages : public QDialog +{ + Q_OBJECT + +public: + explicit Messages(QWidget *parent = 0); + void setText(QString t); + void setColors(QString t); + + ~Messages(); + +signals: + void click2OnCallsign(QString hiscall, QString t2); + +private slots: + void selectCallsign2(bool ctrl); + void on_checkBox_stateChanged(int arg1); + +private: + Ui::Messages *ui; + QString m_t; + QString m_colorBackground; + QString m_color0; + QString m_color1; + QString m_color2; + QString m_color3; + + bool m_cqOnly; +}; + +#endif // MESSAGES_H diff --git a/messages.ui b/messages.ui new file mode 100644 index 000000000..d68839fb1 --- /dev/null +++ b/messages.ui @@ -0,0 +1,100 @@ + + + Messages + + + + 0 + 0 + 399 + 595 + + + + + 0 + 0 + + + + Dialog + + + + + + QLayout::SetDefaultConstraint + + + + + + + + 0 + 0 + + + + Freq DF Pol UTC dB + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + CQ Only + + + + + + + + + + 0 + 0 + + + + + 340 + 0 + + + + + Courier New + 9 + + + + + + + + + + + DisplayText + QTextBrowser +
      displaytext.h
      +
      +
      + + +
      diff --git a/morse.f b/morse.f deleted file mode 100644 index fb0c521ea..000000000 --- a/morse.f +++ /dev/null @@ -1,90 +0,0 @@ - subroutine morse(msg,idat,n) - -C Convert ascii message to a Morse code bit string. -C Dash = 3 dots -C Space between dots, dashes = 1 dot -C Space between letters = 3 dots -C Space between words = 7 dots - - character*22 msg - integer*1 idat(460) - integer*1 ic(21,38) - data ic/ - + 1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,20, - + 1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,0,0,18, - + 1,0,1,0,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,16, - + 1,0,1,0,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,14, - + 1,0,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,12, - + 1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,10, - + 1,1,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,12, - + 1,1,1,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,14, - + 1,1,1,0,1,1,1,0,1,1,1,0,1,0,1,0,0,0,0,0,16, - + 1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,0,0,0,18, - + 1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 6, - + 1,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,10, - + 1,1,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,12, - + 1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, 8, - + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 2, - + 1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,10, - + 1,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,10, - + 1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, 8, - + 1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4, - + 1,0,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,14, - + 1,1,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,10, - + 1,0,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,10, - + 1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, 8, - + 1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 6, - + 1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,12, - + 1,0,1,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,12, - + 1,1,1,0,1,1,1,0,1,0,1,1,1,0,0,0,0,0,0,0,14, - + 1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, 8, - + 1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 6, - + 1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4, - + 1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0, 8, - + 1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,10, - + 1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,10, - + 1,1,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,12, - + 1,1,1,0,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,14, - + 1,1,1,0,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,12, - + 1,1,1,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,14, - + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 2/ !Incremental word space - save - -C Find length of message - do i=22,1,-1 - if(msg(i:i).ne.' ') go to 1 - enddo - 1 msglen=i - - n=0 - do k=1,msglen - jj=ichar(msg(k:k)) - if(jj.ge.97 .and. jj.le.122) jj=jj-32 !Convert lower to upper case - if(jj.ge.48 .and. jj.le.57) j=jj-48 !Numbers - if(jj.ge.65 .and. jj.le.90) j=jj-55 !Letters - if(jj.eq.47) j=36 !Slash (/) - if(jj.eq.32) j=37 !Word space - j=j+1 - -C Insert this character - nmax=ic(21,j) - do i=1,nmax - n=n+1 - idat(n)=ic(i,j) - enddo - -C Insert character space of 2 dit lengths: - n=n+1 - idat(n)=0 - n=n+1 - idat(n)=0 - enddo - -C Insert word space at end of message - do j=1,4 - n=n+1 - idat(n)=0 - enddo - - return - end diff --git a/msgtrim.f90 b/msgtrim.f90 deleted file mode 100644 index 2a1ef92ff..000000000 --- a/msgtrim.f90 +++ /dev/null @@ -1,37 +0,0 @@ -subroutine msgtrim(msg,msglen) - - character*28 msg - -! Remove leading blanks - do i=1,28 - if(msg(1:1).ne.' ') go to 2 - msg=msg(2:) - enddo - -2 do i=28,1,-1 - if(msg(i:i).ne.' ') go to 3 - enddo - i=1 -3 iz=i - -! Collapse multiple blanks to one - ib2=index(msg,' ') - if(ib2.eq.0 .or. ib2.eq.iz+1) go to 10 - msg=msg(:ib2-1)//msg(ib2+1:) - iz=iz-1 - go to 2 - -! Convert letters to upper case -10 do i=1,22 - if(msg(i:i).ge.'a' .and. msg(i:i).le.'z') & - msg(i:i)= char(ichar(msg(i:i))+ichar('A')-ichar('a')) - enddo - - do i=28,1,-1 - if(msg(i:i).ne.' ') go to 20 - enddo - i=28 -20 msglen=i - - return -end subroutine msgtrim diff --git a/options.py b/options.py deleted file mode 100644 index 4abb7d750..000000000 --- a/options.py +++ /dev/null @@ -1,133 +0,0 @@ -#------------------------------------------------------ options -from Tkinter import * -import Pmw -import g - -def done(): - root.withdraw() - -root=Toplevel() -root.withdraw() -root.protocol('WM_DELETE_WINDOW',done) -if g.Win32: root.iconbitmap("wsjt.ico") -root.title("Options") - -def options2(t): - root.geometry(t) - root.deiconify() - root.focus_set() - -#-------------------------------------------------------- Create GUI widgets -g1=Pmw.Group(root,tag_text="Station parameters") -MyCall=StringVar() -MyGrid=StringVar() -#RxDelay=StringVar() -#TxDelay=StringVar() -IDinterval=IntVar() -ComPort=IntVar() -PttPort=StringVar() -ndevin=IntVar() -ndevout=IntVar() -DevinName=StringVar() -DevoutName=StringVar() -forceFcenter=DoubleVar() -samfacin=DoubleVar() -samfacout=DoubleVar() -Template1=StringVar() -Template2=StringVar() -Template3=StringVar() -Template4=StringVar() -Template5=StringVar() -Template6=StringVar() -addpfx=StringVar() -auxra=StringVar() -auxdec=StringVar() -nkeep=IntVar() -dphi=IntVar() -fa=IntVar() -fb=IntVar() -fcal=IntVar() -nt1=IntVar() -savedir=StringVar() -azeldir=StringVar() - -mycall=Pmw.EntryField(g1.interior(),labelpos=W,label_text='My Call:', - value='K1JT',entry_textvariable=MyCall,entry_width=12) -mygrid=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Grid Locator:', - value='FN20qi',entry_textvariable=MyGrid,entry_width=12) -##rxdelay=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Rx Delay (s):', -## value='0.2',entry_textvariable=RxDelay) -##txdelay=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Tx Delay (s):', -## value='0.2',entry_textvariable=TxDelay) -idinterval=Pmw.EntryField(g1.interior(),labelpos=W,label_text='ID Interval (m):', - value=10,validate={'validator':'numeric','min':0,'max':60}, \ - entry_textvariable=IDinterval,entry_width=12) -comport=Pmw.EntryField(g1.interior(),labelpos=W,label_text='PTT Port:', - value='/dev/ttyS0',entry_textvariable=PttPort,entry_width=12) -audioout=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Audio Out:', - value='0',entry_textvariable=DevoutName,entry_width=12) -rateout=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Rate Out:', - value=1.0000,entry_textvariable=samfacout,entry_width=12) -meas_rateout=Pmw.EntryField(g1.interior(),labelpos=W,label_text='Measured:', - value=1.0000,entry_width=12) -#widgets = (mycall, mygrid, rxdelay,txdelay,idinterval,comport,audioin,audioout) -widgets = (mycall, mygrid,idinterval,comport,audioout,rateout,meas_rateout) -for widget in widgets: - widget.pack(fill=X,expand=1,padx=10,pady=2) - -Pmw.alignlabels(widgets) -mycall.component('entry').focus_set() -f1=Frame(g1.interior(),width=100,height=20) -mileskm=IntVar() -Label(f1,text='Distance unit:').pack(side=LEFT) -rb5=Radiobutton(f1,text='mi',value=0,variable=mileskm) -rb6=Radiobutton(f1,text='km',value=1,variable=mileskm) -rb5.pack(anchor=W,side=LEFT,padx=2,pady=2) -rb6.pack(anchor=W,side=LEFT,padx=2,pady=2) -f1.pack() - -f2=Frame(g1.interior(),width=100,height=20) -xant=IntVar() -Label(f2,text='Antennas: ').pack(side=LEFT) -rb7=Radiobutton(f2,text='+ ',value=0,variable=xant) -rb8=Radiobutton(f2,text='x',value=1,variable=xant) -rb7.pack(anchor=W,side=LEFT,padx=2,pady=2) -rb8.pack(anchor=W,side=LEFT,padx=2,pady=2) -f2.pack() - -#g3=Pmw.Group(root) -g3=Pmw.Group(root,tag_text="Miscellaneous") -temp_prefix=Pmw.EntryField(g3.interior(),labelpos=W,label_text='DXCC prefix:', - entry_width=9,entry_textvariable=addpfx) -aux_ra=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Source RA:', - entry_width=9,entry_textvariable=auxra) -aux_dec=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Source DEC:', - entry_width=9,entry_textvariable=auxdec) -nkeep_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Timeout (min):', - entry_width=9,value=20,entry_textvariable=nkeep) -dphi_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Dphi (deg):', - entry_width=9,entry_textvariable=dphi) -fa_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Fmin (kHz):', - entry_width=9,value=100,entry_textvariable=fa) -fb_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Fmax (kHz):', - entry_width=9,value=160,entry_textvariable=fb) -fcal_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='Fcal (Hz):', - entry_width=9,entry_textvariable=fcal) -nt1_entry=Pmw.EntryField(g3.interior(),labelpos=W, \ - label_text='Rx t1:',entry_width=9,value=48,entry_textvariable=nt1) -forceFreq_entry=Pmw.EntryField(g3.interior(),labelpos=W, \ - label_text='Force Fcenter:',entry_width=9,value=0,entry_textvariable=forceFcenter) -savedir_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='SaveDir:', - entry_width=23,value=g.appdir+'\save',entry_textvariable=savedir) -azeldir_entry=Pmw.EntryField(g3.interior(),labelpos=W,label_text='AzElDir:', - entry_width=23,value=g.appdir,entry_textvariable=azeldir) -widgets = (temp_prefix,aux_ra,aux_dec,nkeep_entry,dphi_entry, \ - fa_entry,fb_entry,fcal_entry,nt1_entry,forceFreq_entry, \ - savedir_entry,azeldir_entry) -for widget in widgets: - widget.pack(padx=2,pady=2) -Pmw.alignlabels(widgets) - -g1.pack(side=LEFT,fill=BOTH,expand=1,padx=6,pady=6) -g3.pack(side=LEFT,fill=BOTH,expand=1,padx=6,pady=6) - diff --git a/pa.lib b/pa.lib deleted file mode 100644 index a3daf15a80f09867e36d18c0ac6fe6d97424b143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98936 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 Iut}5tH#(O9=l}o! diff --git a/paInputDevice.c b/paInputDevice.c new file mode 100644 index 000000000..940cdc03d --- /dev/null +++ b/paInputDevice.c @@ -0,0 +1,56 @@ +#include +#include +#include + +void paInputDevice(int id, char* hostAPI_DeviceName, int* minChan, + int* maxChan, int* minSpeed, int* maxSpeed) +{ + int i, j, k; + char pa_device_name[128]; + char pa_device_hostapi[128]; + double pa_device_max_speed; + double pa_device_min_speed; + int pa_device_max_bytes; + int pa_device_min_bytes; + int pa_device_max_channels; + int pa_device_min_channels; + char p2[50]; + char *p,*p1; + static int iret, numDevices, valid_dev_cnt; + + iret=pa_get_device_info (id, + &pa_device_name, + &pa_device_hostapi, + &pa_device_max_speed, + &pa_device_min_speed, + &pa_device_max_bytes, + &pa_device_min_bytes, + &pa_device_max_channels, + &pa_device_min_channels); + + if (iret >= 0 ) { + valid_dev_cnt++; + + p1=""; + p=strstr(pa_device_hostapi,"MME"); + if(p!=NULL) p1="MME"; + p=strstr(pa_device_hostapi,"Direct"); + if(p!=NULL) p1="DirectX"; + p=strstr(pa_device_hostapi,"WASAPI"); + if(p!=NULL) p1="WASAPI"; + p=strstr(pa_device_hostapi,"ASIO"); + if(p!=NULL) p1="ASIO"; + p=strstr(pa_device_hostapi,"WDM-KS"); + if(p!=NULL) p1="WDM-KS"; + + sprintf(p2,"%-8s %-39s",p1,pa_device_name); + for(i=0; i<50; i++) { + hostAPI_DeviceName[i]=p2[i]; + if(p2[i]==0) break; + } + *minChan=pa_device_min_channels; + *maxChan=pa_device_max_channels; + *minSpeed=(int)pa_device_min_speed; + *maxSpeed=(int)pa_device_max_speed; + } +} diff --git a/pa_get_device_info.c b/pa_get_device_info.c new file mode 100644 index 000000000..e9cdf4737 --- /dev/null +++ b/pa_get_device_info.c @@ -0,0 +1,172 @@ +#include +#include + +#define MAX_LATENCY 20 + +PaStream *in_stream; +//------------------------------------------------------- pa_get_device_info +int pa_get_device_info (int n, + void *pa_device_name, + void *pa_device_hostapi, + double *pa_device_max_speed, + double *pa_device_min_speed, + int *pa_device_max_bytes, + int *pa_device_min_bytes, + int *pa_device_max_channels, + int *pa_device_min_channels ) +{ + + (void) n ; + (void) pa_device_name; + (void) pa_device_hostapi; + (void) pa_device_max_speed; + (void) pa_device_min_speed; + (void) pa_device_max_bytes; + (void) pa_device_min_bytes; + (void) pa_device_max_channels; + (void) pa_device_min_channels; + const PaDeviceInfo *deviceInfo; + PaError pa_err; + PaStreamParameters inputParameters; + int i,j, speed_warning; + int minBytes, maxBytes; + double maxStandardSampleRate; + double minStandardSampleRate; + int minInputChannels; + int maxInputChannels; + +// negative terminated list + static double standardSampleRates[] = {8000.0, 9600.0, + 11025.0, 12000.0, 16000.0, 22050.0, 24000.0, 32000.0, + 44100.0, 48000.0, 88200.0, 96000.0, 192000.0, -1}; +// ******************************************************* + + + *pa_device_max_speed=0; + *pa_device_min_speed=0; + *pa_device_max_bytes=0; + *pa_device_min_bytes=0; + *pa_device_max_channels=0; + *pa_device_min_channels=0; + minInputChannels=0; + if(n >= Pa_GetDeviceCount() ) return -1; + deviceInfo = Pa_GetDeviceInfo(n); + if (deviceInfo->maxInputChannels==0) return -1; + sprintf((char*)(pa_device_name),"%s",deviceInfo->name); + sprintf((char*)(pa_device_hostapi),"%s", + Pa_GetHostApiInfo( deviceInfo->hostApi )->name); + speed_warning=0; + +// bypass bug in Juli@ ASIO driver: +// this driver hangs after a Pa_IsFormatSupported call + i = strncmp(deviceInfo->name, "ASIO 2.0 - ESI Juli@", 19); + if (i == 0) { + minStandardSampleRate=44100; + maxStandardSampleRate=192000; + minBytes=1; + maxBytes=4; + maxInputChannels= deviceInfo->maxInputChannels; + minInputChannels= 1; + goto end_pa_get_device_info; + } + +// Investigate device capabilities. +// Check min and max samplerates with 16 bit data. + maxStandardSampleRate=0; + minStandardSampleRate=0; + inputParameters.device = n; + inputParameters.channelCount = deviceInfo->maxInputChannels; + inputParameters.sampleFormat = paInt16; + inputParameters.suggestedLatency = 0; + inputParameters.hostApiSpecificStreamInfo = NULL; + +// ************************************************************************ +//filter for portaudio Windows hostapi's with non experts. +//only allow ASIO or WASAPI or WDM-KS + i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name, "ASIO", 4); + if (i==0 ) goto end_filter_hostapi; + i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name, + "Windows WASAPI", 14); + if (i==0 ) goto end_filter_hostapi; + i = strncmp(Pa_GetHostApiInfo(deviceInfo->hostApi)->name, + "Windows WDM-KS", 14); + if (i==0 ) goto end_filter_hostapi; + speed_warning=1; +end_filter_hostapi:; + +// ************************************************************************ + i=0; + while(standardSampleRates[i] > 0 && minStandardSampleRate==0) { + pa_err=Pa_IsFormatSupported(&inputParameters, NULL, + standardSampleRates[i] ); + if(pa_err == paDeviceUnavailable) return -1; + if(pa_err == paInvalidDevice) return -1; + if(pa_err == paFormatIsSupported ) { + minStandardSampleRate=standardSampleRates[i]; + } + i++; + } + if(minStandardSampleRate == 0) return -1; + j=i; + while(standardSampleRates[i] > 0 ) i++; + i--; + while(i >= j && maxStandardSampleRate==0) { + pa_err=Pa_IsFormatSupported(&inputParameters, NULL, + standardSampleRates[i] ); + if(pa_err == paDeviceUnavailable) return -1; + if(pa_err == paInvalidDevice) return -1; + if( pa_err == paFormatIsSupported ) { + maxStandardSampleRate=standardSampleRates[i]; + } + i--; + } + +// check if min SampleRate = max SampleRate + if(maxStandardSampleRate==0 && (minStandardSampleRate != 0)) { + maxStandardSampleRate= minStandardSampleRate; + } + +// check min and max bytes + minBytes=2; + maxBytes=2; + inputParameters.sampleFormat = paUInt8; + pa_err=Pa_IsFormatSupported(&inputParameters, NULL, + maxStandardSampleRate ); + if( pa_err == paFormatIsSupported ) { + minBytes=1; + } + inputParameters.sampleFormat = paInt32; + pa_err=Pa_IsFormatSupported(&inputParameters, NULL, + maxStandardSampleRate ); + if( pa_err == paFormatIsSupported ) { + maxBytes=4; + } + +// check min channel count + maxInputChannels= deviceInfo->maxInputChannels; + inputParameters.channelCount = 1; + inputParameters.sampleFormat = paInt16; + pa_err=paFormatIsSupported+32000; + while(pa_err != paFormatIsSupported && + ( inputParameters.channelCount < (maxInputChannels+1)) ) { + pa_err=Pa_IsFormatSupported(&inputParameters, NULL, + maxStandardSampleRate ); + inputParameters.channelCount++; + } + if( pa_err == paFormatIsSupported ) { + minInputChannels=inputParameters.channelCount-1; + } else { + return -1; + } + +end_pa_get_device_info:; + + *pa_device_max_speed=maxStandardSampleRate; + *pa_device_min_speed=minStandardSampleRate; + *pa_device_max_bytes=maxBytes; + *pa_device_min_bytes=minBytes; + *pa_device_max_channels= maxInputChannels; + *pa_device_min_channels= minInputChannels; + + return speed_warning; +} diff --git a/palettes.py b/palettes.py deleted file mode 100644 index 004d6abc3..000000000 --- a/palettes.py +++ /dev/null @@ -1,1566 +0,0 @@ -import string -import g - -# Several colormaps -colormapblue = """ - 0.0 0.0 0.0 - 0.0902 0.0902 0.2558 - 0.1176 0.1176 0.2694 - 0.1412 0.1412 0.2820 - 0.1569 0.1569 0.2938 - 0.1725 0.1725 0.3049 - 0.1843 0.1843 0.3154 - 0.1961 0.1961 0.3254 - 0.2039 0.2039 0.3349 - 0.2157 0.2157 0.3440 - 0.2235 0.2235 0.3528 - 0.2314 0.2314 0.3612 - 0.2392 0.2392 0.3693 - 0.2471 0.2471 0.3772 - 0.2549 0.2549 0.3848 - 0.2588 0.2588 0.3921 - 0.2667 0.2667 0.3992 - 0.2706 0.2706 0.4061 - 0.2784 0.2784 0.4129 - 0.2824 0.2824 0.4194 - 0.2902 0.2902 0.4258 - 0.2941 0.2941 0.4319 - 0.2980 0.2980 0.4380 - 0.3059 0.3059 0.4439 - 0.3098 0.3098 0.4496 - 0.3137 0.3137 0.4553 - 0.3176 0.3176 0.4608 - 0.3216 0.3216 0.4661 - 0.3294 0.3294 0.4714 - 0.3333 0.3333 0.4765 - 0.3373 0.3373 0.4815 - 0.3412 0.3412 0.4865 - 0.3451 0.3451 0.4913 - 0.3490 0.3490 0.4960 - 0.3529 0.3529 0.5006 - 0.3569 0.3569 0.5052 - 0.3608 0.3608 0.5096 - 0.3647 0.3647 0.5140 - 0.3686 0.3686 0.5183 - 0.3725 0.3725 0.5225 - 0.3765 0.3765 0.5266 - 0.3804 0.3804 0.5306 - 0.3843 0.3843 0.5346 - 0.3843 0.3843 0.5385 - 0.3882 0.3882 0.5423 - 0.3922 0.3922 0.5460 - 0.3961 0.3961 0.5497 - 0.4000 0.4000 0.5533 - 0.4039 0.4039 0.5569 - 0.4078 0.4078 0.5603 - 0.4118 0.4118 0.5638 - 0.4118 0.4118 0.5671 - 0.4157 0.4157 0.5704 - 0.4196 0.4196 0.5736 - 0.4235 0.4235 0.5768 - 0.4275 0.4275 0.5799 - 0.4314 0.4314 0.5829 - 0.4314 0.4314 0.5859 - 0.4353 0.4353 0.5889 - 0.4392 0.4392 0.5917 - 0.4431 0.4431 0.5946 - 0.4471 0.4471 0.5973 - 0.4471 0.4471 0.6001 - 0.4510 0.4510 0.6027 - 0.4549 0.4549 0.6053 - 0.4588 0.4588 0.6079 - 0.4627 0.4627 0.6104 - 0.4627 0.4627 0.6129 - 0.4667 0.4667 0.6153 - 0.4706 0.4706 0.6176 - 0.4745 0.4745 0.6199 - 0.4745 0.4745 0.6222 - 0.4784 0.4784 0.6244 - 0.4824 0.4824 0.6266 - 0.4863 0.4863 0.6287 - 0.4863 0.4863 0.6308 - 0.4902 0.4902 0.6328 - 0.4941 0.4941 0.6348 - 0.4980 0.4980 0.6367 - 0.5020 0.5020 0.6386 - 0.5020 0.5020 0.6404 - 0.5059 0.5059 0.6422 - 0.5098 0.5098 0.6440 - 0.5098 0.5098 0.6457 - 0.5137 0.5137 0.6474 - 0.5176 0.5176 0.6490 - 0.5216 0.5216 0.6506 - 0.5216 0.5216 0.6521 - 0.5255 0.5255 0.6536 - 0.5294 0.5294 0.6551 - 0.5333 0.5333 0.6565 - 0.5333 0.5333 0.6578 - 0.5373 0.5373 0.6591 - 0.5412 0.5412 0.6604 - 0.5451 0.5451 0.6617 - 0.5451 0.5451 0.6629 - 0.5490 0.5490 0.6640 - 0.5529 0.5529 0.6651 - 0.5569 0.5569 0.6662 - 0.5569 0.5569 0.6672 - 0.5608 0.5608 0.6682 - 0.5647 0.5647 0.6692 - 0.5647 0.5647 0.6701 - 0.5686 0.5686 0.6710 - 0.5725 0.5725 0.6718 - 0.5765 0.5765 0.6726 - 0.5765 0.5765 0.6733 - 0.5804 0.5804 0.6740 - 0.5843 0.5843 0.6747 - 0.5843 0.5843 0.6753 - 0.5882 0.5882 0.6759 - 0.5922 0.5922 0.6765 - 0.5961 0.5961 0.6770 - 0.5961 0.5961 0.6774 - 0.6000 0.6000 0.6779 - 0.6039 0.6039 0.6783 - 0.6039 0.6039 0.6786 - 0.6078 0.6078 0.6789 - 0.6118 0.6118 0.6792 - 0.6157 0.6157 0.6794 - 0.6157 0.6157 0.6796 - 0.6196 0.6196 0.6798 - 0.6235 0.6235 0.6799 - 0.6235 0.6235 0.6800 - 0.6275 0.6275 0.6800 - 0.6314 0.6314 0.6800 - 0.6353 0.6353 0.6799 - 0.6353 0.6353 0.6799 - 0.6392 0.6392 0.6797 - 0.6431 0.6431 0.6796 - 0.6431 0.6431 0.6794 - 0.6471 0.6471 0.6791 - 0.6510 0.6510 0.6789 - 0.6549 0.6549 0.6785 - 0.6549 0.6549 0.6782 - 0.6588 0.6588 0.6778 - 0.6627 0.6627 0.6773 - 0.6627 0.6627 0.6769 - 0.6667 0.6667 0.6763 - 0.6706 0.6706 0.6758 - 0.6745 0.6745 0.6752 - 0.6745 0.6745 0.6746 - 0.6784 0.6784 0.6739 - 0.6824 0.6824 0.6732 - 0.6824 0.6824 0.6724 - 0.6863 0.6863 0.6716 - 0.6902 0.6902 0.6708 - 0.6941 0.6941 0.6699 - 0.6941 0.6941 0.6690 - 0.6980 0.6980 0.6680 - 0.7020 0.7020 0.6670 - 0.7020 0.7020 0.6660 - 0.7059 0.7059 0.6649 - 0.7098 0.7098 0.6638 - 0.7098 0.7098 0.6626 - 0.7137 0.7137 0.6614 - 0.7176 0.7176 0.6601 - 0.7216 0.7216 0.6589 - 0.7216 0.7216 0.6575 - 0.7255 0.7255 0.6561 - 0.7294 0.7294 0.6547 - 0.7294 0.7294 0.6533 - 0.7333 0.7333 0.6518 - 0.7373 0.7373 0.6502 - 0.7412 0.7412 0.6486 - 0.7412 0.7412 0.6470 - 0.7451 0.7451 0.6453 - 0.7490 0.7490 0.6436 - 0.7490 0.7490 0.6418 - 0.7529 0.7529 0.6400 - 0.7569 0.7569 0.6382 - 0.7608 0.7608 0.6363 - 0.7608 0.7608 0.6343 - 0.7647 0.7647 0.6324 - 0.7686 0.7686 0.6303 - 0.7686 0.7686 0.6282 - 0.7725 0.7725 0.6261 - 0.7765 0.7765 0.6239 - 0.7804 0.7804 0.6217 - 0.7804 0.7804 0.6194 - 0.7843 0.7843 0.6171 - 0.7882 0.7882 0.6147 - 0.7882 0.7882 0.6123 - 0.7922 0.7922 0.6098 - 0.7961 0.7961 0.6073 - 0.8000 0.8000 0.6047 - 0.8000 0.8000 0.6021 - 0.8039 0.8039 0.5994 - 0.8078 0.8078 0.5967 - 0.8078 0.8078 0.5939 - 0.8118 0.8118 0.5911 - 0.8157 0.8157 0.5882 - 0.8196 0.8196 0.5853 - 0.8196 0.8196 0.5823 - 0.8235 0.8235 0.5792 - 0.8275 0.8275 0.5761 - 0.8275 0.8275 0.5729 - 0.8314 0.8314 0.5697 - 0.8353 0.8353 0.5664 - 0.8392 0.8392 0.5630 - 0.8392 0.8392 0.5596 - 0.8431 0.8431 0.5561 - 0.8471 0.8471 0.5525 - 0.8471 0.8471 0.5489 - 0.8510 0.8510 0.5452 - 0.8549 0.8549 0.5414 - 0.8588 0.8588 0.5376 - 0.8588 0.8588 0.5337 - 0.8627 0.8627 0.5297 - 0.8667 0.8667 0.5257 - 0.8667 0.8667 0.5215 - 0.8706 0.8706 0.5173 - 0.8745 0.8745 0.5130 - 0.8784 0.8784 0.5086 - 0.8784 0.8784 0.5042 - 0.8824 0.8824 0.4996 - 0.8863 0.8863 0.4950 - 0.8863 0.8863 0.4902 - 0.8902 0.8902 0.4854 - 0.8941 0.8941 0.4804 - 0.8980 0.8980 0.4754 - 0.8980 0.8980 0.4702 - 0.9020 0.9020 0.4649 - 0.9059 0.9059 0.4595 - 0.9098 0.9098 0.4540 - 0.9098 0.9098 0.4484 - 0.9137 0.9137 0.4426 - 0.9176 0.9176 0.4366 - 0.9176 0.9176 0.4306 - 0.9216 0.9216 0.4243 - 0.9255 0.9255 0.4179 - 0.9294 0.9294 0.4114 - 0.9294 0.9294 0.4046 - 0.9333 0.9333 0.3977 - 0.9373 0.9373 0.3905 - 0.9373 0.9373 0.3831 - 0.9412 0.9412 0.3754 - 0.9451 0.9451 0.3675 - 0.9490 0.9490 0.3594 - 0.9490 0.9490 0.3509 - 0.9529 0.9529 0.3420 - 0.9569 0.9569 0.3328 - 0.9608 0.9608 0.3232 - 0.9608 0.9608 0.3131 - 0.9647 0.9647 0.3024 - 0.9686 0.9686 0.2912 - 0.9686 0.9686 0.2792 - 0.9725 0.9725 0.2664 - 0.9765 0.9765 0.2526 - 0.9804 0.9804 0.2375 - 0.9804 0.9804 0.2208 - 0.9843 0.9843 0.2020 - 0.9882 0.9882 0.1800 - 1.0 0.0 0.0 - 1.0 1.0 0.0 - 0.0 1.000 0.0 -""" -colormapgray0 = """ - 0.0000 0.0000 0.0000 - 0.0039 0.0039 0.0039 - 0.0078 0.0078 0.0078 - 0.0118 0.0118 0.0118 - 0.0157 0.0157 0.0157 - 0.0196 0.0196 0.0196 - 0.0235 0.0235 0.0235 - 0.0275 0.0275 0.0275 - 0.0314 0.0314 0.0314 - 0.0353 0.0353 0.0353 - 0.0392 0.0392 0.0392 - 0.0431 0.0431 0.0431 - 0.0471 0.0471 0.0471 - 0.0510 0.0510 0.0510 - 0.0549 0.0549 0.0549 - 0.0588 0.0588 0.0588 - 0.0627 0.0627 0.0627 - 0.0667 0.0667 0.0667 - 0.0706 0.0706 0.0706 - 0.0745 0.0745 0.0745 - 0.0784 0.0784 0.0784 - 0.0824 0.0824 0.0824 - 0.0863 0.0863 0.0863 - 0.0902 0.0902 0.0902 - 0.0941 0.0941 0.0941 - 0.0980 0.0980 0.0980 - 0.1020 0.1020 0.1020 - 0.1059 0.1059 0.1059 - 0.1098 0.1098 0.1098 - 0.1137 0.1137 0.1137 - 0.1176 0.1176 0.1176 - 0.1216 0.1216 0.1216 - 0.1255 0.1255 0.1255 - 0.1294 0.1294 0.1294 - 0.1333 0.1333 0.1333 - 0.1373 0.1373 0.1373 - 0.1412 0.1412 0.1412 - 0.1451 0.1451 0.1451 - 0.1490 0.1490 0.1490 - 0.1529 0.1529 0.1529 - 0.1569 0.1569 0.1569 - 0.1608 0.1608 0.1608 - 0.1647 0.1647 0.1647 - 0.1686 0.1686 0.1686 - 0.1725 0.1725 0.1725 - 0.1765 0.1765 0.1765 - 0.1804 0.1804 0.1804 - 0.1843 0.1843 0.1843 - 0.1882 0.1882 0.1882 - 0.1922 0.1922 0.1922 - 0.1961 0.1961 0.1961 - 0.2000 0.2000 0.2000 - 0.2039 0.2039 0.2039 - 0.2078 0.2078 0.2078 - 0.2118 0.2118 0.2118 - 0.2157 0.2157 0.2157 - 0.2196 0.2196 0.2196 - 0.2235 0.2235 0.2235 - 0.2275 0.2275 0.2275 - 0.2314 0.2314 0.2314 - 0.2353 0.2353 0.2353 - 0.2392 0.2392 0.2392 - 0.2431 0.2431 0.2431 - 0.2471 0.2471 0.2471 - 0.2510 0.2510 0.2510 - 0.2549 0.2549 0.2549 - 0.2588 0.2588 0.2588 - 0.2627 0.2627 0.2627 - 0.2667 0.2667 0.2667 - 0.2706 0.2706 0.2706 - 0.2745 0.2745 0.2745 - 0.2784 0.2784 0.2784 - 0.2824 0.2824 0.2824 - 0.2863 0.2863 0.2863 - 0.2902 0.2902 0.2902 - 0.2941 0.2941 0.2941 - 0.2980 0.2980 0.2980 - 0.3020 0.3020 0.3020 - 0.3059 0.3059 0.3059 - 0.3098 0.3098 0.3098 - 0.3137 0.3137 0.3137 - 0.3176 0.3176 0.3176 - 0.3216 0.3216 0.3216 - 0.3255 0.3255 0.3255 - 0.3294 0.3294 0.3294 - 0.3333 0.3333 0.3333 - 0.3373 0.3373 0.3373 - 0.3412 0.3412 0.3412 - 0.3451 0.3451 0.3451 - 0.3490 0.3490 0.3490 - 0.3529 0.3529 0.3529 - 0.3569 0.3569 0.3569 - 0.3608 0.3608 0.3608 - 0.3647 0.3647 0.3647 - 0.3686 0.3686 0.3686 - 0.3725 0.3725 0.3725 - 0.3765 0.3765 0.3765 - 0.3804 0.3804 0.3804 - 0.3843 0.3843 0.3843 - 0.3882 0.3882 0.3882 - 0.3922 0.3922 0.3922 - 0.3961 0.3961 0.3961 - 0.4000 0.4000 0.4000 - 0.4039 0.4039 0.4039 - 0.4078 0.4078 0.4078 - 0.4118 0.4118 0.4118 - 0.4157 0.4157 0.4157 - 0.4196 0.4196 0.4196 - 0.4235 0.4235 0.4235 - 0.4275 0.4275 0.4275 - 0.4314 0.4314 0.4314 - 0.4353 0.4353 0.4353 - 0.4392 0.4392 0.4392 - 0.4431 0.4431 0.4431 - 0.4471 0.4471 0.4471 - 0.4510 0.4510 0.4510 - 0.4549 0.4549 0.4549 - 0.4588 0.4588 0.4588 - 0.4627 0.4627 0.4627 - 0.4667 0.4667 0.4667 - 0.4706 0.4706 0.4706 - 0.4745 0.4745 0.4745 - 0.4784 0.4784 0.4784 - 0.4824 0.4824 0.4824 - 0.4863 0.4863 0.4863 - 0.4902 0.4902 0.4902 - 0.4941 0.4941 0.4941 - 0.4980 0.4980 0.4980 - 0.5020 0.5020 0.5020 - 0.5059 0.5059 0.5059 - 0.5098 0.5098 0.5098 - 0.5137 0.5137 0.5137 - 0.5176 0.5176 0.5176 - 0.5216 0.5216 0.5216 - 0.5255 0.5255 0.5255 - 0.5294 0.5294 0.5294 - 0.5333 0.5333 0.5333 - 0.5373 0.5373 0.5373 - 0.5412 0.5412 0.5412 - 0.5451 0.5451 0.5451 - 0.5490 0.5490 0.5490 - 0.5529 0.5529 0.5529 - 0.5569 0.5569 0.5569 - 0.5608 0.5608 0.5608 - 0.5647 0.5647 0.5647 - 0.5686 0.5686 0.5686 - 0.5725 0.5725 0.5725 - 0.5765 0.5765 0.5765 - 0.5804 0.5804 0.5804 - 0.5843 0.5843 0.5843 - 0.5882 0.5882 0.5882 - 0.5922 0.5922 0.5922 - 0.5961 0.5961 0.5961 - 0.6000 0.6000 0.6000 - 0.6039 0.6039 0.6039 - 0.6078 0.6078 0.6078 - 0.6118 0.6118 0.6118 - 0.6157 0.6157 0.6157 - 0.6196 0.6196 0.6196 - 0.6235 0.6235 0.6235 - 0.6275 0.6275 0.6275 - 0.6314 0.6314 0.6314 - 0.6353 0.6353 0.6353 - 0.6392 0.6392 0.6392 - 0.6431 0.6431 0.6431 - 0.6471 0.6471 0.6471 - 0.6510 0.6510 0.6510 - 0.6549 0.6549 0.6549 - 0.6588 0.6588 0.6588 - 0.6627 0.6627 0.6627 - 0.6667 0.6667 0.6667 - 0.6706 0.6706 0.6706 - 0.6745 0.6745 0.6745 - 0.6784 0.6784 0.6784 - 0.6824 0.6824 0.6824 - 0.6863 0.6863 0.6863 - 0.6902 0.6902 0.6902 - 0.6941 0.6941 0.6941 - 0.6980 0.6980 0.6980 - 0.7020 0.7020 0.7020 - 0.7059 0.7059 0.7059 - 0.7098 0.7098 0.7098 - 0.7137 0.7137 0.7137 - 0.7176 0.7176 0.7176 - 0.7216 0.7216 0.7216 - 0.7255 0.7255 0.7255 - 0.7294 0.7294 0.7294 - 0.7333 0.7333 0.7333 - 0.7373 0.7373 0.7373 - 0.7412 0.7412 0.7412 - 0.7451 0.7451 0.7451 - 0.7490 0.7490 0.7490 - 0.7529 0.7529 0.7529 - 0.7569 0.7569 0.7569 - 0.7608 0.7608 0.7608 - 0.7647 0.7647 0.7647 - 0.7686 0.7686 0.7686 - 0.7725 0.7725 0.7725 - 0.7765 0.7765 0.7765 - 0.7804 0.7804 0.7804 - 0.7843 0.7843 0.7843 - 0.7882 0.7882 0.7882 - 0.7922 0.7922 0.7922 - 0.7961 0.7961 0.7961 - 0.8000 0.8000 0.8000 - 0.8039 0.8039 0.8039 - 0.8078 0.8078 0.8078 - 0.8118 0.8118 0.8118 - 0.8157 0.8157 0.8157 - 0.8196 0.8196 0.8196 - 0.8235 0.8235 0.8235 - 0.8275 0.8275 0.8275 - 0.8314 0.8314 0.8314 - 0.8353 0.8353 0.8353 - 0.8392 0.8392 0.8392 - 0.8431 0.8431 0.8431 - 0.8471 0.8471 0.8471 - 0.8510 0.8510 0.8510 - 0.8549 0.8549 0.8549 - 0.8588 0.8588 0.8588 - 0.8627 0.8627 0.8627 - 0.8667 0.8667 0.8667 - 0.8706 0.8706 0.8706 - 0.8745 0.8745 0.8745 - 0.8784 0.8784 0.8784 - 0.8824 0.8824 0.8824 - 0.8863 0.8863 0.8863 - 0.8902 0.8902 0.8902 - 0.8941 0.8941 0.8941 - 0.8980 0.8980 0.8980 - 0.9020 0.9020 0.9020 - 0.9059 0.9059 0.9059 - 0.9098 0.9098 0.9098 - 0.9137 0.9137 0.9137 - 0.9176 0.9176 0.9176 - 0.9216 0.9216 0.9216 - 0.9255 0.9255 0.9255 - 0.9294 0.9294 0.9294 - 0.9333 0.9333 0.9333 - 0.9373 0.9373 0.9373 - 0.9412 0.9412 0.9412 - 0.9451 0.9451 0.9451 - 0.9490 0.9490 0.9490 - 0.9529 0.9529 0.9529 - 0.9569 0.9569 0.9569 - 0.9608 0.9608 0.9608 - 0.9647 0.9647 0.9647 - 0.9686 0.9686 0.9686 - 0.9725 0.9725 0.9725 - 0.9765 0.9765 0.9765 - 0.9804 0.9804 0.9804 - 0.9843 0.9843 0.9843 - 0.9882 0.9882 0.9882 - 1.0 0.0 0.0 - 1.0 1.0 0.0 - 0.0 1.000 0.0 -""" - -colormapHot=""" - 0.0000 0.0000 0.0000 - 0.0118 0.0000 0.0000 - 0.0235 0.0000 0.0000 - 0.0353 0.0000 0.0000 - 0.0471 0.0000 0.0000 - 0.0588 0.0000 0.0000 - 0.0706 0.0000 0.0000 - 0.0824 0.0000 0.0000 - 0.0941 0.0000 0.0000 - 0.1059 0.0000 0.0000 - 0.1176 0.0000 0.0000 - 0.1294 0.0000 0.0000 - 0.1412 0.0000 0.0000 - 0.1529 0.0000 0.0000 - 0.1647 0.0000 0.0000 - 0.1765 0.0000 0.0000 - 0.1882 0.0000 0.0000 - 0.2000 0.0000 0.0000 - 0.2118 0.0000 0.0000 - 0.2235 0.0000 0.0000 - 0.2353 0.0000 0.0000 - 0.2471 0.0000 0.0000 - 0.2588 0.0000 0.0000 - 0.2706 0.0000 0.0000 - 0.2824 0.0000 0.0000 - 0.2941 0.0000 0.0000 - 0.3059 0.0000 0.0000 - 0.3176 0.0000 0.0000 - 0.3294 0.0000 0.0000 - 0.3412 0.0000 0.0000 - 0.3529 0.0000 0.0000 - 0.3647 0.0000 0.0000 - 0.3765 0.0000 0.0000 - 0.3882 0.0000 0.0000 - 0.4000 0.0000 0.0000 - 0.4118 0.0000 0.0000 - 0.4235 0.0000 0.0000 - 0.4353 0.0000 0.0000 - 0.4471 0.0000 0.0000 - 0.4588 0.0000 0.0000 - 0.4706 0.0000 0.0000 - 0.4824 0.0000 0.0000 - 0.4941 0.0000 0.0000 - 0.5059 0.0000 0.0000 - 0.5176 0.0000 0.0000 - 0.5294 0.0000 0.0000 - 0.5412 0.0000 0.0000 - 0.5529 0.0000 0.0000 - 0.5647 0.0000 0.0000 - 0.5765 0.0000 0.0000 - 0.5882 0.0000 0.0000 - 0.6000 0.0000 0.0000 - 0.6118 0.0000 0.0000 - 0.6235 0.0000 0.0000 - 0.6353 0.0000 0.0000 - 0.6471 0.0000 0.0000 - 0.6588 0.0000 0.0000 - 0.6706 0.0000 0.0000 - 0.6824 0.0000 0.0000 - 0.6941 0.0000 0.0000 - 0.7059 0.0000 0.0000 - 0.7176 0.0000 0.0000 - 0.7294 0.0000 0.0000 - 0.7412 0.0000 0.0000 - 0.7529 0.0000 0.0000 - 0.7647 0.0000 0.0000 - 0.7765 0.0000 0.0000 - 0.7882 0.0000 0.0000 - 0.8000 0.0000 0.0000 - 0.8118 0.0000 0.0000 - 0.8235 0.0000 0.0000 - 0.8353 0.0000 0.0000 - 0.8471 0.0000 0.0000 - 0.8588 0.0000 0.0000 - 0.8706 0.0000 0.0000 - 0.8824 0.0000 0.0000 - 0.8941 0.0000 0.0000 - 0.9059 0.0000 0.0000 - 0.9176 0.0000 0.0000 - 0.9294 0.0000 0.0000 - 0.9412 0.0000 0.0000 - 0.9529 0.0000 0.0000 - 0.9647 0.0000 0.0000 - 0.9765 0.0000 0.0000 - 0.9882 0.0000 0.0000 - 1.0000 0.0000 0.0000 - 1.0000 0.0118 0.0000 - 1.0000 0.0235 0.0000 - 1.0000 0.0353 0.0000 - 1.0000 0.0471 0.0000 - 1.0000 0.0588 0.0000 - 1.0000 0.0706 0.0000 - 1.0000 0.0824 0.0000 - 1.0000 0.0941 0.0000 - 1.0000 0.1059 0.0000 - 1.0000 0.1176 0.0000 - 1.0000 0.1294 0.0000 - 1.0000 0.1412 0.0000 - 1.0000 0.1529 0.0000 - 1.0000 0.1647 0.0000 - 1.0000 0.1765 0.0000 - 1.0000 0.1882 0.0000 - 1.0000 0.2000 0.0000 - 1.0000 0.2118 0.0000 - 1.0000 0.2235 0.0000 - 1.0000 0.2353 0.0000 - 1.0000 0.2471 0.0000 - 1.0000 0.2588 0.0000 - 1.0000 0.2706 0.0000 - 1.0000 0.2824 0.0000 - 1.0000 0.2941 0.0000 - 1.0000 0.3059 0.0000 - 1.0000 0.3176 0.0000 - 1.0000 0.3294 0.0000 - 1.0000 0.3412 0.0000 - 1.0000 0.3529 0.0000 - 1.0000 0.3647 0.0000 - 1.0000 0.3765 0.0000 - 1.0000 0.3882 0.0000 - 1.0000 0.4000 0.0000 - 1.0000 0.4118 0.0000 - 1.0000 0.4235 0.0000 - 1.0000 0.4353 0.0000 - 1.0000 0.4471 0.0000 - 1.0000 0.4588 0.0000 - 1.0000 0.4706 0.0000 - 1.0000 0.4824 0.0000 - 1.0000 0.4941 0.0000 - 1.0000 0.5059 0.0000 - 1.0000 0.5176 0.0000 - 1.0000 0.5294 0.0000 - 1.0000 0.5412 0.0000 - 1.0000 0.5529 0.0000 - 1.0000 0.5647 0.0000 - 1.0000 0.5765 0.0000 - 1.0000 0.5882 0.0000 - 1.0000 0.6000 0.0000 - 1.0000 0.6118 0.0000 - 1.0000 0.6235 0.0000 - 1.0000 0.6353 0.0000 - 1.0000 0.6471 0.0000 - 1.0000 0.6588 0.0000 - 1.0000 0.6706 0.0000 - 1.0000 0.6824 0.0000 - 1.0000 0.6941 0.0000 - 1.0000 0.7059 0.0000 - 1.0000 0.7176 0.0000 - 1.0000 0.7294 0.0000 - 1.0000 0.7412 0.0000 - 1.0000 0.7529 0.0000 - 1.0000 0.7647 0.0000 - 1.0000 0.7765 0.0000 - 1.0000 0.7882 0.0000 - 1.0000 0.8000 0.0000 - 1.0000 0.8118 0.0000 - 1.0000 0.8235 0.0000 - 1.0000 0.8353 0.0000 - 1.0000 0.8471 0.0000 - 1.0000 0.8588 0.0000 - 1.0000 0.8706 0.0000 - 1.0000 0.8824 0.0000 - 1.0000 0.8941 0.0000 - 1.0000 0.9059 0.0000 - 1.0000 0.9176 0.0000 - 1.0000 0.9294 0.0000 - 1.0000 0.9412 0.0000 - 1.0000 0.9529 0.0000 - 1.0000 0.9647 0.0000 - 1.0000 0.9765 0.0000 - 1.0000 0.9882 0.0000 - 1.0000 1.0000 0.0000 - 1.0000 1.0000 0.0118 - 1.0000 1.0000 0.0235 - 1.0000 1.0000 0.0353 - 1.0000 1.0000 0.0471 - 1.0000 1.0000 0.0588 - 1.0000 1.0000 0.0706 - 1.0000 1.0000 0.0824 - 1.0000 1.0000 0.0941 - 1.0000 1.0000 0.1059 - 1.0000 1.0000 0.1176 - 1.0000 1.0000 0.1294 - 1.0000 1.0000 0.1412 - 1.0000 1.0000 0.1529 - 1.0000 1.0000 0.1647 - 1.0000 1.0000 0.1765 - 1.0000 1.0000 0.1882 - 1.0000 1.0000 0.2000 - 1.0000 1.0000 0.2118 - 1.0000 1.0000 0.2235 - 1.0000 1.0000 0.2353 - 1.0000 1.0000 0.2471 - 1.0000 1.0000 0.2588 - 1.0000 1.0000 0.2706 - 1.0000 1.0000 0.2824 - 1.0000 1.0000 0.2941 - 1.0000 1.0000 0.3059 - 1.0000 1.0000 0.3176 - 1.0000 1.0000 0.3294 - 1.0000 1.0000 0.3412 - 1.0000 1.0000 0.3529 - 1.0000 1.0000 0.3647 - 1.0000 1.0000 0.3765 - 1.0000 1.0000 0.3882 - 1.0000 1.0000 0.4000 - 1.0000 1.0000 0.4118 - 1.0000 1.0000 0.4235 - 1.0000 1.0000 0.4353 - 1.0000 1.0000 0.4471 - 1.0000 1.0000 0.4588 - 1.0000 1.0000 0.4706 - 1.0000 1.0000 0.4824 - 1.0000 1.0000 0.4941 - 1.0000 1.0000 0.5059 - 1.0000 1.0000 0.5176 - 1.0000 1.0000 0.5294 - 1.0000 1.0000 0.5412 - 1.0000 1.0000 0.5529 - 1.0000 1.0000 0.5647 - 1.0000 1.0000 0.5765 - 1.0000 1.0000 0.5882 - 1.0000 1.0000 0.6000 - 1.0000 1.0000 0.6118 - 1.0000 1.0000 0.6235 - 1.0000 1.0000 0.6353 - 1.0000 1.0000 0.6471 - 1.0000 1.0000 0.6588 - 1.0000 1.0000 0.6706 - 1.0000 1.0000 0.6824 - 1.0000 1.0000 0.6941 - 1.0000 1.0000 0.7059 - 1.0000 1.0000 0.7176 - 1.0000 1.0000 0.7294 - 1.0000 1.0000 0.7412 - 1.0000 1.0000 0.7529 - 1.0000 1.0000 0.7647 - 1.0000 1.0000 0.7765 - 1.0000 1.0000 0.7882 - 1.0000 1.0000 0.8000 - 1.0000 1.0000 0.8118 - 1.0000 1.0000 0.8235 - 1.0000 1.0000 0.8353 - 1.0000 1.0000 0.8471 - 1.0000 1.0000 0.8588 - 1.0000 1.0000 0.8706 - 1.0000 1.0000 0.8824 - 1.0000 1.0000 0.8941 - 1.0000 1.0000 0.9059 - 1.0000 1.0000 0.9176 - 1.0000 1.0000 0.9294 - 1.0000 1.0000 0.9412 - 1.0000 1.0000 0.9529 - 1.0000 1.0000 0.9647 - 1.0 0.0 0.0 - 1.0 1.0 0.0 - 0.0 1.000 0.0 -""" - -colormapAFMHot=""" - 0.0000 0.0000 0.0000 - 0.0078 0.0000 0.0000 - 0.0157 0.0000 0.0000 - 0.0235 0.0000 0.0000 - 0.0314 0.0000 0.0000 - 0.0392 0.0000 0.0000 - 0.0471 0.0000 0.0000 - 0.0549 0.0000 0.0000 - 0.0627 0.0000 0.0000 - 0.0706 0.0000 0.0000 - 0.0784 0.0000 0.0000 - 0.0863 0.0000 0.0000 - 0.0941 0.0000 0.0000 - 0.1020 0.0000 0.0000 - 0.1098 0.0000 0.0000 - 0.1176 0.0000 0.0000 - 0.1255 0.0000 0.0000 - 0.1333 0.0000 0.0000 - 0.1412 0.0000 0.0000 - 0.1490 0.0000 0.0000 - 0.1569 0.0000 0.0000 - 0.1647 0.0000 0.0000 - 0.1725 0.0000 0.0000 - 0.1804 0.0000 0.0000 - 0.1882 0.0000 0.0000 - 0.1961 0.0000 0.0000 - 0.2039 0.0000 0.0000 - 0.2118 0.0000 0.0000 - 0.2196 0.0000 0.0000 - 0.2275 0.0000 0.0000 - 0.2353 0.0000 0.0000 - 0.2431 0.0000 0.0000 - 0.2510 0.0000 0.0000 - 0.2588 0.0000 0.0000 - 0.2667 0.0000 0.0000 - 0.2745 0.0000 0.0000 - 0.2824 0.0000 0.0000 - 0.2902 0.0000 0.0000 - 0.2980 0.0000 0.0000 - 0.3059 0.0000 0.0000 - 0.3137 0.0000 0.0000 - 0.3216 0.0000 0.0000 - 0.3294 0.0000 0.0000 - 0.3373 0.0000 0.0000 - 0.3451 0.0000 0.0000 - 0.3529 0.0000 0.0000 - 0.3608 0.0000 0.0000 - 0.3686 0.0000 0.0000 - 0.3765 0.0000 0.0000 - 0.3843 0.0000 0.0000 - 0.3922 0.0000 0.0000 - 0.4000 0.0000 0.0000 - 0.4078 0.0000 0.0000 - 0.4157 0.0000 0.0000 - 0.4235 0.0000 0.0000 - 0.4314 0.0000 0.0000 - 0.4392 0.0000 0.0000 - 0.4471 0.0000 0.0000 - 0.4549 0.0000 0.0000 - 0.4627 0.0000 0.0000 - 0.4706 0.0000 0.0000 - 0.4784 0.0000 0.0000 - 0.4863 0.0000 0.0000 - 0.4941 0.0000 0.0000 - 0.5020 0.0000 0.0000 - 0.5098 0.0098 0.0000 - 0.5176 0.0176 0.0000 - 0.5255 0.0255 0.0000 - 0.5333 0.0333 0.0000 - 0.5412 0.0412 0.0000 - 0.5490 0.0490 0.0000 - 0.5569 0.0569 0.0000 - 0.5647 0.0647 0.0000 - 0.5725 0.0725 0.0000 - 0.5804 0.0804 0.0000 - 0.5882 0.0882 0.0000 - 0.5961 0.0961 0.0000 - 0.6039 0.1039 0.0000 - 0.6118 0.1118 0.0000 - 0.6196 0.1196 0.0000 - 0.6275 0.1275 0.0000 - 0.6353 0.1353 0.0000 - 0.6431 0.1431 0.0000 - 0.6510 0.1510 0.0000 - 0.6588 0.1588 0.0000 - 0.6667 0.1667 0.0000 - 0.6745 0.1745 0.0000 - 0.6824 0.1824 0.0000 - 0.6902 0.1902 0.0000 - 0.6980 0.1980 0.0000 - 0.7059 0.2059 0.0000 - 0.7137 0.2137 0.0000 - 0.7216 0.2216 0.0000 - 0.7294 0.2294 0.0000 - 0.7373 0.2373 0.0000 - 0.7451 0.2451 0.0000 - 0.7529 0.2529 0.0000 - 0.7608 0.2608 0.0000 - 0.7686 0.2686 0.0000 - 0.7765 0.2765 0.0000 - 0.7843 0.2843 0.0000 - 0.7922 0.2922 0.0000 - 0.8000 0.3000 0.0000 - 0.8078 0.3078 0.0000 - 0.8157 0.3157 0.0000 - 0.8235 0.3235 0.0000 - 0.8314 0.3314 0.0000 - 0.8392 0.3392 0.0000 - 0.8471 0.3471 0.0000 - 0.8549 0.3549 0.0000 - 0.8627 0.3627 0.0000 - 0.8706 0.3706 0.0000 - 0.8784 0.3784 0.0000 - 0.8863 0.3863 0.0000 - 0.8941 0.3941 0.0000 - 0.9020 0.4020 0.0000 - 0.9098 0.4098 0.0000 - 0.9176 0.4176 0.0000 - 0.9255 0.4255 0.0000 - 0.9333 0.4333 0.0000 - 0.9412 0.4412 0.0000 - 0.9490 0.4490 0.0000 - 0.9569 0.4569 0.0000 - 0.9647 0.4647 0.0000 - 0.9725 0.4725 0.0000 - 0.9804 0.4804 0.0000 - 0.9882 0.4882 0.0000 - 0.9961 0.4961 0.0000 - 1.0000 0.5039 0.0000 - 1.0000 0.5118 0.0118 - 1.0000 0.5196 0.0196 - 1.0000 0.5275 0.0275 - 1.0000 0.5353 0.0353 - 1.0000 0.5431 0.0431 - 1.0000 0.5510 0.0510 - 1.0000 0.5588 0.0588 - 1.0000 0.5667 0.0667 - 1.0000 0.5745 0.0745 - 1.0000 0.5824 0.0824 - 1.0000 0.5902 0.0902 - 1.0000 0.5980 0.0980 - 1.0000 0.6059 0.1059 - 1.0000 0.6137 0.1137 - 1.0000 0.6216 0.1216 - 1.0000 0.6294 0.1294 - 1.0000 0.6373 0.1373 - 1.0000 0.6451 0.1451 - 1.0000 0.6529 0.1529 - 1.0000 0.6608 0.1608 - 1.0000 0.6686 0.1686 - 1.0000 0.6765 0.1765 - 1.0000 0.6843 0.1843 - 1.0000 0.6922 0.1922 - 1.0000 0.7000 0.2000 - 1.0000 0.7078 0.2078 - 1.0000 0.7157 0.2157 - 1.0000 0.7235 0.2235 - 1.0000 0.7314 0.2314 - 1.0000 0.7392 0.2392 - 1.0000 0.7471 0.2471 - 1.0000 0.7549 0.2549 - 1.0000 0.7627 0.2627 - 1.0000 0.7706 0.2706 - 1.0000 0.7784 0.2784 - 1.0000 0.7863 0.2863 - 1.0000 0.7941 0.2941 - 1.0000 0.8020 0.3020 - 1.0000 0.8098 0.3098 - 1.0000 0.8176 0.3176 - 1.0000 0.8255 0.3255 - 1.0000 0.8333 0.3333 - 1.0000 0.8412 0.3412 - 1.0000 0.8490 0.3490 - 1.0000 0.8569 0.3569 - 1.0000 0.8647 0.3647 - 1.0000 0.8725 0.3725 - 1.0000 0.8804 0.3804 - 1.0000 0.8882 0.3882 - 1.0000 0.8961 0.3961 - 1.0000 0.9039 0.4039 - 1.0000 0.9118 0.4118 - 1.0000 0.9196 0.4196 - 1.0000 0.9275 0.4275 - 1.0000 0.9353 0.4353 - 1.0000 0.9431 0.4431 - 1.0000 0.9510 0.4510 - 1.0000 0.9588 0.4588 - 1.0000 0.9667 0.4667 - 1.0000 0.9745 0.4745 - 1.0000 0.9824 0.4824 - 1.0000 0.9902 0.4902 - 1.0000 0.9980 0.4980 - 1.0000 1.0000 0.5059 - 1.0000 1.0000 0.5137 - 1.0000 1.0000 0.5216 - 1.0000 1.0000 0.5294 - 1.0000 1.0000 0.5373 - 1.0000 1.0000 0.5451 - 1.0000 1.0000 0.5529 - 1.0000 1.0000 0.5608 - 1.0000 1.0000 0.5686 - 1.0000 1.0000 0.5765 - 1.0000 1.0000 0.5843 - 1.0000 1.0000 0.5922 - 1.0000 1.0000 0.6000 - 1.0000 1.0000 0.6078 - 1.0000 1.0000 0.6157 - 1.0000 1.0000 0.6235 - 1.0000 1.0000 0.6314 - 1.0000 1.0000 0.6392 - 1.0000 1.0000 0.6471 - 1.0000 1.0000 0.6549 - 1.0000 1.0000 0.6627 - 1.0000 1.0000 0.6706 - 1.0000 1.0000 0.6784 - 1.0000 1.0000 0.6863 - 1.0000 1.0000 0.6941 - 1.0000 1.0000 0.7020 - 1.0000 1.0000 0.7098 - 1.0000 1.0000 0.7176 - 1.0000 1.0000 0.7255 - 1.0000 1.0000 0.7333 - 1.0000 1.0000 0.7412 - 1.0000 1.0000 0.7490 - 1.0000 1.0000 0.7569 - 1.0000 1.0000 0.7647 - 1.0000 1.0000 0.7725 - 1.0000 1.0000 0.7804 - 1.0000 1.0000 0.7882 - 1.0000 1.0000 0.7961 - 1.0000 1.0000 0.8039 - 1.0000 1.0000 0.8118 - 1.0000 1.0000 0.8196 - 1.0000 1.0000 0.8275 - 1.0000 1.0000 0.8353 - 1.0000 1.0000 0.8431 - 1.0000 1.0000 0.8510 - 1.0000 1.0000 0.8588 - 1.0000 1.0000 0.8667 - 1.0000 1.0000 0.8745 - 1.0000 1.0000 0.8824 - 1.0000 1.0000 0.8902 - 1.0000 1.0000 0.8980 - 1.0000 1.0000 0.9059 - 1.0000 1.0000 0.9137 - 1.0000 1.0000 0.9216 - 1.0000 1.0000 0.9294 - 1.0000 1.0000 0.9373 - 1.0000 1.0000 0.9451 - 1.0000 1.0000 0.9529 - 1.0000 1.0000 0.9608 - 1.0000 1.0000 0.9686 - 1.0000 1.0000 0.9765 - 1.0 0.0 0.0 - 1.0 1.0 0.0 - 0.0 1.000 0.0 -""" -colormapgray1 = """ - 1.0000 1.0000 1.0000 - 0.9961 0.9961 0.9961 - 0.9922 0.9922 0.9922 - 0.9882 0.9882 0.9882 - 0.9843 0.9843 0.9843 - 0.9804 0.9804 0.9804 - 0.9765 0.9765 0.9765 - 0.9725 0.9725 0.9725 - 0.9686 0.9686 0.9686 - 0.9647 0.9647 0.9647 - 0.9608 0.9608 0.9608 - 0.9569 0.9569 0.9569 - 0.9529 0.9529 0.9529 - 0.9490 0.9490 0.9490 - 0.9451 0.9451 0.9451 - 0.9412 0.9412 0.9412 - 0.9373 0.9373 0.9373 - 0.9333 0.9333 0.9333 - 0.9294 0.9294 0.9294 - 0.9255 0.9255 0.9255 - 0.9216 0.9216 0.9216 - 0.9176 0.9176 0.9176 - 0.9137 0.9137 0.9137 - 0.9098 0.9098 0.9098 - 0.9059 0.9059 0.9059 - 0.9020 0.9020 0.9020 - 0.8980 0.8980 0.8980 - 0.8941 0.8941 0.8941 - 0.8902 0.8902 0.8902 - 0.8863 0.8863 0.8863 - 0.8824 0.8824 0.8824 - 0.8784 0.8784 0.8784 - 0.8745 0.8745 0.8745 - 0.8706 0.8706 0.8706 - 0.8667 0.8667 0.8667 - 0.8627 0.8627 0.8627 - 0.8588 0.8588 0.8588 - 0.8549 0.8549 0.8549 - 0.8510 0.8510 0.8510 - 0.8471 0.8471 0.8471 - 0.8431 0.8431 0.8431 - 0.8392 0.8392 0.8392 - 0.8353 0.8353 0.8353 - 0.8314 0.8314 0.8314 - 0.8275 0.8275 0.8275 - 0.8235 0.8235 0.8235 - 0.8196 0.8196 0.8196 - 0.8157 0.8157 0.8157 - 0.8118 0.8118 0.8118 - 0.8078 0.8078 0.8078 - 0.8039 0.8039 0.8039 - 0.8000 0.8000 0.8000 - 0.7961 0.7961 0.7961 - 0.7922 0.7922 0.7922 - 0.7882 0.7882 0.7882 - 0.7843 0.7843 0.7843 - 0.7804 0.7804 0.7804 - 0.7765 0.7765 0.7765 - 0.7725 0.7725 0.7725 - 0.7686 0.7686 0.7686 - 0.7647 0.7647 0.7647 - 0.7608 0.7608 0.7608 - 0.7569 0.7569 0.7569 - 0.7529 0.7529 0.7529 - 0.7490 0.7490 0.7490 - 0.7451 0.7451 0.7451 - 0.7412 0.7412 0.7412 - 0.7373 0.7373 0.7373 - 0.7333 0.7333 0.7333 - 0.7294 0.7294 0.7294 - 0.7255 0.7255 0.7255 - 0.7216 0.7216 0.7216 - 0.7176 0.7176 0.7176 - 0.7137 0.7137 0.7137 - 0.7098 0.7098 0.7098 - 0.7059 0.7059 0.7059 - 0.7020 0.7020 0.7020 - 0.6980 0.6980 0.6980 - 0.6941 0.6941 0.6941 - 0.6902 0.6902 0.6902 - 0.6863 0.6863 0.6863 - 0.6824 0.6824 0.6824 - 0.6784 0.6784 0.6784 - 0.6745 0.6745 0.6745 - 0.6706 0.6706 0.6706 - 0.6667 0.6667 0.6667 - 0.6627 0.6627 0.6627 - 0.6588 0.6588 0.6588 - 0.6549 0.6549 0.6549 - 0.6510 0.6510 0.6510 - 0.6471 0.6471 0.6471 - 0.6431 0.6431 0.6431 - 0.6392 0.6392 0.6392 - 0.6353 0.6353 0.6353 - 0.6314 0.6314 0.6314 - 0.6275 0.6275 0.6275 - 0.6235 0.6235 0.6235 - 0.6196 0.6196 0.6196 - 0.6157 0.6157 0.6157 - 0.6118 0.6118 0.6118 - 0.6078 0.6078 0.6078 - 0.6039 0.6039 0.6039 - 0.6000 0.6000 0.6000 - 0.5961 0.5961 0.5961 - 0.5922 0.5922 0.5922 - 0.5882 0.5882 0.5882 - 0.5843 0.5843 0.5843 - 0.5804 0.5804 0.5804 - 0.5765 0.5765 0.5765 - 0.5725 0.5725 0.5725 - 0.5686 0.5686 0.5686 - 0.5647 0.5647 0.5647 - 0.5608 0.5608 0.5608 - 0.5569 0.5569 0.5569 - 0.5529 0.5529 0.5529 - 0.5490 0.5490 0.5490 - 0.5451 0.5451 0.5451 - 0.5412 0.5412 0.5412 - 0.5373 0.5373 0.5373 - 0.5333 0.5333 0.5333 - 0.5294 0.5294 0.5294 - 0.5255 0.5255 0.5255 - 0.5216 0.5216 0.5216 - 0.5176 0.5176 0.5176 - 0.5137 0.5137 0.5137 - 0.5098 0.5098 0.5098 - 0.5059 0.5059 0.5059 - 0.5020 0.5020 0.5020 - 0.4980 0.4980 0.4980 - 0.4941 0.4941 0.4941 - 0.4902 0.4902 0.4902 - 0.4863 0.4863 0.4863 - 0.4824 0.4824 0.4824 - 0.4784 0.4784 0.4784 - 0.4745 0.4745 0.4745 - 0.4706 0.4706 0.4706 - 0.4667 0.4667 0.4667 - 0.4627 0.4627 0.4627 - 0.4588 0.4588 0.4588 - 0.4549 0.4549 0.4549 - 0.4510 0.4510 0.4510 - 0.4471 0.4471 0.4471 - 0.4431 0.4431 0.4431 - 0.4392 0.4392 0.4392 - 0.4353 0.4353 0.4353 - 0.4314 0.4314 0.4314 - 0.4275 0.4275 0.4275 - 0.4235 0.4235 0.4235 - 0.4196 0.4196 0.4196 - 0.4157 0.4157 0.4157 - 0.4118 0.4118 0.4118 - 0.4078 0.4078 0.4078 - 0.4039 0.4039 0.4039 - 0.4000 0.4000 0.4000 - 0.3961 0.3961 0.3961 - 0.3922 0.3922 0.3922 - 0.3882 0.3882 0.3882 - 0.3843 0.3843 0.3843 - 0.3804 0.3804 0.3804 - 0.3765 0.3765 0.3765 - 0.3725 0.3725 0.3725 - 0.3686 0.3686 0.3686 - 0.3647 0.3647 0.3647 - 0.3608 0.3608 0.3608 - 0.3569 0.3569 0.3569 - 0.3529 0.3529 0.3529 - 0.3490 0.3490 0.3490 - 0.3451 0.3451 0.3451 - 0.3412 0.3412 0.3412 - 0.3373 0.3373 0.3373 - 0.3333 0.3333 0.3333 - 0.3294 0.3294 0.3294 - 0.3255 0.3255 0.3255 - 0.3216 0.3216 0.3216 - 0.3176 0.3176 0.3176 - 0.3137 0.3137 0.3137 - 0.3098 0.3098 0.3098 - 0.3059 0.3059 0.3059 - 0.3020 0.3020 0.3020 - 0.2980 0.2980 0.2980 - 0.2941 0.2941 0.2941 - 0.2902 0.2902 0.2902 - 0.2863 0.2863 0.2863 - 0.2824 0.2824 0.2824 - 0.2784 0.2784 0.2784 - 0.2745 0.2745 0.2745 - 0.2706 0.2706 0.2706 - 0.2667 0.2667 0.2667 - 0.2627 0.2627 0.2627 - 0.2588 0.2588 0.2588 - 0.2549 0.2549 0.2549 - 0.2510 0.2510 0.2510 - 0.2471 0.2471 0.2471 - 0.2431 0.2431 0.2431 - 0.2392 0.2392 0.2392 - 0.2353 0.2353 0.2353 - 0.2314 0.2314 0.2314 - 0.2275 0.2275 0.2275 - 0.2235 0.2235 0.2235 - 0.2196 0.2196 0.2196 - 0.2157 0.2157 0.2157 - 0.2118 0.2118 0.2118 - 0.2078 0.2078 0.2078 - 0.2039 0.2039 0.2039 - 0.2000 0.2000 0.2000 - 0.1961 0.1961 0.1961 - 0.1922 0.1922 0.1922 - 0.1882 0.1882 0.1882 - 0.1843 0.1843 0.1843 - 0.1804 0.1804 0.1804 - 0.1765 0.1765 0.1765 - 0.1725 0.1725 0.1725 - 0.1686 0.1686 0.1686 - 0.1647 0.1647 0.1647 - 0.1608 0.1608 0.1608 - 0.1569 0.1569 0.1569 - 0.1529 0.1529 0.1529 - 0.1490 0.1490 0.1490 - 0.1451 0.1451 0.1451 - 0.1412 0.1412 0.1412 - 0.1373 0.1373 0.1373 - 0.1333 0.1333 0.1333 - 0.1294 0.1294 0.1294 - 0.1255 0.1255 0.1255 - 0.1216 0.1216 0.1216 - 0.1176 0.1176 0.1176 - 0.1137 0.1137 0.1137 - 0.1098 0.1098 0.1098 - 0.1059 0.1059 0.1059 - 0.1020 0.1020 0.1020 - 0.0980 0.0980 0.0980 - 0.0941 0.0941 0.0941 - 0.0902 0.0902 0.0902 - 0.0863 0.0863 0.0863 - 0.0824 0.0824 0.0824 - 0.0784 0.0784 0.0784 - 0.0745 0.0745 0.0745 - 0.0706 0.0706 0.0706 - 0.0667 0.0667 0.0667 - 0.0627 0.0627 0.0627 - 0.0588 0.0588 0.0588 - 0.0549 0.0549 0.0549 - 0.0510 0.0510 0.0510 - 0.0471 0.0471 0.0471 - 0.0431 0.0431 0.0431 - 0.0392 0.0392 0.0392 - 0.0353 0.0353 0.0353 - 0.0314 0.0314 0.0314 - 0.0275 0.0275 0.0275 - 0.0235 0.0235 0.0235 - 0.0196 0.0196 0.0196 - 0.0157 0.0157 0.0157 - 0.0118 0.0118 0.0118 - 1.0 0.0 0.0 - 1.0 1.0 0.0 - 0.0 1.000 0.0 -""" -colormapLinrad = """ - 0.0000 0.0000 0.0000 - 0.0000 0.0000 0.0123 - 0.0000 0.0000 0.0246 - 0.0000 0.0000 0.0368 - 0.0000 0.0000 0.0490 - 0.0000 0.0000 0.0612 - 0.0000 0.0000 0.0734 - 0.0000 0.0000 0.0855 - 0.0000 0.0000 0.0975 - 0.0000 0.0000 0.1094 - 0.0000 0.0000 0.1213 - 0.0000 0.0000 0.1331 - 0.0000 0.0000 0.1448 - 0.0000 0.0000 0.1564 - 0.0000 0.0000 0.1678 - 0.0000 0.0000 0.1792 - 0.0000 0.0000 0.1904 - 0.0000 0.0000 0.2015 - 0.0000 0.0000 0.2124 - 0.0000 0.0000 0.2232 - 0.0000 0.0000 0.2338 - 0.0000 0.0000 0.2442 - 0.0000 0.0000 0.2545 - 0.0000 0.0000 0.2645 - 0.0000 0.0000 0.2744 - 0.0000 0.0000 0.2841 - 0.0000 0.0000 0.2935 - 0.0000 0.0000 0.3028 - 0.0000 0.0000 0.3118 - 0.0000 0.0000 0.3206 - 0.0000 0.0000 0.3292 - 0.0000 0.0000 0.3375 - 0.0000 0.0000 0.3456 - 0.0000 0.0000 0.3534 - 0.0000 0.0000 0.3609 - 0.0000 0.0036 0.3682 - 0.0000 0.0149 0.3752 - 0.0000 0.0262 0.3820 - 0.0000 0.0375 0.3885 - 0.0000 0.0487 0.3946 - 0.0000 0.0600 0.4005 - 0.0000 0.0712 0.4061 - 0.0000 0.0824 0.4114 - 0.0000 0.0936 0.4164 - 0.0000 0.1047 0.4211 - 0.0000 0.1158 0.4255 - 0.0000 0.1269 0.4295 - 0.0000 0.1379 0.4333 - 0.0000 0.1489 0.4367 - 0.0000 0.1599 0.4398 - 0.0000 0.1707 0.4426 - 0.0000 0.1816 0.4451 - 0.0000 0.1923 0.4472 - 0.0000 0.2030 0.4490 - 0.0000 0.2137 0.4505 - 0.0000 0.2243 0.4517 - 0.0000 0.2348 0.4525 - 0.0000 0.2452 0.4530 - 0.0000 0.2555 0.4531 - 0.0000 0.2658 0.4529 - 0.0000 0.2760 0.4524 - 0.0000 0.2860 0.4516 - 0.0000 0.2960 0.4504 - 0.0000 0.3059 0.4489 - 0.0000 0.3157 0.4471 - 0.0000 0.3254 0.4449 - 0.0000 0.3350 0.4424 - 0.0000 0.3445 0.4396 - 0.0000 0.3538 0.4364 - 0.0000 0.3631 0.4330 - 0.0000 0.3722 0.4292 - 0.0000 0.3812 0.4251 - 0.0000 0.3901 0.4207 - 0.0000 0.3988 0.4160 - 0.0000 0.4075 0.4109 - 0.0000 0.4160 0.4056 - 0.0000 0.4243 0.4000 - 0.0000 0.4325 0.3941 - 0.0000 0.4406 0.3879 - 0.0000 0.4486 0.3814 - 0.0000 0.4563 0.3746 - 0.0000 0.4640 0.3676 - 0.0000 0.4715 0.3603 - 0.0000 0.4788 0.3527 - 0.0000 0.4860 0.3448 - 0.0000 0.4930 0.3367 - 0.0000 0.4998 0.3284 - 0.0000 0.5065 0.3198 - 0.0000 0.5131 0.3110 - 0.0000 0.5194 0.3020 - 0.0000 0.5256 0.2927 - 0.0000 0.5316 0.2832 - 0.0000 0.5375 0.2735 - 0.0000 0.5432 0.2636 - 0.0000 0.5487 0.2535 - 0.0000 0.5540 0.2433 - 0.0000 0.5591 0.2328 - 0.0000 0.5641 0.2222 - 0.0000 0.5688 0.2114 - 0.0000 0.5734 0.2005 - 0.0000 0.5778 0.1894 - 0.0000 0.5820 0.1782 - 0.0000 0.5860 0.1668 - 0.0000 0.5899 0.1553 - 0.0000 0.5935 0.1437 - 0.0120 0.5969 0.1320 - 0.0289 0.6002 0.1202 - 0.0458 0.6032 0.1084 - 0.0628 0.6061 0.0964 - 0.0797 0.6088 0.0844 - 0.0966 0.6112 0.0723 - 0.1134 0.6135 0.0601 - 0.1302 0.6155 0.0479 - 0.1470 0.6174 0.0357 - 0.1638 0.6190 0.0234 - 0.1805 0.6205 0.0112 - 0.1971 0.6217 -0.0011 - 0.2137 0.6228 0.0000 - 0.2302 0.6236 0.0000 - 0.2467 0.6243 0.0000 - 0.2631 0.6247 0.0000 - 0.2794 0.6250 0.0000 - 0.2957 0.6250 0.0000 - 0.3118 0.6248 0.0000 - 0.3279 0.6244 0.0000 - 0.3438 0.6239 0.0000 - 0.3597 0.6231 0.0000 - 0.3755 0.6221 0.0000 - 0.3911 0.6209 0.0000 - 0.4067 0.6195 0.0000 - 0.4221 0.6179 0.0000 - 0.4374 0.6161 0.0000 - 0.4526 0.6141 0.0000 - 0.4676 0.6119 0.0000 - 0.4826 0.6095 0.0000 - 0.4973 0.6069 0.0000 - 0.5120 0.6041 0.0000 - 0.5265 0.6011 0.0000 - 0.5408 0.5980 0.0000 - 0.5550 0.5946 0.0000 - 0.5690 0.5910 0.0000 - 0.5829 0.5872 0.0000 - 0.5965 0.5833 0.0000 - 0.6101 0.5791 0.0000 - 0.6234 0.5748 0.0000 - 0.6366 0.5702 0.0000 - 0.6496 0.5655 0.0000 - 0.6623 0.5606 0.0000 - 0.6750 0.5556 0.0000 - 0.6874 0.5503 0.0000 - 0.6996 0.5449 0.0000 - 0.7116 0.5392 0.0000 - 0.7234 0.5334 0.0000 - 0.7350 0.5275 0.0000 - 0.7464 0.5213 0.0000 - 0.7576 0.5150 0.0000 - 0.7685 0.5085 0.0000 - 0.7793 0.5019 0.0000 - 0.7898 0.4951 0.0000 - 0.8000 0.4881 0.0000 - 0.8101 0.4810 0.0000 - 0.8199 0.4737 0.0000 - 0.8295 0.4663 0.0000 - 0.8389 0.4587 0.0000 - 0.8480 0.4509 0.0000 - 0.8568 0.4430 0.0000 - 0.8654 0.4350 0.0000 - 0.8738 0.4268 0.0000 - 0.8819 0.4185 0.0000 - 0.8898 0.4101 0.0000 - 0.8974 0.4015 0.0000 - 0.9048 0.3928 0.0000 - 0.9118 0.3839 0.0000 - 0.9187 0.3749 0.0000 - 0.9252 0.3658 0.0000 - 0.9315 0.3566 0.0000 - 0.9376 0.3473 0.0000 - 0.9433 0.3379 0.0000 - 0.9488 0.3283 0.0000 - 0.9540 0.3187 0.0000 - 0.9590 0.3089 0.0000 - 0.9636 0.2990 0.0000 - 0.9680 0.2891 0.0000 - 0.9721 0.2790 0.0000 - 0.9760 0.2689 0.0000 - 0.9795 0.2586 0.0000 - 0.9828 0.2483 0.0083 - 0.9858 0.2379 0.0219 - 0.9885 0.2274 0.0354 - 0.9909 0.2169 0.0489 - 0.9931 0.2063 0.0625 - 0.9949 0.1956 0.0760 - 0.9965 0.1848 0.0896 - 0.9978 0.1740 0.1031 - 0.9987 0.1632 0.1167 - 0.9995 0.1522 0.1303 - 0.9999 0.1413 0.1439 - 1.0000 0.1302 0.1575 - 1.0000 0.1712 0.1712 - 1.0000 0.1848 0.1848 - 1.0000 0.1986 0.1986 - 1.0000 0.2123 0.2123 - 1.0000 0.2261 0.2261 - 1.0000 0.2400 0.2400 - 1.0000 0.2539 0.2539 - 1.0000 0.2678 0.2678 - 1.0000 0.2819 0.2819 - 1.0000 0.2960 0.2960 - 1.0000 0.3102 0.3102 - 1.0000 0.3245 0.3245 - 1.0000 0.3389 0.3389 - 1.0000 0.3535 0.3535 - 1.0000 0.3681 0.3681 - 1.0000 0.3829 0.3829 - 1.0000 0.3978 0.3978 - 1.0000 0.4129 0.4129 - 1.0000 0.4282 0.4282 - 1.0000 0.4436 0.4436 - 1.0000 0.4592 0.4592 - 1.0000 0.4750 0.4750 - 1.0000 0.4910 0.4910 - 1.0000 0.5072 0.5072 - 1.0000 0.5237 0.5237 - 1.0000 0.5405 0.5405 - 1.0000 0.5574 0.5574 - 1.0000 0.5747 0.5747 - 1.0000 0.5923 0.5923 - 1.0000 0.6102 0.6102 - 1.0000 0.6284 0.6284 - 1.0000 0.6469 0.6469 - 1.0000 0.6658 0.6658 - 1.0000 0.6851 0.6851 - 1.0000 0.7047 0.7047 - 1.0000 0.7248 0.7248 - 1.0000 0.7453 0.7453 - 1.0000 0.7662 0.7662 - 1.0000 0.7876 0.7876 - 1.0000 0.8095 0.8095 - 1.0000 0.8319 0.8319 - 1.0000 0.8548 0.8548 - 1.0000 0.8782 0.8782 - 1.0000 0.9022 0.9022 - 1.0000 0.9268 0.9268 - 1.0000 0.9519 0.9519 - 1.0000 0.9777 0.9777 - 1.0000 1.0000 1.0000 - 1.0000 1.0000 1.0000 - 1.0000 1.0000 1.0000 - 1.0000 1.0000 1.0000 - 1.0000 1.0000 1.0000 - 1.0000 1.0000 1.0000 - 1.0000 1.0000 1.0000 - 1.0000 1.0000 1.0000 - 1.0 0.0 0.0 - 1.0 1.0 0.0 - 0.0 1.000 0.0 -""" - -#----------------------------------------------------- Colormap2Palette -def Colormap2Palette(colormap=colormapLinrad): - """ convert a matlab type colormap to a PIL palette """ - x = map(lambda x,colormap=colormap: int(string.atof(x)*255), string.split(colormap)) - palette = [(0,0,0)] * 256 - for i in range(len(x)/3): - palette[i] = (x[i*3], x[i*3+1], x[i*3+2]) - palette = map(lambda a: chr(a[0])+chr(a[1])+chr(a[2]), palette) - palette = string.join(palette, "") - g.palette=palette - return palette diff --git a/pctile.f b/pctile.f deleted file mode 100644 index c0b95aea6..000000000 --- a/pctile.f +++ /dev/null @@ -1,13 +0,0 @@ - subroutine pctile(x,tmp,nmax,npct,xpct) - real x(nmax),tmp(nmax) - - do i=1,nmax - tmp(i)=x(i) - enddo - call sort(nmax,tmp) - j=nint(nmax*0.01*npct) - if(j.lt.1) j=1 - xpct=tmp(j) - - return - end diff --git a/peakup.f b/peakup.f deleted file mode 100644 index bef58cc32..000000000 --- a/peakup.f +++ /dev/null @@ -1,8 +0,0 @@ - subroutine peakup(ym,y0,yp,dx) - - b=(yp-ym)/2.0 - c=(yp+ym-2.0*y0)/2.0 - dx=-b/(2.0*c) - - return - end diff --git a/pix2d65.f90 b/pix2d65.f90 deleted file mode 100644 index 0daf73d18..000000000 --- a/pix2d65.f90 +++ /dev/null @@ -1,28 +0,0 @@ -subroutine pix2d65(d2,jz) - -! Compute data for green line in JT65 mode. - - integer*2 d2(jz) !Raw input data - include 'gcom2.f90' - - sum=0. - do i=1,jz - sum=sum+d2(i) - enddo - nave=nint(sum/jz) - nadd=nint(53.0*11025.0/500.0) - ngreen=min(jz/nadd,500) - k=0 - do i=1,ngreen - sq=0. - do n=1,nadd - k=k+1 - d2(k)=d2(k)-nave - x=d2(k) - sq=sq + x*x - enddo - green(i)=db(sq)-96.0 - enddo - - return -end subroutine pix2d65 diff --git a/plotter.cpp b/plotter.cpp new file mode 100644 index 000000000..ddfe9e764 --- /dev/null +++ b/plotter.cpp @@ -0,0 +1,711 @@ +#include "plotter.h" +#include +#include + +#define MAX_SCREENSIZE 2048 + + +CPlotter::CPlotter(QWidget *parent) : //CPlotter Constructor + QFrame(parent) +{ + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + setFocusPolicy(Qt::StrongFocus); + setAttribute(Qt::WA_PaintOnScreen,false); + setAutoFillBackground(false); + setAttribute(Qt::WA_OpaquePaintEvent, false); + setAttribute(Qt::WA_NoSystemBackground, true); + + m_StartFreq = 100; + m_nSpan=65; //Units: kHz + m_fSpan=(float)m_nSpan; + m_hdivs = HORZ_DIVS; + m_FreqUnits = 1; + m_Running = false; + m_paintEventBusy=false; + m_WaterfallPixmap = QPixmap(0,0); + m_ZoomWaterfallPixmap = QPixmap(0,0); + m_2DPixmap = QPixmap(0,0); + m_ScalePixmap = QPixmap(0,0); + m_ZoomScalePixmap = QPixmap(0,0); + m_Size = QSize(0,0); + m_fQSO = 125; + m_line = 0; + m_fSample = 96000; + m_paintAllZoom = false; +} + +CPlotter::~CPlotter() { } // Destructor + +QSize CPlotter::minimumSizeHint() const +{ + return QSize(50, 50); +} + +QSize CPlotter::sizeHint() const +{ + return QSize(180, 180); +} + +void CPlotter::resizeEvent(QResizeEvent* ) //resizeEvent() +{ + if(!size().isValid()) return; + if( m_Size != size() ) { + //if changed, resize pixmaps to new screensize + m_Size = size(); + int w = m_Size.width(); + int h = (m_Size.height()-60)/2; + m_WaterfallPixmap = QPixmap(w,h); + m_ZoomWaterfallPixmap = QPixmap(w,h); + m_2DPixmap = QPixmap(w,h); + m_WaterfallPixmap.fill(Qt::black); + m_ZoomWaterfallPixmap.fill(Qt::black); + m_2DPixmap.fill(Qt::black); + memset(m_zwf,0,32768*h); + m_ScalePixmap = QPixmap(w,30); + m_ZoomScalePixmap = QPixmap(w,30); //(no change on resize...) + m_ScalePixmap.fill(Qt::white); + m_ZoomScalePixmap.fill(Qt::yellow); + } + SetCenterFreq(-1); + DrawOverlay(); +} + +void CPlotter::paintEvent(QPaintEvent *) // paintEvent() +{ + static int x00=-99; + int ihr,imin; + + if(m_paintEventBusy) return; + m_paintEventBusy=true; + QPainter painter(this); + int w = m_Size.width(); + int h = (m_Size.height()-60)/2; + painter.drawPixmap(0,0,m_ScalePixmap); + painter.drawPixmap(0,30,m_WaterfallPixmap); + if(m_2Dspec) { + painter.drawPixmap(0,h+30,m_ScalePixmap); + painter.drawPixmap(0,h+60,m_2DPixmap); + m_paintEventBusy=false; + return; + } + + painter.drawPixmap(0,h+30,m_ZoomScalePixmap); + painter.drawPixmap(0,h+60,m_ZoomWaterfallPixmap); + + QRect target(0,h+30,w,30); // (x,y,width,height) + QRect source(0,0,w,30); + painter.drawPixmap(target,m_ZoomScalePixmap,source); + + float df=m_fSample/32768.0; + int x0=16384 + (0.001*(m_ZoomStartFreq+m_fCal)+m_fQSO-m_nkhz+1.27046) * \ + 1000.0/df + 0.5; + + QPainter painter2(&m_ZoomWaterfallPixmap); + for(int i=0; i254) y1=254; + if (s[i]>1.e29) y1=255; + m_hist1[y1]++; + painter1.setPen(m_ColorTbl[y1]); + painter1.drawPoint(i,0); + if(m_2Dspec) { + int y2 = gain*(y + 34 -m_plotZero); + if (y2<0) y2=0; + if (y2>254) y2=254; + if (s[i]>1.e29) y2=255; + if(strong != strong0 or i==w-1) { + painter2D.drawPolyline(LineBuf,j); + j=0; + strong0=strong; + if(strong0) painter2D.setPen(Qt::red); + if(!strong0) painter2D.setPen(Qt::green); + } + LineBuf[j].setX(i); + LineBuf[j].setY(h-y2); + j++; + } + } + + for(i=0; i<32768; i++) { + y = 10.0*log10(splot[i]); + int y1 = 5.0*gain*(y + 30 - m_plotZero); + if (y1<0) y1=0; + if (y1>254) y1=254; + if (splot[i]>1.e29) y1=255; + m_hist2[y1]++; + m_zwf[i]=y1; + } + + if(s[0]>1.0e29) m_line=0; + m_line++; + if(m_line == 15) { + UTCstr(); + painter1.setPen(m_ColorTbl[255]); + painter1.drawText(5,10,m_sutc); + } + update(); //trigger a new paintEvent +} + +void CPlotter::UTCstr() +{ + int ihr,imin; + if(datcom_.ndiskdat != 0) { + ihr=datcom_.nutc/100; + imin=datcom_.nutc%100; + } else { + qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000; + imin=ms/60000; + ihr=imin/60; + imin=imin % 60; + } + sprintf(m_sutc,"%2.2d:%2.2d",ihr,imin); +} + +void CPlotter::DrawOverlay() //DrawOverlay() +{ + if(m_WaterfallPixmap.isNull()) return; + int w = m_WaterfallPixmap.width(); + int x,y; + float pixperdiv; + + QRect rect0; + QPainter painter0(&m_ScalePixmap); + painter0.initFrom(this); + + //create Font to use for scales + QFont Font("Arial"); + Font.setPointSize(12); + QFontMetrics metrics(Font); + Font.setWeight(QFont::Normal); + painter0.setFont(Font); + painter0.setPen(Qt::black); + + m_binsPerPixel = m_nSpan * 32768.0/(w*0.001*m_fSample) + 0.5; + double FreqPerDiv=5.0; + double df = m_binsPerPixel*0.001*m_fSample/32768.0; + m_hdivs = w*df/FreqPerDiv + 0.9999; + m_fSpan = w*df; + m_ScalePixmap.fill(Qt::white); + painter0.drawRect(0, 0, w, 30); + + //draw tick marks on wideband (upper) scale + pixperdiv = FreqPerDiv/df; + for( int i=1; i0 and x0 100) { + m_FreqUnits = 1; + FreqPerDiv = 200; + int w = m_WaterfallPixmap.width(); + float df=m_fSample/32768.0; + StartFreq = -w*df/2; + int n=StartFreq/FreqPerDiv; + StartFreq=n*200; + m_ZoomStartFreq = (int)StartFreq; + } + int numfractdigits = (int)log10((double)m_FreqUnits); + + if(1 == m_FreqUnits) { + //if units is Hz then just output integer freq + for(int i=0; i<=m_hdivs; i++) { + freq = StartFreq/(float)m_FreqUnits; + m_HDivText[i].setNum((int)freq); + StartFreq += FreqPerDiv; + } + return; + } + //here if is fractional frequency values + //so create max sized text based on frequency units + for(int i=0; i<=m_hdivs; i++) { + freq = StartFreq/(float)m_FreqUnits; + m_HDivText[i].setNum(freq,'f', numfractdigits); + StartFreq += FreqPerDiv; + } + //now find the division text with the longest non-zero digit + //to the right of the decimal point. + int max = 0; + for(i=0; i<=m_hdivs; i++) { + int dp = m_HDivText[i].indexOf('.'); + int l = m_HDivText[i].length()-1; + for(j=l; j>dp; j--) { + if(m_HDivText[i][j] != '0') + break; + } + if( (j-dp) > max) + max = j-dp; + } + //truncate all strings to maximum fractional length + StartFreq = m_CenterFreq - 0.5*m_fSpan; + for( i=0; i<=m_hdivs; i++) { + freq = (float)StartFreq/(float)m_FreqUnits; + m_HDivText[i].setNum(freq,'f', max); + StartFreq += FreqPerDiv; + } +} + +int CPlotter::XfromFreq(float f) //XfromFreq() +{ + float w = m_WaterfallPixmap.width(); + int x = (int) w * (f - m_StartFreq)/m_fSpan; + if(x<0 ) return 0; + if(x>(int)w) return m_WaterfallPixmap.width(); + return x; +} + +float CPlotter::FreqfromX(int x) //FreqfromX() +{ + float w = m_WaterfallPixmap.width(); + float f =m_CenterFreq - 0.5*m_fSpan + m_fSpan * x/w; + return f; +} + +void CPlotter::SetRunningState(bool running) //SetRunningState() +{ + m_Running = running; +} + +void CPlotter::setPlotZero(int plotZero) //setPlotZero() +{ + m_plotZero=plotZero; +} + +int CPlotter::getPlotZero() //getPlotZero() +{ + return m_plotZero; +} + +void CPlotter::setPlotGain(int plotGain) //setPlotGain() +{ + m_plotGain=plotGain; +} + +int CPlotter::getPlotGain() //getPlotGain() +{ + return m_plotGain; +} + +void CPlotter::SetCenterFreq(int f) //setCenterFreq() +{ +// f is the integer kHz portion of cfreq, from Linrad packets + if(f<0) f=m_nkhz; + int ns = (f+m_FreqOffset-0.5*m_fSpan)/5.0 + 0.5; + double fs = 5*ns; + m_CenterFreq = fs + 0.5*m_fSpan; +} + +qint64 CPlotter::centerFreq() //centerFreq() +{ + return m_CenterFreq; +} + +void CPlotter::SetStartFreq(quint64 f) //SetStartFreq() +{ + m_StartFreq=f; +// resizeEvent(NULL); + DrawOverlay(); +} + +qint64 CPlotter::startFreq() //startFreq() +{ + return m_StartFreq; +} + +void CPlotter::SetFreqOffset(quint64 f) //SetFreqOffset() +{ + m_FreqOffset=f; + DrawOverlay(); +} + +qint64 CPlotter::freqOffset() {return m_FreqOffset;} //freqOffset() +int CPlotter::plotWidth(){return m_WaterfallPixmap.width();} +void CPlotter::UpdateOverlay() {DrawOverlay();} +void CPlotter::setDataFromDisk(bool b) {m_dataFromDisk=b;} + +void CPlotter::setTol(int n) //setTol() +{ + m_tol=n; + DrawOverlay(); +} + +void CPlotter::setBinsPerPixel(int n) {m_binsPerPixel = n;} //set nbpp + +int CPlotter::binsPerPixel(){return m_binsPerPixel;} //get nbpp + +void CPlotter::setFQSO(int x, bool bf) //setFQSO() +{ + if(bf) { + m_fQSO=x; // x is freq in kHz + } else { + if(x<0) x=0; // x is pixel number + if(x>m_Size.width()) x=m_Size.width(); + m_fQSO = int(FreqfromX(x)+0.5); + m_xClick=x; + } + DrawOverlay(); + update(); +} + +void CPlotter::setFcal(int n) //setFcal() +{ + m_fCal=n; +} + +void CPlotter::setNkhz(int n) //setNkhz() +{ + m_nkhz=n; +} + +int CPlotter::fQSO() {return m_fQSO;} //get fQSO + +int CPlotter::DF() {return m_DF;} // get DF + +void CPlotter::mousePressEvent(QMouseEvent *event) //mousePressEvent +{ + int h = (m_Size.height()-60)/2; + int x=event->x(); + int y=event->y(); + if(y < h+30) { + setFQSO(x,false); // Wideband waterfall + } else { + m_DF=int(m_ZoomStartFreq + x*m_fSample/32768.0); // Zoomed waterfall + DrawOverlay(); + update(); + } +} + +void CPlotter::mouseDoubleClickEvent(QMouseEvent *event) //mouse2click +{ + int h = (m_Size.height()-60)/2; + int x=event->x(); + int y=event->y(); + if(y < h+30) { + m_DF=0; + setFQSO(x,false); + emit freezeDecode1(2); //### ??? + } else { + float f = m_ZoomStartFreq + x*m_fSample/32768.0; + m_DF=int(f); + emit freezeDecode1(1); + DrawOverlay(); + } +} + +int CPlotter::autoZero() //autoZero() +{ + m_z1=0; + m_z2=0; + int sum1=0; + for(int i=0; i<256; i++) { + sum1 += m_hist1[i]; + if(sum1 > m_Size.width()/2) { + m_z1=i; + break; + } + } + int sum2=0; + for(int i=0; i<256; i++) { + sum2 += m_hist2[i]; + if(sum2 > 16384) { + m_z2=i; + break; + } + } + double gain = pow(10.0,0.05*(m_plotGain+7)); +// double dz1 = (m_z1-38)/(5.0*gain); + double dz2 = (m_z2-28)/(5.0*gain); + if(m_z2 < 255) m_plotZero = int(m_plotZero + dz2 + 0.5); + return m_plotZero; +} + +void CPlotter::setNSpan(int n) //setNSpan() +{ + m_nSpan=n; +} + +void CPlotter::setPalette(QString palette) //setPalette() +{ + if(palette=="Linrad") { + float twopi=6.2831853; + float r,g,b,phi,x; + for(int i=0; i<256; i++) { + r=0.0; + if(i>105 and i<=198) { + phi=(twopi/4.0) * (i-105.0)/(198.0-105.0); + r=sin(phi); + } else if(i>=198) { + r=1.0; + } + + g=0.0; + if(i>35 and i<198) { + phi=(twopi/4.0) * (i-35.0)/(122.5-35.0); + g=0.625*sin(phi); + } else if(i>=198) { + x=(i-186.0); + g=-0.014 + 0.0144*x -0.00007*x*x +0.000002*x*x*x; + if(g>1.0) g=1.0; + } + + b=0.0; + if(i<=117) { + phi=(twopi/2.0) * i/117.0; + b=0.4531*sin(phi); + } else if(i>186) { + x=(i-186.0); + b=-0.014 + 0.0144*x -0.00007*x*x +0.000002*x*x*x; + if(b>1.0) b=1.0; + } + m_ColorTbl[i].setRgb(int(255.0*r),int(255.0*g),int(255.0*b)); + } + m_ColorTbl[255].setRgb(255,255,100); + + } + + if(palette=="CuteSDR") { + for( int i=0; i<256; i++) { + if( (i<43) ) + m_ColorTbl[i].setRgb( 0,0, 255*(i)/43); + if( (i>=43) && (i<87) ) + m_ColorTbl[i].setRgb( 0, 255*(i-43)/43, 255 ); + if( (i>=87) && (i<120) ) + m_ColorTbl[i].setRgb( 0,255, 255-(255*(i-87)/32)); + if( (i>=120) && (i<154) ) + m_ColorTbl[i].setRgb( (255*(i-120)/33), 255, 0); + if( (i>=154) && (i<217) ) + m_ColorTbl[i].setRgb( 255, 255 - (255*(i-154)/62), 0); + if( (i>=217) ) + m_ColorTbl[i].setRgb( 255, 0, 128*(i-217)/38); + } + m_ColorTbl[255].setRgb(255,255,100); + } + + if(palette=="Blue") { + FILE* fp=fopen("blue.dat","r"); + int n,r,g,b; + float xr,xg,xb; + for(int i=0; i<256; i++) { + fscanf(fp,"%d%f%f%f",&n,&xr,&xg,&xb); + r=255.0*xr + 0.5; + g=255.0*xg + 0.5; + b=255.0*xb + 0.5; + m_ColorTbl[i].setRgb(r,g,b); + } + } + + if(palette=="AFMHot") { + FILE* fp=fopen("afmhot.dat","r"); + int n,r,g,b; + float xr,xg,xb; + for(int i=0; i<256; i++) { + fscanf(fp,"%d%f%f%f",&n,&xr,&xg,&xb); + r=255.0*xr + 0.5; + g=255.0*xg + 0.5; + b=255.0*xb + 0.5; + m_ColorTbl[i].setRgb(r,g,b); + } + } + +} + +void CPlotter::setFsample(int n) +{ + m_fSample=n; +} + +void CPlotter::setMode65(int n) +{ + m_mode65=n; + DrawOverlay(); //Redraw scales and ticks + update(); //trigger a new paintEvent +} + +void CPlotter::set2Dspec(bool b) +{ + m_2Dspec=b; + m_paintAllZoom=!b; + DrawOverlay(); //Redraw scales and ticks + update(); //trigger a new paintEvent} +} + +double CPlotter::fGreen() +{ + return m_fGreen; +} diff --git a/plotter.h b/plotter.h new file mode 100644 index 000000000..2a4241571 --- /dev/null +++ b/plotter.h @@ -0,0 +1,127 @@ +/////////////////////////////////////////////////////////////////////////// +// Some code in this file and accompanying files is based on work by +// Moe Wheatley, AE4Y, released under the "Simplified BSD License". +// For more details see the accompanying file LICENSE_WHEATLEY.TXT +/////////////////////////////////////////////////////////////////////////// + +#ifndef PLOTTER_H +#define PLOTTER_H + +#include +#include +#include +#include +#include "commons.h" + +#define VERT_DIVS 7 //specify grid screen divisions +#define HORZ_DIVS 20 + +class CPlotter : public QFrame +{ + Q_OBJECT +public: + explicit CPlotter(QWidget *parent = 0); + ~CPlotter(); + + QSize minimumSizeHint() const; + QSize sizeHint() const; + QColor m_ColorTbl[256]; + int m_plotZero; + int m_plotGain; + float m_fSpan; + qint32 m_nSpan; + qint32 m_binsPerPixel; + qint32 m_fQSO; + qint32 m_DF; + qint32 m_tol; + qint32 m_fCal; + + void draw(float sw[], int i0, float splot[]); //Update the waterfalls + void SetRunningState(bool running); + void setPlotZero(int plotZero); + int getPlotZero(); + void setPlotGain(int plotGain); + int getPlotGain(); + void SetCenterFreq(int f); + qint64 centerFreq(); + void SetStartFreq(quint64 f); + qint64 startFreq(); + void SetFreqOffset(quint64 f); + qint64 freqOffset(); + int plotWidth(); + void setNSpan(int n); + void UpdateOverlay(); + void setDataFromDisk(bool b); + void setTol(int n); + void setBinsPerPixel(int n); + int binsPerPixel(); + void setFQSO(int n, bool bf); + void setFcal(int n); + void setNkhz(int n); + void DrawOverlay(); + int fQSO(); + int DF(); + int autoZero(); + void setPalette(QString palette); + void setFsample(int n); + void setMode65(int n); + void set2Dspec(bool b); + double fGreen(); + +signals: + void freezeDecode0(int n); + void freezeDecode1(int n); + +protected: + //re-implemented widget event handlers + void paintEvent(QPaintEvent *event); + void resizeEvent(QResizeEvent* event); + +private: + + void MakeFrequencyStrs(); + void UTCstr(); + int XfromFreq(float f); + float FreqfromX(int x); + qint64 RoundFreq(qint64 freq, int resolution); + + QPixmap m_WaterfallPixmap; + QPixmap m_ZoomWaterfallPixmap; + QPixmap m_2DPixmap; + unsigned char m_zwf[32768*400]; + QPixmap m_ScalePixmap; + QPixmap m_ZoomScalePixmap; + QSize m_Size; + QString m_Str; + QString m_HDivText[483]; + bool m_Running; + bool m_paintEventBusy; + bool m_2Dspec; + bool m_paintAllZoom; + double m_CenterFreq; + double m_fGreen; + qint64 m_StartFreq; + qint64 m_ZoomStartFreq; + qint64 m_FreqOffset; + qint32 m_dBStepSize; + qint32 m_FreqUnits; + qint32 m_hdivs; + bool m_dataFromDisk; + char m_sutc[5]; + qint32 m_line; + qint32 m_hist1[256]; + qint32 m_hist2[256]; + qint32 m_z1; + qint32 m_z2; + qint32 m_nkhz; + qint32 m_fSample; + qint32 m_mode65; + qint32 m_i0; + qint32 m_xClick; + +private slots: + void mousePressEvent(QMouseEvent *event); + void mouseDoubleClickEvent(QMouseEvent *event); +}; + +#endif // PLOTTER_H diff --git a/plrr.F90 b/plrr.F90 deleted file mode 100644 index 860bab45d..000000000 --- a/plrr.F90 +++ /dev/null @@ -1,43 +0,0 @@ -program plrr - -! Pseudo-Linrad "Receive" program - - integer*1 userx_no,iusb - integer*2 nblock,nblock0 - real*8 center_freq,buf8 - logical first - common/plrscom/center_freq,msec,fselect,iptr,nblock,userx_no,iusb,buf8(174) - data first/.true./ - - call setup_rsocket - ns0=-99 - nlost=0 - -10 call recv_pkt(center_freq) - - lost=nblock-nblock0-1 - if(lost.ne.0 .and. .not.first) then - nb=nblock - if(nb.lt.0) nb=nb+65536 - nb0=nblock0 - if(nb0.lt.0) nb0=nb0+65536 - print*,'Lost packets:',nb,nb0,lost - nlost=nlost + lost ! Insert zeros for the lost data. -! do i=1,174*lost -! k=k+1 -! d8(k)=0 -! enddo - first=.false. - nlost=nlost+lost - endif - nblock0=nblock - - ns=mod(msec/1000,60) - if(ns.ne.ns0) write(*,1010) ns,center_freq,0.001*msec,sec_midn(),nlost -1010 format('ns:',i3,' f0:',f10.3,' t1:',f10.3,' t2:',f10.3,i8) - ns0=ns - go to 10 - -end program plrr - -! To compile: % gfortran -o plrr plrr.f90 sec_midn.F90 plrr_subs.c diff --git a/plrr.exe b/plrr.exe deleted file mode 100644 index 71926963d0285a7370f1ce030a04cd5da8deaca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382548 zcmeFa3w%`7wLgC5kz`0FoIw%<3=kDG{t^|LsKErC5GDj+U?w3GUjf^z=`?Mv)frz+ zLej}-PBsUziq%_fL1;@`YiUdS3qD{bU;>B|9#vG7h-goow2i<`28_)AyY@LVnF(ln z`@8r5yPx03z?pN-eyqLr+H0@9_S$RjiOoqxp&|5-EZ9UweRHq+t=>8>$~3Euiu$_kMFMBZ{C$VZ%I|| zcfNbaomXULrcc*Ef6aT>Z8Ne3apcm858!=%`gk!H_Xn=c5U1n*^D$$^YxsM*_%qyJ zPfr)8;ZFH3#r4p&={#NKH~-B;VWTm3+67^e&L9}8R+Y!%dIeFJp-UBn)u6!bIv(7+ zPA>=+Jgz0G*wkmd6Mg6}b{B*cH4b5vlD|+s%FOTa8wCm{UpELP{OQYon%5bGrC**T zITm;}sHi80Yj0P0?|i_E=l>-GOTvrls^J&Qkc--1anBuJ^L|Ybp1&HQRCk+p$1V0} zL+BN1GNEG%3hhO@O^Bs?!kp1-_!dR}}b)0$)+!D++u?fv+g= z6$QSc!2bXWRI`46e_@roM!9E#Ao%-@a>~T#$^@rUbv|Bq7?oQwAMUmfKO2okyX_Ie zxQ@-KczB+g_V(aBqNY#=ZwKGB(xy}7qc80w^1su<|O zuU8Pa@ziW*OGprOLLk_vXCZOhUUrD>Yw6@cyAZV7x?fH)0iSMrPbM--_Jiz{oGBng zsy;;6R`hpI3oBU6UeZyia>L^&>m9uStB4-i~lCMXq zJyZ!K4<%HmN=XMmR0mn#OCfU0*@{}7_tXkbIfPdy>Qy>d5Z>jOpmx08ht-6KGLPZm zZJwMGPDDZ^0d=aB92grAlbD>6{6{HI!fGQ4WF*oM84>?yHD2-!_nrJa8s%IB*5Rlq zJF6(Ok$qIV9T9BabQ6klDy6lt;7+5kNBcv9mi`T3jqbqhXQEL&2zA|o+wiE@%Yi#^ zch)hP-d)k`yMcgYKk08gDR|TBb&BmVy};H`qL!nuT?zivdfybrbIl-QRw!bcLE-$z zAJKa=quJjE3}j6~*7|Yv`g(md+k>F>Hjvgohkk{|EKdiTMX6Y=r+OguTX?EB$}*wo zsyBks1c7B!;>u|D9moy_&hi8))A)F%=O~kci)JrH63HHkftBpT z^(NU7an+ma&w;8!a6EB1LwM4f%inK8cP9&xY#(-VEKr3uSi6|RPj1aj_ z61Yima2r){ooHsXugk4mGF}kY-3_5(9W3thrFW;$Gqv^XtG##<1D|T;x$Di!&G(}$ z`!I-wv?l3l%O~@M@C4~@BXbN(-!rl5VQCiP*HgGVnr&W74eH6AXaf~Yc=1@;Y=UxP zu0inF=;;(a2_FE%<#!PWngc;^hR4uM6gMKh5(T=^Yypo>R9WUypv^*TpTF1QKPnFOgcPH{ciO(A*3O|2i7#*Z;H!FH3dknt zJktb|!Kr+}>0|0np(<15rK^by%ZTu+V}JEv45b@v=HFqWP~NjlRc`CMH4wi%*Azmh zJB843B7Zd70?gR}H5WVM-xak6kH0XqugaxZ?gOT32x?7%3*?5YqQyhvBi8{E-DlzM zpVQy~LQNKN>)3h|a zuj7TG#h11W7Z2V4z2@sL^5vHY-u33Rr&`}FxyUyaq1j-JF5N}=EiIQE!{L;dh)ziA z{d3@5UqM3sCe)iMl|Ho{!lJk}m1U|GEaesSjRRk`PiV8mK`{;*tUp{@JOtR{!*8H% ztik2WZdIGDg>!;VuM^ZZTt|#C(wx+O%x-eCt2x7%&Sn{j1Nc(L*(j6fFtM&>wdhhY zPEqeFeC7aCHf2mlv;=l z`+khxmr#U;zh4o&3o5*0E5yJm(6(bHx>NWrw05>4QfD6ke*QC2?^HKJK3~Q04Gelk z{~4V(-G9d5P4S;G`rIA4l(U_jyVq`O0J|>ag za^_b^?Mq<~WQ9f6Xlgn0INrt98Q`aN8*TF-=Dq35m-%-_IfTG2u{E8dHXzC$RQ!<) z@sU%=5uG0JPPYkcOv?wo7}8o!ttBvl_whTDo9Sjyv`04BB&7d)qMR7o9F| zz)hY%$sd_0K5{eA17#yKY!EY^ax5|^%N`)GroM9ILfCu?yHN|9#lz}N%3UiH80}Iw zLT*C{vVlP-5`&H>1|16qP2i4L4br-8M#2@)D~R{{(LJcdgC+_CEX!HY&#-?5`T~N! zN`ro14EpZ@E8a;s?rZ;P=wfRVhM&HB@WU~!I}6s*e;SrIfexjF=`oBgM29_T8g%re zIHqFj186Iv^zn9$7Gmq22m-am*4y}lL2Rw!4@R-|Mm)s(B`7UZJN`f`p`MrEf!GNu zcWGg6HSAFeyG09|tA?$nuyQTz3N`F83Y(>cO;*ExNMTd8uv9e+y*;R;YhlMzd8bC=nj>I3&b7&rn=s{(Z7WNdvFwoLS ze@u=3DMde~ML(#9t);L=E$mJ;Y#oJtQwwwPFff_imW-%L`94DaF`~~AvBOl_N{nf zTnK+dD{Kib%(I@_u}TXojv;XWSqR+u&m)lTf4~G$^*4-fq$gz32)}OWeCV&ITmC}& zy>E6P=raa(`L0rxF5V_{F`{u5EKywENNw@Q@2TW@761cL-*w1*O<Fp0qeoW(d}rT5SC;Ui$ux5|-sz2kV&7zO&^6n%lB{Frs`Q;IVGb+n;;0 z>sn5~joC47?+HG0UCSw9iZ5j=GSd7FMP3t#imjxikSq?og@+hBjqk<_VM2p<_grvI zf>fql+Y!KXy@&@Y&3A#ku*e#ebW*9YPAWCAvfSx=rLx?%!FGrLh~K?tX_ zg)_Cp^7o76d*`yfOvhZtI<~-6CpjWp#v#>-pUDfG>V78a0BeR&1RkRV)sZ^MWr7{0 zFa1TdFMKaBKpr^C7Eb4BGImP~r?Z8*Eg$Udjz%*=Kp{LS5cOu$=x(v@_lIoKH~<0+ z$z^7C^WYA>_sVrdW?PKjjniUuprMWsMyKU%cj~*m?X1DRV`}II;@W3wxA@)f<)9{K=igsBA&VKjDb@ToZ78=VF`Cf@=@1zv22d!nWbcoCdhK{(@_1u1yHx`ZKPpkj9Sd zW?bt5?>*e3xCEWvV9Y+}Uy2r*ns(0U|LQ=~nDh*D=2+1(?!0q=9)FIo|HGiH<5O(H zVO(9fHsShrT&=k7!gUL-a$K`;O~sXtYcR(q9L4npt`~9r9M=zV&BOKa1;~%91lRkZ z?`~Xw!bQ_ab^a*Bbi{QZVn@ktie_iQW|7Zo7iF=5Bj` zG&&z|5xm8wa_`v(4*QhD4(0H7B8TxjCHJ{9;Yjb`4x2C6EkMyS&<=J$pP4F}$OnFSlu}+4^vKtWR89=JJ z=(<7FSmHs-T)^-Mc{VbJ^%5bjLI4cM$@$g#sgho!KS(j^os0?BW4ORHT7J-s`5e1{ zm@PTU(hQ$k-$mSbceL8VY9cHRgf<*6D?ZflS4dTVx1|D!efwY?iA~5o&A`ahM)e7C ze7IGMlal{u8w({oJYC^-XG03uw*Sa!~l-t58xP(FOKEL-850buAt-dtNfN z_zkg@Y!_^Wxi})Ww&8K`kzC|3dar8Ub{-ydzC1QRue~Cr`Bbhiwab<=Jv^rQRKCxM zM}hIQ(?65=y+(2W2B50VXl-_5L-8A4V^`@^0hpdw zB_5)JBFtA4=Ik~92Rc~o5g+en91IgtGH%D)%$sv@P25muAF<{vu{Xq!&3pDERt-5Lr2GEyyfpT$1x1`j#r`A^EUozwBDG}S+A2?IC#6+schcCIT<_z>#f-Z zHqtA>Iv%F7QLN$EPH;l=DZOuUrRPd?G5!Oddpt2QX~3ujlwJH%%4w96evtB;2`LA6 zSiF}E{eVb~KT|xZLC2F`pOjP=kJhQt(-NZDJ&U%GncEs3^*A0ZJ{qW6t&e}sZc(!3XyqJ#G?TSc{fj^ITG+l&pB^o>+y8;##IM5B*+Y4wg2o{?Ngx}wAmrdw3$>=v^bACUJEhKAZT#|E2Tt5*8T0yX{-~Em$Q})C<%*o6QSDBV&esrgC_&5X(T_Y zDwStCI2SPcMCQn1)h4H_QYk_{wm6Fxyk7HS9h`Rnd4X{9a+~l=T-RTr-s$~K?TU?{ z7*AUIp8-}F#jC9Q-Rve~&6aEclwY|Cf`yeWlB#!L%~YxmO3o~65Cm{+ke;PDsu>!& zdZ*;r!2HxR2Y28#0=)~*P`EZJzbX@;%iA~g{}L-q3uhMZ1{uF!U=7wWzZq%ryTju! zA4O1pw{=$?V-#ozwKHnH=2JQ>Li&tQ35JV18x2zRFsnYv=H|^Hp*DwpU;@OPkJ<0}YYZS}>;Rl#~r!`vK?VZf3dzs@PavOG6 zNRES&yVAjdfS?TTN5g=0FLmoxeF?#7+F|=0Gm)hBs`* zoedwd!1G8dub~u%kSr4luF4vesNB4enhc8t{VJ6fWC}oDa`a1_Xwpl^fOOw`sIts4 zmmLS4a<#=J+s&0uM159qOv}a8v7|Wg0U>Q65zQYxDa({46;9}Eml0#lqbs_1j#kbW=l`- zHj`fFO@=pWCYwKm72<~XtwHOqz+lrfrUtW@dD{H9#NR%lw(xEnl6`RQ7Op3s66L-H zAQ7h)8k*Ct+fVhSKed&u(b)?L7>{qdwx8Ac4$qVc3uRm2{rZZ;PtHBwmbEs^-U#QOp2i!}4IFjQ)T!IC@@hHprJ z;Crr33#B_Z>sCp%57Mcu?O#yn}saW5HS8 z&RhB5x`b9!tz5-*hvXKFPzyGVZb7Jo-~mz`$_m4` zC-K0-JmQlW5B#UvnJo97+Y;LONj_))f3ux4XaEeS@a6@N$N?IAD`}8$DOX?!reVJe zLxXq9oEtD|`X&tV4ntZ8#@_i^6i7a1)qB{&0_kyLHfCRK*a_*@yuc!(@kKA5c4`k!C|dIaZL!J%zkpnmPhz_3uZU=uDBGn=+funcP>c*XP!Dqlbm_&YA4irjY}jH z78?V^*8c#~FbkIcQV?>nWc@MK0WJl!1T3~5!rdP!5?lAuLsTcO?4tOxf-WH!RW4nE zngU!Omo|?-k2u+J%vCQ`Dpyu<@}Zg}>4H$l8B^(VEC8vjcryru{TNp-+8I@<&78^{ z9p%R5tN1dpXz%$3)& zn@=fRdA!1Bk0Q}J_7YdGPh%8;jKzviJm{1m66^OORfG7wLJ zsWA!IX^236NR9#N`vuBHn216v(K@FK32ahqKYVK4U(b;Cs|wpO2>T*-iwzIS+?2p>=jO*mcEeoJ zK2Y2#u3AcLtqQZwDp~;iCpd58Q|I8kiy=ZZ&ifN^KR4$&{|9m2--+{HPT;)n@zL(T zU6lPNInQ?z(-oLtgUp==8>KrB3%(FI#XS6CE0ofTXKD}ZRNwS3nsthbG(Lp!xViX$= zU&^X`0{eZr80adBdsa-ObfYDn0Y$XbX##CvM4-jFYItOf1WW@)>SI{azqi1fg%cfPHnPgw1AK2H{CMBv$vc0t?#WCMWYm}8|!Az0`_{e)l zQoO(MFzn&*ToYz<>xFl!s$rF_`3wP|d>Wcz|>+ zz>G0Jgy-_1a#ban6H|F|syuTEdHMkYA376jsEs(#?r0KGuBk5Nc~wdnvs0SPc8h^K z!4x%B$~S+e^;|DNUP2)02Ow7`fjoDQ{AA)dQ0gC!C2Ez=p4*`Tp6;N#ZzSkjk^rdo{Jhou_hv^pb)BD2a)tsrYJKs?Nn# z>jnD*byaXo*XI&fu9&|AxoJNAd9>x@BN#ZG61Q_mJf*Us4X_<1QVh(sw_J#+&UXL*PM}Y=MA+)*=8)Z-&-RWJ_u9er>g!#BAj_&mC(XRJOY{FBxD30#*zD2ugZm zE-SMM$L6YWbf@lKW826>K>MVA;^2D#h zW8}t7Cw?v4H#wQZ0vk2#(NDn&OD0P*nJkCB)A_tq44e=49eSABnaj6yS~s?-(^E|L z;7VPZ2lzg*d5>i|W+8DuYkQV;m*hCvT$Jn0Y+tI=l{TNw^$jAV9agl)NJ*~O+&*v4 z@8*}}`iAh%9wu{`yi_#891ZKQ-NI}|`+D;`{Xs)Gg}aeRc8k2oq_+m=Yn6q{31vaP z8Un32B(5As_il0J7`neL%6$gRW|YTPtJQ*RLAAudY7|rBR?^qS#fv*hyj-=2_fCx^ z+n*$}(&&{Lr^ALWG858++tA9%hPIg7&=wc4CpUpotX#FBE!I|Mc;XZZDO1tsBzFOO zm?vATn$g^a;rls2NZ0Z_wu<7A80HmDc~#UbF7#Hihhvts`D96(OGD=zvZO683}5X| z8XG)(le~;zEBpEN$)rsi{PA7qKVN3~@^vFA}^X@lcv0nMTi%h+xuIZfV;}5(&KTPT>7_ zRNi+N5YkvYdBSWM3iZVqFbrQw3fI(#wIr-6m0V0 zPc$|W1Am4z8^sPk0%Dj7fBQed4ww`FV_vxRpW%gTMtEVARh62=vz6LA=fjbexV#0t z?*A{gH_1APv8DpHj|;lQB|i%7G(=dpgonnHT|yohX)Y{5QS`#5aU>BJ7qn+t+OkZx z;_imO6T=`S#mVHnrtgY%t+{idMzYX9%HXyM)WwvI2~4WfE=` zdCedFz4`TA2~+ADP0}h7K&&FGE~oBK1!14cfJ5A^h)fQ5@areWP~8bOX9$z1Kxcz0eNKHJSsFTlx4wpalmab)C_B z5jhZ2N`^?b~|dd`(1=GF5tR;$hp z!vaild6kbOr|3~jLDPre+5TyQKB`W-kak}^6A-@oQfFAf&o8!i2Gd-W#J>Tg|u3@br-+o z%^QjE0n{{_8)}|B-Xu_1;fN>De0i#p60q-8aIcBDH_za9lQh8#C&(PxZox{;$(>XI z^4>WglA@B&sV&JM>~JqMvGPS&dlB?f`6AM0a-_v3)hP%$Me-Jz$~tMW;z?AZUZ_!4 zVwp~bo0IGn^oPYUJok@=1Mi@-oPq8iao8E9bOOTF$<9D0Y>D`LNHzD|kuZ3ySL6RX-GP=AbkA3< zs7s1S9y|bfUYNgEbqz}L2BO%C0;!^e+KM|Ufn&th-=QVp&js3*XpTO3yox=t0pSUb zJ~`BTODS2*(T5hNe$NdV)cQl)!MTDjldWjLriA5P^QQ{oo3UM6c1(n$NET*X<>QE0 zv@!jBz@jdrQ+|)p1$`(sBc}aQP<`PRHR4%J|(QoOg39+%7Xj=`5yfePZsI>X0i1nJkeXO*!m7`sHM1dj2~`&RoL7C zyWJvx{VX15R}YJiqUD5^g_!O!t zi2XRGwwtE%{py2!f@k!8y?HB_aK4){0o43+ujT%^*J;QcDc+5miGkZuOn~9 z`XW5=O7`7|rxAx<4jc}>{O(o)E%BQC8p+j3nK~iRoFJTTbxtPnDVlQZG0MPK0<%%e zQOYbdT~cO?cm>HmF)|x=b6LSv7xn=InmTjg6`Sc|&5*0TQK-G)f8((*%kjCg zs`JL?%4f}oZ~gK)&}Xm!cv=(0&vXa|^sbmagRcty7teSx%UC=jZltCnOhzyVj=LZR z-tB&vlpFdJTRVo)nB@)V*1Epu>DgiKwu9e5Yh8)Xn_Ys_ONPq8letLz+!)Neb-r{k zwO(8qrZ>HhPA%wwm=&S}*v< zvWNSTjJn(rq>u6DRWaVo8{y5=(Z1uOSZ(r(IIGz*Q1YtPy!>2%RsF;31-HZlRpwM4 zd^FB#ze3H<&1y^k$FkaMMzGq31XkNJ`~M27b(iz8FV1eUhNgBU7J!h1d7m5G;9dz< zNYmI4^ImCjN#CWXi3xkLj!;^}ZZ5&L4;RgvjMLimG+lBR!fz5?^FAx$xi{yEln$^C z8h8_+hx!b~JDcFlip7nJ+<1d7#vGFTIZKP?7e^X?OMn)a6o>9dLaDq&MG^8yFN`px zieleWr{Fh8>@Kgu6M6@A3$c|}$x7f#*#YAuPKJT92G<&Fs!*(3sZbnnfyf^t5@%wF zts$iDTTJ;mlY-aL@y}!KhOW67LCYJYyUl%9BHC< zt>mA21^K65MvLFo$1sK%_F=K8`k2_-PN^Kj+Rmi~IOU)(LP0dlV5y~g03IZO%KcW4 z!4|0{?6VU2?1zxZfc=n+yYz7H#{Er`SwmoR{>y@=19YFCc!neXA8w!sFVMk$mi&Pk&BPrV(Wt-)HYt} zy<#iFFcz=0*h-@#_e^E{A;o(Gd8S_HKSiFYr^qw)R3Xmo!J#dU5pwDrj&WX0*zpF| zn$?CvKtLJ@nO%W%YB)=68~CUsIHjsX6G+8(yksB~#*JTSv-`%weZm){ikxpM}7i| zLLGi=EkrOpQt!qMi}g}jQC}-!{E-xKmlbh@>UiuVapmPaworU@ zIv!->tDL8|t={wk_OewK)v>nCc&d{Y+UnTqKk>(^xqW$R?uM)Uk-`-P@my^@*Fxl4 zt>&siu4Xk?+1$S4)To5f7AOE5qfK}ax3<0Yn=+wqA7aIAMtcDY@kij}SOhOJgrSGZ z#x;1LER880(9Yq@TGY1zcX4ZTKk~+sLoK4(%SIcz1d^g3QBv}kEkbMfSeetTm&&lB z0~+#D!^_mDTjEjGi24BmrHo~2Y)L%U(JyYxauA9j4z?|DxKr3dr?{=k=HI247INU* z%&&d|5C&|8E*dOzLh6wkj@15$?f&!RR}RDUfm8GlCPM7%Vwr`kV;ozWGM{X|E*C4u zyGya|gTM+@)z^myGRnFO*-pdW;@$UM{^jF{Fquj<5vr-+D5|A*fm*_J_@dD01R>Jf zmJXov$;exMa;}6e2NgvNq>3W)+U{jer~l~Zk`pBBL7!RRRBq+pLDBWcW<-Rgj%)Z$dN1D!kBG#YHlPt3;V>Mx=j7 z7V6l_S<7K=o~`#`^Fd6tYxo| zCPY+$$yGeD^?gJpC;@#mFPo1I`rnUD7r8)bGLjI9dnC9$&?NHAIx73NT-djKu)zA5K z7w04H%Nte7rYjRE$jY#VB!GhF(SN1;AaOw|sa6CPtUUV5 z?Pi)tGaex2aFq2fdW&7$H*)f2wZgOEG&e2Vrnj}5W zCp!6tS?vIHMVIW>IV+V9FQI5I2O}V$HHs}I6UD8@X-;KtIkp8mX!mQIQJi0Vra=Mx zO}SmhSrC`zqIuUweOWkZqDkz+BLyv{FmFE_>ezvKK)a=VYWwc%4)~_F?($A(ck0@g z>G=Cte^Br5(zovN9kvF;DHjC&hoHCkput#bx`6`@E_;Pz6>BH}-1)BqM5P7g+erXx zl-tyI6r0ikrVeU$oj6so-r(=Y;iHNh2Cp3KY{TI$f->O-oI5E%Bi6~o10~0JG`W5k%5MMn`~^Bvs##a5NaaN@veOs3LAb8XU=@COn5)^ zcI~k8+v|z&VAhFm+lLQbxa@FtY`4G8n|e4U4+)cZ?`!7?z-D_a3Ew&ZO2W6AAY-Fb z_20e>-+{C6J^qFGzE>MjqH|*SzGsgd{^#+{1$~KAggagZn?OjZE}?J z;VljVff}IEq09jK$sJs|@ z-wz%6&H$x7x$l$1nKnRy2RL%@aM~AuO>}TmwkwneuHpSCkm3|I@%y3oLx(eq5(?-1 z@lW7iGcN&uwT<8VzlndWaNrO5;8d;ze(2z_V+#`bpT|G&#qs|B5;`cszN3Bu4qSD* z>QfZ=GDwhjF*0IfXxsZ*&|!|Jch5p zkvEn}h^@v&2AgSB3yWTNknH06I~HZ$z@BPtF)LE9V=a6D=mAR~iH1H&#qx=eD`fP< zR;eNh38H_eSX!!z$Ae>3SgUEi5$Zb+t7g!9nm_)W_TTe4$mk^FkOVq>^T(fkVG;|H zVA9|G@z5708H*&jl;p@4Cdot+8ztG6kOb!;JgmuduY+ao!FjD9GxjrZimT+V1-Ug^ z*QcELnNsj|kk1}LQ>!bV%hh$yW$O6@v6CHOGaB=K708HjL zQJaXZzd$Nh(SXgnO_&$Ca@cM>-rHr5rmLZ8Y=NctHJ_g0{AVns!8qY=9!w(P!38hWSZtx`4Wy%OGs_IIR|K}2w`U|M+SjY5Ey^SrI)7&<@%J1 zk4XGU$@v;#VjMcOeAxx+xtMX*=MU%~>mu9eFh{Yq1^BGn@Gw8w5rdSeJ##Hy+Hj&R z1=3$_r%6!yV7*kPV_&McZ6^!Oprfhg2m`b)A9>WYz(Hu^xx0j3$}~sl{lWwsDzdiW zG!}qwC-6Tm<&w5d$3hf1g0qIK*I*59SDNPP`KH#PL-AumP@k6mRuqpV0DojfTc80d zSVLMDzptorzXXm4eUyV3fW@sc#ezJ=Z#PZ~1RJvbk#w)6t#t|ovjb&Vw>TIc*QLG- z&0&4pvyF%mxBiiCv?Alc25)&y6W-jF%H33K7guTHI0K(5R*M5-edfSmjW=UcZqYnz z)Mr@i8Xa;VoWp=&Q9e|L<~AnVkSNG(EM<}Z>&lP zYD-Fm(^gJv2O~qb!ZFC~Q&h+0M4QmGm?%fdMweGZ1>Q;tfB`KcrQzUTVz+jkyJQag z)H|gW3vuFB9Q*Qo2_HV%QrpXQNL^ks$M<3V9G6@;Te*dg942hDP47ybgUBx9Y^dPo zO66%_jE032Smqn2VmtvDYlU#*6EAKwJ?tiC!fEIQAm+KwC&F=QraF+M?(f#%xyCaW zPw-dLCh$M;@M)FaE&WdrqjK(rpUI>eRDq~WvCVI^hY!V;^Ua961dMq4pr3zIWZCc07p7k`J)RPQ?@NcV$YxO zQ(vZBfigM{7oI0PjZ^dwVF&egXZ>7dB0||~p;IOV?5jjT8UpISrqFhNHefb5@q7}^ z=HD^BM){FSWWaya|M9RJQE&4oQ@r>@@~(#1NP17`pDd$>PW*k3Dl;LlUu-=~0~Z5nP^OL2P!?zQ2lSR9*Qz>%T(GWA$bkiv}!&q@x@^&(t{ z@L>orb$(6h0nR9RD{xB@yq94XAC3Ad*FOc>%hK3bHr}%d`G{vU(26?wJJD!G&DtRJ0Kt+PI{&T4BU)>(Otx63F}?TheS8kh3+z?t~ww{?dm z(>Z9RzBJwmYq!TjVDE-rQ@fo@gLwM)bcaW!kA<9-9&Lx^7NLF2b)lvhaO?i-LgKTX zH?q!T5kv5KdK^(%$HvqZCuYIh=sfZC498_BB|bYXRT=5magOJMg42bzzYO|y90|m` zNYqrrdjUfR7vWDuAQu|VICnE6X2*iGkDruJ>ofk4!KFL_J2gAR!y%Tt3>P62otmG2 zO0I&U!G_prIEiW_BV;EZ7rW*ebQj@#JKSj?vXH6aQYz36L#2@ zG#HGpRamG|?jcnM6E6&5ze2hyWdnY}+AihCJXIa4$g7Tr zCc*7gibmkw!U349K^)C4uE8nkakWF^9!^hxf0k_T*QWO<7{dd$6`Jd$adpfw$f_+k zBoE_BggH*vNqTik-0_XNy1Jo0X3q+p#%EeWebWs4>Lg1H%Q$#yFMmHyNE=9kPt{f7 zACJQy1aQi4PSEBw{H6mxx6?YPS|DV{u&X{#n<6W(L6=nRHr!w;SNB$W4r9!5E2W5m z-P8>}IP7-1UD`qqP8TG-K*8Y&$T*#3H<|iL)HuvIBfE}`tHXggXiA*gf$C@BFhB~% zid@~dg6XoOAJL~Vh81B9!>C>hPCyyehuxKKr{q(Vn>pZ#^j!yPX$UD)7C-@ptkFbI zkktXWT3LX*KOI#>^l6ZZ;Knj{X%BIN694z0dKfbcJty%H&9)&u+FuVZPvbFeH7MaB z>z{#OqTucn%0YkOlywvczcf}o5&a~q66jEW!5v1jXivN!#R{bI4yxtN_2dA2Qh5bQ zK1gldJo|5S3ts<8e+} zlE|&ZNg@ZMauO8$WDfm8NStM8KA=6snv&l^U$7(W75HL}*&5us5v0MHjacM^_FtP7 zc(-wk_1$gHBNRc6uwOKe#cbh#sS7PvJVb`$nuGUfVtv2Mn$-H%u${{grDH=n_2T_Kpq1h^$(+&4jA50$T`ck#Y zJC$#9(fKCO;mHO}@*hlD;NLY|>P^WHkq0IGm6{5R-@4z#_U6-?)i8GTU>L|rV_Tm` zk;O;uodf3{)dkDvCW1F!#*ZbHD0Mfu_fC4cxIpHm3#lORETrFDQmRNyW%bd4`@E zm&9KbyM=@ujYtndSFDc6=7~UAHd|;T!Qv7$)EG#8{$9cs7pd<9{Jn@Ro{4wp82tt~ ze9TlGt@zsf9B6%lZz|Xp;~5s+47<;ZdI#uu4~u=3WiTo7!WYAS6Eorr(_IX(s~ zf!P?#xK&Y1e1Q!2`cFu2x8MUWzVTdg3@l&9^tVdrv>2GS!+phvrG9kQ0cMfX8Ax_g znu~=7?dvF`+6Ob}3iwN6A^jTE-G2&8`w22X>T%{GD5>a69<+Q;2W;E@V?QX7G-&Vnj972O+z;EERFgpCHDkqO~3IB$~B zhSATFH5fAZ#w?d~RMXn+Fvi`?Gl4EDLs6zQHj~+m;Y_FU3?k_R97fiu@@wLiQ{a{7@W8TUYH`rhe;W3q zEyQ7T%(mK=R885q0`eKtA319-Gp?Dwp11$Rs(Jx~sMh$?M>5doc2b#6GKBFB9uxL^ zj+4f-QlnG`62#jqA1d*stV`$tDDGxmMu(XzfnVbdAGB{n-I? zR%rSe9A^d_$;EZdsow$;VLBk>zY+StP;7dFrZM0M zJW{s-ZyIx=Nw>i2tU^0*R5t$yUW8=_I4mY;?+27*NGd>8-jKNswxXkFu=G*my<9fa z`n*uZPSs(XY+e3dcBbyY-?dQxYtaKA)?IvyKI5}n>!gSDvEZH21HJ6bfxis()LpF4 z=w1%>wT?c~6vI5ZydFC6*MD@_-)r#Z%Z0qWExA-^{u}JbfiQbRsx|SV*p0@E-v$jc zUb|Jg(WsTiW?>3$mBYd|LUPS|LTTHj^vIOtU67l=g-G7b=%#(I7t{#-t@ff}_87V(zK z=Fb6N;8?N6rl&9737Jcq9TuA}-VJ?Wv4+52Dt$hczSxwplM^B_Oq zRgaV9A}I}H;KQ>*jZwv_xV4?S7fDx`alCWb4`^)zCy0AzX)|Zpyg)X>Cn~^u*)A0> zlAbq`G&T?BGwTGBY5Zj!#87KM`@ow72RcE1Ko>mEsZ1f7@fYoz45Jwa`Dx>Kdn!ze z^SEizRmk&~czq_09)OlSIPy$KtGnSUM{qH|(}rof#nUE!91C~?J{r>udERL1hT;R& z=LW&MgbgKpB`vic-U!<-qGC<-m9()eTm4Gfjs9M$$AvI*mbV6dd#XIm(1vT22RVvn zjvj9uO@yoEX(oA}8Q)vHS9u8}09;_{CfU6b7;yQDDXK3mgXXA4=-1f?G@|)Tps*G= zpa$}{7|BteWcatL@RfV_>oF^8Orr(@NT>1xlH~lv0qcGY_^@5zBNLsY4XA+U@6YAr z!AdN?`A8Q08YM87u!gIoSFBNXs$&VpQw*f2NPKPXRz$!BajZX@;vM6Uriy_p5E5Ih zYkpmaJyhCq9S$Z>SdBa9a-At5!MT>}H0_3c$#UJOBHXaZ1%qq4W}uA9te(s8fA_O0_`?tIWZD11ojlVa~48-qXqqu&l=p`rT!pv zxo8HoQ9 zWGd$`6F#^5;a*_aXey5QOv}+n2_dpP;ar5_z^;Z&xAFr!uRY`l?G++U#M-iAo=>4< z??D^d3Qz5OKN>P1GUvI_4>#i{nBiOF5wlTaj4pc&_YbrSog4AOyN41><9 zery73mE$D%VQzEj;ShnF5py!!QpIfxpyx;AYNgVNrcs7DM*O1@eA$t=r;1P2tasgL z7gfw1oT!n(%mkd}Z4e)!2EiVg+;*F=^$t9PF=U6L74L%K?sptCwD_p^`(!1+gbN0^ zfn~6(kx8yj!tt?KCa#m5^hKOuyr<$BdMh^$nuV=*0%~|8dKQPzP4u9`kHQy_{;!|I zX`=swuJv7>Qfz&Q(>NV_)2Ww5qGEuI9kI_F!Vo7f5PXtNcn#NnTp!^=ePOet#SReH zseDHz#|Vd0yiWOfEWY;K@elKOS{_Bo;OaUgQ;m~q{<>KH%g>#^T#cv9%4D85_5}|$ z|0O&g8)C>1%!{a0&g1Elt&5s{(aiaY7VP8gmvugGKezJZJtRr+A?ua@8$j`e5|Ah= z+fT+ihomThZtZDKudpX||qI${z~2mH>DrKDmc-BB5X7rb!gE2WOPMxx6P+S#eoI4~Qq_a&WuFn?t+SO&xy# zO3?4{?G`)*mG7tWh5!&0f~lqXR$vX0PmqYEb@ygCm3LI=;oN$ohqeqm=`+alxE0iE zrc>i4N=A7Tj9O3*v5v0yP4j=KYyM29VyzWNbydu2aeQu=fFD&D-~8}SAsojn>!9T% z6-hh=l{ZsjNLHaE(_yDFaU#rm5@ice}D)ixEq^WW%#k?{ms!YonZtwX-o%*WHNbT$3_QYM7QrT%$ zl}rqz7g^*7qt^Y{?HFyEDr0xrVxzyySc#@_DVJQX$HvHv-M(>U#YY-GLMNqsIM9dA zKI3X6isJ2#wp)oY(YV__WJCsv4=mD z;5X#E#v07%^vz_o#~>-NA7p<97C?qG4&dww_CD6(#g&zyGOw6qk#0i0xVa}riny|( z_Lr9awWy$5`5t<~x|iW@!H>5ETVK7Y9p8;>U4U?zZw~EFp=kPZ;`8b#g4XNR<@(uw zyc_SnEUbt39f?M#57VOgHavlGA>=3zb|oPR1}V6f$<@PHSAO(*l67#NQf1vXB!Xr& zb50&u#{1Tsr*QL)iH*(Op8o|zJgt}^#6AJ>Td3gB^-y>0iA5w+6&47=3e~v^n-cuH zP1^TX@I7m+n4jj1h+<}tnej2ohIzZhA215C8=WqGu0@p!+pYWxQUOwo)^$pOzQ;{i zY)ru7GBsu2#fXi4w`{yqsZ__o?iBjg8T~1?AJM0tM`R~4B>%!KeLijy|9l+qve0*l z3v_}_=^@;9n6)H2B%v=b$C7{=Hsv=-NsLHxdqR?YO46Q`1YgNmcSk~!%P7e=l9E`E zgudV$D+oJfY|1<}3E2nSN;llVd9zTT4|>Pr!?#A38b*I}Dy)mk4<2+4f(G46AI{HO z#(N)^&u~cvcL*M1E@<*HHpHQhG{pT8G=e;(xe_+W!Q6nYhP0_28`_=91E4ZB80K&A zQ)&^AmrBOBnLLl;V=Br9$_xdToS2q}B9mc{Ty}pg^rOfRZ9>OtU?0Aw;|aQ5+3^@E z6wd2dL$?b%en_{;9XLS279QX6xDI|-=8hlHEv4frfX0W$oQhoq?@}5#zO*p8-KBh& zzZmId4T@Qh>vy=e;d&j{Gq`?*s{>aTE+PTRH@jJ;qtP%C#Mh*_1GM^E2~B4Y7nB9@ zQ4Q%^`U`ZGRYxg#5eg#h>11WM{%-<9*dsnrf&(lZie&F)e$pu*7*))1xSHm|+N-&+_T%(l ze#+l3$w$?j+j1J(ZqPfi<@B9;+$}AqaRMD|5G|(%@s33neiSk-x!?@(DJm8|eD}xF z%}YXI_?(8BpMnpFNK>gn1f&ZHG9VFT-*whqNFW#`Mi~0i@M05uDSUe-%#Cn-jeZ{b zU{c1;Zo3)JQHhbf=%a<8!B;Kb8%H7bp8*GA#=w;ToTf33Cyg<^{$w=UiP1TnqL@2r zNQrbjb&`C2hvC)0NE3rg)EIUGUoi1yg{R5Y2T6O(s&qN|9!urYStK}MUGObrzN|sM zcBJ#-tSQ>RJ%jdd=fL|6d(*rV=^TnFbcBc(3S5M(qJD%E!Y_l_K~%SXxRi=(xdcRK z#8TFrjVdPMN)q_tTjc8Ta4m8x2P(O+B5g8D)h3;uJzyVA{*aj+AHqR7#x5IFN_?y) zcEZIJvT>XTgFE|ys$?FzMlFvwCUT5*dJYmK8|VZjVx*C~?PPcZqhZ308Bq|==bA(3~M68SZk`bIHjr_iFaOU z;Z4f%t9dQMm(=U3l$6hS)o{AnPctyQ97c6xgWPUDj$n|(GR3VZ6rQptp(4q=k3#*? zyOdwVl9)rimQaLCC(N~O1|c4K(kA>Emle;N{AuYIjF2bRcS#AYk^=%JvK|U@R=KM@ z!g(~LFXg(f?|io`^XLc=aw%8N;8G)O>S|4)VC*MBJ!1p(#i**hhQceIo`S3KRl!Xz zw3;}bGFjA}SCHQ|?97O(jQk3vXZsMs<(51zT}OLpXeZ&i6WY+Q+?%1o#R6FvtAl10 zXQ$g!h*DhqvgAb-D0qzXV$Iztl#%|Drz0fqTl#N; zVYF`D^GHzz5nh8YdpSBiOOYQ=`*8jUN{%k6b{LN3O6Dh=7c~uxK04HoO&pbI78?f3 zN3jWz50*H@qV{B1WQ~z6G(CYX={pHlgKJ15ee(&XZgwQ3Ooi;zKlS z6l@5?b0#}rtjVj06KL3>J z0yVO-g>&ESGjT4!)y$5r$m|6^gKRI9Wy;l{rd3_7&MrhT(Ll!CXy(x1&kE&ZSpD**%^@8Ct6W$2sgJQ@JJdUQKdWr03@w73V6Ke`IZg{0dbXX^+1EI8bT)kqox4@pjfY9h`8`~|57ohG8vJ61O?t2~>vdQGHyHInYx zmj)t_(2^(=LzR7st$CoEO0ig*J6`v^3@9$;Ag0}N;~rizDQ5P4!b?P-Sa!pwpjo4y z9bzTVCJ}6bN)*IvWC1Z^l#!|}jX9uyJJR<1Z_HY>~Xq0#66xMDpILrpd!4H@v*gx#(z6^ z(+rR1E46*0F``WLwRr370Zg@ZdhnFgItLM;wT{*sl3V8x;)&}X!Xm!bI^QI|_vKKt z_|Kf(61~XbQf@^0IHSSUaR>L=TtF?t_VG6Hck2CTs4?C@yD=K~prO^ljCEmOfT0J( zFdPRhR$QXeBB?Rt#^6ZX$lkGO)GR5gkZ>zM?T@zy>8Bt!5`#;$7HQLKJ#`;kNx^@d z0b)H>qiCF4MmqHu5IR^7T|pxBZ+DXl&8V?4Dj(IYCH3Jh^dhbDL+a(twT zy6H>@biJT=QMeSp)_A=!5S**aWAh-@Apmy=(s_oR;fy$lF*VAGFww@yjT~@FxfSkN zM55T2#>=qt5T%x=vioYdD&TDzbbvWD3G`;qq1m5zEEoBZ{50RgaRTt6(qXch#%J`< z+whg7Tnsri=L51GHd&hOLKBNP6|Yu2rhdQ*!T$lF>{4n+f;|dIqLg6gDpwo0Wx#t` zOCy~$7W86p!3i4`Mraw?eD$e5vg{?{a%#ZT0vBQ^_<=^9kxer&T$u} zF`P@{-!U?ECiRZbx8a!u_#$>BgK`2+$isw%GCRQz95*6~>h-#w-tkG-)?*kpq$vYaC}w{A~xl?TNi@rnjK_ zR>xXi#%taB=i~1?`Fl^&d$?o^8G=##p>`^sId)2!9K3y#3fR#hWfDv{w;xlX;ptG_ zdV*88eh2+_r`-MWJRuDuS@u16z|E`P?!#>zwGLG4F&;`3?Xm91?r^N&`u0fG2P-|j zzpx1&+eZ4KC&I$R%Xe&WvFevAJ&VvV(QM8|_Fhn}NTnK1S&U{rfho%aZ9Pxa}_!1>fkO?;+|kIA{<5?kF<$qP`@QmE1RAtFCTmUWv^6|#r^5HI*D z*&gfuzFJ5V-o3W7I~7)qsc&4q)9$!hGy9B>Pf$TRXfBfJU|^U890PYqnV_4tU2W8Kk>nNRjqQu%4Lp@e-eB&9xjUwPbjrbDI0zPZ z-+NyBgtl>TEk1@8>BV&JaQG7(-6<7m)G%io==K35@ zGiI}}e0WeRmf4CIZbIr64eOd^3@^1PW7 z@0;uonwh2e^gUzP-A2Rl;xqSP)hDm4`0ac8SS=lzU=7NJ({QH8uKP;-O=g2HA0SZQ zbS!XPhw^B6UJMhj83nrX55SX@Ot@UN_GKWuzbj{c@u_=u+#0J)oWL|5W^d${f}lIF zzXmh#jWW0he!TEp_RhdG+=OZP-!XJ~Xdk?%n@m+sXiiqDExKOMC^}VrZ6S8(CCpNmH z+25w5J4v639;jh+C{gq+cl528`z>FSV{<1OLM)RiC}q7)HIt056RxF@r3j4My<-F+ zdVtx<+rBDv)QEEtmg@0s4p@Tj{}%Q+vrqT^4c=y_*c<-8=wL2b91VS7H0)&Kir=|s z9J|?QcxQI4>7GlGviO~QMSln~wY%iiFzTp$UZpNZ+hUU)}K?tTa;0qrr z0DbH-&r0+I&lB|X4E=1NpN;gh2|sS-4Xl*-cjSbxj*FtYb%zn7>e%n&$r>arn}pBS zUc5p$ZGpoRdKAu|Ijihi)0R?>pZv;6Oq}sqmNj&*tg8F9;)hJH@(|ui5xVF)dg3#4 z>@a}b=%%GvD7~~Y(@O3y{zgmIJ!3ebNIjM1en?q)%`vR$(fNRKfFP6EZdDe|pD31# za5YJMPI3CInV%dOz;Y6#rt`!GSypgLBvd+ZZN*DKt&{`f3E<2Wl-E$a3e00ELcgFr zbgK0*Zlh2~0j2Xz(oG5i!487tOO*qZ7jq~lGk6wZfc4Bnm1UV~fGKPqpj9dk3vU1} zEYadr(`}SY8;vk}ZKJGOk@QNy4I}nTPH62Nav3S)C(<)%KA}zu7j)3*flpj@HjWTe zYi$?^j=umy#8RMw78l#I-FRxN(X%oeTUf%Xikz&h&~p<4UHE31$3rN48t@C-+wHK> zvW3%~^wE;CJkLssV^z7HwRmvC!JEfdP4sNWyUV)EvlI6^*sK9E%X63lJp=fKlPXVH zX0D`9s#RG$#@W0$lV>6xDq|&Ocna`}(mXcYQKYfbvy?)>@E#8yT%HE}dREg9r#2Bv z!_Q})y;+5D83Pi zp+Zw4wr;vk?G-e}p7_~@(Fq3)I`2KqPx>EYq!VH}jkG#@$B?Wq!3Roemw>BMnFbAdD)t#bVQeja z0iFgX&)WZwy?23+s=6A!XOc-6G84`KL872U0i^~l8dNY*Cm}a3frLmxRY0qyDb-eG zrqVWn#7Q8N<5=29eYCZ$RBdf*pK5FSAl1MGOafRgVigoMBE=bpN)&`Zki7r3&zVcO zXzSDW{oe2QeStmaoW0jx`@Z(tYp=bwAk+1y<^5^i@qa?zpELZQk@t1tU-Po~)a>N9 zrb~V@@+8?u>06(btj%+S?h_)V>nr&M{R4t>29ZhjVR@g+dwI=m;!|@czcowb=V^Xs zhpvgDAAkB%*|o-@5DImP7Q@e0g<8{L6m!NeTQv-^2Z(~20?z?EDZm(Gl zOAqrTJQb71MQeMILo2$0Sie<1ASbaKcom;1D*GmlU%TW5a%ZD84*qu43$i#64_Gvl zHTY-IDLjhawF&|RkXW22-BXUBsJWW?ne&d!6ELQ_9lkINek4`~t#Ox)xn&G~de6d! zNo6-67}AUX{k!*Sm8OtzM_ z&D0@EGjAUJr5CCAUQ+^w`AU(Ec+VAcoR+mKO`wGbf8|ZX=oE@4Y8LZ$!M$;57-(Vh zbZ>V-?)JMMM@7LQhIZ?YqmUUH&NCpAog36*N9lWvlzbM2s>?&4@CH-Ii71Yz&9O&Y zMm37)8OfA1HJq&Am5$I+_P)Ecd*2{m6e2};XP`dhb|!bA!9+&7TU`3bz7q~@g{)%P zgng*~zuj^s>2@B<_I;#4q#c$>E*z*nmz&$1$#26K%W8SAer4{##TVq>XE5p7O}Se%UnPkow~G ziN|v>WZL*WW>%wE4g1!SzlIO%`PCZhXm{U-Zmn^qyc|o{R+Ixt{oY6Yy7MDk{$|%Z zvo}Yc*GsJ^!?JEd`zmlZ8nJ0CpZsOJ1J|b|VKbP+{2}k(QRF7mDnc`oCw+-+@?`Da zPr)s#htebtYL@Nwqz1~-?d_%qE8O85ShOf;yFhP^LZ`-{naKnijl%5B;qgFgt&$tI z*^`pD>zz~({u$!Gwj3i8_$OnJ6)hNnKMud8GLLsk9Naib?4(l4tu%ubR`{5vW&p6N zi0dU{84#SLih(S?1LP|B2?>_uoYCluD@Z|wH4~=t=soV+b6xUB3W5pQdp!5*#o5sW zzN!)s2zAocK$JUqahh8pnIgfk?q$apr3HM@QAmAgoY2!E4#o+eoP_{|QHp)5@7wy* zyY|9NnhyBOjZW6e157dw@&$8Rq;XlHw4rubWgEGtgW zq__RB8c`Dvo9FNPM}Q`%OsMSW!NB)yhQt8+rqYULxF66ON&Pe60&Apl^z901qJ+cb zObh?Wy-&F5xVv%x__G`R)!5aQ$xl3I`0e5OEbiJrxh++=Z{eD7zrwZSo-*NF=67sz z;zib9V*HW?C`JK`oyl$WlU_z?vdW&jX>nT1T&p|3zV~I%$9T-o-E`yK=o-#j-{Q*I zSbr?6JrKm4R(}b{Y3$)tRo6TL;SQ}mYGtEF%wnpg(hK;NhkojyU(hYkE%gkmu33j? zRpssIW+d>!$F7ec%PD~ug z)>U=r!9>5%e}Vx+@7}v=_JTWVp};e>=3&WG-!Q`-f`>D|?3q7r0fQ&yc|k-{R!c=S zLdSX5nehzN!ngq=LcQmwA(js+Y@>KD)x3wX^45LrdM5=B0`L{{3Rc?%nAtq4B? zh1N`u9BNswMs%UxmRRGoAELZ!{~fGEkE5(=cAb}_e}p&e7l|%FN-L{XtO^F|cFT%# zcg~x+2hmZ`8viQer>HA;{n9VxraW_fp{4G8p==pV7T&32QPHy=u}TSz6hsm;%upl9 z-4RtIxU9b#K@YOdFR|xR83;^(CKy@-wg*LvprW#}JVA#bcRiK>(vMR$`Y?+dDUyvJ zzlx=&+vQzp2cWU$l#ixKpnGhPg303*wz{GvlxeiN`N>iS8xQA8+$@oPDdFjA~EHGIPODLPah+NrX{pkbfg3d+!}>M;R(=R#PtS3nFS_)5R%(;_nzj)TMc=KX1o>EcCy`rcP+DTCLmlEeQVDpv+k( zwH4cLR!0y=O2}p;xZR1gkkYl=&Q4=DYyphmMbeJUpn;ptvBGd6t1HUHOAc+rrD5xC zJU5hybWW+DhL)l@rK;yiva5SJt$@`$&w0LU`^0Ll5_nfK{m$>8km$Ta^AU#DjH5C_ zx3))X!Q2xIJ^M<(y|me?25bp?X@wFmI~vbBvF3X5I49;YI!d)<(`?F5ge=&|j!if9 zXjkpCTEdrEVtZ%OO42@idn)u{*O#DO#I&k(7cs~2ihsr!CqgxnXoW4cu!owQvoW__ zytT$PFnHXuz?D?Itf~RX*YiVc{in$5N{Sq*^7X9rPSuki7ax5}roMRO<12afU-3ZP z<6&M&>54~rauE}=)j}F!VCc`n2unh1gC@bzhx&&_F;$wFhD9;qA(&P@!H<8KAbTXI zO)lu=+9OR{@fdv!y}sI@+p=mkf%>o)_ObAM%t`4=Jdg&w;Y!O9^cJepU&b3d;34 zP?-v99YifvJHO&)&bA-he@XtIRW)7=WVkY9iL$t^~I zv4rpChuBp$GgRcw#ym;nF-XExGXD{^Cj&UMv3Vlqk)7BP_iCV8;bvuztJr|XFuhgg5_36&X z@5IBO?h#y-F2rd5VfDN}-pEg6$XiqFyUrDex2Cvuoht$QFv(beVNp>dL!m}KXV*wx zLPc!Fty;;Oo-TvJ$b^4NrhocK?_i~$pO_Uf%=r{x@~4DmihW)A`&PHbkNX?0XRX_^ zzA!i`rg`fPSOt+LF{Dm*ZH%)vYSMw8ndxIF zsLXz3XKv8@bt7@3?TXUM5S>ONoOn^eKG z@e?AfR1qF~z=XUS$mSATcyWKIM-`Nw{xHwS9#gQIzuLAYSApBZh5f;wGQpqViDqjY zKF`RAJv=lq0*u*nW{hVH*oA`p8i2zeFwSDxU2`p7AOF{?)q+<~e?b8c5WTOk+@>9a z76_u+ooVuv0ekbxx^m6qd)jg6Z}=4t9BdU zWTT5W^4l_OkGzy%cWsulxq8r=*TE8&Q%SLWwG7)22nE>7Lr)L!i~1VbZ?3kl*(u;C zddI=3mmUMYTfrZS!Bao>HM=Cjro;$q-oOj=#}&AxAc|gHB@@d9lLjGx*?H*cP6al6 z&2HjSNB&v%$dUwDmjRohU^5L^GB%PopdUL=p0g-(wR6qeU}!EG6q%e5eGK6U3DdK9 zt{TVBEWf6wkC#|9@jEI_I~5kO>DP~OGN|eWZv2I~Q*@=%WyY4tqb8`olRP7;K zm$2n>I6Stb13ol~9>M%L9I|ZCH7g#9PYYcGL%XYP(3|h=x?@ljOY1udi-7~(b|@CQ z-5W9B2v*@A_d8eBs`Flu&zBeU^$8mZ_3N#!6Khdfu;*%i@h(uhqP-!}4V4wS=)#rB z^w=R8ut+vxy;rSd0ohWP;V;O9%YIzGnwy6MA=;f7Baq9;N<|sWpFbA>k)E17VqiMv zjJ|VrQ)H;JQR~-K<|JnvPzm}%Hmy-4>gr`5 z$uf6njUP+qSWPQK86xyN&==l`pVHb#JQsO}^W0=a-M=uqG9**9vBW&JzQj6%N1Ob} zYT|nbC=8KlfjRb^!$jOFDXNNQ5l0E4S?5Rzx1p6&zoM9qB+c$G&5Wc=L5u8un^7b@ zkr+-!uidCUM~77^jzTBY9hdpQ?4Qz#vBE)oTwEF;HZe%D>2Pz4w4~NpDlA{oaZZtQ z#xN?N(HbwqyE2psYsS*0V*tr1GvWq&5}n_bdWRg`n?TgiUxMaBQEO@t@N1u+!GonA zXS2nQhF|G%c`=CTWJ$c}`cMlI&|6@o*5?_nrzF~zvKeb)ev|?+k)bSf)M6Fb=)=+%6{m2aT%h0^f;>rg zDx)6KtLJ3+?HvG6Z0wQ`*X@&^mG-Pl#}JxbpPGrl*X|7~IS%8EjgmTh?B-*waW|mq zR$#3WK1QZ~xn5Ii+#vpC&Z)kmW4R1xlb5iN6MZcGPUrvRHlmH3 zIMQd;%3^aPr?c|U6FzvbaWPSyTI*wAnmRq@qD_CoEt{NNs-OmHCPBZWCzo7CWPOEn zAGBUM+PBm!&^ByyCZ#m1!)Mp7JXuzf%C6;f+BXTILN(oPSgP_V6Eo4a_u1@bS7l$ghw_xf%@oTH}uirsH!>`T&2P3Nn-8 zoc!zf2yyk?MZ&Wqx3ZBYhK|%J@2ZeoMVlje&h6k5;vzfOPL)qqN41gaDU72K-{fv( zJI6njSRK-ClDjEA;GH_)AlJQ05adnES z<*LvKCkFkNSR4B8W(3sD#VDGpzQG*&xUS*o)4LGd zPSEpZ5;kXrfgSnBrH?1f3EsK7)zG!O(4T)iBIZHo9LM%q&|cDTR1}G8f8UYHtkEZ< zNhMq6swj_q*@xakY_1XWmojA};Pu%3*TxGpJM@uK$2qA$QX2oD_!)WC9xlT^tG@h@ zAe~>1SkphR$2+3tVa7#eXy-x2;Lx^+aC;ubFEXX(2^I8WENG&>TnLGNO(tXmg=ysb zp0lC?x8cUYSCpnfk_M8eiLKA;sSJrutv>Q4OFIiW2;`e=-J0eMJk#{W$Ps(Ej%(A^ zXL(0*8CQl}#zjja6XPI4lC(U{Qh z)=0lZY^pVFl-wfst?QxYD_H%Bh=ZN77C>Z2L?o5NsNvb6kcwoB+Vx&9QAAsczytyG z_w4-y(A@w2razMe7(UZEMsWxml+s-hmiq0HGEtyW8`##NS_#VdzNuzk<$3Cb#`%#yC7RzUaiFEYMFuI8fZp!N0+r+FzQo zTK2t@w`F&u*Ta1od{FZko#gD(vG1G(aR|&v?WqVA7y&subB;xZ=oz1sv;U&oKDnO9 z=r>09a0GH|&iVzxqoW>CllS~1M{ksK&UHygb|%nV`WG1KU!QI7@RPmB)`hz|t-Ztl zCiFAx9ipD3-(4$e0Ez{u)|Y1LGc#s!Dsw5q>1DZkDz%=9twR428%px(V-SrnP)|iW zQnf)rEu|HkhZUh?tJwkw9pV={U`%N7=|!z4gaB4^**O+;>CVYqt!*g9X7>b2Y+}>o z_;<=`5F;a||MZs%4N2xMvQ>pXjD3#JRfdW08Cc)yVhC70Bl=&Ac-vZu2xA}wz%Y@l zwRXa*q-rbJOB2DxO|QGr#uW{w+@qTBaXc}E$t{{E3-?CwaJB3X1fpU-{{sM|MTn>~47|3kWoR z54R#@&396Bb+UfH?8!o*=_M`drh4YS z!@(r(u=ZR4G+PkOgZU5~6;@uFZ%M+qb8|tml234d5SNCQr3u(qxd3{6bEyQk6gdRq zF;E+&DJ96roGKC7BN@*~$*BqEGsX~Ur&6NJXLWOUE00WRhoO^KkMl#hBK= zl)|hw4*;_H>ry^}por8%MRIsuthFYhQayg5lr2fBWP(&i$5@JwUF=d{=Lxsg_#Xyv zNqeEzX9+jSSJk*c$qAJ`{q=@D0!=o*n=;L}=|q7CjN>AfH@h~0-C&pMS5e$Rlssk@WKUtX{XH|z?QW;#aS+-Am)or;3XL-$duH*SN z-2J#H34or-(G5ia@|xD^J&b?G9K_(A{VxSN3qOW|aCPnNV|*Uo;NtofUg}$ikRJBfTf{dAxo8k*W#nR}T1DwWnsSOk zRe<{{!OF`pq|)Jrv=?TcNT)lu z7oO9XrX-xw)e4jGoXOLH=LxbzpA1Za&65F{8yiudF}QD3gG9zFpHmv8JGOSC;wi?z<-Nwj{4{KTB$Ljh#KFr0Y)-+fOd*=EUImwyp`&DV| zczwU5DxUg&LHyMKAJT5il8g`1^FgR#+q#j6y$t0 zCA(DKjd3?lYrS9k=v1w77QKkaDk;OvS|*sXoOLbv=h3SQWBs#dV7$IAjpi)f*D5(W zhAJh&vFvG$oA^{6G$=1>=Cpcp%#vx1UrUp!kd?O^+pz`?u1t#+4>QI|TGMqviLBu& zp2EL{FXhFkxNl0ujbuC5K_=(7l%7kbt6NI5;BzNNlPif<L5Dv#v4zkuNISHDYWig>mowhC!-QJvTGnz03o( z|&Ur`Lhz8{zOp2L&)(UiISyAbaF|==IcnB-d;G0kzG~WUN92oqSk*WgGpMLj=_>cUbV&m zQpIp1Kk*1NYq3%Z;jH!FeVPb2NrXy%5(<11!y;PX_>d{a_ml#kGGv6MH1i@7lW4)e zu5aQ_QHsvFgz~J$S3I_o>5&O78#y}cxf zerJ57#mb9`q<%$jcV}6{Kcoh!4n@+kKr+ItPCIN3H5a)#Rwt1;z?~&|lMy_YkAaL} zscdhi87ZZGKzd|si6pEdk2d|!kh6B%sPrkH(>5QWf)Nh!W90q+c=~rq`Zbb%yl;!G zlT(|z@SkdGnd~S^iS)Y%654uhtgQ#Aw)S3Wv~#-A&Z#BR%A=)$d^qR` zTc1RyA{o`GNG3VmXxht6p!1FFm_4swehfgnME@rSq1{G?`^d0SJMo_Oe?i`Em&&|V z^0r)ts^S~pqVZ1c1ReN({&-&nl+mBR79H!^3@dI~*BDYfqQg3+WI7FPHmTek5+246 zjde-1Nu!Wo!ZR~EIEVA$5Or;3hV69NOp|HFwU9wpW3~Rf3^J!R)=Mh)@MC1~--1*4 z-SB9^8Lz*U3H6s9om!WkQgI=Nkl2P4fxVO$a{J?T@sU0YHryyufLS z8~`fZ$Pc(rf)+efP<-Oh8W#w3l|aWSf||ch;g|OPQ=MU*(HRs)SiyU=WK+!%Hb6~z z-r+_ENjEx(K@S-4X~uw$70xIpQ=80S)PT&x_+1w5FHsV35hP$V0kQTS%11(LI{%fn`fwD?gsA4Bm^}gXd-4@#}wNhRRWuag!f%B5En4|hDR*q$XnTa8B_07qM7(+Y^h8PA} z7M^Fzs+1?IQhm9M)kiq%upS9(*!qa?9c;!_SA>#ZMS{5rkt&aqFM*0Xf}uTqSpeyvr*x5s5OS?{yLp`Y-N{9(^%ifw-bUWD zgU=Hx*V$^11kF-R#gx9?D2C+5>~66_*bT7^TbL?=j$*f95aXWjbS#&I<}$kZDd4j7_j4=?U4So{ z`wsUD*}+>^Ych^;l^qWrNDYPtaB!VlgRtc~d7jJr_1uF>p-*cR`E0DR+*)I|bPxJg z@r1yf?(ASCEr{AZjn_!Cp`|VtLztJlRgL46(EJH1%_bB7%doSnFOlb z^`6Vn-OkM(Go6R+@ zC*zhZAK|j4*seAHjZ7ruaUMG(suDd*j;P8;NM!L;Qo!6@o|N4A6TBtHMSG0aKt{E3 z17Gsd++*L7tJMrLrdLf&Hpg&-XkoaMw;Liqsn@EBCe4u=+=+1;nq`hFJBVcg%zf>` z>Y7q@VWf3SZB}v|QW{CtWK<;EHW%p+i9nHfqCL{Lwxf6gX;}P*ue$P&^kT_GWqa~u zJaJwFU}M(;Lm7)w)txfj$AOv@rthf~>gocq!;Wqaz1&b-UthByS%orfz2sL)ZYR4L z2Yvgjy1MKmxNoRr=18C8HNSED2m8e94FlO@>q#)!r3t`VcAH;yY}419CbP@z!BCq1 zLt(Yl9e(xuPSBSf+x*H)Hk%tHOy8EXgXz(%YS5$ijB zql02|B}G5h}DnK?#H|uN0022%k1qCAs zAdCzMqL=+Dq#uxZj}1WVv2v2naa7+N0}F3jcE%2Bk_(L-yg>I;VLRK1l#xco)iyaSQtWYu$<%LwTUE2UO_o2*fD z>GtO43_)6CKTanW^eVwDTR4YCW?T$1oruh0K-tjixcSBqHL4F;T~S) zfRKyjtGT(k7AO!$Z#rt6LmP3r1wd@2Ok&%IK`)!2LSKM0aIpD#iO9N?M$~W$JG&h7 zx1n86^veT1#4zTrIzymAvTpQj{f&nA-=P~cyw}&a#AzUnuO)k~E} zGq*NA>?DG;ME&1SIJW9_yJI&zojQ=r5fqIfNxai1kzO_<5mL6_XjrL&z5|Z!vDVd_ zrOVX+{Zol>+^@bQw`F?`#kTr=y#lTJm84)m9}(#81n8b9^gE|OOMZG)e!3DOgrX6a zoi+mfd20gnPP1F?`P8w!g6SH#e@JQ>DyQIGzj zU+4K(dk&3l8m%4;^;JD5)-yOS)(?4%Lp_C_KT6-Lj*Xn#%#mYXkTCAX=_^G7p*KIr zuYb;C{<5dJI8@nQC@u6qcsp_Yff|09i9`Wq&T4-^5TVBycu-!-XZy<@?kMV#fgIYm zN)02~UP{c2F~3yEaV{>oK3-iOn2s5?iqP;MOWBlG!k>uGWpr;Y<=nYlYt6WJc1X^v z!x&KbX4|0R+=I0tv;dyTLX0ZjlM2tqBDk;Dx>SQv?Gvx*;^$%C-K9?W6lp7dOQu)? zuiSf3X}3Mbqk~&co}6M)syDocX7f@iFH?D0A}?-%k(aA@*(NWS@?!ZlFJpNrm6wq<_aa`X z$t;TR9*%uXs+u|wQ$-y`%oDU#Pwrg1_X_Jop*k{w0;Fy9LUcQ5g$yKZJ9(;%P!l$54%R-CT`=`8i*o zRo`svq`(Nu?4Y*nI4*z8s@;LC z=l zwm9&;6TUvWu2>&uLtsVT5$U>3FC2DbDye&t*7z-nD8}YY>kujvl7pFJ!m|lenJ{y3 zzvLjChp!-?IU#(RL>}m$SrfiU-Uj>63M*kG$MUOQmjvArkNDpixkEfX5pJvZR~1GUh-YbJ zu0F7%cnSF>+0w`~37Zj_B4Oo`Jc)39Dl@$DsjFr;x460pPqyaL@I-2vf@wb|LUf@8?S#~Yw|2J z(Pj3eFTKcjG@(UMznJ~VMS!QOd#&JEjH^sNn9pR$x zRPVt0jrGxT+$nY8ndsQBqsw`szy!M#-6HLnman16*gmc zHS*oW6jGy+B417PPKkL>HxV%jTTVhWAu)z6nlJQye!<$KW@5sOy;#kUE^X~YLP)uD z!q=9L;kntNi+>nnb}k`ATYJ9%a83LYmK;uZd!ef@!813wG_0*%u5c`Ilrm%7C%b}r zRe6ikRe$tSPkQ~)o7i`s<7{>gk8mJbVVlaS#E&cMU>ojt4(E6`?_AWVr_Ys_QknP(Di5{%S#)1zzxQlVpc1iwkmO_4p}V31 zp0VZVJ4>E8G+{@^GK|(Q5B-r--b9SaPl;U-`kCPgwk!09WJMGx+CRJIW|AxqT^_Vj zP5a>n6=o4K3<7g5P)4UsILI^A^2{-}-_eZ4gW^_P^`nuLwHagruC#CI1>`V$S0E!t zYb_kMzdUr??^X3Q7hbWyIQK~HK2~S#yjud^{j2Y!SS^_?o3B34RNkFyz zQe!9{{TESuRvSJ2FXB4SZ0}eb8MT~jS__h9f9BtVGU0+gnZ#7-&1qbX53wX0SDDT^ zti}OGm$=ev$;cMl;Hi0+dQx+@)E$Zpnw7h?4znD`Az2pvsIM={qxt%hJ!x`s`eSy|N0ceJ?@2istw_ zPYFasYqj{+z3A(?{GQ3|ST!%P6EI}cFRtfp>ehw@_RUJMj<*Q~>{Jakda^C_Ww zMfTu68%mt4ZbitzW)QhCmL!*)cbPRt%m?6VnnMz7K``nfZJS|DqB=u)L zlA_;+Z_;VPRSm29HHc3&1~LxIm0CTzx&)dEW+TF8dEQ1{`iq>NlvXBQi`F`&G*JGL z@7NgBYDBH1$j*VRmagv=oON7h*N|~Plx__BpH`{qenri0>JWi@(?kgbr#}Ok#qNH+CJG)ew zx0?Xv3ZP#*yHuH{DUrS=7BQ1^irp^uSJBk(@l^~ zfSl6wE&wimnQHhop=(LS61f255fp5zHIk{`*e+p|L>$o%01r=@Ve=&Wwjvv`>uxM* z@ALHxN9aS42z~BT758Ahs<_GmfG`5827%OL^=z%RvJfehj0nm&;%%wMap8+4f1IpP zph?&htt>bl`0lL+c&{jgOqn69vxVDpQ`QcV7q=&s{7NTBkXI1P*oEx(6;D~BM$;lX5cBD)lA2g*L>yH6ZQrrM%N9xHnp31y zEuRHE#UP?zYMm}P^vJz36ItBYO-lA{u}V9&^-2q^z)}_!{@`(`aO}PqP0dVLQ3JeC zrZ+YiY08~wzGIVWzv(+RdD%i5)omn%@%W9BTr39!_@@`pM*0$GHqv!h&MQqDmkw^X zU7aPKcRCBQx8!cGJz#v~ZmCV;R;CHb*u74)gB8vtz54H$j`pUgp{F|zH=K``)uSDm zGK0L?z0%h?&drp2_$9khF4bYw*gPDJ4Tiw9eZHd%&@`gUG2J|eP__pr@L0phuv8%> zbCDaV>;lH8Oj^(m8K+X|-+e--j5=qXt9Kk(m z%eP#bl5hDM?xoaxOSd)OvNtK;A~1^{+(6v9 zq;oB90j?gm3fG2v1xM$ATS`t&6@wV5=AYu1q93U?TWTu*)l)oE29xgPxJsM{_aN@i zxOUtZ!IwgQFT|DLYH)tsZ*YIbeGz=uQsz5wZ_p0v&*cB$2PvyChgR!O!jox-&w}|r z;p1tiU-Gx`B`}} zmjZEqRVGr_11+VcIhbSJ&b3Ejyt3Y53N4*P z%9xf6-DC1{ixnIx$owkV;_9Z*4Q61K1fE5PXWC$=!p|v03TK*35&u;AyN&X{dQ$me zTI1#T04D3?^4rbw!x1HxA6_;d?+>TOTVTd}SmH_f?aDk*Liz1R`AxoVv4V@0pFk%%k@LFLU=&6&ULgE>$C6GXrli0;4^GKx(Aa z3@nsDvqoGMktdBL=vE-3S8d-b31o!N6|hQ!5qpcOQjFNEyvRIV$}CV?px-$I2z?9V zM-3i$0b}q8M{p_enI1h<8b(Tvv{RS1* ztnfpp0l(~2@Jm&hvcg{%@DWDJl?JPrtg@65mV;IVAuv${B#q)o{YyhnBuKcxO5p-I zAsB1j=`nU%jtIg|KV=L6GAjj8Wh4Jx`%cM!I{6R3raH}}+9ks2El$Milq}}vZt~Z; z>b_)HGJ&Nm2$F=qa~}>`<(YK&C4+(rUaf!Z z#wlu)+vFYyL=j%Z8B#U#JQ5m+6}wsorOYTR0lBH4WlDqjp}W#$VPgh z8dY50Or6jVUGyIYT;%s~jWJd-aRV|i)#4lse}Vh&LHU-~aL>8&Ee|_!={Oj0ST>k7 zo1CTMO|fsbl$6xe0Rslex77-cjlfxnGZ|Niy9Kut7r=cHo@yiUtfW5~SBSd>w-gt^ zeIb0rvr@LnxGLOY+)CV|xG#e51o52I(=;vLlFRcUo{M;H=hHV343VZcwfla`Q)|tecRSiKN=G+?W9;+MfbQ{g zn^bJEy?`@Nc}0M~RP2acY+57#O+B}Rs?ccg!*vo^)oJANrY6Csryk7T!P??JBt z9gIK$=gQfvyc7&X=Oy*6{z>xX)R_mcexfHWzWjo_Z7$Uq`sMHJ*RL67| zEl-*JF5h=;7EzE9O)VKQODow&6{T+zrQ`u0iVnge2;QGZ-wYFB(_gTD704u4#18==#yvY4y4= zLx&=Oy}Ams=)+>^U#1shb}z~EB}xBMeL!OJ10;F7BtMWTUM$skM@C+ta;5UQIFEXe zn|7^Cjiij}ic>ER(-Fp#BtT~4`Q?f&Anhw_7gId!R zo-i$xr7zsV+86+ig*VAj{-(oP(>x5T2d|s zJyh<2sy>_Jf^(h2=IQ zZapA#=Es74qu& zQhiu%}>nOrKitW?m;S3b{{ajRkux*=c2@D2ZfXKLY+t#V$A{Icblt zCnk5*8In`|aj>+4ak_L)r*wYLb*HJ^-ITt6p`>!HiK*NVNO%@pu=K-wRF3IR-{K|w zM||};onlbo6TTTajsM_j4yHZ4iUo!r?Bc~u*P`d;^o5s7q-cfTCg5eAIj_(Q9%yTN zO>3Hs4;j7gq+XD7N=Bvj=h9xW+8-w%(SE6Wds^o7p^n&5^s>-uzjqtDql1cPxv$>j zJ<>9Wo2{W2J!2TiK_RBIX`MZJxcZ>iB_BPC+ds}jZ@*!lJE{q9XmEUun`-F}fAN-=JIJJHTURdPqFe z1EQH0bs()#6EgZKhBEYdhu~71LL|V9^>wqJcJWCSAgC$oA<;{TL+kcLM%EvzjCx)c z^^|OJ?uCjqYV@b%CEP$IN{z1M!>Le>$ar7R zF!hxsUu;WUs=g-37dN(CrZrtlETD7nk>2}dK35C*g&K;n&zEx!hqv%;)_@$VG0P;& zLe=(X0j)KrQ}}Q%%C08lK2?LNm%PcVf*h_O-vcPT-GHQxnTKx%K+O)-yyPB4pdfPz zb%h2pd6P~U?Zh&Mwz;Ry%I#ftlp2HrajvO6R3Z6_Qt9)lk?_ys9ri=jf+{QT@v5?t z2~N-A$ZckB#qz0Hu60q6vsG@dAfr<8!|^sMeyge%s-CL(V?34SIEuO`igP3tH7s^g zhv6!q1=nWzxJ^YB!bA_>LNeYW!9}Kd1}{lO^<3soZFB zMJ9NLnGqHx{5$H>7)mdIRSl&-suzaRZ+M~igH{9W>`)qbo2OymZv2vz3>kC4F1OT29l0Ug^@RXhz874tj z#DYv}(NVNh@*`JK!nNk^@Xy(+1xkPl|L7C0SXT2UUvMvdJYu=sOeDSN1-)!Tc2GoD zocxH2r26x?)a|r5pZonggd8Y7x1&7tyM;o3h0h%(xIZgmL1M)4Zb`jNq1jpyPL(g1 z=b{bS+h&KaRynilkic^7{{NJ+mGvlgdul~khrNxbe~C&T&NTdBLUGE&M^uHF+<5p` z>WkHrFz(Y5kXU2nV_th%(y`1cC+Fwb4yzQDjMqq^N93ZH;6=7lnXq+@`3z(JJQZN0mRe z0=ng!BoBvZ z@-4r`Ey~KbJb=6Xd}MIAb-42{K%R(OfosEEJeqYm?kMj2WAZI~a958t@J2;atRG|c z4W0T-*LK!eD+{0I2>hm{XE--ErXCy%s9~e>IA+t7_CoeH><-*ywMA0?BD9L_MOMiAQUAQ-fsD-H z`vY@dUwW;6R`#|)J||dgoLdTZ4Xh|fuOyUpt2C2cs!%ATL@To=cOv8g$I)o)Wo=}Q z9C&Wk2aOfs-vWKGoNdNt_BNyn#aYTzj&EA}f?Y00n;%nGBZGS~$HL!O9112wjQ3V$ zicn^dtlxu9-#Vv%kiXd8Q7oB`U2&v+US0UCo=%z2ZVervVn}zQyEwi+i>Onc{Di-P`PJQ}Z+2>d&tPfKe4ZFeB!mf-% zYZN`f`lIPu;}-QYNNaqF7uft-$2GL%GVT7q@_nRu2ET5tF^OqE{1@K)mp=RhNfu?P zk|gSc1ftav{*DB2r)xC9PD52=_!&C3$WF{l=D(p)Iq9#v#q%I_z37PzC2w8mpHX!ow`@DL z*5V>QiZj9viBw!fa9~DN#zOsiemJt}O*_%qTwE01&kQ!rOk<&caLz^*Q=d_MAreNY zB}W}M$~0It!?)*CF;7r6BfMHXif4>D;Y^}r;a|(=%o)CS-}i0gY~+ma!_f#4-zK|6 zSYbvu=yXYhC49CNPg31YyKgPclDACz!GH4%&m$<$!HwNZMNqwTlJ3jGn||#5sy=3_mGysd@kOQNZsKm!;z`$7ARNn5R?DNj zG8C8|n-VS&xbKe-?`L-PPahxNEAz8&ox;k-$CUB<^ohwGk*ktB{K_}HUI3~l=~E`@ zy2{f_NrA#7ZYc0i86WwSMb$z~sAr{w$Nb2~NPRYs)nmldcaOU_tapKC%Mi$SKFkSRQ~ z+n8Y-X1a&y^HRj1K7A5K$)}88j3N5OZ0rC4wxcl0+EmsQ@Tz{WJn`OF75y=%okaFT zG3ed_4GU+`@!pB;KIwheUz~3_+0D*ICl9w2_n){w;eN=N{UflkKU(Uvf9$p11MKok z(0{}2!41EZJq6q%+;?#;xS!yDgL?_L;LG`zPTUA!GjP}8=HiSysf?SUoav51{Hgn? z-pv{IUeo(w_Nn?V-JZLvZd}Y;U8u{QJKOamYy~B1z=EI6DOl>(CupsT&<~9in%3QzmTD`sxxa=zsbn)%O3 z>WV`Zb_NjR2+rY`T%HTdLq7;hcQMu(iNW=MKM*z1A$!mI6;fW#lykty3e{7UfzEry z?7r8yaDfE~x6C9PC5pGVq%{((vUIPP1TWB=r524!tmu1tVKL)(J*UCNH{vz(#PCQzLBIhC9unMzDv~EmOOhrA>rfZTG*Nqd!f3-$! z!}RD4QWAZen(~7mq{;#U!$~nKOo;$}2Mp6m+xNu6k?JXwhG`Zo9yKVdN%i|ab!>{Z z^hqG5%_OlBb0!cMSYRFM_Z>MS$RI$n1mvAFf}{iD7Lc`$O}XzFxnUo&SI)EbrlQbR z)I*oyUwP>FYt*piexVt9`pYkJP!{t!WoM}S%7agazV#3!kITCmfU5Zy7^lwW8>hr+ zWpn?(r=wmv9)Imy8g%trKX>}tE0nx9lIGEDk%JK}=%g5_?PRxDHGf->2 zyue>RKC)D?oYAxT$ReMWrJ~*-)yQ=$`VXJxGx*_vU?>$MWxg(JRXHaJ%k>5s+q3nG zam;61K9+hODGU4mlE`Jzc zEMB;jiVw3?lHGcXCygriTq36=#`#X9dqKA+LwF?8B_0IYIsaMg?BMqjfLdB(pZx6YI(WPlQy}o zoBqGK52*wUD>g>@(-k(yWdnUL+nVh89(!f3``ZH`eUr&vHjNLlMYPRKpvxd!bGq0OXRDpg^JmPiiQ7VP%%~UvkXGUY7V<}{hMGOO<>ml z!6#>jeu3Qr=^>v>%TV`N__QR!yzlwaDxs67Ag1TUaZBfk{G7eZCS~GPYkW}}ueg?- z5s{^opQpEpxbsKitM2=e%Xzl1&f?E7ak{BeEHW8sU>Ia5?NVO`q z*^62p5@tzjZ7Wq*i3s&W8Z@B*agCU*G;cK$-oUrcrf@FL**Q zTv1gsUh*$LD2#6olf=&ipzj~b_)+TG__#jCW| zpYIGGB<;$o(5=5Q+ks6=C`k177FFB-4G6V8BU;-Yt=*lZZYH^bTLmUWl-1dM@fp`F zK3v6Qwgl_-Vhk8fRM&DCt-z^D+rahq9?V=uZaujzq7B+d zgL1KtYE75XgwjmgB+{i~c2n8P)Pppz;dyq=byDw7CDeP%^{QP^&ubMjiy|*|p_oqZ zc!OiKqCpv*Xg!%i^@qw-hMvk*tlFEua$Z>70n;qprC2f@DE4leMi6Fj^0}L|<@*#p zGiPg$Rvr@jB2Z3qM3x=O-RwC}-!4Q`NT)e&qvI~T6J$~5wx`k{jH9=hgi(ggb5F&Z z>m}C3Ck>B38x2+yYp{5wV^s&8#{L7KM_TBVaZ)wzq_*jkYW}y6lZz|+jgv*vUY!Z; z^~P)!{(oqks6Js1mN`9&X6Y@edwvfZW|A+1dYQdOcXPuRGITYf#^=lI&n{)bczs$P zGM6MeV?myTMZ1gE)J*Ge-W*;N;tbK82sMwkytxeMH=E9eGksN8&`hlHX;pU%$xUva z%VEbJ|MM$l5Eb>D|BRYFNzqugl-Wn0sPL=z(ESFMBRdz&A7LuN9!>VV)-uPr$l5&T zM6Ac@s|CksJQS`n_V7=@LH7MpGU0^WJ{D(1WZF@)LzE{mSO81U}G{_K#gNirfvYz7*)Shm@y%-9k?LoOCBH!>Rwm&JW~=z}L^o<+eJ z^GzeEHN`Mamk<{r#;ls552^?aJ}J5ge(x3L6{F3~vS40^o+5Bzzp9g1G8|b7{mt-G zGGGy&kUOJP@N2T-=0;HRpbv%zz8H*T##AUjHC&Vv`h_F!kmE6WTh*AKWBtjctq@r~ zBKqcxQju8)>^wx!ipDB6(w2qZs@o>(sG_}|YxHe;ckqME;J(bU7T9OUYr!tNL$sK_ zwom`av5jLZAqiyBCZX-YckPZKxbN8G2y!Lgb{PB4;D;H(@F=)mk ziIYT1a{8Ep?O52}-c_RBJcnD8j`uBlK8wO+AHgmn2c_TG5eZ@}cPsIC>~XBm+2}9Z zkKzehT;Na>5b6LsJUM!svJa#z^w$&QO*gPw>OF_~REX)r*++6-0TtYAEuEpbeFv2eE;E`39V9}aS5&zEIJlPqP#05eU%)F>b_H{bh7=yz*P z>+oxtC+FCSXF0syr62Ry8{TLAWQlymczOq7hFWWSgm8@Sz9(Bm{&{xqK*zlOj(Ozgy2`Cz- z-n;dR2|Y;Mp^2$<@ZWymBDf;fal6c zniOWNyc;b(F;=~k%<3H&#c_DOT|s&c$ni1A2`59Ip`l`!8a}kF>szMx1VgUiK9>x{ zQH~&cK;3j<~df_4;wc0>pon{bbosZF?*Jg^?edAm9Gr?T`k{cZ;CZU(1kihe?G4<5)2c4ao~ zQxvNwxX+&RisM9!caI))h>->8*`7>Cn?cd^ZmFub5$6eI`^eFauEkNl^tbgb!HA-3 z?-_KB?!8<3oJDK;0l%`yhq{sGG&ze2adT|n=QdtFpZq0G-FC8dpWUgyzT*Q-htJy` z+~?f!K7tL$$81jvIgtfD35NY3&Fw)&|HvBAcRbR;PdyOcLEHBg2wv#hCwwc^*>6CM z=IxHmRFthdGOM9iQ8uB%LfSeU?UFTvv~@=&DALv)8P~vOHMH&Z;66w2gJBKp6>a-i zbnm@g!S@{^)l?Ze193~={|80f?E0{7-Y{Sn?=I4T)Az>0Lnnv#CvNFZV<>>hB}3s9 zOtx6K{p4^(+=RncN$!p%*<~gfCvH1@dy-j@w@r+steHd&(yy?i4jZpE^~z_PZ_lXb zNAZ@u38Tjhjh>Vpd*B8+UFl-))sr45Y}&0`Mz@81gc={TVo}fNO&t92rX4PFLJnmy z8<^HNx>JOg_EHc32k<{)*S9*#LXNWiE!aLr{?xQl4|?;Dv`NR|whXv3+mO-0NH*(n zS%!=b6b5$dg@K*O#v*4uWos$w_M|>#^;Se|#GcL$vm*$9Qvmq(J$h|mx4;MP?mP0@ z=p)ImajUnBbEf4&GN%^!U7kY-@YD5qyY;%gtz@vC1)KU1>RHy^&}$_Zi>Jh?q%^IN zL}^%)N=j>rmukyWGUR*;O@{d=)5%^0eb7lmq;-faDmr;p#3>Q_QOe^WH0DN&G%9mr zjJ`c(63VfP5FUyF_DCKQ0poPn>_TKvb)iHcg~aSagsU!;7#@)Jtk*X`LI+_rklYsR zN%F08V+?gjgY=C0?^xYyoV;Xjr|Z~x;RNs7I}R8O%cdRg>6>_euis+1fGr#|6Ay9mK-V4*T?wDUoj5|KiOHK_{kS|_%^%zz;G4w`Yhe5 zSJ*^8IY;=(kM&K#4>N=BW*W1N<0F}8K9+fApWf;CSl?!p-{3a4$GA;4FW@J;Ic?S! zJdhC#jpDKd*d4|yB5tiov<_t*BBz4(a@ppa!u~0uyJw2=>iJ}CoapxY);nQGvN!9H z_O2ZfG8)|D+_BHGgOb5n&e>})mth^eD1lGZUwd9rT}5XJhU)HNs1hnvcg|jgJNqaH zmJqmm_xruwkxG;miiD}`Q>6D?$sVM43p*cVae&hCZc4f1^FsU(xH2t6AeE&F-v$4N4*E|f!T!*&uf#=77z=5J6g8@5|M zKb_Ct}{!rn7#8MuZz<29; zi(GF!O(sw#LH%vtd&|(Ai*tY&);2jn?w;qSLVXMKEXhZP3)3Xz>;^^7u15>au^C{7 zT&WBaR94yr(C-a-uTuOU#`mK9pFM&9Lk3gVrF%nbNWVV9lE(Z--?pKTwph0KORB6= zd&1gLSXF)Huz0T!ryq+a9Bln}mO+cj2f6c1jKJdBJY#sxQfTZ3B?606C=pc_BU!@S z0ch}c={>Q!J#N-*4Dbwf9}nNuaG;)?2S2b&Ct79+zCYaYy3mtt!4K^WCB2Pd1mm~I zMfVbBEf`i@;FixM7nw8jE$88$VZ5G>RtVenzlC0i%Dd2u<8u_f=;rbN(~JKX(TlhL zC3+$Ecb!ZxEHLbmYKA^flV1Et(F+!hbdJv_8BDpKM>2X8$pG+wMl!4{@Bbx|K>_~n zAQ={N9{j*z%savNGh!se5quZD-!DQkR+i4rx6H)7$Cy1G&G@&_i!mqh7vGTO9rR-V z4T@fL@i+~=*o~y!}j^gEnC-SA5RWUD;hVU-)RTaC0i;-r{;6?E=W)-ulmWW;zQ86Fzm49Vyq;<^`J;&o6uleA!?)Qg>!~@ip5kJ}G(E`XVp*3Vq>75HP7=P$atQ`; zc<=)e`$z@P5#hVHFeZ5aGRNOG{+ja#O7xzu-VnXtE6b?5{n;NO#^!VjaS$TrY>dp} zK)-KO5@;fYNI${o<+KX?sEElOD$p*07pYg9ypBXzUJvUoC|S!v^$ZcY65Stei;BqG zL`2>e<*7{(IXtxzk)I;_F-7ErD-n5OxR|0%z+{TZfm9-LAp42P(@haM;YvhKcw9u@ z1}#z>!6LXaMdSb~5jlXdm60MmrUxY-6!y%Ey6J^6^ASwT3#im13Aq zk&o{g1%+U9D<&UTn_P+eTe66PuxyoGF8w1aHa^-Aq$6QBx4J$+Y6CeL%%Q9^5t5ZP zH|ATug&VZhe5kmTX$Qlt=py6t+uvZEDD)GlMoQXV<9TlpjK}jwg#km zK+OEVzu&oc9wDIZcK`qXKKO8R@0@$?dH&At{9fnx%N>BCA^h%GA~}ExDo;k1`uAez z?u{$}8AB-LQYs8Mh2_(G?er?gzt=|hERs(HowPAJf#AMbFUGKZ>)Qp4LgZB6E{k#l zshTcfz-Y&wM1qYtnx|c9w@kIfQ)!zoke{*iL}r*6&%mV}Ij=Opsk7l5I^oi66dOYk zqRroJ4SCbml;32aaUyI;nNQNMn3Ngf<=l=UmNY}U%#vo3DMQ#SOp0w*OQi06;qo&m zK?;}AQz=}gzmVo4uIYKw<)ZVX%h%}ADaCsb# zH%rO#7(9_!x$ZdV8_exG9^&yVprV-xPK+R28?Y=*NYD$ zDfJ-+9I@okgJ`l(92iZQOb|bsFqx&t;kQ|0oVE*kJgm;{m>v(SlZ3%BRo+`^?LnBF z#=#WNSo6AWZX0mU4qV^Cy1y9i`HRVWGDq-lq>CZ`E%S>^&$w`t{2LK7SCgFt%$TW% zaZM%lFxI_y)7rt9mBNJ^3<|>G_b(ywFFVeIs)dBHpC&V0C{2i-=_8w7Mm{GN$w%dn zzcDD9qo8O=m|Axxd}3^5KJiZj5qJGrMm$rgl#M1SnjMH_6U#IZxs2?Vfpc0I=bW%Z z#ESx0#2Zx4Kp^`WFi8xB29p$@1}r1E1xyyhuFn1_I5AQB`ZEAJL%+`O*hi2SL(aex zm`mnq?8r+z4Vb%A_3!%d1Lkrd66i^#rK&z4PWj*6sE!qCZ<=~CO+7;ZJ0Z}gUQS=o z9vzu%Ff*mh%q&hD7X6TM-{w1E0u6y2L_>gQ#OV@k1Pe2sES)OfAs)*YnLs~EK|bh; z^|L_W8`sUGbz=xuEzX7m$eXl|&u+xW&P^;ICLyqL1K1IS*TpdD!qkKX%LBvQ24U~m zlA<0=$7ek5`d3Md6pI+ViY!(Cd}OJy;f|GB|2|7udmzvzKnTBeiN4Hcf(3!03o{Sl zpyfg<4f>b4pNIc-TxP)dXlv~+vcKn${yX~zRWRnMc0RaCmyYConO9dPZg?;C-`Lv8 zm`5<3qwnrIog+@s`eI9-H-e>IX%{x-c@44wGU^ds%s3#Hz2`V605DTH#|L}xx-NCB z`yfsO?X^S->!YSDlj+{;alhMSTKB2G-99B-oUU&pjt=M9!H7ZkT-OCzHHu*w2y`u4 zWQ?D-`jfnYgL>c%{C1#g0^iHGW^Ky@E>}~w<=_TKgdP{E2@@7t*0yY!A&W9V`d~+f zaq$cUFp0%2letSMH`rt_gNc)h`WDIzMU>(E`iL&wk9{g@Tc*sHLHT0U#y0-YzakQw zFVI(KE9i@i^ABfiNZG*@09-+nI;GbcuwcQ7{r-1nh6huMgQa$~aq7Im} z*kR(LI72H#T>{svqdiS{8Cr&)W1*6P;b`d@)xpd?)Xl%dJIEiF&pL$<)u~Gq`w}G; z|DkU_odzM7sv#XFfy8g+iKBr&n9``QOkfO(O?e=ce$%Xj$P+=>M>CFTtqdJOTqfA) zfVX0*pj=V~OTkEhw^oPv9A9my3nWC>!FNMd(f&iTj#*C!`hxkRshm%Wx-Q9mK;=w7 zgy%RKUmx`o{`gXT6#h5JKnF8F5frMN`l&qi5ho>#m}*#96$OE5Zh>8MBBpr}){q-> z4;I5a=!VVnL}(#NfxM4&cJa zfCHbvH69pgG+g)>qc@WAA;s?^YNO_Bj1NDH+kbI-}vb<6#p(9i;j<7{CNY=^-lZ+a%Z2t=K z*tGrP6o{>*6!g2&e(;2-eH3^T*Vm+>&i=rjpdDC~b=$WWL$M8?psGtpl$E;J#u58% z;7%))Jx>1*(3AS;fpfs0i>XG&pA0Hfw-KmF{Fw+8z#RE~z@Ik|@XUu8=c^dqL@c^v z0!oGr?(obFnW5#~qVw?k7>$Bv#uc=Gdye-UrvcnA1`fafViq2A_rrv3e+=&)OWURA zqpb;q0VdeF$%ki&bEi^EVK14r?YjgZW!oO6mflXI$0Y6V2|ZFKbt+|Qq)d6+e3a?R zSSJ~1r*0#lm7Tl@c*bzF=&k>NEG@!X8jzq9a^!R<%);+ZNo#{3h_(#ba8#?T050s6 zMwHSvC2mRi1~yjMP)fr|-K-^UKKa&NtdfV6oGd6AUlPt2Y|e8rqskuxZ~hFI7Z~h6 z8Gk0ri+)cS6!N03`&eGI4>u_4wRYe2lp14!UyH$w)pKj@ua^#cR1R8}EXh&jB=% ztjDo_Ad5!EQldT~FGJ&)_WV7-l5lM$K~@gI8!w*}UOpGZw3IJ#Rb2=p6RM4u%rKk6 zFniIGF9OO~tdh%TOq)fR7EQT>mI!>F;Wo11IHKLbh&Bq+Gz!u*3Pih;5UoL%rW2Mu z;D0ZfE$t`xL;e%y$W??SoP-)`2)A;+ zNi=heYWb&CD#1$d^}+Xmo|#GwRTGVR)Or?<>*t#D?3x@sBfPRqbf7`4} z-X-%a+3%@PLIZIU105;d4rv<%^Cu$^BshJ{$-zK0JwA zj2|c2l}XGMZ8)^2pIj8jqznSK5wSCzZ$Ji-z;5?Ko2;|iy^$)&c;C+m6+TKlcEKTL ztjVh58bowSVztkL)$Z0=?cT^tX0^M?E+aknEG$RCT9Y{j4*IAtYn7^;Hnfh|>9|}y zQISL3X|m>pxYtDSeoX#NY^OZB3>G?G+NeVCcwUsoikwGL(KgcM7?O9&!jgA3+yJvl z6({O)Vim_3=I@X$$9)tG^C2+IXQ9hsYYrw3&o~229CqNuASrTKeG}8>bU@t#T~3RO zVz=4BzaAH3XYH3xQ!4TM(c@wzE*uPEWlqdGmGrEk<VQ-d&XvzXw#GFqd$fyK=8TvcXSI|{RwL9}+Cf2Wgfey+jKC`C z;MT!+#b@<1gd3v$$7Y?gLP^XDoqPBU;i6!^afXmgS|v7|K$adJvh?6$bd^p`vP!3A zq)G<~iE|F&iK(xpCcB>f$QTH+M#&8P^Yt$Qm!@Mz`az$%>n0aF`!gO99nb}koNQ@+p zR6-s3ZzN9+WTwi93}&iJNNsur3|Epg(y`fyqaNf)1nStt$8!Ln;-!r``|-ReZPeM1 z=OA-c^2|U@`xr!4&xouIh^!fiYygOCTL$67*b%=T`h|1G^6)c@{KDr_a@(PQT5$Ni ztuC?f``s`|Ym2C4kTygDKX{^rOc3g4Hb`3`Pdo48!_J018Xa{`EA1s4EVFVIpLU+7 z3;J+YVJKv~4X2%F`Olf*IceedkJB+{X@~~<&uZW*47``D?&*~CVzKi3-61sN;CrDJ z(f)(8I;?}bERQuOOQq)Ib!bk2j$rV*${}sh5CV^X81&P`JNJizG6fUZPz6@#ugHb5&9(Nzq(5^@l_N-FK^P~IBqXK72L>ut%Jf$~EA zJfhrDYBq{Y1lZB4PX<^TCbr0kHE=d-pZ{Q&)}G<+OVWB121&UNC#CljMT3LF(o+K& z+43>ryZEs5>a-S8q0<6jbqdZ#-+mPtSE`+;ueirdh$v>i_ zy3I3y!cFXRb4wNq7MsXfrSHT>cy9}GiZZiG`zxGWW3Rag@CJh@ndhAkg7RUuJ=j2lHco`Z;5QR_$IQeU&&WLB2X{yrhTFjn@P&Ky{D$98$M62Zw zvu6hRPSFy_I3H{VCfWHW=%U|TiyGk^ZtIp}(^CUG7s8E^v%yU@asL4J&tZ(7dcKL@ z1b#@HdXxMaxk}!*x)j80;5r;dk;&&L`ea#pN0j@-7Mjt%aFOz*SQp4= zkJtobQ*>3CM`1DNP=L(q#A7tTV$;)j(|;)ZehRi5_+$Eq4l|}7K`f%qz&G*ga(0>+ z`8r&Rs;byR-}J+=SPE#bGHo_8NA`-#yzmFLwl8{k9+&29@ZrO?e>8q8%Gxur=NfWD z1^<0_!W!c-svD32m($CnN2$@^!|2^ueTr09l}6o60MbQXulCgNFrbXQmCh$S$11UD zGfKzLozkN=wa-1E{#>T7HTQSH=~cCKc8%UDfj0gC-j^&Od8zaJ^eFy z@?I0%GJ(cxc}|&jQ>-evL<~rsEUHQnuRZB)A3IF6tMI0uiI5~AggNmzUR;D)3Yx{) z4}Z$;u;9@y^RD1@-2*9u#9i6LI-qz4WI8ZFKA?@chJP1`KeM^mv;bEluJ7ZzS-)uA z8~;GR)So;9#35azz6fYUy`h&KAf5_d|L~_TQbfa0-Lq&1*V^WJb|F%>`kV~}`tUY` zp;ae_Li9nI_V2J_25>}Xc|(sXZ?8M*SXY%jy))C{0G+D%uW zHRMPXE}2qxrY~NIS~IZp+XD3W+h_{lZ4QbS0dj~7A7b$6j(*BcdTTQ9MH!q#!eMWK zI$2&b2Ps~yH;+2+3YGSTDxa0F%FvI5-T|Nz`jrIB+^@(tpuE!?E^f_{y&E4rCefkn zdS&n0DBAZhUIHrB5pUr^IJQesnl8GF-FOrCueL zd(n{1vI!Z9GXOB7IbblmOYD-cmjF*?pjmiBS!)iJI>=M|`kSzp5y+VR(OpgqK-y~P z!F2|=W*J7WYOTeq?KBg<2FvIW^|WMQ(Ry{2HuhE>i#r>Bj&{ShTe%m*sD)*2SwG~W zqB1@F_GFaXA5H5Dd4__IGyW>gK%f*oPLDR8(E=hRp@TSA$c}maaCas>^j13X8BpAN zI7%%Y-N8J@QHI*gT18@QRhm+0Y%MU!rpHNmczv4Ge?Y$Xn{@-M{asG}BDd9}(|i_)vOIlCddz){mUQ+Q$oOj+W|an&iJ>Y4YlMpt z8Q`O!?$7EDXAq|3$lKV8ZSD8BRo?3O{ynFIg$Gm%1B92zkN}``c$x3pUS-MS> zv}|&+yU*2gBd__Mj9E?w@4T z7IuhkS3Vc{tPu1S)?@TG_`v2L_y*azJ@_DU)93|r^cVTv{viK|e^-R>s5)>srFIb{ zB8!_me+IWU|AMVmWoxOI9QvhxzYpIsbda&}7bAb2)Ls~1)E}T6vf;rx{@fRtcabLJ zo3#D%D{j4PyZ&iWyw#vMZO#Ypxs06<7oo+1$Je*d9=XnVbVag_$E?US`G|8DNi*Qv z=LqtbqIf03m^&Z*2zVK!>q->a&z(g3?aEaWVrvwj*>X+D9U9AXf-KdMr5D0QQ5^~2 zx{T){le2-2a055VDm?=ZYtO$RMGhN|MgWgGta7+|XcILW?F{@D@+t~r6)VjI-u-zb z;wy(avNoRcA4ki%iE_fzbLEhKzootdU~hA{XdwfmaAP3d&>Qaz{MBeBEY$0w11@y@ zW_}J6{WpU-!+3o;1~e|^jzkcbbL~nVb)%}})YvHAp5q@(QEec{Q~iTuR6Ev~9I*MI zsxj^JF2&k1p${bM%tGyrF#zb>ov+^F+h>*^^wh`4(4{<=*e<;ZF6D=bsr`N;dQDkC z6xTw&BS+>onKxD{+)8t{zTH`>eJmr1$fa^cq=j)RjlqT%Xi<VCLs zy7S5wj7ADkuFTi+g4eN#4*29e93I5snYz_aC0Zg^HgP3|W+lB4a24Q=sCNGBZY5P_ zvx@mesMGl%MSI3bzeH_jJkawQC>;xrtwu) zaz0tAB{J1`pAPsx8;#0zYZF(BXj&;0N+Y$tl=gp@`1&%?qDzrnRA^NS`+l3R-fXNq z)7|P7f&J8Vng(0sO5b)G1FQ4V7Jo}h<0F(BamlwS5p}~ie!P28FF~VpzrrP z`;Ub`Ajhml@EDg$QVmSi%T;^zq z7u1W#SPrUB=AhkOF9RF4X~d9Z(vV>3@Ji8}JQYESY7v>}?0vL3cr5z%jJ|IPBTTmJ zb8tKLff}C9Ys3s2K;sPd~jCo z72nR$S{VaJHFI%fTFrj26E(HiXx3V4FfPs7$v+ag;|gx4kz~|M47ek>U}4jId!v6c z&DHINLBSiw{4e8Ot}#n=2%d3J5>zzP5D*bU$bwh*_9?u&HMG0cKLrKya-fH+X*tlt z6=ME9A73=%p;*zHNx7*+nN_0XkJ5^85^QoSvo}hN8JRBgi}vh|2YaN8I2>1%bj*AO z&G__&Of-DsB@#6Q>nnLlh~@lFzm!znH%V^68~&5&*hkKR!UA?1AnZ2Zi;X>LoBckG zyIh2f_^~E&RE`sR9_M$oG!e#E@WSz*IOVYT57VT;+2zVH_n?%4dMMDY9hbC!{uw6woKv%50!5Opz;MSRC7gOvhei zihz=*E~McS-}K>cpqZsu*vgt!TE{mS>sT~BOt1GK?zVh0C-&wSv}nllq7{c<@wPk^ zBJQK+Nvyvz?T52i6od3z#FVW_it#2v=3t0F0lN`SU^m*C*+5}y+Wf?`Seea;Mu(%K z{=2Blk2Nu=L|I&-T!JR%V-ZSDK&L2t@I|gqmrK1uQk~@$+B9YeNni;7tDF_|1;m1O zea_ozo<-~AbZaM17(zOo6vnKmQ~ld%w9Lxr-^))!0qQ(hvY)I1x!6u3%E4%`bf5Cq zg2&pgS(QA$W>Kz}>yt@;#RF_=a@|FQ$m%Qm(C0f-3UuTmrwB=j#Pk%|LkL|7t_*5e zmq4nM{DWuJ+h3$_P;(EV9;7I9>8Okgr(kGiWAjIEX3(2y*f_;^eE0|l3!O=mj~#Uo z=b_v2ZjFCC&55lpS1k30)`8RR?9s={8K{MruFAVMMO(&c6bd>}gS01`F|=aJOZeLu zps1oTAb{X95e$;JP6G@?={__~2L@YQ9Db+lmord~2k{84(>6~h+6cG$MM3^89`fNQ zbY3k=sd$L?JtzSdWN(ZV2lmwdTAxp6fG98;g7FAwt=K7iJfuRvS4=K+o5S5>{3mv% zA(SU2^t_FC4xBEPKh=~S03%bV@JcLYm(Q3N^IPr*A``!zb(FWiR`kzM5QTL=3 zgr2e9c~9!&w)&JSz1jhMEChX4rmf?G5R!3m{^zY7&Ae8hF4ljtxlNeCQ5g?t_(F(+YN97m@9tkO* z#K1TM8tRk{z@h@D7@%0tTM>Ep0PcOfofSC)EtHEKSvVUw0M9XOVagQ$z~p4U@EoT`LqVCzCAR?dWhe=gaJ)Ah%!WRqHuj2@<8XZ zB(u*;miE)TO`w<_Aut6+i8{|lQRmrV^-}ox1!7sE+`L3ty+mnA+(8m*y28NqE~84b zavd73UL&hBM{?pXrqYXvRBMsRU=Gbh^b!4Sk=^nkB8=1EfW}0bX7>%6RhN;L>gTi+ zS*%`IIg+ z7NulI#`*?xRp>%ffaxf2_PHS6tF@!oVhdbaOBL-=Y^}vJNX?aA&64A$_n9I$!tOl8 z_>aFUhSUmi`Zz_F6x+^~$ynJw6XP!0ALYIeJasFFMnxCAplg_=Sec?OkQkz%54wn2 zsX>^iYY_Zf(Yqa25tQ=K&_G2u0;TgWxbBNZ4+IBStT2K9N6=OvaEGv*>Y0oNb7|^% z6REO{xKz~l`*X6Oh|B)~8Zu43LY2PyAJGs|2YdbrU-mOjQA7jI3F z^U1b48`4ptWU>)ueF?-y&IfydN+5l8{F+cmyb0duF^PbH+n3$*FQW~nWVSW z!Y%E2737JId6hK~fAjvKe%3&Wte3J%ELuaugPEcoXDxi_p@9A>;I&c*;mXRcwPO+b zZOZrX7NYfDsa?|B#FbH-JiR2Oq;@8LhC=Bx?0LEZ=`J~9tG5xFVi@w*IjHTtNv`GM z%6cw~wcP?okNc!7>K&#)13i7o)Tuhzr3duDTUCrpF!K;!PgLkOe;)LGnyFP z6k4G}@SMT)BUrj>g|D1ZCk~FspuCjIeFT!<)N>Y^;)HISyltL$2v}%E)7}vOu>aMv za$49jJ-63=3J%HSfEf#pifvdA&RwAy)i(;`BF(gT?kdk)~&Vlze?lH(8l{H0T9F7Cj&SL^0@bvNnn=*bIsJx z7dRKdu2or`gf8S5H>`z>HE}Rt0~Z^Q^3exGd+4~qKs9^|Ghl3qIuC0}5Tx9#+J2E0 zvD|P7z4OhRu8@11DWPJs^_07H-PpM<^@AdJ>%IN(b6cj(i zd3uouP@+96U2aZ+W{GT_fjb8QxXeMP!p#*gMbQ7Syn-PCz9jL{1-`r-UrGu#K7x`+ zVEQ=LJ~fBird%#~UnA9qJ#Y}xXE5)Rm~PkA5h?u2_|B)g*2r;L6ZDfgd89(erDj>H zni~i!X<$I^LHwQUg{@-_u{Q6R!` zm1~=6IJ(i@xxpG-5Ruq>Eid~H$V%DKChNmZaH*~E<_+~1EjiASi`(7GHDG3DBAsDLCP zuycpOs*-9HJVrc1jSViyv$g~mV2j-s^phR}j3?;C*#@j+Cy*LM5MgwnGbB!&v|V&3 zG5aILFR|u5t@ExR|N7BOh`GC3gmviHEA{Jc-0#EnC0tu^P5KVL!&QmvHT?b#?(@D|Z0f?@g8Sd$3gG&8{HCi4&p*f2 zg6mEFy5{j>6J4`#IrPg&qkA*1Be=%>1M=az`TNDD$oGm(@8Y6+FRn>Qqw5J=|E%Ai zr~4Ddri1!5gnQNxicPoU%KtI!%WzqqE;iNT{#jgJT%Z1FF-FO38Dspj;=w|H{@j1I zPyS)bC(1f{t_xI?0{>1Me^PAv2`;*C!S(5%6`R&QgP5KFBJV@!vvC<#D+SHFj7Pq+ zy-GHSNmxkTNLG=E`&SJ!ADwd45xM_1t2#q!pAiiCH~A$9VNG&l(s-8+^t1!)bV*P# zL{rdk9>z^1ehoLpBy2B;F9J@sd>XYI?E1Xt$ihr;zm65Fe`&lEolCgyEwh z*_m<&GDW^}{^zMRL-c0nXm9LjUIaL5WR=A=>3E~HolUG#oesOtSaqL8p=bwsk9Hse zW!!S6M?nX~VhF_`KwM$3A2i|j2J9cWVGKY*hC`1+ZU%`a{Y4?tWJZ@^Gw~uvxYafe zoGD3@dLR-9OB0|EYO>HauU431HibfzP^Qh`h8B>%%6$w4B5Y$~gWjeV`dP5ij8PxA z-b+4X?!jn7Yj!toYtKZ|&l^kE$nJ8{@cc2N^Z=Kx520G4Pd;p$E4&yKaTfC0$|1=4 zJdXZ@V(t>y{+A9YRc$nErpR&~8hAj;YI4xEa_w_Abd3jxM-|(EG)dx2_!{MbhT&hW zJR~#|H~?Ha;JYPDofz1&VfOqbNRkQ42S~_lS~xCRn5EbnnpOJ}+EoTNo|K~u@$NNo z5SSVA3_#ZCEvwL)?2rUu3xaSnl~@6u2{0y@SPuZd)i#mRpeH!xA<+mM7B{fgYCM@= z>!5++NpeNvEBHQ17*iA%pCnzMQRhm81zi+|DxD3BuyUv+t8n*ke;Q*4Ii8o6Q)w?r zpRd8A6ms^=wpvqak*hTf`A+hy-cO*c4I8Tmj$&pq|gh<-$TEm2W7U8b7rZK32w-0T5euc z0-2I>8owqrEgKW1AGQXJcS)dm;~y~Id;l=5$&p`h$T#>|*d4$q(mxN~Y{XC)SZbpv zM*kI?XpO+;M8dI6nc5oY2H$gSYv2TKrV#&%%m_V7spU1an4?pkM*nF$4TUIm7S{D~ zQ2d~4YYJ(NMyEVUc#_Kuz5E7V!IlWX#A}~&_6(t0Sl-rlYsaYLQ|A)x;#D~`IP+r- z9QyESI7(ApP2=aHhDJv|tW!zqtqz3>UDk84yg<%U7lOjWRthxLYIB)-o>q~VA zf^l$ZI$2k?(FB?#)kE+Ej_b%NpHfBrT0UtFetEjCTZm9?$dbOWwT zT&r+l4>en?_-B$)MS1^t7^Sg=ZNcl+6%|!Dk%~wl2=WnJHK66@VJx6eTD(%M$P?B1 zIL|K@XW_J$SdmSRd_5YtGsNr&1@6HBLNIWgEOfs>EW++gS{hH1>?4(Jm1^;b4dvl5 zHWV_r8`w_Wh+K}R-|!PoX;Lz*SoxDdH{VQ)3LpD*~64ASnnH0rsg!dB9=MTx{Su#f>9qJyyuKd+59c zpRghMGuh6Fa1t3ys>zsUlBYp1dc-(FtbbOW-$S|c<0E5P;*f<_U@*Q2WB8ht+*#T`*;E=fz}(H6 zJCF|ff{_kGKQzoxN6d!Ne9hg+QLb5x9BPI>d^KF+``EUm@%7hXgI;qF7x!;QA~N$h z*4)p9ylkX{NI;uvxrD7oA~MT1`M8jWjdX;vBintR53lxsOePFeMDpDqp}qZVfK4;u zY#4`5&wGLh6lcRQ{u0wuJO|T07RQO44Szrq=`swB9?4(VT3I&5m6I%)1yeY30PI^5 zs@z(RQzg$5PTTS{J`M#G>=0yaPic5XM_okaZsB>@-Kl0k4Jk^WbcexvmBMrE)9!X> z!z$WR9?M3<#D+V3`^`c5tV0BJu9LPF83&!ftFd7}9je)I5Z^sP-(iG(?+pj}Sxn(` zPKU%^Xf(n_&}jTP6ItGb1YyG+GP>_wtNra!9kJPs$-G&f{X$i<#kYLu2_SBk_*R2_ zn&|M|CC`KbGxDdfkl`~_F++4|^qvIg$?P1@LY&=-@oGBu1Wi5wx{I!qml4|!mlM}K zTnll18`qch%OJuTf4+p?J!O9%n(;~(*^P%vqEFooO0>!yu691ug!Uss5WOy}j}xT9 zahylo$ZyjJ-7)x8>bIfc49i9w$9zj-7;` zp`UiQkwgN7z#M?`T1&`trrcYtEw>SBgc!ydu!G<6Z>L_SDA$KV>69&%b=a_SxC;41 zFXil0(&uq5XTv+Bf%2T``5f*zY_J29Y$~s+$;Vy0v0WFnI0Mh21)xs7`kPDRZ&(jh zH}v8%e2DW-bp!g-i&rBd^zuqHfsSJhwbfIzs3RmJmG*{wUPW{kkShvPk*T0F_$^vP zoPn^WsOP^j1AbEmPN5Rc%K*IdF&VNxwggvF35+Z1`LApPs9VawDb$AZGGN2Kcm@FH z#WQ4mT!tdb0LDhP;#Oh?0WZN{(MY#>w$hd#R2zeJKH__Z05#rVX+tPPugf&ce!u`u zaoGb=sS!Uh26Pxy7T=;-E7v}gN-$>AVawStNVDVV6^-<| zOmoZEqRkNLR1WMQG9&m4dQU{+$4odfoHw6I6FypoqzNB2LlzIV1esAYm=Y!&8P1!} zqzNA_L(+tgmLX}vN6V0vIN_sZC`z7i5;o9;%LyJBF~OJbi%;;~m|&7KEA0cpsyWiypE9dfu_#Au;n$t`D70{5G`MI^W2%8lfayKVK72ckGJMjasBe(^_+&S8EKjDqkT!!!l@&+W;3>CqWaE&1!TN{2C_b_9Ze*2 zqjGH;Jra!Ox9Bi>H9hDsnlTbaJ1iH1(dXrx7_(Saa}@;P{0G}|3vXP;3BanFJbFie z@b1S+@6Z_Nh_w1Pw2Mrt%C!6Fkx*tRjFu6~Y@mnaCdN_b)v_VRcDx}0T{`5exY>qW zr&Fi`59;!2Y08j(@lFAxZ;169?UEtmY@>t5{v%Xovh6*LOSQ zoqn&V>c^l zt+xDprhQlK!sGS&BL`KtDa$@dIbc2DI9Q$1=gBlHu!R_*2=sFyHJUx*c7nkI#MF$BXE*V*0a; z{#0-QdTWfipgWJRD>lBx=Z$ari1A${)QpcEUyKW#lr*Pxe9S2SIi(qcif$Q0&2xqb z9Nz>G5H3?4X-8?8GyWsPjF120!;JCe^Th>ws@$(uLxQM|&sN)*{Eh#Phyr&9 zq8lMzhBY|LgU0lE(p}2h!0Q__L|um1D-LeE2LB{{GUk2;3lO`kl&m>JUjh9mI(4B_ z|7-3RXW+9)g8swg>nW#~Ed3crHKWqmkqKObU6j)A3Atz$*R&rs(TYv3NoQ73B`J_RK)Qj3%^oc#9WYaXa&x8S7G4G#jfSE+73sW9$toh8(nKm9|P&)?Sa>W zmFemmWb_1bM06>iLgp(A4)ymh7wyjH4&=UyZZ|!`A9XdRPvCE$OGsCbiI&?T^Oci? zq2ZqxA2~_a2M%qtp>D)Bh5C5IRGOL#Pt2-aA3LZ#j6_KTrx*jeY8S(66*OS3g4f;W zI1YLOyndMgQcZV%=-m7{hRqB&p!jw?GQ1M@AZZLX{cswf;5n4;{tzI$DgzR6Pr5jW za6PXoH-kecfIwy(j$dbfh)*CdZwminT;KZ`jB6lM$z0*vm47?NL>z3)OvQ)vnYu@` zm!Rj915p5RW#$V0*=oCl#s^vhA1Z@@d`j9IDqx%hn{Wt~0mmtxx z`>^vNFF>}|?%wP4FCyR#i_`sGlRq@z`we%y>T(}d9R+*nu#2x}7G-Mh$xHCa1a!;~!M7_JzP)lXz^8Ba@MAhOB+kv(;h87qDoSi8 zsb+@1hv2)%u2%1)^%QaJl<>V1S@g*(5wE6o1U>1>Mu=oR>44w+#NOqz+MDX{CQvWU zY_v^4H+E^)y@O9MUl}DqPlni))}nSs5Lm%_!w@$P>!6*{7%> z2ycFHx%0Wo^xW4lkxhOs_SHt)R4Pgwqr$>zZR&6F)0lHYT&0&h42yD3tcF4x6Qo^RXQ6&4vb~%_hmfbcBeP&l2vg6XXSWFVcOoKNWpe?-03wc)sbFADu&!0q z?G_zr2SBl*4(vdPu7!$y&IZ!xk&h)87&tx!=E=ip&=6hg?86Zdtd9CU=*hxr(68?xsT)pBwC5_(3lCVJJhW*!RMN^4|3I3u5FR&_+km%4 zUG^yG2ONupB$6ak{O2<5b2uf7iRMi2uQ&AuLnJi zlHg+wv|XDggP_D2O2rKd3TMa=vya|>cohlJN&uD8FaQk?Ts!^SdF>C)Cx(5LrMc7;wDcXUT#Gka)N9$5D+v6>0IK7 z;&MR&rI%1ao^)pr>?$}dpruiVKe74qxcP4#Ij{NHm{VY17_nHxfQ$OQ$hWW@M|N-x z;5v@$48Q<-a{xp);Nu;fU;04>K{dleAK+n_;9)q8{xCdzk_K&skjJZ)o!=l7q|U{V z=tHs9Le|bFB@*v~=L-N@KK_B0!r3?)EHD?6cteY5FjmoE&@Lp-#R)F7@xy1-bP}tP zMRDzQ!jlD&gIXS0fkrz60ThJu<#=Ck2syCtey_#Krg@D99vx=L40o#Xa}H18HrZY?_JwS0k7!5(t_&+&eeU-CjEtK;{V9 ze2WiuyW8ua|95UC$yF1&s%Ao~bDO)rZdGiAPZ=Y;pP5>H2_AGds94M8+KfZz!*Cy5 zE=Mgeu2eHn)Fjc5UqLmq&d%p7@Ps|gUw6_Js=e7#YlAa8^I~a&NOx!fHqf1%N6_8j z9@yZ%U~715bay%%-UEqQu04G4yw-@ytiDzVv;1`k6r186K%qgnSK1H_L~G}W@D5Tb zKi)r#u8TIvj#LLwT1$Rodd9Xdu359DzbAawLUBW8S`V%e9S`iML$^3XpD8@q^Tq!D zuIbGf`Rw7`4%_VcjkamB-ID-?xu?ULrLQyF>{y5wGl2ETb|-s-J@){@UuL8BuLSng zeLB{&5s;h!novceb6)L*&htA5;8usM0Av^aapZ<`TSB!N<`|@-nJfc~lvA@A^X8t; zJ!K6CJ=wf)L$x!^2$9M{f&C~;N-hZBXLE^SFt_czGSj(CkYCnLaUi#2eyeTTwM-jr zoZ&vUaRG67Cj-s3xAb|kTQH?%k#{t48GSEECS*xO=KG1#E$4Fb`bCcAa*OfjH+5x=Mvq>0)v@pqo?}1&XTnca5wGSp*a&nr6=L{Y5<<2jstV2hf2=? zZ98Z`ud2{@^q_h~d##izzu>0+Ns##4sL`u!-aiVM!0Bq81y<;gk*~txUieaSg&dO^ z0;I4shP8pOO1pA9Bybc?CzP_+3PL)Lygz(~*V61hPu`!f8;rUYK+19z9|n3SNIC}yO-AVn_U&EwSV-Di znyq0n1L*H^w_Idzf$IX^q>}fRgJ=ZrK{0W2oX%3lmT4dDC79j1&>YQ&F;@=uCQ)|;s~W{&spg);PM%;QB{9HWD^69R5G>fz?A*>)mWdOv0klbFONx#Mi~$i z*)5h&R%XWK#o1V&Sy-nTxTj;4lI)n)ti2rc)?KGbbf1$b6av474A`=6!9loCr3+bI zwAyjcsNd85q{)U~_A+m|Hve8)=b5m&`dx+I| zR^M))I^!okFj=Y-EMHTn|E-N_$JRhpjY;ed)^*|-dTDpCv{SUh*!5sRCk|X7bHTwi z!OBCTuCw5f`>eC!DHLXKc`#Pcxjgl2Ku2cfOTu%AUixl>^Kw*If!JUts7A1LzT4JM zQ0F(nY-3~Efi+^VYRmkY+J^IGzvgQIe?Ry z#I{W*?g~fY9TYEt*fu6=dzt~G(3lV(1`;tnwA>6%41R#qaKaiV`yBZ(K5VkihaIPN zIK-^jSYpNOq9wAzeYCb@bT;fapeH0TAZfw_!MY4*Xb<}2ZgYmh)HhyNvN`0I9>|K$ zD-utoemqYV*&-P##h1WLVFaCldp{8)MbLcVl}$*2au6R&QqwZ+ao&5A_*iV!7h|Nf z1V#!=yW6XMJ%C;l6O{u=(oABarV|r|KRi2xX5?^OfhvjEpOeHDffE3`@}I{M0d@?I z=ug|V{tS+Y2R97EA?%=^26=N~p6DTJRU%Jhu^z+NV5-&eY${62rjmG}v(~yA^3DKL z+hwkgz!D)GX=tGfo`BMuY}XgwSo>-0U&IWx)z0x1=Fd}SLGPmTLEvKcVWFFd7kV3R zNn35#13(8Nm%uiecp+qqrGW=><#zlzJWvs;0J8u_ps%G!83WEGJ5mYp{>Sk$;O=Vk zEt2Ae^M1+A?9;iI(YTol)BK5${U$nGrtRF#csNl)^ZzL~^S7V^D0Hdh%g-efjLgmG zU`6}?F78#LdMAN1`0vKa5G?#@oD7c?IGJaFYP{O^79Oo+PUgFKMQ(Zf6!u%7{S<1j zI4ARc{34^kR?@`1>gnzpzgsdguf`b}PHv`TB!ZF2!Z*aoe2%|`a`QO&1l?f_B$MTk zOln|WLbgxqgiW_(allFtaa2K+(TzT|%Gl!0mrP!aR+G>HMjjRxUabwA5UBPX0OfLP{sGF|7$~%t#&zO!z2ljC%3bka(;h){+=A z1qwIL%jBKU%Vdt=W$4&O0x$Cl{~XE7s4me0PKFqoi?TC$e=<7*Dl79Z#?Hji+4P+{ zI@5K?7bace(@RXrTTtvVYZ_NM8%zoD6Q7tLdGo{n06+4>r)bF%Kk};1kGKqeq%^Y) zdm;$%1V%(}Alk?AL%?$Y^pcDXUc)ym26Jvcz>nAiom+O(Vlk|ly=nI_zGFI3@Tw27j14zykNnznA2DRXIQr3o+nWH#?H<6Svd{*gnxZ6q+ zJPMn#BnTTXD9YgZ1p4c!@)dvGkV*Mslf9@BC*P0?Td}?D9>l-Pez-fW)BQ&6P1v1) zqOSw{eKiOZ(J`xiMeZ9-^@^c|bc+3l&w{>Q;(h~`6<|}K)KQ@n!SNz!BweI|-=jW6 z6~3-qk5WDbj^Jok?iQL9s{JuoAON=%`1Q}z`Q8X9^$u%1){1G-0{}bS$@h=4r zRM7tjc)*f`e2T2@b;~>OSVWg#wL$olF0l(i673^cwV*OUMD$|SZFAJUwP5Ck{n+WY*%K`+>UYN^8wwex1G%wwk&nyZd0S^^XUZD3@Q@9b=K zyz!Hn?5c{j;}G-cZ}0)aD!^={N-VdDF@ZfB-L*LFyzWL|tLb7&I|wpy>puMTx0wCM zOzsxd=02cY-3Ad1Btwe`G19ps=4yZi@D!7=@>2A4~5H^fFfUg;HVVI$ha z_)Zk~I6U8-^geY2kKQtzVAE1N(RiFRT9r=Wi7FixvJzxFqgSL6+SU!8KShsZ&U7h1 z0DY4^Fr4O8$gmN6I4fje&H(FiNgPJDQB1NFyj}pLO&bCE0K|yR#|h&mhz8;LD)hB} z|L`j3gFnR^a-+AhkKO3a#SI2r&>H_eUPSIAV=ifB6It8jNr$3p%=7uS&WHoP>(@o9 zZF?dX+fM*-&K>ZaQ}?-s=Gs;6x`Fkdzcdg98WKilkSq(B(JMddHVLXiktV&wN zjWjso?Blt;mv*=Z*B9JtbHA~EwzX^WSqQ(~l@8}-+UhY-!5M&%M65{L6L-&;5Q00# zm3p@yUjN5p(?htvi|dED{J4IMYce`#8r@xic|@`$_D_F7$3m?abg5t)lfwTDNEFrz6zp*~BYWv+*~!*BPPiaH7JE9a2S*zGf+a<&qLvp0nX$WC9>y z8L+Keo0XoVY2Z)rG)B3%pc&M`8Vsv*ha=w~?)DF^TwefM=37Sw*qcBzZbguQbl)Y* zlpo^<;4dnFtZ=ufF5|UPR};*33s)*f3l-&1;UdLWxJErLOJHcln5{+0L0rGURf}s2 zE|V?spE>bI!m}me*=DmQ{h}Wu-pA=fLMVh>aacJx!+kio8t#mKh;bM(;O<>X173nT zJ?z}_8ZzQIGX{Jf4R~6yyTcj6vNc6c(x6W&!CG8xQ!3-*-G<}05OlAW3v|^kIplK+ zn%##td}bYZTxamS4EO)!`2qb7 zY)Mm;DPFBc&@sa_oP*C`M}P&p#{o2*fX3_SFhOPU9b(xSbm%3_ia(8aT!B@Ml za9oy}G9NY{r{%A)>LqMR1Vz7zl3(YEA-szpahvDRJy9GQ+1yM;lW_#JU-soq3&)tT z-}uA*{z2?FTkw*gVBZi!!Lzu*lGCg_5UC`KPUUNn(k4$v(mt~~a*MIgq&s&sLms(I z95~!WrmRDcq=gPd5tjKr-2 z&#^5BrrK`#4-5;CTY>YjBy& zsiXa~j7XH*4E@z#$fZ9bSL|m>s@$Gp`v-S11C$+zKhlShIt1aRpp=D#XTSj6-QC7@0EDFvqmA1kHoS*C)c z#vxPcAZMWCsV4iuwa&s1veQ= z!{`s9X)WS#uwL&1!Y0dM5W6tb{&znLYxcCGq@zOA4IVhvj=(Q73!@4gVLIek`a8_A zVQj2Vr@?@KL(5v6jV{+RPcekK+mtEzfI`Jtw46sc4Wu8al^8r&l<8G9*U=#@`h!DS z=7el?!tSd0={pr!XHr&>4wUui-^WYr!-+iOHJVMY|25%tb(L209_0p+NBORzV(1U@ zJ(Q5oxq}by$peezl@A9NpS8?4;glgd<7zFkm_=27>wGJvL?+_EVQVoZ<;W!cgd)y0 zTHA3V5yuK;ba(#xK^K%f&TJh~7)hU23>?qiT&D}g6-e;F76W^_LH z%Ro9_S@#o__O1w&;76$PN!ZA;QAt^OHR{&7?x#bIXD|*4ZTNS>#q4S@RC;7qD@-$B zFd^-rVQY<;hlt-f5w+5OLA-r#8uF{h{ll;po9u*lHSYUqXG1Z)F#7In2-AooFjfN{ zF(!}pMRdT^?H|rWP@dsDM7ro>6W@po5BX&Aq``+;GFw4T%7Dw=QIQynj&iB41>DK_AtDC#a(L$u0wD zI2$79fxBOQl&Q_2UrtVQPd0gPh?Rt5xTlzwNDBBYcqWFYhF%rnKXkvUT!O}xapa*sKm`?dto4!DD@ePAM7!xe zKxioin!u58cpriPI$9FF@Vca4)(5wo>V&?qRfX}6Mqn4Y8V|UeA~Uew)M?0(s=`$Z zh-S9HrXbKK>3ti|Dm@iM=hZ;~vltGw;NBBQ2%x*iOd`0nIuxvX2XUV3j?aZJ(m*~c z$BOV);BeG!>ltr`9;HOitxTw{xyxiK(y}-6$if;$LKKTsJjnEIcGqSqK-=jfI zg3h)ex`4Bx9S`6x>d%_+(Z-bD&`tWa4SHS*YgSkjT12OGtD1%=YJ)b&`4{Bmwx&>B z?#^1g4b68-&$HRRbh^}HQdS!uz~#S<#tf!-2(n4LRqjBwHD z=5`dOUC?e+Arj7kcxp4HF3o{TB)BxM=bO~vihS|HvnWh(Y%p&{u(Dlyk-zL=0lqt^z%ks>G0iRRg^OXvJ>6Gx#4 zg8okG($btNxE?$Jn{Itnn(-+ntr~s?UyP?dL#YdL^eDXWha34)Zhr;NYn=|3w#Q6L zt({QY5+D4uSeHjb@tbBks5l?7Berqv^rwSsT7Uakz z&`^}bJ|HUc7$k=Pk|9T`d;fj9-`zB4;0fSaW5fgB!VmOE9L+rl0BZ+qescpQ0pwK; zYX4a{`+-U`8ErWGTCD0gxpAmk4wWEf@}^0VndL3 z0v2Ad=(e!YuhJoXnS7IYXR$6H?Z`mC)|zr#%PU|({ZDW&juuJ;w=}1qFE=b;)~Xa? zC=l#nL7tKZ^2WKtURGU2%Nvj5%BnHjn|Zb&eRBrJr=sYJIjB0fGx!MCi$3#L&=J6d zvO-%O&rRVVdhP(X0XL3YytoTLeFDkjO|){B=Aly5liTjxF{!)^HC++^_D2M`3+5mb z+MEm5&0Lx6s%OaEey>Hele5cr?)zIm*6w)pHk(G|mf+mT9RHwQ#X&+EV5goazHSTN zZv%V+=ioG_w87OC`>F z1||vA+W@pXI4)%pyOA*&?8X9P#h9^Fn73F!D`u%=H!38%feB>y+LGN^kQZF4vm5+1 zvm02uW8*7JdZJ${y{lA^^AySncEc!1bOIjOwaS7y5s%)AxLfSbAU?X5mK}S_2D^c= z=EP|=e+$5=X-;4_>;dX3Fgk5&;t?X*bKBh=fSL}#lfGmGCBrnTxYa)mPxY<9WZ%eZ z;vb6(_7v7*+MVAHvq~DyZ5PbRJ(Y`{D)<6@hoW#I1<`I9r2Cu=e|LreoQrJ6v@ghO z5>#p%Cjn%ljdmm!p^rVc5q-xW!b3gE!6a|Wr8K|+I}VlL*+Hf$PYYlr@&?5VfUCB4 zV$~xR3u7R+7h{0<%lull43OIM8qg6Om{)1nHSj>_I**E)`NVtDAMl=&litl^-T+Qh zm*%6L?gNq}#{4YJ$qj@2Zs^Ar8Uw?_=$g@6XJ|A1N`%PUkWit$wM&Oc!<+h3{>0Wu z|DkJ5*?>@XC8`y7(R;AT&cK@}VKfMx^IsD}@4^mOb36e;*L;(QLXKK8gi7#C0Lpbb zP(tGYpj;ONN?`D%b8`0w8N}S}>)6LV!ATQ?HX!GDU+4vb!fV2fV;U_@6R5h195Gk~ zBWi3D07g1O1g{5T;QqWu$1QS)!MWf^W1EQDwA@nA+_c8(+hb`8H!iZ!{&`N$ds`S;8AL=Irjkk+`zXk(F7C};gO0YNl2hR2{zW{pwi`* zqbeW5^Fn_N)HpxKv@ute8z|}1rl(1g+?w^Q93whJxD-@FRAH&O6fZ3&Y_mBd=smd z8q)faPD8WzAFqr_q|NyacM8=`#?r3VRwmb4Y7agT*MLISe02PL(-vG_{Z7BP>DT?P z`KEkar=9Xnzdxg2hJ4q#qmjsI8T^PC2?Rg7J01H2q;U7-H$9w%m;Ue&Xa^|yJbf(| zC9A2@*|cgx<5c0zU)}f_Gj4Y_BJ@pBeq)K16n>2p=nc}$q9nhmazbMny=*FV>hDpA z@aCYLRnFCo)A2~9Q8_uXoE)Q^aY)k3$uY{wiI)SaB6RyO>ViCfLgP5pfy_0mbCe$< zDMwGJndQLJ97tH2dzqhiNu{2M-hn>f1FSPyzteByBAE@wi`23H9mL$EsaHs^TsC!D z&1b0O^xNZ7u&>FI$vjDl&0R-mPHCwaF+zfywxXDAR{=$@UbU-${uqKG{f_!{{V#i` z6`QDDigISbvPuhbBEliDZ!nuOt>zchiu{CDM3^OaL0k_N(H1rt;INHR^#SSdR&072 zMG_HD(0DEipHZ?{ouJ>u1pOwGQGvw5u^Kx?^J(*7@xifU;bEgs&W2-15SxgJXxl_v zBeubfbXGlzIlLz>hdaW>mj2}%3|>twM1-T)&}P?-^@K`Jz#AMa&nN9 zad-G8&Rx}fEu2}7!c2meXduiC41HbyMZ7aQ_G z2ikH6Bi7svIdV+Io7OJfGn-ji2?pB>dVD?%)~t}K8t^o;(57Ar|8r~2)n!$XyK3xO z`w412ni5Gvs`da7ht5^~3wG&xb{31VK9?j?&cQ2)l-s9a4YM;l=&ml!J%E`M8L{Je6c34SHB)GdazIH;Ar9v;QqG_z668nEK_AEo&W3l9tkW2BdP3iTZc?-< zIM~?45DDv>zA$24HjbHev(KFmw3JK!S zS{vrAx6_z6XG0n4Fy!$z6V9v9EHb2u%V!kkDAF8v;-1PMFTK!kO^lo*<z7Q%+ zTWfChq?yVh({ZYGt)98TtP(^D@L@)6+_CUJU}3tc%^TLY+_~zP65r{s#ecX)>7@q?Eam_M@vwa*y2OkwAMrM z7jSTGa-VaCj-iXWZwjE5y%ouNXbDK4iG9-WEV3F4mD`2m18Z%vaX>G11G0VE`d17X zaW*W*H{vm_A4_t4tgyiIctL<=^Kx8e0CH$ClyEU4 zFCmY`w1$SThCad?x-nka*o%Go5A-QqP-3|ajmL!L?K6h*BFn81lGvJ>gypsf^5~Jv zjWJq56g2dIc)5W-d=jue_tN>MATGKO;kq_+zUgmqjevKiH{^zt>I{Sl9@%X;z}VUF z3;ZMptPSk2lyscal69OvRk{cFZoQ6-3n}n?r0$g;`iAg#8p};~f?}wH84v zw>&@MBFy+1q(ELrDY~}NAGXC6jxrbrea)y-Zf+nmAW>jvtpnt&b*(Hu$yqDwG6nK1 zvqZ@a>mr$FB0iJeV6D)j;@fM{2;Dtw2Ry~XMFSG2)oh|kYe<;1Z^1D?CasSLCkuwO z%kx^zOHn})l?WHJi{`)~#-_RGeU-NRmz0?Wm0v@G*z_=lLOe!fbrCJde$ZW2K~4>F zs&)m7Hfe-25=OW}yIoeBIKYWxd&hspvHfQn+b0vo_QrKQwiwc?R`WOYG1WG{pbw&& zFCOCo)QRE*uFm()2SI)(iCF3J9+dT+t9C7$G2fJmYY*@=-RXCZer=sO-}E=QuGH`J zyFtH3tPlUmESNBoZdPX*u`q&lnvzwa?SQ(6nMG&d-#{PB4AdgdX~^wC{vqx#Si4e+ zIh+X{;zDfX;8LLYR4rl`Z|yKq?rx**GQTh~ek&88v~|mZ5QI1rG8rlpkC(+Cvqr|X zoeFjq8|dawfjz_{R4jHPCdoi1%%BNIMU5IXZDOSjRB)gTf#HV`ei)LFLV$MFvTWUT zWd>|ZVB*ZQOdcNXZed^TceSgv+jZOS*8PYUEodgeB>bobV=)M5M5;3mYE+s8h?(#E z+~=7|0jMe{5c_$#b83?{n|D_nvd_x#ym9F6@1B|7_vR^F=vU{`Gc>;r?;L znkMtQA=E>YF!Z0qxwT)Y^dA#858Pt^BzYH>&B!t?)N}4^nvbG%pxYW~8tZ;(nMB}BpZ9KiW8+juVmExZ8>?z#(qvMA-ys#`BkSb%fnE>bMG0y~x z+u(FOXE@cYIIV3c)4p9~tjZ}j6z8-JoN!3HE!aF6n4k^trgfl=btdv|RwSB<;yYUaM13}$ZTTl7@e)9tgbr;Q~vO!R3N z$`n&SAi*yKEWUE;2i)~%>Oa%y$!=V9OXAjcFZX`Rf{ptM?$J>4<}}~fZMIv;IS+|= z>3-3XMdZGvSfsF3Jyv9?r>zGXtFou%qU|NxvAsyr;|^;(UCfd%nI+$=Nb0M4d~4-1 zPqg?$u~hH&{*|&C6rWXUI5gvSMpVJuix2p2)TdbV*|P7bSSKj2WP-nvhN)Xe%>ymO z^c#veDYt$|z4Rm&L>=?FM$OZ|<-XWY*u71!KjWKYoT*XT;kPO8ldq@B`?{c%s&;s( zVocAO>=}CWM<#6XoeEZGa4KJXrv8jvHq{;IzrnoDGq{iFK>yt_F$zVVtuISMvW7$) z0bNCp^1~6XEW@pMB6b-xlf38}-4i8{TR26Wy9yazhzg1fMq)!{kwOJS{w5xiXEK`L zg4S=0zSh$)CDM3>yRYaNiq$fl`_ zGNpCJhs~>wtuJvd6kW+_#-G!|Ynh`)v{1PM74_JmMk|o<(aub!f}keUY)lpI{tY8C z%OTHSn<^k1$}nlTQf>fioSW8Io!)qZy0@BtOx%mD@yk`xUDn3xw8pvV!_vlON6=rN zplP!A?CTPF4M*kbExxhgF^Pp>K8dfFi_O;1iKQ=7;>NVban9$Pvm^N6!>p~c#Q&}I zE4bB7Q%jxFN}0tDwlA?JtfCCL;qZo{6hP5z5*Gya56<#tCp>mkE7W0()q^b!iZ0IY ztRxGR31h+Kp?)A^dO%FfNWR2r*|`y?WjO3tB*UGmbJXdjx`b&$3Y~D7`0b(^{a#yj z^dIjqNlj@Q4`sP*IJs$R2Gta*YflQE6u0BMO5sYi))RSO&4q8vT*wVUG7B1apx(YL zS`PmGF~pdbLVX2i3IhUzcl%ayHK1AqrmMSqeG5mR$S7FzeL-EVBFdSI5p1TLnA|GM zyknE6;Fff^r$-^sjj2AFT_)b0>g~G2C98N`{B|4-mIH@~r%^L!^W55=eJ!MeN zAE`v)(c+<8S?ob=T*H7DJ)d0_vetXE|D4VDS*}#}O)~IomZ*I8B}@!c^$qW+)E1sS zMg6tqmWBN8GN1odSkC2S#xKb;v43A?2r$kxSGMZMB#<5_W|FWX@;$dG& z!YfgeoJ*wm&&8VF!6{+*mXz=A^_EJsNV`~t)b~hqS$6d4)g&);LUS^h&4P; z^L595CkS5ugw|RrZkjhUmiUM(kqf#5C;Pci1$V>Y@!m_t8*$b%QN|80>SyG^b+HS% z&MpnpmSB^1#GB2rTRR(H4h>C-bUR8>3fYo%xO*OoG-tJk zRZ)F`Hpeps)KmOYXPiZQuf+Dfp54;8^0zwzNL`S7{ZkjXA2w2^&>~;pP7nTo$zbE=SCRyOK+LXdC-OlF@ zKWG$I{+~3@F0H>||5_3vALK@2HqM)AUsxAX3RkgFba-=(RvwU6zMGfbOe^DyXyeV& zM(k0gjpeG1K07{Ko6QCu&|asB2m0Qiac^rcqSE7m_ZsoR^Qvv>vUYWPQ0FA8KeCzasz;Gnw&2XO6Lo0%17yX1|W#1XOk zoMhK$laq>cw|r5xTes;{&WNb}d~rl~{8o)n)xOSmdz(=O{kLnOrn>9MLX*Y@-nE4* z_F(!_x2N+h?KXS%!SHQ%?JG7K7*AA`gui0rVuFg}^n^5<>C1+f)Z^l4^(l!^vb<+R zWYC&EnE`9_G)e6YakvVf=OxYuLcHo~1lXCuTGpZW>6j1SW_|YC4u4}5tX|zZM>wY0~3op0CkpR?e!^@LHu;s^; z9@+tqRqPde4F;*~CT~o=2WsNR*8V;y==flX!?8y6h*++yTm%0yozYsa; z0AF8*B2Ui6yYg9WuVmL+1Fa@ezNozcQQ~tqyR-8h?WOn?nyR$4*L_%h~2Ms ztv3lph7|>&ca7nk@0B5q^Eczo_+aVF=J)qD8{cF@Nga`Qa}npt?0$u&OM)@)eJJxDz1%9jd^_{r7i8Xp1Cx1guA2Aus$z~@ z)XT5QyiPAOvr7(Uzu})ftNQs!!@H`Z4YI3xg+*_8M>m&i=VJeHg>>xCC}Q*F4dA)zU~R7|W>`BrKS1GEmC^TFc3bD$(o)I8-P^<0Fr%f1FK8*o7fkq1 zsd>Iv=J`N>852D=XH}=2p)Rlwq*3m!H!o$(w=Q%(Z>xL#*Rz?iO7ze-s79Z7!uBjf z{i1ehAZ`o0n3op#KGs6_kS4lmQ!bPFOy0El1A(Y*F{in|k6le{=$O`0Un@wMLZhxd z7owrW$PJ~}M4}na=W{D|^KNZH*PC0mIb_!zznMeKuUTC!+Vnuo7QPjRYN7ArcvYm| zTDt!(&EaX?OQEq0_ra}cWk$?CVpy0DtIq-_uOYQK;(Xpw^*9NrPV2fVJNLJ9B;&0z z=TGMlg<=80qnck;Qku|p)d98_qywH+AaEa!Eqpn7Z}WXTeXq3IH-1Fxkyig+d*~^( zT!p%&1&i^}j|mMk-I=~S2g0E_pjdb(>V^pniR6Ds!r>kIL!wlmS{)ARKj1~a+oN}J z@~tLH1zTGdm}M@wZ+x=MJu2IR zZ+^h7t|I$5?F{}%x|ti`_X^~y_jHFWSghqa(j;@jc4=ARswh%j6}YkV7NapmYv|M9%emd%&ehw* zZkTFR-KOA^?nXUB?Y(fHcBzn;z+gfeIGgaEiQPpsYhLJSm3$%fJwj}0qT&3z^by^I zTS{Shocd3p_vbJRw(Q>Z)NIQ$&+#wp!`)OgT=BT}dfzd*?Poc8tVfV-GeHDz0teVBRX>vO|(Z-=4REmo`rcwOYbyZNa=1jG=s>T{?^c){-~8bA>8Y!rFMj zB=pTy9BxA5HZZ<Y^ zF%ZN1Nn()bBr&K)3=xCxl(v1ZlpkobS+T1-rSDQBLOa6aQp6ywRm32zv>L=9ZAcQs zmxLHv4HR1!;&R!A!!Wh7Cw`p9#jvA1qq>AmzF5PK>{--VWh?HMq;a69+kDJ#`3kF z+lp|e`m%SdKF5;i>$sl%H}`4!%C%Vo^#2m3mfs`Nsye0hTRS4%*MzH1h1Iw50?0(& zAVu%!xUM9 zG+~2cXZ#9^oy)(lkG$N?amIbbx&3a^i<8tklNaan<7M$w3*4tuYbZsnQDoj~7Vim% zegf3toihY>UBX&O!YP{VH)xh~J?gQ9x91%PTBxgwhe569hNxA}jr#7S(1%o^6IF2% z9->x>8;x3x@&F2IjY6$W;ows%C|ao12=S0iQ0o#m^MAiH_yZYwPrpH{Y8;ZZ`cTdu zsr6C~DjnX~9mIxrPLZ^bgrU+XWtvnfK~1HmsPvSXDpU$IP^rX>pi-g*OML$TC;;E@ zR1>a|z3@zZFPVic`PrqO8?kEz3Gl_~x&Nv^gfQlK!7qfx9}5~!W! zT(Q37Pa#?)*rOBeieW@6^<6}_&f#=Rj^U*H%@pa90L=~&aD4T})VpvP^^!mCHVK&U z2pYbA7!8y5DP+veAdkzgbvPN9nRHnpjGj~f8Uq(N_q)xt_&DFX9G1FjBXk})X=`X+ zL_o;S9T-ux3;!UaWK1~(x zXSjRR7Eje7`#gzepBBx4$40c$0W=kBCF`5Eu%}%Q2`AhTIRseR z%jOl-u^&cT*z7^tD6{tg#b%r3J3IqKYg~_}nC!za*`BCm>_&`YPD2^XB}=M>QaI<_ zhd>OxYu@7fob&lS`NZgzD!N^`o!#oAksYHBjP>&0g_@YOwp2@9!mBHmDy*aTlX&(@ z3dKa9`41w}4bFW;)mo^V6c(k+w2BU0y|8}4&@4b~`+I!)%V-Uin%V{B{?^{3yrM> z*Py+ms_)RZs|hhIE>5{0z@_Kv{fsrNCeTWQ)DmBDT7SrF1)HXR7!0gihfm#`72stG za0xSYucbP3>Xx9kQ&Lk?w{)STGIa}}Ox+U0)D5R->^3Bt7C`{2QQM@iDoz_BLoCeb zGAzmP2XPv}ouS3Tj(a*Zg>wkZtUcDFrTeuVPpRRlE76S&Ao~$e^-{GPkqQh3OklZq zH{uostYsLP|2eyn6^a3SExckta~(cu?$Jl=Mn<2`KXl%|kCA}^`*5_m{3#*CBm;&p zSdEU^wC!rAW9@Qxg)iT*Wbx3}g{_(FvUFoBG>idTY%pNG!hoqP+>PleQQI6CFsTYq zV8BY^rNgH17J~sRFsAUuiUGS+V~2sQpPIbcWvJbe=a3*!tdx+fHRP~4c5V;)!y=6Lr(xkzoky()fc$ETJ!jM@3c}+5t zpte&|Q)DJxXOfu$Ye$a63@0;*{?o~usR|b(aEF!qC$rRAADR1ht)# znxZG^Ei+Yh+>V?d09SI$)Bz!}l1bE`xNOx5Jt^Hl`0X7}N$adEtt#igXa7rI^1* zRKY(`1xt8{ZX_;=W6ev<3R86enBtI>5N)p%y+qhP6_N*lEcxaKn&&u|;22J)AQ^Qq zoI6>O%z*Alk_;U8eL^Z6`cj;on$0yUl6g{V!3lv9RP|<%|VJGQ~NZQPC=k#YIt|z zym$}(hB@lw2v|wZM9DTcwo5D~UiYrkf-3v71q^@j5$!-{xAtNZ)2w95PZHJS8K^b@D(;{G|BJ$B=>O3w%M*`jmUoCPxzgk+yW;@SAD&>2_3eng;rgT3=ik zw&Sa*9{kuc=Z3Z=wov24qM$AC8DZc!}3(T>6Hp4`+xLlpFSIb-Q&( ztp-^-7J^Ue|2}%&aSNyU9KY)mzvw=y9k}vXar^AR*#hVNO?;>?NfUo2-*r=p))k3o zXa^&2W@sOx5zhUmO`UIZoLk%(IG0AZya?C4rCcvh=np9+3>?z1HbCrF<;#3$v$Z|@ zoV#7?xN?7SRY~7bH!2nbCXL_5w@9*mohYYkJJjdeYu3ZXU8S$dvAM?K$1%JO-sW!i_BEE9p5JCn_hzVp zOOLpZY%5RTy~I;w_&{5%2y_I!LIo zeDJmzlfC`1=XePvwjRR=ac_&?o295U{zWtxyq{CI3Apsz(l`jJ=-zrQ<6V#Qw~10C zZJgX@5ezCGg-1YqC2UJ+8+Kz;f@Ejaf6s zY|fjJv&A-}z&Cc@LW(7({(TH~LdU}OP2MY=&t(Oo#a=s(Kz!o@2ke0Z=?mxaEjdbi zu>u-H;h|%uYrC+|;SBbIw7M<|4$K8$K5@@wp-LEN>I?M$o%6e*6omfzwtLo>i*Zp2 zk6w=p)uR_kh&{|dUR@mK$?F61+M4d;K0KE)Df~GH0kQjxSZDBI-caa=C*@zrE> z23L`midra5MLT9ak&l;Q-@+41rODDW9xev<6{2yiHA5cwW~%5>sE&^Lhk*k&+Cnp9 zla1m6O&v^yM9&g$V_gkzr%`k1eiR|)U}8r^ZQRLUjJZjVl_{xT_?U`Q?hjGit2jNE zgGJUQ=1eS7T6G%;)*TZ=QZ&W`XVW)aOCp+6C<~q8Akj1}q5H@d{(S5gWE|spCH51Z z(#FtF0SZSeXtOrs*pCxTrEr(c&5GM4WtHkIyEC{+-WK<^+Pw>Cu7(?A0XzG}>~`O@ z(6QYP)Gf6>@8ylI;LF}i8=d|G1^)d7w;u3il`WhXI_7)FKh5G@;J+_%mv?q?D-_nn zMCp9a^Tu?K-5JVe@1s=4(h1;p*R)!q6Xav8NraE`VeDqtUX7_cg#>GwdYkPhy1e!i z8D%Y~#$=wzn8p);11I}r(kSD5?>~#WkwyAH{yl+S6aSFSlN9i+*;vGE0=q)Tp3OHJ zFtITmKfn_joeqJ&{ML47sFDn-4X6CKT5$4DN3i4%YOlqnlcM?ugR{wmRfpcFB0&ge zXd*%Jh#9(60v|CLr$m9x|6)2wPD?F76}v({^tf!!kc&_(N>h2IQ_|%1D6ceo$!u}z zN$ck=lzGoW7>zQ_hn&GCUZD!SHwE^)U;*^`I5)3$e)nIA7w6{ozY*GaxI0N3!Jo@W zeoIvu{1*xTts;`(_a*!_h2_4Lg5l!-ZMWbzcOYW?HQ*?Vm#J#X=28#%r8`iyoX?VY zCjMCkb8v~2!5z&54kjD2aGQ8R_KVKYEyPP~fyCB1q&tD%84{I3X;;MnYRLG2t!nCx zl<}-@QvJ&8e+6Hv6~Gz%1W^26W(YEg6SU|dB6gO4;1Z>vc#PqN)`qt{y7@$x@3Ipa zlfej9OF{777yRD8rKb2=^bP3Nnx)Y`5Bb~C64%mD>R4vufKOY-+<8b_;6P%1!gHv8 z?1?U;6q&6Dtm3o*Lxzammvf@-P{W-aG+-!G~SSSW0>XN0G0_P6^&K&h>VM2sC6|s_fXEe5KWQ z;mxEt@TS9m*5S)Mp5uRVHWchnx6G7(&QO_T!a|%*vc@L!(i?F>GX;S`tfD)|kyv%6 zH{$nZ^u2~Z+TMLOud}!+Kh7eY-`B;!Y8}{II)mx-cyWCXYU6tDvt;z)#V@z7OV7QZ z7rFJWuG>@xHS~j#>vna%g=@M^*Od0Equ|gnG|t|d8#=c2Z1ItBT`*kbi1}GFwfZQ? zz^SsD&CI4T#GS*e}fWooOTIIbeSRhT5Qo^AZ9st{>L@r&qVRpg`XDH@ph zS};$zadeurE|dlr<@w>Y`46Yv9iEdH6x~qK41I+T03e|GXsj?4coX4-Tq)Is7lr)u zeIFUAuaJrXq$tkAf#t#o!kO7_ow=7Ga&8aP!851QNzMni5Y*>!l)_csl8H;~431Xw zaq#Cp=fg4ZB^&PvBqngiy>(n5@$Tj^jFA5j%^5%;aU)mHx}4vAk`Ze-JN0+JoOqBi8duj%emwj7KF4jy+jSy!+bx0qNzMlw2=8W)E!wNat-`Ca-{VBR^kwx` zU~tT)@!`5d`0ah;?n5W44#low5(;x)eFZ#12a5;M_ZApBvi{Ob`Z?IjijfRk!&RAbK78?SM(unc^e`?alS)pm)om(Fv< zvLrjF_Bs71JeEDr8iG-`&u%In?)gl5?yy4(il!*jv-&ICUx>8f8tBiZC<}$TROL#v( z0$0X&`Y!b-3un^md8h!p`<>spnFL5cgCOej*$=CXLG{2x&$wa4An8VeB8WWm1-fA4 zDW9Rt8Q0n(-5FX3iVMATvG;DX#BfDW?MA)dRQl#z3HLhs+B=l*>~I}CVy-?XJChG@Wciot0q(g zwZ4(ZgLOe|(O$nkXRm*hhADh@2F3rEY69CC=XcxXtzuhWMATZHA=w>|bGE*uyED#2 z{&74{O&i+BSTek=z0?`a?xB$_(5iSr_Z@vFP_o1mRxK0PIpb%q%O1=g`sa*dD^{e`ThBAXByB-Yr_)cA8e& zq|n~fT4RJ|zp`xu$2UPmKpGZS=a9H!QxJ}Dy(s%Y~B z`N|*9qqE2Bo^2N(Qq>tlgY(>Bv{TP1?No<4oDEmx>Na&Et1JBH?uQY&HVVUqxA`Gm zZQ#36^g@}iV*z40LI0}@PSBNhYU%{N&66usBWLKtl~k?GNi|g_Eq&)cCRS5PRr|c0 zpL30CF4Os9?jQHP7hj_t!1_saux%AePc@q1ZdN+f!-`kxs^$@WafhZVP@1a4D-cc9 ziz`T;flG&|o-oh64Q%xzWbXJ&Mx}4OC*iL;xX@=NN^inNUE_$hE zDZ7ja4v%Li@Gy!RP4J%>2qtv>DS5HfW^^;7VH9!#Oc3KHW^s?3DZNjEZtL z>l(X&9XT>nnvy{^X;z&{2@PfKmL$%GRU3BXNDQ-WO8HKr(LptY?57bOCY5{ElM&it zz_snlvLeuuE-HAry3wJ)KTHKricx|>X|5?K6zG$J!r>}-#;_SPiU*3l|2?qmSAs{irxD`+)@)-1eOipxFMMB@XDkCSl0wO&KKF7PYK zvQ*IP2h+x6XiiO*}6EU~?FzlN!xk9J1&J*o%8b*EEOaL^YZyZY_~ zr{Rz|?>RFBaEFP&%LWu)a~Z&dl%N}A4Nt%uB`B<5{ts+cMfXrTG-~KH^b{+thEwwu zt@p4I2Ues8G(#)`bFJrL=vlj^T?oDE9Qvxgel$I-u(0lCZqwMM)E?RQ?^0}#^+WfE zVQA`zb5;2 zQDT^U`0emyL#2B9^1XghAZ6ztVdoD%MWPb|-C1ntGn8QLaT_KU?W355!ez%NA*sVK zG+!Bp=4&1PlWDyeLN=UKrlHNsG_)#T?0U!G*uZPUF3P;c*E4`)e551_X&f0}K*SU1 zpSmS$_f%j&oQ)-$n<)sl`Q6uG;LsE~m*I}6F@c}$cc0rJ*JuS-z-z-{oRgE&OC?Ne zK-$0AeT^XHYe?(ckps_1hTNe?&yc%L^c(vyE z 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 z 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 GwEqX!Zfp+# diff --git a/plrr_subs.c b/plrr_subs.c deleted file mode 100644 index 957cb6eaf..000000000 --- a/plrr_subs.c +++ /dev/null @@ -1,67 +0,0 @@ -#include -#include -#include -/* The following don't seem to be needed? -#include -#include -*/ - -#include -#include -#include - -#define HELLO_PORT 50004 -#define HELLO_GROUP "239.255.0.0" -#define MSGBUFSIZE 1416 - -struct sockaddr_in addr; -int fd; - -void setup_rsocket_(void) -{ - struct ip_mreq mreq; - u_int yes=1; - - /* create what looks like an ordinary UDP socket */ - if ((fd=socket(AF_INET,SOCK_DGRAM,0)) < 0) { - perror("socket"); - exit(1); - } - - /* allow multiple sockets to use the same PORT number */ - if (setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(yes)) < 0) { - perror("Reusing ADDR failed"); - exit(1); - } - - /* set up destination address */ - memset(&addr,0,sizeof(addr)); - addr.sin_family=AF_INET; - addr.sin_addr.s_addr=htonl(INADDR_ANY); /* N.B.: differs from sender */ - addr.sin_port=htons(HELLO_PORT); - - /* bind to receive address */ - if (bind(fd,(struct sockaddr *) &addr,sizeof(addr)) < 0) { - perror("bind"); - exit(1); - } - - /* use setsockopt() to request that the kernel join a multicast group */ - mreq.imr_multiaddr.s_addr=inet_addr(HELLO_GROUP); - mreq.imr_interface.s_addr=htonl(INADDR_ANY); - if (setsockopt(fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq)) < 0) { - perror("setsockopt"); - exit(1); - } -} - -void recv_pkt_(char buf[]) -{ - int addrlen,nbytes; - addrlen=sizeof(addr); - if ((nbytes=recvfrom(fd,buf,1416,0, - (struct sockaddr *) &addr,&addrlen)) < 0) { - perror("recvfrom"); - exit(1); - } -} diff --git a/plrr_subs_win.c b/plrr_subs_win.c deleted file mode 100644 index d98fe38c2..000000000 --- a/plrr_subs_win.c +++ /dev/null @@ -1,108 +0,0 @@ -#include -#include -#include -#include - -#define HELLO_PORT 50004 // timf2 data -//#define HELLO_PORT 50000 // raw data -#define HELLO_GROUP "239.255.0.0" -#define MSGBUFSIZE 1416 - -struct sockaddr_in addr; -int fd; - -//void __stdcall SETUP_RSOCKET(void) -void setup_rsocket_(int *multicast0) -{ - struct ip_mreq mreq; - u_int yes=1; - int i,j,k; - - // Make sure that we have compatible Winsock support - WORD wVersionRequested; - WSADATA wsaData; - int err; - - wVersionRequested = MAKEWORD( 2, 2 ); - err = WSAStartup( wVersionRequested, &wsaData ); - if ( err != 0 ) { - /* Tell the user that we could not find a usable */ - /* WinSock DLL. */ - exit(1); - } - - /* Confirm that the WinSock DLL supports 2.2.*/ - /* Note that if the DLL supports versions greater */ - /* than 2.2 in addition to 2.2, it will still return */ - /* 2.2 in wVersion since that is the version we */ - /* requested. */ - - if ( LOBYTE( wsaData.wVersion ) != 2 || - HIBYTE( wsaData.wVersion ) != 2 ) { - /* Tell the user that we could not find a usable */ - /* WinSock DLL. */ - WSACleanup( ); - exit(1); - } - /* The WinSock DLL is acceptable. Proceed. */ - - /* create what looks like an ordinary UDP socket */ - if ((fd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0) { - perror("socket"); - exit(1); - } - - k=sizeof(int); - i=256*1024; - err=setsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char *)&i,k); - if (err<0) { - j=WSAGetLastError(); - printf("Error: %d %d\n",err,j); - } - - if (*multicast0) { - // allow multiple sockets to use the same PORT number - if (setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(yes)) < 0) { - perror("Reusing ADDR failed"); - exit(1); - } - printf("Accepting multicast data from Linrad.\n"); - } - else { - printf("Accepting unicast data from Linrad.\n"); - } - - /* set up destination address */ - memset(&addr,0,sizeof(addr)); - addr.sin_family=AF_INET; - addr.sin_addr.s_addr=htonl(INADDR_ANY); - addr.sin_port=htons(HELLO_PORT); - /* Bind socket to a local source port */ - if (bind(fd,(struct sockaddr *) &addr,sizeof(addr)) < 0) { - perror("bind"); - exit(1); - } - - if (*multicast0) { - // use setsockopt() to request that the kernel join a multicast group - mreq.imr_multiaddr.s_addr=inet_addr(HELLO_GROUP); - mreq.imr_interface.s_addr=htonl(INADDR_ANY); - // NG: mreq.imr_interface.s_addr=htonl("192.168.10.13"); - if (setsockopt(fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq)) < 0) { - perror("setsockopt"); - exit(1); - } - } -} - -//void __stdcall RECV_PKT(char buf[]) -void recv_pkt_(char buf[]) -{ - int addrlen,nbytes; - addrlen=sizeof(addr); - if ((nbytes=recvfrom(fd,buf,1416,0, - (struct sockaddr *) &addr,&addrlen)) < 0) { - perror("recvfrom"); - exit(1); - } -} diff --git a/plrs.F90 b/plrs.F90 deleted file mode 100644 index f4a62b0dc..000000000 --- a/plrs.F90 +++ /dev/null @@ -1,156 +0,0 @@ -program plrs - -! Pseudo-Linrad "Send" program. Reads recorded Linrad data from "*.tf2" -! files, and multicasts it as Linrad would do for timf2 data. - - integer RMODE - parameter(RMODE=0) - parameter (NBPP=1392) - parameter (NZ=60*96000) - parameter (NBYTES=8*NZ) - parameter (NPPR=NBYTES/NBPP) - integer*1 userx_no,iusb - integer*2 nblock - real*8 d(NZ),buf8 - - real*8 buf8a(174) - integer*2 id(4,174) - real*4 buf4(4,87) - - integer fd - integer open,read,close - integer nm(11) - character*8 fname,arg,cjunk*1 - logical fast,pause - real*8 center_freq,dmsec,dtmspacket,tmsec - common/plrscom/center_freq,msec2,fsample,iptr,nblock,userx_no,iusb,buf8(174) - equivalence (id,buf8a) - equivalence (buf8,buf4) - data nm/45,46,48,50,52,54,55,56,57,58,59/ - data nblock/0/,fast/.false./,pause/.false./ - - nargs=iargc() - if(nargs.ne.5) then - print*,'Usage: plrs ' - go to 999 - endif - - call getarg(1,arg) - if(arg(1:1).eq.'f' .or. arg(1:1).eq.'p') fast=.true. - if(arg(1:1).eq.'p') pause=.true. - call getarg(2,arg) - read(arg,*) nfiles - call getarg(3,arg) - read(arg,*) iters - call getarg(4,arg) - read(arg,*) iwait - call getarg(5,arg) - read(arg,*) ifloat - - if(iwait.ne.0) then -1 if(mod(int(sec_midn()),60).eq.0) go to 2 - call sleep_msec(100) - go to 1 - endif - -2 fname="all.tf2"//char(0) - userx_no=2 - if(ifloat.ne.0) userx_no=-2 - iusb=1 - center_freq=144.125d0 - dtmspacket=1000.d0*NBPP/(8.d0*96000.d0) - if(ifloat.ne.0) dtmspacket=0.5*dtmspacket - fsample=96000.0 - npkt=0 - - call setup_ssocket !Open a socket for multicasting - - do iter=1,iters -#ifdef CVF - open(10,file=fname,form='binary',status='old') -#else - fd=open(fname,RMODE) !Open file for reading -#endif - dmsec=-dtmspacket - sec0=sec_midn() - - do ifile=1,nfiles - ns0=0 - tmsec=1000*(3600*7 + 60*nm(ifile))-dtmspacket - k=0 - do ipacket=1,NPPR - dmsec=dmsec+dtmspacket - tmsec=tmsec+dtmspacket - msec2=nint(tmsec) - msec=nint(dmsec) - -#ifdef CVF - read(10) buf8 -#else - nr=read(fd,buf8,NBPP) - if(nr.ne.NBPP) then - print*,'Error reading file all.tf2' - go to 999 - endif -#endif - if(ifloat.ne.0) then - buf8a=buf8 - do i=1,87 - buf4(1,i)=id(1,i) - buf4(2,i)=id(2,i) - buf4(3,i)=id(3,i) - buf4(4,i)=id(4,i) - enddo - endif - - nblock=nblock+1 - call send_pkt(center_freq) - npkt=npkt+1 - - if(ifloat.ne.0) then -! Send a second packet if format is floating point - do i=1,87 - buf4(1,i)=id(1,i+87) - buf4(2,i)=id(2,i+87) - buf4(3,i)=id(3,i+87) - buf4(4,i)=id(4,i+87) - enddo - - dmsec=dmsec+dtmspacket - tmsec=tmsec+dtmspacket - msec2=nint(tmsec) - msec=nint(dmsec) - nblock=nblock+1 - call send_pkt(center_freq) - npkt=npkt+1 - endif - - - - if(mod(npkt,100).eq.0) then - sec=int(sec_midn())-sec0 - nwait=msec-1000*sec -! Pace the data at close to its real-time rate - if(nwait.gt.0 .and. .not.fast) call sleep_msec(nwait) - endif - ns=mod(msec2/1000,60) - if(ns.ne.ns0) write(*,1010) ns,center_freq,0.001*msec2,sec_midn() -1010 format('ns:',i3,' f0:',f10.3,' t1:',f10.3,' t2:',f10.3) - ns0=ns - enddo - if(pause) then - print*,'Type anything to continue:' - read(*,*) cjunk,pause,fast - endif - enddo -#ifdef CVF - close(10) -#else - i=close(fd) -#endif - enddo - - -999 end program plrs - -! To compile: % gfortran -o plrs plrs.f90 plrs_subs.c cutil.c diff --git a/plrs_subs.c b/plrs_subs.c deleted file mode 100644 index 7c364e51c..000000000 --- a/plrs_subs.c +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include -#include -#include -#include - -#include -#include -#include - -#define HELLO_PORT 50004 -#define HELLO_GROUP "239.255.0.0" - -struct sockaddr_in addr; -int fd; - -void setup_ssocket_(void) -{ - struct ip_mreq mreq; - - /* create what looks like an ordinary UDP socket */ - if ((fd=socket(AF_INET,SOCK_DGRAM,0)) < 0) { - perror("socket"); - exit(EXIT_FAILURE); - } - - /* set up destination address */ - memset(&addr,0,sizeof(addr)); - addr.sin_family=AF_INET; - // addr.sin_addr.s_addr=inet_addr(HELLO_GROUP); - addr.sin_addr.s_addr=inet_addr("128.112.87.74"); - addr.sin_port=htons(HELLO_PORT); -} - -void send_pkt_(char buf[]) -{ - if (sendto(fd,buf,1416,0,(struct sockaddr *) &addr, - sizeof(addr)) < 0) { - perror("sendto"); - exit(EXIT_FAILURE);} -} diff --git a/plrs_subs_win.c b/plrs_subs_win.c deleted file mode 100644 index c6ddf31f8..000000000 --- a/plrs_subs_win.c +++ /dev/null @@ -1,64 +0,0 @@ -#include -#include -#include -#include - -#define HELLO_PORT 50004 -//#define HELLO_GROUP "239.255.0.0" -#define HELLO_GROUP "127.0.0.1" - -struct sockaddr_in addr; -int fd; - -void __stdcall SETUP_SSOCKET(void) -{ - struct ip_mreq mreq; - - // Make sure that we have compatible Winsock support - WORD wVersionRequested; - WSADATA wsaData; - int err; - - wVersionRequested = MAKEWORD( 2, 2 ); - err = WSAStartup( wVersionRequested, &wsaData ); - if ( err != 0 ) { - /* Tell the user that we could not find a usable */ - /* WinSock DLL. */ - exit(1); - } - - /* Confirm that the WinSock DLL supports 2.2.*/ - /* Note that if the DLL supports versions greater */ - /* than 2.2 in addition to 2.2, it will still return */ - /* 2.2 in wVersion since that is the version we */ - /* requested. */ - - if ( LOBYTE( wsaData.wVersion ) != 2 || - HIBYTE( wsaData.wVersion ) != 2 ) { - /* Tell the user that we could not find a usable */ - /* WinSock DLL. */ - WSACleanup( ); - exit(1); - } - /* The WinSock DLL is acceptable. Proceed. */ - - /* create what looks like an ordinary UDP socket */ - if ((fd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0) { - perror("socket"); - exit(1); - } - - /* set up destination address */ - memset(&addr,0,sizeof(addr)); - addr.sin_family=AF_INET; - addr.sin_addr.s_addr=inet_addr(HELLO_GROUP); - addr.sin_port=htons(HELLO_PORT); -} - -void __stdcall SEND_PKT(char buf[]) -{ - if (sendto(fd,buf,1416,0, - (struct sockaddr *) &addr, sizeof(addr)) < 0) { - perror("sendto"); - exit(1);} -} diff --git a/portaudio.h b/portaudio.h deleted file mode 100644 index cc30a28a1..000000000 --- a/portaudio.h +++ /dev/null @@ -1,1123 +0,0 @@ - -#ifndef PORTAUDIO_H -#define PORTAUDIO_H -/* - * $Id: portaudio.h,v 1.1 2005/11/29 21:27:24 joe Exp $ - * PortAudio Portable Real-Time Audio Library - * PortAudio API Header File - * Latest version available at: http://www.portaudio.com/ - * - * Copyright (c) 1999-2002 Ross Bencina and Phil Burk - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files - * (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, - * publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * Any person wishing to distribute modifications to the Software is - * requested to send the modifications to the original developer so that - * they can be incorporated into the canonical version. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** @file - @brief The PortAudio API. -*/ - - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - - -/** Retrieve the release number of the currently running PortAudio build, - eg 1900. -*/ -int Pa_GetVersion( void ); - - -/** Retrieve a textual description of the current PortAudio build, - eg "PortAudio V19-devel 13 October 2002". -*/ -const char* Pa_GetVersionText( void ); - - -/** Error codes returned by PortAudio functions. - Note that with the exception of paNoError, all PaErrorCodes are negative. -*/ - -typedef int PaError; -typedef enum PaErrorCode -{ - paNoError = 0, - - paNotInitialized = -10000, - paUnanticipatedHostError, - paInvalidChannelCount, - paInvalidSampleRate, - paInvalidDevice, - paInvalidFlag, - paSampleFormatNotSupported, - paBadIODeviceCombination, - paInsufficientMemory, - paBufferTooBig, - paBufferTooSmall, - paNullCallback, - paBadStreamPtr, - paTimedOut, - paInternalError, - paDeviceUnavailable, - paIncompatibleHostApiSpecificStreamInfo, - paStreamIsStopped, - paStreamIsNotStopped, - paInputOverflowed, - paOutputUnderflowed, - paHostApiNotFound, - paInvalidHostApi, - paCanNotReadFromACallbackStream, /**< @todo review error code name */ - paCanNotWriteToACallbackStream, /**< @todo review error code name */ - paCanNotReadFromAnOutputOnlyStream, /**< @todo review error code name */ - paCanNotWriteToAnInputOnlyStream, /**< @todo review error code name */ - paIncompatibleStreamHostApi -} PaErrorCode; - - -/** Translate the supplied PortAudio error code into a human readable - message. -*/ -const char *Pa_GetErrorText( PaError errorCode ); - - -/** Library initialization function - call this before using PortAudio. - This function initialises internal data structures and prepares underlying - host APIs for use. This function MUST be called before using any other - PortAudio API functions. - - If Pa_Initialize() is called multiple times, each successful - call must be matched with a corresponding call to Pa_Terminate(). - Pairs of calls to Pa_Initialize()/Pa_Terminate() may overlap, and are not - required to be fully nested. - - Note that if Pa_Initialize() returns an error code, Pa_Terminate() should - NOT be called. - - @return paNoError if successful, otherwise an error code indicating the cause - of failure. - - @see Pa_Terminate -*/ -PaError Pa_Initialize( void ); - - -/** Library termination function - call this when finished using PortAudio. - This function deallocates all resources allocated by PortAudio since it was - initializied by a call to Pa_Initialize(). In cases where Pa_Initialise() has - been called multiple times, each call must be matched with a corresponding call - to Pa_Terminate(). The final matching call to Pa_Terminate() will automatically - close any PortAudio streams that are still open. - - Pa_Terminate() MUST be called before exiting a program which uses PortAudio. - Failure to do so may result in serious resource leaks, such as audio devices - not being available until the next reboot. - - @return paNoError if successful, otherwise an error code indicating the cause - of failure. - - @see Pa_Initialize -*/ -PaError Pa_Terminate( void ); - - - -/** The type used to refer to audio devices. Values of this type usually - range from 0 to (Pa_DeviceCount-1), and may also take on the PaNoDevice - and paUseHostApiSpecificDeviceSpecification values. - - @see Pa_DeviceCount, paNoDevice, paUseHostApiSpecificDeviceSpecification -*/ -typedef int PaDeviceIndex; - - -/** A special PaDeviceIndex value indicating that no device is available, - or should be used. - - @see PaDeviceIndex -*/ -#define paNoDevice ((PaDeviceIndex)-1) - - -/** A special PaDeviceIndex value indicating that the device(s) to be used - are specified in the host api specific stream info structure. - - @see PaDeviceIndex -*/ -#define paUseHostApiSpecificDeviceSpecification ((PaDeviceIndex)-2) - - -/* Host API enumeration mechanism */ - -/** The type used to enumerate to host APIs at runtime. Values of this type - range from 0 to (Pa_GetHostApiCount()-1). - - @see Pa_GetHostApiCount -*/ -typedef int PaHostApiIndex; - - -/** Retrieve the number of available host APIs. Even if a host API is - available it may have no devices available. - - @return A non-negative value indicating the number of available host APIs - or, a PaErrorCode (which are always negative) if PortAudio is not initialized - or an error is encountered. - - @see PaHostApiIndex -*/ -PaHostApiIndex Pa_GetHostApiCount( void ); - - -/** Retrieve the index of the default host API. The default host API will be - the lowest common denominator host API on the current platform and is - unlikely to provide the best performance. - - @return A non-negative value ranging from 0 to (Pa_GetHostApiCount()-1) - indicating the default host API index or, a PaErrorCode (which are always - negative) if PortAudio is not initialized or an error is encountered. -*/ -PaHostApiIndex Pa_GetDefaultHostApi( void ); - - -/** Unchanging unique identifiers for each supported host API. This type - is used in the PaHostApiInfo structure. The values are guaranteed to be - unique and to never change, thus allowing code to be written that - conditionally uses host API specific extensions. - - New type ids will be allocated when support for a host API reaches - "public alpha" status, prior to that developers should use the - paInDevelopment type id. - - @see PaHostApiInfo -*/ -typedef enum PaHostApiTypeId -{ - paInDevelopment=0, /* use while developing support for a new host API */ - paDirectSound=1, - paMME=2, - paASIO=3, - paSoundManager=4, - paCoreAudio=5, - paOSS=7, - paALSA=8, - paAL=9, - paBeOS=10, - paWDMKS=11, - paJACK=12 -} PaHostApiTypeId; - - -/** A structure containing information about a particular host API. */ - -typedef struct PaHostApiInfo -{ - /** this is struct version 1 */ - int structVersion; - /** The well known unique identifier of this host API @see PaHostApiTypeId */ - PaHostApiTypeId type; - /** A textual description of the host API for display on user interfaces. */ - const char *name; - - /** The number of devices belonging to this host API. This field may be - used in conjunction with Pa_HostApiDeviceIndexToDeviceIndex() to enumerate - all devices for this host API. - @see Pa_HostApiDeviceIndexToDeviceIndex - */ - int deviceCount; - - /** The the default input device for this host API. The value will be a - device index ranging from 0 to (Pa_GetDeviceCount()-1), or paNoDevice - if no default input device is available. - */ - PaDeviceIndex defaultInputDevice; - - /** The the default output device for this host API. The value will be a - device index ranging from 0 to (Pa_GetDeviceCount()-1), or paNoDevice - if no default output device is available. - */ - PaDeviceIndex defaultOutputDevice; - -} PaHostApiInfo; - - -/** Retrieve a pointer to a structure containing information about a specific - host Api. - - @param hostApi A valid host API index ranging from 0 to (Pa_GetHostApiCount()-1) - - @return A pointer to an immutable PaHostApiInfo structure describing - a specific host API. If the hostApi parameter is out of range or an error - is encountered, the function returns NULL. - - The returned structure is owned by the PortAudio implementation and must not - be manipulated or freed. The pointer is only guaranteed to be valid between - calls to Pa_Initialize() and Pa_Terminate(). -*/ -const PaHostApiInfo * Pa_GetHostApiInfo( PaHostApiIndex hostApi ); - - -/** Convert a static host API unique identifier, into a runtime - host API index. - - @param type A unique host API identifier belonging to the PaHostApiTypeId - enumeration. - - @return A valid PaHostApiIndex ranging from 0 to (Pa_GetHostApiCount()-1) or, - a PaErrorCode (which are always negative) if PortAudio is not initialized - or an error is encountered. - - The paHostApiNotFound error code indicates that the host API specified by the - type parameter is not available. - - @see PaHostApiTypeId -*/ -PaHostApiIndex Pa_HostApiTypeIdToHostApiIndex( PaHostApiTypeId type ); - - -/** Convert a host-API-specific device index to standard PortAudio device index. - This function may be used in conjunction with the deviceCount field of - PaHostApiInfo to enumerate all devices for the specified host API. - - @param hostApi A valid host API index ranging from 0 to (Pa_GetHostApiCount()-1) - - @param hostApiDeviceIndex A valid per-host device index in the range - 0 to (Pa_GetHostApiInfo(hostApi)->deviceCount-1) - - @return A non-negative PaDeviceIndex ranging from 0 to (Pa_GetDeviceCount()-1) - or, a PaErrorCode (which are always negative) if PortAudio is not initialized - or an error is encountered. - - A paInvalidHostApi error code indicates that the host API index specified by - the hostApi parameter is out of range. - - A paInvalidDevice error code indicates that the hostApiDeviceIndex parameter - is out of range. - - @see PaHostApiInfo -*/ -PaDeviceIndex Pa_HostApiDeviceIndexToDeviceIndex( PaHostApiIndex hostApi, - int hostApiDeviceIndex ); - - - -/** Structure used to return information about a host error condition. -*/ -typedef struct PaHostErrorInfo{ - PaHostApiTypeId hostApiType; /**< the host API which returned the error code */ - long errorCode; /**< the error code returned */ - const char *errorText; /**< a textual description of the error if available, otherwise a zero-length string */ -}PaHostErrorInfo; - - -/** Return information about the last host error encountered. The error - information returned by Pa_GetLastHostErrorInfo() will never be modified - asyncronously by errors occurring in other PortAudio owned threads - (such as the thread that manages the stream callback.) - - This function is provided as a last resort, primarily to enhance debugging - by providing clients with access to all available error information. - - @return A pointer to an immutable structure constaining information about - the host error. The values in this structure will only be valid if a - PortAudio function has previously returned the paUnanticipatedHostError - error code. -*/ -const PaHostErrorInfo* Pa_GetLastHostErrorInfo( void ); - - - -/* Device enumeration and capabilities */ - -/** Retrieve the number of available devices. The number of available devices - may be zero. - - @return A non-negative value indicating the number of available devices or, - a PaErrorCode (which are always negative) if PortAudio is not initialized - or an error is encountered. -*/ -PaDeviceIndex Pa_GetDeviceCount( void ); - - -/** Retrieve the index of the default input device. The result can be - used in the inputDevice parameter to Pa_OpenStream(). - - @return The default input device index for the default host API, or paNoDevice - if no default input device is available or an error was encountered. -*/ -PaDeviceIndex Pa_GetDefaultInputDevice( void ); - - -/** Retrieve the index of the default output device. The result can be - used in the outputDevice parameter to Pa_OpenStream(). - - @return The default output device index for the defualt host API, or paNoDevice - if no default output device is available or an error was encountered. - - @note - On the PC, the user can specify a default device by - setting an environment variable. For example, to use device #1. -
      - set PA_RECOMMENDED_OUTPUT_DEVICE=1
      -
      - The user should first determine the available device ids by using - the supplied application "pa_devs". -*/ -PaDeviceIndex Pa_GetDefaultOutputDevice( void ); - - -/** The type used to represent monotonic time in seconds that can be used - for syncronisation. The type is used for the outTime argument to the - PaStreamCallback and as the result of Pa_GetStreamTime(). - - @see PaStreamCallback, Pa_GetStreamTime -*/ -typedef double PaTime; - - -/** A type used to specify one or more sample formats. Each value indicates - a possible format for sound data passed to and from the stream callback, - Pa_ReadStream and Pa_WriteStream. - - The standard formats paFloat32, paInt16, paInt32, paInt24, paInt8 - and aUInt8 are usually implemented by all implementations. - - The floating point representation (paFloat32) uses +1.0 and -1.0 as the - maximum and minimum respectively. - - paUInt8 is an unsigned 8 bit format where 128 is considered "ground" - - The paNonInterleaved flag indicates that a multichannel buffer is passed - as a set of non-interleaved pointers. - - @see Pa_OpenStream, Pa_OpenDefaultStream, PaDeviceInfo - @see paFloat32, paInt16, paInt32, paInt24, paInt8 - @see paUInt8, paCustomFormat, paNonInterleaved -*/ -typedef unsigned long PaSampleFormat; - - -#define paFloat32 ((PaSampleFormat) 0x00000001) /**< @see PaSampleFormat */ -#define paInt32 ((PaSampleFormat) 0x00000002) /**< @see PaSampleFormat */ -#define paInt24 ((PaSampleFormat) 0x00000004) /**< Packed 24 bit format. @see PaSampleFormat */ -#define paInt16 ((PaSampleFormat) 0x00000008) /**< @see PaSampleFormat */ -#define paInt8 ((PaSampleFormat) 0x00000010) /**< @see PaSampleFormat */ -#define paUInt8 ((PaSampleFormat) 0x00000020) /**< @see PaSampleFormat */ -#define paCustomFormat ((PaSampleFormat) 0x00010000)/**< @see PaSampleFormat */ - -#define paNonInterleaved ((PaSampleFormat) 0x80000000) - -/** A structure providing information and capabilities of PortAudio devices. - Devices may support input, output or both input and output. -*/ -typedef struct PaDeviceInfo -{ - int structVersion; /* this is struct version 2 */ - const char *name; - PaHostApiIndex hostApi; /* note this is a host API index, not a type id*/ - - int maxInputChannels; - int maxOutputChannels; - - /* Default latency values for interactive performance. */ - PaTime defaultLowInputLatency; - PaTime defaultLowOutputLatency; - /* Default latency values for robust non-interactive applications (eg. playing sound files). */ - PaTime defaultHighInputLatency; - PaTime defaultHighOutputLatency; - - double defaultSampleRate; -} PaDeviceInfo; - - -/** Retrieve a pointer to a PaDeviceInfo structure containing information - about the specified device. - @return A pointer to an immutable PaDeviceInfo structure. If the device - parameter is out of range the function returns NULL. - - @param device A valid device index in the range 0 to (Pa_GetDeviceCount()-1) - - @note PortAudio manages the memory referenced by the returned pointer, - the client must not manipulate or free the memory. The pointer is only - guaranteed to be valid between calls to Pa_Initialize() and Pa_Terminate(). - - @see PaDeviceInfo, PaDeviceIndex -*/ -const PaDeviceInfo* Pa_GetDeviceInfo( PaDeviceIndex device ); - - -/** Parameters for one direction (input or output) of a stream. -*/ -typedef struct PaStreamParameters -{ - /** A valid device index in the range 0 to (Pa_GetDeviceCount()-1) - specifying the device to be used or the special constant - paUseHostApiSpecificDeviceSpecification which indicates that the actual - device(s) to use are specified in hostApiSpecificStreamInfo. - This field must not be set to paNoDevice. - */ - PaDeviceIndex device; - - /** The number of channels of sound to be delivered to the - stream callback or accessed by Pa_ReadStream() or Pa_WriteStream(). - It can range from 1 to the value of maxInputChannels in the - PaDeviceInfo record for the device specified by the device parameter. - */ - int channelCount; - - /** The sample format of the buffer provided to the stream callback, - a_ReadStream() or Pa_WriteStream(). It may be any of the formats described - by the PaSampleFormat enumeration. - */ - PaSampleFormat sampleFormat; - - /** The desired latency in seconds. Where practical, implementations should - configure their latency based on these parameters, otherwise they may - choose the closest viable latency instead. Unless the suggested latency - is greater than the absolute upper limit for the device implementations - shouldround the suggestedLatency up to the next practial value - ie to - provide an equal or higher latency than suggestedLatency whereever possibe. - Actual latency values for an open stream may be retrieved using the - inputLatency and outputLatency fields of the PaStreamInfo structure - returned by Pa_GetStreamInfo(). - @see default*Latency in PaDeviceInfo, *Latency in PaStreamInfo - */ - PaTime suggestedLatency; - - /** An optional pointer to a host api specific data structure - containing additional information for device setup and/or stream processing. - hostApiSpecificStreamInfo is never required for correct operation, - if not used it should be set to NULL. - */ - void *hostApiSpecificStreamInfo; - -} PaStreamParameters; - - -/** Return code for Pa_IsFormatSupported indicating success. */ -#define paFormatIsSupported (0) - -/** Determine whether it would be possible to open a stream with the specified - parameters. - - @param inputParameters A structure that describes the input parameters used to - open a stream. The suggestedLatency field is ignored. See PaStreamParameters - for a description of these parameters. inputParameters must be NULL for - output-only streams. - - @param outputParameters A structure that describes the output parameters used - to open a stream. The suggestedLatency field is ignored. See PaStreamParameters - for a description of these parameters. outputParameters must be NULL for - input-only streams. - - @param sampleRate The required sampleRate. For full-duplex streams it is the - sample rate for both input and output - - @return Returns 0 if the format is supported, and an error code indicating why - the format is not supported otherwise. The constant paFormatIsSupported is - provided to compare with the return value for success. - - @see paFormatIsSupported, PaStreamParameters -*/ -PaError Pa_IsFormatSupported( const PaStreamParameters *inputParameters, - const PaStreamParameters *outputParameters, - double sampleRate ); - - - -/* Streaming types and functions */ - - -/** - A single PaStream can provide multiple channels of real-time - streaming audio input and output to a client application. A stream - provides access to audio hardware represented by one or more - PaDevices. Depending on the underlying Host API, it may be possible - to open multiple streams using the same device, however this behavior - is implementation defined. Portable applications should assume that - a PaDevice may be simultaneously used by at most one PaStream. - - Pointers to PaStream objects are passed between PortAudio functions that - operate on streams. - - @see Pa_OpenStream, Pa_OpenDefaultStream, Pa_OpenDefaultStream, Pa_CloseStream, - Pa_StartStream, Pa_StopStream, Pa_AbortStream, Pa_IsStreamActive, - Pa_GetStreamTime, Pa_GetStreamCpuLoad - -*/ -typedef void PaStream; - - -/** Can be passed as the framesPerBuffer parameter to Pa_OpenStream() - or Pa_OpenDefaultStream() to indicate that the stream callback will - accept buffers of any size. -*/ -#define paFramesPerBufferUnspecified (0) - - -/** Flags used to control the behavior of a stream. They are passed as - parameters to Pa_OpenStream or Pa_OpenDefaultStream. Multiple flags may be - ORed together. - - @see Pa_OpenStream, Pa_OpenDefaultStream - @see paNoFlag, paClipOff, paDitherOff, paNeverDropInput, - paPrimeOutputBuffersUsingStreamCallback, paPlatformSpecificFlags -*/ -typedef unsigned long PaStreamFlags; - -/** @see PaStreamFlags */ -#define paNoFlag ((PaStreamFlags) 0) - -/** Disable default clipping of out of range samples. - @see PaStreamFlags -*/ -#define paClipOff ((PaStreamFlags) 0x00000001) - -/** Disable default dithering. - @see PaStreamFlags -*/ -#define paDitherOff ((PaStreamFlags) 0x00000002) - -/** Flag requests that where possible a full duplex stream will not discard - overflowed input samples without calling the stream callback. This flag is - only valid for full duplex callback streams and only when used in combination - with the paFramesPerBufferUnspecified (0) framesPerBuffer parameter. Using - this flag incorrectly results in a paInvalidFlag error being returned from - Pa_OpenStream and Pa_OpenDefaultStream. - - @see PaStreamFlags, paFramesPerBufferUnspecified -*/ -#define paNeverDropInput ((PaStreamFlags) 0x00000004) - -/** Call the stream callback to fill initial output buffers, rather than the - default behavior of priming the buffers with zeros (silence). This flag has - no effect for input-only and blocking read/write streams. - - @see PaStreamFlags -*/ -#define paPrimeOutputBuffersUsingStreamCallback ((PaStreamFlags) 0x00000008) - -/** A mask specifying the platform specific bits. - @see PaStreamFlags -*/ -#define paPlatformSpecificFlags ((PaStreamFlags)0xFFFF0000) - -/** - Timing information for the buffers passed to the stream callback. -*/ -typedef struct PaStreamCallbackTimeInfo{ - PaTime inputBufferAdcTime; - PaTime currentTime; - PaTime outputBufferDacTime; -} PaStreamCallbackTimeInfo; - - -/** - Flag bit constants for the statusFlags to PaStreamCallback. - - @see paInputUnderflow, paInputOverflow, paOutputUnderflow, paOutputOverflow, - paPrimingOutput -*/ -typedef unsigned long PaStreamCallbackFlags; - -/** In a stream opened with paFramesPerBufferUnspecified, indicates that - input data is all silence (zeros) because no real data is available. In a - stream opened without paFramesPerBufferUnspecified, it indicates that one or - more zero samples have been inserted into the input buffer to compensate - for an input underflow. - @see PaStreamCallbackFlags -*/ -#define paInputUnderflow ((PaStreamCallbackFlags) 0x00000001) - -/** In a stream opened with paFramesPerBufferUnspecified, indicates that data - prior to the first sample of the input buffer was discarded due to an - overflow, possibly because the stream callback is using too much CPU time. - Otherwise indicates that data prior to one or more samples in the - input buffer was discarded. - @see PaStreamCallbackFlags -*/ -#define paInputOverflow ((PaStreamCallbackFlags) 0x00000002) - -/** Indicates that output data (or a gap) was inserted, possibly because the - stream callback is using too much CPU time. - @see PaStreamCallbackFlags -*/ -#define paOutputUnderflow ((PaStreamCallbackFlags) 0x00000004) - -/** Indicates that output data will be discarded because no room is available. - @see PaStreamCallbackFlags -*/ -#define paOutputOverflow ((PaStreamCallbackFlags) 0x00000008) - -/** Some of all of the output data will be used to prime the stream, input - data may be zero. - @see PaStreamCallbackFlags -*/ -#define paPrimingOutput ((PaStreamCallbackFlags) 0x00000010) - -/** - Allowable return values for the PaStreamCallback. - @see PaStreamCallback -*/ -typedef enum PaStreamCallbackResult -{ - paContinue=0, - paComplete=1, - paAbort=2 -} PaStreamCallbackResult; - - -/** - Functions of type PaStreamCallback are implemented by PortAudio clients. - They consume, process or generate audio in response to requests from an - active PortAudio stream. - - @param input and @param output are arrays of interleaved samples, - the format, packing and number of channels used by the buffers are - determined by parameters to Pa_OpenStream(). - - @param frameCount The number of sample frames to be processed by - the stream callback. - - @param timeInfo The time in seconds when the first sample of the input - buffer was received at the audio input, the time in seconds when the first - sample of the output buffer will begin being played at the audio output, and - the time in seconds when the stream callback was called. - See also Pa_GetStreamTime() - - @param statusFlags Flags indicating whether input and/or output buffers - have been inserted or will be dropped to overcome underflow or overflow - conditions. - - @param userData The value of a user supplied pointer passed to - Pa_OpenStream() intended for storing synthesis data etc. - - @return - The stream callback should return one of the values in the - PaStreamCallbackResult enumeration. To ensure that the callback continues - to be called, it should return paContinue (0). Either paComplete or paAbort - can be returned to finish stream processing, after either of these values is - returned the callback will not be called again. If paAbort is returned the - stream will finish as soon as possible. If paComplete is returned, the stream - will continue until all buffers generated by the callback have been played. - This may be useful in applications such as soundfile players where a specific - duration of output is required. However, it is not necessary to utilise this - mechanism as Pa_StopStream(), Pa_AbortStream() or Pa_CloseStream() can also - be used to stop the stream. The callback must always fill the entire output - buffer irrespective of its return value. - - @see Pa_OpenStream, Pa_OpenDefaultStream - - @note With the exception of Pa_GetStreamCpuLoad() it is not permissable to call - PortAudio API functions from within the stream callback. -*/ -typedef int PaStreamCallback( - const void *input, void *output, - unsigned long frameCount, - const PaStreamCallbackTimeInfo* timeInfo, - PaStreamCallbackFlags statusFlags, - void *userData ); - - -/** Opens a stream for either input, output or both. - - @param stream The address of a PaStream pointer which will receive - a pointer to the newly opened stream. - - @param inputParameters A structure that describes the input parameters used by - the opened stream. See PaStreamParameters for a description of these parameters. - inputParameters must be NULL for output-only streams. - - @param outputParameters A structure that describes the output parameters used by - the opened stream. See PaStreamParameters for a description of these parameters. - outputParameters must be NULL for input-only streams. - - @param sampleRate The desired sampleRate. For full-duplex streams it is the - sample rate for both input and output - - @param framesPerBuffer The number of frames passed to the stream callback - function, or the preferred block granularity for a blocking read/write stream. - The special value paFramesPerBufferUnspecified (0) may be used to request that - the stream callback will recieve an optimal (and possibly varying) number of - frames based on host requirements and the requested latency settings. - Note: With some host APIs, the use of non-zero framesPerBuffer for a callback - stream may introduce an additional layer of buffering which could introduce - additional latency. PortAudio guarantees that the additional latency - will be kept to the theoretical minimum however, it is strongly recommended - that a non-zero framesPerBuffer value only be used when your algorithm - requires a fixed number of frames per stream callback. - - @param streamFlags Flags which modify the behaviour of the streaming process. - This parameter may contain a combination of flags ORed together. Some flags may - only be relevant to certain buffer formats. - - @param streamCallback A pointer to a client supplied function that is responsible - for processing and filling input and output buffers. If this parameter is NULL - the stream will be opened in 'blocking read/write' mode. In blocking mode, - the client can receive sample data using Pa_ReadStream and write sample data - using Pa_WriteStream, the number of samples that may be read or written - without blocking is returned by Pa_GetStreamReadAvailable and - Pa_GetStreamWriteAvailable respectively. - - @param userData A client supplied pointer which is passed to the stream callback - function. It could for example, contain a pointer to instance data necessary - for processing the audio buffers. This parameter is ignored if streamCallback - is NULL. - - @return - Upon success Pa_OpenStream() returns paNoError and places a pointer to a - valid PaStream in the stream argument. The stream is inactive (stopped). - If a call to Pa_OpenStream() fails, a non-zero error code is returned (see - PaError for possible error codes) and the value of stream is invalid. - - @see PaStreamParameters, PaStreamCallback, Pa_ReadStream, Pa_WriteStream, - Pa_GetStreamReadAvailable, Pa_GetStreamWriteAvailable -*/ -PaError Pa_OpenStream( PaStream** stream, - const PaStreamParameters *inputParameters, - const PaStreamParameters *outputParameters, - double sampleRate, - unsigned long framesPerBuffer, - PaStreamFlags streamFlags, - PaStreamCallback *streamCallback, - void *userData ); - - -/** A simplified version of Pa_OpenStream() that opens the default input - and/or output devices. - - @param stream The address of a PaStream pointer which will receive - a pointer to the newly opened stream. - - @param numInputChannels The number of channels of sound that will be supplied - to the stream callback or returned by Pa_ReadStream. It can range from 1 to - the value of maxInputChannels in the PaDeviceInfo record for the default input - device. If 0 the stream is opened as an output-only stream. - - @param numOutputChannels The number of channels of sound to be delivered to the - stream callback or passed to Pa_WriteStream. It can range from 1 to the value - of maxOutputChannels in the PaDeviceInfo record for the default output dvice. - If 0 the stream is opened as an output-only stream. - - @param sampleFormat The sample format of both the input and output buffers - provided to the callback or passed to and from Pa_ReadStream and Pa_WriteStream. - sampleFormat may be any of the formats described by the PaSampleFormat - enumeration. - - @param sampleRate Same as Pa_OpenStream parameter of the same name. - @param framesPerBuffer Same as Pa_OpenStream parameter of the same name. - @param streamCallback Same as Pa_OpenStream parameter of the same name. - @param userData Same as Pa_OpenStream parameter of the same name. - - @return As for Pa_OpenStream - - @see Pa_OpenStream, PaStreamCallback -*/ -PaError Pa_OpenDefaultStream( PaStream** stream, - int numInputChannels, - int numOutputChannels, - PaSampleFormat sampleFormat, - double sampleRate, - unsigned long framesPerBuffer, - PaStreamCallback *streamCallback, - void *userData ); - - -/** Closes an audio stream. If the audio stream is active it - discards any pending buffers as if Pa_AbortStream() had been called. -*/ -PaError Pa_CloseStream( PaStream *stream ); - - -/** Functions of type PaStreamFinishedCallback are implemented by PortAudio - clients. They can be registered with a stream using the Pa_SetStreamFinishedCallback - function. Once registered they are called when the stream becomes inactive - (ie once a call to Pa_StopStream() will not block). - A stream will become inactive after the stream callback returns non-zero, - or when Pa_StopStream or Pa_AbortStream is called. For a stream providing audio - output, if the stream callback returns paComplete, or Pa_StopStream is called, - the stream finished callback will not be called until all generated sample data - has been played. - - @param userData The userData parameter supplied to Pa_OpenStream() - - @see Pa_SetStreamFinishedCallback -*/ -typedef void PaStreamFinishedCallback( void *userData ); - - -/** Register a stream finished callback function which will be called when the - stream becomes inactive. See the description of PaStreamFinishedCallback for - further details about when the callback will be called. - - @param stream a pointer to a PaStream that is in the stopped state - if the - stream is not stopped, the stream's finished callback will remain unchanged - and an error code will be returned. - - @param streamFinishedCallback a pointer to a function with the same signature - as PaStreamFinishedCallback, that will be called when the stream becomes - inactive. Passing NULL for this parameter will un-register a previously - registered stream finished callback function. - - @return on success returns paNoError, otherwise an error code indicating the cause - of the error. - - @see PaStreamFinishedCallback -*/ -PaError Pa_SetStreamFinishedCallback( PaStream *stream, PaStreamFinishedCallback* streamFinishedCallback ); - - -/** Commences audio processing. -*/ -PaError Pa_StartStream( PaStream *stream ); - - -/** Terminates audio processing. It waits until all pending - audio buffers have been played before it returns. -*/ -PaError Pa_StopStream( PaStream *stream ); - - -/** Terminates audio processing immediately without waiting for pending - buffers to complete. -*/ -PaError Pa_AbortStream( PaStream *stream ); - - -/** Determine whether the stream is stopped. - A stream is considered to be stopped prior to a successful call to - Pa_StartStream and after a successful call to Pa_StopStream or Pa_AbortStream. - If a stream callback returns a value other than paContinue the stream is NOT - considered to be stopped. - - @return Returns one (1) when the stream is stopped, zero (0) when - the stream is running or, a PaErrorCode (which are always negative) if - PortAudio is not initialized or an error is encountered. - - @see Pa_StopStream, Pa_AbortStream, Pa_IsStreamActive -*/ -PaError Pa_IsStreamStopped( PaStream *stream ); - - -/** Determine whether the stream is active. - A stream is active after a successful call to Pa_StartStream(), until it - becomes inactive either as a result of a call to Pa_StopStream() or - Pa_AbortStream(), or as a result of a return value other than paContinue from - the stream callback. In the latter case, the stream is considered inactive - after the last buffer has finished playing. - - @return Returns one (1) when the stream is active (ie playing or recording - audio), zero (0) when not playing or, a PaErrorCode (which are always negative) - if PortAudio is not initialized or an error is encountered. - - @see Pa_StopStream, Pa_AbortStream, Pa_IsStreamStopped -*/ -PaError Pa_IsStreamActive( PaStream *stream ); - - - -/** A structure containing unchanging information about an open stream. - @see Pa_GetStreamInfo -*/ - -typedef struct PaStreamInfo -{ - /** this is struct version 1 */ - int structVersion; - - /** The input latency of the stream in seconds. This value provides the most - accurate estimate of input latency available to the implementation. It may - differ significantly from the suggestedLatency value passed to Pa_OpenStream(). - The value of this field will be zero (0.) for output-only streams. - @see PaTime - */ - PaTime inputLatency; - - /** The output latency of the stream in seconds. This value provides the most - accurate estimate of output latency available to the implementation. It may - differ significantly from the suggestedLatency value passed to Pa_OpenStream(). - The value of this field will be zero (0.) for input-only streams. - @see PaTime - */ - PaTime outputLatency; - - /** The sample rate of the stream in Hertz (samples per second). In cases - where the hardware sample rate is inaccurate and PortAudio is aware of it, - the value of this field may be different from the sampleRate parameter - passed to Pa_OpenStream(). If information about the actual hardware sample - rate is not available, this field will have the same value as the sampleRate - parameter passed to Pa_OpenStream(). - */ - double sampleRate; - -} PaStreamInfo; - - -/** Retrieve a pointer to a PaStreamInfo structure containing information - about the specified stream. - @return A pointer to an immutable PaStreamInfo structure. If the stream - parameter invalid, or an error is encountered, the function returns NULL. - - @param stream A pointer to an open stream previously created with Pa_OpenStream. - - @note PortAudio manages the memory referenced by the returned pointer, - the client must not manipulate or free the memory. The pointer is only - guaranteed to be valid until the specified stream is closed. - - @see PaStreamInfo -*/ -const PaStreamInfo* Pa_GetStreamInfo( PaStream *stream ); - - -/** Determine the current time for the stream according to the same clock used - to generate buffer timestamps. This time may be used for syncronising other - events to the audio stream, for example synchronizing audio to MIDI. - - @return The stream's current time in seconds, or 0 if an error occurred. - - @see PaTime, PaStreamCallback -*/ -PaTime Pa_GetStreamTime( PaStream *stream ); - - -/** Retrieve CPU usage information for the specified stream. - The "CPU Load" is a fraction of total CPU time consumed by a callback stream's - audio processing routines including, but not limited to the client supplied - stream callback. This function does not work with blocking read/write streams. - - This function may be called from the stream callback function or the - application. - - @return - A floating point value, typically between 0.0 and 1.0, where 1.0 indicates - that the stream callback is consuming the maximum number of CPU cycles possible - to maintain real-time operation. A value of 0.5 would imply that PortAudio and - the stream callback was consuming roughly 50% of the available CPU time. The - return value may exceed 1.0. A value of 0.0 will always be returned for a - blocking read/write stream, or if an error occurrs. -*/ -double Pa_GetStreamCpuLoad( PaStream* stream ); - - -/** Read samples from an input stream. The function doesn't return until - the entire buffer has been filled - this may involve waiting for the operating - system to supply the data. - - @param stream A pointer to an open stream previously created with Pa_OpenStream. - - @param buffer A pointer to a buffer of sample frames. The buffer contains - samples in the format specified by the inputParameters->sampleFormat field - used to open the stream, and the number of channels specified by - inputParameters->numChannels. If non-interleaved samples were requested, - buffer is a pointer to the first element of an array of non-interleaved - buffer pointers, one for each channel. - - @param frames The number of frames to be read into buffer. This parameter - is not constrained to a specific range, however high performance applications - will want to match this parameter to the framesPerBuffer parameter used - when opening the stream. - - @return On success PaNoError will be returned, or PaInputOverflowed if input - data was discarded by PortAudio after the previous call and before this call. -*/ -PaError Pa_ReadStream( PaStream* stream, - void *buffer, - unsigned long frames ); - - -/** Write samples to an output stream. This function doesn't return until the - entire buffer has been consumed - this may involve waiting for the operating - system to consume the data. - - @param stream A pointer to an open stream previously created with Pa_OpenStream. - - @param buffer A pointer to a buffer of sample frames. The buffer contains - samples in the format specified by the outputParameters->sampleFormat field - used to open the stream, and the number of channels specified by - outputParameters->numChannels. If non-interleaved samples were requested, - buffer is a pointer to the first element of an array of non-interleaved - buffer pointers, one for each channel. - - @param frames The number of frames to be written from buffer. This parameter - is not constrained to a specific range, however high performance applications - will want to match this parameter to the framesPerBuffer parameter used - when opening the stream. - - @return On success PaNoError will be returned, or paOutputUnderflowed if - additional output data was inserted after the previous call and before this - call. -*/ -PaError Pa_WriteStream( PaStream* stream, - const void *buffer, - unsigned long frames ); - - -/** Retrieve the number of frames that can be read from the stream without - waiting. - - @return Returns a non-negative value representing the maximum number of frames - that can be read from the stream without blocking or busy waiting or, a - PaErrorCode (which are always negative) if PortAudio is not initialized or an - error is encountered. -*/ -signed long Pa_GetStreamReadAvailable( PaStream* stream ); - - -/** Retrieve the number of frames that can be written to the stream without - waiting. - - @return Returns a non-negative value representing the maximum number of frames - that can be written to the stream without blocking or busy waiting or, a - PaErrorCode (which are always negative) if PortAudio is not initialized or an - error is encountered. -*/ -signed long Pa_GetStreamWriteAvailable( PaStream* stream ); - - -/* Miscellaneous utilities */ - - -/** Retrieve the size of a given sample format in bytes. - - @return The size in bytes of a single sample in the specified format, - or paSampleFormatNotSupported if the format is not supported. -*/ -PaError Pa_GetSampleSize( PaSampleFormat format ); - - -/** Put the caller to sleep for at least 'msec' milliseconds. This function is - provided only as a convenience for authors of portable code (such as the tests - and examples in the PortAudio distribution.) - - The function may sleep longer than requested so don't rely on this for accurate - musical timing. -*/ -void Pa_Sleep( long msec ); - - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif /* PORTAUDIO_H */ diff --git a/prcom.h b/prcom.h deleted file mode 100644 index ea89ee776..000000000 --- a/prcom.h +++ /dev/null @@ -1 +0,0 @@ - common/prcom/pr(135),mdat(126),mref(126,2),mdat2(126),mref2(126,2) diff --git a/pulsar.f90 b/pulsar.f90 deleted file mode 100644 index 4066afb3e..000000000 --- a/pulsar.f90 +++ /dev/null @@ -1,82 +0,0 @@ -program pulsar - -! Receives timf2 data from Linrad and saves it for pulsar processing. - - parameter (NSPP=174) !Samples per UDP packet - integer*1 userx_no,iusb - integer*2 id - integer*2 nblock - integer*2 id2(1000) - integer nt(8) - character pname*12,cdate*8,ctime*12,czone*8 - character*40 fname20,fname21 - real*8 center_freq,tsec - common/plrscom/center_freq,msec,fselect,iptr,nblock,userx_no,iusb,id(4,NSPP) -! 8 4 4 4 2 1 1 1392 - data nb0/0/,sqave/0.0/,u/0.001/,nw/0/ - save - - nargs=iargc() - if(nargs.ne.1) then - print*,'Usage: pulsar ' - go to 999 - endif - call getarg(1,pname) - -! nt: year, month, day, time difference in minutes, hours, minutes, -! seconds, and milliseconds. - call date_and_time(cdate,ctime,czone,nt) - - write(fname20,1001) nt(1)-2000,nt(2),nt(3),nt(5),nt(6),nt(7) -1001 format(3i2.2,'_',3i2.2,'.raw') - open(20,file=fname20,access='stream',status='unknown') - write(20) cdate,ctime,czone,nt,pname !Write header - fname21=fname20(1:13)//'.sq' - open(21,file=fname21,access='stream',status='unknown') - write(21) cdate,ctime,czone,nt,pname !Write header - - call setup_rsocket !Prepare to receive UDP packets - k=0 - -10 call recv_pkt(center_freq) - nb=nblock - if(nb.lt.0) nb=nb+65536 - lost=nb-nb0-1 - if(lost.eq.-65536) lost=0 - if(lost.ne.0 .and. nb0.ne.0) print*,'Lost packets:',lost,nb,nb0 - - write(20) id !Write raw data - sq=0. - do i=1,NSPP - sq=sq + float(int(id(1,i)))**2 + float(int(id(2,i)))**2 + & - float(int(id(3,i)))**2 + float(int(id(4,i)))**2 - enddo - sqave=sqave + u*(sq-sqave) - rxnoise=10.0*log10(sqave) - 48.0 - - k=k+1 - id2(k)=0.001*sq - if(k.eq.1000) then - tsec=0.001d0*msec - nsec=tsec - ih=nsec/3600 - im=mod(nsec/60,60) - is=mod(nsec,60) - nw=nw+1 - write(*,1000) nw,center_freq,ih,im,is,nblock,sqave,rxnoise,id2(1) - write(13,1000) nw,center_freq,ih,im,is,nblock,sqave,rxnoise,id2(1) -1000 format(i10,f7.3,i4,2i3.2,i7,f10.0,f8.2,i8) - write(21) id2 - - call flush(13) - call flush(20) - call flush(21) - k=0 - endif - - nb0=nb - go to 10 - -999 end program pulsar - -! To compile: % gfortran -o pulsar pulsar.f90 plrr_subs.c diff --git a/recvpkt.f90 b/recvpkt.f90 deleted file mode 100644 index 039963d90..000000000 --- a/recvpkt.f90 +++ /dev/null @@ -1,181 +0,0 @@ -subroutine recvpkt(iarg) - -! Receive timf2 packets from Linrad and stuff data into array dd(). -! (This routine runs in a background thread and will never return.) - - parameter (NSZ=2*60*96000) - integer*1 userx_no,iusb - integer*2 nblock,nblock0 - logical first,synced - real*8 center_freq,d8,buf8 - complex*16 c16,buf16(87) - integer*2 jd(4) - real*4 xd(4) - common/plrscom/center_freq,msec,fqso,iptr,nblock,userx_no,iusb,buf8(174) - include 'datcom.f90' - include 'gcom1.f90' - include 'gcom2.f90' - equivalence (jd,d8) - equivalence (xd,c16) - equivalence (buf8,buf16) - data nblock0/0/,kb/1/,ns00/99/,first/.true./ - data sqave/0.0/,rxnoise/0.0/,pctblank/0.0/,kbuf/1/,lost_tot/0/ - data multicast0/-99/ - save - -1 continue - call cs_lock('recvpkt') - call setup_rsocket(multicast) !Open socket for multicast/unicast data - call cs_unlock - k=0 - kk=0 - kxp=0 - kb=1 - nsec0=-999 - fcenter=144.125 !Default (startup) frequency) - multicast0=multicast - ntx=0 - synced=.false. - -10 if(multicast.ne.multicast0) go to 1 - call recv_pkt(center_freq) - - if(userx_no.lt.0) then - nfloat=1 - else - nfloat=0 - endif - - iz=174 - if(nfloat.ne.0) iz=87 - -! Should receive a new packet every 174/96000 = 0.0018125 s - nsec=mod(Tsec,86400.d0) !Time according to MAP65 - nseclr=msec/1000 !Time according to Linrad - fcenter=center_freq - if(forcefcenter.gt.0.0) fcenter=forcefcenter - -! Reset buffer pointers at start of minute. - ns=mod(nsec,60) - if(ns.lt.ns00 .and. (lauto+monitoring.ne.0)) then -! print*,'new minute:',mod(nsec/60,60),ns00,ns,ntx,kb - if(ntx.eq.0) kb=3-kb - if(first) kb=1 - k=(kb-1)*60*96000 - kxp=k - ndone1=0 - ndone2=0 - lost_tot=0 - synced=.true. - ntx=0 - endif - ns00=ns - - if(transmitting.eq.1) ntx=1 - -! Test for buffer full - if((kb.eq.1 .and. (k+iz).gt.NSMAX) .or. & - (kb.eq.2 .and. (k+iz).gt.2*NSMAX)) go to 20 - - if(.not.first) then -! Check for lost packets - lost=nblock-nblock0-1 - if(lost.ne.0) then - nb=nblock - if(nb.lt.0) nb=nb+65536 - nb0=nblock0 - if(nb0.lt.0) nb0=nb0+65536 - lost_tot=lost_tot + lost ! Insert zeros for the lost data. -!### -! do i=1,iz*lost -! k=k+1 -! d8(k)=0 -! enddo -!### - endif - endif - first=.false. - nblock0=nblock - - tdiff=mod(0.001d0*msec,60.d0)-mod(Tsec,60.d0) - if(tdiff.lt.-30.) tdiff=tdiff+60. - if(tdiff.gt.30.) tdiff=tdiff-60. - -! Move data into Rx buffer and compute average signal level. - sq=0. - do i=1,iz - k=k+1 - k2=k - n=1 - if(k.gt.NSMAX) then - k2=k2-NSMAX - n=2 - endif - - if(nfloat.eq.0) then - d8=buf8(i) - x1=jd(1) - x2=jd(2) - x3=jd(3) - x4=jd(4) - dd(1,k2,n)=x1 - dd(2,k2,n)=x2 - dd(3,k2,n)=x3 - dd(4,k2,n)=x4 - sq=sq + x1*x1 + x2*x2 + x3*x3 + x4*x4 - else - c16=buf16(i) - x1=xd(1) - x2=xd(2) - x3=xd(3) - x4=xd(4) - dd(1,k2,n)=x1 - dd(2,k2,n)=x2 - dd(3,k2,n)=x3 - dd(4,k2,n)=x4 - sq=sq + x1*x1 + x2*x2 + x3*x3 + x4*x4 - endif - enddo - sq=sq/(2.0*iz) - u=0.001 - if(nfloat.ne.1) u=2.0*u - sqave=sqave + u*(sq-sqave) - rxnoise=10.0*log10(sqave) - 20.0 ! Was -48.0 - kxp=k - -20 if(nsec.ne.nsec0) then - nsec0=nsec - mutch=nseclr/3600 - mutcm=mod(nseclr/60,60) - mutc=100*mutch + mutcm - -! If we have not transmitted in this minute, see if it's time to start FFTs - if(ntx.eq.0 .and. lauto+monitoring.ne.0) then - if(ns.ge.nt1 .and. ndone1.eq.0 .and. synced) then - nutc=mutc - fcenter=center_freq - if(forcefcenter.gt.0.0) fcenter=forcefcenter - kbuf=kb - kk=k - ndiskdat=0 - ndone1=1 - endif - -! See if it's time to start the full decoding procedure. - nhsym=(k-(kbuf-1)*60*96000)/17832.9252 - if(ndone1.eq.1 .and. nhsym.ge.279 .and.ndone2.eq.0) then - kk=k - nlost=lost_tot ! Save stats for printout - ndone2=1 -! print*,'recvpkt 2:',ns,kb,k - endif - endif - -! if(ns.le.5 .or. ns.ge.46) write(*,3001) ns,ndone1,kb, & -! kbuf,ntx,kk,tdiff -!3001 format(5i4,i11,f8.2) - - endif - go to 10 - -end subroutine recvpkt diff --git a/rfile.f90 b/rfile.f90 deleted file mode 100644 index db6d64e51..000000000 --- a/rfile.f90 +++ /dev/null @@ -1,13 +0,0 @@ -subroutine rfile(lu,ibuf,n,ierr) - - integer*1 ibuf(n) - - call cs_lock('rfile') - read(lu,end=998) ibuf - ierr=0 - go to 999 -998 ierr=1002 -999 continue - call cs_unlock - return -end subroutine rfile diff --git a/rfile2.f b/rfile2.f deleted file mode 100644 index 58d21a060..000000000 --- a/rfile2.f +++ /dev/null @@ -1,26 +0,0 @@ - subroutine rfile2(fname,buf,n,nr) - -C Read data from disk. - - integer RMODE - parameter(RMODE=0) - integer*1 buf(n) - integer open,read,close - integer fd - character fname*(*) - data iz/0/ !Silence g77 warning - - do i=80,1,-1 - if(fname(i:i).ne.' ') then - iz=i - go to 10 - endif - enddo - - 10 fname=fname(1:iz)//char(0) - fd=open(fname,RMODE) !Open file for reading - nr=read(fd,buf,n) - i=close(fd) - - return - end diff --git a/rfile3.c b/rfile3.c deleted file mode 100644 index 82da0161e..000000000 --- a/rfile3.c +++ /dev/null @@ -1,22 +0,0 @@ -#include - -void rfile3_(char *infile, char buf[], int *nbytes0) -{ - int n,nbytes; - static int first=1; - static FILE *fd=NULL; - - nbytes=*nbytes0; - if(first) { - fd = fopen(infile,"rb"); - if(fd == NULL) { - printf("Cannot open %s\n",infile); - exit(0); - } - first=0; - } - - n=fread(buf,1,nbytes,fd); - printf("b: %d %d\n",nbytes,n); - return(n); -} diff --git a/rfile3a.f90 b/rfile3a.f90 deleted file mode 100644 index de5cdc193..000000000 --- a/rfile3a.f90 +++ /dev/null @@ -1,18 +0,0 @@ -!----------------------------------------------------- rfile3a -subroutine rfile3a(infile,ibuf,n,ierr) - - character*(*) infile - integer*1 ibuf(n) - -#ifdef CVF - open(10,file=infile,form='binary',status='old',err=998) -#else - open(10,file=infile,access='stream',status='old',err=998) -#endif - read(10,end=998) ibuf - ierr=0 - go to 999 -998 ierr=1002 -999 close(10) - return -end subroutine rfile3a diff --git a/runqqq.f90 b/runqqq.f90 deleted file mode 100644 index 07ac5dd8c..000000000 --- a/runqqq.f90 +++ /dev/null @@ -1,17 +0,0 @@ -subroutine runqqq(fname,cmnd,iret) - -#ifdef CVF - use dflib -#endif - integer system - - character*(*) fname,cmnd - -#ifdef CVF - iret=runqq(fname,cmnd) -#else - iret=system('KVASD_g95 -q > dev_null') -#endif - - return -end subroutine runqqq diff --git a/samplerate.h b/samplerate.h deleted file mode 100644 index a446fff8d..000000000 --- a/samplerate.h +++ /dev/null @@ -1,196 +0,0 @@ -/* -** Copyright (C) 2002-2004 Erik de Castro Lopo -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU General Public License as published by -** the Free Software Foundation; either version 2 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU General Public License for more details. -** -** You should have received a copy of the GNU General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. -*/ - -/* -** API documentation is available here: -** http://www.mega-nerd.com/SRC/api.html -*/ - -#ifndef SAMPLERATE_H -#define SAMPLERATE_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/* Opaque data type SRC_STATE. */ -typedef struct SRC_STATE_tag SRC_STATE ; - -/* SRC_DATA is used to pass data to src_simple() and src_process(). */ -typedef struct -{ float *data_in, *data_out ; - - long input_frames, output_frames ; - long input_frames_used, output_frames_gen ; - - int end_of_input ; - - double src_ratio ; -} SRC_DATA ; - -/* SRC_CB_DATA is used with callback based API. */ -typedef struct -{ long frames ; - float *data_in ; -} SRC_CB_DATA ; - -/* -** User supplied callback function type for use with src_callback_new() -** and src_callback_read(). First parameter is the same pointer that was -** passed into src_callback_new(). Second parameter is pointer to a -** pointer. The user supplied callback function must modify *data to -** point to the start of the user supplied float array. The user supplied -** function must return the number of frames that **data points to. -*/ - -typedef long (*src_callback_t) (void *cb_data, float **data) ; - -/* -** Standard initialisation function : return an anonymous pointer to the -** internal state of the converter. Choose a converter from the enums below. -** Error returned in *error. -*/ - -SRC_STATE* src_new (int converter_type, int channels, int *error) ; - -/* -** Initilisation for callback based API : return an anonymous pointer to the -** internal state of the converter. Choose a converter from the enums below. -** The cb_data pointer can point to any data or be set to NULL. Whatever the -** value, when processing, user supplied function "func" gets called with -** cb_data as first parameter. -*/ - -SRC_STATE* src_callback_new (src_callback_t func, int converter_type, int channels, - int *error, void* cb_data) ; - -/* -** Cleanup all internal allocations. -** Always returns NULL. -*/ - -SRC_STATE* src_delete (SRC_STATE *state) ; - -/* -** Standard processing function. -** Returns non zero on error. -*/ - -int src_process (SRC_STATE *state, SRC_DATA *data) ; - -/* -** Callback based processing function. Read up to frames worth of data from -** the converter int *data and return frames read or -1 on error. -*/ -long src_callback_read (SRC_STATE *state, double src_ratio, long frames, float *data) ; - -/* -** Simple interface for performing a single conversion from input buffer to -** output buffer at a fixed conversion ratio. -** Simple interface does not require initialisation as it can only operate on -** a single buffer worth of audio. -*/ - -int src_simple (SRC_DATA *data, int converter_type, int channels) ; - -/* -** This library contains a number of different sample rate converters, -** numbered 0 through N. -** -** Return a string giving either a name or a more full description of each -** sample rate converter or NULL if no sample rate converter exists for -** the given value. The converters are sequentially numbered from 0 to N. -*/ - -const char *src_get_name (int converter_type) ; -const char *src_get_description (int converter_type) ; -const char *src_get_version (void) ; - -/* -** Set a new SRC ratio. This allows step responses -** in the conversion ratio. -** Returns non zero on error. -*/ - -int src_set_ratio (SRC_STATE *state, double new_ratio) ; - -/* -** Reset the internal SRC state. -** Does not modify the quality settings. -** Does not free any memory allocations. -** Returns non zero on error. -*/ - -int src_reset (SRC_STATE *state) ; - -/* -** Return TRUE if ratio is a valid conversion ratio, FALSE -** otherwise. -*/ - -int src_is_valid_ratio (double ratio) ; - -/* -** Return an error number. -*/ - -int src_error (SRC_STATE *state) ; - -/* -** Convert the error number into a string. -*/ -const char* src_strerror (int error) ; - -/* -** The following enums can be used to set the interpolator type -** using the function src_set_converter(). -*/ - -enum -{ - SRC_SINC_BEST_QUALITY = 0, - SRC_SINC_MEDIUM_QUALITY = 1, - SRC_SINC_FASTEST = 2, - SRC_ZERO_ORDER_HOLD = 3, - SRC_LINEAR = 4 -} ; - -/* -** Extra helper functions for converting from short to float and -** back again. -*/ - -void src_short_to_float_array (const short *in, float *out, int len) ; -void src_float_to_short_array (const float *in, short *out, int len) ; - - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* __cplusplus */ - -#endif /* SAMPLERATE_H */ - -/* -** Do not edit or modify anything in this comment block. -** The arch-tag line is a file identity tag for the GNU Arch -** revision control system. -** -** arch-tag: 5421ef3e-c898-4ec3-8671-ea03d943ee00 -*/ - diff --git a/savetf2.f90 b/savetf2.f90 deleted file mode 100644 index e45c95178..000000000 --- a/savetf2.f90 +++ /dev/null @@ -1,58 +0,0 @@ -subroutine savetf2(id,fnamedate,savedir) - - parameter (NZ=60*96000) - parameter (NSPP=174) - parameter (NPKTS=NZ/NSPP) - integer*2 id(4,NZ) - character*80 savedir,fname - character cdate*8,ctime2*10,czone*5,fnamedate*6 - integer itt(8) - data nloc/-1/ - save nloc - - call cs_lock('savetf2') - call date_and_time(cdate,ctime2,czone,itt) - nh=itt(5)-itt(4)/60 - nm=itt(6) - ns=itt(7) - if(ns.lt.50) nm=nm-1 - if(nm.lt.0) then - nm=nm+60 - nh=nh-1 - endif - if(nh.lt.0) nh=nh+24 - if(nh.ge.24) nh=nh-24 - write(fname,1001) fnamedate,nh,nm -1001 format('/',a6,'_',2i2.2,'.tf2') - do i=80,1,-1 - if(savedir(i:i).ne.' ') go to 1 - enddo -1 iz=i - fname=savedir(1:iz)//fname -#ifdef CVF - open(17,file=fname,status='unknown',form='binary',err=998) -#else - open(17,file=fname,status='unknown',access='stream',err=998) -#endif - - if(nloc.eq.-1) nloc=loc(id) - n=abs(loc(id)-nloc) - if(n.eq.0 .or. n.eq.46080000) then - write(17,err=997) id - else - print*,'Address of id() clobbered???',nloc,loc(id) - endif - close(17) - go to 999 - -997 print*,'Error writing tf2 file' - print*,fname - go to 999 - -998 print*,'Cannot open file:' - print*,fname - -999 continue - call cs_unlock - return -end subroutine savetf2 diff --git a/set570.cpp b/set570.cpp new file mode 100644 index 000000000..2a94bd2ae --- /dev/null +++ b/set570.cpp @@ -0,0 +1,275 @@ + +/* Linux / Windows program to control the frequency of a si570 synthesizer + ON5GN 6 jan 2012 + Under Linux: + -use the linux version of function void si570_sleep(int us) + -compile with + gcc -Wall -o set_si570_freq set_si570_freq.c -lusb -lm + -run with sudo ./set_si570_freq + Under Windows: + -use the windows version of function void si570_sleep(int us) + -compile with mingw + C:\mingw\bin\mingw32-gcc -Wall -o set_si570_freq set_si570_freq.c -lusb -lm + -run with set_si570_freq.exe +*/ + +#include /* Standard input/output definitions */ +#include /* String function definitions */ +#include /* UNIX standard function definitions */ +#include +#include +#include + +#define USB_SUCCESS 0 +#define USB_ERROR_NOTFOUND 1 +#define USB_ERROR_ACCESS 2 +#define USB_ERROR_IO 3 +#define VENDOR_NAME "www.obdev.at" +#define PRODUCT_NAME "DG8SAQ-I2C" +#define USBDEV_SHARED_VENDOR 0x16C0 // VOTI VID +#define USBDEV_SHARED_PRODUCT 0x05DC // OBDEV PID + // Use obdev's generic shared VID/PID pair + // following the rules outlined in + // firmware/usbdrv/USBID-License.txt. +#define REQUEST_SET_FREQ_BY_VALUE 0x32 +#define MAX_USB_ERR_CNT 6 + +double freq_parm; +double delay_average; +int from_freq; +int to_freq; +int increment_freq; +int retval = -1; +int display_freq = -1; +int delay; +usb_dev_handle *global_si570usb_handle = NULL; + +// ********sleep functions*************** +//use this function under LINUX +/* +void si570_sleep(int us) +{ +usleep(us); +} +*/ + +//use this function under WINDOWS +void si570_sleep(int us) +{ + Sleep(us/1000); +} + +double round(double x) +{ + int i=x+0.5; + return (double)i; +} + +double current_time(void) //for delay measurements +{ + struct timeval t; + gettimeofday(&t,NULL); + return 0.000001*t.tv_usec+t.tv_sec; +} + +int usbGetStringAscii(usb_dev_handle *dev, int my_index, + int langid, char *buf, int buflen); +unsigned char Si570usbOpenDevice(usb_dev_handle **device, char *usbSerialID); +void setLongWord( int value, char * bytes); +int setFreqByValue(usb_dev_handle * handle, double frequency); +void sweepa_freq(void); +void sweepm_freq(void); + +int set570(double freq_MHz) +{ + char * my_usbSerialID = NULL; + +// MAIN MENU DIALOG + retval=Si570usbOpenDevice(&global_si570usb_handle, my_usbSerialID); + if (retval != 0) return -1; + +//SET FREQUENCY + if((freq_MHz < 3.45)|(freq_MHz > 866.0)) return -2; + retval=setFreqByValue(global_si570usb_handle,freq_MHz); + return 0; +} + +int usbGetStringAscii(usb_dev_handle *dev, int my_index, + int langid, char *buf, int buflen) +{ + char buffer[256]; + int rval, i; + if((rval = usb_control_msg(dev, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, + (USB_DT_STRING << 8) + my_index, langid, buffer, + sizeof(buffer), 1000)) < 0) return rval; + if(buffer[1] != USB_DT_STRING) return 0; + if((unsigned char)buffer[0] < rval) rval = (unsigned char)buffer[0]; + rval /= 2; +// lossy conversion to ISO Latin1 + for(i=1;i buflen) break; // destination buffer overflow + buf[i-1] = buffer[2 * i]; + if(buffer[2 * i + 1] != 0) buf[i-1] = '?'; // outside of ISO Latin1 range + } + buf[i-1] = 0; + return i-1; +} + +unsigned char Si570usbOpenDevice(usb_dev_handle **device, char *usbSerialID) +{ + struct usb_bus *bus; + struct usb_device *dev; + usb_dev_handle *handle = NULL; + unsigned char errorCode = USB_ERROR_NOTFOUND; + char string[256]; + int len; + int vendor = USBDEV_SHARED_VENDOR; + char *vendorName = VENDOR_NAME; + int product = USBDEV_SHARED_PRODUCT; + char *productName = PRODUCT_NAME; + char serialNumberString[20]; + static int didUsbInit = 0; + + if(!didUsbInit) { + didUsbInit = 1; + usb_init(); + } + usb_find_busses(); + usb_find_devices(); + for(bus=usb_get_busses(); bus; bus=bus->next) { + for(dev=bus->devices; dev; dev=dev->next) { + if(dev->descriptor.idVendor == vendor && + dev->descriptor.idProduct == product) { + handle = usb_open(dev); // open the device in order to query strings + if(!handle) { + errorCode = USB_ERROR_ACCESS; + printf("si570.c: Warning: cannot open Si570-USB device:\n"); + printf("usb error message: %s\n",usb_strerror()); + continue; + } + if(vendorName == NULL && productName == NULL) { //name does not matter + break; + } + // now check whether the names match + len = usbGetStringAscii(handle, dev->descriptor.iManufacturer, 0x0409, string, sizeof(string)); + if(len < 0) { + errorCode = USB_ERROR_IO; + printf("si570.c: Warning: cannot query manufacturer for Si570-USB device:\n"); + printf("usb error message: %s\n",usb_strerror()); + } else { + errorCode = USB_ERROR_NOTFOUND; + //fprintf(stderr, "seen device from vendor ->%s<-\n", string); + if(strcmp(string, vendorName) == 0){ + len = usbGetStringAscii(handle, dev->descriptor.iProduct, + 0x0409, string, sizeof(string)); + if(len < 0) { + errorCode = USB_ERROR_IO; + printf("si570.c: Warning: cannot query product for Si570-USB device: \n"); + printf("usb error message: %s\n",usb_strerror()); + } else { + errorCode = USB_ERROR_NOTFOUND; + // fprintf(stderr, "seen product ->%s<-\n", string); + if(strcmp(string, productName) == 0) { + len = usbGetStringAscii(handle, dev->descriptor.iSerialNumber, + 0x0409, serialNumberString, sizeof(serialNumberString)); + if (len < 0) { + errorCode = USB_ERROR_IO; + printf("si570.c: Warning: cannot query serial number for Si570-USB device: \n"); + printf("usb error message: %s\n",usb_strerror()); + } else { + errorCode = USB_ERROR_NOTFOUND; + if ((usbSerialID == NULL) || + (strcmp(serialNumberString, usbSerialID) == 0)) { +// printf("\nOpen Si570 USB device: OK\n"); +// printf("usbSerialID : %s\n",serialNumberString); + break; + } + } + } + } + } + } + usb_close(handle); + handle = NULL; + } + } + if(handle) break; + } + if(handle != NULL) { + errorCode = USB_SUCCESS; + *device = handle; + } + return errorCode; +} + +void setLongWord( int value, char * bytes) +{ + bytes[0] = value & 0xff; + bytes[1] = ((value & 0xff00) >> 8) & 0xff; + bytes[2] = ((value & 0xff0000) >> 16) & 0xff; + bytes[3] = ((value & 0xff000000) >> 24) & 0xff; +} + +int setFreqByValue(usb_dev_handle * handle, double frequency) +{ +// Windows Doc from PE0FKO: +// +// Command 0x32: +// ------------- +// Set the oscillator frequency by value. The frequency is formatted in MHz +// as 11.21 bits value. +// The "automatic band pass filter selection", "smooth tune", +// "one side calibration" and the "frequency subtract multiply" are all +// done in this function. (if enabled in the firmware) +// +// Default: None +// +// Parameters: +// requesttype: USB_ENDPOINT_OUT +// request: 0x32 +// value: 0 +// index: 0 +// bytes: pointer 32 bits integer +// size: 4 +// +// Code sample: +// uint32_t iFreq; +// double dFreq; +// +// dFreq = 30.123456; // MHz +// iFreq = (uint32_t)( dFreq * (1UL << 21) ) +// r = usbCtrlMsgOUT(0x32, 0, 0, (char *)&iFreq, sizeof(iFreq)); +// if (r < 0) Error +// + + char buffer[4]; + int i2cAddress = 0x55; + int request = REQUEST_SET_FREQ_BY_VALUE; + int value = 0x700 + i2cAddress; + int my_index = 0; + int retval; + int err_cnt; + + err_cnt =0; + set_again:; + setLongWord(round(frequency * 2097152.0), buffer); // 2097152=2^21 + retval=usb_control_msg( + handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, + request, + value, + my_index, + buffer, + sizeof(buffer), + 5000); + if (retval != 4) { + err_cnt ++; + if(err_cnt < MAX_USB_ERR_CNT) { + si570_sleep(1000); // delay 1000 microsec + goto set_again; + } else { + printf("Error when setting frequency, returncode=%i\n",retval); + printf("usb error message: %s\n", usb_strerror()); + } + } + return retval; +} diff --git a/short65.f b/short65.f deleted file mode 100644 index 8701afe8b..000000000 --- a/short65.f +++ /dev/null @@ -1,190 +0,0 @@ - subroutine short65(data,jz,NFreeze,MouseDF,DFTolerance, - + mode65,nspecialbest,nstest,dfsh,iderrbest,idriftbest, - + snrdb,ss1a,ss2a,nwsh,idfsh) - -C Checks to see if this might be a shorthand message. -C This is done before zapping, downsampling, or normal decoding. - - parameter (NP2=60*11025) !Size of data array - parameter (NFFT=16384) !FFT length - parameter (NH=NFFT/2) !Step size - parameter (MAXSTEPS=60*11025/NH) !Max # of steps - - real data(jz) - integer DFTolerance - real s2(NH,MAXSTEPS) !2d spectrum - real ss(NH,4) !Save spectra in four phase bins - real psavg(NH) - real sigmax(4) !Peak of spectrum at each phase - real ss1a(-224:224) !Lower magenta curve - real ss2a(-224:224) !Upper magenta curve - real ss1(-473:1784) !Lower magenta curve (temp) - real ss2(-473:1784) !Upper magenta curve (temp) - real ssavg(-11:11) - integer ipk(4) !Peak bin at each phase - save - - nspecialbest=0 !Default return value - nstest=0 - df=11025.0/NFFT - -C Do 16 k FFTs, stepped by 8k. (*** Maybe should step by 4k? ***) - call zero(psavg,NH) - nsteps=(jz-NH)/(4*NH) - nsteps=4*nsteps !Number of steps - do j=1,nsteps - k=(j-1)*NH + 1 - call ps(data(k),NFFT,s2(1,j)) !Get power spectra - if(mode65.eq.4) then - call smooth(s2(1,j),NH) - call smooth(s2(1,j),NH) - endif - call add(psavg,s2(1,j),psavg,NH) - enddo - - call flat1(psavg,s2,NH,nsteps,NH,MAXSTEPS) - - nfac=40*mode65 - dtstep=0.5/df - fac=dtstep/(60.0*df) - -C Define range of frequencies to be searched - fa=max(200.0,1270.46+MouseDF-600.0) - fb=min(4800.0,1270.46+MouseDF+600.0) - ia=fa/df - ib=fb/df + 4.1*nfac !Upper tone is above sync tone by 4*nfac*df Hz - if(NFreeze.eq.1) then - fa=max(200.0,1270.46+MouseDF-DFTolerance) - fb=min(4800.0,1270.46+MouseDF+DFTolerance) - endif - ia2=fa/df - ib2=fb/df + 4.1*nfac !Upper tone is above sync tone by 4*nfac*df Hz - if(ib2.gt.NH) ib2=NH - -C Find strongest line in each of the 4 phases, repeating for each drift rate. - sbest=0. - snrbest=0. - idz=6.0/df !Is this the right drift range? - do idrift=-idz,idz - drift=idrift*df*60.0/49.04 - call zero(ss,4*NH) !Clear the accumulating array - do j=1,nsteps - n=mod(j-1,4)+1 - k=nint((j-nsteps/2)*drift*fac) + ia - call add(ss(ia,n),s2(k,j),ss(ia,n),ib-ia+1) - enddo - - do n=1,4 - sigmax(n)=0. - do i=ia2,ib2 - sig=ss(i,n) - if(sig.ge.sigmax(n)) then - ipk(n)=i - sigmax(n)=sig - if(sig.ge.sbest) then - sbest=sig - nbest=n - fdotsh=drift - endif - endif - enddo - enddo - n2best=nbest+2 - if(n2best.gt.4) n2best=nbest-2 - xdf=min(ipk(nbest),ipk(n2best))*df - 1270.46 - if(NFreeze.eq.1 .and. abs(xdf-mousedf).gt.DFTolerance) goto 10 - - idiff=abs(ipk(nbest)-ipk(n2best)) - xk=float(idiff)/nfac - k=nint(xk) - iderr=nint((xk-k)*nfac) - nspecial=0 - maxerr=nint(0.008*abs(idiff) + 0.51) - if(abs(iderr).le.maxerr .and. k.ge.2 .and. k.le.4) nspecial=k - if(nspecial.gt.0) then - call getsnr(ss(ia2,nbest),ib2-ia2+1,snr1) - call getsnr(ss(ia2,n2best),ib2-ia2+1,snr2) - snr=0.5*(snr1+snr2) - if(snr.gt.snrbest) then - snrbest=snr - nspecialbest=nspecial - nstest=snr/2.0 - 2.0 !Threshold set here - if(nstest.lt.0) nstest=0 - if(nstest.gt.10) nstest=10 - dfsh=nint(xdf) - iderrbest=iderr - idriftbest=idrift - snrdb=db(snr) - db(2500.0/df) - db(sqrt(nsteps/4.0))+1.8 - n1=nbest - n2=n2best - ipk1=ipk(n1) - ipk2=ipk(n2) - endif - endif - if(nstest.eq.0) nspecial=0 - 10 enddo - - if(nstest.eq.0) nspecialbest=0 - df4=4.0*df - if(nstest.gt.0) then - - if(ipk1.gt.ipk2) then - ntmp=n1 - n1=n2 - n2=ntmp - ntmp=ipk1 - ipk1=ipk2 - ipk2=ntmp - endif - - call zero(ss1,2258) - call zero(ss2,2258) - do i=ia2,ib2,4 - f=df*i - k=nint((f-1270.46)/df4) - ss1(k)=0.3 * (ss(i-2,n1) + ss(i-1,n1) + ss(i,n1) + - + ss(i+1,n1) + ss(i+2,n1)) - ss2(k)=0.3 * (ss(i-2,n2) + ss(i-1,n2) + ss(i,n2) + - + ss(i+1,n2) + ss(i+2,n2)) - enddo - - kpk1=nint(0.25*ipk1-472.0) - kpk2=kpk1 + nspecial*mode65*10 - ssmax=0. - do i=-10,10 - ssavg(i)=ss1(kpk1+i) + ss2(kpk2+i) - if(ssavg(i).gt.ssmax) then - ssmax=ssavg(i) - itop=i - endif - enddo - base=0.25*(ssavg(-10)+ssavg(-9)+ssavg(9)+ssavg(10)) - shalf=0.5*(ssmax+base) - do k=1,8 - if(ssavg(itop-k).lt.shalf) go to 110 - enddo - k=8 - 110 x=(ssavg(itop-(k-1))-shalf)/(ssavg(itop-(k-1))-ssavg(itop-k)) - do k=1,8 - if(ssavg(itop+k).lt.shalf) go to 120 - enddo - k=8 - 120 x=x+(ssavg(itop+(k-1))-shalf)/(ssavg(itop+(k-1))-ssavg(itop+k)) - nwsh=nint(x*df4) - endif - -C See if orange/magenta curves need to be shifted: - idfsh=0 - if(mousedf.lt.-600) idfsh=-670 - if(mousedf.gt.600) idfsh=1000 - if(mousedf.gt.1600) idfsh=2000 - if(mousedf.gt.2600) idfsh=3000 - i0=nint(idfsh/df4) - - do i=-224,224 - ss1a(i)=ss1(i+i0) - ss2a(i)=ss2(i+i0) - enddo - - return - end diff --git a/sleep.h b/sleep.h index df60bc92a..d566cce24 100644 --- a/sleep.h +++ b/sleep.h @@ -1,32 +1,16 @@ -/* - * sleep.h 1.0 02/03/10 - * - * Defines cross-platform sleep, usleep, etc. - * - * By Wu Yongwei - * - */ - -#ifndef _SLEEP_H -#define _SLEEP_H - -#ifdef _WIN32 -# if defined(_NEED_SLEEP_ONLY) && (defined(_MSC_VER) || defined(__MINGW32__)) -# include -# define sleep(t) _sleep((t) * 1000) -# else -# include -# define sleep(t) Sleep((t) * 1000) -# endif -# ifndef _NEED_SLEEP_ONLY -# define msleep(t) Sleep(t) -# define usleep(t) Sleep((t) / 1000) -# endif -#else -# include -# ifndef _NEED_SLEEP_ONLY -# define msleep(t) usleep((t) * 1000) -# endif -#endif - -#endif /* _SLEEP_H */ +#ifndef SLEEP_H +#define SLEEP_H +#include + +class Sleep : public QThread +{ +public: + static void msleep(int ms) { + QThread::msleep(ms); + } + static int idealThreadCount() { + return QThread::idealThreadCount(); + } +}; + +#endif // SLEEP_H diff --git a/slope.f b/slope.f deleted file mode 100644 index c14653a21..000000000 --- a/slope.f +++ /dev/null @@ -1,41 +0,0 @@ - subroutine slope(y,npts,xpk) - -C Remove best-fit slope from data in y(i). When fitting the straight line, -C ignore the peak around xpk +/- 2. - - real y(npts) - real x(100) - - do i=1,npts - x(i)=i - enddo - - sumw=0. - sumx=0. - sumy=0. - sumx2=0. - sumxy=0. - sumy2=0. - - do i=1,npts - if(abs(i-xpk).gt.2.0) then - sumw=sumw + 1.0 - sumx=sumx + x(i) - sumy=sumy + y(i) - sumx2=sumx2 + x(i)**2 - sumxy=sumxy + x(i)*y(i) - sumy2=sumy2 + y(i)**2 - endif - enddo - - delta=sumw*sumx2 - sumx**2 - a=(sumx2*sumy - sumx*sumxy) / delta - b=(sumw*sumxy - sumx*sumy) / delta - - do i=1,npts - y(i)=y(i)-(a + b*x(i)) - enddo - - return - end - diff --git a/smeter.py b/smeter.py deleted file mode 100644 index 380dcf034..000000000 --- a/smeter.py +++ /dev/null @@ -1,73 +0,0 @@ -""" -A basic widget for showing the progress -being made in a task. - -""" - -from Tkinter import * - -class Smeter: - def __init__(self, master=None, orientation="horizontal", - min=0, max=100, width=100, height=18, - doLabel=1, appearance="sunken", - fillColor="blue", background="gray", - labelColor="yellow", labelFont="Verdana", - labelText="", labelFormat="%d%%", - value=50, bd=2): - # preserve various values - self.master=master - self.orientation=orientation - self.min=min - self.max=max - self.width=width - self.height=height - self.doLabel=doLabel - self.fillColor=fillColor - self.labelFont= labelFont - self.labelColor=labelColor - self.background=background - self.labelText=labelText - self.labelFormat=labelFormat - self.value=value - self.frame=Frame(master, relief=appearance, bd=bd) - self.canvas=Canvas(self.frame, height=height, width=width, bd=0, - highlightthickness=0, background=background) - self.scale=self.canvas.create_rectangle(0, 0, width, height, - fill=fillColor) - self.label=self.canvas.create_text(self.canvas.winfo_reqwidth() / 2, - height / 2, text=labelText, - anchor="c", fill=labelColor, - font=self.labelFont) - self.update() - self.canvas.pack(side='top', fill='x', expand='no') - - def updateProgress(self, newValue, newMax=None): - if newMax: - self.max = newMax - self.value = newValue - self.update() - - def update(self): - # Trim the values to be between min and max - value=self.value - if value > self.max: - value = self.max - if value < self.min: - value = self.min - # Adjust the rectangle - if self.orientation == "horizontal": - self.canvas.coords(self.scale, 0, 0, - float(value) / self.max * self.width, self.height) - else: - self.canvas.coords(self.scale, 0, - self.height - (float(value) / self.max*self.height), - self.width, self.height) - # Now update the colors - self.canvas.itemconfig(self.scale, fill=self.fillColor) - self.canvas.itemconfig(self.label, fill=self.labelColor) - # And update the label - if self.doLabel: - dB=int((value-50.0)/2.5) - t='%d dB'%dB - self.canvas.itemconfig(self.label, text=t) - self.canvas.update_idletasks() diff --git a/smooth.f b/smooth.f deleted file mode 100644 index 899dc3594..000000000 --- a/smooth.f +++ /dev/null @@ -1,13 +0,0 @@ - subroutine smooth(x,nz) - - real x(nz) - - x0=x(1) - do i=2,nz-1 - x1=x(i) - x(i)=0.5*x(i) + 0.25*(x0+x(i+1)) - x0=x1 - enddo - - return - end diff --git a/soundin.cpp b/soundin.cpp new file mode 100644 index 000000000..3d704a60e --- /dev/null +++ b/soundin.cpp @@ -0,0 +1,403 @@ +#include "soundin.h" +#include + +#define NFFT 32768 +#define FRAMES_PER_BUFFER 1024 + +extern "C" { +#include +extern struct { + double d8[2*60*96000]; //This is "common/datcom/..." in fortran + float ss[4*322*NFFT]; + float savg[4*NFFT]; + double fcenter; + int nutc; + int idphi; //Phase correction for Y pol'n, degrees + int mousedf; //User-selected DF + int mousefqso; //User-selected QSO freq (kHz) + int nagain; //1 ==> decode only at fQSO +/- Tol + int ndepth; //How much hinted decoding to do? + int ndiskdat; //1 ==> data read from *.tf2 or *.iq file + int neme; //Hinted decoding tries only for EME calls + int newdat; //1 ==> new data, must do long FFT + int nfa; //Low decode limit (kHz) + int nfb; //High decode limit (kHz) + int nfcal; //Frequency correction, for calibration (Hz) + int nfshift; //Shift of displayed center freq (kHz) + int mcall3; //1 ==> CALL3.TXT has been modified + int ntimeout; //Max for timeouts in Messages and BandMap + int ntol; //+/- decoding range around fQSO (Hz) + int nxant; //1 ==> add 45 deg to measured pol angle + int map65RxLog; //Flags to control log files + int nfsample; //Input sample rate + int nxpol; //1 if using xpol antennas, 0 otherwise + int mode65; //JT65 sub-mode: A=1, B=2, C=4 + char mycall[12]; + char mygrid[6]; + char hiscall[12]; + char hisgrid[6]; + char datetime[20]; +} datcom_; +} + +typedef struct +{ + int kin; //Parameters sent to/from the portaudio callback function + int nrx; + bool bzero; + bool iqswap; + bool b10db; +} paUserData; + +//--------------------------------------------------------------- a2dCallback +extern "C" int a2dCallback( const void *inputBuffer, void *outputBuffer, + unsigned long framesToProcess, + const PaStreamCallbackTimeInfo* timeInfo, + PaStreamCallbackFlags statusFlags, + void *userData ) + +// This routine called by the PortAudio engine when samples are available. +// It may be called at interrupt level, so don't do anything +// that could mess up the system like calling malloc() or free(). + +{ + paUserData *udata=(paUserData*)userData; + (void) outputBuffer; //Prevent unused variable warnings. + (void) timeInfo; + (void) userData; + int nbytes,i,j; + float d4[4*FRAMES_PER_BUFFER]; + float d4a[4*FRAMES_PER_BUFFER]; + float tmp; + float fac; + + if( (statusFlags&paInputOverflow) != 0) { + qDebug() << "Input Overflow"; + } + if(udata->bzero) { //Start of a new minute + udata->kin=0; //Reset buffer pointer + udata->bzero=false; + } + + nbytes=udata->nrx*8*framesToProcess; //Bytes per frame + memcpy(d4,inputBuffer,nbytes); //Copy all samples to d4 + + fac=32767.0; + if(udata->b10db) fac=103618.35; + + if(udata->nrx==2) { + for(i=0; i<4*int(framesToProcess); i++) { //Negate odd-numbered frames + d4[i]=fac*d4[i]; + j=i/4; + if((j%2)==1) d4[i]=-d4[i]; + } + if(!udata->iqswap) { + for(i=0; ikin],d4,nbytes); //Copy from d4 to dd() + } else { + int k=0; + for(i=0; i<2*int(framesToProcess); i+=2) { //Negate odd-numbered frames + j=i/2; + if(j%2==0) { + d4a[k++]=fac*d4[i]; + d4a[k++]=fac*d4[i+1]; + } else { + d4a[k++]=-fac*d4[i]; + d4a[k++]=-fac*d4[i+1]; + } + d4a[k++]=0.0; + d4a[k++]=0.0; + } + if(!udata->iqswap) { + for(i=0; ikin],d4a,2*nbytes); //Copy from d4a to dd() + } + udata->kin += framesToProcess; + return paContinue; +} + +void SoundInThread::run() //SoundInThread::run() +{ + quitExecution = false; + + if (m_net) { +// qDebug() << "Start inputUDP()"; + inputUDP(); +// qDebug() << "Finished inputUDP()"; + return; + } + +//---------------------------------------------------- Soundcard Setup +// qDebug() << "Start souncard input"; + + PaError paerr; + PaStreamParameters inParam; + PaStream *inStream; + paUserData udata; + + udata.kin=0; //Buffer pointer + udata.bzero=false; //Flag to request reset of kin + udata.nrx=m_nrx; //Number of polarizations + udata.iqswap=m_IQswap; + udata.b10db=m_10db; + + inParam.device=m_nDevIn; //### Input Device Number ### + inParam.channelCount=2*m_nrx; //Number of analog channels + inParam.sampleFormat=paFloat32; //Get floats from Portaudio + inParam.suggestedLatency=0.05; + inParam.hostApiSpecificStreamInfo=NULL; + + paerr=Pa_IsFormatSupported(&inParam,NULL,96000.0); + if(paerr<0) { + emit error("PortAudio says requested soundcard format not supported."); +// return; + } + paerr=Pa_OpenStream(&inStream, //Input stream + &inParam, //Input parameters + NULL, //No output parameters + 96000.0, //Sample rate + FRAMES_PER_BUFFER, //Frames per buffer +// paClipOff+paDitherOff, //No clipping or dithering + paClipOff, //No clipping + a2dCallback, //Input callbeck routine + &udata); //userdata + + paerr=Pa_StartStream(inStream); + if(paerr<0) { + emit error("Failed to start audio input stream."); + return; + } +// const PaStreamInfo* p=Pa_GetStreamInfo(inStream); + + bool qe = quitExecution; + int n60z=99; + int k=0; + int nsec; + int n60; + int nBusy=0; + int nhsym0=0; + +//---------------------------------------------- Soundcard input loop + while (!qe) { + qe = quitExecution; + if (qe) break; + qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000; + nsec = ms/1000; // Time according to this computer + n60 = nsec % 60; + +// Reset buffer pointer and symbol number at start of minute + if(n60 < n60z or !m_monitoring) { + nhsym0=0; + udata.bzero=true; + } + k=udata.kin; + udata.iqswap=m_IQswap; + udata.b10db=m_10db; + if(m_monitoring) { + if(m_bForceCenterFreq) { + datcom_.fcenter=m_dForceCenterFreq;\ + } else { + datcom_.fcenter=144.125; + } + m_hsym=(k-2048)*11025.0/(2048.0*m_rate); + if(m_hsym != nhsym0) { + if(m_dataSinkBusy) { + nBusy++; + } else { + m_dataSinkBusy=true; + emit readyForFFT(k); //Signal to compute new FFTs + } + nhsym0=m_hsym; + } + } + msleep(100); + n60z=n60; + } + Pa_StopStream(inStream); + Pa_CloseStream(inStream); +} + +void SoundInThread::setSwapIQ(bool b) +{ + m_IQswap=b; +} + +void SoundInThread::set10db(bool b) +{ + m_10db=b; +} +void SoundInThread::setPort(int n) //setPort() +{ + if (isRunning()) return; + this->m_udpPort=n; +} + +void SoundInThread::setInputDevice(int n) //setInputDevice() +{ + if (isRunning()) return; + this->m_nDevIn=n; +} + +void SoundInThread::setRate(double rate) //setRate() +{ + if (isRunning()) return; + this->m_rate = rate; +} + +void SoundInThread::setBufSize(unsigned n) //setBufSize() +{ + if (isRunning()) return; + this->bufSize = n; +} + +void SoundInThread::setFadd(double x) +{ + m_fAdd=x; +} + + +void SoundInThread::quit() //quit() +{ + quitExecution = true; +} + +void SoundInThread::setNetwork(bool b) //setNetwork() +{ + m_net = b; +} + +void SoundInThread::setMonitoring(bool b) //setMonitoring() +{ + m_monitoring = b; +} + +void SoundInThread::setForceCenterFreqBool(bool b) +{ + m_bForceCenterFreq=b; + +} + +void SoundInThread::setForceCenterFreqMHz(double d) +{ + m_dForceCenterFreq=d; +} + +void SoundInThread::setNrx(int n) //setNrx() +{ + m_nrx = n; +} + +int SoundInThread::nrx() +{ + return m_nrx; +} + +int SoundInThread::mhsym() +{ + return m_hsym; +} + +//--------------------------------------------------------------- inputUDP() +void SoundInThread::inputUDP() +{ + udpSocket = new QUdpSocket(); + if(!udpSocket->bind(m_udpPort,QUdpSocket::ShareAddress) ) + { + emit error(tr("UDP Socket bind failed.")); + return; + } + + // Set this socket's total buffer space for received UDP packets + int v=141600; + ::setsockopt(udpSocket->socketDescriptor(), SOL_SOCKET, SO_RCVBUF, + (char *)&v, sizeof(v)); + + bool qe = quitExecution; + struct linradBuffer { + double cfreq; + int msec; + float userfreq; + int iptr; + quint16 iblk; + qint8 nrx; + char iusb; + double d8[174]; + } b; + + int n60z=99; + int k=0; + int nsec; + int n60; + int nhsym0=0; + int iz=174; + int nBusy=0; + + // Main loop for input of UDP packets over the network: + while (!qe) { + qe = quitExecution; + if (qe) break; + if (!udpSocket->hasPendingDatagrams()) { + msleep(2); // Sleep if no packet available + } else { + int nBytesRead = udpSocket->readDatagram((char *)&b,1416); + if (nBytesRead != 1416) qDebug() << "UDP Read Error:" << nBytesRead; + + qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000; + nsec = ms/1000; // Time according to this computer + n60 = nsec % 60; + +// Reset buffer pointer and symbol number at start of minute + if(n60 < n60z) { + k=0; + nhsym0=0; + } + n60z=n60; + + if(m_monitoring) { + m_nrx=b.nrx; + if(m_nrx == +1) iz=348; //One RF channel, i*2 data + if(m_nrx == -1 or m_nrx == +2) iz=174; //One Rf channel, r*4 data + // or 2 RF channels, i*2 data + if(m_nrx == -2) iz=87; // Two RF channels, r*4 data + + // If buffer will not overflow, move data into datcom_ + if ((k+iz) <= 60*96000) { + int nsam=-1; + recvpkt_(&nsam, &b.iblk, &b.nrx, &k, b.d8, b.d8, b.d8); + if(m_bForceCenterFreq) { + datcom_.fcenter=m_dForceCenterFreq; + } else { + datcom_.fcenter=b.cfreq + m_fAdd; + } + } + + m_hsym=(k-2048)*11025.0/(2048.0*m_rate); + if(m_hsym != nhsym0) { + if(m_dataSinkBusy) { + nBusy++; + } else { + m_dataSinkBusy=true; + emit readyForFFT(k); //Signal to compute new FFTs + } + nhsym0=m_hsym; + } + } + } + } + delete udpSocket; +} diff --git a/soundin.h b/soundin.h new file mode 100644 index 000000000..c618b9a87 --- /dev/null +++ b/soundin.h @@ -0,0 +1,85 @@ +#ifndef SOUNDIN_H +#define SOUNDIN_H + +#include +#include +#include +#include + +#ifdef Q_OS_WIN32 +#include +#else +#include +#endif //Q_OS_WIN32 + +// Thread gets audio data from soundcard and signals when a buffer of +// specified size is available. +class SoundInThread : public QThread +{ + Q_OBJECT + bool quitExecution; // if true, thread exits gracefully + double m_rate; // sample rate + unsigned bufSize; // user's buffer size + +protected: + virtual void run(); + +public: + bool m_dataSinkBusy; + + SoundInThread(): + quitExecution(false), + m_dataSinkBusy(false), + m_rate(0), + bufSize(0) + { + } + + void setSwapIQ(bool b); + void set10db(bool b); + void setPort(qint32 n); + void setInputDevice(qint32 n); + void setRate(double rate); + void setBufSize(unsigned bufSize); + void setNetwork(bool b); + void setMonitoring(bool b); + void setFadd(double x); + void setNrx(int n); + void setForceCenterFreqBool(bool b); + void setForceCenterFreqMHz(double d); + int nrx(); + int mhsym(); + +signals: + void bufferAvailable(std::valarray samples, double rate); + void readyForFFT(int k); + void error(const QString& message); + void status(const QString& message); + +public slots: + void quit(); + +private: + void inputUDP(); + + double m_fAdd; + bool m_net; + bool m_monitoring; + bool m_bForceCenterFreq; + bool m_IQswap; + bool m_10db; + double m_dForceCenterFreq; + qint32 m_nrx; + qint32 m_hsym; + qint32 m_nDevIn; + qint32 m_udpPort; + + QUdpSocket *udpSocket; +}; + +extern "C" { + void recvpkt_(int* nsam, quint16* iblk, qint8* nrx, int* k, double s1[], + double s2[], double s3[]); +} + +#endif // SOUNDIN_H diff --git a/soundout.cpp b/soundout.cpp new file mode 100644 index 000000000..9fb99ce9d --- /dev/null +++ b/soundout.cpp @@ -0,0 +1,170 @@ +#include "soundout.h" + +#define FRAMES_PER_BUFFER 256 + +extern "C" { +#include +} + +extern float gran(); //Noise generator (for tests only) + +extern short int iwave[60*11025]; //Wave file for Tx audio +extern int nwave; +extern bool btxok; +extern double outputLatency; + +typedef struct //Parameters sent to or received from callback function +{ + int dummy; +} paUserData; + +//--------------------------------------------------------------- d2aCallback +extern "C" int d2aCallback(const void *inputBuffer, void *outputBuffer, + unsigned long framesToProcess, + const PaStreamCallbackTimeInfo* timeInfo, + PaStreamCallbackFlags statusFlags, + void *userData ) +{ + paUserData *udata=(paUserData*)userData; + short *wptr = (short*)outputBuffer; + unsigned int i,n; + static int ic=0; +// static int ic0=0; +// static int nsec0=-99; + static bool btxok0=false; + static int nminStart=0; +// static t0,t1; + double tsec,tstart; + + int nsec; + + // Get System time + qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000; + tsec = 0.001*ms; + nsec = ms/1000; + + if(btxok and !btxok0) { //Start (or re-start) a transmission + n=nsec/60; + tstart=tsec - n*60.0 - 1.0; + + if(tstart<1.0) { + ic=0; //Start of minute, set starting index to 0 +// ic0=ic; + nminStart=n; +// t0=timeInfo->currentTime; + } else { + if(n != nminStart) { //Late start in new minute: compute starting index + ic=(int)(tstart*11025.0); +// ic0=ic; +// t0=timeInfo->currentTime; +// qDebug() << "B" << t0 << ic0; + nminStart=n; + } + } + /* + qDebug() << "A" << n << ic + << QString::number( tsec, 'f', 3 ) + << QString::number( tstart, 'f', 3 ) + << QString::number( timeInfo->currentTime, 'f', 3 ) + << QString::number( timeInfo->outputBufferDacTime, 'f', 3 ) + << QString::number( timeInfo->outputBufferDacTime - + timeInfo->currentTime, 'f', 3 ) + << QString::number( timeInfo->currentTime - tsec, 'f', 3 ); + */ + } + btxok0=btxok; + + /* + if(nsec!=nsec0) { + double txt=timeInfo->currentTime - t0; + double r=0.0; + if(txt>0.0) r=(ic-ic0)/txt; + qDebug() << "C" << txt << ic-ic0 << r; + nsec0=nsec; + } + */ + + if(btxok) { + for(i=0 ; i nwave) i2=0; +// i2 = 500.0*(i2/32767.0 + 5.0*gran()); //Add noise (tests only!) + if(!btxok) i2=0; + *wptr++ = i2; //left + *wptr++ = i2; //right + ic++; + } + } else { + for(i=0 ; i nwave) { + btxok=0; + ic=0; + } + return 0; +} + +void SoundOutThread::run() +{ + PaError paerr; + PaStreamParameters outParam; + PaStream *outStream; + paUserData udata; + quitExecution = false; + + outParam.device=m_nDevOut; //Output device number + outParam.channelCount=2; //Number of analog channels + outParam.sampleFormat=paInt16; //Send short ints to PortAudio + outParam.suggestedLatency=0.05; + outParam.hostApiSpecificStreamInfo=NULL; + + paerr=Pa_IsFormatSupported(NULL,&outParam,11025.0); + if(paerr<0) { + qDebug() << "PortAudio says requested output format not supported."; + qDebug() << paerr; + return; + } + +// udata.nwave=m_nwave; +// udata.btxok=false; + + paerr=Pa_OpenStream(&outStream, //Output stream + NULL, //No input parameters + &outParam, //Output parameters + 11025.0, //Sample rate + FRAMES_PER_BUFFER, //Frames per buffer + paClipOff, //No clipping + d2aCallback, //output callbeck routine + &udata); //userdata + + paerr=Pa_StartStream(outStream); + if(paerr<0) { + qDebug() << "Failed to start audio output stream."; + return; + } + const PaStreamInfo* p=Pa_GetStreamInfo(outStream); + outputLatency = p->outputLatency; + bool qe = quitExecution; + +//---------------------------------------------- Soundcard output loop + while (!qe) { + qe = quitExecution; + if (qe) break; +// udata.nwave=m_nwave; +// if(m_txOK) udata.btxok=1; +// if(!m_txOK) udata.btxok=0; + msleep(100); + } + Pa_StopStream(outStream); + Pa_CloseStream(outStream); +} + +void SoundOutThread::setOutputDevice(int n) //setOutputDevice() +{ + if (isRunning()) return; + this->m_nDevOut=n; +} diff --git a/soundout.h b/soundout.h new file mode 100644 index 000000000..3df140d37 --- /dev/null +++ b/soundout.h @@ -0,0 +1,42 @@ +#ifndef SOUNDOUT_H +#define SOUNDOUT_H +#include +#include + +// An instance of this thread sends audio data to a specified soundcard. +// Output can be muted while underway, preserving waveform timing when +// transmission is resumed. + +class SoundOutThread : public QThread +{ + Q_OBJECT + +protected: + virtual void run(); + +public: +// Constructs (but does not start) a SoundOutThread + SoundOutThread() + : quitExecution(false) // Initialize some private members + , m_rate(0) + , m_nwave(48*11025) + , m_txOK(false) + , m_txMute(false) + { + } + +public: + void setOutputDevice(qint32 n); + bool quitExecution; //If true, thread exits gracefully + + +// Private members +private: + double m_rate; //Sample rate + qint32 m_nDevOut; //Output device number + qint32 m_nwave; //Length of wave file + bool m_txOK; //Enable Tx audio + bool m_txMute; //Mute temporarily +}; + +#endif diff --git a/spcom.f90 b/spcom.f90 deleted file mode 100644 index 8e86c33a6..000000000 --- a/spcom.f90 +++ /dev/null @@ -1,3 +0,0 @@ -parameter (NFFT=32768) -common/spcom/ss(4,322,NFFT),ss5(322,NFFT),savg(4,NFFT),nhsym, & - ssz(4,322,NFFT),ssz5(322,NFFT),szavg(4,NFFT) diff --git a/spec.f90 b/spec.f90 deleted file mode 100644 index 42576c7f4..000000000 --- a/spec.f90 +++ /dev/null @@ -1,142 +0,0 @@ -subroutine spec(brightness,contrast,ngain,nspeed,a,a2) - - parameter (NX=750,NY=130,NTOT=NX*NY) - -! Input: - integer brightness,contrast !Display parameters - integer ngain !Digital gain for input audio - integer nspeed !Scrolling speed index - -! Output: - integer*2 a(NTOT) !Pixel values for NX x NY array - integer*2 a2(NTOT) !Pixel values for NX x NY array - - logical first - integer nstep(5) - integer hist(0:1000) -! Could save memory by doing the averaging-by-7 (or 10?) of ss5 in symspec. - include 'spcom.f90' - real s(NFFT,NY),savg2(NFFT) - include 'gcom1.f90' - include 'gcom2.f90' - include 'gcom3.f90' - include 'gcom4.f90' - data first/.true./ - data nstep/28,20,14,10,7/ !Integration limits - save - - if(first) then - df=96000.0/nfft - call zero(a,NX*NY/2) - call zero(a2,NX*NY/2) - first=.false. - endif - - nadd=nstep(nspeed) - nlines=322/nadd - call zero(s,NFFT*NY) - k=0 - do j=1,nlines - do n=1,nadd - k=k+1 - do i=1,NFFT - s(i,j)=s(i,j) + ss5(k,i) - enddo - enddo - enddo - call zero(savg2,NFFT) - do j=1,nlines - do i=1,NFFT - savg2(i)=savg2(i) + s(i,j) - enddo - enddo - - ia=0.08*NFFT - ib=0.92*NFFT - smin=1.e30 - smax=-smin - sum=0. - nsum=0 - do i=ia,ib - smin=min(savg2(i),smin) - smax=max(savg2(i),smax) - if(savg2(i).lt.10000.0) then - sum=sum + savg2(i) - nsum=nsum+1 - endif - enddo - ave=sum/nsum - call zero(hist,1001) - do i=ia,ib - n=savg2(i) * (300.0/ave) - if(n.gt.1000) n=1000 - if(n.ge.0 .and. n.le.1000) hist(n)=hist(n)+1 - enddo - - sum=0. - do i=0,1000 - sum=sum + float(hist(i))/(ib-ia+1) - if(sum.gt.0.4) go to 10 - enddo -10 base=i*ave/300.0 - base=base/(nadd*nlines) - - newpts=NX*nlines - do i=newpts+1,NX*NY - a(i)=a(i-newpts) - a2(i)=a2(i-newpts) - enddo - - logmap=1 - gamma=1.3 + 0.01*contrast - offset=(brightness+64.0)/2 - if(logmap.eq.1) then - gain=40*sqrt(nstep(nspeed)/5.0) * 5.0**(0.01*contrast) - offset=brightness/2 + 10 - endif - fac=20.0/nadd - fac=fac*0.065/base - ! fac=fac*(0.1537/base) - foffset=0.001*(1270+nfcal) - nbpp=(nfb-nfa)*NFFT/(96.0*NX) !Bins per pixel in wideband (upper) waterfall - fselect=mousefqso + foffset - 1000.d0*(fcenter-144.125d0) - imid=nint(1000.0*(fselect-125.0+48.0)/df) - fmid=0.5*(nfa+nfb) + foffset - imid0=nint(1000.0*(fmid-125.0+48.0)/df) - nbpp/2 !Last term is empirical - i0=imid-375 - ii0=imid0-375*nbpp -! if(nfullspec.eq.1) then -! nbpp=NFFT/NX -! ii0=0 -! endif - - k=0 - do j=nlines,1,-1 !Reverse order so last will be on top - do i=1,NX - k=k+1 - n=0 - x=0. - iia=(i-1)*nbpp + ii0 + 1 - iib=i*nbpp + ii0 - do ii=iia,iib - x=max(x,s(ii,j)) - enddo - x=fac*x - if(x.gt.0.0 .and. logmap.eq.0) n=(2.0*x)**gamma + offset - if(x.gt.0.0 .and. logmap.eq.1) n=gain*log10(1.0*x) + offset - n=min(252,max(0,n)) - a(k)=n - -! Now do the lower (zoomed) waterfall with one FFT bin per pixel. - n=0 - x=fac*s(i0+i-1,j) - if(x.gt.0.0 .and. logmap.eq.0) n=(3.0*x)**gamma + offset - if(x.gt.0.0 .and. logmap.eq.1) n=1.2*gain*log10(1.0*x) + offset - n=min(252,max(0,n)) - a2(k)=n - - enddo - enddo - - return -end subroutine spec diff --git a/specjt.py b/specjt.py deleted file mode 100644 index 560c08b8b..000000000 --- a/specjt.py +++ /dev/null @@ -1,574 +0,0 @@ -#----------------------------------------------------- SpecJT -from Tkinter import * -from tkMessageBox import showwarning -import time -import os -import Pmw -import Audio -import g -import string -import cPickle -#from Numeric import zeros, multiarray -#import numpy -try: - from numpy.oldnumeric import zeros, multiarray -except: - from Numeric import zeros, multiarray -import Image, ImageTk, ImageDraw -from palettes import colormapblue, colormapgray0, colormapHot, \ - colormapAFMHot, colormapgray1, colormapLinrad, Colormap2Palette -#import wsjt #Is this OK to do? - -def hidespecjt(): - root.withdraw() - g.showspecjt=0 -def showspecjt(): - root.deiconify() - g.showspecjt=2 - -if(__name__=="__main__"): - root = Tk() -else: - root=Toplevel() - root.protocol('WM_DELETE_WINDOW',hidespecjt) - -root.withdraw() - -#------------------------------------------- Define globals and initialize. -b0=0 -c0=0 -g0=0 -g.cmap="Linrad" -g.cmap0="Linrad" -bw=96.0 -df=2.69165 -fcenter0=0. -fmid=1500 -fmid0=1500 -frange=2000 -frange0=2000 -isec0=-99 -mode0="" -mousedf0=0 -mousefqso0=0 -dftolerance0=500 -naxis=IntVar() -ncall=0 -newMinute=0 -nflat=IntVar() -nfr=IntVar() -nfr.set(1) -nfreeze0=0 -nmark=IntVar() -nmark0=0 -nn=0 -npal=IntVar() -npal.set(2) -nscroll=0 -nspeed0=IntVar() -root_geom="" -t0="" -tol0=400 -ttot=0.0 - -c=Canvas() -NX=750 -NY=130 -a=zeros(NX*NY,'s') -#a=numpy.zeros(NX*NY,numpy.int16) -im=Image.new('P',(NX,NY)) -line0=Image.new('P',(NX,1)) #Image fragment for top line of waterfall -draw=ImageDraw.Draw(im) -pim=ImageTk.PhotoImage(im) - -a2=zeros(NX*NY,'s') -#a2=numpy.zeros(NX*NY,numpy.int16) -im2=Image.new('P',(NX,NY)) -line02=Image.new('P',(NX,1)) #Image fragment for top line of zoomed waterfall -draw2=ImageDraw.Draw(im2) -pim2=ImageTk.PhotoImage(im2) -balloon=Pmw.Balloon(root) - -def pal_gray0(): - g.cmap="gray0" - im.putpalette(Colormap2Palette(colormapgray0),"RGB") - im2.putpalette(Colormap2Palette(colormapgray0),"RGB") -def pal_gray1(): - g.cmap="gray1" - im.putpalette(Colormap2Palette(colormapgray1),"RGB") - im2.putpalette(Colormap2Palette(colormapgray1),"RGB") -def pal_linrad(): - g.cmap="Linrad" - im.putpalette(Colormap2Palette(colormapLinrad),"RGB") - im2.putpalette(Colormap2Palette(colormapLinrad),"RGB") -def pal_blue(): - g.cmap="blue" - im.putpalette(Colormap2Palette(colormapblue),"RGB") - im2.putpalette(Colormap2Palette(colormapblue),"RGB") -def pal_Hot(): - g.cmap="Hot" - im.putpalette(Colormap2Palette(colormapHot),"RGB") - im2.putpalette(Colormap2Palette(colormapHot),"RGB") -def pal_AFMHot(): - g.cmap="AFMHot" - im.putpalette(Colormap2Palette(colormapAFMHot),"RGB") - im2.putpalette(Colormap2Palette(colormapAFMHot),"RGB") - -#--------------------------------------------------- Command button routines - -#---------------------------------------------------- fdf_change -# Readout of graphical cursor location -def fdf_change(event): - global bw - m=int(1000.0*Audio.gcom2.fcenter) % 1000 - 125 - fmid=0.5*float(Audio.gcom2.nfa + Audio.gcom2.nfb) + m - df=bw/NX #kHz per pixel - g.Freq=df*(event.x-375) + fmid - n=int(g.Freq+0.5) - t="%d" % (n,) - if g.fc[n] != "": - t=t + ": " + g.fc[n] - fdf.configure(text=t) - -def fdf_change2(event): - g.DFreq=(2200.0/750.0)*(event.x-375) - -#---------------------------------------------------- set_fqso -def set_fqso(event): - n=int(g.Freq + 0.5) - Audio.gcom2.mousefqso=n - df_mark() - -#---------------------------------------------------- set_freezedf -def set_freezedf(event): - n=int(g.DFreq + 0.5) - Audio.gcom2.mousedf=n - df_mark() - -#------------------------------------------------------ ftnstr -def ftnstr(x): - y="" - for i in range(len(x)): - y=y+x[i] - return y - -#---------------------------------------------------- df_mark -def df_mark(): - global bw - draw_axis() -# Mark QSO freq in top graph - color='green' - m=int(1000.0*Audio.gcom2.fcenter) % 1000 - 125 - fmid=0.5*float(Audio.gcom2.nfa + Audio.gcom2.nfb) + m - df=bw/NX #kHz per pixel - x1=375.0 + (Audio.gcom2.mousefqso-fmid)/df - c.create_line(x1,25,x1,12,fill=color,width=2) - df=96000.0/32768.0 -# Mark sync tone and top JT65 tone (green) and shorthand tones (red) - fstep=20.0*11025.0/4096.0 - x1=375.0 + (Audio.gcom2.mousedf + 6.6*fstep)/df - c2.create_line(x1,25,x1,12,fill=color,width=2) - x1=375.0 + (Audio.gcom2.mousedf - Audio.gcom2.dftolerance)/df - x2=375.0 + (Audio.gcom2.mousedf + Audio.gcom2.dftolerance)/df - c2.create_line(x1,25,x2,25,fill=color,width=2) - for i in range(5): - x1=375.0 + (Audio.gcom2.mousedf + i*fstep)/df - j=12 - if i>0: j=15 - if i!=1: c2.create_line(x1,25,x1,j,fill=color,width=2) - color='red' - -#-------------------------------------------------------- draw_axis -def draw_axis(): - c.delete(ALL) - xdf=bw/NX #kHz per pixel - xmid=0.5*float(Audio.gcom2.nfb + Audio.gcom2.nfa) - x1=int(xmid-0.6*bw) #Make it too wide, to be - x2=int(xmid+0.6*bw) #sure to get all the numbers - ixadd=(int(1000.0*Audio.gcom2.fcenter) % 1000) - 125 - ilab=10 - if bw <= 60.0: ilab=5 - if bw <= 30.0: ilab=2 - for ix in range(x1,x2,1): - i=0.5*NX + (ix-xmid)/xdf - j=20 - k=int(ix+ixadd+10000.5)%1000 - if (k%5)==0: j=16 - if (k%ilab)==0 : - j=16 - x=i-1 - if k<100: x=x+1 - y=8 - c.create_text(x,y,text=str(k)) - c.create_line(i,25,i,j,fill='black') #Draw the upper scale - - c2.delete(ALL) - xmid2=0 - bw2=750.0*96000.0/32768.0 #approx 2197.27 Hz - x1=int(xmid-0.5*bw2)/100 - 1 - x1=100*x1 - x2=int(xmid+0.5*bw2) - xdf2=bw2/NX - for ix in range(x1,x2,20): - i=0.5*NX + (ix-xmid2)/xdf2 - j=20 -# if (ix%5)==0: j=16 - if (ix%100)==0 : - j=16 - x=i-1 - if ix<1000: x=x+2 - if ix<0: x=x-2 - y=8 - c2.create_text(x,y,text=str(ix)) - c2.create_line(i,25,i,j,fill='black') - -#---------------------------------------------------- freq_range -def freq_range(event): -# Move frequency scale left or right in 100 Hz increments - global fmid - if event.num==1: - fmid=fmid+100 - else: - if event.num==3: - fmid=fmid-100 - if fmid<1000*nfr.get(): fmid=1000*nfr.get() - if fmid>5000-1000*nfr.get(): fmid=5000-1000*nfr.get() - -#---------------------------------------------------- freeze_decode1 -def freeze_decode1(event): -# If decoder is busy, ignore request - if Audio.gcom2.ndecoding==0: - set_fqso(event) - g.freeze_decode=1 - -#---------------------------------------------------- freeze_decode2 -def freeze_decode2(event): -# If decoder is busy or we are not monitoring, ignore request - if Audio.gcom2.ndecoding==0 or Audio.gcom2.monitoring==0: - set_freezedf(event) - g.freeze_decode=2 - -#---------------------------------------------------- update -def update(): - global a,a2,b0,c0,g0,im,im2,isec0,line0,line02,newMinute,\ - nscroll,pim,pim2,nfa0,nfb0,bw, \ - root_geom,t0,mousedf0,mousefqso0,nfreeze0,tol0,mode0,nmark0, \ - fmid,fmid0,frange,frange0,dftolerance0,fcenter0 - - utc=time.gmtime(time.time()+0.1*Audio.gcom1.ndsec) - isec=utc[5] - - if isec != isec0: #Do once per second - isec0=isec - t0=time.strftime('%H:%M:%S',utc) - ltime.configure(text=t0) - root_geom=root.geometry() - g.rms=Audio.gcom1.rms - if isec==0: nscroll=0 - if isec==59: newMinute=1 - - nbpp=int((Audio.gcom2.nfb - Audio.gcom2.nfa)*32768/(96.0*NX)) - bw=750.0*(96.0/32768.0)*nbpp - - if g.showspecjt==1: - showspecjt() - nspeed=nspeed0.get() #Waterfall update rate - brightness=sc1.get() - contrast=sc2.get() - g0=sc3.get() - - newspec=Audio.gcom2.newspec #True if new data available - if newspec or brightness != b0 or contrast != c0 or g.cmap != g.cmap0: - Audio.spec(brightness,contrast,g0,nspeed,a,a2) #Call Fortran routine spec - n=Audio.gcom2.nlines - box=(0,0,NX,130-n) #Define region - region=im.crop(box) #Get all but last line(s) - region2=im2.crop(box) #Get all but last line(s) - box=(125,0,624,120) - try: - if newspec==1: - im.paste(region,(0,n)) #Move waterfall down - im2.paste(region2,(0,n)) #Move waterfall down - except: - print "Images did not match, continuing anyway." - for i in range(n): - line0.putdata(a[NX*i:NX*(i+1)]) #One row of pixels to line0 - im.paste(line0,(0,i)) #Paste in new top line(s) - line02.putdata(a2[NX*i:NX*(i+1)])#One row of pixels to line0 - im2.paste(line02,(0,i)) #Paste in new top line(s) - nscroll=nscroll+n - - if newspec: - if Audio.gcom2.monitoring: - if newMinute: - draw.line((0,0,749,0),fill=128) #Draw the minute separator - draw2.line((0,0,749,0),fill=128) #Draw the minute separator -# if nscroll == 13: -# draw.text((5,2),t0[0:5],fill=253) #Insert time label -# draw2.text((5,2),t0[0:5],fill=253) #Insert time label - else: - draw.line((0,0,749,0),fill=128) #Draw the minute separator - draw2.line((0,0,749,0),fill=128) #Draw the minute separator - - t=g.ftnstr(Audio.gcom2.utcdata) - -# This test shouldn.t be needed, but ... - try: - draw.text((4,1),t[0:5],fill=253) #Insert time label - draw2.text((4,1),t[0:5],fill=253) #Insert time label - except: - pass - - if newspec or brightness != b0 or contrast != c0 or g.cmap != g.cmap0: - pim=ImageTk.PhotoImage(im) #Convert Image to PhotoImage - graph1.delete(ALL) - pim2=ImageTk.PhotoImage(im2) #Convert Image to PhotoImage - graph2.delete(ALL) - #For some reason, top two lines are invisible, so we move down 2 - graph1.create_image(0,0+2,anchor='nw',image=pim) - graph2.create_image(0,0+2,anchor='nw',image=pim2) - g.ndecphase=2 - newMinute=0 - Audio.gcom2.newspec=0 - b0=brightness #Save scale values - c0=contrast - g.cmap0=g.cmap - - if Audio.gcom2.nfreeze != nfreeze0: - if not Audio.gcom2.nfreeze: draw_axis() - if Audio.gcom2.nfreeze: df_mark() - nfreeze0=int(Audio.gcom2.nfreeze) - - if Audio.gcom2.fcenter!=fcenter0: - draw_axis() - fcenter0=float(Audio.gcom2.fcenter) - - if (Audio.gcom2.mousedf != mousedf0 or - Audio.gcom2.mousefqso != mousefqso0 or - Audio.gcom2.dftolerance != dftolerance0 or - Audio.gcom2.nfa != nfa0 or Audio.gcom2.nfb != nfb0): - df_mark() -# The following int() calls are to ensure that the values copied to -# mousedf0 and mousefqso0 are static. - mousedf0=int(Audio.gcom2.mousedf) - mousefqso0=int(Audio.gcom2.mousefqso) - dftolerance0=int(Audio.gcom2.dftolerance) - nfa0=int(Audio.gcom2.nfa) - nfb0=int(Audio.gcom2.nfb) - - if g.mode!=mode0: - df_mark() ### was draw_axis() - mode0=g.mode - - if nmark.get()!=nmark0: - df_mark() - nmark0=nmark.get() - -# if newspec: Audio.gcom2.ndiskdat=0 - Audio.gcom2.nlines=0 - Audio.gcom2.nflat=nflat.get() - - frange=nfr.get()*2000 - if(fmid<>fmid0 or frange<>frange0): - if fmid<1000*nfr.get(): fmid=1000*nfr.get() - if fmid>5000-1000*nfr.get(): fmid=5000-1000*nfr.get() - df_mark() - fmid0=fmid - frange0=frange - Audio.gcom2.nfmid=int(fmid) - Audio.gcom2.nfrange=int(frange) - - ltime.after(200,update) #Reset the timer - -#-------------------------------------------------------- Create GUI widgets - -#-------------------------------------------------------- Menu bar -frame = Frame(root) -frame.pack() - -mbar = Frame(frame) -mbar.pack(fill=X) - -#--------------------------------------------------------- Palette menu -setupbutton = Menubutton(mbar, text = 'Palette', ) -setupbutton.pack(side = LEFT) -setupmenu = Menu(setupbutton,tearoff=0) -setupbutton['menu'] = setupmenu -setupmenu.add_radiobutton(label='Gray0',command=pal_gray0, - value=0,variable=npal) -setupmenu.add_radiobutton(label='Gray1',command=pal_gray1, - value=1,variable=npal) -setupmenu.add_radiobutton(label='Linrad',command=pal_linrad, - value=2,variable=npal) -setupmenu.add_radiobutton(label='Blue',command=pal_blue, - value=3,variable=npal) -setupmenu.add_radiobutton(label='Hot',command=pal_Hot, - value=4,variable=npal) -setupmenu.add_radiobutton(label='AFMHot',command=pal_AFMHot, - value=5,variable=npal) - -lab1=Label(mbar,width=20,padx=20,bd=0) -lab1.pack(side=LEFT) -fdf=Label(mbar,width=30,bd=0,anchor=W) -fdf.pack(side=LEFT) -lab3=Label(mbar,padx=13,bd=0) -lab3.pack(side=LEFT) -lab0=Label(mbar,padx=10,bd=0) -lab0.pack(side=LEFT) - -#------------------------------------------------- Speed selection buttons -for i in (5, 4, 3, 2, 1): - t=str(i) - Radiobutton(mbar,text=t,value=i,variable=nspeed0).pack(side=RIGHT) -nspeed0.set(1) -lab2=Label(mbar,text='Speed: ',bd=0) -lab2.pack(side=RIGHT) -#------------------------------------------------- Graphics frame -iframe1 = Frame(frame, bd=1, relief=SUNKEN) -c=Canvas(iframe1, bg='white', width=NX, height=25,bd=0) -c.pack(side=TOP) -Widget.bind(c,"",freq_range) -Widget.bind(c,"",freq_range) -Widget.bind(c,"",freq_range) - -graph1=Canvas(iframe1, bg='black', width=NX, height=NY,bd=0,cursor='crosshair') -graph1.pack(side=TOP) -Widget.bind(graph1,"",fdf_change) -Widget.bind(graph1,"",set_fqso) -Widget.bind(graph1,"",freeze_decode1) -iframe1.pack(expand=1, fill=X) - -c2=Canvas(iframe1, bg='white', width=NX, height=25,bd=0) -c2.pack(side=TOP) -Widget.bind(c2,"",freq_range) -Widget.bind(c2,"",freq_range) -Widget.bind(c2,"",freq_range) - -graph2=Canvas(iframe1, bg='black', width=NX, height=NY,bd=0,cursor='crosshair') -graph2.pack(side=TOP) -Widget.bind(graph2,"",fdf_change2) -Widget.bind(graph2,"",set_freezedf) -Widget.bind(graph2,"",freeze_decode2) -iframe1.pack(expand=1, fill=X) - - -#-------------------------------------------------- Status frame -iframe2 = Frame(frame, bd=1, relief=SUNKEN) -status=Pmw.MessageBar(iframe2,entry_width=17,entry_relief=GROOVE) -status.pack(side=LEFT) -sc1=Scale(iframe2,from_=-100.0,to_=100.0,orient='horizontal', - showvalue=0,sliderlength=5) -sc1.pack(side=LEFT) -sc2=Scale(iframe2,from_=-100.0,to_=100.0,orient='horizontal', - showvalue=0,sliderlength=5) -sc2.pack(side=LEFT) -balloon.bind(sc1,"Brightness", "Brightness") -balloon.bind(sc2,"Contrast", "Contrast") -balloon.configure(statuscommand=status.helpmessage) -ltime=Label(iframe2,bg='black',fg='yellow',width=8,bd=2,font=('Helvetica',16)) -ltime.pack(side=LEFT) -msg1=Label(iframe2,padx=2,bd=2,text=" ") -msg1.pack(side=LEFT) -sc3=Scale(iframe2,from_=-100.0,to_=100.0,orient='horizontal', - showvalue=0,sliderlength=5) -sc3.pack(side=LEFT) -balloon.bind(sc3,"Gain", "Digital Gain") -iframe2.pack(expand=1, fill=X) - -#----------------------------------------------- Restore params from INI file -try: - f=open('MAP65.INI',mode='r') - params=f.readlines() -except: - params="" - -try: - for i in range(len(params)): - key,value=params[i].split() - if key == 'SpecJTGeometry': root.geometry(value) - elif key == 'UpdateInterval': nspeed0.set(value) - elif key == 'Brightness': - sc1.set(value) - b0=sc1.get() - elif key == 'Contrast': - sc2.set(value) - c0=sc2.get() - elif key == 'DigitalGain': sc3.set(value) - elif key == 'AxisLabel': naxis.set(value) - elif key == 'MarkTones': nmark.set(value) - elif key == 'Flatten': nflat.set(value) - elif key == 'Palette': - g.cmap=value - g.cmap0=value - elif key == 'Frange': nfr.set(value) - elif key == 'Fmid': fmid=int(value) - else: pass -except: - print 'Error reading MAP65.INI, continuing with defaults.' - print key,value - -#------------------------------------------------------ Select palette -if g.cmap == "gray0": - pal_gray0() - npal.set(0) -if g.cmap == "gray1": - pal_gray1() - npal.set(1) -if g.cmap == "Linrad": - pal_linrad() - npal.set(2) -if g.cmap == "blue": - pal_blue() - npal.set(3) -if g.cmap == "Hot": - pal_Hot() - npal.set(4) -if g.cmap == "AFMHot": - pal_AFMHot() - npal.set(5) - -#---------------------------------------------- Display GUI and start mainloop -#draw_axis() -df_mark() - -try: - ndevin=g.ndevin.get() -except: - ndevin=0 -Audio.gcom1.ndevin=ndevin - -try: - ndevout=g.ndevout.get() -except: - ndevout=0 -Audio.gcom1.ndevout=ndevout - # Only valid for windows - # for now -Audio.audio_init(ndevin,ndevout) #Start the audio stream - -ltime.after(200,update) - -root.deiconify() -g.showspecjt=2 -if g.Win32: root.iconbitmap("wsjt.ico") -root.title('Waterfall') -if(__name__=="__main__"): - Audio.gcom2.monitoring=1 -root.mainloop() - -#-------------------------------------------------- Save user params and quit -f=open('MAP65.INI',mode='w') -f.write("UpdateInterval " + str(nspeed0.get()) + "\n") -f.write("Brightness " + str(b0)+ "\n") -f.write("Contrast " + str(c0)+ "\n") -f.write("DigitalGain " + str(g0)+ "\n") -f.write("AxisLabel " + str(naxis.get()) + "\n") -f.write("MarkTones " + str(nmark.get()) + "\n") -f.write("Flatten " + str(nflat.get()) + "\n") -f.write("Palette " + g.cmap + "\n") -f.write("Frange " + str(nfr.get()) + "\n") -f.write("Fmid " + str(fmid) + "\n") -root_geom=root_geom[root_geom.index("+"):] -f.write("SpecJTGeometry " + root_geom + "\n") -f.close() - diff --git a/ss.bat b/ss.bat new file mode 100644 index 000000000..37f669a18 --- /dev/null +++ b/ss.bat @@ -0,0 +1 @@ +svn status | grep -v '?' diff --git a/sss.bat b/sss.bat new file mode 100644 index 000000000..7b51c8cf8 --- /dev/null +++ b/sss.bat @@ -0,0 +1 @@ +svn status diff --git a/start_portaudio.c b/start_portaudio.c deleted file mode 100644 index d1f439746..000000000 --- a/start_portaudio.c +++ /dev/null @@ -1,30 +0,0 @@ -#include -#include -#include -#include -#include -#include - -extern void a2d_(int *iarg); -extern void decode1_(int *iarg); -extern void recvpkt_(int *iarg); - -int start_threads_(int *ndevin, int *ndevout, short y1[], short y2[], - int *nbuflen, int *iwrite, short iwave[], - int *nwave, int *nfsample, int *nsamperbuf, - int *TRPeriod, int *TxOK, int *ndebug, - int *Transmitting, double *Tsec, int *ngo, int *nmode, - double tbuf[], int *ibuf, int *ndsec) -{ - pthread_t thread1,thread2,thread3; - int iret1,iret2,iret3; - int iarg1=1, iarg2=2, iarg3=3; - - iret1 = pthread_create(&thread1,NULL, - (void *)a2d_,&iarg1); - iret2 = pthread_create(&thread2,NULL, - (void *)decode1_,&iarg2); - iret3 = pthread_create(&thread3,NULL, - (void *)recvpkt_,&iarg3); - return(iret1 | iret2 | iret3); -} diff --git a/symspec.f90 b/symspec.f90 deleted file mode 100644 index 4cb46ee5d..000000000 --- a/symspec.f90 +++ /dev/null @@ -1,173 +0,0 @@ -subroutine symspec(dd,kbuf,kk,kkdone,nutc,newdat) - -! Compute spectra at four polarizations, using half-symbol steps. - - parameter (NSMAX=60*96000) - real*4 dd(4,NSMAX,2) - complex z - real*8 ts,hsym - include 'spcom.f90' - include 'gcom2.f90' - complex cx(NFFT),cy(NFFT) ! pad to 32k with zeros - data kbuf0/-999/,n/0/ - save - - kkk=kk - if(kbuf.eq.2) kkk=kk-5760000 - fac=0.0002 - hsym=2048.d0*96000.d0/11025.d0 !Samples per half symbol - npts=hsym !Integral samples per half symbol - ntot=322 !Half symbols per transmission -! ntot=279 !Half symbols in 51.8 sec - - if(kbuf.ne.kbuf0 .or. ndiskdat.eq.1) then - kkdone=0 - kbuf0=kbuf - ts=1.d0 - hsym - n=0 - do ip=1,4 - do i=1,NFFT - szavg(ip,i)=0. - enddo - enddo - -! Get baseline power level for this minute - n1=200 !Block size (somewhat arbitrary) - n2=(kkk-kkdone)/n1 !Number of blocks - k=0 !Starting place - sqq=0. - nsqq=0 - do j=1,n2 - sq=0. - do i=1,n1 !Find power in each block - k=k+1 - x1=dd(1,k,kbuf) - x2=dd(2,k,kbuf) - x3=dd(3,k,kbuf) - x4=dd(4,k,kbuf) - sq=sq + x1*x1 + x2*x2 + x3*x3 + x4*x4 - enddo - if(sq.lt.n1*10000.) then !Find power in good blocks - sqq=sqq+sq - nsqq=nsqq+1 - endif - enddo - sqave=sqq/nsqq !Average power in good blocks - nclip=0 - nz2=0 - endif - - if(nblank.ne.0) then -! Apply final noise blanking - n2=(kkk-kkdone)/n1 - k=kkdone - do j=1,n2 - sq=0. - do i=1,n1 - k=k+1 - x1=dd(1,k,kbuf) - x2=dd(2,k,kbuf) - x3=dd(3,k,kbuf) - x4=dd(4,k,kbuf) - sq=sq + x1*x1 + x2*x2 + x3*x3 + x4*x4 - enddo -! If power in this block is excessive, blank it. - if(sq.gt.1.5*sqave) then - do i=k-n1+1,k - dd(1,i,kbuf)=0 - dd(2,i,kbuf)=0 - dd(3,i,kbuf)=0 - dd(4,i,kbuf)=0 - enddo - nclip=nclip+1 - endif - enddo - nz2=nz2+n2 - pctblank=nclip*100.0/nz2 - else - pctblank=0. - endif - - do nn=1,ntot - i0=ts+hsym !Starting sample pointer - if((i0+npts-1).gt.kkk) go to 998 !See if we have enough points - i1=ts+2*hsym !Next starting sample pointer - ts=ts+hsym !OK, update the exact sample pointer - do i=1,npts !Copy data to FFT arrays - xr=fac*dd(1,i0+i,kbuf) - xi=fac*dd(2,i0+i,kbuf) - cx(i)=cmplx(xr,xi) - yr=fac*dd(3,i0+i,kbuf) - yi=fac*dd(4,i0+i,kbuf) - cy(i)=cmplx(yr,yi) - enddo - - do i=npts+1,NFFT !Pad to 32k with zeros - cx(i)=0. - cy(i)=0. - enddo - - call four2a(cx,NFFT,1,1,1) !Do the FFTs - call four2a(cy,NFFT,1,1,1) - - n=n+1 - do i=1,NFFT !Save and accumulate power spectra - sx=real(cx(i))**2 + aimag(cx(i))**2 - ssz(1,n,i)=sx ! Pol = 0 - szavg(1,i)=szavg(1,i) + sx - - z=cx(i) + cy(i) - s45=0.5*(real(z)**2 + aimag(z)**2) - ssz(2,n,i)=s45 ! Pol = 45 - szavg(2,i)=szavg(2,i) + s45 - - sy=real(cy(i))**2 + aimag(cy(i))**2 - ssz(3,n,i)=sy ! Pol = 90 - szavg(3,i)=szavg(3,i) + sy - - z=cx(i) - cy(i) - s135=0.5*(real(z)**2 + aimag(z)**2) - ssz(4,n,i)=s135 ! Pol = 135 - szavg(4,i)=szavg(4,i) + s135 - - z=cx(i)*conjg(cy(i)) - -! Leif's formula: -! ss5(n,i)=0.5*(sx+sy) + (real(z)**2 + aimag(z)**2 - -! + sx*sy)/(sx+sy) - -! Leif's suggestion: -! ss5(n,i)=max(sx,s45,sy,s135) - -! Linearly polarized component, from the Stokes parameters: - q=sx - sy - u=2.0*real(z) -! v=2.0*aimag(z) - ssz5(n,i)=0.707*sqrt(q*q + u*u) - - enddo -! if(n.eq.ntot) then - if(n.ge.279) then - call move(ssz5,ss5,322*NFFT) - call cs_lock('symspec') - write(utcdata,1002) nutc -1002 format(i4.4) - call cs_unlock - utcdata=utcdata(1:2)//':'//utcdata(3:4) - newspec=1 - call move(ssz,ss,4*322*NFFT) - call move(szavg,savg,4*NFFT) - newdat=1 - ndecoding=1 - go to 999 - endif - kkdone=i1-1 - nhsym=n - call sleep_msec(0) - enddo - -998 kkdone=i1-1 -999 continue - - return -end subroutine symspec diff --git a/symsync65.f b/symsync65.f deleted file mode 100644 index dbf04fe1c..000000000 --- a/symsync65.f +++ /dev/null @@ -1,35 +0,0 @@ - subroutine symsync65(c5,n5,k0,s,flip,pr,kmax,kpk,ccf,smax) - - complex c5(n5) - real s(n5),pr(126),ccf(-128:128) - complex z - - z=0. - do i=1,32 - z=z + c5(i) - enddo - s(1)=real(z)*real(z) + aimag(z)*aimag(z) - smax=s(1) - do i=33,n5 - z=z + c5(i) - c5(i-32) - s(i-31)=real(z)*real(z) + aimag(z)*aimag(z) - smax=max(s(i-31),smax) - enddo - iz=n5-31 - - smax=0. - do k=-kmax,kmax - sum=0. - do i=1,126 - j=32*(i-1)+k+k0 - if(j.ge.1 .and. j.le.iz) sum=sum + flip*pr(i)*s(j) - enddo - ccf(k)=sum - if(sum.gt.smax) then - smax=sum - kpk=k - endif - enddo - - return - end diff --git a/sysqqq.f90 b/sysqqq.f90 deleted file mode 100644 index 35c7e61f3..000000000 --- a/sysqqq.f90 +++ /dev/null @@ -1,13 +0,0 @@ -subroutine sysqqq(cmnd,iret) - -#ifdef CVF - use dfport -#else - integer system -#endif - character*(*) cmnd - - iret=system(cmnd) - - return -end subroutine sysqqq diff --git a/thcvf.f90 b/thcvf.f90 deleted file mode 100644 index 74257c180..000000000 --- a/thcvf.f90 +++ /dev/null @@ -1,68 +0,0 @@ -subroutine cs_init - use dfmt - type (RTL_CRITICAL_SECTION) ncrit1 - character*12 csub0 - integer*8 mtx - common/mtxcom/mtx,ltrace,mtxstate,csub0 - ltrace=0 - mtx=loc(ncrit1) - mtxstate=0 - csub0='**unlocked**' - call InitializeCriticalSection(mtx) - return -end subroutine cs_init - -subroutine cs_destroy - use dfmt - type (RTL_CRITICAL_SECTION) ncrit1 - character*12 csub0 - integer*8 mtx - common/mtxcom/mtx,ltrace,mtxstate,csub0 - call DeleteCriticalSection(mtx) - return -end subroutine cs_destroy - -subroutine th_create(sub) - use dfmt - external sub - ith=CreateThread(0,0,sub,0,0,id) - return -end subroutine th_create - -subroutine th_exit - use dfmt - ncode=0 - call ExitThread(ncode) - return -end subroutine th_exit - -subroutine cs_lock(csub) - use dfmt - character*(*) csub - character*12 csub0 - integer*8 mtx - common/mtxcom/mtx,ltrace,mtxstate,csub0 - n=TryEnterCriticalSection(mtx) - if(n.eq.0) then -! Another thread has already locked the mutex - call EnterCriticalSection(mtx) - iz=index(csub0,' ') - if(ltrace.ge.1) print*,'"',csub,'" requested the mutex when "', & - csub0(:iz-1),'" owned it.' - endif - mtxstate=1 - csub0=csub - if(ltrace.ge.3) print*,'Mutex locked by ',csub - return -end subroutine cs_lock - -subroutine cs_unlock - use dfmt - character*12 csub0 - integer*8 mtx - common/mtxcom/mtx,ltrace,mtxstate,csub0 - mtxstate=0 - if(ltrace.ge.3) print*,'Mutex unlocked' - call LeaveCriticalSection(mtx) - return -end subroutine cs_unlock diff --git a/thnix.f90 b/thnix.f90 deleted file mode 100644 index ff457b852..000000000 --- a/thnix.f90 +++ /dev/null @@ -1,58 +0,0 @@ -subroutine cs_init - character*12 csub0 - integer*8 mtx - common/mtxcom/mtx,ltrace,mtxstate,csub0 - ltrace=0 - mtxstate=0 - csub0='**unlocked**' - call fthread_mutex_init(mtx) - return -end subroutine cs_init - -subroutine cs_destroy - character*12 csub0 - integer*8 mtx - common/mtxcom/mtx,ltrace,mtxstate,csub0 - call fthread_mutex_destroy(mtx) - return -end subroutine cs_destroy - -subroutine th_create(sub) - call fthread_create(sub,id) - return -end subroutine th_create - -subroutine th_exit - call fthread_exit - return -end subroutine th_exit - -subroutine cs_lock(csub) - character*(*) csub - character*12 csub0 - integer fthread_mutex_lock,fthread_mutex_trylock - integer*8 mtx - common/mtxcom/mtx,ltrace,mtxstate,csub0 - n=fthread_mutex_trylock(mtx) - if(n.ne.0) then -! Another thread has already locked the mutex - n=fthread_mutex_lock(mtx) - iz=index(csub0,' ') - if(ltrace.ge.1) print*,'"',csub,'" requested mutex when "', & - csub0(:iz-1),'" owned it.' - endif - mtxstate=1 - csub0=csub - if(ltrace.ge.3) print*,'Mutex locked by ',csub - return -end subroutine cs_lock - -subroutine cs_unlock - character*12 csub0 - integer*8 mtx - common/mtxcom/mtx,ltrace,mtxstate,csub0 - if(ltrace.ge.3) print*,'Mutex unlocked,',ltrace,mtx,mtxstate,csub0 - mtxstate=0 - call fthread_mutex_unlock(mtx) - return -end subroutine cs_unlock diff --git a/unpackcall.f b/unpackcall.f deleted file mode 100644 index d239bc8c7..000000000 --- a/unpackcall.f +++ /dev/null @@ -1,35 +0,0 @@ - subroutine unpackcall(ncall,word) - - character word*12,c*37 - - data c/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ '/ - - n=ncall - word='......' - if(n.ge.262177560) go to 999 !Plain text message ... - i=mod(n,27)+11 - word(6:6)=c(i:i) - n=n/27 - i=mod(n,27)+11 - word(5:5)=c(i:i) - n=n/27 - i=mod(n,27)+11 - word(4:4)=c(i:i) - n=n/27 - i=mod(n,10)+1 - word(3:3)=c(i:i) - n=n/10 - i=mod(n,36)+1 - word(2:2)=c(i:i) - n=n/36 - i=n+1 - word(1:1)=c(i:i) - do i=1,4 - if(word(i:i).ne.' ') go to 10 - enddo - go to 999 - 10 word=word(i:) - - 999 if(word(1:3).eq.'3D0') word='3DA0'//word(4:) - return - end diff --git a/widegraph.cpp b/widegraph.cpp new file mode 100644 index 000000000..7d181066b --- /dev/null +++ b/widegraph.cpp @@ -0,0 +1,318 @@ +#include "widegraph.h" +#include "ui_widegraph.h" + +#define NFFT 32768 + +WideGraph::WideGraph(QWidget *parent) : + QDialog(parent), + ui(new Ui::WideGraph) +{ + ui->setupUi(this); + this->setWindowFlags(Qt::Dialog); + this->installEventFilter(parent); //Installing the filter + ui->widePlot->setCursor(Qt::CrossCursor); + this->setMaximumWidth(2048); + this->setMaximumHeight(880); + ui->widePlot->setMaximumHeight(800); + + connect(ui->widePlot, SIGNAL(freezeDecode1(int)),this, + SLOT(wideFreezeDecode(int))); + + //Restore user's settings + QString inifile(QApplication::applicationDirPath()); + inifile += "/map65.ini"; + QSettings settings(inifile, QSettings::IniFormat); + + settings.beginGroup("WideGraph"); + ui->widePlot->setPlotZero(settings.value("PlotZero", 20).toInt()); + ui->widePlot->setPlotGain(settings.value("PlotGain", 0).toInt()); + ui->zeroSpinBox->setValue(ui->widePlot->getPlotZero()); + ui->gainSpinBox->setValue(ui->widePlot->getPlotGain()); + int n = settings.value("FreqSpan",60).toInt(); + int w = settings.value("PlotWidth",1000).toInt(); + ui->freqSpanSpinBox->setValue(n); + ui->widePlot->setNSpan(n); + int nbpp = n * 32768.0/(w*96.0) + 0.5; + ui->widePlot->setBinsPerPixel(nbpp); + m_waterfallAvg = settings.value("WaterfallAvg",10).toInt(); + ui->waterfallAvgSpinBox->setValue(m_waterfallAvg); + ui->freqOffsetSpinBox->setValue(settings.value("FreqOffset",0).toInt()); + m_bForceCenterFreq=settings.value("ForceCenterFreqBool",false).toBool(); + m_dForceCenterFreq=settings.value("ForceCenterFreqMHz",144.125).toDouble(); + ui->cbFcenter->setChecked(m_bForceCenterFreq); + ui->fCenterLineEdit->setText(QString::number(m_dForceCenterFreq)); + settings.endGroup(); +} + + +WideGraph::~WideGraph() +{ + saveSettings(); + delete ui; +} + +void WideGraph::saveSettings() +{ + //Save user's settings + QString inifile(QApplication::applicationDirPath()); + inifile += "/map65.ini"; + QSettings settings(inifile, QSettings::IniFormat); + + settings.beginGroup("WideGraph"); + settings.setValue("PlotZero",ui->widePlot->m_plotZero); + settings.setValue("PlotGain",ui->widePlot->m_plotGain); + settings.setValue("PlotWidth",ui->widePlot->plotWidth()); + settings.setValue("FreqSpan",ui->freqSpanSpinBox->value()); + settings.setValue("WaterfallAvg",ui->waterfallAvgSpinBox->value()); + settings.setValue("FreqOffset",ui->widePlot->freqOffset()); + settings.setValue("ForceCenterFreqBool",m_bForceCenterFreq); + settings.setValue("ForceCenterFreqMHz",m_dForceCenterFreq); + settings.endGroup(); +} + +void WideGraph::dataSink2(float s[], int nkhz, int ihsym, int ndiskdata, + uchar lstrong[]) +{ + static float splot[NFFT]; + float swide[2048]; + float smax; + double df; + int nbpp = ui->widePlot->binsPerPixel(); + static int n=0; + static int nkhz0=-999; + static int n60z=0; + + df = m_fSample/32768.0; + if(nkhz != nkhz0) { + ui->widePlot->setNkhz(nkhz); //Why do we need both? + ui->widePlot->SetCenterFreq(nkhz); //Why do we need both? + ui->widePlot->setFQSO(nkhz,true); + nkhz0 = nkhz; + } + + //Average spectra over specified number, m_waterfallAvg + if (n==0) { + for (int i=0; i=m_waterfallAvg) { + for (int i=0; iwidePlot->plotWidth(); + qint64 sf = nkhz + ui->widePlot->freqOffset() - 0.5*w*nbpp*df/1000.0; + if(sf != ui->widePlot->startFreq()) ui->widePlot->SetStartFreq(sf); + int i0=16384.0+(ui->widePlot->startFreq()-nkhz+1.27046+0.001*m_fCal) * + 1000.0/df + 0.5; + int i=i0; + for (int j=0; j<2048; j++) { + smax=0; + for (int k=0; ksmax) smax=splot[i]; + } + swide[j]=smax; + if(lstrong[1 + i/32]!=0) swide[j]=-smax; //Tag strong signals + } + +// Time according to this computer + qint64 ms = QDateTime::currentMSecsSinceEpoch() % 86400000; + int n60 = (ms/1000) % 60; + + if((ndiskdata && ihsym <= m_waterfallAvg) || (!ndiskdata && n60widePlot->draw(swide,i0,splot); + } +} + +void WideGraph::on_freqOffsetSpinBox_valueChanged(int f) +{ + ui->widePlot->SetFreqOffset(f); +} + +void WideGraph::on_freqSpanSpinBox_valueChanged(int n) +{ + ui->widePlot->setNSpan(n); + int w = ui->widePlot->plotWidth(); + int nbpp = n * 32768.0/(w*96.0) + 0.5; + if(nbpp < 1) nbpp=1; + if(w > 0) { + ui->widePlot->setBinsPerPixel(nbpp); + } +} + +void WideGraph::on_waterfallAvgSpinBox_valueChanged(int n) +{ + m_waterfallAvg = n; +} + +void WideGraph::on_zeroSpinBox_valueChanged(int value) +{ + ui->widePlot->setPlotZero(value); +} + +void WideGraph::on_gainSpinBox_valueChanged(int value) +{ + ui->widePlot->setPlotGain(value); +} + +void WideGraph::keyPressEvent(QKeyEvent *e) +{ + switch(e->key()) + { + case Qt::Key_F11: + emit f11f12(11); + break; + case Qt::Key_F12: + emit f11f12(12); + break; + default: + e->ignore(); + } +} + +int WideGraph::QSOfreq() +{ + return ui->widePlot->fQSO(); +} + +int WideGraph::nSpan() +{ + return ui->widePlot->m_nSpan; +} + +float WideGraph::fSpan() +{ + return ui->widePlot->m_fSpan; +} + +int WideGraph::nStartFreq() +{ + return ui->widePlot->startFreq(); +} + +void WideGraph::wideFreezeDecode(int n) +{ + emit freezeDecode2(n); +} + +void WideGraph::setTol(int n) +{ + ui->widePlot->m_tol=n; + ui->widePlot->DrawOverlay(); + ui->widePlot->update(); +} + +int WideGraph::Tol() +{ + return ui->widePlot->m_tol; +} + +void WideGraph::setDF(int n) +{ + ui->widePlot->m_DF=n; + ui->widePlot->DrawOverlay(); + ui->widePlot->update(); +} + +void WideGraph::setFcal(int n) +{ + m_fCal=n; + ui->widePlot->setFcal(n); +} + + +int WideGraph::DF() +{ + return ui->widePlot->m_DF; +} + +void WideGraph::on_autoZeroPushButton_clicked() +{ + int nzero=ui->widePlot->autoZero(); + ui->zeroSpinBox->setValue(nzero); +} + +void WideGraph::setPalette(QString palette) +{ + ui->widePlot->setPalette(palette); +} +void WideGraph::setFsample(int n) +{ + m_fSample=n; + ui->widePlot->setFsample(n); +} + +void WideGraph::setMode65(int n) +{ + m_mode65=n; + ui->widePlot->setMode65(n); +} + +void WideGraph::on_cbFcenter_stateChanged(int n) +{ + m_bForceCenterFreq = (n!=0); + if(m_bForceCenterFreq) { + ui->fCenterLineEdit->setEnabled(true); + ui->pbSetRxHardware->setEnabled(true); + } else { + ui->fCenterLineEdit->setDisabled(true); + ui->pbSetRxHardware->setDisabled(true); + } +} + +void WideGraph::on_fCenterLineEdit_editingFinished() +{ + m_dForceCenterFreq=ui->fCenterLineEdit->text().toDouble(); +} + +void WideGraph::on_pbSetRxHardware_clicked() +{ +#ifdef WIN32 + int iret=set570(m_mult570*(1.0+0.000001*m_cal570)*m_dForceCenterFreq); + if(iret != 0) { + QMessageBox mb; + if(iret==-1) mb.setText("Failed to open Si570."); + if(iret==-2) mb.setText("Frequency out of permitted range."); + mb.exec(); + } +#endif +} + +void WideGraph::initIQplus() +{ +#ifdef WIN32 + int iret=set570(288.0); + if(iret != 0) { + QMessageBox mb; + if(iret==-1) mb.setText("Failed to open Si570."); + if(iret==-2) mb.setText("Frequency out of permitted range."); + mb.exec(); + } else { + on_pbSetRxHardware_clicked(); + } +#endif +} + +void WideGraph::on_cbSpec2d_toggled(bool b) +{ + ui->widePlot->set2Dspec(b); +} + +double WideGraph::fGreen() +{ + return ui->widePlot->fGreen(); +} diff --git a/widegraph.h b/widegraph.h new file mode 100644 index 000000000..f78d7b455 --- /dev/null +++ b/widegraph.h @@ -0,0 +1,77 @@ +#ifndef WIDEGRAPH_H +#define WIDEGRAPH_H +#include + +namespace Ui { + class WideGraph; +} + +class WideGraph : public QDialog +{ + Q_OBJECT + +public: + explicit WideGraph(QWidget *parent = 0); + ~WideGraph(); + + bool m_bForceCenterFreq; + qint32 m_mult570; + double m_dForceCenterFreq; + double m_cal570; + + void dataSink2(float s[], int nkhz, int ihsym, int ndiskdata, + uchar lstrong[]); + int QSOfreq(); + int nSpan(); + int nStartFreq(); + float fSpan(); + void saveSettings(); + void setDF(int n); + int DF(); + int Tol(); + void setTol(int n); + void setFcal(int n); + void setPalette(QString palette); + void setFsample(int n); + void setMode65(int n); + double fGreen(); + + qint32 m_qsoFreq; + +signals: + void freezeDecode2(int n); + void f11f12(int n); + +public slots: + void wideFreezeDecode(int n); + void initIQplus(); + +protected: + virtual void keyPressEvent( QKeyEvent *e ); + +private slots: + void on_waterfallAvgSpinBox_valueChanged(int arg1); + void on_freqSpanSpinBox_valueChanged(int arg1); + void on_freqOffsetSpinBox_valueChanged(int arg1); + void on_zeroSpinBox_valueChanged(int arg1); + void on_gainSpinBox_valueChanged(int arg1); + void on_autoZeroPushButton_clicked(); + void on_cbFcenter_stateChanged(int arg1); + void on_fCenterLineEdit_editingFinished(); + void on_pbSetRxHardware_clicked(); + void on_cbSpec2d_toggled(bool checked); + +private: + qint32 m_waterfallAvg; + qint32 m_fCal; + qint32 m_fSample; + qint32 m_mode65; + + Ui::WideGraph *ui; +}; + +#ifdef WIN32 +extern int set570(double freq_MHz); +#endif + +#endif // WIDEGRAPH_H diff --git a/widegraph.ui b/widegraph.ui new file mode 100644 index 000000000..a7b46dda8 --- /dev/null +++ b/widegraph.ui @@ -0,0 +1,421 @@ + + + WideGraph + + + + 0 + 0 + 1178 + 326 + + + + Dialog + + + + + + + + true + + + + 0 + 0 + + + + + 400 + 200 + + + + QFrame::StyledPanel + + + QFrame::Sunken + + + 1 + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + + 60 + 0 + + + + + 60 + 16777215 + + + + kHz + + + -24 + + + 24 + + + 1 + + + 0 + + + + + + + + 50 + 0 + + + + Freq Offset + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + + 60 + 0 + + + + + 60 + 16777215 + + + + kHz + + + 5 + + + 90 + + + 5 + + + 60 + + + + + + + Freq Span + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 40 + 16777215 + + + + 1 + + + 20 + + + + + + + N Avg + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + + 40 + 16777215 + + + + -20 + + + 20 + + + + + + + Gain + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + + 40 + 16777215 + + + + -100 + + + 100 + + + + + + + Zero + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + Auto Zero + + + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 20 + 20 + + + + + + + + 2D Spectrum + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + Force Center Freq (MHz) + + + + + + + false + + + + 0 + 0 + + + + + 65 + 16777215 + + + + 1296.065 + + + + + + + false + + + Set Rx Freq + + + + + + + + + + + + CPlotter + QFrame +
      plotter.h
      + 1 +
      +
      + + +
      diff --git a/wsjt b/wsjt deleted file mode 100755 index b523a4121..000000000 --- a/wsjt +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -if [ -e /usr/local/bin/python ] ; then - LOCALBASE=/usr/local/ -else - LOCALBASE=/usr/ -fi -if [ ! -e ~/.wsjt ] ; then - mkdir ~/.wsjt - mkdir ~/.wsjt/RxWav -fi -if [ ! -e ~/.wsjt/CALL3.TXT ] ; then - cp -f ${LOCALBASE}/share/wsjt/CALL3.TXT ~/.wsjt -fi -cd ~/.wsjt -python ${LOCALBASE}/bin/wsjt.py diff --git a/wsjtgen.f90 b/wsjtgen.f90 deleted file mode 100644 index d831ef176..000000000 --- a/wsjtgen.f90 +++ /dev/null @@ -1,131 +0,0 @@ -subroutine wsjtgen - -! Compute the waveform to be transmitted. - -! Input: txmsg message to be transmitted, up to 28 characters -! samfacout fsample_out/11025.d0 - -! Output: iwave waveform data, i*2 format -! nwave number of samples -! sendingsh 0=normal; 1=shorthand (FSK441) or plain text (JT65) - - parameter (NMSGMAX=28) !Max characters per message - parameter (NSPD=25) !Samples per dit - parameter (NDPC=3) !Dits per character - parameter (NWMAX=661500) !Max length of waveform = 60*11025 - parameter (NTONES=4) !Number of FSK tones - character msg*28,msgsent*22,idmsg*22 - real*8 freq,dpha,twopi - character testfile*27 - logical lcwid - integer*2 icwid(110250),jwave(NWMAX) - - integer*1 hdr(44) - integer*2 nfmt2,nchan2,nbitsam2,nbytesam2 - character*4 ariff,awave,afmt,adata - common/hdr/ariff,lenfile,awave,afmt,lenfmt,nfmt2,nchan2, & - nsamrate,nbytesec,nbytesam2,nbitsam2,adata,ndata,jwave - equivalence (ariff,hdr) - - data twopi/6.28318530718d0/ - include 'gcom1.f90' - include 'gcom2.f90' - - fsample_out=11025.d0*samfacout - lcwid=.false. - if(idinterval.gt.0) then - n=(mod(int(tsec/60.d0),idinterval)) - if(n.eq.(1-txfirst)) lcwid=.true. - if(idinterval.eq.1) lcwid=.true. - endif - - msg=txmsg - call msgtrim(msg,nmsg) - txmsg=msg - ntxnow=ntxreq - nmsg0=nmsg - - if(msg(1:1).eq.'@') then - if(msg(2:2).eq.'/' .or. ichar(msg(2:2)).eq.92) then - txmsg=msg - testfile=msg(2:) -#ifdef CVF - open(18,file=testfile,form='binary',status='old',err=12) -#else - open(18,file=testfile,access='stream',status='old',err=12) -#endif - go to 14 -12 print*,'Cannot open test file ',msg(2:) - go to 999 -14 call cs_lock('wsjtgena') - read(18) hdr - if(ndata.gt.NTxMax) ndata=NTxMax - call rfile(18,iwave,ndata,ierr) - close(18) - call cs_unlock - if(ierr.ne.0) print*,'Error reading test file ',msg(2:) - nwave=ndata/2 - do i=nwave,NTXMAX - iwave(i)=0 - enddo - sending=txmsg - sendingsh=2 - go to 999 - endif - -! Transmit a fixed tone at specified frequency - freq=1000.0 - if(msg(2:2).eq.'A' .or. msg(2:2).eq.'a') freq=882 - if(msg(2:2).eq.'B' .or. msg(2:2).eq.'b') freq=1323 - if(msg(2:2).eq.'C' .or. msg(2:2).eq.'c') freq=1764 - if(msg(2:2).eq.'D' .or. msg(2:2).eq.'d') freq=2205 - if(freq.eq.1000.0) then - call cs_lock('wsjtgenb') - read(msg(2:),*,err=1) freq - goto 2 -1 txmsg='@1000' - nmsg=5 - nmsg0=5 -2 call cs_unlock - endif - nwave=60*fsample_out - dpha=twopi*freq/fsample_out - do i=1,nwave - iwave(i)=32767.0*sin(i*dpha) - enddo - goto 900 - endif - -! We're in JT65 mode. - if(mode(5:5).eq.'A') mode65=1 - if(mode(5:5).eq.'B') mode65=2 - if(mode(5:5).eq.'C') mode65=4 - call cs_lock('wsjtgenc') - call gen65(msg,mode65,samfacout,iwave,nwave,sendingsh,msgsent) - call cs_unlock - - if(lcwid) then -! Generate and insert the CW ID. - wpm=25. - freqcw=800. - idmsg=MyCall//' ' - call gencwid(idmsg,wpm,freqcw,samfacout,icwid,ncwid) - k=nwave - do i=1,ncwid - k=k+1 - iwave(k)=icwid(i) - enddo - do i=1,2205 !Add 0.2 s of silence - k=k+1 - iwave(k)=0 - enddo - nwave=k - endif - -900 sending=txmsg - if(sendingsh.ne.1) sending=msgsent - nmsg=nmsg0 - -999 return -end subroutine wsjtgen -

    > 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