You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by da...@apache.org on 2017/05/28 18:31:51 UTC

svn commit: r1796518 [18/19] - in /spamassassin/trunk/build/pga: ./ docs/ examples/ examples/c/ examples/fortran/ examples/mgh/ examples/templates/ include/ lib/ lib/linux/ man/ man/man1/ man/man2/ man/man3/ man/man4/ man/man5/ man/man6/ man/man7/ man/...

Added: spamassassin/trunk/build/pga/test/instverf.c
URL: http://svn.apache.org/viewvc/spamassassin/trunk/build/pga/test/instverf.c?rev=1796518&view=auto
==============================================================================
--- spamassassin/trunk/build/pga/test/instverf.c (added)
+++ spamassassin/trunk/build/pga/test/instverf.c Sun May 28 18:31:49 2017
@@ -0,0 +1,461 @@
+/*  Example program that shows how to run more than one GA in one
+ *  executable, _AND_ verifies the accuracy of installation.
+ *
+ *  We will run five distinct GA's, each using a different datatype, and,
+ *  thus, a different evaluation function.  The correct output of these GA's
+ *  is in instverf.data, which we read and compare after all GA's are done.
+ *
+ *  The correct solution for #4 and #5 is somewhere around 4.49339389176 for
+ *  the genes, and an evaluation value of around -6.951476096.
+ *
+ *  Author:  Brian P. Walenz
+ */
+#include <pgapack.h>
+
+
+double maxbit(PGAContext *, int, int);
+double ordering(PGAContext *, int, int);
+double name(PGAContext *, int, int);
+double function(PGAContext *, int, int);
+double functionb(PGAContext *, int, int);
+
+/*  The user defined functions.
+ *
+ *  O_* --> for the Ordering problem (integer), problem 2
+ *  N_* --> for the Name problem (character), problem 3
+ *  R_* --> for the real problem, problem 4
+ *  Rb_* -> for the real problem using the binary datatype, problem 5
+ */
+void EOG(PGAContext *);
+int  O_Mutate(PGAContext *, int, int, double);
+void O_Crossover(PGAContext *, int, int, int, int, int, int);
+int  N_Mutate(PGAContext *, int, int, double);
+int  N_StopCond(PGAContext *);
+void R_Init(PGAContext *, int, int);
+void Rb_Init(PGAContext *, int, int);
+void Rb_PrintString(PGAContext *, FILE *, int, int);
+
+char      String[65] = 
+          "THEQUICKBROWNFOXJUMPESOVERTHELAZYDOGWHILETHEOLDGOOSELOOKSPUZZLED";
+double    Results[5][1001];
+int       ResultsIndex;
+
+/*  How often to print, and the size (in bits) of each number in a binary
+ *  string (used by problem 5)
+ */
+#define   PRINTFREQ  100
+#define   RBS        24
+
+void main(int argc, char **argv) {
+    PGAContext     *ctx;
+    int             i, rank;
+    FILE           *ResultsFile;
+    double          R[5];
+    int             E[5];
+
+
+    /*  Even though we aren't doing I/O, we MUST initialize MPI ourselves.
+     *  If we don't, the first call to PGADestroy will finalize MPI, and
+     *  the MPI standard does not allow any MPI calls after that (even
+     *  if it is MPI_Init())!
+     */
+    MPI_Init(&argc, &argv);
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    
+    /*  All examples use a common custom end of generation function to 
+     *  stuff the best of generation evaluation into an array.
+     */
+
+
+    /*  Our first example is the ever-popular maxbit.  As usual, it is
+     *  very simple, not even setting PGAPack options!  Plus, we use a
+     *  very odd string length, 999, which is not divisible by 16, 32 or
+     *  64!  What an excellent test!
+     */
+    ResultsIndex = 0;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 999, PGA_MAXIMIZE);
+    PGASetRandomSeed(ctx, 42);
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,  (void *)EOG);
+    PGASetUp(ctx);
+    PGARun(ctx, maxbit);
+    PGADestroy(ctx);
+
+    /*  Second on the menu is a delicious integer ordering function.
+     *  This uses custom mutation and crossover, but permutation
+     *  initialization.  The objective is to order all alleles in the
+     *  integer datatype in an increasing fashion.
+     */
+    ResultsIndex = 1;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_INTEGER, 64, PGA_MAXIMIZE);
+    PGASetRandomSeed(ctx, 42);
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,  (void *)O_Mutate);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_CROSSOVER, (void *)O_Crossover);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,  (void *)EOG);
+    PGASetIntegerInitPermute(ctx, 0, 63);
+    PGASetUp(ctx);
+    PGARun(ctx, ordering);
+    PGADestroy(ctx);
+
+
+    /*  Third, and least interesting, is the character maximizer.
+     *  Much like name, it uses custom mutation and stopping conditions.
+     */
+    ResultsIndex = 2;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_CHARACTER, 64, PGA_MAXIMIZE);
+    PGASetRandomSeed(ctx, 42); 
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_MUTATION,  (void *)N_Mutate);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_STOPCOND,  (void *)N_StopCond);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,  (void *)EOG);
+    PGASetCharacterInitType(ctx, PGA_CINIT_UPPER);
+    PGASetUp(ctx);
+    PGARun(ctx, name);
+    PGADestroy(ctx);
+
+
+    /*  And, finally, the last of the day.  A simple real-valued function
+     *  optimizer.  Uses custom init string.
+     */
+    ResultsIndex = 3;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_REAL, 32, PGA_MINIMIZE);
+    PGASetRandomSeed(ctx, 42); 
+    PGASetMutationType(ctx, PGA_MUTATION_CONSTANT);
+    PGASetMutationRealValue(ctx, .1); 
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetMutationProb(ctx, 0.1);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,  (void *)R_Init);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,    (void *)EOG);
+    PGASetUp(ctx);
+    PGARun(ctx, function);
+    PGADestroy(ctx);
+
+
+    /*  Encore, encore!  Fine.  We will now perform the last number
+     *  using the binary datatype and PGAGetRealFromBinary alternating
+     *  with PGAGetRealFromGrayCode.
+     */
+    ResultsIndex = 4;
+    ctx = PGACreate(&argc, argv, PGA_DATATYPE_BINARY, 32*RBS, PGA_MINIMIZE);
+    PGASetRandomSeed(ctx, 42); 
+    PGASetPrintFrequencyValue(ctx, PRINTFREQ);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING,  (void *)Rb_Init);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_PRINTSTRING, (void *)Rb_PrintString);
+    PGASetUserFunction(ctx, PGA_USERFUNCTION_ENDOFGEN,    (void *)EOG);
+    PGASetUp(ctx);
+    PGARun(ctx, functionb);
+    PGADestroy(ctx);
+
+
+    /*  Compare the Results with the correct values
+     *  stored in "./test/data/Results.data"
+     */
+    if (rank == 0) {
+	ResultsFile = fopen("instverf.data", "r");
+	if (ResultsFile) {
+	    E[0] = E[1] = E[2] = E[3] = E[4] = 0;
+	    
+	    for (i=1; i<1001; i++) {
+#if 0
+		/*  This is used to generate the results file... */
+		printf("%12.6f %12.6f %12.6f %12.6f %12.6f\n",
+		       Results[0][i], Results[1][i], Results[2][i],
+		       Results[3][i], Results[4][i]);
+#endif
+		fscanf(ResultsFile, "%lf %lf %lf %lf %lf",
+		       R, R+1, R+2, R+3, R+4);
+		if (fabs(R[0] - Results[0][i]) > 0.001)   E[0]++;
+		if (fabs(R[1] - Results[1][i]) > 0.001)   E[1]++;
+		if (fabs(R[2] - Results[2][i]) > 0.001)   E[2]++;
+		if (fabs(R[3] - Results[3][i]) > 0.001)   E[3]++;
+		if (fabs(R[4] - Results[4][i]) > 0.001)   E[4]++;
+	    }
+	    fclose(ResultsFile);
+	    for (i=0; i<5; i++) {
+		if (E[i])
+		    printf("Test %d had %d errors.\n", i, E[i]);
+		else
+		    printf("Test %d was successful.\n", i);
+	    }
+	} else {
+	    fprintf(stderr, "Couldn't open \"instverf.data\".\n");
+	}
+    }
+
+    MPI_Finalize();
+}
+
+
+/******************************************************************************
+ *
+ *  The fitness functions
+ *
+ *****************************************************************************/
+double maxbit(PGAContext *ctx, int p, int pop) {
+    int i, result;
+
+    result = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) 
+	if (PGAGetBinaryAllele(ctx, p, pop, i) == 1)
+	    result = result + 1;
+
+    return((double)result);
+}
+
+
+/*  Award points if two alleles are increasing (i.e., gene = .., 1, 2, ..)
+ *  and if any allele is in the correct spot (i.e., gene = 1, 2, 3, 4, ...)
+ */
+double ordering(PGAContext *ctx, int p, int pop) {
+    int i, n, o, len, result;
+
+    len = PGAGetStringLength(ctx);
+
+    result = 0;
+    o = PGAGetIntegerAllele(ctx, p, pop, 0);
+    if (o == 0)
+	result = 2;
+    for (i=1; i<len; i++) {
+	n = PGAGetIntegerAllele(ctx, p, pop, i);
+	if (o == n-1)
+	    result = result + 1;
+	if (n = i)
+	    result = result + 2;
+	o = n;
+    }
+
+    return((double)result);
+}
+
+double name(PGAContext *ctx, int p, int pop) {
+    int  i, result;
+
+    result = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--)
+	if (PGAGetCharacterAllele(ctx, p, pop, i) == String[i])
+	    result = result + 1;
+
+    return((double)result);
+}
+
+
+double function(PGAContext *ctx, int p, int pop) {
+    int    i;
+    double x, result;
+
+    result = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	x = PGAGetRealAllele(ctx, p, pop, i);
+	result = result + sin(x) / x;
+    }
+
+    return(result);
+}
+
+
+double functionb(PGAContext *ctx, int p, int pop) {
+    int    i;
+    double x, result;
+
+    result = 0;
+    i = PGAGetStringLength(ctx)/RBS - 1;
+
+    for ( ; i>=0; i--) {
+	if (i % 2) {
+	    x = PGAGetRealFromBinary
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	} else {
+	    x = PGAGetRealFromGrayCode
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	}
+	result = result + sin(x) / x;
+    }
+    return(result);
+}
+
+
+
+/**********************************************************************/
+void EOG(PGAContext *ctx) {
+    int     best, iter;
+    double  besteval;
+
+    iter = PGAGetGAIterValue(ctx);
+    best = PGAGetBestIndex(ctx, PGA_NEWPOP);
+    besteval = PGAGetEvaluation(ctx, best, PGA_NEWPOP);
+
+    Results[ResultsIndex][iter] = besteval;
+}
+
+
+
+/**********************************************************************/
+int O_Mutate(PGAContext *ctx, int p, int pop, double mr) {
+    int i, a, b, len;
+ 
+    len = PGAGetStringLength(ctx);
+    
+    a = PGARandomInterval(ctx, 0, len-1);
+    b = PGARandomInterval(ctx, 0, len-1);
+
+    i = PGAGetIntegerAllele(ctx, p, pop, a);
+    PGASetIntegerAllele(ctx, p, pop, a,
+			PGAGetIntegerAllele(ctx, p, pop, b));
+    PGASetIntegerAllele(ctx, p, pop, b, i);
+    return(1);
+}
+
+/*  Crossover:  Ripped from tsp.c  */
+void O_Crossover(PGAContext *ctx, int A, int B, int ppop,
+		 int C, int D, int cpop) {
+    int     co1, co2, i, len, a, b;
+    int     inA[64], inB[64];
+
+    len = PGAGetStringLength(ctx);
+
+    /*  Select random crossover points from [1, len-1].  */
+    co1 = PGARandomInterval(ctx, 1, len-1);
+    while (co1 == (co2 = PGARandomInterval(ctx, 1, len-1))) ;
+    if (co1 > co2) {
+        i = co1;
+        co1 = co2;
+        co2 = i;
+    }
+
+    /*  Copy a->c and b->d up to the first crossover point. */
+    for (i=0; i<co1; i++) {
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        PGASetIntegerAllele(ctx, C, cpop, i, a);
+        PGASetIntegerAllele(ctx, D, cpop, i, b);
+    }
+    
+    /*  Copy a->c and b->d from the second co point to the end of the
+     *  string.  (Yes, we're ignoring the middle for now.)
+     */
+    for (i=co2; i<len; i++) {
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        PGASetIntegerAllele(ctx, C, cpop, i, a);
+        PGASetIntegerAllele(ctx, D, cpop, i, b);
+    }
+    
+    /*  Now, copy a->d and b->c in the middle (co1 <--> co2).  We must
+     *  be careful to not use any cities twice, thus, we must check
+     *  the rest of the string to see if the allele is used.  If it is,
+     *  change the allele to that of the corresponding one in the other
+     *  string, and check again.  For efficiency, we build a couple of
+     *  tables, AtoB and BtoA.
+     */
+    for (i=0; i<len; i++) {
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        inA[a] = i;
+        inB[b] = i;
+    }
+    
+    for (i=co1; i<co2; i++) {
+        /*  While what we picked is outside the crossover region
+         *  in the other string, keep cross-referencing.
+         */
+	b = PGAGetIntegerAllele(ctx, B, ppop, i);
+        while ((inA[b]<co1) || (inA[b]>=co2)) 
+	    b = PGAGetIntegerAllele(ctx, B, ppop, inA[b]);
+
+        a = PGAGetIntegerAllele(ctx, A, ppop, i);
+        while ((inB[a]<co1) || (inB[a]>=co2)) 
+	    a = PGAGetIntegerAllele(ctx, A, ppop, inB[a]);
+
+        PGASetIntegerAllele(ctx, C, cpop, i, b);
+        PGASetIntegerAllele(ctx, D, cpop, i, a);
+    }
+}
+
+
+
+/**********************************************************************/
+int N_Mutate(PGAContext *ctx, int p, int pop, double mr) {
+    int i, count;
+
+    count = 0;
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	if ((PGAGetCharacterAllele(ctx, p, pop, i) != String[i]) &&
+	    (PGARandomFlip(ctx, mr) == PGA_TRUE)) {
+	    PGASetCharacterAllele(ctx, p, pop, i, String[i]);
+	    count += 1;
+	}
+    }
+    return(count);
+}
+
+int N_StopCond(PGAContext *ctx) {
+    int     done, len;
+    double  e;
+
+    done = 0;
+    len  = PGAGetStringLength(ctx);
+    e    = PGAGetEvaluation(ctx, PGAGetBestIndex(ctx, PGA_OLDPOP), PGA_OLDPOP);
+
+    if (PGACheckStoppingConditions(ctx) || (len == e))
+	done = 1;
+
+    return(done);
+}
+
+
+/**********************************************************************/
+void R_Init(PGAContext *ctx, int p, int pop) {
+    int     i;
+    double  r;
+    
+    for (i=PGAGetStringLength(ctx)-1; i>=0; i--) {
+	r = 6.28318530718 * PGARandom01(ctx, 0) - 3.14159265354;
+      	r = 6.28318530718 * exp(r) / (exp(r) + exp(-r));
+
+	PGASetRealAllele(ctx, p, pop, i, r);
+    }
+}
+
+void Rb_Init(PGAContext *ctx, int p, int pop) {
+    int     i;
+    double  r;
+    
+    i = PGAGetStringLength(ctx) / RBS - 1;
+
+    for ( ; i>=0; i--) {
+	r = 6.28318530718 * PGARandom01(ctx, 0) - 3.14159265354;
+      	r = 6.28318530718 * exp(r) / (exp(r) + exp(-r));
+
+	if (i % 2) {
+	    PGAEncodeRealAsBinary
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718, r);
+	} else {
+	    PGAEncodeRealAsGrayCode
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718, r);
+	}
+    }
+}
+
+void Rb_PrintString(PGAContext *ctx, FILE *file, int p, int pop) {
+    int     i, j, len;
+    double  r;
+
+    len = PGAGetStringLength(ctx) / RBS - 1;
+
+    for(i=j=0; i<len; i++, j++) {
+	if (i % 2) {
+	    r = PGAGetRealFromBinary
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	} else {
+	    r = PGAGetRealFromGrayCode
+		(ctx, p, pop, i*RBS, (i+1)*RBS-1, 0.0, 6.28318530718);
+	}
+	fprintf(file, "  %10.6f", r);
+	if (j==5) {
+	    fprintf(file, "\n");
+	    j = -1;
+	}
+    }
+}
+

Added: spamassassin/trunk/build/pga/test/instverf.data
URL: http://svn.apache.org/viewvc/spamassassin/trunk/build/pga/test/instverf.data?rev=1796518&view=auto
==============================================================================
--- spamassassin/trunk/build/pga/test/instverf.data (added)
+++ spamassassin/trunk/build/pga/test/instverf.data Sun May 28 18:31:49 2017
@@ -0,0 +1,1000 @@
+  545.000000   131.000000     7.000000     5.830600     5.830600
+  545.000000   131.000000     7.000000     5.830600     5.830600
+  545.000000   131.000000     7.000000     5.830600     3.095786
+  545.000000   131.000000     9.000000     5.830600     3.095786
+  545.000000   131.000000     9.000000     5.824771     3.095786
+  547.000000   131.000000     9.000000     5.824771     3.095786
+  551.000000   131.000000     9.000000     5.169932     3.095786
+  551.000000   131.000000     9.000000     5.169932     3.095786
+  551.000000   132.000000     9.000000     5.169932     3.095786
+  560.000000   132.000000     9.000000     5.169932     3.095786
+  560.000000   132.000000    11.000000     4.910874     3.095786
+  560.000000   132.000000    11.000000     4.726827     2.112962
+  560.000000   132.000000    11.000000     4.726827     2.112962
+  560.000000   132.000000    11.000000     4.234707     2.112962
+  560.000000   132.000000    11.000000     2.552202     2.112962
+  560.000000   132.000000    12.000000     2.552202     2.112962
+  560.000000   132.000000    12.000000     2.552202     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241418
+  560.000000   132.000000    12.000000     2.502030     1.241089
+  561.000000   133.000000    12.000000     2.265484     0.618203
+  563.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484     0.618203
+  577.000000   133.000000    13.000000     2.265484    -0.359117
+  577.000000   134.000000    13.000000     2.265484    -0.359117
+  577.000000   134.000000    13.000000    -1.347096    -0.460710
+  577.000000   134.000000    13.000000    -1.347096    -0.460710
+  577.000000   134.000000    14.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  577.000000   134.000000    16.000000    -1.347096    -0.460710
+  578.000000   134.000000    16.000000    -1.347096    -0.460710
+  578.000000   134.000000    16.000000    -1.347096    -0.460710
+  583.000000   134.000000    16.000000    -1.347096    -0.460710
+  583.000000   134.000000    16.000000    -1.347096    -0.460710
+  583.000000   134.000000    16.000000    -1.347096    -0.622914
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   134.000000    19.000000    -1.347096    -0.663375
+  583.000000   135.000000    19.000000    -1.347096    -0.663377
+  583.000000   135.000000    19.000000    -1.347096    -0.663377
+  583.000000   135.000000    19.000000    -1.347096    -0.663377
+  583.000000   135.000000    20.000000    -1.347096    -0.663377
+  587.000000   135.000000    20.000000    -1.347096    -0.663377
+  588.000000   135.000000    20.000000    -1.347096    -0.663377
+  588.000000   135.000000    20.000000    -1.347096    -0.666536
+  588.000000   135.000000    20.000000    -1.347096    -0.666536
+  588.000000   135.000000    20.000000    -1.402374    -0.666536
+  588.000000   135.000000    20.000000    -1.405540    -0.701919
+  588.000000   135.000000    20.000000    -1.516927    -0.701919
+  588.000000   135.000000    20.000000    -1.516927    -0.701919
+  588.000000   136.000000    20.000000    -1.516927    -0.701919
+  588.000000   136.000000    20.000000    -1.516927    -0.811475
+  588.000000   136.000000    21.000000    -1.516927    -0.811475
+  588.000000   136.000000    21.000000    -1.516927    -0.811475
+  588.000000   136.000000    21.000000    -1.518980    -0.811475
+  588.000000   136.000000    21.000000    -1.644250    -0.811475
+  591.000000   136.000000    21.000000    -1.644250    -0.811475
+  591.000000   136.000000    21.000000    -1.710707    -0.811475
+  591.000000   136.000000    21.000000    -1.717394    -0.811753
+  591.000000   136.000000    23.000000    -1.717394    -0.811753
+  591.000000   136.000000    23.000000    -1.725584    -0.811753
+  591.000000   136.000000    23.000000    -1.725584    -0.811753
+  591.000000   137.000000    23.000000    -1.749264    -0.823944
+  591.000000   137.000000    23.000000    -1.749264    -0.823944
+  591.000000   137.000000    24.000000    -1.749264    -0.823944
+  594.000000   137.000000    24.000000    -1.766108    -0.888304
+  595.000000   137.000000    24.000000    -1.766108    -0.888304
+  596.000000   137.000000    24.000000    -1.825106    -0.888304
+  596.000000   137.000000    24.000000    -1.825106    -0.888458
+  596.000000   138.000000    24.000000    -1.825106    -0.888458
+  596.000000   138.000000    24.000000    -1.991414    -0.891112
+  596.000000   138.000000    25.000000    -1.991414    -0.995596
+  596.000000   138.000000    25.000000    -1.991414    -0.995596
+  596.000000   138.000000    25.000000    -1.991414    -0.995596
+  598.000000   138.000000    25.000000    -1.991414    -0.995596
+  598.000000   138.000000    25.000000    -1.991414    -0.995596
+  598.000000   138.000000    26.000000    -1.991414    -0.995596
+  599.000000   138.000000    26.000000    -1.996462    -0.995596
+  599.000000   138.000000    26.000000    -2.038102    -0.995596
+  599.000000   138.000000    26.000000    -2.038102    -0.995596
+  599.000000   139.000000    26.000000    -2.038102    -0.995596
+  599.000000   139.000000    26.000000    -2.232807    -0.995596
+  599.000000   139.000000    26.000000    -2.232807    -0.995596
+  599.000000   139.000000    26.000000    -2.232807    -1.147490
+  599.000000   139.000000    26.000000    -2.232807    -1.147490
+  599.000000   139.000000    26.000000    -2.232807    -1.147490
+  599.000000   140.000000    27.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    28.000000    -2.615528    -1.147490
+  601.000000   140.000000    30.000000    -2.615528    -1.147490
+  601.000000   140.000000    30.000000    -2.615528    -1.177010
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    30.000000    -2.615528    -1.266449
+  601.000000   140.000000    32.000000    -2.615528    -1.266449
+  601.000000   141.000000    32.000000    -2.615528    -1.266449
+  601.000000   141.000000    32.000000    -2.615528    -1.266449
+  603.000000   141.000000    32.000000    -2.615528    -2.087184
+  603.000000   141.000000    32.000000    -2.615528    -2.087184
+  603.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  605.000000   141.000000    32.000000    -2.615528    -2.087184
+  606.000000   141.000000    33.000000    -2.615528    -2.087184
+  606.000000   141.000000    33.000000    -2.615528    -2.087184
+  606.000000   142.000000    34.000000    -2.653765    -2.087184
+  606.000000   142.000000    34.000000    -2.809304    -2.087184
+  608.000000   142.000000    34.000000    -3.005066    -2.087184
+  608.000000   142.000000    34.000000    -3.005066    -2.087184
+  608.000000   142.000000    34.000000    -3.005066    -2.134288
+  608.000000   142.000000    34.000000    -3.005066    -2.134288
+  608.000000   142.000000    34.000000    -3.005066    -2.215644
+  608.000000   142.000000    35.000000    -3.005066    -2.215644
+  609.000000   142.000000    35.000000    -3.005066    -2.231666
+  609.000000   143.000000    35.000000    -3.005066    -2.231666
+  609.000000   143.000000    36.000000    -3.005066    -2.231666
+  609.000000   143.000000    36.000000    -3.005066    -2.231666
+  609.000000   143.000000    36.000000    -3.005066    -2.258783
+  609.000000   143.000000    36.000000    -3.005066    -2.360126
+  609.000000   143.000000    36.000000    -3.031497    -2.360126
+  609.000000   143.000000    36.000000    -3.031497    -2.360126
+  610.000000   143.000000    36.000000    -3.031497    -2.403671
+  610.000000   143.000000    36.000000    -3.144883    -2.403671
+  610.000000   143.000000    36.000000    -3.144883    -2.489972
+  611.000000   143.000000    36.000000    -3.144883    -2.489972
+  611.000000   143.000000    36.000000    -3.144883    -2.489972
+  611.000000   143.000000    37.000000    -3.144883    -2.489972
+  612.000000   144.000000    37.000000    -3.144883    -2.490465
+  612.000000   144.000000    37.000000    -3.144883    -2.645446
+  612.000000   144.000000    37.000000    -3.144883    -2.645446
+  612.000000   144.000000    37.000000    -3.319494    -2.645446
+  612.000000   145.000000    37.000000    -3.319494    -2.645446
+  612.000000   145.000000    38.000000    -3.319494    -2.645446
+  613.000000   145.000000    38.000000    -3.319494    -2.645446
+  613.000000   145.000000    38.000000    -3.319494    -2.645450
+  613.000000   145.000000    38.000000    -3.319494    -2.645450
+  613.000000   145.000000    38.000000    -3.319494    -2.645450
+  613.000000   145.000000    38.000000    -3.319494    -2.773906
+  613.000000   145.000000    38.000000    -3.319494    -2.773906
+  613.000000   145.000000    39.000000    -3.319494    -2.776500
+  614.000000   145.000000    39.000000    -3.319494    -2.776907
+  614.000000   145.000000    39.000000    -3.441136    -2.776907
+  614.000000   145.000000    39.000000    -3.441136    -2.776907
+  614.000000   145.000000    39.000000    -3.490688    -2.776907
+  615.000000   145.000000    41.000000    -3.490688    -2.777277
+  615.000000   145.000000    41.000000    -3.490688    -2.780465
+  615.000000   145.000000    41.000000    -3.495495    -2.780465
+  615.000000   145.000000    41.000000    -3.495495    -2.787853
+  615.000000   146.000000    41.000000    -3.495495    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  615.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    41.000000    -3.615383    -2.787853
+  616.000000   146.000000    42.000000    -3.615383    -2.787853
+  616.000000   147.000000    43.000000    -3.615383    -2.787867
+  616.000000   147.000000    43.000000    -3.615383    -2.787867
+  616.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.796747
+  617.000000   147.000000    43.000000    -3.753140    -2.842833
+  617.000000   147.000000    43.000000    -3.753140    -2.919868
+  617.000000   147.000000    43.000000    -3.819071    -2.919868
+  617.000000   147.000000    43.000000    -3.819071    -2.919868
+  617.000000   147.000000    44.000000    -3.819071    -2.919868
+  619.000000   147.000000    44.000000    -3.819071    -2.919868
+  619.000000   148.000000    44.000000    -3.819071    -2.919868
+  619.000000   148.000000    44.000000    -3.834996    -2.919868
+  619.000000   148.000000    44.000000    -3.834996    -2.919868
+  619.000000   148.000000    44.000000    -3.834996    -2.919868
+  619.000000   148.000000    45.000000    -3.851305    -2.919868
+  619.000000   148.000000    45.000000    -3.851305    -2.919868
+  619.000000   148.000000    45.000000    -3.905956    -2.919868
+  619.000000   148.000000    45.000000    -3.905956    -2.920624
+  619.000000   148.000000    45.000000    -3.905956    -2.920624
+  619.000000   148.000000    45.000000    -3.905956    -2.920624
+  620.000000   148.000000    45.000000    -3.908264    -2.931201
+  620.000000   148.000000    45.000000    -3.975791    -2.931201
+  620.000000   148.000000    45.000000    -3.975791    -2.931201
+  620.000000   148.000000    45.000000    -4.192530    -2.931201
+  620.000000   148.000000    45.000000    -4.376775    -2.985771
+  620.000000   148.000000    45.000000    -4.376775    -2.985771
+  620.000000   148.000000    45.000000    -4.376775    -2.985800
+  621.000000   148.000000    45.000000    -4.376775    -2.985800
+  621.000000   149.000000    45.000000    -4.376775    -2.985800
+  623.000000   149.000000    45.000000    -4.376775    -2.985800
+  623.000000   149.000000    46.000000    -4.376775    -2.985800
+  623.000000   149.000000    46.000000    -4.430660    -2.985800
+  623.000000   149.000000    46.000000    -4.430660    -2.985800
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    46.000000    -4.430660    -2.995691
+  623.000000   149.000000    47.000000    -4.430660    -2.995691
+  623.000000   149.000000    47.000000    -4.430660    -2.995691
+  623.000000   150.000000    47.000000    -4.430660    -3.058951
+  623.000000   150.000000    47.000000    -4.430660    -3.113522
+  623.000000   150.000000    47.000000    -4.430660    -3.124098
+  623.000000   150.000000    47.000000    -4.430660    -3.124098
+  623.000000   150.000000    47.000000    -4.454581    -3.124098
+  623.000000   150.000000    47.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.454581    -3.124098
+  623.000000   150.000000    48.000000    -4.460662    -3.124098
+  623.000000   150.000000    48.000000    -4.460662    -3.124098
+  624.000000   150.000000    48.000000    -4.460662    -3.124098
+  624.000000   150.000000    48.000000    -4.473634    -3.124098
+  625.000000   150.000000    48.000000    -4.473634    -3.124098
+  625.000000   150.000000    48.000000    -4.473634    -3.130948
+  625.000000   150.000000    48.000000    -4.473634    -3.130948
+  625.000000   150.000000    49.000000    -4.473634    -3.130948
+  625.000000   150.000000    49.000000    -4.473634    -3.130948
+  625.000000   150.000000    49.000000    -4.540714    -3.130948
+  625.000000   150.000000    49.000000    -4.540714    -3.130967
+  625.000000   150.000000    49.000000    -4.540714    -3.130967
+  626.000000   150.000000    49.000000    -4.540714    -3.130967
+  627.000000   151.000000    49.000000    -4.540714    -3.130967
+  627.000000   151.000000    49.000000    -4.540714    -3.130967
+  627.000000   151.000000    49.000000    -4.540714    -3.138881
+  627.000000   151.000000    50.000000    -4.540714    -3.138881
+  627.000000   151.000000    50.000000    -4.540714    -3.138881
+  627.000000   151.000000    50.000000    -4.544082    -3.138881
+  627.000000   151.000000    50.000000    -4.571606    -3.138881
+  627.000000   151.000000    50.000000    -4.571606    -3.138881
+  627.000000   151.000000    50.000000    -4.584436    -3.138881
+  627.000000   151.000000    50.000000    -4.584436    -3.138881
+  627.000000   151.000000    50.000000    -4.584436    -3.149418
+  627.000000   151.000000    50.000000    -4.608382    -3.169051
+  628.000000   151.000000    50.000000    -4.608382    -3.169051
+  628.000000   151.000000    50.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.608382    -3.169051
+  629.000000   151.000000    51.000000    -4.659364    -3.169051
+  629.000000   151.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.659364    -3.779496
+  629.000000   152.000000    51.000000    -4.681538    -3.779496
+  629.000000   152.000000    51.000000    -4.681538    -3.779496
+  630.000000   152.000000    52.000000    -4.681538    -3.779496
+  630.000000   152.000000    52.000000    -4.681538    -3.797945
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  630.000000   152.000000    52.000000    -4.721278    -3.798079
+  631.000000   152.000000    52.000000    -4.729479    -3.805809
+  632.000000   152.000000    52.000000    -4.729479    -3.805809
+  632.000000   152.000000    53.000000    -4.729479    -3.805809
+  632.000000   152.000000    53.000000    -4.729479    -3.805809
+  632.000000   152.000000    53.000000    -4.749840    -3.824973
+  632.000000   152.000000    53.000000    -4.749840    -3.984939
+  632.000000   152.000000    53.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.749840    -3.984939
+  632.000000   152.000000    54.000000    -4.763839    -3.984939
+  632.000000   152.000000    54.000000    -4.826880    -4.017910
+  632.000000   152.000000    54.000000    -4.826880    -4.017910
+  632.000000   152.000000    54.000000    -4.826880    -4.017910
+  633.000000   152.000000    54.000000    -4.826880    -4.017910
+  633.000000   152.000000    54.000000    -4.863338    -4.017910
+  633.000000   152.000000    54.000000    -4.863338    -4.017910
+  633.000000   152.000000    54.000000    -4.863338    -4.094107
+  633.000000   153.000000    55.000000    -4.863338    -4.094107
+  633.000000   153.000000    55.000000    -4.863338    -4.094107
+  633.000000   153.000000    55.000000    -4.863338    -4.094107
+  634.000000   153.000000    55.000000    -4.863338    -4.094107
+  634.000000   153.000000    55.000000    -4.870731    -4.094107
+  634.000000   153.000000    55.000000    -4.958954    -4.094107
+  634.000000   153.000000    55.000000    -4.958954    -4.191519
+  634.000000   153.000000    55.000000    -4.958954    -4.191519
+  634.000000   153.000000    56.000000    -4.981919    -4.191519
+  634.000000   153.000000    56.000000    -4.981919    -4.191519
+  636.000000   153.000000    56.000000    -4.981919    -4.191519
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.191549
+  636.000000   153.000000    56.000000    -4.981919    -4.197134
+  636.000000   153.000000    56.000000    -4.981919    -4.197134
+  637.000000   153.000000    56.000000    -4.998592    -4.197134
+  637.000000   153.000000    56.000000    -4.998592    -4.199412
+  637.000000   154.000000    57.000000    -4.998592    -4.199412
+  637.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.199412
+  638.000000   154.000000    57.000000    -5.046132    -4.209967
+  638.000000   154.000000    57.000000    -5.046132    -4.209967
+  638.000000   154.000000    57.000000    -5.046132    -4.209967
+  638.000000   154.000000    57.000000    -5.046132    -4.209989
+  638.000000   154.000000    58.000000    -5.046132    -4.210011
+  638.000000   154.000000    58.000000    -5.087775    -4.210011
+  638.000000   154.000000    58.000000    -5.087775    -4.210011
+  638.000000   154.000000    58.000000    -5.087775    -4.210011
+  638.000000   154.000000    59.000000    -5.087775    -4.210011
+  638.000000   154.000000    59.000000    -5.128770    -4.210011
+  638.000000   154.000000    59.000000    -5.128770    -4.210011
+  638.000000   154.000000    59.000000    -5.128770    -4.210011
+  639.000000   154.000000    59.000000    -5.128770    -4.210011
+  639.000000   154.000000    59.000000    -5.128770    -4.210011
+  639.000000   154.000000    59.000000    -5.128770    -4.215582
+  639.000000   154.000000    59.000000    -5.128770    -4.215604
+  639.000000   154.000000    59.000000    -5.128770    -4.215634
+  639.000000   154.000000    59.000000    -5.130395    -4.215634
+  639.000000   154.000000    59.000000    -5.213173    -4.217937
+  639.000000   154.000000    59.000000    -5.213173    -4.217937
+  639.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.217937
+  641.000000   154.000000    59.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.213173    -4.228198
+  642.000000   154.000000    60.000000    -5.228922    -4.228198
+  642.000000   154.000000    60.000000    -5.228922    -4.228198
+  642.000000   154.000000    60.000000    -5.228922    -4.228201
+  642.000000   154.000000    60.000000    -5.228922    -4.230609
+  642.000000   154.000000    60.000000    -5.238125    -4.230610
+  642.000000   154.000000    60.000000    -5.238125    -4.243708
+  643.000000   154.000000    60.000000    -5.238125    -4.243708
+  643.000000   154.000000    60.000000    -5.238125    -4.243708
+  643.000000   154.000000    60.000000    -5.238125    -4.373889
+  643.000000   154.000000    61.000000    -5.238125    -4.373889
+  643.000000   154.000000    61.000000    -5.250409    -4.373889
+  643.000000   154.000000    61.000000    -5.250409    -4.373889
+  643.000000   154.000000    61.000000    -5.250409    -4.373889
+  643.000000   154.000000    61.000000    -5.262263    -4.373889
+  643.000000   154.000000    61.000000    -5.306309    -4.373889
+  643.000000   154.000000    61.000000    -5.306309    -4.373889
+  643.000000   154.000000    61.000000    -5.306309    -4.379805
+  643.000000   154.000000    61.000000    -5.306309    -4.379805
+  643.000000   154.000000    61.000000    -5.306309    -4.379805
+  643.000000   154.000000    61.000000    -5.314027    -4.379805
+  643.000000   154.000000    62.000000    -5.314027    -4.383758
+  643.000000   154.000000    62.000000    -5.314027    -4.383758
+  643.000000   154.000000    62.000000    -5.314027    -4.383758
+  644.000000   154.000000    62.000000    -5.314027    -4.383758
+  644.000000   155.000000    62.000000    -5.314027    -4.383758
+  644.000000   155.000000    62.000000    -5.314027    -4.383758
+  644.000000   155.000000    62.000000    -5.337548    -4.383758
+  644.000000   155.000000    62.000000    -5.337548    -4.389375
+  644.000000   155.000000    62.000000    -5.337548    -4.389375
+  644.000000   155.000000    63.000000    -5.379943    -4.389375
+  644.000000   155.000000    63.000000    -5.379943    -4.389375
+  645.000000   155.000000    63.000000    -5.379943    -4.389375
+  645.000000   155.000000    63.000000    -5.379943    -4.395289
+  645.000000   155.000000    63.000000    -5.379943    -4.395289
+  645.000000   155.000000    63.000000    -5.382931    -4.397701
+  645.000000   155.000000    63.000000    -5.382931    -4.397701
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.382931    -4.400861
+  645.000000   155.000000    63.000000    -5.429679    -4.401658
+  645.000000   155.000000    63.000000    -5.429679    -4.401658
+  646.000000   155.000000    63.000000    -5.429679    -4.401658
+  646.000000   155.000000    63.000000    -5.429679    -4.401658
+  646.000000   155.000000    63.000000    -5.440402    -4.401869
+  646.000000   155.000000    63.000000    -5.441520    -4.401869
+  646.000000   155.000000    63.000000    -5.441520    -4.403272
+  646.000000   155.000000    63.000000    -5.441520    -4.404033
+  647.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    63.000000    -5.464831    -4.409699
+  648.000000   155.000000    64.000000    -5.465908    -4.409699
+  648.000000   156.000000     0.000000    -5.465908    -4.419782
+  650.000000   156.000000     0.000000    -5.465908    -4.419782
+  650.000000   156.000000     0.000000    -5.465908    -4.419782
+  650.000000   156.000000     0.000000    -5.487067    -4.419782
+  650.000000   156.000000     0.000000    -5.487067    -4.419782
+  650.000000   156.000000     0.000000    -5.492830    -4.419782
+  650.000000   156.000000     0.000000    -5.492830    -4.419782
+  650.000000   156.000000     0.000000    -5.492830    -4.422150
+  650.000000   156.000000     0.000000    -5.497572    -4.422150
+  650.000000   156.000000     0.000000    -5.497572    -4.606305
+  650.000000   156.000000     0.000000    -5.497572    -4.606305
+  650.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.497572    -4.606408
+  651.000000   156.000000     0.000000    -5.519808    -4.607973
+  651.000000   156.000000     0.000000    -5.519808    -4.607973
+  652.000000   156.000000     0.000000    -5.534848    -4.607973
+  652.000000   156.000000     0.000000    -5.534848    -4.607973
+  652.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.607973
+  653.000000   156.000000     0.000000    -5.534848    -4.608820
+  653.000000   156.000000     0.000000    -5.534848    -4.621086
+  653.000000   156.000000     0.000000    -5.535358    -4.621086
+  653.000000   156.000000     0.000000    -5.535764    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  653.000000   156.000000     0.000000    -5.537825    -4.621086
+  654.000000   156.000000     0.000000    -5.550398    -4.647526
+  654.000000   156.000000     0.000000    -5.550398    -4.649712
+  654.000000   156.000000     0.000000    -5.550398    -4.649712
+  654.000000   156.000000     0.000000    -5.553374    -4.649712
+  654.000000   156.000000     0.000000    -5.553374    -4.649712
+  654.000000   156.000000     0.000000    -5.553374    -4.649938
+  655.000000   156.000000     0.000000    -5.553374    -4.651440
+  655.000000   156.000000     0.000000    -5.553374    -4.651440
+  655.000000   156.000000     0.000000    -5.553386    -4.651896
+  655.000000   156.000000     0.000000    -5.553791    -4.651896
+  655.000000   156.000000     0.000000    -5.553791    -4.653397
+  655.000000   156.000000     0.000000    -5.553791    -4.653397
+  655.000000   156.000000     0.000000    -5.553791    -4.653397
+  656.000000   156.000000     0.000000    -5.553791    -4.653397
+  656.000000   157.000000     0.000000    -5.553791    -4.653430
+  656.000000   157.000000     0.000000    -5.553791    -4.653430
+  656.000000   157.000000     0.000000    -5.569330    -4.653430
+  656.000000   157.000000     0.000000    -5.569330    -4.653658
+  656.000000   157.000000     0.000000    -5.569330    -4.653658
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.787525
+  657.000000   157.000000     0.000000    -5.569330    -4.798067
+  657.000000   157.000000     0.000000    -5.569330    -4.798067
+  657.000000   157.000000     0.000000    -5.569330    -4.798067
+  657.000000   157.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.569341    -4.798067
+  658.000000   158.000000     0.000000    -5.573495    -4.798067
+  658.000000   158.000000     0.000000    -5.573495    -4.798067
+  658.000000   158.000000     0.000000    -5.573495    -4.798067
+  658.000000   158.000000     0.000000    -5.589045    -4.798067
+  658.000000   158.000000     0.000000    -5.589045    -4.798067
+  658.000000   158.000000     0.000000    -5.589045    -4.801652
+  658.000000   158.000000     0.000000    -5.589045    -4.801652
+  659.000000   158.000000     0.000000    -5.589045    -4.801652
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  659.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.944911
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  660.000000   158.000000     0.000000    -5.589045    -4.948857
+  662.000000   158.000000     0.000000    -5.589045    -4.948857
+  662.000000   158.000000     0.000000    -5.589045    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.948857
+  662.000000   158.000000     0.000000    -5.605510    -4.954346
+  662.000000   158.000000     0.000000    -5.605510    -4.954346
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   158.000000     0.000000    -5.605510    -5.005344
+  662.000000   159.000000     0.000000    -5.605510    -5.005344
+  662.000000   159.000000     0.000000    -5.605510    -5.005344
+  663.000000   159.000000     0.000000    -5.605510    -5.005344
+  663.000000   159.000000     0.000000    -5.605510    -5.018093
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  663.000000   159.000000     0.000000    -5.605510    -5.055250
+  664.000000   159.000000     0.000000    -5.614935    -5.067872
+  664.000000   159.000000     0.000000    -5.614935    -5.141387
+  664.000000   159.000000     0.000000    -5.614935    -5.160269
+  664.000000   159.000000     0.000000    -5.614935    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  664.000000   159.000000     0.000000    -5.614948    -5.160269
+  665.000000   159.000000     0.000000    -5.614948    -5.160269
+  665.000000   159.000000     0.000000    -5.614948    -5.160269
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  665.000000   159.000000     0.000000    -5.614948    -5.274921
+  666.000000   159.000000     0.000000    -5.616782    -5.277120
+  666.000000   159.000000     0.000000    -5.622101    -5.282820
+  666.000000   159.000000     0.000000    -5.622101    -5.282820
+  666.000000   159.000000     0.000000    -5.631400    -5.282820
+  666.000000   159.000000     0.000000    -5.632102    -5.287278
+  667.000000   159.000000     0.000000    -5.632102    -5.287278
+  667.000000   159.000000     0.000000    -5.632102    -5.287278
+  667.000000   159.000000     0.000000    -5.650993    -5.287278
+  667.000000   159.000000     0.000000    -5.650993    -5.287278
+  667.000000   159.000000     0.000000    -5.650993    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.287278
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  667.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  668.000000   159.000000     0.000000    -5.667292    -5.336208
+  670.000000   159.000000     0.000000    -5.667292    -5.338620
+  670.000000   159.000000     0.000000    -5.667292    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.338746
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.340796
+  670.000000   159.000000     0.000000    -5.667304    -5.350500
+  670.000000   159.000000     0.000000    -5.667304    -5.350500
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  670.000000   159.000000     0.000000    -5.667304    -5.430467
+  671.000000   159.000000     0.000000    -5.667304    -5.430467
+  671.000000   159.000000     0.000000    -5.667304    -5.435055
+  671.000000   159.000000     0.000000    -5.667304    -5.435055
+  671.000000   159.000000     0.000000    -5.667304    -5.435055
+  672.000000   159.000000     0.000000    -5.667304    -5.435055
+  672.000000   159.000000     0.000000    -5.680452    -5.435055
+  672.000000   159.000000     0.000000    -5.680452    -5.435055
+  672.000000   159.000000     0.000000    -5.680452    -5.435055
+  672.000000   159.000000     0.000000    -5.682618    -5.435055
+  672.000000   160.000000     0.000000    -5.682618    -5.435055
+  672.000000   160.000000     0.000000    -5.682618    -5.435055
+  672.000000   160.000000     0.000000    -5.697775    -5.435313
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  672.000000   160.000000     0.000000    -5.697775    -5.483751
+  674.000000   160.000000     0.000000    -5.697775    -5.483751
+  674.000000   160.000000     0.000000    -5.697775    -5.483751
+  674.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.697775    -5.483751
+  675.000000   160.000000     0.000000    -5.698353    -5.483751
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  675.000000   160.000000     0.000000    -5.698353    -5.488335
+  677.000000   160.000000     0.000000    -5.698353    -5.488336
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502630
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.502631
+  677.000000   160.000000     0.000000    -5.698353    -5.527014
+  677.000000   160.000000     0.000000    -5.698353    -5.527014
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539466
+  677.000000   160.000000     0.000000    -5.698353    -5.539487
+  677.000000   160.000000     0.000000    -5.698353    -5.539487
+  679.000000   160.000000     0.000000    -5.698353    -5.611336
+  679.000000   160.000000     0.000000    -5.698353    -5.611336
+  679.000000   160.000000     0.000000    -5.698353    -5.611343
+  679.000000   160.000000     0.000000    -5.698353    -5.625224
+  679.000000   160.000000     0.000000    -5.698353    -5.625224
+  679.000000   160.000000     0.000000    -5.698353    -5.625224
+  679.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.625231
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.661825
+  680.000000   160.000000     0.000000    -5.698353    -5.662061
+  681.000000   161.000000     0.000000    -5.698353    -5.662061
+  681.000000   161.000000     0.000000    -5.698353    -5.662061
+  681.000000   161.000000     0.000000    -5.698353    -5.662061
+  682.000000   161.000000     0.000000    -5.698353    -5.665403
+  682.000000   161.000000     0.000000    -5.698353    -5.665403
+  682.000000   161.000000     0.000000    -5.698353    -5.665403
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  682.000000   161.000000     0.000000    -5.698353    -5.665969
+  683.000000   161.000000     0.000000    -5.698353    -5.665969
+  683.000000   161.000000     0.000000    -5.698353    -5.665969
+  683.000000   161.000000     0.000000    -5.698353    -5.669372
+  683.000000   161.000000     0.000000    -5.698353    -5.669372
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  683.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  684.000000   161.000000     0.000000    -5.698353    -5.684138
+  685.000000   161.000000     0.000000    -5.698353    -5.702812
+  685.000000   161.000000     0.000000    -5.698353    -5.702812
+  685.000000   161.000000     0.000000    -5.698353    -5.702812
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  685.000000   161.000000     0.000000    -5.698353    -5.709978
+  686.000000   161.000000     0.000000    -5.698353    -5.710102
+  686.000000   161.000000     0.000000    -5.698353    -5.710102
+  686.000000   161.000000     0.000000    -5.698353    -5.710365
+  686.000000   161.000000     0.000000    -5.698353    -5.710365
+  687.000000   161.000000     0.000000    -5.698353    -5.710365
+  687.000000   161.000000     0.000000    -5.698353    -5.715440
+  687.000000   161.000000     0.000000    -5.698353    -5.715440
+  687.000000   161.000000     0.000000    -5.698353    -5.715446
+  687.000000   161.000000     0.000000    -5.698353    -5.717538
+  687.000000   162.000000     0.000000    -5.698353    -5.717538
+  687.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.717538
+  688.000000   162.000000     0.000000    -5.698353    -5.722613
+  688.000000   162.000000     0.000000    -5.698353    -5.722613
+  688.000000   162.000000     0.000000    -5.698353    -5.722613
+  688.000000   162.000000     0.000000    -5.698353    -5.722731
+  688.000000   162.000000     0.000000    -5.698353    -5.722731
+  689.000000   162.000000     0.000000    -5.698353    -5.730166
+  689.000000   162.000000     0.000000    -5.698353    -5.730166
+  689.000000   162.000000     0.000000    -5.698353    -5.730166
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.730173
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.745885
+  691.000000   162.000000     0.000000    -5.698353    -5.811050
+  691.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.811050
+  692.000000   162.000000     0.000000    -5.698353    -5.826762
+  692.000000   162.000000     0.000000    -5.698353    -5.826762
+  692.000000   162.000000     0.000000    -5.698353    -5.826762
+  692.000000   162.000000     0.000000    -5.698353    -5.827023
+  692.000000   162.000000     0.000000    -5.698353    -5.827023
+  692.000000   162.000000     0.000000    -5.698353    -5.847000
+  692.000000   162.000000     0.000000    -5.698353    -5.847255
+  692.000000   162.000000     0.000000    -5.698353    -5.847255
+  693.000000   162.000000     0.000000    -5.698353    -5.847255
+  693.000000   162.000000     0.000000    -5.698353    -5.847255
+  693.000000   162.000000     0.000000    -5.698353    -5.847261
+  693.000000   162.000000     0.000000    -5.698353    -5.847261
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   162.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  693.000000   163.000000     0.000000    -5.698353    -5.938183
+  694.000000   163.000000     0.000000    -5.698353    -5.938183
+  694.000000   163.000000     0.000000    -5.698353    -5.938183
+  694.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954016
+  696.000000   163.000000     0.000000    -5.698353    -5.954057
+  696.000000   163.000000     0.000000    -5.698353    -5.954057
+  696.000000   163.000000     0.000000    -5.698353    -5.954058
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.010316
+  696.000000   163.000000     0.000000    -5.698353    -6.030555
+  696.000000   163.000000     0.000000    -5.698353    -6.030555
+  696.000000   163.000000     0.000000    -5.698353    -6.031038
+  696.000000   163.000000     0.000000    -5.698353    -6.045291
+  696.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  697.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045291
+  698.000000   163.000000     0.000000    -5.698353    -6.045293
+  698.000000   163.000000     0.000000    -5.698353    -6.045293
+  698.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  699.000000   163.000000     0.000000    -5.698353    -6.045293
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.047031
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   163.000000     0.000000    -5.698353    -6.091928
+  700.000000   164.000000     0.000000    -5.698353    -6.091928
+  700.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091928
+  701.000000   164.000000     0.000000    -5.698353    -6.091998
+  701.000000   164.000000     0.000000    -5.698353    -6.091998
+  701.000000   164.000000     0.000000    -5.698353    -6.107778
+  701.000000   164.000000     0.000000    -5.698353    -6.107778
+  702.000000   164.000000     0.000000    -5.698353    -6.107778
+  702.000000   164.000000     0.000000    -5.698353    -6.107778
+  702.000000   164.000000     0.000000    -5.698353    -6.107780
+  702.000000   164.000000     0.000000    -5.698353    -6.107780
+  702.000000   164.000000     0.000000    -5.698353    -6.107780
+  702.000000   165.000000     0.000000    -5.698353    -6.107780
+  702.000000   165.000000     0.000000    -5.698353    -6.107780
+  702.000000   165.000000     0.000000    -5.698353    -6.107780
+  703.000000   165.000000     0.000000    -5.698353    -6.107780
+  703.000000   165.000000     0.000000    -5.698353    -6.107780
+  703.000000   165.000000     0.000000    -5.698353    -6.108072
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.118456
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  703.000000   165.000000     0.000000    -5.698353    -6.119399
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  704.000000   165.000000     0.000000    -5.698353    -6.119889
+  705.000000   165.000000     0.000000    -5.698353    -6.122217
+  705.000000   165.000000     0.000000    -5.698353    -6.122237
+  705.000000   165.000000     0.000000    -5.698353    -6.122237
+  705.000000   166.000000     0.000000    -5.698353    -6.122237
+  705.000000   166.000000     0.000000    -5.698353    -6.123205
+  705.000000   166.000000     0.000000    -5.698353    -6.123205
+  705.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.123205
+  706.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247289
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.247488
+  707.000000   166.000000     0.000000    -5.698353    -6.250651
+  707.000000   166.000000     0.000000    -5.698353    -6.250651
+  707.000000   166.000000     0.000000    -5.698353    -6.250651
+  707.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.251815
+  708.000000   166.000000     0.000000    -5.698353    -6.284965
+  708.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  709.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  710.000000   166.000000     0.000000    -5.698353    -6.284965
+  711.000000   166.000000     0.000000    -5.698353    -6.284965
+  711.000000   166.000000     0.000000    -5.698353    -6.284965
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  711.000000   166.000000     0.000000    -5.698353    -6.295472
+  712.000000   166.000000     0.000000    -5.698353    -6.295472
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  712.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.310901
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325036
+  713.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.325059
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  714.000000   166.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  715.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  716.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331798
+  717.000000   167.000000     0.000000    -5.698353    -6.331821
+  717.000000   167.000000     0.000000    -5.698353    -6.331873
+  718.000000   167.000000     0.000000    -5.698353    -6.332235
+  718.000000   167.000000     0.000000    -5.698353    -6.332235
+  718.000000   167.000000     0.000000    -5.698353    -6.332235
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  718.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  719.000000   167.000000     0.000000    -5.698353    -6.332987
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334864
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.334882
+  721.000000   167.000000     0.000000    -5.698353    -6.335392
+  721.000000   168.000000     0.000000    -5.698353    -6.335392
+  721.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392
+  722.000000   168.000000     0.000000    -5.698353    -6.335392

Added: spamassassin/trunk/build/pga/test/mpif.h
URL: http://svn.apache.org/viewvc/spamassassin/trunk/build/pga/test/mpif.h?rev=1796518&view=auto
==============================================================================
--- spamassassin/trunk/build/pga/test/mpif.h (added)
+++ spamassassin/trunk/build/pga/test/mpif.h Sun May 28 18:31:49 2017
@@ -0,0 +1 @@
+link ../include/mpif.h
\ No newline at end of file

Propchange: spamassassin/trunk/build/pga/test/mpif.h
------------------------------------------------------------------------------
    svn:special = *

Added: spamassassin/trunk/build/pga/test/pgapackf.h
URL: http://svn.apache.org/viewvc/spamassassin/trunk/build/pga/test/pgapackf.h?rev=1796518&view=auto
==============================================================================
--- spamassassin/trunk/build/pga/test/pgapackf.h (added)
+++ spamassassin/trunk/build/pga/test/pgapackf.h Sun May 28 18:31:49 2017
@@ -0,0 +1 @@
+link ../include/pgapackf.h
\ No newline at end of file

Propchange: spamassassin/trunk/build/pga/test/pgapackf.h
------------------------------------------------------------------------------
    svn:special = *

Added: spamassassin/trunk/build/pga/util/README
URL: http://svn.apache.org/viewvc/spamassassin/trunk/build/pga/util/README?rev=1796518&view=auto
==============================================================================
--- spamassassin/trunk/build/pga/util/README (added)
+++ spamassassin/trunk/build/pga/util/README Sun May 28 18:31:49 2017
@@ -0,0 +1,14 @@
+PGAPack Utilities
+
+convertfortran.pl  -- Simple perl script to convert the fortran examples to 
+		      work on "64-bit" machines -- Alpha, Power Challenge, T3D.
+
+upgrade_script.pl  -- Script to _assist_ in the upgrade from version 0.2 to 
+		      version 1.0.  Will catch _most_ of the changes.
+
+wordsizes.c        -- C program to show the sizes of various datastructues
+                      used by PGAPack.  Useful for configuration.  See
+                      wordsizes.c for more information.
+
+
+

Added: spamassassin/trunk/build/pga/util/convertfortran.pl
URL: http://svn.apache.org/viewvc/spamassassin/trunk/build/pga/util/convertfortran.pl?rev=1796518&view=auto
==============================================================================
--- spamassassin/trunk/build/pga/util/convertfortran.pl (added)
+++ spamassassin/trunk/build/pga/util/convertfortran.pl Sun May 28 18:31:49 2017
@@ -0,0 +1,22 @@
+#!/usr/local/bin/perl
+#
+#  Convert fortran examples to 64-bit compatable codes.
+#
+#  This script will replace all occurances of "integer ctx" and 
+#  "integer comm" with "integer*8 ctx" and "integer*8 comm", respectively.
+#  (Uncomment the commented lines below to convert back to 32-bit examples.)
+#
+#  WARNING:  This is done inplace -- no backup files are created!
+#
+foreach (@ARGV) {
+    print "Converting $_\n";
+    $file = $_;
+    open(In, "$file"); @Stuff = <In>; close(In);
+    foreach (@Stuff) {
+        s/integer\s*ctx/integer\*8 ctx/g;
+        s/integer\s*comm/integer\*8 comm/g;
+#        s/integer\*8\s*ctx/integer ctx/g;
+#        s/integer\*8\s*comm/integer comm/g;
+    }
+    open(Out, ">$file"); print Out @Stuff; close(Out);
+}    

Propchange: spamassassin/trunk/build/pga/util/convertfortran.pl
------------------------------------------------------------------------------
    svn:executable = *

Added: spamassassin/trunk/build/pga/util/upgrade_script.pl
URL: http://svn.apache.org/viewvc/spamassassin/trunk/build/pga/util/upgrade_script.pl?rev=1796518&view=auto
==============================================================================
--- spamassassin/trunk/build/pga/util/upgrade_script.pl (added)
+++ spamassassin/trunk/build/pga/util/upgrade_script.pl Sun May 28 18:31:49 2017
@@ -0,0 +1,119 @@
+#!/usr/local/bin/perl
+#
+#  This is a simple script to help in upgrading from V0.2 to V1.0.  It will
+#  make most (if not all) of the function name and #define name changes, and
+#  will print a message where they are done.
+#
+#  Not guaranteed to work 100%, but should take the majority of the pain
+#  out of it.
+#
+#  One thing to pay careful attention to is PGASetMutateOnlyNoCross.  This
+#  was replaced by two functions, PGASetMuataionOrCrossoverFlag and
+#  PGASetMuatationAndCrossoverFlag.  Here, we replace it with the first.
+#
+#  Usage:
+#      upgrade_script.pl <FilesToUpgrade>
+#
+#      It will move the original files to filename.old, and create the 
+#      new files with the original name.
+#
+
+if (ARGV eq 0) {
+    print "Usage: upgrade_script.pl <FilesToUpgrade>\n";
+    exit(-1);
+}
+
+foreach $filename (@ARGV) {
+    rename($filename, "$filename.bak");
+    open(INPUT, "$filename.bak");
+    open(OUTPUT, ">$filename");
+    while (<INPUT>) {
+        &do_rename;
+        print OUTPUT $_;
+    }
+    close(OUTPUT);
+    close(INPUT);
+}
+
+
+sub do_rename {
+    s/PGABinaryBuildIndividualDatatype/PGABinaryBuildDatatype/g;
+    s/PGABinaryRandomize/PGABinaryInitString/g;
+    s/PGABinaryWrite/PGABinaryPrint/g;
+    s/PGABinaryWriteString/PGABinaryPrintString/g;
+    s/PGABuildIndividualDatatype/PGABuildDatatype/g;
+    s/PGACharacterBuildIndividualDatatype/PGACharacterBuildDatatype/g;
+    s/PGACharacterRandomize/PGACharacterInitString/g;
+    s/PGACharacterWriteString/PGACharacterPrintString/g;
+    s/PGAFitnessLinNor/PGAFitnessLinearNormal/g;
+    s/PGAFitnessLinRank/PGAFitnessLinearRank/g;
+    s/PGAFitnessMinRecprl/PGAFitnessMinReciprocal/g;
+    s/PGAGetEvalUpToDate/PGAGetEvaluationUpToDateFlag/g;
+    s/PGAGetEvaluate/PGAGetEvaluation/g;
+    s/PGAGetFitnessRankMax/PGAGetMaxFitnessRank/g;
+    s/PGAGetBest/PGAGetBestIndex/g;
+    s/PGAGetWorst/PGAGetWorstIndex/g;
+    s/PGAGetInitIntegerMax/PGAGetMaxIntegerInitValue/g;
+    s/PGAGetInitIntegerMin/PGAGetMinIntegerInitValue/g;
+    s/PGAGetInitRealMax/PGAGetMaxRealInitValue/g;
+    s/PGAGetInitRealMin/PGAGetMinRealInitValue/g;
+    s/PGAGetIntegerType/PGAGetIntegerInitType/g;
+    s/PGAGetIter/PGAGetGAIterValue/g;
+    s/PGAGetMaxDouble/PGAGetMaxMachineDoubleValue/g;
+    s/PGAGetMaxInt/PGAGetMaxMachineIntValue/g;
+    s/PGAGetMaxIter/PGAGetMaxGAIterValue/g;
+    s/PGAGetMinDouble/PGAGetMinMachineDoubleValue/g;
+    s/PGAGetMinInt/PGAGetMinMachineIntValue/g;
+    s/PGAGetMutateIntegerVal/PGAGetMutationIntegerValue/g;
+    s/PGAGetMutateOnlyNoCross/PGAGetMutationAndCrossoverFlag/g;
+    s/PGAGetMutateRealVal/PGAGetMutationRealValue/g;
+    s/PGAGetNoDuplicates/PGAGetNoDuplicatesFlag/g;
+    s/PGAGetNprocs/PGAGetNumProcs/g;
+    s/PGAGetNumReplace/PGAGetNumReplaceValue/g;
+    s/PGAGetOptDir/PGAGetOptDirFlag/g;
+    s/PGAGetPID/PGAGetRank/g;
+    s/PGAGetPopReplace/PGAGetPopReplaceType/g;
+    s/PGAGetPrintFreq/PGAGetPrintFrequency/g;
+    s/PGAGetRandomInit/PGAGetRandomInitFlag/g;
+    s/PGAGetRestart/PGAGetRestartFlag/g;
+    s/PGAGetRestartFrequency/PGAGetRestartFrequencyValue/g;
+    s/PGAGetSortPop/PGAGetSortedPopIndex/g;
+    s/PGAGetStoppingRule/PGAGetStoppingRuleType/g;
+    s/PGAGetStringLen/PGAGetStringLength/g;
+    s/PGAGetUniformCrossProb/PGAGetUniformCrossoverProb/g;
+    s/PGAIntegerBuildIndividualDatatype/PGAIntegerBuildDatatype/g;
+    s/PGAIntegerRandomize/PGAIntegerInitString/g;
+    s/PGAIntegerWriteString/PGAIntegerPrintString/g;
+    s/PGAParallelDone/PGADoneMS/g;
+    s/PGAParallelEvaluateMS/PGAEvaluateMS/g;
+    s/PGAPrintContext/PGAPrintContextVariable/g;
+    s/PGAPrintVersion/PGAPrintVersionNumber/g;
+    s/PGARealBuildIndividualDatatype/PGARealBuildDatatype/g;
+    s/PGARealRandomize/PGARealInitString/g;
+    s/PGARealWriteString/PGARealPrintString/g;
+    s/PGARunMutateAndCross/PGARunMutationAndCrossover/g;
+    s/PGARunMutateOrCross/PGARunMutationOrCrossover/g;
+    s/PGASelectNext/PGASelectNextIndex/g;
+    s/PGASetCharacterInit/PGASetCharacterInitType/g;
+    s/PGASetEvaluate/PGASetEvaluation/g;
+    s/PGASetEvalUpToDate/PGASetEvaluationUpToDateFlag/g;
+    s/PGASetFitnessRankMax/PGASetMaxFitnessRank/g;
+    s/PGASetMaxIter/PGASetMaxGAIterValue/g;
+    s/PGASetMaxNoChange/PGASetMaxNoChangeValue/g;
+    s/PGASetMaxSimilarity/PGASetMaxSimilarityValue/g;
+    s/PGASetMutateOnlyNoCross/PGASetMutationOrCrossoverFlag/g;
+    s/PGASetMutationIntegerVal/PGASetMutationIntegerValue/g;
+    s/PGASetMutationRealVal/PGASetMutationRealValue/g;
+    s/PGASetNoDuplicates/PGASetNoDuplicatesFlag/g;
+    s/PGASetNumReplace/PGASetNumReplaceValue/g;
+    s/PGASetPopReplacement/PGASetPopReplacementType/g;
+    s/PGASetPrintFreq/PGASetPrintFrequencyValue/g;
+    s/PGASetRandomInit/PGASetRandomInitFlag/g;
+    s/PGASetRestart/PGASetRestartFlag/g;
+    s/PGASetRestartFrequency/PGASetRestartFrequencyValue/g;
+    s/PGASetStoppingRule/PGASetStoppingRuleType/g;
+    s/PGASetSupportingDebugFlags/PGASetDebugFlag/g;
+    s/PGASetUniformCrossProb/PGASetUniformCrossoverProb/g;
+    s/PGAWriteString/PGAPrintString/g;
+}
+