]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[trac5044fd] regen
authorFrancis Dupont <fdupont@isc.org>
Sat, 7 Jan 2017 00:40:07 +0000 (00:40 +0000)
committerTomek Mrugalski <tomasz@isc.org>
Mon, 9 Jan 2017 17:42:48 +0000 (18:42 +0100)
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/location.hh
src/bin/dhcp6/position.hh
src/bin/dhcp6/stack.hh

index 525316377fffbcd8063faaa080f3362edc1cd671..13d72a07092e8d7fa19b0a8dfde87c3cd8a7e1d4 100644 (file)
@@ -467,8 +467,8 @@ static void yynoreturn yy_fatal_error (yyconst char* msg  );
        (yy_c_buf_p) = yy_cp;
 
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 108
-#define YY_END_OF_BUFFER 109
+#define YY_NUM_RULES 111
+#define YY_END_OF_BUFFER 112
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -476,92 +476,93 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[766] =
+static yyconst flex_int16_t yy_accept[773] =
     {   0,
-      101,  101,    0,    0,    0,    0,    0,    0,    0,    0,
-      109,  107,   10,   11,  107,    1,  101,   98,  101,  101,
-      107,  100,   99,  107,  107,  107,  107,  107,   94,   95,
-      107,  107,  107,   96,   97,    5,    5,    5,  107,  107,
-      107,   10,   11,    0,    0,   90,    0,    0,    0,    0,
+      104,  104,    0,    0,    0,    0,    0,    0,    0,    0,
+      112,  110,   10,   11,  110,    1,  104,  101,  104,  104,
+      110,  103,  102,  110,  110,  110,  110,  110,   97,   98,
+      110,  110,  110,   99,  100,    5,    5,    5,  110,  110,
+      110,   10,   11,    0,    0,   93,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    1,  101,  101,    0,  100,
-      101,    3,    2,    6,    0,  101,    0,    0,    0,    0,
-        0,    0,    4,    0,    0,    9,    0,   91,    0,    0,
-        0,    0,   93,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    1,  104,  104,    0,
+      103,  104,    3,    2,    6,    0,  104,    0,    0,    0,
+        0,    0,    0,    4,    0,    0,    9,    0,   94,    0,
+        0,    0,    0,    0,    0,   96,    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,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    2,    0,    0,    0,    0,    0,
-        0,    0,    8,    0,    0,    0,    0,   92,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   45,    0,
+        0,    0,    0,    0,    0,    0,    0,    2,    0,    0,
+        0,    0,    0,    0,    0,    8,    0,    0,   79,   80,
+        0,    0,    0,   95,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   45,    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,    0,    0,  106,  104,    0,  103,  102,    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,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      109,  107,    0,  106,  105,    0,    0,    0,   78,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  105,  102,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   48,    0,
-        0,   33,    0,    0,    0,    0,    0,   64,    0,    0,
-        0,    0,    0,   21,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,   32,    0,    0,
-        0,    0,    0,    0,   41,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       60,   80,   18,   19,    0,    0,    0,   88,   12,    0,
-        0,   71,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   79,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   34,    0,    0,    0,    0,    0,
-        0,   72,    0,    0,    0,    0,    0,    0,   67,    0,
-        0,    7,    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,    0,
-       55,    0,    0,    0,    0,    0,    0,   36,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       42,    0,    0,    0,   52,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  108,  105,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   48,    0,    0,   33,    0,
+        0,    0,    0,    0,   64,    0,    0,    0,    0,    0,
+
+       21,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   32,    0,    0,    0,    0,    0,
+        0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   60,   83,   18,
+       19,    0,    0,    0,   91,   12,    0,    0,   71,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   76,   53,    0,
-        0,    0,    0,    0,    0,   22,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   82,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       29,    0,   89,    0,    0,    0,    0,    0,    0,    0,
+        0,   34,    0,    0,    0,    0,    0,    0,   72,    0,
+        0,    0,    0,    0,    0,   67,    0,    0,    7,    0,
 
-        0,    0,    0,    0,    0,    0,    0,   66,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       20,   35,    0,    0,   63,    0,   17,    0,    0,    0,
-        0,    0,    0,   57,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   87,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   43,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   77,    0,    0,    0,    0,    0,   68,
-       56,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   65,   78,    0,   14,    0,   73,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   55,    0,    0,
+        0,    0,    0,    0,   36,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   42,    0,    0,
+        0,   52,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   76,   53,    0,    0,    0,    0,
+        0,    0,   22,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   29,    0,   92,
 
-        0,    0,   30,    0,   75,    0,   37,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   70,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   49,   31,    0,    0,    0,    0,    0,
-        0,   26,    0,    0,   86,   85,    0,   59,    0,    0,
-        0,    0,   83,    0,    0,    0,    0,    0,    0,   44,
-        0,   62,    0,   23,    0,    0,   46,   27,   69,    0,
-        0,   61,    0,    0,    0,    0,   40,   81,    0,    0,
+        0,    0,    0,    0,   66,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   20,   35,    0,
+        0,   63,    0,   17,    0,    0,    0,    0,    0,    0,
+       57,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       90,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   43,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       58,   84,    0,    0,    0,    0,    0,   16,    0,   15,
+       77,    0,    0,    0,    0,    0,   68,   56,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   65,   81,
 
-       54,    0,    0,    0,   25,    0,   38,    0,    0,   74,
+        0,   14,    0,   73,    0,    0,    0,    0,    0,   30,
+        0,   75,    0,   37,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   70,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   47,    0,    0,    0,    0,   13,    0,    0,
-        0,    0,    0,    0,   24,    0,    0,   39,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   50,    0,    0,    0,   28,    0,    0,   82,
-        0,    0,    0,   51,    0
+       49,   31,    0,    0,    0,    0,    0,    0,   26,    0,
+        0,   89,   88,    0,   59,    0,    0,    0,    0,   86,
+        0,    0,    0,    0,    0,    0,   44,    0,   62,    0,
+       23,    0,    0,   46,   27,   69,    0,    0,   61,    0,
+        0,    0,    0,   40,   84,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   58,   87,    0,
+
+        0,    0,    0,    0,   16,    0,   15,   54,    0,    0,
+        0,   25,    0,   38,    0,    0,   74,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   47,
+        0,    0,    0,    0,   13,    0,    0,    0,    0,    0,
+        0,   24,    0,    0,   39,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   50,
+        0,    0,    0,   28,    0,    0,   85,    0,    0,    0,
+       51,    0
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -606,185 +607,187 @@ static yyconst YY_CHAR yy_meta[61] =
         5,    3,    5,    5,    3,    3,    3,    3,    3,    3
     } ;
 
-static yyconst flex_uint16_t yy_base[779] =
+static yyconst flex_uint16_t yy_base[786] =
     {   0,
         0,    0,   59,   62,   65,    0,   63,   67,   64,   66,
-      268, 5483,   83,  258,  125,    0,  105, 5483,  120,  126,
-       80,  169, 5483,  227,   87,   79,   37,   86, 5483, 5483,
-      102,   85,  102, 5483, 5483, 5483,  145,  224,  186,    0,
-      210,  150,  225,  137,  185, 5483,  193,  199,  198,  211,
-      221,  239,  254,  263,  275,  288,  282,  297,  303,  357,
-      337,  345,  365,  378,  385,    0,  386,  400,  418,  423,
-      427, 5483,    0, 5483,  141,  192,  136,  164,  161,  204,
-      207,  166, 5483,  187,  161, 5483,  183, 5483,  105,  443,
-      451,  140,  458,  480,  476,  467,  522,  529,  535,  541,
-
-      547,  557,  570,  580,  563,  591,  603,  619,  625,  631,
-      637,  644,  654,  660,  666,  673,  682,  694,  706,  715,
-      722,  728,  735,  743,  793,  750,  764,  778,  784,  807,
-      817,  832,  841,  850,    0,  169,  212,  179,  234,  271,
-      219,   87, 5483,    0,  860,  866,  116, 5483,  897,  922,
-      874,  899,  939,  883,  945,  951,  958,  967,  973,  987,
-      995, 1007, 1013, 1031, 1047, 1054, 1060, 1066, 5483, 1075,
-     1082, 1088, 1094, 1103, 1110, 1127, 1138, 1149, 1161, 1171,
-     1177, 1184, 1190, 1196, 1205, 1213, 1224, 1231, 1241, 1257,
-     1274, 1280, 1286, 1292, 1298, 1315, 1321, 1331, 1338, 1349,
-
-     1355, 1364, 1372,  286, 5483, 5483,  310, 5483, 5483,   58,
-        0, 1384, 1400, 1431, 1407, 1418, 1424, 1457, 1472, 1478,
-     1485, 1491, 1497, 1514, 1520, 1530, 1539, 1548, 1554, 1563,
-     1573, 1591, 1597, 1606, 1616, 1631, 1639, 1645, 1651, 1659,
-     1674, 1680, 1692, 1699, 1709, 1715, 1721, 1728, 1734, 1743,
-     1749, 1756, 1762, 1778, 1790, 1797, 1806, 1812, 1818, 1825,
-     1831, 1840, 1853, 1860, 1873, 1881, 1888, 5483, 5483,   65,
-        0, 1895, 1901, 1907, 1914, 1949, 1923, 1942, 5483, 1935,
-     1948, 5483, 1976, 1990, 1997, 2004, 2011, 5483, 2018, 2025,
-     2033, 2044, 2053, 5483, 2077, 2086, 2092, 2098, 2105, 2112,
-
-     2131, 2140, 2147, 2159, 2165, 2175, 2181, 5483, 2187, 2194,
-     2200, 2209, 2216, 2222, 5483, 2235, 2242, 2250, 2258, 2270,
-     2276, 2283, 2293, 2299, 2311, 2318, 2327, 2334, 2340, 2346,
-     5483, 5483, 5483, 5483, 2352,   54,    0, 5483, 5483, 2374,
-     2387, 5483, 2380, 2394, 2400, 2408, 2422, 2433, 2441, 2451,
-     2457, 2467, 2475, 2486, 2493, 2500, 2511, 2521, 5483, 2528,
-     2535, 2544, 2550, 2561, 2569, 2583, 2590, 2602, 2618, 2611,
-     2624, 2630, 2637, 2646, 5483, 2652, 2658, 2672, 2686, 2705,
-     2711, 5483, 2694, 2722, 2728, 2734, 2746, 2757, 5483, 2768,
-     2775, 5483, 2785, 2791, 2801, 2808, 2814, 2824, 2842, 2830,
-
-     2848, 2865, 2871, 2881, 2887, 2899, 2905, 2921, 2927, 2933,
-     2939, 2945, 2955, 2962, 2974, 2980, 2995, 3002, 3013, 3020,
-     5483, 3028, 3035, 3041, 3048, 3054, 3064, 5483, 3070, 3082,
-     3088, 3105, 3111, 3117, 3123, 3129, 3139, 3145, 3151, 3165,
-     5483, 3173, 3179, 3193, 5483, 3199, 3213, 3219, 3227, 3233,
-     3241, 3248, 3255, 3270, 3276, 3283, 3289, 3296, 3309, 3317,
-     3324, 3335, 3342, 3350, 3358, 3364, 3370, 5483, 5483, 3378,
-     3392, 3398, 3406, 3412, 3421, 5483, 3432, 3440, 3449, 3457,
-     3466, 3473, 3482, 3491, 3499, 3506, 3519, 3527, 3541, 3553,
-     5483, 3560, 5483, 3566, 3577, 3586, 3594, 3602, 3611, 3622,
-
-     3628, 3635, 3645, 3656, 3663, 3669, 3678, 5483, 3689, 3698,
-     3706, 3712, 3732, 3740, 3746, 3752, 3760, 3766, 3785, 3794,
-     5483, 5483, 3803, 3809, 5483, 3818, 5483, 3827, 3838, 3846,
-     3852, 3860, 3866, 5483, 3874, 3880, 3899, 3909, 3916, 3922,
-     3932, 3942, 3950, 5483, 3956, 3965, 3971, 3978, 3984, 3991,
-     4000, 4007, 4013, 4020, 5483, 4029, 4036, 4048, 4057, 4064,
-     4073, 4081, 4090, 4101, 4107, 4118, 4125, 4135, 4141, 4147,
-     4153, 4159, 4169, 5483, 4182, 4188, 4194, 4202, 4210, 5483,
-     5483, 4223, 4217, 4230, 4236, 4243, 4264, 4272, 4278, 4287,
-     4297, 5483, 5483, 4306, 5483, 4313, 5483, 4325, 4334, 4341,
-
-     4347, 4353, 5483, 4359, 5483, 4370, 5483, 4382, 4388, 4394,
-     4403, 4410, 4417, 4423, 4431, 4439, 4451, 4457, 4465, 4472,
-     4479, 5483, 4486, 4493, 4505, 4515, 4521, 4527, 4534, 4540,
-     4549, 4555, 4562, 5483, 5483, 4569, 4575, 4590, 4597, 4603,
-     4609, 5483, 4618, 4625, 5483, 5483, 4631, 5483, 4637, 4644,
-     4651, 4660, 5483, 4666, 4673, 4679, 4685, 4699, 4707, 5483,
-     4713, 5483, 4720, 5483, 4732, 4748, 5483, 5483, 5483, 4756,
-     4765, 5483, 4771, 4777, 4784, 4790, 5483, 5483, 4799, 4818,
-     4806, 4824, 4834, 4841, 4847, 4858, 4869, 4875, 4882, 4891,
-     5483, 5483, 4897, 4903, 4910, 4917, 4925, 5483, 4931, 5483,
-
-     5483, 4938, 4946, 4953, 5483, 4964, 5483, 4975, 4982, 5483,
-     4998, 5004, 5016, 5022, 5033, 5041, 5055, 5067, 5074, 5080,
-     5088, 5096, 5483, 5102, 5108, 5121, 5130, 5483, 5137, 5144,
-     5159, 5165, 5172, 5178, 5483, 5184, 5194, 5483, 5201, 5207,
-     5213, 5219, 5229, 5235, 5241, 5263, 5269, 5276, 5283, 5289,
-     5297, 5305, 5483, 5323, 5330, 5338, 5483, 5346, 5352, 5483,
-     5358, 5364, 5372, 5483, 5483, 5416, 5423, 5430, 5437, 5444,
-     5451, 5458, 5462, 5467, 5469, 5471, 5473, 5475
+      269, 5549,   83,  263,  125,    0,  105, 5549,  120,  126,
+       80,  169, 5549,  224,   87,   79,   37,   86, 5549, 5549,
+      102,   85,  102, 5549, 5549, 5549,  150,  219,  174,    0,
+      200,  153,  204,  137,  185, 5549,  193,  200,  209,  208,
+      222,  237,  245,  262,  251,  273,  291,  312,  324,  335,
+      389,  341,  353,  361,  381,  409,    0,  356,  420,  287,
+      434,  384, 5549,    0, 5549,  215,  335,  121,  136,  102,
+      171,  174,  159, 5549,  167,  198, 5549,  183, 5549,  144,
+      450,  460,  466,  474,  153,  484,  504,  499,  532,  545,
+
+      552,  558,  566,  580,  586,  594,  619,  632,  638,  647,
+      653,  661,  671,  686,  696,  704,  710,  722,  729,  744,
+      755,  762,  768,  779,  788,  801,  814,  864,  821,  830,
+      842,  849,  855,  878,  888,  902,  912,    0,  208,  241,
+      168,  253,  245,  210,  100, 5549,    0,  921, 5549, 5549,
+      927,  945,  116, 5549,  974,  967,  961, 1003,  974, 1015,
+     1022, 1028, 1038, 1048, 1061, 1067, 1074, 1084, 1090, 1096,
+     1102, 1112, 1119, 1125, 5549, 1131, 1140, 1148, 1154, 1165,
+     1187, 1193, 1199, 1206, 1212, 1221, 1227, 1241, 1247, 1256,
+     1263, 1280, 1289, 1297, 1304, 1313, 1322, 1337, 1348, 1358,
+
+     1365, 1373, 1381, 1391, 1398, 1409, 1419, 1427, 1435,  293,
+     5549, 5549,  329, 5549, 5549,   58,    0, 1442, 5549, 1460,
+     1491, 1468, 1485, 1518, 1533, 1539, 1546, 1552, 1558, 1567,
+     1575, 1586, 1595, 1604, 1610, 1619, 1628, 1638, 1645, 1656,
+     1666, 1673, 1681, 1690, 1699, 1706, 1715, 1725, 1732, 1743,
+     1750, 1758, 1765, 1778, 1784, 1793, 1800, 1813, 1806, 1828,
+     1835, 1847, 1856, 1863, 1869, 1882, 1889, 1897, 1905, 1915,
+     1922, 1933, 1940, 1948, 5549, 5549,   65,    0, 1955, 1961,
+     1968, 1976, 2011, 1983, 1989, 5549, 1996, 2011, 5549, 2037,
+     2052, 2060, 2066, 2073, 5549, 2085, 2101, 2107, 2114, 2122,
+
+     5549, 2129, 2142, 2155, 2162, 2168, 2180, 2188, 2197, 2208,
+     2214, 2225, 2231, 2237, 5549, 2247, 2254, 2265, 2271, 2282,
+     2288, 5549, 2300, 2308, 2316, 2323, 2336, 2342, 2349, 2359,
+     2365, 2377, 2384, 2393, 2400, 2406, 2412, 5549, 5549, 5549,
+     5549, 2418,   54,    0, 5549, 5549, 2440, 2453, 5549, 2446,
+     2460, 2466, 2474, 2488, 2499, 2507, 2517, 2523, 2533, 2541,
+     2552, 2559, 2566, 2577, 2587, 5549, 2594, 2601, 2610, 2616,
+     2627, 2635, 2649, 2656, 2668, 2684, 2677, 2690, 2696, 2703,
+     2712, 5549, 2718, 2724, 2738, 2752, 2771, 2777, 5549, 2760,
+     2788, 2794, 2800, 2812, 2823, 5549, 2834, 2841, 5549, 2851,
+
+     2857, 2867, 2874, 2880, 2890, 2908, 2896, 2914, 2931, 2937,
+     2947, 2953, 2965, 2971, 2987, 2993, 2999, 3005, 3011, 3021,
+     3028, 3040, 3046, 3061, 3068, 3079, 3086, 5549, 3094, 3101,
+     3107, 3114, 3120, 3130, 5549, 3136, 3148, 3154, 3171, 3177,
+     3183, 3189, 3195, 3205, 3211, 3217, 3231, 5549, 3239, 3245,
+     3259, 5549, 3265, 3279, 3285, 3293, 3299, 3307, 3314, 3321,
+     3336, 3342, 3349, 3355, 3362, 3375, 3383, 3390, 3401, 3408,
+     3416, 3424, 3430, 3436, 5549, 5549, 3444, 3458, 3464, 3472,
+     3478, 3487, 5549, 3498, 3506, 3515, 3523, 3532, 3539, 3548,
+     3557, 3565, 3572, 3585, 3593, 3607, 3619, 5549, 3626, 5549,
+
+     3632, 3643, 3652, 3660, 3668, 3677, 3688, 3694, 3701, 3711,
+     3722, 3729, 3735, 3744, 5549, 3755, 3764, 3772, 3778, 3798,
+     3806, 3812, 3818, 3826, 3832, 3851, 3860, 5549, 5549, 3869,
+     3875, 5549, 3884, 5549, 3893, 3904, 3912, 3918, 3926, 3932,
+     5549, 3940, 3946, 3965, 3975, 3982, 3988, 3998, 4008, 4016,
+     5549, 4022, 4031, 4037, 4044, 4050, 4057, 4066, 4073, 4079,
+     4086, 5549, 4095, 4102, 4114, 4123, 4130, 4139, 4147, 4156,
+     4167, 4173, 4184, 4191, 4201, 4207, 4213, 4219, 4225, 4235,
+     5549, 4248, 4254, 4260, 4268, 4276, 5549, 5549, 4289, 4283,
+     4296, 4302, 4309, 4330, 4338, 4344, 4353, 4363, 5549, 5549,
+
+     4372, 5549, 4379, 5549, 4391, 4400, 4407, 4413, 4419, 5549,
+     4425, 5549, 4436, 5549, 4448, 4454, 4460, 4469, 4476, 4483,
+     4489, 4497, 4505, 4517, 4523, 4531, 4538, 4545, 5549, 4552,
+     4559, 4571, 4581, 4587, 4593, 4600, 4606, 4615, 4621, 4628,
+     5549, 5549, 4635, 4641, 4656, 4663, 4669, 4675, 5549, 4684,
+     4691, 5549, 5549, 4697, 5549, 4703, 4710, 4717, 4726, 5549,
+     4732, 4739, 4745, 4751, 4765, 4773, 5549, 4779, 5549, 4786,
+     5549, 4798, 4814, 5549, 5549, 5549, 4822, 4831, 5549, 4837,
+     4843, 4850, 4856, 5549, 5549, 4865, 4884, 4872, 4890, 4900,
+     4907, 4913, 4924, 4935, 4941, 4948, 4957, 5549, 5549, 4963,
+
+     4969, 4976, 4983, 4991, 5549, 4997, 5549, 5549, 5004, 5012,
+     5019, 5549, 5030, 5549, 5041, 5048, 5549, 5064, 5070, 5082,
+     5088, 5099, 5107, 5121, 5133, 5140, 5146, 5154, 5162, 5549,
+     5168, 5174, 5187, 5196, 5549, 5203, 5210, 5225, 5231, 5238,
+     5244, 5549, 5250, 5260, 5549, 5267, 5273, 5279, 5285, 5295,
+     5301, 5307, 5329, 5335, 5342, 5349, 5355, 5363, 5371, 5549,
+     5389, 5396, 5404, 5549, 5412, 5418, 5549, 5424, 5430, 5438,
+     5549, 5549, 5482, 5489, 5496, 5503, 5510, 5517, 5524, 5528,
+     5533, 5535, 5537, 5539, 5541
     } ;
 
-static yyconst flex_int16_t yy_def[779] =
+static yyconst flex_int16_t yy_def[786] =
     {   0,
-      765,    1,  766,  766,    1,    5,    5,    5,    5,    5,
-      765,  765,  765,  765,  767,  768,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  769,
-      765,  765,  765,  770,  767,  765,  767,  767,  771,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  768,  765,  765,  765,  765,
-      765,  765,  772,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  769,  765,  770,  765,  773,  767,
-      767,  774,  767,  771,  767,  767,  767,  767,  767,  767,
-
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  772,  765,  765,  765,  765,  765,
-      765,  765,  765,  775,  767,  767,  774,  765,  771,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  765,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-
-      767,  767,  767,  765,  765,  765,  765,  765,  765,  765,
-      776,  767,  767,  771,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  765,  765,  765,
-      777,  767,  767,  767,  767,  771,  767,  767,  765,  767,
-      767,  765,  767,  767,  767,  767,  767,  765,  767,  767,
-      767,  767,  767,  765,  767,  767,  767,  767,  767,  767,
-
-      767,  767,  767,  767,  767,  767,  767,  765,  767,  767,
-      767,  767,  767,  767,  765,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      765,  765,  765,  765,  767,  765,  778,  765,  765,  767,
-      767,  765,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  765,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  765,  767,  767,  767,  767,  767,
-      767,  765,  767,  767,  767,  767,  767,  767,  765,  767,
-      767,  765,  767,  767,  767,  767,  767,  767,  767,  767,
-
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      765,  767,  767,  767,  767,  767,  767,  765,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      765,  767,  767,  767,  765,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  765,  765,  767,
-      767,  767,  767,  767,  767,  765,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      765,  767,  765,  767,  767,  767,  767,  767,  767,  767,
-
-      767,  767,  767,  767,  767,  767,  767,  765,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      765,  765,  767,  767,  765,  767,  765,  767,  767,  767,
-      767,  767,  767,  765,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  765,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  765,  767,  767,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  765,  767,  767,  767,  767,  767,  765,
-      765,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  765,  765,  767,  765,  767,  765,  767,  767,  767,
-
-      767,  767,  765,  767,  765,  767,  765,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  765,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  767,  765,  765,  767,  767,  767,  767,  767,
-      767,  765,  767,  767,  765,  765,  767,  765,  767,  767,
-      767,  767,  765,  767,  767,  767,  767,  767,  767,  765,
-      767,  765,  767,  765,  767,  767,  765,  765,  765,  767,
-      767,  765,  767,  767,  767,  767,  765,  765,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      765,  765,  767,  767,  767,  767,  767,  765,  767,  765,
-
-      765,  767,  767,  767,  765,  767,  765,  767,  767,  765,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  765,  767,  767,  767,  767,  765,  767,  767,
-      767,  767,  767,  767,  765,  767,  767,  765,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
-      767,  767,  765,  767,  767,  767,  765,  767,  767,  765,
-      767,  767,  767,  765,    0,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765
+      772,    1,  773,  773,    1,    5,    5,    5,    5,    5,
+      772,  772,  772,  772,  774,  775,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  776,
+      772,  772,  772,  777,  774,  772,  774,  774,  774,  778,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  775,  772,  772,  772,
+      772,  772,  772,  779,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  776,  772,  777,  772,  780,
+      774,  774,  774,  774,  781,  774,  778,  774,  774,  774,
+
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  779,  772,  772,
+      772,  772,  772,  772,  772,  772,  782,  774,  772,  772,
+      774,  774,  781,  772,  778,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  772,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  772,
+      772,  772,  772,  772,  772,  772,  783,  774,  772,  774,
+      778,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  772,  772,  772,  784,  774,  774,
+      774,  774,  778,  774,  774,  772,  774,  774,  772,  774,
+      774,  774,  774,  774,  772,  774,  774,  774,  774,  774,
+
+      772,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  772,  774,  774,  774,  774,  774,
+      774,  772,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  772,  772,  772,
+      772,  774,  772,  785,  772,  772,  774,  774,  772,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  772,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  772,  774,  774,  774,  774,  774,  774,  772,  774,
+      774,  774,  774,  774,  774,  772,  774,  774,  772,  774,
+
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  772,  774,  774,
+      774,  774,  774,  774,  772,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  772,  774,  774,
+      774,  772,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  772,  772,  774,  774,  774,  774,
+      774,  774,  772,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  772,  774,  772,
+
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  772,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  772,  772,  774,
+      774,  772,  774,  772,  774,  774,  774,  774,  774,  774,
+      772,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      772,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  772,  774,  774,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      772,  774,  774,  774,  774,  774,  772,  772,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  772,  772,
+
+      774,  772,  774,  772,  774,  774,  774,  774,  774,  772,
+      774,  772,  774,  772,  774,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  772,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  774,
+      772,  772,  774,  774,  774,  774,  774,  774,  772,  774,
+      774,  772,  772,  774,  772,  774,  774,  774,  774,  772,
+      774,  774,  774,  774,  774,  774,  772,  774,  772,  774,
+      772,  774,  774,  772,  772,  772,  774,  774,  772,  774,
+      774,  774,  774,  772,  772,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  772,  772,  774,
+
+      774,  774,  774,  774,  772,  774,  772,  772,  774,  774,
+      774,  772,  774,  772,  774,  774,  772,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  772,
+      774,  774,  774,  774,  772,  774,  774,  774,  774,  774,
+      774,  772,  774,  774,  772,  774,  774,  774,  774,  774,
+      774,  774,  774,  774,  774,  774,  774,  774,  774,  772,
+      774,  774,  774,  772,  774,  774,  772,  774,  774,  774,
+      772,    0,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772
     } ;
 
-static yyconst flex_uint16_t yy_nxt[5544] =
+static yyconst flex_uint16_t yy_nxt[5610] =
     {   0,
        12,   13,   14,   13,   12,   15,   16,   12,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   12,   12,
@@ -792,613 +795,620 @@ static yyconst flex_uint16_t yy_nxt[5544] =
        12,   29,   12,   30,   12,   12,   12,   12,   12,   25,
        31,   12,   12,   12,   12,   12,   12,   32,   12,   12,
        12,   12,   33,   12,   12,   12,   12,   12,   34,   35,
-       37,   14,   37,   37,   14,   37,   38,   78,   40,   38,
+       37,   14,   37,   37,   14,   37,   38,   79,   40,   38,
        12,   12,   40,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   41,   42,   41,   42,   72,   12,   12,
-       78,   12,   73,  392,   12,   75,   12,   75,   12,   77,
-
-       76,   76,   76,  336,   12,   12,   12,   12,   39,   12,
-       12,  270,   12,   79,   77,   78,   67,   12,   68,   68,
-       68,  148,   77,   12,   12,   44,   44,   44,   69,   79,
-       46,   67,  210,   70,   70,   70,   79,   80,   81,   71,
-       71,   71,   88,   69,   69,  148,   42,   47,   42,   69,
-       48,   42,   82,   42,   76,   76,   76,   49,  144,   69,
-       50,  136,   51,   52,   53,   69,  143,   54,   55,   89,
-       56,   57,   58,   59,   60,   61,   62,   63,   64,   65,
-       67,  136,   70,   70,   70,   44,   44,   44,   88,  137,
-       46,  138,   69,   44,   44,   44,  138,  204,   46,   44,
-
-       44,   44,  206,   93,   46,   76,   76,   76,   69,  137,
-       45,   44,   44,   44,  138,   89,   46,   49,  206,  141,
-      204,   44,   44,   44,  142,   49,   46,   43,   86,  136,
-       45,   49,  137,   84,   45,   90,   83,  205,   45,   44,
-       44,   44,  206,   49,   46,   45,   74,   91,   45,  139,
-       45,   94,  140,   49,   44,   44,   44,  205,  209,   46,
-       43,   95,  204,   44,   44,   44,   96,  765,   46,   97,
-      765,   49,   98,  765,   99,   44,   44,   44,  100,  765,
-       46,  101,   44,   44,   44,  207,   49,   46,   44,   44,
-       44,  765,  102,   46,  765,   49,  205,   44,   44,   44,
-
-      765,  103,   46,   44,   44,   44,  765,   49,   46,  268,
-      104,  105,  765,  108,   49,  106,  208,  115,  107,  765,
-       49,  765,  109,  765,  110,  268,  765,  111,  112,   49,
-      765,  113,  116,  268,  765,   49,  114,   44,   44,   44,
-      765,  765,   46,  765,  765,   44,   44,   44,  765,  269,
-       46,  765,  117,  765,  765,  765,  118,   44,   44,   44,
-      765,  765,   46,  765,  765,   44,   44,   44,  765,   49,
-       46,  765,  124,  765,  765,  765,  125,   49,   44,   44,
-       44,  765,  765,   46,  126,   44,   44,   44,  765,   49,
-       46,  765,  119,  127,  128,  120,  121,   49,  129,   71,
-
-       71,   71,  765,  765,  130,  122,  765,  123,  131,   69,
-       49,   67,  765,   68,   68,   68,  765,   49,  765,  765,
-      134,  765,  132,   69,  765,   69,   75,  765,   75,  133,
-      765,   76,   76,   76,   67,  765,   70,   70,   70,   69,
-       71,   71,   71,   44,   44,   44,   69,  765,   46,  765,
-       69,   44,   44,   44,  765,  765,   46,  765,   44,   44,
-       44,  765,   69,   46,  765,  765,   69,   44,   44,   44,
-      765,  765,   46,  765,  765,   49,   44,   44,   44,  765,
-      145,   46,  765,   49,  765,  765,  765,  765,  765,  765,
-       49,  765,  146,  149,  149,  149,  765,  765,  765,   49,
-
-      149,  149,  149,  149,  149,  765,  765,  765,   49,  765,
-      151,  765,  765,  765,  765,  149,  149,  149,  149,  149,
-      149,  765,   44,   44,   44,  765,  150,   46,  765,   44,
-       44,   44,  765,  765,   46,   44,   44,   44,  765,  765,
-       46,   44,   44,   44,  765,  765,   46,   44,   44,   44,
-      765,  765,   46,  765,   49,  765,  765,   44,   44,   44,
-      152,   49,   46,   44,   44,   44,  765,   49,   46,  153,
-       44,   44,   44,   49,  765,   46,  765,  156,  157,   49,
-       44,   44,   44,  154,  159,   46,  158,  155,  765,   49,
-      765,   44,   44,   44,  765,   49,   46,  765,  765,  765,
-
-      160,  765,   49,   44,   44,   44,  765,  161,   46,  765,
-      765,  165,   49,  168,  166,  765,  765,  163,  765,   44,
-       44,   44,  162,   49,  169,   44,   44,   44,  765,  164,
-       46,   44,   44,   44,  765,   49,   46,   44,   44,   44,
-      765,  172,   46,  765,   44,   44,   44,  765,  167,   46,
-      765,   49,  765,  765,   44,   44,   44,   49,  170,   46,
-       44,   44,   44,   49,  765,   46,   44,   44,   44,   49,
-      765,   46,  173,   44,   44,   44,   49,  171,   46,  765,
-      765,  174,   44,   44,   44,  765,   49,   46,  765,  765,
-      175,  765,   49,  765,   44,   44,   44,  765,   49,   46,
-
-      765,  176,  765,  177,  765,   49,   44,   44,   44,  765,
-      765,   46,  765,  765,   49,   44,   44,   44,  765,  178,
-       46,  765,   44,   44,   44,  183,   49,   46,   44,   44,
-       44,  765,  765,   46,  179,   44,   44,   44,   49,  765,
-       46,  765,  765,   44,   44,   44,  180,   49,   46,  765,
-       44,   44,   44,  765,   49,   46,  181,  182,  765,  765,
-       49,  765,  765,  765,   44,   44,   44,   49,  765,   46,
-      765,  765,  184,  765,  186,   49,  185,  765,   44,   44,
-       44,  765,   49,   46,   44,   44,   44,  765,  765,   46,
-      765,  765,  187,   44,   44,   44,   49,  765,   46,  765,
-
-      194,  196,  765,  765,  195,  765,  765,   44,   44,   44,
-       49,  765,   46,  197,  765,  765,   49,   44,   44,   44,
-      198,  765,   46,  765,  765,   49,  765,  765,  188,  189,
-      190,  765,   44,   44,   44,  765,  765,   46,  191,   49,
-      192,   44,   44,   44,  193,  765,   46,  765,  765,   49,
-       44,   44,   44,  765,  765,   46,  765,  765,  199,  765,
-       44,   44,   44,  200,   49,   46,   44,   44,   44,  765,
-      765,   46,  765,   49,   44,   44,   44,  765,  765,   46,
-      202,  201,   49,   44,   44,   44,  765,  765,   46,  765,
-      765,  765,   49,  219,  765,  203,  765,  765,   49,   44,
-
-       44,   44,  765,  765,   46,  765,   49,  213,  765,  212,
-      214,  214,  214,  216,  765,   49,  765,  214,  214,  214,
-      214,  214,   44,   44,   44,  765,  765,   46,  765,  765,
-      765,   49,  214,  214,  214,  214,  214,  214,  217,   44,
-       44,   44,  765,  765,   46,   44,   44,   44,  765,  765,
-       46,   44,   44,   44,   49,  765,   46,  215,   44,   44,
-       44,  765,  765,   46,  765,  765,  765,   44,   44,   44,
-      765,   49,   46,   44,   44,   44,  765,   49,   46,  765,
-      220,  765,  765,   49,  765,  765,  765,   44,   44,   44,
-       49,  218,   46,  765,  765,   44,   44,   44,  765,   49,
-
-       46,  765,  765,  222,  221,   49,  223,   44,   44,   44,
-      765,  765,   46,   44,   44,   44,  765,  765,   46,   49,
-      765,  765,  224,  765,  765,  225,  765,   49,  765,  765,
-      226,   44,   44,   44,  765,  765,   46,  765,  765,   49,
-      765,  765,  765,  765,  765,   49,  227,   44,   44,   44,
-      765,  765,   46,  765,   44,   44,   44,  765,  228,   46,
-       44,   44,   44,   49,  765,   46,   44,   44,   44,  765,
-      765,   46,  765,  765,  229,   44,   44,   44,  765,   49,
-       46,  765,   44,   44,   44,  765,   49,   46,   44,   44,
-       44,  230,   49,   46,   44,   44,   44,  765,   49,   46,
-
-      765,  233,  765,   44,   44,   44,  231,   49,   46,  232,
-       44,   44,   44,  238,   49,   46,  765,  765,  765,  765,
-       49,  235,  234,  236,  765,  765,   49,   44,   44,   44,
-      765,  765,   46,  765,  765,   49,  765,  765,   44,   44,
-       44,  765,   49,   46,  765,  237,  765,  765,  241,   44,
-       44,   44,  765,  765,   46,  765,  765,  765,  765,   49,
-      239,   44,   44,   44,  765,  765,   46,  765,  240,  765,
-       49,   44,   44,   44,  765,  765,   46,   44,   44,   44,
-      765,   49,   46,  765,   44,   44,   44,  765,  242,   46,
-       44,   44,   44,   49,  765,   46,   44,   44,   44,  765,
-
-      765,   46,  765,   49,  243,   44,   44,   44,  765,   49,
-       46,  765,  245,   44,   44,   44,   49,  765,   46,  765,
-      244,  765,   49,  765,   44,   44,   44,  765,   49,   46,
-      765,   44,   44,   44,  765,  246,   46,   49,  765,  247,
-      765,   44,   44,   44,  765,   49,   46,  248,  765,  765,
-      249,  765,  765,  250,  765,  765,   49,   44,   44,   44,
-      765,  765,   46,   49,  765,  765,  765,  251,  765,  252,
-      765,  765,  765,   49,   44,   44,   44,  765,  765,   46,
-       44,   44,   44,  765,  253,   46,   44,   44,   44,   49,
-      765,   46,   44,   44,   44,  765,  765,   46,   44,   44,
-
-       44,  765,  765,   46,  765,  254,   49,  765,  765,  255,
-      765,  765,   49,  765,  765,   44,   44,   44,   49,  256,
-       46,   44,   44,   44,   49,  257,   46,  765,  765,  765,
-       49,   44,   44,   44,  765,  765,   46,  259,   44,   44,
-       44,  765,  765,   46,  765,  765,  258,   49,  765,   44,
-       44,   44,  765,   49,   46,   44,   44,   44,  261,  260,
-       46,  765,  765,   49,   44,   44,   44,  765,  765,   46,
-       49,  765,   44,   44,   44,  765,  765,   46,  262,  765,
-      765,   49,  765,  765,   44,   44,   44,   49,  264,   46,
-      263,  765,  765,  765,  265,  765,   49,  765,  272,  273,
-
-       44,   44,   44,  765,   49,   46,  274,   44,   44,   44,
-      765,  765,   46,  765,  266,  267,   49,  765,   44,   44,
-       44,  765,  765,   46,   44,   44,   44,  765,  765,  279,
-      765,  765,   49,  765,  765,  765,  765,  765,  765,   49,
-      765,  765,  765,  275,  276,  276,  276,  765,  765,  765,
-       49,  276,  276,  276,  276,  276,   49,   44,   44,   44,
-      765,  765,   46,  765,  277,  278,  276,  276,  276,  276,
-      276,  276,   44,   44,   44,  765,  765,   46,   44,   44,
-       44,  765,  765,  282,  765,   44,   44,   44,  765,   49,
-       46,   44,   44,   44,  765,  765,   46,   44,   44,   44,
-
-      765,  765,   46,  765,   49,  765,  765,  280,  765,  765,
-       49,  765,  281,  765,   44,   44,   44,   49,  765,   46,
-       44,   44,   44,   49,  286,  288,  283,  765,  287,   49,
-       44,   44,   44,  765,  284,   46,  765,  765,  285,   44,
-       44,   44,  765,  765,   46,  765,   49,  765,   44,   44,
-       44,  765,   49,   46,   44,   44,   44,  765,  765,   46,
-      765,  765,   49,   44,   44,   44,  765,  765,   46,  765,
-      765,   49,  765,   44,   44,   44,  765,  765,  294,  289,
-       49,  765,  765,  295,  765,  765,   49,  765,  765,  290,
-      765,   44,   44,   44,  765,   49,   46,   44,   44,   44,
-
-      765,  291,   46,  765,  292,   49,   44,   44,   44,  765,
-      765,   46,  765,  765,  293,  765,   44,   44,   44,  765,
-      296,   46,  765,   49,  297,  765,  765,  765,  765,   49,
-      298,   44,   44,   44,  765,  299,   46,  765,   49,   44,
-       44,   44,  765,  765,   46,   44,   44,   44,   49,  765,
-       46,   44,   44,   44,  765,  765,   46,  765,  300,   44,
-       44,   44,  765,   49,   46,  765,  301,  765,  765,  302,
-      765,   49,  765,  765,   44,   44,   44,   49,  303,   46,
-       44,   44,   44,   49,  765,  308,  305,  765,  304,  765,
-      765,   49,   44,   44,   44,  765,  765,   46,  306,   44,
-
-       44,   44,  765,  765,   46,  765,   49,  765,  765,   44,
-       44,   44,   49,  765,   46,   44,   44,   44,  765,  765,
-       46,   44,   44,   44,   49,  307,   46,  765,   44,   44,
-       44,   49,  765,   46,   44,   44,   44,  765,  765,  315,
-      309,   49,  765,   44,   44,   44,  765,   49,   46,   44,
-       44,   44,  310,   49,   46,  311,   44,   44,   44,  765,
-       49,   46,   44,   44,   44,  765,   49,   46,  765,  313,
-      312,  314,  765,  765,  765,   49,  765,  765,   44,   44,
-       44,   49,  317,   46,  765,  316,  318,  319,   49,  765,
-       44,   44,   44,  765,   49,   46,  765,   44,   44,   44,
-
-      765,  765,   46,  765,  320,  765,   44,   44,   44,  321,
-       49,   46,   44,   44,   44,  765,  765,   46,   44,   44,
-       44,  765,   49,   46,  765,   44,   44,   44,  322,   49,
-       46,   44,   44,   44,  765,  765,   46,  765,   49,  765,
-       44,   44,   44,  765,   49,   46,  765,  323,  765,  765,
-       49,  326,  324,   44,   44,   44,  325,   49,  331,  765,
-       44,   44,   44,   49,  328,  332,  765,  765,  327,  765,
-      329,  765,   49,   44,   44,   44,  765,  765,  333,  330,
-      765,   44,   44,   44,  765,   49,  334,  765,   44,   44,
-       44,  765,   49,   46,  765,   44,   44,   44,  765,  765,
-
-      338,   44,   44,   44,  765,   49,  339,   44,   44,   44,
-      765,  765,   46,   49,   44,   44,   44,  765,  765,   46,
-       49,  765,  765,   44,   44,   44,  335,   49,  342,  765,
-      765,  765,  765,   49,  765,   44,   44,   44,  765,   49,
-       46,  765,   44,   44,   44,  340,   49,   46,   44,   44,
-       44,  765,  765,   46,  765,   49,  765,  765,  765,  765,
-      765,  341,   45,   45,   45,  765,  765,   49,  765,   45,
-       45,   45,   45,   45,   49,  765,   44,   44,   44,  765,
-       49,   46,  765,  344,   45,   45,   45,   45,   45,   45,
-       44,   44,   44,  765,  343,   46,  345,   44,   44,   44,
-
-      765,  765,   46,  765,   44,   44,   44,  765,   49,   46,
-      765,   44,   44,   44,  765,  765,   46,  765,   44,   44,
-       44,  346,   49,   46,  765,   44,   44,   44,  765,   49,
-       46,  765,  348,   44,   44,   44,   49,  347,   46,  765,
-      765,  765,  349,   49,   44,   44,   44,  765,  765,   46,
-       49,  765,  765,   44,   44,   44,  765,   49,   46,  350,
-      765,  765,  765,  355,  765,   49,  765,  765,  765,  351,
-      765,  353,  765,  765,  352,  765,   49,   44,   44,   44,
-      765,  765,   46,  354,  765,   49,   44,   44,   44,  765,
-      765,   46,   44,   44,   44,  765,  765,   46,   44,   44,
-
-       44,  765,  358,  359,  765,   44,   44,   44,  765,   49,
-       46,  765,   44,   44,   44,  765,  765,   46,   49,  765,
-      765,  357,  765,  765,   49,  765,  765,  356,  765,  765,
-       49,   44,   44,   44,  765,  765,   46,   49,  765,  765,
-       44,   44,   44,  360,   49,   46,  765,   44,   44,   44,
-      765,  765,   46,  765,  765,  361,  765,  364,  765,   44,
-       44,   44,  765,   49,   46,   44,   44,   44,  765,  765,
-       46,  362,   49,  765,  765,   44,   44,   44,  363,   49,
-       46,   44,   44,   44,  765,  765,   46,   44,   44,   44,
-      765,   49,   46,  765,   44,   44,   44,   49,  765,   46,
-
-       44,   44,   44,  765,  765,   46,  365,   49,  765,   44,
-       44,   44,  765,   49,   46,  366,   44,   44,   44,   49,
-      765,   46,   44,   44,   44,  367,   49,   46,  765,  368,
-      765,  765,   49,  765,  369,   44,   44,   44,  765,  371,
-      375,   49,   44,   44,   44,  765,  370,   46,   49,  765,
-       44,   44,   44,  765,   49,   46,  765,  372,   44,   44,
-       44,  765,  765,   46,  373,  765,  765,   49,  378,  765,
-       44,   44,   44,  374,   49,   46,   44,   44,   44,  765,
-      765,   46,   49,   44,   44,   44,  765,  765,   46,  765,
-       49,  765,  376,   44,   44,   44,  765,  765,  382,   44,
-
-       44,   44,   49,  383,   46,  765,  377,  765,   49,  384,
-      765,   44,   44,   44,  380,   49,   46,  379,   44,   44,
-       44,  381,  765,   46,  765,   49,  765,   44,   44,   44,
-      765,   49,   46,  765,   44,   44,   44,  765,  765,   46,
-       44,   44,   44,   49,  765,  389,   44,   44,   44,  765,
-       49,   46,   44,   44,   44,  765,  765,   46,  765,   49,
-      765,  765,  391,  765,  765,  385,   49,  765,  386,  765,
-      387,  765,   49,  765,   44,   44,   44,  765,   49,   46,
-       44,   44,   44,  765,   49,   46,  388,   44,   44,   44,
-      395,  765,   46,  765,   44,   44,   44,  765,  390,   46,
-
-       44,   44,   44,  765,  765,   46,   49,  765,   44,   44,
-       44,  765,   49,   46,  765,  765,  765,  765,  765,   49,
-      765,  393,   44,   44,   44,  765,   49,   46,  394,  765,
-      765,  765,   49,   44,   44,   44,  765,  765,   46,  396,
-       49,   44,   44,   44,  765,  765,   46,  398,  765,  765,
-      397,   44,   44,   44,   49,  765,   46,   44,   44,   44,
-      765,  399,   46,  765,  765,   49,  402,   44,   44,   44,
-      765,  765,   46,   49,  765,   44,   44,   44,  765,  401,
-       46,  765,  765,   49,  765,  400,   44,   44,   44,   49,
-      765,   46,  765,   44,   44,   44,  765,  765,   46,   49,
-
-       44,   44,   44,  765,  765,   46,  765,   49,  765,  765,
-      403,   44,   44,   44,  405,  765,   46,  404,   49,  765,
-      765,   44,   44,   44,  406,   49,   46,  765,   44,   44,
-       44,  765,   49,   46,  765,   44,   44,   44,  407,  408,
-       46,  765,  765,   49,   44,   44,   44,  765,  765,   46,
-       44,   44,   44,   49,  765,   46,  765,  409,  765,  410,
-       49,   44,   44,   44,  765,  765,   46,   49,  765,   44,
-       44,   44,  765,  765,   46,  412,   49,  765,  411,  413,
-      765,  765,   49,   44,   44,   44,  765,  765,   46,  765,
-       44,   44,   44,   49,  765,   46,  765,  765,  765,  415,
-
-      414,   49,   44,   44,   44,  765,  765,   46,  765,  765,
-      765,   44,   44,   44,  765,   49,  421,  765,   44,   44,
-       44,  416,   49,   46,   44,   44,   44,  765,  420,   46,
-       44,   44,   44,  765,   49,   46,  765,   44,   44,   44,
-      417,  418,   46,   49,  765,  422,   44,   44,   44,  765,
-       49,   46,   44,   44,   44,  419,   49,   46,   44,   44,
-       44,  765,   49,  428,  765,  765,  765,  765,  429,   49,
-      765,  765,   44,   44,   44,  765,  423,   46,   49,  765,
-      424,  765,  425,  765,   49,  765,   44,   44,   44,  765,
-       49,   46,  765,  765,   44,   44,   44,  430,  426,   46,
-
-      765,  765,  427,  765,   49,   44,   44,   44,  765,  431,
-       46,   44,   44,   44,  765,  433,   46,  765,   49,  765,
-      765,  434,   44,   44,   44,  765,   49,   46,   44,   44,
-       44,  432,  765,   46,   44,   44,   44,   49,  765,   46,
-      765,  765,  765,   49,  438,  435,   44,   44,   44,  765,
-      765,   46,  765,  765,   49,  765,  765,   44,   44,   44,
-       49,  765,   46,  437,  765,  765,   49,  440,   44,   44,
-       44,  765,  765,  441,  436,   44,   44,   44,   49,  765,
-       46,  765,  765,  442,  765,   44,   44,   44,  765,   49,
-       46,   44,   44,   44,  765,  765,  445,  765,  439,  765,
-
-       49,   44,   44,   44,  765,  765,   46,   49,   44,   44,
-       44,  765,  765,   46,   44,   44,   44,   49,  447,   46,
-      443,  765,  765,   49,   44,   44,   44,  765,  765,   46,
-       44,   44,   44,   49,  765,   46,  444,  765,  446,  765,
-       49,  765,   44,   44,   44,  765,   49,   46,   44,   44,
-       44,  765,  450,   46,  765,  765,   49,  765,  765,  765,
-      448,  765,   49,  765,  765,   44,   44,   44,  765,  451,
-       46,   44,   44,   44,   49,  453,   46,  765,  449,  765,
-       49,   44,   44,   44,  765,  765,   46,   44,   44,   44,
-      765,  765,   46,  765,  765,  452,  765,   49,  765,   44,
-
-       44,   44,  765,   49,   46,   44,   44,   44,  765,  457,
-       46,  765,  765,   49,  765,  765,  454,  765,  765,   49,
-      765,   44,   44,   44,  455,  456,   46,   44,   44,   44,
-      765,   49,   46,   44,   44,   44,  765,   49,   46,   44,
-       44,   44,  765,  765,   46,   44,   44,   44,  458,  765,
-       46,  765,  765,   49,  765,   44,   44,   44,  765,   49,
-       46,  765,   44,   44,   44,   49,  460,   46,  461,  765,
-      765,   49,  459,  765,   44,   44,   44,   49,  462,   46,
-       44,   44,   44,  765,  765,   46,  765,   49,  463,  765,
-      765,  765,  464,  765,   49,   44,   44,   44,  765,  765,
-
-      468,  465,   44,   44,   44,  765,   49,  469,  765,  466,
-      765,  765,   49,   44,   44,   44,  765,  765,   46,  467,
-       44,   44,   44,  765,  765,   46,  765,   49,   44,   44,
-       44,  765,  765,   46,   49,   44,   44,   44,  765,  765,
-       46,   44,   44,   44,  765,   49,   46,  765,   44,   44,
-       44,  765,   49,   46,   44,   44,   44,  765,  471,  476,
-       49,  765,  765,  470,   44,   44,   44,   49,  765,   46,
-       44,   44,   44,   49,  473,   46,  472,  765,  765,  474,
-       49,  765,   44,   44,   44,  765,   49,   46,   44,   44,
-       44,  765,  765,   46,  765,  765,   49,  765,  765,  475,
-
-      765,  765,   49,  477,  765,   44,   44,   44,  765,  765,
-       46,   44,   44,   44,   49,  478,   46,   44,   44,   44,
-       49,  765,   46,   44,   44,   44,  765,  765,   46,   44,
-       44,   44,  765,  479,   46,  765,  480,   49,  765,   44,
-       44,   44,  765,   49,   46,   44,   44,   44,  765,   49,
-       46,   44,   44,   44,  765,   49,   46,  765,  765,  765,
-      765,   49,  481,  482,  765,   44,   44,   44,  765,  483,
-       46,   49,  485,   44,   44,   44,  484,   49,  491,   44,
-       44,   44,  765,   49,   46,  765,  765,  765,  487,  765,
-      765,  486,  765,   44,   44,   44,  765,   49,  493,   44,
-
-       44,   44,  765,  765,   46,   49,  765,  765,  488,  765,
-      765,   49,  489,   44,   44,   44,  765,  490,   46,   44,
-       44,   44,  492,  765,   46,   49,  765,   44,   44,   44,
-      765,   49,   46,   44,   44,   44,  765,  765,   46,  765,
-      765,   44,   44,   44,  494,   49,   46,  765,   44,   44,
-       44,   49,  765,   46,  496,   44,   44,   44,  765,   49,
-       46,  765,  765,  765,  495,   49,  497,  765,  765,  765,
-       44,   44,   44,   49,  765,   46,   44,   44,   44,  499,
-       49,   46,  498,   44,   44,   44,  765,   49,   46,   44,
-       44,   44,  765,  504,   46,  765,   44,   44,   44,  500,
-
-      765,   46,   49,  765,  501,  502,  765,  765,   49,   44,
-       44,   44,  765,  765,   46,   49,  765,   44,   44,   44,
-      765,   49,  508,  765,   44,   44,   44,  503,   49,   46,
-      765,  765,  506,  765,  505,   44,   44,   44,  765,  765,
-       46,   49,   44,   44,   44,  765,  765,   46,  507,   49,
-       44,   44,   44,  765,  765,   46,   49,  765,   44,   44,
-       44,  765,  765,   46,   44,   44,   44,   49,  765,   46,
-       44,   44,   44,  765,   49,   46,  509,  765,   44,   44,
-       44,  511,   49,   46,  765,  765,  510,  765,  765,  512,
-       49,  765,   44,   44,   44,  765,   49,   46,   44,   44,
-
-       44,  765,   49,   46,  765,  765,   44,   44,   44,  513,
-       49,   46,   44,   44,   44,  516,  514,  521,  765,  765,
-      515,   44,   44,   44,   49,  765,  522,  517,  765,  765,
-       49,  518,   44,   44,   44,  765,  765,   46,   49,  765,
-       44,   44,   44,  765,   49,   46,  765,  519,  765,   44,
-       44,   44,  765,   49,  525,  765,  520,   44,   44,   44,
-      765,  765,   46,  765,   49,  765,   44,   44,   44,  765,
-      523,  527,   49,   44,   44,   44,  765,  765,   46,  524,
-      765,   49,   44,   44,   44,  765,  765,   46,  765,   49,
-      765,   44,   44,   44,  765,  765,   46,  765,   49,   44,
-
-       44,   44,  765,  526,   46,   49,   44,   44,   44,  765,
-      765,   46,  765,  765,   49,  765,  528,  765,  765,   44,
-       44,   44,  765,   49,   46,  765,  765,   44,   44,   44,
-      765,   49,  534,  765,  765,  765,  765,  765,   49,  529,
-      530,   44,   44,   44,  765,  531,   46,  765,  765,  532,
-      765,   49,  765,   44,   44,   44,  765,  533,   46,   49,
-       44,   44,   44,  765,  765,   46,   44,   44,   44,  765,
-      765,   46,  765,   49,  765,  765,  535,   44,   44,   44,
-      765,  765,   46,  765,  765,   49,   44,   44,   44,  765,
-      765,   46,   49,  765,   44,   44,   44,  765,   49,   46,
-
-      537,  538,   44,   44,   44,  765,  765,   46,  765,   49,
-      536,   44,   44,   44,  765,  765,   46,  765,   49,  765,
-      765,  543,   44,   44,   44,  539,   49,  544,   44,   44,
-       44,  765,  765,   46,   49,   44,   44,   44,  540,  541,
-       46,  765,  765,   49,  765,   44,   44,   44,  765,  765,
-       46,  765,  542,  765,   49,  765,   44,   44,   44,  765,
-       49,   46,  765,   44,   44,   44,  765,   49,   46,   44,
-       44,   44,  765,  765,   46,  765,  545,   49,   44,   44,
-       44,  765,  765,   46,  547,  765,  765,  546,   49,   44,
-       44,   44,  765,  765,   46,   49,  765,  765,   44,   44,
-
-       44,   49,  549,   46,  765,  548,   44,   44,   44,  765,
-       49,   46,   44,   44,   44,  765,  765,  555,  765,  550,
-      765,   49,  556,  765,  552,  765,  765,  765,  551,  765,
-       49,  765,   44,   44,   44,  765,  765,   46,   49,  765,
-       44,   44,   44,  765,   49,   46,   44,   44,   44,  553,
-      765,   46,   44,   44,   44,  765,  554,   46,  765,  765,
-       44,   44,   44,  557,   49,   46,   44,   44,   44,  765,
-      765,   46,   49,  765,  765,  559,  765,  765,   49,  765,
-      765,  765,  765,  558,   49,   44,   44,   44,  765,  765,
-       46,  561,   49,  765,   44,   44,   44,  765,   49,   46,
-
-      560,  765,  765,   44,   44,   44,  563,  765,   46,   44,
-       44,   44,  562,  566,   46,  765,  765,   49,   44,   44,
-       44,  765,  765,   46,  765,  765,   49,   44,   44,   44,
-      765,  765,   46,  765,  765,   49,  765,  564,   44,   44,
-       44,   49,  765,   46,  765,  565,   44,   44,   44,  765,
-       49,   46,   44,   44,   44,  765,  567,   46,  765,   49,
-       44,   44,   44,  765,  568,   46,   44,   44,   44,  765,
-       49,  574,  765,  569,   44,   44,   44,  765,   49,   46,
-       44,   44,   44,  765,   49,   46,  765,  570,  765,  765,
-      765,  572,   49,  765,  765,  571,  765,  765,   49,   44,
-
-       44,   44,  765,  765,   46,  765,   49,  765,  573,   44,
-       44,   44,   49,  765,   46,  765,   44,   44,   44,  765,
-      575,   46,   44,   44,   44,  765,  765,  580,  765,  576,
-      765,   49,   44,   44,   44,  765,  765,  581,  577,  765,
-      765,   49,   44,   44,   44,  765,  765,   46,   49,  765,
-       44,   44,   44,  579,   49,   46,   44,   44,   44,  765,
-      578,   46,  765,  765,   49,   44,   44,   44,  765,  765,
-       46,   44,   44,   44,   49,  765,   46,  765,   44,   44,
-       44,  586,   49,   46,   44,   44,   44,  765,   49,   46,
-      582,   44,   44,   44,  765,  583,   46,   49,  765,  765,
-
-       44,   44,   44,   49,  585,   46,  584,   44,   44,   44,
-       49,  765,   46,   44,   44,   44,   49,  765,  592,  588,
-       44,   44,   44,   49,  765,  593,  589,  765,  587,   44,
-       44,   44,   49,  765,   46,  765,   44,   44,   44,   49,
-      765,  595,  765,  591,  765,   49,  596,  765,   44,   44,
-       44,  765,   49,  597,  590,  765,  765,   44,   44,   44,
-      765,   49,   46,  765,   44,   44,   44,  765,   49,   46,
-      765,  765,  594,   44,   44,   44,  765,  765,   46,  765,
-       49,   44,   44,   44,  765,  765,   46,  598,  765,   49,
-       44,   44,   44,  599,  765,  603,   49,  765,  765,  600,
-
-      765,   44,   44,   44,  765,   49,   46,   44,   44,   44,
-      765,  765,  605,   49,  765,  765,  602,  765,   44,   44,
-       44,  765,   49,   46,  601,   44,   44,   44,  765,  765,
-      607,  765,  765,   49,  765,   44,   44,   44,  765,   49,
-       46,   44,   44,   44,  604,  765,   46,   44,   44,   44,
-       49,  765,   46,   44,   44,   44,  765,   49,   46,   44,
-       44,   44,  765,  606,   46,  765,  765,   49,  765,   44,
-       44,   44,  765,   49,   46,  765,  765,  765,  608,   49,
-      609,  765,   44,   44,   44,   49,  610,   46,   44,   44,
-       44,   49,  765,   46,   44,   44,   44,  765,  611,   46,
-
-      765,   49,   44,   44,   44,  765,  765,   46,  765,  612,
-       44,   44,   44,  765,   49,   46,  613,   44,   44,   44,
-       49,  614,   46,   44,   44,   44,   49,  615,   46,  765,
-       44,   44,   44,  765,   49,   46,   44,   44,   44,  765,
-      765,  622,   49,   44,   44,   44,  616,  765,   46,   49,
-      765,  765,  765,  617,  618,   49,  620,  765,  765,  619,
-      765,  765,   49,  765,   44,   44,   44,  765,   49,   46,
-      765,  765,   44,   44,   44,   49,  765,   46,   44,   44,
-       44,  765,  621,   46,  765,  765,  623,   44,   44,   44,
-      765,  765,   46,  765,  765,  765,   49,   44,   44,   44,
-
-      765,  765,   46,  624,   49,  765,   44,   44,   44,  765,
-       49,   46,  765,   44,   44,   44,  765,  765,   46,   49,
-      765,  765,  627,  625,  765,   44,   44,   44,  626,   49,
-       46,  765,  628,  765,   44,   44,   44,  765,   49,   46,
-      765,   44,   44,   44,  629,   49,   46,   44,   44,   44,
-      630,  765,  634,   44,   44,   44,  765,   49,  635,   44,
-       44,   44,  765,  765,   46,  765,   49,  765,  765,  632,
-       44,   44,   44,   49,  765,   46,  631,  765,  765,   49,
-      765,  765,   44,   44,   44,   49,  633,   46,   44,   44,
-       44,   49,  765,   46,   44,   44,   44,  765,  765,   46,
-
-      765,  765,   49,   44,   44,   44,  765,  636,   46,  765,
-       44,   44,   44,  637,   49,  642,  765,   44,   44,   44,
-       49,  765,   46,   44,   44,   44,   49,  643,  645,  765,
-      765,   44,   44,   44,  638,   49,  646,  765,  639,   44,
-       44,   44,   49,  765,   46,  640,  641,  765,  765,   49,
-      765,   44,   44,   44,  765,   49,  648,   44,   44,   44,
-      765,  765,   46,   49,  765,   44,   44,   44,  644,  765,
-       46,   49,   44,   44,   44,  765,  765,   46,  765,   44,
-       44,   44,  647,   49,  653,  765,   44,   44,   44,   49,
-      649,   46,  765,   44,   44,   44,  650,   49,   46,  765,
-
-      651,  765,  765,  765,   49,   44,   44,   44,  765,  765,
-       46,   49,  765,  765,  765,   44,   44,   44,   49,  652,
-       46,   44,   44,   44,  654,   49,   46,   44,   44,   44,
-      765,  765,   46,  655,   44,   44,   44,   49,  765,  660,
-       44,   44,   44,  765,  656,   46,  765,   49,  765,   44,
-       44,   44,  765,   49,  662,   44,   44,   44,  657,   49,
-       46,  765,   44,   44,   44,  765,   49,  664,  765,   44,
-       44,   44,   49,  658,   46,   44,   44,   44,  659,  765,
-       46,   49,  765,  765,  765,  765,  765,   49,  661,  765,
-       44,   44,   44,  765,   49,  667,  765,   44,   44,   44,
-
-      765,   49,  668,   44,   44,   44,  663,   49,  669,   44,
-       44,   44,  765,  765,   46,  666,  665,  765,   44,   44,
-       44,  765,   49,   46,  765,   44,   44,   44,  765,   49,
-      672,   44,   44,   44,  765,   49,   46,   44,   44,   44,
-      765,   49,   46,  765,   44,   44,   44,  765,  670,   46,
-       49,   44,   44,   44,  765,  765,   46,   49,  765,  765,
-       44,   44,   44,   49,  671,  677,   44,   44,   44,   49,
-      765,  678,  765,   44,   44,   44,   49,  673,   46,   44,
-       44,   44,  765,   49,   46,   44,   44,   44,  674,  765,
-       46,  765,   49,  765,  765,  765,  675,  765,   49,   44,
-
-       44,   44,  765,  676,   46,   49,  765,   44,   44,   44,
-      765,   49,   46,   44,   44,   44,  679,   49,   46,  765,
-       44,   44,   44,  765,  681,   46,  765,  765,  765,  765,
-      680,   49,   44,   44,   44,  765,  765,   46,  765,   49,
-      765,  765,  682,  765,  765,   49,  683,  765,   44,   44,
-       44,  765,   49,   46,  765,  765,   44,   44,   44,  685,
-      684,   46,  765,  765,   49,   44,   44,   44,  765,  765,
-       46,   44,   44,   44,  765,  765,   46,   44,   44,   44,
-       49,  765,  691,  686,   44,   44,   44,  687,   49,  692,
-       44,   44,   44,  765,  688,   46,  765,   49,  765,   44,
-
-       44,   44,  765,   49,   46,  765,   44,   44,   44,   49,
-      690,   46,  765,  689,  765,  765,   49,  765,   44,   44,
-       44,  765,   49,   46,   44,   44,   44,  765,  695,   46,
-      765,   49,  765,  693,   44,   44,   44,  765,   49,  698,
-      765,   44,   44,   44,  765,  765,   46,   44,   44,   44,
-       49,  765,  700,  765,  765,  694,   49,  696,   44,   44,
-       44,  765,  765,  701,  765,  765,   49,  765,  765,   44,
-       44,   44,  697,   49,   46,   44,   44,   44,  765,   49,
-       46,  699,   44,   44,   44,  703,  765,   46,  765,  765,
-       49,   44,   44,   44,  765,  765,  705,   44,   44,   44,
-
-      765,   49,   46,   44,   44,   44,  765,   49,  707,  765,
-       44,   44,   44,  708,   49,   46,  765,   44,   44,   44,
-      704,  702,  710,   49,  765,   44,   44,   44,  765,   49,
-       46,   44,   44,   44,  765,   49,   46,  765,   44,   44,
-       44,  765,   49,   46,  765,  706,   44,   44,   44,   49,
-      765,   46,  765,   44,   44,   44,  765,   49,   46,  709,
-      765,  765,  765,   49,   44,   44,   44,  765,  765,   46,
-       49,  765,  711,  765,  712,   44,   44,   44,   49,  765,
-       46,  713,   44,   44,   44,   49,  765,   46,  765,  765,
-      765,  765,  715,  765,  714,  765,   49,  765,   44,   44,
-
-       44,  765,  765,   46,   44,   44,   44,   49,  719,   46,
-      765,  716,  765,  765,   49,  765,   44,   44,   44,  765,
-      717,   46,   44,   44,   44,  765,  765,   46,  765,  765,
-       49,  765,  718,   44,   44,   44,   49,  765,  723,  765,
-      765,   44,   44,   44,  765,  720,   46,  765,   49,  765,
-      765,  724,  765,  765,   49,   44,   44,   44,  765,  765,
-       46,  765,  721,  765,  765,   49,  765,   44,   44,   44,
-      765,  722,   46,   49,   44,   44,   44,  765,  765,   46,
-       44,   44,   44,  765,  765,  728,  765,   49,   44,   44,
-       44,  765,  765,   46,  725,  765,   44,   44,   44,   49,
-
-      765,   46,   44,   44,   44,  765,   49,   46,   44,   44,
-       44,  765,   49,   46,  765,  726,  765,  727,  765,  765,
-       49,   44,   44,   44,  765,  765,   46,  729,   49,  765,
-       44,   44,   44,  765,   49,   46,  765,   44,   44,   44,
-       49,  765,  735,  765,   44,   44,   44,  765,  730,   46,
-      765,  731,  765,   49,  765,  732,  765,  765,  733,   44,
-       44,   44,   49,  765,   46,   44,   44,   44,  734,   49,
-      738,  765,   44,   44,   44,  765,   49,   46,   44,   44,
-       44,  765,  765,   46,   44,   44,   44,  736,  765,   46,
-      765,   49,  765,  765,   44,   44,   44,   49,  737,   46,
-
-      765,   44,   44,   44,   49,  765,   46,   44,   44,   44,
-       49,  739,   46,   44,   44,   44,   49,  740,   46,   44,
-       44,   44,  765,  765,   46,  765,   49,  765,  765,   44,
-       44,   44,  741,   49,   46,   44,   44,   44,  765,   49,
-       46,   44,   44,   44,  742,   49,   46,  765,  765,  765,
-      765,   49,  743,  765,  744,  765,  765,  765,  765,  765,
-      745,   49,  746,   44,   44,   44,  765,   49,   46,   44,
-       44,   44,  765,   49,   46,  765,   44,   44,   44,  765,
-      747,   46,  765,   44,   44,   44,  765,  748,  753,   44,
-       44,   44,  749,  765,   46,   49,  765,   44,   44,   44,
-
-      765,   49,   46,  765,  765,   44,   44,   44,   49,  765,
-       46,  750,  751,  765,  765,   49,  765,  765,  765,  752,
-      765,   49,  765,   44,   44,   44,  765,  754,  757,   49,
-       44,   44,   44,  765,  765,   46,  765,   49,   44,   44,
-       44,  765,  765,   46,  755,  756,   44,   44,   44,  765,
-      765,  760,   44,   44,   44,   49,  765,   46,   44,   44,
-       44,  765,   49,   46,   44,   44,   44,  765,  765,   46,
-       49,  758,   44,   44,   44,  765,  765,  764,   49,  765,
-      765,  759,  765,  765,   49,  765,  765,  765,  765,  765,
-       49,  761,  765,  765,  765,  765,   49,  765,  765,  765,
-
-      765,  765,  765,  765,   49,  765,  765,  765,  762,  765,
-      765,  765,  765,  765,  765,  763,   36,   36,   36,   36,
-       36,   36,   36,   45,   45,   45,   45,   45,   45,   45,
-       66,  765,   66,   66,   66,   66,   66,   85,  765,   85,
-      765,   85,   85,   85,   87,   87,   87,   87,   87,   87,
-       87,   92,   92,   92,   92,   92,   92,   92,  135,  765,
-      135,  135,  135,  135,  135,   87,   87,  765,   87,  147,
-      147,  147,  147,  147,  211,  211,  271,  271,  337,  337,
-       87,   87,   11,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765
+       12,   12,   12,   41,   42,   41,   42,   73,   12,   12,
+       79,   12,   74,  399,   12,   76,   12,   76,   12,   78,
+
+       77,   77,   77,  343,   12,   12,   12,   12,   39,   12,
+       12,  277,   12,   80,   78,   79,   68,   12,   69,   69,
+       69,  154,   78,   12,   12,   44,   44,   44,   70,   80,
+       46,   68,  141,   71,   71,   71,   80,   81,   82,   72,
+       72,   72,   89,   70,   70,  216,  139,   47,   48,   70,
+       49,   42,   83,   42,   42,  141,   42,   50,  154,   70,
+       51,  140,   52,   53,   54,   70,  139,   55,   56,   90,
+       57,   58,   59,   60,   61,   62,   63,   64,   65,   66,
+       68,  140,   71,   71,   71,   44,   44,   44,   89,  141,
+       46,  212,   70,   44,   44,   44,  139,  147,   46,  140,
+
+       44,   44,   44,  146,  145,   46,   43,  212,   70,   44,
+       44,   44,  144,   96,   46,   90,  142,   50,   87,  143,
+       45,   85,   44,   44,   44,   50,   92,   46,   77,   77,
+       77,   84,   50,  212,   93,   91,  210,   44,   44,   44,
+       45,   50,   46,   75,   45,   44,   44,   44,   45,  215,
+       46,   44,   44,   44,   50,   45,   46,   94,   45,  210,
+       45,   97,   44,   44,   44,   43,  211,   46,  772,   50,
+      211,  772,   98,   44,   44,   44,  772,   50,   46,  772,
+      102,  210,   99,   50,  103,  100,  211,  104,  101,  772,
+      214,   44,   44,   44,   50,   76,   46,   76,  105,  108,
+
+       77,   77,   77,  109,  213,   50,  110,  772,  772,  106,
+      772,  111,   44,   44,   44,  772,  275,   46,  107,  772,
+      112,  772,  113,   50,   44,   44,   44,  772,  772,   46,
+      114,  115,  275,  772,  116,   44,   44,   44,  772,  117,
+       46,   44,   44,   44,   50,  772,   46,  118,   77,   77,
+       77,  772,  275,   44,   44,   44,   50,  772,   46,  119,
+      772,   44,   44,   44,  772,  772,   46,   50,  276,   72,
+       72,   72,  772,   50,  772,  772,  127,  772,  772,   70,
+      128,   44,   44,   44,  120,   50,   46,  772,  121,   44,
+       44,   44,  129,   50,   46,   70,  772,   72,   72,   72,
+
+      133,  130,  131,  772,  134,  772,  132,   70,  772,   44,
+       44,   44,  772,   50,   46,  772,  772,  772,  135,  772,
+      772,   50,  772,   70,  122,  772,  772,  123,  124,  772,
+      772,   68,  136,   69,   69,   69,  772,  125,  772,  126,
+      772,   50,  772,   70,  137,   68,  772,   71,   71,   71,
+       44,   44,   44,  772,  772,   46,  772,   70,  772,   70,
+       44,   44,   44,  772,  772,  149,   44,   44,   44,  772,
+      772,  150,  772,   70,   44,   44,   44,  772,  772,   46,
+      772,  772,   50,  772,   44,   44,   44,  148,  772,   46,
+      772,  772,   50,  772,  772,  151,  772,  772,   50,   44,
+
+       44,   44,  772,  772,   46,  772,   50,  772,  772,  772,
+      772,  772,  772,  772,  772,  152,   50,  155,  155,  155,
+      772,  772,  772,  772,  155,  155,  155,  155,  155,  772,
+      772,   50,   44,   44,   44,  772,  772,   46,  772,  155,
+      155,  155,  155,  155,  155,   44,   44,   44,  772,  156,
+       46,  772,   44,   44,   44,  772,  772,   46,   44,   44,
+       44,  772,  772,   46,   50,  772,   44,   44,   44,  772,
+      772,   46,  772,  772,  772,  157,  772,   50,  772,  772,
+       44,   44,   44,  158,   50,   46,   44,   44,   44,  772,
+       50,   46,  159,  772,   44,   44,   44,  772,   50,   46,
+
+      772,  772,  162,  163,  772,  772,  160,  772,  772,  772,
+      161,  164,   50,  772,  772,  772,  772,  165,   50,   44,
+       44,   44,  772,  772,   46,  772,   50,  772,  772,  166,
+      772,  167,   44,   44,   44,  772,  772,   46,   44,   44,
+       44,  772,  772,   46,  772,  772,  168,   44,   44,   44,
+      772,   50,   46,   44,   44,   44,  169,  174,  175,  772,
+      772,   44,   44,   44,   50,  772,   46,  772,  170,  772,
+       50,   44,   44,   44,  772,  772,   46,  772,  772,   50,
+      171,  178,  772,  172,  772,   50,   44,   44,   44,  772,
+      772,   46,  176,   50,  772,  173,   44,   44,   44,  772,
+
+      772,   46,  772,   50,   44,   44,   44,  772,  772,   46,
+       44,   44,   44,  177,  772,   46,  772,  772,   50,  772,
+      772,  179,   44,   44,   44,  772,  772,   46,   50,   44,
+       44,   44,  772,  180,   46,  772,   50,  772,  772,  772,
+      181,  772,   50,  772,   44,   44,   44,  772,  772,   46,
+      772,  182,  772,  772,   50,   44,   44,   44,  772,  183,
+       46,   50,   44,   44,   44,  772,  772,   46,   44,   44,
+       44,  772,  772,   46,  772,  184,   50,  772,  189,   44,
+       44,   44,  772,  772,   46,  772,  772,   50,   44,   44,
+       44,  772,  772,   46,   50,  772,  185,  772,  772,  772,
+
+       50,   44,   44,   44,  772,  772,   46,  186,  772,  772,
+      772,   50,  187,  188,   44,   44,   44,  772,  772,   46,
+       50,   44,   44,   44,  772,  772,   46,  772,  772,  190,
+       44,   44,   44,   50,  772,   46,  191,  772,  772,  772,
+      192,  772,   44,   44,   44,  772,   50,   46,  772,   44,
+       44,   44,  772,   50,   46,   44,   44,   44,  772,  772,
+       46,  772,   50,  193,   44,   44,   44,  202,  772,   46,
+      772,  200,  772,  772,   50,  201,  772,  203,   44,   44,
+       44,   50,  772,   46,  772,  204,  772,   50,   44,   44,
+       44,  772,  772,   46,  772,  772,   50,  772,  772,  194,
+
+      195,  196,   44,   44,   44,  772,  205,   46,  772,  197,
+       50,  198,   44,   44,   44,  199,  772,   46,  772,  772,
+       50,   44,   44,   44,  206,  772,   46,   44,   44,   44,
+      772,  772,  219,  772,   50,  772,  772,  207,  772,  772,
+      772,  208,  772,  772,   50,   44,   44,   44,  772,  772,
+       46,  772,  772,   50,  772,  772,  772,  209,  772,   50,
+      772,   44,   44,   44,  772,  772,   46,   44,   44,   44,
+      218,  772,   46,  772,   44,   44,   44,   50,  772,   46,
+      772,  772,  772,  772,  772,  772,  220,  221,  221,  221,
+      772,  772,  772,   50,  221,  221,  221,  221,  221,   50,
+
+      223,  772,  222,   44,   44,   44,   50,  772,   46,  221,
+      221,  221,  221,  221,  221,   44,   44,   44,  772,  772,
+       46,  772,   44,   44,   44,  226,  225,   46,   44,   44,
+       44,  772,  772,   46,  772,   50,  772,  772,   44,   44,
+       44,  772,  224,   46,  772,  772,  772,   50,   44,   44,
+       44,  772,  772,   46,   50,  772,  772,  227,  772,  772,
+       50,   44,   44,   44,  772,  772,   46,   44,   44,   44,
+       50,  772,   46,  772,   44,   44,   44,  772,  772,   46,
+       50,  228,  772,  229,   44,   44,   44,  230,  772,   46,
+       44,   44,   44,   50,  772,   46,   44,   44,   44,   50,
+
+      772,   46,   44,   44,   44,  232,   50,   46,  772,  233,
+      231,  772,   44,   44,   44,  772,   50,   46,  772,   44,
+       44,   44,   50,  234,   46,   44,   44,   44,   50,  772,
+       46,   44,   44,   44,   50,  235,   46,  772,  772,  236,
+       44,   44,   44,  772,   50,   46,  237,  772,   44,   44,
+       44,   50,  772,   46,   44,   44,   44,   50,  772,   46,
+      240,  772,  772,   50,  238,   44,   44,   44,  239,  772,
+       46,  772,   50,  772,  772,  245,  772,  772,  241,  242,
+       50,  772,  772,  243,  772,  772,   50,   44,   44,   44,
+      772,  772,   46,   44,   44,   44,  772,   50,   46,   44,
+
+       44,   44,  772,  772,   46,  244,   44,   44,   44,  248,
+      772,   46,   44,   44,   44,  772,  772,   46,  772,   50,
+      772,   44,   44,   44,  772,   50,   46,   44,   44,   44,
+      772,   50,   46,  772,  247,  772,  772,  246,   50,  772,
+      772,   44,   44,   44,   50,  249,   46,   44,   44,   44,
+      772,  772,   46,   50,  772,  250,   44,   44,   44,   50,
+      772,   46,  252,   44,   44,   44,  772,  772,   46,  772,
+      251,  772,  772,   50,  772,  772,  772,  772,  772,   50,
+       44,   44,   44,  772,  772,   46,  772,  772,   50,   44,
+       44,   44,  253,  772,   46,   50,  254,   44,   44,   44,
+
+      772,  772,   46,  772,   44,   44,   44,  255,  256,   46,
+      772,  772,   50,   44,   44,   44,  772,  772,   46,  772,
+      257,   50,   44,   44,   44,  772,  772,   46,  772,   50,
+      772,  772,  258,  772,  772,  259,   50,   44,   44,   44,
+      772,  772,   46,  772,  772,   50,  772,  260,   44,   44,
+       44,  772,  772,   46,   50,  772,  772,  262,   44,   44,
+       44,  261,  772,   46,  772,   44,   44,   44,  772,   50,
+       46,  772,  772,   44,   44,   44,  263,  772,   46,  772,
+       50,   44,   44,   44,  772,  772,   46,  264,  772,  772,
+       50,   44,   44,   44,  772,  772,   46,   50,   44,   44,
+
+       44,  772,  772,   46,  266,   50,  772,  772,  772,   44,
+       44,   44,  265,   50,   46,  772,  772,  267,  268,   44,
+       44,   44,  772,   50,   46,  772,  772,   44,   44,   44,
+       50,  772,   46,  772,  772,   44,   44,   44,  269,  772,
+       46,   50,   44,   44,   44,  772,  772,   46,  271,  772,
+      270,   50,  772,  772,  772,  772,  279,  280,  272,   50,
+       44,   44,   44,  772,  281,   46,  772,   50,   44,   44,
+       44,  772,  772,   46,   50,  772,  772,  273,  274,  772,
+      772,  772,  772,  772,  772,   44,   44,   44,  772,  772,
+       46,  772,   50,  772,  772,  772,  772,  772,  772,  772,
+
+       50,  772,  772,  282,  283,  283,  283,  772,  772,  772,
+      772,  283,  283,  283,  283,  283,  772,   50,   44,   44,
+       44,  772,  772,  286,  772,  284,  283,  283,  283,  283,
+      283,  283,  285,   44,   44,   44,  772,  772,   46,   44,
+       44,   44,  772,  772,   46,  772,   44,   44,   44,  772,
+       50,  289,   44,   44,   44,  772,  772,   46,   44,   44,
+       44,  772,  772,   46,  772,   50,  772,   44,   44,   44,
+      772,   50,   46,  772,  772,   44,   44,   44,   50,  288,
+       46,  772,  772,  287,   50,  293,   44,   44,   44,  294,
+       50,  295,  772,  290,  772,   44,   44,   44,  772,   50,
+
+       46,  291,  772,  772,   44,   44,   44,   50,  292,   46,
+       44,   44,   44,  772,  772,   46,  772,  772,   50,   44,
+       44,   44,  772,  772,   46,  772,  772,   50,   44,   44,
+       44,  772,  772,   46,  772,  772,   50,  772,   44,   44,
+       44,  772,   50,  301,  296,   44,   44,   44,  302,  772,
+       46,   50,  772,  772,  297,  772,   44,   44,   44,  772,
+       50,   46,  772,  298,  772,  772,   44,   44,   44,  299,
+       50,   46,  772,   44,   44,   44,  772,   50,   46,  300,
+      772,   44,   44,   44,  305,  303,   46,  772,   50,  304,
+       44,   44,   44,  772,  306,   46,  772,  772,   50,   44,
+
+       44,   44,  772,  772,   46,   50,   44,   44,   44,  772,
+      772,   46,  772,   50,  772,   44,   44,   44,  307,  309,
+       46,  772,   50,  308,  772,   44,   44,   44,  772,  310,
+       46,   50,   44,   44,   44,  772,  772,  315,   50,  772,
+      772,  312,  311,   44,   44,   44,  772,   50,   46,  772,
+       44,   44,   44,  772,  313,   46,  772,   50,   44,   44,
+       44,  772,  772,   46,   50,   44,   44,   44,  772,  772,
+       46,  772,  772,  772,  772,   50,  314,  772,   44,   44,
+       44,  772,   50,   46,   44,   44,   44,  772,  772,   46,
+       50,  316,  772,   44,   44,   44,  772,   50,  322,  772,
+
+       44,   44,   44,  317,  318,   46,   44,   44,   44,  772,
+       50,   46,  772,   44,   44,   44,   50,  772,   46,  772,
+      319,  772,  772,  772,  772,   50,  320,  321,   44,   44,
+       44,  772,   50,   46,  772,   44,   44,   44,   50,  324,
+       46,  772,  772,  325,  323,   50,  772,   44,   44,   44,
+      772,  326,   46,  772,  327,  772,   44,   44,   44,  772,
+       50,   46,  772,   44,   44,   44,  772,   50,   46,   44,
+       44,   44,  772,  772,   46,  328,  772,  772,  772,   50,
+      772,  772,   44,   44,   44,  329,  772,   46,   50,   44,
+       44,   44,  772,  772,   46,   50,  772,   44,   44,   44,
+
+      772,   50,   46,  772,  330,   44,   44,   44,  333,  772,
+       46,  331,  772,  332,   50,   44,   44,   44,  772,  772,
+      338,   50,   44,   44,   44,  772,  772,  339,  335,   50,
+      772,  772,  334,   44,   44,   44,  336,   50,  340,  772,
+       44,   44,   44,  772,  337,  341,  772,   50,   44,   44,
+       44,  772,  772,   46,   50,   44,   44,   44,  772,  772,
+      345,   44,   44,   44,  772,   50,  346,  772,   44,   44,
+       44,  772,   50,   46,  772,  772,   44,   44,   44,  772,
+       50,   46,  772,   44,   44,   44,  342,   50,  349,   44,
+       44,   44,  772,   50,   46,  772,   44,   44,   44,  772,
+
+       50,   46,  772,  772,  772,  772,  347,  772,   50,  772,
+      772,   44,   44,   44,  772,   50,   46,  772,  772,  772,
+      772,   50,  772,  348,   45,   45,   45,  772,   50,  772,
+      772,   45,   45,   45,   45,   45,  772,   44,   44,   44,
+      772,  350,   46,   50,  351,  772,   45,   45,   45,   45,
+       45,   45,   44,   44,   44,  772,  772,   46,  772,  352,
+       44,   44,   44,  772,  772,   46,   44,   44,   44,   50,
+      772,   46,  772,   44,   44,   44,  772,  772,   46,  772,
+      772,  772,  353,  772,   50,   44,   44,   44,  772,  772,
+       46,  772,   50,  772,  772,  355,  772,  772,   50,  354,
+
+      772,   44,   44,   44,  356,   50,   46,   44,   44,   44,
+      772,  772,   46,  772,   44,   44,   44,   50,  772,   46,
+      772,  357,   44,   44,   44,  772,  772,   46,  772,   44,
+       44,   44,  362,   50,   46,  772,  358,  772,  772,   50,
+      772,  772,   44,   44,   44,  360,   50,   46,  772,  772,
+      359,  772,  772,  361,   50,   44,   44,   44,  772,  772,
+       46,   50,   44,   44,   44,  365,  772,  366,   44,   44,
+       44,  772,  772,   46,   50,  772,  772,  364,  772,  363,
+       44,   44,   44,  772,  772,   46,  772,   50,   44,   44,
+       44,  772,  772,   46,   50,  772,  772,   44,   44,   44,
+
+       50,  772,   46,  772,  772,  772,  367,  772,   44,   44,
+       44,  772,   50,   46,   44,   44,   44,  772,  371,   46,
+       50,  772,  772,  368,  772,   44,   44,   44,  369,   50,
+       46,   44,   44,   44,  772,  370,   46,   44,   44,   44,
+       50,  772,   46,  772,  772,  772,   50,   44,   44,   44,
+      772,  772,   46,  772,   44,   44,   44,   50,  772,   46,
+      772,  372,  772,   50,  772,   44,   44,   44,  772,   50,
+       46,   44,   44,   44,  772,  373,   46,  772,  772,   50,
+      772,  374,   44,   44,   44,  375,   50,   46,   44,   44,
+       44,  772,  772,   46,  376,  772,  772,   50,  772,  772,
+
+       44,   44,   44,   50,  378,  382,  377,  772,   44,   44,
+       44,  772,  772,   46,   50,  772,   44,   44,   44,  379,
+       50,   46,  772,   44,   44,   44,  772,  772,   46,  772,
+      380,  772,   50,  385,  772,  772,   44,   44,   44,  381,
+       50,   46,   44,   44,   44,  772,  772,   46,   50,   44,
+       44,   44,  772,  772,   46,   50,  772,  772,  383,   44,
+       44,   44,  772,  772,  389,   44,   44,   44,   50,  390,
+       46,  772,  384,  772,   50,  391,  772,   44,   44,   44,
+      387,   50,   46,  386,   44,   44,   44,  388,  772,   46,
+      772,   50,  772,   44,   44,   44,  772,   50,   46,  772,
+
+       44,   44,   44,  772,  772,   46,   44,   44,   44,   50,
+      772,  396,   44,   44,   44,  772,   50,   46,   44,   44,
+       44,  772,  772,   46,  772,   50,  772,  772,  398,  772,
+      772,  392,   50,  772,  393,  772,  394,  772,   50,  772,
+       44,   44,   44,  772,   50,   46,   44,   44,   44,  772,
+       50,   46,  395,   44,   44,   44,  402,  772,   46,  772,
+       44,   44,   44,  772,  397,   46,   44,   44,   44,  772,
+      772,   46,   50,  772,   44,   44,   44,  772,   50,   46,
+      772,  772,  772,  772,  772,   50,  772,  400,   44,   44,
+       44,  772,   50,   46,  401,  772,  772,  772,   50,   44,
+
+       44,   44,  772,  772,   46,  403,   50,   44,   44,   44,
+      772,  772,   46,  405,  772,  772,  404,   44,   44,   44,
+       50,  772,   46,   44,   44,   44,  772,  406,   46,  772,
+      772,   50,  409,   44,   44,   44,  772,  772,   46,   50,
+      772,   44,   44,   44,  772,  408,   46,  772,  772,   50,
+      772,  407,   44,   44,   44,   50,  772,   46,  772,   44,
+       44,   44,  772,  772,   46,   50,   44,   44,   44,  772,
+      772,   46,  772,   50,  772,  772,  410,   44,   44,   44,
+      412,  772,   46,  411,   50,  772,  772,   44,   44,   44,
+      413,   50,   46,  772,   44,   44,   44,  772,   50,   46,
+
+      772,   44,   44,   44,  414,  415,   46,  772,  772,   50,
+       44,   44,   44,  772,  772,   46,   44,   44,   44,   50,
+      772,   46,  772,  416,  772,  417,   50,   44,   44,   44,
+      772,  772,   46,   50,  772,   44,   44,   44,  772,  772,
+       46,  419,   50,  772,  418,  420,  772,  772,   50,   44,
+       44,   44,  772,  772,   46,  772,   44,   44,   44,   50,
+      772,   46,  772,  772,  772,  422,  421,   50,   44,   44,
+       44,  772,  772,   46,  772,  772,  772,   44,   44,   44,
+      772,   50,  428,  772,   44,   44,   44,  423,   50,   46,
+       44,   44,   44,  772,  427,   46,   44,   44,   44,  772,
+
+       50,   46,  772,   44,   44,   44,  424,  425,   46,   50,
+      772,  429,   44,   44,   44,  772,   50,   46,   44,   44,
+       44,  426,   50,   46,   44,   44,   44,  772,   50,  435,
+      772,  772,  772,  772,  436,   50,  772,  772,   44,   44,
+       44,  772,  430,   46,   50,  772,  431,  772,  432,  772,
+       50,  772,   44,   44,   44,  772,   50,   46,  772,  772,
+       44,   44,   44,  437,  433,   46,  772,  772,  434,  772,
+       50,   44,   44,   44,  772,  438,   46,   44,   44,   44,
+      772,  440,   46,  772,   50,  772,  772,  441,   44,   44,
+       44,  772,   50,   46,   44,   44,   44,  439,  772,   46,
+
+       44,   44,   44,   50,  772,   46,  772,  772,  772,   50,
+      445,  442,   44,   44,   44,  772,  772,   46,  772,  772,
+       50,  772,  772,   44,   44,   44,   50,  772,   46,  444,
+      772,  772,   50,  447,   44,   44,   44,  772,  772,  448,
+      443,   44,   44,   44,   50,  772,   46,  772,  772,  449,
+      772,   44,   44,   44,  772,   50,   46,   44,   44,   44,
+      772,  772,  452,  772,  446,  772,   50,   44,   44,   44,
+      772,  772,   46,   50,   44,   44,   44,  772,  772,   46,
+       44,   44,   44,   50,  454,   46,  450,  772,  772,   50,
+       44,   44,   44,  772,  772,   46,   44,   44,   44,   50,
+
+      772,   46,  451,  772,  453,  772,   50,  772,   44,   44,
+       44,  772,   50,   46,   44,   44,   44,  772,  457,   46,
+      772,  772,   50,  772,  772,  772,  455,  772,   50,  772,
+      772,   44,   44,   44,  772,  458,   46,   44,   44,   44,
+       50,  460,   46,  772,  456,  772,   50,   44,   44,   44,
+      772,  772,   46,   44,   44,   44,  772,  772,   46,  772,
+      772,  459,  772,   50,  772,   44,   44,   44,  772,   50,
+       46,   44,   44,   44,  772,  464,   46,  772,  772,   50,
+      772,  772,  461,  772,  772,   50,  772,   44,   44,   44,
+      462,  463,   46,   44,   44,   44,  772,   50,   46,   44,
+
+       44,   44,  772,   50,   46,   44,   44,   44,  772,  772,
+       46,   44,   44,   44,  465,  772,   46,  772,  772,   50,
+      772,   44,   44,   44,  772,   50,   46,  772,   44,   44,
+       44,   50,  467,   46,  468,  772,  772,   50,  466,  772,
+       44,   44,   44,   50,  469,   46,   44,   44,   44,  772,
+      772,   46,  772,   50,  470,  772,  772,  772,  471,  772,
+       50,   44,   44,   44,  772,  772,  475,  472,   44,   44,
+       44,  772,   50,  476,  772,  473,  772,  772,   50,   44,
+       44,   44,  772,  772,   46,  474,   44,   44,   44,  772,
+      772,   46,  772,   50,   44,   44,   44,  772,  772,   46,
+
+       50,   44,   44,   44,  772,  772,   46,   44,   44,   44,
+      772,   50,   46,  772,   44,   44,   44,  772,   50,   46,
+       44,   44,   44,  772,  478,  483,   50,  772,  772,  477,
+       44,   44,   44,   50,  772,   46,   44,   44,   44,   50,
+      480,   46,  479,  772,  772,  481,   50,  772,   44,   44,
+       44,  772,   50,   46,   44,   44,   44,  772,  772,   46,
+      772,  772,   50,  772,  772,  482,  772,  772,   50,  484,
+      772,   44,   44,   44,  772,  772,   46,   44,   44,   44,
+       50,  485,   46,   44,   44,   44,   50,  772,   46,   44,
+       44,   44,  772,  772,   46,   44,   44,   44,  772,  486,
+
+       46,  772,  487,   50,  772,   44,   44,   44,  772,   50,
+       46,   44,   44,   44,  772,   50,   46,   44,   44,   44,
+      772,   50,   46,  772,  772,  772,  772,   50,  488,  489,
+      772,   44,   44,   44,  772,  490,   46,   50,  492,   44,
+       44,   44,  491,   50,  498,   44,   44,   44,  772,   50,
+       46,  772,  772,  772,  494,  772,  772,  493,  772,   44,
+       44,   44,  772,   50,  500,   44,   44,   44,  772,  772,
+       46,   50,  772,  772,  495,  772,  772,   50,  496,   44,
+       44,   44,  772,  497,   46,   44,   44,   44,  499,  772,
+       46,   50,  772,   44,   44,   44,  772,   50,   46,   44,
+
+       44,   44,  772,  772,   46,  772,  772,   44,   44,   44,
+      501,   50,   46,  772,   44,   44,   44,   50,  772,   46,
+      503,   44,   44,   44,  772,   50,   46,  772,  772,  772,
+      502,   50,  504,  772,  772,  772,   44,   44,   44,   50,
+      772,   46,   44,   44,   44,  506,   50,   46,  505,   44,
+       44,   44,  772,   50,   46,   44,   44,   44,  772,  511,
+       46,  772,   44,   44,   44,  507,  772,   46,   50,  772,
+      508,  509,  772,  772,   50,   44,   44,   44,  772,  772,
+       46,   50,  772,   44,   44,   44,  772,   50,  515,  772,
+       44,   44,   44,  510,   50,   46,  772,  772,  513,  772,
+
+      512,   44,   44,   44,  772,  772,   46,   50,   44,   44,
+       44,  772,  772,   46,  514,   50,   44,   44,   44,  772,
+      772,   46,   50,  772,   44,   44,   44,  772,  772,   46,
+       44,   44,   44,   50,  772,   46,   44,   44,   44,  772,
+       50,   46,  516,  772,   44,   44,   44,  518,   50,   46,
+      772,  772,  517,  772,  772,  519,   50,  772,   44,   44,
+       44,  772,   50,   46,   44,   44,   44,  772,   50,   46,
+      772,  772,   44,   44,   44,  520,   50,   46,   44,   44,
+       44,  523,  521,  528,  772,  772,  522,   44,   44,   44,
+       50,  772,  529,  524,  772,  772,   50,  525,   44,   44,
+
+       44,  772,  772,   46,   50,  772,   44,   44,   44,  772,
+       50,   46,  772,  526,  772,   44,   44,   44,  772,   50,
+      532,  772,  527,   44,   44,   44,  772,  772,   46,  772,
+       50,  772,   44,   44,   44,  772,  530,  534,   50,   44,
+       44,   44,  772,  772,   46,  531,  772,   50,   44,   44,
+       44,  772,  772,   46,  772,   50,  772,   44,   44,   44,
+      772,  772,   46,  772,   50,   44,   44,   44,  772,  533,
+       46,   50,   44,   44,   44,  772,  772,   46,  772,  772,
+       50,  772,  535,  772,  772,   44,   44,   44,  772,   50,
+       46,  772,  772,   44,   44,   44,  772,   50,  541,  772,
+
+      772,  772,  772,  772,   50,  536,  537,   44,   44,   44,
+      772,  538,   46,  772,  772,  539,  772,   50,  772,   44,
+       44,   44,  772,  540,   46,   50,   44,   44,   44,  772,
+      772,   46,   44,   44,   44,  772,  772,   46,  772,   50,
+      772,  772,  542,   44,   44,   44,  772,  772,   46,  772,
+      772,   50,   44,   44,   44,  772,  772,   46,   50,  772,
+       44,   44,   44,  772,   50,   46,  544,  545,   44,   44,
+       44,  772,  772,   46,  772,   50,  543,   44,   44,   44,
+      772,  772,   46,  772,   50,  772,  772,  550,   44,   44,
+       44,  546,   50,  551,   44,   44,   44,  772,  772,   46,
+
+       50,   44,   44,   44,  547,  548,   46,  772,  772,   50,
+      772,   44,   44,   44,  772,  772,   46,  772,  549,  772,
+       50,  772,   44,   44,   44,  772,   50,   46,  772,   44,
+       44,   44,  772,   50,   46,   44,   44,   44,  772,  772,
+       46,  772,  552,   50,   44,   44,   44,  772,  772,   46,
+      554,  772,  772,  553,   50,   44,   44,   44,  772,  772,
+       46,   50,  772,  772,   44,   44,   44,   50,  556,   46,
+      772,  555,   44,   44,   44,  772,   50,   46,   44,   44,
+       44,  772,  772,  562,  772,  557,  772,   50,  563,  772,
+      559,  772,  772,  772,  558,  772,   50,  772,   44,   44,
+
+       44,  772,  772,   46,   50,  772,   44,   44,   44,  772,
+       50,   46,   44,   44,   44,  560,  772,   46,   44,   44,
+       44,  772,  561,   46,  772,  772,   44,   44,   44,  564,
+       50,   46,   44,   44,   44,  772,  772,   46,   50,  772,
+      772,  566,  772,  772,   50,  772,  772,  772,  772,  565,
+       50,   44,   44,   44,  772,  772,   46,  568,   50,  772,
+       44,   44,   44,  772,   50,   46,  567,  772,  772,   44,
+       44,   44,  570,  772,   46,   44,   44,   44,  569,  573,
+       46,  772,  772,   50,   44,   44,   44,  772,  772,   46,
+      772,  772,   50,   44,   44,   44,  772,  772,   46,  772,
+
+      772,   50,  772,  571,   44,   44,   44,   50,  772,   46,
+      772,  572,   44,   44,   44,  772,   50,   46,   44,   44,
+       44,  772,  574,   46,  772,   50,   44,   44,   44,  772,
+      575,   46,   44,   44,   44,  772,   50,  581,  772,  576,
+       44,   44,   44,  772,   50,   46,   44,   44,   44,  772,
+       50,   46,  772,  577,  772,  772,  772,  579,   50,  772,
+      772,  578,  772,  772,   50,   44,   44,   44,  772,  772,
+       46,  772,   50,  772,  580,   44,   44,   44,   50,  772,
+       46,  772,   44,   44,   44,  772,  582,   46,   44,   44,
+       44,  772,  772,  587,  772,  583,  772,   50,   44,   44,
+
+       44,  772,  772,  588,  584,  772,  772,   50,   44,   44,
+       44,  772,  772,   46,   50,  772,   44,   44,   44,  586,
+       50,   46,   44,   44,   44,  772,  585,   46,  772,  772,
+       50,   44,   44,   44,  772,  772,   46,   44,   44,   44,
+       50,  772,   46,  772,   44,   44,   44,  593,   50,   46,
+       44,   44,   44,  772,   50,   46,  589,   44,   44,   44,
+      772,  590,   46,   50,  772,  772,   44,   44,   44,   50,
+      592,   46,  591,   44,   44,   44,   50,  772,   46,   44,
+       44,   44,   50,  772,  599,  595,   44,   44,   44,   50,
+      772,  600,  596,  772,  594,   44,   44,   44,   50,  772,
+
+       46,  772,   44,   44,   44,   50,  772,  602,  772,  598,
+      772,   50,  603,  772,   44,   44,   44,  772,   50,  604,
+      597,  772,  772,   44,   44,   44,  772,   50,   46,  772,
+       44,   44,   44,  772,   50,   46,  772,  772,  601,   44,
+       44,   44,  772,  772,   46,  772,   50,   44,   44,   44,
+      772,  772,   46,  605,  772,   50,   44,   44,   44,  606,
+      772,  610,   50,  772,  772,  607,  772,   44,   44,   44,
+      772,   50,   46,   44,   44,   44,  772,  772,  612,   50,
+      772,  772,  609,  772,   44,   44,   44,  772,   50,   46,
+      608,   44,   44,   44,  772,  772,  614,  772,  772,   50,
+
+      772,   44,   44,   44,  772,   50,   46,   44,   44,   44,
+      611,  772,   46,   44,   44,   44,   50,  772,   46,   44,
+       44,   44,  772,   50,   46,   44,   44,   44,  772,  613,
+       46,  772,  772,   50,  772,   44,   44,   44,  772,   50,
+       46,  772,  772,  772,  615,   50,  616,  772,   44,   44,
+       44,   50,  617,   46,   44,   44,   44,   50,  772,   46,
+       44,   44,   44,  772,  618,   46,  772,   50,   44,   44,
+       44,  772,  772,   46,  772,  619,   44,   44,   44,  772,
+       50,   46,  620,   44,   44,   44,   50,  621,   46,   44,
+       44,   44,   50,  622,   46,  772,   44,   44,   44,  772,
+
+       50,   46,   44,   44,   44,  772,  772,  629,   50,   44,
+       44,   44,  623,  772,   46,   50,  772,  772,  772,  624,
+      625,   50,  627,  772,  772,  626,  772,  772,   50,  772,
+       44,   44,   44,  772,   50,   46,  772,  772,   44,   44,
+       44,   50,  772,   46,   44,   44,   44,  772,  628,   46,
+      772,  772,  630,   44,   44,   44,  772,  772,   46,  772,
+      772,  772,   50,   44,   44,   44,  772,  772,   46,  631,
+       50,  772,   44,   44,   44,  772,   50,   46,  772,   44,
+       44,   44,  772,  772,   46,   50,  772,  772,  634,  632,
+      772,   44,   44,   44,  633,   50,   46,  772,  635,  772,
+
+       44,   44,   44,  772,   50,   46,  772,   44,   44,   44,
+      636,   50,   46,   44,   44,   44,  637,  772,  641,   44,
+       44,   44,  772,   50,  642,   44,   44,   44,  772,  772,
+       46,  772,   50,  772,  772,  639,   44,   44,   44,   50,
+      772,   46,  638,  772,  772,   50,  772,  772,   44,   44,
+       44,   50,  640,   46,   44,   44,   44,   50,  772,   46,
+       44,   44,   44,  772,  772,   46,  772,  772,   50,   44,
+       44,   44,  772,  643,   46,  772,   44,   44,   44,  644,
+       50,  649,  772,   44,   44,   44,   50,  772,   46,   44,
+       44,   44,   50,  650,  652,  772,  772,   44,   44,   44,
+
+      645,   50,  653,  772,  646,   44,   44,   44,   50,  772,
+       46,  647,  648,  772,  772,   50,  772,   44,   44,   44,
+      772,   50,  655,   44,   44,   44,  772,  772,   46,   50,
+      772,   44,   44,   44,  651,  772,   46,   50,   44,   44,
+       44,  772,  772,   46,  772,   44,   44,   44,  654,   50,
+      660,  772,   44,   44,   44,   50,  656,   46,  772,   44,
+       44,   44,  657,   50,   46,  772,  658,  772,  772,  772,
+       50,   44,   44,   44,  772,  772,   46,   50,  772,  772,
+      772,   44,   44,   44,   50,  659,   46,   44,   44,   44,
+      661,   50,   46,   44,   44,   44,  772,  772,   46,  662,
+
+       44,   44,   44,   50,  772,  667,   44,   44,   44,  772,
+      663,   46,  772,   50,  772,   44,   44,   44,  772,   50,
+      669,   44,   44,   44,  664,   50,   46,  772,   44,   44,
+       44,  772,   50,  671,  772,   44,   44,   44,   50,  665,
+       46,   44,   44,   44,  666,  772,   46,   50,  772,  772,
+      772,  772,  772,   50,  668,  772,   44,   44,   44,  772,
+       50,  674,  772,   44,   44,   44,  772,   50,  675,   44,
+       44,   44,  670,   50,  676,   44,   44,   44,  772,  772,
+       46,  673,  672,  772,   44,   44,   44,  772,   50,   46,
+      772,   44,   44,   44,  772,   50,  679,   44,   44,   44,
+
+      772,   50,   46,   44,   44,   44,  772,   50,   46,  772,
+       44,   44,   44,  772,  677,   46,   50,   44,   44,   44,
+      772,  772,   46,   50,  772,  772,   44,   44,   44,   50,
+      678,  684,   44,   44,   44,   50,  772,  685,  772,   44,
+       44,   44,   50,  680,   46,   44,   44,   44,  772,   50,
+       46,   44,   44,   44,  681,  772,   46,  772,   50,  772,
+      772,  772,  682,  772,   50,   44,   44,   44,  772,  683,
+       46,   50,  772,   44,   44,   44,  772,   50,   46,   44,
+       44,   44,  686,   50,   46,  772,   44,   44,   44,  772,
+      688,   46,  772,  772,  772,  772,  687,   50,   44,   44,
+
+       44,  772,  772,   46,  772,   50,  772,  772,  689,  772,
+      772,   50,  690,  772,   44,   44,   44,  772,   50,   46,
+      772,  772,   44,   44,   44,  692,  691,   46,  772,  772,
+       50,   44,   44,   44,  772,  772,   46,   44,   44,   44,
+      772,  772,   46,   44,   44,   44,   50,  772,  698,  693,
+       44,   44,   44,  694,   50,  699,   44,   44,   44,  772,
+      695,   46,  772,   50,  772,   44,   44,   44,  772,   50,
+       46,  772,   44,   44,   44,   50,  697,   46,  772,  696,
+      772,  772,   50,  772,   44,   44,   44,  772,   50,   46,
+       44,   44,   44,  772,  702,   46,  772,   50,  772,  700,
+
+       44,   44,   44,  772,   50,  705,  772,   44,   44,   44,
+      772,  772,   46,   44,   44,   44,   50,  772,  707,  772,
+      772,  701,   50,  703,   44,   44,   44,  772,  772,  708,
+      772,  772,   50,  772,  772,   44,   44,   44,  704,   50,
+       46,   44,   44,   44,  772,   50,   46,  706,   44,   44,
+       44,  710,  772,   46,  772,  772,   50,   44,   44,   44,
+      772,  772,  712,   44,   44,   44,  772,   50,   46,   44,
+       44,   44,  772,   50,  714,  772,   44,   44,   44,  715,
+       50,   46,  772,   44,   44,   44,  711,  709,  717,   50,
+      772,   44,   44,   44,  772,   50,   46,   44,   44,   44,
+
+      772,   50,   46,  772,   44,   44,   44,  772,   50,   46,
+      772,  713,   44,   44,   44,   50,  772,   46,  772,   44,
+       44,   44,  772,   50,   46,  716,  772,  772,  772,   50,
+       44,   44,   44,  772,  772,   46,   50,  772,  718,  772,
+      719,   44,   44,   44,   50,  772,   46,  720,   44,   44,
+       44,   50,  772,   46,  772,  772,  772,  772,  722,  772,
+      721,  772,   50,  772,   44,   44,   44,  772,  772,   46,
+       44,   44,   44,   50,  726,   46,  772,  723,  772,  772,
+       50,  772,   44,   44,   44,  772,  724,   46,   44,   44,
+       44,  772,  772,   46,  772,  772,   50,  772,  725,   44,
+
+       44,   44,   50,  772,  730,  772,  772,   44,   44,   44,
+      772,  727,   46,  772,   50,  772,  772,  731,  772,  772,
+       50,   44,   44,   44,  772,  772,   46,  772,  728,  772,
+      772,   50,  772,   44,   44,   44,  772,  729,   46,   50,
+       44,   44,   44,  772,  772,   46,   44,   44,   44,  772,
+      772,  735,  772,   50,   44,   44,   44,  772,  772,   46,
+      732,  772,   44,   44,   44,   50,  772,   46,   44,   44,
+       44,  772,   50,   46,   44,   44,   44,  772,   50,   46,
+      772,  733,  772,  734,  772,  772,   50,   44,   44,   44,
+      772,  772,   46,  736,   50,  772,   44,   44,   44,  772,
+
+       50,   46,  772,   44,   44,   44,   50,  772,  742,  772,
+       44,   44,   44,  772,  737,   46,  772,  738,  772,   50,
+      772,  739,  772,  772,  740,   44,   44,   44,   50,  772,
+       46,   44,   44,   44,  741,   50,  745,  772,   44,   44,
+       44,  772,   50,   46,   44,   44,   44,  772,  772,   46,
+       44,   44,   44,  743,  772,   46,  772,   50,  772,  772,
+       44,   44,   44,   50,  744,   46,  772,   44,   44,   44,
+       50,  772,   46,   44,   44,   44,   50,  746,   46,   44,
+       44,   44,   50,  747,   46,   44,   44,   44,  772,  772,
+       46,  772,   50,  772,  772,   44,   44,   44,  748,   50,
+
+       46,   44,   44,   44,  772,   50,   46,   44,   44,   44,
+      749,   50,   46,  772,  772,  772,  772,   50,  750,  772,
+      751,  772,  772,  772,  772,  772,  752,   50,  753,   44,
+       44,   44,  772,   50,   46,   44,   44,   44,  772,   50,
+       46,  772,   44,   44,   44,  772,  754,   46,  772,   44,
+       44,   44,  772,  755,  760,   44,   44,   44,  756,  772,
+       46,   50,  772,   44,   44,   44,  772,   50,   46,  772,
+      772,   44,   44,   44,   50,  772,   46,  757,  758,  772,
+      772,   50,  772,  772,  772,  759,  772,   50,  772,   44,
+       44,   44,  772,  761,  764,   50,   44,   44,   44,  772,
+
+      772,   46,  772,   50,   44,   44,   44,  772,  772,   46,
+      762,  763,   44,   44,   44,  772,  772,  767,   44,   44,
+       44,   50,  772,   46,   44,   44,   44,  772,   50,   46,
+       44,   44,   44,  772,  772,   46,   50,  765,   44,   44,
+       44,  772,  772,  771,   50,  772,  772,  766,  772,  772,
+       50,  772,  772,  772,  772,  772,   50,  768,  772,  772,
+      772,  772,   50,  772,  772,  772,  772,  772,  772,  772,
+       50,  772,  772,  772,  769,  772,  772,  772,  772,  772,
+      772,  770,   36,   36,   36,   36,   36,   36,   36,   45,
+       45,   45,   45,   45,   45,   45,   67,  772,   67,   67,
+
+       67,   67,   67,   86,  772,   86,  772,   86,   86,   86,
+       88,   88,   88,   88,   88,   88,   88,   95,   95,   95,
+       95,   95,   95,   95,  138,  772,  138,  138,  138,  138,
+      138,   88,   88,  772,   88,  153,  153,  153,  153,  153,
+      217,  217,  278,  278,  344,  344,   88,   88,   11,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+
+      772,  772,  772,  772,  772,  772,  772,  772,  772
     } ;
 
-static yyconst flex_int16_t yy_chk[5544] =
+static yyconst flex_int16_t yy_chk[5610] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1409,607 +1419,614 @@ static yyconst flex_int16_t yy_chk[5544] =
         3,    3,    3,    4,    4,    4,    3,   27,    7,    4,
         5,    5,    8,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    9,   13,   10,   13,   21,    5,    5,
-       27,    5,   21,  336,    5,   25,    5,   25,    5,   26,
-
-       25,   25,   25,  270,    5,    5,    7,    9,    5,   10,
-        8,  210,    5,   28,   26,   32,   17,    5,   17,   17,
-       17,  147,   31,    5,    5,   15,   15,   15,   17,   33,
-       15,   19,  142,   19,   19,   19,   28,   31,   32,   20,
-       20,   20,   44,   19,   17,   92,   37,   15,   37,   20,
-       15,   42,   33,   42,   75,   75,   75,   15,   89,   19,
-       15,   77,   15,   15,   15,   20,   85,   15,   15,   44,
+       27,    5,   21,  343,    5,   25,    5,   25,    5,   26,
+
+       25,   25,   25,  277,    5,    5,    7,    9,    5,   10,
+        8,  216,    5,   28,   26,   32,   17,    5,   17,   17,
+       17,  153,   31,    5,    5,   15,   15,   15,   17,   33,
+       15,   19,   80,   19,   19,   19,   28,   31,   32,   20,
+       20,   20,   44,   19,   17,  145,   78,   15,   15,   20,
+       15,   37,   33,   37,   42,   80,   42,   15,   95,   19,
+       15,   79,   15,   15,   15,   20,   78,   15,   15,   44,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       22,   77,   22,   22,   22,   45,   45,   45,   87,   78,
-       45,   79,   22,   47,   47,   47,   82,  136,   47,   48,
-
-       48,   48,  138,   49,   48,   76,   76,   76,   22,   78,
-       49,   50,   50,   50,   79,   87,   50,   45,  138,   82,
-      136,   51,   51,   51,   84,   47,   51,   43,   41,   80,
-       49,   48,   81,   39,   49,   47,   38,  137,   49,   52,
-       52,   52,  141,   50,   52,   49,   24,   48,   49,   80,
-       49,   49,   81,   51,   53,   53,   53,  137,  141,   53,
-       14,   50,  139,   54,   54,   54,   51,   11,   54,   51,
-        0,   52,   51,    0,   52,   55,   55,   55,   52,    0,
-       55,   52,   57,   57,   57,  139,   53,   57,   56,   56,
-       56,    0,   52,   56,    0,   54,  140,   58,   58,   58,
-
-        0,   53,   58,   59,   59,   59,    0,   55,   59,  204,
-       53,   54,    0,   55,   57,   54,  140,   57,   54,    0,
-       56,    0,   55,    0,   55,  204,    0,   56,   56,   58,
-        0,   56,   58,  207,    0,   59,   56,   61,   61,   61,
-        0,    0,   61,    0,    0,   62,   62,   62,    0,  207,
-       62,    0,   59,    0,    0,    0,   59,   60,   60,   60,
-        0,    0,   60,    0,    0,   63,   63,   63,    0,   61,
-       63,    0,   61,    0,    0,    0,   61,   62,   64,   64,
-       64,    0,    0,   64,   62,   65,   65,   65,    0,   60,
-       65,    0,   60,   62,   62,   60,   60,   63,   62,   67,
-
-       67,   67,    0,    0,   63,   60,    0,   60,   63,   67,
-       64,   68,    0,   68,   68,   68,    0,   65,    0,    0,
-       65,    0,   63,   68,    0,   67,   69,    0,   69,   64,
-        0,   69,   69,   69,   70,    0,   70,   70,   70,   68,
-       71,   71,   71,   90,   90,   90,   70,    0,   90,    0,
-       71,   91,   91,   91,    0,    0,   91,    0,   93,   93,
-       93,    0,   70,   93,    0,    0,   71,   96,   96,   96,
-        0,    0,   96,    0,    0,   90,   95,   95,   95,    0,
-       90,   95,    0,   91,    0,    0,    0,    0,    0,    0,
-       93,    0,   91,   94,   94,   94,    0,    0,    0,   96,
-
-       94,   94,   94,   94,   94,    0,    0,    0,   95,    0,
-       96,    0,    0,    0,    0,   94,   94,   94,   94,   94,
-       94,    0,   97,   97,   97,    0,   95,   97,    0,   98,
-       98,   98,    0,    0,   98,   99,   99,   99,    0,    0,
-       99,  100,  100,  100,    0,    0,  100,  101,  101,  101,
-        0,    0,  101,    0,   97,    0,    0,  102,  102,  102,
-       97,   98,  102,  105,  105,  105,    0,   99,  105,   97,
-      103,  103,  103,  100,    0,  103,    0,  100,  100,  101,
-      104,  104,  104,   98,  101,  104,  100,   99,    0,  102,
-        0,  106,  106,  106,    0,  105,  106,    0,    0,    0,
-
-      102,    0,  103,  107,  107,  107,    0,  103,  107,    0,
-        0,  105,  104,  107,  105,    0,    0,  104,    0,  108,
-      108,  108,  103,  106,  108,  109,  109,  109,    0,  104,
-      109,  110,  110,  110,    0,  107,  110,  111,  111,  111,
-        0,  110,  111,    0,  112,  112,  112,    0,  106,  112,
-        0,  108,    0,    0,  113,  113,  113,  109,  108,  113,
-      114,  114,  114,  110,    0,  114,  115,  115,  115,  111,
-        0,  115,  111,  116,  116,  116,  112,  109,  116,    0,
-        0,  112,  117,  117,  117,    0,  113,  117,    0,    0,
-      113,    0,  114,    0,  118,  118,  118,    0,  115,  118,
-
-        0,  114,    0,  115,    0,  116,  119,  119,  119,    0,
-        0,  119,    0,    0,  117,  120,  120,  120,    0,  116,
-      120,    0,  121,  121,  121,  120,  118,  121,  122,  122,
-      122,    0,    0,  122,  117,  123,  123,  123,  119,    0,
-      123,    0,    0,  124,  124,  124,  118,  120,  124,    0,
-      126,  126,  126,    0,  121,  126,  119,  119,    0,    0,
-      122,    0,    0,    0,  127,  127,  127,  123,    0,  127,
-        0,    0,  121,    0,  123,  124,  122,    0,  128,  128,
-      128,    0,  126,  128,  129,  129,  129,    0,    0,  129,
-        0,    0,  124,  125,  125,  125,  127,    0,  125,    0,
-
-      126,  127,    0,    0,  126,    0,    0,  130,  130,  130,
-      128,    0,  130,  128,    0,    0,  129,  131,  131,  131,
-      129,    0,  131,    0,    0,  125,    0,    0,  125,  125,
-      125,    0,  132,  132,  132,    0,    0,  132,  125,  130,
-      125,  133,  133,  133,  125,    0,  133,    0,    0,  131,
-      134,  134,  134,    0,    0,  134,    0,    0,  130,    0,
-      145,  145,  145,  131,  132,  145,  146,  146,  146,    0,
-        0,  146,    0,  133,  151,  151,  151,    0,    0,  151,
-      133,  132,  134,  154,  154,  154,    0,    0,  154,    0,
-        0,    0,  145,  154,    0,  134,    0,    0,  146,  152,
-
-      152,  152,    0,    0,  152,    0,  151,  146,    0,  145,
-      149,  149,  149,  151,    0,  154,    0,  149,  149,  149,
-      149,  149,  150,  150,  150,    0,    0,  150,    0,    0,
-        0,  152,  149,  149,  149,  149,  149,  149,  152,  153,
-      153,  153,    0,    0,  153,  155,  155,  155,    0,    0,
-      155,  156,  156,  156,  150,    0,  156,  150,  157,  157,
-      157,    0,    0,  157,    0,    0,    0,  158,  158,  158,
-        0,  153,  158,  159,  159,  159,    0,  155,  159,    0,
-      155,    0,    0,  156,    0,    0,    0,  160,  160,  160,
-      157,  153,  160,    0,    0,  161,  161,  161,    0,  158,
-
-      161,    0,    0,  157,  156,  159,  158,  162,  162,  162,
-        0,    0,  162,  163,  163,  163,    0,    0,  163,  160,
-        0,    0,  159,    0,    0,  160,    0,  161,    0,    0,
-      161,  164,  164,  164,    0,    0,  164,    0,    0,  162,
-        0,    0,    0,    0,    0,  163,  162,  165,  165,  165,
-        0,    0,  165,    0,  166,  166,  166,    0,  163,  166,
-      167,  167,  167,  164,    0,  167,  168,  168,  168,    0,
-        0,  168,    0,    0,  164,  170,  170,  170,    0,  165,
-      170,    0,  171,  171,  171,    0,  166,  171,  172,  172,
-      172,  165,  167,  172,  173,  173,  173,    0,  168,  173,
-
-        0,  168,    0,  174,  174,  174,  166,  170,  174,  167,
-      175,  175,  175,  174,  171,  175,    0,    0,    0,    0,
-      172,  171,  170,  172,    0,    0,  173,  176,  176,  176,
-        0,    0,  176,    0,    0,  174,    0,    0,  177,  177,
-      177,    0,  175,  177,    0,  173,    0,    0,  177,  178,
-      178,  178,    0,    0,  178,    0,    0,    0,    0,  176,
-      175,  179,  179,  179,    0,    0,  179,    0,  176,    0,
-      177,  180,  180,  180,    0,    0,  180,  181,  181,  181,
-        0,  178,  181,    0,  182,  182,  182,    0,  178,  182,
-      183,  183,  183,  179,    0,  183,  184,  184,  184,    0,
-
-        0,  184,    0,  180,  179,  185,  185,  185,    0,  181,
-      185,    0,  181,  186,  186,  186,  182,    0,  186,    0,
-      180,    0,  183,    0,  187,  187,  187,    0,  184,  187,
-        0,  188,  188,  188,    0,  182,  188,  185,    0,  183,
-        0,  189,  189,  189,    0,  186,  189,  184,    0,    0,
-      185,    0,    0,  186,    0,    0,  187,  190,  190,  190,
-        0,    0,  190,  188,    0,    0,    0,  187,    0,  188,
-        0,    0,    0,  189,  191,  191,  191,    0,    0,  191,
-      192,  192,  192,    0,  189,  192,  193,  193,  193,  190,
-        0,  193,  194,  194,  194,    0,    0,  194,  195,  195,
-
-      195,    0,    0,  195,    0,  190,  191,    0,    0,  191,
-        0,    0,  192,    0,    0,  196,  196,  196,  193,  192,
-      196,  197,  197,  197,  194,  193,  197,    0,    0,    0,
-      195,  198,  198,  198,    0,    0,  198,  195,  199,  199,
-      199,    0,    0,  199,    0,    0,  194,  196,    0,  200,
-      200,  200,    0,  197,  200,  201,  201,  201,  197,  196,
-      201,    0,    0,  198,  202,  202,  202,    0,    0,  202,
-      199,    0,  203,  203,  203,    0,    0,  203,  198,    0,
-        0,  200,    0,    0,  212,  212,  212,  201,  200,  212,
-      199,    0,    0,    0,  201,    0,  202,    0,  212,  212,
-
-      213,  213,  213,    0,  203,  213,  212,  215,  215,  215,
-        0,    0,  215,    0,  202,  203,  212,    0,  216,  216,
-      216,    0,    0,  216,  217,  217,  217,    0,    0,  217,
-        0,    0,  213,    0,    0,    0,    0,    0,    0,  215,
-        0,    0,    0,  213,  214,  214,  214,    0,    0,    0,
-      216,  214,  214,  214,  214,  214,  217,  218,  218,  218,
-        0,    0,  218,    0,  215,  216,  214,  214,  214,  214,
-      214,  214,  219,  219,  219,    0,    0,  219,  220,  220,
-      220,    0,    0,  220,    0,  221,  221,  221,    0,  218,
-      221,  222,  222,  222,    0,    0,  222,  223,  223,  223,
-
-        0,    0,  223,    0,  219,    0,    0,  218,    0,    0,
-      220,    0,  219,    0,  224,  224,  224,  221,    0,  224,
-      225,  225,  225,  222,  224,  225,  221,    0,  224,  223,
-      226,  226,  226,    0,  222,  226,    0,    0,  223,  227,
-      227,  227,    0,    0,  227,    0,  224,    0,  228,  228,
-      228,    0,  225,  228,  229,  229,  229,    0,    0,  229,
-        0,    0,  226,  230,  230,  230,    0,    0,  230,    0,
-        0,  227,    0,  231,  231,  231,    0,    0,  231,  226,
-      228,    0,    0,  231,    0,    0,  229,    0,    0,  227,
-        0,  232,  232,  232,    0,  230,  232,  233,  233,  233,
-
-        0,  228,  233,    0,  229,  231,  234,  234,  234,    0,
-        0,  234,    0,    0,  230,    0,  235,  235,  235,    0,
-      231,  235,    0,  232,  231,    0,    0,    0,    0,  233,
-      232,  236,  236,  236,    0,  233,  236,    0,  234,  237,
-      237,  237,    0,    0,  237,  238,  238,  238,  235,    0,
-      238,  239,  239,  239,    0,    0,  239,    0,  234,  240,
-      240,  240,    0,  236,  240,    0,  235,    0,    0,  236,
-        0,  237,    0,    0,  241,  241,  241,  238,  237,  241,
-      242,  242,  242,  239,    0,  242,  239,    0,  238,    0,
-        0,  240,  243,  243,  243,    0,    0,  243,  240,  244,
-
-      244,  244,    0,    0,  244,    0,  241,    0,    0,  245,
-      245,  245,  242,    0,  245,  246,  246,  246,    0,    0,
-      246,  247,  247,  247,  243,  241,  247,    0,  248,  248,
-      248,  244,    0,  248,  249,  249,  249,    0,    0,  249,
-      243,  245,    0,  250,  250,  250,    0,  246,  250,  251,
-      251,  251,  244,  247,  251,  245,  252,  252,  252,    0,
-      248,  252,  253,  253,  253,    0,  249,  253,    0,  247,
-      246,  248,    0,    0,    0,  250,    0,    0,  254,  254,
-      254,  251,  250,  254,    0,  249,  250,  251,  252,    0,
-      255,  255,  255,    0,  253,  255,    0,  256,  256,  256,
-
-        0,    0,  256,    0,  252,    0,  257,  257,  257,  253,
-      254,  257,  258,  258,  258,    0,    0,  258,  259,  259,
-      259,    0,  255,  259,    0,  260,  260,  260,  254,  256,
-      260,  261,  261,  261,    0,    0,  261,    0,  257,    0,
-      262,  262,  262,    0,  258,  262,    0,  255,    0,    0,
-      259,  258,  256,  263,  263,  263,  257,  260,  263,    0,
-      264,  264,  264,  261,  260,  264,    0,    0,  259,    0,
-      261,    0,  262,  265,  265,  265,    0,    0,  265,  262,
-        0,  266,  266,  266,    0,  263,  266,    0,  267,  267,
-      267,    0,  264,  267,    0,  272,  272,  272,    0,    0,
-
-      272,  273,  273,  273,    0,  265,  273,  274,  274,  274,
-        0,    0,  274,  266,  275,  275,  275,    0,    0,  275,
-      267,    0,    0,  277,  277,  277,  267,  272,  277,    0,
-        0,    0,    0,  273,    0,  280,  280,  280,    0,  274,
-      280,    0,  278,  278,  278,  274,  275,  278,  281,  281,
-      281,    0,    0,  281,    0,  277,    0,    0,    0,    0,
-        0,  275,  276,  276,  276,    0,    0,  280,    0,  276,
-      276,  276,  276,  276,  278,    0,  283,  283,  283,    0,
-      281,  283,    0,  280,  276,  276,  276,  276,  276,  276,
-      284,  284,  284,    0,  278,  284,  281,  285,  285,  285,
-
-        0,    0,  285,    0,  286,  286,  286,    0,  283,  286,
-        0,  287,  287,  287,    0,    0,  287,    0,  289,  289,
-      289,  283,  284,  289,    0,  290,  290,  290,    0,  285,
-      290,    0,  285,  291,  291,  291,  286,  284,  291,    0,
-        0,    0,  286,  287,  292,  292,  292,    0,    0,  292,
-      289,    0,    0,  293,  293,  293,    0,  290,  293,  287,
-        0,    0,    0,  293,    0,  291,    0,    0,    0,  289,
-        0,  291,    0,    0,  290,    0,  292,  295,  295,  295,
-        0,    0,  295,  292,    0,  293,  296,  296,  296,    0,
-        0,  296,  297,  297,  297,    0,    0,  297,  298,  298,
-
-      298,    0,  297,  298,    0,  299,  299,  299,    0,  295,
-      299,    0,  300,  300,  300,    0,    0,  300,  296,    0,
-        0,  296,    0,    0,  297,    0,    0,  295,    0,    0,
-      298,  301,  301,  301,    0,    0,  301,  299,    0,    0,
-      302,  302,  302,  299,  300,  302,    0,  303,  303,  303,
-        0,    0,  303,    0,    0,  300,    0,  303,    0,  304,
-      304,  304,    0,  301,  304,  305,  305,  305,    0,    0,
-      305,  301,  302,    0,    0,  306,  306,  306,  302,  303,
-      306,  307,  307,  307,    0,    0,  307,  309,  309,  309,
-        0,  304,  309,    0,  310,  310,  310,  305,    0,  310,
-
-      311,  311,  311,    0,    0,  311,  304,  306,    0,  312,
-      312,  312,    0,  307,  312,  305,  313,  313,  313,  309,
-        0,  313,  314,  314,  314,  306,  310,  314,    0,  307,
-        0,    0,  311,    0,  309,  316,  316,  316,    0,  311,
-      316,  312,  317,  317,  317,    0,  310,  317,  313,    0,
-      318,  318,  318,    0,  314,  318,    0,  312,  319,  319,
-      319,    0,    0,  319,  313,    0,    0,  316,  319,    0,
-      320,  320,  320,  314,  317,  320,  321,  321,  321,    0,
-        0,  321,  318,  322,  322,  322,    0,    0,  322,    0,
-      319,    0,  317,  323,  323,  323,    0,    0,  323,  324,
-
-      324,  324,  320,  323,  324,    0,  318,    0,  321,  324,
-        0,  325,  325,  325,  321,  322,  325,  320,  326,  326,
-      326,  322,    0,  326,    0,  323,    0,  327,  327,  327,
-        0,  324,  327,    0,  328,  328,  328,    0,    0,  328,
-      329,  329,  329,  325,    0,  329,  330,  330,  330,    0,
-      326,  330,  335,  335,  335,    0,    0,  335,    0,  327,
-        0,    0,  335,    0,    0,  325,  328,    0,  326,    0,
-      327,    0,  329,    0,  340,  340,  340,    0,  330,  340,
-      343,  343,  343,    0,  335,  343,  328,  341,  341,  341,
-      343,    0,  341,    0,  344,  344,  344,    0,  330,  344,
-
-      345,  345,  345,    0,    0,  345,  340,    0,  346,  346,
-      346,    0,  343,  346,    0,    0,    0,    0,    0,  341,
-        0,  340,  347,  347,  347,    0,  344,  347,  341,    0,
-        0,    0,  345,  348,  348,  348,    0,    0,  348,  344,
-      346,  349,  349,  349,    0,    0,  349,  346,    0,    0,
-      345,  350,  350,  350,  347,    0,  350,  351,  351,  351,
-        0,  347,  351,    0,    0,  348,  350,  352,  352,  352,
-        0,    0,  352,  349,    0,  353,  353,  353,    0,  349,
-      353,    0,    0,  350,    0,  348,  354,  354,  354,  351,
-        0,  354,    0,  355,  355,  355,    0,    0,  355,  352,
-
-      356,  356,  356,    0,    0,  356,    0,  353,    0,    0,
-      351,  357,  357,  357,  353,    0,  357,  352,  354,    0,
-        0,  358,  358,  358,  354,  355,  358,    0,  360,  360,
-      360,    0,  356,  360,    0,  361,  361,  361,  355,  356,
-      361,    0,    0,  357,  362,  362,  362,    0,    0,  362,
-      363,  363,  363,  358,    0,  363,    0,  357,    0,  358,
-      360,  364,  364,  364,    0,    0,  364,  361,    0,  365,
-      365,  365,    0,    0,  365,  361,  362,    0,  360,  362,
-        0,    0,  363,  366,  366,  366,    0,    0,  366,    0,
-      367,  367,  367,  364,    0,  367,    0,    0,    0,  364,
-
-      363,  365,  368,  368,  368,    0,    0,  368,    0,    0,
-        0,  370,  370,  370,    0,  366,  370,    0,  369,  369,
-      369,  365,  367,  369,  371,  371,  371,    0,  369,  371,
-      372,  372,  372,    0,  368,  372,    0,  373,  373,  373,
-      366,  367,  373,  370,    0,  370,  374,  374,  374,    0,
-      369,  374,  376,  376,  376,  368,  371,  376,  377,  377,
-      377,    0,  372,  377,    0,    0,    0,    0,  377,  373,
-        0,    0,  378,  378,  378,    0,  371,  378,  374,    0,
-      372,    0,  373,    0,  376,    0,  379,  379,  379,    0,
-      377,  379,    0,    0,  383,  383,  383,  377,  374,  383,
-
-        0,    0,  376,    0,  378,  380,  380,  380,    0,  378,
-      380,  381,  381,  381,    0,  380,  381,    0,  379,    0,
-        0,  381,  384,  384,  384,    0,  383,  384,  385,  385,
-      385,  379,    0,  385,  386,  386,  386,  380,    0,  386,
-        0,    0,    0,  381,  386,  383,  387,  387,  387,    0,
-        0,  387,    0,    0,  384,    0,    0,  388,  388,  388,
-      385,    0,  388,  385,    0,    0,  386,  388,  390,  390,
-      390,    0,    0,  390,  384,  391,  391,  391,  387,    0,
-      391,    0,    0,  390,    0,  393,  393,  393,    0,  388,
-      393,  394,  394,  394,    0,    0,  394,    0,  387,    0,
-
-      390,  395,  395,  395,    0,    0,  395,  391,  396,  396,
-      396,    0,    0,  396,  397,  397,  397,  393,  396,  397,
-      391,    0,    0,  394,  398,  398,  398,    0,    0,  398,
-      400,  400,  400,  395,    0,  400,  393,    0,  395,    0,
-      396,    0,  399,  399,  399,    0,  397,  399,  401,  401,
-      401,    0,  399,  401,    0,    0,  398,    0,    0,    0,
-      397,    0,  400,    0,    0,  402,  402,  402,    0,  400,
-      402,  403,  403,  403,  399,  402,  403,    0,  398,    0,
-      401,  404,  404,  404,    0,    0,  404,  405,  405,  405,
-        0,    0,  405,    0,    0,  401,    0,  402,    0,  406,
-
-      406,  406,    0,  403,  406,  407,  407,  407,    0,  406,
-      407,    0,    0,  404,    0,    0,  403,    0,    0,  405,
-        0,  408,  408,  408,  404,  405,  408,  409,  409,  409,
-        0,  406,  409,  410,  410,  410,    0,  407,  410,  411,
-      411,  411,    0,    0,  411,  412,  412,  412,  407,    0,
-      412,    0,    0,  408,    0,  413,  413,  413,    0,  409,
-      413,    0,  414,  414,  414,  410,  409,  414,  410,    0,
-        0,  411,  408,    0,  415,  415,  415,  412,  411,  415,
-      416,  416,  416,    0,    0,  416,    0,  413,  412,    0,
-        0,    0,  413,    0,  414,  417,  417,  417,    0,    0,
-
-      417,  414,  418,  418,  418,    0,  415,  418,    0,  415,
-        0,    0,  416,  419,  419,  419,    0,    0,  419,  416,
-      420,  420,  420,    0,    0,  420,    0,  417,  422,  422,
-      422,    0,    0,  422,  418,  423,  423,  423,    0,    0,
-      423,  424,  424,  424,    0,  419,  424,    0,  425,  425,
-      425,    0,  420,  425,  426,  426,  426,    0,  420,  426,
-      422,    0,    0,  419,  427,  427,  427,  423,    0,  427,
-      429,  429,  429,  424,  423,  429,  422,    0,    0,  424,
-      425,    0,  430,  430,  430,    0,  426,  430,  431,  431,
-      431,    0,    0,  431,    0,    0,  427,    0,    0,  425,
-
-        0,    0,  429,  427,    0,  432,  432,  432,    0,    0,
-      432,  433,  433,  433,  430,  429,  433,  434,  434,  434,
-      431,    0,  434,  435,  435,  435,    0,    0,  435,  436,
-      436,  436,    0,  430,  436,    0,  431,  432,    0,  437,
-      437,  437,    0,  433,  437,  438,  438,  438,    0,  434,
-      438,  439,  439,  439,    0,  435,  439,    0,    0,    0,
-        0,  436,  432,  433,    0,  440,  440,  440,    0,  434,
-      440,  437,  436,  442,  442,  442,  435,  438,  442,  443,
-      443,  443,    0,  439,  443,    0,    0,    0,  438,    0,
-        0,  437,    0,  444,  444,  444,    0,  440,  444,  446,
-
-      446,  446,    0,    0,  446,  442,    0,    0,  439,    0,
-        0,  443,  440,  447,  447,  447,    0,  440,  447,  448,
-      448,  448,  443,    0,  448,  444,    0,  449,  449,  449,
-        0,  446,  449,  450,  450,  450,    0,    0,  450,    0,
-        0,  451,  451,  451,  446,  447,  451,    0,  452,  452,
-      452,  448,    0,  452,  448,  453,  453,  453,    0,  449,
-      453,    0,    0,    0,  447,  450,  449,    0,    0,    0,
-      454,  454,  454,  451,    0,  454,  455,  455,  455,  451,
-      452,  455,  450,  456,  456,  456,    0,  453,  456,  457,
-      457,  457,    0,  456,  457,    0,  458,  458,  458,  452,
-
-        0,  458,  454,    0,  453,  454,    0,    0,  455,  459,
-      459,  459,    0,    0,  459,  456,    0,  460,  460,  460,
-        0,  457,  460,    0,  461,  461,  461,  455,  458,  461,
-        0,    0,  458,    0,  457,  462,  462,  462,    0,    0,
-      462,  459,  463,  463,  463,    0,    0,  463,  459,  460,
-      464,  464,  464,    0,    0,  464,  461,    0,  465,  465,
-      465,    0,    0,  465,  466,  466,  466,  462,    0,  466,
-      467,  467,  467,    0,  463,  467,  461,    0,  470,  470,
-      470,  463,  464,  470,    0,    0,  462,    0,    0,  464,
-      465,    0,  471,  471,  471,    0,  466,  471,  472,  472,
-
-      472,    0,  467,  472,    0,    0,  473,  473,  473,  465,
-      470,  473,  474,  474,  474,  470,  466,  474,    0,    0,
-      467,  475,  475,  475,  471,    0,  475,  471,    0,    0,
-      472,  471,  477,  477,  477,    0,    0,  477,  473,    0,
-      478,  478,  478,    0,  474,  478,    0,  472,    0,  479,
-      479,  479,    0,  475,  479,    0,  473,  480,  480,  480,
-        0,    0,  480,    0,  477,    0,  481,  481,  481,    0,
-      477,  481,  478,  482,  482,  482,    0,    0,  482,  478,
-        0,  479,  483,  483,  483,    0,    0,  483,    0,  480,
-        0,  484,  484,  484,    0,    0,  484,    0,  481,  485,
-
-      485,  485,    0,  480,  485,  482,  486,  486,  486,    0,
-        0,  486,    0,    0,  483,    0,  482,    0,    0,  487,
-      487,  487,    0,  484,  487,    0,    0,  488,  488,  488,
-        0,  485,  488,    0,    0,    0,    0,    0,  486,  483,
-      484,  489,  489,  489,    0,  485,  489,    0,    0,  486,
-        0,  487,    0,  490,  490,  490,    0,  487,  490,  488,
-      492,  492,  492,    0,    0,  492,  494,  494,  494,    0,
-        0,  494,    0,  489,    0,    0,  489,  495,  495,  495,
-        0,    0,  495,    0,    0,  490,  496,  496,  496,    0,
-        0,  496,  492,    0,  497,  497,  497,    0,  494,  497,
-
-      492,  494,  498,  498,  498,    0,    0,  498,    0,  495,
-      490,  499,  499,  499,    0,    0,  499,    0,  496,    0,
-        0,  499,  500,  500,  500,  495,  497,  500,  501,  501,
-      501,    0,    0,  501,  498,  502,  502,  502,  496,  497,
-      502,    0,    0,  499,    0,  503,  503,  503,    0,    0,
-      503,    0,  498,    0,  500,    0,  504,  504,  504,    0,
-      501,  504,    0,  505,  505,  505,    0,  502,  505,  506,
-      506,  506,    0,    0,  506,    0,  501,  503,  507,  507,
-      507,    0,    0,  507,  503,    0,    0,  502,  504,  509,
-      509,  509,    0,    0,  509,  505,    0,    0,  510,  510,
-
-      510,  506,  505,  510,    0,  504,  511,  511,  511,    0,
-      507,  511,  512,  512,  512,    0,    0,  512,    0,  506,
-        0,  509,  512,    0,  509,    0,    0,    0,  507,    0,
-      510,    0,  513,  513,  513,    0,    0,  513,  511,    0,
-      514,  514,  514,    0,  512,  514,  515,  515,  515,  510,
-        0,  515,  516,  516,  516,    0,  511,  516,    0,    0,
-      517,  517,  517,  512,  513,  517,  518,  518,  518,    0,
-        0,  518,  514,    0,    0,  514,    0,    0,  515,    0,
-        0,    0,    0,  513,  516,  519,  519,  519,    0,    0,
-      519,  516,  517,    0,  520,  520,  520,    0,  518,  520,
-
-      515,    0,    0,  523,  523,  523,  518,    0,  523,  524,
-      524,  524,  517,  523,  524,    0,    0,  519,  526,  526,
-      526,    0,    0,  526,    0,    0,  520,  528,  528,  528,
-        0,    0,  528,    0,    0,  523,    0,  519,  529,  529,
-      529,  524,    0,  529,    0,  520,  530,  530,  530,    0,
-      526,  530,  531,  531,  531,    0,  524,  531,    0,  528,
-      532,  532,  532,    0,  526,  532,  533,  533,  533,    0,
-      529,  533,    0,  528,  535,  535,  535,    0,  530,  535,
-      536,  536,  536,    0,  531,  536,    0,  529,    0,    0,
-        0,  531,  532,    0,    0,  530,    0,    0,  533,  537,
-
-      537,  537,    0,    0,  537,    0,  535,    0,  532,  538,
-      538,  538,  536,    0,  538,    0,  539,  539,  539,    0,
-      535,  539,  540,  540,  540,    0,    0,  540,    0,  536,
-        0,  537,  541,  541,  541,    0,    0,  541,  537,    0,
-        0,  538,  542,  542,  542,    0,    0,  542,  539,    0,
-      543,  543,  543,  539,  540,  543,  545,  545,  545,    0,
-      538,  545,    0,    0,  541,  546,  546,  546,    0,    0,
-      546,  547,  547,  547,  542,    0,  547,    0,  548,  548,
-      548,  547,  543,  548,  549,  549,  549,    0,  545,  549,
-      542,  550,  550,  550,    0,  543,  550,  546,    0,    0,
-
-      551,  551,  551,  547,  546,  551,  545,  552,  552,  552,
-      548,    0,  552,  553,  553,  553,  549,    0,  553,  549,
-      554,  554,  554,  550,    0,  554,  550,    0,  548,  556,
-      556,  556,  551,    0,  556,    0,  557,  557,  557,  552,
-        0,  557,    0,  552,    0,  553,  557,    0,  558,  558,
-      558,    0,  554,  558,  551,    0,    0,  559,  559,  559,
-        0,  556,  559,    0,  560,  560,  560,    0,  557,  560,
-        0,    0,  556,  561,  561,  561,    0,    0,  561,    0,
-      558,  562,  562,  562,    0,    0,  562,  558,    0,  559,
-      563,  563,  563,  559,    0,  563,  560,    0,    0,  560,
-
-        0,  564,  564,  564,    0,  561,  564,  565,  565,  565,
-        0,    0,  565,  562,    0,    0,  562,    0,  566,  566,
-      566,    0,  563,  566,  561,  567,  567,  567,    0,    0,
-      567,    0,    0,  564,    0,  568,  568,  568,    0,  565,
-      568,  569,  569,  569,  564,    0,  569,  570,  570,  570,
-      566,    0,  570,  571,  571,  571,    0,  567,  571,  572,
-      572,  572,    0,  566,  572,    0,    0,  568,    0,  573,
-      573,  573,    0,  569,  573,    0,    0,    0,  568,  570,
-      569,    0,  575,  575,  575,  571,  570,  575,  576,  576,
-      576,  572,    0,  576,  577,  577,  577,    0,  571,  577,
-
-        0,  573,  578,  578,  578,    0,    0,  578,    0,  572,
-      579,  579,  579,    0,  575,  579,  573,  583,  583,  583,
-      576,  575,  583,  582,  582,  582,  577,  576,  582,    0,
-      584,  584,  584,    0,  578,  584,  585,  585,  585,    0,
-        0,  585,  579,  586,  586,  586,  577,    0,  586,  583,
-        0,    0,    0,  578,  579,  582,  583,    0,    0,  582,
-        0,    0,  584,    0,  587,  587,  587,    0,  585,  587,
-        0,    0,  588,  588,  588,  586,    0,  588,  589,  589,
-      589,    0,  584,  589,    0,    0,  586,  590,  590,  590,
-        0,    0,  590,    0,    0,    0,  587,  591,  591,  591,
-
-        0,    0,  591,  587,  588,    0,  594,  594,  594,    0,
-      589,  594,    0,  596,  596,  596,    0,    0,  596,  590,
-        0,    0,  590,  588,    0,  598,  598,  598,  589,  591,
-      598,    0,  591,    0,  599,  599,  599,    0,  594,  599,
-        0,  600,  600,  600,  594,  596,  600,  601,  601,  601,
-      596,    0,  601,  602,  602,  602,    0,  598,  602,  604,
-      604,  604,    0,    0,  604,    0,  599,    0,    0,  599,
-      606,  606,  606,  600,    0,  606,  598,    0,    0,  601,
-        0,    0,  608,  608,  608,  602,  600,  608,  609,  609,
-      609,  604,    0,  609,  610,  610,  610,    0,    0,  610,
-
-        0,    0,  606,  611,  611,  611,    0,  604,  611,    0,
-      612,  612,  612,  606,  608,  612,    0,  613,  613,  613,
-      609,    0,  613,  614,  614,  614,  610,  613,  614,    0,
-        0,  615,  615,  615,  608,  611,  615,    0,  609,  616,
-      616,  616,  612,    0,  616,  610,  611,    0,    0,  613,
-        0,  617,  617,  617,    0,  614,  617,  618,  618,  618,
-        0,    0,  618,  615,    0,  619,  619,  619,  613,    0,
-      619,  616,  620,  620,  620,    0,    0,  620,    0,  621,
-      621,  621,  616,  617,  621,    0,  623,  623,  623,  618,
-      617,  623,    0,  624,  624,  624,  618,  619,  624,    0,
-
-      619,    0,    0,    0,  620,  625,  625,  625,    0,    0,
-      625,  621,    0,    0,    0,  626,  626,  626,  623,  620,
-      626,  627,  627,  627,  623,  624,  627,  628,  628,  628,
-        0,    0,  628,  624,  629,  629,  629,  625,    0,  629,
-      630,  630,  630,    0,  625,  630,    0,  626,    0,  631,
-      631,  631,    0,  627,  631,  632,  632,  632,  626,  628,
-      632,    0,  633,  633,  633,    0,  629,  633,    0,  636,
-      636,  636,  630,  627,  636,  637,  637,  637,  628,    0,
-      637,  631,    0,    0,    0,    0,    0,  632,  630,    0,
-      638,  638,  638,    0,  633,  638,    0,  639,  639,  639,
-
-        0,  636,  639,  640,  640,  640,  632,  637,  640,  641,
-      641,  641,    0,    0,  641,  637,  636,    0,  643,  643,
-      643,    0,  638,  643,    0,  644,  644,  644,    0,  639,
-      644,  647,  647,  647,    0,  640,  647,  649,  649,  649,
-        0,  641,  649,    0,  650,  650,  650,    0,  641,  650,
-      643,  651,  651,  651,    0,    0,  651,  644,    0,    0,
-      652,  652,  652,  647,  643,  652,  654,  654,  654,  649,
-        0,  654,    0,  655,  655,  655,  650,  647,  655,  656,
-      656,  656,    0,  651,  656,  657,  657,  657,  649,    0,
-      657,    0,  652,    0,    0,    0,  650,    0,  654,  658,
-
-      658,  658,    0,  651,  658,  655,    0,  659,  659,  659,
-        0,  656,  659,  661,  661,  661,  655,  657,  661,    0,
-      663,  663,  663,    0,  657,  663,    0,    0,    0,    0,
-      656,  658,  665,  665,  665,    0,    0,  665,    0,  659,
-        0,    0,  658,    0,    0,  661,  659,    0,  666,  666,
-      666,    0,  663,  666,    0,    0,  670,  670,  670,  663,
-      661,  670,    0,    0,  665,  671,  671,  671,    0,    0,
-      671,  673,  673,  673,    0,    0,  673,  674,  674,  674,
-      666,    0,  674,  665,  675,  675,  675,  666,  670,  675,
-      676,  676,  676,    0,  670,  676,    0,  671,    0,  679,
-
-      679,  679,    0,  673,  679,    0,  681,  681,  681,  674,
-      673,  681,    0,  671,    0,    0,  675,    0,  680,  680,
-      680,    0,  676,  680,  682,  682,  682,    0,  680,  682,
-        0,  679,    0,  676,  683,  683,  683,    0,  681,  683,
-        0,  684,  684,  684,    0,    0,  684,  685,  685,  685,
-      680,    0,  685,    0,    0,  679,  682,  681,  686,  686,
-      686,    0,    0,  686,    0,    0,  683,    0,    0,  687,
-      687,  687,  682,  684,  687,  688,  688,  688,    0,  685,
-      688,  684,  689,  689,  689,  688,    0,  689,    0,    0,
-      686,  690,  690,  690,    0,    0,  690,  693,  693,  693,
-
-        0,  687,  693,  694,  694,  694,    0,  688,  694,    0,
-      695,  695,  695,  694,  689,  695,    0,  696,  696,  696,
-      689,  687,  696,  690,    0,  697,  697,  697,    0,  693,
-      697,  699,  699,  699,    0,  694,  699,    0,  702,  702,
-      702,    0,  695,  702,    0,  693,  703,  703,  703,  696,
-        0,  703,    0,  704,  704,  704,    0,  697,  704,  695,
-        0,    0,    0,  699,  706,  706,  706,    0,    0,  706,
-      702,    0,  697,    0,  699,  708,  708,  708,  703,    0,
-      708,  702,  709,  709,  709,  704,    0,  709,    0,    0,
-        0,    0,  704,    0,  703,    0,  706,    0,  711,  711,
-
-      711,    0,    0,  711,  712,  712,  712,  708,  711,  712,
-        0,  706,    0,    0,  709,    0,  713,  713,  713,    0,
-      708,  713,  714,  714,  714,    0,    0,  714,    0,    0,
-      711,    0,  709,  715,  715,  715,  712,    0,  715,    0,
-        0,  716,  716,  716,    0,  712,  716,    0,  713,    0,
-        0,  716,    0,    0,  714,  717,  717,  717,    0,    0,
-      717,    0,  713,    0,    0,  715,    0,  718,  718,  718,
-        0,  714,  718,  716,  719,  719,  719,    0,    0,  719,
-      720,  720,  720,    0,    0,  720,    0,  717,  721,  721,
-      721,    0,    0,  721,  717,    0,  722,  722,  722,  718,
-
-        0,  722,  724,  724,  724,    0,  719,  724,  725,  725,
-      725,    0,  720,  725,    0,  718,    0,  719,    0,    0,
-      721,  726,  726,  726,    0,    0,  726,  721,  722,    0,
-      727,  727,  727,    0,  724,  727,    0,  729,  729,  729,
-      725,    0,  729,    0,  730,  730,  730,    0,  722,  730,
-        0,  724,    0,  726,    0,  725,    0,    0,  726,  731,
-      731,  731,  727,    0,  731,  732,  732,  732,  727,  729,
-      732,    0,  733,  733,  733,    0,  730,  733,  734,  734,
-      734,    0,    0,  734,  736,  736,  736,  730,    0,  736,
-        0,  731,    0,    0,  737,  737,  737,  732,  731,  737,
-
-        0,  739,  739,  739,  733,    0,  739,  740,  740,  740,
-      734,  733,  740,  741,  741,  741,  736,  734,  741,  742,
-      742,  742,    0,    0,  742,    0,  737,    0,    0,  743,
-      743,  743,  736,  739,  743,  744,  744,  744,    0,  740,
-      744,  745,  745,  745,  737,  741,  745,    0,    0,    0,
-        0,  742,  739,    0,  740,    0,    0,    0,    0,    0,
-      741,  743,  742,  746,  746,  746,    0,  744,  746,  747,
-      747,  747,    0,  745,  747,    0,  748,  748,  748,    0,
-      743,  748,    0,  749,  749,  749,    0,  744,  749,  750,
-      750,  750,  745,    0,  750,  746,    0,  751,  751,  751,
-
-        0,  747,  751,    0,    0,  752,  752,  752,  748,    0,
-      752,  746,  747,    0,    0,  749,    0,    0,    0,  748,
-        0,  750,    0,  754,  754,  754,    0,  750,  754,  751,
-      755,  755,  755,    0,    0,  755,    0,  752,  756,  756,
-      756,    0,    0,  756,  751,  752,  758,  758,  758,    0,
-        0,  758,  759,  759,  759,  754,    0,  759,  761,  761,
-      761,    0,  755,  761,  762,  762,  762,    0,    0,  762,
-      756,  755,  763,  763,  763,    0,    0,  763,  758,    0,
-        0,  756,    0,    0,  759,    0,    0,    0,    0,    0,
-      761,  759,    0,    0,    0,    0,  762,    0,    0,    0,
-
-        0,    0,    0,    0,  763,    0,    0,    0,  761,    0,
-        0,    0,    0,    0,    0,  762,  766,  766,  766,  766,
-      766,  766,  766,  767,  767,  767,  767,  767,  767,  767,
-      768,    0,  768,  768,  768,  768,  768,  769,    0,  769,
-        0,  769,  769,  769,  770,  770,  770,  770,  770,  770,
-      770,  771,  771,  771,  771,  771,  771,  771,  772,    0,
-      772,  772,  772,  772,  772,  773,  773,    0,  773,  774,
-      774,  774,  774,  774,  775,  775,  776,  776,  777,  777,
-      778,  778,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765
+       22,   79,   22,   22,   22,   45,   45,   45,   88,   83,
+       45,  141,   22,   47,   47,   47,   81,   90,   47,   82,
+
+       48,   48,   48,   86,   85,   48,   43,  141,   22,   49,
+       49,   49,   83,   50,   49,   88,   81,   45,   41,   82,
+       50,   39,   51,   51,   51,   47,   48,   51,   76,   76,
+       76,   38,   48,  144,   49,   47,  139,   52,   52,   52,
+       50,   49,   52,   24,   50,   53,   53,   53,   50,  144,
+       53,   55,   55,   55,   51,   50,   55,   49,   50,  139,
+       50,   50,   54,   54,   54,   14,  140,   54,   11,   52,
+      143,    0,   51,   56,   56,   56,    0,   53,   56,    0,
+       53,  142,   52,   55,   53,   52,  140,   53,   52,    0,
+      143,   57,   57,   57,   54,   70,   57,   70,   53,   55,
+
+       70,   70,   70,   55,  142,   56,   55,    0,    0,   54,
+        0,   56,   58,   58,   58,    0,  210,   58,   54,    0,
+       56,    0,   56,   57,   59,   59,   59,    0,    0,   59,
+       57,   57,  210,    0,   57,   60,   60,   60,    0,   57,
+       60,   62,   62,   62,   58,    0,   62,   58,   77,   77,
+       77,    0,  213,   63,   63,   63,   59,    0,   63,   59,
+        0,   64,   64,   64,    0,    0,   64,   60,  213,   68,
+       68,   68,    0,   62,    0,    0,   62,    0,    0,   68,
+       62,   65,   65,   65,   60,   63,   65,    0,   60,   61,
+       61,   61,   63,   64,   61,   68,    0,   72,   72,   72,
+
+       64,   63,   63,    0,   64,    0,   63,   72,    0,   66,
+       66,   66,    0,   65,   66,    0,    0,    0,   64,    0,
+        0,   61,    0,   72,   61,    0,    0,   61,   61,    0,
+        0,   69,   65,   69,   69,   69,    0,   61,    0,   61,
+        0,   66,    0,   69,   66,   71,    0,   71,   71,   71,
+       91,   91,   91,    0,    0,   91,    0,   71,    0,   69,
+       92,   92,   92,    0,    0,   92,   93,   93,   93,    0,
+        0,   93,    0,   71,   94,   94,   94,    0,    0,   94,
+        0,    0,   91,    0,   96,   96,   96,   91,    0,   96,
+        0,    0,   92,    0,    0,   93,    0,    0,   93,   98,
+
+       98,   98,    0,    0,   98,    0,   94,    0,    0,    0,
+        0,    0,    0,    0,    0,   94,   96,   97,   97,   97,
+        0,    0,    0,    0,   97,   97,   97,   97,   97,    0,
+        0,   98,   99,   99,   99,    0,    0,   99,    0,   97,
+       97,   97,   97,   97,   97,  100,  100,  100,    0,   98,
+      100,    0,  101,  101,  101,    0,    0,  101,  102,  102,
+      102,    0,    0,  102,   99,    0,  103,  103,  103,    0,
+        0,  103,    0,    0,    0,   99,    0,  100,    0,    0,
+      104,  104,  104,  100,  101,  104,  105,  105,  105,    0,
+      102,  105,  100,    0,  106,  106,  106,    0,  103,  106,
+
+        0,    0,  103,  103,    0,    0,  101,    0,    0,    0,
+      102,  103,  104,    0,    0,    0,    0,  104,  105,  107,
+      107,  107,    0,    0,  107,    0,  106,    0,    0,  105,
+        0,  106,  108,  108,  108,    0,    0,  108,  109,  109,
+      109,    0,    0,  109,    0,    0,  106,  110,  110,  110,
+        0,  107,  110,  111,  111,  111,  107,  110,  111,    0,
+        0,  112,  112,  112,  108,    0,  112,    0,  107,    0,
+      109,  113,  113,  113,    0,    0,  113,    0,    0,  110,
+      108,  113,    0,  108,    0,  111,  114,  114,  114,    0,
+        0,  114,  111,  112,    0,  109,  115,  115,  115,    0,
+
+        0,  115,    0,  113,  116,  116,  116,    0,    0,  116,
+      117,  117,  117,  112,    0,  117,    0,    0,  114,    0,
+        0,  114,  118,  118,  118,    0,    0,  118,  115,  119,
+      119,  119,    0,  115,  119,    0,  116,    0,    0,    0,
+      116,    0,  117,    0,  120,  120,  120,    0,    0,  120,
+        0,  117,    0,    0,  118,  121,  121,  121,    0,  118,
+      121,  119,  122,  122,  122,    0,    0,  122,  123,  123,
+      123,    0,    0,  123,    0,  119,  120,    0,  123,  124,
+      124,  124,    0,    0,  124,    0,    0,  121,  125,  125,
+      125,    0,    0,  125,  122,    0,  120,    0,    0,    0,
+
+      123,  126,  126,  126,    0,    0,  126,  121,    0,    0,
+        0,  124,  122,  122,  127,  127,  127,    0,    0,  127,
+      125,  129,  129,  129,    0,    0,  129,    0,    0,  124,
+      130,  130,  130,  126,    0,  130,  125,    0,    0,    0,
+      126,    0,  131,  131,  131,    0,  127,  131,    0,  132,
+      132,  132,    0,  129,  132,  133,  133,  133,    0,    0,
+      133,    0,  130,  127,  128,  128,  128,  130,    0,  128,
+        0,  129,    0,    0,  131,  129,    0,  131,  134,  134,
+      134,  132,    0,  134,    0,  132,    0,  133,  135,  135,
+      135,    0,    0,  135,    0,    0,  128,    0,    0,  128,
+
+      128,  128,  136,  136,  136,    0,  133,  136,    0,  128,
+      134,  128,  137,  137,  137,  128,    0,  137,    0,    0,
+      135,  148,  148,  148,  134,    0,  148,  151,  151,  151,
+        0,    0,  151,    0,  136,    0,    0,  135,    0,    0,
+        0,  136,    0,    0,  137,  152,  152,  152,    0,    0,
+      152,    0,    0,  148,    0,    0,    0,  137,    0,  151,
+        0,  157,  157,  157,    0,    0,  157,  156,  156,  156,
+      148,    0,  156,    0,  159,  159,  159,  152,    0,  159,
+        0,    0,    0,    0,    0,    0,  152,  155,  155,  155,
+        0,    0,    0,  157,  155,  155,  155,  155,  155,  156,
+
+      157,    0,  156,  158,  158,  158,  159,    0,  158,  155,
+      155,  155,  155,  155,  155,  160,  160,  160,    0,    0,
+      160,    0,  161,  161,  161,  160,  159,  161,  162,  162,
+      162,    0,    0,  162,    0,  158,    0,    0,  163,  163,
+      163,    0,  158,  163,    0,    0,    0,  160,  164,  164,
+      164,    0,    0,  164,  161,    0,    0,  161,    0,    0,
+      162,  165,  165,  165,    0,    0,  165,  166,  166,  166,
+      163,    0,  166,    0,  167,  167,  167,    0,    0,  167,
+      164,  162,    0,  163,  168,  168,  168,  164,    0,  168,
+      169,  169,  169,  165,    0,  169,  170,  170,  170,  166,
+
+        0,  170,  171,  171,  171,  166,  167,  171,    0,  167,
+      165,    0,  172,  172,  172,    0,  168,  172,    0,  173,
+      173,  173,  169,  168,  173,  174,  174,  174,  170,    0,
+      174,  176,  176,  176,  171,  169,  176,    0,    0,  170,
+      177,  177,  177,    0,  172,  177,  171,    0,  178,  178,
+      178,  173,    0,  178,  179,  179,  179,  174,    0,  179,
+      174,    0,    0,  176,  172,  180,  180,  180,  173,    0,
+      180,    0,  177,    0,    0,  180,    0,    0,  176,  177,
+      178,    0,    0,  178,    0,    0,  179,  181,  181,  181,
+        0,    0,  181,  182,  182,  182,    0,  180,  182,  183,
+
+      183,  183,    0,    0,  183,  179,  184,  184,  184,  183,
+        0,  184,  185,  185,  185,    0,    0,  185,    0,  181,
+        0,  186,  186,  186,    0,  182,  186,  187,  187,  187,
+        0,  183,  187,    0,  182,    0,    0,  181,  184,    0,
+        0,  188,  188,  188,  185,  184,  188,  189,  189,  189,
+        0,    0,  189,  186,    0,  185,  190,  190,  190,  187,
+        0,  190,  187,  191,  191,  191,    0,    0,  191,    0,
+      186,    0,    0,  188,    0,    0,    0,    0,    0,  189,
+      192,  192,  192,    0,    0,  192,    0,    0,  190,  193,
+      193,  193,  188,    0,  193,  191,  189,  194,  194,  194,
+
+        0,    0,  194,    0,  195,  195,  195,  190,  191,  195,
+        0,    0,  192,  196,  196,  196,    0,    0,  196,    0,
+      192,  193,  197,  197,  197,    0,    0,  197,    0,  194,
+        0,    0,  193,    0,    0,  194,  195,  198,  198,  198,
+        0,    0,  198,    0,    0,  196,    0,  195,  199,  199,
+      199,    0,    0,  199,  197,    0,    0,  197,  200,  200,
+      200,  196,    0,  200,    0,  201,  201,  201,    0,  198,
+      201,    0,    0,  202,  202,  202,  198,    0,  202,    0,
+      199,  203,  203,  203,    0,    0,  203,  199,    0,    0,
+      200,  204,  204,  204,    0,    0,  204,  201,  205,  205,
+
+      205,    0,    0,  205,  201,  202,    0,    0,    0,  206,
+      206,  206,  200,  203,  206,    0,    0,  202,  203,  207,
+      207,  207,    0,  204,  207,    0,    0,  208,  208,  208,
+      205,    0,  208,    0,    0,  209,  209,  209,  204,    0,
+      209,  206,  218,  218,  218,    0,    0,  218,  206,    0,
+      205,  207,    0,    0,    0,    0,  218,  218,  207,  208,
+      220,  220,  220,    0,  218,  220,    0,  209,  222,  222,
+      222,    0,    0,  222,  218,    0,    0,  208,  209,    0,
+        0,    0,    0,    0,    0,  223,  223,  223,    0,    0,
+      223,    0,  220,    0,    0,    0,    0,    0,    0,    0,
+
+      222,    0,    0,  220,  221,  221,  221,    0,    0,    0,
+        0,  221,  221,  221,  221,  221,    0,  223,  224,  224,
+      224,    0,    0,  224,    0,  222,  221,  221,  221,  221,
+      221,  221,  223,  225,  225,  225,    0,    0,  225,  226,
+      226,  226,    0,    0,  226,    0,  227,  227,  227,    0,
+      224,  227,  228,  228,  228,    0,    0,  228,  229,  229,
+      229,    0,    0,  229,    0,  225,    0,  230,  230,  230,
+        0,  226,  230,    0,    0,  231,  231,  231,  227,  226,
+      231,    0,    0,  225,  228,  231,  232,  232,  232,  231,
+      229,  232,    0,  228,    0,  233,  233,  233,    0,  230,
+
+      233,  229,    0,    0,  234,  234,  234,  231,  230,  234,
+      235,  235,  235,    0,    0,  235,    0,    0,  232,  236,
+      236,  236,    0,    0,  236,    0,    0,  233,  237,  237,
+      237,    0,    0,  237,    0,    0,  234,    0,  238,  238,
+      238,    0,  235,  238,  233,  239,  239,  239,  238,    0,
+      239,  236,    0,    0,  234,    0,  240,  240,  240,    0,
+      237,  240,    0,  235,    0,    0,  241,  241,  241,  236,
+      238,  241,    0,  242,  242,  242,    0,  239,  242,  237,
+        0,  243,  243,  243,  239,  238,  243,    0,  240,  238,
+      244,  244,  244,    0,  240,  244,    0,    0,  241,  245,
+
+      245,  245,    0,    0,  245,  242,  246,  246,  246,    0,
+        0,  246,    0,  243,    0,  247,  247,  247,  241,  243,
+      247,    0,  244,  242,    0,  248,  248,  248,    0,  244,
+      248,  245,  249,  249,  249,    0,    0,  249,  246,    0,
+        0,  246,  245,  250,  250,  250,    0,  247,  250,    0,
+      251,  251,  251,    0,  247,  251,    0,  248,  252,  252,
+      252,    0,    0,  252,  249,  253,  253,  253,    0,    0,
+      253,    0,    0,    0,    0,  250,  248,    0,  254,  254,
+      254,    0,  251,  254,  255,  255,  255,    0,    0,  255,
+      252,  250,    0,  256,  256,  256,    0,  253,  256,    0,
+
+      257,  257,  257,  251,  252,  257,  259,  259,  259,    0,
+      254,  259,    0,  258,  258,  258,  255,    0,  258,    0,
+      253,    0,    0,    0,    0,  256,  254,  255,  260,  260,
+      260,    0,  257,  260,    0,  261,  261,  261,  259,  257,
+      261,    0,    0,  257,  256,  258,    0,  262,  262,  262,
+        0,  258,  262,    0,  259,    0,  263,  263,  263,    0,
+      260,  263,    0,  264,  264,  264,    0,  261,  264,  265,
+      265,  265,    0,    0,  265,  260,    0,    0,    0,  262,
+        0,    0,  266,  266,  266,  261,    0,  266,  263,  267,
+      267,  267,    0,    0,  267,  264,    0,  268,  268,  268,
+
+        0,  265,  268,    0,  262,  269,  269,  269,  265,    0,
+      269,  263,    0,  264,  266,  270,  270,  270,    0,    0,
+      270,  267,  271,  271,  271,    0,    0,  271,  267,  268,
+        0,    0,  266,  272,  272,  272,  268,  269,  272,    0,
+      273,  273,  273,    0,  269,  273,    0,  270,  274,  274,
+      274,    0,    0,  274,  271,  279,  279,  279,    0,    0,
+      279,  280,  280,  280,    0,  272,  280,    0,  281,  281,
+      281,    0,  273,  281,    0,    0,  282,  282,  282,    0,
+      274,  282,    0,  284,  284,  284,  274,  279,  284,  285,
+      285,  285,    0,  280,  285,    0,  287,  287,  287,    0,
+
+      281,  287,    0,    0,    0,    0,  281,    0,  282,    0,
+        0,  288,  288,  288,    0,  284,  288,    0,    0,    0,
+        0,  285,    0,  282,  283,  283,  283,    0,  287,    0,
+        0,  283,  283,  283,  283,  283,    0,  290,  290,  290,
+        0,  285,  290,  288,  287,    0,  283,  283,  283,  283,
+      283,  283,  291,  291,  291,    0,    0,  291,    0,  288,
+      292,  292,  292,    0,    0,  292,  293,  293,  293,  290,
+        0,  293,    0,  294,  294,  294,    0,    0,  294,    0,
+        0,    0,  290,    0,  291,  296,  296,  296,    0,    0,
+      296,    0,  292,    0,    0,  292,    0,    0,  293,  291,
+
+        0,  297,  297,  297,  293,  294,  297,  298,  298,  298,
+        0,    0,  298,    0,  299,  299,  299,  296,    0,  299,
+        0,  294,  300,  300,  300,    0,    0,  300,    0,  302,
+      302,  302,  300,  297,  302,    0,  296,    0,    0,  298,
+        0,    0,  303,  303,  303,  298,  299,  303,    0,    0,
+      297,    0,    0,  299,  300,  304,  304,  304,    0,    0,
+      304,  302,  305,  305,  305,  304,    0,  305,  306,  306,
+      306,    0,    0,  306,  303,    0,    0,  303,    0,  302,
+      307,  307,  307,    0,    0,  307,    0,  304,  308,  308,
+      308,    0,    0,  308,  305,    0,    0,  309,  309,  309,
+
+      306,    0,  309,    0,    0,    0,  306,    0,  310,  310,
+      310,    0,  307,  310,  311,  311,  311,    0,  310,  311,
+      308,    0,    0,  307,    0,  312,  312,  312,  308,  309,
+      312,  313,  313,  313,    0,  309,  313,  314,  314,  314,
+      310,    0,  314,    0,    0,    0,  311,  316,  316,  316,
+        0,    0,  316,    0,  317,  317,  317,  312,    0,  317,
+        0,  311,    0,  313,    0,  318,  318,  318,    0,  314,
+      318,  319,  319,  319,    0,  312,  319,    0,    0,  316,
+        0,  313,  320,  320,  320,  314,  317,  320,  321,  321,
+      321,    0,    0,  321,  316,    0,    0,  318,    0,    0,
+
+      323,  323,  323,  319,  318,  323,  317,    0,  324,  324,
+      324,    0,    0,  324,  320,    0,  325,  325,  325,  319,
+      321,  325,    0,  326,  326,  326,    0,    0,  326,    0,
+      320,    0,  323,  326,    0,    0,  327,  327,  327,  321,
+      324,  327,  328,  328,  328,    0,    0,  328,  325,  329,
+      329,  329,    0,    0,  329,  326,    0,    0,  324,  330,
+      330,  330,    0,    0,  330,  331,  331,  331,  327,  330,
+      331,    0,  325,    0,  328,  331,    0,  332,  332,  332,
+      328,  329,  332,  327,  333,  333,  333,  329,    0,  333,
+        0,  330,    0,  334,  334,  334,    0,  331,  334,    0,
+
+      335,  335,  335,    0,    0,  335,  336,  336,  336,  332,
+        0,  336,  337,  337,  337,    0,  333,  337,  342,  342,
+      342,    0,    0,  342,    0,  334,    0,    0,  342,    0,
+        0,  332,  335,    0,  333,    0,  334,    0,  336,    0,
+      347,  347,  347,    0,  337,  347,  350,  350,  350,    0,
+      342,  350,  335,  348,  348,  348,  350,    0,  348,    0,
+      351,  351,  351,    0,  337,  351,  352,  352,  352,    0,
+        0,  352,  347,    0,  353,  353,  353,    0,  350,  353,
+        0,    0,    0,    0,    0,  348,    0,  347,  354,  354,
+      354,    0,  351,  354,  348,    0,    0,    0,  352,  355,
+
+      355,  355,    0,    0,  355,  351,  353,  356,  356,  356,
+        0,    0,  356,  353,    0,    0,  352,  357,  357,  357,
+      354,    0,  357,  358,  358,  358,    0,  354,  358,    0,
+        0,  355,  357,  359,  359,  359,    0,    0,  359,  356,
+        0,  360,  360,  360,    0,  356,  360,    0,    0,  357,
+        0,  355,  361,  361,  361,  358,    0,  361,    0,  362,
+      362,  362,    0,    0,  362,  359,  363,  363,  363,    0,
+        0,  363,    0,  360,    0,    0,  358,  364,  364,  364,
+      360,    0,  364,  359,  361,    0,    0,  365,  365,  365,
+      361,  362,  365,    0,  367,  367,  367,    0,  363,  367,
+
+        0,  368,  368,  368,  362,  363,  368,    0,    0,  364,
+      369,  369,  369,    0,    0,  369,  370,  370,  370,  365,
+        0,  370,    0,  364,    0,  365,  367,  371,  371,  371,
+        0,    0,  371,  368,    0,  372,  372,  372,    0,    0,
+      372,  368,  369,    0,  367,  369,    0,    0,  370,  373,
+      373,  373,    0,    0,  373,    0,  374,  374,  374,  371,
+        0,  374,    0,    0,    0,  371,  370,  372,  375,  375,
+      375,    0,    0,  375,    0,    0,    0,  377,  377,  377,
+        0,  373,  377,    0,  376,  376,  376,  372,  374,  376,
+      378,  378,  378,    0,  376,  378,  379,  379,  379,    0,
+
+      375,  379,    0,  380,  380,  380,  373,  374,  380,  377,
+        0,  377,  381,  381,  381,    0,  376,  381,  383,  383,
+      383,  375,  378,  383,  384,  384,  384,    0,  379,  384,
+        0,    0,    0,    0,  384,  380,    0,    0,  385,  385,
+      385,    0,  378,  385,  381,    0,  379,    0,  380,    0,
+      383,    0,  386,  386,  386,    0,  384,  386,    0,    0,
+      390,  390,  390,  384,  381,  390,    0,    0,  383,    0,
+      385,  387,  387,  387,    0,  385,  387,  388,  388,  388,
+        0,  387,  388,    0,  386,    0,    0,  388,  391,  391,
+      391,    0,  390,  391,  392,  392,  392,  386,    0,  392,
+
+      393,  393,  393,  387,    0,  393,    0,    0,    0,  388,
+      393,  390,  394,  394,  394,    0,    0,  394,    0,    0,
+      391,    0,    0,  395,  395,  395,  392,    0,  395,  392,
+        0,    0,  393,  395,  397,  397,  397,    0,    0,  397,
+      391,  398,  398,  398,  394,    0,  398,    0,    0,  397,
+        0,  400,  400,  400,    0,  395,  400,  401,  401,  401,
+        0,    0,  401,    0,  394,    0,  397,  402,  402,  402,
+        0,    0,  402,  398,  403,  403,  403,    0,    0,  403,
+      404,  404,  404,  400,  403,  404,  398,    0,    0,  401,
+      405,  405,  405,    0,    0,  405,  407,  407,  407,  402,
+
+        0,  407,  400,    0,  402,    0,  403,    0,  406,  406,
+      406,    0,  404,  406,  408,  408,  408,    0,  406,  408,
+        0,    0,  405,    0,    0,    0,  404,    0,  407,    0,
+        0,  409,  409,  409,    0,  407,  409,  410,  410,  410,
+      406,  409,  410,    0,  405,    0,  408,  411,  411,  411,
+        0,    0,  411,  412,  412,  412,    0,    0,  412,    0,
+        0,  408,    0,  409,    0,  413,  413,  413,    0,  410,
+      413,  414,  414,  414,    0,  413,  414,    0,    0,  411,
+        0,    0,  410,    0,    0,  412,    0,  415,  415,  415,
+      411,  412,  415,  416,  416,  416,    0,  413,  416,  417,
+
+      417,  417,    0,  414,  417,  418,  418,  418,    0,    0,
+      418,  419,  419,  419,  414,    0,  419,    0,    0,  415,
+        0,  420,  420,  420,    0,  416,  420,    0,  421,  421,
+      421,  417,  416,  421,  417,    0,    0,  418,  415,    0,
+      422,  422,  422,  419,  418,  422,  423,  423,  423,    0,
+        0,  423,    0,  420,  419,    0,    0,    0,  420,    0,
+      421,  424,  424,  424,    0,    0,  424,  421,  425,  425,
+      425,    0,  422,  425,    0,  422,    0,    0,  423,  426,
+      426,  426,    0,    0,  426,  423,  427,  427,  427,    0,
+        0,  427,    0,  424,  429,  429,  429,    0,    0,  429,
+
+      425,  430,  430,  430,    0,    0,  430,  431,  431,  431,
+        0,  426,  431,    0,  432,  432,  432,    0,  427,  432,
+      433,  433,  433,    0,  427,  433,  429,    0,    0,  426,
+      434,  434,  434,  430,    0,  434,  436,  436,  436,  431,
+      430,  436,  429,    0,    0,  431,  432,    0,  437,  437,
+      437,    0,  433,  437,  438,  438,  438,    0,    0,  438,
+        0,    0,  434,    0,    0,  432,    0,    0,  436,  434,
+        0,  439,  439,  439,    0,    0,  439,  440,  440,  440,
+      437,  436,  440,  441,  441,  441,  438,    0,  441,  442,
+      442,  442,    0,    0,  442,  443,  443,  443,    0,  437,
+
+      443,    0,  438,  439,    0,  444,  444,  444,    0,  440,
+      444,  445,  445,  445,    0,  441,  445,  446,  446,  446,
+        0,  442,  446,    0,    0,    0,    0,  443,  439,  440,
+        0,  447,  447,  447,    0,  441,  447,  444,  443,  449,
+      449,  449,  442,  445,  449,  450,  450,  450,    0,  446,
+      450,    0,    0,    0,  445,    0,    0,  444,    0,  451,
+      451,  451,    0,  447,  451,  453,  453,  453,    0,    0,
+      453,  449,    0,    0,  446,    0,    0,  450,  447,  454,
+      454,  454,    0,  447,  454,  455,  455,  455,  450,    0,
+      455,  451,    0,  456,  456,  456,    0,  453,  456,  457,
+
+      457,  457,    0,    0,  457,    0,    0,  458,  458,  458,
+      453,  454,  458,    0,  459,  459,  459,  455,    0,  459,
+      455,  460,  460,  460,    0,  456,  460,    0,    0,    0,
+      454,  457,  456,    0,    0,    0,  461,  461,  461,  458,
+        0,  461,  462,  462,  462,  458,  459,  462,  457,  463,
+      463,  463,    0,  460,  463,  464,  464,  464,    0,  463,
+      464,    0,  465,  465,  465,  459,    0,  465,  461,    0,
+      460,  461,    0,    0,  462,  466,  466,  466,    0,    0,
+      466,  463,    0,  467,  467,  467,    0,  464,  467,    0,
+      468,  468,  468,  462,  465,  468,    0,    0,  465,    0,
+
+      464,  469,  469,  469,    0,    0,  469,  466,  470,  470,
+      470,    0,    0,  470,  466,  467,  471,  471,  471,    0,
+        0,  471,  468,    0,  472,  472,  472,    0,    0,  472,
+      473,  473,  473,  469,    0,  473,  474,  474,  474,    0,
+      470,  474,  468,    0,  477,  477,  477,  470,  471,  477,
+        0,    0,  469,    0,    0,  471,  472,    0,  478,  478,
+      478,    0,  473,  478,  479,  479,  479,    0,  474,  479,
+        0,    0,  480,  480,  480,  472,  477,  480,  481,  481,
+      481,  477,  473,  481,    0,    0,  474,  482,  482,  482,
+      478,    0,  482,  478,    0,    0,  479,  478,  484,  484,
+
+      484,    0,    0,  484,  480,    0,  485,  485,  485,    0,
+      481,  485,    0,  479,    0,  486,  486,  486,    0,  482,
+      486,    0,  480,  487,  487,  487,    0,    0,  487,    0,
+      484,    0,  488,  488,  488,    0,  484,  488,  485,  489,
+      489,  489,    0,    0,  489,  485,    0,  486,  490,  490,
+      490,    0,    0,  490,    0,  487,    0,  491,  491,  491,
+        0,    0,  491,    0,  488,  492,  492,  492,    0,  487,
+      492,  489,  493,  493,  493,    0,    0,  493,    0,    0,
+      490,    0,  489,    0,    0,  494,  494,  494,    0,  491,
+      494,    0,    0,  495,  495,  495,    0,  492,  495,    0,
+
+        0,    0,    0,    0,  493,  490,  491,  496,  496,  496,
+        0,  492,  496,    0,    0,  493,    0,  494,    0,  497,
+      497,  497,    0,  494,  497,  495,  499,  499,  499,    0,
+        0,  499,  501,  501,  501,    0,    0,  501,    0,  496,
+        0,    0,  496,  502,  502,  502,    0,    0,  502,    0,
+        0,  497,  503,  503,  503,    0,    0,  503,  499,    0,
+      504,  504,  504,    0,  501,  504,  499,  501,  505,  505,
+      505,    0,    0,  505,    0,  502,  497,  506,  506,  506,
+        0,    0,  506,    0,  503,    0,    0,  506,  507,  507,
+      507,  502,  504,  507,  508,  508,  508,    0,    0,  508,
+
+      505,  509,  509,  509,  503,  504,  509,    0,    0,  506,
+        0,  510,  510,  510,    0,    0,  510,    0,  505,    0,
+      507,    0,  511,  511,  511,    0,  508,  511,    0,  512,
+      512,  512,    0,  509,  512,  513,  513,  513,    0,    0,
+      513,    0,  508,  510,  514,  514,  514,    0,    0,  514,
+      510,    0,    0,  509,  511,  516,  516,  516,    0,    0,
+      516,  512,    0,    0,  517,  517,  517,  513,  512,  517,
+        0,  511,  518,  518,  518,    0,  514,  518,  519,  519,
+      519,    0,    0,  519,    0,  513,    0,  516,  519,    0,
+      516,    0,    0,    0,  514,    0,  517,    0,  520,  520,
+
+      520,    0,    0,  520,  518,    0,  521,  521,  521,    0,
+      519,  521,  522,  522,  522,  517,    0,  522,  523,  523,
+      523,    0,  518,  523,    0,    0,  524,  524,  524,  519,
+      520,  524,  525,  525,  525,    0,    0,  525,  521,    0,
+        0,  521,    0,    0,  522,    0,    0,    0,    0,  520,
+      523,  526,  526,  526,    0,    0,  526,  523,  524,    0,
+      527,  527,  527,    0,  525,  527,  522,    0,    0,  530,
+      530,  530,  525,    0,  530,  531,  531,  531,  524,  530,
+      531,    0,    0,  526,  533,  533,  533,    0,    0,  533,
+        0,    0,  527,  535,  535,  535,    0,    0,  535,    0,
+
+        0,  530,    0,  526,  536,  536,  536,  531,    0,  536,
+        0,  527,  537,  537,  537,    0,  533,  537,  538,  538,
+      538,    0,  531,  538,    0,  535,  539,  539,  539,    0,
+      533,  539,  540,  540,  540,    0,  536,  540,    0,  535,
+      542,  542,  542,    0,  537,  542,  543,  543,  543,    0,
+      538,  543,    0,  536,    0,    0,    0,  538,  539,    0,
+        0,  537,    0,    0,  540,  544,  544,  544,    0,    0,
+      544,    0,  542,    0,  539,  545,  545,  545,  543,    0,
+      545,    0,  546,  546,  546,    0,  542,  546,  547,  547,
+      547,    0,    0,  547,    0,  543,    0,  544,  548,  548,
+
+      548,    0,    0,  548,  544,    0,    0,  545,  549,  549,
+      549,    0,    0,  549,  546,    0,  550,  550,  550,  546,
+      547,  550,  552,  552,  552,    0,  545,  552,    0,    0,
+      548,  553,  553,  553,    0,    0,  553,  554,  554,  554,
+      549,    0,  554,    0,  555,  555,  555,  554,  550,  555,
+      556,  556,  556,    0,  552,  556,  549,  557,  557,  557,
+        0,  550,  557,  553,    0,    0,  558,  558,  558,  554,
+      553,  558,  552,  559,  559,  559,  555,    0,  559,  560,
+      560,  560,  556,    0,  560,  556,  561,  561,  561,  557,
+        0,  561,  557,    0,  555,  563,  563,  563,  558,    0,
+
+      563,    0,  564,  564,  564,  559,    0,  564,    0,  559,
+        0,  560,  564,    0,  565,  565,  565,    0,  561,  565,
+      558,    0,    0,  566,  566,  566,    0,  563,  566,    0,
+      567,  567,  567,    0,  564,  567,    0,    0,  563,  568,
+      568,  568,    0,    0,  568,    0,  565,  569,  569,  569,
+        0,    0,  569,  565,    0,  566,  570,  570,  570,  566,
+        0,  570,  567,    0,    0,  567,    0,  571,  571,  571,
+        0,  568,  571,  572,  572,  572,    0,    0,  572,  569,
+        0,    0,  569,    0,  573,  573,  573,    0,  570,  573,
+      568,  574,  574,  574,    0,    0,  574,    0,    0,  571,
+
+        0,  575,  575,  575,    0,  572,  575,  576,  576,  576,
+      571,    0,  576,  577,  577,  577,  573,    0,  577,  578,
+      578,  578,    0,  574,  578,  579,  579,  579,    0,  573,
+      579,    0,    0,  575,    0,  580,  580,  580,    0,  576,
+      580,    0,    0,    0,  575,  577,  576,    0,  582,  582,
+      582,  578,  577,  582,  583,  583,  583,  579,    0,  583,
+      584,  584,  584,    0,  578,  584,    0,  580,  585,  585,
+      585,    0,    0,  585,    0,  579,  586,  586,  586,    0,
+      582,  586,  580,  590,  590,  590,  583,  582,  590,  589,
+      589,  589,  584,  583,  589,    0,  591,  591,  591,    0,
+
+      585,  591,  592,  592,  592,    0,    0,  592,  586,  593,
+      593,  593,  584,    0,  593,  590,    0,    0,    0,  585,
+      586,  589,  590,    0,    0,  589,    0,    0,  591,    0,
+      594,  594,  594,    0,  592,  594,    0,    0,  595,  595,
+      595,  593,    0,  595,  596,  596,  596,    0,  591,  596,
+        0,    0,  593,  597,  597,  597,    0,    0,  597,    0,
+        0,    0,  594,  598,  598,  598,    0,    0,  598,  594,
+      595,    0,  601,  601,  601,    0,  596,  601,    0,  603,
+      603,  603,    0,    0,  603,  597,    0,    0,  597,  595,
+        0,  605,  605,  605,  596,  598,  605,    0,  598,    0,
+
+      606,  606,  606,    0,  601,  606,    0,  607,  607,  607,
+      601,  603,  607,  608,  608,  608,  603,    0,  608,  609,
+      609,  609,    0,  605,  609,  611,  611,  611,    0,    0,
+      611,    0,  606,    0,    0,  606,  613,  613,  613,  607,
+        0,  613,  605,    0,    0,  608,    0,    0,  615,  615,
+      615,  609,  607,  615,  616,  616,  616,  611,    0,  616,
+      617,  617,  617,    0,    0,  617,    0,    0,  613,  618,
+      618,  618,    0,  611,  618,    0,  619,  619,  619,  613,
+      615,  619,    0,  620,  620,  620,  616,    0,  620,  621,
+      621,  621,  617,  620,  621,    0,    0,  622,  622,  622,
+
+      615,  618,  622,    0,  616,  623,  623,  623,  619,    0,
+      623,  617,  618,    0,    0,  620,    0,  624,  624,  624,
+        0,  621,  624,  625,  625,  625,    0,    0,  625,  622,
+        0,  626,  626,  626,  620,    0,  626,  623,  627,  627,
+      627,    0,    0,  627,    0,  628,  628,  628,  623,  624,
+      628,    0,  630,  630,  630,  625,  624,  630,    0,  631,
+      631,  631,  625,  626,  631,    0,  626,    0,    0,    0,
+      627,  632,  632,  632,    0,    0,  632,  628,    0,    0,
+        0,  633,  633,  633,  630,  627,  633,  634,  634,  634,
+      630,  631,  634,  635,  635,  635,    0,    0,  635,  631,
+
+      636,  636,  636,  632,    0,  636,  637,  637,  637,    0,
+      632,  637,    0,  633,    0,  638,  638,  638,    0,  634,
+      638,  639,  639,  639,  633,  635,  639,    0,  640,  640,
+      640,    0,  636,  640,    0,  643,  643,  643,  637,  634,
+      643,  644,  644,  644,  635,    0,  644,  638,    0,    0,
+        0,    0,    0,  639,  637,    0,  645,  645,  645,    0,
+      640,  645,    0,  646,  646,  646,    0,  643,  646,  647,
+      647,  647,  639,  644,  647,  648,  648,  648,    0,    0,
+      648,  644,  643,    0,  650,  650,  650,    0,  645,  650,
+        0,  651,  651,  651,    0,  646,  651,  654,  654,  654,
+
+        0,  647,  654,  656,  656,  656,    0,  648,  656,    0,
+      657,  657,  657,    0,  648,  657,  650,  658,  658,  658,
+        0,    0,  658,  651,    0,    0,  659,  659,  659,  654,
+      650,  659,  661,  661,  661,  656,    0,  661,    0,  662,
+      662,  662,  657,  654,  662,  663,  663,  663,    0,  658,
+      663,  664,  664,  664,  656,    0,  664,    0,  659,    0,
+        0,    0,  657,    0,  661,  665,  665,  665,    0,  658,
+      665,  662,    0,  666,  666,  666,    0,  663,  666,  668,
+      668,  668,  662,  664,  668,    0,  670,  670,  670,    0,
+      664,  670,    0,    0,    0,    0,  663,  665,  672,  672,
+
+      672,    0,    0,  672,    0,  666,    0,    0,  665,    0,
+        0,  668,  666,    0,  673,  673,  673,    0,  670,  673,
+        0,    0,  677,  677,  677,  670,  668,  677,    0,    0,
+      672,  678,  678,  678,    0,    0,  678,  680,  680,  680,
+        0,    0,  680,  681,  681,  681,  673,    0,  681,  672,
+      682,  682,  682,  673,  677,  682,  683,  683,  683,    0,
+      677,  683,    0,  678,    0,  686,  686,  686,    0,  680,
+      686,    0,  688,  688,  688,  681,  680,  688,    0,  678,
+        0,    0,  682,    0,  687,  687,  687,    0,  683,  687,
+      689,  689,  689,    0,  687,  689,    0,  686,    0,  683,
+
+      690,  690,  690,    0,  688,  690,    0,  691,  691,  691,
+        0,    0,  691,  692,  692,  692,  687,    0,  692,    0,
+        0,  686,  689,  688,  693,  693,  693,    0,    0,  693,
+        0,    0,  690,    0,    0,  694,  694,  694,  689,  691,
+      694,  695,  695,  695,    0,  692,  695,  691,  696,  696,
+      696,  695,    0,  696,    0,    0,  693,  697,  697,  697,
+        0,    0,  697,  700,  700,  700,    0,  694,  700,  701,
+      701,  701,    0,  695,  701,    0,  702,  702,  702,  701,
+      696,  702,    0,  703,  703,  703,  696,  694,  703,  697,
+        0,  704,  704,  704,    0,  700,  704,  706,  706,  706,
+
+        0,  701,  706,    0,  709,  709,  709,    0,  702,  709,
+        0,  700,  710,  710,  710,  703,    0,  710,    0,  711,
+      711,  711,    0,  704,  711,  702,    0,    0,    0,  706,
+      713,  713,  713,    0,    0,  713,  709,    0,  704,    0,
+      706,  715,  715,  715,  710,    0,  715,  709,  716,  716,
+      716,  711,    0,  716,    0,    0,    0,    0,  711,    0,
+      710,    0,  713,    0,  718,  718,  718,    0,    0,  718,
+      719,  719,  719,  715,  718,  719,    0,  713,    0,    0,
+      716,    0,  720,  720,  720,    0,  715,  720,  721,  721,
+      721,    0,    0,  721,    0,    0,  718,    0,  716,  722,
+
+      722,  722,  719,    0,  722,    0,    0,  723,  723,  723,
+        0,  719,  723,    0,  720,    0,    0,  723,    0,    0,
+      721,  724,  724,  724,    0,    0,  724,    0,  720,    0,
+        0,  722,    0,  725,  725,  725,    0,  721,  725,  723,
+      726,  726,  726,    0,    0,  726,  727,  727,  727,    0,
+        0,  727,    0,  724,  728,  728,  728,    0,    0,  728,
+      724,    0,  729,  729,  729,  725,    0,  729,  731,  731,
+      731,    0,  726,  731,  732,  732,  732,    0,  727,  732,
+        0,  725,    0,  726,    0,    0,  728,  733,  733,  733,
+        0,    0,  733,  728,  729,    0,  734,  734,  734,    0,
+
+      731,  734,    0,  736,  736,  736,  732,    0,  736,    0,
+      737,  737,  737,    0,  729,  737,    0,  731,    0,  733,
+        0,  732,    0,    0,  733,  738,  738,  738,  734,    0,
+      738,  739,  739,  739,  734,  736,  739,    0,  740,  740,
+      740,    0,  737,  740,  741,  741,  741,    0,    0,  741,
+      743,  743,  743,  737,    0,  743,    0,  738,    0,    0,
+      744,  744,  744,  739,  738,  744,    0,  746,  746,  746,
+      740,    0,  746,  747,  747,  747,  741,  740,  747,  748,
+      748,  748,  743,  741,  748,  749,  749,  749,    0,    0,
+      749,    0,  744,    0,    0,  750,  750,  750,  743,  746,
+
+      750,  751,  751,  751,    0,  747,  751,  752,  752,  752,
+      744,  748,  752,    0,    0,    0,    0,  749,  746,    0,
+      747,    0,    0,    0,    0,    0,  748,  750,  749,  753,
+      753,  753,    0,  751,  753,  754,  754,  754,    0,  752,
+      754,    0,  755,  755,  755,    0,  750,  755,    0,  756,
+      756,  756,    0,  751,  756,  757,  757,  757,  752,    0,
+      757,  753,    0,  758,  758,  758,    0,  754,  758,    0,
+        0,  759,  759,  759,  755,    0,  759,  753,  754,    0,
+        0,  756,    0,    0,    0,  755,    0,  757,    0,  761,
+      761,  761,    0,  757,  761,  758,  762,  762,  762,    0,
+
+        0,  762,    0,  759,  763,  763,  763,    0,    0,  763,
+      758,  759,  765,  765,  765,    0,    0,  765,  766,  766,
+      766,  761,    0,  766,  768,  768,  768,    0,  762,  768,
+      769,  769,  769,    0,    0,  769,  763,  762,  770,  770,
+      770,    0,    0,  770,  765,    0,    0,  763,    0,    0,
+      766,    0,    0,    0,    0,    0,  768,  766,    0,    0,
+        0,    0,  769,    0,    0,    0,    0,    0,    0,    0,
+      770,    0,    0,    0,  768,    0,    0,    0,    0,    0,
+        0,  769,  773,  773,  773,  773,  773,  773,  773,  774,
+      774,  774,  774,  774,  774,  774,  775,    0,  775,  775,
+
+      775,  775,  775,  776,    0,  776,    0,  776,  776,  776,
+      777,  777,  777,  777,  777,  777,  777,  778,  778,  778,
+      778,  778,  778,  778,  779,    0,  779,  779,  779,  779,
+      779,  780,  780,    0,  780,  781,  781,  781,  781,  781,
+      782,  782,  783,  783,  784,  784,  785,  785,  772,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  772,  772,  772,  772,  772,  772,
+
+      772,  772,  772,  772,  772,  772,  772,  772,  772
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2018,7 +2035,7 @@ static char *yy_last_accepting_cpos;
 extern int parser6__flex_debug;
 int parser6__flex_debug = 1;
 
-static yyconst flex_int16_t yy_rule_linenum[108] =
+static yyconst flex_int16_t yy_rule_linenum[111] =
     {   0,
       130,  132,  134,  139,  140,  145,  146,  147,  159,  162,
       167,  174,  183,  192,  201,  210,  219,  228,  240,  250,
@@ -2029,9 +2046,9 @@ static yyconst flex_int16_t yy_rule_linenum[108] =
       644,  653,  662,  671,  682,  692,  701,  711,  720,  729,
       738,  747,  756,  765,  775,  784,  793,  802,  811,  820,
       829,  838,  847,  856,  865,  874,  883,  892,  901,  910,
-     1008, 1013, 1018, 1023, 1024, 1025, 1026, 1027, 1028, 1030,
+      919,  928,  937, 1035, 1040, 1045, 1050, 1051, 1052, 1053,
 
-     1048, 1061, 1066, 1070, 1072, 1074, 1076
+     1054, 1055, 1057, 1075, 1088, 1093, 1097, 1099, 1101, 1103
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2043,7 +2060,7 @@ static yyconst flex_int16_t yy_rule_linenum[108] =
 #define YY_RESTORE_YY_MORE_OFFSET
 char *parser6_text;
 #line 1 "dhcp6_lexer.ll"
-/* Copyright (C) 2016 Internet Systems Consortium, Inc. ("ISC")
+/* Copyright (C) 2016-2017 Internet Systems Consortium, Inc. ("ISC")
 
    This Source Code Form is subject to the terms of the Mozilla Public
    License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -2102,7 +2119,7 @@ unsigned int comment_start_line = 0;
 // by moving it ahead by parser6_leng bytes. parser6_leng specifies the length of the
 // currently matched token.
 #define YY_USER_ACTION  driver.loc_.columns(parser6_leng);
-#line 2106 "dhcp6_lexer.cc"
+#line 2123 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2428,7 +2445,7 @@ YY_DECL
     }
 
 
-#line 2432 "dhcp6_lexer.cc"
+#line 2449 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2457,13 +2474,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 766 )
+                               if ( yy_current_state >= 773 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 765 );
+               while ( yy_current_state != 772 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2482,13 +2499,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 108 )
+                       else if ( yy_act < 111 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], parser6_text );
-                       else if ( yy_act == 108 )
+                       else if ( yy_act == 111 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         parser6_text );
-                       else if ( yy_act == 109 )
+                       else if ( yy_act == 112 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3420,6 +3437,42 @@ YY_RULE_SETUP
 case 78:
 YY_RULE_SETUP
 #line 802 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DUID_TYPE:
+        return isc::dhcp::Dhcp6Parser::make_LLT(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("LLT", driver.loc_);
+    }
+}
+       YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 811 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DUID_TYPE:
+        return isc::dhcp::Dhcp6Parser::make_EN(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("EN", driver.loc_);
+    }
+}
+       YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 820 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DUID_TYPE:
+        return isc::dhcp::Dhcp6Parser::make_LL(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("LL", driver.loc_);
+    }
+}
+       YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 829 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3429,9 +3482,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 82:
 YY_RULE_SETUP
-#line 811 "dhcp6_lexer.ll"
+#line 838 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3441,9 +3494,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 83:
 YY_RULE_SETUP
-#line 820 "dhcp6_lexer.ll"
+#line 847 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3453,9 +3506,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 84:
 YY_RULE_SETUP
-#line 829 "dhcp6_lexer.ll"
+#line 856 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3465,9 +3518,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 85:
 YY_RULE_SETUP
-#line 838 "dhcp6_lexer.ll"
+#line 865 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3477,9 +3530,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 86:
 YY_RULE_SETUP
-#line 847 "dhcp6_lexer.ll"
+#line 874 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3489,9 +3542,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 87:
 YY_RULE_SETUP
-#line 856 "dhcp6_lexer.ll"
+#line 883 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3501,9 +3554,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 88:
 YY_RULE_SETUP
-#line 865 "dhcp6_lexer.ll"
+#line 892 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3513,9 +3566,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 89:
 YY_RULE_SETUP
-#line 874 "dhcp6_lexer.ll"
+#line 901 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3525,9 +3578,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 90:
 YY_RULE_SETUP
-#line 883 "dhcp6_lexer.ll"
+#line 910 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3537,9 +3590,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 91:
 YY_RULE_SETUP
-#line 892 "dhcp6_lexer.ll"
+#line 919 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3549,9 +3602,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 92:
 YY_RULE_SETUP
-#line 901 "dhcp6_lexer.ll"
+#line 928 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3561,9 +3614,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 93:
 YY_RULE_SETUP
-#line 910 "dhcp6_lexer.ll"
+#line 937 "dhcp6_lexer.ll"
 {
     // A string has been matched. It contains the actual string and single quotes.
     // We need to get those quotes out of the way and just use its content, e.g.
@@ -3662,65 +3715,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 91:
-/* rule 91 can match eol */
+case 94:
+/* rule 94 can match eol */
 YY_RULE_SETUP
-#line 1008 "dhcp6_lexer.ll"
+#line 1035 "dhcp6_lexer.ll"
 {
     // Bad string with a forbidden control character inside
     driver.error(driver.loc_, "Invalid control in " + std::string(parser6_text));
 }
        YY_BREAK
-case 92:
-/* rule 92 can match eol */
+case 95:
+/* rule 95 can match eol */
 YY_RULE_SETUP
-#line 1013 "dhcp6_lexer.ll"
+#line 1040 "dhcp6_lexer.ll"
 {
     // Bad string with a bad escape inside
     driver.error(driver.loc_, "Bad escape in " + std::string(parser6_text));
 }
        YY_BREAK
-case 93:
+case 96:
 YY_RULE_SETUP
-#line 1018 "dhcp6_lexer.ll"
+#line 1045 "dhcp6_lexer.ll"
 {
     // Bad string with an open escape at the end
     driver.error(driver.loc_, "Overflow escape in " + std::string(parser6_text));
 }
        YY_BREAK
-case 94:
+case 97:
 YY_RULE_SETUP
-#line 1023 "dhcp6_lexer.ll"
+#line 1050 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 95:
+case 98:
 YY_RULE_SETUP
-#line 1024 "dhcp6_lexer.ll"
+#line 1051 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 96:
+case 99:
 YY_RULE_SETUP
-#line 1025 "dhcp6_lexer.ll"
+#line 1052 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 97:
+case 100:
 YY_RULE_SETUP
-#line 1026 "dhcp6_lexer.ll"
+#line 1053 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 98:
+case 101:
 YY_RULE_SETUP
-#line 1027 "dhcp6_lexer.ll"
+#line 1054 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 99:
+case 102:
 YY_RULE_SETUP
-#line 1028 "dhcp6_lexer.ll"
+#line 1055 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 100:
+case 103:
 YY_RULE_SETUP
-#line 1030 "dhcp6_lexer.ll"
+#line 1057 "dhcp6_lexer.ll"
 {
     // An integer was found.
     std::string tmp(parser6_text);
@@ -3739,9 +3792,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 101:
+case 104:
 YY_RULE_SETUP
-#line 1048 "dhcp6_lexer.ll"
+#line 1075 "dhcp6_lexer.ll"
 {
     // A floating point was found.
     std::string tmp(parser6_text);
@@ -3755,43 +3808,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 102:
+case 105:
 YY_RULE_SETUP
-#line 1061 "dhcp6_lexer.ll"
+#line 1088 "dhcp6_lexer.ll"
 {
     string tmp(parser6_text);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 103:
+case 106:
 YY_RULE_SETUP
-#line 1066 "dhcp6_lexer.ll"
+#line 1093 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 104:
+case 107:
 YY_RULE_SETUP
-#line 1070 "dhcp6_lexer.ll"
+#line 1097 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 105:
+case 108:
 YY_RULE_SETUP
-#line 1072 "dhcp6_lexer.ll"
+#line 1099 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 106:
+case 109:
 YY_RULE_SETUP
-#line 1074 "dhcp6_lexer.ll"
+#line 1101 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 107:
+case 110:
 YY_RULE_SETUP
-#line 1076 "dhcp6_lexer.ll"
+#line 1103 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(parser6_text));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1078 "dhcp6_lexer.ll"
+#line 1105 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -3815,12 +3868,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 108:
+case 111:
 YY_RULE_SETUP
-#line 1101 "dhcp6_lexer.ll"
+#line 1128 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 3824 "dhcp6_lexer.cc"
+#line 3877 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4137,7 +4190,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 766 )
+                       if ( yy_current_state >= 773 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
@@ -4170,11 +4223,11 @@ static int yy_get_next_buffer (void)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 766 )
+               if ( yy_current_state >= 773 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
-       yy_is_jam = (yy_current_state == 765);
+       yy_is_jam = (yy_current_state == 772);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4923,7 +4976,7 @@ void parser6_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 1101 "dhcp6_lexer.ll"
+#line 1128 "dhcp6_lexer.ll"
 
 
 
index 16c6312529b2e0025c580c19bb155075c6452ef1..59b6629395616f3e78dd7cc7a4818c056cb5dac0 100644 (file)
@@ -253,23 +253,24 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 116: // value
+      case 119: // value
+      case 338: // duid_type
         value.move< ElementPtr > (that.value);
         break;
 
-      case 102: // "boolean"
+      case 105: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 101: // "floating point"
+      case 104: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 100: // "integer"
+      case 103: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 99: // "constant string"
+      case 102: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -288,23 +289,24 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 116: // value
+      case 119: // value
+      case 338: // duid_type
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 102: // "boolean"
+      case 105: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 101: // "floating point"
+      case 104: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 100: // "integer"
+      case 103: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 99: // "constant string"
+      case 102: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -344,39 +346,46 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 99: // "constant string"
+            case 102: // "constant string"
 
-#line 189 "dhcp6_parser.yy" // lalr1.cc:636
+#line 193 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
-#line 352 "dhcp6_parser.cc" // lalr1.cc:636
+#line 354 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 100: // "integer"
+      case 103: // "integer"
 
-#line 189 "dhcp6_parser.yy" // lalr1.cc:636
+#line 193 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
-#line 359 "dhcp6_parser.cc" // lalr1.cc:636
+#line 361 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 101: // "floating point"
+      case 104: // "floating point"
 
-#line 189 "dhcp6_parser.yy" // lalr1.cc:636
+#line 193 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
-#line 366 "dhcp6_parser.cc" // lalr1.cc:636
+#line 368 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 102: // "boolean"
+      case 105: // "boolean"
 
-#line 189 "dhcp6_parser.yy" // lalr1.cc:636
+#line 193 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
-#line 373 "dhcp6_parser.cc" // lalr1.cc:636
+#line 375 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 116: // value
+      case 119: // value
 
-#line 189 "dhcp6_parser.yy" // lalr1.cc:636
+#line 193 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
-#line 380 "dhcp6_parser.cc" // lalr1.cc:636
+#line 382 "dhcp6_parser.cc" // lalr1.cc:636
+        break;
+
+      case 338: // duid_type
+
+#line 193 "dhcp6_parser.yy" // lalr1.cc:636
+        { yyoutput << yysym.value.template as< ElementPtr > (); }
+#line 389 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
 
@@ -576,23 +585,24 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 116: // value
+      case 119: // value
+      case 338: // duid_type
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 102: // "boolean"
+      case 105: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 101: // "floating point"
+      case 104: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 100: // "integer"
+      case 103: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 99: // "constant string"
+      case 102: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -614,248 +624,248 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 198 "dhcp6_parser.yy" // lalr1.cc:859
+#line 202 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
-#line 620 "dhcp6_parser.cc" // lalr1.cc:859
+#line 630 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 199 "dhcp6_parser.yy" // lalr1.cc:859
+#line 203 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
-#line 626 "dhcp6_parser.cc" // lalr1.cc:859
+#line 636 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 200 "dhcp6_parser.yy" // lalr1.cc:859
+#line 204 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
-#line 632 "dhcp6_parser.cc" // lalr1.cc:859
+#line 642 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 201 "dhcp6_parser.yy" // lalr1.cc:859
+#line 205 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
-#line 638 "dhcp6_parser.cc" // lalr1.cc:859
+#line 648 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 202 "dhcp6_parser.yy" // lalr1.cc:859
+#line 206 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET6; }
-#line 644 "dhcp6_parser.cc" // lalr1.cc:859
+#line 654 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 203 "dhcp6_parser.yy" // lalr1.cc:859
+#line 207 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
-#line 650 "dhcp6_parser.cc" // lalr1.cc:859
+#line 660 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 204 "dhcp6_parser.yy" // lalr1.cc:859
+#line 208 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.PD_POOLS; }
-#line 656 "dhcp6_parser.cc" // lalr1.cc:859
+#line 666 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 205 "dhcp6_parser.yy" // lalr1.cc:859
+#line 209 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
-#line 662 "dhcp6_parser.cc" // lalr1.cc:859
+#line 672 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 206 "dhcp6_parser.yy" // lalr1.cc:859
+#line 210 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
-#line 668 "dhcp6_parser.cc" // lalr1.cc:859
+#line 678 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 207 "dhcp6_parser.yy" // lalr1.cc:859
+#line 211 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
-#line 674 "dhcp6_parser.cc" // lalr1.cc:859
+#line 684 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 208 "dhcp6_parser.yy" // lalr1.cc:859
+#line 212 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
-#line 680 "dhcp6_parser.cc" // lalr1.cc:859
+#line 690 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 216 "dhcp6_parser.yy" // lalr1.cc:859
+#line 220 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
-#line 686 "dhcp6_parser.cc" // lalr1.cc:859
+#line 696 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 25:
-#line 217 "dhcp6_parser.yy" // lalr1.cc:859
+#line 221 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
-#line 692 "dhcp6_parser.cc" // lalr1.cc:859
+#line 702 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 218 "dhcp6_parser.yy" // lalr1.cc:859
+#line 222 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
-#line 698 "dhcp6_parser.cc" // lalr1.cc:859
+#line 708 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 219 "dhcp6_parser.yy" // lalr1.cc:859
+#line 223 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
-#line 704 "dhcp6_parser.cc" // lalr1.cc:859
+#line 714 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 220 "dhcp6_parser.yy" // lalr1.cc:859
+#line 224 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
-#line 710 "dhcp6_parser.cc" // lalr1.cc:859
+#line 720 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 221 "dhcp6_parser.yy" // lalr1.cc:859
+#line 225 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 716 "dhcp6_parser.cc" // lalr1.cc:859
+#line 726 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 222 "dhcp6_parser.yy" // lalr1.cc:859
+#line 226 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
-#line 722 "dhcp6_parser.cc" // lalr1.cc:859
+#line 732 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 225 "dhcp6_parser.yy" // lalr1.cc:859
+#line 229 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
 }
-#line 731 "dhcp6_parser.cc" // lalr1.cc:859
+#line 741 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 32:
-#line 230 "dhcp6_parser.yy" // lalr1.cc:859
+#line 234 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 742 "dhcp6_parser.cc" // lalr1.cc:859
+#line 752 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 33:
-#line 235 "dhcp6_parser.yy" // lalr1.cc:859
+#line 239 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     // for it.
 }
-#line 752 "dhcp6_parser.cc" // lalr1.cc:859
+#line 762 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 36:
-#line 246 "dhcp6_parser.yy" // lalr1.cc:859
+#line 250 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 761 "dhcp6_parser.cc" // lalr1.cc:859
+#line 771 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 37:
-#line 250 "dhcp6_parser.yy" // lalr1.cc:859
+#line 254 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
                   }
-#line 771 "dhcp6_parser.cc" // lalr1.cc:859
+#line 781 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 38:
-#line 257 "dhcp6_parser.yy" // lalr1.cc:859
+#line 261 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
 }
-#line 780 "dhcp6_parser.cc" // lalr1.cc:859
+#line 790 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 39:
-#line 260 "dhcp6_parser.yy" // lalr1.cc:859
+#line 264 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
-#line 788 "dhcp6_parser.cc" // lalr1.cc:859
+#line 798 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 40:
-#line 265 "dhcp6_parser.yy" // lalr1.cc:859
+#line 269 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
-#line 796 "dhcp6_parser.cc" // lalr1.cc:859
+#line 806 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 41:
-#line 267 "dhcp6_parser.yy" // lalr1.cc:859
+#line 271 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
 }
-#line 805 "dhcp6_parser.cc" // lalr1.cc:859
+#line 815 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 44:
-#line 276 "dhcp6_parser.yy" // lalr1.cc:859
+#line 280 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 814 "dhcp6_parser.cc" // lalr1.cc:859
+#line 824 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 45:
-#line 280 "dhcp6_parser.yy" // lalr1.cc:859
+#line 284 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
                   }
-#line 823 "dhcp6_parser.cc" // lalr1.cc:859
+#line 833 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 46:
-#line 291 "dhcp6_parser.yy" // lalr1.cc:859
+#line 295 "dhcp6_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
     error(yystack_[1].location,
           "got unexpected keyword \"" + keyword + "\" in " + where + " map.");
 }
-#line 834 "dhcp6_parser.cc" // lalr1.cc:859
+#line 844 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 47:
-#line 301 "dhcp6_parser.yy" // lalr1.cc:859
+#line 305 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 845 "dhcp6_parser.cc" // lalr1.cc:859
+#line 855 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 48:
-#line 306 "dhcp6_parser.yy" // lalr1.cc:859
+#line 310 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
     // for it.
 }
-#line 855 "dhcp6_parser.cc" // lalr1.cc:859
+#line 865 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 56:
-#line 325 "dhcp6_parser.yy" // lalr1.cc:859
+#line 329 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -864,11 +874,11 @@ namespace isc { namespace dhcp {
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP6);
 }
-#line 868 "dhcp6_parser.cc" // lalr1.cc:859
+#line 878 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 57:
-#line 332 "dhcp6_parser.yy" // lalr1.cc:859
+#line 336 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -876,526 +886,526 @@ namespace isc { namespace dhcp {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 880 "dhcp6_parser.cc" // lalr1.cc:859
+#line 890 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 58:
-#line 342 "dhcp6_parser.yy" // lalr1.cc:859
+#line 346 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 890 "dhcp6_parser.cc" // lalr1.cc:859
+#line 900 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 59:
-#line 346 "dhcp6_parser.yy" // lalr1.cc:859
+#line 350 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 898 "dhcp6_parser.cc" // lalr1.cc:859
+#line 908 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 84:
-#line 380 "dhcp6_parser.yy" // lalr1.cc:859
+#line 384 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("preferred-lifetime", prf);
 }
-#line 907 "dhcp6_parser.cc" // lalr1.cc:859
+#line 917 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 85:
-#line 385 "dhcp6_parser.yy" // lalr1.cc:859
+#line 389 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
 }
-#line 916 "dhcp6_parser.cc" // lalr1.cc:859
+#line 926 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 86:
-#line 390 "dhcp6_parser.yy" // lalr1.cc:859
+#line 394 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
 }
-#line 925 "dhcp6_parser.cc" // lalr1.cc:859
+#line 935 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 87:
-#line 395 "dhcp6_parser.yy" // lalr1.cc:859
+#line 399 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
 }
-#line 934 "dhcp6_parser.cc" // lalr1.cc:859
+#line 944 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 88:
-#line 400 "dhcp6_parser.yy" // lalr1.cc:859
+#line 404 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
 }
-#line 943 "dhcp6_parser.cc" // lalr1.cc:859
+#line 953 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 89:
-#line 405 "dhcp6_parser.yy" // lalr1.cc:859
+#line 409 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 954 "dhcp6_parser.cc" // lalr1.cc:859
+#line 964 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 90:
-#line 410 "dhcp6_parser.yy" // lalr1.cc:859
+#line 414 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 963 "dhcp6_parser.cc" // lalr1.cc:859
+#line 973 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 91:
-#line 415 "dhcp6_parser.yy" // lalr1.cc:859
+#line 419 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 973 "dhcp6_parser.cc" // lalr1.cc:859
+#line 983 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 92:
-#line 419 "dhcp6_parser.yy" // lalr1.cc:859
+#line 423 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 981 "dhcp6_parser.cc" // lalr1.cc:859
+#line 991 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 93:
-#line 423 "dhcp6_parser.yy" // lalr1.cc:859
+#line 427 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 992 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1002 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 94:
-#line 428 "dhcp6_parser.yy" // lalr1.cc:859
+#line 432 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1001 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1011 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 95:
-#line 433 "dhcp6_parser.yy" // lalr1.cc:859
+#line 437 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1012 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1022 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 96:
-#line 438 "dhcp6_parser.yy" // lalr1.cc:859
+#line 442 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1021 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1031 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 97:
-#line 443 "dhcp6_parser.yy" // lalr1.cc:859
+#line 447 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1032 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1042 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 98:
-#line 448 "dhcp6_parser.yy" // lalr1.cc:859
+#line 452 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1041 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1051 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 110:
-#line 468 "dhcp6_parser.yy" // lalr1.cc:859
+#line 472 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1049 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1059 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 111:
-#line 470 "dhcp6_parser.yy" // lalr1.cc:859
+#line 474 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 1059 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1069 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 112:
-#line 476 "dhcp6_parser.yy" // lalr1.cc:859
+#line 480 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1067 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1077 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 113:
-#line 478 "dhcp6_parser.yy" // lalr1.cc:859
+#line 482 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1077 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1087 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 114:
-#line 484 "dhcp6_parser.yy" // lalr1.cc:859
+#line 488 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1085 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1095 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 115:
-#line 486 "dhcp6_parser.yy" // lalr1.cc:859
+#line 490 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1095 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1105 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 116:
-#line 492 "dhcp6_parser.yy" // lalr1.cc:859
+#line 496 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1103 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1113 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 117:
-#line 494 "dhcp6_parser.yy" // lalr1.cc:859
+#line 498 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1113 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1123 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 118:
-#line 500 "dhcp6_parser.yy" // lalr1.cc:859
+#line 504 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1121 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1131 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 119:
-#line 502 "dhcp6_parser.yy" // lalr1.cc:859
+#line 506 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1131 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1141 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 120:
-#line 508 "dhcp6_parser.yy" // lalr1.cc:859
+#line 512 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1140 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1150 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 121:
-#line 513 "dhcp6_parser.yy" // lalr1.cc:859
+#line 517 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1149 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1159 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 122:
-#line 518 "dhcp6_parser.yy" // lalr1.cc:859
+#line 522 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1158 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1168 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 123:
-#line 523 "dhcp6_parser.yy" // lalr1.cc:859
+#line 527 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("mac-sources", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.MAC_SOURCES);
 }
-#line 1169 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1179 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 124:
-#line 528 "dhcp6_parser.yy" // lalr1.cc:859
+#line 532 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1178 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1188 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 129:
-#line 541 "dhcp6_parser.yy" // lalr1.cc:859
+#line 545 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1187 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1197 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 130:
-#line 546 "dhcp6_parser.yy" // lalr1.cc:859
+#line 550 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1196 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1206 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 131:
-#line 551 "dhcp6_parser.yy" // lalr1.cc:859
+#line 555 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1207 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1217 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 132:
-#line 556 "dhcp6_parser.yy" // lalr1.cc:859
+#line 560 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1216 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1226 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 137:
-#line 569 "dhcp6_parser.yy" // lalr1.cc:859
+#line 573 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1225 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1235 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 138:
-#line 574 "dhcp6_parser.yy" // lalr1.cc:859
+#line 578 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay-supplied-options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1236 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1246 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 139:
-#line 579 "dhcp6_parser.yy" // lalr1.cc:859
+#line 583 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1245 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1255 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 140:
-#line 584 "dhcp6_parser.yy" // lalr1.cc:859
+#line 588 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1256 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1266 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 141:
-#line 589 "dhcp6_parser.yy" // lalr1.cc:859
+#line 593 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1265 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1275 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 146:
-#line 602 "dhcp6_parser.yy" // lalr1.cc:859
+#line 606 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1275 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1285 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 147:
-#line 606 "dhcp6_parser.yy" // lalr1.cc:859
+#line 610 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1283 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1293 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 148:
-#line 610 "dhcp6_parser.yy" // lalr1.cc:859
+#line 614 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1293 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1303 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 149:
-#line 614 "dhcp6_parser.yy" // lalr1.cc:859
+#line 618 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1301 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1311 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 155:
-#line 627 "dhcp6_parser.yy" // lalr1.cc:859
+#line 631 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1309 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1319 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 156:
-#line 629 "dhcp6_parser.yy" // lalr1.cc:859
+#line 633 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1319 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1329 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 157:
-#line 635 "dhcp6_parser.yy" // lalr1.cc:859
+#line 639 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1327 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1337 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 158:
-#line 637 "dhcp6_parser.yy" // lalr1.cc:859
+#line 641 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1336 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1346 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 159:
-#line 643 "dhcp6_parser.yy" // lalr1.cc:859
+#line 647 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1347 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1357 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 160:
-#line 648 "dhcp6_parser.yy" // lalr1.cc:859
+#line 652 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1356 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1366 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 163:
-#line 660 "dhcp6_parser.yy" // lalr1.cc:859
+#line 664 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), value);
 }
-#line 1365 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1375 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 164:
-#line 668 "dhcp6_parser.yy" // lalr1.cc:859
+#line 672 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet6", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET6);
 }
-#line 1376 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1386 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 165:
-#line 673 "dhcp6_parser.yy" // lalr1.cc:859
+#line 677 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1385 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1395 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 170:
-#line 693 "dhcp6_parser.yy" // lalr1.cc:859
+#line 697 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1395 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1405 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 171:
-#line 697 "dhcp6_parser.yy" // lalr1.cc:859
+#line 701 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -1414,1130 +1424,1183 @@ namespace isc { namespace dhcp {
     // }
     ctx.stack_.pop_back();
 }
-#line 1418 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1428 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 172:
-#line 716 "dhcp6_parser.yy" // lalr1.cc:859
+#line 720 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1428 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1438 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 173:
-#line 720 "dhcp6_parser.yy" // lalr1.cc:859
+#line 724 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1436 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1446 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 193:
-#line 749 "dhcp6_parser.yy" // lalr1.cc:859
+#line 753 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1444 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1454 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 194:
-#line 751 "dhcp6_parser.yy" // lalr1.cc:859
+#line 755 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 1454 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1464 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 195:
-#line 757 "dhcp6_parser.yy" // lalr1.cc:859
+#line 761 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1462 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1472 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 196:
-#line 759 "dhcp6_parser.yy" // lalr1.cc:859
+#line 763 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 1472 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1482 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 197:
-#line 765 "dhcp6_parser.yy" // lalr1.cc:859
+#line 769 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1480 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1490 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 198:
-#line 767 "dhcp6_parser.yy" // lalr1.cc:859
+#line 771 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
     ctx.leave();
 }
-#line 1490 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1500 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 199:
-#line 773 "dhcp6_parser.yy" // lalr1.cc:859
+#line 777 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
-#line 1498 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1508 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 200:
-#line 775 "dhcp6_parser.yy" // lalr1.cc:859
+#line 779 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 1508 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1518 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 201:
-#line 781 "dhcp6_parser.yy" // lalr1.cc:859
+#line 785 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1516 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1526 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 202:
-#line 783 "dhcp6_parser.yy" // lalr1.cc:859
+#line 787 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rm(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservation-mode", rm);
     ctx.leave();
 }
-#line 1526 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1536 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 203:
-#line 789 "dhcp6_parser.yy" // lalr1.cc:859
+#line 793 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 1535 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1545 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 204:
-#line 794 "dhcp6_parser.yy" // lalr1.cc:859
+#line 798 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 1544 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1554 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 205:
-#line 803 "dhcp6_parser.yy" // lalr1.cc:859
+#line 807 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 1555 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1565 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 206:
-#line 808 "dhcp6_parser.yy" // lalr1.cc:859
+#line 812 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1564 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1574 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 211:
-#line 825 "dhcp6_parser.yy" // lalr1.cc:859
+#line 829 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1574 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1584 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 212:
-#line 829 "dhcp6_parser.yy" // lalr1.cc:859
+#line 833 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1582 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1592 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 213:
-#line 836 "dhcp6_parser.yy" // lalr1.cc:859
+#line 840 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1592 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1602 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 214:
-#line 840 "dhcp6_parser.yy" // lalr1.cc:859
+#line 844 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1600 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1610 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 228:
-#line 866 "dhcp6_parser.yy" // lalr1.cc:859
+#line 870 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 1609 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1619 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 231:
-#line 875 "dhcp6_parser.yy" // lalr1.cc:859
+  case 230:
+#line 877 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1617 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1627 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 231:
+#line 879 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("type", prf);
+    ctx.leave();
+}
+#line 1637 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 232:
-#line 877 "dhcp6_parser.yy" // lalr1.cc:859
+#line 885 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 1645 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 233:
+#line 887 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 1627 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1655 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 233:
-#line 883 "dhcp6_parser.yy" // lalr1.cc:859
+  case 234:
+#line 893 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1635 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1663 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 234:
-#line 885 "dhcp6_parser.yy" // lalr1.cc:859
+  case 235:
+#line 895 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 1645 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1673 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 236:
-#line 893 "dhcp6_parser.yy" // lalr1.cc:859
+  case 237:
+#line 903 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1653 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1681 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 237:
-#line 895 "dhcp6_parser.yy" // lalr1.cc:859
+  case 238:
+#line 905 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 1663 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1691 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 238:
-#line 901 "dhcp6_parser.yy" // lalr1.cc:859
+  case 239:
+#line 911 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 1672 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1700 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 239:
-#line 910 "dhcp6_parser.yy" // lalr1.cc:859
+  case 240:
+#line 920 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 1683 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1711 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 240:
-#line 915 "dhcp6_parser.yy" // lalr1.cc:859
+  case 241:
+#line 925 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1692 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1720 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 245:
-#line 934 "dhcp6_parser.yy" // lalr1.cc:859
+  case 246:
+#line 944 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1702 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1730 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 246:
-#line 938 "dhcp6_parser.yy" // lalr1.cc:859
+  case 247:
+#line 948 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1710 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1738 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 247:
-#line 945 "dhcp6_parser.yy" // lalr1.cc:859
+  case 248:
+#line 955 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1720 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1748 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 248:
-#line 949 "dhcp6_parser.yy" // lalr1.cc:859
+  case 249:
+#line 959 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1728 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1756 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 260:
-#line 978 "dhcp6_parser.yy" // lalr1.cc:859
+  case 261:
+#line 988 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1736 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1764 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 261:
-#line 980 "dhcp6_parser.yy" // lalr1.cc:859
+  case 262:
+#line 990 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 1746 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1774 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 264:
-#line 990 "dhcp6_parser.yy" // lalr1.cc:859
+  case 265:
+#line 1000 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 1755 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1783 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 265:
-#line 998 "dhcp6_parser.yy" // lalr1.cc:859
+  case 266:
+#line 1008 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 1766 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1794 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 266:
-#line 1003 "dhcp6_parser.yy" // lalr1.cc:859
+  case 267:
+#line 1013 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1775 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1803 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 271:
-#line 1018 "dhcp6_parser.yy" // lalr1.cc:859
+  case 272:
+#line 1028 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1785 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1813 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 272:
-#line 1022 "dhcp6_parser.yy" // lalr1.cc:859
+  case 273:
+#line 1032 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1793 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1821 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 273:
-#line 1026 "dhcp6_parser.yy" // lalr1.cc:859
+  case 274:
+#line 1036 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1803 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1831 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 274:
-#line 1030 "dhcp6_parser.yy" // lalr1.cc:859
+  case 275:
+#line 1040 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1811 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1839 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1043 "dhcp6_parser.yy" // lalr1.cc:859
+  case 281:
+#line 1053 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1819 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1847 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 281:
-#line 1045 "dhcp6_parser.yy" // lalr1.cc:859
+  case 282:
+#line 1055 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 1829 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1857 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 282:
-#line 1054 "dhcp6_parser.yy" // lalr1.cc:859
+  case 283:
+#line 1064 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pd-pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.PD_POOLS);
 }
-#line 1840 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1868 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 283:
-#line 1059 "dhcp6_parser.yy" // lalr1.cc:859
+  case 284:
+#line 1069 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1849 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1877 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 288:
-#line 1074 "dhcp6_parser.yy" // lalr1.cc:859
+  case 289:
+#line 1084 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1859 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1887 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 289:
-#line 1078 "dhcp6_parser.yy" // lalr1.cc:859
+  case 290:
+#line 1088 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1867 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1895 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 290:
-#line 1082 "dhcp6_parser.yy" // lalr1.cc:859
+  case 291:
+#line 1092 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1877 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1905 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 291:
-#line 1086 "dhcp6_parser.yy" // lalr1.cc:859
+  case 292:
+#line 1096 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1885 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1913 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 301:
-#line 1103 "dhcp6_parser.yy" // lalr1.cc:859
+  case 302:
+#line 1113 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1893 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1921 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 302:
-#line 1105 "dhcp6_parser.yy" // lalr1.cc:859
+  case 303:
+#line 1115 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 1903 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1931 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 303:
-#line 1111 "dhcp6_parser.yy" // lalr1.cc:859
+  case 304:
+#line 1121 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix-len", prf);
 }
-#line 1912 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1940 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 304:
-#line 1116 "dhcp6_parser.yy" // lalr1.cc:859
+  case 305:
+#line 1126 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1920 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1948 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 305:
-#line 1118 "dhcp6_parser.yy" // lalr1.cc:859
+  case 306:
+#line 1128 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix", prf);
     ctx.leave();
 }
-#line 1930 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1958 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 306:
-#line 1124 "dhcp6_parser.yy" // lalr1.cc:859
+  case 307:
+#line 1134 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix-len", prf);
 }
-#line 1939 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1967 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 307:
-#line 1129 "dhcp6_parser.yy" // lalr1.cc:859
+  case 308:
+#line 1139 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr deleg(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("delegated-len", deleg);
 }
-#line 1948 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1976 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 308:
-#line 1137 "dhcp6_parser.yy" // lalr1.cc:859
+  case 309:
+#line 1147 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 1959 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1987 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 309:
-#line 1142 "dhcp6_parser.yy" // lalr1.cc:859
+  case 310:
+#line 1152 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1968 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1996 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 314:
-#line 1155 "dhcp6_parser.yy" // lalr1.cc:859
+  case 315:
+#line 1165 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1978 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2006 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 315:
-#line 1159 "dhcp6_parser.yy" // lalr1.cc:859
+  case 316:
+#line 1169 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1986 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2014 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 316:
-#line 1163 "dhcp6_parser.yy" // lalr1.cc:859
+  case 317:
+#line 1173 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1996 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2024 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 317:
-#line 1167 "dhcp6_parser.yy" // lalr1.cc:859
+  case 318:
+#line 1177 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2004 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2032 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 330:
-#line 1190 "dhcp6_parser.yy" // lalr1.cc:859
+  case 331:
+#line 1200 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-addresses", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2015 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2043 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 331:
-#line 1195 "dhcp6_parser.yy" // lalr1.cc:859
+  case 332:
+#line 1205 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2024 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2052 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 332:
-#line 1200 "dhcp6_parser.yy" // lalr1.cc:859
+  case 333:
+#line 1210 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefixes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2035 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2063 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 333:
-#line 1205 "dhcp6_parser.yy" // lalr1.cc:859
+  case 334:
+#line 1215 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2044 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2072 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1210 "dhcp6_parser.yy" // lalr1.cc:859
+  case 335:
+#line 1220 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2052 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2080 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 335:
-#line 1212 "dhcp6_parser.yy" // lalr1.cc:859
+  case 336:
+#line 1222 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2062 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2090 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 336:
-#line 1218 "dhcp6_parser.yy" // lalr1.cc:859
+  case 337:
+#line 1228 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2070 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2098 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 337:
-#line 1220 "dhcp6_parser.yy" // lalr1.cc:859
+  case 338:
+#line 1230 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 2080 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2108 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 338:
-#line 1226 "dhcp6_parser.yy" // lalr1.cc:859
+  case 339:
+#line 1236 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2088 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2116 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 339:
-#line 1228 "dhcp6_parser.yy" // lalr1.cc:859
+  case 340:
+#line 1238 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 2098 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2126 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 340:
-#line 1234 "dhcp6_parser.yy" // lalr1.cc:859
+  case 341:
+#line 1244 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2109 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2137 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 341:
-#line 1239 "dhcp6_parser.yy" // lalr1.cc:859
+  case 342:
+#line 1249 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2118 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2146 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 342:
-#line 1247 "dhcp6_parser.yy" // lalr1.cc:859
+  case 343:
+#line 1257 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 2129 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2157 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 343:
-#line 1252 "dhcp6_parser.yy" // lalr1.cc:859
+  case 344:
+#line 1262 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2138 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2166 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 344:
-#line 1257 "dhcp6_parser.yy" // lalr1.cc:859
+  case 345:
+#line 1267 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2146 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2174 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 345:
-#line 1259 "dhcp6_parser.yy" // lalr1.cc:859
+  case 346:
+#line 1269 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", ip);
     ctx.leave();
 }
-#line 2156 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2184 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 346:
-#line 1268 "dhcp6_parser.yy" // lalr1.cc:859
+  case 347:
+#line 1278 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 2167 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2195 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 347:
-#line 1273 "dhcp6_parser.yy" // lalr1.cc:859
+  case 348:
+#line 1283 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2176 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2204 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 350:
-#line 1282 "dhcp6_parser.yy" // lalr1.cc:859
+  case 351:
+#line 1292 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2186 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2214 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 351:
-#line 1286 "dhcp6_parser.yy" // lalr1.cc:859
+  case 352:
+#line 1296 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2194 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2222 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 361:
-#line 1306 "dhcp6_parser.yy" // lalr1.cc:859
+  case 362:
+#line 1316 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2202 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2230 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 362:
-#line 1308 "dhcp6_parser.yy" // lalr1.cc:859
+  case 363:
+#line 1318 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 2212 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2240 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 363:
-#line 1317 "dhcp6_parser.yy" // lalr1.cc:859
+  case 364:
+#line 1327 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-id", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER_ID);
 }
-#line 2223 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2251 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1322 "dhcp6_parser.yy" // lalr1.cc:859
+  case 365:
+#line 1332 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2232 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2260 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 375:
+#line 1350 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.enter(ctx.DUID_TYPE);
+}
+#line 2268 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 374:
-#line 1340 "dhcp6_parser.yy" // lalr1.cc:859
+  case 376:
+#line 1352 "dhcp6_parser.yy" // lalr1.cc:859
+    {
+    ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
+    ctx.leave();
+}
+#line 2277 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 377:
+#line 1357 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
+#line 2283 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 378:
+#line 1358 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
+#line 2289 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 379:
+#line 1359 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
+#line 2295 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 380:
+#line 1362 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
 }
-#line 2241 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2304 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 375:
-#line 1345 "dhcp6_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1367 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2249 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2312 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 376:
-#line 1347 "dhcp6_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1369 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 2259 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2322 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 377:
-#line 1353 "dhcp6_parser.yy" // lalr1.cc:859
+  case 383:
+#line 1375 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
 }
-#line 2268 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2331 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1358 "dhcp6_parser.yy" // lalr1.cc:859
+  case 384:
+#line 1380 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
 }
-#line 2277 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2340 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1365 "dhcp6_parser.yy" // lalr1.cc:859
+  case 385:
+#line 1387 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 2286 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2349 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1372 "dhcp6_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1394 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 2297 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2360 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 381:
-#line 1377 "dhcp6_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1399 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2306 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2369 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1390 "dhcp6_parser.yy" // lalr1.cc:859
+  case 392:
+#line 1412 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2314 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2377 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1392 "dhcp6_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1414 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 2324 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2387 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1398 "dhcp6_parser.yy" // lalr1.cc:859
+  case 394:
+#line 1420 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2332 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2395 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1400 "dhcp6_parser.yy" // lalr1.cc:859
+  case 395:
+#line 1422 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 2342 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2405 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 390:
-#line 1408 "dhcp6_parser.yy" // lalr1.cc:859
+  case 396:
+#line 1430 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2353 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2416 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 391:
-#line 1413 "dhcp6_parser.yy" // lalr1.cc:859
+  case 397:
+#line 1435 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2362 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2425 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1420 "dhcp6_parser.yy" // lalr1.cc:859
+  case 398:
+#line 1442 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2370 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2433 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1422 "dhcp6_parser.yy" // lalr1.cc:859
+  case 399:
+#line 1444 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2379 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2442 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 394:
-#line 1427 "dhcp6_parser.yy" // lalr1.cc:859
+  case 400:
+#line 1449 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2387 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2450 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 395:
-#line 1429 "dhcp6_parser.yy" // lalr1.cc:859
+  case 401:
+#line 1451 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2396 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2459 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 396:
-#line 1439 "dhcp6_parser.yy" // lalr1.cc:859
+  case 402:
+#line 1461 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 2407 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2470 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 397:
-#line 1444 "dhcp6_parser.yy" // lalr1.cc:859
+  case 403:
+#line 1466 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2416 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2479 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 401:
-#line 1461 "dhcp6_parser.yy" // lalr1.cc:859
+  case 407:
+#line 1483 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 2427 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2490 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 402:
-#line 1466 "dhcp6_parser.yy" // lalr1.cc:859
+  case 408:
+#line 1488 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2436 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2499 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 405:
-#line 1478 "dhcp6_parser.yy" // lalr1.cc:859
+  case 411:
+#line 1500 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 2446 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2509 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 406:
-#line 1482 "dhcp6_parser.yy" // lalr1.cc:859
+  case 412:
+#line 1504 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2454 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2517 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 414:
-#line 1497 "dhcp6_parser.yy" // lalr1.cc:859
+  case 420:
+#line 1519 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 2463 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2526 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 415:
-#line 1501 "dhcp6_parser.yy" // lalr1.cc:859
+  case 421:
+#line 1523 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2471 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2534 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 416:
-#line 1503 "dhcp6_parser.yy" // lalr1.cc:859
+  case 422:
+#line 1525 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 2481 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2544 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 417:
-#line 1509 "dhcp6_parser.yy" // lalr1.cc:859
+  case 423:
+#line 1531 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 2492 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2555 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 418:
-#line 1514 "dhcp6_parser.yy" // lalr1.cc:859
+  case 424:
+#line 1536 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2501 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2564 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 421:
-#line 1523 "dhcp6_parser.yy" // lalr1.cc:859
+  case 427:
+#line 1545 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2511 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2574 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 422:
-#line 1527 "dhcp6_parser.yy" // lalr1.cc:859
+  case 428:
+#line 1549 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2519 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2582 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 425:
-#line 1535 "dhcp6_parser.yy" // lalr1.cc:859
+  case 431:
+#line 1557 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2527 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2590 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 426:
-#line 1537 "dhcp6_parser.yy" // lalr1.cc:859
+  case 432:
+#line 1559 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 2537 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2600 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 2541 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2604 "dhcp6_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -2792,85 +2855,86 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short int Dhcp6Parser::yypact_ninf_ = -428;
+  const short int Dhcp6Parser::yypact_ninf_ = -427;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp6Parser::yypact_[] =
   {
-     110,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,    28,    22,    34,    47,    51,    60,    63,    67,
-      87,   106,   119,   128,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,    22,    -1,    16,    64,
-     150,    15,    56,    39,    91,   112,     2,    32,  -428,   135,
-     161,   170,   174,   181,  -428,  -428,  -428,  -428,   228,  -428,
-      68,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,   240,
-     243,   254,   255,   257,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,   260,  -428,  -428,  -428,   129,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,   185,  -428,  -428,  -428,  -428,  -428,  -428,   261,
-     262,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-     157,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,   158,  -428,  -428,
-    -428,   264,  -428,   265,   266,  -428,  -428,   167,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,   222,   268,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,   269,  -428,  -428,  -428,   271,  -428,  -428,
-    -428,   270,   274,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,   275,  -428,  -428,  -428,  -428,   272,
-     278,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-     168,  -428,  -428,  -428,  -428,    22,    22,  -428,   183,   279,
-     280,   281,   282,  -428,    16,  -428,   283,   284,   285,   172,
-     190,   191,   192,   193,   290,   291,   292,   293,   294,   295,
-     296,   297,   298,   299,   204,   301,   302,    64,  -428,   303,
-    -428,    13,   304,   305,   306,   307,   308,   213,   212,   311,
-     312,   313,   314,    15,  -428,   315,    56,  -428,   316,   221,
-     318,   223,   224,    39,  -428,   321,   322,   323,   324,   325,
-     326,  -428,    91,   327,   328,   235,   329,   330,   332,   238,
-    -428,   112,   333,   239,  -428,     2,   338,   339,    38,  -428,
-    -428,  -428,   340,   341,   342,    22,    22,  -428,   343,   344,
-     347,  -428,  -428,  -428,  -428,  -428,   350,   351,   352,   353,
-     356,   357,   358,   359,   360,   361,  -428,   362,   365,  -428,
-     356,  -428,  -428,  -428,  -428,   337,   363,  -428,  -428,  -428,
-     368,   369,   247,   248,   276,  -428,  -428,   277,   287,   373,
-     372,  -428,   288,  -428,   289,  -428,   300,  -428,  -428,  -428,
-     356,   356,   356,   309,   310,   317,  -428,   319,   320,  -428,
-     331,   334,   335,  -428,  -428,   336,  -428,  -428,   345,    22,
-    -428,    22,    64,   346,  -428,  -428,   150,    30,    30,   374,
-     375,   376,    -2,  -428,  -428,   180,    50,   377,   348,    37,
-     173,    -1,  -428,   385,  -428,    13,   383,   384,  -428,  -428,
-    -428,  -428,  -428,   386,   355,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,   169,  -428,   175,  -428,  -428,   387,  -428,
-    -428,  -428,   388,   390,   392,  -428,   177,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,   178,  -428,   391,   395,
-    -428,  -428,   394,   398,  -428,  -428,   396,   400,  -428,  -428,
-    -428,   122,  -428,  -428,  -428,    22,  -428,  -428,   188,  -428,
-    -428,  -428,   189,  -428,   399,   401,  -428,   402,   206,  -428,
-    -428,   403,   406,   407,  -428,  -428,  -428,   207,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,   209,  -428,  -428,  -428,   210,
-     349,  -428,  -428,   409,   410,  -428,  -428,   411,   418,  -428,
-    -428,   416,   420,  -428,  -428,   417,  -428,   422,   346,  -428,
-    -428,   424,   425,   427,   263,   354,   364,    30,  -428,  -428,
-      15,  -428,   374,   112,  -428,   375,     2,  -428,   376,    -2,
-    -428,   426,   180,  -428,    50,  -428,    32,  -428,   377,   367,
-     348,  -428,   432,   370,   371,   378,    37,  -428,   433,   434,
-     173,  -428,  -428,  -428,    56,  -428,   383,    39,  -428,   384,
-      91,  -428,   386,   435,  -428,   419,  -428,   366,   380,   381,
-    -428,  -428,  -428,  -428,   216,  -428,   437,  -428,   438,  -428,
-    -428,  -428,  -428,  -428,   217,  -428,  -428,  -428,   382,  -428,
-    -428,  -428,  -428,   389,   393,  -428,   218,  -428,   219,  -428,
-     441,  -428,   397,   436,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,   233,
-    -428,    74,   436,  -428,  -428,   446,  -428,  -428,  -428,   225,
-    -428,  -428,  -428,  -428,  -428,   447,   404,   448,    74,  -428,
-     450,  -428,   408,  -428,   449,  -428,  -428,   234,  -428,   379,
-     449,  -428,  -428,   226,  -428,  -428,   453,   379,  -428,   414,
-    -428,  -428
+      89,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,    31,    21,    22,    57,    66,    92,   121,   134,
+     154,   203,   207,   216,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,    21,    72,    11,    64,
+     164,    12,    -7,    38,    43,   117,   125,    29,  -427,   223,
+     221,   228,   227,   230,  -427,  -427,  -427,  -427,   232,  -427,
+      30,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   234,
+     239,   242,   245,   246,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,   253,  -427,  -427,  -427,    48,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,   250,  -427,  -427,  -427,  -427,  -427,  -427,   256,
+     259,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+     119,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,   136,  -427,  -427,
+    -427,   260,  -427,   261,   263,  -427,  -427,   167,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,   262,   265,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,   267,  -427,  -427,  -427,   268,  -427,  -427,
+     266,   273,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,   274,  -427,  -427,  -427,  -427,   269,   276,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   169,
+    -427,  -427,  -427,  -427,    21,    21,  -427,   178,   277,   278,
+     279,   280,  -427,    11,  -427,   281,   282,   283,   166,   185,
+     186,   187,   192,   287,   288,   289,   290,   292,   293,   294,
+     295,   296,   297,   202,   298,   299,    64,  -427,   300,  -427,
+      10,   302,   303,   304,   305,   306,   211,   206,   308,   309,
+     311,   312,    12,  -427,   313,    -7,  -427,   314,   219,   315,
+     220,   222,    38,  -427,   316,   317,   320,   322,   323,   324,
+    -427,    43,   325,   326,   229,   327,   329,   330,   231,  -427,
+     117,   331,   235,  -427,   125,   335,   337,   -13,  -427,  -427,
+    -427,   338,   336,   339,    21,    21,  -427,   340,   341,   342,
+    -427,  -427,  -427,  -427,  -427,   345,   348,   349,   350,   351,
+     352,   355,   356,   357,   358,  -427,   359,   360,  -427,   351,
+    -427,  -427,  -427,  -427,   354,   365,  -427,  -427,  -427,   366,
+     367,   243,   271,   272,  -427,  -427,   275,   284,   370,   371,
+    -427,   285,  -427,   286,  -427,   291,  -427,  -427,  -427,   351,
+     351,   351,   301,   307,   310,  -427,   318,   319,  -427,   321,
+     328,   332,  -427,  -427,   333,  -427,  -427,   334,    21,  -427,
+      21,    64,   343,  -427,  -427,   164,    27,    27,   372,   373,
+     374,   -34,  -427,  -427,    23,    58,   375,   344,    34,    40,
+      72,  -427,   379,  -427,    10,   378,   382,  -427,  -427,  -427,
+    -427,  -427,   383,   353,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,   188,  -427,   189,  -427,  -427,   384,  -427,  -427,
+    -427,  -427,   387,   390,   391,  -427,   190,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,   191,  -427,   392,   393,
+    -427,  -427,   394,   396,  -427,  -427,   395,   399,  -427,  -427,
+    -427,    68,  -427,  -427,  -427,    21,  -427,  -427,   132,  -427,
+    -427,  -427,   145,  -427,   398,   402,  -427,   403,   197,  -427,
+    -427,  -427,   404,   406,   410,  -427,  -427,   198,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,   199,  -427,  -427,  -427,
+     200,   346,  -427,  -427,   400,   412,  -427,  -427,   411,   413,
+    -427,  -427,   416,   421,  -427,  -427,   389,  -427,   415,   343,
+    -427,  -427,   422,   424,   425,   427,   258,   241,   347,    27,
+    -427,  -427,    12,  -427,   372,   117,  -427,   373,   125,  -427,
+     374,   -34,  -427,   419,    23,  -427,    58,  -427,    29,  -427,
+     375,   361,   344,  -427,   428,   429,   362,   363,   364,    34,
+    -427,   433,   434,    40,  -427,  -427,  -427,    -7,  -427,   378,
+      38,  -427,   382,    43,  -427,   383,   435,  -427,   436,  -427,
+     368,   369,   376,   377,  -427,  -427,  -427,  -427,   201,  -427,
+     432,  -427,   437,  -427,  -427,  -427,  -427,  -427,   208,  -427,
+    -427,  -427,   168,   380,  -427,  -427,  -427,  -427,   381,   385,
+    -427,   209,  -427,   210,  -427,   439,  -427,   386,   442,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   157,
+    -427,    77,   442,  -427,  -427,   438,  -427,  -427,  -427,   217,
+    -427,  -427,  -427,  -427,  -427,   440,   388,   446,    77,  -427,
+     448,  -427,   397,  -427,   444,  -427,  -427,   225,  -427,   407,
+     444,  -427,  -427,   218,  -427,  -427,   450,   407,  -427,   401,
+    -427,  -427
   };
 
   const unsigned short int
@@ -2880,107 +2944,108 @@ namespace isc { namespace dhcp {
       20,    22,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     1,    38,    32,    28,    27,    24,
       25,    26,    31,     3,    29,    30,    47,     5,    58,     7,
-      91,     9,   172,    11,   273,    13,   290,    15,   316,    17,
-     213,    19,   247,    21,   148,    23,    42,    34,     0,     0,
-       0,     0,     0,     0,   318,   215,   249,     0,    44,     0,
-      43,     0,     0,    35,    56,   396,   392,   394,     0,    55,
+      91,     9,   172,    11,   274,    13,   291,    15,   317,    17,
+     213,    19,   248,    21,   148,    23,    42,    34,     0,     0,
+       0,     0,     0,     0,   319,   215,   250,     0,    44,     0,
+      43,     0,     0,    35,    56,   402,   398,   400,     0,    55,
        0,    49,    51,    53,    54,    52,    89,    95,    97,     0,
-       0,     0,     0,     0,   164,   205,   239,   123,   138,   131,
-     346,   140,   159,   363,     0,   380,   390,    83,     0,    60,
+       0,     0,     0,     0,   164,   205,   240,   123,   138,   131,
+     347,   140,   159,   364,     0,   386,   396,    83,     0,    60,
       62,    63,    64,    65,    66,    68,    69,    70,    71,    73,
       72,    77,    78,    67,    75,    76,    74,    79,    80,    81,
-      82,    93,     0,   350,   265,   282,   193,   195,   197,     0,
-       0,   201,   199,   308,   342,   192,   176,   177,   178,   179,
+      82,    93,     0,   351,   266,   283,   193,   195,   197,     0,
+       0,   201,   199,   309,   343,   192,   176,   177,   178,   179,
        0,   174,   183,   184,   185,   188,   190,   186,   187,   180,
-     181,   182,   189,   191,   280,   279,   278,     0,   275,   277,
-     301,     0,   304,     0,     0,   300,   297,     0,   292,   294,
-     295,   298,   299,   296,   340,   330,   332,   334,   336,   338,
-     329,   328,     0,   319,   320,   324,   325,   322,   326,   327,
-     323,   110,   118,     0,   233,   231,   236,     0,   226,   230,
-     227,     0,   216,   217,   219,   229,   220,   221,   222,   235,
-     223,   224,   225,   260,     0,   258,   259,   262,   263,     0,
-     250,   251,   253,   254,   255,   256,   257,   155,   157,   152,
-       0,   150,   153,   154,    39,     0,     0,    33,     0,     0,
-       0,     0,     0,    46,     0,    48,     0,     0,     0,     0,
+     181,   182,   189,   191,   281,   280,   279,     0,   276,   278,
+     302,     0,   305,     0,     0,   301,   298,     0,   293,   295,
+     296,   299,   300,   297,   341,   331,   333,   335,   337,   339,
+     330,   329,     0,   320,   321,   325,   326,   323,   327,   328,
+     324,   230,   118,     0,   234,   232,   237,     0,   226,   227,
+       0,   216,   217,   219,   229,   220,   221,   222,   236,   223,
+     224,   225,   261,     0,   259,   260,   263,   264,     0,   251,
+     252,   254,   255,   256,   257,   258,   155,   157,   152,     0,
+     150,   153,   154,    39,     0,     0,    33,     0,     0,     0,
+       0,     0,    46,     0,    48,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    59,     0,
-      92,   352,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   173,     0,     0,   274,     0,     0,
-       0,     0,     0,     0,   291,     0,     0,     0,     0,     0,
-       0,   317,     0,     0,     0,     0,     0,     0,     0,     0,
-     214,     0,     0,     0,   248,     0,     0,     0,     0,   149,
-      45,    36,     0,     0,     0,     0,     0,    50,     0,     0,
-       0,    84,    85,    86,    87,    88,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   379,     0,     0,    61,
-       0,   361,   359,   360,   358,     0,   353,   354,   356,   357,
-       0,     0,     0,     0,     0,   203,   204,     0,     0,     0,
-       0,   175,     0,   276,     0,   303,     0,   306,   307,   293,
-       0,     0,     0,     0,     0,     0,   321,     0,     0,   228,
-       0,     0,     0,   238,   218,     0,   264,   252,     0,     0,
-     151,     0,     0,     0,   393,   395,     0,     0,     0,   166,
-     207,   241,     0,    40,   139,     0,     0,   142,     0,     0,
-       0,     0,    94,     0,   351,     0,   267,   284,   194,   196,
-     198,   202,   200,   310,     0,   281,   302,   305,   341,   331,
-     333,   335,   337,   339,   111,   119,   234,   232,   237,   261,
-     156,   158,    37,     0,   401,     0,   398,   400,     0,   112,
+       0,     0,     0,     0,     0,     0,     0,    59,     0,    92,
+     353,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   173,     0,     0,   275,     0,     0,     0,
+       0,     0,     0,   292,     0,     0,     0,     0,     0,     0,
+     318,     0,     0,     0,     0,     0,     0,     0,     0,   214,
+       0,     0,     0,   249,     0,     0,     0,     0,   149,    45,
+      36,     0,     0,     0,     0,     0,    50,     0,     0,     0,
+      84,    85,    86,    87,    88,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   385,     0,     0,    61,     0,
+     362,   360,   361,   359,     0,   354,   355,   357,   358,     0,
+       0,     0,     0,     0,   203,   204,     0,     0,     0,     0,
+     175,     0,   277,     0,   304,     0,   307,   308,   294,     0,
+       0,     0,     0,     0,     0,   322,     0,     0,   228,     0,
+       0,     0,   239,   218,     0,   265,   253,     0,     0,   151,
+       0,     0,     0,   399,   401,     0,     0,     0,   166,   207,
+     242,     0,    40,   139,     0,     0,   142,     0,     0,     0,
+       0,    94,     0,   352,     0,   268,   285,   194,   196,   198,
+     202,   200,   311,     0,   282,   303,   306,   342,   332,   334,
+     336,   338,   340,   231,   119,   235,   233,   238,   262,   156,
+     158,    37,     0,   407,     0,   404,   406,     0,   110,   112,
      114,   116,     0,     0,     0,   109,     0,    99,   101,   102,
      103,   104,   105,   106,   107,   108,     0,   170,     0,   167,
-     168,   211,     0,   208,   209,   245,     0,   242,   243,   129,
+     168,   211,     0,   208,   209,   246,     0,   243,   244,   129,
      130,     0,   125,   127,   128,    42,   137,   135,     0,   133,
-     136,   348,     0,   146,     0,   143,   144,     0,     0,   161,
-     375,     0,     0,     0,   373,   367,   372,     0,   365,   370,
-     368,   369,   371,   386,   388,     0,   382,   384,   385,     0,
-       0,   355,   271,     0,   268,   269,   288,     0,   285,   286,
-     314,     0,   311,   312,   344,     0,    57,     0,     0,   397,
-      90,     0,     0,     0,     0,     0,     0,     0,    96,    98,
-       0,   165,     0,   215,   206,     0,   249,   240,     0,     0,
-     124,     0,     0,   132,     0,   347,     0,   141,     0,     0,
-       0,   160,     0,     0,     0,     0,     0,   364,     0,     0,
-       0,   381,   391,   362,     0,   266,     0,     0,   283,     0,
-     318,   309,     0,     0,   343,     0,   399,     0,     0,     0,
-     120,   121,   122,   100,     0,   169,     0,   210,     0,   244,
-     126,    41,   134,   349,     0,   145,   163,   162,     0,   374,
-     377,   378,   366,     0,     0,   383,     0,   270,     0,   287,
-       0,   313,     0,     0,   113,   115,   117,   171,   212,   246,
-     147,   376,   387,   389,   272,   289,   315,   345,   405,     0,
-     403,     0,     0,   402,   417,     0,   415,   413,   409,     0,
-     407,   411,   412,   410,   404,     0,     0,     0,     0,   406,
-       0,   414,     0,   408,     0,   416,   421,     0,   419,     0,
-       0,   418,   425,     0,   423,   420,     0,     0,   422,     0,
-     424,   426
+     136,   349,     0,   146,     0,   143,   144,     0,     0,   161,
+     375,   381,     0,     0,     0,   374,   373,     0,   366,   368,
+     371,   369,   370,   372,   392,   394,     0,   388,   390,   391,
+       0,     0,   356,   272,     0,   269,   270,   289,     0,   286,
+     287,   315,     0,   312,   313,   345,     0,    57,     0,     0,
+     403,    90,     0,     0,     0,     0,     0,     0,     0,     0,
+      96,    98,     0,   165,     0,   215,   206,     0,   250,   241,
+       0,     0,   124,     0,     0,   132,     0,   348,     0,   141,
+       0,     0,     0,   160,     0,     0,     0,     0,     0,     0,
+     365,     0,     0,     0,   387,   397,   363,     0,   267,     0,
+       0,   284,     0,   319,   310,     0,     0,   344,     0,   405,
+       0,     0,     0,     0,   120,   121,   122,   100,     0,   169,
+       0,   210,     0,   245,   126,    41,   134,   350,     0,   145,
+     163,   162,     0,     0,   380,   383,   384,   367,     0,     0,
+     389,     0,   271,     0,   288,     0,   314,     0,     0,   111,
+     113,   115,   117,   171,   212,   247,   147,   377,   378,   379,
+     376,   382,   393,   395,   273,   290,   316,   346,   411,     0,
+     409,     0,     0,   408,   423,     0,   421,   419,   415,     0,
+     413,   417,   418,   416,   410,     0,     0,     0,     0,   412,
+       0,   420,     0,   414,     0,   422,   427,     0,   425,     0,
+       0,   424,   431,     0,   429,   426,     0,     0,   428,     0,
+     430,   432
   };
 
   const short int
   Dhcp6Parser::yypgoto_[] =
   {
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,     3,  -428,  -428,  -428,  -428,     9,  -428,
-    -428,  -203,  -428,  -125,  -428,   -58,  -428,  -428,  -428,   187,
-    -428,  -428,  -428,  -428,    41,   165,   -41,   -38,   -37,   -36,
-    -428,  -428,  -428,  -428,  -428,    42,  -428,  -428,  -428,  -428,
-    -428,    43,  -108,  -399,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,   -65,  -428,  -427,  -428,  -428,  -428,  -428,  -428,  -119,
-    -415,  -428,  -428,  -428,  -428,  -118,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -120,  -428,  -428,  -428,  -123,   141,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -117,  -428,  -428,  -428,
-    -428,  -100,  -428,  -428,  -428,   -96,   182,  -428,  -428,  -428,
-    -428,  -428,  -428,  -405,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,   -99,  -428,  -428,  -428,   -91,  -428,   156,
-    -428,   -51,  -428,  -428,  -428,  -428,   -49,  -428,  -428,  -428,
-    -428,  -428,   -50,  -428,  -428,  -428,   -95,  -428,  -428,  -428,
-     -92,  -428,   160,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -116,  -428,  -428,  -428,  -115,   195,  -428,
-    -428,  -428,  -428,  -428,  -428,  -122,  -428,  -428,  -428,  -121,
-     194,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -114,  -428,  -428,  -428,  -111,  -428,   196,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,    58,  -428,  -428,  -428,  -428,  -428,  -428,  -102,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -105,  -428,
-    -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,  -428,
-    -428,  -428,   -57,  -428,  -428,  -428,  -172,  -428,  -428,  -185,
-    -428,  -428,  -428,  -428,  -428,  -428,  -195,  -428,  -428,  -201,
-    -428
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,     3,  -427,  -427,  -427,  -427,    13,  -427,
+    -427,  -222,  -427,   -48,  -427,   -58,  -427,  -427,  -427,   205,
+    -427,  -427,  -427,  -427,    44,   180,   -41,   -38,   -37,   -36,
+    -427,  -427,  -427,  -427,  -427,    45,  -427,  -427,  -427,  -427,
+    -427,    42,  -108,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,   -65,  -427,  -426,  -427,  -427,  -427,  -427,  -427,  -119,
+    -406,  -427,  -427,  -427,  -427,  -121,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -122,  -427,  -427,  -427,  -116,   142,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -118,  -427,  -427,  -427,
+    -427,  -101,  -427,  -427,  -427,   -97,   184,  -427,  -427,  -427,
+    -427,  -427,  -427,  -415,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -100,  -427,  -427,  -427,   -95,  -427,   161,
+    -427,   -51,  -427,  -427,  -427,  -427,  -427,   -49,  -427,  -427,
+    -427,  -427,  -427,   -50,  -427,  -427,  -427,   -96,  -427,  -427,
+    -427,   -93,  -427,   162,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -120,  -427,  -427,  -427,  -117,   212,
+    -427,  -427,  -427,  -427,  -427,  -427,  -115,  -427,  -427,  -427,
+    -114,   193,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -123,  -427,  -427,  -427,  -113,  -427,   183,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,    67,  -427,  -427,  -427,  -427,  -427,  -427,   -94,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -105,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,   -57,  -427,  -427,  -427,
+    -176,  -427,  -427,  -190,  -427,  -427,  -427,  -427,  -427,  -427,
+    -201,  -427,  -427,  -207,  -427
   };
 
   const short int
@@ -2988,295 +3053,299 @@ namespace isc { namespace dhcp {
   {
       -1,    12,    13,    14,    15,    16,    17,    18,    19,    20,
       21,    22,    23,    68,    33,    34,    57,    72,    73,    35,
-      56,   424,   505,    69,    70,   107,    37,    58,    80,    81,
-      82,   249,    39,    59,   108,   109,   110,   111,   112,   113,
-     114,   115,   256,    41,    60,   132,   279,   116,   257,   117,
-     258,   476,   477,   209,   313,   479,   561,   480,   562,   481,
-     563,   210,   314,   483,   484,   485,   118,   267,   501,   502,
-     503,   504,   119,   269,   508,   509,   510,   120,   268,   121,
-     271,   514,   515,   516,   586,    55,    67,   240,   241,   242,
-     326,   243,   327,   122,   272,   518,   519,   123,   264,   488,
-     489,   490,   570,    43,    61,   150,   151,   152,   284,   153,
-     285,   154,   286,   155,   290,   156,   289,   157,   158,   124,
-     265,   492,   493,   494,   573,    51,    65,   211,   212,   213,
-     214,   215,   216,   217,   218,   317,   219,   316,   220,   221,
-     318,   222,   125,   266,   496,   497,   498,   576,    53,    66,
-     229,   230,   231,   232,   233,   322,   234,   235,   236,   160,
-     282,   543,   544,   545,   604,    45,    62,   167,   168,   169,
-     295,   161,   283,   547,   548,   549,   607,    47,    63,   177,
-     178,   179,   298,   180,   181,   300,   182,   183,   162,   291,
-     551,   552,   553,   610,    49,    64,   192,   193,   194,   195,
-     306,   196,   307,   197,   308,   198,   309,   199,   310,   200,
-     305,   163,   292,   555,   613,   126,   270,   512,   281,   365,
-     366,   367,   368,   369,   433,   127,   273,   527,   528,   529,
-     530,   592,   531,   532,   128,   129,   275,   535,   536,   537,
-     598,   538,   599,   130,   276,    83,   251,    84,   252,    85,
-     250,   465,   466,   467,   557,   669,   670,   671,   679,   680,
-     681,   682,   687,   683,   685,   697,   698,   699,   703,   704,
-     706
+      56,   423,   505,    69,    70,   107,    37,    58,    80,    81,
+      82,   248,    39,    59,   108,   109,   110,   111,   112,   113,
+     114,   115,   255,    41,    60,   132,   278,   116,   256,   117,
+     257,   476,   477,   478,   562,   479,   563,   480,   564,   481,
+     565,   209,   313,   483,   484,   485,   118,   266,   501,   502,
+     503,   504,   119,   268,   508,   509,   510,   120,   267,   121,
+     270,   514,   515,   516,   588,    55,    67,   239,   240,   241,
+     325,   242,   326,   122,   271,   518,   519,   123,   263,   488,
+     489,   490,   572,    43,    61,   150,   151,   152,   283,   153,
+     284,   154,   285,   155,   289,   156,   288,   157,   158,   124,
+     264,   492,   493,   494,   575,    51,    65,   210,   211,   212,
+     213,   214,   215,   216,   312,   217,   316,   218,   315,   219,
+     220,   317,   221,   125,   265,   496,   497,   498,   578,    53,
+      66,   228,   229,   230,   231,   232,   321,   233,   234,   235,
+     160,   281,   544,   545,   546,   607,    45,    62,   167,   168,
+     169,   294,   161,   282,   548,   549,   550,   610,    47,    63,
+     177,   178,   179,   297,   180,   181,   299,   182,   183,   162,
+     290,   552,   553,   554,   613,    49,    64,   192,   193,   194,
+     195,   305,   196,   306,   197,   307,   198,   308,   199,   309,
+     200,   304,   163,   291,   556,   616,   126,   269,   512,   280,
+     364,   365,   366,   367,   368,   432,   127,   272,   527,   528,
+     529,   594,   670,   530,   531,   595,   532,   533,   128,   129,
+     274,   536,   537,   538,   601,   539,   602,   130,   275,    83,
+     250,    84,   251,    85,   249,   464,   465,   466,   558,   679,
+     680,   681,   689,   690,   691,   692,   697,   693,   695,   707,
+     708,   709,   713,   714,   716
   };
 
   const unsigned short int
   Dhcp6Parser::yytable_[] =
   {
-      79,   226,   526,   145,   165,   175,   190,   208,   225,   239,
-     507,   159,   166,   176,   191,   227,    32,   228,   478,   478,
-     146,   511,   133,   147,   148,   149,    74,    25,    24,    26,
-     525,    27,   202,   223,   203,   204,   224,    89,    90,    91,
-      92,    36,    96,   202,    96,   201,   469,   470,   471,   472,
-     473,   474,   201,   134,    38,   135,   472,   133,    40,   499,
-     202,   136,   137,   138,   139,   140,   141,    42,    96,   361,
-      44,   254,   142,   143,    46,    86,   255,    87,    88,   144,
-     170,   171,   172,   173,   174,    96,    89,    90,    91,    92,
-      93,    94,    95,    96,    48,   164,    75,   500,    71,   237,
-     238,    78,    76,    77,   202,   237,   238,   142,   520,   521,
-     522,   523,    78,    50,    78,    78,    97,    98,    99,   100,
-      96,    28,    29,    30,    31,   579,    52,   201,   580,    78,
-     101,    78,   277,   102,   103,    54,    78,   278,    78,   104,
-     105,   244,   202,   106,   203,   204,   184,   205,   206,   207,
-     185,   186,   187,   188,   189,    78,   674,   432,   675,   676,
-     293,   296,   131,    78,   245,   294,   297,   507,   478,   526,
-     303,   328,   277,    78,   246,   304,   329,   556,   558,   633,
-     567,   567,   247,   559,   248,   568,   569,   448,   449,   450,
-      78,   582,   584,   280,   583,   585,    79,   525,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,   590,
-     596,    78,   600,   248,   591,   597,   363,   601,   602,   293,
-     328,   296,   303,   362,   657,   660,   664,   665,   688,   707,
-     311,   364,   253,   689,   708,   145,   672,   700,   165,   673,
-     701,   499,   506,   159,   259,   175,   166,   260,   330,   331,
-     533,   534,   146,   176,   190,   147,   148,   149,   261,   262,
-     226,   263,   191,   208,   274,   287,   288,   225,   299,   301,
-     302,   312,   341,   315,   227,   319,   228,   321,   320,   323,
-     324,   325,   332,   333,   334,   335,   336,   338,   339,   340,
-     342,   343,   344,   345,   346,   347,   348,   349,   350,   351,
-     352,   353,   354,   355,   356,   357,   358,   360,   370,   371,
-     372,   373,   374,   375,   376,   377,   378,   379,   380,   382,
-     384,   385,   386,   387,   388,   390,   391,   392,   393,   394,
-     395,   397,   398,   400,   401,   399,   402,   405,   414,   415,
-     403,   406,   408,   409,   411,   434,   438,   439,   412,   413,
-     416,   417,   482,   482,   418,   419,   420,   421,   422,   475,
-     475,   423,   425,   426,   427,   620,   435,   428,   429,   430,
-     363,   524,   431,   436,   437,   440,   441,   362,   443,   444,
-     581,   487,   491,   495,   513,   364,   442,   445,   446,   540,
-     542,   546,   564,   550,   565,   560,   566,   571,   572,   447,
-     574,   575,   577,   578,   588,   587,   589,   593,   451,   452,
-     594,   595,   461,   606,   462,   605,   453,   608,   454,   455,
-     554,   609,   611,   612,   653,   614,   615,   464,   617,   618,
-     456,   619,   631,   457,   458,   459,   638,   643,   644,   652,
-     539,   337,   359,   668,   460,   658,   659,   517,   603,   666,
-     686,   690,   692,   463,   621,   694,   696,   709,   468,   623,
-     630,   486,   702,   634,   632,   654,   622,   636,   635,   410,
-     639,   640,   625,   637,   624,   381,   627,   404,   641,   655,
-     656,   661,   626,   629,   628,   407,   648,   649,   662,   646,
-     647,   383,   663,   541,   642,   645,   667,   389,   651,   650,
-     684,   616,   482,   693,   691,   705,   710,   695,   396,   475,
-       0,   226,   145,   711,     0,   208,     0,     0,   225,     0,
-     159,     0,     0,     0,     0,   227,     0,   228,   239,   146,
-       0,     0,   147,   148,   149,     0,     0,     0,   524,     0,
-       0,     0,     0,     0,     0,     0,   165,     0,     0,   175,
-       0,     0,   190,     0,   166,     0,     0,   176,     0,     0,
-     191,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      79,   225,   526,   145,   165,   175,   190,   208,   224,   238,
+     511,   159,   166,   176,   191,   226,    32,   227,   507,   133,
+     146,    74,    96,   147,   148,   149,    25,   499,    26,    36,
+      27,    24,   164,   253,    89,    90,    91,    92,   254,    96,
+     202,    96,   468,   469,   470,   471,   472,   473,   474,   520,
+     134,   276,   135,   472,   236,   237,   277,   202,   136,   137,
+     138,   139,   140,   141,    38,   133,   360,    96,   500,   142,
+     143,   581,    96,    40,   582,    86,   144,    87,    88,   170,
+     171,   172,   173,   174,   499,   506,    89,    90,    91,    92,
+      93,    94,    95,    96,    75,    78,   236,   237,   184,    42,
+      76,    77,   185,   186,   187,   188,   189,   202,   521,   522,
+     523,   524,    78,    78,    78,   142,    97,    98,    99,   100,
+     534,   535,   292,    28,    29,    30,    31,   293,    44,    78,
+     101,    78,   201,   102,   103,   584,    78,   431,   585,   295,
+      78,    46,   104,   105,   296,    78,   106,   202,   586,   203,
+     204,   587,   205,   206,   207,   202,   222,   203,   204,   223,
+     682,    48,   684,   683,   685,   686,    78,   447,   448,   449,
+     302,   637,   327,   526,    71,   303,   131,   328,   507,    78,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,   276,   559,   569,   569,    79,   557,   560,   570,   571,
+     592,   599,   603,   247,   292,   593,   600,   604,   605,   663,
+      50,   327,   295,   302,    52,   362,   666,   674,   675,    78,
+     698,   717,   361,    54,   244,   699,   718,    78,   710,   243,
+     363,   711,   245,   247,   145,   246,   252,   165,   258,   667,
+     668,   669,   159,   259,   175,   166,   260,   329,   330,   261,
+     262,   146,   176,   190,   147,   148,   149,   273,   279,   225,
+     286,   191,   208,   287,   298,   300,   224,   301,   311,   340,
+     310,   314,   318,   226,   319,   227,   320,   323,   322,   324,
+     331,   332,   333,   334,   335,   337,   338,   339,   341,   342,
+     343,   345,   346,   347,   348,   344,   349,   350,   351,   352,
+     353,   354,   356,   357,   359,   355,   369,   370,   371,   372,
+     373,   375,   376,   377,   374,   378,   379,   381,   383,   385,
+     389,   390,   384,   386,   391,   387,   392,   393,   394,   396,
+     397,   399,   398,   400,   401,   404,   402,   413,   414,   407,
+     405,   408,   410,   411,   625,   437,   412,   415,   416,   417,
+     418,   482,   482,   419,   420,   421,   422,   424,   475,   475,
+     425,   426,   433,   624,   427,   428,   429,   430,   434,   362,
+     525,   435,   436,   438,   439,   442,   361,   440,   443,   487,
+     491,   495,   513,   541,   363,   543,   441,   444,   445,   547,
+     551,   566,   561,   446,   567,   568,   574,   617,   573,   577,
+     576,   579,   580,   450,   589,   590,   608,   591,   596,   451,
+     597,   460,   452,   461,   598,   609,   612,   611,   555,   618,
+     453,   454,   614,   455,   615,   635,   620,   463,   621,   622,
+     456,   623,   642,   643,   457,   458,   459,   648,   649,   657,
+     664,   658,   696,   540,   700,   665,   517,   676,   606,   678,
+     702,   706,   626,   704,   719,   462,   358,   583,   336,   486,
+     467,   627,   634,   636,   640,   644,   645,   646,   639,   409,
+     659,   660,   638,   629,   641,   628,   380,   631,   661,   662,
+     630,   403,   671,   672,   633,   632,   406,   673,   677,   652,
+     651,   701,   656,   712,   395,   388,   653,   654,   650,   705,
+     655,   542,   619,   721,   482,   647,   694,   382,   703,   715,
+     720,   475,     0,   225,   145,     0,     0,   208,     0,     0,
+     224,     0,   159,     0,     0,     0,     0,   226,     0,   227,
+     238,   146,     0,     0,   147,   148,   149,     0,     0,     0,
+       0,   525,     0,     0,     0,     0,     0,     0,     0,   165,
+       0,     0,   175,     0,     0,   190,     0,   166,     0,     0,
+     176,     0,     0,   191,     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,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   678,     0,     0,     0,
-       0,     0,     0,   677,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   678,     0,     0,     0,     0,     0,     0,
-     677
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   688,     0,     0,     0,
+       0,     0,     0,   687,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   688,     0,     0,     0,     0,     0,     0,
+     687
   };
 
   const short int
   Dhcp6Parser::yycheck_[] =
   {
-      58,    66,   429,    61,    62,    63,    64,    65,    66,    67,
-     425,    61,    62,    63,    64,    66,    13,    66,   417,   418,
-      61,   426,     7,    61,    61,    61,    10,     5,     0,     7,
-     429,     9,    30,    31,    32,    33,    34,    22,    23,    24,
-      25,     7,    29,    30,    29,    15,    16,    17,    18,    19,
-      20,    21,    15,    38,     7,    40,    19,     7,     7,    61,
-      30,    46,    47,    48,    49,    50,    51,     7,    29,    56,
-       7,     3,    57,    58,     7,    11,     8,    13,    14,    64,
-      41,    42,    43,    44,    45,    29,    22,    23,    24,    25,
-      26,    27,    28,    29,     7,    39,    80,    99,    99,    67,
-      68,    99,    86,    87,    30,    67,    68,    57,    71,    72,
-      73,    74,    99,     7,    99,    99,    52,    53,    54,    55,
-      29,    99,   100,   101,   102,     3,     7,    15,     6,    99,
-      66,    99,     3,    69,    70,     7,    99,     8,    99,    75,
-      76,     6,    30,    79,    32,    33,    55,    35,    36,    37,
-      59,    60,    61,    62,    63,    99,    82,   360,    84,    85,
-       3,     3,    12,    99,     3,     8,     8,   582,   567,   596,
-       3,     3,     3,    99,     4,     8,     8,     8,     3,   584,
-       3,     3,     8,     8,     3,     8,     8,   390,   391,   392,
-      99,     3,     3,     8,     6,     6,   254,   596,    88,    89,
-      90,    91,    92,    93,    94,    95,    96,    97,    98,     3,
-       3,    99,     3,     3,     8,     8,   281,     8,     8,     3,
-       3,     3,     3,   281,     8,     8,     8,     8,     3,     3,
-       8,   281,     4,     8,     8,   293,     3,     3,   296,     6,
-       6,    61,    62,   293,     4,   303,   296,     4,   245,   246,
-      77,    78,   293,   303,   312,   293,   293,   293,     4,     4,
-     325,     4,   312,   321,     4,     4,     4,   325,     4,     4,
-       4,     3,   100,     4,   325,     4,   325,     3,     8,     4,
-       8,     3,    99,     4,     4,     4,     4,     4,     4,     4,
-     100,   100,   100,   100,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,   100,     4,     4,     4,     4,     4,
-       4,     4,     4,   100,   102,     4,     4,     4,     4,     4,
-       4,   100,     4,   100,   100,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,   100,     4,     4,   335,   336,
-     102,   102,     4,     4,     4,     8,    99,    99,     7,     7,
-       7,     7,   417,   418,     7,     5,     5,     5,     5,   417,
-     418,     5,     5,     5,     5,   102,     3,     7,     7,     7,
-     435,   429,     7,     5,     5,    99,    99,   435,     5,     7,
-     505,     7,     7,     7,     7,   435,    99,    99,    99,     4,
-       7,     7,     4,     7,     4,     8,     4,     6,     3,    99,
-       6,     3,     6,     3,     3,     6,     4,     4,    99,    99,
-       4,     4,   409,     3,   411,     6,    99,     6,    99,    99,
-      65,     3,     6,     3,     5,     8,     4,    81,     4,     4,
-      99,     4,     6,    99,    99,    99,     4,     4,     4,     4,
-     431,   254,   277,     7,    99,     8,     8,    99,    99,     8,
-       4,     4,     4,   412,   100,     5,     7,     4,   416,   567,
-     579,   418,    83,   586,   582,    99,   102,   100,   588,   328,
-     100,   100,   572,   590,   570,   293,   575,   321,   100,    99,
-      99,    99,   573,   578,   576,   325,   607,   609,    99,   604,
-     606,   296,    99,   435,   596,   600,    99,   303,   612,   610,
-     672,   558,   567,   688,   100,   700,   707,    99,   312,   567,
-      -1,   576,   570,    99,    -1,   573,    -1,    -1,   576,    -1,
-     570,    -1,    -1,    -1,    -1,   576,    -1,   576,   586,   570,
-      -1,    -1,   570,   570,   570,    -1,    -1,    -1,   596,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   604,    -1,    -1,   607,
-      -1,    -1,   610,    -1,   604,    -1,    -1,   607,    -1,    -1,
-     610,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      58,    66,   428,    61,    62,    63,    64,    65,    66,    67,
+     425,    61,    62,    63,    64,    66,    13,    66,   424,     7,
+      61,    10,    29,    61,    61,    61,     5,    61,     7,     7,
+       9,     0,    39,     3,    22,    23,    24,    25,     8,    29,
+      30,    29,    15,    16,    17,    18,    19,    20,    21,    15,
+      38,     3,    40,    19,    67,    68,     8,    30,    46,    47,
+      48,    49,    50,    51,     7,     7,    56,    29,   102,    57,
+      58,     3,    29,     7,     6,    11,    64,    13,    14,    41,
+      42,    43,    44,    45,    61,    62,    22,    23,    24,    25,
+      26,    27,    28,    29,    83,   102,    67,    68,    55,     7,
+      89,    90,    59,    60,    61,    62,    63,    30,    74,    75,
+      76,    77,   102,   102,   102,    57,    52,    53,    54,    55,
+      80,    81,     3,   102,   103,   104,   105,     8,     7,   102,
+      66,   102,    15,    69,    70,     3,   102,   359,     6,     3,
+     102,     7,    78,    79,     8,   102,    82,    30,     3,    32,
+      33,     6,    35,    36,    37,    30,    31,    32,    33,    34,
+       3,     7,    85,     6,    87,    88,   102,   389,   390,   391,
+       3,   586,     3,   599,   102,     8,    12,     8,   584,   102,
+      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
+     101,     3,     3,     3,     3,   253,     8,     8,     8,     8,
+       3,     3,     3,     3,     3,     8,     8,     8,     8,     8,
+       7,     3,     3,     3,     7,   280,     8,     8,     8,   102,
+       3,     3,   280,     7,     3,     8,     8,   102,     3,     6,
+     280,     6,     4,     3,   292,     8,     4,   295,     4,    71,
+      72,    73,   292,     4,   302,   295,     4,   244,   245,     4,
+       4,   292,   302,   311,   292,   292,   292,     4,     8,   324,
+       4,   311,   320,     4,     4,     4,   324,     4,     3,   103,
+       8,     4,     4,   324,     8,   324,     3,     8,     4,     3,
+     102,     4,     4,     4,     4,     4,     4,     4,   103,   103,
+     103,     4,     4,     4,     4,   103,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   103,     4,     4,     4,     4,
+       4,   105,     4,     4,   103,     4,     4,     4,     4,     4,
+       4,     4,   103,   103,     4,   103,     4,     4,     4,     4,
+       4,     4,   103,     4,     4,     4,   105,   334,   335,     4,
+     105,     4,     4,     7,   103,   102,     7,     7,     7,     7,
+       5,   416,   417,     5,     5,     5,     5,     5,   416,   417,
+       5,     5,     8,   105,     7,     7,     7,     7,     3,   434,
+     428,     5,     5,   102,   102,     5,   434,   102,     7,     7,
+       7,     7,     7,     4,   434,     7,   102,   102,   102,     7,
+       7,     4,     8,   102,     4,     4,     3,     8,     6,     3,
+       6,     6,     3,   102,     6,     3,     6,     4,     4,   102,
+       4,   408,   102,   410,     4,     3,     3,     6,    65,     4,
+     102,   102,     6,   102,     3,     6,     4,    84,     4,     4,
+     102,     4,     4,     4,   102,   102,   102,     4,     4,     4,
+       8,     5,     4,   430,     4,     8,   102,     8,   102,     7,
+       4,     7,   105,     5,     4,   411,   276,   505,   253,   417,
+     415,   569,   581,   584,   103,   103,   103,   103,   590,   327,
+     102,   102,   588,   574,   592,   572,   292,   577,   102,   102,
+     575,   320,   102,   102,   580,   578,   324,   102,   102,   609,
+     607,   103,   615,    86,   311,   302,   610,   612,   603,   102,
+     613,   434,   559,   102,   569,   599,   682,   295,   698,   710,
+     717,   569,    -1,   578,   572,    -1,    -1,   575,    -1,    -1,
+     578,    -1,   572,    -1,    -1,    -1,    -1,   578,    -1,   578,
+     588,   572,    -1,    -1,   572,   572,   572,    -1,    -1,    -1,
+      -1,   599,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   607,
+      -1,    -1,   610,    -1,    -1,   613,    -1,   607,    -1,    -1,
+     610,    -1,    -1,   613,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   671,    -1,    -1,    -1,
-      -1,    -1,    -1,   671,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   688,    -1,    -1,    -1,    -1,    -1,    -1,
-     688
+      -1,    -1,    -1,    -1,    -1,    -1,   681,    -1,    -1,    -1,
+      -1,    -1,    -1,   681,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   698,    -1,    -1,    -1,    -1,    -1,    -1,
+     698
   };
 
   const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       0,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,    98,   104,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,     0,     5,     7,     9,    99,   100,
-     101,   102,   116,   117,   118,   122,     7,   129,     7,   135,
-       7,   146,     7,   206,     7,   268,     7,   280,     7,   297,
-       7,   228,     7,   251,     7,   188,   123,   119,   130,   136,
-     147,   207,   269,   281,   298,   229,   252,   189,   116,   126,
-     127,    99,   120,   121,    10,    80,    86,    87,    99,   128,
-     131,   132,   133,   348,   350,   352,    11,    13,    14,    22,
+       0,    91,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   107,   108,   109,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,     0,     5,     7,     9,   102,   103,
+     104,   105,   119,   120,   121,   125,     7,   132,     7,   138,
+       7,   149,     7,   209,     7,   272,     7,   284,     7,   301,
+       7,   231,     7,   255,     7,   191,   126,   122,   133,   139,
+     150,   210,   273,   285,   302,   232,   256,   192,   119,   129,
+     130,   102,   123,   124,    10,    83,    89,    90,   102,   131,
+     134,   135,   136,   355,   357,   359,    11,    13,    14,    22,
       23,    24,    25,    26,    27,    28,    29,    52,    53,    54,
-      55,    66,    69,    70,    75,    76,    79,   128,   137,   138,
-     139,   140,   141,   142,   143,   144,   150,   152,   169,   175,
-     180,   182,   196,   200,   222,   245,   318,   328,   337,   338,
-     346,    12,   148,     7,    38,    40,    46,    47,    48,    49,
-      50,    51,    57,    58,    64,   128,   139,   140,   141,   142,
-     208,   209,   210,   212,   214,   216,   218,   220,   221,   245,
-     262,   274,   291,   314,    39,   128,   245,   270,   271,   272,
-      41,    42,    43,    44,    45,   128,   245,   282,   283,   284,
-     286,   287,   289,   290,    55,    59,    60,    61,    62,    63,
-     128,   245,   299,   300,   301,   302,   304,   306,   308,   310,
-     312,    15,    30,    32,    33,    35,    36,    37,   128,   156,
-     164,   230,   231,   232,   233,   234,   235,   236,   237,   239,
-     241,   242,   244,    31,    34,   128,   164,   234,   239,   253,
-     254,   255,   256,   257,   259,   260,   261,    67,    68,   128,
-     190,   191,   192,   194,     6,     3,     4,     8,     3,   134,
-     353,   349,   351,     4,     3,     8,   145,   151,   153,     4,
-       4,     4,     4,     4,   201,   223,   246,   170,   181,   176,
-     319,   183,   197,   329,     4,   339,   347,     3,     8,   149,
-       8,   321,   263,   275,   211,   213,   215,     4,     4,   219,
-     217,   292,   315,     3,     8,   273,     3,     8,   285,     4,
-     288,     4,     4,     3,     8,   313,   303,   305,   307,   309,
-     311,     8,     3,   157,   165,     4,   240,   238,   243,     4,
-       8,     3,   258,     4,     8,     3,   193,   195,     3,     8,
-     116,   116,    99,     4,     4,     4,     4,   132,     4,     4,
-       4,   100,   100,   100,   100,   100,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   100,     4,     4,   138,
-       4,    56,   128,   164,   245,   322,   323,   324,   325,   326,
-       4,     4,     4,     4,     4,   100,   102,     4,     4,     4,
-       4,   209,     4,   271,     4,   100,     4,   100,   100,   283,
-       4,     4,     4,     4,     4,     4,   301,     4,     4,   100,
-       4,     4,     4,   102,   232,     4,   102,   255,     4,     4,
-     191,     4,     7,     7,   116,   116,     7,     7,     7,     5,
-       5,     5,     5,     5,   124,     5,     5,     5,     7,     7,
-       7,     7,   124,   327,     8,     3,     5,     5,    99,    99,
-      99,    99,    99,     5,     7,    99,    99,    99,   124,   124,
-     124,    99,    99,    99,    99,    99,    99,    99,    99,    99,
-      99,   116,   116,   137,    81,   354,   355,   356,   148,    16,
-      17,    18,    19,    20,    21,   128,   154,   155,   156,   158,
-     160,   162,   164,   166,   167,   168,   154,     7,   202,   203,
-     204,     7,   224,   225,   226,     7,   247,   248,   249,    61,
-      99,   171,   172,   173,   174,   125,    62,   173,   177,   178,
-     179,   216,   320,     7,   184,   185,   186,    99,   198,   199,
-      71,    72,    73,    74,   128,   156,   166,   330,   331,   332,
-     333,   335,   336,    77,    78,   340,   341,   342,   344,   121,
-       4,   324,     7,   264,   265,   266,     7,   276,   277,   278,
-       7,   293,   294,   295,    65,   316,     8,   357,     3,     8,
-       8,   159,   161,   163,     4,     4,     4,     3,     8,     8,
-     205,     6,     3,   227,     6,     3,   250,     6,     3,     3,
-       6,   126,     3,     6,     3,     6,   187,     6,     3,     4,
-       3,     8,   334,     4,     4,     4,     3,     8,   343,   345,
-       3,     8,     8,    99,   267,     6,     3,   279,     6,     3,
-     296,     6,     3,   317,     8,     4,   355,     4,     4,     4,
-     102,   100,   102,   155,   208,   204,   230,   226,   253,   249,
-     172,     6,   178,   216,   190,   186,   100,   199,     4,   100,
-     100,   100,   331,     4,     4,   341,   270,   266,   282,   278,
-     299,   295,     4,     5,    99,    99,    99,     8,     8,     8,
-       8,    99,    99,    99,     8,     8,     8,    99,     7,   358,
-     359,   360,     3,     6,    82,    84,    85,   128,   164,   361,
-     362,   363,   364,   366,   359,   367,     4,   365,     3,     8,
-       4,   100,     4,   362,     5,    99,     7,   368,   369,   370,
-       3,     6,    83,   371,   372,   369,   373,     3,     8,     4,
-     372,    99
+      55,    66,    69,    70,    78,    79,    82,   131,   140,   141,
+     142,   143,   144,   145,   146,   147,   153,   155,   172,   178,
+     183,   185,   199,   203,   225,   249,   322,   332,   344,   345,
+     353,    12,   151,     7,    38,    40,    46,    47,    48,    49,
+      50,    51,    57,    58,    64,   131,   142,   143,   144,   145,
+     211,   212,   213,   215,   217,   219,   221,   223,   224,   249,
+     266,   278,   295,   318,    39,   131,   249,   274,   275,   276,
+      41,    42,    43,    44,    45,   131,   249,   286,   287,   288,
+     290,   291,   293,   294,    55,    59,    60,    61,    62,    63,
+     131,   249,   303,   304,   305,   306,   308,   310,   312,   314,
+     316,    15,    30,    32,    33,    35,    36,    37,   131,   167,
+     233,   234,   235,   236,   237,   238,   239,   241,   243,   245,
+     246,   248,    31,    34,   131,   167,   237,   243,   257,   258,
+     259,   260,   261,   263,   264,   265,    67,    68,   131,   193,
+     194,   195,   197,     6,     3,     4,     8,     3,   137,   360,
+     356,   358,     4,     3,     8,   148,   154,   156,     4,     4,
+       4,     4,     4,   204,   226,   250,   173,   184,   179,   323,
+     186,   200,   333,     4,   346,   354,     3,     8,   152,     8,
+     325,   267,   279,   214,   216,   218,     4,     4,   222,   220,
+     296,   319,     3,     8,   277,     3,     8,   289,     4,   292,
+       4,     4,     3,     8,   317,   307,   309,   311,   313,   315,
+       8,     3,   240,   168,     4,   244,   242,   247,     4,     8,
+       3,   262,     4,     8,     3,   196,   198,     3,     8,   119,
+     119,   102,     4,     4,     4,     4,   135,     4,     4,     4,
+     103,   103,   103,   103,   103,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   103,     4,     4,   141,     4,
+      56,   131,   167,   249,   326,   327,   328,   329,   330,     4,
+       4,     4,     4,     4,   103,   105,     4,     4,     4,     4,
+     212,     4,   275,     4,   103,     4,   103,   103,   287,     4,
+       4,     4,     4,     4,     4,   305,     4,     4,   103,     4,
+       4,     4,   105,   235,     4,   105,   259,     4,     4,   194,
+       4,     7,     7,   119,   119,     7,     7,     7,     5,     5,
+       5,     5,     5,   127,     5,     5,     5,     7,     7,     7,
+       7,   127,   331,     8,     3,     5,     5,   102,   102,   102,
+     102,   102,     5,     7,   102,   102,   102,   127,   127,   127,
+     102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
+     119,   119,   140,    84,   361,   362,   363,   151,    15,    16,
+      17,    18,    19,    20,    21,   131,   157,   158,   159,   161,
+     163,   165,   167,   169,   170,   171,   157,     7,   205,   206,
+     207,     7,   227,   228,   229,     7,   251,   252,   253,    61,
+     102,   174,   175,   176,   177,   128,    62,   176,   180,   181,
+     182,   219,   324,     7,   187,   188,   189,   102,   201,   202,
+      15,    74,    75,    76,    77,   131,   169,   334,   335,   336,
+     339,   340,   342,   343,    80,    81,   347,   348,   349,   351,
+     124,     4,   328,     7,   268,   269,   270,     7,   280,   281,
+     282,     7,   297,   298,   299,    65,   320,     8,   364,     3,
+       8,     8,   160,   162,   164,   166,     4,     4,     4,     3,
+       8,     8,   208,     6,     3,   230,     6,     3,   254,     6,
+       3,     3,     6,   129,     3,     6,     3,     6,   190,     6,
+       3,     4,     3,     8,   337,   341,     4,     4,     4,     3,
+       8,   350,   352,     3,     8,     8,   102,   271,     6,     3,
+     283,     6,     3,   300,     6,     3,   321,     8,     4,   362,
+       4,     4,     4,     4,   105,   103,   105,   158,   211,   207,
+     233,   229,   257,   253,   175,     6,   181,   219,   193,   189,
+     103,   202,     4,     4,   103,   103,   103,   335,     4,     4,
+     348,   274,   270,   286,   282,   303,   299,     4,     5,   102,
+     102,   102,   102,     8,     8,     8,     8,    71,    72,    73,
+     338,   102,   102,   102,     8,     8,     8,   102,     7,   365,
+     366,   367,     3,     6,    85,    87,    88,   131,   167,   368,
+     369,   370,   371,   373,   366,   374,     4,   372,     3,     8,
+       4,   103,     4,   369,     5,   102,     7,   375,   376,   377,
+       3,     6,    86,   378,   379,   376,   380,     3,     8,     4,
+     379,   102
   };
 
   const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       0,   103,   105,   104,   106,   104,   107,   104,   108,   104,
-     109,   104,   110,   104,   111,   104,   112,   104,   113,   104,
-     114,   104,   115,   104,   116,   116,   116,   116,   116,   116,
-     116,   117,   119,   118,   120,   120,   121,   121,   123,   122,
-     125,   124,   126,   126,   127,   127,   128,   130,   129,   131,
-     131,   132,   132,   132,   132,   132,   134,   133,   136,   135,
-     137,   137,   138,   138,   138,   138,   138,   138,   138,   138,
-     138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
-     138,   138,   138,   138,   139,   140,   141,   142,   143,   145,
-     144,   147,   146,   149,   148,   151,   150,   153,   152,   154,
-     154,   155,   155,   155,   155,   155,   155,   155,   155,   155,
-     157,   156,   159,   158,   161,   160,   163,   162,   165,   164,
-     166,   167,   168,   170,   169,   171,   171,   172,   172,   173,
-     174,   176,   175,   177,   177,   178,   178,   179,   181,   180,
-     183,   182,   184,   184,   185,   185,   187,   186,   189,   188,
-     190,   190,   190,   191,   191,   193,   192,   195,   194,   197,
-     196,   198,   198,   199,   201,   200,   202,   202,   203,   203,
-     205,   204,   207,   206,   208,   208,   209,   209,   209,   209,
-     209,   209,   209,   209,   209,   209,   209,   209,   209,   209,
-     209,   209,   209,   211,   210,   213,   212,   215,   214,   217,
-     216,   219,   218,   220,   221,   223,   222,   224,   224,   225,
-     225,   227,   226,   229,   228,   230,   230,   231,   231,   232,
-     232,   232,   232,   232,   232,   232,   232,   233,   234,   235,
-     236,   238,   237,   240,   239,   241,   243,   242,   244,   246,
-     245,   247,   247,   248,   248,   250,   249,   252,   251,   253,
-     253,   254,   254,   255,   255,   255,   255,   255,   255,   256,
-     258,   257,   259,   260,   261,   263,   262,   264,   264,   265,
-     265,   267,   266,   269,   268,   270,   270,   271,   271,   271,
-     273,   272,   275,   274,   276,   276,   277,   277,   279,   278,
-     281,   280,   282,   282,   283,   283,   283,   283,   283,   283,
-     283,   285,   284,   286,   288,   287,   289,   290,   292,   291,
-     293,   293,   294,   294,   296,   295,   298,   297,   299,   299,
-     300,   300,   301,   301,   301,   301,   301,   301,   301,   301,
-     303,   302,   305,   304,   307,   306,   309,   308,   311,   310,
-     313,   312,   315,   314,   317,   316,   319,   318,   320,   320,
-     321,   216,   322,   322,   323,   323,   324,   324,   324,   324,
-     325,   327,   326,   329,   328,   330,   330,   331,   331,   331,
-     331,   331,   331,   331,   332,   334,   333,   335,   336,   337,
-     339,   338,   340,   340,   341,   341,   343,   342,   345,   344,
-     347,   346,   349,   348,   351,   350,   353,   352,   354,   354,
-     355,   357,   356,   358,   358,   360,   359,   361,   361,   362,
-     362,   362,   362,   362,   363,   365,   364,   367,   366,   368,
-     368,   370,   369,   371,   371,   373,   372
+       0,   106,   108,   107,   109,   107,   110,   107,   111,   107,
+     112,   107,   113,   107,   114,   107,   115,   107,   116,   107,
+     117,   107,   118,   107,   119,   119,   119,   119,   119,   119,
+     119,   120,   122,   121,   123,   123,   124,   124,   126,   125,
+     128,   127,   129,   129,   130,   130,   131,   133,   132,   134,
+     134,   135,   135,   135,   135,   135,   137,   136,   139,   138,
+     140,   140,   141,   141,   141,   141,   141,   141,   141,   141,
+     141,   141,   141,   141,   141,   141,   141,   141,   141,   141,
+     141,   141,   141,   141,   142,   143,   144,   145,   146,   148,
+     147,   150,   149,   152,   151,   154,   153,   156,   155,   157,
+     157,   158,   158,   158,   158,   158,   158,   158,   158,   158,
+     160,   159,   162,   161,   164,   163,   166,   165,   168,   167,
+     169,   170,   171,   173,   172,   174,   174,   175,   175,   176,
+     177,   179,   178,   180,   180,   181,   181,   182,   184,   183,
+     186,   185,   187,   187,   188,   188,   190,   189,   192,   191,
+     193,   193,   193,   194,   194,   196,   195,   198,   197,   200,
+     199,   201,   201,   202,   204,   203,   205,   205,   206,   206,
+     208,   207,   210,   209,   211,   211,   212,   212,   212,   212,
+     212,   212,   212,   212,   212,   212,   212,   212,   212,   212,
+     212,   212,   212,   214,   213,   216,   215,   218,   217,   220,
+     219,   222,   221,   223,   224,   226,   225,   227,   227,   228,
+     228,   230,   229,   232,   231,   233,   233,   234,   234,   235,
+     235,   235,   235,   235,   235,   235,   235,   236,   237,   238,
+     240,   239,   242,   241,   244,   243,   245,   247,   246,   248,
+     250,   249,   251,   251,   252,   252,   254,   253,   256,   255,
+     257,   257,   258,   258,   259,   259,   259,   259,   259,   259,
+     260,   262,   261,   263,   264,   265,   267,   266,   268,   268,
+     269,   269,   271,   270,   273,   272,   274,   274,   275,   275,
+     275,   277,   276,   279,   278,   280,   280,   281,   281,   283,
+     282,   285,   284,   286,   286,   287,   287,   287,   287,   287,
+     287,   287,   289,   288,   290,   292,   291,   293,   294,   296,
+     295,   297,   297,   298,   298,   300,   299,   302,   301,   303,
+     303,   304,   304,   305,   305,   305,   305,   305,   305,   305,
+     305,   307,   306,   309,   308,   311,   310,   313,   312,   315,
+     314,   317,   316,   319,   318,   321,   320,   323,   322,   324,
+     324,   325,   219,   326,   326,   327,   327,   328,   328,   328,
+     328,   329,   331,   330,   333,   332,   334,   334,   335,   335,
+     335,   335,   335,   335,   335,   337,   336,   338,   338,   338,
+     339,   341,   340,   342,   343,   344,   346,   345,   347,   347,
+     348,   348,   350,   349,   352,   351,   354,   353,   356,   355,
+     358,   357,   360,   359,   361,   361,   362,   364,   363,   365,
+     365,   367,   366,   368,   368,   369,   369,   369,   369,   369,
+     370,   372,   371,   374,   373,   375,   375,   377,   376,   378,
+     378,   380,   379
   };
 
   const unsigned char
@@ -3305,26 +3374,27 @@ namespace isc { namespace dhcp {
        4,     0,     4,     3,     3,     0,     6,     0,     1,     1,
        3,     0,     4,     0,     4,     0,     1,     1,     3,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
-       1,     0,     4,     0,     4,     1,     0,     4,     3,     0,
+       0,     4,     0,     4,     0,     4,     1,     0,     4,     3,
+       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
+       0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     0,     4,     1,     1,     3,     0,     6,     0,     1,
+       1,     3,     0,     4,     0,     4,     1,     3,     1,     1,
+       1,     0,     4,     0,     6,     0,     1,     1,     3,     0,
+       4,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     3,     0,     4,     3,     3,     0,
        6,     0,     1,     1,     3,     0,     4,     0,     4,     0,
        1,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     1,     1,     3,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
-       0,     4,     0,     6,     0,     1,     1,     3,     0,     4,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     3,     0,     4,     3,     3,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     0,     1,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     6,     0,     4,     0,     6,     1,     3,
-       0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
-       1,     0,     4,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     3,     0,     4,     3,     3,     3,
-       0,     6,     1,     3,     1,     1,     0,     4,     0,     4,
-       0,     6,     0,     4,     0,     4,     0,     6,     1,     3,
-       1,     0,     6,     1,     3,     0,     4,     1,     3,     1,
-       1,     1,     1,     1,     3,     0,     4,     0,     6,     1,
-       3,     0,     4,     1,     3,     0,     4
+       1,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     6,     0,     4,     0,     6,     1,
+       3,     0,     4,     0,     1,     1,     3,     1,     1,     1,
+       1,     1,     0,     4,     0,     6,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     0,     4,     1,     1,     1,
+       3,     0,     4,     3,     3,     3,     0,     6,     1,     3,
+       1,     1,     0,     4,     0,     4,     0,     6,     0,     4,
+       0,     4,     0,     6,     1,     3,     1,     0,     6,     1,
+       3,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       3,     0,     4,     0,     6,     1,     3,     0,     4,     1,
+       3,     0,     4
   };
 
 
@@ -3352,18 +3422,19 @@ namespace isc { namespace dhcp {
   "\"ip-addresses\"", "\"prefixes\"", "\"duid\"", "\"hw-address\"",
   "\"hostname\"", "\"relay\"", "\"ip-address\"", "\"hooks-libraries\"",
   "\"library\"", "\"parameters\"", "\"expired-leases-processing\"",
-  "\"server-id\"", "\"identifier\"", "\"htype\"", "\"time\"",
-  "\"enterprise-id\"", "\"dhcp4o6-port\"", "\"control-socket\"",
-  "\"socket-type\"", "\"socket-name\"", "\"dhcp-ddns\"", "\"Logging\"",
-  "\"loggers\"", "\"output_options\"", "\"output\"", "\"debuglevel\"",
-  "\"severity\"", "\"Dhcp4\"", "\"DhcpDdns\"", "TOPLEVEL_JSON",
-  "TOPLEVEL_DHCP6", "SUB_DHCP6", "SUB_INTERFACES6", "SUB_SUBNET6",
-  "SUB_POOL6", "SUB_PD_POOL", "SUB_RESERVATION", "SUB_OPTION_DEF",
-  "SUB_OPTION_DATA", "SUB_HOOKS_LIBRARY", "\"constant string\"",
-  "\"integer\"", "\"floating point\"", "\"boolean\"", "$accept", "start",
-  "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10",
-  "$@11", "value", "sub_json", "map2", "$@12", "map_content",
-  "not_empty_map", "list_generic", "$@13", "list2", "$@14", "list_content",
+  "\"server-id\"", "\"LLT\"", "\"EN\"", "\"LL\"", "\"identifier\"",
+  "\"htype\"", "\"time\"", "\"enterprise-id\"", "\"dhcp4o6-port\"",
+  "\"control-socket\"", "\"socket-type\"", "\"socket-name\"",
+  "\"dhcp-ddns\"", "\"Logging\"", "\"loggers\"", "\"output_options\"",
+  "\"output\"", "\"debuglevel\"", "\"severity\"", "\"Dhcp4\"",
+  "\"DhcpDdns\"", "TOPLEVEL_JSON", "TOPLEVEL_DHCP6", "SUB_DHCP6",
+  "SUB_INTERFACES6", "SUB_SUBNET6", "SUB_POOL6", "SUB_PD_POOL",
+  "SUB_RESERVATION", "SUB_OPTION_DEF", "SUB_OPTION_DATA",
+  "SUB_HOOKS_LIBRARY", "\"constant string\"", "\"integer\"",
+  "\"floating point\"", "\"boolean\"", "$accept", "start", "$@1", "$@2",
+  "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "value",
+  "sub_json", "map2", "$@12", "map_content", "not_empty_map",
+  "list_generic", "$@13", "list2", "$@14", "list_content",
   "not_empty_list", "unknown_map_entry", "syntax_map", "$@15",
   "global_objects", "global_object", "dhcp6_object", "$@16", "sub_dhcp6",
   "$@17", "global_params", "global_param", "preferred_lifetime",
@@ -3371,10 +3442,10 @@ namespace isc { namespace dhcp {
   "decline_probation_period", "interfaces_config", "$@18",
   "sub_interfaces6", "$@19", "interface_config_map", "$@20",
   "lease_database", "$@21", "hosts_database", "$@22",
-  "database_map_params", "database_map_param", "type", "$@23", "user",
-  "$@24", "password", "$@25", "host", "$@26", "name", "$@27", "persist",
-  "lfc_interval", "readonly", "mac_sources", "$@28", "mac_sources_list",
-  "mac_sources_value", "duid_id", "string_id",
+  "database_map_params", "database_map_param", "database_type", "$@23",
+  "user", "$@24", "password", "$@25", "host", "$@26", "name", "$@27",
+  "persist", "lfc_interval", "readonly", "mac_sources", "$@28",
+  "mac_sources_list", "mac_sources_value", "duid_id", "string_id",
   "host_reservation_identifiers", "$@29",
   "host_reservation_identifiers_list", "host_reservation_identifier",
   "hw_address_id", "relay_supplied_options", "$@30", "hooks_libraries",
@@ -3390,89 +3461,90 @@ namespace isc { namespace dhcp {
   "option_def_list_content", "not_empty_option_def_list",
   "option_def_entry", "$@46", "sub_option_def", "$@47",
   "option_def_params", "not_empty_option_def_params", "option_def_param",
-  "option_def_name", "code", "option_def_code", "option_def_type",
-  "option_def_record_types", "$@48", "space", "$@49", "option_def_space",
-  "option_def_encapsulate", "$@50", "option_def_array", "option_data_list",
-  "$@51", "option_data_list_content", "not_empty_option_data_list",
-  "option_data_entry", "$@52", "sub_option_data", "$@53",
+  "option_def_name", "code", "option_def_code", "option_def_type", "$@48",
+  "option_def_record_types", "$@49", "space", "$@50", "option_def_space",
+  "option_def_encapsulate", "$@51", "option_def_array", "option_data_list",
+  "$@52", "option_data_list_content", "not_empty_option_data_list",
+  "option_data_entry", "$@53", "sub_option_data", "$@54",
   "option_data_params", "not_empty_option_data_params",
-  "option_data_param", "option_data_name", "option_data_data", "$@54",
+  "option_data_param", "option_data_name", "option_data_data", "$@55",
   "option_data_code", "option_data_space", "option_data_csv_format",
-  "pools_list", "$@55", "pools_list_content", "not_empty_pools_list",
-  "pool_list_entry", "$@56", "sub_pool6", "$@57", "pool_params",
-  "pool_param", "pool_entry", "$@58", "pd_pools_list", "$@59",
+  "pools_list", "$@56", "pools_list_content", "not_empty_pools_list",
+  "pool_list_entry", "$@57", "sub_pool6", "$@58", "pool_params",
+  "pool_param", "pool_entry", "$@59", "pd_pools_list", "$@60",
   "pd_pools_list_content", "not_empty_pd_pools_list", "pd_pool_entry",
-  "$@60", "sub_pd_pool", "$@61", "pd_pool_params", "pd_pool_param",
-  "pd_prefix", "$@62", "pd_prefix_len", "excluded_prefix", "$@63",
-  "excluded_prefix_len", "pd_delegated_len", "reservations", "$@64",
+  "$@61", "sub_pd_pool", "$@62", "pd_pool_params", "pd_pool_param",
+  "pd_prefix", "$@63", "pd_prefix_len", "excluded_prefix", "$@64",
+  "excluded_prefix_len", "pd_delegated_len", "reservations", "$@65",
   "reservations_list", "not_empty_reservations_list", "reservation",
-  "$@65", "sub_reservation", "$@66", "reservation_params",
+  "$@66", "sub_reservation", "$@67", "reservation_params",
   "not_empty_reservation_params", "reservation_param", "ip_addresses",
-  "$@67", "prefixes", "$@68", "duid", "$@69", "hw_address", "$@70",
-  "hostname", "$@71", "reservation_client_classes", "$@72", "relay",
-  "$@73", "relay_map", "$@74", "client_classes", "$@75",
-  "client_classes_list", "$@76", "client_class_params",
+  "$@68", "prefixes", "$@69", "duid", "$@70", "hw_address", "$@71",
+  "hostname", "$@72", "reservation_client_classes", "$@73", "relay",
+  "$@74", "relay_map", "$@75", "client_classes", "$@76",
+  "client_classes_list", "$@77", "client_class_params",
   "not_empty_client_class_params", "client_class_param",
-  "client_class_name", "client_class_test", "$@77", "server_id", "$@78",
-  "server_id_params", "server_id_param", "htype", "identifier", "$@79",
-  "time", "enterprise_id", "dhcp4o6_port", "control_socket", "$@80",
-  "control_socket_params", "control_socket_param", "socket_type", "$@81",
-  "socket_name", "$@82", "dhcp_ddns", "$@83", "dhcp4_json_object", "$@84",
-  "dhcpddns_json_object", "$@85", "logging_object", "$@86",
-  "logging_params", "logging_param", "loggers", "$@87", "loggers_entries",
-  "logger_entry", "$@88", "logger_params", "logger_param", "debuglevel",
-  "severity", "$@89", "output_options_list", "$@90",
-  "output_options_list_content", "output_entry", "$@91", "output_params",
-  "output_param", "$@92", YY_NULLPTR
+  "client_class_name", "client_class_test", "$@78", "server_id", "$@79",
+  "server_id_params", "server_id_param", "server_id_type", "$@80",
+  "duid_type", "htype", "identifier", "$@81", "time", "enterprise_id",
+  "dhcp4o6_port", "control_socket", "$@82", "control_socket_params",
+  "control_socket_param", "socket_type", "$@83", "socket_name", "$@84",
+  "dhcp_ddns", "$@85", "dhcp4_json_object", "$@86", "dhcpddns_json_object",
+  "$@87", "logging_object", "$@88", "logging_params", "logging_param",
+  "loggers", "$@89", "loggers_entries", "logger_entry", "$@90",
+  "logger_params", "logger_param", "debuglevel", "severity", "$@91",
+  "output_options_list", "$@92", "output_options_list_content",
+  "output_entry", "$@93", "output_params", "output_param", "$@94", YY_NULLPTR
   };
 
 #if PARSER6_DEBUG
   const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       0,   198,   198,   198,   199,   199,   200,   200,   201,   201,
-     202,   202,   203,   203,   204,   204,   205,   205,   206,   206,
-     207,   207,   208,   208,   216,   217,   218,   219,   220,   221,
-     222,   225,   230,   230,   242,   243,   246,   250,   257,   257,
-     265,   265,   272,   273,   276,   280,   291,   301,   301,   313,
-     314,   318,   319,   320,   321,   322,   325,   325,   342,   342,
-     350,   351,   356,   357,   358,   359,   360,   361,   362,   363,
-     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
-     374,   375,   376,   377,   380,   385,   390,   395,   400,   405,
-     405,   415,   415,   423,   423,   433,   433,   443,   443,   453,
-     454,   457,   458,   459,   460,   461,   462,   463,   464,   465,
-     468,   468,   476,   476,   484,   484,   492,   492,   500,   500,
-     508,   513,   518,   523,   523,   533,   534,   537,   538,   541,
-     546,   551,   551,   561,   562,   565,   566,   569,   574,   574,
-     584,   584,   594,   595,   598,   599,   602,   602,   610,   610,
-     618,   619,   620,   623,   624,   627,   627,   635,   635,   643,
-     643,   653,   654,   660,   668,   668,   681,   682,   685,   686,
-     693,   693,   716,   716,   725,   726,   730,   731,   732,   733,
-     734,   735,   736,   737,   738,   739,   740,   741,   742,   743,
-     744,   745,   746,   749,   749,   757,   757,   765,   765,   773,
-     773,   781,   781,   789,   794,   803,   803,   815,   816,   819,
-     820,   825,   825,   836,   836,   846,   847,   850,   851,   854,
-     855,   856,   857,   858,   859,   860,   861,   864,   866,   871,
-     873,   875,   875,   883,   883,   891,   893,   893,   901,   910,
-     910,   922,   923,   928,   929,   934,   934,   945,   945,   956,
-     957,   962,   963,   968,   969,   970,   971,   972,   973,   976,
-     978,   978,   986,   988,   990,   998,   998,  1010,  1011,  1014,
-    1015,  1018,  1018,  1026,  1026,  1034,  1035,  1038,  1039,  1040,
-    1043,  1043,  1054,  1054,  1066,  1067,  1070,  1071,  1074,  1074,
-    1082,  1082,  1090,  1091,  1094,  1095,  1096,  1097,  1098,  1099,
-    1100,  1103,  1103,  1111,  1116,  1116,  1124,  1129,  1137,  1137,
-    1147,  1148,  1151,  1152,  1155,  1155,  1163,  1163,  1171,  1172,
-    1175,  1176,  1180,  1181,  1182,  1183,  1184,  1185,  1186,  1187,
-    1190,  1190,  1200,  1200,  1210,  1210,  1218,  1218,  1226,  1226,
-    1234,  1234,  1247,  1247,  1257,  1257,  1268,  1268,  1278,  1279,
-    1282,  1282,  1290,  1291,  1294,  1295,  1298,  1299,  1300,  1301,
-    1304,  1306,  1306,  1317,  1317,  1327,  1328,  1331,  1332,  1333,
-    1334,  1335,  1336,  1337,  1340,  1345,  1345,  1353,  1358,  1365,
-    1372,  1372,  1382,  1383,  1386,  1387,  1390,  1390,  1398,  1398,
-    1408,  1408,  1420,  1420,  1427,  1427,  1439,  1439,  1452,  1453,
-    1457,  1461,  1461,  1473,  1474,  1478,  1478,  1486,  1487,  1490,
-    1491,  1492,  1493,  1494,  1497,  1501,  1501,  1509,  1509,  1519,
-    1520,  1523,  1523,  1531,  1532,  1535,  1535
+       0,   202,   202,   202,   203,   203,   204,   204,   205,   205,
+     206,   206,   207,   207,   208,   208,   209,   209,   210,   210,
+     211,   211,   212,   212,   220,   221,   222,   223,   224,   225,
+     226,   229,   234,   234,   246,   247,   250,   254,   261,   261,
+     269,   269,   276,   277,   280,   284,   295,   305,   305,   317,
+     318,   322,   323,   324,   325,   326,   329,   329,   346,   346,
+     354,   355,   360,   361,   362,   363,   364,   365,   366,   367,
+     368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
+     378,   379,   380,   381,   384,   389,   394,   399,   404,   409,
+     409,   419,   419,   427,   427,   437,   437,   447,   447,   457,
+     458,   461,   462,   463,   464,   465,   466,   467,   468,   469,
+     472,   472,   480,   480,   488,   488,   496,   496,   504,   504,
+     512,   517,   522,   527,   527,   537,   538,   541,   542,   545,
+     550,   555,   555,   565,   566,   569,   570,   573,   578,   578,
+     588,   588,   598,   599,   602,   603,   606,   606,   614,   614,
+     622,   623,   624,   627,   628,   631,   631,   639,   639,   647,
+     647,   657,   658,   664,   672,   672,   685,   686,   689,   690,
+     697,   697,   720,   720,   729,   730,   734,   735,   736,   737,
+     738,   739,   740,   741,   742,   743,   744,   745,   746,   747,
+     748,   749,   750,   753,   753,   761,   761,   769,   769,   777,
+     777,   785,   785,   793,   798,   807,   807,   819,   820,   823,
+     824,   829,   829,   840,   840,   850,   851,   854,   855,   858,
+     859,   860,   861,   862,   863,   864,   865,   868,   870,   875,
+     877,   877,   885,   885,   893,   893,   901,   903,   903,   911,
+     920,   920,   932,   933,   938,   939,   944,   944,   955,   955,
+     966,   967,   972,   973,   978,   979,   980,   981,   982,   983,
+     986,   988,   988,   996,   998,  1000,  1008,  1008,  1020,  1021,
+    1024,  1025,  1028,  1028,  1036,  1036,  1044,  1045,  1048,  1049,
+    1050,  1053,  1053,  1064,  1064,  1076,  1077,  1080,  1081,  1084,
+    1084,  1092,  1092,  1100,  1101,  1104,  1105,  1106,  1107,  1108,
+    1109,  1110,  1113,  1113,  1121,  1126,  1126,  1134,  1139,  1147,
+    1147,  1157,  1158,  1161,  1162,  1165,  1165,  1173,  1173,  1181,
+    1182,  1185,  1186,  1190,  1191,  1192,  1193,  1194,  1195,  1196,
+    1197,  1200,  1200,  1210,  1210,  1220,  1220,  1228,  1228,  1236,
+    1236,  1244,  1244,  1257,  1257,  1267,  1267,  1278,  1278,  1288,
+    1289,  1292,  1292,  1300,  1301,  1304,  1305,  1308,  1309,  1310,
+    1311,  1314,  1316,  1316,  1327,  1327,  1337,  1338,  1341,  1342,
+    1343,  1344,  1345,  1346,  1347,  1350,  1350,  1357,  1358,  1359,
+    1362,  1367,  1367,  1375,  1380,  1387,  1394,  1394,  1404,  1405,
+    1408,  1409,  1412,  1412,  1420,  1420,  1430,  1430,  1442,  1442,
+    1449,  1449,  1461,  1461,  1474,  1475,  1479,  1483,  1483,  1495,
+    1496,  1500,  1500,  1508,  1509,  1512,  1513,  1514,  1515,  1516,
+    1519,  1523,  1523,  1531,  1531,  1541,  1542,  1545,  1545,  1553,
+    1554,  1557,  1557
   };
 
   // Print the state stack on the debug stream.
@@ -3507,8 +3579,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 3511 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 1543 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 3583 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 1565 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
index e316ad03c92fcd9d892e11a3f837d83e90cc30f6..ed70fd647a9044cd128f32dfc40dd6bf7c65c35c 100644 (file)
@@ -305,6 +305,7 @@ namespace isc { namespace dhcp {
     union union_type
     {
       // value
+      // duid_type
       char dummy1[sizeof(ElementPtr)];
 
       // "boolean"
@@ -409,38 +410,41 @@ namespace isc { namespace dhcp {
         TOKEN_PARAMETERS = 323,
         TOKEN_EXPIRED_LEASES_PROCESSING = 324,
         TOKEN_SERVER_ID = 325,
-        TOKEN_IDENTIFIER = 326,
-        TOKEN_HTYPE = 327,
-        TOKEN_TIME = 328,
-        TOKEN_ENTERPRISE_ID = 329,
-        TOKEN_DHCP4O6_PORT = 330,
-        TOKEN_CONTROL_SOCKET = 331,
-        TOKEN_SOCKET_TYPE = 332,
-        TOKEN_SOCKET_NAME = 333,
-        TOKEN_DHCP_DDNS = 334,
-        TOKEN_LOGGING = 335,
-        TOKEN_LOGGERS = 336,
-        TOKEN_OUTPUT_OPTIONS = 337,
-        TOKEN_OUTPUT = 338,
-        TOKEN_DEBUGLEVEL = 339,
-        TOKEN_SEVERITY = 340,
-        TOKEN_DHCP4 = 341,
-        TOKEN_DHCPDDNS = 342,
-        TOKEN_TOPLEVEL_JSON = 343,
-        TOKEN_TOPLEVEL_DHCP6 = 344,
-        TOKEN_SUB_DHCP6 = 345,
-        TOKEN_SUB_INTERFACES6 = 346,
-        TOKEN_SUB_SUBNET6 = 347,
-        TOKEN_SUB_POOL6 = 348,
-        TOKEN_SUB_PD_POOL = 349,
-        TOKEN_SUB_RESERVATION = 350,
-        TOKEN_SUB_OPTION_DEF = 351,
-        TOKEN_SUB_OPTION_DATA = 352,
-        TOKEN_SUB_HOOKS_LIBRARY = 353,
-        TOKEN_STRING = 354,
-        TOKEN_INTEGER = 355,
-        TOKEN_FLOAT = 356,
-        TOKEN_BOOLEAN = 357
+        TOKEN_LLT = 326,
+        TOKEN_EN = 327,
+        TOKEN_LL = 328,
+        TOKEN_IDENTIFIER = 329,
+        TOKEN_HTYPE = 330,
+        TOKEN_TIME = 331,
+        TOKEN_ENTERPRISE_ID = 332,
+        TOKEN_DHCP4O6_PORT = 333,
+        TOKEN_CONTROL_SOCKET = 334,
+        TOKEN_SOCKET_TYPE = 335,
+        TOKEN_SOCKET_NAME = 336,
+        TOKEN_DHCP_DDNS = 337,
+        TOKEN_LOGGING = 338,
+        TOKEN_LOGGERS = 339,
+        TOKEN_OUTPUT_OPTIONS = 340,
+        TOKEN_OUTPUT = 341,
+        TOKEN_DEBUGLEVEL = 342,
+        TOKEN_SEVERITY = 343,
+        TOKEN_DHCP4 = 344,
+        TOKEN_DHCPDDNS = 345,
+        TOKEN_TOPLEVEL_JSON = 346,
+        TOKEN_TOPLEVEL_DHCP6 = 347,
+        TOKEN_SUB_DHCP6 = 348,
+        TOKEN_SUB_INTERFACES6 = 349,
+        TOKEN_SUB_SUBNET6 = 350,
+        TOKEN_SUB_POOL6 = 351,
+        TOKEN_SUB_PD_POOL = 352,
+        TOKEN_SUB_RESERVATION = 353,
+        TOKEN_SUB_OPTION_DEF = 354,
+        TOKEN_SUB_OPTION_DATA = 355,
+        TOKEN_SUB_HOOKS_LIBRARY = 356,
+        TOKEN_STRING = 357,
+        TOKEN_INTEGER = 358,
+        TOKEN_FLOAT = 359,
+        TOKEN_BOOLEAN = 360
       };
     };
 
@@ -831,6 +835,18 @@ namespace isc { namespace dhcp {
     symbol_type
     make_SERVER_ID (const location_type& l);
 
+    static inline
+    symbol_type
+    make_LLT (const location_type& l);
+
+    static inline
+    symbol_type
+    make_EN (const location_type& l);
+
+    static inline
+    symbol_type
+    make_LL (const location_type& l);
+
     static inline
     symbol_type
     make_IDENTIFIER (const location_type& l);
@@ -1164,12 +1180,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 630,     ///< Last index in yytable_.
-      yynnts_ = 271,  ///< Number of nonterminal symbols.
+      yylast_ = 640,     ///< Last index in yytable_.
+      yynnts_ = 275,  ///< Number of nonterminal symbols.
       yyfinal_ = 24, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 103  ///< Number of tokens.
+      yyntokens_ = 106  ///< Number of tokens.
     };
 
 
@@ -1221,9 +1237,10 @@ namespace isc { namespace dhcp {
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105
     };
-    const unsigned int user_token_number_max_ = 357;
+    const unsigned int user_token_number_max_ = 360;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1256,23 +1273,24 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 116: // value
+      case 119: // value
+      case 338: // duid_type
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 102: // "boolean"
+      case 105: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 101: // "floating point"
+      case 104: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 100: // "integer"
+      case 103: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 99: // "constant string"
+      case 102: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1293,23 +1311,24 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 116: // value
+      case 119: // value
+      case 338: // duid_type
         value.copy< ElementPtr > (v);
         break;
 
-      case 102: // "boolean"
+      case 105: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 101: // "floating point"
+      case 104: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 100: // "integer"
+      case 103: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 99: // "constant string"
+      case 102: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1389,23 +1408,24 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 116: // value
+      case 119: // value
+      case 338: // duid_type
         value.template destroy< ElementPtr > ();
         break;
 
-      case 102: // "boolean"
+      case 105: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 101: // "floating point"
+      case 104: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 100: // "integer"
+      case 103: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 99: // "constant string"
+      case 102: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1432,23 +1452,24 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 116: // value
+      case 119: // value
+      case 338: // duid_type
         value.move< ElementPtr > (s.value);
         break;
 
-      case 102: // "boolean"
+      case 105: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 101: // "floating point"
+      case 104: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 100: // "integer"
+      case 103: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 99: // "constant string"
+      case 102: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1517,7 +1538,7 @@ namespace isc { namespace dhcp {
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-     355,   356,   357
+     355,   356,   357,   358,   359,   360
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -1936,6 +1957,24 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_SERVER_ID, l);
   }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LLT (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LLT, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_EN (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_EN, l);
+  }
+
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_LL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_LL, l);
+  }
+
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_IDENTIFIER (const location_type& l)
   {
@@ -2131,7 +2170,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2135 "dhcp6_parser.h" // lalr1.cc:377
+#line 2174 "dhcp6_parser.h" // lalr1.cc:377
 
 
 
index 8cfe848f2370dfead776ccca2ea9f45bc8056d7d..6a149b33cbd4829097dbc54aab65fba11d4f6160 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201612201711
+// Generated 201701070039
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 085c486a176e78f4d9b3d18999687371c62446d6..dded956d62aae4cf2d247bf977dc4f08f840316f 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201612201711
+// Generated 201701070039
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index b5e1bf8eea8277285da0b8713c3f06e6ccbe1f15..5ffb6ac3a46e380a338005f430ade7173a45c2b9 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201612201711
+// Generated 201701070039
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++