widl: Accept known type as library name.

Backported from Wine commit 2ff2792fc496313cf1178855dbf5e172ed08cc9b
diff --git a/mingw-w64-tools/widl/src/parser.tab.c b/mingw-w64-tools/widl/src/parser.tab.c
index d191f89..01cbc9f 100644
--- a/mingw-w64-tools/widl/src/parser.tab.c
+++ b/mingw-w64-tools/widl/src/parser.tab.c
@@ -708,16 +708,16 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3077
+#define YYLAST   3097
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  210
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  101
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  387
+#define YYNRULES  388
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  679
+#define YYNSTATES  680
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
@@ -786,9 +786,9 @@
      334,   335,   338,   339,   340,   342,   343,   344,   347,   348,
      349,   350,   353,   354,   357,   358,   362,   363,   364,   365,
      366,   367,   371,   372,   373,   374,   375,   376,   377,   378,
-     379,   382,   384,   392,   398,   402,   404,   408,   415,   416,
-     419,   420,   423,   424,   428,   433,   440,   444,   445,   448,
-     449,   453,   456,   457,   458,   461,   462,   465,   466,   467,
+     379,   382,   384,   392,   398,   402,   403,   405,   409,   416,
+     417,   420,   421,   424,   425,   429,   434,   441,   445,   446,
+     449,   450,   454,   457,   458,   459,   462,   463,   466,   467,
      468,   469,   470,   471,   472,   473,   474,   475,   476,   477,
      478,   479,   480,   481,   482,   483,   484,   485,   486,   487,
      488,   489,   490,   491,   492,   493,   494,   495,   496,   497,
@@ -796,31 +796,31 @@
      508,   509,   510,   511,   512,   513,   514,   515,   516,   517,
      518,   519,   520,   521,   522,   523,   524,   525,   526,   527,
      528,   529,   530,   531,   532,   533,   534,   535,   536,   537,
-     538,   539,   540,   544,   545,   546,   547,   548,   549,   550,
+     538,   539,   540,   541,   545,   546,   547,   548,   549,   550,
      551,   552,   553,   554,   555,   556,   557,   558,   559,   560,
-     561,   562,   563,   564,   565,   566,   567,   571,   572,   577,
-     578,   579,   580,   583,   584,   587,   591,   597,   598,   599,
-     602,   606,   618,   622,   627,   630,   631,   634,   635,   638,
+     561,   562,   563,   564,   565,   566,   567,   568,   572,   573,
+     578,   579,   580,   581,   584,   585,   588,   592,   598,   599,
+     600,   603,   607,   619,   623,   628,   631,   632,   635,   636,
      639,   640,   641,   642,   643,   644,   645,   646,   647,   648,
      649,   650,   651,   652,   653,   654,   655,   656,   657,   658,
      659,   660,   661,   662,   663,   664,   665,   666,   667,   668,
-     669,   670,   671,   672,   673,   674,   675,   677,   679,   680,
-     683,   684,   687,   693,   699,   700,   703,   708,   715,   716,
-     719,   720,   724,   725,   728,   732,   738,   746,   750,   755,
-     756,   759,   760,   761,   764,   766,   769,   770,   771,   772,
-     773,   774,   775,   776,   777,   778,   779,   782,   783,   786,
-     787,   788,   789,   790,   791,   792,   793,   796,   797,   805,
-     811,   815,   818,   819,   823,   826,   827,   830,   839,   840,
-     843,   844,   847,   853,   859,   860,   863,   864,   867,   877,
-     886,   892,   896,   897,   900,   901,   904,   909,   916,   917,
-     918,   922,   926,   929,   930,   933,   934,   938,   939,   943,
-     944,   945,   949,   951,   953,   957,   958,   959,   960,   968,
-     970,   972,   977,   979,   984,   985,   990,   991,   992,   993,
-     998,  1007,  1009,  1010,  1015,  1017,  1021,  1022,  1029,  1030,
-    1031,  1032,  1033,  1038,  1046,  1047,  1050,  1051,  1054,  1061,
-    1062,  1067,  1068,  1072,  1073,  1074,  1075,  1076,  1080,  1081,
-    1082,  1085,  1088,  1089,  1090,  1091,  1092,  1093,  1094,  1095,
-    1096,  1097,  1100,  1107,  1109,  1115,  1116,  1117
+     669,   670,   671,   672,   673,   674,   675,   676,   678,   680,
+     681,   684,   685,   688,   694,   700,   701,   704,   709,   716,
+     717,   720,   721,   725,   726,   729,   733,   739,   747,   751,
+     756,   757,   760,   761,   762,   765,   767,   770,   771,   772,
+     773,   774,   775,   776,   777,   778,   779,   780,   783,   784,
+     787,   788,   789,   790,   791,   792,   793,   794,   797,   798,
+     806,   812,   816,   819,   820,   824,   827,   828,   831,   840,
+     841,   844,   845,   848,   854,   860,   861,   864,   865,   868,
+     878,   887,   893,   897,   898,   901,   902,   905,   910,   917,
+     918,   919,   923,   927,   930,   931,   934,   935,   939,   940,
+     944,   945,   946,   950,   952,   954,   958,   959,   960,   961,
+     969,   971,   973,   978,   980,   985,   986,   991,   992,   993,
+     994,   999,  1008,  1010,  1011,  1016,  1018,  1022,  1023,  1030,
+    1031,  1032,  1033,  1034,  1039,  1047,  1048,  1051,  1052,  1055,
+    1062,  1063,  1068,  1069,  1073,  1074,  1075,  1076,  1077,  1081,
+    1082,  1083,  1086,  1089,  1090,  1091,  1092,  1093,  1094,  1095,
+    1096,  1097,  1098,  1101,  1108,  1110,  1116,  1117,  1118
 };
 #endif
 
@@ -921,12 +921,12 @@
 };
 # endif
 
-#define YYPACT_NINF -526
+#define YYPACT_NINF -522
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-526)))
+  (!!((Yystate) == (-522)))
 
-#define YYTABLE_NINF -253
+#define YYTABLE_NINF -254
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -935,74 +935,74 @@
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -526,    59,  1737,  -526,  -526,  -526,  -526,  -526,  -526,   163,
-    -526,  -138,   169,  -526,   194,  -526,  -526,  -526,  -526,    12,
-      73,  -526,  -526,  -526,  -526,   219,    12,   120,  -526,   -64,
-      12,   300,  -526,  -526,   266,   270,   300,  -526,  -526,  2902,
-    -526,   -48,  -526,  -526,  -526,  -526,  -526,    46,  2579,   -44,
-     -23,  -526,  -526,    39,    19,  -526,    48,    47,    54,    62,
-      76,   -33,  -526,  -526,    82,  -526,    96,    96,    96,    57,
-    2751,    86,    96,    87,    90,  -526,  -526,   223,  -526,  -526,
-      72,  -526,    95,  -526,  -526,   103,  -526,  -526,  -526,  -526,
-    2751,  -526,  -526,    99,   112,  -112,  -109,  -526,  -526,    21,
-    -526,  -526,    56,  -526,  -526,  -526,    93,   156,  -526,  -526,
-    -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,   157,  -526,
-    -526,  -526,   162,  -526,  -526,  -526,   164,   168,  -526,  -526,
-    -526,  -526,   170,   171,   173,   174,   175,  -526,   177,  -526,
-    -526,   178,  -526,   179,  -526,  -526,   184,   186,  -526,  -526,
-    -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,
-    -526,   187,  -526,  -526,  -526,   193,   196,  -526,  -526,  -526,
-    -526,  -526,  -526,   197,  -526,  -526,   200,  -526,  -526,  -526,
-     201,  -526,  -526,  -526,   202,   203,   215,   216,  -526,  -526,
-    -526,   220,   225,  -526,  -526,   228,   231,   234,   -56,  -526,
-    -526,  -526,  1620,   877,   136,   301,   373,   329,   347,   356,
-     226,   195,  -526,  -526,  -526,  -526,    57,   237,   239,  -526,
-    -526,  -526,  -526,  -526,   -22,  -526,  -526,  -526,   357,   242,
-    -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,
-    -526,  -526,    57,    57,  -526,   238,  -141,  -526,  -526,  -526,
-      96,  -526,  -526,  -526,   241,   365,  -526,   243,  -526,   247,
-    -526,   453,   161,   365,   713,   713,   454,   455,   713,   713,
-     456,   457,   713,   458,   713,   713,  2168,   713,   713,   459,
-     -54,   461,   713,  2751,   713,   713,  2751,   135,  2751,  2751,
-     161,   130,   462,  2751,  2902,   271,  -526,   265,  -526,  -526,
-    -526,   273,  -526,   276,  -526,  -526,  -526,    62,  2665,  -526,
-     277,  -526,  -526,  -526,   277,  -105,  -526,  -526,   -18,  1111,
-     294,   -76,   280,   278,  -526,  -526,  1213,    42,   279,  -526,
-     713,    94,  2168,  -526,  -526,  -526,   284,   309,  -526,   282,
-    -526,   -13,   136,   -11,   288,  -526,  -526,   289,   291,  -526,
-    -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,   285,  -526,
-     713,   713,   713,   713,   713,   713,   703,  2390,   -91,  -526,
-    2390,   292,   296,  -526,   -70,   298,   302,   303,   304,   305,
-     306,   307,   398,   308,  2665,    88,   310,   -66,  -526,  2390,
-     311,   313,   314,   321,   315,   -63,  2174,   316,  -526,  -526,
-    -526,  -526,  -526,   317,   318,   319,   322,   328,  -526,   323,
-     324,   326,  -526,  2902,   499,  -526,  -526,  -526,    57,    62,
-     -21,  -526,  -526,  -526,   352,  2665,   331,  1503,   334,   419,
-    1315,    62,  -526,  2665,  -526,  -526,  -526,  -526,   450,  -526,
-    1425,   336,   366,  -526,  -526,  -526,   365,   713,  -526,  2665,
-    -526,   338,  -526,   342,  -526,   343,  -526,  -526,  -526,  2665,
-      18,    18,    18,    18,    18,    18,  2260,   248,   713,   713,
-     547,   713,   713,   713,   713,   713,   713,   713,   713,   713,
-     713,   713,   713,   713,   713,   713,   713,   713,   548,   713,
-     713,  -526,  -526,  -526,   543,  -526,  -526,  -526,  -526,  -526,
-    -526,  -526,  -526,  -526,  -526,    88,  -526,  1823,  -526,    88,
-    -526,  -526,  -526,  -137,  -526,   713,  -526,  -526,  -526,  -526,
-     713,  -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,   549,
-    -526,  -526,  -526,  -526,   346,   994,  -526,   375,  -526,  -526,
-    -526,    57,   166,  -526,  -526,  2665,   351,  -526,  -526,  -526,
-      62,  -526,  -526,  -526,  -526,  2082,  -526,  -526,    88,   354,
-     365,  -526,  -526,   248,  -526,  -526,  1950,  -526,   248,  -526,
-     350,  -135,    25,    25,  -526,   603,   603,   165,   165,   817,
-    2285,  2369,  2408,  2440,   740,   165,   165,    64,    64,    18,
-      18,    18,  -526,  2329,  -526,  -526,  -526,    70,  -526,   353,
-      88,   355,  -526,  2168,  -526,  -526,   358,  -526,    62,  -526,
-      57,  -526,  -526,  1417,  -526,  -526,  -526,   379,  -526,   -94,
-    -526,   364,  -526,   361,   100,  -526,   369,    88,   370,  -526,
-     713,  2168,  -526,   713,  -526,  -526,    70,  -526,  -526,  -526,
-     371,  -526,  -526,  -526,    62,   713,  -526,    88,  -526,  -526,
-    -526,  -526,    70,  -526,  -526,  -526,    18,   384,  2390,  -526,
-    -526,  -526,  -526,  -526,    -3,  -526,  -526,   713,   411,  -526,
-    -526,   412,   -86,   -86,  -526,  -526,   390,  -526,  -526
+    -522,   104,  1753,  -522,  -522,  -522,  -522,  -522,  -522,   135,
+    -522,   -34,   143,  -522,   158,  -522,  -522,  -522,  -522,    14,
+     160,  -522,  -522,  -522,  -522,   213,    14,   180,  -522,    -5,
+      14,   522,  -522,  -522,   226,   266,   522,  -522,  -522,  2922,
+    -522,    36,  -522,  -522,  -522,  -522,  -522,    71,  2599,    37,
+      41,  -522,  -522,    52,    68,  -522,    80,    91,    96,    95,
+     107,    56,  -522,  -522,   113,  -522,   270,   270,   270,   108,
+    2771,   129,   270,   130,   134,  -522,  -522,   269,  -522,  -522,
+      75,  -522,   146,  -522,  -522,   167,  -522,  -522,  -522,  -522,
+    2771,  -522,  -522,    76,   181,  -118,  -110,  -522,  -522,   175,
+    -522,  -522,   185,  -522,  -522,  -522,   186,   188,  -522,  -522,
+    -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,   190,  -522,
+    -522,  -522,   191,  -522,  -522,  -522,   192,   193,  -522,  -522,
+    -522,  -522,   194,   197,   198,   199,   202,  -522,   203,  -522,
+    -522,   206,  -522,   207,  -522,  -522,   208,   209,  -522,  -522,
+    -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+    -522,   210,  -522,  -522,  -522,   211,   212,  -522,  -522,  -522,
+    -522,  -522,  -522,   214,  -522,  -522,   216,  -522,  -522,  -522,
+     217,  -522,  -522,  -522,   221,   224,   229,   232,  -522,  -522,
+    -522,   233,   235,  -522,  -522,   237,   238,   239,  -114,  -522,
+    -522,  -522,  1636,   893,   231,   293,   302,   303,   346,   350,
+     183,   241,  -522,  -522,  -522,  -522,   108,   242,   243,  -522,
+    -522,  -522,  -522,  -522,   -29,  -522,  -522,  -522,   371,   246,
+    -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+    -522,  -522,   108,   108,  -522,   254,  -107,  -522,  -522,  -522,
+     270,  -522,  -522,  -522,   244,   378,  -522,   247,  -522,   257,
+    -522,   442,   153,   378,   729,   729,   457,   458,   729,   729,
+     459,   460,   729,   462,   729,   729,  2184,   729,   729,   463,
+     -81,   464,   729,  2771,   729,   729,  2771,    35,  2771,  2771,
+     153,   219,   465,  2771,  2922,   274,  -522,   271,  -522,  -522,
+    -522,   273,  -522,   276,  -522,  -522,  -522,    95,  2685,  -522,
+     277,  -522,  -522,  -522,  -522,   277,   -79,  -522,  -522,   -35,
+    1127,   309,   -76,   289,   292,  -522,  -522,  1229,    57,   297,
+    -522,   729,    33,  2184,  -522,  -522,  -522,   306,   320,  -522,
+     298,  -522,   -31,   231,    -7,   304,  -522,  -522,   305,   307,
+    -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,   310,
+    -522,   729,   729,   729,   729,   729,   729,   719,  2428,  -117,
+    -522,  2428,   308,   311,  -522,   -96,   312,   315,   316,   317,
+     318,   319,   322,  2190,   324,  2685,    66,   327,   -84,  -522,
+    2428,   328,   332,   333,   347,   337,   -74,  2276,   341,  -522,
+    -522,  -522,  -522,  -522,   342,   343,   344,   345,   313,  -522,
+     351,   353,   355,  -522,  2922,   539,  -522,  -522,  -522,   108,
+      95,    34,  -522,  -522,  -522,   372,  2685,   352,  1519,   359,
+     477,  1331,    95,  -522,  2685,  -522,  -522,  -522,  -522,   451,
+    -522,  1441,   361,   396,  -522,  -522,  -522,   378,   729,  -522,
+    2685,  -522,   370,  -522,   373,  -522,   374,  -522,  -522,  -522,
+    2685,    19,    19,    19,    19,    19,    19,  2345,   340,   729,
+     729,   578,   729,   729,   729,   729,   729,   729,   729,   729,
+     729,   729,   729,   729,   729,   729,   729,   729,   729,   579,
+     729,   729,  -522,  -522,  -522,   574,  -522,  -522,  -522,  -522,
+    -522,  -522,  -522,  -522,  -522,  -522,    66,  -522,  1839,  -522,
+      66,  -522,  -522,  -522,   -66,  -522,   729,  -522,  -522,  -522,
+    -522,   729,  -522,  -522,  -522,  -522,  -522,  -522,  -522,  -522,
+     587,  -522,  -522,  -522,  -522,   376,  1010,  -522,   404,  -522,
+    -522,  -522,   108,   178,  -522,  -522,  2685,   389,  -522,  -522,
+    -522,    95,  -522,  -522,  -522,  -522,  2098,  -522,  -522,    66,
+     390,   378,  -522,  -522,   340,  -522,  -522,  1966,  -522,   340,
+    -522,   391,   -47,   176,   176,  -522,   170,   170,   296,   296,
+     101,   833,  2407,  2300,   556,   756,   296,   296,    74,    74,
+      19,    19,    19,  -522,  2385,  -522,  -522,  -522,    43,  -522,
+     392,    66,   393,  -522,  2184,  -522,  -522,   395,  -522,    95,
+    -522,   108,  -522,  -522,  1433,  -522,  -522,  -522,   414,  -522,
+     -97,  -522,   400,  -522,   398,   331,  -522,   399,    66,   401,
+    -522,   729,  2184,  -522,   729,  -522,  -522,    43,  -522,  -522,
+    -522,   402,  -522,  -522,  -522,    95,   729,  -522,    66,  -522,
+    -522,  -522,  -522,    43,  -522,  -522,  -522,    19,   406,  2428,
+    -522,  -522,  -522,  -522,  -522,    30,  -522,  -522,   729,   425,
+    -522,  -522,   433,  -128,  -128,  -522,  -522,   416,  -522,  -522
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1010,106 +1010,106 @@
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       3,     0,     2,     1,    31,   373,   264,   256,   275,     0,
-     312,     0,     0,   263,   251,   265,   308,   262,   266,   267,
-       0,   311,   269,   276,   274,     0,   267,     0,   310,     0,
-     267,     0,   271,   309,   251,   251,   261,   372,   257,    67,
-      11,     0,    26,    12,    29,    12,    10,     0,    60,   375,
-       0,   374,   258,     0,     0,     8,     0,     0,     0,    24,
-       0,   294,     6,     5,     0,     9,   317,   317,   317,     0,
-       0,   377,   317,     0,   379,   277,   278,     0,   285,   286,
-     376,   253,     0,   268,   273,     0,   296,   297,   272,   281,
-       0,   270,   259,   378,     0,   380,     0,   260,    68,     0,
-      70,    71,     0,    72,    73,    74,     0,     0,    77,    78,
-      79,    80,    81,    82,    83,    84,    85,    86,     0,    88,
-      89,    90,     0,    92,    93,    94,     0,     0,    97,    98,
-      99,   100,     0,     0,     0,     0,     0,   106,     0,   108,
-     109,     0,   111,     0,   113,   114,   117,     0,   118,   119,
-     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,     0,   132,   133,   134,     0,     0,   137,   138,   139,
-     140,   370,   141,     0,   143,   368,     0,   145,   146,   147,
-       0,   149,   150,   151,     0,     0,     0,     0,   156,   369,
-     157,     0,     0,   161,   162,     0,     0,     0,     0,    62,
-     166,    27,    59,    59,    59,   251,     0,     0,   251,   251,
-       0,   375,   279,   287,   298,   306,     0,   377,   379,    28,
-       7,   282,     3,   303,     0,    25,   301,   302,     0,     0,
-      22,   321,   318,   320,   319,   254,   255,   169,   170,   171,
-     172,   313,     0,     0,   325,   361,   324,   248,   375,   377,
-     317,   379,   315,    30,     0,   177,    42,     0,   234,     0,
-     240,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   187,     0,
-       0,     0,     0,     0,   187,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    67,    61,    43,     0,    19,    20,
-      21,     0,    17,     0,    15,    13,    18,    24,     0,    60,
-     376,    45,   304,   305,   378,   380,    46,   247,    59,    59,
-       0,    59,     0,     0,   295,    22,    59,     0,     0,   323,
-       0,     0,    48,   327,   316,    41,     0,   179,   180,   183,
-     381,    59,    59,    59,     0,   168,   167,     0,     0,   198,
-     189,   190,   191,   195,   196,   197,   192,   193,     0,   194,
-       0,     0,     0,     0,     0,     0,     0,   232,     0,   230,
-     233,     0,     0,    65,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   346,     0,     0,   185,   188,
-       0,     0,     0,     0,     0,     0,     0,     0,   363,   364,
-     365,   366,   367,     0,     0,     0,     0,   385,   387,     0,
-       0,     0,    63,    67,     0,    16,    12,    47,     0,    24,
-       0,   283,     4,   288,     0,     0,     0,     0,     0,     0,
-      59,    24,    23,    60,   314,   322,   326,   362,     0,    58,
-       0,     0,    52,    49,    50,   184,   178,     0,   371,     0,
-     235,     0,   383,    60,   241,     0,    69,   160,    75,     0,
-     222,   221,   220,   223,   218,   219,     0,   334,     0,     0,
+       3,     0,     2,     1,    31,   374,   265,   257,   276,     0,
+     313,     0,     0,   264,   252,   266,   309,   263,   267,   268,
+       0,   312,   270,   277,   275,     0,   268,     0,   311,     0,
+     268,     0,   272,   310,   252,   252,   262,   373,   258,    68,
+      11,     0,    26,    12,    29,    12,    10,     0,    61,   376,
+       0,   375,   259,     0,     0,     8,     0,     0,     0,    24,
+       0,   295,     6,     5,     0,     9,   318,   318,   318,     0,
+       0,   378,   318,     0,   380,   278,   279,     0,   286,   287,
+     377,   254,     0,   269,   274,     0,   297,   298,   273,   282,
+       0,   271,   260,   379,     0,   381,     0,   261,    69,     0,
+      71,    72,     0,    73,    74,    75,     0,     0,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,     0,    89,
+      90,    91,     0,    93,    94,    95,     0,     0,    98,    99,
+     100,   101,     0,     0,     0,     0,     0,   107,     0,   109,
+     110,     0,   112,     0,   114,   115,   118,     0,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
+     131,     0,   133,   134,   135,     0,     0,   138,   139,   140,
+     141,   371,   142,     0,   144,   369,     0,   146,   147,   148,
+       0,   150,   151,   152,     0,     0,     0,     0,   157,   370,
+     158,     0,     0,   162,   163,     0,     0,     0,     0,    63,
+     167,    27,    60,    60,    60,   252,     0,     0,   252,   252,
+       0,   376,   280,   288,   299,   307,     0,   378,   380,    28,
+       7,   283,     3,   304,     0,    25,   302,   303,     0,     0,
+      22,   322,   319,   321,   320,   255,   256,   170,   171,   172,
+     173,   314,     0,     0,   326,   362,   325,   249,   376,   378,
+     318,   380,   316,    30,     0,   178,    42,     0,   235,     0,
+     241,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   188,     0,
+       0,     0,     0,     0,   188,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    68,    62,    43,     0,    19,    20,
+      21,     0,    17,     0,    15,    13,    18,    24,     0,    61,
+     377,    45,    46,   305,   306,   379,   381,    47,   248,    60,
+      60,     0,    60,     0,     0,   296,    22,    60,     0,     0,
+     324,     0,     0,    49,   328,   317,    41,     0,   180,   181,
+     184,   382,    60,    60,    60,     0,   169,   168,     0,     0,
+     199,   190,   191,   192,   196,   197,   198,   193,   194,     0,
+     195,     0,     0,     0,     0,     0,     0,     0,   233,     0,
+     231,   234,     0,     0,    66,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   347,     0,     0,   186,
+     189,     0,     0,     0,     0,     0,     0,     0,     0,   364,
+     365,   366,   367,   368,     0,     0,     0,     0,   386,   388,
+       0,     0,     0,    64,    68,     0,    16,    12,    48,     0,
+      24,     0,   284,     4,   289,     0,     0,     0,     0,     0,
+       0,    60,    24,    23,    61,   315,   323,   327,   363,     0,
+      59,     0,     0,    53,    50,    51,   185,   179,     0,   372,
+       0,   236,     0,   384,    61,   242,     0,    70,   161,    76,
+       0,   223,   222,   221,   224,   219,   220,     0,   335,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    76,    87,    91,     0,    95,    96,   101,   102,   103,
-     104,   105,   107,   110,   112,   346,   313,    48,   351,   346,
-     348,   347,    55,   343,   116,   187,   115,   131,   135,   136,
-       0,   144,   148,   152,   153,   155,   154,   158,   159,     0,
-     163,   164,   165,    64,     0,    59,   354,   382,   280,   284,
-     290,     0,   377,   289,   292,     0,     0,   246,   293,    22,
-      24,   307,    57,    56,   328,     0,   181,   182,     0,   379,
-     249,   239,   238,   334,   229,   313,    48,   338,   334,   335,
-       0,   331,   211,   212,   224,   205,   206,   209,   210,   200,
-     201,     0,   202,   203,   204,   208,   207,   214,   213,   216,
-     217,   215,   225,     0,   231,    66,    54,   346,   313,     0,
-     346,     0,   342,    48,   350,   186,     0,   386,    24,    14,
-       0,   244,   291,    59,   299,    53,    51,   356,   359,     0,
-     237,     0,   250,     0,   334,   313,     0,   346,     0,   330,
-       0,    48,   337,     0,   228,   341,   346,   352,   345,   349,
-       0,   142,    44,   355,    24,     0,   358,     0,   236,   173,
-     227,   329,   346,   339,   333,   336,   226,     0,   199,   344,
-     353,   300,   357,   360,     0,   332,   340,     0,     0,   384,
-     174,     0,    59,    59,   243,   176,     0,   175,   242
+       0,     0,    77,    88,    92,     0,    96,    97,   102,   103,
+     104,   105,   106,   108,   111,   113,   347,   314,    49,   352,
+     347,   349,   348,    56,   344,   117,   188,   116,   132,   136,
+     137,     0,   145,   149,   153,   154,   156,   155,   159,   160,
+       0,   164,   165,   166,    65,     0,    60,   355,   383,   281,
+     285,   291,     0,   378,   290,   293,     0,     0,   247,   294,
+      22,    24,   308,    58,    57,   329,     0,   182,   183,     0,
+     380,   250,   240,   239,   335,   230,   314,    49,   339,   335,
+     336,     0,   332,   212,   213,   225,   206,   207,   210,   211,
+     201,   202,     0,   203,   204,   205,   209,   208,   215,   214,
+     217,   218,   216,   226,     0,   232,    67,    55,   347,   314,
+       0,   347,     0,   343,    49,   351,   187,     0,   387,    24,
+      14,     0,   245,   292,    60,   300,    54,    52,   357,   360,
+       0,   238,     0,   251,     0,   335,   314,     0,   347,     0,
+     331,     0,    49,   338,     0,   229,   342,   347,   353,   346,
+     350,     0,   143,    44,   356,    24,     0,   359,     0,   237,
+     174,   228,   330,   347,   340,   334,   337,   227,     0,   200,
+     345,   354,   301,   358,   361,     0,   333,   341,     0,     0,
+     385,   175,     0,    60,    60,   244,   177,     0,   176,   243
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -526,  -526,   359,   -28,  -305,  -300,    -1,  -526,  -526,  -526,
-     176,  -526,  -526,  -526,    23,  -468,  -526,  -526,  -257,  -232,
-    -189,    -2,  -526,  -526,  -267,   312,   -65,  -526,  -526,  -526,
-    -526,   152,     7,   320,    92,   210,  -526,  -261,  -256,  -526,
-    -526,  -526,  -526,   -60,  -187,  -526,   181,  -526,    22,   -67,
-    -526,   131,    40,    16,  -526,    24,    26,  -526,  -526,   555,
-    -526,  -526,  -526,  -526,  -526,   -12,  -526,    28,     4,  -526,
-    -526,    29,  -526,  -526,  -287,  -477,   -38,    17,   -14,  -220,
-    -526,  -526,  -526,  -500,  -526,  -525,  -526,  -467,  -526,  -526,
-    -526,   -32,  -526,   393,  -526,   341,     1,   -46,  -526,     3,
-    -526
+    -522,  -522,   403,   -28,  -306,  -289,    -1,  -522,  -522,  -522,
+     196,  -522,  -522,  -522,    23,  -474,  -522,  -522,  -247,  -231,
+    -190,    -2,  -522,  -522,  -270,   334,   -65,  -522,  -522,  -522,
+    -522,   182,     7,   339,   112,   225,  -522,  -261,  -256,  -522,
+    -522,  -522,  -522,   -43,  -187,  -522,   204,  -522,    45,   -67,
+    -522,    72,   128,    17,  -522,    24,    25,  -522,  -522,   585,
+    -522,  -522,  -522,  -522,  -522,   -17,  -522,    26,     4,  -522,
+    -522,    28,  -522,  -522,  -321,  -460,   -38,     5,    -9,  -220,
+    -522,  -522,  -522,  -503,  -522,  -521,  -522,  -456,  -522,  -522,
+    -522,   -14,  -522,   419,  -522,   356,     1,   -37,  -522,     3,
+    -522
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     2,   202,   326,   226,   298,    41,    42,    43,
-      44,   299,   210,    45,   300,   441,   442,   443,   444,   508,
-      47,   309,   198,   374,   199,   347,   509,   664,   670,   336,
-     337,   338,   248,   387,   388,   367,   368,   369,   371,   341,
-     450,   454,   343,   675,   676,   546,    50,   621,    82,   510,
-      51,    84,    52,   301,    54,   302,   303,   318,   421,    57,
-      58,   321,   427,    59,   229,    60,    61,   304,   305,   215,
-      64,   306,    66,    67,    68,   327,    69,   231,    70,   245,
-     246,   569,   628,   570,   571,   511,   601,   512,   513,   537,
-     646,   618,   619,   247,   403,   200,   249,    72,    73,   251,
-     409
+      -1,     1,     2,   202,   327,   226,   298,    41,    42,    43,
+      44,   299,   210,    45,   300,   442,   443,   444,   445,   509,
+      47,   309,   198,   375,   199,   348,   510,   665,   671,   337,
+     338,   339,   248,   388,   389,   368,   369,   370,   372,   342,
+     451,   455,   344,   676,   677,   547,    50,   622,    82,   511,
+      51,    84,    52,   301,    54,   302,   303,   319,   422,    57,
+      58,   322,   428,    59,   229,    60,    61,   304,   305,   215,
+      64,   306,    66,    67,    68,   328,    69,   231,    70,   245,
+     246,   570,   629,   571,   572,   512,   602,   513,   514,   538,
+     647,   619,   620,   247,   404,   200,   249,    72,    73,   251,
+     410
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1117,177 +1117,116 @@
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      48,    40,   244,    71,   243,    74,    63,   417,   376,    49,
-     216,   379,   375,   381,   333,   308,   386,   203,    53,   383,
-     430,   393,   328,   329,   250,    46,    55,   412,    56,   597,
-      62,    65,   424,   617,   470,   667,   214,    12,   596,   599,
-     434,   470,   602,  -252,   257,   235,   259,   236,   668,   217,
-    -252,   218,   232,   232,   232,   211,    94,    96,   232,     3,
-     235,   331,   236,   623,   212,   331,   332,   331,   629,    77,
-     603,    92,   631,   235,   437,   236,    97,    25,    25,   171,
-     470,   237,    85,   175,   233,   234,    10,   647,   624,   252,
-     490,   235,  -252,   236,   -37,   260,   237,   349,   626,  -252,
-     350,   351,   352,   353,   354,   355,   320,   435,    83,   237,
-     189,   494,   648,   238,    10,   515,    39,   491,   515,   538,
-     674,   636,   617,    89,   651,   294,    39,   237,   238,   420,
-     635,   551,   425,   638,   426,   640,   407,   408,   495,   237,
-      10,   238,   516,    90,    10,   522,   533,   295,   652,   244,
-     228,   243,   449,   425,   425,   451,   455,    88,   201,   238,
-     654,    91,   -32,   657,   356,    16,    75,   239,    76,   659,
-     345,   238,    78,   346,    79,   244,   244,   243,   243,   468,
-     469,   470,   239,   219,    39,   665,   557,   419,   339,    39,
-      21,    39,   448,   240,   452,   239,   348,    80,   536,    81,
-      48,    48,   669,    71,    71,    74,    74,   204,   240,    49,
-      49,   357,   322,   239,   483,   484,   485,   486,   487,   488,
-     489,   240,    86,   221,    87,   239,   488,   489,   261,   594,
-      94,    96,   254,   241,    28,   567,   232,   394,   385,   240,
-     397,   358,   404,   405,   613,   220,    33,   411,   241,   242,
-     614,   240,   222,   223,   359,   485,   486,   487,   224,   606,
-     244,   506,   243,   262,   242,   488,   489,   334,   225,    93,
-     418,    81,   331,    95,   384,    81,  -252,   507,   -33,   506,
-     360,   604,   227,   361,   362,   438,   230,   237,   364,   365,
-     331,   565,   -34,   253,   385,   507,   -36,   439,   616,   255,
-     263,   366,   331,  -252,   310,   -35,    81,   566,   642,   256,
-     434,   398,   399,   400,   401,   402,   258,    48,    40,   238,
-      71,   611,    74,    63,   433,   432,    49,    71,   467,    74,
-     384,   567,   312,    49,   313,    53,   567,   434,    39,   632,
-       8,   453,    46,    55,   661,    56,   505,    62,    65,   434,
-     314,   244,    81,   243,   483,   484,   485,   486,   487,   315,
-     323,    81,   324,   264,   265,   434,   488,   489,   235,   266,
-     236,   267,  -245,   239,  -245,   268,   311,   269,   270,   339,
-     271,   272,   273,    19,   274,   275,   276,   541,   535,   662,
-     643,   277,   567,   278,   279,   216,    22,    23,    24,   240,
-     280,   -38,   568,   281,   282,    26,   671,   283,   284,   285,
-     286,   558,   468,   469,   470,   471,   472,   473,   474,   475,
-     476,   563,   287,   288,   539,   545,   542,   289,   433,   432,
-     316,    71,   290,    74,   217,   291,   218,    49,   292,   565,
-     211,   293,   600,   -39,    30,   -40,   325,   330,    32,   335,
-     331,   340,   559,   349,   342,   566,   350,   351,   352,   353,
-     354,   355,   344,   372,   373,   377,   378,   380,   390,   385,
-     392,   410,   414,   413,   244,   370,   243,   423,   370,   415,
-     416,  -252,   429,   425,   425,   382,   428,   436,   389,   445,
-     446,   447,   459,   622,   389,   396,   456,   457,   568,   458,
-     492,   627,   520,   568,   493,   384,   496,   216,   534,    20,
-     497,   498,   499,   500,   501,   502,   504,   385,   514,   517,
-     356,   518,   519,   521,   524,   525,   526,   527,   385,   529,
-     528,   530,   531,    48,   532,   540,    71,   543,    74,   548,
-     370,   440,    49,   244,   554,   243,   560,   555,   561,   562,
-     574,   592,   595,   384,   608,   607,   610,   612,   630,   568,
-     620,   637,   645,   639,   384,   385,   641,   357,   649,   650,
-     460,   461,   462,   463,   464,   465,   466,   653,   655,   660,
-     477,   319,   478,   479,   480,   481,   482,   483,   484,   485,
-     486,   487,   666,   385,   672,   673,   678,   358,   556,   488,
-     489,   384,   406,   213,   395,   549,   503,   605,   547,   317,
-     359,   433,   432,   677,    71,   663,    74,   468,   469,   470,
-      49,   391,   473,   474,     0,     0,     0,     0,     0,   384,
-       0,     0,     0,     0,     0,     0,   360,     0,     0,   361,
-     362,   363,     0,     0,   364,   365,     0,     0,   463,     0,
-       0,     0,     0,   552,     0,     0,     0,   366,     0,     0,
+      48,    40,   244,    71,   243,    74,    63,   435,   377,    49,
+     216,   380,   376,   382,   308,   334,   387,   203,   418,    53,
+     431,   394,   329,   330,   413,    46,    55,    56,    62,   384,
+      65,   214,   425,   250,   600,   471,   350,  -253,   618,   351,
+     352,   353,   354,   355,   356,   259,   235,   598,   236,   217,
+     597,   218,   171,   257,   603,   211,   175,   232,   232,   232,
+     235,   624,   236,   232,   491,   212,   630,   294,   668,   235,
+      25,   236,   233,   234,    39,   438,  -253,   252,   675,    94,
+      96,   669,   237,   189,   648,   495,  -253,    10,   -37,   295,
+     471,   492,    12,   627,   260,   332,   237,   516,    88,   321,
+     333,    10,    91,   357,     3,   237,   625,   516,   436,   649,
+      83,   235,   496,   236,   238,   469,   470,   471,   472,   473,
+     474,   475,   652,   477,   517,  -253,    39,   618,   238,   421,
+     641,   539,   426,    25,   523,   427,   332,   238,    75,   637,
+      76,   604,   636,   552,   534,   639,    78,   237,    79,   244,
+     358,   243,   450,   426,   426,   332,   452,   456,   658,    92,
+     632,    80,   346,    81,    97,   347,   653,    39,   239,    85,
+     420,    39,   655,    77,   449,   244,   244,   243,   243,   238,
+     359,   660,   239,    89,   469,   470,   471,   558,   340,   474,
+     475,   239,   471,   360,   240,    39,   349,   666,   453,   537,
+      48,    48,    90,    71,    71,    74,    74,   323,   240,    49,
+      49,   399,   400,   401,   402,   403,    86,   240,    87,   361,
+     489,   490,   362,   363,   439,   408,   409,   365,   366,    93,
+     595,    81,   204,   239,   507,   670,   440,   568,   386,   228,
+     367,   232,   201,   -32,   614,   332,   395,   219,   241,   398,
+     508,   405,   406,    94,    96,   335,   412,   507,   220,   240,
+     607,   244,   615,   243,   242,   486,   487,   488,   332,    95,
+     419,    81,   221,   508,   385,   489,   490,   435,   254,  -253,
+    -253,   -33,   -35,   605,   222,   479,   480,   481,   482,   483,
+     484,   485,   486,   487,   488,   386,   310,   223,    81,   241,
+     224,   225,   489,   490,   435,   311,   313,   312,   314,   617,
+     469,   470,   471,   227,    10,   242,   435,   230,    48,    40,
+     643,    71,   612,    74,    63,   434,   433,    49,    71,   468,
+      74,   385,   435,   568,    49,   -34,   253,    53,   568,    16,
+     -36,   633,   454,    46,    55,    56,    62,   506,    65,   315,
+     255,    81,   244,   316,   243,    81,   662,   482,   483,   484,
+     485,   486,   487,   488,    21,   484,   485,   486,   487,   488,
+     237,   489,   490,   256,   324,    10,   325,   489,   490,   237,
+     340,   235,   261,   236,  -246,   258,  -246,   317,   542,   536,
+     663,   644,   262,   263,   568,   264,   216,   265,   266,   267,
+     268,   269,   238,   569,   270,   271,   272,   672,    28,   273,
+     274,   238,   559,   275,   276,   277,   278,   279,   280,   281,
+      33,   282,   564,   283,   284,   540,   546,   543,   285,   434,
+     433,   286,    71,    39,    74,   217,   287,   218,    49,   288,
+     289,   211,   290,   601,   291,   292,   293,   -38,   -39,   -40,
+     326,   345,   336,   560,   350,   341,   239,   351,   352,   353,
+     354,   355,   356,   331,   343,   239,   373,   374,   378,   379,
+     386,   381,   391,   393,   411,   244,   414,   243,   415,   416,
+     417,  -253,   240,   426,   426,   484,   485,   486,   487,   488,
+     371,   240,   424,   371,   623,   429,   430,   489,   490,   569,
+     383,   447,   628,   390,   569,   437,   385,   448,   216,   390,
+     397,   446,   457,   458,   530,   459,   493,   460,   386,   494,
+     497,   357,   566,   498,   499,   500,   501,   502,   521,   386,
+     503,   566,   505,   332,    48,   515,   518,    71,   567,    74,
+     519,   520,   332,    49,   244,   522,   243,   567,   535,   525,
+     526,   527,   528,   529,   385,   541,   371,   441,   544,   531,
+     569,   532,     8,   533,   549,   385,   386,    20,   358,   555,
+     469,   470,   471,   472,   473,   474,   475,   556,   561,   562,
+     563,   575,   593,   596,   609,   611,   461,   462,   463,   464,
+     465,   466,   467,   608,   386,   613,   621,   646,   359,   631,
+     638,   640,   385,   642,   650,    19,   651,   654,   673,   656,
+     661,   360,   434,   433,   667,    71,   674,    74,    22,    23,
+      24,    49,   679,   396,   407,   320,   550,    26,   606,   557,
+     385,   678,   548,   213,   664,   318,   392,   361,     0,     0,
+     362,   363,   364,     0,     0,   365,   366,     0,     0,     0,
+       0,     0,     0,     0,   553,     0,     0,     0,   367,     0,
+       0,     0,     0,     0,   464,     0,    30,     0,     0,     0,
+      32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   572,   573,
-       0,   575,   576,   577,   578,   579,   580,   581,   582,   583,
-     584,   585,   586,   587,   588,   589,   590,   591,     0,   593,
-       0,     0,     0,     0,     0,     0,   349,     0,     5,   350,
-     351,   352,   353,   354,   355,     0,   349,     0,     0,   350,
-     351,   352,   353,   354,   355,   389,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     6,     0,     7,     0,     0,
-       0,     0,     0,     8,     0,     0,     0,    10,     0,     0,
-       0,     0,     0,     0,   468,   469,   470,   471,   472,   473,
-     474,     0,     0,    13,     0,     0,     0,     0,     0,   205,
-      15,     0,    16,   356,     0,     0,    17,     0,     0,    18,
-       0,     0,     0,   356,     0,     0,    19,     0,     0,     0,
-     481,   482,   483,   484,   485,   486,   487,    21,     0,    22,
-      23,    24,     0,     0,   488,   489,     0,     0,    26,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     357,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     357,   468,   469,   470,   471,   472,   473,   474,     0,   476,
-     656,    28,     0,   658,     0,     0,    29,    30,    31,     0,
-     358,    32,     0,    33,     0,   370,     0,   208,     0,     0,
-     358,     0,     0,   359,     0,     0,   209,     0,    36,     0,
-       0,     0,     0,   359,     0,     0,    37,    38,     0,     0,
-       0,     4,     5,     0,     0,     0,     0,     0,     0,   360,
-       0,     0,   361,   362,   363,     0,     0,   364,   365,   360,
-       0,     0,   361,   362,   363,     0,     0,   364,   365,     6,
-     366,     7,     0,     0,     0,     0,     0,     8,     9,     0,
-     366,    10,     0,     0,     0,     0,    11,   481,   482,   483,
-     484,   485,   486,   487,     0,    12,     0,    13,     0,     0,
-       0,   488,   489,    14,    15,     0,    16,     0,     0,     0,
-      17,     0,     0,    18,     0,     0,     0,     0,     0,     0,
-      19,     0,     0,     0,     0,     0,     0,    20,   297,     0,
-       0,    21,     0,    22,    23,    24,    25,     0,     0,     0,
-       0,     0,    26,     0,     0,     0,     0,    27,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     4,     5,
-       0,   478,   479,   480,   481,   482,   483,   484,   485,   486,
-     487,     0,     0,     0,     0,    28,     0,     0,   488,   489,
-      29,    30,    31,     0,     0,    32,     6,    33,     7,     0,
-       0,    34,     0,     0,     8,     9,     0,     0,    10,     0,
-      35,     0,    36,    11,     0,     0,     0,     0,     0,     0,
-      37,    38,    12,     0,    13,     0,     0,     0,     0,     0,
-      14,    15,     0,    16,     0,     0,     0,    17,     0,     0,
-      18,     0,     0,     0,     0,     0,     0,    19,     0,    39,
-       0,     0,   307,     0,    20,   297,     0,     0,    21,     0,
-      22,    23,    24,    25,     0,     0,     0,     0,     0,    26,
-       0,     0,     0,     0,    27,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     4,     5,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    28,     0,     0,     0,     0,    29,    30,    31,
-       0,     0,    32,     6,    33,     7,     0,     0,    34,     0,
-       0,     8,     9,     0,     0,    10,     0,    35,     0,    36,
-      11,     0,     0,     0,     0,     0,     0,    37,    38,    12,
-       0,    13,     0,     0,     0,     0,     0,    14,    15,     0,
-      16,     0,     0,     0,    17,     0,     0,    18,     0,     0,
-       0,     0,     0,     0,    19,     0,    39,     0,     0,   609,
-       0,    20,     0,     0,     0,    21,     0,    22,    23,    24,
-      25,     0,     0,     0,     0,     0,    26,     4,     5,     0,
-       0,    27,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     6,     0,     7,     0,    28,
-       0,     0,     0,     8,    29,    30,    31,    10,     0,    32,
-       0,    33,    11,     0,     0,    34,     0,     0,     0,     0,
-       0,     0,     0,    13,    35,     0,    36,     0,     0,    14,
-      15,     0,    16,     0,    37,    38,    17,     0,     0,    18,
+       0,     0,     0,     0,   573,   574,     0,   576,   577,   578,
+     579,   580,   581,   582,   583,   584,   585,   586,   587,   588,
+     589,   590,   591,   592,     0,   594,     0,     0,     0,     0,
+       0,     0,   350,     0,     5,   351,   352,   353,   354,   355,
+     356,     0,   350,     0,     0,   351,   352,   353,   354,   355,
+     356,   390,   481,   482,   483,   484,   485,   486,   487,   488,
+       0,     6,     0,     7,     0,     0,     0,   489,   490,     8,
+       0,     0,     0,    10,     0,     0,     0,     0,     0,     0,
+     469,   470,   471,   472,   473,   474,   475,     0,     0,    13,
+       0,     0,     0,     0,     0,   205,    15,     0,    16,   357,
+       0,     0,    17,     0,     0,    18,     0,     0,     0,   357,
+       0,     0,    19,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    21,     0,    22,    23,    24,     0,     0,
+       0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   358,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   358,   469,   470,   471,
+     472,   473,   474,   475,     0,     0,   657,    28,     0,   659,
+       0,     0,    29,    30,    31,     0,   359,    32,     0,    33,
+       0,   371,     0,   208,     0,     0,   359,     0,     0,   360,
+       0,     0,   209,     0,    36,     0,     0,     0,     0,   360,
+       0,     0,    37,    38,     0,     0,     0,     4,     5,     0,
+       0,     0,     0,     0,     0,   361,     0,     0,   362,   363,
+     364,     0,     0,   365,   366,   361,     0,     0,   362,   363,
+     364,     0,     0,   365,   366,     6,   367,     7,     0,     0,
+       0,     0,     0,     8,     9,     0,   367,    10,     0,     0,
+       0,     0,    11,   482,   483,   484,   485,   486,   487,   488,
+       0,    12,     0,    13,     0,     0,     0,   489,   490,    14,
+      15,     0,    16,     0,     0,     0,    17,     0,     0,    18,
        0,     0,     0,     0,     0,     0,    19,     0,     0,     0,
-       0,     0,     0,    20,     0,     0,     0,    21,     0,    22,
-      23,    24,     0,    39,     0,     0,   422,     0,    26,     4,
-       5,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     6,     0,     7,
-       0,    28,     0,     0,     0,     8,    29,    30,    31,    10,
-       0,    32,     0,    33,    11,     0,     0,    34,     0,     0,
-       0,     0,     0,     0,     0,    13,    35,     0,    36,     0,
-       0,    14,    15,     0,    16,     0,    37,    38,    17,     0,
-       0,    18,     0,     0,     0,     0,     0,     0,    19,     0,
-       0,     0,     0,     0,     0,    20,     0,     0,     0,    21,
-       0,    22,    23,    24,     0,    39,     0,     0,   431,     0,
-      26,     4,     5,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   468,
-     469,   470,   471,   472,   473,   474,   475,   476,     0,     6,
-       0,     7,     0,    28,     0,     0,     0,     8,    29,    30,
-      31,    10,     0,    32,     0,    33,    11,     0,     0,    34,
-       0,     0,     0,     0,     0,     0,     0,    13,    35,     0,
-      36,     0,     0,    14,    15,     0,    16,     0,    37,    38,
-      17,     0,     0,    18,     0,     0,     0,     0,     0,     0,
-      19,     0,     0,     0,     0,     0,     0,    20,     5,     0,
-       0,    21,     0,    22,    23,    24,     0,    39,     0,     0,
-     550,     0,    26,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     6,     0,     7,     0,     0,
-       0,     0,     0,     8,     0,     0,     0,    10,     0,     0,
-       0,     0,     0,     0,     0,    28,     0,     0,     0,     0,
-      29,    30,    31,    13,     0,    32,     0,    33,     0,   205,
-      15,    34,    16,     0,     0,     0,    17,     0,     0,    18,
-      35,     0,    36,     0,     0,     0,    19,     0,     0,     0,
-      37,    38,     0,     0,     0,     0,     0,    21,     0,    22,
-      23,    24,     0,     0,     0,     0,     0,   477,    26,   478,
-     479,   480,   481,   482,   483,   484,   485,   486,   487,    39,
-       0,     0,   644,     0,     4,     5,   488,   489,   553,     0,
-       0,     0,     0,   296,     0,     0,     0,     0,     0,     0,
-       0,    28,     0,     0,     0,     0,    29,    30,    31,     0,
-       0,    32,     6,    33,     7,     0,     0,   208,     0,     0,
-       8,     9,     0,     0,    10,     0,   209,     0,    36,    11,
+       0,     0,     0,    20,   297,     0,     0,    21,     0,    22,
+      23,    24,    25,     0,     0,     0,     0,     0,    26,     0,
+       0,     0,     0,    27,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     4,     5,     0,   479,   480,   481,
+     482,   483,   484,   485,   486,   487,   488,     0,     0,     0,
+       0,    28,     0,     0,   489,   490,    29,    30,    31,     0,
+       0,    32,     6,    33,     7,     0,     0,    34,     0,     0,
+       8,     9,     0,     0,    10,     0,    35,     0,    36,    11,
        0,     0,     0,     0,     0,     0,    37,    38,    12,     0,
       13,     0,     0,     0,     0,     0,    14,    15,     0,    16,
        0,     0,     0,    17,     0,     0,    18,     0,     0,     0,
-       0,     0,     0,    19,     0,    39,     0,     0,   544,     0,
+       0,     0,     0,    19,     0,    39,     0,     0,   307,     0,
       20,   297,     0,     0,    21,     0,    22,    23,    24,    25,
        0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
       27,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1299,89 +1238,152 @@
        0,     0,     0,    37,    38,    12,     0,    13,     0,     0,
        0,     0,     0,    14,    15,     0,    16,     0,     0,     0,
       17,     0,     0,    18,     0,     0,     0,     0,     0,     0,
-      19,     0,    39,     0,     0,     0,     0,    20,     5,     0,
+      19,     0,    39,     0,     0,   610,     0,    20,     0,     0,
        0,    21,     0,    22,    23,    24,    25,     0,     0,     0,
-       0,     0,    26,     0,     0,     0,     0,    27,     0,     0,
-       0,     0,     0,     0,     0,     6,     0,     7,     0,     0,
-       0,     0,   237,     8,     0,     0,     0,    10,     0,     0,
-       0,     0,     0,     0,     0,    28,     0,     0,     0,     0,
-      29,    30,    31,    13,     0,    32,     0,    33,     0,   205,
-      15,    34,    16,     0,   238,     0,    17,     0,   -59,    18,
-      35,     0,    36,     0,     0,     0,    19,     0,     0,     0,
-      37,    38,     0,     0,     0,     0,     0,    21,     0,    22,
-      23,    24,     0,     0,     0,     0,     0,     0,    26,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    39,
-       0,     0,     0,     0,     0,     0,     0,     0,   239,     0,
-       0,     0,     0,     0,     0,     5,     0,     0,     0,     0,
-       0,    28,     0,     0,     0,     0,    29,    30,    31,     0,
-       0,    32,     0,    33,   240,     0,     0,   208,     0,     0,
-       0,     0,     6,     0,     7,     0,   209,     0,    36,   237,
-       8,     0,     0,     0,    10,     0,    37,    38,     0,     0,
+       0,     0,    26,     4,     5,     0,     0,    27,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      13,     0,     0,     0,   598,     0,   205,    15,     0,    16,
-       0,   238,     0,    17,     0,    39,    18,     0,     0,     0,
-       0,     0,     0,    19,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    21,     0,    22,    23,    24,     0,
-       0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   239,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     5,    28,     0,
-       0,     0,     0,    29,    30,    31,     0,     0,    32,     0,
-      33,   240,     0,     0,   208,   615,     0,     0,     0,     0,
-       0,     0,     0,   209,     6,    36,     7,     0,     0,     0,
-       0,     0,     8,    37,    38,     0,    10,     0,     0,     0,
+       0,     6,     0,     7,     0,    28,     0,     0,     0,     8,
+      29,    30,    31,    10,     0,    32,     0,    33,    11,     0,
+       0,    34,     0,     0,     0,     0,     0,     0,     0,    13,
+      35,     0,    36,     0,     0,    14,    15,     0,    16,     0,
+      37,    38,    17,     0,     0,    18,     0,     0,     0,     0,
+       0,     0,    19,     0,     0,     0,     0,     0,     0,    20,
+       0,     0,     0,    21,     0,    22,    23,    24,     0,    39,
+       0,     0,   423,     0,    26,     4,     5,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   625,    13,     0,     0,     0,     0,     0,   205,    15,
-       0,    16,    39,     0,     0,    17,     0,     0,    18,     0,
-       0,     0,     0,     0,     0,    19,     0,     0,     0,     0,
-       0,     0,     0,     5,     0,     0,    21,     0,    22,    23,
-      24,     0,     0,     0,     0,     0,     0,    26,   468,   469,
-     470,   471,   472,   473,   474,   475,   476,     0,     0,     0,
-       6,     0,     7,     0,     0,     0,     0,     0,     8,     0,
-       0,     0,    10,     0,     0,     0,     0,     0,     0,     0,
-      28,     0,     0,     0,     0,    29,    30,    31,    13,     0,
-      32,     0,    33,     0,   205,    15,   208,    16,     0,     0,
-       0,    17,     0,     0,    18,   209,     0,    36,     0,     0,
-       0,    19,     0,     0,     0,    37,    38,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     6,     0,     7,     0,    28,     0,     0,
+       0,     8,    29,    30,    31,    10,     0,    32,     0,    33,
+      11,     0,     0,    34,     0,     0,     0,     0,     0,     0,
+       0,    13,    35,     0,    36,     0,     0,    14,    15,     0,
+      16,     0,    37,    38,    17,     0,     0,    18,     0,     0,
+       0,     0,     0,     0,    19,     0,     0,     0,     0,     0,
+       0,    20,     0,     0,     0,    21,     0,    22,    23,    24,
+       0,    39,     0,     0,   432,     0,    26,     4,     5,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   469,   470,   471,   472,   473,
+     474,   475,   476,   477,     0,     6,     0,     7,     0,    28,
+       0,     0,     0,     8,    29,    30,    31,    10,     0,    32,
+       0,    33,    11,     0,     0,    34,     0,     0,     0,     0,
+       0,     0,     0,    13,    35,     0,    36,     0,     0,    14,
+      15,     0,    16,     0,    37,    38,    17,     0,     0,    18,
+       0,     0,     0,     0,     0,     0,    19,     0,     0,     0,
+       0,     0,     0,    20,     5,     0,     0,    21,     0,    22,
+      23,    24,     0,    39,     0,     0,   551,     0,    26,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     6,     0,     7,     0,     0,     0,     0,     0,     8,
+       0,     0,     0,    10,     0,     0,     0,     0,     0,     0,
+       0,    28,     0,     0,     0,     0,    29,    30,    31,    13,
+       0,    32,     0,    33,     0,   205,    15,    34,    16,     0,
+       0,     0,    17,     0,     0,    18,    35,     0,    36,     0,
+       0,     0,    19,     0,     0,     0,    37,    38,     0,     0,
+       0,     0,     0,    21,     0,    22,    23,    24,     0,     0,
+       0,     0,     0,   478,    26,   479,   480,   481,   482,   483,
+     484,   485,   486,   487,   488,    39,     0,     0,   645,     0,
+       4,     5,   489,   490,   554,     0,     0,     0,     0,   296,
+       0,     0,     0,     0,     0,     0,     0,    28,     0,     0,
+       0,     0,    29,    30,    31,     0,     0,    32,     6,    33,
+       7,     0,     0,   208,     0,     0,     8,     9,     0,     0,
+      10,     0,   209,     0,    36,    11,     0,     0,     0,     0,
+       0,     0,    37,    38,    12,     0,    13,     0,     0,     0,
+       0,     0,    14,    15,     0,    16,     0,     0,     0,    17,
+       0,     0,    18,     0,     0,     0,     0,     0,     0,    19,
+       0,    39,     0,     0,   545,     0,    20,   297,     0,     0,
+      21,     0,    22,    23,    24,    25,     0,     0,     0,     0,
+       0,    26,     0,     0,     0,     0,    27,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     4,     5,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    28,     0,     0,     0,     0,    29,
+      30,    31,     0,     0,    32,     6,    33,     7,     0,     0,
+      34,     0,     0,     8,     9,     0,     0,    10,     0,    35,
+       0,    36,    11,     0,     0,     0,     0,     0,     0,    37,
+      38,    12,     0,    13,     0,     0,     0,     0,     0,    14,
+      15,     0,    16,     0,     0,     0,    17,     0,     0,    18,
+       0,     0,     0,     0,     0,     0,    19,     0,    39,     0,
+       0,     0,     0,    20,     5,     0,     0,    21,     0,    22,
+      23,    24,    25,     0,     0,     0,     0,     0,    26,     0,
+       0,     0,     0,    27,     0,     0,     0,     0,     0,     0,
+       0,     6,     0,     7,     0,     0,     0,     0,   237,     8,
+       0,     0,     0,    10,     0,     0,     0,     0,     0,     0,
+       0,    28,     0,     0,     0,     0,    29,    30,    31,    13,
+       0,    32,     0,    33,     0,   205,    15,    34,    16,     0,
+     238,     0,    17,     0,   -60,    18,    35,     0,    36,     0,
+       0,     0,    19,     0,     0,     0,    37,    38,     0,     0,
+       0,     0,     0,    21,     0,    22,    23,    24,     0,     0,
+       0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    39,     0,     0,     0,     0,
+       0,     0,     0,     0,   239,     0,     0,     0,     0,     0,
+       0,     5,     0,     0,     0,     0,     0,    28,     0,     0,
+       0,     0,    29,    30,    31,     0,     0,    32,     0,    33,
+     240,     0,     0,   208,     0,     0,     0,     0,     6,     0,
+       7,     0,   209,     0,    36,   237,     8,     0,     0,     0,
+      10,     0,    37,    38,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    13,     0,     0,     0,
+     599,     0,   205,    15,     0,    16,     0,   238,     0,    17,
+       0,    39,    18,     0,     0,     0,     0,     0,     0,    19,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      21,     0,    22,    23,    24,     0,     0,     0,     0,     0,
+       0,    26,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   239,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     5,    28,     0,     0,     0,     0,    29,
+      30,    31,     0,     0,    32,     0,    33,   240,     0,     0,
+     208,   616,     0,     0,     0,     0,     0,     0,     0,   209,
+       6,    36,     7,     0,     0,     0,     0,     0,     8,    37,
+      38,     0,    10,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   626,    13,     0,
+       0,     0,     0,     0,   205,    15,     0,    16,    39,     0,
+       0,    17,     0,     0,    18,     0,     0,     0,     0,     0,
+       0,    19,     0,     0,     0,     0,     0,     0,     0,     5,
        0,     0,    21,     0,    22,    23,    24,     0,     0,     0,
-       0,     0,     0,    26,   468,   469,   470,   471,   472,   473,
-     474,   475,   476,     0,    39,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   468,
-     469,   470,   471,   472,   473,   474,    28,     0,     0,     0,
-       0,    29,    30,    31,     0,     0,    32,     0,    33,     0,
-       0,     0,   208,     0,     0,     0,     0,     0,     0,     0,
-       0,   209,     0,    36,     0,     0,     0,     0,     0,     0,
-       0,    37,    38,   468,   469,   470,   471,   472,   473,   474,
-     475,   476,     0,     0,     0,     0,   477,     0,   478,   479,
-     480,   481,   482,   483,   484,   485,   486,   487,     0,     0,
-      39,     0,     0,     0,     0,   488,   489,     0,     0,     0,
-       0,     0,   523,   468,   469,   470,   471,   472,   473,   474,
-     475,   476,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   468,   469,   470,   471,   472,   473,
-     474,   475,   476,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   468,   469,   470,   471,   472,   473,   474,     0,
+       0,     0,     0,    26,   469,   470,   471,   472,   473,   474,
+     475,   476,   477,     0,     0,     0,     6,     0,     7,     0,
+       0,     0,     0,     0,     8,     0,     0,     0,    10,     0,
+       0,     0,     0,     0,     0,     0,    28,     0,     0,     0,
+       0,    29,    30,    31,    13,     0,    32,     0,    33,     0,
+     205,    15,   208,    16,     0,     0,     0,    17,     0,     0,
+      18,   209,     0,    36,     0,     0,     0,    19,     0,     0,
+       0,    37,    38,     0,     0,     0,     0,     0,    21,     0,
+      22,    23,    24,     0,     0,     0,     0,     0,     0,    26,
+     469,   470,   471,   472,   473,   474,   475,   476,   477,     0,
+      39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   469,   470,   471,   472,   473,   474,
+     475,     0,    28,     0,     0,     0,     0,    29,    30,    31,
+       0,     0,    32,     0,    33,     0,     0,     0,   208,     0,
+       0,     0,     0,     0,     0,     0,     0,   209,     0,    36,
+       0,     0,     0,     0,     0,     0,     0,    37,    38,   469,
+     470,   471,   472,   473,   474,   475,   476,   477,     0,     0,
+       0,     0,   478,     0,   479,   480,   481,   482,   483,   484,
+     485,   486,   487,   488,     0,     0,    39,     0,     0,     0,
+       0,   489,   490,     0,     0,     0,     0,     0,   504,   469,
+     470,   471,   472,   473,   474,   475,   476,   477,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   477,     0,   478,   479,   480,   481,   482,   483,
-     484,   485,   486,   487,   468,   469,   470,   471,   472,   473,
-     474,   488,   489,     0,     0,     0,     0,     0,   564,   478,
-     479,   480,   481,   482,   483,   484,   485,   486,   487,     0,
-       0,     0,     0,     0,     0,     0,   488,   489,     0,     0,
+       0,   469,   470,   471,   472,   473,   474,   475,   476,   477,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   469,   470,   471,   472,   473,   474,   475,   476,
+     477,     0,     0,     0,     0,     0,     0,     0,   478,     0,
+     479,   480,   481,   482,   483,   484,   485,   486,   487,   488,
+       0,     0,     0,     0,     0,     0,     0,   489,   490,     0,
+       0,     0,     0,     0,   524,   480,   481,   482,   483,   484,
+     485,   486,   487,   488,     0,     0,     0,     0,     0,     0,
+       0,   489,   490,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   477,     0,   478,   479,   480,   481,   482,   483,   484,
-     485,   486,   487,     0,     0,     0,     0,     0,     0,     0,
-     488,   489,   634,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   477,   633,   478,   479,   480,   481,   482,   483,   484,
-     485,   486,   487,     0,     0,     0,     0,     0,     0,     0,
-     488,   489,   477,     0,   478,   479,   480,   481,   482,   483,
-     484,   485,   486,   487,     5,     0,     0,     0,     0,     0,
-       0,   488,   489,   479,   480,   481,   482,   483,   484,   485,
-     486,   487,     0,     0,     0,     0,     0,     0,     0,   488,
-     489,     6,     0,     7,     0,     0,     0,     0,     0,     8,
-       9,     0,     0,    10,     0,     0,   480,   481,   482,   483,
-     484,   485,   486,   487,     0,     0,     0,    12,     0,    13,
-       0,   488,   489,     0,     0,   205,    15,     0,    16,     0,
+       0,     0,     0,     0,     0,     0,     0,   478,     0,   479,
+     480,   481,   482,   483,   484,   485,   486,   487,   488,     0,
+       0,     0,     0,     0,     0,     0,   489,   490,     0,     0,
+       0,     0,     0,   565,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   478,     0,   479,
+     480,   481,   482,   483,   484,   485,   486,   487,   488,     0,
+       0,     0,     0,     0,     0,     0,   489,   490,   635,   478,
+     634,   479,   480,   481,   482,   483,   484,   485,   486,   487,
+     488,     0,     0,     0,     5,     0,     0,     0,   489,   490,
+     478,     0,   479,   480,   481,   482,   483,   484,   485,   486,
+     487,   488,     0,     0,     0,     0,     0,     0,     0,   489,
+     490,     6,     0,     7,     0,     0,     0,     0,     0,     8,
+       9,     0,     0,    10,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    12,     0,    13,
+       0,     0,     0,     0,     0,   205,    15,     0,    16,     0,
        0,     0,    17,     0,     0,    18,     0,     0,     0,     0,
        0,     0,    19,     0,     0,     0,     0,     0,     0,     0,
        5,     0,     0,    21,     0,    22,    23,    24,    25,     0,
@@ -1429,171 +1431,110 @@
 
 static const yytype_int16 yycheck[] =
 {
-       2,     2,    69,     2,    69,     2,     2,   307,   269,     2,
-      48,   272,   268,   274,   246,   204,   277,    45,     2,   276,
-     325,   282,   242,   243,    70,     2,     2,   294,     2,   506,
-       2,     2,   108,   558,    16,    38,    48,    58,   505,   507,
-     327,    16,   509,   155,    90,     3,   155,     5,    51,    48,
-     155,    48,    66,    67,    68,    48,    34,    35,    72,     0,
-       3,   202,     5,   563,    48,   202,   207,   202,   568,   207,
-     207,    31,   207,     3,   330,     5,    36,    99,    99,   133,
-      16,    39,     9,   137,    67,    68,    44,   181,   565,    72,
-     181,     3,   204,     5,   206,   204,    39,     3,   566,   204,
-       6,     7,     8,     9,    10,    11,   128,   327,    96,    39,
-     164,   181,   206,    71,    44,   181,   202,   208,   181,   419,
-     206,   598,   647,     3,   624,   181,   202,    39,    71,   318,
-     597,   431,   321,   600,   321,   603,     6,     7,   208,    39,
-      44,    71,   208,   207,    44,   208,   413,   203,   625,   216,
-     183,   216,   341,   342,   343,   342,   343,    26,   206,    71,
-     627,    30,   206,   631,    70,    69,     3,   125,     5,   636,
-       9,    71,     3,    12,     5,   242,   243,   242,   243,    14,
-      15,    16,   125,   206,   202,   652,   447,   205,   255,   202,
-      94,   202,   205,   151,   205,   125,   263,     3,   418,     5,
-     202,   203,   205,   202,   203,   202,   203,   161,   151,   202,
-     203,   117,   224,   125,   189,   190,   191,   192,   193,   201,
-     202,   151,     3,   204,     5,   125,   201,   202,   207,   490,
-     208,   209,     9,   191,   138,   467,   250,   283,   276,   151,
-     286,   147,   288,   289,   549,   206,   150,   293,   191,   207,
-     550,   151,   204,   206,   160,   191,   192,   193,   204,   520,
-     327,   191,   327,   207,   207,   201,   202,   250,   206,     3,
-     308,     5,   202,     3,   276,     5,   204,   207,   206,   191,
-     186,   513,   206,   189,   190,   191,   204,    39,   194,   195,
-     202,   191,   206,   206,   332,   207,   206,   203,   555,   204,
-     207,   207,   202,   204,     3,   206,     5,   207,   608,   206,
-     597,   176,   177,   178,   179,   180,   204,   319,   319,    71,
-     319,   541,   319,   319,   326,   326,   319,   326,   366,   326,
-     332,   563,     3,   326,     5,   319,   568,   624,   202,   571,
-      40,   343,   319,   319,   644,   319,   384,   319,   319,   636,
-       3,   418,     5,   418,   189,   190,   191,   192,   193,     3,
-       3,     5,     5,   207,   207,   652,   201,   202,     3,   207,
-       5,   207,   206,   125,   208,   207,     3,   207,   207,   446,
-     207,   207,   207,    83,   207,   207,   207,   425,   416,   645,
-     610,   207,   624,   207,   207,   433,    96,    97,    98,   151,
-     207,   206,   467,   207,   207,   105,   667,   207,   207,   207,
-     207,   449,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,   459,   207,   207,   420,   427,   425,   207,   430,   430,
-     204,   430,   207,   430,   433,   207,   433,   430,   207,   191,
-     433,   207,   507,   206,   144,   206,   204,   209,   148,   208,
-     202,   208,   449,     3,   207,   207,     6,     7,     8,     9,
-      10,    11,     9,     9,     9,     9,     9,     9,     9,   507,
-       9,     9,   207,   202,   541,   265,   541,   183,   268,   206,
-     204,   204,   204,   672,   673,   275,   206,   208,   278,   205,
-     181,   209,   207,   560,   284,   285,   208,   208,   563,   208,
-     208,   566,   181,   568,   208,   507,   208,   545,     9,    90,
-     208,   208,   208,   208,   208,   208,   208,   555,   208,   208,
-      70,   208,   208,   208,   208,   208,   208,   208,   566,   201,
-     208,   208,   208,   535,   208,   183,   535,   206,   535,   205,
-     330,   331,   535,   610,   208,   610,   208,   181,   206,   206,
-       3,     3,     9,   555,   208,     6,   181,   206,   208,   624,
-     206,   208,   183,   208,   566,   603,   208,   117,   204,   208,
-     360,   361,   362,   363,   364,   365,   366,   208,   208,   208,
-     182,   222,   184,   185,   186,   187,   188,   189,   190,   191,
-     192,   193,   208,   631,   183,   183,   206,   147,   446,   201,
-     202,   603,   290,    48,   284,   429,   208,   515,   427,   216,
-     160,   613,   613,   673,   613,   647,   613,    14,    15,    16,
-     613,   280,    19,    20,    -1,    -1,    -1,    -1,    -1,   631,
-      -1,    -1,    -1,    -1,    -1,    -1,   186,    -1,    -1,   189,
-     190,   191,    -1,    -1,   194,   195,    -1,    -1,   438,    -1,
-      -1,    -1,    -1,   203,    -1,    -1,    -1,   207,    -1,    -1,
+       2,     2,    69,     2,    69,     2,     2,   328,   269,     2,
+      48,   272,   268,   274,   204,   246,   277,    45,   307,     2,
+     326,   282,   242,   243,   294,     2,     2,     2,     2,   276,
+       2,    48,   108,    70,   508,    16,     3,   155,   559,     6,
+       7,     8,     9,    10,    11,   155,     3,   507,     5,    48,
+     506,    48,   133,    90,   510,    48,   137,    66,    67,    68,
+       3,   564,     5,    72,   181,    48,   569,   181,    38,     3,
+      99,     5,    67,    68,   202,   331,   155,    72,   206,    34,
+      35,    51,    39,   164,   181,   181,   204,    44,   206,   203,
+      16,   208,    58,   567,   204,   202,    39,   181,    26,   128,
+     207,    44,    30,    70,     0,    39,   566,   181,   328,   206,
+      96,     3,   208,     5,    71,    14,    15,    16,    17,    18,
+      19,    20,   625,    22,   208,   204,   202,   648,    71,   319,
+     604,   420,   322,    99,   208,   322,   202,    71,     3,   599,
+       5,   207,   598,   432,   414,   601,     3,    39,     5,   216,
+     117,   216,   342,   343,   344,   202,   343,   344,   632,    31,
+     207,     3,     9,     5,    36,    12,   626,   202,   125,     9,
+     205,   202,   628,   207,   205,   242,   243,   242,   243,    71,
+     147,   637,   125,     3,    14,    15,    16,   448,   255,    19,
+      20,   125,    16,   160,   151,   202,   263,   653,   205,   419,
+     202,   203,   207,   202,   203,   202,   203,   224,   151,   202,
+     203,   176,   177,   178,   179,   180,     3,   151,     5,   186,
+     201,   202,   189,   190,   191,     6,     7,   194,   195,     3,
+     491,     5,   161,   125,   191,   205,   203,   468,   276,   183,
+     207,   250,   206,   206,   550,   202,   283,   206,   191,   286,
+     207,   288,   289,   208,   209,   250,   293,   191,   206,   151,
+     521,   328,   551,   328,   207,   191,   192,   193,   202,     3,
+     308,     5,   204,   207,   276,   201,   202,   598,     9,   204,
+     204,   206,   206,   514,   204,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   333,     3,   206,     5,   191,
+     204,   206,   201,   202,   625,     3,     3,     5,     5,   556,
+      14,    15,    16,   206,    44,   207,   637,   204,   320,   320,
+     609,   320,   542,   320,   320,   327,   327,   320,   327,   367,
+     327,   333,   653,   564,   327,   206,   206,   320,   569,    69,
+     206,   572,   344,   320,   320,   320,   320,   385,   320,     3,
+     204,     5,   419,     3,   419,     5,   645,   187,   188,   189,
+     190,   191,   192,   193,    94,   189,   190,   191,   192,   193,
+      39,   201,   202,   206,     3,    44,     5,   201,   202,    39,
+     447,     3,   207,     5,   206,   204,   208,   204,   426,   417,
+     646,   611,   207,   207,   625,   207,   434,   207,   207,   207,
+     207,   207,    71,   468,   207,   207,   207,   668,   138,   207,
+     207,    71,   450,   207,   207,   207,   207,   207,   207,   207,
+     150,   207,   460,   207,   207,   421,   428,   426,   207,   431,
+     431,   207,   431,   202,   431,   434,   207,   434,   431,   207,
+     207,   434,   207,   508,   207,   207,   207,   206,   206,   206,
+     204,     9,   208,   450,     3,   208,   125,     6,     7,     8,
+       9,    10,    11,   209,   207,   125,     9,     9,     9,     9,
+     508,     9,     9,     9,     9,   542,   202,   542,   207,   206,
+     204,   204,   151,   673,   674,   189,   190,   191,   192,   193,
+     265,   151,   183,   268,   561,   206,   204,   201,   202,   564,
+     275,   181,   567,   278,   569,   208,   508,   209,   546,   284,
+     285,   205,   208,   208,   201,   208,   208,   207,   556,   208,
+     208,    70,   191,   208,   208,   208,   208,   208,   181,   567,
+     208,   191,   208,   202,   536,   208,   208,   536,   207,   536,
+     208,   208,   202,   536,   611,   208,   611,   207,     9,   208,
+     208,   208,   208,   208,   556,   183,   331,   332,   206,   208,
+     625,   208,    40,   208,   205,   567,   604,    90,   117,   208,
+      14,    15,    16,    17,    18,    19,    20,   181,   208,   206,
+     206,     3,     3,     9,   208,   181,   361,   362,   363,   364,
+     365,   366,   367,     6,   632,   206,   206,   183,   147,   208,
+     208,   208,   604,   208,   204,    83,   208,   208,   183,   208,
+     208,   160,   614,   614,   208,   614,   183,   614,    96,    97,
+      98,   614,   206,   284,   290,   222,   430,   105,   516,   447,
+     632,   674,   428,    48,   648,   216,   280,   186,    -1,    -1,
+     189,   190,   191,    -1,    -1,   194,   195,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   203,    -1,    -1,    -1,   207,    -1,
+      -1,    -1,    -1,    -1,   439,    -1,   144,    -1,    -1,    -1,
+     148,    -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,   468,   469,
-      -1,   471,   472,   473,   474,   475,   476,   477,   478,   479,
-     480,   481,   482,   483,   484,   485,   486,   487,    -1,   489,
-      -1,    -1,    -1,    -1,    -1,    -1,     3,    -1,     5,     6,
-       7,     8,     9,    10,    11,    -1,     3,    -1,    -1,     6,
-       7,     8,     9,    10,    11,   515,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    32,    -1,    34,    -1,    -1,
-      -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,    -1,
-      -1,    -1,    -1,    -1,    14,    15,    16,    17,    18,    19,
-      20,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    66,
-      67,    -1,    69,    70,    -1,    -1,    73,    -1,    -1,    76,
-      -1,    -1,    -1,    70,    -1,    -1,    83,    -1,    -1,    -1,
-     187,   188,   189,   190,   191,   192,   193,    94,    -1,    96,
-      97,    98,    -1,    -1,   201,   202,    -1,    -1,   105,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     117,    14,    15,    16,    17,    18,    19,    20,    -1,    22,
-     630,   138,    -1,   633,    -1,    -1,   143,   144,   145,    -1,
-     147,   148,    -1,   150,    -1,   645,    -1,   154,    -1,    -1,
-     147,    -1,    -1,   160,    -1,    -1,   163,    -1,   165,    -1,
-      -1,    -1,    -1,   160,    -1,    -1,   173,   174,    -1,    -1,
-      -1,     4,     5,    -1,    -1,    -1,    -1,    -1,    -1,   186,
-      -1,    -1,   189,   190,   191,    -1,    -1,   194,   195,   186,
-      -1,    -1,   189,   190,   191,    -1,    -1,   194,   195,    32,
-     207,    34,    -1,    -1,    -1,    -1,    -1,    40,    41,    -1,
-     207,    44,    -1,    -1,    -1,    -1,    49,   187,   188,   189,
-     190,   191,   192,   193,    -1,    58,    -1,    60,    -1,    -1,
-      -1,   201,   202,    66,    67,    -1,    69,    -1,    -1,    -1,
-      73,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      83,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,
-      -1,    94,    -1,    96,    97,    98,    99,    -1,    -1,    -1,
-      -1,    -1,   105,    -1,    -1,    -1,    -1,   110,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     4,     5,
-      -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,    -1,    -1,    -1,    -1,   138,    -1,    -1,   201,   202,
-     143,   144,   145,    -1,    -1,   148,    32,   150,    34,    -1,
-      -1,   154,    -1,    -1,    40,    41,    -1,    -1,    44,    -1,
-     163,    -1,   165,    49,    -1,    -1,    -1,    -1,    -1,    -1,
-     173,   174,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,
-      66,    67,    -1,    69,    -1,    -1,    -1,    73,    -1,    -1,
-      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,   202,
-      -1,    -1,   205,    -1,    90,    91,    -1,    -1,    94,    -1,
-      96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,   105,
-      -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,     4,     5,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   138,    -1,    -1,    -1,    -1,   143,   144,   145,
-      -1,    -1,   148,    32,   150,    34,    -1,    -1,   154,    -1,
-      -1,    40,    41,    -1,    -1,    44,    -1,   163,    -1,   165,
-      49,    -1,    -1,    -1,    -1,    -1,    -1,   173,   174,    58,
-      -1,    60,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
-      69,    -1,    -1,    -1,    73,    -1,    -1,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    83,    -1,   202,    -1,    -1,   205,
-      -1,    90,    -1,    -1,    -1,    94,    -1,    96,    97,    98,
-      99,    -1,    -1,    -1,    -1,    -1,   105,     4,     5,    -1,
-      -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    32,    -1,    34,    -1,   138,
-      -1,    -1,    -1,    40,   143,   144,   145,    44,    -1,   148,
-      -1,   150,    49,    -1,    -1,   154,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    60,   163,    -1,   165,    -1,    -1,    66,
-      67,    -1,    69,    -1,   173,   174,    73,    -1,    -1,    76,
+      -1,    -1,    -1,    -1,   469,   470,    -1,   472,   473,   474,
+     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
+     485,   486,   487,   488,    -1,   490,    -1,    -1,    -1,    -1,
+      -1,    -1,     3,    -1,     5,     6,     7,     8,     9,    10,
+      11,    -1,     3,    -1,    -1,     6,     7,     8,     9,    10,
+      11,   516,   186,   187,   188,   189,   190,   191,   192,   193,
+      -1,    32,    -1,    34,    -1,    -1,    -1,   201,   202,    40,
+      -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,
+      14,    15,    16,    17,    18,    19,    20,    -1,    -1,    60,
+      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    70,
+      -1,    -1,    73,    -1,    -1,    76,    -1,    -1,    -1,    70,
+      -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    94,    -1,    96,    97,    98,    -1,    -1,
+      -1,    -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   117,    14,    15,    16,
+      17,    18,    19,    20,    -1,    -1,   631,   138,    -1,   634,
+      -1,    -1,   143,   144,   145,    -1,   147,   148,    -1,   150,
+      -1,   646,    -1,   154,    -1,    -1,   147,    -1,    -1,   160,
+      -1,    -1,   163,    -1,   165,    -1,    -1,    -1,    -1,   160,
+      -1,    -1,   173,   174,    -1,    -1,    -1,     4,     5,    -1,
+      -1,    -1,    -1,    -1,    -1,   186,    -1,    -1,   189,   190,
+     191,    -1,    -1,   194,   195,   186,    -1,    -1,   189,   190,
+     191,    -1,    -1,   194,   195,    32,   207,    34,    -1,    -1,
+      -1,    -1,    -1,    40,    41,    -1,   207,    44,    -1,    -1,
+      -1,    -1,    49,   187,   188,   189,   190,   191,   192,   193,
+      -1,    58,    -1,    60,    -1,    -1,    -1,   201,   202,    66,
+      67,    -1,    69,    -1,    -1,    -1,    73,    -1,    -1,    76,
       -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,
-      -1,    -1,    -1,    90,    -1,    -1,    -1,    94,    -1,    96,
-      97,    98,    -1,   202,    -1,    -1,   205,    -1,   105,     4,
-       5,    -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,    32,    -1,    34,
-      -1,   138,    -1,    -1,    -1,    40,   143,   144,   145,    44,
-      -1,   148,    -1,   150,    49,    -1,    -1,   154,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    60,   163,    -1,   165,    -1,
-      -1,    66,    67,    -1,    69,    -1,   173,   174,    73,    -1,
-      -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,
-      -1,    -1,    -1,    -1,    -1,    90,    -1,    -1,    -1,    94,
-      -1,    96,    97,    98,    -1,   202,    -1,    -1,   205,    -1,
-     105,     4,     5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    -1,    32,
-      -1,    34,    -1,   138,    -1,    -1,    -1,    40,   143,   144,
-     145,    44,    -1,   148,    -1,   150,    49,    -1,    -1,   154,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,   163,    -1,
-     165,    -1,    -1,    66,    67,    -1,    69,    -1,   173,   174,
-      73,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      83,    -1,    -1,    -1,    -1,    -1,    -1,    90,     5,    -1,
-      -1,    94,    -1,    96,    97,    98,    -1,   202,    -1,    -1,
-     205,    -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    32,    -1,    34,    -1,    -1,
-      -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   138,    -1,    -1,    -1,    -1,
-     143,   144,   145,    60,    -1,   148,    -1,   150,    -1,    66,
-      67,   154,    69,    -1,    -1,    -1,    73,    -1,    -1,    76,
-     163,    -1,   165,    -1,    -1,    -1,    83,    -1,    -1,    -1,
-     173,   174,    -1,    -1,    -1,    -1,    -1,    94,    -1,    96,
-      97,    98,    -1,    -1,    -1,    -1,    -1,   182,   105,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   202,
-      -1,    -1,   205,    -1,     4,     5,   201,   202,   203,    -1,
-      -1,    -1,    -1,    13,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   138,    -1,    -1,    -1,    -1,   143,   144,   145,    -1,
+      -1,    -1,    -1,    90,    91,    -1,    -1,    94,    -1,    96,
+      97,    98,    99,    -1,    -1,    -1,    -1,    -1,   105,    -1,
+      -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     4,     5,    -1,   184,   185,   186,
+     187,   188,   189,   190,   191,   192,   193,    -1,    -1,    -1,
+      -1,   138,    -1,    -1,   201,   202,   143,   144,   145,    -1,
       -1,   148,    32,   150,    34,    -1,    -1,   154,    -1,    -1,
       40,    41,    -1,    -1,    44,    -1,   163,    -1,   165,    49,
       -1,    -1,    -1,    -1,    -1,    -1,   173,   174,    58,    -1,
@@ -1611,89 +1552,152 @@
       -1,    -1,    -1,   173,   174,    58,    -1,    60,    -1,    -1,
       -1,    -1,    -1,    66,    67,    -1,    69,    -1,    -1,    -1,
       73,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      83,    -1,   202,    -1,    -1,    -1,    -1,    90,     5,    -1,
+      83,    -1,   202,    -1,    -1,   205,    -1,    90,    -1,    -1,
       -1,    94,    -1,    96,    97,    98,    99,    -1,    -1,    -1,
-      -1,    -1,   105,    -1,    -1,    -1,    -1,   110,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    32,    -1,    34,    -1,    -1,
-      -1,    -1,    39,    40,    -1,    -1,    -1,    44,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   138,    -1,    -1,    -1,    -1,
-     143,   144,   145,    60,    -1,   148,    -1,   150,    -1,    66,
-      67,   154,    69,    -1,    71,    -1,    73,    -1,   161,    76,
-     163,    -1,   165,    -1,    -1,    -1,    83,    -1,    -1,    -1,
-     173,   174,    -1,    -1,    -1,    -1,    -1,    94,    -1,    96,
-      97,    98,    -1,    -1,    -1,    -1,    -1,    -1,   105,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   202,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   125,    -1,
-      -1,    -1,    -1,    -1,    -1,     5,    -1,    -1,    -1,    -1,
-      -1,   138,    -1,    -1,    -1,    -1,   143,   144,   145,    -1,
-      -1,   148,    -1,   150,   151,    -1,    -1,   154,    -1,    -1,
-      -1,    -1,    32,    -1,    34,    -1,   163,    -1,   165,    39,
-      40,    -1,    -1,    -1,    44,    -1,   173,   174,    -1,    -1,
+      -1,    -1,   105,     4,     5,    -1,    -1,   110,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      60,    -1,    -1,    -1,   191,    -1,    66,    67,    -1,    69,
-      -1,    71,    -1,    73,    -1,   202,    76,    -1,    -1,    -1,
-      -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    94,    -1,    96,    97,    98,    -1,
-      -1,    -1,    -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,   138,    -1,
-      -1,    -1,    -1,   143,   144,   145,    -1,    -1,   148,    -1,
-     150,   151,    -1,    -1,   154,    23,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   163,    32,   165,    34,    -1,    -1,    -1,
-      -1,    -1,    40,   173,   174,    -1,    44,    -1,    -1,    -1,
+      -1,    32,    -1,    34,    -1,   138,    -1,    -1,    -1,    40,
+     143,   144,   145,    44,    -1,   148,    -1,   150,    49,    -1,
+      -1,   154,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
+     163,    -1,   165,    -1,    -1,    66,    67,    -1,    69,    -1,
+     173,   174,    73,    -1,    -1,    76,    -1,    -1,    -1,    -1,
+      -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    90,
+      -1,    -1,    -1,    94,    -1,    96,    97,    98,    -1,   202,
+      -1,    -1,   205,    -1,   105,     4,     5,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   191,    60,    -1,    -1,    -1,    -1,    -1,    66,    67,
-      -1,    69,   202,    -1,    -1,    73,    -1,    -1,    76,    -1,
-      -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     5,    -1,    -1,    94,    -1,    96,    97,
-      98,    -1,    -1,    -1,    -1,    -1,    -1,   105,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,
-      32,    -1,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
-      -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     138,    -1,    -1,    -1,    -1,   143,   144,   145,    60,    -1,
-     148,    -1,   150,    -1,    66,    67,   154,    69,    -1,    -1,
-      -1,    73,    -1,    -1,    76,   163,    -1,   165,    -1,    -1,
-      -1,    83,    -1,    -1,    -1,   173,   174,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    32,    -1,    34,    -1,   138,    -1,    -1,
+      -1,    40,   143,   144,   145,    44,    -1,   148,    -1,   150,
+      49,    -1,    -1,   154,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    60,   163,    -1,   165,    -1,    -1,    66,    67,    -1,
+      69,    -1,   173,   174,    73,    -1,    -1,    76,    -1,    -1,
+      -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,
+      -1,    90,    -1,    -1,    -1,    94,    -1,    96,    97,    98,
+      -1,   202,    -1,    -1,   205,    -1,   105,     4,     5,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    -1,    32,    -1,    34,    -1,   138,
+      -1,    -1,    -1,    40,   143,   144,   145,    44,    -1,   148,
+      -1,   150,    49,    -1,    -1,   154,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    60,   163,    -1,   165,    -1,    -1,    66,
+      67,    -1,    69,    -1,   173,   174,    73,    -1,    -1,    76,
+      -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,
+      -1,    -1,    -1,    90,     5,    -1,    -1,    94,    -1,    96,
+      97,    98,    -1,   202,    -1,    -1,   205,    -1,   105,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    32,    -1,    34,    -1,    -1,    -1,    -1,    -1,    40,
+      -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   138,    -1,    -1,    -1,    -1,   143,   144,   145,    60,
+      -1,   148,    -1,   150,    -1,    66,    67,   154,    69,    -1,
+      -1,    -1,    73,    -1,    -1,    76,   163,    -1,   165,    -1,
+      -1,    -1,    83,    -1,    -1,    -1,   173,   174,    -1,    -1,
+      -1,    -1,    -1,    94,    -1,    96,    97,    98,    -1,    -1,
+      -1,    -1,    -1,   182,   105,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   202,    -1,    -1,   205,    -1,
+       4,     5,   201,   202,   203,    -1,    -1,    -1,    -1,    13,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   138,    -1,    -1,
+      -1,    -1,   143,   144,   145,    -1,    -1,   148,    32,   150,
+      34,    -1,    -1,   154,    -1,    -1,    40,    41,    -1,    -1,
+      44,    -1,   163,    -1,   165,    49,    -1,    -1,    -1,    -1,
+      -1,    -1,   173,   174,    58,    -1,    60,    -1,    -1,    -1,
+      -1,    -1,    66,    67,    -1,    69,    -1,    -1,    -1,    73,
+      -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
+      -1,   202,    -1,    -1,   205,    -1,    90,    91,    -1,    -1,
+      94,    -1,    96,    97,    98,    99,    -1,    -1,    -1,    -1,
+      -1,   105,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,     4,     5,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   138,    -1,    -1,    -1,    -1,   143,
+     144,   145,    -1,    -1,   148,    32,   150,    34,    -1,    -1,
+     154,    -1,    -1,    40,    41,    -1,    -1,    44,    -1,   163,
+      -1,   165,    49,    -1,    -1,    -1,    -1,    -1,    -1,   173,
+     174,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,    66,
+      67,    -1,    69,    -1,    -1,    -1,    73,    -1,    -1,    76,
+      -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,   202,    -1,
+      -1,    -1,    -1,    90,     5,    -1,    -1,    94,    -1,    96,
+      97,    98,    99,    -1,    -1,    -1,    -1,    -1,   105,    -1,
+      -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    32,    -1,    34,    -1,    -1,    -1,    -1,    39,    40,
+      -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   138,    -1,    -1,    -1,    -1,   143,   144,   145,    60,
+      -1,   148,    -1,   150,    -1,    66,    67,   154,    69,    -1,
+      71,    -1,    73,    -1,   161,    76,   163,    -1,   165,    -1,
+      -1,    -1,    83,    -1,    -1,    -1,   173,   174,    -1,    -1,
+      -1,    -1,    -1,    94,    -1,    96,    97,    98,    -1,    -1,
+      -1,    -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   202,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,    -1,    -1,
+      -1,     5,    -1,    -1,    -1,    -1,    -1,   138,    -1,    -1,
+      -1,    -1,   143,   144,   145,    -1,    -1,   148,    -1,   150,
+     151,    -1,    -1,   154,    -1,    -1,    -1,    -1,    32,    -1,
+      34,    -1,   163,    -1,   165,    39,    40,    -1,    -1,    -1,
+      44,    -1,   173,   174,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
+     191,    -1,    66,    67,    -1,    69,    -1,    71,    -1,    73,
+      -1,   202,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      94,    -1,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,
+      -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     5,   138,    -1,    -1,    -1,    -1,   143,
+     144,   145,    -1,    -1,   148,    -1,   150,   151,    -1,    -1,
+     154,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   163,
+      32,   165,    34,    -1,    -1,    -1,    -1,    -1,    40,   173,
+     174,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   191,    60,    -1,
+      -1,    -1,    -1,    -1,    66,    67,    -1,    69,   202,    -1,
+      -1,    73,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
+      -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,
       -1,    -1,    94,    -1,    96,    97,    98,    -1,    -1,    -1,
       -1,    -1,    -1,   105,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    -1,   202,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,
-      15,    16,    17,    18,    19,    20,   138,    -1,    -1,    -1,
-      -1,   143,   144,   145,    -1,    -1,   148,    -1,   150,    -1,
-      -1,    -1,   154,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   163,    -1,   165,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   173,   174,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    -1,    -1,    -1,    -1,   182,    -1,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,    -1,    -1,
-     202,    -1,    -1,    -1,    -1,   201,   202,    -1,    -1,    -1,
-      -1,    -1,   208,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      20,    21,    22,    -1,    -1,    -1,    32,    -1,    34,    -1,
+      -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   138,    -1,    -1,    -1,
+      -1,   143,   144,   145,    60,    -1,   148,    -1,   150,    -1,
+      66,    67,   154,    69,    -1,    -1,    -1,    73,    -1,    -1,
+      76,   163,    -1,   165,    -1,    -1,    -1,    83,    -1,    -1,
+      -1,   173,   174,    -1,    -1,    -1,    -1,    -1,    94,    -1,
+      96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,   105,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    -1,
+     202,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    14,    15,    16,    17,    18,    19,    20,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      20,    -1,   138,    -1,    -1,    -1,    -1,   143,   144,   145,
+      -1,    -1,   148,    -1,   150,    -1,    -1,    -1,   154,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   163,    -1,   165,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   173,   174,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    -1,    -1,
       -1,    -1,   182,    -1,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,    14,    15,    16,    17,    18,    19,
-      20,   201,   202,    -1,    -1,    -1,    -1,    -1,   208,   184,
+     190,   191,   192,   193,    -1,    -1,   202,    -1,    -1,    -1,
+      -1,   201,   202,    -1,    -1,    -1,    -1,    -1,   208,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   182,    -1,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   201,   202,    -1,
+      -1,    -1,    -1,    -1,   208,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   201,   202,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   182,    -1,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,   201,   202,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     201,   202,   203,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     201,   202,   182,    -1,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,     5,    -1,    -1,    -1,    -1,    -1,
-      -1,   201,   202,   185,   186,   187,   188,   189,   190,   191,
+      -1,    -1,    -1,   208,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   182,    -1,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   201,   202,   203,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,    -1,    -1,    -1,     5,    -1,    -1,    -1,   201,   202,
+     182,    -1,   184,   185,   186,   187,   188,   189,   190,   191,
      192,   193,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   201,
      202,    32,    -1,    34,    -1,    -1,    -1,    -1,    -1,    40,
-      41,    -1,    -1,    44,    -1,    -1,   186,   187,   188,   189,
-     190,   191,   192,   193,    -1,    -1,    -1,    58,    -1,    60,
-      -1,   201,   202,    -1,    -1,    66,    67,    -1,    69,    -1,
+      41,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    -1,    60,
+      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
       -1,    -1,    73,    -1,    -1,    76,    -1,    -1,    -1,    -1,
       -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
        5,    -1,    -1,    94,    -1,    96,    97,    98,    99,    -1,
@@ -1774,43 +1778,43 @@
      207,   207,   207,   207,   207,   207,   207,   207,   207,   207,
      207,   207,   207,   207,   181,   203,    13,    91,   216,   221,
      224,   263,   265,   266,   277,   278,   281,   205,   230,   231,
-       3,     3,     3,     5,     3,     3,   204,   303,   267,   212,
-     128,   271,   275,     3,     5,   204,   214,   285,   289,   289,
-     209,   202,   207,   229,   287,   208,   239,   240,   241,   259,
-     208,   249,   207,   252,     9,     9,    12,   235,   259,     3,
-       6,     7,     8,     9,    10,    11,    70,   117,   147,   160,
-     186,   189,   190,   191,   194,   195,   207,   245,   246,   247,
-     245,   248,     9,     9,   233,   248,   247,     9,     9,   247,
-       9,   247,   245,   228,   231,   286,   247,   243,   244,   245,
-       9,   305,     9,   247,   307,   243,   245,   307,   176,   177,
-     178,   179,   180,   304,   307,   307,   235,     6,     7,   310,
-       9,   307,   234,   202,   207,   206,   204,   215,   286,   205,
-     230,   268,   205,   183,   108,   230,   254,   272,   206,   204,
-     214,   205,   216,   231,   284,   289,   208,   248,   191,   203,
-     245,   225,   226,   227,   228,   205,   181,   209,   205,   230,
-     250,   254,   205,   231,   251,   254,   208,   208,   208,   207,
-     245,   245,   245,   245,   245,   245,   245,   286,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,   182,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   201,   202,
-     181,   208,   208,   208,   181,   208,   208,   208,   208,   208,
-     208,   208,   208,   208,   208,   286,   191,   207,   229,   236,
-     259,   295,   297,   298,   208,   181,   208,   208,   208,   208,
-     181,   208,   208,   208,   208,   208,   208,   208,   208,   201,
-     208,   208,   208,   234,     9,   213,   289,   299,   215,   278,
-     183,   286,   306,   206,   205,   231,   255,   256,   205,   220,
-     205,   215,   203,   203,   208,   181,   241,   247,   286,   309,
-     208,   206,   206,   286,   208,   191,   207,   229,   236,   291,
-     293,   294,   245,   245,     3,   245,   245,   245,   245,   245,
+       3,     3,     5,     3,     5,     3,     3,   204,   303,   267,
+     212,   128,   271,   275,     3,     5,   204,   214,   285,   289,
+     289,   209,   202,   207,   229,   287,   208,   239,   240,   241,
+     259,   208,   249,   207,   252,     9,     9,    12,   235,   259,
+       3,     6,     7,     8,     9,    10,    11,    70,   117,   147,
+     160,   186,   189,   190,   191,   194,   195,   207,   245,   246,
+     247,   245,   248,     9,     9,   233,   248,   247,     9,     9,
+     247,     9,   247,   245,   228,   231,   286,   247,   243,   244,
+     245,     9,   305,     9,   247,   307,   243,   245,   307,   176,
+     177,   178,   179,   180,   304,   307,   307,   235,     6,     7,
+     310,     9,   307,   234,   202,   207,   206,   204,   215,   286,
+     205,   230,   268,   205,   183,   108,   230,   254,   272,   206,
+     204,   214,   205,   216,   231,   284,   289,   208,   248,   191,
+     203,   245,   225,   226,   227,   228,   205,   181,   209,   205,
+     230,   250,   254,   205,   231,   251,   254,   208,   208,   208,
+     207,   245,   245,   245,   245,   245,   245,   245,   286,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,   182,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   201,
+     202,   181,   208,   208,   208,   181,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   286,   191,   207,   229,
+     236,   259,   295,   297,   298,   208,   181,   208,   208,   208,
+     208,   181,   208,   208,   208,   208,   208,   208,   208,   208,
+     201,   208,   208,   208,   234,     9,   213,   289,   299,   215,
+     278,   183,   286,   306,   206,   205,   231,   255,   256,   205,
+     220,   205,   215,   203,   203,   208,   181,   241,   247,   286,
+     309,   208,   206,   206,   286,   208,   191,   207,   229,   236,
+     291,   293,   294,   245,   245,     3,   245,   245,   245,   245,
      245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
-     245,   245,     3,   245,   247,     9,   297,   285,   191,   225,
-     236,   296,   297,   207,   229,   244,   247,     6,   208,   205,
-     181,   289,   206,   214,   215,    23,   228,   295,   301,   302,
-     206,   257,   259,   293,   285,   191,   225,   236,   292,   293,
-     208,   207,   229,   183,   203,   297,   285,   208,   297,   208,
-     225,   208,   215,   289,   205,   183,   300,   181,   206,   204,
-     208,   293,   285,   208,   297,   208,   245,   225,   245,   297,
-     208,   215,   248,   301,   237,   297,   208,    38,    51,   205,
-     238,   247,   183,   183,   206,   253,   254,   253,   206
+     245,   245,   245,     3,   245,   247,     9,   297,   285,   191,
+     225,   236,   296,   297,   207,   229,   244,   247,     6,   208,
+     205,   181,   289,   206,   214,   215,    23,   228,   295,   301,
+     302,   206,   257,   259,   293,   285,   191,   225,   236,   292,
+     293,   208,   207,   229,   183,   203,   297,   285,   208,   297,
+     208,   225,   208,   215,   289,   205,   183,   300,   181,   206,
+     204,   208,   293,   285,   208,   297,   208,   245,   225,   245,
+     297,   208,   215,   248,   301,   237,   297,   208,    38,    51,
+     205,   238,   247,   183,   183,   206,   253,   254,   253,   206
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1820,9 +1824,9 @@
      212,   212,   213,   213,   213,   213,   213,   213,   213,   213,
      213,   213,   214,   214,   215,   215,   216,   216,   216,   216,
      216,   216,   217,   217,   217,   217,   217,   217,   217,   217,
-     217,   218,   219,   220,   221,   222,   223,   224,   225,   225,
-     226,   226,   227,   227,   228,   228,   229,   229,   229,   230,
-     230,   231,   232,   232,   232,   233,   233,   234,   234,   234,
+     217,   218,   219,   220,   221,   222,   222,   223,   224,   225,
+     225,   226,   226,   227,   227,   228,   228,   229,   229,   229,
+     230,   230,   231,   232,   232,   232,   233,   233,   234,   234,
      234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
      234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
      234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
@@ -1832,29 +1836,29 @@
      234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
      234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
      234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   235,   235,   236,
-     236,   236,   236,   237,   237,   238,   238,   239,   239,   239,
-     240,   240,   241,   241,   242,   243,   243,   244,   244,   245,
+     234,   234,   234,   234,   234,   234,   234,   234,   235,   235,
+     236,   236,   236,   236,   237,   237,   238,   238,   239,   239,
+     239,   240,   240,   241,   241,   242,   243,   243,   244,   244,
      245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
      245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
      245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
      245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
-     246,   246,   247,   248,   249,   249,   250,   250,   251,   251,
-     252,   252,   253,   253,   254,   254,   255,   256,   256,   257,
-     257,   258,   258,   258,   259,   259,   260,   260,   260,   260,
-     260,   260,   260,   260,   260,   260,   260,   261,   261,   262,
-     262,   262,   262,   262,   262,   262,   262,   263,   263,   264,
-     265,   266,   267,   267,   268,   269,   269,   270,   271,   271,
-     272,   272,   273,   273,   274,   274,   275,   275,   276,   277,
-     277,   277,   278,   278,   279,   279,   280,   281,   282,   282,
-     282,   283,   284,   285,   285,   286,   286,   287,   287,   288,
-     288,   288,   289,   289,   289,   290,   290,   290,   290,   291,
-     291,   291,   292,   292,   293,   293,   294,   294,   294,   294,
-     294,   295,   295,   295,   296,   296,   297,   297,   298,   298,
-     298,   298,   298,   298,   299,   299,   300,   300,   301,   302,
-     302,   303,   303,   304,   304,   304,   304,   304,   305,   305,
-     305,   306,   307,   307,   307,   307,   307,   307,   307,   307,
-     307,   307,   308,   309,   309,   310,   310,   310
+     245,   246,   246,   247,   248,   249,   249,   250,   250,   251,
+     251,   252,   252,   253,   253,   254,   254,   255,   256,   256,
+     257,   257,   258,   258,   258,   259,   259,   260,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   260,   261,   261,
+     262,   262,   262,   262,   262,   262,   262,   262,   263,   263,
+     264,   265,   266,   267,   267,   268,   269,   269,   270,   271,
+     271,   272,   272,   273,   273,   274,   274,   275,   275,   276,
+     277,   277,   277,   278,   278,   279,   279,   280,   281,   282,
+     282,   282,   283,   284,   285,   285,   286,   286,   287,   287,
+     288,   288,   288,   289,   289,   289,   290,   290,   290,   290,
+     291,   291,   291,   292,   292,   293,   293,   294,   294,   294,
+     294,   294,   295,   295,   295,   296,   296,   297,   297,   298,
+     298,   298,   298,   298,   298,   299,   299,   300,   300,   301,
+     302,   302,   303,   303,   304,   304,   304,   304,   304,   305,
+     305,   305,   306,   307,   307,   307,   307,   307,   307,   307,
+     307,   307,   307,   308,   309,   309,   310,   310,   310
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1864,41 +1868,41 @@
        2,     2,     0,     2,     5,     2,     3,     2,     2,     2,
        2,     2,     0,     2,     0,     1,     1,     2,     2,     1,
        2,     1,     1,     2,     1,     2,     1,     2,     2,     2,
-       2,     4,     3,     3,     5,     2,     3,     4,     0,     1,
-       1,     3,     1,     3,     3,     2,     3,     3,     2,     0,
-       1,     3,     1,     3,     4,     1,     3,     0,     1,     4,
-       1,     1,     1,     1,     1,     4,     4,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     4,     1,     1,
-       1,     4,     1,     1,     1,     4,     4,     1,     1,     1,
-       1,     4,     4,     4,     4,     4,     1,     4,     1,     1,
-       4,     1,     4,     1,     1,     4,     4,     1,     1,     1,
+       2,     4,     3,     3,     5,     2,     2,     3,     4,     0,
+       1,     1,     3,     1,     3,     3,     2,     3,     3,     2,
+       0,     1,     3,     1,     3,     4,     1,     3,     0,     1,
+       4,     1,     1,     1,     1,     1,     4,     4,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     4,     1,
+       1,     1,     4,     1,     1,     1,     4,     4,     1,     1,
+       1,     1,     4,     4,     4,     4,     4,     1,     4,     1,
+       1,     4,     1,     4,     1,     1,     4,     4,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     4,     1,     1,     1,     4,     4,     1,     1,     1,
-       1,     1,     6,     1,     4,     1,     1,     1,     4,     1,
-       1,     1,     4,     4,     4,     4,     1,     1,     4,     4,
-       4,     1,     1,     4,     4,     4,     1,     1,     1,     1,
-       1,     1,     1,     0,     2,     4,     3,     0,     2,     1,
-       1,     3,     3,     1,     5,     1,     3,     0,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     5,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     2,     2,
-       2,     2,     2,     2,     3,     3,     5,     5,     4,     3,
-       1,     3,     1,     1,     0,     2,     4,     3,     2,     2,
-       0,     2,     2,     1,     3,     2,     1,     3,     2,     0,
-       1,     0,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     1,     1,     1,     1,     1,     1,     0,     1,     1,
-       2,     1,     2,     2,     1,     1,     1,     2,     2,     2,
-       5,     2,     0,     2,     2,     2,     2,     2,     2,     3,
-       2,     3,     5,     5,     0,     2,     2,     2,     2,     6,
-       8,     2,     2,     2,     2,     2,     2,     5,     1,     1,
-       1,     1,     1,     0,     2,     2,     3,     0,     1,     2,
-       2,     2,     3,     2,     1,     1,     3,     2,     4,     3,
-       2,     1,     3,     2,     0,     1,     3,     2,     1,     3,
-       4,     3,     2,     1,     3,     2,     0,     1,     1,     3,
-       2,     1,     3,     4,     1,     3,     0,     2,     2,     1,
-       3,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       1,     5,     1,     1,     1,     1,     2,     1,     2,     1,
-       2,     4,     5,     5,    10,     1,     3,     1
+       1,     1,     4,     1,     1,     1,     4,     4,     1,     1,
+       1,     1,     1,     6,     1,     4,     1,     1,     1,     4,
+       1,     1,     1,     4,     4,     4,     4,     1,     1,     4,
+       4,     4,     1,     1,     4,     4,     4,     1,     1,     1,
+       1,     1,     1,     1,     0,     2,     4,     3,     0,     2,
+       1,     1,     3,     3,     1,     5,     1,     3,     0,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       5,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     2,
+       2,     2,     2,     2,     2,     3,     3,     5,     5,     4,
+       3,     1,     3,     1,     1,     0,     2,     4,     3,     2,
+       2,     0,     2,     2,     1,     3,     2,     1,     3,     2,
+       0,     1,     0,     1,     1,     1,     1,     1,     1,     1,
+       2,     2,     1,     1,     1,     1,     1,     1,     0,     1,
+       1,     2,     1,     2,     2,     1,     1,     1,     2,     2,
+       2,     5,     2,     0,     2,     2,     2,     2,     2,     2,
+       3,     2,     3,     5,     5,     0,     2,     2,     2,     2,
+       6,     8,     2,     2,     2,     2,     2,     2,     5,     1,
+       1,     1,     1,     1,     0,     2,     2,     3,     0,     1,
+       2,     2,     2,     3,     2,     1,     1,     3,     2,     4,
+       3,     2,     1,     3,     2,     0,     1,     3,     2,     1,
+       3,     4,     3,     2,     1,     3,     2,     0,     1,     1,
+       3,     2,     1,     3,     4,     1,     3,     0,     2,     2,
+       1,     3,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     5,     1,     1,     1,     1,     2,     1,     2,
+       1,     2,     4,     5,     5,    10,     1,     3,     1
 };
 
 
@@ -2588,31 +2592,31 @@
 						  write_dlldata((yyvsp[0].stmt_list));
 						  write_local_stubs((yyvsp[0].stmt_list));
 						}
-#line 2592 "parser.tab.c" /* yacc.c:1646  */
+#line 2596 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 3:
 #line 322 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = NULL; }
-#line 2598 "parser.tab.c" /* yacc.c:1646  */
+#line 2602 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 4:
 #line 324 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statements((yyvsp[-4].stmt_list), (yyvsp[-1].stmt_list)); }
-#line 2604 "parser.tab.c" /* yacc.c:1646  */
+#line 2608 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 5:
 #line 325 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
-#line 2610 "parser.tab.c" /* yacc.c:1646  */
+#line 2614 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 6:
 #line 326 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 2616 "parser.tab.c" /* yacc.c:1646  */
+#line 2620 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 7:
@@ -2620,7 +2624,7 @@
     { (yyval.stmt_list) = (yyvsp[-2].stmt_list);
 						  reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, 0);
 						}
-#line 2624 "parser.tab.c" /* yacc.c:1646  */
+#line 2628 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 8:
@@ -2628,55 +2632,55 @@
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
 						  reg_type((yyvsp[0].type), (yyvsp[0].type)->name, 0);
 						}
-#line 2632 "parser.tab.c" /* yacc.c:1646  */
+#line 2636 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 9:
 #line 333 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
-#line 2638 "parser.tab.c" /* yacc.c:1646  */
+#line 2642 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 10:
 #line 334 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
-#line 2644 "parser.tab.c" /* yacc.c:1646  */
+#line 2648 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 11:
 #line 335 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2650 "parser.tab.c" /* yacc.c:1646  */
+#line 2654 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 12:
 #line 338 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = NULL; }
-#line 2656 "parser.tab.c" /* yacc.c:1646  */
+#line 2660 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 13:
 #line 339 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
-#line 2662 "parser.tab.c" /* yacc.c:1646  */
+#line 2666 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 14:
 #line 341 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statements((yyvsp[-4].stmt_list), (yyvsp[-1].stmt_list)); }
-#line 2668 "parser.tab.c" /* yacc.c:1646  */
+#line 2672 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 15:
 #line 342 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 2674 "parser.tab.c" /* yacc.c:1646  */
+#line 2678 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 16:
 #line 343 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, 0); }
-#line 2680 "parser.tab.c" /* yacc.c:1646  */
+#line 2684 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 17:
@@ -2684,121 +2688,121 @@
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
 						  reg_type((yyvsp[0].type), (yyvsp[0].type)->name, 0);
 						}
-#line 2688 "parser.tab.c" /* yacc.c:1646  */
+#line 2692 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 18:
 #line 347 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
-#line 2694 "parser.tab.c" /* yacc.c:1646  */
+#line 2698 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 19:
 #line 348 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2700 "parser.tab.c" /* yacc.c:1646  */
+#line 2704 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 20:
 #line 349 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_importlib((yyvsp[0].str))); }
-#line 2706 "parser.tab.c" /* yacc.c:1646  */
+#line 2710 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 21:
 #line 350 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
-#line 2712 "parser.tab.c" /* yacc.c:1646  */
+#line 2716 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 22:
 #line 353 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = NULL; }
-#line 2718 "parser.tab.c" /* yacc.c:1646  */
+#line 2722 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 23:
 #line 354 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2724 "parser.tab.c" /* yacc.c:1646  */
+#line 2728 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 26:
 #line 362 "parser.y" /* yacc.c:1646  */
     { (yyval.statement) = make_statement_cppquote((yyvsp[0].str)); }
-#line 2730 "parser.tab.c" /* yacc.c:1646  */
+#line 2734 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 27:
 #line 363 "parser.y" /* yacc.c:1646  */
     { (yyval.statement) = make_statement_type_decl((yyvsp[-1].type)); }
-#line 2736 "parser.tab.c" /* yacc.c:1646  */
+#line 2740 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 28:
 #line 364 "parser.y" /* yacc.c:1646  */
     { (yyval.statement) = make_statement_declaration((yyvsp[-1].var)); }
-#line 2742 "parser.tab.c" /* yacc.c:1646  */
+#line 2746 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 29:
 #line 365 "parser.y" /* yacc.c:1646  */
     { (yyval.statement) = make_statement_import((yyvsp[0].str)); }
-#line 2748 "parser.tab.c" /* yacc.c:1646  */
+#line 2752 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 30:
 #line 366 "parser.y" /* yacc.c:1646  */
     { (yyval.statement) = (yyvsp[-1].statement); }
-#line 2754 "parser.tab.c" /* yacc.c:1646  */
+#line 2758 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 31:
 #line 367 "parser.y" /* yacc.c:1646  */
     { (yyval.statement) = make_statement_pragma((yyvsp[0].str)); }
-#line 2760 "parser.tab.c" /* yacc.c:1646  */
+#line 2764 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 33:
 #line 372 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_enum((yyvsp[0].str), FALSE, NULL); }
-#line 2766 "parser.tab.c" /* yacc.c:1646  */
+#line 2770 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 35:
 #line 374 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_struct((yyvsp[0].str), FALSE, NULL); }
-#line 2772 "parser.tab.c" /* yacc.c:1646  */
+#line 2776 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 37:
 #line 376 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
-#line 2778 "parser.tab.c" /* yacc.c:1646  */
+#line 2782 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 38:
 #line 377 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[-1].attr_list)); }
-#line 2784 "parser.tab.c" /* yacc.c:1646  */
+#line 2788 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 39:
 #line 378 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[-1].attr_list)); }
-#line 2790 "parser.tab.c" /* yacc.c:1646  */
+#line 2794 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 40:
 #line 379 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_union_attrs((yyvsp[-1].attr_list)); }
-#line 2796 "parser.tab.c" /* yacc.c:1646  */
+#line 2800 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 41:
 #line 382 "parser.y" /* yacc.c:1646  */
     { (yyval.str) = (yyvsp[-1].str); }
-#line 2802 "parser.tab.c" /* yacc.c:1646  */
+#line 2806 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 42:
@@ -2809,7 +2813,7 @@
 						  (yyval.import)->import_performed = do_import((yyvsp[-1].str));
 						  if (!(yyval.import)->import_performed) yychar = aEOF;
 						}
-#line 2813 "parser.tab.c" /* yacc.c:1646  */
+#line 2817 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 43:
@@ -2818,832 +2822,838 @@
 						  if ((yyvsp[-2].import)->import_performed) pop_import();
 						  free((yyvsp[-2].import));
 						}
-#line 2822 "parser.tab.c" /* yacc.c:1646  */
+#line 2826 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 44:
 #line 399 "parser.y" /* yacc.c:1646  */
     { (yyval.str) = (yyvsp[-2].str); if(!parse_only) add_importlib((yyvsp[-2].str)); }
-#line 2828 "parser.tab.c" /* yacc.c:1646  */
+#line 2832 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 45:
 #line 402 "parser.y" /* yacc.c:1646  */
     { (yyval.str) = (yyvsp[0].str); }
-#line 2834 "parser.tab.c" /* yacc.c:1646  */
+#line 2838 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 46:
-#line 404 "parser.y" /* yacc.c:1646  */
-    { (yyval.typelib) = make_library((yyvsp[-1].str), check_library_attrs((yyvsp[-1].str), (yyvsp[-2].attr_list)));
-						  if (!parse_only) start_typelib((yyval.typelib));
-						}
-#line 2842 "parser.tab.c" /* yacc.c:1646  */
+#line 403 "parser.y" /* yacc.c:1646  */
+    { (yyval.str) = (yyvsp[0].str); }
+#line 2844 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 47:
-#line 409 "parser.y" /* yacc.c:1646  */
+#line 405 "parser.y" /* yacc.c:1646  */
+    { (yyval.typelib) = make_library((yyvsp[-1].str), check_library_attrs((yyvsp[-1].str), (yyvsp[-2].attr_list)));
+						  if (!parse_only) start_typelib((yyval.typelib));
+						}
+#line 2852 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 48:
+#line 410 "parser.y" /* yacc.c:1646  */
     { (yyval.typelib) = (yyvsp[-3].typelib);
 						  (yyval.typelib)->stmts = (yyvsp[-2].stmt_list);
 						  if (!parse_only) end_typelib();
 						}
-#line 2851 "parser.tab.c" /* yacc.c:1646  */
+#line 2861 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 48:
-#line 415 "parser.y" /* yacc.c:1646  */
+  case 49:
+#line 416 "parser.y" /* yacc.c:1646  */
     { (yyval.var_list) = NULL; }
-#line 2857 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 50:
-#line 419 "parser.y" /* yacc.c:1646  */
-    { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); }
-#line 2863 "parser.tab.c" /* yacc.c:1646  */
+#line 2867 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 51:
 #line 420 "parser.y" /* yacc.c:1646  */
-    { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) ); }
-#line 2869 "parser.tab.c" /* yacc.c:1646  */
+    { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); }
+#line 2873 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 53:
-#line 424 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), make_var(strdup("...")) ); }
-#line 2875 "parser.tab.c" /* yacc.c:1646  */
+  case 52:
+#line 421 "parser.y" /* yacc.c:1646  */
+    { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) ); }
+#line 2879 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 54:
-#line 428 "parser.y" /* yacc.c:1646  */
-    { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
-						    error_loc("invalid storage class for function parameter\n");
-						  (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
-						  free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
-						}
+#line 425 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), make_var(strdup("...")) ); }
 #line 2885 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 55:
-#line 433 "parser.y" /* yacc.c:1646  */
+#line 429 "parser.y" /* yacc.c:1646  */
     { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
 						    error_loc("invalid storage class for function parameter\n");
-						  (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
+						  (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
 						  free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
 						}
 #line 2895 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 56:
-#line 440 "parser.y" /* yacc.c:1646  */
+#line 434 "parser.y" /* yacc.c:1646  */
+    { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
+						    error_loc("invalid storage class for function parameter\n");
+						  (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
+						  free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
+						}
+#line 2905 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 57:
+#line 441 "parser.y" /* yacc.c:1646  */
     { (yyval.expr) = (yyvsp[-1].expr);
 						  if (!(yyval.expr)->is_const)
 						      error_loc("array dimension is not an integer constant\n");
 						}
-#line 2904 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 57:
-#line 444 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 2910 "parser.tab.c" /* yacc.c:1646  */
+#line 2914 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 58:
 #line 445 "parser.y" /* yacc.c:1646  */
     { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 2916 "parser.tab.c" /* yacc.c:1646  */
+#line 2920 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 59:
-#line 448 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = NULL; }
-#line 2922 "parser.tab.c" /* yacc.c:1646  */
+#line 446 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr(EXPR_VOID); }
+#line 2926 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 61:
-#line 453 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = (yyvsp[-1].attr_list); }
-#line 2928 "parser.tab.c" /* yacc.c:1646  */
+  case 60:
+#line 449 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr_list) = NULL; }
+#line 2932 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 62:
-#line 456 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = append_attr( NULL, (yyvsp[0].attr) ); }
-#line 2934 "parser.tab.c" /* yacc.c:1646  */
+#line 454 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr_list) = (yyvsp[-1].attr_list); }
+#line 2938 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 63:
 #line 457 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = append_attr( (yyvsp[-2].attr_list), (yyvsp[0].attr) ); }
-#line 2940 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr_list) = append_attr( NULL, (yyvsp[0].attr) ); }
+#line 2944 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 64:
 #line 458 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = append_attr( (yyvsp[-3].attr_list), (yyvsp[0].attr) ); }
-#line 2946 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr_list) = append_attr( (yyvsp[-2].attr_list), (yyvsp[0].attr) ); }
+#line 2950 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 65:
-#line 461 "parser.y" /* yacc.c:1646  */
-    { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); }
-#line 2952 "parser.tab.c" /* yacc.c:1646  */
+#line 459 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr_list) = append_attr( (yyvsp[-3].attr_list), (yyvsp[0].attr) ); }
+#line 2956 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 66:
 #line 462 "parser.y" /* yacc.c:1646  */
-    { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); }
-#line 2958 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); }
+#line 2962 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 67:
-#line 465 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = NULL; }
-#line 2964 "parser.tab.c" /* yacc.c:1646  */
+#line 463 "parser.y" /* yacc.c:1646  */
+    { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); }
+#line 2968 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 68:
 #line 466 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_AGGREGATABLE); }
-#line 2970 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = NULL; }
+#line 2974 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 69:
 #line 467 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_ANNOTATION, (yyvsp[-1].str)); }
-#line 2976 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_AGGREGATABLE); }
+#line 2980 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 70:
 #line 468 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_APPOBJECT); }
-#line 2982 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_ANNOTATION, (yyvsp[-1].str)); }
+#line 2986 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 71:
 #line 469 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_ASYNC); }
-#line 2988 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_APPOBJECT); }
+#line 2992 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 72:
 #line 470 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_AUTO_HANDLE); }
-#line 2994 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_ASYNC); }
+#line 2998 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 73:
 #line 471 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_BINDABLE); }
-#line 3000 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_AUTO_HANDLE); }
+#line 3004 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 74:
 #line 472 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_BROADCAST); }
-#line 3006 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_BINDABLE); }
+#line 3010 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 75:
 #line 473 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[-1].var)); }
-#line 3012 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_BROADCAST); }
+#line 3016 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 76:
 #line 474 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[-1].expr_list)); }
-#line 3018 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[-1].var)); }
+#line 3022 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 77:
 #line 475 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_CODE); }
-#line 3024 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[-1].expr_list)); }
+#line 3028 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 78:
 #line 476 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_COMMSTATUS); }
-#line 3030 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_CODE); }
+#line 3034 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 79:
 #line 477 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); }
-#line 3036 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_COMMSTATUS); }
+#line 3040 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 80:
 #line 478 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
-#line 3042 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); }
+#line 3046 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 81:
 #line 479 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
-#line 3048 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
+#line 3052 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 82:
 #line 480 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_CONTROL); }
-#line 3054 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
+#line 3058 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 83:
 #line 481 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DECODE); }
-#line 3060 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_CONTROL); }
+#line 3064 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 84:
 #line 482 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULT); }
-#line 3066 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_DECODE); }
+#line 3070 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 85:
 #line 483 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULTBIND); }
-#line 3072 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_DEFAULT); }
+#line 3076 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 86:
 #line 484 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULTCOLLELEM); }
-#line 3078 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_DEFAULTBIND); }
+#line 3082 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 87:
 #line 485 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE, (yyvsp[-1].expr)); }
-#line 3084 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_DEFAULTCOLLELEM); }
+#line 3088 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 88:
 #line 486 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULTVTABLE); }
-#line 3090 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE, (yyvsp[-1].expr)); }
+#line 3094 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 89:
 #line 487 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DISABLECONSISTENCYCHECK); }
-#line 3096 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_DEFAULTVTABLE); }
+#line 3100 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 90:
 #line 488 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DISPLAYBIND); }
-#line 3102 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_DISABLECONSISTENCYCHECK); }
+#line 3106 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 91:
 #line 489 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[-1].str)); }
-#line 3108 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_DISPLAYBIND); }
+#line 3112 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 92:
 #line 490 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DUAL); }
-#line 3114 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[-1].str)); }
+#line 3118 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 93:
 #line 491 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_ENABLEALLOCATE); }
-#line 3120 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_DUAL); }
+#line 3124 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 94:
 #line 492 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_ENCODE); }
-#line 3126 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_ENABLEALLOCATE); }
+#line 3130 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 95:
 #line 493 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[-1].str_list)); }
-#line 3132 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_ENCODE); }
+#line 3136 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 96:
 #line 494 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_ENTRY, (yyvsp[-1].expr)); }
-#line 3138 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[-1].str_list)); }
+#line 3142 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 97:
 #line 495 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
-#line 3144 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_ENTRY, (yyvsp[-1].expr)); }
+#line 3148 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 98:
 #line 496 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_FAULTSTATUS); }
-#line 3150 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
+#line 3154 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 99:
 #line 497 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_FORCEALLOCATE); }
-#line 3156 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_FAULTSTATUS); }
+#line 3160 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 100:
 #line 498 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_HANDLE); }
-#line 3162 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_FORCEALLOCATE); }
+#line 3166 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 101:
 #line 499 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[-1].expr)); }
-#line 3168 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_HANDLE); }
+#line 3172 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 102:
 #line 500 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[-1].str)); }
-#line 3174 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[-1].expr)); }
+#line 3178 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 103:
 #line 501 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[-1].str)); }
-#line 3180 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[-1].str)); }
+#line 3184 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 104:
 #line 502 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr)); }
-#line 3186 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[-1].str)); }
+#line 3190 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 105:
 #line 503 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[-1].str)); }
-#line 3192 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr)); }
+#line 3196 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 106:
 #line 504 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_HIDDEN); }
-#line 3198 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[-1].str)); }
+#line 3202 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 107:
 #line 505 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[-1].expr)); }
-#line 3204 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_HIDDEN); }
+#line 3208 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 108:
 #line 506 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_IDEMPOTENT); }
-#line 3210 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[-1].expr)); }
+#line 3214 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 109:
 #line 507 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_IGNORE); }
-#line 3216 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_IDEMPOTENT); }
+#line 3220 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 110:
 #line 508 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[-1].expr)); }
-#line 3222 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_IGNORE); }
+#line 3226 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 111:
 #line 509 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_IMMEDIATEBIND); }
-#line 3228 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[-1].expr)); }
+#line 3232 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 112:
 #line 510 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[-1].var)); }
-#line 3234 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_IMMEDIATEBIND); }
+#line 3238 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 113:
 #line 511 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_IN); }
-#line 3240 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[-1].var)); }
+#line 3244 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 114:
 #line 512 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_INPUTSYNC); }
-#line 3246 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_IN); }
+#line 3250 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 115:
 #line 513 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[-1].expr_list)); }
-#line 3252 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_INPUTSYNC); }
+#line 3256 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 116:
 #line 514 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_LIBLCID, (yyvsp[-1].expr)); }
-#line 3258 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[-1].expr_list)); }
+#line 3262 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 117:
 #line 515 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PARAMLCID); }
-#line 3264 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_LIBLCID, (yyvsp[-1].expr)); }
+#line 3268 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 118:
 #line 516 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_LICENSED); }
-#line 3270 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_PARAMLCID); }
+#line 3274 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 119:
 #line 517 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_LOCAL); }
-#line 3276 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_LICENSED); }
+#line 3280 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 120:
 #line 518 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_MAYBE); }
-#line 3282 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_LOCAL); }
+#line 3286 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 121:
 #line 519 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_MESSAGE); }
-#line 3288 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_MAYBE); }
+#line 3292 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 122:
 #line 520 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NOCODE); }
-#line 3294 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_MESSAGE); }
+#line 3298 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 123:
 #line 521 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NONBROWSABLE); }
-#line 3300 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_NOCODE); }
+#line 3304 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 124:
 #line 522 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NONCREATABLE); }
-#line 3306 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_NONBROWSABLE); }
+#line 3310 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 125:
 #line 523 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NONEXTENSIBLE); }
-#line 3312 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_NONCREATABLE); }
+#line 3316 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 126:
 #line 524 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NOTIFY); }
-#line 3318 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_NONEXTENSIBLE); }
+#line 3322 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 127:
 #line 525 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NOTIFYFLAG); }
-#line 3324 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_NOTIFY); }
+#line 3328 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 128:
 #line 526 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_OBJECT); }
-#line 3330 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_NOTIFYFLAG); }
+#line 3334 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 129:
 #line 527 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_ODL); }
-#line 3336 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_OBJECT); }
+#line 3340 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 130:
 #line 528 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_OLEAUTOMATION); }
-#line 3342 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_ODL); }
+#line 3346 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 131:
 #line 529 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_OPTIMIZE, (yyvsp[-1].str)); }
-#line 3348 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_OLEAUTOMATION); }
+#line 3352 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 132:
 #line 530 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_OPTIONAL); }
-#line 3354 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_OPTIMIZE, (yyvsp[-1].str)); }
+#line 3358 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 133:
 #line 531 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_OUT); }
-#line 3360 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_OPTIONAL); }
+#line 3364 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 134:
 #line 532 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PARTIALIGNORE); }
-#line 3366 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_OUT); }
+#line 3370 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 135:
 #line 533 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[-1].num)); }
-#line 3372 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_PARTIALIGNORE); }
+#line 3376 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 136:
 #line 534 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_PROGID, (yyvsp[-1].str)); }
-#line 3378 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[-1].num)); }
+#line 3382 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 137:
 #line 535 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PROPGET); }
-#line 3384 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_PROGID, (yyvsp[-1].str)); }
+#line 3388 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 138:
 #line 536 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PROPPUT); }
-#line 3390 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_PROPGET); }
+#line 3394 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 139:
 #line 537 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PROPPUTREF); }
-#line 3396 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_PROPPUT); }
+#line 3400 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 140:
 #line 538 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PROXY); }
-#line 3402 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_PROPPUTREF); }
+#line 3406 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 141:
 #line 539 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PUBLIC); }
-#line 3408 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_PROXY); }
+#line 3412 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 142:
-#line 541 "parser.y" /* yacc.c:1646  */
-    { expr_list_t *list = append_expr( NULL, (yyvsp[-3].expr) );
-						  list = append_expr( list, (yyvsp[-1].expr) );
-						  (yyval.attr) = make_attrp(ATTR_RANGE, list); }
-#line 3416 "parser.tab.c" /* yacc.c:1646  */
+#line 540 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_PUBLIC); }
+#line 3418 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 143:
-#line 544 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_READONLY); }
-#line 3422 "parser.tab.c" /* yacc.c:1646  */
+#line 542 "parser.y" /* yacc.c:1646  */
+    { expr_list_t *list = append_expr( NULL, (yyvsp[-3].expr) );
+						  list = append_expr( list, (yyvsp[-1].expr) );
+						  (yyval.attr) = make_attrp(ATTR_RANGE, list); }
+#line 3426 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 144:
 #line 545 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_REPRESENTAS, (yyvsp[-1].type)); }
-#line 3428 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_READONLY); }
+#line 3432 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 145:
 #line 546 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_REQUESTEDIT); }
-#line 3434 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_REPRESENTAS, (yyvsp[-1].type)); }
+#line 3438 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 146:
 #line 547 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_RESTRICTED); }
-#line 3440 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_REQUESTEDIT); }
+#line 3444 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 147:
 #line 548 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_RETVAL); }
-#line 3446 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_RESTRICTED); }
+#line 3450 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 148:
 #line 549 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[-1].expr_list)); }
-#line 3452 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_RETVAL); }
+#line 3456 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 149:
 #line 550 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_SOURCE); }
-#line 3458 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[-1].expr_list)); }
+#line 3462 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 150:
 #line 551 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_STRICTCONTEXTHANDLE); }
-#line 3464 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_SOURCE); }
+#line 3468 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 151:
 #line 552 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_STRING); }
-#line 3470 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_STRICTCONTEXTHANDLE); }
+#line 3474 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 152:
 #line 553 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[-1].expr)); }
-#line 3476 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_STRING); }
+#line 3480 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 153:
 #line 554 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[-1].type)); }
-#line 3482 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[-1].expr)); }
+#line 3486 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 154:
 #line 555 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[-1].type)); }
-#line 3488 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[-1].type)); }
+#line 3492 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 155:
 #line 556 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_THREADING, (yyvsp[-1].num)); }
-#line 3494 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[-1].type)); }
+#line 3498 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 156:
 #line 557 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_UIDEFAULT); }
-#line 3500 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrv(ATTR_THREADING, (yyvsp[-1].num)); }
+#line 3504 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 157:
 #line 558 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_USESGETLASTERROR); }
-#line 3506 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_UIDEFAULT); }
+#line 3510 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 158:
 #line 559 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_USERMARSHAL, (yyvsp[-1].type)); }
-#line 3512 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_USESGETLASTERROR); }
+#line 3516 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 159:
 #line 560 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[-1].uuid)); }
-#line 3518 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_USERMARSHAL, (yyvsp[-1].type)); }
+#line 3522 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 160:
 #line 561 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_ASYNCUUID, (yyvsp[-1].uuid)); }
-#line 3524 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[-1].uuid)); }
+#line 3528 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 161:
 #line 562 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_V1ENUM); }
-#line 3530 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_ASYNCUUID, (yyvsp[-1].uuid)); }
+#line 3534 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 162:
 #line 563 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_VARARG); }
-#line 3536 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_V1ENUM); }
+#line 3540 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 163:
 #line 564 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[-1].num)); }
-#line 3542 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_VARARG); }
+#line 3546 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 164:
 #line 565 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_VIPROGID, (yyvsp[-1].str)); }
-#line 3548 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[-1].num)); }
+#line 3552 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 165:
 #line 566 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[-1].type)); }
-#line 3554 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_VIPROGID, (yyvsp[-1].str)); }
+#line 3558 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 166:
 #line 567 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[0].num)); }
-#line 3560 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[-1].type)); }
+#line 3564 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 168:
-#line 572 "parser.y" /* yacc.c:1646  */
-    { if (!is_valid_uuid((yyvsp[0].str)))
-						    error_loc("invalid UUID: %s\n", (yyvsp[0].str));
-						  (yyval.uuid) = parse_uuid((yyvsp[0].str)); }
-#line 3568 "parser.tab.c" /* yacc.c:1646  */
+  case 167:
+#line 568 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[0].num)); }
+#line 3570 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 169:
-#line 577 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = xstrdup("__cdecl"); }
-#line 3574 "parser.tab.c" /* yacc.c:1646  */
+#line 573 "parser.y" /* yacc.c:1646  */
+    { if (!is_valid_uuid((yyvsp[0].str)))
+						    error_loc("invalid UUID: %s\n", (yyvsp[0].str));
+						  (yyval.uuid) = parse_uuid((yyvsp[0].str)); }
+#line 3578 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 170:
 #line 578 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = xstrdup("__fastcall"); }
-#line 3580 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.str) = xstrdup("__cdecl"); }
+#line 3584 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 171:
 #line 579 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = xstrdup("__pascal"); }
-#line 3586 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.str) = xstrdup("__fastcall"); }
+#line 3590 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 172:
 #line 580 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = xstrdup("__stdcall"); }
-#line 3592 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.str) = xstrdup("__pascal"); }
+#line 3596 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 173:
-#line 583 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 3598 "parser.tab.c" /* yacc.c:1646  */
+#line 581 "parser.y" /* yacc.c:1646  */
+    { (yyval.str) = xstrdup("__stdcall"); }
+#line 3602 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 174:
 #line 584 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
-#line 3604 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.var_list) = NULL; }
+#line 3608 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 175:
-#line 587 "parser.y" /* yacc.c:1646  */
+#line 585 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
+#line 3614 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 176:
+#line 588 "parser.y" /* yacc.c:1646  */
     { attr_t *a = make_attrp(ATTR_CASE, append_expr( NULL, (yyvsp[-2].expr) ));
 						  (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
 						  (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
 						}
-#line 3613 "parser.tab.c" /* yacc.c:1646  */
+#line 3623 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 591 "parser.y" /* yacc.c:1646  */
+  case 177:
+#line 592 "parser.y" /* yacc.c:1646  */
     { attr_t *a = make_attr(ATTR_DEFAULT);
 						  (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
 						  (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
 						}
-#line 3622 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 177:
-#line 597 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 3628 "parser.tab.c" /* yacc.c:1646  */
+#line 3632 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 178:
 #line 598 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = (yyvsp[-1].var_list); }
-#line 3634 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.var_list) = NULL; }
+#line 3638 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 180:
-#line 602 "parser.y" /* yacc.c:1646  */
+  case 179:
+#line 599 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = (yyvsp[-1].var_list); }
+#line 3644 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 181:
+#line 603 "parser.y" /* yacc.c:1646  */
     { if (!(yyvsp[0].var)->eval)
 						    (yyvsp[0].var)->eval = make_exprl(EXPR_NUM, 0 /* default for first enum entry */);
                                                   (yyval.var_list) = append_var( NULL, (yyvsp[0].var) );
 						}
-#line 3643 "parser.tab.c" /* yacc.c:1646  */
+#line 3653 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 181:
-#line 606 "parser.y" /* yacc.c:1646  */
+  case 182:
+#line 607 "parser.y" /* yacc.c:1646  */
     { if (!(yyvsp[0].var)->eval)
                                                   {
                                                     var_t *last = LIST_ENTRY( list_tail((yyval.var_list)), var_t, entry );
@@ -3654,650 +3664,650 @@
                                                   }
                                                   (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) );
 						}
-#line 3658 "parser.tab.c" /* yacc.c:1646  */
+#line 3668 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 618 "parser.y" /* yacc.c:1646  */
+  case 183:
+#line 619 "parser.y" /* yacc.c:1646  */
     { (yyval.var) = reg_const((yyvsp[-2].var));
 						  (yyval.var)->eval = (yyvsp[0].expr);
                                                   (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
 						}
-#line 3667 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 183:
-#line 622 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = reg_const((yyvsp[0].var));
-                                                  (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
-						}
-#line 3675 "parser.tab.c" /* yacc.c:1646  */
+#line 3677 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 184:
-#line 627 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_enum((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
-#line 3681 "parser.tab.c" /* yacc.c:1646  */
+#line 623 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = reg_const((yyvsp[0].var));
+                                                  (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
+						}
+#line 3685 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 185:
-#line 630 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
-#line 3687 "parser.tab.c" /* yacc.c:1646  */
+#line 628 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_enum((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
+#line 3691 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 186:
 #line 631 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
-#line 3693 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
+#line 3697 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 187:
-#line 634 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 3699 "parser.tab.c" /* yacc.c:1646  */
+#line 632 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
+#line 3703 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 638 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); }
-#line 3705 "parser.tab.c" /* yacc.c:1646  */
+  case 188:
+#line 635 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr(EXPR_VOID); }
+#line 3709 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 190:
 #line 639 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); }
-#line 3711 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); }
+#line 3715 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 191:
 #line 640 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); }
-#line 3717 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); }
+#line 3721 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 192:
 #line 641 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); }
-#line 3723 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); }
+#line 3727 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 193:
 #line 642 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprl(EXPR_NUM, 0); }
-#line 3729 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); }
+#line 3733 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 194:
 #line 643 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); }
-#line 3735 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprl(EXPR_NUM, 0); }
+#line 3739 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 195:
 #line 644 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[0].str)); }
-#line 3741 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); }
+#line 3745 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 196:
 #line 645 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[0].str)); }
-#line 3747 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[0].str)); }
+#line 3751 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 197:
 #line 646 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[0].str)); }
-#line 3753 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[0].str)); }
+#line 3757 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 198:
 #line 647 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); }
-#line 3759 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[0].str)); }
+#line 3763 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 199:
 #line 648 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3765 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); }
+#line 3769 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 200:
 #line 649 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3771 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3775 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 201:
 #line 650 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3777 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3781 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 202:
 #line 651 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3783 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3787 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 203:
 #line 652 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3789 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3793 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 204:
 #line 653 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3795 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3799 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 205:
 #line 654 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3801 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3805 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 206:
 #line 655 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3807 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3811 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 207:
 #line 656 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3813 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3817 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 208:
 #line 657 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3819 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3823 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 209:
 #line 658 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3825 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3829 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 210:
 #line 659 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3831 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3835 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 211:
 #line 660 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3837 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3841 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 212:
 #line 661 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3843 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3847 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 213:
 #line 662 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3849 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3853 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 214:
 #line 663 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3855 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3859 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 215:
 #line 664 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3861 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3865 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 216:
 #line 665 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3867 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3871 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 217:
 #line 666 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3873 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3877 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 218:
 #line 667 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[0].expr)); }
-#line 3879 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3883 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 219:
 #line 668 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); }
-#line 3885 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[0].expr)); }
+#line 3889 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 220:
 #line 669 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[0].expr)); }
-#line 3891 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); }
+#line 3895 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 221:
 #line 670 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); }
-#line 3897 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[0].expr)); }
+#line 3901 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 222:
 #line 671 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); }
-#line 3903 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); }
+#line 3907 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 223:
 #line 672 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); }
-#line 3909 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); }
+#line 3913 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 224:
 #line 673 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[-2].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
-#line 3915 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); }
+#line 3919 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 225:
 #line 674 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[-2].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
-#line 3921 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[-2].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
+#line 3925 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 226:
-#line 676 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[-3].declspec), (yyvsp[-2].declarator), 0), (yyvsp[0].expr)); free((yyvsp[-3].declspec)); free((yyvsp[-2].declarator)); }
-#line 3927 "parser.tab.c" /* yacc.c:1646  */
+#line 675 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[-2].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
+#line 3931 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 227:
-#line 678 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[-2].declspec), (yyvsp[-1].declarator), 0), NULL); free((yyvsp[-2].declspec)); free((yyvsp[-1].declarator)); }
-#line 3933 "parser.tab.c" /* yacc.c:1646  */
+#line 677 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[-3].declspec), (yyvsp[-2].declarator), 0), (yyvsp[0].expr)); free((yyvsp[-3].declspec)); free((yyvsp[-2].declarator)); }
+#line 3937 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 228:
 #line 679 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[-3].expr), (yyvsp[-1].expr)); }
-#line 3939 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[-2].declspec), (yyvsp[-1].declarator), 0), NULL); free((yyvsp[-2].declspec)); free((yyvsp[-1].declarator)); }
+#line 3943 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 229:
 #line 680 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = (yyvsp[-1].expr); }
-#line 3945 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[-3].expr), (yyvsp[-1].expr)); }
+#line 3949 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 230:
-#line 683 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
-#line 3951 "parser.tab.c" /* yacc.c:1646  */
+#line 681 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = (yyvsp[-1].expr); }
+#line 3955 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 231:
 #line 684 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
-#line 3957 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
+#line 3961 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 232:
-#line 687 "parser.y" /* yacc.c:1646  */
+#line 685 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
+#line 3967 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 233:
+#line 688 "parser.y" /* yacc.c:1646  */
     { (yyval.expr) = (yyvsp[0].expr);
 						  if (!(yyval.expr)->is_const)
 						      error_loc("expression is not an integer constant\n");
 						}
-#line 3966 "parser.tab.c" /* yacc.c:1646  */
+#line 3976 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 233:
-#line 693 "parser.y" /* yacc.c:1646  */
+  case 234:
+#line 694 "parser.y" /* yacc.c:1646  */
     { (yyval.expr) = (yyvsp[0].expr);
 						  if (!(yyval.expr)->is_const && (yyval.expr)->type != EXPR_STRLIT && (yyval.expr)->type != EXPR_WSTRLIT)
 						      error_loc("expression is not constant\n");
 						}
-#line 3975 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 234:
-#line 699 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 3981 "parser.tab.c" /* yacc.c:1646  */
+#line 3985 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 235:
 #line 700 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var_list((yyvsp[-1].var_list), (yyvsp[0].var_list)); }
-#line 3987 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.var_list) = NULL; }
+#line 3991 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 236:
-#line 704 "parser.y" /* yacc.c:1646  */
+#line 701 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var_list((yyvsp[-1].var_list), (yyvsp[0].var_list)); }
+#line 3997 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 237:
+#line 705 "parser.y" /* yacc.c:1646  */
     { const char *first = LIST_ENTRY(list_head((yyvsp[-1].declarator_list)), declarator_t, entry)->var->name;
 						  check_field_attrs(first, (yyvsp[-3].attr_list));
 						  (yyval.var_list) = set_var_types((yyvsp[-3].attr_list), (yyvsp[-2].declspec), (yyvsp[-1].declarator_list));
 						}
-#line 3996 "parser.tab.c" /* yacc.c:1646  */
+#line 4006 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 237:
-#line 708 "parser.y" /* yacc.c:1646  */
+  case 238:
+#line 709 "parser.y" /* yacc.c:1646  */
     { var_t *v = make_var(NULL);
 						  v->type = (yyvsp[-1].type); v->attrs = (yyvsp[-2].attr_list);
 						  (yyval.var_list) = append_var(NULL, v);
 						}
-#line 4005 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 238:
-#line 715 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = (yyvsp[-1].var); }
-#line 4011 "parser.tab.c" /* yacc.c:1646  */
+#line 4015 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 239:
 #line 716 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[-1].attr_list); }
-#line 4017 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.var) = (yyvsp[-1].var); }
+#line 4021 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 240:
-#line 719 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 4023 "parser.tab.c" /* yacc.c:1646  */
+#line 717 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[-1].attr_list); }
+#line 4027 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 241:
 #line 720 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
-#line 4029 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.var_list) = NULL; }
+#line 4033 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 242:
-#line 724 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = (yyvsp[-1].var); }
-#line 4035 "parser.tab.c" /* yacc.c:1646  */
+#line 721 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
+#line 4039 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 243:
 #line 725 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = NULL; }
-#line 4041 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.var) = (yyvsp[-1].var); }
+#line 4045 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 244:
-#line 728 "parser.y" /* yacc.c:1646  */
+#line 726 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = NULL; }
+#line 4051 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 245:
+#line 729 "parser.y" /* yacc.c:1646  */
     { (yyval.var) = declare_var(check_field_attrs((yyvsp[0].declarator)->var->name, (yyvsp[-2].attr_list)),
 						                (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
 						  free((yyvsp[0].declarator));
 						}
-#line 4050 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 245:
-#line 732 "parser.y" /* yacc.c:1646  */
-    { var_t *v = make_var(NULL);
-						  v->type = (yyvsp[0].type); v->attrs = (yyvsp[-1].attr_list);
-						  (yyval.var) = v;
-						}
-#line 4059 "parser.tab.c" /* yacc.c:1646  */
+#line 4060 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 246:
-#line 738 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = (yyvsp[0].var);
-						  if (type_get_type((yyval.var)->type) != TYPE_FUNCTION)
-						    error_loc("only methods may be declared inside the methods section of a dispinterface\n");
-						  check_function_attrs((yyval.var)->name, (yyval.var)->attrs);
+#line 733 "parser.y" /* yacc.c:1646  */
+    { var_t *v = make_var(NULL);
+						  v->type = (yyvsp[0].type); v->attrs = (yyvsp[-1].attr_list);
+						  (yyval.var) = v;
 						}
 #line 4069 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 247:
-#line 747 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
-						  free((yyvsp[0].declarator));
+#line 739 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = (yyvsp[0].var);
+						  if (type_get_type((yyval.var)->type) != TYPE_FUNCTION)
+						    error_loc("only methods may be declared inside the methods section of a dispinterface\n");
+						  check_function_attrs((yyval.var)->name, (yyval.var)->attrs);
 						}
-#line 4077 "parser.tab.c" /* yacc.c:1646  */
+#line 4079 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 248:
-#line 750 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
+#line 748 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
 						  free((yyvsp[0].declarator));
 						}
-#line 4085 "parser.tab.c" /* yacc.c:1646  */
+#line 4087 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 249:
-#line 755 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = NULL; }
-#line 4091 "parser.tab.c" /* yacc.c:1646  */
+#line 751 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
+						  free((yyvsp[0].declarator));
+						}
+#line 4095 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 759 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = NULL; }
-#line 4097 "parser.tab.c" /* yacc.c:1646  */
+  case 250:
+#line 756 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = NULL; }
+#line 4101 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 252:
 #line 760 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[0].str); }
-#line 4103 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.str) = NULL; }
+#line 4107 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 253:
 #line 761 "parser.y" /* yacc.c:1646  */
     { (yyval.str) = (yyvsp[0].str); }
-#line 4109 "parser.tab.c" /* yacc.c:1646  */
+#line 4113 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 254:
-#line 764 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = make_var((yyvsp[0].str)); }
-#line 4115 "parser.tab.c" /* yacc.c:1646  */
+#line 762 "parser.y" /* yacc.c:1646  */
+    { (yyval.str) = (yyvsp[0].str); }
+#line 4119 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 255:
-#line 766 "parser.y" /* yacc.c:1646  */
+#line 765 "parser.y" /* yacc.c:1646  */
     { (yyval.var) = make_var((yyvsp[0].str)); }
-#line 4121 "parser.tab.c" /* yacc.c:1646  */
+#line 4125 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 256:
-#line 769 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4127 "parser.tab.c" /* yacc.c:1646  */
+#line 767 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = make_var((yyvsp[0].str)); }
+#line 4131 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 257:
 #line 770 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4133 "parser.tab.c" /* yacc.c:1646  */
+#line 4137 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 772 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), -1); }
-#line 4139 "parser.tab.c" /* yacc.c:1646  */
+  case 258:
+#line 771 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4143 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 260:
 #line 773 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), 1); }
-#line 4145 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), -1); }
+#line 4149 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 261:
 #line 774 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); }
-#line 4151 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), 1); }
+#line 4155 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 262:
 #line 775 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4157 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); }
+#line 4161 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 263:
 #line 776 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4163 "parser.tab.c" /* yacc.c:1646  */
+#line 4167 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 264:
 #line 777 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4169 "parser.tab.c" /* yacc.c:1646  */
+#line 4173 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 265:
 #line 778 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4175 "parser.tab.c" /* yacc.c:1646  */
+#line 4179 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 266:
 #line 779 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4181 "parser.tab.c" /* yacc.c:1646  */
+#line 4185 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 786 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); }
-#line 4187 "parser.tab.c" /* yacc.c:1646  */
+  case 267:
+#line 780 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4191 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 270:
 #line 787 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); }
-#line 4193 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); }
+#line 4197 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 271:
 #line 788 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); }
-#line 4199 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); }
+#line 4203 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 272:
 #line 789 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); }
-#line 4205 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); }
+#line 4209 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 273:
 #line 790 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); }
-#line 4211 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); }
+#line 4215 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 274:
 #line 791 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); }
-#line 4217 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); }
+#line 4221 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 275:
 #line 792 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); }
-#line 4223 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); }
+#line 4227 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 276:
 #line 793 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); }
-#line 4229 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); }
+#line 4233 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 277:
-#line 796 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_coclass((yyvsp[0].str)); }
-#line 4235 "parser.tab.c" /* yacc.c:1646  */
+#line 794 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); }
+#line 4239 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 278:
 #line 797 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_coclass((yyvsp[0].str)); }
+#line 4245 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 279:
+#line 798 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = find_type((yyvsp[0].str), 0);
 						  if (type_get_type_detect_alias((yyval.type)) != TYPE_COCLASS)
 						    error_loc("%s was not declared a coclass at %s:%d\n",
 							      (yyvsp[0].str), (yyval.type)->loc_info.input_name,
 							      (yyval.type)->loc_info.line_number);
 						}
-#line 4246 "parser.tab.c" /* yacc.c:1646  */
+#line 4256 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 279:
-#line 805 "parser.y" /* yacc.c:1646  */
+  case 280:
+#line 806 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = (yyvsp[0].type);
 						  check_def((yyval.type));
 						  (yyval.type)->attrs = check_coclass_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
 						}
-#line 4255 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 280:
-#line 812 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_coclass_define((yyvsp[-4].type), (yyvsp[-2].ifref_list)); }
-#line 4261 "parser.tab.c" /* yacc.c:1646  */
+#line 4265 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 281:
-#line 815 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = NULL; }
-#line 4267 "parser.tab.c" /* yacc.c:1646  */
+#line 813 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_coclass_define((yyvsp[-4].type), (yyvsp[-2].ifref_list)); }
+#line 4271 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 282:
-#line 818 "parser.y" /* yacc.c:1646  */
-    { (yyval.ifref_list) = NULL; }
-#line 4273 "parser.tab.c" /* yacc.c:1646  */
+#line 816 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = NULL; }
+#line 4277 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 283:
 #line 819 "parser.y" /* yacc.c:1646  */
-    { (yyval.ifref_list) = append_ifref( (yyvsp[-1].ifref_list), (yyvsp[0].ifref) ); }
-#line 4279 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.ifref_list) = NULL; }
+#line 4283 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 284:
-#line 823 "parser.y" /* yacc.c:1646  */
-    { (yyval.ifref) = make_ifref((yyvsp[0].type)); (yyval.ifref)->attrs = (yyvsp[-1].attr_list); }
-#line 4285 "parser.tab.c" /* yacc.c:1646  */
+#line 820 "parser.y" /* yacc.c:1646  */
+    { (yyval.ifref_list) = append_ifref( (yyvsp[-1].ifref_list), (yyvsp[0].ifref) ); }
+#line 4289 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 285:
-#line 826 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), 0); }
-#line 4291 "parser.tab.c" /* yacc.c:1646  */
+#line 824 "parser.y" /* yacc.c:1646  */
+    { (yyval.ifref) = make_ifref((yyvsp[0].type)); (yyval.ifref)->attrs = (yyvsp[-1].attr_list); }
+#line 4295 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 286:
 #line 827 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), 0); }
-#line 4297 "parser.tab.c" /* yacc.c:1646  */
+#line 4301 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 287:
-#line 830 "parser.y" /* yacc.c:1646  */
+#line 828 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), 0); }
+#line 4307 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 288:
+#line 831 "parser.y" /* yacc.c:1646  */
     { attr_t *attrs;
 						  (yyval.type) = (yyvsp[0].type);
 						  check_def((yyval.type));
@@ -4305,75 +4315,75 @@
 						  (yyval.type)->attrs = append_attr( check_dispiface_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list)), attrs );
 						  (yyval.type)->defined = TRUE;
 						}
-#line 4309 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 288:
-#line 839 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 4315 "parser.tab.c" /* yacc.c:1646  */
+#line 4319 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 289:
 #line 840 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
-#line 4321 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.var_list) = NULL; }
+#line 4325 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 290:
-#line 843 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 4327 "parser.tab.c" /* yacc.c:1646  */
+#line 841 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
+#line 4331 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 291:
 #line 844 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
-#line 4333 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.var_list) = NULL; }
+#line 4337 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 292:
-#line 850 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[-4].type);
-						  type_dispinterface_define((yyval.type), (yyvsp[-2].var_list), (yyvsp[-1].var_list));
-						}
-#line 4341 "parser.tab.c" /* yacc.c:1646  */
+#line 845 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
+#line 4343 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 293:
-#line 854 "parser.y" /* yacc.c:1646  */
+#line 851 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = (yyvsp[-4].type);
-						  type_dispinterface_define_from_iface((yyval.type), (yyvsp[-2].type));
+						  type_dispinterface_define((yyval.type), (yyvsp[-2].var_list), (yyvsp[-1].var_list));
 						}
-#line 4349 "parser.tab.c" /* yacc.c:1646  */
+#line 4351 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 294:
-#line 859 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = NULL; }
-#line 4355 "parser.tab.c" /* yacc.c:1646  */
+#line 855 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[-4].type);
+						  type_dispinterface_define_from_iface((yyval.type), (yyvsp[-2].type));
+						}
+#line 4359 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 295:
 #line 860 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error2((yyvsp[0].str), 0); }
-#line 4361 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = NULL; }
+#line 4365 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 296:
-#line 863 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), 0); }
-#line 4367 "parser.tab.c" /* yacc.c:1646  */
+#line 861 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error2((yyvsp[0].str), 0); }
+#line 4371 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 297:
 #line 864 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), 0); }
-#line 4373 "parser.tab.c" /* yacc.c:1646  */
+#line 4377 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 298:
-#line 867 "parser.y" /* yacc.c:1646  */
+#line 865 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), 0); }
+#line 4383 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 299:
+#line 868 "parser.y" /* yacc.c:1646  */
     { (yyval.ifinfo).interface = (yyvsp[0].type);
 						  (yyval.ifinfo).old_pointer_default = pointer_default;
 						  if (is_attr((yyvsp[-1].attr_list), ATTR_POINTERDEFAULT))
@@ -4382,545 +4392,545 @@
 						  (yyvsp[0].type)->attrs = check_iface_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
 						  (yyvsp[0].type)->defined = TRUE;
 						}
-#line 4386 "parser.tab.c" /* yacc.c:1646  */
+#line 4396 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 299:
-#line 878 "parser.y" /* yacc.c:1646  */
+  case 300:
+#line 879 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = (yyvsp[-5].ifinfo).interface;
 						  if((yyval.type) == (yyvsp[-4].type))
 						    error_loc("Interface can't inherit from itself\n");
 						  type_interface_define((yyval.type), (yyvsp[-4].type), (yyvsp[-2].stmt_list));
 						  pointer_default = (yyvsp[-5].ifinfo).old_pointer_default;
 						}
-#line 4397 "parser.tab.c" /* yacc.c:1646  */
+#line 4407 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 300:
-#line 888 "parser.y" /* yacc.c:1646  */
+  case 301:
+#line 889 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = (yyvsp[-7].ifinfo).interface;
 						  type_interface_define((yyval.type), find_type_or_error2((yyvsp[-5].str), 0), (yyvsp[-2].stmt_list));
 						  pointer_default = (yyvsp[-7].ifinfo).old_pointer_default;
 						}
-#line 4406 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 301:
-#line 892 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[-1].type); }
-#line 4412 "parser.tab.c" /* yacc.c:1646  */
+#line 4416 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 302:
-#line 896 "parser.y" /* yacc.c:1646  */
+#line 893 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = (yyvsp[-1].type); }
-#line 4418 "parser.tab.c" /* yacc.c:1646  */
+#line 4422 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 303:
 #line 897 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = (yyvsp[-1].type); }
-#line 4424 "parser.tab.c" /* yacc.c:1646  */
+#line 4428 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 304:
-#line 900 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_module((yyvsp[0].str)); }
-#line 4430 "parser.tab.c" /* yacc.c:1646  */
+#line 898 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[-1].type); }
+#line 4434 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 305:
 #line 901 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_module((yyvsp[0].str)); }
-#line 4436 "parser.tab.c" /* yacc.c:1646  */
+#line 4440 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 306:
-#line 904 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type);
-						  (yyval.type)->attrs = check_module_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
-						}
-#line 4444 "parser.tab.c" /* yacc.c:1646  */
+#line 902 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_module((yyvsp[0].str)); }
+#line 4446 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 307:
-#line 910 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[-4].type);
-                                                  type_module_define((yyval.type), (yyvsp[-2].stmt_list));
+#line 905 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type);
+						  (yyval.type)->attrs = check_module_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
 						}
-#line 4452 "parser.tab.c" /* yacc.c:1646  */
+#line 4454 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 308:
-#line 916 "parser.y" /* yacc.c:1646  */
-    { (yyval.stgclass) = STG_EXTERN; }
-#line 4458 "parser.tab.c" /* yacc.c:1646  */
+#line 911 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[-4].type);
+                                                  type_module_define((yyval.type), (yyvsp[-2].stmt_list));
+						}
+#line 4462 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 309:
 #line 917 "parser.y" /* yacc.c:1646  */
-    { (yyval.stgclass) = STG_STATIC; }
-#line 4464 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.stgclass) = STG_EXTERN; }
+#line 4468 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 310:
 #line 918 "parser.y" /* yacc.c:1646  */
-    { (yyval.stgclass) = STG_REGISTER; }
-#line 4470 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.stgclass) = STG_STATIC; }
+#line 4474 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 311:
-#line 922 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_INLINE); }
-#line 4476 "parser.tab.c" /* yacc.c:1646  */
+#line 919 "parser.y" /* yacc.c:1646  */
+    { (yyval.stgclass) = STG_REGISTER; }
+#line 4480 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 312:
-#line 926 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_CONST); }
-#line 4482 "parser.tab.c" /* yacc.c:1646  */
+#line 923 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_INLINE); }
+#line 4486 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 313:
-#line 929 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = NULL; }
-#line 4488 "parser.tab.c" /* yacc.c:1646  */
+#line 927 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attr(ATTR_CONST); }
+#line 4492 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 314:
 #line 930 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = append_attr((yyvsp[-1].attr_list), (yyvsp[0].attr)); }
-#line 4494 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.attr_list) = NULL; }
+#line 4498 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 315:
-#line 933 "parser.y" /* yacc.c:1646  */
-    { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, NULL, STG_NONE); }
-#line 4500 "parser.tab.c" /* yacc.c:1646  */
+#line 931 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr_list) = append_attr((yyvsp[-1].attr_list), (yyvsp[0].attr)); }
+#line 4504 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 316:
-#line 935 "parser.y" /* yacc.c:1646  */
-    { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), NULL, STG_NONE); }
-#line 4506 "parser.tab.c" /* yacc.c:1646  */
+#line 934 "parser.y" /* yacc.c:1646  */
+    { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, NULL, STG_NONE); }
+#line 4510 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 317:
-#line 938 "parser.y" /* yacc.c:1646  */
-    { (yyval.declspec) = NULL; }
-#line 4512 "parser.tab.c" /* yacc.c:1646  */
+#line 936 "parser.y" /* yacc.c:1646  */
+    { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), NULL, STG_NONE); }
+#line 4516 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 319:
-#line 943 "parser.y" /* yacc.c:1646  */
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].attr), STG_NONE); }
-#line 4518 "parser.tab.c" /* yacc.c:1646  */
+  case 318:
+#line 939 "parser.y" /* yacc.c:1646  */
+    { (yyval.declspec) = NULL; }
+#line 4522 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 320:
 #line 944 "parser.y" /* yacc.c:1646  */
     { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].attr), STG_NONE); }
-#line 4524 "parser.tab.c" /* yacc.c:1646  */
+#line 4528 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 321:
 #line 945 "parser.y" /* yacc.c:1646  */
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, NULL, (yyvsp[-1].stgclass)); }
-#line 4530 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].attr), STG_NONE); }
+#line 4534 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 322:
-#line 950 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4536 "parser.tab.c" /* yacc.c:1646  */
+#line 946 "parser.y" /* yacc.c:1646  */
+    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, NULL, (yyvsp[-1].stgclass)); }
+#line 4540 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 323:
 #line 951 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
-						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4543 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4546 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 325:
-#line 957 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
-#line 4549 "parser.tab.c" /* yacc.c:1646  */
+  case 324:
+#line 952 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
+						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
+#line 4553 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 326:
 #line 958 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4555 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
+#line 4559 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 327:
 #line 959 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
-#line 4561 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4565 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 328:
 #line 960 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
+#line 4571 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 329:
+#line 961 "parser.y" /* yacc.c:1646  */
     { (yyval.declarator) = (yyvsp[-3].declarator);
 						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
 						  (yyval.declarator)->type = NULL;
 						}
-#line 4570 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 329:
-#line 969 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4576 "parser.tab.c" /* yacc.c:1646  */
+#line 4580 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 330:
 #line 970 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
-						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4583 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4586 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 332:
-#line 978 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4589 "parser.tab.c" /* yacc.c:1646  */
+  case 331:
+#line 971 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
+						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
+#line 4593 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 333:
 #line 979 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
-						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4596 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4599 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 334:
-#line 984 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator(NULL); }
-#line 4602 "parser.tab.c" /* yacc.c:1646  */
+#line 980 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
+						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
+#line 4606 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 336:
-#line 990 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4608 "parser.tab.c" /* yacc.c:1646  */
+  case 335:
+#line 985 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = make_declarator(NULL); }
+#line 4612 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 337:
 #line 991 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
-#line 4614 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4618 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 338:
 #line 992 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
-#line 4620 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
+#line 4624 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 339:
-#line 994 "parser.y" /* yacc.c:1646  */
+#line 993 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
+#line 4630 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 340:
+#line 995 "parser.y" /* yacc.c:1646  */
     { (yyval.declarator) = make_declarator(NULL);
 						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
 						  (yyval.declarator)->type = NULL;
 						}
-#line 4629 "parser.tab.c" /* yacc.c:1646  */
+#line 4639 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 340:
-#line 999 "parser.y" /* yacc.c:1646  */
+  case 341:
+#line 1000 "parser.y" /* yacc.c:1646  */
     { (yyval.declarator) = (yyvsp[-3].declarator);
 						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
 						  (yyval.declarator)->type = NULL;
 						}
-#line 4638 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 341:
-#line 1008 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4644 "parser.tab.c" /* yacc.c:1646  */
+#line 4648 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 342:
 #line 1009 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4650 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4654 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 344:
-#line 1016 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4656 "parser.tab.c" /* yacc.c:1646  */
+  case 343:
+#line 1010 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
+#line 4660 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 345:
 #line 1017 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4662 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4666 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 346:
-#line 1021 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator(NULL); }
-#line 4668 "parser.tab.c" /* yacc.c:1646  */
+#line 1018 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
+#line 4672 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 348:
-#line 1029 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
-#line 4674 "parser.tab.c" /* yacc.c:1646  */
+  case 347:
+#line 1022 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = make_declarator(NULL); }
+#line 4678 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 349:
 #line 1030 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4680 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
+#line 4684 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 350:
 #line 1031 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
-#line 4686 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4690 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 351:
 #line 1032 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
-#line 4692 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
+#line 4696 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 352:
-#line 1034 "parser.y" /* yacc.c:1646  */
+#line 1033 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
+#line 4702 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 353:
+#line 1035 "parser.y" /* yacc.c:1646  */
     { (yyval.declarator) = make_declarator(NULL);
 						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
 						  (yyval.declarator)->type = NULL;
 						}
-#line 4701 "parser.tab.c" /* yacc.c:1646  */
+#line 4711 "parser.tab.c" /* yacc.c:1646  */
     break;
 
-  case 353:
-#line 1039 "parser.y" /* yacc.c:1646  */
+  case 354:
+#line 1040 "parser.y" /* yacc.c:1646  */
     { (yyval.declarator) = (yyvsp[-3].declarator);
 						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
 						  (yyval.declarator)->type = NULL;
 						}
-#line 4710 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 354:
-#line 1046 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
-#line 4716 "parser.tab.c" /* yacc.c:1646  */
+#line 4720 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 355:
 #line 1047 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
-#line 4722 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
+#line 4726 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 356:
-#line 1050 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = NULL; }
-#line 4728 "parser.tab.c" /* yacc.c:1646  */
+#line 1048 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
+#line 4732 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 357:
 #line 1051 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = (yyvsp[0].expr); }
-#line 4734 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.expr) = NULL; }
+#line 4738 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 358:
-#line 1054 "parser.y" /* yacc.c:1646  */
+#line 1052 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = (yyvsp[0].expr); }
+#line 4744 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 359:
+#line 1055 "parser.y" /* yacc.c:1646  */
     { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->bits = (yyvsp[0].expr);
 						  if (!(yyval.declarator)->bits && !(yyval.declarator)->var->name)
 						    error_loc("unnamed fields are not allowed\n");
 						}
-#line 4743 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 359:
-#line 1061 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
-#line 4749 "parser.tab.c" /* yacc.c:1646  */
+#line 4753 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 360:
-#line 1063 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
-#line 4755 "parser.tab.c" /* yacc.c:1646  */
+#line 1062 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
+#line 4759 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 361:
-#line 1067 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); }
-#line 4761 "parser.tab.c" /* yacc.c:1646  */
+#line 1064 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
+#line 4765 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 362:
 #line 1068 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-2].declarator); (yyvsp[-2].declarator)->var->eval = (yyvsp[0].expr); }
-#line 4767 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); }
+#line 4771 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 363:
-#line 1072 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = THREADING_APARTMENT; }
-#line 4773 "parser.tab.c" /* yacc.c:1646  */
+#line 1069 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-2].declarator); (yyvsp[-2].declarator)->var->eval = (yyvsp[0].expr); }
+#line 4777 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 364:
 #line 1073 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = THREADING_NEUTRAL; }
-#line 4779 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.num) = THREADING_APARTMENT; }
+#line 4783 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 365:
 #line 1074 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = THREADING_SINGLE; }
-#line 4785 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.num) = THREADING_NEUTRAL; }
+#line 4789 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 366:
 #line 1075 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = THREADING_FREE; }
-#line 4791 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.num) = THREADING_SINGLE; }
+#line 4795 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 367:
 #line 1076 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = THREADING_BOTH; }
-#line 4797 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.num) = THREADING_FREE; }
+#line 4801 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 368:
-#line 1080 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = RPC_FC_RP; }
-#line 4803 "parser.tab.c" /* yacc.c:1646  */
+#line 1077 "parser.y" /* yacc.c:1646  */
+    { (yyval.num) = THREADING_BOTH; }
+#line 4807 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 369:
 #line 1081 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = RPC_FC_UP; }
-#line 4809 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.num) = RPC_FC_RP; }
+#line 4813 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 370:
 #line 1082 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = RPC_FC_FP; }
-#line 4815 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.num) = RPC_FC_UP; }
+#line 4819 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 371:
-#line 1085 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_struct((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
-#line 4821 "parser.tab.c" /* yacc.c:1646  */
+#line 1083 "parser.y" /* yacc.c:1646  */
+    { (yyval.num) = RPC_FC_FP; }
+#line 4825 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 372:
-#line 1088 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_void(); }
-#line 4827 "parser.tab.c" /* yacc.c:1646  */
+#line 1086 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_struct((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
+#line 4831 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 373:
 #line 1089 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4833 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_void(); }
+#line 4837 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 374:
 #line 1090 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type); }
-#line 4839 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4843 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 375:
 #line 1091 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = (yyvsp[0].type); }
-#line 4845 "parser.tab.c" /* yacc.c:1646  */
+#line 4849 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 376:
 #line 1092 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_enum((yyvsp[0].str), FALSE, NULL); }
-#line 4851 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); }
+#line 4855 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 377:
 #line 1093 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type); }
-#line 4857 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_enum((yyvsp[0].str), FALSE, NULL); }
+#line 4861 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 378:
 #line 1094 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_struct((yyvsp[0].str), FALSE, NULL); }
-#line 4863 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); }
+#line 4867 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 379:
 #line 1095 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type); }
-#line 4869 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_struct((yyvsp[0].str), FALSE, NULL); }
+#line 4873 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 380:
 #line 1096 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
-#line 4875 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); }
+#line 4879 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 381:
 #line 1097 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = make_safearray((yyvsp[-1].type)); }
-#line 4881 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
+#line 4885 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 382:
-#line 1101 "parser.y" /* yacc.c:1646  */
+#line 1098 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = make_safearray((yyvsp[-1].type)); }
+#line 4891 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 383:
+#line 1102 "parser.y" /* yacc.c:1646  */
     { (yyvsp[-4].attr_list) = append_attribs((yyvsp[-4].attr_list), (yyvsp[-2].attr_list));
 						  reg_typedefs((yyvsp[-1].declspec), (yyvsp[0].declarator_list), check_typedef_attrs((yyvsp[-4].attr_list)));
 						  (yyval.statement) = make_statement_typedef((yyvsp[0].declarator_list));
 						}
-#line 4890 "parser.tab.c" /* yacc.c:1646  */
-    break;
-
-  case 383:
-#line 1108 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
-#line 4896 "parser.tab.c" /* yacc.c:1646  */
+#line 4900 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 384:
-#line 1111 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_encapsulated_union((yyvsp[-8].str), (yyvsp[-5].var), (yyvsp[-3].var), (yyvsp[-1].var_list)); }
-#line 4902 "parser.tab.c" /* yacc.c:1646  */
+#line 1109 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
+#line 4906 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 385:
-#line 1115 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); }
-#line 4908 "parser.tab.c" /* yacc.c:1646  */
+#line 1112 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_encapsulated_union((yyvsp[-8].str), (yyvsp[-5].var), (yyvsp[-3].var), (yyvsp[-1].var_list)); }
+#line 4912 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 386:
 #line 1116 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); }
-#line 4914 "parser.tab.c" /* yacc.c:1646  */
+    { (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); }
+#line 4918 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 387:
 #line 1117 "parser.y" /* yacc.c:1646  */
+    { (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); }
+#line 4924 "parser.tab.c" /* yacc.c:1646  */
+    break;
+
+  case 388:
+#line 1118 "parser.y" /* yacc.c:1646  */
     { (yyval.num) = (yyvsp[0].num); }
-#line 4920 "parser.tab.c" /* yacc.c:1646  */
+#line 4930 "parser.tab.c" /* yacc.c:1646  */
     break;
 
 
-#line 4924 "parser.tab.c" /* yacc.c:1646  */
+#line 4934 "parser.tab.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -5148,7 +5158,7 @@
 #endif
   return yyresult;
 }
-#line 1120 "parser.y" /* yacc.c:1906  */
+#line 1121 "parser.y" /* yacc.c:1906  */
 
 
 static void decl_builtin_basic(const char *name, enum type_basic_type type)
diff --git a/mingw-w64-tools/widl/src/parser.y b/mingw-w64-tools/widl/src/parser.y
index c0c77d7..987a58e 100644
--- a/mingw-w64-tools/widl/src/parser.y
+++ b/mingw-w64-tools/widl/src/parser.y
@@ -400,6 +400,7 @@
 	;
 
 libraryhdr: tLIBRARY aIDENTIFIER		{ $$ = $2; }
+	|   tLIBRARY aKNOWNTYPE			{ $$ = $2; }
 	;
 library_start: attributes libraryhdr '{'	{ $$ = make_library($2, check_library_attrs($2, $1));
 						  if (!parse_only) start_typelib($$);