Index: doc/patterns.texi
===================================================================
RCS file: /home/arend/Go/gnugo-rsync/gnugo/doc/patterns.texi,v
retrieving revision 1.19
diff -u -p -r1.19 patterns.texi
--- doc/patterns.texi	16 Apr 2005 20:47:36 -0000	1.19
+++ doc/patterns.texi	3 May 2007 21:05:14 -0000
@@ -1397,6 +1397,12 @@ In GNU Go, the ascii @file{.db} files ar
 @file{patterns.h}) by a standalone program @file{mkpat.c}, and the resulting 
 @file{.c} files are compiled and linked into the main GNU Go executable.
 
+IMPORTANT: After any change in patterns, which uses DFA pattern matching, one
+should optimize pattern databases, in which the changes was made. This is done
+by running a part of @file{optimize} script in @file{patterns} directory. Run
+only parts of this script, which refers to desired databases, because it takes
+a very long time to execute.
+
 Each pattern is compiled to a header, and a sequence of elements,
 which are (notionally) checked sequentially at every position and
 orientation of the board. These elements are relative to the pattern
Index: engine/matchpat.c
===================================================================
RCS file: /home/arend/Go/gnugo-rsync/gnugo/engine/matchpat.c,v
retrieving revision 1.75
diff -u -p -r1.75 matchpat.c
--- engine/matchpat.c	23 Jan 2006 18:15:50 -0000	1.75
+++ engine/matchpat.c	3 May 2007 21:14:02 -0000
@@ -642,7 +642,6 @@ dump_dfa_board(int m, int n)
 static int
 scan_for_patterns(dfa_rt_t *pdfa, int l, int *dfa_pos, int *pat_list)
 {
-  int delta;
   int state = 1; /* initial state */
   int row = 0; /* initial row */
   int id = 0; /* position in id_list */
@@ -657,10 +656,9 @@ scan_for_patterns(dfa_rt_t *pdfa, int l,
     }
 
     /* go to next state */
-    delta = pdfa->states[state].next[dfa_pos[spiral[row][l]]];
-    state += delta;
+    state = pdfa->states[state].next[dfa_pos[spiral[row][l]]];
     row++;
-  } while (delta != 0); /* while not on error state */
+  } while (state != 0); /* while not on error state */
 
   return id;
 }
Index: patterns/Makefile.am
===================================================================
RCS file: /home/arend/Go/gnugo-rsync/gnugo/patterns/Makefile.am,v
retrieving revision 1.39
diff -u -p -r1.39 Makefile.am
--- patterns/Makefile.am	30 Sep 2005 22:25:04 -0000	1.39
+++ patterns/Makefile.am	3 May 2007 21:05:14 -0000
@@ -3,7 +3,9 @@ EXTRA_PROGRAMS = extract_fuseki compress
 
 DSP = dfa.dsp patterns.dsp joseki.dsp mkeyes.dsp mkpat.dsp fuseki.dsp
 DTR = aa_attackpats.dtr owl_attackpats.dtr owl_defendpats.dtr \
-       owl_vital_apats.dtr
+       owl_vital_apats.dtr attack.dtr defense.dtr conn.dtr \
+       barriers.dtr endgame.dtr handicap.dtr influence.dtr \
+       patterns.dtr
 
 EXTRA_DIST = $(DSP)\
         $(DTR)\
@@ -121,33 +123,39 @@ mokuhazushi.db : $(srcdir)/mokuhazushi.s
 takamoku.db : $(srcdir)/takamoku.sgf joseki$(EXEEXT)
 	./joseki JT $(srcdir)/takamoku.sgf >takamoku.db
 
-patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db mkpat$(EXEEXT)
-	./mkpat -b pat -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db \
-               -o patterns.c
+patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db $(srcdir)/patterns.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/patterns.dtr pat \
+               -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db -o patterns.c
 
 josekidb.c : $(DBBUILT) mkpat$(EXEEXT)
 	./mkpat -C joseki $(DBBUILT_INPUT) -o josekidb.c
 
-apatterns.c : $(srcdir)/attack.db mkpat$(EXEEXT)
-	./mkpat -X attpat -i $(srcdir)/attack.db -o apatterns.c
-
-dpatterns.c : $(srcdir)/defense.db mkpat$(EXEEXT)
-	./mkpat defpat -i $(srcdir)/defense.db -o dpatterns.c
-
-conn.c : $(srcdir)/conn.db mkpat$(EXEEXT)
-	./mkpat -c conn -i $(srcdir)/conn.db -o conn.c
-
-endgame.c : $(srcdir)/endgame.db mkpat$(EXEEXT)
-	./mkpat -b endpat -i $(srcdir)/endgame.db -o endgame.c
+apatterns.c : $(srcdir)/attack.db $(srcdir)/attack.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -X -t $(srcdir)/attack.dtr attpat \
+               -i $(srcdir)/attack.db -o apatterns.c
+
+dpatterns.c : $(srcdir)/defense.db $(srcdir)/defense.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -t $(srcdir)/defense.dtr defpat \
+               -i $(srcdir)/defense.db -o dpatterns.c
+
+conn.c : $(srcdir)/conn.db $(srcdir)/conn.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -t $(srcdir)/conn.dtr conn \
+               -i $(srcdir)/conn.db -o conn.c
+
+endgame.c : $(srcdir)/endgame.db $(srcdir)/endgame.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/endgame.dtr endpat \
+               -i $(srcdir)/endgame.db -o endgame.c
 
 eyes.c: $(srcdir)/eyes.db mkeyes$(EXEEXT)
 	./mkeyes < $(srcdir)/eyes.db >eyes.c
 
-influence.c : $(srcdir)/influence.db mkpat$(EXEEXT)
-	./mkpat -c influencepat -i $(srcdir)/influence.db -o influence.c
-
-barriers.c : $(srcdir)/barriers.db mkpat$(EXEEXT)
-	./mkpat -c -b barrierspat -i $(srcdir)/barriers.db -o barriers.c
+influence.c : $(srcdir)/influence.db $(srcdir)/influence.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -t $(srcdir)/influence.dtr influencepat \
+               -i $(srcdir)/influence.db -o influence.c
+
+barriers.c : $(srcdir)/barriers.db $(srcdir)/barriers.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -b -t $(srcdir)/barriers.dtr barrierspat \
+               -i $(srcdir)/barriers.db -o barriers.c
 
 aa_attackpat.c : $(srcdir)/aa_attackpats.db $(srcdir)/aa_attackpats.dtr mkpat$(EXEEXT)
 	./mkpat $(DFAFLAGS) -b -t $(srcdir)/aa_attackpats.dtr aa_attackpat \
@@ -169,7 +177,7 @@ owl_defendpat.c : $(srcdir)/owl_defendpa
                -i $(srcdir)/owl_defendpats.db -o owl_defendpat.c
 
 fusekipat.c : $(srcdir)/fuseki.db mkpat$(EXEEXT)
-	./mkpat -b fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c
+	./mkpat -b -m fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c
 
 fuseki9.c : $(srcdir)/fuseki9.dbz uncompress_fuseki$(EXEEXT)
 	./uncompress_fuseki 9 $(srcdir)/fuseki9.dbz c >fuseki9.c
@@ -180,8 +188,9 @@ fuseki13.c : $(srcdir)/fuseki13.dbz unco
 fuseki19.c : $(srcdir)/fuseki19.dbz uncompress_fuseki$(EXEEXT)
 	./uncompress_fuseki 19 $(srcdir)/fuseki19.dbz c >fuseki19.c
 
-handipat.c : $(srcdir)/handicap.db mkpat$(EXEEXT)
-	./mkpat -b handipat -i $(srcdir)/handicap.db -o handipat.c
+handipat.c : $(srcdir)/handicap.db $(srcdir)/handicap.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/handicap.dtr handipat \
+               -i $(srcdir)/handicap.db -o handipat.c
 
 
 ETAGS_ARGS = --language none --regex '/^Pattern[ \t]+[a-zA-Z0-9]+/' $(DB_TO_TAG)\
Index: patterns/Makefile.in
===================================================================
RCS file: /home/arend/Go/gnugo-rsync/gnugo/patterns/Makefile.in,v
retrieving revision 1.60
diff -u -p -r1.60 Makefile.in
--- patterns/Makefile.in	10 Oct 2005 04:05:18 -0000	1.60
+++ patterns/Makefile.in	3 May 2007 21:05:14 -0000
@@ -80,7 +80,9 @@ EXTRA_PROGRAMS = extract_fuseki compress
 
 DSP = dfa.dsp patterns.dsp joseki.dsp mkeyes.dsp mkpat.dsp fuseki.dsp
 DTR = aa_attackpats.dtr owl_attackpats.dtr owl_defendpats.dtr \
-       owl_vital_apats.dtr
+       owl_vital_apats.dtr attack.dtr defense.dtr conn.dtr \
+       barriers.dtr endgame.dtr handicap.dtr influence.dtr \
+       patterns.dtr
 
 
 EXTRA_DIST = $(DSP)\
@@ -526,33 +528,39 @@ mokuhazushi.db : $(srcdir)/mokuhazushi.s
 takamoku.db : $(srcdir)/takamoku.sgf joseki$(EXEEXT)
 	./joseki JT $(srcdir)/takamoku.sgf >takamoku.db
 
-patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db mkpat$(EXEEXT)
-	./mkpat -b pat -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db \
-               -o patterns.c
+patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db $(srcdir)/patterns.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/patterns.dtr pat \
+               -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db -o patterns.c
 
 josekidb.c : $(DBBUILT) mkpat$(EXEEXT)
 	./mkpat -C joseki $(DBBUILT_INPUT) -o josekidb.c
 
-apatterns.c : $(srcdir)/attack.db mkpat$(EXEEXT)
-	./mkpat -X attpat -i $(srcdir)/attack.db -o apatterns.c
-
-dpatterns.c : $(srcdir)/defense.db mkpat$(EXEEXT)
-	./mkpat defpat -i $(srcdir)/defense.db -o dpatterns.c
-
-conn.c : $(srcdir)/conn.db mkpat$(EXEEXT)
-	./mkpat -c conn -i $(srcdir)/conn.db -o conn.c
-
-endgame.c : $(srcdir)/endgame.db mkpat$(EXEEXT)
-	./mkpat -b endpat -i $(srcdir)/endgame.db -o endgame.c
+apatterns.c : $(srcdir)/attack.db $(srcdir)/attack.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -X -t $(srcdir)/attack.dtr attpat \
+               -i $(srcdir)/attack.db -o apatterns.c
+
+dpatterns.c : $(srcdir)/defense.db $(srcdir)/defense.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -t $(srcdir)/defense.dtr defpat \
+               -i $(srcdir)/defense.db -o dpatterns.c
+
+conn.c : $(srcdir)/conn.db $(srcdir)/conn.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -t $(srcdir)/conn.dtr conn \
+               -i $(srcdir)/conn.db -o conn.c
+
+endgame.c : $(srcdir)/endgame.db $(srcdir)/endgame.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/endgame.dtr endpat \
+               -i $(srcdir)/endgame.db -o endgame.c
 
 eyes.c: $(srcdir)/eyes.db mkeyes$(EXEEXT)
 	./mkeyes < $(srcdir)/eyes.db >eyes.c
 
-influence.c : $(srcdir)/influence.db mkpat$(EXEEXT)
-	./mkpat -c influencepat -i $(srcdir)/influence.db -o influence.c
-
-barriers.c : $(srcdir)/barriers.db mkpat$(EXEEXT)
-	./mkpat -c -b barrierspat -i $(srcdir)/barriers.db -o barriers.c
+influence.c : $(srcdir)/influence.db $(srcdir)/influence.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -t $(srcdir)/influence.dtr influencepat \
+               -i $(srcdir)/influence.db -o influence.c
+
+barriers.c : $(srcdir)/barriers.db $(srcdir)/barriers.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -b -t $(srcdir)/barriers.dtr barrierspat \
+               -i $(srcdir)/barriers.db -o barriers.c
 
 aa_attackpat.c : $(srcdir)/aa_attackpats.db $(srcdir)/aa_attackpats.dtr mkpat$(EXEEXT)
 	./mkpat $(DFAFLAGS) -b -t $(srcdir)/aa_attackpats.dtr aa_attackpat \
@@ -574,7 +582,7 @@ owl_defendpat.c : $(srcdir)/owl_defendpa
                -i $(srcdir)/owl_defendpats.db -o owl_defendpat.c
 
 fusekipat.c : $(srcdir)/fuseki.db mkpat$(EXEEXT)
-	./mkpat -b fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c
+	./mkpat -b -m fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c
 
 fuseki9.c : $(srcdir)/fuseki9.dbz uncompress_fuseki$(EXEEXT)
 	./uncompress_fuseki 9 $(srcdir)/fuseki9.dbz c >fuseki9.c
@@ -585,8 +593,9 @@ fuseki13.c : $(srcdir)/fuseki13.dbz unco
 fuseki19.c : $(srcdir)/fuseki19.dbz uncompress_fuseki$(EXEEXT)
 	./uncompress_fuseki 19 $(srcdir)/fuseki19.dbz c >fuseki19.c
 
-handipat.c : $(srcdir)/handicap.db mkpat$(EXEEXT)
-	./mkpat -b handipat -i $(srcdir)/handicap.db -o handipat.c
+handipat.c : $(srcdir)/handicap.db $(srcdir)/handicap.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/handicap.dtr handipat \
+               -i $(srcdir)/handicap.db -o handipat.c
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
Index: patterns/dfa.c
===================================================================
RCS file: /home/arend/Go/gnugo-rsync/gnugo/patterns/dfa.c,v
retrieving revision 1.42
diff -u -p -r1.42 dfa.c
--- patterns/dfa.c	23 Jan 2006 18:15:51 -0000	1.42
+++ patterns/dfa.c	3 May 2007 21:34:43 -0000
@@ -416,13 +416,6 @@ print_c_dfa(FILE *of, const char *name, 
     exit(EXIT_FAILURE);
   }
 
-  assert(dfa_minmax_delta(pdfa, -1, 1) > -32768);
-  if (dfa_minmax_delta(pdfa, -1, 0)  > 32768) {
-    fprintf(of, "#error too many states");
-    fprintf(stderr, "Error: The dfa states are too disperse. Can't fit delta into a short.\n");
-    exit(EXIT_FAILURE);
-  }
-
   if (pdfa->last_index + 1 > 65535) {
     fprintf(of, "#error too many states");
     fprintf(stderr, "Error: Too many index entries. Can't fit delta into a short.\n");
@@ -439,8 +432,8 @@ print_c_dfa(FILE *of, const char *name, 
     fprintf(of, "{{");
     for (j = 0; j < 4; j++) {
       int n = pdfa->states[i].next[j];
-      assert((n == 0) || (abs(n - i) < 32768));
-      fprintf(of, "%d", n ? n - i : 0);
+      assert((n >= 0) && (n <= 65535));
+      fprintf(of, "%d", n);
       if (j != 3)
         fprintf(of, ",");
     }
@@ -778,44 +771,6 @@ dfa_end(void)
 }
 
 
-/*
- * Returns max or min jump distance from state to next[next_index] for
- * all states.  If next_index < 0, then max/min for all for states.
- */
-
-int 
-dfa_minmax_delta(dfa_t *pdfa, int next_index, int isMin)
-{
-
-  int ret, i, j;
-  assert(next_index <= 3);
- 
-  if (isMin)
-    ret = 99999;
-  else
-    ret = -1;
-
-  for (i = 0; i <= pdfa->last_state; i++) {
-    for (j = 0; j < 4; j++) {
-      if (j == next_index || next_index < 0) { 
-        int next = pdfa->states[i].next[j];
-        if (!next)
-          continue;
-        if (isMin) {
-          if (ret > next - i)
-            ret = next - i;
-        }
-	else {
-          if (ret < next - i)
-            ret = next - i;
-        }
-      }
-    }
-  }
-
-  return ret;
-}
-
 #define DFA_ALIGN 	2
 
 /*
@@ -947,8 +902,11 @@ void 
 dfa_finalize(dfa_t *pdfa) 
 {
   int j;
-  int next_bin = aux_count;
-  int last_bin = aux_count + DFA_BINS - 1;
+  int next_bin;
+  int last_bin;
+  aux_count += DFA_BINS; /* To avoid negative values of aux_count. */
+  next_bin = aux_count;
+  last_bin = aux_count + DFA_BINS - 1;
   while (next_bin + 1 != last_bin) {
     for (j = aux_count + 1; j <= last_bin; j += 2) {
       if (j+1 == next_bin)
@@ -1190,7 +1148,7 @@ pattern_2_string(struct pattern *pat, st
     if (j == pat->minj)
       borders &= ~WEST_EDGE;
     
-    assert(m + i < DFA_MAX_BOARD * 3 && m + i < DFA_MAX_BOARD * 3);
+    assert(m + i < DFA_MAX_BOARD * 4 && n + j < DFA_MAX_BOARD * 4);
     str[k] = work_space[m + i][n + j];
     assert(strchr("XOxo.,a!?$#|-+", str[k]));
     
Index: patterns/dfa.h
===================================================================
RCS file: /home/arend/Go/gnugo-rsync/gnugo/patterns/dfa.h,v
retrieving revision 1.32
diff -u -p -r1.32 dfa.h
--- patterns/dfa.h	20 Apr 2007 21:39:25 -0000	1.32
+++ patterns/dfa.h	3 May 2007 21:10:45 -0000
@@ -65,8 +65,8 @@ typedef struct attrib_rt
 /* DFA state. */
 typedef struct state_rt
 {
-  short next[4];
-  short att;
+  unsigned short next[4]; /* Next state to jump to. */
+  short att;		  /* An index in the attributes table. */
 } state_rt_t;
 
 typedef struct dfa_rt
Index: patterns/mkpat.c
===================================================================
RCS file: /home/arend/Go/gnugo-rsync/gnugo/patterns/mkpat.c,v
retrieving revision 1.158
diff -u -p -r1.158 mkpat.c
--- patterns/mkpat.c	20 Apr 2007 21:39:25 -0000	1.158
+++ patterns/mkpat.c	3 May 2007 21:27:45 -0000
@@ -55,6 +55,7 @@ Usage : mkpat [options] <prefix>\n\
 	-p = compile general pattern database (the default)\n\
 	-c = compile connections database\n\
 	-C = compile a corner pattern database\n\
+  Usage of DFA (cannot be used with a corner pattern database):\n\
 	-D = compile a DFA database (allows fast matching)\n\
 	-d <iterations> = don't generate database, but optimize a DFA\n\
 			  transformation file instead\n\
@@ -91,7 +92,7 @@ If output file is not specified, writes 
 #define DB_GENERAL	((int) 'p')
 #define DB_CONNECTIONS	((int) 'c')
 #define DB_CORNER	((int) 'C')
-#define DB_DFA		((int) 'D')
+#define USE_DFA		((int) 'D')
 #define OPTIMIZE_DFA	((int) 'd')
 
 /* code assumes that ATT_O and ATT_X are 1 and 2 (in either order)
@@ -150,6 +151,7 @@ static int num_stars;
 
 static int ci = -1, cj = -1;    /* position of origin (first piece element)
 				   relative to top-left */
+static int fixed_pat_anchor = 0; /* if anchor for checked pattern is fixed */
 static int patno;		/* current pattern */
 static int discard_pattern = 0;	/* Set to nonzero to discard a pattern (if e.g.
 				 * it is too large or duplicated). */
@@ -482,7 +484,8 @@ static int fatal_errors = 0;
 
 /* options */
 int verbose = 0;	       /* -v */
-static int database_type = 0;  /* -p (default), -c, -f, -C, -D or -T */
+static int database_type = 0;  /* -p (default), -c or -C */
+static int use_dfa = 0;        /* -D or -d */
 static int anchor = 0; 	       /* Whether both O and/or X may be anchors.
 				* -b for both. -X for only X.
 				*/
@@ -536,14 +539,14 @@ find_transformation_hint(const char *pat
 {
   struct hint_data *hint;
 
-  if (database_type == DB_DFA || database_type == OPTIMIZE_DFA) {
+  if (use_dfa) {
     for (hint = first_hint; hint; hint = hint->next) {
       if (!strcmp(hint->name, pattern_name))
 	return hint->transformation_hint;
     }
   }
 
-  return database_type == OPTIMIZE_DFA ? -1 : 0;
+  return use_dfa == OPTIMIZE_DFA ? -1 : 0;
 }
 
 
@@ -695,7 +698,7 @@ write_to_dfa(int index)
   if (verbose)
     fprintf(stderr, "Add   :%s\n", pattern[index].name);
 
-  if (database_type == DB_DFA) {
+  if (use_dfa == USE_DFA) {
     float ratio;
 
     dfa_rotate_string(strrot, str, transformation_hint);
@@ -718,7 +721,7 @@ write_to_dfa(int index)
     int rot_start = 0;
     int rot_stop = pattern[index].trfno;
 
-    assert(database_type == OPTIMIZE_DFA);
+    assert(use_dfa == OPTIMIZE_DFA);
 
     if (rot_stop == 5) {
       rot_start = 2;
@@ -889,6 +892,7 @@ read_pattern_line(char *p)
     }
 
     if (off == ATT_Q) {
+      fixed_pat_anchor = 1;
       off = ATT_O;
       ci = maxi;
       cj = j;
@@ -897,6 +901,7 @@ read_pattern_line(char *p)
     }
 
     if (off == ATT_Y) {
+      fixed_pat_anchor = 1;
       off = ATT_X;
       ci = maxi;
       cj = j;
@@ -1098,7 +1103,8 @@ finish_pattern(char *line)
     ci = 0;
     cj = 0;
   }
-  else if (choose_best_anchor && !discard_pattern) { 
+  else if (choose_best_anchor && !discard_pattern
+	   && (!fixed_pat_anchor || database_type != DB_CONNECTIONS)) {
 
     /* Try to find a better anchor if
      * the -m option is set.
@@ -1775,7 +1781,7 @@ write_elements(FILE *outfile)
   int used_nodes = 0;
 
   assert(ci != -1 && cj != -1);
-  assert(database_type == DB_DFA || transformation_hint == 0);
+  assert(use_dfa == USE_DFA || transformation_hint == 0);
 
   /* sort the elements so that least-likely elements are tested first. */
   gg_sort(elements, el, sizeof(struct patval_b), compare_elements);
@@ -1816,7 +1822,7 @@ write_elements(FILE *outfile)
        * elements for all possible transformations).
        */
       if ((database_type == DB_GENERAL || database_type == DB_CONNECTIONS)
-	  && ci-1 <= x && x <= ci+1 && cj-1 <= y && y <= cj+1)
+	  && !use_dfa && ci-1 <= x && x <= ci+1 && cj-1 <= y && y <= cj+1)
 	continue;
 #endif /* GRID_OPT == 1 */
 
@@ -1824,7 +1830,7 @@ write_elements(FILE *outfile)
        * they might be needed for goal checking or by callback function, so
        * we check it before discarding an element.
        */
-      if (database_type == DB_DFA)
+      if (use_dfa)
 	continue;
     } /* If the element is discardable. */
 
@@ -2384,7 +2390,7 @@ write_pattern_db(FILE *outfile)
   fprintf(outfile, "  -1,\n");  /* fixed_for_size */
   fprintf(outfile, "  %d,\n", fixed_anchor);
   fprintf(outfile, "  %s\n", prefix);
-  if (database_type == DB_DFA)
+  if (use_dfa)
     fprintf(outfile, " ,& dfa_%s\n", prefix); /* pointer to the wired dfa */
   else
     fprintf(outfile, " , NULL\n"); /* pointer to a possible dfa */
@@ -2434,16 +2440,22 @@ main(int argc, char *argv[])
 
       case 'p':
       case 'c':
-      case 'f':
       case 'C':
-      case 'D':
-      case 'd':
 	if (database_type) {
 	  fprintf(stderr, "Error : More than one database type specified (-%c and -%c)\n",
 		  database_type, i);
 	  return 1;
 	}
+	if (i == 'C' && use_dfa) {
+	  fprintf(stderr, "Error : Cannot use DFA with a corner pattern database\n");
+	  return 1;
+	}
 	database_type = i;
+	break;
+
+      case 'd':
+      case 'D':
+	use_dfa = i;
 	if (i == 'd') {
 	  iterations = strtol(gg_optarg, NULL, 10);
 	  if (iterations < 0) {
@@ -2451,6 +2463,10 @@ main(int argc, char *argv[])
 	    return 1;
 	  }
 	}
+	if (database_type == 'C') {
+	  fprintf(stderr, "Error : Cannot use DFA with a corner pattern database\n");
+	  return 1;
+	}
 	break;
 
       case 'O':
@@ -2492,21 +2508,20 @@ main(int argc, char *argv[])
 
     if (!input_files)
       input_file_names[input_files++] = stdin_name;
-    if (output_file_name && database_type != OPTIMIZE_DFA) {
+    if (output_file_name && use_dfa != OPTIMIZE_DFA) {
       output_FILE = fopen(output_file_name, "wb");
       if (output_FILE == NULL) {
 	fprintf(stderr, "Error : Cannot write to file %s\n", output_file_name);
 	return 1;
       }
     }
-    if (transformations_file_name
-	&& (database_type == DB_DFA || database_type == OPTIMIZE_DFA)) {
+    if (transformations_file_name && use_dfa) {
       transformations_FILE = fopen(transformations_file_name, "r");
       if (transformations_FILE) {
 	parse_transformations_file(transformations_FILE);
 	fclose(transformations_FILE);
       }
-      else if (database_type == DB_DFA) {
+      else if (use_dfa == USE_DFA) {
 	fprintf(stderr, "Error : Cannot read file %s\n",
 		transformations_file_name);
 	return 1;
@@ -2524,14 +2539,14 @@ main(int argc, char *argv[])
 
   prefix = argv[gg_optind];
 
-  if (database_type == DB_DFA) {
+  if (use_dfa == USE_DFA) {
     dfa_init();
     new_dfa(&dfa, "mkpat's dfa");
   }
   else if (database_type == DB_CORNER)
     corner_init();
 
-  if (database_type == OPTIMIZE_DFA) {
+  if (use_dfa == OPTIMIZE_DFA) {
     if (transformations_file_name == NULL) {
       fprintf(stderr, "error : transformation file required (use -t option)\n");
       return 1;
@@ -2817,13 +2832,14 @@ main(int argc, char *argv[])
       else if (line[0] == ':') {
 	if (state == 2 || state == 3) {
 	  finish_pattern(line);
+	  fixed_pat_anchor = 0;
 	  
 	  if (!discard_pattern) {
-	    if (database_type == DB_DFA || database_type == OPTIMIZE_DFA)
+	    if (use_dfa)
 	      write_to_dfa(patno);
 	    if (database_type == DB_CORNER)
 	      corner_add_pattern();
-	    else if (database_type != OPTIMIZE_DFA)
+	    else if (use_dfa != OPTIMIZE_DFA)
 	      write_elements(output_FILE);
 	  }
 
@@ -2916,7 +2932,7 @@ main(int argc, char *argv[])
     fprintf(stderr, "%d / %d patterns have edge-constraints\n",
 	    pats_with_constraints, patno);
 
-  if (database_type != OPTIMIZE_DFA) {
+  if (use_dfa != OPTIMIZE_DFA) {
     /* Forward declaration, which autohelpers might need. */
     if (database_type != DB_CORNER)
       fprintf(output_FILE, "static struct pattern %s[%d];\n\n", prefix, patno + 1);
@@ -2933,7 +2949,7 @@ main(int argc, char *argv[])
 
     write_patterns(output_FILE);
 
-    if (database_type == DB_DFA) {
+    if (use_dfa) {
       fprintf(stderr, "---------------------------\n");
 
       dfa_finalize(&dfa);
@@ -2976,7 +2992,7 @@ main(int argc, char *argv[])
 	      current_file);
     }
   }
-  else {	/* database_type == OPTIMIZE_DFA */
+  else {	/* use_dfa == OPTIMIZE_DFA */
     int k;
     int *optimized_variations;
 
@@ -2989,8 +3005,10 @@ main(int argc, char *argv[])
     optimized_variations = dfa_patterns_optimize_variations(&dfa_pats,
 							    iterations);
     for (k = 0; k < patno; k++) {
-      fprintf(transformations_FILE, "%s\t%d\n", pattern_names[k],
-	      optimized_variations[k]);
+      int var = optimized_variations[k];
+      if (pattern[k].trfno == 5)
+	var += 2;
+      fprintf(transformations_FILE, "%s\t%d\n", pattern_names[k], var);
     }
 
     free(optimized_variations);
--- /dev/null	2006-11-25 05:17:37.000000000 -0700
+++ patterns/attack.dtr	2007-05-03 15:05:14.000000000 -0600
@@ -0,0 +1,14 @@
+Attack1	0
+Attack2	0
+Attack4	2
+Attack5	0
+Attack6	6
+Attack10	0
+Attack11	6
+Attack13	1
+Attack14	2
+Attack15	0
+Attack16	5
+Attack17	0
+Attack18	6
+Attack19	4
--- /dev/null	2006-11-25 05:17:37.000000000 -0700
+++ patterns/barriers.dtr	2007-05-03 15:03:43.000000000 -0600
@@ -0,0 +1,218 @@
+Barrier1	1
+Barrier1b	1
+Barrier2	1
+Barrier3	1
+Barrier4a	3
+Barrier4b	4
+Barrier5	0
+Barrier6	7
+Barrier6b	0
+Barrier7	0
+Barrier8	1
+Barrier9	1
+Barrier10	0
+Barrier11	0
+Barrier12	6
+Barrier13	0
+Barrier14	0
+Barrier15	6
+Barrier16	5
+Barrier16b	6
+Barrier17	6
+Barrier18	6
+Barrier19	0
+Barrier20	0
+Barrier21	1
+Barrier22	0
+Barrier22a	6
+Barrier22b	0
+Barrier23	5
+Barrier24	0
+Barrier25	6
+Barrier26	5
+Barrier27	0
+Barrier28	0
+Barrier29	7
+Barrier30	0
+Barrier31	0
+Barrier32	7
+Barrier33	0
+Barrier34	7
+Barrier34b	0
+Barrier35	0
+Barrier36	0
+Barrier37	7
+Barrier38	7
+Barrier39	6
+Barrier40	0
+Barrier41a	3
+Barrier41b	3
+Barrier42	7
+Barrier43	6
+Barrier44	0
+Barrier45	0
+Barrier46	6
+Barrier47	0
+Barrier48	0
+Barrier49	0
+Barrier50	0
+Barrier51	5
+Barrier52	7
+Barrier53	7
+Barrier54	0
+Barrier55	6
+Barrier56	6
+Barrier56b	0
+Barrier57	6
+Barrier58	4
+Barrier59	1
+Barrier60a	3
+Barrier60b	3
+Barrier61	0
+Barrier62	6
+Barrier63	0
+Barrier64	0
+Barrier65	6
+Barrier66	7
+Barrier67	0
+Intrusion1	7
+Intrusion1a	7
+Intrusion1b	3
+Intrusion1c	3
+Intrusion1d	3
+Intrusion2	3
+Intrusion3	7
+Intrusion4	0
+Intrusion5a	7
+Intrusion5b	0
+Intrusion6	7
+Intrusion7b	6
+Intrusion8a	6
+Intrusion8b	1
+Intrusion9	1
+Intrusion10	7
+Intrusion11	0
+Intrusion12a	0
+Intrusion12b	0
+Intrusion13	7
+Intrusion14	0
+Intrusion15	7
+Intrusion16	0
+Intrusion17	6
+Intrusion18	1
+Intrusion19	6
+Intrusion20	0
+Intrusion21	0
+Intrusion21b	6
+Intrusion22	0
+Intrusion23	0
+Intrusion24	0
+Intrusion25	7
+Intrusion26	7
+Intrusion27	6
+Intrusion28	0
+Intrusion29	6
+Intrusion30	7
+Intrusion30a	0
+Intrusion31	7
+Intrusion32	7
+Intrusion33	5
+Intrusion34	0
+Intrusion35	7
+Intrusion36	1
+Intrusion37	1
+Intrusion38	7
+Intrusion39	1
+Intrusion40	5
+Intrusion41	5
+Intrusion42	7
+Intrusion43	4
+Intrusion44a	3
+Intrusion44b	4
+Intrusion45	7
+Intrusion46	0
+Intrusion47	6
+Intrusion48	5
+Intrusion49	0
+Intrusion50	6
+Intrusion51a	0
+Intrusion51b	0
+Intrusion52	6
+Intrusion53	1
+Intrusion54	4
+Intrusion55	7
+Intrusion56	7
+Intrusion57	3
+Intrusion58	7
+Intrusion59	2
+Intrusion60	7
+Intrusion61	3
+Intrusion62	0
+Intrusion63	0
+Nonterritory1	0
+Nonterritory1b	6
+Nonterritory1c	6
+Nonterritory2	4
+Nonterritory3	4
+Nonterritory4	7
+Nonterritory5	7
+Nonterritory6	7
+Nonterritory7	0
+Nonterritory7b	0
+Nonterritory7c	7
+Nonterritory8	0
+Nonterritory8b	0
+Nonterritory9	0
+Nonterritory10	5
+Nonterritory11	7
+Nonterritory12	1
+Nonterritory13	0
+Nonterritory14	5
+Nonterritory15	2
+Nonterritory16	7
+Nonterritory17	6
+Nonterritory17b	0
+Nonterritory18a	0
+Nonterritory18b	0
+Nonterritory19	3
+Nonterritory20	7
+Nonterritory21	3
+Nonterritory22	3
+Nonterritory23	1
+Nonterritory24	0
+Nonterritory25	6
+Nonterritory26	0
+Nonterritory27	1
+Nonterritory28	0
+Nonterritory29	0
+Nonterritory30	0
+Nonterritory31	7
+Nonterritory32	1
+Nonterritory33	0
+Nonterritory34	0
+Nonterritory35	3
+Nonterritory36	0
+Nonterritory37	1
+Nonterritory38	6
+Nonterritory39	1
+Nonterritory40	3
+Nonterritory41	5
+Nonterritory42	6
+Nonterritory43	0
+Nonterritory44	7
+Nonterritory45	2
+Nonterritory46	6
+Nonterritory47	1
+Nonterritory48	6
+Nonterritory49	0
+Nonterritory50	6
+Nonterritory51	0
+Nonterritory52	6
+Nonterritory53	1
+Nonterritory54	3
+Nonterritory55	7
+Nonterritory56	6
+Nonterritory57	3
+Nonterritory58	3
+Nonterritory59	0
+Nonterritory60	6
--- /dev/null	2006-11-25 05:17:37.000000000 -0700
+++ patterns/conn.dtr	2007-05-03 15:03:43.000000000 -0600
@@ -0,0 +1,35 @@
+CB1b	0
+CB2b	0
+CB3b	2
+CB3c	1
+CB7	1
+CB11b	3
+CB15b	0
+CB16	2
+CB17	0
+CB18	1
+EC1	0
+EC1b	0
+EC3a	0
+CC101	1
+CC103	1
+CC104	6
+CC105	1
+CC106	2
+CC107	6
+CC108	2
+CC109	5
+CC401	0
+CC402	0
+CC501	1
+CC502	1
+CC502b	1
+CC503	0
+CC504	1
+CC505	1
+CC506	0
+CC506b	6
+CC507	3
+CC508	0
+CC509	3
+CC511	1
--- /dev/null	2006-11-25 05:17:37.000000000 -0700
+++ patterns/defense.dtr	2007-05-03 15:03:43.000000000 -0600
@@ -0,0 +1,33 @@
+Def1	1
+Def2	0
+Def4	0
+Def5	0
+Def6	0
+Def9	5
+Def10	7
+Def12	6
+Def16	4
+Def17	4
+Def21	2
+Def25	6
+Def26	3
+Def28	1
+Def29	0
+Def39	0
+Def44	0
+Def45	3
+Def49	3
+Def50	0
+Def52	4
+Def55	6
+Def56	0
+Def57	3
+Def58	0
+Def59	0
+Def60	0
+Def61	7
+Def62	7
+Def63	1
+Def68	0
+Def69	5
+Def70	7
--- /dev/null	2006-11-25 05:17:37.000000000 -0700
+++ patterns/endgame.dtr	2007-05-03 15:03:43.000000000 -0600
@@ -0,0 +1,102 @@
+EE1	0
+EE1a	0
+EE2	0
+EE2b	0
+EE2c	0
+EE4	7
+EE5	3
+EE6	0
+EE7	7
+EE101	0
+EE102	0
+EE103	0
+EE104	0
+EE105	0
+EE106	7
+EE107	4
+EE108	0
+EE109	0
+EE110	0
+EE201	7
+EE201b	7
+EE202	0
+EE203	0
+EE204	0
+EE205	0
+EE206	0
+EE301	0
+EE302	0
+EE303	0
+EE401	3
+EE402	0
+EE403	0
+EE404	3
+EE404b	7
+EE405	7
+EE406	6
+EE407	7
+EE408	7
+EE409	3
+EE410	7
+EE411	0
+EE412	0
+EE413	0
+EE414	7
+EE415	4
+EE416	7
+EE501	0
+EE502	0
+EE504	3
+EE601	0
+EE801	0
+EE802	7
+EE803	1
+EE804	0
+EE805	7
+EE806	0
+EE851	7
+EE901	0
+EE902	0
+EE903	0
+EE1002	0
+EE1003	0
+EF101	0
+EF102	0
+CE1	3
+CE2	1
+CE3	1
+CE4a	1
+CE4b	1
+CE6	0
+CE9	7
+CE12	1
+CE13	0
+CE14	0
+CE15	0
+CE15b	0
+CE16	0
+CE16b	0
+CE17	6
+CE18	6
+CE19	0
+CE20a	1
+CE20b	1
+CE20c	1
+CE21	7
+CE22	1
+CE23	7
+CE24	1
+CE26	0
+CE27	1
+CE28	6
+CE28b	6
+CE29	0
+CE31	2
+CE32	6
+CE33	6
+CE34	2
+EY1	5
+EY2	1
+EY3	2
+EY4	1
+EY5	1
--- /dev/null	2006-11-25 05:17:37.000000000 -0700
+++ patterns/handicap.dtr	2007-05-03 15:03:43.000000000 -0600
@@ -0,0 +1,49 @@
+H1	0
+H2	0
+H3	0
+H4	0
+H5	0
+H6	0
+H7	0
+H10	7
+H11	7
+H12	7
+H13	7
+H14	3
+H15	3
+H16	7
+H17	7
+H18	3
+H19	3
+H20	4
+H21	4
+H22	7
+H23	3
+H24	3
+H30	7
+H31	0
+H32	0
+H40	3
+H41	3
+H42	6
+H43	6
+H44	6
+H45	6
+H50	6
+H51	5
+H52	0
+H53	7
+H60	0
+H61	0
+H62	0
+H63	0
+H70	3
+H71	3
+H80	3
+H81	6
+H82	1
+H83	1
+H84	1
+H85	1
+H86	1
+H87	6
--- /dev/null	2006-11-25 05:17:37.000000000 -0700
+++ patterns/influence.dtr	2007-05-03 15:03:43.000000000 -0600
@@ -0,0 +1,50 @@
+Enhance1	1
+Enhance2	0
+Enhance3	3
+Enhance4	0
+Enhance5	6
+Enhance6	0
+Enhance7	4
+Enhance8	7
+Enhance9	4
+Enhance10	7
+Enhance11	0
+Enhance12	3
+Enhance13	3
+Enhance14	0
+Enhance15	0
+Enhance16	1
+Enhance17	1
+Enhance18	0
+Enhance19	0
+Enhance20	3
+Enhance21	0
+Enhance22	4
+Enhance23	3
+Enhance24	0
+Enhance25	4
+Enhance26	2
+Invade1	3
+Invade2	2
+Invade3	2
+Invade4	3
+Invade4b	3
+Invade4c	3
+Invade5	2
+Invade6	3
+Invade6b	3
+Invade6c	3
+Invade7a	0
+Invade7b	1
+Invade7c	1
+Invade7d	6
+Invade8	5
+Invade9	5
+Invade10	3
+Invade11	3
+Invade12	2
+Invade13	0
+Invade14	7
+Invade15	3
+Invade16	2
+Invade17	3
--- /dev/null	2006-11-25 05:17:37.000000000 -0700
+++ patterns/patterns.dtr	2007-05-03 15:03:43.000000000 -0600
@@ -0,0 +1,1220 @@
+CC1	6
+CC2	1
+CC3	1
+CC4	6
+CC5	1
+CC6	3
+CC7	1
+CC8	6
+CC9	0
+CC10	0
+CC10b	0
+CC11	4
+CC12	6
+CC13	3
+CC13b	3
+CC14	1
+CC15	6
+CC16	4
+CC17	6
+CC19	0
+CC20	0
+CC21	0
+CC22	0
+CC23	0
+CC24	6
+CC25	6
+CC26	2
+CC27	1
+CC28	1
+CC29	1
+CC30	1
+CC31	1
+CC32	1
+CC33	7
+CC34	1
+CC35	1
+CC36	7
+CC37	7
+CC38	7
+CC39	0
+CC40	1
+CC41	0
+CC42	0
+CC43	0
+CC44	3
+CC45	6
+CC46	0
+CC47	6
+CC48	6
+CC49	1
+CC50	7
+CC51	5
+CC52a	7
+CC52b	3
+CC53	5
+CC54	0
+CC55	0
+CC57	0
+CC58	0
+CC59	0
+CC60	3
+CC61	1
+CC62	0
+CC63	0
+CC64	0
+CC65	2
+CC66	2
+CC67	6
+CC68	5
+CC69	0
+CC70	1
+CC71	1
+CC72	0
+CC73	0
+CC74	6
+CC74b	6
+CC75	4
+CC76	6
+CC77	3
+CC78	1
+CC79	4
+CC80	2
+CC81	7
+CC82	0
+CC83	1
+CC84	3
+CC85	6
+CC86	6
+CC87	5
+CC88	1
+EC1	0
+EC2	7
+EC4	7
+EC5	7
+EC6	7
+EC7	0
+EC8	7
+EC8a	0
+EC9	0
+EC10	0
+EC11	0
+EC12	7
+EC13	0
+EC14	6
+EC15	0
+EC16	0
+EC16a	0
+EC17	7
+EC18	7
+EC19	0
+EC20	0
+EC21	0
+EC22	2
+EC23	3
+EC24	0
+EC25	0
+EC26	0
+EC27	6
+EC28	6
+EC29	3
+EC30	0
+EC31	0
+EC32	0
+EC33	0
+EC34	6
+EC35	7
+EC36	6
+EC42	0
+EC43	7
+EC44	0
+EC45	0
+EC46	7
+EC47	0
+EC48	0
+EC49	0
+EC50	0
+EC51	0
+EC52	0
+EC53	0
+EC54	6
+EC55	0
+EC56	0
+EC57	0
+EC58	7
+EC59	0
+EC60	6
+EC60a	6
+EC61	6
+EC62	7
+EC63	0
+EC64	7
+EC65	6
+EC66	7
+EC67	0
+EC68	7
+EC69	1
+EC70	0
+EC71	7
+EC73	7
+EC74	0
+EC75	6
+EC76	7
+EC77	4
+EC78	7
+EC79	0
+EC80	0
+EC81	7
+EC101	0
+EC102	0
+EC103	0
+EC104	0
+EC105	7
+EC106	0
+EC107	0
+EC108	0
+EC109	0
+EC110	0
+EC201	3
+EC202	3
+EC203	3
+EC204	3
+EC205	3
+EC206	0
+EC207	0
+EC208	0
+EC209	0
+EC210	0
+EC211	7
+EC212	7
+EC213	0
+EC214	6
+EC215	0
+EC216	0
+EC217	7
+EC218	7
+CS1	1
+CS2	6
+CS3	4
+CS4	3
+CS5	6
+CS6	6
+CS7	1
+CS8	1
+CS9	6
+CS10	0
+CS11	4
+CS12	6
+CS13	0
+CS14	0
+CS15	7
+CS16	7
+CS17	6
+CS18	0
+CS19	6
+CS20a	1
+CS20b	1
+CS21	5
+CS22	7
+CS23	0
+CS24	4
+CS25	1
+CS26	5
+ES1	0
+ES2	7
+ES3a	0
+ES3b	0
+EB4	7
+EB5	0
+EB6	0
+EB7	4
+EB8	7
+EB9	7
+EB10	6
+EB11	0
+EB102	7
+EB104	0
+EB105	0
+EB106	0
+EB107	7
+EB108	0
+EB109	7
+EB110	7
+EB111	7
+EB112	0
+EB113	3
+EB114	7
+EB201	0
+EB202	6
+EB203	5
+EB204	7
+EB205	0
+EB206	0
+EB207	0
+EB208	2
+EB209	7
+EB210	7
+EB211	7
+EB301	7
+EB302	0
+EB303	0
+EB304	7
+EB305	7
+EB306	6
+EB307	6
+EB308	7
+EB309	0
+EB310	0
+EB311	7
+EB312	7
+EB313	0
+EB314	6
+EB315	7
+EB316	0
+EB317	6
+EB401	0
+EB402	0
+EB403	0
+EB404	7
+EB405	7
+EB406	7
+EB407	7
+EB408	0
+EB409	0
+EB410	7
+EB411	7
+EB412	0
+EB501	5
+EB501a	2
+EB502	7
+EB503	7
+EB504	0
+EB505	0
+EB506	6
+EB507	7
+EB507a	7
+EB508	7
+EB509	7
+EB510	7
+EB511	0
+EB512	7
+EB513	2
+EB514	2
+EB515	7
+EB516	0
+EB517	7
+EB518	0
+EB519	3
+EB520	3
+EB521	7
+EB601	7
+EB602	2
+EB603	3
+EB604	6
+EB605	6
+EB606	0
+EB608	7
+EB609	0
+EB610	0
+EB611	6
+EB612	0
+EB615	0
+EB615b	0
+EB616	0
+EB617	0
+EB618	0
+EB619	0
+EB624	7
+EB626	7
+EB627	7
+EB628	0
+EB629	0
+EB630	0
+EB631	0
+EB632	0
+EB633	0
+EB634	0
+EB635	7
+EB637	7
+EB638	0
+EB639	0
+EB640a	0
+EB640b	7
+EB640c	0
+EB641a	7
+EB641b	7
+EB641c	6
+EB642	6
+EB643	6
+EB701	1
+EB702a	0
+EB702b	0
+EB703	6
+EB704	0
+EB705	7
+EB706	7
+EB707	7
+EB708	3
+EB709	5
+EB709b	5
+EB710	7
+EB711	7
+EB712	0
+EB712b	0
+EB713	7
+EB714	0
+EB715	0
+EB716	0
+EB717	0
+EB718	0
+EB719	0
+EB801	0
+EB802	6
+EB803	7
+EB804	7
+EB805	7
+EB806	7
+EB808	0
+EB909	3
+EB910	1
+EB911	6
+EB912	2
+EB913	0
+EB913b	0
+EB914	0
+EB915	0
+EB917	0
+EB918	6
+EB919	0
+EB920	0
+EB921	0
+EB922	3
+EB923	7
+EB924	0
+EB924a	0
+EB924b	0
+EB925	0
+EB1001	0
+EB1003	2
+EB1004	5
+EB1005	5
+EB1006	7
+EB1007	0
+EB1008	0
+EB1008b	0
+EB1008c	0
+EB1009	5
+EB1011	0
+EB1012	0
+EB1013	0
+EB1014	0
+EB1015	7
+EB1016	0
+EB1017	0
+EB1018	7
+EB1019	7
+EB1020	2
+EB1021	0
+EB1022	7
+EB1101	0
+EB1201	3
+EB1202	7
+EB1203	0
+EB1301	1
+EB1302	1
+EB1303	5
+EB1304	0
+EB1305	0
+EB1306	0
+EB1307	0
+EB1308	7
+EB1309	7
+EB1310	0
+EB1311	7
+EB1401	7
+EB1402	7
+EB1403	7
+EB1404a	6
+EB1404c	6
+EB1405	0
+EB1501	0
+EB1502	0
+EB1503	0
+EB1601	0
+EB1603	7
+EB1604	7
+EB1605	7
+EB1606	0
+EB1606b	0
+EB1607	3
+EB1608	6
+EB1609	3
+EB1610	7
+EB1611	0
+EB1701	0
+EB1702	0
+EB1702b	0
+EB1703	4
+EB1704	0
+EB1705	4
+EB1706	4
+EB1707	0
+EB1708	6
+EB1709	0
+EB1710	5
+EB1711	5
+EB1801	0
+EB1802	7
+EB1803	4
+EB1804	7
+EB1805	6
+EB1806	7
+EB1807	1
+EB1808	0
+EB1808a	0
+EB1809	7
+EB1810	0
+EB1901	7
+EB1902	6
+EB1903	0
+EB1904	7
+EB1905	7
+EB1906	6
+EB2001	0
+EB2002	6
+EB2003	6
+CB1	3
+CB2	6
+CB3	6
+CB4	1
+CB5	2
+CB6	7
+CB7	2
+CB8	7
+CB9	6
+CB10	5
+CB12	0
+CB13	4
+CB14	1
+CB14a	1
+CB14b	1
+CB15	6
+CB101	6
+CB103	6
+CB104	0
+CB105	6
+CB105b	6
+CB106	0
+CB207	6
+CB209	6
+CB210	1
+CB217	3
+CB217a	3
+CB277	5
+CB327	3
+CB328	3
+CB202	6
+CB212	3
+CB213	3
+CB216	7
+CB219	0
+CB220	0
+CB221	0
+CB223	1
+CB231	6
+CB232	0
+CB236	1
+CB240	5
+CB241a	0
+CB241b	1
+CB244	6
+CB245	4
+CB247	0
+CB262	6
+CB271	7
+CB275	6
+CB281	0
+CB288	1
+CB296	2
+CB297	2
+CB298	1
+CB307	7
+CB309	1
+CB310	7
+CB313	2
+CB323	6
+CB329a	0
+CB335	1
+CB339	3
+CB205	1
+CB225	1
+CB235	6
+CB251	7
+CB256	7
+CB257	6
+CB260	6
+CB267	2
+CB289	5
+CB203	6
+CB204	1
+CB204b	1
+CB206	1
+CB214	7
+CB215	7
+CB218	7
+CB224	1
+CB226	1
+CB227	5
+CB228	4
+CB229	2
+CB230	1
+CB233	6
+CB234	1
+CB237	6
+CB238	1
+CB239	1
+CB241c	6
+CB242	5
+CB243	1
+CB243b	1
+CB246	5
+CB248	6
+CB250	6
+CB252	0
+CB254	3
+CB255	3
+CB258	6
+CB259	6
+CB261	2
+CB263	5
+CB263b	5
+CB264	1
+CB265	3
+CB266	7
+CB268	6
+CB269	1
+CB270	3
+CB272	4
+CB273	7
+CB274	0
+CB276	0
+CB278	0
+CB279	0
+CB280	7
+CB282	3
+CB283	4
+CB284	3
+CB285	1
+CB286	1
+CB287	4
+CB290	6
+CB291	2
+CB292	0
+CB293	2
+CB294	5
+CB295	2
+CB299	1
+CB300	0
+CB301	7
+CB302	2
+CB303	7
+CB304	3
+CB305	2
+CB306	7
+CB308	1
+CB311	6
+CB312	5
+CB314	7
+CB315	0
+CB316	6
+CB317	4
+CB318	1
+CB319	3
+CB320	0
+CB321	1
+CB322	1
+CB322a	1
+CB324	1
+CB325	4
+CB326	6
+CB330	1
+CB331	1
+CB332	6
+CB333	0
+CB334	6
+CB337	1
+CB338	1
+CB338b	3
+CB340	7
+CB341	3
+CB342	7
+CB343	2
+CB344a	0
+CB344b	0
+CB344c	0
+ED1	0
+ED2	0
+ED3	0
+ED4	7
+ED6	0
+ED7	0
+ED8	7
+ED9	0
+ED10	0
+ED11	3
+ED12	0
+ED13	0
+ED14	6
+ED15	0
+ED16	0
+ED17	7
+ED18	0
+ED19	0
+ED20	0
+ED21	6
+ED22	7
+ED22b	7
+ED23	7
+ED24	6
+ED25	7
+ED26	7
+ED27	6
+ED28	0
+ED29	1
+ED30	0
+ED31	7
+ED31b	3
+ED31c	0
+ED32	0
+ED33	3
+ED34	0
+ED35	0
+ED36	0
+ED37	3
+ED38	3
+ED39	0
+ED40	1
+ED41	7
+ED42	7
+ED43	7
+ED44	7
+ED45	7
+ED46	1
+ED47	7
+ED48	6
+ED49	0
+ED49b	7
+ED50	0
+ED51	7
+ED52	0
+ED53	7
+ED54	0
+ED55	0
+ED56	3
+ED57	7
+ED58	6
+ED59	6
+ED61	0
+ED62	3
+ED63	0
+ED64	7
+ED65	3
+ED68	1
+ED69	3
+ED70	5
+ED71	6
+ED72	7
+ED73	7
+ED74	4
+ED75	4
+ED76	3
+ED77	7
+ED78	3
+ED79	7
+ED80	0
+ED81	0
+ED82	4
+ED83	1
+ED84	4
+ED85	7
+ED86	7
+ED87	0
+ED87a	0
+ED88	7
+ED89	7
+ED90	3
+ED91	7
+ED92	0
+ED93	7
+ED94	6
+ED95	0
+ED96	0
+ED97	0
+ED98	6
+ED99a	0
+ED100	7
+ED101	3
+CD1	7
+CD3	0
+CD7	1
+CD28	5
+CD31	2
+CD39	4
+CD40	1
+CD43	0
+CD48	5
+CD49	4
+CD55	3
+CD56	7
+CD64	0
+CD67	0
+CD76	2
+CD77	4
+CD79	0
+CD82	4
+CD83	0
+CD87	0
+CD88	6
+CD89	4
+CD90	5
+CD91	6
+CD92	7
+CD92a	7
+CD92b	7
+CD93	2
+CD94	2
+CD94b	4
+CD95	1
+CD96	6
+CD99	0
+CD102	1
+CD104a	4
+CD104b	4
+CD105	6
+CD107	0
+CD108	7
+CD109	0
+EJ1	6
+EJ2	5
+EJ2b	0
+EJ3	0
+EJ4	7
+EJ6	0
+EJ7	7
+EJ7b	7
+EJ8	0
+EJ9	0
+EJ12	6
+EJ13	0
+EJ13b	6
+EJ14	0
+EJ15	6
+EJ17	7
+EJ18	0
+EJ19	0
+EJ20	0
+EJ21	0
+EJ22	0
+EJ23	0
+EJ24	5
+EJ25	7
+EJ26	0
+EJ27	0
+EJ28	6
+EJ29	0
+EJ30	3
+EJ31	0
+EJ32	7
+EJ33	0
+EJ34	7
+EJ35	3
+EJ37	6
+EJ39	7
+EJ40	7
+EJ41	0
+EJ42	3
+EJ43	5
+EJ44	6
+EJ45	0
+EJ46	6
+EJ47	0
+EJ49b	6
+EJ50	0
+EJ51	3
+EJ52	0
+EJ53	7
+EJ54	6
+EJ55	7
+EJ56	7
+EJ57	0
+EJ58	7
+EJ59	0
+EJ60	0
+EJ62a	4
+EJ62b	4
+EJ63a	0
+EJ63	0
+EJ64	0
+EJ65	0
+EJ66	0
+EJ67	6
+EJ68	0
+EJ69	0
+EJ71	6
+EJ72	0
+EJ73	6
+EJ74	6
+EJ75	7
+EJ76	5
+EJ77	0
+EJ78	7
+EJ79	4
+EJ80	4
+EJ81	0
+EJ81b	7
+EJ81c	7
+EJ82	0
+EJ84	7
+EJ85	0
+EJ86	5
+EJ87	0
+EJ88	7
+EJ89	7
+EJ90	0
+EJ91	7
+EJ92	7
+EJ93	3
+EJ94	0
+EJ95	7
+EJ96	7
+EJ97	5
+EJ98	0
+EJ99	0
+EJ100	0
+EJ101	0
+S1	3
+S2	3
+S3	7
+S4	0
+S5	6
+S6	7
+S6b	0
+S6c	0
+S7	7
+S8	0
+S9	0
+S10	7
+S10b	0
+S10c	7
+S10d	0
+S11	0
+S12	7
+S13	0
+S14b	2
+HH1	1
+HH2	1
+HH3	0
+HH4	0
+HH5	3
+HH6	7
+HH7	5
+HH8	0
+HH9	6
+HH10	1
+HH11	6
+HH12	1
+HH13	6
+HH14	7
+HH15	3
+HH16	7
+HH17	7
+Reinforce1	0
+Reinforce2	0
+Reinforce3	0
+Reinforce4	4
+Reinforce5	4
+Reinforce102	0
+LE1	3
+LE2	7
+LE3	5
+LE5	0
+LE6	5
+LE8	0
+LE9	0
+LE10	0
+LE12	7
+LE13	7
+LE15	1
+LE16	2
+RE1	5
+RE2	7
+RE3	0
+RE5	1
+RE6	7
+RE7	3
+RE8	7
+RE9	0
+RE10	0
+RE12	0
+RE13	0
+RE14	4
+Th1	0
+Th2	0
+Th3	7
+Th4	0
+Th5	6
+Th6	6
+Th7	6
+Th8	0
+Th9	6
+Th10	1
+Th11	1
+Th12	1
+Th13	0
+Th14	1
+Th15	7
+Th16	0
+Th17	7
+Th18	7
+Th19	6
+Th20	3
+Th21	6
+Th22	7
+Th23	0
+Th24	0
+M1	0
+M2	0
+M3	7
+M4	0
+M5	6
+M6	6
+M7	6
+M8	6
+Conn101	1
+Conn102	1
+Conn103	6
+Conn104	6
+Conn105	0
+Conn106	6
+Conn201	1
+Conn202	5
+Conn203	1
+Conn204	7
+Conn205	7
+Conn206	6
+Conn207	1
+Conn301	6
+Conn302	6
+Conn303	2
+Conn304	2
+Conn305	2
+Conn306	4
+Conn307	7
+Conn308	6
+Conn309	6
+Conn310	1
+Conn311	2
+Conn312	5
+Conn313	1
+Conn314	6
+Conn315	5
+Conn401	4
+Conn402	4
+Conn403	6
+Conn501	1
+Conn502	6
+Conn503	6
+Conn504	6
+Conn505	6
+Conn506	0
+Conn507	6
+Conn508	5
+Conn509	6
+Conn509b	6
+Conn510	1
+Conn601	1
+Conn602	6
+Conn603	1
+Conn603b	1
+Conn604	6
+Conn605	6
+Conn606	6
+Conn607	1
+Conn608	1
+Conn609	7
+Conn610	0
+Conn611	7
+Conn701	6
+Conn702	3
+Conn703	4
+Conn704	6
+Conn705	6
+Conn706	0
+Conn707	0
+Conn708	1
+Conn801	7
+Cut101	0
+Cut201	0
+Cut302	5
+Cut303	5
+Cut304	1
+Cut501	7
+Cut601	0
+AS1	0
+AS2	0
+AS3	7
+AS4	6
+AS5	7
+AS6	6
+AS7	0
+Shape1	6
+Shape2	1
+Shape3	0
+Shape4	6
+Shape5	6
+Shape6	3
+Shape6b	3
+Shape7	3
+Shape8a	3
+Shape8b	3
+Shape8c	3
+Shape8d	7
+Shape9a	0
+Shape9b	0
+Shape9c	0
+Shape10	1
+Shape11	6
+Shape12	6
+Shape12b	7
+Shape13	0
+Shape14	1
+Shape15	1
+Shape16	5
+Shape17	4
+Shape18	6
+Shape18b	6
+Shape18c	7
+Shape19	6
+Shape20	1
+Shape21	6
+Shape22	4
+Shape23	7
+Shape24	7
+Shape25	7
+Shape26	1
+Shape27	7
+Shape28	3
+Shape29	2
+Shape30	0
+Shape31	0
+Shape32	1
+Shape33	6
+Shape34	7
+Shape35	2
+Shape36	2
+Shape37	2
+Shape38	0
+Shape39	3
+Shape40	3
+Shape41	3
+Shape42	6
+Shape43	0
+Shape44	6
+Shape45	1
+Shape46	0
+Shape47	1
+Shape48	0
+Shape49	7
+Shape50	0
+Shape51	0
+Shape53	0
+Shape54	0
+Shape55	1
+Shape56	7
+Shape57	1
+Shape58	3
+Shape59	0
+Shape60	7
+Shape60b	7
+Shape60c	0
+Shape61	5
+Shape62	7
+Shape63	7
+Shape64	0
+Shape65	0
+Shape66	1
+Shape67	3
+Shape68	7
+Shape69	7
+Shape70	7
+Shape71	7
+Shape72	7
+Shape73	1
+Shape73b	1
+Shape74	4
+Shape75	0
+Shape76	5
+Shape77	0
+Shape78	0
+Shape79	6
+Shape80	4
+Shape81	6
+Shape82	4
+Shape83	1
+Shape84	5
+Shape85	5
+Shape86	0
+Shape87	1
+Shape88	0
+Sente1	4
+Sente1b	4
+Sente1c	4
+Sente1d	1
+Sente2	1
+Sente3	0
+Sente4	0
+Sente5	1
+Sente6	6
+Sente7	0
+Sente8	0
+Sente9	1
+Sente10	0
+Sente11	6
+Sente13	3
+Sente13b	3
+Sente13c	6
+Sente13d	7
+Sente13e	2
+Sente14	5
+Sente15	5
+Sente16	0
+Sente17	0
+Sente18	0
+Sente19	5
+Sente20	5
+Sente21	5
+Sente22	0
+Sente23	6
+Sente24	0
+DD1	1
+DD2	2
+DD2b	2
+DD3	1
+DD4	1
+DD5	1
+DD6	1
+DD7	0
+DD8	2
+DD8b	4
+DD9	2
+DD10	0
+DD11	1
+DD12	6
+DD13	1
+Temp1	0
+Temp5	0
+Temp6	6
+Temp7a	7
+Temp7b	7
+Temp8	3
+Temp9	0

