asn1c code generator modifier: <asn1c:pointer>

diff --git a/ChangeLog b/ChangeLog
index fffd4e1..c092714 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,8 @@
 	  should be necessary anymore to produce reference-free code:
 	  recursive dependencies are resolved automatically.
 	* Test cases 73 & 92 keep track of various circular references.
+	* Introduced asn1c-specific modifier to allow finer control over the
+	  generated code ("<asn1c:pointer>" in comments), (Test case 93).
 
 0.9.18:	2005-Aug-14
 
diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c
index 6cc0cb9..9a24220 100644
--- a/libasn1parser/asn1p_l.c
+++ b/libasn1parser/asn1p_l.c
@@ -312,231 +312,250 @@
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 133
-#define YY_END_OF_BUFFER 134
-static yyconst short int yy_acclist[1263] =
+#define YY_NUM_RULES 136
+#define YY_END_OF_BUFFER 137
+static yyconst short int yy_acclist[1271] =
     {   0,
-      134,  132,  133,  127,  132,  133,  127,  133,  130,  132,
-      133,   18,  132,  133,  130,  132,  133,  132,  133,  130,
-      132,  133,  132,  133,  130,  132,  133,  132,  133,   32,
-      132,  133,   31,  132,  133,  130,  132,  133,  132,  133,
-      119,  120,  132,  133,  119,  120,  132,  133,  119,  120,
-      132,  133,  119,  120,  132,  133,  119,  120,  132,  133,
-      119,  120,  132,  133,  119,  120,  132,  133,  119,  120,
-      132,  133,  119,  120,  132,  133,  119,  120,  132,  133,
-      119,  120,  132,  133,  119,  120,  132,  133,  119,  120,
-      132,  133,  119,  120,  132,  133,  119,  120,  132,  133,
+      137,  135,  136,  130,  135,  136,  130,  136,  133,  135,
+      136,   21,  135,  136,  133,  135,  136,  135,  136,  133,
+      135,  136,  135,  136,  133,  135,  136,  135,  136,   35,
+      135,  136,   34,  135,  136,  133,  135,  136,  135,  136,
+      122,  123,  135,  136,  122,  123,  135,  136,  122,  123,
+      135,  136,  122,  123,  135,  136,  122,  123,  135,  136,
+      122,  123,  135,  136,  122,  123,  135,  136,  122,  123,
+      135,  136,  122,  123,  135,  136,  122,  123,  135,  136,
+      122,  123,  135,  136,  122,  123,  135,  136,  122,  123,
+      135,  136,  122,  123,  135,  136,  122,  123,  135,  136,
 
-      119,  120,  132,  133,  119,  120,  132,  133,  119,  120,
-      132,  133,  119,  120,  132,  133,  118,  132,  133,  130,
-      132,  133,    8,  132,  133,    5,  133,    5,  132,  133,
-        7,  132,  133,    7,  132,  133,   10,   12,  132,  133,
-       10,  133,   12,  132,  133,   12,  132,  133,   20,  132,
-      133,   20,  133,   21,  132,  133,   15,  132,  133,   15,
-      133,   17,  132,  133,   17,  132,  133,   13,  132,  133,
-       14,  132,  133,   24,   26,  132,  133,   26,  132,  133,
-       27,  133,   24,   25,   26,  132,  133,   24,   25,   26,
-      132,  133,  124,  132,  133,  125,  132,  133,  125,  133,
+      122,  123,  135,  136,  122,  123,  135,  136,  122,  123,
+      135,  136,  122,  123,  135,  136,  121,  135,  136,  133,
+      135,  136,   10,  135,  136,    5,  136,    5,  135,  136,
+        9,  135,  136,    7,  135,  136,    9,  135,  136,   12,
+       15,  135,  136,   12,  136,   15,  135,  136,   15,  135,
+      136,   15,  135,  136,   23,  135,  136,   23,  136,   24,
+      135,  136,   18,  135,  136,   18,  136,   20,  135,  136,
+       20,  135,  136,   16,  135,  136,   17,  135,  136,   27,
+       29,  135,  136,   29,  135,  136,   30,  136,   27,   28,
+       29,  135,  136,   27,   28,   29,  135,  136,  127,  135,
 
-      132,  133,  126,  132,  133,  127,   18,   18,  116,  117,
-        4,   30,  123,    9,   31,  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,  120,  119,  120,  119,
+      136,  128,  135,  136,  128,  136,  135,  136,  129,  135,
+      136,  130,   21,   21,  119,  120,    4,   33,  126,   11,
+       34,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  123,  122,  123,  122,  123,  122,  123,
+      122,  123,   45,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  123,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  123,  122,  123,  122,  123,   90,  122,  123,  122,
+      123,  123,  122,  123,  122,  123,  122,  123,  122,  123,
 
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  120,  119,  120,  119,  120,  120,  120,
-      119,  120,  118,    8,    6,    6,   11,   20,   19,   15,
-       24,   24,   25,   24,   25,  124,  125,  131,  116,  117,
-       30,  122,  121,  119,  120,  120,  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,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  123,
+      122,  123,  122,  123,  123,  123,  122,  123,  121,   10,
+        8,    8,   13,   23,   22,   18,   27,   27,   28,   27,
+       28,  127,  128,  134,  119,  120,   33,  125,  124,  122,
+      123,  123,  122,  123,   37,  122,  123,   38,  122,  123,
+      122,  123,  122,  123,  122,  123,   42,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,   59,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
 
-      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,  118,    3,   16,
-       24,   25,   23,   24,   25,  116,  117,   29,   28,    2,
-        1,  119,  120,  119,  120,  119,  120,  119,  120,  119,
+      122,  123,  122,  123,  123,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+       82,  122,  123,   83,  122,  123,  122,  123,  123,  122,
+      123,  122,  123,  122,  123,  123,  122,  123,   93,  122,
+      123,  122,  123,  122,  123,  122,  123,  123,  122,  123,
+      122,  123,  122,  123,  101,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  123,  122,  123,  122,  123,  122,  123,  123,  123,
+      123,  122,  123,  121,    3,   19,   27,   28,   26,   27,
+       28,  119,  120,   32,   31,    2,    1,  122,  123,  122,
 
-      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,  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,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,   67,  122,  123,  123,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,   85,  122,  123,  123,  122,  123,
+      122,  123,  122,  123,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  123,   98,  122,  123,  122,  123,  122,
+      123,  102,  122,  123,  122,  123,  122,  123,  122,  123,
 
-      119,  120,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  120,  120,  120,  115,  119,  120,    3,
-       24,   25,  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,
+      106,  122,  123,  108,  122,  123,  122,  123,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  123,
+      123,  123,  118,  122,  123,    3,   27,   28,  122,  123,
+      122,  123,  122,  123,   41,  122,  123,  123,  122,  123,
+      122,  123,  122,  123,   48,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,   66,  122,  123,  123,  123,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  123,
 
-      120,  120,  119,  120,  119,  120,  119,  120,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  120,  120,  107,
-      119,  120,  119,  120,  119,  120,  120,  119,  120,  120,
-      120,  120,  128,   24,   25,   33,  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,  119,  120,  119,  120,
+      122,  123,   89,  122,  123,  122,  123,  123,  122,  123,
+      122,  123,  122,  123,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  123,  123,  110,  122,  123,  122,  123,
+      122,  123,  123,  122,  123,  123,  123,  123,  131,   27,
+       28,   36,  122,  123,  122,  123,  122,  123,  123,  122,
+      123,  122,  123,   47,  122,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,   61,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  123,  123,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
 
-      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,   24,   25,  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,  120,  119,  120,   71,  119,  120,   72,  119,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      123,   87,  122,  123,  122,  123,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  123,  122,  123,  122,  123,
+      103,  122,  123,  104,  122,  123,  123,  122,  123,  123,
+      111,  122,  123,  122,  123,  123,  123,  123,  123,  123,
+       27,   28,  122,  123,  122,  123,  123,   44,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,   53,  122,
+      123,   54,  122,  123,  122,  123,  122,  123,   57,  122,
+      123,  122,  123,  122,  123,  122,  123,   63,  122,  123,
+      122,  123,  122,  123,  123,  123,  123,  122,  123,  122,
 
-      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,   24,   25,
-      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,  120,   74,  119,  120,  119,  120,  119,  120,  120,
+      123,   74,  122,  123,   75,  122,  123,  122,  123,  122,
+      123,  122,  123,   79,  122,  123,  122,  123,  122,  123,
+      122,  123,  123,  122,  123,  123,   92,  122,  123,  122,
+      123,   95,  122,  123,   97,  122,  123,  123,  122,  123,
+      122,  123,  123,  122,  123,  123,  122,  123,  114,  123,
+      123,  123,  123,  123,   27,   28,  122,  123,  122,  123,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,   56,  122,  123,  122,  123,  122,  123,   62,  122,
+      123,  122,  123,   65,  122,  123,  123,  123,  123,  123,
+      122,  123,   73,  122,  123,   76,  122,  123,   77,  122,
 
-      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,   24,   25,  119,  120,   37,
-      119,  120,   40,  120,   43,  119,  120,   46,  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,  102,
-      120,  119,  120,  120,  109,  119,  120,  120,  120,  120,
-      120,  129,   24,  119,  120,   47,  119,  120,  119,  120,
-       49,  119,  120,  119,  120,  119,  120,   57,  119,  120,
+      123,  122,  123,  122,  123,  123,  122,  123,  123,   91,
+      122,  123,  123,  122,  123,  123,  122,  123,  100,  122,
+      123,  123,  122,  123,  123,  122,  123,  123,  123,  123,
+      123,   27,   28,  122,  123,   40,  122,  123,   43,  123,
+       46,  122,  123,   49,  122,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,  123,  123,  123,   71,
+      123,  122,  123,  122,  123,  122,  123,  123,  122,  123,
+      123,  123,  122,  123,  123,  105,  123,  122,  123,  123,
+      112,  122,  123,  123,  123,  123,  123,  132,    6,   14,
+       27,  122,  123,   50,  122,  123,  122,  123,   52,  122,
 
-      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,
-       24,   36,  119,  120,   48,  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,   24,  119,  120,
-      119,  120,  120,  120,  120,   75,  119,  120,   77,  119,
-      120,   78,  120,  119,  120,  120,  120,  119,  120,  120,
-       96,  119,  120,  119,  120,  120,  120,  120,  120,   24,
+      123,  122,  123,  122,  123,   60,  122,  123,  122,  123,
+      123,  123,  123,   72,  122,  123,  122,  123,  122,  123,
+      123,  122,  123,  123,  123,  122,  123,  123,  122,  123,
+      122,  123,  123,  115,  123,  123,  123,  123,   27,   39,
+      122,  123,   51,  122,  123,   55,  122,  123,  122,  123,
+      122,  123,  123,  123,  123,  122,  123,  122,  123,  123,
+      122,  123,  123,  123,  122,  123,  123,  122,  123,  122,
+      123,  123,  123,  123,  123,   27,  122,  123,  122,  123,
+      123,  123,  123,   78,  122,  123,   80,  122,  123,   81,
+      123,  122,  123,  123,  123,  122,  123,  123,   99,  122,
 
-      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,   24,  119,  120,
-      120,   81,  119,  120,  120,  120,  119,  120,  120,  113,
-      120,   24,  119,  120,   65,  120,  120,   93,  120,  106,
-      119,  120,  110,  120,   24,   55,  119,  120,   85,  120,
-       22,   24
+      123,  122,  123,  123,  123,  123,  123,   27,  122,  123,
+       64,  122,  123,   69,  123,  123,   70,  123,  122,  123,
+       86,  123,  123,   94,  122,  123,  123,  122,  123,  107,
+      123,  123,  123,  117,  123,   27,  122,  123,  123,   84,
+      122,  123,  123,  123,  122,  123,  123,  116,  123,   27,
+      122,  123,   68,  123,  123,   96,  123,  109,  122,  123,
+      113,  123,   27,   58,  122,  123,   88,  123,   25,   27
     } ;
 
-static yyconst short int yy_accept[710] =
+static yyconst short int yy_accept[886] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    2,    4,    7,
         9,   12,   15,   18,   20,   23,   25,   28,   30,   33,
        36,   39,   41,   45,   49,   53,   57,   61,   65,   69,
        73,   77,   81,   85,   89,   93,   97,  101,  105,  109,
-      113,  117,  120,  123,  126,  128,  131,  134,  137,  141,
-      143,  146,  149,  152,  154,  157,  160,  162,  165,  168,
-      171,  174,  178,  181,  183,  188,  193,  196,  199,  201,
-      203,  206,  206,  207,  208,  209,  209,  210,  210,  211,
-      211,  211,  212,  213,  214,  215,  216,  216,  216,  218,
+      113,  117,  120,  123,  126,  128,  131,  134,  137,  140,
+      144,  146,  149,  152,  155,  158,  160,  163,  166,  168,
+      171,  174,  177,  180,  184,  187,  189,  194,  199,  202,
+      205,  207,  209,  212,  212,  213,  214,  215,  215,  216,
+      216,  217,  217,  217,  218,  219,  220,  221,  222,  222,
 
-      220,  222,  224,  226,  228,  229,  231,  233,  235,  237,
-      240,  242,  244,  246,  248,  250,  252,  254,  256,  258,
-      259,  260,  262,  264,  266,  268,  270,  272,  274,  276,
-      277,  279,  281,  284,  286,  287,  289,  291,  293,  295,
-      296,  298,  300,  302,  304,  306,  308,  310,  312,  314,
-      315,  317,  319,  320,  321,  323,  323,  324,  324,  324,
-      324,  325,  326,  327,  328,  329,  330,  331,  331,  332,
-      334,  336,  337,  338,  339,  339,  339,  340,  340,  341,
-      341,  341,  341,  342,  343,  344,  346,  347,  349,  352,
-      355,  357,  359,  359,  361,  364,  366,  368,  370,  372,
+      222,  224,  226,  228,  230,  232,  234,  235,  237,  239,
+      241,  243,  246,  248,  250,  252,  254,  256,  258,  260,
+      262,  264,  265,  266,  268,  270,  272,  274,  276,  278,
+      280,  282,  283,  285,  287,  290,  292,  293,  295,  297,
+      299,  301,  302,  304,  306,  308,  310,  312,  314,  316,
+      318,  320,  321,  323,  325,  326,  327,  329,  329,  330,
+      330,  330,  330,  331,  332,  332,  333,  334,  334,  335,
+      336,  337,  337,  338,  340,  342,  343,  344,  345,  345,
+      345,  346,  346,  347,  347,  347,  347,  348,  349,  350,
+      352,  353,  355,  358,  361,  363,  365,  365,  367,  370,
 
-      374,  376,  378,  380,  382,  384,  387,  389,  391,  393,
-      395,  397,  399,  400,  401,  403,  405,  407,  409,  411,
-      413,  415,  418,  421,  423,  424,  426,  428,  430,  431,
-      433,  436,  438,  440,  442,  443,  445,  447,  449,  452,
-      454,  456,  458,  460,  462,  464,  466,  467,  469,  471,
-      473,  474,  475,  476,  478,  479,  479,  479,  480,  481,
-      483,  486,  486,  487,  488,  489,  490,  491,  492,  492,
-      494,  496,  498,  500,  502,  504,  506,  508,  510,  512,
-      514,  516,  518,  520,  522,  524,  526,  528,  530,  532,
-      534,  536,  539,  540,  541,  543,  545,  547,  549,  551,
+      372,  374,  376,  378,  380,  382,  384,  386,  388,  390,
+      393,  395,  397,  399,  401,  403,  405,  406,  407,  409,
+      411,  413,  415,  417,  419,  421,  424,  427,  429,  430,
+      432,  434,  436,  437,  439,  442,  444,  446,  448,  449,
+      451,  453,  455,  458,  460,  462,  464,  466,  468,  470,
+      472,  473,  475,  477,  479,  480,  481,  482,  484,  485,
+      485,  485,  485,  486,  486,  487,  489,  492,  492,  493,
+      494,  495,  496,  497,  498,  498,  500,  502,  504,  506,
+      508,  510,  512,  514,  516,  518,  520,  522,  524,  526,
+      528,  530,  532,  534,  536,  538,  540,  542,  545,  546,
 
-      553,  555,  557,  559,  562,  563,  565,  567,  569,  570,
-      572,  574,  576,  578,  579,  582,  584,  586,  589,  591,
-      593,  595,  598,  601,  603,  604,  606,  608,  610,  612,
-      614,  615,  616,  617,  620,  620,  620,  620,  620,  621,
-      623,  625,  627,  629,  632,  633,  635,  637,  639,  642,
-      644,  646,  648,  650,  652,  654,  656,  658,  660,  662,
-      664,  666,  668,  671,  672,  673,  674,  676,  678,  680,
-      682,  684,  686,  688,  690,  692,  694,  695,  697,  700,
-      702,  703,  705,  705,  707,  709,  710,  712,  714,  716,
-      718,  719,  719,  720,  723,  725,  727,  728,  730,  731,
+      547,  549,  551,  553,  555,  557,  559,  561,  563,  565,
+      568,  569,  571,  573,  575,  576,  578,  580,  582,  584,
+      585,  588,  590,  592,  595,  597,  599,  601,  604,  607,
+      609,  610,  612,  614,  616,  618,  620,  621,  622,  623,
+      626,  626,  626,  626,  626,  626,  627,  627,  629,  631,
+      633,  635,  638,  639,  641,  643,  645,  648,  650,  652,
+      654,  656,  658,  660,  662,  664,  666,  668,  670,  672,
+      674,  677,  678,  679,  680,  682,  684,  686,  688,  690,
+      692,  694,  696,  698,  700,  701,  703,  706,  708,  709,
+      711,  711,  713,  715,  716,  718,  720,  722,  724,  725,
 
-      732,  733,  733,  733,  734,  736,  739,  741,  743,  744,
-      746,  748,  751,  753,  755,  757,  759,  761,  763,  765,
-      767,  769,  771,  774,  776,  778,  780,  782,  783,  784,
-      785,  787,  789,  791,  793,  795,  797,  799,  801,  803,
-      805,  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,  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,
+      725,  726,  729,  731,  733,  734,  736,  737,  738,  739,
+      739,  739,  740,  740,  740,  742,  745,  747,  749,  750,
+      752,  754,  757,  759,  761,  763,  765,  767,  769,  771,
+      773,  775,  777,  780,  782,  784,  786,  788,  789,  790,
+      791,  793,  795,  797,  799,  801,  803,  805,  807,  809,
+      811,  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,  851,  853,
+      855,  857,  858,  861,  863,  865,  867,  869,  872,  875,
+      877,  879,  882,  884,  886,  888,  891,  893,  895,  896,
 
-      917,  918,  920,  921,  924,  926,  929,  932,  933,  935,
-      937,  938,  940,  941,  943,  945,  946,  947,  948,  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, 1028, 1030, 1033, 1035, 1038,
-     1041, 1043, 1045, 1047, 1047, 1049, 1051, 1052, 1053, 1054,
-     1056, 1058, 1060, 1062, 1063, 1065, 1066, 1067, 1069, 1070,
-     1070, 1072, 1074, 1075, 1078, 1079, 1080, 1081, 1082, 1082,
+      897,  898,  900,  902,  905,  908,  910,  912,  914,  917,
+      919,  921,  923,  924,  926,  927,  930,  932,  935,  938,
+      939,  941,  943,  944,  946,  947,  949,  951,  952,  953,
+      954,  955,  955,  955,  955,  957,  959,  961,  962,  964,
+      966,  968,  970,  972,  975,  977,  979,  982,  984,  987,
+      988,  989,  990,  991,  993,  996,  999, 1002, 1004, 1006,
+     1007, 1009, 1010, 1013, 1014, 1016, 1017, 1019, 1022, 1023,
+     1025, 1026, 1028, 1029, 1030, 1031, 1032, 1032, 1032, 1032,
+     1032, 1034, 1036, 1039, 1041, 1044, 1047, 1049, 1051, 1053,
+     1053, 1055, 1057, 1058, 1059, 1060, 1062, 1064, 1066, 1068,
 
-     1083, 1084, 1086, 1089, 1091, 1094, 1096, 1098, 1101, 1103,
-     1104, 1105, 1106, 1109, 1111, 1113, 1114, 1116, 1117, 1118,
-     1120, 1121, 1123, 1125, 1126, 1128, 1129, 1130, 1131, 1132,
-     1135, 1138, 1141, 1143, 1145, 1146, 1147, 1148, 1150, 1152,
-     1153, 1155, 1156, 1157, 1159, 1160, 1162, 1164, 1165, 1166,
-     1167, 1168, 1169, 1171, 1173, 1174, 1175, 1176, 1179, 1182,
-     1184, 1186, 1187, 1188, 1190, 1191, 1194, 1196, 1197, 1198,
-     1199, 1200, 1201, 1203, 1206, 1208, 1209, 1211, 1213, 1215,
-     1216, 1219, 1220, 1222, 1224, 1225, 1226, 1228, 1229, 1231,
-     1232, 1235, 1236, 1237, 1239, 1240, 1242, 1243, 1245, 1247,
+     1069, 1071, 1072, 1073, 1075, 1076, 1076, 1078, 1080, 1081,
+     1084, 1085, 1086, 1087, 1088, 1088, 1089, 1089, 1090, 1090,
+     1091, 1092, 1094, 1097, 1099, 1102, 1104, 1106, 1109, 1111,
+     1112, 1113, 1114, 1117, 1119, 1121, 1122, 1124, 1125, 1126,
+     1128, 1129, 1131, 1133, 1134, 1136, 1137, 1138, 1139, 1139,
+     1139, 1140, 1143, 1146, 1149, 1151, 1153, 1154, 1155, 1156,
+     1158, 1160, 1161, 1163, 1164, 1165, 1167, 1168, 1170, 1172,
+     1173, 1174, 1175, 1176, 1176, 1176, 1177, 1179, 1181, 1182,
+     1183, 1184, 1187, 1190, 1192, 1194, 1195, 1196, 1198, 1199,
+     1202, 1204, 1205, 1206, 1207, 1208, 1208, 1208, 1209, 1211,
 
-     1248, 1250, 1253, 1255, 1256, 1259, 1261, 1263, 1263
+     1214, 1216, 1217, 1219, 1221, 1223, 1224, 1227, 1228, 1230,
+     1232, 1233, 1234, 1236, 1236, 1236, 1237, 1239, 1240, 1243,
+     1244, 1245, 1247, 1248, 1250, 1250, 1250, 1251, 1253, 1255,
+     1256, 1258, 1261, 1263, 1263, 1263, 1264, 1267, 1269, 1269,
+     1269, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1271
     } ;
 
 static yyconst int yy_ec[256] =
@@ -547,14 +566,14 @@
         1,    2,    6,    7,    1,    1,    1,    8,    9,   10,
        10,   11,    1,   12,   13,   14,   15,   16,   17,   18,
        18,   19,   20,   21,   18,   22,   23,   24,   25,   26,
-       27,    1,    1,   10,   28,   29,   30,   31,   32,   33,
-       34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
-       44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
-       10,    1,   54,   55,    1,    1,   56,   57,   58,   59,
+       27,   28,    1,   10,   29,   30,   31,   32,   33,   34,
+       35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
+       45,   46,   47,   48,   49,   50,   51,   52,   53,   54,
+       10,    1,   55,   56,    1,    1,   57,   58,   59,   60,
 
-       60,   61,   62,   63,   64,   65,   61,   66,   67,   68,
-       69,   70,   61,   71,   72,   73,   74,   75,   61,   76,
-       61,   77,   78,   79,   80,    1,    1,    1,    1,    1,
+       61,   62,   63,   64,   65,   66,   62,   67,   68,   69,
+       70,   71,   62,   72,   73,   74,   75,   76,   62,   77,
+       62,   78,   79,   80,   81,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -571,660 +590,1021 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[81] =
+static yyconst int yy_meta[82] =
     {   0,
         1,    2,    3,    3,    3,    1,    4,    5,    6,    1,
         1,    1,    7,    1,    1,    8,    8,    8,    8,    8,
-        8,    8,    8,    9,    1,    1,    9,   10,   10,   10,
-       10,   10,   10,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,    1,    1,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   12,    1,   12
+        8,    8,    8,    9,    1,   10,    9,   11,   12,   12,
+       12,   12,   12,   12,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,    1,    1,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   14,    1,
+       15
     } ;
 
-static yyconst short int yy_base[737] =
+static yyconst short int yy_base[1070] =
     {   0,
-        0,    0,   78,   81,   84,   95,   90,   92,   89,   99,
-       87,  101,  181,  261,  119,  131, 1569, 1559,  138,  146,
-     1557, 1553,  333,  154, 4166,  155, 1546,  101, 4166,  198,
-     1535, 4166,  398,  198,  255,  263,  204,  279,  447,  183,
-      304,  453,  280,  469,  491,  492,  509,  525,  540,  543,
-      561, 1545,  608,    0, 4166, 4166, 1544, 1538, 4166, 4166,
-     1532, 1534,    0,    0, 1537,    0,    0, 1519, 4166, 4166,
-     4166,    0, 4166, 4166,  631,  710,    0,  113,  127,  223,
-     4166, 1534,  198,    0, 1531, 1528, 1516,  155, 1514,  645,
-     1517, 1512,  598, 1509, 4166,  647, 1493,  734,  648,  649,
+        0,    0,   79,   82,   85,   96,   91,  101,   90,  100,
+      107,  111,  192,  273,  142,  149, 1984, 1971,  116,  156,
+     1969, 1967,  346,  164, 6783,  218, 1960,  104, 6783,  192,
+     1949, 6783,  412,  212,  134,   99,  263,  281,  296,  220,
+      302,  462,  463,  479,  485,  500,  506,  531,  534,  523,
+      549, 1958,  592,    0, 6783, 6783, 1952, 1906, 1948, 6783,
+     6783, 1944, 1944, 1897,    0,    0, 1941,    0,    0, 1922,
+     6783, 6783, 6783,    0, 6783, 6783,  615,  695,    0,  287,
+      314,  115, 6783, 1937,  356,    0, 1935, 1935, 1927,  131,
+     1925,  629, 1926, 1918,  631, 1912, 6783,  639, 1897,  719,
 
-      664,  700,  665,  699, 1495,  715,  728,  731,  739,  783,
-      786,  804,  801,  817,  825,  840,  846,  843,  861,  185,
-       96,  872,  878,  889,  895,  906,  917,  923,  934,  156,
-      947,  950,  963,  971,  191,  974,  987,  998, 1011,  215,
-     1027, 1033, 1044, 1050, 1061, 1067, 1078, 1084, 1095,  100,
-     1101, 1117,  216,  241, 1116,    0, 1493,    0, 1150, 1162,
-        0, 4166, 1492, 4166,    0, 4166,    0, 1477,    0, 1461,
-      295,    0,  420, 4166, 1488,    0, 1486,    0, 1485,   91,
-     1461,  141, 1170, 4166, 4166, 1181, 1480, 1166, 1167, 1182,
-     1183, 1230, 1467, 1238, 1241, 1254, 1262, 1270, 1278, 1291,
+      633,  634,  649,  685,  650,  684, 1910,  700,  713,  716,
+      724,  768,  771,  789,  786,  802,  810,  825,  831,  828,
+      846,  110,  115,  861,  864,  872,  887,  898,  909,  915,
+      926,  117,  939,  942,  955,  963,   83,  966,  979,  990,
+     1003,  124, 1019, 1025, 1036, 1042, 1053, 1064, 1070, 1081,
+     1087,  162, 1098, 1114,  169,  296, 1111,    0, 1909, 1162,
+     1174, 1186,    0, 6783, 1846, 1898, 6783, 1836,    0, 6783,
+        0, 1880,    0, 1858,  201,    0,  360, 6783, 1886,    0,
+     1885,    0, 1882,  106, 1851,  254, 1152, 6783, 6783, 1197,
+     1873, 1181, 1182, 1197, 1198, 1246, 1872, 1254, 1257, 1270,
 
-     1299, 1302, 1323, 1324, 1339, 1345, 1356, 1362, 1373, 1379,
-     1390, 1401,  229,  212, 1414, 1422, 1425, 1440, 1443, 1446,
-     1471, 1468, 1474, 1489,  245, 1492, 1507, 1513,  270, 1524,
-     1535, 1541, 1552, 1563,  244, 1574, 1580, 1591, 1597, 1612,
-     1613, 1628, 1639, 1645, 1660, 1666,  278, 1677, 1688, 1701,
-      338,  286,  439, 1704, 1463,  475,  511, 1461, 4166,   96,
-     1430, 1405, 1445, 1443, 4166, 4166, 4166, 4166,  480, 1712,
-     1725, 1736, 1742, 1753, 1759, 1775, 1776, 1791, 1799, 1807,
-     1823, 1820, 1831, 1844, 1847, 1862, 1868, 1879, 1885, 1896,
-     1911, 1917,  288,  268, 1928, 1934, 1949, 1950, 1965, 1971,
+     1278, 1286, 1294, 1307, 1315, 1318, 1339, 1340, 1355, 1361,
+     1372, 1378, 1389, 1395, 1406, 1417,  209,  113, 1430, 1438,
+     1441, 1456, 1459, 1462, 1488, 1480, 1491, 1504,  233, 1512,
+     1525, 1533,  253, 1536, 1549, 1557, 1565, 1573,  255, 1586,
+     1589, 1597, 1610, 1618, 1626, 1634, 1647, 1655, 1668, 1676,
+      289, 1684, 1700, 1701,  150,  309,  231, 1716, 1864, 1759,
+     1767, 1806, 1860, 1802, 6783,  305, 1827, 1812, 1851, 1850,
+     6783, 6783, 6783, 6783,  495, 1761, 1762, 1777, 1783, 1794,
+     1800, 1816, 1817, 1832, 1840, 1848, 1864, 1861, 1872, 1885,
+     1888, 1903, 1909, 1920, 1926, 1937, 1952, 1958,  295,  454,
 
-     1986, 1999, 2007, 2015,  316, 2030, 2033, 2046,  297, 2054,
-     2069, 2072, 2090,  264, 2087, 2093, 2110, 2116, 2127, 2133,
-     2144, 2150, 2161, 2167,  471, 2182, 2183, 2200, 2199, 2216,
-      440,  343,  492, 2217,  590,  670,  631, 2254, 1439,  456,
-     2239, 2254, 2260, 2271,  496, 2277, 2292, 2295, 2303, 2316,
-     2324, 2332, 2345, 2353, 2366, 2374, 2382, 2390, 2405, 2411,
-     2422, 2428, 2443,  106,  478,  530, 2444, 2464, 2461, 2482,
-     2481, 2497, 2503, 2514, 2520, 2535,  491, 2538, 2541, 2558,
-      498, 2559,  321, 2574, 2580,  304, 2595, 2596, 2611, 2612,
-      534,  493,  514, 2627, 2633, 2644,  585, 2655,  552,  586,
+     1969, 1975, 1990, 1991, 2006, 2012, 2027, 2030, 2038, 2051,
+      300, 2059, 2062, 2075,  282, 2083, 2096, 2104, 2112,  353,
+     2120, 2128, 2141, 2149, 2152, 2170, 2167, 2173, 2188, 2191,
+      423, 2194, 2209, 2212, 2220, 2233,  455,  250,  483, 2244,
+     2287, 2309, 2331, 2343, 1838, 1841, 1836,  490, 2327, 2342,
+     2358, 2355,  513, 2376, 2379, 2382, 2397, 2400, 2408, 2421,
+     2429, 2442, 2453, 2459, 2470, 2481, 2496, 2502, 2513, 2519,
+     2534,  488,  361,  534, 2535, 2555, 2552, 2573, 2572, 2588,
+     2594, 2605, 2618, 2629,  522, 2626, 2642, 2650,  482, 2658,
+      553, 2666, 2679,  511, 2692, 2695, 2703, 2716,  545,  568,
 
-      510,  697,  728, 4166,  312, 2661, 2677, 2683,  663, 2694,
-     2700, 2711, 2717, 2733, 2734, 2749, 2760, 2766, 2783, 2789,
-     2800, 2806, 2817, 2823, 2834, 2840, 2856,  512,  538,  702,
-     2857, 2872, 2878, 2889, 2895, 2910, 2916, 2927, 2942, 2948,
-      524,  545, 2959, 2975,  640, 2972, 1407, 2983, 2996,  696,
-     3004, 3019, 3022, 3025,  749, 1414,  238, 3040, 3043,  515,
-      609,  701,  546,  638,  781, 3078, 1398, 3063, 3076,  748,
-     3079, 3094, 3100, 3111, 3117, 3128, 3134, 3145, 3156, 3162,
-     3173, 3179, 3190, 3201, 3207, 3218,  775,  713,  806, 3224,
-     3235, 3246, 3252, 3263, 3269, 3284, 3285, 3300, 3306, 1396,
+      538, 2727, 2733, 2744,  426, 2755,  594,  591,  605,  682,
+     2798, 6783, 1793, 1792,  674, 2782, 2798, 2795,  623, 2806,
+     2819, 2822, 2839, 2845, 2856, 2862, 2877, 2883, 2900, 2906,
+     2917, 2923, 2934, 2940, 2951, 2957, 2973,  704,  654,  687,
+     2974, 2989, 2995, 3006, 3012, 3027, 3033, 3044, 3059, 3065,
+      607,  746, 3076, 3092,  587, 3089, 1808, 3100, 3113,  789,
+     3121, 3136, 3139, 3142,  705, 1809,   78, 3157, 3160,  684,
+      734,  178,  761,  821, 3208, 3220, 1815, 1813, 1793, 3204,
+     3217,  735, 3220, 3235, 3241, 3252, 3258, 3269, 3275, 3286,
+     3297, 3303, 3314, 3320, 3331, 3342, 3348, 3359,  756,  211,
 
-      805, 3317,  807, 3323, 1402, 3334, 3345,  840, 3351, 3366,
-      810, 1394,  849, 3372, 1410,  835,  824,  822,  850, 1029,
-      119, 3383, 3398,  846, 3404, 3415, 3426, 3432, 3443, 3449,
-     3464, 3467, 3475, 3488, 3491,  804,  668,  884,  899, 3506,
-     3512, 3523, 3529, 3540, 3546,  901, 1380,  910, 3557,  844,
-     1370,  909, 3577, 3574,  916, 1348,  914, 3580,  926,  942,
-      961,  972, 1149, 1214,  892, 3595, 3601, 1370, 3612, 3618,
-     3633, 3634, 3649,  550, 3655, 3666,  938,  988,  954, 1362,
-     3672, 3683, 3694, 1007, 1333,  967,  986, 1305,  983, 1011,
-     1331, 1286,  992, 3700, 1052, 1036, 1038, 1045, 1320, 4166,
+      794, 3365, 3376, 3387, 3393, 3404, 3410, 3425, 3426, 3441,
+     3447, 1789,  326, 3458,  824, 3464, 1795, 3475, 3486,  786,
+     3492, 3507,  830, 1795,  588, 3513, 1809,  759,  655,  324,
+      836, 3556,    0,    0,  527, 3550, 3551,  507, 3566, 3574,
+     3577, 3590, 3598, 3606, 3614, 3627, 3635, 3643, 3651,  810,
+      847,  826,  835, 3664, 3672, 3675, 3688, 3696, 3699,  851,
+     1786,  874, 3712,  853, 1779,  832, 3733, 3720,  883, 1773,
+      902, 3736,  894,  865,  896,  906, 3784, 1022, 1786, 1784,
+      120, 3768, 3779, 1796, 3785, 3796, 3802, 3817, 3818,  931,
+     3833, 3834,  917,  937,  920, 1795, 3849, 3857, 3872,  909,
 
-     1299, 3711, 3717, 3732, 3733, 3748, 1254, 3749, 3764, 1054,
-     1010, 1065, 3770, 3781, 3792, 1073, 1251, 1075, 1051, 1230,
-     1047, 1228, 1193, 1135, 1215, 1088, 1162, 1163, 1159, 3798,
-     3809, 3815, 1159, 3826, 1164, 1081, 1200, 3837, 3843, 1223,
-     1161, 1207, 1248, 1088, 1189, 1102, 1098, 1222, 1191, 1252,
-     1293, 1064, 1056, 3858, 1274, 1263, 1295, 3859, 3874, 1048,
-     1010, 1345, 1029,  929, 1291,    0,  934, 1347, 1360, 1322,
-     1363,  912,  908, 3875,  937, 1221,  931,  888,  918, 1190,
-        0, 1364,  829,  842, 1366, 1385,  825,  791,  713, 1357,
-        0, 1285, 1415,  639, 1433,  670,  637,  621,  576, 1379,
+     1763,  941,  958, 1756,  947,  924, 1784, 1748,  965, 3873,
+      939,  988, 1003,  974, 1230, 6783, 1767, 6783, 1766, 6783,
+     1762, 3888, 3889, 3904, 3905, 3920, 1731, 3921, 3936, 1031,
+     1029, 1044, 3942, 3953, 3964,  987, 1731, 1051, 1062, 1731,
+     1005, 1730, 1729, 1074, 1746, 1018, 1085, 1111, 1729, 1727,
+     1711, 3970, 3981, 3987, 1711, 3998, 1038,  589, 1049, 4009,
+     4015, 1086, 1714, 1119, 1124, 1699, 1148, 1707, 1704, 1130,
+     1164, 1187, 1149, 1709, 1708, 1693, 1684, 4030, 1188, 1216,
+     1230, 4031, 4046, 1709, 1673, 1266, 1174, 1666, 1237,    0,
+     1678, 1270, 1240, 1235, 1279, 1685, 1683, 1659, 1659, 4047,
 
-      336,    0,  236,  122,    0,  132,    0, 4166, 3923, 3935,
-     3947, 3959, 3971, 3983, 3995, 4006, 4010, 4021, 4033, 4045,
-     4056, 4067, 4078, 4083, 4088, 4092, 4097, 4101, 4105, 4109,
-     4120, 4126, 4136, 4143, 4150, 4157
+     1690, 1047, 1687, 1640, 1679, 1139,    0, 1272, 1657, 1675,
+     1294, 1308, 1673, 1656, 1653, 1634, 1636, 1040,    0,  952,
+     1312, 1627, 1327, 1659, 1643, 1641, 1622, 1621, 1644, 1206,
+     1642,    0, 1640, 1621, 1619, 1605,    0, 1631, 1615, 1614,
+        0, 1608, 1606, 1604, 1597, 1596, 1593, 1592, 1583, 1582,
+     1580, 1574, 1572, 1568, 1566, 1564, 1562, 1560, 1558, 1555,
+     1553, 1544, 1543, 1540, 1536, 1534, 1532, 1531, 1529, 1523,
+     1522, 1521, 1519, 1515, 1513, 1511, 1510, 1508, 1499, 1498,
+     1497, 1495, 1491, 1489, 1488, 1487, 1486, 1485, 1484, 1469,
+     1466, 1465, 1463, 1460, 1448, 1447, 1445, 1441, 1439, 1437,
+
+     1436, 1435, 1434, 1428, 1426, 1424, 1423, 1421, 1417, 1415,
+     1414, 1413, 1412, 1406, 1402, 1398, 1396, 1395, 1389, 1387,
+     1381, 1379, 1378, 1372, 1368, 1366, 1365, 1364, 1359, 1358,
+     1350, 1349, 1346, 1344, 1333, 1325, 1324, 1322, 1318, 1316,
+     1311, 1295, 1287, 1285, 1281, 1254, 1252, 1249, 1221, 1216,
+     1189, 1188, 1187, 1122, 1118, 1105, 1098, 1094, 1092, 1043,
+     1030, 1026, 1022, 1013, 1010,  945,  896,  892,  883,  864,
+      813,  797,  781,  713,  711,  708,  703,  641,  412,  410,
+      409,  307,  305, 6783, 4096, 4111, 4126, 4141, 4156, 4171,
+     4186, 4200, 4206, 4219, 4234, 4249, 4262, 4275, 4288, 4295,
+
+     4302, 4308, 4315, 4321, 4327, 4333, 4346, 4355, 4368, 4383,
+     4397, 4412, 4427, 4442, 4457, 4472, 4487, 4502, 4517, 4532,
+     4547, 4562, 4577, 4592, 4607, 4622, 4637, 4652, 4667, 4682,
+     4697, 4712, 4727, 4742, 4757, 4772, 4787, 4802, 4817, 4832,
+     4847, 4862, 4877, 4892, 4907, 4922, 4937, 4952, 4967, 4982,
+     4997, 5012, 5027, 5042, 5057, 5072, 5087, 5102, 5117, 5132,
+     5147, 5162, 5177, 5192, 5207, 5222, 5237, 5252, 5267, 5282,
+     5297, 5312, 5327, 5342, 5357, 5372, 5387, 5402, 5417, 5432,
+     5447, 5462, 5477, 5492, 5507, 5522, 5537, 5552, 5567, 5582,
+     5597, 5612, 5627, 5642, 5657, 5672, 5687, 5702, 5717, 5732,
+
+     5747, 5762, 5777, 5792, 5807, 5822, 5837, 5852, 5867, 5882,
+     5897, 5912, 5927, 5942, 5957, 5972, 5987, 6002, 6017, 6032,
+     6047, 6062, 6077, 6092, 6107, 6122, 6137, 6152, 6167, 6182,
+     6197, 6212, 6227, 6242, 6257, 6272, 6287, 6302, 6317, 6332,
+     6347, 6362, 6377, 6392, 6407, 6422, 6437, 6452, 6467, 6482,
+     6497, 6512, 6527, 6542, 6557, 6572, 6587, 6602, 6617, 6632,
+     6647, 6662, 6677, 6692, 6707, 6722, 6737, 6752, 6767
     } ;
 
-static yyconst short int yy_def[737] =
+static yyconst short int yy_def[1070] =
     {   0,
-      708,    1,  709,  709,  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,   33,   33,   33,   33,   33,   33,   33,
+      884,    1,  885,  885,  885,  885,  886,  886,  887,  887,
+      888,  888,  889,  889,  890,  890,  884,  884,  884,  884,
+      884,  891,  884,  892,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,   33,   33,   33,   33,   33,   33,   33,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,  717,  708,  718,  708,  708,  708,  708,  708,  708,
-      708,  708,  719,  719,  708,  720,  720,  708,  708,  708,
-      708,  721,  708,  708,  722,  722,  723,  708,  708,   23,
-      708,  708,  708,  715,  715,  708,  724,  708,  725,  716,
-      716,  708,  708,  708,  708,  708,  708,  726,   33,   33,
+       33,  893,  884,  894,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  895,  895,  884,  896,  896,  884,
+      884,  884,  884,  897,  884,  884,  898,  898,  899,  884,
+      884,   23,  884,  884,  884,  891,  891,  884,  900,  884,
+      901,  892,  892,  884,  884,  884,  884,  884,  884,  902,
 
-       33,   33,   33,   33,  727,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,  727,
-      727,   33,   33,   33,   33,   33,   33,   33,   33,  727,
-       33,   33,   33,   33,  727,   33,   33,   33,   33,  727,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,  727,
-       33,   33,  727,  727,   33,  728,  717,   53,  708,  708,
-      718,  708,  708,  708,  719,  708,  720,  708,  721,   76,
-       76,  723,  708,  708,  708,  729,  724,  730,  725,  708,
-      708,  731,  708,  708,  708,  726,  732,   33,   33,   33,
-       33,   33,  732,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,  903,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,  903,  903,   33,   33,   33,   33,   33,   33,   33,
+       33,  903,   33,   33,   33,   33,  903,   33,   33,   33,
+       33,  903,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,  903,   33,   33,  903,  903,   33,  904,  893,  884,
+      884,  884,  894,  884,  884,  884,  884,  884,  895,  884,
+      896,  884,  897,   78,   78,  899,  884,  884,  884,  905,
+      900,  906,  901,  884,  884,  907,  884,  884,  884,  902,
+      908,   33,   33,   33,   33,   33,  908,   33,   33,   33,
 
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,  727,  727,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,  727,   33,   33,   33,  727,   33,
-       33,   33,   33,   33,  727,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,  727,   33,   33,   33,
-      727,  727,  727,   33,  728,  733,  734,  708,  708,   76,
-       76,  708,  729,  730,  708,  708,  708,  708,  731,   33,
+       33,   33,   33,   33,   33,   33,  903,  903,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,  903,   33,
+       33,   33,  903,   33,   33,   33,   33,   33,  903,   33,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+      903,   33,   33,   33,  903,  903,  903,   33,  904,  884,
+      884,  884,  884,  884,  884,   78,   78,  884,  905,  906,
+      884,  884,  884,  884,  907,   33,   33,   33,   33,   33,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,  727,  727,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,  903,  903,
 
-       33,   33,   33,   33,  727,   33,   33,   33,  727,   33,
-       33,   33,   33,  727,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,  727,   33,   33,   33,   33,   33,
-      727,  727,  727,   33,  733,  733,  734,  708,  708,   76,
-       33,   33,   33,   33,  727,   33,   33,   33,   33,   33,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,  727,  727,  727,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,  727,   33,   33,   33,
-      727,   33,  186,   33,   33,  727,   33,   33,   33,   33,
-      727,  186,  727,   33,   33,   33,  727,   33,  727,  727,
-
-      727,  708,  735,  708,   76,   33,   33,   33,  727,   33,
+      903,   33,   33,   33,  903,   33,   33,   33,   33,  903,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,  727,  727,  727,
+      903,   33,   33,   33,   33,   33,  903,  903,  903,   33,
+      884,  884,  884,  884,  884,  884,  884,   78,   33,   33,
+       33,   33,  903,   33,   33,   33,   33,   33,   33,   33,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-      186,  727,   33,   33,  727,   33,  186,   33,   33,  727,
-       33,   33,   33,   33,  727,  186,  727,   33,   33,  727,
-      727,  727,  727,  727,  735,  708,   76,   33,   33,  727,
+       33,  903,  903,  903,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,  903,   33,   33,   33,  903,   33,
+      190,   33,   33,  903,   33,   33,   33,   33,  903,  190,
+
+      903,   33,   33,   33,  903,   33,  903,  903,  903,  884,
+      884,  884,  884,  884,   78,   33,   33,   33,  903,   33,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,  727,  727,  727,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,  186,
+       33,   33,   33,   33,   33,   33,   33,  903,  903,  903,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+      190,  903,   33,   33,  903,   33,  190,   33,   33,  903,
+       33,   33,   33,   33,  903,  190,  903,   33,   33,  903,
+      903,  903,  903,  903,  884,  884,  884,  884,   78,   33,
+       33,  903,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,  903,  903,
 
-      727,   33,  727,   33,  186,   33,   33,  727,   33,   33,
-      727,  186,  727,   33,  727,  727,  727,  727,  727,  736,
-       76,   33,   33,  727,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,  727,  727,  727,  727,   33,
-       33,   33,   33,   33,   33,  727,  186,  727,   33,  727,
-      186,  727,   33,   33,  727,  186,  727,   33,  727,  727,
-      727,  727,  736,  736,   76,   33,   33,  727,   33,   33,
-       33,   33,   33,  186,   33,   33,  727,  727,  727,  727,
-       33,   33,   33,  727,  186,  727,  727,  186,  727,  186,
-      727,  186,  727,   33,  727,  727,  727,  727,  708,  708,
+      903,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,  190,  903,   33,  903,   33,  190,   33,   33,  903,
+       33,   33,  903,  190,  903,   33,  903,  903,  903,  903,
+      903,  884,  909,  910,   78,   33,   33,  903,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,  903,
+      903,  903,  903,   33,   33,   33,   33,   33,   33,  903,
+      190,  903,   33,  903,  190,  903,   33,   33,  903,  190,
+      903,   33,  903,  903,  903,  903,  884,  911,  912,  913,
+       78,   33,   33,  903,   33,   33,   33,   33,   33,  190,
+       33,   33,  903,  903,  903,  903,   33,   33,   33,  903,
 
-      721,   33,   33,   33,   33,   33,  186,   33,   33,  727,
-      727,  727,   33,   33,   33,  727,  186,  727,  727,  186,
-      727,  186,  186,  727,  727,  727,  727,  727,  721,   33,
-       33,   33,  186,   33,  727,  727,  727,   33,   33,  727,
-      186,  727,  727,  186,  727,  186,  186,  727,  727,  727,
-      727,  721,  186,   33,  727,  727,  727,   33,   33,  727,
-      186,  727,  727,  186,  727,  186,  186,  727,  727,  727,
-      727,  721,  186,   33,  727,  727,  727,  186,  727,  727,
-      186,  727,  186,  727,  727,  727,  727,  721,  186,  727,
-      186,  727,  727,  186,  727,  727,  721,  186,  727,  727,
+      190,  903,  903,  190,  903,  190,  903,  190,  903,   33,
+      903,  903,  903,  903,  884,  884,  914,  884,  915,  884,
+      897,   33,   33,   33,   33,   33,  190,   33,   33,  903,
+      903,  903,   33,   33,   33,  903,  190,  903,  903,  190,
+      903,  190,  190,  903,  903,  903,  903,  903,  916,  917,
+      897,   33,   33,   33,  190,   33,  903,  903,  903,   33,
+       33,  903,  190,  903,  903,  190,  903,  190,  190,  903,
+      903,  903,  903,  918,  919,  897,  190,   33,  903,  903,
+      903,   33,   33,  903,  190,  903,  903,  190,  903,  190,
+      190,  903,  903,  903,  903,  920,  921,  897,  190,   33,
 
-      727,  186,  727,  721,  186,  727,  721,    0,  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
+      903,  903,  903,  190,  903,  903,  190,  903,  190,  903,
+      903,  903,  903,  922,  923,  897,  190,  903,  190,  903,
+      903,  190,  903,  903,  924,  925,  897,  190,  903,  903,
+      903,  190,  903,  926,  927,  897,  190,  903,  928,  929,
+      897,  930,  931,  932,  933,  934,  935,  936,  937,  938,
+      939,  940,  941,  942,  943,  944,  945,  946,  947,  948,
+      949,  950,  951,  952,  953,  954,  955,  956,  957,  958,
+      959,  960,  961,  962,  963,  964,  965,  966,  967,  968,
+      969,  970,  971,  972,  973,  974,  975,  976,  977,  978,
+      979,  980,  981,  982,  983,  984,  985,  986,  987,  988,
+
+      989,  990,  991,  992,  993,  994,  995,  996,  997,  998,
+      999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
+     1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018,
+     1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028,
+     1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038,
+     1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048,
+     1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
+     1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
+     1069,  884,  884,    0,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884
     } ;
 
-static yyconst short int yy_nxt[4247] =
+static yyconst short int yy_nxt[6865] =
     {   0,
        18,   19,   20,   19,   19,   21,   22,   23,   24,   25,
        18,   25,   26,   27,   28,   29,   30,   30,   30,   30,
-       30,   30,   30,   31,   21,   32,   32,   33,   34,   35,
-       36,   37,   38,   39,   40,   41,   40,   40,   40,   42,
-       43,   44,   45,   40,   46,   47,   48,   49,   50,   51,
-       40,   40,   40,   21,   21,   52,   52,   52,   52,   52,
+       30,   30,   30,   31,   21,   32,   32,   18,   33,   34,
+       35,   36,   37,   38,   39,   40,   41,   40,   40,   40,
+       42,   43,   44,   45,   40,   46,   47,   48,   49,   50,
+       51,   40,   40,   40,   21,   21,   52,   52,   52,   52,
        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
-       52,   52,   52,   52,   52,   52,   52,   53,   21,   25,
-       55,   56,   56,   55,   56,   56,   55,   56,   56,   67,
-       57,   64,   60,   57,   60,   65,   58,   55,   56,   56,
+       52,   52,   52,   52,   52,   52,   52,   52,   53,   21,
+       25,   55,   56,   56,   55,   56,   56,   55,   56,   56,
+      197,   57,   66,   61,   57,  197,   67,   59,   55,   56,
 
-       61,   64,   61,   67,   62,   65,   62,   58,  193,   82,
-       68,   95,  193,   69,  173,  173,  173,  173,  193,  265,
-       78,   79,   78,   78,   68,  266,   80,   69,  173,  173,
-      173,  173,   78,   79,   78,   78,  170,  340,   80,   83,
-       83,   83,   83,  268,  193,  268,   82,   83,   83,   83,
-       83,  214,  565,  269,   82,   90,   90,   90,   90,  170,
-      707,  428,   82,   82,   70,  247,   71,   92,  193,   90,
-       90,   93,   93,   93,   93,   93,   93,   93,   70,   86,
-       71,   72,   73,   74,   73,   73,   72,   72,   72,   72,
-       72,   72,   72,   72,   72,   72,   32,  193,   81,   83,
+       56,   62,   66,   61,   58,   63,   67,   58,   59,   69,
+       58,   62,   84,   69,   97,   63,   64,   85,   85,   85,
+       85,   58,  197,  884,   84,  197,   64,  197,  101,  197,
+       70,  116,  621,   71,   70,  271,  197,   71,  101,  884,
+      101,  272,  101,   80,   81,   80,   80,  101,  233,   82,
+       80,   81,   80,   80,  525,   88,   82,   85,   85,   85,
+       85,  174,  197,  101,   84,   92,   92,   92,   92,  113,
+      884,  218,   84,  114,  197,  101,  115,  101,  217,   92,
+       92,  197,  101,  300,  229,   72,   90,   73,  239,   72,
+      197,   73,   74,   75,   76,   75,   75,   74,   74,   74,
 
-       83,   83,   83,  193,   72,   72,   72,   72,   32,   88,
-       81,   99,   76,   96,   96,   96,   96,   96,   96,   96,
-       96,   99,  225,   99,  193,   99,   99,  193,  193,  106,
-       99,  708,   99,  107,   72,   72,   99,  108,   99,  109,
-       99,  193,   99,  115,  116,   99,   99,  708,  193,  110,
-      193,   99,  213,  193,  117,  229,  193,  193,   73,   72,
-       73,   72,   73,   74,   73,   73,   72,   72,   72,   72,
-       72,   72,   72,   72,   72,   72,  193,  708,  235,  251,
-      193,  294,  193,   99,   72,   72,   72,   72,  293,  111,
-      193,   99,   76,  112,  114,   99,  113,   99,  193,  252,
+       74,   74,   74,   74,   74,   74,   74,   98,   98,   98,
+       98,   98,   98,   98,   98,   74,   74,   74,   74,   74,
+       32,  197,   83,  197,   78,  337,   84,   32,  251,   83,
+       94,  266,  267,  255,   95,   95,   95,   95,   95,   95,
+       95,  101,  174,  197,  108,  197,   74,   74,  109,  101,
+      529,  101,  110,  101,  111,  101,  274,  552,  274,  101,
+      101,  101,  197,  101,  112,  197,  275,  197,  101,  299,
+       75,   74,   75,   74,   75,   76,   75,   75,   74,   74,
+       74,   74,   74,   74,   74,   74,   74,   74,  177,  177,
+      177,  177,  101,  311,  197,  339,   74,   74,   74,   74,
 
-      193,   99,   99,   99,  305,   99,  118,   99,   99,  193,
-       99,  314,  253,  513,   72,   72,  193,   99,   99,   99,
-       99,   99,   99,  119,  260,  261,   99,  129,  193,  309,
-      365,  122,   99,  708,  123,  170,  386,  325,   73,   72,
-       73,   82,   99,  124,  125,  332,   99,  467,  193,  126,
-      193,   99,  170,  130,  381,  193,  447,   86,  364,  450,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
-       87,   87,   87,   87,   87,   87,  377,   88,   89,   89,
+       74,  197,  101,  117,  118,   78,  101,  197,  197,  120,
+      101,  101,  197,  315,  119,  177,  177,  177,  177,  408,
+      101,  197,  101,  320,  101,  101,  121,   74,   74,  101,
+      124,  101,  620,  125,  618,  101,  197,  101,  197,  101,
+      389,  101,  126,  127,  101,  101,  174,  348,  128,  331,
+      101,   75,   74,   75,   84,  256,  122,   85,   85,   85,
+       85,  177,  177,  177,  177,  197,  372,  123,  257,  338,
+       88,  385,  562,  197,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
        89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
 
-       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
-       98,  400,  331,   99,   99,   99,   99,   99,   99,   99,
-       99,  173,  173,  173,  173,   99,  100,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,  101,   99,  102,   99,
-      103,   99,   99,   99,   99,  104,   99,   99,   99,   99,
-       99,  193,  193,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,   99,  335,  335,  335,  335,
-      127,   99,  268,  193,  268,   99,  405,   99,  128,   99,
-      193,   99,  269,   99,   99,   99,  170,  131,  132,  399,
+      575,   90,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,  100,  439,  394,  101,  101,  101,
+      101,  101,  101,  101,  101,  197,  620,  618,  197,  620,
+      101,  102,  101,  101,  101,  101,  101,  101,  101,  101,
+      101,  103,  101,  104,  101,  105,  101,  101,  101,  101,
+      106,  101,  101,  101,  101,  101,  197,  197,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      129,  101,  101,  470,  197,  197,  401,  274,  130,  274,
 
-       99,  133,  333,  193,  193,  708,  120,   99,  193,   99,
-      193,  134,  337,  337,  337,  337,   99,  121,  136,   99,
-       99,  137,  193,  141,  193,  135,  193,  193,  456,  138,
-       99,   99,   99,   99,   99,  139,  708,   99,   99,   99,
-      142,  429,  193,  393,  143,  146,  193,   99,  401,   99,
-      193,   99,  147,   99,  442,  144,   99,  193,  193,  500,
-      145,  140,  708,   99,  193,   99,  409,   99,   99,  148,
-      445,   99,   99,  457,  515,  464,  149,  487,   99,  607,
-      151,   99,   99,   99,  150,   99,  152,   99,  193,   99,
-       99,  335,  335,  335,  335,  488,  155,  193,  193,   99,
+      197,  101,  101,  101,  101,  101,  101,  275,  133,  134,
+      101,  131,  135,  138,  101,  407,  139,  373,  101,  197,
+      101,  415,  136,  197,  140,  197,  101,  101,  101,  101,
+      141,  174,  143,  101,  197,  101,  137,  132,  144,  101,
+      409,  101,  145,  101,  438,  101,  197,  101,  101,  101,
+      197,  148,  101,  146,  101,  455,  142,  197,  147,  149,
+      101,  581,  101,  101,  101,  884,  101,  460,  174,  584,
+      101,  101,  101,  101,  101,  153,  150,  101,  101,  101,
+      884,  154,  101,  151,  419,  157,  452,  156,  101,  457,
+      101,  152,  101,  160,  160,  160,  160,  101,  467,  197,
 
-      430,   99,  501,   99,  455,  518,  154,  153,   99,  158,
-      158,  158,  158,  183,  183,  183,  183,  183,  183,  183,
-      183,  193,  462,  159,  159,  159,  159,  159,  159,  160,
-      160,  169,  337,  337,  337,  337,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,   90,   90,   90,   90,
-      193,  460,  193,  180,  169,  169,  169,  169,  463,  705,
-       90,   90,   96,   96,   96,   96,   96,   96,   96,   96,
-      503,  402,  402,  402,  402,  193,   99,   99,  704,  516,
-      193,  403,  193,  702,  169,  169,   99,   99,   99,   99,
-       99,   99,   99,   99,  188,   99,   99,  519,  402,  402,
+      197,  197,  155,  197,  466,  440,  197,  161,  161,  161,
+      161,  161,  161,  162,  162,  173,  465,  197,  515,  884,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+       92,   92,   92,   92,  571,  197,  680,  184,  173,  173,
+      173,  173,  173,  512,   92,   92,  187,  187,  187,  187,
+      187,  187,  187,  187,   98,   98,   98,   98,   98,   98,
+       98,   98,  101,  101,  473,  472,  197,  197,  618,  173,
+      173,  474,  101,  101,  101,  101,  101,  101,  101,  101,
+      192,  101,  101,  410,  410,  410,  410,  482,  193,  101,
+      101,  101,  101,  195,  173,  173,  197,  101,  101,  197,
 
-      402,  402,  189,   99,   99,   99,   99,  191,  193,  169,
-      169,   99,   99,  193,  193,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  193,  470,   99,   99,  465,
-      465,  465,  465,  169,  169,  169,  169,   99,   99,   99,
-       99,   99,   99,   99,  578,  192,   99,   99,  194,  404,
-      171,  190,  508,   99,  698,   99,   99,   99,  538,   99,
-      193,  193,   99,  169,  169,  489,   99,   99,   99,   99,
-       99,   99,  517,  196,  195,   99,  404,   99,   99,   99,
-      197,   99,  465,  465,  465,  465,   99,  193,  169,  187,
-      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      479,  574,  500,  101,  101,  174,  197,  197,  173,  173,
+      173,  173,  173,  101,  101,  101,  101,  101,  101,  101,
+      620,  196,  101,  101,  198,  618,  175,  194,  620,  101,
+      618,  101,  101,  101,  527,  101,  197,  197,  101,  173,
+      173,  501,  101,  101,  101,  101,  101,  101,  197,  200,
+      199,  101,  412,  101,  101,  101,  201,  101,  197,  523,
+      499,  197,  101,  197,  173,  191,  191,  191,  191,  191,
+      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
+      191,  191,  191,  191,  191,  191,  191,  101,  197,  202,
 
-      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
-      187,   99,  511,  198,   99,  524,  193,  193,  193,  193,
-      536,   99,  193,   99,   99,   99,   99,  199,   99,   99,
-       99,  200,   99,   99,  193,  697,  193,  193,  537,   99,
-      201,  202,   99,   99,   99,   99,   99,  193,   99,  203,
-      548,   99,  193,  204,  193,   99,  193,   99,  193,   99,
-      694,  193,  193,   99,   99,   99,  550,   99,   99,  205,
-      206,   99,   99,  539,   99,  208,  577,  555,   99,  560,
-       99,  211,   99,   99,   99,   99,   99,  207,  209,   99,
-       99,  215,  210,   99,  557,  562,  193,  561,  559,   99,
+      101,  197,  550,  538,  513,  528,  197,  101,  620,  101,
+      101,  101,  101,  203,  101,  101,  101,  204,  101,  101,
+      551,  530,  197,  573,  618,  101,  205,  206,  101,  101,
+      101,  101,  101,  197,  101,  207,  197,  101,  197,  208,
+      620,  101,  197,  101,  197,  101,  520,  197,  197,  101,
+      101,  101,  566,  101,  101,  209,  210,  101,  101,  197,
+      101,  212,  553,  197,  101,  197,  101,  215,  101,  101,
+      101,  101,  101,  211,  213,  101,  101,  197,  214,  101,
+      219,  531,  576,  593,  564,  101,  197,  101,  216,  101,
+      101,  618,  605,  101,  101,  197,  220,  596,  569,  595,
 
-       99,   99,  212,   99,  601,  552,   99,  568,   99,  216,
-       99,  193,   99,  193,   99,  587,   99,   99,   99,   99,
-       99,  193,  193,   99,  218,   99,  193,   99,  193,   99,
-      193,  217,  170,   99,   99,   99,   99,   99,  193,  691,
-      219,  220,   99,  193,   99,   99,   99,  221,   99,  193,
-      193,   99,  689,   99,  193,   99,  579,   99,  688,   99,
-      580,   99,   99,  223,   99,   99,  193,  222,  589,  683,
-       99,  584,  224,  193,   99,   99,   99,  591,   99,  193,
-      681,   99,  586,  226,  193,   99,  593,   99,   99,   99,
-       99,   99,   99,  595,   99,  193,  227,   99,  193,   99,
+      101,  101,  101,  101,  101,  101,  197,  101,  197,  101,
+      620,  101,  101,  101,  197,  221,  101,  222,  197,  618,
+      101,  197,  600,  620,  594,  603,  101,  101,  101,  197,
+      101,  612,  197,  223,  224,  101,  884,  101,  101,  101,
+      225,  101,  613,  884,  101,  607,  101,  602,  101,  197,
+      101,  197,  101,  197,  101,  101,  227,  101,  101,  197,
+      226,  627,  611,  101,  197,  228,  642,  101,  101,  101,
+      197,  101,  618,  636,  101,  609,  230,  197,  101,  614,
+      101,  101,  101,  101,  101,  101,  197,  101,  630,  231,
+      101,  632,  101,  641,  101,  101,  101,  631,  101,  197,
 
-      193,   99,   99,   99,  193,   99,  597,  596,  610,   99,
-       99,   99,   99,   99,   99,   99,   99,  228,   99,  193,
-      230,   99,  193,  708,  612,   99,   99,   99,  621,   99,
-      563,  563,  563,  563,   99,  231,   99,  618,   99,   99,
-       99,  193,  233,  619,  598,  232,  234,  611,  193,   99,
-      193,   99,  622,   99,  236,   99,  678,  193,   99,  193,
-      193,   99,  624,  193,  193,  237,  193,   99,  636,   99,
-      616,   99,   99,   99,   99,   99,  238,  193,   99,  239,
-       99,  626,   99,  243,   99,  193,   99,  193,   99,   99,
-       99,   99,   99,  193,  241,   99,  240,   99,  680,   99,
+      197,  645,  101,  101,  101,  101,  101,  101,  101,  101,
+      232,  101,  638,  234,  101,  197,  639,  197,  101,  101,
+      101,  730,  101,  615,  615,  615,  615,  101,  235,  101,
+      197,  101,  101,  101,  646,  237,  644,  620,  236,  238,
+      618,  197,  101,  197,  101,  648,  101,  240,  101,  620,
+      197,  101,  197,  618,  101,  662,  197,  620,  241,  197,
+      101,  197,  101,  197,  101,  101,  101,  101,  101,  242,
+      618,  101,  243,  101,  197,  101,  647,  101,  667,  101,
+      247,  101,  101,  101,  101,  101,  197,  245,  658,  244,
+      101,  671,  101,  101,  246,  657,  101,  197,  197,  101,
 
-      193,  242,  673,   99,  672,   99,   99,   99,   99,   99,
-      627,  244,   99,  625,   99,  628,   99,  635,   99,  645,
-       99,  643,   99,   99,   99,   99,   99,  656,  637,   99,
-      667,  245,  666,   99,  664,   99,  248,  246,  642,   99,
-      640,   99,   99,   99,   99,   99,  249,  193,   99,  250,
-      563,  563,  563,  563,   99,   99,   99,   99,   99,   99,
-      649,  256,  254,   99,   99,  160,  160,  160,  160,  160,
-      160,  160,  160,  257,  193,  193,  193,  160,  160,  160,
-      160,  160,  160,  160,  160,  183,  183,  183,  183,  183,
-      183,  183,  183,   98,   99,   99,  661,  270,  648,  653,
+      729,  101,  616,  101,  248,  101,  679,  101,  659,  101,
+      101,  101,  101,  101,  718,  664,  101,  681,  101,  620,
+      101,  618,  101,  197,  101,  620,  101,  101,  101,  249,
+      250,  197,  618,  665,  252,  101,  197,  101,  670,  101,
+      101,  101,  197,  101,  253,  620,  101,  254,  684,  618,
+      101,  197,  101,  101,  101,  101,  672,  101,  258,  101,
+      197,  197,  101,  160,  160,  160,  160,  187,  187,  187,
+      187,  187,  187,  187,  187,  673,  197,  161,  161,  161,
+      161,  161,  161,  162,  162,  260,  197,  686,  687,  162,
+      162,  162,  162,  162,  162,  162,  162,  261,  692,  197,
 
-      652,  193,  193,  193,   99,   99,   99,   99,   99,   99,
-       99,   99,  193,   99,   99,  599,  599,  599,  599,  193,
-       99,  271,   99,   99,   99,   99,  651,  193,  647,   99,
-       99,  655,  650,  193,  193,  193,  187,  187,  187,  187,
-      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
-      187,  187,  187,  187,  187,  187,  187,  187,   99,  665,
-      193,  669,  692,  646,  193,  644,   99,  657,   99,   99,
-       99,  272,   99,  273,  662,  193,   99,   99,   99,   99,
-       99,   99,   99,   99,  660,   99,  193,  690,   99,  668,
-       99,  641,   99,  600,   99,  633,   99,  193,   99,  274,
+      197,  162,  162,  162,  162,  162,  162,  162,  162,  100,
+      101,  101,  720,  276,  620,  618,  620,  695,  197,  689,
+      101,  101,  101,  101,  101,  101,  101,  101,  197,  101,
+      101,  615,  615,  615,  615,  693,  101,  277,  101,  101,
+      101,  101,  197,  618,  706,  101,  101,  197,  620,  197,
+      701,  694,  197,  191,  191,  191,  191,  191,  191,  191,
+      191,  191,  191,  191,  191,  191,  191,  191,  191,  191,
+      191,  191,  191,  191,  191,  101,  618,  738,  197,  620,
+      702,  618,  197,  101,  197,  101,  101,  101,  278,  101,
+      279,  197,  703,  101,  101,  101,  101,  101,  101,  101,
 
-      275,   99,   99,  193,   99,  193,   99,  193,   99,   99,
-       99,  663,   99,  277,  276,  670,   99,   99,   99,   99,
-       99,  599,  599,  599,  599,   99,  676,   99,  629,   99,
-       99,   99,  623,   99,  193,  675,  278,   99,   99,   99,
-       99,  279,   99,  193,   99,  620,   99,  280,  281,   99,
-      282,   99,   99,  700,  682,  284,  677,  193,  283,  193,
-      671,   99,   99,   99,   99,   99,   99,   99,  617,  193,
-       99,   99,  193,   99,  193,  193,  193,   99,  193,   99,
-      285,   99,  193,   99,   99,   99,   99,   99,  592,  686,
-       99,  193,   99,  287,   99,  286,   99,  193,   99,  600,
+      101,  708,  101,  712,  711,  101,  197,  101,  620,  101,
+      616,  101,  618,  101,  620,  101,  280,  281,  101,  101,
+      197,  101,  618,  101,  197,  101,  101,  101,  705,  101,
+      283,  282,  710,  101,  101,  101,  101,  101,  620,  197,
+      721,  713,  101,  618,  101,  620,  101,  101,  101,  618,
+      101,  620,  618,  284,  101,  101,  101,  101,  285,  101,
+      620,  101,  723,  101,  286,  287,  101,  288,  101,  101,
+      724,  618,  290,  620,  731,  289,  618,  620,  101,  101,
+      101,  101,  101,  101,  101,  618,  620,  101,  101,  733,
+      101,  618,  620,  618,  101,  620,  101,  291,  101,  618,
 
-       99,   99,   99,   99,   99,  588,  679,   99,  684,   99,
-      290,  288,  585,   99,  289,   99,  699,   99,   99,   99,
-       99,   99,  193,  685,  687,  556,   99,  193,   99,   99,
-       99,  693,   99,  695,  551,  291,  547,   99,  521,   99,
-      292,   99,   99,   99,  512,  193,  696,  505,   99,  706,
-       99,  339,   99,   99,   99,  178,   99,  176,  174,  295,
-       99,   99,  296,  297,   99,   99,  298,   99,   99,   99,
-      170,   99,   99,  339,   99,  156,  701,  301,  299,  708,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,  300,
-       99,  302,  193,   99,  703,  266,   99,  178,  176,   99,
+      101,  101,  101,  101,  101,  620,  618,  101,  620,  101,
+      293,  101,  292,  101,  618,  101,  620,  101,  101,  101,
+      101,  101,  618,  620,  101,  618,  101,  296,  294,  620,
+      101,  295,  101,  618,  101,  101,  101,  101,  101,  620,
+      618,  620,  618,  101,  620,  101,  101,  101,  618,  101,
+      620,  618,  297,  620,  101,  618,  101,  298,  101,  101,
+      101,  620,  618,  620,  618,  101,  620,  101,  618,  101,
+      101,  101,  620,  101,  618,  620,  301,  101,  101,  302,
+      303,  101,  101,  304,  101,  101,  101,  618,  101,  101,
+      620,  101,  618,  620,  307,  305,  618,  101,  101,  101,
 
-      262,  170,   99,  259,  258,  156,   99,  193,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,  185,
-       99,  303,  184,  306,  182,  181,  178,  304,  176,   99,
-       99,   99,   99,  175,   99,   99,   99,  174,  307,   99,
-      174,   99,  168,  166,   95,   99,  164,   99,  308,   99,
-      163,   99,   99,   99,   99,   99,  162,  156,   97,   94,
-       99,   85,   99,   99,   99,   82,   99,   82,  708,   99,
-      310,   99,  708,   99,  708,   99,  708,   99,  708,   99,
-       99,   99,   99,   99,  708,  708,  311,  708,   99,  708,
-       99,   99,   99,  708,   99,  708,  708,  312,  708,   99,
+      101,  101,  101,  101,  101,  101,  306,  101,  308,  101,
+      101,  620,  618,  620,  618,  620,  618,  101,  620,  101,
+      101,  101,  618,  101,  620,  618,  620,  101,  101,  101,
+      101,  101,  101,  101,  101,  618,  101,  620,  618,  309,
+      620,  101,  618,  310,  312,  101,  620,  101,  618,  620,
+      618,  101,  101,  101,  101,  101,  620,  313,  618,  620,
+      101,  618,  101,  620,  101,  101,  101,  618,  101,  314,
+      620,  618,  101,  101,  101,  101,  101,  101,  101,  101,
+      620,  101,  618,  316,  101,  620,  101,  618,  101,  620,
+      101,  618,  101,  620,  101,  618,  101,  101,  101,  620,
 
-      708,   99,   99,   99,  708,   99,  708,  316,   99,  708,
-       99,  313,  315,  708,   99,  708,   99,  708,   99,   99,
-       99,   99,   99,  708,  708,   99,  708,   99,  708,   99,
-      708,   99,  708,   99,  708,   99,  708,   99,  317,   99,
-       99,   99,  708,  318,   99,  708,  708,  708,  319,  708,
-       99,   99,   99,   99,   99,   99,   99,  708,  708,   99,
-       99,  708,  708,  708,  708,  708,   99,   99,   99,  708,
-       99,  708,  708,   99,  320,   99,  708,   99,  708,   99,
-      708,   99,  708,   99,  321,   99,   99,   99,   99,  708,
-      322,  323,   99,  708,   99,  708,  708,  324,   99,  708,
+      101,  618,  101,  317,  101,  101,  101,  620,  101,  618,
+      620,  318,  101,  101,  101,  101,  101,  322,  101,  618,
+      620,  101,  319,  618,  620,  321,  101,  101,  101,  101,
+      101,  618,  101,  620,  101,  618,  101,  101,  101,  101,
+      101,  620,  618,  197,  741,  323,  620,  101,  618,  101,
+      324,  101,  197,  101,  197,  101,  197,  101,  101,  101,
+      737,  101,  325,  101,  736,  101,  101,  101,  620,  101,
+      618,  197,  732,  101,  101,  101,  101,  101,  728,  727,
+      620,  326,  101,  618,  101,  197,  101,  197,  101,  722,
+      101,  197,  719,  327,  101,  101,  101,  101,  101,  197,
 
-       99,  708,   99,  708,   99,   99,   99,   99,   99,  708,
-      708,  708,  708,   99,  708,   99,   99,   99,  326,   99,
-      327,  708,  330,  708,   99,  328,   99,  708,   99,   99,
-       99,  708,   99,  708,  329,   99,  708,  708,  334,   99,
-       99,   99,   99,   99,   99,  708,   99,  708,   99,  708,
-       99,   99,  341,   99,   99,  708,  708,  708,  708,   99,
-      342,  708,  708,   99,   99,   99,  708,   99,  708,  708,
-       99,  708,   99,  708,   99,  343,   99,  708,   99,  708,
-       99,   99,  344,   99,   99,  708,  708,   99,  708,   99,
-      346,   99,  708,   99,  708,   99,  708,   99,  708,   99,
+      329,  328,  197,  101,  717,  101,  716,  101,  330,  101,
+      620,  101,  618,  101,  709,  101,  101,  101,  707,  101,
+      704,  197,  336,  101,  101,  101,  332,  101,  333,  101,
+      101,  699,  101,  334,  698,  620,  618,  691,  690,  101,
+      101,  101,  101,  101,  101,  101,  688,  335,  101,  101,
+      685,  340,  677,  676,  620,  101,  618,  101,  197,  101,
+      341,  341,  341,  341,  101,  669,  668,  666,  343,  343,
+      343,  343,  663,  655,  342,  342,  342,  342,  342,  342,
+      342,  342,  344,  344,  344,  344,  344,  344,  344,  344,
+      101,  101,  651,  620,  618,  643,  197,  640,  350,  637,
 
-       99,   99,  347,   99,   99,  348,   99,  708,  708,  708,
-      708,  708,  708,   99,   99,   99,   99,   99,   99,   99,
-      708,  708,   99,   99,  708,  345,  708,   99,  708,   99,
-      708,   99,  708,   99,  708,   99,  349,   99,   99,   99,
-      350,   99,  708,  708,  708,   99,   99,   99,   99,   99,
-      352,   99,  708,  351,   99,  708,  708,  708,   99,   99,
-       99,   99,   99,   99,  708,   99,  708,  353,  708,   99,
-       99,  354,   99,   99,  355,   99,  708,  356,   99,  708,
-      708,  708,   99,  708,   99,   99,   99,   99,  708,   99,
-       99,   99,  708,  357,   99,  708,   99,  708,  708,  708,
+      101,  101,  349,  101,  101,  101,  101,  197,  197,  101,
+      101,  620,  101,  618,  608,  604,  101,  351,  101,  601,
+      101,  197,  101,  101,  352,  101,  101,  570,  565,  101,
+      561,  101,  354,  101,  535,  101,  534,  101,  533,  101,
+      524,  101,  101,  101,  355,  101,  101,  356,  101,  517,
+      478,  477,  414,  346,  413,  101,  101,  101,  101,  101,
+      101,  101,  182,  180,  101,  101,  178,  353,  174,  101,
+      347,  101,  346,  101,  345,  101,  158,  101,  357,  101,
+      101,  101,  358,  101,  884,  197,  272,  101,  101,  101,
+      101,  101,  360,  101,  182,  359,  101,  180,  268,  174,
 
-       99,  708,   99,  708,   99,  708,   99,   99,   99,   99,
-      358,  708,  708,   99,  359,   99,  708,   99,  708,   99,
-      708,   99,  708,   99,   99,   99,   99,   99,  708,  360,
-      708,  708,   99,  708,   99,  708,  361,  708,   99,   99,
-      362,  708,  363,   99,  708,   99,  708,  708,  708,   99,
-      708,   99,  708,   99,  708,   99,   99,   99,   99,   99,
-      708,  708,   99,  708,   99,  708,   99,  708,   99,  708,
-       99,  708,   99,  708,   99,   99,   99,   99,   99,  708,
-      367,   99,  708,  708,  368,  708,  708,   99,   99,   99,
-       99,   99,   99,   99,  369,  708,   99,   99,  371,   99,
+      101,  101,  101,  101,  101,  101,  265,  101,  264,  361,
+      263,  101,  101,  362,  101,  101,  363,  101,  262,  364,
+      101,  158,  197,  189,  101,  188,  101,  101,  101,  101,
+      186,  101,  101,  101,  185,  365,  101,  182,  101,  180,
+      179,  178,  101,  178,  101,  172,  101,  170,  101,  101,
+      101,  101,  366,  168,   97,  101,  367,  101,  167,  101,
+      166,  101,  165,  101,  164,  101,  101,  101,  101,  101,
+      158,  368,   99,   96,  101,   87,  101,   84,  369,   84,
+      101,  101,  370,  884,  371,  101,  884,  101,  884,  884,
+      884,  101,  884,  101,  884,  101,  884,  101,  101,  101,
 
-      366,  708,  708,   99,  708,   99,  708,   99,  708,   99,
-      708,   99,  370,   99,   99,  372,  708,  375,   99,  373,
-      708,  708,  708,  708,   99,  708,   99,   99,   99,  708,
-      374,  708,  708,   99,  708,   99,  708,   99,  708,   99,
-      708,   99,  708,   99,  708,   99,   99,   99,  708,   99,
-      708,  708,  376,   99,   99,   99,  708,   99,   99,  378,
-      708,   99,   99,  708,  708,  708,  708,  708,   99,  708,
-       99,   99,   99,   99,   99,   99,  708,   99,  708,  379,
-       99,  383,   99,  708,   99,  382,   99,  380,   99,  708,
-      708,  708,   99,   99,   99,  708,   99,   99,  708,  708,
+      101,  101,  884,  884,  101,  884,  101,  884,  101,  884,
+      101,  884,  101,  884,  101,  884,  101,  101,  101,  101,
+      101,  884,  375,  101,  884,  884,  376,  884,  884,  101,
+      101,  101,  101,  101,  101,  101,  377,  884,  101,  101,
+      379,  101,  374,  884,  884,  101,  884,  101,  383,  101,
+      884,  101,  884,  101,  378,  101,  101,  380,  884,  101,
+      101,  381,  884,  884,  884,  884,  101,  101,  101,  101,
+      101,  101,  382,  101,  884,  101,  884,  101,  101,  101,
+      101,  101,  884,  884,  384,  884,  101,  884,  101,  386,
+      101,  101,  101,  884,  101,  884,  884,  884,  101,  101,
 
-       99,   99,  708,  384,  708,  708,  708,   99,  708,   99,
-       99,   99,   99,  708,   99,   99,   99,  385,   99,   99,
-      708,   99,  708,  708,  708,   99,  708,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,  708,   99,   99,  387,
-       99,  388,  708,  708,   99,  708,  708,  708,   99,  708,
-       99,  708,   99,  708,   99,   99,   99,   99,   99,  708,
-      390,   99,  708,   99,  708,   99,  708,  389,  708,   99,
-      708,   99,   99,   99,   99,   99,  708,  708,   99,  392,
-       99,  708,   99,  708,   99,  708,   99,  708,   99,   99,
-       99,   99,   99,  708,  708,   99,  708,   99,  708,   99,
+      101,  101,  101,  101,  101,  101,  884,  101,  391,  387,
+      101,  884,  101,  884,  101,  390,  101,  388,  101,  884,
+      884,  884,  101,  101,  101,  101,  101,  884,  884,  884,
+      884,  101,  884,  101,  884,  101,  392,  101,  884,  101,
+      393,  101,  884,  101,  101,  101,  884,  101,  884,  101,
+      884,  101,  101,  101,  884,  101,  884,  101,  884,  101,
+      101,  101,  884,  101,  884,  884,  884,  101,  101,  101,
+      101,  101,  884,  396,  884,  395,  101,  884,  101,  884,
+      101,  101,  101,  884,  101,  884,  884,  884,  101,  101,
+      101,  101,  101,  397,  884,  101,  101,  101,  398,  101,
 
-      708,   99,  708,   99,  708,   99,  708,   99,   99,   99,
-       99,   99,  708,  708,   99,  708,  391,  708,  708,  708,
-       99,   99,  394,   99,   99,   99,  708,   99,   99,   99,
-      395,  396,  708,  708,  708,  708,  708,   99,   99,   99,
-       99,   99,   99,  708,   99,   99,   99,   99,  708,  708,
-      708,  708,  708,  708,   99,   99,   99,   99,   99,   99,
-      708,  398,  397,   99,   99,  403,  708,   99,  708,  338,
-      338,  338,  338,  338,  338,  338,  338,   99,  708,   99,
-      708,   99,   99,  407,  708,  406,   99,  408,   99,  708,
-      708,  708,   99,  708,   99,  708,   99,  708,   99,   99,
+      101,  884,  101,  400,  884,  884,  101,  884,  101,  101,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,  884,
+      101,  101,  884,  101,  884,  884,  884,  101,  884,  101,
+      101,  101,  101,  101,  101,  402,  101,  101,  101,  101,
+      399,  101,  101,  884,  404,  884,  884,  884,  101,  101,
+      101,  101,  101,  101,  884,  101,  884,  403,  884,  101,
+      101,  101,  101,  101,  884,  884,  884,  884,  101,  884,
+      884,  884,  101,  101,  101,  884,  101,  884,  884,  406,
+      884,  101,  884,  101,  405,  101,  884,  101,  341,  341,
+      341,  341,  101,  884,  884,  884,  884,  884,  884,  884,
 
-       99,   99,   99,  708,  410,   99,  708,   99,  708,   99,
-      708,   99,  708,   99,  708,   99,  708,   99,   99,   99,
-       99,  411,  708,   99,   99,  708,  412,  708,  708,  708,
-       99,   99,   99,   99,   99,   99,  708,   99,  708,   99,
-      708,   99,   99,   99,   99,   99,  708,  708,  708,  708,
-       99,  708,   99,  708,   99,  708,  413,  708,   99,  708,
-       99,  708,   99,   99,   99,  708,   99,  415,  414,  708,
-       99,   99,   99,   99,   99,  708,  708,  708,  708,   99,
-      708,   99,  708,  416,  417,   99,  708,   99,  418,  708,
-      708,   99,   99,   99,   99,   99,  419,  708,  708,  708,
+      884,  884,  342,  342,  342,  342,  342,  342,  342,  342,
+      410,  410,  410,  410,  884,  884,  884,  884,  884,  884,
+      411,  884,  884,  884,  342,  342,  342,  342,  342,  342,
+      342,  342,  343,  343,  343,  343,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  344,  344,  344,  344,
+      344,  344,  344,  344,  411,  884,  101,  884,  344,  344,
+      344,  344,  344,  344,  344,  344,  101,  884,  101,  884,
+      101,  101,  417,  884,  416,  101,  884,  884,  884,  884,
+      884,  101,  884,  101,  101,  101,  418,  101,  884,  412,
+      101,  884,  884,  884,  101,  884,  101,  101,  101,  101,
 
-       99,  708,   99,  708,   99,  420,   99,  708,   99,  421,
-       99,  708,   99,   99,   99,  708,   99,  708,   99,  708,
-       99,   99,   99,  708,   99,  708,  422,  708,   99,   99,
-       99,  708,   99,   99,  424,  708,  423,   99,  708,   99,
-      708,  708,  708,   99,  708,   99,  708,   99,  708,   99,
-       99,   99,   99,   99,  708,  708,   99,  425,   99,  708,
-       99,  708,   99,  708,   99,  708,   99,  426,  427,   99,
-       99,   99,   99,  708,  708,   99,  708,  708,  708,  431,
-      708,   99,   99,   99,   99,   99,   99,  708,  708,   99,
-       99,   99,   99,  432,  708,  433,  708,  708,  708,   99,
+      884,  101,  884,  101,  420,  101,  101,  884,  101,  421,
+      884,  101,  884,  884,  422,  101,  884,  101,  101,  101,
+      101,  101,  101,  101,  101,  101,  101,  101,  884,  101,
+      101,  884,  884,  884,  884,  884,  101,  101,  101,  101,
+      101,  423,  884,  101,  884,  101,  884,  101,  101,  101,
+      101,  101,  884,  424,  884,  884,  101,  425,  101,  884,
+      101,  884,  101,  884,  101,  884,  884,  884,  426,  101,
+      101,  101,  101,  884,  427,  884,  884,  101,  428,  884,
+      884,  101,  101,  101,  429,  101,  884,  884,  101,  884,
+      101,  430,  101,  884,  101,  431,  101,  884,  101,  101,
 
-      708,   99,   99,   99,   99,  708,   99,  434,   99,   99,
-       99,   99,  435,  708,  708,  708,  708,  708,  708,   99,
-       99,  436,   99,   99,   99,   99,  708,  708,   99,   99,
-      708,   99,  708,  708,  438,   99,  708,   99,  708,   99,
-      440,   99,   99,   99,  437,   99,  708,  441,   99,  708,
-       99,  708,   99,  708,   99,  708,   99,  708,   99,  439,
-       99,   99,   99,   99,  708,  708,   99,   99,  708,   99,
-      708,  708,  708,   99,  708,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,  443,   99,   99,   99,   99,  708,
-      708,  708,  708,  708,  708,  708,   99,   99,  444,   99,
+      101,  101,  101,  884,  884,  884,  884,  101,  884,  101,
+      101,  101,  884,  101,  884,  432,  884,  884,  101,  884,
+      101,  884,  101,  884,  101,  101,  434,  884,  433,  101,
+      884,  101,  884,  884,  884,  101,  884,  101,  884,  101,
+      884,  101,  101,  101,  101,  101,  884,  884,  101,  435,
+      101,  884,  101,  884,  101,  884,  101,  884,  101,  436,
+      437,  101,  101,  101,  101,  884,  884,  101,  884,  884,
+      884,  441,  884,  101,  101,  101,  101,  101,  101,  884,
+      884,  101,  101,  101,  101,  442,  884,  443,  884,  884,
+      884,  101,  884,  101,  101,  101,  101,  884,  101,  444,
 
-       99,   99,   99,  446,  708,   99,   99,  708,   99,  708,
-      708,  708,   99,  708,  448,  708,   99,  708,   99,  708,
-       99,   99,   99,   99,   99,  708,  449,   99,  708,  708,
-      451,  708,  708,   99,   99,   99,  452,   99,   99,   99,
-       99,  708,   99,   99,  453,  708,  708,  708,  708,   99,
-       99,   99,   99,   99,   99,   99,  708,  708,   99,   99,
-      708,   99,  454,  708,  458,   99,  708,   99,  708,   99,
-      708,   99,   99,   99,   99,   99,  708,  708,  708,  708,
-       99,  708,   99,   99,   99,  708,   99,  708,  459,   99,
-      708,   99,  708,   99,  708,   99,  708,   99,  708,   99,
+      101,  101,  101,  101,  445,  884,  884,  884,  884,  884,
+      884,  101,  101,  446,  101,  101,  101,  101,  884,  884,
+      101,  101,  884,  101,  884,  884,  448,  101,  884,  101,
+      884,  101,  884,  101,  101,  101,  447,  101,  450,  884,
+      884,  451,  101,  884,  101,  884,  101,  101,  101,  884,
+      884,  449,  884,  101,  884,  101,  884,  101,  101,  101,
+      884,  101,  884,  884,  884,  101,  101,  101,  101,  101,
+      101,  101,  101,  453,  101,  884,  884,  101,  884,  101,
+      884,  101,  884,  101,  884,  101,  884,  101,  884,  101,
+      101,  454,  884,  101,  884,  101,  884,  101,  101,  101,
 
-      708,   99,   99,   99,  468,   99,  708,  708,   99,  708,
-      708,   99,  708,  708,  708,   99,  708,   99,  708,   99,
-      708,   99,   99,   99,   99,   99,  708,  461,   99,  469,
-       99,  708,   99,  708,  471,  708,   99,  708,   99,   99,
-       99,   99,   99,  708,  708,   99,  472,   99,  473,   99,
-      708,   99,  708,   99,  708,   99,  708,   99,   99,   99,
-      474,   99,   99,  708,   99,  708,  708,  708,  708,  708,
-      708,   99,   99,   99,  475,   99,   99,   99,  708,  708,
-       99,   99,  708,  708,  708,  708,  708,   99,   99,   99,
-      477,   99,  708,  708,   99,  476,   99,  708,   99,  708,
+      884,  101,  884,  456,  884,  101,  101,  458,  101,  101,
+      884,  884,  884,  884,  101,  884,  884,  884,  101,  884,
+      101,  101,  101,  884,  101,  884,  459,  101,  461,  884,
+      884,  101,  101,  101,  101,  101,  462,  463,  101,  884,
+      101,  884,  101,  101,  101,  101,  101,  884,  884,  884,
+      884,  101,  884,  884,  884,  101,  101,  101,  884,  101,
+      884,  884,  101,  884,  101,  468,  101,  464,  101,  884,
+      101,  884,  101,  101,  101,  101,  101,  884,  884,  884,
+      884,  101,  884,  101,  101,  101,  884,  101,  884,  469,
+      884,  884,  101,  884,  101,  884,  101,  884,  101,  475,
 
-       99,  708,   99,  708,   99,  708,   99,   99,   99,  708,
-      708,   99,  478,   99,  479,  708,  708,   99,  708,  480,
-      708,   99,  708,   99,  708,   99,  708,   99,   99,   99,
-       99,   99,  708,  482,   99,  708,   99,  708,   99,  708,
-      481,  708,   99,  708,   99,   99,   99,   99,   99,  708,
-      708,   99,  708,   99,  708,   99,  708,   99,  483,   99,
-      708,   99,   99,   99,   99,   99,  708,  708,   99,  708,
-       99,  708,   99,  708,   99,  485,   99,  708,   99,  484,
-       99,   99,   99,  486,   99,   99,  708,   99,  708,  490,
-      708,  708,  708,  708,   99,   99,   99,   99,   99,   99,
+      475,  475,  475,  101,  884,  884,  884,  884,  884,  884,
+      884,  101,  884,  476,  476,  476,  476,  476,  476,  476,
+      476,  101,  884,  101,  101,  101,  480,  101,  471,  884,
+      101,  884,  884,  884,  101,  101,  101,  101,  101,  101,
+      884,  101,  481,  101,  884,  101,  101,  483,  101,  101,
+      884,  101,  884,  884,  101,  884,  884,  884,  101,  884,
+      101,  101,  101,  101,  884,  101,  484,  101,  101,  884,
+      101,  485,  884,  486,  101,  884,  884,  884,  101,  884,
+      101,  884,  101,  884,  101,  101,  101,  101,  101,  884,
+      884,  101,  884,  101,  884,  101,  884,  487,  884,  101,
 
-       99,  708,  708,   99,   99,  708,   99,  491,  492,  708,
-       99,  708,   99,  708,   99,  708,   99,   99,   99,   99,
-       99,  708,  708,   99,  708,   99,  494,   99,  708,   99,
-      708,   99,  708,   99,  493,   99,   99,   99,   99,  495,
-      708,  708,   99,  708,   99,  496,  708,  708,   99,  708,
-       99,  708,   99,  708,   99,   99,   99,   99,   99,  708,
-      708,  708,  708,   99,  708,   99,  708,   99,  708,   99,
-       99,  497,  708,  498,   99,  708,   99,  708,  708,  708,
-       99,  708,   99,  708,   99,  708,   99,   99,   99,   99,
-       99,  708,  708,  499,  708,   99,  708,   99,  708,   99,
+      884,  101,  884,  101,  101,  101,  101,  884,  489,  488,
+      101,  884,  101,  884,  884,  884,  101,  884,  101,  884,
+      101,  884,  101,  884,  101,  101,  101,  884,  884,  101,
+      490,  101,  491,  884,  884,  101,  884,  492,  884,  101,
+      884,  101,  884,  101,  884,  101,  101,  101,  101,  101,
+      884,  494,  101,  884,  101,  884,  101,  884,  493,  884,
+      101,  884,  101,  101,  101,  101,  101,  884,  884,  101,
+      884,  101,  884,  101,  884,  101,  495,  101,  884,  101,
+      101,  101,  101,  101,  884,  884,  101,  884,  101,  884,
+      101,  884,  101,  497,  101,  884,  101,  496,  101,  101,
 
-       99,   99,  502,   99,  708,  708,   99,  708,  708,  708,
-       99,   99,  504,   99,   99,   99,  708,   99,  708,   99,
-      708,   99,   99,   99,   99,   99,  708,  507,  708,  506,
-       99,  708,   99,  708,   99,  708,   99,  708,   99,  708,
-      708,  708,   99,   99,   99,  708,   99,   99,  510,  708,
-       99,   99,  509,   99,  708,  708,  708,   99,  708,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-      708,   99,   99,  708,  708,  708,  708,  708,   99,  708,
-       99,   99,   99,   99,  708,   99,  708,   99,  514,  520,
-       99,   99,  708,  466,  466,  466,  466,  466,  466,  466,
+      101,  498,  101,  101,  884,  101,  884,  502,  884,  884,
+      884,  884,  101,  101,  101,  101,  101,  101,  101,  884,
+      884,  101,  101,  884,  101,  503,  504,  884,  101,  884,
+      101,  884,  101,  884,  101,  101,  101,  101,  101,  884,
+      884,  101,  884,  101,  506,  101,  884,  101,  884,  101,
+      884,  101,  505,  101,  101,  101,  101,  507,  884,  884,
+      101,  884,  101,  508,  884,  884,  101,  884,  101,  884,
+      101,  884,  101,  101,  101,  101,  101,  884,  884,  884,
+      884,  101,  884,  101,  884,  101,  884,  101,  101,  509,
+      884,  510,  101,  884,  101,  884,  884,  884,  101,  884,
 
-      466,   99,  708,   99,   99,   99,  708,   99,  708,  522,
-       99,  523,  708,  708,   99,  708,   99,   99,   99,   99,
-      708,   99,   99,   99,  708,  525,   99,  708,   99,  708,
-      708,  708,   99,  708,   99,  708,   99,  708,   99,   99,
-      526,   99,   99,  708,  708,   99,  527,   99,  708,   99,
-      708,   99,  528,   99,  708,   99,   99,   99,   99,   99,
-      708,  708,   99,  708,   99,  708,   99,  708,   99,  708,
-       99,  708,   99,   99,   99,   99,   99,  708,  708,  708,
-      529,   99,  708,   99,   99,   99,  530,   99,  708,  708,
-       99,  708,   99,  708,   99,  708,   99,  708,   99,  708,
+      101,  884,  101,  884,  101,  101,  101,  101,  101,  884,
+      884,  511,  884,  101,  884,  101,  884,  101,  101,  101,
+      514,  101,  884,  884,  101,  884,  884,  884,  101,  101,
+      516,  101,  101,  101,  884,  101,  884,  101,  884,  101,
+      101,  101,  101,  101,  884,  519,  884,  518,  101,  884,
+      101,  884,  101,  884,  101,  884,  101,  884,  884,  884,
+      101,  101,  101,  884,  101,  101,  522,  884,  101,  101,
+      521,  101,  884,  884,  884,  101,  884,  101,  101,  101,
+      101,  101,  101,  101,  101,  101,  101,  101,  884,  101,
+      101,  884,  884,  884,  884,  884,  101,  884,  101,  101,
 
-       99,   99,   99,   99,   99,  708,  531,   99,  708,   99,
-      708,   99,  708,   99,  708,   99,  708,   99,   99,   99,
-       99,   99,  708,  708,  708,  532,   99,  708,   99,   99,
-       99,  708,   99,  708,  708,  534,  533,   99,  708,   99,
-      708,   99,  708,   99,  708,   99,   99,   99,   99,   99,
-      708,  708,   99,  708,   99,  708,  535,  708,   99,  540,
-       99,  708,   99,   99,   99,   99,   99,  708,  708,  708,
-      708,   99,  708,   99,   99,   99,  708,   99,  708,  708,
-       99,  541,   99,  708,   99,  708,   99,  708,   99,  708,
-       99,   99,   99,   99,   99,  708,  708,   99,  708,   99,
+      101,  101,  884,  101,  884,  101,  526,  884,  101,  475,
+      475,  475,  475,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  476,  476,  476,  476,  476,  476,  476,
+      476,  532,  884,  101,  884,  476,  476,  476,  476,  476,
+      476,  476,  476,  101,  884,  101,  101,  101,  884,  101,
+      884,  536,  101,  537,  884,  884,  101,  884,  101,  101,
+      101,  101,  884,  101,  101,  101,  884,  539,  101,  884,
+      101,  884,  884,  884,  101,  884,  101,  884,  101,  884,
+      101,  101,  540,  101,  101,  884,  884,  101,  541,  101,
+      884,  101,  884,  101,  542,  101,  884,  101,  101,  101,
 
-      543,   99,  708,   99,  708,   99,  708,   99,  542,   99,
-       99,   99,   99,   99,  708,  708,   99,  708,  708,  708,
-      708,  708,   99,   99,   99,   99,   99,   99,   99,  545,
-      544,   99,   99,  708,   99,  708,  708,  708,   99,  708,
-       99,  708,   99,  708,   99,   99,   99,   99,   99,  708,
-      708,   99,  708,   99,  708,  549,  708,   99,  708,   99,
-      708,   99,   99,   99,   99,   99,  708,  708,  708,  708,
-       99,  708,   99,   99,   99,  708,   99,  708,  546,   99,
-      708,   99,  553,   99,  708,   99,  708,   99,  708,   99,
-      708,   99,   99,   99,   99,  708,  708,  554,   99,  558,
+      101,  101,  884,  884,  101,  884,  101,  884,  101,  884,
+      101,  884,  101,  884,  101,  101,  101,  101,  101,  884,
+      884,  884,  543,  101,  884,  101,  101,  101,  544,  101,
+      884,  884,  101,  884,  101,  884,  101,  884,  101,  884,
+      101,  884,  101,  101,  101,  101,  101,  884,  545,  101,
+      884,  101,  884,  101,  884,  101,  884,  101,  884,  101,
+      101,  101,  101,  101,  884,  884,  884,  546,  101,  884,
+      101,  101,  101,  884,  101,  884,  884,  548,  547,  101,
+      884,  101,  884,  101,  884,  101,  884,  101,  101,  101,
+      101,  101,  884,  884,  101,  884,  101,  884,  549,  884,
 
-       99,  708,  708,  708,   99,  708,   99,  708,   99,  708,
-       99,   99,   99,   99,   99,  708,  708,  708,  566,   99,
-      708,   99,  708,   99,  708,   99,   99,  567,  708,  708,
-       99,  708,   99,  708,  708,  708,   99,  708,   99,  708,
-       99,  708,   99,   99,   99,   99,   99,  708,  569,  708,
-      708,   99,  708,   99,   99,   99,  708,   99,  708,  708,
-       99,  570,   99,  708,   99,  708,  571,  708,   99,  708,
-       99,   99,  572,   99,   99,  708,  574,   99,  708,   99,
-      708,   99,  708,   99,  573,   99,  708,   99,  708,   99,
-       99,   99,   99,  708,  708,   99,   99,  708,  575,  708,
+      101,  554,  101,  884,  101,  101,  101,  101,  101,  884,
+      884,  884,  884,  101,  884,  101,  101,  101,  884,  101,
+      884,  884,  101,  555,  101,  884,  101,  884,  101,  884,
+      101,  884,  101,  101,  101,  101,  101,  884,  884,  101,
+      884,  101,  557,  101,  884,  101,  884,  101,  884,  101,
+      556,  101,  101,  101,  101,  101,  884,  884,  101,  884,
+      884,  884,  884,  884,  101,  101,  101,  101,  101,  101,
+      101,  559,  558,  101,  101,  884,  101,  884,  884,  884,
+      101,  884,  101,  884,  101,  884,  101,  101,  101,  101,
+      101,  884,  884,  101,  884,  101,  884,  563,  884,  101,
 
-      708,  708,   99,   99,   99,   99,   99,   99,  708,   99,
-      708,   99,  708,   99,   99,   99,   99,   99,  708,   99,
-      708,  708,   99,  576,  708,  708,   99,  708,   99,   99,
-       99,   99,  708,   99,   99,   99,  708,  581,   99,  708,
-       99,  708,  708,  708,   99,  708,   99,  708,   99,  708,
-       99,   99,   99,   99,   99,  708,  708,   99,  708,   99,
-      708,   99,  708,   99,  708,   99,  708,   99,   99,   99,
-       99,   99,  708,  708,   99,  582,   99,  708,   99,  708,
-       99,  708,   99,  708,   99,   99,   99,   99,   99,  590,
-      708,  708,  583,   99,  708,   99,  708,   99,  708,   99,
+      884,  101,  884,  101,  101,  101,  101,  101,  884,  884,
+      884,  884,  101,  884,  101,  101,  101,  884,  101,  884,
+      560,  101,  884,  101,  567,  101,  884,  101,  884,  101,
+      884,  101,  884,  101,  101,  101,  101,  884,  884,  568,
+      101,  572,  101,  884,  884,  884,  101,  884,  101,  884,
+      101,  884,  101,  884,  101,  101,  101,  577,  577,  577,
+      577,  101,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  578,  578,  578,  578,  578,  578,  578,  578,  101,
+      101,  583,  884,  884,  884,  884,  582,  884,  884,  101,
+      101,  101,  101,  101,  101,  101,  884,  884,  101,  101,
 
-      708,  708,   99,  708,   99,   99,  708,  708,   99,  708,
-      708,  708,   99,  708,   99,   99,   99,   99,  594,   99,
-       99,   99,   99,   99,   99,  708,  708,   99,  708,   99,
-      708,  708,  708,   99,  708,   99,  602,   99,  708,   99,
-       99,   99,   99,   99,  708,  708,   99,  708,   99,  708,
-       99,  708,   99,  708,   99,  708,   99,  708,   99,   99,
-       99,   99,   99,  603,  604,   99,  708,  605,  708,  708,
-      708,   99,   99,   99,   99,   99,   99,   99,  708,  708,
-       99,   99,  708,   99,  708,  608,  708,   99,  708,  606,
-      708,   99,  708,   99,   99,   99,   99,   99,  708,  708,
+      884,  884,  884,  101,  884,  101,  101,  101,  884,  101,
+      884,  585,  884,  101,  101,  101,  101,  101,  587,  101,
+      101,  586,  101,  884,  884,  101,  590,  101,  884,  101,
+      884,  588,  884,  101,  884,  101,  884,  101,  101,  101,
+      589,  101,  884,  101,  884,  101,  101,  101,  884,  101,
+      884,  884,  884,  101,  101,  101,  101,  101,  884,  591,
+      884,  884,  101,  884,  101,  884,  101,  884,  101,  884,
+      101,  884,  101,  884,  101,  101,  101,  884,  101,  592,
+      101,  884,  101,  101,  101,  884,  101,  884,  884,  884,
+      101,  101,  101,  101,  101,  884,  597,  884,  884,  101,
 
-       99,  708,   99,  708,  609,  708,   99,  708,   99,  708,
-       99,   99,   99,   99,   99,  708,  613,  708,  708,   99,
-      708,   99,   99,   99,  614,   99,  708,  708,   99,  615,
-       99,  708,   99,  708,   99,  708,   99,  708,   99,   99,
-       99,   99,   99,  708,  708,   99,  708,   99,  708,   99,
-      708,  630,  708,   99,  708,   99,  708,   99,   99,   99,
-       99,   99,  631,  708,   99,  708,  708,  708,  708,  708,
-       99,   99,   99,   99,   99,   99,   99,   99,  708,   99,
-       99,  708,  708,  708,  708,  708,   99,   99,   99,   99,
-       99,   99,   99,  632,  708,   99,   99,  708,   99,  634,
+      884,  101,  884,  101,  101,  101,  884,  101,  884,  884,
+      884,  101,  101,  101,  101,  101,  101,  101,  101,  884,
+      101,  884,  884,  101,  884,  101,  884,  101,  101,  101,
+      884,  101,  598,  884,  884,  101,  101,  101,  101,  101,
+      101,  101,  101,  884,  101,  606,  599,  101,  884,  101,
+      884,  101,  884,  101,  884,  101,  884,  884,  884,  101,
+      101,  101,  101,  101,  884,  101,  884,  884,  101,  884,
+      884,  884,  101,  884,  101,  610,  101,  101,  884,  101,
+      884,  101,  884,  884,  101,  577,  577,  577,  577,  884,
+      884,  884,  884,  884,  884,  884,  884,  101,  884,  578,
 
-      708,  708,   99,  708,   99,  708,   99,  708,   99,   99,
-       99,   99,   99,  708,  708,  708,  708,   99,  708,   99,
-       99,  638,  708,   99,  708,  708,   99,  708,   99,  708,
-       99,  708,   99,  639,   99,  708,   99,   99,   99,   99,
-       99,  708,  708,   99,  708,   99,  708,   99,  708,   99,
-      708,   99,  708,   99,   99,   99,   99,   99,  708,  708,
-      708,  708,   99,  708,   99,   99,   99,  708,   99,  708,
-      708,   99,  654,   99,  708,   99,  708,   99,  708,   99,
-      708,   99,  658,  659,   99,   99,   99,   99,  708,  708,
-       99,  708,  708,  708,  708,  708,   99,   99,   99,   99,
+      578,  578,  578,  578,  578,  578,  578,  101,  101,  101,
+      622,  101,  884,  884,  101,  884,  101,  884,  101,  884,
+      101,  884,  101,  884,  101,  101,  101,  101,  101,  884,
+      884,  101,  884,  101,  624,  101,  884,  101,  884,  101,
+      884,  101,  623,  101,  101,  101,  101,  101,  884,  884,
+      101,  625,  884,  884,  884,  884,  101,  101,  101,  626,
+      101,  101,  101,  101,  628,  101,  101,  884,  884,  884,
+      884,  884,  101,  629,  101,  101,  101,  101,  101,  884,
+      884,  101,  101,  884,  884,  884,  101,  884,  101,  884,
+      101,  884,  101,  884,  633,  884,  101,  101,  101,  634,
 
-       99,   99,   99,   99,  708,   99,   99,  708,  708,  674,
-      708,  708,   99,   99,   99,   99,   99,   99,  708,  708,
-      708,   99,   99,   54,   54,   54,   54,   54,   54,   54,
-       54,   54,   54,   54,   54,   59,   59,   59,   59,   59,
-       59,   59,   59,   59,   59,   59,   59,   63,   63,   63,
-       63,   63,   63,   63,   63,   63,   63,   63,   63,   66,
-       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
-       66,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   77,   77,   77,   77,   77,   77,   77,
-       77,   77,   77,   77,   77,   84,   84,   84,  708,   84,
+      101,  101,  101,  884,  884,  101,  884,  884,  635,  884,
+      884,  101,  101,  101,  101,  101,  101,  101,  101,  884,
+      101,  101,  884,  884,  884,  884,  884,  101,  101,  652,
+      101,  101,  101,  101,  101,  653,  101,  101,  884,  884,
+      884,  884,  884,  101,  101,  101,  101,  101,  101,  101,
+      101,  884,  101,  101,  884,  884,  884,  884,  884,  101,
+      101,  101,  101,  101,  101,  101,  654,  884,  101,  101,
+      884,  101,  656,  884,  884,  101,  884,  101,  884,  101,
+      884,  101,  101,  101,  101,  101,  884,  884,  884,  884,
+      101,  884,  101,  101,  660,  884,  101,  884,  884,  101,
 
-       84,   84,   84,   84,   84,   84,   84,   91,   91,  708,
-      708,   91,  708,   91,  708,   91,  157,  157,  708,  157,
-      157,  161,  161,  708,  161,  161,  161,  708,  161,  161,
-      161,  161,  161,  165,  165,  165,  708,  165,  165,  165,
-      165,  165,  165,  165,  165,  167,  167,  167,  167,  167,
-      167,  167,  167,  708,  167,  167,  169,  708,  708,  169,
-      169,  169,  169,  169,  169,  169,  169,  170,  708,  708,
-      170,  170,  170,  170,  170,  170,  170,  170,  172,  708,
-      708,  172,  708,  172,  172,  172,  172,  172,  172,  177,
-      177,  708,  177,  177,  179,  179,  708,  179,  179,  186,
+      884,  101,  884,  101,  884,  101,  661,  101,  884,  101,
+      101,  101,  101,  101,  884,  884,  101,  884,  101,  884,
+      101,  884,  101,  884,  101,  884,  101,  101,  101,  101,
+      101,  884,  884,  884,  884,  101,  884,  101,  101,  101,
+      884,  101,  884,  884,  101,  678,  101,  884,  101,  884,
+      101,  884,  101,  884,  101,  682,  683,  101,  101,  101,
+      101,  884,  884,  101,  884,  884,  884,  884,  884,  101,
+      101,  101,  101,  101,  101,  101,  101,  884,  101,  101,
+      884,  884,  700,  884,  884,  101,  101,  101,  101,  101,
+      101,  884,  884,  884,  101,  101,   54,   54,   54,   54,
 
-      708,  186,  186,  105,  105,  708,  105,  105,  255,  708,
-      255,  255,  263,  708,  263,  263,  264,  708,  264,  264,
-      267,  267,  267,  267,  267,  267,  267,  267,  267,  267,
-      267,  267,  187,  187,  708,  187,  187,  336,  336,  708,
-      708,  708,  708,  336,  338,  338,  708,  708,  708,  708,
-      338,  466,  466,  708,  708,  708,  708,  466,  564,  564,
-      708,  708,  708,  708,  564,   17,  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,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   65,   65,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   77,   77,   77,   77,
+       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
+       77,   79,   79,   79,   79,   79,   79,   79,   79,   79,
+       79,   79,   79,   79,   79,   79,   86,   86,   86,  884,
+       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
 
-      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
+       86,   93,   93,  884,  884,   93,  884,   93,  884,  884,
+      884,   93,  159,  159,  884,  884,  884,  159,  159,  163,
+      163,  884,  163,  163,  163,  884,  163,  163,  884,  163,
+      163,  163,  163,  163,  169,  169,  169,  884,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  171,
+      171,  171,  171,  171,  171,  171,  171,  884,  171,  171,
+      171,  171,  173,  884,  884,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  174,  884,  884,  174,  174,
+      174,  174,  174,  174,  174,  174,  174,  174,  176,  884,
+      884,  176,  884,  176,  176,  176,  176,  176,  176,  176,
+
+      176,  181,  181,  884,  884,  884,  181,  181,  183,  183,
+      884,  884,  884,  183,  183,  190,  884,  884,  884,  190,
+      190,  107,  107,  884,  884,  884,  107,  107,  259,  884,
+      884,  884,  259,  259,  269,  884,  884,  884,  269,  269,
+      270,  884,  884,  884,  270,  270,  273,  273,  273,  273,
+      273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
+      273,  191,  191,  884,  884,  884,  191,  191,  579,  579,
+      884,  579,  579,  579,  884,  579,  579,  579,  884,  579,
+      579,  579,  579,  580,  580,  884,  580,  580,  580,  884,
+      580,  580,  580,  884,  580,  580,  580,  580,  578,  578,
+
+      884,  884,  884,  884,  578,  884,  884,  884,  884,  884,
+      884,  578,  617,  617,  884,  617,  617,  617,  884,  617,
+      617,  617,  617,  617,  617,  617,  617,  619,  619,  884,
+      619,  619,  619,  884,  619,  619,  619,  619,  619,  619,
+      619,  619,  649,  649,  884,  649,  649,  649,  884,  649,
+      649,  649,  649,  649,  649,  649,  649,  650,  650,  884,
+      650,  650,  650,  884,  650,  650,  650,  650,  650,  650,
+      650,  650,  674,  674,  884,  674,  674,  674,  884,  674,
+      674,  674,  674,  674,  674,  674,  674,  675,  675,  884,
+      675,  675,  675,  884,  675,  675,  675,  675,  675,  675,
+
+      675,  675,  696,  696,  884,  696,  696,  696,  884,  696,
+      696,  696,  696,  696,  696,  696,  696,  697,  697,  884,
+      697,  697,  697,  884,  697,  697,  697,  697,  697,  697,
+      697,  697,  714,  714,  884,  714,  714,  714,  884,  714,
+      714,  714,  714,  714,  714,  714,  714,  715,  715,  884,
+      715,  715,  715,  884,  715,  715,  715,  715,  715,  715,
+      715,  715,  725,  725,  884,  725,  725,  725,  884,  725,
+      725,  725,  725,  725,  725,  725,  725,  726,  726,  884,
+      726,  726,  726,  884,  726,  726,  726,  726,  726,  726,
+      726,  726,  734,  734,  884,  734,  734,  734,  884,  734,
+
+      734,  734,  734,  734,  734,  734,  734,  735,  735,  884,
+      735,  735,  735,  884,  735,  735,  735,  735,  735,  735,
+      735,  735,  739,  739,  884,  739,  739,  739,  884,  739,
+      739,  739,  739,  739,  739,  739,  739,  740,  740,  884,
+      740,  740,  740,  884,  740,  740,  740,  740,  740,  740,
+      740,  740,  742,  742,  884,  742,  742,  742,  884,  742,
+      742,  742,  742,  742,  742,  742,  742,  743,  743,  884,
+      743,  743,  743,  884,  743,  743,  743,  743,  743,  743,
+      743,  743,  744,  744,  884,  744,  744,  744,  884,  744,
+      744,  744,  744,  744,  744,  744,  744,  745,  745,  884,
+
+      745,  745,  745,  884,  745,  745,  745,  745,  745,  745,
+      745,  745,  746,  746,  884,  746,  746,  746,  884,  746,
+      746,  746,  746,  746,  746,  746,  746,  747,  747,  884,
+      747,  747,  747,  884,  747,  747,  747,  747,  747,  747,
+      747,  747,  748,  748,  884,  748,  748,  748,  884,  748,
+      748,  748,  748,  748,  748,  748,  748,  749,  749,  884,
+      749,  749,  749,  884,  749,  749,  749,  749,  749,  749,
+      749,  749,  750,  750,  884,  750,  750,  750,  884,  750,
+      750,  750,  750,  750,  750,  750,  750,  751,  751,  884,
+      751,  751,  751,  884,  751,  751,  751,  751,  751,  751,
+
+      751,  751,  752,  752,  884,  752,  752,  752,  884,  752,
+      752,  752,  752,  752,  752,  752,  752,  753,  753,  884,
+      753,  753,  753,  884,  753,  753,  753,  753,  753,  753,
+      753,  753,  754,  754,  884,  754,  754,  754,  884,  754,
+      754,  754,  754,  754,  754,  754,  754,  755,  755,  884,
+      755,  755,  755,  884,  755,  755,  755,  755,  755,  755,
+      755,  755,  756,  756,  884,  756,  756,  756,  884,  756,
+      756,  756,  756,  756,  756,  756,  756,  757,  757,  884,
+      757,  757,  757,  884,  757,  757,  757,  757,  757,  757,
+      757,  757,  758,  758,  884,  758,  758,  758,  884,  758,
+
+      758,  758,  758,  758,  758,  758,  758,  759,  759,  884,
+      759,  759,  759,  884,  759,  759,  759,  759,  759,  759,
+      759,  759,  760,  760,  884,  760,  760,  760,  884,  760,
+      760,  760,  760,  760,  760,  760,  760,  761,  761,  884,
+      761,  761,  761,  884,  761,  761,  761,  761,  761,  761,
+      761,  761,  762,  762,  884,  762,  762,  762,  884,  762,
+      762,  762,  762,  762,  762,  762,  762,  763,  763,  884,
+      763,  763,  763,  884,  763,  763,  763,  763,  763,  763,
+      763,  763,  764,  764,  884,  764,  764,  764,  884,  764,
+      764,  764,  764,  764,  764,  764,  764,  765,  765,  884,
+
+      765,  765,  765,  884,  765,  765,  765,  765,  765,  765,
+      765,  765,  766,  766,  884,  766,  766,  766,  884,  766,
+      766,  766,  766,  766,  766,  766,  766,  767,  767,  884,
+      767,  767,  767,  884,  767,  767,  767,  767,  767,  767,
+      767,  767,  768,  768,  884,  768,  768,  768,  884,  768,
+      768,  768,  768,  768,  768,  768,  768,  769,  769,  884,
+      769,  769,  769,  884,  769,  769,  769,  769,  769,  769,
+      769,  769,  770,  770,  884,  770,  770,  770,  884,  770,
+      770,  770,  770,  770,  770,  770,  770,  771,  771,  884,
+      771,  771,  771,  884,  771,  771,  771,  771,  771,  771,
+
+      771,  771,  772,  772,  884,  772,  772,  772,  884,  772,
+      772,  772,  772,  772,  772,  772,  772,  773,  773,  884,
+      773,  773,  773,  884,  773,  773,  773,  773,  773,  773,
+      773,  773,  774,  774,  884,  774,  774,  774,  884,  774,
+      774,  774,  774,  774,  774,  774,  774,  775,  775,  884,
+      775,  775,  775,  884,  775,  775,  775,  775,  775,  775,
+      775,  775,  776,  776,  884,  776,  776,  776,  884,  776,
+      776,  776,  776,  776,  776,  776,  776,  777,  777,  884,
+      777,  777,  777,  884,  777,  777,  777,  777,  777,  777,
+      777,  777,  778,  778,  884,  778,  778,  778,  884,  778,
+
+      778,  778,  778,  778,  778,  778,  778,  779,  779,  884,
+      779,  779,  779,  884,  779,  779,  779,  779,  779,  779,
+      779,  779,  780,  780,  884,  780,  780,  780,  884,  780,
+      780,  780,  780,  780,  780,  780,  780,  781,  781,  884,
+      781,  781,  781,  884,  781,  781,  781,  781,  781,  781,
+      781,  781,  782,  782,  884,  782,  782,  782,  884,  782,
+      782,  782,  782,  782,  782,  782,  782,  783,  783,  884,
+      783,  783,  783,  884,  783,  783,  783,  783,  783,  783,
+      783,  783,  784,  784,  884,  784,  784,  784,  884,  784,
+      784,  784,  784,  784,  784,  784,  784,  785,  785,  884,
+
+      785,  785,  785,  884,  785,  785,  785,  785,  785,  785,
+      785,  785,  786,  786,  884,  786,  786,  786,  884,  786,
+      786,  786,  786,  786,  786,  786,  786,  787,  787,  884,
+      787,  787,  787,  884,  787,  787,  787,  787,  787,  787,
+      787,  787,  788,  788,  884,  788,  788,  788,  884,  788,
+      788,  788,  788,  788,  788,  788,  788,  789,  789,  884,
+      789,  789,  789,  884,  789,  789,  789,  789,  789,  789,
+      789,  789,  790,  790,  884,  790,  790,  790,  884,  790,
+      790,  790,  790,  790,  790,  790,  790,  791,  791,  884,
+      791,  791,  791,  884,  791,  791,  791,  791,  791,  791,
+
+      791,  791,  792,  792,  884,  792,  792,  792,  884,  792,
+      792,  792,  792,  792,  792,  792,  792,  793,  793,  884,
+      793,  793,  793,  884,  793,  793,  793,  793,  793,  793,
+      793,  793,  794,  794,  884,  794,  794,  794,  884,  794,
+      794,  794,  794,  794,  794,  794,  794,  795,  795,  884,
+      795,  795,  795,  884,  795,  795,  795,  795,  795,  795,
+      795,  795,  796,  796,  884,  796,  796,  796,  884,  796,
+      796,  796,  796,  796,  796,  796,  796,  797,  797,  884,
+      797,  797,  797,  884,  797,  797,  797,  797,  797,  797,
+      797,  797,  798,  798,  884,  798,  798,  798,  884,  798,
+
+      798,  798,  798,  798,  798,  798,  798,  799,  799,  884,
+      799,  799,  799,  884,  799,  799,  799,  799,  799,  799,
+      799,  799,  800,  800,  884,  800,  800,  800,  884,  800,
+      800,  800,  800,  800,  800,  800,  800,  801,  801,  884,
+      801,  801,  801,  884,  801,  801,  801,  801,  801,  801,
+      801,  801,  802,  802,  884,  802,  802,  802,  884,  802,
+      802,  802,  802,  802,  802,  802,  802,  803,  803,  884,
+      803,  803,  803,  884,  803,  803,  803,  803,  803,  803,
+      803,  803,  804,  804,  884,  804,  804,  804,  884,  804,
+      804,  804,  804,  804,  804,  804,  804,  805,  805,  884,
+
+      805,  805,  805,  884,  805,  805,  805,  805,  805,  805,
+      805,  805,  806,  806,  884,  806,  806,  806,  884,  806,
+      806,  806,  806,  806,  806,  806,  806,  807,  807,  884,
+      807,  807,  807,  884,  807,  807,  807,  807,  807,  807,
+      807,  807,  808,  808,  884,  808,  808,  808,  884,  808,
+      808,  808,  808,  808,  808,  808,  808,  809,  809,  884,
+      809,  809,  809,  884,  809,  809,  809,  809,  809,  809,
+      809,  809,  810,  810,  884,  810,  810,  810,  884,  810,
+      810,  810,  810,  810,  810,  810,  810,  811,  811,  884,
+      811,  811,  811,  884,  811,  811,  811,  811,  811,  811,
+
+      811,  811,  812,  812,  884,  812,  812,  812,  884,  812,
+      812,  812,  812,  812,  812,  812,  812,  813,  813,  884,
+      813,  813,  813,  884,  813,  813,  813,  813,  813,  813,
+      813,  813,  814,  814,  884,  814,  814,  814,  884,  814,
+      814,  814,  814,  814,  814,  814,  814,  815,  815,  884,
+      815,  815,  815,  884,  815,  815,  815,  815,  815,  815,
+      815,  815,  816,  816,  884,  816,  816,  816,  884,  816,
+      816,  816,  816,  816,  816,  816,  816,  817,  817,  884,
+      817,  817,  817,  884,  817,  817,  817,  817,  817,  817,
+      817,  817,  818,  818,  884,  818,  818,  818,  884,  818,
+
+      818,  818,  818,  818,  818,  818,  818,  819,  819,  884,
+      819,  819,  819,  884,  819,  819,  819,  819,  819,  819,
+      819,  819,  820,  820,  884,  820,  820,  820,  884,  820,
+      820,  820,  820,  820,  820,  820,  820,  821,  821,  884,
+      821,  821,  821,  884,  821,  821,  821,  821,  821,  821,
+      821,  821,  822,  822,  884,  822,  822,  822,  884,  822,
+      822,  822,  822,  822,  822,  822,  822,  823,  823,  884,
+      823,  823,  823,  884,  823,  823,  823,  823,  823,  823,
+      823,  823,  824,  824,  884,  824,  824,  824,  884,  824,
+      824,  824,  824,  824,  824,  824,  824,  825,  825,  884,
+
+      825,  825,  825,  884,  825,  825,  825,  825,  825,  825,
+      825,  825,  826,  826,  884,  826,  826,  826,  884,  826,
+      826,  826,  826,  826,  826,  826,  826,  827,  827,  884,
+      827,  827,  827,  884,  827,  827,  827,  827,  827,  827,
+      827,  827,  828,  828,  884,  828,  828,  828,  884,  828,
+      828,  828,  828,  828,  828,  828,  828,  829,  829,  884,
+      829,  829,  829,  884,  829,  829,  829,  829,  829,  829,
+      829,  829,  830,  830,  884,  830,  830,  830,  884,  830,
+      830,  830,  830,  830,  830,  830,  830,  831,  831,  884,
+      831,  831,  831,  884,  831,  831,  831,  831,  831,  831,
+
+      831,  831,  832,  832,  884,  832,  832,  832,  884,  832,
+      832,  832,  832,  832,  832,  832,  832,  833,  833,  884,
+      833,  833,  833,  884,  833,  833,  833,  833,  833,  833,
+      833,  833,  834,  834,  884,  834,  834,  834,  884,  834,
+      834,  834,  834,  834,  834,  834,  834,  835,  835,  884,
+      835,  835,  835,  884,  835,  835,  835,  835,  835,  835,
+      835,  835,  836,  836,  884,  836,  836,  836,  884,  836,
+      836,  836,  836,  836,  836,  836,  836,  837,  837,  884,
+      837,  837,  837,  884,  837,  837,  837,  837,  837,  837,
+      837,  837,  838,  838,  884,  838,  838,  838,  884,  838,
+
+      838,  838,  838,  838,  838,  838,  838,  839,  839,  884,
+      839,  839,  839,  884,  839,  839,  839,  839,  839,  839,
+      839,  839,  840,  840,  884,  840,  840,  840,  884,  840,
+      840,  840,  840,  840,  840,  840,  840,  841,  841,  884,
+      841,  841,  841,  884,  841,  841,  841,  841,  841,  841,
+      841,  841,  842,  842,  884,  842,  842,  842,  884,  842,
+      842,  842,  842,  842,  842,  842,  842,  843,  843,  884,
+      843,  843,  843,  884,  843,  843,  843,  843,  843,  843,
+      843,  843,  844,  844,  884,  844,  844,  844,  884,  844,
+      844,  844,  844,  844,  844,  844,  844,  845,  845,  884,
+
+      845,  845,  845,  884,  845,  845,  845,  845,  845,  845,
+      845,  845,  846,  846,  884,  846,  846,  846,  884,  846,
+      846,  846,  846,  846,  846,  846,  846,  847,  847,  884,
+      847,  847,  847,  884,  847,  847,  847,  847,  847,  847,
+      847,  847,  848,  848,  884,  848,  848,  848,  884,  848,
+      848,  848,  848,  848,  848,  848,  848,  849,  849,  884,
+      849,  849,  849,  884,  849,  849,  849,  849,  849,  849,
+      849,  849,  850,  850,  884,  850,  850,  850,  884,  850,
+      850,  850,  850,  850,  850,  850,  850,  851,  851,  884,
+      851,  851,  851,  884,  851,  851,  851,  851,  851,  851,
+
+      851,  851,  852,  852,  884,  852,  852,  852,  884,  852,
+      852,  852,  852,  852,  852,  852,  852,  853,  853,  884,
+      853,  853,  853,  884,  853,  853,  853,  853,  853,  853,
+      853,  853,  854,  854,  884,  854,  854,  854,  884,  854,
+      854,  854,  854,  854,  854,  854,  854,  855,  855,  884,
+      855,  855,  855,  884,  855,  855,  855,  855,  855,  855,
+      855,  855,  856,  856,  884,  856,  856,  856,  884,  856,
+      856,  856,  856,  856,  856,  856,  856,  857,  857,  884,
+      857,  857,  857,  884,  857,  857,  857,  857,  857,  857,
+      857,  857,  858,  858,  884,  858,  858,  858,  884,  858,
+
+      858,  858,  858,  858,  858,  858,  858,  859,  859,  884,
+      859,  859,  859,  884,  859,  859,  859,  859,  859,  859,
+      859,  859,  860,  860,  884,  860,  860,  860,  884,  860,
+      860,  860,  860,  860,  860,  860,  860,  861,  861,  884,
+      861,  861,  861,  884,  861,  861,  861,  861,  861,  861,
+      861,  861,  862,  862,  884,  862,  862,  862,  884,  862,
+      862,  862,  862,  862,  862,  862,  862,  863,  863,  884,
+      863,  863,  863,  884,  863,  863,  863,  863,  863,  863,
+      863,  863,  864,  864,  884,  864,  864,  864,  884,  864,
+      864,  864,  864,  864,  864,  864,  864,  865,  865,  884,
+
+      865,  865,  865,  884,  865,  865,  865,  865,  865,  865,
+      865,  865,  866,  866,  884,  866,  866,  866,  884,  866,
+      866,  866,  866,  866,  866,  866,  866,  867,  867,  884,
+      867,  867,  867,  884,  867,  867,  867,  867,  867,  867,
+      867,  867,  868,  868,  884,  868,  868,  868,  884,  868,
+      868,  868,  868,  868,  868,  868,  868,  869,  869,  884,
+      869,  869,  869,  884,  869,  869,  869,  869,  869,  869,
+      869,  869,  870,  870,  884,  870,  870,  870,  884,  870,
+      870,  870,  870,  870,  870,  870,  870,  871,  871,  884,
+      871,  871,  871,  884,  871,  871,  871,  871,  871,  871,
+
+      871,  871,  872,  872,  884,  872,  872,  872,  884,  872,
+      872,  872,  872,  872,  872,  872,  872,  873,  873,  884,
+      873,  873,  873,  884,  873,  873,  873,  873,  873,  873,
+      873,  873,  874,  874,  884,  874,  874,  874,  884,  874,
+      874,  874,  874,  874,  874,  874,  874,  875,  875,  884,
+      875,  875,  875,  884,  875,  875,  875,  875,  875,  875,
+      875,  875,  876,  876,  884,  876,  876,  876,  884,  876,
+      876,  876,  876,  876,  876,  876,  876,  877,  877,  884,
+      877,  877,  877,  884,  877,  877,  877,  877,  877,  877,
+      877,  877,  878,  878,  884,  878,  878,  878,  884,  878,
+
+      878,  878,  878,  878,  878,  878,  878,  879,  879,  884,
+      879,  879,  879,  884,  879,  879,  879,  879,  879,  879,
+      879,  879,  880,  880,  884,  880,  880,  880,  884,  880,
+      880,  880,  880,  880,  880,  880,  880,  881,  881,  884,
+      881,  881,  881,  884,  881,  881,  881,  881,  881,  881,
+      881,  881,  882,  882,  884,  882,  882,  882,  884,  882,
+      882,  882,  882,  882,  882,  882,  882,  883,  883,  884,
+      883,  883,  883,  884,  883,  883,  883,  883,  883,  883,
+      883,  883,   17,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884
     } ;
 
-static yyconst short int yy_chk[4247] =
+static yyconst short int yy_chk[6865] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1234,487 +1614,775 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        3,    3,    3,    4,    4,    4,    5,    5,    5,   11,
-        3,    9,    7,    4,    8,    9,    5,    6,    6,    6,
+        1,    3,    3,    3,    4,    4,    4,    5,    5,    5,
+      467,    3,    9,    7,    4,  137,    9,    5,    6,    6,
 
-        7,   10,    8,   12,    7,   10,    8,    6,  121,   28,
-       11,   28,  150,   11,   78,   78,   78,   78,  364,  180,
-       15,   15,   15,   15,   12,  180,   15,   12,   79,   79,
-       79,   79,   16,   16,   16,   16,  260,  260,   16,   19,
-       19,   19,   19,  182,  706,  182,   19,   20,   20,   20,
-       20,  121,  521,  182,   20,   24,   24,   24,   24,  521,
-      704,  364,   24,   26,   11,  150,   11,   26,  130,   24,
-       24,   26,   26,   26,   26,   26,   26,   26,   12,   88,
-       12,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   15,  120,   15,   83,
+        6,    7,   10,    8,    3,    7,   10,    4,    6,   11,
+        5,    8,   28,   12,   28,    8,    7,   19,   19,   19,
+       19,    6,  122,   82,   19,  218,    8,  123,   36,  132,
+       11,   36,  581,   11,   12,  184,  142,   12,   36,   82,
+       36,  184,   36,   15,   15,   15,   15,   36,  137,   15,
+       16,   16,   16,   16,  467,   90,   16,   20,   20,   20,
+       20,  581,  255,   35,   20,   24,   24,   24,   24,   35,
+       82,  123,   24,   35,  152,   35,   35,   35,  122,   24,
+       24,  155,   35,  218,  132,   11,   90,   11,  142,   12,
+      472,   12,   13,   13,   13,   13,   13,   13,   13,   13,
 
-       83,   83,   83,  135,   13,   13,   13,   13,   16,   88,
-       16,   40,   13,   30,   30,   30,   30,   30,   30,   30,
-       30,   40,  130,   40,  214,   40,   34,  140,  153,   34,
-       40,   80,   37,   34,   13,   13,   34,   34,   34,   34,
-       34,  213,   37,   37,   37,   34,   37,   80,  703,   34,
-      457,   37,  120,  154,   37,  135,  235,  225,   13,   13,
-       13,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,   14,  314,   80,  140,  153,
-      294,  214,  229,   35,   14,   14,   14,   14,  213,   35,
-      247,   36,   14,   35,   36,   35,   35,   35,  252,  154,
+       13,   13,   13,   13,   13,   13,   13,   30,   30,   30,
+       30,   30,   30,   30,   30,   13,   13,   13,   13,   13,
+       15,  217,   15,  500,   13,  255,   26,   16,  152,   16,
+       26,  175,  175,  155,   26,   26,   26,   26,   26,   26,
+       26,   34,  175,  257,   34,  229,   13,   13,   34,   40,
+      472,   34,   34,   34,   34,   34,  186,  500,  186,   40,
+       34,   40,  338,   40,   34,  233,  186,  239,   40,  217,
+       13,   13,   13,   14,   14,   14,   14,   14,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,   14,   80,   80,
+       80,   80,   37,  229,  315,  257,   14,   14,   14,   14,
 
-      293,   36,   35,   36,  225,   36,   38,   38,   43,  309,
-       36,  235,  154,  457,   14,   14,  386,   38,   43,   38,
-       43,   38,   43,   38,  171,  171,   38,   43,  305,  229,
-      294,   41,   41,  383,   41,  171,  314,  247,   14,   14,
-       14,   23,   41,   41,   41,  252,   41,  405,  701,   41,
-      251,   41,  405,   43,  309,  332,  383,   23,  293,  386,
+       14,  251,   37,   37,   37,   14,   37,  299,  156,   38,
+       38,   37,  311,  233,   37,   81,   81,   81,   81,  338,
+       38,  256,   38,  239,   38,   39,   38,   14,   14,   38,
+       41,   41,  883,   41,  882,   39,  530,   39,  513,   39,
+      315,   41,   41,   41,   39,   41,  266,  266,   41,  251,
+       41,   14,   14,   14,   23,  156,   39,   85,   85,   85,
+       85,  177,  177,  177,  177,  320,  299,   39,  156,  256,
+       23,  311,  513,  373,   23,   23,   23,   23,   23,   23,
        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
-       23,   23,   23,   23,   23,   23,  305,   23,   23,   23,
-       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
 
+      530,   23,   23,   23,   23,   23,   23,   23,   23,   23,
        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
-       33,  332,  251,   33,   33,   33,   33,   33,   33,   33,
-       33,  173,  173,  173,  173,   33,   33,   33,   33,   33,
+       23,   23,   23,   23,   33,  373,  320,   33,   33,   33,
+       33,   33,   33,   33,   33,  331,  881,  880,  405,  879,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,  253,  331,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,  300,  337,   33,   33,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   39,  256,  256,  256,  256,
-       42,   42,  269,  325,  269,   39,  340,   39,   42,   39,
-      365,   42,  269,   42,   39,   42,  340,   44,   44,  331,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       42,   42,   43,  405,  389,  339,  331,  275,   42,  275,
 
-       42,   44,  253,  377,  333,  392,   39,   44,  345,   44,
-      381,   44,  257,  257,  257,  257,   44,   39,   45,   45,
-       46,   45,  401,   46,  428,   44,  393,  460,  392,   45,
-       46,   45,   46,   45,   46,   45,  441,   47,   45,   46,
-       47,  365,  366,  325,   47,   48,  391,   47,  333,   47,
-      429,   47,   48,   48,  377,   47,   47,  442,  463,  441,
-       47,   45,  574,   48,  399,   48,  345,   48,   49,   48,
-      381,   50,   48,  393,  460,  401,   48,  428,   49,  574,
-       49,   50,   49,   50,   48,   50,   49,   49,  699,   51,
-       50,  335,  335,  335,  335,  429,   51,  397,  400,   51,
+      372,   42,   43,   42,   43,   42,   43,  275,   44,   44,
+       42,   43,   44,   45,   45,  337,   45,  300,   44,  538,
+       44,  348,   44,  394,   45,  353,   45,   44,   45,   46,
+       45,  348,   46,   45,  385,   47,   44,   43,   47,   46,
+      339,   46,   47,   46,  372,   47,  374,   47,   46,   47,
+      401,   48,   50,   47,   47,  389,   45,  399,   47,   48,
+       48,  535,   50,   49,   50,  391,   50,  394,  535,  538,
+       48,   50,   48,   49,   48,   49,   48,   49,   51,   48,
+      400,   49,   49,   48,  353,   51,  385,   50,   51,  391,
+       51,   48,   51,   53,   53,   53,   53,   51,  401,  455,
 
-      366,   51,  442,   51,  391,  463,   50,   49,   51,   53,
-       53,   53,   53,   93,   93,   93,   93,   93,   93,   93,
-       93,  461,  399,   53,   53,   53,   53,   53,   53,   53,
-       53,   75,  337,  337,  337,  337,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   90,   90,   90,   90,
-      464,  397,  445,   90,   75,   75,   75,   75,  400,  698,
-       90,   90,   96,   96,   96,   96,   96,   96,   96,   96,
-      445,  336,  336,  336,  336,  409,   99,  100,  697,  461,
-      537,  336,  696,  694,   75,   75,   99,  100,   99,  100,
-       99,  100,  101,  103,  100,   99,  100,  464,  402,  402,
+      525,  658,   49,  408,  400,  374,  407,   53,   53,   53,
+       53,   53,   53,   53,   53,   77,  399,  409,  455,  451,
+       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
+       92,   92,   92,   92,  525,  419,  658,   92,   77,   77,
+       77,   77,   77,  451,   92,   92,   95,   95,   95,   95,
+       95,   95,   95,   95,   98,   98,   98,   98,   98,   98,
+       98,   98,  101,  102,  408,  407,  439,  529,  878,   77,
+       77,  409,  101,  102,  101,  102,  101,  102,  103,  105,
+      102,  101,  102,  410,  410,  410,  410,  419,  103,  105,
+      103,  105,  103,  105,   77,   78,  470,  103,  105,  440,
 
-      402,  402,  101,  103,  101,  103,  101,  103,  450,   75,
-       76,  101,  103,  462,  430,   76,   76,   76,   76,   76,
-       76,   76,   76,   76,   76,  488,  409,  104,  102,  403,
-      403,  403,  403,   76,   76,   76,   76,  104,  102,  104,
-      102,  104,  102,  106,  537,  104,  104,  102,  106,  336,
-       76,  102,  450,  106,  689,  106,  107,  106,  488,  108,
-      470,  455,  106,   76,   76,  430,  107,  109,  107,  108,
-      107,  108,  462,  108,  107,  107,  402,  109,  108,  109,
-      109,  109,  465,  465,  465,  465,  109,  487,   76,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
+      415,  529,  439,  106,  104,  415,  438,  465,   78,   78,
+       78,   78,   78,  106,  104,  106,  104,  106,  104,  108,
+      877,  106,  106,  104,  108,  876,   78,  104,  875,  108,
+      874,  108,  109,  108,  470,  110,  471,  482,  108,   78,
+       78,  440,  109,  111,  109,  110,  109,  110,  452,  110,
+      109,  109,  410,  111,  110,  111,  111,  111,  499,  465,
+      438,  528,  111,  473,   78,  100,  100,  100,  100,  100,
+      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
+      100,  100,  100,  100,  100,  100,  100,  112,  520,  113,
 
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,  110,  455,  111,  111,  470,  536,  501,  489,  503,
-      487,  110,  511,  110,  111,  110,  111,  111,  111,  113,
-      110,  112,  112,  111,  518,  688,  517,  687,  487,  113,
-      113,  113,  112,  113,  112,  114,  112,  516,  113,  114,
-      501,  112,  508,  115,  684,  114,  550,  114,  524,  114,
-      683,  513,  519,  115,  114,  115,  503,  115,  116,  116,
-      116,  118,  115,  489,  117,  117,  536,  511,  116,  517,
-      116,  118,  116,  118,  117,  118,  117,  116,  117,  119,
-      118,  122,  117,  117,  513,  519,  538,  518,  516,  119,
+      113,  460,  499,  482,  452,  471,  501,  112,  873,  112,
+      113,  112,  113,  113,  113,  115,  112,  114,  114,  113,
+      499,  473,  550,  528,  872,  115,  115,  115,  114,  115,
+      114,  116,  114,  474,  115,  116,  515,  114,  552,  117,
+      871,  116,  523,  116,  566,  116,  460,  553,  531,  117,
+      116,  117,  520,  117,  118,  118,  118,  120,  117,  551,
+      119,  119,  501,  560,  118,  564,  118,  120,  118,  120,
+      119,  120,  119,  118,  119,  121,  120,  574,  119,  119,
+      124,  474,  531,  550,  515,  121,  562,  121,  121,  121,
+      124,  870,  566,  125,  121,  569,  125,  553,  523,  552,
 
-      122,  119,  119,  119,  565,  508,  123,  524,  119,  123,
-      122,  539,  122,  546,  122,  550,  123,  124,  123,  122,
-      123,  552,  548,  125,  125,  123,  557,  124,  555,  124,
-      679,  124,  565,  125,  126,  125,  124,  125,  559,  678,
-      125,  125,  125,  677,  126,  127,  126,  126,  126,  675,
-      577,  128,  673,  126,  560,  127,  538,  127,  672,  127,
-      539,  128,  129,  128,  127,  128,  579,  127,  552,  667,
-      128,  546,  129,  561,  129,  131,  129,  555,  132,  586,
-      664,  129,  548,  131,  562,  131,  557,  131,  132,  131,
-      132,  133,  132,  559,  131,  589,  132,  132,  587,  134,
+      124,  126,  124,  125,  124,  125,  573,  125,  575,  124,
+      869,  126,  125,  126,  571,  126,  127,  127,  576,  868,
+      126,  600,  560,  867,  551,  564,  127,  128,  127,  593,
+      127,  574,  595,  127,  127,  127,  606,  128,  129,  128,
+      128,  128,  575,  590,  130,  569,  128,  562,  129,  594,
+      129,  611,  129,  602,  130,  131,  130,  129,  130,  605,
+      129,  590,  573,  130,  720,  131,  606,  131,  133,  131,
+      603,  134,  866,  600,  131,  571,  133,  609,  133,  576,
+      133,  134,  133,  134,  135,  134,  614,  133,  593,  134,
+      134,  595,  136,  605,  135,  138,  135,  594,  135,  636,
 
-      578,  133,  136,  133,  593,  133,  561,  560,  577,  134,
-      133,  134,  136,  134,  136,  137,  136,  134,  134,  584,
-      136,  136,  611,  590,  579,  137,  138,  137,  589,  137,
-      520,  520,  520,  520,  137,  137,  138,  586,  138,  139,
-      138,  663,  139,  587,  562,  138,  139,  578,  596,  139,
-      597,  139,  590,  139,  141,  141,  661,  598,  139,  621,
-      660,  142,  593,  619,  595,  141,  610,  141,  611,  141,
-      584,  142,  143,  142,  141,  142,  142,  612,  144,  142,
-      142,  596,  143,  146,  143,  616,  143,  618,  144,  145,
-      144,  143,  144,  636,  144,  146,  143,  144,  663,  145,
+      612,  611,  136,  135,  136,  138,  136,  138,  139,  138,
+      136,  136,  602,  138,  138,  613,  603,  641,  139,  140,
+      139,  720,  139,  578,  578,  578,  578,  139,  139,  140,
+      646,  140,  141,  140,  612,  141,  609,  865,  140,  141,
+      864,  631,  141,  630,  141,  614,  141,  143,  143,  863,
+      657,  141,  718,  862,  144,  636,  632,  861,  143,  702,
+      143,  659,  143,  638,  144,  145,  144,  143,  144,  144,
+      860,  146,  144,  144,  639,  145,  613,  145,  641,  145,
+      148,  146,  147,  146,  145,  146,  644,  146,  631,  145,
+      146,  646,  147,  148,  147,  630,  147,  647,  662,  149,
 
-      626,  145,  653,  145,  652,  146,  147,  146,  145,  146,
-      597,  147,  148,  595,  146,  598,  147,  610,  147,  621,
-      147,  619,  148,  149,  148,  147,  148,  636,  612,  151,
-      647,  148,  646,  149,  644,  149,  151,  149,  618,  151,
-      616,  151,  149,  151,  155,  152,  152,  624,  151,  152,
-      563,  563,  563,  563,  155,  152,  155,  152,  155,  152,
-      626,  159,  155,  155,  152,  159,  159,  159,  159,  159,
-      159,  159,  159,  160,  627,  628,  635,  160,  160,  160,
-      160,  160,  160,  160,  160,  183,  183,  183,  183,  183,
-      183,  183,  183,  186,  188,  189,  641,  188,  624,  633,
+      718,  147,  578,  148,  149,  148,  657,  148,  632,  149,
+      150,  149,  148,  149,  702,  638,  151,  659,  149,  859,
+      150,  858,  150,  648,  150,  857,  151,  153,  151,  150,
+      151,  664,  856,  639,  153,  151,  665,  153,  644,  153,
+      157,  153,  670,  154,  154,  855,  153,  154,  662,  854,
+      157,  706,  157,  154,  157,  154,  647,  154,  157,  157,
+      667,  673,  154,  160,  160,  160,  160,  187,  187,  187,
+      187,  187,  187,  187,  187,  648,  671,  160,  160,  160,
+      160,  160,  160,  160,  160,  161,  687,  664,  665,  161,
+      161,  161,  161,  161,  161,  161,  161,  162,  670,  672,
 
-      629,  645,  680,  649,  188,  189,  188,  189,  188,  189,
-      190,  191,  637,  188,  189,  564,  564,  564,  564,  642,
-      190,  191,  190,  191,  190,  191,  628,  625,  623,  190,
-      191,  635,  627,  676,  648,  640,  186,  186,  186,  186,
-      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
-      186,  186,  186,  186,  186,  186,  186,  186,  192,  645,
-      643,  649,  680,  622,  650,  620,  194,  637,  192,  195,
-      192,  192,  192,  194,  642,  656,  194,  192,  194,  195,
-      194,  195,  196,  195,  640,  194,  655,  676,  195,  648,
-      197,  617,  196,  564,  196,  607,  196,  692,  198,  196,
+      679,  162,  162,  162,  162,  162,  162,  162,  162,  190,
+      192,  193,  706,  192,  853,  852,  851,  673,  730,  667,
+      192,  193,  192,  193,  192,  193,  194,  195,  680,  192,
+      193,  615,  615,  615,  615,  671,  194,  195,  194,  195,
+      194,  195,  681,  850,  687,  194,  195,  694,  849,  689,
+      679,  672,  693,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  196,  848,  730,  686,  847,
+      680,  846,  692,  198,  708,  196,  199,  196,  196,  196,
+      198,  695,  681,  198,  196,  198,  199,  198,  199,  200,
 
-      197,  196,  197,  665,  197,  651,  199,  657,  198,  197,
-      198,  643,  198,  199,  198,  650,  199,  198,  199,  200,
-      199,  599,  599,  599,  599,  199,  656,  201,  601,  200,
-      202,  200,  592,  200,  670,  655,  200,  201,  200,  201,
-      202,  201,  202,  591,  202,  588,  201,  202,  202,  202,
-      203,  203,  204,  692,  665,  204,  657,  662,  203,  668,
-      651,  203,  204,  203,  204,  203,  204,  205,  585,  690,
-      203,  204,  669,  206,  580,  671,  682,  205,  685,  205,
-      205,  205,  568,  206,  207,  206,  205,  206,  556,  670,
-      208,  700,  206,  208,  207,  207,  207,  686,  207,  599,
+      199,  689,  198,  694,  693,  199,  711,  201,  845,  200,
+      615,  200,  844,  200,  843,  202,  200,  201,  200,  201,
+      712,  201,  842,  203,  721,  202,  201,  202,  686,  202,
+      203,  202,  692,  203,  202,  203,  204,  203,  841,  723,
+      708,  695,  203,  840,  205,  839,  204,  206,  204,  838,
+      204,  837,  836,  204,  205,  204,  205,  206,  205,  206,
+      835,  206,  711,  205,  206,  206,  206,  207,  207,  208,
+      712,  834,  208,  833,  721,  207,  832,  831,  207,  208,
+      207,  208,  207,  208,  209,  830,  829,  207,  208,  723,
+      210,  828,  827,  826,  209,  825,  209,  209,  209,  824,
 
-      208,  209,  208,  207,  208,  551,  662,  210,  668,  208,
-      210,  209,  547,  209,  209,  209,  690,  210,  211,  210,
-      209,  210,  515,  669,  671,  512,  210,  693,  211,  212,
-      211,  682,  211,  685,  505,  211,  500,  211,  467,  212,
-      212,  212,  215,  212,  456,  695,  686,  447,  212,  700,
-      216,  339,  215,  217,  215,  264,  215,  263,  262,  215,
-      216,  215,  216,  217,  216,  217,  217,  217,  218,  216,
-      261,  219,  217,  258,  220,  255,  693,  220,  218,  193,
-      218,  219,  218,  219,  220,  219,  220,  218,  220,  219,
-      219,  221,  187,  220,  695,  181,  222,  179,  177,  221,
+      210,  211,  210,  209,  210,  823,  822,  212,  821,  210,
+      212,  211,  211,  211,  820,  211,  819,  212,  213,  212,
+      211,  212,  818,  817,  214,  816,  212,  214,  213,  815,
+      213,  213,  213,  814,  214,  215,  214,  213,  214,  813,
+      812,  811,  810,  214,  809,  215,  216,  215,  808,  215,
+      807,  806,  215,  805,  215,  804,  216,  216,  216,  219,
+      216,  803,  802,  801,  800,  216,  799,  220,  798,  219,
+      221,  219,  797,  219,  796,  795,  219,  220,  219,  220,
+      221,  220,  221,  221,  221,  222,  220,  794,  223,  221,
+      793,  224,  792,  791,  224,  222,  790,  222,  223,  222,
 
-      175,  170,  223,  168,  163,  157,  222,  105,  222,  221,
-      222,  221,  223,  221,  223,  222,  223,  224,  221,   97,
-      226,  223,   94,  226,   92,   91,   89,  224,   87,  224,
-      226,  224,  226,   86,  226,  227,  224,   85,  227,  226,
-       82,  228,   68,   65,   62,  227,   61,  227,  228,  227,
-       58,  228,  230,  228,  227,  228,   57,   52,   31,   27,
-      228,   22,  230,  231,  230,   21,  230,   18,   17,  232,
-      230,  230,    0,  231,    0,  231,    0,  231,    0,  232,
-      233,  232,  231,  232,    0,    0,  232,    0,  232,    0,
-      233,  234,  233,    0,  233,    0,    0,  233,    0,  233,
+      223,  224,  223,  224,  222,  224,  223,  223,  225,  226,
+      224,  789,  788,  787,  786,  785,  784,  225,  783,  226,
+      227,  226,  782,  226,  781,  780,  779,  225,  226,  225,
+      227,  225,  227,  228,  227,  778,  225,  777,  776,  227,
+      775,  230,  774,  228,  230,  228,  773,  228,  772,  771,
+      770,  230,  228,  230,  231,  230,  769,  231,  768,  767,
+      230,  766,  232,  765,  231,  234,  231,  764,  231,  232,
+      763,  762,  232,  231,  232,  234,  232,  234,  235,  234,
+      761,  232,  760,  234,  234,  759,  236,  758,  235,  757,
+      235,  756,  235,  755,  237,  754,  236,  235,  236,  753,
 
-        0,  234,  236,  234,    0,  234,    0,  237,  237,    0,
-      234,  234,  236,    0,  236,    0,  236,    0,  237,  238,
-      237,  236,  237,    0,    0,  239,    0,  237,    0,  238,
-        0,  238,    0,  238,    0,  239,    0,  239,  238,  239,
-      240,  241,    0,  240,  239,    0,    0,    0,  241,    0,
-      240,  241,  240,  241,  240,  241,  242,    0,    0,  240,
-      241,    0,    0,    0,    0,    0,  242,  243,  242,    0,
-      242,    0,    0,  244,  242,  242,    0,  243,    0,  243,
-        0,  243,    0,  244,  243,  244,  243,  244,  245,    0,
-      244,  245,  244,    0,  246,    0,    0,  246,  245,    0,
+      236,  752,  238,  236,  237,  236,  237,  751,  237,  750,
+      749,  237,  238,  237,  238,  240,  238,  241,  241,  748,
+      747,  238,  238,  746,  745,  240,  242,  240,  241,  240,
+      241,  744,  241,  743,  240,  742,  242,  241,  242,  243,
+      242,  740,  739,  738,  736,  242,  735,  244,  734,  243,
+      244,  243,  733,  243,  731,  245,  729,  244,  243,  244,
+      728,  244,  245,  246,  727,  245,  244,  245,  726,  245,
+      725,  724,  722,  246,  245,  246,  247,  246,  717,  716,
+      715,  246,  246,  714,  248,  713,  247,  710,  247,  709,
+      247,  705,  704,  247,  248,  247,  248,  249,  248,  703,
 
-      245,    0,  245,    0,  246,  248,  246,  245,  246,    0,
-        0,    0,    0,  246,    0,  248,  249,  248,  248,  248,
-      248,    0,  250,    0,  248,  248,  249,    0,  249,  250,
-      249,    0,  254,    0,  249,  249,    0,    0,  254,  250,
-      270,  250,  254,  250,  254,    0,  254,    0,  250,    0,
-      270,  254,  270,  271,  270,    0,    0,    0,    0,  270,
-      271,    0,    0,  271,  272,  271,    0,  271,    0,    0,
-      273,    0,  271,    0,  272,  272,  272,    0,  272,    0,
-      273,  274,  273,  272,  273,    0,    0,  275,    0,  273,
-      275,  274,    0,  274,    0,  274,    0,  275,    0,  275,
+      249,  248,  701,  248,  699,  250,  698,  249,  250,  249,
+      697,  249,  696,  252,  691,  250,  249,  250,  688,  250,
+      685,  684,  254,  252,  250,  252,  252,  252,  252,  253,
+      254,  677,  252,  252,  676,  675,  674,  669,  668,  253,
+      254,  253,  254,  253,  254,  258,  666,  253,  253,  254,
+      663,  258,  655,  651,  650,  258,  649,  258,  645,  258,
+      260,  260,  260,  260,  258,  643,  642,  640,  261,  261,
+      261,  261,  637,  627,  260,  260,  260,  260,  260,  260,
+      260,  260,  261,  261,  261,  261,  261,  261,  261,  261,
+      276,  277,  621,  619,  617,  608,  607,  604,  277,  601,
 
-      274,  275,  276,  276,  277,  277,  275,    0,    0,    0,
-        0,    0,    0,  276,  277,  276,  277,  276,  277,  278,
-        0,    0,  276,  277,    0,  274,    0,  279,    0,  278,
-        0,  278,    0,  278,    0,  280,  278,  279,  278,  279,
-      279,  279,    0,    0,    0,  280,  279,  280,  282,  280,
-      281,  281,    0,  280,  280,    0,    0,    0,  282,  283,
-      282,  281,  282,  281,    0,  281,    0,  282,    0,  283,
-      281,  283,  284,  283,  284,  285,    0,  285,  283,    0,
-        0,    0,  284,    0,  284,  285,  284,  285,    0,  285,
-      286,  284,    0,  286,  285,    0,  287,    0,    0,    0,
+      276,  277,  276,  277,  276,  277,  278,  596,  584,  276,
+      277,  580,  279,  579,  570,  565,  278,  278,  278,  561,
+      278,  527,  279,  280,  279,  278,  279,  524,  517,  281,
+      512,  279,  281,  280,  479,  280,  478,  280,  477,  281,
+      466,  281,  280,  281,  282,  282,  283,  283,  281,  457,
+      414,  413,  347,  346,  345,  282,  283,  282,  283,  282,
+      283,  284,  270,  269,  282,  283,  268,  280,  267,  285,
+      264,  284,  263,  284,  262,  284,  259,  286,  284,  285,
+      284,  285,  285,  285,  197,  191,  185,  286,  285,  286,
+      288,  286,  287,  287,  183,  286,  286,  181,  179,  174,
 
-      286,    0,  286,    0,  286,    0,  287,  288,  287,  286,
-      287,    0,    0,  289,  288,  287,    0,  288,    0,  288,
-        0,  288,    0,  289,  290,  289,  288,  289,    0,  289,
-        0,    0,  289,    0,  290,    0,  290,    0,  290,  291,
-      290,    0,  291,  290,    0,  292,    0,    0,    0,  291,
-        0,  291,    0,  291,    0,  292,  295,  292,  291,  292,
-        0,    0,  296,    0,  292,    0,  295,    0,  295,    0,
-      295,    0,  296,    0,  296,  295,  296,  297,  298,    0,
-      296,  296,    0,    0,  297,    0,    0,  297,  298,  297,
-      298,  297,  298,  299,  298,    0,  297,  298,  300,  300,
+      288,  289,  288,  287,  288,  287,  172,  287,  168,  288,
+      166,  289,  287,  289,  290,  289,  290,  291,  165,  291,
+      289,  159,  107,   99,  290,   96,  290,  291,  290,  291,
+       94,  291,  292,  290,   93,  292,  291,   91,  293,   89,
+       88,   87,  292,   84,  292,   70,  292,   67,  293,  294,
+      293,  292,  293,   64,   63,  295,  294,  293,   62,  294,
+       59,  294,   58,  294,   57,  295,  296,  295,  294,  295,
+       52,  295,   31,   27,  295,   22,  296,   21,  296,   18,
+      296,  297,  296,   17,  297,  296,    0,  298,    0,    0,
+        0,  297,    0,  297,    0,  297,    0,  298,  301,  298,
 
-      295,    0,    0,  299,    0,  299,    0,  299,    0,  300,
-        0,  300,  299,  300,  301,  300,    0,  302,  300,  301,
-        0,    0,    0,    0,  301,    0,  301,  302,  301,    0,
-      301,    0,    0,  301,    0,  303,    0,  302,    0,  302,
-        0,  302,    0,  304,    0,  303,  302,  303,    0,  303,
-        0,    0,  303,  304,  303,  304,    0,  304,  306,  306,
-        0,  307,  304,    0,    0,    0,    0,    0,  306,    0,
-      306,  307,  306,  307,  308,  307,    0,  306,    0,  307,
-      307,  311,  310,    0,  308,  310,  308,  308,  308,    0,
-        0,    0,  310,  308,  310,    0,  310,  311,    0,    0,
+      297,  298,    0,    0,  302,    0,  298,    0,  301,    0,
+      301,    0,  301,    0,  302,    0,  302,  301,  302,  303,
+      304,    0,  302,  302,    0,    0,  303,    0,    0,  303,
+      304,  303,  304,  303,  304,  305,  304,    0,  303,  304,
+      306,  306,  301,    0,    0,  305,    0,  305,  308,  305,
+        0,  306,    0,  306,  305,  306,  307,  306,    0,  308,
+      306,  307,    0,    0,    0,    0,  307,  309,  307,  308,
+      307,  308,  307,  308,    0,  307,    0,  309,  308,  309,
+      310,  309,    0,    0,  309,    0,  309,    0,  312,  312,
+      310,  313,  310,    0,  310,    0,    0,    0,  312,  310,
 
-      312,  310,    0,  312,    0,    0,    0,  311,    0,  311,
-      312,  311,  312,    0,  312,  315,  311,  313,  313,  312,
-        0,  316,    0,    0,    0,  315,    0,  315,  313,  315,
-      313,  316,  313,  316,  315,  316,    0,  313,  317,  316,
-      316,  317,    0,    0,  318,    0,    0,    0,  317,    0,
-      317,    0,  317,    0,  318,  319,  318,  317,  318,    0,
-      320,  320,    0,  318,    0,  319,    0,  319,    0,  319,
-        0,  320,  321,  320,  319,  320,    0,    0,  322,  324,
-      320,    0,  321,    0,  321,    0,  321,    0,  322,  323,
-      322,  321,  322,    0,    0,  324,    0,  322,    0,  323,
+      312,  313,  312,  313,  314,  313,    0,  312,  317,  313,
+      313,    0,  316,    0,  314,  316,  314,  314,  314,    0,
+        0,    0,  316,  314,  316,  317,  316,    0,    0,    0,
+        0,  316,    0,  318,    0,  317,  318,  317,    0,  317,
+      319,  319,    0,  318,  317,  318,    0,  318,    0,  321,
+        0,  319,  318,  319,    0,  319,    0,  322,    0,  321,
+      319,  321,    0,  321,    0,    0,    0,  322,  321,  322,
+      323,  322,    0,  323,    0,  322,  322,    0,  324,    0,
+      323,  325,  323,    0,  323,    0,    0,    0,  324,  323,
+      324,  325,  324,  325,    0,  325,  327,  324,  326,  326,
 
-        0,  323,    0,  323,    0,  324,    0,  324,  323,  324,
-      326,  327,    0,    0,  324,    0,  321,    0,    0,    0,
-      326,  327,  326,  327,  326,  327,    0,  329,  328,  326,
-      327,  328,    0,    0,    0,    0,    0,  329,  328,  329,
-      328,  329,  328,    0,  330,  334,  329,  328,    0,    0,
-        0,    0,    0,    0,  330,  334,  330,  334,  330,  334,
-        0,  330,  329,  330,  334,  338,    0,  341,    0,  338,
-      338,  338,  338,  338,  338,  338,  338,  341,    0,  341,
-        0,  341,  342,  342,    0,  341,  341,  343,  343,    0,
-        0,    0,  342,    0,  342,    0,  342,    0,  343,  344,
+      325,    0,  328,  330,    0,    0,  327,    0,  327,  326,
+      327,  326,  328,  326,  328,  327,  328,  329,  326,    0,
+      330,  328,    0,  332,    0,    0,    0,  329,    0,  329,
+      330,  329,  330,  332,  330,  332,  329,  332,  333,  330,
+      327,  334,  332,    0,  334,    0,    0,    0,  333,  335,
+      333,  334,  333,  334,    0,  334,    0,  333,    0,  335,
+      334,  335,  336,  335,    0,    0,    0,    0,  335,    0,
+        0,    0,  336,  340,  336,    0,  336,    0,    0,  336,
+        0,  336,    0,  340,  335,  340,    0,  340,  341,  341,
+      341,  341,  340,    0,    0,    0,    0,    0,    0,    0,
 
-      343,  342,  343,    0,  346,  346,    0,  343,    0,  344,
-        0,  344,    0,  344,    0,  346,    0,  346,  344,  346,
-      347,  347,    0,  348,  346,    0,  348,    0,    0,    0,
-      347,  349,  347,  348,  347,  348,    0,  348,    0,  347,
-        0,  349,  348,  349,  350,  349,    0,    0,    0,    0,
-      349,    0,  351,    0,  350,    0,  350,    0,  350,    0,
-      352,    0,  351,  350,  351,    0,  351,  352,  351,    0,
-      352,  351,  352,  353,  352,    0,    0,    0,    0,  352,
-        0,  354,    0,  353,  354,  353,    0,  353,  354,    0,
-        0,  354,  353,  354,  355,  354,  355,    0,    0,    0,
+        0,    0,  341,  341,  341,  341,  341,  341,  341,  341,
+      342,  342,  342,  342,    0,    0,    0,    0,    0,    0,
+      342,    0,    0,    0,  342,  342,  342,  342,  342,  342,
+      342,  342,  343,  343,  343,  343,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  343,  343,  343,  343,
+      343,  343,  343,  343,  344,    0,  349,    0,  344,  344,
+      344,  344,  344,  344,  344,  344,  349,    0,  349,    0,
+      349,  350,  350,    0,  349,  349,    0,    0,    0,    0,
+        0,  350,    0,  350,  352,  350,  351,  351,    0,  342,
+      350,    0,    0,    0,  352,    0,  352,  351,  352,  351,
 
-      354,    0,  356,    0,  355,  356,  355,    0,  355,  356,
-      357,    0,  356,  355,  356,    0,  356,    0,  358,    0,
-      357,  356,  357,    0,  357,    0,  357,    0,  358,  357,
-      358,    0,  358,  359,  359,    0,  358,  358,    0,  360,
-        0,    0,    0,  359,    0,  359,    0,  359,    0,  360,
-      361,  360,  359,  360,    0,    0,  362,  360,  360,    0,
-      361,    0,  361,    0,  361,    0,  362,  361,  362,  361,
-      362,  363,  367,    0,    0,  362,    0,    0,    0,  367,
-        0,  363,  367,  363,  367,  363,  367,    0,    0,  369,
-      363,  367,  368,  368,    0,  368,    0,    0,    0,  369,
+        0,  351,    0,  352,  354,  354,  351,    0,  355,  355,
+        0,  356,    0,    0,  356,  354,    0,  354,  355,  354,
+      355,  356,  355,  356,  354,  356,  357,  355,    0,  358,
+      356,    0,    0,    0,    0,    0,  357,  359,  357,  358,
+      357,  358,    0,  358,    0,  357,    0,  359,  358,  359,
+      360,  359,    0,  359,    0,    0,  359,  360,  361,    0,
+      360,    0,  360,    0,  360,    0,    0,    0,  361,  360,
+      361,  362,  361,    0,  362,    0,    0,  361,  362,    0,
+        0,  362,  363,  362,  363,  362,    0,    0,  364,    0,
+      362,  364,  363,    0,  363,  364,  363,    0,  364,  365,
 
-        0,  369,  368,  369,  368,    0,  368,  369,  369,  371,
-      370,  368,  370,    0,    0,    0,    0,    0,    0,  371,
-      370,  371,  370,  371,  370,  372,    0,    0,  371,  370,
-        0,  373,    0,    0,  373,  372,    0,  372,    0,  372,
-      375,  373,  374,  373,  372,  373,    0,  376,  375,    0,
-      373,    0,  374,    0,  374,    0,  374,    0,  375,  374,
-      375,  374,  375,  376,    0,    0,  378,  375,    0,  379,
-        0,    0,    0,  376,    0,  376,  378,  376,  378,  379,
-      378,  379,  376,  379,  378,  378,  380,  382,  379,    0,
-        0,    0,    0,    0,    0,    0,  380,  382,  380,  382,
+      364,  363,  364,    0,    0,    0,    0,  364,    0,  365,
+      366,  365,    0,  365,    0,  365,    0,    0,  365,    0,
+      366,    0,  366,    0,  366,  367,  367,    0,  366,  366,
+        0,  368,    0,    0,    0,  367,    0,  367,    0,  367,
+        0,  368,  369,  368,  367,  368,    0,    0,  370,  368,
+      368,    0,  369,    0,  369,    0,  369,    0,  370,  369,
+      370,  369,  370,  371,  375,    0,    0,  370,    0,    0,
+        0,  375,    0,  371,  375,  371,  375,  371,  375,    0,
+        0,  377,  371,  375,  376,  376,    0,  376,    0,    0,
+        0,  377,    0,  377,  376,  377,  376,    0,  376,  377,
 
-      380,  382,  384,  382,    0,  380,  382,    0,  385,    0,
-        0,    0,  384,    0,  384,    0,  384,    0,  385,    0,
-      385,  384,  385,  387,  388,    0,  385,  385,    0,    0,
-      387,    0,    0,  387,  388,  387,  388,  387,  388,  389,
-      390,    0,  387,  388,  389,    0,    0,    0,    0,  389,
-      390,  389,  390,  389,  390,  394,    0,    0,  389,  390,
-        0,  395,  390,    0,  395,  394,    0,  394,    0,  394,
-        0,  395,  396,  395,  394,  395,    0,    0,    0,    0,
-      395,    0,  396,  398,  396,    0,  396,    0,  396,  406,
-        0,  396,    0,  398,    0,  398,    0,  398,    0,  406,
+      377,  379,  378,  376,  378,    0,    0,    0,    0,    0,
+        0,  379,  378,  379,  378,  379,  378,  380,    0,    0,
+      379,  378,    0,  381,    0,    0,  381,  380,    0,  380,
+        0,  380,    0,  381,  382,  381,  380,  381,  383,    0,
+        0,  384,  381,    0,  382,    0,  382,  383,  382,    0,
+        0,  382,    0,  382,    0,  386,    0,  383,  384,  383,
+        0,  383,    0,    0,    0,  386,  383,  386,  384,  386,
+      384,  387,  384,  386,  386,    0,    0,  384,    0,  388,
+        0,  387,    0,  387,    0,  387,    0,  390,    0,  388,
+      387,  388,    0,  388,    0,  392,    0,  390,  388,  390,
 
-        0,  406,  398,  406,  407,  407,    0,    0,  406,    0,
-        0,  408,    0,    0,    0,  407,    0,  407,    0,  407,
-        0,  408,  410,  408,  407,  408,    0,  398,  411,  408,
-      408,    0,  410,    0,  410,    0,  410,    0,  411,  412,
-      411,  410,  411,    0,    0,  413,  411,  411,  413,  412,
-        0,  412,    0,  412,    0,  413,    0,  413,  412,  413,
-      414,  414,  415,    0,  413,    0,    0,    0,    0,    0,
-        0,  414,  415,  414,  415,  414,  415,  416,    0,    0,
-      414,  415,    0,    0,    0,    0,    0,  416,  417,  416,
-      417,  416,    0,    0,  418,  416,  416,    0,  417,    0,
+        0,  390,    0,  390,    0,  392,  390,  392,  393,  392,
+        0,    0,    0,    0,  392,    0,    0,    0,  393,    0,
+      393,  395,  393,    0,  396,    0,  393,  393,  395,    0,
+        0,  395,  397,  395,  396,  395,  396,  397,  396,    0,
+      395,    0,  397,  396,  397,  398,  397,    0,    0,    0,
+        0,  397,    0,    0,    0,  398,  402,  398,    0,  398,
+        0,    0,  403,    0,  398,  403,  402,  398,  402,    0,
+      402,    0,  403,  404,  403,  402,  403,    0,    0,    0,
+        0,  403,    0,  404,  406,  404,    0,  404,    0,  404,
+        0,    0,  404,    0,  406,    0,  406,    0,  406,  411,
 
-      417,    0,  417,    0,  418,    0,  418,  417,  418,    0,
-        0,  419,  418,  418,  419,    0,    0,  420,    0,  420,
-        0,  419,    0,  419,    0,  419,    0,  420,  421,  420,
-      419,  420,    0,  422,  422,    0,  420,    0,  421,    0,
-      421,    0,  421,    0,  422,  423,  422,  421,  422,    0,
-        0,  424,    0,  422,    0,  423,    0,  423,  424,  423,
-        0,  424,  425,  424,  423,  424,    0,    0,  426,    0,
-      424,    0,  425,    0,  425,  426,  425,    0,  426,  425,
-      426,  425,  426,  427,  427,  431,    0,  426,    0,  431,
-        0,    0,    0,    0,  427,  431,  427,  431,  427,  431,
+      411,  411,  411,  406,    0,    0,    0,    0,    0,    0,
+        0,  416,    0,  411,  411,  411,  411,  411,  411,  411,
+      411,  416,    0,  416,  418,  416,  417,  417,  406,    0,
+      416,    0,    0,    0,  418,  420,  418,  417,  418,  417,
+        0,  417,  418,  418,    0,  420,  417,  420,  421,  420,
+        0,  422,    0,    0,  420,    0,    0,    0,  421,    0,
+      421,  422,  421,  422,    0,  422,  421,  421,  423,    0,
+      422,  423,    0,  424,  424,    0,    0,    0,  423,    0,
+      423,    0,  423,    0,  424,  425,  424,  423,  424,    0,
+        0,  426,    0,  424,    0,  425,    0,  425,    0,  425,
 
-      432,    0,    0,  427,  431,    0,  433,  432,  433,    0,
-      432,    0,  432,    0,  432,    0,  433,  434,  433,  432,
-      433,    0,    0,  435,    0,  433,  435,  434,    0,  434,
-        0,  434,    0,  435,  434,  435,  434,  435,  436,  436,
-        0,    0,  435,    0,  437,  437,    0,    0,  436,    0,
-      436,    0,  436,    0,  437,  438,  437,  436,  437,    0,
-        0,    0,    0,  437,    0,  438,    0,  438,    0,  438,
-      439,  438,    0,  439,  438,    0,  440,    0,    0,    0,
-      439,    0,  439,    0,  439,    0,  440,  443,  440,  439,
-      440,    0,    0,  440,    0,  440,    0,  443,    0,  443,
+        0,  426,    0,  426,  425,  426,  427,    0,  427,  426,
+      426,    0,  428,    0,    0,    0,  427,    0,  427,    0,
+      427,    0,  428,    0,  428,  427,  428,    0,    0,  429,
+      428,  428,  429,    0,    0,  430,    0,  430,    0,  429,
+        0,  429,    0,  429,    0,  430,  431,  430,  429,  430,
+        0,  432,  432,    0,  430,    0,  431,    0,  431,    0,
+      431,    0,  432,  433,  432,  431,  432,    0,    0,  434,
+        0,  432,    0,  433,    0,  433,  434,  433,    0,  434,
+      435,  434,  433,  434,    0,    0,  436,    0,  434,    0,
+      435,    0,  435,  436,  435,    0,  436,  435,  436,  435,
 
-      446,  443,  444,  444,    0,    0,  443,    0,    0,    0,
-      446,  448,  446,  444,  446,  444,    0,  444,    0,  446,
-        0,  448,  444,  448,  449,  448,    0,  449,    0,  448,
-      448,    0,  451,    0,  449,    0,  449,    0,  449,    0,
-        0,    0,  451,  449,  451,    0,  451,  452,  452,    0,
-      453,  451,  451,  454,    0,    0,    0,  452,    0,  452,
-      453,  452,  453,  454,  453,  454,  452,  454,  458,  453,
-        0,  459,  454,    0,    0,    0,    0,    0,  458,    0,
-      458,  459,  458,  459,    0,  459,    0,  458,  459,  466,
-      459,  468,    0,  466,  466,  466,  466,  466,  466,  466,
+      436,  437,  437,  441,    0,  436,    0,  441,    0,    0,
+        0,    0,  437,  441,  437,  441,  437,  441,  442,    0,
+        0,  437,  441,    0,  443,  442,  443,    0,  442,    0,
+      442,    0,  442,    0,  443,  444,  443,  442,  443,    0,
+        0,  445,    0,  443,  445,  444,    0,  444,    0,  444,
+        0,  445,  444,  445,  444,  445,  446,  446,    0,    0,
+      445,    0,  447,  447,    0,    0,  446,    0,  446,    0,
+      446,    0,  447,  448,  447,  446,  447,    0,    0,    0,
+        0,  447,    0,  448,    0,  448,    0,  448,  449,  448,
+        0,  449,  448,    0,  450,    0,    0,    0,  449,    0,
 
-      466,  468,    0,  468,  469,  468,    0,  471,    0,  468,
-      468,  469,    0,    0,  469,    0,  469,  471,  469,  471,
-        0,  471,  472,  469,    0,  472,  471,    0,  473,    0,
-        0,    0,  472,    0,  472,    0,  472,    0,  473,  474,
-      473,  472,  473,    0,    0,  475,  474,  473,    0,  474,
-        0,  474,  475,  474,    0,  475,  476,  475,  474,  475,
-        0,    0,  477,    0,  475,    0,  476,    0,  476,    0,
-      476,    0,  477,  478,  477,  476,  477,    0,    0,    0,
-      478,  477,    0,  478,  479,  478,  479,  478,    0,    0,
-      480,    0,  478,    0,  479,    0,  479,    0,  479,    0,
+      449,    0,  449,    0,  450,  453,  450,  449,  450,    0,
+        0,  450,    0,  450,    0,  453,    0,  453,  456,  453,
+      454,  454,    0,    0,  453,    0,    0,    0,  456,  458,
+      456,  454,  456,  454,    0,  454,    0,  456,    0,  458,
+      454,  458,  459,  458,    0,  459,    0,  458,  458,    0,
+      461,    0,  459,    0,  459,    0,  459,    0,    0,    0,
+      461,  459,  461,    0,  461,  462,  462,    0,  463,  461,
+      461,  464,    0,    0,    0,  462,    0,  462,  463,  462,
+      463,  464,  463,  464,  462,  464,  468,  463,    0,  469,
+      464,    0,    0,    0,    0,    0,  468,    0,  468,  469,
 
-      480,  481,  480,  479,  480,    0,  481,  482,    0,  480,
-        0,  481,    0,  481,    0,  481,    0,  482,  483,  482,
-      481,  482,    0,    0,    0,  482,  482,    0,  483,  484,
-      483,    0,  483,    0,    0,  485,  483,  483,    0,  484,
-        0,  484,    0,  484,    0,  485,  486,  485,  484,  485,
-        0,    0,  490,    0,  485,    0,  486,    0,  486,  490,
-      486,    0,  490,  491,  490,  486,  490,    0,    0,    0,
-        0,  490,    0,  491,  492,  491,    0,  491,    0,    0,
-      493,  491,  491,    0,  492,    0,  492,    0,  492,    0,
-      493,  494,  493,  492,  493,    0,    0,  495,    0,  493,
+      468,  469,    0,  469,    0,  468,  469,    0,  469,  475,
+      475,  475,  475,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  475,  475,  475,  475,  475,  475,  475,
+      475,  476,    0,  480,    0,  476,  476,  476,  476,  476,
+      476,  476,  476,  480,    0,  480,  481,  480,    0,  483,
+        0,  480,  480,  481,    0,    0,  481,    0,  481,  483,
+      481,  483,    0,  483,  484,  481,    0,  484,  483,    0,
+      485,    0,    0,    0,  484,    0,  484,    0,  484,    0,
+      485,  486,  485,  484,  485,    0,    0,  487,  486,  485,
+        0,  486,    0,  486,  487,  486,    0,  487,  488,  487,
 
-      495,  494,    0,  494,    0,  494,    0,  495,  494,  495,
-      494,  495,  496,  497,    0,    0,  495,    0,    0,    0,
-        0,    0,  496,  497,  496,  497,  496,  497,  498,  498,
-      496,  496,  497,    0,  499,    0,    0,    0,  498,    0,
-      498,    0,  498,    0,  499,  502,  499,  498,  499,    0,
-        0,  504,    0,  499,    0,  502,    0,  502,    0,  502,
-        0,  504,  506,  504,  502,  504,    0,    0,    0,    0,
-      504,    0,  506,  507,  506,    0,  506,    0,  499,  509,
-        0,  506,  509,  507,    0,  507,    0,  507,    0,  509,
-        0,  509,  507,  509,  510,    0,    0,  510,  509,  514,
+      486,  487,    0,    0,  489,    0,  487,    0,  488,    0,
+      488,    0,  488,    0,  489,  490,  489,  488,  489,    0,
+        0,    0,  490,  489,    0,  490,  491,  490,  491,  490,
+        0,    0,  492,    0,  490,    0,  491,    0,  491,    0,
+      491,    0,  492,  493,  492,  491,  492,    0,  493,  494,
+        0,  492,    0,  493,    0,  493,    0,  493,    0,  494,
+      495,  494,  493,  494,    0,    0,    0,  494,  494,    0,
+      495,  496,  495,    0,  495,    0,    0,  497,  495,  495,
+        0,  496,    0,  496,    0,  496,    0,  497,  498,  497,
+      496,  497,    0,    0,  502,    0,  497,    0,  498,    0,
 
-      514,    0,    0,    0,  510,    0,  510,    0,  510,    0,
-      514,  522,  514,  510,  514,    0,    0,    0,  522,  514,
-        0,  522,    0,  522,    0,  522,  523,  523,    0,    0,
-      522,    0,  525,    0,    0,    0,  523,    0,  523,    0,
-      523,    0,  525,  526,  525,  523,  525,    0,  525,    0,
-        0,  525,    0,  526,  527,  526,    0,  526,    0,    0,
-      528,  526,  526,    0,  527,    0,  527,    0,  527,    0,
-      528,  529,  528,  527,  528,    0,  531,  530,    0,  528,
-        0,  529,    0,  529,  529,  529,    0,  530,    0,  530,
-      529,  530,  531,    0,    0,  532,  530,    0,  532,    0,
+      498,  502,  498,    0,  502,  503,  502,  498,  502,    0,
+        0,    0,    0,  502,    0,  503,  504,  503,    0,  503,
+        0,    0,  505,  503,  503,    0,  504,    0,  504,    0,
+      504,    0,  505,  506,  505,  504,  505,    0,    0,  507,
+        0,  505,  507,  506,    0,  506,    0,  506,    0,  507,
+      506,  507,  506,  507,  508,  509,    0,    0,  507,    0,
+        0,    0,    0,    0,  508,  509,  508,  509,  508,  509,
+      510,  510,  508,  508,  509,    0,  511,    0,    0,    0,
+      510,    0,  510,    0,  510,    0,  511,  514,  511,  510,
+      511,    0,    0,  516,    0,  511,    0,  514,    0,  514,
 
-        0,    0,  531,  533,  531,  532,  531,  532,    0,  532,
-        0,  531,    0,  533,  532,  533,  534,  533,    0,  535,
-        0,    0,  533,  534,    0,    0,  534,    0,  534,  535,
-      534,  535,    0,  535,  540,  534,    0,  540,  535,    0,
-      541,    0,    0,    0,  540,    0,  540,    0,  540,    0,
-      541,  542,  541,  540,  541,    0,    0,  543,    0,  541,
-        0,  542,    0,  542,    0,  542,    0,  543,  544,  543,
-      542,  543,    0,    0,  545,  544,  543,    0,  544,    0,
-      544,    0,  544,    0,  545,  549,  545,  544,  545,  553,
-        0,    0,  545,  545,    0,  549,    0,  549,    0,  549,
+        0,  514,    0,  516,  518,  516,  514,  516,    0,    0,
+        0,    0,  516,    0,  518,  519,  518,    0,  518,    0,
+      511,  521,    0,  518,  521,  519,    0,  519,    0,  519,
+        0,  521,    0,  521,  519,  521,  522,    0,    0,  522,
+      521,  526,  526,    0,    0,    0,  522,    0,  522,    0,
+      522,    0,  526,    0,  526,  522,  526,  532,  532,  532,
+      532,  526,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  532,  532,  532,  532,  532,  532,  532,  532,  536,
+      537,  537,    0,    0,    0,    0,  536,    0,    0,  536,
+      537,  536,  537,  536,  537,  539,    0,    0,  536,  537,
 
-        0,    0,  554,    0,  549,  553,    0,    0,  558,    0,
-        0,    0,  554,    0,  554,  553,  554,  553,  558,  553,
-      558,  554,  558,  566,  553,    0,    0,  558,    0,  567,
-        0,    0,    0,  566,    0,  566,  566,  566,    0,  567,
-      569,  567,  566,  567,    0,    0,  570,    0,  567,    0,
-      569,    0,  569,    0,  569,    0,  570,    0,  570,  569,
-      570,  571,  572,  570,  571,  570,    0,  572,    0,    0,
-        0,  571,  572,  571,  572,  571,  572,  573,    0,    0,
-      571,  572,    0,  575,    0,  575,    0,  573,    0,  573,
-        0,  573,    0,  575,  576,  575,  573,  575,    0,    0,
+        0,    0,    0,  540,    0,  539,  541,  539,    0,  539,
+        0,  539,    0,  540,  539,  540,  541,  540,  541,  542,
+      541,  540,  540,    0,    0,  541,  545,  543,    0,  542,
+        0,  542,    0,  542,    0,  544,    0,  543,  542,  543,
+      543,  543,    0,  545,    0,  544,  543,  544,    0,  544,
+        0,    0,    0,  545,  544,  545,  546,  545,    0,  546,
+        0,    0,  545,    0,  547,    0,  546,    0,  546,    0,
+      546,    0,  548,    0,  547,  546,  547,    0,  547,  548,
+      549,    0,  548,  547,  548,    0,  548,    0,    0,    0,
+      549,  548,  549,  554,  549,    0,  554,    0,    0,  549,
 
-      581,    0,  575,    0,  576,    0,  576,    0,  576,    0,
-      581,  582,  581,  576,  581,    0,  581,    0,    0,  581,
-        0,  582,  583,  582,  582,  582,    0,    0,  594,  583,
-      582,    0,  583,    0,  583,    0,  583,    0,  594,  602,
-      594,  583,  594,    0,    0,  603,    0,  594,    0,  602,
-        0,  602,    0,  602,    0,  603,    0,  603,  602,  603,
-      604,  605,  604,    0,  603,    0,    0,    0,    0,    0,
-      604,  605,  604,  605,  604,  605,  606,  608,    0,  604,
-      605,    0,    0,    0,    0,    0,  606,  608,  606,  608,
-      606,  608,  609,  606,    0,  606,  608,    0,  613,  609,
+        0,  555,    0,  554,  556,  554,    0,  554,    0,    0,
+        0,  555,  554,  555,  556,  555,  556,  557,  556,    0,
+      555,    0,    0,  556,    0,  558,    0,  557,  559,  557,
+        0,  557,  558,    0,    0,  558,  557,  558,  559,  558,
+      559,  563,  559,    0,  558,  567,  559,  559,    0,  568,
+        0,  563,    0,  563,    0,  563,    0,    0,    0,  568,
+      563,  568,  567,  568,    0,  572,    0,    0,  568,    0,
+        0,    0,  567,    0,  567,  572,  567,  572,    0,  572,
+        0,  567,    0,    0,  572,  577,  577,  577,  577,    0,
+        0,    0,    0,    0,    0,    0,    0,  582,    0,  577,
 
-        0,    0,  609,    0,  609,    0,  609,    0,  613,  614,
-      613,  609,  613,    0,    0,    0,    0,  613,    0,  614,
-      615,  614,    0,  614,    0,    0,  630,    0,  614,    0,
-      615,    0,  615,  615,  615,    0,  630,  631,  630,  615,
-      630,    0,    0,  632,    0,  630,    0,  631,    0,  631,
-        0,  631,    0,  632,  634,  632,  631,  632,    0,    0,
-        0,    0,  632,    0,  634,  638,  634,    0,  634,    0,
-        0,  639,  634,  634,    0,  638,    0,  638,    0,  638,
-        0,  639,  638,  639,  638,  639,  654,  658,    0,    0,
-      639,    0,    0,    0,    0,    0,  654,  658,  654,  658,
+      577,  577,  577,  577,  577,  577,  577,  582,  583,  582,
+      582,  582,    0,    0,  585,    0,  582,    0,  583,    0,
+      583,    0,  583,    0,  585,  586,  585,  583,  585,    0,
+        0,  587,    0,  585,  587,  586,    0,  586,    0,  586,
+        0,  587,  586,  587,  586,  587,  588,  589,    0,    0,
+      587,  588,    0,    0,    0,    0,  588,  589,  588,  589,
+      588,  589,  591,  592,  591,  588,  589,    0,    0,    0,
+        0,    0,  591,  592,  591,  592,  591,  592,  597,    0,
+        0,  591,  592,    0,    0,    0,  598,    0,  597,    0,
+      597,    0,  597,    0,  597,    0,  598,  597,  598,  598,
 
-      654,  658,  659,  674,    0,  654,  658,    0,    0,  654,
-        0,    0,  659,  674,  659,  674,  659,  674,    0,    0,
-        0,  659,  674,  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,
+      598,  599,  610,    0,    0,  598,    0,    0,  599,    0,
+        0,  599,  610,  599,  610,  599,  610,  622,  623,    0,
+      599,  610,    0,    0,    0,    0,    0,  622,  623,  622,
+      623,  622,  623,  624,  625,  624,  622,  623,    0,    0,
+        0,    0,    0,  624,  625,  624,  625,  624,  625,  626,
+      628,    0,  624,  625,    0,    0,    0,    0,    0,  626,
+      628,  626,  628,  626,  628,  629,  626,    0,  626,  628,
+        0,  633,  629,    0,    0,  629,    0,  629,    0,  629,
+        0,  633,  634,  633,  629,  633,    0,    0,    0,    0,
+      633,    0,  634,  635,  634,    0,  634,    0,    0,  652,
 
-      715,  715,  715,  715,  715,  715,  715,  716,  716,    0,
-        0,  716,    0,  716,    0,  716,  717,  717,    0,  717,
-      717,  718,  718,    0,  718,  718,  718,    0,  718,  718,
-      718,  718,  718,  719,  719,  719,    0,  719,  719,  719,
-      719,  719,  719,  719,  719,  720,  720,  720,  720,  720,
-      720,  720,  720,    0,  720,  720,  721,    0,    0,  721,
-      721,  721,  721,  721,  721,  721,  721,  722,    0,    0,
-      722,  722,  722,  722,  722,  722,  722,  722,  723,    0,
-        0,  723,    0,  723,  723,  723,  723,  723,  723,  724,
-      724,    0,  724,  724,  725,  725,    0,  725,  725,  726,
+        0,  634,    0,  635,    0,  635,  635,  635,    0,  652,
+      653,  652,  635,  652,    0,    0,  654,    0,  652,    0,
+      653,    0,  653,    0,  653,    0,  654,  656,  654,  653,
+      654,    0,    0,    0,    0,  654,    0,  656,  660,  656,
+        0,  656,    0,    0,  661,  656,  656,    0,  660,    0,
+      660,    0,  660,    0,  661,  660,  661,  660,  661,  678,
+      682,    0,    0,  661,    0,    0,    0,    0,    0,  678,
+      682,  678,  682,  678,  682,  683,  700,    0,  678,  682,
+        0,    0,  678,    0,    0,  683,  700,  683,  700,  683,
+      700,    0,    0,    0,  683,  700,  885,  885,  885,  885,
 
-        0,  726,  726,  727,  727,    0,  727,  727,  728,    0,
-      728,  728,  729,    0,  729,  729,  730,    0,  730,  730,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  732,  732,    0,  732,  732,  733,  733,    0,
-        0,    0,    0,  733,  734,  734,    0,    0,    0,    0,
-      734,  735,  735,    0,    0,    0,    0,  735,  736,  736,
-        0,    0,    0,    0,  736,  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,
+      885,  885,  885,  885,  885,  885,  885,  885,  885,  885,
+      885,  886,  886,  886,  886,  886,  886,  886,  886,  886,
+      886,  886,  886,  886,  886,  886,  887,  887,  887,  887,
+      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
+      887,  888,  888,  888,  888,  888,  888,  888,  888,  888,
+      888,  888,  888,  888,  888,  888,  889,  889,  889,  889,
+      889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
+      889,  890,  890,  890,  890,  890,  890,  890,  890,  890,
+      890,  890,  890,  890,  890,  890,  891,  891,  891,    0,
+      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
 
-      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
+      891,  892,  892,    0,    0,  892,    0,  892,    0,    0,
+        0,  892,  893,  893,    0,    0,    0,  893,  893,  894,
+      894,    0,  894,  894,  894,    0,  894,  894,    0,  894,
+      894,  894,  894,  894,  895,  895,  895,    0,  895,  895,
+      895,  895,  895,  895,  895,  895,  895,  895,  895,  896,
+      896,  896,  896,  896,  896,  896,  896,    0,  896,  896,
+      896,  896,  897,    0,    0,  897,  897,  897,  897,  897,
+      897,  897,  897,  897,  897,  898,    0,    0,  898,  898,
+      898,  898,  898,  898,  898,  898,  898,  898,  899,    0,
+        0,  899,    0,  899,  899,  899,  899,  899,  899,  899,
+
+      899,  900,  900,    0,    0,    0,  900,  900,  901,  901,
+        0,    0,    0,  901,  901,  902,    0,    0,    0,  902,
+      902,  903,  903,    0,    0,    0,  903,  903,  904,    0,
+        0,    0,  904,  904,  905,    0,    0,    0,  905,  905,
+      906,    0,    0,    0,  906,  906,  907,  907,  907,  907,
+      907,  907,  907,  907,  907,  907,  907,  907,  907,  907,
+      907,  908,  908,    0,    0,    0,  908,  908,  909,  909,
+        0,  909,  909,  909,    0,  909,  909,  909,    0,  909,
+      909,  909,  909,  910,  910,    0,  910,  910,  910,    0,
+      910,  910,  910,    0,  910,  910,  910,  910,  911,  911,
+
+        0,    0,    0,    0,  911,    0,    0,    0,    0,    0,
+        0,  911,  912,  912,    0,  912,  912,  912,    0,  912,
+      912,  912,  912,  912,  912,  912,  912,  913,  913,    0,
+      913,  913,  913,    0,  913,  913,  913,  913,  913,  913,
+      913,  913,  914,  914,    0,  914,  914,  914,    0,  914,
+      914,  914,  914,  914,  914,  914,  914,  915,  915,    0,
+      915,  915,  915,    0,  915,  915,  915,  915,  915,  915,
+      915,  915,  916,  916,    0,  916,  916,  916,    0,  916,
+      916,  916,  916,  916,  916,  916,  916,  917,  917,    0,
+      917,  917,  917,    0,  917,  917,  917,  917,  917,  917,
+
+      917,  917,  918,  918,    0,  918,  918,  918,    0,  918,
+      918,  918,  918,  918,  918,  918,  918,  919,  919,    0,
+      919,  919,  919,    0,  919,  919,  919,  919,  919,  919,
+      919,  919,  920,  920,    0,  920,  920,  920,    0,  920,
+      920,  920,  920,  920,  920,  920,  920,  921,  921,    0,
+      921,  921,  921,    0,  921,  921,  921,  921,  921,  921,
+      921,  921,  922,  922,    0,  922,  922,  922,    0,  922,
+      922,  922,  922,  922,  922,  922,  922,  923,  923,    0,
+      923,  923,  923,    0,  923,  923,  923,  923,  923,  923,
+      923,  923,  924,  924,    0,  924,  924,  924,    0,  924,
+
+      924,  924,  924,  924,  924,  924,  924,  925,  925,    0,
+      925,  925,  925,    0,  925,  925,  925,  925,  925,  925,
+      925,  925,  926,  926,    0,  926,  926,  926,    0,  926,
+      926,  926,  926,  926,  926,  926,  926,  927,  927,    0,
+      927,  927,  927,    0,  927,  927,  927,  927,  927,  927,
+      927,  927,  928,  928,    0,  928,  928,  928,    0,  928,
+      928,  928,  928,  928,  928,  928,  928,  929,  929,    0,
+      929,  929,  929,    0,  929,  929,  929,  929,  929,  929,
+      929,  929,  930,  930,    0,  930,  930,  930,    0,  930,
+      930,  930,  930,  930,  930,  930,  930,  931,  931,    0,
+
+      931,  931,  931,    0,  931,  931,  931,  931,  931,  931,
+      931,  931,  932,  932,    0,  932,  932,  932,    0,  932,
+      932,  932,  932,  932,  932,  932,  932,  933,  933,    0,
+      933,  933,  933,    0,  933,  933,  933,  933,  933,  933,
+      933,  933,  934,  934,    0,  934,  934,  934,    0,  934,
+      934,  934,  934,  934,  934,  934,  934,  935,  935,    0,
+      935,  935,  935,    0,  935,  935,  935,  935,  935,  935,
+      935,  935,  936,  936,    0,  936,  936,  936,    0,  936,
+      936,  936,  936,  936,  936,  936,  936,  937,  937,    0,
+      937,  937,  937,    0,  937,  937,  937,  937,  937,  937,
+
+      937,  937,  938,  938,    0,  938,  938,  938,    0,  938,
+      938,  938,  938,  938,  938,  938,  938,  939,  939,    0,
+      939,  939,  939,    0,  939,  939,  939,  939,  939,  939,
+      939,  939,  940,  940,    0,  940,  940,  940,    0,  940,
+      940,  940,  940,  940,  940,  940,  940,  941,  941,    0,
+      941,  941,  941,    0,  941,  941,  941,  941,  941,  941,
+      941,  941,  942,  942,    0,  942,  942,  942,    0,  942,
+      942,  942,  942,  942,  942,  942,  942,  943,  943,    0,
+      943,  943,  943,    0,  943,  943,  943,  943,  943,  943,
+      943,  943,  944,  944,    0,  944,  944,  944,    0,  944,
+
+      944,  944,  944,  944,  944,  944,  944,  945,  945,    0,
+      945,  945,  945,    0,  945,  945,  945,  945,  945,  945,
+      945,  945,  946,  946,    0,  946,  946,  946,    0,  946,
+      946,  946,  946,  946,  946,  946,  946,  947,  947,    0,
+      947,  947,  947,    0,  947,  947,  947,  947,  947,  947,
+      947,  947,  948,  948,    0,  948,  948,  948,    0,  948,
+      948,  948,  948,  948,  948,  948,  948,  949,  949,    0,
+      949,  949,  949,    0,  949,  949,  949,  949,  949,  949,
+      949,  949,  950,  950,    0,  950,  950,  950,    0,  950,
+      950,  950,  950,  950,  950,  950,  950,  951,  951,    0,
+
+      951,  951,  951,    0,  951,  951,  951,  951,  951,  951,
+      951,  951,  952,  952,    0,  952,  952,  952,    0,  952,
+      952,  952,  952,  952,  952,  952,  952,  953,  953,    0,
+      953,  953,  953,    0,  953,  953,  953,  953,  953,  953,
+      953,  953,  954,  954,    0,  954,  954,  954,    0,  954,
+      954,  954,  954,  954,  954,  954,  954,  955,  955,    0,
+      955,  955,  955,    0,  955,  955,  955,  955,  955,  955,
+      955,  955,  956,  956,    0,  956,  956,  956,    0,  956,
+      956,  956,  956,  956,  956,  956,  956,  957,  957,    0,
+      957,  957,  957,    0,  957,  957,  957,  957,  957,  957,
+
+      957,  957,  958,  958,    0,  958,  958,  958,    0,  958,
+      958,  958,  958,  958,  958,  958,  958,  959,  959,    0,
+      959,  959,  959,    0,  959,  959,  959,  959,  959,  959,
+      959,  959,  960,  960,    0,  960,  960,  960,    0,  960,
+      960,  960,  960,  960,  960,  960,  960,  961,  961,    0,
+      961,  961,  961,    0,  961,  961,  961,  961,  961,  961,
+      961,  961,  962,  962,    0,  962,  962,  962,    0,  962,
+      962,  962,  962,  962,  962,  962,  962,  963,  963,    0,
+      963,  963,  963,    0,  963,  963,  963,  963,  963,  963,
+      963,  963,  964,  964,    0,  964,  964,  964,    0,  964,
+
+      964,  964,  964,  964,  964,  964,  964,  965,  965,    0,
+      965,  965,  965,    0,  965,  965,  965,  965,  965,  965,
+      965,  965,  966,  966,    0,  966,  966,  966,    0,  966,
+      966,  966,  966,  966,  966,  966,  966,  967,  967,    0,
+      967,  967,  967,    0,  967,  967,  967,  967,  967,  967,
+      967,  967,  968,  968,    0,  968,  968,  968,    0,  968,
+      968,  968,  968,  968,  968,  968,  968,  969,  969,    0,
+      969,  969,  969,    0,  969,  969,  969,  969,  969,  969,
+      969,  969,  970,  970,    0,  970,  970,  970,    0,  970,
+      970,  970,  970,  970,  970,  970,  970,  971,  971,    0,
+
+      971,  971,  971,    0,  971,  971,  971,  971,  971,  971,
+      971,  971,  972,  972,    0,  972,  972,  972,    0,  972,
+      972,  972,  972,  972,  972,  972,  972,  973,  973,    0,
+      973,  973,  973,    0,  973,  973,  973,  973,  973,  973,
+      973,  973,  974,  974,    0,  974,  974,  974,    0,  974,
+      974,  974,  974,  974,  974,  974,  974,  975,  975,    0,
+      975,  975,  975,    0,  975,  975,  975,  975,  975,  975,
+      975,  975,  976,  976,    0,  976,  976,  976,    0,  976,
+      976,  976,  976,  976,  976,  976,  976,  977,  977,    0,
+      977,  977,  977,    0,  977,  977,  977,  977,  977,  977,
+
+      977,  977,  978,  978,    0,  978,  978,  978,    0,  978,
+      978,  978,  978,  978,  978,  978,  978,  979,  979,    0,
+      979,  979,  979,    0,  979,  979,  979,  979,  979,  979,
+      979,  979,  980,  980,    0,  980,  980,  980,    0,  980,
+      980,  980,  980,  980,  980,  980,  980,  981,  981,    0,
+      981,  981,  981,    0,  981,  981,  981,  981,  981,  981,
+      981,  981,  982,  982,    0,  982,  982,  982,    0,  982,
+      982,  982,  982,  982,  982,  982,  982,  983,  983,    0,
+      983,  983,  983,    0,  983,  983,  983,  983,  983,  983,
+      983,  983,  984,  984,    0,  984,  984,  984,    0,  984,
+
+      984,  984,  984,  984,  984,  984,  984,  985,  985,    0,
+      985,  985,  985,    0,  985,  985,  985,  985,  985,  985,
+      985,  985,  986,  986,    0,  986,  986,  986,    0,  986,
+      986,  986,  986,  986,  986,  986,  986,  987,  987,    0,
+      987,  987,  987,    0,  987,  987,  987,  987,  987,  987,
+      987,  987,  988,  988,    0,  988,  988,  988,    0,  988,
+      988,  988,  988,  988,  988,  988,  988,  989,  989,    0,
+      989,  989,  989,    0,  989,  989,  989,  989,  989,  989,
+      989,  989,  990,  990,    0,  990,  990,  990,    0,  990,
+      990,  990,  990,  990,  990,  990,  990,  991,  991,    0,
+
+      991,  991,  991,    0,  991,  991,  991,  991,  991,  991,
+      991,  991,  992,  992,    0,  992,  992,  992,    0,  992,
+      992,  992,  992,  992,  992,  992,  992,  993,  993,    0,
+      993,  993,  993,    0,  993,  993,  993,  993,  993,  993,
+      993,  993,  994,  994,    0,  994,  994,  994,    0,  994,
+      994,  994,  994,  994,  994,  994,  994,  995,  995,    0,
+      995,  995,  995,    0,  995,  995,  995,  995,  995,  995,
+      995,  995,  996,  996,    0,  996,  996,  996,    0,  996,
+      996,  996,  996,  996,  996,  996,  996,  997,  997,    0,
+      997,  997,  997,    0,  997,  997,  997,  997,  997,  997,
+
+      997,  997,  998,  998,    0,  998,  998,  998,    0,  998,
+      998,  998,  998,  998,  998,  998,  998,  999,  999,    0,
+      999,  999,  999,    0,  999,  999,  999,  999,  999,  999,
+      999,  999, 1000, 1000,    0, 1000, 1000, 1000,    0, 1000,
+     1000, 1000, 1000, 1000, 1000, 1000, 1000, 1001, 1001,    0,
+     1001, 1001, 1001,    0, 1001, 1001, 1001, 1001, 1001, 1001,
+     1001, 1001, 1002, 1002,    0, 1002, 1002, 1002,    0, 1002,
+     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1003,    0,
+     1003, 1003, 1003,    0, 1003, 1003, 1003, 1003, 1003, 1003,
+     1003, 1003, 1004, 1004,    0, 1004, 1004, 1004,    0, 1004,
+
+     1004, 1004, 1004, 1004, 1004, 1004, 1004, 1005, 1005,    0,
+     1005, 1005, 1005,    0, 1005, 1005, 1005, 1005, 1005, 1005,
+     1005, 1005, 1006, 1006,    0, 1006, 1006, 1006,    0, 1006,
+     1006, 1006, 1006, 1006, 1006, 1006, 1006, 1007, 1007,    0,
+     1007, 1007, 1007,    0, 1007, 1007, 1007, 1007, 1007, 1007,
+     1007, 1007, 1008, 1008,    0, 1008, 1008, 1008,    0, 1008,
+     1008, 1008, 1008, 1008, 1008, 1008, 1008, 1009, 1009,    0,
+     1009, 1009, 1009,    0, 1009, 1009, 1009, 1009, 1009, 1009,
+     1009, 1009, 1010, 1010,    0, 1010, 1010, 1010,    0, 1010,
+     1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011, 1011,    0,
+
+     1011, 1011, 1011,    0, 1011, 1011, 1011, 1011, 1011, 1011,
+     1011, 1011, 1012, 1012,    0, 1012, 1012, 1012,    0, 1012,
+     1012, 1012, 1012, 1012, 1012, 1012, 1012, 1013, 1013,    0,
+     1013, 1013, 1013,    0, 1013, 1013, 1013, 1013, 1013, 1013,
+     1013, 1013, 1014, 1014,    0, 1014, 1014, 1014,    0, 1014,
+     1014, 1014, 1014, 1014, 1014, 1014, 1014, 1015, 1015,    0,
+     1015, 1015, 1015,    0, 1015, 1015, 1015, 1015, 1015, 1015,
+     1015, 1015, 1016, 1016,    0, 1016, 1016, 1016,    0, 1016,
+     1016, 1016, 1016, 1016, 1016, 1016, 1016, 1017, 1017,    0,
+     1017, 1017, 1017,    0, 1017, 1017, 1017, 1017, 1017, 1017,
+
+     1017, 1017, 1018, 1018,    0, 1018, 1018, 1018,    0, 1018,
+     1018, 1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019,    0,
+     1019, 1019, 1019,    0, 1019, 1019, 1019, 1019, 1019, 1019,
+     1019, 1019, 1020, 1020,    0, 1020, 1020, 1020,    0, 1020,
+     1020, 1020, 1020, 1020, 1020, 1020, 1020, 1021, 1021,    0,
+     1021, 1021, 1021,    0, 1021, 1021, 1021, 1021, 1021, 1021,
+     1021, 1021, 1022, 1022,    0, 1022, 1022, 1022,    0, 1022,
+     1022, 1022, 1022, 1022, 1022, 1022, 1022, 1023, 1023,    0,
+     1023, 1023, 1023,    0, 1023, 1023, 1023, 1023, 1023, 1023,
+     1023, 1023, 1024, 1024,    0, 1024, 1024, 1024,    0, 1024,
+
+     1024, 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025,    0,
+     1025, 1025, 1025,    0, 1025, 1025, 1025, 1025, 1025, 1025,
+     1025, 1025, 1026, 1026,    0, 1026, 1026, 1026,    0, 1026,
+     1026, 1026, 1026, 1026, 1026, 1026, 1026, 1027, 1027,    0,
+     1027, 1027, 1027,    0, 1027, 1027, 1027, 1027, 1027, 1027,
+     1027, 1027, 1028, 1028,    0, 1028, 1028, 1028,    0, 1028,
+     1028, 1028, 1028, 1028, 1028, 1028, 1028, 1029, 1029,    0,
+     1029, 1029, 1029,    0, 1029, 1029, 1029, 1029, 1029, 1029,
+     1029, 1029, 1030, 1030,    0, 1030, 1030, 1030,    0, 1030,
+     1030, 1030, 1030, 1030, 1030, 1030, 1030, 1031, 1031,    0,
+
+     1031, 1031, 1031,    0, 1031, 1031, 1031, 1031, 1031, 1031,
+     1031, 1031, 1032, 1032,    0, 1032, 1032, 1032,    0, 1032,
+     1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033, 1033,    0,
+     1033, 1033, 1033,    0, 1033, 1033, 1033, 1033, 1033, 1033,
+     1033, 1033, 1034, 1034,    0, 1034, 1034, 1034,    0, 1034,
+     1034, 1034, 1034, 1034, 1034, 1034, 1034, 1035, 1035,    0,
+     1035, 1035, 1035,    0, 1035, 1035, 1035, 1035, 1035, 1035,
+     1035, 1035, 1036, 1036,    0, 1036, 1036, 1036,    0, 1036,
+     1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037,    0,
+     1037, 1037, 1037,    0, 1037, 1037, 1037, 1037, 1037, 1037,
+
+     1037, 1037, 1038, 1038,    0, 1038, 1038, 1038,    0, 1038,
+     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, 1039,    0,
+     1039, 1039, 1039,    0, 1039, 1039, 1039, 1039, 1039, 1039,
+     1039, 1039, 1040, 1040,    0, 1040, 1040, 1040,    0, 1040,
+     1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041,    0,
+     1041, 1041, 1041,    0, 1041, 1041, 1041, 1041, 1041, 1041,
+     1041, 1041, 1042, 1042,    0, 1042, 1042, 1042,    0, 1042,
+     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043,    0,
+     1043, 1043, 1043,    0, 1043, 1043, 1043, 1043, 1043, 1043,
+     1043, 1043, 1044, 1044,    0, 1044, 1044, 1044,    0, 1044,
+
+     1044, 1044, 1044, 1044, 1044, 1044, 1044, 1045, 1045,    0,
+     1045, 1045, 1045,    0, 1045, 1045, 1045, 1045, 1045, 1045,
+     1045, 1045, 1046, 1046,    0, 1046, 1046, 1046,    0, 1046,
+     1046, 1046, 1046, 1046, 1046, 1046, 1046, 1047, 1047,    0,
+     1047, 1047, 1047,    0, 1047, 1047, 1047, 1047, 1047, 1047,
+     1047, 1047, 1048, 1048,    0, 1048, 1048, 1048,    0, 1048,
+     1048, 1048, 1048, 1048, 1048, 1048, 1048, 1049, 1049,    0,
+     1049, 1049, 1049,    0, 1049, 1049, 1049, 1049, 1049, 1049,
+     1049, 1049, 1050, 1050,    0, 1050, 1050, 1050,    0, 1050,
+     1050, 1050, 1050, 1050, 1050, 1050, 1050, 1051, 1051,    0,
+
+     1051, 1051, 1051,    0, 1051, 1051, 1051, 1051, 1051, 1051,
+     1051, 1051, 1052, 1052,    0, 1052, 1052, 1052,    0, 1052,
+     1052, 1052, 1052, 1052, 1052, 1052, 1052, 1053, 1053,    0,
+     1053, 1053, 1053,    0, 1053, 1053, 1053, 1053, 1053, 1053,
+     1053, 1053, 1054, 1054,    0, 1054, 1054, 1054,    0, 1054,
+     1054, 1054, 1054, 1054, 1054, 1054, 1054, 1055, 1055,    0,
+     1055, 1055, 1055,    0, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1055, 1056, 1056,    0, 1056, 1056, 1056,    0, 1056,
+     1056, 1056, 1056, 1056, 1056, 1056, 1056, 1057, 1057,    0,
+     1057, 1057, 1057,    0, 1057, 1057, 1057, 1057, 1057, 1057,
+
+     1057, 1057, 1058, 1058,    0, 1058, 1058, 1058,    0, 1058,
+     1058, 1058, 1058, 1058, 1058, 1058, 1058, 1059, 1059,    0,
+     1059, 1059, 1059,    0, 1059, 1059, 1059, 1059, 1059, 1059,
+     1059, 1059, 1060, 1060,    0, 1060, 1060, 1060,    0, 1060,
+     1060, 1060, 1060, 1060, 1060, 1060, 1060, 1061, 1061,    0,
+     1061, 1061, 1061,    0, 1061, 1061, 1061, 1061, 1061, 1061,
+     1061, 1061, 1062, 1062,    0, 1062, 1062, 1062,    0, 1062,
+     1062, 1062, 1062, 1062, 1062, 1062, 1062, 1063, 1063,    0,
+     1063, 1063, 1063,    0, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1064, 1064,    0, 1064, 1064, 1064,    0, 1064,
+
+     1064, 1064, 1064, 1064, 1064, 1064, 1064, 1065, 1065,    0,
+     1065, 1065, 1065,    0, 1065, 1065, 1065, 1065, 1065, 1065,
+     1065, 1065, 1066, 1066,    0, 1066, 1066, 1066,    0, 1066,
+     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1067, 1067,    0,
+     1067, 1067, 1067,    0, 1067, 1067, 1067, 1067, 1067, 1067,
+     1067, 1067, 1068, 1068,    0, 1068, 1068, 1068,    0, 1068,
+     1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069,    0,
+     1069, 1069, 1069,    0, 1069, 1069, 1069, 1069, 1069, 1069,
+     1069, 1069,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884,  884,  884,  884,  884,  884,  884,
+      884,  884,  884,  884
     } ;
 
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static yyconst short int yy_rule_linenum[133] =
+static yyconst short int yy_rule_linenum[136] =
     {   0,
-       92,   93,   95,   98,  101,  103,  104,  105,  108,  110,
-      111,  112,  124,  131,  138,  144,  153,  161,  169,  170,
-      172,  191,  197,  198,  199,  200,  201,  204,  210,  217,
-      224,  231,  238,  242,  243,  251,  252,  253,  254,  255,
-      260,  261,  262,  263,  264,  265,  266,  267,  268,  269,
-      270,  279,  280,  281,  282,  283,  284,  285,  286,  287,
-      288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
-      298,  299,  300,  301,  302,  303,  304,  305,  306,  307,
-      308,  309,  310,  311,  312,  313,  314,  315,  316,  317,
-      318,  319,  320,  321,  322,  323,  324,  325,  326,  327,
+       94,   95,   97,  100,  103,  105,  110,  112,  113,  114,
+      117,  119,  120,  121,  126,  138,  145,  152,  158,  167,
+      175,  183,  184,  186,  205,  211,  212,  213,  214,  215,
+      218,  224,  231,  238,  245,  252,  256,  257,  265,  266,
+      267,  268,  269,  274,  275,  276,  277,  278,  279,  280,
+      281,  282,  283,  284,  293,  294,  295,  296,  297,  298,
+      299,  300,  301,  302,  303,  304,  305,  306,  307,  308,
+      309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
+      319,  320,  321,  322,  323,  324,  325,  326,  327,  328,
+      329,  330,  331,  332,  333,  334,  335,  336,  337,  338,
 
-      328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
-      342,  343,  348,  349,  350,  353,  358,  364,  372,  382,
-      387,  389,  390,  394,  400,  406,  414,  417,  442,  486,
-      488,  499
+      339,  340,  341,  342,  343,  344,  345,  346,  347,  348,
+      349,  350,  351,  356,  357,  362,  363,  364,  367,  372,
+      378,  386,  396,  401,  403,  404,  408,  414,  420,  428,
+      431,  456,  500,  502,  513
     } ;
 
 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
@@ -1760,6 +2428,8 @@
 int asn1p_lexer_constructs_year = 0;
 static asn1c_integer_t asn1p_atoi(char *ptr); /* errno is either 0 or ERANGE */
 
+int asn1p_as_pointer;
+
 /*
  * Check that the type is defined in the year of the standard choosen.
  */
@@ -1818,7 +2488,7 @@
 
 /* Newline */
 /* White-space */
-#line 1822 "asn1p_l.c"
+#line 2492 "asn1p_l.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1969,10 +2639,10 @@
 	register char *yy_cp, *yy_bp;
 	register int yy_act;
 
-#line 90 "asn1p_l.l"
+#line 92 "asn1p_l.l"
 
 
-#line 1976 "asn1p_l.c"
+#line 2646 "asn1p_l.c"
 
 	if ( yy_init )
 		{
@@ -2020,14 +2690,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 >= 709 )
+				if ( yy_current_state >= 885 )
 					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] != 4166 );
+		while ( yy_base[yy_current_state] != 6783 );
 
 yy_find_action:
 		yy_current_state = *--yy_state_ptr;
@@ -2064,13 +2734,13 @@
 			{
 			if ( yy_act == 0 )
 				fprintf( stderr, "--scanner backing up\n" );
-			else if ( yy_act < 133 )
+			else if ( yy_act < 136 )
 				fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
 				         yy_rule_linenum[yy_act], yytext );
-			else if ( yy_act == 133 )
+			else if ( yy_act == 136 )
 				fprintf( stderr, "--accepting default rule (\"%s\")\n",
 				         yytext );
-			else if ( yy_act == 134 )
+			else if ( yy_act == 137 )
 				fprintf( stderr, "--(end of buffer or a NUL)\n" );
 			else
 				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2083,7 +2753,7 @@
 yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 92 "asn1p_l.l"
+#line 94 "asn1p_l.l"
 /* Immediately terminated long comment */
 	YY_BREAK
 case 2:
@@ -2091,62 +2761,85 @@
 yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 93 "asn1p_l.l"
+#line 95 "asn1p_l.l"
 yy_push_state(idash_comment);	/* Incorrect, but acceptable */
 	YY_BREAK
 
 case 3:
 YY_RULE_SETUP
-#line 95 "asn1p_l.l"
+#line 97 "asn1p_l.l"
 yy_pop_state(); /* Acceptable end of comment */
 	YY_BREAK
 
 case 4:
 YY_RULE_SETUP
-#line 98 "asn1p_l.l"
+#line 100 "asn1p_l.l"
 yy_push_state(dash_comment);
 	YY_BREAK
 
 case 5:
 YY_RULE_SETUP
-#line 101 "asn1p_l.l"
+#line 103 "asn1p_l.l"
 yy_pop_state();
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 103 "asn1p_l.l"
-yy_pop_state();	/* End of comment */
+#line 105 "asn1p_l.l"
+{
+			if(strcmp(yytext, "<asn1c:pointer>") == 0)
+				asn1p_as_pointer = 1;
+			/* Eat modifier */
+		}
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 104 "asn1p_l.l"
-/* Eat single dash */
+#line 110 "asn1p_l.l"
+/* Eat stand-alone left angle brace */
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 105 "asn1p_l.l"
+#line 112 "asn1p_l.l"
+yy_pop_state();	/* End of comment */
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 113 "asn1p_l.l"
+/* Eat single dash */
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 114 "asn1p_l.l"
 /* Eat */
 	YY_BREAK
 
-case 9:
+case 11:
 YY_RULE_SETUP
-#line 108 "asn1p_l.l"
+#line 117 "asn1p_l.l"
 yy_push_state(cpp_comment);
 	YY_BREAK
 
-case 10:
-YY_RULE_SETUP
-#line 110 "asn1p_l.l"
-/* Eat */
-	YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 111 "asn1p_l.l"
-yy_pop_state();
-	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 112 "asn1p_l.l"
+#line 119 "asn1p_l.l"
+/* Eat */
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 120 "asn1p_l.l"
+yy_pop_state();
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 121 "asn1p_l.l"
+{
+			if(strcmp(yytext, "<asn1c:pointer>") == 0)
+				asn1p_as_pointer = 1;
+			/* Eat modifier */
+		}
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 126 "asn1p_l.l"
 /* Eat */
 	YY_BREAK
 
@@ -2157,9 +2850,9 @@
 	 * everything for later processing.
 	 */
 
-case 13:
+case 16:
 YY_RULE_SETUP
-#line 124 "asn1p_l.l"
+#line 138 "asn1p_l.l"
 {
 			yy_push_state(opaque);
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
@@ -2167,9 +2860,9 @@
 			return TOK_opaque;
 		}
 	YY_BREAK
-case 14:
+case 17:
 YY_RULE_SETUP
-#line 131 "asn1p_l.l"
+#line 145 "asn1p_l.l"
 {
 			yy_pop_state();
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
@@ -2177,18 +2870,18 @@
 			return TOK_opaque;
 		}
 	YY_BREAK
-case 15:
+case 18:
 YY_RULE_SETUP
-#line 138 "asn1p_l.l"
+#line 152 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
 			asn1p_lval.tv_opaque.len = yyleng;
 			return TOK_opaque;
 		}
 	YY_BREAK
-case 16:
+case 19:
 YY_RULE_SETUP
-#line 144 "asn1p_l.l"
+#line 158 "asn1p_l.l"
 {
 			fprintf(stderr,
 				"ASN.1 Parser syncronization failure: "
@@ -2198,9 +2891,9 @@
 			return -1;
 		}
 	YY_BREAK
-case 17:
+case 20:
 YY_RULE_SETUP
-#line 153 "asn1p_l.l"
+#line 167 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
 			asn1p_lval.tv_opaque.len = yyleng;
@@ -2208,9 +2901,9 @@
 		}
 	YY_BREAK
 
-case 18:
+case 21:
 YY_RULE_SETUP
-#line 161 "asn1p_l.l"
+#line 175 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = 0;
 			asn1p_lval.tv_opaque.len = 0;
@@ -2219,19 +2912,19 @@
 		}
 	YY_BREAK
 
-case 19:
+case 22:
 YY_RULE_SETUP
-#line 169 "asn1p_l.l"
+#line 183 "asn1p_l.l"
 { QAPPEND(yytext, yyleng-1); }	/* Add a single quote */
 	YY_BREAK
-case 20:
+case 23:
 YY_RULE_SETUP
-#line 170 "asn1p_l.l"
+#line 184 "asn1p_l.l"
 { QAPPEND(yytext, yyleng); }
 	YY_BREAK
-case 21:
+case 24:
 YY_RULE_SETUP
-#line 172 "asn1p_l.l"
+#line 186 "asn1p_l.l"
 {
 			yy_pop_state();
 			/* Do not append last quote:
@@ -2250,9 +2943,9 @@
 	YY_BREAK
 
 
-case 22:
+case 25:
 YY_RULE_SETUP
-#line 191 "asn1p_l.l"
+#line 205 "asn1p_l.l"
 {
 			const char *s = "ENCODING-CONTROL";
 			const char *p = s + sizeof("ENCODING-CONTROL") - 2;
@@ -2260,53 +2953,53 @@
 			yy_pop_state();
 		}
 	YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 197 "asn1p_l.l"
-unput('D'); unput('N'); unput('E'); yy_pop_state();
-	YY_BREAK
-case 24:
-YY_RULE_SETUP
-#line 198 "asn1p_l.l"
-
-	YY_BREAK
-case 25:
-YY_RULE_SETUP
-#line 199 "asn1p_l.l"
-
-	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 200 "asn1p_l.l"
-/* Eat everything else */
+#line 211 "asn1p_l.l"
+unput('D'); unput('N'); unput('E'); yy_pop_state();
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 201 "asn1p_l.l"
+#line 212 "asn1p_l.l"
+
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 213 "asn1p_l.l"
+
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 214 "asn1p_l.l"
+/* Eat everything else */
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 215 "asn1p_l.l"
 
 	YY_BREAK
 
-case 28:
+case 31:
 YY_RULE_SETUP
-#line 204 "asn1p_l.l"
+#line 218 "asn1p_l.l"
 {
 		/* " \t\r\n" weren't allowed in ASN.1:1990. */
 		asn1p_lval.tv_str = yytext;
 		return TOK_hstring;
 	}
 	YY_BREAK
-case 29:
+case 32:
 YY_RULE_SETUP
-#line 210 "asn1p_l.l"
+#line 224 "asn1p_l.l"
 {
 		/* " \t\r\n" weren't allowed in ASN.1:1990. */
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_bstring;
 	}
 	YY_BREAK
-case 30:
+case 33:
 YY_RULE_SETUP
-#line 217 "asn1p_l.l"
+#line 231 "asn1p_l.l"
 {
 		asn1p_lval.a_int = asn1p_atoi(yytext);
 		if(errno == ERANGE)
@@ -2314,42 +3007,42 @@
 		return TOK_number_negative;
 	}
 	YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 224 "asn1p_l.l"
-{
-		asn1p_lval.a_int = asn1p_atoi(yytext);
-		if(errno == ERANGE)
-			return -1;
-		return TOK_number;
-	}
-	YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 231 "asn1p_l.l"
-{
-		asn1p_lval.a_int = asn1p_atoi(yytext);
-		if(errno == ERANGE)
-			return -1;
-		return TOK_number;
-	}
-	YY_BREAK
-case 33:
+case 34:
 YY_RULE_SETUP
 #line 238 "asn1p_l.l"
+{
+		asn1p_lval.a_int = asn1p_atoi(yytext);
+		if(errno == ERANGE)
+			return -1;
+		return TOK_number;
+	}
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 245 "asn1p_l.l"
+{
+		asn1p_lval.a_int = asn1p_atoi(yytext);
+		if(errno == ERANGE)
+			return -1;
+		return TOK_number;
+	}
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 252 "asn1p_l.l"
 return TOK_ABSENT;
 	YY_BREAK
 /*
 ABSTRACT-SYNTAX		return TOK_ABSTRACT_SYNTAX;
 	*/
-case 34:
+case 37:
 YY_RULE_SETUP
-#line 242 "asn1p_l.l"
+#line 256 "asn1p_l.l"
 return TOK_ALL;
 	YY_BREAK
-case 35:
+case 38:
 YY_RULE_SETUP
-#line 243 "asn1p_l.l"
+#line 257 "asn1p_l.l"
 {
 				/* Appeared in 1990, removed in 1997 */
 				if(TYPE_LIFETIME(1990, 1997))
@@ -2359,88 +3052,88 @@
 				REJECT;
 			}
 	YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 251 "asn1p_l.l"
-return TOK_APPLICATION;
-	YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 252 "asn1p_l.l"
-return TOK_AUTOMATIC;
-	YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 253 "asn1p_l.l"
-return TOK_BEGIN;
-	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 254 "asn1p_l.l"
-return TOK_BIT;
+#line 265 "asn1p_l.l"
+return TOK_APPLICATION;
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 255 "asn1p_l.l"
+#line 266 "asn1p_l.l"
+return TOK_AUTOMATIC;
+	YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 267 "asn1p_l.l"
+return TOK_BEGIN;
+	YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 268 "asn1p_l.l"
+return TOK_BIT;
+	YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 269 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_BMPString;
 				REJECT;
 			}
 	YY_BREAK
-case 41:
-YY_RULE_SETUP
-#line 260 "asn1p_l.l"
-return TOK_BOOLEAN;
-	YY_BREAK
-case 42:
-YY_RULE_SETUP
-#line 261 "asn1p_l.l"
-return TOK_BY;
-	YY_BREAK
-case 43:
-YY_RULE_SETUP
-#line 262 "asn1p_l.l"
-return TOK_CHARACTER;
-	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 263 "asn1p_l.l"
-return TOK_CHOICE;
+#line 274 "asn1p_l.l"
+return TOK_BOOLEAN;
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 264 "asn1p_l.l"
-return TOK_CLASS;
+#line 275 "asn1p_l.l"
+return TOK_BY;
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 265 "asn1p_l.l"
-return TOK_COMPONENT;
+#line 276 "asn1p_l.l"
+return TOK_CHARACTER;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 266 "asn1p_l.l"
-return TOK_COMPONENTS;
+#line 277 "asn1p_l.l"
+return TOK_CHOICE;
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 267 "asn1p_l.l"
-return TOK_CONSTRAINED;
+#line 278 "asn1p_l.l"
+return TOK_CLASS;
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 268 "asn1p_l.l"
-return TOK_CONTAINING;
+#line 279 "asn1p_l.l"
+return TOK_COMPONENT;
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 269 "asn1p_l.l"
-return TOK_DEFAULT;
+#line 280 "asn1p_l.l"
+return TOK_COMPONENTS;
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 270 "asn1p_l.l"
+#line 281 "asn1p_l.l"
+return TOK_CONSTRAINED;
+	YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 282 "asn1p_l.l"
+return TOK_CONTAINING;
+	YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 283 "asn1p_l.l"
+return TOK_DEFAULT;
+	YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 284 "asn1p_l.l"
 {
 				/* Appeared in 1990, removed in 1997 */
 				if(TYPE_LIFETIME(1990, 1997))
@@ -2451,353 +3144,353 @@
 				REJECT;
 			}
 	YY_BREAK
-case 52:
-YY_RULE_SETUP
-#line 279 "asn1p_l.l"
-return TOK_DEFINITIONS;
-	YY_BREAK
-case 53:
-YY_RULE_SETUP
-#line 280 "asn1p_l.l"
-return TOK_EMBEDDED;
-	YY_BREAK
-case 54:
-YY_RULE_SETUP
-#line 281 "asn1p_l.l"
-return TOK_ENCODED;
-	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 282 "asn1p_l.l"
-return TOK_ENCODING_CONTROL;
+#line 293 "asn1p_l.l"
+return TOK_DEFINITIONS;
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 283 "asn1p_l.l"
-return TOK_END;
+#line 294 "asn1p_l.l"
+return TOK_EMBEDDED;
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 284 "asn1p_l.l"
-return TOK_ENUMERATED;
+#line 295 "asn1p_l.l"
+return TOK_ENCODED;
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 285 "asn1p_l.l"
-return TOK_EXCEPT;
+#line 296 "asn1p_l.l"
+return TOK_ENCODING_CONTROL;
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 286 "asn1p_l.l"
-return TOK_EXPLICIT;
+#line 297 "asn1p_l.l"
+return TOK_END;
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 287 "asn1p_l.l"
-return TOK_EXPORTS;
+#line 298 "asn1p_l.l"
+return TOK_ENUMERATED;
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 288 "asn1p_l.l"
-return TOK_EXTENSIBILITY;
+#line 299 "asn1p_l.l"
+return TOK_EXCEPT;
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 289 "asn1p_l.l"
-return TOK_EXTERNAL;
+#line 300 "asn1p_l.l"
+return TOK_EXPLICIT;
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 290 "asn1p_l.l"
-return TOK_FALSE;
+#line 301 "asn1p_l.l"
+return TOK_EXPORTS;
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 291 "asn1p_l.l"
-return TOK_FROM;
+#line 302 "asn1p_l.l"
+return TOK_EXTENSIBILITY;
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 292 "asn1p_l.l"
-return TOK_GeneralizedTime;
+#line 303 "asn1p_l.l"
+return TOK_EXTERNAL;
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 293 "asn1p_l.l"
-return TOK_GeneralString;
+#line 304 "asn1p_l.l"
+return TOK_FALSE;
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 294 "asn1p_l.l"
-return TOK_GraphicString;
+#line 305 "asn1p_l.l"
+return TOK_FROM;
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 295 "asn1p_l.l"
-return TOK_IA5String;
+#line 306 "asn1p_l.l"
+return TOK_GeneralizedTime;
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 296 "asn1p_l.l"
-return TOK_IDENTIFIER;
+#line 307 "asn1p_l.l"
+return TOK_GeneralString;
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 297 "asn1p_l.l"
-return TOK_IMPLICIT;
+#line 308 "asn1p_l.l"
+return TOK_GraphicString;
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 298 "asn1p_l.l"
-return TOK_IMPLIED;
+#line 309 "asn1p_l.l"
+return TOK_IA5String;
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 299 "asn1p_l.l"
-return TOK_IMPORTS;
+#line 310 "asn1p_l.l"
+return TOK_IDENTIFIER;
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 300 "asn1p_l.l"
-return TOK_INCLUDES;
+#line 311 "asn1p_l.l"
+return TOK_IMPLICIT;
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 301 "asn1p_l.l"
-return TOK_INSTANCE;
+#line 312 "asn1p_l.l"
+return TOK_IMPLIED;
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 302 "asn1p_l.l"
-return TOK_INSTRUCTIONS;
+#line 313 "asn1p_l.l"
+return TOK_IMPORTS;
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 303 "asn1p_l.l"
-return TOK_INTEGER;
+#line 314 "asn1p_l.l"
+return TOK_INCLUDES;
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 304 "asn1p_l.l"
-return TOK_INTERSECTION;
+#line 315 "asn1p_l.l"
+return TOK_INSTANCE;
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 305 "asn1p_l.l"
-return TOK_ISO646String;
+#line 316 "asn1p_l.l"
+return TOK_INSTRUCTIONS;
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 306 "asn1p_l.l"
-return TOK_MAX;
+#line 317 "asn1p_l.l"
+return TOK_INTEGER;
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 307 "asn1p_l.l"
-return TOK_MIN;
+#line 318 "asn1p_l.l"
+return TOK_INTERSECTION;
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 308 "asn1p_l.l"
-return TOK_MINUS_INFINITY;
+#line 319 "asn1p_l.l"
+return TOK_ISO646String;
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 309 "asn1p_l.l"
-return TOK_NULL;
+#line 320 "asn1p_l.l"
+return TOK_MAX;
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 310 "asn1p_l.l"
-return TOK_NumericString;
+#line 321 "asn1p_l.l"
+return TOK_MIN;
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 311 "asn1p_l.l"
-return TOK_OBJECT;
+#line 322 "asn1p_l.l"
+return TOK_MINUS_INFINITY;
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 312 "asn1p_l.l"
-return TOK_ObjectDescriptor;
+#line 323 "asn1p_l.l"
+return TOK_NULL;
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 313 "asn1p_l.l"
-return TOK_OCTET;
+#line 324 "asn1p_l.l"
+return TOK_NumericString;
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 314 "asn1p_l.l"
-return TOK_OF;
+#line 325 "asn1p_l.l"
+return TOK_OBJECT;
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 315 "asn1p_l.l"
-return TOK_OPTIONAL;
+#line 326 "asn1p_l.l"
+return TOK_ObjectDescriptor;
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 316 "asn1p_l.l"
-return TOK_PATTERN;
+#line 327 "asn1p_l.l"
+return TOK_OCTET;
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 317 "asn1p_l.l"
-return TOK_PDV;
+#line 328 "asn1p_l.l"
+return TOK_OF;
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 318 "asn1p_l.l"
-return TOK_PLUS_INFINITY;
+#line 329 "asn1p_l.l"
+return TOK_OPTIONAL;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 319 "asn1p_l.l"
-return TOK_PRESENT;
+#line 330 "asn1p_l.l"
+return TOK_PATTERN;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 320 "asn1p_l.l"
-return TOK_PrintableString;
+#line 331 "asn1p_l.l"
+return TOK_PDV;
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 321 "asn1p_l.l"
-return TOK_PRIVATE;
+#line 332 "asn1p_l.l"
+return TOK_PLUS_INFINITY;
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 322 "asn1p_l.l"
-return TOK_REAL;
+#line 333 "asn1p_l.l"
+return TOK_PRESENT;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 323 "asn1p_l.l"
-return TOK_RELATIVE_OID;
+#line 334 "asn1p_l.l"
+return TOK_PrintableString;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 324 "asn1p_l.l"
-return TOK_SEQUENCE;
+#line 335 "asn1p_l.l"
+return TOK_PRIVATE;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 325 "asn1p_l.l"
-return TOK_SET;
+#line 336 "asn1p_l.l"
+return TOK_REAL;
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 326 "asn1p_l.l"
-return TOK_SIZE;
+#line 337 "asn1p_l.l"
+return TOK_RELATIVE_OID;
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 327 "asn1p_l.l"
-return TOK_STRING;
+#line 338 "asn1p_l.l"
+return TOK_SEQUENCE;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 328 "asn1p_l.l"
-return TOK_SYNTAX;
+#line 339 "asn1p_l.l"
+return TOK_SET;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 329 "asn1p_l.l"
-return TOK_T61String;
+#line 340 "asn1p_l.l"
+return TOK_SIZE;
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 330 "asn1p_l.l"
-return TOK_TAGS;
+#line 341 "asn1p_l.l"
+return TOK_STRING;
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 331 "asn1p_l.l"
-return TOK_TeletexString;
+#line 342 "asn1p_l.l"
+return TOK_SYNTAX;
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 332 "asn1p_l.l"
-return TOK_TRUE;
+#line 343 "asn1p_l.l"
+return TOK_T61String;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 333 "asn1p_l.l"
-return TOK_TYPE_IDENTIFIER;
+#line 344 "asn1p_l.l"
+return TOK_TAGS;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 334 "asn1p_l.l"
-return TOK_UNION;
+#line 345 "asn1p_l.l"
+return TOK_TeletexString;
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 335 "asn1p_l.l"
-return TOK_UNIQUE;
+#line 346 "asn1p_l.l"
+return TOK_TRUE;
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 336 "asn1p_l.l"
-return TOK_UNIVERSAL;
+#line 347 "asn1p_l.l"
+return TOK_TYPE_IDENTIFIER;
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 337 "asn1p_l.l"
+#line 348 "asn1p_l.l"
+return TOK_UNION;
+	YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 349 "asn1p_l.l"
+return TOK_UNIQUE;
+	YY_BREAK
+case 112:
+YY_RULE_SETUP
+#line 350 "asn1p_l.l"
+return TOK_UNIVERSAL;
+	YY_BREAK
+case 113:
+YY_RULE_SETUP
+#line 351 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_UniversalString;
 				REJECT;
 			}
 	YY_BREAK
-case 111:
+case 114:
 YY_RULE_SETUP
-#line 342 "asn1p_l.l"
+#line 356 "asn1p_l.l"
 return TOK_UTCTime;
 	YY_BREAK
-case 112:
+case 115:
 YY_RULE_SETUP
-#line 343 "asn1p_l.l"
+#line 357 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_UTF8String;
 				REJECT;
 			}
 	YY_BREAK
-case 113:
-YY_RULE_SETUP
-#line 348 "asn1p_l.l"
-return TOK_VideotexString;
-	YY_BREAK
-case 114:
-YY_RULE_SETUP
-#line 349 "asn1p_l.l"
-return TOK_VisibleString;
-	YY_BREAK
-case 115:
-YY_RULE_SETUP
-#line 350 "asn1p_l.l"
-return TOK_WITH;
-	YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 353 "asn1p_l.l"
+#line 362 "asn1p_l.l"
+return TOK_VideotexString;
+	YY_BREAK
+case 117:
+YY_RULE_SETUP
+#line 363 "asn1p_l.l"
+return TOK_VisibleString;
+	YY_BREAK
+case 118:
+YY_RULE_SETUP
+#line 364 "asn1p_l.l"
+return TOK_WITH;
+	YY_BREAK
+case 119:
+YY_RULE_SETUP
+#line 367 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_typefieldreference;
 	}
 	YY_BREAK
-case 117:
+case 120:
 YY_RULE_SETUP
-#line 358 "asn1p_l.l"
+#line 372 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_valuefieldreference;
 	}
 	YY_BREAK
-case 118:
+case 121:
 YY_RULE_SETUP
-#line 364 "asn1p_l.l"
+#line 378 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_identifier;
@@ -2806,9 +3499,9 @@
 /*
 	 * objectclassreference
 	 */
-case 119:
+case 122:
 YY_RULE_SETUP
-#line 372 "asn1p_l.l"
+#line 386 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_capitalreference;
@@ -2819,65 +3512,65 @@
 	 * NOTE: TOK_objectclassreference must be combined
 	 * with this token to produce true typereference.
 	 */
-case 120:
+case 123:
 YY_RULE_SETUP
-#line 382 "asn1p_l.l"
+#line 396 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_typereference;
 	}
 	YY_BREAK
-case 121:
-YY_RULE_SETUP
-#line 387 "asn1p_l.l"
-return TOK_PPEQ;
-	YY_BREAK
-case 122:
-YY_RULE_SETUP
-#line 389 "asn1p_l.l"
-return TOK_ThreeDots;
-	YY_BREAK
-case 123:
-YY_RULE_SETUP
-#line 390 "asn1p_l.l"
-return TOK_TwoDots;
-	YY_BREAK
-
 case 124:
 YY_RULE_SETUP
-#line 394 "asn1p_l.l"
-{
-			asn1p_lval.tv_opaque.buf = strdup(yytext);
-			asn1p_lval.tv_opaque.len = yyleng;
-			return TOK_opaque;
-			}
+#line 401 "asn1p_l.l"
+return TOK_PPEQ;
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 400 "asn1p_l.l"
+#line 403 "asn1p_l.l"
+return TOK_ThreeDots;
+	YY_BREAK
+case 126:
+YY_RULE_SETUP
+#line 404 "asn1p_l.l"
+return TOK_TwoDots;
+	YY_BREAK
+
+case 127:
+YY_RULE_SETUP
+#line 408 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
 			asn1p_lval.tv_opaque.len = yyleng;
 			return TOK_opaque;
 			}
 	YY_BREAK
-case 126:
+case 128:
 YY_RULE_SETUP
-#line 406 "asn1p_l.l"
+#line 414 "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 420 "asn1p_l.l"
 {
 				yy_pop_state();
 				return '}';
 			}
 	YY_BREAK
 
-case 127:
+case 130:
 YY_RULE_SETUP
-#line 414 "asn1p_l.l"
+#line 428 "asn1p_l.l"
 /* Ignore whitespace */
 	YY_BREAK
-case 128:
+case 131:
 YY_RULE_SETUP
-#line 417 "asn1p_l.l"
+#line 431 "asn1p_l.l"
 {
 		asn1c_integer_t v1 = -1, v2 = -1;
 		char *p;
@@ -2903,9 +3596,9 @@
 		return TOK_tuple;
 	}
 	YY_BREAK
-case 129:
+case 132:
 YY_RULE_SETUP
-#line 442 "asn1p_l.l"
+#line 456 "asn1p_l.l"
 {
 		asn1c_integer_t v1 = -1, v2 = -1, v3 = -1, v4 = -1;
 		char *p;
@@ -2949,14 +3642,14 @@
 		return TOK_quadruple;
 	}
 	YY_BREAK
-case 130:
+case 133:
 YY_RULE_SETUP
-#line 486 "asn1p_l.l"
+#line 500 "asn1p_l.l"
 return yytext[0];
 	YY_BREAK
-case 131:
+case 134:
 YY_RULE_SETUP
-#line 488 "asn1p_l.l"
+#line 502 "asn1p_l.l"
 {
 		if(TYPE_LIFETIME(1994, 0))
 			fprintf(stderr, "ERROR: ");
@@ -2968,9 +3661,9 @@
 			return -1;
 	}
 	YY_BREAK
-case 132:
+case 135:
 YY_RULE_SETUP
-#line 499 "asn1p_l.l"
+#line 513 "asn1p_l.l"
 {
 		fprintf(stderr,
 			"Unexpected token at line %d: \"%s\"\n",
@@ -2992,19 +3685,19 @@
 case YY_STATE_EOF(opaque):
 case YY_STATE_EOF(encoding_control):
 case YY_STATE_EOF(with_syntax):
-#line 512 "asn1p_l.l"
+#line 526 "asn1p_l.l"
 {
 		while(YYSTATE != INITIAL)
 			yy_pop_state();
 		yyterminate();
 	}
 	YY_BREAK
-case 133:
+case 136:
 YY_RULE_SETUP
-#line 519 "asn1p_l.l"
+#line 533 "asn1p_l.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 3008 "asn1p_l.c"
+#line 3701 "asn1p_l.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -3291,7 +3984,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 >= 709 )
+			if ( yy_current_state >= 885 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3321,11 +4014,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 >= 709 )
+		if ( yy_current_state >= 885 )
 			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 == 708);
+	yy_is_jam = (yy_current_state == 884);
 	if ( ! yy_is_jam )
 		*yy_state_ptr++ = yy_current_state;
 
@@ -3886,7 +4579,7 @@
 	return 0;
 	}
 #endif
-#line 519 "asn1p_l.l"
+#line 533 "asn1p_l.l"
 
 
 /*
diff --git a/libasn1parser/asn1p_l.l b/libasn1parser/asn1p_l.l
index 04a5504..d12aae1 100644
--- a/libasn1parser/asn1p_l.l
+++ b/libasn1parser/asn1p_l.l
@@ -25,6 +25,8 @@
 int asn1p_lexer_constructs_year = 0;
 static asn1c_integer_t asn1p_atoi(char *ptr); /* errno is either 0 or ERANGE */
 
+int asn1p_as_pointer;
+
 /*
  * Check that the type is defined in the year of the standard choosen.
  */
@@ -100,15 +102,27 @@
 
 	{NL}	yy_pop_state();
 
+	"<asn1c:"[^\r\v\f\n>-]{1,80}">"	{
+			if(strcmp(yytext, "<asn1c:pointer>") == 0)
+				asn1p_as_pointer = 1;
+			/* Eat modifier */
+		}
+	"<"	/* Eat stand-alone left angle brace */
+
 	--	yy_pop_state();	/* End of comment */
 	-	/* Eat single dash */
-	[^\r\v\f\n-]+	/* Eat */
+	[^\r\v\f\n<-]+	/* Eat */
 }
 
 <INITIAL,cpp_comment>"/*"		yy_push_state(cpp_comment);
 <cpp_comment>{
-	[^*/]	/* Eat */
+	[^*/<]	/* Eat */
 	"*/"	yy_pop_state();
+	"<asn1c:"[^\r\v\f\n>-]{1,80}">"	{
+			if(strcmp(yytext, "<asn1c:pointer>") == 0)
+				asn1p_as_pointer = 1;
+			/* Eat modifier */
+		}
 	.	/* Eat */
 }
 
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 04b2105..f74538f 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -139,6 +139,13 @@
 extern int asn1p_lineno;
 
 /*
+ * Process modifiers as <asn1c:pointer>
+ */
+extern int asn1p_as_pointer;
+static asn1p_expr_t *asn1p_last_type;
+static void apply_nonstd_mods(void);
+
+/*
  * This temporary variable is used to solve the shortcomings of 1-lookahead
  * parser.
  */
@@ -172,7 +179,7 @@
 	} while(0)
 
 
-#line 67 "asn1p_y.y"
+#line 74 "asn1p_y.y"
 typedef union {
 	asn1p_t			*a_grammar;
 	asn1p_module_flags_e	 a_module_flags;
@@ -216,11 +223,11 @@
 
 
 
-#define	YYFINAL		429
+#define	YYFINAL		434
 #define	YYFLAG		-32768
 #define	YYNTBASE	118
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 356 ? yytranslate[x] : 221)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 356 ? yytranslate[x] : 226)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -273,138 +280,139 @@
    205,   207,   209,   210,   212,   214,   218,   222,   226,   228,
    231,   233,   237,   240,   242,   244,   250,   251,   253,   255,
    259,   262,   267,   272,   273,   275,   276,   283,   285,   288,
-   290,   292,   294,   298,   302,   306,   308,   313,   318,   323,
-   330,   337,   339,   344,   349,   351,   355,   357,   361,   365,
-   369,   371,   375,   377,   381,   383,   385,   387,   389,   394,
-   398,   399,   403,   405,   407,   409,   411,   413,   415,   417,
-   419,   421,   425,   427,   429,   431,   433,   436,   438,   440,
-   442,   444,   447,   450,   452,   454,   457,   460,   462,   464,
-   466,   468,   470,   473,   475,   478,   480,   482,   484,   486,
+   290,   292,   294,   298,   302,   306,   307,   310,   312,   313,
+   319,   320,   326,   327,   333,   340,   347,   349,   354,   359,
+   361,   365,   367,   371,   375,   379,   381,   385,   387,   391,
+   393,   395,   397,   399,   404,   408,   409,   413,   415,   417,
+   419,   421,   423,   425,   427,   429,   431,   435,   437,   439,
+   441,   443,   446,   448,   450,   452,   454,   457,   460,   462,
+   464,   467,   470,   472,   474,   476,   478,   480,   483,   485,
    488,   490,   492,   494,   496,   498,   500,   502,   504,   506,
-   508,   510,   512,   514,   516,   517,   519,   521,   526,   530,
-   535,   537,   541,   547,   549,   553,   557,   561,   565,   570,
-   574,   576,   578,   582,   586,   590,   594,   596,   598,   599,
-   605,   607,   610,   613,   617,   619,   621,   623,   625,   627,
-   629,   631,   633,   637,   643,   645,   649,   651,   655,   656,
-   658,   660,   662,   664,   666,   668,   672,   677,   679,   683,
-   686,   690,   692,   696,   697,   699,   701,   704,   707,   711,
-   713,   717,   719,   724,   729,   731,   733,   735,   737,   738,
-   740,   743,   748,   749,   751,   753,   755,   756,   758,   760,
-   762,   764,   766,   767,   769
+   508,   510,   512,   514,   516,   518,   520,   522,   524,   526,
+   527,   529,   531,   536,   540,   545,   547,   551,   557,   559,
+   563,   567,   571,   575,   580,   584,   586,   588,   592,   596,
+   600,   604,   606,   608,   609,   615,   617,   620,   623,   627,
+   629,   631,   633,   635,   637,   639,   641,   643,   647,   653,
+   655,   659,   661,   665,   666,   668,   670,   672,   674,   676,
+   678,   682,   687,   689,   693,   696,   700,   702,   706,   707,
+   709,   711,   714,   717,   721,   723,   727,   729,   734,   739,
+   741,   743,   745,   747,   748,   750,   753,   758,   759,   761,
+   763,   765,   766,   768,   770,   772,   774,   776,   777,   779
 };
 
 static const short yyrhs[] = {   119,
-     0,   120,     0,   119,   120,     0,   217,   121,    36,   125,
+     0,   120,     0,   119,   120,     0,   222,   121,    36,   125,
      3,    23,   128,    41,     0,     0,   122,     0,   105,   123,
    106,     0,   105,   106,     0,   124,     0,   123,   124,     0,
-   220,     0,   220,   107,     9,   108,     0,     9,     0,     0,
+   225,     0,   225,   107,     9,   108,     0,     9,     0,     0,
    126,     0,   127,     0,   126,   127,     0,    43,    86,     0,
     54,    86,     0,    22,    86,     0,    45,    55,     0,    14,
     59,     0,     0,   129,     0,   130,     0,   129,   130,     0,
-   132,     0,   138,     0,   144,     0,   171,     0,   141,     0,
-     0,    40,    14,   131,     0,   180,     0,    56,   133,   109,
+   132,     0,   138,     0,   144,     0,   176,     0,   141,     0,
+     0,    40,    14,   131,     0,   185,     0,    56,   133,   109,
      0,    56,    48,     0,   135,     0,   133,   135,     0,     0,
-   122,     0,   136,    48,   217,   134,     0,   137,     0,   136,
-   110,   137,     0,   217,     0,   217,   105,   106,     0,   220,
+   122,     0,   136,    48,   222,   134,     0,   137,     0,   136,
+   110,   137,     0,   222,     0,   222,   105,   106,     0,   225,
      0,    44,   139,   109,     0,    44,    19,   109,     0,    44,
-   109,     0,   140,     0,   139,   110,   140,     0,   217,     0,
-   217,   105,   106,     0,   220,     0,     0,   217,   143,     3,
-   105,   142,   176,     0,   166,     0,   177,     0,   217,     3,
-   212,    89,     0,   217,     3,   164,     0,   217,     3,   154,
-     0,   217,   105,   145,   106,     3,   164,     0,   146,     0,
-   145,   110,   146,     0,   217,     0,   217,   111,   220,     0,
-   217,   111,   217,     0,   177,   111,   220,     0,   148,     0,
-   147,   110,   148,     0,   164,     0,   220,     0,     0,   150,
-     0,   151,     0,   150,   110,   151,     0,   220,   164,   206,
-     0,    32,    70,   164,     0,   163,     0,   164,   206,     0,
-   153,     0,   152,   110,   153,     0,   220,   164,     0,   163,
+   109,     0,   140,     0,   139,   110,   140,     0,   222,     0,
+   222,   105,   106,     0,   225,     0,     0,   222,   143,     3,
+   105,   142,   181,     0,   171,     0,   182,     0,   222,     3,
+   217,    89,     0,   222,     3,   164,     0,   222,     3,   154,
+     0,   222,   105,   145,   106,     3,   164,     0,   146,     0,
+   145,   110,   146,     0,   222,     0,   222,   111,   225,     0,
+   222,   111,   222,     0,   182,   111,   225,     0,   148,     0,
+   147,   110,   148,     0,   164,     0,   225,     0,     0,   150,
+     0,   151,     0,   150,   110,   151,     0,   225,   164,   211,
+     0,    32,    70,   164,     0,   163,     0,   164,   211,     0,
+   153,     0,   152,   110,   153,     0,   225,   164,     0,   163,
      0,   164,     0,    30,   105,   156,   106,   158,     0,     0,
-    90,     0,   157,     0,   156,   110,   157,     0,   169,   206,
-     0,   169,   164,   155,   206,     0,   169,   169,   155,   206,
+    90,     0,   157,     0,   156,   110,   157,     0,   174,   211,
+     0,   174,   164,   155,   211,     0,   174,   174,   155,   211,
      0,     0,   159,     0,     0,    97,    84,   105,   160,   161,
-   106,     0,   162,     0,   161,   162,     0,     4,     0,   169,
-     0,   104,     0,   104,   112,   174,     0,   104,   112,   211,
-     0,   212,   165,   184,     0,   179,     0,    29,   105,   152,
-   106,     0,    80,   105,   149,   106,     0,    81,   105,   149,
-   106,     0,    80,   184,    70,   219,   212,   165,     0,    81,
-   184,    70,   219,   212,   165,     0,    20,     0,    20,    37,
-    27,   220,     0,   217,   105,   147,   106,     0,   166,     0,
-    58,    70,   166,     0,    13,     0,    13,   113,   217,     0,
-   218,   113,   217,     0,    13,   113,   220,     0,   218,     0,
-   218,   113,   167,     0,   168,     0,   167,   113,   168,     0,
-   170,     0,   170,     0,    15,     0,    16,     0,   220,   143,
-     3,   172,     0,   220,   111,   172,     0,     0,   105,   173,
-   176,     0,    65,     0,    47,     0,    88,     0,     5,     0,
-     7,     0,   175,     0,   211,     0,   174,     0,   220,     0,
-   217,   113,   220,     0,     6,     0,    10,     0,    11,     0,
-     4,     0,   176,     4,     0,    26,     0,    65,     0,    78,
-     0,   178,     0,    69,    83,     0,    67,    53,     0,    79,
+   106,     0,   162,     0,   161,   162,     0,     4,     0,   174,
+     0,   104,     0,   104,   112,   179,     0,   104,   112,   216,
+     0,   217,   165,   189,     0,     0,   166,   167,     0,   184,
+     0,     0,    29,   105,   152,   168,   106,     0,     0,    80,
+   105,   149,   169,   106,     0,     0,    81,   105,   149,   170,
+   106,     0,    80,   189,    70,   224,   217,   165,     0,    81,
+   189,    70,   224,   217,   165,     0,    20,     0,    20,    37,
+    27,   225,     0,   222,   105,   147,   106,     0,   171,     0,
+    58,    70,   171,     0,    13,     0,    13,   113,   222,     0,
+   223,   113,   222,     0,    13,   113,   225,     0,   223,     0,
+   223,   113,   172,     0,   173,     0,   172,   113,   173,     0,
+   175,     0,   175,     0,    15,     0,    16,     0,   225,   143,
+     3,   177,     0,   225,   111,   177,     0,     0,   105,   178,
+   181,     0,    65,     0,    47,     0,    88,     0,     5,     0,
+     7,     0,   180,     0,   216,     0,   179,     0,   225,     0,
+   222,   113,   225,     0,     6,     0,    10,     0,    11,     0,
+     4,     0,   181,     4,     0,    26,     0,    65,     0,    78,
+     0,   183,     0,    69,    83,     0,    67,    53,     0,    79,
      0,    46,     0,    38,    73,     0,    28,    83,     0,    93,
-     0,    49,     0,   180,     0,    60,     0,    42,     0,    24,
-    83,     0,   177,     0,   178,   208,     0,    25,     0,    50,
+     0,    49,     0,   185,     0,    60,     0,    42,     0,    24,
+    83,     0,   182,     0,   183,   213,     0,    25,     0,    50,
      0,    51,     0,    52,     0,    61,     0,    66,     0,    76,
      0,    85,     0,    87,     0,    92,     0,    94,     0,    95,
      0,    96,     0,    68,     0,   101,     0,   102,     0,    99,
-     0,   100,     0,    98,     0,     0,   185,     0,   186,     0,
-    82,   107,   187,   108,     0,   107,   187,   108,     0,   186,
-   107,   187,   108,     0,   188,     0,   188,   110,   104,     0,
-   188,   110,   104,   110,   188,     0,   189,     0,    19,    98,
-   189,     0,   188,   181,   189,     0,   188,   182,   189,     0,
-   189,   183,   189,     0,   192,   107,   187,   108,     0,   107,
-   187,   108,     0,   193,     0,   194,     0,   193,   191,   193,
-     0,    63,   191,   193,     0,   193,   191,    62,     0,    63,
-   191,    62,     0,   200,     0,   195,     0,     0,    33,    27,
-   105,   190,   176,     0,   103,     0,   103,   114,     0,   114,
+     0,   100,     0,    98,     0,     0,   190,     0,   191,     0,
+    82,   107,   192,   108,     0,   107,   192,   108,     0,   191,
+   107,   192,   108,     0,   193,     0,   193,   110,   104,     0,
+   193,   110,   104,   110,   193,     0,   194,     0,    19,    98,
+   194,     0,   193,   186,   194,     0,   193,   187,   194,     0,
+   194,   188,   194,     0,   197,   107,   192,   108,     0,   107,
+   192,   108,     0,   198,     0,   199,     0,   198,   196,   198,
+     0,    63,   196,   198,     0,   198,   196,    62,     0,    63,
+   196,    62,     0,   205,     0,   200,     0,     0,    33,    27,
+   105,   195,   181,     0,   103,     0,   103,   114,     0,   114,
    103,     0,   114,   103,   114,     0,    82,     0,    48,     0,
-    47,     0,    88,     0,   211,     0,   175,     0,   220,     0,
-   217,     0,    97,    31,   186,     0,    97,    32,   105,   196,
-   106,     0,   197,     0,   196,   110,   197,     0,   104,     0,
-   220,   184,   198,     0,     0,   199,     0,    75,     0,    17,
-     0,    71,     0,   201,     0,   202,     0,   105,   217,   106,
-     0,   201,   105,   203,   106,     0,   204,     0,   203,   110,
-   204,     0,   115,   205,     0,   115,   113,   205,     0,   220,
-     0,   205,   113,   220,     0,     0,   207,     0,    71,     0,
-    35,   172,     0,   105,   106,     0,   105,   209,   106,     0,
-   210,     0,   209,   110,   210,     0,   220,     0,   220,   107,
-   211,   108,     0,   220,   107,   174,   108,     0,   211,     0,
-   104,     0,     9,     0,    12,     0,     0,   213,     0,   214,
-   216,     0,   116,   215,     9,   117,     0,     0,    91,     0,
+    47,     0,    88,     0,   216,     0,   180,     0,   225,     0,
+   222,     0,    97,    31,   191,     0,    97,    32,   105,   201,
+   106,     0,   202,     0,   201,   110,   202,     0,   104,     0,
+   225,   189,   203,     0,     0,   204,     0,    75,     0,    17,
+     0,    71,     0,   206,     0,   207,     0,   105,   222,   106,
+     0,   206,   105,   208,   106,     0,   209,     0,   208,   110,
+   209,     0,   115,   210,     0,   115,   113,   210,     0,   225,
+     0,   210,   113,   225,     0,     0,   212,     0,    71,     0,
+    35,   177,     0,   105,   106,     0,   105,   214,   106,     0,
+   215,     0,   214,   110,   215,     0,   225,     0,   225,   107,
+   216,   108,     0,   225,   107,   179,   108,     0,   216,     0,
+   104,     0,     9,     0,    12,     0,     0,   218,     0,   219,
+   221,     0,   116,   220,     9,   117,     0,     0,    91,     0,
     21,     0,    77,     0,     0,    54,     0,    43,     0,    13,
-     0,    14,     0,    14,     0,     0,   220,     0,     8,     0
+     0,    14,     0,    14,     0,     0,   225,     0,     8,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   313,   319,   325,   341,   366,   368,   371,   375,   380,   387,
-   395,   400,   404,   413,   415,   423,   427,   435,   439,   442,
-   445,   449,   469,   471,   479,   483,   515,   519,   528,   535,
-   548,   555,   557,   569,   582,   593,   598,   604,   610,   612,
-   615,   626,   632,   638,   645,   651,   659,   663,   666,   673,
-   679,   685,   692,   698,   707,   709,   718,   726,   740,   752,
-   758,   774,   783,   793,   803,   808,   815,   822,   832,   838,
-   844,   848,   871,   873,   875,   881,   887,   894,   901,   904,
-   911,   917,   923,   929,   932,   938,   948,   950,   953,   961,
-   967,   976,   982,   999,  1001,  1006,  1010,  1015,  1020,  1026,
-  1030,  1041,  1050,  1059,  1070,  1092,  1096,  1102,  1108,  1114,
-  1124,  1134,  1140,  1154,  1178,  1185,  1199,  1208,  1218,  1228,
-  1238,  1246,  1267,  1276,  1285,  1286,  1288,  1295,  1307,  1317,
-  1325,  1325,  1330,  1335,  1340,  1345,  1349,  1353,  1356,  1359,
-  1364,  1376,  1393,  1398,  1403,  1436,  1446,  1460,  1462,  1463,
-  1464,  1465,  1466,  1467,  1468,  1469,  1470,  1471,  1472,  1473,
-  1479,  1481,  1482,  1485,  1492,  1504,  1506,  1510,  1514,  1515,
-  1516,  1517,  1518,  1522,  1523,  1524,  1525,  1529,  1530,  1537,
-  1537,  1538,  1538,  1539,  1541,  1543,  1548,  1552,  1561,  1565,
-  1570,  1574,  1580,  1590,  1594,  1597,  1600,  1603,  1608,  1617,
-  1625,  1631,  1637,  1644,  1652,  1660,  1669,  1672,  1675,  1676,
-  1686,  1688,  1689,  1690,  1693,  1697,  1702,  1708,  1713,  1716,
-  1719,  1732,  1746,  1750,  1755,  1759,  1764,  1771,  1784,  1786,
-  1789,  1793,  1796,  1801,  1805,  1813,  1828,  1834,  1841,  1854,
-  1866,  1881,  1885,  1902,  1907,  1910,  1915,  1937,  1942,  1947,
-  1953,  1959,  1967,  1975,  1983,  1990,  2000,  2005,  2035,  2037,
-  2040,  2047,  2053,  2055,  2056,  2057,  2060,  2062,  2063,  2066,
-  2071,  2078,  2085,  2087,  2092
+   321,   327,   333,   349,   374,   376,   379,   383,   388,   395,
+   403,   408,   412,   421,   423,   431,   435,   443,   447,   450,
+   453,   457,   477,   479,   487,   491,   523,   527,   536,   543,
+   556,   563,   565,   577,   590,   601,   606,   612,   618,   620,
+   623,   634,   640,   646,   653,   659,   667,   671,   674,   681,
+   687,   693,   700,   706,   715,   717,   726,   734,   748,   760,
+   766,   782,   791,   801,   811,   816,   823,   830,   840,   846,
+   852,   856,   879,   881,   883,   889,   895,   902,   909,   912,
+   919,   925,   931,   937,   940,   946,   956,   958,   961,   969,
+   975,   984,   990,  1007,  1009,  1014,  1018,  1023,  1028,  1034,
+  1038,  1049,  1058,  1067,  1078,  1101,  1102,  1106,  1110,  1110,
+  1116,  1116,  1122,  1122,  1128,  1138,  1148,  1154,  1168,  1192,
+  1199,  1213,  1222,  1232,  1242,  1252,  1260,  1281,  1290,  1299,
+  1300,  1302,  1309,  1321,  1331,  1339,  1339,  1344,  1349,  1354,
+  1359,  1363,  1367,  1370,  1373,  1378,  1390,  1407,  1412,  1417,
+  1450,  1460,  1474,  1476,  1477,  1478,  1479,  1480,  1481,  1482,
+  1483,  1484,  1485,  1486,  1487,  1493,  1495,  1496,  1499,  1506,
+  1518,  1520,  1524,  1528,  1529,  1530,  1531,  1532,  1536,  1537,
+  1538,  1539,  1543,  1544,  1551,  1551,  1552,  1552,  1553,  1555,
+  1557,  1562,  1566,  1575,  1579,  1584,  1588,  1594,  1604,  1608,
+  1611,  1614,  1617,  1622,  1631,  1639,  1645,  1651,  1658,  1666,
+  1674,  1683,  1686,  1689,  1690,  1700,  1702,  1703,  1704,  1707,
+  1711,  1716,  1722,  1727,  1730,  1733,  1746,  1760,  1764,  1769,
+  1773,  1778,  1785,  1798,  1800,  1803,  1807,  1810,  1815,  1819,
+  1827,  1842,  1848,  1855,  1868,  1880,  1895,  1899,  1916,  1921,
+  1924,  1929,  1951,  1956,  1961,  1967,  1973,  1981,  1989,  1997,
+  2004,  2014,  2019,  2049,  2051,  2054,  2061,  2067,  2069,  2070,
+  2071,  2074,  2076,  2077,  2080,  2085,  2092,  2099,  2101,  2106
 };
 #endif
 
@@ -442,18 +450,19 @@
 "optComponentTypeLists","ComponentTypeLists","ComponentType","AlternativeTypeLists",
 "AlternativeType","ClassDeclaration","optUnique","ClassFieldList","ClassField",
 "optWithSyntax","WithSyntax","@3","WithSyntaxFormat","WithSyntaxFormatToken",
-"ExtensionAndException","Type","TypeDeclaration","ComplexTypeReference","ComplexTypeReferenceAmpList",
-"ComplexTypeReferenceElement","ClassFieldIdentifier","ClassFieldName","ValueDefinition",
-"Value","@4","DefinedValue","RestrictedCharacterStringValue","Opaque","BasicTypeId",
-"BasicTypeId_UniverationCompatible","BasicType","BasicString","Union","Intersection",
-"Except","optConstraints","Constraints","SetOfConstraints","ElementSetSpecs",
-"ElementSetSpec","ConstraintSubtypeElement","@5","ConstraintRangeSpec","ConstraintSpec",
-"SingleValue","ContainedSubtype","InnerTypeConstraint","WithComponentsList",
-"WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
-"SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
-"ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
-"UniverationElement","SignedNumber","optTag","Tag","TagTypeValue","TagClass",
-"TagPlicit","TypeRefName","ObjectClassReference","optIdentifier","Identifier", NULL
+"ExtensionAndException","Type","TypeDeclaration","@4","TypeDeclarationSet","@5",
+"@6","@7","ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
+"ClassFieldIdentifier","ClassFieldName","ValueDefinition","Value","@8","DefinedValue",
+"RestrictedCharacterStringValue","Opaque","BasicTypeId","BasicTypeId_UniverationCompatible",
+"BasicType","BasicString","Union","Intersection","Except","optConstraints","Constraints",
+"SetOfConstraints","ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement",
+"@9","ConstraintRangeSpec","ConstraintSpec","SingleValue","ContainedSubtype",
+"InnerTypeConstraint","WithComponentsList","WithComponentsElement","optPresenceConstraint",
+"PresenceConstraint","TableConstraint","SimpleTableConstraint","ComponentRelationConstraint",
+"AtNotationList","AtNotationElement","ComponentIdList","optMarker","Marker",
+"UniverationDefinition","UniverationList","UniverationElement","SignedNumber",
+"optTag","Tag","TagTypeValue","TagClass","TagPlicit","TypeRefName","ObjectClassReference",
+"optIdentifier","Identifier", NULL
 };
 #endif
 
@@ -468,24 +477,24 @@
    148,   148,   149,   149,   150,   150,   151,   151,   151,   151,
    152,   152,   153,   153,   153,   154,   155,   155,   156,   156,
    157,   157,   157,   158,   158,   160,   159,   161,   161,   162,
-   162,   163,   163,   163,   164,   165,   165,   165,   165,   165,
-   165,   165,   165,   165,   165,   165,   166,   166,   166,   166,
-   166,   166,   167,   167,   168,   169,   170,   170,   171,   172,
-   173,   172,   172,   172,   172,   172,   172,   172,   172,   172,
-   174,   174,   175,   175,   175,   176,   176,   177,   177,   177,
-   177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
-   178,   178,   178,   179,   179,   180,   180,   180,   180,   180,
-   180,   180,   180,   180,   180,   180,   180,   180,   180,   181,
-   181,   182,   182,   183,   184,   184,   185,   185,   186,   186,
-   187,   187,   187,   188,   188,   188,   188,   188,   189,   189,
-   189,   189,   189,   189,   189,   189,   189,   189,   190,   189,
-   191,   191,   191,   191,   192,   192,   193,   193,   193,   193,
-   193,   194,   195,   195,   196,   196,   197,   197,   198,   198,
-   199,   199,   199,   200,   200,   201,   202,   203,   203,   204,
-   204,   205,   205,   206,   206,   207,   207,   208,   208,   209,
-   209,   210,   210,   210,   210,   210,   211,   211,   212,   212,
-   213,   214,   215,   215,   215,   215,   216,   216,   216,   217,
-   217,   218,   219,   219,   220
+   162,   163,   163,   163,   164,   166,   165,   167,   168,   167,
+   169,   167,   170,   167,   167,   167,   167,   167,   167,   167,
+   167,   171,   171,   171,   171,   171,   171,   172,   172,   173,
+   174,   175,   175,   176,   177,   178,   177,   177,   177,   177,
+   177,   177,   177,   177,   177,   179,   179,   180,   180,   180,
+   181,   181,   182,   182,   182,   182,   182,   182,   182,   182,
+   182,   182,   182,   182,   182,   183,   183,   183,   184,   184,
+   185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
+   185,   185,   185,   185,   186,   186,   187,   187,   188,   189,
+   189,   190,   190,   191,   191,   192,   192,   192,   193,   193,
+   193,   193,   193,   194,   194,   194,   194,   194,   194,   194,
+   194,   194,   194,   195,   194,   196,   196,   196,   196,   197,
+   197,   198,   198,   198,   198,   198,   199,   200,   200,   201,
+   201,   202,   202,   203,   203,   204,   204,   204,   205,   205,
+   206,   207,   208,   208,   209,   209,   210,   210,   211,   211,
+   212,   212,   213,   213,   214,   214,   215,   215,   215,   215,
+   215,   216,   216,   217,   217,   218,   219,   220,   220,   220,
+   220,   221,   221,   221,   222,   222,   223,   224,   224,   225
 };
 
 static const short yyr2[] = {     0,
@@ -499,336 +508,306 @@
      1,     1,     0,     1,     1,     3,     3,     3,     1,     2,
      1,     3,     2,     1,     1,     5,     0,     1,     1,     3,
      2,     4,     4,     0,     1,     0,     6,     1,     2,     1,
-     1,     1,     3,     3,     3,     1,     4,     4,     4,     6,
-     6,     1,     4,     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,     1,     1,     1,     2,     1,     1,     1,
-     1,     2,     2,     1,     1,     2,     2,     1,     1,     1,
-     1,     1,     2,     1,     2,     1,     1,     1,     1,     1,
+     1,     1,     3,     3,     3,     0,     2,     1,     0,     5,
+     0,     5,     0,     5,     6,     6,     1,     4,     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,     1,     1,
+     1,     2,     1,     1,     1,     1,     2,     2,     1,     1,
+     2,     2,     1,     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,     3,     4,     3,
-     1,     1,     3,     3,     3,     3,     1,     1,     0,     5,
-     1,     2,     2,     3,     1,     1,     1,     1,     1,     1,
-     1,     1,     3,     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,
-     2,     4,     0,     1,     1,     1,     0,     1,     1,     1,
-     1,     1,     0,     1,     1
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+     1,     1,     4,     3,     4,     1,     3,     5,     1,     3,
+     3,     3,     3,     4,     3,     1,     1,     3,     3,     3,
+     3,     1,     1,     0,     5,     1,     2,     2,     3,     1,
+     1,     1,     1,     1,     1,     1,     1,     3,     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,     2,     4,     0,     1,     1,
+     1,     0,     1,     1,     1,     1,     1,     0,     1,     1
 };
 
 static const short yydefact[] = {     0,
-   270,   271,     1,     2,     5,     3,     0,     0,     6,   275,
+   275,   276,     1,     2,     5,     3,     0,     0,     6,   280,
     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,   166,     0,     0,
-   167,   168,   169,     0,   170,   171,   179,   172,   173,   174,
-   175,   176,   177,   178,     0,    24,    25,    27,    28,    31,
+    18,    21,    19,     0,    17,    12,    23,   171,     0,     0,
+   172,   173,   174,     0,   175,   176,   184,   177,   178,   179,
+   180,   181,   182,   183,     0,    24,    25,    27,    28,    31,
     29,    30,    34,     0,     0,    32,     0,    49,     0,    50,
     52,    54,    36,     0,    37,     0,    42,    44,    46,     4,
-    26,   259,   117,   272,     0,   148,     0,     0,   162,   155,
-   159,   161,   149,     0,     0,   150,   154,   158,     0,     0,
-    57,    58,   151,   160,   121,     0,    33,    48,    47,     0,
-     0,    35,    38,     0,     0,     0,     0,   263,    61,    60,
-     0,   260,   267,     0,   163,   157,   156,   153,   152,     0,
+    26,   264,   122,   277,     0,   153,     0,     0,   167,   160,
+   164,   166,   154,     0,     0,   155,   159,   163,     0,     0,
+    57,    58,   156,   165,   126,     0,    33,    48,    47,     0,
+     0,    35,    38,     0,     0,     0,     0,   268,    61,    60,
+   106,   265,   272,     0,   168,   162,   161,   158,   157,     0,
     63,     0,    65,     0,     0,     0,    51,    53,    39,    43,
-    45,     0,   265,   266,   264,     0,   117,   272,   112,     0,
-     0,   185,   185,    59,   185,   115,   164,   151,   106,     0,
-   269,   268,   261,   118,   120,     0,     0,     0,     0,    55,
-   127,   128,   122,   123,   125,   119,   136,   143,   137,   257,
-   144,   145,   258,   134,   133,   135,   131,   129,   140,   138,
-   139,     0,   141,    40,    41,     0,    89,   259,   126,     0,
-     0,   259,     0,     0,   259,     0,     0,   186,   187,   259,
-     0,   105,     0,   165,   259,   259,    64,    68,    67,    66,
-     0,     0,     0,     0,     0,    94,     0,     0,   246,    87,
-    87,    91,   245,     0,   262,     0,   102,     0,    81,    84,
-    85,   259,   116,     0,     0,     0,    74,    75,    79,   244,
-   259,     0,     0,   217,   216,     0,   215,   218,     0,     0,
-     0,   220,     0,   191,   194,     0,   201,   202,   208,   207,
-   234,   235,   219,   222,   221,   273,     0,     0,   273,   256,
-   248,     0,   250,   255,   252,     0,    69,    71,    72,    62,
-   146,    56,   124,   132,   142,   130,     0,    86,    95,    90,
-   247,    88,   244,   244,   113,     0,   107,   259,    83,     0,
-   259,   108,   259,    80,   244,     0,     0,   211,     0,     0,
-     0,     0,     0,     0,   189,   182,   183,   180,   181,     0,
-     0,     0,   184,     0,     0,     0,     0,   259,   274,     0,
-   109,   259,   249,     0,     0,   114,   259,   147,     0,    92,
-    93,   103,   104,   141,    82,   188,    78,    76,    77,   195,
-   209,   212,   213,   206,   204,   223,     0,   236,   200,   192,
-   196,   197,   198,     0,   205,   203,     0,     0,   238,     0,
-   190,     0,   251,     0,     0,    70,    96,     0,   214,   227,
-     0,   225,   185,     0,   199,     0,   240,   242,   237,     0,
-   110,   111,   254,   253,     0,   210,   224,     0,   229,   193,
-   241,     0,   239,   100,     0,    98,   101,   226,   232,   233,
-   231,   228,   230,   243,    97,    99,     0,     0,     0
+    45,     0,   270,   271,   269,     0,    59,   190,     0,   274,
+   273,   266,   123,   125,     0,     0,     0,     0,    55,   132,
+   133,   127,   128,   130,   124,   141,   148,   142,   262,   149,
+   150,   263,   139,   138,   140,   136,   134,   145,   143,   144,
+     0,   146,    40,    41,     0,    89,   264,   131,     0,     0,
+     0,   105,   191,   192,   122,   277,   117,     0,     0,   190,
+   190,   107,   120,   169,   156,   108,     0,   264,    64,    68,
+    67,    66,     0,     0,     0,     0,     0,    94,     0,     0,
+   251,    87,    87,    91,   250,   106,   267,     0,     0,     0,
+   222,   221,     0,   220,   223,     0,     0,     0,   225,     0,
+   196,   199,     0,   206,   207,   213,   212,   239,   240,   224,
+   227,   226,     0,     0,   264,     0,   264,     0,   264,     0,
+     0,   170,   264,    62,   151,    56,   129,   137,   147,   135,
+     0,    86,    95,    90,   252,    88,   249,   249,     0,     0,
+     0,   216,     0,     0,     0,     0,     0,     0,   194,   187,
+   188,   185,   186,     0,     0,     0,   189,     0,     0,     0,
+     0,     0,     0,   102,   109,    81,    84,    85,   264,   121,
+     0,   111,    74,    75,    79,   249,   264,   278,   113,   278,
+   261,   253,     0,   255,   260,   257,     0,    69,    71,    72,
+   152,     0,    92,    93,   193,   200,   214,   217,   218,   211,
+   209,   228,     0,   241,   205,   197,   201,   202,   203,     0,
+   210,   208,     0,     0,   243,   195,   118,     0,   264,     0,
+    83,   264,     0,   264,    80,   249,   264,   279,     0,   264,
+   254,     0,     0,   119,   264,    96,     0,   219,   232,     0,
+   230,   190,     0,   204,     0,   245,   247,   242,     0,   103,
+   104,   146,    82,   110,    78,   112,    76,    77,   106,   114,
+   106,   256,     0,     0,    70,     0,   215,   229,     0,   234,
+   198,   246,     0,   244,   115,   116,   259,   258,   100,     0,
+    98,   101,   231,   237,   238,   236,   233,   235,   248,    97,
+    99,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   427,
+static const short yydefgoto[] = {   432,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
-    56,    57,   107,    58,    74,   195,    75,    76,    77,    59,
-    69,    70,    60,   221,   100,    61,   130,   131,   286,   287,
-   246,   247,   248,   238,   239,   119,   303,   196,   197,   298,
-   299,   405,   415,   416,   249,   250,   155,   156,   173,   174,
-   198,   199,    62,   188,   223,   189,   262,   292,   157,   103,
-   159,   104,   331,   332,   334,   207,   208,   209,   263,   264,
-   265,   388,   320,   266,   267,   268,   269,   391,   392,   422,
-   423,   270,   271,   272,   378,   379,   397,   232,   233,   214,
-   282,   283,   273,   234,   122,   123,   146,   163,   274,   105,
-   338,   275
+    56,    57,   107,    58,    74,   184,    75,    76,    77,    59,
+    69,    70,    60,   213,   100,    61,   130,   131,   327,   328,
+   312,   313,   314,   305,   306,   119,   277,   185,   186,   272,
+   273,   406,   420,   421,   315,   316,   148,   149,   202,   360,
+   363,   369,   101,   162,   163,   187,   188,    62,   177,   215,
+   178,   239,   266,   102,   103,   206,   104,   295,   296,   298,
+   192,   193,   194,   240,   241,   242,   377,   284,   243,   244,
+   245,   246,   380,   381,   427,   428,   247,   248,   249,   354,
+   355,   386,   224,   225,   262,   323,   324,   250,   226,   122,
+   123,   146,   152,   251,   105,   367,   252
 };
 
-static const short yypact[] = {    72,
--32768,-32768,    72,-32768,   -69,-32768,    36,    58,-32768,-32768,
--32768,-32768,    60,-32768,   -48,   137,-32768,-32768,    32,    79,
-    69,    74,   142,   106,   162,   137,-32768,   116,-32768,-32768,
--32768,-32768,-32768,   218,-32768,-32768,   508,-32768,   232,    38,
--32768,-32768,-32768,   127,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   208,   508,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   358,   737,-32768,   156,-32768,    95,-32768,
-   168,-32768,-32768,    47,-32768,   -10,-32768,   169,-32768,-32768,
--32768,    23,   174,-32768,   205,-32768,   212,   224,-32768,-32768,
--32768,-32768,-32768,   243,   215,-32768,-32768,-32768,   812,   297,
--32768,-32768,-32768,-32768,   189,   300,-32768,-32768,-32768,   223,
-   198,-32768,-32768,    72,   223,   201,   203,     6,-32768,-32768,
-   585,-32768,    48,   223,-32768,-32768,-32768,-32768,-32768,    62,
--32768,   200,   202,   204,   263,   466,-32768,-32768,   -69,-32768,
--32768,   199,-32768,-32768,-32768,   301,   -40,   207,   277,   210,
-   247,    66,    76,-32768,   -18,-32768,-32768,   213,-32768,   217,
--32768,-32768,-32768,-32768,-32768,   316,   812,   312,   223,-32768,
--32768,-32768,   216,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+static const short yypact[] = {   194,
+-32768,-32768,   194,-32768,   -46,-32768,    47,    35,-32768,-32768,
+-32768,-32768,    55,-32768,   -34,   133,-32768,-32768,    69,    34,
+    14,    26,    71,    53,   170,   133,-32768,    80,-32768,-32768,
+-32768,-32768,-32768,   167,-32768,-32768,   422,-32768,   208,     4,
+-32768,-32768,-32768,    66,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   188,   422,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   347,   574,-32768,   126,-32768,    49,-32768,
+   138,-32768,-32768,    33,-32768,   -21,-32768,   146,-32768,-32768,
+-32768,   -17,   140,-32768,   190,-32768,   199,   204,-32768,-32768,
+-32768,-32768,-32768,   232,   203,-32768,-32768,-32768,   649,   285,
+-32768,-32768,-32768,-32768,   176,   289,-32768,-32768,-32768,   198,
+   189,-32768,-32768,   194,   198,   191,   200,     5,-32768,-32768,
+   215,-32768,   -18,   198,-32768,-32768,-32768,-32768,-32768,    28,
+-32768,   195,   196,   205,   256,   312,-32768,-32768,   -46,-32768,
+-32768,   260,-32768,-32768,-32768,   299,-32768,   -10,   499,-32768,
+-32768,-32768,-32768,-32768,   306,   649,   304,   198,-32768,-32768,
+-32768,   202,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   220,   221,-32768,-32768,   101,-32768,    27,-32768,   206,
-   298,    11,   219,   227,     0,   242,   256,-32768,   228,     0,
-   257,-32768,    17,-32768,    12,   225,-32768,-32768,-32768,-32768,
-   324,   199,   324,   312,   466,   234,   199,   466,-32768,   252,
-   252,-32768,-32768,   662,-32768,   312,   231,   110,-32768,-32768,
--32768,   225,-32768,   242,   275,   238,   236,-32768,-32768,    21,
-   225,   250,   323,-32768,-32768,    -2,-32768,-32768,   226,    72,
-   242,-32768,   244,   100,   253,   246,    -2,-32768,-32768,-32768,
-   249,-32768,-32768,-32768,-32768,   312,   242,   251,   312,-32768,
--32768,   124,-32768,-32768,   258,   133,-32768,-32768,-32768,-32768,
--32768,   352,-32768,   352,-32768,-32768,   279,-32768,-32768,-32768,
--32768,-32768,    21,    21,-32768,   214,-32768,    11,-32768,   259,
-   225,-32768,     3,-32768,    21,   456,   254,   255,   261,   178,
-   266,   269,   260,   267,-32768,-32768,-32768,-32768,-32768,   264,
-   456,   456,-32768,   456,   242,   274,   262,   225,-32768,   268,
--32768,   225,-32768,    63,   214,-32768,    12,-32768,   273,-32768,
+   214,   217,-32768,-32768,    65,-32768,    27,-32768,   212,   209,
+   186,-32768,-32768,   223,    67,   226,   295,   229,   265,   -22,
+   -13,-32768,-32768,-32768,   233,-32768,   236,   221,-32768,-32768,
+-32768,-32768,   336,   260,   336,   304,   312,   245,   260,   312,
+-32768,   253,   253,-32768,-32768,-32768,-32768,   186,   246,   318,
+-32768,-32768,    90,-32768,-32768,   235,   194,   186,-32768,   239,
+   145,   255,   242,    90,-32768,-32768,-32768,   249,-32768,-32768,
+-32768,-32768,   186,   328,     7,   266,     3,   292,     3,   293,
+    42,-32768,     2,-32768,-32768,   360,-32768,   360,-32768,-32768,
+   283,-32768,-32768,-32768,-32768,-32768,    -1,    -1,   261,   251,
+   269,   262,   267,   154,   273,   276,   277,   274,-32768,-32768,
+-32768,-32768,-32768,   280,   251,   251,-32768,   251,   186,   448,
+   271,   279,   304,   278,   281,-32768,-32768,-32768,   221,-32768,
+   322,-32768,   291,-32768,-32768,    -1,   221,   304,-32768,   304,
+-32768,-32768,    75,-32768,-32768,   288,   108,-32768,-32768,-32768,
+-32768,   298,-32768,-32768,-32768,-32768,-32768,-32768,   290,-32768,
+-32768,   223,    11,-32768,-32768,   300,-32768,-32768,-32768,   297,
+-32768,-32768,     8,   111,-32768,-32768,-32768,   218,     7,   282,
+-32768,   221,   303,     6,-32768,    -1,   221,-32768,   305,   221,
+-32768,    36,   218,-32768,     2,-32768,   336,-32768,-32768,   114,
+-32768,   -10,   186,-32768,   304,   307,-32768,-32768,   271,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   265,-32768,-32768,   228,    40,-32768,-32768,   248,
--32768,-32768,-32768,   272,-32768,-32768,     9,   158,-32768,   662,
--32768,   662,-32768,   280,   283,-32768,-32768,   324,-32768,-32768,
-   161,-32768,   -18,   242,-32768,   312,   281,-32768,-32768,   262,
--32768,-32768,-32768,-32768,   148,   352,-32768,    40,     5,   192,
-   281,   312,-32768,-32768,    24,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   381,   385,-32768
+-32768,-32768,   310,   311,-32768,   187,   360,-32768,    11,    15,
+   201,   307,   304,-32768,-32768,-32768,-32768,-32768,-32768,    24,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   421,   424,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   384,-32768,   276,-32768,   380,-32768,-32768,   369,-32768,
--32768,   341,-32768,-32768,-32768,-32768,   325,-32768,   287,-32768,
--32768,   288,-32768,-32768,   338,-32768,-32768,   239,-32768,    64,
-   211,-32768,    99,-32768,   105,-32768,   183,-32768,   190,-32768,
--32768,-32768,-32768,     1,  -190,   -66,  -303,   -50,-32768,   209,
-  -196,  -117,-32768,   -71,-32768,  -275,  -115,  -218,   -41,  -120,
--32768,    26,-32768,-32768,-32768,  -146,-32768,   107,  -166,    28,
-  -138,-32768,   153,-32768,  -246,-32768,-32768,-32768,    22,-32768,
--32768,-32768,-32768,-32768,-32768,    29,    37,  -216,-32768,-32768,
--32768,    88,  -132,   -79,-32768,-32768,-32768,-32768,    10,-32768,
-   159,    -7
+-32768,   419,-32768,   294,-32768,   414,-32768,-32768,   402,-32768,
+-32768,   373,-32768,-32768,-32768,-32768,   357,-32768,   323,-32768,
+-32768,   327,-32768,-32768,   379,-32768,-32768,   308,-32768,    70,
+   192,-32768,    82,-32768,    89,-32768,   227,-32768,   230,-32768,
+-32768,-32768,-32768,    41,  -235,   -81,  -370,-32768,-32768,-32768,
+-32768,-32768,  -140,-32768,   241,  -183,  -113,-32768,  -115,-32768,
+  -292,   -68,  -210,   -24,   314,-32768,    20,-32768,-32768,-32768,
+  -193,-32768,   168,   -84,    84,  -112,-32768,   224,-32768,  -196,
+-32768,-32768,-32768,    56,-32768,-32768,-32768,-32768,-32768,-32768,
+    81,    86,  -225,-32768,-32768,-32768,    97,  -133,   -80,-32768,
+-32768,-32768,-32768,    21,-32768,   155,    -7
 };
 
 
-#define	YYLAST		908
+#define	YYLAST		745
 
 
 static const short yytable[] = {    15,
-   158,   231,   121,   191,   294,    15,   211,    10,   212,     5,
-    10,   240,     5,   101,   101,   120,    10,   175,    10,    10,
-   190,   419,   102,   102,    10,   180,   143,   414,   183,    65,
-   352,   245,    72,   314,   245,     7,    79,   114,   171,   172,
-    28,   171,   172,    10,    11,    10,    64,    10,    65,    71,
-     1,     2,   117,    78,    10,   228,    67,   132,    19,     1,
-     2,   228,    63,   204,  -270,    64,    79,    10,    11,   384,
-    10,   180,   124,   365,   183,   420,   401,   310,   402,   421,
-   284,    63,   144,    78,     1,     2,   350,   351,   206,   376,
-   161,   229,   191,    16,   324,   191,   145,   229,   359,   115,
-   318,   162,    72,   237,   175,   -73,   237,    79,   133,   190,
-   340,   319,   190,   158,   237,   118,   165,   240,   118,    71,
-   280,   396,   281,   139,    78,   132,   118,   118,   193,   425,
-   160,   230,  -244,   164,    10,   241,  -244,    29,   118,     1,
-     2,    12,   118,   390,   176,   192,    68,   204,   288,   290,
-    20,   414,   243,   296,    30,   112,   301,   204,    21,    31,
-   218,   220,   171,   172,    34,    17,   280,   166,   374,   406,
-   205,   167,   206,   353,    73,   309,   133,   360,   219,    22,
-   210,    23,   206,   178,   315,    10,   180,   181,   182,   183,
-    24,    33,   371,   372,   242,   373,    32,   251,   326,   327,
-   328,   329,   251,   109,   110,   285,   226,   289,   417,   330,
-   227,   284,   385,   171,   172,   307,   295,   193,   417,   308,
-   193,    10,   180,    36,   254,   183,     1,     2,   305,   343,
-    10,    83,    84,   344,   192,     1,     2,   192,   346,   364,
-    37,   241,   347,   160,   357,    66,   409,   178,    80,    10,
-   180,   181,   182,   183,     1,     2,   321,   322,   380,   158,
-   252,   158,   382,   399,   108,   258,   407,   400,   339,   323,
-   408,   339,   111,   116,   253,     1,     2,   171,   172,   178,
-   288,    10,   180,   181,   182,   183,   124,   125,   254,   255,
-   326,   327,   328,   329,   126,   128,   127,   129,   354,   134,
-   242,   135,   136,   138,   256,   251,   141,   142,   170,   200,
-   168,  -271,   169,   201,   202,   192,   203,   213,   216,    10,
-   254,   215,   235,   257,   236,   276,   279,   291,   222,   258,
-   297,   225,   224,   244,   277,   375,   285,   354,   259,   289,
-   118,   302,   306,   312,   311,   313,   260,   316,   261,   317,
-   333,   325,   335,   337,   192,   348,   341,   394,   361,   393,
-    82,   258,   349,   363,   345,   368,   356,   370,   362,   398,
-    83,    84,   206,   367,   369,   381,   377,   387,   389,   395,
-   428,    85,    38,    86,   429,    87,     6,   403,   398,   160,
-   404,   160,    18,   412,    35,    88,    81,   137,   113,    89,
-   393,   140,   106,    90,   424,   217,    91,    41,    42,    43,
-   386,   358,   355,   304,   194,   426,   300,    92,    45,   336,
-   278,   410,    93,    46,    94,    47,    95,   366,   413,   418,
-   293,   383,   411,    48,     0,    96,    97,   342,     0,     0,
-     0,     0,    49,     0,    50,     0,     0,     0,     0,    51,
-    98,    52,    53,    54,     0,     0,     0,     0,     0,     0,
-     0,   178,    99,    10,   180,   181,   182,   183,     1,     2,
-   177,   178,   179,    10,   180,   181,   182,   183,     1,     2,
-     0,     0,     0,     0,     0,     0,     0,     0,   253,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   254,   255,     0,     0,     0,     0,     0,     0,
-     0,     0,   184,     0,     0,    10,     0,     0,   256,     0,
-     1,     2,     0,     0,     0,     0,     0,     0,     0,     0,
-   185,     0,    38,     0,     0,     0,     0,   257,     0,     0,
-     0,     0,     0,   258,     0,     0,     0,    39,     0,     0,
-     0,    40,   259,   186,     0,     0,     0,    41,    42,    43,
-   260,     0,   261,    44,     0,     0,     0,     0,    45,     0,
-   187,     0,     0,    46,     0,    47,     0,     0,     0,     0,
-     0,     0,     0,    48,     0,     0,     0,     0,     0,     0,
-     0,     0,    49,     0,    50,     0,     0,   147,   148,    51,
-     0,    52,    53,    54,   149,     0,     0,     0,    85,    38,
-    86,     0,    87,   150,     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,   151,     0,    92,    45,     0,     0,     0,    93,
-    46,    94,    47,    95,     0,     0,     0,     0,     0,     0,
-    48,     0,    96,    97,   152,   153,     0,     0,     0,    49,
-     0,    50,     0,   154,   147,   148,    51,    98,    52,    53,
-    54,   149,     0,     0,     0,    85,    38,    86,     0,    87,
-   150,     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,   151,
-     0,    92,    45,     0,     0,     0,    93,    46,    94,    47,
-    95,     0,     0,     0,     0,     0,     0,    48,     0,    96,
-    97,   152,   153,     0,     0,     0,    49,     0,    50,    83,
-    84,     0,     0,    51,    98,    52,    53,    54,     0,     0,
-    85,    38,    86,     0,    87,     0,     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,     0,     0,    92,    45,     0,     0,
-     0,    93,    46,    94,    47,    95,     0,     0,     0,     0,
-     0,     0,    48,     0,    96,    97,     0,     0,     0,     0,
-     0,    49,     0,    50,     1,     2,     0,     0,    51,    98,
-    52,    53,    54,     0,     0,    85,    38,    86,     0,    87,
-     0,     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,     0,
-     0,    92,    45,     0,     0,     0,    93,    46,    94,    47,
-    95,     0,     0,     0,     0,     0,     0,    48,     0,    96,
-    97,     0,     0,     0,     0,     0,    49,     0,    50,     0,
-     0,     0,     0,    51,    98,    52,    53,    54
+   120,   121,   180,   223,   268,    15,   258,   260,   203,    10,
+    10,    10,   117,    10,    10,    10,     1,     2,    10,   307,
+     5,   164,    67,     5,   150,   143,   114,   419,   415,    65,
+   416,   424,    72,   220,   311,   151,    79,   311,   160,   161,
+    10,   160,   161,    10,   169,     1,     2,   172,    65,    10,
+   169,   333,   334,   172,    10,    11,    63,    64,     7,   190,
+    71,   220,    10,    11,    78,   390,    79,   179,   190,   221,
+    16,   190,    19,    10,   132,    63,    64,    28,     1,     2,
+   403,   144,   257,   180,   191,   425,   180,   341,   115,   426,
+   365,   259,    29,   191,    78,   145,   191,   221,   118,    30,
+   164,   270,    72,   352,   275,   222,   304,    79,   -73,   304,
+   304,    31,    68,    73,   379,   310,   154,   118,   118,   133,
+   385,   118,   118,   307,   204,    32,   264,   325,   182,   430,
+    71,   132,  -249,   155,   139,    78,  -249,   156,    33,   321,
+   398,   112,   118,   279,   153,   321,    20,   322,   179,   210,
+   212,   179,    12,   288,    21,   165,   181,   109,   110,   167,
+    17,    10,   169,   170,   171,   172,   407,   336,   302,   207,
+   218,  -275,    34,   308,   219,    22,   133,    23,   211,   124,
+   371,   329,   347,   348,   372,   349,    24,    36,   410,    37,
+   419,   167,   282,    10,   169,   170,   171,   172,     1,     2,
+   231,   160,   161,   283,   229,    10,     1,     2,   269,   182,
+     1,     2,   182,   374,   350,   340,   388,   375,   230,   408,
+   389,    66,   422,   409,   391,    10,   169,   361,    80,   172,
+     1,     2,   231,   232,   108,   366,   422,   181,   325,   404,
+   181,   235,   111,   290,   291,   292,   293,   309,   233,   317,
+   116,   317,   124,   326,   294,   330,   167,   287,    10,   169,
+   170,   171,   172,     1,     2,   285,   286,   234,     1,     2,
+   160,   161,   125,   235,   160,   161,   127,   308,    83,    84,
+   395,   126,   236,   230,   128,   129,   399,   134,   135,   401,
+   237,   136,   238,   329,   138,   357,   141,   231,   232,   290,
+   291,   292,   293,   147,   142,   157,   158,   189,   208,   159,
+   368,    10,   368,   233,   214,   228,   166,   167,   168,    10,
+   169,   170,   171,   172,     1,     2,   216,   217,   227,   253,
+  -276,   254,   234,   255,   256,   382,   118,   261,   235,   265,
+   263,   271,   276,   280,   281,   387,   289,   236,   299,    82,
+   392,   309,   297,   301,   303,   237,   317,   238,   173,    83,
+    84,   318,   320,   331,   326,   392,   332,   330,   335,   339,
+    85,    38,    86,   337,    87,   338,   174,   387,   181,   191,
+   343,   345,   344,   346,    88,   353,   356,   394,    89,   358,
+   359,   362,    90,   181,   373,    91,    41,    42,    43,   175,
+   364,   382,   376,   378,   384,   429,    92,    45,   396,   383,
+   400,    93,    46,    94,    47,    95,   176,   417,   418,   413,
+   433,     6,    48,   434,    96,    97,    18,    35,    81,    10,
+   113,    49,   183,    50,     1,     2,   137,   140,    51,    98,
+    52,    53,    54,   106,   405,   397,    38,   393,   274,   278,
+   319,    99,   342,   167,   267,    10,   169,   170,   171,   172,
+   431,    39,   205,   209,   423,    40,   411,   300,   402,   414,
+   412,    41,    42,    43,   370,     0,     0,    44,     0,     0,
+     0,     0,    45,     0,     0,     0,     0,    46,     0,    47,
+     0,     0,     0,     0,   231,     0,     0,    48,     0,     0,
+     0,     0,     0,     0,     0,     0,    49,     0,    50,   351,
+     0,   195,   196,    51,     0,    52,    53,    54,   197,     0,
+     0,     0,    85,    38,    86,     0,    87,   198,     0,     0,
+     0,     0,     0,     0,     0,   235,    88,     0,     0,     0,
+    89,     0,     0,     0,    90,     0,     0,    91,    41,    42,
+    43,     0,     0,     0,     0,     0,   199,     0,    92,    45,
+     0,     0,     0,    93,    46,    94,    47,    95,     0,     0,
+     0,     0,     0,     0,    48,     0,    96,    97,   200,   201,
+     0,     0,     0,    49,     0,    50,    83,    84,     0,     0,
+    51,    98,    52,    53,    54,     0,     0,    85,    38,    86,
+     0,    87,     0,     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,     0,     0,    92,    45,     0,     0,     0,    93,    46,
+    94,    47,    95,     0,     0,     0,     0,     0,     0,    48,
+     0,    96,    97,     0,     0,     0,     0,     0,    49,     0,
+    50,     1,     2,     0,     0,    51,    98,    52,    53,    54,
+     0,     0,    85,    38,    86,     0,    87,     0,     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,     0,     0,    92,    45,
+     0,     0,     0,    93,    46,    94,    47,    95,     0,     0,
+     0,     0,     0,     0,    48,     0,    96,    97,     0,     0,
+     0,     0,     0,    49,     0,    50,     0,     0,     0,     0,
+    51,    98,    52,    53,    54
 };
 
 static const short yycheck[] = {     7,
-   121,   198,    82,   136,   223,    13,   153,     8,   155,     0,
-     8,   202,     3,    64,    65,    82,     8,   135,     8,     8,
-   136,    17,    64,    65,     8,     9,    21,     4,    12,    37,
-   306,    32,    40,   250,    32,   105,    44,    48,    15,    16,
-     9,    15,    16,     8,     9,     8,    37,     8,    56,    40,
-    13,    14,    30,    44,     8,    35,    19,    99,   107,    13,
-    14,    35,    37,    82,   105,    56,    74,     8,     9,   345,
-     8,     9,   113,   320,    12,    71,   380,   244,   382,    75,
-   213,    56,    77,    74,    13,    14,   303,   304,   107,   336,
-    43,    71,   225,    36,   261,   228,    91,    71,   315,   110,
-   103,    54,   110,   104,   222,   106,   104,   115,    99,   225,
-   277,   114,   228,   234,   104,   116,   124,   308,   116,   110,
-   104,   113,   106,   114,   115,   167,   116,   116,   136,   106,
-   121,   198,   106,   124,     8,   202,   110,    59,   116,    13,
-    14,   106,   116,   104,   135,   136,   109,    82,   215,   216,
-    14,     4,   203,   225,    86,   109,   228,    82,    22,    86,
-   168,   169,    15,    16,     3,   106,   104,   106,   335,   388,
-   105,   110,   107,   306,    48,   242,   167,   316,   169,    43,
-   105,    45,   107,     6,   251,     8,     9,    10,    11,    12,
-    54,    86,   331,   332,   202,   334,    55,   205,    99,   100,
-   101,   102,   210,   109,   110,   213,   106,   215,   405,   110,
-   110,   344,   345,    15,    16,   106,   224,   225,   415,   110,
-   228,     8,     9,   108,    47,    12,    13,    14,   236,   106,
-     8,    13,    14,   110,   225,    13,    14,   228,   106,    62,
-    23,   308,   110,   234,   311,    14,   393,     6,    41,     8,
-     9,    10,    11,    12,    13,    14,    31,    32,   338,   380,
-    19,   382,   342,   106,   109,    88,   106,   110,   276,   260,
-   110,   279,   105,   105,    33,    13,    14,    15,    16,     6,
-   347,     8,     9,    10,    11,    12,   113,    83,    47,    48,
-    99,   100,   101,   102,    83,    53,    73,    83,   306,     3,
-   308,   113,     3,   106,    63,   313,   106,   105,   105,     9,
-   111,   105,   111,    37,   105,   306,    70,   105,     3,     8,
-    47,   105,   117,    82,    27,    70,    70,     4,   113,    88,
-    97,   111,   113,   107,   107,    62,   344,   345,    97,   347,
-   116,    90,   112,   106,    70,   110,   105,    98,   107,    27,
-    98,   108,   107,   105,   345,     4,   106,   110,   105,   367,
-     3,    88,    84,   103,   107,   106,   108,   104,   114,   377,
-    13,    14,   107,   105,   108,   108,   115,   105,   114,   108,
-     0,    24,    25,    26,     0,    28,     3,   108,   396,   380,
-   108,   382,    13,   113,    26,    38,    56,   110,    74,    42,
-   408,   115,    65,    46,   412,   167,    49,    50,    51,    52,
-   347,   313,   308,   231,   139,   415,   227,    60,    61,   267,
-   210,   394,    65,    66,    67,    68,    69,   321,   400,   408,
-   222,   344,   396,    76,    -1,    78,    79,   279,    -1,    -1,
-    -1,    -1,    85,    -1,    87,    -1,    -1,    -1,    -1,    92,
-    93,    94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,     6,   105,     8,     9,    10,    11,    12,    13,    14,
-     5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    33,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    47,    48,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    47,    -1,    -1,     8,    -1,    -1,    63,    -1,
-    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    65,    -1,    25,    -1,    -1,    -1,    -1,    82,    -1,    -1,
-    -1,    -1,    -1,    88,    -1,    -1,    -1,    40,    -1,    -1,
-    -1,    44,    97,    88,    -1,    -1,    -1,    50,    51,    52,
-   105,    -1,   107,    56,    -1,    -1,    -1,    -1,    61,    -1,
-   105,    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    85,    -1,    87,    -1,    -1,    13,    14,    92,
-    -1,    94,    95,    96,    20,    -1,    -1,    -1,    24,    25,
-    26,    -1,    28,    29,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    38,    -1,    -1,    -1,    42,    -1,    -1,    -1,
-    46,    -1,    -1,    49,    50,    51,    52,    -1,    -1,    -1,
-    -1,    -1,    58,    -1,    60,    61,    -1,    -1,    -1,    65,
-    66,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,
-    76,    -1,    78,    79,    80,    81,    -1,    -1,    -1,    85,
-    -1,    87,    -1,    89,    13,    14,    92,    93,    94,    95,
-    96,    20,    -1,    -1,    -1,    24,    25,    26,    -1,    28,
-    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,
-    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    -1,
-    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    58,
-    -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
-    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    78,
-    79,    80,    81,    -1,    -1,    -1,    85,    -1,    87,    13,
-    14,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
-    24,    25,    26,    -1,    28,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    42,    -1,
-    -1,    -1,    46,    -1,    -1,    49,    50,    51,    52,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    -1,    -1,
-    -1,    65,    66,    67,    68,    69,    -1,    -1,    -1,    -1,
-    -1,    -1,    76,    -1,    78,    79,    -1,    -1,    -1,    -1,
-    -1,    85,    -1,    87,    13,    14,    -1,    -1,    92,    93,
-    94,    95,    96,    -1,    -1,    24,    25,    26,    -1,    28,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,
-    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    -1,
-    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    60,    61,    -1,    -1,    -1,    65,    66,    67,    68,
-    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    78,
-    79,    -1,    -1,    -1,    -1,    -1,    85,    -1,    87,    -1,
-    -1,    -1,    -1,    92,    93,    94,    95,    96
+    82,    82,   136,   187,   215,    13,   200,   201,   149,     8,
+     8,     8,    30,     8,     8,     8,    13,    14,     8,   255,
+     0,   135,    19,     3,    43,    21,    48,     4,   399,    37,
+   401,    17,    40,    35,    32,    54,    44,    32,    15,    16,
+     8,    15,    16,     8,     9,    13,    14,    12,    56,     8,
+     9,   277,   278,    12,     8,     9,    37,    37,   105,    82,
+    40,    35,     8,     9,    44,   358,    74,   136,    82,    71,
+    36,    82,   107,     8,    99,    56,    56,     9,    13,    14,
+   373,    77,   105,   217,   107,    71,   220,   284,   110,    75,
+   316,   105,    59,   107,    74,    91,   107,    71,   116,    86,
+   214,   217,   110,   300,   220,   187,   104,   115,   106,   104,
+   104,    86,   109,    48,   104,   256,   124,   116,   116,    99,
+   113,   116,   116,   359,   149,    55,   208,   261,   136,   106,
+   110,   156,   106,   106,   114,   115,   110,   110,    86,   104,
+   366,   109,   116,   228,   124,   104,    14,   106,   217,   157,
+   158,   220,   106,   238,    22,   135,   136,   109,   110,     6,
+   106,     8,     9,    10,    11,    12,   377,   280,   253,   149,
+   106,   105,     3,   255,   110,    43,   156,    45,   158,   113,
+   106,   263,   295,   296,   110,   298,    54,   108,   382,    23,
+     4,     6,   103,     8,     9,    10,    11,    12,    13,    14,
+    47,    15,    16,   114,    19,     8,    13,    14,   216,   217,
+    13,    14,   220,   106,   299,    62,   106,   110,    33,   106,
+   110,    14,   406,   110,   358,     8,     9,   309,    41,    12,
+    13,    14,    47,    48,   109,   317,   420,   217,   372,   373,
+   220,    88,   105,    99,   100,   101,   102,   255,    63,   257,
+   105,   259,   113,   261,   110,   263,     6,   237,     8,     9,
+    10,    11,    12,    13,    14,    31,    32,    82,    13,    14,
+    15,    16,    83,    88,    15,    16,    73,   359,    13,    14,
+   362,    83,    97,    33,    53,    83,   367,     3,   113,   370,
+   105,     3,   107,   375,   106,   303,   106,    47,    48,    99,
+   100,   101,   102,    89,   105,   111,   111,     9,     3,   105,
+   318,     8,   320,    63,   113,   107,     5,     6,     7,     8,
+     9,    10,    11,    12,    13,    14,   113,   111,   117,   107,
+   105,    37,    82,   105,    70,   343,   116,   105,    88,     4,
+   105,    97,    90,    98,    27,   353,   108,    97,   107,     3,
+   358,   359,    98,   105,    27,   105,   364,   107,    47,    13,
+    14,    70,    70,     4,   372,   373,    84,   375,   108,   103,
+    24,    25,    26,   105,    28,   114,    65,   385,   358,   107,
+   105,   108,   106,   104,    38,   115,   108,   106,    42,   112,
+   110,    70,    46,   373,   107,    49,    50,    51,    52,    88,
+   110,   409,   105,   114,   108,   413,    60,    61,   106,   110,
+   106,    65,    66,    67,    68,    69,   105,   108,   108,   113,
+     0,     3,    76,     0,    78,    79,    13,    26,    56,     8,
+    74,    85,   139,    87,    13,    14,   110,   115,    92,    93,
+    94,    95,    96,    65,   375,   364,    25,   359,   219,   223,
+   259,   105,   285,     6,   214,     8,     9,    10,    11,    12,
+   420,    40,   149,   156,   409,    44,   383,   244,   372,   389,
+   385,    50,    51,    52,   320,    -1,    -1,    56,    -1,    -1,
+    -1,    -1,    61,    -1,    -1,    -1,    -1,    66,    -1,    68,
+    -1,    -1,    -1,    -1,    47,    -1,    -1,    76,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    85,    -1,    87,    62,
+    -1,    13,    14,    92,    -1,    94,    95,    96,    20,    -1,
+    -1,    -1,    24,    25,    26,    -1,    28,    29,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    88,    38,    -1,    -1,    -1,
+    42,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,
+    52,    -1,    -1,    -1,    -1,    -1,    58,    -1,    60,    61,
+    -1,    -1,    -1,    65,    66,    67,    68,    69,    -1,    -1,
+    -1,    -1,    -1,    -1,    76,    -1,    78,    79,    80,    81,
+    -1,    -1,    -1,    85,    -1,    87,    13,    14,    -1,    -1,
+    92,    93,    94,    95,    96,    -1,    -1,    24,    25,    26,
+    -1,    28,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    38,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,
+    -1,    -1,    49,    50,    51,    52,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    60,    61,    -1,    -1,    -1,    65,    66,
+    67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+    -1,    78,    79,    -1,    -1,    -1,    -1,    -1,    85,    -1,
+    87,    13,    14,    -1,    -1,    92,    93,    94,    95,    96,
+    -1,    -1,    24,    25,    26,    -1,    28,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,
+    42,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,
+    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,
+    -1,    -1,    -1,    65,    66,    67,    68,    69,    -1,    -1,
+    -1,    -1,    -1,    -1,    76,    -1,    78,    79,    -1,    -1,
+    -1,    -1,    -1,    85,    -1,    87,    -1,    -1,    -1,    -1,
+    92,    93,    94,    95,    96
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -1374,13 +1353,13 @@
   switch (yyn) {
 
 case 1:
-#line 314 "asn1p_y.y"
+#line 322 "asn1p_y.y"
 {
 		*(void **)param = yyvsp[0].a_grammar;
 	;
     break;}
 case 2:
-#line 320 "asn1p_y.y"
+#line 328 "asn1p_y.y"
 {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
@@ -1388,14 +1367,14 @@
 	;
     break;}
 case 3:
-#line 325 "asn1p_y.y"
+#line 333 "asn1p_y.y"
 {
 		yyval.a_grammar = yyvsp[-1].a_grammar;
 		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
 	;
     break;}
 case 4:
-#line 346 "asn1p_y.y"
+#line 354 "asn1p_y.y"
 {
 
 		if(yyvsp[-1].a_module) {
@@ -1412,27 +1391,27 @@
 	;
     break;}
 case 5:
-#line 367 "asn1p_y.y"
+#line 375 "asn1p_y.y"
 { yyval.a_oid = 0; ;
     break;}
 case 6:
-#line 368 "asn1p_y.y"
+#line 376 "asn1p_y.y"
 { yyval.a_oid = yyvsp[0].a_oid; ;
     break;}
 case 7:
-#line 372 "asn1p_y.y"
+#line 380 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 	;
     break;}
 case 8:
-#line 375 "asn1p_y.y"
+#line 383 "asn1p_y.y"
 {
 		yyval.a_oid = 0;
 	;
     break;}
 case 9:
-#line 381 "asn1p_y.y"
+#line 389 "asn1p_y.y"
 {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1441,7 +1420,7 @@
 	;
     break;}
 case 10:
-#line 387 "asn1p_y.y"
+#line 395 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1450,74 +1429,74 @@
 	;
     break;}
 case 11:
-#line 396 "asn1p_y.y"
+#line 404 "asn1p_y.y"
 {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
 	;
     break;}
 case 12:
-#line 400 "asn1p_y.y"
+#line 408 "asn1p_y.y"
 {		/* iso(1) */
 		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
 		yyval.a_oid_arc.number = yyvsp[-1].a_int;
 	;
     break;}
 case 13:
-#line 404 "asn1p_y.y"
+#line 412 "asn1p_y.y"
 {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
 	;
     break;}
 case 14:
-#line 414 "asn1p_y.y"
+#line 422 "asn1p_y.y"
 { yyval.a_module_flags = MSF_NOFLAGS; ;
     break;}
 case 15:
-#line 415 "asn1p_y.y"
+#line 423 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 16:
-#line 424 "asn1p_y.y"
+#line 432 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 17:
-#line 427 "asn1p_y.y"
+#line 435 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
 	;
     break;}
 case 18:
-#line 436 "asn1p_y.y"
+#line 444 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
 	;
     break;}
 case 19:
-#line 439 "asn1p_y.y"
+#line 447 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
 	;
     break;}
 case 20:
-#line 442 "asn1p_y.y"
+#line 450 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
 	;
     break;}
 case 21:
-#line 445 "asn1p_y.y"
+#line 453 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
 	;
     break;}
 case 22:
-#line 449 "asn1p_y.y"
+#line 457 "asn1p_y.y"
 {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -1535,23 +1514,23 @@
 	;
     break;}
 case 23:
-#line 470 "asn1p_y.y"
+#line 478 "asn1p_y.y"
 { yyval.a_module = 0; ;
     break;}
 case 24:
-#line 471 "asn1p_y.y"
+#line 479 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 25:
-#line 480 "asn1p_y.y"
+#line 488 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 26:
-#line 483 "asn1p_y.y"
+#line 491 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 
@@ -1581,13 +1560,13 @@
 	;
     break;}
 case 27:
-#line 516 "asn1p_y.y"
+#line 524 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 28:
-#line 519 "asn1p_y.y"
+#line 527 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1599,7 +1578,7 @@
 	;
     break;}
 case 29:
-#line 528 "asn1p_y.y"
+#line 536 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1609,7 +1588,7 @@
 	;
     break;}
 case 30:
-#line 535 "asn1p_y.y"
+#line 543 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1619,7 +1598,7 @@
 	;
     break;}
 case 31:
-#line 548 "asn1p_y.y"
+#line 556 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1629,11 +1608,11 @@
 	;
     break;}
 case 32:
-#line 556 "asn1p_y.y"
+#line 564 "asn1p_y.y"
 { asn1p_lexer_hack_push_encoding_control(); ;
     break;}
 case 33:
-#line 557 "asn1p_y.y"
+#line 565 "asn1p_y.y"
 {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -1644,7 +1623,7 @@
 	;
     break;}
 case 34:
-#line 569 "asn1p_y.y"
+#line 577 "asn1p_y.y"
 {
 		return yyerror(
 			"Attempt to redefine a standard basic type, "
@@ -1653,7 +1632,7 @@
 	;
     break;}
 case 35:
-#line 583 "asn1p_y.y"
+#line 591 "asn1p_y.y"
 {
 		if(!saved_aid && 0)
 			return yyerror("Unterminated IMPORTS FROM, "
@@ -1663,13 +1642,13 @@
 	;
     break;}
 case 36:
-#line 593 "asn1p_y.y"
+#line 601 "asn1p_y.y"
 {
 		return yyerror("Empty IMPORTS list");
 	;
     break;}
 case 37:
-#line 599 "asn1p_y.y"
+#line 607 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1677,22 +1656,22 @@
 	;
     break;}
 case 38:
-#line 604 "asn1p_y.y"
+#line 612 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
 	;
     break;}
 case 39:
-#line 611 "asn1p_y.y"
+#line 619 "asn1p_y.y"
 { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ;
     break;}
 case 40:
-#line 612 "asn1p_y.y"
+#line 620 "asn1p_y.y"
 { yyval.a_aid.oid = yyvsp[0].a_oid; ;
     break;}
 case 41:
-#line 616 "asn1p_y.y"
+#line 624 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
@@ -1703,7 +1682,7 @@
 	;
     break;}
 case 42:
-#line 627 "asn1p_y.y"
+#line 635 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
@@ -1711,14 +1690,14 @@
 	;
     break;}
 case 43:
-#line 632 "asn1p_y.y"
+#line 640 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 44:
-#line 639 "asn1p_y.y"
+#line 647 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1727,7 +1706,7 @@
 	;
     break;}
 case 45:
-#line 645 "asn1p_y.y"
+#line 653 "asn1p_y.y"
 {		/* Completely equivalent to above */
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1736,7 +1715,7 @@
 	;
     break;}
 case 46:
-#line 651 "asn1p_y.y"
+#line 659 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1745,19 +1724,19 @@
 	;
     break;}
 case 47:
-#line 660 "asn1p_y.y"
+#line 668 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-1].a_xports;
 	;
     break;}
 case 48:
-#line 663 "asn1p_y.y"
+#line 671 "asn1p_y.y"
 {
 		yyval.a_xports = 0;
 	;
     break;}
 case 49:
-#line 666 "asn1p_y.y"
+#line 674 "asn1p_y.y"
 {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
@@ -1765,7 +1744,7 @@
 	;
     break;}
 case 50:
-#line 674 "asn1p_y.y"
+#line 682 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
@@ -1773,14 +1752,14 @@
 	;
     break;}
 case 51:
-#line 679 "asn1p_y.y"
+#line 687 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 52:
-#line 686 "asn1p_y.y"
+#line 694 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1789,7 +1768,7 @@
 	;
     break;}
 case 53:
-#line 692 "asn1p_y.y"
+#line 700 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1798,7 +1777,7 @@
 	;
     break;}
 case 54:
-#line 698 "asn1p_y.y"
+#line 706 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1807,11 +1786,11 @@
 	;
     break;}
 case 55:
-#line 709 "asn1p_y.y"
+#line 717 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
 case 56:
-#line 709 "asn1p_y.y"
+#line 717 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-4].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1821,7 +1800,7 @@
 	;
     break;}
 case 57:
-#line 719 "asn1p_y.y"
+#line 727 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1831,7 +1810,7 @@
 	;
     break;}
 case 58:
-#line 726 "asn1p_y.y"
+#line 734 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1840,7 +1819,7 @@
 	;
     break;}
 case 59:
-#line 744 "asn1p_y.y"
+#line 752 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1851,7 +1830,7 @@
 	;
     break;}
 case 60:
-#line 752 "asn1p_y.y"
+#line 760 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1860,7 +1839,7 @@
 	;
     break;}
 case 61:
-#line 758 "asn1p_y.y"
+#line 766 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1869,7 +1848,7 @@
 	;
     break;}
 case 62:
-#line 774 "asn1p_y.y"
+#line 782 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1879,7 +1858,7 @@
 	;
     break;}
 case 63:
-#line 784 "asn1p_y.y"
+#line 792 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1891,7 +1870,7 @@
 	;
     break;}
 case 64:
-#line 793 "asn1p_y.y"
+#line 801 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
@@ -1902,14 +1881,14 @@
 	;
     break;}
 case 65:
-#line 804 "asn1p_y.y"
+#line 812 "asn1p_y.y"
 {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	;
     break;}
 case 66:
-#line 808 "asn1p_y.y"
+#line 816 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1919,7 +1898,7 @@
 	;
     break;}
 case 67:
-#line 815 "asn1p_y.y"
+#line 823 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1929,7 +1908,7 @@
 	;
     break;}
 case 68:
-#line 822 "asn1p_y.y"
+#line 830 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1940,7 +1919,7 @@
 	;
     break;}
 case 69:
-#line 833 "asn1p_y.y"
+#line 841 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1948,20 +1927,20 @@
 	;
     break;}
 case 70:
-#line 838 "asn1p_y.y"
+#line 846 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 71:
-#line 845 "asn1p_y.y"
+#line 853 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 72:
-#line 848 "asn1p_y.y"
+#line 856 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1971,15 +1950,15 @@
 	;
     break;}
 case 73:
-#line 872 "asn1p_y.y"
+#line 880 "asn1p_y.y"
 { yyval.a_expr = asn1p_expr_new(yylineno); ;
     break;}
 case 74:
-#line 873 "asn1p_y.y"
+#line 881 "asn1p_y.y"
 { yyval.a_expr = yyvsp[0].a_expr; ;
     break;}
 case 75:
-#line 876 "asn1p_y.y"
+#line 884 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1987,14 +1966,14 @@
 	;
     break;}
 case 76:
-#line 881 "asn1p_y.y"
+#line 889 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 77:
-#line 888 "asn1p_y.y"
+#line 896 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2003,7 +1982,7 @@
 	;
     break;}
 case 78:
-#line 894 "asn1p_y.y"
+#line 902 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2013,13 +1992,13 @@
 	;
     break;}
 case 79:
-#line 901 "asn1p_y.y"
+#line 909 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 80:
-#line 904 "asn1p_y.y"
+#line 912 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->marker = yyvsp[0].a_marker;
@@ -2027,7 +2006,7 @@
 	;
     break;}
 case 81:
-#line 912 "asn1p_y.y"
+#line 920 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2035,14 +2014,14 @@
 	;
     break;}
 case 82:
-#line 917 "asn1p_y.y"
+#line 925 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 83:
-#line 924 "asn1p_y.y"
+#line 932 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2050,20 +2029,20 @@
 	;
     break;}
 case 84:
-#line 929 "asn1p_y.y"
+#line 937 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 85:
-#line 932 "asn1p_y.y"
+#line 940 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		_fixup_anonymous_identifier(yyval.a_expr);
 	;
     break;}
 case 86:
-#line 939 "asn1p_y.y"
+#line 947 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
@@ -2073,15 +2052,15 @@
 	;
     break;}
 case 87:
-#line 949 "asn1p_y.y"
+#line 957 "asn1p_y.y"
 { yyval.a_int = 0; ;
     break;}
 case 88:
-#line 950 "asn1p_y.y"
+#line 958 "asn1p_y.y"
 { yyval.a_int = 1; ;
     break;}
 case 89:
-#line 954 "asn1p_y.y"
+#line 962 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2091,14 +2070,14 @@
 	;
     break;}
 case 90:
-#line 961 "asn1p_y.y"
+#line 969 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 91:
-#line 968 "asn1p_y.y"
+#line 976 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2109,7 +2088,7 @@
 	;
     break;}
 case 92:
-#line 976 "asn1p_y.y"
+#line 984 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-3].a_refcomp.name;
@@ -2118,7 +2097,7 @@
 	;
     break;}
 case 93:
-#line 982 "asn1p_y.y"
+#line 990 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2136,47 +2115,47 @@
 	;
     break;}
 case 94:
-#line 1000 "asn1p_y.y"
+#line 1008 "asn1p_y.y"
 { yyval.a_wsynt = 0; ;
     break;}
 case 95:
-#line 1001 "asn1p_y.y"
+#line 1009 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	;
     break;}
 case 96:
-#line 1008 "asn1p_y.y"
+#line 1016 "asn1p_y.y"
 { asn1p_lexer_hack_enable_with_syntax(); ;
     break;}
 case 97:
-#line 1010 "asn1p_y.y"
+#line 1018 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 	;
     break;}
 case 98:
-#line 1016 "asn1p_y.y"
+#line 1024 "asn1p_y.y"
 {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 99:
-#line 1020 "asn1p_y.y"
+#line 1028 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 100:
-#line 1027 "asn1p_y.y"
+#line 1035 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 	;
     break;}
 case 101:
-#line 1030 "asn1p_y.y"
+#line 1038 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2188,7 +2167,7 @@
 	;
     break;}
 case 102:
-#line 1042 "asn1p_y.y"
+#line 1050 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2199,7 +2178,7 @@
 	;
     break;}
 case 103:
-#line 1050 "asn1p_y.y"
+#line 1058 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2211,7 +2190,7 @@
 	;
     break;}
 case 104:
-#line 1059 "asn1p_y.y"
+#line 1067 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2223,7 +2202,7 @@
 	;
     break;}
 case 105:
-#line 1071 "asn1p_y.y"
+#line 1079 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2242,43 +2221,66 @@
 				yyval.a_expr->constraints = yyvsp[0].a_constr;
 			}
 		}
+		asn1p_last_type = yyval.a_expr;
 	;
     break;}
 case 106:
-#line 1093 "asn1p_y.y"
+#line 1102 "asn1p_y.y"
+{apply_nonstd_mods();;
+    break;}
+case 107:
+#line 1102 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
-case 107:
-#line 1096 "asn1p_y.y"
+case 108:
+#line 1107 "asn1p_y.y"
 {
-		yyval.a_expr = yyvsp[-1].a_expr;
+		yyval.a_expr = yyvsp[0].a_expr;
+	;
+    break;}
+case 109:
+#line 1110 "asn1p_y.y"
+{apply_nonstd_mods();;
+    break;}
+case 110:
+#line 1110 "asn1p_y.y"
+{
+		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
 		yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 108:
-#line 1102 "asn1p_y.y"
+case 111:
+#line 1116 "asn1p_y.y"
+{apply_nonstd_mods();;
+    break;}
+case 112:
+#line 1116 "asn1p_y.y"
 {
-		yyval.a_expr = yyvsp[-1].a_expr;
+		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
 		yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 109:
-#line 1108 "asn1p_y.y"
+case 113:
+#line 1122 "asn1p_y.y"
+{apply_nonstd_mods();;
+    break;}
+case 114:
+#line 1122 "asn1p_y.y"
 {
-		yyval.a_expr = yyvsp[-1].a_expr;
+		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
 		yyval.a_expr->expr_type = ASN_CONSTR_SET;
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 110:
-#line 1114 "asn1p_y.y"
+case 115:
+#line 1128 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2290,8 +2292,8 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 111:
-#line 1124 "asn1p_y.y"
+case 116:
+#line 1138 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2303,8 +2305,8 @@
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 112:
-#line 1134 "asn1p_y.y"
+case 117:
+#line 1148 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2312,8 +2314,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 113:
-#line 1140 "asn1p_y.y"
+case 118:
+#line 1154 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2326,8 +2328,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 114:
-#line 1154 "asn1p_y.y"
+case 119:
+#line 1168 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = yyvsp[-1].a_expr;
@@ -2343,8 +2345,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 115:
-#line 1178 "asn1p_y.y"
+case 120:
+#line 1192 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2353,8 +2355,8 @@
 		yyval.a_expr->meta_type = AMT_TYPEREF;
 	;
     break;}
-case 116:
-#line 1185 "asn1p_y.y"
+case 121:
+#line 1199 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2363,8 +2365,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 117:
-#line 1200 "asn1p_y.y"
+case 122:
+#line 1214 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2374,8 +2376,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 118:
-#line 1208 "asn1p_y.y"
+case 123:
+#line 1222 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2387,8 +2389,8 @@
 		free(yyvsp[-2].tv_str);
 	;
     break;}
-case 119:
-#line 1218 "asn1p_y.y"
+case 124:
+#line 1232 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2400,8 +2402,8 @@
 		free(yyvsp[-2].tv_str);
 	;
     break;}
-case 120:
-#line 1228 "asn1p_y.y"
+case 125:
+#line 1242 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2413,8 +2415,8 @@
 		free(yyvsp[-2].tv_str);
 	;
     break;}
-case 121:
-#line 1238 "asn1p_y.y"
+case 126:
+#line 1252 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2424,8 +2426,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 122:
-#line 1246 "asn1p_y.y"
+case 127:
+#line 1260 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -2446,8 +2448,8 @@
 		}
 	;
     break;}
-case 123:
-#line 1268 "asn1p_y.y"
+case 128:
+#line 1282 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2457,8 +2459,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 124:
-#line 1276 "asn1p_y.y"
+case 129:
+#line 1290 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -2467,22 +2469,22 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 127:
-#line 1290 "asn1p_y.y"
+case 132:
+#line 1304 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 128:
-#line 1295 "asn1p_y.y"
+case 133:
+#line 1309 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
-case 129:
-#line 1308 "asn1p_y.y"
+case 134:
+#line 1322 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -2491,8 +2493,8 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 130:
-#line 1318 "asn1p_y.y"
+case 135:
+#line 1332 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2501,76 +2503,76 @@
 		yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
 	;
     break;}
-case 131:
-#line 1325 "asn1p_y.y"
+case 136:
+#line 1339 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
-case 132:
-#line 1325 "asn1p_y.y"
+case 137:
+#line 1339 "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 133:
-#line 1330 "asn1p_y.y"
+case 138:
+#line 1344 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_NULL;
 	;
     break;}
-case 134:
-#line 1335 "asn1p_y.y"
+case 139:
+#line 1349 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
 	;
     break;}
-case 135:
-#line 1340 "asn1p_y.y"
+case 140:
+#line 1354 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
 	;
     break;}
-case 136:
-#line 1345 "asn1p_y.y"
+case 141:
+#line 1359 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 137:
-#line 1349 "asn1p_y.y"
+case 142:
+#line 1363 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	;
     break;}
-case 138:
-#line 1353 "asn1p_y.y"
+case 143:
+#line 1367 "asn1p_y.y"
 {
 		yyval.a_value = yyval.a_value;
 	;
     break;}
-case 139:
-#line 1356 "asn1p_y.y"
+case 144:
+#line 1370 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 140:
-#line 1359 "asn1p_y.y"
+case 145:
+#line 1373 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 141:
-#line 1365 "asn1p_y.y"
+case 146:
+#line 1379 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2583,8 +2585,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 142:
-#line 1376 "asn1p_y.y"
+case 147:
+#line 1390 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2600,31 +2602,31 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 143:
-#line 1394 "asn1p_y.y"
+case 148:
+#line 1408 "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 144:
-#line 1398 "asn1p_y.y"
+case 149:
+#line 1412 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TUPLE;
 	;
     break;}
-case 145:
-#line 1403 "asn1p_y.y"
+case 150:
+#line 1417 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_QUADRUPLE;
 	;
     break;}
-case 146:
-#line 1437 "asn1p_y.y"
+case 151:
+#line 1451 "asn1p_y.y"
 {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2635,8 +2637,8 @@
 		free(yyvsp[0].tv_opaque.buf);
 	;
     break;}
-case 147:
-#line 1446 "asn1p_y.y"
+case 152:
+#line 1460 "asn1p_y.y"
 {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -2650,72 +2652,72 @@
 		yyval.tv_opaque.len = newsize;
 	;
     break;}
-case 148:
-#line 1461 "asn1p_y.y"
+case 153:
+#line 1475 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BOOLEAN; ;
     break;}
-case 149:
-#line 1462 "asn1p_y.y"
+case 154:
+#line 1476 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_NULL; ;
     break;}
-case 150:
-#line 1463 "asn1p_y.y"
+case 155:
+#line 1477 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_REAL; ;
     break;}
-case 151:
-#line 1464 "asn1p_y.y"
-{ yyval.a_type = yyvsp[0].a_type; ;
-    break;}
-case 152:
-#line 1465 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
-    break;}
-case 153:
-#line 1466 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
-    break;}
-case 154:
-#line 1467 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
-    break;}
-case 155:
-#line 1468 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
-    break;}
 case 156:
-#line 1469 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
+#line 1478 "asn1p_y.y"
+{ yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 157:
-#line 1470 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
+#line 1479 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_OCTET_STRING; ;
     break;}
 case 158:
-#line 1471 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_UTCTime; ;
+#line 1480 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
     break;}
 case 159:
-#line 1472 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
+#line 1481 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
     break;}
 case 160:
-#line 1473 "asn1p_y.y"
-{ yyval.a_type = yyvsp[0].a_type; ;
+#line 1482 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_EXTERNAL; ;
     break;}
 case 161:
-#line 1480 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_INTEGER; ;
+#line 1483 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
     break;}
 case 162:
-#line 1481 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
+#line 1484 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
     break;}
 case 163:
-#line 1482 "asn1p_y.y"
-{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
+#line 1485 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_UTCTime; ;
     break;}
 case 164:
 #line 1486 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_GeneralizedTime; ;
+    break;}
+case 165:
+#line 1487 "asn1p_y.y"
+{ yyval.a_type = yyvsp[0].a_type; ;
+    break;}
+case 166:
+#line 1494 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_INTEGER; ;
+    break;}
+case 167:
+#line 1495 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_ENUMERATED; ;
+    break;}
+case 168:
+#line 1496 "asn1p_y.y"
+{ yyval.a_type = ASN_BASIC_BIT_STRING; ;
+    break;}
+case 169:
+#line 1500 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2723,8 +2725,8 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 165:
-#line 1492 "asn1p_y.y"
+case 170:
+#line 1506 "asn1p_y.y"
 {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -2736,92 +2738,92 @@
 		yyval.a_expr->meta_type = AMT_TYPE;
 	;
     break;}
-case 166:
-#line 1505 "asn1p_y.y"
+case 171:
+#line 1519 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_BMPString; ;
     break;}
-case 167:
-#line 1506 "asn1p_y.y"
+case 172:
+#line 1520 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	;
     break;}
-case 168:
-#line 1510 "asn1p_y.y"
+case 173:
+#line 1524 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	;
     break;}
-case 169:
-#line 1514 "asn1p_y.y"
+case 174:
+#line 1528 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_IA5String; ;
     break;}
-case 170:
-#line 1515 "asn1p_y.y"
+case 175:
+#line 1529 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ISO646String; ;
     break;}
-case 171:
-#line 1516 "asn1p_y.y"
+case 176:
+#line 1530 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_NumericString; ;
     break;}
-case 172:
-#line 1517 "asn1p_y.y"
+case 177:
+#line 1531 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_PrintableString; ;
     break;}
-case 173:
-#line 1518 "asn1p_y.y"
+case 178:
+#line 1532 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	;
     break;}
-case 174:
-#line 1522 "asn1p_y.y"
+case 179:
+#line 1536 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_TeletexString; ;
     break;}
-case 175:
-#line 1523 "asn1p_y.y"
+case 180:
+#line 1537 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UniversalString; ;
     break;}
-case 176:
-#line 1524 "asn1p_y.y"
+case 181:
+#line 1538 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UTF8String; ;
     break;}
-case 177:
-#line 1525 "asn1p_y.y"
+case 182:
+#line 1539 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	;
     break;}
-case 178:
-#line 1529 "asn1p_y.y"
+case 183:
+#line 1543 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_VisibleString; ;
     break;}
-case 179:
-#line 1530 "asn1p_y.y"
+case 184:
+#line 1544 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ObjectDescriptor; ;
     break;}
-case 185:
-#line 1542 "asn1p_y.y"
+case 190:
+#line 1556 "asn1p_y.y"
 { yyval.a_constr = 0; ;
     break;}
-case 186:
-#line 1543 "asn1p_y.y"
+case 191:
+#line 1557 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 187:
-#line 1549 "asn1p_y.y"
+case 192:
+#line 1563 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 188:
-#line 1552 "asn1p_y.y"
+case 193:
+#line 1566 "asn1p_y.y"
 {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -2830,26 +2832,26 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 189:
-#line 1562 "asn1p_y.y"
+case 194:
+#line 1576 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	;
     break;}
-case 190:
-#line 1565 "asn1p_y.y"
+case 195:
+#line 1579 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 191:
-#line 1571 "asn1p_y.y"
+case 196:
+#line 1585 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 192:
-#line 1574 "asn1p_y.y"
+case 197:
+#line 1588 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2857,8 +2859,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 193:
-#line 1580 "asn1p_y.y"
+case 198:
+#line 1594 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2868,38 +2870,38 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
 	;
     break;}
-case 194:
-#line 1591 "asn1p_y.y"
+case 199:
+#line 1605 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 195:
-#line 1594 "asn1p_y.y"
+case 200:
+#line 1608 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 196:
-#line 1597 "asn1p_y.y"
+case 201:
+#line 1611 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 197:
-#line 1600 "asn1p_y.y"
+case 202:
+#line 1614 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 198:
-#line 1603 "asn1p_y.y"
+case 203:
+#line 1617 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 199:
-#line 1609 "asn1p_y.y"
+case 204:
+#line 1623 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2909,8 +2911,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 200:
-#line 1617 "asn1p_y.y"
+case 205:
+#line 1631 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2920,8 +2922,8 @@
 		checkmem(ret == 0);
 	;
     break;}
-case 201:
-#line 1625 "asn1p_y.y"
+case 206:
+#line 1639 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2929,8 +2931,8 @@
 		yyval.a_constr->value = yyvsp[0].a_value;
 	;
     break;}
-case 202:
-#line 1631 "asn1p_y.y"
+case 207:
+#line 1645 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -2938,68 +2940,68 @@
 		yyval.a_constr->containedSubtype = yyvsp[0].a_value;
 	;
     break;}
-case 203:
-#line 1637 "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 204:
-#line 1644 "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 205:
-#line 1652 "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 206:
-#line 1660 "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 207:
-#line 1669 "asn1p_y.y"
-{
-		yyval.a_constr = yyvsp[0].a_constr;
-	;
-    break;}
 case 208:
-#line 1672 "asn1p_y.y"
+#line 1651 "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 209:
-#line 1676 "asn1p_y.y"
-{ asn1p_lexer_hack_push_opaque_state(); ;
+#line 1658 "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 210:
-#line 1676 "asn1p_y.y"
+#line 1666 "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 211:
+#line 1674 "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 212:
+#line 1683 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
+    break;}
+case 213:
+#line 1686 "asn1p_y.y"
+{
+		yyval.a_constr = yyvsp[0].a_constr;
+	;
+    break;}
+case 214:
+#line 1690 "asn1p_y.y"
+{ asn1p_lexer_hack_push_opaque_state(); ;
+    break;}
+case 215:
+#line 1690 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3009,64 +3011,64 @@
 		yyval.a_constr->value->type = ATV_UNPARSED;
 	;
     break;}
-case 211:
-#line 1687 "asn1p_y.y"
+case 216:
+#line 1701 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RANGE; ;
     break;}
-case 212:
-#line 1688 "asn1p_y.y"
+case 217:
+#line 1702 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RLRANGE; ;
     break;}
-case 213:
-#line 1689 "asn1p_y.y"
+case 218:
+#line 1703 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_LLRANGE; ;
     break;}
-case 214:
-#line 1690 "asn1p_y.y"
+case 219:
+#line 1704 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_ULRANGE; ;
     break;}
-case 215:
-#line 1694 "asn1p_y.y"
+case 220:
+#line 1708 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_SIZE;
 	;
     break;}
-case 216:
-#line 1697 "asn1p_y.y"
+case 221:
+#line 1711 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_FROM;
 	;
     break;}
-case 217:
-#line 1703 "asn1p_y.y"
+case 222:
+#line 1717 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_FALSE;
 	;
     break;}
-case 218:
-#line 1708 "asn1p_y.y"
+case 223:
+#line 1722 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
 		yyval.a_value->type = ATV_TRUE;
 	;
     break;}
-case 219:
-#line 1713 "asn1p_y.y"
+case 224:
+#line 1727 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 220:
-#line 1716 "asn1p_y.y"
+case 225:
+#line 1730 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
-case 221:
-#line 1719 "asn1p_y.y"
+case 226:
+#line 1733 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3079,8 +3081,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 222:
-#line 1733 "asn1p_y.y"
+case 227:
+#line 1747 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3093,32 +3095,32 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 223:
-#line 1747 "asn1p_y.y"
+case 228:
+#line 1761 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
 	;
     break;}
-case 224:
-#line 1750 "asn1p_y.y"
+case 229:
+#line 1764 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	;
     break;}
-case 225:
-#line 1756 "asn1p_y.y"
+case 230:
+#line 1770 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 226:
-#line 1759 "asn1p_y.y"
+case 231:
+#line 1773 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
-case 227:
-#line 1765 "asn1p_y.y"
+case 232:
+#line 1779 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3126,8 +3128,8 @@
 		yyval.a_constr->value = asn1p_value_frombuf("...", 3, 0);
 	;
     break;}
-case 228:
-#line 1771 "asn1p_y.y"
+case 233:
+#line 1785 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3137,46 +3139,46 @@
 		if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 229:
-#line 1785 "asn1p_y.y"
+case 234:
+#line 1799 "asn1p_y.y"
 { yyval.a_pres = ACPRES_DEFAULT; ;
     break;}
-case 230:
-#line 1786 "asn1p_y.y"
+case 235:
+#line 1800 "asn1p_y.y"
 { yyval.a_pres = yyvsp[0].a_pres; ;
     break;}
-case 231:
-#line 1790 "asn1p_y.y"
+case 236:
+#line 1804 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_PRESENT;
 	;
     break;}
-case 232:
-#line 1793 "asn1p_y.y"
+case 237:
+#line 1807 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_ABSENT;
 	;
     break;}
-case 233:
-#line 1796 "asn1p_y.y"
+case 238:
+#line 1810 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	;
     break;}
-case 234:
-#line 1802 "asn1p_y.y"
+case 239:
+#line 1816 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 235:
-#line 1805 "asn1p_y.y"
+case 240:
+#line 1819 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
-case 236:
-#line 1814 "asn1p_y.y"
+case 241:
+#line 1828 "asn1p_y.y"
 {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -3190,14 +3192,14 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
 	;
     break;}
-case 237:
-#line 1829 "asn1p_y.y"
+case 242:
+#line 1843 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
-case 238:
-#line 1835 "asn1p_y.y"
+case 243:
+#line 1849 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3205,8 +3207,8 @@
 		yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
 	;
     break;}
-case 239:
-#line 1841 "asn1p_y.y"
+case 244:
+#line 1855 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3216,8 +3218,8 @@
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
 	;
     break;}
-case 240:
-#line 1855 "asn1p_y.y"
+case 245:
+#line 1869 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -3230,8 +3232,8 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 241:
-#line 1866 "asn1p_y.y"
+case 246:
+#line 1880 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -3245,14 +3247,14 @@
 		free(yyvsp[0].tv_str);
 	;
     break;}
-case 242:
-#line 1882 "asn1p_y.y"
+case 247:
+#line 1896 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 243:
-#line 1885 "asn1p_y.y"
+case 248:
+#line 1899 "asn1p_y.y"
 {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -3263,61 +3265,61 @@
 		yyval.tv_str[l1 + 1 + l3] = '\0';
 	;
     break;}
-case 244:
-#line 1903 "asn1p_y.y"
+case 249:
+#line 1917 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
-case 245:
-#line 1907 "asn1p_y.y"
+case 250:
+#line 1921 "asn1p_y.y"
 { yyval.a_marker = yyvsp[0].a_marker; ;
     break;}
-case 246:
-#line 1911 "asn1p_y.y"
+case 251:
+#line 1925 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_OPTIONAL;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
-case 247:
-#line 1915 "asn1p_y.y"
+case 252:
+#line 1929 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
 	;
     break;}
-case 248:
-#line 1938 "asn1p_y.y"
+case 253:
+#line 1952 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 	;
     break;}
-case 249:
-#line 1942 "asn1p_y.y"
+case 254:
+#line 1956 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	;
     break;}
-case 250:
-#line 1948 "asn1p_y.y"
+case 255:
+#line 1962 "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 251:
-#line 1953 "asn1p_y.y"
+case 256:
+#line 1967 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
-case 252:
-#line 1960 "asn1p_y.y"
+case 257:
+#line 1974 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3326,8 +3328,8 @@
 		yyval.a_expr->Identifier = yyvsp[0].tv_str;
 	;
     break;}
-case 253:
-#line 1967 "asn1p_y.y"
+case 258:
+#line 1981 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3337,8 +3339,8 @@
 		yyval.a_expr->value = yyvsp[-1].a_value;
 	;
     break;}
-case 254:
-#line 1975 "asn1p_y.y"
+case 259:
+#line 1989 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3348,8 +3350,8 @@
 		yyval.a_expr->value = yyvsp[-1].a_value;
 	;
     break;}
-case 255:
-#line 1983 "asn1p_y.y"
+case 260:
+#line 1997 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3358,8 +3360,8 @@
 		yyval.a_expr->value = yyvsp[0].a_value;
 	;
     break;}
-case 256:
-#line 1990 "asn1p_y.y"
+case 261:
+#line 2004 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3369,103 +3371,103 @@
 		yyval.a_expr->meta_type = AMT_VALUE;
 	;
     break;}
-case 257:
-#line 2001 "asn1p_y.y"
+case 262:
+#line 2015 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 258:
-#line 2005 "asn1p_y.y"
+case 263:
+#line 2019 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
-case 259:
-#line 2036 "asn1p_y.y"
+case 264:
+#line 2050 "asn1p_y.y"
 { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
     break;}
-case 260:
-#line 2037 "asn1p_y.y"
+case 265:
+#line 2051 "asn1p_y.y"
 { yyval.a_tag = yyvsp[0].a_tag; ;
     break;}
-case 261:
-#line 2041 "asn1p_y.y"
+case 266:
+#line 2055 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	;
     break;}
-case 262:
-#line 2048 "asn1p_y.y"
+case 267:
+#line 2062 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-2].a_tag;
 		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	;
     break;}
-case 263:
-#line 2054 "asn1p_y.y"
+case 268:
+#line 2068 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
     break;}
-case 264:
-#line 2055 "asn1p_y.y"
+case 269:
+#line 2069 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_UNIVERSAL; ;
     break;}
-case 265:
-#line 2056 "asn1p_y.y"
-{ yyval.a_tag.tag_class = TC_APPLICATION; ;
-    break;}
-case 266:
-#line 2057 "asn1p_y.y"
-{ yyval.a_tag.tag_class = TC_PRIVATE; ;
-    break;}
-case 267:
-#line 2061 "asn1p_y.y"
-{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
-    break;}
-case 268:
-#line 2062 "asn1p_y.y"
-{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
-    break;}
-case 269:
-#line 2063 "asn1p_y.y"
-{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
-    break;}
 case 270:
-#line 2067 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
+#line 2070 "asn1p_y.y"
+{ yyval.a_tag.tag_class = TC_APPLICATION; ;
     break;}
 case 271:
 #line 2071 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
+{ yyval.a_tag.tag_class = TC_PRIVATE; ;
     break;}
 case 272:
-#line 2079 "asn1p_y.y"
+#line 2075 "asn1p_y.y"
+{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
+    break;}
+case 273:
+#line 2076 "asn1p_y.y"
+{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
+    break;}
+case 274:
+#line 2077 "asn1p_y.y"
+{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
+    break;}
+case 275:
+#line 2081 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 273:
-#line 2086 "asn1p_y.y"
+case 276:
+#line 2085 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 277:
+#line 2093 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 278:
+#line 2100 "asn1p_y.y"
 { yyval.tv_str = 0; ;
     break;}
-case 274:
-#line 2087 "asn1p_y.y"
+case 279:
+#line 2101 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 275:
-#line 2093 "asn1p_y.y"
+case 280:
+#line 2107 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3693,7 +3695,7 @@
     }
   return 1;
 }
-#line 2099 "asn1p_y.y"
+#line 2113 "asn1p_y.y"
 
 
 
@@ -3833,6 +3835,22 @@
 		expr->Identifier);
 }
 
+static void
+apply_nonstd_mods() {
+	if(!asn1p_as_pointer) return;
+	asn1p_as_pointer = 0;
+
+	if(asn1p_last_type) {
+		asn1p_last_type->marker.flags |= EM_INDIRECT;
+		fprintf(stderr, "INFO: Modifier <asn1c:pointer> "
+			"applied to \"%s\" at line %d\n",
+			asn1p_last_type->Identifier
+				?  asn1p_last_type->Identifier : "<anonymous>",
+			asn1p_last_type->_lineno);
+		asn1p_last_type = 0;
+	}
+}
+
 extern char *asn1p_text;
 
 int
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 13af5a2..28c1f7e 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -24,6 +24,13 @@
 extern int asn1p_lineno;
 
 /*
+ * Process modifiers as <asn1c:pointer>
+ */
+extern int asn1p_as_pointer;
+static asn1p_expr_t *asn1p_last_type;
+static void apply_nonstd_mods(void);
+
+/*
  * This temporary variable is used to solve the shortcomings of 1-lookahead
  * parser.
  */
@@ -231,6 +238,7 @@
 %type	<a_expr>		ExportsElement
 %type	<a_expr>		ExtensionAndException
 %type	<a_expr>		TypeDeclaration
+%type	<a_expr>		TypeDeclarationSet
 %type	<a_ref>			ComplexTypeReference
 %type	<a_ref>			ComplexTypeReferenceAmpList
 %type	<a_refcomp>		ComplexTypeReferenceElement
@@ -1086,26 +1094,32 @@
 				$$->constraints = $3;
 			}
 		}
+		asn1p_last_type = $$;
 	}
 	;
 
 TypeDeclaration:
+	{apply_nonstd_mods();} TypeDeclarationSet {
+		$$ = $2;
+	}
+
+TypeDeclarationSet:
 	BasicType {
 		$$ = $1;
 	}
-	| TOK_CHOICE '{' AlternativeTypeLists '}'	{
+	| TOK_CHOICE '{' AlternativeTypeLists {apply_nonstd_mods();} '}' {
 		$$ = $3;
 		assert($$->expr_type == A1TC_INVALID);
 		$$->expr_type = ASN_CONSTR_CHOICE;
 		$$->meta_type = AMT_TYPE;
 	}
-	| TOK_SEQUENCE '{' optComponentTypeLists '}'	{
+	| TOK_SEQUENCE '{' optComponentTypeLists {apply_nonstd_mods();} '}' {
 		$$ = $3;
 		assert($$->expr_type == A1TC_INVALID);
 		$$->expr_type = ASN_CONSTR_SEQUENCE;
 		$$->meta_type = AMT_TYPE;
 	}
-	| TOK_SET '{' optComponentTypeLists '}'		{
+	| TOK_SET '{' optComponentTypeLists {apply_nonstd_mods();} '}' {
 		$$ = $3;
 		assert($$->expr_type == A1TC_INVALID);
 		$$->expr_type = ASN_CONSTR_SET;
@@ -2235,6 +2249,22 @@
 		expr->Identifier);
 }
 
+static void
+apply_nonstd_mods() {
+	if(!asn1p_as_pointer) return;
+	asn1p_as_pointer = 0;
+
+	if(asn1p_last_type) {
+		asn1p_last_type->marker.flags |= EM_INDIRECT;
+		fprintf(stderr, "INFO: Modifier <asn1c:pointer> "
+			"applied to \"%s\" at line %d\n",
+			asn1p_last_type->Identifier
+				?  asn1p_last_type->Identifier : "<anonymous>",
+			asn1p_last_type->_lineno);
+		asn1p_last_type = 0;
+	}
+}
+
 extern char *asn1p_text;
 
 int
diff --git a/libasn1print/asn1print.c b/libasn1print/asn1print.c
index 1dee0f6..de7fcf9 100644
--- a/libasn1print/asn1print.c
+++ b/libasn1print/asn1print.c
@@ -623,11 +623,15 @@
 					== EM_OPTIONAL) {
 				printf(" OPTIONAL");
 			}
-			if(TQ_NEXT(se, next)) {
+			if(TQ_NEXT(se, next))
 				printf(",");
-				if(!(flags & APF_NOINDENT))
-					INDENT("\n");
-			}
+			/* Reconstruct modifier information */
+			if((se->marker.flags & EM_OMITABLE)
+				!= EM_OMITABLE
+			&& se->marker.flags & EM_INDIRECT)
+				printf("\t/* <asn1c:pointer> */");
+			if(TQ_NEXT(se, next) && !(flags & APF_NOINDENT))
+				INDENT("\n");
 		}
 
 		if(put_braces && TQ_FIRST(&tc->members)) {
diff --git a/skeletons/asn-decoder-template.c b/skeletons/asn-decoder-template.c
index 3540bac..0febbf4 100644
--- a/skeletons/asn-decoder-template.c
+++ b/skeletons/asn-decoder-template.c
@@ -11,7 +11,8 @@
 #endif
 #include <stdio.h>
 #include <sys/types.h>
-#include <unistd.h>	/* for getopt */
+#include <stdlib.h>	/* for atoi(3) */
+#include <unistd.h>	/* for getopt(3) */
 #include <string.h>	/* for strerror(3) */
 #include <sysexits.h>	/* for EX_* exit codes */
 #include <assert.h>	/* for assert(3) */
diff --git a/tests/93-asn1c-controls-OK.asn1 b/tests/93-asn1c-controls-OK.asn1
new file mode 100644
index 0000000..8102431
--- /dev/null
+++ b/tests/93-asn1c-controls-OK.asn1
@@ -0,0 +1,30 @@
+
+-- OK: Everything is fine
+
+-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
+-- .spelio.software.asn1c.test (9363.1.5.1)
+-- .93
+
+Module-asn1c-controls
+	{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
+		spelio(9363) software(1) asn1c(5) test(1) 93 }
+DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+	Sequence ::= SEQUENCE {
+		ainl INTEGER,
+		aptr INTEGER	/* <asn1c:pointer> */
+	}
+
+	Set ::= SET {
+		ainl Sequence,
+		aptr Sequence	-- <asn1c:pointer>
+	}
+
+	Choice ::= CHOICE {
+		setof SET OF INTEGER, -- <asn1c:pointer>
+		aptr Sequence,	-- <asn1c:pointer>
+		ainl Sequence
+	}
+
+END
diff --git a/tests/93-asn1c-controls-OK.asn1.-EF b/tests/93-asn1c-controls-OK.asn1.-EF
new file mode 100644
index 0000000..8df3402
--- /dev/null
+++ b/tests/93-asn1c-controls-OK.asn1.-EF
@@ -0,0 +1,22 @@
+Module-asn1c-controls { iso org(3) dod(6) internet(1) private(4) enterprise(1)
+	spelio(9363) software(1) asn1c(5) test(1) 93 }
+DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+Sequence ::= SEQUENCE {
+    ainl	 [0] IMPLICIT INTEGER,
+    aptr	 [1] IMPLICIT INTEGER	/* <asn1c:pointer> */
+}
+
+Set ::= SET {
+    ainl	 [0] IMPLICIT Sequence,
+    aptr	 [1] IMPLICIT Sequence	/* <asn1c:pointer> */
+}
+
+Choice ::= CHOICE {
+    setof	 [0] IMPLICIT SET OF INTEGER,	/* <asn1c:pointer> */
+    aptr	 [1] IMPLICIT Sequence,	/* <asn1c:pointer> */
+    ainl	 [2] IMPLICIT Sequence
+}
+
+END
diff --git a/tests/93-asn1c-controls-OK.asn1.-P b/tests/93-asn1c-controls-OK.asn1.-P
new file mode 100644
index 0000000..806ee3a
--- /dev/null
+++ b/tests/93-asn1c-controls-OK.asn1.-P
@@ -0,0 +1,328 @@
+
+/*** <<< INCLUDES [Sequence] >>> ***/
+
+#include <INTEGER.h>
+#include <constr_SEQUENCE.h>
+
+/*** <<< TYPE-DECLS [Sequence] >>> ***/
+
+typedef struct Sequence {
+	INTEGER_t	 ainl;
+	INTEGER_t	*aptr;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} Sequence_t;
+
+/*** <<< FUNC-DECLS [Sequence] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_Sequence;
+
+/*** <<< STAT-DEFS [Sequence] >>> ***/
+
+static asn_TYPE_member_t asn_MBR_Sequence_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct Sequence, ainl),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_INTEGER,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "ainl"
+		},
+	{ ATF_POINTER, 0, offsetof(struct Sequence, aptr),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_INTEGER,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "aptr"
+		},
+};
+static ber_tlv_tag_t asn_DEF_Sequence_1_tags[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_TYPE_tag2member_t asn_MAP_Sequence_1_tag2el[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ainl at 15 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* aptr at 17 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_Sequence_1_specs = {
+	sizeof(struct Sequence),
+	offsetof(struct Sequence, _asn_ctx),
+	asn_MAP_Sequence_1_tag2el,
+	2,	/* Count of tags in the map */
+	-1,	/* Start extensions */
+	-1	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_Sequence = {
+	"Sequence",
+	"Sequence",
+	SEQUENCE_free,
+	SEQUENCE_print,
+	SEQUENCE_constraint,
+	SEQUENCE_decode_ber,
+	SEQUENCE_encode_der,
+	SEQUENCE_decode_xer,
+	SEQUENCE_encode_xer,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_Sequence_1_tags,
+	sizeof(asn_DEF_Sequence_1_tags)
+		/sizeof(asn_DEF_Sequence_1_tags[0]), /* 1 */
+	asn_DEF_Sequence_1_tags,	/* Same as above */
+	sizeof(asn_DEF_Sequence_1_tags)
+		/sizeof(asn_DEF_Sequence_1_tags[0]), /* 1 */
+	asn_MBR_Sequence_1,
+	2,	/* Elements count */
+	&asn_SPC_Sequence_1_specs	/* Additional specs */
+};
+
+
+/*** <<< INCLUDES [Set] >>> ***/
+
+#include <Sequence.h>
+#include <constr_SET.h>
+
+/*** <<< DEPS [Set] >>> ***/
+
+
+/*
+ * Method of determining the components presence
+ */
+typedef enum Set_PR {
+	Set_PR_ainl,	/* Member ainl is present */
+	Set_PR_aptr,	/* Member aptr is present */
+} Set_PR;
+
+/*** <<< FWD-DECLS [Set] >>> ***/
+
+struct Sequence;
+
+/*** <<< TYPE-DECLS [Set] >>> ***/
+
+typedef struct Set {
+	Sequence_t	 ainl;
+	struct Sequence	*aptr;
+	
+	/* Presence bitmask: ASN_SET_ISPRESENT(pSet, Set_PR_x) */
+	unsigned int _presence_map
+		[((2+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} Set_t;
+
+/*** <<< FUNC-DECLS [Set] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_Set;
+
+/*** <<< POST-INCLUDE [Set] >>> ***/
+
+#include <Sequence.h>
+
+/*** <<< STAT-DEFS [Set] >>> ***/
+
+static asn_TYPE_member_t asn_MBR_Set_1[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct Set, ainl),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_Sequence,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "ainl"
+		},
+	{ ATF_POINTER, 0, offsetof(struct Set, aptr),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_Sequence,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "aptr"
+		},
+};
+static ber_tlv_tag_t asn_DEF_Set_1_tags[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
+};
+static asn_TYPE_tag2member_t asn_MAP_Set_1_tag2el[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ainl at 20 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* aptr at 22 */
+};
+static uint8_t asn_MAP_Set_1_mmap[(2 + (8 * sizeof(unsigned int)) - 1) / 8] = {
+	(1 << 7) | (1 << 6)
+};
+static asn_SET_specifics_t asn_SPC_Set_1_specs = {
+	sizeof(struct Set),
+	offsetof(struct Set, _asn_ctx),
+	offsetof(struct Set, _presence_map),
+	asn_MAP_Set_1_tag2el,
+	2,	/* Count of tags in the map */
+	asn_MAP_Set_1_tag2el,	/* Same as above */
+	2,	/* Count of tags in the CXER map */
+	0,	/* Whether extensible */
+	(unsigned int *)asn_MAP_Set_1_mmap	/* Mandatory elements map */
+};
+asn_TYPE_descriptor_t asn_DEF_Set = {
+	"Set",
+	"Set",
+	SET_free,
+	SET_print,
+	SET_constraint,
+	SET_decode_ber,
+	SET_encode_der,
+	SET_decode_xer,
+	SET_encode_xer,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_Set_1_tags,
+	sizeof(asn_DEF_Set_1_tags)
+		/sizeof(asn_DEF_Set_1_tags[0]), /* 1 */
+	asn_DEF_Set_1_tags,	/* Same as above */
+	sizeof(asn_DEF_Set_1_tags)
+		/sizeof(asn_DEF_Set_1_tags[0]), /* 1 */
+	asn_MBR_Set_1,
+	2,	/* Elements count */
+	&asn_SPC_Set_1_specs	/* Additional specs */
+};
+
+
+/*** <<< INCLUDES [Choice] >>> ***/
+
+#include <Sequence.h>
+#include <INTEGER.h>
+#include <asn_SET_OF.h>
+#include <constr_SET_OF.h>
+#include <constr_CHOICE.h>
+
+/*** <<< DEPS [Choice] >>> ***/
+
+typedef enum Choice_PR {
+	Choice_PR_NOTHING,	/* No components present */
+	Choice_PR_setof,
+	Choice_PR_aptr,
+	Choice_PR_ainl,
+} Choice_PR;
+
+/*** <<< FWD-DECLS [Choice] >>> ***/
+
+struct Sequence;
+
+/*** <<< TYPE-DECLS [Choice] >>> ***/
+
+typedef struct Choice {
+	Choice_PR present;
+	union Choice_u {
+		struct setof {
+			A_SET_OF(INTEGER_t) list;
+			
+			/* Context for parsing across buffer boundaries */
+			asn_struct_ctx_t _asn_ctx;
+		} *setof;
+		struct Sequence	*aptr;
+		Sequence_t	 ainl;
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} Choice_t;
+
+/*** <<< FUNC-DECLS [Choice] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_Choice;
+
+/*** <<< POST-INCLUDE [Choice] >>> ***/
+
+#include <Sequence.h>
+
+/*** <<< STAT-DEFS [Choice] >>> ***/
+
+static asn_TYPE_member_t asn_MBR_setof_2[] = {
+	{ ATF_POINTER, 0, 0,
+		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+		.tag_mode = 0,
+		.type = (void *)&asn_DEF_INTEGER,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = ""
+		},
+};
+static ber_tlv_tag_t asn_DEF_setof_2_tags[] = {
+	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_setof_2_specs = {
+	sizeof(struct setof),
+	offsetof(struct setof, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_setof_2 = {
+	"setof",
+	"setof",
+	SET_OF_free,
+	SET_OF_print,
+	SET_OF_constraint,
+	SET_OF_decode_ber,
+	SET_OF_encode_der,
+	SET_OF_decode_xer,
+	SET_OF_encode_xer,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_setof_2_tags,
+	sizeof(asn_DEF_setof_2_tags)
+		/sizeof(asn_DEF_setof_2_tags[0]) - 1, /* 1 */
+	asn_DEF_setof_2_tags,	/* Same as above */
+	sizeof(asn_DEF_setof_2_tags)
+		/sizeof(asn_DEF_setof_2_tags[0]), /* 2 */
+	asn_MBR_setof_2,
+	1,	/* Single element */
+	&asn_SPC_setof_2_specs	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_Choice_1[] = {
+	{ ATF_POINTER, 0, offsetof(struct Choice, choice.setof),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_setof_2,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "setof"
+		},
+	{ ATF_POINTER, 0, offsetof(struct Choice, choice.aptr),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_Sequence,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "aptr"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct Choice, choice.ainl),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_Sequence,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "ainl"
+		},
+};
+static asn_TYPE_tag2member_t asn_MAP_Choice_1_tag2el[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* setof at 25 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aptr at 26 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ainl at 28 */
+};
+static asn_CHOICE_specifics_t asn_SPC_Choice_1_specs = {
+	sizeof(struct Choice),
+	offsetof(struct Choice, _asn_ctx),
+	offsetof(struct Choice, present),
+	sizeof(((struct Choice *)0)->present),
+	asn_MAP_Choice_1_tag2el,
+	3,	/* Count of tags in the map */
+	0	/* Whether extensible */
+};
+asn_TYPE_descriptor_t asn_DEF_Choice = {
+	"Choice",
+	"Choice",
+	CHOICE_free,
+	CHOICE_print,
+	CHOICE_constraint,
+	CHOICE_decode_ber,
+	CHOICE_encode_der,
+	CHOICE_decode_xer,
+	CHOICE_encode_xer,
+	CHOICE_outmost_tag,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	asn_MBR_Choice_1,
+	3,	/* Elements count */
+	&asn_SPC_Choice_1_specs	/* Additional specs */
+};
+