ignoring spaces within tags


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@613 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index a3af298..36a7b3b 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -109,7 +109,6 @@
 #define	TOK_UNION	352
 #define	TOK_TwoDots	353
 #define	TOK_ThreeDots	354
-#define	TOK_tag	355
 
 #line 1 "asn1p_y.y"
 
@@ -205,26 +204,26 @@
 
 
 
-#define	YYFINAL		407
+#define	YYFINAL		415
 #define	YYFLAG		-32768
-#define	YYNTBASE	115
+#define	YYNTBASE	116
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 213)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 354 ? yytranslate[x] : 217)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   111,     2,     2,     2,     2,     2,     2,   106,
-   107,     2,     2,   109,     2,   112,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,   110,   108,   113,
-     2,     2,     2,   114,     2,     2,     2,     2,     2,     2,
+     2,     2,   110,     2,     2,     2,     2,     2,     2,   105,
+   106,     2,     2,   108,     2,   111,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,   109,   107,   112,
+     2,     2,     2,   113,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,    97,     2,     2,     2,     2,     2,     2,
+   114,     2,   115,    97,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   104,    99,   105,     2,     2,     2,     2,     2,
+     2,     2,   103,    99,   104,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -247,7 +246,7 @@
     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    98,   100,   101,   102,   103
+    98,   100,   101,   102
 };
 
 #if YYDEBUG != 0
@@ -277,84 +276,86 @@
    631,   633,   635,   637,   639,   641,   643,   647,   652,   654,
    658,   661,   665,   667,   671,   672,   674,   676,   679,   682,
    686,   688,   692,   694,   699,   704,   706,   708,   710,   712,
-   713,   715,   717,   720,   723,   725,   727,   729,   730,   732
+   713,   715,   718,   723,   724,   726,   728,   730,   731,   733,
+   735,   737,   739,   741,   742,   744
 };
 
-static const short yyrhs[] = {   116,
-     0,   117,     0,   116,   117,     0,   209,   118,    34,   122,
-     3,    21,   125,    39,     0,     0,   119,     0,   104,   120,
-   105,     0,   104,   105,     0,   121,     0,   120,   121,     0,
-   212,     0,   212,   106,     9,   107,     0,     9,     0,     0,
-   123,     0,   124,     0,   123,   124,     0,    41,    84,     0,
+static const short yyrhs[] = {   117,
+     0,   118,     0,   117,   118,     0,   213,   119,    34,   123,
+     3,    21,   126,    39,     0,     0,   120,     0,   103,   121,
+   104,     0,   103,   104,     0,   122,     0,   121,   122,     0,
+   216,     0,   216,   105,     9,   106,     0,     9,     0,     0,
+   124,     0,   125,     0,   124,   125,     0,    41,    84,     0,
     52,    84,     0,    20,    84,     0,    43,    53,     0,    12,
-    57,     0,     0,   126,     0,   127,     0,   126,   127,     0,
-   129,     0,   134,     0,   142,     0,   169,     0,   137,     0,
-     0,    38,    12,   128,     0,   177,     0,    54,   130,   108,
-     0,    54,    46,     0,   131,     0,   130,   131,     0,   132,
-    46,   209,   118,     0,   133,     0,   132,   109,   133,     0,
-   209,     0,   209,   104,   105,     0,   212,     0,    42,   135,
-   108,     0,    42,    17,   108,     0,    42,   108,     0,   136,
-     0,   135,   109,   136,     0,   209,     0,   209,   104,   105,
-     0,   212,     0,   209,   138,     3,   104,   139,   105,     0,
-   164,     0,   174,     0,     0,   140,     0,   141,     0,   140,
-   109,   141,     0,   102,     0,   185,     0,   209,     3,   207,
-    87,     0,   209,     3,   162,     0,   209,     3,   152,     0,
-   209,   104,   143,   105,     3,   162,     0,   144,     0,   143,
-   109,   144,     0,   209,     0,   209,   110,   212,     0,   174,
-   110,   212,     0,   146,     0,   145,   109,   146,     0,   162,
-     0,   212,     0,     0,   148,     0,   149,     0,   148,   109,
-   149,     0,   212,   162,   201,     0,    30,    68,   162,     0,
-   161,     0,   151,     0,   150,   109,   151,     0,   212,   162,
-     0,   161,     0,    28,   104,   154,   105,   156,     0,     0,
-    88,     0,   155,     0,   154,   109,   155,     0,   167,   201,
-     0,   167,   162,   153,   201,     0,   167,   167,   153,   201,
-     0,     0,   157,     0,     0,    95,    82,   104,   158,   159,
-   105,     0,   160,     0,   159,   160,     0,     4,     0,   167,
-     0,   102,     0,   102,   111,   172,     0,   102,   111,   206,
-     0,   207,   163,   181,     0,   176,     0,   177,     0,    27,
-   104,   150,   105,     0,    78,   104,   147,   105,     0,    79,
-   104,   147,   105,     0,    78,   181,    68,   211,   207,   163,
-     0,    79,   181,    68,   211,   207,   163,     0,    18,     0,
-    18,    35,    25,   212,     0,   209,   104,   145,   105,     0,
-   164,     0,    56,    68,   164,     0,    11,     0,    11,   112,
-   209,     0,   210,   112,   209,     0,    11,   112,   212,     0,
-   210,     0,   210,   112,   165,     0,   166,     0,   165,   112,
-   166,     0,   168,     0,   168,     0,    13,     0,    14,     0,
-   212,   138,     3,   170,     0,   212,   110,   170,     0,     0,
-   104,   171,   173,     0,    63,     0,    45,     0,    86,     0,
-     5,     0,     7,     0,     6,     0,   206,     0,   172,     0,
-   212,     0,   209,   112,   212,     0,     4,     0,   173,     4,
-     0,    24,     0,    63,     0,    76,     0,   175,     0,    67,
+    57,     0,     0,   127,     0,   128,     0,   127,   128,     0,
+   130,     0,   135,     0,   143,     0,   170,     0,   138,     0,
+     0,    38,    12,   129,     0,   178,     0,    54,   131,   107,
+     0,    54,    46,     0,   132,     0,   131,   132,     0,   133,
+    46,   213,   119,     0,   134,     0,   133,   108,   134,     0,
+   213,     0,   213,   103,   104,     0,   216,     0,    42,   136,
+   107,     0,    42,    17,   107,     0,    42,   107,     0,   137,
+     0,   136,   108,   137,     0,   213,     0,   213,   103,   104,
+     0,   216,     0,   213,   139,     3,   103,   140,   104,     0,
+   165,     0,   175,     0,     0,   141,     0,   142,     0,   141,
+   108,   142,     0,   102,     0,   186,     0,   213,     3,   208,
+    87,     0,   213,     3,   163,     0,   213,     3,   153,     0,
+   213,   103,   144,   104,     3,   163,     0,   145,     0,   144,
+   108,   145,     0,   213,     0,   213,   109,   216,     0,   175,
+   109,   216,     0,   147,     0,   146,   108,   147,     0,   163,
+     0,   216,     0,     0,   149,     0,   150,     0,   149,   108,
+   150,     0,   216,   163,   202,     0,    30,    68,   163,     0,
+   162,     0,   152,     0,   151,   108,   152,     0,   216,   163,
+     0,   162,     0,    28,   103,   155,   104,   157,     0,     0,
+    88,     0,   156,     0,   155,   108,   156,     0,   168,   202,
+     0,   168,   163,   154,   202,     0,   168,   168,   154,   202,
+     0,     0,   158,     0,     0,    95,    82,   103,   159,   160,
+   104,     0,   161,     0,   160,   161,     0,     4,     0,   168,
+     0,   102,     0,   102,   110,   173,     0,   102,   110,   207,
+     0,   208,   164,   182,     0,   177,     0,   178,     0,    27,
+   103,   151,   104,     0,    78,   103,   148,   104,     0,    79,
+   103,   148,   104,     0,    78,   182,    68,   215,   208,   164,
+     0,    79,   182,    68,   215,   208,   164,     0,    18,     0,
+    18,    35,    25,   216,     0,   213,   103,   146,   104,     0,
+   165,     0,    56,    68,   165,     0,    11,     0,    11,   111,
+   213,     0,   214,   111,   213,     0,    11,   111,   216,     0,
+   214,     0,   214,   111,   166,     0,   167,     0,   166,   111,
+   167,     0,   169,     0,   169,     0,    13,     0,    14,     0,
+   216,   139,     3,   171,     0,   216,   109,   171,     0,     0,
+   103,   172,   174,     0,    63,     0,    45,     0,    86,     0,
+     5,     0,     7,     0,     6,     0,   207,     0,   173,     0,
+   216,     0,   213,   111,   216,     0,     4,     0,   174,     4,
+     0,    24,     0,    63,     0,    76,     0,   176,     0,    67,
     81,     0,    65,    51,     0,    77,     0,    44,     0,    36,
     71,     0,    26,    81,     0,    91,     0,    47,     0,    58,
-     0,    40,     0,    22,    81,     0,   174,     0,   175,   203,
+     0,    40,     0,    22,    81,     0,   175,     0,   176,   204,
      0,    23,     0,    48,     0,    49,     0,    50,     0,    59,
      0,    64,     0,    74,     0,    83,     0,    85,     0,    90,
      0,    92,     0,    93,     0,    94,     0,    66,     0,    99,
      0,   100,     0,    97,     0,    98,     0,    96,     0,     0,
-   182,     0,   183,     0,    80,   106,   184,   107,     0,   106,
-   184,   107,     0,   183,   106,   184,   107,     0,   185,     0,
-   185,   109,   102,     0,   185,   109,   102,   109,   185,     0,
-   186,     0,   185,   178,   186,     0,   185,   179,   186,     0,
-   186,   180,   186,     0,   188,   106,   184,   107,     0,   106,
-   184,   107,     0,   189,     0,   189,   187,   189,     0,    61,
-   187,   189,     0,   189,   187,    60,     0,    61,   187,    60,
-     0,   195,     0,   190,     0,   101,     0,   101,   113,     0,
-   113,   101,     0,   113,   101,   113,     0,    80,     0,    46,
-     0,   206,     0,   212,     0,     6,     0,    45,     0,    86,
-     0,    95,    30,   104,   191,   105,     0,   192,     0,   191,
-   109,   192,     0,   102,     0,   212,   181,   193,     0,     0,
-   194,     0,    73,     0,    15,     0,    69,     0,   196,     0,
-   197,     0,   104,   209,   105,     0,   196,   104,   198,   105,
-     0,   199,     0,   198,   109,   199,     0,   114,   200,     0,
-   114,   112,   200,     0,   212,     0,   200,   112,   212,     0,
-     0,   202,     0,    69,     0,    33,   170,     0,   104,   105,
-     0,   104,   204,   105,     0,   205,     0,   204,   109,   205,
-     0,   212,     0,   212,   106,   206,   107,     0,   212,   106,
-   172,   107,     0,   206,     0,   102,     0,     9,     0,    10,
-     0,     0,   208,     0,   103,     0,   103,    52,     0,   103,
-    41,     0,    11,     0,    12,     0,    12,     0,     0,   212,
-     0,     8,     0
+   183,     0,   184,     0,    80,   105,   185,   106,     0,   105,
+   185,   106,     0,   184,   105,   185,   106,     0,   186,     0,
+   186,   108,   102,     0,   186,   108,   102,   108,   186,     0,
+   187,     0,   186,   179,   187,     0,   186,   180,   187,     0,
+   187,   181,   187,     0,   189,   105,   185,   106,     0,   105,
+   185,   106,     0,   190,     0,   190,   188,   190,     0,    61,
+   188,   190,     0,   190,   188,    60,     0,    61,   188,    60,
+     0,   196,     0,   191,     0,   101,     0,   101,   112,     0,
+   112,   101,     0,   112,   101,   112,     0,    80,     0,    46,
+     0,   207,     0,   216,     0,     6,     0,    45,     0,    86,
+     0,    95,    30,   103,   192,   104,     0,   193,     0,   192,
+   108,   193,     0,   102,     0,   216,   182,   194,     0,     0,
+   195,     0,    73,     0,    15,     0,    69,     0,   197,     0,
+   198,     0,   103,   213,   104,     0,   197,   103,   199,   104,
+     0,   200,     0,   199,   108,   200,     0,   113,   201,     0,
+   113,   111,   201,     0,   216,     0,   201,   111,   216,     0,
+     0,   203,     0,    69,     0,    33,   171,     0,   103,   104,
+     0,   103,   205,   104,     0,   206,     0,   205,   108,   206,
+     0,   216,     0,   216,   105,   207,   106,     0,   216,   105,
+   173,   106,     0,   207,     0,   102,     0,     9,     0,    10,
+     0,     0,   209,     0,   210,   212,     0,   114,   211,     9,
+   115,     0,     0,    89,     0,    19,     0,    75,     0,     0,
+    52,     0,    41,     0,    11,     0,    12,     0,    12,     0,
+     0,   216,     0,     8,     0
 };
 
 #endif
@@ -386,7 +387,8 @@
   1690,  1693,  1697,  1700,  1705,  1709,  1717,  1732,  1738,  1745,
   1758,  1770,  1785,  1789,  1806,  1811,  1814,  1819,  1841,  1846,
   1851,  1857,  1863,  1871,  1879,  1887,  1894,  1904,  1909,  1939,
-  1941,  1944,  1949,  1953,  1959,  1964,  1971,  1978,  1980,  1984
+  1941,  1944,  1951,  1957,  1959,  1960,  1961,  1964,  1966,  1967,
+  1970,  1975,  1982,  1989,  1991,  1995
 };
 #endif
 
@@ -412,7 +414,7 @@
 "TOK_TRUE","TOK_TYPE_IDENTIFIER","TOK_UNIQUE","TOK_UNIVERSAL","TOK_UniversalString",
 "TOK_UTCTime","TOK_UTF8String","TOK_VideotexString","TOK_VisibleString","TOK_WITH",
 "TOK_EXCEPT","'^'","TOK_INTERSECTION","'|'","TOK_UNION","TOK_TwoDots","TOK_ThreeDots",
-"TOK_tag","'{'","'}'","'('","')'","';'","','","':'","'!'","'.'","'<'","'@'",
+"'{'","'}'","'('","')'","';'","','","':'","'!'","'.'","'<'","'@'","'['","']'",
 "ParsedGrammar","ModuleList","ModuleSpecification","optObjectIdentifier","ObjectIdentifier",
 "ObjectIdentifierBody","ObjectIdentifierElement","optModuleSpecificationFlags",
 "ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody",
@@ -433,38 +435,39 @@
 "WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
 "SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
 "ComponentIdList","optMarker","Marker","UniverationDefinition","UniverationList",
-"UniverationElement","SignedNumber","optTag","Tag","TypeRefName","ObjectClassReference",
-"optIdentifier","Identifier", NULL
+"UniverationElement","SignedNumber","optTag","Tag","TagTypeValue","TagClass",
+"TagPlicit","TypeRefName","ObjectClassReference","optIdentifier","Identifier", NULL
 };
 #endif
 
 static const short yyr1[] = {     0,
-   115,   116,   116,   117,   118,   118,   119,   119,   120,   120,
-   121,   121,   121,   122,   122,   123,   123,   124,   124,   124,
-   124,   124,   125,   125,   126,   126,   127,   127,   127,   127,
-   127,   128,   127,   127,   129,   129,   130,   130,   131,   132,
-   132,   133,   133,   133,   134,   134,   134,   135,   135,   136,
-   136,   136,   137,   138,   138,   139,   139,   140,   140,   141,
-   141,   142,   142,   142,   142,   143,   143,   144,   144,   144,
-   145,   145,   146,   146,   147,   147,   148,   148,   149,   149,
-   149,   150,   150,   151,   151,   152,   153,   153,   154,   154,
-   155,   155,   155,   156,   156,   158,   157,   159,   159,   160,
-   160,   161,   161,   161,   162,   163,   163,   163,   163,   163,
-   163,   163,   163,   163,   163,   163,   163,   164,   164,   164,
-   164,   164,   164,   165,   165,   166,   167,   168,   168,   169,
-   170,   171,   170,   170,   170,   170,   170,   170,   170,   170,
-   170,   172,   172,   173,   173,   174,   174,   174,   174,   174,
-   174,   174,   174,   174,   174,   174,   174,   175,   175,   175,
-   176,   176,   177,   177,   177,   177,   177,   177,   177,   177,
-   177,   177,   177,   177,   177,   177,   178,   178,   179,   179,
-   180,   181,   181,   182,   182,   183,   183,   184,   184,   184,
-   185,   185,   185,   185,   186,   186,   186,   186,   186,   186,
-   186,   186,   186,   187,   187,   187,   187,   188,   188,   189,
-   189,   189,   189,   189,   190,   191,   191,   192,   192,   193,
-   193,   194,   194,   194,   195,   195,   196,   197,   198,   198,
-   199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
-   204,   204,   205,   205,   205,   205,   205,   206,   206,   207,
-   207,   208,   208,   208,   209,   209,   210,   211,   211,   212
+   116,   117,   117,   118,   119,   119,   120,   120,   121,   121,
+   122,   122,   122,   123,   123,   124,   124,   125,   125,   125,
+   125,   125,   126,   126,   127,   127,   128,   128,   128,   128,
+   128,   129,   128,   128,   130,   130,   131,   131,   132,   133,
+   133,   134,   134,   134,   135,   135,   135,   136,   136,   137,
+   137,   137,   138,   139,   139,   140,   140,   141,   141,   142,
+   142,   143,   143,   143,   143,   144,   144,   145,   145,   145,
+   146,   146,   147,   147,   148,   148,   149,   149,   150,   150,
+   150,   151,   151,   152,   152,   153,   154,   154,   155,   155,
+   156,   156,   156,   157,   157,   159,   158,   160,   160,   161,
+   161,   162,   162,   162,   163,   164,   164,   164,   164,   164,
+   164,   164,   164,   164,   164,   164,   164,   165,   165,   165,
+   165,   165,   165,   166,   166,   167,   168,   169,   169,   170,
+   171,   172,   171,   171,   171,   171,   171,   171,   171,   171,
+   171,   173,   173,   174,   174,   175,   175,   175,   175,   175,
+   175,   175,   175,   175,   175,   175,   175,   176,   176,   176,
+   177,   177,   178,   178,   178,   178,   178,   178,   178,   178,
+   178,   178,   178,   178,   178,   178,   179,   179,   180,   180,
+   181,   182,   182,   183,   183,   184,   184,   185,   185,   185,
+   186,   186,   186,   186,   187,   187,   187,   187,   187,   187,
+   187,   187,   187,   188,   188,   188,   188,   189,   189,   190,
+   190,   190,   190,   190,   191,   192,   192,   193,   193,   194,
+   194,   195,   195,   195,   196,   196,   197,   198,   199,   199,
+   200,   200,   201,   201,   202,   202,   203,   203,   204,   204,
+   205,   205,   206,   206,   206,   206,   206,   207,   207,   208,
+   208,   209,   210,   211,   211,   211,   211,   212,   212,   212,
+   213,   213,   214,   215,   215,   216
 };
 
 static const short yyr2[] = {     0,
@@ -493,11 +496,12 @@
      1,     1,     1,     1,     1,     1,     3,     4,     1,     3,
      2,     3,     1,     3,     0,     1,     1,     2,     2,     3,
      1,     3,     1,     4,     4,     1,     1,     1,     1,     0,
-     1,     1,     2,     2,     1,     1,     1,     0,     1,     1
+     1,     2,     4,     0,     1,     1,     1,     0,     1,     1,
+     1,     1,     1,     0,     1,     1
 };
 
 static const short yydefact[] = {     0,
-   255,   256,     1,     2,     5,     3,     0,     0,     6,   260,
+   261,   262,     1,     2,     5,     3,     0,     0,     6,   266,
     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,   163,     0,     0,
@@ -505,245 +509,249 @@
    172,   173,   174,   175,     0,    24,    25,    27,    28,    31,
     29,    30,    34,     0,     0,    32,     0,    47,     0,    48,
     50,    52,    36,     0,    37,     0,    40,    42,    44,     4,
-    26,   250,   118,   257,     0,   146,     0,     0,   159,   153,
+    26,   250,   118,   263,     0,   146,     0,     0,   159,   153,
    157,   158,   147,     0,     0,   148,   152,   156,     0,     0,
     54,    55,   149,   122,     0,    33,    46,    45,     0,     0,
-    35,    38,     0,     0,     0,     0,   252,    64,    63,     0,
-   251,     0,   160,   155,   154,   151,   150,     0,    66,     0,
-    68,     0,     0,     0,    49,    51,     5,    41,    43,     0,
-   254,   253,   118,   257,   113,     0,     0,   182,   182,    62,
-   182,   116,   161,   149,   106,   107,     0,   119,   121,     0,
-     0,     0,     0,    56,   128,   129,   123,   124,   126,   120,
-   137,   139,   138,   248,   249,   135,   134,   136,   132,   130,
-   141,   140,     0,   142,    39,     0,    89,   250,   127,     0,
-     0,     0,     0,    75,     0,     0,   183,   184,    75,     0,
-   105,     0,   162,   250,   250,    67,    70,    69,   212,   213,
-   209,     0,   208,   214,     0,    60,     0,     0,     0,    57,
-    58,    61,   191,     0,   197,   203,   202,   225,   226,   210,
-   211,     0,     0,     0,     0,    94,     0,     0,   237,    87,
-    87,    91,   236,     0,     0,   102,     0,    82,    85,   250,
-   117,     0,     0,     0,    76,    77,    81,   250,     0,   188,
-   258,     0,     0,   258,   247,   239,     0,   241,   246,   243,
-     0,    71,    73,    74,    65,   204,     0,     0,     0,     0,
-     0,    53,     0,   179,   180,   177,   178,     0,     0,   181,
-     0,     0,     0,     0,   125,   144,   133,   143,   131,     0,
-    86,    95,    90,   238,    88,   235,   235,   114,     0,   108,
-     0,    84,     0,   250,   109,     0,   235,   186,     0,   250,
-   259,     0,   110,   250,   240,     0,     0,   115,   250,   205,
-   206,   201,   199,     0,   227,   196,    59,   192,   193,   194,
-     0,   200,   198,     0,     0,   229,   145,     0,    92,    93,
-   103,   104,   142,    83,   185,    80,    78,    79,   189,     0,
-   187,     0,   242,     0,     0,    72,   207,   218,     0,   216,
-   182,   195,     0,   231,   233,   228,     0,    96,     0,   111,
-   112,   245,   244,   215,     0,   220,   232,     0,   230,     0,
-   190,   217,   223,   224,   222,   219,   221,   234,   100,     0,
-    98,   101,    97,    99,     0,     0,     0
+    35,    38,     0,     0,     0,     0,   254,    64,    63,     0,
+   251,   258,     0,   160,   155,   154,   151,   150,     0,    66,
+     0,    68,     0,     0,     0,    49,    51,     5,    41,    43,
+     0,   256,   257,   255,     0,   118,   263,   113,     0,     0,
+   182,   182,    62,   182,   116,   161,   149,   106,   107,     0,
+   260,   259,   252,   119,   121,     0,     0,     0,     0,    56,
+   128,   129,   123,   124,   126,   120,   137,   139,   138,   248,
+   249,   135,   134,   136,   132,   130,   141,   140,     0,   142,
+    39,     0,    89,   250,   127,     0,     0,     0,     0,     0,
+    75,     0,     0,   183,   184,    75,     0,   105,     0,   162,
+   250,   250,    67,    70,    69,   212,   213,   209,     0,   208,
+   214,     0,    60,     0,     0,     0,    57,    58,    61,   191,
+     0,   197,   203,   202,   225,   226,   210,   211,     0,     0,
+     0,     0,    94,     0,     0,   237,    87,    87,    91,   236,
+     0,   253,     0,   102,     0,    82,    85,   250,   117,     0,
+     0,     0,    76,    77,    81,   250,     0,   188,   264,     0,
+     0,   264,   247,   239,     0,   241,   246,   243,     0,    71,
+    73,    74,    65,   204,     0,     0,     0,     0,     0,    53,
+     0,   179,   180,   177,   178,     0,     0,   181,     0,     0,
+     0,     0,   125,   144,   133,   143,   131,     0,    86,    95,
+    90,   238,    88,   235,   235,   114,     0,   108,     0,    84,
+     0,   250,   109,     0,   235,   186,     0,   250,   265,     0,
+   110,   250,   240,     0,     0,   115,   250,   205,   206,   201,
+   199,     0,   227,   196,    59,   192,   193,   194,     0,   200,
+   198,     0,     0,   229,   145,     0,    92,    93,   103,   104,
+   142,    83,   185,    80,    78,    79,   189,     0,   187,     0,
+   242,     0,     0,    72,   207,   218,     0,   216,   182,   195,
+     0,   231,   233,   228,     0,    96,     0,   111,   112,   245,
+   244,   215,     0,   220,   232,     0,   230,     0,   190,   217,
+   223,   224,   222,   219,   221,   234,   100,     0,    98,   101,
+    97,    99,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   405,
+static const short yydefgoto[] = {   413,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
     56,    57,   106,    58,    74,    75,    76,    77,    59,    69,
-    70,    60,   100,   219,   220,   221,    61,   128,   129,   271,
-   272,   254,   255,   256,   247,   248,   118,   306,   186,   187,
-   301,   302,   390,   400,   401,   257,   273,   151,   152,   167,
-   168,   188,   189,    62,   180,   233,   181,   297,   153,   103,
-   155,   156,   288,   289,   291,   196,   197,   198,   259,   260,
-   223,   278,   224,   225,   226,   369,   370,   396,   397,   227,
-   228,   229,   345,   346,   374,   242,   243,   203,   267,   268,
-   230,   244,   121,   183,   104,   320,   231
+    70,    60,   100,   226,   227,   228,    61,   129,   130,   279,
+   280,   262,   263,   264,   255,   256,   118,   314,   192,   193,
+   309,   310,   398,   408,   409,   265,   281,   154,   155,   173,
+   174,   194,   195,    62,   186,   240,   187,   305,   156,   103,
+   158,   159,   296,   297,   299,   203,   204,   205,   267,   268,
+   230,   286,   231,   232,   233,   377,   378,   404,   405,   234,
+   235,   236,   353,   354,   382,   249,   250,   210,   275,   276,
+   237,   251,   121,   122,   145,   163,   189,   104,   328,   238
 };
 
-static const short yypact[] = {   244,
--32768,-32768,   244,-32768,   -75,-32768,     5,    42,-32768,-32768,
--32768,-32768,    36,-32768,   -67,   161,-32768,-32768,    76,    51,
-   -14,    29,    46,    50,   119,   161,-32768,    39,-32768,-32768,
--32768,-32768,-32768,   141,-32768,-32768,   305,-32768,   168,    11,
--32768,-32768,-32768,   157,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   167,   305,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,    14,   519,-32768,    75,-32768,   197,-32768,
-   121,-32768,-32768,    23,-32768,   -22,-32768,   130,-32768,-32768,
--32768,    -8,   111,-32768,   155,-32768,   166,   171,-32768,-32768,
--32768,-32768,-32768,   202,   177,-32768,-32768,-32768,   536,   274,
--32768,-32768,-32768,   154,   285,-32768,-32768,-32768,   174,   185,
--32768,-32768,   244,   174,   193,   196,   108,-32768,-32768,   382,
--32768,   174,-32768,-32768,-32768,-32768,-32768,    58,-32768,   201,
-   208,   199,   283,   263,-32768,-32768,   -75,-32768,-32768,   310,
--32768,-32768,    -6,   203,   286,   221,   261,   -24,    71,-32768,
-   -20,-32768,-32768,   235,-32768,-32768,   237,-32768,-32768,   335,
-   536,   334,   334,   144,-32768,-32768,   232,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   233,   236,-32768,   117,-32768,    61,-32768,   323,
-    19,   324,   245,    43,   206,   282,-32768,   246,    43,   289,
--32768,    38,-32768,    13,   255,-32768,-32768,-32768,-32768,-32768,
--32768,    -9,-32768,-32768,   330,-32768,   244,   206,   256,   253,
--32768,   234,   267,   259,    -9,-32768,-32768,   264,-32768,-32768,
--32768,   310,   366,   334,   263,   277,   310,   263,-32768,   288,
-   288,-32768,-32768,   459,   334,   262,   128,-32768,-32768,   255,
--32768,   206,   306,   275,   276,-32768,-32768,   255,   279,   101,
-   334,   206,   278,   334,-32768,-32768,   140,-32768,-32768,   281,
-   156,-32768,-32768,-32768,-32768,   269,   290,   254,   280,   284,
-   294,-32768,   144,-32768,-32768,-32768,-32768,   206,   206,-32768,
-   206,   206,   270,   293,-32768,-32768,   388,-32768,-32768,   314,
--32768,-32768,-32768,-32768,-32768,    24,    24,-32768,   273,-32768,
-    19,-32768,   295,   255,-32768,    43,    24,-32768,   301,   255,
--32768,   303,-32768,   255,-32768,    56,   273,-32768,    13,-32768,
-   298,-32768,-32768,    45,-32768,-32768,-32768,-32768,-32768,-32768,
-   307,-32768,-32768,     0,   182,-32768,-32768,   308,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   304,   459,
--32768,   459,-32768,   309,   312,-32768,-32768,-32768,   184,-32768,
-   -20,-32768,   334,   311,-32768,-32768,   293,-32768,   206,-32768,
--32768,-32768,-32768,-32768,    45,    88,   311,   334,-32768,   207,
-   234,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    28,
--32768,-32768,-32768,-32768,   415,   417,-32768
+static const short yypact[] = {   120,
+-32768,-32768,   120,-32768,   -64,-32768,    38,    -5,-32768,-32768,
+-32768,-32768,    55,-32768,   -25,   165,-32768,-32768,    90,    49,
+    60,    73,    74,    82,   136,   165,-32768,    54,-32768,-32768,
+-32768,-32768,-32768,   151,-32768,-32768,   314,-32768,   177,    23,
+-32768,-32768,-32768,   159,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   187,   314,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   256,   528,-32768,   114,-32768,    76,-32768,
+   133,-32768,-32768,    42,-32768,   -20,-32768,   147,-32768,-32768,
+-32768,    -3,   144,-32768,   183,-32768,   185,   198,-32768,-32768,
+-32768,-32768,-32768,   232,   212,-32768,-32768,-32768,   545,   292,
+-32768,-32768,-32768,   186,   295,-32768,-32768,-32768,   101,   195,
+-32768,-32768,   120,   101,   197,   199,     3,-32768,-32768,   391,
+-32768,   113,   101,-32768,-32768,-32768,-32768,-32768,    78,-32768,
+   200,   202,   210,   263,   279,-32768,-32768,   -64,-32768,-32768,
+   182,-32768,-32768,-32768,   306,   -22,   213,   283,   226,   266,
+   -12,    -8,-32768,   -32,-32768,-32768,   228,-32768,-32768,   233,
+-32768,-32768,-32768,-32768,-32768,   340,   545,   336,   336,    95,
+-32768,-32768,   235,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   238,   239,
+-32768,   103,-32768,    29,-32768,   236,   325,    36,   237,   248,
+     6,   142,   286,-32768,   250,     6,   289,-32768,    51,-32768,
+     5,   244,-32768,-32768,-32768,-32768,-32768,-32768,    57,-32768,
+-32768,   330,-32768,   120,   142,   257,   258,-32768,   241,   271,
+   265,    57,-32768,-32768,   269,-32768,-32768,-32768,   182,   371,
+   336,   279,   281,   182,   279,-32768,   291,   291,-32768,-32768,
+   468,-32768,   336,   267,   108,-32768,-32768,   244,-32768,   142,
+   313,   280,   275,-32768,-32768,   244,   284,   173,   336,   142,
+   287,   336,-32768,-32768,   110,-32768,-32768,   282,   116,-32768,
+-32768,-32768,-32768,   273,   293,   170,   290,   288,   294,-32768,
+    95,-32768,-32768,-32768,-32768,   142,   142,-32768,   142,   142,
+   234,   285,-32768,-32768,   392,-32768,-32768,   319,-32768,-32768,
+-32768,-32768,-32768,   -17,   -17,-32768,   296,-32768,    36,-32768,
+   299,   244,-32768,     6,   -17,-32768,   308,   244,-32768,   305,
+-32768,   244,-32768,    61,   296,-32768,     5,-32768,   300,-32768,
+-32768,    43,-32768,-32768,-32768,-32768,-32768,-32768,   310,-32768,
+-32768,    11,   123,-32768,-32768,   316,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   312,   468,-32768,   468,
+-32768,   315,   317,-32768,-32768,-32768,   125,-32768,   -32,-32768,
+   336,   311,-32768,-32768,   285,-32768,   142,-32768,-32768,-32768,
+-32768,-32768,    43,    17,   311,   336,-32768,   160,   241,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,    14,-32768,-32768,
+-32768,-32768,   395,   424,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   418,   287,-32768,-32768,   407,-32768,-32768,   399,-32768,
--32768,   371,-32768,-32768,-32768,   354,-32768,   319,-32768,-32768,
-   325,-32768,   370,-32768,-32768,   153,-32768,-32768,   291,-32768,
-   110,   238,-32768,   126,-32768,   132,-32768,   209,-32768,   214,
--32768,-32768,-32768,-32768,    44,  -179,   -79,  -188,   -54,-32768,
-   222,  -183,   -90,-32768,   -99,-32768,  -231,-32768,    -2,  -119,
--32768,    32,-32768,-32768,-32768,  -142,-32768,-32768,   -74,  -160,
-   -95,   228,-32768,  -210,-32768,-32768,    70,-32768,-32768,-32768,
--32768,-32768,-32768,    80,    89,  -206,-32768,-32768,-32768,   137,
-  -118,   -80,-32768,    15,-32768,   200,    -7
+-32768,   422,   298,-32768,-32768,   413,-32768,-32768,   402,-32768,
+-32768,   373,-32768,-32768,-32768,   356,-32768,   318,-32768,-32768,
+   324,-32768,   369,-32768,-32768,   146,-32768,-32768,   276,-32768,
+   105,   240,-32768,   121,-32768,   129,-32768,   196,-32768,   207,
+-32768,-32768,-32768,-32768,    44,  -183,   -65,  -129,   -53,-32768,
+   214,  -185,  -114,-32768,  -160,-32768,  -252,-32768,   -41,  -117,
+-32768,    18,-32768,-32768,-32768,  -147,-32768,-32768,  -204,  -168,
+   -36,   227,-32768,  -207,-32768,-32768,    67,-32768,-32768,-32768,
+-32768,-32768,-32768,    77,    80,  -238,-32768,-32768,-32768,   130,
+  -125,   -74,-32768,-32768,-32768,-32768,     1,-32768,   191,    -7
 };
 
 
-#define	YYLAST		627
+#define	YYLAST		636
 
 
 static const short yytable[] = {    15,
-   154,   120,   119,   222,   241,    15,   200,    10,   201,   101,
-   101,   249,    10,    11,     5,   182,    82,     5,    10,   116,
-    10,     1,     2,   113,    83,    84,    10,    67,     7,    65,
-    10,   399,    72,     1,     2,    85,    79,    86,    19,    87,
-   165,   166,   169,    10,    11,    10,   174,   175,    65,    88,
-    10,    64,    10,    89,    71,   193,   238,    90,    78,   193,
-    91,   102,   102,    10,   174,   175,    79,   333,    63,    30,
-    64,    92,   253,   165,   166,    16,    93,   351,    94,   194,
-    95,   195,   343,   269,    28,   195,   114,    63,    78,    96,
-    97,   276,   239,   238,   117,   364,   130,  -255,    32,   349,
-   350,    72,   393,   277,    98,   122,    79,    29,   240,    12,
-   358,   373,    31,   131,   159,   117,   182,    99,    68,   182,
-   246,    34,   222,    71,   154,   275,   184,   137,    78,   239,
-   111,   249,   403,    33,   157,   299,   158,   251,   304,   265,
-    17,   169,   266,   281,   246,    36,   368,   170,   141,   209,
-   193,    10,   174,   175,   207,   208,   394,   265,   130,   142,
-   395,    37,   160,   117,    10,  -235,   161,     1,     2,  -235,
-   312,   380,    20,   381,   199,   131,   195,   313,   317,    66,
-    21,    10,   107,   250,     1,     2,   258,   322,   210,   211,
-   352,   258,   338,   339,   270,   340,   274,   284,   285,   286,
-   287,    22,    73,    23,   212,    80,   402,   269,   365,   319,
-   399,   209,    24,    10,   174,   175,   402,   341,   391,   165,
-   166,   236,   122,   213,   110,   237,   298,   184,   386,   214,
-   184,   280,   310,   115,   356,   123,   311,   308,   215,   360,
-   154,   125,   154,   362,   325,   216,   124,   217,   326,   218,
-   210,   211,   126,   321,     1,     2,   321,   127,   157,   209,
-   328,    10,   174,   175,   329,   133,   212,   171,   172,   173,
-    10,   174,   175,     1,     2,   209,   132,    10,   174,   175,
-    10,   174,   175,     1,     2,   213,   376,   134,   384,   136,
-   377,   214,   385,     1,     2,   165,   166,   139,   210,   140,
-   215,   353,   164,   250,   108,   109,  -256,   176,   258,   217,
-   162,   218,    10,   332,   210,     1,     2,   163,   270,   353,
-   190,   274,   165,   166,   191,   177,   371,    38,   192,   342,
-   284,   285,   286,   287,    83,    84,   375,   205,   202,   214,
-   204,    10,    39,   232,   234,   235,    40,   245,   178,   261,
-   252,   262,    41,    42,    43,   214,   264,   117,    44,   279,
-   282,   283,   290,    45,   292,   375,   179,   294,    46,   296,
-    47,   300,   309,   314,   157,   305,   157,   371,    48,   315,
-   398,   330,   323,   334,   316,   318,   327,    49,   335,    50,
-   331,   347,   143,   144,    51,   348,    52,    53,    54,   145,
-   336,   355,   359,    85,    38,    86,   344,    87,   146,   361,
-   367,   378,   379,   372,   406,   382,   407,    88,   383,    18,
-     6,    89,   388,   185,    35,    90,    81,   112,    91,    41,
-    42,    43,   138,   135,   105,   337,   263,   147,   366,    92,
-    45,   357,   354,   404,    93,    46,    94,    47,    95,   307,
-   303,   206,   293,   295,   392,    48,   389,    96,    97,   148,
-   149,   387,   363,   324,    49,     0,    50,     0,   150,   143,
-   144,    51,    98,    52,    53,    54,   145,     0,     0,     0,
-    85,    38,    86,     0,    87,   146,     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,   147,     0,    92,    45,     0,     0,
-     0,    93,    46,    94,    47,    95,     0,     0,     0,    83,
-    84,     0,    48,     0,    96,    97,   148,   149,     0,     0,
-    85,    49,    86,    50,    87,     0,     1,     2,    51,    98,
-    52,    53,    54,     0,    88,     0,     0,    85,    89,    86,
-     0,    87,    90,     0,     0,    91,     0,     0,     0,     0,
-     0,    88,     0,     0,     0,    89,    92,     0,     0,    90,
-     0,    93,    91,    94,     0,    95,     0,     0,     0,     0,
-     0,     0,     0,    92,    96,    97,     0,     0,    93,     0,
-    94,     0,    95,     0,     0,     0,     0,     0,     0,    98,
-     0,    96,    97,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    98
+     5,   229,   157,     5,   207,    15,   208,   120,   248,   188,
+   101,   101,    10,    10,   257,   245,   119,   407,    10,   175,
+   289,   142,   102,   102,   116,   113,   171,   172,    16,    65,
+    10,   401,    72,     1,     2,   261,    79,    64,     7,    67,
+    71,   171,   172,    10,    78,    10,    11,   200,    65,    10,
+    10,   246,     1,     2,    63,   321,    64,   131,    10,   180,
+   181,   245,    10,    11,   359,   330,    79,   200,    10,   180,
+   181,   200,   202,    63,    78,   357,   358,   143,   341,    19,
+  -261,   307,   372,   277,   312,   402,   366,   114,   123,   403,
+   201,   144,   202,   351,   206,   349,   202,   246,    28,   132,
+   216,    72,    10,   180,   181,    29,    79,   254,    10,    71,
+   117,     1,     2,   138,    78,   165,   188,   411,   117,   188,
+   160,   381,   229,   164,   175,   131,    32,   190,   247,    68,
+     1,     2,  -235,   157,   176,   257,  -235,   254,    34,   217,
+   218,    12,   117,    30,   376,   259,   283,   216,   111,    10,
+   180,   181,   273,   161,   274,   219,    31,   284,    17,    36,
+   214,   215,   273,   407,   162,    33,    10,   132,   285,     1,
+     2,    37,   171,   172,   220,   216,    20,    10,   180,   181,
+   221,   166,   108,   109,    21,   167,   217,   218,    66,   222,
+   258,   360,   320,   266,   171,   172,   223,   224,   266,   225,
+   325,   278,   219,   282,    73,    22,   243,    23,   277,   373,
+   244,   318,   410,   333,   217,   319,    24,   334,   399,   336,
+   107,   220,   410,   337,   288,    80,   384,   221,   392,   340,
+   385,   394,   393,   306,   190,   110,   222,   190,   388,   216,
+   389,    10,   180,   181,   224,   316,   225,    83,    84,   115,
+   157,   160,   157,   368,   123,   221,   364,   370,    82,   346,
+   347,   329,   348,   124,   329,   125,    83,    84,   126,   292,
+   293,   294,   295,     1,     2,   171,   172,    85,   217,    86,
+   327,    87,   127,   177,   178,   179,    10,   180,   181,     1,
+     2,    88,   128,   350,   133,    89,   134,   135,   137,    90,
+   140,   141,    91,    10,   180,   181,     1,     2,   168,   361,
+   169,   258,   170,    92,   196,  -262,   266,   197,    93,   221,
+    94,    10,    95,   182,     1,     2,   278,   361,   198,   282,
+   209,    96,    97,   199,   379,   211,    38,   292,   293,   294,
+   295,   183,   212,    10,   383,   239,    98,   242,   241,   253,
+   252,    39,   260,   269,   270,    40,   272,   117,    99,   287,
+   290,    41,    42,    43,   184,   291,   298,    44,   160,   300,
+   160,   302,    45,   383,   304,   308,   317,    46,   313,    47,
+   322,   185,   324,   323,   338,   379,   335,    48,   406,   326,
+   331,   343,   342,   339,   414,   355,    49,   352,    50,   344,
+   356,   146,   147,    51,   363,    52,    53,    54,   148,   367,
+   369,   375,    85,    38,    86,   380,    87,   149,   386,   387,
+   390,   396,   391,   415,     6,    18,    88,    35,    81,   112,
+    89,   139,   136,   105,    90,   191,   345,    91,    41,    42,
+    43,   374,   213,   315,   365,   271,   150,   362,    92,    45,
+   311,   412,   303,    93,    46,    94,    47,    95,   301,   400,
+   395,   397,   332,   371,    48,     0,    96,    97,   151,   152,
+     0,     0,     0,    49,     0,    50,     0,   153,   146,   147,
+    51,    98,    52,    53,    54,   148,     0,     0,     0,    85,
+    38,    86,     0,    87,   149,     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,   150,     0,    92,    45,     0,     0,     0,
+    93,    46,    94,    47,    95,     0,     0,     0,    83,    84,
+     0,    48,     0,    96,    97,   151,   152,     0,     0,    85,
+    49,    86,    50,    87,     0,     1,     2,    51,    98,    52,
+    53,    54,     0,    88,     0,     0,    85,    89,    86,     0,
+    87,    90,     0,     0,    91,     0,     0,     0,     0,     0,
+    88,     0,     0,     0,    89,    92,     0,     0,    90,     0,
+    93,    91,    94,     0,    95,     0,     0,     0,     0,     0,
+     0,     0,    92,    96,    97,     0,     0,    93,     0,    94,
+     0,    95,     0,     0,     0,     0,     0,     0,    98,     0,
+    96,    97,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    98
 };
 
 static const short yycheck[] = {     7,
-   120,    82,    82,   164,   188,    13,   149,     8,   151,    64,
-    65,   191,     8,     9,     0,   134,     3,     3,     8,    28,
-     8,    11,    12,    46,    11,    12,     8,    17,   104,    37,
-     8,     4,    40,    11,    12,    22,    44,    24,   106,    26,
-    13,    14,   133,     8,     9,     8,     9,    10,    56,    36,
-     8,    37,     8,    40,    40,    80,    33,    44,    44,    80,
-    47,    64,    65,     8,     9,    10,    74,   278,    37,    84,
-    56,    58,    30,    13,    14,    34,    63,   309,    65,   104,
-    67,   106,   293,   202,     9,   106,   109,    56,    74,    76,
-    77,   101,    69,    33,   103,   327,    99,   104,    53,   306,
-   307,   109,    15,   113,    91,   112,   114,    57,   188,   105,
-   317,   112,    84,    99,   122,   103,   235,   104,   108,   238,
-   102,     3,   283,   109,   244,   205,   134,   113,   114,    69,
-   108,   311,   105,    84,   120,   235,   122,   192,   238,   102,
-   105,   232,   105,   218,   102,   107,   102,   133,    41,     6,
-    80,     8,     9,    10,   162,   163,    69,   102,   161,    52,
-    73,    21,   105,   103,     8,   105,   109,    11,    12,   109,
-   250,   360,    12,   362,   104,   161,   106,   252,   258,    12,
-    20,     8,   108,   191,    11,    12,   194,   262,    45,    46,
-   309,   199,   288,   289,   202,   291,   204,    97,    98,    99,
-   100,    41,    46,    43,    61,    39,   390,   326,   327,   109,
-     4,     6,    52,     8,     9,    10,   400,   292,   379,    13,
-    14,   105,   112,    80,   104,   109,   234,   235,   371,    86,
-   238,   217,   105,   104,   314,    81,   109,   245,    95,   320,
-   360,    71,   362,   324,   105,   102,    81,   104,   109,   106,
-    45,    46,    51,   261,    11,    12,   264,    81,   244,     6,
-   105,     8,     9,    10,   109,   112,    61,     5,     6,     7,
-     8,     9,    10,    11,    12,     6,     3,     8,     9,    10,
-     8,     9,    10,    11,    12,    80,   105,     3,   105,   105,
-   109,    86,   109,    11,    12,    13,    14,   105,    45,   104,
-    95,   309,   104,   311,   108,   109,   104,    45,   316,   104,
-   110,   106,     8,    60,    45,    11,    12,   110,   326,   327,
-    35,   329,    13,    14,   104,    63,   334,    23,    68,    60,
-    97,    98,    99,   100,    11,    12,   344,     3,   104,    86,
-   104,     8,    38,   112,   112,   110,    42,    25,    86,    68,
-   106,   106,    48,    49,    50,    86,    68,   103,    54,    30,
-   105,   109,    96,    59,   106,   373,   104,   104,    64,     4,
-    66,    95,   111,    68,   360,    88,   362,   385,    74,   105,
-   388,   113,   105,   104,   109,   107,   106,    83,   105,    85,
-   101,     4,    11,    12,    90,    82,    92,    93,    94,    18,
-   107,   107,   102,    22,    23,    24,   114,    26,    27,   107,
-   113,   104,   109,   107,     0,   107,     0,    36,   107,    13,
-     3,    40,   112,   137,    26,    44,    56,    74,    47,    48,
-    49,    50,   114,   109,    65,   283,   199,    56,   329,    58,
-    59,   316,   311,   400,    63,    64,    65,    66,    67,   241,
-   237,   161,   225,   232,   385,    74,   377,    76,    77,    78,
-    79,   373,   326,   264,    83,    -1,    85,    -1,    87,    11,
-    12,    90,    91,    92,    93,    94,    18,    -1,    -1,    -1,
-    22,    23,    24,    -1,    26,    27,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,
-    -1,    -1,    44,    -1,    -1,    47,    48,    49,    50,    -1,
-    -1,    -1,    -1,    -1,    56,    -1,    58,    59,    -1,    -1,
-    -1,    63,    64,    65,    66,    67,    -1,    -1,    -1,    11,
-    12,    -1,    74,    -1,    76,    77,    78,    79,    -1,    -1,
-    22,    83,    24,    85,    26,    -1,    11,    12,    90,    91,
-    92,    93,    94,    -1,    36,    -1,    -1,    22,    40,    24,
-    -1,    26,    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,
-    -1,    36,    -1,    -1,    -1,    40,    58,    -1,    -1,    44,
-    -1,    63,    47,    65,    -1,    67,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    58,    76,    77,    -1,    -1,    63,    -1,
-    65,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    91,
-    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    91
+     0,   170,   120,     3,   152,    13,   154,    82,   194,   135,
+    64,    65,     8,     8,   198,    33,    82,     4,     8,   134,
+   225,    19,    64,    65,    28,    46,    13,    14,    34,    37,
+     8,    15,    40,    11,    12,    30,    44,    37,   103,    17,
+    40,    13,    14,     8,    44,     8,     9,    80,    56,     8,
+     8,    69,    11,    12,    37,   260,    56,    99,     8,     9,
+    10,    33,     8,     9,   317,   270,    74,    80,     8,     9,
+    10,    80,   105,    56,    74,   314,   315,    75,   286,   105,
+   103,   242,   335,   209,   245,    69,   325,   108,   111,    73,
+   103,    89,   105,   301,   103,   300,   105,    69,     9,    99,
+     6,   109,     8,     9,    10,    57,   114,   102,     8,   109,
+   114,    11,    12,   113,   114,   123,   242,   104,   114,   245,
+   120,   111,   291,   123,   239,   167,    53,   135,   194,   107,
+    11,    12,   104,   251,   134,   319,   108,   102,     3,    45,
+    46,   104,   114,    84,   102,   199,   212,     6,   107,     8,
+     9,    10,   102,    41,   104,    61,    84,   101,   104,   106,
+   168,   169,   102,     4,    52,    84,     8,   167,   112,    11,
+    12,    21,    13,    14,    80,     6,    12,     8,     9,    10,
+    86,   104,   107,   108,    20,   108,    45,    46,    12,    95,
+   198,   317,   258,   201,    13,    14,   102,   103,   206,   105,
+   266,   209,    61,   211,    46,    41,   104,    43,   334,   335,
+   108,   104,   398,   104,    45,   108,    52,   108,   387,   104,
+   107,    80,   408,   108,   224,    39,   104,    86,   104,    60,
+   108,   379,   108,   241,   242,   103,    95,   245,   368,     6,
+   370,     8,     9,    10,   103,   253,   105,    11,    12,   103,
+   368,   251,   370,   328,   111,    86,   322,   332,     3,   296,
+   297,   269,   299,    81,   272,    81,    11,    12,    71,    97,
+    98,    99,   100,    11,    12,    13,    14,    22,    45,    24,
+   108,    26,    51,     5,     6,     7,     8,     9,    10,    11,
+    12,    36,    81,    60,     3,    40,   111,     3,   104,    44,
+   104,   103,    47,     8,     9,    10,    11,    12,   109,   317,
+   109,   319,   103,    58,     9,   103,   324,    35,    63,    86,
+    65,     8,    67,    45,    11,    12,   334,   335,   103,   337,
+   103,    76,    77,    68,   342,   103,    23,    97,    98,    99,
+   100,    63,     3,     8,   352,   111,    91,   109,   111,    25,
+   115,    38,   105,    68,   105,    42,    68,   114,   103,    30,
+   104,    48,    49,    50,    86,   108,    96,    54,   368,   105,
+   370,   103,    59,   381,     4,    95,   110,    64,    88,    66,
+    68,   103,   108,   104,   112,   393,   105,    74,   396,   106,
+   104,   104,   103,   101,     0,     4,    83,   113,    85,   106,
+    82,    11,    12,    90,   106,    92,    93,    94,    18,   102,
+   106,   112,    22,    23,    24,   106,    26,    27,   103,   108,
+   106,   111,   106,     0,     3,    13,    36,    26,    56,    74,
+    40,   114,   109,    65,    44,   138,   291,    47,    48,    49,
+    50,   337,   167,   248,   324,   206,    56,   319,    58,    59,
+   244,   408,   239,    63,    64,    65,    66,    67,   232,   393,
+   381,   385,   272,   334,    74,    -1,    76,    77,    78,    79,
+    -1,    -1,    -1,    83,    -1,    85,    -1,    87,    11,    12,
+    90,    91,    92,    93,    94,    18,    -1,    -1,    -1,    22,
+    23,    24,    -1,    26,    27,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    36,    -1,    -1,    -1,    40,    -1,    -1,
+    -1,    44,    -1,    -1,    47,    48,    49,    50,    -1,    -1,
+    -1,    -1,    -1,    56,    -1,    58,    59,    -1,    -1,    -1,
+    63,    64,    65,    66,    67,    -1,    -1,    -1,    11,    12,
+    -1,    74,    -1,    76,    77,    78,    79,    -1,    -1,    22,
+    83,    24,    85,    26,    -1,    11,    12,    90,    91,    92,
+    93,    94,    -1,    36,    -1,    -1,    22,    40,    24,    -1,
+    26,    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+    36,    -1,    -1,    -1,    40,    58,    -1,    -1,    44,    -1,
+    63,    47,    65,    -1,    67,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    58,    76,    77,    -1,    -1,    63,    -1,    65,
+    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,
+    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    91
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -3228,57 +3236,78 @@
 case 252:
 #line 1945 "asn1p_y.y"
 {
-		yyval.a_tag = yyvsp[0].a_tag;
-		yyval.a_tag.tag_mode = TM_DEFAULT;
+		yyval.a_tag = yyvsp[-1].a_tag;
+		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	;
     break;}
 case 253:
-#line 1949 "asn1p_y.y"
+#line 1952 "asn1p_y.y"
 {
-		yyval.a_tag = yyvsp[-1].a_tag;
-		yyval.a_tag.tag_mode = TM_IMPLICIT;
+		yyval.a_tag = yyvsp[-2].a_tag;
+		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	;
     break;}
 case 254:
-#line 1953 "asn1p_y.y"
-{
-		yyval.a_tag = yyvsp[-1].a_tag;
-		yyval.a_tag.tag_mode = TM_EXPLICIT;
-	;
+#line 1958 "asn1p_y.y"
+{ yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
     break;}
 case 255:
-#line 1960 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
+#line 1959 "asn1p_y.y"
+{ yyval.a_tag.tag_class = TC_UNIVERSAL; ;
     break;}
 case 256:
-#line 1964 "asn1p_y.y"
-{
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	;
+#line 1960 "asn1p_y.y"
+{ yyval.a_tag.tag_class = TC_APPLICATION; ;
     break;}
 case 257:
-#line 1972 "asn1p_y.y"
+#line 1961 "asn1p_y.y"
+{ yyval.a_tag.tag_class = TC_PRIVATE; ;
+    break;}
+case 258:
+#line 1965 "asn1p_y.y"
+{ yyval.a_tag.tag_mode = TM_DEFAULT; ;
+    break;}
+case 259:
+#line 1966 "asn1p_y.y"
+{ yyval.a_tag.tag_mode = TM_IMPLICIT; ;
+    break;}
+case 260:
+#line 1967 "asn1p_y.y"
+{ yyval.a_tag.tag_mode = TM_EXPLICIT; ;
+    break;}
+case 261:
+#line 1971 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 258:
-#line 1979 "asn1p_y.y"
+case 262:
+#line 1975 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 263:
+#line 1983 "asn1p_y.y"
+{
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	;
+    break;}
+case 264:
+#line 1990 "asn1p_y.y"
 { yyval.tv_str = 0; ;
     break;}
-case 259:
-#line 1980 "asn1p_y.y"
+case 265:
+#line 1991 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
-case 260:
-#line 1985 "asn1p_y.y"
+case 266:
+#line 1996 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3506,7 +3535,7 @@
     }
   return 1;
 }
-#line 1991 "asn1p_y.y"
+#line 2002 "asn1p_y.y"