diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/app/ecgeval.c wfdb-10.4.5/app/ecgeval.c --- wfdb-10.4.4/app/ecgeval.c 2002-11-22 14:46:50.000000000 -0500 +++ wfdb-10.4.5/app/ecgeval.c 2006-11-30 10:09:01.000000000 -0500 @@ -1,9 +1,9 @@ /* file: ecgeval.c G. Moody 22 March 1992 - Last revised: 22 November 2002 + Last revised: 30 November 2006 ------------------------------------------------------------------------------- ecgeval: Generate and run a script of commands to compare sets of annotations -Copyright (C) 2002 George B. Moody +Copyright (C) 1992-2006 George B. Moody 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 @@ -145,13 +145,14 @@ (void)fprintf(stderr, "\t\t_________________________________________\n\n"); (void)fprintf(stderr, +"The most recent version of this program can always be obtained as part of\n"); + (void)fprintf(stderr, +"the WFDB Software Package, from PhysioNet (http://physionet.org/).\n"); + (void)fprintf(stderr, "If you have questions about this software, please contact the author:\n"); (void)fprintf(stderr, "\tGeorge B. Moody\n\tMIT Room E25-505A\n\tCambridge, MA 02139 USA\n"); - (void)fprintf(stderr, "\te-mail: george@mit.edu (Internet)\n"); - (void)fprintf(stderr, "\tphone: +1 617 253-7424\t"); - (void)fprintf(stderr, "\tfax: +1 617 253-2514\n\n"); - + (void)fprintf(stderr, "\temail: george@mit.edu\n\n"); if (getdblists() < 0) exit(1); (void)fprintf(stderr, @@ -165,9 +166,9 @@ (void)fprintf(stderr, "performance results of cardiac rhythm and ST segment measurement\n"); (void)fprintf(stderr, -"algorithms. For some questions, a default answer is provided in brackets\n"); +"algorithms. For some questions, a default answer is provided in brackets.\n"); (void)fprintf(stderr, - "press RETURN (ENTER) to accept the default, or type the desired answer\n"); + "Press RETURN (ENTER) to accept the default, or type the desired answer\n"); (void)fprintf(stderr, "followed by RETURN. After you have answered all of the questions, you\n"); (void)fprintf(stderr, diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/app/pschart.c wfdb-10.4.5/app/pschart.c --- wfdb-10.4.4/app/pschart.c 2005-08-11 17:56:18.000000000 -0400 +++ wfdb-10.4.5/app/pschart.c 2006-06-02 12:30:49.000000000 -0400 @@ -1,9 +1,9 @@ /* file: pschart.c G. Moody 15 March 1988 - Last revised: 11 August 2005 + Last revised: 2 June 2006 ------------------------------------------------------------------------------- pschart: Produce annotated `chart recordings' on a PostScript device -Copyright (C) 1988-2005 George B. Moody +Copyright (C) 1988-2006 George B. Moody 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 @@ -744,7 +744,7 @@ range variables. */ for (i = 0; i < nosig; i++) { accept[i] = 0; - vmax[i] = -32768; vmin[i] = 32767; vsum[i] = 0L; + vmax[i] = vmin[i] = WFDB_INVALID_SAMPLE; vsum[i] = 0L; if (nsamp > buflen[i]) { if ((vbuf[i] = realloc(vbuf[i], nsamp * sizeof(int))) == NULL) { buflen[i] = 0; @@ -759,14 +759,16 @@ if (nosig > 0) { /* Fill the buffers. */ if (isigsettime(t0) < 0) return (0); - for (j = 0; j < jmax && getvec(v) == nisig; j++) { + for (j = 0; j < jmax && getvec(v) >= 0; j++) { for (i = 0; i < nosig; i++) { int vtmp = v[siglist[i]]; - vbuf[i][j] = vtmp; + vbuf[i][j] = vmax[i] = vmin[i] = vtmp; if (vtmp != WFDB_INVALID_SAMPLE) { - if (vtmp > vmax[i]) vmax[i] = vtmp; - else if (vtmp < vmin[i]) vmin[i] = vtmp; + if (vtmp > vmax[i] || vmax[i] == WFDB_INVALID_SAMPLE) + vmax[i] = vtmp; + else if (vtmp < vmin[i] || vmin[i] == WFDB_INVALID_SAMPLE) + vmin[i] = vtmp; vsum[i] += vtmp; accept[i]++; } @@ -783,8 +785,10 @@ if (accept[i]) { vs = vsum[i]/accept[i]; vb = (vmax[i] + vmin[i])/2; - if (vb > vs) w = (vb - vs)/(vmax[i] - vs); - else if (vb < vs) w = (vs - vb)/(vs - vmin[i]); + if (vb > vs && vmax[i] != vs) + w = (vb - vs)/(vmax[i] - vs); + else if (vb < vs && vmin[i] != vs) + w = (vs - vb)/(vs - vmin[i]); else w = 0.0; vbase[i] = vs + ((double)vb-vs)*w; } diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/app/psfd.c wfdb-10.4.5/app/psfd.c --- wfdb-10.4.4/app/psfd.c 2005-08-11 17:56:38.000000000 -0400 +++ wfdb-10.4.5/app/psfd.c 2006-06-02 12:33:32.000000000 -0400 @@ -1,9 +1,9 @@ /* file: psfd.c G. Moody 9 August 1988 - Last revised: 11 August 2005 + Last revised: 2 June 2006 ------------------------------------------------------------------------------- psfd: Produces annotated full-disclosure ECG plots on a PostScript device -Copyright (C) 1988-2005 George B. Moody +Copyright (C) 1988-2006 George B. Moody 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 @@ -773,7 +773,7 @@ range and filter variables. */ for (i = 0; i < nosig; i++) { accept[i] = 0; - vmax[i] = -32768; vmin[i] = 32767; vs[i] = 0L; vsum[i] = 0L; + vmax[i] = vmin[i] = WFDB_INVALID_SAMPLE; vs[i] = 0L; vsum[i] = 0L; if (nosamp > buflen[i]) { if ((vbuf[i] = realloc(vbuf[i], nosamp * sizeof(int))) == NULL) { buflen[i] = 0; @@ -789,7 +789,7 @@ /* Fill the buffers. */ if (isigsettime(t0) < 0) return (0); - for (j = 0L, k = 1, tt = 0; j < jmax && getvec(v) == nisig; j++) { + for (j = 0L, k = 1, tt = 0; j < jmax && getvec(v) >= 0; j++) { for (i = 0; i < nosig; i++) { int vtmp = v[siglist[i]]; @@ -802,8 +802,10 @@ /* average the valid samples in each group */ if (vn[i] > 0) { vsum[i] += vbuf[i][tt] = vtmp = vs[i]/vn[i]; - if (vtmp > vmax[i]) vmax[i] = vtmp; - else if (vtmp < vmin[i]) vmin[i] = vtmp; + if (vtmp > vmax[i] || vmax[i] == WFDB_INVALID_SAMPLE) + vmax[i] = vtmp; + else if (vtmp vsm) w = (vb - vsm)/(vmax[i] - vsm); - else if (vb < vsm) w = (vsm - vb)/(vsm - vmin[i]); + if (vb > vsm && vmax[i] != vsm) + w = (vb - vsm)/(vmax[i] - vsm); + else if (vb < vsm && vmin[i] != vsm) + w = (vsm - vb)/(vsm - vmin[i]); else w = 0.0; vbase[i] = vsm + ((double)vb-vsm)*w; } diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/app/sqrs125.c wfdb-10.4.5/app/sqrs125.c --- wfdb-10.4.4/app/sqrs125.c 2006-02-25 22:02:19.000000000 -0500 +++ wfdb-10.4.5/app/sqrs125.c 2008-01-14 23:13:29.000000000 -0500 @@ -1,9 +1,9 @@ /* file: sqrs125.c G. Moody 27 October 1990 - Last revised: 25 February 2006 + Last revised: 14 January 2008 ------------------------------------------------------------------------------- sqrs125: Single-channel QRS detector for data sampled at 100 - 150 Hz -Copyright (C) 1990-2006 George B. Moody +Copyright (C) 1990-2008 George B. Moody 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 @@ -175,10 +175,19 @@ (void)fprintf(stderr, "%s: insufficient memory\n", pname); exit(2); } - a.name = "qrs"; a.stat = WFDB_WRITE; - if ((nsig = wfdbinit(record, &a, 1, s, nsig)) < 1) exit(2); + if ((nsig = isigopen(record, s, nsig)) < 1) exit(2); + if (sampfreq((char *)NULL) < 50.) { + (void)fprintf(stderr, "%s: sampling frequency (%g Hz) is too low%s", + pname, sampfreq((char *)NULL), + gvmode & WFDB_HIGHRES ? "\n" : ", try -H option\n"); + exit(3); + } if (sampfreq((char *)NULL) < 120. || sampfreq((char *)NULL) > 130.) setifreq(125.); + + a.name = "qrs"; a.stat = WFDB_WRITE; + if (annopen(record, &a, 1) < 0) exit(2); + if (from > 0L) { if ((from = strtim(argv[from])) < 0L) from = -from; @@ -252,12 +261,12 @@ (void)fprintf(stderr, "."); (void)fflush(stderr); if (++minutes >= 60) { - (void)fprintf(stderr, "\n"); + (void)fprintf(stderr, " %s\n", timstr(now)); minutes = 0; } } } while (getvec(v) > 0 && (to == 0L || now <= to)); - + if (minutes) (void)fprintf(stderr, " %s\n", timstr(now)); wfdbquit(); exit(0); /*NOTREACHED*/ } diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/app/sqrs.c wfdb-10.4.5/app/sqrs.c --- wfdb-10.4.4/app/sqrs.c 2006-02-25 22:01:16.000000000 -0500 +++ wfdb-10.4.5/app/sqrs.c 2008-01-14 23:01:12.000000000 -0500 @@ -1,9 +1,9 @@ /* file: sqrs.c G. Moody 27 October 1990 - Last revised: 25 February 2006 + Last revised: 14 January 2008 ------------------------------------------------------------------------------- sqrs: Single-channel QRS detector -Copyright (C) 1990-2006 George B. Moody +Copyright (C) 1990-2008 George B. Moody 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 @@ -167,13 +167,22 @@ (void)fprintf(stderr, "%s: insufficient memory\n", pname); exit(2); } - a.name = "qrs"; a.stat = WFDB_WRITE; - if ((nsig = wfdbinit(record, &a, 1, s, nsig)) < 1) exit(2); - if (sampfreq((char *)NULL) < 240. || sampfreq((char *)NULL) > 260.) + if ((nsig = isigopen(record, s, nsig)) < 1) exit(2); + if (sampfreq((char *)NULL) < 50.) { + (void)fprintf(stderr, "%s: sampling frequency (%g Hz) is too low%s", + pname, sampfreq((char *)NULL), + gvmode & WFDB_HIGHRES ? "\n" : ", try -H option\n"); + exit(3); + } + if (sampfreq((char *)NULL) < 240. || sampfreq((char *)NULL) > 260.) setifreq(250.); + + a.name = "qrs"; a.stat = WFDB_WRITE; + if (annopen(record, &a, 1) < 0) exit(2); + if (from > 0L) { if ((from = strtim(argv[from])) < 0L) - from = -from; + from = -from; if (isigsettime(from) < 0) exit(2); } @@ -246,12 +255,12 @@ (void)fprintf(stderr, "."); (void)fflush(stderr); if (++minutes >= 60) { - (void)fprintf(stderr, "\n"); + (void)fprintf(stderr, " %s\n", timstr(now)); minutes = 0; } } } while (getvec(v) > 0 && (to == 0L || now <= to)); - + if (minutes) (void)fprintf(stderr, " %s\n", timstr(now)); wfdbquit(); exit(0); /*NOTREACHED*/ } diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/app/wabp.c wfdb-10.4.5/app/wabp.c --- wfdb-10.4.4/app/wabp.c 2006-02-25 22:18:08.000000000 -0500 +++ wfdb-10.4.5/app/wabp.c 2007-09-07 10:57:42.000000000 -0400 @@ -107,7 +107,7 @@ return (lbuf[t&(BUFLN-1)]); } -main(int argc, char **argv) +int main(int argc, char **argv) { char *record = NULL; /* input record name */ float sps; /* sampling frequency, in Hz (SR) */ @@ -124,9 +124,8 @@ int Ta, T0; /* high and low detection thresholds */ WFDB_Anninfo a; WFDB_Annotation annot; - WFDB_Sample *v; WFDB_Siginfo *s; - WFDB_Time from = 0L, next_minute, now, spm, t, tj, tpq, to = 0L, tt, t1; + WFDB_Time from = 0L, next_minute, spm, t, tpq, to = 0L, tt, t1; char *p, *prog_name(); static int gvmode = 0; void help(); diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/app/wfdbdesc.c wfdb-10.4.5/app/wfdbdesc.c --- wfdb-10.4.4/app/wfdbdesc.c 2006-03-31 13:17:56.000000000 -0500 +++ wfdb-10.4.5/app/wfdbdesc.c 2008-01-09 00:14:21.000000000 -0500 @@ -1,9 +1,9 @@ /* file: wfdbdesc.c G. Moody June 1989 - Last revised: 31 March 2006 + Last revised: 6 January 2008 ------------------------------------------------------------------------------- wfdbdesc: Describe signal specifications -Copyright (C) 1989-2006 George B. Moody +Copyright (C) 1989-2008 George B. Moody 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 @@ -64,6 +64,7 @@ else if (nsig > 0) nsig = isigopen(argv[1], s, -nsig); (void)printf("Record %s", argv[1]); + setgvmode(WFDB_LOWRES); t = strtim("e"); if (nsig > 0 && s[0].nsamp != t) { msrec = 1; @@ -91,7 +92,7 @@ else if (s[0].fmt && (ifile = fopen(s[0].fname, "rb")) && (fseek(ifile, 0L, 2) == 0)) { int framesize = 0; - long nbytes = ftell(ifile); + long nbytes = ftell(ifile) - wfdbgetstart(0); fclose(ifile); for (i = 0; i < nsig && s[i].group == 0; i++) diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/app/wqrs.c wfdb-10.4.5/app/wqrs.c --- wfdb-10.4.4/app/wqrs.c 2006-02-25 22:03:25.000000000 -0500 +++ wfdb-10.4.5/app/wqrs.c 2008-01-14 18:51:51.000000000 -0500 @@ -1,8 +1,8 @@ /* file: wqrs.c Wei Zong 23 October 1998 - Last revised: 25 February 2006 (by G. Moody) + Last revised: 14 January 2008 (by G. Moody) ----------------------------------------------------------------------------- wqrs: Single-lead QRS detector based on length transform -Copyright (C) 1998-2006 Wei Zong +Copyright (C) 1998-2008 Wei Zong 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 @@ -158,7 +158,7 @@ the threshold is automatically reduced to a minimum value; the threshold is restored upon a detection */ - double Ta, T0; /* high and low detection thresholds */ + double Ta, T0; /* high and low detection thresholds */ WFDB_Anninfo a; WFDB_Annotation annot; WFDB_Gain gain; @@ -271,6 +271,12 @@ if (PWFreq == 60.0) setifreq(sps = 120.); else setifreq(sps = 150.); } + if (sps < PWFreq) { + (void)fprintf(stderr, "%s: sampling frequency (%g Hz) is too low%s", + pname, sps, + (gvmode & WFDB_HIGHRES) ? "\n" : ", try -H option\n"); + exit(3); + } if (from > 0L) { if ((from = strtim(argv[from])) < 0L) from = -from; @@ -290,13 +296,13 @@ lfsc = 1.25*gain*gain/sps; /* length function scale constant */ spm = 60 * sps; next_minute = from + spm; - LPn = sps/PWFreq; /* The LP filter will have a notch at the + LPn = sps/PWFreq; /* The LP filter will have a notch at the power line (mains) frequency */ if (LPn > 8) LPn = 8; /* avoid filtering too agressively */ LP2n = 2 * LPn; - EyeClosing = sps * EYE_CLS; /* set eye-closing period */ - ExpectPeriod = sps * NDP; /* maximum expected RR interval */ - LTwindow = sps * MaxQRSw; /* length transform window size */ + EyeClosing = sps * EYE_CLS; /* set eye-closing period */ + ExpectPeriod = sps * NDP; /* maximum expected RR interval */ + LTwindow = sps * MaxQRSw; /* length transform window size */ (void)sample(sig, 0L); if (dflag) { @@ -417,7 +423,7 @@ was detected recently. */ if (++timer > ExpectPeriod && Ta > Tm) { Ta--; - T0 = Ta / 3; + T1 = Ta / 3; } } @@ -427,11 +433,12 @@ (void)fprintf(stderr, "."); (void)fflush(stderr); if (++minutes >= 60) { - (void)fprintf(stderr, "\n"); + (void)fprintf(stderr, " %s\n", timstr(t)); minutes = 0; } } } + if (minutes) (void)fprintf(stderr, " %s\n", timstr(t)); (void)free(lbuf); (void)free(ebuf); diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/checkpkg/appcheck wfdb-10.4.5/checkpkg/appcheck --- wfdb-10.4.4/checkpkg/appcheck 2005-08-04 20:59:09.000000000 -0400 +++ wfdb-10.4.5/checkpkg/appcheck 2007-12-27 12:15:09.000000000 -0500 @@ -1,9 +1,10 @@ #!/bin/sh # file: appcheck G. Moody 7 September 2001 -# Last revised: 4 August 2005 +# Last revised: 27 December 2007 # -# This script checks the functionality of the WFDB applications in the 'app' -# directory. +# This script checks the basic functionality of most of the WFDB applications +# in the 'app' directory. These programs are not (yet) tested by this script: +# calsig, epicmp, mxm, nst, plotstm, pscgen, skewedit, sqrs125 # # Suggestions for additional checks are welcome; please send them to the # author (george@mit.edu). @@ -491,22 +492,7 @@ fi rm -f grep.out -cat <appcheck.out diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/checkpkg/expected/100s.qrs wfdb-10.4.5/checkpkg/expected/100s.qrs --- wfdb-10.4.4/checkpkg/expected/100s.qrs 2002-05-28 11:25:50.000000000 -0400 +++ wfdb-10.4.5/checkpkg/expected/100s.qrs 2008-01-14 17:40:48.000000000 -0500 @@ -1 +1 @@ -E$&%ëg0$/3(*)'9)#'*0! 5/* ,(0<*"$-,)$#0,(%31(%% \ No newline at end of file +Xü## time resolution: 250ìÿÿÿÿ0ËÌÅÆÅÌ£ùÓËÆÀÒÕÎÏÎÇÆÇÍÙÎÄÅÃÅÊÍÏÓÉÂÈÅÖÓÏÈÐÇÄÎÓÛÏÂÉËÇÑÐÎËÄÄÊÓÐÎËÂÇÃÇÕÔÎÅÄÄÌË \ No newline at end of file diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/checkpkg/expected/ecgeval.out wfdb-10.4.5/checkpkg/expected/ecgeval.out --- wfdb-10.4.4/checkpkg/expected/ecgeval.out 2002-11-22 22:00:14.000000000 -0500 +++ wfdb-10.4.5/checkpkg/expected/ecgeval.out 2007-03-29 14:23:47.000000000 -0400 @@ -2,20 +2,21 @@ Automated ECG Analyzer Evaluation Program _________________________________________ +The most recent version of this program can always be obtained as part of +the WFDB Software Package, from PhysioNet (http://physionet.org/). If you have questions about this software, please contact the author: George B. Moody MIT Room E25-505A Cambridge, MA 02139 USA - e-mail: george@mit.edu (Internet) - phone: +1 617 253-7424 fax: +1 617 253-2514 + email: george@mit.edu This program constructs a script (batch) file which evaluates a set of test annotation files by comparing them with reference annotation files in accordance with American National Standards ANSI/AAMI EC38:1998 and ANSI/AAMI EC57:1998 for ambulatory ECGs and for testing and reporting performance results of cardiac rhythm and ST segment measurement -algorithms. For some questions, a default answer is provided in brackets -press RETURN (ENTER) to accept the default, or type the desired answer +algorithms. For some questions, a default answer is provided in brackets. +Press RETURN (ENTER) to accept the default, or type the desired answer followed by RETURN. After you have answered all of the questions, you are given a chance to change any of your answers before beginning the actual evaluation. At that time, you may exit from this program and diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/checkpkg/expected/lcheck.log-NETFILES wfdb-10.4.5/checkpkg/expected/lcheck.log-NETFILES --- wfdb-10.4.4/checkpkg/expected/lcheck.log-NETFILES 2005-07-01 20:56:04.000000000 -0400 +++ wfdb-10.4.5/checkpkg/expected/lcheck.log-NETFILES 2008-01-04 11:30:38.000000000 -0500 @@ -10,7 +10,7 @@ [OK]: WFDB_DEFFREQ = 250 [OK]: WFDB_DEFGAIN = 200 [OK]: WFDB_DEFRES = 12 -[OK]: Default WFDB path = . /usr/database http://www.physionet.org/physiobank/database +[OK]: Default WFDB path = . /usr/database http://physionet.org/physiobank/database [OK]: WFDB path modified successfully [OK]: WFDB calibration list opened successfully [OK]: getcal was successful diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/checkpkg/expected/lcheck.log-no-NETFILES wfdb-10.4.5/checkpkg/expected/lcheck.log-no-NETFILES --- wfdb-10.4.4/checkpkg/expected/lcheck.log-no-NETFILES 2005-07-01 20:57:40.000000000 -0400 +++ wfdb-10.4.5/checkpkg/expected/lcheck.log-no-NETFILES 2008-01-04 11:30:40.000000000 -0500 @@ -10,7 +10,7 @@ [OK]: WFDB_DEFFREQ = 250 [OK]: WFDB_DEFGAIN = 200 [OK]: WFDB_DEFRES = 12 -[OK]: Default WFDB path = . /usr/database http://www.physionet.org/physiobank/database +[OK]: Default WFDB path = . /usr/database http://physionet.org/physiobank/database [OK]: WFDB path modified successfully [OK]: WFDB calibration list opened successfully [OK]: getcal was successful diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/checkpkg/expected/pschart.ps wfdb-10.4.5/checkpkg/expected/pschart.ps --- wfdb-10.4.4/checkpkg/expected/pschart.ps 2005-08-11 18:07:50.000000000 -0400 +++ wfdb-10.4.5/checkpkg/expected/pschart.ps 2007-09-17 13:11:28.000000000 -0400 @@ -92,7 +92,7 @@ (MLII)b 1612 2782 m (MLII)t -862 2790 m +862 2793 m (~O~O}N~O}O~Q~N}O~O}O~O~O}O~N}O~O~P}O~O}O~N}O~O~P}O~O}N~O~P}O~P}N~O~O}O~O}O~O~O}O~N}O~O}N~O~N}O~P}O~N~O}M~P}P~P~N}N~P}O~P}O~O~N}O~P}O~Q~P}N~P}P~O~P}O~P}O~O~P}O~O}P~N}P~O~O}O~O}O~O~O}P~O}N~O~O}P~O}O~N}N~O~O}P~O}N~N~P}O~P}N~O~O}O~O}O~O~O}N~P}O~O}O~O~O}O) z (~O}O~O~N}O~O}O~O~P}N~N}O~P}O~P~M}O~P}P~O~O}N~N}P~P~O}O~N}N~O~O}P~O}O~N}P~O~P}N~O}O~O~P}O~O}N~O~O}P~O}O~O~O}O~P}P~O}O~O~P}P~O}O~O~O}P~O}P~O~N}O~O}O~O}O~O~N}O~O}P~O~N}N~P}P~Q~N}N~M}N~N~O}N~N}O~N}P~N~P}O~O}O~O~P}O~N}O~N~P}O~N}O~N}O~P~P}O~N}N~P~N}O~M}M~M) z (~N}N~N}N~S~W}X~Y}^~^}]~W~R}I~=}7~:~D}M~Q}Q~Q~N}O~N}Q~O}N~O~N}O~P}O~O~O}N~P}O~O~O}N~P}O~P~O}O~O}N~O}P~O~O}O~O}O~O~O}O~N}O~P~O}O~O}O~N}O~P~O}O~O}N~O~P}O~O}O~N~O}P~O}O~N~O}O~O}P~O}O~O~O}O~O}O~O~N}O~P}O~N~O}N~O}P~O~O}N~O}P~N}O~P~N}O~O}P~P~O}P~O}P~P~P}O~O) z diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/checkpkg/Makefile.tpl wfdb-10.4.5/checkpkg/Makefile.tpl --- wfdb-10.4.4/checkpkg/Makefile.tpl 2006-03-02 10:12:13.000000000 -0500 +++ wfdb-10.4.5/checkpkg/Makefile.tpl 2007-12-27 12:09:46.000000000 -0500 @@ -1,13 +1,14 @@ all: @rm -f lcheck @make lcheck - -@./libcheck $(DBDIR) $(LIBDIR) - @../conf/prompt "Press to test applications:"; read A + -@./libcheck $(DBDIR) $(LIBDIR) >libcheck.out @./appcheck $(INCDIR) $(BINDIR) $(LIBDIR) + @echo + @cat libcheck.out appcheck.out lcheck: lcheck.c @echo Compiling WFDB library test application ... @$(CC) $(CFLAGS) lcheck.c -o $@ $(LDFLAGS) && echo " Succeeded" clean: - rm -f *~ lcheck + rm -f *~ lcheck libcheck.out appcheck.out diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/conf/version.def wfdb-10.4.5/conf/version.def --- wfdb-10.4.4/conf/version.def 2006-05-11 12:35:56.000000000 -0400 +++ wfdb-10.4.5/conf/version.def 2007-03-23 11:57:44.000000000 -0400 @@ -1,10 +1,10 @@ # file: version.def G. Moody 24 May 2000 -# Last revised: 11 May 2006 +# Last revised: 23 March 2007 # Each release of the WFDB Software Package is identified by a three-part # version number, defined here: MAJOR = 10 MINOR = 4 -RELEASE = 4 +RELEASE = 5 VERSION = $(MAJOR).$(MINOR).$(RELEASE) # RPMRELEASE can be incremented if changes are made between official diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/configure wfdb-10.4.5/configure --- wfdb-10.4.4/configure 2006-05-10 16:33:39.000000000 -0400 +++ wfdb-10.4.5/configure 2007-03-26 14:59:41.000000000 -0400 @@ -204,14 +204,14 @@ then WCC="no gcc" fi -if ( echo $WCC | grep "no \|not " >wcc.t1 ) +if ( echo $WCC | egrep "no |not " >wcc.t1 ) then WCC=`which cc 2>&1` if [ "x$WCC" = "x" ] then WCC="no cc" fi - if ( echo $WCC | grep "no \|not " >wcc.t2 ) + if ( echo $WCC | egrep "no |not " >wcc.t2 ) then echo "not found" echo @@ -322,7 +322,7 @@ then WHICH="no curl-config" fi - if ( echo $WHICH | grep "no \|not " >which.t1 ) + if ( echo $WHICH | egrep "no |not " >which.t1 ) then echo "not found" ./prompt "Looking for libwww ..." @@ -331,7 +331,7 @@ then WHICH="no libwww-config" fi - if ( echo $WHICH | grep "no \|not " >which.t2 ) + if ( echo $WHICH | egrep "no |not " >which.t2 ) then echo "not found" echo "The WFDB software will be compiled without NETFILES" @@ -440,7 +440,7 @@ WAVE=1; sed "s+/usr/openwin+/opt/openwin+" tmp.$$ mv tmp.$$ wave/Makefile - elif ( echo $TEXTEDIT | grep "no \|not " >textedit.t1 ) + elif ( echo $TEXTEDIT | egrep "no |not " >textedit.t1 ) then WAVE=0; else diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/convert/ad2m.c wfdb-10.4.5/convert/ad2m.c --- wfdb-10.4.4/convert/ad2m.c 2006-03-28 13:44:37.000000000 -0500 +++ wfdb-10.4.5/convert/ad2m.c 2007-12-20 09:51:20.000000000 -0500 @@ -1,9 +1,9 @@ /* file: ad2m.c G. Moody 26 August 1983 - Last revised: 28 March 2006 + Last revised: 20 December 2007 ------------------------------------------------------------------------------- ad2m: Convert an AHA format signal file to MIT format -Copyright (C) 1983-2006 George B. Moody +Copyright (C) 1983-2007 George B. Moody 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 @@ -43,8 +43,6 @@ #include #define EODF 0100000 /* AHA data file end-of-data marker */ -#define NSAMPL 2700000L /* long format length: 3 hours at 250 samp/sec */ -#define NSAMPS 525000L /* short format length: 35 minutes at 250 samp/sec */ #define FNLEN 12 /* maximum length for signal file name */ char *pname; @@ -55,7 +53,7 @@ { char dfname[FNLEN], *ifname = NULL, *p, *record = NULL, *prog_name(); int cflag = 0, i, v[2], getcvec(); - long t = 0L, start_time = 0L, end_time = 0L, nsamp = NSAMPS; + long t = 0L, start_time = 0L, end_time = 0L; static WFDB_Siginfo dfarray[2]; void help(); @@ -146,13 +144,19 @@ if (end_time == 0L && strlen(record) == 4) { /* assume AHA DB input */ if (record[1] == '2' || record[1] == '3') /* short format record */ - end_time = NSAMPS; + end_time = strtim("35:0"); else if (record[1] == '0' || record[1] == '1') /* long format record */ - end_time = NSAMPL; + end_time = strtim("3:0:0"); } - if (end_time != 0L) - nsamp = end_time - start_time; + if (end_time == 0L) { + (void)fprintf(stderr, + "%s: warning: end time not specified, output may be truncated\n", + pname); + (void)fprintf(stderr, + " rerun with -t TIME to override\n"); + end_time = start_time + strtim("100:0:0"); + } (void)sprintf(dfname, "%s.dat", record); dfarray[0].fname = dfarray[1].fname = dfname; @@ -165,9 +169,9 @@ if (!cflag) { /* process tape-format input file */ if (isigopen("16", dfarray, 2) < 2) exit(2); - if (start_time > 0L && isigsettime(start_time) < 0) + if (start_time > 0L && isigsettime(t = start_time) < 0) exit(2); - while (getvec(v) == 2 && v[0] != EODF && putvec(v) > 0 && ++t < nsamp) + while (getvec(v) == 2 && v[0] != EODF && putvec(v)>0 && ++t < end_time) ; /* continue to soft EOF, hard error, or specified time */ (void)newheader(record); /* write header with correct signal @@ -180,7 +184,7 @@ else { /* process compressed-format input file */ while (t < start_time && getcvec(v) == 2) ++t; - while (getcvec(v) == 2 && putvec(v) > 0 && ++t < nsamp) + while (getcvec(v) == 2 && putvec(v) > 0 && ++t < end_time) ; /* continue to hard EOF, hard error, or specified time */ (void)newheader(record); /* write header with correct signal diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/convert/edf2mit.c wfdb-10.4.5/convert/edf2mit.c --- wfdb-10.4.4/convert/edf2mit.c 2004-06-04 11:39:20.000000000 -0400 +++ wfdb-10.4.5/convert/edf2mit.c 2007-12-20 10:27:23.000000000 -0500 @@ -133,7 +133,7 @@ fread(buf, 1, 8, ifile); /* Check to see that the input is an EDF file. (This check will detect - up most but not all other types of files.) */ + most but not all other types of files.) */ if (strncmp(buf, "0 ", 8)) { (void)fprintf(stderr, "%s: input does not appear to be EDF -- no conversion attempted.\n", diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/doc/wag-src/ann2rr.1 wfdb-10.4.5/doc/wag-src/ann2rr.1 --- wfdb-10.4.4/doc/wag-src/ann2rr.1 2003-12-31 09:09:35.000000000 -0500 +++ wfdb-10.4.5/doc/wag-src/ann2rr.1 2006-12-12 09:48:58.000000000 -0500 @@ -24,7 +24,7 @@ .TP \fB-c\fR Print intervals between consecutive valid annotations only. (See discussion -below). +below.) .TP \fB-f\fR \fItime\fR Begin at the specified \fItime\fR. By default, \fBann2rr\fR starts at the diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/doc/wag-src/edf2mit.1 wfdb-10.4.5/doc/wag-src/edf2mit.1 --- wfdb-10.4.4/doc/wag-src/edf2mit.1 2006-05-04 11:36:08.000000000 -0400 +++ wfdb-10.4.5/doc/wag-src/edf2mit.1 2006-08-23 15:26:13.000000000 -0400 @@ -1,4 +1,4 @@ -.TH EDF2MIT 1 "4 December 2002" "WFDB 10.3.1" "WFDB Applications Guide" +.TH EDF2MIT 1 "23 August 2006" "WFDB 10.4.5" "WFDB Applications Guide" .SH NAME edf2mit, mit2edf \- convert between EDF and WFDB-compatible formats .SH SYNOPSIS @@ -89,7 +89,7 @@ A simple format for exchange of digitized polygraphic recordings. \fIElectroencephalography and Clinical Neurophysiology\fB 82\fR:391-393 (1992). .HP -Bob Kemp's EDF web site (http://www.hsr.nl/edf/). +Bob Kemp's EDF web site (http://www.edfplus.info/). The definitive reference on the format; it includes the full specification of EDF from the 1992 paper, sample EDF files, software for reading and viewing them, FAQs, and much more. diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/doc/wag-src/fixag.sed wfdb-10.4.5/doc/wag-src/fixag.sed --- wfdb-10.4.4/doc/wag-src/fixag.sed 2005-08-20 22:31:53.000000000 -0400 +++ wfdb-10.4.5/doc/wag-src/fixag.sed 2006-08-23 15:25:29.000000000 -0400 @@ -80,7 +80,7 @@ s+(http://www.aami.org/)+(http://www.aami.org/)+ s+"http://www.gnuplot.info/"+"http://www.gnuplot.info/" target="other"+ s+http://www.mstarlabs.com/+http://www.mstarlabs.com/+ -s+"http://www.hsr.nl/edf/"+"http://www.hsr.nl/edf/" target="other"+ +s+"http://www.edfplus.info/"+"http://www.edfplus.info/" target="other"+ s+>Evaluating ECG Analyzers<+>Evaluating ECG Analyzers<+ s+>WFDB Programmer's Guide<+>WFDB Programmer's Guide<+ s+>WFDB Applications Guide<+>WFDB Applications Guide<+ diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/doc/wpg-src/wpg0.tex wfdb-10.4.5/doc/wpg-src/wpg0.tex --- wfdb-10.4.4/doc/wpg-src/wpg0.tex 2006-05-12 00:54:21.000000000 -0400 +++ wfdb-10.4.5/doc/wpg-src/wpg0.tex 2008-02-06 12:14:53.000000000 -0500 @@ -21,7 +21,7 @@ @center Harvard-MIT Division of Health Sciences and Technology @page @vskip 0pt plus 1filll -Copyright @copyright{} 1989 -- 2006 George B. Moody +Copyright @copyright{} 1989 -- 2008 George B. Moody @sp 2 The most recent versions of the software described in this guide may be downloaded from @uref{http://www.physionet.org/}. For further @@ -510,6 +510,51 @@ WFDB Software Package distribution, for information on any more recent changes that may not be described here. +@unnumberedsubsec Changes in version 10.4.5 + +Bob Farrell and Tony Ricke chased down and provided fixes for memory leaks +in several WFDB library functions, and also provided revisions to permit +additional type checking and to avoid type mismatch warnings. + +Changes in the build system make it easier to build WFDB using Cygwin +gcc (with or without the Cygwin POSIX library). + +When creating annotation files, if the input sampling frequency differs +from the frame rate of the input record (either because of using +@code{WFDB_HIGHRES} mode while reading a multifrequency record, or because +of having used @code{setifreq()} to modify the sampling frequency), a comment +is written to the beginning of the annotation file indicating the +resolution of the annotation times in ticks per second (thus allowing +the application to store its annotations with whatever time resolution +is desired). When reading an annotation file, if such a resolution +comment is found, getann adjusts the times of annotations to match the +currently defined sampling frequency. The resolutions are kept +independently for each annotation file, so (for example) @code{bxb} can +compare two annotation files written with different resolutions. + +The ability to set the time resolution of annotation files has required +a minor change in the semantics of @code{setifreq()}. It is now necessary +to invoke @code{setifreq()} before creating an annotation file that will +have a resolution matching the (modified) input sampling frequency. +Since @code{setifreq()} must be invoked after opening the input signals, +this implies that @code{wfdbinit()} cannot be used to open both input signals +and output annotation files if @code{setifreq()} is to be used; rather, the +sequence should be @code{isigopen()}, @code{setifreq()}, and finally +@code{annopen()}. + +If a string that includes a @samp{.} is supplied to a WFDB library function +where a record name is expected, the WFDB library assumes that it is +the name of a file located in the WFDB path. If the name ends in @samp{.hea}, +the file is assumed to be a WFDB-format header file, and its record name +is assumed to be the first part of the string, exclusive of the @samp{.hea'}. + +This version also includes support for reading EDF files natively. +If a string supplied as a record name contains a @samp{.} but does not end +in @samp{.hea}, it is assumed to be the record name of an EDF file of the +same name. + +(WFDB library versions 10.4.3 and 10.4.4 were identical to version 10.4.2.) + @unnumberedsubsec Changes in version 10.4.2 Mathias Gruber reported a line in wfdbio.c that used void pointer arithmetic @@ -2233,6 +2278,7 @@ @end example @noindent +Avoid using @code{wfdbinit} and @code{setifreq} in the same program. @xref{Example 9}, for an illustration of the use of @code{wfdbinit}. @ifnotinfo @xref{osigopen, , @code{osigopen}}, and @pxref{osigfopen, , @code{osigfopen}}, @@ -2273,7 +2319,8 @@ second per signal). It should be invoked after opening the input signals (using @code{isigopen} or @code{wfdbinit}), and before using any of @code{getvec}, @code{getann}, @code{putann}, @code{isigsettime}, -@code{isgsettime}, @code{timstr}, @code{mstimstr}, or @code{strtim}. +@code{isgsettime}, @code{timstr}, @code{mstimstr}, @code{strtim}, +or @code{annopen}. @emph{Note that the operation of @code{getframe} is unaffected by @code{setifreq}.} @@ -2324,6 +2371,9 @@ using a command such as @samp{psamplex 100}.) The QRS detector in chapter 6 also illustrates the use of @code{setifreq} (@pxref{Example 10}). +@noindent +Avoid using @code{wfdbinit} and @code{setifreq} in the same program. + @c @group @node getifreq, setgvmode, setifreq, special input modes @unnumberedsubsec getifreq @@ -4454,10 +4504,11 @@ @noindent This function reads an ``info'' string from the @file{hea} file for -the specified @var{record}. Info strings are null-terminated and do not +the specified @var{record}. If @var{record} is @code{NULL}, then +@code{getinfo} reads the next available info string for the currently +open record. Info strings are null-terminated and do not contain newline characters. The @file{hea} files of some records may contain no info strings; others may contain more than one info string. -To read additional info strings after the first, use @code{getinfo(NULL)}. For example, the following code fragment may be used to read and print all of the info for record @file{100s}: @@ -4472,6 +4523,23 @@ @dots{} @end example +@noindent +If the @file{hea} file was opened by another WFDB function, such as +@code{isigopen}, @code{annopen}, @code{sampfreq}, or @code{wfdbinit}, +the @var{record} argument can be @code{NULL} even for the first @code{getinfo}, +like this: + +@example +@dots{} +char *info; +WFDB_Frequency sps; + +if (sps = sampfreq("100s") + while (info = getinfo(NULL)) + puts(info); +@dots +@end example + (This function was first introduced in WFDB library version 4.0.) @c @group @@ -7106,18 +7174,18 @@ @i{21} exit(1); @i{22} @} @i{23} a.name = "qrs"; a.stat = WFDB_WRITE; -@i{24} -@i{25} if ((nsig = isigopen(argv[1], NULL, 0)) < 1) exit(2); -@i{26} s = (WFDB_Siginfo *)malloc(nsig * sizeof(WFDB_Siginfo)); -@i{27} v = (WFDB_Sample *)malloc(nsig * sizeof(WFDB_Sample)); -@i{28} if (s == NULL || v == NULL) @{ -@i{29} fprintf(stderr, "%s: insufficient memory\n", argv[0]); -@i{30} exit(2); -@i{31} @} -@i{32} if (wfdbinit(argv[1], &a, 1, s, nsig) != nsig) exit(2); -@i{33} if (sampfreq((char *)NULL) < 240. || -@i{34} sampfreq((char *)NULL) > 260.) -@i{35} setifreq(250.); +@i{24} if ((nsig = isigopen(argv[1], NULL, 0)) < 1) exit(2); +@i{25} s = (WFDB_Siginfo *)malloc(nsig * sizeof(WFDB_Siginfo)); +@i{26} v = (WFDB_Sample *)malloc(nsig * sizeof(WFDB_Sample)); +@i{27} if (s == NULL || v == NULL) @{ +@i{28} fprintf(stderr, "%s: insufficient memory\n", argv[0]); +@i{29} exit(2); +@i{30} @} +@i{31} if (isigopen(argv[1], s, nsig) != nsig) exit(2); +@i{32} if (sampfreq((char *)NULL) < 240. || +@i{33} sampfreq((char *)NULL) > 260.) +@i{34} setifreq(250.); +@i{35} if (annopen(argv[1], &a, 1) < 0) exit(2); @i{36} if (argc > 2) scmin = muvadu(0, atoi(argv[2])); @i{37} if (scmin < 1) scmin = muvadu(0, 1000); @i{38} slopecrit = scmax = 10 * scmin; @@ -7191,13 +7259,14 @@ @item Lines 11--12: The names of these variables match those in the original Pascal program. -@item Lines 33--35: +@item Lines 32--35: Most of this program is independent of sampling frequency, but the filter (lines 45--46) and the threshold are as specified by the authors of the original program for human ECGs sampled at 250 Hz (e.g., the AHA DB). If the sampling frequency of the input record is significantly different, we use @code{setifreq} to specify that we want @code{getvec} -to give us data resampled at 250 Hz. +to give us data resampled at 250 Hz. The output annotation file is +created in line 35 only after invoking @code{setifreq} if necessary. @item Lines 36--38: The threshold is actually a slope criterion (with units of amplitude/time); diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/doc/wug-src/wave/ps/chart1.ps wfdb-10.4.5/doc/wug-src/wave/ps/chart1.ps --- wfdb-10.4.4/doc/wug-src/wave/ps/chart1.ps 2004-03-08 17:55:23.000000000 -0500 +++ wfdb-10.4.5/doc/wug-src/wave/ps/chart1.ps 2008-02-06 15:05:33.000000000 -0500 @@ -1,1521 +1,205 @@ -%!PS-Adobe-3.0 +%!PS-Adobe-1.0 +%%Creator: pschart +%%Title: Chart Recording %%Pages: (atend) -%%BoundingBox: 75 345 715 571 -%%HiResBoundingBox: 75.000000 345.000000 714.100000 570.300000 -%......................................... -%%Creator: AFPL Ghostscript 703 (pswrite) -%%CreationDate: 2004/03/08 17:53:28 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 +%%DocumentFonts: Times-Roman Times-Italic Courier Symbol +%%BoundingBox: -15 0 837 424 %%EndComments -%%BeginProlog -% This copyright applies to everything between here and the %%EndProlog: -% Copyright (C) 2001 artofcode LLC, Benicia, CA. All rights reserved. -%%BeginResource: procset GS_pswrite_2_0_1001 -/GS_pswrite_2_0_1001 80 dict dup begin -/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch -4 index eq and{ pop pop pop}{ PageSize dup 1 -5 -1 roll put 0 4 -1 roll put dup where{ exch get exec} -{ pop/setpagedevice where -{ pop 1 dict dup /PageSize PageSize put setpagedevice} -{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat -setpage}if}ifelse}ifelse}ifelse} bind def -/!{bind def}bind def/#{load def}!/N/counttomark # -/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}! -/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}! -/w/setlinewidth #/J/setlinecap # -/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat # -/m/moveto #/l/lineto #/c/rcurveto # -/p{N 2 idiv{N -2 roll rlineto}repeat}! -/P{N 0 gt{N -2 roll moveto p}if}! -/h{p closepath}!/H{P closepath}! -/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}! -/re{4 -2 roll m exch dup lx exch ly neg lx h}! -/^{3 index neg 3 index neg}! -/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}! -/q/gsave #/Q/grestore #/rf{re fill}! -/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}! -/|={pop exch 4 1 roll 3 array astore cvx exch 1 index def exec}! -/|{exch string readstring |=}! -/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}! -/@/currentfile #/${+ @ |}! -/B{{2 copy string{readstring pop}aload pop 4 array astore cvx -3 1 roll}repeat pop pop true}! -/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}! -/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}! -/Ic{exch Ix false 3 colorimage}! -/F{/Columns counttomark 3 add -2 roll/Rows exch/K -1/BlackIs1 true>> -/CCITTFaxDecode filter}!/FX{< -, -K -802 3495 31 29 /1S -$C -3Xu]^-]SfKdVi2Y^X^#?rR_)LqRqAoHKeX=d~> -, -832 3483 31 41 /6L -$C -0GoEdef+Sgs89]T*[P=C@I)Bj^\dL"J,fQFs'9j9-ql076u[B4;!gQd$3~> -, -862 3483 31 40 /1W -$C -5'6&XG$JM4^O>!hn(2^ -, -892 3496 23 28 /6P -$C -0GoEG$nqY\s8W-!pTn\Q#U2I8`Xd^3E7=~> -, -912 3496 18 41 /2A -$C -2@^-1X8i5"s8W-!=g46F_nkC2T7lt;Vu~> -, -929 3483 31 41 /6T -$C --kZe+#=NYDJd1idds^\'hAZgTE+1:0ejC+:19YTOOUd#<=B1;*eV8qX'atc~> -, -959 3496 32 41 /2E -$C -2B9LT@06kc>(?SPs8W-!s8W-!n(Ll3I -, -989 3495 19 35 /6X -$C --TVa/8fCK$s8W-!s8W,8&AbEQ?MD4Jhu~> -, -1021 3495 47 43 /2M -$C -+N/j:#WP4TLHpF%$+^C$8\.X[S6"kW)q6':*U*\GHDDLn@f7tRP#),Xs8W,dSJL+Zh1'ok[7da@ -q[@7V)&>)L'XkHu[ZuR[YgTa`PVEL^:gfp~> -, -1083 3496 55 40 /7F -$C -2@aDW_19@(0MoV_f=%e7n*BlIs7ujg^]-m?s67;%qJY^!S,30Rks,442ui_Ks8Q0nJ(=L)rV3;g -HMd$/FJ.QoJ,~> -, -1136 3495 30 29 /2Q -$C -1c%'VT]eJ33+rjuR&(n9B5N_LDON]lf&J<[nM+~> -, -1163 3495 24 29 /7J -$C -4HCO,jL@<"dsgWZ>t%(VPU/qRV*Rp]clfahrRYh%CdA[.@13~> -, -1186 3495 7J , -1210 3495 2Q , -1236 3495 28 29 /2U -$C -+d:&':r7_~> -, -1263 3496 2E , -1293 3495 32 28 /7N -$C -,T5\L3-=*BNZ9#]g_Eqn5C`_5s8W-!s8W-!ri6A6~> -, -1323 3495 7J , -1346 3495 28 29 /2Y -$C -,RtAHFQeY.ODdkXkr6;&YQ+D&j7ZqH[p -, -1373 3495 6X , -1390 3495 6X , -1406 3495 7J , -1445 3496 22 40 /0C -$C -2?X+*Cc-#.s8W-!s8W-!s8W,JU'Nc`+9~> -, -1465 3496 32 28 /3C -$C -2@*\M0L:D,L&_2Qs8W-!s8W-!n)$DCoUr=f3u&!8%N9i~> -, -1495 3495 7J , -1518 3495 6X , -1535 3496 2A , -1551 3495 6X , -1568 3495 7N , -1598 3495 6X , -1615 3495 2Y , -1656 3495 1S , -1686 3496 26 41 /0G -$C -2@I?`%b7c_s8W-!s8V[u8"(P"htrht2V#3ETnN~> -, -1721 3496 39 40 /3G -$C -+bL?I:r?>Ks8W-!s8W-!s-rMmqHO!sf6ZEAM#7~> -, -1758 3495 2Y , -1785 3495 2U , -1811 3496 2E , -1841 3496 3C , -1871 3495 1S , -1901 3496 18 41 /0K -$C -2@^-02?3^Vs8W-!s8W-!s8:MBbmk6~> -, -1918 3495 1S , -1948 3483 6T , -1978 3483 1W , -2031 3496 19 41 /3K -$C -/drd:ec5[Ls8W-!s8W-!s">oX_o'C0^]~> -, -2053 3495 31 42 /0O -$C -4A]GD_hK1e%GS@1GIP3]E^78[mL^NF7liqs:J(61rk?/H^]!Kq9)e,?>?bM>$repR~> -, -2083 3495 0O , -2113 3495 31 42 /3O -$C -3fXb27'Y*5dVb7pl[!mVlh1;X?GEo4D(?#@KLZ1'_R;\`^?se5]65/Q$ohYV=hk~> -, -2143 3495 14 7 /0S -$X -!-eM=!W2ur!W2rm!;H~> -, -2173 3496 45 41 /3S -$C -2B:ot$kP+p21#5eXh+J=ol])#[@9mup"%rJg0_GZ^MPX[/cBKe[I&HZg40~> -, -2216 3496 0K , -2233 3496 0K , -2265 3496 6P , -2285 3496 2A , -2301 3483 6T , -2331 3496 2E , -2361 3495 6X , -2378 3495 7J , -2416 3496 6P , -2436 3495 2Y , -2463 3495 7J , -2486 3495 2Y , -2513 3496 6P , -2533 3495 32 28 /0W -$C -.FiY,qX1j;4l2O[YH.+bpK,nqp%tfTldJT?@0Q~> -, -2563 3495 2Y , -2590 3495 32 42 /3W -$C -+d'/8i93-],Kquse.j=FY.sZ0s8W+KqsXO -, -2620 3495 0S , -7.2 w -1119.6 3849.35 5668.8 1417.2 re -S -[ 1.2 21.4772 ] 0 d -1.2 w -1119.6 3962.74 5668.8 0 S -1119.6 4076.13 5668.8 0 S -1119.6 4189.51 5668.8 0 S -1119.6 4302.9 5668.8 0 S -1119.6 4416.28 5668.8 0 S -1119.6 4529.67 5668.8 0 S -1119.6 4643.05 5668.8 0 S -1119.6 4756.44 5668.8 0 S -1119.6 4869.83 5668.8 0 S -1119.6 4983.21 5668.8 0 S -1119.6 5096.6 5668.8 0 S -1119.6 5209.98 5668.8 0 S -1232.99 3849.35 0 1417.2 S -1346.37 3849.35 0 1417.2 S -1459.76 3849.35 0 1417.2 S -1573.14 3849.35 0 1417.2 S -1686.53 3849.35 0 1417.2 S -1799.91 3849.35 0 1417.2 S -1913.3 3849.35 0 1417.2 S -2026.69 3849.35 0 1417.2 S -2140.07 3849.35 0 1417.2 S -2253.46 3849.35 0 1417.2 S -2366.84 3849.35 0 1417.2 S -2480.23 3849.35 0 1417.2 S -2593.62 3849.35 0 1417.2 S -2707 3849.35 0 1417.2 S -2820.39 3849.35 0 1417.2 S -2933.77 3849.35 0 1417.2 S -3047.16 3849.35 0 1417.2 S -3160.54 3849.35 0 1417.2 S -3273.93 3849.35 0 1417.2 S -3387.32 3849.35 0 1417.2 S -3500.7 3849.35 0 1417.2 S -3614.09 3849.35 0 1417.2 S -3727.47 3849.35 0 1417.2 S -3840.86 3849.35 0 1417.2 S -3954.25 3849.35 0 1417.2 S -4067.63 3849.35 0 1417.2 S -4181.02 3849.35 0 1417.2 S -4294.4 3849.35 0 1417.2 S -4407.79 3849.35 0 1417.2 S -4521.18 3849.35 0 1417.2 S -4634.56 3849.35 0 1417.2 S -4747.95 3849.35 0 1417.2 S -4861.33 3849.35 0 1417.2 S -4974.72 3849.35 0 1417.2 S -5088.11 3849.35 0 1417.2 S -5201.49 3849.35 0 1417.2 S -5314.88 3849.35 0 1417.2 S -5428.26 3849.35 0 1417.2 S -5541.65 3849.35 0 1417.2 S -5655.04 3849.35 0 1417.2 S -5768.42 3849.35 0 1417.2 S -5881.81 3849.35 0 1417.2 S -5995.19 3849.35 0 1417.2 S -6108.58 3849.35 0 1417.2 S -6221.96 3849.35 0 1417.2 S -6335.35 3849.35 0 1417.2 S -6448.74 3849.35 0 1417.2 S -6562.12 3849.35 0 1417.2 S -6675.51 3849.35 0 1417.2 S -951 4518 36 55 /1A -$C -3XZ'#&M=QWFIT)^-hg3If(Jb&s7O&is8(XQs8W-!s1Nntqq(jtBn#`hl!Cg,d^GAuK!A-[TE~> -, -991 4518 13 38 /4A -$X -!T4(L#P\Q!&,6D)#P\Dj!T3qXzzzzzzzzz!!!&X#Ohun#P\i)#P\Q!"7Q?L~> -, -1013 4518 1A , -1053 4518 1A , -6819 4518 1A , -6859 4518 4A , -6881 4519 30 54 /1E -$C -4phVtiIu%Hs8W-!s8W-!s8W-!s8W(J>9#af4?P_g~> -, -6921 4518 1A , -920 4883 76 52 /4G -$C -3#F#2J8]2?$5b&)OL;L0mJZe:hs\$mqs!jiH[\HQrV,4+gOF.Vqc;VAhu<9*]sdt8g]#srn#Lm1 -rVM&5n$i>k[boj.^Xh:hGC"c5j(s`/Ie!1"hsJ9V21rg5(]~> -, -987 4883 50 52 /1K -$C -3"<+I4cm'g"+38h\)4m.pUg.rmJhV7IK+6_n,%UlJ)>bDo_/VOW#NM~> -, -1032 4883 37 52 /4K -$C -3#Wro$l//VJ,=`QJ(su"rql]PpYY]E^AkqIh -, -1058 4883 4K , -6811 4883 4G , -6878 4883 1K , -6922 4883 4K , -6949 4883 4K , -[ ] 0 d -1119.6 4952.15 10.8 0 1.2 4.8 1.2 -2.4 2.4 -2.4 1.2 -1.2 1.2 -2.4 2.4 1.2 -1.2 -1.2 1.2 -3.6 1.2 -1.2 2.4 -1.2 1.2 3.6 1.2 3.6 2.4 -4.8 1.2 -1.2 -1.2 -2.4 2.4 2.4 1.2 6 1.2 4.8 2.4 -4.8 1.2 -8.4 1.2 -3.6 2.4 -6 -1.2 2.4 1.2 -4.8 1.2 -1.19 2.4 -2.4 1.2 -3.6 3.6 0 1.2 2.4 1.2 2.4 -2.4 -2.4 1.2 -2.4 1.2 -3.6 4.8 0 2.4 1.2 1.2 -2.4 1.2 -2.4 1.2 4.8 -2.4 2.4 1.2 0 1.2 -1.2 2.4 -1.2 1.2 -4.8 1.2 3.6 2.4 -2.4 1.2 4.8 -1.2 -2.4 2.4 -2.4 1.2 -2.4 1.2 -1.2 2.4 -3.6 1.2 -6 1.2 -6 1.2 0 -2.4 -3.6 1.2 -12 1.2 -7.2 2.4 0 1.2 14.4 1.2 21.6 2.4 24 1.2 34.8 -1.2 43.2 S -1233.6 5012.16 2.4 57.6 S -1235.99 5069.76 1.2 55.2 1.2 36 2.4 14.4 1.2 -16.8 1.2 -56.4 S -1243.19 5102.16 1.2 -79.2 S -1244.39 5022.96 2.4 -75.59 S -1246.79 4947.36 1.2 -45.6 1.2 -15.6 2.4 2.4 1.2 12 1.2 9.6 2.4 1.19 1.2 -2.39 -1.2 -2.4 2.4 3.6 1.2 1.19 1.2 2.4 2.4 0 1.2 -1.2 1.2 -3.59 1.2 -1.2 -2.4 3.59 1.2 -4.79 1.2 2.4 2.4 1.2 1.2 -1.2 1.2 1.2 2.4 1.19 1.2 -1.19 -1.2 0 2.4 -3.6 1.2 -2.4 1.2 4.8 2.4 2.39 1.2 3.6 1.2 -2.4 1.2 0 -2.4 -2.39 1.2 -2.4 1.2 1.2 2.4 -1.2 1.2 -1.2 1.2 -2.4 2.4 0 1.2 3.6 -1.2 2.4 3.6 0 1.2 -2.4 2.4 -2.4 1.2 5.99 1.2 0 1.2 -1.19 2.4 0 -1.2 -1.2 1.2 0 2.4 -1.2 1.2 2.4 1.2 -2.4 2.4 -2.4 1.2 -1.2 1.2 1.2 -2.4 1.2 1.2 3.6 1.2 2.39 2.4 -3.59 1.2 1.2 1.2 -3.6 1.2 3.6 2.4 -1.2 -1.2 0 1.2 -2.4 2.4 0 1.2 -2.4 1.2 3.6 2.4 0 1.2 1.2 1.2 1.2 -2.4 -4.8 1.2 0 1.2 1.2 2.4 2.4 2.4 0 1.2 -3.6 2.4 -1.2 1.2 0 -1.2 2.4 2.4 0 1.2 2.4 1.2 -3.6 2.4 -2.4 2.4 0 2.4 -1.2 1.2 1.2 -1.2 -2.4 2.4 -3.6 1.2 3.6 1.2 2.4 1.2 1.2 2.4 -1.2 1.2 -3.6 1.2 0 -2.4 2.4 1.2 0 1.2 1.2 2.4 0 1.2 -1.2 1.2 -1.2 2.4 3.6 1.2 6 -1.2 1.19 2.4 0 1.2 -2.39 1.2 -1.2 1.2 5.99 2.4 2.4 1.2 0 1.2 2.4 -2.4 -1.2 1.2 1.2 1.2 1.2 2.4 2.4 1.2 4.8 1.2 1.2 2.4 0 1.2 -3.6 -1.2 2.4 2.4 2.4 1.2 3.6 S -1443.59 4932.95 1.2 -3.6 1.2 0 2.4 -2.4 1.2 0 1.2 3.6 2.4 -2.4 1.2 -1.2 -1.2 2.4 2.4 -2.4 1.2 1.2 1.2 0 2.4 -3.6 1.2 1.2 1.2 0 2.39 -1.2 -1.2 -1.2 1.2 1.2 1.2 1.2 2.4 -3.6 1.2 -1.2 1.2 -2.4 2.4 3.6 1.2 1.2 -1.2 2.4 2.4 -4.8 1.2 0 1.2 -1.2 2.4 2.4 1.2 0 1.2 2.4 2.4 -1.2 -1.2 -3.6 1.2 -1.2 1.2 2.4 2.4 1.2 1.2 -2.4 1.2 1.2 2.4 -4.8 1.2 0 -1.2 -1.2 2.4 2.4 1.2 -1.2 1.2 -2.4 2.4 0 1.2 1.2 1.2 2.4 2.4 2.4 -1.2 0 1.2 -1.2 1.2 -1.2 2.4 -3.6 1.2 4.8 1.2 -1.2 2.4 -1.2 1.2 -1.2 -1.2 -1.2 2.4 -2.4 1.2 2.4 1.2 2.4 2.4 2.4 1.2 -4.8 1.2 -2.4 2.4 -1.2 -1.2 3.6 1.2 2.4 1.2 -1.2 2.4 -1.2 1.2 -1.2 1.2 -2.4 2.4 1.2 1.2 2.4 -1.2 0 2.4 1.2 1.2 0 1.2 -1.2 2.4 2.4 1.2 -1.2 1.2 3.6 2.4 -2.4 -1.2 0 1.2 -1.2 1.2 0 2.4 3.6 1.2 2.4 1.2 -3.6 2.4 -2.4 1.2 -1.2 -1.2 1.2 2.4 2.4 1.2 1.2 1.2 2.4 2.4 2.4 1.2 -1.2 1.2 0 2.4 1.2 -1.2 4.8 1.2 0 1.2 -1.2 2.4 7.2 1.2 0 1.2 3.6 2.4 1.2 1.2 -1.2 -1.2 -2.4 2.4 -2.4 1.2 1.2 4.8 0 1.2 -1.2 2.4 -1.2 1.2 -1.2 1.2 1.2 -1.2 2.4 2.4 2.4 1.2 1.2 1.2 -8.4 2.4 -9.6 1.2 0 1.2 -3.6 2.4 -2.4 -1.2 -3.6 1.2 0 2.4 1.2 1.2 2.4 S -1640.38 4913.75 1.2 -1.2 2.4 1.2 1.2 -2.4 1.2 -3.6 1.2 -1.2 2.4 1.2 1.2 0 -1.2 -2.4 2.4 1.2 1.2 -2.4 1.2 6 2.4 -1.2 1.2 1.2 1.2 2.4 2.4 -6 -1.2 -2.4 1.2 3.6 2.4 2.4 1.2 1.2 1.2 -1.2 1.2 -4.8 2.4 -3.6 1.2 1.2 -1.2 -4.8 2.4 -9.6 1.2 -4.79 1.2 -7.2 2.4 -7.2 1.2 -6 1.2 7.2 2.4 20.4 -1.2 25.2 1.2 32.4 2.4 32.4 1.2 56.4 S -1695.58 5037.35 1.2 58.8 S -1696.77 5096.15 1.2 51.6 2.4 34.8 1.2 15.6 1.2 -8.4 2.4 -33.6 S -1705.17 5156.15 1.2 -60 S -1706.37 5096.15 1.2 -74.4 S -1707.57 5021.75 2.4 -62.4 S -1709.97 4959.35 1.2 -36 1.2 -27.6 2.4 -13.2 1.2 -6 1.2 4.8 2.4 7.2 1.2 7.2 -1.2 0 1.2 1.2 2.4 -1.2 1.2 2.4 3.6 0 1.2 -3.6 1.2 2.4 3.6 0 -1.2 2.4 2.4 -4.8 1.2 -2.4 1.2 0 1.2 1.2 2.4 1.2 1.2 1.2 1.2 -2.4 -2.4 1.2 1.2 2.4 1.2 2.4 2.4 -3.6 1.2 0 1.2 -2.4 2.4 -1.2 1.2 0 -1.2 3.6 2.4 0 1.2 -1.2 1.2 -1.2 1.2 -2.4 2.4 2.4 1.2 -1.2 1.2 1.2 -2.4 -1.2 1.2 -1.2 1.2 1.2 2.4 1.2 1.2 0 1.2 1.2 2.4 1.2 1.2 -2.4 -1.2 -1.2 2.4 3.6 1.2 0 1.2 1.2 1.2 0 2.4 -4.8 1.2 1.2 1.2 1.2 -2.4 1.2 1.2 3.6 1.2 -3.6 2.4 -1.2 1.2 -2.4 1.2 1.2 2.4 2.4 1.2 0 -1.2 1.2 2.4 -3.6 1.2 -2.4 1.2 0 1.2 2.4 2.4 1.2 1.2 -1.2 1.2 -2.4 -2.4 -1.2 1.2 0 1.2 2.4 2.4 -1.2 1.2 -2.4 1.2 1.2 2.4 -3.6 1.2 1.2 -1.2 0 2.4 2.4 1.2 -2.4 1.2 -4.8 1.2 -1.2 2.4 1.2 1.2 3.6 1.2 -2.4 -2.4 -1.2 1.2 -1.2 1.2 -3.6 2.4 2.4 1.2 1.2 1.2 1.2 2.4 -1.2 1.2 -3.6 -1.2 -1.2 2.4 3.6 1.2 2.4 1.2 1.2 1.2 1.2 2.4 1.2 1.2 -1.2 1.2 7.2 -2.4 2.4 1.2 6 1.2 1.2 2.4 1.2 1.2 -1.2 1.2 6 2.4 3.6 1.2 2.4 -1.2 -1.2 2.4 -2.4 1.2 0 1.2 2.4 1.2 1.2 2.4 2.4 1.2 0 1.2 -3.6 -2.4 0 1.2 1.2 1.2 1.2 2.4 0 S -1906.77 4914.95 1.2 2.4 1.2 -4.8 2.4 -2.4 1.2 4.8 1.2 -1.2 2.39 2.4 1.2 0 -1.2 -3.6 1.2 -1.2 2.4 2.4 1.2 1.2 1.2 -1.2 2.4 1.2 1.2 -1.2 3.6 0 -1.2 3.6 1.2 1.2 2.4 -3.6 1.2 -1.2 1.2 -1.2 2.4 1.2 1.2 2.4 1.2 -2.4 -3.6 0 1.2 -3.6 1.2 3.6 2.4 -1.2 1.2 1.2 1.2 -2.4 2.4 -2.4 1.2 -1.2 -1.2 1.2 2.4 0 1.2 1.2 1.2 1.2 2.4 -4.8 1.2 -1.2 1.2 1.2 1.2 2.4 -2.4 1.2 1.2 0 1.2 -3.6 3.6 0 1.2 6 2.4 -2.4 1.2 -1.2 1.2 -1.2 -2.4 -3.6 1.2 4.8 1.2 1.2 2.4 0 1.2 -1.2 1.2 -4.8 1.2 -1.2 2.4 1.2 -1.2 1.2 1.2 2.4 2.4 -1.2 4.8 0 1.2 3.6 1.2 0 2.4 -1.2 1.2 -2.4 -1.2 -1.2 2.4 0 1.2 2.4 1.2 2.4 1.2 -3.6 2.4 0 1.2 -2.4 1.2 1.2 -2.4 2.4 1.2 2.4 1.2 -2.4 3.6 0 1.2 2.4 2.4 -1.2 1.2 1.2 1.2 -1.2 -2.4 -2.4 1.2 0 1.2 1.2 1.2 2.4 2.4 3.6 1.2 3.6 1.2 -1.2 2.4 1.2 -1.2 2.4 1.2 2.4 2.4 2.4 2.4 0 2.4 2.4 1.2 1.2 1.2 2.4 2.4 3.6 -1.2 1.2 1.2 -4.8 1.2 -1.2 2.4 1.2 1.2 -1.2 1.2 2.4 2.4 -2.4 1.2 -1.2 -1.2 -6 2.4 0 1.2 2.4 1.2 3.6 2.4 6 1.2 0 1.2 -1.2 2.4 -8.4 -1.2 -1.2 1.2 -2.4 1.2 -1.2 2.4 -4.8 1.2 -2.4 1.2 -4.8 2.4 2.4 S -2103.56 4910.15 1.2 -1.2 1.2 0 2.4 -4.8 1.2 -3.6 1.2 2.4 2.4 3.6 1.2 -1.2 -1.2 -1.2 2.4 -2.4 1.2 -2.4 1.2 -1.2 1.2 2.4 2.4 1.2 1.2 0 1.2 -3.6 -2.4 -1.2 1.2 1.2 1.2 1.2 2.4 4.8 1.2 -3.6 1.2 -4.8 2.4 -2.4 1.2 -1.2 -1.2 -6 2.4 -7.2 1.2 -6 1.2 -6 1.2 -8.4 2.4 -3.59 1.2 10.79 1.2 27.6 -2.4 34.8 1.2 36 1.2 48 S -2156.35 5012.15 2.4 66 S -2158.75 5078.15 1.2 62.4 S -2159.95 5140.55 1.2 44.4 2.4 16.8 1.2 -24 S -2164.75 5177.75 1.2 -75.6 S -2165.95 5102.15 2.4 -105.6 S -2168.35 4996.55 1.2 -84 S -2169.55 4912.55 1.2 -40.8 1.2 -1.2 2.4 13.2 1.2 7.2 1.2 3.6 2.4 1.2 1.2 -1.2 -1.2 1.2 2.4 -1.2 1.2 -1.2 1.2 1.2 2.4 -1.2 1.2 2.4 1.2 -1.2 2.4 0 -1.2 -2.4 1.2 1.2 3.6 0 1.2 -2.4 1.2 2.4 2.4 -3.6 1.2 1.2 1.2 2.4 -2.4 0 1.2 -3.6 1.2 0 2.4 -3.6 1.2 3.6 1.2 2.4 2.4 0 1.2 1.2 -1.2 -4.8 1.2 -1.2 2.4 2.4 1.2 1.2 1.2 1.2 2.4 0 1.2 -3.6 1.2 1.2 -2.4 3.6 1.2 1.2 1.2 -1.2 2.4 0 1.2 1.2 1.2 -3.6 2.4 2.4 1.2 2.4 -1.2 -2.4 1.2 0 2.4 -2.4 1.2 -2.4 1.2 0 2.4 2.4 1.2 0 1.2 1.2 -2.4 -3.6 1.2 0 1.2 1.2 2.4 1.2 1.2 2.4 1.2 0 2.4 -1.2 1.2 -3.6 -1.2 3.6 1.2 1.2 2.4 1.2 1.2 -1.2 3.6 0 1.2 3.6 1.2 -3.6 2.4 2.4 -1.2 0 1.2 -2.4 2.4 -2.4 1.2 2.4 1.2 0 2.4 -1.2 1.2 -1.2 1.2 -1.2 -1.2 0 2.4 -1.2 1.2 2.4 1.2 0 2.4 1.2 1.2 -6 1.2 1.2 2.4 -1.2 -1.2 3.6 4.8 0 1.2 -1.2 2.4 0 1.2 2.4 1.2 3.6 1.2 0 2.4 1.2 -1.2 3.6 1.2 3.6 2.4 4.8 1.2 1.2 1.2 1.2 2.4 -1.2 1.2 0 1.2 2.4 -2.4 1.2 1.2 2.4 1.2 0 1.2 -1.2 2.4 0 1.2 1.2 1.2 1.2 3.6 0 -1.2 -2.4 4.8 0 2.4 2.4 1.2 -1.2 1.2 -1.2 2.4 -1.2 1.2 -1.2 S -2366.35 4911.35 1.2 2.4 1.2 1.2 2.4 0 1.2 -2.4 1.2 -1.2 2.4 3.6 1.2 -1.2 -1.2 3.6 2.4 -3.6 1.2 -2.4 1.2 -1.2 2.4 2.4 2.4 0 2.39 -1.2 1.2 -6 -1.2 0 1.2 2.4 2.4 1.2 1.2 1.2 1.2 -1.2 2.4 -1.2 1.2 -4.8 1.2 2.4 -2.4 0 1.2 -1.2 1.2 -1.2 2.4 1.2 1.2 -2.4 1.2 2.4 2.4 1.2 1.2 2.4 -1.2 -3.6 1.2 1.2 2.4 -3.6 1.2 0 1.2 3.6 2.4 -1.2 1.2 1.2 1.2 -4.8 -2.4 -2.4 1.2 2.4 1.2 2.4 2.4 -1.2 1.2 1.2 1.2 -1.2 2.4 -3.6 1.2 2.4 -1.2 1.2 1.2 3.6 3.6 0 1.2 -4.8 2.4 1.2 1.2 4.8 1.2 0 2.4 1.2 -1.2 -3.6 1.2 -2.4 2.4 1.2 1.2 1.2 3.6 0 1.2 -4.8 1.2 -2.4 1.2 7.2 -2.4 -1.2 1.2 1.2 1.2 -1.2 2.4 0 1.2 -2.4 1.2 2.4 2.4 3.6 1.2 -2.4 -1.2 2.4 3.6 0 1.2 1.2 2.4 6 1.2 1.2 1.2 0 1.2 -1.2 2.4 1.2 -1.2 3.6 1.2 1.2 2.4 2.4 1.2 -1.2 1.2 0 2.4 1.2 1.2 2.4 1.2 2.4 -2.4 2.4 1.2 -3.6 1.2 -1.2 2.4 -2.4 1.2 -1.2 1.2 3.6 1.2 -1.2 2.4 -1.2 -1.2 -1.2 1.2 1.2 2.4 -1.2 1.2 1.2 1.2 2.4 2.4 2.4 1.2 3.6 1.2 -4.8 -2.4 -4.8 1.2 -7.2 1.2 0 2.4 -7.2 1.2 -3.6 1.2 -4.8 1.2 -1.2 2.4 1.2 -1.2 2.4 1.2 -1.2 2.4 -2.4 1.2 -1.2 1.2 -1.2 2.4 2.4 2.4 0 2.4 -2.4 -1.2 -1.2 S -2563.14 4893.35 1.2 0 2.4 6 1.2 0 1.2 -3.6 1.2 -1.2 2.4 -3.6 1.2 2.4 -1.2 0 2.4 2.4 1.2 -2.4 1.2 -4.8 2.4 -8.4 1.2 -3.6 1.2 -6 2.4 -1.2 -1.2 -3.6 1.2 -3.6 2.4 -13.2 1.2 -10.8 1.2 3.6 1.2 12 2.4 19.2 1.2 24 -1.2 26.4 2.4 34.8 1.2 46.8 S -2603.94 5004.95 1.2 63.6 S -2605.14 5068.55 2.4 60 S -2607.54 5128.55 1.2 39.6 1.2 12 2.4 -20.4 S -2612.34 5159.75 1.2 -67.2 S -2613.53 5092.55 1.2 -93.6 S -2614.73 4998.95 2.4 -84 S -2617.13 4914.95 1.2 -43.2 1.2 -4.8 1.2 9.6 2.4 15.6 1.2 3.6 1.2 0 2.4 -2.4 -1.2 -1.2 1.2 1.2 2.4 3.6 1.2 -1.2 1.2 -1.2 2.4 -1.2 1.2 -1.2 1.2 1.2 -2.4 0 1.2 2.4 1.2 -1.2 1.2 -2.4 2.4 -1.2 1.2 1.2 1.2 2.4 2.4 -1.2 -1.2 -1.2 1.2 1.2 2.4 0 1.2 -1.2 1.2 3.6 2.4 1.2 1.2 -1.2 1.2 -1.2 -2.4 -1.2 2.4 0 1.2 1.2 2.4 0 1.2 -1.2 3.6 0 1.2 1.2 1.2 2.4 -2.4 2.4 1.2 -2.4 1.2 -2.4 2.4 1.2 1.2 1.2 1.2 2.4 2.4 -2.4 1.2 -2.4 -1.2 0 1.2 2.4 2.4 2.4 1.2 0 1.2 -2.4 2.4 -2.4 1.2 1.2 1.2 0 -2.4 6 1.2 -2.4 1.2 -2.4 2.4 -2.4 1.2 3.6 1.2 -1.2 2.4 2.4 1.2 -1.2 -1.2 -2.4 1.2 2.4 2.4 1.2 4.8 0 1.2 -1.2 1.2 -2.4 2.4 0 1.2 6 -1.2 -1.2 2.4 -1.2 1.2 -2.4 1.2 -1.2 2.4 0 1.2 3.6 1.2 2.4 1.2 -4.8 -2.4 1.2 1.2 -2.4 1.2 3.6 2.4 0 1.2 2.4 1.2 -1.2 2.4 -3.6 1.2 -2.4 -1.2 2.4 2.4 0 1.2 3.6 1.2 1.2 2.4 -1.2 1.2 -1.2 1.2 6 1.2 3.6 -2.4 3.6 1.2 1.2 1.2 -1.2 2.4 -1.2 1.2 2.4 1.2 3.6 2.4 2.4 1.2 -3.6 -1.2 1.2 2.4 2.4 1.2 0 1.2 1.2 2.4 2.4 1.2 -2.4 1.2 -2.4 1.2 -1.2 -2.4 0 1.2 1.2 1.2 2.4 2.4 -2.4 1.2 -1.2 1.2 -3.6 2.4 3.6 1.2 2.4 -1.2 1.2 2.4 1.2 S -2813.93 4922.15 1.2 -4.8 1.2 -2.4 2.4 1.2 1.2 1.2 1.2 0 1.2 2.4 2.4 -3.6 -1.2 -1.2 1.2 1.2 2.4 1.2 1.2 -1.2 1.2 -1.2 2.4 -1.2 2.4 0 2.4 3.6 -1.2 -1.2 1.2 -2.4 2.4 -3.6 1.19 -2.4 1.2 2.4 1.2 2.4 2.4 0 1.2 1.2 -1.2 -2.4 2.4 -2.4 1.2 1.2 1.2 3.6 2.4 -1.2 1.2 0 1.2 -2.4 2.4 -3.6 -1.2 1.2 1.2 1.2 2.4 1.2 1.2 -1.2 1.2 -2.4 1.2 -1.2 2.4 1.2 1.2 1.2 -1.2 1.2 2.4 0 1.2 1.2 1.2 -1.2 2.4 -1.2 1.2 1.2 1.2 3.6 2.4 -4.8 -1.2 0 1.2 -2.4 2.4 -3.6 1.2 1.2 1.2 3.6 1.2 0 2.4 -1.2 2.4 0 -2.4 2.4 1.2 0 1.2 -1.2 2.4 0 1.2 -8.4 1.2 4.8 2.4 0 1.2 3.6 -1.2 0 2.4 -1.2 1.2 -1.2 1.2 2.4 1.2 3.6 2.4 0 1.2 -1.2 1.2 0 -2.4 -1.2 1.2 2.4 1.2 2.4 2.4 6 1.2 0 1.2 -2.4 2.4 -1.2 1.2 4.8 -1.2 1.2 1.2 1.2 2.4 -1.2 1.2 1.2 1.2 1.2 2.4 1.2 1.2 3.6 1.2 4.8 -2.4 -3.6 1.2 1.2 1.2 -3.6 2.4 0 1.2 2.4 1.2 2.4 2.4 -4.8 1.2 -2.4 -1.2 1.2 1.2 1.2 2.4 -3.6 1.2 1.2 1.2 -3.6 2.4 6 1.2 1.2 1.2 1.2 -2.4 -4.8 1.2 -3.6 1.2 -4.8 2.4 -2.4 1.2 -2.4 1.2 -2.4 2.4 -2.4 1.2 3.6 -1.2 -1.2 1.2 -2.4 2.4 -3.6 1.2 2.4 1.2 2.4 2.4 1.2 1.2 -2.4 1.2 -3.6 -2.4 -1.2 1.2 -2.4 1.2 1.2 2.4 1.2 S -3010.72 4901.75 1.2 0 1.2 -3.6 2.4 1.2 1.2 0 1.2 2.4 1.2 -1.2 2.4 2.4 -1.2 -2.4 1.2 -2.4 2.4 3.6 1.2 1.2 1.2 2.4 2.4 -1.2 1.2 -3.6 1.2 -3.6 -2.4 -2.4 1.2 -7.2 1.2 -3.6 2.4 -9.6 1.2 -6 1.2 -12 1.2 2.4 2.4 18 -1.2 27.6 1.2 30 2.4 38.4 1.2 54 S -3052.72 5026.55 1.2 66 S -3053.92 5092.55 2.4 51.6 1.2 26.4 1.2 -9.6 2.4 -55.2 S -3061.12 5105.75 1.2 -88.8 S -3062.32 5016.95 1.2 -78 S -3063.52 4938.95 2.4 -49.2 1.2 -18 1.2 3.6 1.2 7.2 2.4 9.6 1.2 1.2 1.2 2.4 -2.4 0 1.2 -2.4 1.19 0 2.4 -4.8 1.2 0 1.2 4.8 2.4 1.2 1.2 -1.2 -1.2 0 2.4 -2.4 1.2 2.4 1.2 3.6 1.2 -1.2 2.4 -1.2 4.8 0 1.2 2.4 -1.2 -1.2 2.4 0 1.2 -2.4 1.2 -4.8 2.4 3.6 1.2 1.2 1.2 1.2 2.4 -1.2 -1.2 0 1.2 -4.8 1.2 2.4 2.4 2.4 2.4 0 2.4 -1.2 1.2 -1.2 1.2 2.4 -2.4 -3.6 1.2 3.6 1.2 -1.2 2.4 0 1.2 -2.4 1.2 1.2 2.4 2.4 1.2 1.2 -2.4 0 2.4 -1.2 1.2 1.2 1.2 0 2.4 -1.2 1.2 0 1.2 -3.6 2.4 -3.6 -1.2 4.8 1.2 2.4 2.4 1.2 1.2 1.2 1.2 -4.8 2.4 2.4 2.4 0 1.2 1.2 -2.4 0 1.2 -1.2 1.2 -3.6 2.4 1.2 1.2 2.4 1.2 1.2 2.4 -1.2 1.2 0 -1.2 -4.8 3.6 0 1.2 1.2 2.4 -1.2 1.2 -6 1.2 1.2 1.2 -1.2 2.4 3.6 -1.2 -2.4 1.2 -6 2.4 3.6 1.2 -1.2 1.2 4.8 2.4 1.2 1.2 2.4 1.2 -1.2 -2.4 -3.6 1.2 -1.2 1.2 1.2 2.4 3.6 1.2 2.4 1.2 2.4 1.2 -3.6 2.4 1.2 -1.2 3.6 1.2 4.8 2.4 2.4 1.2 1.2 3.6 0 1.2 4.8 1.2 3.6 2.4 3.6 -1.2 1.2 1.2 0 2.4 -2.4 1.2 1.2 1.2 0 1.2 1.2 2.4 -1.2 1.2 0 -1.2 -1.2 2.4 1.2 1.2 1.2 1.2 0 2.4 2.4 1.2 -3.6 1.2 -1.2 S -3260.31 4912.55 2.4 1.2 1.2 0 1.2 3.6 2.4 -1.2 1.2 -1.2 1.2 1.2 1.2 3.6 -2.4 1.2 1.2 -2.4 1.2 -1.2 2.4 -2.4 1.2 -3.6 1.2 3.6 2.4 1.2 1.2 0 -1.2 -2.4 2.4 -2.4 1.2 -2.4 1.2 2.4 2.4 2.4 1.2 -1.2 1.2 -3.6 1.2 1.2 -2.4 -2.4 1.2 3.6 1.2 0 2.4 1.2 1.2 1.2 1.2 -4.8 2.4 0 1.2 -2.4 -1.2 2.4 2.4 2.4 1.2 -1.2 1.2 3.6 2.4 -4.8 1.19 1.2 4.8 0 1.2 -1.2 -1.2 -1.2 2.4 2.4 1.2 2.4 1.2 1.2 2.4 -2.4 1.2 -2.4 1.2 -4.8 2.4 2.4 -1.2 1.2 1.2 1.2 2.4 3.6 1.2 -1.2 1.2 -6 1.2 4.8 2.4 3.6 1.2 0 -1.2 -3.6 2.4 0 1.2 -1.2 1.2 0 2.4 1.2 2.4 0 2.4 -2.4 2.4 0 -2.4 3.6 2.4 0 1.2 -4.8 2.4 -1.2 1.2 2.4 1.2 2.4 2.4 2.4 1.2 1.2 -1.2 1.2 2.4 0 1.2 7.2 1.2 1.2 2.4 3.6 1.2 -1.2 1.2 -1.2 2.4 1.2 -1.2 2.4 1.2 3.6 1.2 0 2.4 2.4 1.2 -2.4 1.2 0 2.4 2.4 1.2 -1.2 -1.2 1.2 2.4 -2.4 1.2 -2.4 1.2 -2.4 2.4 3.6 1.2 2.4 1.2 0 2.4 -4.8 -1.2 -1.2 1.2 1.2 1.2 4.8 2.4 4.8 1.2 2.4 1.2 -3.6 2.4 -3.6 1.2 -9.6 -1.2 0 2.4 -3.6 1.2 0 1.2 -6 2.4 -3.6 1.2 -2.4 1.2 0 2.4 -1.2 -1.2 -1.2 1.2 0 1.2 2.4 2.4 -3.6 1.2 2.4 1.2 1.2 2.4 0 1.2 -1.2 -1.2 -2.4 S -3457.1 4904.15 2.4 -3.6 1.2 3.6 1.2 -3.6 2.4 6 1.2 1.2 1.2 -4.8 2.4 -4.8 -1.2 4.8 1.2 3.6 1.2 -1.2 2.4 0 1.2 -1.2 1.2 -6 2.4 -2.4 1.2 -1.2 -1.2 -6 2.4 -7.2 1.2 -4.8 1.2 -7.2 2.4 -8.4 1.2 1.2 1.2 10.8 2.4 20.4 -1.2 24 1.2 31.2 1.2 45.6 S -3497.9 4994.15 2.4 62.4 S -3500.3 5056.55 1.2 62.4 S -3501.5 5118.95 1.2 46.8 2.4 19.2 1.2 -20.4 S -3506.3 5164.55 1.2 -62.4 S -3507.5 5102.15 2.4 -87.6 S -3509.9 5014.55 1.2 -79.2 S -3511.1 4935.35 1.2 -46.8 2.4 -16.8 1.2 1.2 1.2 9.6 2.4 10.8 1.2 2.4 1.2 -1.2 -1.2 0 2.4 -1.2 1.2 2.4 1.2 2.4 2.4 -1.2 1.2 0 1.2 -3.6 2.39 -1.2 -1.2 0 1.2 3.6 2.4 0 1.2 -2.4 1.2 0 1.2 -2.4 2.4 1.2 1.2 2.4 -1.2 0 2.4 -1.2 1.2 -2.4 3.6 0 1.2 2.4 1.2 2.4 2.4 0 1.2 -3.6 -1.2 -1.2 2.4 2.4 1.2 1.2 2.4 0 2.4 -1.2 1.2 -1.2 1.2 0 2.4 1.2 -1.2 2.4 1.2 -1.2 2.4 -2.4 1.2 -3.6 1.2 2.4 2.4 2.4 1.2 -1.2 1.2 1.2 -2.4 -2.4 1.2 -2.4 1.2 0 1.2 3.6 2.4 2.4 1.2 1.2 1.2 -2.4 2.4 -1.2 -1.2 0 1.2 1.2 2.4 2.4 1.2 -3.6 1.2 -2.4 2.4 0 1.2 1.2 1.2 0 -2.4 2.4 1.2 -3.6 1.2 1.2 1.2 -2.4 2.4 3.6 1.2 1.2 4.8 0 1.2 -1.2 -2.4 1.2 1.2 1.2 1.2 0 2.4 -1.2 1.2 -1.2 1.2 -3.6 2.4 0 1.2 3.6 -1.2 0 1.2 -2.4 2.4 -2.4 1.2 -3.6 1.2 1.2 2.4 1.2 1.2 1.2 1.2 0 -2.4 -4.8 1.2 1.2 1.2 0 2.4 2.4 1.2 0 1.2 -2.4 2.4 1.2 1.2 -2.4 -1.2 4.8 1.2 0 2.4 3.6 1.2 2.4 1.2 0 2.4 3.6 1.2 4.8 1.2 7.2 -2.4 1.2 1.2 1.2 1.2 -1.2 2.4 0 1.2 3.6 1.2 3.6 2.4 2.4 1.2 -1.2 -1.2 0 1.2 -4.8 2.4 3.6 1.2 2.4 1.2 1.2 2.4 -4.8 1.2 2.4 1.2 -1.2 -2.4 1.2 1.2 2.4 S -3707.89 4920.95 1.2 1.2 2.4 0 1.2 -3.6 1.2 0 2.4 1.2 1.2 3.6 2.4 0 -2.4 -1.2 1.2 -3.6 1.2 1.2 2.4 2.4 1.2 0 1.2 -3.6 2.4 -1.2 1.2 -2.4 -1.2 2.4 2.4 0 1.2 2.4 1.2 -1.2 2.4 -2.4 1.2 -1.2 1.2 -1.2 1.2 3.6 -2.4 -1.2 1.2 -1.2 1.2 -1.2 2.4 -2.4 1.2 0 1.2 2.4 4.8 0 2.4 -2.4 -1.2 1.2 1.2 1.2 2.4 -1.2 1.2 1.2 1.2 -3.6 1.2 0 2.4 2.4 1.2 1.2 -3.59 0 1.2 -3.6 1.2 -1.2 2.4 1.2 1.2 2.4 1.2 -1.2 2.4 0 1.2 -1.2 -1.2 -1.2 2.4 1.2 1.2 1.2 1.2 0 1.2 1.2 2.4 -1.2 1.2 -1.2 1.2 1.2 -2.4 2.4 1.2 1.2 1.2 -3.6 2.4 2.4 1.2 -4.8 1.2 1.2 2.4 3.6 1.2 -1.2 -1.2 -2.4 2.4 0 1.2 -1.2 1.2 1.2 1.2 0 2.4 2.4 1.2 0 1.2 -2.4 -2.4 0 1.2 1.2 1.2 2.4 3.6 0 1.2 -3.6 2.4 0 1.2 2.4 1.2 1.2 -2.4 1.2 1.2 0 1.2 2.4 1.2 -3.6 2.4 2.4 1.2 6 1.2 4.8 2.4 0 -1.2 -1.2 1.2 -1.2 2.4 2.4 1.2 4.8 1.2 1.2 2.4 1.2 2.4 0 2.4 1.2 -1.2 3.6 1.2 -1.2 1.2 0 2.4 -3.6 1.2 -2.4 1.2 -1.2 2.4 2.4 1.2 2.4 -1.2 -4.8 2.4 0 1.2 -2.4 1.2 3.6 2.4 4.8 1.2 2.4 1.2 -4.8 2.4 -7.2 -1.2 -4.8 1.2 -2.4 1.2 -3.6 2.4 -1.2 1.2 -2.4 1.2 -2.4 2.4 1.2 1.2 1.2 S -3904.68 4912.55 1.2 -2.4 2.4 0 1.2 -1.2 1.2 -1.2 2.4 -1.2 1.2 1.2 1.2 1.2 -2.4 3.6 1.2 -1.2 1.2 -2.4 1.2 -2.4 3.6 0 1.2 2.4 2.4 -1.2 1.2 -1.2 -1.2 -2.4 2.4 3.6 4.8 0 1.2 -1.2 1.2 -2.4 2.4 -2.4 1.2 -1.2 1.2 -7.2 -1.2 -9.6 2.4 -8.4 1.2 -2.4 1.2 -6 2.4 -3.6 1.2 7.2 1.2 20.4 2.4 30 -1.2 33.6 1.2 44.4 2.4 54 S -3963.48 5052.95 1.2 63.6 S -3964.68 5116.55 1.2 51.6 2.4 31.2 1.2 -6 1.2 -32.4 S -3970.68 5160.95 1.2 -75.6 S -3971.88 5085.35 2.4 -96 S -3974.28 4989.35 1.2 -72 S -3975.48 4917.35 1.2 -33.6 2.39 -6 1.2 10.8 1.2 9.6 2.4 4.8 1.2 0 1.2 -2.4 -2.4 -2.4 1.2 0 1.2 1.2 2.4 1.2 1.2 1.2 1.2 -1.2 1.2 -3.6 2.4 0 -1.2 2.4 1.2 1.2 2.4 0 1.2 -3.6 1.2 -2.4 2.4 2.4 1.2 0 1.2 -1.2 -2.4 1.2 1.2 -2.4 1.2 -2.4 2.4 1.2 1.2 1.2 1.2 3.6 1.2 -3.6 2.4 0 -1.2 -1.2 1.2 0 2.4 1.2 1.2 1.2 1.2 0 2.4 -1.2 1.2 -1.2 1.2 2.4 -2.4 1.2 1.2 2.4 1.2 0 2.4 -1.2 1.2 -2.4 1.2 1.2 1.2 3.6 3.6 0 -1.2 -1.2 2.4 -2.4 1.2 3.6 1.2 -4.8 2.4 3.6 1.2 1.2 1.2 -2.4 2.4 -2.4 -1.2 0 1.2 1.2 2.4 2.4 1.2 0 1.2 -2.4 1.2 -2.4 2.4 1.2 1.2 1.2 -1.2 2.4 2.4 -1.2 1.2 -1.2 1.2 -1.2 2.4 2.4 1.2 0 1.2 2.4 2.4 0 -1.2 1.2 1.2 -6 2.4 6 1.2 0 1.2 1.2 1.2 -3.6 2.4 -1.2 1.2 -4.8 -1.2 2.4 2.4 3.6 1.2 0 1.2 1.2 2.4 -3.6 1.2 -1.2 4.8 0 1.2 3.6 -2.4 -2.4 1.2 -2.4 1.2 3.6 1.2 2.4 2.4 -1.2 1.2 0 1.2 -3.6 2.4 -2.4 -1.2 6 1.2 1.2 2.4 2.4 1.2 -3.6 1.2 -2.4 2.4 1.2 1.2 2.4 1.2 2.4 -1.2 3.6 2.4 0 1.2 3.6 1.2 0 2.4 3.6 1.2 0 1.2 3.6 2.4 2.4 -1.2 0 1.2 -2.4 2.4 3.6 1.2 2.4 1.2 -2.4 3.6 0 1.2 -2.4 1.2 0 -2.4 2.4 1.2 1.2 S -4172.27 4922.15 1.2 -1.2 2.4 -1.2 1.2 -1.2 1.2 0 2.4 2.4 1.2 0 1.2 -1.2 -2.4 -1.2 1.2 -2.4 1.2 1.2 2.4 2.4 1.2 1.2 1.2 -1.2 1.2 0 2.4 -2.4 -1.2 2.4 1.2 1.2 2.4 1.2 1.2 -1.2 1.2 -2.4 2.4 -4.8 1.2 1.2 1.2 4.8 -2.4 3.6 1.2 0 1.2 -1.2 2.4 -2.4 1.2 0 1.19 3.6 1.2 1.2 3.6 0 -1.2 -3.6 2.4 3.6 1.2 4.79 1.2 2.4 2.4 0 1.2 -3.59 1.2 0 2.4 1.19 -1.2 6 1.2 -1.2 2.4 -4.8 1.2 -2.39 1.2 5.99 1.2 4.8 2.4 -1.2 1.2 -2.4 -1.2 -1.2 2.4 -2.4 1.2 0 1.2 -1.2 2.4 -1.19 1.2 -4.8 1.2 -3.6 2.4 -6 -1.2 -1.2 1.2 0 2.4 1.2 1.2 -3.6 1.2 -2.4 1.2 -1.2 2.4 -3.6 1.2 -1.2 -1.2 1.2 2.4 2.4 1.2 -1.2 1.2 -4.8 2.4 -2.4 1.2 2.4 1.2 1.2 2.4 1.2 -1.2 0 1.2 -1.2 2.4 -2.4 1.2 4.8 1.2 2.4 1.2 -1.2 2.4 0 1.2 1.2 -1.2 -3.6 2.4 3.6 1.2 0 1.2 2.4 2.4 -3.6 1.2 1.2 1.2 -6 2.4 2.4 -1.2 -2.4 1.2 -6 2.4 -6 1.2 -10.8 1.2 -9.6 1.2 0 2.4 -7.2 1.2 -4.8 -1.2 7.2 2.4 21.6 1.2 31.2 1.2 38.4 2.4 37.2 1.2 52.8 1.2 56.4 2.4 51.6 -1.2 25.2 1.2 6 2.4 -31.2 S -4341.46 5151.35 1.2 -75.6 S -4342.66 5075.75 1.2 -97.2 S -4343.86 4978.55 1.2 -69.6 S -4345.06 4908.95 2.4 -33.6 1.2 2.4 1.2 13.2 2.4 8.4 1.2 2.4 1.2 -4.8 2.4 -3.6 -1.2 4.8 1.2 -2.4 2.4 3.6 1.2 -2.4 1.2 -2.4 2.4 -1.2 1.2 2.4 1.2 2.4 -1.2 -1.2 2.4 0 1.2 -2.4 1.2 -1.2 3.6 0 1.2 2.4 2.4 0 1.2 -1.2 -1.2 -1.2 2.4 2.4 1.2 1.2 1.2 -1.2 2.4 1.2 1.2 -4.8 1.2 -2.4 1.2 3.6 -2.4 -1.2 1.2 3.6 3.6 0 1.2 -2.4 1.2 0 2.4 2.4 1.2 3.6 1.2 -1.2 -2.4 -3.6 1.2 -1.2 1.2 2.4 2.4 -2.4 1.2 2.4 1.2 -1.2 1.2 -2.4 2.4 -1.2 -1.2 2.4 1.2 3.6 2.4 0 1.2 1.2 1.2 -4.8 2.4 0 1.2 1.2 1.2 1.2 -2.4 2.4 1.2 1.2 1.2 -4.8 2.4 0 1.2 2.4 1.2 1.2 1.2 1.2 2.4 -2.4 -1.2 -1.2 1.2 -2.4 2.4 0 1.2 3.6 1.2 1.2 2.39 -3.6 1.2 1.2 1.2 -2.4 -2.4 1.2 1.2 2.4 1.2 1.2 2.4 -1.2 1.2 -2.4 1.2 -1.2 1.2 0 2.4 2.4 -1.2 2.4 1.2 0 2.4 -1.2 1.2 -3.6 1.2 1.2 2.4 -1.2 1.2 2.4 1.2 -2.4 -2.4 0 1.2 -4.8 1.2 1.2 2.4 3.6 3.6 0 2.4 -2.4 1.2 2.4 1.2 2.4 -2.4 2.4 1.2 -1.2 1.2 -2.4 2.4 -1.2 1.2 2.4 1.2 4.8 3.6 0 1.2 -3.6 -2.4 3.6 1.2 3.6 1.2 2.4 1.2 1.2 2.4 1.2 1.2 -1.2 1.2 -3.6 2.4 4.8 -1.2 2.39 1.2 2.4 2.4 1.2 1.2 0 1.2 -2.4 2.4 1.2 1.2 0 1.2 1.2 -2.4 0 S -4543.05 4914.94 1.2 -4.79 1.2 1.19 1.2 -4.79 2.4 4.79 1.2 2.4 1.2 0 2.4 1.2 -1.2 -1.2 1.2 0 2.4 2.4 1.2 -1.2 1.2 0 2.4 -1.2 1.2 -1.2 1.2 -1.2 -2.4 2.4 1.2 1.2 1.2 -1.2 1.2 -2.4 2.4 0 1.2 -1.19 1.2 3.59 3.6 0 -1.2 -3.59 2.4 -2.4 1.2 1.2 1.2 1.2 2.4 -3.6 1.2 -2.4 1.2 -2.4 2.4 -1.2 -1.2 6 1.2 1.2 1.2 0 2.4 -1.2 1.2 -3.6 1.2 -1.2 2.4 1.2 1.2 0 -1.2 3.6 2.4 -2.4 1.2 -2.4 1.2 3.6 2.4 -2.4 1.2 2.4 1.2 2.4 2.4 -1.2 -1.2 -2.4 1.2 -3.6 1.2 4.8 3.6 0 1.2 1.2 2.4 -1.2 1.2 -1.2 1.2 -1.2 -2.4 3.6 1.2 -2.4 1.2 1.2 2.4 -2.4 1.2 -2.4 1.2 3.6 2.4 0 1.2 1.2 -1.2 -1.2 1.2 -1.2 2.4 -7.2 1.2 1.2 1.2 6 2.4 0 1.2 -2.4 1.2 0 -2.4 -4.8 1.2 3.6 1.2 1.2 2.4 4.79 1.2 2.4 1.2 -1.2 2.4 -3.59 1.2 0 -1.2 2.39 1.2 0 2.4 3.6 1.2 -5.99 1.2 -1.2 2.4 0 1.2 1.2 1.2 0 -2.4 -1.2 1.2 -2.4 1.2 -2.4 2.4 0 1.2 4.8 1.2 -1.2 2.4 -1.2 1.2 1.2 -1.2 -1.2 1.19 2.4 2.4 2.4 1.2 0 1.2 -1.2 2.4 -1.2 1.2 -1.2 1.2 2.4 -2.4 2.39 1.2 2.4 1.2 -1.2 2.4 1.2 1.2 -2.4 1.2 1.2 2.4 -1.2 1.2 -2.39 -1.2 2.39 1.2 -2.39 2.4 -2.4 1.2 2.4 1.2 0 2.4 1.2 1.2 -1.2 1.2 -3.6 -2.4 0 1.2 1.2 1.2 4.79 2.4 -1.19 S -4739.84 4904.14 1.2 -1.2 1.2 -1.2 1.2 -2.4 2.4 1.2 1.2 1.2 1.2 1.2 2.4 1.2 -1.2 -1.2 1.2 0 2.4 2.4 1.2 2.4 1.2 -1.2 2.4 0 1.2 -2.4 1.2 -1.2 -2.4 0 1.2 -1.2 1.2 4.8 1.2 -2.4 2.4 1.2 1.2 -2.4 1.2 1.2 2.4 -1.2 -1.2 3.6 1.2 2.4 2.4 1.2 1.2 0 1.2 3.6 2.4 1.2 1.2 1.2 1.2 -1.2 -2.4 2.4 1.2 -2.4 1.2 4.8 1.2 2.4 2.4 2.4 1.2 2.4 1.2 0 2.4 -1.2 -1.2 -1.2 1.2 2.4 2.4 0 1.2 -1.2 1.2 -4.8 2.4 -2.4 1.2 2.4 1.2 2.4 -2.4 3.6 1.2 -4.8 1.2 -3.6 1.2 -6 2.4 3.6 1.2 1.2 1.2 6 2.4 1.2 -1.2 -1.2 1.2 -3.6 2.4 -3.6 1.2 -2.4 1.2 0 2.4 -1.2 1.2 -7.2 1.2 -4.8 -2.4 1.2 2.4 0 1.2 -1.2 3.6 0 1.2 -2.4 2.4 4.8 1.2 -3.6 1.2 0 -2.4 -6 1.2 -3.59 1.2 3.59 2.4 0 1.2 3.6 1.2 1.2 2.4 -4.8 1.2 -2.39 -1.2 2.39 1.2 1.2 3.6 0 1.2 -2.39 2.4 -4.8 1.2 -2.4 1.2 -3.6 2.4 -8.4 -1.2 1.2 1.2 -7.2 2.4 -12 1.2 -1.2 1.2 12 2.4 24 1.2 25.2 1.2 26.4 -1.2 38.4 2.4 55.2 S -4897.04 5034.95 1.2 60 S -4898.24 5094.94 1.2 51.6 2.4 30 1.2 8.4 1.2 -21.6 2.4 -51.6 S -4906.64 5111.74 1.2 -75.6 S -4907.84 5036.14 1.2 -67.2 S -4909.04 4968.94 2.4 -49.2 1.2 -31.2 1.19 -16.8 2.4 -12 1.2 3.6 1.2 8.4 1.2 7.2 -2.4 3.6 1.2 0 1.2 3.6 2.4 3.6 1.2 2.4 1.2 0 2.4 -1.2 1.2 -1.2 -1.2 -1.2 2.4 1.2 1.2 -2.4 1.2 0 2.4 -2.4 1.2 -2.4 1.2 0 1.2 4.8 -3.6 0 1.2 -3.6 2.4 0 1.2 1.2 1.2 3.6 2.4 -1.2 1.2 0 1.2 1.2 -2.4 -4.8 1.2 0 1.2 3.6 2.4 -1.2 1.2 0 1.2 -2.4 1.2 0 2.4 2.4 -1.2 1.2 1.2 1.2 2.4 -1.2 1.2 0 1.2 -2.4 2.4 4.8 1.2 -2.4 1.2 1.2 -2.4 -1.2 1.2 -2.4 1.2 0 2.4 2.4 1.2 0 1.2 3.6 1.2 -2.4 2.4 -1.2 -1.2 -6 1.2 2.4 2.4 0 1.2 3.6 1.2 0 2.4 -2.4 1.2 0 1.2 1.2 -2.4 1.2 1.2 3.6 1.2 0 2.4 -2.4 1.2 0 1.2 1.2 1.2 3.6 2.4 0 -1.2 -2.4 1.2 0 2.4 -2.4 1.2 -1.2 1.2 6 4.8 0 2.4 -6 1.2 3.6 -1.2 1.2 2.4 -1.2 1.2 -3.6 1.2 -3.6 1.2 -4.8 2.4 1.2 1.2 2.4 1.2 -1.2 -2.4 -1.2 1.2 -1.2 1.2 -4.8 2.4 -1.2 1.2 3.6 1.2 -3.6 2.4 -1.2 1.2 1.2 -1.2 -4.8 2.4 3.6 1.2 2.4 1.2 -1.2 1.2 1.2 2.4 -2.4 1.2 0 1.2 1.2 -2.4 2.4 1.2 4.8 1.2 0 2.4 -2.4 1.2 1.2 1.2 6 2.4 2.4 1.2 1.2 -1.2 3.6 2.4 0 1.2 1.2 1.2 2.4 1.2 2.4 2.4 6 1.2 1.2 1.2 -1.2 -2.4 1.2 1.2 2.4 1.2 2.4 S -5105.83 4910.14 2.4 1.2 1.2 3.6 1.2 -2.4 2.4 1.2 1.2 1.2 1.2 1.2 2.4 -1.2 -1.2 0 1.2 -1.2 1.2 -3.6 2.4 3.6 2.4 0 2.4 -1.2 1.2 -1.2 3.6 0 -1.2 2.4 3.6 0 1.2 -2.4 1.2 -1.2 2.4 1.2 1.2 0 1.2 2.4 1.2 -1.2 -2.4 -2.4 1.2 -1.2 1.2 1.2 2.4 3.6 1.2 -1.2 1.2 0 2.4 -3.6 1.2 0 -1.2 2.4 2.4 0 1.19 1.2 1.2 0 2.4 -1.2 1.2 -6 1.2 1.2 1.2 0 -2.4 2.4 1.2 -2.4 1.2 -2.4 3.6 0 1.2 2.4 2.4 2.4 1.2 0 1.2 -2.4 -2.4 -2.4 1.2 3.6 1.2 1.2 2.4 1.2 1.2 -1.2 1.2 -2.4 1.2 -1.2 2.4 0 -1.2 2.4 1.2 1.2 2.4 1.2 1.2 -7.2 1.2 1.2 2.4 2.4 1.2 2.4 1.2 -2.4 -2.4 -1.2 1.2 -2.4 1.2 -4.8 2.4 2.4 1.2 6 1.2 0 1.2 -1.2 2.4 -1.2 -1.2 -2.4 1.2 1.2 2.4 3.6 1.2 0 1.2 -1.2 2.4 -2.4 1.2 0 1.2 2.4 -2.4 -1.2 1.2 3.6 1.2 -1.2 2.4 -2.4 2.4 0 1.2 3.6 2.4 0 1.2 -1.2 -1.2 -4.8 2.4 -1.2 1.2 4.8 1.2 4.8 2.4 2.4 1.2 1.2 1.2 3.6 2.4 -2.4 -1.2 2.4 1.2 -1.2 2.4 3.6 1.2 2.4 1.2 3.6 1.2 -3.6 2.4 2.4 1.2 1.2 -1.2 2.4 2.4 1.2 1.2 -2.4 1.2 -2.4 2.4 1.2 1.2 0 1.2 2.4 2.4 -2.4 -1.2 -4.8 1.2 0 2.4 1.2 1.2 -2.4 1.2 1.2 1.2 6 2.4 2.4 1.2 0 -1.2 -3.6 S -5302.62 4925.74 2.4 -6 1.2 -1.2 1.2 -2.4 2.4 -3.6 1.2 -3.6 1.2 -4.8 2.4 1.2 -1.2 -1.2 1.2 0 2.4 -4.8 1.2 -2.4 1.2 1.2 1.2 4.8 2.4 2.4 1.2 -2.4 -1.2 -1.2 2.4 -1.2 1.2 0 1.2 1.2 2.4 1.2 1.2 -1.2 1.2 -1.2 2.4 -3.6 -1.2 0 1.2 4.8 1.2 1.2 2.4 -4.8 1.2 -1.2 1.2 -2.4 2.4 0 1.2 2.4 -1.2 1.2 2.4 -3.6 1.2 -6 1.2 -9.6 2.4 -7.2 1.2 -3.6 1.2 -3.6 2.4 -7.2 -1.2 -4.8 1.2 12 1.2 27.6 2.4 34.8 1.2 33.6 1.2 48 2.4 56.4 1.2 55.2 -1.2 48 2.4 18 1.2 -13.2 1.2 -56.4 S -5383.02 5116.54 2.4 -90 S -5385.42 5026.54 1.2 -88.8 S -5386.62 4937.74 1.2 -55.2 2.4 -16.8 1.2 7.2 1.2 6 1.2 7.2 2.4 4.8 2.39 0 -2.4 2.4 1.2 1.2 1.2 -1.2 2.4 -4.8 1.2 -2.4 1.2 4.8 4.8 0 2.4 -3.6 -1.2 2.4 1.2 2.4 1.2 1.2 2.4 -3.6 1.2 2.4 1.2 -2.4 2.4 3.6 1.2 1.2 -1.2 2.4 2.4 -3.6 4.8 0 1.2 1.2 1.2 -1.2 3.6 0 1.2 -1.2 1.2 2.4 -2.4 -2.4 1.2 1.2 1.2 1.2 2.4 -1.2 1.2 -1.2 1.2 -1.2 2.4 2.4 1.2 0 -1.2 1.2 2.4 -1.2 1.2 -2.4 1.2 2.4 2.4 -2.4 1.2 1.2 1.2 1.2 1.2 0 -2.4 -1.2 1.2 1.2 1.2 0 2.4 1.2 1.2 -1.2 3.6 0 1.2 1.2 1.2 1.2 -2.4 -1.2 1.2 1.2 1.2 -1.2 2.4 -4.8 1.2 1.2 1.2 2.4 3.6 0 1.2 -2.4 -1.2 -1.2 2.4 2.4 1.2 2.4 1.2 -1.2 2.4 0 1.2 -2.4 1.2 -4.8 2.4 4.8 -1.2 0 1.2 2.4 2.4 0 1.2 -3.6 1.2 -2.4 1.2 1.2 2.4 3.6 1.2 0 -1.2 1.2 2.4 -2.4 1.2 -2.4 1.2 0 2.4 1.2 1.2 2.4 1.2 0 2.4 -2.4 -1.2 -2.4 1.2 1.2 2.4 1.2 1.2 3.6 1.2 -2.4 1.2 1.2 2.4 0 1.2 4.8 -1.2 3.6 2.4 2.4 1.2 2.4 3.6 0 1.2 3.6 1.2 3.6 2.4 2.4 1.2 -1.2 -1.2 0 2.4 -1.2 1.2 2.4 1.2 0 1.2 2.4 2.4 1.2 1.2 -1.2 1.2 0 -2.4 2.4 1.2 0 1.2 3.6 2.4 -2.4 1.2 0 S -5583.41 4920.94 1.2 -3.6 2.4 3.6 1.2 -1.2 1.2 2.4 2.4 -2.4 1.2 -2.4 1.2 -2.4 -1.2 2.4 2.4 2.4 1.2 0 1.2 -1.2 2.4 -2.4 1.2 -2.4 1.2 3.6 2.4 -1.2 -1.2 2.4 1.2 1.2 2.4 -4.8 1.2 -1.2 1.2 2.4 2.4 1.2 1.2 -2.4 1.2 1.2 -1.2 -1.2 2.4 -2.4 1.2 0 1.2 1.2 2.4 2.4 1.2 -2.4 1.2 -1.2 2.4 -4.8 -1.2 2.4 1.2 3.6 2.4 0 1.2 -2.4 1.2 0 2.4 -4.8 1.2 3.6 1.19 2.4 -1.2 0 2.4 -3.6 1.2 0 1.2 -4.8 2.4 3.6 1.2 4.8 1.2 1.2 2.4 -3.6 -1.2 -2.4 1.2 0 2.4 -2.4 1.2 4.8 1.2 0 2.4 -2.4 1.2 -2.4 1.2 -1.2 -1.2 2.4 2.4 2.4 1.2 0 1.2 -1.2 2.4 0 1.2 -1.2 1.2 2.4 2.4 0 -1.2 2.4 1.2 0 2.4 -2.4 1.2 -1.2 1.2 0 2.4 4.8 1.2 1.2 1.2 -1.2 -1.2 -3.6 2.4 0 1.2 3.6 1.2 -1.2 2.4 2.4 1.2 -1.2 1.2 0 2.4 -6 -1.2 2.4 1.2 3.6 2.4 1.2 1.2 -1.2 1.2 0 2.4 -4.8 1.2 2.4 1.2 2.4 -1.2 1.2 3.6 0 1.2 3.6 2.4 3.6 1.2 6 1.2 1.2 2.4 0 1.2 -1.2 -1.2 -1.2 2.4 4.8 1.2 3.6 1.2 -1.2 2.4 0 1.2 2.4 1.2 -1.2 1.2 0 -2.4 -1.2 1.2 0 1.2 -1.2 2.4 -2.4 1.2 -2.4 1.2 3.6 2.4 1.2 1.2 -2.4 -1.2 2.4 2.4 1.2 1.2 1.2 1.2 6 2.4 -6 1.2 -4.8 1.2 -3.6 1.2 -2.4 -2.4 -4.8 1.2 -2.4 1.2 -1.2 2.4 0 1.2 -2.4 S -5780.2 4912.54 1.2 -2.4 2.4 -4.8 1.2 0 1.2 3.6 3.6 0 1.2 -1.2 2.4 -2.4 -1.2 0 1.2 1.2 1.2 2.4 2.4 -2.4 1.2 -2.4 1.2 -3.6 2.4 4.8 1.2 1.2 -1.2 2.4 3.6 0 1.2 -4.8 2.4 0 1.2 2.4 1.2 -2.4 2.4 -9.6 1.2 -12 -1.2 -7.2 1.2 -4.8 2.4 -4.8 1.2 -4.8 1.2 10.8 2.4 22.8 1.2 32.4 1.2 42 -2.4 48 S -5834.2 5016.94 1.2 63.6 S -5835.4 5080.54 1.2 60 S -5836.6 5140.54 2.4 42 1.2 12 1.2 -30 S -5841.4 5164.54 2.4 -73.2 S -5843.8 5091.34 1.2 -102 S -5845 4989.34 1.2 -78 S -5846.2 4911.34 1.2 -33.6 2.4 -3.6 1.2 18 1.2 9.6 2.4 2.4 1.2 -2.4 1.2 -3.6 -2.4 -1.2 1.2 1.2 1.2 2.4 2.4 0 1.2 -1.2 1.2 -2.4 2.4 -2.4 1.2 2.4 -1.2 1.2 1.2 -1.2 2.4 2.4 1.2 -3.6 1.2 -2.4 2.39 0 1.2 2.4 1.2 1.2 -2.4 0 1.2 -1.2 1.2 -3.6 2.4 1.2 1.2 2.4 1.2 1.2 2.4 0 1.2 -2.4 -1.2 1.2 1.2 -1.2 2.4 3.6 1.2 1.2 1.2 -1.2 2.4 -1.2 1.2 -3.6 1.2 3.6 -2.4 1.2 1.2 1.2 1.2 -1.2 2.4 -3.6 1.2 0 1.2 2.4 2.4 2.4 1.2 1.2 -1.2 1.2 1.2 -4.8 2.4 -2.4 1.2 2.4 1.2 0 2.4 3.6 1.2 -1.2 1.2 1.2 -2.4 -1.2 1.2 0 1.2 1.2 2.4 3.6 1.2 -2.4 1.2 -3.6 1.2 1.2 2.4 1.2 -1.2 -2.4 1.2 3.6 2.4 -1.2 1.2 -1.2 1.2 -3.6 2.4 2.4 1.2 1.2 1.2 -1.2 -2.4 2.4 1.2 -1.2 1.2 -1.2 2.4 -1.2 1.2 0 1.2 3.6 1.2 -1.2 2.4 0 -1.2 -1.2 4.8 0 1.2 1.2 2.4 -3.6 1.2 -1.2 1.2 2.4 2.4 0 1.2 2.4 -1.2 0 2.4 -2.4 1.2 0 1.2 -1.2 1.2 4.8 2.4 1.2 1.2 0 1.2 -2.4 -2.4 -2.4 1.2 8.4 1.2 1.2 2.4 4.8 1.2 0 1.2 -1.2 2.4 1.2 1.2 0 -1.2 2.4 3.6 0 1.2 2.4 1.2 0 2.4 3.6 1.2 3.6 1.2 1.2 2.4 1.2 -1.2 -3.6 1.2 -2.4 2.4 4.8 1.2 2.4 1.2 1.2 2.4 -4.8 1.2 -2.4 1.2 -1.2 -2.4 0 1.2 1.2 1.2 2.4 S -6042.99 4923.34 3.6 0 1.2 -3.6 1.2 1.2 2.4 1.2 1.2 1.2 1.2 1.2 2.4 -2.4 -1.2 -3.6 1.2 1.2 2.4 0 1.2 2.4 1.2 1.2 2.4 -2.4 1.2 -3.6 1.2 3.6 -1.2 2.4 2.4 0 1.2 -1.2 1.2 -2.4 2.4 -3.6 1.2 1.2 1.2 1.2 2.4 -1.2 -1.2 -1.2 1.2 2.4 2.4 -3.6 1.2 2.4 1.2 1.2 2.4 -1.2 1.2 1.2 1.2 -4.8 -1.2 -1.2 2.4 1.2 1.2 0 1.2 2.4 2.4 -1.2 1.2 -1.2 1.2 -3.6 2.4 2.4 -1.2 2.4 1.2 -1.2 2.4 1.2 1.2 -1.2 1.2 -2.4 2.4 2.4 1.2 3.6 1.19 -1.2 -1.2 -1.2 2.4 -1.2 1.2 -2.4 1.2 2.4 2.4 0 1.2 1.2 1.2 0 2.4 -3.6 -1.2 1.2 1.2 0 2.4 1.2 1.2 1.2 1.2 -2.4 3.6 0 1.2 1.2 1.2 1.2 -2.4 3.6 1.2 1.2 1.2 -1.2 2.4 -3.6 1.2 -1.2 1.2 2.4 2.4 0 1.2 -2.4 -4.8 0 1.2 3.6 2.4 -1.2 1.2 1.2 1.2 -3.6 1.2 0 2.4 4.8 1.2 6 -1.2 6 2.4 -3.6 1.2 3.6 1.2 -2.4 2.4 6 1.2 0 1.2 1.2 2.4 1.2 -1.2 2.4 1.2 1.2 2.4 0 1.2 3.6 1.2 1.2 1.2 -1.2 2.4 -6 1.2 -2.4 -1.2 1.2 4.8 0 2.4 -1.2 1.2 -1.2 1.2 2.4 2.4 7.2 1.2 2.4 1.2 -3.6 -2.4 -12 1.2 -3.6 1.2 0 1.2 -3.6 2.4 -1.2 1.2 -2.4 1.2 -3.6 2.4 0 -1.2 -2.4 1.2 1.2 2.4 1.2 1.2 1.2 1.2 -1.2 2.4 -2.4 2.4 0 S -6239.78 4913.74 2.4 2.4 1.2 0 1.2 -1.2 1.2 -1.2 2.4 -2.4 1.2 1.2 3.6 0 -1.2 -1.2 1.2 -3.6 2.4 1.2 1.2 2.4 1.2 2.4 2.4 -1.2 1.2 -6 1.2 -6 -2.4 -6 1.2 -6 1.2 -4.8 1.2 -4.8 2.4 -9.6 1.2 -4.8 1.2 9.6 2.4 26.4 -1.2 31.2 1.2 32.4 2.4 44.4 S -6282.98 5008.54 1.2 61.2 S -6284.18 5069.74 1.2 63.6 S -6285.38 5133.34 2.4 37.2 1.2 10.8 1.2 -30 S -6290.18 5151.34 2.4 -64.8 S -6292.58 5086.54 1.2 -88.8 S -6293.78 4997.74 1.2 -74.4 S -6294.98 4923.34 1.2 -36 2.4 -7.2 1.2 10.8 1.2 6 2.4 4.8 1.2 2.4 1.2 0 -2.4 2.4 1.2 -1.2 1.2 0 2.4 -2.4 1.2 3.6 1.2 1.2 2.4 0 1.2 1.2 -1.2 0 1.2 -4.8 2.4 2.4 1.2 1.2 1.2 1.2 2.4 -1.2 1.2 -2.4 1.2 -3.6 -2.4 1.2 1.2 -1.2 1.2 3.6 2.4 1.2 1.2 -4.8 1.2 1.2 2.4 2.4 1.2 -1.2 -1.2 1.2 1.2 -1.2 2.4 1.2 1.2 -2.4 1.2 6 2.4 0 1.2 1.2 1.2 -2.4 -2.39 -2.4 1.2 0 1.2 1.2 2.4 2.4 1.2 -2.4 1.2 -2.4 2.4 0 1.2 -3.6 -1.2 3.6 1.2 1.2 2.4 1.2 1.2 -4.8 1.2 0 2.4 -1.2 1.2 1.2 1.2 2.4 -2.4 2.4 2.4 0 2.4 1.2 1.2 1.2 1.2 2.4 2.4 -2.4 1.2 -2.4 1.2 -1.2 -1.2 0 2.4 -1.2 1.2 0 1.2 -1.2 2.4 2.4 1.2 -2.4 1.2 -1.2 2.4 4.8 -1.2 0 1.2 3.6 2.4 -4.8 1.2 1.2 1.2 -2.4 2.4 1.2 1.2 2.4 1.2 1.2 -1.2 -3.6 2.4 -3.6 1.2 -3.6 1.2 -1.2 2.4 7.2 1.2 -1.2 1.2 1.2 2.4 -3.6 -1.2 -3.6 1.2 3.6 2.4 0 1.2 4.8 1.2 1.2 2.4 -4.8 1.2 0 1.2 1.2 -1.2 3.6 2.4 3.6 2.4 0 2.4 -1.2 1.2 4.8 1.2 0 2.4 6 1.2 -1.2 -1.2 0 2.4 -2.4 1.2 4.8 1.2 1.2 2.4 3.6 1.2 0 1.2 -2.4 1.2 1.2 -2.4 2.4 1.2 1.2 1.2 1.2 2.4 0 1.2 -2.4 1.2 -2.4 2.4 1.2 1.2 1.2 -1.2 3.6 2.4 -2.4 1.2 -1.2 1.2 -4.8 S -6491.77 4922.14 2.4 0 1.2 2.4 1.2 -1.2 1.2 -1.2 2.4 -1.2 1.2 -2.4 1.2 2.4 -2.4 1.2 1.2 1.2 1.2 0 2.4 -2.4 1.2 -2.4 1.2 2.4 2.4 -1.2 1.2 2.4 -1.2 -3.6 2.4 2.4 1.2 -2.4 1.2 2.4 1.2 -1.2 2.4 2.4 1.2 -1.2 1.2 -3.6 -2.4 -2.4 1.2 1.2 1.2 0 2.4 -1.2 1.2 -1.2 1.2 -1.2 2.4 1.2 1.2 0 -1.2 2.4 1.2 -2.4 2.4 0 1.2 -1.2 1.2 -1.2 2.4 2.4 1.2 -1.2 1.2 1.2 -3.6 0 1.2 -2.4 2.4 2.4 1.2 1.2 1.2 -1.2 2.4 0 1.2 -1.2 1.2 -1.2 -1.2 0 2.4 1.2 1.2 2.4 1.2 0 2.4 1.2 1.2 -2.4 1.2 2.4 2.4 -2.4 -1.2 0 1.2 1.2 2.4 -1.2 1.2 -1.2 1.2 1.2 2.4 2.4 1.2 1.2 1.2 -1.2 -1.2 -2.4 2.4 -2.4 1.19 0 1.2 3.6 2.4 -1.2 1.2 4.8 1.2 -4.8 2.4 -2.4 -1.2 1.2 1.2 6 2.4 2.4 1.2 4.8 1.2 0 2.4 -1.2 1.2 1.2 1.2 2.4 -1.2 4.8 2.4 1.2 1.2 0 1.2 -2.4 2.4 2.4 1.2 3.6 1.2 0 2.4 -1.2 -1.2 0 1.2 -3.6 2.4 -2.4 1.2 2.4 1.2 1.2 2.4 -2.4 1.2 -3.6 1.2 -3.6 -1.2 1.2 2.4 3.6 1.2 6 1.2 0 2.4 -6 1.2 -8.4 1.2 1.2 2.4 0 -1.2 -4.8 1.2 -3.6 2.4 -2.4 1.2 -3.6 1.2 0 2.4 3.6 1.2 2.4 2.4 0 -2.4 -3.6 1.2 0 1.2 1.2 2.4 0 1.2 -2.4 1.2 -2.4 2.4 -1.2 2.4 0 -2.4 1.2 1.2 -1.2 1.2 -3.6 S -6688.56 4901.74 2.4 1.2 1.2 2.4 1.2 -1.2 1.2 2.4 2.4 0 1.2 -1.2 1.2 -3.6 -2.4 -3.6 1.2 -4.8 1.2 -4.8 2.4 -3.6 1.2 -7.2 1.2 -10.8 2.4 -4.8 1.2 10.8 -1.2 22.8 2.4 30 1.2 32.4 1.2 45.6 S -6718.56 5003.74 1.2 62.4 S -6719.76 5066.14 2.4 57.6 S -6722.16 5123.74 1.2 37.2 1.2 13.2 2.4 -26.4 S -6726.96 5147.74 1.2 -69.6 S -6728.16 5078.14 1.2 -86.4 S -6729.36 4991.74 2.4 -64.8 S -6731.76 4926.94 1.2 -36 1.2 -13.2 2.4 1.2 1.2 7.2 1.2 8.4 2.4 4.8 1.2 1.2 -1.2 -1.2 1.2 0 2.4 -3.6 1.2 -2.4 1.2 4.8 2.4 -1.2 4.8 0 1.2 3.6 -1.2 0 2.4 2.4 1.2 -4.8 1.2 0 2.4 -1.2 1.2 3.6 1.2 0 1.2 1.2 -2.4 -2.4 1.2 -2.4 1.2 -1.2 2.4 0 1.2 1.2 1.2 0 2.4 -2.4 1.2 1.2 -1.2 -2.4 2.4 0 S -1004 4172 53 53 /1O -$C -2>c:/pV4<.,9?OQhQ?\(qsWsTp\1T[gT15?mnNe`pA`n!g\4e:s0o&4g]+j/6%fXX0Mh~> -, -1045 4172 45 54 /4O -$C -,RFS`J`J.=5f;&o'7+OJgYKV_mf2bUlhts0/&^MhlJ2]_k1^]~> -, -6819 4172 1O , -6860 4172 4O , -1119.6 4235.75 10.8 0 1.2 -3.6 1.2 0 2.4 -1.2 1.2 0 1.2 2.4 2.4 1.2 -1.2 0 1.2 1.2 1.2 2.4 2.4 1.2 1.2 0 1.2 1.2 2.4 0 1.2 -2.4 -1.2 -4.8 2.4 -1.2 1.2 -1.2 1.2 3.6 2.4 -2.4 1.2 0 1.2 -2.4 2.4 -1.2 -1.2 1.2 1.2 -1.2 1.2 -3.6 2.4 -2.4 1.2 -4.79 1.2 2.4 2.4 5.99 1.2 2.4 -1.2 -2.4 2.4 -3.6 1.2 -2.39 1.2 1.19 2.4 0 1.2 2.4 1.2 0 2.4 -2.4 -1.2 -2.39 1.2 0 1.2 1.2 2.4 1.19 1.2 -2.39 1.2 -1.2 2.4 -1.2 1.2 0 -1.2 3.6 2.4 3.59 1.2 -2.4 1.2 -1.19 2.4 -6 1.2 -8.4 1.2 -1.2 2.4 -1.2 -1.2 -3.6 1.2 -7.2 1.2 -10.8 2.4 2.4 1.2 13.2 1.2 22.8 2.4 21.6 1.2 20.4 -1.2 15.6 2.4 17.99 1.2 25.2 1.2 27.6 2.4 22.8 1.2 10.8 1.2 -24 S -1238.4 4358.15 2.39 -60 S -1240.79 4298.15 1.2 -67.2 S -1241.99 4230.95 1.2 -32.4 1.2 -4.79 2.4 7.2 1.2 8.39 1.2 -1.19 2.4 5.99 1.2 2.4 -1.2 0 2.4 -7.2 1.2 0 1.2 4.8 2.4 -1.2 1.2 -1.2 1.2 1.2 2.4 -4.8 -2.4 0 1.2 3.6 2.4 2.4 1.2 1.2 1.2 -4.8 2.4 -4.8 1.2 2.4 1.2 0 -2.4 2.4 1.2 0 1.2 -4.8 2.4 1.2 1.2 2.4 1.2 3.6 2.4 -1.2 2.4 0 -1.2 -4.8 2.4 1.2 1.2 1.2 1.2 2.4 2.4 -1.2 1.2 -3.6 1.2 -2.4 2.4 1.2 -1.2 2.4 1.2 3.6 2.4 0 1.2 -3.6 1.2 -2.4 2.4 4.8 1.2 -6 1.2 3.6 -1.2 1.2 2.4 -1.2 1.2 -4.8 1.2 3.6 2.4 2.4 1.2 -1.2 1.2 -3.6 2.4 -3.59 -1.2 2.39 1.2 -1.19 2.4 2.39 1.2 3.6 1.2 -4.8 2.4 1.2 1.2 -2.39 1.2 1.19 -1.2 4.8 2.4 0 1.2 -3.6 1.2 -3.59 2.4 -1.2 1.2 0 1.2 4.79 2.4 0 -1.2 -3.59 1.2 -1.2 2.4 -2.4 1.2 -2.4 1.2 1.2 3.6 0 1.2 -1.2 1.2 -3.6 -2.4 0 1.2 -1.2 1.2 0 2.4 -3.6 1.2 -1.2 1.2 -2.4 2.4 0 1.2 -1.2 -1.2 2.4 2.4 -2.4 1.2 -2.4 7.2 0 2.4 -2.4 1.2 -1.2 1.2 1.2 2.4 2.4 -1.2 1.2 1.2 0 2.4 3.6 1.2 0 1.2 3.6 2.4 1.2 1.2 6 1.2 1.2 -2.4 -2.4 1.2 0 1.2 3.6 1.2 2.4 2.4 5.99 1.2 1.2 3.6 0 1.2 2.4 -1.2 4.8 2.4 3.6 1.2 -1.2 1.2 -2.4 2.4 0 1.2 1.2 S -1438.79 4215.35 1.2 2.4 2.4 1.2 1.2 -4.8 1.2 2.4 1.2 -6 2.4 1.2 1.2 2.4 -1.2 0 2.4 2.4 1.2 -1.2 1.2 -1.2 2.4 -2.4 1.2 3.6 1.2 0 2.4 1.2 -1.2 -3.6 1.2 -2.4 2.4 2.4 1.2 0 1.2 1.2 1.2 0 2.4 -4.8 1.2 1.2 -1.2 -2.4 2.4 4.8 1.2 3.6 1.2 0 2.4 -4.8 1.2 -3.6 1.19 -2.4 2.4 1.2 -1.2 0 1.2 1.2 2.4 -1.2 1.2 -4.79 1.2 3.59 1.2 1.2 2.4 2.4 1.2 -6 -1.2 -2.39 2.4 -1.2 1.2 2.4 1.2 1.19 2.4 2.4 1.2 -1.2 1.2 1.2 2.4 -3.59 -1.2 -1.2 1.2 2.39 2.4 4.8 1.2 -2.4 1.2 0 1.2 -5.99 2.4 0 1.2 2.4 -1.2 -1.2 2.4 -1.2 2.4 0 2.4 2.4 1.2 2.39 1.2 -2.39 2.4 -2.4 1.2 -1.2 -1.2 1.2 2.4 0 1.2 -1.2 1.2 3.6 1.2 -1.2 2.4 0 1.2 -2.4 1.2 2.4 -2.4 -1.2 1.2 3.59 1.2 0 2.4 -1.19 1.2 -1.2 1.2 -1.2 2.4 1.2 2.4 0 -2.4 -1.2 2.4 0 1.2 3.59 2.4 2.4 1.2 -3.59 1.2 0 2.4 -1.2 1.2 -3.6 -1.2 1.2 2.4 1.2 1.2 0 1.2 -1.2 2.4 1.2 1.2 -1.2 1.2 2.4 2.4 4.79 -1.2 0 1.2 1.2 1.2 -2.4 2.4 1.2 1.2 3.6 1.2 2.4 2.4 -2.4 1.2 1.2 -1.2 -4.8 2.4 0 1.2 6 1.2 -1.2 2.4 0 1.2 -1.2 1.2 -1.2 2.4 0 -1.2 2.4 2.4 0 2.4 -3.6 1.2 -3.6 1.2 1.2 2.4 -1.2 1.2 0 1.2 -2.39 -2.4 0 1.2 -1.2 S -1635.58 4199.76 1.2 1.2 2.4 1.2 1.2 2.39 1.2 -3.59 2.4 -1.2 1.2 -4.8 1.2 0 -1.2 -1.2 2.4 6 1.2 -1.2 1.2 -1.2 2.4 -1.2 1.2 1.2 1.2 0 2.4 2.4 -1.2 -1.2 1.2 -2.4 2.4 0 1.2 -1.2 1.2 4.8 2.4 0 1.2 -2.4 1.2 -3.6 -1.2 -4.8 2.4 -2.4 1.2 -2.4 1.2 -2.4 2.4 -6 1.2 -7.2 1.2 1.2 2.4 10.8 -1.2 22.8 1.2 28.8 2.4 21.6 1.2 10.8 1.2 11.99 2.4 16.8 1.2 25.2 1.2 25.2 -1.2 19.2 2.4 -2.4 1.2 -28.8 S -1701.58 4331.75 1.2 -57.6 S -1702.78 4274.15 2.4 -61.2 S -1705.18 4212.95 1.2 -41.99 1.19 -22.8 2.4 -4.8 1.2 4.8 1.2 12 2.4 11.99 1.2 7.2 -1.2 3.6 2.4 2.4 1.2 -2.4 1.2 0 1.2 3.6 2.4 -1.2 2.4 0 2.4 -1.2 -1.2 3.6 3.6 0 1.2 1.2 1.2 -3.6 2.4 -2.4 1.2 1.2 1.2 3.6 1.2 2.4 -2.4 0 1.2 -2.4 1.2 -4.8 2.4 1.2 1.2 1.2 1.2 3.6 2.4 1.2 1.2 -2.4 -1.2 -1.2 2.4 0 1.2 2.4 1.2 1.2 2.4 -1.2 1.2 0 1.2 -2.4 1.2 2.4 -2.4 1.2 2.4 0 2.4 -1.2 1.2 -3.6 1.2 0 2.4 4.8 1.2 0 1.2 2.4 -2.4 -4.8 1.2 0 1.2 -1.2 2.4 2.4 1.2 1.2 1.2 -2.4 1.2 -2.4 2.4 1.2 -1.2 0 1.2 1.2 3.6 0 1.2 -2.4 2.4 -2.4 1.2 0 1.2 4.8 2.4 0 -1.2 -2.4 1.2 -1.2 2.4 -4.8 1.2 0 1.2 1.2 1.2 3.6 2.4 -4.8 1.2 -1.2 -1.2 0 2.4 -3.6 1.2 1.2 1.2 1.2 2.4 -4.79 1.2 -1.2 1.2 -3.6 2.4 -1.2 -1.2 3.6 1.2 -1.2 2.4 -2.4 1.2 -4.8 1.2 -1.2 1.2 -1.2 2.4 2.4 1.2 1.2 -1.2 -1.2 2.4 -2.4 1.2 -1.2 1.2 -2.4 2.4 3.6 1.2 -1.2 1.2 0 2.4 1.2 -1.2 0 1.2 2.4 2.4 1.2 1.2 4.8 1.2 2.4 1.2 2.4 2.4 -2.4 1.2 5.99 -1.2 7.2 2.4 4.8 1.2 1.2 1.2 2.4 2.4 -1.2 1.2 0 1.2 4.8 2.4 4.8 -1.2 2.4 1.2 -1.2 2.4 0 1.2 2.4 1.2 2.4 1.2 2.4 2.4 0 1.2 -2.4 -3.6 0 S -1901.97 4205.75 1.2 2.4 1.2 3.6 2.4 -3.6 1.2 -2.4 3.6 0 1.2 2.4 1.2 2.4 -2.4 0 1.2 -2.4 1.2 -2.4 3.6 0 1.2 3.6 1.2 -1.2 2.4 -1.2 1.2 -1.2 -1.2 0 2.4 1.2 1.2 1.2 1.2 0 2.4 -1.2 1.2 -2.4 1.2 -3.6 2.4 4.8 -1.2 2.4 2.4 0 2.4 -3.6 1.2 -1.2 1.2 3.6 2.39 0 1.2 -2.4 1.2 0 -2.4 1.2 1.2 -6 1.2 3.6 2.4 3.6 1.2 -2.4 1.2 -4.8 2.4 -1.2 1.2 3.6 -1.2 1.2 1.2 1.2 2.4 1.2 1.2 -6 3.6 0 1.2 1.2 1.2 2.4 2.4 0 -1.2 -2.4 1.2 -1.2 3.6 0 1.2 6 2.4 -4.8 1.2 -1.2 1.2 1.2 1.2 -1.2 -2.4 1.2 1.2 1.2 1.2 0 2.4 -2.4 1.2 -1.2 1.2 1.2 2.4 2.4 1.2 1.2 -1.2 1.2 2.4 -1.2 1.2 -3.6 1.2 -1.2 2.4 2.4 1.2 2.4 1.2 1.2 1.2 -6 -2.4 1.2 1.2 1.2 1.2 2.4 2.4 1.2 1.2 -1.2 1.2 -3.6 3.6 0 1.2 3.6 -2.4 1.2 1.2 0 1.2 -2.4 2.4 -3.6 1.2 2.4 1.2 3.6 1.2 0 2.4 -1.2 -1.2 -1.2 1.2 -1.2 2.4 -1.2 1.2 3.6 1.2 1.2 2.4 1.2 1.2 -2.4 3.6 0 -1.2 6 1.2 2.4 2.4 -4.8 1.2 0 1.2 -2.4 1.2 3.6 2.4 4.8 1.2 4.8 -1.2 0 2.4 -6 1.2 -1.2 1.2 1.2 2.4 1.2 1.2 3.6 1.2 -2.4 2.4 -3.6 -1.2 -3.6 1.2 0 2.4 1.2 1.2 0 1.2 2.4 1.2 -4.8 2.4 -4.8 S -2098.76 4200.95 1.2 2.4 1.2 1.2 2.4 1.2 1.2 -2.4 1.2 -1.2 2.4 -2.4 1.2 1.2 -1.2 1.2 2.4 1.2 1.2 1.2 1.2 -2.4 2.4 -2.4 2.4 0 1.2 4.8 2.4 -1.2 -1.2 -2.4 1.2 -1.2 2.4 0 1.2 1.2 1.2 2.4 2.4 -3.6 1.2 0 1.2 -3.6 -2.4 -4.8 1.2 -4.8 1.2 -4.8 2.4 -9.59 1.2 -7.2 1.2 7.2 1.2 19.19 2.4 30 -1.2 34.8 1.2 26.4 2.4 26.4 1.2 26.4 1.2 28.8 2.4 30 1.2 15.6 1.2 -21.6 S -2161.16 4388.15 2.4 -64.8 S -2163.56 4323.35 1.2 -82.8 S -2164.76 4240.55 1.2 -46.8 2.4 -4.8 1.2 7.2 1.2 0 1.2 -2.4 2.4 -1.2 1.2 2.4 -3.6 0 1.2 -2.4 1.2 -1.2 2.4 0 1.2 -2.4 1.19 6 2.4 0 1.2 -1.2 -1.2 -3.6 2.4 -1.2 1.2 0 1.2 1.2 1.2 1.2 2.4 0 1.2 -2.4 1.2 -2.4 -2.4 0 1.2 2.4 1.2 3.6 2.4 -2.4 1.2 -3.6 1.2 -2.4 2.4 3.6 1.2 2.4 -1.2 2.4 2.4 -1.2 1.2 0 1.2 -4.8 1.2 0 2.4 3.6 1.2 1.2 1.2 1.2 -2.4 -1.2 1.2 -3.6 1.2 1.2 2.4 -1.2 1.2 2.4 1.2 0 2.4 -1.2 1.2 -2.4 -1.2 -1.2 2.4 1.2 1.2 6 1.2 -3.6 1.2 -2.4 2.4 -2.4 1.2 0 1.2 4.8 -2.4 0 1.2 -3.6 1.2 -3.6 3.6 0 1.2 1.2 2.4 4.8 1.2 -4.8 1.2 -1.2 -2.4 -2.4 6 0 1.2 -4.79 1.2 -2.4 2.4 -2.4 1.2 1.2 1.2 1.2 2.4 -3.6 -1.2 -2.4 1.2 -1.2 2.4 -2.4 1.2 3.6 1.2 0 2.4 -3.6 1.2 -3.6 1.2 -2.4 -1.2 2.4 2.4 -1.2 1.2 3.6 1.2 -2.4 2.4 -1.2 1.2 -3.6 1.2 1.2 2.4 2.4 -1.2 1.2 4.8 0 1.2 3.6 2.4 4.8 1.2 4.8 1.2 2.4 1.2 2.4 2.4 2.39 -1.2 3.6 1.2 4.8 2.4 4.8 1.2 1.2 1.2 2.4 2.4 -1.2 1.2 3.6 1.2 4.8 -2.4 1.2 1.2 0 1.2 -1.2 1.2 -1.2 2.4 -2.4 1.2 6 1.2 1.2 2.4 -2.4 -1.2 0 1.2 -2.4 2.4 2.4 1.2 2.4 1.2 3.6 2.4 -6 1.2 -1.2 S -2361.55 4203.35 1.2 -1.2 2.4 2.4 1.2 0 1.2 4.8 1.2 -2.4 2.4 0 1.2 -3.6 -1.2 0 2.4 2.4 1.2 2.4 1.2 -1.2 2.4 0 1.2 -4.8 1.2 0 2.4 1.2 -1.2 0 1.2 1.2 2.4 -3.6 1.2 -1.2 1.2 2.4 3.6 0 1.2 -1.2 1.2 -1.2 -2.4 0 1.2 -1.2 1.2 3.6 2.4 0 1.2 -3.6 1.2 -4.8 2.4 0 1.2 1.2 -1.2 3.6 2.4 2.4 1.2 -2.4 1.2 -2.4 1.2 -1.2 2.4 0 1.2 1.2 1.2 4.8 -2.4 -1.2 1.2 -3.6 1.2 0 2.4 -1.2 1.19 1.2 1.2 2.4 2.4 -1.2 1.2 -1.2 -1.2 2.4 2.4 -4.8 1.2 6 1.2 1.2 1.2 -2.4 2.4 -2.4 1.2 -2.4 1.2 -3.6 -2.4 8.4 1.2 1.2 1.2 -2.4 2.4 2.4 1.2 -2.4 1.2 0 2.4 2.4 1.2 0 -1.2 1.2 2.4 -1.2 1.2 -2.4 1.2 1.2 1.2 1.2 4.8 0 2.4 -1.2 1.2 0 -1.2 2.4 2.4 1.2 1.2 -2.4 1.2 -3.6 2.4 1.2 1.2 -1.2 1.2 3.6 2.4 1.2 -1.2 -1.2 1.2 0 1.2 -1.2 2.4 0 1.2 4.8 1.2 1.2 2.4 -1.2 1.2 2.4 -1.2 -3.6 2.4 1.2 1.2 3.6 1.2 1.2 2.4 -3.6 1.2 1.2 1.2 -1.2 2.4 2.4 -1.2 4.8 1.2 7.2 1.2 -6 2.4 0 1.2 -4.8 1.2 1.2 2.4 2.4 1.2 4.8 -1.2 -3.6 2.4 -3.6 1.2 -4.8 1.2 -2.4 2.4 0 1.2 6 1.2 -1.2 2.4 -2.4 -1.2 -3.6 1.2 -1.2 1.2 2.4 2.4 3.6 1.2 -2.4 1.2 -3.6 2.4 0 1.2 -1.2 -1.2 1.2 2.4 2.4 1.2 0 S -2558.34 4202.15 1.2 -3.6 2.4 -1.2 1.2 1.2 1.2 1.2 2.4 1.2 1.2 -1.2 1.2 0 -1.2 -1.2 2.4 -2.4 1.2 3.6 1.2 0 2.4 -2.4 1.2 -3.6 1.2 -7.2 2.4 -6 -1.2 -3.6 1.2 -4.79 2.4 -7.2 1.2 -8.4 1.2 -2.4 2.4 8.4 1.2 20.4 1.2 26.39 -1.2 26.4 2.4 22.8 1.2 21.6 1.2 24 2.4 30 1.2 28.8 1.2 25.2 2.4 10.8 -1.2 -25.2 S -2608.74 4373.75 1.2 -70.8 S -2609.94 4302.95 2.4 -76.8 S -2612.34 4226.15 1.2 -39.6 1.2 -1.2 2.4 7.2 1.2 0 1.2 -1.2 1.2 7.2 2.4 1.2 -1.2 -4.8 1.2 -2.4 2.4 -1.2 1.2 2.4 1.2 3.6 2.4 -2.4 1.2 0 1.2 -3.6 -2.4 -1.2 1.2 0 1.2 1.2 2.4 4.8 1.2 -1.2 1.2 -3.6 1.2 -2.4 2.4 0 -1.2 3.6 1.2 0 2.4 1.2 1.19 -3.6 1.2 -1.2 2.4 0 1.2 1.2 1.2 3.6 -2.4 1.2 1.2 -4.8 1.2 -1.2 2.4 2.4 1.2 1.2 1.2 2.4 1.2 -1.2 2.4 -2.4 -1.2 -2.4 1.2 2.4 2.4 1.2 1.2 1.2 1.2 -1.2 2.4 0 1.2 -4.8 1.2 1.2 -2.4 1.2 1.2 1.2 1.2 0 2.4 -3.6 1.2 1.2 1.2 2.4 1.2 3.6 2.4 -2.4 -1.2 -2.4 1.2 0 2.4 -1.2 1.2 1.2 1.2 1.2 2.4 -2.4 1.2 1.2 1.2 -1.2 -2.4 -2.4 1.2 -1.2 1.2 1.2 2.4 -1.2 1.2 -1.2 1.2 -4.8 1.2 1.2 2.4 1.2 -1.2 0 1.2 -2.4 2.4 -2.4 1.2 -3.6 1.2 0 2.4 3.6 1.2 1.2 1.2 -8.4 -2.4 -1.2 1.2 -4.79 1.2 -1.2 2.4 2.4 1.2 2.39 1.2 -2.39 1.2 -2.4 2.4 -1.2 -1.2 -1.2 1.2 2.4 2.4 2.4 2.4 0 2.4 -1.2 1.2 3.59 1.2 4.8 2.4 2.4 -1.2 4.8 1.2 0 2.4 1.2 1.2 3.6 1.2 4.8 1.2 3.6 2.4 1.2 1.2 1.2 -1.2 2.4 2.4 0 1.2 2.4 1.2 0 2.4 6 1.2 -4.8 1.2 -2.4 2.4 2.4 -1.2 2.4 1.2 2.4 2.4 -1.2 1.2 1.2 1.2 0 1.2 -2.4 2.4 2.4 1.2 3.6 -1.2 -2.4 2.4 -3.6 1.2 -1.2 1.2 1.2 2.4 6 S -2809.13 4209.35 1.2 -1.2 1.2 -1.2 2.4 -3.6 1.2 -2.4 3.6 0 1.2 6 1.2 -4.8 -1.2 2.4 2.4 -3.6 1.2 -1.2 1.2 0 2.4 1.2 1.2 0 1.2 -2.4 2.4 1.2 -1.2 0 1.2 2.4 2.4 0 1.2 -1.2 1.2 -2.4 2.4 -1.2 1.2 1.2 1.2 1.2 -1.2 1.2 2.4 -2.4 1.2 -1.2 1.2 -3.6 2.4 1.2 1.2 1.2 1.2 3.6 2.4 -1.2 -1.2 0 1.2 -1.2 2.4 -1.2 1.2 1.2 1.2 2.4 2.4 -1.2 1.2 -2.4 1.2 -3.6 -1.2 2.4 2.4 2.4 1.2 2.4 1.2 -1.2 2.4 -2.4 1.2 -2.4 1.2 -1.2 2.4 3.6 -1.2 3.6 1.2 -1.2 2.4 -1.2 1.2 -1.2 1.2 -1.2 2.39 2.4 1.2 1.2 1.2 -1.2 -1.2 -1.2 2.4 -1.2 1.2 2.4 1.2 0 2.4 1.2 1.2 -2.4 1.2 1.2 2.4 -2.4 -1.2 -1.2 1.2 4.8 2.4 3.6 1.2 -3.6 1.2 -1.2 2.4 -2.4 1.2 -1.2 1.2 1.2 -1.2 3.6 2.4 0 1.2 -1.2 1.2 -3.6 2.4 0 1.2 2.4 1.2 3.6 2.4 -1.2 -1.2 -1.2 1.2 -1.2 2.4 -1.2 1.2 1.2 1.2 3.6 1.2 0 2.4 -1.2 1.2 0 -1.2 1.2 2.4 3.6 1.2 -1.2 1.2 -2.4 2.4 3.6 1.2 -3.6 1.2 0 2.4 2.4 -1.2 4.8 1.2 2.4 2.4 0 1.2 -1.2 1.2 -1.2 1.2 0 2.4 1.2 1.2 -4.8 -1.2 1.2 2.4 -4.8 2.4 0 2.4 2.4 1.2 -2.4 1.2 0 2.4 -3.6 1.2 -1.2 -1.2 2.4 2.4 1.2 1.2 -3.6 1.2 0 1.2 -1.2 2.4 -1.2 1.2 6 1.2 1.2 -2.4 -1.2 1.2 -3.6 1.2 -2.4 2.4 -2.4 S -3005.92 4190.15 1.2 2.4 1.2 2.4 2.4 -3.6 1.2 2.4 1.2 -2.4 2.4 -2.4 1.2 7.2 -1.2 -1.2 1.2 -1.2 3.6 0 1.2 -3.6 2.4 2.4 1.2 2.4 1.2 -2.4 2.4 -2.4 -1.2 -3.6 1.2 -6 2.4 -2.4 1.2 -7.2 1.2 -7.2 2.4 -2.4 1.2 10.8 1.2 24 -1.2 28.8 2.4 20.4 1.2 14.4 1.2 15.6 2.4 25.2 1.2 28.8 1.2 20.4 2.4 -9.6 -1.2 -55.2 S -3057.52 4284.95 1.2 -73.2 S -3058.72 4211.75 2.4 -48 1.2 -6 1.2 12 2.4 8.4 1.2 2.4 1.2 1.2 1.2 1.2 -2.4 0 1.2 2.4 1.2 -3.6 2.4 -2.4 1.2 1.2 1.2 0 2.4 2.4 1.2 6 -1.2 0 2.4 -3.6 1.2 -4.8 1.2 -1.2 2.4 2.4 1.2 2.4 1.2 3.6 1.2 -2.4 -2.4 0 1.2 -4.8 1.2 3.6 2.4 0 1.2 1.2 1.2 0 2.4 -1.2 1.2 -2.4 -1.2 1.2 2.4 2.4 1.2 2.4 1.2 -3.6 2.4 -1.2 1.2 4.8 1.2 -2.4 1.2 0 -2.4 6 1.2 -2.4 1.2 1.2 2.4 -4.8 1.2 -1.2 1.2 -1.2 2.4 3.6 1.2 -2.4 -1.2 -1.2 2.4 -1.2 1.2 -2.4 1.19 1.2 2.4 2.4 1.2 -1.2 1.2 4.8 1.2 -2.4 -2.4 -3.6 1.2 3.6 1.2 1.2 2.4 -4.8 1.2 -1.2 1.2 0 2.4 1.2 1.2 2.4 -1.2 1.2 2.4 -1.2 1.2 -1.2 1.2 -1.2 2.4 -3.6 1.2 2.4 1.2 2.4 1.2 -2.4 -2.4 -4.8 1.2 -1.2 1.2 -2.4 2.4 -1.2 1.2 3.6 1.2 -2.4 2.4 -3.6 1.2 -3.6 -1.2 -4.8 2.4 3.6 1.2 1.2 1.2 -2.4 2.4 -2.4 3.6 0 2.4 -2.4 1.2 0 -1.2 -1.2 2.4 1.2 1.2 -2.4 1.2 3.6 2.4 2.4 1.2 2.4 1.2 -3.6 2.4 1.2 -1.2 0 1.2 4.8 2.4 1.2 1.2 -1.2 1.2 0 1.2 1.2 2.4 2.4 1.2 3.6 -1.2 6 2.4 2.4 1.2 0 1.2 1.2 2.4 3.6 1.2 2.4 1.2 3.6 2.4 3.6 -1.2 0 1.2 -1.2 2.4 -1.2 1.2 2.4 1.2 3.6 1.2 -1.2 2.4 -2.4 1.2 -2.4 -1.2 0 2.4 7.2 1.2 -1.2 1.2 -1.2 S -3255.51 4197.35 2.4 -1.2 1.2 -2.4 1.2 1.2 2.4 4.8 1.2 1.2 1.2 -1.2 2.4 -3.6 -1.2 -2.4 1.2 -1.2 1.2 2.4 2.4 1.2 1.2 1.2 1.2 -2.4 2.4 -2.4 1.2 1.2 -1.2 3.6 2.4 1.2 1.2 -4.8 1.2 -2.4 2.4 -3.6 1.2 -1.2 1.2 1.2 2.4 3.6 -1.2 -2.4 1.2 3.6 1.2 -2.4 2.4 2.4 1.2 -2.4 1.2 1.2 2.4 -1.2 1.2 0 -1.2 -2.4 2.4 1.2 1.2 1.2 1.2 2.4 2.4 0 1.2 -2.4 1.2 -2.4 2.4 -3.6 -1.2 3.6 1.2 3.6 1.2 -2.4 2.4 1.2 1.2 -1.2 1.2 1.2 2.4 0 1.2 3.6 -1.2 -3.6 2.4 0 1.2 -1.2 1.2 0 2.4 1.2 1.2 2.4 1.2 -1.2 2.4 1.2 -1.2 -3.6 1.2 0 1.2 -3.6 2.4 4.8 1.2 1.2 1.2 -1.2 2.4 -1.2 1.2 1.2 -1.2 1.2 2.4 2.4 1.2 -3.6 1.2 0 2.4 -1.2 1.2 1.2 1.2 2.4 2.4 2.4 -1.2 -2.4 1.2 -4.8 3.6 0 1.2 4.8 1.2 0 2.39 -1.2 1.2 -1.2 1.2 -4.8 -2.4 1.2 1.2 3.6 1.2 1.2 2.4 1.2 1.2 1.2 1.2 -1.2 2.4 1.2 1.2 2.4 -1.2 2.4 1.2 -1.2 2.4 2.4 1.2 -2.4 1.2 -1.2 2.4 3.6 1.2 1.2 1.2 -3.6 -2.4 1.2 1.2 1.2 1.2 1.2 2.4 2.4 1.2 1.2 1.2 -2.4 2.4 -2.4 1.2 -1.2 -1.2 1.2 1.2 1.2 2.4 1.2 1.2 -4.8 1.2 -1.2 2.4 -3.6 1.2 2.4 1.2 2.4 -2.4 1.2 1.2 -1.2 1.2 -2.4 2.4 -6 1.2 2.4 1.2 2.4 2.4 2.4 1.2 0 -1.2 -3.6 1.2 -1.2 2.4 -1.2 1.2 2.4 1.2 2.4 S -3452.3 4194.95 2.4 0 1.2 -3.6 1.2 1.2 2.4 -1.2 1.2 1.2 1.2 3.6 2.4 0 -1.2 -4.8 1.2 0 2.4 2.4 1.2 2.4 1.2 1.2 1.2 -1.2 2.4 -3.6 1.2 -3.6 -1.2 -3.6 2.4 -1.2 1.2 -4.8 1.2 -3.6 2.4 -8.4 1.2 -1.2 1.2 4.8 2.4 20.4 -1.2 28.8 1.2 25.2 2.4 13.2 1.2 13.2 1.2 20.4 1.2 30 2.4 30 1.2 14.4 -1.2 -14.4 S -3502.7 4352.15 2.4 -62.4 S -3505.1 4289.75 1.2 -80.4 S -3506.3 4209.35 1.2 -46.8 2.4 -2.4 1.2 12 1.2 7.2 2.4 4.8 1.2 3.6 1.2 2.4 -2.4 7.2 1.2 -3.6 1.2 -3.6 1.2 2.4 2.4 2.4 1.2 1.2 1.2 0 2.4 -2.4 -1.2 -2.4 1.2 -1.2 2.4 -2.4 1.2 4.8 1.2 3.6 2.4 -1.2 1.2 -3.6 1.2 0 -1.2 -1.2 2.4 3.6 1.2 0 1.2 1.2 2.4 -1.2 1.2 -3.6 1.2 2.4 2.4 1.2 -1.2 1.2 1.2 0 2.4 -2.4 1.2 -1.2 1.2 2.4 2.4 2.4 1.2 4.8 1.2 -2.4 -1.2 -4.8 2.4 0 1.2 -1.2 1.2 3.6 2.4 3.6 1.2 -2.4 1.2 0 2.4 -1.2 -1.2 -3.6 1.2 2.4 2.4 4.8 1.2 -1.2 1.2 -1.2 2.4 -1.2 2.4 0 1.2 2.4 -2.4 -3.6 1.2 -2.4 1.2 1.2 2.39 0 1.2 3.6 1.2 -1.2 2.4 1.2 1.2 -4.8 -3.6 0 1.2 1.2 1.2 3.6 2.4 -6 1.2 1.2 1.2 -3.6 1.2 -3.6 2.4 0 -1.2 1.2 1.2 -1.2 2.4 0 1.2 -4.8 1.2 2.4 2.4 2.4 1.2 -1.2 1.2 -3.6 -2.4 -2.4 1.2 -3.6 1.2 -1.2 2.4 6 1.2 0 1.2 -3.6 1.2 -3.6 2.4 -1.2 -1.2 -1.2 1.2 -2.4 2.4 2.4 1.2 -2.4 1.2 -1.2 2.4 -1.2 1.2 0 1.2 1.2 -2.4 3.6 1.2 -1.2 1.2 4.8 2.4 0 1.2 2.4 1.2 3.6 1.2 4.8 2.4 3.6 -1.2 2.4 1.2 1.2 2.4 3.6 1.2 4.8 1.2 3.6 2.4 1.2 1.2 2.4 1.2 -2.4 -2.4 3.6 1.2 2.4 1.2 3.6 2.4 1.2 1.2 -2.4 1.2 1.2 1.2 -2.4 2.4 4.8 -1.2 1.2 1.2 -1.2 2.4 1.2 1.2 0 S -3703.09 4217.75 1.2 -2.4 2.4 1.2 1.2 3.6 1.2 -2.4 2.4 0 1.2 -1.2 1.2 1.2 -2.4 1.2 1.2 1.2 1.2 0 1.2 -1.2 2.4 -1.2 1.2 -4.8 1.2 2.4 2.4 2.4 -1.2 -1.2 1.2 -2.4 3.6 0 1.2 3.6 2.4 1.2 1.2 -2.4 1.2 -3.6 2.4 -1.2 -1.2 1.2 1.2 0 1.2 3.6 2.4 0 1.2 -3.6 1.2 -1.2 2.4 -2.4 1.2 3.6 -1.2 2.4 2.4 -1.2 1.2 -1.2 1.2 -2.4 2.4 -1.2 1.2 3.6 1.2 3.6 2.4 -4.8 -1.2 0 1.2 -3.6 1.2 2.4 2.4 0 1.2 3.6 1.2 -1.2 2.4 -1.2 1.2 -2.4 -1.2 1.2 2.4 1.2 1.2 2.4 1.2 0 2.4 -2.4 1.2 -4.8 1.2 6 2.4 1.2 -1.2 1.2 1.2 -1.2 1.2 1.2 2.4 -2.4 1.2 -4.8 1.2 2.4 2.4 6 1.2 -1.2 -1.2 -2.4 2.4 -1.2 1.2 0 1.2 1.2 2.4 3.6 1.2 -2.4 1.2 -2.4 2.4 -1.2 -1.2 -1.2 1.2 6 1.2 1.2 2.4 1.2 1.2 -3.6 1.2 -1.2 2.4 1.2 1.2 0 -1.2 3.6 2.4 -1.2 1.2 0 1.2 -2.4 2.4 0 1.2 2.4 3.59 0 1.2 -1.2 -1.2 -1.2 1.2 0 2.4 2.4 1.2 3.6 1.2 -3.6 2.4 -1.2 1.2 -1.2 1.2 2.4 -2.4 4.8 1.2 1.2 1.2 1.2 2.4 -2.4 1.2 -1.2 1.2 -1.2 2.4 1.2 1.2 6 -1.2 0 1.2 1.2 2.4 -1.2 1.2 3.6 1.2 2.4 2.4 1.2 1.2 -3.6 1.2 0 -2.4 -2.4 1.2 0 1.2 1.2 2.4 1.2 1.2 -4.8 1.2 -3.6 2.4 -1.2 1.2 2.4 -1.2 0 1.2 2.4 2.4 0 1.2 -2.4 S -3899.88 4222.55 1.2 -2.4 2.4 -1.2 1.2 -1.2 1.2 3.6 2.4 -1.2 1.2 -3.6 1.2 1.2 -2.4 1.2 1.2 0 1.2 3.6 2.4 -2.4 1.2 -2.4 1.2 -3.6 1.2 2.4 2.4 3.6 -1.2 1.2 1.2 -1.2 2.4 -2.4 1.2 -1.2 1.2 -2.4 2.4 3.6 1.2 2.4 1.2 0 -2.4 1.2 1.2 -7.2 1.2 -3.6 2.4 -4.8 1.2 -3.6 1.2 -3.6 1.2 -9.6 2.4 -4.8 -1.2 2.4 1.2 19.2 2.4 33.6 1.2 30 1.2 25.2 2.4 25.2 1.2 25.2 1.2 33.6 -2.4 31.2 1.2 21.6 1.2 -1.2 2.4 -45.6 S -3968.28 4384.55 1.2 -81.6 S -3969.48 4302.95 1.2 -69.6 S -3970.68 4233.35 1.2 -26.4 2.4 1.2 1.2 7.2 1.2 -3.6 2.4 1.2 1.2 2.4 1.2 2.4 -2.4 -2.4 1.2 -8.4 1.2 -2.4 2.4 1.2 1.2 4.8 1.2 0 2.4 -1.2 1.2 -1.2 -1.2 -3.6 1.2 1.2 2.4 -1.2 1.2 1.2 1.2 1.2 2.4 -1.2 1.2 -1.2 1.2 0 -2.4 2.4 1.2 2.4 1.2 -1.2 2.4 -2.4 1.2 -3.6 1.2 0 2.4 8.4 1.2 -3.6 -1.2 1.2 1.2 0 2.4 -2.4 1.2 -1.2 1.2 1.2 2.4 3.6 1.2 -2.4 1.2 -1.2 -2.4 1.2 1.2 -1.2 1.2 4.8 2.4 0 1.2 -2.4 1.2 -1.2 2.4 -1.2 1.2 1.2 -1.2 1.2 1.2 3.6 2.4 0 1.2 -4.8 1.2 -2.4 2.4 0 1.2 4.8 1.2 1.2 -2.4 -4.8 1.2 4.8 1.2 -3.6 3.6 0 1.2 2.4 2.39 -2.4 1.2 -4.8 1.2 1.2 -1.2 1.2 2.4 -2.4 1.2 3.6 1.2 -2.4 2.4 -2.4 1.2 -2.4 1.2 2.4 2.4 -1.2 -1.2 3.6 1.2 -2.4 2.4 -3.6 1.2 -2.4 1.2 0 2.4 1.2 1.2 -1.2 1.2 2.4 -1.2 -6 2.4 -1.2 1.2 -1.2 1.2 1.2 2.4 0 1.2 -1.2 1.2 -3.6 2.4 -3.6 -1.2 1.2 3.6 0 1.2 -2.4 1.2 -1.2 2.4 -1.2 1.2 -1.2 1.2 1.2 1.2 1.2 -2.4 -1.2 1.2 0 1.2 -1.2 2.4 2.4 1.2 7.2 3.6 0 1.2 3.6 1.2 0 -2.4 3.6 1.2 6 1.2 4.8 1.2 1.2 2.4 1.2 1.2 2.4 1.2 2.4 2.4 4.8 -1.2 3.6 1.2 3.6 2.4 -2.4 1.2 -1.2 1.2 2.4 2.4 3.6 1.2 1.2 3.6 0 -1.2 -3.6 1.2 -1.2 S -4167.47 4222.55 1.2 3.6 2.4 1.2 1.2 -1.2 1.2 -2.4 2.4 -1.2 1.2 2.4 1.2 1.2 -2.4 2.4 1.2 -1.2 1.2 -2.4 2.4 -2.4 1.2 0 1.2 1.2 2.4 2.4 1.2 0 -1.2 2.4 1.2 -2.4 2.4 -3.6 1.2 1.2 1.2 2.4 2.4 -1.2 1.2 -3.6 1.2 2.4 -2.4 -3.6 1.2 3.6 1.2 4.8 2.4 -1.2 1.2 -2.4 1.2 -1.2 2.4 0 1.2 2.4 -1.2 1.2 1.2 -2.4 2.4 2.4 1.2 0 1.2 -1.2 2.4 2.4 2.4 0 2.4 -3.6 -1.2 -1.2 1.2 1.2 2.4 1.2 1.2 0 1.2 -2.4 2.4 0 1.2 -3.6 1.2 1.2 -1.2 -1.2 2.4 1.2 1.2 -1.2 1.2 -3.6 2.4 -1.2 1.2 -2.4 1.2 0 2.4 -1.2 -1.2 -1.2 1.2 1.2 2.4 -1.2 1.2 1.2 1.2 1.2 2.4 1.2 1.2 0 1.2 -2.4 -1.2 -2.4 2.4 2.4 1.2 3.6 1.2 0 2.4 -1.2 1.2 0 1.2 -3.6 2.4 1.2 -1.2 3.6 1.2 1.2 2.4 -2.4 1.2 1.2 1.2 -2.4 2.4 1.2 1.2 2.4 1.2 0 -1.2 1.2 2.4 -2.4 1.2 -2.4 1.2 2.4 2.4 4.8 1.2 0 1.2 -2.4 2.4 -2.4 -1.19 -1.2 1.2 0 2.4 -3.6 1.2 -3.6 1.2 -9.6 2.4 -3.6 1.2 -10.8 1.2 -3.6 -1.2 3.6 2.4 24 1.2 24 1.2 32.4 2.4 26.4 1.2 20.4 1.2 26.4 2.4 24 -1.2 24 1.2 16.8 2.4 0 1.2 -37.2 S -4337.86 4364.15 1.2 -67.2 S -4339.06 4296.95 2.4 -63.6 S -4341.46 4233.35 1.2 -32.4 1.2 2.4 1.2 6 2.4 1.2 1.2 2.4 1.2 4.8 2.4 0 -1.2 -3.6 1.2 -1.2 2.4 -1.2 1.2 3.6 3.6 0 1.2 -3.6 1.2 -1.2 2.4 1.2 -1.2 3.6 1.2 0 1.2 -1.2 2.4 -1.2 1.2 -3.6 1.2 1.2 2.4 1.2 1.2 2.4 -1.2 0 2.4 -2.4 1.2 -2.4 1.2 0 2.4 2.4 1.2 1.2 1.2 0 2.4 -2.4 -1.2 -1.2 1.2 -1.2 1.2 3.6 2.4 2.4 1.2 -1.2 1.2 -2.4 3.6 0 1.2 -1.2 -2.4 2.4 1.2 2.4 1.2 -2.4 2.4 -2.4 1.2 -1.2 1.2 3.6 2.4 2.4 1.2 -4.8 -1.2 0 1.2 -1.2 2.4 0 1.2 4.8 1.2 2.4 2.4 -3.6 1.2 -1.2 1.2 -4.8 -2.4 0 1.2 1.2 1.2 3.6 2.4 0 1.2 -3.6 3.6 0 1.2 1.2 1.2 -1.2 -1.2 -6 2.4 -1.2 1.2 1.2 1.2 -1.2 2.4 1.2 1.2 3.6 1.2 -6 2.4 1.2 -1.2 -4.8 1.2 1.2 2.4 -1.2 1.2 4.8 1.2 -4.8 2.4 -3.6 1.2 -4.8 1.2 0 -1.2 -1.2 2.4 3.6 1.2 -3.6 1.2 -2.4 2.4 -2.4 1.2 0 1.2 -1.2 2.4 1.2 -1.2 -1.2 1.2 -3.6 2.4 1.2 1.2 -1.2 1.2 3.6 4.8 0 1.2 -1.2 2.4 2.4 -1.2 3.6 1.2 3.6 2.4 1.2 1.2 1.2 1.2 0 2.4 2.4 1.2 2.4 1.2 4.8 -2.4 1.2 2.4 0 2.4 1.2 1.2 1.2 1.2 4.8 1.2 1.2 2.4 -2.4 1.2 0 -1.2 4.8 2.4 3.6 1.2 3.6 1.2 -1.2 2.4 -4.8 1.2 1.2 1.2 0 2.4 2.4 S -4538.26 4216.55 1.2 1.2 1.2 1.2 2.39 -2.4 1.2 0 1.2 -4.8 1.2 3.6 2.4 2.4 -1.2 2.4 1.2 -1.2 2.4 -2.4 1.2 1.2 1.2 -1.2 2.4 3.6 1.2 -1.2 1.2 -3.6 -2.4 1.2 1.2 -3.6 1.2 4.8 2.4 0 1.2 -2.4 1.2 -1.2 1.2 0 2.4 -3.6 -1.2 4.8 1.2 0 2.4 1.2 1.2 -2.4 1.2 -1.2 2.4 0 1.2 -2.4 1.2 2.4 -3.6 0 1.2 -1.2 2.4 1.2 1.2 1.2 1.2 0 1.2 -1.2 2.4 -1.2 1.2 -6 -1.2 2.4 2.4 1.2 1.2 2.4 1.2 1.2 2.4 -4.8 1.2 1.2 1.2 -1.2 2.4 3.6 -1.2 -1.2 3.6 0 1.2 -1.2 1.2 1.2 1.2 4.8 2.4 -1.2 1.2 -2.4 1.2 -2.4 -2.4 -4.8 1.2 1.2 1.2 7.2 2.4 1.2 1.2 0 1.2 -1.2 2.4 -4.8 1.2 -1.2 -1.2 2.4 2.4 2.4 2.4 0 1.2 -2.4 2.4 0 1.2 2.4 1.2 -2.4 2.4 0 -1.2 -4.8 1.2 1.2 2.4 0 1.2 9.6 1.2 2.4 2.4 -4.8 1.2 -3.6 1.2 -1.2 -2.4 1.2 1.2 2.4 1.2 2.4 1.2 0 2.4 -2.4 1.2 -2.4 1.2 -2.4 2.4 2.4 -1.2 3.6 1.2 -1.2 2.4 -3.6 1.2 -2.4 1.2 2.4 4.8 0 2.4 -1.2 1.2 2.4 -1.2 -2.4 1.2 0 2.4 2.4 1.2 -2.4 1.2 0 2.4 -1.2 1.2 0 1.2 2.4 -2.4 2.4 1.2 -4.8 1.2 3.6 2.4 0 1.2 -1.2 1.2 -1.2 2.4 3.6 1.2 -3.6 -1.2 0 1.2 -4.8 2.4 1.2 1.2 4.8 1.2 1.2 2.4 0 1.2 -2.4 1.2 -6 -2.4 -1.2 S -4735.05 4199.75 1.2 3.6 1.2 2.4 2.4 1.2 1.2 -1.2 1.2 -4.8 1.2 -3.6 2.4 4.8 -1.2 2.4 1.2 -2.4 2.4 1.2 1.2 -2.4 1.2 0 2.4 2.4 1.2 1.2 1.2 2.4 -2.4 -7.2 2.4 0 2.4 3.6 1.2 1.2 1.2 -1.2 1.2 0 2.4 -1.2 1.2 0 -1.2 3.6 3.6 0 1.2 -1.2 2.4 -4.8 1.19 0 1.2 3.6 2.4 3.6 1.2 -1.2 -1.2 1.2 2.4 -2.4 1.2 3.6 1.2 1.2 1.2 3.6 2.4 -1.2 1.2 -2.4 1.2 1.2 -2.4 1.2 1.2 1.2 1.2 3.6 2.4 -1.2 1.2 -2.4 1.2 -1.2 2.4 1.2 1.2 0 -1.2 2.4 2.4 -3.6 1.2 -2.4 1.2 2.4 1.2 1.2 2.4 1.2 1.2 0 1.2 -4.8 -2.4 -2.4 1.2 -3.6 1.2 3.6 2.4 0 1.2 4.8 1.2 -3.6 2.4 -1.2 1.2 -1.2 -1.2 -6 2.4 1.2 1.2 3.6 1.2 -1.2 3.6 0 1.2 -3.6 1.2 2.4 3.6 0 -1.2 -1.2 2.4 -1.2 1.2 -2.4 1.2 1.2 2.4 4.8 1.2 -2.4 1.2 -1.2 4.8 0 -1.2 1.2 2.4 -1.2 1.2 0 1.2 -7.2 2.4 -4.8 1.2 -3.6 1.2 0 2.4 -4.8 -1.2 -3.6 1.2 4.8 2.4 14.4 1.2 28.8 1.2 20.4 2.4 13.2 1.2 10.8 1.2 16.8 -1.2 25.2 2.4 27.6 1.2 26.4 1.2 9.6 2.4 -21.6 1.2 -52.8 S -4903.04 4299.35 1.2 -69.6 S -4904.24 4229.75 2.4 -52.8 1.2 -15.6 1.2 1.2 2.4 4.8 1.2 7.2 1.2 8.4 2.4 2.4 -1.2 3.6 1.2 1.2 1.2 -1.2 2.4 -1.2 1.2 -2.4 1.2 4.8 2.4 3.6 1.2 -2.4 -1.2 0 2.4 -1.2 1.2 -1.2 1.2 1.2 2.4 4.8 1.2 -3.6 1.2 1.2 2.4 -6 -1.2 4.8 1.2 2.4 1.2 0 2.4 -1.2 1.2 0 1.2 -1.2 2.4 0 1.2 1.2 -1.2 7.2 2.4 -3.6 1.2 -1.2 1.2 -4.8 2.4 -2.4 1.2 6 1.2 1.2 2.4 3.6 -1.2 -2.4 1.2 -3.6 1.2 1.2 2.4 0 1.2 1.2 1.2 2.4 2.4 -1.2 1.2 -2.4 -1.2 0 2.4 1.2 1.2 4.8 1.2 -4.8 2.4 0 1.2 1.2 1.2 -3.6 2.4 2.4 -1.2 4.8 1.2 -3.6 1.2 -2.4 2.4 -2.4 1.2 -1.2 1.2 2.4 2.4 3.6 1.2 -2.4 -1.2 0 2.4 -3.6 1.2 1.2 1.2 0 2.4 -1.2 1.2 -2.4 1.2 1.2 4.8 0 -1.2 6 2.4 -4.8 1.2 0 1.2 -1.2 2.39 -3.6 1.2 6 1.2 3.6 2.4 -2.4 -1.2 -2.4 1.2 -4.8 2.4 -2.4 1.2 -1.2 1.2 1.2 2.4 2.4 1.2 -7.2 1.2 -1.2 -1.2 -2.4 2.4 0 1.2 1.2 1.2 -4.8 2.4 1.2 1.2 -4.8 1.2 -3.6 2.4 1.2 -1.2 0 1.2 -2.4 2.4 0 1.2 -3.6 1.2 0 2.4 1.2 1.2 1.2 1.2 0 -1.2 -2.4 2.4 0 1.2 -1.2 1.2 6 2.4 6 1.2 1.2 1.2 2.4 2.4 -1.2 -1.2 2.4 1.2 4.8 2.4 6 1.2 1.2 1.2 2.4 2.4 3.6 1.2 2.4 1.2 2.4 -1.2 4.8 2.4 -1.2 1.2 -1.2 1.2 0 S -5101.03 4199.75 2.4 1.2 1.2 6 1.2 2.4 2.4 0 1.2 -1.2 1.2 -2.4 2.4 0 -1.2 1.2 1.2 4.8 2.4 0 1.2 -3.6 2.4 0 2.4 1.2 1.2 2.4 1.2 -4.8 -2.4 2.4 1.2 -3.6 1.2 1.2 2.4 4.8 1.2 0 1.2 -1.2 2.4 -3.6 1.2 -1.2 -1.2 1.2 2.4 1.2 1.2 0 1.2 1.2 1.2 -1.2 2.4 -1.2 1.2 -3.6 1.2 2.4 -2.4 2.4 2.4 0 2.4 -4.8 1.2 0 1.2 6 2.4 -3.6 1.2 0 1.2 -2.4 -2.4 -1.2 1.2 -2.4 1.2 2.4 1.2 2.4 2.4 0 1.2 -1.2 1.2 -1.2 2.4 -2.4 -1.2 2.4 1.2 2.4 2.4 0 1.2 -1.2 1.2 -1.2 2.4 2.4 1.2 1.2 1.2 2.4 -2.4 -4.8 1.2 -1.2 1.2 -2.4 1.2 1.2 2.4 2.4 1.2 1.2 1.2 -3.6 2.4 1.2 -1.2 -2.4 1.2 0 2.4 1.2 1.2 3.6 1.2 -2.4 2.4 1.2 1.2 -2.4 3.6 0 -1.2 3.6 1.2 0 1.2 -2.4 2.4 -2.4 1.2 2.4 1.2 3.6 2.4 -1.2 1.2 2.4 -1.2 -4.8 2.4 -2.4 1.2 1.2 1.2 3.6 2.4 3.6 1.2 -2.4 1.2 -1.2 2.4 0 -1.2 -1.2 1.2 2.4 1.2 2.4 2.4 -1.2 1.2 -1.2 1.2 -1.2 3.6 0 1.2 2.4 -2.4 -2.4 1.2 2.4 1.2 -2.4 2.4 1.2 1.2 3.6 1.2 4.8 2.4 -4.8 1.2 0 -1.2 -1.2 1.19 1.2 2.4 4.8 1.2 3.6 1.2 -2.4 2.4 -3.6 1.2 0 1.2 3.6 -2.4 2.4 1.2 2.4 1.2 0 2.4 -1.2 1.2 1.2 1.2 -1.2 2.4 0 1.2 2.4 -1.2 -1.2 1.2 -3.6 S -5297.82 4216.55 2.4 -3.6 2.4 0 2.4 2.4 1.2 1.2 1.2 -3.6 2.4 -3.6 1.2 -3.6 -1.2 4.8 2.4 1.2 1.2 -1.2 1.2 -2.4 2.4 -2.4 1.2 1.2 1.2 3.6 1.2 -2.4 -2.4 -1.2 1.2 -3.6 1.2 -2.4 2.4 0 1.2 4.8 1.2 3.6 2.4 -2.4 1.2 -2.4 -1.2 0 2.4 -3.6 1.2 3.6 1.2 4.8 1.2 -3.6 2.4 -1.2 1.2 -1.2 1.2 -1.2 -2.4 2.4 1.2 -1.2 1.2 -6 2.4 -6 1.2 -6 1.2 -3.6 2.4 -4.8 1.2 1.2 -1.2 6 2.4 22.8 1.2 31.2 1.2 24 1.2 21.6 2.4 21.6 1.2 22.8 1.2 22.8 -2.4 19.2 1.2 14.4 1.2 -16.8 2.4 -55.2 S -5380.62 4312.55 1.2 -81.6 S -5381.82 4230.95 1.2 -49.2 2.4 -7.2 1.2 10.8 1.2 8.4 2.4 1.2 1.2 2.4 1.2 3.6 -1.2 -2.4 2.4 0 1.2 -2.4 1.2 1.2 2.4 0 1.2 -2.4 1.2 -2.4 2.4 1.2 -1.2 2.4 1.2 3.6 2.4 -1.2 1.2 -4.8 1.2 2.4 2.4 -3.6 1.2 6 1.2 1.2 -3.6 0 1.2 -1.2 1.2 -2.4 2.4 3.6 1.2 1.2 1.2 0 2.4 -1.2 1.2 -2.4 -1.2 -1.2 2.4 3.6 1.2 3.6 1.2 -1.2 2.4 -2.4 1.2 -1.2 1.2 -1.2 1.2 2.4 -2.4 1.2 1.2 -1.2 1.2 -1.2 2.4 -1.2 1.2 1.2 1.2 2.4 3.6 0 1.2 -1.2 -2.4 -2.4 1.2 0 1.2 1.2 2.4 2.4 1.2 -1.2 1.2 0 1.2 -2.4 2.4 -2.4 -1.2 1.2 1.2 3.6 2.4 2.4 1.2 -3.6 1.2 0 2.4 -3.6 1.2 4.8 1.2 0 -2.4 -2.4 1.2 -2.4 1.2 -1.2 2.4 0 1.2 2.4 1.2 0 1.2 -1.2 2.4 -1.2 -1.2 -4.8 1.2 0 2.4 1.2 1.2 1.2 1.2 -4.8 2.4 -3.6 1.2 0 1.2 -3.6 -2.4 0 1.19 1.2 1.2 -1.2 2.4 -2.4 1.2 -1.2 1.2 -4.8 1.2 2.4 2.4 1.2 -1.2 -3.6 1.2 0 2.4 -4.8 1.2 1.2 1.2 2.4 2.4 4.8 1.2 -4.8 1.2 -2.4 -2.4 -1.2 1.2 2.4 1.2 6 2.4 4.8 1.2 0 1.2 1.2 1.2 4.8 2.4 0 -1.2 3.6 1.2 7.2 2.4 2.4 1.2 1.2 1.2 0 2.4 4.8 1.2 4.8 1.2 1.2 -2.4 -1.2 1.2 -1.2 1.2 -1.2 2.4 1.2 1.2 1.2 1.2 1.2 1.2 1.2 2.4 1.2 -1.2 -2.4 1.2 1.2 2.4 1.2 1.2 2.4 S -5578.61 4215.35 1.2 -1.2 2.4 0 1.2 -1.2 1.2 0 2.4 1.2 1.2 3.6 1.2 -1.2 -2.4 -2.4 1.2 -1.2 1.2 -2.4 1.2 6 2.4 2.4 1.2 -3.6 1.2 -1.2 2.4 -3.6 -1.2 0 1.2 1.2 2.4 2.4 1.2 1.2 1.2 -2.4 2.4 -2.4 1.2 -1.2 1.2 2.4 -2.4 1.2 1.2 -1.2 1.2 -3.6 1.2 0 2.4 1.2 1.2 1.2 1.2 1.2 2.4 -2.4 -1.2 -1.2 1.2 -3.6 2.4 1.2 1.2 2.4 1.2 2.4 2.4 -1.2 1.2 -1.2 1.2 -4.8 -2.4 -1.2 1.2 4.8 1.2 1.2 1.2 -1.2 2.4 -2.4 1.2 -1.2 1.2 -2.4 2.4 3.6 -1.2 4.8 1.2 -1.2 2.4 -3.6 1.2 -1.2 1.2 1.2 2.4 -1.2 1.2 3.6 1.2 0 -2.4 2.4 1.2 -6 1.2 1.2 1.2 1.2 2.4 3.6 1.2 -1.2 1.2 0 2.4 -3.6 -1.2 0 1.2 4.8 2.4 0 1.2 -1.2 1.2 0 2.4 -3.6 1.2 1.2 1.2 4.8 -2.4 0 1.2 -2.4 1.2 -1.2 1.2 -1.2 2.4 -2.4 1.2 4.8 1.2 6 2.4 -2.4 -1.2 -4.8 3.6 0 1.2 2.4 1.2 2.4 2.4 2.4 1.2 -2.4 1.2 -3.6 2.4 -2.4 -1.2 3.6 1.2 1.2 1.2 1.2 2.4 0 1.2 -6 1.2 -1.2 2.4 4.8 1.2 2.4 -1.2 -1.2 2.4 -1.2 1.2 0 1.2 2.4 2.4 3.6 1.2 4.8 1.2 -2.4 2.4 -3.6 -2.4 0 1.2 4.8 2.4 3.6 1.2 0 1.2 -2.4 2.39 0 1.2 1.2 1.2 0 -2.4 2.4 1.2 1.2 1.2 -4.8 2.4 -2.4 1.2 -2.4 1.2 3.6 2.4 0 1.2 -1.2 -1.2 -1.2 1.2 -2.4 2.4 -1.2 1.2 1.2 S -5775.4 4214.15 1.2 2.4 2.4 -3.6 1.2 -4.8 1.2 1.2 2.4 -1.2 1.2 3.6 1.2 3.6 -2.4 -4.8 1.2 -3.6 1.2 -1.2 2.4 0 1.2 3.6 1.2 1.2 1.2 -1.2 2.4 0 -1.2 -2.4 1.2 4.8 2.4 -2.4 1.2 1.2 1.2 -1.2 2.4 -1.2 1.2 -3.6 1.2 1.2 -2.4 -1.2 1.2 -4.8 1.2 -7.2 2.4 -9.6 1.2 -7.2 1.2 -2.4 1.2 7.2 2.4 25.2 -1.2 30 1.2 30 2.4 25.2 1.2 24 1.2 28.8 2.4 32.4 1.2 26.4 1.2 6 -2.4 -32.4 S -5839 4376.15 1.2 -78 S -5840.2 4298.15 1.2 -76.8 S -5841.4 4221.35 2.4 -31.2 1.2 6 1.2 4.8 1.2 0 2.4 -2.4 1.2 1.2 1.2 2.4 -2.4 -4.8 2.4 0 2.4 1.2 1.2 1.2 1.2 2.4 2.4 -1.2 1.2 -1.2 1.2 -3.6 -2.4 -2.4 1.2 4.8 1.2 0 1.2 1.2 2.4 -1.2 1.2 -2.4 1.2 1.2 2.4 1.2 -1.2 1.2 1.2 -1.2 2.4 -3.6 1.2 2.4 1.2 0 2.4 2.4 2.4 0 2.4 -1.2 -1.2 -3.6 1.2 4.8 1.2 0 2.4 2.4 1.2 0 1.2 -2.4 2.4 -3.6 1.2 1.2 -1.2 2.4 2.4 2.4 1.2 2.4 1.2 -4.8 4.8 0 2.4 1.2 1.2 0 1.2 -3.6 -1.2 -1.2 2.4 0 1.2 1.2 1.2 2.4 2.4 0 1.2 -2.4 1.2 -2.4 2.4 0 -1.2 3.6 1.2 1.2 2.4 0 1.2 -4.8 1.2 -1.2 1.2 -1.2 2.4 0 1.2 3.6 -1.2 -2.4 2.4 -2.4 1.2 -3.6 1.2 -2.4 2.4 2.4 1.2 -1.2 1.2 -2.4 2.4 -2.4 -1.2 -1.2 1.2 -1.2 3.6 0 1.2 -2.4 1.2 -2.4 2.4 -3.6 1.2 1.2 1.2 1.2 -2.4 1.2 1.2 -3.6 1.2 -2.4 2.4 -2.4 1.2 1.2 1.2 1.2 2.4 3.6 1.19 1.2 -1.2 -2.4 2.4 -1.2 1.2 2.4 1.2 4.8 1.2 3.6 2.4 1.2 1.2 3.6 1.2 0 -2.4 1.2 1.2 3.6 1.2 8.4 2.4 -1.2 1.2 -1.2 1.2 -1.2 2.4 4.8 1.2 1.2 -1.2 4.8 2.4 3.6 1.2 0 1.2 -2.4 1.2 2.4 2.4 3.6 1.2 6 1.2 -3.6 -2.4 -2.4 1.2 1.2 1.2 1.2 2.4 2.4 1.2 2.4 1.2 -3.6 2.4 -3.6 1.2 -1.2 -1.2 4.8 S -6038.19 4216.55 2.4 1.2 2.4 0 1.2 -3.6 2.4 -2.4 1.2 0 1.2 3.6 2.4 4.8 -1.2 -2.4 1.2 -2.4 2.4 -2.4 1.2 -3.6 1.2 3.6 2.4 3.6 1.2 -2.4 1.2 2.4 -2.4 -4.8 1.2 -1.2 1.2 2.4 1.2 2.4 2.4 -2.4 1.2 -2.4 1.2 -1.2 2.4 1.2 -1.2 2.4 1.2 1.2 2.4 -1.2 1.2 -4.8 1.2 -2.4 2.4 2.4 1.2 0 1.2 3.6 -2.4 -1.2 1.2 1.2 1.2 -3.6 1.2 1.2 2.4 -1.2 1.2 1.2 1.2 1.2 2.4 -2.4 -1.2 -1.2 1.2 1.2 2.4 3.6 1.2 2.4 1.2 -6 2.4 0 1.2 -1.2 1.2 -2.4 -2.4 1.2 1.2 7.2 1.2 -2.4 1.2 -1.2 2.4 -2.4 1.2 -1.2 1.2 1.2 2.4 7.2 -1.2 -3.6 1.2 2.4 2.4 -4.8 1.2 1.2 1.2 0 2.4 6 1.2 -3.6 1.2 -2.4 -2.4 0 1.2 -1.2 1.2 4.8 1.2 3.6 2.4 -2.4 1.2 -1.2 1.2 -3.6 2.4 0 -1.2 3.6 1.2 3.6 2.4 -1.2 1.2 0 1.2 -3.6 2.4 -1.2 1.2 2.4 1.2 2.4 -2.4 1.2 1.2 -1.2 1.2 -2.4 1.2 0 2.4 1.2 1.2 0 1.2 -1.2 2.4 -1.2 -1.2 -1.2 1.2 3.6 2.4 6 1.2 -1.2 1.2 -1.2 2.4 1.2 1.2 -1.2 1.2 2.4 -2.4 1.2 1.2 2.4 1.2 0 1.2 -2.4 2.4 -1.2 1.2 6 1.2 2.4 7.2 0 -1.2 -4.8 1.2 -1.2 2.4 0 1.2 -2.4 1.2 0 2.4 1.2 1.2 -2.4 1.2 1.2 -1.2 2.4 2.4 -6 1.2 0 1.2 -1.2 2.39 -1.2 1.2 3.6 1.2 1.2 2.4 -1.2 -1.2 0 1.2 -3.6 S -6234.98 4214.15 2.4 -1.2 1.2 2.4 1.2 2.4 2.4 -2.4 1.2 0 1.2 -3.6 1.2 1.2 -2.4 1.2 1.2 1.2 1.2 -1.2 2.4 -2.4 1.2 0 1.2 1.2 2.4 0 1.2 4.8 -1.2 -6 2.4 -4.8 1.2 -7.2 1.2 -6 2.4 -4.8 1.2 -2.4 1.2 -6 1.2 3.6 -2.4 20.4 1.2 28.8 1.2 26.4 2.4 21.6 1.2 18 1.2 24 2.4 25.2 1.2 24 -1.2 9.6 2.4 -26.4 S -6287.78 4355.75 1.2 -73.2 S -6288.98 4282.55 1.2 -67.2 S -6290.18 4215.35 2.4 -30 1.2 8.4 1.2 10.8 1.2 4.8 2.4 -2.4 1.2 0 1.2 1.2 -2.4 -2.4 1.2 2.4 1.2 2.4 2.4 -3.6 1.2 -1.2 1.2 -2.4 2.4 0 1.2 4.8 -1.2 4.8 2.4 -4.8 1.2 -1.2 1.2 -4.8 1.2 0 2.4 2.4 1.2 2.4 1.2 1.2 -2.4 -2.4 1.2 -3.6 1.2 0 2.4 4.8 1.2 2.4 1.2 -2.4 2.4 -1.2 1.2 -4.8 -1.2 0 2.4 4.8 1.2 2.4 1.2 1.2 1.2 -1.2 2.4 -3.6 1.2 -1.2 1.2 3.6 -2.4 2.4 1.2 -1.2 1.2 -2.4 3.6 0 1.2 1.2 2.4 1.2 1.2 -2.4 1.2 0 -2.4 -2.4 1.2 1.2 1.2 2.4 1.2 1.2 2.4 -2.4 1.2 -3.6 1.2 -1.2 2.4 0 -1.2 2.4 1.2 3.6 2.4 0 1.2 -3.6 1.2 -3.6 2.4 1.2 1.2 2.4 1.2 -1.2 -2.4 -2.4 1.2 -1.2 1.2 -2.4 1.2 -3.6 2.4 3.6 1.2 3.6 1.2 -1.2 2.4 -4.8 -1.2 0 1.2 -2.4 2.4 0 1.2 1.2 1.2 -1.2 2.4 -6 1.2 -2.4 1.2 -1.2 -2.4 3.6 1.2 1.2 1.2 -2.4 1.2 -3.6 2.4 -1.2 1.2 -1.2 1.2 1.2 2.4 1.2 -1.2 -1.2 1.2 -1.2 2.4 -1.2 1.2 -2.4 1.2 3.6 2.4 3.6 2.4 0 2.4 3.6 -1.2 1.2 1.2 4.8 1.2 4.8 2.4 1.2 1.2 2.4 1.2 -1.2 2.4 1.2 1.2 7.2 -1.2 2.4 2.4 -1.2 1.2 1.2 1.2 -3.6 2.4 3.6 1.2 2.4 1.19 2.4 2.4 -2.4 -1.2 0 1.2 -2.4 1.2 0 2.4 2.4 1.2 3.6 1.2 0 2.4 -1.2 1.2 -4.8 -1.2 1.2 2.4 2.4 1.2 1.2 1.2 -2.4 S -6486.97 4211.75 2.4 -1.2 1.2 -3.6 1.2 0 2.4 3.6 1.2 2.4 1.2 -2.4 1.2 -1.2 -2.4 -1.2 2.4 0 2.4 4.8 1.2 -4.8 1.2 0 2.4 -4.8 1.2 -1.2 1.2 3.6 -2.4 6 1.2 -2.4 1.2 -1.2 2.4 -1.2 1.2 -2.4 1.2 0 1.2 1.2 2.4 -1.2 -1.2 -1.2 1.2 -1.2 2.4 -1.2 1.2 2.4 1.2 0 2.4 -3.6 1.2 1.2 1.2 -1.2 -2.4 1.2 1.2 1.2 1.2 4.8 1.2 -3.6 2.4 -2.4 1.2 -1.2 1.2 0 2.4 2.4 -1.2 2.4 1.2 -1.2 2.4 -2.4 1.2 -1.2 1.2 0 2.4 1.2 1.2 2.4 1.2 2.4 -2.4 -4.8 1.2 -2.4 1.2 -1.2 1.2 2.4 2.4 3.6 1.2 -3.6 1.2 -1.2 2.4 -2.4 -1.2 1.2 1.2 3.6 2.4 1.2 1.2 1.2 1.2 0 2.4 -1.2 1.2 -1.2 1.2 -1.2 -2.4 3.6 1.2 -3.6 1.2 -1.2 1.2 1.2 2.4 0 1.2 6 1.2 0 2.4 -6 -1.2 -1.2 1.2 -4.8 2.4 2.4 1.2 3.6 1.2 2.4 2.4 0 1.2 -3.6 1.2 -1.2 -2.4 -1.2 1.2 6 1.2 3.6 1.2 0 2.4 1.2 1.2 -2.4 1.2 1.2 2.4 3.6 -1.2 0 1.2 -2.4 2.4 0 1.2 2.4 1.2 -1.2 2.4 4.8 1.2 0 1.2 -2.4 -2.4 -2.4 1.2 -3.6 1.2 1.2 1.2 2.4 2.4 1.2 1.2 -3.6 1.2 0 2.4 -4.8 -1.2 3.6 1.2 -2.4 2.4 3.6 1.2 -6 1.2 -2.4 2.4 -2.4 1.2 0 1.2 4.8 -2.4 -1.2 1.2 1.2 1.2 0 1.2 -3.6 2.4 3.6 1.2 2.4 1.2 -2.4 2.4 -1.2 -1.2 0 1.2 -2.4 2.4 -1.2 1.2 0 1.2 1.2 S -6683.77 4196.15 2.4 1.2 1.2 -1.2 1.2 -3.6 2.4 0 1.2 1.2 1.2 4.8 1.2 -2.4 -2.4 -2.4 1.2 -3.6 1.19 -6 2.4 -4.8 1.2 1.2 1.2 -6 2.4 -4.8 1.2 4.8 -1.2 14.4 2.4 25.2 1.2 25.2 1.2 13.2 2.4 12 1.2 16.8 1.2 22.8 1.2 26.4 -2.4 9.6 1.2 -32.4 S -6723.36 4307.75 1.2 -61.2 S -6724.56 4246.55 2.4 -63.6 S -6726.96 4182.95 1.2 -24 1.2 2.4 2.4 12 1.2 7.2 1.2 -1.2 2.4 3.6 1.2 0 -1.2 3.6 2.4 2.4 1.2 1.2 1.2 -4.8 1.2 -1.2 3.6 0 1.2 1.2 2.4 -1.2 -1.2 0 1.2 1.2 3.6 0 1.2 4.8 2.4 0 1.2 -2.4 1.2 -2.4 2.4 1.2 -1.2 2.4 1.2 0 1.2 -1.2 2.4 1.2 1.2 -3.6 1.2 -3.6 2.4 4.8 1.2 1.2 -1.2 -2.4 2.4 0 1.2 -2.4 1.2 1.2 2.4 1.2 S -1149 4415 22 68 /1S -$C -$DApVPq#b6W`>n]Wqp&:f3d/0s8W,ts51Tch>P*8G5]$rmr$$tm=t~> -, -1168 4428 63 54 /4S -$C -,b4XB?ciGO0UGG`f@R34^['LT6m2Jqlg+2WQdYp+^6d:E?iHD?qHlnqde[ -, -[ 1.2 12.9732 ] 0 d -1240.8 5266.55 0 -606 P -1240.8 4434.95 0 -585.6 S -1243 4535 23 21 /1W -$C -1DUODl-lQps7LkVetK$N5Q~> -, -1701.6 5266.55 0 -606 P -1701.6 4434.95 0 -585.6 S -1704 4535 1W , -2161.2 5266.55 0 -606 P -2161.2 4434.95 0 -585.6 S -2163 4535 1W , -2608.8 5266.55 0 -606 P -2608.8 4434.95 0 -585.6 S -2611 4535 1W , -3057.6 5266.55 0 -606 P -3057.6 4434.95 0 -585.6 S -3060 4535 1W , -3505.2 5266.55 0 -606 P -3505.2 4434.95 0 -585.6 S -3507 4535 1W , -3968.4 5266.55 0 -606 P -3968.4 4434.95 0 -585.6 S -3970 4535 1W , -4338 5266.55 0 -606 P -4338 4434.95 0 -585.6 S -4332 4519 62 54 /4W -$C -4q!L(UVW'$!jpMCs%<L-^rmLc2*VFi-?Iug~> -, -4902 5266.55 0 -606 P -4902 4434.95 0 -585.6 S -4904 4535 1W , -5380.8 5266.55 0 -606 P -5380.8 4434.95 0 -585.6 S -5383 4535 1W , -5840.4 5266.55 0 -606 P -5840.4 4434.95 0 -585.6 S -5842 4535 1W , -6288 5266.55 0 -606 P -6288 4434.95 0 -585.6 S -6290 4535 1W , -6724.8 5266.55 0 -606 P -6724.8 4434.95 0 -585.6 S -6727 4535 1W , -7091 5634 49 68 /2A -$C -+p5[l&9*H3%Y>/ -, -7041 5634 2A , -6999 5635 32 68 /5A -$C -3#R!,@Mi:`s8W-!s8W-!s8W-!s8W-!s8W(8GVt48G^+IXG^+IX~> -, -6904 5635 60 53 /2G -$C -4q/A=1us1&Z4R,k2$MpUiP+2f\(gB+s)7kNs8Dors8W-!ldu0gf3_g0?%$[Y9;TK5KW1/fd"7l! -/;@ni~> -, -6850 5635 59 53 /5G -$C -4phdmr^[NT>A47_[Ih%9/slE?/si`-?C.g]9d`#`*#a&@6-k!q?0`1S@qsXRbs8Vq&ldG+9 -<5A`)'_jQH1I;'~> -, -6801 5634 53 55 /2K -$C --,[P$Jd2R<5j0>.&4*m$3_e%?QeS=nkr8Iq]!q_>9s=Tss8W)k[K#]&g>9S]0AB+`DQU%J'K-T. -d]gOk$reoY>W_~> -, -6747 5634 48 55 /5K -$C --,[u9U(D:";hkW$@F.AJ(l0X/H!"q(i1 -UYrrnK-A=O~> -, -6690 5635 54 53 /2O -$C -4r\j3"('&P\3q2%)t2\!^A\)d_uJf4s8T;!n@8M>[ -, -6629 5635 67 66 /5O -$C -0H"Cd1$?G8"Ul"NdL4U$\m9Vg\m6r&\m6qTqHY_?9@mL:9@lh?9,35DCC).D+!H:+@IW/mLAgl6 -s8B_4s8W,Is'K%a]HtEoaoQf'#Sb'ij>=Z&~> -, -763 5635 55 66 /2S -$C -0H$I01W'B3gAh3Qs8W-!s7.%!j;Kk-_oP.Hi85"5hf&J-rr:m5s8W,`J,M"6\6bL-.V=4M#Z-,? -%;^Z!^]~> -, -814 5635 5G , -867 5635 31 53 /5S -$C -4pCKo4b[ZYs8W-!s8W-!s8W-!s8W,Jn=97i^]~> -, -894 5634 4S , -952 5635 53 53 /2W -$C -,6:<"!;7/0J,fQKs8W-!s8W-!q>UhPs6o]cpT=DQ@GtZ[~> -, -1001 5635 2O , -1050 5635 2G , -1145 5635 5A , -1187 5634 46 68 /5W -$C -,6?_R_@@.`E9JG#-L!IlPBFQ'lZN7,^[A[;>HP9DgIg^7#t&E29%ZbT6X$ -, -1262 5635 72 67 /3A -$C -/fG(Ib4EHjO>1/JY?.pa^N?s@0AEY=Xf_QR>LqBEHXA*1HJ`hRh(S6.>OIjOQ2T7bIFA,C^Uh#E -Y.qq_=4R;RX6TQN~> -, -1329 5634 62 54 /6A -$C --35DXBS7B;LCOk\h#uSeFIT>rqpN7RV18OFs8W-!s8W-!s8W-!s8W-!s8V?_RWR#N"U@:;^]~> -, -1395 5634 55 55 /3E -$C -+Mf?`2hVYQ$@m)H"s!gcKV!e[FMH8gJ#32;^]3r@s8MlaKB5@7a<5F$DuY6J5POl\mB9`B[C3Np -_[BnS0OV-'MEVme+-9pf~> -, -1445 5634 6A , -1511 5634 37 55 /6E -$C -2jsp.J^Xbl,r"h@GX9#LT3"VaX0:j]PZ93aPpfa,PTZYL:kGN0:fOZu@8bJbs'D&lldkC9l"hrZ -Yeo%U*t/^*A4,8~> -, -1547 5635 2W , -1634 5635 5A , -1676 5633 47 69 /3I -$C -5'[D<$lg*D0]@crfQQ5c%c+a@\%?k?^Mi"N=AB,@E.d@9%m=_ -, -1726 5633 3I , -1776 5634 48 69 /6I -$C --,[P$KH1Y -, -6603 3495 31 41 /3M -$C -3!q87GI,o0gMYb`h7IjtmbPS6G5gt)k81o,fDA2=[DN;QX&.;"TE~> -, -6633 3494 32 42 /6M -$C -3g:1:-Z4MFdVcOlXm,/$XoD2sC]FG7s82bECOat(];sJiokc2f,n*a,:]~> -, -6678 3495 50 28 /3Q -$C -2@`t3^`YBgJd)S29n33Cs8W-!s8W-!s8W-!s1d9%D@muQ`%M7\CBn=9W&Ssp(dWi~> -, -6724 3495 3Q , -6771 3494 20 42 /6Q -$C -0`SW\^[;&>qg[B#GPf/Ks0qsAmJh)~> -, -6788 3494 7J , -6811 3494 2Y , -6838 3494 2U , -6864 3487 15 14 /3U -$X -!Pe]n!&+Bi!"8i9!!WE-!WE3#"9&E#!W2re~> -, -6894 3494 30 42 /6U -$C -3XZ'#M.<32FIT+Tl!OJVm^AD3g/go!9%m+\C(OC<7!GNm2aKC"lfl*4s6o>*qb"a46PU"D~> -, -6939 3495 3Q , -6986 3495 3Q , -7033 3494 6Q , -7049 3495 3Q , -7096 3494 45 41 /3Y -$C -.b-cJqL6&[aZH],X6Zg4l[AHV]lh"OI5bNiT"^\tX/l5bmbn6R3(tY~> -, -cleartomark end end pagesave restore showpage -%%PageTrailer +%%Page: 0 1 + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % If this message appears in your printout, you may be using a buggy version % + % of Adobe TranScript. Try using pschart with the -u option as a workaround. % + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +save 100 dict begin /pschart exch def +/dpi 300 def +/mm {72 mul 25.4 div}def +/lwmm 0.2 def +/lw lwmm mm def +/tm matrix currentmatrix def +/gm matrix currentmatrix def +/I {/Times-Italic findfont exch scalefont setfont}def +/R {/Times-Roman findfont exch scalefont setfont}def +/C {/Courier findfont exch scalefont setfont}def +/grid { newpath 0 setlinecap + /dy1 exch dpi 25.4 div mul lw sub def /dy2 dy1 lw add 5 mul def + /dx1 exch dpi 25.4 div mul lw sub def /dx2 dx1 lw add 5 mul def + /y1 exch def /x1 exch def /y0 exch def /x0 exch def + dpi 100 idiv setlinewidth x0 y0 moveto x1 y0 lineto x1 y1 lineto x0 y1 lineto + closepath stroke lw setlinewidth [lw dx1] 0 setdash + y0 dy2 add dy2 y1 {newpath dup x0 exch moveto x1 exch lineto stroke}for + [lw dy1] 0 setdash + x0 dx2 add dx2 x1 {newpath dup y0 moveto y1 lineto stroke }for + [] 0 setdash +}bind def +/Grid { newpath 0 setlinecap + /dy1 exch dpi 25.4 div mul lw sub def /dy2 dy1 lw add 5 mul def + /dx1 exch dpi 25.4 div mul lw sub def /dx2 dx1 lw add 5 mul def + /y1 exch def /x1 exch def /y0 exch def /x0 exch def + dpi 100 idiv setlinewidth x0 y0 moveto x1 y0 lineto x1 y1 lineto x0 y1 lineto + closepath stroke lw setlinewidth + y0 dy2 add dy2 y1 {newpath dup x0 exch moveto x1 exch lineto stroke}for + x0 dx2 add dx2 x1 {newpath dup y0 moveto y1 lineto stroke }for +}bind def +/prpn { mm exch mm exch moveto 10 R /pn exch def /str 10 string def + pn str cvs stringwidth exch -.5 mul exch rmoveto + (- ) stringwidth exch neg exch rmoveto + (- ) show + pn str cvs show + ( -) show } def +/prco { mm exch mm exch moveto + 6 R (Copyright ) show + /Symbol findfont 6 scalefont setfont (\323) show + 6 R show } def +/newpage {/dpi exch def tm setmatrix newpath [] 0 setdash + 1 setlinecap /lw lwmm mm def mark } def +/ss {72 dpi div dup scale /gm matrix currentmatrix def lw setlinewidth} def +/t {tm setmatrix show gm setmatrix}def +/b {tm setmatrix dup stringwidth exch neg exch rmoveto currentpoint 3 -1 roll + show moveto gm setmatrix}def +/m {newpath moveto}def +/N {rlineto currentpoint stroke moveto}bind def +/z {{counttomark 2 ge{79 sub rlineto}{126 exch sub}ifelse}forall + currentpoint stroke moveto}bind def +/ay 0 def +/Ay {/ay exch def}def +/ya 0 def +/yb 0 def +/yc 0 def +/yd 0 def +/sb {/yd exch def /yc exch def /yb exch def /ya exch def}def +/Sb {/yb exch def /ya exch def /yc yb def /yd yb def}def +/mb { dup ya newpath moveto dup yb lineto dup yc moveto yd lineto +stroke}bind def +/a {ya yb ne {dup mb}if ay m t}bind def +/A {ya yb ne {dup mb}if ay m (\267) t}bind def +/endpschart {cleartomark showpage pschart end restore}def +/lwmm 0.500000 def +300 newpage +0 0 0 setrgbcolor +ss +1 0.5 0.5 setrgbcolor +236 885 3188 1653 1 1 Grid +0 0 0 setrgbcolor +12 R +236 1665 m +224 1244 m +(0:00)b +3200 1244 m +(0:10)t +10 I +224 1449 m +(MLII)b +3200 1449 m +(MLII)t +236 1482 m +(~O}O}O}O}O~O}O}R}M}N}O~M}P}N}N}N~N}Q}Q}M}N}N~P}R}Q}M}K~M}K}Q}L}O}N~M}O}O}P}P~N}N}M}O}O}O~P}M}N}R}P}O~N}O}L}Q}N~Q}N}N}M}N}N~L}L}O}L}I~L}O}V}Z}\\}a~e}n}k}b}V~G}2}%}\(}7}G~P}V}S}P}N~M}Q}P}P}P}M~N}N}Q}L}Q}O~O}O}P}N}O~M}N}R}P}Q}M~O}N}N}P}N~N}N}O}Q}P}O~O}N) z +(}N}R}O~N}O}O}O}N}P~N}N}N}P}O}Q~P}N}O}M}Q~O}O}M}O}N}Q~O}P}O}M}O~O}Q}O}O}M}N~O}P}O}Q}M~N}O}O}N}P}N~M}Q}P}O}O~M}O}P}O}P}O~N}O}P}R}P}O~N}N}R}Q}O~P}N}P}P}P}Q~P}O}M}P}P~Q}M}O}N}O}Q~N}N}P}N}P~O}M}P}O}N}N~P}P}M}N}N}Q~O}Q}L}O}O~P}O}P}N}N}N~P}P}N}O}M~O}N}P}O}N) z +(}O~O}P}Q}O}N~N}N}Q}N}O}N~O}M}Q}P}P~M}M}N}Q}Q}N~O}M}N}P}P}P~O}O}O}P}N~Q}N}O}N}O}Q~P}M}N}N}P~P}P}P}P}O}O~O}R}O}N}S~O}Q}P}N}N}M~P}O}O}O}N}N~O}O}Q}P}P~J}K}O}M}N}L~O}P}P}N}P~N}M}N}P}O}N~O}N}R}O}O~P}L}N}Q}P}P~N}M}M}P}L~J}M}K}K}L}S~Y}]}_}`}m}m~j}b}V}K}=~0}\)) z +(}.}<}A}H~L}Q}S}S}O~P}N}P}O}O}N~P}O}O}P}M~M}O}P}P}O}M~Q}P}P}M}O}M~O}O}Q}O}O~M}N}Q}N}O}O~N}P}P}O}P~O}M}O}Q}O}P~O}L}O}Q}O~Q}M}O}M}P}P~O}P}L}N}O~Q}P}M}N}O}O~P}N}N}P}M}O~O}Q}M}M}N~P}Q}N}N}N}N~P}O}P}N}N~N}Q}P}P}O}P~N}S}Q}R}O~P}N}R}Q}P}N~N}O}P}Q}P}O~L}O}P}P) z +(}O~P}L}N}R}O}P~O}L}O}Q}O~N}P}N}O}P}P~P}M}O}M}P~Q}M}O}O}M}Q~N}P}N}N}N~P}O}O}P}L}O~O}Q}O}O}M}O~O}R}N}O}N~M}R}O}O}O}L~O}O}P}P}N~O}O}O}Q}O}O~M}O}O}P}P~M}O}N}P}P}P~N}O}O}P}O}O~O}M}O}P}P~Q}Q}O}O}Q}P~P}O}O}P}P~P}Q}P}L}N}P~N}P}N}O}L~O}P}Q}R}O}N~K}N}N}O}L~M}M) z +(}P}O}O}L~N}P}P}O}N}N~N}N}Q}O}O~M}O}O}P}Q}N~L}M}O}L}K~L}L}K}M}T}]~b}b}g}r}p~f}X}B}\() z +1 -56 N +(}#~:}O}V}R}R}O~O}O}O}M}Q~M}Q}O}O}M}O~P}O}M}P}N~O}P}O}N}O}M~Q}P}O}O}M~N}Q}O}P}O}M~P}Q}P}N}O~P}L}P}Q}N}O~M}N}O}P}O}P~M}O}P}O}Q~O}N}M}Q}O}Q~N}O}N}R}M~P}O}N}M}P}O~O}N}O}O}N~P}O}P}L}O}O~Q}O}O}O}N}O~P}R}O}O}Q~Q}Q}P}O}O}O~P}O}Q}O}N~P}O}P}O}O}N~O}O}N}Q}N~N}N) z +(}O}Q}O}O~M}O}Q}O}P~N}M}N}P}O}O~O}L}O}P}P}O~O}N}M}P}O~N}O}O}N}P}P~P}M}P}M}O~Q}N}P}M}M}Q~P}N}P}N}M~Q}O}Q}O}O}M~O}Q}O}P}M~N}P}O}O}O}M~N}R}O}O}O}O~N}P}P}N}P~O}O}P}S}O}O~O}O}Q}P}P~N}O}P}P}P}P~N}N}N}N}Q~N}O}N}P}N}P~P}P}Q}M}L}L~O}J}N}L}O~O}Q}N}N}N}O~P}O}O}N) z +(}M~P}R}O}M}O}L~P}P}P}M}M~K}M}L}N}M}M~H}J}Q}U}Y~\\}\\}b}g}p}n~d}U}D},) z +1 -48 N +(}#~8}M}T}W}Q~O}N}N}O}R}N~O}M}O}O}P~P}O}M}N}P}Q~M}O}O}O}O~Q}P}N}O}N}O~O}P}O}M}O}P~P}P}P}N}N~O}P}P}N}N}O~P}P}O}N}N~O}O}R}N}N}N~P}O}P}N}N~P}P}O}O}O}N~N}O}R}O}N~N}N}O}Q}P}M~O}N}Q}O}P}O~M}N}P}O}Q~O}O}N}R}Q}P~P}N}O}P}Q~Q}M}O}Q}O}O~P}N}N}N}O~P}P}N}N}N}P~Q}O) z +(}P}L}N}P~O}O}Q}M}N~P}O}O}N}N}P~N}Q}O}N}L~N}P}P}O}P}N~N}O}Q}N}O~N}M}P}P}O}O~M}O}O}P}P~O}O}O}N}P}P~M}O}N}M}P}P~O}O}O}O}P~O}N}O}K}R}O~P}O}O}N}P~Q}O}O}O}N}P~P}S}O}N}N~R}O}P}N}P}O~P}Q}Q}M}P}M~O}P}P}M}N~P}O}M}P}M}R~P}O}M}M}M~M}N}N}M}Q}O~M}N}P}P}P~M}N}N}N}P) z +(}O~O}M}P}O}P~O}P}N}M}Q}P~P}N}N}M}N}J~N}J}K}I}Q~X}]}_}c}k}q~j}]}J}2}!~'}5}E}R}R}T~P}P}O}N}N~M}O}Q}Q}M}O~N}P}R}N}O}O~O}O}P}N}O~N}L}Q}P}P}N~N}M}P}P}O~O}O}N}P}N}P~O}O}N}O}P~Q}O}O}N}P}O~M}O}N}M}Q~P}Q}O}L}P}O~P}P}O}M}N}O~Q}P}N}N}M~O}O}P}N}L}P~N}Q}N}L}P~O}Q) z +(}P}P}N}N~N}P}P}Q}P~M}P}P}R}Q}O~O}O}Q}Q}Q}P~O}M}Q}O}O~O}N}N}P}P}O~P}N}M}Q}N~Q}O}N}P}Q}O~N}N}N}M}Q~P}O}M}N}N}P~P}N}N}O}N~Q}O}O}P}M}O~M}Q}P}N}Q}M~O}O}O}O}O~N}P}P}P}N}N~L}P}P}P}P~O}L}Q}Q}O}M~O}O}O}O}O~O}N}O}O}Q}O~O}L}O}P}P}P~Q}O}O}S}O~Q}O}N}P}P}P~O}Q}M}O) z +(}Q~N}P}M}N}N}Q~P}O}M}N}P~Q}R}P}M}M}J~O}N}O}L}L~N}O}N}O}O}P~M}P}P}O}N}N~N}P}N}Q}P~M}L}R}P}O}O~N}L}N}O}K~K}M}K}K}O}U~Y}\\}_}g}o~q}g}Y}D}/}!~&}6}F}P}T}U~P}O}O}N}P~P}O}O}M}N}O~Q}O}M}O}N~P}Q}O}N}M}O~O}Q}P}O}M~N}P}Q}O}O}M~O}O}P}P}O~M}M}P}P}O}O~N}N}O}Q}Q}O~N) z +(}N}O}P}P~M}N}O}O}O}P~N}O}N}Q}P~N}P}O}N}P}P~O}M}O}M}O~Q}O}N}M}N}O~P}O}O}M}P~O}P}O}N}O}N~Q}O}Q}Q}O}Q~Q}S}O}P}N~O}R}P}Q}N}O~M}P}Q}O}M~P}N}P}P}P}O~M}O}P}P}O~O}O}M}P}P}O~M}N}N}P}O}Q~N}N}N}O}P~O}N}O}M}O}P~P}N}O}N}O~Q}M}P}M}O}P~Q}O}O}L}O~O}P}O}O}N}O~O}P}O}O) z +(}O~N}P}P}P}M}P~M}O}R}M}N}O~O}O}O}P}O~N}O}P}P}O}O~M}O}P}P}P~O}P}M}Q}R}Q~O}O}N}P}Q~P}P}O}O}P}Q~N}O}M}M}O}P~Q}L}O}N}P~R}Q}L}K}M}N~M}N}M}N}P~O}N}O}O}N}N~P}P}P}O}N~M}O}O}Q}N}N~N}Q}O}O}O~N}N}N}O}J}K~K}M}L}M}S}Y~_}`}g}k}p~j}_}L}>}\() z +1 -50 N +(~\)}>}L}T}T~R}O}N}M}O}P~P}O}O}M}O~P}P}O}M}N}P~O}N}P}N}M}P~P}P}N}O}N~O}P}O}O}O}M~Q}P}P}O}N~N}P}Q}O}O}N~N}Q}L}Q}P~M}N}O}P}P}O~N}N}O}P}P~N}O}N}P}O}Q~O}O}L}R}O}P~M}N}M}P}Q~O}P}M}N}O}O~O}Q}N}N}P~Q}N}O}M}M}S~P}P}M}N}O~Q}P}P}O}Q}O~Q}P}P}Q}O}M~Q}P}N}O}O~N}O}P) z +(}P}N}O~N}O}P}O}O~N}N}O}Q}O}O~O}M}Q}O}P~N}N}M}O}R}P~O}O}N}O}P~P}O}O}M}Q}Q~P}O}N}O}O}S~N}L}N}R}R~N}N}N}N}O}N~O}L}N}K}N~O}Q}L}N}N}N~N}P}P}N}M~N}P}P}O}O}O~M}R}P}N}O}P~M}Q}O}P}M~P}L}P}N}L}K~J}J}O}K}M~R}[}_}c}b}k~l}j}\\}S}>~') z +1 -50 N +(}+}>}P}U~T}P}M}M}Q~N}Q}N}N}M}Q~P}O}O}N}N}N~P}P}O}O}N~P}P}N}P}L}N~P}O}Q}O}O~N}O}P}Q}N}N~N}P}N}P}O~M}N}P}R}O}O~M}O}P}O}P}P~M}O}P}O}P~N}N}N}O}Q}O~N}O}N}P}P~O}O}N}M}P}P~P}O}O}L}Q~N}P}N}N}M}P~P}P}N}O}N~Q}P}P}O}N}M~Q}R}O}O}M}Q~P}P}P}P}N~M}R}P}Q}O}O~M}P}P}O) z +(}O~L}P}L}R}P}O~P}O}O}P}N~O}N}N}O}P}P~N}N}O}N}Q}O~P}L}N}P}O~M}N}N}O}Q}P~O}N}N}N}P~O}P}N}N}Q}N~P}P}N}N}N~Q}O}O}O}O}N~O}P}N}P}N~N}P}O}P}N}O~K}P}R}O}N}O~L}Q}P}Q}P~N}N}O}P}O}Q~L}N}O}P}O~N}N}N}O}Q}O~N}P}N}P}P~O}O}N}O}P}P~P}N}P}N}O}O~N}P}N}N}P~O}O}O}M}O}P~Q) z +(}N}O}N}N~P}O}P}O}O}O~P}P}N}O}N~O}O}N}Q}N}P~N}O}O}P}Q~O}O}R}O}P}N~P}N}R}P}P}P~O}O}N}P}O~O}L}N}P}P}Q~M}M}K}R}O~R}P}N}N}M}N~N}N}L}M}O~O}O}O}O}O}M~R}M}O}L}M~P}P}Q}O}M}M~P}Q}O}O}M}L~N}M}K}P}K~I}N}U}\\}\\}]~c}k}o}j}^~T}D}3}\(},}6~>}F}I}Q}S~S}Q}O}Q}Q}P~O}N}O) z +(}N}P}M~O}N}N}O}Q~O}O}N}O}O}Q~N}O}P}M}O~P}O}O}N}O}P~O}P}N}O}N~R}M}P}N}N}O~P}O}Q}N}N~L}Q}O}P}O}N~O}P}O}Q}O}N~O}P}P}O}N~O}N}N}R}O}O~O}L}Q}P}N~M}N}L}P}P}N~O}N}M}N}Q~M}N}P}L}Q}Q~N}P}M}O}P}Q~Q}O}N}O}R~P}P}Q}O}P}P~P}R}P}N}P~P}P}P}Q}M}P~P}P}N}O}O~L}R}N}O}N}O) z +(~O}O}Q}O}N~N}N}P}O}P}N~N}O}O}Q}N}O~N}O}P}O}O~O}O}L}O}O}Q~M}N}O}O}P~Q}O}M}N}Q}P~O}O}M}O}O~P}P}O}L}O}P~Q}M}O}N}L}Q~Q}O}O}N}N~P}P}O}O}N}O~P}N}Q}N}N~O}O}Q}O}N}M~O}Q}Q}P}P~Q}N}P}O}Q}P~Q}M}P}P}P~O}N}N}P}O}P~N}L}O}P}N}O~R}P}O}N}L~N}N}L}N}L}P~N}O}M}N}O~R}P}N) z +(}N}O}O~O}P}N}O}M~O}Q}P}L}O}N~O}P}O}N}K}J~K}M}N}K}L~V}]}a}a}h}l~l}h}X}H}2~ }!}2}F}S}R~S}Q}O}O}Q~P}M}M}N}Q}O~O}O}M}Q}P~O}N}P}N}Q}P~P}M}O}O}O}P~N}O}O}N}Q~M}P}P}M}O}N~P}P}P}M}N~P}N}P}O}O}O~O}P}P}M}O~P}P}O}O}O}O~L}O}P}P}O}M~O}P}Q}N}N~N}M}Q}O}Q}N~N}M}P}Q}O) z +(~O}N}N}O}P}P~O}N}M}P}P~P}N}P}O}R}Q~P}P}O}O}Q~P}Q}N}O}N}Q~O}P}P}N}O}Q~O}P}N}O}M~Q}O}P}N}M}N~P}Q}O}N}N~N}P}O}P}P}L~O}P}O}N}P~N}M}O}Q}P}N~M}M}P}R}N}N~O}L}Q}P}O~N}O}L}Q}Q}P~M}N}O}N}Q~O}N}N}N}P}Q~O}N}O}N}Q~O}P}O}N}N}O~Q}P}N}N}O~P}O}P}N}O}L~Q}P}Q}M}O}M~P}P) z +(}Q}O}O~P}Q}R}P}O}N~O}Q}Q}N}O~Q}N}O}N}O}N~N}N}Q}O}N~P}P}P}R}L}L~N}M}M}N}N}O~M}N}M}O}Q~O}O}N}N}O}O~Q}M}N}N}Q~O}Q}O}O}L}O~P}N}K}H}L~L}L}M}T}\\}_~e}h}p}n}f~T}@}\)) z +1 -53 N +(}&}>~M}X}T}P}N}M~O}O}Q}O}N~N}N}P}O}O}P~M}M}O}Q}P~O}N}M}P}P}P~O}N}O}O}P~P}N}O}M}Q}O~P}N}N}O}P}P~P}O}M}N}P~O}Q}N}P}N}O~P}P}N}M}P~P}M}Q}O}N}M~P}P}N}Q}N~N}O}O}Q}N}O~N}O}O}O}P~M}O}P}O}P}O~N}O}N}R}O}O~N}N}S}O}R~O}N}P}O}P}O~O}Q}O}Q}P~P}P}M}N}Q}P~P}L}N}O}O~O) z +(}P}O}O}N}O~P}O}P}N}M~P}O}P}O}N}M~Q}P}O}O}N}M~O}P}N}O}P~M}P}P}N}P}M~M}P}O}Q}N~N}M}P}Q}N}P~N}N}Q}P}O~N}O}M}P}O}P~O}M}O}O}Q}O~M}O}O}Q}O~Q}P}N}M}O}P~O}N}N}O}P~P}O}O}M}P}Q~R}R}M}Q}N~R}O}P}O}Q}O~O}Q}P}N}L~N}O}O}O}O}O~N}P}S}P}M}I~M}O}M}O}N~M}O}M}P}P}O~O}M}P) z +(}O}P~O}N}N}N}O}O~O}O}M}P}P~P}N}L}M}L}K~M}L}J}M}T}]~^}a}f}o}p~b}T}@}-}!}\(~<}L}T}S}Q~P}O}P}O}O}N~P}P}O}P}O~L}P}P}P}N}N~M}P}N}Q}O~M}P}P}N}P}N~P}N}R}O}O}N~N}O}O}Q}M~N}O}N}P}P}O~M}O}O}O}P~P}O}O}P}P}P~N}M}O}O}N~O}O}P}N}N}Q~O}Q}M}O}N}P~P}P}M}M}M~O}R}O}O}N}M) z +(~Q}O}Q}O}M~O}P}P}Q}O}O~O}Q}P}R}N~O}N}Q}P}Q}O~M}P}P}P}O~O}N}N}P}O}Q~N}N}M}O}P}N~O}N}N}P}P~O}O}N}N}P}O~P}M}P}N}P~O}P}N}M}N}P~O}N}N}N}Q~O}P}N}O}M}O~Q}M}Q}O}N}N~P}P}N}P}M~O}O}O}Q}O}P~M}Q}N}N}P~O}M}Q}P}O}O~M}N}O}Q}O~Q}L}N}O}S}P~R}O}N}P}P~Q}P}O}M}Q}Q~O}N}O) z +(}M}N}P~P}M}N}M}P~P}S}O}K}K}P~O}L}N}M}M~O}Q}P}P}N}M~O}P}O}N}M~O}O}O}O}O}M~P}P}N}P}O}O~M}M}L}M}M~L}I}L}U}[}_~`}f}p}m}b~V}A}+}"}-}<~I}O}S}T}Q~P}N}O}M}N}Q~O}O}O}O}Q~O}P}L}O}O}Q~O}O}N}N}N}O~P}O}N}O}N~N) z +224 1065 m +(V5)b +3200 1065 m +(V5)t +236 1094 m +(~O}O}O}O}O~O}O}M}O}N}O~P}P}O}P}P~O}O}Q}O}M}L~O}N}Q}N}O~N}N}P}N}M}N~L}P}S}P}N~M}M}P}O}Q}O~M}N}O}P}O}N~N}O}O}Q}Q~M}N}L}K}O}N~M}K}J}P}U~\\}Z}Y}W}Y}\\~^}Z}U}B}0~,}>}M}S}S}N~R}Q}O}K}O~Q}O}N}P}L}O~O}Q}P}P}M}L~P}O}Q}O}L~P}P}Q}N}O}O~M}O}P}P}O~M}N}O}P}Q}O~M}N) z +(}R}L}P~P}N}M}Q}P}N~N}M}P}N}Q}P~M}P}M}P}Q~O}N}M}N}O}R~O}M}N}M}N~P}O}O}N}N}O~N}O}M}O}M~O}O}P}N}M}O~O}O}P}O}M~N}P}P}P}O}Q~O}Q}O}R}P}N~O}P}Q}R}P~O}O}P}Q}Q}O~M}O}P}P}P~L}Q}L}O}P}O~Q}N}N}N}Q~O}P}M}N}P}O~O}O}M}P}M}R~Q}O}L}M}N~P}O}O}O}L}Q~P}P}L}N}N~P}P}P}O}O) z +(}M~O}P}Q}N}O~L}O}P}O}N}O~O}P}Q}M}N~N}P}O}N}Q}O~O}M}Q}N}Q}O~N}O}N}P}O~O}N}O}O}Q}P~M}O}O}L}P~P}O}N}P}N}Q~Q}O}P}N}O~Q}P}N}P}L}O~R}O}O}N}N}O~Q}O}O}M}M~P}N}O}N}O}N~P}O}Q}M}N~L}O}O}R}N}N~O}O}O}Q}N~N}O}N}R}O}M~N}L}N}N}N~K}L}O}U}[}^~Z}U}U}X}\\}\\~Y}N}@}1}/~9) z +(}C}M}Q}V}T~T}P}Q}M}O~Q}O}O}O}N}Q~O}O}O}N}M~P}Q}P}O}N}L~P}P}P}P}N}N~O}P}P}N}O~N}P}P}O}O}N~N}O}Q}O}P~M}O}N}P}P}N~N}O}O}P}O~O}N}M}O}R}O~N}N}L}O}P~Q}M}M}O}N}O~P}L}O}M}O}P~O}N}L}O}N~P}P}N}N}N}N~P}O}O}P}N~Q}P}Q}P}P}N~R}S}R}O}Q~N}O}Q}R}P}O~O}P}P}P}O}N~O}O}P) z +(}Q}M~N}O}O}P}Q}O~M}N}O}O}Q~N}O}N}O}P}O~O}O}N}M}Q~P}O}O}N}N}Q~O}N}O}O}L~Q}Q}N}L}N}Q~P}P}O}L}O}O~P}P}O}N}N~O}O}R}M}N}P~N}P}O}O}N~N}P}P}P}P}N~M}N}Q}P}P~K}P}P}P}P}N~M}O}O}Q}P}O~M}M}Q}Q}O~N}N}O}N}Q}P~O}N}O}O}R~P}M}O}N}P}R~Q}O}L}O}O~P}Q}M}N}M}O~O}O}Q}L}M~P) z +(}P}O}N}N}N~P}O}P}P}M}N~O}O}R}N}N~N}O}P}P}M}O~M}M}L}M}I~L}R}Z}^}a}]~]}]}^}^}W~D}-}$}7}L}S~O}N}N}P}O}O~N}O}O}M}R~O}O}M}N}O}P~P}O}M}N}O~P}Q}N}M}N}Q~P}P}O}O}L~O}Q}P}O}O}M~O}O}P}O}N~N}O}O}R}M}N~N}O}Q}O}N}M~O}O}O}R}L~O}N}O}N}P}O~L}M}N}P}O~N}N}N}N}Q}O~M}M}M) z +(}P}O~Q}M}O}M}P}P~O}P}O}N}R}Q~Q}Q}P}Q}P~R}Q}P}P}N}Q~R}P}O}N}N~N}R}P}N}O}M~Q}P}Q}L}N~N}Q}O}Q}N}O~M}O}P}P}O~O}L}O}P}O}P~M}N}P}O}O}O~N}O}N}Q}O~M}M}O}O}Q}Q~M}N}N}O}P~R}N}M}O}N}P~P}N}O}P}M~R}P}M}N}N}M~S}P}M}Q}M~O}Q}O}P}N}M~P}P}O}O}O}N~O}Q}O}N}M~O}O}Q}P}N}O) z +(~N}O}R}P}N~P}M}P}Q}O}N~O}O}P}Q}S~L}O}L}P}P}R~M}M}M}M}O}R~O}N}M}N}P~Q}N}M}O}N}P~P}O}M}N}P~P}P}N}O}N}N~Q}O}M}N}K~L}M}L}L}J}N~T}Y}]}]}Z~[}\\}^}^}\\}U~B}\)}\(}:}O}R~O}O}R}P}L~N}O}P}P}N}O~N}N}O}P}Q~N}N}M}O}Q}O~P}M}N}O}P~Q}O}M}N}Q}O~P}O}N}M}Q}O~P}N}O}M}O~P) z +(}P}O}M}O}Q~P}N}N}O}N~P}P}M}P}N}N~O}O}O}N}M~O}P}O}N}M}M~O}Q}O}K}O~L}O}P}P}N}N~N}O}P}P}O}O~N}Q}Q}Q}Q~P}O}Q}Q}Q}P~O}P}O}Q}O~R}M}M}Q}P}P~O}O}O}N}P~Q}N}M}N}P}R~N}O}M}N}O}O~R}L}Q}M}N~O}P}O}M}P}O~P}O}O}M}N~P}P}P}M}N}N~O}P}Q}N}O~N}O}O}Q}N}N~M}P}P}Q}N~N}N}N}Q) z +(}Q}N~N}O}N}P}P}N~O}N}P}O}P~N}O}N}O}Q}Q~M}N}N}O}O~Q}O}N}N}O}P~Q}N}N}O}N~P}Q}O}N}O}P~Q}N}N}Q}M}O~P}R}P}O}N~O}O}O}M}P}L~O}O}P}N}O~M}N}P}P}M}O~O}N}R}P}N~M}N}N}P}P}N~P}N}M}S}N~O}O}O}M}P}P~N}N}M}L}M}L~K}N}T}\\}^~Z}V}W}\\}_}Y~J}3}\(}6}L~U}S}Q}P}O}O~Q}M}N}O}O) z +(~P}R}O}N}L}O~P}P}Q}N}O}L~Q}O}P}O}N~N}O}Q}P}M}N~R}N}O}R}M~P}M}N}N}Q}N~N}O}N}O}P~O}Q}N}M}Q}P~L}O}N}P}P~P}N}O}N}M}Q~P}N}L}N}N}N~Q}N}M}M}M~Q}O}N}N}N}O~O}N}O}O}O~N}Q}Q}P}L}Q~O}Q}P}N}O~P}P}P}R}Q}O~P}Q}P}Q}P}O~O}N}P}Q}N~N}N}O}S}N}N~O}N}O}R}P~N}M}N}N}P}P~O}N) z +(}N}P}P~P}M}N}M}N}P~Q}M}Q}N}P~N}P}N}O}N}O~P}P}O}N}N}M~Q}Q}M}P}N~P}O}Q}M}O}N~O}P}P}O}O~M}O}N}Q}P}N~N}P}P}P}M~O}N}P}P}P}N~M}O}O}Q}O}O~N}M}O}Q}P~O}P}N}P}P}P~N}Q}M}O}Q~P}L}P}P}P}P~P}M}N}N}P~P}O}L}O}M}P~P}P}N}N}L~Q}P}P}O}M}O~N}P}P}O}N}O~O}O}Q}O}M~O}P}P}O}O) z +(}M~M}N}N}M}L~K}O}Q}Z}]}]~U}V}Z}^}_~W}G}/}%}7}N~T}T}Q}Q}P}R~N}M}P}P}P~O}N}N}N}N}Q~Q}N}N}O}N~Q}O}O}O}M}P~P}O}O}N}O~P}P}R}M}M}O~N}Q}Q}M}O~O}M}P}R}N}N~O}O}O}P}M}N~P}O}P}O}O~M}O}O}P}P}M~O}M}N}O}O~O}O}L}P}Q}N~M}M}N}N}R~O}M}M}O}N}N~P}N}O}N}O~P}P}O}Q}O}P~Q}R) z +(}Q}P}P}P~R}Q}P}P}N~P}Q}P}P}N}O~N}R}O}O}O~O}N}P}P}N}O~O}O}P}P}N~O}N}M}P}P}O~M}O}O}Q}P}N~M}N}P}O}Q~O}M}N}N}Q}P~N}O}N}N}Q~Q}L}O}M}Q}O~P}O}N}N}P~O}P}O}N}M}R~O}P}N}P}N~L}Q}R}N}N}N~O}P}Q}M}N}O~N}R}P}O}M~O}O}O}Q}O}O~M}O}Q}O}O~N}N}O}Q}Q}M~N}N}Q}Q}P~P}M}N}O}P) z +(}R~O}O}O}Q}P}O~N}O}M}O}P~P}L}M}O}P}O~P}O}N}N}N~N}Q}O}M}O}P~O}Q}M}N}M~Q}P}P}N}N}O~M}Q}P}O}P~K}N}L}M}M}J~M}P}Y}`}_}\\~\\}]}`}_}[~N}8}$}*}B}O~S}M}P}P}P~N}K}N}O}R}O~N}N}N}O}O~O}P}N}O}O}P~P}N}N}M}O}T~M}O}O}N}O~O}Q}N}N}P}N~R}O}M}O}N~P}O}Q}O}M}N~O}Q}P}L}R~M) z +(}O}O}P}N}L~P}P}M}Q}N~N}M}Q}N}Q}N~L}N}O}P}N}P~M}N}N}P}O~N}N}M}O}O}O~N}O}M}O}O~Q}M}O}O}Q}R~O}O}Q}O}Q~R}R}O}P}P}P~R}P}R}M}O}P~Q}O}O}O}N~N}Q}O}O}N}N~P}P}P}N}N~N}O}P}P}O}P~N}M}P}P}N~M}Q}M}Q}Q}N~N}O}O}P}O~N}P}O}O}P}O~O}M}O}O}P}O~N}O}L}P}N~P}O}M}N}N}O~N}O}O) z +(}O}O~P}O}O}N}N}P~Q}O}N}O}N~O}Q}P}M}P}N~O}Q}O}O}N}N~P}Q}P}M}N~N}O}N}M}I}N~I}M}Q}\\}[~`}]}Z}\\}\\}[~X}O};},}.~?}P}R}P}P}Q~O}M}O}N}Q~O}O}M}O}O}Q~O}N}O}M}P}O~P}O}N}N}O~P}P}O}N}N}N~Q}P}O}N}O~O}N}P}P}N}N~N}Q}P}M}O~N}O}R}P}M}O~L}O}P}Q}O}M~O}O}O}O}L~N}P}N}P}Q) z +(}K~P}L}P}N}R~L}N}L}O}O}P~N}M}N}O}N~P}O}L}P}N}Q~P}N}P}M}Q~Q}Q}O}P}O}P~P}R}P}O}O}O~P}Q}P}N}O~Q}Q}Q}N}M}O~O}Q}O}P}N~O}L}Q}P}Q}N~N}O}O}P}O~M}P}M}Q}O}N~N}O}N}Q}O}P~M}O}O}N}P~O}O}N}P}O}O~O}N}L}P}P~P}P}L}P}N}Q~O}O}O}N}P~Q}N}N}N}M}O~S}O}O}O}L~O}P}P}O}O}N~O}P) z +(}N}O}M}O~O}T}P}M}M~N}P}P}P}O}N~N}N}P}Q}N~M}N}P}O}O}O~O}P}N}O}P~N}O}N}O}P}Q~L}Q}O}N}O}Q~M}O}L}P}Q~P}O}N}L}N}Q~P}P}N}M}L~R}Q}M}P}N}O~P}P}P}K}O~O}Q}P}N}O}N~O}Q}O}O}O~L}O}Q}Q}N}P~N}P}P}Q}N}N~P}O}P}Q}N~N}N}P}O}P}M~N}P}P}O}O~M}N}M}Q}O}Q~M}O}N}L}P~Q}N}O}O}M) z +(}P~O}O}O}N}M~P}R}N}N}O}O~O}P}N}O}K}M~M}O}L}M}R~V}_}Y}V}U}X~\\}]}\\}U}C~4}+}3}G}P}Q~S}S}Q}P}P~N}O}N}Q}Q}N~O}N}N}P}Q}N~O}L}R}P}O~N}O}O}O}O}S~M}N}M}N}R~O}Q}N}M}P}O~O}P}O}N}O~O}R}L}O}P}M~P}R}M}N}N~N}P}Q}N}O}M~P}O}N}N}O}O~O}O}R}M}O~N}N}R}P}N}N~M}M}O}O}Q~J) z +(}O}N}O}O}M~O}M}M}P}O~N}O}M}O}P}O~O}N}N}O}R}R~P}P}N}Q}R~R}O}P}Q}P}P~R}O}N}O}P~R}P}O}N}N}O~P}Q}O}M}O~O}P}P}M}P}M~P}Q}O}O}M~N}P}O}O}P}N~O}M}P}P}O}O~M}O}R}M}O~N}N}N}P}Q}O~N}N}N}P}Q~O}N}N}Q}O}P~M}N}N}P}P~P}M}O}N}O}P~Q}M}P}N}O}O~Q}O}M}N}P~Q}O}P}L}N}P~Q}P}N) z +(}O}O~N}P}P}O}N}O~O}O}P}N}P~N}O}Q}Q}M}O~N}P}Q}Q}N~M}O}Q}P}Q}N~O}O}O}O}P}O~M}M}O}O}P~P}M}M}M}R}O~O}M}N}P}Q~M}O}M}N}O}Q~Q}N}N}O}M~Q}Q}M}O}N}N~Q}N}K}M}L}M~L}O}S}[}_~[}[}Z}[}[}Y~W}F}2}$}6~K}U}S}O}P}R~M}O}N}O}O~N}N}P}P}Q}N~M}P}M}R}P~O}O}N}N}Q}P~O}N}M}O}Q}Q) z +(~N}N}N}N}Q~P}N}N}N}P}Q~O}O}N}M}O~P}Q}N}O}M}N~P}Q}P}M}O~M}R}O}M}N}O~O}P}O}N}O}L~O}P}P}L}M~O}M}P}O}O}M~N}M}P}P}M~O}M}O}P}R}L~N}O}P}R}Q~O}P}R}O}P}S~P}P}O}R}Q~P}N}N}O}O}P~P}O}P}N}O}P~P}N}O}O}O~O}Q}O}M}O}N~R}P}M}N}N~O}O}P}P}N}N~N}P}P}N}M~O}P}P}O}N}N~N}O}P) z +(}Q}N}N~M}N}R}O}O~N}N}N}Q}Q}N~N}N}P}N}Q~O}P}L}P}O}Q~N}O}N}O}Q~O}N}O}N}O}R~O}M}O}N}N~Q}R}N}M}O}O~P}P}P}N}M}N~Q}P}O}O}L~O}Q}P}O}N}O~P}Q}Q}N}M~O}O}R}Q}O}N~O}O}O}Q}O~M}M}N}Q}O}N~O}M}O}O}Q}M~L}P}N}Q}Q~M}M}N}O}Q}P~N}O}N}Q}N~P}N}N}N}O}O~L}K}J}K}N~S}\\}_}^}\\) z +(}\\~^}`}\\}S}>~&}'}?}R}R}O~M}P}P}L}O}O~P}P}P}O}N~M}N}Q}O}P}N~N}O}P}P}N~M}P}O}Q}O}O~N}M}R}O}P~O}N}M}O}Q}P~Q}L}O}O}O}P~O}L}O}O}O~Q}O}M}N}O}Q~P}O}L}O}N~O}Q}N}N}M}N~P}N}N}N}N~N}P}N}N}N}M~O}P}P}M}N~N}O}P}P}P}N~N}P}R}Q}P}Q~O}O}Q}S}N~O}N}R}P}Q}Q~O}N}P}Q}R~M) z +(}N}O}P}P}P~N}M}N}R}O~O}O}M}N}O}Q~Q}N}N}N}M~Q}Q}M}Q}L}O~P}P}N}N}N}P~P}O}O}L}N~P}O}Q}O}O}M~P}N}P}P}M~O}O}Q}P}L}O~O}N}O}S}N~N}N}N}P}R}N~P}L}P}O}R}M~N}O}N}R}Q~M}O}M}O}Q}Q~N}O}M}O}P~P}P}N}N}O}O~O}O}N}O}P~R}O}N}P}N}P~P}Q}O}M}O~R}P}O}O}O}O~M}N}O}N}N}P~N}O}Q) z +(}L}O~N}N}Q}P}N}O~M}O}P}P}N~O}M}P}O}P}N~N}O}P}O}Q~L}M}K}L}L}N~L}Q}Z}]}]}Z~Y}[}]}[}T~A}\)},}@}S}U~Q}N}O}O}N~P}Q}M}N}N}O~Q}R}L}O}L~O}Q}P}O}N}M~O}R}P}N}N~M}O}Q}P}P}N~N}N}Q}P}N}N~O}O}P}O}N~O}N}P}P}O}N~M}O}O}P}Q~O}M}M}P}P}N~N}N}N}M}Q~Q}N}M}O}N}O~O}O}L}M}O}Q) z +(~O}N}M}N}N~Q}O}O}M}O}N~P}R}O}O}Q~O}R}Q}O}Q}N~P}S}P}N}P~M}Q}P}P}N}O~N}O}P}Q}O~N}M}P}P}O}N~O}M}O}Q}P}N~N}N}O}O}R~L}O}M}N}Q}R~N}N}O}N}O~O}O}N}N}O}P~O}M}P}N}P~O}R}M}N}N}O~P}Q}N}N}N}O~P}P}P}M}M~N}Q}Q}M}N}N~O}R}O}P}O~N}O}N}Q}M}N~P}O}R}O}L~N}M}P}Q}P}O~M}N}O) z +(}R}Q~O}P}N}O}Q}O~N}O}P}N}R}O~N}M}N}O}P~P}M}O}M}Q}M~Q}L}M}N}O~R}N}P}O}M}Q~P}N}N}O}N~N}O}P}O}O}M~O}P}Q}N}N}M~L}M}O}L}L~R}V}\\}\\}V}V~W}\\}\\}T}>~/}.}B}Q}U}S~O}P}O}Q}P~P}M}N}O}O}P~N}O}P}O}O~Q}O}N}N}O}P~O}O}O}N}M}Q~P}N}O}M}P~P) z +10 R +0 0 1 setrgbcolor +12 R +1244 Ay +1653 1303 1209 885 sb +250 1189 m +(\(N)t +1653 1303 1209 885 sb +299 A +1653 1303 1209 885 sb +539 A +1653 1303 1209 885 sb +778 A +1653 1303 1209 885 sb +1011 A +1653 1303 1209 885 sb +1245 A +1653 1303 1209 885 sb +1478 A +1653 1303 1209 885 sb +1719 A +1653 1303 1209 885 sb +(A) 1912 a +1653 1303 1209 885 sb +2206 A +1653 1303 1209 885 sb +2455 A +1653 1303 1209 885 sb +2694 A +1653 1303 1209 885 sb +2927 A +1653 1303 1209 885 sb +3155 A +0 0 0 setrgbcolor +3188 838 m +(Grid intervals: 0.2 sec, 0.5 mV)b +12 R +endpschart %%Trailer %%Pages: 1 -%%EOF diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/lib/annot.c wfdb-10.4.5/lib/annot.c --- wfdb-10.4.4/lib/annot.c 2006-02-23 17:45:38.000000000 -0500 +++ wfdb-10.4.5/lib/annot.c 2008-01-14 22:26:52.000000000 -0500 @@ -1,10 +1,10 @@ /* file: annot.c G. Moody 13 April 1989 - Last revised: 23 February 2006 wfdblib 10.4.0 + Last revised: 14 January 2008 wfdblib 10.4.5 WFDB library functions for annotations _______________________________________________________________________________ wfdb: a library for reading and writing annotated waveforms (time series data) -Copyright (C) 1989-2006 George B. Moody +Copyright (C) 1989-2008 George B. Moody This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free @@ -46,6 +46,8 @@ setannstr [5.3] (modifies code-to-string translation table) anndesc [5.3] (converts user-defined annot codes to descriptions) setanndesc [5.3] (modifies code-to-text translation table) + setafreq [10.4.5] (sets time resolution for output annotation files) + getafreq [10.4.5] (returns time resolution for output annotation files) iannclose [9.1] (closes an input annotation file) oannclose [9.1] (closes an output annotation file) @@ -119,10 +121,12 @@ WFDB_Anninfo info; /* input annotator information */ WFDB_Annotation ann; /* next annotation to be returned by getann */ WFDB_Annotation pann; /* pushed-back annotation from ungetann */ + WFDB_Frequency afreq; /* time resolution, in ticks/second */ unsigned word; /* next word from the input file */ int ateof; /* EOF-reached indicator */ char auxstr[1+255+1]; /* aux string buffer (byte count+data+null) */ unsigned index; /* next available position in auxstr */ + double tmul, ptmul; /* tmul * annotation time = sample count */ WFDB_Time tt; /* annotation time (MIT format only). This equals ann.time unless a SKIP follows ann; in such cases, it is the time of the SKIP @@ -136,15 +140,15 @@ WFDB_FILE *file; /* file pointer for output annotation file */ WFDB_Anninfo info; /* output annotator information */ WFDB_Annotation ann; /* most recent annotation written by putann */ + WFDB_Frequency afreq; /* time resolution, in ticks/second */ int seqno; /* annotation serial number (AHA format only)*/ char *rname; /* record with which annotator is associated */ char out_of_order; /* if >0, one or more annotations written by putann are not in the canonical (time, chan) order */ } **oad; - -static double tmul; /* `time' fields in annotations are - tmul * times in annotation files */ +static WFDB_Frequency oafreq; /* time resolution in ticks/sec for newly- + created output annotators */ /* Local functions (for the use of other functions in this module only). */ @@ -158,8 +162,15 @@ return (-1); while (getann(i,&annot) == 0 && annot.time == 0L && annot.anntyp == NOTE && annot.subtyp == 0) { - if (annot.aux == NULL || *annot.aux < 1 || *(annot.aux+1) == '#') + if (annot.aux == NULL || *annot.aux < 1) + continue; + if (*(annot.aux+1) == '#') { + if (strncmp(annot.aux + 1, "## time resolution: ", 20) == 0) { + sscanf(annot.aux + 20, "%lf", &(iad[i]->afreq)); + if (iad[i]->afreq) iad[i]->tmul = getifreq()/iad[i]->afreq; + } continue; + } p1 = strtok(annot.aux+1, " \t"); a = atoi(p1); if (0 <= a && a <= ACMAX && (p1 = strtok((char *)NULL, " \t"))) { @@ -182,9 +193,12 @@ } if (annot.time != 0L || annot.anntyp != NOTE || annot.subtyp != 0 || - annot.aux == NULL || - strncmp(annot.aux + 1, "## sampling frequency: ", 23)) + annot.aux == NULL) { + if (iad[i]->tmul) annot.time /= iad[i]->tmul; + iad[i]->tmul = (iad[i]->afreq) ? getifreq()/iad[i]->afreq : getspf(); + annot.time = (WFDB_Time)(annot.time * iad[i]->tmul + 0.5); (void)ungetann(i, &annot); + } return (0); } @@ -219,6 +233,20 @@ buf[0] = strlen(buf+1); if (putann(i, &annot) < 0) return (-1); } + + if (oafreq != oad[i]->afreq) { + (void)sprintf(buf+1, "## time resolution: %g", oafreq); + buf[0] = strlen(buf+1); + oad[i]->afreq = oafreq; + if (putann(i, &annot) < 0) return (-1); + flag = 1; + } + if (flag) { /* if a table was written, mark its end */ + annot.anntyp = 0; + annot.aux = NULL; + if (putann(i, &annot) < 0) return (-1); + } + return (0); } @@ -284,10 +312,11 @@ if (*record == '+') /* don't close open annotation files */ record++; /* discard the '+' prefix */ - else { + else wfdb_anclose(); /* close previously opened annotation files */ - tmul = 0.0; - } + + /* Remove trailing .hea, if any, from record name. */ + wfdb_striphea(record); /* Prescan aiarray to see how large maxiann and maxoann must be. */ niafneeded = niaf; @@ -414,13 +443,18 @@ if (n >= niaf || (ia = iad[n]) == NULL || ia->file == NULL) { wfdb_error("getann: can't read annotator %d\n", n); - return (-2); + return (-2); } - if (ia->pann.anntyp) { + if (ia->pann.anntyp) { /* an annotation was pushed back */ *annot = ia->pann; - ia->pann.anntyp = 0; - return (0); + ia->pann.anntyp = 0; + if (ia->ptmul) annot->time /= ia->ptmul; + ia->tmul = ia->ptmul = (ia->afreq) ? getifreq()/ia->afreq : getspf(); + if (annot->time) { + annot->time = (WFDB_Time)(annot->time * ia->tmul + 0.5); + return (0); + } } if (ia->ateof) { @@ -440,14 +474,12 @@ return (0); } ia->tt += ia->word & DATA; /* annotation time */ - if (ia->tt > 0L && tmul <= 0.0) { - WFDB_Frequency f = sampfreq(NULL); - - tmul = getspf(); - if (f != (WFDB_Frequency)0) - tmul = tmul * getifreq() / f; + if (ia->ptmul == 0.0) { + if (ia->tmul) ia->tt = ia->tt / ia->tmul; + ia->ptmul = ia->tmul; + ia->tmul = (ia->afreq) ? getifreq()/ia->afreq :getspf(); } - ia->ann.time = (WFDB_Time)(ia->tt * tmul + 0.5); + ia->ann.time = (WFDB_Time)(ia->tt * ia->tmul + 0.5); ia->ann.anntyp = (ia->word & CODE) >> CS; /* set annotation type */ ia->ann.subtyp = 0; /* reset subtype field */ ia->ann.aux = NULL; /* reset aux field */ @@ -482,15 +514,7 @@ } a = ia->word >> 8; /* AHA annotation code */ ia->ann.anntyp = ammap(a); /* convert to MIT annotation code */ - if (tmul <= 0.0) { - WFDB_Frequency f = sampfreq(NULL); - - tmul = getspf(); - if (f != (WFDB_Frequency)0) - tmul = tmul * getifreq() / f; - } - ia->ann.time = (WFDB_Time)(wfdb_g32(ia->file) * tmul + 0.5); - /* time of annotation */ + ia->ann.time = (WFDB_Time)wfdb_g32(ia->file); /* time of annotation */ if (wfdb_g16(ia->file) <= 0) /* serial number (starts at 1) */ wfdb_error("getann: unexpected annot number in annotator %s\n", ia->info.name); @@ -518,6 +542,8 @@ } if (wfdb_feof(ia->file)) ia->ateof = -1; + // if (ia->ann.time == 0 && ia->ann.anntyp == NOTQRS) + // return (getann(n, annot)); return (0); } @@ -536,6 +562,7 @@ return (-1); } iad[n]->pann = *annot; + iad[n]->ptmul = iad[n]->tmul; return (0); } @@ -553,17 +580,20 @@ wfdb_error("putann: can't write annotation file %d\n", n); return (-2); } - if (annot->time == 0L) - t = 0L; - else { - if (tmul <= 0.0) { - WFDB_Frequency f = sampfreq(NULL); - - tmul = getspf(); - if (f != (WFDB_Frequency)0) - tmul = tmul * getifreq() / f; - } - t = (WFDB_Time)(annot->time / tmul + 0.5); + t = annot->time; + if (oa->ann.time == (WFDB_Time)0 && oafreq != oa->afreq) { + static WFDB_Annotation tra; + char buf[30]; + + oa->afreq = oafreq; + tra.anntyp = NOTE; + tra.aux = buf; + (void)sprintf(buf+1, "## time resolution: %g", oafreq); + buf[0] = strlen(buf+1); + if (putann(n, &tra) < 0) return (-1); + tra.anntyp = 0; + tra.aux = NULL; + if (putann(n, &tra) < 0) return (-1); } if (((delta = t - oa->ann.time) < 0L || (delta == 0L && annot->chan <= oa->ann.chan)) && @@ -890,6 +920,20 @@ } } + +/* setafreq: set time resolution for output annotation files */ +FVOID setafreq(WFDB_Frequency f) +{ + if (f > 0.0) + oafreq = f; +} + +/* getafreq: return time resolution for output annotation files */ +FFREQUENCY getafreq(void) +{ + return (oafreq); +} + /* iannclose: close input annotation file n */ FVOID iannclose(WFDB_Annotator n) { @@ -909,7 +953,6 @@ } } - /* oannclose: close output annotation file n */ FVOID oannclose(WFDB_Annotator n) { diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/lib/signal.c wfdb-10.4.5/lib/signal.c --- wfdb-10.4.4/lib/signal.c 2006-04-06 21:29:06.000000000 -0400 +++ wfdb-10.4.5/lib/signal.c 2008-02-06 11:24:58.000000000 -0500 @@ -1,10 +1,10 @@ /* file: signal.c G. Moody 13 April 1989 - Last revised: 6 April 2006 wfdblib 10.4.1 + Last revised: 6 February 2008 wfdblib 10.4.5 WFDB library functions for signals _______________________________________________________________________________ wfdb: a library for reading and writing annotated waveforms (time series data) -Copyright (C) 1989-2006 George B. Moody +Copyright (C) 1989-2008 George B. Moody This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free @@ -37,6 +37,7 @@ make_vsd (makes a virtual signal object) sigmap_init (manages the signal maps) sigmap (creates a virtual signal vector from a raw sample vector) + edfparse [10.4.5](gets header info from an EDF file) readheader (reads a header file) hsdfree (deallocates memory used by readheader) isigclose (closes input signals) @@ -93,6 +94,7 @@ physadu [6.0] (converts physical units to ADC units) sample [10.3.0](get a sample from a given signal at a given time) sample_valid [10.3.0](verify that last value returned by sample was valid) + (Numbers in brackets in the list above indicate the first version of the WFDB library that included the corresponding function. Functions not so marked have been included in all published versions of the WFDB library.) @@ -268,7 +270,7 @@ char *bp; /* pointer to next location in buf[] */ char *be; /* pointer to input buffer endpoint */ char count; /* input counter for bit-packed signal */ - char seek; /* flag to indicate if seeks are permitted */ + char seek; /* 0: do not seek on file, 1: seeks permitted */ int stat; /* signal file status flag */ } **igd; static WFDB_Sample *tvector; /* getvec workspace */ @@ -287,6 +289,7 @@ static int gvpad; /* getvec padding (if non-zero, replace invalid samples with previous valid samples) */ static int gvc; /* getvec sample-within-frame counter */ +static int isedf; /* if non-zero, record is stored as EDF/EDF+ */ WFDB_Sample *sbuf = NULL; /* buffer used by sample() */ static int sample_vflag; /* if non-zero, last value returned by sample() was valid */ @@ -510,7 +513,7 @@ { int i; - maxvsig = need_sigmap = nvsig = tspf = 0; + need_sigmap = nvsig = tspf = 0; if (ovec) { free(ovec); ovec = NULL; } if (smi) { for (i = 0; i < tspf; i += smi[i].spf) @@ -522,8 +525,8 @@ if (vsd) { struct isdata *is; - while (nvsig) - if (is = vsd[--nisig]) { + while (maxvsig) + if (is = vsd[--maxvsig]) { if (is->info.fname) (void)free(is->info.fname); if (is->info.units) (void)free(is->info.units); if (is->info.desc) (void)free(is->info.desc); @@ -667,7 +670,8 @@ if (ovec[smi[i].index] == WFDB_INVALID_SAMPLE) vector[i] = WFDB_INVALID_SAMPLE; else { - vector[i] = v = ovec[smi[i].index] * smi[i].scale + smi[i].offset; + v = ovec[smi[i].index] * smi[i].scale + smi[i].offset; + vector[i] = (WFDB_Sample)v; #if defined(WFDB_OVERFLOW_CHECK) if (((v > 0.0 && v - ovec[i]) > 1.0) || ((v - ovec[i]) < -1.0)) wfdb_error("sigmap: overflow detected\n"); @@ -678,7 +682,185 @@ /* end of code for handling variable-layout records */ -static int readheader(char *record) +/* get header information from an EDF file */ +static int edfparse(WFDB_FILE *ifile) +{ + static char buf[9], junk[80], *edf_fname, *p; + double *pmax, *pmin, spr; + int i, s, nsig, offset, day, month, year, hour, minute, second; + long adcrange, *dmax, *dmin, nframes; + + edf_fname = wfdbfile(NULL, NULL); + + /* Read the first 8 bytes and check for the magic string. (This might + accept some non-EDF files.) */ + wfdb_fread(buf, 1, 8, ifile); + if (strncmp(buf, "0 ", 8)) { + wfdb_error("init: '%s' is not EDF or EDF+\n", edf_fname); + return (-2); + } + + /* Read the remainder of the fixed-size section of the header. */ + wfdb_fread(junk, 1, 80, ifile); /* patient ID (ignored) */ + wfdb_fread(junk, 1, 80, ifile); /* recording ID (ignored) */ + wfdb_fread(buf, 1, 8, ifile); /* recording date */ + sscanf(buf, "%d%*c%d%*c%d", &day, &month, &year); + year += 1900; /* EDF has only two-digit years */ + if (year < 1985) year += 100; /* fix this before 1/1/2085! */ + wfdb_fread(buf, 1, 8, ifile); /* recording time */ + sscanf(buf, "%d%*c%d%*c%d", &hour, &minute, &second); + wfdb_fread(buf, 1, 8, ifile); /* number of bytes in header */ + sscanf(buf, "%d", &offset); + wfdb_fread(junk, 1, 44, ifile); /* free space (ignored) */ + wfdb_fread(buf, 1, 8, ifile); /* number of frames (EDF blocks) */ + sscanf(buf, "%ld", &nframes); + nsamples = nframes; + wfdb_fread(buf, 1, 8, ifile); /* data record duration (seconds) */ + sscanf(buf, "%lf", &spr); + if (spr <= 0.0) spr = 1.0; + wfdb_fread(buf+4, 1, 4, ifile); /* number of signals */ + sscanf(buf+4, "%d", &nsig); + + if (nsig < 1 || (nsig + 1)*256 != offset) { + wfdb_error("init: '%s' is not EDF or EDF+\n", edf_fname); + return (-2); + } + + /* Allocate workspace. */ + if (maxhsig < nsig) { + unsigned m = maxhsig; + struct hsdata **hsdnew = realloc(hsd, nsig*sizeof(struct hsdata *)); + + if (hsdnew == NULL) { + wfdb_error("init: too many (%d) signals in header file\n", nsig); + return (-2); + } + hsd = hsdnew; + while (m < nsig) { + if ((hsd[m] = calloc(1, sizeof(struct hsdata))) == NULL) { + wfdb_error("init: too many (%d) signals in header file\n", + nsig); + while (--m > maxhsig) + free(hsd[m]); + return (-2); + } + m++; + } + maxhsig = nsig; + } + if ((dmax = malloc(nsig * sizeof(long))) == NULL || + (dmin = malloc(nsig * sizeof(long))) == NULL || + (pmax = malloc(nsig * sizeof(double))) == NULL || + (pmin = malloc(nsig * sizeof(double))) == NULL) { + wfdb_error("init: too many (%d) signals in header file\n", nsig); + if (pmax) free(pmax); + if (dmin) free(dmin); + if (dmax) free(dmax); + return (-2); + } + + /* Strip off any path info from the EDF file name. */ + p = edf_fname + strlen(edf_fname) - 4; + while (--p > edf_fname) + if (*p == '/') edf_fname = p+1; + + /* Read the variable-size section of the header. */ + for (s = 0; s < nsig; s++) { + hsd[s]->start = offset; + hsd[s]->skew = 0; + if (hsd[s]->info.fname = (char *)malloc(strlen(edf_fname)+1)) + strcpy(hsd[s]->info.fname, edf_fname); + hsd[s]->info.group = hsd[s]->info.bsize = hsd[s]->info.cksum = 0; + hsd[s]->info.fmt = 16; + hsd[s]->info.nsamp = nframes; + + wfdb_fread(junk, 1, 16, ifile); /* signal type */ + junk[16] = ' '; + for (i = 16; i >= 0 && junk[i] == ' '; i--) + junk[i] = '\0'; + if (hsd[s]->info.desc = (char *)malloc(strlen(junk)+1)) + strcpy(hsd[s]->info.desc, junk); + } + + for (s = 0; s < nsig; s++) + wfdb_fread(junk, 1, 80, ifile); /* transducer type (ignored) */ + + for (s = 0; s < nsig; s++) { + wfdb_fread(buf, 1, 8, ifile); /* signal units */ + for (i = 7; i >= 0 && buf[i] == ' '; i--) + buf[i] = '\0'; + if (hsd[s]->info.units = (char *)malloc(strlen(buf)+1)) + strcpy(hsd[s]->info.units, buf); + } + + for (s = 0; s < nsig; s++) { + wfdb_fread(buf, 1, 8, ifile); /* physical minimum */ + sscanf(buf, "%lf", &pmin[s]); + } + + for (s = 0; s < nsig; s++) { + wfdb_fread(buf, 1, 8, ifile); /* physical maximum */ + sscanf(buf, "%lf", &pmax[s]); + } + + for (s = 0; s < nsig; s++) { + wfdb_fread(buf, 1, 8, ifile); /* digital minimum */ + sscanf(buf, "%d", &dmin[s]); + } + + for (s = 0; s < nsig; s++) { + wfdb_fread(buf, 1, 8, ifile); /* digital maximum */ + sscanf(buf, "%d", &dmax[s]); + hsd[s]->info.initval = hsd[s]->info.adczero = (dmax[s]+1 + dmin[s])/2; + adcrange = dmax[s] - dmin[s]; + for (i = 0; adcrange > 1; i++) + adcrange /= 2; + hsd[s]->info.adcres = i; + if (pmax[s] != pmin[s]) { + hsd[s]->info.gain = (dmax[s] - dmin[s])/(pmax[s] - pmin[s]); + hsd[s]->info.baseline = dmax[s] - pmax[s] * hsd[s]->info.gain + 1; + } + else /* gain is undefined */ + hsd[s]->info.gain = hsd[s]->info.baseline = 0; + } + + for (s = 0; s < nsig; s++) + wfdb_fread(junk, 1, 80, ifile); /* filtering information (ignored) */ + + for (s = framelen = 0; s < nsig; s++) { + int n; + + wfdb_fread(buf, 1, 8, ifile); /* samples per frame (EDF block) */ + buf[8] = ' '; + for (i = 8; i >= 0 && buf[i] == ' '; i--) + buf[i] = '\0'; + sscanf(buf, "%d", &n); + if ((hsd[s]->info.spf = n) > ispfmax) ispfmax = n; + framelen += n; + } + + (void)wfdb_fclose(ifile); /* (don't bother reading nsig*32 bytes of free + space) */ + hheader = NULL; /* make sure getinfo doesn't try to read the EDF file */ + + ffreq = 1.0 / spr; /* frame frequency = 1/(seconds per EDF block) */ + cfreq = ffreq; /* set sampling and counter frequencies to match */ + sfreq = ffreq * ispfmax; + if (getafreq() == 0.0) setafreq(sfreq); + gvmode &= WFDB_HIGHRES; + sprintf(buf, "%02d:%02d:%02d %02d/%02d/%04d", + hour, minute, second, day, month, year); + setbasetime(buf); + + free(pmin); + free(pmax); + free(dmin); + free(dmax); + isedf = 1; + return (nsig); +} + +static int readheader(const char *record) { char linebuf[256], *p, *q; WFDB_Frequency f; @@ -690,6 +872,7 @@ /* If another input header file was opened, close it. */ if (hheader) (void)wfdb_fclose(hheader); + isedf = 0; if (strcmp(record, "~") == 0) { if (in_msrec && vsd) { char *p; @@ -706,8 +889,18 @@ return (0); } - /* Try to open the header file. */ - if ((hheader = wfdb_open("hea", record, WFDB_READ)) == NULL) { + /* If the record name includes a '.', assume it is a file name. */ + if (p = strstr(record, ".")) { + if ((hheader = wfdb_open(NULL, record, WFDB_READ)) == NULL) { + wfdb_error("init: can't open %s\n", record); + return (-1); + } + else if (strcmp(p+1, "hea")) /* assume EDF if suffix is not '.hea' */ + return (edfparse(hheader)); + } + + /* Otherwise, assume the file name is record.hea. */ + else if ((hheader = wfdb_open("hea", record, WFDB_READ)) == NULL) { wfdb_error("init: can't open header for record %s\n", record); return (-1); } @@ -761,12 +954,12 @@ may be corrupted. The requirement for a match is waived for remote files since the user may not be able to make any corrections to them. */ if (hheader->type == WFDB_LOCAL && - hheader->fp != stdin && strcmp(p, record) != 0) { + hheader->fp != stdin && strncmp(p, record, strlen(p)) != 0) { /* If there is a mismatch, check to see if the record argument includes a directory separator (whether valid or not for this OS); if so, compare only the final portion of the argument against the name in the header file. */ - char *r, *s; + const char *r, *s; for (r = record, s = r + strlen(r) - 1; r != s; s--) if (*s == '/' || *s == '\\' || *s == ':') @@ -1131,7 +1324,7 @@ struct isdata *is; struct igdata *ig; - if (nisig == 0) return; + /* if (nisig == 0) return; */ if (sbuf && !in_msrec) { (void)free(sbuf); sbuf = NULL; @@ -1757,6 +1950,9 @@ if (*record == '+') record++; else isigclose(); + /* Remove trailing .hea, if any, from record name. */ + wfdb_striphea(record); + /* Save the current record name. */ if (!in_msrec) wfdb_setirec(record); @@ -1931,12 +2127,15 @@ struct osdata *os, *op; struct ogdata *og; WFDB_Signal s; - unsigned int buflen, ga; + unsigned int ga; /* Close previously opened output signals unless otherwise requested. */ if (*record == '+') record++; else osigclose(); + /* Remove trailing .hea, if any, from record name. */ + wfdb_striphea(record); + if ((n = readheader(record)) < 0) return (n); if (n < nsig) { @@ -2215,7 +2414,7 @@ ifreq = 0.0; return (-2); } - ifreq = f; + setafreq(ifreq = f); /* The 0.005 below is the maximum tolerable error in the resampling frequency (in Hz). The code in the while loop implements Euclid's algorithm for finding the greatest common divisor of two integers, @@ -2385,7 +2584,6 @@ { WFDB_Group g; int stat = 0; - WFDB_Signal s; /* Return immediately if no seek is needed. */ if (t == istime || nisig == 0) return (0); @@ -2400,13 +2598,11 @@ FINT isgsettime(WFDB_Group g, WFDB_Time t) { - int spf, stat, tr, trem = 0; + int spf, stat, trem = 0; /* Handle negative arguments as equivalent positive arguments. */ if (t < 0L) t = -t; - tr = t; - /* Convert t to raw sample intervals if we are resampling. */ if (ifreq > (WFDB_Frequency)0) t = (WFDB_Time)(t * sfreq/ifreq); @@ -2435,13 +2631,6 @@ } } - if (ifreq > (WFDB_Frequency)0 && tr != t) { - t = (WFDB_Time)(t * ifreq/sfreq); - - while (t++ < tr) - getvec(uvector); - } - return (stat); } @@ -2479,6 +2668,9 @@ WFDB_Signal s; WFDB_Siginfo *osi; + /* Remove trailing .hea, if any, from record name. */ + wfdb_striphea(record); + if ((osi = malloc(nosig*sizeof(WFDB_Siginfo))) == NULL) { wfdb_error("newheader: insufficient memory\n"); return (-1); @@ -2509,6 +2701,9 @@ oheader = NULL; } + /* Remove trailing .hea, if any, from record name. */ + wfdb_striphea(record); + /* Quit (with message from wfdb_checkname) if name is illegal. */ if (wfdb_checkname(record, "record")) return (-1); @@ -2586,6 +2781,9 @@ oheader = NULL; } + /* Remove trailing .hea, if any, from record name. */ + wfdb_striphea(record); + /* Quit (with message from wfdb_checkname) if name is illegal. */ if (wfdb_checkname(record, "record")) return (-1); @@ -2716,6 +2914,8 @@ { if (s < nisig) return (igd[vsd[s]->info.group]->start); + else if (s == 0 && hsd != NULL) + return (hsd[0]->start); else return (0L); } @@ -2735,18 +2935,22 @@ char *p; static char linebuf[256]; + /* Remove trailing .hea, if any, from record name. */ + wfdb_striphea(record); + if (record != NULL && readheader(record) < 0) { wfdb_error("getinfo: can't read record %s header\n", record); return (NULL); } else if (record == NULL && hheader == NULL) { - wfdb_error("getinfo: caller did not specify record name\n"); + if (isedf == 0) + wfdb_error("getinfo: caller did not specify record name\n"); return (NULL); } /* Find a line beginning with '#'. */ do { - if (wfdb_fgets(linebuf, 256, hheader) == NULL) + if (hheader == NULL || wfdb_fgets(linebuf, 256, hheader) == NULL) return (NULL); } while (linebuf[0] != '#'); @@ -2773,6 +2977,9 @@ { int n; + /* Remove trailing .hea, if any, from record name. */ + wfdb_striphea(record); + if (record != NULL) { /* Save the current record name. */ wfdb_setirec(record); @@ -2838,7 +3045,7 @@ wfdb_error("setbasetime: incorrect time format, '%s'\n", string); return (-1); } - btime *= 1000.0/sfreq; + btime = (long)(btime * 1000.0/sfreq); return (0); } @@ -2870,8 +3077,8 @@ if (t > 0L || (btime == 0L && bdate == (WFDB_Date)0)) { /* time interval */ if (t < 0L) t = -t; /* Convert from sample intervals to seconds. */ - s = t / f; - msec = (t - s*f)*1000/f; + s = (long)(t / f); + msec = (int)((t - s*f)*1000/f); t = s; seconds = t % 60; t /= 60; @@ -2888,8 +3095,8 @@ /* Convert to sample intervals since midnight. */ t = (WFDB_Time)(btime*sfreq/1000.0 + 0.5) - t; /* Convert from sample intervals to seconds. */ - s = t / f; - msec = (t - s*f)*1000/f; + s = (long)(t / f); + msec = (int)((t - s*f)*1000/f); t = s; seconds = t % 60; t /= 60; @@ -2949,8 +3156,8 @@ (WFDB_Time)atol(string+1)); case 'e': return ((in_msrec ? msnsamples : nsamples) * ((gvmode == WFDB_HIGHRES) ? ispfmax : 1)); - case 'f': return ((WFDB_Time)(atol(string+1)*f/ffreq)); - case 'i': return (istime * + case 'f': return (WFDB_Time)(atol(string+1)*f/ffreq); + case 'i': return (WFDB_Time)(istime * (ifreq > 0.0 ? (ifreq/sfreq) : 1.0) * ((gvmode == WFDB_HIGHRES) ? ispfmax : 1)); case 'o': return (ostime); @@ -2983,16 +3190,16 @@ FSTRING datstr(WFDB_Date date) { int d, m, y, gcorr, jm, jy; - long jd; + WFDB_Date jd; if (date >= 2299161L) { /* Gregorian calendar correction */ - gcorr = ((date - 1867216L) - 0.25)/36524.25; + gcorr = (int)(((date - 1867216L) - 0.25)/36524.25); date += 1 + gcorr - (long)(0.25*gcorr); } date += 1524; - jy = 6680 + ((date - 2439870L) - 122.1)/365.25; - jd = 365L*jy + (0.25*jy); - jm = (date - jd)/30.6001; + jy = (int)(6680 + ((date - 2439870L) - 122.1)/365.25); + jd = (WFDB_Date)(365L*jy + (0.25*jy)); + jm = (int)((date - jd)/30.6001); d = date - jd - (int)(30.6001*jm); if ((m = jm - 1) > 12) m -= 12; y = jy - 4715; @@ -3014,11 +3221,11 @@ return (0L); if (m > 2) { jy = y; jm = m + 1; } else { jy = y - 1; jm = m + 13; } - if (jy > 0) date = 365.25*jy; + if (jy > 0) date = (WFDB_Date)(365.25*jy); else date = -(long)(-365.25 * (jy + 0.25)); date += (int)(30.6001*jm) + d + 1720995L; if (d + 31L*(m + 12L*y) >= (15 + 31L*(10 + 12L*1582))) { /* 15/10/1582 */ - gcorr = 0.01*jy; /* Gregorian calendar correction */ + gcorr = (int)(0.01*jy); /* Gregorian calendar correction */ date += 2 - gcorr + (int)(0.25*gcorr); } return (date); diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/lib/wfdb.h0 wfdb-10.4.5/lib/wfdb.h0 --- wfdb-10.4.4/lib/wfdb.h0 2006-05-11 12:36:49.000000000 -0400 +++ wfdb-10.4.5/lib/wfdb.h0 2008-01-11 13:03:57.000000000 -0500 @@ -1,10 +1,10 @@ /* file: wfdb.h G. Moody 13 June 1983 - Last revised: 11 May 2006 wfdblib 10.4.4 + Last revised: 11 January 2008 wfdblib 10.4.5 WFDB library type, constant, structure, and function interface definitions _______________________________________________________________________________ wfdb: a library for reading and writing annotated waveforms (time series data) -Copyright (C) 1983-2006 George B. Moody +Copyright (C) 1983-2008 George B. Moody This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free @@ -33,7 +33,7 @@ /* WFDB library version. */ #define WFDB_MAJOR 10 #define WFDB_MINOR 4 -#define WFDB_RELEASE 4 +#define WFDB_RELEASE 5 #define WFDB_NETFILES 1 /* if 1, library includes code for HTTP, FTP clients */ #define WFDB_NETFILES_LIBCURL 1 @@ -171,7 +171,7 @@ int stat; /* file type/access code (READ, WRITE, etc.) */ }; -struct WFDB_ann { /* annotation structure */ +struct WFDB_ann { /* annotation structure */ WFDB_Time time; /* annotation time, in sample intervals from the beginning of the record */ char anntyp; /* annotation type (< ACMAX, see */ @@ -233,12 +233,15 @@ /* Define function prototypes for ANSI C compilers and C++ compilers */ #ifdef wfdb_PROTO -extern FINT annopen(char *record, WFDB_Anninfo *aiarray, unsigned int nann); +extern FINT annopen(char *record, WFDB_Anninfo *aiarray, + unsigned int nann); extern FINT isigopen(char *record, WFDB_Siginfo *siarray, int nsig); -extern FINT osigopen(char *record, WFDB_Siginfo *siarray, unsigned int nsig); +extern FINT osigopen(char *record, WFDB_Siginfo *siarray, + unsigned int nsig); extern FINT osigfopen(WFDB_Siginfo *siarray, unsigned int nsig); -extern FINT wfdbinit(char *record, WFDB_Anninfo *aiarray, unsigned int nann, - WFDB_Siginfo *siarray, unsigned int nsig); +extern FINT wfdbinit(char *record, + WFDB_Anninfo *aiarray, unsigned int nann, + WFDB_Siginfo *siarray, unsigned int nsig); extern FINT getspf(void); extern FVOID setgvmode(int mode); extern FINT setifreq(WFDB_Frequency freq); @@ -260,6 +263,8 @@ extern FINT setannstr(int annotation_code, char *annotation_mnemonic_string); extern FSTRING anndesc(int annotation_code); extern FINT setanndesc(int annotation_code, char *annotation_description); +extern FVOID setafreq(WFDB_Frequency f); +extern FFREQUENCY getafreq(void); extern FVOID iannclose(WFDB_Annotator a); extern FVOID oannclose(WFDB_Annotator a); extern FINT wfdb_isann(int code); @@ -339,10 +344,10 @@ datstr(), getwfdb(), getinfo(), wfdberror(), wfdbfile(); extern FSITIME strtim(); extern FDATE strdat(); -extern FVOID setgvmode(), wfdbquit(), wfdbquiet(), dbverbose(), setdb(), - wfdbflush(), setcfreq(), setbasecount(), flushcal(), wfdbsetiskew(), - wfdbsetskew(), wfdbsetstart(); -extern FFREQUENCY getifreq(), sampfreq(), getcfreq(); +extern FVOID setafreq(), setgvmode(), wfdbquit(), wfdbquiet(), dbverbose(), + setdb(), wfdbflush(), setcfreq(), setbasecount(), flushcal(), + wfdbsetiskew(), wfdbsetskew(), wfdbsetstart(); +extern FFREQUENCY getafreq(), getifreq(), sampfreq(), getcfreq(); extern FDOUBLE aduphys(), getbasecount(); #endif diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/lib/wfdbinit.c wfdb-10.4.5/lib/wfdbinit.c --- wfdb-10.4.4/lib/wfdbinit.c 2006-02-23 19:27:07.000000000 -0500 +++ wfdb-10.4.5/lib/wfdbinit.c 2008-01-11 13:38:13.000000000 -0500 @@ -1,9 +1,9 @@ /* file: wfdbinit.c G. Moody 23 May 1983 - Last revised: 23 February 2006 wfdblib 10.4.0 + Last revised: 11 January 2008 wfdblib 10.4.5 WFDB library functions wfdbinit, wfdbquit, and wfdbflush _______________________________________________________________________________ wfdb: a library for reading and writing annotated waveforms (time series data) -Copyright (C) 1983-2006 George B. Moody +Copyright (C) 1983-2008 George B. Moody This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/lib/wfdbio.c wfdb-10.4.5/lib/wfdbio.c --- wfdb-10.4.4/lib/wfdbio.c 2006-04-11 09:48:57.000000000 -0400 +++ wfdb-10.4.5/lib/wfdbio.c 2008-01-11 13:52:52.000000000 -0500 @@ -1,10 +1,10 @@ /* file: wfdbio.c G. Moody 18 November 1988 - Last revised: 11 April 2006 wfdblib 10.4.0 + Last revised: 11 January 2008 wfdblib 10.4.5 Low-level I/O functions for the WFDB library _______________________________________________________________________________ wfdb: a library for reading and writing annotated waveforms (time series data) -Copyright (C) 1988-2006 George B. Moody +Copyright (C) 1988-2008 George B. Moody This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free @@ -34,11 +34,9 @@ getwfdb (returns the database path string) setwfdb (sets the database path string) wfdbquiet (suppresses WFDB library error messages) - wfdbverbose * (enables WFDB library error messages) - wfdberror *** (returns the most recent WFDB library error message) - wfdbfile ** (returns the complete pathname of a WFDB file) - -(* New in version 4.0; ** new in version 4.3; *** new in version 4.5.) + wfdbverbose [4.0] (enables WFDB library error messages) + wfdberror [4.5] (returns the most recent WFDB library error message) + wfdbfile [4.3] (returns the complete pathname of a WFDB file) These functions, also defined here, are intended only for the use of WFDB library functions defined elsewhere: @@ -46,19 +44,21 @@ wfdb_g32 (reads a 32-bit integer) wfdb_p16 (writes a 16-bit integer) wfdb_p32 (writes a 32-bit integer) - wfdb_free_path_list *** (frees all data structures assigned to the path list) - wfdb_parse_path *** (splits WFDB path into components) - wfdb_export_config **** (puts the WFDB path, etc. into the environment) - wfdb_getiwfdb * (sets WFDB from the contents of a file) - wfdb_addtopath * (adds path component of string argument to WFDB path) + wfdb_free_path_list [10.0.1] (frees data structures assigned to the path list) + wfdb_parse_path [10.0.1] (splits WFDB path into components) + wfdb_export_config [10.3.9] (puts the WFDB path, etc. into the environment) + wfdb_getiwfdb [6.2] (sets WFDB from the contents of a file) + wfdb_addtopath [6.2] (adds path component of string argument to WFDB path) wfdb_error (produces an error message) - wfdb_fprintf *** (like fprintf, but first arg is a WFDB_FILE pointer) + wfdb_fprintf [10.0.1] (like fprintf, but first arg is a WFDB_FILE pointer) wfdb_open (finds and opens database files) wfdb_checkname (checks record and annotator names for validity) - wfdb_setirec ** (saves current record name) + wfdb_striphea [10.4.5] (removes trailing '.hea' from a record name, if present) + wfdb_setirec [9.7] (saves current record name) -(* New in version 6.2; ** new in version 9.7; *** new in version 10.0.1; -**** new in version 10.3.9) +(Numbers in brackets in the lists above indicate the first version of the WFDB +library that included the corresponding function. Functions not so marked +have been included in all published versions of the WFDB library.) The next two groups of functions, which together enable input from remote (http and ftp) files, were first implemented in version 10.0.1 by Michael @@ -159,7 +159,7 @@ specified (local) FILE (using wfdb_getiwfdb); such files may be nested up to 10 levels. */ -static char *wfdbpath; +static char *wfdbpath = NULL; FSTRING getwfdb(void) { @@ -181,6 +181,7 @@ if (p == NULL && (p = getenv("WFDB")) == NULL) p = DEFWFDB; wfdb_parse_path(p); + if (wfdbpath) free(wfdbpath); if (wfdbpath = (char *)malloc(strlen(p)+1)) strcpy(wfdbpath, p); wfdb_export_config(); @@ -211,6 +212,12 @@ { WFDB_FILE *ifile; + if (s == NULL && record == NULL) + return (wfdb_filename); + + /* Remove trailing .hea, if any, from record name. */ + wfdb_striphea(record); + if ((ifile = wfdb_open(s, record, WFDB_READ))) { (void)wfdb_fclose(ifile); return (wfdb_filename); @@ -309,15 +316,15 @@ Differences among these platforms: 1. Directory separators vary: - UNIX and variants (including Mac OS/X and Cygwin) use `/'. - MS-DOS and OS/2 use `\'. - MacOS 9 and earlier uses `:'. + UNIX and variants (including Mac OS/X and Cygwin) use '/'. + MS-DOS and OS/2 use '\'. + MacOS 9 and earlier uses ':'. 2. Path component separators also vary: - UNIX and variants use `:' (as in the PATH environment variable) - MS-DOS and OS/2 use `;' (also as in the PATH environment variable; - `:' within a path component follows a drive letter) - MacOS uses `;' (`:' is a directory separator, as noted above) + UNIX and variants use ':' (as in the PATH environment variable) + MS-DOS and OS/2 use ';' (also as in the PATH environment variable; + ':' within a path component follows a drive letter) + MacOS uses ';' (':' is a directory separator, as noted above) See the notes above wfdb_open for details about path separators and how WFDB file names are constructed. @@ -352,7 +359,7 @@ /* For other ANSI C compilers. Such compilers must predefine __STDC__ in order to conform to the ANSI specification. */ #ifdef __STDC__ -#ifdef MAC /* Macintosh only. Be sure to define MAC in `wfdblib.h'. */ +#ifdef MAC /* Macintosh only. Be sure to define MAC in 'wfdblib.h'. */ #define DSEP ':' #define PSEP ';' #else /* Other ANSI C compilers (UNIX and variants). */ @@ -497,11 +504,13 @@ if (p = (char *)malloc(strlen(wfdbpath)+6)) { sprintf(p, "WFDB=%s", wfdbpath); putenv(p); + free(p); } if (getenv("WFDBCAL") == NULL) { if (p = malloc(strlen(DEFWFDBCAL)+9)) { sprintf(p, "WFDBCAL=%s", DEFWFDBCAL); putenv(p); + free(p); } } if (getenv("WFDBANNSORT") == NULL) { @@ -532,8 +541,8 @@ void wfdb_addtopath(char *s) { - char *d, *p, *t; - int i, j, l; + char *p, *t; + int i, len; struct wfdb_path_component *c0; if (s == NULL || *s == '\0') return; @@ -562,15 +571,15 @@ /* If we've come this far, the path component of s was not found in the current WFDB path; now append it. */ - l = strlen(wfdbpath); /* wfdbpath set by getwfdb() -- see above */ - if ((t = (char *)malloc((unsigned)(l + i + 2))) == NULL) { + len = strlen(wfdbpath); /* wfdbpath set by getwfdb() -- see above */ + if ((t = (char *)malloc((unsigned)(len + i + 2))) == NULL) { wfdb_error("wfdb_addtopath: insufficient memory\n"); return; /* WFDB path is unchanged */ } (void)strcpy(t, wfdbpath); - t[l++] = PSEP; /* append a path separator */ - (void)strncpy(t+l, s, i); /* append the new path component */ - t[l+i] = '\0'; + t[len++] = PSEP; /* append a path separator */ + (void)strncpy(t+len, s, i); /* append the new path component */ + t[len+i] = '\0'; setwfdb(t); free(t); } @@ -725,15 +734,15 @@ #endif #endif -#define spr1(S, RECORD, TYPE) ((TYPE == (char *)NULL) ? \ +#define spr1(S, RECORD, TYPE) ((*TYPE == '\0') ? \ (void)sprintf(S, "%s", RECORD) : \ (void)sprintf(S, "%s.%s", RECORD, TYPE)) #ifdef FIXISOCD -# define spr2(S, RECORD, TYPE) ((TYPE == (char *)NULL) ? \ +# define spr2(S, RECORD, TYPE) ((*TYPE == '\0') ? \ (void)sprintf(S, "%s;1", RECORD) : \ (void)sprintf(S, "%s.%.3s;1",RECORD,TYPE)) #else -# define spr2(S, RECORD, TYPE) ((TYPE == (char *)NULL) ? \ +# define spr2(S, RECORD, TYPE) ((*TYPE == '\0') ? \ (void)sprintf(S, "%s.", RECORD) : \ (void)sprintf(S, "%s.%.3s", RECORD, TYPE)) #endif @@ -761,14 +770,14 @@ Beginning with version 10.0.1, the WFDB library accepts whitespace (space, tab, or newline characters) as path component separators under any OS. Multiple consecutive whitespace characters are treated as a single path component -separator. Use a `.' to specify the current directory as a path component when +separator. Use a '.' to specify the current directory as a path component when using whitespace as a path component separator. -If the WFDB path includes components of the forms `http://somewhere.net/mydata' -or `ftp://somewhere.else/yourdata', the sequence `://' is explicitly recognized -as part of a URL prefix (under any OS), and the `:' and `/' characters within -the `://' are not interpreted further. Note that the MS-DOS `\' is *not* -acceptable as an alternative to `/' in a URL prefix. To make WFDB paths +If the WFDB path includes components of the forms 'http://somewhere.net/mydata' +or 'ftp://somewhere.else/yourdata', the sequence '://' is explicitly recognized +as part of a URL prefix (under any OS), and the ':' and '/' characters within +the '://' are not interpreted further. Note that the MS-DOS '\' is *not* +acceptable as an alternative to '/' in a URL prefix. To make WFDB paths containing URL prefixes more easily (human) readable, use whitespace for path component separators. @@ -796,12 +805,23 @@ than MS-DOS used file names in the format TYPE.RECORD. This file name format is no longer supported. */ -WFDB_FILE *wfdb_open(char *s, char *record, int mode) +WFDB_FILE *wfdb_open(const char *s, const char *record, int mode) { char *wfdb, *p; struct wfdb_path_component *c0; WFDB_FILE *ifile; + /* If the type (s) is empty, replace it with an empty string so that + strcmp(s, ...) will not segfault. */ + if (s == NULL) s = ""; + + /* If the record name is empty, use s as the record name and replace s + with an empty string. */ + if (record == NULL || *record == '\0') { + if (*s) { record = s; s = ""; } + else return (NULL); /* failure -- both components are empty */ + } + /* Check to see if standard input or output is requested. */ if (strcmp(s, "-") == 0 || (strcmp(s, "hea") == 0 && strcmp(record, "-") == 0)) @@ -820,14 +840,6 @@ return (&wfdb_stdout); } - /* If the record name is empty, use the type as the record name and empty - the type string. */ - if (record == NULL || *record == '\0') { - if (s == NULL || *s == '\0') - return (NULL); /* failure -- both components are empty */ - record = s; s = NULL; - } - /* If the file is to be opened for output, use the current directory. An output file can be opened in another directory if the path to that directory is the first part of 'record'. */ @@ -848,16 +860,16 @@ wfdb = c0->prefix; while (*wfdb && p < wfdb_filename+MFNLEN-20) { if (*wfdb == '%') { - /* Perform substitutions in the WFDB path where `%' is found */ + /* Perform substitutions in the WFDB path where '%' is found */ wfdb++; if (*wfdb == 'r') { - /* `%r' -> record name */ + /* '%r' -> record name */ (void)strcpy(p, irec); p += strlen(p); wfdb++; } else if ('1' <= *wfdb && *wfdb <= '9' && *(wfdb+1) == 'r') { - /* `%Nr' -> first N characters of record name */ + /* '%Nr' -> first N characters of record name */ int n = *wfdb - '0'; int len = strlen(irec); @@ -867,7 +879,7 @@ *p = '\0'; wfdb += 2; } - else /* `%X' -> X, if X is neither `r', nor a non-zero digit + else /* '%X' -> X, if X is neither 'r', nor a non-zero digit followed by 'r' */ *p++ = *wfdb++; } @@ -935,24 +947,44 @@ } /* wfdb_setirec saves the current record name (its argument) in irec (defined -above) to be substituted for `%r' in the WFDB path by wfdb_open as necessary. +above) to be substituted for '%r' in the WFDB path by wfdb_open as necessary. wfdb_setirec is invoked by isigopen (except when isigopen is invoked recursively to open a segment within a multi-segment record) and by annopen (when it is about to open a file for input). */ -void wfdb_setirec(char *p) +void wfdb_setirec(const char *p) { - char *r; + const char *r; + int len; for (r = p; *r; r++) if (*r == DSEP) p = r+1; /* strip off any path information */ #ifdef MSDOS else if (*r == ':') p = r+1; #endif - if (strcmp(p, "-")) /* don't record `-' (stdin) as record name */ - strncpy(irec, p, WFDB_MAXRNL); + len = strlen(p); + // if (len > 4 && strcmp(p + len-4, ".hea") == 0) + //len -= 4; /* final '.hea' is not part of record name */ + if (len > WFDB_MAXRNL) + len = WFDB_MAXRNL; + if (strcmp(p, "-")) { /* don't record '-' (stdin) as record name */ + strncpy(irec, p, len); + irec[len] = '\0'; + } } +/* Remove trailing '.hea' from a record name, if present. */ +void wfdb_striphea(char *p) +{ + if (p) { + int len = strlen(p); + + if (len > 4 && strcmp(p + len-4, ".hea") == 0) + p[len-4] = '\0'; + } +} + + /* WFDB file I/O functions The WFDB library normally reads and writes local files. If libcurl @@ -1935,8 +1967,8 @@ /* This is a quick-and-dirty reimplementation of getenv for the Windows 16-bit DLL environment. It searches the MSDOS environment for a line beginning - with the specified variable name, followed by `='. This function can be - fooled by pathologic variable names (e.g., with embedded `=' characters), + with the specified variable name, followed by '='. This function can be + fooled by pathologic variable names (e.g., with embedded '=' characters), but should be adequate for typical use. */ char FAR *wgetenv(char far *var) diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/lib/wfdblib.h0 wfdb-10.4.5/lib/wfdblib.h0 --- wfdb-10.4.4/lib/wfdblib.h0 2005-05-31 14:49:38.000000000 -0400 +++ wfdb-10.4.5/lib/wfdblib.h0 2008-01-11 13:14:01.000000000 -0500 @@ -1,10 +1,10 @@ /* file: wfdblib.h G. Moody 13 April 1989 - Last revised: 31 May 2005 wfdblib 10.3.15 + Last revised: 11 January 2008 wfdblib 10.4.5 External definitions for WFDB library private functions _______________________________________________________________________________ wfdb: a library for reading and writing annotated waveforms (time series data) -Copyright (C) 1989-2005 George B. Moody +Copyright (C) 1989-2008 George B. Moody This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free @@ -83,44 +83,53 @@ # endif #endif -/* Uncomment the next line if this software is to be compiled on a Macintosh.*/ +/* Macintosh users are strongly advised to use Mac OS X or later. If you are + doing so, no special configuration is needed, and you may ignore this + section. + + If you are running Mac OS 9 or earlier, you may be able to use the WFDB + software package, but this configuration has not been tested for many years, + and is not supported! If you would like to try it, define MAC. */ /* #define MAC */ -/* Macintosh users only: If the version of "ISO 9660 File Access" in the - "System:Extensions" folder is earlier than 5.0, either update your system - software (recommended) or uncomment the next line. */ -/* #define FIXISOCD */ /* DEFWFDB is the default value of the WFDB path if the WFDB environment variable is not set. This value is edited by the configuration script (../configure), which also edits this block of comments to match. - In most cases, it is sufficient to use the string ". DBDIR" for - this purpose, thus restricting the search for WFDB files to the current - directory ("."), followed by DBDIR). + If WFDB_NETFILES support is disabled, the string ". DBDIR" is + usually sufficient for a default WFDB path, thus restricting the search for + WFDB files to the current directory ("."), followed by DBDIR). - If WFDB_NETFILES support is enabled, the setting below adds the + If WFDB_NETFILES support is enabled, the first setting below adds the web-accessible PhysioBank databases to the default path; you may wish to change this to use a nearby PhysioNet mirror (for a list of mirrors, see - http://www.physionet.org/mirrors/). DEFWFDB must not be NULL, however. - The default given below for the Macintosh specifies that the WFDB path is to - be read from the file udb/dbpath.mac on the third edition of the MIT-BIH - Arrhythmia Database CD-ROM (which has a volume name of `MITADB3'); you may - prefer to use a file on a writable disk for this purpose to make - reconfiguration possible. See getwfdb() in wfdbio.c for further - information. + http://physionet.org/mirrors/). DEFWFDB must not be NULL, however. */ + +#ifndef WFDB_NETFILES +# define DEFWFDB ". DBDIR" +#else +# define DEFWFDB ". DBDIR http://physionet.org/physiobank/database" +#endif + +/* Mac OS 9 and earlier, only: The value of DEFWFDB given below specifies + that the WFDB path is to be read from the file udb/dbpath.mac on the third + edition of the MIT-BIH Arrhythmia Database CD-ROM (which has a volume name + of `MITADB3'); you may prefer to use a file on a writable disk for this + purpose, to make reconfiguration possible. See getwfdb() in wfdbio.c for + further information. + + If the version of "ISO 9660 File Access" in the "System:Extensions" folder + is earlier than 5.0, either update your system software (recommended) or + define FIXISOCD. */ + #ifdef MAC +/* #define FIXISOCD */ # ifdef FIXISOCD # define DEFWFDB "@MITADB3:UDB:DBPATH.MAC;1" # else # define DEFWFDB "@MITADB3:UDB:DBPATH.MAC" -# define __STDC__ -# endif -#else -# if WFDB_NETFILES -# define DEFWFDB ". DBDIR http://www.physionet.org/physiobank/database" -# else -# define DEFWFDB ". DBDIR" +# define __STDC__ # endif #endif @@ -152,7 +161,7 @@ (returning each sample of any oversampled signals, and duplicating samples of other signals as necessary). If the operating mode is not selected by invoking setgvmode(), the value of the environment variable WFDBGVMODE - determines the mode (0: WFDB_LOWRES, non-zero: WFDB_HIGHRES); if WFDBGVMODE + determines the mode (0: WFDB_LOWRES, 1: WFDB_HIGHRES); if WFDBGVMODE is not set, the value of DEFWFDBMODE determines the mode. */ #define DEFWFDBGVMODE WFDB_LOWRES @@ -301,8 +310,9 @@ /* These functions are defined in wfdbio.c */ extern int wfdb_fclose(WFDB_FILE *fp); -extern WFDB_FILE *wfdb_open(char *file_type, char *record, int mode); +extern WFDB_FILE *wfdb_open(const char *file_type, const char *record, int mode); extern int wfdb_checkname(char *name, char *description); +extern void wfdb_striphea(char *record); extern int wfdb_g16(WFDB_FILE *fp); extern long wfdb_g32(WFDB_FILE *fp); extern void wfdb_p16(unsigned int x, WFDB_FILE *fp); @@ -312,7 +322,7 @@ extern void wfdb_error(char *format_string, ...); extern WFDB_FILE *wfdb_fopen(char *fname, const char *mode); extern int wfdb_fprintf(WFDB_FILE *fp, const char *format, ...); -extern void wfdb_setirec(char *record_name); +extern void wfdb_setirec(const char *record_name); #if WFDB_NETFILES extern void wfdb_clearerr(WFDB_FILE *fp); @@ -347,9 +357,9 @@ extern WFDB_FILE *wfdb_open(), *wfdb_fopen(); extern int wfdb_checkname(), wfdb_g16(), wfdb_parse_path(); extern long wfdb_g32(); -extern void wfdb_p16(), wfdb_p32(), wfdb_addtopath(), wfdb_error(), - wfdb_setirec(), wfdb_sampquit(), wfdb_sigclose(), wfdb_anclose(), - wfdb_osflush(), wfdb_oaflush(); +extern void wfdb_striphea(), wfdb_p16(), wfdb_p32(), wfdb_addtopath(), + wfdb_error(), wfdb_setirec(), wfdb_sampquit(), wfdb_sigclose(), + wfdb_anclose(), wfdb_osflush(), wfdb_oaflush(); # if WFDB_NETFILES extern char *wfdb_fgets(); diff -Naur --exclude Makefile --exclude info wfdb-10.4.4/NEWS wfdb-10.4.5/NEWS --- wfdb-10.4.4/NEWS 2006-05-12 00:11:58.000000000 -0400 +++ wfdb-10.4.5/NEWS 2008-02-06 11:57:05.000000000 -0500 @@ -1,6 +1,58 @@ +10.4.5: + Bob Farrell and Tony Ricke chased down and provided fixes for memory + leaks in several WFDB library functions, and also provided revisions + to permit additional type checking and to avoid type mismatch warnings. + + Alexander Khaustov reported a bug in convert/ad2m.c and provided a fix + for it. The bug caused ad2m to truncate its output prematurely if the + "-f" option had been used. + + Changes in the build system make it easier to build WFDB using Cygwin + gcc (with or without the Cygwin POSIX library). + + Handle missing samples properly in pschart.c and psfd.c. + + Removed unused variables from app/wapb.c (thanks to Thomas Heldt). + + Corrected threshold update in app/wqrs.c, and added a check to avoid + problems when the sampling frequency is too low. + + When creating annotation files, if the input sampling frequency differs + from the frame rate of the input record (either because of using + WFDB_HIGHRES mode while reading a multifrequency record, or because + of having used setifreq() to modify the sampling frequency), a comment + is written to the beginning of the annotation file indicating the + resolution of the annotation times in ticks per second (thus allowing + the application to store its annotations with whatever time resolution + is desired). When reading an annotation file, if such a resolution + comment is found, getann adjusts the times of annotations to match the + currently defined sampling frequency. The resolutions are kept + independently for each annotation file, so (for example) bxb can + compare two annotation files written with different resolutions. + + The ability to set the time resolution of annotation files has required + a minor change in the semantics of setifreq(). It is now necessary + to invoke setifreq() before creating an annotation file that will + have a resolution matching the (modified) input sampling frequency. + Since setifreq() must be invoked after opening the input signals, + this implies that wfdbinit() cannot be used to open both input signals + and output annotation files if setifreq() is to be used; rather, the + sequence should be isigopen(), setifreq(), and finally annopen(). + + If a string that includes a '.' is supplied to a WFDB library function + where a record name is expected, the WFDB library assumes that it is + the name of a file located in the WFDB path. If the name ends in '.hea', + the file is assumed to be a WFDB-format header file, and its record name + is assumed to be the first part of the string, exclusive of the '.hea'. + + This version also includes support for reading EDF files natively. + If a string supplied as a record name contains a '.' but does not end + in '.hea', it is assumed to be the record name of an EDF file of the + same name. + 10.4.4: Added 'collect.sh' script to 'conf', and 'collect' target to - 'make' template files (Makefile.tpl) to simplify creation of - binary tarballs and RPMs. + 'make' template files (Makefile.tpl) to simplify creation of + binary tarballs and RPMs. 10.4.3: Updated wfdb.spec (used to generate WFDB RPMs) to account for applications with compiled-in paths. @@ -29,8 +81,9 @@ corrected. Matt Osborn reported a bug in convert/ad2m that prevented proper use - of the -f option when processing a compressed signal file. This has - now been corrected. + of the -f option when processing a compressed signal file. [This was + partially fixed in this version, but the fix introduced another bug, + which was corrected in version 10.4.5.] 10.4.0: Version 10.4.0 and later versions of the WFDB library are intended to @@ -46,8 +99,8 @@ has been retained for now, and wfdb.h still includes a set of K&R C function declarations; both of these features are deprecated, however, and may be removed in future versions of the WFDB library. Users who - still need to use a K&R C compiler to compile the library itself may - find 'unprotoize' (included in the GNU gcc distribution) to be helpful. + still need to use a K&R C compiler to compile the library itself may + find 'unprotoize' (included in the GNU gcc distribution) to be helpful. The WFDB Fortran wrappers (fortran/wfdbf.c) have been revised for compatibility with gcc 4.x (which no longer supports -fwritable-strings @@ -166,7 +219,7 @@ Benjamin Moody has added an interface between the WFDB library and libcurl as an alternative to the existing libwww interface, and has updated 'configure' and conf/*.def to search for and use libcurl if - it is available. The primary advantages of libcurl over libwww are + it is available. The primary advantages of libcurl over libwww are that libcurl is smaller and faster, it supports access to password-protected files, and it is actively maintained. Both libraries are freely available on all popular platforms. @@ -193,7 +246,7 @@ 10.3.15: Rules for generating the binary tarball for MS-Windows have been fixed so that the Cygwin DLLs are now included with correct - permissions. + permissions. Installation of shared libraries under GNU/Linux requires an extra step if SELinux is enabled (as under Fedora Core 2 and later); this @@ -315,7 +368,7 @@ In lib/signal.c, several bugs have been identified and fixed. Thanks to Piotr Wlodarek, who found a buffer overrun in isigopen. Also, - isgsettime sometimes performed incorrect seeks on multifrequency + isgsettime sometimes performed incorrect seeks on multifrequency records that had been opened in high-resolution mode; this has been fixed, together with a related bug that caused the value returned by strtim("e") to be calculated incorrectly in some such cases. @@ -430,7 +483,7 @@ Fixed man page installation bug; thanks to Joe Mietus for the bug report. - Updated INSTALL (installation notes). + Updated INSTALL (installation notes). 10.3.2: New applications wav2mit and mit2wav create WFDB-format records from @@ -568,7 +621,7 @@ sorting was suppressed, the warning produced by oannclose() (in lib/annot.c) once again includes the correct 'sortann' command needed to put the annotations into order. (This feature was broken - by a previous revision.) + by a previous revision.) Added 'ahaconvert', a shell script (in convert) that can reformat all (or any subset) of the records on an AHA DB CD-ROM using a2m @@ -657,7 +710,7 @@ Added rules for creating 'dbu.hlp' (MS-Windows help file version of the WFDB Programmer's Guide) to doc/Makefile.tpl. Updated rules for - generating the info version of the Programmer's Guide. + generating the info version of the Programmer's Guide. Special pipe and tape header files from 'data' are now installed by default. @@ -683,8 +736,8 @@ installer for the WFDB Software Package. The environment variable WFDBNOSORT was replaced by WFDBANNSORT, and - the environment variable WFDBGVMODE was introduced (see 'Annotation - Order' and 'Multi-Frequency Records', in the WFDB Programmer's Guide, + the environment variable WFDBGVMODE was introduced (see 'Annotation + Order' and 'Multi-Frequency Records', in the WFDB Programmer's Guide, for details). 10.2.0: