diff --git a/mapcss/generated/MapCSS.interp b/mapcss/generated/MapCSS.interp index db97ff878..b4e39447e 100644 --- a/mapcss/generated/MapCSS.interp +++ b/mapcss/generated/MapCSS.interp @@ -35,6 +35,10 @@ null null null null +null +null +null +null '[' ']' '{' @@ -120,6 +124,10 @@ OP_MINUS OP_NOT SET IMPORT +SUPPORTS +SUPPORTS_NOT +SUPPORTS_AND +SUPPORTS_OR NCOMPONENT LBRACKET RBRACKET @@ -197,6 +205,11 @@ declaration_property declaration_value int_ single_value +supports_block +supports_rule +supports_condition +supports_in_parens +supports_declaration booleanOperator numericOperator valueOperator @@ -209,4 +222,4 @@ primaryExpression atn: -[4, 1, 83, 364, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 1, 0, 5, 0, 72, 8, 0, 10, 0, 12, 0, 75, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 84, 8, 2, 10, 2, 12, 2, 87, 9, 2, 1, 2, 5, 2, 90, 8, 2, 10, 2, 12, 2, 93, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 105, 8, 3, 10, 3, 12, 3, 108, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 116, 8, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 134, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 145, 8, 8, 10, 8, 12, 8, 148, 9, 8, 1, 8, 3, 8, 151, 8, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 3, 11, 158, 8, 11, 1, 11, 1, 11, 1, 12, 3, 12, 163, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 168, 8, 12, 10, 12, 12, 12, 171, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 179, 8, 14, 1, 15, 3, 15, 182, 8, 15, 1, 15, 1, 15, 3, 15, 186, 8, 15, 1, 15, 3, 15, 189, 8, 15, 1, 15, 3, 15, 192, 8, 15, 1, 15, 3, 15, 195, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 202, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 212, 8, 17, 1, 18, 1, 18, 3, 18, 216, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 224, 8, 19, 1, 20, 1, 20, 1, 20, 5, 20, 229, 8, 20, 10, 20, 12, 20, 232, 9, 20, 1, 20, 5, 20, 235, 8, 20, 10, 20, 12, 20, 238, 9, 20, 1, 21, 1, 21, 3, 21, 242, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 249, 8, 21, 1, 22, 1, 22, 1, 23, 1, 23, 3, 23, 255, 8, 23, 1, 24, 1, 24, 3, 24, 259, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 267, 8, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 278, 8, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 302, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 308, 8, 30, 10, 30, 12, 30, 311, 9, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 320, 8, 31, 1, 31, 1, 31, 1, 31, 5, 31, 325, 8, 31, 10, 31, 12, 31, 328, 9, 31, 1, 32, 1, 32, 3, 32, 332, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 339, 8, 33, 10, 33, 12, 33, 342, 9, 33, 3, 33, 344, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 353, 8, 34, 1, 34, 1, 34, 3, 34, 357, 8, 34, 1, 34, 1, 34, 1, 34, 3, 34, 362, 8, 34, 1, 34, 0, 2, 60, 62, 35, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 0, 9, 1, 0, 17, 18, 1, 0, 4, 9, 1, 0, 42, 43, 2, 0, 12, 12, 40, 40, 1, 0, 2, 3, 2, 0, 13, 14, 25, 26, 1, 0, 13, 18, 1, 0, 19, 20, 1, 0, 27, 31, 391, 0, 73, 1, 0, 0, 0, 2, 78, 1, 0, 0, 0, 4, 80, 1, 0, 0, 0, 6, 115, 1, 0, 0, 0, 8, 117, 1, 0, 0, 0, 10, 119, 1, 0, 0, 0, 12, 133, 1, 0, 0, 0, 14, 135, 1, 0, 0, 0, 16, 139, 1, 0, 0, 0, 18, 152, 1, 0, 0, 0, 20, 154, 1, 0, 0, 0, 22, 157, 1, 0, 0, 0, 24, 162, 1, 0, 0, 0, 26, 172, 1, 0, 0, 0, 28, 178, 1, 0, 0, 0, 30, 194, 1, 0, 0, 0, 32, 201, 1, 0, 0, 0, 34, 211, 1, 0, 0, 0, 36, 215, 1, 0, 0, 0, 38, 223, 1, 0, 0, 0, 40, 225, 1, 0, 0, 0, 42, 248, 1, 0, 0, 0, 44, 250, 1, 0, 0, 0, 46, 254, 1, 0, 0, 0, 48, 258, 1, 0, 0, 0, 50, 266, 1, 0, 0, 0, 52, 268, 1, 0, 0, 0, 54, 270, 1, 0, 0, 0, 56, 277, 1, 0, 0, 0, 58, 279, 1, 0, 0, 0, 60, 301, 1, 0, 0, 0, 62, 319, 1, 0, 0, 0, 64, 331, 1, 0, 0, 0, 66, 333, 1, 0, 0, 0, 68, 361, 1, 0, 0, 0, 70, 72, 3, 2, 1, 0, 71, 70, 1, 0, 0, 0, 72, 75, 1, 0, 0, 0, 73, 71, 1, 0, 0, 0, 73, 74, 1, 0, 0, 0, 74, 76, 1, 0, 0, 0, 75, 73, 1, 0, 0, 0, 76, 77, 5, 0, 0, 1, 77, 1, 1, 0, 0, 0, 78, 79, 3, 4, 2, 0, 79, 3, 1, 0, 0, 0, 80, 85, 3, 6, 3, 0, 81, 82, 5, 1, 0, 0, 82, 84, 3, 6, 3, 0, 83, 81, 1, 0, 0, 0, 84, 87, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 85, 86, 1, 0, 0, 0, 86, 91, 1, 0, 0, 0, 87, 85, 1, 0, 0, 0, 88, 90, 5, 1, 0, 0, 89, 88, 1, 0, 0, 0, 90, 93, 1, 0, 0, 0, 91, 89, 1, 0, 0, 0, 91, 92, 1, 0, 0, 0, 92, 94, 1, 0, 0, 0, 93, 91, 1, 0, 0, 0, 94, 95, 3, 38, 19, 0, 95, 5, 1, 0, 0, 0, 96, 116, 3, 16, 8, 0, 97, 98, 3, 16, 8, 0, 98, 99, 3, 16, 8, 0, 99, 116, 1, 0, 0, 0, 100, 101, 3, 16, 8, 0, 101, 106, 3, 8, 4, 0, 102, 105, 3, 12, 6, 0, 103, 105, 3, 34, 17, 0, 104, 102, 1, 0, 0, 0, 104, 103, 1, 0, 0, 0, 105, 108, 1, 0, 0, 0, 106, 104, 1, 0, 0, 0, 106, 107, 1, 0, 0, 0, 107, 109, 1, 0, 0, 0, 108, 106, 1, 0, 0, 0, 109, 110, 3, 16, 8, 0, 110, 116, 1, 0, 0, 0, 111, 112, 3, 16, 8, 0, 112, 113, 3, 10, 5, 0, 113, 114, 3, 16, 8, 0, 114, 116, 1, 0, 0, 0, 115, 96, 1, 0, 0, 0, 115, 97, 1, 0, 0, 0, 115, 100, 1, 0, 0, 0, 115, 111, 1, 0, 0, 0, 116, 7, 1, 0, 0, 0, 117, 118, 7, 0, 0, 0, 118, 9, 1, 0, 0, 0, 119, 120, 7, 1, 0, 0, 120, 11, 1, 0, 0, 0, 121, 122, 5, 36, 0, 0, 122, 123, 3, 22, 11, 0, 123, 124, 3, 56, 28, 0, 124, 125, 3, 62, 31, 0, 125, 126, 5, 37, 0, 0, 126, 134, 1, 0, 0, 0, 127, 128, 5, 36, 0, 0, 128, 129, 3, 22, 11, 0, 129, 130, 3, 54, 27, 0, 130, 131, 3, 48, 24, 0, 131, 132, 5, 37, 0, 0, 132, 134, 1, 0, 0, 0, 133, 121, 1, 0, 0, 0, 133, 127, 1, 0, 0, 0, 134, 13, 1, 0, 0, 0, 135, 136, 5, 40, 0, 0, 136, 137, 5, 40, 0, 0, 137, 138, 3, 22, 11, 0, 138, 15, 1, 0, 0, 0, 139, 146, 3, 36, 18, 0, 140, 145, 3, 18, 9, 0, 141, 145, 3, 32, 16, 0, 142, 145, 3, 26, 13, 0, 143, 145, 3, 34, 17, 0, 144, 140, 1, 0, 0, 0, 144, 141, 1, 0, 0, 0, 144, 142, 1, 0, 0, 0, 144, 143, 1, 0, 0, 0, 145, 148, 1, 0, 0, 0, 146, 144, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 150, 1, 0, 0, 0, 148, 146, 1, 0, 0, 0, 149, 151, 3, 14, 7, 0, 150, 149, 1, 0, 0, 0, 150, 151, 1, 0, 0, 0, 151, 17, 1, 0, 0, 0, 152, 153, 5, 48, 0, 0, 153, 19, 1, 0, 0, 0, 154, 155, 7, 2, 0, 0, 155, 21, 1, 0, 0, 0, 156, 158, 5, 31, 0, 0, 157, 156, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 160, 5, 35, 0, 0, 160, 23, 1, 0, 0, 0, 161, 163, 5, 31, 0, 0, 162, 161, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 164, 1, 0, 0, 0, 164, 169, 5, 35, 0, 0, 165, 166, 7, 3, 0, 0, 166, 168, 5, 35, 0, 0, 167, 165, 1, 0, 0, 0, 168, 171, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 25, 1, 0, 0, 0, 171, 169, 1, 0, 0, 0, 172, 173, 5, 36, 0, 0, 173, 174, 3, 28, 14, 0, 174, 175, 5, 37, 0, 0, 175, 27, 1, 0, 0, 0, 176, 179, 3, 30, 15, 0, 177, 179, 3, 60, 30, 0, 178, 176, 1, 0, 0, 0, 178, 177, 1, 0, 0, 0, 179, 29, 1, 0, 0, 0, 180, 182, 5, 32, 0, 0, 181, 180, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 185, 1, 0, 0, 0, 183, 186, 3, 24, 12, 0, 184, 186, 3, 20, 10, 0, 185, 183, 1, 0, 0, 0, 185, 184, 1, 0, 0, 0, 186, 188, 1, 0, 0, 0, 187, 189, 7, 4, 0, 0, 188, 187, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 195, 1, 0, 0, 0, 190, 192, 5, 32, 0, 0, 191, 190, 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 195, 3, 64, 32, 0, 194, 181, 1, 0, 0, 0, 194, 191, 1, 0, 0, 0, 195, 31, 1, 0, 0, 0, 196, 197, 5, 32, 0, 0, 197, 198, 5, 12, 0, 0, 198, 202, 3, 22, 11, 0, 199, 200, 5, 12, 0, 0, 200, 202, 3, 22, 11, 0, 201, 196, 1, 0, 0, 0, 201, 199, 1, 0, 0, 0, 202, 33, 1, 0, 0, 0, 203, 204, 5, 40, 0, 0, 204, 205, 5, 32, 0, 0, 205, 212, 3, 22, 11, 0, 206, 207, 5, 32, 0, 0, 207, 208, 5, 40, 0, 0, 208, 212, 3, 22, 11, 0, 209, 210, 5, 40, 0, 0, 210, 212, 3, 22, 11, 0, 211, 203, 1, 0, 0, 0, 211, 206, 1, 0, 0, 0, 211, 209, 1, 0, 0, 0, 212, 35, 1, 0, 0, 0, 213, 216, 3, 22, 11, 0, 214, 216, 5, 27, 0, 0, 215, 213, 1, 0, 0, 0, 215, 214, 1, 0, 0, 0, 216, 37, 1, 0, 0, 0, 217, 218, 5, 38, 0, 0, 218, 219, 3, 40, 20, 0, 219, 220, 5, 39, 0, 0, 220, 224, 1, 0, 0, 0, 221, 222, 5, 38, 0, 0, 222, 224, 5, 39, 0, 0, 223, 217, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 224, 39, 1, 0, 0, 0, 225, 230, 3, 42, 21, 0, 226, 227, 5, 41, 0, 0, 227, 229, 3, 42, 21, 0, 228, 226, 1, 0, 0, 0, 229, 232, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 230, 231, 1, 0, 0, 0, 231, 236, 1, 0, 0, 0, 232, 230, 1, 0, 0, 0, 233, 235, 5, 41, 0, 0, 234, 233, 1, 0, 0, 0, 235, 238, 1, 0, 0, 0, 236, 234, 1, 0, 0, 0, 236, 237, 1, 0, 0, 0, 237, 41, 1, 0, 0, 0, 238, 236, 1, 0, 0, 0, 239, 241, 5, 33, 0, 0, 240, 242, 5, 12, 0, 0, 241, 240, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 243, 1, 0, 0, 0, 243, 249, 3, 22, 11, 0, 244, 245, 3, 44, 22, 0, 245, 246, 5, 40, 0, 0, 246, 247, 3, 46, 23, 0, 247, 249, 1, 0, 0, 0, 248, 239, 1, 0, 0, 0, 248, 244, 1, 0, 0, 0, 249, 43, 1, 0, 0, 0, 250, 251, 3, 22, 11, 0, 251, 45, 1, 0, 0, 0, 252, 255, 3, 50, 25, 0, 253, 255, 3, 66, 33, 0, 254, 252, 1, 0, 0, 0, 254, 253, 1, 0, 0, 0, 255, 47, 1, 0, 0, 0, 256, 259, 5, 44, 0, 0, 257, 259, 5, 45, 0, 0, 258, 256, 1, 0, 0, 0, 258, 257, 1, 0, 0, 0, 259, 49, 1, 0, 0, 0, 260, 267, 5, 44, 0, 0, 261, 267, 5, 45, 0, 0, 262, 267, 5, 46, 0, 0, 263, 267, 5, 47, 0, 0, 264, 267, 3, 20, 10, 0, 265, 267, 3, 24, 12, 0, 266, 260, 1, 0, 0, 0, 266, 261, 1, 0, 0, 0, 266, 262, 1, 0, 0, 0, 266, 263, 1, 0, 0, 0, 266, 264, 1, 0, 0, 0, 266, 265, 1, 0, 0, 0, 267, 51, 1, 0, 0, 0, 268, 269, 7, 5, 0, 0, 269, 53, 1, 0, 0, 0, 270, 271, 7, 6, 0, 0, 271, 55, 1, 0, 0, 0, 272, 278, 3, 54, 27, 0, 273, 278, 5, 21, 0, 0, 274, 278, 5, 22, 0, 0, 275, 278, 5, 23, 0, 0, 276, 278, 5, 24, 0, 0, 277, 272, 1, 0, 0, 0, 277, 273, 1, 0, 0, 0, 277, 274, 1, 0, 0, 0, 277, 275, 1, 0, 0, 0, 277, 276, 1, 0, 0, 0, 278, 57, 1, 0, 0, 0, 279, 280, 7, 7, 0, 0, 280, 59, 1, 0, 0, 0, 281, 282, 6, 30, -1, 0, 282, 283, 5, 10, 0, 0, 283, 284, 3, 60, 30, 0, 284, 285, 5, 11, 0, 0, 285, 302, 1, 0, 0, 0, 286, 287, 5, 32, 0, 0, 287, 302, 3, 60, 30, 6, 288, 289, 3, 62, 31, 0, 289, 290, 3, 56, 28, 0, 290, 291, 3, 62, 31, 0, 291, 302, 1, 0, 0, 0, 292, 293, 3, 62, 31, 0, 293, 294, 3, 58, 29, 0, 294, 295, 3, 64, 32, 0, 295, 302, 1, 0, 0, 0, 296, 297, 3, 64, 32, 0, 297, 298, 3, 58, 29, 0, 298, 299, 3, 64, 32, 0, 299, 302, 1, 0, 0, 0, 300, 302, 3, 66, 33, 0, 301, 281, 1, 0, 0, 0, 301, 286, 1, 0, 0, 0, 301, 288, 1, 0, 0, 0, 301, 292, 1, 0, 0, 0, 301, 296, 1, 0, 0, 0, 301, 300, 1, 0, 0, 0, 302, 309, 1, 0, 0, 0, 303, 304, 10, 5, 0, 0, 304, 305, 3, 52, 26, 0, 305, 306, 3, 60, 30, 6, 306, 308, 1, 0, 0, 0, 307, 303, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 61, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 312, 313, 6, 31, -1, 0, 313, 314, 5, 10, 0, 0, 314, 315, 3, 62, 31, 0, 315, 316, 5, 11, 0, 0, 316, 320, 1, 0, 0, 0, 317, 320, 3, 68, 34, 0, 318, 320, 3, 66, 33, 0, 319, 312, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 318, 1, 0, 0, 0, 320, 326, 1, 0, 0, 0, 321, 322, 10, 3, 0, 0, 322, 323, 7, 8, 0, 0, 323, 325, 3, 62, 31, 4, 324, 321, 1, 0, 0, 0, 325, 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 63, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 329, 332, 3, 20, 10, 0, 330, 332, 5, 49, 0, 0, 331, 329, 1, 0, 0, 0, 331, 330, 1, 0, 0, 0, 332, 65, 1, 0, 0, 0, 333, 334, 3, 22, 11, 0, 334, 343, 5, 10, 0, 0, 335, 340, 3, 62, 31, 0, 336, 337, 5, 1, 0, 0, 337, 339, 3, 62, 31, 0, 338, 336, 1, 0, 0, 0, 339, 342, 1, 0, 0, 0, 340, 338, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 344, 1, 0, 0, 0, 342, 340, 1, 0, 0, 0, 343, 335, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 5, 11, 0, 0, 346, 67, 1, 0, 0, 0, 347, 362, 5, 46, 0, 0, 348, 362, 5, 44, 0, 0, 349, 362, 5, 47, 0, 0, 350, 362, 5, 45, 0, 0, 351, 353, 5, 27, 0, 0, 352, 351, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 362, 3, 20, 10, 0, 355, 357, 5, 27, 0, 0, 356, 355, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 362, 3, 24, 12, 0, 359, 360, 5, 27, 0, 0, 360, 362, 3, 64, 32, 0, 361, 347, 1, 0, 0, 0, 361, 348, 1, 0, 0, 0, 361, 349, 1, 0, 0, 0, 361, 350, 1, 0, 0, 0, 361, 352, 1, 0, 0, 0, 361, 356, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 69, 1, 0, 0, 0, 41, 73, 85, 91, 104, 106, 115, 133, 144, 146, 150, 157, 162, 169, 178, 181, 185, 188, 191, 194, 201, 211, 215, 223, 230, 236, 241, 248, 254, 258, 266, 277, 301, 309, 319, 326, 331, 340, 343, 352, 356, 361] \ No newline at end of file +[4, 1, 87, 430, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 1, 0, 5, 0, 82, 8, 0, 10, 0, 12, 0, 85, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 91, 8, 1, 1, 2, 1, 2, 1, 2, 5, 2, 96, 8, 2, 10, 2, 12, 2, 99, 9, 2, 1, 2, 5, 2, 102, 8, 2, 10, 2, 12, 2, 105, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 117, 8, 3, 10, 3, 12, 3, 120, 9, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 128, 8, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 146, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 157, 8, 8, 10, 8, 12, 8, 160, 9, 8, 1, 8, 3, 8, 163, 8, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 3, 11, 170, 8, 11, 1, 11, 1, 11, 1, 12, 3, 12, 175, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 180, 8, 12, 10, 12, 12, 12, 183, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 191, 8, 14, 1, 15, 3, 15, 194, 8, 15, 1, 15, 1, 15, 3, 15, 198, 8, 15, 1, 15, 3, 15, 201, 8, 15, 1, 15, 3, 15, 204, 8, 15, 1, 15, 3, 15, 207, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 214, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 224, 8, 17, 1, 18, 1, 18, 3, 18, 228, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 236, 8, 19, 1, 20, 1, 20, 1, 20, 5, 20, 241, 8, 20, 10, 20, 12, 20, 244, 9, 20, 1, 20, 5, 20, 247, 8, 20, 10, 20, 12, 20, 250, 9, 20, 1, 21, 1, 21, 3, 21, 254, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 261, 8, 21, 1, 22, 1, 22, 1, 23, 1, 23, 3, 23, 267, 8, 23, 1, 24, 1, 24, 3, 24, 271, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 279, 8, 25, 1, 26, 1, 26, 1, 26, 5, 26, 284, 8, 26, 10, 26, 12, 26, 287, 9, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 299, 8, 28, 10, 28, 12, 28, 302, 9, 28, 1, 28, 1, 28, 1, 28, 5, 28, 307, 8, 28, 10, 28, 12, 28, 310, 9, 28, 3, 28, 312, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 322, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 333, 8, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 344, 8, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 368, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 374, 8, 35, 10, 35, 12, 35, 377, 9, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 386, 8, 36, 1, 36, 1, 36, 1, 36, 5, 36, 391, 8, 36, 10, 36, 12, 36, 394, 9, 36, 1, 37, 1, 37, 3, 37, 398, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 405, 8, 38, 10, 38, 12, 38, 408, 9, 38, 3, 38, 410, 8, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 419, 8, 39, 1, 39, 1, 39, 3, 39, 423, 8, 39, 1, 39, 1, 39, 1, 39, 3, 39, 428, 8, 39, 1, 39, 0, 2, 70, 72, 40, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 0, 9, 1, 0, 17, 18, 1, 0, 4, 9, 1, 0, 46, 47, 2, 0, 12, 12, 44, 44, 1, 0, 2, 3, 2, 0, 13, 14, 25, 26, 1, 0, 13, 18, 1, 0, 19, 20, 1, 0, 27, 31, 461, 0, 83, 1, 0, 0, 0, 2, 90, 1, 0, 0, 0, 4, 92, 1, 0, 0, 0, 6, 127, 1, 0, 0, 0, 8, 129, 1, 0, 0, 0, 10, 131, 1, 0, 0, 0, 12, 145, 1, 0, 0, 0, 14, 147, 1, 0, 0, 0, 16, 151, 1, 0, 0, 0, 18, 164, 1, 0, 0, 0, 20, 166, 1, 0, 0, 0, 22, 169, 1, 0, 0, 0, 24, 174, 1, 0, 0, 0, 26, 184, 1, 0, 0, 0, 28, 190, 1, 0, 0, 0, 30, 206, 1, 0, 0, 0, 32, 213, 1, 0, 0, 0, 34, 223, 1, 0, 0, 0, 36, 227, 1, 0, 0, 0, 38, 235, 1, 0, 0, 0, 40, 237, 1, 0, 0, 0, 42, 260, 1, 0, 0, 0, 44, 262, 1, 0, 0, 0, 46, 266, 1, 0, 0, 0, 48, 270, 1, 0, 0, 0, 50, 278, 1, 0, 0, 0, 52, 280, 1, 0, 0, 0, 54, 290, 1, 0, 0, 0, 56, 311, 1, 0, 0, 0, 58, 321, 1, 0, 0, 0, 60, 332, 1, 0, 0, 0, 62, 334, 1, 0, 0, 0, 64, 336, 1, 0, 0, 0, 66, 343, 1, 0, 0, 0, 68, 345, 1, 0, 0, 0, 70, 367, 1, 0, 0, 0, 72, 385, 1, 0, 0, 0, 74, 397, 1, 0, 0, 0, 76, 399, 1, 0, 0, 0, 78, 427, 1, 0, 0, 0, 80, 82, 3, 2, 1, 0, 81, 80, 1, 0, 0, 0, 82, 85, 1, 0, 0, 0, 83, 81, 1, 0, 0, 0, 83, 84, 1, 0, 0, 0, 84, 86, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 87, 5, 0, 0, 1, 87, 1, 1, 0, 0, 0, 88, 91, 3, 4, 2, 0, 89, 91, 3, 52, 26, 0, 90, 88, 1, 0, 0, 0, 90, 89, 1, 0, 0, 0, 91, 3, 1, 0, 0, 0, 92, 97, 3, 6, 3, 0, 93, 94, 5, 1, 0, 0, 94, 96, 3, 6, 3, 0, 95, 93, 1, 0, 0, 0, 96, 99, 1, 0, 0, 0, 97, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 103, 1, 0, 0, 0, 99, 97, 1, 0, 0, 0, 100, 102, 5, 1, 0, 0, 101, 100, 1, 0, 0, 0, 102, 105, 1, 0, 0, 0, 103, 101, 1, 0, 0, 0, 103, 104, 1, 0, 0, 0, 104, 106, 1, 0, 0, 0, 105, 103, 1, 0, 0, 0, 106, 107, 3, 38, 19, 0, 107, 5, 1, 0, 0, 0, 108, 128, 3, 16, 8, 0, 109, 110, 3, 16, 8, 0, 110, 111, 3, 16, 8, 0, 111, 128, 1, 0, 0, 0, 112, 113, 3, 16, 8, 0, 113, 118, 3, 8, 4, 0, 114, 117, 3, 12, 6, 0, 115, 117, 3, 34, 17, 0, 116, 114, 1, 0, 0, 0, 116, 115, 1, 0, 0, 0, 117, 120, 1, 0, 0, 0, 118, 116, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 121, 1, 0, 0, 0, 120, 118, 1, 0, 0, 0, 121, 122, 3, 16, 8, 0, 122, 128, 1, 0, 0, 0, 123, 124, 3, 16, 8, 0, 124, 125, 3, 10, 5, 0, 125, 126, 3, 16, 8, 0, 126, 128, 1, 0, 0, 0, 127, 108, 1, 0, 0, 0, 127, 109, 1, 0, 0, 0, 127, 112, 1, 0, 0, 0, 127, 123, 1, 0, 0, 0, 128, 7, 1, 0, 0, 0, 129, 130, 7, 0, 0, 0, 130, 9, 1, 0, 0, 0, 131, 132, 7, 1, 0, 0, 132, 11, 1, 0, 0, 0, 133, 134, 5, 40, 0, 0, 134, 135, 3, 22, 11, 0, 135, 136, 3, 66, 33, 0, 136, 137, 3, 72, 36, 0, 137, 138, 5, 41, 0, 0, 138, 146, 1, 0, 0, 0, 139, 140, 5, 40, 0, 0, 140, 141, 3, 22, 11, 0, 141, 142, 3, 64, 32, 0, 142, 143, 3, 48, 24, 0, 143, 144, 5, 41, 0, 0, 144, 146, 1, 0, 0, 0, 145, 133, 1, 0, 0, 0, 145, 139, 1, 0, 0, 0, 146, 13, 1, 0, 0, 0, 147, 148, 5, 44, 0, 0, 148, 149, 5, 44, 0, 0, 149, 150, 3, 22, 11, 0, 150, 15, 1, 0, 0, 0, 151, 158, 3, 36, 18, 0, 152, 157, 3, 18, 9, 0, 153, 157, 3, 32, 16, 0, 154, 157, 3, 26, 13, 0, 155, 157, 3, 34, 17, 0, 156, 152, 1, 0, 0, 0, 156, 153, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 156, 155, 1, 0, 0, 0, 157, 160, 1, 0, 0, 0, 158, 156, 1, 0, 0, 0, 158, 159, 1, 0, 0, 0, 159, 162, 1, 0, 0, 0, 160, 158, 1, 0, 0, 0, 161, 163, 3, 14, 7, 0, 162, 161, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 17, 1, 0, 0, 0, 164, 165, 5, 52, 0, 0, 165, 19, 1, 0, 0, 0, 166, 167, 7, 2, 0, 0, 167, 21, 1, 0, 0, 0, 168, 170, 5, 31, 0, 0, 169, 168, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 5, 39, 0, 0, 172, 23, 1, 0, 0, 0, 173, 175, 5, 31, 0, 0, 174, 173, 1, 0, 0, 0, 174, 175, 1, 0, 0, 0, 175, 176, 1, 0, 0, 0, 176, 181, 5, 39, 0, 0, 177, 178, 7, 3, 0, 0, 178, 180, 5, 39, 0, 0, 179, 177, 1, 0, 0, 0, 180, 183, 1, 0, 0, 0, 181, 179, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 25, 1, 0, 0, 0, 183, 181, 1, 0, 0, 0, 184, 185, 5, 40, 0, 0, 185, 186, 3, 28, 14, 0, 186, 187, 5, 41, 0, 0, 187, 27, 1, 0, 0, 0, 188, 191, 3, 30, 15, 0, 189, 191, 3, 70, 35, 0, 190, 188, 1, 0, 0, 0, 190, 189, 1, 0, 0, 0, 191, 29, 1, 0, 0, 0, 192, 194, 5, 32, 0, 0, 193, 192, 1, 0, 0, 0, 193, 194, 1, 0, 0, 0, 194, 197, 1, 0, 0, 0, 195, 198, 3, 24, 12, 0, 196, 198, 3, 20, 10, 0, 197, 195, 1, 0, 0, 0, 197, 196, 1, 0, 0, 0, 198, 200, 1, 0, 0, 0, 199, 201, 7, 4, 0, 0, 200, 199, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 207, 1, 0, 0, 0, 202, 204, 5, 32, 0, 0, 203, 202, 1, 0, 0, 0, 203, 204, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 207, 3, 74, 37, 0, 206, 193, 1, 0, 0, 0, 206, 203, 1, 0, 0, 0, 207, 31, 1, 0, 0, 0, 208, 209, 5, 32, 0, 0, 209, 210, 5, 12, 0, 0, 210, 214, 3, 22, 11, 0, 211, 212, 5, 12, 0, 0, 212, 214, 3, 22, 11, 0, 213, 208, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 214, 33, 1, 0, 0, 0, 215, 216, 5, 44, 0, 0, 216, 217, 5, 32, 0, 0, 217, 224, 3, 22, 11, 0, 218, 219, 5, 32, 0, 0, 219, 220, 5, 44, 0, 0, 220, 224, 3, 22, 11, 0, 221, 222, 5, 44, 0, 0, 222, 224, 3, 22, 11, 0, 223, 215, 1, 0, 0, 0, 223, 218, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 224, 35, 1, 0, 0, 0, 225, 228, 3, 22, 11, 0, 226, 228, 5, 27, 0, 0, 227, 225, 1, 0, 0, 0, 227, 226, 1, 0, 0, 0, 228, 37, 1, 0, 0, 0, 229, 230, 5, 42, 0, 0, 230, 231, 3, 40, 20, 0, 231, 232, 5, 43, 0, 0, 232, 236, 1, 0, 0, 0, 233, 234, 5, 42, 0, 0, 234, 236, 5, 43, 0, 0, 235, 229, 1, 0, 0, 0, 235, 233, 1, 0, 0, 0, 236, 39, 1, 0, 0, 0, 237, 242, 3, 42, 21, 0, 238, 239, 5, 45, 0, 0, 239, 241, 3, 42, 21, 0, 240, 238, 1, 0, 0, 0, 241, 244, 1, 0, 0, 0, 242, 240, 1, 0, 0, 0, 242, 243, 1, 0, 0, 0, 243, 248, 1, 0, 0, 0, 244, 242, 1, 0, 0, 0, 245, 247, 5, 45, 0, 0, 246, 245, 1, 0, 0, 0, 247, 250, 1, 0, 0, 0, 248, 246, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 41, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 253, 5, 33, 0, 0, 252, 254, 5, 12, 0, 0, 253, 252, 1, 0, 0, 0, 253, 254, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 261, 3, 22, 11, 0, 256, 257, 3, 44, 22, 0, 257, 258, 5, 44, 0, 0, 258, 259, 3, 46, 23, 0, 259, 261, 1, 0, 0, 0, 260, 251, 1, 0, 0, 0, 260, 256, 1, 0, 0, 0, 261, 43, 1, 0, 0, 0, 262, 263, 3, 22, 11, 0, 263, 45, 1, 0, 0, 0, 264, 267, 3, 50, 25, 0, 265, 267, 3, 76, 38, 0, 266, 264, 1, 0, 0, 0, 266, 265, 1, 0, 0, 0, 267, 47, 1, 0, 0, 0, 268, 271, 5, 48, 0, 0, 269, 271, 5, 49, 0, 0, 270, 268, 1, 0, 0, 0, 270, 269, 1, 0, 0, 0, 271, 49, 1, 0, 0, 0, 272, 279, 5, 48, 0, 0, 273, 279, 5, 49, 0, 0, 274, 279, 5, 50, 0, 0, 275, 279, 5, 51, 0, 0, 276, 279, 3, 20, 10, 0, 277, 279, 3, 24, 12, 0, 278, 272, 1, 0, 0, 0, 278, 273, 1, 0, 0, 0, 278, 274, 1, 0, 0, 0, 278, 275, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 277, 1, 0, 0, 0, 279, 51, 1, 0, 0, 0, 280, 281, 3, 54, 27, 0, 281, 285, 5, 42, 0, 0, 282, 284, 3, 4, 2, 0, 283, 282, 1, 0, 0, 0, 284, 287, 1, 0, 0, 0, 285, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 288, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 288, 289, 5, 43, 0, 0, 289, 53, 1, 0, 0, 0, 290, 291, 5, 35, 0, 0, 291, 292, 3, 56, 28, 0, 292, 55, 1, 0, 0, 0, 293, 294, 5, 36, 0, 0, 294, 312, 3, 58, 29, 0, 295, 300, 3, 58, 29, 0, 296, 297, 5, 37, 0, 0, 297, 299, 3, 58, 29, 0, 298, 296, 1, 0, 0, 0, 299, 302, 1, 0, 0, 0, 300, 298, 1, 0, 0, 0, 300, 301, 1, 0, 0, 0, 301, 312, 1, 0, 0, 0, 302, 300, 1, 0, 0, 0, 303, 308, 3, 58, 29, 0, 304, 305, 5, 38, 0, 0, 305, 307, 3, 58, 29, 0, 306, 304, 1, 0, 0, 0, 307, 310, 1, 0, 0, 0, 308, 306, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 312, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 311, 293, 1, 0, 0, 0, 311, 295, 1, 0, 0, 0, 311, 303, 1, 0, 0, 0, 312, 57, 1, 0, 0, 0, 313, 314, 5, 10, 0, 0, 314, 315, 3, 56, 28, 0, 315, 316, 5, 11, 0, 0, 316, 322, 1, 0, 0, 0, 317, 318, 5, 10, 0, 0, 318, 319, 3, 60, 30, 0, 319, 320, 5, 11, 0, 0, 320, 322, 1, 0, 0, 0, 321, 313, 1, 0, 0, 0, 321, 317, 1, 0, 0, 0, 322, 59, 1, 0, 0, 0, 323, 324, 3, 22, 11, 0, 324, 325, 5, 44, 0, 0, 325, 326, 5, 48, 0, 0, 326, 333, 1, 0, 0, 0, 327, 328, 3, 22, 11, 0, 328, 329, 5, 44, 0, 0, 329, 330, 5, 39, 0, 0, 330, 333, 1, 0, 0, 0, 331, 333, 3, 22, 11, 0, 332, 323, 1, 0, 0, 0, 332, 327, 1, 0, 0, 0, 332, 331, 1, 0, 0, 0, 333, 61, 1, 0, 0, 0, 334, 335, 7, 5, 0, 0, 335, 63, 1, 0, 0, 0, 336, 337, 7, 6, 0, 0, 337, 65, 1, 0, 0, 0, 338, 344, 3, 64, 32, 0, 339, 344, 5, 21, 0, 0, 340, 344, 5, 22, 0, 0, 341, 344, 5, 23, 0, 0, 342, 344, 5, 24, 0, 0, 343, 338, 1, 0, 0, 0, 343, 339, 1, 0, 0, 0, 343, 340, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 343, 342, 1, 0, 0, 0, 344, 67, 1, 0, 0, 0, 345, 346, 7, 7, 0, 0, 346, 69, 1, 0, 0, 0, 347, 348, 6, 35, -1, 0, 348, 349, 5, 10, 0, 0, 349, 350, 3, 70, 35, 0, 350, 351, 5, 11, 0, 0, 351, 368, 1, 0, 0, 0, 352, 353, 5, 32, 0, 0, 353, 368, 3, 70, 35, 6, 354, 355, 3, 72, 36, 0, 355, 356, 3, 66, 33, 0, 356, 357, 3, 72, 36, 0, 357, 368, 1, 0, 0, 0, 358, 359, 3, 72, 36, 0, 359, 360, 3, 68, 34, 0, 360, 361, 3, 74, 37, 0, 361, 368, 1, 0, 0, 0, 362, 363, 3, 74, 37, 0, 363, 364, 3, 68, 34, 0, 364, 365, 3, 74, 37, 0, 365, 368, 1, 0, 0, 0, 366, 368, 3, 76, 38, 0, 367, 347, 1, 0, 0, 0, 367, 352, 1, 0, 0, 0, 367, 354, 1, 0, 0, 0, 367, 358, 1, 0, 0, 0, 367, 362, 1, 0, 0, 0, 367, 366, 1, 0, 0, 0, 368, 375, 1, 0, 0, 0, 369, 370, 10, 5, 0, 0, 370, 371, 3, 62, 31, 0, 371, 372, 3, 70, 35, 6, 372, 374, 1, 0, 0, 0, 373, 369, 1, 0, 0, 0, 374, 377, 1, 0, 0, 0, 375, 373, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 71, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 378, 379, 6, 36, -1, 0, 379, 380, 5, 10, 0, 0, 380, 381, 3, 72, 36, 0, 381, 382, 5, 11, 0, 0, 382, 386, 1, 0, 0, 0, 383, 386, 3, 78, 39, 0, 384, 386, 3, 76, 38, 0, 385, 378, 1, 0, 0, 0, 385, 383, 1, 0, 0, 0, 385, 384, 1, 0, 0, 0, 386, 392, 1, 0, 0, 0, 387, 388, 10, 3, 0, 0, 388, 389, 7, 8, 0, 0, 389, 391, 3, 72, 36, 4, 390, 387, 1, 0, 0, 0, 391, 394, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 73, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 395, 398, 3, 20, 10, 0, 396, 398, 5, 53, 0, 0, 397, 395, 1, 0, 0, 0, 397, 396, 1, 0, 0, 0, 398, 75, 1, 0, 0, 0, 399, 400, 3, 22, 11, 0, 400, 409, 5, 10, 0, 0, 401, 406, 3, 72, 36, 0, 402, 403, 5, 1, 0, 0, 403, 405, 3, 72, 36, 0, 404, 402, 1, 0, 0, 0, 405, 408, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 410, 1, 0, 0, 0, 408, 406, 1, 0, 0, 0, 409, 401, 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 412, 5, 11, 0, 0, 412, 77, 1, 0, 0, 0, 413, 428, 5, 50, 0, 0, 414, 428, 5, 48, 0, 0, 415, 428, 5, 51, 0, 0, 416, 428, 5, 49, 0, 0, 417, 419, 5, 27, 0, 0, 418, 417, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 428, 3, 20, 10, 0, 421, 423, 5, 27, 0, 0, 422, 421, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 428, 3, 24, 12, 0, 425, 426, 5, 27, 0, 0, 426, 428, 3, 74, 37, 0, 427, 413, 1, 0, 0, 0, 427, 414, 1, 0, 0, 0, 427, 415, 1, 0, 0, 0, 427, 416, 1, 0, 0, 0, 427, 418, 1, 0, 0, 0, 427, 422, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 428, 79, 1, 0, 0, 0, 48, 83, 90, 97, 103, 116, 118, 127, 145, 156, 158, 162, 169, 174, 181, 190, 193, 197, 200, 203, 206, 213, 223, 227, 235, 242, 248, 253, 260, 266, 270, 278, 285, 300, 308, 311, 321, 332, 343, 367, 375, 385, 392, 397, 406, 409, 418, 422, 427] \ No newline at end of file diff --git a/mapcss/generated/MapCSS.tokens b/mapcss/generated/MapCSS.tokens index a66127cca..6b776f18b 100644 --- a/mapcss/generated/MapCSS.tokens +++ b/mapcss/generated/MapCSS.tokens @@ -32,55 +32,59 @@ OP_MINUS=31 OP_NOT=32 SET=33 IMPORT=34 -NCOMPONENT=35 -LBRACKET=36 -RBRACKET=37 -LBRACE=38 -RBRACE=39 -COLON=40 -SEMICOLON=41 -DQUOTED_STRING=42 -SQUOTED_STRING=43 -POSITIVE_INT=44 -NEGATIVE_INT=45 -POSITIVE_FLOAT=46 -NEGATIVE_FLOAT=47 -RANGE=48 -REGEXP=49 -WS=50 -SL_COMMENT=51 -ML_COMMENT=52 -STYLESHEET=53 -RULE=54 -SIMPLE_SELECTOR=55 -DESCENDANT_COMBINATOR=56 -CHILD_COMBINATOR=57 -PARENT_COMBINATOR=58 -TYPE_SELECTOR=59 -ZOOM_SELECTOR=60 -ATTRIBUTE_SELECTOR=61 -CLASS_SELECTOR=62 -PSEUDO_CLASS_SELECTOR=63 -LAYER_ID_SELECTOR=64 -DECLARATION_BLOCK=65 -DECLARATION=66 -VALUE_RGB=67 -VALUE_RGBA=68 -VALUE_URL=69 -VALUE_KEYWORD=70 -VALUE_QUOTED=71 -VALUE_FLOAT=72 -VALUE_INT=73 -VALUE_PERCENTAGE=74 -VALUE_POINTS=75 -VALUE_PIXELS=76 -VALUE_LIST=77 -VALUE_REGEXP=78 -VALUE_INCREMENT=79 -FUNCTION_CALL=80 -PREDICATE=81 -TR_CALL=82 -EVAL_CALL=83 +SUPPORTS=35 +SUPPORTS_NOT=36 +SUPPORTS_AND=37 +SUPPORTS_OR=38 +NCOMPONENT=39 +LBRACKET=40 +RBRACKET=41 +LBRACE=42 +RBRACE=43 +COLON=44 +SEMICOLON=45 +DQUOTED_STRING=46 +SQUOTED_STRING=47 +POSITIVE_INT=48 +NEGATIVE_INT=49 +POSITIVE_FLOAT=50 +NEGATIVE_FLOAT=51 +RANGE=52 +REGEXP=53 +WS=54 +SL_COMMENT=55 +ML_COMMENT=56 +STYLESHEET=57 +RULE=58 +SIMPLE_SELECTOR=59 +DESCENDANT_COMBINATOR=60 +CHILD_COMBINATOR=61 +PARENT_COMBINATOR=62 +TYPE_SELECTOR=63 +ZOOM_SELECTOR=64 +ATTRIBUTE_SELECTOR=65 +CLASS_SELECTOR=66 +PSEUDO_CLASS_SELECTOR=67 +LAYER_ID_SELECTOR=68 +DECLARATION_BLOCK=69 +DECLARATION=70 +VALUE_RGB=71 +VALUE_RGBA=72 +VALUE_URL=73 +VALUE_KEYWORD=74 +VALUE_QUOTED=75 +VALUE_FLOAT=76 +VALUE_INT=77 +VALUE_PERCENTAGE=78 +VALUE_POINTS=79 +VALUE_PIXELS=80 +VALUE_LIST=81 +VALUE_REGEXP=82 +VALUE_INCREMENT=83 +FUNCTION_CALL=84 +PREDICATE=85 +TR_CALL=86 +EVAL_CALL=87 ','=1 '?'=2 '?!'=3 @@ -112,9 +116,9 @@ EVAL_CALL=83 '+'=30 '-'=31 '!'=32 -'['=36 -']'=37 -'{'=38 -'}'=39 -':'=40 -';'=41 +'['=40 +']'=41 +'{'=42 +'}'=43 +':'=44 +';'=45 diff --git a/mapcss/generated/MapCSSLexer.interp b/mapcss/generated/MapCSSLexer.interp index d29f8ecf6..4220a518a 100644 --- a/mapcss/generated/MapCSSLexer.interp +++ b/mapcss/generated/MapCSSLexer.interp @@ -35,6 +35,10 @@ null null null null +null +null +null +null '[' ']' '{' @@ -89,6 +93,10 @@ OP_MINUS OP_NOT SET IMPORT +SUPPORTS +SUPPORTS_NOT +SUPPORTS_AND +SUPPORTS_OR NCOMPONENT LBRACKET RBRACKET @@ -145,6 +153,10 @@ OP_MINUS OP_NOT SET IMPORT +SUPPORTS +SUPPORTS_NOT +SUPPORTS_AND +SUPPORTS_OR DIGIT CHAR NONASCII @@ -182,4 +194,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 52, 406, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 3, 14, 163, 8, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 3, 39, 234, 8, 39, 1, 40, 1, 40, 3, 40, 238, 8, 40, 1, 41, 1, 41, 3, 41, 242, 8, 41, 1, 41, 1, 41, 1, 41, 5, 41, 247, 8, 41, 10, 41, 12, 41, 250, 9, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 275, 8, 50, 10, 50, 12, 50, 278, 9, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 287, 8, 51, 10, 51, 12, 51, 290, 9, 51, 1, 51, 1, 51, 1, 52, 4, 52, 295, 8, 52, 11, 52, 12, 52, 296, 1, 53, 1, 53, 1, 53, 1, 54, 4, 54, 303, 8, 54, 11, 54, 12, 54, 304, 1, 54, 5, 54, 308, 8, 54, 10, 54, 12, 54, 311, 9, 54, 1, 54, 1, 54, 4, 54, 315, 8, 54, 11, 54, 12, 54, 316, 3, 54, 319, 8, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 4, 56, 329, 8, 56, 11, 56, 12, 56, 330, 1, 56, 4, 56, 334, 8, 56, 11, 56, 12, 56, 335, 1, 56, 1, 56, 4, 56, 340, 8, 56, 11, 56, 12, 56, 341, 3, 56, 344, 8, 56, 3, 56, 346, 8, 56, 3, 56, 348, 8, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 3, 58, 356, 8, 58, 1, 59, 1, 59, 1, 59, 3, 59, 361, 8, 59, 1, 60, 1, 60, 1, 60, 5, 60, 366, 8, 60, 10, 60, 12, 60, 369, 9, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 381, 8, 62, 10, 62, 12, 62, 384, 9, 62, 1, 62, 3, 62, 387, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 5, 63, 397, 8, 63, 10, 63, 12, 63, 400, 9, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 2, 382, 398, 0, 64, 1, 0, 3, 0, 5, 1, 7, 2, 9, 3, 11, 4, 13, 5, 15, 6, 17, 7, 19, 8, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 18, 41, 19, 43, 20, 45, 21, 47, 22, 49, 23, 51, 24, 53, 25, 55, 26, 57, 27, 59, 28, 61, 29, 63, 30, 65, 31, 67, 32, 69, 33, 71, 34, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 35, 85, 36, 87, 37, 89, 38, 91, 39, 93, 40, 95, 41, 97, 0, 99, 0, 101, 42, 103, 43, 105, 44, 107, 45, 109, 46, 111, 47, 113, 48, 115, 0, 117, 0, 119, 0, 121, 49, 123, 50, 125, 51, 127, 52, 1, 0, 19, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 84, 84, 116, 116, 2, 0, 73, 73, 105, 105, 2, 0, 77, 77, 109, 109, 2, 0, 80, 80, 112, 112, 2, 0, 79, 79, 111, 111, 2, 0, 82, 82, 114, 114, 2, 0, 65, 90, 97, 122, 1, 0, 0, 159, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 45, 45, 65, 90, 95, 95, 97, 122, 2, 0, 45, 45, 95, 95, 4, 0, 32, 33, 35, 91, 93, 126, 176, 176, 4, 0, 32, 38, 40, 91, 93, 126, 176, 176, 1, 0, 48, 57, 4, 0, 32, 41, 43, 46, 48, 126, 176, 176, 3, 0, 32, 46, 48, 126, 176, 176, 3, 0, 9, 10, 12, 13, 32, 32, 427, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 1, 129, 1, 0, 0, 0, 3, 132, 1, 0, 0, 0, 5, 134, 1, 0, 0, 0, 7, 136, 1, 0, 0, 0, 9, 138, 1, 0, 0, 0, 11, 141, 1, 0, 0, 0, 13, 143, 1, 0, 0, 0, 15, 145, 1, 0, 0, 0, 17, 147, 1, 0, 0, 0, 19, 149, 1, 0, 0, 0, 21, 151, 1, 0, 0, 0, 23, 153, 1, 0, 0, 0, 25, 155, 1, 0, 0, 0, 27, 157, 1, 0, 0, 0, 29, 162, 1, 0, 0, 0, 31, 164, 1, 0, 0, 0, 33, 167, 1, 0, 0, 0, 35, 170, 1, 0, 0, 0, 37, 173, 1, 0, 0, 0, 39, 175, 1, 0, 0, 0, 41, 177, 1, 0, 0, 0, 43, 180, 1, 0, 0, 0, 45, 183, 1, 0, 0, 0, 47, 186, 1, 0, 0, 0, 49, 189, 1, 0, 0, 0, 51, 192, 1, 0, 0, 0, 53, 195, 1, 0, 0, 0, 55, 198, 1, 0, 0, 0, 57, 201, 1, 0, 0, 0, 59, 203, 1, 0, 0, 0, 61, 205, 1, 0, 0, 0, 63, 207, 1, 0, 0, 0, 65, 209, 1, 0, 0, 0, 67, 211, 1, 0, 0, 0, 69, 213, 1, 0, 0, 0, 71, 217, 1, 0, 0, 0, 73, 225, 1, 0, 0, 0, 75, 227, 1, 0, 0, 0, 77, 229, 1, 0, 0, 0, 79, 233, 1, 0, 0, 0, 81, 237, 1, 0, 0, 0, 83, 241, 1, 0, 0, 0, 85, 251, 1, 0, 0, 0, 87, 253, 1, 0, 0, 0, 89, 255, 1, 0, 0, 0, 91, 257, 1, 0, 0, 0, 93, 259, 1, 0, 0, 0, 95, 261, 1, 0, 0, 0, 97, 263, 1, 0, 0, 0, 99, 266, 1, 0, 0, 0, 101, 269, 1, 0, 0, 0, 103, 281, 1, 0, 0, 0, 105, 294, 1, 0, 0, 0, 107, 298, 1, 0, 0, 0, 109, 318, 1, 0, 0, 0, 111, 320, 1, 0, 0, 0, 113, 323, 1, 0, 0, 0, 115, 349, 1, 0, 0, 0, 117, 355, 1, 0, 0, 0, 119, 360, 1, 0, 0, 0, 121, 362, 1, 0, 0, 0, 123, 372, 1, 0, 0, 0, 125, 376, 1, 0, 0, 0, 127, 392, 1, 0, 0, 0, 129, 130, 5, 92, 0, 0, 130, 131, 5, 92, 0, 0, 131, 2, 1, 0, 0, 0, 132, 133, 2, 128, 65533, 0, 133, 4, 1, 0, 0, 0, 134, 135, 5, 44, 0, 0, 135, 6, 1, 0, 0, 0, 136, 137, 5, 63, 0, 0, 137, 8, 1, 0, 0, 0, 138, 139, 5, 63, 0, 0, 139, 140, 5, 33, 0, 0, 140, 10, 1, 0, 0, 0, 141, 142, 5, 8712, 0, 0, 142, 12, 1, 0, 0, 0, 143, 144, 5, 10697, 0, 0, 144, 14, 1, 0, 0, 0, 145, 146, 5, 8838, 0, 0, 146, 16, 1, 0, 0, 0, 147, 148, 5, 8839, 0, 0, 148, 18, 1, 0, 0, 0, 149, 150, 5, 8840, 0, 0, 150, 20, 1, 0, 0, 0, 151, 152, 5, 8841, 0, 0, 152, 22, 1, 0, 0, 0, 153, 154, 5, 40, 0, 0, 154, 24, 1, 0, 0, 0, 155, 156, 5, 41, 0, 0, 156, 26, 1, 0, 0, 0, 157, 158, 5, 46, 0, 0, 158, 28, 1, 0, 0, 0, 159, 163, 5, 61, 0, 0, 160, 161, 5, 61, 0, 0, 161, 163, 5, 61, 0, 0, 162, 159, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 163, 30, 1, 0, 0, 0, 164, 165, 5, 33, 0, 0, 165, 166, 5, 61, 0, 0, 166, 32, 1, 0, 0, 0, 167, 168, 5, 60, 0, 0, 168, 169, 5, 61, 0, 0, 169, 34, 1, 0, 0, 0, 170, 171, 5, 62, 0, 0, 171, 172, 5, 61, 0, 0, 172, 36, 1, 0, 0, 0, 173, 174, 5, 60, 0, 0, 174, 38, 1, 0, 0, 0, 175, 176, 5, 62, 0, 0, 176, 40, 1, 0, 0, 0, 177, 178, 5, 61, 0, 0, 178, 179, 5, 126, 0, 0, 179, 42, 1, 0, 0, 0, 180, 181, 5, 33, 0, 0, 181, 182, 5, 126, 0, 0, 182, 44, 1, 0, 0, 0, 183, 184, 5, 94, 0, 0, 184, 185, 5, 61, 0, 0, 185, 46, 1, 0, 0, 0, 186, 187, 5, 36, 0, 0, 187, 188, 5, 61, 0, 0, 188, 48, 1, 0, 0, 0, 189, 190, 5, 42, 0, 0, 190, 191, 5, 61, 0, 0, 191, 50, 1, 0, 0, 0, 192, 193, 5, 126, 0, 0, 193, 194, 5, 61, 0, 0, 194, 52, 1, 0, 0, 0, 195, 196, 5, 124, 0, 0, 196, 197, 5, 124, 0, 0, 197, 54, 1, 0, 0, 0, 198, 199, 5, 38, 0, 0, 199, 200, 5, 38, 0, 0, 200, 56, 1, 0, 0, 0, 201, 202, 5, 42, 0, 0, 202, 58, 1, 0, 0, 0, 203, 204, 5, 47, 0, 0, 204, 60, 1, 0, 0, 0, 205, 206, 5, 37, 0, 0, 206, 62, 1, 0, 0, 0, 207, 208, 5, 43, 0, 0, 208, 64, 1, 0, 0, 0, 209, 210, 5, 45, 0, 0, 210, 66, 1, 0, 0, 0, 211, 212, 5, 33, 0, 0, 212, 68, 1, 0, 0, 0, 213, 214, 7, 0, 0, 0, 214, 215, 7, 1, 0, 0, 215, 216, 7, 2, 0, 0, 216, 70, 1, 0, 0, 0, 217, 218, 5, 64, 0, 0, 218, 219, 7, 3, 0, 0, 219, 220, 7, 4, 0, 0, 220, 221, 7, 5, 0, 0, 221, 222, 7, 6, 0, 0, 222, 223, 7, 7, 0, 0, 223, 224, 7, 2, 0, 0, 224, 72, 1, 0, 0, 0, 225, 226, 2, 48, 57, 0, 226, 74, 1, 0, 0, 0, 227, 228, 7, 8, 0, 0, 228, 76, 1, 0, 0, 0, 229, 230, 8, 9, 0, 0, 230, 78, 1, 0, 0, 0, 231, 234, 7, 10, 0, 0, 232, 234, 3, 77, 38, 0, 233, 231, 1, 0, 0, 0, 233, 232, 1, 0, 0, 0, 234, 80, 1, 0, 0, 0, 235, 238, 7, 11, 0, 0, 236, 238, 3, 77, 38, 0, 237, 235, 1, 0, 0, 0, 237, 236, 1, 0, 0, 0, 238, 82, 1, 0, 0, 0, 239, 242, 3, 75, 37, 0, 240, 242, 5, 95, 0, 0, 241, 239, 1, 0, 0, 0, 241, 240, 1, 0, 0, 0, 242, 248, 1, 0, 0, 0, 243, 247, 3, 75, 37, 0, 244, 247, 3, 73, 36, 0, 245, 247, 7, 12, 0, 0, 246, 243, 1, 0, 0, 0, 246, 244, 1, 0, 0, 0, 246, 245, 1, 0, 0, 0, 247, 250, 1, 0, 0, 0, 248, 246, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 84, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 252, 5, 91, 0, 0, 252, 86, 1, 0, 0, 0, 253, 254, 5, 93, 0, 0, 254, 88, 1, 0, 0, 0, 255, 256, 5, 123, 0, 0, 256, 90, 1, 0, 0, 0, 257, 258, 5, 125, 0, 0, 258, 92, 1, 0, 0, 0, 259, 260, 5, 58, 0, 0, 260, 94, 1, 0, 0, 0, 261, 262, 5, 59, 0, 0, 262, 96, 1, 0, 0, 0, 263, 264, 5, 92, 0, 0, 264, 265, 5, 34, 0, 0, 265, 98, 1, 0, 0, 0, 266, 267, 5, 92, 0, 0, 267, 268, 5, 39, 0, 0, 268, 100, 1, 0, 0, 0, 269, 276, 5, 34, 0, 0, 270, 275, 7, 13, 0, 0, 271, 275, 3, 3, 1, 0, 272, 275, 3, 97, 48, 0, 273, 275, 3, 1, 0, 0, 274, 270, 1, 0, 0, 0, 274, 271, 1, 0, 0, 0, 274, 272, 1, 0, 0, 0, 274, 273, 1, 0, 0, 0, 275, 278, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 279, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 279, 280, 5, 34, 0, 0, 280, 102, 1, 0, 0, 0, 281, 288, 5, 39, 0, 0, 282, 287, 7, 14, 0, 0, 283, 287, 3, 3, 1, 0, 284, 287, 3, 99, 49, 0, 285, 287, 3, 1, 0, 0, 286, 282, 1, 0, 0, 0, 286, 283, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 286, 285, 1, 0, 0, 0, 287, 290, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 291, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0, 291, 292, 5, 39, 0, 0, 292, 104, 1, 0, 0, 0, 293, 295, 7, 15, 0, 0, 294, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 294, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 106, 1, 0, 0, 0, 298, 299, 5, 45, 0, 0, 299, 300, 3, 105, 52, 0, 300, 108, 1, 0, 0, 0, 301, 303, 7, 15, 0, 0, 302, 301, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 319, 1, 0, 0, 0, 306, 308, 7, 15, 0, 0, 307, 306, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 312, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 312, 314, 5, 46, 0, 0, 313, 315, 7, 15, 0, 0, 314, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 319, 1, 0, 0, 0, 318, 302, 1, 0, 0, 0, 318, 309, 1, 0, 0, 0, 319, 110, 1, 0, 0, 0, 320, 321, 5, 45, 0, 0, 321, 322, 3, 109, 54, 0, 322, 112, 1, 0, 0, 0, 323, 324, 5, 124, 0, 0, 324, 325, 5, 122, 0, 0, 325, 347, 1, 0, 0, 0, 326, 328, 5, 45, 0, 0, 327, 329, 3, 73, 36, 0, 328, 327, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 348, 1, 0, 0, 0, 332, 334, 3, 73, 36, 0, 333, 332, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 335, 336, 1, 0, 0, 0, 336, 345, 1, 0, 0, 0, 337, 343, 5, 45, 0, 0, 338, 340, 3, 73, 36, 0, 339, 338, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 344, 1, 0, 0, 0, 343, 339, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 346, 1, 0, 0, 0, 345, 337, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 326, 1, 0, 0, 0, 347, 333, 1, 0, 0, 0, 348, 114, 1, 0, 0, 0, 349, 350, 5, 92, 0, 0, 350, 351, 5, 47, 0, 0, 351, 116, 1, 0, 0, 0, 352, 356, 3, 115, 57, 0, 353, 356, 7, 16, 0, 0, 354, 356, 3, 3, 1, 0, 355, 352, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 355, 354, 1, 0, 0, 0, 356, 118, 1, 0, 0, 0, 357, 361, 3, 115, 57, 0, 358, 361, 7, 17, 0, 0, 359, 361, 3, 3, 1, 0, 360, 357, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 359, 1, 0, 0, 0, 361, 120, 1, 0, 0, 0, 362, 363, 5, 47, 0, 0, 363, 367, 3, 117, 58, 0, 364, 366, 3, 119, 59, 0, 365, 364, 1, 0, 0, 0, 366, 369, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 370, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 370, 371, 5, 47, 0, 0, 371, 122, 1, 0, 0, 0, 372, 373, 7, 18, 0, 0, 373, 374, 1, 0, 0, 0, 374, 375, 6, 61, 0, 0, 375, 124, 1, 0, 0, 0, 376, 377, 5, 47, 0, 0, 377, 378, 5, 47, 0, 0, 378, 382, 1, 0, 0, 0, 379, 381, 9, 0, 0, 0, 380, 379, 1, 0, 0, 0, 381, 384, 1, 0, 0, 0, 382, 383, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 386, 1, 0, 0, 0, 384, 382, 1, 0, 0, 0, 385, 387, 5, 13, 0, 0, 386, 385, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389, 5, 10, 0, 0, 389, 390, 1, 0, 0, 0, 390, 391, 6, 62, 0, 0, 391, 126, 1, 0, 0, 0, 392, 393, 5, 47, 0, 0, 393, 394, 5, 42, 0, 0, 394, 398, 1, 0, 0, 0, 395, 397, 9, 0, 0, 0, 396, 395, 1, 0, 0, 0, 397, 400, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 401, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 401, 402, 5, 42, 0, 0, 402, 403, 5, 47, 0, 0, 403, 404, 1, 0, 0, 0, 404, 405, 6, 63, 0, 0, 405, 128, 1, 0, 0, 0, 28, 0, 162, 233, 237, 241, 246, 248, 274, 276, 286, 288, 296, 304, 309, 316, 318, 330, 335, 341, 343, 345, 347, 355, 360, 367, 382, 386, 398, 1, 0, 1, 0] \ No newline at end of file +[4, 0, 56, 438, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 3, 14, 171, 8, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 3, 43, 266, 8, 43, 1, 44, 1, 44, 3, 44, 270, 8, 44, 1, 45, 1, 45, 3, 45, 274, 8, 45, 1, 45, 1, 45, 1, 45, 5, 45, 279, 8, 45, 10, 45, 12, 45, 282, 9, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 307, 8, 54, 10, 54, 12, 54, 310, 9, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 319, 8, 55, 10, 55, 12, 55, 322, 9, 55, 1, 55, 1, 55, 1, 56, 4, 56, 327, 8, 56, 11, 56, 12, 56, 328, 1, 57, 1, 57, 1, 57, 1, 58, 4, 58, 335, 8, 58, 11, 58, 12, 58, 336, 1, 58, 5, 58, 340, 8, 58, 10, 58, 12, 58, 343, 9, 58, 1, 58, 1, 58, 4, 58, 347, 8, 58, 11, 58, 12, 58, 348, 3, 58, 351, 8, 58, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 4, 60, 361, 8, 60, 11, 60, 12, 60, 362, 1, 60, 4, 60, 366, 8, 60, 11, 60, 12, 60, 367, 1, 60, 1, 60, 4, 60, 372, 8, 60, 11, 60, 12, 60, 373, 3, 60, 376, 8, 60, 3, 60, 378, 8, 60, 3, 60, 380, 8, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 3, 62, 388, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 393, 8, 63, 1, 64, 1, 64, 1, 64, 5, 64, 398, 8, 64, 10, 64, 12, 64, 401, 9, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 413, 8, 66, 10, 66, 12, 66, 416, 9, 66, 1, 66, 3, 66, 419, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 429, 8, 67, 10, 67, 12, 67, 432, 9, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 2, 414, 430, 0, 68, 1, 0, 3, 0, 5, 1, 7, 2, 9, 3, 11, 4, 13, 5, 15, 6, 17, 7, 19, 8, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 18, 41, 19, 43, 20, 45, 21, 47, 22, 49, 23, 51, 24, 53, 25, 55, 26, 57, 27, 59, 28, 61, 29, 63, 30, 65, 31, 67, 32, 69, 33, 71, 34, 73, 35, 75, 36, 77, 37, 79, 38, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 39, 93, 40, 95, 41, 97, 42, 99, 43, 101, 44, 103, 45, 105, 0, 107, 0, 109, 46, 111, 47, 113, 48, 115, 49, 117, 50, 119, 51, 121, 52, 123, 0, 125, 0, 127, 0, 129, 53, 131, 54, 133, 55, 135, 56, 1, 0, 23, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 84, 84, 116, 116, 2, 0, 73, 73, 105, 105, 2, 0, 77, 77, 109, 109, 2, 0, 80, 80, 112, 112, 2, 0, 79, 79, 111, 111, 2, 0, 82, 82, 114, 114, 2, 0, 85, 85, 117, 117, 2, 0, 78, 78, 110, 110, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 65, 90, 97, 122, 1, 0, 0, 159, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 45, 45, 65, 90, 95, 95, 97, 122, 2, 0, 45, 45, 95, 95, 4, 0, 32, 33, 35, 91, 93, 126, 176, 176, 4, 0, 32, 38, 40, 91, 93, 126, 176, 176, 1, 0, 48, 57, 4, 0, 32, 41, 43, 46, 48, 126, 176, 176, 3, 0, 32, 46, 48, 126, 176, 176, 3, 0, 9, 10, 12, 13, 32, 32, 459, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 1, 137, 1, 0, 0, 0, 3, 140, 1, 0, 0, 0, 5, 142, 1, 0, 0, 0, 7, 144, 1, 0, 0, 0, 9, 146, 1, 0, 0, 0, 11, 149, 1, 0, 0, 0, 13, 151, 1, 0, 0, 0, 15, 153, 1, 0, 0, 0, 17, 155, 1, 0, 0, 0, 19, 157, 1, 0, 0, 0, 21, 159, 1, 0, 0, 0, 23, 161, 1, 0, 0, 0, 25, 163, 1, 0, 0, 0, 27, 165, 1, 0, 0, 0, 29, 170, 1, 0, 0, 0, 31, 172, 1, 0, 0, 0, 33, 175, 1, 0, 0, 0, 35, 178, 1, 0, 0, 0, 37, 181, 1, 0, 0, 0, 39, 183, 1, 0, 0, 0, 41, 185, 1, 0, 0, 0, 43, 188, 1, 0, 0, 0, 45, 191, 1, 0, 0, 0, 47, 194, 1, 0, 0, 0, 49, 197, 1, 0, 0, 0, 51, 200, 1, 0, 0, 0, 53, 203, 1, 0, 0, 0, 55, 206, 1, 0, 0, 0, 57, 209, 1, 0, 0, 0, 59, 211, 1, 0, 0, 0, 61, 213, 1, 0, 0, 0, 63, 215, 1, 0, 0, 0, 65, 217, 1, 0, 0, 0, 67, 219, 1, 0, 0, 0, 69, 221, 1, 0, 0, 0, 71, 225, 1, 0, 0, 0, 73, 233, 1, 0, 0, 0, 75, 243, 1, 0, 0, 0, 77, 248, 1, 0, 0, 0, 79, 253, 1, 0, 0, 0, 81, 257, 1, 0, 0, 0, 83, 259, 1, 0, 0, 0, 85, 261, 1, 0, 0, 0, 87, 265, 1, 0, 0, 0, 89, 269, 1, 0, 0, 0, 91, 273, 1, 0, 0, 0, 93, 283, 1, 0, 0, 0, 95, 285, 1, 0, 0, 0, 97, 287, 1, 0, 0, 0, 99, 289, 1, 0, 0, 0, 101, 291, 1, 0, 0, 0, 103, 293, 1, 0, 0, 0, 105, 295, 1, 0, 0, 0, 107, 298, 1, 0, 0, 0, 109, 301, 1, 0, 0, 0, 111, 313, 1, 0, 0, 0, 113, 326, 1, 0, 0, 0, 115, 330, 1, 0, 0, 0, 117, 350, 1, 0, 0, 0, 119, 352, 1, 0, 0, 0, 121, 355, 1, 0, 0, 0, 123, 381, 1, 0, 0, 0, 125, 387, 1, 0, 0, 0, 127, 392, 1, 0, 0, 0, 129, 394, 1, 0, 0, 0, 131, 404, 1, 0, 0, 0, 133, 408, 1, 0, 0, 0, 135, 424, 1, 0, 0, 0, 137, 138, 5, 92, 0, 0, 138, 139, 5, 92, 0, 0, 139, 2, 1, 0, 0, 0, 140, 141, 2, 128, 65533, 0, 141, 4, 1, 0, 0, 0, 142, 143, 5, 44, 0, 0, 143, 6, 1, 0, 0, 0, 144, 145, 5, 63, 0, 0, 145, 8, 1, 0, 0, 0, 146, 147, 5, 63, 0, 0, 147, 148, 5, 33, 0, 0, 148, 10, 1, 0, 0, 0, 149, 150, 5, 8712, 0, 0, 150, 12, 1, 0, 0, 0, 151, 152, 5, 10697, 0, 0, 152, 14, 1, 0, 0, 0, 153, 154, 5, 8838, 0, 0, 154, 16, 1, 0, 0, 0, 155, 156, 5, 8839, 0, 0, 156, 18, 1, 0, 0, 0, 157, 158, 5, 8840, 0, 0, 158, 20, 1, 0, 0, 0, 159, 160, 5, 8841, 0, 0, 160, 22, 1, 0, 0, 0, 161, 162, 5, 40, 0, 0, 162, 24, 1, 0, 0, 0, 163, 164, 5, 41, 0, 0, 164, 26, 1, 0, 0, 0, 165, 166, 5, 46, 0, 0, 166, 28, 1, 0, 0, 0, 167, 171, 5, 61, 0, 0, 168, 169, 5, 61, 0, 0, 169, 171, 5, 61, 0, 0, 170, 167, 1, 0, 0, 0, 170, 168, 1, 0, 0, 0, 171, 30, 1, 0, 0, 0, 172, 173, 5, 33, 0, 0, 173, 174, 5, 61, 0, 0, 174, 32, 1, 0, 0, 0, 175, 176, 5, 60, 0, 0, 176, 177, 5, 61, 0, 0, 177, 34, 1, 0, 0, 0, 178, 179, 5, 62, 0, 0, 179, 180, 5, 61, 0, 0, 180, 36, 1, 0, 0, 0, 181, 182, 5, 60, 0, 0, 182, 38, 1, 0, 0, 0, 183, 184, 5, 62, 0, 0, 184, 40, 1, 0, 0, 0, 185, 186, 5, 61, 0, 0, 186, 187, 5, 126, 0, 0, 187, 42, 1, 0, 0, 0, 188, 189, 5, 33, 0, 0, 189, 190, 5, 126, 0, 0, 190, 44, 1, 0, 0, 0, 191, 192, 5, 94, 0, 0, 192, 193, 5, 61, 0, 0, 193, 46, 1, 0, 0, 0, 194, 195, 5, 36, 0, 0, 195, 196, 5, 61, 0, 0, 196, 48, 1, 0, 0, 0, 197, 198, 5, 42, 0, 0, 198, 199, 5, 61, 0, 0, 199, 50, 1, 0, 0, 0, 200, 201, 5, 126, 0, 0, 201, 202, 5, 61, 0, 0, 202, 52, 1, 0, 0, 0, 203, 204, 5, 124, 0, 0, 204, 205, 5, 124, 0, 0, 205, 54, 1, 0, 0, 0, 206, 207, 5, 38, 0, 0, 207, 208, 5, 38, 0, 0, 208, 56, 1, 0, 0, 0, 209, 210, 5, 42, 0, 0, 210, 58, 1, 0, 0, 0, 211, 212, 5, 47, 0, 0, 212, 60, 1, 0, 0, 0, 213, 214, 5, 37, 0, 0, 214, 62, 1, 0, 0, 0, 215, 216, 5, 43, 0, 0, 216, 64, 1, 0, 0, 0, 217, 218, 5, 45, 0, 0, 218, 66, 1, 0, 0, 0, 219, 220, 5, 33, 0, 0, 220, 68, 1, 0, 0, 0, 221, 222, 7, 0, 0, 0, 222, 223, 7, 1, 0, 0, 223, 224, 7, 2, 0, 0, 224, 70, 1, 0, 0, 0, 225, 226, 5, 64, 0, 0, 226, 227, 7, 3, 0, 0, 227, 228, 7, 4, 0, 0, 228, 229, 7, 5, 0, 0, 229, 230, 7, 6, 0, 0, 230, 231, 7, 7, 0, 0, 231, 232, 7, 2, 0, 0, 232, 72, 1, 0, 0, 0, 233, 234, 5, 64, 0, 0, 234, 235, 7, 0, 0, 0, 235, 236, 7, 8, 0, 0, 236, 237, 7, 5, 0, 0, 237, 238, 7, 5, 0, 0, 238, 239, 7, 6, 0, 0, 239, 240, 7, 7, 0, 0, 240, 241, 7, 2, 0, 0, 241, 242, 7, 0, 0, 0, 242, 74, 1, 0, 0, 0, 243, 244, 7, 9, 0, 0, 244, 245, 7, 6, 0, 0, 245, 246, 7, 2, 0, 0, 246, 247, 3, 131, 65, 0, 247, 76, 1, 0, 0, 0, 248, 249, 7, 10, 0, 0, 249, 250, 7, 9, 0, 0, 250, 251, 7, 11, 0, 0, 251, 252, 3, 131, 65, 0, 252, 78, 1, 0, 0, 0, 253, 254, 7, 6, 0, 0, 254, 255, 7, 7, 0, 0, 255, 256, 3, 131, 65, 0, 256, 80, 1, 0, 0, 0, 257, 258, 2, 48, 57, 0, 258, 82, 1, 0, 0, 0, 259, 260, 7, 12, 0, 0, 260, 84, 1, 0, 0, 0, 261, 262, 8, 13, 0, 0, 262, 86, 1, 0, 0, 0, 263, 266, 7, 14, 0, 0, 264, 266, 3, 85, 42, 0, 265, 263, 1, 0, 0, 0, 265, 264, 1, 0, 0, 0, 266, 88, 1, 0, 0, 0, 267, 270, 7, 15, 0, 0, 268, 270, 3, 85, 42, 0, 269, 267, 1, 0, 0, 0, 269, 268, 1, 0, 0, 0, 270, 90, 1, 0, 0, 0, 271, 274, 3, 83, 41, 0, 272, 274, 5, 95, 0, 0, 273, 271, 1, 0, 0, 0, 273, 272, 1, 0, 0, 0, 274, 280, 1, 0, 0, 0, 275, 279, 3, 83, 41, 0, 276, 279, 3, 81, 40, 0, 277, 279, 7, 16, 0, 0, 278, 275, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 277, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 92, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 283, 284, 5, 91, 0, 0, 284, 94, 1, 0, 0, 0, 285, 286, 5, 93, 0, 0, 286, 96, 1, 0, 0, 0, 287, 288, 5, 123, 0, 0, 288, 98, 1, 0, 0, 0, 289, 290, 5, 125, 0, 0, 290, 100, 1, 0, 0, 0, 291, 292, 5, 58, 0, 0, 292, 102, 1, 0, 0, 0, 293, 294, 5, 59, 0, 0, 294, 104, 1, 0, 0, 0, 295, 296, 5, 92, 0, 0, 296, 297, 5, 34, 0, 0, 297, 106, 1, 0, 0, 0, 298, 299, 5, 92, 0, 0, 299, 300, 5, 39, 0, 0, 300, 108, 1, 0, 0, 0, 301, 308, 5, 34, 0, 0, 302, 307, 7, 17, 0, 0, 303, 307, 3, 3, 1, 0, 304, 307, 3, 105, 52, 0, 305, 307, 3, 1, 0, 0, 306, 302, 1, 0, 0, 0, 306, 303, 1, 0, 0, 0, 306, 304, 1, 0, 0, 0, 306, 305, 1, 0, 0, 0, 307, 310, 1, 0, 0, 0, 308, 306, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 311, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 311, 312, 5, 34, 0, 0, 312, 110, 1, 0, 0, 0, 313, 320, 5, 39, 0, 0, 314, 319, 7, 18, 0, 0, 315, 319, 3, 3, 1, 0, 316, 319, 3, 107, 53, 0, 317, 319, 3, 1, 0, 0, 318, 314, 1, 0, 0, 0, 318, 315, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 318, 317, 1, 0, 0, 0, 319, 322, 1, 0, 0, 0, 320, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 323, 1, 0, 0, 0, 322, 320, 1, 0, 0, 0, 323, 324, 5, 39, 0, 0, 324, 112, 1, 0, 0, 0, 325, 327, 7, 19, 0, 0, 326, 325, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 326, 1, 0, 0, 0, 328, 329, 1, 0, 0, 0, 329, 114, 1, 0, 0, 0, 330, 331, 5, 45, 0, 0, 331, 332, 3, 113, 56, 0, 332, 116, 1, 0, 0, 0, 333, 335, 7, 19, 0, 0, 334, 333, 1, 0, 0, 0, 335, 336, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 351, 1, 0, 0, 0, 338, 340, 7, 19, 0, 0, 339, 338, 1, 0, 0, 0, 340, 343, 1, 0, 0, 0, 341, 339, 1, 0, 0, 0, 341, 342, 1, 0, 0, 0, 342, 344, 1, 0, 0, 0, 343, 341, 1, 0, 0, 0, 344, 346, 5, 46, 0, 0, 345, 347, 7, 19, 0, 0, 346, 345, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 351, 1, 0, 0, 0, 350, 334, 1, 0, 0, 0, 350, 341, 1, 0, 0, 0, 351, 118, 1, 0, 0, 0, 352, 353, 5, 45, 0, 0, 353, 354, 3, 117, 58, 0, 354, 120, 1, 0, 0, 0, 355, 356, 5, 124, 0, 0, 356, 357, 5, 122, 0, 0, 357, 379, 1, 0, 0, 0, 358, 360, 5, 45, 0, 0, 359, 361, 3, 81, 40, 0, 360, 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 380, 1, 0, 0, 0, 364, 366, 3, 81, 40, 0, 365, 364, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 377, 1, 0, 0, 0, 369, 375, 5, 45, 0, 0, 370, 372, 3, 81, 40, 0, 371, 370, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 371, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 376, 1, 0, 0, 0, 375, 371, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 378, 1, 0, 0, 0, 377, 369, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 380, 1, 0, 0, 0, 379, 358, 1, 0, 0, 0, 379, 365, 1, 0, 0, 0, 380, 122, 1, 0, 0, 0, 381, 382, 5, 92, 0, 0, 382, 383, 5, 47, 0, 0, 383, 124, 1, 0, 0, 0, 384, 388, 3, 123, 61, 0, 385, 388, 7, 20, 0, 0, 386, 388, 3, 3, 1, 0, 387, 384, 1, 0, 0, 0, 387, 385, 1, 0, 0, 0, 387, 386, 1, 0, 0, 0, 388, 126, 1, 0, 0, 0, 389, 393, 3, 123, 61, 0, 390, 393, 7, 21, 0, 0, 391, 393, 3, 3, 1, 0, 392, 389, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 392, 391, 1, 0, 0, 0, 393, 128, 1, 0, 0, 0, 394, 395, 5, 47, 0, 0, 395, 399, 3, 125, 62, 0, 396, 398, 3, 127, 63, 0, 397, 396, 1, 0, 0, 0, 398, 401, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 402, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 402, 403, 5, 47, 0, 0, 403, 130, 1, 0, 0, 0, 404, 405, 7, 22, 0, 0, 405, 406, 1, 0, 0, 0, 406, 407, 6, 65, 0, 0, 407, 132, 1, 0, 0, 0, 408, 409, 5, 47, 0, 0, 409, 410, 5, 47, 0, 0, 410, 414, 1, 0, 0, 0, 411, 413, 9, 0, 0, 0, 412, 411, 1, 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 415, 418, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 419, 5, 13, 0, 0, 418, 417, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 421, 5, 10, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 6, 66, 0, 0, 423, 134, 1, 0, 0, 0, 424, 425, 5, 47, 0, 0, 425, 426, 5, 42, 0, 0, 426, 430, 1, 0, 0, 0, 427, 429, 9, 0, 0, 0, 428, 427, 1, 0, 0, 0, 429, 432, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 430, 428, 1, 0, 0, 0, 431, 433, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 433, 434, 5, 42, 0, 0, 434, 435, 5, 47, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 6, 67, 0, 0, 437, 136, 1, 0, 0, 0, 28, 0, 170, 265, 269, 273, 278, 280, 306, 308, 318, 320, 328, 336, 341, 348, 350, 362, 367, 373, 375, 377, 379, 387, 392, 399, 414, 418, 430, 1, 0, 1, 0] \ No newline at end of file diff --git a/mapcss/generated/MapCSSLexer.py b/mapcss/generated/MapCSSLexer.py index b0f4764a6..25481cbff 100644 --- a/mapcss/generated/MapCSSLexer.py +++ b/mapcss/generated/MapCSSLexer.py @@ -10,7 +10,7 @@ def serializedATN(): return [ - 4,0,52,406,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5, + 4,0,56,438,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5, 2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2, 13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7, 19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2, @@ -19,149 +19,161 @@ def serializedATN(): 39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7, 45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2, 52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7, - 58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,1,0,1,0,1,0, - 1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8, - 1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,12,1,12,1,13,1,13,1,14,1,14,1, - 14,3,14,163,8,14,1,15,1,15,1,15,1,16,1,16,1,16,1,17,1,17,1,17,1, - 18,1,18,1,19,1,19,1,20,1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,22,1, - 23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1,26,1,26,1,26,1,27,1, - 27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1, - 33,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1, - 36,1,36,1,37,1,37,1,38,1,38,1,39,1,39,3,39,234,8,39,1,40,1,40,3, - 40,238,8,40,1,41,1,41,3,41,242,8,41,1,41,1,41,1,41,5,41,247,8,41, - 10,41,12,41,250,9,41,1,42,1,42,1,43,1,43,1,44,1,44,1,45,1,45,1,46, - 1,46,1,47,1,47,1,48,1,48,1,48,1,49,1,49,1,49,1,50,1,50,1,50,1,50, - 1,50,5,50,275,8,50,10,50,12,50,278,9,50,1,50,1,50,1,51,1,51,1,51, - 1,51,1,51,5,51,287,8,51,10,51,12,51,290,9,51,1,51,1,51,1,52,4,52, - 295,8,52,11,52,12,52,296,1,53,1,53,1,53,1,54,4,54,303,8,54,11,54, - 12,54,304,1,54,5,54,308,8,54,10,54,12,54,311,9,54,1,54,1,54,4,54, - 315,8,54,11,54,12,54,316,3,54,319,8,54,1,55,1,55,1,55,1,56,1,56, - 1,56,1,56,1,56,4,56,329,8,56,11,56,12,56,330,1,56,4,56,334,8,56, - 11,56,12,56,335,1,56,1,56,4,56,340,8,56,11,56,12,56,341,3,56,344, - 8,56,3,56,346,8,56,3,56,348,8,56,1,57,1,57,1,57,1,58,1,58,1,58,3, - 58,356,8,58,1,59,1,59,1,59,3,59,361,8,59,1,60,1,60,1,60,5,60,366, - 8,60,10,60,12,60,369,9,60,1,60,1,60,1,61,1,61,1,61,1,61,1,62,1,62, - 1,62,1,62,5,62,381,8,62,10,62,12,62,384,9,62,1,62,3,62,387,8,62, - 1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,5,63,397,8,63,10,63,12,63, - 400,9,63,1,63,1,63,1,63,1,63,1,63,2,382,398,0,64,1,0,3,0,5,1,7,2, - 9,3,11,4,13,5,15,6,17,7,19,8,21,9,23,10,25,11,27,12,29,13,31,14, - 33,15,35,16,37,17,39,18,41,19,43,20,45,21,47,22,49,23,51,24,53,25, - 55,26,57,27,59,28,61,29,63,30,65,31,67,32,69,33,71,34,73,0,75,0, - 77,0,79,0,81,0,83,35,85,36,87,37,89,38,91,39,93,40,95,41,97,0,99, - 0,101,42,103,43,105,44,107,45,109,46,111,47,113,48,115,0,117,0,119, - 0,121,49,123,50,125,51,127,52,1,0,19,2,0,83,83,115,115,2,0,69,69, - 101,101,2,0,84,84,116,116,2,0,73,73,105,105,2,0,77,77,109,109,2, - 0,80,80,112,112,2,0,79,79,111,111,2,0,82,82,114,114,2,0,65,90,97, - 122,1,0,0,159,3,0,65,90,95,95,97,122,4,0,45,45,65,90,95,95,97,122, - 2,0,45,45,95,95,4,0,32,33,35,91,93,126,176,176,4,0,32,38,40,91,93, - 126,176,176,1,0,48,57,4,0,32,41,43,46,48,126,176,176,3,0,32,46,48, - 126,176,176,3,0,9,10,12,13,32,32,427,0,5,1,0,0,0,0,7,1,0,0,0,0,9, - 1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19, - 1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29, - 1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39, - 1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49, - 1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59, - 1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69, - 1,0,0,0,0,71,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89, - 1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,101,1,0,0,0,0,103, - 1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0, - 0,113,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1, - 0,0,0,1,129,1,0,0,0,3,132,1,0,0,0,5,134,1,0,0,0,7,136,1,0,0,0,9, - 138,1,0,0,0,11,141,1,0,0,0,13,143,1,0,0,0,15,145,1,0,0,0,17,147, - 1,0,0,0,19,149,1,0,0,0,21,151,1,0,0,0,23,153,1,0,0,0,25,155,1,0, - 0,0,27,157,1,0,0,0,29,162,1,0,0,0,31,164,1,0,0,0,33,167,1,0,0,0, - 35,170,1,0,0,0,37,173,1,0,0,0,39,175,1,0,0,0,41,177,1,0,0,0,43,180, - 1,0,0,0,45,183,1,0,0,0,47,186,1,0,0,0,49,189,1,0,0,0,51,192,1,0, - 0,0,53,195,1,0,0,0,55,198,1,0,0,0,57,201,1,0,0,0,59,203,1,0,0,0, - 61,205,1,0,0,0,63,207,1,0,0,0,65,209,1,0,0,0,67,211,1,0,0,0,69,213, - 1,0,0,0,71,217,1,0,0,0,73,225,1,0,0,0,75,227,1,0,0,0,77,229,1,0, - 0,0,79,233,1,0,0,0,81,237,1,0,0,0,83,241,1,0,0,0,85,251,1,0,0,0, - 87,253,1,0,0,0,89,255,1,0,0,0,91,257,1,0,0,0,93,259,1,0,0,0,95,261, - 1,0,0,0,97,263,1,0,0,0,99,266,1,0,0,0,101,269,1,0,0,0,103,281,1, - 0,0,0,105,294,1,0,0,0,107,298,1,0,0,0,109,318,1,0,0,0,111,320,1, - 0,0,0,113,323,1,0,0,0,115,349,1,0,0,0,117,355,1,0,0,0,119,360,1, - 0,0,0,121,362,1,0,0,0,123,372,1,0,0,0,125,376,1,0,0,0,127,392,1, - 0,0,0,129,130,5,92,0,0,130,131,5,92,0,0,131,2,1,0,0,0,132,133,2, - 128,65533,0,133,4,1,0,0,0,134,135,5,44,0,0,135,6,1,0,0,0,136,137, - 5,63,0,0,137,8,1,0,0,0,138,139,5,63,0,0,139,140,5,33,0,0,140,10, - 1,0,0,0,141,142,5,8712,0,0,142,12,1,0,0,0,143,144,5,10697,0,0,144, - 14,1,0,0,0,145,146,5,8838,0,0,146,16,1,0,0,0,147,148,5,8839,0,0, - 148,18,1,0,0,0,149,150,5,8840,0,0,150,20,1,0,0,0,151,152,5,8841, - 0,0,152,22,1,0,0,0,153,154,5,40,0,0,154,24,1,0,0,0,155,156,5,41, - 0,0,156,26,1,0,0,0,157,158,5,46,0,0,158,28,1,0,0,0,159,163,5,61, - 0,0,160,161,5,61,0,0,161,163,5,61,0,0,162,159,1,0,0,0,162,160,1, - 0,0,0,163,30,1,0,0,0,164,165,5,33,0,0,165,166,5,61,0,0,166,32,1, - 0,0,0,167,168,5,60,0,0,168,169,5,61,0,0,169,34,1,0,0,0,170,171,5, - 62,0,0,171,172,5,61,0,0,172,36,1,0,0,0,173,174,5,60,0,0,174,38,1, - 0,0,0,175,176,5,62,0,0,176,40,1,0,0,0,177,178,5,61,0,0,178,179,5, - 126,0,0,179,42,1,0,0,0,180,181,5,33,0,0,181,182,5,126,0,0,182,44, - 1,0,0,0,183,184,5,94,0,0,184,185,5,61,0,0,185,46,1,0,0,0,186,187, - 5,36,0,0,187,188,5,61,0,0,188,48,1,0,0,0,189,190,5,42,0,0,190,191, - 5,61,0,0,191,50,1,0,0,0,192,193,5,126,0,0,193,194,5,61,0,0,194,52, - 1,0,0,0,195,196,5,124,0,0,196,197,5,124,0,0,197,54,1,0,0,0,198,199, - 5,38,0,0,199,200,5,38,0,0,200,56,1,0,0,0,201,202,5,42,0,0,202,58, - 1,0,0,0,203,204,5,47,0,0,204,60,1,0,0,0,205,206,5,37,0,0,206,62, - 1,0,0,0,207,208,5,43,0,0,208,64,1,0,0,0,209,210,5,45,0,0,210,66, - 1,0,0,0,211,212,5,33,0,0,212,68,1,0,0,0,213,214,7,0,0,0,214,215, - 7,1,0,0,215,216,7,2,0,0,216,70,1,0,0,0,217,218,5,64,0,0,218,219, - 7,3,0,0,219,220,7,4,0,0,220,221,7,5,0,0,221,222,7,6,0,0,222,223, - 7,7,0,0,223,224,7,2,0,0,224,72,1,0,0,0,225,226,2,48,57,0,226,74, - 1,0,0,0,227,228,7,8,0,0,228,76,1,0,0,0,229,230,8,9,0,0,230,78,1, - 0,0,0,231,234,7,10,0,0,232,234,3,77,38,0,233,231,1,0,0,0,233,232, - 1,0,0,0,234,80,1,0,0,0,235,238,7,11,0,0,236,238,3,77,38,0,237,235, - 1,0,0,0,237,236,1,0,0,0,238,82,1,0,0,0,239,242,3,75,37,0,240,242, - 5,95,0,0,241,239,1,0,0,0,241,240,1,0,0,0,242,248,1,0,0,0,243,247, - 3,75,37,0,244,247,3,73,36,0,245,247,7,12,0,0,246,243,1,0,0,0,246, - 244,1,0,0,0,246,245,1,0,0,0,247,250,1,0,0,0,248,246,1,0,0,0,248, - 249,1,0,0,0,249,84,1,0,0,0,250,248,1,0,0,0,251,252,5,91,0,0,252, - 86,1,0,0,0,253,254,5,93,0,0,254,88,1,0,0,0,255,256,5,123,0,0,256, - 90,1,0,0,0,257,258,5,125,0,0,258,92,1,0,0,0,259,260,5,58,0,0,260, - 94,1,0,0,0,261,262,5,59,0,0,262,96,1,0,0,0,263,264,5,92,0,0,264, - 265,5,34,0,0,265,98,1,0,0,0,266,267,5,92,0,0,267,268,5,39,0,0,268, - 100,1,0,0,0,269,276,5,34,0,0,270,275,7,13,0,0,271,275,3,3,1,0,272, - 275,3,97,48,0,273,275,3,1,0,0,274,270,1,0,0,0,274,271,1,0,0,0,274, - 272,1,0,0,0,274,273,1,0,0,0,275,278,1,0,0,0,276,274,1,0,0,0,276, - 277,1,0,0,0,277,279,1,0,0,0,278,276,1,0,0,0,279,280,5,34,0,0,280, - 102,1,0,0,0,281,288,5,39,0,0,282,287,7,14,0,0,283,287,3,3,1,0,284, - 287,3,99,49,0,285,287,3,1,0,0,286,282,1,0,0,0,286,283,1,0,0,0,286, - 284,1,0,0,0,286,285,1,0,0,0,287,290,1,0,0,0,288,286,1,0,0,0,288, - 289,1,0,0,0,289,291,1,0,0,0,290,288,1,0,0,0,291,292,5,39,0,0,292, - 104,1,0,0,0,293,295,7,15,0,0,294,293,1,0,0,0,295,296,1,0,0,0,296, - 294,1,0,0,0,296,297,1,0,0,0,297,106,1,0,0,0,298,299,5,45,0,0,299, - 300,3,105,52,0,300,108,1,0,0,0,301,303,7,15,0,0,302,301,1,0,0,0, - 303,304,1,0,0,0,304,302,1,0,0,0,304,305,1,0,0,0,305,319,1,0,0,0, - 306,308,7,15,0,0,307,306,1,0,0,0,308,311,1,0,0,0,309,307,1,0,0,0, - 309,310,1,0,0,0,310,312,1,0,0,0,311,309,1,0,0,0,312,314,5,46,0,0, - 313,315,7,15,0,0,314,313,1,0,0,0,315,316,1,0,0,0,316,314,1,0,0,0, - 316,317,1,0,0,0,317,319,1,0,0,0,318,302,1,0,0,0,318,309,1,0,0,0, - 319,110,1,0,0,0,320,321,5,45,0,0,321,322,3,109,54,0,322,112,1,0, - 0,0,323,324,5,124,0,0,324,325,5,122,0,0,325,347,1,0,0,0,326,328, - 5,45,0,0,327,329,3,73,36,0,328,327,1,0,0,0,329,330,1,0,0,0,330,328, - 1,0,0,0,330,331,1,0,0,0,331,348,1,0,0,0,332,334,3,73,36,0,333,332, - 1,0,0,0,334,335,1,0,0,0,335,333,1,0,0,0,335,336,1,0,0,0,336,345, - 1,0,0,0,337,343,5,45,0,0,338,340,3,73,36,0,339,338,1,0,0,0,340,341, - 1,0,0,0,341,339,1,0,0,0,341,342,1,0,0,0,342,344,1,0,0,0,343,339, - 1,0,0,0,343,344,1,0,0,0,344,346,1,0,0,0,345,337,1,0,0,0,345,346, - 1,0,0,0,346,348,1,0,0,0,347,326,1,0,0,0,347,333,1,0,0,0,348,114, - 1,0,0,0,349,350,5,92,0,0,350,351,5,47,0,0,351,116,1,0,0,0,352,356, - 3,115,57,0,353,356,7,16,0,0,354,356,3,3,1,0,355,352,1,0,0,0,355, - 353,1,0,0,0,355,354,1,0,0,0,356,118,1,0,0,0,357,361,3,115,57,0,358, - 361,7,17,0,0,359,361,3,3,1,0,360,357,1,0,0,0,360,358,1,0,0,0,360, - 359,1,0,0,0,361,120,1,0,0,0,362,363,5,47,0,0,363,367,3,117,58,0, - 364,366,3,119,59,0,365,364,1,0,0,0,366,369,1,0,0,0,367,365,1,0,0, - 0,367,368,1,0,0,0,368,370,1,0,0,0,369,367,1,0,0,0,370,371,5,47,0, - 0,371,122,1,0,0,0,372,373,7,18,0,0,373,374,1,0,0,0,374,375,6,61, - 0,0,375,124,1,0,0,0,376,377,5,47,0,0,377,378,5,47,0,0,378,382,1, - 0,0,0,379,381,9,0,0,0,380,379,1,0,0,0,381,384,1,0,0,0,382,383,1, - 0,0,0,382,380,1,0,0,0,383,386,1,0,0,0,384,382,1,0,0,0,385,387,5, - 13,0,0,386,385,1,0,0,0,386,387,1,0,0,0,387,388,1,0,0,0,388,389,5, - 10,0,0,389,390,1,0,0,0,390,391,6,62,0,0,391,126,1,0,0,0,392,393, - 5,47,0,0,393,394,5,42,0,0,394,398,1,0,0,0,395,397,9,0,0,0,396,395, - 1,0,0,0,397,400,1,0,0,0,398,399,1,0,0,0,398,396,1,0,0,0,399,401, - 1,0,0,0,400,398,1,0,0,0,401,402,5,42,0,0,402,403,5,47,0,0,403,404, - 1,0,0,0,404,405,6,63,0,0,405,128,1,0,0,0,28,0,162,233,237,241,246, - 248,274,276,286,288,296,304,309,316,318,330,335,341,343,345,347, - 355,360,367,382,386,398,1,0,1,0 + 58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2, + 65,7,65,2,66,7,66,2,67,7,67,1,0,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3, + 1,4,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1, + 11,1,11,1,12,1,12,1,13,1,13,1,14,1,14,1,14,3,14,171,8,14,1,15,1, + 15,1,15,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1, + 20,1,20,1,21,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1, + 24,1,25,1,25,1,25,1,26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,1,29,1, + 29,1,30,1,30,1,31,1,31,1,32,1,32,1,33,1,33,1,34,1,34,1,34,1,34,1, + 35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1, + 36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1, + 38,1,38,1,39,1,39,1,39,1,39,1,40,1,40,1,41,1,41,1,42,1,42,1,43,1, + 43,3,43,266,8,43,1,44,1,44,3,44,270,8,44,1,45,1,45,3,45,274,8,45, + 1,45,1,45,1,45,5,45,279,8,45,10,45,12,45,282,9,45,1,46,1,46,1,47, + 1,47,1,48,1,48,1,49,1,49,1,50,1,50,1,51,1,51,1,52,1,52,1,52,1,53, + 1,53,1,53,1,54,1,54,1,54,1,54,1,54,5,54,307,8,54,10,54,12,54,310, + 9,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,5,55,319,8,55,10,55,12,55, + 322,9,55,1,55,1,55,1,56,4,56,327,8,56,11,56,12,56,328,1,57,1,57, + 1,57,1,58,4,58,335,8,58,11,58,12,58,336,1,58,5,58,340,8,58,10,58, + 12,58,343,9,58,1,58,1,58,4,58,347,8,58,11,58,12,58,348,3,58,351, + 8,58,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,4,60,361,8,60,11,60, + 12,60,362,1,60,4,60,366,8,60,11,60,12,60,367,1,60,1,60,4,60,372, + 8,60,11,60,12,60,373,3,60,376,8,60,3,60,378,8,60,3,60,380,8,60,1, + 61,1,61,1,61,1,62,1,62,1,62,3,62,388,8,62,1,63,1,63,1,63,3,63,393, + 8,63,1,64,1,64,1,64,5,64,398,8,64,10,64,12,64,401,9,64,1,64,1,64, + 1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,5,66,413,8,66,10,66,12,66, + 416,9,66,1,66,3,66,419,8,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1, + 67,5,67,429,8,67,10,67,12,67,432,9,67,1,67,1,67,1,67,1,67,1,67,2, + 414,430,0,68,1,0,3,0,5,1,7,2,9,3,11,4,13,5,15,6,17,7,19,8,21,9,23, + 10,25,11,27,12,29,13,31,14,33,15,35,16,37,17,39,18,41,19,43,20,45, + 21,47,22,49,23,51,24,53,25,55,26,57,27,59,28,61,29,63,30,65,31,67, + 32,69,33,71,34,73,35,75,36,77,37,79,38,81,0,83,0,85,0,87,0,89,0, + 91,39,93,40,95,41,97,42,99,43,101,44,103,45,105,0,107,0,109,46,111, + 47,113,48,115,49,117,50,119,51,121,52,123,0,125,0,127,0,129,53,131, + 54,133,55,135,56,1,0,23,2,0,83,83,115,115,2,0,69,69,101,101,2,0, + 84,84,116,116,2,0,73,73,105,105,2,0,77,77,109,109,2,0,80,80,112, + 112,2,0,79,79,111,111,2,0,82,82,114,114,2,0,85,85,117,117,2,0,78, + 78,110,110,2,0,65,65,97,97,2,0,68,68,100,100,2,0,65,90,97,122,1, + 0,0,159,3,0,65,90,95,95,97,122,4,0,45,45,65,90,95,95,97,122,2,0, + 45,45,95,95,4,0,32,33,35,91,93,126,176,176,4,0,32,38,40,91,93,126, + 176,176,1,0,48,57,4,0,32,41,43,46,48,126,176,176,3,0,32,46,48,126, + 176,176,3,0,9,10,12,13,32,32,459,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0, + 0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0, + 0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0, + 0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0, + 0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0, + 0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0, + 0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0, + 0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0, + 0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0, + 0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113, + 1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0, + 0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,1,137,1, + 0,0,0,3,140,1,0,0,0,5,142,1,0,0,0,7,144,1,0,0,0,9,146,1,0,0,0,11, + 149,1,0,0,0,13,151,1,0,0,0,15,153,1,0,0,0,17,155,1,0,0,0,19,157, + 1,0,0,0,21,159,1,0,0,0,23,161,1,0,0,0,25,163,1,0,0,0,27,165,1,0, + 0,0,29,170,1,0,0,0,31,172,1,0,0,0,33,175,1,0,0,0,35,178,1,0,0,0, + 37,181,1,0,0,0,39,183,1,0,0,0,41,185,1,0,0,0,43,188,1,0,0,0,45,191, + 1,0,0,0,47,194,1,0,0,0,49,197,1,0,0,0,51,200,1,0,0,0,53,203,1,0, + 0,0,55,206,1,0,0,0,57,209,1,0,0,0,59,211,1,0,0,0,61,213,1,0,0,0, + 63,215,1,0,0,0,65,217,1,0,0,0,67,219,1,0,0,0,69,221,1,0,0,0,71,225, + 1,0,0,0,73,233,1,0,0,0,75,243,1,0,0,0,77,248,1,0,0,0,79,253,1,0, + 0,0,81,257,1,0,0,0,83,259,1,0,0,0,85,261,1,0,0,0,87,265,1,0,0,0, + 89,269,1,0,0,0,91,273,1,0,0,0,93,283,1,0,0,0,95,285,1,0,0,0,97,287, + 1,0,0,0,99,289,1,0,0,0,101,291,1,0,0,0,103,293,1,0,0,0,105,295,1, + 0,0,0,107,298,1,0,0,0,109,301,1,0,0,0,111,313,1,0,0,0,113,326,1, + 0,0,0,115,330,1,0,0,0,117,350,1,0,0,0,119,352,1,0,0,0,121,355,1, + 0,0,0,123,381,1,0,0,0,125,387,1,0,0,0,127,392,1,0,0,0,129,394,1, + 0,0,0,131,404,1,0,0,0,133,408,1,0,0,0,135,424,1,0,0,0,137,138,5, + 92,0,0,138,139,5,92,0,0,139,2,1,0,0,0,140,141,2,128,65533,0,141, + 4,1,0,0,0,142,143,5,44,0,0,143,6,1,0,0,0,144,145,5,63,0,0,145,8, + 1,0,0,0,146,147,5,63,0,0,147,148,5,33,0,0,148,10,1,0,0,0,149,150, + 5,8712,0,0,150,12,1,0,0,0,151,152,5,10697,0,0,152,14,1,0,0,0,153, + 154,5,8838,0,0,154,16,1,0,0,0,155,156,5,8839,0,0,156,18,1,0,0,0, + 157,158,5,8840,0,0,158,20,1,0,0,0,159,160,5,8841,0,0,160,22,1,0, + 0,0,161,162,5,40,0,0,162,24,1,0,0,0,163,164,5,41,0,0,164,26,1,0, + 0,0,165,166,5,46,0,0,166,28,1,0,0,0,167,171,5,61,0,0,168,169,5,61, + 0,0,169,171,5,61,0,0,170,167,1,0,0,0,170,168,1,0,0,0,171,30,1,0, + 0,0,172,173,5,33,0,0,173,174,5,61,0,0,174,32,1,0,0,0,175,176,5,60, + 0,0,176,177,5,61,0,0,177,34,1,0,0,0,178,179,5,62,0,0,179,180,5,61, + 0,0,180,36,1,0,0,0,181,182,5,60,0,0,182,38,1,0,0,0,183,184,5,62, + 0,0,184,40,1,0,0,0,185,186,5,61,0,0,186,187,5,126,0,0,187,42,1,0, + 0,0,188,189,5,33,0,0,189,190,5,126,0,0,190,44,1,0,0,0,191,192,5, + 94,0,0,192,193,5,61,0,0,193,46,1,0,0,0,194,195,5,36,0,0,195,196, + 5,61,0,0,196,48,1,0,0,0,197,198,5,42,0,0,198,199,5,61,0,0,199,50, + 1,0,0,0,200,201,5,126,0,0,201,202,5,61,0,0,202,52,1,0,0,0,203,204, + 5,124,0,0,204,205,5,124,0,0,205,54,1,0,0,0,206,207,5,38,0,0,207, + 208,5,38,0,0,208,56,1,0,0,0,209,210,5,42,0,0,210,58,1,0,0,0,211, + 212,5,47,0,0,212,60,1,0,0,0,213,214,5,37,0,0,214,62,1,0,0,0,215, + 216,5,43,0,0,216,64,1,0,0,0,217,218,5,45,0,0,218,66,1,0,0,0,219, + 220,5,33,0,0,220,68,1,0,0,0,221,222,7,0,0,0,222,223,7,1,0,0,223, + 224,7,2,0,0,224,70,1,0,0,0,225,226,5,64,0,0,226,227,7,3,0,0,227, + 228,7,4,0,0,228,229,7,5,0,0,229,230,7,6,0,0,230,231,7,7,0,0,231, + 232,7,2,0,0,232,72,1,0,0,0,233,234,5,64,0,0,234,235,7,0,0,0,235, + 236,7,8,0,0,236,237,7,5,0,0,237,238,7,5,0,0,238,239,7,6,0,0,239, + 240,7,7,0,0,240,241,7,2,0,0,241,242,7,0,0,0,242,74,1,0,0,0,243,244, + 7,9,0,0,244,245,7,6,0,0,245,246,7,2,0,0,246,247,3,131,65,0,247,76, + 1,0,0,0,248,249,7,10,0,0,249,250,7,9,0,0,250,251,7,11,0,0,251,252, + 3,131,65,0,252,78,1,0,0,0,253,254,7,6,0,0,254,255,7,7,0,0,255,256, + 3,131,65,0,256,80,1,0,0,0,257,258,2,48,57,0,258,82,1,0,0,0,259,260, + 7,12,0,0,260,84,1,0,0,0,261,262,8,13,0,0,262,86,1,0,0,0,263,266, + 7,14,0,0,264,266,3,85,42,0,265,263,1,0,0,0,265,264,1,0,0,0,266,88, + 1,0,0,0,267,270,7,15,0,0,268,270,3,85,42,0,269,267,1,0,0,0,269,268, + 1,0,0,0,270,90,1,0,0,0,271,274,3,83,41,0,272,274,5,95,0,0,273,271, + 1,0,0,0,273,272,1,0,0,0,274,280,1,0,0,0,275,279,3,83,41,0,276,279, + 3,81,40,0,277,279,7,16,0,0,278,275,1,0,0,0,278,276,1,0,0,0,278,277, + 1,0,0,0,279,282,1,0,0,0,280,278,1,0,0,0,280,281,1,0,0,0,281,92,1, + 0,0,0,282,280,1,0,0,0,283,284,5,91,0,0,284,94,1,0,0,0,285,286,5, + 93,0,0,286,96,1,0,0,0,287,288,5,123,0,0,288,98,1,0,0,0,289,290,5, + 125,0,0,290,100,1,0,0,0,291,292,5,58,0,0,292,102,1,0,0,0,293,294, + 5,59,0,0,294,104,1,0,0,0,295,296,5,92,0,0,296,297,5,34,0,0,297,106, + 1,0,0,0,298,299,5,92,0,0,299,300,5,39,0,0,300,108,1,0,0,0,301,308, + 5,34,0,0,302,307,7,17,0,0,303,307,3,3,1,0,304,307,3,105,52,0,305, + 307,3,1,0,0,306,302,1,0,0,0,306,303,1,0,0,0,306,304,1,0,0,0,306, + 305,1,0,0,0,307,310,1,0,0,0,308,306,1,0,0,0,308,309,1,0,0,0,309, + 311,1,0,0,0,310,308,1,0,0,0,311,312,5,34,0,0,312,110,1,0,0,0,313, + 320,5,39,0,0,314,319,7,18,0,0,315,319,3,3,1,0,316,319,3,107,53,0, + 317,319,3,1,0,0,318,314,1,0,0,0,318,315,1,0,0,0,318,316,1,0,0,0, + 318,317,1,0,0,0,319,322,1,0,0,0,320,318,1,0,0,0,320,321,1,0,0,0, + 321,323,1,0,0,0,322,320,1,0,0,0,323,324,5,39,0,0,324,112,1,0,0,0, + 325,327,7,19,0,0,326,325,1,0,0,0,327,328,1,0,0,0,328,326,1,0,0,0, + 328,329,1,0,0,0,329,114,1,0,0,0,330,331,5,45,0,0,331,332,3,113,56, + 0,332,116,1,0,0,0,333,335,7,19,0,0,334,333,1,0,0,0,335,336,1,0,0, + 0,336,334,1,0,0,0,336,337,1,0,0,0,337,351,1,0,0,0,338,340,7,19,0, + 0,339,338,1,0,0,0,340,343,1,0,0,0,341,339,1,0,0,0,341,342,1,0,0, + 0,342,344,1,0,0,0,343,341,1,0,0,0,344,346,5,46,0,0,345,347,7,19, + 0,0,346,345,1,0,0,0,347,348,1,0,0,0,348,346,1,0,0,0,348,349,1,0, + 0,0,349,351,1,0,0,0,350,334,1,0,0,0,350,341,1,0,0,0,351,118,1,0, + 0,0,352,353,5,45,0,0,353,354,3,117,58,0,354,120,1,0,0,0,355,356, + 5,124,0,0,356,357,5,122,0,0,357,379,1,0,0,0,358,360,5,45,0,0,359, + 361,3,81,40,0,360,359,1,0,0,0,361,362,1,0,0,0,362,360,1,0,0,0,362, + 363,1,0,0,0,363,380,1,0,0,0,364,366,3,81,40,0,365,364,1,0,0,0,366, + 367,1,0,0,0,367,365,1,0,0,0,367,368,1,0,0,0,368,377,1,0,0,0,369, + 375,5,45,0,0,370,372,3,81,40,0,371,370,1,0,0,0,372,373,1,0,0,0,373, + 371,1,0,0,0,373,374,1,0,0,0,374,376,1,0,0,0,375,371,1,0,0,0,375, + 376,1,0,0,0,376,378,1,0,0,0,377,369,1,0,0,0,377,378,1,0,0,0,378, + 380,1,0,0,0,379,358,1,0,0,0,379,365,1,0,0,0,380,122,1,0,0,0,381, + 382,5,92,0,0,382,383,5,47,0,0,383,124,1,0,0,0,384,388,3,123,61,0, + 385,388,7,20,0,0,386,388,3,3,1,0,387,384,1,0,0,0,387,385,1,0,0,0, + 387,386,1,0,0,0,388,126,1,0,0,0,389,393,3,123,61,0,390,393,7,21, + 0,0,391,393,3,3,1,0,392,389,1,0,0,0,392,390,1,0,0,0,392,391,1,0, + 0,0,393,128,1,0,0,0,394,395,5,47,0,0,395,399,3,125,62,0,396,398, + 3,127,63,0,397,396,1,0,0,0,398,401,1,0,0,0,399,397,1,0,0,0,399,400, + 1,0,0,0,400,402,1,0,0,0,401,399,1,0,0,0,402,403,5,47,0,0,403,130, + 1,0,0,0,404,405,7,22,0,0,405,406,1,0,0,0,406,407,6,65,0,0,407,132, + 1,0,0,0,408,409,5,47,0,0,409,410,5,47,0,0,410,414,1,0,0,0,411,413, + 9,0,0,0,412,411,1,0,0,0,413,416,1,0,0,0,414,415,1,0,0,0,414,412, + 1,0,0,0,415,418,1,0,0,0,416,414,1,0,0,0,417,419,5,13,0,0,418,417, + 1,0,0,0,418,419,1,0,0,0,419,420,1,0,0,0,420,421,5,10,0,0,421,422, + 1,0,0,0,422,423,6,66,0,0,423,134,1,0,0,0,424,425,5,47,0,0,425,426, + 5,42,0,0,426,430,1,0,0,0,427,429,9,0,0,0,428,427,1,0,0,0,429,432, + 1,0,0,0,430,431,1,0,0,0,430,428,1,0,0,0,431,433,1,0,0,0,432,430, + 1,0,0,0,433,434,5,42,0,0,434,435,5,47,0,0,435,436,1,0,0,0,436,437, + 6,67,0,0,437,136,1,0,0,0,28,0,170,265,269,273,278,280,306,308,318, + 320,328,336,341,348,350,362,367,373,375,377,379,387,392,399,414, + 418,430,1,0,1,0 ] class MapCSSLexer(Lexer): @@ -204,24 +216,28 @@ class MapCSSLexer(Lexer): OP_NOT = 32 SET = 33 IMPORT = 34 - NCOMPONENT = 35 - LBRACKET = 36 - RBRACKET = 37 - LBRACE = 38 - RBRACE = 39 - COLON = 40 - SEMICOLON = 41 - DQUOTED_STRING = 42 - SQUOTED_STRING = 43 - POSITIVE_INT = 44 - NEGATIVE_INT = 45 - POSITIVE_FLOAT = 46 - NEGATIVE_FLOAT = 47 - RANGE = 48 - REGEXP = 49 - WS = 50 - SL_COMMENT = 51 - ML_COMMENT = 52 + SUPPORTS = 35 + SUPPORTS_NOT = 36 + SUPPORTS_AND = 37 + SUPPORTS_OR = 38 + NCOMPONENT = 39 + LBRACKET = 40 + RBRACKET = 41 + LBRACE = 42 + RBRACE = 43 + COLON = 44 + SEMICOLON = 45 + DQUOTED_STRING = 46 + SQUOTED_STRING = 47 + POSITIVE_INT = 48 + NEGATIVE_INT = 49 + POSITIVE_FLOAT = 50 + NEGATIVE_FLOAT = 51 + RANGE = 52 + REGEXP = 53 + WS = 54 + SL_COMMENT = 55 + ML_COMMENT = 56 channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] @@ -241,8 +257,9 @@ class MapCSSLexer(Lexer): "OP_LE", "OP_GE", "OP_LT", "OP_GT", "OP_MATCH", "OP_NOT_MATCH", "OP_STARTS_WITH", "OP_ENDS_WITH", "OP_SUBSTRING", "OP_CONTAINS", "OP_OR", "OP_AND", "OP_MUL", "OP_DIV", "OP_MOD", "OP_PLUS", - "OP_MINUS", "OP_NOT", "SET", "IMPORT", "NCOMPONENT", "LBRACKET", - "RBRACKET", "LBRACE", "RBRACE", "COLON", "SEMICOLON", "DQUOTED_STRING", + "OP_MINUS", "OP_NOT", "SET", "IMPORT", "SUPPORTS", "SUPPORTS_NOT", + "SUPPORTS_AND", "SUPPORTS_OR", "NCOMPONENT", "LBRACKET", "RBRACKET", + "LBRACE", "RBRACE", "COLON", "SEMICOLON", "DQUOTED_STRING", "SQUOTED_STRING", "POSITIVE_INT", "NEGATIVE_INT", "POSITIVE_FLOAT", "NEGATIVE_FLOAT", "RANGE", "REGEXP", "WS", "SL_COMMENT", "ML_COMMENT" ] @@ -253,12 +270,14 @@ class MapCSSLexer(Lexer): "OP_MATCH", "OP_NOT_MATCH", "OP_STARTS_WITH", "OP_ENDS_WITH", "OP_SUBSTRING", "OP_CONTAINS", "OP_OR", "OP_AND", "OP_MUL", "OP_DIV", "OP_MOD", "OP_PLUS", "OP_MINUS", "OP_NOT", "SET", - "IMPORT", "DIGIT", "CHAR", "NONASCII", "NMSTART", "NMCHAR", - "NCOMPONENT", "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", - "COLON", "SEMICOLON", "EDQUOTE", "ESQUOTE", "DQUOTED_STRING", - "SQUOTED_STRING", "POSITIVE_INT", "NEGATIVE_INT", "POSITIVE_FLOAT", - "NEGATIVE_FLOAT", "RANGE", "REGEX_ESCAPE", "REGEX_START", - "REGEX_CHAR", "REGEXP", "WS", "SL_COMMENT", "ML_COMMENT" ] + "IMPORT", "SUPPORTS", "SUPPORTS_NOT", "SUPPORTS_AND", + "SUPPORTS_OR", "DIGIT", "CHAR", "NONASCII", "NMSTART", + "NMCHAR", "NCOMPONENT", "LBRACKET", "RBRACKET", "LBRACE", + "RBRACE", "COLON", "SEMICOLON", "EDQUOTE", "ESQUOTE", + "DQUOTED_STRING", "SQUOTED_STRING", "POSITIVE_INT", "NEGATIVE_INT", + "POSITIVE_FLOAT", "NEGATIVE_FLOAT", "RANGE", "REGEX_ESCAPE", + "REGEX_START", "REGEX_CHAR", "REGEXP", "WS", "SL_COMMENT", + "ML_COMMENT" ] grammarFileName = "MapCSS.g4" diff --git a/mapcss/generated/MapCSSLexer.tokens b/mapcss/generated/MapCSSLexer.tokens index d241aebbd..2bbf11d0b 100644 --- a/mapcss/generated/MapCSSLexer.tokens +++ b/mapcss/generated/MapCSSLexer.tokens @@ -32,24 +32,28 @@ OP_MINUS=31 OP_NOT=32 SET=33 IMPORT=34 -NCOMPONENT=35 -LBRACKET=36 -RBRACKET=37 -LBRACE=38 -RBRACE=39 -COLON=40 -SEMICOLON=41 -DQUOTED_STRING=42 -SQUOTED_STRING=43 -POSITIVE_INT=44 -NEGATIVE_INT=45 -POSITIVE_FLOAT=46 -NEGATIVE_FLOAT=47 -RANGE=48 -REGEXP=49 -WS=50 -SL_COMMENT=51 -ML_COMMENT=52 +SUPPORTS=35 +SUPPORTS_NOT=36 +SUPPORTS_AND=37 +SUPPORTS_OR=38 +NCOMPONENT=39 +LBRACKET=40 +RBRACKET=41 +LBRACE=42 +RBRACE=43 +COLON=44 +SEMICOLON=45 +DQUOTED_STRING=46 +SQUOTED_STRING=47 +POSITIVE_INT=48 +NEGATIVE_INT=49 +POSITIVE_FLOAT=50 +NEGATIVE_FLOAT=51 +RANGE=52 +REGEXP=53 +WS=54 +SL_COMMENT=55 +ML_COMMENT=56 ','=1 '?'=2 '?!'=3 @@ -81,9 +85,9 @@ ML_COMMENT=52 '+'=30 '-'=31 '!'=32 -'['=36 -']'=37 -'{'=38 -'}'=39 -':'=40 -';'=41 +'['=40 +']'=41 +'{'=42 +'}'=43 +':'=44 +';'=45 diff --git a/mapcss/generated/MapCSSListener.py b/mapcss/generated/MapCSSListener.py index 68ab28c76..4493cfd57 100644 --- a/mapcss/generated/MapCSSListener.py +++ b/mapcss/generated/MapCSSListener.py @@ -242,6 +242,51 @@ def exitSingle_value(self, ctx:MapCSSParser.Single_valueContext): pass + # Enter a parse tree produced by MapCSSParser#supports_block. + def enterSupports_block(self, ctx:MapCSSParser.Supports_blockContext): + pass + + # Exit a parse tree produced by MapCSSParser#supports_block. + def exitSupports_block(self, ctx:MapCSSParser.Supports_blockContext): + pass + + + # Enter a parse tree produced by MapCSSParser#supports_rule. + def enterSupports_rule(self, ctx:MapCSSParser.Supports_ruleContext): + pass + + # Exit a parse tree produced by MapCSSParser#supports_rule. + def exitSupports_rule(self, ctx:MapCSSParser.Supports_ruleContext): + pass + + + # Enter a parse tree produced by MapCSSParser#supports_condition. + def enterSupports_condition(self, ctx:MapCSSParser.Supports_conditionContext): + pass + + # Exit a parse tree produced by MapCSSParser#supports_condition. + def exitSupports_condition(self, ctx:MapCSSParser.Supports_conditionContext): + pass + + + # Enter a parse tree produced by MapCSSParser#supports_in_parens. + def enterSupports_in_parens(self, ctx:MapCSSParser.Supports_in_parensContext): + pass + + # Exit a parse tree produced by MapCSSParser#supports_in_parens. + def exitSupports_in_parens(self, ctx:MapCSSParser.Supports_in_parensContext): + pass + + + # Enter a parse tree produced by MapCSSParser#supports_declaration. + def enterSupports_declaration(self, ctx:MapCSSParser.Supports_declarationContext): + pass + + # Exit a parse tree produced by MapCSSParser#supports_declaration. + def exitSupports_declaration(self, ctx:MapCSSParser.Supports_declarationContext): + pass + + # Enter a parse tree produced by MapCSSParser#booleanOperator. def enterBooleanOperator(self, ctx:MapCSSParser.BooleanOperatorContext): pass diff --git a/mapcss/generated/MapCSSParser.py b/mapcss/generated/MapCSSParser.py index 438004c32..6a566c3a9 100644 --- a/mapcss/generated/MapCSSParser.py +++ b/mapcss/generated/MapCSSParser.py @@ -10,139 +10,164 @@ def serializedATN(): return [ - 4,1,83,364,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, + 4,1,87,430,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7, 6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13, 2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20, 7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26, 2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33, - 7,33,2,34,7,34,1,0,5,0,72,8,0,10,0,12,0,75,9,0,1,0,1,0,1,1,1,1,1, - 2,1,2,1,2,5,2,84,8,2,10,2,12,2,87,9,2,1,2,5,2,90,8,2,10,2,12,2,93, - 9,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,5,3,105,8,3,10,3,12, - 3,108,9,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,116,8,3,1,4,1,4,1,5,1,5,1, - 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,134,8,6,1,7,1, - 7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,5,8,145,8,8,10,8,12,8,148,9,8,1,8, - 3,8,151,8,8,1,9,1,9,1,10,1,10,1,11,3,11,158,8,11,1,11,1,11,1,12, - 3,12,163,8,12,1,12,1,12,1,12,5,12,168,8,12,10,12,12,12,171,9,12, - 1,13,1,13,1,13,1,13,1,14,1,14,3,14,179,8,14,1,15,3,15,182,8,15,1, - 15,1,15,3,15,186,8,15,1,15,3,15,189,8,15,1,15,3,15,192,8,15,1,15, - 3,15,195,8,15,1,16,1,16,1,16,1,16,1,16,3,16,202,8,16,1,17,1,17,1, - 17,1,17,1,17,1,17,1,17,1,17,3,17,212,8,17,1,18,1,18,3,18,216,8,18, - 1,19,1,19,1,19,1,19,1,19,1,19,3,19,224,8,19,1,20,1,20,1,20,5,20, - 229,8,20,10,20,12,20,232,9,20,1,20,5,20,235,8,20,10,20,12,20,238, - 9,20,1,21,1,21,3,21,242,8,21,1,21,1,21,1,21,1,21,1,21,3,21,249,8, - 21,1,22,1,22,1,23,1,23,3,23,255,8,23,1,24,1,24,3,24,259,8,24,1,25, - 1,25,1,25,1,25,1,25,1,25,3,25,267,8,25,1,26,1,26,1,27,1,27,1,28, - 1,28,1,28,1,28,1,28,3,28,278,8,28,1,29,1,29,1,30,1,30,1,30,1,30, - 1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30, - 1,30,1,30,1,30,3,30,302,8,30,1,30,1,30,1,30,1,30,5,30,308,8,30,10, - 30,12,30,311,9,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,3,31,320,8, - 31,1,31,1,31,1,31,5,31,325,8,31,10,31,12,31,328,9,31,1,32,1,32,3, - 32,332,8,32,1,33,1,33,1,33,1,33,1,33,5,33,339,8,33,10,33,12,33,342, - 9,33,3,33,344,8,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,3,34,353,8, - 34,1,34,1,34,3,34,357,8,34,1,34,1,34,1,34,3,34,362,8,34,1,34,0,2, - 60,62,35,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38, - 40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,0,9,1,0,17,18,1,0,4, - 9,1,0,42,43,2,0,12,12,40,40,1,0,2,3,2,0,13,14,25,26,1,0,13,18,1, - 0,19,20,1,0,27,31,391,0,73,1,0,0,0,2,78,1,0,0,0,4,80,1,0,0,0,6,115, - 1,0,0,0,8,117,1,0,0,0,10,119,1,0,0,0,12,133,1,0,0,0,14,135,1,0,0, - 0,16,139,1,0,0,0,18,152,1,0,0,0,20,154,1,0,0,0,22,157,1,0,0,0,24, - 162,1,0,0,0,26,172,1,0,0,0,28,178,1,0,0,0,30,194,1,0,0,0,32,201, - 1,0,0,0,34,211,1,0,0,0,36,215,1,0,0,0,38,223,1,0,0,0,40,225,1,0, - 0,0,42,248,1,0,0,0,44,250,1,0,0,0,46,254,1,0,0,0,48,258,1,0,0,0, - 50,266,1,0,0,0,52,268,1,0,0,0,54,270,1,0,0,0,56,277,1,0,0,0,58,279, - 1,0,0,0,60,301,1,0,0,0,62,319,1,0,0,0,64,331,1,0,0,0,66,333,1,0, - 0,0,68,361,1,0,0,0,70,72,3,2,1,0,71,70,1,0,0,0,72,75,1,0,0,0,73, - 71,1,0,0,0,73,74,1,0,0,0,74,76,1,0,0,0,75,73,1,0,0,0,76,77,5,0,0, - 1,77,1,1,0,0,0,78,79,3,4,2,0,79,3,1,0,0,0,80,85,3,6,3,0,81,82,5, - 1,0,0,82,84,3,6,3,0,83,81,1,0,0,0,84,87,1,0,0,0,85,83,1,0,0,0,85, - 86,1,0,0,0,86,91,1,0,0,0,87,85,1,0,0,0,88,90,5,1,0,0,89,88,1,0,0, - 0,90,93,1,0,0,0,91,89,1,0,0,0,91,92,1,0,0,0,92,94,1,0,0,0,93,91, - 1,0,0,0,94,95,3,38,19,0,95,5,1,0,0,0,96,116,3,16,8,0,97,98,3,16, - 8,0,98,99,3,16,8,0,99,116,1,0,0,0,100,101,3,16,8,0,101,106,3,8,4, - 0,102,105,3,12,6,0,103,105,3,34,17,0,104,102,1,0,0,0,104,103,1,0, - 0,0,105,108,1,0,0,0,106,104,1,0,0,0,106,107,1,0,0,0,107,109,1,0, - 0,0,108,106,1,0,0,0,109,110,3,16,8,0,110,116,1,0,0,0,111,112,3,16, - 8,0,112,113,3,10,5,0,113,114,3,16,8,0,114,116,1,0,0,0,115,96,1,0, - 0,0,115,97,1,0,0,0,115,100,1,0,0,0,115,111,1,0,0,0,116,7,1,0,0,0, - 117,118,7,0,0,0,118,9,1,0,0,0,119,120,7,1,0,0,120,11,1,0,0,0,121, - 122,5,36,0,0,122,123,3,22,11,0,123,124,3,56,28,0,124,125,3,62,31, - 0,125,126,5,37,0,0,126,134,1,0,0,0,127,128,5,36,0,0,128,129,3,22, - 11,0,129,130,3,54,27,0,130,131,3,48,24,0,131,132,5,37,0,0,132,134, - 1,0,0,0,133,121,1,0,0,0,133,127,1,0,0,0,134,13,1,0,0,0,135,136,5, - 40,0,0,136,137,5,40,0,0,137,138,3,22,11,0,138,15,1,0,0,0,139,146, - 3,36,18,0,140,145,3,18,9,0,141,145,3,32,16,0,142,145,3,26,13,0,143, - 145,3,34,17,0,144,140,1,0,0,0,144,141,1,0,0,0,144,142,1,0,0,0,144, - 143,1,0,0,0,145,148,1,0,0,0,146,144,1,0,0,0,146,147,1,0,0,0,147, - 150,1,0,0,0,148,146,1,0,0,0,149,151,3,14,7,0,150,149,1,0,0,0,150, - 151,1,0,0,0,151,17,1,0,0,0,152,153,5,48,0,0,153,19,1,0,0,0,154,155, - 7,2,0,0,155,21,1,0,0,0,156,158,5,31,0,0,157,156,1,0,0,0,157,158, - 1,0,0,0,158,159,1,0,0,0,159,160,5,35,0,0,160,23,1,0,0,0,161,163, - 5,31,0,0,162,161,1,0,0,0,162,163,1,0,0,0,163,164,1,0,0,0,164,169, - 5,35,0,0,165,166,7,3,0,0,166,168,5,35,0,0,167,165,1,0,0,0,168,171, - 1,0,0,0,169,167,1,0,0,0,169,170,1,0,0,0,170,25,1,0,0,0,171,169,1, - 0,0,0,172,173,5,36,0,0,173,174,3,28,14,0,174,175,5,37,0,0,175,27, - 1,0,0,0,176,179,3,30,15,0,177,179,3,60,30,0,178,176,1,0,0,0,178, - 177,1,0,0,0,179,29,1,0,0,0,180,182,5,32,0,0,181,180,1,0,0,0,181, - 182,1,0,0,0,182,185,1,0,0,0,183,186,3,24,12,0,184,186,3,20,10,0, - 185,183,1,0,0,0,185,184,1,0,0,0,186,188,1,0,0,0,187,189,7,4,0,0, - 188,187,1,0,0,0,188,189,1,0,0,0,189,195,1,0,0,0,190,192,5,32,0,0, - 191,190,1,0,0,0,191,192,1,0,0,0,192,193,1,0,0,0,193,195,3,64,32, - 0,194,181,1,0,0,0,194,191,1,0,0,0,195,31,1,0,0,0,196,197,5,32,0, - 0,197,198,5,12,0,0,198,202,3,22,11,0,199,200,5,12,0,0,200,202,3, - 22,11,0,201,196,1,0,0,0,201,199,1,0,0,0,202,33,1,0,0,0,203,204,5, - 40,0,0,204,205,5,32,0,0,205,212,3,22,11,0,206,207,5,32,0,0,207,208, - 5,40,0,0,208,212,3,22,11,0,209,210,5,40,0,0,210,212,3,22,11,0,211, - 203,1,0,0,0,211,206,1,0,0,0,211,209,1,0,0,0,212,35,1,0,0,0,213,216, - 3,22,11,0,214,216,5,27,0,0,215,213,1,0,0,0,215,214,1,0,0,0,216,37, - 1,0,0,0,217,218,5,38,0,0,218,219,3,40,20,0,219,220,5,39,0,0,220, - 224,1,0,0,0,221,222,5,38,0,0,222,224,5,39,0,0,223,217,1,0,0,0,223, - 221,1,0,0,0,224,39,1,0,0,0,225,230,3,42,21,0,226,227,5,41,0,0,227, - 229,3,42,21,0,228,226,1,0,0,0,229,232,1,0,0,0,230,228,1,0,0,0,230, - 231,1,0,0,0,231,236,1,0,0,0,232,230,1,0,0,0,233,235,5,41,0,0,234, - 233,1,0,0,0,235,238,1,0,0,0,236,234,1,0,0,0,236,237,1,0,0,0,237, - 41,1,0,0,0,238,236,1,0,0,0,239,241,5,33,0,0,240,242,5,12,0,0,241, - 240,1,0,0,0,241,242,1,0,0,0,242,243,1,0,0,0,243,249,3,22,11,0,244, - 245,3,44,22,0,245,246,5,40,0,0,246,247,3,46,23,0,247,249,1,0,0,0, - 248,239,1,0,0,0,248,244,1,0,0,0,249,43,1,0,0,0,250,251,3,22,11,0, - 251,45,1,0,0,0,252,255,3,50,25,0,253,255,3,66,33,0,254,252,1,0,0, - 0,254,253,1,0,0,0,255,47,1,0,0,0,256,259,5,44,0,0,257,259,5,45,0, - 0,258,256,1,0,0,0,258,257,1,0,0,0,259,49,1,0,0,0,260,267,5,44,0, - 0,261,267,5,45,0,0,262,267,5,46,0,0,263,267,5,47,0,0,264,267,3,20, - 10,0,265,267,3,24,12,0,266,260,1,0,0,0,266,261,1,0,0,0,266,262,1, - 0,0,0,266,263,1,0,0,0,266,264,1,0,0,0,266,265,1,0,0,0,267,51,1,0, - 0,0,268,269,7,5,0,0,269,53,1,0,0,0,270,271,7,6,0,0,271,55,1,0,0, - 0,272,278,3,54,27,0,273,278,5,21,0,0,274,278,5,22,0,0,275,278,5, - 23,0,0,276,278,5,24,0,0,277,272,1,0,0,0,277,273,1,0,0,0,277,274, - 1,0,0,0,277,275,1,0,0,0,277,276,1,0,0,0,278,57,1,0,0,0,279,280,7, - 7,0,0,280,59,1,0,0,0,281,282,6,30,-1,0,282,283,5,10,0,0,283,284, - 3,60,30,0,284,285,5,11,0,0,285,302,1,0,0,0,286,287,5,32,0,0,287, - 302,3,60,30,6,288,289,3,62,31,0,289,290,3,56,28,0,290,291,3,62,31, - 0,291,302,1,0,0,0,292,293,3,62,31,0,293,294,3,58,29,0,294,295,3, - 64,32,0,295,302,1,0,0,0,296,297,3,64,32,0,297,298,3,58,29,0,298, - 299,3,64,32,0,299,302,1,0,0,0,300,302,3,66,33,0,301,281,1,0,0,0, - 301,286,1,0,0,0,301,288,1,0,0,0,301,292,1,0,0,0,301,296,1,0,0,0, - 301,300,1,0,0,0,302,309,1,0,0,0,303,304,10,5,0,0,304,305,3,52,26, - 0,305,306,3,60,30,6,306,308,1,0,0,0,307,303,1,0,0,0,308,311,1,0, - 0,0,309,307,1,0,0,0,309,310,1,0,0,0,310,61,1,0,0,0,311,309,1,0,0, - 0,312,313,6,31,-1,0,313,314,5,10,0,0,314,315,3,62,31,0,315,316,5, - 11,0,0,316,320,1,0,0,0,317,320,3,68,34,0,318,320,3,66,33,0,319,312, - 1,0,0,0,319,317,1,0,0,0,319,318,1,0,0,0,320,326,1,0,0,0,321,322, - 10,3,0,0,322,323,7,8,0,0,323,325,3,62,31,4,324,321,1,0,0,0,325,328, - 1,0,0,0,326,324,1,0,0,0,326,327,1,0,0,0,327,63,1,0,0,0,328,326,1, - 0,0,0,329,332,3,20,10,0,330,332,5,49,0,0,331,329,1,0,0,0,331,330, - 1,0,0,0,332,65,1,0,0,0,333,334,3,22,11,0,334,343,5,10,0,0,335,340, - 3,62,31,0,336,337,5,1,0,0,337,339,3,62,31,0,338,336,1,0,0,0,339, - 342,1,0,0,0,340,338,1,0,0,0,340,341,1,0,0,0,341,344,1,0,0,0,342, - 340,1,0,0,0,343,335,1,0,0,0,343,344,1,0,0,0,344,345,1,0,0,0,345, - 346,5,11,0,0,346,67,1,0,0,0,347,362,5,46,0,0,348,362,5,44,0,0,349, - 362,5,47,0,0,350,362,5,45,0,0,351,353,5,27,0,0,352,351,1,0,0,0,352, - 353,1,0,0,0,353,354,1,0,0,0,354,362,3,20,10,0,355,357,5,27,0,0,356, - 355,1,0,0,0,356,357,1,0,0,0,357,358,1,0,0,0,358,362,3,24,12,0,359, - 360,5,27,0,0,360,362,3,64,32,0,361,347,1,0,0,0,361,348,1,0,0,0,361, - 349,1,0,0,0,361,350,1,0,0,0,361,352,1,0,0,0,361,356,1,0,0,0,361, - 359,1,0,0,0,362,69,1,0,0,0,41,73,85,91,104,106,115,133,144,146,150, - 157,162,169,178,181,185,188,191,194,201,211,215,223,230,236,241, - 248,254,258,266,277,301,309,319,326,331,340,343,352,356,361 + 7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39, + 1,0,5,0,82,8,0,10,0,12,0,85,9,0,1,0,1,0,1,1,1,1,3,1,91,8,1,1,2,1, + 2,1,2,5,2,96,8,2,10,2,12,2,99,9,2,1,2,5,2,102,8,2,10,2,12,2,105, + 9,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,5,3,117,8,3,10,3,12, + 3,120,9,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,128,8,3,1,4,1,4,1,5,1,5,1, + 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,146,8,6,1,7,1, + 7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,5,8,157,8,8,10,8,12,8,160,9,8,1,8, + 3,8,163,8,8,1,9,1,9,1,10,1,10,1,11,3,11,170,8,11,1,11,1,11,1,12, + 3,12,175,8,12,1,12,1,12,1,12,5,12,180,8,12,10,12,12,12,183,9,12, + 1,13,1,13,1,13,1,13,1,14,1,14,3,14,191,8,14,1,15,3,15,194,8,15,1, + 15,1,15,3,15,198,8,15,1,15,3,15,201,8,15,1,15,3,15,204,8,15,1,15, + 3,15,207,8,15,1,16,1,16,1,16,1,16,1,16,3,16,214,8,16,1,17,1,17,1, + 17,1,17,1,17,1,17,1,17,1,17,3,17,224,8,17,1,18,1,18,3,18,228,8,18, + 1,19,1,19,1,19,1,19,1,19,1,19,3,19,236,8,19,1,20,1,20,1,20,5,20, + 241,8,20,10,20,12,20,244,9,20,1,20,5,20,247,8,20,10,20,12,20,250, + 9,20,1,21,1,21,3,21,254,8,21,1,21,1,21,1,21,1,21,1,21,3,21,261,8, + 21,1,22,1,22,1,23,1,23,3,23,267,8,23,1,24,1,24,3,24,271,8,24,1,25, + 1,25,1,25,1,25,1,25,1,25,3,25,279,8,25,1,26,1,26,1,26,5,26,284,8, + 26,10,26,12,26,287,9,26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,1,28, + 1,28,1,28,5,28,299,8,28,10,28,12,28,302,9,28,1,28,1,28,1,28,5,28, + 307,8,28,10,28,12,28,310,9,28,3,28,312,8,28,1,29,1,29,1,29,1,29, + 1,29,1,29,1,29,1,29,3,29,322,8,29,1,30,1,30,1,30,1,30,1,30,1,30, + 1,30,1,30,1,30,3,30,333,8,30,1,31,1,31,1,32,1,32,1,33,1,33,1,33, + 1,33,1,33,3,33,344,8,33,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35, + 1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35, + 1,35,3,35,368,8,35,1,35,1,35,1,35,1,35,5,35,374,8,35,10,35,12,35, + 377,9,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,386,8,36,1,36,1, + 36,1,36,5,36,391,8,36,10,36,12,36,394,9,36,1,37,1,37,3,37,398,8, + 37,1,38,1,38,1,38,1,38,1,38,5,38,405,8,38,10,38,12,38,408,9,38,3, + 38,410,8,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,3,39,419,8,39,1,39, + 1,39,3,39,423,8,39,1,39,1,39,1,39,3,39,428,8,39,1,39,0,2,70,72,40, + 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44, + 46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,0,9,1,0,17,18, + 1,0,4,9,1,0,46,47,2,0,12,12,44,44,1,0,2,3,2,0,13,14,25,26,1,0,13, + 18,1,0,19,20,1,0,27,31,461,0,83,1,0,0,0,2,90,1,0,0,0,4,92,1,0,0, + 0,6,127,1,0,0,0,8,129,1,0,0,0,10,131,1,0,0,0,12,145,1,0,0,0,14,147, + 1,0,0,0,16,151,1,0,0,0,18,164,1,0,0,0,20,166,1,0,0,0,22,169,1,0, + 0,0,24,174,1,0,0,0,26,184,1,0,0,0,28,190,1,0,0,0,30,206,1,0,0,0, + 32,213,1,0,0,0,34,223,1,0,0,0,36,227,1,0,0,0,38,235,1,0,0,0,40,237, + 1,0,0,0,42,260,1,0,0,0,44,262,1,0,0,0,46,266,1,0,0,0,48,270,1,0, + 0,0,50,278,1,0,0,0,52,280,1,0,0,0,54,290,1,0,0,0,56,311,1,0,0,0, + 58,321,1,0,0,0,60,332,1,0,0,0,62,334,1,0,0,0,64,336,1,0,0,0,66,343, + 1,0,0,0,68,345,1,0,0,0,70,367,1,0,0,0,72,385,1,0,0,0,74,397,1,0, + 0,0,76,399,1,0,0,0,78,427,1,0,0,0,80,82,3,2,1,0,81,80,1,0,0,0,82, + 85,1,0,0,0,83,81,1,0,0,0,83,84,1,0,0,0,84,86,1,0,0,0,85,83,1,0,0, + 0,86,87,5,0,0,1,87,1,1,0,0,0,88,91,3,4,2,0,89,91,3,52,26,0,90,88, + 1,0,0,0,90,89,1,0,0,0,91,3,1,0,0,0,92,97,3,6,3,0,93,94,5,1,0,0,94, + 96,3,6,3,0,95,93,1,0,0,0,96,99,1,0,0,0,97,95,1,0,0,0,97,98,1,0,0, + 0,98,103,1,0,0,0,99,97,1,0,0,0,100,102,5,1,0,0,101,100,1,0,0,0,102, + 105,1,0,0,0,103,101,1,0,0,0,103,104,1,0,0,0,104,106,1,0,0,0,105, + 103,1,0,0,0,106,107,3,38,19,0,107,5,1,0,0,0,108,128,3,16,8,0,109, + 110,3,16,8,0,110,111,3,16,8,0,111,128,1,0,0,0,112,113,3,16,8,0,113, + 118,3,8,4,0,114,117,3,12,6,0,115,117,3,34,17,0,116,114,1,0,0,0,116, + 115,1,0,0,0,117,120,1,0,0,0,118,116,1,0,0,0,118,119,1,0,0,0,119, + 121,1,0,0,0,120,118,1,0,0,0,121,122,3,16,8,0,122,128,1,0,0,0,123, + 124,3,16,8,0,124,125,3,10,5,0,125,126,3,16,8,0,126,128,1,0,0,0,127, + 108,1,0,0,0,127,109,1,0,0,0,127,112,1,0,0,0,127,123,1,0,0,0,128, + 7,1,0,0,0,129,130,7,0,0,0,130,9,1,0,0,0,131,132,7,1,0,0,132,11,1, + 0,0,0,133,134,5,40,0,0,134,135,3,22,11,0,135,136,3,66,33,0,136,137, + 3,72,36,0,137,138,5,41,0,0,138,146,1,0,0,0,139,140,5,40,0,0,140, + 141,3,22,11,0,141,142,3,64,32,0,142,143,3,48,24,0,143,144,5,41,0, + 0,144,146,1,0,0,0,145,133,1,0,0,0,145,139,1,0,0,0,146,13,1,0,0,0, + 147,148,5,44,0,0,148,149,5,44,0,0,149,150,3,22,11,0,150,15,1,0,0, + 0,151,158,3,36,18,0,152,157,3,18,9,0,153,157,3,32,16,0,154,157,3, + 26,13,0,155,157,3,34,17,0,156,152,1,0,0,0,156,153,1,0,0,0,156,154, + 1,0,0,0,156,155,1,0,0,0,157,160,1,0,0,0,158,156,1,0,0,0,158,159, + 1,0,0,0,159,162,1,0,0,0,160,158,1,0,0,0,161,163,3,14,7,0,162,161, + 1,0,0,0,162,163,1,0,0,0,163,17,1,0,0,0,164,165,5,52,0,0,165,19,1, + 0,0,0,166,167,7,2,0,0,167,21,1,0,0,0,168,170,5,31,0,0,169,168,1, + 0,0,0,169,170,1,0,0,0,170,171,1,0,0,0,171,172,5,39,0,0,172,23,1, + 0,0,0,173,175,5,31,0,0,174,173,1,0,0,0,174,175,1,0,0,0,175,176,1, + 0,0,0,176,181,5,39,0,0,177,178,7,3,0,0,178,180,5,39,0,0,179,177, + 1,0,0,0,180,183,1,0,0,0,181,179,1,0,0,0,181,182,1,0,0,0,182,25,1, + 0,0,0,183,181,1,0,0,0,184,185,5,40,0,0,185,186,3,28,14,0,186,187, + 5,41,0,0,187,27,1,0,0,0,188,191,3,30,15,0,189,191,3,70,35,0,190, + 188,1,0,0,0,190,189,1,0,0,0,191,29,1,0,0,0,192,194,5,32,0,0,193, + 192,1,0,0,0,193,194,1,0,0,0,194,197,1,0,0,0,195,198,3,24,12,0,196, + 198,3,20,10,0,197,195,1,0,0,0,197,196,1,0,0,0,198,200,1,0,0,0,199, + 201,7,4,0,0,200,199,1,0,0,0,200,201,1,0,0,0,201,207,1,0,0,0,202, + 204,5,32,0,0,203,202,1,0,0,0,203,204,1,0,0,0,204,205,1,0,0,0,205, + 207,3,74,37,0,206,193,1,0,0,0,206,203,1,0,0,0,207,31,1,0,0,0,208, + 209,5,32,0,0,209,210,5,12,0,0,210,214,3,22,11,0,211,212,5,12,0,0, + 212,214,3,22,11,0,213,208,1,0,0,0,213,211,1,0,0,0,214,33,1,0,0,0, + 215,216,5,44,0,0,216,217,5,32,0,0,217,224,3,22,11,0,218,219,5,32, + 0,0,219,220,5,44,0,0,220,224,3,22,11,0,221,222,5,44,0,0,222,224, + 3,22,11,0,223,215,1,0,0,0,223,218,1,0,0,0,223,221,1,0,0,0,224,35, + 1,0,0,0,225,228,3,22,11,0,226,228,5,27,0,0,227,225,1,0,0,0,227,226, + 1,0,0,0,228,37,1,0,0,0,229,230,5,42,0,0,230,231,3,40,20,0,231,232, + 5,43,0,0,232,236,1,0,0,0,233,234,5,42,0,0,234,236,5,43,0,0,235,229, + 1,0,0,0,235,233,1,0,0,0,236,39,1,0,0,0,237,242,3,42,21,0,238,239, + 5,45,0,0,239,241,3,42,21,0,240,238,1,0,0,0,241,244,1,0,0,0,242,240, + 1,0,0,0,242,243,1,0,0,0,243,248,1,0,0,0,244,242,1,0,0,0,245,247, + 5,45,0,0,246,245,1,0,0,0,247,250,1,0,0,0,248,246,1,0,0,0,248,249, + 1,0,0,0,249,41,1,0,0,0,250,248,1,0,0,0,251,253,5,33,0,0,252,254, + 5,12,0,0,253,252,1,0,0,0,253,254,1,0,0,0,254,255,1,0,0,0,255,261, + 3,22,11,0,256,257,3,44,22,0,257,258,5,44,0,0,258,259,3,46,23,0,259, + 261,1,0,0,0,260,251,1,0,0,0,260,256,1,0,0,0,261,43,1,0,0,0,262,263, + 3,22,11,0,263,45,1,0,0,0,264,267,3,50,25,0,265,267,3,76,38,0,266, + 264,1,0,0,0,266,265,1,0,0,0,267,47,1,0,0,0,268,271,5,48,0,0,269, + 271,5,49,0,0,270,268,1,0,0,0,270,269,1,0,0,0,271,49,1,0,0,0,272, + 279,5,48,0,0,273,279,5,49,0,0,274,279,5,50,0,0,275,279,5,51,0,0, + 276,279,3,20,10,0,277,279,3,24,12,0,278,272,1,0,0,0,278,273,1,0, + 0,0,278,274,1,0,0,0,278,275,1,0,0,0,278,276,1,0,0,0,278,277,1,0, + 0,0,279,51,1,0,0,0,280,281,3,54,27,0,281,285,5,42,0,0,282,284,3, + 4,2,0,283,282,1,0,0,0,284,287,1,0,0,0,285,283,1,0,0,0,285,286,1, + 0,0,0,286,288,1,0,0,0,287,285,1,0,0,0,288,289,5,43,0,0,289,53,1, + 0,0,0,290,291,5,35,0,0,291,292,3,56,28,0,292,55,1,0,0,0,293,294, + 5,36,0,0,294,312,3,58,29,0,295,300,3,58,29,0,296,297,5,37,0,0,297, + 299,3,58,29,0,298,296,1,0,0,0,299,302,1,0,0,0,300,298,1,0,0,0,300, + 301,1,0,0,0,301,312,1,0,0,0,302,300,1,0,0,0,303,308,3,58,29,0,304, + 305,5,38,0,0,305,307,3,58,29,0,306,304,1,0,0,0,307,310,1,0,0,0,308, + 306,1,0,0,0,308,309,1,0,0,0,309,312,1,0,0,0,310,308,1,0,0,0,311, + 293,1,0,0,0,311,295,1,0,0,0,311,303,1,0,0,0,312,57,1,0,0,0,313,314, + 5,10,0,0,314,315,3,56,28,0,315,316,5,11,0,0,316,322,1,0,0,0,317, + 318,5,10,0,0,318,319,3,60,30,0,319,320,5,11,0,0,320,322,1,0,0,0, + 321,313,1,0,0,0,321,317,1,0,0,0,322,59,1,0,0,0,323,324,3,22,11,0, + 324,325,5,44,0,0,325,326,5,48,0,0,326,333,1,0,0,0,327,328,3,22,11, + 0,328,329,5,44,0,0,329,330,5,39,0,0,330,333,1,0,0,0,331,333,3,22, + 11,0,332,323,1,0,0,0,332,327,1,0,0,0,332,331,1,0,0,0,333,61,1,0, + 0,0,334,335,7,5,0,0,335,63,1,0,0,0,336,337,7,6,0,0,337,65,1,0,0, + 0,338,344,3,64,32,0,339,344,5,21,0,0,340,344,5,22,0,0,341,344,5, + 23,0,0,342,344,5,24,0,0,343,338,1,0,0,0,343,339,1,0,0,0,343,340, + 1,0,0,0,343,341,1,0,0,0,343,342,1,0,0,0,344,67,1,0,0,0,345,346,7, + 7,0,0,346,69,1,0,0,0,347,348,6,35,-1,0,348,349,5,10,0,0,349,350, + 3,70,35,0,350,351,5,11,0,0,351,368,1,0,0,0,352,353,5,32,0,0,353, + 368,3,70,35,6,354,355,3,72,36,0,355,356,3,66,33,0,356,357,3,72,36, + 0,357,368,1,0,0,0,358,359,3,72,36,0,359,360,3,68,34,0,360,361,3, + 74,37,0,361,368,1,0,0,0,362,363,3,74,37,0,363,364,3,68,34,0,364, + 365,3,74,37,0,365,368,1,0,0,0,366,368,3,76,38,0,367,347,1,0,0,0, + 367,352,1,0,0,0,367,354,1,0,0,0,367,358,1,0,0,0,367,362,1,0,0,0, + 367,366,1,0,0,0,368,375,1,0,0,0,369,370,10,5,0,0,370,371,3,62,31, + 0,371,372,3,70,35,6,372,374,1,0,0,0,373,369,1,0,0,0,374,377,1,0, + 0,0,375,373,1,0,0,0,375,376,1,0,0,0,376,71,1,0,0,0,377,375,1,0,0, + 0,378,379,6,36,-1,0,379,380,5,10,0,0,380,381,3,72,36,0,381,382,5, + 11,0,0,382,386,1,0,0,0,383,386,3,78,39,0,384,386,3,76,38,0,385,378, + 1,0,0,0,385,383,1,0,0,0,385,384,1,0,0,0,386,392,1,0,0,0,387,388, + 10,3,0,0,388,389,7,8,0,0,389,391,3,72,36,4,390,387,1,0,0,0,391,394, + 1,0,0,0,392,390,1,0,0,0,392,393,1,0,0,0,393,73,1,0,0,0,394,392,1, + 0,0,0,395,398,3,20,10,0,396,398,5,53,0,0,397,395,1,0,0,0,397,396, + 1,0,0,0,398,75,1,0,0,0,399,400,3,22,11,0,400,409,5,10,0,0,401,406, + 3,72,36,0,402,403,5,1,0,0,403,405,3,72,36,0,404,402,1,0,0,0,405, + 408,1,0,0,0,406,404,1,0,0,0,406,407,1,0,0,0,407,410,1,0,0,0,408, + 406,1,0,0,0,409,401,1,0,0,0,409,410,1,0,0,0,410,411,1,0,0,0,411, + 412,5,11,0,0,412,77,1,0,0,0,413,428,5,50,0,0,414,428,5,48,0,0,415, + 428,5,51,0,0,416,428,5,49,0,0,417,419,5,27,0,0,418,417,1,0,0,0,418, + 419,1,0,0,0,419,420,1,0,0,0,420,428,3,20,10,0,421,423,5,27,0,0,422, + 421,1,0,0,0,422,423,1,0,0,0,423,424,1,0,0,0,424,428,3,24,12,0,425, + 426,5,27,0,0,426,428,3,74,37,0,427,413,1,0,0,0,427,414,1,0,0,0,427, + 415,1,0,0,0,427,416,1,0,0,0,427,418,1,0,0,0,427,422,1,0,0,0,427, + 425,1,0,0,0,428,79,1,0,0,0,48,83,90,97,103,116,118,127,145,156,158, + 162,169,174,181,190,193,197,200,203,206,213,223,227,235,242,248, + 253,260,266,270,278,285,300,308,311,321,332,343,367,375,385,392, + 397,406,409,418,422,427 ] class MapCSSParser ( Parser ): @@ -161,6 +186,7 @@ class MapCSSParser ( Parser ): "'<'", "'>'", "'=~'", "'!~'", "'^='", "'$='", "'*='", "'~='", "'||'", "'&&'", "'*'", "'/'", "'%'", "'+'", "'-'", "'!'", "", "", "", + "", "", "", "", "'['", "']'", "'{'", "'}'", "':'", "';'" ] symbolicNames = [ "", "COMMA", "QUESTION_MARK", "QUESTION_MARK_NEGATED", @@ -170,7 +196,8 @@ class MapCSSParser ( Parser ): "OP_GT", "OP_MATCH", "OP_NOT_MATCH", "OP_STARTS_WITH", "OP_ENDS_WITH", "OP_SUBSTRING", "OP_CONTAINS", "OP_OR", "OP_AND", "OP_MUL", "OP_DIV", "OP_MOD", "OP_PLUS", - "OP_MINUS", "OP_NOT", "SET", "IMPORT", "NCOMPONENT", + "OP_MINUS", "OP_NOT", "SET", "IMPORT", "SUPPORTS", + "SUPPORTS_NOT", "SUPPORTS_AND", "SUPPORTS_OR", "NCOMPONENT", "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", "COLON", "SEMICOLON", "DQUOTED_STRING", "SQUOTED_STRING", "POSITIVE_INT", "NEGATIVE_INT", "POSITIVE_FLOAT", "NEGATIVE_FLOAT", @@ -211,15 +238,20 @@ class MapCSSParser ( Parser ): RULE_declaration_value = 23 RULE_int_ = 24 RULE_single_value = 25 - RULE_booleanOperator = 26 - RULE_numericOperator = 27 - RULE_valueOperator = 28 - RULE_regexOperator = 29 - RULE_booleanExpression = 30 - RULE_valueExpression = 31 - RULE_regexExpression = 32 - RULE_functionExpression = 33 - RULE_primaryExpression = 34 + RULE_supports_block = 26 + RULE_supports_rule = 27 + RULE_supports_condition = 28 + RULE_supports_in_parens = 29 + RULE_supports_declaration = 30 + RULE_booleanOperator = 31 + RULE_numericOperator = 32 + RULE_valueOperator = 33 + RULE_regexOperator = 34 + RULE_booleanExpression = 35 + RULE_valueExpression = 36 + RULE_regexExpression = 37 + RULE_functionExpression = 38 + RULE_primaryExpression = 39 ruleNames = [ "stylesheet", "entry", "rule_", "selector", "parent_child_selector_operator", "simple_selector_operator", "link_selector", "layer_id_selector", @@ -227,10 +259,12 @@ class MapCSSParser ( Parser ): "osmtag", "attribute_selector", "predicate", "predicate_simple", "class_selector", "pseudo_class_selector", "type_selector", "declaration_block", "declarations", "declaration", "declaration_property", - "declaration_value", "int_", "single_value", "booleanOperator", - "numericOperator", "valueOperator", "regexOperator", - "booleanExpression", "valueExpression", "regexExpression", - "functionExpression", "primaryExpression" ] + "declaration_value", "int_", "single_value", "supports_block", + "supports_rule", "supports_condition", "supports_in_parens", + "supports_declaration", "booleanOperator", "numericOperator", + "valueOperator", "regexOperator", "booleanExpression", + "valueExpression", "regexExpression", "functionExpression", + "primaryExpression" ] EOF = Token.EOF COMMA=1 @@ -267,55 +301,59 @@ class MapCSSParser ( Parser ): OP_NOT=32 SET=33 IMPORT=34 - NCOMPONENT=35 - LBRACKET=36 - RBRACKET=37 - LBRACE=38 - RBRACE=39 - COLON=40 - SEMICOLON=41 - DQUOTED_STRING=42 - SQUOTED_STRING=43 - POSITIVE_INT=44 - NEGATIVE_INT=45 - POSITIVE_FLOAT=46 - NEGATIVE_FLOAT=47 - RANGE=48 - REGEXP=49 - WS=50 - SL_COMMENT=51 - ML_COMMENT=52 - STYLESHEET=53 - RULE=54 - SIMPLE_SELECTOR=55 - DESCENDANT_COMBINATOR=56 - CHILD_COMBINATOR=57 - PARENT_COMBINATOR=58 - TYPE_SELECTOR=59 - ZOOM_SELECTOR=60 - ATTRIBUTE_SELECTOR=61 - CLASS_SELECTOR=62 - PSEUDO_CLASS_SELECTOR=63 - LAYER_ID_SELECTOR=64 - DECLARATION_BLOCK=65 - DECLARATION=66 - VALUE_RGB=67 - VALUE_RGBA=68 - VALUE_URL=69 - VALUE_KEYWORD=70 - VALUE_QUOTED=71 - VALUE_FLOAT=72 - VALUE_INT=73 - VALUE_PERCENTAGE=74 - VALUE_POINTS=75 - VALUE_PIXELS=76 - VALUE_LIST=77 - VALUE_REGEXP=78 - VALUE_INCREMENT=79 - FUNCTION_CALL=80 - PREDICATE=81 - TR_CALL=82 - EVAL_CALL=83 + SUPPORTS=35 + SUPPORTS_NOT=36 + SUPPORTS_AND=37 + SUPPORTS_OR=38 + NCOMPONENT=39 + LBRACKET=40 + RBRACKET=41 + LBRACE=42 + RBRACE=43 + COLON=44 + SEMICOLON=45 + DQUOTED_STRING=46 + SQUOTED_STRING=47 + POSITIVE_INT=48 + NEGATIVE_INT=49 + POSITIVE_FLOAT=50 + NEGATIVE_FLOAT=51 + RANGE=52 + REGEXP=53 + WS=54 + SL_COMMENT=55 + ML_COMMENT=56 + STYLESHEET=57 + RULE=58 + SIMPLE_SELECTOR=59 + DESCENDANT_COMBINATOR=60 + CHILD_COMBINATOR=61 + PARENT_COMBINATOR=62 + TYPE_SELECTOR=63 + ZOOM_SELECTOR=64 + ATTRIBUTE_SELECTOR=65 + CLASS_SELECTOR=66 + PSEUDO_CLASS_SELECTOR=67 + LAYER_ID_SELECTOR=68 + DECLARATION_BLOCK=69 + DECLARATION=70 + VALUE_RGB=71 + VALUE_RGBA=72 + VALUE_URL=73 + VALUE_KEYWORD=74 + VALUE_QUOTED=75 + VALUE_FLOAT=76 + VALUE_INT=77 + VALUE_PERCENTAGE=78 + VALUE_POINTS=79 + VALUE_PIXELS=80 + VALUE_LIST=81 + VALUE_REGEXP=82 + VALUE_INCREMENT=83 + FUNCTION_CALL=84 + PREDICATE=85 + TR_CALL=86 + EVAL_CALL=87 def __init__(self, input:TokenStream, output:TextIO = sys.stdout): super().__init__(input, output) @@ -364,17 +402,17 @@ def stylesheet(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 73 + self.state = 83 self._errHandler.sync(self) _la = self._input.LA(1) - while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << MapCSSParser.OP_MUL) | (1 << MapCSSParser.OP_MINUS) | (1 << MapCSSParser.NCOMPONENT))) != 0): - self.state = 70 + while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << MapCSSParser.OP_MUL) | (1 << MapCSSParser.OP_MINUS) | (1 << MapCSSParser.SUPPORTS) | (1 << MapCSSParser.NCOMPONENT))) != 0): + self.state = 80 self.entry() - self.state = 75 + self.state = 85 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 76 + self.state = 86 self.match(MapCSSParser.EOF) except RecognitionException as re: localctx.exception = re @@ -396,6 +434,10 @@ def rule_(self): return self.getTypedRuleContext(MapCSSParser.Rule_Context,0) + def supports_block(self): + return self.getTypedRuleContext(MapCSSParser.Supports_blockContext,0) + + def getRuleIndex(self): return MapCSSParser.RULE_entry @@ -415,9 +457,22 @@ def entry(self): localctx = MapCSSParser.EntryContext(self, self._ctx, self.state) self.enterRule(localctx, 2, self.RULE_entry) try: - self.enterOuterAlt(localctx, 1) - self.state = 78 - self.rule_() + self.state = 90 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [MapCSSParser.OP_MUL, MapCSSParser.OP_MINUS, MapCSSParser.NCOMPONENT]: + self.enterOuterAlt(localctx, 1) + self.state = 88 + self.rule_() + pass + elif token in [MapCSSParser.SUPPORTS]: + self.enterOuterAlt(localctx, 2) + self.state = 89 + self.supports_block() + pass + else: + raise NoViableAltException(self) + except RecognitionException as re: localctx.exception = re self._errHandler.reportError(self, re) @@ -472,32 +527,32 @@ def rule_(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 80 + self.state = 92 self.selector() - self.state = 85 + self.state = 97 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,1,self._ctx) + _alt = self._interp.adaptivePredict(self._input,2,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 81 + self.state = 93 self.match(MapCSSParser.COMMA) - self.state = 82 + self.state = 94 self.selector() - self.state = 87 + self.state = 99 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,1,self._ctx) + _alt = self._interp.adaptivePredict(self._input,2,self._ctx) - self.state = 91 + self.state = 103 self._errHandler.sync(self) _la = self._input.LA(1) while _la==MapCSSParser.COMMA: - self.state = 88 + self.state = 100 self.match(MapCSSParser.COMMA) - self.state = 93 + self.state = 105 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 94 + self.state = 106 self.declaration_block() except RecognitionException as re: localctx.exception = re @@ -564,62 +619,62 @@ def selector(self): self.enterRule(localctx, 6, self.RULE_selector) self._la = 0 # Token type try: - self.state = 115 + self.state = 127 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,5,self._ctx) + la_ = self._interp.adaptivePredict(self._input,6,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 96 + self.state = 108 self.simple_selector() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 97 + self.state = 109 self.simple_selector() - self.state = 98 + self.state = 110 self.simple_selector() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 100 + self.state = 112 self.simple_selector() - self.state = 101 + self.state = 113 self.parent_child_selector_operator() - self.state = 106 + self.state = 118 self._errHandler.sync(self) _la = self._input.LA(1) while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << MapCSSParser.OP_NOT) | (1 << MapCSSParser.LBRACKET) | (1 << MapCSSParser.COLON))) != 0): - self.state = 104 + self.state = 116 self._errHandler.sync(self) token = self._input.LA(1) if token in [MapCSSParser.LBRACKET]: - self.state = 102 + self.state = 114 self.link_selector() pass elif token in [MapCSSParser.OP_NOT, MapCSSParser.COLON]: - self.state = 103 + self.state = 115 self.pseudo_class_selector() pass else: raise NoViableAltException(self) - self.state = 108 + self.state = 120 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 109 + self.state = 121 self.simple_selector() pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 111 + self.state = 123 self.simple_selector() - self.state = 112 + self.state = 124 self.simple_selector_operator() - self.state = 113 + self.state = 125 self.simple_selector() pass @@ -667,7 +722,7 @@ def parent_child_selector_operator(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 117 + self.state = 129 _la = self._input.LA(1) if not(_la==MapCSSParser.OP_LT or _la==MapCSSParser.OP_GT): self._errHandler.recoverInline(self) @@ -729,7 +784,7 @@ def simple_selector_operator(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 119 + self.state = 131 _la = self._input.LA(1) if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << MapCSSParser.OP_INCLUDED_IN) | (1 << MapCSSParser.OP_INTERSECTS) | (1 << MapCSSParser.OP_SUBSET) | (1 << MapCSSParser.OP_SUPERSET) | (1 << MapCSSParser.OP_NOSUBSET) | (1 << MapCSSParser.OP_NOSUPERSET))) != 0)): self._errHandler.recoverInline(self) @@ -798,34 +853,34 @@ def link_selector(self): localctx = MapCSSParser.Link_selectorContext(self, self._ctx, self.state) self.enterRule(localctx, 12, self.RULE_link_selector) try: - self.state = 133 + self.state = 145 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,6,self._ctx) + la_ = self._interp.adaptivePredict(self._input,7,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 121 + self.state = 133 self.match(MapCSSParser.LBRACKET) - self.state = 122 + self.state = 134 self.cssident() - self.state = 123 + self.state = 135 self.valueOperator() - self.state = 124 + self.state = 136 self.valueExpression(0) - self.state = 125 + self.state = 137 self.match(MapCSSParser.RBRACKET) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 127 + self.state = 139 self.match(MapCSSParser.LBRACKET) - self.state = 128 + self.state = 140 self.cssident() - self.state = 129 + self.state = 141 self.numericOperator() - self.state = 130 + self.state = 142 localctx.v = self.int_() - self.state = 131 + self.state = 143 self.match(MapCSSParser.RBRACKET) pass @@ -877,11 +932,11 @@ def layer_id_selector(self): self.enterRule(localctx, 14, self.RULE_layer_id_selector) try: self.enterOuterAlt(localctx, 1) - self.state = 135 + self.state = 147 self.match(MapCSSParser.COLON) - self.state = 136 + self.state = 148 self.match(MapCSSParser.COLON) - self.state = 137 + self.state = 149 localctx.k = self.cssident() except RecognitionException as re: localctx.exception = re @@ -956,46 +1011,46 @@ def simple_selector(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 139 + self.state = 151 self.type_selector() - self.state = 146 + self.state = 158 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,8,self._ctx) + _alt = self._interp.adaptivePredict(self._input,9,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 144 + self.state = 156 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,7,self._ctx) + la_ = self._interp.adaptivePredict(self._input,8,self._ctx) if la_ == 1: - self.state = 140 + self.state = 152 self.zoom_selector() pass elif la_ == 2: - self.state = 141 + self.state = 153 self.class_selector() pass elif la_ == 3: - self.state = 142 + self.state = 154 self.attribute_selector() pass elif la_ == 4: - self.state = 143 + self.state = 155 self.pseudo_class_selector() pass - self.state = 148 + self.state = 160 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,8,self._ctx) + _alt = self._interp.adaptivePredict(self._input,9,self._ctx) - self.state = 150 + self.state = 162 self._errHandler.sync(self) _la = self._input.LA(1) if _la==MapCSSParser.COLON: - self.state = 149 + self.state = 161 self.layer_id_selector() @@ -1038,7 +1093,7 @@ def zoom_selector(self): self.enterRule(localctx, 18, self.RULE_zoom_selector) try: self.enterOuterAlt(localctx, 1) - self.state = 152 + self.state = 164 self.match(MapCSSParser.RANGE) except RecognitionException as re: localctx.exception = re @@ -1083,7 +1138,7 @@ def quoted(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 154 + self.state = 166 _la = self._input.LA(1) if not(_la==MapCSSParser.DQUOTED_STRING or _la==MapCSSParser.SQUOTED_STRING): self._errHandler.recoverInline(self) @@ -1133,15 +1188,15 @@ def cssident(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 157 + self.state = 169 self._errHandler.sync(self) _la = self._input.LA(1) if _la==MapCSSParser.OP_MINUS: - self.state = 156 + self.state = 168 self.match(MapCSSParser.OP_MINUS) - self.state = 159 + self.state = 171 self.match(MapCSSParser.NCOMPONENT) except RecognitionException as re: localctx.exception = re @@ -1201,33 +1256,33 @@ def osmtag(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 162 + self.state = 174 self._errHandler.sync(self) _la = self._input.LA(1) if _la==MapCSSParser.OP_MINUS: - self.state = 161 + self.state = 173 self.match(MapCSSParser.OP_MINUS) - self.state = 164 + self.state = 176 self.match(MapCSSParser.NCOMPONENT) - self.state = 169 + self.state = 181 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,12,self._ctx) + _alt = self._interp.adaptivePredict(self._input,13,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 165 + self.state = 177 _la = self._input.LA(1) if not(_la==MapCSSParser.DOT or _la==MapCSSParser.COLON): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) self.consume() - self.state = 166 + self.state = 178 self.match(MapCSSParser.NCOMPONENT) - self.state = 171 + self.state = 183 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,12,self._ctx) + _alt = self._interp.adaptivePredict(self._input,13,self._ctx) except RecognitionException as re: localctx.exception = re @@ -1275,11 +1330,11 @@ def attribute_selector(self): self.enterRule(localctx, 26, self.RULE_attribute_selector) try: self.enterOuterAlt(localctx, 1) - self.state = 172 + self.state = 184 self.match(MapCSSParser.LBRACKET) - self.state = 173 + self.state = 185 self.predicate() - self.state = 174 + self.state = 186 self.match(MapCSSParser.RBRACKET) except RecognitionException as re: localctx.exception = re @@ -1324,18 +1379,18 @@ def predicate(self): localctx = MapCSSParser.PredicateContext(self, self._ctx, self.state) self.enterRule(localctx, 28, self.RULE_predicate) try: - self.state = 178 + self.state = 190 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,13,self._ctx) + la_ = self._interp.adaptivePredict(self._input,14,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 176 + self.state = 188 self.predicate_simple() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 177 + self.state = 189 self.booleanExpression(0) pass @@ -1397,38 +1452,38 @@ def predicate_simple(self): self.enterRule(localctx, 30, self.RULE_predicate_simple) self._la = 0 # Token type try: - self.state = 194 + self.state = 206 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,18,self._ctx) + la_ = self._interp.adaptivePredict(self._input,19,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 181 + self.state = 193 self._errHandler.sync(self) _la = self._input.LA(1) if _la==MapCSSParser.OP_NOT: - self.state = 180 + self.state = 192 self.match(MapCSSParser.OP_NOT) - self.state = 185 + self.state = 197 self._errHandler.sync(self) token = self._input.LA(1) if token in [MapCSSParser.OP_MINUS, MapCSSParser.NCOMPONENT]: - self.state = 183 + self.state = 195 self.osmtag() pass elif token in [MapCSSParser.DQUOTED_STRING, MapCSSParser.SQUOTED_STRING]: - self.state = 184 + self.state = 196 self.quoted() pass else: raise NoViableAltException(self) - self.state = 188 + self.state = 200 self._errHandler.sync(self) _la = self._input.LA(1) if _la==MapCSSParser.QUESTION_MARK or _la==MapCSSParser.QUESTION_MARK_NEGATED: - self.state = 187 + self.state = 199 _la = self._input.LA(1) if not(_la==MapCSSParser.QUESTION_MARK or _la==MapCSSParser.QUESTION_MARK_NEGATED): self._errHandler.recoverInline(self) @@ -1441,15 +1496,15 @@ def predicate_simple(self): elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 191 + self.state = 203 self._errHandler.sync(self) _la = self._input.LA(1) if _la==MapCSSParser.OP_NOT: - self.state = 190 + self.state = 202 self.match(MapCSSParser.OP_NOT) - self.state = 193 + self.state = 205 self.regexExpression() pass @@ -1499,23 +1554,23 @@ def class_selector(self): localctx = MapCSSParser.Class_selectorContext(self, self._ctx, self.state) self.enterRule(localctx, 32, self.RULE_class_selector) try: - self.state = 201 + self.state = 213 self._errHandler.sync(self) token = self._input.LA(1) if token in [MapCSSParser.OP_NOT]: self.enterOuterAlt(localctx, 1) - self.state = 196 + self.state = 208 self.match(MapCSSParser.OP_NOT) - self.state = 197 + self.state = 209 self.match(MapCSSParser.DOT) - self.state = 198 + self.state = 210 self.cssident() pass elif token in [MapCSSParser.DOT]: self.enterOuterAlt(localctx, 2) - self.state = 199 + self.state = 211 self.match(MapCSSParser.DOT) - self.state = 200 + self.state = 212 self.cssident() pass else: @@ -1566,34 +1621,34 @@ def pseudo_class_selector(self): localctx = MapCSSParser.Pseudo_class_selectorContext(self, self._ctx, self.state) self.enterRule(localctx, 34, self.RULE_pseudo_class_selector) try: - self.state = 211 + self.state = 223 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,20,self._ctx) + la_ = self._interp.adaptivePredict(self._input,21,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 203 + self.state = 215 self.match(MapCSSParser.COLON) - self.state = 204 + self.state = 216 self.match(MapCSSParser.OP_NOT) - self.state = 205 + self.state = 217 self.cssident() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 206 + self.state = 218 self.match(MapCSSParser.OP_NOT) - self.state = 207 + self.state = 219 self.match(MapCSSParser.COLON) - self.state = 208 + self.state = 220 self.cssident() pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 209 + self.state = 221 self.match(MapCSSParser.COLON) - self.state = 210 + self.state = 222 self.cssident() pass @@ -1640,17 +1695,17 @@ def type_selector(self): localctx = MapCSSParser.Type_selectorContext(self, self._ctx, self.state) self.enterRule(localctx, 36, self.RULE_type_selector) try: - self.state = 215 + self.state = 227 self._errHandler.sync(self) token = self._input.LA(1) if token in [MapCSSParser.OP_MINUS, MapCSSParser.NCOMPONENT]: self.enterOuterAlt(localctx, 1) - self.state = 213 + self.state = 225 self.cssident() pass elif token in [MapCSSParser.OP_MUL]: self.enterOuterAlt(localctx, 2) - self.state = 214 + self.state = 226 self.match(MapCSSParser.OP_MUL) pass else: @@ -1702,24 +1757,24 @@ def declaration_block(self): localctx = MapCSSParser.Declaration_blockContext(self, self._ctx, self.state) self.enterRule(localctx, 38, self.RULE_declaration_block) try: - self.state = 223 + self.state = 235 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,22,self._ctx) + la_ = self._interp.adaptivePredict(self._input,23,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 217 + self.state = 229 localctx.l = self.match(MapCSSParser.LBRACE) - self.state = 218 + self.state = 230 self.declarations() - self.state = 219 + self.state = 231 self.match(MapCSSParser.RBRACE) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 221 + self.state = 233 localctx.l = self.match(MapCSSParser.LBRACE) - self.state = 222 + self.state = 234 self.match(MapCSSParser.RBRACE) pass @@ -1774,28 +1829,28 @@ def declarations(self): self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 225 + self.state = 237 self.declaration() - self.state = 230 + self.state = 242 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,23,self._ctx) + _alt = self._interp.adaptivePredict(self._input,24,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: - self.state = 226 + self.state = 238 self.match(MapCSSParser.SEMICOLON) - self.state = 227 + self.state = 239 self.declaration() - self.state = 232 + self.state = 244 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,23,self._ctx) + _alt = self._interp.adaptivePredict(self._input,24,self._ctx) - self.state = 236 + self.state = 248 self._errHandler.sync(self) _la = self._input.LA(1) while _la==MapCSSParser.SEMICOLON: - self.state = 233 + self.state = 245 self.match(MapCSSParser.SEMICOLON) - self.state = 238 + self.state = 250 self._errHandler.sync(self) _la = self._input.LA(1) @@ -1856,31 +1911,31 @@ def declaration(self): self.enterRule(localctx, 42, self.RULE_declaration) self._la = 0 # Token type try: - self.state = 248 + self.state = 260 self._errHandler.sync(self) token = self._input.LA(1) if token in [MapCSSParser.SET]: self.enterOuterAlt(localctx, 1) - self.state = 239 + self.state = 251 self.match(MapCSSParser.SET) - self.state = 241 + self.state = 253 self._errHandler.sync(self) _la = self._input.LA(1) if _la==MapCSSParser.DOT: - self.state = 240 + self.state = 252 self.match(MapCSSParser.DOT) - self.state = 243 + self.state = 255 self.cssident() pass elif token in [MapCSSParser.OP_MINUS, MapCSSParser.NCOMPONENT]: self.enterOuterAlt(localctx, 2) - self.state = 244 + self.state = 256 self.declaration_property() - self.state = 245 + self.state = 257 self.match(MapCSSParser.COLON) - self.state = 246 + self.state = 258 self.declaration_value() pass else: @@ -1926,7 +1981,7 @@ def declaration_property(self): self.enterRule(localctx, 44, self.RULE_declaration_property) try: self.enterOuterAlt(localctx, 1) - self.state = 250 + self.state = 262 self.cssident() except RecognitionException as re: localctx.exception = re @@ -1971,18 +2026,18 @@ def declaration_value(self): localctx = MapCSSParser.Declaration_valueContext(self, self._ctx, self.state) self.enterRule(localctx, 46, self.RULE_declaration_value) try: - self.state = 254 + self.state = 266 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,27,self._ctx) + la_ = self._interp.adaptivePredict(self._input,28,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 252 + self.state = 264 self.single_value() pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 253 + self.state = 265 self.functionExpression() pass @@ -2029,17 +2084,17 @@ def int_(self): localctx = MapCSSParser.Int_Context(self, self._ctx, self.state) self.enterRule(localctx, 48, self.RULE_int_) try: - self.state = 258 + self.state = 270 self._errHandler.sync(self) token = self._input.LA(1) if token in [MapCSSParser.POSITIVE_INT]: self.enterOuterAlt(localctx, 1) - self.state = 256 + self.state = 268 localctx.n = self.match(MapCSSParser.POSITIVE_INT) pass elif token in [MapCSSParser.NEGATIVE_INT]: self.enterOuterAlt(localctx, 2) - self.state = 257 + self.state = 269 localctx.n = self.match(MapCSSParser.NEGATIVE_INT) pass else: @@ -2101,37 +2156,37 @@ def single_value(self): localctx = MapCSSParser.Single_valueContext(self, self._ctx, self.state) self.enterRule(localctx, 50, self.RULE_single_value) try: - self.state = 266 + self.state = 278 self._errHandler.sync(self) token = self._input.LA(1) if token in [MapCSSParser.POSITIVE_INT]: self.enterOuterAlt(localctx, 1) - self.state = 260 + self.state = 272 localctx.v = self.match(MapCSSParser.POSITIVE_INT) pass elif token in [MapCSSParser.NEGATIVE_INT]: self.enterOuterAlt(localctx, 2) - self.state = 261 + self.state = 273 localctx.v = self.match(MapCSSParser.NEGATIVE_INT) pass elif token in [MapCSSParser.POSITIVE_FLOAT]: self.enterOuterAlt(localctx, 3) - self.state = 262 + self.state = 274 localctx.v = self.match(MapCSSParser.POSITIVE_FLOAT) pass elif token in [MapCSSParser.NEGATIVE_FLOAT]: self.enterOuterAlt(localctx, 4) - self.state = 263 + self.state = 275 localctx.v = self.match(MapCSSParser.NEGATIVE_FLOAT) pass elif token in [MapCSSParser.DQUOTED_STRING, MapCSSParser.SQUOTED_STRING]: self.enterOuterAlt(localctx, 5) - self.state = 264 + self.state = 276 self.quoted() pass elif token in [MapCSSParser.OP_MINUS, MapCSSParser.NCOMPONENT]: self.enterOuterAlt(localctx, 6) - self.state = 265 + self.state = 277 self.osmtag() pass else: @@ -2146,6 +2201,380 @@ def single_value(self): return localctx + class Supports_blockContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def supports_rule(self): + return self.getTypedRuleContext(MapCSSParser.Supports_ruleContext,0) + + + def LBRACE(self): + return self.getToken(MapCSSParser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(MapCSSParser.RBRACE, 0) + + def rule_(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MapCSSParser.Rule_Context) + else: + return self.getTypedRuleContext(MapCSSParser.Rule_Context,i) + + + def getRuleIndex(self): + return MapCSSParser.RULE_supports_block + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSupports_block" ): + listener.enterSupports_block(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSupports_block" ): + listener.exitSupports_block(self) + + + + + def supports_block(self): + + localctx = MapCSSParser.Supports_blockContext(self, self._ctx, self.state) + self.enterRule(localctx, 52, self.RULE_supports_block) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 280 + self.supports_rule() + self.state = 281 + self.match(MapCSSParser.LBRACE) + self.state = 285 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << MapCSSParser.OP_MUL) | (1 << MapCSSParser.OP_MINUS) | (1 << MapCSSParser.NCOMPONENT))) != 0): + self.state = 282 + self.rule_() + self.state = 287 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 288 + self.match(MapCSSParser.RBRACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Supports_ruleContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SUPPORTS(self): + return self.getToken(MapCSSParser.SUPPORTS, 0) + + def supports_condition(self): + return self.getTypedRuleContext(MapCSSParser.Supports_conditionContext,0) + + + def getRuleIndex(self): + return MapCSSParser.RULE_supports_rule + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSupports_rule" ): + listener.enterSupports_rule(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSupports_rule" ): + listener.exitSupports_rule(self) + + + + + def supports_rule(self): + + localctx = MapCSSParser.Supports_ruleContext(self, self._ctx, self.state) + self.enterRule(localctx, 54, self.RULE_supports_rule) + try: + self.enterOuterAlt(localctx, 1) + self.state = 290 + self.match(MapCSSParser.SUPPORTS) + self.state = 291 + self.supports_condition() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Supports_conditionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def SUPPORTS_NOT(self): + return self.getToken(MapCSSParser.SUPPORTS_NOT, 0) + + def supports_in_parens(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(MapCSSParser.Supports_in_parensContext) + else: + return self.getTypedRuleContext(MapCSSParser.Supports_in_parensContext,i) + + + def SUPPORTS_AND(self, i:int=None): + if i is None: + return self.getTokens(MapCSSParser.SUPPORTS_AND) + else: + return self.getToken(MapCSSParser.SUPPORTS_AND, i) + + def SUPPORTS_OR(self, i:int=None): + if i is None: + return self.getTokens(MapCSSParser.SUPPORTS_OR) + else: + return self.getToken(MapCSSParser.SUPPORTS_OR, i) + + def getRuleIndex(self): + return MapCSSParser.RULE_supports_condition + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSupports_condition" ): + listener.enterSupports_condition(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSupports_condition" ): + listener.exitSupports_condition(self) + + + + + def supports_condition(self): + + localctx = MapCSSParser.Supports_conditionContext(self, self._ctx, self.state) + self.enterRule(localctx, 56, self.RULE_supports_condition) + self._la = 0 # Token type + try: + self.state = 311 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,34,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 293 + self.match(MapCSSParser.SUPPORTS_NOT) + self.state = 294 + self.supports_in_parens() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 295 + self.supports_in_parens() + self.state = 300 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==MapCSSParser.SUPPORTS_AND: + self.state = 296 + self.match(MapCSSParser.SUPPORTS_AND) + self.state = 297 + self.supports_in_parens() + self.state = 302 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 303 + self.supports_in_parens() + self.state = 308 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==MapCSSParser.SUPPORTS_OR: + self.state = 304 + self.match(MapCSSParser.SUPPORTS_OR) + self.state = 305 + self.supports_in_parens() + self.state = 310 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Supports_in_parensContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def PAR_OPEN(self): + return self.getToken(MapCSSParser.PAR_OPEN, 0) + + def supports_condition(self): + return self.getTypedRuleContext(MapCSSParser.Supports_conditionContext,0) + + + def PAR_CLOSE(self): + return self.getToken(MapCSSParser.PAR_CLOSE, 0) + + def supports_declaration(self): + return self.getTypedRuleContext(MapCSSParser.Supports_declarationContext,0) + + + def getRuleIndex(self): + return MapCSSParser.RULE_supports_in_parens + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSupports_in_parens" ): + listener.enterSupports_in_parens(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSupports_in_parens" ): + listener.exitSupports_in_parens(self) + + + + + def supports_in_parens(self): + + localctx = MapCSSParser.Supports_in_parensContext(self, self._ctx, self.state) + self.enterRule(localctx, 58, self.RULE_supports_in_parens) + try: + self.state = 321 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,35,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 313 + self.match(MapCSSParser.PAR_OPEN) + self.state = 314 + self.supports_condition() + self.state = 315 + self.match(MapCSSParser.PAR_CLOSE) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 317 + self.match(MapCSSParser.PAR_OPEN) + self.state = 318 + self.supports_declaration() + self.state = 319 + self.match(MapCSSParser.PAR_CLOSE) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Supports_declarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def cssident(self): + return self.getTypedRuleContext(MapCSSParser.CssidentContext,0) + + + def COLON(self): + return self.getToken(MapCSSParser.COLON, 0) + + def POSITIVE_INT(self): + return self.getToken(MapCSSParser.POSITIVE_INT, 0) + + def NCOMPONENT(self): + return self.getToken(MapCSSParser.NCOMPONENT, 0) + + def getRuleIndex(self): + return MapCSSParser.RULE_supports_declaration + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSupports_declaration" ): + listener.enterSupports_declaration(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSupports_declaration" ): + listener.exitSupports_declaration(self) + + + + + def supports_declaration(self): + + localctx = MapCSSParser.Supports_declarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 60, self.RULE_supports_declaration) + try: + self.state = 332 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input,36,self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 323 + self.cssident() + self.state = 324 + self.match(MapCSSParser.COLON) + self.state = 325 + self.match(MapCSSParser.POSITIVE_INT) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 327 + self.cssident() + self.state = 328 + self.match(MapCSSParser.COLON) + self.state = 329 + self.match(MapCSSParser.NCOMPONENT) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 331 + self.cssident() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class BooleanOperatorContext(ParserRuleContext): __slots__ = 'parser' @@ -2182,11 +2611,11 @@ def exitRule(self, listener:ParseTreeListener): def booleanOperator(self): localctx = MapCSSParser.BooleanOperatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 52, self.RULE_booleanOperator) + self.enterRule(localctx, 62, self.RULE_booleanOperator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 268 + self.state = 334 _la = self._input.LA(1) if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << MapCSSParser.OP_EQ) | (1 << MapCSSParser.OP_NEQ) | (1 << MapCSSParser.OP_OR) | (1 << MapCSSParser.OP_AND))) != 0)): self._errHandler.recoverInline(self) @@ -2244,11 +2673,11 @@ def exitRule(self, listener:ParseTreeListener): def numericOperator(self): localctx = MapCSSParser.NumericOperatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 54, self.RULE_numericOperator) + self.enterRule(localctx, 64, self.RULE_numericOperator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 270 + self.state = 336 _la = self._input.LA(1) if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << MapCSSParser.OP_EQ) | (1 << MapCSSParser.OP_NEQ) | (1 << MapCSSParser.OP_LE) | (1 << MapCSSParser.OP_GE) | (1 << MapCSSParser.OP_LT) | (1 << MapCSSParser.OP_GT))) != 0)): self._errHandler.recoverInline(self) @@ -2304,34 +2733,34 @@ def exitRule(self, listener:ParseTreeListener): def valueOperator(self): localctx = MapCSSParser.ValueOperatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 56, self.RULE_valueOperator) + self.enterRule(localctx, 66, self.RULE_valueOperator) try: - self.state = 277 + self.state = 343 self._errHandler.sync(self) token = self._input.LA(1) if token in [MapCSSParser.OP_EQ, MapCSSParser.OP_NEQ, MapCSSParser.OP_LE, MapCSSParser.OP_GE, MapCSSParser.OP_LT, MapCSSParser.OP_GT]: self.enterOuterAlt(localctx, 1) - self.state = 272 + self.state = 338 self.numericOperator() pass elif token in [MapCSSParser.OP_STARTS_WITH]: self.enterOuterAlt(localctx, 2) - self.state = 273 + self.state = 339 self.match(MapCSSParser.OP_STARTS_WITH) pass elif token in [MapCSSParser.OP_ENDS_WITH]: self.enterOuterAlt(localctx, 3) - self.state = 274 + self.state = 340 self.match(MapCSSParser.OP_ENDS_WITH) pass elif token in [MapCSSParser.OP_SUBSTRING]: self.enterOuterAlt(localctx, 4) - self.state = 275 + self.state = 341 self.match(MapCSSParser.OP_SUBSTRING) pass elif token in [MapCSSParser.OP_CONTAINS]: self.enterOuterAlt(localctx, 5) - self.state = 276 + self.state = 342 self.match(MapCSSParser.OP_CONTAINS) pass else: @@ -2376,11 +2805,11 @@ def exitRule(self, listener:ParseTreeListener): def regexOperator(self): localctx = MapCSSParser.RegexOperatorContext(self, self._ctx, self.state) - self.enterRule(localctx, 58, self.RULE_regexOperator) + self.enterRule(localctx, 68, self.RULE_regexOperator) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 279 + self.state = 345 _la = self._input.LA(1) if not(_la==MapCSSParser.OP_MATCH or _la==MapCSSParser.OP_NOT_MATCH): self._errHandler.recoverInline(self) @@ -2468,66 +2897,66 @@ def booleanExpression(self, _p:int=0): _parentState = self.state localctx = MapCSSParser.BooleanExpressionContext(self, self._ctx, _parentState) _prevctx = localctx - _startState = 60 - self.enterRecursionRule(localctx, 60, self.RULE_booleanExpression, _p) + _startState = 70 + self.enterRecursionRule(localctx, 70, self.RULE_booleanExpression, _p) try: self.enterOuterAlt(localctx, 1) - self.state = 301 + self.state = 367 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,31,self._ctx) + la_ = self._interp.adaptivePredict(self._input,38,self._ctx) if la_ == 1: - self.state = 282 + self.state = 348 localctx.op = self.match(MapCSSParser.PAR_OPEN) - self.state = 283 + self.state = 349 self.booleanExpression(0) - self.state = 284 + self.state = 350 self.match(MapCSSParser.PAR_CLOSE) pass elif la_ == 2: - self.state = 286 + self.state = 352 localctx.op = self.match(MapCSSParser.OP_NOT) - self.state = 287 + self.state = 353 self.booleanExpression(6) pass elif la_ == 3: - self.state = 288 + self.state = 354 self.valueExpression(0) - self.state = 289 + self.state = 355 self.valueOperator() - self.state = 290 + self.state = 356 self.valueExpression(0) pass elif la_ == 4: - self.state = 292 + self.state = 358 self.valueExpression(0) - self.state = 293 + self.state = 359 self.regexOperator() - self.state = 294 + self.state = 360 self.regexExpression() pass elif la_ == 5: - self.state = 296 + self.state = 362 self.regexExpression() - self.state = 297 + self.state = 363 self.regexOperator() - self.state = 298 + self.state = 364 self.regexExpression() pass elif la_ == 6: - self.state = 300 + self.state = 366 self.functionExpression() pass self._ctx.stop = self._input.LT(-1) - self.state = 309 + self.state = 375 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,32,self._ctx) + _alt = self._interp.adaptivePredict(self._input,39,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: @@ -2535,17 +2964,17 @@ def booleanExpression(self, _p:int=0): _prevctx = localctx localctx = MapCSSParser.BooleanExpressionContext(self, _parentctx, _parentState) self.pushNewRecursionContext(localctx, _startState, self.RULE_booleanExpression) - self.state = 303 + self.state = 369 if not self.precpred(self._ctx, 5): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") - self.state = 304 + self.state = 370 self.booleanOperator() - self.state = 305 + self.state = 371 self.booleanExpression(6) - self.state = 311 + self.state = 377 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,32,self._ctx) + _alt = self._interp.adaptivePredict(self._input,39,self._ctx) except RecognitionException as re: localctx.exception = re @@ -2618,38 +3047,38 @@ def valueExpression(self, _p:int=0): _parentState = self.state localctx = MapCSSParser.ValueExpressionContext(self, self._ctx, _parentState) _prevctx = localctx - _startState = 62 - self.enterRecursionRule(localctx, 62, self.RULE_valueExpression, _p) + _startState = 72 + self.enterRecursionRule(localctx, 72, self.RULE_valueExpression, _p) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 319 + self.state = 385 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,33,self._ctx) + la_ = self._interp.adaptivePredict(self._input,40,self._ctx) if la_ == 1: - self.state = 313 + self.state = 379 localctx.op = self.match(MapCSSParser.PAR_OPEN) - self.state = 314 + self.state = 380 self.valueExpression(0) - self.state = 315 + self.state = 381 self.match(MapCSSParser.PAR_CLOSE) pass elif la_ == 2: - self.state = 317 + self.state = 383 self.primaryExpression() pass elif la_ == 3: - self.state = 318 + self.state = 384 self.functionExpression() pass self._ctx.stop = self._input.LT(-1) - self.state = 326 + self.state = 392 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,34,self._ctx) + _alt = self._interp.adaptivePredict(self._input,41,self._ctx) while _alt!=2 and _alt!=ATN.INVALID_ALT_NUMBER: if _alt==1: if self._parseListeners is not None: @@ -2657,11 +3086,11 @@ def valueExpression(self, _p:int=0): _prevctx = localctx localctx = MapCSSParser.ValueExpressionContext(self, _parentctx, _parentState) self.pushNewRecursionContext(localctx, _startState, self.RULE_valueExpression) - self.state = 321 + self.state = 387 if not self.precpred(self._ctx, 3): from antlr4.error.Errors import FailedPredicateException raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") - self.state = 322 + self.state = 388 localctx.op = self._input.LT(1) _la = self._input.LA(1) if not((((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << MapCSSParser.OP_MUL) | (1 << MapCSSParser.OP_DIV) | (1 << MapCSSParser.OP_MOD) | (1 << MapCSSParser.OP_PLUS) | (1 << MapCSSParser.OP_MINUS))) != 0)): @@ -2669,11 +3098,11 @@ def valueExpression(self, _p:int=0): else: self._errHandler.reportMatch(self) self.consume() - self.state = 323 + self.state = 389 self.valueExpression(4) - self.state = 328 + self.state = 394 self._errHandler.sync(self) - _alt = self._interp.adaptivePredict(self._input,34,self._ctx) + _alt = self._interp.adaptivePredict(self._input,41,self._ctx) except RecognitionException as re: localctx.exception = re @@ -2715,19 +3144,19 @@ def exitRule(self, listener:ParseTreeListener): def regexExpression(self): localctx = MapCSSParser.RegexExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 64, self.RULE_regexExpression) + self.enterRule(localctx, 74, self.RULE_regexExpression) try: - self.state = 331 + self.state = 397 self._errHandler.sync(self) token = self._input.LA(1) if token in [MapCSSParser.DQUOTED_STRING, MapCSSParser.SQUOTED_STRING]: self.enterOuterAlt(localctx, 1) - self.state = 329 + self.state = 395 self.quoted() pass elif token in [MapCSSParser.REGEXP]: self.enterOuterAlt(localctx, 2) - self.state = 330 + self.state = 396 self.match(MapCSSParser.REGEXP) pass else: @@ -2790,35 +3219,35 @@ def exitRule(self, listener:ParseTreeListener): def functionExpression(self): localctx = MapCSSParser.FunctionExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 66, self.RULE_functionExpression) + self.enterRule(localctx, 76, self.RULE_functionExpression) self._la = 0 # Token type try: self.enterOuterAlt(localctx, 1) - self.state = 333 + self.state = 399 localctx.f = self.cssident() - self.state = 334 + self.state = 400 self.match(MapCSSParser.PAR_OPEN) - self.state = 343 + self.state = 409 self._errHandler.sync(self) _la = self._input.LA(1) if (((_la) & ~0x3f) == 0 and ((1 << _la) & ((1 << MapCSSParser.PAR_OPEN) | (1 << MapCSSParser.OP_MUL) | (1 << MapCSSParser.OP_MINUS) | (1 << MapCSSParser.NCOMPONENT) | (1 << MapCSSParser.DQUOTED_STRING) | (1 << MapCSSParser.SQUOTED_STRING) | (1 << MapCSSParser.POSITIVE_INT) | (1 << MapCSSParser.NEGATIVE_INT) | (1 << MapCSSParser.POSITIVE_FLOAT) | (1 << MapCSSParser.NEGATIVE_FLOAT))) != 0): - self.state = 335 + self.state = 401 self.valueExpression(0) - self.state = 340 + self.state = 406 self._errHandler.sync(self) _la = self._input.LA(1) while _la==MapCSSParser.COMMA: - self.state = 336 + self.state = 402 self.match(MapCSSParser.COMMA) - self.state = 337 + self.state = 403 self.valueExpression(0) - self.state = 342 + self.state = 408 self._errHandler.sync(self) _la = self._input.LA(1) - self.state = 345 + self.state = 411 self.match(MapCSSParser.PAR_CLOSE) except RecognitionException as re: localctx.exception = re @@ -2881,69 +3310,69 @@ def exitRule(self, listener:ParseTreeListener): def primaryExpression(self): localctx = MapCSSParser.PrimaryExpressionContext(self, self._ctx, self.state) - self.enterRule(localctx, 68, self.RULE_primaryExpression) + self.enterRule(localctx, 78, self.RULE_primaryExpression) self._la = 0 # Token type try: - self.state = 361 + self.state = 427 self._errHandler.sync(self) - la_ = self._interp.adaptivePredict(self._input,40,self._ctx) + la_ = self._interp.adaptivePredict(self._input,47,self._ctx) if la_ == 1: self.enterOuterAlt(localctx, 1) - self.state = 347 + self.state = 413 localctx.v = self.match(MapCSSParser.POSITIVE_FLOAT) pass elif la_ == 2: self.enterOuterAlt(localctx, 2) - self.state = 348 + self.state = 414 localctx.v = self.match(MapCSSParser.POSITIVE_INT) pass elif la_ == 3: self.enterOuterAlt(localctx, 3) - self.state = 349 + self.state = 415 localctx.v = self.match(MapCSSParser.NEGATIVE_FLOAT) pass elif la_ == 4: self.enterOuterAlt(localctx, 4) - self.state = 350 + self.state = 416 localctx.v = self.match(MapCSSParser.NEGATIVE_INT) pass elif la_ == 5: self.enterOuterAlt(localctx, 5) - self.state = 352 + self.state = 418 self._errHandler.sync(self) _la = self._input.LA(1) if _la==MapCSSParser.OP_MUL: - self.state = 351 + self.state = 417 self.match(MapCSSParser.OP_MUL) - self.state = 354 + self.state = 420 self.quoted() pass elif la_ == 6: self.enterOuterAlt(localctx, 6) - self.state = 356 + self.state = 422 self._errHandler.sync(self) _la = self._input.LA(1) if _la==MapCSSParser.OP_MUL: - self.state = 355 + self.state = 421 self.match(MapCSSParser.OP_MUL) - self.state = 358 + self.state = 424 self.osmtag() pass elif la_ == 7: self.enterOuterAlt(localctx, 7) - self.state = 359 + self.state = 425 self.match(MapCSSParser.OP_MUL) - self.state = 360 + self.state = 426 self.regexExpression() pass @@ -2961,8 +3390,8 @@ def primaryExpression(self): def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): if self._predicates == None: self._predicates = dict() - self._predicates[30] = self.booleanExpression_sempred - self._predicates[31] = self.valueExpression_sempred + self._predicates[35] = self.booleanExpression_sempred + self._predicates[36] = self.valueExpression_sempred pred = self._predicates.get(ruleIndex, None) if pred is None: raise Exception("No predicate with index:" + str(ruleIndex))