DEFAULT type support

diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c
index f40f7a3..2d0c307 100644
--- a/libasn1parser/asn1p_l.c
+++ b/libasn1parser/asn1p_l.c
@@ -312,154 +312,152 @@
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 132
-#define YY_END_OF_BUFFER 133
-static yyconst short int yy_acclist[1291] =
+#define YY_NUM_RULES 131
+#define YY_END_OF_BUFFER 132
+static yyconst short int yy_acclist[1266] =
     {   0,
-      133,  131,  132,  125,  131,  132,  125,  132,  124,  131,
-      132,   15,  131,  132,  124,  131,  132,  131,  132,  124,
-      131,  132,  131,  132,  124,  131,  132,  131,  132,   29,
-      131,  132,   28,  131,  132,  124,  131,  132,  131,  132,
-      119,  120,  131,  132,  119,  120,  131,  132,  119,  120,
-      131,  132,  119,  120,  131,  132,  119,  120,  131,  132,
-      119,  120,  131,  132,  119,  120,  131,  132,  119,  120,
-      131,  132,  119,  120,  131,  132,  119,  120,  131,  132,
-      119,  120,  131,  132,  119,  120,  131,  132,  119,  120,
-      131,  132,  119,  120,  131,  132,  119,  120,  131,  132,
+      132,  130,  131,  124,  130,  131,  124,  131,  123,  130,
+      131,   15,  130,  131,  123,  130,  131,  130,  131,  123,
+      130,  131,  130,  131,  123,  130,  131,  130,  131,   29,
+      130,  131,   28,  130,  131,  123,  130,  131,  130,  131,
+      118,  119,  130,  131,  118,  119,  130,  131,  118,  119,
+      130,  131,  118,  119,  130,  131,  118,  119,  130,  131,
+      118,  119,  130,  131,  118,  119,  130,  131,  118,  119,
+      130,  131,  118,  119,  130,  131,  118,  119,  130,  131,
+      118,  119,  130,  131,  118,  119,  130,  131,  118,  119,
+      130,  131,  118,  119,  130,  131,  118,  119,  130,  131,
 
-      119,  120,  131,  132,  119,  120,  131,  132,  119,  120,
-      131,  132,  119,  120,  131,  132,  124,  131,  132,  130,
-      131,  132,  118,  131,  132,  124,  130,  131,  132,    5,
-      131,  132,    2,  132,    2,  131,  132,    4,  131,  132,
-        7,    9,  131,  132,    7,  132,    9,  131,  132,    9,
-      131,  132,   17,  131,  132,   17,  132,   18,  131,  132,
-       12,  131,  132,   12,  132,   14,  131,  132,   14,  131,
-      132,   10,  131,  132,   11,  131,  132,   21,   23,  131,
-      132,   23,  131,  132,   24,  132,   21,   22,   23,  131,
-      132,   21,   22,   23,  131,  132,  127,  131,  132,  128,
+      118,  119,  130,  131,  118,  119,  130,  131,  118,  119,
+      130,  131,  118,  119,  130,  131,  123,  130,  131,  129,
+      130,  131,  117,  130,  131,  123,  129,  130,  131,    5,
+      130,  131,    2,  131,    2,  130,  131,    4,  130,  131,
+        7,    9,  130,  131,    7,  131,    9,  130,  131,    9,
+      130,  131,   17,  130,  131,   17,  131,   18,  130,  131,
+       12,  130,  131,   12,  131,   14,  130,  131,   14,  130,
+      131,   10,  130,  131,   11,  130,  131,   21,   23,  130,
+      131,   23,  130,  131,   24,  131,   21,   22,   23,  130,
+      131,   21,   22,   23,  130,  131,  126,  130,  131,  127,
 
-      131,  132,  128,  132,  131,  132,  129,  131,  132,  125,
-       15,   15,  116,  117,    1,   27,  123,    6,   28,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-       42,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  120,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  120,
-      119,  120,  119,  120,   87,  119,  120,  119,  120,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  120,  119,
+      130,  131,  127,  131,  130,  131,  128,  130,  131,  124,
+       15,   15,  115,  116,    1,   27,  122,    6,   28,  118,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,  119,  118,  119,  118,  119,  118,  119,  118,  119,
+       41,  118,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,  119,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  119,
+      118,  119,  118,  119,   86,  118,  119,  118,  119,  119,
+      118,  119,  118,  119,  118,  119,  118,  119,  119,  118,
 
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  120,  119,  120,
-      119,  120,  120,  120,  119,  120,  118,    5,    3,    8,
-       17,   16,   12,   21,   21,   22,   21,   22,  127,  128,
-      126,  116,  117,   27,  122,  121,  119,  120,   34,  119,
-      120,   35,  119,  120,  119,  120,  119,  120,  119,  120,
-       39,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,   56,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  120,  120,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,  118,  119,  118,  119,  119,  118,  119,
+      118,  119,  119,  119,  118,  119,  117,    5,    3,    8,
+       17,   16,   12,   21,   21,   22,   21,   22,  126,  127,
+      125,  115,  116,   27,  121,  120,  118,  119,   33,  118,
+      119,   34,  118,  119,  118,  119,  118,  119,  118,  119,
+       38,  118,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,   55,  118,  119,  118,  119,  118,  119,
+      118,  119,  118,  119,  118,  119,  118,  119,  119,  119,
 
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,   79,  119,  120,   80,  119,  120,
-      119,  120,  120,  119,  120,  119,  120,  119,  120,  120,
-      119,  120,   90,  119,  120,  119,  120,  119,  120,  119,
-      120,  120,  119,  120,  119,  120,  119,  120,   98,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  120,  119,  120,  119,  120,
-      119,  120,  120,  120,  120,  119,  120,   30,   13,   21,
-       22,   20,   21,   22,   26,   25,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
+      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
+      118,  119,  118,  119,   78,  118,  119,   79,  118,  119,
+      118,  119,  119,  118,  119,  118,  119,  118,  119,  119,
+      118,  119,   89,  118,  119,  118,  119,  118,  119,  118,
+      119,  119,  118,  119,  118,  119,  118,  119,   97,  118,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,  118,  119,  119,  118,  119,  118,  119,
+      118,  119,  119,  119,  119,  118,  119,   30,   13,   21,
+       22,   20,   21,   22,   26,   25,  118,  119,  118,  119,
+      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
 
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,   64,  119,  120,  120,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,   82,  119,  120,  120,  119,
-      120,  119,  120,  119,  120,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  120,   95,  119,  120,  119,  120,
-      119,  120,   99,  119,  120,  119,  120,  119,  120,  119,
-      120,  103,  119,  120,  105,  119,  120,  119,  120,  120,
+      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
+      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
+      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
+       63,  118,  119,  119,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,   81,  118,  119,  119,  118,  119,  118,
+      119,  118,  119,  119,  118,  119,  118,  119,  118,  119,
+      118,  119,  119,   94,  118,  119,  118,  119,  118,  119,
+       98,  118,  119,  118,  119,  118,  119,  118,  119,  102,
+      118,  119,  104,  118,  119,  118,  119,  119,  118,  119,
 
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      120,  120,  120,  115,  119,  120,   21,   22,  119,  120,
-      119,  120,  119,  120,  119,  120,   38,  119,  120,  120,
-      119,  120,  119,  120,  119,  120,   45,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,   63,  119,  120,  120,  120,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  120,  119,  120,   86,  119,  120,  119,  120,  120,
+      118,  119,  118,  119,  118,  119,  118,  119,  119,  119,
+      119,  114,  118,  119,   21,   22,  118,  119,  118,  119,
+      118,  119,   37,  118,  119,  119,  118,  119,  118,  119,
+      118,  119,   44,  118,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,   62,  118,  119,  119,  119,  119,  118,  119,  118,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,  118,  119,  118,  119,  119,  118,  119,
+       85,  118,  119,  118,  119,  119,  118,  119,  118,  119,
 
-      119,  120,  119,  120,  119,  120,  119,  120,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  120,  119,  120,
-      120,  107,  119,  120,  119,  120,  119,  120,  120,  119,
-      120,  120,  120,  120,   31,   21,   22,   32,  119,  120,
-      119,  120,  119,  120,  119,  120,  120,  119,  120,  119,
-      120,   44,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,   58,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  120,  120,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
+      118,  119,  118,  119,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,  119,  118,  119,  119,  106,  118,  119,
+      118,  119,  118,  119,  119,  118,  119,  119,  119,  119,
+       31,   21,   22,   32,  118,  119,  118,  119,  118,  119,
+      119,  118,  119,  118,  119,   43,  118,  119,  118,  119,
+      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
+      118,  119,  118,  119,  118,  119,  118,  119,   57,  118,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  119,
+      119,  119,  118,  119,  118,  119,  118,  119,  118,  119,
+      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
 
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      120,   84,  119,  120,  119,  120,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  120,  119,  120,  119,  120,
-      100,  119,  120,  101,  119,  120,  120,  119,  120,  120,
-      108,  119,  120,  119,  120,  120,  120,  120,  120,  120,
-       21,   22,  119,  120,  119,  120,  119,  120,  120,   41,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-       50,  119,  120,   51,  119,  120,  119,  120,  119,  120,
-       54,  119,  120,  119,  120,  119,  120,  119,  120,   60,
-      119,  120,  119,  120,  119,  120,  120,  120,  120,  119,
+      118,  119,  118,  119,  119,   83,  118,  119,  118,  119,
+      119,  118,  119,  118,  119,  118,  119,  118,  119,  119,
+      118,  119,  118,  119,   99,  118,  119,  100,  118,  119,
+      119,  118,  119,  119,  107,  118,  119,  118,  119,  119,
+      119,  119,  119,  119,   21,   22,  118,  119,  118,  119,
+      119,   40,  118,  119,  118,  119,  118,  119,  118,  119,
+      118,  119,   49,  118,  119,   50,  118,  119,  118,  119,
+      118,  119,   53,  118,  119,  118,  119,  118,  119,  118,
+      119,   59,  118,  119,  118,  119,  118,  119,  119,  119,
+      119,  118,  119,  118,  119,   70,  118,  119,   71,  118,
 
-      120,  119,  120,   71,  119,  120,   72,  119,  120,  119,
-      120,  119,  120,  119,  120,   76,  119,  120,  119,  120,
-      119,  120,  119,  120,  120,  119,  120,  120,   89,  119,
-      120,  119,  120,   92,  119,  120,   94,  119,  120,  120,
-      119,  120,  119,  120,  120,  119,  120,  120,  119,  120,
-      111,  120,  120,  120,  120,  120,   21,   22,  119,  120,
-      119,  120,  119,  120,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,   53,  119,  120,  119,  120,
-      119,  120,   59,  119,  120,  119,  120,   62,  119,  120,
-      120,  120,  120,  120,  119,  120,   70,  119,  120,   73,
+      119,  118,  119,  118,  119,  118,  119,   75,  118,  119,
+      118,  119,  118,  119,  118,  119,  119,  118,  119,  119,
+       88,  118,  119,  118,  119,   91,  118,  119,   93,  118,
+      119,  119,  118,  119,  118,  119,  119,  118,  119,  119,
+      118,  119,  110,  119,  119,  119,  119,  119,   21,   22,
+      118,  119,  118,  119,  119,  118,  119,  118,  119,  118,
+      119,  118,  119,  118,  119,   52,  118,  119,  118,  119,
+      118,  119,   58,  118,  119,  118,  119,   61,  118,  119,
+      119,  119,  119,  119,  118,  119,   69,  118,  119,   72,
+      118,  119,   73,  118,  119,  118,  119,  118,  119,  119,
 
-      119,  120,   74,  119,  120,  119,  120,  119,  120,  120,
-      119,  120,  120,   88,  119,  120,  120,  119,  120,  120,
-      119,  120,   97,  119,  120,  120,  119,  120,  120,  119,
-      120,  120,  120,  120,  120,   21,   22,  119,  120,  119,
-      120,   37,  119,  120,   40,  120,   43,  119,  120,   46,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  120,  120,  120,   68,  120,  119,
-      120,  119,  120,  119,  120,  120,  119,  120,  120,  120,
-      119,  120,  120,  119,  120,  102,  120,  119,  120,  120,
-      109,  119,  120,  120,  120,  120,  120,   21,  119,  120,
+      118,  119,  119,   87,  118,  119,  119,  118,  119,  119,
+      118,  119,   96,  118,  119,  119,  118,  119,  119,  118,
+      119,  119,  119,  119,  119,   21,   22,  118,  119,   36,
+      118,  119,   39,  119,   42,  118,  119,   45,  118,  119,
+      118,  119,  118,  119,  118,  119,  118,  119,  118,  119,
+      118,  119,  119,  119,  119,   67,  119,  118,  119,  118,
+      119,  118,  119,  119,  118,  119,  119,  119,  118,  119,
+      119,  118,  119,  101,  119,  118,  119,  119,  108,  118,
+      119,  119,  119,  119,  119,   21,  118,  119,   46,  118,
+      119,   47,  118,  119,   48,  118,  119,  118,  119,  118,
 
-      119,  120,   47,  119,  120,   48,  119,  120,   49,  119,
-      120,  119,  120,  119,  120,   57,  119,  120,  119,  120,
-      120,  120,  120,   69,  119,  120,  119,  120,  119,  120,
-      120,  119,  120,  120,  120,  119,  120,  120,  119,  120,
-      119,  120,  120,  112,  120,  120,  120,  120,   21,  119,
-      120,   36,  119,  120,   52,  119,  120,  119,  120,  119,
-      120,  120,  120,  120,  119,  120,  119,  120,  120,  119,
-      120,  120,  120,  119,  120,  120,  119,  120,  119,  120,
-      120,  120,  120,  120,   30,   31,   21,  119,  120,  119,
-      120,  119,  120,  120,  120,  120,   75,  119,  120,   77,
+      119,   56,  118,  119,  118,  119,  119,  119,  119,   68,
+      118,  119,  118,  119,  118,  119,  119,  118,  119,  119,
+      119,  118,  119,  119,  118,  119,  118,  119,  119,  111,
+      119,  119,  119,  119,   21,   35,  118,  119,   51,  118,
+      119,  118,  119,  118,  119,  119,  119,  119,  118,  119,
+      118,  119,  119,  118,  119,  119,  119,  118,  119,  119,
+      118,  119,  118,  119,  119,  119,  119,  119,   30,   31,
+       21,  118,  119,  118,  119,  119,  119,  119,   74,  118,
+      119,   76,  118,  119,   77,  119,  118,  119,  119,  119,
+      118,  119,  119,   95,  118,  119,  118,  119,  119,  119,
 
-      119,  120,   78,  120,  119,  120,  120,  120,  119,  120,
-      120,   96,  119,  120,  119,  120,  120,  120,  120,  120,
-       21,  119,  120,  119,  120,   61,  119,  120,   66,  120,
-      120,   67,  120,  119,  120,   83,  120,  120,   91,  119,
-      120,  120,  119,  120,  104,  120,  120,  120,  114,  120,
-       21,  119,  120,  119,  120,  120,   81,  119,  120,  120,
-      120,  119,  120,  120,  113,  120,   21,   33,  119,  120,
-      119,  120,   65,  120,  120,   93,  120,  106,  119,  120,
-      110,  120,   21,   55,  119,  120,   85,  120,   19,   21
+      119,  119,   21,  118,  119,   60,  118,  119,   65,  119,
+      119,   66,  119,  118,  119,   82,  119,  119,   90,  118,
+      119,  119,  118,  119,  103,  119,  119,  119,  113,  119,
+       21,  118,  119,  119,   80,  118,  119,  119,  119,  118,
+      119,  119,  112,  119,   21,  118,  119,   64,  119,  119,
+       92,  119,  105,  118,  119,  109,  119,   21,   54,  118,
+      119,   84,  119,   19,   21
     } ;
 
-static yyconst short int yy_accept[722] =
+static yyconst short int yy_accept[710] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    2,    4,    7,    9,   12,
@@ -491,56 +489,54 @@
       479,  479,  480,  482,  485,  485,  486,  487,  489,  491,
       493,  495,  497,  499,  501,  503,  505,  507,  509,  511,
       513,  515,  517,  519,  521,  523,  525,  527,  529,  531,
-      533,  536,  537,  538,  540,  542,  544,  546,  548,  550,
-      552,  554,  556,  559,  560,  562,  564,  566,  567,  569,
+      534,  535,  536,  538,  540,  542,  544,  546,  548,  550,
+      552,  554,  557,  558,  560,  562,  564,  565,  567,  569,
 
-      571,  573,  575,  576,  579,  581,  583,  586,  588,  590,
-      592,  595,  598,  600,  601,  603,  605,  607,  609,  611,
-      612,  613,  614,  617,  617,  617,  617,  617,  619,  621,
-      623,  625,  627,  630,  631,  633,  635,  637,  640,  642,
+      571,  573,  574,  577,  579,  581,  584,  586,  588,  590,
+      593,  596,  598,  599,  601,  603,  605,  607,  609,  610,
+      611,  612,  615,  615,  615,  615,  615,  617,  619,  621,
+      623,  626,  627,  629,  631,  633,  636,  638,  640,  642,
       644,  646,  648,  650,  652,  654,  656,  658,  660,  662,
-      664,  666,  669,  670,  671,  672,  674,  676,  678,  680,
-      682,  684,  686,  688,  690,  692,  693,  695,  698,  700,
-      701,  703,  705,  707,  709,  710,  712,  714,  716,  718,
-      719,  721,  722,  725,  727,  729,  730,  732,  733,  734,
-      735,  736,  736,  736,  736,  738,  741,  743,  745,  747,
+      665,  666,  667,  668,  670,  672,  674,  676,  678,  680,
+      682,  684,  686,  688,  689,  691,  694,  696,  697,  699,
+      701,  703,  705,  706,  708,  710,  712,  714,  715,  717,
+      718,  721,  723,  725,  726,  728,  729,  730,  731,  732,
+      732,  732,  732,  734,  737,  739,  741,  742,  744,  746,
 
-      748,  750,  752,  755,  757,  759,  761,  763,  765,  767,
-      769,  771,  773,  775,  778,  780,  782,  784,  786,  787,
-      788,  789,  791,  793,  795,  797,  799,  801,  803,  805,
-      807,  809,  811,  812,  815,  817,  818,  820,  822,  824,
-      826,  827,  829,  831,  834,  837,  838,  840,  841,  844,
-      846,  847,  848,  849,  850,  851,  851,  851,  851,  853,
-      855,  857,  859,  860,  863,  865,  867,  869,  871,  874,
-      877,  879,  881,  884,  886,  888,  890,  893,  895,  897,
-      898,  899,  900,  902,  904,  907,  910,  912,  914,  916,
-      919,  921,  923,  925,  926,  928,  929,  932,  934,  937,
+      749,  751,  753,  755,  757,  759,  761,  763,  765,  767,
+      769,  772,  774,  776,  778,  780,  781,  782,  783,  785,
+      787,  789,  791,  793,  795,  797,  799,  801,  803,  805,
+      806,  809,  811,  812,  814,  816,  818,  820,  821,  823,
+      825,  828,  831,  832,  834,  835,  838,  840,  841,  842,
+      843,  844,  845,  845,  845,  845,  847,  849,  851,  852,
+      855,  857,  859,  861,  863,  866,  869,  871,  873,  876,
+      878,  880,  882,  885,  887,  889,  890,  891,  892,  894,
+      896,  899,  902,  904,  906,  908,  911,  913,  915,  917,
+      918,  920,  921,  924,  926,  929,  932,  933,  935,  937,
 
-      940,  941,  943,  945,  946,  948,  949,  951,  953,  954,
-      955,  956,  957,  957,  957,  957,  959,  961,  963,  965,
-      966,  968,  970,  972,  974,  976,  979,  981,  983,  986,
-      988,  991,  992,  993,  994,  995,  997, 1000, 1003, 1006,
-     1008, 1010, 1011, 1013, 1014, 1017, 1018, 1020, 1021, 1023,
-     1026, 1027, 1029, 1030, 1032, 1033, 1034, 1035, 1036, 1036,
-     1036, 1036, 1038, 1040, 1042, 1045, 1047, 1050, 1053, 1055,
-     1057, 1059, 1061, 1063, 1065, 1066, 1067, 1068, 1070, 1072,
-     1074, 1076, 1077, 1079, 1080, 1081, 1083, 1084, 1086, 1088,
-     1090, 1091, 1094, 1095, 1096, 1097, 1098, 1098, 1098, 1098,
+      938,  940,  941,  943,  945,  946,  947,  948,  949,  949,
+      949,  949,  951,  953,  955,  956,  958,  960,  962,  964,
+      966,  969,  971,  973,  976,  978,  981,  982,  983,  984,
+      985,  987,  990,  993,  996,  998, 1000, 1001, 1003, 1004,
+     1007, 1008, 1010, 1011, 1013, 1016, 1017, 1019, 1020, 1022,
+     1023, 1024, 1025, 1026, 1026, 1026, 1026, 1028, 1030, 1033,
+     1035, 1038, 1041, 1043, 1045, 1047, 1049, 1051, 1053, 1054,
+     1055, 1056, 1058, 1060, 1062, 1064, 1065, 1067, 1068, 1069,
+     1071, 1072, 1074, 1076, 1078, 1079, 1082, 1083, 1084, 1085,
+     1086, 1086, 1086, 1086, 1087, 1089, 1092, 1095, 1098, 1100,
 
-     1099, 1101, 1103, 1106, 1109, 1112, 1114, 1116, 1119, 1121,
-     1122, 1123, 1124, 1127, 1129, 1131, 1132, 1134, 1135, 1136,
-     1138, 1139, 1141, 1143, 1144, 1146, 1147, 1148, 1149, 1149,
-     1149, 1149, 1150, 1152, 1155, 1158, 1160, 1162, 1163, 1164,
-     1165, 1167, 1169, 1170, 1172, 1173, 1174, 1176, 1177, 1179,
-     1181, 1182, 1183, 1184, 1185, 1185, 1187, 1187, 1188, 1190,
-     1192, 1194, 1195, 1196, 1197, 1200, 1203, 1205, 1207, 1208,
-     1209, 1211, 1212, 1215, 1217, 1218, 1219, 1220, 1221, 1221,
-     1222, 1224, 1226, 1229, 1231, 1232, 1234, 1236, 1238, 1239,
-     1242, 1243, 1245, 1247, 1248, 1249, 1251, 1251, 1252, 1254,
+     1102, 1105, 1107, 1108, 1109, 1110, 1113, 1115, 1117, 1118,
+     1120, 1121, 1122, 1124, 1125, 1127, 1129, 1130, 1132, 1133,
+     1134, 1135, 1135, 1135, 1135, 1136, 1139, 1142, 1144, 1146,
+     1147, 1148, 1149, 1151, 1153, 1154, 1156, 1157, 1158, 1160,
+     1161, 1163, 1165, 1166, 1167, 1168, 1169, 1169, 1171, 1171,
+     1172, 1174, 1176, 1177, 1178, 1179, 1182, 1185, 1187, 1189,
+     1190, 1191, 1193, 1194, 1197, 1199, 1200, 1201, 1202, 1203,
+     1203, 1204, 1206, 1209, 1211, 1212, 1214, 1216, 1218, 1219,
+     1222, 1223, 1225, 1227, 1228, 1229, 1231, 1231, 1232, 1234,
+     1235, 1238, 1239, 1240, 1242, 1243, 1245, 1246, 1248, 1250,
 
-     1256, 1257, 1260, 1261, 1262, 1264, 1265, 1267, 1268, 1271,
-     1273, 1275, 1276, 1278, 1281, 1283, 1284, 1287, 1289, 1291,
-     1291
+     1251, 1253, 1256, 1258, 1259, 1262, 1264, 1266, 1266
     } ;
 
 static yyconst int yy_ec[256] =
@@ -587,18 +583,18 @@
        11,   11,   11,   11,   11,   12,    1,   12
     } ;
 
-static yyconst short int yy_base[740] =
+static yyconst short int yy_base[728] =
     {   0,
         0,    0,   76,   78,   80,   81,   82,   89,   83,   93,
       171,  249,  109,  120,  961,  952,   95,   98,  951,  948,
-      320,  117, 4484,  118,  933,  100, 4484,  125,  923, 4484,
+      320,  117, 4405,  118,  933,  100, 4405,  125,  923, 4405,
       385,  176,  194,  120,  239,  267,  435,  163,  293,  441,
       191,  259,  463,  471,  484,  500,  508,  270,  521,  553,
-      935,    0,  933,    0, 4484, 4484,  926, 4484, 4484,  922,
-      922,    0,    0,  924,    0,    0,  902, 4484, 4484, 4484,
-        0, 4484, 4484,  598,  675,    0,  148,  151,  182, 4484,
+      935,    0,  933,    0, 4405, 4405,  926, 4405, 4405,  922,
+      922,    0,    0,  924,    0,    0,  902, 4405, 4405, 4405,
+        0, 4405, 4405,  598,  675,    0,  148,  151,  182, 4405,
       915,  160,    0,  913,  912,    0,  135,    0,  573,  908,
-     4484,  226,  902, 4484,  598,  886,  556,  597,  598,  618,
+     4405,  226,  902, 4405,  598,  886,  556,  597,  598,  618,
 
       619,  634,    0,  664,  667,  680,  693,  704,  720,  728,
       741,  744,  757,  772,  778,  775,  793,  842,  852,  808,
@@ -606,158 +602,156 @@
       902,  910,  840,  913,  926,  937,  950,  835,  966,  972,
       983,  989, 1000, 1015, 1016, 1031, 1032,  831, 1047, 1048,
       831,   48, 1063, 1095, 1102,  851,   88,  128,    0,    0,
-     4484, 4484,    0, 4484,    0,  865,    0,  849,  253,    0,
-      264, 4484,  875,    0,    0,   83,  848,  611, 4484, 4484,
-     1099, 1100, 1115, 1123, 1126, 1141, 1144, 1147, 1162, 1168,
-     1179, 1185, 1196, 1207, 1223, 1229, 1240, 1246, 1257, 1263,
+     4405, 4405,    0, 4405,    0,  865,    0,  849,  253,    0,
+      264, 4405,  875,    0,    0,   83,  848,  611, 4405, 4405,
+     1098, 1099, 1114, 1115, 1130, 1138, 1141, 1154, 1162, 1170,
+     1178, 1191, 1199, 1202, 1223, 1224, 1239, 1245, 1256, 1262,
 
-     1274, 1280, 1291, 1302,  818,  807, 1315, 1323, 1326, 1341,
-     1344, 1347, 1371, 1365, 1368, 1386,  815, 1389, 1404, 1410,
-      811, 1421, 1432, 1438, 1449, 1460,  802, 1471, 1477, 1488,
-     1494, 1509, 1510, 1525, 1536, 1542, 1557, 1563,  809, 1574,
-     1585, 1596,  793,  807,  801, 1607, 4484, 1646,  822,  178,
-      250, 4484,  109,  820,  802, 4484, 4484, 1631, 1632, 1647,
-     1653, 1668, 1669, 1686, 1685, 1701, 1707, 1718, 1729, 1747,
-     1744, 1750, 1765, 1768, 1771, 1786, 1792, 1803, 1814, 1829,
-     1835,  783,  789, 1846, 1852, 1867, 1868, 1883, 1889, 1904,
-     1907, 1915, 1928,  774, 1936, 1939, 1952,  786, 1960, 1976,
+     1273, 1279, 1290, 1301,  818,  807, 1314, 1322, 1325, 1340,
+     1343, 1346, 1370, 1364, 1367, 1385,  815, 1388, 1403, 1409,
+      811, 1420, 1431, 1437, 1448, 1459,  802, 1470, 1476, 1487,
+     1493, 1508, 1509, 1524, 1535, 1541, 1556, 1562,  809, 1573,
+     1584, 1595,  793,  807,  801, 1606, 4405, 1645,  822,  178,
+      250, 4405,  109,  820,  802, 4405, 4405, 1630, 1641, 1647,
+     1662, 1663, 1680, 1679, 1695, 1701, 1712, 1723, 1741, 1738,
+     1744, 1759, 1762, 1765, 1780, 1786, 1797, 1808, 1823, 1829,
+      783,  789, 1840, 1846, 1861, 1862, 1877, 1883, 1898, 1901,
+     1909, 1922,  774, 1930, 1933, 1946,  786, 1954, 1970, 1969,
 
-     1975, 1992,  770, 1993, 2008, 2021, 2029, 2032, 2050, 2047,
-     2053, 2068, 2071,  768, 2074, 2089, 2095, 2106, 2112,  778,
-      768,  775, 2127, 2159,  170,  151,  242,  200, 2144, 2160,
-     2168, 2176, 2184,  759, 2192, 2200, 2213, 2221, 2224, 2242,
-     2239, 2245, 2260, 2266, 2281, 2282, 2297, 2312, 2318, 2329,
-     2335, 2350,  773,  763,  755, 2351, 2371, 2368, 2389, 2388,
-     2404, 2410, 2421, 2432, 2443,  759, 2449, 2460, 2466,  738,
-     2477, 2488, 2494, 2505,  753, 2518, 2521, 2529, 2542,  737,
-     2553,  745, 2559, 2574, 2575,  731, 2590,  725,  721,  727,
-     4484,  280,  297,  294,  231, 2596, 2611, 2614, 2622,  728,
+     1986,  770, 1987, 2002, 2015, 2023, 2026, 2044, 2041, 2047,
+     2062, 2065,  768, 2068, 2083, 2089, 2100, 2106,  778,  768,
+      775, 2121, 2153,  170,  151,  242,  200, 2138, 2153, 2159,
+     2170,  759, 2176, 2191, 2194, 2202, 2215, 2218, 2226, 2239,
+     2247, 2260, 2268, 2276, 2284, 2299, 2305, 2316, 2322, 2337,
+      773,  763,  755, 2338, 2358, 2355, 2376, 2375, 2391, 2397,
+     2408, 2419, 2430,  759, 2436, 2447, 2453,  738, 2464, 2475,
+     2481, 2492,  753, 2505, 2508, 2516, 2529,  737, 2540,  745,
+     2546, 2561, 2562,  731, 2577,  725,  721,  727, 4405,  280,
+      297,  294,  231, 2583, 2599, 2605,  728, 2616, 2627, 2638,
 
-     2637, 2643, 2654, 2660, 2671, 2677, 2688, 2699, 2705, 2722,
-     2728, 2739, 2745, 2756, 2762, 2773, 2779, 2795,  724,  731,
-      723, 2796, 2811, 2817, 2828, 2834, 2849, 2855, 2866, 2881,
-     2887, 2898,  720, 2909, 2915,  747, 2926, 2932, 2943, 2956,
-      716, 2964, 2979, 2982, 2985,  707, 3000,  689, 3003, 3006,
-      704,  692,  687,  697,  693,  271,  295,  301,  712, 3021,
-     3024, 3037,  682, 3045, 3058, 3066, 3069, 3082, 3090, 3093,
-     3106, 3117, 3114, 3130, 3138, 3141, 3154, 3162, 3165,  124,
-      704,  677, 3178, 3186, 3189, 3202, 3210, 3223, 3231, 3234,
-     3251, 3254, 3257,  698, 3272,  681, 3275, 3288, 3296, 3304,
+     2644, 2655, 2661, 2672, 2683, 2689, 2706, 2712, 2723, 2729,
+     2740, 2746, 2757, 2763, 2779,  724,  731,  723, 2780, 2795,
+     2801, 2812, 2818, 2833, 2839, 2850, 2865, 2871, 2882,  720,
+     2893, 2899,  747, 2910, 2916, 2927, 2940,  716, 2948, 2963,
+     2966, 2969,  707, 2984,  689, 2987, 2990,  704,  692,  687,
+      697,  693,  271,  295,  301,  712, 3005, 3018,  682, 3021,
+     3036, 3042, 3053, 3059, 3070, 3076, 3087, 3098, 3104, 3115,
+     3121, 3132, 3143, 3149, 3160,  124,  704,  677, 3166, 3177,
+     3188, 3194, 3205, 3211, 3226, 3227, 3242, 3248, 3259,  698,
+     3265,  681, 3276, 3287, 3298, 3304,  673, 3319, 3325,  658,
 
-      673, 3317, 3325,  658, 3338,  680, 3346,    0,  660,  667,
-      643,  672,  438,  368,  366,  286, 3349, 3362, 3370,  654,
-     3378, 3386, 3399, 3407, 3410, 3425, 3431, 3446, 3428, 3452,
-     3463,  639,  633,  630,  634, 3469, 3480, 3486, 3497, 3503,
-     3514,  623, 3525,  620, 3531,  619, 3542,  619, 3553, 3559,
-      613, 3570,  600, 3576,  603,  604,  623,  594,  300,  466,
-      447,  360, 3587, 3598, 3609,    0, 3615, 3626, 3637, 3648,
-     3654, 3669, 3672, 3675,  593,  603,  584,    0, 3690, 3698,
-     3713,  590, 3714,  579,  591, 3729,  603, 3737,    0, 3745,
-      572, 3758,  579,  589,  531,  528,  443, 3797,  454,  568,
+     3340,  680, 3346,    0,  660,  667,  643,  672,  438,  368,
+      366,  286, 3357, 3372,  654, 3378, 3389, 3402, 3410, 3413,
+     3428, 3434, 3449, 3431, 3455, 3466,  639,  633,  630,  634,
+     3472, 3483, 3489, 3500, 3506, 3517,  623, 3528,  620, 3534,
+      619, 3545,  619, 3556, 3562,  613, 3573,  600, 3579,  603,
+      604,  623,  594,  300,  466,  447,  360, 3590, 3596,    0,
+     3607, 3613, 3629, 3628, 3644, 3645, 3660, 3661,  593,  603,
+      584,    0, 3676, 3684, 3699,  590, 3700,  579,  591, 3715,
+      603, 3723,    0, 3731,  572, 3744,  579,  589,  531,  528,
+      443, 3783,  454,  568, 3768, 3769, 3784, 3785, 3800, 3808,
 
-     3782, 3783, 3798, 3799, 3814, 3815, 3830, 3836, 3847,  529,
-      533,  527, 3853, 3864, 3875,  520, 3881,  523,  515, 3892,
-      512, 3898, 3909,  518,    0,  508,  496,  498,  397, 3941,
-      560,  517, 3926, 3927, 3942, 3943, 3958,  489,  507,  484,
-     3969, 3975,  483, 3990,  475,  477, 3993,  468, 3996, 4013,
-      469,  462,  468,  461,  424, 4484, 4052,  485, 4037, 4048,
-     4059,  461,  456,  455, 4065, 4076,    0, 4087,  454,  444,
-     4098,  440, 4104, 4115,  438,  434,  429,  432,  732,  441,
-     4131, 4128, 4139,    0,  419,    0, 4152,    0,  411, 4155,
-      399, 4170,    0,  372,  347,    0, 4209,  330, 4194, 4205,
+     3816, 3824,  529,  533,  527, 3832, 3840, 3848,  520, 3856,
+      523,  515, 3864,  512, 3872, 3880,  518,    0,  508,  496,
+      498,  397, 3912,  560,  517, 3897, 3898, 3913, 3921,  489,
+      507,  484, 3934, 3942,  483, 3950,  475,  477, 3958,  468,
+     3971, 3974,  469,  462,  468,  461,  424, 4405, 4018,  485,
+     4003, 4004,  461,  456,  455, 4019, 4020,    0, 4035,  454,
+      444, 4036,  440, 4051, 4057,  438,  434,  429,  432,  732,
+      441, 4068, 4079,    0,  419,    0, 4085,    0,  411, 4100,
+      399, 4103,    0,  372,  347,    0, 4147,  330, 4132,  258,
+     4143,  227,  214, 4149,  177,    0,  180, 4160,    0,  138,
 
-      258, 4211,  227,  214, 4222,  177,    0,  180, 4233, 4239,
-        0,  138,    0, 4250,    0,  134, 4256,    0,    0, 4484,
-     4301, 4313, 4325, 4337, 4349, 4361, 4373, 4384, 4385, 4389,
-     4400, 4412, 4424, 4435, 4446, 4457, 4462, 4467, 4472
+        0, 4166,    0,  134, 4177,    0,    0, 4405, 4222, 4234,
+     4246, 4258, 4270, 4282, 4294, 4305, 4306, 4310, 4321, 4333,
+     4345, 4356, 4367, 4378, 4383, 4388, 4393
     } ;
 
-static yyconst short int yy_def[740] =
+static yyconst short int yy_def[728] =
     {   0,
-      720,    1,  721,  721,  722,  722,  723,  723,  724,  724,
-      725,  725,  726,  726,  720,  720,  720,  720,  720,  727,
-      720,  728,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,  729,
-      720,  730,  720,  731,  720,  720,  720,  720,  720,  720,
-      720,  732,  732,  720,  733,  733,  720,  720,  720,  720,
-      734,  720,  720,  735,  735,  736,  720,  720,   21,  720,
-      720,  720,  727,  727,  720,  737,  720,  738,  728,  728,
-      720,  720,  720,  720,  720,  720,   31,   31,   31,   31,
+      708,    1,  709,  709,  710,  710,  711,  711,  712,  712,
+      713,  713,  714,  714,  708,  708,  708,  708,  708,  715,
+      708,  716,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,   31,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,  717,
+      708,  718,  708,  719,  708,  708,  708,  708,  708,  708,
+      708,  720,  720,  708,  721,  721,  708,  708,  708,  708,
+      722,  708,  708,  723,  723,  724,  708,  708,   21,  708,
+      708,  708,  715,  715,  708,  725,  708,  726,  716,  716,
+      708,  708,  708,  708,  708,  708,   31,   31,   31,   31,
 
-       31,   31,  739,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,  739,  739,   31,
-       31,   31,   31,   31,   31,   31,   31,  739,   31,   31,
-       31,   31,  739,   31,   31,   31,   31,  739,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,  739,   31,   31,
-      739,  739,   31,  720,  729,  155,  155,  155,  730,  731,
-      720,  720,  732,  720,  733,  720,  734,   75,   75,  736,
-      720,  720,  720,  737,  738,  720,  720,  720,  720,  720,
+       31,   31,  727,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,  727,  727,   31,
+       31,   31,   31,   31,   31,   31,   31,  727,   31,   31,
+       31,   31,  727,   31,   31,   31,   31,  727,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,  727,   31,   31,
+      727,  727,   31,  708,  717,  155,  155,  155,  718,  719,
+      708,  708,  720,  708,  721,  708,  722,   75,   75,  724,
+      708,  708,  708,  725,  726,  708,  708,  708,  708,  708,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
 
-       31,   31,   31,   31,  739,  739,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,  739,   31,   31,   31,
-      739,   31,   31,   31,   31,   31,  739,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,  739,   31,
-       31,   31,  739,  739,  739,   31,  720,  720,  155,  155,
-      155,  720,   75,   75,  720,  720,  720,   31,   31,   31,
+       31,   31,   31,   31,  727,  727,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,  727,   31,   31,   31,
+      727,   31,   31,   31,   31,   31,  727,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,  727,   31,
+       31,   31,  727,  727,  727,   31,  708,  708,  155,  155,
+      155,  708,   75,   75,  708,  708,  708,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,  739,  739,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,  739,   31,   31,   31,  739,   31,   31,
+      727,  727,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,  727,   31,   31,   31,  727,   31,   31,   31,
 
-       31,   31,  739,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,  739,   31,   31,   31,   31,   31,  739,
-      739,  739,   31,  720,  155,  155,  155,   75,   31,   31,
-       31,   31,   31,  739,   31,   31,   31,   31,   31,   31,
+       31,  727,   31,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,  727,   31,   31,   31,   31,   31,  727,  727,
+      727,   31,  708,  155,  155,  155,   75,   31,   31,   31,
+       31,  727,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,  739,  739,  739,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,  739,   31,   31,   31,  739,
-       31,   31,   31,   31,  739,   31,   31,   31,   31,  739,
-       31,  739,   31,   31,   31,  739,   31,  739,  739,  739,
-      720,  155,  155,  155,   75,   31,   31,   31,   31,  739,
+      727,  727,  727,   31,   31,   31,   31,   31,   31,   31,
+       31,   31,   31,  727,   31,   31,   31,  727,   31,   31,
+       31,   31,  727,   31,   31,   31,   31,  727,   31,  727,
+       31,   31,   31,  727,   31,  727,  727,  727,  708,  155,
+      155,  155,   75,   31,   31,   31,  727,   31,   31,   31,
 
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,  739,  739,
-      739,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,  739,   31,   31,  739,   31,   31,   31,   31,
-      739,   31,   31,   31,   31,  739,   31,  739,   31,   31,
-      739,  739,  739,  739,  739,  155,  155,  155,   75,   31,
-       31,   31,  739,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,  739,
-      739,  739,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,  739,   31,  739,   31,   31,   31,   31,
-
-      739,   31,   31,  739,   31,  739,   31,  739,  739,  739,
-      739,  739,  155,  155,  155,   75,   31,   31,   31,  739,
+       31,   31,   31,   31,   31,  727,  727,  727,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,  727,
+       31,   31,  727,   31,   31,   31,   31,  727,   31,   31,
+       31,   31,  727,   31,  727,   31,   31,  727,  727,  727,
+      727,  727,  155,  155,  155,   75,   31,   31,  727,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,  739,  739,  739,  739,   31,   31,   31,   31,   31,
-       31,  739,   31,  739,   31,  739,   31,  739,   31,   31,
-      739,   31,  739,   31,  739,  739,  739,  739,  155,  155,
-      155,   75,   31,   31,   31,  739,   31,   31,   31,   31,
-       31,   31,   31,   31,  739,  739,  739,  739,   31,   31,
-       31,  739,   31,  739,  739,   31,  739,   31,  739,   31,
-      739,   31,  739,  739,  739,  739,  155,  720,  155,  734,
+       31,   31,   31,   31,   31,  727,  727,  727,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,  727,
+       31,  727,   31,   31,   31,   31,  727,   31,   31,  727,
 
-       31,   31,   31,   31,   31,   31,   31,   31,   31,  739,
-      739,  739,   31,   31,   31,  739,   31,  739,  739,   31,
-      739,   31,   31,  739,  739,  739,  739,  739,  155,  720,
-      155,  734,   31,   31,   31,   31,   31,  739,  739,  739,
-       31,   31,  739,   31,  739,  739,   31,  739,   31,   31,
-      739,  739,  739,  739,  155,  720,  720,  734,   31,   31,
-       31,  739,  739,  739,   31,   31,  739,   31,  739,  739,
-       31,  739,   31,   31,  739,  739,  739,  739,  155,  734,
-       31,   31,   31,  739,  739,  739,   31,  739,  739,   31,
-      739,   31,  739,  739,  739,  739,  720,  734,   31,   31,
+       31,  727,   31,  727,  727,  727,  727,  727,  155,  155,
+      155,   75,   31,   31,  727,   31,   31,   31,   31,   31,
+       31,   31,   31,   31,   31,   31,  727,  727,  727,  727,
+       31,   31,   31,   31,   31,   31,  727,   31,  727,   31,
+      727,   31,  727,   31,   31,  727,   31,  727,   31,  727,
+      727,  727,  727,  155,  155,  155,   75,   31,   31,  727,
+       31,   31,   31,   31,   31,   31,   31,   31,  727,  727,
+      727,  727,   31,   31,   31,  727,   31,  727,  727,   31,
+      727,   31,  727,   31,  727,   31,  727,  727,  727,  727,
+      155,  708,  155,  722,   31,   31,   31,   31,   31,   31,
 
-      739,   31,  739,  739,   31,  739,  739,  734,   31,   31,
-      739,  739,  739,   31,  739,  734,   31,  739,  734,    0,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720
+       31,   31,  727,  727,  727,   31,   31,   31,  727,   31,
+      727,  727,   31,  727,   31,   31,  727,  727,  727,  727,
+      727,  155,  708,  155,  722,   31,   31,   31,   31,  727,
+      727,  727,   31,   31,  727,   31,  727,  727,   31,  727,
+       31,   31,  727,  727,  727,  727,  155,  708,  708,  722,
+       31,   31,  727,  727,  727,   31,   31,  727,   31,  727,
+      727,   31,  727,   31,   31,  727,  727,  727,  727,  155,
+      722,   31,   31,  727,  727,  727,   31,  727,  727,   31,
+      727,   31,  727,  727,  727,  727,  708,  722,   31,  727,
+       31,  727,  727,   31,  727,  727,  722,   31,  727,  727,
+
+      727,   31,  727,  722,   31,  727,  722,    0,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708
     } ;
 
-static yyconst short int yy_nxt[4563] =
+static yyconst short int yy_nxt[4484] =
     {   0,
        16,   17,   18,   17,   19,   20,   21,   22,   23,   16,
        24,   25,   26,   27,   28,   28,   28,   28,   28,   28,
@@ -774,87 +768,87 @@
        77,   78,   77,   67,  257,   79,   68,  245,   89,   89,
        89,   77,   78,   77,   81,   81,   79,  156,   91,  250,
        89,   89,   92,   92,   92,   92,   92,   92,   95,   95,
-       95,   95,   95,   95,   95,   97,  168,  328,  112,  171,
+       95,   95,   95,   95,   95,   97,  168,  327,  112,  171,
       171,  171,  171,  171,  171,   97,   85,   97,   69,   97,
-       70,   82,   82,   82,   97,  251,  532,  156,   69,  719,
+       70,   82,   82,   82,   97,  251,  527,  156,   69,  707,
        70,   71,   72,   73,   72,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   30,  533,   80,   87,   97,  720,
-      156,   71,   71,   71,   71,   30,  393,   80,   97,   75,
+       71,   71,   71,   71,   30,  528,   80,   87,   97,  708,
+      156,   71,   71,   71,   71,   30,  391,   80,   97,   75,
 
-       97,   97,   97,  720,  104,  392,  718,   97,  105,  156,
-      326,   97,  106,   97,  107,   97,   97,  156,  716,   97,
-       97,   71,   71,   71,  108,  109,   97,  395,   97,  110,
-       97,   97,  111,   97,  720,  127,  715,  168,   97,  178,
+       97,   97,   97,  708,  104,  390,  706,   97,  105,  156,
+      325,   97,  106,   97,  107,   97,   97,  156,  704,   97,
+       97,   71,   71,   71,  108,  109,   97,  393,   97,  110,
+       97,   97,  111,   97,  708,  127,  703,  168,   97,  178,
       178,  178,  178,  178,  178,  178,   72,   71,   72,   71,
        72,   73,   72,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,  128,  459,   97,  171,  171,  171,  168,   71,
-       71,   71,   71,  713,   97,  113,  114,   75,   97,  253,
-      254,  156,  327,   97,  129,  130,  115,  394,  131,  156,
-      168,  116,   97,  712,   97,   97,   97,  513,  132,   71,
+       71,   71,  128,  456,   97,  171,  171,  171,  168,   71,
+       71,   71,   71,  701,   97,  113,  114,   75,   97,  253,
+      254,  156,  326,   97,  129,  130,  115,  392,  131,  156,
+      168,  116,   97,  700,   97,   97,   97,  509,  132,   71,
 
        71,   71,   97,   97,   97,   97,   97,   97,  117,   97,
-      156,   97,  456,  133,   97,  711,  562,  120,   97,  156,
-      121,  457,  458,  168,   72,   71,   72,   81,   97,  122,
-      123,  152,   97,  156,  156,  124,  156,   97,  514,  156,
-      156,   85,  515,  597,   86,   86,   86,   86,   86,   86,
+      156,   97,  453,  133,   97,  699,  557,  120,   97,  156,
+      121,  454,  455,  168,   72,   71,   72,   81,   97,  122,
+      123,  152,   97,  156,  156,  124,  156,   97,  510,  156,
+      156,   85,  511,  591,   86,   86,   86,   86,   86,   86,
        86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
        86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-      600,  708,   87,   88,   88,   88,   88,   88,   88,   88,
+      594,  697,   87,   88,   88,   88,   88,   88,   88,   88,
        88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   97,  560,  168,   97,   97,
+       88,   88,   88,   88,   88,   97,  555,  168,   97,   97,
 
-       97,   97,   97,   97,   97,  156,  707,  156,  561,   97,
+       97,   97,   97,   97,   97,  156,  696,  156,  556,   97,
        98,   97,   97,   97,   97,   97,   97,   97,   97,   97,
        99,   97,  100,   97,  101,   97,   97,   97,   97,  102,
-       97,   97,   97,   97,   97,  655,  156,  706,  103,  103,
+       97,   97,   97,   97,   97,  647,  156,  695,  103,  103,
       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
       103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-       97,  679,  559,  156,  704,  125,   97,  598,  598,  598,
-       97,  599,   97,  126,   97,  629,   97,  156,   97,   97,
-       97,  703,  156,  701,  698,   97,  156,  134,   97,  631,
-      135,  696,  118,  156,  695,  694,   97,  693,  136,  139,
+       97,  670,  554,  156,  693,  125,   97,  592,  592,  592,
+       97,  593,   97,  126,   97,  622,   97,  156,   97,   97,
+       97,  692,  156,  690,  688,   97,  156,  134,   97,  624,
+      135,  686,  118,  156,  685,  684,   97,  683,  136,  139,
 
-       97,  691,   97,  119,  137,  156,   97,   97,   97,   97,
-       97,  689,  140,  688,  686,   97,  141,  685,  144,   97,
-      684,   97,  680,   97,  145,   97,  678,  142,   97,  677,
-      676,  138,  143,   97,  675,   97,  672,   97,  670,   97,
-      669,  146,  667,   97,   97,  149,   97,   97,  147,  664,
-      663,  150,   97,  153,  662,  658,   97,  148,   97,  654,
-       97,  657,  657,  657,  653,   97,  154,  154,  154,  154,
-      154,  154,  154,  151,   89,   89,   89,  155,  652,  651,
-      176,   97,  648,  646,  645,  643,   89,   89,  640,  639,
-      638,   97,  157,   97,  632,   97,  628,  158,  167,  156,
+       97,  681,   97,  119,  137,  156,   97,   97,   97,   97,
+       97,  679,  140,  678,  676,   97,  141,  675,  144,   97,
+      674,   97,  671,   97,  145,   97,  669,  142,   97,  668,
+      667,  138,  143,   97,  666,   97,  663,   97,  661,   97,
+      660,  146,  658,   97,   97,  149,   97,   97,  147,  655,
+      654,  150,   97,  153,  653,  650,   97,  148,   97,  646,
+       97,  649,  649,  649,  645,   97,  154,  154,  154,  154,
+      154,  154,  154,  151,   89,   89,   89,  155,  644,  643,
+      176,   97,  640,  638,  637,  635,   89,   89,  632,  631,
+      630,   97,  157,   97,  625,   97,  621,  158,  167,  156,
 
-       97,  627,  167,  167,  167,  167,  167,  167,  167,  167,
+       97,  620,  167,  167,  167,  167,  167,  167,  167,  167,
       167,   95,   95,   95,   95,   95,   95,   95,  167,  167,
       167,  167,   97,   97,  178,  178,  178,  178,  178,  178,
-      178,  626,   97,  182,   97,   97,   97,   97,  625,  181,
-      624,   97,   97,   97,   97,  621,  619,  618,  167,  167,
-      167,  616,  612,   97,   97,   97,   97,   97,  184,   97,
-      611,  610,   97,   97,  596,  595,  183,  594,  593,   97,
-      591,   97,  589,   97,  167,  167,  587,  185,   97,  167,
-      167,  167,  167,  167,  167,  167,  167,  167,  585,   97,
-      584,  582,   97,  578,  186,  167,  167,  167,  167,   97,
+      178,  619,   97,  182,   97,   97,   97,   97,  618,  181,
+      617,   97,   97,   97,   97,  614,  612,  611,  167,  167,
+      167,  609,  605,   97,   97,   97,   97,   97,  184,   97,
+      604,  603,   97,   97,  590,  589,  183,  588,  587,   97,
+      585,   97,  583,   97,  167,  167,  581,  185,   97,  167,
+      167,  167,  167,  167,  167,  167,  167,  167,  579,   97,
+      578,  576,   97,  572,  186,  167,  167,  167,  167,   97,
 
-      577,   97,   97,   97,   97,   97,   97,  576,   97,  575,
-      187,   97,  169,  566,  558,   97,  557,   97,   97,  188,
-      556,  555,  553,  551,   97,  167,  167,  167,   97,   97,
-       97,  189,   97,  697,  697,  697,  548,   97,  546,   97,
-      544,   97,  535,   97,  190,   97,  534,  520,   97,  516,
-      512,  167,  192,   97,  511,   97,  510,   97,  191,   97,
-      509,  508,  506,   97,   97,   97,   97,   97,  504,   97,
-      501,  156,   97,  195,  496,  494,   97,  193,  194,   97,
-       97,   97,  196,   97,  482,   97,  481,  480,   97,  463,
-      455,  454,   97,  453,   97,  451,   97,   97,  197,  198,
+      571,   97,   97,   97,   97,   97,   97,  570,   97,  569,
+      187,   97,  169,  560,  553,   97,  552,   97,   97,  188,
+      551,  550,  548,  546,   97,  167,  167,  167,   97,   97,
+       97,  189,   97,  687,  687,  687,  543,   97,  541,   97,
+      539,   97,  530,   97,  190,   97,  529,  515,   97,  512,
+      508,  167,  192,   97,  507,   97,  506,   97,  191,   97,
+      505,  504,  502,   97,   97,   97,   97,   97,  500,   97,
+      497,  156,   97,  195,  492,  490,   97,  193,  194,   97,
+       97,   97,  196,   97,  478,   97,  477,  476,   97,  459,
+      452,  451,   97,  450,   97,  448,   97,   97,  197,  198,
 
-       97,   97,  448,   97,  200,  446,  441,   97,  436,   97,
+       97,   97,  445,   97,  200,  443,  438,   97,  433,   97,
       203,   97,   97,   97,   97,   97,  199,  201,   97,   97,
-      433,  202,   97,  421,  420,  207,  419,  400,   97,  390,
-       97,  204,   97,   97,  389,  388,   97,   97,  382,  208,
-      375,  370,  366,   97,   97,   97,   97,   97,   97,  354,
-       97,  353,   97,  172,   97,   97,   97,  168,  209,   97,
-      210,  325,  322,   97,  321,  320,  314,  303,  298,   97,
-       97,   97,  294,   97,  283,  282,  211,  212,   97,  257,
+      430,  202,   97,  418,  417,  207,  416,  397,   97,  388,
+       97,  204,   97,   97,  387,  386,   97,   97,  380,  208,
+      373,  368,  364,   97,   97,   97,   97,   97,   97,  352,
+       97,  351,   97,  172,   97,   97,   97,  168,  209,   97,
+      210,  324,  321,   97,  320,  319,  313,  302,  297,   97,
+       97,   97,  293,   97,  282,  281,  211,  212,   97,  257,
        97,   97,   97,  213,   97,  255,  168,   97,  252,   97,
       156,   97,  243,   97,  239,   97,  227,   97,   97,  215,
 
@@ -864,406 +858,397 @@
        97,   94,  219,   97,  162,   97,  161,   97,   97,   97,
        81,   97,   81,   96,   93,   97,   97,   97,   97,   97,
        97,   97,   97,  220,   97,   84,  222,   97,   81,   81,
-      720,   97,   97,   97,  720,   97,  720,  720,  720,  720,
-       97,  223,   97,  720,   97,   97,   97,  720,  225,  720,
-      720,  224,  226,  720,  720,   97,  720,   97,  720,   97,
-      228,   97,  720,  720,   97,  720,  720,   97,  720,  720,
+      708,   97,   97,   97,  708,   97,  708,  708,  708,  708,
+       97,  223,   97,  708,   97,   97,   97,  708,  225,  708,
+      708,  224,  226,  708,  708,   97,  708,   97,  708,   97,
+      228,   97,  708,  708,   97,  708,  708,   97,  708,  708,
 
-      720,  229,  720,   97,  720,   97,  720,   97,   97,   97,
-       97,   97,  230,  720,   97,  231,   97,  720,   97,  720,
-       97,  720,   97,  720,   97,   97,   97,   97,   97,  235,
-      233,  720,  232,   97,  720,   97,  720,  234,  720,   97,
-       97,   97,  720,  720,   97,  720,  236,  720,  720,  720,
-       97,   97,   97,   97,   97,   97,   97,   97,  720,   97,
-       97,  720,  720,  720,  720,  720,   97,   97,   97,   97,
-       97,  238,   97,   97,  241,  237,   97,  242,  720,  240,
-      720,  720,   97,   97,   97,   97,   97,   97,   97,  720,
-      720,   97,   97,  720,  720,  720,  720,  720,   97,  720,
+      708,  229,  708,   97,  708,   97,  708,   97,   97,   97,
+       97,   97,  230,  708,   97,  231,   97,  708,   97,  708,
+       97,  708,   97,  708,   97,   97,   97,   97,   97,  235,
+      233,  708,  232,   97,  708,   97,  708,  234,  708,   97,
+       97,   97,  708,  708,   97,  708,  236,  708,  708,  708,
+       97,   97,   97,   97,   97,   97,   97,   97,  708,   97,
+       97,  708,  708,  708,  708,  708,   97,   97,   97,   97,
+       97,  238,   97,   97,  241,  237,   97,  242,  708,  240,
+      708,  708,   97,   97,   97,   97,   97,   97,   97,  708,
+      708,   97,   97,  708,  708,  708,  708,  708,   97,  708,
 
-       97,  720,   97,  248,  248,  248,  246,   97,  154,  154,
-      154,  154,  154,  154,  154,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,   97,   97,  720,  258,  720,  720,
-      720,  720,  720,  720,   97,   97,   97,   97,   97,   97,
-       97,  249,  259,   97,   97,  720,  247,  720,   97,  720,
-       97,   97,   97,  720,   97,  720,  720,  720,  260,   97,
-       97,   97,   97,   97,  261,   97,   97,   97,  720,   97,
-       97,  720,   97,  262,  720,  720,   97,  720,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,   97,  263,
-      720,   97,  720,   97,  720,  720,  720,  264,  720,   97,
+       97,  708,   97,  248,  248,  248,  246,   97,  154,  154,
+      154,  154,  154,  154,  154,  708,  708,  708,  708,  708,
+      708,  708,  708,   97,   97,  708,  258,  708,  708,  708,
+      708,  708,  708,   97,   97,   97,   97,   97,   97,   97,
+       97,  249,   97,   97,  708,  708,  247,  708,  708,   97,
+      259,   97,   97,   97,   97,   97,  708,  708,   97,   97,
+      708,  708,  708,   97,  708,   97,   97,   97,  260,   97,
+      261,  708,  708,   97,   97,   97,   97,   97,   97,   97,
+       97,  708,   97,  708,  708,   97,  708,   97,  708,   97,
+      708,   97,  708,   97,  708,   97,  262,  263,   97,   97,
 
-      720,   97,  720,   97,   97,   97,   97,   97,  720,  265,
-       97,  266,   97,  720,   97,  720,   97,  720,   97,  720,
-       97,   97,   97,   97,   97,  720,  720,  267,  720,   97,
-      720,   97,   97,   97,  720,  268,  720,  720,  720,  720,
-       97,  720,   97,  720,   97,  720,   97,  271,   97,  269,
-      270,   97,  720,  720,   97,  272,  720,  273,   97,  720,
-       97,  720,   97,  720,   97,   97,   97,   97,   97,  720,
-      720,   97,  720,   97,  720,   97,  720,   97,  274,   97,
-      720,   97,   97,   97,   97,   97,  720,  720,   97,  720,
-       97,  276,   97,  275,   97,  720,   97,  720,   97,   97,
+      708,   97,  708,   97,  708,   97,   97,   97,  708,   97,
+      265,  264,  708,   97,   97,   97,   97,   97,  708,  708,
+      708,  708,   97,  708,   97,  708,   97,   97,   97,  708,
+       97,  708,  708,  266,   97,   97,   97,   97,  267,   97,
+      708,   97,  708,   97,  268,  269,   97,  270,   97,   97,
+      708,  708,  272,  708,  708,  271,  708,  708,   97,   97,
+       97,   97,   97,   97,   97,  708,  708,   97,   97,  708,
+       97,  708,  708,  708,   97,  708,   97,  273,   97,  708,
+       97,   97,   97,   97,   97,  708,  708,   97,  708,   97,
+      275,   97,  274,   97,  708,   97,  708,   97,   97,   97,
 
-       97,   97,   97,  720,  720,   97,  720,   97,  279,  277,
-      720,   97,  278,   97,  720,   97,   97,   97,   97,   97,
-      720,  720,  720,  720,   97,  720,   97,   97,   97,  720,
-       97,  720,  720,  280,  720,   97,  720,   97,  281,   97,
-       97,   97,  720,  720,  720,  720,   97,  720,   97,  720,
-       97,   97,   97,  720,   97,  720,  720,  284,   97,   97,
-      285,  286,   97,   97,  287,   97,   97,   97,  720,   97,
-       97,  720,   97,  720,  720,  290,  288,  720,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,  289,   97,  291,
-       97,   97,  720,   97,  720,  720,   97,  720,  720,  720,
+       97,   97,  708,  708,   97,  708,   97,  278,  276,  708,
+       97,  277,   97,  708,   97,   97,   97,   97,   97,  708,
+      708,  708,  708,   97,  708,   97,   97,   97,  708,   97,
+      708,  708,  279,  708,   97,  708,   97,  280,   97,   97,
+       97,  708,  708,  708,  708,   97,  708,   97,  708,   97,
+       97,   97,  708,   97,  708,  708,  283,   97,   97,  284,
+      285,   97,   97,  286,   97,   97,   97,  708,   97,   97,
+      708,   97,  708,  708,  289,  287,  708,   97,   97,   97,
+       97,   97,   97,   97,   97,   97,  288,   97,  290,   97,
+       97,  708,   97,  708,  708,   97,  708,  708,  708,   97,
 
-       97,  720,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,  292,  720,   97,   97,  720,  295,  720,  720,
-      720,  293,  720,   97,   97,   97,   97,  720,   97,   97,
-       97,  720,  296,   97,  720,   97,  720,  720,  720,   97,
-      720,   97,  297,   97,  720,   97,   97,   97,   97,   97,
-      720,  720,  720,  720,   97,  720,   97,   97,   97,  720,
-       97,  720,  720,   97,  299,   97,  720,   97,  720,   97,
-      720,   97,  720,   97,   97,   97,   97,   97,  720,  720,
-      300,  720,   97,  720,   97,   97,   97,  720,   97,  720,
-      720,  301,  720,   97,  720,   97,   97,   97,  720,   97,
+      708,   97,   97,   97,   97,   97,   97,   97,   97,   97,
+       97,  291,  708,   97,   97,  708,  294,  708,  708,  708,
+      292,  708,   97,   97,   97,   97,  708,   97,   97,   97,
+      708,  295,   97,  708,   97,  708,  708,  708,   97,  708,
+       97,  296,   97,  708,   97,   97,   97,   97,   97,  708,
+      708,  708,  708,   97,  708,   97,   97,   97,  708,   97,
+      708,  708,   97,  298,   97,  708,   97,  708,   97,  708,
+       97,  708,   97,   97,   97,   97,   97,  708,  708,  299,
+      708,   97,  708,   97,   97,   97,  708,   97,  708,  708,
+      300,  708,   97,  708,   97,   97,   97,  708,   97,  708,
 
-      720,  305,   97,  720,   97,  302,  304,  720,   97,  720,
-       97,  720,   97,   97,   97,   97,   97,  720,  720,   97,
-      720,   97,  720,   97,  720,   97,  720,   97,  720,   97,
-      720,   97,  306,   97,   97,   97,  720,  307,   97,  720,
-      720,  720,  308,  720,   97,   97,   97,   97,   97,   97,
-       97,  720,  720,   97,   97,  720,  720,  720,  720,  720,
-       97,   97,   97,  720,   97,  720,  720,   97,  309,   97,
-      720,   97,  720,   97,  720,   97,  720,   97,  310,   97,
-       97,   97,   97,  720,  311,  312,   97,  720,   97,  720,
-      720,  313,   97,  720,   97,  720,   97,  720,   97,   97,
+      304,   97,  708,   97,  301,  303,  708,   97,  708,   97,
+      708,   97,   97,   97,   97,   97,  708,  708,   97,  708,
+       97,  708,   97,  708,   97,  708,   97,  708,   97,  708,
+       97,  305,   97,   97,   97,  708,  306,   97,  708,  708,
+      708,  307,  708,   97,   97,   97,   97,   97,   97,   97,
+      708,  708,   97,   97,  708,  708,  708,  708,  708,   97,
+       97,   97,  708,   97,  708,  708,   97,  308,   97,  708,
+       97,  708,   97,  708,   97,  708,   97,  309,   97,   97,
+       97,   97,  708,  310,  311,   97,  708,   97,  708,  708,
+      312,   97,  708,   97,  708,   97,  708,   97,   97,   97,
 
-       97,   97,   97,  720,  720,  720,  720,   97,  720,   97,
-       97,   97,  315,   97,  316,  319,  720,  720,   97,  317,
-       97,   97,   97,  720,   97,  720,  720,  720,  318,   97,
-      720,   97,   97,   97,  720,   97,  720,  720,  323,  720,
-       97,  720,   97,  720,   97,  720,   97,  248,  248,  248,
-      720,   97,  720,  720,  720,  720,   97,   97,  720,  324,
-      324,  324,  324,  324,  324,  324,   97,   97,  329,   97,
-       97,   97,   97,  330,  720,   97,   97,  720,   97,  331,
-      720,  720,   97,  720,   97,  720,   97,  720,   97,  332,
-       97,   97,   97,   97,   97,  720,  720,   97,  720,  720,
+       97,   97,  708,  708,  708,  708,   97,  708,   97,   97,
+       97,  314,   97,  315,  318,  708,  708,   97,  316,   97,
+       97,   97,  708,   97,  708,  708,  708,  317,   97,  708,
+       97,   97,   97,  708,   97,  708,  708,  322,  708,   97,
+      708,   97,  708,   97,  708,   97,  248,  248,  248,  708,
+       97,  708,  708,  708,  708,   97,  708,  708,  323,  323,
+      323,  323,  323,  323,  323,   97,   97,  328,  708,   97,
+      708,  708,   97,  329,   97,  708,   97,  708,   97,  708,
+       97,  708,   97,  330,   97,   97,   97,   97,   97,  708,
+      708,   97,  708,  708,  708,  708,  708,   97,   97,  331,
 
-      720,  720,  720,   97,   97,  333,   97,   97,   97,  336,
-       97,   97,   97,   97,  335,  720,  720,  720,  720,  720,
-       97,   97,   97,   97,   97,   97,   97,  337,  720,   97,
-       97,  720,   97,  720,  720,  720,   97,  720,   97,  334,
-       97,  720,   97,   97,   97,   97,   97,  720,  720,  338,
-      720,   97,  720,   97,   97,   97,  339,   97,  720,  720,
-      720,  720,   97,  720,   97,  720,   97,  720,   97,   97,
-      340,  341,   97,   97,  720,   97,  720,  720,  720,   97,
-      720,   97,   97,   97,   97,   97,   97,  343,  342,   97,
-       97,   97,  344,   97,   97,  345,   97,  720,  720,  346,
+       97,   97,   97,  334,   97,   97,   97,   97,  333,  708,
+      708,  708,  708,  708,   97,   97,   97,   97,   97,   97,
+       97,  335,  708,   97,   97,  708,   97,  708,  708,  708,
+       97,  708,   97,  332,   97,  708,   97,   97,   97,   97,
+       97,  708,  708,  336,  708,   97,  708,   97,   97,   97,
+      337,   97,  708,  708,  708,  708,   97,  708,   97,  708,
+       97,  708,   97,   97,  338,  339,   97,   97,  708,   97,
+      708,  708,  708,   97,  708,   97,   97,   97,   97,   97,
+       97,  341,  340,   97,   97,   97,  342,   97,   97,  343,
+       97,  708,  708,  344,   97,  708,   97,   97,   97,   97,
 
-       97,  720,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,  720,  720,   97,  720,   97,  720,  720,
-      720,   97,  720,   97,  348,  347,  720,   97,   97,   97,
-       97,   97,  720,  720,  720,  720,   97,  720,   97,   97,
-       97,  720,   97,  720,  349,  720,  720,   97,  720,   97,
-      720,  350,  720,   97,   97,  351,  720,  352,   97,  720,
-       97,  720,  720,  720,   97,  720,   97,  720,   97,  720,
-       97,   97,   97,   97,   97,  720,  720,   97,  720,   97,
-      720,   97,  720,   97,  720,   97,  720,   97,  720,   97,
-       97,   97,   97,   97,  720,  356,   97,  720,  720,  357,
+       97,   97,   97,   97,   97,   97,   97,  708,  708,   97,
+      708,   97,  708,  708,  708,   97,  708,   97,  346,  345,
+      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
+       97,  708,   97,   97,   97,  708,   97,  708,  347,  708,
+      708,   97,  708,   97,  708,  348,  708,   97,   97,  349,
+      708,  350,   97,  708,   97,  708,  708,  708,   97,  708,
+       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
+      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
+      708,   97,  708,   97,   97,   97,   97,   97,  708,  354,
+       97,  708,  708,  355,  708,  708,   97,   97,   97,   97,
 
-      720,  720,   97,   97,   97,   97,   97,   97,   97,  358,
-      720,   97,   97,  360,   97,  720,  355,  720,   97,  720,
-       97,  720,   97,  364,   97,  720,   97,  359,   97,   97,
-      361,  720,   97,   97,  362,  720,  720,  720,  720,   97,
-       97,   97,   97,   97,   97,  363,   97,  720,   97,  720,
-       97,   97,   97,   97,   97,  720,  720,  365,  720,   97,
-      720,   97,  367,   97,   97,   97,  720,   97,  720,  720,
-      720,   97,   97,   97,   97,   97,   97,   97,   97,  720,
-       97,  720,  368,   97,  720,   97,  372,   97,  371,   97,
-      369,   97,  720,  720,  720,   97,   97,   97,  720,   97,
+       97,   97,   97,  356,  708,   97,   97,  358,   97,  708,
+      353,  708,   97,  708,   97,  708,   97,  362,   97,  708,
+       97,  357,   97,   97,  359,  708,   97,   97,  360,  708,
+      708,  708,  708,   97,   97,   97,   97,   97,   97,  361,
+       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
+      708,  363,  708,   97,  708,   97,  365,   97,   97,   97,
+      708,   97,  708,  708,  708,   97,   97,   97,   97,   97,
+       97,   97,   97,  708,   97,  708,  366,   97,  708,   97,
+      370,   97,  369,   97,  367,   97,  708,  708,  708,   97,
+       97,   97,  708,   97,   97,   97,  708,  371,   97,  708,
 
-       97,   97,  720,  373,   97,  720,  720,  720,  720,  720,
-       97,   97,   97,   97,   97,   97,  374,   97,   97,   97,
-       97,  720,  720,  720,  720,  720,  720,   97,   97,   97,
-       97,   97,   97,   97,  720,  720,   97,   97,  720,  720,
-      720,  720,  720,   97,  720,   97,   97,   97,  720,  377,
-      720,  376,   97,  720,   97,  720,   97,   97,   97,  720,
-       97,  720,  720,  720,   97,   97,   97,   97,   97,  378,
-      720,   97,   97,   97,  379,   97,   97,  720,   97,  720,
-      720,  381,   97,  720,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,  720,   97,   97,  720,   97,
+      708,  708,  708,  708,   97,   97,   97,   97,   97,   97,
+      372,   97,   97,   97,   97,  708,  708,  708,  708,  708,
+      708,   97,   97,   97,   97,   97,   97,   97,  708,  708,
+       97,   97,  708,  708,  708,  708,  708,   97,  708,   97,
+       97,   97,  708,  375,  708,  374,   97,  708,   97,  708,
+       97,   97,   97,  708,   97,  708,  708,  708,   97,   97,
+       97,   97,   97,  376,  708,   97,   97,   97,  377,   97,
+       97,  708,   97,  708,  708,  379,   97,  708,   97,   97,
+       97,   97,   97,   97,   97,   97,   97,   97,   97,  708,
+       97,   97,  708,   97,  708,  708,  708,   97,  708,   97,
 
-      720,  720,  720,   97,  720,   97,   97,   97,   97,   97,
-       97,  383,   97,   97,   97,   97,  720,  380,   97,  720,
-       97,  720,  720,  385,   97,  720,   97,  720,   97,  720,
-       97,   97,   97,  384,   97,  720,  720,   97,  720,   97,
-      720,   97,  720,   97,  720,   97,  720,   97,  720,   97,
-       97,   97,   97,  720,  387,  720,   97,  720,  720,  720,
-      720,  720,   97,  720,   97,  720,   97,  386,  720,   97,
-      720,   97,  324,  324,  324,  324,  324,  324,  324,   97,
-      720,   97,  720,   97,  397,   97,  720,  396,   97,  720,
-      720,  720,  720,   97,  398,   97,  720,   97,  720,   97,
+       97,   97,   97,   97,   97,  381,   97,   97,   97,   97,
+      708,  378,   97,  708,   97,  708,  708,  383,   97,  708,
+       97,  708,   97,  708,   97,   97,   97,  382,   97,  708,
+      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
+      708,   97,  708,   97,   97,   97,   97,  708,  385,  708,
+       97,  708,  708,  708,  708,  708,   97,  708,   97,  708,
+       97,  384,  708,   97,  708,   97,  323,  323,  323,  323,
+      323,  323,  323,   97,  708,   97,  708,   97,   97,  395,
+      708,  394,   97,  396,   97,  708,  708,  708,   97,  708,
+       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
 
-      399,   97,  720,   97,   97,   97,  720,   97,  720,   97,
-      391,   97,   97,   97,  720,   97,  401,   97,  720,   97,
-       97,   97,  720,   97,  720,   97,  402,   97,   97,   97,
-      720,   97,  720,  720,  720,   97,   97,   97,   97,   97,
-      720,  403,  720,  720,   97,  720,   97,  720,   97,   97,
-       97,  720,   97,  720,  720,  720,   97,   97,   97,   97,
-       97,  404,  720,   97,   97,   97,  405,   97,   97,  720,
-       97,  406,  720,  720,   97,  720,   97,   97,   97,   97,
-      407,   97,   97,   97,   97,   97,   97,  720,  408,   97,
-      720,   97,  409,  410,  720,   97,  720,   97,  720,   97,
+      398,   97,  708,   97,  389,   97,  708,   97,  708,   97,
+      708,   97,  708,   97,   97,   97,   97,  399,  708,   97,
+       97,  708,  400,  708,  708,  708,   97,   97,   97,   97,
+       97,   97,  708,   97,  708,   97,  708,   97,   97,   97,
+       97,   97,  402,   97,  708,  708,   97,  708,  708,  708,
+       97,   97,  401,   97,   97,   97,  708,   97,  403,   97,
+      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
+       97,  708,   97,  708,  404,  405,   97,  708,   97,  406,
+      708,  708,   97,   97,   97,   97,   97,  407,  708,  708,
+      708,   97,  708,   97,  708,   97,  408,   97,  708,   97,
 
-      720,   97,  720,   97,   97,   97,   97,   97,  720,  411,
-       97,  720,  720,  412,  720,  720,   97,   97,   97,   97,
-       97,   97,   97,  413,  720,   97,   97,  720,  720,  720,
-      720,  720,   97,  720,   97,  720,   97,   97,  415,  720,
-      414,   97,  720,   97,  720,  720,  720,   97,  720,   97,
-      720,   97,  720,   97,   97,   97,   97,   97,  720,  720,
-       97,  416,   97,  720,   97,  720,   97,  720,   97,  720,
-       97,  417,  418,   97,   97,   97,   97,  720,  720,   97,
-      720,  720,  720,  422,  720,   97,   97,   97,   97,   97,
-       97,  720,  720,   97,   97,   97,   97,  423,  720,  424,
+      409,   97,  708,   97,   97,   97,  708,   97,  708,   97,
+      708,   97,   97,   97,  708,   97,  708,  410,  708,   97,
+       97,   97,  708,   97,   97,  412,  708,  411,   97,  708,
+       97,  708,  708,  708,   97,  708,   97,  708,   97,  708,
+       97,   97,   97,   97,   97,  708,  708,   97,  413,   97,
+      708,   97,  708,   97,  708,   97,  708,   97,  414,  415,
+       97,   97,   97,   97,  708,  708,   97,  708,  708,  708,
+      419,  708,   97,   97,   97,   97,   97,   97,  708,  708,
+       97,   97,   97,   97,  420,  708,  421,  708,  708,  708,
+       97,  708,   97,   97,   97,   97,  708,   97,  422,   97,
 
-      720,  720,  720,   97,  720,   97,   97,   97,   97,  720,
-       97,  425,   97,   97,   97,   97,  426,  720,  720,  720,
-      720,  720,  720,   97,   97,  427,   97,   97,   97,   97,
-      720,  720,   97,   97,  720,   97,  720,  720,  429,   97,
-      720,   97,  720,   97,  720,   97,   97,   97,  428,   97,
-      431,  720,  720,  432,   97,  720,   97,   97,   97,  720,
-       97,  720,  720,  430,  720,   97,  720,   97,   97,   97,
-      720,   97,  720,  720,   97,  720,   97,  720,   97,  720,
-       97,  720,   97,  720,   97,   97,   97,   97,   97,  720,
-      720,   97,  434,   97,  720,   97,  720,   97,  720,   97,
+       97,   97,   97,  423,  708,  708,  708,  708,  708,  708,
+       97,   97,  424,   97,   97,   97,   97,  708,  708,   97,
+       97,  708,   97,  708,  708,  426,   97,  708,   97,  708,
+       97,  708,   97,   97,   97,  425,   97,  428,  708,  708,
+      429,   97,  708,   97,   97,   97,  708,   97,  708,  708,
+      427,  708,   97,  708,   97,   97,   97,  708,   97,  708,
+      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
+      708,   97,   97,   97,   97,   97,  708,  708,   97,  431,
+       97,  708,   97,  708,   97,  708,   97,  708,   97,   97,
+      432,   97,   97,  708,  708,  708,  708,   97,  708,   97,
 
-      720,   97,   97,  435,   97,   97,  720,  720,  720,  720,
-       97,  720,   97,   97,   97,  720,   97,  720,  437,   97,
-      438,   97,  720,   97,  720,   97,  720,   97,  720,   97,
-       97,  439,   97,   97,  720,  720,  720,  720,   97,  720,
-       97,  720,   97,   97,   97,  720,   97,  720,  440,   97,
-      442,  720,  720,   97,   97,   97,   97,   97,  443,  444,
-       97,  720,   97,  720,   97,   97,   97,   97,   97,  720,
-      720,  720,  720,   97,  720,  720,  720,   97,   97,   97,
-      720,   97,  720,  720,   97,  447,   97,  720,   97,  445,
-       97,  720,   97,  720,   97,  720,   97,   97,   97,   97,
+       97,   97,  708,   97,  708,  434,   97,  435,   97,  708,
+       97,  708,   97,  708,   97,  708,   97,   97,  436,   97,
+       97,  708,  708,  708,  708,   97,  708,   97,  708,   97,
+       97,   97,  708,   97,  708,  437,   97,  439,  708,  708,
+       97,   97,   97,   97,   97,  440,  441,   97,  708,   97,
+      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
+       97,  708,  708,  708,   97,   97,   97,  708,   97,  708,
+      708,   97,  444,   97,  708,   97,  442,   97,  708,   97,
+      708,   97,  708,   97,   97,   97,   97,   97,  708,  446,
+       97,  708,  708,  708,  708,  708,   97,   97,   97,   97,
 
-       97,  720,  449,   97,  720,  720,  720,  720,  720,   97,
-       97,   97,   97,   97,   97,   97,  450,  720,   97,   97,
-      720,   97,  720,  720,  720,   97,  720,   97,  720,   97,
-      720,   97,  720,   97,   97,   97,   97,  460,  461,   97,
-       97,  720,  720,  720,  720,  720,   97,   97,   97,   97,
-       97,   97,  720,   97,  720,   97,  720,   97,   97,   97,
-      452,   97,   97,  720,  720,  462,   97,  720,   97,  720,
-      720,  720,   97,  720,  464,  720,   97,  720,   97,   97,
-       97,   97,   97,  720,  720,   97,  465,   97,  466,   97,
-      720,   97,  720,   97,  720,   97,   97,   97,   97,   97,
+       97,   97,   97,  447,  708,   97,   97,  708,   97,  708,
+      708,  708,   97,  708,   97,  708,   97,  708,   97,  708,
+       97,   97,   97,  457,   97,  708,  708,   97,  708,  708,
+       97,  708,  708,  708,   97,  708,   97,  708,   97,  708,
+       97,   97,   97,   97,   97,  708,  708,  449,  458,   97,
+      708,   97,   97,  460,  708,   97,  708,  708,  708,  708,
+       97,  708,   97,   97,   97,  708,   97,  708,  708,   97,
+      461,   97,  462,   97,  708,   97,  708,   97,  708,   97,
+       97,   97,   97,   97,  708,  708,   97,  463,   97,  708,
+       97,  708,   97,  708,   97,  708,   97,   97,  464,   97,
 
-      720,  720,   97,  467,   97,  720,   97,  720,   97,  720,
-       97,  720,   97,   97,  468,   97,   97,  720,  720,  720,
-      720,   97,  720,   97,   97,   97,  470,   97,  720,  720,
-       97,  469,   97,  720,   97,  720,   97,  720,   97,  720,
-       97,  720,   97,   97,   97,  720,  720,   97,  471,   97,
-      472,  720,  720,   97,  720,  473,  720,   97,  720,   97,
-      720,   97,  720,   97,   97,   97,   97,   97,  720,  475,
-       97,  720,   97,  720,   97,  720,  474,  720,   97,  720,
-       97,   97,   97,   97,   97,  720,  720,   97,  720,   97,
-      720,   97,  720,   97,  476,   97,  720,   97,   97,   97,
+       97,  708,  708,  708,  708,   97,  708,   97,   97,   97,
+      466,   97,  708,  708,   97,  465,   97,  708,   97,  708,
+       97,  708,   97,  708,   97,  708,   97,   97,   97,  708,
+      708,   97,  467,   97,  468,  708,  708,   97,  708,  469,
+      708,   97,  708,   97,  708,   97,  708,   97,   97,   97,
+       97,   97,  708,  471,   97,  708,   97,  708,   97,  708,
+      470,  708,   97,  708,   97,   97,   97,   97,   97,  708,
+      708,   97,  708,   97,  708,   97,  708,   97,  472,   97,
+      708,   97,   97,   97,   97,   97,  708,  708,   97,  708,
+       97,  708,   97,  708,   97,  474,   97,  708,   97,  473,
 
-       97,   97,  720,  720,   97,  720,   97,  720,   97,  720,
-       97,  478,   97,  720,   97,  477,   97,   97,   97,  479,
-       97,   97,  720,   97,  720,  483,  720,  720,  720,  720,
-       97,   97,   97,   97,   97,   97,   97,  720,  720,   97,
-       97,  720,   97,  484,  485,  720,   97,  720,   97,  720,
-       97,  720,   97,   97,   97,   97,   97,  720,  720,   97,
-      720,   97,  487,   97,  720,   97,  720,   97,  720,   97,
-      486,   97,   97,   97,   97,  488,  720,  720,   97,  720,
-       97,  489,  720,  720,   97,  720,   97,  720,   97,  720,
-       97,   97,   97,   97,   97,  720,  720,  720,  720,   97,
+       97,   97,   97,  475,   97,   97,  708,   97,  708,  479,
+      708,  708,  708,  708,   97,   97,   97,   97,   97,   97,
+       97,  708,  708,   97,   97,  708,   97,  480,  481,  708,
+       97,  708,   97,  708,   97,  708,   97,   97,   97,   97,
+       97,  708,  708,   97,  708,   97,  483,   97,  708,   97,
+      708,   97,  708,   97,  482,   97,   97,   97,   97,  484,
+      708,  708,   97,  708,   97,  485,  708,  708,   97,  708,
+       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
+      708,  708,  708,   97,  708,   97,  708,   97,  708,   97,
+       97,  486,  708,  487,   97,  708,   97,  708,  708,  708,
 
-      720,   97,  720,   97,  720,   97,   97,  490,  720,  491,
-       97,  720,   97,  720,  720,  720,   97,  720,   97,  720,
-       97,  720,   97,   97,   97,   97,   97,  720,  720,  492,
-      493,   97,  720,   97,   97,   97,  720,   97,  720,  495,
-       97,  720,   97,  720,   97,  720,   97,  720,   97,  720,
-       97,   97,   97,   97,   97,  720,  720,   97,  720,   97,
-      720,   97,  720,  497,  720,   97,  720,   97,   97,  498,
-       97,   97,  720,  720,  720,  720,   97,  720,   97,  720,
-       97,   97,   97,  720,  500,  720,  499,   97,  720,   97,
-      720,   97,  720,   97,  720,   97,  720,  720,  720,   97,
+       97,  708,   97,  708,   97,  708,   97,   97,   97,   97,
+       97,  708,  708,  488,  489,   97,  708,   97,   97,   97,
+      708,   97,  708,  491,   97,  708,   97,  708,   97,  708,
+       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
+      708,   97,  708,   97,  708,   97,  708,  493,  708,   97,
+      708,   97,   97,  494,   97,   97,  708,  708,  708,  708,
+       97,  708,   97,  708,   97,   97,   97,  708,  496,  708,
+      495,   97,  708,   97,  708,   97,  708,   97,  708,   97,
+      708,  708,  708,   97,   97,   97,  708,   97,   97,  499,
+      708,   97,   97,  498,   97,  708,  708,  708,   97,  708,
 
-       97,   97,  720,   97,   97,  503,  720,   97,   97,  502,
-       97,  720,  720,  720,   97,  720,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,  505,   97,   97,
-      720,   97,  720,  720,  720,   97,  720,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   97,   97,  507,   97,
-       97,  720,  720,  720,  720,  720,   97,  720,   97,   97,
-       97,   97,   97,   97,  517,   97,  720,  518,   97,  519,
-       97,  720,   97,  720,   97,  720,   97,  720,  720,  720,
-       97,   97,   97,   97,   97,  720,  521,  720,  720,   97,
-      720,   97,  720,   97,   97,   97,  720,   97,  720,  720,
+       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
+       97,  501,   97,   97,  708,   97,  708,  708,  708,   97,
+      708,   97,   97,   97,   97,   97,   97,   97,   97,   97,
+       97,   97,  503,  708,   97,  708,  708,  708,  708,  708,
+       97,  708,   97,   97,   97,  708,   97,  708,  513,   97,
+      514,  708,  708,   97,  708,   97,   97,   97,   97,  708,
+       97,   97,   97,  708,  516,   97,  708,   97,  708,  708,
+      708,   97,  708,   97,  708,   97,  708,   97,   97,  517,
+       97,   97,  708,  708,   97,  708,   97,  708,   97,  708,
+      518,  519,   97,  708,   97,   97,   97,   97,   97,  708,
 
-      720,   97,   97,  522,   97,   97,  523,   97,   97,  720,
-       97,  720,  720,   97,  524,   97,  720,   97,   97,   97,
-      720,   97,  720,  720,  720,   97,   97,   97,   97,   97,
-       97,   97,   97,  720,   97,  720,  720,   97,  525,   97,
-      720,   97,   97,   97,  526,   97,  720,  720,  720,   97,
-       97,   97,   97,   97,   97,   97,   97,  720,   97,  720,
-      527,   97,  720,   97,  720,   97,   97,   97,  720,   97,
-      720,  720,  720,   97,   97,   97,   97,   97,   97,   97,
-       97,  528,   97,  720,  529,   97,  720,  530,  720,   97,
-       97,   97,  720,   97,  720,  720,  720,   97,   97,   97,
+      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
+      708,   97,   97,   97,   97,   97,  708,  708,  708,  520,
+       97,  708,   97,   97,   97,  521,   97,  708,  708,   97,
+      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
+       97,   97,   97,   97,  708,  522,   97,  708,   97,  708,
+       97,  708,   97,  708,   97,  708,   97,   97,   97,   97,
+       97,  708,  708,  708,  523,   97,  708,   97,   97,   97,
+      708,   97,  708,  708,  525,  524,   97,  708,   97,  708,
+       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
+      708,   97,  708,   97,  708,  526,  708,   97,  531,   97,
 
-      531,   97,   97,   97,   97,  720,   97,  720,  720,   97,
-      536,   97,  720,   97,   97,   97,  720,   97,  720,  720,
-      720,   97,   97,   97,   97,   97,   97,   97,   97,  537,
-       97,  720,  720,   97,  720,   97,  720,   97,  720,   97,
-      720,   97,  720,  720,  720,   97,   97,   97,   97,   97,
-      720,  539,  538,  720,   97,  720,   97,  720,   97,   97,
-       97,  720,   97,  720,  720,  720,   97,   97,   97,   97,
-       97,   97,  720,   97,  540,   97,   97,  541,   97,   97,
-      720,  720,   97,  720,  720,  720,   97,  720,   97,   97,
-       97,   97,   97,   97,  543,   97,   97,   97,   97,  720,
+      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
+       97,  708,   97,   97,   97,  708,   97,  708,  708,   97,
+      532,   97,  708,   97,  708,   97,  708,   97,  708,   97,
+       97,   97,   97,   97,  708,  708,   97,  708,   97,  534,
+       97,  708,   97,  708,   97,  708,   97,  533,   97,   97,
+       97,   97,   97,  708,  708,   97,  708,  708,  708,  708,
+      708,   97,   97,   97,   97,   97,   97,   97,  536,  535,
+       97,   97,  708,   97,  708,  708,  708,   97,  708,   97,
+      708,   97,  708,   97,   97,   97,   97,   97,  708,  708,
+       97,  708,   97,  708,   97,  708,  538,  708,   97,  708,
 
-       97,   97,  720,  720,  720,  720,  720,  545,  720,   97,
-       97,   97,   97,   97,   97,  720,   97,  547,  720,   97,
-      720,   97,  720,   97,  542,   97,  720,   97,  720,   97,
-      720,   97,   97,   97,  720,   97,  720,  720,  720,   97,
-       97,   97,   97,   97,  720,  549,  720,  720,   97,  720,
-       97,  720,   97,  550,   97,  720,   97,  720,  720,  563,
-       97,   97,   97,   97,   97,  720,  552,  720,  720,   97,
-      554,   97,  720,   97,   97,   97,  720,   97,  720,  720,
-      720,   97,   97,   97,   97,   97,   97,   97,   97,  720,
-       97,  720,  720,   97,  564,   97,  565,   97,  720,   97,
+      540,   97,   97,   97,   97,  708,  708,  708,  708,   97,
+      708,   97,   97,   97,  708,   97,  542,  708,  537,  708,
+       97,  708,   97,   97,   97,  708,   97,  708,  708,   97,
+      708,   97,  708,   97,  708,   97,  708,   97,  708,   97,
+      708,   97,   97,   97,   97,  708,  708,  544,   97,  708,
+       97,  708,  708,  545,   97,  708,   97,  708,   97,  708,
+       97,  708,   97,   97,   97,   97,  708,  708,  547,   97,
+      549,   97,  708,  708,  708,   97,  708,   97,  708,   97,
+      708,   97,   97,   97,   97,   97,  708,  708,  708,  558,
+       97,  708,   97,  708,   97,  708,   97,   97,  559,  708,
 
-      720,   97,  720,   97,  720,   97,   97,   97,  720,   97,
-      720,   97,  720,   97,   97,   97,  720,   97,  720,  567,
-      720,   97,   97,   97,   97,   97,  720,  569,  720,  568,
-       97,  720,   97,  720,   97,   97,   97,  720,   97,  720,
-      720,  572,   97,   97,  570,   97,   97,   97,  571,   97,
-       97,   97,  720,   97,   97,  720,   97,  720,  720,  720,
-       97,  720,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,  720,  573,   97,  720,   97,  720,  720,
-      720,   97,  720,   97,  574,   97,  720,   97,   97,   97,
-       97,   97,  720,  720,   97,  720,   97,  579,   97,  720,
+      708,   97,  708,   97,  708,  708,  708,   97,  708,   97,
+      708,   97,  708,   97,   97,   97,   97,   97,  708,  561,
+      708,  708,   97,  708,   97,  708,   97,   97,   97,  708,
+      563,  708,  562,   97,  708,   97,  708,   97,   97,   97,
+      708,   97,  708,  708,  566,   97,   97,  564,   97,   97,
+       97,  565,   97,   97,   97,  708,   97,   97,  708,   97,
+      708,  708,  708,   97,  708,   97,   97,   97,   97,   97,
+       97,   97,   97,   97,   97,   97,  708,  567,   97,  708,
+       97,  708,  708,  708,   97,  708,   97,  568,   97,  708,
+       97,   97,   97,   97,   97,  708,  708,   97,  708,   97,
 
-       97,  720,   97,  720,   97,   97,   97,   97,   97,  720,
-      720,   97,  720,   97,  720,   97,  720,   97,  720,   97,
-      720,   97,   97,   97,   97,   97,  720,  720,   97,  720,
-       97,  720,   97,  720,   97,  580,   97,  720,   97,   97,
-       97,   97,   97,  720,  720,  720,  720,   97,  720,   97,
-       97,   97,  720,   97,  583,  720,   97,  581,   97,  720,
-       97,  720,   97,  588,   97,  720,   97,   97,   97,   97,
-       97,  720,  720,  720,  586,   97,  720,   97,   97,   97,
-      720,   97,  720,  720,   97,  720,   97,  720,   97,  720,
-       97,  720,   97,  720,   97,   97,   97,   97,   97,  720,
+      573,   97,  708,   97,  708,   97,  708,   97,   97,   97,
+       97,   97,  708,  708,   97,  708,   97,  708,   97,  708,
+       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
+      708,   97,  708,   97,  708,   97,  708,   97,  574,   97,
+      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
+       97,  708,   97,   97,   97,  708,   97,  577,  708,   97,
+      575,   97,  708,   97,  708,   97,  582,   97,  708,   97,
+       97,   97,   97,   97,  708,  708,  708,  580,   97,  708,
+       97,   97,   97,  708,   97,  708,  708,   97,  708,   97,
+      708,   97,  708,   97,  708,   97,  708,   97,   97,   97,
 
-      720,   97,  720,   97,  720,   97,  720,  590,  720,   97,
-      720,  592,   97,   97,   97,   97,  720,  720,  720,  720,
-       97,  720,   97,   97,   97,  720,   97,  720,  720,  601,
-      720,   97,  720,   97,   97,   97,  602,   97,  720,  720,
-       97,  720,   97,  720,   97,  720,   97,  720,   97,  720,
-       97,   97,   97,   97,   97,  720,  720,  720,  720,   97,
-      720,   97,   97,   97,  604,   97,  720,  720,  603,  720,
-       97,  720,   97,   97,   97,  720,   97,  720,  605,   97,
-      720,   97,  720,   97,  720,   97,  720,   97,  720,   97,
-      720,  606,   97,   97,   97,  607,  720,   97,   97,  608,
+       97,   97,  708,  708,   97,  708,   97,  708,   97,  708,
+      584,  708,   97,  708,  586,   97,   97,   97,   97,  708,
+      708,   97,  708,   97,  708,   97,  708,   97,  595,   97,
+      708,   97,   97,   97,   97,   97,  708,  708,   97,  708,
+       97,  708,   97,  708,   97,  708,   97,  708,   97,  708,
+       97,   97,   97,   97,   97,  596,  597,   97,  598,  708,
+      708,  708,  708,   97,   97,   97,   97,   97,   97,   97,
+       97,  600,   97,   97,  708,  708,  708,  708,  708,   97,
+       97,  599,   97,   97,   97,   97,   97,  601,   97,   97,
+      708,  708,  708,  708,  708,   97,  602,   97,   97,   97,
 
-       97,  720,  720,  720,   97,  720,   97,   97,   97,   97,
-      609,   97,   97,   97,   97,   97,   97,  720,  720,   97,
-      720,  720,  720,   97,  720,   97,  720,   97,  720,   97,
-      720,  613,  720,   97,   97,   97,  614,   97,   97,   97,
-      720,  720,   97,  720,  720,  615,  617,  720,   97,   97,
-       97,   97,   97,   97,   97,  720,  720,   97,   97,  720,
-      720,  720,   97,  720,   97,  720,  620,  720,   97,  720,
-       97,  720,   97,   97,   97,  622,   97,  720,  720,  720,
-       97,   97,   97,   97,   97,  720,  720,  720,  623,   97,
-      720,  720,  720,   97,  720,   97,  720,   97,  598,  598,
+       97,   97,  708,  708,   97,   97,  708,  708,  708,   97,
+      708,   97,  708,   97,  708,   97,  708,  606,  708,   97,
+       97,   97,  607,   97,   97,   97,  708,  708,   97,  708,
+      708,  608,  610,  708,   97,   97,   97,   97,   97,   97,
+       97,  708,  708,   97,   97,  708,  708,  708,   97,  708,
+       97,  708,  613,  708,   97,  708,   97,  708,   97,   97,
+       97,  615,   97,  708,  708,  708,   97,   97,   97,   97,
+       97,  708,  708,  708,  616,   97,  708,  708,  708,   97,
+      708,   97,  708,   97,  592,  592,  592,  708,   97,  708,
+      708,  708,  708,   97,   97,  708,  623,  623,  623,  623,
 
-      598,  720,   97,  720,  720,  720,  720,   97,   97,  720,
-      630,  630,  630,  630,  630,  630,  630,   97,   97,   97,
-      634,   97,   97,   97,   97,  720,   97,   97,  720,  720,
-      633,  720,  720,   97,   97,   97,   97,   97,   97,   97,
-       97,  720,   97,   97,  720,  720,  720,  720,  720,   97,
-       97,   97,   97,   97,   97,   97,  720,  635,   97,   97,
-      720,   97,  720,  720,  720,   97,  720,   97,  636,   97,
-      720,   97,   97,   97,   97,   97,  720,  720,   97,  637,
-       97,  720,   97,  720,   97,  720,   97,  720,   97,   97,
-       97,   97,   97,  720,  720,  720,  720,   97,  720,   97,
+      623,  623,  623,   97,   97,  626,   97,   97,   97,   97,
+       97,  708,   97,   97,  708,  708,  708,  708,  708,   97,
+       97,   97,   97,   97,   97,   97,  708,  708,   97,   97,
+      708,  708,  708,   97,  708,   97,  708,   97,  708,   97,
+      708,   97,  627,   97,   97,   97,  628,   97,  708,   97,
+      708,   97,   97,   97,  708,   97,  629,   97,  708,   97,
+       97,   97,  708,   97,  708,   97,  708,   97,   97,   97,
+      708,   97,  708,   97,  708,   97,   97,  633,  708,   97,
+      708,   97,  708,   97,   97,   97,  634,   97,  708,   97,
+      708,   97,   97,  636,  708,   97,  639,   97,  708,   97,
 
-       97,  641,  720,   97,  720,  720,   97,  720,   97,  720,
-       97,  720,   97,  642,   97,  720,   97,   97,  644,   97,
-       97,  720,  720,   97,  647,   97,  720,   97,  720,   97,
-      649,   97,  720,   97,   97,   97,   97,   97,  720,  720,
-      720,  650,   97,  720,   97,  720,   97,  720,   97,  720,
-      720,   97,   97,   97,  630,  630,  630,  630,  630,  630,
-      630,   97,   97,  659,   97,   97,   97,   97,   97,  720,
-       97,   97,  720,  720,  720,  720,  720,   97,   97,   97,
-      660,   97,   97,   97,  720,  720,   97,   97,  720,  720,
-      720,  720,  656,   97,   97,   97,  720,   97,  720,  720,
+       97,   97,  708,   97,  641,   97,  708,   97,   97,   97,
+      708,   97,  642,  708,  708,   97,   97,   97,  708,   97,
+      708,  708,   97,   97,   97,  623,  623,  623,  623,  623,
+      623,  623,   97,   97,   97,   97,   97,   97,   97,  708,
+      708,   97,   97,  708,  708,  708,   97,  708,   97,  708,
+      651,  708,   97,  708,  708,  708,   97,   97,   97,   97,
+       97,  708,  708,  648,  652,   97,  708,   97,  708,   97,
+      708,   97,  708,   97,  708,   97,  656,   97,   97,  657,
+      708,   97,  659,   97,  708,   97,   97,   97,  708,   97,
+      708,  708,  708,   97,   97,   97,   97,   97,  664,   97,
 
-       97,  661,   97,  720,   97,  720,   97,  720,   97,  720,
-       97,  665,  666,   97,   97,   97,  720,  720,   97,   97,
-      720,   97,  668,  673,  720,   97,  720,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,  671,   97,   97,  720,
-       97,  720,  674,  720,  720,  720,  720,  720,   97,  720,
-       97,  720,   97,  657,  657,  657,  720,   97,  720,  720,
-      720,  720,   97,  720,  720,  630,  630,  630,  630,  630,
-      630,  630,   97,   97,   97,  720,   97,  720,  720,  720,
-      681,   97,  720,   97,   97,   97,  720,   97,  720,  720,
-       97,  682,   97,  720,   97,  720,   97,  720,   97,  720,
+      708,  662,   97,  665,  708,  708,   97,  708,   97,   97,
+       97,   97,  708,   97,  708,   97,  708,  708,   97,  649,
+      649,  649,  708,  708,  708,  708,  708,  708,   97,   97,
+      708,  623,  623,  623,  623,  623,  623,  623,   97,   97,
+       97,   97,   97,   97,   97,   97,  672,   97,   97,  708,
+      708,  708,  673,  708,   97,   97,   97,   97,   97,   97,
+       97,   97,  708,   97,   97,  708,  708,  708,  708,  708,
+       97,   97,   97,   97,   97,   97,   97,  708,  677,   97,
+       97,  708,   97,  708,  680,  708,   97,  708,   97,  682,
+       97,  708,   97,   97,   97,   97,   97,  708,  708,  708,
 
-       97,   97,   97,   97,   97,  720,  720,  683,  720,   97,
-      720,   97,   97,   97,  720,   97,  720,  720,  720,  720,
-       97,  720,   97,   97,   97,  720,   97,  720,  720,   97,
-      687,   97,  720,   97,  720,   97,  720,   97,  720,   97,
-       97,   97,   97,   97,  720,  720,  690,  692,   97,  720,
-       97,  720,   97,   97,   97,  699,   97,  720,  720,   97,
-      720,  720,  720,   97,   97,   97,   97,   97,   97,  700,
-       97,  720,   97,  720,   97,   97,   97,   97,   97,  720,
-       97,  720,  720,   97,  720,  720,  720,   97,  720,   97,
-       97,   97,   97,  720,   97,   97,   97,  720,  705,   97,
+      708,   97,  708,   97,   97,   97,  708,   97,  708,  689,
+       97,  708,   97,  708,   97,  708,   97,  708,   97,  708,
+       97,  708,   97,   97,   97,   97,  708,  708,   97,   97,
+      708,  694,  708,  691,  708,   97,  708,   97,   97,   97,
+       97,  708,   97,  708,   97,  708,  708,   97,  687,  687,
+      687,  708,  708,  708,  708,  708,  708,   97,  708,  708,
+      623,  623,  623,  623,  623,  623,  623,   97,   97,   97,
+      698,   97,  708,  708,   97,  708,   97,  708,   97,  708,
+       97,  708,   97,  708,   97,   97,   97,   97,   97,  708,
+      702,   97,  708,   97,  708,  705,  708,   97,  708,   97,
 
-      702,  720,  720,  720,  720,   97,  720,   97,  720,   97,
-      697,  697,  697,  720,   97,  720,  720,  720,  720,   97,
-      720,  720,  630,  630,  630,  630,  630,  630,  630,   97,
-       97,   97,  720,   97,  720,  720,   97,  720,   97,  720,
-       97,  709,   97,  710,   97,  720,   97,   97,   97,   97,
-       97,  720,  720,  720,  720,   97,  720,   97,   97,   97,
-      720,   97,  720,  714,   97,  720,   97,  720,   97,  720,
-       97,  720,   97,  720,  717,   97,   97,   97,   97,  720,
-      720,   97,  720,   97,  720,   97,  720,   97,  720,   97,
-      720,   97,  720,   97,   97,   97,  720,  720,  720,  720,
-
-       97,   54,   54,   54,   54,   54,   54,   54,   54,   54,
-       54,   54,   54,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   65,   65,   65,
-       65,   65,   65,   65,   65,   65,   65,   65,   65,   74,
+      708,   97,   97,   97,   97,   97,  708,  708,  708,  708,
+       97,  708,   97,  708,   97,  708,   97,  708,  708,  708,
+      708,   97,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   62,   62,   62,   62,
+       62,   62,   62,   62,   62,   62,   62,   62,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
-       74,   76,   76,   76,   76,   76,   76,   76,   76,   76,
-       76,   76,   76,   83,   83,   83,  720,   83,   83,   83,
-       83,   83,   83,   83,   83,   90,   90,  720,  720,   90,
-      720,   90,  156,  720,  156,  159,  159,  720,  159,  159,
+       74,   74,   76,   76,   76,   76,   76,   76,   76,   76,
+       76,   76,   76,   76,   83,   83,   83,  708,   83,   83,
 
-      160,  160,  720,  160,  160,  160,  720,  160,  160,  160,
-      160,  160,  163,  163,  163,  720,  163,  163,  163,  163,
-      163,  163,  163,  163,  165,  165,  165,  165,  165,  165,
-      165,  165,  720,  165,  165,  167,  720,  720,  167,  167,
-      167,  167,  167,  167,  167,  167,  168,  720,  720,  168,
-      168,  168,  168,  168,  168,  168,  168,  170,  720,  720,
-      170,  720,  170,  170,  170,  170,  170,  170,  174,  174,
-      720,  174,  174,  175,  175,  720,  175,  175,  103,  103,
-      720,  103,  103,   15,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
+       83,   83,   83,   83,   83,   83,   90,   90,  708,  708,
+       90,  708,   90,  156,  708,  156,  159,  159,  708,  159,
+      159,  160,  160,  708,  160,  160,  160,  708,  160,  160,
+      160,  160,  160,  163,  163,  163,  708,  163,  163,  163,
+      163,  163,  163,  163,  163,  165,  165,  165,  165,  165,
+      165,  165,  165,  708,  165,  165,  167,  708,  708,  167,
+      167,  167,  167,  167,  167,  167,  167,  168,  708,  708,
+      168,  168,  168,  168,  168,  168,  168,  168,  170,  708,
+      708,  170,  708,  170,  170,  170,  170,  170,  170,  174,
+      174,  708,  174,  174,  175,  175,  708,  175,  175,  103,
 
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720
+      103,  708,  103,  103,   15,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708
     } ;
 
-static yyconst short int yy_chk[4563] =
+static yyconst short int yy_chk[4484] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1282,83 +1267,83 @@
        22,   22,   24,   24,   24,   24,   24,   24,   28,   28,
        28,   28,   28,   28,   28,   34,  253,  253,   34,   77,
        77,   77,   78,   78,   78,   34,   87,   34,    9,   34,
-        9,   82,   82,   82,   34,  158,  480,  158,   10,  716,
+        9,   82,   82,   82,   34,  158,  476,  158,   10,  704,
        10,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   13,  480,   13,   87,   38,   79,
-      326,   11,   11,   11,   11,   14,  326,   14,   38,   11,
+       11,   11,   11,   11,   13,  476,   13,   87,   38,   79,
+      325,   11,   11,   11,   11,   14,  325,   14,   38,   11,
 
-       38,   32,   38,   79,   32,  325,  712,   38,   32,  325,
-      250,   32,   32,   32,   32,   32,   41,  250,  708,   33,
-       32,   11,   11,   11,   32,   33,   41,  328,   41,   33,
-       41,   33,   33,   33,   79,   41,  706,  328,   33,   92,
+       38,   32,   38,   79,   32,  324,  700,   38,   32,  324,
+      250,   32,   32,   32,   32,   32,   41,  250,  697,   33,
+       32,   11,   11,   11,   32,   33,   41,  327,   41,   33,
+       41,   33,   33,   33,   79,   41,  695,  327,   33,   92,
        92,   92,   92,   92,   92,   92,   11,   11,   11,   12,
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   41,  395,   35,  171,  171,  171,  395,   12,
-       12,   12,   12,  704,   35,   35,   35,   12,   35,  169,
-      169,  327,  251,   35,   42,   42,   35,  327,   42,  251,
-      169,   36,   36,  703,   42,   48,   42,  456,   42,   12,
+       12,   12,   41,  393,   35,  171,  171,  171,  393,   12,
+       12,   12,   12,  693,   35,   35,   35,   12,   35,  169,
+      169,  326,  251,   35,   42,   42,   35,  326,   42,  251,
+      169,   36,   36,  692,   42,   48,   42,  453,   42,   12,
 
        12,   12,   36,   42,   36,   48,   36,   48,   36,   48,
-      456,   36,  392,   42,   48,  701,  516,   39,   39,  392,
-       39,  393,  394,  516,   12,   12,   12,   21,   39,   39,
-       39,   48,   39,  394,  457,   39,  393,   39,  457,  559,
-      458,   21,  458,  559,   21,   21,   21,   21,   21,   21,
+      453,   36,  390,   42,   48,  690,  512,   39,   39,  390,
+       39,  391,  392,  512,   12,   12,   12,   21,   39,   39,
+       39,   48,   39,  392,  454,   39,  391,   39,  454,  554,
+      455,   21,  455,  554,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-      562,  698,   21,   21,   21,   21,   21,   21,   21,   21,
+      557,  688,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   31,  514,  562,   31,   31,
+       21,   21,   21,   21,   21,   31,  510,  557,   31,   31,
 
-       31,   31,   31,   31,   31,  515,  695,  514,  515,   31,
+       31,   31,   31,   31,   31,  511,  685,  510,  511,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,  629,  629,  694,   31,   31,
+       31,   31,   31,   31,   31,  622,  622,  684,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       37,  655,  513,  655,  691,   40,   40,  560,  560,  560,
-       37,  561,   37,   40,   37,  597,   40,  513,   40,   37,
-       40,  689,  597,  685,  680,   40,  561,   43,   43,  599,
-       43,  678,   37,  599,  677,  676,   44,  675,   43,   44,
+       37,  647,  509,  647,  681,   40,   40,  555,  555,  555,
+       37,  556,   37,   40,   37,  591,   40,  509,   40,   37,
+       40,  679,  591,  675,  671,   40,  556,   43,   43,  593,
+       43,  669,   37,  593,  668,  667,   44,  666,   43,   44,
 
-       43,  672,   43,   37,   43,  560,   44,   43,   44,   45,
-       44,  670,   45,  669,  664,   44,   45,  663,   46,   45,
-      662,   45,  658,   45,   46,   46,  654,   45,   45,  653,
-      652,   43,   45,   47,  651,   46,  648,   46,  646,   46,
-      645,   46,  643,   47,   46,   47,   49,   47,   46,  640,
-      639,   47,   47,   49,  638,  632,   49,   46,   49,  628,
-       49,  631,  631,  631,  627,   49,   50,   50,   50,   50,
-       50,   50,   50,   47,   89,   89,   89,   50,  626,  624,
-       89,   97,  621,  619,  618,  616,   89,   89,  612,  611,
-      610,   97,   50,   97,  600,   97,  596,   50,   74,  631,
+       43,  663,   43,   37,   43,  555,   44,   43,   44,   45,
+       44,  661,   45,  660,  655,   44,   45,  654,   46,   45,
+      653,   45,  650,   45,   46,   46,  646,   45,   45,  645,
+      644,   43,   45,   47,  643,   46,  640,   46,  638,   46,
+      637,   46,  635,   47,   46,   47,   49,   47,   46,  632,
+      631,   47,   47,   49,  630,  625,   49,   46,   49,  621,
+       49,  624,  624,  624,  620,   49,   50,   50,   50,   50,
+       50,   50,   50,   47,   89,   89,   89,   50,  619,  617,
+       89,   97,  614,  612,  611,  609,   89,   89,  605,  604,
+      603,   97,   50,   97,  594,   97,  590,   50,   74,  624,
 
-       97,  595,   74,   74,   74,   74,   74,   74,   74,   74,
+       97,  589,   74,   74,   74,   74,   74,   74,   74,   74,
        74,   95,   95,   95,   95,   95,   95,   95,   74,   74,
        74,   74,   98,   99,  178,  178,  178,  178,  178,  178,
-      178,  594,   98,   99,   98,   99,   98,   99,  593,   98,
-      591,   98,   99,  100,  101,  587,  585,  584,   74,   74,
-       74,  582,  577,  100,  101,  100,  101,  100,  101,  102,
-      576,  575,  100,  101,  558,  557,  100,  556,  555,  102,
-      553,  102,  551,  102,   74,   75,  548,  102,  102,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,  546,  104,
-      544,  542,  105,  535,  104,   75,   75,   75,   75,  104,
+      178,  588,   98,   99,   98,   99,   98,   99,  587,   98,
+      585,   98,   99,  100,  101,  581,  579,  578,   74,   74,
+       74,  576,  571,  100,  101,  100,  101,  100,  101,  102,
+      570,  569,  100,  101,  553,  552,  100,  551,  550,  102,
+      548,  102,  546,  102,   74,   75,  543,  102,  102,   75,
+       75,   75,   75,   75,   75,   75,   75,   75,  541,  104,
+      539,  537,  105,  530,  104,   75,   75,   75,   75,  104,
 
-      534,  104,  105,  104,  105,  106,  105,  533,  104,  532,
-      105,  105,   75,  520,  512,  106,  511,  106,  107,  106,
-      510,  509,  506,  504,  106,   75,   75,   75,  107,  108,
-      107,  107,  107,  679,  679,  679,  501,  107,  496,  108,
-      494,  108,  482,  108,  109,  109,  481,  463,  108,  459,
-      455,   75,  110,  110,  454,  109,  453,  109,  109,  109,
-      452,  451,  448,  110,  109,  110,  111,  110,  446,  112,
-      441,  679,  110,  112,  436,  433,  111,  111,  111,  112,
-      111,  112,  113,  112,  421,  111,  420,  419,  112,  400,
-      390,  389,  113,  388,  113,  386,  113,  114,  114,  114,
+      529,  104,  105,  104,  105,  106,  105,  528,  104,  527,
+      105,  105,   75,  515,  508,  106,  507,  106,  107,  106,
+      506,  505,  502,  500,  106,   75,   75,   75,  107,  108,
+      107,  107,  107,  670,  670,  670,  497,  107,  492,  108,
+      490,  108,  478,  108,  109,  109,  477,  459,  108,  456,
+      452,   75,  110,  110,  451,  109,  450,  109,  109,  109,
+      449,  448,  445,  110,  109,  110,  111,  110,  443,  112,
+      438,  670,  110,  112,  433,  430,  111,  111,  111,  112,
+      111,  112,  113,  112,  418,  111,  417,  416,  112,  397,
+      388,  387,  113,  386,  113,  384,  113,  114,  114,  114,
 
-      116,  113,  382,  115,  115,  380,  375,  114,  370,  114,
+      116,  113,  380,  115,  115,  378,  373,  114,  368,  114,
       116,  114,  116,  115,  116,  115,  114,  115,  117,  116,
-      366,  115,  115,  355,  354,  120,  353,  334,  117,  322,
-      117,  117,  117,  120,  321,  320,  121,  117,  314,  121,
-      303,  298,  294,  120,  122,  120,  121,  120,  121,  283,
-      121,  282,  120,  255,  122,  121,  122,  254,  122,  123,
+      364,  115,  115,  353,  352,  120,  351,  332,  117,  321,
+      117,  117,  117,  120,  320,  319,  121,  117,  313,  121,
+      302,  297,  293,  120,  122,  120,  121,  120,  121,  282,
+      121,  281,  120,  255,  122,  121,  122,  254,  122,  123,
       123,  249,  245,  122,  244,  243,  239,  227,  221,  123,
       124,  123,  217,  123,  206,  205,  123,  123,  123,  177,
       124,  125,  124,  124,  124,  173,  168,  126,  166,  124,
@@ -1388,407 +1373,397 @@
 
       153,    0,  153,  155,  155,  155,  153,  153,  154,  154,
       154,  154,  154,  154,  154,  155,  155,  155,  155,  155,
-      155,  155,    0,    0,  181,  182,    0,  181,    0,    0,
-        0,    0,    0,    0,  181,  182,  181,  182,  181,  182,
-      183,  155,  181,  181,  182,    0,  154,    0,  184,    0,
-      183,  185,  183,    0,  183,    0,    0,    0,  184,  183,
-      184,  185,  184,  185,  185,  185,  186,  184,    0,  187,
-      185,    0,  188,  186,    0,    0,  186,    0,  186,  187,
-      186,  187,  188,  187,  188,  186,  188,  189,  187,  188,
-        0,  188,    0,  190,    0,    0,    0,  189,    0,  189,
+      155,  155,    0,  181,  182,    0,  181,    0,    0,    0,
+        0,    0,    0,  181,  182,  181,  182,  181,  182,  183,
+      184,  155,  181,  182,    0,    0,  154,    0,    0,  183,
+      184,  183,  184,  183,  184,  185,    0,    0,  183,  184,
+        0,    0,    0,  186,    0,  185,  187,  185,  185,  185,
+      186,    0,    0,  186,  185,  186,  187,  186,  187,  188,
+      187,    0,  186,    0,    0,  187,    0,  189,    0,  188,
+        0,  188,    0,  188,    0,  190,  188,  189,  188,  189,
 
-        0,  189,    0,  190,  191,  190,  189,  190,    0,  190,
-      192,  191,  190,    0,  191,    0,  191,    0,  191,    0,
-      192,  193,  192,  191,  192,    0,    0,  192,    0,  192,
-        0,  193,  194,  193,    0,  193,    0,    0,    0,    0,
-      193,    0,  194,    0,  194,    0,  194,  195,  195,  194,
-      194,  194,    0,    0,  196,  195,    0,  196,  195,    0,
-      195,    0,  195,    0,  196,  197,  196,  195,  196,    0,
-        0,  198,    0,  196,    0,  197,    0,  197,  197,  197,
-        0,  198,  199,  198,  197,  198,    0,    0,  200,    0,
-      198,  200,  199,  199,  199,    0,  199,    0,  200,  201,
+        0,  189,    0,  191,    0,  190,  189,  190,    0,  190,
+      191,  190,    0,  191,  190,  191,  192,  191,    0,    0,
+        0,    0,  191,    0,  193,    0,  192,  194,  192,    0,
+      192,    0,    0,  192,  193,  192,  193,  194,  193,  194,
+        0,  194,    0,  193,  194,  194,  194,  195,  195,  196,
+        0,    0,  196,    0,    0,  195,    0,    0,  195,  196,
+      195,  196,  195,  196,  197,    0,    0,  195,  196,    0,
+      198,    0,    0,    0,  197,    0,  197,  197,  197,    0,
+      198,  199,  198,  197,  198,    0,    0,  200,    0,  198,
+      200,  199,  199,  199,    0,  199,    0,  200,  201,  200,
 
-      200,  199,  200,    0,    0,  202,    0,  200,  202,  201,
-        0,  201,  201,  201,    0,  202,  203,  202,  201,  202,
-        0,    0,    0,    0,  202,    0,  203,  204,  203,    0,
-      203,    0,    0,  203,    0,  203,    0,  204,  204,  204,
-      207,  204,    0,    0,    0,    0,  204,    0,  208,    0,
-      207,  209,  207,    0,  207,    0,    0,  207,  208,  207,
-      208,  209,  208,  209,  209,  209,  210,  208,    0,  211,
-      209,    0,  212,    0,    0,  212,  210,    0,  210,  211,
-      210,  211,  212,  211,  212,  210,  212,  211,  211,  213,
-      214,  212,    0,  215,    0,    0,  213,    0,    0,    0,
+      199,  200,    0,    0,  202,    0,  200,  202,  201,    0,
+      201,  201,  201,    0,  202,  203,  202,  201,  202,    0,
+        0,    0,    0,  202,    0,  203,  204,  203,    0,  203,
+        0,    0,  203,    0,  203,    0,  204,  204,  204,  207,
+      204,    0,    0,    0,    0,  204,    0,  208,    0,  207,
+      209,  207,    0,  207,    0,    0,  207,  208,  207,  208,
+      209,  208,  209,  209,  209,  210,  208,    0,  211,  209,
+        0,  212,    0,    0,  212,  210,    0,  210,  211,  210,
+      211,  212,  211,  212,  210,  212,  211,  211,  213,  214,
+      212,    0,  215,    0,    0,  213,    0,    0,    0,  214,
 
-      214,    0,  214,  215,  214,  215,  213,  215,  213,  214,
-      213,  216,  215,    0,  218,  213,    0,  218,    0,    0,
-        0,  216,    0,  216,  218,  216,  218,    0,  218,  219,
-      216,    0,  219,  218,    0,  220,    0,    0,    0,  219,
-        0,  219,  220,  219,    0,  220,  222,  220,  219,  220,
-        0,    0,    0,    0,  220,    0,  222,  223,  222,    0,
-      222,    0,    0,  224,  222,  222,    0,  223,    0,  223,
-        0,  223,    0,  224,  225,  224,  223,  224,    0,    0,
-      224,    0,  224,    0,  225,  226,  225,    0,  225,    0,
-        0,  225,    0,  225,    0,  226,  228,  226,    0,  226,
+        0,  214,  215,  214,  215,  213,  215,  213,  214,  213,
+      216,  215,    0,  218,  213,    0,  218,    0,    0,    0,
+      216,    0,  216,  218,  216,  218,    0,  218,  219,  216,
+        0,  219,  218,    0,  220,    0,    0,    0,  219,    0,
+      219,  220,  219,    0,  220,  222,  220,  219,  220,    0,
+        0,    0,    0,  220,    0,  222,  223,  222,    0,  222,
+        0,    0,  224,  222,  222,    0,  223,    0,  223,    0,
+      223,    0,  224,  225,  224,  223,  224,    0,    0,  224,
+        0,  224,    0,  225,  226,  225,    0,  225,    0,    0,
+      225,    0,  225,    0,  226,  228,  226,    0,  226,    0,
 
-        0,  229,  229,    0,  226,  226,  228,    0,  228,    0,
-      228,    0,  229,  230,  229,  228,  229,    0,    0,  231,
-        0,  229,    0,  230,    0,  230,    0,  230,    0,  231,
-        0,  231,  230,  231,  232,  233,    0,  232,  231,    0,
-        0,    0,  233,    0,  232,  233,  232,  233,  232,  233,
-      234,    0,    0,  232,  233,    0,    0,    0,    0,    0,
-      234,  235,  234,    0,  234,    0,    0,  236,  234,  234,
-        0,  235,    0,  235,    0,  235,    0,  236,  235,  236,
-      235,  236,  237,    0,  236,  237,  236,    0,  238,    0,
-        0,  238,  237,    0,  237,    0,  237,    0,  238,  240,
+      229,  229,    0,  226,  226,  228,    0,  228,    0,  228,
+        0,  229,  230,  229,  228,  229,    0,    0,  231,    0,
+      229,    0,  230,    0,  230,    0,  230,    0,  231,    0,
+      231,  230,  231,  232,  233,    0,  232,  231,    0,    0,
+        0,  233,    0,  232,  233,  232,  233,  232,  233,  234,
+        0,    0,  232,  233,    0,    0,    0,    0,    0,  234,
+      235,  234,    0,  234,    0,    0,  236,  234,  234,    0,
+      235,    0,  235,    0,  235,    0,  236,  235,  236,  235,
+      236,  237,    0,  236,  237,  236,    0,  238,    0,    0,
+      238,  237,    0,  237,    0,  237,    0,  238,  240,  238,
 
-      238,  237,  238,    0,    0,    0,    0,  238,    0,  240,
-      241,  240,  240,  240,  240,  242,    0,    0,  240,  240,
-      241,  242,  241,    0,  241,    0,    0,    0,  241,  241,
-        0,  242,  246,  242,    0,  242,    0,    0,  246,    0,
-      242,    0,  246,    0,  246,    0,  246,  248,  248,  248,
-        0,  246,    0,    0,    0,    0,  258,  259,    0,  248,
-      248,  248,  248,  248,  248,  248,  258,  259,  258,  259,
-      258,  259,  260,  259,    0,  258,  259,    0,  261,  260,
-        0,    0,  260,    0,  260,    0,  260,    0,  261,  261,
-      261,  260,  261,  262,  263,    0,    0,  261,    0,    0,
+      237,  238,    0,    0,    0,    0,  238,    0,  240,  241,
+      240,  240,  240,  240,  242,    0,    0,  240,  240,  241,
+      242,  241,    0,  241,    0,    0,    0,  241,  241,    0,
+      242,  246,  242,    0,  242,    0,    0,  246,    0,  242,
+        0,  246,    0,  246,    0,  246,  248,  248,  248,    0,
+      246,    0,    0,    0,    0,  258,    0,    0,  248,  248,
+      248,  248,  248,  248,  248,  258,  259,  258,    0,  258,
+        0,    0,  260,  259,  258,    0,  259,    0,  259,    0,
+      259,    0,  260,  260,  260,  259,  260,  261,  262,    0,
+        0,  260,    0,    0,    0,    0,    0,  261,  262,  261,
 
-        0,    0,    0,  262,  263,  262,  263,  262,  263,  265,
-      265,  264,  262,  263,  264,    0,    0,    0,    0,    0,
-      265,  264,  265,  264,  265,  264,  266,  266,    0,  265,
-      264,    0,  267,    0,    0,    0,  266,    0,  266,  263,
-      266,    0,  267,  268,  267,  266,  267,    0,    0,  267,
-        0,  267,    0,  268,  269,  268,  268,  268,    0,    0,
-        0,    0,  268,    0,  269,    0,  269,    0,  269,  271,
-      269,  270,  270,  269,    0,  272,    0,    0,    0,  271,
-        0,  271,  270,  271,  270,  272,  270,  272,  271,  272,
-      273,  270,  273,  274,  272,  274,  275,    0,    0,  275,
+      262,  261,  262,  264,  264,  263,  261,  262,  263,    0,
+        0,    0,    0,    0,  264,  263,  264,  263,  264,  263,
+      265,  265,    0,  264,  263,    0,  266,    0,    0,    0,
+      265,    0,  265,  262,  265,    0,  266,  267,  266,  265,
+      266,    0,    0,  266,    0,  266,    0,  267,  268,  267,
+      267,  267,    0,    0,    0,    0,  267,    0,  268,    0,
+      268,    0,  268,  270,  268,  269,  269,  268,    0,  271,
+        0,    0,    0,  270,    0,  270,  269,  270,  269,  271,
+      269,  271,  270,  271,  272,  269,  272,  273,  271,  273,
+      274,    0,    0,  274,  272,    0,  272,  273,  272,  273,
 
-      273,    0,  273,  274,  273,  274,  275,  274,  275,  273,
-      275,  276,  274,    0,    0,  275,    0,  277,    0,    0,
-        0,  276,    0,  276,  277,  276,    0,  277,  278,  277,
-      276,  277,    0,    0,    0,    0,  277,    0,  278,  279,
-      278,    0,  278,    0,  278,    0,    0,  278,    0,  279,
-        0,  279,    0,  279,  280,  279,    0,  280,  279,    0,
-      281,    0,    0,    0,  280,    0,  280,    0,  280,    0,
-      281,  284,  281,  280,  281,    0,    0,  285,    0,  281,
-        0,  284,    0,  284,    0,  284,    0,  285,    0,  285,
-      284,  285,  286,  287,    0,  285,  285,    0,    0,  286,
+      274,  273,  274,  272,  274,  275,  273,    0,    0,  274,
+        0,  276,    0,    0,    0,  275,    0,  275,  276,  275,
+        0,  276,  277,  276,  275,  276,    0,    0,    0,    0,
+      276,    0,  277,  278,  277,    0,  277,    0,  277,    0,
+        0,  277,    0,  278,    0,  278,    0,  278,  279,  278,
+        0,  279,  278,    0,  280,    0,    0,    0,  279,    0,
+      279,    0,  279,    0,  280,  283,  280,  279,  280,    0,
+        0,  284,    0,  280,    0,  283,    0,  283,    0,  283,
+        0,  284,    0,  284,  283,  284,  285,  286,    0,  284,
+      284,    0,    0,  285,    0,    0,  285,  286,  285,  286,
 
-        0,    0,  286,  287,  286,  287,  286,  287,  288,  287,
-        0,  286,  287,  289,  289,    0,  284,    0,  288,    0,
-      288,    0,  288,  291,  289,    0,  289,  288,  289,  290,
-      289,    0,  291,  289,  290,    0,    0,    0,    0,  290,
-      292,  290,  291,  290,  291,  290,  291,    0,  290,    0,
-      292,  291,  292,  293,  292,    0,    0,  292,    0,  292,
-        0,  295,  295,  293,  296,  293,    0,  293,    0,    0,
-        0,  295,  293,  295,  296,  295,  296,  297,  296,    0,
-      295,    0,  296,  296,    0,  299,  300,  297,  299,  297,
-      297,  297,    0,    0,    0,  299,  297,  299,    0,  299,
+      285,  286,  287,  286,    0,  285,  286,  288,  288,    0,
+      283,    0,  287,    0,  287,    0,  287,  290,  288,    0,
+      288,  287,  288,  289,  288,    0,  290,  288,  289,    0,
+        0,    0,    0,  289,  291,  289,  290,  289,  290,  289,
+      290,    0,  289,    0,  291,  290,  291,  292,  291,    0,
+        0,  291,    0,  291,    0,  294,  294,  292,  295,  292,
+        0,  292,    0,    0,    0,  294,  292,  294,  295,  294,
+      295,  296,  295,    0,  294,    0,  295,  295,    0,  298,
+      299,  296,  298,  296,  296,  296,    0,    0,    0,  298,
+      296,  298,    0,  298,  300,  299,    0,  300,  298,    0,
 
-      301,  300,    0,  301,  299,    0,    0,    0,    0,    0,
-      301,  300,  301,  300,  301,  300,  302,  302,  304,  301,
-      300,    0,    0,    0,    0,    0,    0,  302,  304,  302,
-      304,  302,  304,  305,    0,    0,  302,  304,    0,    0,
-        0,    0,    0,  305,    0,  305,  306,  305,    0,  306,
-        0,  305,  305,    0,  307,    0,  306,  308,  306,    0,
-      306,    0,    0,    0,  307,  306,  307,  308,  307,  308,
-        0,  308,  310,  307,  309,  309,  308,    0,  311,    0,
-        0,  313,  310,    0,  310,  309,  310,  309,  311,  309,
-      311,  310,  311,  312,  309,    0,  313,  311,    0,  315,
+        0,    0,    0,    0,  300,  299,  300,  299,  300,  299,
+      301,  301,  303,  300,  299,    0,    0,    0,    0,    0,
+        0,  301,  303,  301,  303,  301,  303,  304,    0,    0,
+      301,  303,    0,    0,    0,    0,    0,  304,    0,  304,
+      305,  304,    0,  305,    0,  304,  304,    0,  306,    0,
+      305,  307,  305,    0,  305,    0,    0,    0,  306,  305,
+      306,  307,  306,  307,    0,  307,  309,  306,  308,  308,
+      307,    0,  310,    0,    0,  312,  309,    0,  309,  308,
+      309,  308,  310,  308,  310,  309,  310,  311,  308,    0,
+      312,  310,    0,  314,    0,    0,    0,  311,    0,  311,
 
-        0,    0,    0,  312,    0,  312,  313,  312,  313,  315,
-      313,  315,  312,  315,  316,  313,    0,  310,  315,    0,
-      317,    0,    0,  317,  316,    0,  316,    0,  316,    0,
-      317,  318,  317,  316,  317,    0,    0,  319,    0,  317,
-        0,  318,    0,  318,    0,  318,    0,  319,    0,  319,
-      318,  319,  323,    0,  319,    0,  319,    0,    0,    0,
-        0,    0,  323,    0,  323,    0,  323,  318,    0,  329,
-        0,  323,  324,  324,  324,  324,  324,  324,  324,  329,
-        0,  329,    0,  329,  330,  330,    0,  329,  329,    0,
-        0,    0,    0,  331,  331,  330,    0,  330,    0,  330,
+      312,  311,  312,  314,  312,  314,  311,  314,  315,  312,
+        0,  309,  314,    0,  316,    0,    0,  316,  315,    0,
+      315,    0,  315,    0,  316,  317,  316,  315,  316,    0,
+        0,  318,    0,  316,    0,  317,    0,  317,    0,  317,
+        0,  318,    0,  318,  317,  318,  322,    0,  318,    0,
+      318,    0,    0,    0,    0,    0,  322,    0,  322,    0,
+      322,  317,    0,  328,    0,  322,  323,  323,  323,  323,
+      323,  323,  323,  328,    0,  328,    0,  328,  329,  329,
+        0,  328,  328,  330,  330,    0,    0,    0,  329,    0,
+      329,    0,  329,    0,  330,  331,  330,  329,  330,    0,
 
-      332,  332,    0,  331,  330,  331,    0,  331,    0,  333,
-      324,  332,  331,  332,    0,  332,  335,  335,    0,  333,
-      332,  333,    0,  333,    0,  336,  336,  335,  333,  335,
-        0,  335,    0,    0,    0,  336,  335,  336,  337,  336,
-        0,  337,    0,    0,  336,    0,  338,    0,  337,  339,
-      337,    0,  337,    0,    0,    0,  338,  337,  338,  339,
-      338,  339,    0,  339,  341,  338,  340,  340,  339,    0,
-      342,  341,    0,    0,  341,    0,  341,  340,  341,  340,
-      342,  340,  342,  341,  342,  343,  340,    0,  343,  342,
-        0,  344,  343,  344,    0,  343,    0,  343,    0,  343,
+      333,  333,    0,  330,  323,  331,    0,  331,    0,  331,
+        0,  333,    0,  333,  331,  333,  334,  334,    0,  335,
+      333,    0,  335,    0,    0,    0,  334,  336,  334,  335,
+      334,  335,    0,  335,    0,  334,    0,  336,  335,  336,
+      337,  336,  338,  338,    0,    0,  336,    0,    0,    0,
+      337,  339,  337,  338,  337,  338,    0,  338,  339,  337,
+        0,  339,  338,  339,  340,  339,    0,    0,    0,    0,
+      339,    0,  341,    0,  340,  341,  340,    0,  340,  341,
+        0,    0,  341,  340,  341,  342,  341,  342,    0,    0,
+        0,  341,    0,  343,    0,  342,  343,  342,    0,  342,
 
-        0,  344,    0,  344,  343,  344,  345,  346,    0,  345,
-      344,    0,    0,  345,    0,    0,  345,  346,  345,  346,
-      345,  346,  347,  346,    0,  345,  346,    0,    0,    0,
-        0,    0,  347,    0,  347,    0,  347,  348,  348,    0,
-      347,  347,    0,  349,    0,    0,    0,  348,    0,  348,
-        0,  348,    0,  349,  350,  349,  348,  349,    0,    0,
-      351,  349,  349,    0,  350,    0,  350,    0,  350,    0,
-      351,  350,  351,  350,  351,  352,  356,    0,    0,  351,
-        0,    0,    0,  356,    0,  352,  356,  352,  356,  352,
-      356,    0,    0,  358,  352,  356,  357,  357,    0,  357,
+      343,  344,    0,  343,  342,  343,    0,  343,    0,  345,
+        0,  344,  343,  344,    0,  344,    0,  344,    0,  345,
+      344,  345,    0,  345,  346,  346,    0,  345,  345,    0,
+      347,    0,    0,    0,  346,    0,  346,    0,  346,    0,
+      347,  348,  347,  346,  347,    0,    0,  349,  347,  347,
+        0,  348,    0,  348,    0,  348,    0,  349,  348,  349,
+      348,  349,  350,  354,    0,    0,  349,    0,    0,    0,
+      354,    0,  350,  354,  350,  354,  350,  354,    0,    0,
+      356,  350,  354,  355,  355,    0,  355,    0,    0,    0,
+      356,    0,  356,  355,  356,  355,    0,  355,  356,  356,
 
-        0,    0,    0,  358,    0,  358,  357,  358,  357,    0,
-      357,  358,  358,  360,  359,  357,  359,    0,    0,    0,
-        0,    0,    0,  360,  359,  360,  359,  360,  359,  361,
-        0,    0,  360,  359,    0,  362,    0,    0,  362,  361,
-        0,  361,    0,  361,    0,  362,  363,  362,  361,  362,
-      364,    0,    0,  365,  362,    0,  363,  364,  363,    0,
-      363,    0,    0,  363,    0,  363,    0,  364,  365,  364,
-        0,  364,    0,    0,  367,    0,  364,    0,  365,    0,
-      365,    0,  365,    0,  367,  368,  367,  365,  367,    0,
-        0,  369,  367,  367,    0,  368,    0,  368,    0,  368,
+      358,  357,  355,  357,    0,    0,    0,    0,    0,    0,
+      358,  357,  358,  357,  358,  357,  359,    0,    0,  358,
+      357,    0,  360,    0,    0,  360,  359,    0,  359,    0,
+      359,    0,  360,  361,  360,  359,  360,  362,    0,    0,
+      363,  360,    0,  361,  362,  361,    0,  361,    0,    0,
+      361,    0,  361,    0,  362,  363,  362,    0,  362,    0,
+        0,  365,    0,  362,    0,  363,    0,  363,    0,  363,
+        0,  365,  366,  365,  363,  365,    0,    0,  367,  365,
+      365,    0,  366,    0,  366,    0,  366,    0,  367,  369,
+      367,  366,  367,    0,    0,    0,    0,  367,    0,  369,
 
-        0,  369,  371,  369,  368,  369,    0,    0,    0,    0,
-      369,    0,  371,  372,  371,    0,  371,    0,  371,  373,
-      372,  371,    0,  372,    0,  372,    0,  372,    0,  373,
-      374,  373,  372,  373,    0,    0,    0,    0,  373,    0,
-      374,    0,  374,  376,  374,    0,  377,    0,  374,  374,
-      376,    0,    0,  376,  378,  376,  377,  376,  377,  378,
-      377,    0,  376,    0,  378,  377,  378,  379,  378,    0,
-        0,    0,    0,  378,    0,    0,    0,  379,  381,  379,
-        0,  379,    0,    0,  383,  381,  379,    0,  381,  379,
-      381,    0,  381,    0,  383,    0,  383,  381,  383,  384,
+      370,  369,    0,  369,    0,  369,  371,  370,  369,    0,
+      370,    0,  370,    0,  370,    0,  371,  372,  371,  370,
+      371,    0,    0,    0,    0,  371,    0,  372,    0,  372,
+      374,  372,    0,  375,    0,  372,  372,  374,    0,    0,
+      374,  376,  374,  375,  374,  375,  376,  375,    0,  374,
+        0,  376,  375,  376,  377,  376,    0,    0,    0,    0,
+      376,    0,    0,    0,  377,  379,  377,    0,  377,    0,
+        0,  381,  379,  377,    0,  379,  377,  379,    0,  379,
+        0,  381,    0,  381,  379,  381,  382,  383,    0,  382,
+      381,    0,    0,    0,    0,    0,  382,  383,  382,  383,
 
-      385,    0,  384,  383,    0,    0,    0,    0,    0,  384,
-      385,  384,  385,  384,  385,  387,  385,    0,  384,  385,
-        0,  396,    0,    0,    0,  387,    0,  387,    0,  387,
-        0,  396,    0,  396,  387,  396,  397,  397,  398,  398,
-      396,    0,    0,    0,    0,    0,  397,  399,  397,  398,
-      397,  398,    0,  398,    0,  397,    0,  399,  398,  399,
-      387,  399,  401,    0,    0,  399,  399,    0,  402,    0,
-        0,    0,  401,    0,  401,    0,  401,    0,  402,  403,
-      402,  401,  402,    0,    0,  404,  402,  402,  404,  403,
-        0,  403,    0,  403,    0,  404,  405,  404,  403,  404,
+      382,  383,  385,  383,    0,  382,  383,    0,  394,    0,
+        0,    0,  385,    0,  385,    0,  385,    0,  394,    0,
+      394,  385,  394,  395,  395,    0,    0,  394,    0,    0,
+      396,    0,    0,    0,  395,    0,  395,    0,  395,    0,
+      396,  398,  396,  395,  396,    0,    0,  385,  396,  396,
+        0,  398,  399,  398,    0,  398,    0,    0,    0,    0,
+      398,    0,  399,  400,  399,    0,  399,    0,    0,  401,
+      399,  399,  401,  400,    0,  400,    0,  400,    0,  401,
+      402,  401,  400,  401,    0,    0,  403,  402,  401,    0,
+      402,    0,  402,    0,  402,    0,  403,  404,  403,  402,
 
-        0,    0,  406,  405,  404,    0,  405,    0,  405,    0,
-      405,    0,  406,  407,  406,  405,  406,    0,    0,    0,
-        0,  406,    0,  407,  408,  407,  408,  407,    0,    0,
-      409,  407,  407,    0,  408,    0,  408,    0,  408,    0,
-      409,    0,  409,  408,  409,    0,    0,  410,  409,  409,
-      410,    0,    0,  411,    0,  411,    0,  410,    0,  410,
-        0,  410,    0,  411,  412,  411,  410,  411,    0,  413,
-      413,    0,  411,    0,  412,    0,  412,    0,  412,    0,
-      413,  414,  413,  412,  413,    0,    0,  415,    0,  413,
-        0,  414,    0,  414,  415,  414,    0,  415,  416,  415,
+      403,    0,    0,    0,    0,  403,    0,  404,  405,  404,
+      405,  404,    0,    0,  406,  404,  404,    0,  405,    0,
+      405,    0,  405,    0,  406,    0,  406,  405,  406,    0,
+        0,  407,  406,  406,  407,    0,    0,  408,    0,  408,
+        0,  407,    0,  407,    0,  407,    0,  408,  409,  408,
+      407,  408,    0,  410,  410,    0,  408,    0,  409,    0,
+      409,    0,  409,    0,  410,  411,  410,  409,  410,    0,
+        0,  412,    0,  410,    0,  411,    0,  411,  412,  411,
+        0,  412,  413,  412,  411,  412,    0,    0,  414,    0,
+      412,    0,  413,    0,  413,  414,  413,    0,  414,  413,
 
-      414,  415,    0,    0,  417,    0,  415,    0,  416,    0,
-      416,  417,  416,    0,  417,  416,  417,  416,  417,  418,
-      418,  422,    0,  417,    0,  422,    0,    0,    0,    0,
-      418,  422,  418,  422,  418,  422,  423,    0,    0,  418,
-      422,    0,  424,  423,  424,    0,  423,    0,  423,    0,
-      423,    0,  424,  425,  424,  423,  424,    0,    0,  426,
-        0,  424,  426,  425,    0,  425,    0,  425,    0,  426,
-      425,  426,  425,  426,  427,  427,    0,    0,  426,    0,
-      428,  428,    0,    0,  427,    0,  427,    0,  427,    0,
-      428,  429,  428,  427,  428,    0,    0,    0,    0,  428,
+      414,  413,  414,  415,  415,  419,    0,  414,    0,  419,
+        0,    0,    0,    0,  415,  419,  415,  419,  415,  419,
+      420,    0,    0,  415,  419,    0,  421,  420,  421,    0,
+      420,    0,  420,    0,  420,    0,  421,  422,  421,  420,
+      421,    0,    0,  423,    0,  421,  423,  422,    0,  422,
+        0,  422,    0,  423,  422,  423,  422,  423,  424,  424,
+        0,    0,  423,    0,  425,  425,    0,    0,  424,    0,
+      424,    0,  424,    0,  425,  426,  425,  424,  425,    0,
+        0,    0,    0,  425,    0,  426,    0,  426,    0,  426,
+      427,  426,    0,  427,  426,    0,  428,    0,    0,    0,
 
-        0,  429,    0,  429,    0,  429,  430,  429,    0,  430,
-      429,    0,  431,    0,    0,    0,  430,    0,  430,    0,
-      430,    0,  431,  432,  431,  430,  431,    0,    0,  431,
-      432,  431,    0,  432,  434,  432,    0,  432,    0,  435,
-      435,    0,  432,    0,  434,    0,  434,    0,  434,    0,
-      435,  437,  435,  434,  435,    0,    0,  438,    0,  435,
-        0,  437,    0,  437,    0,  437,    0,  438,  439,  438,
-      437,  438,    0,    0,    0,    0,  438,    0,  439,    0,
-      439,  440,  439,    0,  440,    0,  439,  439,    0,  442,
-        0,  440,    0,  440,    0,  440,    0,    0,    0,  442,
+      427,    0,  427,    0,  427,    0,  428,  429,  428,  427,
+      428,    0,    0,  428,  429,  428,    0,  429,  431,  429,
+        0,  429,    0,  432,  432,    0,  429,    0,  431,    0,
+      431,    0,  431,    0,  432,  434,  432,  431,  432,    0,
+        0,  435,    0,  432,    0,  434,    0,  434,    0,  434,
+        0,  435,  436,  435,  434,  435,    0,    0,    0,    0,
+      435,    0,  436,    0,  436,  437,  436,    0,  437,    0,
+      436,  436,    0,  439,    0,  437,    0,  437,    0,  437,
+        0,    0,    0,  439,  437,  439,    0,  439,  440,  440,
+        0,  441,  439,  439,  442,    0,    0,    0,  440,    0,
 
-      440,  442,    0,  442,  443,  443,    0,  444,  442,  442,
-      445,    0,    0,    0,  443,    0,  443,  444,  443,  444,
-      445,  444,  445,  443,  445,  447,  444,  447,  449,  445,
-        0,  450,    0,    0,    0,  447,    0,  447,  449,  447,
-      449,  450,  449,  450,  447,  450,  460,  449,  450,  461,
-      450,    0,    0,    0,    0,    0,  460,    0,  460,  461,
-      460,  461,  462,  461,  460,  460,    0,  461,  461,  462,
-      464,    0,  462,    0,  462,    0,  462,    0,    0,    0,
-      464,  462,  464,  465,  464,    0,  465,    0,    0,  464,
-        0,  466,    0,  465,  467,  465,    0,  465,    0,    0,
+      440,  441,  440,  441,  442,  441,  442,  440,  442,  444,
+      441,  444,  446,  442,    0,  447,    0,    0,    0,  444,
+        0,  444,  446,  444,  446,  447,  446,  447,  444,  447,
+      457,  446,  447,    0,  447,    0,    0,    0,    0,    0,
+      457,    0,  457,  458,  457,    0,  460,    0,  457,  457,
+      458,    0,    0,  458,    0,  458,  460,  458,  460,    0,
+      460,  461,  458,    0,  461,  460,    0,  462,    0,    0,
+        0,  461,    0,  461,    0,  461,    0,  462,  463,  462,
+      461,  462,    0,    0,  464,    0,  462,    0,  463,    0,
+      463,  464,  463,    0,  464,  465,  464,  463,  464,    0,
 
-        0,  466,  465,  466,  467,  466,  467,  468,  467,    0,
-      466,    0,    0,  467,  468,  469,    0,  468,  470,  468,
-        0,  468,    0,    0,    0,  469,  468,  469,  470,  469,
-      470,  471,  470,    0,  469,    0,    0,  470,  471,  473,
-        0,  471,  472,  471,  472,  471,    0,    0,    0,  473,
-      471,  473,  472,  473,  472,  474,  472,    0,  473,    0,
-      474,  472,    0,  475,    0,  474,  476,  474,    0,  474,
-        0,    0,    0,  475,  474,  475,  476,  475,  476,  477,
-      476,  475,  475,    0,  476,  476,    0,  478,    0,  477,
-      479,  477,    0,  477,    0,    0,    0,  478,  477,  478,
+        0,  466,    0,  464,    0,  465,    0,  465,    0,  465,
+        0,  466,  467,  466,  465,  466,    0,    0,    0,  467,
+      466,    0,  467,  468,  467,  468,  467,    0,    0,  469,
+        0,  467,    0,  468,    0,  468,    0,  468,    0,  469,
+      470,  469,  468,  469,    0,  470,  471,    0,  469,    0,
+      470,    0,  470,    0,  470,    0,  471,  472,  471,  470,
+      471,    0,    0,    0,  471,  471,    0,  472,  473,  472,
+        0,  472,    0,    0,  474,  472,  472,    0,  473,    0,
+      473,    0,  473,    0,  474,  475,  474,  473,  474,    0,
+        0,  479,    0,  474,    0,  475,    0,  475,  479,  475,
 
-      479,  478,  479,  483,  479,    0,  478,    0,    0,  479,
-      483,  484,    0,  483,  485,  483,    0,  483,    0,    0,
-        0,  484,  483,  484,  485,  484,  485,  486,  485,  484,
-      484,    0,    0,  485,    0,  487,    0,  486,    0,  486,
-        0,  486,    0,    0,    0,  487,  486,  487,  488,  487,
-        0,  488,  487,    0,  487,    0,  489,    0,  488,  490,
-      488,    0,  488,    0,    0,    0,  489,  488,  489,  490,
-      489,  490,    0,  490,  489,  489,  491,  491,  490,  492,
-        0,    0,  493,    0,    0,    0,  491,    0,  491,  492,
-      491,  492,  493,  492,  493,  491,  493,  495,  492,    0,
+        0,  479,  480,  479,  475,  479,    0,    0,    0,    0,
+      479,    0,  480,  481,  480,    0,  480,    0,    0,  482,
+      480,  480,    0,  481,    0,  481,    0,  481,    0,  482,
+      483,  482,  481,  482,    0,    0,  484,    0,  482,  484,
+      483,    0,  483,    0,  483,    0,  484,  483,  484,  483,
+      484,  485,  486,    0,    0,  484,    0,    0,    0,    0,
+        0,  485,  486,  485,  486,  485,  486,  487,  487,  485,
+      485,  486,    0,  488,    0,    0,    0,  487,    0,  487,
+        0,  487,    0,  488,  489,  488,  487,  488,    0,    0,
+      491,    0,  488,    0,  489,    0,  489,    0,  489,    0,
 
-      497,  493,    0,    0,    0,    0,    0,  495,    0,  495,
-      497,  495,  497,  498,  497,    0,  495,  498,    0,  497,
-        0,  499,    0,  498,  492,  498,    0,  498,    0,  500,
-        0,  499,  498,  499,    0,  499,    0,    0,    0,  500,
-      499,  500,  502,  500,    0,  502,    0,    0,  500,    0,
-      503,    0,  502,  503,  502,    0,  502,    0,    0,  517,
-      503,  502,  503,  505,  503,    0,  505,    0,    0,  503,
-      507,  507,    0,  505,  517,  505,    0,  505,    0,    0,
-        0,  507,  505,  507,  517,  507,  517,  518,  517,    0,
-      507,    0,    0,  517,  518,  519,  519,  518,    0,  518,
+      491,  493,  491,  489,  491,    0,    0,    0,    0,  491,
+        0,  493,  494,  493,    0,  493,  494,    0,  488,    0,
+      493,    0,  494,  495,  494,    0,  494,    0,    0,  496,
+        0,  494,    0,  495,    0,  495,    0,  495,    0,  496,
+        0,  496,  495,  496,  498,    0,    0,  498,  496,    0,
+      499,    0,    0,  499,  498,    0,  498,    0,  498,    0,
+      499,    0,  499,  498,  499,  501,    0,    0,  501,  499,
+      503,  503,    0,    0,    0,  501,    0,  501,    0,  501,
+        0,  503,  513,  503,  501,  503,    0,    0,    0,  513,
+      503,    0,  513,    0,  513,    0,  513,  514,  514,    0,
 
-        0,  518,    0,  521,    0,  519,  518,  519,    0,  519,
-        0,  522,    0,  521,  519,  521,    0,  521,    0,  521,
-        0,  522,  521,  522,  523,  522,    0,  523,    0,  522,
-      522,    0,  524,    0,  523,  525,  523,    0,  523,    0,
-        0,  527,  524,  523,  524,  525,  524,  525,  525,  525,
-      526,  524,    0,  529,  525,    0,  527,    0,    0,    0,
-      526,    0,  526,  529,  526,  529,  527,  529,  527,  526,
-      527,  528,  529,    0,  528,  527,    0,  530,    0,    0,
-        0,  528,    0,  528,  530,  528,    0,  530,  531,  530,
-      528,  530,    0,    0,  536,    0,  530,  536,  531,    0,
+        0,  513,    0,  516,    0,    0,    0,  514,    0,  514,
+        0,  514,    0,  516,  517,  516,  514,  516,    0,  516,
+        0,    0,  516,    0,  517,    0,  517,  518,  517,    0,
+      518,    0,  517,  517,    0,  519,    0,  518,  520,  518,
+        0,  518,    0,    0,  522,  519,  518,  519,  520,  519,
+      520,  520,  520,  521,  519,    0,  524,  520,    0,  522,
+        0,    0,    0,  521,    0,  521,  524,  521,  524,  522,
+      524,  522,  521,  522,  523,  524,    0,  523,  522,    0,
+      525,    0,    0,    0,  523,    0,  523,  525,  523,    0,
+      525,  526,  525,  523,  525,    0,    0,  531,    0,  525,
 
-      531,    0,  531,    0,  536,  537,  536,  531,  536,    0,
-        0,  538,    0,  536,    0,  537,    0,  537,    0,  537,
-        0,  538,  539,  538,  537,  538,    0,    0,  540,    0,
-      538,    0,  539,    0,  539,  540,  539,    0,  540,  541,
-      540,  539,  540,    0,    0,    0,    0,  540,    0,  541,
-      543,  541,    0,  541,  543,    0,  545,  541,  541,    0,
-      543,    0,  543,  549,  543,    0,  545,  547,  545,  543,
-      545,    0,    0,    0,  547,  545,    0,  547,  549,  547,
-        0,  547,    0,    0,  550,    0,  547,    0,  549,    0,
-      549,    0,  549,    0,  550,  552,  550,  549,  550,    0,
+      531,  526,    0,  526,    0,  526,    0,  531,  532,  531,
+      526,  531,    0,    0,  533,    0,  531,    0,  532,    0,
+      532,    0,  532,    0,  533,  534,  533,  532,  533,    0,
+        0,  535,    0,  533,    0,  534,    0,  534,  535,  534,
+        0,  535,  536,  535,  534,  535,    0,    0,    0,    0,
+      535,    0,  536,  538,  536,    0,  536,  538,    0,  540,
+      536,  536,    0,  538,    0,  538,  544,  538,    0,  540,
+      542,  540,  538,  540,    0,    0,    0,  542,  540,    0,
+      542,  544,  542,    0,  542,    0,    0,  545,    0,  542,
+        0,  544,    0,  544,    0,  544,    0,  545,  547,  545,
 
-        0,  554,    0,  550,    0,  552,    0,  552,    0,  552,
-        0,  554,  563,  554,  552,  554,    0,    0,    0,    0,
-      554,    0,  563,  564,  563,    0,  563,    0,    0,  563,
-        0,  563,    0,  564,  565,  564,  564,  564,    0,    0,
-      567,    0,  564,    0,  565,    0,  565,    0,  565,    0,
-      567,  568,  567,  565,  567,    0,    0,    0,    0,  567,
-        0,  568,  569,  568,  569,  568,    0,    0,  568,    0,
-      568,    0,  569,  570,  569,    0,  569,    0,  570,  571,
-        0,  569,    0,  570,    0,  570,    0,  570,    0,  571,
-        0,  571,  570,  571,  572,  572,    0,  573,  571,  573,
+      544,  545,    0,    0,  549,    0,  545,    0,  547,    0,
+      547,    0,  547,    0,  549,  558,  549,  547,  549,    0,
+        0,  559,    0,  549,    0,  558,    0,  558,  558,  558,
+        0,  559,  561,  559,  558,  559,    0,    0,  562,    0,
+      559,    0,  561,    0,  561,    0,  561,    0,  562,    0,
+      562,  561,  562,  564,  563,  562,  563,  562,  564,    0,
+        0,    0,    0,  564,  563,  564,  563,  564,  563,  565,
+      566,  566,  564,  563,    0,    0,    0,    0,    0,  565,
+      566,  565,  566,  565,  566,  567,  568,  567,  565,  566,
+        0,    0,    0,    0,    0,  567,  568,  567,  568,  567,
 
-      574,    0,    0,    0,  572,    0,  572,  573,  572,  573,
-      574,  573,  574,  572,  574,  579,  573,    0,    0,  574,
-        0,    0,    0,  580,    0,  579,    0,  579,    0,  579,
-        0,  579,    0,  580,  579,  580,  580,  580,  581,  583,
-        0,    0,  580,    0,    0,  581,  583,    0,  581,  583,
-      581,  583,  581,  583,  586,    0,    0,  581,  583,    0,
-        0,    0,  588,    0,  586,    0,  586,    0,  586,    0,
-      590,    0,  588,  586,  588,  588,  588,    0,    0,    0,
-      590,  588,  590,  592,  590,    0,    0,    0,  590,  590,
-        0,    0,    0,  592,    0,  592,    0,  592,  598,  598,
+      568,  573,    0,    0,  567,  568,    0,    0,    0,  574,
+        0,  573,    0,  573,    0,  573,    0,  573,    0,  574,
+      573,  574,  574,  574,  575,  577,    0,    0,  574,    0,
+        0,  575,  577,    0,  575,  577,  575,  577,  575,  577,
+      580,    0,    0,  575,  577,    0,    0,    0,  582,    0,
+      580,    0,  580,    0,  580,    0,  584,    0,  582,  580,
+      582,  582,  582,    0,    0,    0,  584,  582,  584,  586,
+      584,    0,    0,    0,  584,  584,    0,    0,    0,  586,
+        0,  586,    0,  586,  592,  592,  592,    0,  586,    0,
+        0,    0,    0,  595,  596,    0,  592,  592,  592,  592,
 
-      598,    0,  592,    0,    0,    0,    0,  601,  602,    0,
-      598,  598,  598,  598,  598,  598,  598,  601,  602,  601,
-      602,  601,  602,  603,  604,    0,  601,  602,    0,    0,
-      601,    0,    0,  603,  604,  603,  604,  603,  604,  605,
-      606,    0,  603,  604,    0,    0,    0,    0,    0,  605,
-      606,  605,  606,  605,  606,  607,    0,  606,  605,  606,
-        0,  608,    0,    0,    0,  607,    0,  607,  607,  607,
-        0,  608,  609,  608,  607,  608,    0,    0,  613,  609,
-      608,    0,  609,    0,  609,    0,  609,    0,  613,  614,
-      613,  609,  613,    0,    0,    0,    0,  613,    0,  614,
+      592,  592,  592,  595,  596,  595,  596,  595,  596,  597,
+      598,    0,  595,  596,    0,    0,    0,    0,    0,  597,
+      598,  597,  598,  597,  598,  599,    0,    0,  597,  598,
+        0,    0,    0,  600,    0,  599,    0,  599,    0,  599,
+        0,  601,  599,  600,  599,  600,  600,  600,    0,  602,
+        0,  601,  600,  601,    0,  601,  602,  606,    0,  602,
+      601,  602,    0,  602,    0,  607,    0,  606,  602,  606,
+        0,  606,    0,  608,    0,  607,  606,  607,    0,  607,
+        0,  610,    0,  608,  607,  608,  608,  608,    0,  613,
+        0,  610,  608,  610,    0,  610,  613,  615,    0,  613,
 
-      615,  614,    0,  614,    0,    0,  617,    0,  614,    0,
-      615,    0,  615,  615,  615,    0,  617,  620,  617,  615,
-      617,    0,    0,  622,  620,  617,    0,  620,    0,  620,
-      622,  620,    0,  622,  623,  622,  620,  622,    0,    0,
-        0,  623,  622,    0,  623,    0,  623,    0,  623,    0,
-        0,  633,  634,  623,  630,  630,  630,  630,  630,  630,
-      630,  633,  634,  633,  634,  633,  634,  635,  636,    0,
-      633,  634,    0,    0,    0,    0,    0,  635,  636,  635,
-      636,  635,  636,  637,    0,    0,  635,  636,    0,    0,
-        0,    0,  630,  637,  641,  637,    0,  637,    0,    0,
+      610,  613,    0,  613,  615,  616,    0,  615,  613,  615,
+        0,  615,  616,    0,    0,  616,  615,  616,    0,  616,
+        0,    0,  626,  627,  616,  623,  623,  623,  623,  623,
+      623,  623,  626,  627,  626,  627,  626,  627,  628,    0,
+        0,  626,  627,    0,    0,    0,  629,    0,  628,    0,
+      628,    0,  628,    0,    0,    0,  629,  628,  629,  633,
+      629,    0,    0,  623,  629,  629,    0,  634,    0,  633,
+        0,  633,    0,  633,    0,  636,  633,  634,  633,  634,
+        0,  634,  636,  639,    0,  636,  634,  636,    0,  636,
+        0,    0,    0,  639,  636,  639,  641,  639,  641,  642,
 
-      642,  637,  637,    0,  641,    0,  641,    0,  641,    0,
-      642,  641,  642,  641,  642,  644,    0,    0,  647,  642,
-        0,  649,  644,  649,    0,  644,    0,  644,  647,  644,
-      647,  649,  647,  649,  644,  649,  647,  647,  650,    0,
-      649,    0,  650,    0,    0,    0,    0,    0,  650,    0,
-      650,    0,  650,  657,  657,  657,    0,  650,    0,    0,
-        0,    0,  659,    0,    0,  657,  657,  657,  657,  657,
-      657,  657,  659,  660,  659,    0,  659,    0,    0,    0,
-      659,  659,    0,  660,  661,  660,    0,  660,    0,    0,
-      665,  660,  660,    0,  661,    0,  661,    0,  661,    0,
+        0,  639,  639,  642,    0,    0,  641,    0,  641,  642,
+      641,  642,    0,  642,    0,  641,    0,    0,  642,  649,
+      649,  649,    0,    0,    0,    0,    0,    0,  651,  652,
+        0,  649,  649,  649,  649,  649,  649,  649,  651,  652,
+      651,  652,  651,  652,  656,  657,  651,  651,  652,    0,
+        0,    0,  652,    0,  656,  657,  656,  657,  656,  657,
+      659,  662,    0,  656,  657,    0,    0,    0,    0,    0,
+      659,  662,  659,  662,  659,  662,  664,    0,  659,  659,
+      662,    0,  665,    0,  662,    0,  664,    0,  664,  665,
+      664,    0,  665,  672,  665,  664,  665,    0,    0,    0,
 
-      665,  666,  665,  661,  665,    0,    0,  661,    0,  665,
-        0,  666,  668,  666,    0,  666,    0,    0,    0,    0,
-      666,    0,  668,  671,  668,    0,  668,    0,    0,  673,
-      668,  668,    0,  671,    0,  671,    0,  671,    0,  673,
-      674,  673,  671,  673,    0,    0,  671,  674,  673,    0,
-      674,    0,  674,  682,  674,  681,  681,    0,    0,  674,
-        0,    0,    0,  682,  683,  682,  681,  682,  681,  682,
-      681,    0,  682,    0,  683,  681,  683,  687,  683,    0,
-      690,    0,    0,  683,    0,    0,    0,  687,    0,  687,
-      690,  687,  690,    0,  690,  692,  687,    0,  692,  690,
+        0,  665,    0,  672,  673,  672,    0,  672,    0,  672,
+      677,    0,  672,    0,  673,    0,  673,    0,  673,    0,
+      677,    0,  677,  673,  677,  680,    0,    0,  682,  677,
+        0,  682,    0,  677,    0,  680,    0,  680,  682,  680,
+      682,    0,  682,    0,  680,    0,    0,  682,  687,  687,
+      687,    0,    0,    0,    0,    0,    0,  689,    0,    0,
+      687,  687,  687,  687,  687,  687,  687,  689,  691,  689,
+      689,  689,    0,    0,  694,    0,  689,    0,  691,    0,
+      691,    0,  691,    0,  694,  698,  694,  691,  694,    0,
+      694,  702,    0,  694,    0,  698,    0,  698,    0,  698,
 
-      687,    0,    0,    0,    0,  692,    0,  692,    0,  692,
-      697,  697,  697,    0,  692,    0,    0,    0,    0,  699,
-        0,    0,  697,  697,  697,  697,  697,  697,  697,  699,
-      700,  699,    0,  699,    0,    0,  702,    0,  699,    0,
-      700,  699,  700,  700,  700,    0,  702,  705,  702,  700,
-      702,    0,    0,    0,    0,  702,    0,  705,  709,  705,
-        0,  705,    0,  705,  710,    0,  705,    0,  709,    0,
-      709,    0,  709,    0,  710,  714,  710,  709,  710,    0,
-        0,  717,    0,  710,    0,  714,    0,  714,    0,  714,
-        0,  717,    0,  717,  714,  717,    0,    0,    0,    0,
+        0,  702,  705,  702,  698,  702,    0,    0,    0,    0,
+      702,    0,  705,    0,  705,    0,  705,    0,    0,    0,
+        0,  705,  709,  709,  709,  709,  709,  709,  709,  709,
+      709,  709,  709,  709,  710,  710,  710,  710,  710,  710,
+      710,  710,  710,  710,  710,  710,  711,  711,  711,  711,
+      711,  711,  711,  711,  711,  711,  711,  711,  712,  712,
+      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
+      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
+      713,  713,  714,  714,  714,  714,  714,  714,  714,  714,
+      714,  714,  714,  714,  715,  715,  715,    0,  715,  715,
 
-      717,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  727,  727,  727,    0,  727,  727,  727,
-      727,  727,  727,  727,  727,  728,  728,    0,    0,  728,
-        0,  728,  729,    0,  729,  730,  730,    0,  730,  730,
+      715,  715,  715,  715,  715,  715,  716,  716,    0,    0,
+      716,    0,  716,  717,    0,  717,  718,  718,    0,  718,
+      718,  719,  719,    0,  719,  719,  719,    0,  719,  719,
+      719,  719,  719,  720,  720,  720,    0,  720,  720,  720,
+      720,  720,  720,  720,  720,  721,  721,  721,  721,  721,
+      721,  721,  721,    0,  721,  721,  722,    0,    0,  722,
+      722,  722,  722,  722,  722,  722,  722,  723,    0,    0,
+      723,  723,  723,  723,  723,  723,  723,  723,  724,    0,
+        0,  724,    0,  724,  724,  724,  724,  724,  724,  725,
+      725,    0,  725,  725,  726,  726,    0,  726,  726,  727,
 
-      731,  731,    0,  731,  731,  731,    0,  731,  731,  731,
-      731,  731,  732,  732,  732,    0,  732,  732,  732,  732,
-      732,  732,  732,  732,  733,  733,  733,  733,  733,  733,
-      733,  733,    0,  733,  733,  734,    0,    0,  734,  734,
-      734,  734,  734,  734,  734,  734,  735,    0,    0,  735,
-      735,  735,  735,  735,  735,  735,  735,  736,    0,    0,
-      736,    0,  736,  736,  736,  736,  736,  736,  737,  737,
-        0,  737,  737,  738,  738,    0,  738,  738,  739,  739,
-        0,  739,  739,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720
+      727,    0,  727,  727,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
+      708,  708,  708
     } ;
 
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static yyconst short int yy_rule_linenum[132] =
+static yyconst short int yy_rule_linenum[131] =
     {   0,
       103,  106,  108,  109,  110,  113,  115,  116,  117,  129,
       136,  143,  149,  158,  166,  174,  175,  177,  196,  202,
       203,  204,  205,  206,  209,  215,  222,  229,  236,  246,
-      280,  287,  288,  289,  290,  298,  299,  300,  301,  302,
-      307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
-      317,  326,  327,  328,  329,  330,  331,  332,  333,  334,
-      335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
-      345,  346,  347,  348,  349,  350,  351,  352,  353,  354,
-      355,  356,  357,  358,  359,  360,  361,  362,  363,  364,
-      365,  366,  367,  368,  369,  370,  371,  372,  373,  374,
+      280,  287,  291,  292,  300,  301,  302,  303,  304,  309,
+      310,  311,  312,  313,  314,  315,  316,  317,  318,  319,
+      328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
+      338,  339,  340,  341,  342,  343,  344,  345,  346,  347,
+      348,  349,  350,  351,  352,  353,  354,  355,  356,  357,
+      358,  359,  360,  361,  362,  363,  364,  365,  366,  367,
+      368,  369,  370,  371,  372,  373,  374,  375,  376,  377,
 
-      375,  376,  377,  378,  379,  380,  381,  382,  383,  384,
-      389,  390,  395,  396,  397,  400,  406,  413,  422,  433,
-      439,  441,  442,  444,  446,  448,  461,  467,  473,  480,
-      482
+      378,  379,  380,  381,  382,  383,  384,  385,  386,  391,
+      392,  397,  398,  399,  402,  408,  415,  424,  435,  441,
+      443,  444,  446,  448,  450,  463,  469,  475,  482,  484
     } ;
 
 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
@@ -1902,7 +1877,7 @@
 
 /* Newline */
 /* White-space */
-#line 1906 "asn1p_l.c"
+#line 1881 "asn1p_l.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -2056,7 +2031,7 @@
 #line 101 "asn1p_l.l"
 
 
-#line 2060 "asn1p_l.c"
+#line 2035 "asn1p_l.c"
 
 	if ( yy_init )
 		{
@@ -2104,14 +2079,14 @@
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 721 )
+				if ( yy_current_state >= 709 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			*yy_state_ptr++ = yy_current_state;
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 4484 );
+		while ( yy_base[yy_current_state] != 4405 );
 
 yy_find_action:
 		yy_current_state = *--yy_state_ptr;
@@ -2148,13 +2123,13 @@
 			{
 			if ( yy_act == 0 )
 				fprintf( stderr, "--scanner backing up\n" );
-			else if ( yy_act < 132 )
+			else if ( yy_act < 131 )
 				fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
 				         yy_rule_linenum[yy_act], yytext );
-			else if ( yy_act == 132 )
+			else if ( yy_act == 131 )
 				fprintf( stderr, "--accepting default rule (\"%s\")\n",
 				         yytext );
-			else if ( yy_act == 133 )
+			else if ( yy_act == 132 )
 				fprintf( stderr, "--(end of buffer or a NUL)\n" );
 			else
 				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2450,19 +2425,17 @@
 #line 287 "asn1p_l.l"
 return TOK_ABSENT;
 	YY_BREAK
+/*
+ABSTRACT-SYNTAX		return TOK_ABSTRACT_SYNTAX;
+	*/
 case 33:
 YY_RULE_SETUP
-#line 288 "asn1p_l.l"
-return TOK_ABSTRACT_SYNTAX;
+#line 291 "asn1p_l.l"
+return TOK_ALL;
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 289 "asn1p_l.l"
-return TOK_ALL;
-	YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 290 "asn1p_l.l"
+#line 292 "asn1p_l.l"
 {
 				/* Appeared in 1990, removed in 1997 */
 				if(TYPE_LIFETIME(1990, 1997))
@@ -2472,88 +2445,88 @@
 				REJECT;
 			}
 	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 300 "asn1p_l.l"
+return TOK_APPLICATION;
+	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 298 "asn1p_l.l"
-return TOK_APPLICATION;
+#line 301 "asn1p_l.l"
+return TOK_AUTOMATIC;
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 299 "asn1p_l.l"
-return TOK_AUTOMATIC;
+#line 302 "asn1p_l.l"
+return TOK_BEGIN;
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 300 "asn1p_l.l"
-return TOK_BEGIN;
+#line 303 "asn1p_l.l"
+return TOK_BIT;
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 301 "asn1p_l.l"
-return TOK_BIT;
-	YY_BREAK
-case 40:
-YY_RULE_SETUP
-#line 302 "asn1p_l.l"
+#line 304 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_BMPString;
 				REJECT;
 			}
 	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 309 "asn1p_l.l"
+return TOK_BOOLEAN;
+	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 307 "asn1p_l.l"
-return TOK_BOOLEAN;
+#line 310 "asn1p_l.l"
+return TOK_BY;
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 308 "asn1p_l.l"
-return TOK_BY;
+#line 311 "asn1p_l.l"
+return TOK_CHARACTER;
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 309 "asn1p_l.l"
-return TOK_CHARACTER;
+#line 312 "asn1p_l.l"
+return TOK_CHOICE;
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 310 "asn1p_l.l"
-return TOK_CHOICE;
+#line 313 "asn1p_l.l"
+return TOK_CLASS;
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 311 "asn1p_l.l"
-return TOK_CLASS;
+#line 314 "asn1p_l.l"
+return TOK_COMPONENT;
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 312 "asn1p_l.l"
-return TOK_COMPONENT;
+#line 315 "asn1p_l.l"
+return TOK_COMPONENTS;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 313 "asn1p_l.l"
-return TOK_COMPONENTS;
+#line 316 "asn1p_l.l"
+return TOK_CONSTRAINED;
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 314 "asn1p_l.l"
-return TOK_CONSTRAINED;
+#line 317 "asn1p_l.l"
+return TOK_CONTAINING;
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 315 "asn1p_l.l"
-return TOK_CONTAINING;
+#line 318 "asn1p_l.l"
+return TOK_DEFAULT;
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 316 "asn1p_l.l"
-return TOK_DEFAULT;
-	YY_BREAK
-case 51:
-YY_RULE_SETUP
-#line 317 "asn1p_l.l"
+#line 319 "asn1p_l.l"
 {
 				/* Appeared in 1990, removed in 1997 */
 				if(TYPE_LIFETIME(1990, 1997))
@@ -2564,355 +2537,355 @@
 				REJECT;
 			}
 	YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 328 "asn1p_l.l"
+return TOK_DEFINITIONS;
+	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 326 "asn1p_l.l"
-return TOK_DEFINITIONS;
+#line 329 "asn1p_l.l"
+return TOK_EMBEDDED;
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 327 "asn1p_l.l"
-return TOK_EMBEDDED;
+#line 330 "asn1p_l.l"
+return TOK_ENCODED;
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 328 "asn1p_l.l"
-return TOK_ENCODED;
+#line 331 "asn1p_l.l"
+return TOK_ENCODING_CONTROL;
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 329 "asn1p_l.l"
-return TOK_ENCODING_CONTROL;
+#line 332 "asn1p_l.l"
+return TOK_END;
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 330 "asn1p_l.l"
-return TOK_END;
+#line 333 "asn1p_l.l"
+return TOK_ENUMERATED;
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 331 "asn1p_l.l"
-return TOK_ENUMERATED;
+#line 334 "asn1p_l.l"
+return TOK_EXCEPT;
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 332 "asn1p_l.l"
-return TOK_EXCEPT;
+#line 335 "asn1p_l.l"
+return TOK_EXPLICIT;
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 333 "asn1p_l.l"
-return TOK_EXPLICIT;
+#line 336 "asn1p_l.l"
+return TOK_EXPORTS;
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 334 "asn1p_l.l"
-return TOK_EXPORTS;
+#line 337 "asn1p_l.l"
+return TOK_EXTENSIBILITY;
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 335 "asn1p_l.l"
-return TOK_EXTENSIBILITY;
+#line 338 "asn1p_l.l"
+return TOK_EXTERNAL;
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 336 "asn1p_l.l"
-return TOK_EXTERNAL;
+#line 339 "asn1p_l.l"
+return TOK_FALSE;
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 337 "asn1p_l.l"
-return TOK_FALSE;
+#line 340 "asn1p_l.l"
+return TOK_FROM;
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 338 "asn1p_l.l"
-return TOK_FROM;
+#line 341 "asn1p_l.l"
+return TOK_GeneralizedTime;
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 339 "asn1p_l.l"
-return TOK_GeneralizedTime;
+#line 342 "asn1p_l.l"
+return TOK_GeneralString;
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 340 "asn1p_l.l"
-return TOK_GeneralString;
+#line 343 "asn1p_l.l"
+return TOK_GraphicString;
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 341 "asn1p_l.l"
-return TOK_GraphicString;
+#line 344 "asn1p_l.l"
+return TOK_IA5String;
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 342 "asn1p_l.l"
-return TOK_IA5String;
+#line 345 "asn1p_l.l"
+return TOK_IDENTIFIER;
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 343 "asn1p_l.l"
-return TOK_IDENTIFIER;
+#line 346 "asn1p_l.l"
+return TOK_IMPLICIT;
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 344 "asn1p_l.l"
-return TOK_IMPLICIT;
+#line 347 "asn1p_l.l"
+return TOK_IMPLIED;
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 345 "asn1p_l.l"
-return TOK_IMPLIED;
+#line 348 "asn1p_l.l"
+return TOK_IMPORTS;
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 346 "asn1p_l.l"
-return TOK_IMPORTS;
+#line 349 "asn1p_l.l"
+return TOK_INCLUDES;
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 347 "asn1p_l.l"
-return TOK_INCLUDES;
+#line 350 "asn1p_l.l"
+return TOK_INSTANCE;
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 348 "asn1p_l.l"
-return TOK_INSTANCE;
+#line 351 "asn1p_l.l"
+return TOK_INSTRUCTIONS;
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 349 "asn1p_l.l"
-return TOK_INSTRUCTIONS;
+#line 352 "asn1p_l.l"
+return TOK_INTEGER;
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 350 "asn1p_l.l"
-return TOK_INTEGER;
+#line 353 "asn1p_l.l"
+return TOK_INTERSECTION;
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 351 "asn1p_l.l"
-return TOK_INTERSECTION;
+#line 354 "asn1p_l.l"
+return TOK_ISO646String;
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 352 "asn1p_l.l"
-return TOK_ISO646String;
+#line 355 "asn1p_l.l"
+return TOK_MAX;
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 353 "asn1p_l.l"
-return TOK_MAX;
+#line 356 "asn1p_l.l"
+return TOK_MIN;
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 354 "asn1p_l.l"
-return TOK_MIN;
+#line 357 "asn1p_l.l"
+return TOK_MINUS_INFINITY;
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 355 "asn1p_l.l"
-return TOK_MINUS_INFINITY;
+#line 358 "asn1p_l.l"
+return TOK_NULL;
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 356 "asn1p_l.l"
-return TOK_NULL;
+#line 359 "asn1p_l.l"
+return TOK_NumericString;
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 357 "asn1p_l.l"
-return TOK_NumericString;
+#line 360 "asn1p_l.l"
+return TOK_OBJECT;
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 358 "asn1p_l.l"
-return TOK_OBJECT;
+#line 361 "asn1p_l.l"
+return TOK_ObjectDescriptor;
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 359 "asn1p_l.l"
-return TOK_ObjectDescriptor;
+#line 362 "asn1p_l.l"
+return TOK_OCTET;
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 360 "asn1p_l.l"
-return TOK_OCTET;
+#line 363 "asn1p_l.l"
+return TOK_OF;
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 361 "asn1p_l.l"
-return TOK_OF;
+#line 364 "asn1p_l.l"
+return TOK_OPTIONAL;
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 362 "asn1p_l.l"
-return TOK_OPTIONAL;
+#line 365 "asn1p_l.l"
+return TOK_PATTERN;
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 363 "asn1p_l.l"
-return TOK_PATTERN;
+#line 366 "asn1p_l.l"
+return TOK_PDV;
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 364 "asn1p_l.l"
-return TOK_PDV;
+#line 367 "asn1p_l.l"
+return TOK_PLUS_INFINITY;
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 365 "asn1p_l.l"
-return TOK_PLUS_INFINITY;
+#line 368 "asn1p_l.l"
+return TOK_PRESENT;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 366 "asn1p_l.l"
-return TOK_PRESENT;
+#line 369 "asn1p_l.l"
+return TOK_PrintableString;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 367 "asn1p_l.l"
-return TOK_PrintableString;
+#line 370 "asn1p_l.l"
+return TOK_PRIVATE;
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 368 "asn1p_l.l"
-return TOK_PRIVATE;
+#line 371 "asn1p_l.l"
+return TOK_REAL;
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 369 "asn1p_l.l"
-return TOK_REAL;
+#line 372 "asn1p_l.l"
+return TOK_RELATIVE_OID;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 370 "asn1p_l.l"
-return TOK_RELATIVE_OID;
+#line 373 "asn1p_l.l"
+return TOK_SEQUENCE;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 371 "asn1p_l.l"
-return TOK_SEQUENCE;
+#line 374 "asn1p_l.l"
+return TOK_SET;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 372 "asn1p_l.l"
-return TOK_SET;
+#line 375 "asn1p_l.l"
+return TOK_SIZE;
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 373 "asn1p_l.l"
-return TOK_SIZE;
+#line 376 "asn1p_l.l"
+return TOK_STRING;
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 374 "asn1p_l.l"
-return TOK_STRING;
+#line 377 "asn1p_l.l"
+return TOK_SYNTAX;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 375 "asn1p_l.l"
-return TOK_SYNTAX;
+#line 378 "asn1p_l.l"
+return TOK_T61String;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 376 "asn1p_l.l"
-return TOK_T61String;
+#line 379 "asn1p_l.l"
+return TOK_TAGS;
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 377 "asn1p_l.l"
-return TOK_TAGS;
+#line 380 "asn1p_l.l"
+return TOK_TeletexString;
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 378 "asn1p_l.l"
-return TOK_TeletexString;
+#line 381 "asn1p_l.l"
+return TOK_TRUE;
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 379 "asn1p_l.l"
-return TOK_TRUE;
+#line 382 "asn1p_l.l"
+return TOK_TYPE_IDENTIFIER;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 380 "asn1p_l.l"
-return TOK_TYPE_IDENTIFIER;
+#line 383 "asn1p_l.l"
+return TOK_UNION;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 381 "asn1p_l.l"
-return TOK_UNION;
+#line 384 "asn1p_l.l"
+return TOK_UNIQUE;
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 382 "asn1p_l.l"
-return TOK_UNIQUE;
+#line 385 "asn1p_l.l"
+return TOK_UNIVERSAL;
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 383 "asn1p_l.l"
-return TOK_UNIVERSAL;
-	YY_BREAK
-case 110:
-YY_RULE_SETUP
-#line 384 "asn1p_l.l"
+#line 386 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_UniversalString;
 				REJECT;
 			}
 	YY_BREAK
-case 111:
+case 110:
 YY_RULE_SETUP
-#line 389 "asn1p_l.l"
+#line 391 "asn1p_l.l"
 return TOK_UTCTime;
 	YY_BREAK
-case 112:
+case 111:
 YY_RULE_SETUP
-#line 390 "asn1p_l.l"
+#line 392 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_UTF8String;
 				REJECT;
 			}
 	YY_BREAK
+case 112:
+YY_RULE_SETUP
+#line 397 "asn1p_l.l"
+return TOK_VideotexString;
+	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 395 "asn1p_l.l"
-return TOK_VideotexString;
+#line 398 "asn1p_l.l"
+return TOK_VisibleString;
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 396 "asn1p_l.l"
-return TOK_VisibleString;
+#line 399 "asn1p_l.l"
+return TOK_WITH;
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 397 "asn1p_l.l"
-return TOK_WITH;
-	YY_BREAK
-case 116:
-YY_RULE_SETUP
-#line 400 "asn1p_l.l"
+#line 402 "asn1p_l.l"
 {
 		CHECK_DASHES;
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_typefieldreference;
 	}
 	YY_BREAK
-case 117:
+case 116:
 YY_RULE_SETUP
-#line 406 "asn1p_l.l"
+#line 408 "asn1p_l.l"
 {
 		CHECK_DASHES;
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_valuefieldreference;
 	}
 	YY_BREAK
-case 118:
+case 117:
 YY_RULE_SETUP
-#line 413 "asn1p_l.l"
+#line 415 "asn1p_l.l"
 {
 		CHECK_DASHES;
 		asn1p_lval.tv_str = strdup(yytext);
@@ -2922,9 +2895,9 @@
 /*
 	 * objectclassreference
 	 */
-case 119:
+case 118:
 YY_RULE_SETUP
-#line 422 "asn1p_l.l"
+#line 424 "asn1p_l.l"
 {
 		CHECK_DASHES;
 		asn1p_lval.tv_str = strdup(yytext);
@@ -2936,43 +2909,43 @@
 	 * NOTE: TOK_objectclassreference must be combined
 	 * with this token to produce true typereference.
 	 */
-case 120:
+case 119:
 YY_RULE_SETUP
-#line 433 "asn1p_l.l"
+#line 435 "asn1p_l.l"
 {
 		CHECK_DASHES;
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_typereference;
 	}
 	YY_BREAK
+case 120:
+YY_RULE_SETUP
+#line 441 "asn1p_l.l"
+return TOK_PPEQ;
+	YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 439 "asn1p_l.l"
-return TOK_PPEQ;
+#line 443 "asn1p_l.l"
+return TOK_ThreeDots;
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 441 "asn1p_l.l"
-return TOK_ThreeDots;
+#line 444 "asn1p_l.l"
+return TOK_TwoDots;
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 442 "asn1p_l.l"
-return TOK_TwoDots;
+#line 446 "asn1p_l.l"
+return yytext[0];
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 444 "asn1p_l.l"
-return yytext[0];
+#line 448 "asn1p_l.l"
+/* Ignore whitespace */
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 446 "asn1p_l.l"
-/* Ignore whitespace */
-	YY_BREAK
-case 126:
-YY_RULE_SETUP
-#line 448 "asn1p_l.l"
+#line 450 "asn1p_l.l"
 {
 		if(TYPE_LIFETIME(1994, 0))
 			fprintf(stderr, "ERROR: ");
@@ -2985,9 +2958,18 @@
 	}
 	YY_BREAK
 
+case 126:
+YY_RULE_SETUP
+#line 463 "asn1p_l.l"
+{
+			asn1p_lval.tv_opaque.buf = strdup(yytext);
+			asn1p_lval.tv_opaque.len = yyleng;
+			return TOK_opaque;
+			}
+	YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 461 "asn1p_l.l"
+#line 469 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
 			asn1p_lval.tv_opaque.len = yyleng;
@@ -2996,39 +2978,31 @@
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 467 "asn1p_l.l"
-{
-			asn1p_lval.tv_opaque.buf = strdup(yytext);
-			asn1p_lval.tv_opaque.len = yyleng;
-			return TOK_opaque;
-			}
-	YY_BREAK
-case 129:
-YY_RULE_SETUP
-#line 473 "asn1p_l.l"
+#line 475 "asn1p_l.l"
 {
 				yy_pop_state();
 				return '}';
 			}
 	YY_BREAK
 
-case 130:
-YY_RULE_SETUP
-#line 480 "asn1p_l.l"
-return yytext[0];	/* Union, Intersection */
-	YY_BREAK
-case 131:
+case 129:
 YY_RULE_SETUP
 #line 482 "asn1p_l.l"
+return yytext[0];	/* Union, Intersection */
+	YY_BREAK
+case 130:
+YY_RULE_SETUP
+#line 484 "asn1p_l.l"
 {
 		fprintf(stderr,
 			"Unexpected token at line %d: \"%s\"\n",
 			yylineno, yytext);
 		while(YYSTATE != INITIAL)
 			yy_pop_state();
-		yy_top_state();		/* Just to use this function. */
-		yyterminate();
-		yy_fatal_error("Unexpected token");
+		if(0) {
+			yy_top_state();	/* Just to use this function. */
+			yy_fatal_error("Parse error");
+		}
 		return -1;
 }
 	YY_BREAK
@@ -3039,19 +3013,19 @@
 case YY_STATE_EOF(opaque):
 case YY_STATE_EOF(encoding_control):
 case YY_STATE_EOF(with_syntax):
-#line 494 "asn1p_l.l"
+#line 497 "asn1p_l.l"
 {
 		while(YYSTATE != INITIAL)
 			yy_pop_state();
 		yyterminate();
 	}
 	YY_BREAK
-case 132:
+case 131:
 YY_RULE_SETUP
-#line 501 "asn1p_l.l"
+#line 504 "asn1p_l.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 3055 "asn1p_l.c"
+#line 3029 "asn1p_l.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -3338,7 +3312,7 @@
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 721 )
+			if ( yy_current_state >= 709 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3368,11 +3342,11 @@
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 721 )
+		if ( yy_current_state >= 709 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 720);
+	yy_is_jam = (yy_current_state == 708);
 	if ( ! yy_is_jam )
 		*yy_state_ptr++ = yy_current_state;
 
@@ -3933,7 +3907,7 @@
 	return 0;
 	}
 #endif
-#line 501 "asn1p_l.l"
+#line 504 "asn1p_l.l"
 
 
 /*
diff --git a/libasn1parser/asn1p_l.l b/libasn1parser/asn1p_l.l
index 6a2a0cc..efa4c1a 100644
--- a/libasn1parser/asn1p_l.l
+++ b/libasn1parser/asn1p_l.l
@@ -285,7 +285,9 @@
 	}
 
 ABSENT			return TOK_ABSENT;
+	/*
 ABSTRACT-SYNTAX		return TOK_ABSTRACT_SYNTAX;
+	*/
 ALL			return TOK_ALL;
 ANY			{
 				/* Appeared in 1990, removed in 1997 */
@@ -485,9 +487,10 @@
 			yylineno, yytext);
 		while(YYSTATE != INITIAL)
 			yy_pop_state();
-		yy_top_state();		/* Just to use this function. */
-		yyterminate();
-		yy_fatal_error("Unexpected token");
+		if(0) {
+			yy_top_state();	/* Just to use this function. */
+			yy_fatal_error("Parse error");
+		}
 		return -1;
 }
 
diff --git a/libasn1parser/asn1p_value.c b/libasn1parser/asn1p_value.c
index fb3a945..b382409 100644
--- a/libasn1parser/asn1p_value.c
+++ b/libasn1parser/asn1p_value.c
@@ -110,13 +110,12 @@
 
 asn1p_value_t *
 asn1p_value_clone(asn1p_value_t *v) {
-	asn1p_value_t *clone;
+	asn1p_value_t *clone = NULL;
 	if(v) {
 		switch(v->type) {
 		case ATV_NOVALUE:
-			return calloc(1, sizeof(*v));
-		case ATV_REFERENCED:
-			return asn1p_value_fromref(v->value.reference, 1);
+		case ATV_NULL:
+			return calloc(1, sizeof(*clone));
 		case ATV_REAL:
 			return asn1p_value_fromdouble(v->value.v_double);
 		case ATV_INTEGER:
@@ -140,7 +139,24 @@
 		case ATV_BITVECTOR:
 			return asn1p_value_frombuf(v->value.binary_vector.bits,
 				v->value.binary_vector.size_in_bits, 1);
+		case ATV_REFERENCED:
+			return asn1p_value_fromref(v->value.reference, 1);
+		case ATV_CHOICE_IDENTIFIER: {
+			char *id = v->value.choice_identifier.identifier;
+			clone = calloc(1, sizeof(*clone));
+			if(!clone) return NULL;
+			clone->type = v->type;
+			id = strdup(id);
+			if(!id) { asn1p_value_free(clone); return NULL; }
+			clone->value.choice_identifier.identifier = id;
+			v = asn1p_value_clone(v->value.choice_identifier.value);
+			if(!v) { asn1p_value_free(clone); return NULL; }
+			clone->value.choice_identifier.value = v;
+			return clone;
+		    }
 		}
+
+		assert(!"UNREACHABLE");
 	}
 	return v;
 }
@@ -150,16 +166,14 @@
 	if(v) {
 		switch(v->type) {
 		case ATV_NOVALUE:
+		case ATV_NULL:
 			break;
-		case ATV_REFERENCED:
-			asn1p_ref_free(v->value.reference);
-			break;
+		case ATV_REAL:
 		case ATV_INTEGER:
 		case ATV_MIN:
 		case ATV_MAX:
 		case ATV_FALSE:
 		case ATV_TRUE:
-		case ATV_REAL:
 			/* No freeing necessary */
 			break;
 		case ATV_STRING:
@@ -171,6 +185,13 @@
 			assert(v->value.binary_vector.bits);
 			free(v->value.binary_vector.bits);
 			break;
+		case ATV_REFERENCED:
+			asn1p_ref_free(v->value.reference);
+			break;
+		case ATV_CHOICE_IDENTIFIER:
+			free(v->value.choice_identifier.identifier);
+			asn1p_value_free(v->value.choice_identifier.value);
+			break;
 		}
 		free(v);
 	}
diff --git a/libasn1parser/asn1p_value.h b/libasn1parser/asn1p_value.h
index 087521b..5310b01 100644
--- a/libasn1parser/asn1p_value.h
+++ b/libasn1parser/asn1p_value.h
@@ -13,9 +13,9 @@
 	 */
 	enum {
 		ATV_NOVALUE,
-		ATV_REFERENCED,
-		ATV_INTEGER,
-		ATV_REAL,
+		ATV_NULL,	/* A "NULL" value of type NULL. */
+		ATV_REAL,	/* A constant floating-point value */
+		ATV_INTEGER,	/* An integer constant */
 		ATV_MAX,
 		ATV_MIN,
 		ATV_TRUE,
@@ -23,6 +23,8 @@
 		ATV_STRING,
 		ATV_UNPARSED,
 		ATV_BITVECTOR,
+		ATV_REFERENCED,	/* Reference to a value defined elsewhere */
+		ATV_CHOICE_IDENTIFIER,	/* ChoiceIdentifier value */
 	} type;	/* Value type and location */
 
 	union {
@@ -40,6 +42,10 @@
 			uint8_t *bits;
 			int size_in_bits;
 		} binary_vector;
+		struct {
+			char *identifier;
+			struct asn1p_value_s *value;
+		} choice_identifier;
 	} value;
 } asn1p_value_t;
 
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 7d927e9..4cbd21f 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -182,7 +182,7 @@
 	asn1p_value_t		*a_value;	/* Number, DefinedValue, etc */
 	struct asn1p_param_s	 a_parg;	/* A parameter argument */
 	asn1p_paramlist_t	*a_plist;	/* A pargs list */
-	enum asn1p_expr_marker_e a_marker;	/* OPTIONAL/DEFAULT */
+	struct asn1p_expr_marker_s a_marker;	/* OPTIONAL/DEFAULT */
 	enum asn1p_constr_pres_e a_pres;	/* PRESENT/ABSENT/OPTIONAL */
 	asn1_integer_t		 a_int;
 	char	*tv_str;
@@ -205,11 +205,11 @@
 
 
 
-#define	YYFINAL		397
+#define	YYFINAL		399
 #define	YYFLAG		-32768
 #define	YYNTBASE	115
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 213)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 211)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -263,96 +263,96 @@
    231,   233,   239,   240,   242,   244,   248,   251,   256,   261,
    262,   264,   265,   272,   274,   277,   279,   281,   283,   287,
    291,   295,   297,   299,   304,   309,   314,   320,   326,   328,
-   333,   338,   340,   344,   346,   350,   354,   356,   360,   362,
-   366,   368,   370,   372,   374,   379,   380,   384,   386,   388,
-   390,   392,   394,   396,   400,   402,   405,   407,   409,   411,
-   413,   416,   419,   421,   423,   426,   429,   431,   433,   435,
-   437,   440,   442,   445,   447,   449,   451,   453,   455,   457,
-   459,   461,   463,   465,   467,   469,   471,   473,   475,   477,
-   479,   481,   483,   484,   486,   488,   493,   497,   502,   504,
-   508,   514,   516,   520,   524,   528,   533,   537,   539,   543,
-   547,   551,   555,   557,   559,   561,   564,   567,   571,   573,
-   575,   577,   579,   581,   583,   585,   591,   593,   597,   599,
-   603,   604,   606,   608,   610,   612,   614,   616,   620,   625,
-   627,   631,   634,   638,   640,   644,   645,   647,   649,   652,
-   654,   656,   657,   661,   664,   668,   670,   674,   676,   681,
-   686,   688,   690,   692,   694,   695,   697,   699,   702,   705,
-   707,   709,   711
+   333,   338,   340,   344,   346,   350,   354,   358,   360,   364,
+   366,   370,   372,   374,   376,   378,   383,   387,   388,   392,
+   394,   396,   398,   400,   402,   404,   406,   408,   410,   414,
+   416,   419,   421,   423,   425,   427,   430,   433,   435,   437,
+   440,   443,   445,   447,   449,   451,   454,   456,   459,   461,
+   463,   465,   467,   469,   471,   473,   475,   477,   479,   481,
+   483,   485,   487,   489,   491,   493,   495,   497,   498,   500,
+   502,   507,   511,   516,   518,   522,   528,   530,   534,   538,
+   542,   547,   551,   553,   557,   561,   565,   569,   571,   573,
+   575,   578,   581,   585,   587,   589,   591,   593,   595,   597,
+   599,   605,   607,   611,   613,   617,   618,   620,   622,   624,
+   626,   628,   630,   634,   639,   641,   645,   648,   652,   654,
+   658,   659,   661,   663,   666,   669,   673,   675,   679,   681,
+   686,   691,   693,   695,   697,   699,   700,   702,   704,   707,
+   710,   712,   714,   716
 };
 
 static const short yyrhs[] = {   116,
-     0,   117,     0,   116,   117,     0,   210,   118,    34,   122,
+     0,   117,     0,   116,   117,     0,   208,   118,    34,   122,
      3,    21,   125,    39,     0,     0,   119,     0,   104,   120,
    105,     0,   104,   105,     0,   121,     0,   120,   121,     0,
-   212,     0,   212,   106,     9,   107,     0,     9,     0,     0,
+   210,     0,   210,   106,     9,   107,     0,     9,     0,     0,
    123,     0,   124,     0,   123,   124,     0,    41,    84,     0,
     52,    84,     0,    20,    84,     0,    43,    53,     0,    12,
     57,     0,     0,   126,     0,   127,     0,   126,   127,     0,
    129,     0,   134,     0,   142,     0,   168,     0,   137,     0,
      0,    38,    12,   128,     0,   176,     0,    54,   130,   108,
      0,    54,    46,     0,   131,     0,   130,   131,     0,   132,
-    46,   210,   118,     0,   133,     0,   132,   109,   133,     0,
-   210,     0,   212,     0,    42,   135,   108,     0,    42,    17,
+    46,   208,   118,     0,   133,     0,   132,   109,   133,     0,
+   208,     0,   210,     0,    42,   135,   108,     0,    42,    17,
    108,     0,    42,   108,     0,   136,     0,   135,   109,   136,
-     0,   210,     0,   212,     0,   210,   138,     3,   104,   139,
+     0,   208,     0,   210,     0,   208,   138,     3,   104,   139,
    105,     0,   163,     0,   173,     0,     0,   140,     0,   141,
-     0,   140,   109,   141,     0,   102,     0,   184,     0,   210,
-     3,   208,    87,     0,   210,     3,   161,     0,   210,     3,
-   151,     0,   210,   104,   143,   105,     3,   161,     0,   144,
-     0,   143,   109,   144,     0,   210,     0,   210,   110,   212,
-     0,   173,   110,   212,     0,   146,     0,   145,   109,   146,
-     0,   161,     0,   212,     0,   148,     0,   147,   109,   148,
-     0,   212,   161,   200,     0,    30,    68,   161,     0,   160,
-     0,   150,     0,   149,   109,   150,     0,   212,   161,     0,
+     0,   140,   109,   141,     0,   102,     0,   184,     0,   208,
+     3,   206,    87,     0,   208,     3,   161,     0,   208,     3,
+   151,     0,   208,   104,   143,   105,     3,   161,     0,   144,
+     0,   143,   109,   144,     0,   208,     0,   208,   110,   210,
+     0,   173,   110,   210,     0,   146,     0,   145,   109,   146,
+     0,   161,     0,   210,     0,   148,     0,   147,   109,   148,
+     0,   210,   161,   200,     0,    30,    68,   161,     0,   160,
+     0,   150,     0,   149,   109,   150,     0,   210,   161,     0,
    160,     0,    28,   104,   153,   105,   155,     0,     0,    88,
      0,   154,     0,   153,   109,   154,     0,   166,   200,     0,
    166,   161,   200,   152,     0,   166,   166,   200,   152,     0,
      0,   156,     0,     0,    95,    82,   104,   157,   158,   105,
      0,   159,     0,   158,   159,     0,     4,     0,   166,     0,
-   102,     0,   102,   111,   171,     0,   102,   111,   207,     0,
-   208,   162,   180,     0,   175,     0,   176,     0,    27,   104,
+   102,     0,   102,   111,   171,     0,   102,   111,   205,     0,
+   206,   162,   180,     0,   175,     0,   176,     0,    27,   104,
    149,   105,     0,    78,   104,   147,   105,     0,    79,   104,
-   147,   105,     0,    78,   180,    68,   208,   162,     0,    79,
-   180,    68,   208,   162,     0,    18,     0,    18,    35,    25,
-   212,     0,   210,   104,   145,   105,     0,   163,     0,    56,
-    68,   163,     0,    11,     0,    11,   112,   210,     0,    11,
-   112,   212,     0,   211,     0,   211,   112,   164,     0,   165,
-     0,   164,   112,   165,     0,   167,     0,   167,     0,    13,
-     0,    14,     0,   212,   138,     3,   169,     0,     0,   104,
-   170,   172,     0,     5,     0,     7,     0,     6,     0,   207,
-     0,   171,     0,   212,     0,   210,   112,   212,     0,     4,
-     0,   172,     4,     0,    24,     0,    63,     0,    76,     0,
-   174,     0,    67,    81,     0,    65,    51,     0,    77,     0,
-    44,     0,    36,    71,     0,    26,    81,     0,    91,     0,
-    47,     0,    58,     0,    40,     0,    22,    81,     0,   173,
-     0,   174,   204,     0,    23,     0,    48,     0,    49,     0,
-    50,     0,    59,     0,    64,     0,    74,     0,    83,     0,
-    85,     0,    90,     0,    92,     0,    93,     0,    94,     0,
-    66,     0,    99,     0,   100,     0,    97,     0,    98,     0,
-    96,     0,     0,   181,     0,   182,     0,    80,   106,   183,
-   107,     0,   106,   183,   107,     0,   182,   106,   183,   107,
-     0,   184,     0,   184,   109,   102,     0,   184,   109,   102,
-   109,   184,     0,   185,     0,   184,   177,   185,     0,   184,
-   178,   185,     0,   185,   179,   185,     0,   187,   106,   183,
-   107,     0,   106,   183,   107,     0,   188,     0,   188,   186,
-   188,     0,    61,   186,   188,     0,   188,   186,    60,     0,
-    61,   186,    60,     0,   194,     0,   189,     0,   101,     0,
-   101,   113,     0,   113,   101,     0,   113,   101,   113,     0,
-    80,     0,    46,     0,   207,     0,   212,     0,     6,     0,
-    45,     0,    86,     0,    95,    30,   104,   190,   105,     0,
-   191,     0,   190,   109,   191,     0,   102,     0,   212,   180,
-   192,     0,     0,   193,     0,    73,     0,    15,     0,    69,
-     0,   195,     0,   196,     0,   104,   210,   105,     0,   195,
-   104,   197,   105,     0,   198,     0,   197,   109,   198,     0,
-   114,   199,     0,   114,   112,   199,     0,   212,     0,   199,
-   112,   212,     0,     0,   201,     0,    69,     0,    33,   202,
-     0,   188,     0,   173,     0,     0,   104,   203,   172,     0,
-   104,   105,     0,   104,   205,   105,     0,   206,     0,   205,
-   109,   206,     0,   212,     0,   212,   106,   207,   107,     0,
-   212,   106,   171,   107,     0,   207,     0,   102,     0,     9,
-     0,    10,     0,     0,   209,     0,   103,     0,   103,    52,
-     0,   103,    41,     0,    11,     0,    12,     0,    12,     0,
-     8,     0
+   147,   105,     0,    78,   180,    68,   206,   162,     0,    79,
+   180,    68,   206,   162,     0,    18,     0,    18,    35,    25,
+   210,     0,   208,   104,   145,   105,     0,   163,     0,    56,
+    68,   163,     0,    11,     0,    11,   112,   208,     0,   209,
+   112,   208,     0,    11,   112,   210,     0,   209,     0,   209,
+   112,   164,     0,   165,     0,   164,   112,   165,     0,   167,
+     0,   167,     0,    13,     0,    14,     0,   210,   138,     3,
+   169,     0,   210,   110,   169,     0,     0,   104,   170,   172,
+     0,    63,     0,    45,     0,    86,     0,     5,     0,     7,
+     0,     6,     0,   205,     0,   171,     0,   210,     0,   208,
+   112,   210,     0,     4,     0,   172,     4,     0,    24,     0,
+    63,     0,    76,     0,   174,     0,    67,    81,     0,    65,
+    51,     0,    77,     0,    44,     0,    36,    71,     0,    26,
+    81,     0,    91,     0,    47,     0,    58,     0,    40,     0,
+    22,    81,     0,   173,     0,   174,   202,     0,    23,     0,
+    48,     0,    49,     0,    50,     0,    59,     0,    64,     0,
+    74,     0,    83,     0,    85,     0,    90,     0,    92,     0,
+    93,     0,    94,     0,    66,     0,    99,     0,   100,     0,
+    97,     0,    98,     0,    96,     0,     0,   181,     0,   182,
+     0,    80,   106,   183,   107,     0,   106,   183,   107,     0,
+   182,   106,   183,   107,     0,   184,     0,   184,   109,   102,
+     0,   184,   109,   102,   109,   184,     0,   185,     0,   184,
+   177,   185,     0,   184,   178,   185,     0,   185,   179,   185,
+     0,   187,   106,   183,   107,     0,   106,   183,   107,     0,
+   188,     0,   188,   186,   188,     0,    61,   186,   188,     0,
+   188,   186,    60,     0,    61,   186,    60,     0,   194,     0,
+   189,     0,   101,     0,   101,   113,     0,   113,   101,     0,
+   113,   101,   113,     0,    80,     0,    46,     0,   205,     0,
+   210,     0,     6,     0,    45,     0,    86,     0,    95,    30,
+   104,   190,   105,     0,   191,     0,   190,   109,   191,     0,
+   102,     0,   210,   180,   192,     0,     0,   193,     0,    73,
+     0,    15,     0,    69,     0,   195,     0,   196,     0,   104,
+   208,   105,     0,   195,   104,   197,   105,     0,   198,     0,
+   197,   109,   198,     0,   114,   199,     0,   114,   112,   199,
+     0,   210,     0,   199,   112,   210,     0,     0,   201,     0,
+    69,     0,    33,   169,     0,   104,   105,     0,   104,   203,
+   105,     0,   204,     0,   203,   109,   204,     0,   210,     0,
+   210,   106,   205,   107,     0,   210,   106,   171,   107,     0,
+   205,     0,   102,     0,     9,     0,    10,     0,     0,   207,
+     0,   103,     0,   103,    52,     0,   103,    41,     0,    11,
+     0,    12,     0,    12,     0,     8,     0
 };
 
 #endif
@@ -370,21 +370,21 @@
    892,   897,   907,   909,   912,   920,   926,   935,   941,   958,
    960,   965,   969,   974,   979,   985,   989,  1000,  1009,  1018,
   1029,  1051,  1055,  1061,  1067,  1073,  1079,  1088,  1097,  1103,
-  1117,  1141,  1148,  1162,  1171,  1181,  1191,  1199,  1220,  1229,
-  1238,  1239,  1241,  1248,  1260,  1270,  1272,  1277,  1281,  1285,
-  1289,  1292,  1297,  1309,  1325,  1336,  1350,  1352,  1353,  1354,
-  1355,  1356,  1357,  1358,  1359,  1360,  1361,  1362,  1368,  1370,
-  1371,  1374,  1381,  1393,  1395,  1399,  1403,  1404,  1405,  1406,
-  1407,  1411,  1412,  1413,  1414,  1418,  1419,  1426,  1426,  1427,
-  1427,  1428,  1430,  1432,  1437,  1441,  1450,  1454,  1459,  1463,
-  1469,  1479,  1483,  1486,  1489,  1494,  1503,  1511,  1517,  1524,
-  1532,  1540,  1549,  1552,  1557,  1559,  1560,  1561,  1564,  1568,
-  1573,  1577,  1588,  1593,  1598,  1605,  1611,  1615,  1620,  1626,
-  1638,  1640,  1643,  1647,  1650,  1655,  1659,  1667,  1682,  1688,
-  1695,  1708,  1720,  1735,  1739,  1756,  1758,  1761,  1765,  1771,
-  1774,  1776,  1776,  1796,  1801,  1806,  1812,  1818,  1826,  1834,
-  1842,  1849,  1859,  1864,  1894,  1896,  1899,  1904,  1908,  1914,
-  1919,  1926,  1933
+  1117,  1141,  1148,  1162,  1171,  1181,  1191,  1201,  1209,  1230,
+  1239,  1248,  1249,  1251,  1258,  1270,  1280,  1288,  1288,  1293,
+  1298,  1303,  1308,  1312,  1316,  1320,  1323,  1328,  1340,  1356,
+  1367,  1381,  1383,  1384,  1385,  1386,  1387,  1388,  1389,  1390,
+  1391,  1392,  1393,  1399,  1401,  1402,  1405,  1412,  1424,  1426,
+  1430,  1434,  1435,  1436,  1437,  1438,  1442,  1443,  1444,  1445,
+  1449,  1450,  1457,  1457,  1458,  1458,  1459,  1461,  1463,  1468,
+  1472,  1481,  1485,  1490,  1494,  1500,  1510,  1514,  1517,  1520,
+  1525,  1534,  1542,  1548,  1555,  1563,  1571,  1580,  1583,  1588,
+  1590,  1591,  1592,  1595,  1599,  1604,  1608,  1619,  1623,  1628,
+  1635,  1641,  1645,  1650,  1656,  1668,  1670,  1673,  1677,  1680,
+  1685,  1689,  1697,  1712,  1718,  1725,  1738,  1750,  1765,  1769,
+  1786,  1791,  1794,  1799,  1821,  1826,  1831,  1837,  1843,  1851,
+  1859,  1867,  1874,  1884,  1889,  1919,  1921,  1924,  1929,  1933,
+  1939,  1944,  1951,  1958
 };
 #endif
 
@@ -423,16 +423,15 @@
 "optUnique","ClassFieldList","ClassField","optWithSyntax","WithSyntax","@2",
 "WithSyntaxFormat","WithSyntaxFormatToken","ExtensionAndException","Type","TypeDeclaration",
 "ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
-"ClassFieldIdentifier","ClassFieldName","ValueDefinition","InlineOrDefinedValue",
-"@3","DefinedValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
-"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
-"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
-"ConstraintRangeSpec","ConstraintSpec","ConstraintValue","WithComponents","WithComponentsList",
-"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
-"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
-"ComponentIdList","optMarker","Marker","DefaultValue","@4","UniverationDefinition",
-"UniverationList","UniverationElement","SignedNumber","optTag","Tag","TypeRefName",
-"ObjectClassReference","Identifier", NULL
+"ClassFieldIdentifier","ClassFieldName","ValueDefinition","Value","@3","DefinedValue",
+"Opaque","BasicTypeId","BasicTypeId_UniverationCompatible","BasicType","BasicString",
+"Union","Intersection","Except","optConstraints","Constraints","SetOfConstraints",
+"ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement","ConstraintRangeSpec",
+"ConstraintSpec","ConstraintValue","WithComponents","WithComponentsList","WithComponentsElement",
+"optPresenceConstraint","PresenceConstraint","TableConstraint","SimpleTableConstraint",
+"ComponentRelationConstraint","AtNotationList","AtNotationElement","ComponentIdList",
+"optMarker","Marker","UniverationDefinition","UniverationList","UniverationElement",
+"SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference","Identifier", NULL
 };
 #endif
 
@@ -448,21 +447,21 @@
    150,   151,   152,   152,   153,   153,   154,   154,   154,   155,
    155,   157,   156,   158,   158,   159,   159,   160,   160,   160,
    161,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-   162,   162,   162,   163,   163,   163,   163,   163,   164,   164,
-   165,   166,   167,   167,   168,   170,   169,   169,   169,   169,
-   169,   169,   171,   171,   172,   172,   173,   173,   173,   173,
-   173,   173,   173,   173,   173,   173,   173,   173,   174,   174,
-   174,   175,   175,   176,   176,   176,   176,   176,   176,   176,
-   176,   176,   176,   176,   176,   176,   176,   177,   177,   178,
-   178,   179,   180,   180,   181,   181,   182,   182,   183,   183,
-   183,   184,   184,   184,   184,   185,   185,   185,   185,   185,
-   185,   185,   185,   185,   186,   186,   186,   186,   187,   187,
-   188,   188,   188,   188,   188,   189,   190,   190,   191,   191,
-   192,   192,   193,   193,   193,   194,   194,   195,   196,   197,
-   197,   198,   198,   199,   199,   200,   200,   201,   201,   202,
-   202,   203,   202,   204,   204,   205,   205,   206,   206,   206,
-   206,   206,   207,   207,   208,   208,   209,   209,   209,   210,
-   210,   211,   212
+   162,   162,   162,   163,   163,   163,   163,   163,   163,   164,
+   164,   165,   166,   167,   167,   168,   169,   170,   169,   169,
+   169,   169,   169,   169,   169,   169,   169,   171,   171,   172,
+   172,   173,   173,   173,   173,   173,   173,   173,   173,   173,
+   173,   173,   173,   174,   174,   174,   175,   175,   176,   176,
+   176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
+   176,   176,   177,   177,   178,   178,   179,   180,   180,   181,
+   181,   182,   182,   183,   183,   183,   184,   184,   184,   184,
+   185,   185,   185,   185,   185,   185,   185,   185,   185,   186,
+   186,   186,   186,   187,   187,   188,   188,   188,   188,   188,
+   189,   190,   190,   191,   191,   192,   192,   193,   193,   193,
+   194,   194,   195,   196,   197,   197,   198,   198,   199,   199,
+   200,   200,   201,   201,   202,   202,   203,   203,   204,   204,
+   204,   204,   204,   205,   205,   206,   206,   207,   207,   207,
+   208,   208,   209,   210
 };
 
 static const short yyr2[] = {     0,
@@ -477,279 +476,271 @@
      1,     5,     0,     1,     1,     3,     2,     4,     4,     0,
      1,     0,     6,     1,     2,     1,     1,     1,     3,     3,
      3,     1,     1,     4,     4,     4,     5,     5,     1,     4,
-     4,     1,     3,     1,     3,     3,     1,     3,     1,     3,
-     1,     1,     1,     1,     4,     0,     3,     1,     1,     1,
-     1,     1,     1,     3,     1,     2,     1,     1,     1,     1,
-     2,     2,     1,     1,     2,     2,     1,     1,     1,     1,
-     2,     1,     2,     1,     1,     1,     1,     1,     1,     1,
+     4,     1,     3,     1,     3,     3,     3,     1,     3,     1,
+     3,     1,     1,     1,     1,     4,     3,     0,     3,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
+     2,     1,     1,     1,     1,     2,     2,     1,     1,     2,
+     2,     1,     1,     1,     1,     2,     1,     2,     1,     1,
      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     0,     1,     1,     4,     3,     4,     1,     3,
-     5,     1,     3,     3,     3,     4,     3,     1,     3,     3,
-     3,     3,     1,     1,     1,     2,     2,     3,     1,     1,
-     1,     1,     1,     1,     1,     5,     1,     3,     1,     3,
-     0,     1,     1,     1,     1,     1,     1,     3,     4,     1,
-     3,     2,     3,     1,     3,     0,     1,     1,     2,     1,
-     1,     0,     3,     2,     3,     1,     3,     1,     4,     4,
-     1,     1,     1,     1,     0,     1,     1,     2,     2,     1,
-     1,     1,     1
+     1,     1,     1,     1,     1,     1,     1,     0,     1,     1,
+     4,     3,     4,     1,     3,     5,     1,     3,     3,     3,
+     4,     3,     1,     3,     3,     3,     3,     1,     1,     1,
+     2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
+     5,     1,     3,     1,     3,     0,     1,     1,     1,     1,
+     1,     1,     3,     4,     1,     3,     2,     3,     1,     3,
+     0,     1,     1,     2,     2,     3,     1,     3,     1,     4,
+     4,     1,     1,     1,     1,     0,     1,     1,     2,     2,
+     1,     1,     1,     1
 };
 
 static const short yydefact[] = {     0,
-   250,   251,     1,     2,     5,     3,     0,     0,     6,   253,
+   251,   252,     1,     2,     5,     3,     0,     0,     6,   254,
     13,     8,     0,     9,    11,    14,     7,    10,     0,     0,
      0,     0,     0,     0,     0,    15,    16,     0,    22,    20,
-    18,    21,    19,     0,    17,    12,    23,   154,     0,     0,
-   155,   156,   157,     0,   158,   159,   167,   160,   161,   162,
-   163,   164,   165,   166,     0,    24,    25,    27,    28,    31,
+    18,    21,    19,     0,    17,    12,    23,   159,     0,     0,
+   160,   161,   162,     0,   163,   164,   172,   165,   166,   167,
+   168,   169,   170,   171,     0,    24,    25,    27,    28,    31,
     29,    30,    34,     0,     0,    32,     0,    46,     0,    47,
     49,    50,    36,     0,    37,     0,    40,    42,    43,     4,
-    26,   245,   114,   252,     0,   137,     0,     0,   150,   144,
-   148,   149,   138,     0,     0,   139,   143,   147,     0,     0,
-    52,    53,   140,   117,     0,    33,    45,    44,     0,    35,
-    38,     0,     0,     0,   247,    62,    61,     0,   246,     0,
-   151,   146,   145,   142,   141,     0,    64,     0,    66,     0,
-     0,     0,    48,     5,    41,     0,   249,   248,   114,   252,
-   109,     0,     0,   173,   173,    60,   173,   112,   152,   140,
-   102,   103,     0,   115,   116,     0,     0,     0,     0,    54,
-   123,   124,   118,   119,   121,   128,   130,   129,   243,   244,
-   126,   125,   132,   131,     0,   133,    39,     0,    85,   245,
-   122,     0,     0,     0,     0,     0,     0,     0,   174,   175,
-     0,     0,   101,     0,   153,   245,   245,    65,    68,    67,
-   203,   204,   200,     0,   199,   205,     0,    58,     0,     0,
-     0,    55,    56,    59,   182,     0,   188,   194,   193,   216,
-   217,   201,   202,     0,     0,     0,    90,     0,     0,   228,
-   226,   226,    87,   227,     0,     0,    98,     0,    78,    81,
-   245,   113,     0,     0,     0,    73,    77,   245,     0,   179,
-   245,     0,     0,   245,   242,   234,     0,   236,   241,   238,
-     0,    69,    71,    72,    63,   195,     0,     0,     0,     0,
-     0,    51,     0,   170,   171,   168,   169,     0,     0,   172,
-     0,     0,     0,     0,   120,   135,   127,   134,     0,    82,
-    91,    86,   232,   231,   230,   229,    83,    83,   110,     0,
-   104,     0,    80,     0,   245,   105,     0,   226,   177,     0,
-     0,     0,   106,     0,   235,     0,     0,   111,   245,   196,
-   197,   192,   190,     0,   218,   187,    57,   183,   184,   185,
-     0,   191,   189,     0,     0,   220,   136,     0,     0,    84,
-    88,    89,    99,   100,    79,   176,    76,    74,    75,   180,
-   107,   178,   108,   237,     0,     0,    70,   198,   209,     0,
-   207,   173,   186,     0,   222,   224,   219,     0,    92,   233,
-     0,   240,   239,   206,     0,   211,   223,     0,   221,     0,
-   181,   208,   214,   215,   213,   210,   212,   225,    96,     0,
-    94,    97,    93,    95,     0,     0,     0
+    26,   246,   114,   253,     0,   142,     0,     0,   155,   149,
+   153,   154,   143,     0,     0,   144,   148,   152,     0,     0,
+    52,    53,   145,   118,     0,    33,    45,    44,     0,    35,
+    38,     0,     0,     0,   248,    62,    61,     0,   247,     0,
+   156,   151,   150,   147,   146,     0,    64,     0,    66,     0,
+     0,     0,    48,     5,    41,     0,   250,   249,   114,   253,
+   109,     0,     0,   178,   178,    60,   178,   112,   157,   145,
+   102,   103,     0,   115,   117,     0,     0,     0,     0,    54,
+   124,   125,   119,   120,   122,   116,   133,   135,   134,   244,
+   245,   131,   130,   132,   128,   126,   137,   136,     0,   138,
+    39,     0,    85,   246,   123,     0,     0,     0,     0,     0,
+     0,     0,   179,   180,     0,     0,   101,     0,   158,   246,
+   246,    65,    68,    67,   208,   209,   205,     0,   204,   210,
+     0,    58,     0,     0,     0,    55,    56,    59,   187,     0,
+   193,   199,   198,   221,   222,   206,   207,     0,     0,     0,
+     0,    90,     0,     0,   233,   231,   231,    87,   232,     0,
+     0,    98,     0,    78,    81,   246,   113,     0,     0,     0,
+    73,    77,   246,     0,   184,   246,     0,     0,   246,   243,
+   235,     0,   237,   242,   239,     0,    69,    71,    72,    63,
+   200,     0,     0,     0,     0,     0,    51,     0,   175,   176,
+   173,   174,     0,     0,   177,     0,     0,     0,     0,   121,
+   140,   129,   139,   127,     0,    82,    91,    86,   234,    83,
+    83,   110,     0,   104,     0,    80,     0,   246,   105,     0,
+   231,   182,     0,     0,     0,   106,     0,   236,     0,     0,
+   111,   246,   201,   202,   197,   195,     0,   223,   192,    57,
+   188,   189,   190,     0,   196,   194,     0,     0,   225,   141,
+     0,    84,    88,    89,    99,   100,   138,    79,   181,    76,
+    74,    75,   185,   107,   183,   108,   238,     0,     0,    70,
+   203,   214,     0,   212,   178,   191,     0,   227,   229,   224,
+     0,    92,     0,   241,   240,   211,     0,   216,   228,     0,
+   226,     0,   186,   213,   219,   220,   218,   215,   217,   230,
+    96,     0,    94,    97,    93,    95,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   395,
+static const short yydefgoto[] = {   397,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
     56,    57,   106,    58,    74,    75,    76,    77,    59,    69,
-    70,    60,   100,   211,   212,   213,    61,   126,   127,   261,
-   262,   245,   246,   238,   239,   116,   341,   178,   179,   290,
-   291,   380,   390,   391,   247,   263,   147,   148,   163,   164,
-   180,   181,    62,   172,   225,   173,   287,   149,   103,   151,
-   152,   278,   279,   281,   188,   189,   190,   249,   250,   215,
-   268,   216,   217,   218,   360,   361,   386,   387,   219,   220,
-   221,   335,   336,   365,   233,   234,   296,   339,   195,   257,
-   258,   222,   235,   119,   153,   104,   223
+    70,    60,   100,   215,   216,   217,    61,   126,   127,   266,
+   267,   250,   251,   243,   244,   116,   343,   182,   183,   296,
+   297,   382,   392,   393,   252,   268,   147,   148,   163,   164,
+   184,   185,    62,   176,   229,   177,   292,   149,   103,   151,
+   152,   283,   284,   286,   192,   193,   194,   254,   255,   219,
+   273,   220,   221,   222,   363,   364,   388,   389,   223,   224,
+   225,   338,   339,   368,   238,   239,   199,   262,   263,   226,
+   240,   119,   179,   104,   227
 };
 
-static const short yypact[] = {   254,
--32768,-32768,   254,-32768,   -79,-32768,    13,     7,-32768,-32768,
--32768,-32768,    35,-32768,   -51,   202,-32768,-32768,    61,    20,
-    11,    19,    57,    44,    90,   202,-32768,    23,-32768,-32768,
--32768,-32768,-32768,   115,-32768,-32768,   351,-32768,   176,    12,
--32768,-32768,-32768,   174,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   151,   351,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   220,   565,-32768,    99,-32768,   199,-32768,
--32768,-32768,-32768,    24,-32768,   -20,-32768,-32768,-32768,-32768,
--32768,    -9,   106,-32768,   140,-32768,   145,   163,-32768,-32768,
--32768,-32768,-32768,   186,   182,-32768,-32768,-32768,   582,   249,
--32768,-32768,-32768,   143,   278,-32768,-32768,-32768,   228,-32768,
--32768,   254,   228,   180,   129,-32768,-32768,   428,-32768,   228,
--32768,-32768,-32768,-32768,-32768,   101,-32768,   147,   191,   195,
-   300,    74,-32768,   -79,-32768,   300,-32768,-32768,   105,   214,
-   285,   217,   255,    89,   124,-32768,   -40,-32768,-32768,   218,
--32768,-32768,   221,-32768,-32768,   328,   582,   324,   324,    51,
--32768,-32768,   222,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   223,-32768,-32768,   142,-32768,    40,
--32768,   308,    37,   304,   230,    48,   155,   269,-32768,   232,
-    48,   271,-32768,    42,-32768,    26,   237,-32768,-32768,-32768,
--32768,-32768,-32768,   -26,-32768,-32768,   311,-32768,   254,   155,
-   238,   236,-32768,   206,   251,   242,   -26,-32768,-32768,   245,
--32768,-32768,-32768,   300,   346,   324,   256,   300,   320,-32768,
-     5,     5,-32768,-32768,   505,   324,   241,   144,-32768,-32768,
-   237,-32768,   155,   286,   153,-32768,-32768,   237,   246,   171,
-   237,   155,   167,   237,-32768,-32768,   168,-32768,-32768,   252,
-   170,-32768,-32768,-32768,-32768,   248,   265,    82,   266,   250,
-   262,-32768,    51,-32768,-32768,-32768,-32768,   155,   155,-32768,
-   155,   155,   188,   258,-32768,-32768,   369,-32768,   293,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   288,   288,-32768,   280,
--32768,    37,-32768,   270,   237,-32768,    48,     5,-32768,   277,
-   505,   273,-32768,   505,-32768,    54,   280,-32768,    26,-32768,
-   268,-32768,-32768,    60,-32768,-32768,-32768,-32768,-32768,-32768,
-   275,-32768,-32768,     9,   177,-32768,-32768,   282,   346,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   279,
--32768,-32768,-32768,-32768,   283,   284,-32768,-32768,-32768,   189,
--32768,   -40,-32768,   324,   272,-32768,-32768,   258,-32768,   369,
-   155,-32768,-32768,-32768,    60,    85,   272,   324,-32768,    94,
-   206,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    14,
--32768,-32768,-32768,-32768,   392,   394,-32768
+static const short yypact[] = {    42,
+-32768,-32768,    42,-32768,    -6,-32768,    72,   111,-32768,-32768,
+-32768,-32768,    74,-32768,    -1,   162,-32768,-32768,   138,    99,
+    83,    91,   123,    97,   222,   162,-32768,   121,-32768,-32768,
+-32768,-32768,-32768,   209,-32768,-32768,   313,-32768,   219,    33,
+-32768,-32768,-32768,    96,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   210,   313,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,    12,   527,-32768,   185,-32768,   -18,-32768,
+-32768,-32768,-32768,    49,-32768,   -25,-32768,-32768,-32768,-32768,
+-32768,    -3,   145,-32768,   186,-32768,   202,   229,-32768,-32768,
+-32768,-32768,-32768,   250,   223,-32768,-32768,-32768,   544,   302,
+-32768,-32768,-32768,   194,   311,-32768,-32768,-32768,   158,-32768,
+-32768,    42,   158,   214,   102,-32768,-32768,   390,-32768,   158,
+-32768,-32768,-32768,-32768,-32768,    87,-32768,   213,   216,   225,
+   297,   254,-32768,    -6,-32768,   124,-32768,-32768,   -57,   231,
+   292,   233,   270,   -12,   149,-32768,   -37,-32768,-32768,   235,
+-32768,-32768,   237,-32768,-32768,   339,   544,   335,   335,   152,
+-32768,-32768,   232,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   238,   236,
+-32768,    90,-32768,   176,-32768,   320,     8,   207,   241,    32,
+   140,   281,-32768,   246,    32,   285,-32768,    63,-32768,    20,
+   251,-32768,-32768,-32768,-32768,-32768,-32768,   -16,-32768,-32768,
+   326,-32768,    42,   140,   252,   255,-32768,   234,   263,   259,
+   -16,-32768,-32768,   264,-32768,-32768,-32768,   124,   362,   335,
+   254,   274,   124,   254,-32768,    18,    18,-32768,-32768,   467,
+   335,   260,   101,-32768,-32768,   251,-32768,   140,   306,   131,
+-32768,-32768,   251,   268,   177,   251,   140,   132,   251,-32768,
+-32768,   134,-32768,-32768,   272,   164,-32768,-32768,-32768,-32768,
+   267,   275,   242,   277,   278,   279,-32768,   152,-32768,-32768,
+-32768,-32768,   140,   140,-32768,   140,   140,   262,   271,-32768,
+-32768,   378,-32768,-32768,   307,-32768,-32768,-32768,-32768,   296,
+   296,-32768,   280,-32768,     8,-32768,   283,   251,-32768,    32,
+    18,-32768,   286,   467,   284,-32768,   467,-32768,    10,   280,
+-32768,    20,-32768,   282,-32768,-32768,    27,-32768,-32768,-32768,
+-32768,-32768,-32768,   287,-32768,-32768,     5,   173,-32768,-32768,
+   288,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   290,-32768,-32768,-32768,-32768,   293,   303,-32768,
+-32768,-32768,   175,-32768,   -37,-32768,   335,   299,-32768,-32768,
+   271,-32768,   140,-32768,-32768,-32768,    27,    71,   299,   335,
+-32768,   159,   234,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,    13,-32768,-32768,-32768,-32768,   393,   397,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   395,   261,-32768,-32768,   389,-32768,-32768,   377,-32768,
--32768,   348,-32768,-32768,-32768,   333,-32768,   295,-32768,-32768,
-   303,-32768,   344,-32768,-32768,   141,-32768,-32768,   259,-32768,
-   100,   227,   113,-32768,   111,-32768,   123,-32768,   194,-32768,
--32768,-32768,-32768,    33,  -169,   -81,  -173,   -49,-32768,   203,
-  -177,  -100,-32768,-32768,-32768,  -252,    87,   -52,  -109,-32768,
-    67,-32768,-32768,-32768,  -137,-32768,-32768,   -44,  -156,  -107,
-   211,-32768,   -56,-32768,-32768,    55,-32768,-32768,-32768,-32768,
--32768,-32768,    63,    65,  -160,-32768,-32768,-32768,-32768,-32768,
-   116,  -125,   -71,-32768,     2,-32768,    -7
+-32768,   401,   289,-32768,-32768,   396,-32768,-32768,   389,-32768,
+-32768,   363,-32768,-32768,-32768,   344,-32768,   308,-32768,-32768,
+   315,-32768,   355,-32768,-32768,   144,-32768,-32768,   276,-32768,
+   103,   240,   117,-32768,   126,-32768,   127,-32768,   196,-32768,
+-32768,-32768,-32768,    40,  -173,   -75,  -218,   -53,-32768,   208,
+  -180,  -109,-32768,   -23,-32768,  -167,-32768,   -33,  -110,-32768,
+    37,-32768,-32768,-32768,  -144,-32768,-32768,   -93,  -151,    11,
+   220,-32768,  -210,-32768,-32768,    65,-32768,-32768,-32768,-32768,
+-32768,-32768,    73,    76,  -172,-32768,-32768,-32768,   128,  -103,
+   -72,-32768,     2,-32768,    -7
 };
 
 
-#define	YYLAST		673
+#define	YYLAST		635
 
 
 static const short yytable[] = {    15,
-   117,     5,   232,   214,     5,    15,   174,   192,   150,   193,
-   118,   102,   102,   240,   101,   101,    10,   389,   114,    10,
-    10,    11,     1,     2,     7,   112,   161,   162,    67,    65,
-   165,    10,    72,    10,     1,     2,    79,   229,    64,   185,
-    16,    71,    10,    11,    10,    78,   128,   343,    65,    10,
-   169,   170,   161,   162,    19,    10,   201,    64,    10,   169,
-   170,    10,   169,   170,   355,   187,    79,    10,   259,    28,
-   297,   298,   229,   230,   266,    78,    29,   244,   166,   167,
-   168,    10,   169,   170,     1,     2,   267,   201,   113,    10,
-   169,   170,    34,   115,    30,   202,   203,   389,   231,   383,
-   129,    72,    31,    63,   128,    79,   161,   162,   230,    32,
-    71,   204,   155,   134,    78,   265,   214,    12,   393,    68,
-   364,   154,    63,   165,   176,   150,   202,    33,   115,    36,
-   205,   110,   240,   175,   242,    37,   206,   351,   237,    17,
-   353,   322,   115,   255,  -226,   207,   256,   349,  -226,   237,
-   199,   200,   208,   384,   209,   255,   210,   385,   129,   303,
-   201,   359,    10,   169,   170,   271,   308,   206,   185,   137,
-   328,   329,   295,   330,   344,   241,   294,   171,   248,   311,
-   138,    10,   314,   248,     1,     2,   260,    66,   264,    80,
-   259,   356,   186,   201,   187,    10,   169,   170,   304,   202,
-   203,   150,   392,   185,   150,   156,   107,   312,  -250,   157,
-   270,   323,   392,    20,   381,   204,   120,   120,   288,    73,
-   121,    21,    82,   347,   376,   122,   333,   191,   299,   187,
-    83,    84,   202,   123,   205,    10,   124,   331,     1,     2,
-   206,    85,    22,    86,    23,    87,   227,   332,   301,   207,
-   228,   130,   302,    24,   131,    88,   158,   306,   209,    89,
-   210,   307,   125,    90,     1,     2,    91,   274,   275,   276,
-   277,   313,   315,   206,   318,   307,   316,    92,   319,   310,
-   132,   367,    93,   136,    94,   368,    95,    10,   169,   170,
-     1,     2,   176,   374,   241,    96,    97,   375,   160,   248,
-   159,   175,   274,   275,   276,   277,   108,   109,   260,   176,
-    98,   264,   161,   162,    83,    84,   362,  -251,   175,   182,
-   183,   194,   184,    99,   196,   201,   366,    10,   169,   170,
-   197,    10,   236,   224,   226,   243,   251,   252,   254,   115,
-   269,    85,   272,    86,   273,    87,   280,   282,   284,   286,
-   289,   300,   309,   305,   325,    88,   366,   317,    10,    89,
-   320,     1,     2,    90,   202,   321,    91,   362,   326,   324,
-   388,   334,   337,    38,   338,   340,   346,    92,   350,   352,
-   358,   363,    93,   378,    94,   369,    95,   371,    39,   372,
-   373,   396,    40,   397,   177,    96,    97,     6,    41,    42,
-    43,    18,    35,    81,    44,   206,   111,   135,   105,    45,
-    98,   133,   345,   327,    46,   198,    47,   253,   357,   348,
-   342,   292,   394,   293,    48,   370,   285,   283,   377,   382,
-   379,   354,     0,    49,     0,    50,     0,     0,   139,   140,
-    51,     0,    52,    53,    54,   141,     0,     0,     0,    85,
-    38,    86,     0,    87,   142,     0,     0,     0,     0,     0,
-     0,     0,     0,    88,     0,     0,     0,    89,     0,     0,
-     0,    90,     0,     0,    91,    41,    42,    43,     0,     0,
-     0,     0,     0,   143,     0,    92,    45,     0,     0,     0,
-    93,    46,    94,    47,    95,     0,     0,     0,     0,     0,
-     0,    48,     0,    96,    97,   144,   145,     0,     0,     0,
-    49,     0,    50,     0,   146,   139,   140,    51,    98,    52,
-    53,    54,   141,     0,     0,     0,    85,    38,    86,     0,
-    87,   142,     0,     0,     0,     0,     0,     0,     0,     0,
-    88,     0,     0,     0,    89,     0,     0,     0,    90,     0,
-     0,    91,    41,    42,    43,     0,     0,     0,     0,     0,
-   143,     0,    92,    45,     0,     0,     0,    93,    46,    94,
-    47,    95,     0,     0,     0,    83,    84,     0,    48,     0,
-    96,    97,   144,   145,     0,     0,    85,    49,    86,    50,
-    87,     0,     1,     2,    51,    98,    52,    53,    54,     0,
-    88,     0,     0,    85,    89,    86,     0,    87,    90,     0,
-     0,    91,     0,     0,     0,     0,     0,    88,     0,     0,
-     0,    89,    92,     0,     0,    90,     0,    93,    91,    94,
-     0,    95,     0,     0,     0,     0,     0,     0,     0,    92,
-    96,    97,     0,     0,    93,     0,    94,     0,    95,     0,
-     0,     0,     0,     0,     0,    98,     0,    96,    97,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    98
+   196,     5,   197,   237,     5,    15,   117,   150,   218,   118,
+   101,   101,    10,   245,    82,    10,   391,    10,   170,   171,
+   112,   165,    83,    84,   114,   161,   162,    10,   178,    65,
+   102,   102,    72,    85,    10,    86,    79,    87,    64,    10,
+    10,    71,   189,     1,     2,    78,  -251,    88,    65,    67,
+   234,    89,     1,     2,   120,    90,    10,    64,    91,     1,
+     2,   249,   326,   300,   301,   128,    79,   189,   191,    92,
+    10,   170,   171,    63,    93,    78,    94,   336,    95,    10,
+    11,    10,    11,   113,   271,   385,   235,    96,    97,   108,
+   109,   190,    63,   191,   264,   354,   272,     7,   356,   115,
+   129,    72,    98,    10,    19,    79,     1,     2,   236,   242,
+    71,   260,   155,   134,    78,    99,   367,   395,   165,   153,
+   276,   154,   115,   128,   180,   270,   218,   178,   362,   150,
+   178,   245,   166,   242,   247,   345,   161,   162,   352,   386,
+    68,    73,   137,   387,    16,   205,    28,    10,   170,   171,
+   203,   204,   358,   138,   307,    29,   110,   205,   129,    10,
+   170,   171,   391,   315,   260,    10,    30,   261,     1,     2,
+   306,   161,   162,    20,    31,    32,    12,   311,    17,   246,
+    33,    21,   253,   314,   206,   207,   317,   253,   161,   162,
+   265,   156,   269,   334,   232,   157,   206,   207,   233,   346,
+   208,   394,    22,   150,    23,   304,   150,   294,   234,   305,
+   299,   394,   208,    24,   275,   264,   359,    83,    84,   209,
+   378,   383,   293,   180,    34,   210,   180,    36,   189,    37,
+    66,   209,   350,   302,   211,   309,   316,   210,   318,   310,
+   310,   153,   319,   213,   235,   214,   211,   205,    80,    10,
+   170,   171,   195,   212,   191,   213,   120,   214,   167,   168,
+   169,    10,   170,   171,     1,     2,   121,   205,   321,    10,
+   170,   171,   322,   279,   280,   281,   282,   370,   115,   376,
+  -231,   371,   122,   377,  -231,   313,   206,    10,   170,   171,
+     1,     2,   107,   331,   332,   347,   333,   246,   172,   123,
+   124,   325,   253,   125,   130,   131,   206,     1,     2,   161,
+   162,   265,   347,   132,   269,   153,   173,   136,   153,   365,
+    10,   335,   158,     1,     2,   159,   186,   210,   160,   369,
+   279,   280,   281,   282,  -252,    38,   187,   188,   198,   174,
+   200,   201,    10,   228,   241,   231,   248,   210,   256,   230,
+    39,   257,   259,   115,    40,   274,   277,   175,   285,   369,
+    41,    42,    43,   278,   287,   291,    44,   289,   295,   365,
+   303,    45,   390,   308,   312,   324,    46,   320,    47,   323,
+   327,   340,   328,   342,   337,   329,    48,   353,   341,   349,
+   355,   372,   398,   366,   361,    49,   399,    50,   373,   374,
+   139,   140,    51,     6,    52,    53,    54,   141,    18,   375,
+   380,    85,    38,    86,    35,    87,   142,   111,    81,   105,
+   135,   330,   181,   133,   360,    88,   351,   344,   298,    89,
+   348,   396,   202,    90,   258,   290,    91,    41,    42,    43,
+   288,   384,   379,   381,     0,   143,   357,    92,    45,     0,
+     0,     0,    93,    46,    94,    47,    95,     0,     0,     0,
+     0,     0,     0,    48,     0,    96,    97,   144,   145,     0,
+     0,     0,    49,     0,    50,     0,   146,   139,   140,    51,
+    98,    52,    53,    54,   141,     0,     0,     0,    85,    38,
+    86,     0,    87,   142,     0,     0,     0,     0,     0,     0,
+     0,     0,    88,     0,     0,     0,    89,     0,     0,     0,
+    90,     0,     0,    91,    41,    42,    43,     0,     0,     0,
+     0,     0,   143,     0,    92,    45,     0,     0,     0,    93,
+    46,    94,    47,    95,     0,     0,     0,    83,    84,     0,
+    48,     0,    96,    97,   144,   145,     0,     0,    85,    49,
+    86,    50,    87,     0,     1,     2,    51,    98,    52,    53,
+    54,     0,    88,     0,     0,    85,    89,    86,     0,    87,
+    90,     0,     0,    91,     0,     0,     0,     0,     0,    88,
+     0,     0,     0,    89,    92,     0,     0,    90,     0,    93,
+    91,    94,     0,    95,     0,     0,     0,     0,     0,     0,
+     0,    92,    96,    97,     0,     0,    93,     0,    94,     0,
+    95,     0,     0,     0,     0,     0,     0,    98,     0,    96,
+    97,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    98
 };
 
 static const short yycheck[] = {     7,
-    82,     0,   180,   160,     3,    13,   132,   145,   118,   147,
-    82,    64,    65,   183,    64,    65,     8,     4,    28,     8,
-     8,     9,    11,    12,   104,    46,    13,    14,    17,    37,
-   131,     8,    40,     8,    11,    12,    44,    33,    37,    80,
-    34,    40,     8,     9,     8,    44,    99,   300,    56,     8,
-     9,    10,    13,    14,   106,     8,     6,    56,     8,     9,
-    10,     8,     9,    10,   317,   106,    74,     8,   194,     9,
-   231,   232,    33,    69,   101,    74,    57,    30,     5,     6,
-     7,     8,     9,    10,    11,    12,   113,     6,   109,     8,
-     9,    10,     3,   103,    84,    45,    46,     4,   180,    15,
-    99,   109,    84,    37,   157,   113,    13,    14,    69,    53,
-   109,    61,   120,   112,   113,   197,   273,   105,   105,   108,
-   112,   120,    56,   224,   132,   235,    45,    84,   103,   107,
-    80,   108,   302,   132,   184,    21,    86,   311,   102,   105,
-   314,    60,   103,   102,   105,    95,   105,   308,   109,   102,
-   158,   159,   102,    69,   104,   102,   106,    73,   157,   241,
-     6,   102,     8,     9,    10,   210,   248,    86,    80,    41,
-   278,   279,   229,   281,   300,   183,   229,   104,   186,   251,
-    52,     8,   254,   191,    11,    12,   194,    12,   196,    39,
-   316,   317,   104,     6,   106,     8,     9,    10,   243,    45,
-    46,   311,   380,    80,   314,   105,   108,   252,   104,   109,
-   209,   268,   390,    12,   371,    61,   112,   112,   226,    46,
-    81,    20,     3,   305,   362,    81,   283,   104,   236,   106,
-    11,    12,    45,    71,    80,     8,    51,   282,    11,    12,
-    86,    22,    41,    24,    43,    26,   105,    60,   105,    95,
-   109,     3,   109,    52,   112,    36,   110,   105,   104,    40,
-   106,   109,    81,    44,    11,    12,    47,    97,    98,    99,
-   100,   105,   105,    86,   105,   109,   109,    58,   109,   109,
-     3,   105,    63,   104,    65,   109,    67,     8,     9,    10,
-    11,    12,   300,   105,   302,    76,    77,   109,   104,   307,
-   110,   300,    97,    98,    99,   100,   108,   109,   316,   317,
-    91,   319,    13,    14,    11,    12,   324,   104,   317,    35,
-   104,   104,    68,   104,   104,     6,   334,     8,     9,    10,
-     3,     8,    25,   112,   112,   106,    68,   106,    68,   103,
-    30,    22,   105,    24,   109,    26,    96,   106,   104,     4,
-    95,   111,   107,    68,   105,    36,   364,   106,     8,    40,
-   113,    11,    12,    44,    45,   101,    47,   375,   107,   104,
-   378,   114,     4,    23,    82,    88,   107,    58,   102,   107,
-   113,   107,    63,   112,    65,   104,    67,   109,    38,   107,
-   107,     0,    42,     0,   134,    76,    77,     3,    48,    49,
-    50,    13,    26,    56,    54,    86,    74,   113,    65,    59,
-    91,   109,   302,   273,    64,   157,    66,   191,   319,   307,
-   298,   228,   390,   104,    74,   339,   224,   217,   364,   375,
-   368,   316,    -1,    83,    -1,    85,    -1,    -1,    11,    12,
-    90,    -1,    92,    93,    94,    18,    -1,    -1,    -1,    22,
-    23,    24,    -1,    26,    27,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,
-    -1,    44,    -1,    -1,    47,    48,    49,    50,    -1,    -1,
-    -1,    -1,    -1,    56,    -1,    58,    59,    -1,    -1,    -1,
-    63,    64,    65,    66,    67,    -1,    -1,    -1,    -1,    -1,
-    -1,    74,    -1,    76,    77,    78,    79,    -1,    -1,    -1,
-    83,    -1,    85,    -1,    87,    11,    12,    90,    91,    92,
-    93,    94,    18,    -1,    -1,    -1,    22,    23,    24,    -1,
-    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    36,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,
-    -1,    47,    48,    49,    50,    -1,    -1,    -1,    -1,    -1,
-    56,    -1,    58,    59,    -1,    -1,    -1,    63,    64,    65,
-    66,    67,    -1,    -1,    -1,    11,    12,    -1,    74,    -1,
-    76,    77,    78,    79,    -1,    -1,    22,    83,    24,    85,
-    26,    -1,    11,    12,    90,    91,    92,    93,    94,    -1,
-    36,    -1,    -1,    22,    40,    24,    -1,    26,    44,    -1,
-    -1,    47,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,
-    -1,    40,    58,    -1,    -1,    44,    -1,    63,    47,    65,
-    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
-    76,    77,    -1,    -1,    63,    -1,    65,    -1,    67,    -1,
-    -1,    -1,    -1,    -1,    -1,    91,    -1,    76,    77,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    91
+   145,     0,   147,   184,     3,    13,    82,   118,   160,    82,
+    64,    65,     8,   187,     3,     8,     4,     8,     9,    10,
+    46,   131,    11,    12,    28,    13,    14,     8,   132,    37,
+    64,    65,    40,    22,     8,    24,    44,    26,    37,     8,
+     8,    40,    80,    11,    12,    44,   104,    36,    56,    17,
+    33,    40,    11,    12,   112,    44,     8,    56,    47,    11,
+    12,    30,   273,   236,   237,    99,    74,    80,   106,    58,
+     8,     9,    10,    37,    63,    74,    65,   288,    67,     8,
+     9,     8,     9,   109,   101,    15,    69,    76,    77,   108,
+   109,   104,    56,   106,   198,   314,   113,   104,   317,   103,
+    99,   109,    91,     8,   106,   113,    11,    12,   184,   102,
+   109,   102,   120,   112,   113,   104,   112,   105,   228,   118,
+   214,   120,   103,   157,   132,   201,   278,   231,   102,   240,
+   234,   305,   131,   102,   188,   303,    13,    14,   311,    69,
+   108,    46,    41,    73,    34,     6,     9,     8,     9,    10,
+   158,   159,   320,    52,   248,    57,   108,     6,   157,     8,
+     9,    10,     4,   257,   102,     8,    84,   105,    11,    12,
+   246,    13,    14,    12,    84,    53,   105,   253,   105,   187,
+    84,    20,   190,   256,    45,    46,   259,   195,    13,    14,
+   198,   105,   200,   287,   105,   109,    45,    46,   109,   303,
+    61,   382,    41,   314,    43,   105,   317,   231,    33,   109,
+   234,   392,    61,    52,   213,   319,   320,    11,    12,    80,
+   365,   373,   230,   231,     3,    86,   234,   107,    80,    21,
+    12,    80,   308,   241,    95,   105,   105,    86,   105,   109,
+   109,   240,   109,   104,    69,   106,    95,     6,    39,     8,
+     9,    10,   104,   102,   106,   104,   112,   106,     5,     6,
+     7,     8,     9,    10,    11,    12,    81,     6,   105,     8,
+     9,    10,   109,    97,    98,    99,   100,   105,   103,   105,
+   105,   109,    81,   109,   109,   109,    45,     8,     9,    10,
+    11,    12,   108,   283,   284,   303,   286,   305,    45,    71,
+    51,    60,   310,    81,     3,   112,    45,    11,    12,    13,
+    14,   319,   320,     3,   322,   314,    63,   104,   317,   327,
+     8,    60,   110,    11,    12,   110,    35,    86,   104,   337,
+    97,    98,    99,   100,   104,    23,   104,    68,   104,    86,
+   104,     3,     8,   112,    25,   110,   106,    86,    68,   112,
+    38,   106,    68,   103,    42,    30,   105,   104,    96,   367,
+    48,    49,    50,   109,   106,     4,    54,   104,    95,   377,
+   111,    59,   380,    68,   107,   101,    64,   106,    66,   113,
+   104,     4,   105,    88,   114,   107,    74,   102,    82,   107,
+   107,   104,     0,   107,   113,    83,     0,    85,   109,   107,
+    11,    12,    90,     3,    92,    93,    94,    18,    13,   107,
+   112,    22,    23,    24,    26,    26,    27,    74,    56,    65,
+   113,   278,   134,   109,   322,    36,   310,   301,   233,    40,
+   305,   392,   157,    44,   195,   228,    47,    48,    49,    50,
+   221,   377,   367,   371,    -1,    56,   319,    58,    59,    -1,
+    -1,    -1,    63,    64,    65,    66,    67,    -1,    -1,    -1,
+    -1,    -1,    -1,    74,    -1,    76,    77,    78,    79,    -1,
+    -1,    -1,    83,    -1,    85,    -1,    87,    11,    12,    90,
+    91,    92,    93,    94,    18,    -1,    -1,    -1,    22,    23,
+    24,    -1,    26,    27,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,    -1,
+    44,    -1,    -1,    47,    48,    49,    50,    -1,    -1,    -1,
+    -1,    -1,    56,    -1,    58,    59,    -1,    -1,    -1,    63,
+    64,    65,    66,    67,    -1,    -1,    -1,    11,    12,    -1,
+    74,    -1,    76,    77,    78,    79,    -1,    -1,    22,    83,
+    24,    85,    26,    -1,    11,    12,    90,    91,    92,    93,
+    94,    -1,    36,    -1,    -1,    22,    40,    24,    -1,    26,
+    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    36,
+    -1,    -1,    -1,    40,    58,    -1,    -1,    44,    -1,    63,
+    47,    65,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    58,    76,    77,    -1,    -1,    63,    -1,    65,    -1,
+    67,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    76,
+    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    91
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -2283,7 +2274,7 @@
 		checkmem(yyval.a_ref);
 		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
 		checkmem(ret == 0);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
+		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
 		checkmem(ret == 0);
 		free(yyvsp[-2].tv_str);
 	;
@@ -2294,13 +2285,26 @@
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		checkmem(yyval.a_ref);
+		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
+		checkmem(ret == 0);
+		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
+		checkmem(ret == 0);
+		free(yyvsp[-2].tv_str);
+	;
+    break;}
+case 118:
+#line 1201 "asn1p_y.y"
+{
+		int ret;
+		yyval.a_ref = asn1p_ref_new(yylineno);
+		checkmem(yyval.a_ref);
 		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
 		free(yyvsp[0].tv_str);
 		checkmem(ret == 0);
 	;
     break;}
-case 118:
-#line 1199 "asn1p_y.y"
+case 119:
+#line 1209 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -2321,8 +2325,8 @@
 		}
 	;
     break;}
-case 119:
-#line 1221 "asn1p_y.y"
+case 120:
+#line 1231 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2332,8 +2336,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 120:
-#line 1229 "asn1p_y.y"
+case 121:
+#line 1239 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -2342,22 +2346,22 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 123:
-#line 1243 "asn1p_y.y"
+case 124:
+#line 1253 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 124:
-#line 1248 "asn1p_y.y"
+case 125:
+#line 1258 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 125:
-#line 1261 "asn1p_y.y"
+case 126:
+#line 1271 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -2366,53 +2370,87 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 126:
-#line 1271 "asn1p_y.y"
+case 127:
+#line 1281 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(0);
+		checkmem(yyval.a_value);
+		yyval.a_value->type = ATV_CHOICE_IDENTIFIER;
+		yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
+		yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
+	;
+    break;}
+case 128:
+#line 1288 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
-case 127:
-#line 1272 "asn1p_y.y"
+case 129:
+#line 1288 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_UNPARSED;
 	;
     break;}
-case 128:
-#line 1277 "asn1p_y.y"
+case 130:
+#line 1293 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(0);
+		checkmem(yyval.a_value);
+		yyval.a_value->type = ATV_NULL;
+	;
+    break;}
+case 131:
+#line 1298 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(0);
+		checkmem(yyval.a_value);
+		yyval.a_value->type = ATV_FALSE;
+	;
+    break;}
+case 132:
+#line 1303 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(0);
+		checkmem(yyval.a_value);
+		yyval.a_value->type = ATV_TRUE;
+	;
+    break;}
+case 133:
+#line 1308 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 129:
-#line 1281 "asn1p_y.y"
+case 134:
+#line 1312 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 130:
-#line 1285 "asn1p_y.y"
+case 135:
+#line 1316 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 131:
-#line 1289 "asn1p_y.y"
+case 136:
+#line 1320 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 132:
-#line 1292 "asn1p_y.y"
+case 137:
+#line 1323 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 133:
-#line 1298 "asn1p_y.y"
+case 138:
+#line 1329 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2425,8 +2463,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 134:
-#line 1309 "asn1p_y.y"
+case 139:
+#line 1340 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2442,8 +2480,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 135:
-#line 1326 "asn1p_y.y"
+case 140:
+#line 1357 "asn1p_y.y"
 {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 2;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2455,8 +2493,8 @@
 		free(yyvsp[0].tv_opaque.buf);
 	;
     break;}
-case 136:
-#line 1336 "asn1p_y.y"
+case 141:
+#line 1367 "asn1p_y.y"
 {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -2470,68 +2508,68 @@
 		yyval.tv_opaque.len = newsize;
 	;
     break;}
-case 137:
-#line 1351 "asn1p_y.y"
+case 142:
+#line 1382 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BOOLEAN; ;
     break;}
-case 138:
-#line 1352 "asn1p_y.y"
+case 143:
+#line 1383 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_NULL; ;
     break;}
-case 139:
-#line 1353 "asn1p_y.y"
+case 144:
+#line 1384 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_REAL; ;
     break;}
-case 140:
-#line 1354 "asn1p_y.y"
+case 145:
+#line 1385 "asn1p_y.y"
 { yyval.a_type = yyvsp[0].a_type; ;
     break;}
-case 141:
-#line 1355 "asn1p_y.y"
+case 146:
+#line 1386 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OCTET_STRING; ;
     break;}
-case 142:
-#line 1356 "asn1p_y.y"
+case 147:
+#line 1387 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
     break;}
-case 143:
-#line 1357 "asn1p_y.y"
+case 148:
+#line 1388 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
     break;}
-case 144:
-#line 1358 "asn1p_y.y"
+case 149:
+#line 1389 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EXTERNAL; ;
     break;}
-case 145:
-#line 1359 "asn1p_y.y"
+case 150:
+#line 1390 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
     break;}
-case 146:
-#line 1360 "asn1p_y.y"
+case 151:
+#line 1391 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
     break;}
-case 147:
-#line 1361 "asn1p_y.y"
+case 152:
+#line 1392 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_UTCTime; ;
     break;}
-case 148:
-#line 1362 "asn1p_y.y"
+case 153:
+#line 1393 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_GeneralizedTime; ;
     break;}
-case 149:
-#line 1369 "asn1p_y.y"
+case 154:
+#line 1400 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_INTEGER; ;
     break;}
-case 150:
-#line 1370 "asn1p_y.y"
+case 155:
+#line 1401 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_ENUMERATED; ;
     break;}
-case 151:
-#line 1371 "asn1p_y.y"
+case 156:
+#line 1402 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BIT_STRING; ;
     break;}
-case 152:
-#line 1375 "asn1p_y.y"
+case 157:
+#line 1406 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2539,8 +2577,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 153:
-#line 1381 "asn1p_y.y"
+case 158:
+#line 1412 "asn1p_y.y"
 {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -2552,92 +2590,92 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 154:
-#line 1394 "asn1p_y.y"
+case 159:
+#line 1425 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_BMPString; ;
     break;}
-case 155:
-#line 1395 "asn1p_y.y"
+case 160:
+#line 1426 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GeneralString;
-		fprintf(stderr, "WARNING: GeneralString is not fully supported");
+		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	;
     break;}
-case 156:
-#line 1399 "asn1p_y.y"
-{
-		yyval.a_type = ASN_STRING_GraphicString;
-		fprintf(stderr, "WARNING: GraphicString is not fully supported");
-	;
-    break;}
-case 157:
-#line 1403 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_IA5String; ;
-    break;}
-case 158:
-#line 1404 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_ISO646String; ;
-    break;}
-case 159:
-#line 1405 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_NumericString; ;
-    break;}
-case 160:
-#line 1406 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_PrintableString; ;
-    break;}
 case 161:
-#line 1407 "asn1p_y.y"
+#line 1430 "asn1p_y.y"
 {
-		yyval.a_type = ASN_STRING_T61String;
-		fprintf(stderr, "WARNING: T61String is not fully supported");
+		yyval.a_type = ASN_STRING_GraphicString;
+		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	;
     break;}
 case 162:
-#line 1411 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_TeletexString; ;
+#line 1434 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_IA5String; ;
     break;}
 case 163:
-#line 1412 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_UniversalString; ;
+#line 1435 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_ISO646String; ;
     break;}
 case 164:
-#line 1413 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_UTF8String; ;
+#line 1436 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_NumericString; ;
     break;}
 case 165:
-#line 1414 "asn1p_y.y"
-{
-		yyval.a_type = ASN_STRING_VideotexString;
-		fprintf(stderr, "WARNING: VideotexString is not fully supported");
-	;
+#line 1437 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_PrintableString; ;
     break;}
 case 166:
-#line 1418 "asn1p_y.y"
-{ yyval.a_type = ASN_STRING_VisibleString; ;
+#line 1438 "asn1p_y.y"
+{
+		yyval.a_type = ASN_STRING_T61String;
+		fprintf(stderr, "WARNING: T61String is not fully supported\n");
+	;
     break;}
 case 167:
-#line 1419 "asn1p_y.y"
+#line 1442 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_TeletexString; ;
+    break;}
+case 168:
+#line 1443 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_UniversalString; ;
+    break;}
+case 169:
+#line 1444 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_UTF8String; ;
+    break;}
+case 170:
+#line 1445 "asn1p_y.y"
+{
+		yyval.a_type = ASN_STRING_VideotexString;
+		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
+	;
+    break;}
+case 171:
+#line 1449 "asn1p_y.y"
+{ yyval.a_type = ASN_STRING_VisibleString; ;
+    break;}
+case 172:
+#line 1450 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ObjectDescriptor; ;
     break;}
-case 173:
-#line 1431 "asn1p_y.y"
+case 178:
+#line 1462 "asn1p_y.y"
 { yyval.a_constr = 0; ;
     break;}
-case 174:
-#line 1432 "asn1p_y.y"
+case 179:
+#line 1463 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 175:
-#line 1438 "asn1p_y.y"
+case 180:
+#line 1469 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 176:
-#line 1441 "asn1p_y.y"
+case 181:
+#line 1472 "asn1p_y.y"
 {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -2646,26 +2684,26 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 177:
-#line 1451 "asn1p_y.y"
+case 182:
+#line 1482 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	;
     break;}
-case 178:
-#line 1454 "asn1p_y.y"
+case 183:
+#line 1485 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 179:
-#line 1460 "asn1p_y.y"
+case 184:
+#line 1491 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 180:
-#line 1463 "asn1p_y.y"
+case 185:
+#line 1494 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2673,8 +2711,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 181:
-#line 1469 "asn1p_y.y"
+case 186:
+#line 1500 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2684,32 +2722,32 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
 	;
     break;}
-case 182:
-#line 1480 "asn1p_y.y"
+case 187:
+#line 1511 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 183:
-#line 1483 "asn1p_y.y"
+case 188:
+#line 1514 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 184:
-#line 1486 "asn1p_y.y"
+case 189:
+#line 1517 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 185:
-#line 1489 "asn1p_y.y"
+case 190:
+#line 1520 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 186:
-#line 1495 "asn1p_y.y"
+case 191:
+#line 1526 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2719,8 +2757,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 187:
-#line 1503 "asn1p_y.y"
+case 192:
+#line 1534 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2730,8 +2768,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 188:
-#line 1511 "asn1p_y.y"
+case 193:
+#line 1542 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2739,98 +2777,98 @@
 		yyval.a_constr->value = yyvsp[0].a_value;
 	;
     break;}
-case 189:
-#line 1517 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
-	;
-    break;}
-case 190:
-#line 1524 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = asn1p_value_fromint(-123);
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
-		yyval.a_constr->range_start->type = ATV_MIN;
-	;
-    break;}
-case 191:
-#line 1532 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = asn1p_value_fromint(321);
-		yyval.a_constr->range_stop->type = ATV_MAX;
-	;
-    break;}
-case 192:
-#line 1540 "asn1p_y.y"
-{
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = asn1p_value_fromint(-123);
-		yyval.a_constr->range_stop = asn1p_value_fromint(321);
-		yyval.a_constr->range_start->type = ATV_MIN;
-		yyval.a_constr->range_stop->type = ATV_MAX;
-	;
-    break;}
-case 193:
-#line 1549 "asn1p_y.y"
-{
-		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
 case 194:
-#line 1552 "asn1p_y.y"
+#line 1548 "asn1p_y.y"
 {
-		yyval.a_constr = yyvsp[0].a_constr;
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = yyvsp[-2].a_value;
+		yyval.a_constr->range_stop = yyvsp[0].a_value;
 	;
     break;}
 case 195:
-#line 1558 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_RANGE; ;
+#line 1555 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = asn1p_value_fromint(-123);
+		yyval.a_constr->range_stop = yyvsp[0].a_value;
+		yyval.a_constr->range_start->type = ATV_MIN;
+	;
     break;}
 case 196:
-#line 1559 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_RLRANGE; ;
+#line 1563 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = yyvsp[-2].a_value;
+		yyval.a_constr->range_stop = asn1p_value_fromint(321);
+		yyval.a_constr->range_stop->type = ATV_MAX;
+	;
     break;}
 case 197:
-#line 1560 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_LLRANGE; ;
+#line 1571 "asn1p_y.y"
+{
+		yyval.a_constr = asn1p_constraint_new(yylineno);
+		checkmem(yyval.a_constr);
+		yyval.a_constr->type = yyvsp[-1].a_ctype;
+		yyval.a_constr->range_start = asn1p_value_fromint(-123);
+		yyval.a_constr->range_stop = asn1p_value_fromint(321);
+		yyval.a_constr->range_start->type = ATV_MIN;
+		yyval.a_constr->range_stop->type = ATV_MAX;
+	;
     break;}
 case 198:
-#line 1561 "asn1p_y.y"
-{ yyval.a_ctype = ACT_EL_ULRANGE; ;
+#line 1580 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
     break;}
 case 199:
-#line 1565 "asn1p_y.y"
+#line 1583 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
+    break;}
+case 200:
+#line 1589 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_RANGE; ;
+    break;}
+case 201:
+#line 1590 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_RLRANGE; ;
+    break;}
+case 202:
+#line 1591 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_LLRANGE; ;
+    break;}
+case 203:
+#line 1592 "asn1p_y.y"
+{ yyval.a_ctype = ACT_EL_ULRANGE; ;
+    break;}
+case 204:
+#line 1596 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_SIZE;
 	;
     break;}
-case 200:
-#line 1568 "asn1p_y.y"
+case 205:
+#line 1599 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_FROM;
 	;
     break;}
-case 201:
-#line 1574 "asn1p_y.y"
+case 206:
+#line 1605 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 202:
-#line 1577 "asn1p_y.y"
+case 207:
+#line 1608 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2843,57 +2881,57 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 203:
-#line 1588 "asn1p_y.y"
+case 208:
+#line 1619 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 204:
-#line 1593 "asn1p_y.y"
+case 209:
+#line 1623 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
 	;
     break;}
-case 205:
-#line 1598 "asn1p_y.y"
+case 210:
+#line 1628 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
 	;
     break;}
-case 206:
-#line 1606 "asn1p_y.y"
+case 211:
+#line 1636 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 207:
-#line 1612 "asn1p_y.y"
+case 212:
+#line 1642 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 208:
-#line 1615 "asn1p_y.y"
+case 213:
+#line 1645 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 209:
-#line 1621 "asn1p_y.y"
+case 214:
+#line 1651 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
 		yyval.a_constr->type = ACT_EL_EXT;
 	;
     break;}
-case 210:
-#line 1626 "asn1p_y.y"
+case 215:
+#line 1656 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2902,46 +2940,46 @@
 		yyval.a_constr->presence = yyvsp[0].a_pres;
 	;
     break;}
-case 211:
-#line 1639 "asn1p_y.y"
+case 216:
+#line 1669 "asn1p_y.y"
 { yyval.a_pres = ACPRES_DEFAULT; ;
     break;}
-case 212:
-#line 1640 "asn1p_y.y"
+case 217:
+#line 1670 "asn1p_y.y"
 { yyval.a_pres = yyvsp[0].a_pres; ;
     break;}
-case 213:
-#line 1644 "asn1p_y.y"
+case 218:
+#line 1674 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_PRESENT;
 	;
     break;}
-case 214:
-#line 1647 "asn1p_y.y"
+case 219:
+#line 1677 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_ABSENT;
 	;
     break;}
-case 215:
-#line 1650 "asn1p_y.y"
+case 220:
+#line 1680 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	;
     break;}
-case 216:
-#line 1656 "asn1p_y.y"
+case 221:
+#line 1686 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 217:
-#line 1659 "asn1p_y.y"
+case 222:
+#line 1689 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 218:
-#line 1668 "asn1p_y.y"
+case 223:
+#line 1698 "asn1p_y.y"
 {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -2955,14 +2993,14 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
 	;
     break;}
-case 219:
-#line 1683 "asn1p_y.y"
+case 224:
+#line 1713 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 220:
-#line 1689 "asn1p_y.y"
+case 225:
+#line 1719 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2970,8 +3008,8 @@
 		yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
 	;
     break;}
-case 221:
-#line 1695 "asn1p_y.y"
+case 226:
+#line 1725 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2981,8 +3019,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 222:
-#line 1709 "asn1p_y.y"
+case 227:
+#line 1739 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -2995,8 +3033,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 223:
-#line 1720 "asn1p_y.y"
+case 228:
+#line 1750 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -3010,14 +3048,14 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 224:
-#line 1736 "asn1p_y.y"
+case 229:
+#line 1766 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 225:
-#line 1739 "asn1p_y.y"
+case 230:
+#line 1769 "asn1p_y.y"
 {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -3028,76 +3066,61 @@
 		yyval.tv_str[l1 + 1 + l3] = '\0';
 	;
     break;}
-case 226:
-#line 1757 "asn1p_y.y"
-{ yyval.a_marker = EM_NOMARK; ;
-    break;}
-case 227:
-#line 1758 "asn1p_y.y"
-{ yyval.a_marker = yyvsp[0].a_marker; ;
-    break;}
-case 228:
-#line 1762 "asn1p_y.y"
-{
-		yyval.a_marker = EM_OPTIONAL;
-	;
-    break;}
-case 229:
-#line 1765 "asn1p_y.y"
-{
-		yyval.a_marker = EM_DEFAULT;
-		/* FIXME: store DefaultValue somewhere */
-	;
-    break;}
-case 230:
-#line 1772 "asn1p_y.y"
-{
-	;
-    break;}
 case 231:
-#line 1774 "asn1p_y.y"
+#line 1787 "asn1p_y.y"
 {
+		yyval.a_marker.flags = EM_NOMARK;
+		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 232:
-#line 1776 "asn1p_y.y"
-{ asn1p_lexer_hack_push_opaque_state(); ;
+#line 1791 "asn1p_y.y"
+{ yyval.a_marker = yyvsp[0].a_marker; ;
     break;}
 case 233:
-#line 1776 "asn1p_y.y"
+#line 1795 "asn1p_y.y"
 {
+		yyval.a_marker.flags = EM_OPTIONAL;
+		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 234:
-#line 1797 "asn1p_y.y"
+#line 1799 "asn1p_y.y"
+{
+		yyval.a_marker.flags = EM_DEFAULT;
+		yyval.a_marker.default_value = yyvsp[0].a_value;
+	;
+    break;}
+case 235:
+#line 1822 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 	;
     break;}
-case 235:
-#line 1801 "asn1p_y.y"
+case 236:
+#line 1826 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	;
     break;}
-case 236:
-#line 1807 "asn1p_y.y"
+case 237:
+#line 1832 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 237:
-#line 1812 "asn1p_y.y"
+case 238:
+#line 1837 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 238:
-#line 1819 "asn1p_y.y"
+case 239:
+#line 1844 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3106,19 +3129,8 @@
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 	;
     break;}
-case 239:
-#line 1826 "asn1p_y.y"
-{
-		yyval.a_expr = asn1p_expr_new(yylineno);
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->value = yyvsp[-1].a_value;
-	;
-    break;}
 case 240:
-#line 1834 "asn1p_y.y"
+#line 1851 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3129,7 +3141,18 @@
 	;
     break;}
 case 241:
-#line 1842 "asn1p_y.y"
+#line 1859 "asn1p_y.y"
+{
+		yyval.a_expr = asn1p_expr_new(yylineno);
+		checkmem(yyval.a_expr);
+		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
+		yyval.a_expr->meta_type = AMT_VALUE;
+		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
+		yyval.a_expr->value = yyvsp[-1].a_value;
+	;
+    break;}
+case 242:
+#line 1867 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3138,8 +3161,8 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 242:
-#line 1849 "asn1p_y.y"
+case 243:
+#line 1874 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3149,72 +3172,72 @@
 		yyval.a_expr->meta_type = AMT_VALUE;
 	;
     break;}
-case 243:
-#line 1860 "asn1p_y.y"
-{
-		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
-		checkmem(yyval.a_value);
-	;
-    break;}
 case 244:
-#line 1864 "asn1p_y.y"
+#line 1885 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 245:
-#line 1895 "asn1p_y.y"
-{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
+#line 1889 "asn1p_y.y"
+{
+		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
+		checkmem(yyval.a_value);
+	;
     break;}
 case 246:
-#line 1896 "asn1p_y.y"
-{ yyval.a_tag = yyvsp[0].a_tag; ;
+#line 1920 "asn1p_y.y"
+{ memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
     break;}
 case 247:
-#line 1900 "asn1p_y.y"
+#line 1921 "asn1p_y.y"
+{ yyval.a_tag = yyvsp[0].a_tag; ;
+    break;}
+case 248:
+#line 1925 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[0].a_tag;
 		yyval.a_tag.tag_mode = TM_DEFAULT;
 	;
     break;}
-case 248:
-#line 1904 "asn1p_y.y"
+case 249:
+#line 1929 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = TM_IMPLICIT;
 	;
     break;}
-case 249:
-#line 1908 "asn1p_y.y"
+case 250:
+#line 1933 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = TM_EXPLICIT;
 	;
     break;}
-case 250:
-#line 1915 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
-    break;}
 case 251:
-#line 1919 "asn1p_y.y"
+#line 1940 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 252:
-#line 1927 "asn1p_y.y"
+#line 1944 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 253:
-#line 1934 "asn1p_y.y"
+#line 1952 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 254:
+#line 1959 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3442,7 +3465,7 @@
     }
   return 1;
 }
-#line 1940 "asn1p_y.y"
+#line 1965 "asn1p_y.y"
 
 
 
diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h
index 375b845..788f2d9 100644
--- a/libasn1parser/asn1p_y.h
+++ b/libasn1parser/asn1p_y.h
@@ -17,7 +17,7 @@
 	asn1p_value_t		*a_value;	/* Number, DefinedValue, etc */
 	struct asn1p_param_s	 a_parg;	/* A parameter argument */
 	asn1p_paramlist_t	*a_plist;	/* A pargs list */
-	enum asn1p_expr_marker_e a_marker;	/* OPTIONAL/DEFAULT */
+	struct asn1p_expr_marker_s a_marker;	/* OPTIONAL/DEFAULT */
 	enum asn1p_constr_pres_e a_pres;	/* PRESENT/ABSENT/OPTIONAL */
 	asn1_integer_t		 a_int;
 	char	*tv_str;
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index bc19522..ae63090 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -74,7 +74,7 @@
 	asn1p_value_t		*a_value;	/* Number, DefinedValue, etc */
 	struct asn1p_param_s	 a_parg;	/* A parameter argument */
 	asn1p_paramlist_t	*a_plist;	/* A pargs list */
-	enum asn1p_expr_marker_e a_marker;	/* OPTIONAL/DEFAULT */
+	struct asn1p_expr_marker_s a_marker;	/* OPTIONAL/DEFAULT */
 	enum asn1p_constr_pres_e a_pres;	/* PRESENT/ABSENT/OPTIONAL */
 	asn1_integer_t		 a_int;
 	char	*tv_str;
@@ -236,7 +236,7 @@
 %type	<a_expr>		optValueSetBody
 %type	<a_expr>		ValueSetBody
 %type	<a_expr>		ValueSetElement
-%type	<a_value>		InlineOrDefinedValue
+%type	<a_value>		Value
 %type	<a_value>		DefinedValue
 %type	<a_value>		SignedNumber
 %type	<a_expr>		ComponentTypeLists
@@ -1178,6 +1178,16 @@
 		checkmem(ret == 0);
 		free($1);
 	}
+	| ObjectClassReference '.' TypeRefName {
+		int ret;
+		$$ = asn1p_ref_new(yylineno);
+		checkmem($$);
+		ret = asn1p_ref_add_component($$, $1, RLT_UNKNOWN);
+		checkmem(ret == 0);
+		ret = asn1p_ref_add_component($$, $3, RLT_UNKNOWN);
+		checkmem(ret == 0);
+		free($1);
+	}
 	| TOK_typereference '.' Identifier {
 		int ret;
 		$$ = asn1p_ref_new(yylineno);
@@ -1258,7 +1268,7 @@
  * === EOF ===
  */
 ValueDefinition:
-	Identifier DefinedTypeRef TOK_PPEQ InlineOrDefinedValue {
+	Identifier DefinedTypeRef TOK_PPEQ Value {
 		$$ = $2;
 		assert($$->Identifier == NULL);
 		$$->Identifier = $1;
@@ -1267,13 +1277,34 @@
 	}
 	;
 
-InlineOrDefinedValue:
-	'{' { asn1p_lexer_hack_push_opaque_state(); }
-		Opaque /* '}' */ {
+Value:
+	Identifier ':' Value {
+		$$ = asn1p_value_fromint(0);
+		checkmem($$);
+		$$->type = ATV_CHOICE_IDENTIFIER;
+		$$->value.choice_identifier.identifier = $1;
+		$$->value.choice_identifier.value = $3;
+	}
+	| '{' { asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ {
 		$$ = asn1p_value_frombuf($3.buf, $3.len, 0);
 		checkmem($$);
 		$$->type = ATV_UNPARSED;
 	}
+	| TOK_NULL {
+		$$ = asn1p_value_fromint(0);
+		checkmem($$);
+		$$->type = ATV_NULL;
+	}
+	| TOK_FALSE {
+		$$ = asn1p_value_fromint(0);
+		checkmem($$);
+		$$->type = ATV_FALSE;
+	}
+	| TOK_TRUE {
+		$$ = asn1p_value_fromint(0);
+		checkmem($$);
+		$$->type = ATV_TRUE;
+	}
 	| TOK_bstring {
 		$$ = _convert_bitstring2binary($1, 'B');
 		checkmem($$);
@@ -1394,11 +1425,11 @@
 	TOK_BMPString { $$ = ASN_STRING_BMPString; }
 	| TOK_GeneralString {
 		$$ = ASN_STRING_GeneralString;
-		fprintf(stderr, "WARNING: GeneralString is not fully supported");
+		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	}
 	| TOK_GraphicString {
 		$$ = ASN_STRING_GraphicString;
-		fprintf(stderr, "WARNING: GraphicString is not fully supported");
+		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	}
 	| TOK_IA5String { $$ = ASN_STRING_IA5String; }
 	| TOK_ISO646String { $$ = ASN_STRING_ISO646String; }
@@ -1406,14 +1437,14 @@
 	| TOK_PrintableString { $$ = ASN_STRING_PrintableString; }
 	| TOK_T61String {
 		$$ = ASN_STRING_T61String;
-		fprintf(stderr, "WARNING: T61String is not fully supported");
+		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	}
 	| TOK_TeletexString { $$ = ASN_STRING_TeletexString; }
 	| TOK_UniversalString { $$ = ASN_STRING_UniversalString; }
 	| TOK_UTF8String { $$ = ASN_STRING_UTF8String; }
 	| TOK_VideotexString {
 		$$ = ASN_STRING_VideotexString;
-		fprintf(stderr, "WARNING: VideotexString is not fully supported");
+		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	}
 	| TOK_VisibleString { $$ = ASN_STRING_VisibleString; }
 	| TOK_ObjectDescriptor { $$ = ASN_STRING_ObjectDescriptor; }
@@ -1589,7 +1620,6 @@
 		$$ = asn1p_value_frombuf($1.buf, $1.len, 0);
 		checkmem($$);
 	}
-
 	| TOK_FALSE {
 		$$ = asn1p_value_fromint(0);
 		checkmem($$);
@@ -1754,26 +1784,21 @@
  */
 
 optMarker:
-	{ $$ = EM_NOMARK; }
+	{
+		$$.flags = EM_NOMARK;
+		$$.default_value = 0;
+	}
 	| Marker { $$ = $1; }
 	;
 
 Marker:
 	TOK_OPTIONAL {
-		$$ = EM_OPTIONAL;
+		$$.flags = EM_OPTIONAL;
+		$$.default_value = 0;
 	}
-	| TOK_DEFAULT DefaultValue {
-		$$ = EM_DEFAULT;
-		/* FIXME: store DefaultValue somewhere */
-	}
-	;
-
-DefaultValue:
-	ConstraintValue {
-	}
-	| BasicTypeId {
-	}
-	| '{' { asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ {
+	| TOK_DEFAULT Value {
+		$$.flags = EM_DEFAULT;
+		$$.default_value = $2;
 	}
 	;