]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[trac5096] regen flex/bison files
authorFrancis Dupont <fdupont@isc.org>
Tue, 10 Jan 2017 20:39:22 +0000 (20:39 +0000)
committerFrancis Dupont <fdupont@isc.org>
Tue, 10 Jan 2017 20:39:22 +0000 (20:39 +0000)
12 files changed:
src/bin/dhcp4/dhcp4_lexer.cc
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/location.hh
src/bin/dhcp4/position.hh
src/bin/dhcp4/stack.hh
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 fd40620e829c868bad8f0be156d60457826c84e1..5bb993936bc541bfce9784475072d3b028d4ce6e 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 107
-#define YY_END_OF_BUFFER 108
+#define YY_NUM_RULES 108
+#define YY_END_OF_BUFFER 109
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -476,93 +476,94 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[781] =
+static yyconst flex_int16_t yy_accept[784] =
     {   0,
-      100,  100,    0,    0,    0,    0,    0,    0,    0,    0,
-      108,  106,   10,   11,  106,    1,  100,   97,  100,  100,
-      106,   99,   98,  106,  106,  106,  106,  106,   93,   94,
-      106,  106,  106,   95,   96,    5,    5,    5,  106,  106,
-      106,   10,   11,    0,    0,   89,    0,    0,    0,    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,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    1,  100,  100,
-        0,   99,  100,    3,    2,    6,    0,  100,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,   90,
-        0,    0,    0,    0,    0,   92,    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,    0,   93,    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,    0,    2,
-        0,    0,    0,    0,    0,    0,    0,    8,    0,    0,
-        0,    0,    0,   91,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   43,    0,    0,    0,    0,    0,    0,
+        2,    0,    0,    0,    0,    0,    0,    0,    8,    0,
+        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,   44,    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,  105,
-      103,    0,  102,  101,    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,   23,
+        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,    0,    0,    0,    0,  105,  102,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   47,    0,    0,    0,   38,    0,    0,    0,    0,
+
+       59,    0,    0,    0,    0,   26,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   37,
+        0,    0,    0,    0,    0,    0,   40,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   57,   19,   24,    0,    0,    0,    0,    0,   12,
+       80,    0,    0,   68,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  104,  101,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   46,    0,
-        0,    0,   37,    0,    0,    0,    0,   58,    0,    0,
-
-        0,    0,   25,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   36,    0,    0,    0,
-        0,    0,    0,   39,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   56,   19,
-       23,    0,    0,    0,    0,    0,   12,   79,    0,    0,
-       67,    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,   21,    0,
-        0,    0,    0,    0,    0,   38,    0,    0,    0,    0,
-        0,   68,    0,    0,    0,    0,    0,   63,    0,    0,
+        0,   21,    0,    0,    0,    0,    0,    0,   39,    0,
+        0,    0,    0,    0,   69,    0,    0,    0,    0,    0,
 
-        7,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       64,    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,    0,    0,   51,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   40,
-        0,    0,    0,    0,    0,   48,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   52,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   41,    0,    0,    0,    0,    0,   49,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       72,   49,    0,   20,    0,    0,    0,    0,    0,   26,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   73,   50,    0,   20,    0,    0,    0,
+        0,    0,   27,    0,    0,    0,    0,    0,    0,    0,
 
-        0,   33,    0,    0,    0,   80,    0,    0,    0,    0,
+        0,    0,    0,    0,   34,    0,    0,    0,   81,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   62,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   24,    0,    0,   18,
-        0,    0,    0,    0,    0,   53,    0,    0,    0,    0,
-        0,    0,    0,    0,   60,    0,    0,    0,    0,    0,
-       78,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       41,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   63,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   25,
+        0,    0,   18,    0,    0,    0,    0,    0,   54,    0,
+        0,    0,    0,    0,    0,    0,    0,   61,    0,    0,
+        0,    0,    0,   79,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   42,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   83,    0,   61,    0,    0,    0,   64,
+        0,    0,    0,    0,    0,    0,   84,    0,   62,    0,
 
-       52,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       59,    0,   15,    0,   69,    0,    0,    0,    0,    0,
-       34,    0,   71,   22,    0,    0,    0,    0,    0,    0,
+        0,    0,   65,   53,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   60,    0,   15,    0,   70,    0,    0,
+        0,    0,    0,   35,    0,   72,   22,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   66,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   86,   35,    0,    0,    0,    0,   30,    0,
-        0,    0,   77,   76,    0,    0,    0,   55,    0,    0,
-        0,    0,    0,   74,    0,    0,    0,    0,    0,   42,
-        0,    0,   27,    0,    0,   44,   31,   65,    0,   57,
-        0,    0,   81,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   67,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   87,   36,    0,    0,    0,
+        0,   31,    0,    0,    0,   78,   77,    0,    0,    0,
+       56,    0,    0,    0,    0,    0,   75,    0,    0,    0,
+        0,    0,   43,    0,    0,   28,    0,    0,   45,   32,
+       66,    0,   58,    0,    0,   82,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   88,   54,    0,   75,    0,    0,   84,
-        0,    0,    0,   17,    0,   16,    0,   50,    0,    0,
-       29,    0,   28,    0,    0,    0,   70,    0,    0,   85,
-        0,   87,   82,    0,   14,    0,    0,    0,   45,    0,
-        0,    0,   13,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   89,   55,    0,   76,
+        0,    0,   85,    0,    0,    0,   17,    0,   16,    0,
+       51,    0,    0,   30,    0,   29,    0,    0,    0,   71,
+        0,    0,   86,    0,   88,   83,    0,   14,    0,    0,
+        0,   46,    0,    0,    0,   13,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   32,    0,    0,   73,    0,    0,    0,   47,    0
+        0,    0,    0,    0,   33,    0,    0,   74,    0,    0,
+        0,   48,    0
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -608,191 +609,191 @@ static yyconst YY_CHAR yy_meta[62] =
         3
     } ;
 
-static yyconst flex_uint16_t yy_base[792] =
+static yyconst flex_uint16_t yy_base[795] =
     {   0,
         0,    0,   60,   63,   66,    0,   64,   68,   65,   67,
-     1073, 1074,   84, 1069,  127,    0,  177, 1074,  182,  188,
-       81,  195, 1074, 1051,   88,   80,   64,  162, 1074, 1074,
-      179,  168,  177, 1074, 1074, 1074,  111, 1057, 1021,    0,
-     1049,  119, 1064,  207,  226, 1074, 1017, 1022, 1015,  254,
-     1011, 1013,  172,  184,  188,   68,  194,  207,  194,   82,
-      182,  219,  214,  243,   65, 1008, 1024,    0,  270,  289,
-      303,  308,  311, 1074,    0, 1074,  274,  322,  212,  231,
-      266,  270,  285,  284, 1074, 1021, 1052, 1074,  301, 1074,
-      327, 1041, 1018, 1013, 1048,    0,  369, 1001, 1003,  999,
-
-     1006,  302,  993,  994,  262, 1009, 1002, 1002, 1006,  993,
-      293, 1031, 1035,  986, 1028, 1002,  999,  999,  993,  980,
-      986,  979,  984,  972,  975,  974,  291,  975,  296,  976,
-      317,  300,  987,  988,  986,  969,  971,  980,  973,    0,
-      318,  331,  221,  333,  332,  348,  972, 1074,    0, 1006,
-      966,  973, 1008, 1074,  397,  977,  958,  973,  970,  969,
-      313,  997,  971,  951,  959,  954,  964,  953,  965,  956,
-      954,  944,  961, 1074,  956,  959,  941,  982,  940,  949,
-      952,  948,  937,  947,  932,  941,  934,  947,  929,  928,
-      934,  925,  934,  938,  932,  926,  938,  933,  932,  915,
-
-      930,  924,  930,  919,  912,  925,  912,  919,  349, 1074,
-     1074,  356, 1074, 1074,  907,    0,  351,  400,  917,  425,
-      901,  948,  903,  909,  950,  915,  902,  912,  946,  909,
-      906,  386,  943,  937,  897,  894,  892,  419,  905,  891,
-      903,  901,  896,  903,  898,  894,  892,  889,  928,  922,
-      883,  876,  883,  872,  884,  392,  885,  887,  876,  876,
-      871,  863,  864,  868,  879,  866,  877,  876,  875,  908,
-      907,  906,  872, 1074, 1074,  871,    0,  861,  853,  901,
-      900,  866,  856,  459,  897,  861,  857,  846, 1074,  861,
-      849,  848, 1074,  850,  847,  361,  845, 1074,  855,  839,
-
-      851,  879, 1074,  837,  852,  876,  847,  844,  845,  872,
-      834,  829,  828,  868,  832,  871, 1074,  823,  827,  820,
-      833,  823,  818, 1074,  864,  817,  857,  819,  827,  826,
-      858,  852,  806,  809,  816,  805,  852,  803, 1074, 1074,
-     1074,  845,  815,    0,  800,  816, 1074, 1074,  804,  809,
-     1074,  806,  795,  837,  793,  800,  793,  804,  803,  803,
-      792,  824,  793,  783,  798,  790,  795,  787,  794,  780,
-      795,  778,  790,  774,  768,  773,  787,  784, 1074,  783,
-      811,  324,  767,  768,  765, 1074,  778,  779,  770,  804,
-      803, 1074,  759,  776,  800,  756,  798, 1074,  411,  762,
-
-     1074,  767,  758,  752,  798,  757,  791,  413,  790,  789,
-      752,  742,  786,  748,  757,  783,  749,  746,  780,  746,
-      736,  748,  751,  746,  747,  744,  747,  742,  775,  774,
-      733,  772,  725,  737, 1074,  726,  734,  734,  766,  718,
-      721,  710,  714,  713,  722,  711,  721,  704,  404, 1074,
-      756,  717,  708,  719,  752, 1074,  717,  712,  709,  715,
-      699,  699,  715,  710,  699,  695,  702,  696,  705,  708,
-      697,  705,  701,  734,  685,  685,  697,  683,  681,  682,
-     1074, 1074,  689, 1074,  676,  363,  681,  678,  723, 1074,
-      677,  680,  720,  681,  665,  676,  678,  672,  714,  683,
-
-      659, 1074,  676,  675,  661, 1074,  703,  674,  676,  705,
-      666,  660,  654,  661,  654,  699,  664,  654,  654,  647,
-      660,  647,  646, 1074,  661,  643,  418,  642,  658,  637,
-      652,  651,  636,  648,  634,  634, 1074,  640,  638, 1074,
-      637,  633,  642,  632,  627, 1074,  632,  628,  637,  640,
-      669,  626,  667,  619, 1074,  624,  632,  663,  662,  618,
-     1074,  612,  613,  610,  623,  626,  625,  604,  622,  652,
-     1074,  613,  363,  650,  618,  618,  605,  600,  615,  644,
-      605,  642,  641,  602,  605,  604,  591,  594,  587,  600,
-      599,  584,  599, 1074,  600, 1074,  582,  594,  588, 1074,
-
-     1074,  595,  620,  576,  618,  622,  574,  574,  589,  588,
-     1074,  584, 1074,  584, 1074,  585,  574,  565,  612,  611,
-     1074,  567, 1074, 1074,  561,  562,  560,  606,  391,  563,
-      604,  603,  564,  567,  559,  436,  556,  564,  567,  548,
-      595,  556, 1074,  559,  554,  543,  543,  589,  545,  540,
-      586,  580, 1074, 1074,  542,  583,  582,  581, 1074,  539,
-      579,  548, 1074, 1074,  536,  421,  542, 1074,  528,  525,
-      525,  524,  518, 1074,  537,  522,   29,   48,  155, 1074,
-      160,  191, 1074,  199,  218, 1074, 1074, 1074,  279, 1074,
-      319,  336, 1074,  343,  422,  425,  389,  447,  410,  405,
-
-      450,  448,  407,  419,  463,  429,  471,  439,  473,  446,
-      446,  481,  449, 1074, 1074,  483, 1074,  441,  451, 1074,
-      442,  487,  446, 1074,  457, 1074,  496, 1074,  463,  498,
-     1074,  499, 1074,  458,  501,  456, 1074,  498,  468, 1074,
-      505, 1074, 1074,  501, 1074,  464,  470,  509, 1074,  466,
-      479,  479, 1074,  479,  480,  481,  470,  470,  476,  481,
-      473,  473,  479,  485,  486,  492,  484,  492,  528,  493,
-      492, 1074,  531,  498, 1074,  487,  487,  535, 1074, 1074,
-      541,  546,  551,  556,  561,  566,  569,  543,  548,  550,
-      563
+     1076, 1077,   84, 1072,  127,    0,  177, 1077,  182,  188,
+       81,  195, 1077, 1054,   88,   80,   64,  162, 1077, 1077,
+      179,  168,  177, 1077, 1077, 1077,  111, 1060, 1024,    0,
+     1052,  119, 1067,  207,  226, 1077, 1020, 1025, 1018,  254,
+     1014, 1016,  181,  202,  178,   68,  198,  210,  184,   82,
+      189,  248,  249,  243,   65, 1011, 1027,    0,  289,  300,
+      285,  306,  311, 1077,    0, 1077,  317,  322,  207,  264,
+      200,  293,  297,  216, 1077, 1024, 1055, 1077,  301, 1077,
+      335, 1044, 1021, 1016, 1051,    0,  377, 1004, 1006, 1002,
+
+     1009,  229, 1006,  995,  996,  307, 1011, 1004, 1004, 1008,
+      995,  300, 1033, 1037,  988, 1030, 1004, 1001, 1001,  995,
+      982,  988,  981,  986,  974,  977,  976,  302,  977,  303,
+      978,  321,  308,  989,  990,  988,  971,  973,  982,  975,
+        0,  313,  324,  323,  332,  336,  341,  974, 1077,    0,
+     1008,  968,  975, 1010, 1077,  405,  979,  960,  975,  972,
+      971,  263, 1004,  998,  972,  952,  960,  955,  965,  954,
+      966,  957,  955,  945,  962, 1077,  957,  960,  942,  983,
+      941,  950,  953,  949,  938,  948,  933,  942,  935,  948,
+      930,  929,  935,  926,  935,  939,  933,  927,  939,  934,
+
+      933,  916,  931,  925,  931,  920,  913,  926,  913,  920,
+      354, 1077, 1077,  355, 1077, 1077,  908,    0,  327,  381,
+      918,  433,  902,  949,  904,  910,  951,  916,  903, 1077,
+      913,  947,  910,  907,  362,  944,  938,  898,  895,  893,
+      427,  906,  892,  904,  902,  897,  904,  899,  895,  893,
+      890,  929,  923,  884,  877,  884,  873,  885,  322,  886,
+      888,  877,  877,  872,  864,  865,  869,  880,  867,  878,
+      877,  876,  909,  908,  907,  873, 1077, 1077,  872,    0,
+      862,  854,  902,  901,  867,  857,  467,  898,  862,  858,
+      847, 1077,  862,  850,  849, 1077,  851,  848,  369,  846,
+
+     1077,  856,  840,  852,  880, 1077,  838,  853,  877,  848,
+      845,  846,  873,  835,  830,  829,  869,  833,  872, 1077,
+      824,  828,  821,  834,  824,  819, 1077,  865,  818,  858,
+      820,  828,  827,  859,  853,  807,  810,  817,  806,  853,
+      804, 1077, 1077, 1077,  846,  816,    0,  801,  817, 1077,
+     1077,  805,  810, 1077,  807,  796,  838,  794,  801,  794,
+      805,  804,  804,  793,  825,  794,  784,  799,  791,  796,
+      788,  795,  781,  796,  779,  791,  775,  769,  774,  788,
+      785, 1077,  784,  812,  397,  768,  769,  766, 1077,  779,
+      780,  771,  805,  804, 1077,  760,  777,  801,  757,  799,
+
+     1077,  419,  763, 1077,  768,  759,  753,  799,  758,  792,
+      367,  791,  790,  753,  743,  787,  749,  758,  784,  750,
+      747,  781,  747,  737,  749,  752,  747,  748,  745,  748,
+      743,  776,  775,  734,  773,  726,  738, 1077,  727,  735,
+      735,  767,  719,  722,  711,  715,  714,  723,  712,  722,
+      705,  358, 1077,  757,  718,  709,  720,  753, 1077,  718,
+      713,  710,  716,  700,  700,  716,  711,  700,  696,  703,
+      697,  706,  709,  698,  706,  702,  735,  686,  686,  698,
+      684,  682,  683, 1077, 1077,  690, 1077,  677,  348,  682,
+      679,  724, 1077,  678,  681,  721,  682,  666,  677,  679,
+
+      673,  715,  684,  660, 1077,  677,  676,  662, 1077,  704,
+      675,  677,  706,  667,  661,  655,  662,  655,  700,  665,
+      655,  655,  648,  661,  648,  647, 1077,  662,  644,  425,
+      643,  659,  638,  653,  652,  637,  649,  635,  635, 1077,
+      641,  639, 1077,  638,  634,  643,  633,  628, 1077,  633,
+      629,  638,  641,  670,  627,  668,  620, 1077,  625,  633,
+      664,  663,  619, 1077,  613,  614,  611,  624,  627,  626,
+      605,  623,  653, 1077,  614,  250,  651,  619,  619,  606,
+      601,  616,  645,  606,  643,  642,  603,  606,  605,  592,
+      595,  588,  601,  600,  585,  600, 1077,  601, 1077,  583,
+
+      595,  589, 1077, 1077,  596,  621,  577,  619,  623,  575,
+      575,  590,  589, 1077,  585, 1077,  585, 1077,  586,  575,
+      566,  613,  612, 1077,  568, 1077, 1077,  562,  563,  561,
+      607,  398,  564,  605,  604,  565,  568,  560,  444,  557,
+      565,  568,  549,  596,  557, 1077,  560,  555,  544,  544,
+      590,  546,  541,  587,  581, 1077, 1077,  543,  584,  583,
+      582, 1077,  540,  580,  549, 1077, 1077,  537,  429,  543,
+     1077,  529,  526,  526,  525,  519, 1077,   30,   39,  155,
+      164,  178, 1077,  173,  218, 1077,  242,  333, 1077, 1077,
+     1077,  358, 1077,  363,  383, 1077,  380,  431,  433,  398,
+
+      447,  415,  410,  455,  451,  410,  415,  459,  425,  461,
+      429,  470,  438,  439,  479,  447, 1077, 1077,  481, 1077,
+      444,  454, 1077,  445,  490,  449, 1077,  454, 1077,  493,
+     1077,  460,  495, 1077,  496, 1077,  461,  504,  459, 1077,
+      501,  471, 1077,  508, 1077, 1077,  504, 1077,  467,  473,
+      512, 1077,  469,  482,  482, 1077,  482,  483,  484,  473,
+      473,  479,  484,  476,  476,  482,  488,  489,  495,  487,
+      495,  531,  496,  495, 1077,  534,  501, 1077,  490,  490,
+      538, 1077, 1077,  544,  549,  554,  559,  564,  569,  572,
+      546,  551,  553,  566
 
     } ;
 
-static yyconst flex_int16_t yy_def[792] =
+static yyconst flex_int16_t yy_def[795] =
     {   0,
-      780,    1,  781,  781,    1,    5,    5,    5,    5,    5,
-      780,  780,  780,  780,  780,  782,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  783,
-      780,  780,  780,  784,   15,  780,   45,   45,   45,  785,
+      783,    1,  784,  784,    1,    5,    5,    5,    5,    5,
+      783,  783,  783,  783,  783,  785,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  786,
+      783,  783,  783,  787,   15,  783,   45,   45,   45,  788,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,  782,  780,  780,
-      780,  780,  780,  780,  786,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  783,  780,  784,  780,
-      780,   45,   45,   45,  787,   45,  785,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,  785,  783,  783,
+      783,  783,  783,  783,  789,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  786,  783,  787,  783,
+      783,   45,   45,   45,  790,   45,  788,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,  786,
-      780,  780,  780,  780,  780,  780,  780,  780,  788,   45,
-       45,   45,  787,  780,  785,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,  780,   45,   45,   45,   45,   45,   45,
+      789,  783,  783,  783,  783,  783,  783,  783,  783,  791,
+       45,   45,   45,  790,  783,  788,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,  783,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45,  780,  780,
-      780,  780,  780,  780,  780,  789,   45,   45,   45,  785,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+      783,  783,  783,  783,  783,  783,  783,  792,   45,   45,
+       45,  788,   45,   45,   45,   45,   45,   45,   45,  783,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,  783,  783,  783,  793,
+       45,   45,   45,   45,   45,   45,  788,   45,   45,   45,
+       45,  783,   45,   45,   45,  783,   45,   45,   45,   45,
+
+      783,   45,   45,   45,   45,  783,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,  783,
+       45,   45,   45,   45,   45,   45,  783,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,  783,  783,  783,   45,  783,  794,   45,   45,  783,
+      783,   45,   45,  783,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,  780,  780,  780,  790,   45,   45,   45,
-       45,   45,   45,  785,   45,   45,   45,   45,  780,   45,
-       45,   45,  780,   45,   45,   45,   45,  780,   45,   45,
-
-       45,   45,  780,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,  780,   45,   45,   45,
-       45,   45,   45,  780,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,  780,  780,
-      780,   45,  780,  791,   45,   45,  780,  780,   45,   45,
-      780,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,  780,   45,
-       45,   45,   45,   45,   45,  780,   45,   45,   45,   45,
-       45,  780,   45,   45,   45,   45,   45,  780,   45,   45,
+       45,  783,   45,   45,   45,   45,   45,   45,  783,   45,
+       45,   45,   45,   45,  783,   45,   45,   45,   45,   45,
 
-      780,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+      783,   45,   45,  783,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,  780,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,  780,
-       45,   45,   45,   45,   45,  780,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,  783,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,  783,   45,   45,   45,   45,   45,  783,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-      780,  780,   45,  780,   45,   45,   45,   45,   45,  780,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,  783,  783,   45,  783,   45,   45,   45,
+       45,   45,  783,   45,   45,   45,   45,   45,   45,   45,
 
-       45,  780,   45,   45,   45,  780,   45,   45,   45,   45,
+       45,   45,   45,   45,  783,   45,   45,   45,  783,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,  780,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,  780,   45,   45,  780,
-       45,   45,   45,   45,   45,  780,   45,   45,   45,   45,
-       45,   45,   45,   45,  780,   45,   45,   45,   45,   45,
-      780,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-      780,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,  783,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,  783,
+       45,   45,  783,   45,   45,   45,   45,   45,  783,   45,
+       45,   45,   45,   45,   45,   45,   45,  783,   45,   45,
+       45,   45,   45,  783,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,  783,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,  780,   45,  780,   45,   45,   45,  780,
+       45,   45,   45,   45,   45,   45,  783,   45,  783,   45,
 
-      780,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-      780,   45,  780,   45,  780,   45,   45,   45,   45,   45,
-      780,   45,  780,  780,   45,   45,   45,   45,   45,   45,
+       45,   45,  783,  783,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,  783,   45,  783,   45,  783,   45,   45,
+       45,   45,   45,  783,   45,  783,  783,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,  780,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,  780,  780,   45,   45,   45,   45,  780,   45,
-       45,   45,  780,  780,   45,   45,   45,  780,   45,   45,
-       45,   45,   45,  780,   45,   45,   45,   45,   45,  780,
-       45,   45,  780,   45,   45,  780,  780,  780,   45,  780,
-       45,   45,  780,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,  783,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,  783,  783,   45,   45,   45,
+       45,  783,   45,   45,   45,  783,  783,   45,   45,   45,
+      783,   45,   45,   45,   45,   45,  783,   45,   45,   45,
+       45,   45,  783,   45,   45,  783,   45,   45,  783,  783,
+      783,   45,  783,   45,   45,  783,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,  780,  780,   45,  780,   45,   45,  780,
-       45,   45,   45,  780,   45,  780,   45,  780,   45,   45,
-      780,   45,  780,   45,   45,   45,  780,   45,   45,  780,
-       45,  780,  780,   45,  780,   45,   45,   45,  780,   45,
-       45,   45,  780,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,  783,  783,   45,  783,
+       45,   45,  783,   45,   45,   45,  783,   45,  783,   45,
+      783,   45,   45,  783,   45,  783,   45,   45,   45,  783,
+       45,   45,  783,   45,  783,  783,   45,  783,   45,   45,
+       45,  783,   45,   45,   45,  783,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,  780,   45,   45,  780,   45,   45,   45,  780,    0,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-      780
+       45,   45,   45,   45,  783,   45,   45,  783,   45,   45,
+       45,  783,    0,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783
 
     } ;
 
-static yyconst flex_uint16_t yy_nxt[1136] =
+static yyconst flex_uint16_t yy_nxt[1139] =
     {   0,
        12,   13,   14,   13,   12,   15,   16,   12,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   12,   12,
@@ -800,128 +801,128 @@ static yyconst flex_uint16_t yy_nxt[1136] =
        12,   29,   12,   30,   12,   12,   12,   12,   12,   25,
        31,   12,   12,   12,   12,   12,   12,   32,   12,   12,
        12,   12,   12,   33,   12,   12,   12,   12,   12,   34,
-       35,   37,   14,   37,   37,   14,   37,   38,  703,   40,
+       35,   37,   14,   37,   37,   14,   37,   38,  704,   40,
        38,   12,   12,   40,   12,   12,   12,   12,   12,   12,
        12,   12,   12,   12,   41,   42,   41,   42,   74,   12,
-       12,  704,   12,   75,   80,   12,   77,   12,   77,   12,
+       12,  705,   12,   75,   80,   12,   77,   12,   77,   12,
 
-       79,   78,   78,   78,  136,   12,   12,   12,   12,   39,
-       12,   12,   42,   12,   42,   79,  111,  123,   80,   12,
-       42,  124,   42,  137,  112,   12,   12,   44,   44,   44,
+       79,   78,   78,   78,  137,   12,   12,   12,   12,   39,
+       12,   12,   42,   12,   42,   79,  112,  124,   80,   12,
+       42,  125,   42,  138,  113,   12,   12,   44,   44,   44,
        45,   45,   46,   45,   45,   45,   45,   45,   45,   45,
        45,   47,   45,   45,   45,   45,   45,   45,   45,   48,
        45,   45,   49,   45,   45,   45,   45,   45,   45,   50,
        45,   45,   51,   52,   53,   54,   55,   45,   45,   56,
        57,   45,   58,   59,   60,   61,   62,   45,   63,   64,
        65,   66,   67,   45,   45,   45,   45,   45,   69,   81,
-       70,   70,   70,   69,  705,   72,   72,   72,   80,   79,
-
-       71,   73,   73,   73,   81,   71,   69,  706,   72,   72,
-       72,   71,   90,   81,   82,  100,   71,  101,   71,  104,
-      102,   71,   83,  105,  103,  108,  106,   71,   84,  120,
-      707,  125,  113,  121,   71,  109,  126,  141,  107,   91,
-       45,  114,  708,  115,  211,  110,  116,  117,   45,  130,
-      118,   45,  122,  131,  127,  119,  142,  141,  128,   96,
-      211,   45,   45,   45,   45,   45,   45,  129,   45,   45,
-      709,   45,   45,   45,   45,   45,  142,   45,   45,   45,
-       45,   45,  132,   73,   73,   73,   45,   78,   78,   78,
-       45,  133,  134,   71,   45,  141,  143,  135,  164,  165,
-
-       69,   45,   70,   70,   70,   45,   90,   45,   97,   71,
-      142,   77,   71,   77,  143,  144,   78,   78,   78,   69,
-      143,   72,   72,   72,   73,   73,   73,  710,   71,  435,
-      145,   71,   89,   91,   71,   78,   78,   78,  146,   89,
-      160,  171,  188,  189,  191,  172,  209,   71,  192,  161,
-       71,  200,  194,  195,  196,  201,  210,  210,  436,   89,
-      226,  209,  197,   89,  198,  711,  227,   89,  613,  199,
-      209,  211,  274,  614,   89,  712,  210,  213,   89,  274,
-       89,  149,  155,  155,  155,  212,  713,  214,  274,  155,
-      155,  155,  155,  155,  278,  275,  296,  324,  533,  360,
-
-      297,  660,  534,  279,  155,  155,  155,  155,  155,  155,
-      220,  220,  220,  361,  280,  281,  450,  220,  220,  220,
-      220,  220,  282,  571,  303,  451,  693,  714,  572,  304,
-      715,  694,  220,  220,  220,  220,  220,  220,  284,  284,
-      284,  668,  716,  661,  325,  284,  284,  284,  284,  284,
-      459,  500,  717,  718,  719,  720,  460,  501,  721,  722,
-      284,  284,  284,  284,  284,  284,  305,  723,  724,  725,
-      573,  306,   45,   45,   45,  669,  726,  727,  728,   45,
-       45,   45,   45,   45,  729,  730,  731,  732,  733,  734,
-      735,  736,  737,  738,   45,   45,   45,   45,   45,   45,
-
-      739,  740,  741,  742,  743,  744,  745,  746,  747,  748,
+       70,   70,   70,   69,  706,   72,   72,   72,   80,   79,
+
+       71,   73,   73,   73,   81,   71,   69,  707,   72,   72,
+       72,   71,   90,   81,   82,  109,   71,  708,   71,  121,
+      709,   71,   83,  122,  100,  110,  101,   71,   84,  102,
+      144,  103,  142,  104,   71,  111,  114,  105,  126,   91,
+       45,  106,  123,  127,  107,  115,  144,  116,   45,  117,
+      118,   45,  142,  119,  144,  616,  108,  710,  120,   96,
+      617,   45,   45,   45,   45,   45,   45,  161,   45,   45,
+      147,   45,   45,   45,   45,   45,  162,   45,   45,   45,
+       45,   45,  133,  128,  131,  711,   45,  129,  132,  143,
+       45,  134,  135,   77,   45,   77,  130,  136,   78,   78,
+
+       78,   45,   73,   73,   73,   45,   90,   45,   97,  143,
+      228,   69,   71,   70,   70,   70,  229,   69,  142,   72,
+       72,   72,  143,   71,   73,   73,   73,  327,   71,   71,
+       78,   78,   78,   91,   71,   78,   78,   78,  145,   71,
+       89,  211,  146,  166,  167,   71,  213,   89,  173,  212,
+       71,  193,  174,  190,  191,  194,  196,  197,  198,  202,
+      211,  212,  213,  203,  213,  211,  199,   89,  200,  212,
+      281,   89,  299,  201,  328,   89,  300,  277,  277,  282,
+      216,  215,   89,  536,  214,  712,   89,  537,   89,  150,
+      156,  156,  156,  277,  278,  283,  284,  156,  156,  156,
+
+      156,  156,  438,  285,  462,  503,  713,  363,  663,  714,
+      463,  504,  156,  156,  156,  156,  156,  156,  222,  222,
+      222,  364,  715,  716,  453,  222,  222,  222,  222,  222,
+      574,  439,  306,  454,  696,  575,  717,  307,  718,  697,
+      222,  222,  222,  222,  222,  222,  287,  287,  287,  671,
+      664,  719,  720,  287,  287,  287,  287,  287,  721,  722,
+      723,  724,  725,  726,  727,  728,  729,  730,  287,  287,
+      287,  287,  287,  287,  308,  731,  732,  576,  733,  309,
+       45,   45,   45,  672,  734,  735,  736,   45,   45,   45,
+       45,   45,  737,  738,  739,  740,  741,  742,  743,  744,
+
+      745,  746,   45,   45,   45,   45,   45,   45,  747,  748,
       749,  750,  751,  752,  753,  754,  755,  756,  757,  758,
       759,  760,  761,  762,  763,  764,  765,  766,  767,  768,
       769,  770,  771,  772,  773,  774,  775,  776,  777,  778,
-      779,   36,   36,   36,   36,   36,   68,  216,   68,   68,
-       68,   87,  277,   87,  344,   87,   89,   89,   89,   89,
-       89,   95,   95,   95,   95,   95,  140,   89,  140,  140,
-      140,  153,  153,  153,  702,  701,  700,  699,  698,  697,
-      696,  695,  692,  691,  690,  689,  688,  687,  686,  685,
-      684,  683,  682,  681,  680,  679,  678,  677,  676,  675,
-
-      674,  673,  672,  671,  670,  667,  666,  665,  664,  663,
-      662,  659,  658,  657,  656,  655,  654,  653,  652,  651,
-      650,  649,  648,  647,  646,  645,  644,  643,  642,  641,
-      640,  639,  638,  637,  636,  635,  634,  633,  632,  631,
-      630,  629,  628,  627,  626,  625,  624,  623,  622,  621,
-      620,  619,  618,  617,  616,  615,  612,  611,  610,  609,
-      608,  607,  606,  605,  604,  603,  602,  601,  600,  599,
-      598,  597,  596,  595,  594,  593,  592,  591,  590,  589,
-      588,  587,  586,  585,  584,  583,  582,  581,  580,  579,
-      578,  577,  576,  575,  574,  570,  569,  568,  567,  566,
-
-      565,  564,  563,  562,  561,  560,  559,  558,  557,  556,
-      555,  554,  553,  552,  551,  550,  549,  548,  547,  546,
-      545,  544,  543,  542,  541,  540,  539,  538,  537,  536,
-      535,  532,  531,  530,  529,  528,  527,  526,  525,  524,
-      523,  522,  521,  520,  519,  518,  517,  516,  515,  514,
-      513,  512,  511,  510,  509,  508,  507,  506,  505,  504,
-      503,  502,  499,  498,  497,  496,  495,  494,  493,  492,
-      491,  490,  489,  488,  487,  486,  485,  484,  483,  482,
-      481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
-      471,  470,  469,  468,  467,  466,  465,  464,  463,  462,
-
-      461,  458,  457,  456,  455,  454,  453,  452,  449,  448,
-      447,  446,  445,  444,  443,  442,  441,  440,  439,  438,
-      437,  434,  433,  432,  431,  430,  429,  428,  427,  426,
-      425,  424,  423,  422,  421,  420,  419,  418,  417,  416,
-      415,  414,  413,  412,  411,  410,  409,  408,  407,  406,
-      405,  404,  403,  402,  401,  400,  399,  398,  397,  396,
-      395,  394,  393,  392,  391,  390,  389,  388,  387,  386,
-      385,  384,  383,  382,  381,  380,  379,  378,  377,  376,
-      375,  374,  373,  372,  371,  370,  369,  368,  367,  366,
-      365,  364,  363,  362,  359,  358,  357,  356,  355,  354,
-
-      353,  352,  351,  350,  349,  348,  347,  346,  345,  343,
-      342,  341,  340,  339,  338,  337,  336,  335,  334,  333,
-      332,  331,  330,  329,  328,  327,  326,  323,  322,  321,
-      320,  319,  318,  317,  316,  315,  314,  313,  312,  311,
-      310,  309,  308,  307,  302,  301,  300,  299,  298,  295,
-      294,  293,  292,  291,  290,  289,  288,  287,  286,  285,
-      283,  276,  273,  272,  271,  270,  269,  268,  267,  266,
-      265,  264,  263,  262,  261,  260,  259,  258,  257,  256,
-      255,  254,  253,  252,  251,  250,  249,  248,  247,  246,
-      245,  244,  243,  242,  241,  240,  239,  238,  237,  236,
-
-      235,  234,  233,  232,  231,  230,  229,  228,  225,  224,
-      223,  222,  221,  154,  219,  218,  217,  215,  208,  207,
-      206,  205,  204,  203,  202,  193,  190,  187,  186,  185,
-      184,  183,  182,  181,  180,  179,  178,  177,  176,  175,
-      174,  173,  170,  169,  168,  167,  166,  163,  162,  159,
-      158,  157,  156,  154,  152,  151,  150,  148,  147,  139,
-      138,   99,   98,   94,   93,   92,   43,   88,   86,   85,
-       76,   43,  780,   11,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780
+      779,  780,  781,  782,   36,   36,   36,   36,   36,   68,
+      218,   68,   68,   68,   87,  280,   87,  347,   87,   89,
+       89,   89,   89,   89,   95,   95,   95,   95,   95,  141,
+       89,  141,  141,  141,  154,  154,  154,  703,  702,  701,
+      700,  699,  698,  695,  694,  693,  692,  691,  690,  689,
+      688,  687,  686,  685,  684,  683,  682,  681,  680,  679,
+
+      678,  677,  676,  675,  674,  673,  670,  669,  668,  667,
+      666,  665,  662,  661,  660,  659,  658,  657,  656,  655,
+      654,  653,  652,  651,  650,  649,  648,  647,  646,  645,
+      644,  643,  642,  641,  640,  639,  638,  637,  636,  635,
+      634,  633,  632,  631,  630,  629,  628,  627,  626,  625,
+      624,  623,  622,  621,  620,  619,  618,  615,  614,  613,
+      612,  611,  610,  609,  608,  607,  606,  605,  604,  603,
+      602,  601,  600,  599,  598,  597,  596,  595,  594,  593,
+      592,  591,  590,  589,  588,  587,  586,  585,  584,  583,
+      582,  581,  580,  579,  578,  577,  573,  572,  571,  570,
+
+      569,  568,  567,  566,  565,  564,  563,  562,  561,  560,
+      559,  558,  557,  556,  555,  554,  553,  552,  551,  550,
+      549,  548,  547,  546,  545,  544,  543,  542,  541,  540,
+      539,  538,  535,  534,  533,  532,  531,  530,  529,  528,
+      527,  526,  525,  524,  523,  522,  521,  520,  519,  518,
+      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
+      507,  506,  505,  502,  501,  500,  499,  498,  497,  496,
+      495,  494,  493,  492,  491,  490,  489,  488,  487,  486,
+      485,  484,  483,  482,  481,  480,  479,  478,  477,  476,
+      475,  474,  473,  472,  471,  470,  469,  468,  467,  466,
+
+      465,  464,  461,  460,  459,  458,  457,  456,  455,  452,
+      451,  450,  449,  448,  447,  446,  445,  444,  443,  442,
+      441,  440,  437,  436,  435,  434,  433,  432,  431,  430,
+      429,  428,  427,  426,  425,  424,  423,  422,  421,  420,
+      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
+      409,  408,  407,  406,  405,  404,  403,  402,  401,  400,
+      399,  398,  397,  396,  395,  394,  393,  392,  391,  390,
+      389,  388,  387,  386,  385,  384,  383,  382,  381,  380,
+      379,  378,  377,  376,  375,  374,  373,  372,  371,  370,
+      369,  368,  367,  366,  365,  362,  361,  360,  359,  358,
+
+      357,  356,  355,  354,  353,  352,  351,  350,  349,  348,
+      346,  345,  344,  343,  342,  341,  340,  339,  338,  337,
+      336,  335,  334,  333,  332,  331,  330,  329,  326,  325,
+      324,  323,  322,  321,  320,  319,  318,  317,  316,  315,
+      314,  313,  312,  311,  310,  305,  304,  303,  302,  301,
+      298,  297,  296,  295,  294,  293,  292,  291,  290,  289,
+      288,  286,  279,  276,  275,  274,  273,  272,  271,  270,
+      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
+      259,  258,  257,  256,  255,  254,  253,  252,  251,  250,
+      249,  248,  247,  246,  245,  244,  243,  242,  241,  240,
+
+      239,  238,  237,  236,  235,  234,  233,  232,  231,  230,
+      227,  226,  225,  224,  223,  155,  221,  220,  219,  217,
+      210,  209,  208,  207,  206,  205,  204,  195,  192,  189,
+      188,  187,  186,  185,  184,  183,  182,  181,  180,  179,
+      178,  177,  176,  175,  172,  171,  170,  169,  168,  165,
+      164,  163,  160,  159,  158,  157,  155,  153,  152,  151,
+      149,  148,  140,  139,   99,   98,   94,   93,   92,   43,
+       88,   86,   85,   76,   43,  783,   11,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783
     } ;
 
-static yyconst flex_int16_t yy_chk[1136] =
+static yyconst flex_int16_t yy_chk[1139] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -929,10 +930,10 @@ static yyconst flex_int16_t yy_chk[1136] =
         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,    3,    3,    3,    4,    4,    4,    3,  677,    7,
+        1,    3,    3,    3,    4,    4,    4,    3,  678,    7,
         4,    5,    5,    8,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    9,   13,   10,   13,   21,    5,
-        5,  678,    5,   21,   27,    5,   25,    5,   25,    5,
+        5,  679,    5,   21,   27,    5,   25,    5,   25,    5,
 
        26,   25,   25,   25,   65,    5,    5,    7,    9,    5,
        10,    8,   37,    5,   37,   26,   56,   60,   27,    5,
@@ -943,111 +944,111 @@ static yyconst flex_int16_t yy_chk[1136] =
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   17,   28,
-       17,   17,   17,   19,  679,   19,   19,   19,   32,   31,
+       17,   17,   17,   19,  680,   19,   19,   19,   32,   31,
 
        17,   20,   20,   20,   33,   19,   22,  681,   22,   22,
-       22,   20,   44,   28,   31,   53,   17,   53,   22,   54,
-       53,   19,   32,   54,   53,   55,   54,   20,   33,   59,
-      682,   61,   57,   59,   22,   55,   61,   79,   54,   44,
-       45,   57,  684,   57,  143,   55,   58,   58,   45,   63,
-       58,   45,   59,   63,   62,   58,   80,   79,   62,   50,
-      143,   45,   45,   45,   45,   45,   50,   62,   45,   45,
-      685,   45,   45,   45,   45,   45,   80,   45,   45,   45,
-       45,   45,   64,   69,   69,   69,   50,   77,   77,   77,
-       50,   64,   64,   69,   50,   82,   81,   64,  105,  105,
-
-       70,   50,   70,   70,   70,   50,   89,   50,   50,   69,
-       83,   71,   70,   71,   84,   82,   71,   71,   71,   72,
-       81,   72,   72,   72,   73,   73,   73,  689,   70,  382,
-       83,   72,   91,   89,   73,   78,   78,   78,   84,   91,
-      102,  111,  127,  127,  129,  111,  141,   72,  129,  102,
-       73,  132,  131,  131,  131,  132,  142,  145,  382,   91,
-      161,  144,  131,   91,  131,  691,  161,   91,  573,  131,
-      141,  146,  209,  573,   91,  692,  142,  145,   91,  212,
-       91,   91,   97,   97,   97,  144,  694,  146,  209,   97,
-       97,   97,   97,   97,  217,  212,  232,  256,  486,  296,
-
-      232,  629,  486,  217,   97,   97,   97,   97,   97,   97,
-      155,  155,  155,  296,  218,  218,  399,  155,  155,  155,
-      155,  155,  218,  527,  238,  399,  666,  695,  527,  238,
-      696,  666,  155,  155,  155,  155,  155,  155,  220,  220,
-      220,  636,  697,  629,  256,  220,  220,  220,  220,  220,
-      408,  449,  698,  699,  700,  701,  408,  449,  702,  703,
-      220,  220,  220,  220,  220,  220,  238,  704,  705,  706,
-      527,  238,  284,  284,  284,  636,  707,  708,  709,  284,
-      284,  284,  284,  284,  710,  711,  712,  713,  716,  718,
-      719,  721,  722,  723,  284,  284,  284,  284,  284,  284,
-
-      725,  727,  729,  730,  732,  734,  735,  736,  738,  739,
-      741,  744,  746,  747,  748,  750,  751,  752,  754,  755,
-      756,  757,  758,  759,  760,  761,  762,  763,  764,  765,
-      766,  767,  768,  769,  770,  771,  773,  774,  776,  777,
-      778,  781,  781,  781,  781,  781,  782,  788,  782,  782,
-      782,  783,  789,  783,  790,  783,  784,  784,  784,  784,
-      784,  785,  785,  785,  785,  785,  786,  791,  786,  786,
-      786,  787,  787,  787,  676,  675,  673,  672,  671,  670,
-      669,  667,  665,  662,  661,  660,  658,  657,  656,  655,
-      652,  651,  650,  649,  648,  647,  646,  645,  644,  642,
-
-      641,  640,  639,  638,  637,  635,  634,  633,  632,  631,
-      630,  628,  627,  626,  625,  622,  620,  619,  618,  617,
-      616,  614,  612,  610,  609,  608,  607,  606,  605,  604,
-      603,  602,  599,  598,  597,  595,  593,  592,  591,  590,
-      589,  588,  587,  586,  585,  584,  583,  582,  581,  580,
-      579,  578,  577,  576,  575,  574,  572,  570,  569,  568,
-      567,  566,  565,  564,  563,  562,  560,  559,  558,  557,
-      556,  554,  553,  552,  551,  550,  549,  548,  547,  545,
-      544,  543,  542,  541,  539,  538,  536,  535,  534,  533,
-      532,  531,  530,  529,  528,  526,  525,  523,  522,  521,
-
-      520,  519,  518,  517,  516,  515,  514,  513,  512,  511,
-      510,  509,  508,  507,  505,  504,  503,  501,  500,  499,
-      498,  497,  496,  495,  494,  493,  492,  491,  489,  488,
-      487,  485,  483,  480,  479,  478,  477,  476,  475,  474,
-      473,  472,  471,  470,  469,  468,  467,  466,  465,  464,
-      463,  462,  461,  460,  459,  458,  457,  455,  454,  453,
-      452,  451,  448,  447,  446,  445,  444,  443,  442,  441,
-      440,  439,  438,  437,  436,  434,  433,  432,  431,  430,
-      429,  428,  427,  426,  425,  424,  423,  422,  421,  420,
-      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
-
-      409,  407,  406,  405,  404,  403,  402,  400,  397,  396,
-      395,  394,  393,  391,  390,  389,  388,  387,  385,  384,
-      383,  381,  380,  378,  377,  376,  375,  374,  373,  372,
-      371,  370,  369,  368,  367,  366,  365,  364,  363,  362,
-      361,  360,  359,  358,  357,  356,  355,  354,  353,  352,
-      350,  349,  346,  345,  343,  342,  338,  337,  336,  335,
-      334,  333,  332,  331,  330,  329,  328,  327,  326,  325,
-      323,  322,  321,  320,  319,  318,  316,  315,  314,  313,
-      312,  311,  310,  309,  308,  307,  306,  305,  304,  302,
-      301,  300,  299,  297,  295,  294,  292,  291,  290,  288,
-
-      287,  286,  285,  283,  282,  281,  280,  279,  278,  276,
-      273,  272,  271,  270,  269,  268,  267,  266,  265,  264,
-      263,  262,  261,  260,  259,  258,  257,  255,  254,  253,
-      252,  251,  250,  249,  248,  247,  246,  245,  244,  243,
-      242,  241,  240,  239,  237,  236,  235,  234,  233,  231,
-      230,  229,  228,  227,  226,  225,  224,  223,  222,  221,
-      219,  215,  208,  207,  206,  205,  204,  203,  202,  201,
-      200,  199,  198,  197,  196,  195,  194,  193,  192,  191,
-      190,  189,  188,  187,  186,  185,  184,  183,  182,  181,
-      180,  179,  178,  177,  176,  175,  173,  172,  171,  170,
-
-      169,  168,  167,  166,  165,  164,  163,  162,  160,  159,
-      158,  157,  156,  153,  152,  151,  150,  147,  139,  138,
-      137,  136,  135,  134,  133,  130,  128,  126,  125,  124,
-      123,  122,  121,  120,  119,  118,  117,  116,  115,  114,
-      113,  112,  110,  109,  108,  107,  106,  104,  103,  101,
-      100,   99,   98,   95,   94,   93,   92,   87,   86,   67,
-       66,   52,   51,   49,   48,   47,   43,   41,   39,   38,
-       24,   14,   11,  780,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780,  780,  780,  780,  780,  780,
-      780,  780,  780,  780,  780
+       22,   20,   44,   28,   31,   55,   17,  682,   22,   59,
+      684,   19,   32,   59,   53,   55,   53,   20,   33,   53,
+       81,   53,   79,   53,   22,   55,   57,   54,   61,   44,
+       45,   54,   59,   61,   54,   57,   84,   57,   45,   58,
+       58,   45,   79,   58,   81,  576,   54,  685,   58,   50,
+      576,   45,   45,   45,   45,   45,   50,  102,   45,   45,
+       84,   45,   45,   45,   45,   45,  102,   45,   45,   45,
+       45,   45,   64,   62,   63,  687,   50,   62,   63,   80,
+       50,   64,   64,   71,   50,   71,   62,   64,   71,   71,
+
+       71,   50,   69,   69,   69,   50,   89,   50,   50,   80,
+      162,   70,   69,   70,   70,   70,  162,   72,   82,   72,
+       72,   72,   83,   70,   73,   73,   73,  259,   69,   72,
+       77,   77,   77,   89,   73,   78,   78,   78,   82,   70,
+       91,  142,   83,  106,  106,   72,  144,   91,  112,  143,
+       73,  130,  112,  128,  128,  130,  132,  132,  132,  133,
+      145,  146,  144,  133,  147,  142,  132,   91,  132,  143,
+      219,   91,  235,  132,  259,   91,  235,  211,  214,  219,
+      147,  146,   91,  489,  145,  688,   91,  489,   91,   91,
+       97,   97,   97,  211,  214,  220,  220,   97,   97,   97,
+
+       97,   97,  385,  220,  411,  452,  692,  299,  632,  694,
+      411,  452,   97,   97,   97,   97,   97,   97,  156,  156,
+      156,  299,  695,  697,  402,  156,  156,  156,  156,  156,
+      530,  385,  241,  402,  669,  530,  698,  241,  699,  669,
+      156,  156,  156,  156,  156,  156,  222,  222,  222,  639,
+      632,  700,  701,  222,  222,  222,  222,  222,  702,  703,
+      704,  705,  706,  707,  708,  709,  710,  711,  222,  222,
+      222,  222,  222,  222,  241,  712,  713,  530,  714,  241,
+      287,  287,  287,  639,  715,  716,  719,  287,  287,  287,
+      287,  287,  721,  722,  724,  725,  726,  728,  730,  732,
+
+      733,  735,  287,  287,  287,  287,  287,  287,  737,  738,
+      739,  741,  742,  744,  747,  749,  750,  751,  753,  754,
+      755,  757,  758,  759,  760,  761,  762,  763,  764,  765,
+      766,  767,  768,  769,  770,  771,  772,  773,  774,  776,
+      777,  779,  780,  781,  784,  784,  784,  784,  784,  785,
+      791,  785,  785,  785,  786,  792,  786,  793,  786,  787,
+      787,  787,  787,  787,  788,  788,  788,  788,  788,  789,
+      794,  789,  789,  789,  790,  790,  790,  676,  675,  674,
+      673,  672,  670,  668,  665,  664,  663,  661,  660,  659,
+      658,  655,  654,  653,  652,  651,  650,  649,  648,  647,
+
+      645,  644,  643,  642,  641,  640,  638,  637,  636,  635,
+      634,  633,  631,  630,  629,  628,  625,  623,  622,  621,
+      620,  619,  617,  615,  613,  612,  611,  610,  609,  608,
+      607,  606,  605,  602,  601,  600,  598,  596,  595,  594,
+      593,  592,  591,  590,  589,  588,  587,  586,  585,  584,
+      583,  582,  581,  580,  579,  578,  577,  575,  573,  572,
+      571,  570,  569,  568,  567,  566,  565,  563,  562,  561,
+      560,  559,  557,  556,  555,  554,  553,  552,  551,  550,
+      548,  547,  546,  545,  544,  542,  541,  539,  538,  537,
+      536,  535,  534,  533,  532,  531,  529,  528,  526,  525,
+
+      524,  523,  522,  521,  520,  519,  518,  517,  516,  515,
+      514,  513,  512,  511,  510,  508,  507,  506,  504,  503,
+      502,  501,  500,  499,  498,  497,  496,  495,  494,  492,
+      491,  490,  488,  486,  483,  482,  481,  480,  479,  478,
+      477,  476,  475,  474,  473,  472,  471,  470,  469,  468,
+      467,  466,  465,  464,  463,  462,  461,  460,  458,  457,
+      456,  455,  454,  451,  450,  449,  448,  447,  446,  445,
+      444,  443,  442,  441,  440,  439,  437,  436,  435,  434,
+      433,  432,  431,  430,  429,  428,  427,  426,  425,  424,
+      423,  422,  421,  420,  419,  418,  417,  416,  415,  414,
+
+      413,  412,  410,  409,  408,  407,  406,  405,  403,  400,
+      399,  398,  397,  396,  394,  393,  392,  391,  390,  388,
+      387,  386,  384,  383,  381,  380,  379,  378,  377,  376,
+      375,  374,  373,  372,  371,  370,  369,  368,  367,  366,
+      365,  364,  363,  362,  361,  360,  359,  358,  357,  356,
+      355,  353,  352,  349,  348,  346,  345,  341,  340,  339,
+      338,  337,  336,  335,  334,  333,  332,  331,  330,  329,
+      328,  326,  325,  324,  323,  322,  321,  319,  318,  317,
+      316,  315,  314,  313,  312,  311,  310,  309,  308,  307,
+      305,  304,  303,  302,  300,  298,  297,  295,  294,  293,
+
+      291,  290,  289,  288,  286,  285,  284,  283,  282,  281,
+      279,  276,  275,  274,  273,  272,  271,  270,  269,  268,
+      267,  266,  265,  264,  263,  262,  261,  260,  258,  257,
+      256,  255,  254,  253,  252,  251,  250,  249,  248,  247,
+      246,  245,  244,  243,  242,  240,  239,  238,  237,  236,
+      234,  233,  232,  231,  229,  228,  227,  226,  225,  224,
+      223,  221,  217,  210,  209,  208,  207,  206,  205,  204,
+      203,  202,  201,  200,  199,  198,  197,  196,  195,  194,
+      193,  192,  191,  190,  189,  188,  187,  186,  185,  184,
+      183,  182,  181,  180,  179,  178,  177,  175,  174,  173,
+
+      172,  171,  170,  169,  168,  167,  166,  165,  164,  163,
+      161,  160,  159,  158,  157,  154,  153,  152,  151,  148,
+      140,  139,  138,  137,  136,  135,  134,  131,  129,  127,
+      126,  125,  124,  123,  122,  121,  120,  119,  118,  117,
+      116,  115,  114,  113,  111,  110,  109,  108,  107,  105,
+      104,  103,  101,  100,   99,   98,   95,   94,   93,   92,
+       87,   86,   67,   66,   52,   51,   49,   48,   47,   43,
+       41,   39,   38,   24,   14,   11,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783,  783,  783,
+      783,  783,  783,  783,  783,  783,  783,  783
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1056,20 +1057,20 @@ static char *yy_last_accepting_cpos;
 extern int parser4__flex_debug;
 int parser4__flex_debug = 1;
 
-static yyconst flex_int16_t yy_rule_linenum[107] =
+static yyconst flex_int16_t yy_rule_linenum[108] =
     {   0,
       128,  130,  132,  137,  138,  143,  144,  145,  157,  160,
       165,  172,  181,  190,  199,  208,  217,  226,  235,  246,
-      255,  264,  273,  283,  293,  303,  313,  323,  333,  343,
-      353,  363,  372,  381,  390,  404,  419,  428,  437,  446,
-      455,  464,  473,  482,  491,  500,  510,  519,  528,  537,
-      546,  555,  564,  573,  583,  593,  603,  612,  622,  632,
-      642,  652,  661,  671,  680,  689,  698,  707,  716,  726,
-      736,  745,  754,  763,  772,  781,  790,  799,  808,  817,
-      826,  835,  844,  853,  863,  873,  885,  896,  909, 1007,
-     1012, 1017, 1022, 1023, 1024, 1025, 1026, 1027, 1029, 1047,
-
-     1060, 1065, 1069, 1071, 1073, 1075
+      255,  264,  273,  282,  292,  302,  312,  322,  332,  342,
+      352,  362,  372,  381,  390,  399,  413,  428,  437,  446,
+      455,  464,  473,  482,  491,  500,  509,  519,  528,  537,
+      546,  555,  564,  573,  582,  592,  602,  612,  621,  631,
+      641,  651,  661,  670,  680,  689,  698,  707,  716,  725,
+      735,  745,  754,  763,  772,  781,  790,  799,  808,  817,
+      826,  835,  844,  853,  862,  872,  882,  894,  905,  918,
+     1016, 1021, 1026, 1031, 1032, 1033, 1034, 1035, 1036, 1038,
+
+     1056, 1069, 1074, 1078, 1080, 1082, 1084
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1140,7 +1141,7 @@ unsigned int comment_start_line = 0;
 // by moving it ahead by parser4_leng bytes. parser4_leng specifies the length of the
 // currently matched token.
 #define YY_USER_ACTION  driver.loc_.columns(parser4_leng);
-#line 1144 "dhcp4_lexer.cc"
+#line 1145 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1464,7 +1465,7 @@ YY_DECL
     }
 
 
-#line 1468 "dhcp4_lexer.cc"
+#line 1469 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1493,13 +1494,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 >= 781 )
+                               if ( yy_current_state >= 784 )
                                        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 != 780 );
+               while ( yy_current_state != 783 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1518,13 +1519,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 < 107 )
+                       else if ( yy_act < 108 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], parser4_text );
-                       else if ( yy_act == 107 )
+                       else if ( yy_act == 108 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         parser4_text );
-                       else if ( yy_act == 108 )
+                       else if ( yy_act == 109 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1765,6 +1766,18 @@ YY_RULE_SETUP
 case 23:
 YY_RULE_SETUP
 #line 273 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::DATABASE_TYPE:
+        return isc::dhcp::Dhcp4Parser::make_CQL(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("cql", driver.loc_);
+    }
+}
+       YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 282 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1775,9 +1788,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 24:
+case 25:
 YY_RULE_SETUP
-#line 283 "dhcp4_lexer.ll"
+#line 292 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1788,9 +1801,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 25:
+case 26:
 YY_RULE_SETUP
-#line 293 "dhcp4_lexer.ll"
+#line 302 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1801,9 +1814,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 26:
+case 27:
 YY_RULE_SETUP
-#line 303 "dhcp4_lexer.ll"
+#line 312 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1814,9 +1827,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 27:
+case 28:
 YY_RULE_SETUP
-#line 313 "dhcp4_lexer.ll"
+#line 322 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1827,9 +1840,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 28:
+case 29:
 YY_RULE_SETUP
-#line 323 "dhcp4_lexer.ll"
+#line 332 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1840,9 +1853,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 29:
+case 30:
 YY_RULE_SETUP
-#line 333 "dhcp4_lexer.ll"
+#line 342 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1853,9 +1866,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 30:
+case 31:
 YY_RULE_SETUP
-#line 343 "dhcp4_lexer.ll"
+#line 352 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1866,9 +1879,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 31:
+case 32:
 YY_RULE_SETUP
-#line 353 "dhcp4_lexer.ll"
+#line 362 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1879,9 +1892,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 32:
+case 33:
 YY_RULE_SETUP
-#line 363 "dhcp4_lexer.ll"
+#line 372 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1891,9 +1904,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 33:
+case 34:
 YY_RULE_SETUP
-#line 372 "dhcp4_lexer.ll"
+#line 381 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1903,9 +1916,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 34:
+case 35:
 YY_RULE_SETUP
-#line 381 "dhcp4_lexer.ll"
+#line 390 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1915,9 +1928,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 35:
+case 36:
 YY_RULE_SETUP
-#line 390 "dhcp4_lexer.ll"
+#line 399 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1932,9 +1945,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 36:
+case 37:
 YY_RULE_SETUP
-#line 404 "dhcp4_lexer.ll"
+#line 413 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1950,9 +1963,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 37:
+case 38:
 YY_RULE_SETUP
-#line 419 "dhcp4_lexer.ll"
+#line 428 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -1962,9 +1975,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 38:
+case 39:
 YY_RULE_SETUP
-#line 428 "dhcp4_lexer.ll"
+#line 437 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -1974,9 +1987,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 39:
+case 40:
 YY_RULE_SETUP
-#line 437 "dhcp4_lexer.ll"
+#line 446 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::POOLS:
@@ -1986,9 +1999,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 40:
+case 41:
 YY_RULE_SETUP
-#line 446 "dhcp4_lexer.ll"
+#line 455 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -1998,9 +2011,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 41:
+case 42:
 YY_RULE_SETUP
-#line 455 "dhcp4_lexer.ll"
+#line 464 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2010,9 +2023,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 42:
+case 43:
 YY_RULE_SETUP
-#line 464 "dhcp4_lexer.ll"
+#line 473 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2022,9 +2035,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 43:
+case 44:
 YY_RULE_SETUP
-#line 473 "dhcp4_lexer.ll"
+#line 482 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2034,9 +2047,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 44:
+case 45:
 YY_RULE_SETUP
-#line 482 "dhcp4_lexer.ll"
+#line 491 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2046,9 +2059,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 45:
+case 46:
 YY_RULE_SETUP
-#line 491 "dhcp4_lexer.ll"
+#line 500 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2058,9 +2071,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 46:
+case 47:
 YY_RULE_SETUP
-#line 500 "dhcp4_lexer.ll"
+#line 509 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2071,9 +2084,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 47:
+case 48:
 YY_RULE_SETUP
-#line 510 "dhcp4_lexer.ll"
+#line 519 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2083,9 +2096,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 48:
+case 49:
 YY_RULE_SETUP
-#line 519 "dhcp4_lexer.ll"
+#line 528 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -2095,9 +2108,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 49:
+case 50:
 YY_RULE_SETUP
-#line 528 "dhcp4_lexer.ll"
+#line 537 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGING:
@@ -2107,9 +2120,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 50:
+case 51:
 YY_RULE_SETUP
-#line 537 "dhcp4_lexer.ll"
+#line 546 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2119,9 +2132,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 51:
+case 52:
 YY_RULE_SETUP
-#line 546 "dhcp4_lexer.ll"
+#line 555 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2131,9 +2144,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 52:
+case 53:
 YY_RULE_SETUP
-#line 555 "dhcp4_lexer.ll"
+#line 564 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2143,9 +2156,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 53:
+case 54:
 YY_RULE_SETUP
-#line 564 "dhcp4_lexer.ll"
+#line 573 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2155,9 +2168,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 54:
+case 55:
 YY_RULE_SETUP
-#line 573 "dhcp4_lexer.ll"
+#line 582 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2168,9 +2181,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 55:
+case 56:
 YY_RULE_SETUP
-#line 583 "dhcp4_lexer.ll"
+#line 592 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2181,9 +2194,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 56:
+case 57:
 YY_RULE_SETUP
-#line 593 "dhcp4_lexer.ll"
+#line 602 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -2194,9 +2207,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 57:
+case 58:
 YY_RULE_SETUP
-#line 603 "dhcp4_lexer.ll"
+#line 612 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2206,9 +2219,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 58:
+case 59:
 YY_RULE_SETUP
-#line 612 "dhcp4_lexer.ll"
+#line 621 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2219,9 +2232,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 59:
+case 60:
 YY_RULE_SETUP
-#line 622 "dhcp4_lexer.ll"
+#line 631 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2232,9 +2245,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 60:
+case 61:
 YY_RULE_SETUP
-#line 632 "dhcp4_lexer.ll"
+#line 641 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2245,9 +2258,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 61:
+case 62:
 YY_RULE_SETUP
-#line 642 "dhcp4_lexer.ll"
+#line 651 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2258,9 +2271,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 62:
+case 63:
 YY_RULE_SETUP
-#line 652 "dhcp4_lexer.ll"
+#line 661 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -2270,9 +2283,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 63:
+case 64:
 YY_RULE_SETUP
-#line 661 "dhcp4_lexer.ll"
+#line 670 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2283,9 +2296,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 64:
+case 65:
 YY_RULE_SETUP
-#line 671 "dhcp4_lexer.ll"
+#line 680 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2295,9 +2308,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 65:
+case 66:
 YY_RULE_SETUP
-#line 680 "dhcp4_lexer.ll"
+#line 689 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2307,9 +2320,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 66:
+case 67:
 YY_RULE_SETUP
-#line 689 "dhcp4_lexer.ll"
+#line 698 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2319,9 +2332,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 68:
 YY_RULE_SETUP
-#line 698 "dhcp4_lexer.ll"
+#line 707 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2331,9 +2344,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 69:
 YY_RULE_SETUP
-#line 707 "dhcp4_lexer.ll"
+#line 716 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2343,9 +2356,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 70:
 YY_RULE_SETUP
-#line 716 "dhcp4_lexer.ll"
+#line 725 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -2356,9 +2369,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 726 "dhcp4_lexer.ll"
+#line 735 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2368,9 +2381,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 736 "dhcp4_lexer.ll"
+#line 745 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -2380,9 +2393,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 73:
 YY_RULE_SETUP
-#line 745 "dhcp4_lexer.ll"
+#line 754 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -2392,9 +2405,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 74:
 YY_RULE_SETUP
-#line 754 "dhcp4_lexer.ll"
+#line 763 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2404,9 +2417,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 75:
 YY_RULE_SETUP
-#line 763 "dhcp4_lexer.ll"
+#line 772 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2416,9 +2429,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 772 "dhcp4_lexer.ll"
+#line 781 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2428,9 +2441,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 781 "dhcp4_lexer.ll"
+#line 790 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -2440,9 +2453,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 790 "dhcp4_lexer.ll"
+#line 799 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -2452,9 +2465,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 799 "dhcp4_lexer.ll"
+#line 808 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2464,9 +2477,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 808 "dhcp4_lexer.ll"
+#line 817 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -2476,9 +2489,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 817 "dhcp4_lexer.ll"
+#line 826 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -2488,9 +2501,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 826 "dhcp4_lexer.ll"
+#line 835 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2500,9 +2513,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 835 "dhcp4_lexer.ll"
+#line 844 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2512,9 +2525,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 844 "dhcp4_lexer.ll"
+#line 853 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2524,9 +2537,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 853 "dhcp4_lexer.ll"
+#line 862 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2537,9 +2550,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 863 "dhcp4_lexer.ll"
+#line 872 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2550,9 +2563,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 873 "dhcp4_lexer.ll"
+#line 882 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2565,9 +2578,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 885 "dhcp4_lexer.ll"
+#line 894 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2579,9 +2592,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 896 "dhcp4_lexer.ll"
+#line 905 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2593,9 +2606,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 909 "dhcp4_lexer.ll"
+#line 918 "dhcp4_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.
@@ -2694,65 +2707,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 90:
-/* rule 90 can match eol */
+case 91:
+/* rule 91 can match eol */
 YY_RULE_SETUP
-#line 1007 "dhcp4_lexer.ll"
+#line 1016 "dhcp4_lexer.ll"
 {
     // Bad string with a forbidden control character inside
     driver.error(driver.loc_, "Invalid control in " + std::string(parser4_text));
 }
        YY_BREAK
-case 91:
-/* rule 91 can match eol */
+case 92:
+/* rule 92 can match eol */
 YY_RULE_SETUP
-#line 1012 "dhcp4_lexer.ll"
+#line 1021 "dhcp4_lexer.ll"
 {
     // Bad string with a bad escape inside
     driver.error(driver.loc_, "Bad escape in " + std::string(parser4_text));
 }
        YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 1017 "dhcp4_lexer.ll"
+#line 1026 "dhcp4_lexer.ll"
 {
     // Bad string with an open escape at the end
     driver.error(driver.loc_, "Overflow escape in " + std::string(parser4_text));
 }
        YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 1022 "dhcp4_lexer.ll"
+#line 1031 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 1023 "dhcp4_lexer.ll"
+#line 1032 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 1024 "dhcp4_lexer.ll"
+#line 1033 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 1025 "dhcp4_lexer.ll"
+#line 1034 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 1026 "dhcp4_lexer.ll"
+#line 1035 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 1027 "dhcp4_lexer.ll"
+#line 1036 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 1029 "dhcp4_lexer.ll"
+#line 1038 "dhcp4_lexer.ll"
 {
     // An integer was found.
     std::string tmp(parser4_text);
@@ -2771,9 +2784,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 1047 "dhcp4_lexer.ll"
+#line 1056 "dhcp4_lexer.ll"
 {
     // A floating point was found.
     std::string tmp(parser4_text);
@@ -2787,43 +2800,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 1060 "dhcp4_lexer.ll"
+#line 1069 "dhcp4_lexer.ll"
 {
     string tmp(parser4_text);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 1065 "dhcp4_lexer.ll"
+#line 1074 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 1069 "dhcp4_lexer.ll"
+#line 1078 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 1071 "dhcp4_lexer.ll"
+#line 1080 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 1073 "dhcp4_lexer.ll"
+#line 1082 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 1075 "dhcp4_lexer.ll"
+#line 1084 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(parser4_text));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1077 "dhcp4_lexer.ll"
+#line 1086 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -2847,12 +2860,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 1100 "dhcp4_lexer.ll"
+#line 1109 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 2856 "dhcp4_lexer.cc"
+#line 2869 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -3169,7 +3182,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 >= 781 )
+                       if ( yy_current_state >= 784 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
@@ -3202,11 +3215,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 >= 781 )
+               if ( yy_current_state >= 784 )
                        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 == 780);
+       yy_is_jam = (yy_current_state == 783);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3955,7 +3968,7 @@ void parser4_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 1100 "dhcp4_lexer.ll"
+#line 1109 "dhcp4_lexer.ll"
 
 
 
index e9d1a9d8618d0d45d43ddcd15af1554a10f38743..056b4f2c72328aa71e974ea7ce9ff57b9ada8d08 100644 (file)
@@ -253,24 +253,24 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 113: // value
-      case 160: // db_type
+      case 114: // value
+      case 161: // db_type
         value.move< ElementPtr > (that.value);
         break;
 
-      case 100: // "boolean"
+      case 101: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 99: // "floating point"
+      case 100: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 98: // "integer"
+      case 99: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 97: // "constant string"
+      case 98: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -289,24 +289,24 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 113: // value
-      case 160: // db_type
+      case 114: // value
+      case 161: // db_type
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 100: // "boolean"
+      case 101: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 99: // "floating point"
+      case 100: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 98: // "integer"
+      case 99: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 97: // "constant string"
+      case 98: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -346,44 +346,44 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 97: // "constant string"
+            case 98: // "constant string"
 
-#line 188 "dhcp4_parser.yy" // lalr1.cc:636
+#line 189 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 354 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 98: // "integer"
+      case 99: // "integer"
 
-#line 188 "dhcp4_parser.yy" // lalr1.cc:636
+#line 189 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 361 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 99: // "floating point"
+      case 100: // "floating point"
 
-#line 188 "dhcp4_parser.yy" // lalr1.cc:636
+#line 189 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 368 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 100: // "boolean"
+      case 101: // "boolean"
 
-#line 188 "dhcp4_parser.yy" // lalr1.cc:636
+#line 189 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 375 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 113: // value
+      case 114: // value
 
-#line 188 "dhcp4_parser.yy" // lalr1.cc:636
+#line 189 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 382 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 160: // db_type
+      case 161: // db_type
 
-#line 188 "dhcp4_parser.yy" // lalr1.cc:636
+#line 189 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 389 "dhcp4_parser.cc" // lalr1.cc:636
         break;
@@ -585,24 +585,24 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 113: // value
-      case 160: // db_type
+      case 114: // value
+      case 161: // db_type
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 100: // "boolean"
+      case 101: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 99: // "floating point"
+      case 100: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 98: // "integer"
+      case 99: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 97: // "constant string"
+      case 98: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -624,109 +624,109 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 197 "dhcp4_parser.yy" // lalr1.cc:859
+#line 198 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 630 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 198 "dhcp4_parser.yy" // lalr1.cc:859
+#line 199 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 636 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 199 "dhcp4_parser.yy" // lalr1.cc:859
+#line 200 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP4; }
 #line 642 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 200 "dhcp4_parser.yy" // lalr1.cc:859
+#line 201 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 648 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 201 "dhcp4_parser.yy" // lalr1.cc:859
+#line 202 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET4; }
 #line 654 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 202 "dhcp4_parser.yy" // lalr1.cc:859
+#line 203 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 660 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 203 "dhcp4_parser.yy" // lalr1.cc:859
+#line 204 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 666 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 204 "dhcp4_parser.yy" // lalr1.cc:859
+#line 205 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 672 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 205 "dhcp4_parser.yy" // lalr1.cc:859
+#line 206 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 678 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 206 "dhcp4_parser.yy" // lalr1.cc:859
+#line 207 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 684 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 214 "dhcp4_parser.yy" // lalr1.cc:859
+#line 215 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 690 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 23:
-#line 215 "dhcp4_parser.yy" // lalr1.cc:859
+#line 216 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 696 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 216 "dhcp4_parser.yy" // lalr1.cc:859
+#line 217 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 702 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 25:
-#line 217 "dhcp4_parser.yy" // lalr1.cc:859
+#line 218 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 708 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 218 "dhcp4_parser.yy" // lalr1.cc:859
+#line 219 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 714 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 219 "dhcp4_parser.yy" // lalr1.cc:859
+#line 220 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 720 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 220 "dhcp4_parser.yy" // lalr1.cc:859
+#line 221 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 726 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 223 "dhcp4_parser.yy" // lalr1.cc:859
+#line 224 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -735,7 +735,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 30:
-#line 228 "dhcp4_parser.yy" // lalr1.cc:859
+#line 229 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -746,7 +746,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 31:
-#line 233 "dhcp4_parser.yy" // lalr1.cc:859
+#line 234 "dhcp4_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
@@ -756,7 +756,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 34:
-#line 244 "dhcp4_parser.yy" // lalr1.cc:859
+#line 245 "dhcp4_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 > ());
@@ -765,7 +765,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 35:
-#line 248 "dhcp4_parser.yy" // lalr1.cc:859
+#line 249 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -775,7 +775,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 36:
-#line 255 "dhcp4_parser.yy" // lalr1.cc:859
+#line 256 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -784,7 +784,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 37:
-#line 258 "dhcp4_parser.yy" // lalr1.cc:859
+#line 259 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -792,7 +792,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 38:
-#line 263 "dhcp4_parser.yy" // lalr1.cc:859
+#line 264 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
@@ -800,7 +800,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 39:
-#line 265 "dhcp4_parser.yy" // lalr1.cc:859
+#line 266 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -809,7 +809,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 42:
-#line 274 "dhcp4_parser.yy" // lalr1.cc:859
+#line 275 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -818,7 +818,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 43:
-#line 278 "dhcp4_parser.yy" // lalr1.cc:859
+#line 279 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -827,7 +827,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44:
-#line 289 "dhcp4_parser.yy" // lalr1.cc:859
+#line 290 "dhcp4_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -838,7 +838,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 299 "dhcp4_parser.yy" // lalr1.cc:859
+#line 300 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -849,7 +849,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 304 "dhcp4_parser.yy" // lalr1.cc:859
+#line 305 "dhcp4_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
@@ -859,7 +859,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 54:
-#line 323 "dhcp4_parser.yy" // lalr1.cc:859
+#line 324 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -872,7 +872,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55:
-#line 330 "dhcp4_parser.yy" // lalr1.cc:859
+#line 331 "dhcp4_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
@@ -884,7 +884,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 56:
-#line 340 "dhcp4_parser.yy" // lalr1.cc:859
+#line 341 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -894,7 +894,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57:
-#line 344 "dhcp4_parser.yy" // lalr1.cc:859
+#line 345 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -902,7 +902,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 81:
-#line 377 "dhcp4_parser.yy" // lalr1.cc:859
+#line 378 "dhcp4_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);
@@ -911,7 +911,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 82:
-#line 382 "dhcp4_parser.yy" // lalr1.cc:859
+#line 383 "dhcp4_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);
@@ -920,7 +920,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 83:
-#line 387 "dhcp4_parser.yy" // lalr1.cc:859
+#line 388 "dhcp4_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);
@@ -929,7 +929,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 84:
-#line 392 "dhcp4_parser.yy" // lalr1.cc:859
+#line 393 "dhcp4_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);
@@ -938,7 +938,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 85:
-#line 397 "dhcp4_parser.yy" // lalr1.cc:859
+#line 398 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("echo-client-id", echo);
@@ -947,7 +947,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 86:
-#line 402 "dhcp4_parser.yy" // lalr1.cc:859
+#line 403 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("match-client-id", match);
@@ -956,7 +956,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 87:
-#line 408 "dhcp4_parser.yy" // lalr1.cc:859
+#line 409 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
@@ -967,7 +967,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 88:
-#line 413 "dhcp4_parser.yy" // lalr1.cc:859
+#line 414 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -976,7 +976,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 93:
-#line 426 "dhcp4_parser.yy" // lalr1.cc:859
+#line 427 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -986,7 +986,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 94:
-#line 430 "dhcp4_parser.yy" // lalr1.cc:859
+#line 431 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -994,7 +994,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 95:
-#line 434 "dhcp4_parser.yy" // lalr1.cc:859
+#line 435 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
@@ -1005,7 +1005,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 96:
-#line 439 "dhcp4_parser.yy" // lalr1.cc:859
+#line 440 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1014,7 +1014,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 97:
-#line 444 "dhcp4_parser.yy" // lalr1.cc:859
+#line 445 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1022,7 +1022,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 98:
-#line 446 "dhcp4_parser.yy" // lalr1.cc:859
+#line 447 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr type(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-socket-type", type);
@@ -1032,7 +1032,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 99:
-#line 452 "dhcp4_parser.yy" // lalr1.cc:859
+#line 453 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
@@ -1043,7 +1043,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 100:
-#line 457 "dhcp4_parser.yy" // lalr1.cc:859
+#line 458 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1052,7 +1052,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 101:
-#line 462 "dhcp4_parser.yy" // lalr1.cc:859
+#line 463 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
@@ -1063,7 +1063,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 102:
-#line 467 "dhcp4_parser.yy" // lalr1.cc:859
+#line 468 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1072,7 +1072,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 115:
-#line 488 "dhcp4_parser.yy" // lalr1.cc:859
+#line 489 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
@@ -1080,7 +1080,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 116:
-#line 490 "dhcp4_parser.yy" // lalr1.cc:859
+#line 491 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1089,339 +1089,345 @@ namespace isc { namespace dhcp {
     break;
 
   case 117:
-#line 495 "dhcp4_parser.yy" // lalr1.cc:859
+#line 496 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1095 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 118:
-#line 496 "dhcp4_parser.yy" // lalr1.cc:859
+#line 497 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1101 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 119:
-#line 497 "dhcp4_parser.yy" // lalr1.cc:859
+#line 498 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1107 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 120:
-#line 500 "dhcp4_parser.yy" // lalr1.cc:859
+#line 499 "dhcp4_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1113 "dhcp4_parser.cc" // lalr1.cc:859
+    break;
+
+  case 121:
+#line 502 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1115 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1121 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 121:
-#line 502 "dhcp4_parser.yy" // lalr1.cc:859
+  case 122:
+#line 504 "dhcp4_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 1125 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1131 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 122:
-#line 508 "dhcp4_parser.yy" // lalr1.cc:859
+  case 123:
+#line 510 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1133 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1139 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 123:
-#line 510 "dhcp4_parser.yy" // lalr1.cc:859
+  case 124:
+#line 512 "dhcp4_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 1143 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1149 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 124:
-#line 516 "dhcp4_parser.yy" // lalr1.cc:859
+  case 125:
+#line 518 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1151 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1157 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 125:
-#line 518 "dhcp4_parser.yy" // lalr1.cc:859
+  case 126:
+#line 520 "dhcp4_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 1161 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1167 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 126:
-#line 524 "dhcp4_parser.yy" // lalr1.cc:859
+  case 127:
+#line 526 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1169 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1175 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 127:
-#line 526 "dhcp4_parser.yy" // lalr1.cc:859
+  case 128:
+#line 528 "dhcp4_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 1179 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1185 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 128:
-#line 532 "dhcp4_parser.yy" // lalr1.cc:859
+  case 129:
+#line 534 "dhcp4_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 1188 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1194 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 129:
-#line 537 "dhcp4_parser.yy" // lalr1.cc:859
+  case 130:
+#line 539 "dhcp4_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 1197 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1203 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 130:
-#line 542 "dhcp4_parser.yy" // lalr1.cc:859
+  case 131:
+#line 544 "dhcp4_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 1206 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1212 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 131:
-#line 547 "dhcp4_parser.yy" // lalr1.cc:859
+  case 132:
+#line 549 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1215 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1221 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 132:
-#line 552 "dhcp4_parser.yy" // lalr1.cc:859
+  case 133:
+#line 554 "dhcp4_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 1226 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1232 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 133:
-#line 557 "dhcp4_parser.yy" // lalr1.cc:859
+  case 134:
+#line 559 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1235 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1241 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 140:
-#line 572 "dhcp4_parser.yy" // lalr1.cc:859
+  case 141:
+#line 574 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1244 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1250 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 141:
-#line 577 "dhcp4_parser.yy" // lalr1.cc:859
+  case 142:
+#line 579 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1253 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1259 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 142:
-#line 582 "dhcp4_parser.yy" // lalr1.cc:859
+  case 143:
+#line 584 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
 }
-#line 1262 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1268 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 143:
-#line 587 "dhcp4_parser.yy" // lalr1.cc:859
+  case 144:
+#line 589 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
 }
-#line 1271 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1277 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 144:
-#line 592 "dhcp4_parser.yy" // lalr1.cc:859
+  case 145:
+#line 594 "dhcp4_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 1282 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1288 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 145:
-#line 597 "dhcp4_parser.yy" // lalr1.cc:859
+  case 146:
+#line 599 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1291 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1297 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 150:
-#line 610 "dhcp4_parser.yy" // lalr1.cc:859
+  case 151:
+#line 612 "dhcp4_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 1301 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1307 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 151:
-#line 614 "dhcp4_parser.yy" // lalr1.cc:859
+  case 152:
+#line 616 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1309 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1315 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 152:
-#line 618 "dhcp4_parser.yy" // lalr1.cc:859
+  case 153:
+#line 620 "dhcp4_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 1319 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1325 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 153:
-#line 622 "dhcp4_parser.yy" // lalr1.cc:859
+  case 154:
+#line 624 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1327 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1333 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 159:
-#line 635 "dhcp4_parser.yy" // lalr1.cc:859
+  case 160:
+#line 637 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1335 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1341 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 160:
-#line 637 "dhcp4_parser.yy" // lalr1.cc:859
+  case 161:
+#line 639 "dhcp4_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 1345 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1351 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 161:
-#line 643 "dhcp4_parser.yy" // lalr1.cc:859
+  case 162:
+#line 645 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1353 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1359 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 162:
-#line 645 "dhcp4_parser.yy" // lalr1.cc:859
+  case 163:
+#line 647 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1362 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1368 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 163:
-#line 651 "dhcp4_parser.yy" // lalr1.cc:859
+  case 164:
+#line 653 "dhcp4_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 1373 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1379 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 164:
-#line 656 "dhcp4_parser.yy" // lalr1.cc:859
+  case 165:
+#line 658 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1382 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1388 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 167:
-#line 668 "dhcp4_parser.yy" // lalr1.cc:859
+  case 168:
+#line 670 "dhcp4_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 1391 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1397 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 168:
-#line 676 "dhcp4_parser.yy" // lalr1.cc:859
+  case 169:
+#line 678 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet4", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET4);
 }
-#line 1402 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1408 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 169:
-#line 681 "dhcp4_parser.yy" // lalr1.cc:859
+  case 170:
+#line 683 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1411 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1417 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 174:
-#line 701 "dhcp4_parser.yy" // lalr1.cc:859
+  case 175:
+#line 703 "dhcp4_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 1421 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1427 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 175:
-#line 705 "dhcp4_parser.yy" // lalr1.cc:859
+  case 176:
+#line 707 "dhcp4_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.
@@ -1440,1086 +1446,1086 @@ namespace isc { namespace dhcp {
     // }
     ctx.stack_.pop_back();
 }
-#line 1444 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1450 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 176:
-#line 724 "dhcp4_parser.yy" // lalr1.cc:859
+  case 177:
+#line 726 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1454 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1460 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 177:
-#line 728 "dhcp4_parser.yy" // lalr1.cc:859
+  case 178:
+#line 730 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1462 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1468 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 200:
-#line 760 "dhcp4_parser.yy" // lalr1.cc:859
+  case 201:
+#line 762 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1470 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1476 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 201:
-#line 762 "dhcp4_parser.yy" // lalr1.cc:859
+  case 202:
+#line 764 "dhcp4_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 1480 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1486 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 202:
-#line 768 "dhcp4_parser.yy" // lalr1.cc:859
+  case 203:
+#line 770 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1488 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1494 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 203:
-#line 770 "dhcp4_parser.yy" // lalr1.cc:859
+  case 204:
+#line 772 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface", iface);
     ctx.leave();
 }
-#line 1498 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1504 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 204:
-#line 776 "dhcp4_parser.yy" // lalr1.cc:859
+  case 205:
+#line 778 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1506 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1512 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 205:
-#line 778 "dhcp4_parser.yy" // lalr1.cc:859
+  case 206:
+#line 780 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface-id", iface);
     ctx.leave();
 }
-#line 1516 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1522 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 206:
-#line 784 "dhcp4_parser.yy" // lalr1.cc:859
+  case 207:
+#line 786 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1524 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1530 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 207:
-#line 786 "dhcp4_parser.yy" // lalr1.cc:859
+  case 208:
+#line 788 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-subnet", iface);
     ctx.leave();
 }
-#line 1534 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1540 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 208:
-#line 792 "dhcp4_parser.yy" // lalr1.cc:859
+  case 209:
+#line 794 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1542 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1548 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 209:
-#line 794 "dhcp4_parser.yy" // lalr1.cc:859
+  case 210:
+#line 796 "dhcp4_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 1552 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1558 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 210:
-#line 800 "dhcp4_parser.yy" // lalr1.cc:859
+  case 211:
+#line 802 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1560 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1566 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 211:
-#line 802 "dhcp4_parser.yy" // lalr1.cc:859
+  case 212:
+#line 804 "dhcp4_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 1570 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1576 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 212:
-#line 808 "dhcp4_parser.yy" // lalr1.cc:859
+  case 213:
+#line 810 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
-#line 1578 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1584 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 213:
-#line 810 "dhcp4_parser.yy" // lalr1.cc:859
+  case 214:
+#line 812 "dhcp4_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 1588 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1594 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 214:
-#line 816 "dhcp4_parser.yy" // lalr1.cc:859
+  case 215:
+#line 818 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1596 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1602 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 215:
-#line 818 "dhcp4_parser.yy" // lalr1.cc:859
+  case 216:
+#line 820 "dhcp4_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 1606 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1612 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 216:
-#line 824 "dhcp4_parser.yy" // lalr1.cc:859
+  case 217:
+#line 826 "dhcp4_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 1615 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1621 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 217:
-#line 829 "dhcp4_parser.yy" // lalr1.cc:859
+  case 218:
+#line 831 "dhcp4_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 1624 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1630 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 218:
-#line 838 "dhcp4_parser.yy" // lalr1.cc:859
+  case 219:
+#line 840 "dhcp4_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 1635 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1641 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 219:
-#line 843 "dhcp4_parser.yy" // lalr1.cc:859
+  case 220:
+#line 845 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1644 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1650 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 224:
-#line 860 "dhcp4_parser.yy" // lalr1.cc:859
+  case 225:
+#line 862 "dhcp4_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 1654 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1660 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 225:
-#line 864 "dhcp4_parser.yy" // lalr1.cc:859
+  case 226:
+#line 866 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1662 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1668 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 226:
-#line 871 "dhcp4_parser.yy" // lalr1.cc:859
+  case 227:
+#line 873 "dhcp4_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 1672 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1678 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 227:
-#line 875 "dhcp4_parser.yy" // lalr1.cc:859
+  case 228:
+#line 877 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1680 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1686 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 241:
-#line 901 "dhcp4_parser.yy" // lalr1.cc:859
+  case 242:
+#line 903 "dhcp4_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 1689 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1695 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 243:
-#line 908 "dhcp4_parser.yy" // lalr1.cc:859
+  case 244:
+#line 910 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1697 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1703 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 244:
-#line 910 "dhcp4_parser.yy" // lalr1.cc:859
+  case 245:
+#line 912 "dhcp4_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 1707 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1713 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 245:
-#line 916 "dhcp4_parser.yy" // lalr1.cc:859
+  case 246:
+#line 918 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1715 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1721 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 246:
-#line 918 "dhcp4_parser.yy" // lalr1.cc:859
+  case 247:
+#line 920 "dhcp4_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 1725 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1731 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 247:
-#line 924 "dhcp4_parser.yy" // lalr1.cc:859
+  case 248:
+#line 926 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1733 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1739 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 248:
-#line 926 "dhcp4_parser.yy" // lalr1.cc:859
+  case 249:
+#line 928 "dhcp4_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 1743 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1749 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 250:
-#line 934 "dhcp4_parser.yy" // lalr1.cc:859
+  case 251:
+#line 936 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1751 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1757 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 251:
-#line 936 "dhcp4_parser.yy" // lalr1.cc:859
+  case 252:
+#line 938 "dhcp4_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 1761 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1767 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 252:
-#line 942 "dhcp4_parser.yy" // lalr1.cc:859
+  case 253:
+#line 944 "dhcp4_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 1770 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1776 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 253:
-#line 951 "dhcp4_parser.yy" // lalr1.cc:859
+  case 254:
+#line 953 "dhcp4_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 1781 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1787 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 254:
-#line 956 "dhcp4_parser.yy" // lalr1.cc:859
+  case 255:
+#line 958 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1790 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1796 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 259:
-#line 975 "dhcp4_parser.yy" // lalr1.cc:859
+  case 260:
+#line 977 "dhcp4_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 1800 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1806 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 260:
-#line 979 "dhcp4_parser.yy" // lalr1.cc:859
+  case 261:
+#line 981 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1808 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1814 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 261:
-#line 986 "dhcp4_parser.yy" // lalr1.cc:859
+  case 262:
+#line 988 "dhcp4_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 1818 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1824 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 262:
-#line 990 "dhcp4_parser.yy" // lalr1.cc:859
+  case 263:
+#line 992 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1826 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1832 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 274:
-#line 1019 "dhcp4_parser.yy" // lalr1.cc:859
+  case 275:
+#line 1021 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1834 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1840 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 275:
-#line 1021 "dhcp4_parser.yy" // lalr1.cc:859
+  case 276:
+#line 1023 "dhcp4_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 1844 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1850 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 278:
-#line 1031 "dhcp4_parser.yy" // lalr1.cc:859
+  case 279:
+#line 1033 "dhcp4_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 1853 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1859 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 279:
-#line 1039 "dhcp4_parser.yy" // lalr1.cc:859
+  case 280:
+#line 1041 "dhcp4_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 1864 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1870 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1044 "dhcp4_parser.yy" // lalr1.cc:859
+  case 281:
+#line 1046 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1873 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1879 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 285:
-#line 1059 "dhcp4_parser.yy" // lalr1.cc:859
+  case 286:
+#line 1061 "dhcp4_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 1883 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1889 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 286:
-#line 1063 "dhcp4_parser.yy" // lalr1.cc:859
+  case 287:
+#line 1065 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1891 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1897 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 287:
-#line 1067 "dhcp4_parser.yy" // lalr1.cc:859
+  case 288:
+#line 1069 "dhcp4_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 1901 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1907 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 288:
-#line 1071 "dhcp4_parser.yy" // lalr1.cc:859
+  case 289:
+#line 1073 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1909 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1915 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 294:
-#line 1084 "dhcp4_parser.yy" // lalr1.cc:859
+  case 295:
+#line 1086 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1917 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1923 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 295:
-#line 1086 "dhcp4_parser.yy" // lalr1.cc:859
+  case 296:
+#line 1088 "dhcp4_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 1927 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1933 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 296:
-#line 1095 "dhcp4_parser.yy" // lalr1.cc:859
+  case 297:
+#line 1097 "dhcp4_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 1938 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1944 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 297:
-#line 1100 "dhcp4_parser.yy" // lalr1.cc:859
+  case 298:
+#line 1102 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1947 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1953 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 302:
-#line 1113 "dhcp4_parser.yy" // lalr1.cc:859
+  case 303:
+#line 1115 "dhcp4_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 1957 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1963 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 303:
-#line 1117 "dhcp4_parser.yy" // lalr1.cc:859
+  case 304:
+#line 1119 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1965 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1971 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 304:
-#line 1121 "dhcp4_parser.yy" // lalr1.cc:859
+  case 305:
+#line 1123 "dhcp4_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 1975 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1981 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 305:
-#line 1125 "dhcp4_parser.yy" // lalr1.cc:859
+  case 306:
+#line 1127 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1983 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1989 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 322:
-#line 1152 "dhcp4_parser.yy" // lalr1.cc:859
+  case 323:
+#line 1154 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1991 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1997 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 323:
-#line 1154 "dhcp4_parser.yy" // lalr1.cc:859
+  case 324:
+#line 1156 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("next-server", next_server);
     ctx.leave();
 }
-#line 2001 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2007 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1160 "dhcp4_parser.yy" // lalr1.cc:859
+  case 325:
+#line 1162 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2009 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2015 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 325:
-#line 1162 "dhcp4_parser.yy" // lalr1.cc:859
+  case 326:
+#line 1164 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-hostname", srv);
     ctx.leave();
 }
-#line 2019 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2025 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 326:
-#line 1168 "dhcp4_parser.yy" // lalr1.cc:859
+  case 327:
+#line 1170 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2027 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2033 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 327:
-#line 1170 "dhcp4_parser.yy" // lalr1.cc:859
+  case 328:
+#line 1172 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("boot-file-name", bootfile);
     ctx.leave();
 }
-#line 2037 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2043 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 328:
-#line 1176 "dhcp4_parser.yy" // lalr1.cc:859
+  case 329:
+#line 1178 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2045 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2051 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 329:
-#line 1178 "dhcp4_parser.yy" // lalr1.cc:859
+  case 330:
+#line 1180 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 2055 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2061 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 330:
-#line 1184 "dhcp4_parser.yy" // lalr1.cc:859
+  case 331:
+#line 1186 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2063 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2069 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 331:
-#line 1186 "dhcp4_parser.yy" // lalr1.cc:859
+  case 332:
+#line 1188 "dhcp4_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 2073 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2079 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 332:
-#line 1192 "dhcp4_parser.yy" // lalr1.cc:859
+  case 333:
+#line 1194 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2081 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2087 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 333:
-#line 1194 "dhcp4_parser.yy" // lalr1.cc:859
+  case 334:
+#line 1196 "dhcp4_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 2091 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2097 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1200 "dhcp4_parser.yy" // lalr1.cc:859
+  case 335:
+#line 1202 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2099 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2105 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 335:
-#line 1202 "dhcp4_parser.yy" // lalr1.cc:859
+  case 336:
+#line 1204 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-id", hw);
     ctx.leave();
 }
-#line 2109 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2115 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 336:
-#line 1208 "dhcp4_parser.yy" // lalr1.cc:859
+  case 337:
+#line 1210 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2117 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2123 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 337:
-#line 1210 "dhcp4_parser.yy" // lalr1.cc:859
+  case 338:
+#line 1212 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("circuit-id", hw);
     ctx.leave();
 }
-#line 2127 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2133 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 338:
-#line 1217 "dhcp4_parser.yy" // lalr1.cc:859
+  case 339:
+#line 1219 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2135 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2141 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 339:
-#line 1219 "dhcp4_parser.yy" // lalr1.cc:859
+  case 340:
+#line 1221 "dhcp4_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 2145 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2151 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 340:
-#line 1225 "dhcp4_parser.yy" // lalr1.cc:859
+  case 341:
+#line 1227 "dhcp4_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 2156 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2162 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 341:
-#line 1230 "dhcp4_parser.yy" // lalr1.cc:859
+  case 342:
+#line 1232 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2165 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2171 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 342:
-#line 1238 "dhcp4_parser.yy" // lalr1.cc:859
+  case 343:
+#line 1240 "dhcp4_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 2176 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2182 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 343:
-#line 1243 "dhcp4_parser.yy" // lalr1.cc:859
+  case 344:
+#line 1245 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2185 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2191 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 344:
-#line 1248 "dhcp4_parser.yy" // lalr1.cc:859
+  case 345:
+#line 1250 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2193 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2199 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 345:
-#line 1250 "dhcp4_parser.yy" // lalr1.cc:859
+  case 346:
+#line 1252 "dhcp4_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 2203 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2209 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 346:
-#line 1259 "dhcp4_parser.yy" // lalr1.cc:859
+  case 347:
+#line 1261 "dhcp4_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 2214 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2220 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 347:
-#line 1264 "dhcp4_parser.yy" // lalr1.cc:859
+  case 348:
+#line 1266 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2223 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2229 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 350:
-#line 1273 "dhcp4_parser.yy" // lalr1.cc:859
+  case 351:
+#line 1275 "dhcp4_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 2233 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2239 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 351:
-#line 1277 "dhcp4_parser.yy" // lalr1.cc:859
+  case 352:
+#line 1279 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2241 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2247 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 364:
-#line 1300 "dhcp4_parser.yy" // lalr1.cc:859
+  case 365:
+#line 1302 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2249 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2255 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 365:
-#line 1302 "dhcp4_parser.yy" // lalr1.cc:859
+  case 366:
+#line 1304 "dhcp4_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 2259 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2265 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 366:
-#line 1312 "dhcp4_parser.yy" // lalr1.cc:859
+  case 367:
+#line 1314 "dhcp4_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 2268 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2274 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 367:
-#line 1319 "dhcp4_parser.yy" // lalr1.cc:859
+  case 368:
+#line 1321 "dhcp4_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 2279 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2285 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 368:
-#line 1324 "dhcp4_parser.yy" // lalr1.cc:859
+  case 369:
+#line 1326 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2288 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2294 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 373:
-#line 1337 "dhcp4_parser.yy" // lalr1.cc:859
+  case 374:
+#line 1339 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2296 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2302 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 374:
-#line 1339 "dhcp4_parser.yy" // lalr1.cc:859
+  case 375:
+#line 1341 "dhcp4_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 2306 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2312 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 375:
-#line 1345 "dhcp4_parser.yy" // lalr1.cc:859
+  case 376:
+#line 1347 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2314 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2320 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 376:
-#line 1347 "dhcp4_parser.yy" // lalr1.cc:859
+  case 377:
+#line 1349 "dhcp4_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 2324 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2330 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 377:
-#line 1355 "dhcp4_parser.yy" // lalr1.cc:859
+  case 378:
+#line 1357 "dhcp4_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 2335 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2341 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1360 "dhcp4_parser.yy" // lalr1.cc:859
+  case 379:
+#line 1362 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2344 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2350 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1367 "dhcp4_parser.yy" // lalr1.cc:859
+  case 380:
+#line 1369 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2352 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2358 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1369 "dhcp4_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1371 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2361 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2367 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 381:
-#line 1374 "dhcp4_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1376 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2369 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2375 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 382:
-#line 1376 "dhcp4_parser.yy" // lalr1.cc:859
+  case 383:
+#line 1378 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2378 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2384 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 383:
-#line 1386 "dhcp4_parser.yy" // lalr1.cc:859
+  case 384:
+#line 1388 "dhcp4_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 2389 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2395 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 384:
-#line 1391 "dhcp4_parser.yy" // lalr1.cc:859
+  case 385:
+#line 1393 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2398 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2404 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1408 "dhcp4_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1410 "dhcp4_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 2409 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2415 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1413 "dhcp4_parser.yy" // lalr1.cc:859
+  case 390:
+#line 1415 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2418 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2424 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1425 "dhcp4_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1427 "dhcp4_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 2428 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2434 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1429 "dhcp4_parser.yy" // lalr1.cc:859
+  case 394:
+#line 1431 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2436 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2442 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 401:
-#line 1444 "dhcp4_parser.yy" // lalr1.cc:859
+  case 402:
+#line 1446 "dhcp4_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 2445 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2451 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 402:
-#line 1448 "dhcp4_parser.yy" // lalr1.cc:859
+  case 403:
+#line 1450 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2453 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2459 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 403:
-#line 1450 "dhcp4_parser.yy" // lalr1.cc:859
+  case 404:
+#line 1452 "dhcp4_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 2463 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2469 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 404:
-#line 1456 "dhcp4_parser.yy" // lalr1.cc:859
+  case 405:
+#line 1458 "dhcp4_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 2474 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2480 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 405:
-#line 1461 "dhcp4_parser.yy" // lalr1.cc:859
+  case 406:
+#line 1463 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2483 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2489 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 408:
-#line 1470 "dhcp4_parser.yy" // lalr1.cc:859
+  case 409:
+#line 1472 "dhcp4_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 2493 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2499 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 409:
-#line 1474 "dhcp4_parser.yy" // lalr1.cc:859
+  case 410:
+#line 1476 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2501 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2507 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 412:
-#line 1482 "dhcp4_parser.yy" // lalr1.cc:859
+  case 413:
+#line 1484 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2509 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2515 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 413:
-#line 1484 "dhcp4_parser.yy" // lalr1.cc:859
+  case 414:
+#line 1486 "dhcp4_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 2519 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2525 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 2523 "dhcp4_parser.cc" // lalr1.cc:859
+#line 2529 "dhcp4_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -2781,75 +2787,75 @@ namespace isc { namespace dhcp {
   const short int
   Dhcp4Parser::yypact_[] =
   {
-     108,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-    -399,    30,    18,    40,    52,    59,    70,    91,    99,   112,
-     130,   138,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
+     183,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
+    -399,    31,    18,    37,    47,    60,    62,    78,    94,    98,
+     105,   113,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
     -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
     -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-    -399,  -399,    18,   -60,    16,    89,   202,    17,   -13,    23,
-     129,     0,   -36,  -399,   160,   146,   205,   173,   213,  -399,
-    -399,  -399,  -399,   219,  -399,    45,  -399,  -399,  -399,  -399,
-    -399,  -399,   220,   221,  -399,  -399,  -399,   223,   224,   226,
-     227,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   228,  -399,
-    -399,  -399,    54,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
+    -399,  -399,    18,   -34,    16,   111,    30,    17,   -14,    23,
+      61,     2,   -36,  -399,   159,   140,   195,   198,   204,  -399,
+    -399,  -399,  -399,   206,  -399,    26,  -399,  -399,  -399,  -399,
+    -399,  -399,   207,   208,  -399,  -399,  -399,   214,   215,   216,
+     217,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   219,  -399,
+    -399,  -399,    27,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
     -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-    -399,  -399,  -399,  -399,  -399,  -399,    57,  -399,  -399,  -399,
-    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   231,   233,
-    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,    60,
+    -399,  -399,  -399,  -399,  -399,  -399,    58,  -399,  -399,  -399,
+    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   220,   221,
+    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,    73,
     -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,    72,
+    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   146,
     -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-    -399,  -399,  -399,   230,   237,  -399,  -399,  -399,  -399,  -399,
-    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   238,  -399,
-    -399,  -399,   240,  -399,  -399,   246,   242,  -399,  -399,  -399,
-    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   251,  -399,
-    -399,  -399,  -399,   248,   254,  -399,  -399,  -399,  -399,  -399,
-    -399,  -399,  -399,  -399,    73,  -399,  -399,  -399,  -399,    18,
-      18,  -399,   164,   259,   261,   263,   264,  -399,    16,  -399,
-     265,   141,   171,   268,   269,   270,   178,   181,   182,   183,
-     271,   273,   274,   278,   279,   280,   281,   188,   283,   284,
-      89,  -399,   285,   286,   202,  -399,    94,   287,   288,   289,
-     290,   291,   292,   293,   200,   199,   296,   297,   298,   299,
-      17,  -399,   300,   -13,  -399,   301,   302,   303,   304,   305,
-     306,   307,   308,   309,  -399,    23,   310,   311,   218,   313,
-     314,   315,   222,  -399,   129,   316,   225,  -399,     0,   317,
-     319,   147,  -399,  -399,  -399,   320,   321,   322,    18,    18,
-    -399,   323,  -399,  -399,   229,   324,   325,  -399,  -399,  -399,
-    -399,   328,   329,   330,   331,   334,   335,   336,  -399,   337,
-     338,  -399,   341,   244,  -399,  -399,  -399,  -399,  -399,  -399,
-    -399,  -399,   339,   345,  -399,  -399,  -399,   245,   252,   253,
-     346,   255,   256,   257,  -399,  -399,   260,   262,   353,   355,
-    -399,   266,  -399,   267,   272,   341,   275,   276,   277,   282,
-     294,   295,  -399,   312,   318,  -399,   326,   327,   332,  -399,
-    -399,   333,  -399,  -399,   340,    18,  -399,    18,    89,   247,
-    -399,  -399,   202,  -399,   113,   113,   358,   359,   360,   142,
-      22,   361,   342,   144,   -60,  -399,  -399,  -399,   366,  -399,
-      94,  -399,  -399,  -399,   368,  -399,  -399,  -399,  -399,  -399,
-     370,   343,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
+    -399,  -399,  -399,   200,   223,  -399,  -399,  -399,  -399,  -399,
+    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   224,  -399,
+    -399,  -399,   226,  -399,  -399,   227,   228,  -399,  -399,  -399,
+    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   233,  -399,
+    -399,  -399,  -399,   230,   229,  -399,  -399,  -399,  -399,  -399,
+    -399,  -399,  -399,  -399,   148,  -399,  -399,  -399,  -399,    18,
+      18,  -399,   129,   236,   237,   238,   240,  -399,    16,  -399,
+     241,   153,   156,   251,   252,   257,   164,   166,   168,   169,
+     265,   277,   278,   279,   280,   281,   282,   193,   283,   284,
+     111,  -399,   285,   286,    30,  -399,    81,   287,   289,   290,
+     291,   292,   293,   294,   201,   202,   295,   297,   298,   300,
+      17,  -399,   301,   -14,  -399,   302,   303,   304,   305,   306,
+     307,   308,   309,   310,  -399,    23,   311,   312,   218,   314,
+     315,   316,   222,  -399,    61,   317,   225,  -399,     2,   318,
+     320,     5,  -399,  -399,  -399,   321,   322,   323,    18,    18,
+    -399,   324,  -399,  -399,   234,   326,   327,  -399,  -399,  -399,
+    -399,   330,   331,   334,   335,   336,   337,   338,  -399,   339,
+     340,  -399,   343,   245,  -399,  -399,  -399,  -399,  -399,  -399,
+    -399,  -399,   319,   325,  -399,  -399,  -399,   246,   253,   254,
+     344,   255,   256,   259,  -399,  -399,   260,   261,   345,   355,
+    -399,   266,  -399,   267,   268,   343,   269,   270,   271,   272,
+     274,   275,  -399,   276,   288,  -399,   296,   299,   313,  -399,
+    -399,   328,  -399,  -399,   329,    18,  -399,    18,   111,   332,
+    -399,  -399,    30,  -399,   107,   107,   356,   368,   370,   137,
+      51,   371,   333,    63,   -34,  -399,  -399,  -399,   375,  -399,
+      81,  -399,  -399,  -399,   373,  -399,  -399,  -399,  -399,  -399,
+     374,   342,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
     -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-    -399,   123,  -399,   124,  -399,  -399,   125,  -399,  -399,  -399,
-    -399,   374,   376,   377,   378,  -399,   143,  -399,  -399,  -399,
-    -399,  -399,  -399,  -399,  -399,  -399,  -399,   149,  -399,   379,
-     381,  -399,  -399,   380,   385,  -399,  -399,   383,   387,  -399,
-    -399,  -399,  -399,  -399,    28,  -399,  -399,  -399,  -399,  -399,
-    -399,    93,  -399,   388,   390,  -399,   391,   150,  -399,  -399,
-    -399,   153,  -399,  -399,  -399,   157,    18,   344,  -399,  -399,
-     392,   393,  -399,  -399,   394,   396,  -399,  -399,   389,  -399,
-     397,   247,  -399,  -399,   398,   399,   400,   401,   347,   348,
-     349,   350,   113,  -399,  -399,    17,  -399,   358,   129,  -399,
-     359,     0,  -399,   360,   142,  -399,    22,  -399,   -36,  -399,
-     361,   352,   342,  -399,   402,   403,   144,  -399,  -399,   404,
-    -399,   -13,  -399,   368,    23,  -399,   370,   407,  -399,   408,
-    -399,   189,   354,   356,   357,  -399,  -399,  -399,  -399,  -399,
-     167,  -399,   409,  -399,   410,  -399,  -399,  -399,   176,  -399,
-    -399,  -399,   362,   363,  -399,  -399,   177,  -399,   411,  -399,
-     364,   413,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   186,
-    -399,    10,   413,  -399,  -399,   417,  -399,  -399,  -399,   179,
-    -399,  -399,  -399,  -399,  -399,   418,   365,   421,    10,  -399,
-     422,  -399,   367,  -399,   419,  -399,  -399,   187,  -399,   351,
-     419,  -399,  -399,   180,  -399,  -399,   424,   351,  -399,   369,
-    -399,  -399
+    -399,   152,  -399,   154,  -399,  -399,   155,  -399,  -399,  -399,
+    -399,   378,   380,   381,   384,  -399,   158,  -399,  -399,  -399,
+    -399,  -399,  -399,  -399,  -399,  -399,  -399,   170,  -399,   383,
+     387,  -399,  -399,   385,   389,  -399,  -399,   390,   392,  -399,
+    -399,  -399,  -399,  -399,    57,  -399,  -399,  -399,  -399,  -399,
+    -399,   126,  -399,   393,   395,  -399,   396,   172,  -399,  -399,
+    -399,   173,  -399,  -399,  -399,   180,    18,   341,  -399,  -399,
+     397,   398,  -399,  -399,   399,   401,  -399,  -399,   394,  -399,
+     402,   332,  -399,  -399,   403,   404,   405,   406,   346,   347,
+     348,   349,   107,  -399,  -399,    17,  -399,   356,    61,  -399,
+     368,     2,  -399,   370,   137,  -399,    51,  -399,   -36,  -399,
+     371,   351,   333,  -399,   411,   413,    63,  -399,  -399,   412,
+    -399,   -14,  -399,   373,    23,  -399,   374,   415,  -399,   388,
+    -399,   191,   353,   354,   357,  -399,  -399,  -399,  -399,  -399,
+     181,  -399,   414,  -399,   416,  -399,  -399,  -399,   188,  -399,
+    -399,  -399,   358,   359,  -399,  -399,   189,  -399,   417,  -399,
+     360,   421,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
+    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
+     161,  -399,    10,   421,  -399,  -399,   419,  -399,  -399,  -399,
+     190,  -399,  -399,  -399,  -399,  -399,   425,   361,   426,    10,
+    -399,   427,  -399,   363,  -399,   428,  -399,  -399,   171,  -399,
+     350,   428,  -399,  -399,   192,  -399,  -399,   430,   350,  -399,
+     364,  -399,  -399
   };
 
   const unsigned short int
@@ -2859,101 +2865,101 @@ namespace isc { namespace dhcp {
       20,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     1,    36,    30,    26,    25,    22,    23,    24,
       29,     3,    27,    28,    45,     5,    56,     7,    93,     9,
-     176,    11,   287,    13,   304,    15,   226,    17,   261,    19,
-     152,    21,    40,    32,     0,     0,     0,     0,     0,   306,
-     228,   263,     0,    42,     0,    41,     0,     0,    33,    54,
-     383,   379,   381,     0,    53,     0,    47,    49,    51,    52,
-      50,    87,     0,     0,   322,    99,   101,     0,     0,     0,
-       0,   168,   218,   253,   132,   346,   144,   163,     0,   367,
-     377,    80,     0,    58,    60,    61,    62,    63,    77,    78,
+     177,    11,   288,    13,   305,    15,   227,    17,   262,    19,
+     153,    21,    40,    32,     0,     0,     0,     0,     0,   307,
+     229,   264,     0,    42,     0,    41,     0,     0,    33,    54,
+     384,   380,   382,     0,    53,     0,    47,    49,    51,    52,
+      50,    87,     0,     0,   323,    99,   101,     0,     0,     0,
+       0,   169,   219,   254,   133,   347,   145,   164,     0,   368,
+     378,    80,     0,    58,    60,    61,    62,    63,    77,    78,
       65,    66,    67,    68,    72,    73,    64,    70,    71,    79,
       69,    74,    75,    76,    95,    97,     0,    89,    91,    92,
-     350,   202,   204,   206,   279,   200,   208,   210,     0,     0,
-     214,   212,   296,   342,   199,   180,   181,   182,   194,     0,
-     178,   185,   196,   197,   198,   186,   187,   190,   192,   188,
-     189,   183,   184,   191,   195,   193,   294,   293,   292,     0,
-     289,   291,   324,   326,   340,   330,   332,   336,   334,   338,
-     328,   321,   317,     0,   307,   308,   318,   319,   320,   314,
-     310,   315,   312,   313,   316,   311,   243,   126,     0,   247,
-     245,   250,     0,   239,   240,     0,   229,   230,   232,   242,
-     233,   234,   235,   249,   236,   237,   238,   274,     0,   272,
-     273,   276,   277,     0,   264,   265,   267,   268,   269,   270,
-     271,   159,   161,   156,     0,   154,   157,   158,    37,     0,
+     351,   203,   205,   207,   280,   201,   209,   211,     0,     0,
+     215,   213,   297,   343,   200,   181,   182,   183,   195,     0,
+     179,   186,   197,   198,   199,   187,   188,   191,   193,   189,
+     190,   184,   185,   192,   196,   194,   295,   294,   293,     0,
+     290,   292,   325,   327,   341,   331,   333,   337,   335,   339,
+     329,   322,   318,     0,   308,   309,   319,   320,   321,   315,
+     311,   316,   313,   314,   317,   312,   244,   127,     0,   248,
+     246,   251,     0,   240,   241,     0,   230,   231,   233,   243,
+     234,   235,   236,   250,   237,   238,   239,   275,     0,   273,
+     274,   277,   278,     0,   265,   266,   268,   269,   270,   271,
+     272,   160,   162,   157,     0,   155,   158,   159,    37,     0,
        0,    31,     0,     0,     0,     0,     0,    44,     0,    46,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    57,     0,     0,     0,    94,   352,     0,     0,     0,
+       0,    57,     0,     0,     0,    94,   353,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   177,     0,     0,   288,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   305,     0,     0,     0,     0,     0,
-       0,     0,     0,   227,     0,     0,     0,   262,     0,     0,
-       0,     0,   153,    43,    34,     0,     0,     0,     0,     0,
+       0,   178,     0,     0,   289,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   306,     0,     0,     0,     0,     0,
+       0,     0,     0,   228,     0,     0,     0,   263,     0,     0,
+       0,     0,   154,    43,    34,     0,     0,     0,     0,     0,
       48,     0,    85,    86,     0,     0,     0,    81,    82,    83,
-      84,     0,     0,     0,     0,     0,     0,     0,   366,     0,
-       0,    59,     0,     0,    90,   364,   362,   363,   358,   359,
-     360,   361,     0,   353,   354,   356,   357,     0,     0,     0,
-       0,     0,     0,     0,   216,   217,     0,     0,     0,     0,
-     179,     0,   290,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   309,     0,     0,   241,     0,     0,     0,   252,
-     231,     0,   278,   266,     0,     0,   155,     0,     0,     0,
-     380,   382,     0,   323,     0,     0,   170,   220,   255,     0,
-       0,   146,     0,     0,     0,    38,    96,    98,     0,   351,
-       0,   203,   205,   207,   281,   201,   209,   211,   215,   213,
-     298,     0,   295,   325,   327,   341,   331,   333,   337,   335,
-     339,   329,   244,   127,   248,   246,   251,   275,   160,   162,
-      35,     0,   388,     0,   385,   387,     0,   115,   120,   122,
-     124,     0,     0,     0,     0,   114,     0,   103,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,     0,   174,     0,
-     171,   172,   224,     0,   221,   222,   259,     0,   256,   257,
-     140,   141,   142,   143,     0,   134,   136,   137,   138,   139,
-     348,     0,   150,     0,   147,   148,     0,     0,   165,   373,
-     375,     0,   369,   371,   372,     0,    40,     0,   355,   285,
-       0,   282,   283,   302,     0,   299,   300,   344,     0,    55,
-       0,     0,   384,    88,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   100,   102,     0,   169,     0,   228,   219,
-       0,   263,   254,     0,     0,   133,     0,   347,     0,   145,
-       0,     0,     0,   164,     0,     0,     0,   368,   378,     0,
-     365,     0,   280,     0,   306,   297,     0,     0,   343,     0,
-     386,     0,     0,     0,     0,   128,   129,   130,   131,   104,
-       0,   173,     0,   223,     0,   258,   135,   349,     0,   149,
-     167,   166,     0,     0,   370,    39,     0,   284,     0,   301,
-       0,     0,   117,   118,   119,   116,   121,   123,   125,   175,
-     225,   260,   151,   374,   376,   286,   303,   345,   392,     0,
-     390,     0,     0,   389,   404,     0,   402,   400,   396,     0,
-     394,   398,   399,   397,   391,     0,     0,     0,     0,   393,
-       0,   401,     0,   395,     0,   403,   408,     0,   406,     0,
-       0,   405,   412,     0,   410,   407,     0,     0,   409,     0,
-     411,   413
+      84,     0,     0,     0,     0,     0,     0,     0,   367,     0,
+       0,    59,     0,     0,    90,   365,   363,   364,   359,   360,
+     361,   362,     0,   354,   355,   357,   358,     0,     0,     0,
+       0,     0,     0,     0,   217,   218,     0,     0,     0,     0,
+     180,     0,   291,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   310,     0,     0,   242,     0,     0,     0,   253,
+     232,     0,   279,   267,     0,     0,   156,     0,     0,     0,
+     381,   383,     0,   324,     0,     0,   171,   221,   256,     0,
+       0,   147,     0,     0,     0,    38,    96,    98,     0,   352,
+       0,   204,   206,   208,   282,   202,   210,   212,   216,   214,
+     299,     0,   296,   326,   328,   342,   332,   334,   338,   336,
+     340,   330,   245,   128,   249,   247,   252,   276,   161,   163,
+      35,     0,   389,     0,   386,   388,     0,   115,   121,   123,
+     125,     0,     0,     0,     0,   114,     0,   103,   105,   106,
+     107,   108,   109,   110,   111,   112,   113,     0,   175,     0,
+     172,   173,   225,     0,   222,   223,   260,     0,   257,   258,
+     141,   142,   143,   144,     0,   135,   137,   138,   139,   140,
+     349,     0,   151,     0,   148,   149,     0,     0,   166,   374,
+     376,     0,   370,   372,   373,     0,    40,     0,   356,   286,
+       0,   283,   284,   303,     0,   300,   301,   345,     0,    55,
+       0,     0,   385,    88,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   100,   102,     0,   170,     0,   229,   220,
+       0,   264,   255,     0,     0,   134,     0,   348,     0,   146,
+       0,     0,     0,   165,     0,     0,     0,   369,   379,     0,
+     366,     0,   281,     0,   307,   298,     0,     0,   344,     0,
+     387,     0,     0,     0,     0,   129,   130,   131,   132,   104,
+       0,   174,     0,   224,     0,   259,   136,   350,     0,   150,
+     168,   167,     0,     0,   371,    39,     0,   285,     0,   302,
+       0,     0,   117,   118,   119,   120,   116,   122,   124,   126,
+     176,   226,   261,   152,   375,   377,   287,   304,   346,   393,
+       0,   391,     0,     0,   390,   405,     0,   403,   401,   397,
+       0,   395,   399,   400,   398,   392,     0,     0,     0,     0,
+     394,     0,   402,     0,   396,     0,   404,   409,     0,   407,
+       0,     0,   406,   413,     0,   411,   408,     0,     0,   410,
+       0,   412,   414
   };
 
   const short int
   Dhcp4Parser::yypgoto_[] =
   {
     -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-    -399,  -399,     9,  -399,  -399,  -399,  -399,   -16,  -399,  -399,
-      46,  -399,   -94,  -399,   -54,  -399,  -399,  -399,   190,  -399,
-    -399,  -399,  -399,    26,   165,   -56,   -40,   -38,  -399,  -399,
-     -37,  -399,  -399,    24,   166,  -399,  -399,  -399,  -399,  -399,
-    -399,  -399,  -399,  -399,  -399,    27,  -109,  -399,  -399,  -399,
+    -399,  -399,     9,  -399,  -399,  -399,  -399,    -4,  -399,  -399,
+      36,  -399,   -90,  -399,   -54,  -399,  -399,  -399,   194,  -399,
+    -399,  -399,  -399,    29,   174,   -56,   -40,   -38,  -399,  -399,
+     -37,  -399,  -399,    28,   167,  -399,  -399,  -399,  -399,  -399,
+    -399,  -399,  -399,  -399,  -399,    38,  -114,  -399,  -399,  -399,
     -399,  -399,  -399,  -399,  -399,  -399,   -59,  -399,  -399,  -399,
-    -399,  -399,  -399,  -399,  -399,  -120,  -399,  -399,  -399,  -399,
-    -399,  -399,  -399,  -399,  -125,  -399,  -399,  -399,  -116,   134,
-    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -115,  -399,  -399,
-    -399,  -399,  -101,  -399,  -399,  -399,   -97,   172,  -399,  -399,
+    -399,  -399,  -399,  -399,  -399,  -121,  -399,  -399,  -399,  -399,
+    -399,  -399,  -399,  -399,  -125,  -399,  -399,  -399,  -109,   133,
+    -399,  -399,  -399,  -399,  -399,  -399,  -399,  -108,  -399,  -399,
+    -399,  -399,   -94,  -399,  -399,  -399,   -89,   175,  -399,  -399,
     -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
     -398,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-     -95,  -399,  -399,  -399,   -91,  -399,   154,  -399,   -52,  -399,
+     -93,  -399,  -399,  -399,   -88,  -399,   157,  -399,   -52,  -399,
     -399,  -399,  -399,  -399,   -48,  -399,  -399,  -399,  -399,  -399,
-     -47,  -399,  -399,  -399,   -93,  -399,  -399,  -399,   -92,  -399,
-     155,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-    -399,  -112,  -399,  -399,  -399,  -107,   184,  -399,  -399,  -399,
-    -399,  -399,  -399,  -114,  -399,  -399,  -399,  -108,  -399,   170,
+     -47,  -399,  -399,  -399,   -95,  -399,  -399,  -399,   -92,  -399,
+     160,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
+    -399,  -111,  -399,  -399,  -399,  -107,   182,  -399,  -399,  -399,
+    -399,  -399,  -399,  -113,  -399,  -399,  -399,  -105,  -399,   176,
      -43,  -399,  -261,  -399,  -258,  -399,  -399,  -399,  -399,  -399,
     -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
     -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-      48,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   -96,  -399,
+      46,  -399,  -399,  -399,  -399,  -399,  -399,  -399,   -99,  -399,
     -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,  -399,
-    -399,  -399,   -62,  -399,  -399,  -399,  -161,  -399,  -399,  -176,
+    -399,  -399,   -61,  -399,  -399,  -399,  -161,  -399,  -399,  -176,
     -399,  -399,  -399,  -399,  -399,  -399,  -187,  -399,  -399,  -193,
     -399
   };
@@ -2966,7 +2972,7 @@ namespace isc { namespace dhcp {
      426,   526,    64,    65,   101,    35,    54,    75,    76,    77,
      243,    37,    55,   102,   103,   104,   105,   106,   107,   108,
      109,   110,   250,   126,   127,    39,    56,   128,   272,   129,
-     273,   111,   254,   112,   255,   476,   477,   478,   544,   625,
+     273,   111,   254,   112,   255,   476,   477,   478,   544,   626,
      479,   545,   480,   546,   481,   547,   204,   307,   483,   484,
      485,   486,   113,   263,   504,   505,   506,   507,   508,   509,
      114,   265,   513,   514,   515,   568,    51,    62,   234,   235,
@@ -2985,9 +2991,9 @@ namespace isc { namespace dhcp {
      165,   289,   538,   587,   120,   264,   511,   276,   362,   363,
      364,   365,   366,   428,   121,   122,   268,   521,   522,   523,
      574,   524,   575,   123,   269,    78,   245,    79,   246,    80,
-     244,   463,   464,   465,   540,   639,   640,   641,   649,   650,
-     651,   652,   657,   653,   655,   667,   668,   669,   673,   674,
-     676
+     244,   463,   464,   465,   540,   640,   641,   642,   650,   651,
+     652,   653,   658,   654,   656,   668,   669,   670,   674,   675,
+     677
   };
 
   const unsigned short int
@@ -2995,53 +3001,53 @@ namespace isc { namespace dhcp {
   {
       74,   145,   220,   144,   167,   181,   203,   219,   233,   221,
      161,   168,   182,   222,   164,   360,   186,   146,   361,   147,
-     148,    30,   510,    23,   130,    24,    69,    25,    93,   130,
-      22,   564,    83,    84,   565,   231,   232,    66,   166,    84,
-     172,   173,   197,   217,   198,   199,   218,    34,   248,    87,
-      88,    89,   197,   249,   131,   132,   133,   270,    93,    36,
-     274,    73,   271,   290,    93,   275,    38,   134,   291,   135,
-     136,   137,   138,   139,   140,   293,   321,    40,   141,   142,
-     294,   322,   174,   141,    73,   143,   175,   176,   177,   178,
-     179,   644,   180,   645,   646,    70,   566,    73,    42,   567,
-      81,    71,    72,    82,    83,    84,    44,    73,    85,    86,
-      84,   172,   173,    73,    73,    26,    27,    28,    29,    46,
-      73,    87,    88,    89,    90,    91,   270,   541,   274,    92,
-      93,   539,   542,   543,   467,    93,   197,    48,   468,   469,
-     470,   471,   472,   473,   474,    50,   552,    94,    95,   239,
-     196,   553,   552,   572,   355,   197,   576,   554,   573,    96,
-     242,   577,    97,    98,    99,   578,   238,   100,   607,   360,
-     290,   197,   361,   198,   199,   629,   200,   201,   202,   321,
-     293,   241,   658,   677,   632,   635,    73,   659,   678,   642,
-     670,    73,   643,   671,    74,     1,     2,     3,     4,     5,
-       6,     7,     8,     9,    10,   500,   501,   502,   503,   240,
-      73,   622,   623,   624,   124,   125,   242,   357,   231,   232,
-     519,   520,   356,   247,   251,   252,    73,   256,   257,   358,
-     258,   259,   267,   359,   145,   284,   144,   285,   304,   167,
-     305,   332,   308,   161,   312,   314,   168,   164,   323,   324,
-     146,   181,   147,   148,   313,   316,   317,   318,   182,   220,
-     203,   325,   186,   326,   219,   327,   221,   328,   329,   331,
-     222,   333,   334,   335,   336,   341,   337,   342,   343,   338,
-     339,   340,   344,   345,   346,   347,   348,   349,   350,   352,
-     353,   367,   368,   369,   370,   371,   372,   373,   374,   375,
-     376,   377,   378,   379,   381,   383,   384,   385,   386,   387,
-     388,   389,   390,   391,   393,   394,   395,   396,   397,   398,
-     401,   404,   399,   405,   407,   402,   413,   462,   408,   409,
-     412,   414,   415,   416,   417,   418,   419,   410,   411,   420,
-     421,   427,   431,   422,   423,   424,   425,   429,   430,   432,
-     433,   434,   435,   436,   437,   482,   482,   438,   440,   439,
-     475,   475,   441,   442,   443,   488,   492,   496,   512,   444,
-     527,   357,   446,   447,   448,   529,   356,   533,   548,   449,
-     549,   550,   551,   358,   557,   556,   559,   359,   560,   562,
-     563,   450,   451,   570,   569,   571,   583,   588,   582,   586,
-     585,   589,   591,   592,   593,   594,   612,   613,   525,   452,
-     615,   620,   537,   621,   459,   453,   460,   630,   631,   636,
-     638,   656,   660,   454,   455,   662,   666,   664,   679,   456,
-     457,   445,   579,   672,   461,   351,   466,   458,   330,   516,
-     354,   580,   487,   599,   606,   609,   596,   595,   598,   597,
-     610,   626,   608,   627,   628,   406,   601,   611,   600,   633,
-     634,   637,   380,   661,   665,   603,   681,   602,   400,   604,
-     605,   617,   619,   403,   616,   392,   618,   382,   528,   590,
-     614,   654,   663,   675,   680,     0,     0,     0,     0,     0,
+     148,    30,   510,    23,   130,    24,    69,    25,    93,   248,
+     270,    22,    83,    84,   249,   271,   231,   232,   166,    84,
+     172,   173,   124,   125,    34,   197,   217,   198,   199,   218,
+      87,    88,    89,   197,    36,   131,   132,   133,   130,    93,
+     564,   274,    73,   565,    66,    93,   275,    38,   134,    40,
+     135,   136,   137,   138,   139,   140,   290,   231,   232,   141,
+     142,   291,   196,   174,    73,    42,   143,   175,   176,   177,
+     178,   179,   645,   180,   646,   647,    70,    84,   172,   173,
+      73,    44,    71,    72,   197,    46,   198,   199,    73,   200,
+     201,   202,    48,   141,    73,    73,    26,    27,    28,    29,
+      50,    73,    81,    93,   197,    82,    83,    84,   467,   566,
+      85,    86,   567,   468,   469,   470,   471,   472,   473,   474,
+     519,   520,   355,   239,    87,    88,    89,    90,    91,   293,
+     197,   321,    92,    93,   294,   270,   322,   541,   274,    73,
+     539,   552,   542,   543,   643,   238,   553,   644,   607,   360,
+      94,    95,   361,   552,   671,   572,   576,   672,   554,    73,
+     573,   577,    96,   242,   290,    97,    98,    99,   578,   630,
+     100,   321,   293,   659,    74,   678,   633,   636,   660,   240,
+     679,   500,   501,   502,   503,    73,   241,   242,   304,    73,
+     247,   251,   252,   622,   623,   624,   625,   357,   256,   257,
+     258,   259,   356,   267,   284,   285,   305,   325,   308,   358,
+     312,   314,   318,   359,   145,   313,   144,   316,   317,   167,
+     326,   327,   328,   161,   329,   331,   168,   164,   323,   324,
+     146,   181,   147,   148,   332,   334,   335,   333,   182,   220,
+     203,   336,   186,   337,   219,   338,   221,   339,   340,   341,
+     222,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,   342,   343,   344,   345,   346,   347,   349,   350,   352,
+     353,   367,   348,   368,   369,   370,   371,   372,   373,   376,
+     374,   377,   378,   375,   379,   381,   383,   384,   385,   386,
+     387,   388,   389,   390,   391,   393,   394,   395,   396,   397,
+     398,   401,   404,   399,   405,   407,   402,   429,   430,   408,
+     409,   412,   413,   414,   415,   416,   417,   410,   411,   418,
+     419,   420,   421,   427,   431,   422,   423,   424,   425,   434,
+     440,   432,   433,   435,   436,   482,   482,   437,   438,   439,
+     475,   475,   441,   488,   442,   443,   444,   446,   447,   448,
+     449,   357,   450,   451,   452,   492,   356,   496,   512,   527,
+     529,   533,   548,   358,   549,   550,   453,   359,   551,   556,
+     557,   559,   560,   621,   454,   563,   562,   455,   570,   569,
+     571,   583,   588,   582,   586,   585,   589,   591,   592,   593,
+     594,   456,   537,   462,   459,   612,   460,   613,   615,   620,
+     525,   445,   631,   657,   632,   637,   457,   458,   639,   661,
+     663,   516,   665,   673,   680,   667,   579,   461,   599,   580,
+     466,   354,   330,   606,   351,   609,   596,   595,   598,   597,
+     610,   627,   628,   487,   406,   629,   634,   635,   638,   608,
+     662,   666,   682,   601,   611,   380,   600,   603,   605,   604,
+     602,   400,   617,   619,   616,   382,   528,   614,   403,   618,
+     590,   392,   655,   664,   676,   681,     0,     0,     0,     0,
        0,     0,     0,   482,     0,     0,     0,     0,   475,   145,
        0,   144,   220,     0,   203,     0,     0,   219,   161,   221,
        0,     0,   164,   222,   233,   146,     0,   147,   148,     0,
@@ -3051,9 +3057,9 @@ namespace isc { namespace dhcp {
        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,   648,     0,     0,     0,     0,   647,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   648,
-       0,     0,     0,     0,   647
+       0,     0,     0,   649,     0,     0,     0,     0,   648,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     649,     0,     0,     0,     0,   648
   };
 
   const short int
@@ -3061,53 +3067,53 @@ namespace isc { namespace dhcp {
   {
       54,    57,    61,    57,    58,    59,    60,    61,    62,    61,
       57,    58,    59,    61,    57,   276,    59,    57,   276,    57,
-      57,    12,   420,     5,     7,     7,    10,     9,    41,     7,
-       0,     3,    15,    16,     6,    71,    72,    97,    51,    16,
-      17,    18,    42,    43,    44,    45,    46,     7,     3,    32,
-      33,    34,    42,     8,    37,    38,    39,     3,    41,     7,
-       3,    97,     8,     3,    41,     8,     7,    50,     8,    52,
-      53,    54,    55,    56,    57,     3,     3,     7,    61,    62,
-       8,     8,    59,    61,    97,    68,    63,    64,    65,    66,
-      67,    81,    69,    83,    84,    79,     3,    97,     7,     6,
-      11,    85,    86,    14,    15,    16,     7,    97,    19,    20,
-      16,    17,    18,    97,    97,    97,    98,    99,   100,     7,
-      97,    32,    33,    34,    35,    36,     3,     3,     3,    40,
-      41,     8,     8,     8,    21,    41,    42,     7,    25,    26,
-      27,    28,    29,    30,    31,     7,     3,    58,    59,     3,
-      21,     8,     3,     3,    60,    42,     3,     8,     8,    70,
-       3,     8,    73,    74,    75,     8,     6,    78,   566,   430,
-       3,    42,   430,    44,    45,     8,    47,    48,    49,     3,
-       3,     8,     3,     3,     8,     8,    97,     8,     8,     3,
-       3,    97,     6,     6,   248,    87,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    63,    64,    65,    66,     4,
-      97,    22,    23,    24,    12,    13,     3,   276,    71,    72,
-      76,    77,   276,     4,     4,     4,    97,     4,     4,   276,
-       4,     4,     4,   276,   290,     4,   290,     4,     8,   293,
-       3,   100,     4,   290,     4,     3,   293,   290,   239,   240,
-     290,   305,   290,   290,     8,     4,     8,     3,   305,   318,
-     314,    97,   305,     4,   318,     4,   318,     4,     4,     4,
-     318,   100,     4,     4,     4,     4,    98,     4,     4,    98,
-      98,    98,     4,     4,     4,     4,    98,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,    98,   100,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,    98,     4,     4,     4,
-       4,     4,   100,     4,     4,   100,    97,    80,     7,     7,
-       7,     7,     7,     5,     5,     5,     5,   328,   329,     5,
-       5,    97,    97,     7,     7,     7,     5,     8,     3,    97,
-      97,     5,    97,    97,    97,   414,   415,    97,     5,    97,
-     414,   415,     7,    97,    97,     7,     7,     7,     7,    97,
-       4,   430,    97,    97,    97,     7,   430,     7,     4,    97,
-       4,     4,     4,   430,     3,     6,     6,   430,     3,     6,
-       3,    97,    97,     3,     6,     4,     3,     8,     6,     3,
-       6,     4,     4,     4,     4,     4,     4,     4,   424,    97,
-       6,     4,    69,     5,   405,    97,   407,     8,     8,     8,
-       7,     4,     4,    97,    97,     4,     7,     5,     4,    97,
-      97,   385,   526,    82,   408,   270,   412,    97,   248,    97,
-     274,    97,   415,   552,   564,   570,    98,   100,    98,   100,
-      98,    97,   568,    97,    97,   321,   557,   572,   555,    97,
-      97,    97,   290,    98,    97,   560,    97,   558,   314,   561,
-     563,   583,   586,   318,   581,   305,   584,   293,   430,   541,
-     576,   642,   658,   670,   677,    -1,    -1,    -1,    -1,    -1,
+      57,    12,   420,     5,     7,     7,    10,     9,    42,     3,
+       3,     0,    15,    16,     8,     8,    72,    73,    52,    16,
+      17,    18,    12,    13,     7,    43,    44,    45,    46,    47,
+      33,    34,    35,    43,     7,    38,    39,    40,     7,    42,
+       3,     3,    98,     6,    98,    42,     8,     7,    51,     7,
+      53,    54,    55,    56,    57,    58,     3,    72,    73,    62,
+      63,     8,    21,    60,    98,     7,    69,    64,    65,    66,
+      67,    68,    82,    70,    84,    85,    80,    16,    17,    18,
+      98,     7,    86,    87,    43,     7,    45,    46,    98,    48,
+      49,    50,     7,    62,    98,    98,    98,    99,   100,   101,
+       7,    98,    11,    42,    43,    14,    15,    16,    21,     3,
+      19,    20,     6,    26,    27,    28,    29,    30,    31,    32,
+      77,    78,    61,     3,    33,    34,    35,    36,    37,     3,
+      43,     3,    41,    42,     8,     3,     8,     3,     3,    98,
+       8,     3,     8,     8,     3,     6,     8,     6,   566,   430,
+      59,    60,   430,     3,     3,     3,     3,     6,     8,    98,
+       8,     8,    71,     3,     3,    74,    75,    76,     8,     8,
+      79,     3,     3,     3,   248,     3,     8,     8,     8,     4,
+       8,    64,    65,    66,    67,    98,     8,     3,     8,    98,
+       4,     4,     4,    22,    23,    24,    25,   276,     4,     4,
+       4,     4,   276,     4,     4,     4,     3,    98,     4,   276,
+       4,     3,     3,   276,   290,     8,   290,     4,     8,   293,
+       4,     4,     4,   290,     4,     4,   293,   290,   239,   240,
+     290,   305,   290,   290,   101,     4,     4,   101,   305,   318,
+     314,     4,   305,    99,   318,    99,   318,    99,    99,     4,
+     318,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,    99,     4,     4,     4,     4,     4,     4,     4,
+      99,     4,     4,   101,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,    99,     4,     4,
+       4,     4,     4,   101,     4,     4,   101,     8,     3,     7,
+       7,     7,    98,     7,     7,     5,     5,   328,   329,     5,
+       5,     5,     5,    98,    98,     7,     7,     7,     5,     5,
+       5,    98,    98,    98,    98,   414,   415,    98,    98,    98,
+     414,   415,     7,     7,    98,    98,    98,    98,    98,    98,
+      98,   430,    98,    98,    98,     7,   430,     7,     7,     4,
+       7,     7,     4,   430,     4,     4,    98,   430,     4,     6,
+       3,     6,     3,     5,    98,     3,     6,    98,     3,     6,
+       4,     3,     8,     6,     3,     6,     4,     4,     4,     4,
+       4,    98,    70,    81,   405,     4,   407,     4,     6,     4,
+     424,   385,     8,     4,     8,     8,    98,    98,     7,     4,
+       4,    98,     5,    83,     4,     7,   526,   408,   552,    98,
+     412,   274,   248,   564,   270,   570,    99,   101,    99,   101,
+      99,    98,    98,   415,   321,    98,    98,    98,    98,   568,
+      99,    98,    98,   557,   572,   290,   555,   560,   563,   561,
+     558,   314,   583,   586,   581,   293,   430,   576,   318,   584,
+     541,   305,   643,   659,   671,   678,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,   552,    -1,    -1,    -1,    -1,   552,   555,
       -1,   555,   561,    -1,   558,    -1,    -1,   561,   555,   561,
       -1,    -1,   555,   561,   568,   555,    -1,   555,   555,    -1,
@@ -3117,130 +3123,130 @@ namespace isc { namespace dhcp {
       -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,   641,    -1,    -1,    -1,    -1,   641,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   658,
-      -1,    -1,    -1,    -1,   658
+      -1,    -1,    -1,   642,    -1,    -1,    -1,    -1,   642,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     659,    -1,    -1,    -1,    -1,   659
   };
 
   const unsigned short int
   Dhcp4Parser::yystos_[] =
   {
-       0,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-      96,   102,   103,   104,   105,   106,   107,   108,   109,   110,
-     111,   112,     0,     5,     7,     9,    97,    98,    99,   100,
-     113,   114,   115,   119,     7,   126,     7,   132,     7,   146,
-       7,   205,     7,   274,     7,   286,     7,   233,     7,   257,
-       7,   187,   120,   116,   127,   133,   147,   206,   275,   287,
-     234,   258,   188,   113,   123,   124,    97,   117,   118,    10,
-      79,    85,    86,    97,   125,   128,   129,   130,   336,   338,
-     340,    11,    14,    15,    16,    19,    20,    32,    33,    34,
-      35,    36,    40,    41,    58,    59,    70,    73,    74,    75,
-      78,   125,   134,   135,   136,   137,   138,   139,   140,   141,
-     142,   152,   154,   173,   181,   195,   199,   227,   251,   291,
-     315,   325,   326,   334,    12,    13,   144,   145,   148,   150,
-       7,    37,    38,    39,    50,    52,    53,    54,    55,    56,
-      57,    61,    62,    68,   125,   136,   137,   138,   141,   207,
-     208,   209,   211,   213,   215,   217,   219,   221,   223,   225,
-     226,   251,   268,   280,   291,   311,    51,   125,   251,   276,
-     277,   278,    17,    18,    59,    63,    64,    65,    66,    67,
-      69,   125,   251,   288,   289,   290,   291,   293,   295,   297,
-     299,   301,   303,   305,   307,   309,    21,    42,    44,    45,
-      47,    48,    49,   125,   167,   235,   236,   237,   238,   239,
-     240,   241,   243,   245,   247,   248,   250,    43,    46,   125,
-     167,   239,   245,   259,   260,   261,   262,   263,   265,   266,
-     267,    71,    72,   125,   189,   190,   191,   193,     6,     3,
-       4,     8,     3,   131,   341,   337,   339,     4,     3,     8,
-     143,     4,     4,   292,   153,   155,     4,     4,     4,     4,
-     200,   228,   252,   174,   316,   182,   196,     4,   327,   335,
-       3,     8,   149,   151,     3,     8,   318,   212,   214,   216,
-     269,   210,   218,   220,     4,     4,   224,   222,   281,   312,
-       3,     8,   279,     3,     8,   294,   296,   310,   300,   302,
-     306,   304,   308,   298,     8,     3,   242,   168,     4,   246,
-     244,   249,     4,     8,     3,   264,     4,     8,     3,   192,
-     194,     3,     8,   113,   113,    97,     4,     4,     4,     4,
-     129,     4,   100,   100,     4,     4,     4,    98,    98,    98,
-      98,     4,     4,     4,     4,     4,     4,     4,    98,     4,
-       4,   135,     4,     4,   145,    60,   125,   167,   251,   291,
-     293,   295,   319,   320,   321,   322,   323,     4,     4,     4,
-       4,     4,     4,     4,    98,   100,     4,     4,     4,     4,
-     208,     4,   277,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,   290,     4,     4,    98,     4,     4,     4,   100,
-     237,     4,   100,   261,     4,     4,   190,     4,     7,     7,
-     113,   113,     7,    97,     7,     7,     5,     5,     5,     5,
-       5,     5,     7,     7,     7,     5,   121,    97,   324,     8,
-       3,    97,    97,    97,     5,    97,    97,    97,    97,    97,
-       5,     7,    97,    97,    97,   121,    97,    97,    97,    97,
-      97,    97,    97,    97,    97,    97,    97,    97,    97,   113,
-     113,   134,    80,   342,   343,   344,   144,    21,    25,    26,
-      27,    28,    29,    30,    31,   125,   156,   157,   158,   161,
-     163,   165,   167,   169,   170,   171,   172,   156,     7,   201,
-     202,   203,     7,   229,   230,   231,     7,   253,   254,   255,
-      63,    64,    65,    66,   175,   176,   177,   178,   179,   180,
-     221,   317,     7,   183,   184,   185,    97,   197,   198,    76,
-      77,   328,   329,   330,   332,   118,   122,     4,   321,     7,
-     270,   271,   272,     7,   282,   283,   284,    69,   313,     8,
-     345,     3,     8,     8,   159,   162,   164,   166,     4,     4,
-       4,     4,     3,     8,     8,   204,     6,     3,   232,     6,
-       3,   256,     6,     3,     3,     6,     3,     6,   186,     6,
-       3,     4,     3,     8,   331,   333,     3,     8,     8,   123,
-      97,   273,     6,     3,   285,     6,     3,   314,     8,     4,
-     343,     4,     4,     4,     4,   100,    98,   100,    98,   157,
-     207,   203,   235,   231,   259,   255,   176,   221,   189,   185,
-      98,   198,     4,     4,   329,     6,   276,   272,   288,   284,
-       4,     5,    22,    23,    24,   160,    97,    97,    97,     8,
-       8,     8,     8,    97,    97,     8,     8,    97,     7,   346,
-     347,   348,     3,     6,    81,    83,    84,   125,   167,   349,
-     350,   351,   352,   354,   347,   355,     4,   353,     3,     8,
-       4,    98,     4,   350,     5,    97,     7,   356,   357,   358,
-       3,     6,    82,   359,   360,   357,   361,     3,     8,     4,
-     360,    97
+       0,    88,    89,    90,    91,    92,    93,    94,    95,    96,
+      97,   103,   104,   105,   106,   107,   108,   109,   110,   111,
+     112,   113,     0,     5,     7,     9,    98,    99,   100,   101,
+     114,   115,   116,   120,     7,   127,     7,   133,     7,   147,
+       7,   206,     7,   275,     7,   287,     7,   234,     7,   258,
+       7,   188,   121,   117,   128,   134,   148,   207,   276,   288,
+     235,   259,   189,   114,   124,   125,    98,   118,   119,    10,
+      80,    86,    87,    98,   126,   129,   130,   131,   337,   339,
+     341,    11,    14,    15,    16,    19,    20,    33,    34,    35,
+      36,    37,    41,    42,    59,    60,    71,    74,    75,    76,
+      79,   126,   135,   136,   137,   138,   139,   140,   141,   142,
+     143,   153,   155,   174,   182,   196,   200,   228,   252,   292,
+     316,   326,   327,   335,    12,    13,   145,   146,   149,   151,
+       7,    38,    39,    40,    51,    53,    54,    55,    56,    57,
+      58,    62,    63,    69,   126,   137,   138,   139,   142,   208,
+     209,   210,   212,   214,   216,   218,   220,   222,   224,   226,
+     227,   252,   269,   281,   292,   312,    52,   126,   252,   277,
+     278,   279,    17,    18,    60,    64,    65,    66,    67,    68,
+      70,   126,   252,   289,   290,   291,   292,   294,   296,   298,
+     300,   302,   304,   306,   308,   310,    21,    43,    45,    46,
+      48,    49,    50,   126,   168,   236,   237,   238,   239,   240,
+     241,   242,   244,   246,   248,   249,   251,    44,    47,   126,
+     168,   240,   246,   260,   261,   262,   263,   264,   266,   267,
+     268,    72,    73,   126,   190,   191,   192,   194,     6,     3,
+       4,     8,     3,   132,   342,   338,   340,     4,     3,     8,
+     144,     4,     4,   293,   154,   156,     4,     4,     4,     4,
+     201,   229,   253,   175,   317,   183,   197,     4,   328,   336,
+       3,     8,   150,   152,     3,     8,   319,   213,   215,   217,
+     270,   211,   219,   221,     4,     4,   225,   223,   282,   313,
+       3,     8,   280,     3,     8,   295,   297,   311,   301,   303,
+     307,   305,   309,   299,     8,     3,   243,   169,     4,   247,
+     245,   250,     4,     8,     3,   265,     4,     8,     3,   193,
+     195,     3,     8,   114,   114,    98,     4,     4,     4,     4,
+     130,     4,   101,   101,     4,     4,     4,    99,    99,    99,
+      99,     4,     4,     4,     4,     4,     4,     4,    99,     4,
+       4,   136,     4,     4,   146,    61,   126,   168,   252,   292,
+     294,   296,   320,   321,   322,   323,   324,     4,     4,     4,
+       4,     4,     4,     4,    99,   101,     4,     4,     4,     4,
+     209,     4,   278,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,   291,     4,     4,    99,     4,     4,     4,   101,
+     238,     4,   101,   262,     4,     4,   191,     4,     7,     7,
+     114,   114,     7,    98,     7,     7,     5,     5,     5,     5,
+       5,     5,     7,     7,     7,     5,   122,    98,   325,     8,
+       3,    98,    98,    98,     5,    98,    98,    98,    98,    98,
+       5,     7,    98,    98,    98,   122,    98,    98,    98,    98,
+      98,    98,    98,    98,    98,    98,    98,    98,    98,   114,
+     114,   135,    81,   343,   344,   345,   145,    21,    26,    27,
+      28,    29,    30,    31,    32,   126,   157,   158,   159,   162,
+     164,   166,   168,   170,   171,   172,   173,   157,     7,   202,
+     203,   204,     7,   230,   231,   232,     7,   254,   255,   256,
+      64,    65,    66,    67,   176,   177,   178,   179,   180,   181,
+     222,   318,     7,   184,   185,   186,    98,   198,   199,    77,
+      78,   329,   330,   331,   333,   119,   123,     4,   322,     7,
+     271,   272,   273,     7,   283,   284,   285,    70,   314,     8,
+     346,     3,     8,     8,   160,   163,   165,   167,     4,     4,
+       4,     4,     3,     8,     8,   205,     6,     3,   233,     6,
+       3,   257,     6,     3,     3,     6,     3,     6,   187,     6,
+       3,     4,     3,     8,   332,   334,     3,     8,     8,   124,
+      98,   274,     6,     3,   286,     6,     3,   315,     8,     4,
+     344,     4,     4,     4,     4,   101,    99,   101,    99,   158,
+     208,   204,   236,   232,   260,   256,   177,   222,   190,   186,
+      99,   199,     4,     4,   330,     6,   277,   273,   289,   285,
+       4,     5,    22,    23,    24,    25,   161,    98,    98,    98,
+       8,     8,     8,     8,    98,    98,     8,     8,    98,     7,
+     347,   348,   349,     3,     6,    82,    84,    85,   126,   168,
+     350,   351,   352,   353,   355,   348,   356,     4,   354,     3,
+       8,     4,    99,     4,   351,     5,    98,     7,   357,   358,
+     359,     3,     6,    83,   360,   361,   358,   362,     3,     8,
+       4,   361,    98
   };
 
   const unsigned short int
   Dhcp4Parser::yyr1_[] =
   {
-       0,   101,   103,   102,   104,   102,   105,   102,   106,   102,
-     107,   102,   108,   102,   109,   102,   110,   102,   111,   102,
-     112,   102,   113,   113,   113,   113,   113,   113,   113,   114,
-     116,   115,   117,   117,   118,   118,   120,   119,   122,   121,
-     123,   123,   124,   124,   125,   127,   126,   128,   128,   129,
-     129,   129,   129,   129,   131,   130,   133,   132,   134,   134,
-     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
-     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
-     135,   136,   137,   138,   139,   140,   141,   143,   142,   144,
-     144,   145,   145,   147,   146,   149,   148,   151,   150,   153,
-     152,   155,   154,   156,   156,   157,   157,   157,   157,   157,
-     157,   157,   157,   157,   157,   159,   158,   160,   160,   160,
-     162,   161,   164,   163,   166,   165,   168,   167,   169,   170,
-     171,   172,   174,   173,   175,   175,   176,   176,   176,   176,
-     177,   178,   179,   180,   182,   181,   183,   183,   184,   184,
-     186,   185,   188,   187,   189,   189,   189,   190,   190,   192,
-     191,   194,   193,   196,   195,   197,   197,   198,   200,   199,
-     201,   201,   202,   202,   204,   203,   206,   205,   207,   207,
-     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
-     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
-     210,   209,   212,   211,   214,   213,   216,   215,   218,   217,
-     220,   219,   222,   221,   224,   223,   225,   226,   228,   227,
-     229,   229,   230,   230,   232,   231,   234,   233,   235,   235,
-     236,   236,   237,   237,   237,   237,   237,   237,   237,   237,
-     238,   239,   240,   242,   241,   244,   243,   246,   245,   247,
-     249,   248,   250,   252,   251,   253,   253,   254,   254,   256,
-     255,   258,   257,   259,   259,   260,   260,   261,   261,   261,
-     261,   261,   261,   262,   264,   263,   265,   266,   267,   269,
-     268,   270,   270,   271,   271,   273,   272,   275,   274,   276,
-     276,   277,   277,   277,   279,   278,   281,   280,   282,   282,
-     283,   283,   285,   284,   287,   286,   288,   288,   289,   289,
-     290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
-     290,   290,   292,   291,   294,   293,   296,   295,   298,   297,
-     300,   299,   302,   301,   304,   303,   306,   305,   308,   307,
-     310,   309,   312,   311,   314,   313,   316,   315,   317,   317,
-     318,   221,   319,   319,   320,   320,   321,   321,   321,   321,
-     321,   321,   321,   322,   324,   323,   325,   327,   326,   328,
-     328,   329,   329,   331,   330,   333,   332,   335,   334,   337,
-     336,   339,   338,   341,   340,   342,   342,   343,   345,   344,
-     346,   346,   348,   347,   349,   349,   350,   350,   350,   350,
-     350,   351,   353,   352,   355,   354,   356,   356,   358,   357,
-     359,   359,   361,   360
+       0,   102,   104,   103,   105,   103,   106,   103,   107,   103,
+     108,   103,   109,   103,   110,   103,   111,   103,   112,   103,
+     113,   103,   114,   114,   114,   114,   114,   114,   114,   115,
+     117,   116,   118,   118,   119,   119,   121,   120,   123,   122,
+     124,   124,   125,   125,   126,   128,   127,   129,   129,   130,
+     130,   130,   130,   130,   132,   131,   134,   133,   135,   135,
+     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
+     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
+     136,   137,   138,   139,   140,   141,   142,   144,   143,   145,
+     145,   146,   146,   148,   147,   150,   149,   152,   151,   154,
+     153,   156,   155,   157,   157,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   160,   159,   161,   161,   161,
+     161,   163,   162,   165,   164,   167,   166,   169,   168,   170,
+     171,   172,   173,   175,   174,   176,   176,   177,   177,   177,
+     177,   178,   179,   180,   181,   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,   209,   209,
+     209,   211,   210,   213,   212,   215,   214,   217,   216,   219,
+     218,   221,   220,   223,   222,   225,   224,   226,   227,   229,
+     228,   230,   230,   231,   231,   233,   232,   235,   234,   236,
+     236,   237,   237,   238,   238,   238,   238,   238,   238,   238,
+     238,   239,   240,   241,   243,   242,   245,   244,   247,   246,
+     248,   250,   249,   251,   253,   252,   254,   254,   255,   255,
+     257,   256,   259,   258,   260,   260,   261,   261,   262,   262,
+     262,   262,   262,   262,   263,   265,   264,   266,   267,   268,
+     270,   269,   271,   271,   272,   272,   274,   273,   276,   275,
+     277,   277,   278,   278,   278,   280,   279,   282,   281,   283,
+     283,   284,   284,   286,   285,   288,   287,   289,   289,   290,
+     290,   291,   291,   291,   291,   291,   291,   291,   291,   291,
+     291,   291,   291,   293,   292,   295,   294,   297,   296,   299,
+     298,   301,   300,   303,   302,   305,   304,   307,   306,   309,
+     308,   311,   310,   313,   312,   315,   314,   317,   316,   318,
+     318,   319,   222,   320,   320,   321,   321,   322,   322,   322,
+     322,   322,   322,   322,   323,   325,   324,   326,   328,   327,
+     329,   329,   330,   330,   332,   331,   334,   333,   336,   335,
+     338,   337,   340,   339,   342,   341,   343,   343,   344,   346,
+     345,   347,   347,   349,   348,   350,   350,   351,   351,   351,
+     351,   351,   352,   354,   353,   356,   355,   357,   357,   359,
+     358,   360,   360,   362,   361
   };
 
   const unsigned char
@@ -3258,36 +3264,36 @@ namespace isc { namespace dhcp {
        3,     1,     1,     0,     4,     0,     4,     0,     4,     0,
        6,     0,     6,     1,     3,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     0,     4,     1,     1,     1,
-       0,     4,     0,     4,     0,     4,     0,     4,     3,     3,
-       3,     3,     0,     6,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     6,     0,     1,     1,     3,
-       0,     4,     0,     4,     1,     3,     1,     1,     1,     0,
-       4,     0,     4,     0,     6,     1,     3,     3,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     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,     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,
+       1,     0,     4,     0,     4,     0,     4,     0,     4,     3,
+       3,     3,     3,     0,     6,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     0,     6,     0,     1,     1,
+       3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
+       0,     4,     0,     4,     0,     6,     1,     3,     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,     0,     1,     1,     3,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     0,     4,     0,     4,     0,     4,     0,     4,
-       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,     1,     1,     1,     0,     4,     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,     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,     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,     0,     1,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
+       4,     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,     1,     1,     1,     0,     4,     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
   };
 
 
@@ -3303,8 +3309,8 @@ namespace isc { namespace dhcp {
   "\"echo-client-id\"", "\"match-client-id\"", "\"next-server\"",
   "\"server-hostname\"", "\"boot-file-name\"", "\"lease-database\"",
   "\"hosts-database\"", "\"type\"", "\"memfile\"", "\"mysql\"",
-  "\"postgresql\"", "\"user\"", "\"password\"", "\"host\"", "\"persist\"",
-  "\"lfc-interval\"", "\"readonly\"", "\"connect-timeout\"",
+  "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"", "\"host\"",
+  "\"persist\"", "\"lfc-interval\"", "\"readonly\"", "\"connect-timeout\"",
   "\"valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"",
   "\"decline-probation-period\"", "\"subnet4\"", "\"4o6-interface\"",
   "\"4o6-interface-id\"", "\"4o6-subnet\"", "\"option-def\"",
@@ -3390,48 +3396,48 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp4Parser::yyrline_[] =
   {
-       0,   197,   197,   197,   198,   198,   199,   199,   200,   200,
-     201,   201,   202,   202,   203,   203,   204,   204,   205,   205,
-     206,   206,   214,   215,   216,   217,   218,   219,   220,   223,
-     228,   228,   240,   241,   244,   248,   255,   255,   263,   263,
-     270,   271,   274,   278,   289,   299,   299,   311,   312,   316,
-     317,   318,   319,   320,   323,   323,   340,   340,   348,   349,
-     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
-     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
-     374,   377,   382,   387,   392,   397,   402,   408,   408,   418,
-     419,   422,   423,   426,   426,   434,   434,   444,   444,   452,
-     452,   462,   462,   472,   473,   476,   477,   478,   479,   480,
-     481,   482,   483,   484,   485,   488,   488,   495,   496,   497,
-     500,   500,   508,   508,   516,   516,   524,   524,   532,   537,
-     542,   547,   552,   552,   562,   563,   566,   567,   568,   569,
-     572,   577,   582,   587,   592,   592,   602,   603,   606,   607,
-     610,   610,   618,   618,   626,   627,   628,   631,   632,   635,
-     635,   643,   643,   651,   651,   661,   662,   668,   676,   676,
-     689,   690,   693,   694,   701,   701,   724,   724,   733,   734,
-     738,   739,   740,   741,   742,   743,   744,   745,   746,   747,
-     748,   749,   750,   751,   752,   753,   754,   755,   756,   757,
-     760,   760,   768,   768,   776,   776,   784,   784,   792,   792,
-     800,   800,   808,   808,   816,   816,   824,   829,   838,   838,
-     850,   851,   854,   855,   860,   860,   871,   871,   881,   882,
-     885,   886,   889,   890,   891,   892,   893,   894,   895,   896,
-     899,   901,   906,   908,   908,   916,   916,   924,   924,   932,
-     934,   934,   942,   951,   951,   963,   964,   969,   970,   975,
-     975,   986,   986,   997,   998,  1003,  1004,  1009,  1010,  1011,
-    1012,  1013,  1014,  1017,  1019,  1019,  1027,  1029,  1031,  1039,
-    1039,  1051,  1052,  1055,  1056,  1059,  1059,  1067,  1067,  1075,
-    1076,  1079,  1080,  1081,  1084,  1084,  1095,  1095,  1105,  1106,
-    1109,  1110,  1113,  1113,  1121,  1121,  1129,  1130,  1133,  1134,
-    1138,  1139,  1140,  1141,  1142,  1143,  1144,  1145,  1146,  1147,
-    1148,  1149,  1152,  1152,  1160,  1160,  1168,  1168,  1176,  1176,
-    1184,  1184,  1192,  1192,  1200,  1200,  1208,  1208,  1217,  1217,
-    1225,  1225,  1238,  1238,  1248,  1248,  1259,  1259,  1269,  1270,
-    1273,  1273,  1281,  1282,  1285,  1286,  1289,  1290,  1291,  1292,
-    1293,  1294,  1295,  1298,  1300,  1300,  1312,  1319,  1319,  1329,
-    1330,  1333,  1334,  1337,  1337,  1345,  1345,  1355,  1355,  1367,
-    1367,  1374,  1374,  1386,  1386,  1399,  1400,  1404,  1408,  1408,
-    1420,  1421,  1425,  1425,  1433,  1434,  1437,  1438,  1439,  1440,
-    1441,  1444,  1448,  1448,  1456,  1456,  1466,  1467,  1470,  1470,
-    1478,  1479,  1482,  1482
+       0,   198,   198,   198,   199,   199,   200,   200,   201,   201,
+     202,   202,   203,   203,   204,   204,   205,   205,   206,   206,
+     207,   207,   215,   216,   217,   218,   219,   220,   221,   224,
+     229,   229,   241,   242,   245,   249,   256,   256,   264,   264,
+     271,   272,   275,   279,   290,   300,   300,   312,   313,   317,
+     318,   319,   320,   321,   324,   324,   341,   341,   349,   350,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
+     375,   378,   383,   388,   393,   398,   403,   409,   409,   419,
+     420,   423,   424,   427,   427,   435,   435,   445,   445,   453,
+     453,   463,   463,   473,   474,   477,   478,   479,   480,   481,
+     482,   483,   484,   485,   486,   489,   489,   496,   497,   498,
+     499,   502,   502,   510,   510,   518,   518,   526,   526,   534,
+     539,   544,   549,   554,   554,   564,   565,   568,   569,   570,
+     571,   574,   579,   584,   589,   594,   594,   604,   605,   608,
+     609,   612,   612,   620,   620,   628,   629,   630,   633,   634,
+     637,   637,   645,   645,   653,   653,   663,   664,   670,   678,
+     678,   691,   692,   695,   696,   703,   703,   726,   726,   735,
+     736,   740,   741,   742,   743,   744,   745,   746,   747,   748,
+     749,   750,   751,   752,   753,   754,   755,   756,   757,   758,
+     759,   762,   762,   770,   770,   778,   778,   786,   786,   794,
+     794,   802,   802,   810,   810,   818,   818,   826,   831,   840,
+     840,   852,   853,   856,   857,   862,   862,   873,   873,   883,
+     884,   887,   888,   891,   892,   893,   894,   895,   896,   897,
+     898,   901,   903,   908,   910,   910,   918,   918,   926,   926,
+     934,   936,   936,   944,   953,   953,   965,   966,   971,   972,
+     977,   977,   988,   988,   999,  1000,  1005,  1006,  1011,  1012,
+    1013,  1014,  1015,  1016,  1019,  1021,  1021,  1029,  1031,  1033,
+    1041,  1041,  1053,  1054,  1057,  1058,  1061,  1061,  1069,  1069,
+    1077,  1078,  1081,  1082,  1083,  1086,  1086,  1097,  1097,  1107,
+    1108,  1111,  1112,  1115,  1115,  1123,  1123,  1131,  1132,  1135,
+    1136,  1140,  1141,  1142,  1143,  1144,  1145,  1146,  1147,  1148,
+    1149,  1150,  1151,  1154,  1154,  1162,  1162,  1170,  1170,  1178,
+    1178,  1186,  1186,  1194,  1194,  1202,  1202,  1210,  1210,  1219,
+    1219,  1227,  1227,  1240,  1240,  1250,  1250,  1261,  1261,  1271,
+    1272,  1275,  1275,  1283,  1284,  1287,  1288,  1291,  1292,  1293,
+    1294,  1295,  1296,  1297,  1300,  1302,  1302,  1314,  1321,  1321,
+    1331,  1332,  1335,  1336,  1339,  1339,  1347,  1347,  1357,  1357,
+    1369,  1369,  1376,  1376,  1388,  1388,  1401,  1402,  1406,  1410,
+    1410,  1422,  1423,  1427,  1427,  1435,  1436,  1439,  1440,  1441,
+    1442,  1443,  1446,  1450,  1450,  1458,  1458,  1468,  1469,  1472,
+    1472,  1480,  1481,  1484,  1484
   };
 
   // Print the state stack on the debug stream.
@@ -3466,8 +3472,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 3470 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 1490 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 3476 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 1492 "dhcp4_parser.yy" // lalr1.cc:1168
 
 
 void
index 919e11b18def64e089c2fb32340ea76eeb1af4d4..b95e19d3b0f7a0fdf7a3d18d3aa841a4dd63ac7f 100644 (file)
@@ -364,82 +364,83 @@ namespace isc { namespace dhcp {
         TOKEN_MEMFILE = 277,
         TOKEN_MYSQL = 278,
         TOKEN_POSTGRESQL = 279,
-        TOKEN_USER = 280,
-        TOKEN_PASSWORD = 281,
-        TOKEN_HOST = 282,
-        TOKEN_PERSIST = 283,
-        TOKEN_LFC_INTERVAL = 284,
-        TOKEN_READONLY = 285,
-        TOKEN_CONNECT_TIMEOUT = 286,
-        TOKEN_VALID_LIFETIME = 287,
-        TOKEN_RENEW_TIMER = 288,
-        TOKEN_REBIND_TIMER = 289,
-        TOKEN_DECLINE_PROBATION_PERIOD = 290,
-        TOKEN_SUBNET4 = 291,
-        TOKEN_SUBNET_4O6_INTERFACE = 292,
-        TOKEN_SUBNET_4O6_INTERFACE_ID = 293,
-        TOKEN_SUBNET_4O6_SUBNET = 294,
-        TOKEN_OPTION_DEF = 295,
-        TOKEN_OPTION_DATA = 296,
-        TOKEN_NAME = 297,
-        TOKEN_DATA = 298,
-        TOKEN_CODE = 299,
-        TOKEN_SPACE = 300,
-        TOKEN_CSV_FORMAT = 301,
-        TOKEN_RECORD_TYPES = 302,
-        TOKEN_ENCAPSULATE = 303,
-        TOKEN_ARRAY = 304,
-        TOKEN_POOLS = 305,
-        TOKEN_POOL = 306,
-        TOKEN_SUBNET = 307,
-        TOKEN_INTERFACE = 308,
-        TOKEN_INTERFACE_ID = 309,
-        TOKEN_ID = 310,
-        TOKEN_RAPID_COMMIT = 311,
-        TOKEN_RESERVATION_MODE = 312,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 313,
-        TOKEN_CLIENT_CLASSES = 314,
-        TOKEN_TEST = 315,
-        TOKEN_CLIENT_CLASS = 316,
-        TOKEN_RESERVATIONS = 317,
-        TOKEN_DUID = 318,
-        TOKEN_HW_ADDRESS = 319,
-        TOKEN_CIRCUIT_ID = 320,
-        TOKEN_CLIENT_ID = 321,
-        TOKEN_HOSTNAME = 322,
-        TOKEN_RELAY = 323,
-        TOKEN_IP_ADDRESS = 324,
-        TOKEN_HOOKS_LIBRARIES = 325,
-        TOKEN_LIBRARY = 326,
-        TOKEN_PARAMETERS = 327,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 328,
-        TOKEN_DHCP4O6_PORT = 329,
-        TOKEN_CONTROL_SOCKET = 330,
-        TOKEN_SOCKET_TYPE = 331,
-        TOKEN_SOCKET_NAME = 332,
-        TOKEN_DHCP_DDNS = 333,
-        TOKEN_LOGGING = 334,
-        TOKEN_LOGGERS = 335,
-        TOKEN_OUTPUT_OPTIONS = 336,
-        TOKEN_OUTPUT = 337,
-        TOKEN_DEBUGLEVEL = 338,
-        TOKEN_SEVERITY = 339,
-        TOKEN_DHCP6 = 340,
-        TOKEN_DHCPDDNS = 341,
-        TOKEN_TOPLEVEL_JSON = 342,
-        TOKEN_TOPLEVEL_DHCP4 = 343,
-        TOKEN_SUB_DHCP4 = 344,
-        TOKEN_SUB_INTERFACES4 = 345,
-        TOKEN_SUB_SUBNET4 = 346,
-        TOKEN_SUB_POOL4 = 347,
-        TOKEN_SUB_RESERVATION = 348,
-        TOKEN_SUB_OPTION_DEF = 349,
-        TOKEN_SUB_OPTION_DATA = 350,
-        TOKEN_SUB_HOOKS_LIBRARY = 351,
-        TOKEN_STRING = 352,
-        TOKEN_INTEGER = 353,
-        TOKEN_FLOAT = 354,
-        TOKEN_BOOLEAN = 355
+        TOKEN_CQL = 280,
+        TOKEN_USER = 281,
+        TOKEN_PASSWORD = 282,
+        TOKEN_HOST = 283,
+        TOKEN_PERSIST = 284,
+        TOKEN_LFC_INTERVAL = 285,
+        TOKEN_READONLY = 286,
+        TOKEN_CONNECT_TIMEOUT = 287,
+        TOKEN_VALID_LIFETIME = 288,
+        TOKEN_RENEW_TIMER = 289,
+        TOKEN_REBIND_TIMER = 290,
+        TOKEN_DECLINE_PROBATION_PERIOD = 291,
+        TOKEN_SUBNET4 = 292,
+        TOKEN_SUBNET_4O6_INTERFACE = 293,
+        TOKEN_SUBNET_4O6_INTERFACE_ID = 294,
+        TOKEN_SUBNET_4O6_SUBNET = 295,
+        TOKEN_OPTION_DEF = 296,
+        TOKEN_OPTION_DATA = 297,
+        TOKEN_NAME = 298,
+        TOKEN_DATA = 299,
+        TOKEN_CODE = 300,
+        TOKEN_SPACE = 301,
+        TOKEN_CSV_FORMAT = 302,
+        TOKEN_RECORD_TYPES = 303,
+        TOKEN_ENCAPSULATE = 304,
+        TOKEN_ARRAY = 305,
+        TOKEN_POOLS = 306,
+        TOKEN_POOL = 307,
+        TOKEN_SUBNET = 308,
+        TOKEN_INTERFACE = 309,
+        TOKEN_INTERFACE_ID = 310,
+        TOKEN_ID = 311,
+        TOKEN_RAPID_COMMIT = 312,
+        TOKEN_RESERVATION_MODE = 313,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 314,
+        TOKEN_CLIENT_CLASSES = 315,
+        TOKEN_TEST = 316,
+        TOKEN_CLIENT_CLASS = 317,
+        TOKEN_RESERVATIONS = 318,
+        TOKEN_DUID = 319,
+        TOKEN_HW_ADDRESS = 320,
+        TOKEN_CIRCUIT_ID = 321,
+        TOKEN_CLIENT_ID = 322,
+        TOKEN_HOSTNAME = 323,
+        TOKEN_RELAY = 324,
+        TOKEN_IP_ADDRESS = 325,
+        TOKEN_HOOKS_LIBRARIES = 326,
+        TOKEN_LIBRARY = 327,
+        TOKEN_PARAMETERS = 328,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 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_DHCP6 = 341,
+        TOKEN_DHCPDDNS = 342,
+        TOKEN_TOPLEVEL_JSON = 343,
+        TOKEN_TOPLEVEL_DHCP4 = 344,
+        TOKEN_SUB_DHCP4 = 345,
+        TOKEN_SUB_INTERFACES4 = 346,
+        TOKEN_SUB_SUBNET4 = 347,
+        TOKEN_SUB_POOL4 = 348,
+        TOKEN_SUB_RESERVATION = 349,
+        TOKEN_SUB_OPTION_DEF = 350,
+        TOKEN_SUB_OPTION_DATA = 351,
+        TOKEN_SUB_HOOKS_LIBRARY = 352,
+        TOKEN_STRING = 353,
+        TOKEN_INTEGER = 354,
+        TOKEN_FLOAT = 355,
+        TOKEN_BOOLEAN = 356
       };
     };
 
@@ -646,6 +647,10 @@ namespace isc { namespace dhcp {
     symbol_type
     make_POSTGRESQL (const location_type& l);
 
+    static inline
+    symbol_type
+    make_CQL (const location_type& l);
+
     static inline
     symbol_type
     make_USER (const location_type& l);
@@ -1155,12 +1160,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 604,     ///< Last index in yytable_.
+      yylast_ = 605,     ///< Last index in yytable_.
       yynnts_ = 261,  ///< Number of nonterminal symbols.
       yyfinal_ = 22, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 101  ///< Number of tokens.
+      yyntokens_ = 102  ///< Number of tokens.
     };
 
 
@@ -1212,9 +1217,9 @@ 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
+      95,    96,    97,    98,    99,   100,   101
     };
-    const unsigned int user_token_number_max_ = 355;
+    const unsigned int user_token_number_max_ = 356;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1247,24 +1252,24 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 113: // value
-      case 160: // db_type
+      case 114: // value
+      case 161: // db_type
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 100: // "boolean"
+      case 101: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 99: // "floating point"
+      case 100: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 98: // "integer"
+      case 99: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 97: // "constant string"
+      case 98: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1285,24 +1290,24 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 113: // value
-      case 160: // db_type
+      case 114: // value
+      case 161: // db_type
         value.copy< ElementPtr > (v);
         break;
 
-      case 100: // "boolean"
+      case 101: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 99: // "floating point"
+      case 100: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 98: // "integer"
+      case 99: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 97: // "constant string"
+      case 98: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1382,24 +1387,24 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 113: // value
-      case 160: // db_type
+      case 114: // value
+      case 161: // db_type
         value.template destroy< ElementPtr > ();
         break;
 
-      case 100: // "boolean"
+      case 101: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 99: // "floating point"
+      case 100: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 98: // "integer"
+      case 99: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 97: // "constant string"
+      case 98: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1426,24 +1431,24 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 113: // value
-      case 160: // db_type
+      case 114: // value
+      case 161: // db_type
         value.move< ElementPtr > (s.value);
         break;
 
-      case 100: // "boolean"
+      case 101: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 99: // "floating point"
+      case 100: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 98: // "integer"
+      case 99: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 97: // "constant string"
+      case 98: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1512,7 +1517,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
+     355,   356
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -1655,6 +1660,12 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_POSTGRESQL, l);
   }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_CQL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CQL, l);
+  }
+
   Dhcp4Parser::symbol_type
   Dhcp4Parser::make_USER (const location_type& l)
   {
@@ -2114,7 +2125,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2118 "dhcp4_parser.h" // lalr1.cc:377
+#line 2129 "dhcp4_parser.h" // lalr1.cc:377
 
 
 
index dd2f692184f79f82227ca54647c9955054d85ffc..42ab0eed976796d03a8a8a8742b113bfca4528e5 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701101509
+// Generated 201701102039
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index ecfb9441e75f3ca8953a9e19b7256e22d4606482..ad93df9159ed309d88ead1752fd5c402c02c83e9 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701101509
+// Generated 201701102039
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index 25951c77eac46fe8abc88eee2ed52c9a071d1fac..08cd6c2afb4446eeea2eac60832b1b0a3af2cf45 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701101509
+// Generated 201701102039
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++
index 8e31e3e99618b408ac8429f23cb3b3c2fe447f91..81d884823e41da6e1a2a8628640101391fce190a 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 115
-#define YY_END_OF_BUFFER 116
+#define YY_NUM_RULES 116
+#define YY_END_OF_BUFFER 117
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -476,97 +476,97 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[807] =
+static yyconst flex_int16_t yy_accept[810] =
     {   0,
-      108,  108,    0,    0,    0,    0,    0,    0,    0,    0,
-      116,  114,   10,   11,  114,    1,  108,  105,  108,  108,
-      114,  107,  106,  114,  114,  114,  114,  114,  101,  102,
-      114,  114,  114,  103,  104,    5,    5,    5,  114,  114,
-      114,   10,   11,    0,    0,   97,    0,    0,    0,    0,
+      109,  109,    0,    0,    0,    0,    0,    0,    0,    0,
+      117,  115,   10,   11,  115,    1,  109,  106,  109,  109,
+      115,  108,  107,  115,  115,  115,  115,  115,  102,  103,
+      115,  115,  115,  104,  105,    5,    5,    5,  115,  115,
+      115,   10,   11,    0,    0,   98,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    1,  108,  108,    0,
-      107,  108,    3,    2,    6,    0,  108,    0,    0,    0,
-        0,    0,    0,    4,    0,    0,    9,    0,   98,    0,
-        0,    0,    0,    0,    0,  100,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    1,  109,  109,    0,
+      108,  109,    3,    2,    6,    0,  109,    0,    0,    0,
+        0,    0,    0,    4,    0,    0,    9,    0,   99,    0,
+        0,    0,    0,    0,    0,  101,    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,    0,    2,
-        0,    0,    0,    0,    0,    0,    0,    8,    0,    0,
-       83,   84,    0,    0,    0,   99,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   49,    0,    0,    0,
+        2,    0,    0,    0,    0,    0,    0,    0,    8,    0,
+        0,   84,   85,    0,    0,    0,  100,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   50,    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,  113,  111,    0,  110,  109,
-        0,    0,    0,   82,    0,    0,    0,    0,    0,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  114,  112,    0,
+      111,  110,    0,    0,    0,   83,    0,    0,    0,    0,
+        0,    0,    0,   22,    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,    0,    0,    0,    0,
-        0,    0,    0,  112,  109,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   52,    0,    0,    0,   37,    0,
+        0,    0,    0,    0,    0,    0,  113,  110,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   53,    0,    0,
 
-        0,    0,    0,    0,   68,    0,    0,    0,    0,    0,
-       24,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   36,    0,    0,    0,
-        0,    0,    0,   45,    0,    0,    0,    0,    0,    0,
+        0,   38,    0,    0,    0,    0,    0,   69,    0,    0,
+        0,    0,    0,   25,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   37,
+        0,    0,    0,    0,    0,    0,   46,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       64,   87,   18,   22,    0,    0,    0,   95,   12,    0,
-        0,   75,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   86,
+        0,    0,    0,   65,   88,   18,   23,    0,    0,    0,
+       96,   12,    0,    0,   76,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       20,    0,    0,    0,    0,    0,    0,   38,    0,    0,
+        0,    0,   87,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   20,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,   76,    0,    0,    0,    0,
-        0,    0,   71,    0,    0,    7,    0,    0,    0,    0,
+       39,    0,    0,    0,    0,    0,    0,    0,   77,    0,
+        0,    0,    0,    0,    0,   72,    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,   59,    0,    0,    0,
-        0,    0,    0,    0,   40,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   46,    0,    0,
-        0,   56,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   60,
+        0,    0,    0,    0,    0,    0,    0,   41,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   80,   57,    0,   19,    0,
+       47,    0,    0,    0,   57,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   81,   58,
 
-        0,    0,    0,    0,   25,    0,    0,    0,    0,    0,
+        0,   19,    0,    0,    0,    0,    0,   26,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       33,    0,   96,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   70,    0,
+        0,    0,    0,   34,    0,   97,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   23,   39,    0,    0,    0,   67,    0,   17,    0,
-        0,    0,    0,    0,    0,   61,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   94,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   47,    0,    0,
+        0,   71,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   24,   40,    0,    0,    0,   68,
+        0,   17,    0,    0,    0,    0,    0,    0,   62,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   95,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       48,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,   81,    0,    0,
-        0,    0,    0,    0,   72,   60,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   69,   85,    0,   14,
-        0,   77,    0,    0,    0,    0,    0,   34,    0,   79,
-       21,    0,   41,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   74,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       53,   35,    0,    0,    0,    0,    0,    0,   30,    0,
-        0,   93,   92,    0,   63,    0,    0,    0,    0,    0,
-       90,    0,    0,    0,    0,    0,    0,   48,    0,   66,
-
-        0,   26,    0,    0,   50,   31,   73,    0,    0,   65,
-        0,    0,    0,    0,    0,   44,   88,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   62,
-        0,   91,    0,    0,    0,    0,    0,   16,    0,   15,
-       58,    0,    0,    0,   29,   27,    0,   42,    0,    0,
-       78,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   51,    0,    0,    0,    0,   13,    0,
-        0,    0,    0,    0,    0,   28,    0,    0,   43,    0,
+       82,    0,    0,    0,    0,    0,    0,   73,   61,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   70,
+       86,    0,   14,    0,   78,    0,    0,    0,    0,    0,
+       35,    0,   80,   21,    0,   42,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   54,    0,    0,    0,   32,    0,    0,
+        0,   75,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   54,   36,    0,    0,    0,    0,    0,
+        0,   31,    0,    0,   94,   93,    0,   64,    0,    0,
+        0,    0,    0,   91,    0,    0,    0,    0,    0,    0,
 
-       89,    0,    0,    0,   55,    0
+       49,    0,   67,    0,   27,    0,    0,   51,   32,   74,
+        0,    0,   66,    0,    0,    0,    0,    0,   45,   89,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   63,    0,   92,    0,    0,    0,    0,    0,
+       16,    0,   15,   59,    0,    0,    0,   30,   28,    0,
+       43,    0,    0,   79,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   52,    0,    0,    0,
+        0,   13,    0,    0,    0,    0,    0,    0,   29,    0,
+        0,   44,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   55,    0,    0,    0,
+
+       33,    0,    0,   90,    0,    0,    0,   56,    0
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -612,195 +612,197 @@ static yyconst YY_CHAR yy_meta[62] =
         3
     } ;
 
-static yyconst flex_uint16_t yy_base[819] =
+static yyconst flex_uint16_t yy_base[822] =
     {   0,
         0,    0,   60,   63,   66,    0,   64,   68,   65,   67,
-      297, 5837,   84,  293,  127,    0,  101, 5837,  107,  121,
-       81,  128, 5837,  268,   88,  103,  101,  106, 5837, 5837,
-      128,  107,  120, 5837, 5837, 5837,  153,  270,  229,    0,
-      256,  182,  253,  163,  186, 5837,  192,  199,  205,  203,
+      297, 5908,   84,  293,  127,    0,  101, 5908,  107,  121,
+       81,  128, 5908,  268,   88,  103,  101,  106, 5908, 5908,
+      128,  107,  120, 5908, 5908, 5908,  153,  270,  229,    0,
+      256,  182,  253,  163,  186, 5908,  192,  199,  205,  203,
       212,  227,  246,  260,  266,  289,  301,  311,  323,  329,
       384,  362,  372,  398,  407,  413,    0,  367,  429,  447,
-      452,  456, 5837,    0, 5837,  206,  227,  164,  171,  123,
-      177,  178,  215, 5837,  196,  221, 5837,  179, 5837,  446,
+      452,  456, 5908,    0, 5908,  206,  227,  164,  171,  123,
+      177,  178,  215, 5908,  196,  221, 5908,  179, 5908,  446,
       472,  483,  501,  511,  193,  517,  540,  534,  524,  568,
 
-      540,  581,  587,  596,  603,  616,  625,  636,  649,  665,
-      659,  671,  677,  694,  700,  710,  716,  733,  739,  749,
-      758,  767,  773,  782,  792,  806,  816,  827,  835,  885,
-      841,  851,  869,  875,  893,  908,  914,  926,  934,    0,
-      221,  213,  213,  252,  239,  247,  145, 5837,    0,  942,
-     5837, 5837,  948,  955,  153, 5837,  984,  968, 1009, 1025,
-      981, 1035, 1042, 1049, 1060, 1068, 1078, 1084, 1093, 1112,
-     1118, 1129, 1135, 1141, 1152, 1164, 5837, 1175, 1181, 1203,
-     1187, 1216, 1209, 1223, 1242, 1229, 1249, 1257, 1265, 1271,
-     1277, 1283, 1290, 1300, 1316, 1323, 1340, 1349, 1357, 1364,
-
-     1373, 1382, 1397, 1408, 1418, 1425, 1433, 1443, 1451, 1458,
-     1467, 1484, 1492, 1502,  254, 5837, 5837,  260, 5837, 5837,
-       91,    0, 1517, 5837, 1508, 1539, 1525, 1564, 1536, 1580,
-     1586, 1592, 1598, 1604, 1615, 1621, 1638, 1649, 1655, 1663,
-     1671, 1677, 1683, 1689, 1700, 1706, 1717, 1729, 1745, 1752,
-     1758, 1764, 1771, 1787, 1793, 1806, 1812, 1821, 1827, 1840,
-     1847, 1856, 1862, 1875, 1882, 1890, 1896, 1908, 1915, 1936,
-     1943, 1949, 1958, 1964, 1972, 1978, 1992, 2006, 1984, 2020,
-     2027, 2034, 2041, 5837, 5837,   79,    0, 2048, 2055, 2062,
-     2069, 2104, 2076, 2083, 5837, 2097, 2090, 2105, 5837, 2130,
-
-     2145, 2154, 2163, 2171, 5837, 2178, 2197, 2204, 2211, 2221,
-     5837, 2232, 2239, 2247, 2254, 2260, 2267, 2275, 2288, 2295,
-     2301, 2311, 2317, 2323, 2329, 2335, 5837, 2345, 2351, 2358,
-     2364, 2379, 2386, 5837, 2393, 2400, 2408, 2414, 2421, 2428,
-     2434, 2442, 2463, 2476, 2456, 2482, 2489, 2496, 2502, 2515,
-     5837, 5837, 5837, 5837, 2525,   65,    0, 5837, 5837, 2537,
-     2550, 5837, 2543, 2558, 2565, 2571, 2587, 2593, 2599, 2607,
-     2615, 2633, 2641, 2649, 2657, 2666, 2674, 2699, 2714, 5837,
-     2707, 2721, 2727, 2733, 2742, 2749, 2755, 2766, 2777, 2788,
-     5837, 2794, 2805, 2814, 2823, 2833, 2840, 5837, 2847, 2856,
-
-     2880, 2868, 2894, 2901, 2908, 5837, 2915, 2922, 2929, 2936,
-     2948, 2955, 5837, 2971, 2977, 5837, 2983, 2989, 2995, 3006,
-     3018, 3012, 3024, 3041, 3052, 3060, 3066, 3080, 3088, 3094,
-     3101, 3108, 3114, 3122, 3136, 3142, 3148, 3155, 3162, 3177,
-     3183, 3195, 3202, 3216, 3223, 3230, 5837, 3237, 3244, 3252,
-     3259, 3270, 3277, 3287, 5837, 3293, 3299, 3305, 3312, 3322,
-     3334, 3340, 3347, 3356, 3363, 3376, 3384, 5837, 3391, 3397,
-     3410, 5837, 3417, 3425, 3443, 3450, 3458, 3464, 3471, 3479,
-     3486, 3505, 3514, 3520, 3527, 3542, 3548, 3556, 3562, 3568,
-     3584, 3590, 3596, 3602, 3608, 5837, 5837, 3625, 5837, 3631,
-
-     3637, 3644, 3651, 3672, 5837, 3679, 3687, 3696, 3705, 3712,
-     3721, 3731, 3738, 3745, 3754, 3760, 3766, 3778, 3788, 3806,
-     5837, 3812, 5837, 3824, 3830, 3840, 3846, 3853, 3865, 3874,
-     3881, 3889, 3900, 3907, 3917, 3923, 3929, 3940, 5837, 3958,
-     3968, 3974, 3982, 3994, 4003, 4010, 4016, 4022, 4028, 4039,
-     4051, 5837, 5837, 4057, 4072, 4079, 5837, 4085, 5837, 4093,
-     4105, 4113, 4119, 4127, 4133, 5837, 4141, 4147, 4166, 4176,
-     4183, 4189, 4199, 4209, 4217, 4232, 5837, 4238, 4246, 4252,
-     4258, 4266, 4281, 4274, 4291, 4302, 4310, 5837, 4317, 4330,
-     4336, 4345, 4351, 4364, 4371, 4387, 4393, 4399, 4407, 4413,
-
-     4421, 4427, 4433, 4441, 4447, 4455, 4461, 5837, 4481, 4489,
-     4495, 4502, 4510, 4524, 5837, 5837, 4530, 4538, 4550, 4558,
-     4573, 4579, 4587, 4593, 4599, 4608, 5837, 5837, 4621, 5837,
-     4628, 5837, 4636, 4645, 4661, 4669, 4681, 5837, 4689, 5837,
-     5837, 4695, 5837, 4702, 4709, 4715, 4730, 4724, 4743, 4749,
-     4764, 4777, 4783, 4789, 4797, 4803, 4811, 4823, 5837, 4839,
-     4846, 4852, 4860, 4867, 4874, 4880, 4893, 4900, 4908, 4914,
-     5837, 5837, 4922, 4933, 4942, 4948, 4956, 4962, 5837, 4970,
-     4976, 5837, 5837, 4982, 5837, 4990, 4998, 5004, 5018, 5024,
-     5837, 5032, 5038, 5044, 5053, 5061, 5067, 5837, 5073, 5837,
-
-     5082, 5837, 5107, 5117, 5837, 5837, 5837, 5123, 5130, 5837,
-     5136, 5142, 5152, 5164, 5171, 5837, 5837, 5180, 5187, 5193,
-     5199, 5206, 5216, 5222, 5228, 5234, 5241, 5257, 5267, 5837,
-     5274, 5837, 5280, 5291, 5302, 5308, 5314, 5837, 5320, 5837,
-     5837, 5330, 5336, 5342, 5837, 5837, 5348, 5837, 5354, 5364,
-     5837, 5377, 5370, 5388, 5403, 5412, 5421, 5427, 5436, 5445,
-     5455, 5462, 5470, 5837, 5478, 5490, 5498, 5504, 5837, 5511,
-     5519, 5539, 5545, 5552, 5558, 5837, 5564, 5574, 5837, 5581,
-     5587, 5598, 5609, 5615, 5621, 5627, 5637, 5649, 5655, 5661,
-     5670, 5689, 5695, 5837, 5705, 5711, 5717, 5837, 5723, 5729,
-
-     5837, 5739, 5745, 5757, 5837, 5837, 5798, 5803, 5808, 5813,
-     5818, 5823, 5828, 5831,   96,   90,   87,   64
+      581,  540,  587,  596,  602,  616,  642,  649,  655,  661,
+      667,  683,  689,  700,  711,  723,  729,  735,  747,  757,
+      768,  780,  786,  792,  804,  827,  814,  842,  848,  861,
+      911,  867,  877,  895,  883,  901,  923,  934,  940,  949,
+        0,  221,  213,  213,  252,  239,  247,  145, 5908,    0,
+      959, 5908, 5908,  973,  984,  153, 5908, 1013,  997, 1038,
+     1054, 1010, 1060, 1066, 1073, 1079, 1089, 1099, 1112, 1118,
+     1125, 1135, 1141, 1147, 1153, 1163, 1170, 1176, 5908, 1182,
+     1191, 1199, 1205, 1238, 1220, 1244, 1254, 1260, 1267, 1273,
+     1279, 1288, 1296, 1302, 1308, 1314, 1324, 1342, 1348, 1358,
+
+     1370, 1377, 1384, 1391, 1398, 1410, 1433, 1439, 1445, 1453,
+     1459, 1467, 1479, 1492, 1500, 1507,  260, 5908, 5908,  270,
+     5908, 5908,   91,    0, 1514, 5908, 1521, 1552, 1547, 1554,
+     1580, 1593, 1602, 5908, 1608, 1614, 1622, 1628, 1636, 1642,
+     1657, 1664, 1678, 1685, 1692, 1698, 1704, 1720, 1726, 1733,
+     1740, 1761, 1768, 1774, 1780, 1787, 1796, 1803, 1809, 1820,
+     1829, 1837, 1855, 1862, 1871, 1878, 1884, 1897, 1907, 1922,
+     1930, 1940, 1947, 1956, 1963, 1969, 1984, 1975, 1992, 2003,
+     2027, 2036, 2043, 2049, 2055, 2062, 5908, 5908,   79,    0,
+     2069, 2077, 2083, 2090, 2125, 2097, 2103, 5908, 2118, 2111,
+
+     2125, 5908, 2166, 2174, 2180, 2186, 2194, 5908, 2200, 2208,
+     2228, 2236, 2244, 5908, 2262, 2269, 2277, 2283, 2290, 2297,
+     2305, 2316, 2325, 2331, 2341, 2350, 2359, 2365, 2374, 5908,
+     2383, 2393, 2403, 2411, 2417, 2426, 5908, 2432, 2439, 2450,
+     2461, 2467, 2474, 2484, 2495, 2502, 2509, 2523, 2530, 2537,
+     2543, 2551, 2558, 5908, 5908, 5908, 5908, 2566,   65,    0,
+     5908, 5908, 2572, 2584, 5908, 2592, 2605, 2612, 2621, 2627,
+     2638, 2646, 2660, 2674, 2680, 2686, 2700, 2708, 2715, 2722,
+     2743, 2750, 5908, 2762, 2768, 2779, 2785, 2791, 2801, 2819,
+     2826, 2837, 2843, 5908, 2855, 2861, 2871, 2879, 2896, 2904,
+
+     5908, 2912, 2918, 2932, 2938, 2947, 2953, 2972, 5908, 2986,
+     2993, 3000, 3007, 3019, 3026, 5908, 3042, 3048, 5908, 3054,
+     3060, 3066, 3077, 3089, 3083, 3095, 3112, 3123, 3131, 3137,
+     3151, 3159, 3165, 3172, 3179, 3185, 3193, 3207, 3213, 3219,
+     3226, 3233, 3248, 3254, 3266, 3273, 3287, 3294, 3301, 5908,
+     3308, 3315, 3323, 3330, 3341, 3348, 3358, 5908, 3364, 3370,
+     3376, 3383, 3393, 3405, 3411, 3418, 3427, 3434, 3447, 3455,
+     5908, 3462, 3468, 3481, 5908, 3488, 3496, 3514, 3521, 3529,
+     3535, 3542, 3550, 3557, 3576, 3585, 3591, 3598, 3613, 3619,
+     3627, 3633, 3639, 3655, 3661, 3667, 3673, 3679, 5908, 5908,
+
+     3696, 5908, 3702, 3708, 3715, 3722, 3743, 5908, 3750, 3758,
+     3767, 3776, 3783, 3792, 3802, 3809, 3816, 3825, 3831, 3837,
+     3849, 3859, 3877, 5908, 3883, 5908, 3895, 3901, 3911, 3917,
+     3924, 3936, 3945, 3952, 3960, 3971, 3978, 3988, 3994, 4000,
+     4011, 5908, 4029, 4039, 4045, 4053, 4065, 4074, 4081, 4087,
+     4093, 4099, 4110, 4122, 5908, 5908, 4128, 4143, 4150, 5908,
+     4156, 5908, 4164, 4176, 4184, 4190, 4198, 4204, 5908, 4212,
+     4218, 4237, 4247, 4254, 4260, 4270, 4280, 4288, 4303, 5908,
+     4309, 4317, 4323, 4329, 4337, 4352, 4345, 4362, 4373, 4381,
+     5908, 4388, 4401, 4407, 4416, 4422, 4435, 4442, 4458, 4464,
+
+     4470, 4478, 4484, 4492, 4498, 4504, 4512, 4518, 4526, 4532,
+     5908, 4552, 4560, 4566, 4573, 4581, 4595, 5908, 5908, 4601,
+     4609, 4621, 4629, 4644, 4650, 4658, 4664, 4670, 4679, 5908,
+     5908, 4692, 5908, 4699, 5908, 4707, 4716, 4732, 4740, 4752,
+     5908, 4760, 5908, 5908, 4766, 5908, 4773, 4780, 4786, 4801,
+     4795, 4814, 4820, 4835, 4848, 4854, 4860, 4868, 4874, 4882,
+     4894, 5908, 4910, 4917, 4923, 4931, 4938, 4945, 4951, 4964,
+     4971, 4979, 4985, 5908, 5908, 4993, 5004, 5013, 5019, 5027,
+     5033, 5908, 5041, 5047, 5908, 5908, 5053, 5908, 5061, 5069,
+     5075, 5089, 5095, 5908, 5103, 5109, 5115, 5124, 5132, 5138,
+
+     5908, 5144, 5908, 5153, 5908, 5178, 5188, 5908, 5908, 5908,
+     5194, 5201, 5908, 5207, 5213, 5223, 5235, 5242, 5908, 5908,
+     5251, 5258, 5264, 5270, 5277, 5287, 5293, 5299, 5305, 5312,
+     5328, 5338, 5908, 5345, 5908, 5351, 5362, 5373, 5379, 5385,
+     5908, 5391, 5908, 5908, 5401, 5407, 5413, 5908, 5908, 5419,
+     5908, 5425, 5435, 5908, 5448, 5441, 5459, 5474, 5483, 5492,
+     5498, 5507, 5516, 5526, 5533, 5541, 5908, 5549, 5561, 5569,
+     5575, 5908, 5582, 5590, 5610, 5616, 5623, 5629, 5908, 5635,
+     5645, 5908, 5652, 5658, 5669, 5680, 5686, 5692, 5698, 5708,
+     5720, 5726, 5732, 5741, 5760, 5766, 5908, 5776, 5782, 5788,
+
+     5908, 5794, 5800, 5908, 5810, 5816, 5828, 5908, 5908, 5869,
+     5874, 5879, 5884, 5889, 5894, 5899, 5902,   96,   90,   87,
+       64
     } ;
 
-static yyconst flex_int16_t yy_def[819] =
+static yyconst flex_int16_t yy_def[822] =
     {   0,
-      806,    1,  807,  807,    1,    5,    5,    5,    5,    5,
-      806,  806,  806,  806,  808,  809,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  810,
-      806,  806,  806,  811,  808,  806,  808,  808,  808,  812,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  809,  806,  806,  806,
-      806,  806,  806,  813,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  810,  806,  811,  806,  806,
-      808,  808,  808,  808,  814,  808,  812,  808,  808,  808,
-
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  813,
-      806,  806,  806,  806,  806,  806,  806,  806,  815,  808,
-      806,  806,  808,  808,  814,  806,  812,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  806,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  806,  806,  806,  806,  806,  806,
-      806,  816,  808,  806,  808,  812,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  806,  806,  806,  817,  808,  808,  808,
-      808,  812,  808,  808,  806,  808,  808,  808,  806,  808,
-
-      808,  808,  808,  808,  806,  808,  808,  808,  808,  808,
-      806,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  806,  808,  808,  808,
-      808,  808,  808,  806,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      806,  806,  806,  806,  808,  806,  818,  806,  806,  808,
-      808,  806,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  806,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      806,  808,  808,  808,  808,  808,  808,  806,  808,  808,
-
-      808,  808,  808,  808,  808,  806,  808,  808,  808,  808,
-      808,  808,  806,  808,  808,  806,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  806,  808,  808,  808,
-      808,  808,  808,  808,  806,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  806,  808,  808,
-      808,  806,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  806,  806,  808,  806,  808,
-
-      808,  808,  808,  808,  806,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      806,  808,  806,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  806,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  806,  806,  808,  808,  808,  806,  808,  806,  808,
-      808,  808,  808,  808,  808,  806,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  806,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  806,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-
-      808,  808,  808,  808,  808,  808,  808,  806,  808,  808,
-      808,  808,  808,  808,  806,  806,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  806,  806,  808,  806,
-      808,  806,  808,  808,  808,  808,  808,  806,  808,  806,
-      806,  808,  806,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  806,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      806,  806,  808,  808,  808,  808,  808,  808,  806,  808,
-      808,  806,  806,  808,  806,  808,  808,  808,  808,  808,
-      806,  808,  808,  808,  808,  808,  808,  806,  808,  806,
-
-      808,  806,  808,  808,  806,  806,  806,  808,  808,  806,
-      808,  808,  808,  808,  808,  806,  806,  808,  808,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  806,
-      808,  806,  808,  808,  808,  808,  808,  806,  808,  806,
-      806,  808,  808,  808,  806,  806,  808,  806,  808,  808,
-      806,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  806,  808,  808,  808,  808,  806,  808,
-      808,  808,  808,  808,  808,  806,  808,  808,  806,  808,
-      808,  808,  808,  808,  808,  808,  808,  808,  808,  808,
-      808,  808,  808,  806,  808,  808,  808,  806,  808,  808,
-
-      806,  808,  808,  808,  806,    0,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806
+      809,    1,  810,  810,    1,    5,    5,    5,    5,    5,
+      809,  809,  809,  809,  811,  812,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  813,
+      809,  809,  809,  814,  811,  809,  811,  811,  811,  815,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  812,  809,  809,  809,
+      809,  809,  809,  816,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  813,  809,  814,  809,  809,
+      811,  811,  811,  811,  817,  811,  815,  811,  811,  811,
+
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      816,  809,  809,  809,  809,  809,  809,  809,  809,  818,
+      811,  809,  809,  811,  811,  817,  809,  815,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  809,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  809,  809,  809,  809,
+      809,  809,  809,  819,  811,  809,  811,  815,  811,  811,
+      811,  811,  811,  809,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  809,  809,  809,  820,
+      811,  811,  811,  811,  815,  811,  811,  809,  811,  811,
+
+      811,  809,  811,  811,  811,  811,  811,  809,  811,  811,
+      811,  811,  811,  809,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  809,
+      811,  811,  811,  811,  811,  811,  809,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  809,  809,  809,  809,  811,  809,  821,
+      809,  809,  811,  811,  809,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  809,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  809,  811,  811,  811,  811,  811,  811,
+
+      809,  811,  811,  811,  811,  811,  811,  811,  809,  811,
+      811,  811,  811,  811,  811,  809,  811,  811,  809,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  809,
+      811,  811,  811,  811,  811,  811,  811,  809,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      809,  811,  811,  811,  809,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  809,  809,
+
+      811,  809,  811,  811,  811,  811,  811,  809,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  809,  811,  809,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  809,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  809,  809,  811,  811,  811,  809,
+      811,  809,  811,  811,  811,  811,  811,  811,  809,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  809,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      809,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      809,  811,  811,  811,  811,  811,  811,  809,  809,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  809,
+      809,  811,  809,  811,  809,  811,  811,  811,  811,  811,
+      809,  811,  809,  809,  811,  809,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  809,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  809,  809,  811,  811,  811,  811,  811,
+      811,  809,  811,  811,  809,  809,  811,  809,  811,  811,
+      811,  811,  811,  809,  811,  811,  811,  811,  811,  811,
+
+      809,  811,  809,  811,  809,  811,  811,  809,  809,  809,
+      811,  811,  809,  811,  811,  811,  811,  811,  809,  809,
+      811,  811,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  809,  811,  809,  811,  811,  811,  811,  811,
+      809,  811,  809,  809,  811,  811,  811,  809,  809,  811,
+      809,  811,  811,  809,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  809,  811,  811,  811,
+      811,  809,  811,  811,  811,  811,  811,  811,  809,  811,
+      811,  809,  811,  811,  811,  811,  811,  811,  811,  811,
+      811,  811,  811,  811,  811,  811,  809,  811,  811,  811,
+
+      809,  811,  811,  809,  811,  811,  811,  809,    0,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809
     } ;
 
-static yyconst flex_uint16_t yy_nxt[5899] =
+static yyconst flex_uint16_t yy_nxt[5970] =
     {   0,
        12,   13,   14,   13,   12,   15,   16,   12,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   12,   12,
@@ -811,649 +813,656 @@ static yyconst flex_uint16_t yy_nxt[5899] =
        35,   37,   14,   37,   37,   14,   37,   38,   88,   40,
        38,   12,   12,   40,   12,   12,   12,   12,   12,   12,
        12,   12,   12,   12,   41,   42,   41,   42,   73,   12,
-       12,  357,   12,   74,  287,   12,   76,   12,   76,   12,
+       12,  360,   12,   74,  290,   12,   76,   12,   76,   12,
 
-      222,   77,   77,   77,  416,   12,   12,   12,   12,   39,
-       12,   12,   68,   12,   69,   69,   69,  356,   68,   12,
+      224,   77,   77,   77,  419,   12,   12,   12,   12,   39,
+       12,   12,   68,   12,   69,   69,   69,  359,   68,   12,
        71,   71,   71,   78,   70,   12,   12,   44,   44,   44,
        70,   79,   46,   80,   72,   72,   72,   79,   78,   68,
-       70,   71,   71,   71,   70,  286,   70,   80,   78,   47,
-       48,   70,   49,  143,   42,   79,   42,   80,  156,   50,
+       70,   71,   71,   71,   70,  289,   70,   80,   78,   47,
+       48,   70,   49,  144,   42,   79,   42,   80,  157,   50,
        70,   82,   51,   81,   52,   53,   54,   70,   89,   55,
-       56,   83,   57,   58,   59,   60,   61,  143,   62,   63,
-       64,   65,   66,   42,   89,   42,   44,   44,   44,  141,
-      221,   46,   44,   44,   44,   90,  142,   46,  156,   44,
-
-       44,   44,  141,  142,   46,   44,   44,   44,   96,  141,
-       46,   90,   44,   44,   44,   45,  142,   46,   50,   77,
-       77,   77,  144,  145,   50,   92,  148,   44,   44,   44,
-       93,   50,   46,  147,   91,   45,  217,   50,  216,   45,
-       77,   77,   77,   45,   50,  143,   44,   44,   44,  215,
-       45,   46,  217,   94,   45,   43,   45,   97,  216,   50,
-       44,   44,   44,   98,  216,   46,   44,   44,   44,  146,
-      217,   46,   99,  215,   87,  100,   85,  284,   50,  101,
-      215,  102,   84,  284,  219,  103,  220,   75,  104,   44,
-       44,   44,   50,  284,   46,   43,  806,  806,   50,  285,
-
-      105,   44,   44,   44,  218,  806,   46,  106,  806,  806,
-      806,   44,   44,   44,  108,  806,   46,  107,  806,  109,
-      806,   50,  110,   44,   44,   44,  806,  111,   46,   44,
-       44,   44,  806,   50,   46,  806,  112,  806,  113,  806,
-      114,  115,  806,   50,  116,  806,  118,  806,  806,  117,
-      119,  806,  806,  806,  806,   50,  806,  806,  121,  806,
-      806,   50,   44,   44,   44,  806,  806,   46,  806,  120,
-      806,  806,   44,   44,   44,  806,  806,   46,  122,  806,
-       72,   72,   72,  123,   44,   44,   44,  806,  806,   46,
-       70,  806,  806,  806,   50,  806,  806,  129,   44,   44,
-
-       44,  130,  806,   46,   50,  806,   70,   44,   44,   44,
-      806,  131,   46,   44,   44,   44,   50,  806,   46,  124,
-      132,  133,  125,  126,  806,  806,  134,  806,  806,  806,
-       50,  806,  127,  806,  806,  128,  806,  135,  806,   50,
-       68,  136,   69,   69,   69,   50,  806,  806,  139,  806,
-      806,   88,   70,  806,  806,   76,  137,   76,   88,  138,
-       77,   77,   77,   68,  806,   71,   71,   71,   70,   72,
-       72,   72,   44,   44,   44,   70,  806,   46,   88,   70,
-      806,  806,   88,   44,   44,   44,   88,  806,  151,  806,
-      806,   70,  806,   88,  806,   70,  806,   88,  806,   88,
-
-      149,   44,   44,   44,   50,  806,  152,  806,  806,  150,
-      806,   44,   44,   44,  806,   50,   46,   44,   44,   44,
-      806,  806,   46,  806,   44,   44,   44,  806,  806,   46,
-      153,  806,  806,   50,   44,   44,   44,  806,  806,   46,
-       44,   44,   44,   50,  806,   46,  806,  806,  806,   50,
-      806,  806,  154,  157,  157,  157,   50,  806,  806,  806,
-      157,  157,  157,  157,  157,  806,   50,  159,   44,   44,
-       44,  806,   50,   46,  806,  157,  157,  157,  157,  157,
-      157,   44,   44,   44,  806,  158,   46,   44,   44,   44,
-      806,  806,   46,  806,  806,  162,   44,   44,   44,  806,
-
-       50,   46,  806,   44,   44,   44,  160,  806,   46,  806,
-      806,  806,  806,   50,  806,  161,   44,   44,   44,   50,
-      806,   46,  806,  164,  165,   44,   44,   44,   50,  806,
-       46,  806,  166,  167,  163,   50,   44,   44,   44,  806,
-      806,   46,  806,  806,  806,  806,  168,  806,   50,   44,
-       44,   44,  806,  169,   46,  806,  806,   50,  806,   44,
-       44,   44,  171,  806,  177,   44,   44,   44,   50,  170,
-       46,   44,   44,   44,  172,  176,   46,   44,   44,   44,
-      806,   50,   46,  806,  173,  806,  806,  180,  174,  806,
-      806,   50,  806,  806,   44,   44,   44,   50,  178,   46,
-
-       44,   44,   44,   50,  806,   46,  806,  175,  806,   50,
-       44,   44,   44,  806,  806,   46,   44,   44,   44,  806,
-      806,   46,  806,  806,  179,  806,   50,  806,  806,  181,
-      806,  806,   50,   44,   44,   44,  806,  182,   46,   44,
-       44,   44,   50,  806,   46,  806,  183,  806,   50,   44,
-       44,   44,  806,  806,   46,  806,  806,  184,   44,   44,
-       44,  806,  806,   46,  806,   50,  806,   44,   44,   44,
-      185,   50,   46,   44,   44,   44,  806,  806,   46,  806,
-      806,   50,   44,   44,   44,  186,  806,   46,  806,  806,
-       50,  806,   44,   44,   44,  806,  806,   46,  806,   50,
-
-      806,  187,  193,  806,  188,   50,   44,   44,   44,  806,
-      806,   46,  806,  806,   50,  806,   44,   44,   44,  806,
-      189,   46,  806,  806,   50,  806,  190,   44,   44,   44,
-      806,  806,   46,  191,  192,   44,   44,   44,   50,  806,
-       46,   44,   44,   44,  806,  806,   46,  806,   50,  806,
-      806,   44,   44,   44,  806,  806,   46,  194,  806,   50,
-      806,  806,  806,  806,  195,  806,  197,   50,  196,   44,
-       44,   44,  806,   50,   46,   44,   44,   44,  806,  806,
-       46,  806,  806,   50,  198,   44,   44,   44,  207,  806,
-       46,  806,  205,   44,   44,   44,  206,  806,   46,  806,
-
-      806,   50,  806,  806,  208,  806,  806,   50,   44,   44,
-       44,  209,  806,   46,   44,   44,   44,   50,  806,   46,
-      199,  200,  201,  806,  806,   50,   44,   44,   44,  806,
-      202,   46,  203,  806,   44,   44,   44,  204,  806,   46,
-       50,  806,   44,   44,   44,  210,   50,   46,   44,   44,
-       44,  806,  806,  224,  211,   44,   44,   44,   50,  806,
-       46,  806,  806,  212,  806,  213,   50,  806,   44,   44,
-       44,  806,  806,   46,   50,  806,  806,  806,  806,  214,
-       50,   44,   44,   44,  806,  806,   46,   50,  806,  806,
-      806,  223,  806,  806,  806,  806,  225,  226,  226,  226,
-
-       50,  806,  806,  227,  226,  226,  226,  226,  226,   44,
-       44,   44,  806,   50,   46,  806,  806,  806,  806,  226,
-      226,  226,  226,  226,  226,   44,   44,   44,  230,  806,
-       46,  806,  806,  806,  231,   44,   44,   44,  806,  806,
-       46,   50,   44,   44,   44,  232,  806,   46,  228,   44,
-       44,   44,  806,  806,   46,  806,  806,   50,  806,  806,
-       44,   44,   44,  806,  229,   46,  806,   50,   44,   44,
-       44,  806,  806,   46,   50,  806,  806,  233,   44,   44,
-       44,   50,  806,   46,   44,   44,   44,  806,  806,   46,
-      806,  806,   50,   44,   44,   44,  806,  806,   46,  806,
-
-       50,  806,  806,  234,  806,  235,  806,  236,  806,  806,
-       50,  806,   44,   44,   44,  806,   50,   46,   44,   44,
-       44,  806,  238,   46,  806,   50,  806,  237,  239,   44,
-       44,   44,  806,  806,   46,   44,   44,   44,  806,  806,
-       46,   44,   44,   44,   50,  806,   46,  806,  806,  806,
-       50,  240,   44,   44,   44,  806,  806,   46,  806,  806,
-      806,   50,  806,  241,   44,   44,   44,   50,  806,   46,
-      806,  806,  242,   50,  806,   44,   44,   44,  806,  243,
-       46,   44,   44,   44,   50,  806,   46,   44,   44,   44,
-      806,  806,   46,  806,  244,  806,   50,  806,  806,  246,
-
-      806,  245,  806,   44,   44,   44,  806,   50,   46,   44,
-       44,   44,  806,   50,   46,  806,   44,   44,   44,   50,
-      248,   46,  247,   44,   44,   44,  251,  806,   46,   44,
-       44,   44,  806,  806,   46,   50,  806,  806,  249,  250,
-      806,   50,   44,   44,   44,  806,  806,   46,   50,   44,
-       44,   44,  254,  806,   46,   50,  806,   44,   44,   44,
-      252,   50,   46,  806,  253,   44,   44,   44,  806,  255,
-       46,   44,   44,   44,   50,  806,   46,   44,   44,   44,
-      806,   50,   46,   44,   44,   44,  806,  806,   46,   50,
-       44,   44,   44,  806,  806,   46,  257,   50,  806,  256,
-
-       44,   44,   44,   50,  806,   46,  806,  806,  258,   50,
-      806,  806,  260,  806,  806,   50,   44,   44,   44,  806,
-      259,   46,   50,   44,   44,   44,  806,  806,   46,  806,
-      806,  806,   50,  806,  806,  261,  806,  806,  806,  262,
-       44,   44,   44,  806,  806,   46,  806,  806,   50,   44,
-       44,   44,  263,  806,   46,   50,  806,   44,   44,   44,
-      806,  264,   46,  806,   44,   44,   44,  806,  806,   46,
-      806,  806,   50,   44,   44,   44,  265,  806,   46,  806,
-      266,   50,   44,   44,   44,  806,  806,   46,  806,   50,
-      806,  806,  267,  806,  806,  268,   50,   44,   44,   44,
-
-      806,  806,   46,  806,  806,   50,  806,  269,   44,   44,
-       44,  806,  806,   46,   50,  806,  806,  271,   44,   44,
-       44,  270,  806,   46,  806,   44,   44,   44,  806,   50,
-       46,  806,  806,   44,   44,   44,  272,  806,   46,  806,
-       50,  806,  806,   44,   44,   44,  806,  273,   46,  806,
-       50,   44,   44,   44,  806,  806,   46,   50,   44,   44,
-       44,  806,  806,   46,  275,   50,  806,   44,   44,   44,
-      806,  806,   46,  274,  806,   50,  806,  276,  806,  806,
-      277,  806,  806,   50,   44,   44,   44,  806,  806,   46,
-       50,  806,   44,   44,   44,  806,  806,   46,  278,   50,
-
-      806,  806,   44,   44,   44,  806,  280,   46,   44,   44,
-       44,  279,  806,   46,  806,  806,   50,   44,   44,   44,
-      806,  806,   46,  281,   50,   44,   44,   44,  806,  806,
-       46,  288,  289,  806,   50,  806,   44,   44,   44,  290,
-       50,  295,  806,  282,  806,  283,  806,  806,  806,   50,
-      806,  291,  292,  292,  292,  806,  806,   50,  806,  292,
-      292,  292,  292,  292,   44,   44,   44,  806,   50,   46,
-      806,  806,  806,  806,  292,  292,  292,  292,  292,  292,
-       44,   44,   44,  293,  806,   46,   44,   44,   44,  806,
-      806,   46,   44,   44,   44,  806,   50,   46,   44,   44,
-
-       44,  806,  806,  299,   44,   44,   44,  806,  806,   46,
-      806,  294,   50,  806,  806,   44,   44,   44,   50,  296,
-       46,   44,   44,   44,   50,  806,   46,  806,  806,  806,
-       50,  806,  298,  806,  806,  806,   50,  297,   44,   44,
-       44,  806,  806,   46,  806,  300,  806,   50,  303,   44,
-       44,   44,  304,   50,  305,   44,   44,   44,  301,  806,
-       46,  806,  302,   44,   44,   44,  806,  806,   46,  806,
-       50,   44,   44,   44,  806,  806,   46,   44,   44,   44,
-      806,   50,   46,   44,   44,   44,  806,   50,   46,   44,
-       44,   44,  806,  806,  311,   50,  806,  806,  806,  312,
-
-       44,   44,   44,   50,  306,   46,   44,   44,   44,   50,
-      806,   46,  806,  806,  307,   50,  806,   44,   44,   44,
-      806,   50,   46,  806,  806,  308,  806,  806,  309,   44,
-       44,   44,   50,  806,   46,  310,  313,  806,   50,  315,
-      806,  314,  806,  806,  316,   44,   44,   44,  806,   50,
-       46,  806,   44,   44,   44,  806,  806,   46,   44,   44,
-       44,   50,  806,   46,   44,   44,   44,  806,  806,   46,
-      317,   44,   44,   44,  806,  806,   46,   50,  806,  806,
-      318,  806,  806,  319,   50,  806,  806,   44,   44,   44,
-       50,  320,   46,   44,   44,   44,   50,  806,   46,  322,
-
-      806,  321,  806,   50,  806,  806,   44,   44,   44,  806,
-      323,   46,   44,   44,   44,  806,  806,  327,  806,   50,
-      806,   44,   44,   44,  806,   50,   46,   44,   44,   44,
-      806,  806,   46,  806,  806,  806,  325,  806,   50,  324,
-       44,   44,   44,  806,   50,   46,  806,   44,   44,   44,
-      806,  326,   46,   50,  806,  806,   44,   44,   44,   50,
-      806,   46,   44,   44,   44,  806,  806,   46,  806,  328,
-      806,  806,   50,  806,  806,   44,   44,   44,  806,   50,
-      334,  329,   44,   44,   44,  806,  330,   46,   50,  806,
-       44,   44,   44,  806,   50,   46,   44,   44,   44,  806,
-
-      806,   46,  806,  331,  332,  333,  806,   50,   44,   44,
-       44,  806,  806,   46,   50,   44,   44,   44,  806,  806,
-       46,  806,   50,  336,  806,  806,  806,  335,   50,  337,
-      806,  806,  806,  338,  339,  806,   44,   44,   44,  806,
-       50,   46,  806,   44,   44,   44,  806,   50,   46,   44,
-       44,   44,  806,  806,   46,  806,  340,  806,   44,   44,
-       44,  806,  341,   46,   44,   44,   44,  806,   50,   46,
-      806,  806,   44,   44,   44,   50,  806,   46,   44,   44,
-       44,   50,  806,   46,   44,   44,   44,  342,  806,  351,
-       50,  806,   44,   44,   44,  806,   50,   46,  806,  806,
-
-      806,  343,  806,  346,   50,  344,   44,   44,   44,  345,
-       50,   46,  806,  806,  806,  806,   50,  348,  806,  806,
-       44,   44,   44,  347,   50,  352,  806,   44,   44,   44,
-      806,  349,  353,  806,   44,   44,   44,  806,   50,  354,
-      806,   44,   44,   44,  806,  350,   46,  806,   44,   44,
-       44,  806,   50,  358,  806,   44,   44,   44,  806,   50,
-      359,  806,   44,   44,   44,  806,   50,   46,  806,   44,
-       44,   44,  806,   50,   46,  806,   44,   44,   44,  355,
-       50,  362,  806,   44,   44,   44,  806,   50,   46,  806,
-       44,   44,   44,  806,   50,   46,  806,   44,   44,   44,
-
-      360,   50,   46,  806,  806,   44,   44,   44,   50,  806,
-       46,  806,  806,  806,  806,   50,  361,   45,   45,   45,
-      806,  806,   50,  806,   45,   45,   45,   45,   45,   50,
-       44,   44,   44,  806,  364,   46,  363,   50,  365,   45,
-       45,   45,   45,   45,   45,   44,   44,   44,  806,  806,
-       46,  806,  806,  366,   44,   44,   44,  806,  806,   46,
-      806,  806,   50,   44,   44,   44,  806,  806,   46,  806,
-      806,   44,   44,   44,  806,  367,   46,   50,   44,   44,
-       44,  806,  806,   46,  806,  806,   50,  806,  806,  369,
-      806,  806,  368,  806,  806,   50,  806,   44,   44,   44,
-
-      806,  370,   46,   50,   44,   44,   44,  806,  806,   46,
-       50,   44,   44,   44,  806,  806,   46,  806,  806,  371,
-      806,   44,   44,   44,  806,  806,   46,  806,  806,   50,
-      372,  376,   44,   44,   44,  806,   50,   46,  806,   44,
-       44,   44,  374,   50,   46,  806,  373,   44,   44,   44,
-      375,  806,   46,   50,   44,   44,   44,  379,  806,  380,
-       44,   44,   44,  806,   50,   46,  806,   44,   44,   44,
-      806,   50,   46,  806,  378,   44,   44,   44,  806,   50,
-       46,  806,  806,  377,  806,  806,   50,  806,   44,   44,
-       44,  806,   50,   46,  806,   44,   44,   44,  381,   50,
-
-       46,   44,   44,   44,  806,  385,   46,   50,  806,  806,
-      382,   44,   44,   44,  806,  383,   46,   44,   44,   44,
-       50,  806,   46,   44,   44,   44,  384,   50,   46,   44,
-       44,   44,  806,   50,   46,   44,   44,   44,  806,  806,
-      391,  806,  806,   50,  806,   44,   44,   44,  386,   50,
-       46,   44,   44,   44,  806,   50,   46,  806,   44,   44,
-       44,   50,  387,   46,   44,   44,   44,   50,  388,   46,
-      806,  389,  806,  806,  390,  806,  806,   50,  806,   44,
-       44,   44,  806,   50,   46,  806,   44,   44,   44,  806,
-       50,   46,  392,   44,   44,   44,   50,  394,  398,  806,
-
-       44,   44,   44,  806,  393,   46,  806,  806,   44,   44,
-       44,   50,  395,   46,   44,   44,   44,  806,   50,   46,
-      806,   44,   44,   44,  806,   50,   46,  396,   44,   44,
-       44,  402,   50,   46,   44,   44,   44,  806,  397,   46,
-       50,  806,   44,   44,   44,  806,   50,   46,  806,  806,
-      806,  399,  806,   50,  806,  806,   44,   44,   44,  400,
-       50,   46,  806,   44,   44,   44,   50,  806,  406,  806,
-      806,  401,  404,  407,   50,  403,   44,   44,   44,  806,
-      405,   46,   44,   44,   44,  806,  408,   46,   50,   44,
-       44,   44,  806,  806,   46,   50,   44,   44,   44,  806,
-
-      806,   46,   44,   44,   44,  806,  806,  413,   50,  806,
-      806,  409,  806,  806,   50,   44,   44,   44,  806,  806,
-       46,   50,  806,  806,  806,   44,   44,   44,   50,  806,
-       46,  806,  411,  410,   50,  415,  806,   44,   44,   44,
-      806,  806,   46,   44,   44,   44,  806,   50,   46,  412,
-       44,   44,   44,  419,  806,   46,  806,   50,   44,   44,
-       44,  806,  806,   46,  806,   44,   44,   44,  414,   50,
-       46,   44,   44,   44,  806,   50,   46,  806,  806,  806,
-      806,  806,   50,  806,  417,  806,  806,   44,   44,   44,
-       50,  418,   46,   44,   44,   44,  806,   50,   46,   44,
-
-       44,   44,  806,   50,   46,  806,  806,   44,   44,   44,
-      421,  420,   46,  806,  806,   44,   44,   44,  806,   50,
-       46,  806,  422,  806,  806,   50,  423,  806,  806,  806,
-      427,   50,  424,   44,   44,   44,  806,  806,   46,   50,
-      806,   44,   44,   44,  806,  426,   46,   50,  806,   44,
-       44,   44,  425,  806,   46,  806,  806,   44,   44,   44,
-      806,  806,   46,  806,  806,   50,   44,   44,   44,  806,
-      806,   46,  806,   50,   44,   44,   44,  806,  806,   46,
-      806,   50,  806,  806,  806,  806,  806,  428,  430,   50,
-      806,  806,  429,  806,  806,  431,  806,  806,   50,   44,
-
-       44,   44,  806,  806,   46,  806,   50,   44,   44,   44,
-      806,  432,   46,  433,   44,   44,   44,  806,  806,   46,
-      806,   44,   44,   44,  806,  806,   46,   44,   44,   44,
-      806,   50,   46,   44,   44,   44,  806,  806,   46,   50,
-      806,  806,   44,   44,   44,  434,   50,   46,  806,   44,
-       44,   44,  435,   50,   46,   44,   44,   44,  436,   50,
-       46,  437,  438,  806,  806,   50,   44,   44,   44,  806,
-      806,   46,  806,  806,   50,  806,  806,   44,   44,   44,
-      440,   50,   46,  806,  439,  806,  806,   50,   44,   44,
-       44,  806,  806,   46,   44,   44,   44,  806,   50,   46,
-
-      806,  806,  441,  806,  446,   44,   44,   44,  806,   50,
-      447,  806,  806,  442,   44,   44,   44,  806,  443,   46,
-       50,  806,  806,   44,   44,   44,   50,  445,   46,  806,
-      806,  444,  806,   44,   44,   44,  806,   50,   46,  448,
-       44,   44,   44,  806,  806,   46,   50,   44,   44,   44,
-      806,  806,   46,  806,  806,   50,   44,   44,   44,  806,
-      806,   46,  806,  806,  806,   50,  806,  449,   44,   44,
-       44,  806,   50,   46,  450,  806,  806,  806,  451,   50,
-       44,   44,   44,  806,  806,  455,  453,  806,   50,  806,
-      456,  806,  806,  452,   44,   44,   44,  806,  806,   46,
-
-       50,   44,   44,   44,  806,  458,   46,  454,   44,   44,
-       44,  460,   50,   46,  806,   44,   44,   44,  461,  457,
-       46,  806,   44,   44,   44,  806,   50,   46,  806,   44,
-       44,   44,  806,   50,   46,  806,   44,   44,   44,  459,
-       50,   46,  806,  806,  806,  806,  465,   50,   44,   44,
-       44,  806,  806,   46,   50,   44,   44,   44,  806,  806,
-       46,   50,  806,  806,  464,  467,  806,  462,   50,  806,
-      806,   44,   44,   44,  806,  463,  468,   44,   44,   44,
-       50,  806,   46,   44,   44,   44,  469,   50,   46,   44,
-       44,   44,  806,  806,  472,   44,   44,   44,  806,  806,
-
-       46,  466,  806,   50,  806,  806,   44,   44,   44,   50,
-      806,   46,   44,   44,   44,   50,  474,   46,   44,   44,
-       44,   50,  470,   46,   44,   44,   44,   50,  475,   46,
-      806,  806,  473,  806,  806,  471,  806,  806,   50,  806,
-      806,   44,   44,   44,   50,  806,   46,  806,  806,  806,
-       50,  478,   44,   44,   44,  806,   50,   46,  476,  806,
-       44,   44,   44,  806,  806,   46,   44,   44,   44,  806,
-      806,   46,  806,   50,  806,  806,  481,  806,  806,  477,
-       44,   44,   44,  806,   50,   46,  806,  806,   44,   44,
-       44,  479,   50,   46,   44,   44,   44,  806,   50,   46,
-
-      806,   44,   44,   44,  806,  806,   46,  480,   44,   44,
-       44,  485,   50,   46,   44,   44,   44,  806,  806,   46,
-       50,  806,   44,   44,   44,  482,   50,   46,  806,  806,
-      806,  483,  484,   50,  806,  806,   44,   44,   44,  806,
-       50,   46,   44,   44,   44,  806,   50,   46,   44,   44,
-       44,  486,  806,   46,   50,   44,   44,   44,  806,  806,
-       46,  488,   44,   44,   44,  806,  487,   46,   50,  806,
-      806,  489,  806,  806,   50,  806,  806,   44,   44,   44,
-       50,  490,   46,   44,   44,   44,  806,   50,   46,  806,
-      806,  491,  492,  806,   50,   44,   44,   44,  806,  806,
-
-      496,  493,   44,   44,   44,  806,  806,  497,  806,   50,
-      806,  806,  494,  806,  806,   50,   44,   44,   44,  806,
-      806,   46,  495,   44,   44,   44,  806,   50,  499,  806,
-       44,   44,   44,  806,   50,   46,  806,   44,   44,   44,
-      806,  806,   46,  806,   44,   44,   44,  806,   50,   46,
-      806,  806,   44,   44,   44,   50,  806,   46,  806,   44,
-       44,   44,   50,  806,   46,  806,  806,  498,  500,   50,
-       44,   44,   44,  806,  806,  505,   50,   44,   44,   44,
-      806,  806,   46,  502,   50,  501,  806,   44,   44,   44,
-      503,   50,   46,   44,   44,   44,  806,  806,   46,   44,
-
-       44,   44,   50,  806,   46,   44,   44,   44,  806,   50,
-       46,  504,   44,   44,   44,  806,  806,   46,  806,   50,
-      806,  806,   44,   44,   44,   50,  507,   46,  806,  506,
-      806,   50,  806,  806,   44,   44,   44,   50,  508,   46,
-       44,   44,   44,  806,   50,   46,  806,   44,   44,   44,
-      806,  509,   46,  510,   50,  806,   44,   44,   44,  806,
-      806,   46,  806,   44,   44,   44,   50,  806,   46,  806,
-      511,  806,   50,  806,  806,  512,   44,   44,   44,   50,
-      806,   46,  806,  806,   44,   44,   44,  513,   50,   46,
-      515,   44,   44,   44,  514,   50,  521,   44,   44,   44,
-
-      806,  806,   46,  806,  806,  806,  517,  806,   50,  516,
-       44,   44,   44,  806,  806,  523,   50,   44,   44,   44,
-      806,  806,   46,   50,  806,   44,   44,   44,  806,   50,
-       46,  519,  806,  806,  518,  806,  806,  520,  806,  806,
-      522,  806,   50,   44,   44,   44,  806,  806,   46,   50,
-       44,   44,   44,  806,  806,   46,  806,   50,   44,   44,
-       44,  806,  524,   46,   44,   44,   44,  806,  806,   46,
-      806,   44,   44,   44,  806,   50,   46,  806,  525,   44,
-       44,   44,   50,  806,   46,  527,   44,   44,   44,  806,
-       50,   46,  806,  806,  806,  526,   50,  528,  806,  806,
-
-      806,  806,  806,   50,  806,   44,   44,   44,  806,  530,
-       46,   50,  806,  529,   44,   44,   44,  806,   50,   46,
-       44,   44,   44,  806,  806,   46,  806,   44,   44,   44,
-      535,  531,   46,  806,  806,  532,  806,   50,  806,  806,
-      533,  806,   44,   44,   44,  806,   50,   46,   44,   44,
-       44,  806,   50,   46,  806,  806,   44,   44,   44,   50,
-      806,  539,   44,   44,   44,  806,  534,   46,   44,   44,
-       44,  806,  536,   46,   50,  806,  806,  806,  537,  806,
-       50,  806,  806,  806,   44,   44,   44,  538,   50,   46,
-       44,   44,   44,  806,   50,   46,   44,   44,   44,  806,
-
-       50,   46,   44,   44,   44,  806,  806,   46,   44,   44,
-       44,  806,  806,   46,  806,  540,   50,  806,  806,  806,
-      541,  806,   50,  542,  806,   44,   44,   44,   50,  543,
-       46,   44,   44,   44,   50,  806,   46,   44,   44,   44,
-       50,  806,   46,  806,   44,   44,   44,  806,  544,   46,
-      806,   44,   44,   44,  806,  545,  552,   50,  806,  546,
-      806,  806,  547,   50,  806,  806,  548,  806,  806,   50,
-      549,  806,   44,   44,   44,  806,   50,  553,  806,   44,
-       44,   44,  806,   50,   46,  806,  550,   44,   44,   44,
-      806,  806,   46,  806,  806,  551,   44,   44,   44,  806,
-
-      806,   46,  806,  806,   50,   44,   44,   44,  806,  806,
-      557,   50,   44,   44,   44,  806,  806,   46,  806,   50,
-      806,   44,   44,   44,  806,  555,  559,  806,   50,  554,
-      806,   44,   44,   44,  806,  556,   46,   50,   44,   44,
-       44,  806,  806,   46,   50,   44,   44,   44,  806,  806,
-       46,  806,  806,   50,   44,   44,   44,  806,  558,   46,
-       44,   44,   44,   50,  806,   46,   44,   44,   44,  806,
-       50,   46,  806,  806,  560,  806,  806,   50,   44,   44,
-       44,  806,  806,  566,  806,  806,   50,  806,   44,   44,
-       44,  806,   50,   46,  562,  806,  561,  806,   50,  806,
-
-      563,  806,  806,  564,  565,  806,   44,   44,   44,  806,
-       50,   46,   44,   44,   44,  806,  806,   46,  806,  806,
-       50,  806,  806,  567,   44,   44,   44,  806,  806,   46,
-       44,   44,   44,  806,  806,   46,  806,  806,   50,  806,
-       44,   44,   44,  806,   50,   46,   44,   44,   44,  806,
-      806,   46,  569,   44,   44,   44,   50,  806,   46,  570,
-      806,  806,   50,  806,  568,   44,   44,   44,  806,  806,
-       46,  806,   50,  571,   44,   44,   44,  806,   50,   46,
-      806,   44,   44,   44,  576,   50,  577,  806,  572,   44,
-       44,   44,  806,  806,   46,  806,  806,   50,  574,  573,
-
-       44,   44,   44,  806,  806,   46,   50,   44,   44,   44,
-      806,  806,   46,   50,  806,  806,  575,   44,   44,   44,
-      806,   50,   46,   44,   44,   44,  806,  806,   46,   44,
-       44,   44,   50,  806,   46,  806,  806,  578,  806,   50,
-       44,   44,   44,  806,  806,   46,  580,  806,  806,   50,
-      806,  806,  806,  579,  806,   50,  806,  806,   44,   44,
-       44,   50,  582,   46,  806,  806,  581,  806,   44,   44,
-       44,  806,   50,   46,   44,   44,   44,  806,  806,   46,
-      583,  806,   44,   44,   44,  806,  806,  588,  806,  806,
-       50,  584,  589,  585,   44,   44,   44,  806,  806,   46,
-
-       50,  806,  806,   44,   44,   44,   50,  806,   46,  806,
-       44,   44,   44,  806,   50,   46,   44,   44,   44,  806,
-      586,   46,   44,   44,   44,  587,   50,   46,   44,   44,
-       44,  806,  806,   46,  590,   50,  806,  806,  592,   44,
-       44,   44,   50,  806,   46,  806,  591,  806,   50,  806,
-      806,   44,   44,   44,   50,  594,   46,   44,   44,   44,
-       50,  806,   46,  806,  806,  593,  806,  806,  596,  806,
-      806,   50,   44,   44,   44,  595,  806,   46,  806,   44,
-       44,   44,  600,   50,   46,   44,   44,   44,  806,   50,
-       46,  806,  597,   44,   44,   44,  806,  806,   46,  806,
-
-      806,  806,  599,  598,   50,   44,   44,   44,  806,  806,
-       46,   50,  806,   44,   44,   44,  806,   50,   46,   44,
-       44,   44,  806,  806,   46,   50,  601,   44,   44,   44,
-      806,  602,   46,   44,   44,   44,  806,   50,  608,  603,
-      806,   44,   44,   44,  806,   50,   46,   44,   44,   44,
-      806,   50,   46,  806,  604,  806,  806,  806,  606,   50,
-      806,  806,  605,  806,  806,   50,   44,   44,   44,  806,
-      806,   46,  806,   50,  806,  607,   44,   44,   44,   50,
-      806,   46,  806,   44,   44,   44,  806,  609,   46,   44,
-       44,   44,  806,  806,   46,  806,  610,  806,   50,   44,
-
-       44,   44,  806,  806,  615,  611,  806,  806,   50,   44,
-       44,   44,  806,  806,  616,   50,  806,   44,   44,   44,
-      806,   50,   46,  806,  806,  806,  614,  806,  612,  613,
-      806,   50,   44,   44,   44,  806,  806,   46,   44,   44,
-       44,   50,  806,   46,  806,  806,   44,   44,   44,   50,
-      806,   46,   44,   44,   44,  806,  806,   46,   44,   44,
-       44,  806,  621,   46,   50,  617,   44,   44,   44,  806,
-       50,   46,  806,  806,   44,   44,   44,  618,   50,   46,
-      806,   44,   44,   44,   50,  620,   46,  806,  806,  619,
-       50,   44,   44,   44,  806,  806,   46,  806,   50,  806,
-
-      806,  623,   44,   44,   44,  806,   50,  627,  806,  622,
-       44,   44,   44,   50,  806,  628,  624,   44,   44,   44,
-      806,  806,   46,   50,  806,  806,  806,  626,  806,  625,
-       44,   44,   44,  806,   50,  630,   44,   44,   44,  806,
-      631,  632,   50,  806,  806,   44,   44,   44,  806,   50,
-       46,   44,   44,   44,  806,  806,   46,  806,  806,  806,
-      629,  806,   50,  806,   44,   44,   44,  806,   50,   46,
-      806,   44,   44,   44,  806,  633,   46,   50,  806,  806,
-      806,  634,  806,   50,  806,  806,  635,   44,   44,   44,
-      806,  806,  638,   44,   44,   44,   50,  806,   46,   44,
-
-       44,   44,  806,   50,  640,  806,  637,   44,   44,   44,
-      806,  806,  641,   44,   44,   44,  636,  806,   46,   50,
-      806,   44,   44,   44,  806,   50,  643,   44,   44,   44,
-      806,   50,   46,   44,   44,   44,  639,  806,   46,   50,
-      806,   44,   44,   44,  806,   50,   46,   44,   44,   44,
-      806,  806,   46,   50,  806,   44,   44,   44,  642,   50,
-       46,   44,   44,   44,  806,   50,   46,  806,  806,  806,
-      644,  806,  645,   50,  806,  806,  806,  806,  806,   50,
-      646,   44,   44,   44,  806,  806,   46,   50,  806,   44,
-       44,   44,  647,   50,   46,   44,   44,   44,  806,  806,
-
-       46,  806,   44,   44,   44,  806,  648,   46,  649,  806,
-       44,   44,   44,   50,  806,   46,  806,  806,  806,  806,
-      650,   50,  806,  806,   44,   44,   44,   50,  651,   46,
-       44,   44,   44,  806,   50,   46,  806,  806,   44,   44,
-       44,  806,   50,   46,  806,  806,  806,  806,  652,  654,
-       44,   44,   44,  806,  653,   46,   50,  806,   44,   44,
-       44,  806,   50,  659,  806,  806,  656,  806,  655,  806,
-       50,  806,  806,   44,   44,   44,  806,  657,   46,   44,
-       44,   44,   50,  806,   46,  806,  806,   44,   44,   44,
-       50,  806,   46,   44,   44,   44,  806,  806,   46,   44,
-
-       44,   44,  806,  658,   46,   50,  806,  806,   44,   44,
-       44,   50,  806,   46,  806,  806,  660,  806,  661,   50,
-      806,   44,   44,   44,  806,   50,   46,  806,   44,   44,
-       44,   50,  806,   46,  664,  806,   44,   44,   44,  662,
-       50,   46,  806,  665,  663,   44,   44,   44,  806,  806,
-       46,  806,  806,   50,  806,  806,  806,  806,  806,  666,
-       50,   44,   44,   44,  806,  667,   46,  806,   50,   44,
-       44,   44,  806,  806,  671,  806,  806,   50,  806,  806,
-      669,   44,   44,   44,  806,  806,  672,  806,  668,   44,
-       44,   44,  806,   50,   46,   44,   44,   44,  806,  806,
-
-       46,   50,   44,   44,   44,  806,  670,   46,  806,   44,
-       44,   44,  806,   50,   46,   44,   44,   44,  806,  806,
-       46,   50,  806,  806,   44,   44,   44,   50,  806,  679,
-       44,   44,   44,  806,   50,   46,  806,  673,  674,  806,
-      806,   50,  806,   44,   44,   44,  806,   50,   46,   44,
-       44,   44,  806,  680,  682,  675,   50,  806,  806,  806,
-      676,  806,   50,  806,   44,   44,   44,  677,  806,  683,
-      806,  806,  806,  678,  806,   50,  806,   44,   44,   44,
-      806,   50,   46,   44,   44,   44,  806,  806,  685,   44,
-       44,   44,  806,  806,   46,  681,   50,   44,   44,   44,
-
-      806,  806,   46,   44,   44,   44,  806,  806,   46,   50,
-      806,   44,   44,   44,  806,   50,   46,  806,  806,  806,
-      684,   50,  686,   44,   44,   44,  806,  806,  691,   50,
-      806,  806,  806,  806,  806,   50,  688,  687,  689,   44,
-       44,   44,  806,   50,   46,  806,   44,   44,   44,  806,
-      806,   46,   44,   44,   44,   50,  806,   46,  690,  806,
-       44,   44,   44,  806,  806,   46,  806,   44,   44,   44,
-      806,   50,   46,  806,   44,   44,   44,  692,   50,   46,
-       44,   44,   44,  806,   50,  698,  693,  806,  806,  806,
-      806,  694,   50,   44,   44,   44,  806,  806,   46,   50,
-
-       44,   44,   44,  695,  806,  700,   50,  806,   44,   44,
-       44,  806,   50,   46,   44,   44,   44,  806,  806,  702,
-      696,  806,   44,   44,   44,   50,  697,   46,  806,  806,
-      806,  806,   50,   44,   44,   44,  806,  806,   46,  806,
-       50,  699,   44,   44,   44,  806,   50,  705,   44,   44,
-       44,  806,  806,  706,   50,  806,   44,   44,   44,  806,
-      701,  707,   44,   44,   44,   50,  806,   46,  806,  703,
-       44,   44,   44,  704,   50,   46,   44,   44,   44,  806,
-       50,  710,   44,   44,   44,  806,  806,   46,   50,  806,
-       44,   44,   44,  806,   50,   46,  806,  806,   44,   44,
-
-       44,  708,   50,   46,   44,   44,   44,  806,   50,   46,
-      806,  806,  806,  806,   50,  806,  709,  806,   44,   44,
-       44,  806,   50,   46,   44,   44,   44,  806,  711,  716,
-       50,  806,   44,   44,   44,  806,   50,  717,   44,   44,
-       44,  806,  712,   46,   44,   44,   44,  806,  806,   46,
-       50,  806,  713,   44,   44,   44,   50,  714,   46,  806,
-      806,   44,   44,   44,   50,  806,   46,   44,   44,   44,
-       50,  715,   46,   44,   44,   44,   50,  806,   46,  806,
-      806,  718,   44,   44,   44,   50,  806,   46,  806,  806,
-      806,  806,  720,   50,  806,  806,  719,  806,  806,   50,
-
-      806,  806,  806,  806,  721,   50,  722,   44,   44,   44,
-      806,  806,   46,  806,   50,  806,  806,   44,   44,   44,
-      723,  724,   46,   44,   44,   44,  806,  806,   46,  806,
-       44,   44,   44,  806,  806,   46,   44,   44,   44,   50,
-      806,   46,   44,   44,   44,  806,  806,  730,  806,   50,
-      806,  806,   44,   44,   44,   50,  726,   46,  806,  725,
-      806,  727,   50,  806,   44,   44,   44,  806,   50,  732,
-      806,   44,   44,   44,   50,  729,   46,  806,  728,  806,
-       44,   44,   44,  806,   50,   46,  806,   44,   44,   44,
-      806,  806,   46,   44,   44,   44,   50,  735,   46,   44,
-
-       44,   44,  806,   50,   46,  731,   44,   44,   44,  806,
-      806,  738,   50,  806,  733,  806,   44,   44,   44,   50,
-      806,   46,   44,   44,   44,   50,  806,  740,   44,   44,
-       44,   50,  806,  741,   44,   44,   44,  734,   50,   46,
-      806,   44,   44,   44,  806,  736,   46,  737,   50,  806,
-      806,  743,  806,  806,   50,  806,  739,   44,   44,   44,
-       50,  806,   46,  806,  806,  806,   50,   44,   44,   44,
-      806,  806,  745,   50,   44,   44,   44,  806,  806,  746,
-       44,   44,   44,  806,  806,   46,  806,  742,  806,   50,
-      806,   44,   44,   44,  806,  744,  748,  806,  806,   50,
-
-      806,  749,   44,   44,   44,  806,   50,   46,   44,   44,
-       44,  806,   50,  751,   44,   44,   44,  806,  806,   46,
-       44,   44,   44,   50,  806,   46,  806,  806,  747,  806,
-       44,   44,   44,  806,   50,   46,   44,   44,   44,  806,
-       50,   46,   44,   44,   44,  806,   50,   46,   44,   44,
-       44,  750,   50,   46,   44,   44,   44,  806,  806,   46,
-      806,  752,   50,  753,   44,   44,   44,  806,   50,   46,
-       44,   44,   44,  754,   50,   46,  806,   44,   44,   44,
-       50,  756,   46,  806,  755,  806,   50,  760,   44,   44,
-       44,  806,  806,   46,  806,  757,   50,  806,  806,  758,
-
-      806,  806,   50,   44,   44,   44,  806,  806,   46,   50,
-      806,  761,   44,   44,   44,  759,  806,  764,  806,  806,
-       50,   44,   44,   44,  806,  806,   46,   44,   44,   44,
-      806,  765,   46,  806,  762,   50,   44,   44,   44,  806,
-      806,   46,  806,  806,   50,   44,   44,   44,  806,  806,
-       46,  806,  763,   50,  806,   44,   44,   44,  806,   50,
-      769,  806,   44,   44,   44,  806,  766,   46,   50,  806,
-       44,   44,   44,  806,  806,   46,  806,   50,   44,   44,
-       44,  806,  806,   46,  767,  806,  806,   50,  768,  806,
-       44,   44,   44,  806,   50,   46,  806,  806,   44,   44,
-
-       44,  770,   50,   46,   44,   44,   44,  806,  806,   46,
-       50,   44,   44,   44,  806,  806,  776,  806,  806,   44,
-       44,   44,   50,  771,   46,  806,  806,  772,  806,  806,
-       50,  806,  806,  806,  806,  774,   50,  773,  806,   44,
-       44,   44,  775,   50,   46,   44,   44,   44,  806,  806,
-      779,   50,   44,   44,   44,  806,  806,   46,   44,   44,
-       44,  806,  777,   46,   44,   44,   44,  806,  806,   46,
-      806,   50,  806,  806,   44,   44,   44,   50,  778,   46,
-      806,   44,   44,   44,   50,  806,   46,   44,   44,   44,
-       50,  780,   46,  806,  806,  806,   50,  781,   44,   44,
-
-       44,  806,  806,   46,  806,  806,   50,  806,  806,   44,
-       44,   44,  782,   50,   46,   44,   44,   44,  806,   50,
-       46,   44,   44,   44,  806,  783,   46,   44,   44,   44,
-       50,  806,   46,  784,  785,  806,  806,   44,   44,   44,
-      806,   50,   46,  806,  806,  786,  806,   50,  806,   44,
-       44,   44,  787,   50,   46,   44,   44,   44,  806,   50,
-       46,   44,   44,   44,  806,  806,  794,  788,  806,   50,
-       44,   44,   44,  806,  789,   46,  806,  806,  806,  790,
-      806,   50,  806,  806,  806,  791,  806,   50,  806,   44,
-       44,   44,  792,   50,   46,   44,   44,   44,  793,  806,
-
-       46,  806,   50,  806,  806,   44,   44,   44,  795,  806,
-      798,   44,   44,   44,  806,  806,   46,   44,   44,   44,
-      806,   50,   46,   44,   44,   44,  806,   50,  801,   44,
-       44,   44,  806,  806,   46,  797,  796,   50,  806,   44,
-       44,   44,  806,   50,   46,   44,   44,   44,  806,   50,
-       46,  806,  799,  806,  806,   50,  806,   44,   44,   44,
-      800,   50,  805,  806,  806,  806,  806,  806,  802,  806,
-      806,   50,  806,  806,  806,  806,  806,   50,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,   50,
-      803,  806,  806,  806,  806,  806,  806,  804,   36,   36,
-
-       36,   36,   36,   45,   45,   45,   45,   45,   67,  806,
-       67,   67,   67,   86,  806,   86,  806,   86,   88,   88,
-       88,   88,   88,   95,   95,   95,   95,   95,  140,  806,
-      140,  140,  140,  155,  155,  155,   11,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806
-
+       56,   83,   57,   58,   59,   60,   61,  144,   62,   63,
+       64,   65,   66,   42,   89,   42,   44,   44,   44,  142,
+      223,   46,   44,   44,   44,   90,  143,   46,  157,   44,
+
+       44,   44,  142,  143,   46,   44,   44,   44,   96,  142,
+       46,   90,   44,   44,   44,   45,  143,   46,   50,   77,
+       77,   77,  145,  146,   50,   92,  149,   44,   44,   44,
+       93,   50,   46,  148,   91,   45,  219,   50,  218,   45,
+       77,   77,   77,   45,   50,  144,   44,   44,   44,  217,
+       45,   46,  219,   94,   45,   43,   45,   97,  218,   50,
+       44,   44,   44,   98,  218,   46,   44,   44,   44,  147,
+      219,   46,   99,  217,   87,  100,   85,  101,   50,  102,
+      217,  103,   84,  287,  221,  104,  222,   75,  105,   44,
+       44,   44,   50,  287,   46,   43,  809,  809,   50,  287,
+
+      106,   44,   44,   44,  220,  809,   46,  107,  809,  288,
+      809,   44,   44,   44,  109,  809,   46,  108,  809,  110,
+      809,   50,  111,   44,   44,   44,  809,  112,   46,   44,
+       44,   44,  809,   50,   46,  809,  113,  809,  114,  809,
+      115,  116,  809,   50,  117,  809,  119,  809,  809,  118,
+      120,  809,  809,  809,  809,   50,  809,  809,  122,  809,
+      809,   50,   44,   44,   44,  809,  809,   46,  809,  121,
+      809,  809,   44,   44,   44,  809,  809,   46,  123,  809,
+       72,   72,   72,  124,   44,   44,   44,  809,  809,   46,
+       70,  809,  809,  809,   50,  809,  809,  130,   44,   44,
+
+       44,  131,  809,   46,   50,  809,   70,   44,   44,   44,
+      809,  132,   46,   44,   44,   44,   50,  809,   46,  125,
+      133,  134,  126,  127,  809,  809,  135,  809,  809,  809,
+       50,  809,  128,  809,  809,  129,  809,  136,  809,   50,
+       68,  137,   69,   69,   69,   50,  809,  809,  140,  809,
+      809,   88,   70,  809,  809,   76,  138,   76,   88,  139,
+       77,   77,   77,   68,  809,   71,   71,   71,   70,   72,
+       72,   72,   44,   44,   44,   70,  809,   46,   88,   70,
+      809,  809,   88,   44,   44,   44,   88,  809,  152,  809,
+      809,   70,  809,   88,  809,   70,  809,   88,  809,   88,
+
+      150,   44,   44,   44,   50,  809,  153,  809,  809,  151,
+      809,   44,   44,   44,  809,   50,   46,   44,   44,   44,
+      809,  809,   46,  809,   44,   44,   44,  809,  809,   46,
+      154,  809,  809,   50,   44,   44,   44,  809,  809,   46,
+       44,   44,   44,   50,  809,   46,  809,  809,  809,   50,
+      809,  809,  155,  158,  158,  158,   50,  809,  809,  809,
+      158,  158,  158,  158,  158,  809,   50,  160,   44,   44,
+       44,  809,   50,   46,  809,  158,  158,  158,  158,  158,
+      158,   44,   44,   44,  809,  159,   46,   44,   44,   44,
+      809,  809,   46,  809,  809,  164,   44,   44,   44,  809,
+
+       50,   46,   44,   44,   44,  809,  161,   46,  809,  809,
+      809,  809,  809,   50,  809,  162,   44,   44,   44,   50,
+      809,   46,  809,  809,  809,  809,  163,  809,   50,  809,
+      809,  809,  166,  167,   50,  809,  809,  809,  809,  169,
+      165,  168,   44,   44,   44,  809,  809,   46,   50,   44,
+       44,   44,  809,  809,   46,   44,   44,   44,  809,  170,
+       46,   44,   44,   44,  809,  809,   46,   44,   44,   44,
+      809,  809,   46,  809,   50,  809,  809,  178,  809,  171,
+      809,   50,  809,   44,   44,   44,  173,   50,  179,   44,
+       44,   44,  809,   50,   46,  172,  809,  809,  174,   50,
+
+       44,   44,   44,  175,  809,   46,  809,  176,  809,  809,
+      182,   44,   44,   44,  809,   50,   46,  809,  809,  177,
+      809,   50,  180,   44,   44,   44,  809,  809,   46,   44,
+       44,   44,   50,  809,   46,   44,   44,   44,  809,  809,
+       46,  809,  181,   50,  809,  809,  183,   44,   44,   44,
+      809,  809,   46,  809,  809,   50,  809,   44,   44,   44,
+      184,   50,   46,  809,  809,  185,  809,   50,   44,   44,
+       44,  809,  809,   46,  809,  809,  186,  809,  809,   50,
+       44,   44,   44,  809,  187,   46,   44,   44,   44,   50,
+      809,   46,   44,   44,   44,  809,  809,   46,  809,  809,
+
+       50,  809,  809,  188,   44,   44,   44,  809,  809,   46,
+      809,  809,   50,  809,   44,   44,   44,  809,   50,   46,
+      189,  809,  809,  809,   50,  809,  190,   44,   44,   44,
+      809,  809,   46,  809,  809,  809,   50,  195,  809,  191,
+      809,  809,   44,   44,   44,  192,   50,   46,   44,   44,
+       44,  809,  809,   46,  809,  193,  194,  809,  809,   50,
+      809,   44,   44,   44,  809,  196,   46,   44,   44,   44,
+      809,  809,   46,  809,   50,  809,  809,   44,   44,   44,
+       50,  809,   46,   44,   44,   44,  809,  199,   46,  809,
+      197,  809,  809,   50,  198,   44,   44,   44,  809,   50,
+
+       46,   44,   44,   44,  809,  809,   46,  809,  809,   50,
+      200,   44,   44,   44,  209,   50,   46,  809,  207,  211,
+      809,  809,  208,   44,   44,   44,  809,   50,   46,  809,
+      210,  809,  809,   50,   44,   44,   44,  809,  809,   46,
+       44,   44,   44,   50,  809,   46,  201,  202,  203,   44,
+       44,   44,  809,  212,   46,   50,  204,  809,  205,   44,
+       44,   44,  809,  206,   46,  809,   50,  809,  809,  213,
+      809,  809,   50,   44,   44,   44,  809,  809,  226,  215,
+      809,   50,  809,  214,   44,   44,   44,  809,  809,   46,
+      809,   50,  809,  809,  216,  809,  809,   44,   44,   44,
+
+      809,  809,   46,  809,  809,   50,  809,  809,  225,  809,
+       44,   44,   44,  809,  809,   46,   50,  809,  809,  809,
+      809,  809,  809,  809,  809,  227,  228,  228,  228,   50,
+      809,  809,  229,  228,  228,  228,  228,  228,   44,   44,
+       44,  809,   50,   46,  809,  809,  809,  809,  228,  228,
+      228,  228,  228,  228,   44,   44,   44,  232,  809,   46,
+       44,   44,   44,  233,  809,  234,   44,   44,   44,  809,
+       50,   46,  809,   44,   44,   44,  235,  230,   46,   44,
+       44,   44,  809,  809,   46,  809,   50,  809,  809,   44,
+       44,   44,   50,  231,   46,  809,  809,  809,   50,   44,
+
+       44,   44,  809,  809,   46,   50,  809,  809,  236,  809,
+      809,   50,   44,   44,   44,  809,  809,   46,   44,   44,
+       44,   50,  809,   46,  809,   44,   44,   44,  809,  809,
+       46,   50,  809,  237,  238,   44,   44,   44,  239,  809,
+       46,   44,   44,   44,   50,  809,   46,   44,   44,   44,
+       50,  809,   46,   44,   44,   44,  241,   50,   46,  809,
+      242,  240,  809,   44,   44,   44,  809,   50,   46,  809,
+       44,   44,   44,   50,  243,   46,   44,   44,   44,   50,
+      809,   46,   44,   44,   44,   50,  244,   46,  809,  809,
+      245,   44,   44,   44,  809,   50,   46,  246,  809,   44,
+
+       44,   44,   50,  809,   46,   44,   44,   44,   50,  809,
+       46,  249,  809,  809,   50,  809,  247,  809,  809,  248,
+       44,   44,   44,   50,  809,   46,  809,  809,  809,  250,
+      251,   50,  809,  809,  252,  809,  809,   50,   44,   44,
+       44,  809,  809,   46,   44,   44,   44,  809,  254,   46,
+      809,  809,   50,  809,   44,   44,   44,  253,  809,   46,
+       44,   44,   44,  809,  257,   46,  809,   44,   44,   44,
+       50,  255,   46,   44,   44,   44,   50,  809,   46,   44,
+       44,   44,  809,  809,   46,  256,   50,  809,   44,   44,
+       44,  809,   50,   46,  809,  809,   44,   44,   44,   50,
+
+      258,   46,   44,   44,   44,   50,  809,   46,   44,   44,
+       44,   50,  260,   46,   44,   44,   44,  259,  809,   46,
+       50,  809,  261,  809,   44,   44,   44,  809,   50,   46,
+      809,  263,  809,  809,   50,  809,  809,  262,  809,  809,
+       50,  809,   44,   44,   44,  809,   50,   46,   44,   44,
+       44,  809,  809,   46,  264,  809,   50,  265,   44,   44,
+       44,  809,  809,   46,  809,  809,  266,  809,  809,  267,
+       44,   44,   44,  809,   50,   46,  809,   44,   44,   44,
+       50,  809,   46,  809,   44,   44,   44,  809,  269,   46,
+       50,   44,   44,   44,  809,  268,   46,  809,   44,   44,
+
+       44,  270,   50,   46,  809,  809,  809,  809,  271,   50,
+       44,   44,   44,  809,  809,   46,   50,  809,  809,  809,
+      272,  809,  809,   50,  809,  809,  274,  809,  809,  809,
+       50,  809,  273,   44,   44,   44,  809,  275,   46,   44,
+       44,   44,   50,  809,   46,   44,   44,   44,  809,  276,
+       46,  809,  809,   44,   44,   44,  809,  809,   46,   44,
+       44,   44,  809,  809,   46,   50,  809,   44,   44,   44,
+      809,   50,   46,  809,  809,  809,  809,   50,  278,   44,
+       44,   44,  809,  809,   46,   50,  809,  809,  277,  279,
+      280,   50,   44,   44,   44,  809,  809,   46,  809,   50,
+
+       44,   44,   44,  809,  809,   46,  281,   44,   44,   44,
+      809,   50,   46,  809,   44,   44,   44,  809,  283,   46,
+      282,   44,   44,   44,   50,  809,   46,  809,  291,  292,
+      809,  284,   50,  809,  809,  809,  293,  809,  809,   50,
+      809,  809,  809,  809,  809,  809,   50,   44,   44,   44,
+      286,  285,   46,   50,   44,   44,   44,  809,  809,   46,
+      809,  809,  809,  809,  294,  295,  295,  295,  809,  809,
+      809,  809,  295,  295,  295,  295,  295,  809,  809,   50,
+       44,   44,   44,  809,  809,  298,   50,  295,  295,  295,
+      295,  295,  295,   44,   44,   44,  809,  809,   46,  809,
+
+      809,  297,   44,   44,   44,  296,  809,   46,   44,   44,
+       44,  809,   50,   46,   44,   44,   44,  809,  809,  302,
+      809,  809,   44,   44,   44,   50,  809,   46,   44,   44,
+       44,  809,  299,   46,   50,  809,   44,   44,   44,  809,
+       50,   46,   44,   44,   44,  809,   50,   46,  301,  809,
+      809,  809,  306,  300,   50,  809,  307,   44,   44,   44,
+       50,  809,  308,  303,   44,   44,   44,  809,   50,   46,
+      809,  304,  809,  809,   50,  809,  809,  305,   44,   44,
+       44,  809,  809,   46,  809,   44,   44,   44,  809,   50,
+       46,  809,   44,   44,   44,  809,   50,   46,   44,   44,
+
+       44,  809,  809,   46,   44,   44,   44,  809,  809,  314,
+       50,  809,  809,  309,  315,  809,  809,   50,  809,  809,
+       44,   44,   44,  809,   50,   46,   44,   44,   44,  310,
+       50,   46,  809,   44,   44,   44,   50,  809,   46,  311,
+       44,   44,   44,  312,  809,   46,  809,  809,  809,  809,
+      313,  316,   50,  809,  809,  809,  317,  809,   50,  318,
+      809,   44,   44,   44,  319,   50,   46,  809,   44,   44,
+       44,  809,   50,   46,   44,   44,   44,  809,  809,   46,
+       44,   44,   44,  809,  809,   46,  320,   44,   44,   44,
+      809,  321,   46,   50,  809,  809,   44,   44,   44,  322,
+
+       50,   46,  809,   44,   44,   44,   50,  323,   46,   44,
+       44,   44,   50,  809,   46,  325,  809,  324,  809,   50,
+       44,   44,   44,  809,  809,  330,  326,  809,   50,   44,
+       44,   44,  809,  809,   46,   50,  809,   44,   44,   44,
+      809,   50,   46,  809,  809,  809,  328,  809,  327,  809,
+      809,  809,   50,  809,  329,   44,   44,   44,  809,  809,
+       46,   50,   44,   44,   44,  809,  809,   46,  809,   50,
+      809,   44,   44,   44,  809,  809,   46,  331,   44,   44,
+       44,  809,  809,   46,   44,   44,   44,   50,  809,  337,
+      809,  332,  809,  809,   50,  809,  809,   44,   44,   44,
+
+      809,  333,   46,   50,  809,  809,  809,   44,   44,   44,
+       50,  809,   46,  809,  809,  809,   50,  809,  334,  335,
+      809,  336,   44,   44,   44,  809,  809,   46,  809,   50,
+       44,   44,   44,  809,  809,   46,  338,  809,  339,   50,
+       44,   44,   44,  809,  809,   46,  340,   44,   44,   44,
+      341,  809,   46,  809,   50,  809,   44,   44,   44,  809,
+      342,   46,   50,   44,   44,   44,  809,  809,   46,   44,
+       44,   44,   50,  809,   46,   44,   44,   44,  343,   50,
+       46,  809,  809,  809,   44,   44,   44,  344,   50,   46,
+      809,  809,   44,   44,   44,   50,  809,   46,  345,  809,
+
+      809,   50,  809,   44,   44,   44,  809,   50,   46,  809,
+      809,  809,  809,  809,  346,  809,   50,  809,  809,  347,
+      348,  809,  809,  349,   50,  809,  350,   44,   44,   44,
+      809,  351,   46,  809,  809,   50,   44,   44,   44,  809,
+      809,  354,  352,   44,   44,   44,  809,  809,  355,   44,
+       44,   44,  809,  809,  356,   44,   44,   44,  809,   50,
+      357,  809,   44,   44,   44,  809,  353,   46,   50,   44,
+       44,   44,  809,  809,  361,   50,  809,   44,   44,   44,
+      809,   50,  362,   44,   44,   44,  809,   50,   46,  809,
+       44,   44,   44,  809,   50,   46,  809,   44,   44,   44,
+
+      358,   50,  365,   44,   44,   44,  809,  809,   46,   50,
+      809,   44,   44,   44,  809,   50,   46,  809,   44,   44,
+       44,  363,   50,   46,  809,   44,   44,   44,  809,   50,
+       46,  809,  809,  809,  809,   50,  809,  364,   45,   45,
+       45,  809,  809,   50,  809,   45,   45,   45,   45,   45,
+       50,  809,  809,  809,  809,  367,  366,   50,  809,  368,
+       45,   45,   45,   45,   45,   45,   44,   44,   44,  809,
+      809,   46,  809,  369,   44,   44,   44,  809,  809,   46,
+       44,   44,   44,  809,  809,   46,   44,   44,   44,  809,
+      809,   46,  809,  809,   44,   44,   44,  809,   50,   46,
+
+       44,   44,   44,  809,  809,   46,   50,  809,   44,   44,
+       44,  370,   50,   46,  809,  372,  809,  809,   50,  809,
+      809,  371,  809,  809,  373,  809,   50,  809,   44,   44,
+       44,  809,   50,   46,  809,  809,   44,   44,   44,  809,
+       50,   46,  374,  809,   44,   44,   44,  809,  809,   46,
+      809,  809,  375,  809,  379,  809,  809,  376,  809,  809,
+       50,  809,   44,   44,   44,  809,  377,   46,   50,   44,
+       44,   44,  809,  809,   46,  378,   50,   44,   44,   44,
+      809,  809,   46,   44,   44,   44,  809,  382,  383,  809,
+       44,   44,   44,  809,   50,   46,  809,   44,   44,   44,
+
+      809,   50,   46,  809,  381,   44,   44,   44,  809,   50,
+       46,  809,  809,  380,  809,   50,   44,   44,   44,  809,
+      809,   46,   50,  809,  809,   44,   44,   44,  384,   50,
+       46,   44,   44,   44,  809,  388,   46,   50,  809,  809,
+      385,   44,   44,   44,  809,  386,   46,  809,   50,  809,
+       44,   44,   44,  809,  387,   46,  809,   50,  809,   44,
+       44,   44,  809,   50,   46,   44,   44,   44,  809,  809,
+       46,  809,  809,   50,   44,   44,   44,  809,  389,  394,
+      809,  809,   50,   44,   44,   44,  809,  809,   46,  809,
+      809,   50,  390,   44,   44,   44,  809,   50,   46,  809,
+
+      809,  391,  809,   44,   44,   44,   50,  392,   46,  809,
+      393,   44,   44,   44,  809,   50,   46,   44,   44,   44,
+      809,  809,   46,  809,  809,   50,   44,   44,   44,  809,
+      395,   46,   44,   44,   44,   50,  809,  401,  809,   44,
+       44,   44,  397,   50,   46,  809,  396,  809,  809,   50,
+       44,   44,   44,  809,  809,   46,  809,  809,   50,  398,
+      809,   44,   44,   44,   50,  399,   46,   44,   44,   44,
+      809,   50,   46,  809,   44,   44,   44,  405,  400,   46,
+      809,  809,   50,  809,   44,   44,   44,  809,  809,   46,
+      402,  809,  809,   50,  809,   44,   44,   44,  809,   50,
+
+       46,  403,   44,   44,   44,  809,   50,  409,  809,   44,
+       44,   44,  410,  809,   46,  809,   50,  809,  404,  411,
+      809,  406,  407,   44,   44,   44,  809,   50,   46,  809,
+       44,   44,   44,  408,   50,   46,  809,   44,   44,   44,
+      809,   50,   46,   44,   44,   44,  809,  809,   46,  809,
+      809,   44,   44,   44,  809,   50,  416,  809,   44,   44,
+       44,  809,   50,   46,  809,  809,   44,   44,   44,   50,
+      809,   46,   44,   44,   44,   50,  418,   46,  412,  809,
+      414,  413,  809,   50,   44,   44,   44,  809,  809,   46,
+       50,  809,   44,   44,   44,  809,  415,   46,   50,  809,
+
+      809,  809,  422,  809,   50,   44,   44,   44,  809,  809,
+       46,  417,   44,   44,   44,  809,   50,   46,  809,  420,
+      809,   44,   44,   44,   50,  421,   46,   44,   44,   44,
+      809,  809,   46,  809,  809,  809,  809,   50,   44,   44,
+       44,  809,  809,   46,   50,  809,   44,   44,   44,  809,
+      809,   46,  809,   50,  809,  809,  809,  424,  423,   50,
+       44,   44,   44,  809,  809,   46,  426,  809,  809,  809,
+       50,  809,  425,  809,   44,   44,   44,  427,   50,   46,
+       44,   44,   44,  809,  809,   46,   44,   44,   44,  430,
+      809,   46,   50,  809,  809,  809,  809,  809,  429,  428,
+
+       44,   44,   44,  809,  809,   46,   50,  809,   44,   44,
+       44,  809,   50,   46,  809,   44,   44,   44,   50,  809,
+       46,  809,   44,   44,   44,  809,  809,   46,  809,  809,
+      809,  809,   50,  809,  431,  809,  809,  432,  809,  433,
+       50,  809,  809,   44,   44,   44,  434,   50,   46,  809,
+       44,   44,   44,  809,   50,   46,  809,  809,  809,  809,
+      435,  436,   44,   44,   44,  809,  809,   46,   44,   44,
+       44,  809,  809,   46,  809,   50,  809,  809,  809,   44,
+       44,   44,   50,  809,   46,   44,   44,   44,  438,  437,
+       46,   44,   44,   44,   50,  809,   46,  809,  809,  809,
+
+       50,   44,   44,   44,  809,  809,   46,  809,  440,  809,
+      809,   50,  809,  439,  441,  809,  809,   50,  809,   44,
+       44,   44,  809,   50,   46,  809,   44,   44,   44,  443,
+      809,   46,  809,   50,  809,  809,  442,   44,   44,   44,
+      809,  809,   46,   44,   44,   44,  809,  809,   46,  809,
+      809,   50,  809,  809,  444,   44,   44,   44,   50,  809,
+       46,   44,   44,   44,  809,  449,  450,  809,  809,   50,
+      809,   44,   44,   44,  809,   50,   46,  445,  446,   44,
+       44,   44,  448,  809,   46,  809,  809,   50,  809,  809,
+      809,  447,  809,   50,  809,  451,   44,   44,   44,  809,
+
+      809,   46,  809,   50,   44,   44,   44,  809,  809,   46,
+      809,   50,   44,   44,   44,  809,  809,   46,   44,   44,
+       44,  809,  809,   46,  452,  809,  809,  809,   50,  809,
+      453,  809,   44,   44,   44,  809,   50,  458,   44,   44,
+       44,  454,  459,   46,   50,  809,  809,   44,   44,   44,
+       50,  456,   46,   44,   44,   44,  809,  455,   46,  809,
+      809,  809,  809,  463,   50,  809,  809,  809,  809,  457,
+       50,  460,   44,   44,   44,  461,  809,   46,  809,   50,
+      809,  809,  464,  809,  809,   50,   44,   44,   44,  809,
+      809,   46,  462,   44,   44,   44,  809,  809,   46,  809,
+
+       44,   44,   44,  809,   50,   46,  809,   44,   44,   44,
+      809,  809,   46,  809,  809,  809,  809,  468,   50,   44,
+       44,   44,  809,  809,   46,   50,   44,   44,   44,  809,
+      809,   46,   50,  809,  809,  467,  470,  809,  465,   50,
+      809,  809,   44,   44,   44,  809,  466,  471,   44,   44,
+       44,   50,  809,   46,   44,   44,   44,  472,   50,   46,
+       44,   44,   44,  809,  809,  475,   44,   44,   44,  809,
+      809,   46,  469,  809,   50,  809,  809,   44,   44,   44,
+       50,  809,   46,   44,   44,   44,   50,  477,   46,   44,
+       44,   44,   50,  473,   46,   44,   44,   44,   50,  478,
+
+       46,  809,  809,  476,  809,  809,  474,  809,  809,   50,
+      809,  809,   44,   44,   44,   50,  809,   46,  809,  809,
+      809,   50,  481,   44,   44,   44,  809,   50,   46,  479,
+      809,   44,   44,   44,  809,  809,   46,   44,   44,   44,
+      809,  809,   46,  809,   50,  809,  809,  484,  809,  809,
+      480,   44,   44,   44,  809,   50,   46,  809,  809,   44,
+       44,   44,  482,   50,   46,   44,   44,   44,  809,   50,
+       46,  809,   44,   44,   44,  809,  809,   46,  483,   44,
+       44,   44,  488,   50,   46,   44,   44,   44,  809,  809,
+       46,   50,  809,   44,   44,   44,  485,   50,   46,  809,
+
+      809,  809,  486,  487,   50,  809,  809,   44,   44,   44,
+      809,   50,   46,   44,   44,   44,  809,   50,   46,   44,
+       44,   44,  489,  809,   46,   50,   44,   44,   44,  809,
+      809,   46,  491,   44,   44,   44,  809,  490,   46,   50,
+      809,  809,  492,  809,  809,   50,  809,  809,   44,   44,
+       44,   50,  493,   46,   44,   44,   44,  809,   50,   46,
+      809,  809,  494,  495,  809,   50,   44,   44,   44,  809,
+      809,  499,  496,   44,   44,   44,  809,  809,  500,  809,
+       50,  809,  809,  497,  809,  809,   50,   44,   44,   44,
+      809,  809,   46,  498,   44,   44,   44,  809,   50,  502,
+
+      809,   44,   44,   44,  809,   50,   46,  809,   44,   44,
+       44,  809,  809,   46,  809,   44,   44,   44,  809,   50,
+       46,  809,  809,   44,   44,   44,   50,  809,   46,  809,
+       44,   44,   44,   50,  809,   46,  809,  809,  501,  503,
+       50,   44,   44,   44,  809,  809,  508,   50,   44,   44,
+       44,  809,  809,   46,  505,   50,  504,  809,   44,   44,
+       44,  506,   50,   46,   44,   44,   44,  809,  809,   46,
+       44,   44,   44,   50,  809,   46,   44,   44,   44,  809,
+       50,   46,  507,   44,   44,   44,  809,  809,   46,  809,
+       50,  809,  809,   44,   44,   44,   50,  510,   46,  809,
+
+      509,  809,   50,  809,  809,   44,   44,   44,   50,  511,
+       46,   44,   44,   44,  809,   50,   46,  809,   44,   44,
+       44,  809,  512,   46,  513,   50,  809,   44,   44,   44,
+      809,  809,   46,  809,   44,   44,   44,   50,  809,   46,
+      809,  514,  809,   50,  809,  809,  515,   44,   44,   44,
+       50,  809,   46,  809,  809,   44,   44,   44,  516,   50,
+       46,  518,   44,   44,   44,  517,   50,  524,   44,   44,
+       44,  809,  809,   46,  809,  809,  809,  520,  809,   50,
+      519,   44,   44,   44,  809,  809,  526,   50,   44,   44,
+       44,  809,  809,   46,   50,  809,   44,   44,   44,  809,
+
+       50,   46,  522,  809,  809,  521,  809,  809,  523,  809,
+      809,  525,  809,   50,   44,   44,   44,  809,  809,   46,
+       50,   44,   44,   44,  809,  809,   46,  809,   50,   44,
+       44,   44,  809,  527,   46,   44,   44,   44,  809,  809,
+       46,  809,   44,   44,   44,  809,   50,   46,  809,  528,
+       44,   44,   44,   50,  809,   46,  530,   44,   44,   44,
+      809,   50,   46,  809,  809,  809,  529,   50,  531,  809,
+      809,  809,  809,  809,   50,  809,   44,   44,   44,  809,
+      533,   46,   50,  809,  532,   44,   44,   44,  809,   50,
+       46,   44,   44,   44,  809,  809,   46,  809,   44,   44,
+
+       44,  538,  534,   46,  809,  809,  535,  809,   50,  809,
+      809,  536,  809,   44,   44,   44,  809,   50,   46,   44,
+       44,   44,  809,   50,   46,  809,  809,   44,   44,   44,
+       50,  809,  542,   44,   44,   44,  809,  537,   46,   44,
+       44,   44,  809,  539,   46,   50,  809,  809,  809,  540,
+      809,   50,  809,  809,  809,   44,   44,   44,  541,   50,
+       46,   44,   44,   44,  809,   50,   46,   44,   44,   44,
+      809,   50,   46,   44,   44,   44,  809,  809,   46,   44,
+       44,   44,  809,  809,   46,  809,  543,   50,  809,  809,
+      809,  544,  809,   50,  545,  809,   44,   44,   44,   50,
+
+      546,   46,   44,   44,   44,   50,  809,   46,   44,   44,
+       44,   50,  809,   46,  809,   44,   44,   44,  809,  547,
+       46,  809,   44,   44,   44,  809,  548,  555,   50,  809,
+      549,  809,  809,  550,   50,  809,  809,  551,  809,  809,
+       50,  552,  809,   44,   44,   44,  809,   50,  556,  809,
+       44,   44,   44,  809,   50,   46,  809,  553,   44,   44,
+       44,  809,  809,   46,  809,  809,  554,   44,   44,   44,
+      809,  809,   46,  809,  809,   50,   44,   44,   44,  809,
+      809,  560,   50,   44,   44,   44,  809,  809,   46,  809,
+       50,  809,   44,   44,   44,  809,  558,  562,  809,   50,
+
+      557,  809,   44,   44,   44,  809,  559,   46,   50,   44,
+       44,   44,  809,  809,   46,   50,   44,   44,   44,  809,
+      809,   46,  809,  809,   50,   44,   44,   44,  809,  561,
+       46,   44,   44,   44,   50,  809,   46,   44,   44,   44,
+      809,   50,   46,  809,  809,  563,  809,  809,   50,   44,
+       44,   44,  809,  809,  569,  809,  809,   50,  809,   44,
+       44,   44,  809,   50,   46,  565,  809,  564,  809,   50,
+      809,  566,  809,  809,  567,  568,  809,   44,   44,   44,
+      809,   50,   46,   44,   44,   44,  809,  809,   46,  809,
+      809,   50,  809,  809,  570,   44,   44,   44,  809,  809,
+
+       46,   44,   44,   44,  809,  809,   46,  809,  809,   50,
+      809,   44,   44,   44,  809,   50,   46,   44,   44,   44,
+      809,  809,   46,  572,   44,   44,   44,   50,  809,   46,
+      573,  809,  809,   50,  809,  571,   44,   44,   44,  809,
+      809,   46,  809,   50,  574,   44,   44,   44,  809,   50,
+       46,  809,   44,   44,   44,  579,   50,  580,  809,  575,
+       44,   44,   44,  809,  809,   46,  809,  809,   50,  577,
+      576,   44,   44,   44,  809,  809,   46,   50,   44,   44,
+       44,  809,  809,   46,   50,  809,  809,  578,   44,   44,
+       44,  809,   50,   46,   44,   44,   44,  809,  809,   46,
+
+       44,   44,   44,   50,  809,   46,  809,  809,  581,  809,
+       50,   44,   44,   44,  809,  809,   46,  583,  809,  809,
+       50,  809,  809,  809,  582,  809,   50,  809,  809,   44,
+       44,   44,   50,  585,   46,  809,  809,  584,  809,   44,
+       44,   44,  809,   50,   46,   44,   44,   44,  809,  809,
+       46,  586,  809,   44,   44,   44,  809,  809,  591,  809,
+      809,   50,  587,  592,  588,   44,   44,   44,  809,  809,
+       46,   50,  809,  809,   44,   44,   44,   50,  809,   46,
+      809,   44,   44,   44,  809,   50,   46,   44,   44,   44,
+      809,  589,   46,   44,   44,   44,  590,   50,   46,   44,
+
+       44,   44,  809,  809,   46,  593,   50,  809,  809,  595,
+       44,   44,   44,   50,  809,   46,  809,  594,  809,   50,
+      809,  809,   44,   44,   44,   50,  597,   46,   44,   44,
+       44,   50,  809,   46,  809,  809,  596,  809,  809,  599,
+      809,  809,   50,   44,   44,   44,  598,  809,   46,  809,
+       44,   44,   44,  603,   50,   46,   44,   44,   44,  809,
+       50,   46,  809,  600,   44,   44,   44,  809,  809,   46,
+      809,  809,  809,  602,  601,   50,   44,   44,   44,  809,
+      809,   46,   50,  809,   44,   44,   44,  809,   50,   46,
+       44,   44,   44,  809,  809,   46,   50,  604,   44,   44,
+
+       44,  809,  605,   46,   44,   44,   44,  809,   50,  611,
+      606,  809,   44,   44,   44,  809,   50,   46,   44,   44,
+       44,  809,   50,   46,  809,  607,  809,  809,  809,  609,
+       50,  809,  809,  608,  809,  809,   50,   44,   44,   44,
+      809,  809,   46,  809,   50,  809,  610,   44,   44,   44,
+       50,  809,   46,  809,   44,   44,   44,  809,  612,   46,
+       44,   44,   44,  809,  809,   46,  809,  613,  809,   50,
+       44,   44,   44,  809,  809,  618,  614,  809,  809,   50,
+       44,   44,   44,  809,  809,  619,   50,  809,   44,   44,
+       44,  809,   50,   46,  809,  809,  809,  617,  809,  615,
+
+      616,  809,   50,   44,   44,   44,  809,  809,   46,   44,
+       44,   44,   50,  809,   46,  809,  809,   44,   44,   44,
+       50,  809,   46,   44,   44,   44,  809,  809,   46,   44,
+       44,   44,  809,  624,   46,   50,  620,   44,   44,   44,
+      809,   50,   46,  809,  809,   44,   44,   44,  621,   50,
+       46,  809,   44,   44,   44,   50,  623,   46,  809,  809,
+      622,   50,   44,   44,   44,  809,  809,   46,  809,   50,
+      809,  809,  626,   44,   44,   44,  809,   50,  630,  809,
+      625,   44,   44,   44,   50,  809,  631,  627,   44,   44,
+       44,  809,  809,   46,   50,  809,  809,  809,  629,  809,
+
+      628,   44,   44,   44,  809,   50,  633,   44,   44,   44,
+      809,  634,  635,   50,  809,  809,   44,   44,   44,  809,
+       50,   46,   44,   44,   44,  809,  809,   46,  809,  809,
+      809,  632,  809,   50,  809,   44,   44,   44,  809,   50,
+       46,  809,   44,   44,   44,  809,  636,   46,   50,  809,
+      809,  809,  637,  809,   50,  809,  809,  638,   44,   44,
+       44,  809,  809,  641,   44,   44,   44,   50,  809,   46,
+       44,   44,   44,  809,   50,  643,  809,  640,   44,   44,
+       44,  809,  809,  644,   44,   44,   44,  639,  809,   46,
+       50,  809,   44,   44,   44,  809,   50,  646,   44,   44,
+
+       44,  809,   50,   46,   44,   44,   44,  642,  809,   46,
+       50,  809,   44,   44,   44,  809,   50,   46,   44,   44,
+       44,  809,  809,   46,   50,  809,   44,   44,   44,  645,
+       50,   46,   44,   44,   44,  809,   50,   46,  809,  809,
+      809,  647,  809,  648,   50,  809,  809,  809,  809,  809,
+       50,  649,   44,   44,   44,  809,  809,   46,   50,  809,
+       44,   44,   44,  650,   50,   46,   44,   44,   44,  809,
+      809,   46,  809,   44,   44,   44,  809,  651,   46,  652,
+      809,   44,   44,   44,   50,  809,   46,  809,  809,  809,
+      809,  653,   50,  809,  809,   44,   44,   44,   50,  654,
+
+       46,   44,   44,   44,  809,   50,   46,  809,  809,   44,
+       44,   44,  809,   50,   46,  809,  809,  809,  809,  655,
+      657,   44,   44,   44,  809,  656,   46,   50,  809,   44,
+       44,   44,  809,   50,  662,  809,  809,  659,  809,  658,
+      809,   50,  809,  809,   44,   44,   44,  809,  660,   46,
+       44,   44,   44,   50,  809,   46,  809,  809,   44,   44,
+       44,   50,  809,   46,   44,   44,   44,  809,  809,   46,
+       44,   44,   44,  809,  661,   46,   50,  809,  809,   44,
+       44,   44,   50,  809,   46,  809,  809,  663,  809,  664,
+       50,  809,   44,   44,   44,  809,   50,   46,  809,   44,
+
+       44,   44,   50,  809,   46,  667,  809,   44,   44,   44,
+      665,   50,   46,  809,  668,  666,   44,   44,   44,  809,
+      809,   46,  809,  809,   50,  809,  809,  809,  809,  809,
+      669,   50,   44,   44,   44,  809,  670,   46,  809,   50,
+       44,   44,   44,  809,  809,  674,  809,  809,   50,  809,
+      809,  672,   44,   44,   44,  809,  809,  675,  809,  671,
+       44,   44,   44,  809,   50,   46,   44,   44,   44,  809,
+      809,   46,   50,   44,   44,   44,  809,  673,   46,  809,
+       44,   44,   44,  809,   50,   46,   44,   44,   44,  809,
+      809,   46,   50,  809,  809,   44,   44,   44,   50,  809,
+
+      682,   44,   44,   44,  809,   50,   46,  809,  676,  677,
+      809,  809,   50,  809,   44,   44,   44,  809,   50,   46,
+       44,   44,   44,  809,  683,  685,  678,   50,  809,  809,
+      809,  679,  809,   50,  809,   44,   44,   44,  680,  809,
+      686,  809,  809,  809,  681,  809,   50,  809,   44,   44,
+       44,  809,   50,   46,   44,   44,   44,  809,  809,  688,
+       44,   44,   44,  809,  809,   46,  684,   50,   44,   44,
+       44,  809,  809,   46,   44,   44,   44,  809,  809,   46,
+       50,  809,   44,   44,   44,  809,   50,   46,  809,  809,
+      809,  687,   50,  689,   44,   44,   44,  809,  809,  694,
+
+       50,  809,  809,  809,  809,  809,   50,  691,  690,  692,
+       44,   44,   44,  809,   50,   46,  809,   44,   44,   44,
+      809,  809,   46,   44,   44,   44,   50,  809,   46,  693,
+      809,   44,   44,   44,  809,  809,   46,  809,   44,   44,
+       44,  809,   50,   46,  809,   44,   44,   44,  695,   50,
+       46,   44,   44,   44,  809,   50,  701,  696,  809,  809,
+      809,  809,  697,   50,   44,   44,   44,  809,  809,   46,
+       50,   44,   44,   44,  698,  809,  703,   50,  809,   44,
+       44,   44,  809,   50,   46,   44,   44,   44,  809,  809,
+      705,  699,  809,   44,   44,   44,   50,  700,   46,  809,
+
+      809,  809,  809,   50,   44,   44,   44,  809,  809,   46,
+      809,   50,  702,   44,   44,   44,  809,   50,  708,   44,
+       44,   44,  809,  809,  709,   50,  809,   44,   44,   44,
+      809,  704,  710,   44,   44,   44,   50,  809,   46,  809,
+      706,   44,   44,   44,  707,   50,   46,   44,   44,   44,
+      809,   50,  713,   44,   44,   44,  809,  809,   46,   50,
+      809,   44,   44,   44,  809,   50,   46,  809,  809,   44,
+       44,   44,  711,   50,   46,   44,   44,   44,  809,   50,
+       46,  809,  809,  809,  809,   50,  809,  712,  809,   44,
+       44,   44,  809,   50,   46,   44,   44,   44,  809,  714,
+
+      719,   50,  809,   44,   44,   44,  809,   50,  720,   44,
+       44,   44,  809,  715,   46,   44,   44,   44,  809,  809,
+       46,   50,  809,  716,   44,   44,   44,   50,  717,   46,
+      809,  809,   44,   44,   44,   50,  809,   46,   44,   44,
+       44,   50,  718,   46,   44,   44,   44,   50,  809,   46,
+      809,  809,  721,   44,   44,   44,   50,  809,   46,  809,
+      809,  809,  809,  723,   50,  809,  809,  722,  809,  809,
+       50,  809,  809,  809,  809,  724,   50,  725,   44,   44,
+       44,  809,  809,   46,  809,   50,  809,  809,   44,   44,
+       44,  726,  727,   46,   44,   44,   44,  809,  809,   46,
+
+      809,   44,   44,   44,  809,  809,   46,   44,   44,   44,
+       50,  809,   46,   44,   44,   44,  809,  809,  733,  809,
+       50,  809,  809,   44,   44,   44,   50,  729,   46,  809,
+      728,  809,  730,   50,  809,   44,   44,   44,  809,   50,
+      735,  809,   44,   44,   44,   50,  732,   46,  809,  731,
+      809,   44,   44,   44,  809,   50,   46,  809,   44,   44,
+       44,  809,  809,   46,   44,   44,   44,   50,  738,   46,
+       44,   44,   44,  809,   50,   46,  734,   44,   44,   44,
+      809,  809,  741,   50,  809,  736,  809,   44,   44,   44,
+       50,  809,   46,   44,   44,   44,   50,  809,  743,   44,
+
+       44,   44,   50,  809,  744,   44,   44,   44,  737,   50,
+       46,  809,   44,   44,   44,  809,  739,   46,  740,   50,
+      809,  809,  746,  809,  809,   50,  809,  742,   44,   44,
+       44,   50,  809,   46,  809,  809,  809,   50,   44,   44,
+       44,  809,  809,  748,   50,   44,   44,   44,  809,  809,
+      749,   44,   44,   44,  809,  809,   46,  809,  745,  809,
+       50,  809,   44,   44,   44,  809,  747,  751,  809,  809,
+       50,  809,  752,   44,   44,   44,  809,   50,   46,   44,
+       44,   44,  809,   50,  754,   44,   44,   44,  809,  809,
+       46,   44,   44,   44,   50,  809,   46,  809,  809,  750,
+
+      809,   44,   44,   44,  809,   50,   46,   44,   44,   44,
+      809,   50,   46,   44,   44,   44,  809,   50,   46,   44,
+       44,   44,  753,   50,   46,   44,   44,   44,  809,  809,
+       46,  809,  755,   50,  756,   44,   44,   44,  809,   50,
+       46,   44,   44,   44,  757,   50,   46,  809,   44,   44,
+       44,   50,  759,   46,  809,  758,  809,   50,  763,   44,
+       44,   44,  809,  809,   46,  809,  760,   50,  809,  809,
+      761,  809,  809,   50,   44,   44,   44,  809,  809,   46,
+       50,  809,  764,   44,   44,   44,  762,  809,  767,  809,
+      809,   50,   44,   44,   44,  809,  809,   46,   44,   44,
+
+       44,  809,  768,   46,  809,  765,   50,   44,   44,   44,
+      809,  809,   46,  809,  809,   50,   44,   44,   44,  809,
+      809,   46,  809,  766,   50,  809,   44,   44,   44,  809,
+       50,  772,  809,   44,   44,   44,  809,  769,   46,   50,
+      809,   44,   44,   44,  809,  809,   46,  809,   50,   44,
+       44,   44,  809,  809,   46,  770,  809,  809,   50,  771,
+      809,   44,   44,   44,  809,   50,   46,  809,  809,   44,
+       44,   44,  773,   50,   46,   44,   44,   44,  809,  809,
+       46,   50,   44,   44,   44,  809,  809,  779,  809,  809,
+       44,   44,   44,   50,  774,   46,  809,  809,  775,  809,
+
+      809,   50,  809,  809,  809,  809,  777,   50,  776,  809,
+       44,   44,   44,  778,   50,   46,   44,   44,   44,  809,
+      809,  782,   50,   44,   44,   44,  809,  809,   46,   44,
+       44,   44,  809,  780,   46,   44,   44,   44,  809,  809,
+       46,  809,   50,  809,  809,   44,   44,   44,   50,  781,
+       46,  809,   44,   44,   44,   50,  809,   46,   44,   44,
+       44,   50,  783,   46,  809,  809,  809,   50,  784,   44,
+       44,   44,  809,  809,   46,  809,  809,   50,  809,  809,
+       44,   44,   44,  785,   50,   46,   44,   44,   44,  809,
+       50,   46,   44,   44,   44,  809,  786,   46,   44,   44,
+
+       44,   50,  809,   46,  787,  788,  809,  809,   44,   44,
+       44,  809,   50,   46,  809,  809,  789,  809,   50,  809,
+       44,   44,   44,  790,   50,   46,   44,   44,   44,  809,
+       50,   46,   44,   44,   44,  809,  809,  797,  791,  809,
+       50,   44,   44,   44,  809,  792,   46,  809,  809,  809,
+      793,  809,   50,  809,  809,  809,  794,  809,   50,  809,
+       44,   44,   44,  795,   50,   46,   44,   44,   44,  796,
+      809,   46,  809,   50,  809,  809,   44,   44,   44,  798,
+      809,  801,   44,   44,   44,  809,  809,   46,   44,   44,
+       44,  809,   50,   46,   44,   44,   44,  809,   50,  804,
+
+       44,   44,   44,  809,  809,   46,  800,  799,   50,  809,
+       44,   44,   44,  809,   50,   46,   44,   44,   44,  809,
+       50,   46,  809,  802,  809,  809,   50,  809,   44,   44,
+       44,  803,   50,  808,  809,  809,  809,  809,  809,  805,
+      809,  809,   50,  809,  809,  809,  809,  809,   50,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+       50,  806,  809,  809,  809,  809,  809,  809,  807,   36,
+       36,   36,   36,   36,   45,   45,   45,   45,   45,   67,
+      809,   67,   67,   67,   86,  809,   86,  809,   86,   88,
+       88,   88,   88,   88,   95,   95,   95,   95,   95,  141,
+
+      809,  141,  141,  141,  156,  156,  156,   11,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809
     } ;
 
-static yyconst flex_int16_t yy_chk[5899] =
+static yyconst flex_int16_t yy_chk[5970] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1461,34 +1470,34 @@ static yyconst flex_int16_t yy_chk[5899] =
         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,    3,    3,    3,    4,    4,    4,    3,  818,    7,
+        1,    3,    3,    3,    4,    4,    4,    3,  821,    7,
         4,    5,    5,    8,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    9,   13,   10,   13,   21,    5,
-        5,  817,    5,   21,  816,    5,   25,    5,   25,    5,
+        5,  820,    5,   21,  819,    5,   25,    5,   25,    5,
 
-      815,   25,   25,   25,  356,    5,    5,    7,    9,    5,
-       10,    8,   17,    5,   17,   17,   17,  286,   19,    5,
+      818,   25,   25,   25,  359,    5,    5,    7,    9,    5,
+       10,    8,   17,    5,   17,   17,   17,  289,   19,    5,
        19,   19,   19,   26,   17,    5,    5,   15,   15,   15,
        19,   27,   15,   28,   20,   20,   20,   32,   26,   22,
-       17,   22,   22,   22,   20,  221,   19,   33,   31,   15,
-       15,   22,   15,   80,   37,   27,   37,   28,  155,   15,
+       17,   22,   22,   22,   20,  223,   19,   33,   31,   15,
+       15,   22,   15,   80,   37,   27,   37,   28,  156,   15,
        20,   32,   15,   31,   15,   15,   15,   22,   44,   15,
        15,   33,   15,   15,   15,   15,   15,   80,   15,   15,
        15,   15,   15,   42,   88,   42,   45,   45,   45,   78,
-      147,   45,   47,   47,   47,   44,   79,   47,   95,   48,
+      148,   45,   47,   47,   47,   44,   79,   47,   95,   48,
 
        48,   48,   81,   82,   48,   49,   49,   49,   50,   78,
        49,   88,   51,   51,   51,   50,   79,   51,   45,   76,
        76,   76,   81,   82,   47,   48,   86,   52,   52,   52,
-       49,   48,   52,   85,   47,   50,  143,   49,  142,   50,
-       77,   77,   77,   50,   51,   83,   53,   53,   53,  141,
-       50,   53,  143,   49,   50,   43,   50,   50,  142,   52,
-       54,   54,   54,   51,  145,   54,   55,   55,   55,   83,
-      146,   55,   52,  141,   41,   52,   39,  215,   53,   52,
-      144,   53,   38,  218,  145,   53,  146,   24,   53,   56,
-       56,   56,   54,  215,   56,   14,   11,    0,   55,  218,
-
-       53,   57,   57,   57,  144,    0,   57,   54,    0,    0,
+       49,   48,   52,   85,   47,   50,  144,   49,  143,   50,
+       77,   77,   77,   50,   51,   83,   53,   53,   53,  142,
+       50,   53,  144,   49,   50,   43,   50,   50,  143,   52,
+       54,   54,   54,   51,  146,   54,   55,   55,   55,   83,
+      147,   55,   52,  142,   41,   52,   39,   52,   53,   52,
+      145,   53,   38,  217,  146,   53,  147,   24,   53,   56,
+       56,   56,   54,  220,   56,   14,   11,    0,   55,  217,
+
+       53,   57,   57,   57,  145,    0,   57,   54,    0,  220,
         0,   58,   58,   58,   55,    0,   58,   54,    0,   55,
         0,   56,   55,   59,   59,   59,    0,   56,   59,   60,
        60,   60,    0,   57,   60,    0,   56,    0,   56,    0,
@@ -1514,596 +1523,603 @@ static yyconst flex_int16_t yy_chk[5899] =
         0,   94,   94,   94,    0,   92,   94,   96,   96,   96,
         0,    0,   96,    0,   99,   99,   99,    0,    0,   99,
        93,    0,    0,   93,   98,   98,   98,    0,    0,   98,
-      101,  101,  101,   94,    0,  101,    0,    0,    0,   96,
+      102,  102,  102,   94,    0,  102,    0,    0,    0,   96,
         0,    0,   94,   97,   97,   97,   99,    0,    0,    0,
        97,   97,   97,   97,   97,    0,   98,   99,  100,  100,
-      100,    0,  101,  100,    0,   97,   97,   97,   97,   97,
-       97,  102,  102,  102,    0,   98,  102,  103,  103,  103,
-        0,    0,  103,    0,    0,  101,  104,  104,  104,    0,
-
-      100,  104,    0,  105,  105,  105,  100,    0,  105,    0,
-        0,    0,    0,  102,    0,  100,  106,  106,  106,  103,
-        0,  106,    0,  103,  103,  107,  107,  107,  104,    0,
-      107,    0,  103,  104,  102,  105,  108,  108,  108,    0,
-        0,  108,    0,    0,    0,    0,  105,    0,  106,  109,
-      109,  109,    0,  106,  109,    0,    0,  107,    0,  111,
-      111,  111,  107,    0,  111,  110,  110,  110,  108,  106,
-      110,  112,  112,  112,  107,  110,  112,  113,  113,  113,
-        0,  109,  113,    0,  108,    0,    0,  113,  108,    0,
-        0,  111,    0,    0,  114,  114,  114,  110,  111,  114,
-
-      115,  115,  115,  112,    0,  115,    0,  109,    0,  113,
-      116,  116,  116,    0,    0,  116,  117,  117,  117,    0,
-        0,  117,    0,    0,  112,    0,  114,    0,    0,  114,
-        0,    0,  115,  118,  118,  118,    0,  115,  118,  119,
-      119,  119,  116,    0,  119,    0,  116,    0,  117,  120,
-      120,  120,    0,    0,  120,    0,    0,  117,  121,  121,
-      121,    0,    0,  121,    0,  118,    0,  122,  122,  122,
-      118,  119,  122,  123,  123,  123,    0,    0,  123,    0,
-        0,  120,  124,  124,  124,  119,    0,  124,    0,    0,
-      121,    0,  125,  125,  125,    0,    0,  125,    0,  122,
-
-        0,  120,  125,    0,  121,  123,  126,  126,  126,    0,
-        0,  126,    0,    0,  124,    0,  127,  127,  127,    0,
-      122,  127,    0,    0,  125,    0,  123,  128,  128,  128,
-        0,    0,  128,  124,  124,  129,  129,  129,  126,    0,
-      129,  131,  131,  131,    0,    0,  131,    0,  127,    0,
-        0,  132,  132,  132,    0,    0,  132,  126,    0,  128,
-        0,    0,    0,    0,  127,    0,  128,  129,  127,  133,
-      133,  133,    0,  131,  133,  134,  134,  134,    0,    0,
-      134,    0,    0,  132,  129,  130,  130,  130,  132,    0,
-      130,    0,  131,  135,  135,  135,  131,    0,  135,    0,
-
-        0,  133,    0,    0,  133,    0,    0,  134,  136,  136,
-      136,  134,    0,  136,  137,  137,  137,  130,    0,  137,
-      130,  130,  130,    0,    0,  135,  138,  138,  138,    0,
-      130,  138,  130,    0,  139,  139,  139,  130,    0,  139,
-      136,    0,  150,  150,  150,  135,  137,  150,  153,  153,
-      153,    0,    0,  153,  136,  154,  154,  154,  138,    0,
-      154,    0,    0,  137,    0,  138,  139,    0,  158,  158,
-      158,    0,    0,  158,  150,    0,    0,    0,    0,  139,
-      153,  161,  161,  161,    0,    0,  161,  154,    0,    0,
-        0,  150,    0,    0,    0,    0,  154,  157,  157,  157,
-
-      158,    0,    0,  158,  157,  157,  157,  157,  157,  159,
-      159,  159,    0,  161,  159,    0,    0,    0,    0,  157,
-      157,  157,  157,  157,  157,  160,  160,  160,  161,    0,
-      160,    0,    0,    0,  161,  162,  162,  162,    0,    0,
-      162,  159,  163,  163,  163,  162,    0,  163,  159,  164,
-      164,  164,    0,    0,  164,    0,    0,  160,    0,    0,
-      165,  165,  165,    0,  160,  165,    0,  162,  166,  166,
-      166,    0,    0,  166,  163,    0,    0,  163,  167,  167,
-      167,  164,    0,  167,  168,  168,  168,    0,    0,  168,
-        0,    0,  165,  169,  169,  169,    0,    0,  169,    0,
-
-      166,    0,    0,  164,    0,  165,    0,  166,    0,    0,
-      167,    0,  170,  170,  170,    0,  168,  170,  171,  171,
-      171,    0,  168,  171,    0,  169,    0,  167,  169,  172,
-      172,  172,    0,    0,  172,  173,  173,  173,    0,    0,
-      173,  174,  174,  174,  170,    0,  174,    0,    0,    0,
-      171,  170,  175,  175,  175,    0,    0,  175,    0,    0,
-        0,  172,    0,  171,  176,  176,  176,  173,    0,  176,
-        0,    0,  172,  174,    0,  178,  178,  178,    0,  173,
-      178,  179,  179,  179,  175,    0,  179,  181,  181,  181,
-        0,    0,  181,    0,  174,    0,  176,    0,    0,  176,
-
-        0,  175,    0,  180,  180,  180,    0,  178,  180,  183,
-      183,  183,    0,  179,  183,    0,  182,  182,  182,  181,
-      179,  182,  178,  184,  184,  184,  182,    0,  184,  186,
-      186,  186,    0,    0,  186,  180,    0,    0,  180,  181,
-        0,  183,  185,  185,  185,    0,    0,  185,  182,  187,
-      187,  187,  185,    0,  187,  184,    0,  188,  188,  188,
-      183,  186,  188,    0,  184,  189,  189,  189,    0,  186,
-      189,  190,  190,  190,  185,    0,  190,  191,  191,  191,
-        0,  187,  191,  192,  192,  192,    0,    0,  192,  188,
-      193,  193,  193,    0,    0,  193,  188,  189,    0,  187,
-
-      194,  194,  194,  190,    0,  194,    0,    0,  189,  191,
-        0,    0,  191,    0,    0,  192,  195,  195,  195,    0,
-      190,  195,  193,  196,  196,  196,    0,    0,  196,    0,
-        0,    0,  194,    0,    0,  192,    0,    0,    0,  193,
-      197,  197,  197,    0,    0,  197,    0,    0,  195,  198,
-      198,  198,  194,    0,  198,  196,    0,  199,  199,  199,
-        0,  195,  199,    0,  200,  200,  200,    0,    0,  200,
-        0,    0,  197,  201,  201,  201,  196,    0,  201,    0,
-      197,  198,  202,  202,  202,    0,    0,  202,    0,  199,
-        0,    0,  198,    0,    0,  199,  200,  203,  203,  203,
-
-        0,    0,  203,    0,    0,  201,    0,  200,  204,  204,
-      204,    0,    0,  204,  202,    0,    0,  202,  205,  205,
-      205,  201,    0,  205,    0,  206,  206,  206,    0,  203,
-      206,    0,    0,  207,  207,  207,  203,    0,  207,    0,
-      204,    0,    0,  208,  208,  208,    0,  204,  208,    0,
-      205,  209,  209,  209,    0,    0,  209,  206,  210,  210,
-      210,    0,    0,  210,  206,  207,    0,  211,  211,  211,
-        0,    0,  211,  205,    0,  208,    0,  207,    0,    0,
-      208,    0,    0,  209,  212,  212,  212,    0,    0,  212,
-      210,    0,  213,  213,  213,    0,    0,  213,  209,  211,
-
-        0,    0,  214,  214,  214,    0,  211,  214,  225,  225,
-      225,  210,    0,  225,    0,    0,  212,  223,  223,  223,
-        0,    0,  223,  212,  213,  227,  227,  227,    0,    0,
-      227,  223,  223,    0,  214,    0,  229,  229,  229,  223,
-      225,  229,    0,  213,    0,  214,    0,    0,    0,  223,
-        0,  225,  226,  226,  226,    0,    0,  227,    0,  226,
-      226,  226,  226,  226,  228,  228,  228,    0,  229,  228,
-        0,    0,    0,    0,  226,  226,  226,  226,  226,  226,
-      230,  230,  230,  227,    0,  230,  231,  231,  231,    0,
-        0,  231,  232,  232,  232,    0,  228,  232,  233,  233,
-
-      233,    0,    0,  233,  234,  234,  234,    0,    0,  234,
-        0,  228,  230,    0,    0,  235,  235,  235,  231,  230,
-      235,  236,  236,  236,  232,    0,  236,    0,    0,    0,
-      233,    0,  232,    0,    0,    0,  234,  231,  237,  237,
-      237,    0,    0,  237,    0,  234,    0,  235,  237,  238,
-      238,  238,  237,  236,  238,  239,  239,  239,  235,    0,
-      239,    0,  236,  240,  240,  240,    0,    0,  240,    0,
-      237,  241,  241,  241,    0,    0,  241,  242,  242,  242,
-        0,  238,  242,  243,  243,  243,    0,  239,  243,  244,
-      244,  244,    0,    0,  244,  240,    0,    0,    0,  244,
-
-      245,  245,  245,  241,  239,  245,  246,  246,  246,  242,
-        0,  246,    0,    0,  240,  243,    0,  247,  247,  247,
-        0,  244,  247,    0,    0,  241,    0,    0,  242,  248,
-      248,  248,  245,    0,  248,  243,  244,    0,  246,  245,
-        0,  244,    0,    0,  246,  249,  249,  249,    0,  247,
-      249,    0,  250,  250,  250,    0,    0,  250,  251,  251,
-      251,  248,    0,  251,  252,  252,  252,    0,    0,  252,
-      247,  253,  253,  253,    0,    0,  253,  249,    0,    0,
-      248,    0,    0,  249,  250,    0,    0,  254,  254,  254,
-      251,  250,  254,  255,  255,  255,  252,    0,  255,  252,
-
-        0,  251,    0,  253,    0,    0,  256,  256,  256,    0,
-      253,  256,  257,  257,  257,    0,    0,  257,    0,  254,
-        0,  258,  258,  258,    0,  255,  258,  259,  259,  259,
-        0,    0,  259,    0,    0,    0,  255,    0,  256,  254,
-      260,  260,  260,    0,  257,  260,    0,  261,  261,  261,
-        0,  256,  261,  258,    0,    0,  262,  262,  262,  259,
-        0,  262,  263,  263,  263,    0,    0,  263,    0,  258,
-        0,    0,  260,    0,    0,  264,  264,  264,    0,  261,
-      264,  259,  265,  265,  265,    0,  260,  265,  262,    0,
-      266,  266,  266,    0,  263,  266,  267,  267,  267,    0,
-
-        0,  267,    0,  261,  262,  263,    0,  264,  268,  268,
-      268,    0,    0,  268,  265,  269,  269,  269,    0,    0,
-      269,    0,  266,  265,    0,    0,    0,  264,  267,  266,
-        0,    0,    0,  266,  267,    0,  270,  270,  270,    0,
-      268,  270,    0,  271,  271,  271,    0,  269,  271,  272,
-      272,  272,    0,    0,  272,    0,  268,    0,  273,  273,
-      273,    0,  269,  273,  274,  274,  274,    0,  270,  274,
-        0,    0,  275,  275,  275,  271,    0,  275,  276,  276,
-      276,  272,    0,  276,  279,  279,  279,  270,    0,  279,
-      273,    0,  277,  277,  277,    0,  274,  277,    0,    0,
-
-        0,  271,    0,  274,  275,  272,  278,  278,  278,  273,
-      276,  278,    0,    0,    0,    0,  279,  276,    0,    0,
-      280,  280,  280,  275,  277,  280,    0,  281,  281,  281,
-        0,  277,  281,    0,  282,  282,  282,    0,  278,  282,
-        0,  283,  283,  283,    0,  278,  283,    0,  288,  288,
-      288,    0,  280,  288,    0,  289,  289,  289,    0,  281,
-      289,    0,  290,  290,  290,    0,  282,  290,    0,  291,
-      291,  291,    0,  283,  291,    0,  293,  293,  293,  283,
-      288,  293,    0,  294,  294,  294,    0,  289,  294,    0,
-      297,  297,  297,    0,  290,  297,    0,  296,  296,  296,
-
-      290,  291,  296,    0,    0,  298,  298,  298,  293,    0,
-      298,    0,    0,    0,    0,  294,  291,  292,  292,  292,
-        0,    0,  297,    0,  292,  292,  292,  292,  292,  296,
-      300,  300,  300,    0,  296,  300,  294,  298,  297,  292,
-      292,  292,  292,  292,  292,  301,  301,  301,    0,    0,
-      301,    0,    0,  298,  302,  302,  302,    0,    0,  302,
-        0,    0,  300,  303,  303,  303,    0,    0,  303,    0,
-        0,  304,  304,  304,    0,  300,  304,  301,  306,  306,
-      306,    0,    0,  306,    0,    0,  302,    0,    0,  302,
-        0,    0,  301,    0,    0,  303,    0,  307,  307,  307,
-
-        0,  303,  307,  304,  308,  308,  308,    0,    0,  308,
-      306,  309,  309,  309,    0,    0,  309,    0,    0,  304,
-        0,  310,  310,  310,    0,    0,  310,    0,    0,  307,
-      306,  310,  312,  312,  312,    0,  308,  312,    0,  313,
-      313,  313,  308,  309,  313,    0,  307,  314,  314,  314,
-      309,    0,  314,  310,  315,  315,  315,  314,    0,  315,
-      316,  316,  316,    0,  312,  316,    0,  317,  317,  317,
-        0,  313,  317,    0,  313,  318,  318,  318,    0,  314,
-      318,    0,    0,  312,    0,    0,  315,    0,  319,  319,
-      319,    0,  316,  319,    0,  320,  320,  320,  316,  317,
-
-      320,  321,  321,  321,    0,  320,  321,  318,    0,    0,
-      317,  322,  322,  322,    0,  318,  322,  323,  323,  323,
-      319,    0,  323,  324,  324,  324,  319,  320,  324,  325,
-      325,  325,    0,  321,  325,  326,  326,  326,    0,    0,
-      326,    0,    0,  322,    0,  328,  328,  328,  321,  323,
-      328,  329,  329,  329,    0,  324,  329,    0,  330,  330,
-      330,  325,  322,  330,  331,  331,  331,  326,  323,  331,
-        0,  324,    0,    0,  325,    0,    0,  328,    0,  332,
-      332,  332,    0,  329,  332,    0,  333,  333,  333,    0,
-      330,  333,  328,  335,  335,  335,  331,  330,  335,    0,
-
-      336,  336,  336,    0,  329,  336,    0,    0,  337,  337,
-      337,  332,  331,  337,  338,  338,  338,    0,  333,  338,
-        0,  339,  339,  339,    0,  335,  339,  332,  340,  340,
-      340,  339,  336,  340,  341,  341,  341,    0,  333,  341,
-      337,    0,  342,  342,  342,    0,  338,  342,    0,    0,
-        0,  336,    0,  339,    0,    0,  345,  345,  345,  337,
-      340,  345,    0,  343,  343,  343,  341,    0,  343,    0,
-        0,  338,  341,  343,  342,  340,  344,  344,  344,    0,
-      342,  344,  346,  346,  346,    0,  344,  346,  345,  347,
-      347,  347,    0,    0,  347,  343,  348,  348,  348,    0,
-
-        0,  348,  349,  349,  349,    0,    0,  349,  344,    0,
-        0,  345,    0,    0,  346,  350,  350,  350,    0,    0,
-      350,  347,    0,    0,    0,  355,  355,  355,  348,    0,
-      355,    0,  347,  346,  349,  355,    0,  360,  360,  360,
-        0,    0,  360,  363,  363,  363,    0,  350,  363,  348,
-      361,  361,  361,  363,    0,  361,    0,  355,  364,  364,
-      364,    0,    0,  364,    0,  365,  365,  365,  350,  360,
-      365,  366,  366,  366,    0,  363,  366,    0,    0,    0,
-        0,    0,  361,    0,  360,    0,    0,  367,  367,  367,
-      364,  361,  367,  368,  368,  368,    0,  365,  368,  369,
-
-      369,  369,    0,  366,  369,    0,    0,  370,  370,  370,
-      365,  364,  370,    0,    0,  371,  371,  371,    0,  367,
-      371,    0,  366,    0,    0,  368,  367,    0,    0,    0,
-      371,  369,  368,  372,  372,  372,    0,    0,  372,  370,
-        0,  373,  373,  373,    0,  370,  373,  371,    0,  374,
-      374,  374,  369,    0,  374,    0,    0,  375,  375,  375,
-        0,    0,  375,    0,    0,  372,  376,  376,  376,    0,
-        0,  376,    0,  373,  377,  377,  377,    0,    0,  377,
-        0,  374,    0,    0,    0,    0,    0,  372,  374,  375,
-        0,    0,  373,    0,    0,  375,    0,    0,  376,  378,
-
-      378,  378,    0,    0,  378,    0,  377,  381,  381,  381,
-        0,  376,  381,  377,  379,  379,  379,    0,    0,  379,
-        0,  382,  382,  382,    0,    0,  382,  383,  383,  383,
-        0,  378,  383,  384,  384,  384,    0,    0,  384,  381,
-        0,    0,  385,  385,  385,  378,  379,  385,    0,  386,
-      386,  386,  379,  382,  386,  387,  387,  387,  381,  383,
-      387,  382,  383,    0,    0,  384,  388,  388,  388,    0,
-        0,  388,    0,    0,  385,    0,    0,  389,  389,  389,
-      385,  386,  389,    0,  384,    0,    0,  387,  390,  390,
-      390,    0,    0,  390,  392,  392,  392,    0,  388,  392,
-
-        0,    0,  386,    0,  392,  393,  393,  393,    0,  389,
-      393,    0,    0,  387,  394,  394,  394,    0,  388,  394,
-      390,    0,    0,  395,  395,  395,  392,  390,  395,    0,
-        0,  389,    0,  396,  396,  396,    0,  393,  396,  393,
-      397,  397,  397,    0,    0,  397,  394,  399,  399,  399,
-        0,    0,  399,    0,    0,  395,  400,  400,  400,    0,
-        0,  400,    0,    0,    0,  396,    0,  394,  402,  402,
-      402,    0,  397,  402,  395,    0,    0,    0,  396,  399,
-      401,  401,  401,    0,    0,  401,  399,    0,  400,    0,
-      401,    0,    0,  397,  403,  403,  403,    0,    0,  403,
-
-      402,  404,  404,  404,    0,  402,  404,  400,  405,  405,
-      405,  404,  401,  405,    0,  407,  407,  407,  405,  401,
-      407,    0,  408,  408,  408,    0,  403,  408,    0,  409,
-      409,  409,    0,  404,  409,    0,  410,  410,  410,  403,
-      405,  410,    0,    0,    0,    0,  410,  407,  411,  411,
-      411,    0,    0,  411,  408,  412,  412,  412,    0,    0,
-      412,  409,    0,    0,  409,  412,    0,  407,  410,    0,
-        0,  414,  414,  414,    0,  408,  414,  415,  415,  415,
-      411,    0,  415,  417,  417,  417,  414,  412,  417,  418,
-      418,  418,    0,    0,  418,  419,  419,  419,    0,    0,
-
-      419,  411,    0,  414,    0,    0,  420,  420,  420,  415,
-        0,  420,  422,  422,  422,  417,  420,  422,  421,  421,
-      421,  418,  415,  421,  423,  423,  423,  419,  421,  423,
-        0,    0,  419,    0,    0,  417,    0,    0,  420,    0,
-        0,  424,  424,  424,  422,    0,  424,    0,    0,    0,
-      421,  424,  425,  425,  425,    0,  423,  425,  422,    0,
-      426,  426,  426,    0,    0,  426,  427,  427,  427,    0,
-        0,  427,    0,  424,    0,    0,  427,    0,    0,  423,
-      428,  428,  428,    0,  425,  428,    0,    0,  429,  429,
-      429,  425,  426,  429,  430,  430,  430,    0,  427,  430,
-
-        0,  431,  431,  431,    0,    0,  431,  426,  432,  432,
-      432,  431,  428,  432,  433,  433,  433,    0,    0,  433,
-      429,    0,  434,  434,  434,  428,  430,  434,    0,    0,
-        0,  429,  430,  431,    0,    0,  435,  435,  435,    0,
-      432,  435,  436,  436,  436,    0,  433,  436,  437,  437,
-      437,  432,    0,  437,  434,  438,  438,  438,    0,    0,
-      438,  434,  439,  439,  439,    0,  433,  439,  435,    0,
-        0,  435,    0,    0,  436,    0,    0,  440,  440,  440,
-      437,  436,  440,  441,  441,  441,    0,  438,  441,    0,
-        0,  437,  438,    0,  439,  442,  442,  442,    0,    0,
-
-      442,  439,  443,  443,  443,    0,    0,  443,    0,  440,
-        0,    0,  440,    0,    0,  441,  444,  444,  444,    0,
-        0,  444,  441,  445,  445,  445,    0,  442,  445,    0,
-      446,  446,  446,    0,  443,  446,    0,  448,  448,  448,
-        0,    0,  448,    0,  449,  449,  449,    0,  444,  449,
-        0,    0,  450,  450,  450,  445,    0,  450,    0,  451,
-      451,  451,  446,    0,  451,    0,    0,  444,  446,  448,
-      452,  452,  452,    0,    0,  452,  449,  453,  453,  453,
-        0,    0,  453,  449,  450,  448,    0,  454,  454,  454,
-      450,  451,  454,  456,  456,  456,    0,    0,  456,  457,
-
-      457,  457,  452,    0,  457,  458,  458,  458,    0,  453,
-      458,  451,  459,  459,  459,    0,    0,  459,    0,  454,
-        0,    0,  460,  460,  460,  456,  454,  460,    0,  453,
-        0,  457,    0,    0,  461,  461,  461,  458,  456,  461,
-      462,  462,  462,    0,  459,  462,    0,  463,  463,  463,
-        0,  457,  463,  458,  460,    0,  464,  464,  464,    0,
-        0,  464,    0,  465,  465,  465,  461,    0,  465,    0,
-      459,    0,  462,    0,    0,  460,  466,  466,  466,  463,
-        0,  466,    0,    0,  467,  467,  467,  461,  464,  467,
-      463,  469,  469,  469,  462,  465,  469,  470,  470,  470,
-
-        0,    0,  470,    0,    0,    0,  465,    0,  466,  464,
-      471,  471,  471,    0,    0,  471,  467,  473,  473,  473,
-        0,    0,  473,  469,    0,  474,  474,  474,    0,  470,
-      474,  467,    0,    0,  466,    0,    0,  467,    0,    0,
-      470,    0,  471,  475,  475,  475,    0,    0,  475,  473,
-      476,  476,  476,    0,    0,  476,    0,  474,  477,  477,
-      477,    0,  473,  477,  478,  478,  478,    0,    0,  478,
-        0,  479,  479,  479,    0,  475,  479,    0,  474,  480,
-      480,  480,  476,    0,  480,  476,  481,  481,  481,    0,
-      477,  481,    0,    0,    0,  475,  478,  477,    0,    0,
-
-        0,    0,    0,  479,    0,  482,  482,  482,    0,  479,
-      482,  480,    0,  478,  483,  483,  483,    0,  481,  483,
-      484,  484,  484,    0,    0,  484,    0,  485,  485,  485,
-      484,  480,  485,    0,    0,  481,    0,  482,    0,    0,
-      482,    0,  486,  486,  486,    0,  483,  486,  487,  487,
-      487,    0,  484,  487,    0,    0,  488,  488,  488,  485,
-        0,  488,  489,  489,  489,    0,  483,  489,  490,  490,
-      490,    0,  485,  490,  486,    0,    0,    0,  486,    0,
-      487,    0,    0,    0,  491,  491,  491,  487,  488,  491,
-      492,  492,  492,    0,  489,  492,  493,  493,  493,    0,
-
-      490,  493,  494,  494,  494,    0,    0,  494,  495,  495,
-      495,    0,    0,  495,    0,  489,  491,    0,    0,    0,
-      490,    0,  492,  491,    0,  498,  498,  498,  493,  492,
-      498,  500,  500,  500,  494,    0,  500,  501,  501,  501,
-      495,    0,  501,    0,  502,  502,  502,    0,  493,  502,
-        0,  503,  503,  503,    0,  494,  503,  498,    0,  495,
-        0,    0,  498,  500,    0,    0,  500,    0,    0,  501,
-      500,    0,  504,  504,  504,    0,  502,  504,    0,  506,
-      506,  506,    0,  503,  506,    0,  501,  507,  507,  507,
-        0,    0,  507,    0,    0,  502,  508,  508,  508,    0,
-
-        0,  508,    0,    0,  504,  509,  509,  509,    0,    0,
-      509,  506,  510,  510,  510,    0,    0,  510,    0,  507,
-        0,  511,  511,  511,    0,  507,  511,    0,  508,  506,
-        0,  512,  512,  512,    0,  508,  512,  509,  513,  513,
-      513,    0,    0,  513,  510,  514,  514,  514,    0,    0,
-      514,    0,    0,  511,  515,  515,  515,    0,  510,  515,
-      516,  516,  516,  512,    0,  516,  517,  517,  517,    0,
-      513,  517,    0,    0,  512,    0,    0,  514,  518,  518,
-      518,    0,    0,  518,    0,    0,  515,    0,  519,  519,
-      519,    0,  516,  519,  514,    0,  513,    0,  517,    0,
-
-      515,    0,    0,  516,  517,    0,  520,  520,  520,    0,
-      518,  520,  522,  522,  522,    0,    0,  522,    0,    0,
-      519,    0,    0,  519,  524,  524,  524,    0,    0,  524,
-      525,  525,  525,    0,    0,  525,    0,    0,  520,    0,
-      526,  526,  526,    0,  522,  526,  527,  527,  527,    0,
-        0,  527,  522,  528,  528,  528,  524,    0,  528,  524,
-        0,    0,  525,    0,  520,  529,  529,  529,    0,    0,
-      529,    0,  526,  525,  530,  530,  530,    0,  527,  530,
-        0,  531,  531,  531,  530,  528,  531,    0,  526,  532,
-      532,  532,    0,    0,  532,    0,    0,  529,  528,  527,
-
-      533,  533,  533,    0,    0,  533,  530,  534,  534,  534,
-        0,    0,  534,  531,    0,    0,  529,  535,  535,  535,
-        0,  532,  535,  536,  536,  536,    0,    0,  536,  537,
-      537,  537,  533,    0,  537,    0,    0,  532,    0,  534,
-      538,  538,  538,    0,    0,  538,  534,    0,    0,  535,
-        0,    0,    0,  533,    0,  536,    0,    0,  540,  540,
-      540,  537,  536,  540,    0,    0,  535,    0,  541,  541,
-      541,    0,  538,  541,  542,  542,  542,    0,    0,  542,
-      537,    0,  543,  543,  543,    0,    0,  543,    0,    0,
-      540,  538,  543,  540,  544,  544,  544,    0,    0,  544,
-
-      541,    0,    0,  545,  545,  545,  542,    0,  545,    0,
-      546,  546,  546,    0,  543,  546,  547,  547,  547,    0,
-      541,  547,  548,  548,  548,  542,  544,  548,  549,  549,
-      549,    0,    0,  549,  543,  545,    0,    0,  545,  550,
-      550,  550,  546,    0,  550,    0,  544,    0,  547,    0,
-        0,  551,  551,  551,  548,  547,  551,  554,  554,  554,
-      549,    0,  554,    0,    0,  546,    0,    0,  549,    0,
-        0,  550,  555,  555,  555,  548,    0,  555,    0,  556,
-      556,  556,  555,  551,  556,  558,  558,  558,    0,  554,
-      558,    0,  550,  560,  560,  560,    0,    0,  560,    0,
-
-        0,    0,  554,  551,  555,  561,  561,  561,    0,    0,
-      561,  556,    0,  562,  562,  562,    0,  558,  562,  563,
-      563,  563,    0,    0,  563,  560,  556,  564,  564,  564,
-        0,  558,  564,  565,  565,  565,    0,  561,  565,  560,
-        0,  567,  567,  567,    0,  562,  567,  568,  568,  568,
-        0,  563,  568,    0,  561,    0,    0,    0,  563,  564,
-        0,    0,  562,    0,    0,  565,  569,  569,  569,    0,
-        0,  569,    0,  567,    0,  564,  570,  570,  570,  568,
-        0,  570,    0,  571,  571,  571,    0,  567,  571,  572,
-      572,  572,    0,    0,  572,    0,  568,    0,  569,  573,
-
-      573,  573,    0,    0,  573,  569,    0,    0,  570,  574,
-      574,  574,    0,    0,  574,  571,    0,  575,  575,  575,
-        0,  572,  575,    0,    0,    0,  572,    0,  570,  571,
-        0,  573,  576,  576,  576,    0,    0,  576,  578,  578,
-      578,  574,    0,  578,    0,    0,  579,  579,  579,  575,
-        0,  579,  580,  580,  580,    0,    0,  580,  581,  581,
-      581,    0,  580,  581,  576,  575,  582,  582,  582,    0,
-      578,  582,    0,    0,  584,  584,  584,  576,  579,  584,
-        0,  583,  583,  583,  580,  579,  583,    0,    0,  578,
-      581,  585,  585,  585,    0,    0,  585,    0,  582,    0,
-
-        0,  582,  586,  586,  586,    0,  584,  586,    0,  581,
-      587,  587,  587,  583,    0,  587,  583,  589,  589,  589,
-        0,    0,  589,  585,    0,    0,    0,  585,    0,  584,
-      590,  590,  590,    0,  586,  590,  591,  591,  591,    0,
-      590,  591,  587,    0,    0,  592,  592,  592,    0,  589,
-      592,  593,  593,  593,    0,    0,  593,    0,    0,    0,
-      589,    0,  590,    0,  594,  594,  594,    0,  591,  594,
-        0,  595,  595,  595,    0,  591,  595,  592,    0,    0,
-        0,  592,    0,  593,    0,    0,  593,  596,  596,  596,
-        0,    0,  596,  597,  597,  597,  594,    0,  597,  598,
-
-      598,  598,    0,  595,  598,    0,  595,  599,  599,  599,
-        0,    0,  599,  600,  600,  600,  594,    0,  600,  596,
-        0,  601,  601,  601,    0,  597,  601,  602,  602,  602,
-        0,  598,  602,  603,  603,  603,  597,    0,  603,  599,
-        0,  604,  604,  604,    0,  600,  604,  605,  605,  605,
-        0,    0,  605,  601,    0,  606,  606,  606,  600,  602,
-      606,  607,  607,  607,    0,  603,  607,    0,    0,    0,
-      602,    0,  603,  604,    0,    0,    0,    0,    0,  605,
-      604,  609,  609,  609,    0,    0,  609,  606,    0,  610,
-      610,  610,  605,  607,  610,  611,  611,  611,    0,    0,
-
-      611,    0,  612,  612,  612,    0,  606,  612,  607,    0,
-      613,  613,  613,  609,    0,  613,    0,    0,    0,    0,
-      609,  610,    0,    0,  614,  614,  614,  611,  610,  614,
-      617,  617,  617,    0,  612,  617,    0,    0,  618,  618,
-      618,    0,  613,  618,    0,    0,    0,    0,  611,  613,
-      619,  619,  619,    0,  612,  619,  614,    0,  620,  620,
-      620,    0,  617,  620,    0,    0,  617,    0,  614,    0,
-      618,    0,    0,  621,  621,  621,    0,  618,  621,  622,
-      622,  622,  619,    0,  622,    0,    0,  623,  623,  623,
-      620,    0,  623,  624,  624,  624,    0,    0,  624,  625,
-
-      625,  625,    0,  619,  625,  621,    0,    0,  626,  626,
-      626,  622,    0,  626,    0,    0,  621,    0,  622,  623,
-        0,  629,  629,  629,    0,  624,  629,    0,  631,  631,
-      631,  625,    0,  631,  625,    0,  633,  633,  633,  623,
-      626,  633,    0,  626,  624,  634,  634,  634,    0,    0,
-      634,    0,    0,  629,    0,    0,    0,    0,    0,  629,
-      631,  635,  635,  635,    0,  631,  635,    0,  633,  636,
-      636,  636,    0,    0,  636,    0,    0,  634,    0,    0,
-      634,  637,  637,  637,    0,    0,  637,    0,  633,  639,
-      639,  639,    0,  635,  639,  642,  642,  642,    0,    0,
-
-      642,  636,  644,  644,  644,    0,  635,  644,    0,  645,
-      645,  645,    0,  637,  645,  646,  646,  646,    0,    0,
-      646,  639,    0,    0,  648,  648,  648,  642,    0,  648,
-      647,  647,  647,    0,  644,  647,    0,  639,  642,    0,
-        0,  645,    0,  649,  649,  649,    0,  646,  649,  650,
-      650,  650,    0,  649,  650,  644,  648,    0,    0,    0,
-      645,    0,  647,    0,  651,  651,  651,  646,    0,  651,
-        0,    0,    0,  647,    0,  649,    0,  652,  652,  652,
-        0,  650,  652,  653,  653,  653,    0,    0,  653,  654,
-      654,  654,    0,    0,  654,  649,  651,  655,  655,  655,
-
-        0,    0,  655,  656,  656,  656,    0,    0,  656,  652,
-        0,  657,  657,  657,    0,  653,  657,    0,    0,    0,
-      652,  654,  653,  658,  658,  658,    0,    0,  658,  655,
-        0,    0,    0,    0,    0,  656,  655,  654,  656,  660,
-      660,  660,    0,  657,  660,    0,  661,  661,  661,    0,
-        0,  661,  662,  662,  662,  658,    0,  662,  657,    0,
-      663,  663,  663,    0,    0,  663,    0,  664,  664,  664,
-        0,  660,  664,    0,  665,  665,  665,  660,  661,  665,
-      666,  666,  666,    0,  662,  666,  661,    0,    0,    0,
-        0,  662,  663,  667,  667,  667,    0,    0,  667,  664,
-
-      668,  668,  668,  663,    0,  668,  665,    0,  669,  669,
-      669,    0,  666,  669,  670,  670,  670,    0,    0,  670,
-      664,    0,  673,  673,  673,  667,  665,  673,    0,    0,
-        0,    0,  668,  674,  674,  674,    0,    0,  674,    0,
-      669,  667,  675,  675,  675,    0,  670,  675,  676,  676,
-      676,    0,    0,  676,  673,    0,  677,  677,  677,    0,
-      669,  677,  678,  678,  678,  674,    0,  678,    0,  673,
-      680,  680,  680,  674,  675,  680,  681,  681,  681,    0,
-      676,  681,  684,  684,  684,    0,    0,  684,  677,    0,
-      686,  686,  686,    0,  678,  686,    0,    0,  687,  687,
-
-      687,  678,  680,  687,  688,  688,  688,    0,  681,  688,
-        0,    0,    0,    0,  684,    0,  680,    0,  689,  689,
-      689,    0,  686,  689,  690,  690,  690,    0,  684,  690,
-      687,    0,  692,  692,  692,    0,  688,  692,  693,  693,
-      693,    0,  686,  693,  694,  694,  694,    0,    0,  694,
-      689,    0,  687,  695,  695,  695,  690,  688,  695,    0,
-        0,  696,  696,  696,  692,    0,  696,  697,  697,  697,
-      693,  689,  697,  699,  699,  699,  694,    0,  699,    0,
-        0,  693,  701,  701,  701,  695,    0,  701,    0,    0,
-        0,    0,  695,  696,    0,    0,  694,    0,    0,  697,
-
-        0,    0,    0,    0,  696,  699,  697,  703,  703,  703,
-        0,    0,  703,    0,  701,    0,    0,  704,  704,  704,
-      699,  701,  704,  708,  708,  708,    0,    0,  708,    0,
-      709,  709,  709,    0,    0,  709,  711,  711,  711,  703,
-        0,  711,  712,  712,  712,    0,    0,  712,    0,  704,
-        0,    0,  713,  713,  713,  708,  704,  713,    0,  703,
-        0,  708,  709,    0,  714,  714,  714,    0,  711,  714,
-        0,  715,  715,  715,  712,  711,  715,    0,  709,    0,
-      718,  718,  718,    0,  713,  718,    0,  719,  719,  719,
-        0,    0,  719,  720,  720,  720,  714,  719,  720,  721,
-
-      721,  721,    0,  715,  721,  713,  722,  722,  722,    0,
-        0,  722,  718,    0,  715,    0,  723,  723,  723,  719,
-        0,  723,  724,  724,  724,  720,    0,  724,  725,  725,
-      725,  721,    0,  725,  726,  726,  726,  718,  722,  726,
-        0,  727,  727,  727,    0,  720,  727,  721,  723,    0,
-        0,  727,    0,    0,  724,    0,  723,  728,  728,  728,
-      725,    0,  728,    0,    0,    0,  726,  729,  729,  729,
-        0,    0,  729,  727,  731,  731,  731,    0,    0,  731,
-      733,  733,  733,    0,    0,  733,    0,  726,    0,  728,
-        0,  734,  734,  734,    0,  728,  734,    0,    0,  729,
-
-        0,  734,  735,  735,  735,    0,  731,  735,  736,  736,
-      736,    0,  733,  736,  737,  737,  737,    0,    0,  737,
-      739,  739,  739,  734,    0,  739,    0,    0,  733,    0,
-      742,  742,  742,    0,  735,  742,  743,  743,  743,    0,
-      736,  743,  744,  744,  744,    0,  737,  744,  747,  747,
-      747,  735,  739,  747,  749,  749,  749,    0,    0,  749,
-        0,  737,  742,  739,  750,  750,  750,    0,  743,  750,
-      753,  753,  753,  742,  744,  753,    0,  752,  752,  752,
-      747,  744,  752,    0,  743,    0,  749,  752,  754,  754,
-      754,    0,    0,  754,    0,  747,  750,    0,    0,  749,
-
-        0,    0,  753,  755,  755,  755,    0,    0,  755,  752,
-        0,  753,  756,  756,  756,  750,    0,  756,    0,    0,
-      754,  757,  757,  757,    0,    0,  757,  758,  758,  758,
-        0,  757,  758,    0,  754,  755,  759,  759,  759,    0,
-        0,  759,    0,    0,  756,  760,  760,  760,    0,    0,
-      760,    0,  755,  757,    0,  761,  761,  761,    0,  758,
-      761,    0,  762,  762,  762,    0,  758,  762,  759,    0,
-      763,  763,  763,    0,    0,  763,    0,  760,  765,  765,
-      765,    0,    0,  765,  759,    0,    0,  761,  760,    0,
-      766,  766,  766,    0,  762,  766,    0,    0,  767,  767,
-
-      767,  762,  763,  767,  768,  768,  768,    0,    0,  768,
-      765,  770,  770,  770,    0,    0,  770,    0,    0,  771,
-      771,  771,  766,  763,  771,    0,    0,  765,    0,    0,
-      767,    0,    0,    0,    0,  767,  768,  766,    0,  772,
-      772,  772,  768,  770,  772,  773,  773,  773,    0,    0,
-      773,  771,  774,  774,  774,    0,    0,  774,  775,  775,
-      775,    0,  771,  775,  777,  777,  777,    0,    0,  777,
-        0,  772,    0,    0,  778,  778,  778,  773,  772,  778,
-        0,  780,  780,  780,  774,    0,  780,  781,  781,  781,
-      775,  774,  781,    0,    0,    0,  777,  775,  782,  782,
-
-      782,    0,    0,  782,    0,    0,  778,    0,    0,  783,
-      783,  783,  777,  780,  783,  784,  784,  784,    0,  781,
-      784,  785,  785,  785,    0,  778,  785,  786,  786,  786,
-      782,    0,  786,  780,  781,    0,    0,  787,  787,  787,
-        0,  783,  787,    0,    0,  782,    0,  784,    0,  788,
-      788,  788,  783,  785,  788,  789,  789,  789,    0,  786,
-      789,  790,  790,  790,    0,    0,  790,  784,    0,  787,
-      791,  791,  791,    0,  785,  791,    0,    0,    0,  786,
-        0,  788,    0,    0,    0,  787,    0,  789,    0,  792,
-      792,  792,  788,  790,  792,  793,  793,  793,  789,    0,
-
-      793,    0,  791,    0,    0,  795,  795,  795,  791,    0,
-      795,  796,  796,  796,    0,    0,  796,  797,  797,  797,
-        0,  792,  797,  799,  799,  799,    0,  793,  799,  800,
-      800,  800,    0,    0,  800,  793,  792,  795,    0,  802,
-      802,  802,    0,  796,  802,  803,  803,  803,    0,  797,
-      803,    0,  796,    0,    0,  799,    0,  804,  804,  804,
-      797,  800,  804,    0,    0,    0,    0,    0,  800,    0,
-        0,  802,    0,    0,    0,    0,    0,  803,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  804,
-      802,    0,    0,    0,    0,    0,    0,  803,  807,  807,
-
-      807,  807,  807,  808,  808,  808,  808,  808,  809,    0,
-      809,  809,  809,  810,    0,  810,    0,  810,  811,  811,
-      811,  811,  811,  812,  812,  812,  812,  812,  813,    0,
-      813,  813,  813,  814,  814,  814,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806,  806,  806,
-      806,  806,  806,  806,  806,  806,  806,  806
-
+      100,    0,  102,  100,    0,   97,   97,   97,   97,   97,
+       97,  101,  101,  101,    0,   98,  101,  103,  103,  103,
+        0,    0,  103,    0,    0,  102,  104,  104,  104,    0,
+
+      100,  104,  105,  105,  105,    0,  100,  105,    0,    0,
+        0,    0,    0,  101,    0,  100,  106,  106,  106,  103,
+        0,  106,    0,    0,    0,    0,  101,    0,  104,    0,
+        0,    0,  104,  104,  105,    0,    0,    0,    0,  105,
+      103,  104,  107,  107,  107,    0,    0,  107,  106,  108,
+      108,  108,    0,    0,  108,  109,  109,  109,    0,  106,
+      109,  110,  110,  110,    0,    0,  110,  111,  111,  111,
+        0,    0,  111,    0,  107,    0,    0,  111,    0,  107,
+        0,  108,    0,  112,  112,  112,  108,  109,  112,  113,
+      113,  113,    0,  110,  113,  107,    0,    0,  108,  111,
+
+      114,  114,  114,  109,    0,  114,    0,  109,    0,    0,
+      114,  115,  115,  115,    0,  112,  115,    0,    0,  110,
+        0,  113,  112,  116,  116,  116,    0,    0,  116,  117,
+      117,  117,  114,    0,  117,  118,  118,  118,    0,    0,
+      118,    0,  113,  115,    0,    0,  115,  119,  119,  119,
+        0,    0,  119,    0,    0,  116,    0,  120,  120,  120,
+      116,  117,  120,    0,    0,  117,    0,  118,  121,  121,
+      121,    0,    0,  121,    0,    0,  118,    0,    0,  119,
+      122,  122,  122,    0,  119,  122,  123,  123,  123,  120,
+        0,  123,  124,  124,  124,    0,    0,  124,    0,    0,
+
+      121,    0,    0,  120,  125,  125,  125,    0,    0,  125,
+        0,    0,  122,    0,  127,  127,  127,    0,  123,  127,
+      121,    0,    0,    0,  124,    0,  122,  126,  126,  126,
+        0,    0,  126,    0,    0,    0,  125,  126,    0,  123,
+        0,    0,  128,  128,  128,  124,  127,  128,  129,  129,
+      129,    0,    0,  129,    0,  125,  125,    0,    0,  126,
+        0,  130,  130,  130,    0,  127,  130,  132,  132,  132,
+        0,    0,  132,    0,  128,    0,    0,  133,  133,  133,
+      129,    0,  133,  135,  135,  135,    0,  129,  135,    0,
+      128,    0,    0,  130,  128,  134,  134,  134,    0,  132,
+
+      134,  136,  136,  136,    0,    0,  136,    0,    0,  133,
+      130,  131,  131,  131,  133,  135,  131,    0,  132,  135,
+        0,    0,  132,  137,  137,  137,    0,  134,  137,    0,
+      134,    0,    0,  136,  138,  138,  138,    0,    0,  138,
+      139,  139,  139,  131,    0,  139,  131,  131,  131,  140,
+      140,  140,    0,  136,  140,  137,  131,    0,  131,  151,
+      151,  151,    0,  131,  151,    0,  138,    0,    0,  137,
+        0,    0,  139,  154,  154,  154,    0,    0,  154,  139,
+        0,  140,    0,  138,  155,  155,  155,    0,    0,  155,
+        0,  151,    0,    0,  140,    0,    0,  159,  159,  159,
+
+        0,    0,  159,    0,    0,  154,    0,    0,  151,    0,
+      162,  162,  162,    0,    0,  162,  155,    0,    0,    0,
+        0,    0,    0,    0,    0,  155,  158,  158,  158,  159,
+        0,    0,  159,  158,  158,  158,  158,  158,  160,  160,
+      160,    0,  162,  160,    0,    0,    0,    0,  158,  158,
+      158,  158,  158,  158,  161,  161,  161,  162,    0,  161,
+      163,  163,  163,  162,    0,  163,  164,  164,  164,    0,
+      160,  164,    0,  165,  165,  165,  164,  160,  165,  166,
+      166,  166,    0,    0,  166,    0,  161,    0,    0,  167,
+      167,  167,  163,  161,  167,    0,    0,    0,  164,  168,
+
+      168,  168,    0,    0,  168,  165,    0,    0,  165,    0,
+        0,  166,  169,  169,  169,    0,    0,  169,  170,  170,
+      170,  167,    0,  170,    0,  171,  171,  171,    0,    0,
+      171,  168,    0,  166,  167,  172,  172,  172,  168,    0,
+      172,  173,  173,  173,  169,    0,  173,  174,  174,  174,
+      170,    0,  174,  175,  175,  175,  170,  171,  175,    0,
+      171,  169,    0,  176,  176,  176,    0,  172,  176,    0,
+      177,  177,  177,  173,  172,  177,  178,  178,  178,  174,
+        0,  178,  180,  180,  180,  175,  173,  180,    0,    0,
+      174,  181,  181,  181,    0,  176,  181,  175,    0,  182,
+
+      182,  182,  177,    0,  182,  183,  183,  183,  178,    0,
+      183,  178,    0,    0,  180,    0,  176,    0,    0,  177,
+      185,  185,  185,  181,    0,  185,    0,    0,    0,  180,
+      181,  182,    0,    0,  182,    0,    0,  183,  184,  184,
+      184,    0,    0,  184,  186,  186,  186,    0,  184,  186,
+        0,    0,  185,    0,  187,  187,  187,  183,    0,  187,
+      188,  188,  188,    0,  187,  188,    0,  189,  189,  189,
+      184,  185,  189,  190,  190,  190,  186,    0,  190,  191,
+      191,  191,    0,    0,  191,  186,  187,    0,  192,  192,
+      192,    0,  188,  192,    0,    0,  193,  193,  193,  189,
+
+      188,  193,  194,  194,  194,  190,    0,  194,  195,  195,
+      195,  191,  190,  195,  196,  196,  196,  189,    0,  196,
+      192,    0,  191,    0,  197,  197,  197,    0,  193,  197,
+        0,  193,    0,    0,  194,    0,    0,  192,    0,    0,
+      195,    0,  198,  198,  198,    0,  196,  198,  199,  199,
+      199,    0,    0,  199,  194,    0,  197,  195,  200,  200,
+      200,    0,    0,  200,    0,    0,  196,    0,    0,  197,
+      201,  201,  201,    0,  198,  201,    0,  202,  202,  202,
+      199,    0,  202,    0,  203,  203,  203,    0,  199,  203,
+      200,  204,  204,  204,    0,  198,  204,    0,  205,  205,
+
+      205,  200,  201,  205,    0,    0,    0,    0,  201,  202,
+      206,  206,  206,    0,    0,  206,  203,    0,    0,    0,
+      202,    0,    0,  204,    0,    0,  204,    0,    0,    0,
+      205,    0,  203,  207,  207,  207,    0,  205,  207,  208,
+      208,  208,  206,    0,  208,  209,  209,  209,    0,  206,
+      209,    0,    0,  210,  210,  210,    0,    0,  210,  211,
+      211,  211,    0,    0,  211,  207,    0,  212,  212,  212,
+        0,  208,  212,    0,    0,    0,    0,  209,  208,  213,
+      213,  213,    0,    0,  213,  210,    0,    0,  207,  209,
+      210,  211,  214,  214,  214,    0,    0,  214,    0,  212,
+
+      215,  215,  215,    0,    0,  215,  211,  216,  216,  216,
+        0,  213,  216,    0,  225,  225,  225,    0,  213,  225,
+      212,  227,  227,  227,  214,    0,  227,    0,  225,  225,
+        0,  214,  215,    0,    0,    0,  225,    0,    0,  216,
+        0,    0,    0,    0,    0,    0,  225,  229,  229,  229,
+      216,  215,  229,  227,  230,  230,  230,    0,    0,  230,
+        0,    0,    0,    0,  227,  228,  228,  228,    0,    0,
+        0,    0,  228,  228,  228,  228,  228,    0,    0,  229,
+      231,  231,  231,    0,    0,  231,  230,  228,  228,  228,
+      228,  228,  228,  232,  232,  232,    0,    0,  232,    0,
+
+        0,  230,  233,  233,  233,  229,    0,  233,  235,  235,
+      235,    0,  231,  235,  236,  236,  236,    0,    0,  236,
+        0,    0,  237,  237,  237,  232,    0,  237,  238,  238,
+      238,    0,  232,  238,  233,    0,  239,  239,  239,    0,
+      235,  239,  240,  240,  240,    0,  236,  240,  235,    0,
+        0,    0,  240,  233,  237,    0,  240,  241,  241,  241,
+      238,    0,  241,  237,  242,  242,  242,    0,  239,  242,
+        0,  238,    0,    0,  240,    0,    0,  239,  243,  243,
+      243,    0,    0,  243,    0,  244,  244,  244,    0,  241,
+      244,    0,  245,  245,  245,    0,  242,  245,  246,  246,
+
+      246,    0,    0,  246,  247,  247,  247,    0,    0,  247,
+      243,    0,    0,  242,  247,    0,    0,  244,    0,    0,
+      248,  248,  248,    0,  245,  248,  249,  249,  249,  243,
+      246,  249,    0,  250,  250,  250,  247,    0,  250,  244,
+      251,  251,  251,  245,    0,  251,    0,    0,    0,    0,
+      246,  247,  248,    0,    0,    0,  247,    0,  249,  248,
+        0,  252,  252,  252,  249,  250,  252,    0,  253,  253,
+      253,    0,  251,  253,  254,  254,  254,    0,    0,  254,
+      255,  255,  255,    0,    0,  255,  250,  256,  256,  256,
+        0,  251,  256,  252,    0,    0,  257,  257,  257,  252,
+
+      253,  257,    0,  258,  258,  258,  254,  253,  258,  259,
+      259,  259,  255,    0,  259,  255,    0,  254,    0,  256,
+      260,  260,  260,    0,    0,  260,  256,    0,  257,  261,
+      261,  261,    0,    0,  261,  258,    0,  262,  262,  262,
+        0,  259,  262,    0,    0,    0,  258,    0,  257,    0,
+        0,    0,  260,    0,  259,  263,  263,  263,    0,    0,
+      263,  261,  264,  264,  264,    0,    0,  264,    0,  262,
+        0,  265,  265,  265,    0,    0,  265,  261,  266,  266,
+      266,    0,    0,  266,  267,  267,  267,  263,    0,  267,
+        0,  262,    0,    0,  264,    0,    0,  268,  268,  268,
+
+        0,  263,  268,  265,    0,    0,    0,  269,  269,  269,
+      266,    0,  269,    0,    0,    0,  267,    0,  264,  265,
+        0,  266,  270,  270,  270,    0,    0,  270,    0,  268,
+      271,  271,  271,    0,    0,  271,  267,    0,  268,  269,
+      272,  272,  272,    0,    0,  272,  269,  273,  273,  273,
+      269,    0,  273,    0,  270,    0,  274,  274,  274,    0,
+      270,  274,  271,  275,  275,  275,    0,    0,  275,  276,
+      276,  276,  272,    0,  276,  278,  278,  278,  271,  273,
+      278,    0,    0,    0,  277,  277,  277,  272,  274,  277,
+        0,    0,  279,  279,  279,  275,    0,  279,  273,    0,
+
+        0,  276,    0,  280,  280,  280,    0,  278,  280,    0,
+        0,    0,    0,    0,  274,    0,  277,    0,    0,  275,
+      276,    0,    0,  277,  279,    0,  278,  281,  281,  281,
+        0,  279,  281,    0,    0,  280,  282,  282,  282,    0,
+        0,  282,  280,  283,  283,  283,    0,    0,  283,  284,
+      284,  284,    0,    0,  284,  285,  285,  285,    0,  281,
+      285,    0,  286,  286,  286,    0,  281,  286,  282,  291,
+      291,  291,    0,    0,  291,  283,    0,  292,  292,  292,
+        0,  284,  292,  293,  293,  293,    0,  285,  293,    0,
+      294,  294,  294,    0,  286,  294,    0,  296,  296,  296,
+
+      286,  291,  296,  297,  297,  297,    0,    0,  297,  292,
+        0,  300,  300,  300,    0,  293,  300,    0,  299,  299,
+      299,  293,  294,  299,    0,  301,  301,  301,    0,  296,
+      301,    0,    0,    0,    0,  297,    0,  294,  295,  295,
+      295,    0,    0,  300,    0,  295,  295,  295,  295,  295,
+      299,    0,    0,    0,    0,  299,  297,  301,    0,  300,
+      295,  295,  295,  295,  295,  295,  303,  303,  303,    0,
+        0,  303,    0,  301,  304,  304,  304,    0,    0,  304,
+      305,  305,  305,    0,    0,  305,  306,  306,  306,    0,
+        0,  306,    0,    0,  307,  307,  307,    0,  303,  307,
+
+      309,  309,  309,    0,    0,  309,  304,    0,  310,  310,
+      310,  303,  305,  310,    0,  305,    0,    0,  306,    0,
+        0,  304,    0,    0,  306,    0,  307,    0,  311,  311,
+      311,    0,  309,  311,    0,    0,  312,  312,  312,    0,
+      310,  312,  307,    0,  313,  313,  313,    0,    0,  313,
+        0,    0,  309,    0,  313,    0,    0,  310,    0,    0,
+      311,    0,  315,  315,  315,    0,  311,  315,  312,  316,
+      316,  316,    0,    0,  316,  312,  313,  317,  317,  317,
+        0,    0,  317,  318,  318,  318,    0,  317,  318,    0,
+      319,  319,  319,    0,  315,  319,    0,  320,  320,  320,
+
+        0,  316,  320,    0,  316,  321,  321,  321,    0,  317,
+      321,    0,    0,  315,    0,  318,  322,  322,  322,    0,
+        0,  322,  319,    0,    0,  323,  323,  323,  319,  320,
+      323,  324,  324,  324,    0,  323,  324,  321,    0,    0,
+      320,  325,  325,  325,    0,  321,  325,    0,  322,    0,
+      326,  326,  326,    0,  322,  326,    0,  323,    0,  327,
+      327,  327,    0,  324,  327,  328,  328,  328,    0,    0,
+      328,    0,    0,  325,  329,  329,  329,    0,  324,  329,
+        0,    0,  326,  331,  331,  331,    0,    0,  331,    0,
+        0,  327,  325,  332,  332,  332,    0,  328,  332,    0,
+
+        0,  326,    0,  333,  333,  333,  329,  327,  333,    0,
+      328,  334,  334,  334,    0,  331,  334,  335,  335,  335,
+        0,    0,  335,    0,    0,  332,  336,  336,  336,    0,
+      331,  336,  338,  338,  338,  333,    0,  338,    0,  339,
+      339,  339,  333,  334,  339,    0,  332,    0,    0,  335,
+      340,  340,  340,    0,    0,  340,    0,    0,  336,  334,
+        0,  341,  341,  341,  338,  335,  341,  342,  342,  342,
+        0,  339,  342,    0,  343,  343,  343,  342,  336,  343,
+        0,    0,  340,    0,  344,  344,  344,    0,    0,  344,
+      339,    0,    0,  341,    0,  345,  345,  345,    0,  342,
+
+      345,  340,  346,  346,  346,    0,  343,  346,    0,  347,
+      347,  347,  346,    0,  347,    0,  344,    0,  341,  347,
+        0,  343,  344,  348,  348,  348,    0,  345,  348,    0,
+      349,  349,  349,  345,  346,  349,    0,  350,  350,  350,
+        0,  347,  350,  351,  351,  351,    0,    0,  351,    0,
+        0,  352,  352,  352,    0,  348,  352,    0,  353,  353,
+      353,    0,  349,  353,    0,    0,  358,  358,  358,  350,
+        0,  358,  363,  363,  363,  351,  358,  363,  348,    0,
+      350,  349,    0,  352,  364,  364,  364,    0,    0,  364,
+      353,    0,  366,  366,  366,    0,  351,  366,  358,    0,
+
+        0,    0,  366,    0,  363,  367,  367,  367,    0,    0,
+      367,  353,  368,  368,  368,    0,  364,  368,    0,  363,
+        0,  369,  369,  369,  366,  364,  369,  370,  370,  370,
+        0,    0,  370,    0,    0,    0,    0,  367,  371,  371,
+      371,    0,    0,  371,  368,    0,  372,  372,  372,    0,
+        0,  372,    0,  369,    0,    0,    0,  368,  367,  370,
+      373,  373,  373,    0,    0,  373,  370,    0,    0,    0,
+      371,    0,  369,    0,  374,  374,  374,  371,  372,  374,
+      375,  375,  375,    0,    0,  375,  376,  376,  376,  374,
+        0,  376,  373,    0,    0,    0,    0,    0,  373,  372,
+
+      377,  377,  377,    0,    0,  377,  374,    0,  378,  378,
+      378,    0,  375,  378,    0,  379,  379,  379,  376,    0,
+      379,    0,  380,  380,  380,    0,    0,  380,    0,    0,
+        0,    0,  377,    0,  375,    0,    0,  376,    0,  377,
+      378,    0,    0,  381,  381,  381,  378,  379,  381,    0,
+      382,  382,  382,    0,  380,  382,    0,    0,    0,    0,
+      379,  380,  384,  384,  384,    0,    0,  384,  385,  385,
+      385,    0,    0,  385,    0,  381,    0,    0,    0,  386,
+      386,  386,  382,    0,  386,  387,  387,  387,  382,  381,
+      387,  388,  388,  388,  384,    0,  388,    0,    0,    0,
+
+      385,  389,  389,  389,    0,    0,  389,    0,  385,    0,
+        0,  386,    0,  384,  386,    0,    0,  387,    0,  390,
+      390,  390,    0,  388,  390,    0,  391,  391,  391,  388,
+        0,  391,    0,  389,    0,    0,  387,  392,  392,  392,
+        0,    0,  392,  393,  393,  393,    0,    0,  393,    0,
+        0,  390,    0,    0,  389,  395,  395,  395,  391,    0,
+      395,  396,  396,  396,    0,  395,  396,    0,    0,  392,
+        0,  397,  397,  397,    0,  393,  397,  390,  391,  398,
+      398,  398,  393,    0,  398,    0,    0,  395,    0,    0,
+        0,  392,    0,  396,    0,  396,  399,  399,  399,    0,
+
+        0,  399,    0,  397,  400,  400,  400,    0,    0,  400,
+        0,  398,  402,  402,  402,    0,    0,  402,  403,  403,
+      403,    0,    0,  403,  397,    0,    0,    0,  399,    0,
+      398,    0,  404,  404,  404,    0,  400,  404,  405,  405,
+      405,  399,  404,  405,  402,    0,    0,  406,  406,  406,
+      403,  402,  406,  407,  407,  407,    0,  400,  407,    0,
+        0,    0,    0,  407,  404,    0,    0,    0,    0,  403,
+      405,  404,  408,  408,  408,  405,    0,  408,    0,  406,
+        0,    0,  408,    0,    0,  407,  410,  410,  410,    0,
+        0,  410,  406,  411,  411,  411,    0,    0,  411,    0,
+
+      412,  412,  412,    0,  408,  412,    0,  413,  413,  413,
+        0,    0,  413,    0,    0,    0,    0,  413,  410,  414,
+      414,  414,    0,    0,  414,  411,  415,  415,  415,    0,
+        0,  415,  412,    0,    0,  412,  415,    0,  410,  413,
+        0,    0,  417,  417,  417,    0,  411,  417,  418,  418,
+      418,  414,    0,  418,  420,  420,  420,  417,  415,  420,
+      421,  421,  421,    0,    0,  421,  422,  422,  422,    0,
+        0,  422,  414,    0,  417,    0,    0,  423,  423,  423,
+      418,    0,  423,  425,  425,  425,  420,  423,  425,  424,
+      424,  424,  421,  418,  424,  426,  426,  426,  422,  424,
+
+      426,    0,    0,  422,    0,    0,  420,    0,    0,  423,
+        0,    0,  427,  427,  427,  425,    0,  427,    0,    0,
+        0,  424,  427,  428,  428,  428,    0,  426,  428,  425,
+        0,  429,  429,  429,    0,    0,  429,  430,  430,  430,
+        0,    0,  430,    0,  427,    0,    0,  430,    0,    0,
+      426,  431,  431,  431,    0,  428,  431,    0,    0,  432,
+      432,  432,  428,  429,  432,  433,  433,  433,    0,  430,
+      433,    0,  434,  434,  434,    0,    0,  434,  429,  435,
+      435,  435,  434,  431,  435,  436,  436,  436,    0,    0,
+      436,  432,    0,  437,  437,  437,  431,  433,  437,    0,
+
+        0,    0,  432,  433,  434,    0,    0,  438,  438,  438,
+        0,  435,  438,  439,  439,  439,    0,  436,  439,  440,
+      440,  440,  435,    0,  440,  437,  441,  441,  441,    0,
+        0,  441,  437,  442,  442,  442,    0,  436,  442,  438,
+        0,    0,  438,    0,    0,  439,    0,    0,  443,  443,
+      443,  440,  439,  443,  444,  444,  444,    0,  441,  444,
+        0,    0,  440,  441,    0,  442,  445,  445,  445,    0,
+        0,  445,  442,  446,  446,  446,    0,    0,  446,    0,
+      443,    0,    0,  443,    0,    0,  444,  447,  447,  447,
+        0,    0,  447,  444,  448,  448,  448,    0,  445,  448,
+
+        0,  449,  449,  449,    0,  446,  449,    0,  451,  451,
+      451,    0,    0,  451,    0,  452,  452,  452,    0,  447,
+      452,    0,    0,  453,  453,  453,  448,    0,  453,    0,
+      454,  454,  454,  449,    0,  454,    0,    0,  447,  449,
+      451,  455,  455,  455,    0,    0,  455,  452,  456,  456,
+      456,    0,    0,  456,  452,  453,  451,    0,  457,  457,
+      457,  453,  454,  457,  459,  459,  459,    0,    0,  459,
+      460,  460,  460,  455,    0,  460,  461,  461,  461,    0,
+      456,  461,  454,  462,  462,  462,    0,    0,  462,    0,
+      457,    0,    0,  463,  463,  463,  459,  457,  463,    0,
+
+      456,    0,  460,    0,    0,  464,  464,  464,  461,  459,
+      464,  465,  465,  465,    0,  462,  465,    0,  466,  466,
+      466,    0,  460,  466,  461,  463,    0,  467,  467,  467,
+        0,    0,  467,    0,  468,  468,  468,  464,    0,  468,
+        0,  462,    0,  465,    0,    0,  463,  469,  469,  469,
+      466,    0,  469,    0,    0,  470,  470,  470,  464,  467,
+      470,  466,  472,  472,  472,  465,  468,  472,  473,  473,
+      473,    0,    0,  473,    0,    0,    0,  468,    0,  469,
+      467,  474,  474,  474,    0,    0,  474,  470,  476,  476,
+      476,    0,    0,  476,  472,    0,  477,  477,  477,    0,
+
+      473,  477,  470,    0,    0,  469,    0,    0,  470,    0,
+        0,  473,    0,  474,  478,  478,  478,    0,    0,  478,
+      476,  479,  479,  479,    0,    0,  479,    0,  477,  480,
+      480,  480,    0,  476,  480,  481,  481,  481,    0,    0,
+      481,    0,  482,  482,  482,    0,  478,  482,    0,  477,
+      483,  483,  483,  479,    0,  483,  479,  484,  484,  484,
+        0,  480,  484,    0,    0,    0,  478,  481,  480,    0,
+        0,    0,    0,    0,  482,    0,  485,  485,  485,    0,
+      482,  485,  483,    0,  481,  486,  486,  486,    0,  484,
+      486,  487,  487,  487,    0,    0,  487,    0,  488,  488,
+
+      488,  487,  483,  488,    0,    0,  484,    0,  485,    0,
+        0,  485,    0,  489,  489,  489,    0,  486,  489,  490,
+      490,  490,    0,  487,  490,    0,    0,  491,  491,  491,
+      488,    0,  491,  492,  492,  492,    0,  486,  492,  493,
+      493,  493,    0,  488,  493,  489,    0,    0,    0,  489,
+        0,  490,    0,    0,    0,  494,  494,  494,  490,  491,
+      494,  495,  495,  495,    0,  492,  495,  496,  496,  496,
+        0,  493,  496,  497,  497,  497,    0,    0,  497,  498,
+      498,  498,    0,    0,  498,    0,  492,  494,    0,    0,
+        0,  493,    0,  495,  494,    0,  501,  501,  501,  496,
+
+      495,  501,  503,  503,  503,  497,    0,  503,  504,  504,
+      504,  498,    0,  504,    0,  505,  505,  505,    0,  496,
+      505,    0,  506,  506,  506,    0,  497,  506,  501,    0,
+      498,    0,    0,  501,  503,    0,    0,  503,    0,    0,
+      504,  503,    0,  507,  507,  507,    0,  505,  507,    0,
+      509,  509,  509,    0,  506,  509,    0,  504,  510,  510,
+      510,    0,    0,  510,    0,    0,  505,  511,  511,  511,
+        0,    0,  511,    0,    0,  507,  512,  512,  512,    0,
+        0,  512,  509,  513,  513,  513,    0,    0,  513,    0,
+      510,    0,  514,  514,  514,    0,  510,  514,    0,  511,
+
+      509,    0,  515,  515,  515,    0,  511,  515,  512,  516,
+      516,  516,    0,    0,  516,  513,  517,  517,  517,    0,
+        0,  517,    0,    0,  514,  518,  518,  518,    0,  513,
+      518,  519,  519,  519,  515,    0,  519,  520,  520,  520,
+        0,  516,  520,    0,    0,  515,    0,    0,  517,  521,
+      521,  521,    0,    0,  521,    0,    0,  518,    0,  522,
+      522,  522,    0,  519,  522,  517,    0,  516,    0,  520,
+        0,  518,    0,    0,  519,  520,    0,  523,  523,  523,
+        0,  521,  523,  525,  525,  525,    0,    0,  525,    0,
+        0,  522,    0,    0,  522,  527,  527,  527,    0,    0,
+
+      527,  528,  528,  528,    0,    0,  528,    0,    0,  523,
+        0,  529,  529,  529,    0,  525,  529,  530,  530,  530,
+        0,    0,  530,  525,  531,  531,  531,  527,    0,  531,
+      527,    0,    0,  528,    0,  523,  532,  532,  532,    0,
+        0,  532,    0,  529,  528,  533,  533,  533,    0,  530,
+      533,    0,  534,  534,  534,  533,  531,  534,    0,  529,
+      535,  535,  535,    0,    0,  535,    0,    0,  532,  531,
+      530,  536,  536,  536,    0,    0,  536,  533,  537,  537,
+      537,    0,    0,  537,  534,    0,    0,  532,  538,  538,
+      538,    0,  535,  538,  539,  539,  539,    0,    0,  539,
+
+      540,  540,  540,  536,    0,  540,    0,    0,  535,    0,
+      537,  541,  541,  541,    0,    0,  541,  537,    0,    0,
+      538,    0,    0,    0,  536,    0,  539,    0,    0,  543,
+      543,  543,  540,  539,  543,    0,    0,  538,    0,  544,
+      544,  544,    0,  541,  544,  545,  545,  545,    0,    0,
+      545,  540,    0,  546,  546,  546,    0,    0,  546,    0,
+        0,  543,  541,  546,  543,  547,  547,  547,    0,    0,
+      547,  544,    0,    0,  548,  548,  548,  545,    0,  548,
+        0,  549,  549,  549,    0,  546,  549,  550,  550,  550,
+        0,  544,  550,  551,  551,  551,  545,  547,  551,  552,
+
+      552,  552,    0,    0,  552,  546,  548,    0,    0,  548,
+      553,  553,  553,  549,    0,  553,    0,  547,    0,  550,
+        0,    0,  554,  554,  554,  551,  550,  554,  557,  557,
+      557,  552,    0,  557,    0,    0,  549,    0,    0,  552,
+        0,    0,  553,  558,  558,  558,  551,    0,  558,    0,
+      559,  559,  559,  558,  554,  559,  561,  561,  561,    0,
+      557,  561,    0,  553,  563,  563,  563,    0,    0,  563,
+        0,    0,    0,  557,  554,  558,  564,  564,  564,    0,
+        0,  564,  559,    0,  565,  565,  565,    0,  561,  565,
+      566,  566,  566,    0,    0,  566,  563,  559,  567,  567,
+
+      567,    0,  561,  567,  568,  568,  568,    0,  564,  568,
+      563,    0,  570,  570,  570,    0,  565,  570,  571,  571,
+      571,    0,  566,  571,    0,  564,    0,    0,    0,  566,
+      567,    0,    0,  565,    0,    0,  568,  572,  572,  572,
+        0,    0,  572,    0,  570,    0,  567,  573,  573,  573,
+      571,    0,  573,    0,  574,  574,  574,    0,  570,  574,
+      575,  575,  575,    0,    0,  575,    0,  571,    0,  572,
+      576,  576,  576,    0,    0,  576,  572,    0,    0,  573,
+      577,  577,  577,    0,    0,  577,  574,    0,  578,  578,
+      578,    0,  575,  578,    0,    0,    0,  575,    0,  573,
+
+      574,    0,  576,  579,  579,  579,    0,    0,  579,  581,
+      581,  581,  577,    0,  581,    0,    0,  582,  582,  582,
+      578,    0,  582,  583,  583,  583,    0,    0,  583,  584,
+      584,  584,    0,  583,  584,  579,  578,  585,  585,  585,
+        0,  581,  585,    0,    0,  587,  587,  587,  579,  582,
+      587,    0,  586,  586,  586,  583,  582,  586,    0,    0,
+      581,  584,  588,  588,  588,    0,    0,  588,    0,  585,
+        0,    0,  585,  589,  589,  589,    0,  587,  589,    0,
+      584,  590,  590,  590,  586,    0,  590,  586,  592,  592,
+      592,    0,    0,  592,  588,    0,    0,    0,  588,    0,
+
+      587,  593,  593,  593,    0,  589,  593,  594,  594,  594,
+        0,  593,  594,  590,    0,    0,  595,  595,  595,    0,
+      592,  595,  596,  596,  596,    0,    0,  596,    0,    0,
+        0,  592,    0,  593,    0,  597,  597,  597,    0,  594,
+      597,    0,  598,  598,  598,    0,  594,  598,  595,    0,
+        0,    0,  595,    0,  596,    0,    0,  596,  599,  599,
+      599,    0,    0,  599,  600,  600,  600,  597,    0,  600,
+      601,  601,  601,    0,  598,  601,    0,  598,  602,  602,
+      602,    0,    0,  602,  603,  603,  603,  597,    0,  603,
+      599,    0,  604,  604,  604,    0,  600,  604,  605,  605,
+
+      605,    0,  601,  605,  606,  606,  606,  600,    0,  606,
+      602,    0,  607,  607,  607,    0,  603,  607,  608,  608,
+      608,    0,    0,  608,  604,    0,  609,  609,  609,  603,
+      605,  609,  610,  610,  610,    0,  606,  610,    0,    0,
+        0,  605,    0,  606,  607,    0,    0,    0,    0,    0,
+      608,  607,  612,  612,  612,    0,    0,  612,  609,    0,
+      613,  613,  613,  608,  610,  613,  614,  614,  614,    0,
+        0,  614,    0,  615,  615,  615,    0,  609,  615,  610,
+        0,  616,  616,  616,  612,    0,  616,    0,    0,    0,
+        0,  612,  613,    0,    0,  617,  617,  617,  614,  613,
+
+      617,  620,  620,  620,    0,  615,  620,    0,    0,  621,
+      621,  621,    0,  616,  621,    0,    0,    0,    0,  614,
+      616,  622,  622,  622,    0,  615,  622,  617,    0,  623,
+      623,  623,    0,  620,  623,    0,    0,  620,    0,  617,
+        0,  621,    0,    0,  624,  624,  624,    0,  621,  624,
+      625,  625,  625,  622,    0,  625,    0,    0,  626,  626,
+      626,  623,    0,  626,  627,  627,  627,    0,    0,  627,
+      628,  628,  628,    0,  622,  628,  624,    0,    0,  629,
+      629,  629,  625,    0,  629,    0,    0,  624,    0,  625,
+      626,    0,  632,  632,  632,    0,  627,  632,    0,  634,
+
+      634,  634,  628,    0,  634,  628,    0,  636,  636,  636,
+      626,  629,  636,    0,  629,  627,  637,  637,  637,    0,
+        0,  637,    0,    0,  632,    0,    0,    0,    0,    0,
+      632,  634,  638,  638,  638,    0,  634,  638,    0,  636,
+      639,  639,  639,    0,    0,  639,    0,    0,  637,    0,
+        0,  637,  640,  640,  640,    0,    0,  640,    0,  636,
+      642,  642,  642,    0,  638,  642,  645,  645,  645,    0,
+        0,  645,  639,  647,  647,  647,    0,  638,  647,    0,
+      648,  648,  648,    0,  640,  648,  649,  649,  649,    0,
+        0,  649,  642,    0,    0,  651,  651,  651,  645,    0,
+
+      651,  650,  650,  650,    0,  647,  650,    0,  642,  645,
+        0,    0,  648,    0,  652,  652,  652,    0,  649,  652,
+      653,  653,  653,    0,  652,  653,  647,  651,    0,    0,
+        0,  648,    0,  650,    0,  654,  654,  654,  649,    0,
+      654,    0,    0,    0,  650,    0,  652,    0,  655,  655,
+      655,    0,  653,  655,  656,  656,  656,    0,    0,  656,
+      657,  657,  657,    0,    0,  657,  652,  654,  658,  658,
+      658,    0,    0,  658,  659,  659,  659,    0,    0,  659,
+      655,    0,  660,  660,  660,    0,  656,  660,    0,    0,
+        0,  655,  657,  656,  661,  661,  661,    0,    0,  661,
+
+      658,    0,    0,    0,    0,    0,  659,  658,  657,  659,
+      663,  663,  663,    0,  660,  663,    0,  664,  664,  664,
+        0,    0,  664,  665,  665,  665,  661,    0,  665,  660,
+        0,  666,  666,  666,    0,    0,  666,    0,  667,  667,
+      667,    0,  663,  667,    0,  668,  668,  668,  663,  664,
+      668,  669,  669,  669,    0,  665,  669,  664,    0,    0,
+        0,    0,  665,  666,  670,  670,  670,    0,    0,  670,
+      667,  671,  671,  671,  666,    0,  671,  668,    0,  672,
+      672,  672,    0,  669,  672,  673,  673,  673,    0,    0,
+      673,  667,    0,  676,  676,  676,  670,  668,  676,    0,
+
+        0,    0,    0,  671,  677,  677,  677,    0,    0,  677,
+        0,  672,  670,  678,  678,  678,    0,  673,  678,  679,
+      679,  679,    0,    0,  679,  676,    0,  680,  680,  680,
+        0,  672,  680,  681,  681,  681,  677,    0,  681,    0,
+      676,  683,  683,  683,  677,  678,  683,  684,  684,  684,
+        0,  679,  684,  687,  687,  687,    0,    0,  687,  680,
+        0,  689,  689,  689,    0,  681,  689,    0,    0,  690,
+      690,  690,  681,  683,  690,  691,  691,  691,    0,  684,
+      691,    0,    0,    0,    0,  687,    0,  683,    0,  692,
+      692,  692,    0,  689,  692,  693,  693,  693,    0,  687,
+
+      693,  690,    0,  695,  695,  695,    0,  691,  695,  696,
+      696,  696,    0,  689,  696,  697,  697,  697,    0,    0,
+      697,  692,    0,  690,  698,  698,  698,  693,  691,  698,
+        0,    0,  699,  699,  699,  695,    0,  699,  700,  700,
+      700,  696,  692,  700,  702,  702,  702,  697,    0,  702,
+        0,    0,  696,  704,  704,  704,  698,    0,  704,    0,
+        0,    0,    0,  698,  699,    0,    0,  697,    0,    0,
+      700,    0,    0,    0,    0,  699,  702,  700,  706,  706,
+      706,    0,    0,  706,    0,  704,    0,    0,  707,  707,
+      707,  702,  704,  707,  711,  711,  711,    0,    0,  711,
+
+        0,  712,  712,  712,    0,    0,  712,  714,  714,  714,
+      706,    0,  714,  715,  715,  715,    0,    0,  715,    0,
+      707,    0,    0,  716,  716,  716,  711,  707,  716,    0,
+      706,    0,  711,  712,    0,  717,  717,  717,    0,  714,
+      717,    0,  718,  718,  718,  715,  714,  718,    0,  712,
+        0,  721,  721,  721,    0,  716,  721,    0,  722,  722,
+      722,    0,    0,  722,  723,  723,  723,  717,  722,  723,
+      724,  724,  724,    0,  718,  724,  716,  725,  725,  725,
+        0,    0,  725,  721,    0,  718,    0,  726,  726,  726,
+      722,    0,  726,  727,  727,  727,  723,    0,  727,  728,
+
+      728,  728,  724,    0,  728,  729,  729,  729,  721,  725,
+      729,    0,  730,  730,  730,    0,  723,  730,  724,  726,
+        0,    0,  730,    0,    0,  727,    0,  726,  731,  731,
+      731,  728,    0,  731,    0,    0,    0,  729,  732,  732,
+      732,    0,    0,  732,  730,  734,  734,  734,    0,    0,
+      734,  736,  736,  736,    0,    0,  736,    0,  729,    0,
+      731,    0,  737,  737,  737,    0,  731,  737,    0,    0,
+      732,    0,  737,  738,  738,  738,    0,  734,  738,  739,
+      739,  739,    0,  736,  739,  740,  740,  740,    0,    0,
+      740,  742,  742,  742,  737,    0,  742,    0,    0,  736,
+
+        0,  745,  745,  745,    0,  738,  745,  746,  746,  746,
+        0,  739,  746,  747,  747,  747,    0,  740,  747,  750,
+      750,  750,  738,  742,  750,  752,  752,  752,    0,    0,
+      752,    0,  740,  745,  742,  753,  753,  753,    0,  746,
+      753,  756,  756,  756,  745,  747,  756,    0,  755,  755,
+      755,  750,  747,  755,    0,  746,    0,  752,  755,  757,
+      757,  757,    0,    0,  757,    0,  750,  753,    0,    0,
+      752,    0,    0,  756,  758,  758,  758,    0,    0,  758,
+      755,    0,  756,  759,  759,  759,  753,    0,  759,    0,
+        0,  757,  760,  760,  760,    0,    0,  760,  761,  761,
+
+      761,    0,  760,  761,    0,  757,  758,  762,  762,  762,
+        0,    0,  762,    0,    0,  759,  763,  763,  763,    0,
+        0,  763,    0,  758,  760,    0,  764,  764,  764,    0,
+      761,  764,    0,  765,  765,  765,    0,  761,  765,  762,
+        0,  766,  766,  766,    0,    0,  766,    0,  763,  768,
+      768,  768,    0,    0,  768,  762,    0,    0,  764,  763,
+        0,  769,  769,  769,    0,  765,  769,    0,    0,  770,
+      770,  770,  765,  766,  770,  771,  771,  771,    0,    0,
+      771,  768,  773,  773,  773,    0,    0,  773,    0,    0,
+      774,  774,  774,  769,  766,  774,    0,    0,  768,    0,
+
+        0,  770,    0,    0,    0,    0,  770,  771,  769,    0,
+      775,  775,  775,  771,  773,  775,  776,  776,  776,    0,
+        0,  776,  774,  777,  777,  777,    0,    0,  777,  778,
+      778,  778,    0,  774,  778,  780,  780,  780,    0,    0,
+      780,    0,  775,    0,    0,  781,  781,  781,  776,  775,
+      781,    0,  783,  783,  783,  777,    0,  783,  784,  784,
+      784,  778,  777,  784,    0,    0,    0,  780,  778,  785,
+      785,  785,    0,    0,  785,    0,    0,  781,    0,    0,
+      786,  786,  786,  780,  783,  786,  787,  787,  787,    0,
+      784,  787,  788,  788,  788,    0,  781,  788,  789,  789,
+
+      789,  785,    0,  789,  783,  784,    0,    0,  790,  790,
+      790,    0,  786,  790,    0,    0,  785,    0,  787,    0,
+      791,  791,  791,  786,  788,  791,  792,  792,  792,    0,
+      789,  792,  793,  793,  793,    0,    0,  793,  787,    0,
+      790,  794,  794,  794,    0,  788,  794,    0,    0,    0,
+      789,    0,  791,    0,    0,    0,  790,    0,  792,    0,
+      795,  795,  795,  791,  793,  795,  796,  796,  796,  792,
+        0,  796,    0,  794,    0,    0,  798,  798,  798,  794,
+        0,  798,  799,  799,  799,    0,    0,  799,  800,  800,
+      800,    0,  795,  800,  802,  802,  802,    0,  796,  802,
+
+      803,  803,  803,    0,    0,  803,  796,  795,  798,    0,
+      805,  805,  805,    0,  799,  805,  806,  806,  806,    0,
+      800,  806,    0,  799,    0,    0,  802,    0,  807,  807,
+      807,  800,  803,  807,    0,    0,    0,    0,    0,  803,
+        0,    0,  805,    0,    0,    0,    0,    0,  806,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      807,  805,    0,    0,    0,    0,    0,    0,  806,  810,
+      810,  810,  810,  810,  811,  811,  811,  811,  811,  812,
+        0,  812,  812,  812,  813,    0,  813,    0,  813,  814,
+      814,  814,  814,  814,  815,  815,  815,  815,  815,  816,
+
+        0,  816,  816,  816,  817,  817,  817,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809,  809,
+      809,  809,  809,  809,  809,  809,  809,  809,  809
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2112,21 +2128,21 @@ static char *yy_last_accepting_cpos;
 extern int parser6__flex_debug;
 int parser6__flex_debug = 1;
 
-static yyconst flex_int16_t yy_rule_linenum[115] =
+static yyconst flex_int16_t yy_rule_linenum[116] =
     {   0,
       130,  132,  134,  139,  140,  145,  146,  147,  159,  162,
       167,  174,  183,  192,  201,  210,  219,  228,  240,  249,
-      258,  267,  277,  287,  297,  308,  318,  328,  338,  348,
-      358,  368,  377,  386,  395,  410,  425,  434,  443,  452,
+      258,  267,  276,  286,  296,  306,  317,  327,  337,  347,
+      357,  367,  377,  386,  395,  404,  419,  434,  443,  452,
       461,  470,  479,  488,  497,  506,  515,  524,  533,  542,
-      551,  560,  570,  579,  588,  597,  606,  615,  624,  633,
-      642,  651,  661,  671,  681,  690,  699,  708,  719,  729,
-      738,  748,  757,  766,  775,  784,  793,  802,  812,  821,
+      551,  560,  569,  579,  588,  597,  606,  615,  624,  633,
+      642,  651,  660,  670,  680,  690,  699,  708,  717,  728,
+      738,  747,  757,  766,  775,  784,  793,  802,  811,  821,
       830,  839,  848,  857,  866,  875,  884,  893,  902,  911,
-      920,  929,  938,  947,  956,  965,  974, 1072, 1077, 1082,
+      920,  929,  938,  947,  956,  965,  974,  983, 1081, 1086,
 
-     1087, 1088, 1089, 1090, 1091, 1092, 1094, 1112, 1125, 1130,
-     1134, 1136, 1138, 1140
+     1091, 1096, 1097, 1098, 1099, 1100, 1101, 1103, 1121, 1134,
+     1139, 1143, 1145, 1147, 1149
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -2197,7 +2213,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 2201 "dhcp6_lexer.cc"
+#line 2217 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2523,7 +2539,7 @@ YY_DECL
     }
 
 
-#line 2527 "dhcp6_lexer.cc"
+#line 2543 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2552,13 +2568,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 >= 807 )
+                               if ( yy_current_state >= 810 )
                                        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 != 806 );
+               while ( yy_current_state != 809 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2577,13 +2593,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 < 115 )
+                       else if ( yy_act < 116 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], parser6_text );
-                       else if ( yy_act == 115 )
+                       else if ( yy_act == 116 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         parser6_text );
-                       else if ( yy_act == 116 )
+                       else if ( yy_act == 117 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2813,6 +2829,18 @@ YY_RULE_SETUP
 case 22:
 YY_RULE_SETUP
 #line 267 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DATABASE_TYPE:
+        return isc::dhcp::Dhcp6Parser::make_CQL(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("cql", driver.loc_);
+    }
+}
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 276 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2823,9 +2851,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 23:
+case 24:
 YY_RULE_SETUP
-#line 277 "dhcp6_lexer.ll"
+#line 286 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2836,9 +2864,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 24:
+case 25:
 YY_RULE_SETUP
-#line 287 "dhcp6_lexer.ll"
+#line 296 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2849,9 +2877,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 25:
+case 26:
 YY_RULE_SETUP
-#line 297 "dhcp6_lexer.ll"
+#line 306 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2863,9 +2891,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 26:
+case 27:
 YY_RULE_SETUP
-#line 308 "dhcp6_lexer.ll"
+#line 317 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2876,9 +2904,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 27:
+case 28:
 YY_RULE_SETUP
-#line 318 "dhcp6_lexer.ll"
+#line 327 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2889,9 +2917,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 28:
+case 29:
 YY_RULE_SETUP
-#line 328 "dhcp6_lexer.ll"
+#line 337 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2902,9 +2930,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 29:
+case 30:
 YY_RULE_SETUP
-#line 338 "dhcp6_lexer.ll"
+#line 347 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2915,9 +2943,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 30:
+case 31:
 YY_RULE_SETUP
-#line 348 "dhcp6_lexer.ll"
+#line 357 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2928,9 +2956,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 31:
+case 32:
 YY_RULE_SETUP
-#line 358 "dhcp6_lexer.ll"
+#line 367 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2941,9 +2969,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 32:
+case 33:
 YY_RULE_SETUP
-#line 368 "dhcp6_lexer.ll"
+#line 377 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2953,9 +2981,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 33:
+case 34:
 YY_RULE_SETUP
-#line 377 "dhcp6_lexer.ll"
+#line 386 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2965,9 +2993,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 34:
+case 35:
 YY_RULE_SETUP
-#line 386 "dhcp6_lexer.ll"
+#line 395 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2977,9 +3005,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 35:
+case 36:
 YY_RULE_SETUP
-#line 395 "dhcp6_lexer.ll"
+#line 404 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2995,9 +3023,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 36:
+case 37:
 YY_RULE_SETUP
-#line 410 "dhcp6_lexer.ll"
+#line 419 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3013,9 +3041,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 37:
+case 38:
 YY_RULE_SETUP
-#line 425 "dhcp6_lexer.ll"
+#line 434 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3025,9 +3053,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 38:
+case 39:
 YY_RULE_SETUP
-#line 434 "dhcp6_lexer.ll"
+#line 443 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3037,9 +3065,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 39:
+case 40:
 YY_RULE_SETUP
-#line 443 "dhcp6_lexer.ll"
+#line 452 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3049,9 +3077,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 40:
+case 41:
 YY_RULE_SETUP
-#line 452 "dhcp6_lexer.ll"
+#line 461 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3061,9 +3089,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 41:
+case 42:
 YY_RULE_SETUP
-#line 461 "dhcp6_lexer.ll"
+#line 470 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3073,9 +3101,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 42:
+case 43:
 YY_RULE_SETUP
-#line 470 "dhcp6_lexer.ll"
+#line 479 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3085,9 +3113,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 43:
+case 44:
 YY_RULE_SETUP
-#line 479 "dhcp6_lexer.ll"
+#line 488 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3097,9 +3125,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 44:
+case 45:
 YY_RULE_SETUP
-#line 488 "dhcp6_lexer.ll"
+#line 497 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3109,9 +3137,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 45:
+case 46:
 YY_RULE_SETUP
-#line 497 "dhcp6_lexer.ll"
+#line 506 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -3121,9 +3149,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 46:
+case 47:
 YY_RULE_SETUP
-#line 506 "dhcp6_lexer.ll"
+#line 515 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3133,9 +3161,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 47:
+case 48:
 YY_RULE_SETUP
-#line 515 "dhcp6_lexer.ll"
+#line 524 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3145,9 +3173,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 48:
+case 49:
 YY_RULE_SETUP
-#line 524 "dhcp6_lexer.ll"
+#line 533 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3157,9 +3185,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 49:
+case 50:
 YY_RULE_SETUP
-#line 533 "dhcp6_lexer.ll"
+#line 542 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3169,9 +3197,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 50:
+case 51:
 YY_RULE_SETUP
-#line 542 "dhcp6_lexer.ll"
+#line 551 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3181,9 +3209,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 51:
+case 52:
 YY_RULE_SETUP
-#line 551 "dhcp6_lexer.ll"
+#line 560 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3193,9 +3221,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 52:
+case 53:
 YY_RULE_SETUP
-#line 560 "dhcp6_lexer.ll"
+#line 569 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3206,9 +3234,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 53:
+case 54:
 YY_RULE_SETUP
-#line 570 "dhcp6_lexer.ll"
+#line 579 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3218,9 +3246,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 54:
+case 55:
 YY_RULE_SETUP
-#line 579 "dhcp6_lexer.ll"
+#line 588 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3230,9 +3258,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 55:
+case 56:
 YY_RULE_SETUP
-#line 588 "dhcp6_lexer.ll"
+#line 597 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3242,9 +3270,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 56:
+case 57:
 YY_RULE_SETUP
-#line 597 "dhcp6_lexer.ll"
+#line 606 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3254,9 +3282,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 57:
+case 58:
 YY_RULE_SETUP
-#line 606 "dhcp6_lexer.ll"
+#line 615 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGING:
@@ -3266,9 +3294,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 58:
+case 59:
 YY_RULE_SETUP
-#line 615 "dhcp6_lexer.ll"
+#line 624 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3278,9 +3306,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 59:
+case 60:
 YY_RULE_SETUP
-#line 624 "dhcp6_lexer.ll"
+#line 633 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3290,9 +3318,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 60:
+case 61:
 YY_RULE_SETUP
-#line 633 "dhcp6_lexer.ll"
+#line 642 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3302,9 +3330,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 61:
+case 62:
 YY_RULE_SETUP
-#line 642 "dhcp6_lexer.ll"
+#line 651 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3314,9 +3342,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 62:
+case 63:
 YY_RULE_SETUP
-#line 651 "dhcp6_lexer.ll"
+#line 660 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3327,9 +3355,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 63:
+case 64:
 YY_RULE_SETUP
-#line 661 "dhcp6_lexer.ll"
+#line 670 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3340,9 +3368,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 64:
+case 65:
 YY_RULE_SETUP
-#line 671 "dhcp6_lexer.ll"
+#line 680 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3353,9 +3381,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 65:
+case 66:
 YY_RULE_SETUP
-#line 681 "dhcp6_lexer.ll"
+#line 690 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3365,9 +3393,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 66:
+case 67:
 YY_RULE_SETUP
-#line 690 "dhcp6_lexer.ll"
+#line 699 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3377,9 +3405,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 68:
 YY_RULE_SETUP
-#line 699 "dhcp6_lexer.ll"
+#line 708 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3389,9 +3417,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 69:
 YY_RULE_SETUP
-#line 708 "dhcp6_lexer.ll"
+#line 717 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -3403,9 +3431,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 70:
 YY_RULE_SETUP
-#line 719 "dhcp6_lexer.ll"
+#line 728 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3416,9 +3444,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 729 "dhcp6_lexer.ll"
+#line 738 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3428,9 +3456,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 738 "dhcp6_lexer.ll"
+#line 747 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3441,9 +3469,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 73:
 YY_RULE_SETUP
-#line 748 "dhcp6_lexer.ll"
+#line 757 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3453,9 +3481,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 74:
 YY_RULE_SETUP
-#line 757 "dhcp6_lexer.ll"
+#line 766 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3465,9 +3493,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 75:
 YY_RULE_SETUP
-#line 766 "dhcp6_lexer.ll"
+#line 775 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3477,9 +3505,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 775 "dhcp6_lexer.ll"
+#line 784 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3489,9 +3517,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 784 "dhcp6_lexer.ll"
+#line 793 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3501,9 +3529,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 793 "dhcp6_lexer.ll"
+#line 802 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -3513,9 +3541,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 802 "dhcp6_lexer.ll"
+#line 811 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3525,9 +3553,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 812 "dhcp6_lexer.ll"
+#line 821 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3537,9 +3565,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 821 "dhcp6_lexer.ll"
+#line 830 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -3549,9 +3577,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 830 "dhcp6_lexer.ll"
+#line 839 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3561,9 +3589,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 839 "dhcp6_lexer.ll"
+#line 848 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3573,9 +3601,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 848 "dhcp6_lexer.ll"
+#line 857 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3585,9 +3613,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 857 "dhcp6_lexer.ll"
+#line 866 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -3597,9 +3625,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 866 "dhcp6_lexer.ll"
+#line 875 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3609,9 +3637,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 875 "dhcp6_lexer.ll"
+#line 884 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3621,9 +3649,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 884 "dhcp6_lexer.ll"
+#line 893 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3633,9 +3661,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 893 "dhcp6_lexer.ll"
+#line 902 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -3645,9 +3673,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 902 "dhcp6_lexer.ll"
+#line 911 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3657,9 +3685,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 911 "dhcp6_lexer.ll"
+#line 920 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3669,9 +3697,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 920 "dhcp6_lexer.ll"
+#line 929 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3681,9 +3709,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 929 "dhcp6_lexer.ll"
+#line 938 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3693,9 +3721,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 94:
 YY_RULE_SETUP
-#line 938 "dhcp6_lexer.ll"
+#line 947 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -3705,9 +3733,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 947 "dhcp6_lexer.ll"
+#line 956 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3717,9 +3745,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 956 "dhcp6_lexer.ll"
+#line 965 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3729,9 +3757,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 965 "dhcp6_lexer.ll"
+#line 974 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3741,9 +3769,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 974 "dhcp6_lexer.ll"
+#line 983 "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.
@@ -3842,65 +3870,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 98:
-/* rule 98 can match eol */
+case 99:
+/* rule 99 can match eol */
 YY_RULE_SETUP
-#line 1072 "dhcp6_lexer.ll"
+#line 1081 "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 99:
-/* rule 99 can match eol */
+case 100:
+/* rule 100 can match eol */
 YY_RULE_SETUP
-#line 1077 "dhcp6_lexer.ll"
+#line 1086 "dhcp6_lexer.ll"
 {
     // Bad string with a bad escape inside
     driver.error(driver.loc_, "Bad escape in " + std::string(parser6_text));
 }
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 1082 "dhcp6_lexer.ll"
+#line 1091 "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 101:
+case 102:
 YY_RULE_SETUP
-#line 1087 "dhcp6_lexer.ll"
+#line 1096 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 1088 "dhcp6_lexer.ll"
+#line 1097 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 1089 "dhcp6_lexer.ll"
+#line 1098 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 1090 "dhcp6_lexer.ll"
+#line 1099 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 1091 "dhcp6_lexer.ll"
+#line 1100 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 1092 "dhcp6_lexer.ll"
+#line 1101 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 1094 "dhcp6_lexer.ll"
+#line 1103 "dhcp6_lexer.ll"
 {
     // An integer was found.
     std::string tmp(parser6_text);
@@ -3919,9 +3947,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 1112 "dhcp6_lexer.ll"
+#line 1121 "dhcp6_lexer.ll"
 {
     // A floating point was found.
     std::string tmp(parser6_text);
@@ -3935,43 +3963,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 1125 "dhcp6_lexer.ll"
+#line 1134 "dhcp6_lexer.ll"
 {
     string tmp(parser6_text);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 1130 "dhcp6_lexer.ll"
+#line 1139 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 1134 "dhcp6_lexer.ll"
+#line 1143 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 1136 "dhcp6_lexer.ll"
+#line 1145 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 1138 "dhcp6_lexer.ll"
+#line 1147 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 1140 "dhcp6_lexer.ll"
+#line 1149 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(parser6_text));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1142 "dhcp6_lexer.ll"
+#line 1151 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -3995,12 +4023,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 115:
+case 116:
 YY_RULE_SETUP
-#line 1165 "dhcp6_lexer.ll"
+#line 1174 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4004 "dhcp6_lexer.cc"
+#line 4032 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4317,7 +4345,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 >= 807 )
+                       if ( yy_current_state >= 810 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
@@ -4350,11 +4378,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 >= 807 )
+               if ( yy_current_state >= 810 )
                        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 == 806);
+       yy_is_jam = (yy_current_state == 809);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5103,7 +5131,7 @@ void parser6_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 1165 "dhcp6_lexer.ll"
+#line 1174 "dhcp6_lexer.ll"
 
 
 
index 927eaaf0ca06395f6e8b6175ab96f191981ae77c..c61bcfce613d3fce254e510b26694e912bd3ebe4 100644 (file)
@@ -253,25 +253,25 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 123: // value
-      case 165: // db_type
-      case 344: // duid_type
+      case 124: // value
+      case 166: // db_type
+      case 345: // duid_type
         value.move< ElementPtr > (that.value);
         break;
 
-      case 109: // "boolean"
+      case 110: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 108: // "floating point"
+      case 109: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 107: // "integer"
+      case 108: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 106: // "constant string"
+      case 107: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -290,25 +290,25 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 123: // value
-      case 165: // db_type
-      case 344: // duid_type
+      case 124: // value
+      case 166: // db_type
+      case 345: // duid_type
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 109: // "boolean"
+      case 110: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 108: // "floating point"
+      case 109: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 107: // "integer"
+      case 108: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 106: // "constant string"
+      case 107: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -348,51 +348,51 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 106: // "constant string"
+            case 107: // "constant string"
 
-#line 198 "dhcp6_parser.yy" // lalr1.cc:636
+#line 199 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 356 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 107: // "integer"
+      case 108: // "integer"
 
-#line 198 "dhcp6_parser.yy" // lalr1.cc:636
+#line 199 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 363 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 108: // "floating point"
+      case 109: // "floating point"
 
-#line 198 "dhcp6_parser.yy" // lalr1.cc:636
+#line 199 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 370 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 109: // "boolean"
+      case 110: // "boolean"
 
-#line 198 "dhcp6_parser.yy" // lalr1.cc:636
+#line 199 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 377 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 123: // value
+      case 124: // value
 
-#line 198 "dhcp6_parser.yy" // lalr1.cc:636
+#line 199 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 384 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 165: // db_type
+      case 166: // db_type
 
-#line 198 "dhcp6_parser.yy" // lalr1.cc:636
+#line 199 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 391 "dhcp6_parser.cc" // lalr1.cc:636
         break;
 
-      case 344: // duid_type
+      case 345: // duid_type
 
-#line 198 "dhcp6_parser.yy" // lalr1.cc:636
+#line 199 "dhcp6_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 398 "dhcp6_parser.cc" // lalr1.cc:636
         break;
@@ -594,25 +594,25 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 123: // value
-      case 165: // db_type
-      case 344: // duid_type
+      case 124: // value
+      case 166: // db_type
+      case 345: // duid_type
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 109: // "boolean"
+      case 110: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 108: // "floating point"
+      case 109: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 107: // "integer"
+      case 108: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 106: // "constant string"
+      case 107: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -634,115 +634,115 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 207 "dhcp6_parser.yy" // lalr1.cc:859
+#line 208 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 640 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 208 "dhcp6_parser.yy" // lalr1.cc:859
+#line 209 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 646 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 209 "dhcp6_parser.yy" // lalr1.cc:859
+#line 210 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP6; }
 #line 652 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 210 "dhcp6_parser.yy" // lalr1.cc:859
+#line 211 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 658 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 211 "dhcp6_parser.yy" // lalr1.cc:859
+#line 212 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET6; }
 #line 664 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 212 "dhcp6_parser.yy" // lalr1.cc:859
+#line 213 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 670 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 213 "dhcp6_parser.yy" // lalr1.cc:859
+#line 214 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.PD_POOLS; }
 #line 676 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 214 "dhcp6_parser.yy" // lalr1.cc:859
+#line 215 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 682 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 215 "dhcp6_parser.yy" // lalr1.cc:859
+#line 216 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 688 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 216 "dhcp6_parser.yy" // lalr1.cc:859
+#line 217 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 694 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 217 "dhcp6_parser.yy" // lalr1.cc:859
+#line 218 "dhcp6_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 700 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 225 "dhcp6_parser.yy" // lalr1.cc:859
+#line 226 "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 706 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 25:
-#line 226 "dhcp6_parser.yy" // lalr1.cc:859
+#line 227 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 712 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 227 "dhcp6_parser.yy" // lalr1.cc:859
+#line 228 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 718 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 228 "dhcp6_parser.yy" // lalr1.cc:859
+#line 229 "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 724 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 229 "dhcp6_parser.yy" // lalr1.cc:859
+#line 230 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 730 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 230 "dhcp6_parser.yy" // lalr1.cc:859
+#line 231 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 736 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 30:
-#line 231 "dhcp6_parser.yy" // lalr1.cc:859
+#line 232 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 742 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 31:
-#line 234 "dhcp6_parser.yy" // lalr1.cc:859
+#line 235 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -751,7 +751,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 32:
-#line 239 "dhcp6_parser.yy" // lalr1.cc:859
+#line 240 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -762,7 +762,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 33:
-#line 244 "dhcp6_parser.yy" // lalr1.cc:859
+#line 245 "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
@@ -772,7 +772,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 36:
-#line 255 "dhcp6_parser.yy" // lalr1.cc:859
+#line 256 "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 > ());
@@ -781,7 +781,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 37:
-#line 259 "dhcp6_parser.yy" // lalr1.cc:859
+#line 260 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -791,7 +791,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 38:
-#line 266 "dhcp6_parser.yy" // lalr1.cc:859
+#line 267 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -800,7 +800,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 39:
-#line 269 "dhcp6_parser.yy" // lalr1.cc:859
+#line 270 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -808,7 +808,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 274 "dhcp6_parser.yy" // lalr1.cc:859
+#line 275 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
@@ -816,7 +816,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 41:
-#line 276 "dhcp6_parser.yy" // lalr1.cc:859
+#line 277 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -825,7 +825,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44:
-#line 285 "dhcp6_parser.yy" // lalr1.cc:859
+#line 286 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -834,7 +834,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 289 "dhcp6_parser.yy" // lalr1.cc:859
+#line 290 "dhcp6_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -843,7 +843,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 300 "dhcp6_parser.yy" // lalr1.cc:859
+#line 301 "dhcp6_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -854,7 +854,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 47:
-#line 310 "dhcp6_parser.yy" // lalr1.cc:859
+#line 311 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -865,7 +865,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 48:
-#line 315 "dhcp6_parser.yy" // lalr1.cc:859
+#line 316 "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
@@ -875,7 +875,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 56:
-#line 334 "dhcp6_parser.yy" // lalr1.cc:859
+#line 335 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -888,7 +888,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57:
-#line 341 "dhcp6_parser.yy" // lalr1.cc:859
+#line 342 "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
@@ -900,7 +900,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58:
-#line 351 "dhcp6_parser.yy" // lalr1.cc:859
+#line 352 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -910,7 +910,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59:
-#line 355 "dhcp6_parser.yy" // lalr1.cc:859
+#line 356 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -918,7 +918,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 84:
-#line 389 "dhcp6_parser.yy" // lalr1.cc:859
+#line 390 "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);
@@ -927,7 +927,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 85:
-#line 394 "dhcp6_parser.yy" // lalr1.cc:859
+#line 395 "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);
@@ -936,7 +936,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 86:
-#line 399 "dhcp6_parser.yy" // lalr1.cc:859
+#line 400 "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);
@@ -945,7 +945,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 87:
-#line 404 "dhcp6_parser.yy" // lalr1.cc:859
+#line 405 "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);
@@ -954,7 +954,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 88:
-#line 409 "dhcp6_parser.yy" // lalr1.cc:859
+#line 410 "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);
@@ -963,7 +963,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 89:
-#line 414 "dhcp6_parser.yy" // lalr1.cc:859
+#line 415 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
@@ -974,7 +974,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 90:
-#line 419 "dhcp6_parser.yy" // lalr1.cc:859
+#line 420 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -983,7 +983,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 91:
-#line 424 "dhcp6_parser.yy" // lalr1.cc:859
+#line 425 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -993,7 +993,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 92:
-#line 428 "dhcp6_parser.yy" // lalr1.cc:859
+#line 429 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -1001,7 +1001,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 93:
-#line 432 "dhcp6_parser.yy" // lalr1.cc:859
+#line 433 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
@@ -1012,7 +1012,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 94:
-#line 437 "dhcp6_parser.yy" // lalr1.cc:859
+#line 438 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1021,7 +1021,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 95:
-#line 442 "dhcp6_parser.yy" // lalr1.cc:859
+#line 443 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
@@ -1032,7 +1032,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 96:
-#line 447 "dhcp6_parser.yy" // lalr1.cc:859
+#line 448 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1041,7 +1041,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 97:
-#line 452 "dhcp6_parser.yy" // lalr1.cc:859
+#line 453 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
@@ -1052,7 +1052,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 98:
-#line 457 "dhcp6_parser.yy" // lalr1.cc:859
+#line 458 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1061,7 +1061,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 111:
-#line 478 "dhcp6_parser.yy" // lalr1.cc:859
+#line 479 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
@@ -1069,7 +1069,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 112:
-#line 480 "dhcp6_parser.yy" // lalr1.cc:859
+#line 481 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1078,370 +1078,376 @@ namespace isc { namespace dhcp {
     break;
 
   case 113:
-#line 485 "dhcp6_parser.yy" // lalr1.cc:859
+#line 486 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
 #line 1084 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 114:
-#line 486 "dhcp6_parser.yy" // lalr1.cc:859
+#line 487 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
 #line 1090 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 115:
-#line 487 "dhcp6_parser.yy" // lalr1.cc:859
+#line 488 "dhcp6_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
 #line 1096 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 116:
-#line 490 "dhcp6_parser.yy" // lalr1.cc:859
+#line 489 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
+#line 1102 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 117:
+#line 492 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1104 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1110 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 117:
-#line 492 "dhcp6_parser.yy" // lalr1.cc:859
+  case 118:
+#line 494 "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 1114 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1120 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 118:
-#line 498 "dhcp6_parser.yy" // lalr1.cc:859
+  case 119:
+#line 500 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1122 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1128 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 119:
-#line 500 "dhcp6_parser.yy" // lalr1.cc:859
+  case 120:
+#line 502 "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 1132 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1138 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 120:
-#line 506 "dhcp6_parser.yy" // lalr1.cc:859
+  case 121:
+#line 508 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1140 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1146 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 121:
-#line 508 "dhcp6_parser.yy" // lalr1.cc:859
+  case 122:
+#line 510 "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 1150 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1156 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 122:
-#line 514 "dhcp6_parser.yy" // lalr1.cc:859
+  case 123:
+#line 516 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1158 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1164 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 123:
-#line 516 "dhcp6_parser.yy" // lalr1.cc:859
+  case 124:
+#line 518 "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 1168 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1174 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 124:
-#line 522 "dhcp6_parser.yy" // lalr1.cc:859
+  case 125:
+#line 524 "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 1177 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1183 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 125:
-#line 527 "dhcp6_parser.yy" // lalr1.cc:859
+  case 126:
+#line 529 "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 1186 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1192 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 126:
-#line 532 "dhcp6_parser.yy" // lalr1.cc:859
+  case 127:
+#line 534 "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 1195 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1201 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 127:
-#line 537 "dhcp6_parser.yy" // lalr1.cc:859
+  case 128:
+#line 539 "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("connect-timeout", n);
 }
-#line 1204 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1210 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 128:
-#line 542 "dhcp6_parser.yy" // lalr1.cc:859
+  case 129:
+#line 544 "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 1215 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1221 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 129:
-#line 547 "dhcp6_parser.yy" // lalr1.cc:859
+  case 130:
+#line 549 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1224 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1230 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 134:
-#line 560 "dhcp6_parser.yy" // lalr1.cc:859
+  case 135:
+#line 562 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1233 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1239 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 135:
-#line 565 "dhcp6_parser.yy" // lalr1.cc:859
+  case 136:
+#line 567 "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 1242 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1248 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 136:
-#line 570 "dhcp6_parser.yy" // lalr1.cc:859
+  case 137:
+#line 572 "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 1253 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1259 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 137:
-#line 575 "dhcp6_parser.yy" // lalr1.cc:859
+  case 138:
+#line 577 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1262 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1268 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 142:
-#line 588 "dhcp6_parser.yy" // lalr1.cc:859
+  case 143:
+#line 590 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1271 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1277 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 143:
-#line 593 "dhcp6_parser.yy" // lalr1.cc:859
+  case 144:
+#line 595 "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 1282 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1288 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 144:
-#line 598 "dhcp6_parser.yy" // lalr1.cc:859
+  case 145:
+#line 600 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1291 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1297 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 145:
-#line 603 "dhcp6_parser.yy" // lalr1.cc:859
+  case 146:
+#line 605 "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 1302 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1308 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 146:
-#line 608 "dhcp6_parser.yy" // lalr1.cc:859
+  case 147:
+#line 610 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1311 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1317 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 151:
-#line 621 "dhcp6_parser.yy" // lalr1.cc:859
+  case 152:
+#line 623 "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 1321 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1327 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 152:
-#line 625 "dhcp6_parser.yy" // lalr1.cc:859
+  case 153:
+#line 627 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1329 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1335 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 153:
-#line 629 "dhcp6_parser.yy" // lalr1.cc:859
+  case 154:
+#line 631 "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 1339 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1345 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 154:
-#line 633 "dhcp6_parser.yy" // lalr1.cc:859
+  case 155:
+#line 635 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1347 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1353 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 160:
-#line 646 "dhcp6_parser.yy" // lalr1.cc:859
+  case 161:
+#line 648 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1355 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1361 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 161:
-#line 648 "dhcp6_parser.yy" // lalr1.cc:859
+  case 162:
+#line 650 "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 1365 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1371 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 162:
-#line 654 "dhcp6_parser.yy" // lalr1.cc:859
+  case 163:
+#line 656 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1373 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1379 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 163:
-#line 656 "dhcp6_parser.yy" // lalr1.cc:859
+  case 164:
+#line 658 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 1382 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1388 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 164:
-#line 662 "dhcp6_parser.yy" // lalr1.cc:859
+  case 165:
+#line 664 "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 1393 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1399 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 165:
-#line 667 "dhcp6_parser.yy" // lalr1.cc:859
+  case 166:
+#line 669 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1402 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1408 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 168:
-#line 679 "dhcp6_parser.yy" // lalr1.cc:859
+  case 169:
+#line 681 "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 1411 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1417 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 169:
-#line 687 "dhcp6_parser.yy" // lalr1.cc:859
+  case 170:
+#line 689 "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 1422 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1428 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 170:
-#line 692 "dhcp6_parser.yy" // lalr1.cc:859
+  case 171:
+#line 694 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1431 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1437 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 175:
-#line 712 "dhcp6_parser.yy" // lalr1.cc:859
+  case 176:
+#line 714 "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 1441 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1447 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 176:
-#line 716 "dhcp6_parser.yy" // lalr1.cc:859
+  case 177:
+#line 718 "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.
@@ -1460,1183 +1466,1183 @@ namespace isc { namespace dhcp {
     // }
     ctx.stack_.pop_back();
 }
-#line 1464 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1470 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 177:
-#line 735 "dhcp6_parser.yy" // lalr1.cc:859
+  case 178:
+#line 737 "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 1474 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1480 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 178:
-#line 739 "dhcp6_parser.yy" // lalr1.cc:859
+  case 179:
+#line 741 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1482 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1488 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 198:
-#line 768 "dhcp6_parser.yy" // lalr1.cc:859
+  case 199:
+#line 770 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1490 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1496 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 199:
-#line 770 "dhcp6_parser.yy" // lalr1.cc:859
+  case 200:
+#line 772 "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 1500 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1506 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 200:
-#line 776 "dhcp6_parser.yy" // lalr1.cc:859
+  case 201:
+#line 778 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1508 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1514 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 201:
-#line 778 "dhcp6_parser.yy" // lalr1.cc:859
+  case 202:
+#line 780 "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 1518 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1524 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 202:
-#line 784 "dhcp6_parser.yy" // lalr1.cc:859
+  case 203:
+#line 786 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1526 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1532 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 203:
-#line 786 "dhcp6_parser.yy" // lalr1.cc:859
+  case 204:
+#line 788 "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 1536 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1542 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 204:
-#line 792 "dhcp6_parser.yy" // lalr1.cc:859
+  case 205:
+#line 794 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
-#line 1544 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1550 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 205:
-#line 794 "dhcp6_parser.yy" // lalr1.cc:859
+  case 206:
+#line 796 "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 1554 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1560 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 206:
-#line 800 "dhcp6_parser.yy" // lalr1.cc:859
+  case 207:
+#line 802 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1562 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1568 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 207:
-#line 802 "dhcp6_parser.yy" // lalr1.cc:859
+  case 208:
+#line 804 "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 1572 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1578 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 208:
-#line 808 "dhcp6_parser.yy" // lalr1.cc:859
+  case 209:
+#line 810 "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 1581 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1587 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 209:
-#line 813 "dhcp6_parser.yy" // lalr1.cc:859
+  case 210:
+#line 815 "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 1590 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1596 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 210:
-#line 822 "dhcp6_parser.yy" // lalr1.cc:859
+  case 211:
+#line 824 "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 1601 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1607 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 211:
-#line 827 "dhcp6_parser.yy" // lalr1.cc:859
+  case 212:
+#line 829 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1610 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1616 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 216:
-#line 844 "dhcp6_parser.yy" // lalr1.cc:859
+  case 217:
+#line 846 "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 1620 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1626 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 217:
-#line 848 "dhcp6_parser.yy" // lalr1.cc:859
+  case 218:
+#line 850 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1628 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1634 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 218:
-#line 855 "dhcp6_parser.yy" // lalr1.cc:859
+  case 219:
+#line 857 "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 1638 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1644 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 219:
-#line 859 "dhcp6_parser.yy" // lalr1.cc:859
+  case 220:
+#line 861 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1646 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1652 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 233:
-#line 885 "dhcp6_parser.yy" // lalr1.cc:859
+  case 234:
+#line 887 "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 1655 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1661 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 235:
-#line 892 "dhcp6_parser.yy" // lalr1.cc:859
+  case 236:
+#line 894 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1663 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1669 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 236:
-#line 894 "dhcp6_parser.yy" // lalr1.cc:859
+  case 237:
+#line 896 "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 1673 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1679 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 237:
-#line 900 "dhcp6_parser.yy" // lalr1.cc:859
+  case 238:
+#line 902 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1681 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1687 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 238:
-#line 902 "dhcp6_parser.yy" // lalr1.cc:859
+  case 239:
+#line 904 "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 1691 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1697 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 239:
-#line 908 "dhcp6_parser.yy" // lalr1.cc:859
+  case 240:
+#line 910 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1699 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1705 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 240:
-#line 910 "dhcp6_parser.yy" // lalr1.cc:859
+  case 241:
+#line 912 "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 1709 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1715 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 242:
-#line 918 "dhcp6_parser.yy" // lalr1.cc:859
+  case 243:
+#line 920 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1717 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1723 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 243:
-#line 920 "dhcp6_parser.yy" // lalr1.cc:859
+  case 244:
+#line 922 "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 1727 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1733 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 244:
-#line 926 "dhcp6_parser.yy" // lalr1.cc:859
+  case 245:
+#line 928 "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 1736 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1742 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 245:
-#line 935 "dhcp6_parser.yy" // lalr1.cc:859
+  case 246:
+#line 937 "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 1747 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1753 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 246:
-#line 940 "dhcp6_parser.yy" // lalr1.cc:859
+  case 247:
+#line 942 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1756 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1762 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 251:
-#line 959 "dhcp6_parser.yy" // lalr1.cc:859
+  case 252:
+#line 961 "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 1766 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1772 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 252:
-#line 963 "dhcp6_parser.yy" // lalr1.cc:859
+  case 253:
+#line 965 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1774 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1780 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 253:
-#line 970 "dhcp6_parser.yy" // lalr1.cc:859
+  case 254:
+#line 972 "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 1784 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1790 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 254:
-#line 974 "dhcp6_parser.yy" // lalr1.cc:859
+  case 255:
+#line 976 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1792 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1798 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 266:
-#line 1003 "dhcp6_parser.yy" // lalr1.cc:859
+  case 267:
+#line 1005 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1800 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1806 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 267:
-#line 1005 "dhcp6_parser.yy" // lalr1.cc:859
+  case 268:
+#line 1007 "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 1810 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1816 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 270:
-#line 1015 "dhcp6_parser.yy" // lalr1.cc:859
+  case 271:
+#line 1017 "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 1819 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1825 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 271:
-#line 1023 "dhcp6_parser.yy" // lalr1.cc:859
+  case 272:
+#line 1025 "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 1830 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1836 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 272:
-#line 1028 "dhcp6_parser.yy" // lalr1.cc:859
+  case 273:
+#line 1030 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1839 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1845 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 277:
-#line 1043 "dhcp6_parser.yy" // lalr1.cc:859
+  case 278:
+#line 1045 "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 1849 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1855 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 278:
-#line 1047 "dhcp6_parser.yy" // lalr1.cc:859
+  case 279:
+#line 1049 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1857 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1863 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 279:
-#line 1051 "dhcp6_parser.yy" // lalr1.cc:859
+  case 280:
+#line 1053 "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 1867 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1873 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1055 "dhcp6_parser.yy" // lalr1.cc:859
+  case 281:
+#line 1057 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1875 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1881 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 286:
-#line 1068 "dhcp6_parser.yy" // lalr1.cc:859
+  case 287:
+#line 1070 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1883 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1889 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 287:
-#line 1070 "dhcp6_parser.yy" // lalr1.cc:859
+  case 288:
+#line 1072 "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 1893 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1899 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 288:
-#line 1079 "dhcp6_parser.yy" // lalr1.cc:859
+  case 289:
+#line 1081 "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 1904 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1910 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 289:
-#line 1084 "dhcp6_parser.yy" // lalr1.cc:859
+  case 290:
+#line 1086 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1913 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1919 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 294:
-#line 1099 "dhcp6_parser.yy" // lalr1.cc:859
+  case 295:
+#line 1101 "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 1923 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1929 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 295:
-#line 1103 "dhcp6_parser.yy" // lalr1.cc:859
+  case 296:
+#line 1105 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 1931 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1937 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 296:
-#line 1107 "dhcp6_parser.yy" // lalr1.cc:859
+  case 297:
+#line 1109 "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 1941 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1947 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 297:
-#line 1111 "dhcp6_parser.yy" // lalr1.cc:859
+  case 298:
+#line 1113 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 1949 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1955 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 307:
-#line 1128 "dhcp6_parser.yy" // lalr1.cc:859
+  case 308:
+#line 1130 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1957 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1963 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 308:
-#line 1130 "dhcp6_parser.yy" // lalr1.cc:859
+  case 309:
+#line 1132 "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 1967 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1973 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 309:
-#line 1136 "dhcp6_parser.yy" // lalr1.cc:859
+  case 310:
+#line 1138 "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 1976 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1982 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 310:
-#line 1141 "dhcp6_parser.yy" // lalr1.cc:859
+  case 311:
+#line 1143 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1984 "dhcp6_parser.cc" // lalr1.cc:859
+#line 1990 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 311:
-#line 1143 "dhcp6_parser.yy" // lalr1.cc:859
+  case 312:
+#line 1145 "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 1994 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2000 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 312:
-#line 1149 "dhcp6_parser.yy" // lalr1.cc:859
+  case 313:
+#line 1151 "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 2003 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2009 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 313:
-#line 1154 "dhcp6_parser.yy" // lalr1.cc:859
+  case 314:
+#line 1156 "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 2012 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2018 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 314:
-#line 1162 "dhcp6_parser.yy" // lalr1.cc:859
+  case 315:
+#line 1164 "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 2023 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2029 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 315:
-#line 1167 "dhcp6_parser.yy" // lalr1.cc:859
+  case 316:
+#line 1169 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2032 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2038 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 320:
-#line 1180 "dhcp6_parser.yy" // lalr1.cc:859
+  case 321:
+#line 1182 "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 2042 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2048 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 321:
-#line 1184 "dhcp6_parser.yy" // lalr1.cc:859
+  case 322:
+#line 1186 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2050 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2056 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 322:
-#line 1188 "dhcp6_parser.yy" // lalr1.cc:859
+  case 323:
+#line 1190 "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 2060 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2066 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 323:
-#line 1192 "dhcp6_parser.yy" // lalr1.cc:859
+  case 324:
+#line 1194 "dhcp6_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
-#line 2068 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2074 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 336:
-#line 1215 "dhcp6_parser.yy" // lalr1.cc:859
+  case 337:
+#line 1217 "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 2079 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2085 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 337:
-#line 1220 "dhcp6_parser.yy" // lalr1.cc:859
+  case 338:
+#line 1222 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2088 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2094 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 338:
-#line 1225 "dhcp6_parser.yy" // lalr1.cc:859
+  case 339:
+#line 1227 "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 2099 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2105 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 339:
-#line 1230 "dhcp6_parser.yy" // lalr1.cc:859
+  case 340:
+#line 1232 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2108 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2114 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 340:
-#line 1235 "dhcp6_parser.yy" // lalr1.cc:859
+  case 341:
+#line 1237 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2116 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2122 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 341:
-#line 1237 "dhcp6_parser.yy" // lalr1.cc:859
+  case 342:
+#line 1239 "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 2126 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2132 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 342:
-#line 1243 "dhcp6_parser.yy" // lalr1.cc:859
+  case 343:
+#line 1245 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2134 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2140 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 343:
-#line 1245 "dhcp6_parser.yy" // lalr1.cc:859
+  case 344:
+#line 1247 "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 2144 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2150 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 344:
-#line 1251 "dhcp6_parser.yy" // lalr1.cc:859
+  case 345:
+#line 1253 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2152 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2158 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 345:
-#line 1253 "dhcp6_parser.yy" // lalr1.cc:859
+  case 346:
+#line 1255 "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 2162 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2168 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 346:
-#line 1259 "dhcp6_parser.yy" // lalr1.cc:859
+  case 347:
+#line 1261 "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 2173 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2179 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 347:
-#line 1264 "dhcp6_parser.yy" // lalr1.cc:859
+  case 348:
+#line 1266 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2182 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2188 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 348:
-#line 1272 "dhcp6_parser.yy" // lalr1.cc:859
+  case 349:
+#line 1274 "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 2193 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2199 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 349:
-#line 1277 "dhcp6_parser.yy" // lalr1.cc:859
+  case 350:
+#line 1279 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2202 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2208 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 350:
-#line 1282 "dhcp6_parser.yy" // lalr1.cc:859
+  case 351:
+#line 1284 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2210 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2216 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 351:
-#line 1284 "dhcp6_parser.yy" // lalr1.cc:859
+  case 352:
+#line 1286 "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 2220 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2226 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 352:
-#line 1293 "dhcp6_parser.yy" // lalr1.cc:859
+  case 353:
+#line 1295 "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 2231 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2237 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 353:
-#line 1298 "dhcp6_parser.yy" // lalr1.cc:859
+  case 354:
+#line 1300 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2240 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2246 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 356:
-#line 1307 "dhcp6_parser.yy" // lalr1.cc:859
+  case 357:
+#line 1309 "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 2250 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2256 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 357:
-#line 1311 "dhcp6_parser.yy" // lalr1.cc:859
+  case 358:
+#line 1313 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2258 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2264 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 367:
-#line 1331 "dhcp6_parser.yy" // lalr1.cc:859
+  case 368:
+#line 1333 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2266 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2272 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 368:
-#line 1333 "dhcp6_parser.yy" // lalr1.cc:859
+  case 369:
+#line 1335 "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 2276 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2282 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 369:
-#line 1342 "dhcp6_parser.yy" // lalr1.cc:859
+  case 370:
+#line 1344 "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 2287 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2293 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 370:
-#line 1347 "dhcp6_parser.yy" // lalr1.cc:859
+  case 371:
+#line 1349 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2296 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2302 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 380:
-#line 1365 "dhcp6_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1367 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 2304 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2310 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 381:
-#line 1367 "dhcp6_parser.yy" // lalr1.cc:859
+  case 382:
+#line 1369 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2313 "dhcp6_parser.cc" // lalr1.cc:859
-    break;
-
-  case 382:
-#line 1372 "dhcp6_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
 #line 2319 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 383:
-#line 1373 "dhcp6_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
+#line 1374 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
 #line 2325 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 384:
-#line 1374 "dhcp6_parser.yy" // lalr1.cc:859
-    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
+#line 1375 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
 #line 2331 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
   case 385:
-#line 1377 "dhcp6_parser.yy" // lalr1.cc:859
+#line 1376 "dhcp6_parser.yy" // lalr1.cc:859
+    { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
+#line 2337 "dhcp6_parser.cc" // lalr1.cc:859
+    break;
+
+  case 386:
+#line 1379 "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 2340 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2346 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1382 "dhcp6_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1384 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2348 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2354 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1384 "dhcp6_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1386 "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 2358 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2364 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1390 "dhcp6_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1392 "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 2367 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2373 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1395 "dhcp6_parser.yy" // lalr1.cc:859
+  case 390:
+#line 1397 "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 2376 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2382 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 390:
-#line 1402 "dhcp6_parser.yy" // lalr1.cc:859
+  case 391:
+#line 1404 "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 2385 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2391 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 391:
-#line 1409 "dhcp6_parser.yy" // lalr1.cc:859
+  case 392:
+#line 1411 "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 2396 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2402 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1414 "dhcp6_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1416 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2405 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2411 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 397:
-#line 1427 "dhcp6_parser.yy" // lalr1.cc:859
+  case 398:
+#line 1429 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2413 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2419 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 398:
-#line 1429 "dhcp6_parser.yy" // lalr1.cc:859
+  case 399:
+#line 1431 "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 2423 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2429 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 399:
-#line 1435 "dhcp6_parser.yy" // lalr1.cc:859
+  case 400:
+#line 1437 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2431 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2437 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 400:
-#line 1437 "dhcp6_parser.yy" // lalr1.cc:859
+  case 401:
+#line 1439 "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 2441 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2447 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 401:
-#line 1445 "dhcp6_parser.yy" // lalr1.cc:859
+  case 402:
+#line 1447 "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 2452 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2458 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 402:
-#line 1450 "dhcp6_parser.yy" // lalr1.cc:859
+  case 403:
+#line 1452 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2461 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2467 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 403:
-#line 1457 "dhcp6_parser.yy" // lalr1.cc:859
+  case 404:
+#line 1459 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2469 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2475 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 404:
-#line 1459 "dhcp6_parser.yy" // lalr1.cc:859
+  case 405:
+#line 1461 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2478 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2484 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 405:
-#line 1464 "dhcp6_parser.yy" // lalr1.cc:859
+  case 406:
+#line 1466 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2486 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2492 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 406:
-#line 1466 "dhcp6_parser.yy" // lalr1.cc:859
+  case 407:
+#line 1468 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
 }
-#line 2495 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2501 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 407:
-#line 1476 "dhcp6_parser.yy" // lalr1.cc:859
+  case 408:
+#line 1478 "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 2506 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2512 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 408:
-#line 1481 "dhcp6_parser.yy" // lalr1.cc:859
+  case 409:
+#line 1483 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2515 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2521 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 412:
-#line 1498 "dhcp6_parser.yy" // lalr1.cc:859
+  case 413:
+#line 1500 "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 2526 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2532 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 413:
-#line 1503 "dhcp6_parser.yy" // lalr1.cc:859
+  case 414:
+#line 1505 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2535 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2541 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 416:
-#line 1515 "dhcp6_parser.yy" // lalr1.cc:859
+  case 417:
+#line 1517 "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 2545 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2551 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 417:
-#line 1519 "dhcp6_parser.yy" // lalr1.cc:859
+  case 418:
+#line 1521 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2553 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2559 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 425:
-#line 1534 "dhcp6_parser.yy" // lalr1.cc:859
+  case 426:
+#line 1536 "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 2562 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2568 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 426:
-#line 1538 "dhcp6_parser.yy" // lalr1.cc:859
+  case 427:
+#line 1540 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2570 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2576 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 427:
-#line 1540 "dhcp6_parser.yy" // lalr1.cc:859
+  case 428:
+#line 1542 "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 2580 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2586 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 428:
-#line 1546 "dhcp6_parser.yy" // lalr1.cc:859
+  case 429:
+#line 1548 "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 2591 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2597 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 429:
-#line 1551 "dhcp6_parser.yy" // lalr1.cc:859
+  case 430:
+#line 1553 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2600 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2606 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 432:
-#line 1560 "dhcp6_parser.yy" // lalr1.cc:859
+  case 433:
+#line 1562 "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 2610 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2616 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 433:
-#line 1564 "dhcp6_parser.yy" // lalr1.cc:859
+  case 434:
+#line 1566 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
-#line 2618 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2624 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 436:
-#line 1572 "dhcp6_parser.yy" // lalr1.cc:859
+  case 437:
+#line 1574 "dhcp6_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2626 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2632 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
-  case 437:
-#line 1574 "dhcp6_parser.yy" // lalr1.cc:859
+  case 438:
+#line 1576 "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 2636 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2642 "dhcp6_parser.cc" // lalr1.cc:859
     break;
 
 
-#line 2640 "dhcp6_parser.cc" // lalr1.cc:859
+#line 2646 "dhcp6_parser.cc" // lalr1.cc:859
             default:
               break;
             }
@@ -2898,79 +2904,79 @@ namespace isc { namespace dhcp {
   const short int
   Dhcp6Parser::yypact_[] =
   {
-     181,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,    27,    21,    29,    61,    63,    74,    84,    92,
-     136,   138,   162,   219,  -427,  -427,  -427,  -427,  -427,  -427,
+     180,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,    56,    21,    51,    83,    95,   104,   158,   205,
+     213,   214,   216,   217,  -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,    -5,    11,    20,
-     159,    12,   -11,    38,    83,    73,   117,   -14,  -427,   178,
-     197,   223,   220,   226,  -427,  -427,  -427,  -427,   227,  -427,
-      34,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   228,
-     229,   231,   232,   234,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,  -427,  -427,   235,  -427,  -427,  -427,   153,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,    21,    72,    11,    20,
+     178,    12,     1,    99,    76,    47,   125,    25,  -427,   219,
+     223,   224,   221,   228,  -427,  -427,  -427,  -427,   229,  -427,
+      19,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   231,
+     232,   234,   235,   236,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,   237,  -427,  -427,  -427,    68,  -427,
     -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
     -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,   233,  -427,  -427,  -427,  -427,  -427,  -427,   236,
-     239,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-     154,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,  -427,  -427,  -427,  -427,  -427,   156,  -427,  -427,
-    -427,   242,  -427,   245,   246,  -427,  -427,   157,  -427,  -427,
+    -427,  -427,   238,  -427,  -427,  -427,  -427,  -427,  -427,   239,
+     245,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+      93,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,   106,  -427,  -427,
+    -427,   246,  -427,   253,   254,  -427,  -427,   109,  -427,  -427,
     -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,   249,   255,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,  -427,   256,  -427,  -427,  -427,   259,  -427,  -427,
-     257,   261,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,  -427,   263,  -427,  -427,  -427,  -427,   260,   266,
-    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   160,
-    -427,  -427,  -427,  -427,    21,    21,  -427,   165,   268,   270,
-     283,   284,  -427,    11,  -427,   285,   286,   287,   163,   185,
-     186,   187,   188,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   199,   303,   304,    20,  -427,   305,  -427,
-      98,   306,   307,   308,   309,   310,   209,   210,   311,   313,
-     314,   316,    12,  -427,   317,   -11,  -427,   318,   216,   320,
-     218,   221,    38,  -427,   322,   323,   325,   326,   327,   328,
-    -427,    83,   329,   330,   237,   331,   332,   335,   238,  -427,
-      73,   336,   240,  -427,   117,   337,   338,   -28,  -427,  -427,
-    -427,   339,   341,   343,    21,    21,  -427,   346,   347,   348,
-    -427,  -427,  -427,  -427,  -427,   340,   351,   352,   355,   356,
-     357,   358,   359,   360,   361,  -427,   364,   365,  -427,   356,
-    -427,  -427,  -427,  -427,   366,   362,  -427,  -427,  -427,   368,
-     370,   271,   272,   273,  -427,  -427,   274,   275,   377,   376,
-    -427,   279,  -427,   280,  -427,   281,  -427,  -427,  -427,   356,
-     356,   356,   282,   288,   289,  -427,   290,   291,  -427,   302,
-     312,   315,  -427,  -427,   319,  -427,  -427,   321,    21,  -427,
-      21,    20,   258,  -427,  -427,   159,   100,   100,   382,   383,
-     384,   -10,  -427,  -427,   155,    28,   385,   324,    60,   140,
-      -5,  -427,   389,  -427,    98,   391,   392,  -427,  -427,  -427,
-    -427,  -427,   393,   333,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,   252,   260,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,   261,  -427,  -427,  -427,   263,  -427,  -427,
+     256,   265,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,   266,  -427,  -427,  -427,  -427,   264,   268,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   131,
+    -427,  -427,  -427,  -427,    21,    21,  -427,   120,   270,   283,
+     284,   285,  -427,    11,  -427,   286,   287,   288,   161,   187,
+     188,   189,   190,   289,   290,   295,   296,   297,   298,   299,
+     300,   301,   302,   199,   304,   305,    20,  -427,   306,  -427,
+       9,   307,   308,   309,   310,   311,   208,   207,   314,   315,
+     316,   317,    12,  -427,   318,     1,  -427,   319,   218,   320,
+     220,   222,    99,  -427,   321,   323,   325,   327,   328,   329,
+    -427,    76,   330,   331,   233,   332,   335,   336,   240,  -427,
+      47,   338,   243,  -427,   125,   339,   340,    65,  -427,  -427,
+    -427,   341,   342,   347,    21,    21,  -427,   348,   349,   350,
+    -427,  -427,  -427,  -427,  -427,   343,   355,   356,   357,   358,
+     359,   360,   361,   364,   365,  -427,   366,   367,  -427,   358,
+    -427,  -427,  -427,  -427,   369,   344,  -427,  -427,  -427,   362,
+     363,   271,   272,   273,  -427,  -427,   274,   275,   370,   376,
+    -427,   278,  -427,   279,  -427,   280,  -427,  -427,  -427,   358,
+     358,   358,   281,   282,   291,  -427,   292,   293,  -427,   294,
+     303,   312,  -427,  -427,   313,  -427,  -427,   322,    21,  -427,
+      21,    20,   257,  -427,  -427,   178,   100,   100,   383,   384,
+     385,   -34,  -427,  -427,   -30,    31,   386,   324,    77,   133,
+      72,  -427,   390,  -427,     9,   388,   389,  -427,  -427,  -427,
+    -427,  -427,   395,   333,  -427,  -427,  -427,  -427,  -427,  -427,
     -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,   164,  -427,   167,  -427,  -427,   395,  -427,  -427,
-    -427,  -427,   397,   400,   401,   402,  -427,   170,  -427,  -427,
-    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   174,  -427,
-     403,   363,  -427,  -427,   404,   409,  -427,  -427,   408,   412,
+    -427,  -427,   147,  -427,   164,  -427,  -427,   396,  -427,  -427,
+    -427,  -427,   393,   401,   402,   403,  -427,   170,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   172,  -427,
+     406,   405,  -427,  -427,   408,   412,  -427,  -427,   410,   414,
     -427,  -427,  -427,    66,  -427,  -427,  -427,    21,  -427,  -427,
-      94,  -427,  -427,  -427,   105,  -427,   410,   414,  -427,   415,
-     177,  -427,  -427,  -427,   416,   418,   419,  -427,  -427,   184,
-    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   190,  -427,
-    -427,  -427,   191,   334,  -427,  -427,   420,   421,  -427,  -427,
-     422,   426,  -427,  -427,   425,   429,  -427,  -427,   399,  -427,
-     430,   258,  -427,  -427,   431,   432,   433,   434,   342,   345,
-     344,   349,   100,  -427,  -427,    12,  -427,   382,    73,  -427,
-     383,   117,  -427,   384,   -10,  -427,   427,   155,  -427,    28,
-    -427,   -14,  -427,   385,   350,   324,  -427,   435,   437,   353,
-     354,   367,    60,  -427,   438,   439,   140,  -427,  -427,  -427,
-     -11,  -427,   391,    38,  -427,   392,    83,  -427,   393,   440,
-    -427,   441,  -427,   119,   369,   371,   372,  -427,  -427,  -427,
-    -427,  -427,   193,  -427,   442,  -427,   446,  -427,  -427,  -427,
-    -427,  -427,   194,  -427,  -427,  -427,   142,   373,  -427,  -427,
-    -427,  -427,   374,   375,  -427,   200,  -427,   204,  -427,   447,
-    -427,   378,   451,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+      80,  -427,  -427,  -427,   163,  -427,   415,   419,  -427,   420,
+     174,  -427,  -427,  -427,   421,   422,   423,  -427,  -427,   183,
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   184,  -427,
+    -427,  -427,   185,   326,  -427,  -427,   417,   425,  -427,  -427,
+     424,   429,  -427,  -427,   428,   432,  -427,  -427,   430,  -427,
+     433,   257,  -427,  -427,   435,   436,   437,   438,   334,   337,
+     345,   346,   100,  -427,  -427,    12,  -427,   383,    47,  -427,
+     384,   125,  -427,   385,   -34,  -427,   440,   -30,  -427,    31,
+    -427,    25,  -427,   386,   351,   324,  -427,   439,   443,   352,
+     353,   354,    77,  -427,   444,   445,   133,  -427,  -427,  -427,
+       1,  -427,   388,    99,  -427,   389,    76,  -427,   395,   446,
+    -427,   404,  -427,   192,   368,   371,   372,  -427,  -427,  -427,
+    -427,  -427,   186,  -427,   448,  -427,   449,  -427,  -427,  -427,
+    -427,  -427,   193,  -427,  -427,  -427,    75,   373,  -427,  -427,
+    -427,  -427,   374,   375,  -427,   194,  -427,   195,  -427,   450,
+    -427,   377,   411,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
     -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,  -427,  -427,  -427,  -427,   180,  -427,    99,   451,
-    -427,  -427,   443,  -427,  -427,  -427,   206,  -427,  -427,  -427,
-    -427,  -427,   444,   379,   445,    99,  -427,   454,  -427,   381,
-    -427,   455,  -427,  -427,   207,  -427,   380,   455,  -427,  -427,
-     208,  -427,  -427,   459,   380,  -427,   386,  -427,  -427
+    -427,  -427,  -427,  -427,  -427,  -427,  -427,   210,  -427,    78,
+     411,  -427,  -427,   447,  -427,  -427,  -427,   196,  -427,  -427,
+    -427,  -427,  -427,   459,   378,   460,    78,  -427,   431,  -427,
+     380,  -427,   458,  -427,  -427,   211,  -427,   379,   458,  -427,
+    -427,   197,  -427,  -427,   462,   379,  -427,   381,  -427,  -427
   };
 
   const unsigned short int
@@ -2980,108 +2986,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,   177,    11,   279,    13,   296,    15,   322,    17,
-     218,    19,   253,    21,   153,    23,    42,    34,     0,     0,
-       0,     0,     0,     0,   324,   220,   255,     0,    44,     0,
-      43,     0,     0,    35,    56,   407,   403,   405,     0,    55,
+      91,     9,   178,    11,   280,    13,   297,    15,   323,    17,
+     219,    19,   254,    21,   154,    23,    42,    34,     0,     0,
+       0,     0,     0,     0,   325,   221,   256,     0,    44,     0,
+      43,     0,     0,    35,    56,   408,   404,   406,     0,    55,
        0,    49,    51,    53,    54,    52,    89,    95,    97,     0,
-       0,     0,     0,     0,   169,   210,   245,   128,   143,   136,
-     352,   145,   164,   369,     0,   391,   401,    83,     0,    60,
+       0,     0,     0,     0,   170,   211,   246,   129,   144,   137,
+     353,   146,   165,   370,     0,   392,   402,    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,   356,   271,   288,   198,   200,   202,     0,
-       0,   206,   204,   314,   348,   197,   181,   182,   183,   184,
-       0,   179,   188,   189,   190,   193,   195,   191,   192,   185,
-     186,   187,   194,   196,   286,   285,   284,     0,   281,   283,
-     307,     0,   310,     0,     0,   306,   303,     0,   298,   300,
-     301,   304,   305,   302,   346,   336,   338,   340,   342,   344,
-     335,   334,     0,   325,   326,   330,   331,   328,   332,   333,
-     329,   235,   122,     0,   239,   237,   242,     0,   231,   232,
-       0,   221,   222,   224,   234,   225,   226,   227,   241,   228,
-     229,   230,   266,     0,   264,   265,   268,   269,     0,   256,
-     257,   259,   260,   261,   262,   263,   160,   162,   157,     0,
-     155,   158,   159,    39,     0,     0,    33,     0,     0,     0,
+      82,    93,     0,   357,   272,   289,   199,   201,   203,     0,
+       0,   207,   205,   315,   349,   198,   182,   183,   184,   185,
+       0,   180,   189,   190,   191,   194,   196,   192,   193,   186,
+     187,   188,   195,   197,   287,   286,   285,     0,   282,   284,
+     308,     0,   311,     0,     0,   307,   304,     0,   299,   301,
+     302,   305,   306,   303,   347,   337,   339,   341,   343,   345,
+     336,   335,     0,   326,   327,   331,   332,   329,   333,   334,
+     330,   236,   123,     0,   240,   238,   243,     0,   232,   233,
+       0,   222,   223,   225,   235,   226,   227,   228,   242,   229,
+     230,   231,   267,     0,   265,   266,   269,   270,     0,   257,
+     258,   260,   261,   262,   263,   264,   161,   163,   158,     0,
+     156,   159,   160,    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,    59,     0,    92,
-     358,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   178,     0,     0,   280,     0,     0,     0,
-       0,     0,     0,   297,     0,     0,     0,     0,     0,     0,
-     323,     0,     0,     0,     0,     0,     0,     0,     0,   219,
-       0,     0,     0,   254,     0,     0,     0,     0,   154,    45,
+     359,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   179,     0,     0,   281,     0,     0,     0,
+       0,     0,     0,   298,     0,     0,     0,     0,     0,     0,
+     324,     0,     0,     0,     0,     0,     0,     0,     0,   220,
+       0,     0,     0,   255,     0,     0,     0,     0,   155,    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,   390,     0,     0,    61,     0,
-     367,   365,   366,   364,     0,   359,   360,   362,   363,     0,
-       0,     0,     0,     0,   208,   209,     0,     0,     0,     0,
-     180,     0,   282,     0,   309,     0,   312,   313,   299,     0,
-       0,     0,     0,     0,     0,   327,     0,     0,   233,     0,
-       0,     0,   244,   223,     0,   270,   258,     0,     0,   156,
-       0,     0,     0,   404,   406,     0,     0,     0,   171,   212,
-     247,     0,    40,   144,     0,     0,   147,     0,     0,     0,
-       0,    94,     0,   357,     0,   273,   290,   199,   201,   203,
-     207,   205,   316,     0,   287,   308,   311,   347,   337,   339,
-     341,   343,   345,   236,   123,   240,   238,   243,   267,   161,
-     163,    37,     0,   412,     0,   409,   411,     0,   111,   116,
-     118,   120,     0,     0,     0,     0,   110,     0,    99,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,     0,   175,
-       0,   172,   173,   216,     0,   213,   214,   251,     0,   248,
-     249,   134,   135,     0,   130,   132,   133,    42,   142,   140,
-       0,   138,   141,   354,     0,   151,     0,   148,   149,     0,
-       0,   166,   380,   386,     0,     0,     0,   379,   378,     0,
-     371,   373,   376,   374,   375,   377,   397,   399,     0,   393,
-     395,   396,     0,     0,   361,   277,     0,   274,   275,   294,
-       0,   291,   292,   320,     0,   317,   318,   350,     0,    57,
-       0,     0,   408,    90,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    96,    98,     0,   170,     0,   220,   211,
-       0,   255,   246,     0,     0,   129,     0,     0,   137,     0,
-     353,     0,   146,     0,     0,     0,   165,     0,     0,     0,
-       0,     0,     0,   370,     0,     0,     0,   392,   402,   368,
-       0,   272,     0,     0,   289,     0,   324,   315,     0,     0,
-     349,     0,   410,     0,     0,     0,     0,   124,   125,   126,
-     127,   100,     0,   174,     0,   215,     0,   250,   131,    41,
-     139,   355,     0,   150,   168,   167,     0,     0,   385,   388,
-     389,   372,     0,     0,   394,     0,   276,     0,   293,     0,
-     319,     0,     0,   113,   114,   115,   112,   117,   119,   121,
-     176,   217,   252,   152,   382,   383,   384,   381,   387,   398,
-     400,   278,   295,   321,   351,   416,     0,   414,     0,     0,
-     413,   428,     0,   426,   424,   420,     0,   418,   422,   423,
-     421,   415,     0,     0,     0,     0,   417,     0,   425,     0,
-     419,     0,   427,   432,     0,   430,     0,     0,   429,   436,
-       0,   434,   431,     0,     0,   433,     0,   435,   437
+       0,     0,     0,     0,     0,   391,     0,     0,    61,     0,
+     368,   366,   367,   365,     0,   360,   361,   363,   364,     0,
+       0,     0,     0,     0,   209,   210,     0,     0,     0,     0,
+     181,     0,   283,     0,   310,     0,   313,   314,   300,     0,
+       0,     0,     0,     0,     0,   328,     0,     0,   234,     0,
+       0,     0,   245,   224,     0,   271,   259,     0,     0,   157,
+       0,     0,     0,   405,   407,     0,     0,     0,   172,   213,
+     248,     0,    40,   145,     0,     0,   148,     0,     0,     0,
+       0,    94,     0,   358,     0,   274,   291,   200,   202,   204,
+     208,   206,   317,     0,   288,   309,   312,   348,   338,   340,
+     342,   344,   346,   237,   124,   241,   239,   244,   268,   162,
+     164,    37,     0,   413,     0,   410,   412,     0,   111,   117,
+     119,   121,     0,     0,     0,     0,   110,     0,    99,   101,
+     102,   103,   104,   105,   106,   107,   108,   109,     0,   176,
+       0,   173,   174,   217,     0,   214,   215,   252,     0,   249,
+     250,   135,   136,     0,   131,   133,   134,    42,   143,   141,
+       0,   139,   142,   355,     0,   152,     0,   149,   150,     0,
+       0,   167,   381,   387,     0,     0,     0,   380,   379,     0,
+     372,   374,   377,   375,   376,   378,   398,   400,     0,   394,
+     396,   397,     0,     0,   362,   278,     0,   275,   276,   295,
+       0,   292,   293,   321,     0,   318,   319,   351,     0,    57,
+       0,     0,   409,    90,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    96,    98,     0,   171,     0,   221,   212,
+       0,   256,   247,     0,     0,   130,     0,     0,   138,     0,
+     354,     0,   147,     0,     0,     0,   166,     0,     0,     0,
+       0,     0,     0,   371,     0,     0,     0,   393,   403,   369,
+       0,   273,     0,     0,   290,     0,   325,   316,     0,     0,
+     350,     0,   411,     0,     0,     0,     0,   125,   126,   127,
+     128,   100,     0,   175,     0,   216,     0,   251,   132,    41,
+     140,   356,     0,   151,   169,   168,     0,     0,   386,   389,
+     390,   373,     0,     0,   395,     0,   277,     0,   294,     0,
+     320,     0,     0,   113,   114,   115,   116,   112,   118,   120,
+     122,   177,   218,   253,   153,   383,   384,   385,   382,   388,
+     399,   401,   279,   296,   322,   352,   417,     0,   415,     0,
+       0,   414,   429,     0,   427,   425,   421,     0,   419,   423,
+     424,   422,   416,     0,     0,     0,     0,   418,     0,   426,
+       0,   420,     0,   428,   433,     0,   431,     0,     0,   430,
+     437,     0,   435,   432,     0,     0,   434,     0,   436,   438
   };
 
   const short int
   Dhcp6Parser::yypgoto_[] =
   {
     -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,  -427,     3,  -427,  -427,  -427,  -427,    15,  -427,
-    -427,  -330,  -427,   -43,  -427,   -58,  -427,  -427,  -427,   212,
-    -427,  -427,  -427,  -427,    55,   192,   -41,   -38,   -37,   -36,
-    -427,  -427,  -427,  -427,  -427,    52,  -427,  -427,  -427,  -427,
-    -427,    54,  -103,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,     3,  -427,  -427,  -427,  -427,    22,  -427,
+    -427,  -330,  -427,   -54,  -427,   -58,  -427,  -427,  -427,   215,
+    -427,  -427,  -427,  -427,    58,   191,   -41,   -38,   -37,   -36,
+    -427,  -427,  -427,  -427,  -427,    57,  -427,  -427,  -427,  -427,
+    -427,    54,   -99,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
     -427,  -427,   -65,  -427,  -426,  -427,  -427,  -427,  -427,  -427,
-    -427,  -112,  -406,  -427,  -427,  -427,  -427,  -114,  -427,  -427,
-    -427,  -427,  -427,  -427,  -427,  -117,  -427,  -427,  -427,  -109,
-     158,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -107,  -427,
-    -427,  -427,  -427,   -94,  -427,  -427,  -427,   -86,   198,  -427,
+    -427,  -110,  -406,  -427,  -427,  -427,  -427,  -111,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -116,  -427,  -427,  -427,  -108,
+     162,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -105,  -427,
+    -427,  -427,  -427,   -92,  -427,  -427,  -427,   -84,   200,  -427,
     -427,  -427,  -427,  -427,  -427,  -415,  -427,  -427,  -427,  -427,
-    -427,  -427,  -427,  -427,  -427,   -89,  -427,  -427,  -427,   -85,
-    -427,   175,  -427,   -51,  -427,  -427,  -427,  -427,  -427,   -49,
-    -427,  -427,  -427,  -427,  -427,   -50,  -427,  -427,  -427,   -87,
-    -427,  -427,  -427,   -84,  -427,   176,  -427,  -427,  -427,  -427,
-    -427,  -427,  -427,  -427,  -427,  -427,  -118,  -427,  -427,  -427,
-    -111,   203,  -427,  -427,  -427,  -427,  -427,  -427,  -113,  -427,
-    -427,  -427,  -110,   202,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,  -427,  -427,  -427,  -108,  -427,  -427,  -427,  -115,
-    -427,   195,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,   -87,  -427,  -427,  -427,   -83,
+    -427,   176,  -427,   -51,  -427,  -427,  -427,  -427,  -427,   -49,
+    -427,  -427,  -427,  -427,  -427,   -50,  -427,  -427,  -427,   -89,
+    -427,  -427,  -427,   -82,  -427,   173,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -427,  -114,  -427,  -427,  -427,
+    -109,   209,  -427,  -427,  -427,  -427,  -427,  -427,  -115,  -427,
+    -427,  -427,  -107,   201,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,  -427,  -113,  -427,  -427,  -427,  -106,
+    -427,   198,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
     -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,  -427,  -427,    71,  -427,  -427,  -427,  -427,  -427,
-    -427,   -93,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
-    -427,  -427,  -427,  -427,   -98,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,    74,  -427,  -427,  -427,  -427,  -427,
+    -427,  -100,  -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,
+    -427,  -427,  -427,  -427,   -95,  -427,  -427,  -427,  -427,  -427,
     -427,  -427,  -427,  -427,  -427,  -427,  -427,  -427,   -48,  -427,
-    -427,  -427,  -178,  -427,  -427,  -193,  -427,  -427,  -427,  -427,
-    -427,  -427,  -202,  -427,  -427,  -206,  -427
+    -427,  -427,  -178,  -427,  -427,  -191,  -427,  -427,  -427,  -427,
+    -427,  -427,  -200,  -427,  -427,  -206,  -427
   };
 
   const short int
@@ -3092,7 +3098,7 @@ namespace isc { namespace dhcp {
       56,   423,   507,    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,   477,   478,   479,   564,   666,   480,   565,   481,   566,
+     257,   477,   478,   479,   564,   667,   480,   565,   481,   566,
      482,   567,   209,   313,   484,   485,   486,   487,   118,   266,
      503,   504,   505,   506,   119,   268,   510,   511,   512,   120,
      267,   121,   270,   516,   517,   518,   591,    55,    67,   239,
@@ -3110,11 +3116,11 @@ namespace isc { namespace dhcp {
      193,   194,   195,   305,   196,   306,   197,   307,   198,   308,
      199,   309,   200,   304,   163,   291,   558,   619,   126,   269,
      514,   280,   364,   365,   366,   367,   368,   432,   127,   272,
-     529,   530,   531,   597,   677,   532,   533,   598,   534,   535,
+     529,   530,   531,   597,   678,   532,   533,   598,   534,   535,
      128,   129,   274,   538,   539,   540,   604,   541,   605,   130,
      275,    83,   250,    84,   251,    85,   249,   464,   465,   466,
-     560,   686,   687,   688,   696,   697,   698,   699,   704,   700,
-     702,   714,   715,   716,   720,   721,   723
+     560,   687,   688,   689,   697,   698,   699,   700,   705,   701,
+     703,   715,   716,   717,   721,   722,   724
   };
 
   const unsigned short int
@@ -3122,56 +3128,56 @@ namespace isc { namespace dhcp {
   {
       79,   225,   528,   145,   165,   175,   190,   208,   224,   238,
      513,   159,   166,   176,   191,   226,    32,   227,   509,   133,
-     146,    74,    96,   147,   148,   149,    25,    24,    26,   431,
-      27,    86,   164,    87,    88,   133,    36,   253,    89,    90,
-      91,    92,   254,   236,   237,    96,    89,    90,    91,    92,
-      93,    94,    95,    96,   134,   501,   135,   236,   237,   447,
-     448,   449,   136,   137,   138,   139,   140,   141,    38,   584,
-      40,    96,   585,   142,   143,   522,    97,    98,    99,   100,
-     144,    42,   472,   170,   171,   172,   173,   174,   201,   142,
-     101,    44,    78,   102,   103,    78,   502,   587,    75,    46,
-     588,    71,   104,   105,    76,    77,   106,   202,   589,   203,
-     204,   590,   205,   206,   207,   468,    96,    78,    78,   469,
-     470,   471,   472,   473,   474,   475,    78,    28,    29,    30,
-      31,    96,   202,   202,   202,   663,   664,   665,   523,   524,
-     525,   526,   184,    48,    78,    50,   185,   186,   187,   188,
-     189,   202,   222,   203,   204,   223,   276,   292,   360,   295,
-     302,   277,   293,   327,   296,   303,    78,   276,   328,    52,
-     561,   131,   559,   572,   641,   562,   528,   572,   573,    78,
-     595,   509,   574,   689,   243,   596,   690,   602,   691,    78,
-     692,   693,   603,   606,   247,    79,   292,   327,   607,   608,
-     244,   670,   673,   295,    78,    78,    78,   302,   681,   705,
-     717,   724,   682,   718,   706,   362,   725,   674,   675,   676,
-     501,   508,   361,    78,   536,   537,    54,   245,   246,   247,
-     363,   252,   258,   259,   145,   260,   261,   165,   262,   273,
-     286,   279,   159,   287,   175,   166,   298,   329,   330,   300,
-     301,   146,   176,   190,   147,   148,   149,   310,   311,   225,
-     314,   191,   208,   318,   320,   319,   224,   322,   323,   324,
-     340,   331,   332,   226,   333,   227,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,   334,   335,   337,
-     338,   339,   341,   342,   343,   344,   345,   346,   347,   348,
-     349,   350,   351,   352,   353,   354,   355,   356,   357,   359,
-     369,   370,   371,   372,   373,   376,   374,   377,   378,   375,
-     379,   381,   383,   384,   385,   386,   389,   390,   387,   391,
-     392,   393,   394,   396,   397,   399,   400,   413,   414,   401,
-     404,   407,   408,   410,   398,   418,   463,   402,   411,   405,
-     412,   483,   483,   415,   416,   417,   419,   420,   476,   476,
-     421,   422,   424,   425,   426,   434,   577,   427,   428,   362,
-     527,   429,   430,   435,   433,   436,   361,   437,   438,   439,
-     440,   441,   442,   443,   363,   444,   445,   446,   450,   489,
-     493,   497,   515,   543,   451,   452,   453,   454,   545,   549,
-     553,   568,   557,   563,   569,   570,   571,   620,   455,   576,
-     579,   460,   580,   461,   582,   583,   592,   593,   456,   594,
-     599,   457,   600,   601,   612,   458,   611,   459,   614,   615,
-     519,   617,   618,   639,   621,   623,   624,   625,   626,   646,
-     609,   647,   652,   653,   661,   542,   662,   703,   707,   709,
-     671,   627,   628,   629,   672,   683,   630,   644,   685,   711,
-     648,   649,   713,   726,   586,   336,   462,   467,   358,   631,
-     719,   488,   638,   640,   650,   667,   643,   668,   669,   678,
-     679,   680,   642,   633,   684,   409,   708,   712,   645,   632,
-     380,   635,   728,   634,   656,   403,   637,   636,   382,   655,
-     406,   659,   658,   657,   388,   544,   395,   483,   654,   651,
-     660,   701,   710,   622,   476,   722,   225,   145,   727,     0,
+     146,    74,   253,   147,   148,   149,    25,   254,    26,   431,
+      27,    86,   501,    87,    88,    96,   501,   508,   133,    89,
+      90,    91,    92,    96,   202,   164,    96,    89,    90,    91,
+      92,    93,    94,    95,    96,   134,    24,   135,    36,   447,
+     448,   449,   201,   136,   137,   138,   139,   140,   141,   584,
+     360,   276,   585,   502,   142,   143,   277,    97,    98,    99,
+     100,   144,   202,   587,   203,   204,   588,   205,   206,   207,
+      38,   101,   522,   142,   102,   103,   292,   236,   237,    75,
+     472,   293,    40,   104,   105,    76,    77,   106,    78,   295,
+      96,    42,   302,   202,   296,   468,    78,   303,    78,    78,
+     469,   470,   471,   472,   473,   474,   475,    78,    28,    29,
+      30,    31,    78,    96,   327,   202,   184,   236,   237,   328,
+     185,   186,   187,   188,   189,   170,   171,   172,   173,   174,
+     276,   675,   676,   677,    78,   559,   523,   524,   525,   526,
+     202,   222,   203,   204,   223,    44,   589,   561,   692,   590,
+     693,   694,   562,   572,   641,   572,   528,   595,   573,    71,
+     574,   509,   596,    78,    78,    78,   602,   606,   247,   292,
+     131,   603,   607,   608,   671,    79,   327,   295,   302,   706,
+     725,   674,   682,   683,   707,   726,    78,    78,   663,   664,
+     665,   666,    46,   690,   718,   362,   691,   719,   536,   537,
+      48,    50,   361,    52,    54,   243,   244,   331,   245,   246,
+     363,   247,    78,   252,   145,   258,   259,   165,   260,   261,
+     262,   273,   159,   286,   175,   166,   279,   329,   330,   287,
+     298,   146,   176,   190,   147,   148,   149,   300,   301,   225,
+     310,   191,   208,   311,   319,   314,   224,   318,   320,   340,
+     322,   324,   323,   226,   332,   227,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,   333,   334,   335,
+     337,   338,   339,   345,   346,   341,   342,   343,   344,   347,
+     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
+     359,   369,   370,   371,   372,   373,   374,   375,   376,   377,
+     378,   379,   381,   383,   385,   389,   384,   390,   386,   391,
+     387,   392,   393,   394,   396,   397,   399,   413,   414,   400,
+     401,   398,   404,   407,   408,   410,   463,   434,   418,   411,
+     402,   483,   483,   405,   412,   415,   416,   417,   476,   476,
+     419,   420,   421,   422,   424,   425,   426,   435,   436,   362,
+     527,   427,   428,   429,   430,   442,   361,   433,   437,   438,
+     439,   440,   441,   443,   363,   444,   445,   446,   450,   451,
+     489,   493,   497,   515,   543,   545,   549,   568,   452,   453,
+     454,   455,   553,   557,   563,   569,   570,   571,   577,   662,
+     456,   460,   576,   461,   579,   580,   582,   583,   686,   457,
+     458,   592,   593,   611,   594,   599,   600,   601,   612,   459,
+     614,   519,   615,   609,   617,   618,   712,   621,   620,   623,
+     624,   625,   626,   646,   627,   628,   639,   647,   652,   653,
+     661,   704,   542,   586,   630,   629,   672,   673,   684,   644,
+     648,   649,   650,   708,   710,   714,   727,   358,   336,   462,
+     720,   488,   467,   631,   638,   668,   640,   643,   669,   670,
+     679,   680,   681,   642,   685,   633,   709,   713,   729,   409,
+     645,   632,   380,   635,   637,   634,   403,   406,   656,   636,
+     658,   655,   651,   388,   382,   660,   657,   483,   544,   395,
+     659,   654,   702,   622,   476,   711,   225,   145,   723,   728,
      208,     0,     0,   224,     0,   159,     0,     0,     0,     0,
      226,     0,   227,   238,   146,     0,     0,   147,   148,   149,
        0,     0,     0,     0,   527,     0,     0,     0,     0,     0,
@@ -3182,9 +3188,9 @@ namespace isc { namespace dhcp {
        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,   695,     0,     0,     0,     0,     0,     0,
-     694,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     695,     0,     0,     0,     0,     0,     0,   694
+       0,     0,     0,     0,   696,     0,     0,     0,     0,     0,
+       0,   695,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   696,     0,     0,     0,     0,     0,     0,   695
   };
 
   const short int
@@ -3192,56 +3198,56 @@ namespace isc { namespace dhcp {
   {
       58,    66,   428,    61,    62,    63,    64,    65,    66,    67,
      425,    61,    62,    63,    64,    66,    13,    66,   424,     7,
-      61,    10,    33,    61,    61,    61,     5,     0,     7,   359,
-       9,    11,    43,    13,    14,     7,     7,     3,    26,    27,
-      28,    29,     8,    71,    72,    33,    26,    27,    28,    29,
-      30,    31,    32,    33,    42,    65,    44,    71,    72,   389,
-     390,   391,    50,    51,    52,    53,    54,    55,     7,     3,
-       7,    33,     6,    61,    62,    15,    56,    57,    58,    59,
-      68,     7,    22,    45,    46,    47,    48,    49,    15,    61,
-      70,     7,   106,    73,    74,   106,   106,     3,    87,     7,
-       6,   106,    82,    83,    93,    94,    86,    34,     3,    36,
-      37,     6,    39,    40,    41,    15,    33,   106,   106,    19,
-      20,    21,    22,    23,    24,    25,   106,   106,   107,   108,
-     109,    33,    34,    34,    34,    16,    17,    18,    78,    79,
-      80,    81,    59,     7,   106,     7,    63,    64,    65,    66,
-      67,    34,    35,    36,    37,    38,     3,     3,    60,     3,
-       3,     8,     8,     3,     8,     8,   106,     3,     8,     7,
-       3,    12,     8,     3,   589,     8,   602,     3,     8,   106,
-       3,   587,     8,     3,     6,     8,     6,     3,    89,   106,
-      91,    92,     8,     3,     3,   253,     3,     3,     8,     8,
-       3,     8,     8,     3,   106,   106,   106,     3,     8,     3,
-       3,     3,     8,     6,     8,   280,     8,    75,    76,    77,
-      65,    66,   280,   106,    84,    85,     7,     4,     8,     3,
-     280,     4,     4,     4,   292,     4,     4,   295,     4,     4,
-       4,     8,   292,     4,   302,   295,     4,   244,   245,     4,
-       4,   292,   302,   311,   292,   292,   292,     8,     3,   324,
-       4,   311,   320,     4,     3,     8,   324,     4,     8,     3,
-     107,   106,     4,   324,     4,   324,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,     4,     4,     4,
-       4,     4,   107,   107,   107,   107,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   107,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,   107,     4,     4,   109,
-       4,     4,     4,   107,     4,   107,     4,     4,   107,     4,
-       4,     4,     4,     4,     4,     4,     4,   334,   335,     4,
-       4,     4,     4,     4,   107,     5,    88,   109,     7,   109,
-       7,   416,   417,     7,     7,     7,     5,     5,   416,   417,
-       5,     5,     5,     5,     5,     3,     3,     7,     7,   434,
-     428,     7,     7,     5,     8,     5,   434,   106,   106,   106,
-     106,   106,     5,     7,   434,   106,   106,   106,   106,     7,
-       7,     7,     7,     4,   106,   106,   106,   106,     7,     7,
-       7,     4,    69,     8,     4,     4,     4,     8,   106,     6,
-       6,   408,     3,   410,     6,     3,     6,     3,   106,     4,
-       4,   106,     4,     4,     3,   106,     6,   106,     6,     3,
-     106,     6,     3,     6,     4,     4,     4,     4,     4,     4,
-     106,     4,     4,     4,     4,   430,     5,     4,     4,     4,
-       8,   109,   107,   109,     8,     8,   107,   107,     7,     5,
-     107,   107,     7,     4,   507,   253,   411,   415,   276,   572,
-      90,   417,   584,   587,   107,   106,   593,   106,   106,   106,
-     106,   106,   591,   577,   106,   327,   107,   106,   595,   575,
-     292,   580,   106,   578,   612,   320,   583,   581,   295,   610,
-     324,   616,   615,   613,   302,   434,   311,   572,   606,   602,
-     618,   689,   705,   561,   572,   717,   581,   575,   724,    -1,
+      61,    10,     3,    61,    61,    61,     5,     8,     7,   359,
+       9,    11,    66,    13,    14,    34,    66,    67,     7,    27,
+      28,    29,    30,    34,    35,    44,    34,    27,    28,    29,
+      30,    31,    32,    33,    34,    43,     0,    45,     7,   389,
+     390,   391,    15,    51,    52,    53,    54,    55,    56,     3,
+      61,     3,     6,   107,    62,    63,     8,    57,    58,    59,
+      60,    69,    35,     3,    37,    38,     6,    40,    41,    42,
+       7,    71,    15,    62,    74,    75,     3,    72,    73,    88,
+      23,     8,     7,    83,    84,    94,    95,    87,   107,     3,
+      34,     7,     3,    35,     8,    15,   107,     8,   107,   107,
+      20,    21,    22,    23,    24,    25,    26,   107,   107,   108,
+     109,   110,   107,    34,     3,    35,    60,    72,    73,     8,
+      64,    65,    66,    67,    68,    46,    47,    48,    49,    50,
+       3,    76,    77,    78,   107,     8,    79,    80,    81,    82,
+      35,    36,    37,    38,    39,     7,     3,     3,    90,     6,
+      92,    93,     8,     3,   589,     3,   602,     3,     8,   107,
+       8,   587,     8,   107,   107,   107,     3,     3,     3,     3,
+      12,     8,     8,     8,     8,   253,     3,     3,     3,     3,
+       3,     8,     8,     8,     8,     8,   107,   107,    16,    17,
+      18,    19,     7,     3,     3,   280,     6,     6,    85,    86,
+       7,     7,   280,     7,     7,     6,     3,   107,     4,     8,
+     280,     3,   107,     4,   292,     4,     4,   295,     4,     4,
+       4,     4,   292,     4,   302,   295,     8,   244,   245,     4,
+       4,   292,   302,   311,   292,   292,   292,     4,     4,   324,
+       8,   311,   320,     3,     8,     4,   324,     4,     3,   108,
+       4,     3,     8,   324,     4,   324,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,     4,     4,     4,
+       4,     4,     4,     4,     4,   108,   108,   108,   108,     4,
+       4,     4,     4,     4,     4,     4,     4,   108,     4,     4,
+       4,     4,     4,     4,     4,     4,   108,   110,     4,     4,
+       4,     4,     4,     4,     4,     4,   108,     4,   108,     4,
+     108,     4,     4,     4,     4,     4,     4,   334,   335,     4,
+       4,   108,     4,     4,     4,     4,    89,     3,     5,     7,
+     110,   416,   417,   110,     7,     7,     7,     7,   416,   417,
+       5,     5,     5,     5,     5,     5,     5,     5,     5,   434,
+     428,     7,     7,     7,     7,     5,   434,     8,   107,   107,
+     107,   107,   107,     7,   434,   107,   107,   107,   107,   107,
+       7,     7,     7,     7,     4,     7,     7,     4,   107,   107,
+     107,   107,     7,    70,     8,     4,     4,     4,     3,     5,
+     107,   408,     6,   410,     6,     3,     6,     3,     7,   107,
+     107,     6,     3,     6,     4,     4,     4,     4,     3,   107,
+       6,   107,     3,   107,     6,     3,     5,     4,     8,     4,
+       4,     4,     4,     4,   110,   108,     6,     4,     4,     4,
+       4,     4,   430,   507,   108,   110,     8,     8,     8,   108,
+     108,   108,   108,     4,     4,     7,     4,   276,   253,   411,
+      91,   417,   415,   572,   584,   107,   587,   593,   107,   107,
+     107,   107,   107,   591,   107,   577,   108,   107,   107,   327,
+     595,   575,   292,   580,   583,   578,   320,   324,   612,   581,
+     615,   610,   602,   302,   295,   618,   613,   572,   434,   311,
+     616,   606,   690,   561,   572,   706,   581,   575,   718,   725,
      578,    -1,    -1,   581,    -1,   575,    -1,    -1,    -1,    -1,
      581,    -1,   581,   591,   575,    -1,    -1,   575,   575,   575,
       -1,    -1,    -1,    -1,   602,    -1,    -1,    -1,    -1,    -1,
@@ -3252,136 +3258,136 @@ namespace isc { namespace dhcp {
       -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,   688,    -1,    -1,    -1,    -1,    -1,    -1,
-     688,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     705,    -1,    -1,    -1,    -1,    -1,    -1,   705
+      -1,    -1,    -1,    -1,   689,    -1,    -1,    -1,    -1,    -1,
+      -1,   689,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   706,    -1,    -1,    -1,    -1,    -1,    -1,   706
   };
 
   const unsigned short int
   Dhcp6Parser::yystos_[] =
   {
-       0,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,   122,     0,     5,     7,     9,   106,   107,
-     108,   109,   123,   124,   125,   129,     7,   136,     7,   142,
-       7,   153,     7,   215,     7,   278,     7,   290,     7,   307,
-       7,   237,     7,   261,     7,   197,   130,   126,   137,   143,
-     154,   216,   279,   291,   308,   238,   262,   198,   123,   133,
-     134,   106,   127,   128,    10,    87,    93,    94,   106,   135,
-     138,   139,   140,   361,   363,   365,    11,    13,    14,    26,
-      27,    28,    29,    30,    31,    32,    33,    56,    57,    58,
-      59,    70,    73,    74,    82,    83,    86,   135,   144,   145,
-     146,   147,   148,   149,   150,   151,   157,   159,   178,   184,
-     189,   191,   205,   209,   231,   255,   328,   338,   350,   351,
-     359,    12,   155,     7,    42,    44,    50,    51,    52,    53,
-      54,    55,    61,    62,    68,   135,   146,   147,   148,   149,
-     217,   218,   219,   221,   223,   225,   227,   229,   230,   255,
-     272,   284,   301,   324,    43,   135,   255,   280,   281,   282,
-      45,    46,    47,    48,    49,   135,   255,   292,   293,   294,
-     296,   297,   299,   300,    59,    63,    64,    65,    66,    67,
-     135,   255,   309,   310,   311,   312,   314,   316,   318,   320,
-     322,    15,    34,    36,    37,    39,    40,    41,   135,   172,
-     239,   240,   241,   242,   243,   244,   245,   247,   249,   251,
-     252,   254,    35,    38,   135,   172,   243,   249,   263,   264,
-     265,   266,   267,   269,   270,   271,    71,    72,   135,   199,
-     200,   201,   203,     6,     3,     4,     8,     3,   141,   366,
-     362,   364,     4,     3,     8,   152,   158,   160,     4,     4,
-       4,     4,     4,   210,   232,   256,   179,   190,   185,   329,
-     192,   206,   339,     4,   352,   360,     3,     8,   156,     8,
-     331,   273,   285,   220,   222,   224,     4,     4,   228,   226,
-     302,   325,     3,     8,   283,     3,     8,   295,     4,   298,
-       4,     4,     3,     8,   323,   313,   315,   317,   319,   321,
-       8,     3,   246,   173,     4,   250,   248,   253,     4,     8,
-       3,   268,     4,     8,     3,   202,   204,     3,     8,   123,
-     123,   106,     4,     4,     4,     4,   139,     4,     4,     4,
-     107,   107,   107,   107,   107,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,   107,     4,     4,   145,     4,
-      60,   135,   172,   255,   332,   333,   334,   335,   336,     4,
-       4,     4,     4,     4,   107,   109,     4,     4,     4,     4,
-     218,     4,   281,     4,   107,     4,   107,   107,   293,     4,
-       4,     4,     4,     4,     4,   311,     4,     4,   107,     4,
-       4,     4,   109,   241,     4,   109,   265,     4,     4,   200,
-       4,     7,     7,   123,   123,     7,     7,     7,     5,     5,
-       5,     5,     5,   131,     5,     5,     5,     7,     7,     7,
-       7,   131,   337,     8,     3,     5,     5,   106,   106,   106,
-     106,   106,     5,     7,   106,   106,   106,   131,   131,   131,
-     106,   106,   106,   106,   106,   106,   106,   106,   106,   106,
-     123,   123,   144,    88,   367,   368,   369,   155,    15,    19,
-      20,    21,    22,    23,    24,    25,   135,   161,   162,   163,
-     166,   168,   170,   172,   174,   175,   176,   177,   161,     7,
-     211,   212,   213,     7,   233,   234,   235,     7,   257,   258,
-     259,    65,   106,   180,   181,   182,   183,   132,    66,   182,
-     186,   187,   188,   225,   330,     7,   193,   194,   195,   106,
-     207,   208,    15,    78,    79,    80,    81,   135,   174,   340,
-     341,   342,   345,   346,   348,   349,    84,    85,   353,   354,
-     355,   357,   128,     4,   334,     7,   274,   275,   276,     7,
-     286,   287,   288,     7,   303,   304,   305,    69,   326,     8,
-     370,     3,     8,     8,   164,   167,   169,   171,     4,     4,
-       4,     4,     3,     8,     8,   214,     6,     3,   236,     6,
-       3,   260,     6,     3,     3,     6,   133,     3,     6,     3,
-       6,   196,     6,     3,     4,     3,     8,   343,   347,     4,
-       4,     4,     3,     8,   356,   358,     3,     8,     8,   106,
-     277,     6,     3,   289,     6,     3,   306,     6,     3,   327,
-       8,     4,   368,     4,     4,     4,     4,   109,   107,   109,
-     107,   162,   217,   213,   239,   235,   263,   259,   181,     6,
-     187,   225,   199,   195,   107,   208,     4,     4,   107,   107,
-     107,   341,     4,     4,   354,   280,   276,   292,   288,   309,
-     305,     4,     5,    16,    17,    18,   165,   106,   106,   106,
-       8,     8,     8,     8,    75,    76,    77,   344,   106,   106,
-     106,     8,     8,     8,   106,     7,   371,   372,   373,     3,
-       6,    89,    91,    92,   135,   172,   374,   375,   376,   377,
-     379,   372,   380,     4,   378,     3,     8,     4,   107,     4,
-     375,     5,   106,     7,   381,   382,   383,     3,     6,    90,
-     384,   385,   382,   386,     3,     8,     4,   385,   106
+       0,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,     0,     5,     7,     9,   107,   108,
+     109,   110,   124,   125,   126,   130,     7,   137,     7,   143,
+       7,   154,     7,   216,     7,   279,     7,   291,     7,   308,
+       7,   238,     7,   262,     7,   198,   131,   127,   138,   144,
+     155,   217,   280,   292,   309,   239,   263,   199,   124,   134,
+     135,   107,   128,   129,    10,    88,    94,    95,   107,   136,
+     139,   140,   141,   362,   364,   366,    11,    13,    14,    27,
+      28,    29,    30,    31,    32,    33,    34,    57,    58,    59,
+      60,    71,    74,    75,    83,    84,    87,   136,   145,   146,
+     147,   148,   149,   150,   151,   152,   158,   160,   179,   185,
+     190,   192,   206,   210,   232,   256,   329,   339,   351,   352,
+     360,    12,   156,     7,    43,    45,    51,    52,    53,    54,
+      55,    56,    62,    63,    69,   136,   147,   148,   149,   150,
+     218,   219,   220,   222,   224,   226,   228,   230,   231,   256,
+     273,   285,   302,   325,    44,   136,   256,   281,   282,   283,
+      46,    47,    48,    49,    50,   136,   256,   293,   294,   295,
+     297,   298,   300,   301,    60,    64,    65,    66,    67,    68,
+     136,   256,   310,   311,   312,   313,   315,   317,   319,   321,
+     323,    15,    35,    37,    38,    40,    41,    42,   136,   173,
+     240,   241,   242,   243,   244,   245,   246,   248,   250,   252,
+     253,   255,    36,    39,   136,   173,   244,   250,   264,   265,
+     266,   267,   268,   270,   271,   272,    72,    73,   136,   200,
+     201,   202,   204,     6,     3,     4,     8,     3,   142,   367,
+     363,   365,     4,     3,     8,   153,   159,   161,     4,     4,
+       4,     4,     4,   211,   233,   257,   180,   191,   186,   330,
+     193,   207,   340,     4,   353,   361,     3,     8,   157,     8,
+     332,   274,   286,   221,   223,   225,     4,     4,   229,   227,
+     303,   326,     3,     8,   284,     3,     8,   296,     4,   299,
+       4,     4,     3,     8,   324,   314,   316,   318,   320,   322,
+       8,     3,   247,   174,     4,   251,   249,   254,     4,     8,
+       3,   269,     4,     8,     3,   203,   205,     3,     8,   124,
+     124,   107,     4,     4,     4,     4,   140,     4,     4,     4,
+     108,   108,   108,   108,   108,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,   108,     4,     4,   146,     4,
+      61,   136,   173,   256,   333,   334,   335,   336,   337,     4,
+       4,     4,     4,     4,   108,   110,     4,     4,     4,     4,
+     219,     4,   282,     4,   108,     4,   108,   108,   294,     4,
+       4,     4,     4,     4,     4,   312,     4,     4,   108,     4,
+       4,     4,   110,   242,     4,   110,   266,     4,     4,   201,
+       4,     7,     7,   124,   124,     7,     7,     7,     5,     5,
+       5,     5,     5,   132,     5,     5,     5,     7,     7,     7,
+       7,   132,   338,     8,     3,     5,     5,   107,   107,   107,
+     107,   107,     5,     7,   107,   107,   107,   132,   132,   132,
+     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
+     124,   124,   145,    89,   368,   369,   370,   156,    15,    20,
+      21,    22,    23,    24,    25,    26,   136,   162,   163,   164,
+     167,   169,   171,   173,   175,   176,   177,   178,   162,     7,
+     212,   213,   214,     7,   234,   235,   236,     7,   258,   259,
+     260,    66,   107,   181,   182,   183,   184,   133,    67,   183,
+     187,   188,   189,   226,   331,     7,   194,   195,   196,   107,
+     208,   209,    15,    79,    80,    81,    82,   136,   175,   341,
+     342,   343,   346,   347,   349,   350,    85,    86,   354,   355,
+     356,   358,   129,     4,   335,     7,   275,   276,   277,     7,
+     287,   288,   289,     7,   304,   305,   306,    70,   327,     8,
+     371,     3,     8,     8,   165,   168,   170,   172,     4,     4,
+       4,     4,     3,     8,     8,   215,     6,     3,   237,     6,
+       3,   261,     6,     3,     3,     6,   134,     3,     6,     3,
+       6,   197,     6,     3,     4,     3,     8,   344,   348,     4,
+       4,     4,     3,     8,   357,   359,     3,     8,     8,   107,
+     278,     6,     3,   290,     6,     3,   307,     6,     3,   328,
+       8,     4,   369,     4,     4,     4,     4,   110,   108,   110,
+     108,   163,   218,   214,   240,   236,   264,   260,   182,     6,
+     188,   226,   200,   196,   108,   209,     4,     4,   108,   108,
+     108,   342,     4,     4,   355,   281,   277,   293,   289,   310,
+     306,     4,     5,    16,    17,    18,    19,   166,   107,   107,
+     107,     8,     8,     8,     8,    76,    77,    78,   345,   107,
+     107,   107,     8,     8,     8,   107,     7,   372,   373,   374,
+       3,     6,    90,    92,    93,   136,   173,   375,   376,   377,
+     378,   380,   373,   381,     4,   379,     3,     8,     4,   108,
+       4,   376,     5,   107,     7,   382,   383,   384,     3,     6,
+      91,   385,   386,   383,   387,     3,     8,     4,   386,   107
   };
 
   const unsigned short int
   Dhcp6Parser::yyr1_[] =
   {
-       0,   110,   112,   111,   113,   111,   114,   111,   115,   111,
-     116,   111,   117,   111,   118,   111,   119,   111,   120,   111,
-     121,   111,   122,   111,   123,   123,   123,   123,   123,   123,
-     123,   124,   126,   125,   127,   127,   128,   128,   130,   129,
-     132,   131,   133,   133,   134,   134,   135,   137,   136,   138,
-     138,   139,   139,   139,   139,   139,   141,   140,   143,   142,
-     144,   144,   145,   145,   145,   145,   145,   145,   145,   145,
-     145,   145,   145,   145,   145,   145,   145,   145,   145,   145,
-     145,   145,   145,   145,   146,   147,   148,   149,   150,   152,
-     151,   154,   153,   156,   155,   158,   157,   160,   159,   161,
-     161,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-     162,   164,   163,   165,   165,   165,   167,   166,   169,   168,
-     171,   170,   173,   172,   174,   175,   176,   177,   179,   178,
-     180,   180,   181,   181,   182,   183,   185,   184,   186,   186,
-     187,   187,   188,   190,   189,   192,   191,   193,   193,   194,
-     194,   196,   195,   198,   197,   199,   199,   199,   200,   200,
-     202,   201,   204,   203,   206,   205,   207,   207,   208,   210,
-     209,   211,   211,   212,   212,   214,   213,   216,   215,   217,
-     217,   218,   218,   218,   218,   218,   218,   218,   218,   218,
-     218,   218,   218,   218,   218,   218,   218,   218,   220,   219,
-     222,   221,   224,   223,   226,   225,   228,   227,   229,   230,
-     232,   231,   233,   233,   234,   234,   236,   235,   238,   237,
-     239,   239,   240,   240,   241,   241,   241,   241,   241,   241,
-     241,   241,   242,   243,   244,   246,   245,   248,   247,   250,
-     249,   251,   253,   252,   254,   256,   255,   257,   257,   258,
-     258,   260,   259,   262,   261,   263,   263,   264,   264,   265,
-     265,   265,   265,   265,   265,   266,   268,   267,   269,   270,
-     271,   273,   272,   274,   274,   275,   275,   277,   276,   279,
-     278,   280,   280,   281,   281,   281,   283,   282,   285,   284,
-     286,   286,   287,   287,   289,   288,   291,   290,   292,   292,
-     293,   293,   293,   293,   293,   293,   293,   295,   294,   296,
-     298,   297,   299,   300,   302,   301,   303,   303,   304,   304,
-     306,   305,   308,   307,   309,   309,   310,   310,   311,   311,
-     311,   311,   311,   311,   311,   311,   313,   312,   315,   314,
-     317,   316,   319,   318,   321,   320,   323,   322,   325,   324,
-     327,   326,   329,   328,   330,   330,   331,   225,   332,   332,
-     333,   333,   334,   334,   334,   334,   335,   337,   336,   339,
-     338,   340,   340,   341,   341,   341,   341,   341,   341,   341,
-     343,   342,   344,   344,   344,   345,   347,   346,   348,   349,
-     350,   352,   351,   353,   353,   354,   354,   356,   355,   358,
-     357,   360,   359,   362,   361,   364,   363,   366,   365,   367,
-     367,   368,   370,   369,   371,   371,   373,   372,   374,   374,
-     375,   375,   375,   375,   375,   376,   378,   377,   380,   379,
-     381,   381,   383,   382,   384,   384,   386,   385
+       0,   111,   113,   112,   114,   112,   115,   112,   116,   112,
+     117,   112,   118,   112,   119,   112,   120,   112,   121,   112,
+     122,   112,   123,   112,   124,   124,   124,   124,   124,   124,
+     124,   125,   127,   126,   128,   128,   129,   129,   131,   130,
+     133,   132,   134,   134,   135,   135,   136,   138,   137,   139,
+     139,   140,   140,   140,   140,   140,   142,   141,   144,   143,
+     145,   145,   146,   146,   146,   146,   146,   146,   146,   146,
+     146,   146,   146,   146,   146,   146,   146,   146,   146,   146,
+     146,   146,   146,   146,   147,   148,   149,   150,   151,   153,
+     152,   155,   154,   157,   156,   159,   158,   161,   160,   162,
+     162,   163,   163,   163,   163,   163,   163,   163,   163,   163,
+     163,   165,   164,   166,   166,   166,   166,   168,   167,   170,
+     169,   172,   171,   174,   173,   175,   176,   177,   178,   180,
+     179,   181,   181,   182,   182,   183,   184,   186,   185,   187,
+     187,   188,   188,   189,   191,   190,   193,   192,   194,   194,
+     195,   195,   197,   196,   199,   198,   200,   200,   200,   201,
+     201,   203,   202,   205,   204,   207,   206,   208,   208,   209,
+     211,   210,   212,   212,   213,   213,   215,   214,   217,   216,
+     218,   218,   219,   219,   219,   219,   219,   219,   219,   219,
+     219,   219,   219,   219,   219,   219,   219,   219,   219,   221,
+     220,   223,   222,   225,   224,   227,   226,   229,   228,   230,
+     231,   233,   232,   234,   234,   235,   235,   237,   236,   239,
+     238,   240,   240,   241,   241,   242,   242,   242,   242,   242,
+     242,   242,   242,   243,   244,   245,   247,   246,   249,   248,
+     251,   250,   252,   254,   253,   255,   257,   256,   258,   258,
+     259,   259,   261,   260,   263,   262,   264,   264,   265,   265,
+     266,   266,   266,   266,   266,   266,   267,   269,   268,   270,
+     271,   272,   274,   273,   275,   275,   276,   276,   278,   277,
+     280,   279,   281,   281,   282,   282,   282,   284,   283,   286,
+     285,   287,   287,   288,   288,   290,   289,   292,   291,   293,
+     293,   294,   294,   294,   294,   294,   294,   294,   296,   295,
+     297,   299,   298,   300,   301,   303,   302,   304,   304,   305,
+     305,   307,   306,   309,   308,   310,   310,   311,   311,   312,
+     312,   312,   312,   312,   312,   312,   312,   314,   313,   316,
+     315,   318,   317,   320,   319,   322,   321,   324,   323,   326,
+     325,   328,   327,   330,   329,   331,   331,   332,   226,   333,
+     333,   334,   334,   335,   335,   335,   335,   336,   338,   337,
+     340,   339,   341,   341,   342,   342,   342,   342,   342,   342,
+     342,   344,   343,   345,   345,   345,   346,   348,   347,   349,
+     350,   351,   353,   352,   354,   354,   355,   355,   357,   356,
+     359,   358,   361,   360,   363,   362,   365,   364,   367,   366,
+     368,   368,   369,   371,   370,   372,   372,   374,   373,   375,
+     375,   376,   376,   376,   376,   376,   377,   379,   378,   381,
+     380,   382,   382,   384,   383,   385,   385,   387,   386
   };
 
   const unsigned char
@@ -3398,39 +3404,39 @@ namespace isc { namespace dhcp {
        1,     1,     1,     1,     3,     3,     3,     3,     3,     0,
        6,     0,     4,     0,     4,     0,     6,     0,     6,     1,
        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     1,     1,     1,     0,     4,     0,     4,
-       0,     4,     0,     4,     3,     3,     3,     3,     0,     6,
-       1,     3,     1,     1,     1,     1,     0,     6,     1,     3,
-       1,     1,     1,     0,     4,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
-       0,     4,     0,     4,     0,     6,     1,     3,     3,     0,
-       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       0,     4,     0,     4,     0,     4,     0,     4,     3,     3,
+       1,     0,     4,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     0,     4,     3,     3,     3,     3,     0,
+       6,     1,     3,     1,     1,     1,     1,     0,     6,     1,
+       3,     1,     1,     1,     0,     4,     0,     6,     0,     1,
+       1,     3,     0,     4,     0,     4,     1,     3,     1,     1,
+       1,     0,     4,     0,     4,     0,     6,     1,     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,     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,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     0,     4,     0,     4,     0,     4,     0,     4,     3,
        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,
-       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
+       4,     0,     1,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     3,     1,     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,     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
   };
 
 
@@ -3444,8 +3450,8 @@ namespace isc { namespace dhcp {
   "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp6\"",
   "\"interfaces-config\"", "\"interfaces\"", "\"lease-database\"",
   "\"hosts-database\"", "\"type\"", "\"memfile\"", "\"mysql\"",
-  "\"postgresql\"", "\"user\"", "\"password\"", "\"host\"", "\"persist\"",
-  "\"lfc-interval\"", "\"readonly\"", "\"connect-timeout\"",
+  "\"postgresql\"", "\"cql\"", "\"user\"", "\"password\"", "\"host\"",
+  "\"persist\"", "\"lfc-interval\"", "\"readonly\"", "\"connect-timeout\"",
   "\"preferred-lifetime\"", "\"valid-lifetime\"", "\"renew-timer\"",
   "\"rebind-timer\"", "\"decline-probation-period\"", "\"subnet6\"",
   "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
@@ -3538,50 +3544,50 @@ namespace isc { namespace dhcp {
   const unsigned short int
   Dhcp6Parser::yyrline_[] =
   {
-       0,   207,   207,   207,   208,   208,   209,   209,   210,   210,
-     211,   211,   212,   212,   213,   213,   214,   214,   215,   215,
-     216,   216,   217,   217,   225,   226,   227,   228,   229,   230,
-     231,   234,   239,   239,   251,   252,   255,   259,   266,   266,
-     274,   274,   281,   282,   285,   289,   300,   310,   310,   322,
-     323,   327,   328,   329,   330,   331,   334,   334,   351,   351,
-     359,   360,   365,   366,   367,   368,   369,   370,   371,   372,
-     373,   374,   375,   376,   377,   378,   379,   380,   381,   382,
-     383,   384,   385,   386,   389,   394,   399,   404,   409,   414,
-     414,   424,   424,   432,   432,   442,   442,   452,   452,   462,
-     463,   466,   467,   468,   469,   470,   471,   472,   473,   474,
-     475,   478,   478,   485,   486,   487,   490,   490,   498,   498,
-     506,   506,   514,   514,   522,   527,   532,   537,   542,   542,
-     552,   553,   556,   557,   560,   565,   570,   570,   580,   581,
-     584,   585,   588,   593,   593,   603,   603,   613,   614,   617,
-     618,   621,   621,   629,   629,   637,   638,   639,   642,   643,
-     646,   646,   654,   654,   662,   662,   672,   673,   679,   687,
-     687,   700,   701,   704,   705,   712,   712,   735,   735,   744,
-     745,   749,   750,   751,   752,   753,   754,   755,   756,   757,
-     758,   759,   760,   761,   762,   763,   764,   765,   768,   768,
-     776,   776,   784,   784,   792,   792,   800,   800,   808,   813,
-     822,   822,   834,   835,   838,   839,   844,   844,   855,   855,
-     865,   866,   869,   870,   873,   874,   875,   876,   877,   878,
-     879,   880,   883,   885,   890,   892,   892,   900,   900,   908,
-     908,   916,   918,   918,   926,   935,   935,   947,   948,   953,
-     954,   959,   959,   970,   970,   981,   982,   987,   988,   993,
-     994,   995,   996,   997,   998,  1001,  1003,  1003,  1011,  1013,
-    1015,  1023,  1023,  1035,  1036,  1039,  1040,  1043,  1043,  1051,
-    1051,  1059,  1060,  1063,  1064,  1065,  1068,  1068,  1079,  1079,
-    1091,  1092,  1095,  1096,  1099,  1099,  1107,  1107,  1115,  1116,
-    1119,  1120,  1121,  1122,  1123,  1124,  1125,  1128,  1128,  1136,
-    1141,  1141,  1149,  1154,  1162,  1162,  1172,  1173,  1176,  1177,
-    1180,  1180,  1188,  1188,  1196,  1197,  1200,  1201,  1205,  1206,
-    1207,  1208,  1209,  1210,  1211,  1212,  1215,  1215,  1225,  1225,
-    1235,  1235,  1243,  1243,  1251,  1251,  1259,  1259,  1272,  1272,
-    1282,  1282,  1293,  1293,  1303,  1304,  1307,  1307,  1315,  1316,
-    1319,  1320,  1323,  1324,  1325,  1326,  1329,  1331,  1331,  1342,
-    1342,  1352,  1353,  1356,  1357,  1358,  1359,  1360,  1361,  1362,
-    1365,  1365,  1372,  1373,  1374,  1377,  1382,  1382,  1390,  1395,
-    1402,  1409,  1409,  1419,  1420,  1423,  1424,  1427,  1427,  1435,
-    1435,  1445,  1445,  1457,  1457,  1464,  1464,  1476,  1476,  1489,
-    1490,  1494,  1498,  1498,  1510,  1511,  1515,  1515,  1523,  1524,
-    1527,  1528,  1529,  1530,  1531,  1534,  1538,  1538,  1546,  1546,
-    1556,  1557,  1560,  1560,  1568,  1569,  1572,  1572
+       0,   208,   208,   208,   209,   209,   210,   210,   211,   211,
+     212,   212,   213,   213,   214,   214,   215,   215,   216,   216,
+     217,   217,   218,   218,   226,   227,   228,   229,   230,   231,
+     232,   235,   240,   240,   252,   253,   256,   260,   267,   267,
+     275,   275,   282,   283,   286,   290,   301,   311,   311,   323,
+     324,   328,   329,   330,   331,   332,   335,   335,   352,   352,
+     360,   361,   366,   367,   368,   369,   370,   371,   372,   373,
+     374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
+     384,   385,   386,   387,   390,   395,   400,   405,   410,   415,
+     415,   425,   425,   433,   433,   443,   443,   453,   453,   463,
+     464,   467,   468,   469,   470,   471,   472,   473,   474,   475,
+     476,   479,   479,   486,   487,   488,   489,   492,   492,   500,
+     500,   508,   508,   516,   516,   524,   529,   534,   539,   544,
+     544,   554,   555,   558,   559,   562,   567,   572,   572,   582,
+     583,   586,   587,   590,   595,   595,   605,   605,   615,   616,
+     619,   620,   623,   623,   631,   631,   639,   640,   641,   644,
+     645,   648,   648,   656,   656,   664,   664,   674,   675,   681,
+     689,   689,   702,   703,   706,   707,   714,   714,   737,   737,
+     746,   747,   751,   752,   753,   754,   755,   756,   757,   758,
+     759,   760,   761,   762,   763,   764,   765,   766,   767,   770,
+     770,   778,   778,   786,   786,   794,   794,   802,   802,   810,
+     815,   824,   824,   836,   837,   840,   841,   846,   846,   857,
+     857,   867,   868,   871,   872,   875,   876,   877,   878,   879,
+     880,   881,   882,   885,   887,   892,   894,   894,   902,   902,
+     910,   910,   918,   920,   920,   928,   937,   937,   949,   950,
+     955,   956,   961,   961,   972,   972,   983,   984,   989,   990,
+     995,   996,   997,   998,   999,  1000,  1003,  1005,  1005,  1013,
+    1015,  1017,  1025,  1025,  1037,  1038,  1041,  1042,  1045,  1045,
+    1053,  1053,  1061,  1062,  1065,  1066,  1067,  1070,  1070,  1081,
+    1081,  1093,  1094,  1097,  1098,  1101,  1101,  1109,  1109,  1117,
+    1118,  1121,  1122,  1123,  1124,  1125,  1126,  1127,  1130,  1130,
+    1138,  1143,  1143,  1151,  1156,  1164,  1164,  1174,  1175,  1178,
+    1179,  1182,  1182,  1190,  1190,  1198,  1199,  1202,  1203,  1207,
+    1208,  1209,  1210,  1211,  1212,  1213,  1214,  1217,  1217,  1227,
+    1227,  1237,  1237,  1245,  1245,  1253,  1253,  1261,  1261,  1274,
+    1274,  1284,  1284,  1295,  1295,  1305,  1306,  1309,  1309,  1317,
+    1318,  1321,  1322,  1325,  1326,  1327,  1328,  1331,  1333,  1333,
+    1344,  1344,  1354,  1355,  1358,  1359,  1360,  1361,  1362,  1363,
+    1364,  1367,  1367,  1374,  1375,  1376,  1379,  1384,  1384,  1392,
+    1397,  1404,  1411,  1411,  1421,  1422,  1425,  1426,  1429,  1429,
+    1437,  1437,  1447,  1447,  1459,  1459,  1466,  1466,  1478,  1478,
+    1491,  1492,  1496,  1500,  1500,  1512,  1513,  1517,  1517,  1525,
+    1526,  1529,  1530,  1531,  1532,  1533,  1536,  1540,  1540,  1548,
+    1548,  1558,  1559,  1562,  1562,  1570,  1571,  1574,  1574
   };
 
   // Print the state stack on the debug stream.
@@ -3616,8 +3622,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 3620 "dhcp6_parser.cc" // lalr1.cc:1167
-#line 1580 "dhcp6_parser.yy" // lalr1.cc:1168
+#line 3626 "dhcp6_parser.cc" // lalr1.cc:1167
+#line 1582 "dhcp6_parser.yy" // lalr1.cc:1168
 
 
 void
index be8b55ea94778e34c7a7264fce0804e6c1a6b593..25ab033aaac12f7464fd39389ec60af0124133ef 100644 (file)
@@ -359,97 +359,98 @@ namespace isc { namespace dhcp {
         TOKEN_MEMFILE = 271,
         TOKEN_MYSQL = 272,
         TOKEN_POSTGRESQL = 273,
-        TOKEN_USER = 274,
-        TOKEN_PASSWORD = 275,
-        TOKEN_HOST = 276,
-        TOKEN_PERSIST = 277,
-        TOKEN_LFC_INTERVAL = 278,
-        TOKEN_READONLY = 279,
-        TOKEN_CONNECT_TIMEOUT = 280,
-        TOKEN_PREFERRED_LIFETIME = 281,
-        TOKEN_VALID_LIFETIME = 282,
-        TOKEN_RENEW_TIMER = 283,
-        TOKEN_REBIND_TIMER = 284,
-        TOKEN_DECLINE_PROBATION_PERIOD = 285,
-        TOKEN_SUBNET6 = 286,
-        TOKEN_OPTION_DEF = 287,
-        TOKEN_OPTION_DATA = 288,
-        TOKEN_NAME = 289,
-        TOKEN_DATA = 290,
-        TOKEN_CODE = 291,
-        TOKEN_SPACE = 292,
-        TOKEN_CSV_FORMAT = 293,
-        TOKEN_RECORD_TYPES = 294,
-        TOKEN_ENCAPSULATE = 295,
-        TOKEN_ARRAY = 296,
-        TOKEN_POOLS = 297,
-        TOKEN_POOL = 298,
-        TOKEN_PD_POOLS = 299,
-        TOKEN_PREFIX = 300,
-        TOKEN_PREFIX_LEN = 301,
-        TOKEN_EXCLUDED_PREFIX = 302,
-        TOKEN_EXCLUDED_PREFIX_LEN = 303,
-        TOKEN_DELEGATED_LEN = 304,
-        TOKEN_SUBNET = 305,
-        TOKEN_INTERFACE = 306,
-        TOKEN_INTERFACE_ID = 307,
-        TOKEN_ID = 308,
-        TOKEN_RAPID_COMMIT = 309,
-        TOKEN_RESERVATION_MODE = 310,
-        TOKEN_MAC_SOURCES = 311,
-        TOKEN_RELAY_SUPPLIED_OPTIONS = 312,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 313,
-        TOKEN_CLIENT_CLASSES = 314,
-        TOKEN_TEST = 315,
-        TOKEN_CLIENT_CLASS = 316,
-        TOKEN_RESERVATIONS = 317,
-        TOKEN_IP_ADDRESSES = 318,
-        TOKEN_PREFIXES = 319,
-        TOKEN_DUID = 320,
-        TOKEN_HW_ADDRESS = 321,
-        TOKEN_HOSTNAME = 322,
-        TOKEN_RELAY = 323,
-        TOKEN_IP_ADDRESS = 324,
-        TOKEN_HOOKS_LIBRARIES = 325,
-        TOKEN_LIBRARY = 326,
-        TOKEN_PARAMETERS = 327,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 328,
-        TOKEN_SERVER_ID = 329,
-        TOKEN_LLT = 330,
-        TOKEN_EN = 331,
-        TOKEN_LL = 332,
-        TOKEN_IDENTIFIER = 333,
-        TOKEN_HTYPE = 334,
-        TOKEN_TIME = 335,
-        TOKEN_ENTERPRISE_ID = 336,
-        TOKEN_DHCP4O6_PORT = 337,
-        TOKEN_CONTROL_SOCKET = 338,
-        TOKEN_SOCKET_TYPE = 339,
-        TOKEN_SOCKET_NAME = 340,
-        TOKEN_DHCP_DDNS = 341,
-        TOKEN_LOGGING = 342,
-        TOKEN_LOGGERS = 343,
-        TOKEN_OUTPUT_OPTIONS = 344,
-        TOKEN_OUTPUT = 345,
-        TOKEN_DEBUGLEVEL = 346,
-        TOKEN_SEVERITY = 347,
-        TOKEN_DHCP4 = 348,
-        TOKEN_DHCPDDNS = 349,
-        TOKEN_TOPLEVEL_JSON = 350,
-        TOKEN_TOPLEVEL_DHCP6 = 351,
-        TOKEN_SUB_DHCP6 = 352,
-        TOKEN_SUB_INTERFACES6 = 353,
-        TOKEN_SUB_SUBNET6 = 354,
-        TOKEN_SUB_POOL6 = 355,
-        TOKEN_SUB_PD_POOL = 356,
-        TOKEN_SUB_RESERVATION = 357,
-        TOKEN_SUB_OPTION_DEF = 358,
-        TOKEN_SUB_OPTION_DATA = 359,
-        TOKEN_SUB_HOOKS_LIBRARY = 360,
-        TOKEN_STRING = 361,
-        TOKEN_INTEGER = 362,
-        TOKEN_FLOAT = 363,
-        TOKEN_BOOLEAN = 364
+        TOKEN_CQL = 274,
+        TOKEN_USER = 275,
+        TOKEN_PASSWORD = 276,
+        TOKEN_HOST = 277,
+        TOKEN_PERSIST = 278,
+        TOKEN_LFC_INTERVAL = 279,
+        TOKEN_READONLY = 280,
+        TOKEN_CONNECT_TIMEOUT = 281,
+        TOKEN_PREFERRED_LIFETIME = 282,
+        TOKEN_VALID_LIFETIME = 283,
+        TOKEN_RENEW_TIMER = 284,
+        TOKEN_REBIND_TIMER = 285,
+        TOKEN_DECLINE_PROBATION_PERIOD = 286,
+        TOKEN_SUBNET6 = 287,
+        TOKEN_OPTION_DEF = 288,
+        TOKEN_OPTION_DATA = 289,
+        TOKEN_NAME = 290,
+        TOKEN_DATA = 291,
+        TOKEN_CODE = 292,
+        TOKEN_SPACE = 293,
+        TOKEN_CSV_FORMAT = 294,
+        TOKEN_RECORD_TYPES = 295,
+        TOKEN_ENCAPSULATE = 296,
+        TOKEN_ARRAY = 297,
+        TOKEN_POOLS = 298,
+        TOKEN_POOL = 299,
+        TOKEN_PD_POOLS = 300,
+        TOKEN_PREFIX = 301,
+        TOKEN_PREFIX_LEN = 302,
+        TOKEN_EXCLUDED_PREFIX = 303,
+        TOKEN_EXCLUDED_PREFIX_LEN = 304,
+        TOKEN_DELEGATED_LEN = 305,
+        TOKEN_SUBNET = 306,
+        TOKEN_INTERFACE = 307,
+        TOKEN_INTERFACE_ID = 308,
+        TOKEN_ID = 309,
+        TOKEN_RAPID_COMMIT = 310,
+        TOKEN_RESERVATION_MODE = 311,
+        TOKEN_MAC_SOURCES = 312,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 313,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 314,
+        TOKEN_CLIENT_CLASSES = 315,
+        TOKEN_TEST = 316,
+        TOKEN_CLIENT_CLASS = 317,
+        TOKEN_RESERVATIONS = 318,
+        TOKEN_IP_ADDRESSES = 319,
+        TOKEN_PREFIXES = 320,
+        TOKEN_DUID = 321,
+        TOKEN_HW_ADDRESS = 322,
+        TOKEN_HOSTNAME = 323,
+        TOKEN_RELAY = 324,
+        TOKEN_IP_ADDRESS = 325,
+        TOKEN_HOOKS_LIBRARIES = 326,
+        TOKEN_LIBRARY = 327,
+        TOKEN_PARAMETERS = 328,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 329,
+        TOKEN_SERVER_ID = 330,
+        TOKEN_LLT = 331,
+        TOKEN_EN = 332,
+        TOKEN_LL = 333,
+        TOKEN_IDENTIFIER = 334,
+        TOKEN_HTYPE = 335,
+        TOKEN_TIME = 336,
+        TOKEN_ENTERPRISE_ID = 337,
+        TOKEN_DHCP4O6_PORT = 338,
+        TOKEN_CONTROL_SOCKET = 339,
+        TOKEN_SOCKET_TYPE = 340,
+        TOKEN_SOCKET_NAME = 341,
+        TOKEN_DHCP_DDNS = 342,
+        TOKEN_LOGGING = 343,
+        TOKEN_LOGGERS = 344,
+        TOKEN_OUTPUT_OPTIONS = 345,
+        TOKEN_OUTPUT = 346,
+        TOKEN_DEBUGLEVEL = 347,
+        TOKEN_SEVERITY = 348,
+        TOKEN_DHCP4 = 349,
+        TOKEN_DHCPDDNS = 350,
+        TOKEN_TOPLEVEL_JSON = 351,
+        TOKEN_TOPLEVEL_DHCP6 = 352,
+        TOKEN_SUB_DHCP6 = 353,
+        TOKEN_SUB_INTERFACES6 = 354,
+        TOKEN_SUB_SUBNET6 = 355,
+        TOKEN_SUB_POOL6 = 356,
+        TOKEN_SUB_PD_POOL = 357,
+        TOKEN_SUB_RESERVATION = 358,
+        TOKEN_SUB_OPTION_DEF = 359,
+        TOKEN_SUB_OPTION_DATA = 360,
+        TOKEN_SUB_HOOKS_LIBRARY = 361,
+        TOKEN_STRING = 362,
+        TOKEN_INTEGER = 363,
+        TOKEN_FLOAT = 364,
+        TOKEN_BOOLEAN = 365
       };
     };
 
@@ -632,6 +633,10 @@ namespace isc { namespace dhcp {
     symbol_type
     make_POSTGRESQL (const location_type& l);
 
+    static inline
+    symbol_type
+    make_CQL (const location_type& l);
+
     static inline
     symbol_type
     make_USER (const location_type& l);
@@ -1201,12 +1206,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 647,     ///< Last index in yytable_.
+      yylast_ = 648,     ///< Last index in yytable_.
       yynnts_ = 277,  ///< Number of nonterminal symbols.
       yyfinal_ = 24, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 110  ///< Number of tokens.
+      yyntokens_ = 111  ///< Number of tokens.
     };
 
 
@@ -1259,9 +1264,9 @@ namespace isc { namespace dhcp {
       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,   103,   104,
-     105,   106,   107,   108,   109
+     105,   106,   107,   108,   109,   110
     };
-    const unsigned int user_token_number_max_ = 364;
+    const unsigned int user_token_number_max_ = 365;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1294,25 +1299,25 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 123: // value
-      case 165: // db_type
-      case 344: // duid_type
+      case 124: // value
+      case 166: // db_type
+      case 345: // duid_type
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 109: // "boolean"
+      case 110: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 108: // "floating point"
+      case 109: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 107: // "integer"
+      case 108: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 106: // "constant string"
+      case 107: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1333,25 +1338,25 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 123: // value
-      case 165: // db_type
-      case 344: // duid_type
+      case 124: // value
+      case 166: // db_type
+      case 345: // duid_type
         value.copy< ElementPtr > (v);
         break;
 
-      case 109: // "boolean"
+      case 110: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 108: // "floating point"
+      case 109: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 107: // "integer"
+      case 108: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 106: // "constant string"
+      case 107: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1431,25 +1436,25 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 123: // value
-      case 165: // db_type
-      case 344: // duid_type
+      case 124: // value
+      case 166: // db_type
+      case 345: // duid_type
         value.template destroy< ElementPtr > ();
         break;
 
-      case 109: // "boolean"
+      case 110: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 108: // "floating point"
+      case 109: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 107: // "integer"
+      case 108: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 106: // "constant string"
+      case 107: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1476,25 +1481,25 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 123: // value
-      case 165: // db_type
-      case 344: // duid_type
+      case 124: // value
+      case 166: // db_type
+      case 345: // duid_type
         value.move< ElementPtr > (s.value);
         break;
 
-      case 109: // "boolean"
+      case 110: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 108: // "floating point"
+      case 109: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 107: // "integer"
+      case 108: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 106: // "constant string"
+      case 107: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1563,7 +1568,8 @@ 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,   358,   359,   360,   361,   362,   363,   364
+     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
+     365
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -1670,6 +1676,12 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_POSTGRESQL, l);
   }
 
+  Dhcp6Parser::symbol_type
+  Dhcp6Parser::make_CQL (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_CQL, l);
+  }
+
   Dhcp6Parser::symbol_type
   Dhcp6Parser::make_USER (const location_type& l)
   {
@@ -2219,7 +2231,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2223 "dhcp6_parser.h" // lalr1.cc:377
+#line 2235 "dhcp6_parser.h" // lalr1.cc:377
 
 
 
index 362fcf403a450c4866785ced7de1fb44ee30492d..54523869d86f38225394f1ebc1e8029d2caaed3a 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701101509
+// Generated 201701102039
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 94b21fc5325f4c935fd712ea3a60e38f339ccef0..dece489e593008c110348d6702c8bca688bb3b6b 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701101509
+// Generated 201701102039
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index d13f127c99464dd66b00ebfb699d44d08d5c8a09..fc14fbac1b5af8f629b1206eafeab05ed77735cc 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201701101509
+// Generated 201701102039
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++