diff --git a/go/sqltypes/value.go b/go/sqltypes/value.go index 550e8b86eaf..76f08c74a20 100644 --- a/go/sqltypes/value.go +++ b/go/sqltypes/value.go @@ -399,6 +399,22 @@ func encodeBytesSQL(val []byte, b BinWriter) { b.Write(buf.Bytes()) } +// EncodeStringSQL encodes the string as a SQL string. +func EncodeStringSQL(val string) string { + buf := &bytes2.Buffer{} + buf.WriteByte('\'') + for _, ch := range val { + if encodedChar := SQLEncodeMap[ch]; encodedChar == DontEscape { + buf.WriteByte(byte(ch)) + } else { + buf.WriteByte('\\') + buf.WriteByte(encodedChar) + } + } + buf.WriteByte('\'') + return buf.String() +} + func encodeBytesSQLBits(val []byte, b BinWriter) { fmt.Fprint(b, "b'") for _, ch := range val { diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go index dd896d274c1..f6fd6fe89c6 100644 --- a/go/vt/sqlparser/ast.go +++ b/go/vt/sqlparser/ast.go @@ -2525,7 +2525,7 @@ func (node *ShowFilter) Format(buf *TrackedBuffer) { return } if node.Like != "" { - buf.astPrintf(node, " like '%s'", node.Like) + buf.astPrintf(node, " like %s", encodeSQLString(node.Like)) } else { buf.astPrintf(node, " where %v", node.Filter) } @@ -3196,7 +3196,7 @@ func (node *SelectInto) Format(buf *TrackedBuffer) { if node == nil { return } - buf.astPrintf(node, "%s'%s'", node.Type.ToString(), node.FileName) + buf.astPrintf(node, "%s%s", node.Type.ToString(), node.FileName) if node.Charset != "" { buf.astPrintf(node, " character set %s", node.Charset) } diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go index 7924815f2f4..d20c4dae2cd 100644 --- a/go/vt/sqlparser/ast_funcs.go +++ b/go/vt/sqlparser/ast_funcs.go @@ -1355,3 +1355,8 @@ func handleUnaryMinus(expr Expr) Expr { } return &UnaryExpr{Operator: UMinusOp, Expr: expr} } + +// encodeSQLString encodes the string as a SQL string. +func encodeSQLString(val string) string { + return sqltypes.EncodeStringSQL(val) +} diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 71034845478..b9944d2993d 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -2297,12 +2297,16 @@ func TestSelectInto(t *testing.T) { }{{ input: "select * from t order by name limit 100 into outfile s3 'out_file_name'", output: "select * from t order by `name` asc limit 100 into outfile s3 'out_file_name'", + }, { + input: `select * from TestPerson into outfile s3 's3://test-bucket/export_import/export/users.csv' fields terminated by ',' enclosed by '\"' escaped by '\\' overwrite on`, }, { input: "select * from t into dumpfile 'out_file_name'", }, { - input: "select * from t into outfile 'out_file_name' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'", + input: "select * from t into outfile 'out_file_name' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n'", + }, { + input: "select * from t into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n' manifest on overwrite off", }, { - input: "select * from t into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off", + input: "select * from t into outfile s3 'out_file_name' character set binary lines terminated by '\\n' starting by 'a' manifest on overwrite off", }, { input: "select * from (select * from t union select * from t2) as t3 where t3.name in (select col from t4) into outfile s3 'out_file_name'", output: "select * from (select * from t union select * from t2) as t3 where t3.`name` in (select col from t4) into outfile s3 'out_file_name'", @@ -2311,6 +2315,12 @@ func TestSelectInto(t *testing.T) { input: "select * from t limit 100 into outfile s3 'out_file_name' union select * from t2", }, { input: "select * from (select * from t into outfile s3 'inner_outfile') as t2 into outfile s3 'out_file_name'", + }, { + input: `select * from TestPerson into outfile s3 's3://test-bucket/export_import/export/users.csv' character set 'utf8' overwrite on`, + }, { + input: `select * from t1 into outfile '/tmp/foo.csv' fields escaped by '\\' terminated by '\n'`, + }, { + input: `select * from t1 into outfile '/tmp/foo.csv' fields escaped by 'c' terminated by '\n' enclosed by '\t'`, }} for _, tcase := range validSQL { diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index ea2ea23470a..e2731b8c886 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -1070,7 +1070,7 @@ var yyExca = [...]int{ 1, -1, -2, 0, -1, 43, - 163, 925, + 163, 927, -2, 90, -1, 44, 1, 111, @@ -1080,603 +1080,723 @@ var yyExca = [...]int{ 143, 117, 254, 117, 307, 117, - -2, 324, + -2, 325, -1, 52, - 34, 466, - 164, 466, - 176, 466, - 209, 480, - 210, 480, - -2, 468, + 34, 467, + 164, 467, + 176, 467, + 209, 481, + 210, 481, + -2, 469, -1, 57, - 166, 490, - -2, 488, + 166, 491, + -2, 489, -1, 82, - 56, 557, - -2, 565, + 56, 558, + -2, 566, -1, 107, 1, 112, 469, 112, -2, 117, -1, 117, - 169, 229, - 170, 229, - -2, 318, + 169, 230, + 170, 230, + -2, 319, -1, 136, 143, 117, 254, 117, 307, 117, - -2, 333, + -2, 334, -1, 572, - 150, 946, - -2, 942, + 150, 948, + -2, 944, -1, 573, - 150, 947, - -2, 943, + 150, 949, + -2, 945, -1, 591, - 56, 558, - -2, 570, - -1, 592, 56, 559, -2, 571, + -1, 592, + 56, 560, + -2, 572, -1, 613, - 118, 1285, + 118, 1287, -2, 83, -1, 614, - 118, 1168, + 118, 1170, -2, 84, -1, 620, - 118, 1218, - -2, 919, + 118, 1220, + -2, 921, -1, 757, - 118, 1106, - -2, 916, + 118, 1108, + -2, 918, -1, 791, 175, 37, 180, 37, - -2, 240, + -2, 241, -1, 870, - 1, 371, - 469, 371, + 1, 372, + 469, 372, -2, 117, -1, 1107, - 1, 267, - 469, 267, + 1, 268, + 469, 268, -2, 117, -1, 1185, - 169, 229, - 170, 229, - -2, 318, + 169, 230, + 170, 230, + -2, 319, -1, 1194, 175, 38, 180, 38, - -2, 241, + -2, 242, -1, 1403, - 150, 949, - -2, 945, + 150, 951, + -2, 947, -1, 1495, 74, 65, 82, 65, -2, 69, -1, 1516, - 1, 268, - 469, 268, + 1, 269, + 469, 269, -2, 117, - -1, 1927, - 5, 813, - 18, 813, - 20, 813, - 32, 813, - 83, 813, - -2, 597, - -1, 2139, - 46, 887, - -2, 885, + -1, 1928, + 5, 814, + 18, 814, + 20, 814, + 32, 814, + 83, 814, + -2, 598, + -1, 2140, + 46, 889, + -2, 883, } const yyPrivate = 57344 -const yyLast = 27646 +const yyLast = 27918 var yyAct = [...]int{ - 572, 2220, 1979, 2139, 2207, 2184, 1809, 1840, 1729, 2090, - 2148, 2068, 81, 3, 1907, 545, 1696, 929, 1976, 516, - 1908, 1440, 1580, 531, 1010, 1730, 1904, 1716, 1546, 1813, - 1170, 514, 1551, 145, 1531, 882, 1793, 1492, 761, 1055, - 584, 1794, 821, 1513, 1919, 1866, 1210, 1792, 176, 1656, - 1630, 188, 1578, 479, 188, 1192, 1553, 1303, 1062, 495, - 1389, 188, 1397, 131, 1786, 786, 618, 1099, 1474, 188, - 1481, 1083, 909, 593, 1082, 1060, 1065, 1092, 1442, 578, - 1085, 1048, 946, 1423, 1366, 1164, 518, 32, 768, 507, - 495, 79, 1199, 495, 188, 495, 799, 1282, 773, 769, - 1089, 1169, 1457, 1542, 787, 789, 765, 615, 788, 1400, - 792, 1098, 1308, 927, 1072, 77, 876, 1497, 148, 108, - 1184, 109, 114, 1096, 115, 1167, 1023, 863, 502, 8, - 7, 1532, 6, 175, 1024, 1832, 1831, 1609, 76, 1269, - 2092, 1854, 1855, 1437, 1438, 177, 178, 179, 1355, 1354, - 1353, 1352, 1351, 1350, 505, 1694, 506, 2136, 762, 1343, - 1953, 600, 604, 110, 2176, 579, 116, 2047, 2114, 2113, - 826, 188, 2063, 825, 824, 2064, 823, 2226, 2181, 2219, - 2159, 188, 2210, 875, 454, 1646, 188, 78, 1980, 837, - 838, 503, 841, 842, 843, 844, 82, 1597, 847, 848, + 572, 2225, 2214, 2169, 1980, 2191, 1841, 1729, 1810, 2153, + 2141, 516, 1908, 2091, 2069, 929, 1696, 1909, 81, 3, + 1440, 1513, 545, 1977, 1580, 1062, 1055, 1730, 531, 1905, + 514, 1531, 1010, 1814, 584, 1551, 1794, 1920, 761, 1546, + 1716, 1170, 821, 1795, 882, 145, 1210, 1867, 176, 1656, + 1397, 188, 1793, 479, 188, 1630, 1303, 618, 79, 495, + 1389, 188, 131, 1578, 1553, 1787, 1492, 1192, 1099, 188, + 1474, 909, 1082, 1481, 1092, 1065, 1085, 593, 1060, 1442, + 786, 1048, 1423, 578, 1366, 946, 1400, 1164, 518, 765, + 495, 32, 1199, 495, 188, 495, 799, 507, 773, 792, + 1083, 1169, 769, 1282, 768, 615, 1457, 1542, 1089, 787, + 788, 77, 789, 1098, 1072, 1308, 876, 148, 1184, 108, + 1497, 109, 114, 115, 1167, 502, 863, 8, 7, 6, + 1096, 175, 1532, 1023, 1833, 1832, 1609, 927, 76, 1269, + 2093, 1855, 1024, 1856, 177, 178, 179, 1437, 1438, 1355, + 1354, 1353, 1352, 1351, 1350, 505, 1343, 506, 2183, 1694, + 600, 604, 110, 947, 116, 2137, 2048, 1954, 2115, 579, + 2114, 188, 2064, 762, 825, 2065, 823, 602, 824, 78, + 2231, 188, 826, 875, 2188, 454, 188, 2224, 503, 837, + 838, 2164, 841, 842, 843, 844, 82, 2217, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 612, 2180, 803, 2158, 1171, 1883, 2011, - 778, 619, 1760, 947, 802, 1759, 110, 780, 1761, 779, - 174, 1695, 84, 85, 86, 87, 88, 89, 1556, 1934, - 1935, 834, 781, 827, 828, 829, 1616, 1498, 1933, 947, - 1615, 2126, 972, 971, 981, 982, 974, 975, 976, 977, - 978, 979, 980, 973, 169, 1439, 983, 557, 1853, 563, - 564, 561, 562, 1644, 560, 559, 558, 1508, 1509, 1100, - 839, 1101, 1507, 901, 565, 566, 169, 483, 957, 111, - 925, 133, 34, 840, 110, 70, 38, 39, 777, 916, - 153, 918, 105, 902, 182, 183, 177, 178, 179, 169, - 782, 111, 895, 576, 957, 105, 170, 1555, 102, 889, - 890, 575, 153, 1777, 1344, 1345, 1346, 1426, 1525, 2002, - 2000, 143, 493, 1342, 111, 1842, 132, 887, 915, 917, - 482, 888, 889, 890, 2161, 153, 497, 491, 1814, 1579, - 1259, 1612, 1836, 1291, 150, 1292, 151, 1293, 1288, 103, - 1837, 120, 121, 142, 141, 168, 1283, 69, 2209, 924, - 864, 922, 908, 105, 871, 97, 150, 1845, 151, 953, - 100, 878, 1624, 99, 98, 2177, 1764, 168, 1844, 945, - 906, 907, 1260, 903, 1261, 904, 905, 846, 845, 150, - 1285, 151, 896, 1287, 483, 953, 2110, 1843, 2058, 587, - 168, 810, 1289, 137, 118, 144, 125, 117, 808, 138, - 139, 483, 1581, 154, 1475, 819, 818, 817, 816, 1952, - 103, 815, 814, 159, 126, 813, 812, 914, 783, 173, - 913, 919, 807, 1178, 1286, 154, 820, 2059, 129, 127, - 122, 123, 124, 128, 188, 159, 912, 482, 119, 1498, - 104, 2227, 1629, 2196, 766, 2127, 766, 130, 154, 795, - 801, 877, 920, 104, 482, 766, 483, 794, 159, 764, - 495, 495, 495, 107, 801, 1557, 2157, 1614, 1198, 1197, - 1168, 885, 606, 891, 892, 893, 894, 921, 495, 495, - 2224, 899, 1846, 811, 1603, 1296, 933, 1645, 830, 1802, - 809, 1611, 939, 801, 926, 952, 949, 950, 951, 956, - 958, 955, 801, 954, 2149, 1892, 801, 1697, 1699, 482, - 948, 104, 1891, 1890, 776, 146, 775, 774, 1824, 1867, - 2143, 952, 949, 950, 951, 956, 958, 955, 923, 954, - 874, 772, 453, 2162, 180, 1632, 948, 146, 1632, 1623, - 1631, 2031, 1622, 1631, 995, 996, 1271, 1270, 1272, 1273, - 1274, 1599, 1932, 1721, 1664, 836, 188, 1589, 1503, 1076, - 146, 801, 1869, 1008, 880, 973, 1675, 1514, 983, 140, - 983, 1453, 1756, 1053, 930, 931, 92, 886, 868, 1672, - 993, 134, 1338, 495, 135, 800, 188, 884, 188, 188, - 963, 495, 794, 797, 798, 71, 766, 495, 2118, 800, - 791, 795, 960, 1698, 910, 804, 794, 822, 615, 942, - 940, 898, 941, 1309, 1011, 805, 1917, 1052, 963, 790, - 1871, 93, 1875, 900, 1870, 1081, 1868, 2222, 800, 1284, - 2223, 1873, 2221, 806, 804, 794, 1049, 800, 1885, 870, - 1872, 800, 962, 960, 805, 1102, 943, 1066, 794, 797, - 798, 869, 766, 1874, 1876, 1424, 791, 795, 865, 963, - 866, 1563, 1424, 867, 1682, 1026, 1028, 1030, 1032, 1034, - 1036, 1037, 1596, 1027, 1029, 1598, 1033, 1035, 1594, 1038, - 1064, 810, 808, 1046, 1937, 147, 152, 149, 155, 156, - 157, 158, 160, 161, 162, 163, 800, 1591, 835, 2211, - 883, 164, 165, 166, 167, 995, 996, 147, 152, 149, - 155, 156, 157, 158, 160, 161, 162, 163, 995, 996, - 911, 1595, 619, 164, 165, 166, 167, 2212, 1373, 1310, - 147, 152, 149, 155, 156, 157, 158, 160, 161, 162, - 163, 188, 1371, 1372, 1370, 1160, 164, 165, 166, 167, - 1069, 177, 178, 179, 2201, 1172, 1173, 1174, 1054, 981, - 982, 974, 975, 976, 977, 978, 979, 980, 973, 2228, - 495, 983, 1194, 976, 977, 978, 979, 980, 973, 1591, - 1203, 983, 2202, 1097, 1207, 2046, 2214, 495, 495, 69, - 495, 2045, 495, 495, 172, 495, 495, 495, 495, 495, - 495, 1369, 1204, 1593, 1176, 1177, 1958, 1894, 1190, 1790, - 495, 1782, 1789, 1278, 188, 1243, 974, 975, 976, 977, - 978, 979, 980, 973, 1560, 1670, 983, 1238, 1239, 1183, - 1256, 1458, 1459, 1669, 1212, 1202, 1213, 2229, 1215, 1217, - 2213, 495, 1221, 1223, 1225, 1227, 1229, 602, 1240, 188, - 177, 178, 179, 1279, 1391, 1895, 2203, 188, 961, 962, - 960, 188, 1246, 1247, 1774, 1769, 1671, 1264, 1252, 1253, - 1263, 1201, 1277, 610, 1200, 1200, 963, 188, 1159, 1166, - 1649, 1650, 1651, 1175, 188, 1180, 1262, 1181, 1254, 1179, - 771, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 495, 495, 495, 1455, 1276, 1193, 605, 1248, 1770, 1245, - 1392, 1313, 508, 961, 962, 960, 1244, 2192, 1317, 1219, - 1319, 1320, 1321, 1322, 2081, 1324, 188, 1305, 588, 1266, - 1772, 963, 1791, 1767, 2108, 961, 962, 960, 2043, 1339, - 1311, 1312, 1241, 1887, 2019, 1768, 1940, 961, 962, 960, - 961, 962, 960, 963, 1316, 1896, 961, 962, 960, 1799, - 1787, 1323, 1367, 1275, 1390, 963, 1454, 1640, 963, 110, - 780, 1297, 779, 1393, 963, 1302, 971, 981, 982, 974, - 975, 976, 977, 978, 979, 980, 973, 495, 1265, 983, - 1315, 961, 962, 960, 607, 608, 1607, 1606, 1361, 1363, - 1364, 177, 178, 179, 1775, 1773, 1401, 1394, 1395, 963, - 1362, 1306, 1267, 1334, 1335, 1336, 1412, 1415, 1255, 1251, - 495, 495, 1425, 177, 178, 179, 1349, 1763, 177, 178, - 179, 188, 1573, 1368, 534, 533, 536, 537, 538, 539, - 1250, 1249, 1839, 535, 495, 540, 1402, 1965, 2195, 2107, - 1407, 188, 1965, 2155, 495, 1403, 1447, 1717, 188, 1978, - 188, 1905, 1011, 177, 178, 179, 1816, 1571, 188, 188, - 1916, 573, 78, 1448, 1401, 495, 1965, 2144, 495, 1801, - 1493, 1965, 588, 1460, 1717, 1431, 1432, 1965, 2116, 495, - 2061, 588, 615, 1591, 588, 615, 177, 178, 179, 34, - 1257, 1522, 1408, 1409, 1477, 1404, 1414, 1417, 1418, 2029, - 588, 1771, 1965, 1970, 1472, 1950, 1949, 1946, 1947, 1467, - 1468, 1517, 189, 1403, 1724, 189, 1478, 1518, 1946, 1945, - 496, 1430, 189, 1499, 1433, 1434, 1916, 1533, 1534, 1535, - 189, 1466, 588, 1499, 495, 1498, 1833, 1725, 188, 80, - 588, 2026, 495, 1916, 1521, 1478, 1569, 1570, 1572, 1163, - 1818, 496, 1811, 1812, 496, 189, 496, 1548, 1470, 1496, - 495, 1478, 588, 1554, 69, 34, 495, 959, 588, 1592, - 1203, 1526, 1203, 1527, 1528, 1529, 1530, 1505, 1501, 1466, - 1590, 1163, 1162, 1520, 959, 1500, 1750, 1519, 1504, 1538, - 1539, 1540, 1541, 1502, 1498, 1500, 619, 2117, 1577, 619, - 1108, 1107, 1965, 1498, 1948, 1466, 34, 1478, 1506, 1687, - 495, 1686, 1390, 2097, 1466, 1591, 1574, 1390, 1390, 1456, - 1435, 1347, 1295, 1094, 1591, 1587, 785, 1588, 581, 1544, - 1545, 784, 189, 1558, 1561, 2147, 1549, 1559, 69, 1841, - 69, 2070, 189, 1977, 1566, 1567, 1568, 189, 1600, 2037, - 1165, 1547, 188, 1838, 1583, 803, 188, 188, 188, 188, - 188, 1586, 1584, 1601, 802, 1200, 188, 188, 188, 188, - 1549, 2048, 1602, 1633, 1582, 1234, 1543, 1604, 1605, 188, - 1537, 69, 2052, 1536, 588, 1281, 188, 972, 971, 981, - 982, 974, 975, 976, 977, 978, 979, 980, 973, 1195, - 1191, 983, 1161, 69, 94, 1795, 1796, 1405, 1406, 174, - 2071, 188, 495, 1231, 1171, 1920, 1921, 1635, 1636, 2049, - 2050, 2051, 1638, 1235, 1236, 1237, 2216, 2053, 2054, 1639, - 972, 971, 981, 982, 974, 975, 976, 977, 978, 979, - 980, 973, 2208, 1923, 983, 1905, 1657, 1807, 964, 1806, - 1796, 1449, 1610, 967, 1805, 970, 1367, 1564, 1232, 1233, - 1340, 984, 985, 986, 987, 988, 989, 990, 1627, 968, - 969, 966, 972, 971, 981, 982, 974, 975, 976, 977, - 978, 979, 980, 973, 508, 1298, 983, 1926, 1483, 1486, - 1487, 1488, 1484, 1021, 1485, 1489, 598, 594, 1920, 1921, - 1643, 1483, 1486, 1487, 1488, 1484, 188, 1485, 1489, 1925, - 1741, 1739, 595, 1738, 188, 1742, 1740, 1743, 1666, 1487, - 1488, 1737, 2198, 1058, 1061, 1652, 2179, 1368, 1897, 1706, - 1063, 2030, 1968, 1715, 1714, 1067, 1068, 597, 188, 596, - 2167, 2164, 2200, 101, 2183, 96, 2185, 1704, 2191, 188, - 188, 188, 188, 188, 1665, 1705, 2190, 1726, 1703, 2140, - 2138, 188, 579, 1294, 574, 188, 1800, 1731, 188, 188, - 1710, 1722, 188, 188, 188, 1719, 1681, 1748, 1661, 1662, - 832, 1420, 831, 1989, 1795, 1762, 1049, 1693, 598, 594, - 171, 932, 1701, 184, 1056, 181, 1421, 1852, 1826, 1679, - 1825, 111, 1709, 1781, 595, 1751, 1057, 2095, 1942, 1753, - 1941, 511, 1720, 1718, 1585, 189, 1209, 1208, 1196, 2024, - 1765, 1733, 1734, 1732, 1736, 1451, 1735, 591, 592, 597, - 1744, 596, 1778, 1779, 1749, 188, 2014, 1458, 1459, 1803, - 1305, 496, 496, 496, 1757, 1780, 495, 1783, 1784, 1785, - 1754, 1301, 495, 1554, 1766, 495, 2109, 1203, 2065, 496, - 496, 1819, 495, 1491, 582, 583, 1648, 1713, 1798, 1815, - 585, 2205, 1788, 2204, 1830, 1712, 2188, 1821, 2168, 1797, - 2023, 1964, 188, 972, 971, 981, 982, 974, 975, 976, - 977, 978, 979, 980, 973, 1575, 586, 983, 80, 2022, - 188, 1828, 1900, 1717, 2218, 2217, 2218, 1676, 1183, 1673, - 1077, 1070, 1820, 2141, 1939, 1452, 1829, 1402, 581, 78, - 83, 75, 1, 1827, 466, 1436, 1403, 1047, 478, 2206, - 1268, 1258, 1981, 2067, 1971, 495, 1552, 189, 793, 136, - 1515, 1390, 1516, 2151, 91, 759, 1848, 90, 1847, 796, - 897, 1576, 1863, 2062, 1776, 1524, 1114, 1112, 1113, 1111, - 1116, 1115, 1110, 1341, 496, 492, 1490, 189, 1103, 189, - 189, 495, 496, 1856, 1071, 833, 1865, 1850, 496, 456, - 1851, 1951, 188, 1337, 1608, 462, 991, 1878, 1711, 1758, - 616, 1659, 495, 609, 1864, 1660, 1862, 1911, 495, 495, - 2189, 1877, 2165, 1906, 2163, 2137, 1667, 1668, 1884, 1863, - 2091, 1909, 1674, 2166, 1731, 1677, 1678, 1893, 2135, 2199, - 2182, 188, 1307, 1684, 1523, 1685, 1450, 1915, 1688, 1689, - 1690, 1691, 1692, 1903, 1059, 2021, 1899, 1680, 1020, 1422, - 1086, 517, 1446, 1360, 1702, 1914, 532, 1928, 529, 1930, - 1924, 1931, 530, 1461, 1723, 965, 515, 509, 1929, 1078, - 1482, 1480, 1479, 1299, 1090, 1922, 1918, 1084, 1936, 1465, - 1613, 1959, 1835, 188, 944, 590, 188, 188, 188, 504, - 95, 1419, 495, 2013, 2125, 1647, 2010, 589, 60, 37, - 1746, 1747, 1943, 1944, 499, 188, 2175, 1356, 1357, 1358, - 1359, 1955, 935, 599, 1967, 1954, 31, 30, 1956, 1957, - 29, 28, 1982, 495, 495, 495, 1972, 188, 23, 1554, - 1966, 1969, 189, 22, 21, 20, 1990, 1975, 1974, 19, + 859, 860, 861, 1646, 947, 803, 177, 178, 179, 1981, + 612, 1597, 619, 2187, 1171, 110, 1884, 780, 957, 779, + 2012, 802, 84, 85, 86, 87, 88, 89, 778, 1935, + 1936, 834, 508, 781, 1616, 1556, 1695, 2163, 1615, 1934, + 827, 828, 829, 2127, 972, 971, 981, 982, 974, 975, + 976, 977, 978, 979, 980, 973, 1854, 34, 983, 1439, + 70, 38, 39, 102, 1644, 1498, 471, 1508, 1509, 957, + 105, 839, 182, 183, 1760, 470, 174, 1759, 1507, 1100, + 1761, 1101, 483, 110, 902, 468, 925, 557, 777, 563, + 564, 561, 562, 945, 560, 559, 558, 916, 895, 918, + 840, 782, 887, 901, 565, 566, 888, 889, 890, 953, + 1777, 1344, 1345, 1346, 1555, 889, 890, 576, 105, 575, + 97, 177, 178, 179, 465, 100, 2166, 103, 99, 98, + 1525, 2003, 69, 477, 1843, 482, 915, 917, 493, 2001, + 1342, 497, 491, 1259, 1815, 1837, 1579, 1612, 1288, 922, + 1283, 2216, 1291, 1838, 1292, 864, 1293, 906, 907, 871, + 953, 105, 170, 904, 905, 924, 2111, 1846, 908, 2184, + 2059, 878, 1624, 1845, 903, 103, 483, 846, 845, 1285, + 801, 2232, 810, 783, 1581, 1260, 1287, 1261, 896, 808, + 1475, 819, 1774, 1769, 818, 511, 817, 2060, 816, 815, + 814, 813, 1289, 455, 457, 458, 1844, 474, 476, 484, + 812, 483, 483, 472, 473, 485, 459, 460, 489, 488, + 475, 1178, 464, 461, 463, 469, 1953, 1286, 104, 482, + 467, 486, 807, 820, 2229, 914, 1770, 766, 913, 919, + 1868, 899, 795, 2203, 188, 952, 949, 950, 951, 956, + 958, 955, 1498, 954, 912, 766, 107, 2128, 1772, 764, + 948, 1767, 920, 766, 482, 482, 1629, 1198, 1197, 801, + 495, 495, 495, 1768, 811, 1614, 104, 794, 877, 801, + 1168, 809, 1557, 1870, 606, 173, 921, 1847, 495, 495, + 885, 483, 891, 892, 893, 894, 952, 949, 950, 951, + 956, 958, 955, 1603, 954, 1296, 2154, 2162, 939, 1697, + 1699, 948, 933, 926, 830, 800, 1599, 1803, 1611, 104, + 801, 801, 794, 797, 798, 1645, 766, 1825, 836, 1893, + 791, 795, 1775, 1773, 801, 2167, 1892, 923, 1891, 776, + 775, 1872, 774, 1876, 482, 1871, 874, 1869, 1632, 790, + 772, 453, 1874, 1631, 180, 487, 1271, 1270, 1272, 1273, + 1274, 1873, 1632, 2148, 1675, 1623, 188, 1631, 1622, 1672, + 2032, 898, 1933, 480, 1875, 1877, 995, 996, 1721, 1664, + 71, 2227, 1589, 900, 2228, 1503, 2226, 886, 481, 1053, + 1756, 1076, 993, 495, 1052, 868, 188, 1008, 188, 188, + 973, 495, 880, 983, 800, 1698, 1514, 495, 930, 931, + 804, 794, 983, 963, 800, 1453, 615, 942, 940, 941, + 805, 794, 797, 798, 1338, 766, 2119, 822, 1011, 791, + 795, 910, 870, 177, 178, 179, 1309, 1391, 806, 1771, + 1598, 1918, 1049, 972, 971, 981, 982, 974, 975, 976, + 977, 978, 979, 980, 973, 800, 800, 983, 961, 962, + 960, 1066, 804, 794, 1081, 960, 1888, 1064, 92, 800, + 1886, 835, 805, 884, 1424, 865, 963, 866, 964, 1284, + 867, 963, 1026, 1028, 1030, 1032, 1034, 1036, 1037, 588, + 1046, 1027, 1029, 1392, 1033, 1035, 1373, 1038, 1102, 943, + 1563, 869, 1657, 995, 996, 1596, 1594, 810, 995, 996, + 1371, 1372, 1370, 93, 508, 974, 975, 976, 977, 978, + 979, 980, 973, 1021, 808, 983, 976, 977, 978, 979, + 980, 973, 1938, 619, 983, 972, 971, 981, 982, 974, + 975, 976, 977, 978, 979, 980, 973, 911, 1671, 983, + 1069, 188, 1310, 1058, 1061, 1160, 177, 178, 179, 1792, + 1782, 961, 962, 960, 2218, 1172, 1173, 1174, 1054, 981, + 982, 974, 975, 976, 977, 978, 979, 980, 973, 963, + 495, 983, 1194, 961, 962, 960, 883, 1424, 1670, 1682, + 1203, 2047, 2219, 1591, 1207, 1591, 1669, 495, 495, 2208, + 495, 963, 495, 495, 1204, 495, 495, 495, 495, 495, + 495, 962, 960, 2046, 1176, 1177, 1783, 1595, 1190, 1593, + 495, 961, 962, 960, 188, 1243, 1959, 2209, 963, 1238, + 1239, 2233, 961, 962, 960, 172, 1278, 1455, 1183, 963, + 1256, 1649, 1650, 1651, 1212, 1791, 1213, 1790, 1215, 1217, + 963, 495, 1221, 1223, 1225, 1227, 1229, 1202, 1240, 188, + 1560, 1097, 69, 1279, 1458, 1459, 1895, 188, 1361, 1363, + 1364, 188, 1246, 1247, 1369, 1276, 1266, 1264, 1252, 1253, + 1362, 1201, 1263, 1262, 1200, 1200, 1159, 188, 1166, 1254, + 1840, 1248, 1175, 1180, 188, 1277, 1245, 1181, 1179, 2234, + 1454, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 495, 495, 495, 1193, 1896, 997, 998, 999, 1000, 1001, + 1002, 1003, 1004, 1005, 1006, 961, 962, 960, 1305, 1244, + 1313, 771, 1219, 1917, 1275, 1265, 188, 1317, 2212, 1319, + 1320, 1321, 1322, 963, 1324, 605, 961, 962, 960, 1311, + 1312, 610, 2211, 1241, 2210, 177, 178, 179, 1339, 1763, + 2199, 2197, 2082, 1316, 963, 177, 178, 179, 2044, 1573, + 1323, 177, 178, 179, 1390, 1571, 2020, 1941, 110, 1367, + 780, 1297, 779, 1393, 1897, 1302, 971, 981, 982, 974, + 975, 976, 977, 978, 979, 980, 973, 495, 1800, 983, + 177, 178, 179, 1315, 534, 533, 536, 537, 538, 539, + 1788, 1640, 1607, 535, 1401, 540, 1394, 1395, 1412, 1415, + 1606, 177, 178, 179, 1425, 1257, 1306, 1407, 1267, 1255, + 495, 495, 1251, 607, 608, 1250, 1249, 1966, 2202, 1966, + 2160, 188, 1966, 2149, 1349, 1368, 588, 1334, 1335, 1336, + 1966, 588, 1307, 78, 495, 1402, 1403, 1966, 2117, 2062, + 588, 188, 1591, 588, 495, 2030, 588, 2109, 188, 2108, + 188, 1966, 1971, 1979, 1447, 1817, 1011, 1448, 188, 188, + 1717, 573, 1401, 1431, 1432, 495, 1499, 1460, 495, 1408, + 1409, 1951, 1950, 1414, 1417, 1418, 1493, 1947, 1948, 495, + 615, 1947, 1946, 615, 1466, 588, 1498, 1834, 1163, 1819, + 1802, 1404, 1812, 1813, 1478, 588, 34, 1592, 1430, 1499, + 1522, 1433, 1434, 1472, 1403, 959, 588, 1356, 1357, 1358, + 1359, 588, 189, 1717, 1468, 189, 1467, 1518, 1163, 1162, + 496, 1724, 189, 1517, 1533, 1534, 1535, 2027, 1500, 1478, + 189, 1108, 1107, 1750, 495, 2049, 1502, 80, 188, 34, + 1906, 1498, 495, 959, 1725, 1477, 1569, 1570, 1572, 1917, + 34, 496, 1591, 2118, 496, 189, 496, 1966, 1470, 1521, + 495, 1500, 1410, 1411, 1949, 1478, 495, 1496, 1548, 1498, + 1203, 69, 1203, 1526, 1554, 1527, 1528, 1529, 1530, 1505, + 1590, 1501, 1917, 2050, 2051, 2052, 1466, 2098, 1520, 1519, + 1506, 1538, 1539, 1540, 1541, 1504, 1478, 619, 1577, 508, + 619, 1687, 1686, 1466, 1466, 2009, 581, 1591, 1574, 1456, + 495, 1435, 1390, 1347, 69, 1797, 1295, 1390, 1390, 1549, + 1483, 1486, 1487, 1488, 1484, 69, 1485, 1489, 1094, 785, + 1921, 1922, 189, 1544, 1545, 1234, 1558, 1587, 784, 1588, + 1561, 1559, 189, 2015, 1566, 1567, 1568, 189, 1600, 2152, + 1512, 69, 188, 1549, 2071, 803, 188, 188, 188, 188, + 188, 1586, 1978, 1582, 2038, 1200, 188, 188, 188, 188, + 1583, 802, 1602, 1633, 1601, 1165, 1547, 1604, 1605, 188, + 1839, 69, 1584, 1235, 1236, 1237, 188, 1543, 1537, 1536, 972, 971, 981, 982, 974, 975, 976, 977, 978, 979, - 980, 973, 25, 18, 983, 17, 16, 106, 47, 44, - 42, 496, 1410, 1411, 113, 112, 1987, 1988, 45, 41, - 872, 27, 26, 15, 14, 13, 12, 11, 496, 496, - 1998, 496, 10, 496, 496, 1993, 496, 496, 496, 496, - 496, 496, 9, 5, 4, 938, 24, 1009, 2, 508, - 0, 496, 0, 0, 0, 189, 0, 0, 0, 0, - 2020, 0, 0, 2025, 0, 0, 1731, 0, 0, 0, - 0, 0, 2034, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 496, 1995, 1996, 0, 1997, 2040, 0, 1999, - 189, 2001, 0, 2041, 0, 495, 495, 0, 189, 0, - 1512, 2056, 189, 0, 2033, 0, 0, 0, 495, 2055, - 2042, 495, 2044, 0, 2066, 0, 0, 2039, 189, 1860, - 1861, 0, 0, 0, 0, 189, 0, 2074, 2069, 0, + 980, 973, 1281, 1195, 983, 1191, 1161, 94, 174, 1550, + 1842, 188, 495, 2072, 972, 971, 981, 982, 974, 975, + 976, 977, 978, 979, 980, 973, 1635, 1636, 983, 2053, + 1171, 1638, 2205, 1921, 1922, 2221, 2215, 1924, 1639, 1796, + 1906, 1365, 1808, 1807, 1374, 1375, 1376, 1377, 1378, 1379, + 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1231, + 1610, 1806, 1564, 1367, 1340, 1298, 1927, 1741, 1739, 967, + 2186, 970, 1742, 1740, 2054, 2055, 1627, 984, 985, 986, + 987, 988, 989, 990, 1797, 968, 969, 966, 972, 971, + 981, 982, 974, 975, 976, 977, 978, 979, 980, 973, + 1926, 1427, 983, 1643, 1232, 1233, 188, 1743, 1426, 1487, + 1488, 1738, 1666, 1737, 188, 1483, 1486, 1487, 1488, 1484, + 1898, 1485, 1489, 1706, 1063, 1652, 2142, 2144, 2031, 1368, + 1969, 1715, 1714, 2171, 2207, 2145, 2190, 2192, 188, 1704, + 2174, 2170, 101, 1294, 96, 1703, 2139, 1705, 574, 188, + 188, 188, 188, 188, 1801, 1661, 1662, 1710, 1665, 1731, + 832, 188, 1420, 1726, 831, 188, 579, 1990, 188, 188, + 598, 594, 188, 188, 188, 1681, 1679, 1421, 1796, 598, + 594, 932, 1049, 1748, 1722, 1762, 595, 1693, 1056, 171, + 587, 1853, 184, 1701, 181, 595, 1827, 1826, 2025, 111, + 1057, 2096, 1943, 1781, 1719, 1709, 1942, 1585, 1209, 1067, + 1068, 597, 1718, 596, 1208, 189, 1720, 1196, 591, 592, + 597, 1732, 596, 1780, 1735, 1784, 1785, 1786, 1451, 1778, + 1779, 1305, 1765, 1744, 1751, 188, 1749, 1804, 1753, 1458, + 1459, 496, 496, 496, 1301, 1757, 495, 1754, 2110, 2066, + 1733, 1734, 495, 1736, 1491, 495, 1648, 1203, 585, 496, + 496, 1816, 495, 1820, 1554, 582, 583, 2198, 1799, 1766, + 1713, 2196, 1683, 1789, 1831, 1822, 2195, 2175, 1712, 2173, + 2024, 1965, 188, 1575, 586, 80, 2023, 1798, 1901, 1717, + 2223, 2222, 2223, 1676, 1830, 1673, 1077, 1070, 2146, 1940, + 188, 1452, 1707, 1708, 1061, 1829, 581, 1183, 78, 83, + 75, 1, 466, 1436, 1047, 478, 1402, 1403, 2213, 1268, + 1258, 1982, 2068, 1972, 1821, 1552, 793, 136, 1515, 1516, + 2156, 91, 759, 90, 1828, 495, 796, 189, 897, 1576, + 2063, 1390, 1776, 1524, 1114, 1112, 1113, 1111, 1116, 1115, + 1864, 1849, 1110, 1848, 1341, 492, 1490, 1103, 1071, 833, + 456, 1865, 1952, 1866, 496, 1337, 1608, 189, 462, 189, + 189, 495, 496, 1857, 991, 1885, 1851, 1711, 496, 1852, + 1758, 2014, 188, 616, 1863, 609, 1912, 2168, 2138, 1879, + 2140, 2092, 495, 2143, 2136, 2206, 2189, 1523, 495, 495, + 1450, 1878, 1907, 1059, 544, 2022, 1731, 1864, 1900, 1680, + 1020, 1422, 1086, 517, 1446, 1360, 532, 1894, 1910, 529, + 530, 188, 1461, 1723, 2008, 965, 515, 1904, 972, 971, + 981, 982, 974, 975, 976, 977, 978, 979, 980, 973, + 1916, 509, 983, 1925, 1078, 1915, 1482, 1653, 1654, 1655, + 1480, 1479, 1299, 1090, 1923, 187, 1919, 1084, 490, 1465, + 1929, 1613, 1931, 1836, 1932, 187, 944, 590, 504, 95, + 1944, 1945, 1960, 187, 188, 1419, 2126, 188, 188, 188, + 1937, 1647, 2011, 495, 589, 60, 37, 1930, 499, 603, + 603, 2182, 935, 599, 31, 30, 188, 1968, 187, 29, + 28, 23, 1956, 22, 21, 20, 19, 25, 1955, 1957, + 1958, 18, 17, 1983, 495, 495, 495, 16, 188, 1973, + 106, 1967, 189, 47, 44, 1970, 42, 1991, 1975, 113, + 1887, 1554, 1976, 972, 971, 981, 982, 974, 975, 976, + 977, 978, 979, 980, 973, 112, 45, 983, 41, 872, + 27, 496, 26, 15, 14, 13, 12, 11, 10, 9, + 5, 4, 938, 24, 1009, 1902, 1988, 1989, 496, 496, + 1994, 496, 2, 496, 496, 187, 496, 496, 496, 496, + 496, 496, 1999, 0, 0, 187, 0, 0, 0, 0, + 187, 496, 0, 0, 0, 189, 0, 0, 2021, 1731, + 0, 0, 0, 0, 0, 0, 0, 2026, 0, 0, + 0, 0, 2034, 0, 0, 2035, 0, 0, 0, 0, + 0, 0, 496, 0, 0, 2040, 1996, 1997, 0, 1998, + 189, 0, 2000, 0, 2002, 0, 495, 495, 189, 2042, + 0, 2041, 189, 0, 2057, 0, 0, 0, 2043, 495, + 2045, 0, 495, 0, 0, 2056, 0, 2067, 189, 0, + 0, 0, 0, 0, 0, 189, 0, 2070, 2075, 0, 0, 0, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 496, 496, 496, 0, 0, 495, 495, 495, 188, - 0, 0, 2084, 2086, 2087, 0, 0, 0, 0, 1550, - 495, 2073, 495, 2072, 0, 0, 0, 189, 495, 0, - 2088, 2098, 1909, 0, 2103, 2100, 1909, 2096, 2094, 0, - 0, 2080, 0, 0, 2089, 1912, 0, 0, 0, 0, - 188, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, - 1006, 495, 188, 0, 2102, 0, 1927, 2119, 2115, 0, - 2104, 0, 0, 0, 2112, 0, 2105, 0, 2106, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 496, 0, - 0, 0, 0, 0, 0, 2134, 0, 0, 0, 0, - 0, 0, 2142, 1909, 2008, 0, 0, 0, 495, 495, - 0, 0, 2145, 0, 544, 0, 0, 0, 0, 2150, - 0, 496, 496, 0, 0, 2069, 2152, 0, 0, 0, - 0, 0, 189, 0, 495, 2160, 0, 0, 495, 0, - 2169, 0, 0, 0, 2174, 496, 2171, 2007, 0, 0, - 0, 1731, 189, 2178, 0, 496, 0, 2187, 2186, 189, - 0, 189, 0, 0, 0, 187, 0, 0, 490, 189, - 189, 2197, 0, 0, 0, 187, 496, 0, 0, 496, - 1992, 0, 0, 187, 1994, 0, 0, 0, 0, 0, - 496, 0, 0, 0, 0, 2003, 2004, 0, 0, 603, - 603, 2215, 0, 0, 0, 0, 0, 0, 187, 0, - 2225, 2018, 0, 972, 971, 981, 982, 974, 975, 976, - 977, 978, 979, 980, 973, 2006, 0, 983, 2027, 2028, - 0, 0, 2032, 0, 0, 0, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 496, 0, 0, 0, 189, - 0, 0, 0, 496, 0, 0, 972, 971, 981, 982, + 189, 496, 496, 496, 0, 0, 0, 495, 495, 495, + 188, 2073, 0, 0, 0, 2085, 2087, 2088, 0, 2074, + 0, 495, 0, 495, 0, 0, 0, 189, 0, 495, + 2089, 0, 0, 0, 2101, 2097, 2081, 2104, 2099, 0, + 1910, 0, 2090, 0, 1910, 0, 0, 2095, 0, 0, + 0, 188, 0, 1859, 1860, 2106, 2013, 2107, 0, 2103, + 0, 0, 495, 188, 0, 2105, 0, 0, 1880, 1881, + 2120, 1882, 1883, 0, 0, 2116, 0, 2113, 0, 508, + 0, 0, 1889, 1890, 2007, 0, 2036, 0, 496, 2037, + 0, 0, 2039, 0, 0, 0, 2135, 0, 0, 0, + 0, 2147, 0, 0, 0, 0, 0, 2006, 0, 495, + 495, 1910, 0, 0, 0, 0, 0, 0, 0, 2150, + 0, 496, 496, 2155, 2070, 2157, 0, 0, 0, 0, + 0, 0, 189, 0, 0, 0, 0, 0, 0, 495, + 2165, 2172, 0, 495, 2176, 496, 0, 0, 1731, 0, + 2178, 2181, 189, 0, 0, 496, 0, 2185, 0, 189, + 0, 189, 2194, 2193, 0, 1939, 0, 0, 0, 189, + 189, 0, 0, 543, 0, 0, 496, 0, 187, 496, + 2204, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 496, 2094, 508, 972, 971, 981, 982, 974, 975, 976, + 977, 978, 979, 980, 973, 0, 2220, 983, 0, 0, + 0, 0, 0, 0, 0, 2230, 972, 971, 981, 982, 974, 975, 976, 977, 978, 979, 980, 973, 0, 0, - 983, 496, 0, 0, 0, 0, 0, 496, 0, 0, - 0, 0, 1683, 0, 0, 187, 0, 0, 0, 2060, - 0, 0, 0, 0, 0, 187, 0, 0, 471, 0, - 187, 2005, 0, 0, 0, 0, 0, 470, 0, 0, - 0, 0, 1707, 1708, 1061, 0, 0, 468, 0, 0, - 0, 496, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2085, 972, 971, 981, 982, 974, 975, - 976, 977, 978, 979, 980, 973, 0, 0, 983, 0, - 0, 0, 0, 0, 0, 0, 465, 0, 0, 0, - 0, 0, 0, 189, 0, 477, 0, 189, 189, 189, + 983, 0, 494, 0, 0, 0, 0, 1131, 0, 169, + 0, 0, 0, 0, 0, 496, 0, 0, 0, 189, + 0, 0, 0, 496, 1992, 0, 0, 0, 0, 169, + 0, 0, 0, 617, 111, 0, 763, 0, 770, 0, + 0, 496, 0, 0, 0, 153, 0, 496, 0, 0, + 0, 0, 0, 1858, 111, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, + 187, 0, 0, 972, 971, 981, 982, 974, 975, 976, + 977, 978, 979, 980, 973, 603, 1764, 983, 0, 0, + 0, 496, 0, 0, 0, 0, 0, 0, 0, 150, + 187, 151, 187, 1093, 0, 0, 0, 0, 0, 0, + 168, 0, 0, 0, 0, 0, 0, 0, 0, 150, + 1119, 151, 0, 0, 0, 0, 0, 0, 0, 0, + 168, 0, 0, 189, 0, 0, 0, 189, 189, 189, 189, 189, 0, 0, 0, 0, 0, 189, 189, 189, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 189, 0, 0, 2121, 2122, 2123, 2124, 189, 2128, 0, - 2129, 2130, 2131, 0, 2132, 2133, 0, 0, 483, 0, - 972, 971, 981, 982, 974, 975, 976, 977, 978, 979, - 980, 973, 189, 496, 983, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 543, 455, 457, 458, 0, 474, - 476, 484, 0, 2156, 1857, 472, 473, 485, 459, 460, - 489, 488, 475, 0, 464, 461, 463, 469, 0, 0, - 0, 482, 467, 486, 972, 971, 981, 982, 974, 975, - 976, 977, 978, 979, 980, 973, 0, 0, 983, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2193, 2194, 0, 494, 0, 0, 0, 1365, 0, 0, - 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, - 1384, 1385, 1386, 1387, 1388, 0, 0, 189, 0, 0, - 0, 0, 0, 0, 617, 189, 0, 763, 0, 770, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1886, 0, 0, 0, 0, 0, 0, 0, 0, 189, - 0, 0, 0, 0, 0, 0, 0, 1427, 0, 0, - 189, 189, 189, 189, 189, 0, 0, 0, 187, 1658, - 0, 0, 189, 0, 0, 1901, 189, 0, 0, 189, - 189, 0, 0, 189, 189, 189, 0, 487, 0, 972, - 971, 981, 982, 974, 975, 976, 977, 978, 979, 980, - 973, 0, 0, 983, 0, 480, 0, 972, 971, 981, - 982, 974, 975, 976, 977, 978, 979, 980, 973, 0, - 481, 983, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 496, 0, 0, - 0, 0, 0, 496, 0, 0, 496, 0, 0, 0, - 0, 0, 0, 496, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 0, 189, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 603, 0, 0, 0, 0, - 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, - 187, 0, 187, 1093, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2012, 496, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 508, 0, - 0, 0, 0, 0, 0, 2035, 0, 0, 2036, 0, - 0, 2038, 496, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 496, 0, 0, 0, 0, 0, 496, - 496, 0, 0, 0, 0, 0, 546, 33, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, - 2093, 508, 0, 0, 189, 0, 0, 189, 189, 189, - 0, 0, 0, 496, 580, 1050, 0, 0, 0, 0, - 0, 0, 0, 1653, 1654, 1655, 189, 0, 0, 0, - 0, 0, 0, 0, 617, 617, 617, 1206, 0, 0, - 0, 0, 0, 0, 496, 496, 496, 0, 189, 0, - 0, 0, 934, 936, 0, 0, 0, 0, 0, 0, - 0, 0, 1206, 1206, 0, 0, 186, 0, 187, 0, - 0, 0, 0, 0, 0, 0, 498, 0, 0, 0, - 0, 0, 0, 0, 577, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 0, 0, 0, 0, 0, 767, + 189, 0, 0, 1132, 0, 0, 0, 189, 154, 0, + 0, 0, 2076, 2077, 2078, 2079, 2080, 0, 159, 0, + 2083, 2084, 0, 0, 0, 0, 0, 0, 154, 0, + 0, 0, 189, 496, 0, 0, 0, 0, 159, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1405, 1406, + 1145, 1148, 1149, 1150, 1151, 1152, 1153, 0, 1154, 1155, + 1156, 1157, 1158, 1133, 1134, 1135, 1136, 1117, 1118, 1146, + 0, 1120, 0, 1121, 1122, 1123, 1124, 1125, 1126, 1127, + 1128, 1129, 1130, 1137, 1138, 1139, 1140, 1141, 1142, 1143, + 1144, 0, 1449, 0, 0, 187, 972, 971, 981, 982, + 974, 975, 976, 977, 978, 979, 980, 973, 0, 0, + 983, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 146, 1658, 0, 0, 0, 0, 0, 189, 0, 0, + 0, 0, 0, 0, 0, 189, 0, 1206, 0, 0, + 146, 972, 971, 981, 982, 974, 975, 976, 977, 978, + 979, 980, 973, 0, 0, 983, 1147, 2179, 0, 189, + 0, 0, 1206, 1206, 0, 0, 0, 0, 187, 0, + 189, 189, 189, 189, 189, 0, 0, 0, 0, 0, + 0, 0, 189, 0, 0, 0, 189, 0, 0, 189, + 189, 0, 0, 189, 189, 189, 0, 0, 0, 0, + 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 1304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 1325, 1326, 187, 187, 187, - 187, 187, 187, 187, 0, 0, 0, 1074, 0, 0, - 0, 0, 0, 0, 0, 617, 496, 496, 0, 0, - 0, 1104, 0, 0, 0, 0, 0, 0, 0, 496, - 187, 0, 496, 0, 0, 0, 862, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 873, 0, 0, 0, - 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 496, 496, 496, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 496, 0, 496, 0, 0, 0, 0, 0, 496, - 0, 0, 603, 1304, 0, 0, 0, 603, 603, 0, - 0, 603, 603, 603, 0, 0, 0, 1206, 0, 0, - 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 496, 189, 0, 0, 603, 603, 603, 603, - 603, 0, 0, 0, 0, 1444, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 187, 0, 0, 0, 1858, - 1859, 1304, 187, 0, 187, 0, 0, 0, 0, 496, - 496, 0, 187, 187, 1879, 1880, 0, 1881, 1882, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1888, 1889, - 0, 0, 0, 0, 763, 496, 0, 0, 0, 496, - 0, 0, 0, 0, 0, 0, 0, 1205, 0, 0, - 0, 1211, 1211, 0, 1211, 0, 1211, 1211, 0, 1220, - 1211, 1211, 1211, 1211, 1211, 0, 0, 0, 0, 0, - 0, 0, 1205, 1205, 763, 0, 0, 0, 0, 0, + 187, 187, 187, 187, 0, 0, 189, 0, 0, 0, + 0, 0, 0, 617, 617, 617, 0, 496, 0, 0, + 0, 0, 0, 496, 0, 0, 496, 0, 0, 0, + 187, 934, 936, 496, 0, 0, 0, 0, 0, 0, + 147, 152, 149, 155, 156, 157, 158, 160, 161, 162, + 163, 0, 0, 189, 0, 0, 164, 165, 166, 167, + 147, 152, 149, 155, 156, 157, 158, 160, 161, 162, + 163, 189, 0, 0, 0, 0, 164, 165, 166, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1280, 928, 928, 928, 0, - 0, 1938, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 992, - 994, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 881, - 0, 0, 0, 0, 617, 617, 617, 0, 0, 0, - 1007, 0, 0, 0, 1012, 1013, 1014, 1015, 1016, 1017, - 1018, 1019, 0, 1022, 1025, 1025, 1025, 1031, 1025, 1025, - 1031, 1025, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1991, - 0, 0, 0, 0, 1051, 0, 187, 33, 0, 0, + 0, 0, 603, 1304, 0, 0, 0, 603, 603, 0, + 0, 603, 603, 603, 0, 0, 496, 1206, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 603, 603, 603, 603, + 603, 0, 0, 0, 0, 1444, 1074, 0, 0, 0, + 0, 0, 496, 0, 617, 0, 0, 0, 0, 0, + 1104, 0, 0, 189, 0, 187, 0, 0, 0, 0, + 0, 1304, 187, 496, 187, 0, 0, 0, 0, 496, + 496, 0, 187, 187, 0, 0, 0, 0, 0, 0, + 0, 0, 1659, 0, 0, 0, 1660, 0, 0, 0, + 0, 0, 189, 0, 0, 0, 0, 1667, 1668, 0, + 0, 0, 0, 1674, 0, 0, 1677, 1678, 0, 0, + 0, 0, 0, 0, 1684, 0, 1685, 0, 0, 1688, + 1689, 1690, 1691, 1692, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1702, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 189, 0, 0, 189, 189, + 189, 0, 187, 0, 496, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1746, 1747, 0, 0, 496, 496, 496, 0, 189, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 763, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1205, 0, 0, 0, + 1211, 1211, 0, 1211, 0, 1211, 1211, 0, 1220, 1211, + 1211, 1211, 1211, 1211, 0, 0, 0, 0, 0, 0, + 0, 1205, 1205, 763, 0, 0, 187, 0, 0, 0, 187, 187, 187, 187, 187, 0, 0, 0, 0, 0, 187, 187, 187, 187, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 187, 1087, 0, 0, 0, 0, 0, - 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1396, 0, 617, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 187, 0, 1205, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1428, 1429, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1462, 0, - 0, 1080, 0, 0, 1091, 0, 0, 0, 1074, 0, - 0, 617, 0, 603, 603, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 617, - 0, 0, 617, 0, 603, 0, 0, 2075, 2076, 2077, - 2078, 2079, 0, 763, 0, 2082, 2083, 0, 0, 0, - 187, 0, 0, 0, 0, 0, 0, 0, 1444, 0, + 0, 0, 0, 187, 1280, 0, 0, 0, 0, 0, + 187, 0, 0, 0, 0, 0, 0, 496, 496, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 496, 0, 0, 496, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 603, 187, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1206, 187, 187, 187, 187, 187, 770, 0, - 169, 0, 0, 0, 0, 1745, 1565, 0, 0, 187, - 0, 1808, 187, 187, 0, 0, 187, 1755, 1304, 0, - 0, 0, 0, 0, 763, 111, 0, 133, 0, 0, - 770, 0, 0, 0, 0, 0, 153, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1109, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, - 0, 0, 132, 0, 763, 0, 0, 0, 2172, 187, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 150, 0, 151, 0, 1206, 0, 0, 1186, 1187, 142, - 141, 168, 0, 0, 1304, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 187, 0, 0, 1242, - 0, 0, 0, 0, 0, 0, 928, 928, 928, 0, - 0, 0, 0, 0, 187, 0, 0, 0, 0, 137, - 1188, 144, 0, 1185, 0, 138, 139, 0, 0, 154, - 0, 0, 0, 0, 1290, 0, 0, 0, 0, 159, - 0, 0, 1300, 0, 0, 0, 1642, 0, 603, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1314, 0, 0, 0, 0, 0, 0, 1318, - 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, - 1329, 1330, 1331, 1332, 1333, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1206, - 0, 1091, 0, 0, 0, 0, 0, 0, 0, 34, - 35, 36, 70, 38, 39, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 187, 0, 0, 0, 74, - 0, 146, 0, 0, 40, 66, 67, 0, 64, 68, - 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1494, 0, 0, 0, 0, 0, - 0, 0, 1205, 0, 53, 0, 0, 187, 0, 0, - 187, 187, 187, 0, 69, 140, 0, 0, 0, 1206, - 0, 0, 0, 0, 0, 0, 0, 134, 0, 187, - 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 187, 0, 0, 0, 0, 1469, 0, 0, 0, - 0, 0, 0, 1473, 0, 1476, 0, 0, 0, 0, - 0, 0, 0, 0, 1495, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 43, 46, 49, 48, - 51, 0, 63, 0, 0, 0, 0, 0, 0, 0, - 1810, 0, 0, 0, 1205, 0, 1817, 0, 0, 1810, - 0, 0, 0, 0, 617, 0, 1822, 52, 73, 72, - 0, 1206, 61, 62, 50, 0, 0, 0, 0, 0, + 1861, 1862, 0, 617, 617, 617, 0, 0, 496, 496, + 496, 189, 0, 0, 0, 546, 33, 0, 0, 0, + 0, 0, 496, 0, 496, 0, 0, 0, 0, 0, + 496, 0, 0, 603, 603, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, + 0, 0, 189, 0, 603, 0, 0, 0, 0, 0, + 0, 0, 0, 496, 189, 0, 1913, 0, 0, 0, + 187, 0, 0, 0, 0, 0, 0, 0, 1444, 0, + 0, 0, 0, 0, 0, 0, 0, 1928, 0, 0, + 1396, 0, 617, 580, 0, 0, 0, 0, 0, 0, + 0, 603, 187, 0, 0, 0, 1205, 0, 0, 0, + 496, 496, 1206, 187, 187, 187, 187, 187, 0, 0, + 0, 0, 0, 1428, 1429, 1745, 0, 0, 0, 187, + 0, 0, 187, 187, 0, 0, 187, 1755, 1304, 0, + 496, 0, 0, 0, 496, 0, 0, 1462, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1074, 0, 0, + 617, 0, 1050, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 617, 0, + 0, 617, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 763, 0, 0, 0, 0, 0, 0, 187, + 0, 0, 1993, 0, 0, 0, 1995, 0, 0, 0, + 0, 0, 0, 186, 1206, 0, 0, 2004, 2005, 0, + 0, 0, 0, 498, 1304, 0, 0, 0, 0, 0, + 0, 577, 0, 2019, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 187, 770, 0, 0, + 2028, 2029, 0, 0, 2033, 1565, 767, 0, 0, 0, + 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, + 0, 0, 0, 763, 0, 0, 0, 0, 0, 770, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 603, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2061, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 763, 34, 35, 36, 70, 38, 39, + 0, 0, 0, 862, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 873, 74, 0, 187, 0, 879, 40, + 66, 67, 0, 64, 68, 2086, 0, 0, 0, 1206, + 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 187, 0, 0, 0, 53, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2122, 2123, 2124, 2125, 0, + 2129, 0, 2130, 2131, 2132, 1642, 2133, 2134, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, + 0, 187, 187, 187, 0, 0, 0, 0, 0, 0, + 1206, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 187, 0, 0, 0, 0, 2161, 0, 0, 0, 0, + 0, 43, 46, 49, 48, 51, 0, 63, 0, 0, + 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 928, 928, 928, 0, 0, + 0, 0, 52, 73, 72, 0, 0, 61, 62, 50, + 0, 0, 0, 0, 0, 33, 0, 0, 2200, 2201, + 0, 0, 0, 0, 0, 0, 0, 0, 992, 994, + 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 55, 0, 56, 57, 58, + 59, 0, 1206, 0, 0, 0, 0, 0, 0, 1007, + 111, 1205, 133, 1012, 1013, 1014, 1015, 1016, 1017, 1018, + 1019, 153, 1022, 1025, 1025, 1025, 1031, 1025, 1025, 1031, + 1025, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 0, 0, + 0, 0, 0, 1051, 0, 0, 33, 0, 0, 0, + 0, 0, 143, 0, 0, 0, 0, 132, 0, 0, + 0, 0, 0, 0, 0, 0, 881, 0, 0, 0, + 0, 0, 0, 1087, 0, 150, 0, 151, 0, 0, + 0, 0, 120, 121, 142, 141, 168, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, + 0, 0, 0, 0, 1444, 0, 0, 0, 0, 1811, + 0, 0, 0, 1205, 0, 1818, 0, 0, 1811, 0, + 0, 0, 0, 617, 0, 1823, 0, 0, 0, 0, + 0, 0, 0, 0, 137, 118, 144, 125, 117, 0, + 138, 139, 0, 0, 154, 187, 0, 0, 0, 0, + 169, 0, 0, 0, 159, 126, 0, 187, 0, 0, + 0, 1809, 0, 0, 0, 0, 0, 0, 0, 129, + 127, 122, 123, 124, 128, 111, 0, 133, 0, 119, + 0, 0, 0, 0, 0, 0, 153, 0, 130, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 617, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 143, 1080, 0, + 0, 1091, 132, 0, 0, 0, 0, 0, 0, 0, + 0, 1206, 0, 0, 1211, 0, 0, 0, 0, 0, + 150, 0, 151, 0, 0, 0, 0, 1186, 1187, 142, + 141, 168, 0, 0, 0, 617, 146, 0, 1205, 0, + 0, 1914, 1211, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, + 1188, 144, 0, 1185, 169, 138, 139, 0, 0, 154, + 140, 0, 0, 0, 0, 1182, 0, 0, 0, 159, + 0, 0, 134, 0, 0, 135, 0, 0, 0, 111, + 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, + 153, 0, 0, 0, 0, 0, 763, 0, 0, 1205, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 143, 0, 1109, 0, 0, 132, 1984, 1985, 1986, + 0, 0, 0, 0, 0, 928, 928, 928, 0, 0, + 0, 0, 0, 0, 150, 0, 151, 0, 0, 0, + 0, 1186, 1187, 142, 141, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 146, 0, 0, 0, 0, 147, 152, 149, 155, + 156, 157, 158, 160, 161, 162, 163, 0, 0, 0, + 0, 0, 164, 165, 166, 167, 1242, 0, 0, 0, + 0, 1205, 0, 137, 1188, 144, 0, 1185, 0, 138, + 139, 0, 0, 154, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 159, 0, 140, 0, 0, 0, 0, + 0, 1290, 0, 0, 0, 0, 0, 134, 0, 1300, + 135, 0, 0, 0, 0, 0, 0, 0, 0, 1811, + 2058, 0, 0, 0, 0, 0, 0, 0, 0, 1314, + 0, 0, 1811, 0, 0, 617, 1318, 0, 0, 0, + 0, 0, 0, 0, 0, 1327, 1328, 1329, 1330, 1331, + 1332, 1333, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1811, 1811, 1811, 1494, 0, 0, 0, 0, 1091, 0, + 0, 0, 0, 0, 2100, 0, 2102, 0, 0, 0, + 0, 0, 1811, 0, 0, 146, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 152, 149, 155, 156, 157, 158, 160, 161, - 162, 163, 0, 0, 0, 0, 0, 164, 165, 166, - 167, 0, 0, 1562, 0, 0, 0, 0, 0, 54, - 55, 0, 56, 57, 58, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 617, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1131, 0, 0, 0, - 0, 0, 0, 1444, 0, 1211, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 169, 0, 0, 617, 0, 0, 1205, - 0, 0, 1913, 1211, 1182, 0, 0, 0, 0, 0, - 0, 0, 71, 0, 187, 0, 0, 1091, 111, 0, - 133, 1617, 1618, 1619, 1620, 1621, 187, 0, 0, 153, - 0, 1625, 1626, 1091, 1628, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1634, 0, 0, 0, 0, 0, - 0, 1637, 0, 0, 0, 0, 0, 0, 1663, 0, - 143, 580, 0, 0, 0, 132, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1641, 0, 0, 1119, - 0, 0, 0, 150, 0, 151, 763, 0, 0, 1205, - 1186, 1187, 142, 141, 168, 0, 1206, 0, 1700, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1983, 1984, 1985, - 0, 0, 1132, 0, 1087, 0, 0, 0, 0, 0, - 0, 1727, 1728, 0, 0, 1087, 1087, 1087, 1087, 1087, - 0, 0, 137, 1188, 144, 0, 1185, 0, 138, 139, - 0, 1494, 154, 0, 1087, 0, 0, 0, 1087, 0, - 0, 0, 159, 0, 0, 0, 0, 0, 0, 1145, - 1148, 1149, 1150, 1151, 1152, 1153, 0, 1154, 1155, 1156, - 1157, 1158, 1133, 1134, 1135, 1136, 1117, 1118, 1146, 0, - 1120, 1205, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, - 1129, 1130, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1752, 0, 0, 0, 0, 1810, - 2057, 0, 0, 0, 0, 0, 0, 0, 0, 1823, - 0, 0, 1810, 0, 0, 617, 0, 0, 0, 0, - 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1147, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1810, 1810, 1810, 0, 0, 0, 0, 0, 0, 0, - 1804, 0, 0, 0, 2099, 0, 2101, 0, 0, 0, - 0, 0, 1810, 0, 0, 0, 0, 0, 140, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 134, 0, 0, 135, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1810, 0, 1834, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1849, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1910, 0, 33, 0, 0, 0, 0, 0, + 162, 163, 0, 0, 0, 1811, 0, 164, 165, 166, + 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 134, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 617, 617, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1087, 0, 0, - 0, 0, 0, 0, 0, 0, 1205, 0, 2170, 0, - 0, 0, 1810, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 147, 152, 149, 155, 156, 157, - 158, 160, 161, 162, 163, 0, 0, 1898, 0, 0, - 164, 165, 166, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1205, 0, 2177, 1469, 0, 0, 1811, 0, 0, 0, + 1473, 0, 1476, 0, 0, 0, 0, 0, 0, 0, + 0, 1495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 147, 152, 149, 155, 156, + 157, 158, 160, 161, 162, 163, 0, 0, 0, 0, + 0, 164, 165, 166, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1562, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1960, 0, - 2009, 1961, 1962, 1963, 0, 0, 0, 2015, 2016, 2017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1973, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1986, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1663, 0, 0, + 580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1091, 0, 0, 0, 1617, 1618, + 1619, 1620, 1621, 0, 0, 0, 0, 1700, 1625, 1626, + 1091, 1628, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1634, 0, 0, 0, 0, 0, 0, 1637, 0, + 0, 0, 0, 1087, 0, 0, 0, 0, 0, 0, + 1727, 1728, 0, 0, 1087, 1087, 1087, 1087, 1087, 0, + 0, 0, 0, 1641, 0, 0, 0, 0, 0, 0, + 1494, 0, 0, 1087, 0, 0, 0, 1087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1910, 0, 33, 0, 1910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1824, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1752, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1805, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1911, 0, 33, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1087, 0, 0, 0, + 0, 0, 0, 0, 1835, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1850, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1899, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2010, 0, 0, 0, 0, 0, 0, 2016, 2017, 2018, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1961, 0, 0, 1962, + 1963, 1964, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1974, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1987, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1911, 0, 33, 0, 1911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1910, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 33, 2146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2111, 0, 0, 0, 0, - 0, 0, 0, 0, 741, 728, 0, 2120, 677, 744, + 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1911, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 2151, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 741, 728, 0, 0, + 677, 744, 648, 666, 753, 668, 671, 711, 628, 690, + 331, 663, 0, 652, 624, 659, 625, 650, 679, 241, + 683, 647, 730, 693, 743, 289, 0, 630, 653, 345, + 713, 382, 227, 298, 296, 410, 251, 244, 240, 226, + 273, 304, 343, 400, 337, 750, 293, 700, 0, 391, + 316, 0, 0, 0, 681, 733, 688, 724, 676, 712, + 637, 699, 745, 664, 708, 746, 279, 225, 195, 328, + 392, 255, 0, 2112, 0, 177, 178, 179, 0, 2158, + 2159, 0, 0, 0, 0, 2121, 217, 0, 223, 705, + 740, 661, 707, 237, 277, 243, 236, 407, 710, 756, + 623, 702, 0, 626, 629, 752, 736, 656, 657, 0, + 0, 0, 0, 0, 0, 0, 680, 689, 721, 674, + 0, 0, 0, 0, 0, 0, 0, 0, 654, 0, + 698, 0, 0, 0, 633, 627, 0, 0, 0, 0, + 678, 0, 0, 0, 636, 0, 655, 722, 0, 621, + 263, 631, 317, 726, 735, 675, 438, 739, 673, 672, + 742, 717, 634, 732, 667, 288, 632, 285, 191, 205, + 0, 665, 327, 366, 372, 731, 651, 660, 228, 658, + 370, 341, 424, 213, 253, 363, 346, 368, 697, 715, + 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, + 404, 436, 449, 206, 232, 335, 397, 427, 388, 314, + 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, + 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, + 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, + 229, 451, 208, 435, 202, 209, 434, 323, 411, 419, + 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, + 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, + 428, 452, 215, 646, 727, 406, 444, 448, 0, 359, + 216, 260, 248, 355, 258, 290, 443, 445, 446, 447, + 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, + 389, 286, 295, 719, 755, 340, 371, 219, 426, 390, + 641, 645, 639, 640, 691, 692, 642, 747, 748, 749, + 723, 635, 0, 643, 644, 0, 729, 737, 738, 696, + 190, 203, 291, 751, 360, 256, 450, 433, 429, 622, + 638, 234, 649, 0, 0, 662, 669, 670, 682, 684, + 685, 686, 687, 695, 703, 704, 706, 714, 716, 718, + 720, 725, 734, 754, 192, 193, 204, 212, 221, 233, + 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, + 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, + 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, + 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, + 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, + 265, 421, 442, 0, 299, 694, 701, 301, 250, 267, + 276, 709, 432, 395, 207, 367, 257, 197, 224, 211, + 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, + 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, + 741, 728, 0, 0, 677, 744, 648, 666, 753, 668, + 671, 711, 628, 690, 331, 663, 0, 652, 624, 659, + 625, 650, 679, 241, 683, 647, 730, 693, 743, 289, + 0, 630, 653, 345, 713, 382, 227, 298, 296, 410, + 251, 244, 240, 226, 273, 304, 343, 400, 337, 750, + 293, 700, 0, 391, 316, 0, 0, 0, 681, 733, + 688, 724, 676, 712, 637, 699, 745, 664, 708, 746, + 279, 225, 195, 328, 392, 255, 0, 0, 0, 177, + 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, + 217, 0, 223, 705, 740, 661, 707, 237, 277, 243, + 236, 407, 710, 756, 623, 702, 0, 626, 629, 752, + 736, 656, 657, 0, 0, 0, 0, 0, 0, 0, + 680, 689, 721, 674, 0, 0, 0, 0, 0, 0, + 1903, 0, 654, 0, 698, 0, 0, 0, 633, 627, + 0, 0, 0, 0, 678, 0, 0, 0, 636, 0, + 655, 722, 0, 621, 263, 631, 317, 726, 735, 675, + 438, 739, 673, 672, 742, 717, 634, 732, 667, 288, + 632, 285, 191, 205, 0, 665, 327, 366, 372, 731, + 651, 660, 228, 658, 370, 341, 424, 213, 253, 363, + 346, 368, 697, 715, 369, 294, 412, 358, 422, 439, + 440, 235, 321, 430, 404, 436, 449, 206, 232, 335, + 397, 427, 388, 314, 408, 409, 284, 387, 261, 194, + 292, 198, 399, 420, 218, 380, 0, 0, 0, 200, + 418, 396, 311, 281, 282, 199, 0, 362, 239, 259, + 230, 330, 415, 416, 229, 451, 208, 435, 202, 209, + 434, 323, 411, 419, 312, 303, 201, 417, 310, 302, + 287, 249, 269, 356, 297, 357, 270, 319, 318, 320, + 0, 196, 0, 393, 428, 452, 215, 646, 727, 406, + 444, 448, 0, 359, 216, 260, 248, 355, 258, 290, + 443, 445, 446, 447, 214, 353, 266, 334, 423, 252, + 431, 322, 210, 272, 389, 286, 295, 719, 755, 340, + 371, 219, 426, 390, 641, 645, 639, 640, 691, 692, + 642, 747, 748, 749, 723, 635, 0, 643, 644, 0, + 729, 737, 738, 696, 190, 203, 291, 751, 360, 256, + 450, 433, 429, 622, 638, 234, 649, 0, 0, 662, + 669, 670, 682, 684, 685, 686, 687, 695, 703, 704, + 706, 714, 716, 718, 720, 725, 734, 754, 192, 193, + 204, 212, 221, 233, 246, 254, 264, 268, 271, 274, + 275, 278, 283, 300, 305, 306, 307, 308, 324, 325, + 326, 329, 332, 333, 336, 338, 339, 342, 348, 349, + 350, 351, 352, 354, 361, 365, 373, 374, 375, 376, + 377, 378, 379, 383, 384, 385, 386, 394, 398, 413, + 414, 425, 437, 441, 265, 421, 442, 0, 299, 694, + 701, 301, 250, 267, 276, 709, 432, 395, 207, 367, + 257, 197, 224, 211, 231, 245, 247, 280, 309, 315, + 344, 347, 262, 242, 222, 364, 220, 381, 401, 402, + 403, 405, 313, 238, 741, 728, 0, 0, 677, 744, 648, 666, 753, 668, 671, 711, 628, 690, 331, 663, 0, 652, 624, 659, 625, 650, 679, 241, 683, 647, 730, 693, 743, 289, 0, 630, 653, 345, 713, 382, @@ -1684,12 +1804,12 @@ var yyAct = [...]int{ 343, 400, 337, 750, 293, 700, 0, 391, 316, 0, 0, 0, 681, 733, 688, 724, 676, 712, 637, 699, 745, 664, 708, 746, 279, 225, 195, 328, 392, 255, - 0, 0, 0, 177, 178, 179, 0, 2153, 2154, 0, + 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 705, 740, 661, 707, 237, 277, 243, 236, 407, 710, 756, 623, 702, 0, 626, 629, 752, 736, 656, 657, 0, 0, 0, 0, 0, 0, 0, 680, 689, 721, 674, 0, 0, - 0, 0, 0, 0, 0, 0, 654, 0, 698, 0, + 0, 0, 0, 0, 1756, 0, 654, 0, 698, 0, 0, 0, 633, 627, 0, 0, 0, 0, 678, 0, 0, 0, 636, 0, 655, 722, 0, 621, 263, 631, 317, 726, 735, 675, 438, 739, 673, 672, 742, 717, @@ -1735,7 +1855,7 @@ var yyAct = [...]int{ 223, 705, 740, 661, 707, 237, 277, 243, 236, 407, 710, 756, 623, 702, 0, 626, 629, 752, 736, 656, 657, 0, 0, 0, 0, 0, 0, 0, 680, 689, - 721, 674, 0, 0, 0, 0, 0, 0, 1902, 0, + 721, 674, 0, 0, 0, 0, 0, 0, 1471, 0, 654, 0, 698, 0, 0, 0, 633, 627, 0, 0, 0, 0, 678, 0, 0, 0, 636, 0, 655, 722, 0, 621, 263, 631, 317, 726, 735, 675, 438, 739, @@ -1776,13 +1896,13 @@ var yyAct = [...]int{ 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, 337, 750, 293, 700, 0, 391, 316, 0, 0, 0, 681, 733, 688, 724, 676, 712, 637, 699, 745, 664, - 708, 746, 279, 225, 195, 328, 392, 255, 0, 0, + 708, 746, 279, 225, 195, 328, 392, 255, 69, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 705, 740, 661, 707, 237, 277, 243, 236, 407, 710, 756, 623, 702, 0, 626, 629, 752, 736, 656, 657, 0, 0, 0, 0, 0, 0, 0, 680, 689, 721, 674, 0, 0, 0, 0, - 0, 0, 1756, 0, 654, 0, 698, 0, 0, 0, + 0, 0, 0, 0, 654, 0, 698, 0, 0, 0, 633, 627, 0, 0, 0, 0, 678, 0, 0, 0, 636, 0, 655, 722, 0, 621, 263, 631, 317, 726, 735, 675, 438, 739, 673, 672, 742, 717, 634, 732, @@ -1828,7 +1948,7 @@ var yyAct = [...]int{ 740, 661, 707, 237, 277, 243, 236, 407, 710, 756, 623, 702, 0, 626, 629, 752, 736, 656, 657, 0, 0, 0, 0, 0, 0, 0, 680, 689, 721, 674, - 0, 0, 0, 0, 0, 0, 1471, 0, 654, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 654, 0, 698, 0, 0, 0, 633, 627, 0, 0, 0, 0, 678, 0, 0, 0, 636, 0, 655, 722, 0, 621, 263, 631, 317, 726, 735, 675, 438, 739, 673, 672, @@ -1869,7 +1989,7 @@ var yyAct = [...]int{ 251, 244, 240, 226, 273, 304, 343, 400, 337, 750, 293, 700, 0, 391, 316, 0, 0, 0, 681, 733, 688, 724, 676, 712, 637, 699, 745, 664, 708, 746, - 279, 225, 195, 328, 392, 255, 69, 0, 0, 177, + 279, 225, 195, 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, 705, 740, 661, 707, 237, 277, 243, 236, 407, 710, 756, 623, 702, 0, 626, 629, 752, @@ -1886,13 +2006,13 @@ var yyAct = [...]int{ 397, 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, 259, - 230, 330, 415, 416, 229, 451, 208, 435, 202, 209, + 230, 330, 415, 416, 229, 451, 208, 435, 202, 758, 434, 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, 215, 646, 727, 406, 444, 448, 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, 423, 252, - 431, 322, 210, 272, 389, 286, 295, 719, 755, 340, + 431, 620, 757, 614, 613, 286, 295, 719, 755, 340, 371, 219, 426, 390, 641, 645, 639, 640, 691, 692, 642, 747, 748, 749, 723, 635, 0, 643, 644, 0, 729, 737, 738, 696, 190, 203, 291, 751, 360, 256, @@ -1930,15 +2050,15 @@ var yyAct = [...]int{ 424, 213, 253, 363, 346, 368, 697, 715, 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, - 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 284, 387, 261, 194, 292, 198, 399, 1095, 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, - 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 208, 435, 202, 758, 434, 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, 215, 646, 727, 406, 444, 448, 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, - 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 266, 334, 423, 252, 431, 620, 757, 614, 613, 286, 295, 719, 755, 340, 371, 219, 426, 390, 641, 645, 639, 640, 691, 692, 642, 747, 748, 749, 723, 635, 0, 643, 644, 0, 729, 737, 738, 696, 190, 203, @@ -1977,7 +2097,7 @@ var yyAct = [...]int{ 697, 715, 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, - 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 399, 611, 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, 202, 758, 434, 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, @@ -2001,1971 +2121,1878 @@ var yyAct = [...]int{ 250, 267, 276, 709, 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, 405, - 313, 238, 741, 728, 0, 0, 677, 744, 648, 666, - 753, 668, 671, 711, 628, 690, 331, 663, 0, 652, - 624, 659, 625, 650, 679, 241, 683, 647, 730, 693, - 743, 289, 0, 630, 653, 345, 713, 382, 227, 298, - 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, - 337, 750, 293, 700, 0, 391, 316, 0, 0, 0, - 681, 733, 688, 724, 676, 712, 637, 699, 745, 664, - 708, 746, 279, 225, 195, 328, 392, 255, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 705, 740, 661, 707, 237, - 277, 243, 236, 407, 710, 756, 623, 702, 0, 626, - 629, 752, 736, 656, 657, 0, 0, 0, 0, 0, - 0, 0, 680, 689, 721, 674, 0, 0, 0, 0, - 0, 0, 0, 0, 654, 0, 698, 0, 0, 0, - 633, 627, 0, 0, 0, 0, 678, 0, 0, 0, - 636, 0, 655, 722, 0, 621, 263, 631, 317, 726, - 735, 675, 438, 739, 673, 672, 742, 717, 634, 732, - 667, 288, 632, 285, 191, 205, 0, 665, 327, 366, - 372, 731, 651, 660, 228, 658, 370, 341, 424, 213, - 253, 363, 346, 368, 697, 715, 369, 294, 412, 358, - 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, - 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, - 261, 194, 292, 198, 399, 1095, 218, 380, 0, 0, - 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, - 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, - 202, 758, 434, 323, 411, 419, 312, 303, 201, 417, - 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, - 318, 320, 0, 196, 0, 393, 428, 452, 215, 646, - 727, 406, 444, 448, 0, 359, 216, 260, 248, 355, - 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, - 423, 252, 431, 620, 757, 614, 613, 286, 295, 719, - 755, 340, 371, 219, 426, 390, 641, 645, 639, 640, - 691, 692, 642, 747, 748, 749, 723, 635, 0, 643, - 644, 0, 729, 737, 738, 696, 190, 203, 291, 751, - 360, 256, 450, 433, 429, 622, 638, 234, 649, 0, - 0, 662, 669, 670, 682, 684, 685, 686, 687, 695, - 703, 704, 706, 714, 716, 718, 720, 725, 734, 754, - 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, - 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, - 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, - 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, - 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, - 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, - 299, 694, 701, 301, 250, 267, 276, 709, 432, 395, - 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, - 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, - 401, 402, 403, 405, 313, 238, 741, 728, 0, 0, - 677, 744, 648, 666, 753, 668, 671, 711, 628, 690, - 331, 663, 0, 652, 624, 659, 625, 650, 679, 241, - 683, 647, 730, 693, 743, 289, 0, 630, 653, 345, - 713, 382, 227, 298, 296, 410, 251, 244, 240, 226, - 273, 304, 343, 400, 337, 750, 293, 700, 0, 391, - 316, 0, 0, 0, 681, 733, 688, 724, 676, 712, - 637, 699, 745, 664, 708, 746, 279, 225, 195, 328, - 392, 255, 0, 0, 0, 177, 178, 179, 0, 0, - 0, 0, 0, 0, 0, 0, 217, 0, 223, 705, - 740, 661, 707, 237, 277, 243, 236, 407, 710, 756, - 623, 702, 0, 626, 629, 752, 736, 656, 657, 0, - 0, 0, 0, 0, 0, 0, 680, 689, 721, 674, - 0, 0, 0, 0, 0, 0, 0, 0, 654, 0, - 698, 0, 0, 0, 633, 627, 0, 0, 0, 0, - 678, 0, 0, 0, 636, 0, 655, 722, 0, 621, - 263, 631, 317, 726, 735, 675, 438, 739, 673, 672, - 742, 717, 634, 732, 667, 288, 632, 285, 191, 205, - 0, 665, 327, 366, 372, 731, 651, 660, 228, 658, - 370, 341, 424, 213, 253, 363, 346, 368, 697, 715, - 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, - 404, 436, 449, 206, 232, 335, 397, 427, 388, 314, - 408, 409, 284, 387, 261, 194, 292, 198, 399, 611, - 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, - 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, - 229, 451, 208, 435, 202, 758, 434, 323, 411, 419, - 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, - 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, - 428, 452, 215, 646, 727, 406, 444, 448, 0, 359, - 216, 260, 248, 355, 258, 290, 443, 445, 446, 447, - 214, 353, 266, 334, 423, 252, 431, 620, 757, 614, - 613, 286, 295, 719, 755, 340, 371, 219, 426, 390, - 641, 645, 639, 640, 691, 692, 642, 747, 748, 749, - 723, 635, 0, 643, 644, 0, 729, 737, 738, 696, - 190, 203, 291, 751, 360, 256, 450, 433, 429, 622, - 638, 234, 649, 0, 0, 662, 669, 670, 682, 684, - 685, 686, 687, 695, 703, 704, 706, 714, 716, 718, - 720, 725, 734, 754, 192, 193, 204, 212, 221, 233, - 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, - 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, - 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, - 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, - 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, - 265, 421, 442, 0, 299, 694, 701, 301, 250, 267, - 276, 709, 432, 395, 207, 367, 257, 197, 224, 211, - 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, - 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, - 331, 0, 0, 1398, 0, 513, 0, 0, 0, 241, - 0, 512, 0, 0, 0, 289, 0, 0, 1399, 345, - 0, 382, 227, 298, 296, 410, 251, 244, 240, 226, - 273, 304, 343, 400, 337, 556, 293, 0, 0, 391, - 316, 0, 0, 0, 0, 0, 547, 548, 0, 0, - 0, 0, 0, 0, 0, 0, 279, 225, 195, 328, - 392, 255, 69, 0, 0, 177, 178, 179, 534, 533, - 536, 537, 538, 539, 0, 0, 217, 535, 223, 540, - 541, 542, 0, 237, 277, 243, 236, 407, 0, 0, - 0, 510, 527, 0, 555, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 524, 525, 601, 0, 0, 0, - 570, 0, 526, 0, 0, 519, 520, 522, 521, 523, - 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 263, 0, 317, 569, 0, 0, 438, 0, 0, 567, - 0, 0, 0, 0, 0, 288, 0, 285, 191, 205, - 0, 0, 327, 366, 372, 0, 0, 0, 228, 0, - 370, 341, 424, 213, 253, 363, 346, 368, 0, 0, - 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, - 404, 436, 449, 206, 232, 335, 397, 427, 388, 314, - 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, - 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, - 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, - 229, 451, 208, 435, 202, 209, 434, 323, 411, 419, - 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, - 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, - 428, 452, 215, 0, 0, 406, 444, 448, 0, 359, - 216, 260, 248, 355, 258, 290, 443, 445, 446, 447, - 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, - 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, - 557, 568, 563, 564, 561, 562, 0, 560, 559, 558, - 571, 549, 550, 551, 552, 554, 0, 565, 566, 553, - 190, 203, 291, 0, 360, 256, 450, 433, 429, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, - 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, - 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, - 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, - 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, - 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, - 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, - 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, - 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, - 331, 0, 0, 0, 0, 513, 0, 0, 0, 241, - 0, 512, 0, 0, 0, 289, 0, 0, 0, 345, - 0, 382, 227, 298, 296, 410, 251, 244, 240, 226, - 273, 304, 343, 400, 337, 556, 293, 0, 0, 391, - 316, 0, 0, 0, 0, 0, 547, 548, 0, 0, - 0, 0, 0, 0, 1510, 0, 279, 225, 195, 328, - 392, 255, 69, 0, 0, 177, 178, 179, 534, 533, - 536, 537, 538, 539, 0, 0, 217, 535, 223, 540, - 541, 542, 1511, 237, 277, 243, 236, 407, 0, 0, - 0, 510, 527, 0, 555, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 0, 0, 0, - 570, 0, 526, 0, 0, 519, 520, 522, 521, 523, - 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 263, 0, 317, 569, 0, 0, 438, 0, 0, 567, - 0, 0, 0, 0, 0, 288, 0, 285, 191, 205, - 0, 0, 327, 366, 372, 0, 0, 0, 228, 0, - 370, 341, 424, 213, 253, 363, 346, 368, 0, 0, - 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, - 404, 436, 449, 206, 232, 335, 397, 427, 388, 314, - 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, - 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, - 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, - 229, 451, 208, 435, 202, 209, 434, 323, 411, 419, - 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, - 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, - 428, 452, 215, 0, 0, 406, 444, 448, 0, 359, - 216, 260, 248, 355, 258, 290, 443, 445, 446, 447, - 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, - 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, - 557, 568, 563, 564, 561, 562, 0, 560, 559, 558, - 571, 549, 550, 551, 552, 554, 0, 565, 566, 553, - 190, 203, 291, 0, 360, 256, 450, 433, 429, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 313, 238, 331, 0, 0, 1398, 0, 513, 0, 0, + 0, 241, 0, 512, 0, 0, 0, 289, 0, 0, + 1399, 345, 0, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 556, 293, 0, + 0, 391, 316, 0, 0, 0, 0, 0, 547, 548, + 0, 0, 0, 0, 0, 0, 0, 0, 279, 225, + 195, 328, 392, 255, 69, 0, 0, 177, 178, 179, + 534, 533, 536, 537, 538, 539, 0, 0, 217, 535, + 223, 540, 541, 542, 0, 237, 277, 243, 236, 407, + 0, 0, 0, 510, 527, 0, 555, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 524, 525, 601, 0, + 0, 0, 570, 0, 526, 0, 0, 519, 520, 522, + 521, 523, 528, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 263, 0, 317, 569, 0, 0, 438, 0, + 0, 567, 0, 0, 0, 0, 0, 288, 0, 285, + 191, 205, 0, 0, 327, 366, 372, 0, 0, 0, + 228, 0, 370, 341, 424, 213, 253, 363, 346, 368, + 0, 0, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 449, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 451, 208, 435, 202, 209, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 452, 215, 0, 0, 406, 444, 448, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 447, 214, 353, 266, 334, 423, 252, 431, 322, + 210, 272, 389, 286, 295, 0, 0, 340, 371, 219, + 426, 390, 557, 568, 563, 564, 561, 562, 0, 560, + 559, 558, 571, 549, 550, 551, 552, 554, 0, 565, + 566, 553, 190, 203, 291, 0, 360, 256, 450, 433, + 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, - 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, - 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, - 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, - 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, - 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, - 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, - 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, - 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, - 331, 0, 0, 0, 0, 513, 0, 0, 0, 241, - 0, 512, 0, 0, 0, 289, 0, 0, 0, 345, - 0, 382, 227, 298, 296, 410, 251, 244, 240, 226, - 273, 304, 343, 400, 337, 556, 293, 0, 0, 391, - 316, 0, 0, 0, 0, 0, 547, 548, 0, 0, - 0, 0, 0, 0, 0, 0, 279, 225, 195, 328, - 392, 255, 69, 0, 588, 177, 178, 179, 534, 533, - 536, 537, 538, 539, 0, 0, 217, 535, 223, 540, - 541, 542, 0, 237, 277, 243, 236, 407, 0, 0, - 0, 510, 527, 0, 555, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 524, 525, 0, 0, 0, 0, - 570, 0, 526, 0, 0, 519, 520, 522, 521, 523, - 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 263, 0, 317, 569, 0, 0, 438, 0, 0, 567, - 0, 0, 0, 0, 0, 288, 0, 285, 191, 205, - 0, 0, 327, 366, 372, 0, 0, 0, 228, 0, - 370, 341, 424, 213, 253, 363, 346, 368, 0, 0, - 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, - 404, 436, 449, 206, 232, 335, 397, 427, 388, 314, - 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, - 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, - 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, - 229, 451, 208, 435, 202, 209, 434, 323, 411, 419, - 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, - 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, - 428, 452, 215, 0, 0, 406, 444, 448, 0, 359, - 216, 260, 248, 355, 258, 290, 443, 445, 446, 447, - 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, - 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, - 557, 568, 563, 564, 561, 562, 0, 560, 559, 558, - 571, 549, 550, 551, 552, 554, 0, 565, 566, 553, - 190, 203, 291, 0, 360, 256, 450, 433, 429, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 254, 264, 268, 271, 274, 275, 278, + 283, 300, 305, 306, 307, 308, 324, 325, 326, 329, + 332, 333, 336, 338, 339, 342, 348, 349, 350, 351, + 352, 354, 361, 365, 373, 374, 375, 376, 377, 378, + 379, 383, 384, 385, 386, 394, 398, 413, 414, 425, + 437, 441, 265, 421, 442, 0, 299, 0, 0, 301, + 250, 267, 276, 0, 432, 395, 207, 367, 257, 197, + 224, 211, 231, 245, 247, 280, 309, 315, 344, 347, + 262, 242, 222, 364, 220, 381, 401, 402, 403, 405, + 313, 238, 331, 0, 0, 0, 0, 513, 0, 0, + 0, 241, 0, 512, 0, 0, 0, 289, 0, 0, + 0, 345, 0, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 556, 293, 0, + 0, 391, 316, 0, 0, 0, 0, 0, 547, 548, + 0, 0, 0, 0, 0, 0, 1510, 0, 279, 225, + 195, 328, 392, 255, 69, 0, 0, 177, 178, 179, + 534, 533, 536, 537, 538, 539, 0, 0, 217, 535, + 223, 540, 541, 542, 1511, 237, 277, 243, 236, 407, + 0, 0, 0, 510, 527, 0, 555, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 524, 525, 0, 0, + 0, 0, 570, 0, 526, 0, 0, 519, 520, 522, + 521, 523, 528, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 263, 0, 317, 569, 0, 0, 438, 0, + 0, 567, 0, 0, 0, 0, 0, 288, 0, 285, + 191, 205, 0, 0, 327, 366, 372, 0, 0, 0, + 228, 0, 370, 341, 424, 213, 253, 363, 346, 368, + 0, 0, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 449, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 451, 208, 435, 202, 209, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 452, 215, 0, 0, 406, 444, 448, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 447, 214, 353, 266, 334, 423, 252, 431, 322, + 210, 272, 389, 286, 295, 0, 0, 340, 371, 219, + 426, 390, 557, 568, 563, 564, 561, 562, 0, 560, + 559, 558, 571, 549, 550, 551, 552, 554, 0, 565, + 566, 553, 190, 203, 291, 0, 360, 256, 450, 433, + 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, - 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, - 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, - 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, - 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, - 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, - 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, - 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, - 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, - 331, 0, 0, 0, 0, 513, 0, 0, 0, 241, - 0, 512, 0, 0, 0, 289, 0, 0, 0, 345, - 0, 382, 227, 298, 296, 410, 251, 244, 240, 226, - 273, 304, 343, 400, 337, 556, 293, 0, 0, 391, - 316, 0, 0, 0, 0, 0, 547, 548, 0, 0, - 0, 0, 0, 0, 0, 0, 279, 225, 195, 328, - 392, 255, 69, 0, 0, 177, 178, 179, 534, 533, - 536, 537, 538, 539, 0, 0, 217, 535, 223, 540, - 541, 542, 0, 237, 277, 243, 236, 407, 0, 0, - 0, 510, 527, 0, 555, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 524, 525, 601, 0, 0, 0, - 570, 0, 526, 0, 0, 519, 520, 522, 521, 523, - 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 263, 0, 317, 569, 0, 0, 438, 0, 0, 567, - 0, 0, 0, 0, 0, 288, 0, 285, 191, 205, - 0, 0, 327, 366, 372, 0, 0, 0, 228, 0, - 370, 341, 424, 213, 253, 363, 346, 368, 0, 0, - 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, - 404, 436, 449, 206, 232, 335, 397, 427, 388, 314, - 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, - 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, - 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, - 229, 451, 208, 435, 202, 209, 434, 323, 411, 419, - 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, - 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, - 428, 452, 215, 0, 0, 406, 444, 448, 0, 359, - 216, 260, 248, 355, 258, 290, 443, 445, 446, 447, - 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, - 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, - 557, 568, 563, 564, 561, 562, 0, 560, 559, 558, - 571, 549, 550, 551, 552, 554, 0, 565, 566, 553, - 190, 203, 291, 0, 360, 256, 450, 433, 429, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 254, 264, 268, 271, 274, 275, 278, + 283, 300, 305, 306, 307, 308, 324, 325, 326, 329, + 332, 333, 336, 338, 339, 342, 348, 349, 350, 351, + 352, 354, 361, 365, 373, 374, 375, 376, 377, 378, + 379, 383, 384, 385, 386, 394, 398, 413, 414, 425, + 437, 441, 265, 421, 442, 0, 299, 0, 0, 301, + 250, 267, 276, 0, 432, 395, 207, 367, 257, 197, + 224, 211, 231, 245, 247, 280, 309, 315, 344, 347, + 262, 242, 222, 364, 220, 381, 401, 402, 403, 405, + 313, 238, 331, 0, 0, 0, 0, 513, 0, 0, + 0, 241, 0, 512, 0, 0, 0, 289, 0, 0, + 0, 345, 0, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 556, 293, 0, + 0, 391, 316, 0, 0, 0, 0, 0, 547, 548, + 0, 0, 0, 0, 0, 0, 0, 0, 279, 225, + 195, 328, 392, 255, 69, 0, 588, 177, 178, 179, + 534, 533, 536, 537, 538, 539, 0, 0, 217, 535, + 223, 540, 541, 542, 0, 237, 277, 243, 236, 407, + 0, 0, 0, 510, 527, 0, 555, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 524, 525, 0, 0, + 0, 0, 570, 0, 526, 0, 0, 519, 520, 522, + 521, 523, 528, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 263, 0, 317, 569, 0, 0, 438, 0, + 0, 567, 0, 0, 0, 0, 0, 288, 0, 285, + 191, 205, 0, 0, 327, 366, 372, 0, 0, 0, + 228, 0, 370, 341, 424, 213, 253, 363, 346, 368, + 0, 0, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 449, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 451, 208, 435, 202, 209, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 452, 215, 0, 0, 406, 444, 448, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 447, 214, 353, 266, 334, 423, 252, 431, 322, + 210, 272, 389, 286, 295, 0, 0, 340, 371, 219, + 426, 390, 557, 568, 563, 564, 561, 562, 0, 560, + 559, 558, 571, 549, 550, 551, 552, 554, 0, 565, + 566, 553, 190, 203, 291, 0, 360, 256, 450, 433, + 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, - 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, - 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, - 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, - 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, - 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, - 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, - 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, - 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, - 331, 0, 0, 0, 0, 513, 0, 0, 0, 241, - 0, 512, 0, 0, 0, 289, 0, 0, 0, 345, - 0, 382, 227, 298, 296, 410, 251, 244, 240, 226, - 273, 304, 343, 400, 337, 556, 293, 0, 0, 391, - 316, 0, 0, 0, 0, 0, 547, 548, 0, 0, - 0, 0, 0, 0, 0, 0, 279, 225, 195, 328, - 392, 255, 69, 0, 0, 177, 178, 179, 534, 1416, - 536, 537, 538, 539, 0, 0, 217, 535, 223, 540, - 541, 542, 0, 237, 277, 243, 236, 407, 0, 0, - 0, 510, 527, 0, 555, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 524, 525, 601, 0, 0, 0, - 570, 0, 526, 0, 0, 519, 520, 522, 521, 523, - 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 263, 0, 317, 569, 0, 0, 438, 0, 0, 567, - 0, 0, 0, 0, 0, 288, 0, 285, 191, 205, - 0, 0, 327, 366, 372, 0, 0, 0, 228, 0, - 370, 341, 424, 213, 253, 363, 346, 368, 0, 0, - 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, - 404, 436, 449, 206, 232, 335, 397, 427, 388, 314, - 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, - 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, - 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, - 229, 451, 208, 435, 202, 209, 434, 323, 411, 419, - 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, - 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, - 428, 452, 215, 0, 0, 406, 444, 448, 0, 359, - 216, 260, 248, 355, 258, 290, 443, 445, 446, 447, - 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, - 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, - 557, 568, 563, 564, 561, 562, 0, 560, 559, 558, - 571, 549, 550, 551, 552, 554, 0, 565, 566, 553, - 190, 203, 291, 0, 360, 256, 450, 433, 429, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 254, 264, 268, 271, 274, 275, 278, + 283, 300, 305, 306, 307, 308, 324, 325, 326, 329, + 332, 333, 336, 338, 339, 342, 348, 349, 350, 351, + 352, 354, 361, 365, 373, 374, 375, 376, 377, 378, + 379, 383, 384, 385, 386, 394, 398, 413, 414, 425, + 437, 441, 265, 421, 442, 0, 299, 0, 0, 301, + 250, 267, 276, 0, 432, 395, 207, 367, 257, 197, + 224, 211, 231, 245, 247, 280, 309, 315, 344, 347, + 262, 242, 222, 364, 220, 381, 401, 402, 403, 405, + 313, 238, 331, 0, 0, 0, 0, 513, 0, 0, + 0, 241, 0, 512, 0, 0, 0, 289, 0, 0, + 0, 345, 0, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 556, 293, 0, + 0, 391, 316, 0, 0, 0, 0, 0, 547, 548, + 0, 0, 0, 0, 0, 0, 0, 0, 279, 225, + 195, 328, 392, 255, 69, 0, 0, 177, 178, 179, + 534, 533, 536, 537, 538, 539, 0, 0, 217, 535, + 223, 540, 541, 542, 0, 237, 277, 243, 236, 407, + 0, 0, 0, 510, 527, 0, 555, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 524, 525, 601, 0, + 0, 0, 570, 0, 526, 0, 0, 519, 520, 522, + 521, 523, 528, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 263, 0, 317, 569, 0, 0, 438, 0, + 0, 567, 0, 0, 0, 0, 0, 288, 0, 285, + 191, 205, 0, 0, 327, 366, 372, 0, 0, 0, + 228, 0, 370, 341, 424, 213, 253, 363, 346, 368, + 0, 0, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 449, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 451, 208, 435, 202, 209, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 452, 215, 0, 0, 406, 444, 448, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 447, 214, 353, 266, 334, 423, 252, 431, 322, + 210, 272, 389, 286, 295, 0, 0, 340, 371, 219, + 426, 390, 557, 568, 563, 564, 561, 562, 0, 560, + 559, 558, 571, 549, 550, 551, 552, 554, 0, 565, + 566, 553, 190, 203, 291, 0, 360, 256, 450, 433, + 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, - 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, - 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, - 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, - 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, - 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, - 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, - 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, - 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, - 331, 0, 0, 0, 0, 513, 0, 0, 0, 241, - 0, 512, 0, 0, 0, 289, 0, 0, 0, 345, - 0, 382, 227, 298, 296, 410, 251, 244, 240, 226, - 273, 304, 343, 400, 337, 556, 293, 0, 0, 391, - 316, 0, 0, 0, 0, 0, 547, 548, 0, 0, - 0, 0, 0, 0, 0, 0, 279, 225, 195, 328, - 392, 255, 69, 0, 0, 177, 178, 179, 534, 1413, - 536, 537, 538, 539, 0, 0, 217, 535, 223, 540, - 541, 542, 0, 237, 277, 243, 236, 407, 0, 0, - 0, 510, 527, 0, 555, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 524, 525, 601, 0, 0, 0, - 570, 0, 526, 0, 0, 519, 520, 522, 521, 523, - 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 263, 0, 317, 569, 0, 0, 438, 0, 0, 567, - 0, 0, 0, 0, 0, 288, 0, 285, 191, 205, - 0, 0, 327, 366, 372, 0, 0, 0, 228, 0, - 370, 341, 424, 213, 253, 363, 346, 368, 0, 0, - 369, 294, 412, 358, 422, 439, 440, 235, 321, 430, - 404, 436, 449, 206, 232, 335, 397, 427, 388, 314, - 408, 409, 284, 387, 261, 194, 292, 198, 399, 420, - 218, 380, 0, 0, 0, 200, 418, 396, 311, 281, - 282, 199, 0, 362, 239, 259, 230, 330, 415, 416, - 229, 451, 208, 435, 202, 209, 434, 323, 411, 419, - 312, 303, 201, 417, 310, 302, 287, 249, 269, 356, - 297, 357, 270, 319, 318, 320, 0, 196, 0, 393, - 428, 452, 215, 0, 0, 406, 444, 448, 0, 359, - 216, 260, 248, 355, 258, 290, 443, 445, 446, 447, - 214, 353, 266, 334, 423, 252, 431, 322, 210, 272, - 389, 286, 295, 0, 0, 340, 371, 219, 426, 390, - 557, 568, 563, 564, 561, 562, 0, 560, 559, 558, - 571, 549, 550, 551, 552, 554, 0, 565, 566, 553, - 190, 203, 291, 0, 360, 256, 450, 433, 429, 0, - 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 254, 264, 268, 271, 274, 275, 278, + 283, 300, 305, 306, 307, 308, 324, 325, 326, 329, + 332, 333, 336, 338, 339, 342, 348, 349, 350, 351, + 352, 354, 361, 365, 373, 374, 375, 376, 377, 378, + 379, 383, 384, 385, 386, 394, 398, 413, 414, 425, + 437, 441, 265, 421, 442, 0, 299, 0, 0, 301, + 250, 267, 276, 0, 432, 395, 207, 367, 257, 197, + 224, 211, 231, 245, 247, 280, 309, 315, 344, 347, + 262, 242, 222, 364, 220, 381, 401, 402, 403, 405, + 313, 238, 331, 0, 0, 0, 0, 513, 0, 0, + 0, 241, 0, 512, 0, 0, 0, 289, 0, 0, + 0, 345, 0, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 556, 293, 0, + 0, 391, 316, 0, 0, 0, 0, 0, 547, 548, + 0, 0, 0, 0, 0, 0, 0, 0, 279, 225, + 195, 328, 392, 255, 69, 0, 0, 177, 178, 179, + 534, 1416, 536, 537, 538, 539, 0, 0, 217, 535, + 223, 540, 541, 542, 0, 237, 277, 243, 236, 407, + 0, 0, 0, 510, 527, 0, 555, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 524, 525, 601, 0, + 0, 0, 570, 0, 526, 0, 0, 519, 520, 522, + 521, 523, 528, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 263, 0, 317, 569, 0, 0, 438, 0, + 0, 567, 0, 0, 0, 0, 0, 288, 0, 285, + 191, 205, 0, 0, 327, 366, 372, 0, 0, 0, + 228, 0, 370, 341, 424, 213, 253, 363, 346, 368, + 0, 0, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 449, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 451, 208, 435, 202, 209, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 452, 215, 0, 0, 406, 444, 448, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 447, 214, 353, 266, 334, 423, 252, 431, 322, + 210, 272, 389, 286, 295, 0, 0, 340, 371, 219, + 426, 390, 557, 568, 563, 564, 561, 562, 0, 560, + 559, 558, 571, 549, 550, 551, 552, 554, 0, 565, + 566, 553, 190, 203, 291, 0, 360, 256, 450, 433, + 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 192, 193, 204, 212, 221, 233, - 246, 254, 264, 268, 271, 274, 275, 278, 283, 300, - 305, 306, 307, 308, 324, 325, 326, 329, 332, 333, - 336, 338, 339, 342, 348, 349, 350, 351, 352, 354, - 361, 365, 373, 374, 375, 376, 377, 378, 379, 383, - 384, 385, 386, 394, 398, 413, 414, 425, 437, 441, - 265, 421, 442, 0, 299, 0, 0, 301, 250, 267, - 276, 0, 432, 395, 207, 367, 257, 197, 224, 211, - 231, 245, 247, 280, 309, 315, 344, 347, 262, 242, - 222, 364, 220, 381, 401, 402, 403, 405, 313, 238, - 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 331, 0, 0, 0, 0, 513, 0, - 0, 0, 241, 0, 512, 0, 0, 0, 289, 0, - 0, 0, 345, 0, 382, 227, 298, 296, 410, 251, - 244, 240, 226, 273, 304, 343, 400, 337, 556, 293, - 0, 0, 391, 316, 0, 0, 0, 0, 0, 547, - 548, 0, 0, 0, 0, 0, 0, 0, 0, 279, - 225, 195, 328, 392, 255, 69, 0, 0, 177, 178, - 179, 534, 533, 536, 537, 538, 539, 0, 0, 217, - 535, 223, 540, 541, 542, 0, 237, 277, 243, 236, - 407, 0, 0, 0, 510, 527, 0, 555, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 524, 525, 0, - 0, 0, 0, 570, 0, 526, 0, 0, 519, 520, - 522, 521, 523, 528, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 263, 0, 317, 569, 0, 0, 438, - 0, 0, 567, 0, 0, 0, 0, 0, 288, 0, - 285, 191, 205, 0, 0, 327, 366, 372, 0, 0, - 0, 228, 0, 370, 341, 424, 213, 253, 363, 346, - 368, 0, 0, 369, 294, 412, 358, 422, 439, 440, - 235, 321, 430, 404, 436, 449, 206, 232, 335, 397, - 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, - 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, - 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, - 330, 415, 416, 229, 451, 208, 435, 202, 209, 434, - 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, - 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, - 196, 0, 393, 428, 452, 215, 0, 0, 406, 444, - 448, 0, 359, 216, 260, 248, 355, 258, 290, 443, - 445, 446, 447, 214, 353, 266, 334, 423, 252, 431, - 322, 210, 272, 389, 286, 295, 0, 0, 340, 371, - 219, 426, 390, 557, 568, 563, 564, 561, 562, 0, - 560, 559, 558, 571, 549, 550, 551, 552, 554, 0, - 565, 566, 553, 190, 203, 291, 0, 360, 256, 450, - 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 254, 264, 268, 271, 274, 275, - 278, 283, 300, 305, 306, 307, 308, 324, 325, 326, - 329, 332, 333, 336, 338, 339, 342, 348, 349, 350, - 351, 352, 354, 361, 365, 373, 374, 375, 376, 377, - 378, 379, 383, 384, 385, 386, 394, 398, 413, 414, - 425, 437, 441, 265, 421, 442, 0, 299, 0, 0, - 301, 250, 267, 276, 0, 432, 395, 207, 367, 257, - 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, - 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, - 405, 313, 238, 331, 0, 0, 0, 0, 513, 0, - 0, 0, 241, 0, 512, 0, 0, 0, 289, 0, - 0, 0, 345, 0, 382, 227, 298, 296, 410, 251, - 244, 240, 226, 273, 304, 343, 400, 337, 556, 293, - 0, 0, 391, 316, 0, 0, 0, 0, 0, 547, - 548, 0, 0, 0, 0, 0, 0, 0, 0, 279, - 225, 195, 328, 392, 255, 69, 0, 0, 177, 178, - 179, 534, 533, 536, 537, 538, 539, 0, 0, 217, - 535, 223, 540, 541, 542, 0, 237, 277, 243, 236, - 407, 0, 0, 0, 510, 527, 0, 555, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 524, 525, 0, - 0, 0, 0, 570, 0, 526, 0, 0, 519, 520, - 522, 521, 523, 528, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 263, 0, 317, 569, 0, 0, 438, - 0, 0, 567, 0, 0, 0, 0, 0, 288, 0, - 285, 191, 205, 0, 0, 327, 366, 372, 0, 0, - 0, 228, 0, 370, 341, 424, 213, 253, 363, 346, - 368, 0, 0, 369, 294, 412, 358, 422, 439, 440, - 235, 321, 430, 404, 436, 449, 206, 232, 335, 397, - 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, - 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, - 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, - 330, 415, 416, 229, 451, 208, 435, 202, 209, 434, - 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, - 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, - 196, 0, 393, 428, 452, 215, 0, 0, 406, 444, - 448, 0, 359, 216, 260, 248, 355, 258, 290, 443, - 445, 446, 447, 214, 353, 266, 334, 423, 252, 431, - 322, 210, 272, 389, 286, 295, 0, 0, 340, 371, - 219, 426, 390, 557, 568, 563, 564, 561, 562, 0, - 560, 559, 558, 571, 549, 550, 551, 552, 554, 0, - 565, 566, 553, 190, 203, 291, 0, 360, 256, 450, - 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 254, 264, 268, 271, 274, 275, - 278, 283, 300, 305, 306, 307, 308, 324, 325, 326, - 329, 332, 333, 336, 338, 339, 342, 348, 349, 350, - 351, 352, 354, 361, 365, 373, 374, 375, 376, 377, - 378, 379, 383, 384, 385, 386, 394, 398, 413, 414, - 425, 437, 441, 265, 421, 442, 0, 299, 0, 0, - 301, 250, 267, 276, 0, 432, 395, 207, 367, 257, - 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, - 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, - 405, 313, 238, 331, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 289, 0, - 0, 0, 345, 0, 382, 227, 298, 296, 410, 251, - 244, 240, 226, 273, 304, 343, 400, 337, 556, 293, - 0, 0, 391, 316, 0, 0, 0, 0, 0, 547, - 548, 0, 0, 0, 0, 0, 0, 0, 0, 279, - 225, 195, 328, 392, 255, 69, 0, 0, 177, 178, - 179, 534, 533, 536, 537, 538, 539, 0, 0, 217, - 535, 223, 540, 541, 542, 0, 237, 277, 243, 236, - 407, 0, 0, 0, 0, 527, 0, 555, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 524, 525, 0, - 0, 0, 0, 570, 0, 526, 0, 0, 519, 520, - 522, 521, 523, 528, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 263, 0, 317, 569, 0, 0, 438, - 0, 0, 567, 0, 0, 0, 0, 0, 288, 0, - 285, 191, 205, 0, 0, 327, 366, 372, 0, 0, - 0, 228, 0, 370, 341, 424, 213, 253, 363, 346, - 368, 2173, 0, 369, 294, 412, 358, 422, 439, 440, - 235, 321, 430, 404, 436, 449, 206, 232, 335, 397, - 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, - 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, - 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, - 330, 415, 416, 229, 451, 208, 435, 202, 209, 434, - 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, - 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, - 196, 0, 393, 428, 452, 215, 0, 0, 406, 444, - 448, 0, 359, 216, 260, 248, 355, 258, 290, 443, - 445, 446, 447, 214, 353, 266, 334, 423, 252, 431, - 322, 210, 272, 389, 286, 295, 0, 0, 340, 371, - 219, 426, 390, 557, 568, 563, 564, 561, 562, 0, - 560, 559, 558, 571, 549, 550, 551, 552, 554, 0, - 565, 566, 553, 190, 203, 291, 0, 360, 256, 450, - 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 254, 264, 268, 271, 274, 275, - 278, 283, 300, 305, 306, 307, 308, 324, 325, 326, - 329, 332, 333, 336, 338, 339, 342, 348, 349, 350, - 351, 352, 354, 361, 365, 373, 374, 375, 376, 377, - 378, 379, 383, 384, 385, 386, 394, 398, 413, 414, - 425, 437, 441, 265, 421, 442, 0, 299, 0, 0, - 301, 250, 267, 276, 0, 432, 395, 207, 367, 257, - 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, - 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, - 405, 313, 238, 331, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 289, 0, - 0, 0, 345, 0, 382, 227, 298, 296, 410, 251, - 244, 240, 226, 273, 304, 343, 400, 337, 556, 293, - 0, 0, 391, 316, 0, 0, 0, 0, 0, 547, - 548, 0, 0, 0, 0, 0, 0, 0, 0, 279, - 225, 195, 328, 392, 255, 69, 0, 588, 177, 178, - 179, 534, 533, 536, 537, 538, 539, 0, 0, 217, - 535, 223, 540, 541, 542, 0, 237, 277, 243, 236, - 407, 0, 0, 0, 0, 527, 0, 555, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 524, 525, 0, - 0, 0, 0, 570, 0, 526, 0, 0, 519, 520, - 522, 521, 523, 528, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 263, 0, 317, 569, 0, 0, 438, - 0, 0, 567, 0, 0, 0, 0, 0, 288, 0, - 285, 191, 205, 0, 0, 327, 366, 372, 0, 0, - 0, 228, 0, 370, 341, 424, 213, 253, 363, 346, - 368, 0, 0, 369, 294, 412, 358, 422, 439, 440, - 235, 321, 430, 404, 436, 449, 206, 232, 335, 397, - 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, - 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, - 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, - 330, 415, 416, 229, 451, 208, 435, 202, 209, 434, - 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, - 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, - 196, 0, 393, 428, 452, 215, 0, 0, 406, 444, - 448, 0, 359, 216, 260, 248, 355, 258, 290, 443, - 445, 446, 447, 214, 353, 266, 334, 423, 252, 431, - 322, 210, 272, 389, 286, 295, 0, 0, 340, 371, - 219, 426, 390, 557, 568, 563, 564, 561, 562, 0, - 560, 559, 558, 571, 549, 550, 551, 552, 554, 0, - 565, 566, 553, 190, 203, 291, 0, 360, 256, 450, - 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 254, 264, 268, 271, 274, 275, - 278, 283, 300, 305, 306, 307, 308, 324, 325, 326, - 329, 332, 333, 336, 338, 339, 342, 348, 349, 350, - 351, 352, 354, 361, 365, 373, 374, 375, 376, 377, - 378, 379, 383, 384, 385, 386, 394, 398, 413, 414, - 425, 437, 441, 265, 421, 442, 0, 299, 0, 0, - 301, 250, 267, 276, 0, 432, 395, 207, 367, 257, - 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, - 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, - 405, 313, 238, 331, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 289, 0, - 0, 0, 345, 0, 382, 227, 298, 296, 410, 251, - 244, 240, 226, 273, 304, 343, 400, 337, 556, 293, - 0, 0, 391, 316, 0, 0, 0, 0, 0, 547, - 548, 0, 0, 0, 0, 0, 0, 0, 0, 279, - 225, 195, 328, 392, 255, 69, 0, 0, 177, 178, - 179, 534, 533, 536, 537, 538, 539, 0, 0, 217, - 535, 223, 540, 541, 542, 0, 237, 277, 243, 236, - 407, 0, 0, 0, 0, 527, 0, 555, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 524, 525, 0, - 0, 0, 0, 570, 0, 526, 0, 0, 519, 520, - 522, 521, 523, 528, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 263, 0, 317, 569, 0, 0, 438, - 0, 0, 567, 0, 0, 0, 0, 0, 288, 0, - 285, 191, 205, 0, 0, 327, 366, 372, 0, 0, - 0, 228, 0, 370, 341, 424, 213, 253, 363, 346, - 368, 0, 0, 369, 294, 412, 358, 422, 439, 440, - 235, 321, 430, 404, 436, 449, 206, 232, 335, 397, - 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, - 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, - 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, - 330, 415, 416, 229, 451, 208, 435, 202, 209, 434, - 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, - 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, - 196, 0, 393, 428, 452, 215, 0, 0, 406, 444, - 448, 0, 359, 216, 260, 248, 355, 258, 290, 443, - 445, 446, 447, 214, 353, 266, 334, 423, 252, 431, - 322, 210, 272, 389, 286, 295, 0, 0, 340, 371, - 219, 426, 390, 557, 568, 563, 564, 561, 562, 0, - 560, 559, 558, 571, 549, 550, 551, 552, 554, 0, - 565, 566, 553, 190, 203, 291, 0, 360, 256, 450, - 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 254, 264, 268, 271, 274, 275, - 278, 283, 300, 305, 306, 307, 308, 324, 325, 326, - 329, 332, 333, 336, 338, 339, 342, 348, 349, 350, - 351, 352, 354, 361, 365, 373, 374, 375, 376, 377, - 378, 379, 383, 384, 385, 386, 394, 398, 413, 414, - 425, 437, 441, 265, 421, 442, 0, 299, 0, 0, - 301, 250, 267, 276, 0, 432, 395, 207, 367, 257, - 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, - 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, - 405, 313, 238, 331, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 289, 0, - 0, 0, 345, 0, 382, 227, 298, 296, 410, 251, - 244, 240, 226, 273, 304, 343, 400, 337, 0, 293, - 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, - 225, 195, 328, 392, 255, 0, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 277, 243, 236, - 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 972, 971, 981, 982, 974, 975, 976, - 977, 978, 979, 980, 973, 0, 0, 983, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 263, 0, 317, 0, 0, 0, 438, - 0, 0, 0, 0, 0, 0, 0, 0, 288, 0, - 285, 191, 205, 0, 0, 327, 366, 372, 0, 0, - 0, 228, 0, 370, 341, 424, 213, 253, 363, 346, - 368, 0, 0, 369, 294, 412, 358, 422, 439, 440, - 235, 321, 430, 404, 436, 449, 206, 232, 335, 397, - 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, - 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, - 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, - 330, 415, 416, 229, 451, 208, 435, 202, 209, 434, - 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, - 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, - 196, 0, 393, 428, 452, 215, 0, 0, 406, 444, - 448, 0, 359, 216, 260, 248, 355, 258, 290, 443, - 445, 446, 447, 214, 353, 266, 334, 423, 252, 431, - 322, 210, 272, 389, 286, 295, 0, 0, 340, 371, - 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 291, 0, 360, 256, 450, - 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 254, 264, 268, 271, 274, 275, - 278, 283, 300, 305, 306, 307, 308, 324, 325, 326, - 329, 332, 333, 336, 338, 339, 342, 348, 349, 350, - 351, 352, 354, 361, 365, 373, 374, 375, 376, 377, - 378, 379, 383, 384, 385, 386, 394, 398, 413, 414, - 425, 437, 441, 265, 421, 442, 0, 299, 0, 0, - 301, 250, 267, 276, 0, 432, 395, 207, 367, 257, - 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, - 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, - 405, 313, 238, 331, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 801, 0, 0, 0, 0, 289, 0, - 0, 0, 345, 0, 382, 227, 298, 296, 410, 251, - 244, 240, 226, 273, 304, 343, 400, 337, 0, 293, - 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, - 225, 195, 328, 392, 255, 0, 0, 0, 177, 178, - 179, 0, 0, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 277, 243, 236, - 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 263, 0, 317, 0, 0, 800, 438, - 0, 0, 0, 0, 0, 0, 797, 798, 288, 766, - 285, 191, 205, 791, 795, 327, 366, 372, 0, 0, - 0, 228, 0, 370, 341, 424, 213, 253, 363, 346, - 368, 0, 0, 369, 294, 412, 358, 422, 439, 440, - 235, 321, 430, 404, 436, 449, 206, 232, 335, 397, - 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, - 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, - 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, - 330, 415, 416, 229, 451, 208, 435, 202, 209, 434, - 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, - 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, - 196, 0, 393, 428, 452, 215, 0, 0, 406, 444, - 448, 0, 359, 216, 260, 248, 355, 258, 290, 443, - 445, 446, 447, 214, 353, 266, 334, 423, 252, 431, - 322, 210, 272, 389, 286, 295, 0, 0, 340, 371, - 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 291, 0, 360, 256, 450, - 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 254, 264, 268, 271, 274, 275, - 278, 283, 300, 305, 306, 307, 308, 324, 325, 326, - 329, 332, 333, 336, 338, 339, 342, 348, 349, 350, - 351, 352, 354, 361, 365, 373, 374, 375, 376, 377, - 378, 379, 383, 384, 385, 386, 394, 398, 413, 414, - 425, 437, 441, 265, 421, 442, 0, 299, 0, 0, - 301, 250, 267, 276, 0, 432, 395, 207, 367, 257, - 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, - 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, - 405, 313, 238, 331, 0, 0, 0, 1073, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 289, 0, - 0, 0, 345, 0, 382, 227, 298, 296, 410, 251, - 244, 240, 226, 273, 304, 343, 400, 337, 0, 293, - 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, - 225, 195, 328, 392, 255, 0, 0, 0, 177, 178, - 179, 0, 1075, 0, 0, 0, 0, 0, 0, 217, - 0, 223, 0, 0, 0, 0, 237, 277, 243, 236, - 407, 961, 962, 960, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 963, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 263, 0, 317, 0, 0, 0, 438, - 0, 0, 0, 0, 0, 0, 0, 0, 288, 0, - 285, 191, 205, 0, 0, 327, 366, 372, 0, 0, - 0, 228, 0, 370, 341, 424, 213, 253, 363, 346, - 368, 0, 0, 369, 294, 412, 358, 422, 439, 440, - 235, 321, 430, 404, 436, 449, 206, 232, 335, 397, - 427, 388, 314, 408, 409, 284, 387, 261, 194, 292, - 198, 399, 420, 218, 380, 0, 0, 0, 200, 418, - 396, 311, 281, 282, 199, 0, 362, 239, 259, 230, - 330, 415, 416, 229, 451, 208, 435, 202, 209, 434, - 323, 411, 419, 312, 303, 201, 417, 310, 302, 287, - 249, 269, 356, 297, 357, 270, 319, 318, 320, 0, - 196, 0, 393, 428, 452, 215, 0, 0, 406, 444, - 448, 0, 359, 216, 260, 248, 355, 258, 290, 443, - 445, 446, 447, 214, 353, 266, 334, 423, 252, 431, - 322, 210, 272, 389, 286, 295, 0, 0, 340, 371, - 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 203, 291, 0, 360, 256, 450, - 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 193, 204, - 212, 221, 233, 246, 254, 264, 268, 271, 274, 275, - 278, 283, 300, 305, 306, 307, 308, 324, 325, 326, - 329, 332, 333, 336, 338, 339, 342, 348, 349, 350, - 351, 352, 354, 361, 365, 373, 374, 375, 376, 377, - 378, 379, 383, 384, 385, 386, 394, 398, 413, 414, - 425, 437, 441, 265, 421, 442, 0, 299, 0, 0, - 301, 250, 267, 276, 0, 432, 395, 207, 367, 257, - 197, 224, 211, 231, 245, 247, 280, 309, 315, 344, - 347, 262, 242, 222, 364, 220, 381, 401, 402, 403, - 405, 313, 238, 34, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 331, 0, 0, 0, - 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, - 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, - 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 254, 264, 268, 271, 274, 275, 278, + 283, 300, 305, 306, 307, 308, 324, 325, 326, 329, + 332, 333, 336, 338, 339, 342, 348, 349, 350, 351, + 352, 354, 361, 365, 373, 374, 375, 376, 377, 378, + 379, 383, 384, 385, 386, 394, 398, 413, 414, 425, + 437, 441, 265, 421, 442, 0, 299, 0, 0, 301, + 250, 267, 276, 0, 432, 395, 207, 367, 257, 197, + 224, 211, 231, 245, 247, 280, 309, 315, 344, 347, + 262, 242, 222, 364, 220, 381, 401, 402, 403, 405, + 313, 238, 331, 0, 0, 0, 0, 513, 0, 0, + 0, 241, 0, 512, 0, 0, 0, 289, 0, 0, + 0, 345, 0, 382, 227, 298, 296, 410, 251, 244, + 240, 226, 273, 304, 343, 400, 337, 556, 293, 0, + 0, 391, 316, 0, 0, 0, 0, 0, 547, 548, + 0, 0, 0, 0, 0, 0, 0, 0, 279, 225, + 195, 328, 392, 255, 69, 0, 0, 177, 178, 179, + 534, 1413, 536, 537, 538, 539, 0, 0, 217, 535, + 223, 540, 541, 542, 0, 237, 277, 243, 236, 407, + 0, 0, 0, 510, 527, 0, 555, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 524, 525, 601, 0, + 0, 0, 570, 0, 526, 0, 0, 519, 520, 522, + 521, 523, 528, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 263, 0, 317, 569, 0, 0, 438, 0, + 0, 567, 0, 0, 0, 0, 0, 288, 0, 285, + 191, 205, 0, 0, 327, 366, 372, 0, 0, 0, + 228, 0, 370, 341, 424, 213, 253, 363, 346, 368, + 0, 0, 369, 294, 412, 358, 422, 439, 440, 235, + 321, 430, 404, 436, 449, 206, 232, 335, 397, 427, + 388, 314, 408, 409, 284, 387, 261, 194, 292, 198, + 399, 420, 218, 380, 0, 0, 0, 200, 418, 396, + 311, 281, 282, 199, 0, 362, 239, 259, 230, 330, + 415, 416, 229, 451, 208, 435, 202, 209, 434, 323, + 411, 419, 312, 303, 201, 417, 310, 302, 287, 249, + 269, 356, 297, 357, 270, 319, 318, 320, 0, 196, + 0, 393, 428, 452, 215, 0, 0, 406, 444, 448, + 0, 359, 216, 260, 248, 355, 258, 290, 443, 445, + 446, 447, 214, 353, 266, 334, 423, 252, 431, 322, + 210, 272, 389, 286, 295, 0, 0, 340, 371, 219, + 426, 390, 557, 568, 563, 564, 561, 562, 0, 560, + 559, 558, 571, 549, 550, 551, 552, 554, 0, 565, + 566, 553, 190, 203, 291, 0, 360, 256, 450, 433, + 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 225, 195, 328, 392, 255, 69, 0, - 588, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 192, 193, 204, 212, + 221, 233, 246, 254, 264, 268, 271, 274, 275, 278, + 283, 300, 305, 306, 307, 308, 324, 325, 326, 329, + 332, 333, 336, 338, 339, 342, 348, 349, 350, 351, + 352, 354, 361, 365, 373, 374, 375, 376, 377, 378, + 379, 383, 384, 385, 386, 394, 398, 413, 414, 425, + 437, 441, 265, 421, 442, 0, 299, 0, 0, 301, + 250, 267, 276, 0, 432, 395, 207, 367, 257, 197, + 224, 211, 231, 245, 247, 280, 309, 315, 344, 347, + 262, 242, 222, 364, 220, 381, 401, 402, 403, 405, + 313, 238, 581, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 331, 0, 0, 0, 0, + 513, 0, 0, 0, 241, 0, 512, 0, 0, 0, + 289, 0, 0, 0, 345, 0, 382, 227, 298, 296, + 410, 251, 244, 240, 226, 273, 304, 343, 400, 337, + 556, 293, 0, 0, 391, 316, 0, 0, 0, 0, + 0, 547, 548, 0, 0, 0, 0, 0, 0, 0, + 0, 279, 225, 195, 328, 392, 255, 69, 0, 0, + 177, 178, 179, 534, 533, 536, 537, 538, 539, 0, + 0, 217, 535, 223, 540, 541, 542, 0, 237, 277, + 243, 236, 407, 0, 0, 0, 510, 527, 0, 555, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 524, + 525, 0, 0, 0, 0, 570, 0, 526, 0, 0, + 519, 520, 522, 521, 523, 528, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 0, 317, 569, 0, + 0, 438, 0, 0, 567, 0, 0, 0, 0, 0, + 288, 0, 285, 191, 205, 0, 0, 327, 366, 372, + 0, 0, 0, 228, 0, 370, 341, 424, 213, 253, + 363, 346, 368, 0, 0, 369, 294, 412, 358, 422, + 439, 440, 235, 321, 430, 404, 436, 449, 206, 232, + 335, 397, 427, 388, 314, 408, 409, 284, 387, 261, + 194, 292, 198, 399, 420, 218, 380, 0, 0, 0, + 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, + 259, 230, 330, 415, 416, 229, 451, 208, 435, 202, + 209, 434, 323, 411, 419, 312, 303, 201, 417, 310, + 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, + 320, 0, 196, 0, 393, 428, 452, 215, 0, 0, + 406, 444, 448, 0, 359, 216, 260, 248, 355, 258, + 290, 443, 445, 446, 447, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 557, 568, 563, 564, 561, + 562, 0, 560, 559, 558, 571, 549, 550, 551, 552, + 554, 0, 565, 566, 553, 190, 203, 291, 0, 360, + 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 331, 0, 0, 0, 0, + 513, 0, 0, 0, 241, 0, 512, 0, 0, 0, + 289, 0, 0, 0, 345, 0, 382, 227, 298, 296, + 410, 251, 244, 240, 226, 273, 304, 343, 400, 337, + 556, 293, 0, 0, 391, 316, 0, 0, 0, 0, + 0, 547, 548, 0, 0, 0, 0, 0, 0, 0, + 0, 279, 225, 195, 328, 392, 255, 69, 0, 0, + 177, 178, 179, 534, 533, 536, 537, 538, 539, 0, + 0, 217, 535, 223, 540, 541, 542, 0, 237, 277, + 243, 236, 407, 0, 0, 0, 510, 527, 0, 555, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 524, + 525, 0, 0, 0, 0, 570, 0, 526, 0, 0, + 519, 520, 522, 521, 523, 528, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 0, 317, 569, 0, + 0, 438, 0, 0, 567, 0, 0, 0, 0, 0, + 288, 0, 285, 191, 205, 0, 0, 327, 366, 372, + 0, 0, 0, 228, 0, 370, 341, 424, 213, 253, + 363, 346, 368, 0, 0, 369, 294, 412, 358, 422, + 439, 440, 235, 321, 430, 404, 436, 449, 206, 232, + 335, 397, 427, 388, 314, 408, 409, 284, 387, 261, + 194, 292, 198, 399, 420, 218, 380, 0, 0, 0, + 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, + 259, 230, 330, 415, 416, 229, 451, 208, 435, 202, + 209, 434, 323, 411, 419, 312, 303, 201, 417, 310, + 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, + 320, 0, 196, 0, 393, 428, 452, 215, 0, 0, + 406, 444, 448, 0, 359, 216, 260, 248, 355, 258, + 290, 443, 445, 446, 447, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 557, 568, 563, 564, 561, + 562, 0, 560, 559, 558, 571, 549, 550, 551, 552, + 554, 0, 565, 566, 553, 190, 203, 291, 0, 360, + 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 331, 0, 0, 0, 0, + 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 345, 0, 382, 227, 298, 296, + 410, 251, 244, 240, 226, 273, 304, 343, 400, 337, + 556, 293, 0, 0, 391, 316, 0, 0, 0, 0, + 0, 547, 548, 0, 0, 0, 0, 0, 0, 0, + 0, 279, 225, 195, 328, 392, 255, 69, 0, 0, + 177, 178, 179, 534, 533, 536, 537, 538, 539, 0, + 0, 217, 535, 223, 540, 541, 542, 0, 237, 277, + 243, 236, 407, 0, 0, 0, 0, 527, 0, 555, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 524, + 525, 0, 0, 0, 0, 570, 0, 526, 0, 0, + 519, 520, 522, 521, 523, 528, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 0, 317, 569, 0, + 0, 438, 0, 0, 567, 0, 0, 0, 0, 0, + 288, 0, 285, 191, 205, 0, 0, 327, 366, 372, + 0, 0, 0, 228, 0, 370, 341, 424, 213, 253, + 363, 346, 368, 2180, 0, 369, 294, 412, 358, 422, + 439, 440, 235, 321, 430, 404, 436, 449, 206, 232, + 335, 397, 427, 388, 314, 408, 409, 284, 387, 261, + 194, 292, 198, 399, 420, 218, 380, 0, 0, 0, + 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, + 259, 230, 330, 415, 416, 229, 451, 208, 435, 202, + 209, 434, 323, 411, 419, 312, 303, 201, 417, 310, + 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, + 320, 0, 196, 0, 393, 428, 452, 215, 0, 0, + 406, 444, 448, 0, 359, 216, 260, 248, 355, 258, + 290, 443, 445, 446, 447, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 557, 568, 563, 564, 561, + 562, 0, 560, 559, 558, 571, 549, 550, 551, 552, + 554, 0, 565, 566, 553, 190, 203, 291, 0, 360, + 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 331, 0, 0, 0, 0, + 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 345, 0, 382, 227, 298, 296, + 410, 251, 244, 240, 226, 273, 304, 343, 400, 337, + 556, 293, 0, 0, 391, 316, 0, 0, 0, 0, + 0, 547, 548, 0, 0, 0, 0, 0, 0, 0, + 0, 279, 225, 195, 328, 392, 255, 69, 0, 588, + 177, 178, 179, 534, 533, 536, 537, 538, 539, 0, + 0, 217, 535, 223, 540, 541, 542, 0, 237, 277, + 243, 236, 407, 0, 0, 0, 0, 527, 0, 555, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 524, + 525, 0, 0, 0, 0, 570, 0, 526, 0, 0, + 519, 520, 522, 521, 523, 528, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 0, 317, 569, 0, + 0, 438, 0, 0, 567, 0, 0, 0, 0, 0, + 288, 0, 285, 191, 205, 0, 0, 327, 366, 372, + 0, 0, 0, 228, 0, 370, 341, 424, 213, 253, + 363, 346, 368, 0, 0, 369, 294, 412, 358, 422, + 439, 440, 235, 321, 430, 404, 436, 449, 206, 232, + 335, 397, 427, 388, 314, 408, 409, 284, 387, 261, + 194, 292, 198, 399, 420, 218, 380, 0, 0, 0, + 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, + 259, 230, 330, 415, 416, 229, 451, 208, 435, 202, + 209, 434, 323, 411, 419, 312, 303, 201, 417, 310, + 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, + 320, 0, 196, 0, 393, 428, 452, 215, 0, 0, + 406, 444, 448, 0, 359, 216, 260, 248, 355, 258, + 290, 443, 445, 446, 447, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 557, 568, 563, 564, 561, + 562, 0, 560, 559, 558, 571, 549, 550, 551, 552, + 554, 0, 565, 566, 553, 190, 203, 291, 0, 360, + 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 331, 0, 0, 0, 0, + 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 345, 0, 382, 227, 298, 296, + 410, 251, 244, 240, 226, 273, 304, 343, 400, 337, + 556, 293, 0, 0, 391, 316, 0, 0, 0, 0, + 0, 547, 548, 0, 0, 0, 0, 0, 0, 0, + 0, 279, 225, 195, 328, 392, 255, 69, 0, 0, + 177, 178, 179, 534, 533, 536, 537, 538, 539, 0, + 0, 217, 535, 223, 540, 541, 542, 0, 237, 277, + 243, 236, 407, 0, 0, 0, 0, 527, 0, 555, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 524, + 525, 0, 0, 0, 0, 570, 0, 526, 0, 0, + 519, 520, 522, 521, 523, 528, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 0, 317, 569, 0, + 0, 438, 0, 0, 567, 0, 0, 0, 0, 0, + 288, 0, 285, 191, 205, 0, 0, 327, 366, 372, + 0, 0, 0, 228, 0, 370, 341, 424, 213, 253, + 363, 346, 368, 0, 0, 369, 294, 412, 358, 422, + 439, 440, 235, 321, 430, 404, 436, 449, 206, 232, + 335, 397, 427, 388, 314, 408, 409, 284, 387, 261, + 194, 292, 198, 399, 420, 218, 380, 0, 0, 0, + 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, + 259, 230, 330, 415, 416, 229, 451, 208, 435, 202, + 209, 434, 323, 411, 419, 312, 303, 201, 417, 310, + 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, + 320, 0, 196, 0, 393, 428, 452, 215, 0, 0, + 406, 444, 448, 0, 359, 216, 260, 248, 355, 258, + 290, 443, 445, 446, 447, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 557, 568, 563, 564, 561, + 562, 0, 560, 559, 558, 571, 549, 550, 551, 552, + 554, 0, 565, 566, 553, 190, 203, 291, 0, 360, + 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 331, 0, 0, 0, 0, + 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 345, 0, 382, 227, 298, 296, + 410, 251, 244, 240, 226, 273, 304, 343, 400, 337, + 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 279, 225, 195, 328, 392, 255, 0, 0, 0, + 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, + 0, 217, 0, 223, 0, 0, 0, 0, 237, 277, + 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 972, 971, 981, 982, 974, + 975, 976, 977, 978, 979, 980, 973, 0, 0, 983, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 0, 317, 0, 0, + 0, 438, 0, 0, 0, 0, 0, 0, 0, 0, + 288, 0, 285, 191, 205, 0, 0, 327, 366, 372, + 0, 0, 0, 228, 0, 370, 341, 424, 213, 253, + 363, 346, 368, 0, 0, 369, 294, 412, 358, 422, + 439, 440, 235, 321, 430, 404, 436, 449, 206, 232, + 335, 397, 427, 388, 314, 408, 409, 284, 387, 261, + 194, 292, 198, 399, 420, 218, 380, 0, 0, 0, + 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, + 259, 230, 330, 415, 416, 229, 451, 208, 435, 202, + 209, 434, 323, 411, 419, 312, 303, 201, 417, 310, + 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, + 320, 0, 196, 0, 393, 428, 452, 215, 0, 0, + 406, 444, 448, 0, 359, 216, 260, 248, 355, 258, + 290, 443, 445, 446, 447, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 203, 291, 0, 360, + 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 331, 0, 0, 0, 0, + 0, 0, 0, 0, 241, 801, 0, 0, 0, 0, + 289, 0, 0, 0, 345, 0, 382, 227, 298, 296, + 410, 251, 244, 240, 226, 273, 304, 343, 400, 337, + 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 279, 225, 195, 328, 392, 255, 0, 0, 0, + 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, + 0, 217, 0, 223, 0, 0, 0, 0, 237, 277, + 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 0, 317, 0, 0, + 800, 438, 0, 0, 0, 0, 0, 0, 797, 798, + 288, 766, 285, 191, 205, 791, 795, 327, 366, 372, + 0, 0, 0, 228, 0, 370, 341, 424, 213, 253, + 363, 346, 368, 0, 0, 369, 294, 412, 358, 422, + 439, 440, 235, 321, 430, 404, 436, 449, 206, 232, + 335, 397, 427, 388, 314, 408, 409, 284, 387, 261, + 194, 292, 198, 399, 420, 218, 380, 0, 0, 0, + 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, + 259, 230, 330, 415, 416, 229, 451, 208, 435, 202, + 209, 434, 323, 411, 419, 312, 303, 201, 417, 310, + 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, + 320, 0, 196, 0, 393, 428, 452, 215, 0, 0, + 406, 444, 448, 0, 359, 216, 260, 248, 355, 258, + 290, 443, 445, 446, 447, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 203, 291, 0, 360, + 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 331, 0, 0, 0, 1073, + 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 345, 0, 382, 227, 298, 296, + 410, 251, 244, 240, 226, 273, 304, 343, 400, 337, + 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 279, 225, 195, 328, 392, 255, 0, 0, 0, + 177, 178, 179, 0, 1075, 0, 0, 0, 0, 0, + 0, 217, 0, 223, 0, 0, 0, 0, 237, 277, + 243, 236, 407, 961, 962, 960, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 963, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 0, 317, 0, 0, + 0, 438, 0, 0, 0, 0, 0, 0, 0, 0, + 288, 0, 285, 191, 205, 0, 0, 327, 366, 372, + 0, 0, 0, 228, 0, 370, 341, 424, 213, 253, + 363, 346, 368, 0, 0, 369, 294, 412, 358, 422, + 439, 440, 235, 321, 430, 404, 436, 449, 206, 232, + 335, 397, 427, 388, 314, 408, 409, 284, 387, 261, + 194, 292, 198, 399, 420, 218, 380, 0, 0, 0, + 200, 418, 396, 311, 281, 282, 199, 0, 362, 239, + 259, 230, 330, 415, 416, 229, 451, 208, 435, 202, + 209, 434, 323, 411, 419, 312, 303, 201, 417, 310, + 302, 287, 249, 269, 356, 297, 357, 270, 319, 318, + 320, 0, 196, 0, 393, 428, 452, 215, 0, 0, + 406, 444, 448, 0, 359, 216, 260, 248, 355, 258, + 290, 443, 445, 446, 447, 214, 353, 266, 334, 423, + 252, 431, 322, 210, 272, 389, 286, 295, 0, 0, + 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 190, 203, 291, 0, 360, + 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, + 193, 204, 212, 221, 233, 246, 254, 264, 268, 271, + 274, 275, 278, 283, 300, 305, 306, 307, 308, 324, + 325, 326, 329, 332, 333, 336, 338, 339, 342, 348, + 349, 350, 351, 352, 354, 361, 365, 373, 374, 375, + 376, 377, 378, 379, 383, 384, 385, 386, 394, 398, + 413, 414, 425, 437, 441, 265, 421, 442, 0, 299, + 0, 0, 301, 250, 267, 276, 0, 432, 395, 207, + 367, 257, 197, 224, 211, 231, 245, 247, 280, 309, + 315, 344, 347, 262, 242, 222, 364, 220, 381, 401, + 402, 403, 405, 313, 238, 34, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 69, 0, 588, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 263, 0, 317, 0, - 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, - 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, - 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, - 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, - 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, - 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, - 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, - 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, - 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, - 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, - 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, - 318, 320, 0, 196, 0, 393, 428, 452, 215, 0, - 0, 406, 444, 448, 0, 359, 216, 260, 248, 355, - 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, - 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, - 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, - 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, + 215, 0, 0, 406, 444, 448, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, - 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, - 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, - 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, - 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, - 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, - 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, - 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, - 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, - 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, - 1443, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, - 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, - 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 225, 195, 328, 392, 255, 0, 0, - 0, 177, 178, 179, 0, 1445, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 0, 0, 1443, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 0, 0, 0, 177, 178, 179, 0, 1445, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 263, 0, 317, 0, - 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, - 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, - 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, - 253, 363, 346, 368, 0, 1441, 369, 294, 412, 358, - 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, - 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, - 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, - 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, - 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, - 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, - 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, - 318, 320, 0, 196, 0, 393, 428, 452, 215, 0, - 0, 406, 444, 448, 0, 359, 216, 260, 248, 355, - 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, - 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, - 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, - 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 1441, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, + 215, 0, 0, 406, 444, 448, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, - 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, - 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, - 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, - 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, - 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, - 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, - 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, - 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, - 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, - 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, - 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, - 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 225, 195, 328, 392, 255, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 760, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 263, 0, 317, 0, - 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, - 0, 288, 766, 285, 191, 205, 764, 0, 327, 366, - 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, - 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, - 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, - 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, - 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, - 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, - 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, - 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, - 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, - 318, 320, 0, 196, 0, 393, 428, 452, 215, 0, - 0, 406, 444, 448, 0, 359, 216, 260, 248, 355, - 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, - 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, - 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, - 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 766, 285, 191, 205, 764, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, + 215, 0, 0, 406, 444, 448, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, - 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, - 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, - 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, - 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, - 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, - 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, - 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, - 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, - 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, - 1443, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, - 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, - 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 225, 195, 328, 392, 255, 0, 0, - 0, 177, 178, 179, 0, 1445, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 0, 0, 1443, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 0, 0, 0, 177, 178, 179, 0, 1445, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 263, 0, 317, 0, - 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, - 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, - 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, - 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, - 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, - 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, - 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, - 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, - 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, - 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, - 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, - 318, 320, 0, 196, 0, 393, 428, 452, 215, 0, - 0, 406, 444, 448, 0, 359, 216, 260, 248, 355, - 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, - 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, - 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, - 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, + 215, 0, 0, 406, 444, 448, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, - 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, - 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, - 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, - 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, - 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, - 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, - 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, - 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, - 401, 402, 403, 405, 313, 238, 34, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 69, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 0, 1463, - 0, 0, 1464, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 1106, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 1105, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 588, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 69, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 1445, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 1075, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 1348, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 1230, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 1228, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 1226, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 1224, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 1222, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 1218, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 1216, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 1214, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 0, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 241, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 345, 0, - 382, 227, 298, 296, 410, 251, 244, 240, 226, 273, - 304, 343, 400, 337, 0, 293, 0, 0, 391, 316, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 279, 225, 195, 328, 392, - 255, 1189, 0, 0, 177, 178, 179, 0, 0, 0, - 0, 0, 0, 0, 0, 217, 0, 223, 0, 0, - 0, 0, 237, 277, 243, 236, 407, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 317, 0, 0, 0, 438, 0, 0, 0, 0, - 0, 0, 0, 0, 288, 0, 285, 191, 205, 0, - 0, 327, 366, 372, 0, 0, 0, 228, 0, 370, - 341, 424, 213, 253, 363, 346, 368, 0, 0, 369, - 294, 412, 358, 422, 439, 440, 235, 321, 430, 404, - 436, 449, 206, 232, 335, 397, 427, 388, 314, 408, - 409, 284, 387, 261, 194, 292, 198, 399, 420, 218, - 380, 0, 0, 0, 200, 418, 396, 311, 281, 282, - 199, 0, 362, 239, 259, 230, 330, 415, 416, 229, - 451, 208, 435, 202, 209, 434, 323, 411, 419, 312, - 303, 201, 417, 310, 302, 287, 249, 269, 356, 297, - 357, 270, 319, 318, 320, 0, 196, 0, 393, 428, - 452, 215, 0, 0, 406, 444, 448, 0, 359, 216, - 260, 248, 355, 258, 290, 443, 445, 446, 447, 214, - 353, 266, 334, 423, 252, 431, 322, 210, 272, 389, - 286, 295, 0, 0, 340, 371, 219, 426, 390, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 203, 291, 0, 360, 256, 450, 433, 429, 0, 0, - 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 192, 193, 204, 212, 221, 233, 246, - 254, 264, 268, 271, 274, 275, 278, 283, 300, 305, - 306, 307, 308, 324, 325, 326, 329, 332, 333, 336, - 338, 339, 342, 348, 349, 350, 351, 352, 354, 361, - 365, 373, 374, 375, 376, 377, 378, 379, 383, 384, - 385, 386, 394, 398, 413, 414, 425, 437, 441, 265, - 421, 442, 0, 299, 0, 0, 301, 250, 267, 276, - 0, 432, 395, 207, 367, 257, 197, 224, 211, 231, - 245, 247, 280, 309, 315, 344, 347, 262, 242, 222, - 364, 220, 381, 401, 402, 403, 405, 313, 238, 1088, - 0, 0, 0, 0, 0, 0, 331, 0, 0, 0, - 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, - 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, - 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 225, 195, 328, 392, 255, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 34, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 69, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 1463, 0, 0, 1464, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 1106, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 1105, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 588, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 69, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 1445, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 1075, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 1348, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 1230, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 1228, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 1226, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 1224, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 1222, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 1218, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 1216, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 1214, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 0, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 331, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 0, 0, 0, 0, 0, 289, 0, 0, 0, + 345, 0, 382, 227, 298, 296, 410, 251, 244, 240, + 226, 273, 304, 343, 400, 337, 0, 293, 0, 0, + 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 279, 225, 195, + 328, 392, 255, 1189, 0, 0, 177, 178, 179, 0, + 0, 0, 0, 0, 0, 0, 0, 217, 0, 223, + 0, 0, 0, 0, 237, 277, 243, 236, 407, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 263, 0, 317, 0, 0, 0, 438, 0, 0, + 0, 0, 0, 0, 0, 0, 288, 0, 285, 191, + 205, 0, 0, 327, 366, 372, 0, 0, 0, 228, + 0, 370, 341, 424, 213, 253, 363, 346, 368, 0, + 0, 369, 294, 412, 358, 422, 439, 440, 235, 321, + 430, 404, 436, 449, 206, 232, 335, 397, 427, 388, + 314, 408, 409, 284, 387, 261, 194, 292, 198, 399, + 420, 218, 380, 0, 0, 0, 200, 418, 396, 311, + 281, 282, 199, 0, 362, 239, 259, 230, 330, 415, + 416, 229, 451, 208, 435, 202, 209, 434, 323, 411, + 419, 312, 303, 201, 417, 310, 302, 287, 249, 269, + 356, 297, 357, 270, 319, 318, 320, 0, 196, 0, + 393, 428, 452, 215, 0, 0, 406, 444, 448, 0, + 359, 216, 260, 248, 355, 258, 290, 443, 445, 446, + 447, 214, 353, 266, 334, 423, 252, 431, 322, 210, + 272, 389, 286, 295, 0, 0, 340, 371, 219, 426, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 190, 203, 291, 0, 360, 256, 450, 433, 429, + 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 192, 193, 204, 212, 221, + 233, 246, 254, 264, 268, 271, 274, 275, 278, 283, + 300, 305, 306, 307, 308, 324, 325, 326, 329, 332, + 333, 336, 338, 339, 342, 348, 349, 350, 351, 352, + 354, 361, 365, 373, 374, 375, 376, 377, 378, 379, + 383, 384, 385, 386, 394, 398, 413, 414, 425, 437, + 441, 265, 421, 442, 0, 299, 0, 0, 301, 250, + 267, 276, 0, 432, 395, 207, 367, 257, 197, 224, + 211, 231, 245, 247, 280, 309, 315, 344, 347, 262, + 242, 222, 364, 220, 381, 401, 402, 403, 405, 313, + 238, 1088, 0, 0, 0, 0, 0, 0, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 263, 0, 317, 0, - 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, - 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, - 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, - 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, - 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, - 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, - 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, - 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, - 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, - 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, - 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, - 318, 320, 0, 196, 0, 393, 428, 452, 215, 0, - 0, 406, 444, 448, 0, 359, 216, 260, 248, 355, - 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, - 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, - 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, - 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, + 215, 0, 0, 406, 444, 448, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, - 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, - 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, - 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, - 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, - 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, - 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, - 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, - 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, - 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, - 0, 0, 0, 0, 1079, 241, 0, 0, 0, 0, - 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, - 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, - 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 225, 195, 328, 392, 255, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 0, 0, 0, 0, 0, 0, 1079, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 263, 0, 317, 0, - 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, - 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, - 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, - 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, - 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, - 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, - 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, - 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, - 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, - 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, - 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, - 318, 320, 0, 196, 0, 393, 428, 452, 215, 0, - 0, 406, 444, 448, 0, 359, 216, 260, 248, 355, - 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, - 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, - 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, - 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, + 215, 0, 0, 406, 444, 448, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, - 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, - 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, - 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, - 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, - 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, - 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, - 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, - 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, - 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, - 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, - 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, - 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 225, 195, 328, 392, 255, 0, 0, - 0, 177, 178, 179, 0, 937, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 0, 0, 0, 177, 178, 179, 0, 937, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 263, 0, 317, 0, - 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, - 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, - 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, - 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, - 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, - 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, - 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, - 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, - 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, - 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, - 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, - 318, 320, 0, 196, 0, 393, 428, 452, 215, 0, - 0, 406, 444, 448, 0, 359, 216, 260, 248, 355, - 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, - 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, - 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, - 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, + 215, 0, 0, 406, 444, 448, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, - 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, - 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, - 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, - 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, - 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, - 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, - 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, - 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, - 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, - 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, - 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, - 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 225, 195, 328, 392, 255, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 501, 0, 263, 0, 317, 0, - 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, - 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, - 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, - 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, - 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, - 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, - 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, - 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, - 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, - 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, - 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, - 318, 320, 0, 196, 0, 393, 428, 452, 215, 0, - 0, 406, 444, 448, 0, 359, 216, 260, 248, 355, - 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, - 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, - 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, - 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 501, 0, 263, 0, + 317, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, + 215, 0, 0, 406, 444, 448, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, - 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, - 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, - 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, - 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, - 398, 413, 414, 425, 437, 441, 500, 421, 442, 0, - 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, - 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, - 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, - 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, - 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, - 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, - 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 225, 195, 328, 392, 255, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 500, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 263, 0, 317, 0, - 185, 0, 438, 0, 0, 0, 0, 0, 0, 0, - 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, - 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, - 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, - 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, - 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, - 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, - 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, - 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, - 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, - 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, - 318, 320, 0, 196, 0, 393, 428, 452, 215, 0, - 0, 406, 444, 448, 0, 359, 216, 260, 248, 355, - 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, - 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, - 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, - 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 185, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, + 215, 0, 0, 406, 444, 448, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, - 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, - 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, - 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, - 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, - 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, - 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, - 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, - 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, - 401, 402, 403, 405, 313, 238, 331, 0, 0, 0, - 0, 0, 0, 0, 0, 241, 0, 0, 0, 0, - 0, 289, 0, 0, 0, 345, 0, 382, 227, 298, - 296, 410, 251, 244, 240, 226, 273, 304, 343, 400, - 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 279, 225, 195, 328, 392, 255, 0, 0, - 0, 177, 178, 179, 0, 0, 0, 0, 0, 0, - 0, 0, 217, 0, 223, 0, 0, 0, 0, 237, - 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, 331, 0, + 0, 0, 0, 0, 0, 0, 0, 241, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 345, 0, 382, + 227, 298, 296, 410, 251, 244, 240, 226, 273, 304, + 343, 400, 337, 0, 293, 0, 0, 391, 316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 279, 225, 195, 328, 392, 255, + 0, 0, 0, 177, 178, 179, 0, 0, 0, 0, + 0, 0, 0, 0, 217, 0, 223, 0, 0, 0, + 0, 237, 277, 243, 236, 407, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 263, 0, 317, 0, - 0, 0, 438, 0, 0, 0, 0, 0, 0, 0, - 0, 288, 0, 285, 191, 205, 0, 0, 327, 366, - 372, 0, 0, 0, 228, 0, 370, 341, 424, 213, - 253, 363, 346, 368, 0, 0, 369, 294, 412, 358, - 422, 439, 440, 235, 321, 430, 404, 436, 449, 206, - 232, 335, 397, 427, 388, 314, 408, 409, 284, 387, - 261, 194, 292, 198, 399, 420, 218, 380, 0, 0, - 0, 200, 418, 396, 311, 281, 282, 199, 0, 362, - 239, 259, 230, 330, 415, 416, 229, 451, 208, 435, - 202, 209, 434, 323, 411, 419, 312, 303, 201, 417, - 310, 302, 287, 249, 269, 356, 297, 357, 270, 319, - 318, 320, 0, 196, 0, 393, 428, 452, 215, 0, - 0, 406, 444, 448, 0, 359, 216, 260, 248, 355, - 258, 290, 443, 445, 446, 447, 214, 353, 266, 334, - 423, 252, 431, 322, 210, 272, 389, 286, 295, 0, - 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 190, 203, 291, 0, - 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, + 317, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 285, 191, 205, 0, 0, + 327, 366, 372, 0, 0, 0, 228, 0, 370, 341, + 424, 213, 253, 363, 346, 368, 0, 0, 369, 294, + 412, 358, 422, 439, 440, 235, 321, 430, 404, 436, + 449, 206, 232, 335, 397, 427, 388, 314, 408, 409, + 284, 387, 261, 194, 292, 198, 399, 420, 218, 380, + 0, 0, 0, 200, 418, 396, 311, 281, 282, 199, + 0, 362, 239, 259, 230, 330, 415, 416, 229, 451, + 208, 435, 202, 209, 434, 323, 411, 419, 312, 303, + 201, 417, 310, 302, 287, 249, 269, 356, 297, 357, + 270, 319, 318, 320, 0, 196, 0, 393, 428, 452, + 215, 0, 0, 406, 444, 448, 0, 359, 216, 260, + 248, 355, 258, 290, 443, 445, 446, 447, 214, 353, + 266, 334, 423, 252, 431, 322, 210, 272, 389, 286, + 295, 0, 0, 340, 371, 219, 426, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 203, + 291, 0, 360, 256, 450, 433, 429, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 192, 193, 204, 212, 221, 233, 246, 254, 264, 268, - 271, 274, 275, 278, 283, 300, 305, 306, 307, 308, - 324, 325, 326, 329, 332, 333, 336, 338, 339, 342, - 348, 349, 350, 351, 352, 354, 361, 365, 373, 374, - 375, 376, 377, 378, 379, 383, 384, 385, 386, 394, - 398, 413, 414, 425, 437, 441, 265, 421, 442, 0, - 299, 0, 0, 301, 250, 267, 276, 0, 432, 395, - 207, 367, 257, 197, 224, 211, 231, 245, 247, 280, - 309, 315, 344, 347, 262, 242, 222, 364, 220, 381, - 401, 402, 403, 405, 313, 238, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 192, 193, 204, 212, 221, 233, 246, 254, + 264, 268, 271, 274, 275, 278, 283, 300, 305, 306, + 307, 308, 324, 325, 326, 329, 332, 333, 336, 338, + 339, 342, 348, 349, 350, 351, 352, 354, 361, 365, + 373, 374, 375, 376, 377, 378, 379, 383, 384, 385, + 386, 394, 398, 413, 414, 425, 437, 441, 265, 421, + 442, 0, 299, 0, 0, 301, 250, 267, 276, 0, + 432, 395, 207, 367, 257, 197, 224, 211, 231, 245, + 247, 280, 309, 315, 344, 347, 262, 242, 222, 364, + 220, 381, 401, 402, 403, 405, 313, 238, } var yyPact = [...]int{ - 3853, -1000, -331, 1644, -1000, -1000, -1000, -1000, -1000, -1000, + 3418, -1000, -331, 1633, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1612, 1230, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 515, 1253, 211, 1501, 259, 153, 937, 391, 140, - 26727, 389, 2164, 27177, -1000, 119, -1000, 99, 27177, 115, - 26277, -1000, -1000, -279, 12294, 1453, 37, 29, 27177, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1252, 1573, 1582, - 1609, 1087, 1497, -1000, 10481, 10481, 325, 325, 325, 8681, - -1000, -1000, 16357, 27177, 27177, 1262, 388, 937, 373, 372, - 370, -1000, -109, -1000, -1000, -1000, -1000, 1501, -1000, -1000, - 167, -1000, 242, 1179, -1000, 1174, -1000, 441, 455, 244, - 312, 305, 238, 237, 234, 233, 230, 229, 228, 227, - 251, -1000, 509, 509, -172, -173, 281, 306, 306, 306, - 342, 1478, 1476, -1000, 552, -1000, 509, 509, 150, 509, - 509, 509, 509, 192, 191, 509, 509, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 27177, -1000, 157, 525, 553, 1501, 166, -1000, -1000, -1000, - 27177, 387, 937, 303, -1000, 27177, -1000, 434, -1000, -1000, + -1000, -1000, 1599, 1174, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 597, 1256, 166, 1499, 3630, 209, 926, 401, 118, + 26999, 398, 132, 27449, -1000, 124, -1000, 115, 27449, 120, + 26549, -1000, -1000, -278, 12566, 1437, 45, 43, 27449, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1230, 1574, 1570, + 1597, 1058, 1488, -1000, 10753, 10753, 327, 327, 327, 8953, + -1000, -1000, 16629, 27449, 27449, 1261, 397, 926, 388, 386, + 385, -1000, -91, -1000, -1000, -1000, -1000, 1499, -1000, -1000, + 168, -1000, 197, 1186, -1000, 1177, -1000, 361, 450, 244, + 293, 286, 222, 213, 212, 211, 210, 208, 206, 203, + 248, -1000, 519, 519, -168, -172, 2264, 316, 316, 316, + 358, 1460, 1456, -1000, 515, -1000, 519, 519, 167, 519, + 519, 519, 519, 182, 181, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 27449, -1000, 152, 532, 593, 1499, 161, -1000, -1000, -1000, + 27449, 393, 926, 320, -1000, 27449, -1000, 462, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -3992,23 +4019,23 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 27177, 594, 594, 53, 594, 594, 594, - 594, 103, 467, -1, -1000, 94, 186, 181, 163, 612, - 136, 61, -1000, -1000, 161, 612, 85, -1000, 594, 6825, - 6825, 6825, -1000, 1490, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 340, -1000, -1000, -1000, -1000, 27177, 25827, 286, - 548, -1000, -1000, -1000, 105, -1000, -1000, 1132, 860, -1000, - 12294, 1273, 1187, 1187, -1000, -1000, 413, -1000, -1000, 13644, - 13644, 13644, 13644, 13644, 13644, 13644, 13644, 13644, 13644, -1000, + -1000, -1000, -1000, 27449, 670, 670, 28, 670, 670, 670, + 670, 99, 417, 29, -1000, 85, 164, 158, 169, 629, + 144, 60, -1000, -1000, 149, 629, 91, -1000, 670, 7097, + 7097, 7097, -1000, 1480, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 356, -1000, -1000, -1000, -1000, 27449, 26099, 261, + 591, -1000, -1000, -1000, 19, -1000, -1000, 1091, 664, -1000, + 12566, 1289, 1200, 1200, -1000, -1000, 435, -1000, -1000, 13916, + 13916, 13916, 13916, 13916, 13916, 13916, 13916, 13916, 13916, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1187, 433, -1000, 11844, 1187, 1187, 1187, - 1187, 1187, 1187, 1187, 1187, 12294, 1187, 1187, 1187, 1187, - 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, 1187, - 1187, 1187, -1000, -1000, -1000, 27177, -1000, 1187, 1612, -1000, - 1230, -1000, -1000, -1000, 1504, 12294, 12294, 1612, -1000, 1404, - 10481, -1000, -1000, 1405, -1000, -1000, -1000, -1000, -1000, 676, - 1629, -1000, 14994, 429, 1628, 25377, -1000, 19070, 24927, 1171, - 8217, -31, -1000, -1000, -1000, 547, 18170, -1000, -1000, -1000, + -1000, -1000, -1000, 1200, 457, -1000, 12116, 1200, 1200, 1200, + 1200, 1200, 1200, 1200, 1200, 12566, 1200, 1200, 1200, 1200, + 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, + 1200, 1200, -1000, -1000, -1000, 27449, -1000, 1200, 1599, -1000, + 1174, -1000, -1000, -1000, 1498, 12566, 12566, 1599, -1000, 1398, + 10753, -1000, -1000, 1479, -1000, -1000, -1000, -1000, -1000, 666, + 1615, -1000, 15266, 451, 1614, 25649, -1000, 19342, 25199, 1176, + 8489, -21, -1000, -1000, -1000, 590, 18442, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -4022,186 +4049,187 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1490, 1148, - 27177, -1000, -1000, 4105, 937, -1000, 1251, -1000, 1129, -1000, - 1199, 157, 322, 1270, 937, 937, 937, 322, -1000, -1000, - -1000, 509, 509, 248, 259, 4158, -1000, -1000, -1000, 24470, - 1249, 937, -1000, 1248, -1000, 1519, 319, 493, 493, 937, - -1000, -1000, 27177, 937, 1518, 1517, 27177, 27177, -1000, 24020, - -1000, 23570, 23120, 850, 27177, 22670, 22220, 21770, 21320, 20870, - -1000, 1313, -1000, 1275, -1000, -1000, -1000, 27177, 27177, 27177, - 33, -1000, -1000, 27177, 937, -1000, -1000, 847, 840, 509, - 509, 838, 973, 972, 951, 509, 509, 819, 950, 1032, - 169, 817, 801, 798, 919, 944, 109, 894, 803, 784, - 27177, 1234, -1000, 151, 531, 196, 240, 195, 27177, 137, - 1501, 1452, 1170, 339, 303, 1342, 27177, 1557, 303, -1000, - 7289, -1000, -1000, 943, 12294, -1000, 621, 612, 612, -1000, - -1000, -1000, -1000, -1000, -1000, 594, 27177, 621, -1000, -1000, - -1000, 612, 594, 27177, 594, 594, 594, 594, 612, 594, - 27177, 27177, 27177, 27177, 27177, 27177, 27177, 27177, 27177, 6825, - 6825, 6825, 476, 594, -1000, 1317, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 102, -1000, -1000, -1000, -1000, -1000, 1644, - -1000, -1000, -1000, -106, 1169, 20420, -1000, -283, -284, -285, - -286, -1000, -1000, -1000, -287, -288, -1000, -1000, -1000, 12294, - 12294, 12294, 12294, 920, 485, 13644, 728, 636, 13644, 13644, - 13644, 13644, 13644, 13644, 13644, 13644, 13644, 13644, 13644, 13644, - 13644, 13644, 13644, 786, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 937, -1000, 1642, 967, 967, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 14094, 9131, 7289, 1087, - 1115, 1612, 10481, 10481, 12294, 12294, 11381, 10931, 10481, 1489, - 561, 860, 27177, -1000, -1000, 13194, -1000, -1000, -1000, -1000, - -1000, 865, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 27177, - 27177, 10481, 10481, 10481, 10481, 10481, -1000, 1168, -1000, -169, - 15907, 12294, 1582, 1087, 1405, 1528, 1635, 463, 904, 1167, - -1000, 826, 1582, 17720, 1127, -1000, 1405, -1000, -1000, -1000, - 27177, -1000, -1000, 19970, -1000, -1000, 6361, 27177, 226, 27177, - -1000, 1093, 1368, -1000, -1000, -1000, 1570, 17270, 27177, 1151, - 1141, -1000, -1000, 428, 7753, -31, -1000, 7753, 1156, -1000, - -29, -36, 9581, 444, -1000, -1000, -1000, 281, 14544, 1038, - -1000, 49, -1000, -1000, -1000, 1199, -1000, 1199, 1199, 1199, - 1199, 33, 33, 33, 33, -1000, -1000, -1000, -1000, -1000, - 1232, 1229, -1000, 1199, 1199, 1199, 1199, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1480, 1079, + 27449, -1000, -1000, 2216, 926, -1000, 1255, -1000, 1066, -1000, + 1224, 152, 322, 1286, 926, 926, 926, 322, -1000, -1000, + -1000, 519, 519, 236, 3630, 3949, -1000, -1000, -1000, 24742, + 1254, 926, -1000, 1252, -1000, 1518, 308, 501, 501, 926, + -1000, -1000, 27449, 926, 1515, 1509, 27449, 27449, -1000, 24292, + -1000, 23842, 23392, 853, 27449, 22942, 22492, 22042, 21592, 21142, + -1000, 1359, -1000, 1235, -1000, -1000, -1000, 27449, 27449, 27449, + 38, -1000, -1000, 27449, 926, -1000, -1000, 850, 817, 519, + 519, 812, 958, 957, 954, 519, 519, 810, 951, 947, + 172, 804, 803, 798, 856, 950, 109, 855, 816, 784, + 27449, 1251, -1000, 145, 571, 185, 233, 195, 27449, 146, + 1499, 1432, 1164, 349, 320, 1322, 27449, 1550, 320, -1000, + 7561, -1000, -1000, 948, 12566, -1000, 634, 629, 629, -1000, + -1000, -1000, -1000, -1000, -1000, 670, 27449, 634, -1000, -1000, + -1000, 629, 670, 27449, 670, 670, 670, 670, 629, 670, + 27449, 27449, 27449, 27449, 27449, 27449, 27449, 27449, 27449, 7097, + 7097, 7097, 508, 670, -1000, 1321, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 119, -1000, -1000, -1000, -1000, -1000, 1633, + -1000, -1000, -1000, -109, 1161, 20692, -1000, -282, -283, -284, + -285, -1000, -1000, -1000, -286, -287, -1000, -1000, -1000, 12566, + 12566, 12566, 12566, 780, 498, 13916, 791, 594, 13916, 13916, + 13916, 13916, 13916, 13916, 13916, 13916, 13916, 13916, 13916, 13916, + 13916, 13916, 13916, 559, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 926, -1000, 1630, 927, 927, 479, 479, 479, + 479, 479, 479, 479, 479, 479, 14366, 9403, 7561, 1058, + 1053, 1599, 10753, 10753, 12566, 12566, 11653, 11203, 10753, 1470, + 570, 664, 27449, -1000, -1000, 13466, -1000, -1000, -1000, -1000, + -1000, 973, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 27449, + 27449, 10753, 10753, 10753, 10753, 10753, -1000, 1159, -1000, -165, + 16179, 12566, 1570, 1058, 1479, 1531, 1621, 497, 828, 1157, + -1000, 849, 1570, 17992, 1134, -1000, 1479, -1000, -1000, -1000, + 27449, -1000, -1000, 20242, -1000, -1000, 6633, 27449, 202, 27449, + -1000, 1144, 1382, -1000, -1000, -1000, 1561, 17542, 27449, 1117, + 1084, -1000, -1000, 445, 8025, -21, -1000, 8025, 1138, -1000, + -23, -36, 9853, 473, -1000, -1000, -1000, 2264, 14816, 1047, + -1000, 61, -1000, -1000, -1000, 1224, -1000, 1224, 1224, 1224, + 1224, 38, 38, 38, 38, -1000, -1000, -1000, -1000, -1000, + 1238, 1237, -1000, 1224, 1224, 1224, 1224, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1225, 1225, 1225, 1200, 1200, 291, - -1000, 12294, 143, 27177, 1542, 755, 151, 27177, 571, 1314, - -1000, 27177, 1270, 1270, 1270, 937, 999, 964, -1000, 1164, - -1000, -1000, 1608, -1000, -1000, 497, 596, 595, 484, 27177, - 126, 224, -1000, 289, -1000, 27177, 1211, 1515, 493, 937, - -1000, 937, -1000, -1000, -1000, -1000, 427, -1000, -1000, 937, - 1163, -1000, 1172, 717, 592, 635, 586, 1163, -1000, -1000, - -145, 1163, -1000, 1163, -1000, 1163, -1000, 1163, -1000, 1163, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 540, 27177, - 126, 786, -1000, 338, -1000, -1000, 786, 786, -1000, -1000, - -1000, -1000, 929, 928, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1236, 1236, 1236, 1225, 1225, 298, + -1000, 12566, 150, 27449, 1544, 781, 145, 27449, 600, 1319, + -1000, 27449, 1286, 1286, 1286, 926, 897, 891, -1000, 1156, + -1000, -1000, 1596, -1000, -1000, 460, 628, 611, 502, 27449, + 133, 196, -1000, 272, -1000, 27449, 1231, 1508, 501, 926, + -1000, 926, -1000, -1000, -1000, -1000, 442, -1000, -1000, 926, + 1155, -1000, 1100, 723, 610, 721, 609, 1155, -1000, -1000, + -121, 1155, -1000, 1155, -1000, 1155, -1000, 1155, -1000, 1155, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 495, 27449, + 133, 559, -1000, 347, -1000, -1000, 559, 559, -1000, -1000, + -1000, -1000, 942, 934, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -329, 27177, 346, 129, 162, 27177, 27177, 27177, 27177, 27177, - 404, -1000, -1000, -1000, 176, 27177, 27177, 27177, 27177, 380, - -1000, -1000, 937, -1000, -1000, -1000, -1000, 860, 27177, -1000, - -1000, 594, 594, -1000, -1000, 27177, 594, -1000, -1000, -1000, - -1000, -1000, -1000, 594, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 899, -1000, - 27177, 27177, -1000, -1000, -1000, -1000, -1000, 79, -39, 165, - -1000, -1000, -1000, -1000, 1576, -1000, 860, 485, 554, 513, - -1000, -1000, 802, -1000, -1000, 2488, -1000, -1000, -1000, -1000, - 728, 13644, 13644, 13644, 1188, 2488, 2470, 648, 866, 447, - 658, 658, 445, 445, 445, 445, 445, 703, 703, -1000, - -1000, -1000, -1000, 865, -1000, -1000, -1000, 865, 10481, 10481, - 1162, 1187, 424, -1000, 1252, -1000, -1000, 1582, 1079, 1079, - 771, 863, 587, 1627, 1079, 574, 1625, 1079, 1079, 10481, - -1000, -1000, 568, -1000, 12294, 865, -1000, 1231, 1159, 1157, - 1079, 865, 865, 1079, 1079, 27177, -1000, -278, -1000, -82, - 456, 1187, -1000, 19520, -1000, -1000, 865, 1132, 1504, -1000, - -1000, 1438, -1000, 1401, 12294, 12294, 12294, -1000, -1000, -1000, - 1504, 1585, -1000, 1410, 1409, 1620, 10481, 19070, 1405, -1000, - -1000, -1000, 423, 1620, 1113, 1187, -1000, 27177, 19070, 19070, - 19070, 19070, 19070, -1000, 1388, 1380, -1000, 1378, 1377, 1384, - 27177, -1000, 1109, 1087, 17270, 226, 1142, 19070, 27177, -1000, - -1000, 19070, 27177, 5897, -1000, 1156, -31, -90, -1000, -1000, - -1000, -1000, 860, -1000, 959, -1000, 304, -1000, 300, -1000, - -1000, -1000, -1000, 855, 43, -1000, -1000, 33, 33, -1000, - -1000, 444, 687, 444, 444, 444, 892, 892, -1000, -1000, - -1000, -1000, -1000, 743, -1000, -1000, -1000, 740, -1000, -1000, - 869, 1303, 143, -1000, -1000, 509, 891, 1458, -1000, -1000, - 1016, 344, -1000, 1545, 27177, -1000, 1311, 1306, 1304, -1000, - -1000, -1000, -1000, -1000, 3605, 27177, 1100, -1000, 124, 27177, - 1003, 27177, -1000, 1097, 27177, -1000, 937, -1000, -1000, 7289, - -1000, 27177, 1187, -1000, -1000, -1000, -1000, 375, 1500, 1498, - 126, 124, 444, 937, -1000, -1000, -1000, -1000, -1000, -332, - 1083, 27177, 139, -1000, 1202, 977, -1000, 1195, -1000, -1000, - -1000, -1000, 131, 184, 170, 336, -1000, 377, 1303, 27177, - -1000, -1000, -1000, -1000, 612, -1000, -1000, 612, -1000, -1000, - -1000, -1000, -1000, -1000, 1495, -44, -304, -1000, -301, -1000, - -1000, -1000, -1000, 1188, 2488, 2345, -1000, 13644, 13644, -1000, - -1000, 1079, 1079, 10481, 7289, 1612, 1504, -1000, -1000, 395, - 786, 395, 13644, 13644, -1000, 13644, 13644, -1000, -121, 1153, - 541, -1000, 12294, 848, -1000, -1000, 13644, 13644, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 369, 368, 361, - 27177, -1000, -1000, -1000, 787, 887, 1399, 860, 860, -1000, - -1000, 27177, -1000, -1000, -1000, -1000, 1618, 12294, -1000, 1155, - -1000, 5433, 1582, 1302, 27177, 1187, 1644, 15457, 27177, 1091, - -1000, 518, 1368, 1272, 1300, 1355, -1000, -1000, -1000, -1000, - 1376, -1000, 1354, -1000, -1000, -1000, -1000, -1000, 1087, 1620, - 19070, 1064, -1000, 1064, -1000, 422, -1000, -1000, -1000, -64, - -77, -1000, -1000, -1000, 281, -1000, -1000, -1000, 606, 13644, - 1634, -1000, 878, 1511, -1000, 1509, -1000, -1000, 444, 444, - -1000, -1000, -1000, -1000, -1000, -1000, 1066, -1000, 1055, 1152, - 1053, 50, -1000, 1259, 1482, 509, 509, -1000, 737, -1000, - 937, -1000, 27177, -1000, -1000, 27177, 27177, 27177, 1594, 1150, - -1000, 27177, -1000, -1000, 27177, -1000, -1000, 1408, 143, 1050, - -1000, -1000, -1000, 224, 27177, -1000, 967, 124, -1000, -1000, - -1000, -1000, -1000, -1000, 1192, -1000, -1000, -1000, 996, -1000, - -154, 937, 27177, 27177, 27177, -1000, 27177, -1000, -1000, -1000, - 594, 594, -1000, 1481, -1000, 937, -1000, 13644, 2488, 2488, - -1000, -1000, 865, -1000, 1582, -1000, 865, 1199, 1199, -1000, - 1199, 1200, -1000, 1199, 91, 1199, 90, 865, 865, 2291, - 2215, 2137, 2094, 1187, -116, -1000, 860, 12294, 1731, 1484, - 1187, 1187, 1187, 1031, 876, 33, -1000, -1000, -1000, 1614, - 1593, 860, -1000, -1000, -1000, 1521, 1008, 1089, -1000, -1000, - 10031, 1047, 1407, 411, 1031, 1612, 27177, 12294, -1000, -1000, - 12294, 1198, -1000, 12294, -1000, -1000, -1000, 1612, 1612, 1064, - -1000, -1000, 457, -1000, -1000, -1000, -1000, -1000, 2488, -52, - -1000, -1000, -1000, -1000, -1000, 33, 870, 33, 722, -1000, - 716, -1000, -1000, -212, -1000, -1000, 1271, 1282, -1000, -1000, - 1192, -1000, -1000, -1000, 27177, 27177, -1000, -1000, 208, -1000, - 265, 1028, -1000, -170, -1000, -1000, 1565, 27177, -1000, -1000, - 7289, -1000, -1000, 1190, 1266, -1000, -1000, -1000, -1000, -1000, - -1000, 2488, -1000, 1504, -1000, -1000, 222, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 13644, 13644, 13644, 13644, 13644, - 1582, 856, 860, 13644, 13644, 18620, 27177, 27177, 16807, 33, - 30, -1000, 12294, 12294, 1508, -1000, 1187, -1000, 1189, 27177, - 1187, 27177, -1000, 1582, -1000, 860, 860, 27177, 860, 1582, - -1000, -1000, 444, -1000, 444, 986, 871, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1563, 1150, -1000, 205, 27177, - -1000, 224, -1000, -177, -178, 1230, 1025, 1145, -1000, 500, - 27177, 27177, -1000, -1000, -1000, 1231, 1231, 1231, 1231, 123, - 865, -1000, 1231, 1231, 1019, -1000, 1019, 1019, 456, -272, - -1000, 1447, 1445, 860, 1132, 1633, -1000, 1187, 1644, 390, - 1089, -1000, -1000, 1014, -1000, -1000, -1000, -1000, -1000, 1230, - 1187, 1184, -1000, -1000, -1000, 182, -1000, 7289, 4969, 990, - -1000, -1000, -1000, -1000, -1000, 865, 146, -163, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 30, 296, -1000, 1419, 1417, - 1591, 27177, 1089, 27177, -1000, 182, 12744, 27177, -1000, -48, - -1000, -1000, -1000, -1000, -1000, 1195, -1000, 1397, -127, -166, - 1424, 1427, 1427, 1445, 1589, 1441, 1432, -1000, 849, 1074, - -1000, -1000, 1231, 865, 985, 288, -1000, -1000, -154, -1000, - 1393, -1000, 1421, 701, -1000, -1000, -1000, -1000, 788, -1000, - 1586, 1584, -1000, -1000, -1000, 1299, 154, -1000, -160, -1000, - 646, -1000, -1000, -1000, 772, 718, 1283, -1000, 1624, -1000, - -164, -1000, -1000, -1000, -1000, -1000, 1626, 469, 469, -167, - -1000, -1000, -1000, 284, 759, -1000, -1000, -1000, -1000, -1000, + -330, 27449, 363, 135, 160, 27449, 27449, 27449, 27449, 27449, + 420, -1000, -1000, -1000, 176, 27449, 27449, 27449, 27449, 394, + -1000, -1000, 926, -1000, -1000, -1000, -1000, 664, 27449, -1000, + -1000, 670, 670, -1000, -1000, 27449, 670, -1000, -1000, -1000, + -1000, -1000, -1000, 670, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 933, -1000, + 27449, 27449, -1000, -1000, -1000, -1000, -1000, 70, -38, 193, + -1000, -1000, -1000, -1000, 1566, -1000, 664, 498, 713, 566, + -1000, -1000, 753, -1000, -1000, 2367, -1000, -1000, -1000, -1000, + 791, 13916, 13916, 13916, 524, 2367, 2412, 648, 866, 479, + 601, 601, 470, 470, 470, 470, 470, 592, 592, -1000, + -1000, -1000, -1000, 973, -1000, -1000, -1000, 973, 10753, 10753, + 1152, 1200, 439, -1000, 1230, -1000, -1000, 1570, 1032, 1032, + 724, 735, 567, 1613, 1032, 562, 1611, 1032, 1032, 10753, + -1000, -1000, 683, -1000, 12566, 973, -1000, 616, 1150, 1149, + 1032, 973, 973, 1032, 1032, 27449, -1000, -274, -1000, -67, + 448, 1200, -1000, 19792, -1000, -1000, 973, 1091, 1498, -1000, + -1000, 1430, -1000, 1395, 12566, 12566, 12566, -1000, -1000, -1000, + 1498, 1588, -1000, 1408, 1407, 1606, 10753, 19342, 1479, -1000, + -1000, -1000, 438, 1606, 1120, 1200, -1000, 27449, 19342, 19342, + 19342, 19342, 19342, -1000, 1380, 1378, -1000, 1335, 1334, 1374, + 27449, -1000, 1042, 1058, 17542, 202, 1089, 19342, 27449, -1000, + -1000, 19342, 27449, 6169, -1000, 1138, -21, -28, -1000, -1000, + -1000, -1000, 664, -1000, 881, -1000, 2244, -1000, 290, -1000, + -1000, -1000, -1000, 373, 40, -1000, -1000, 38, 38, -1000, + -1000, 473, 682, 473, 473, 473, 932, 932, -1000, -1000, + -1000, -1000, -1000, 768, -1000, -1000, -1000, 766, -1000, -1000, + 686, 1337, 150, -1000, -1000, 519, 920, 1446, -1000, -1000, + 1037, 362, -1000, 1543, 27449, -1000, 1318, 1300, 1299, -1000, + -1000, -1000, -1000, -1000, 3795, 27449, 1040, -1000, 130, 27449, + 1002, 27449, -1000, 1036, 27449, -1000, 926, -1000, -1000, 7561, + -1000, 27449, 1200, -1000, -1000, -1000, -1000, 374, 1497, 1496, + 133, 130, 473, 926, -1000, -1000, -1000, -1000, -1000, -333, + 1034, 27449, 142, -1000, 1229, 815, -1000, 1266, -1000, -1000, + -1000, -1000, 140, 179, 170, 331, -1000, 380, 1337, 27449, + -1000, -1000, -1000, -1000, 629, -1000, -1000, 629, -1000, -1000, + -1000, -1000, -1000, -1000, 1489, -46, -304, -1000, -300, -1000, + -1000, -1000, -1000, 524, 2367, 2184, -1000, 13916, 13916, -1000, + -1000, 1032, 1032, 10753, 7561, 1599, 1498, -1000, -1000, 306, + 559, 306, 13916, 13916, -1000, 13916, 13916, -1000, -113, 1151, + 563, -1000, 12566, 561, -1000, -1000, 13916, 13916, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 384, 382, 375, + 27449, -1000, -1000, -1000, 836, 906, 1391, 664, 664, -1000, + -1000, 27449, -1000, -1000, -1000, -1000, 1604, 12566, -1000, 1113, + -1000, 5705, 1570, 1297, 27449, 1200, 1633, 15729, 27449, 1130, + -1000, 533, 1382, 1290, 1294, 1187, -1000, -1000, -1000, -1000, + 1367, -1000, 1333, -1000, -1000, -1000, -1000, -1000, 1058, 1606, + 19342, 1077, -1000, 1077, -1000, 432, -1000, -1000, -1000, -63, + -77, -1000, -1000, -1000, 2264, -1000, -1000, -1000, 644, 13916, + 1619, -1000, 899, 1507, -1000, 1503, -1000, -1000, 473, 473, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1029, -1000, 1025, + 1112, 1019, 57, -1000, 1168, 1476, 519, 519, -1000, 747, + -1000, 926, -1000, 27449, -1000, -1000, 27449, 27449, 27449, 1594, + 1105, -1000, 27449, -1000, -1000, 27449, -1000, -1000, 1406, 150, + 999, -1000, -1000, -1000, 196, 27449, -1000, 927, 130, -1000, + -1000, -1000, -1000, -1000, -1000, 1211, -1000, -1000, -1000, 1000, + -1000, -123, 926, 27449, 27449, 27449, -1000, 27449, -1000, -1000, + -1000, 670, 670, -1000, 1465, -1000, 926, -1000, 13916, 2367, + 2367, -1000, -1000, 973, -1000, 1570, -1000, 973, 1224, 1224, + -1000, 1224, 1225, -1000, 1224, 110, 1224, 102, 973, 973, + 2097, 2074, 1734, 1215, 1200, -105, -1000, 664, 12566, 1629, + 1191, 1200, 1200, 1200, 990, 898, 38, -1000, -1000, -1000, + 1601, 1593, 664, -1000, -1000, -1000, 1500, 1097, 1075, -1000, + -1000, 10303, 993, 1404, 430, 990, 1599, 27449, 12566, -1000, + -1000, 12566, 1213, -1000, 12566, -1000, -1000, -1000, 1599, 1599, + 1077, -1000, -1000, 465, -1000, -1000, -1000, -1000, -1000, 2367, + -22, -1000, -1000, -1000, -1000, -1000, 38, 890, 38, 734, + -1000, 712, -1000, -1000, -213, -1000, -1000, 1135, 1329, -1000, + -1000, 1211, -1000, -1000, -1000, 27449, 27449, -1000, -1000, 180, + -1000, 225, 987, -1000, -170, -1000, -1000, 1556, 27449, -1000, + -1000, 7561, -1000, -1000, 1203, 1269, -1000, -1000, -1000, -1000, + -1000, -1000, 2367, -1000, 1498, -1000, -1000, 247, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 13916, 13916, 13916, 13916, + 13916, 1570, 884, 664, 13916, 13916, 18892, 27449, 27449, 17079, + 38, 36, -1000, 12566, 12566, 1502, -1000, 1200, -1000, 1163, + 27449, 1200, 27449, -1000, 1570, -1000, 664, 664, 27449, 664, + 1570, -1000, -1000, 473, -1000, 473, 996, 994, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1555, 1105, -1000, 175, + 27449, -1000, 196, -1000, -176, -178, 1174, 985, 1101, -1000, + 518, 27449, 27449, -1000, -1000, -1000, 616, 616, 616, 616, + 125, 973, -1000, 616, 616, 978, -1000, 978, 978, 448, + -264, -1000, 1433, 1412, 664, 1091, 1618, -1000, 1200, 1633, + 423, 1075, -1000, -1000, 970, -1000, -1000, -1000, -1000, -1000, + 1174, 1200, 1198, -1000, -1000, -1000, 174, -1000, 7561, 5241, + 967, -1000, -1000, -1000, -1000, -1000, 973, 177, -152, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 36, 288, -1000, 1419, + 1412, -1000, 1592, 1424, 1590, -1000, 27449, 1075, 27449, -1000, + 174, 13016, 27449, -1000, -54, -1000, -1000, -1000, -1000, -1000, + 1266, -1000, 1341, -118, -160, 1416, 1418, 1418, 1419, -1000, + 1589, 1584, -1000, 883, 1580, 882, 861, -1000, -1000, 616, + 973, 965, 278, -1000, -1000, -123, -1000, 1303, -1000, 1413, + 736, -1000, -1000, -1000, -1000, 876, 874, -1000, 860, -1000, + -1000, -1000, 1293, 147, -1000, -145, -1000, 701, -1000, -1000, + -1000, -1000, -1000, 1292, -1000, 1610, -1000, -156, -1000, -1000, + -1000, 1612, 413, 413, -164, -1000, -1000, -1000, 214, 811, + -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int{ - 0, 1918, 1917, 12, 87, 79, 1916, 1915, 1914, 1913, - 132, 130, 129, 1912, 1902, 1897, 1896, 1895, 1894, 1893, - 1892, 1891, 1890, 1889, 1888, 63, 120, 36, 41, 124, - 1885, 1884, 47, 1880, 1879, 1878, 121, 119, 483, 1877, - 118, 1876, 1875, 1873, 1872, 1859, 1855, 1854, 1853, 1848, - 1841, 1840, 1837, 1836, 196, 1833, 1832, 10, 1826, 50, - 1824, 1819, 1818, 1817, 1816, 82, 1815, 1814, 1811, 115, - 1810, 1809, 49, 109, 62, 76, 1805, 1804, 73, 814, - 1802, 97, 127, 1800, 867, 1799, 37, 74, 71, 1797, - 44, 1796, 1795, 100, 1794, 1793, 1792, 70, 1791, 1790, - 2905, 1789, 77, 80, 16, 27, 1787, 1786, 1785, 1784, - 31, 1541, 1783, 1782, 23, 1778, 1776, 134, 1773, 84, - 24, 1772, 14, 15, 20, 1771, 86, 1770, 19, 52, - 29, 1769, 83, 1768, 1767, 1766, 1765, 58, 1764, 75, - 102, 40, 1756, 1754, 5, 9, 1750, 1749, 1748, 1743, - 1740, 1735, 3, 1734, 1732, 1730, 39, 1727, 6, 18, - 68, 46, 26, 8, 1723, 131, 1720, 25, 123, 67, - 111, 1719, 1718, 1716, 926, 72, 140, 1715, 1714, 35, - 1713, 116, 125, 1711, 1475, 1709, 1705, 66, 1091, 2444, - 17, 114, 1704, 1698, 2124, 57, 78, 21, 1696, 1695, - 1693, 128, 113, 60, 803, 45, 1692, 1691, 1690, 1689, - 1688, 1687, 1686, 85, 34, 43, 103, 28, 1685, 1684, - 1683, 64, 38, 1681, 108, 104, 65, 96, 1680, 112, - 92, 55, 1679, 42, 1677, 1675, 1674, 1673, 33, 1672, - 1670, 1669, 1668, 99, 88, 56, 30, 1666, 32, 101, - 110, 106, 1664, 22, 122, 11, 1663, 2, 0, 1662, - 7, 133, 1473, 105, 1661, 1660, 1, 1659, 4, 1658, - 1657, 81, 1655, 1654, 1652, 1651, 2826, 327, 117, 1650, - 126, + 0, 1902, 1894, 18, 91, 83, 1893, 1892, 1891, 1890, + 129, 128, 127, 1889, 1888, 1887, 1886, 1885, 1884, 1883, + 1882, 1880, 1879, 1878, 1876, 62, 118, 36, 43, 123, + 1875, 1859, 52, 1856, 1854, 1853, 121, 119, 466, 1850, + 117, 1847, 1842, 1841, 1837, 1836, 1835, 1834, 1833, 1831, + 1830, 1829, 1825, 1824, 196, 1823, 1822, 9, 1821, 55, + 1818, 1816, 1815, 1814, 1812, 85, 1811, 1806, 1805, 111, + 1799, 1798, 49, 86, 50, 75, 1797, 1796, 77, 845, + 1793, 103, 126, 1791, 177, 1789, 66, 72, 100, 1787, + 37, 1786, 1784, 108, 1783, 1782, 1781, 73, 1780, 1776, + 3262, 1774, 74, 76, 16, 40, 1771, 1756, 1755, 1753, + 30, 405, 1752, 1750, 28, 1749, 1746, 142, 1745, 84, + 32, 1744, 12, 22, 17, 1743, 88, 1742, 11, 63, + 33, 1741, 82, 1740, 1739, 1738, 1735, 25, 1733, 78, + 106, 34, 1730, 1727, 5, 13, 1726, 1725, 1724, 1723, + 1721, 1720, 10, 1718, 3, 1717, 26, 1716, 8, 23, + 70, 46, 29, 7, 1715, 132, 1713, 27, 130, 68, + 113, 1710, 1707, 1704, 955, 71, 140, 1698, 1696, 44, + 1695, 116, 124, 1692, 1474, 1690, 1689, 57, 1091, 2183, + 15, 114, 1688, 1687, 1734, 56, 79, 20, 1686, 1685, + 1684, 125, 137, 60, 871, 47, 1682, 1679, 1678, 1677, + 1676, 1675, 1674, 87, 31, 21, 107, 39, 1673, 1672, + 1670, 65, 38, 1669, 110, 109, 80, 96, 1668, 115, + 92, 67, 1666, 42, 1663, 1662, 1661, 1660, 45, 1659, + 1658, 1657, 1656, 102, 104, 64, 41, 1655, 35, 101, + 99, 89, 1653, 24, 122, 14, 1652, 4, 0, 1651, + 6, 131, 1472, 112, 1650, 1649, 1, 1648, 2, 1645, + 1644, 81, 1643, 1642, 1641, 1640, 3115, 1438, 120, 1639, + 133, } var yyR1 = [...]int{ @@ -4226,81 +4254,81 @@ var yyR1 = [...]int{ 211, 211, 211, 211, 211, 211, 212, 212, 212, 212, 212, 212, 212, 212, 221, 221, 213, 213, 216, 216, 217, 217, 217, 218, 218, 219, 219, 214, 214, 214, - 215, 215, 215, 224, 248, 248, 247, 247, 245, 245, - 245, 245, 233, 233, 242, 242, 242, 242, 242, 232, - 232, 228, 228, 228, 229, 229, 230, 230, 227, 227, - 231, 231, 244, 244, 243, 225, 225, 226, 226, 250, - 250, 250, 250, 251, 267, 268, 266, 266, 266, 266, - 266, 59, 59, 59, 183, 183, 183, 240, 240, 239, - 239, 239, 241, 241, 238, 238, 238, 238, 238, 238, + 214, 215, 215, 215, 224, 248, 248, 247, 247, 245, + 245, 245, 245, 233, 233, 242, 242, 242, 242, 242, + 232, 232, 228, 228, 228, 229, 229, 230, 230, 227, + 227, 231, 231, 244, 244, 243, 225, 225, 226, 226, + 250, 250, 250, 250, 251, 267, 268, 266, 266, 266, + 266, 266, 59, 59, 59, 183, 183, 183, 240, 240, + 239, 239, 239, 241, 241, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 178, 178, 178, 265, 265, 265, 265, - 265, 265, 264, 264, 264, 237, 237, 237, 263, 263, - 129, 129, 130, 130, 30, 30, 30, 30, 30, 30, - 29, 29, 29, 25, 25, 25, 25, 25, 25, 25, + 238, 238, 238, 238, 178, 178, 178, 265, 265, 265, + 265, 265, 265, 264, 264, 264, 237, 237, 237, 263, + 263, 129, 129, 130, 130, 30, 30, 30, 30, 30, + 30, 29, 29, 29, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 31, 31, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 16, 16, 16, 16, + 25, 25, 25, 25, 25, 25, 31, 31, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 254, 254, 254, 254, 254, 254, 254, 254, 254, + 16, 16, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 220, 220, 220, 252, 252, 253, 253, - 17, 22, 22, 18, 18, 18, 18, 19, 19, 41, + 254, 254, 254, 254, 220, 220, 220, 252, 252, 253, + 253, 17, 22, 22, 18, 18, 18, 18, 19, 19, + 41, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 269, 269, 177, 177, 185, 185, - 176, 176, 175, 175, 175, 179, 179, 179, 180, 180, - 273, 273, 273, 43, 43, 45, 45, 46, 47, 47, - 199, 199, 200, 200, 48, 49, 60, 60, 60, 60, - 60, 60, 62, 62, 62, 7, 7, 7, 7, 56, - 56, 56, 6, 6, 44, 44, 51, 270, 270, 271, - 272, 272, 272, 272, 52, 20, 20, 20, 20, 20, - 20, 77, 77, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 71, 71, 71, 66, 66, - 279, 54, 55, 55, 69, 69, 69, 63, 63, 63, - 68, 68, 68, 74, 74, 76, 76, 76, 76, 76, - 78, 78, 78, 78, 78, 78, 78, 73, 73, 75, - 75, 75, 75, 192, 192, 192, 191, 191, 85, 85, - 86, 86, 87, 87, 88, 88, 88, 127, 103, 103, - 159, 159, 158, 158, 161, 161, 89, 89, 89, 89, - 90, 90, 91, 91, 92, 92, 198, 198, 197, 197, - 197, 196, 196, 96, 96, 96, 98, 97, 97, 97, - 97, 99, 99, 101, 101, 100, 100, 102, 104, 104, - 104, 104, 104, 105, 105, 84, 84, 84, 84, 84, - 84, 84, 84, 173, 173, 107, 107, 106, 106, 106, - 106, 106, 106, 106, 106, 106, 106, 118, 118, 118, - 118, 118, 118, 108, 108, 108, 108, 108, 108, 108, - 72, 72, 119, 119, 119, 126, 120, 120, 111, 111, + 42, 42, 42, 42, 42, 269, 269, 177, 177, 185, + 185, 176, 176, 175, 175, 175, 179, 179, 179, 180, + 180, 273, 273, 273, 43, 43, 45, 45, 46, 47, + 47, 199, 199, 200, 200, 48, 49, 60, 60, 60, + 60, 60, 60, 62, 62, 62, 7, 7, 7, 7, + 56, 56, 56, 6, 6, 44, 44, 51, 270, 270, + 271, 272, 272, 272, 272, 52, 20, 20, 20, 20, + 20, 20, 77, 77, 65, 65, 65, 65, 65, 65, + 65, 65, 65, 65, 65, 65, 71, 71, 71, 66, + 66, 279, 54, 55, 55, 69, 69, 69, 63, 63, + 63, 68, 68, 68, 74, 74, 76, 76, 76, 76, + 76, 78, 78, 78, 78, 78, 78, 78, 73, 73, + 75, 75, 75, 75, 192, 192, 192, 191, 191, 85, + 85, 86, 86, 87, 87, 88, 88, 88, 127, 103, + 103, 159, 159, 158, 158, 161, 161, 89, 89, 89, + 89, 90, 90, 91, 91, 92, 92, 198, 198, 197, + 197, 197, 196, 196, 96, 96, 96, 98, 97, 97, + 97, 97, 99, 99, 101, 101, 100, 100, 102, 104, + 104, 104, 104, 104, 105, 105, 84, 84, 84, 84, + 84, 84, 84, 84, 173, 173, 107, 107, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 118, 118, + 118, 118, 118, 118, 108, 108, 108, 108, 108, 108, + 108, 72, 72, 119, 119, 119, 126, 120, 120, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 115, 115, 115, 115, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 114, + 111, 111, 111, 115, 115, 115, 115, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 280, 280, 117, 116, 116, - 116, 116, 116, 116, 116, 67, 67, 67, 67, 67, - 203, 203, 203, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 133, 133, 64, 64, - 131, 131, 132, 134, 134, 128, 128, 128, 110, 110, - 110, 110, 110, 110, 110, 110, 112, 112, 112, 135, - 135, 136, 136, 137, 137, 138, 138, 139, 140, 140, - 140, 141, 141, 141, 141, 32, 32, 32, 32, 32, - 27, 27, 27, 27, 28, 28, 28, 79, 79, 79, - 79, 81, 81, 80, 80, 57, 57, 58, 58, 58, - 82, 82, 83, 83, 83, 83, 156, 156, 156, 142, - 142, 142, 142, 148, 148, 148, 144, 144, 146, 146, - 146, 147, 147, 147, 145, 151, 151, 153, 153, 152, - 152, 150, 150, 155, 155, 154, 154, 149, 149, 109, - 109, 109, 109, 109, 157, 157, 157, 157, 162, 162, - 122, 122, 124, 124, 123, 125, 163, 163, 167, 164, - 164, 168, 168, 168, 168, 168, 165, 165, 166, 166, - 193, 193, 193, 172, 172, 184, 184, 181, 181, 182, - 182, 174, 174, 186, 186, 186, 53, 121, 121, 249, - 249, 246, 189, 189, 190, 190, 194, 194, 195, 195, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 114, 114, 114, 114, 114, 114, 280, 280, 117, 116, + 116, 116, 116, 116, 116, 116, 67, 67, 67, 67, + 67, 203, 203, 203, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 133, 133, 64, + 64, 131, 131, 132, 134, 134, 128, 128, 128, 110, + 110, 110, 110, 110, 110, 110, 110, 112, 112, 112, + 135, 135, 136, 136, 137, 137, 138, 138, 139, 140, + 140, 140, 141, 141, 141, 141, 32, 32, 32, 32, + 32, 27, 27, 27, 27, 28, 28, 28, 79, 79, + 79, 79, 81, 81, 80, 80, 57, 57, 58, 58, + 58, 82, 82, 83, 83, 83, 83, 156, 156, 156, + 142, 142, 142, 142, 148, 148, 148, 144, 144, 146, + 146, 146, 147, 147, 147, 145, 153, 153, 155, 155, + 154, 154, 150, 150, 151, 151, 152, 152, 152, 149, + 149, 109, 109, 109, 109, 109, 157, 157, 157, 157, + 162, 162, 122, 122, 124, 124, 123, 125, 163, 163, + 167, 164, 164, 168, 168, 168, 168, 168, 165, 165, + 166, 166, 193, 193, 193, 172, 172, 184, 184, 181, + 181, 182, 182, 174, 174, 186, 186, 186, 53, 121, + 121, 249, 249, 246, 189, 189, 190, 190, 194, 194, + 195, 195, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, @@ -4313,7 +4341,7 @@ var yyR1 = [...]int{ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 188, 188, 188, 188, + 187, 187, 187, 187, 187, 187, 187, 187, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, @@ -4339,8 +4367,8 @@ var yyR1 = [...]int{ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, 276, - 277, 201, 202, 202, 202, + 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, + 188, 276, 277, 201, 202, 202, 202, } var yyR2 = [...]int{ @@ -4365,80 +4393,80 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 0, 3, 0, 5, 0, 3, 5, 0, 1, 0, 1, 0, 2, 2, - 0, 2, 2, 5, 0, 1, 1, 2, 1, 3, - 2, 3, 0, 1, 3, 3, 3, 4, 2, 0, - 2, 1, 1, 1, 1, 1, 0, 1, 1, 1, - 0, 1, 1, 3, 3, 3, 1, 3, 1, 10, - 11, 11, 12, 5, 3, 3, 1, 1, 2, 2, - 2, 0, 1, 1, 0, 1, 2, 0, 1, 1, - 3, 2, 1, 2, 3, 3, 4, 4, 3, 3, - 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, + 2, 0, 2, 2, 5, 0, 1, 1, 2, 1, + 3, 2, 3, 0, 1, 3, 3, 3, 4, 2, + 0, 2, 1, 1, 1, 1, 1, 0, 1, 1, + 1, 0, 1, 1, 3, 3, 3, 1, 3, 1, + 10, 11, 11, 12, 5, 3, 3, 1, 1, 2, + 2, 2, 0, 1, 1, 0, 1, 2, 0, 1, + 1, 3, 2, 1, 2, 3, 3, 4, 4, 3, + 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 4, 5, 0, 2, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 0, 2, 0, 2, 0, 1, 5, 1, 3, 7, - 1, 3, 3, 1, 2, 2, 2, 5, 5, 5, - 6, 6, 5, 5, 2, 2, 2, 2, 3, 3, - 3, 4, 1, 3, 5, 1, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 2, 4, 4, 2, - 10, 3, 6, 7, 5, 5, 5, 12, 7, 5, - 9, 5, 3, 7, 4, 4, 4, 4, 3, 3, - 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 2, 0, 2, 2, 1, 3, 8, 8, - 3, 3, 5, 6, 6, 5, 5, 3, 2, 3, - 3, 3, 7, 3, 3, 3, 3, 4, 7, 5, - 2, 4, 4, 4, 4, 4, 5, 5, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, - 4, 2, 4, 5, 4, 4, 3, 3, 5, 2, - 3, 3, 3, 3, 1, 1, 0, 1, 0, 1, - 1, 1, 0, 2, 2, 0, 2, 2, 0, 2, - 0, 1, 1, 2, 1, 1, 2, 1, 1, 5, - 0, 1, 0, 1, 2, 3, 0, 3, 3, 3, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 3, 3, 2, 2, 3, 1, 3, 2, - 1, 2, 1, 2, 2, 3, 3, 6, 4, 7, - 6, 1, 3, 2, 2, 2, 2, 1, 1, 1, - 3, 2, 1, 1, 1, 0, 1, 1, 0, 3, - 0, 2, 0, 2, 1, 2, 2, 0, 1, 1, - 0, 1, 1, 0, 1, 0, 1, 2, 3, 4, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 2, 3, 5, 0, 1, 2, 1, 1, 0, 2, - 1, 3, 1, 1, 1, 3, 3, 3, 3, 7, - 0, 3, 1, 3, 1, 3, 4, 4, 4, 3, - 2, 4, 0, 1, 0, 2, 0, 1, 0, 1, - 2, 1, 1, 1, 2, 2, 1, 2, 3, 2, - 3, 2, 2, 2, 1, 1, 3, 3, 0, 5, - 4, 5, 5, 0, 2, 1, 3, 3, 3, 2, - 3, 1, 2, 0, 3, 1, 1, 3, 3, 4, - 4, 5, 3, 4, 5, 6, 2, 1, 2, 1, - 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 0, 2, 1, 1, 1, 3, 1, 3, 1, 1, - 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 1, 1, - 1, 1, 4, 5, 5, 6, 4, 4, 6, 6, - 6, 8, 8, 8, 8, 9, 8, 5, 4, 2, + 3, 3, 4, 5, 0, 2, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 0, 2, 0, 2, 0, 1, 5, 1, 3, + 7, 1, 3, 3, 1, 2, 2, 2, 5, 5, + 5, 6, 6, 5, 5, 2, 2, 2, 2, 3, + 3, 3, 4, 1, 3, 5, 1, 3, 3, 3, + 3, 3, 3, 3, 3, 2, 2, 2, 4, 4, + 2, 10, 3, 6, 7, 5, 5, 5, 12, 7, + 5, 9, 5, 3, 7, 4, 4, 4, 4, 3, + 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 2, 0, 2, 2, 1, 3, 8, + 8, 3, 3, 5, 6, 6, 5, 5, 3, 2, + 3, 3, 3, 7, 3, 3, 3, 3, 4, 7, + 5, 2, 4, 4, 4, 4, 4, 5, 5, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 2, 4, 2, 4, 5, 4, 4, 3, 3, 5, + 2, 3, 3, 3, 3, 1, 1, 0, 1, 0, + 1, 1, 1, 0, 2, 2, 0, 2, 2, 0, + 2, 0, 1, 1, 2, 1, 1, 2, 1, 1, + 5, 0, 1, 0, 1, 2, 3, 0, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 3, 3, 2, 2, 3, 1, 3, + 2, 1, 2, 1, 2, 2, 3, 3, 6, 4, + 7, 6, 1, 3, 2, 2, 2, 2, 1, 1, + 1, 3, 2, 1, 1, 1, 0, 1, 1, 0, + 3, 0, 2, 0, 2, 1, 2, 2, 0, 1, + 1, 0, 1, 1, 0, 1, 0, 1, 2, 3, + 4, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 1, 2, 3, 5, 0, 1, 2, 1, 1, 0, + 2, 1, 3, 1, 1, 1, 3, 3, 3, 3, + 7, 0, 3, 1, 3, 1, 3, 4, 4, 4, + 3, 2, 4, 0, 1, 0, 2, 0, 1, 0, + 1, 2, 1, 1, 1, 2, 2, 1, 2, 3, + 2, 3, 2, 2, 2, 1, 1, 3, 3, 0, + 5, 4, 5, 5, 0, 2, 1, 3, 3, 3, + 2, 3, 1, 2, 0, 3, 1, 1, 3, 3, + 4, 4, 5, 3, 4, 5, 6, 2, 1, 2, + 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, + 1, 0, 2, 1, 1, 1, 3, 1, 3, 1, + 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 1, + 1, 1, 1, 4, 5, 5, 6, 4, 4, 6, + 6, 6, 8, 8, 8, 8, 9, 8, 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 8, 8, 0, 2, 3, 4, 4, - 4, 4, 4, 4, 4, 0, 3, 4, 7, 3, - 1, 1, 1, 2, 3, 3, 1, 2, 2, 1, - 2, 1, 2, 2, 1, 2, 0, 1, 0, 2, - 1, 2, 4, 0, 2, 1, 3, 5, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, - 3, 0, 2, 0, 3, 1, 3, 2, 0, 1, - 1, 0, 2, 4, 4, 0, 2, 2, 1, 1, - 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, - 3, 0, 3, 1, 1, 0, 4, 0, 1, 1, - 0, 3, 1, 3, 2, 1, 0, 2, 4, 0, - 9, 3, 5, 0, 3, 3, 0, 1, 0, 2, - 2, 0, 2, 2, 2, 0, 3, 0, 3, 0, - 3, 0, 4, 0, 3, 0, 4, 0, 1, 2, - 1, 5, 4, 4, 1, 3, 3, 5, 0, 5, - 1, 3, 1, 2, 3, 1, 1, 3, 3, 1, - 3, 3, 3, 3, 3, 2, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 0, 1, 0, 2, 0, - 3, 0, 1, 0, 1, 1, 5, 0, 1, 0, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 8, 8, 0, 2, 3, 4, + 4, 4, 4, 4, 4, 4, 0, 3, 4, 7, + 3, 1, 1, 1, 2, 3, 3, 1, 2, 2, + 1, 2, 1, 2, 2, 1, 2, 0, 1, 0, + 2, 1, 2, 4, 0, 2, 1, 3, 5, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 0, 3, 0, 2, 0, 3, 1, 3, 2, 0, + 1, 1, 0, 2, 4, 4, 0, 2, 2, 1, + 1, 3, 3, 3, 3, 3, 3, 3, 0, 3, + 3, 3, 0, 3, 1, 1, 0, 4, 0, 1, + 1, 0, 3, 1, 3, 2, 1, 0, 2, 4, + 0, 9, 3, 5, 0, 3, 3, 0, 1, 0, + 2, 2, 0, 2, 2, 2, 0, 2, 1, 2, + 3, 3, 0, 2, 1, 2, 3, 4, 3, 0, + 1, 2, 1, 5, 4, 4, 1, 3, 3, 5, + 0, 5, 1, 3, 1, 2, 3, 1, 1, 3, + 3, 1, 3, 3, 3, 3, 3, 2, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, + 2, 0, 3, 0, 1, 0, 1, 1, 5, 0, + 1, 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -4479,7 +4507,7 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 0, 1, 1, + 1, 1, 1, 0, 0, 1, 1, } var yyChk = [...]int{ @@ -4661,277 +4689,279 @@ var yyChk = [...]int{ 74, -86, -100, -86, -102, -194, 135, -169, -171, 315, 312, 318, -258, 88, 82, -238, -226, 98, 110, 30, 73, 276, 95, 170, 29, 169, -219, 280, -214, -214, - -215, -258, 144, -215, -215, -215, -221, 88, -221, 89, - 89, 83, -32, -27, -28, 32, 77, -245, -233, 88, - 38, 83, 165, 24, -100, 73, 73, 73, 16, -158, - -189, 82, 83, -130, 224, -128, 83, -189, 83, -158, - -231, -190, -189, -276, 163, 30, 30, -129, -130, -215, - -258, 468, 467, 83, -100, -80, 213, 221, 81, 85, - -260, 74, 204, 276, 204, 207, 166, -59, -32, -100, - -175, -175, 32, 312, 445, 443, -72, 109, -111, -111, - -277, -277, -74, -190, -137, -156, -205, 144, 251, 187, - 249, 245, 265, 256, 278, 247, 279, -203, -205, -111, - -111, -111, -111, 339, -137, 117, -84, 115, -111, -111, - 164, 164, 164, -161, 40, 88, 88, 59, -100, -135, - 14, -84, 135, -141, -162, 73, -163, -122, -124, -123, - -276, -157, -277, -189, -161, -105, 82, 118, -91, -90, - 73, 74, -92, 73, -90, 63, 63, -277, -105, -86, - -105, -105, 150, 312, 316, 317, -238, 98, -111, 10, - 88, 29, 29, -215, -215, 83, 82, 83, 82, 83, - 82, -183, 379, 110, -28, -27, -233, -233, 89, -258, - -100, -100, -100, -100, 17, 82, -222, -128, 54, -248, - 83, -252, -253, -100, -110, -130, -159, 81, 83, -257, - 342, -259, -258, -189, -189, -189, -100, -179, -179, 32, - -258, -111, -277, -141, -277, -213, -213, -213, -217, -213, - 239, -213, 239, -277, -277, 20, 20, 20, 20, -276, - -64, 335, -84, 82, 82, -276, -276, -276, -277, 88, - -214, -136, 15, 17, 28, -162, 82, -277, -277, 82, - 54, 150, -277, -137, -167, -84, -84, 81, -84, -137, - -105, -114, -214, 88, -214, 89, 89, 379, 30, 78, - 79, 80, 30, 75, 76, -159, -158, -189, 200, 182, - -277, 82, -220, 342, 345, 23, -158, -256, -255, -190, - 81, 74, -156, -214, -258, -111, -111, -111, -111, -111, - -141, 88, -111, -111, -158, -277, -158, -158, -197, -214, - -145, -150, -176, -84, -120, 29, -124, 54, -3, -189, - -122, -189, -141, -158, -141, -215, -215, 83, 83, 23, - 201, -100, -253, 346, 346, -3, 83, 82, 118, -158, - -100, -277, -277, -277, -277, -67, 128, 342, -277, -277, - -277, -277, -277, -277, -104, -148, 429, -151, 43, -152, - 44, 10, -122, 150, 83, -3, -276, 81, -57, 342, - -255, -237, -190, 88, 89, 83, -277, 340, 70, 343, - -145, 48, 257, -153, 52, -154, -149, 53, 17, -163, - -189, -57, -111, 197, -158, -58, 212, 433, -260, 59, - 341, 344, -146, 50, -144, 49, -144, -152, 17, -155, - 45, 46, 88, -277, -277, 83, 175, -257, 59, -147, - 51, 73, 101, 88, 17, 17, -267, -268, 73, 214, - 342, 73, 101, 88, 88, -268, 73, 11, 10, 343, - -266, 183, 178, 181, 31, -266, 344, 177, 30, 98, + -215, -258, 88, 144, -215, -215, -215, -221, 88, -221, + 89, 89, 83, -32, -27, -28, 32, 77, -245, -233, + 88, 38, 83, 165, 24, -100, 73, 73, 73, 16, + -158, -189, 82, 83, -130, 224, -128, 83, -189, 83, + -158, -231, -190, -189, -276, 163, 30, 30, -129, -130, + -215, -258, 468, 467, 83, -100, -80, 213, 221, 81, + 85, -260, 74, 204, 276, 204, 207, 166, -59, -32, + -100, -175, -175, 32, 312, 445, 443, -72, 109, -111, + -111, -277, -277, -74, -190, -137, -156, -205, 144, 251, + 187, 249, 245, 265, 256, 278, 247, 279, -203, -205, + -111, -111, -111, -111, 339, -137, 117, -84, 115, -111, + -111, 164, 164, 164, -161, 40, 88, 88, 59, -100, + -135, 14, -84, 135, -141, -162, 73, -163, -122, -124, + -123, -276, -157, -277, -189, -161, -105, 82, 118, -91, + -90, 73, 74, -92, 73, -90, 63, 63, -277, -105, + -86, -105, -105, 150, 312, 316, 317, -238, 98, -111, + 10, 88, 29, 29, -215, -215, 83, 82, 83, 82, + 83, 82, -183, 379, 110, -28, -27, -233, -233, 89, + -258, -100, -100, -100, -100, 17, 82, -222, -128, 54, + -248, 83, -252, -253, -100, -110, -130, -159, 81, 83, + -257, 342, -259, -258, -189, -189, -189, -100, -179, -179, + 32, -258, -111, -277, -141, -277, -213, -213, -213, -217, + -213, 239, -213, 239, -277, -277, 20, 20, 20, 20, + -276, -64, 335, -84, 82, 82, -276, -276, -276, -277, + 88, -214, -136, 15, 17, 28, -162, 82, -277, -277, + 82, 54, 150, -277, -137, -167, -84, -84, 81, -84, + -137, -105, -114, -214, 88, -214, 89, 89, 379, 30, + 78, 79, 80, 30, 75, 76, -159, -158, -189, 200, + 182, -277, 82, -220, 342, 345, 23, -158, -256, -255, + -190, 81, 74, -156, -214, -258, -111, -111, -111, -111, + -111, -141, 88, -111, -111, -158, -277, -158, -158, -197, + -214, -145, -150, -176, -84, -120, 29, -124, 54, -3, + -189, -122, -189, -141, -158, -141, -215, -215, 83, 83, + 23, 201, -100, -253, 346, 346, -3, 83, 82, 118, + -158, -100, -277, -277, -277, -277, -67, 128, 342, -277, + -277, -277, -277, -277, -277, -104, -148, 429, -153, 43, + -151, -152, 44, -149, 45, 53, 10, -122, 150, 83, + -3, -276, 81, -57, 342, -255, -237, -190, 88, 89, + 83, -277, 340, 70, 343, -145, 48, 257, -155, -154, + 52, 44, -152, 17, 46, 17, -163, -189, -57, -111, + 197, -158, -58, 212, 433, -260, 59, 341, 344, -146, + 50, -144, 49, -144, -154, 17, 17, 88, 17, 88, + -277, -277, 83, 175, -257, 59, -147, 51, 73, 101, + 88, 88, 88, -267, -268, 73, 214, 342, 73, 101, + -268, 73, 11, 10, 343, -266, 183, 178, 181, 31, + -266, 344, 177, 30, 98, } var yyDef = [...]int{ 33, -2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 813, 0, 550, 550, 550, 550, 550, 550, - 550, 0, 0, -2, -2, -2, 837, 37, 0, 925, - 0, 0, -2, 484, 485, 0, 487, -2, 0, 0, - 496, 1351, 1351, 545, 0, 0, 0, 0, 0, 1349, - 54, 55, 502, 503, 504, 1, 3, 0, 554, 821, - 0, 0, -2, 552, 0, 0, 931, 931, 931, 0, - 85, 86, 0, 0, 0, 837, 0, 0, 0, 0, - 0, 550, 0, 926, 108, 109, 89, -2, 113, 114, - 0, 118, 366, 327, 369, 325, 355, -2, 318, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 330, 222, 222, 0, 0, -2, 318, 318, 318, - 0, 0, 0, 352, 933, 272, 222, 222, 0, 222, - 222, 222, 222, 0, 0, 222, 222, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 0, 107, 850, 0, 0, 117, 38, 34, 35, 36, - 0, 0, 0, 927, 550, 0, 418, 635, 946, 947, - 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, - 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, - 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, - 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, - 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, - 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, - 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, - 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, - 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, - 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, - 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, - 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, - 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, - 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, - 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, - 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, - 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, - 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, - 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, - 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, - 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, - 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, - 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, - 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, - 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, - 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, - 1346, 1347, 1348, 0, 475, 475, 0, 475, 475, 475, - 475, 0, 0, 0, 430, 0, 0, 0, 0, 472, - 0, 0, 449, 451, 0, 472, 0, 459, 475, 1352, - 1352, 1352, 916, 0, 469, 467, 481, 482, 464, 465, - 483, 486, 0, 491, 494, 942, 943, 0, 509, 0, - 1161, 501, 514, 515, 0, 546, 547, 39, 686, 645, - 0, 651, 653, 0, 688, 689, 690, 691, 692, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 718, - 719, 720, 721, 798, 799, 800, 801, 802, 803, 804, - 805, 655, 656, 795, 0, 905, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 786, 0, 755, 755, 755, - 755, 755, 755, 755, 755, 0, 0, 0, 0, 0, - 0, 0, -2, -2, 1351, 0, 524, 0, 813, 50, - 0, 550, 555, 556, 856, 0, 0, 813, 1350, 0, - 0, -2, -2, 566, 572, 573, 574, 575, 576, 551, - 0, 579, 583, 0, 0, 0, 932, 0, 0, 71, - 0, 1316, 909, -2, -2, 0, 0, 944, 945, 918, - -2, 950, 951, 952, 953, 954, 955, 956, 957, 958, - 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, - 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, - 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, - 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, - 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, - 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, - 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, - 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, - 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, - 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, - 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, - 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, - 1079, 1080, 1081, 1082, 1083, 1084, 1085, -2, 1105, 0, - 0, 127, 128, 0, 37, 248, 0, 123, 0, 242, - 196, 850, 929, 939, 0, 0, 0, 929, 91, 115, - 116, 222, 222, 0, 117, 117, 334, 335, 336, 0, - 0, -2, 246, 0, 319, 0, 0, 236, 236, 240, - 238, 239, 0, 0, 0, 0, 0, 0, 346, 0, - 347, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 402, 0, 223, 0, 364, 365, 273, 0, 0, 0, - 0, 344, 345, 0, 0, 934, 935, 0, 0, 222, - 222, 0, 0, 0, 0, 222, 222, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 101, 841, 0, 0, 0, 0, 0, 0, - -2, 0, 410, 0, 927, 0, 0, 0, 927, 417, - 0, 419, 420, 0, 0, 421, 0, 472, 472, 470, - 471, 423, 424, 425, 426, 475, 0, 0, 231, 232, - 233, 472, 475, 0, 475, 475, 475, 475, 472, 475, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1352, - 1352, 1352, 478, 475, 456, 457, 460, 461, 1353, 1354, - 462, 463, 917, 492, 495, 512, 510, 511, 513, 505, - 506, 507, 508, 0, 525, 526, 531, 0, 0, 0, - 0, 537, 538, 539, 0, 0, 542, 543, 544, 0, - 0, 0, 0, 0, 649, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 673, 674, 675, 676, 677, 678, - 679, 652, 0, 666, 0, 0, 0, 708, 709, 710, - 711, 712, 713, 714, 715, 716, 0, 563, 0, 0, - 0, 813, 0, 0, 0, 0, 0, 0, 0, 560, - 0, 787, 0, 739, 747, 0, 740, 748, 741, 749, - 742, 0, 743, 750, 744, 751, 745, 746, 752, 0, - 0, 0, 563, 563, 0, 0, 40, 516, 517, 0, - 618, 937, 821, 0, 565, 859, 0, 0, 822, 814, - 815, 818, 821, 0, 588, 577, 567, 570, 571, 553, - 0, 580, 584, 0, 586, 587, 0, 0, 69, 0, - 634, 0, 590, 592, 593, 594, 616, 0, 0, 0, - 0, 65, 67, 635, 0, 1316, 915, 0, 73, 74, - 0, 0, 0, 210, 920, 921, 922, -2, 229, 0, + 31, 32, 814, 0, 551, 551, 551, 551, 551, 551, + 551, 0, 0, -2, -2, -2, 838, 37, 0, 927, + 0, 0, -2, 485, 486, 0, 488, -2, 0, 0, + 497, 1353, 1353, 546, 0, 0, 0, 0, 0, 1351, + 54, 55, 503, 504, 505, 1, 3, 0, 555, 822, + 0, 0, -2, 553, 0, 0, 933, 933, 933, 0, + 85, 86, 0, 0, 0, 838, 0, 0, 0, 0, + 0, 551, 0, 928, 108, 109, 89, -2, 113, 114, + 0, 118, 367, 328, 370, 326, 356, -2, 319, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 331, 223, 223, 0, 0, -2, 319, 319, 319, + 0, 0, 0, 353, 935, 273, 223, 223, 0, 223, + 223, 223, 223, 0, 0, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 0, 107, 851, 0, 0, 117, 38, 34, 35, 36, + 0, 0, 0, 929, 551, 0, 419, 636, 948, 949, + 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, + 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, + 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, + 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, + 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, + 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, + 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, + 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, + 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, + 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, + 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, + 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, + 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, + 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, + 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, + 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, + 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, + 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, + 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, + 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, + 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, + 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, + 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, + 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, + 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, + 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, + 1348, 1349, 1350, 0, 476, 476, 0, 476, 476, 476, + 476, 0, 0, 0, 431, 0, 0, 0, 0, 473, + 0, 0, 450, 452, 0, 473, 0, 460, 476, 1354, + 1354, 1354, 918, 0, 470, 468, 482, 483, 465, 466, + 484, 487, 0, 492, 495, 944, 945, 0, 510, 0, + 1163, 502, 515, 516, 0, 547, 548, 39, 687, 646, + 0, 652, 654, 0, 689, 690, 691, 692, 693, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 719, + 720, 721, 722, 799, 800, 801, 802, 803, 804, 805, + 806, 656, 657, 796, 0, 907, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 787, 0, 756, 756, 756, + 756, 756, 756, 756, 756, 0, 0, 0, 0, 0, + 0, 0, -2, -2, 1353, 0, 525, 0, 814, 50, + 0, 551, 556, 557, 857, 0, 0, 814, 1352, 0, + 0, -2, -2, 567, 573, 574, 575, 576, 577, 552, + 0, 580, 584, 0, 0, 0, 934, 0, 0, 71, + 0, 1318, 911, -2, -2, 0, 0, 946, 947, 920, + -2, 952, 953, 954, 955, 956, 957, 958, 959, 960, + 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, + 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, + 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, + 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, + 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, + 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, + 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, + 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, + 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, + 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, + 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, + 1081, 1082, 1083, 1084, 1085, 1086, 1087, -2, 1107, 0, + 0, 127, 128, 0, 37, 249, 0, 123, 0, 243, + 196, 851, 931, 941, 0, 0, 0, 931, 91, 115, + 116, 223, 223, 0, 117, 117, 335, 336, 337, 0, + 0, -2, 247, 0, 320, 0, 0, 237, 237, 241, + 239, 240, 0, 0, 0, 0, 0, 0, 347, 0, + 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 403, 0, 224, 0, 365, 366, 274, 0, 0, 0, + 0, 345, 346, 0, 0, 936, 937, 0, 0, 223, + 223, 0, 0, 0, 0, 223, 223, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 101, 842, 0, 0, 0, 0, 0, 0, + -2, 0, 411, 0, 929, 0, 0, 0, 929, 418, + 0, 420, 421, 0, 0, 422, 0, 473, 473, 471, + 472, 424, 425, 426, 427, 476, 0, 0, 232, 233, + 234, 473, 476, 0, 476, 476, 476, 476, 473, 476, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1354, + 1354, 1354, 479, 476, 457, 458, 461, 462, 1355, 1356, + 463, 464, 919, 493, 496, 513, 511, 512, 514, 506, + 507, 508, 509, 0, 526, 527, 532, 0, 0, 0, + 0, 538, 539, 540, 0, 0, 543, 544, 545, 0, + 0, 0, 0, 0, 650, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 674, 675, 676, 677, 678, 679, + 680, 653, 0, 667, 0, 0, 0, 709, 710, 711, + 712, 713, 714, 715, 716, 717, 0, 564, 0, 0, + 0, 814, 0, 0, 0, 0, 0, 0, 0, 561, + 0, 788, 0, 740, 748, 0, 741, 749, 742, 750, + 743, 0, 744, 751, 745, 752, 746, 747, 753, 0, + 0, 0, 564, 564, 0, 0, 40, 517, 518, 0, + 619, 939, 822, 0, 566, 860, 0, 0, 823, 815, + 816, 819, 822, 0, 589, 578, 568, 571, 572, 554, + 0, 581, 585, 0, 587, 588, 0, 0, 69, 0, + 635, 0, 591, 593, 594, 595, 617, 0, 0, 0, + 0, 65, 67, 636, 0, 1318, 917, 0, 73, 74, + 0, 0, 0, 211, 922, 923, 924, -2, 230, 0, 135, 203, 147, 148, 149, 196, 151, 196, 196, 196, 196, 207, 207, 207, 207, 179, 180, 181, 182, 183, 0, 0, 166, 196, 196, 196, 196, 186, 187, 188, 189, 190, 191, 192, 193, 152, 153, 154, 155, 156, 157, 158, 159, 160, 198, 198, 198, 200, 200, 0, - 38, 0, 214, 0, 818, 0, 841, 0, 0, 0, - 940, 0, 939, 939, 939, 0, 0, 0, 367, 328, - 356, 368, 0, 331, 332, -2, 0, 0, 318, 0, - 320, 0, 230, 0, -2, 0, 0, 0, 236, 240, - 237, 240, 228, 241, 348, 795, 0, 349, 350, 0, - 382, 604, 0, 0, 0, 0, 0, 388, 389, 390, - 0, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 357, 358, 359, 360, 361, 362, 363, 0, 0, - 320, 0, 353, 0, 274, 275, 0, 0, 278, 279, - 280, 281, 0, 0, 284, 285, 286, 287, 288, 312, - 313, 314, 289, 290, 291, 292, 293, 294, 295, 306, - 307, 308, 309, 310, 311, 296, 297, 298, 299, 300, - 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 838, 839, 840, 0, 0, 0, 0, 0, 261, - 63, 928, 0, 636, 948, 949, 476, 477, 0, 234, - 235, 475, 475, 427, 450, 0, 475, 431, 452, 432, - 434, 433, 435, 475, 438, 473, 474, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 454, 0, 455, - 0, 0, 493, 497, 498, 499, 500, 0, 0, 528, - 533, 534, 535, 536, 548, 541, 687, 646, 647, 648, - 650, 667, 0, 669, 671, 657, 658, 682, 683, 684, - 0, 0, 0, 0, 680, 662, 0, 693, 694, 695, - 696, 697, 698, 699, 700, 701, 702, 703, 704, 707, - 770, 771, 772, 0, 705, 706, 717, 0, 0, 0, - 564, 796, 0, -2, 0, 685, 904, 821, 0, 0, - 0, 0, 690, 798, 0, 690, 798, 0, 0, 0, - 561, 562, 793, 790, 0, 0, 756, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 519, 520, 522, 0, - 638, 0, 619, 0, 621, 622, 0, 938, 856, 51, - 41, 0, 857, 0, 0, 0, 0, 817, 819, 820, - 856, 0, 806, 0, 0, 643, 0, 0, 568, 47, - 585, 581, 0, 643, 0, 0, 633, 0, 0, 0, - 0, 0, 0, 623, 0, 0, 626, 0, 0, 0, - 0, 617, 0, 0, 0, -2, 0, 0, 0, 61, - 62, 0, 0, 0, 910, 72, 0, 0, 77, 78, - 911, 912, 913, 914, 0, 110, -2, 269, 129, 131, + 38, 0, 215, 0, 819, 0, 842, 0, 0, 0, + 942, 0, 941, 941, 941, 0, 0, 0, 368, 329, + 357, 369, 0, 332, 333, -2, 0, 0, 319, 0, + 321, 0, 231, 0, -2, 0, 0, 0, 237, 241, + 238, 241, 229, 242, 349, 796, 0, 350, 351, 0, + 383, 605, 0, 0, 0, 0, 0, 389, 390, 391, + 0, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 358, 359, 360, 361, 362, 363, 364, 0, 0, + 321, 0, 354, 0, 275, 276, 0, 0, 279, 280, + 281, 282, 0, 0, 285, 286, 287, 288, 289, 313, + 314, 315, 290, 291, 292, 293, 294, 295, 296, 307, + 308, 309, 310, 311, 312, 297, 298, 299, 300, 301, + 304, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 839, 840, 841, 0, 0, 0, 0, 0, 262, + 63, 930, 0, 637, 950, 951, 477, 478, 0, 235, + 236, 476, 476, 428, 451, 0, 476, 432, 453, 433, + 435, 434, 436, 476, 439, 474, 475, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 455, 0, 456, + 0, 0, 494, 498, 499, 500, 501, 0, 0, 529, + 534, 535, 536, 537, 549, 542, 688, 647, 648, 649, + 651, 668, 0, 670, 672, 658, 659, 683, 684, 685, + 0, 0, 0, 0, 681, 663, 0, 694, 695, 696, + 697, 698, 699, 700, 701, 702, 703, 704, 705, 708, + 771, 772, 773, 0, 706, 707, 718, 0, 0, 0, + 565, 797, 0, -2, 0, 686, 906, 822, 0, 0, + 0, 0, 691, 799, 0, 691, 799, 0, 0, 0, + 562, 563, 794, 791, 0, 0, 757, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 520, 521, 523, 0, + 639, 0, 620, 0, 622, 623, 0, 940, 857, 51, + 41, 0, 858, 0, 0, 0, 0, 818, 820, 821, + 857, 0, 807, 0, 0, 644, 0, 0, 569, 47, + 586, 582, 0, 644, 0, 0, 634, 0, 0, 0, + 0, 0, 0, 624, 0, 0, 627, 0, 0, 0, + 0, 618, 0, 0, 0, -2, 0, 0, 0, 61, + 62, 0, 0, 0, 912, 72, 0, 0, 77, 78, + 913, 914, 915, 916, 0, 110, -2, 270, 129, 131, 132, 133, 124, 134, 205, 204, 150, 207, 207, 173, - 174, 210, 0, 210, 210, 210, 0, 0, 167, 168, - 169, 170, 161, 0, 162, 163, 164, 0, 165, 247, - 0, 825, 215, 216, 218, 222, 0, 0, 243, 244, - 0, 0, 100, 0, 0, 941, 0, 0, 0, 106, - 119, 120, 121, 122, 117, 0, 0, 125, 322, 0, - 0, 0, 245, 0, 0, 224, 240, 225, 226, 0, - 351, 0, 0, 384, 385, 386, 387, 0, 0, 0, - 320, 322, 210, 0, 276, 277, 282, 283, 301, 0, - 0, 0, 0, 851, 852, 0, 855, 92, 374, 376, - 375, 379, 0, 0, 0, 0, 411, 261, 825, 0, - 415, 262, 263, 416, 472, 437, 453, 472, 429, 436, - 479, 458, 489, 532, 0, 0, 0, 540, 0, 668, - 670, 672, 659, 680, 663, 0, 660, 0, 0, 654, - 722, 0, 0, 563, 0, 813, 856, 726, 727, 0, - 0, 0, 0, 0, 763, 0, 0, 764, 0, 813, - 0, 791, 0, 0, 738, 757, 0, 0, 758, 759, - 760, 761, 762, 518, 521, 523, 598, 0, 0, 0, - 0, 620, 936, 43, 0, 0, 0, 823, 824, 816, - 42, 0, 923, 924, 807, 808, 809, 0, 578, 589, - 569, 0, 821, 898, 0, 0, 890, 0, 0, 643, - 906, 0, 591, 612, 614, 0, 609, 624, 625, 627, - 0, 629, 0, 631, 632, 595, 596, 597, 0, 643, - 0, 643, 66, 643, 68, 0, 637, 75, 76, 0, - 0, 82, 211, 212, 117, 271, 130, 136, 0, 0, - 0, 140, 0, 0, 143, 145, 146, 206, 210, 210, - 175, 208, 209, 176, 177, 178, 0, 194, 0, 0, - 0, 264, 87, 829, 828, 222, 222, 217, 0, 220, - 0, 197, 0, 930, 102, 0, 0, 0, 0, 326, - 602, 0, 337, 338, 0, 321, 381, 0, 214, 0, - 227, 796, 605, 0, 0, 339, 0, 322, 342, 343, - 354, 304, 305, 302, 600, 842, 843, 844, 0, 854, - 95, 0, 0, 0, 0, 372, 0, 413, 414, 64, - 475, 475, 527, 0, 530, 0, 661, 0, 681, 664, - 723, 724, 0, 797, 821, 45, 0, 196, 196, 776, - 196, 200, 779, 196, 781, 196, 784, 0, 0, 0, - 0, 0, 0, 0, 788, 737, 794, 0, 0, 0, - 0, 0, 0, 0, 0, 207, 861, 858, 44, 811, - 0, 644, 582, 48, 52, 0, 898, 889, 900, 902, - 0, 0, 0, 894, 0, 813, 0, 0, 606, 613, - 0, 0, 607, 0, 608, 628, 630, -2, 813, 643, - 59, 60, 0, 79, 80, 81, 270, 137, 138, 0, - 141, 142, 144, 171, 172, 207, 0, 207, 0, 201, - 0, 253, 265, 0, 826, 827, 0, 0, 219, 221, - 600, 103, 104, 105, 0, 0, 126, 323, 0, 213, - 0, 0, 406, 403, 340, 341, 0, 0, 853, 373, - 0, 93, 94, 0, 0, 378, 412, 422, 428, 529, - 549, 665, 725, 856, 728, 773, 207, 777, 778, 780, - 782, 783, 785, 730, 729, 0, 0, 0, 0, 0, - 821, 0, 792, 0, 0, 0, 0, 0, 618, 207, - 881, 49, 0, 0, 0, 53, 0, 903, 0, 0, - 0, 0, 70, 821, 907, 908, 610, 0, 615, 821, - 58, 139, 210, 195, 210, 0, 0, 266, 830, 831, - 832, 833, 834, 835, 836, 0, 329, 603, 0, 0, - 383, 0, 391, 0, 0, 0, 0, 96, 97, 0, - 0, 0, 46, 774, 775, 0, 0, 0, 0, 765, - 0, 789, 0, 0, 0, 640, 0, 0, 638, 863, - 862, 875, 879, 812, 810, 0, 901, 0, 893, 896, - 892, 895, 56, 0, 57, 184, 185, 199, 202, 0, - 0, 0, 407, 404, 405, 845, 601, 0, 0, 0, - 380, 731, 733, 732, 734, 0, 0, 0, 736, 753, - 754, 639, 641, 642, 599, 881, 0, 874, 877, -2, - 0, 0, 891, 0, 611, 845, 0, 0, 370, 847, - 98, 99, 315, 316, 317, 92, 735, 0, 0, 0, - 868, 866, 866, 879, 0, 883, 0, 888, 0, 899, - 897, 88, 0, 0, 0, 0, 848, 849, 95, 766, - 0, 769, 871, 0, 864, 867, 865, 876, 0, 882, - 0, 0, 880, 408, 409, 249, 0, 377, 767, 860, - 0, 869, 870, 878, 0, 0, 250, 251, 0, 846, - 0, 872, 873, 884, 886, 252, 0, 0, 0, 0, - 254, 256, 257, 0, 0, 255, 768, 258, 259, 260, + 174, 211, 0, 211, 211, 211, 0, 0, 167, 168, + 169, 170, 161, 0, 162, 163, 164, 0, 165, 248, + 0, 826, 216, 217, 219, 223, 0, 0, 244, 245, + 0, 0, 100, 0, 0, 943, 0, 0, 0, 106, + 119, 120, 121, 122, 117, 0, 0, 125, 323, 0, + 0, 0, 246, 0, 0, 225, 241, 226, 227, 0, + 352, 0, 0, 385, 386, 387, 388, 0, 0, 0, + 321, 323, 211, 0, 277, 278, 283, 284, 302, 0, + 0, 0, 0, 852, 853, 0, 856, 92, 375, 377, + 376, 380, 0, 0, 0, 0, 412, 262, 826, 0, + 416, 263, 264, 417, 473, 438, 454, 473, 430, 437, + 480, 459, 490, 533, 0, 0, 0, 541, 0, 669, + 671, 673, 660, 681, 664, 0, 661, 0, 0, 655, + 723, 0, 0, 564, 0, 814, 857, 727, 728, 0, + 0, 0, 0, 0, 764, 0, 0, 765, 0, 814, + 0, 792, 0, 0, 739, 758, 0, 0, 759, 760, + 761, 762, 763, 519, 522, 524, 599, 0, 0, 0, + 0, 621, 938, 43, 0, 0, 0, 824, 825, 817, + 42, 0, 925, 926, 808, 809, 810, 0, 579, 590, + 570, 0, 822, 900, 0, 0, 892, 0, 0, 644, + 908, 0, 592, 613, 615, 0, 610, 625, 626, 628, + 0, 630, 0, 632, 633, 596, 597, 598, 0, 644, + 0, 644, 66, 644, 68, 0, 638, 75, 76, 0, + 0, 82, 212, 213, 117, 272, 130, 136, 0, 0, + 0, 140, 0, 0, 143, 145, 146, 206, 211, 211, + 175, 208, 209, 210, 176, 177, 178, 0, 194, 0, + 0, 0, 265, 87, 830, 829, 223, 223, 218, 0, + 221, 0, 197, 0, 932, 102, 0, 0, 0, 0, + 327, 603, 0, 338, 339, 0, 322, 382, 0, 215, + 0, 228, 797, 606, 0, 0, 340, 0, 323, 343, + 344, 355, 305, 306, 303, 601, 843, 844, 845, 0, + 855, 95, 0, 0, 0, 0, 373, 0, 414, 415, + 64, 476, 476, 528, 0, 531, 0, 662, 0, 682, + 665, 724, 725, 0, 798, 822, 45, 0, 196, 196, + 777, 196, 200, 780, 196, 782, 196, 785, 0, 0, + 0, 0, 0, 0, 0, 789, 738, 795, 0, 0, + 0, 0, 0, 0, 0, 0, 207, 862, 859, 44, + 812, 0, 645, 583, 48, 52, 0, 900, 891, 902, + 904, 0, 0, 0, 896, 0, 814, 0, 0, 607, + 614, 0, 0, 608, 0, 609, 629, 631, -2, 814, + 644, 59, 60, 0, 79, 80, 81, 271, 137, 138, + 0, 141, 142, 144, 171, 172, 207, 0, 207, 0, + 201, 0, 254, 266, 0, 827, 828, 0, 0, 220, + 222, 601, 103, 104, 105, 0, 0, 126, 324, 0, + 214, 0, 0, 407, 404, 341, 342, 0, 0, 854, + 374, 0, 93, 94, 0, 0, 379, 413, 423, 429, + 530, 550, 666, 726, 857, 729, 774, 207, 778, 779, + 781, 783, 784, 786, 731, 730, 0, 0, 0, 0, + 0, 822, 0, 793, 0, 0, 0, 0, 0, 619, + 207, 882, 49, 0, 0, 0, 53, 0, 905, 0, + 0, 0, 0, 70, 822, 909, 910, 611, 0, 616, + 822, 58, 139, 211, 195, 211, 0, 0, 267, 831, + 832, 833, 834, 835, 836, 837, 0, 330, 604, 0, + 0, 384, 0, 392, 0, 0, 0, 0, 96, 97, + 0, 0, 0, 46, 775, 776, 0, 0, 0, 0, + 766, 0, 790, 0, 0, 0, 641, 0, 0, 639, + 864, 863, 876, 889, 813, 811, 0, 903, 0, 895, + 898, 894, 897, 56, 0, 57, 184, 185, 199, 202, + 0, 0, 0, 408, 405, 406, 846, 602, 0, 0, + 0, 381, 732, 734, 733, 735, 0, 0, 0, 737, + 754, 755, 640, 642, 643, 600, 882, 0, 875, 0, + -2, 884, 0, 0, 0, 890, 0, 893, 0, 612, + 846, 0, 0, 371, 848, 98, 99, 316, 317, 318, + 92, 736, 0, 0, 0, 869, 867, 867, 877, 878, + 0, 0, 885, 0, 0, 0, 901, 899, 88, 0, + 0, 0, 0, 849, 850, 95, 767, 0, 770, 872, + 0, 865, 868, 866, 879, 0, 0, 886, 0, 888, + 409, 410, 250, 0, 378, 768, 861, 0, 870, 871, + 880, 881, 887, 251, 252, 0, 847, 0, 873, 874, + 253, 0, 0, 0, 0, 255, 257, 258, 0, 0, + 256, 769, 259, 260, 261, } var yyTok1 = [...]int{ @@ -5938,7 +5968,7 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:930 { - yyVAL.collateAndCharset = CollateAndCharset{Type: CharacterSetType, Value: ("'" + string(yyDollar[4].str) + "'"), IsDefault: yyDollar[1].boolean} + yyVAL.collateAndCharset = CollateAndCharset{Type: CharacterSetType, Value: (encodeSQLString(yyDollar[4].str)), IsDefault: yyDollar[1].boolean} } case 121: yyDollar = yyS[yypt-4 : yypt+1] @@ -5950,7 +5980,7 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:940 { - yyVAL.collateAndCharset = CollateAndCharset{Type: CollateType, Value: ("'" + string(yyDollar[4].str) + "'"), IsDefault: yyDollar[1].boolean} + yyVAL.collateAndCharset = CollateAndCharset{Type: CollateType, Value: (encodeSQLString(yyDollar[4].str)), IsDefault: yyDollar[1].boolean} } case 123: yyDollar = yyS[yypt-2 : yypt+1] @@ -6392,13 +6422,13 @@ yydefault: //line sql.y:1277 { yyVAL.strs = make([]string, 0, 4) - yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].str)+"'") + yyVAL.strs = append(yyVAL.strs, encodeSQLString(yyDollar[1].str)) } case 195: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1282 { - yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].str)+"'") + yyVAL.strs = append(yyDollar[1].strs, encodeSQLString(yyDollar[3].str)) } case 196: yyDollar = yyS[yypt-0 : yypt+1] @@ -6490,140 +6520,140 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1352 { - yyVAL.str = string(yyDollar[2].str) + yyVAL.str = encodeSQLString(yyDollar[2].str) } case 210: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1357 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1356 { - yyVAL.str = "" + yyVAL.str = string(yyDollar[2].str) } case 211: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1361 { - yyVAL.str = string(yyDollar[2].colIdent.String()) + yyVAL.str = "" } case 212: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1365 { - yyVAL.str = string(yyDollar[2].str) + yyVAL.str = string(yyDollar[2].colIdent.String()) } case 213: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1369 + { + yyVAL.str = encodeSQLString(yyDollar[2].str) + } + case 214: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1372 +//line sql.y:1376 { yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions} } - case 214: + case 215: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1377 +//line sql.y:1381 { yyVAL.indexOptions = nil } - case 215: + case 216: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1381 +//line sql.y:1385 { yyVAL.indexOptions = yyDollar[1].indexOptions } - case 216: + case 217: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1387 +//line sql.y:1391 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 217: + case 218: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1391 +//line sql.y:1395 { yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption) } - case 218: + case 219: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1397 +//line sql.y:1401 { yyVAL.indexOption = yyDollar[1].indexOption } - case 219: + case 220: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1401 +//line sql.y:1405 { // should not be string yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } - case 220: + case 221: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1406 +//line sql.y:1410 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[2].str)} } - case 221: + case 222: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1410 +//line sql.y:1414 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].str) + " " + string(yyDollar[2].str), String: yyDollar[3].colIdent.String()} } - case 222: + case 223: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1416 +//line sql.y:1420 { yyVAL.str = "" } - case 223: + case 224: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1420 +//line sql.y:1424 { yyVAL.str = string(yyDollar[1].str) } - case 224: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1426 - { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} - } case 225: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1430 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true} } case 226: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1434 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Fulltext: true, Unique: false} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false} } case 227: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1438 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent(yyDollar[4].str), Unique: true} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Fulltext: true, Unique: false} } case 228: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1442 { - yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent(yyDollar[4].str), Unique: true} } case 229: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1447 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1446 { - yyVAL.str = "" + yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false} } case 230: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1451 { - yyVAL.str = yyDollar[2].str + yyVAL.str = "" } case 231: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1457 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1455 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = yyDollar[2].str } case 232: yyDollar = yyS[yypt-1 : yypt+1] @@ -6639,7 +6669,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1472 +//line sql.y:1469 { yyVAL.str = string(yyDollar[1].str) } @@ -6650,22 +6680,22 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 236: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1481 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1480 { - yyVAL.str = "key" + yyVAL.str = string(yyDollar[1].str) } case 237: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1485 { - yyVAL.str = yyDollar[1].str + yyVAL.str = "key" } case 238: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1491 +//line sql.y:1489 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = yyDollar[1].str } case 239: yyDollar = yyS[yypt-1 : yypt+1] @@ -6674,142 +6704,142 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 240: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1499 + { + yyVAL.str = string(yyDollar[1].str) + } + case 241: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1500 +//line sql.y:1504 { yyVAL.str = "" } - case 241: + case 242: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1504 +//line sql.y:1508 { yyVAL.str = string(yyDollar[1].colIdent.String()) } - case 242: + case 243: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1510 +//line sql.y:1514 { yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn} } - case 243: + case 244: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1514 +//line sql.y:1518 { yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn) } - case 244: + case 245: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1520 +//line sql.y:1524 { yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].literal, Direction: yyDollar[3].orderDirection} } - case 245: + case 246: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1526 +//line sql.y:1530 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } - case 246: + case 247: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1530 +//line sql.y:1534 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } - case 247: + case 248: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1536 +//line sql.y:1540 { yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo} } - case 248: + case 249: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1540 +//line sql.y:1544 { yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo} } - case 249: + case 250: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:1546 +//line sql.y:1550 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns} } - case 250: + case 251: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1550 +//line sql.y:1554 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction} } - case 251: + case 252: yyDollar = yyS[yypt-11 : yypt+1] -//line sql.y:1554 +//line sql.y:1558 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction} } - case 252: + case 253: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:1558 +//line sql.y:1562 { yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction, OnUpdate: yyDollar[12].ReferenceAction} } - case 253: + case 254: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1564 +//line sql.y:1568 { yyVAL.constraintInfo = &CheckConstraintDefinition{Expr: yyDollar[3].expr, Enforced: yyDollar[5].boolean} } - case 254: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1570 - { - yyVAL.ReferenceAction = yyDollar[3].ReferenceAction - } case 255: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1576 +//line sql.y:1574 { yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 256: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1582 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1580 { - yyVAL.ReferenceAction = Restrict + yyVAL.ReferenceAction = yyDollar[3].ReferenceAction } case 257: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1586 { - yyVAL.ReferenceAction = Cascade + yyVAL.ReferenceAction = Restrict } case 258: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1590 { - yyVAL.ReferenceAction = NoAction + yyVAL.ReferenceAction = Cascade } case 259: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1594 { - yyVAL.ReferenceAction = SetDefault + yyVAL.ReferenceAction = NoAction } case 260: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1598 { - yyVAL.ReferenceAction = SetNull + yyVAL.ReferenceAction = SetDefault } case 261: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1603 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1602 { - yyVAL.str = "" + yyVAL.ReferenceAction = SetNull } case 262: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1607 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = "" } case 263: yyDollar = yyS[yypt-1 : yypt+1] @@ -6818,70 +6848,70 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 264: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1616 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1615 { - yyVAL.boolean = true + yyVAL.str = string(yyDollar[1].str) } case 265: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1620 { yyVAL.boolean = true } case 266: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1624 { - yyVAL.boolean = false + yyVAL.boolean = true } case 267: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1629 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1628 { - yyVAL.tableOptions = nil + yyVAL.boolean = false } case 268: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1633 { - yyVAL.tableOptions = yyDollar[1].tableOptions + yyVAL.tableOptions = nil } case 269: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1639 +//line sql.y:1637 { - yyVAL.tableOptions = TableOptions{yyDollar[1].tableOption} + yyVAL.tableOptions = yyDollar[1].tableOptions } case 270: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1643 { - yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[3].tableOption) + yyVAL.tableOptions = TableOptions{yyDollar[1].tableOption} } case 271: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1647 { - yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[2].tableOption) + yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[3].tableOption) } case 272: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1653 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1651 { - yyVAL.tableOptions = TableOptions{yyDollar[1].tableOption} + yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[2].tableOption) } case 273: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1657 { - yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[2].tableOption) + yyVAL.tableOptions = TableOptions{yyDollar[1].tableOption} } case 274: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1663 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1661 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} + yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[2].tableOption) } case 275: yyDollar = yyS[yypt-3 : yypt+1] @@ -6890,28 +6920,28 @@ yydefault: yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } case 276: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1671 { - yyVAL.tableOption = &TableOption{Name: (string(yyDollar[2].str)), String: yyDollar[4].str} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } case 277: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1675 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[2].str), String: yyDollar[4].str} + yyVAL.tableOption = &TableOption{Name: (string(yyDollar[2].str)), String: yyDollar[4].str} } case 278: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1679 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[2].str), String: yyDollar[4].str} } case 279: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1683 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } case 280: yyDollar = yyS[yypt-3 : yypt+1] @@ -6926,10 +6956,10 @@ yydefault: yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } case 282: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1695 { - yyVAL.tableOption = &TableOption{Name: (string(yyDollar[1].str) + " " + string(yyDollar[2].str)), Value: NewStrLiteral(yyDollar[4].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } case 283: yyDollar = yyS[yypt-4 : yypt+1] @@ -6938,40 +6968,40 @@ yydefault: yyVAL.tableOption = &TableOption{Name: (string(yyDollar[1].str) + " " + string(yyDollar[2].str)), Value: NewStrLiteral(yyDollar[4].str)} } case 284: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1703 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: (string(yyDollar[1].str) + " " + string(yyDollar[2].str)), Value: NewStrLiteral(yyDollar[4].str)} } case 285: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1707 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } case 286: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1711 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: yyDollar[3].colIdent.String()} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } case 287: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1715 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: yyDollar[3].colIdent.String()} } case 288: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1719 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } case 289: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1723 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } case 290: yyDollar = yyS[yypt-3 : yypt+1] @@ -6995,73 +7025,73 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1739 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } case 294: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1743 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } case 295: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1747 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } case 296: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1751 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } case 297: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1755 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } case 298: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1759 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } case 299: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1763 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } case 300: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1767 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } case 301: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1771 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: (yyDollar[3].colIdent.String() + yyDollar[4].str)} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } case 302: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1775 { - yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Tables: yyDollar[4].tableNames} + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), String: (yyDollar[3].colIdent.String() + yyDollar[4].str)} } case 303: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1780 + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:1779 { - yyVAL.str = "" + yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].str), Tables: yyDollar[4].tableNames} } case 304: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:1784 { - yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyVAL.str = "" } case 305: yyDollar = yyS[yypt-2 : yypt+1] @@ -7069,101 +7099,101 @@ yydefault: { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 315: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1807 + case 306: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:1792 { - yyVAL.str = yyDollar[1].colIdent.String() + yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 316: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1811 { - yyVAL.str = "'" + string(yyDollar[1].str) + "'" + yyVAL.str = yyDollar[1].colIdent.String() } case 317: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1815 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = encodeSQLString(yyDollar[1].str) } case 318: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:1819 + { + yyVAL.str = string(yyDollar[1].str) + } + case 319: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1820 +//line sql.y:1824 { yyVAL.str = "" } - case 320: + case 321: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1826 +//line sql.y:1830 { yyVAL.colName = nil } - case 321: + case 322: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1830 +//line sql.y:1834 { yyVAL.colName = yyDollar[2].colName } - case 322: + case 323: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1835 +//line sql.y:1839 { yyVAL.colName = nil } - case 323: + case 324: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:1839 +//line sql.y:1843 { yyVAL.colName = yyDollar[2].colName } - case 324: + case 325: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:1844 +//line sql.y:1848 { yyVAL.alterOptions = nil } - case 325: + case 326: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1848 +//line sql.y:1852 { yyVAL.alterOptions = yyDollar[1].alterOptions } - case 326: + case 327: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:1852 +//line sql.y:1856 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, &OrderByOption{Cols: yyDollar[5].columns}) } - case 327: + case 328: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1856 +//line sql.y:1860 { yyVAL.alterOptions = yyDollar[1].alterOptions } - case 328: + case 329: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1860 +//line sql.y:1864 { yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOptions...) } - case 329: + case 330: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:1864 +//line sql.y:1868 { yyVAL.alterOptions = append(append(yyDollar[1].alterOptions, yyDollar[3].alterOptions...), &OrderByOption{Cols: yyDollar[7].columns}) } - case 330: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1870 - { - yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} - } case 331: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1874 { - yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption) + yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } case 332: yyDollar = yyS[yypt-3 : yypt+1] @@ -7172,16 +7202,16 @@ yydefault: yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption) } case 333: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1884 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:1882 { - yyVAL.alterOption = yyDollar[1].tableOptions + yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption) } case 334: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1888 { - yyVAL.alterOption = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinition} + yyVAL.alterOption = yyDollar[1].tableOptions } case 335: yyDollar = yyS[yypt-2 : yypt+1] @@ -7193,133 +7223,133 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1896 { - yyVAL.alterOption = &AddIndexDefinition{IndexDefinition: yyDollar[2].indexDefinition} + yyVAL.alterOption = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinition} } case 337: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1900 { - yyVAL.alterOption = &AddColumns{Columns: yyDollar[4].columnDefinitions} + yyVAL.alterOption = &AddIndexDefinition{IndexDefinition: yyDollar[2].indexDefinition} } case 338: yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:1904 { - yyVAL.alterOption = &AddColumns{Columns: []*ColumnDefinition{yyDollar[3].columnDefinition}, First: yyDollar[4].colName, After: yyDollar[5].colName} + yyVAL.alterOption = &AddColumns{Columns: yyDollar[4].columnDefinitions} } case 339: yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:1908 { - yyVAL.alterOption = &AlterColumn{Column: yyDollar[3].colName, DropDefault: true} + yyVAL.alterOption = &AddColumns{Columns: []*ColumnDefinition{yyDollar[3].columnDefinition}, First: yyDollar[4].colName, After: yyDollar[5].colName} } case 340: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:1912 { - yyVAL.alterOption = &AlterColumn{Column: yyDollar[3].colName, DropDefault: false, DefaultVal: yyDollar[6].expr} + yyVAL.alterOption = &AlterColumn{Column: yyDollar[3].colName, DropDefault: true} } case 341: yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:1916 { - yyVAL.alterOption = &ChangeColumn{OldColumn: yyDollar[3].colName, NewColDefinition: yyDollar[4].columnDefinition, First: yyDollar[5].colName, After: yyDollar[6].colName} + yyVAL.alterOption = &AlterColumn{Column: yyDollar[3].colName, DropDefault: false, DefaultVal: yyDollar[6].expr} } case 342: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:1920 { - yyVAL.alterOption = &ModifyColumn{NewColDefinition: yyDollar[3].columnDefinition, First: yyDollar[4].colName, After: yyDollar[5].colName} + yyVAL.alterOption = &ChangeColumn{OldColumn: yyDollar[3].colName, NewColDefinition: yyDollar[4].columnDefinition, First: yyDollar[5].colName, After: yyDollar[6].colName} } case 343: yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:1924 { - yyVAL.alterOption = &AlterCharset{CharacterSet: yyDollar[4].str, Collate: yyDollar[5].str} + yyVAL.alterOption = &ModifyColumn{NewColDefinition: yyDollar[3].columnDefinition, First: yyDollar[4].colName, After: yyDollar[5].colName} } case 344: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:1928 { - yyVAL.alterOption = &KeyState{Enable: false} + yyVAL.alterOption = &AlterCharset{CharacterSet: yyDollar[4].str, Collate: yyDollar[5].str} } case 345: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1932 { - yyVAL.alterOption = &KeyState{Enable: true} + yyVAL.alterOption = &KeyState{Enable: false} } case 346: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1936 { - yyVAL.alterOption = &TablespaceOperation{Import: false} + yyVAL.alterOption = &KeyState{Enable: true} } case 347: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1940 { - yyVAL.alterOption = &TablespaceOperation{Import: true} + yyVAL.alterOption = &TablespaceOperation{Import: false} } case 348: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:1944 { - yyVAL.alterOption = &DropColumn{Name: yyDollar[3].colName} + yyVAL.alterOption = &TablespaceOperation{Import: true} } case 349: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1948 { - yyVAL.alterOption = &DropKey{Type: NormalKeyType, Name: yyDollar[3].colIdent.String()} + yyVAL.alterOption = &DropColumn{Name: yyDollar[3].colName} } case 350: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1952 { - yyVAL.alterOption = &DropKey{Type: PrimaryKeyType} + yyVAL.alterOption = &DropKey{Type: NormalKeyType, Name: yyDollar[3].colIdent.String()} } case 351: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1956 { - yyVAL.alterOption = &DropKey{Type: ForeignKeyType, Name: yyDollar[4].colIdent.String()} + yyVAL.alterOption = &DropKey{Type: PrimaryKeyType} } case 352: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:1960 { - yyVAL.alterOption = &Force{} + yyVAL.alterOption = &DropKey{Type: ForeignKeyType, Name: yyDollar[4].colIdent.String()} } case 353: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1964 { - yyVAL.alterOption = &RenameTableName{Table: yyDollar[3].tableName} + yyVAL.alterOption = &Force{} } case 354: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1968 { - yyVAL.alterOption = &RenameIndex{OldName: yyDollar[3].colIdent.String(), NewName: yyDollar[5].colIdent.String()} + yyVAL.alterOption = &RenameTableName{Table: yyDollar[3].tableName} } case 355: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1974 + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:1972 { - yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} + yyVAL.alterOption = &RenameIndex{OldName: yyDollar[3].colIdent.String(), NewName: yyDollar[5].colIdent.String()} } case 356: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:1978 { - yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption) + yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } case 357: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:1984 +//line sql.y:1982 { - yyVAL.alterOption = AlgorithmValue(string(yyDollar[3].str)) + yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption) } case 358: yyDollar = yyS[yypt-3 : yypt+1] @@ -7337,99 +7367,105 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:1996 { - yyVAL.alterOption = &LockOption{Type: DefaultType} + yyVAL.alterOption = AlgorithmValue(string(yyDollar[3].str)) } case 361: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2000 { - yyVAL.alterOption = &LockOption{Type: NoneType} + yyVAL.alterOption = &LockOption{Type: DefaultType} } case 362: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2004 { - yyVAL.alterOption = &LockOption{Type: SharedType} + yyVAL.alterOption = &LockOption{Type: NoneType} } case 363: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2008 { - yyVAL.alterOption = &LockOption{Type: ExclusiveType} + yyVAL.alterOption = &LockOption{Type: SharedType} } case 364: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2012 { - yyVAL.alterOption = &Validation{With: true} + yyVAL.alterOption = &LockOption{Type: ExclusiveType} } case 365: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2016 { - yyVAL.alterOption = &Validation{With: false} + yyVAL.alterOption = &Validation{With: true} } case 366: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2022 +//line sql.y:2020 + { + yyVAL.alterOption = &Validation{With: false} + } + case 367: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2026 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions yyVAL.statement = yyDollar[1].alterTable } - case 367: + case 368: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2028 +//line sql.y:2032 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions yyDollar[1].alterTable.PartitionSpec = &PartitionSpec{Action: RemoveAction} yyVAL.statement = yyDollar[1].alterTable } - case 368: + case 369: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2035 +//line sql.y:2039 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions yyDollar[1].alterTable.PartitionSpec = yyDollar[4].partSpec yyVAL.statement = yyDollar[1].alterTable } - case 369: + case 370: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2042 +//line sql.y:2046 { yyDollar[1].alterTable.FullyParsed = true yyDollar[1].alterTable.PartitionSpec = yyDollar[2].partSpec yyVAL.statement = yyDollar[1].alterTable } - case 370: + case 371: yyDollar = yyS[yypt-10 : yypt+1] -//line sql.y:2048 +//line sql.y:2052 { yyVAL.statement = &AlterView{ViewName: yyDollar[6].tableName.ToViewName(), Algorithm: yyDollar[2].str, Definer: yyDollar[3].str, Security: yyDollar[4].str, Columns: yyDollar[7].columns, Select: yyDollar[9].selStmt, CheckOption: yyDollar[10].str} } - case 371: + case 372: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2052 +//line sql.y:2056 { yyDollar[1].alterDatabase.FullyParsed = true yyDollar[1].alterDatabase.DBName = yyDollar[2].colIdent.String() yyDollar[1].alterDatabase.AlterOptions = yyDollar[3].collateAndCharsets yyVAL.statement = yyDollar[1].alterDatabase } - case 372: + case 373: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2059 +//line sql.y:2063 { yyDollar[1].alterDatabase.FullyParsed = true yyDollar[1].alterDatabase.DBName = yyDollar[2].colIdent.String() yyDollar[1].alterDatabase.UpdateDataDirectory = true yyVAL.statement = yyDollar[1].alterDatabase } - case 373: + case 374: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2066 +//line sql.y:2070 { yyVAL.statement = &AlterVschema{ Action: CreateVindexDDLAction, @@ -7441,9 +7477,9 @@ yydefault: }, } } - case 374: + case 375: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2078 +//line sql.y:2082 { yyVAL.statement = &AlterVschema{ Action: DropVindexDDLAction, @@ -7453,21 +7489,21 @@ yydefault: }, } } - case 375: + case 376: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2088 +//line sql.y:2092 { yyVAL.statement = &AlterVschema{Action: AddVschemaTableDDLAction, Table: yyDollar[5].tableName} } - case 376: + case 377: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2092 +//line sql.y:2096 { yyVAL.statement = &AlterVschema{Action: DropVschemaTableDDLAction, Table: yyDollar[5].tableName} } - case 377: + case 378: yyDollar = yyS[yypt-12 : yypt+1] -//line sql.y:2096 +//line sql.y:2100 { yyVAL.statement = &AlterVschema{ Action: AddColVindexDDLAction, @@ -7480,9 +7516,9 @@ yydefault: VindexCols: yyDollar[9].columns, } } - case 378: + case 379: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2109 +//line sql.y:2113 { yyVAL.statement = &AlterVschema{ Action: DropColVindexDDLAction, @@ -7492,15 +7528,15 @@ yydefault: }, } } - case 379: + case 380: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2119 +//line sql.y:2123 { yyVAL.statement = &AlterVschema{Action: AddSequenceDDLAction, Table: yyDollar[5].tableName} } - case 380: + case 381: yyDollar = yyS[yypt-9 : yypt+1] -//line sql.y:2123 +//line sql.y:2127 { yyVAL.statement = &AlterVschema{ Action: AddAutoIncDDLAction, @@ -7511,146 +7547,140 @@ yydefault: }, } } - case 381: - yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2136 - { - yyVAL.partSpec = &PartitionSpec{Action: AddAction, Definitions: []*PartitionDefinition{yyDollar[4].partDef}} - } case 382: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2140 { - yyVAL.partSpec = &PartitionSpec{Action: DropAction, Names: yyDollar[3].partitions} + yyVAL.partSpec = &PartitionSpec{Action: AddAction, Definitions: []*PartitionDefinition{yyDollar[4].partDef}} } case 383: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2144 { - yyVAL.partSpec = &PartitionSpec{Action: ReorganizeAction, Names: yyDollar[3].partitions, Definitions: yyDollar[6].partDefs} + yyVAL.partSpec = &PartitionSpec{Action: DropAction, Names: yyDollar[3].partitions} } case 384: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:2148 { - yyVAL.partSpec = &PartitionSpec{Action: DiscardAction, Names: yyDollar[3].partitions} + yyVAL.partSpec = &PartitionSpec{Action: ReorganizeAction, Names: yyDollar[3].partitions, Definitions: yyDollar[6].partDefs} } case 385: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2152 { - yyVAL.partSpec = &PartitionSpec{Action: DiscardAction, IsAll: true} + yyVAL.partSpec = &PartitionSpec{Action: DiscardAction, Names: yyDollar[3].partitions} } case 386: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2156 { - yyVAL.partSpec = &PartitionSpec{Action: ImportAction, Names: yyDollar[3].partitions} + yyVAL.partSpec = &PartitionSpec{Action: DiscardAction, IsAll: true} } case 387: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2160 { - yyVAL.partSpec = &PartitionSpec{Action: ImportAction, IsAll: true} + yyVAL.partSpec = &PartitionSpec{Action: ImportAction, Names: yyDollar[3].partitions} } case 388: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2164 { - yyVAL.partSpec = &PartitionSpec{Action: TruncateAction, Names: yyDollar[3].partitions} + yyVAL.partSpec = &PartitionSpec{Action: ImportAction, IsAll: true} } case 389: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2168 { - yyVAL.partSpec = &PartitionSpec{Action: TruncateAction, IsAll: true} + yyVAL.partSpec = &PartitionSpec{Action: TruncateAction, Names: yyDollar[3].partitions} } case 390: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2172 { - yyVAL.partSpec = &PartitionSpec{Action: CoalesceAction, Number: NewIntLiteral(yyDollar[3].str)} + yyVAL.partSpec = &PartitionSpec{Action: TruncateAction, IsAll: true} } case 391: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2176 { - yyVAL.partSpec = &PartitionSpec{Action: ExchangeAction, Names: Partitions{yyDollar[3].colIdent}, TableName: yyDollar[6].tableName, WithoutValidation: yyDollar[7].boolean} + yyVAL.partSpec = &PartitionSpec{Action: CoalesceAction, Number: NewIntLiteral(yyDollar[3].str)} } case 392: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:2180 { - yyVAL.partSpec = &PartitionSpec{Action: AnalyzeAction, Names: yyDollar[3].partitions} + yyVAL.partSpec = &PartitionSpec{Action: ExchangeAction, Names: Partitions{yyDollar[3].colIdent}, TableName: yyDollar[6].tableName, WithoutValidation: yyDollar[7].boolean} } case 393: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2184 { - yyVAL.partSpec = &PartitionSpec{Action: AnalyzeAction, IsAll: true} + yyVAL.partSpec = &PartitionSpec{Action: AnalyzeAction, Names: yyDollar[3].partitions} } case 394: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2188 { - yyVAL.partSpec = &PartitionSpec{Action: CheckAction, Names: yyDollar[3].partitions} + yyVAL.partSpec = &PartitionSpec{Action: AnalyzeAction, IsAll: true} } case 395: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2192 { - yyVAL.partSpec = &PartitionSpec{Action: CheckAction, IsAll: true} + yyVAL.partSpec = &PartitionSpec{Action: CheckAction, Names: yyDollar[3].partitions} } case 396: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2196 { - yyVAL.partSpec = &PartitionSpec{Action: OptimizeAction, Names: yyDollar[3].partitions} + yyVAL.partSpec = &PartitionSpec{Action: CheckAction, IsAll: true} } case 397: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2200 { - yyVAL.partSpec = &PartitionSpec{Action: OptimizeAction, IsAll: true} + yyVAL.partSpec = &PartitionSpec{Action: OptimizeAction, Names: yyDollar[3].partitions} } case 398: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2204 { - yyVAL.partSpec = &PartitionSpec{Action: RebuildAction, Names: yyDollar[3].partitions} + yyVAL.partSpec = &PartitionSpec{Action: OptimizeAction, IsAll: true} } case 399: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2208 { - yyVAL.partSpec = &PartitionSpec{Action: RebuildAction, IsAll: true} + yyVAL.partSpec = &PartitionSpec{Action: RebuildAction, Names: yyDollar[3].partitions} } case 400: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2212 { - yyVAL.partSpec = &PartitionSpec{Action: RepairAction, Names: yyDollar[3].partitions} + yyVAL.partSpec = &PartitionSpec{Action: RebuildAction, IsAll: true} } case 401: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2216 { - yyVAL.partSpec = &PartitionSpec{Action: RepairAction, IsAll: true} + yyVAL.partSpec = &PartitionSpec{Action: RepairAction, Names: yyDollar[3].partitions} } case 402: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2220 { - yyVAL.partSpec = &PartitionSpec{Action: UpgradeAction} + yyVAL.partSpec = &PartitionSpec{Action: RepairAction, IsAll: true} } case 403: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2225 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2224 { - yyVAL.boolean = false + yyVAL.partSpec = &PartitionSpec{Action: UpgradeAction} } case 404: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2229 { yyVAL.boolean = false @@ -7659,59 +7689,65 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2233 { - yyVAL.boolean = true + yyVAL.boolean = false } case 406: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2237 + { + yyVAL.boolean = true + } + case 407: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2240 +//line sql.y:2244 { yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef} } - case 407: + case 408: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2244 +//line sql.y:2248 { yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef) } - case 408: + case 409: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2250 +//line sql.y:2254 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr} } - case 409: + case 410: yyDollar = yyS[yypt-8 : yypt+1] -//line sql.y:2254 +//line sql.y:2258 { yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true} } - case 410: + case 411: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2260 +//line sql.y:2264 { yyVAL.statement = &RenameTable{TablePairs: yyDollar[3].renameTablePairs} } - case 411: + case 412: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2266 +//line sql.y:2270 { yyVAL.renameTablePairs = []*RenameTablePair{{FromTable: yyDollar[1].tableName, ToTable: yyDollar[3].tableName}} } - case 412: + case 413: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2270 +//line sql.y:2274 { yyVAL.renameTablePairs = append(yyDollar[1].renameTablePairs, &RenameTablePair{FromTable: yyDollar[3].tableName, ToTable: yyDollar[5].tableName}) } - case 413: + case 414: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2276 +//line sql.y:2280 { yyVAL.statement = &DropTable{FromTables: yyDollar[5].tableNames, IfExists: yyDollar[4].boolean, Temp: yyDollar[2].boolean} } - case 414: + case 415: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2280 +//line sql.y:2284 { // Change this to an alter statement if yyDollar[3].colIdent.Lowered() == "primary" { @@ -7720,59 +7756,53 @@ yydefault: yyVAL.statement = &AlterTable{Table: yyDollar[5].tableName, AlterOptions: append([]AlterOption{&DropKey{Type: NormalKeyType, Name: yyDollar[3].colIdent.String()}}, yyDollar[6].alterOptions...)} } } - case 415: + case 416: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2289 +//line sql.y:2293 { yyVAL.statement = &DropView{FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean} } - case 416: + case 417: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2293 +//line sql.y:2297 { yyVAL.statement = &DropDatabase{Comments: Comments(yyDollar[3].strs), DBName: string(yyDollar[5].colIdent.String()), IfExists: yyDollar[4].boolean} } - case 417: + case 418: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2299 +//line sql.y:2303 { yyVAL.statement = &TruncateTable{Table: yyDollar[3].tableName} } - case 418: + case 419: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2303 +//line sql.y:2307 { yyVAL.statement = &TruncateTable{Table: yyDollar[2].tableName} } - case 419: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2308 - { - yyVAL.statement = &OtherRead{} - } case 420: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2314 +//line sql.y:2312 { - yyVAL.statement = &Show{&ShowBasic{Command: Charset, Filter: yyDollar[3].showFilter}} + yyVAL.statement = &OtherRead{} } case 421: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2318 { - yyVAL.statement = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Charset, Filter: yyDollar[3].showFilter}} } case 422: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2322 { - yyVAL.statement = &Show{&ShowBasic{Full: yyDollar[2].boolean, Command: Column, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilter}} } case 423: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:2326 { - yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Full: yyDollar[2].boolean, Command: Column, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} } case 424: yyDollar = yyS[yypt-3 : yypt+1] @@ -7784,7 +7814,7 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2334 { - yyVAL.statement = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}} } case 426: yyDollar = yyS[yypt-3 : yypt+1] @@ -7793,185 +7823,185 @@ yydefault: yyVAL.statement = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilter}} } case 427: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2342 { - yyVAL.statement = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilter}} } case 428: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2346 { - yyVAL.statement = &Show{&ShowBasic{Command: Index, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilter}} } case 429: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:2350 { - yyVAL.statement = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Index, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}} } case 430: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2354 { - yyVAL.statement = &Show{&ShowBasic{Command: Privilege}} + yyVAL.statement = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } case 431: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2358 { - yyVAL.statement = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Privilege}} } case 432: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2362 { - yyVAL.statement = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilter}} } case 433: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2366 { - yyVAL.statement = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilter}} } case 434: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2370 { - yyVAL.statement = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilter}} } case 435: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2374 { - yyVAL.statement = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilter}} } case 436: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2378 { - yyVAL.statement = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilter}} } case 437: yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2382 { - yyVAL.statement = &Show{&ShowBasic{Command: Table, Full: yyDollar[2].boolean, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } case 438: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2386 { - yyVAL.statement = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].str, Filter: yyDollar[4].showFilter}} + yyVAL.statement = &Show{&ShowBasic{Command: Table, Full: yyDollar[2].boolean, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}} } case 439: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2390 { - yyVAL.statement = &Show{&ShowCreate{Command: CreateDb, Op: yyDollar[4].tableName}} + yyVAL.statement = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].str, Filter: yyDollar[4].showFilter}} } case 440: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2394 { - yyVAL.statement = &Show{&ShowCreate{Command: CreateE, Op: yyDollar[4].tableName}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateDb, Op: yyDollar[4].tableName}} } case 441: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2398 { - yyVAL.statement = &Show{&ShowCreate{Command: CreateF, Op: yyDollar[4].tableName}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateE, Op: yyDollar[4].tableName}} } case 442: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2402 { - yyVAL.statement = &Show{&ShowCreate{Command: CreateProc, Op: yyDollar[4].tableName}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateF, Op: yyDollar[4].tableName}} } case 443: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2406 { - yyVAL.statement = &Show{&ShowCreate{Command: CreateTbl, Op: yyDollar[4].tableName}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateProc, Op: yyDollar[4].tableName}} } case 444: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2410 { - yyVAL.statement = &Show{&ShowCreate{Command: CreateTr, Op: yyDollar[4].tableName}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateTbl, Op: yyDollar[4].tableName}} } case 445: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2414 { - yyVAL.statement = &Show{&ShowCreate{Command: CreateV, Op: yyDollar[4].tableName}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateTr, Op: yyDollar[4].tableName}} } case 446: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2418 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowCreate{Command: CreateV, Op: yyDollar[4].tableName}} } case 447: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2422 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Scope: ImplicitScope}} } case 448: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2426 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}} } case 449: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2430 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Scope: ImplicitScope}} } case 450: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2434 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Table: yyDollar[4].tableName, Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}} } case 451: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2438 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } case 452: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2442 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Table: yyDollar[4].tableName, Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}} } case 453: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2446 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[3].str), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Table: yyDollar[4].tableName, Scope: ImplicitScope}} } case 454: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2450 { - showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} - yyVAL.statement = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[3].str), Scope: ImplicitScope}} } case 455: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2455 +//line sql.y:2454 { - yyVAL.statement = &Show{&ShowBasic{Command: VitessMigrations, Filter: yyDollar[4].showFilter, DbName: yyDollar[3].str}} + showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter} + yyVAL.statement = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt}} } case 456: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:2459 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowBasic{Command: VitessMigrations, Filter: yyDollar[4].showFilter, DbName: yyDollar[3].str}} } case 457: yyDollar = yyS[yypt-3 : yypt+1] @@ -7980,37 +8010,37 @@ yydefault: yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Scope: ImplicitScope}} } case 458: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2467 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Scope: ImplicitScope}} } case 459: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:2471 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}} } case 460: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2475 + { + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}} + } + case 461: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2476 +//line sql.y:2480 { // This should probably be a different type (ShowVitessTopoOpt), but // just getting the thing working for now showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter} yyVAL.statement = &Show{&ShowLegacy{Type: yyDollar[2].str, ShowTablesOpt: showTablesOpt}} } - case 461: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2490 - { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}} - } case 462: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2494 { - yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}} + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}} } case 463: yyDollar = yyS[yypt-3 : yypt+1] @@ -8019,10 +8049,10 @@ yydefault: yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}} } case 464: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2504 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2502 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}} } case 465: yyDollar = yyS[yypt-1 : yypt+1] @@ -8031,34 +8061,34 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 466: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2514 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2512 { - yyVAL.str = "" + yyVAL.str = string(yyDollar[1].str) } case 467: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2518 { - yyVAL.str = "extended " + yyVAL.str = "" } case 468: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2524 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2522 { - yyVAL.boolean = false + yyVAL.str = "extended " } case 469: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2528 { - yyVAL.boolean = true + yyVAL.boolean = false } case 470: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2534 +//line sql.y:2532 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.boolean = true } case 471: yyDollar = yyS[yypt-1 : yypt+1] @@ -8067,16 +8097,16 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 472: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2544 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2542 { - yyVAL.str = "" + yyVAL.str = string(yyDollar[1].str) } case 473: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2548 { - yyVAL.str = yyDollar[2].tableIdent.v + yyVAL.str = "" } case 474: yyDollar = yyS[yypt-2 : yypt+1] @@ -8085,43 +8115,43 @@ yydefault: yyVAL.str = yyDollar[2].tableIdent.v } case 475: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2558 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2556 { - yyVAL.showFilter = nil + yyVAL.str = yyDollar[2].tableIdent.v } case 476: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2562 { - yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].str)} + yyVAL.showFilter = nil } case 477: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2566 { - yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} + yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].str)} } case 478: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2572 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2570 { - yyVAL.showFilter = nil + yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr} } case 479: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2576 { - yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].str)} + yyVAL.showFilter = nil } case 480: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2582 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2580 { - yyVAL.empty = struct{}{} + yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].str)} } case 481: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2586 { yyVAL.empty = struct{}{} @@ -8133,124 +8163,124 @@ yydefault: yyVAL.empty = struct{}{} } case 483: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2596 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2594 { - yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} + yyVAL.empty = struct{}{} } case 484: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2600 { - yyVAL.statement = &Use{DBName: TableIdent{v: ""}} + yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent} } case 485: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2606 +//line sql.y:2604 { - yyVAL.statement = &Begin{} + yyVAL.statement = &Use{DBName: TableIdent{v: ""}} } case 486: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2610 { yyVAL.statement = &Begin{} } case 487: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2614 + { + yyVAL.statement = &Begin{} + } + case 488: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2616 +//line sql.y:2620 { yyVAL.statement = &Commit{} } - case 488: + case 489: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2622 +//line sql.y:2626 { yyVAL.statement = &Rollback{} } - case 489: + case 490: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2626 +//line sql.y:2630 { yyVAL.statement = &SRollback{Name: yyDollar[5].colIdent} } - case 490: + case 491: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2631 +//line sql.y:2635 { yyVAL.empty = struct{}{} } - case 491: + case 492: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2633 +//line sql.y:2637 { yyVAL.empty = struct{}{} } - case 492: + case 493: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2636 +//line sql.y:2640 { yyVAL.empty = struct{}{} } - case 493: + case 494: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2638 +//line sql.y:2642 { yyVAL.empty = struct{}{} } - case 494: + case 495: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2643 +//line sql.y:2647 { yyVAL.statement = &Savepoint{Name: yyDollar[2].colIdent} } - case 495: + case 496: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2649 +//line sql.y:2653 { yyVAL.statement = &Release{Name: yyDollar[3].colIdent} } - case 496: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2654 - { - yyVAL.explainType = EmptyType - } case 497: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2658 { - yyVAL.explainType = JSONType + yyVAL.explainType = EmptyType } case 498: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2662 { - yyVAL.explainType = TreeType + yyVAL.explainType = JSONType } case 499: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2666 { - yyVAL.explainType = VitessType + yyVAL.explainType = TreeType } case 500: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2670 { - yyVAL.explainType = TraditionalType + yyVAL.explainType = VitessType } case 501: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2674 { - yyVAL.explainType = AnalyzeType + yyVAL.explainType = TraditionalType } case 502: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2680 +//line sql.y:2678 { - yyVAL.str = yyDollar[1].str + yyVAL.explainType = AnalyzeType } case 503: yyDollar = yyS[yypt-1 : yypt+1] @@ -8266,15 +8296,15 @@ yydefault: } case 505: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2694 +//line sql.y:2692 { - yyVAL.statement = yyDollar[1].selStmt + yyVAL.str = yyDollar[1].str } case 506: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2698 { - yyVAL.statement = yyDollar[1].statement + yyVAL.statement = yyDollar[1].selStmt } case 507: yyDollar = yyS[yypt-1 : yypt+1] @@ -8289,40 +8319,40 @@ yydefault: yyVAL.statement = yyDollar[1].statement } case 509: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2711 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2710 { - yyVAL.str = "" + yyVAL.statement = yyDollar[1].statement } case 510: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2715 { - yyVAL.str = yyDollar[1].colIdent.val + yyVAL.str = "" } case 511: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2719 { - yyVAL.str = "'" + string(yyDollar[1].str) + "'" + yyVAL.str = yyDollar[1].colIdent.val } case 512: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2725 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2723 { - yyVAL.statement = &ExplainTab{Table: yyDollar[2].tableName, Wild: yyDollar[3].str} + yyVAL.str = encodeSQLString(yyDollar[1].str) } case 513: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2729 { - yyVAL.statement = &ExplainStmt{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement} + yyVAL.statement = &ExplainTab{Table: yyDollar[2].tableName, Wild: yyDollar[3].str} } case 514: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2735 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2733 { - yyVAL.statement = &OtherAdmin{} + yyVAL.statement = &ExplainStmt{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement} } case 515: yyDollar = yyS[yypt-2 : yypt+1] @@ -8331,113 +8361,113 @@ yydefault: yyVAL.statement = &OtherAdmin{} } case 516: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2743 + { + yyVAL.statement = &OtherAdmin{} + } + case 517: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2745 +//line sql.y:2749 { yyVAL.statement = &LockTables{Tables: yyDollar[3].tableAndLockTypes} } - case 517: + case 518: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2751 +//line sql.y:2755 { yyVAL.tableAndLockTypes = TableAndLockTypes{yyDollar[1].tableAndLockType} } - case 518: + case 519: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2755 +//line sql.y:2759 { yyVAL.tableAndLockTypes = append(yyDollar[1].tableAndLockTypes, yyDollar[3].tableAndLockType) } - case 519: + case 520: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2761 +//line sql.y:2765 { yyVAL.tableAndLockType = &TableAndLockType{Table: yyDollar[1].aliasedTableName, Lock: yyDollar[2].lockType} } - case 520: + case 521: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2767 +//line sql.y:2771 { yyVAL.lockType = Read } - case 521: + case 522: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2771 +//line sql.y:2775 { yyVAL.lockType = ReadLocal } - case 522: + case 523: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2775 +//line sql.y:2779 { yyVAL.lockType = Write } - case 523: + case 524: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2779 +//line sql.y:2783 { yyVAL.lockType = LowPriorityWrite } - case 524: + case 525: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2785 +//line sql.y:2789 { yyVAL.statement = &UnlockTables{} } - case 525: + case 526: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2791 +//line sql.y:2795 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, FlushOptions: yyDollar[3].strs} } - case 526: + case 527: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2795 +//line sql.y:2799 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean} } - case 527: + case 528: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2799 +//line sql.y:2803 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, WithLock: true} } - case 528: + case 529: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:2803 +//line sql.y:2807 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames} } - case 529: + case 530: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:2807 +//line sql.y:2811 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames, WithLock: true} } - case 530: + case 531: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:2811 +//line sql.y:2815 { yyVAL.statement = &Flush{IsLocal: yyDollar[2].boolean, TableNames: yyDollar[4].tableNames, ForExport: true} } - case 531: + case 532: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2817 +//line sql.y:2821 { yyVAL.strs = []string{yyDollar[1].str} } - case 532: + case 533: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2821 +//line sql.y:2825 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str) } - case 533: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2827 - { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) - } case 534: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2831 @@ -8457,10 +8487,10 @@ yydefault: yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 537: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2843 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 538: yyDollar = yyS[yypt-1 : yypt+1] @@ -8475,22 +8505,22 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 540: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2855 { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str + yyVAL.str = string(yyDollar[1].str) } case 541: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2859 { - yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str } case 542: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:2863 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } case 543: yyDollar = yyS[yypt-1 : yypt+1] @@ -8505,16 +8535,16 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 545: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2876 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2875 { - yyVAL.boolean = false + yyVAL.str = string(yyDollar[1].str) } case 546: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:2880 { - yyVAL.boolean = true + yyVAL.boolean = false } case 547: yyDollar = yyS[yypt-1 : yypt+1] @@ -8523,155 +8553,155 @@ yydefault: yyVAL.boolean = true } case 548: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2888 + { + yyVAL.boolean = true + } + case 549: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2889 +//line sql.y:2893 { yyVAL.str = "" } - case 549: + case 550: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2893 +//line sql.y:2897 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) + " " + yyDollar[3].colIdent.String() } - case 550: + case 551: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2898 +//line sql.y:2902 { setAllowComments(yylex, true) } - case 551: + case 552: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2902 +//line sql.y:2906 { yyVAL.strs = yyDollar[2].strs setAllowComments(yylex, false) } - case 552: + case 553: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2908 +//line sql.y:2912 { yyVAL.strs = nil } - case 553: + case 554: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2912 +//line sql.y:2916 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[2].str) } - case 554: + case 555: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2918 +//line sql.y:2922 { yyVAL.boolean = true } - case 555: + case 556: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2922 +//line sql.y:2926 { yyVAL.boolean = false } - case 556: + case 557: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2926 +//line sql.y:2930 { yyVAL.boolean = true } - case 557: + case 558: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2931 +//line sql.y:2935 { yyVAL.str = "" } - case 558: + case 559: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2935 +//line sql.y:2939 { yyVAL.str = SQLNoCacheStr } - case 559: + case 560: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2939 +//line sql.y:2943 { yyVAL.str = SQLCacheStr } - case 560: + case 561: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2944 +//line sql.y:2948 { yyVAL.boolean = false } - case 561: + case 562: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2948 +//line sql.y:2952 { yyVAL.boolean = true } - case 562: + case 563: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2952 +//line sql.y:2956 { yyVAL.boolean = true } - case 563: + case 564: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2957 +//line sql.y:2961 { yyVAL.selectExprs = nil } - case 564: + case 565: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2961 +//line sql.y:2965 { yyVAL.selectExprs = yyDollar[1].selectExprs } - case 565: + case 566: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2966 +//line sql.y:2970 { yyVAL.strs = nil } - case 566: + case 567: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2970 +//line sql.y:2974 { yyVAL.strs = []string{yyDollar[1].str} } - case 567: + case 568: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2974 +//line sql.y:2978 { // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce' yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str} } - case 568: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2978 - { - yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} - } case 569: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:2982 { - yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} + yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str} } case 570: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2988 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:2986 { - yyVAL.str = SQLNoCacheStr + yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str} } case 571: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2992 { - yyVAL.str = SQLCacheStr + yyVAL.str = SQLNoCacheStr } case 572: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:2996 { - yyVAL.str = DistinctStr + yyVAL.str = SQLCacheStr } case 573: yyDollar = yyS[yypt-1 : yypt+1] @@ -8683,182 +8713,182 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3004 { - yyVAL.str = StraightJoinHint + yyVAL.str = DistinctStr } case 575: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3008 { - yyVAL.str = SQLCalcFoundRowsStr + yyVAL.str = StraightJoinHint } case 576: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3012 { - yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway + yyVAL.str = SQLCalcFoundRowsStr } case 577: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3018 +//line sql.y:3016 { - yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} + yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway } case 578: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3022 { - yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) + yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr} } case 579: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3026 + { + yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr) + } + case 580: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3028 +//line sql.y:3032 { yyVAL.selectExpr = &StarExpr{} } - case 580: + case 581: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3032 +//line sql.y:3036 { yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent} } - case 581: + case 582: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3036 +//line sql.y:3040 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}} } - case 582: + case 583: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3040 +//line sql.y:3044 { yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}} } - case 583: + case 584: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3045 +//line sql.y:3049 { yyVAL.colIdent = ColIdent{} } - case 584: + case 585: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3049 +//line sql.y:3053 { yyVAL.colIdent = yyDollar[1].colIdent } - case 585: + case 586: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3053 +//line sql.y:3057 { yyVAL.colIdent = yyDollar[2].colIdent } - case 587: + case 588: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3060 +//line sql.y:3064 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].str)) } - case 588: + case 589: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3065 +//line sql.y:3069 { yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}} } - case 589: + case 590: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3069 +//line sql.y:3073 { yyVAL.tableExprs = yyDollar[2].tableExprs } - case 590: + case 591: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3075 +//line sql.y:3079 { yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr} } - case 591: + case 592: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3079 +//line sql.y:3083 { yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr) } - case 594: + case 595: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3089 +//line sql.y:3093 { yyVAL.tableExpr = yyDollar[1].aliasedTableName } - case 595: + case 596: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3093 +//line sql.y:3097 { yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].derivedTable, As: yyDollar[3].tableIdent} } - case 596: + case 597: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3097 +//line sql.y:3101 { yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs} } - case 597: + case 598: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3103 +//line sql.y:3107 { yyVAL.derivedTable = &DerivedTable{yyDollar[2].selStmt} } - case 598: + case 599: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3109 +//line sql.y:3113 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints} } - case 599: + case 600: yyDollar = yyS[yypt-7 : yypt+1] -//line sql.y:3113 +//line sql.y:3117 { yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints} } - case 600: + case 601: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3118 +//line sql.y:3122 { yyVAL.columns = nil } - case 601: + case 602: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3122 +//line sql.y:3126 { yyVAL.columns = yyDollar[2].columns } - case 602: + case 603: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3128 +//line sql.y:3132 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 603: + case 604: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3132 +//line sql.y:3136 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 604: + case 605: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3138 +//line sql.y:3142 { yyVAL.partitions = Partitions{yyDollar[1].colIdent} } - case 605: + case 606: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3142 +//line sql.y:3146 { yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent) } - case 606: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3155 - { - yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} - } case 607: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:3159 @@ -8872,91 +8902,91 @@ yydefault: yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 609: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:3167 { - yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr} + yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition} } case 610: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3171 + { + yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr} + } + case 611: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3173 +//line sql.y:3177 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 611: + case 612: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3175 +//line sql.y:3179 { yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns} } - case 612: + case 613: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3179 +//line sql.y:3183 { yyVAL.joinCondition = JoinCondition{} } - case 613: + case 614: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3181 +//line sql.y:3185 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 614: + case 615: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3185 +//line sql.y:3189 { yyVAL.joinCondition = JoinCondition{} } - case 615: + case 616: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3187 +//line sql.y:3191 { yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr} } - case 616: + case 617: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3190 +//line sql.y:3194 { yyVAL.empty = struct{}{} } - case 617: + case 618: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3192 +//line sql.y:3196 { yyVAL.empty = struct{}{} } - case 618: + case 619: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3195 +//line sql.y:3199 { yyVAL.tableIdent = NewTableIdent("") } - case 619: + case 620: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3199 +//line sql.y:3203 { yyVAL.tableIdent = yyDollar[1].tableIdent } - case 620: + case 621: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3203 +//line sql.y:3207 { yyVAL.tableIdent = yyDollar[2].tableIdent } - case 622: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3210 - { - yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].str)) - } case 623: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3216 +//line sql.y:3214 { - yyVAL.joinType = NormalJoinType + yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].str)) } case 624: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3220 { yyVAL.joinType = NormalJoinType @@ -8968,44 +8998,50 @@ yydefault: yyVAL.joinType = NormalJoinType } case 626: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3230 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3228 { - yyVAL.joinType = StraightJoinType + yyVAL.joinType = NormalJoinType } case 627: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3236 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3234 { - yyVAL.joinType = LeftJoinType + yyVAL.joinType = StraightJoinType } case 628: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3240 { yyVAL.joinType = LeftJoinType } case 629: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3244 { - yyVAL.joinType = RightJoinType + yyVAL.joinType = LeftJoinType } case 630: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3248 { yyVAL.joinType = RightJoinType } case 631: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3254 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3252 { - yyVAL.joinType = NaturalJoinType + yyVAL.joinType = RightJoinType } case 632: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3258 + { + yyVAL.joinType = NaturalJoinType + } + case 633: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3262 { if yyDollar[2].joinType == LeftJoinType { yyVAL.joinType = NaturalLeftJoinType @@ -9013,419 +9049,413 @@ yydefault: yyVAL.joinType = NaturalRightJoinType } } - case 633: + case 634: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3268 +//line sql.y:3272 { yyVAL.tableName = yyDollar[2].tableName } - case 634: + case 635: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3272 +//line sql.y:3276 { yyVAL.tableName = yyDollar[1].tableName } - case 635: + case 636: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3278 +//line sql.y:3282 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 636: + case 637: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3282 +//line sql.y:3286 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent} } - case 637: + case 638: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3288 +//line sql.y:3292 { yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent} } - case 638: + case 639: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3293 +//line sql.y:3297 { yyVAL.indexHints = nil } - case 639: + case 640: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3297 +//line sql.y:3301 { yyVAL.indexHints = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columns} } - case 640: + case 641: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3301 +//line sql.y:3305 { yyVAL.indexHints = &IndexHints{Type: UseOp} } - case 641: + case 642: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3305 +//line sql.y:3309 { yyVAL.indexHints = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columns} } - case 642: + case 643: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3309 +//line sql.y:3313 { yyVAL.indexHints = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columns} } - case 643: + case 644: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3314 +//line sql.y:3318 { yyVAL.expr = nil } - case 644: + case 645: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3318 +//line sql.y:3322 { yyVAL.expr = yyDollar[2].expr } - case 645: + case 646: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3324 +//line sql.y:3328 { yyVAL.expr = yyDollar[1].expr } - case 646: + case 647: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3328 +//line sql.y:3332 { yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 647: + case 648: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3332 +//line sql.y:3336 { yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 648: + case 649: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3336 +//line sql.y:3340 { yyVAL.expr = &XorExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr} } - case 649: + case 650: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3340 +//line sql.y:3344 { yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr} } - case 650: + case 651: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3344 +//line sql.y:3348 { yyVAL.expr = &IsExpr{Operator: yyDollar[3].isExprOperator, Expr: yyDollar[1].expr} } - case 651: + case 652: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3348 +//line sql.y:3352 { yyVAL.expr = yyDollar[1].expr } - case 652: + case 653: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3352 +//line sql.y:3356 { yyVAL.expr = &Default{ColName: yyDollar[2].str} } - case 653: + case 654: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3358 +//line sql.y:3362 { yyVAL.str = "" } - case 654: + case 655: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3362 +//line sql.y:3366 { yyVAL.str = string(yyDollar[2].colIdent.String()) } - case 655: + case 656: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3368 +//line sql.y:3372 { yyVAL.boolVal = BoolVal(true) } - case 656: + case 657: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3372 +//line sql.y:3376 { yyVAL.boolVal = BoolVal(false) } - case 657: + case 658: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3378 +//line sql.y:3382 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].comparisonExprOperator, Right: yyDollar[3].expr} } - case 658: + case 659: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3382 +//line sql.y:3386 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InOp, Right: yyDollar[3].colTuple} } - case 659: + case 660: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3386 +//line sql.y:3390 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInOp, Right: yyDollar[4].colTuple} } - case 660: + case 661: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3390 +//line sql.y:3394 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeOp, Right: yyDollar[3].expr, Escape: yyDollar[4].expr} } - case 661: + case 662: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3394 +//line sql.y:3398 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeOp, Right: yyDollar[4].expr, Escape: yyDollar[5].expr} } - case 662: + case 663: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3398 +//line sql.y:3402 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpOp, Right: yyDollar[3].expr} } - case 663: + case 664: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3402 +//line sql.y:3406 { yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpOp, Right: yyDollar[4].expr} } - case 664: + case 665: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3406 +//line sql.y:3410 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenOp, From: yyDollar[3].expr, To: yyDollar[5].expr} } - case 665: + case 666: yyDollar = yyS[yypt-6 : yypt+1] -//line sql.y:3410 +//line sql.y:3414 { yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenOp, From: yyDollar[4].expr, To: yyDollar[6].expr} } - case 666: + case 667: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3414 +//line sql.y:3418 { yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery} } - case 667: + case 668: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3420 +//line sql.y:3424 { yyVAL.isExprOperator = IsNullOp } - case 668: + case 669: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3424 +//line sql.y:3428 { yyVAL.isExprOperator = IsNotNullOp } - case 669: + case 670: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3428 +//line sql.y:3432 { yyVAL.isExprOperator = IsTrueOp } - case 670: + case 671: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3432 +//line sql.y:3436 { yyVAL.isExprOperator = IsNotTrueOp } - case 671: + case 672: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3436 +//line sql.y:3440 { yyVAL.isExprOperator = IsFalseOp } - case 672: + case 673: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3440 +//line sql.y:3444 { yyVAL.isExprOperator = IsNotFalseOp } - case 673: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3446 - { - yyVAL.comparisonExprOperator = EqualOp - } case 674: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3450 { - yyVAL.comparisonExprOperator = LessThanOp + yyVAL.comparisonExprOperator = EqualOp } case 675: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3454 { - yyVAL.comparisonExprOperator = GreaterThanOp + yyVAL.comparisonExprOperator = LessThanOp } case 676: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3458 { - yyVAL.comparisonExprOperator = LessEqualOp + yyVAL.comparisonExprOperator = GreaterThanOp } case 677: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3462 { - yyVAL.comparisonExprOperator = GreaterEqualOp + yyVAL.comparisonExprOperator = LessEqualOp } case 678: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3466 { - yyVAL.comparisonExprOperator = NotEqualOp + yyVAL.comparisonExprOperator = GreaterEqualOp } case 679: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3470 { - yyVAL.comparisonExprOperator = NullSafeEqualOp + yyVAL.comparisonExprOperator = NotEqualOp } case 680: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3475 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3474 { - yyVAL.expr = nil + yyVAL.comparisonExprOperator = NullSafeEqualOp } case 681: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:3479 { - yyVAL.expr = yyDollar[2].expr + yyVAL.expr = nil } case 682: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3485 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3483 { - yyVAL.colTuple = yyDollar[1].valTuple + yyVAL.expr = yyDollar[2].expr } case 683: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3489 { - yyVAL.colTuple = yyDollar[1].subquery + yyVAL.colTuple = yyDollar[1].valTuple } case 684: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3493 { - yyVAL.colTuple = ListArg(yyDollar[1].str) + yyVAL.colTuple = yyDollar[1].subquery } case 685: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3499 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3497 { - yyVAL.subquery = &Subquery{yyDollar[2].selStmt} + yyVAL.colTuple = ListArg(yyDollar[1].str) } case 686: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3505 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3503 { - yyVAL.exprs = Exprs{yyDollar[1].expr} + yyVAL.subquery = &Subquery{yyDollar[2].selStmt} } case 687: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3509 { - yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) + yyVAL.exprs = Exprs{yyDollar[1].expr} } case 688: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3515 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3513 { - yyVAL.expr = yyDollar[1].expr + yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr) } case 689: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3519 { - yyVAL.expr = yyDollar[1].boolVal + yyVAL.expr = yyDollar[1].expr } case 690: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3523 { - yyVAL.expr = yyDollar[1].colName + yyVAL.expr = yyDollar[1].boolVal } case 691: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3527 { - yyVAL.expr = yyDollar[1].expr + yyVAL.expr = yyDollar[1].colName } case 692: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3531 { - yyVAL.expr = yyDollar[1].subquery + yyVAL.expr = yyDollar[1].expr } case 693: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3535 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr} + yyVAL.expr = yyDollar[1].subquery } case 694: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3539 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr} } case 695: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3543 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr} } case 696: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3547 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr} } case 697: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3551 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr} } case 698: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3555 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr} } case 699: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3559 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr} } case 700: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3563 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr} } case 701: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3567 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr} } case 702: yyDollar = yyS[yypt-3 : yypt+1] @@ -9437,89 +9467,95 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3575 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr} } case 704: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3579 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr} } case 705: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3583 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr} } case 706: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3587 { - yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr} } case 707: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3591 { - yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} + yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr} } case 708: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3595 { - yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr} + yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str} } case 709: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3599 { - yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr} + yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr} } case 710: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3603 { - yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr} + yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr} } case 711: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3607 { - yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr} + yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr} } case 712: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3611 { - yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr} + yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr} } case 713: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3615 { - yyVAL.expr = yyDollar[2].expr + yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr} } case 714: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3619 { - yyVAL.expr = handleUnaryMinus(yyDollar[2].expr) + yyVAL.expr = yyDollar[2].expr } case 715: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3623 { - yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr} + yyVAL.expr = handleUnaryMinus(yyDollar[2].expr) } case 716: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3627 { - yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr} + yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr} } case 717: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3631 + { + yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr} + } + case 718: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3635 { // This rule prevents the usage of INTERVAL // as a function. If support is needed for that, @@ -9527,17 +9563,11 @@ yydefault: // will be non-trivial because of grammar conflicts. yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()} } - case 722: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3649 - { - yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} - } case 723: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:3653 { - yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} + yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs} } case 724: yyDollar = yyS[yypt-5 : yypt+1] @@ -9546,28 +9576,28 @@ yydefault: yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 725: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:3661 { - yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} + yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs} } case 726: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3671 + yyDollar = yyS[yypt-6 : yypt+1] +//line sql.y:3665 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs} } case 727: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:3675 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs} } case 728: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:3679 { - yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} + yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs} } case 729: yyDollar = yyS[yypt-6 : yypt+1] @@ -9579,13 +9609,13 @@ yydefault: yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:3687 { - yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} + yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType} } case 731: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line sql.y:3691 { - yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} + yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str} } case 732: yyDollar = yyS[yypt-8 : yypt+1] @@ -9597,7 +9627,7 @@ yydefault: yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:3699 { - yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].str), From: yyDollar[5].expr, To: yyDollar[7].expr} + yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr} } case 734: yyDollar = yyS[yypt-8 : yypt+1] @@ -9606,166 +9636,166 @@ yydefault: yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].str), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 735: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:3707 { - yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption} + yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].str), From: yyDollar[5].expr, To: yyDollar[7].expr} } case 736: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-9 : yypt+1] //line sql.y:3711 { - yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].boolean, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} + yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption} } case 737: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:3715 { - yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} + yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].boolean, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit} } case 738: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line sql.y:3719 { - yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} + yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr} } case 739: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3729 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:3723 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} + yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName} } case 740: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3733 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")} } case 741: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3737 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")} } case 742: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3742 +//line sql.y:3741 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")} } case 743: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3747 +//line sql.y:3746 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")} } case 744: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3752 +//line sql.y:3751 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")} } case 745: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3758 +//line sql.y:3756 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")} } case 746: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3763 +//line sql.y:3762 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} + yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")} } case 747: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3768 +//line sql.y:3767 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} + yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")} } case 748: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3772 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr} } case 749: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3776 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr} } case 750: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3781 +//line sql.y:3780 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr} } case 751: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3786 +//line sql.y:3785 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr} } case 752: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3791 +//line sql.y:3790 { - yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr} } case 753: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3795 { - yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} + yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr} } case 754: yyDollar = yyS[yypt-8 : yypt+1] //line sql.y:3799 { - yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} + yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } - case 757: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3809 + case 755: + yyDollar = yyS[yypt-8 : yypt+1] +//line sql.y:3803 { - yyVAL.expr = yyDollar[2].expr + yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr} } case 758: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3819 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3813 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = yyDollar[2].expr } case 759: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:3823 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs} } case 760: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:3827 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs} } case 761: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:3831 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs} } case 762: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:3835 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs} } case 763: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:3839 { - yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} + yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs} } case 764: yyDollar = yyS[yypt-4 : yypt+1] @@ -9774,46 +9804,46 @@ yydefault: yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 765: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3849 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:3847 { - yyVAL.matchExprOption = NoOption + yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs} } case 766: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:3853 { - yyVAL.matchExprOption = BooleanModeOpt + yyVAL.matchExprOption = NoOption } case 767: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3857 { - yyVAL.matchExprOption = NaturalLanguageModeOpt + yyVAL.matchExprOption = BooleanModeOpt } case 768: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:3861 { - yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt + yyVAL.matchExprOption = NaturalLanguageModeOpt } case 769: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line sql.y:3865 { - yyVAL.matchExprOption = QueryExpansionOpt + yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt } case 770: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3871 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:3869 { - yyVAL.str = string(yyDollar[1].colIdent.String()) + yyVAL.matchExprOption = QueryExpansionOpt } case 771: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3875 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = string(yyDollar[1].colIdent.String()) } case 772: yyDollar = yyS[yypt-1 : yypt+1] @@ -9822,63 +9852,63 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 773: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3885 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:3883 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal} + yyVAL.str = string(yyDollar[1].str) } case 774: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3889 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal} } case 775: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3893 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp} } case 776: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:3897 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str)} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())} } case 777: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3901 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str)} } case 778: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3905 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str)} - yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length - yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal} } case 779: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3911 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3909 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str)} + yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length + yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale } case 780: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3915 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str)} } case 781: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3919 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str)} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal} } case 782: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3923 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str)} @@ -9887,143 +9917,149 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3927 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str)} } case 784: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:3931 { - yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str)} + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literal} } case 785: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:3935 { yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str)} } case 786: + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:3939 + { + yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].str)} + } + case 787: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3940 +//line sql.y:3944 { yyVAL.expr = nil } - case 787: + case 788: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3944 +//line sql.y:3948 { yyVAL.expr = yyDollar[1].expr } - case 788: + case 789: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3949 +//line sql.y:3953 { yyVAL.str = string("") } - case 789: + case 790: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3953 +//line sql.y:3957 { - yyVAL.str = " separator '" + string(yyDollar[2].str) + "'" + yyVAL.str = " separator " + encodeSQLString(yyDollar[2].str) } - case 790: + case 791: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3959 +//line sql.y:3963 { yyVAL.whens = []*When{yyDollar[1].when} } - case 791: + case 792: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3963 +//line sql.y:3967 { yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when) } - case 792: + case 793: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:3969 +//line sql.y:3973 { yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr} } - case 793: + case 794: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:3974 +//line sql.y:3978 { yyVAL.expr = nil } - case 794: + case 795: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3978 +//line sql.y:3982 { yyVAL.expr = yyDollar[2].expr } - case 795: + case 796: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3984 +//line sql.y:3988 { yyVAL.colName = &ColName{Name: yyDollar[1].colIdent} } - case 796: + case 797: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3988 +//line sql.y:3992 { yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent} } - case 797: + case 798: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3992 +//line sql.y:3996 { yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent} } - case 798: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3998 - { - yyVAL.expr = NewStrLiteral(yyDollar[1].str) - } case 799: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4002 { - yyVAL.expr = NewHexLiteral(yyDollar[1].str) + yyVAL.expr = NewStrLiteral(yyDollar[1].str) } case 800: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4006 { - yyVAL.expr = NewBitLiteral(yyDollar[1].str) + yyVAL.expr = NewHexLiteral(yyDollar[1].str) } case 801: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4010 { - yyVAL.expr = NewIntLiteral(yyDollar[1].str) + yyVAL.expr = NewBitLiteral(yyDollar[1].str) } case 802: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4014 { - yyVAL.expr = NewFloatLiteral(yyDollar[1].str) + yyVAL.expr = NewIntLiteral(yyDollar[1].str) } case 803: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4018 { - yyVAL.expr = NewHexNumLiteral(yyDollar[1].str) + yyVAL.expr = NewFloatLiteral(yyDollar[1].str) } case 804: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4022 { - yyVAL.expr = NewArgument(yyDollar[1].str) + yyVAL.expr = NewHexNumLiteral(yyDollar[1].str) } case 805: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4026 { - yyVAL.expr = &NullVal{} + yyVAL.expr = NewArgument(yyDollar[1].str) } case 806: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4032 +//line sql.y:4030 + { + yyVAL.expr = &NullVal{} + } + case 807: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4036 { // TODO(sougou): Deprecate this construct. if yyDollar[1].colIdent.Lowered() != "value" { @@ -10032,80 +10068,74 @@ yydefault: } yyVAL.expr = NewIntLiteral("1") } - case 807: + case 808: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4041 +//line sql.y:4045 { yyVAL.expr = NewIntLiteral(yyDollar[1].str) } - case 808: + case 809: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4045 +//line sql.y:4049 { yyVAL.expr = NewArgument(yyDollar[1].str) } - case 809: + case 810: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4050 +//line sql.y:4054 { yyVAL.exprs = nil } - case 810: + case 811: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4054 +//line sql.y:4058 { yyVAL.exprs = yyDollar[3].exprs } - case 811: + case 812: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4059 +//line sql.y:4063 { yyVAL.expr = nil } - case 812: + case 813: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4063 +//line sql.y:4067 { yyVAL.expr = yyDollar[2].expr } - case 813: + case 814: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4068 +//line sql.y:4072 { yyVAL.orderBy = nil } - case 814: + case 815: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4072 +//line sql.y:4076 { yyVAL.orderBy = yyDollar[3].orderBy } - case 815: + case 816: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4078 +//line sql.y:4082 { yyVAL.orderBy = OrderBy{yyDollar[1].order} } - case 816: + case 817: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4082 +//line sql.y:4086 { yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order) } - case 817: + case 818: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4088 +//line sql.y:4092 { yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].orderDirection} } - case 818: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4093 - { - yyVAL.orderDirection = AscOrder - } case 819: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4097 { yyVAL.orderDirection = AscOrder @@ -10114,43 +10144,43 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4101 { - yyVAL.orderDirection = DescOrder + yyVAL.orderDirection = AscOrder } case 821: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4106 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4105 { - yyVAL.limit = nil + yyVAL.orderDirection = DescOrder } case 822: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4110 { - yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} + yyVAL.limit = nil } case 823: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4114 { - yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} + yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr} } case 824: yyDollar = yyS[yypt-4 : yypt+1] //line sql.y:4118 { - yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} + yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr} } case 825: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4123 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:4122 { - yyVAL.alterOptions = nil + yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr} } case 826: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4127 { - yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption, yyDollar[2].alterOption} + yyVAL.alterOptions = nil } case 827: yyDollar = yyS[yypt-2 : yypt+1] @@ -10159,10 +10189,10 @@ yydefault: yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption, yyDollar[2].alterOption} } case 828: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4135 { - yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} + yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption, yyDollar[2].alterOption} } case 829: yyDollar = yyS[yypt-1 : yypt+1] @@ -10171,34 +10201,34 @@ yydefault: yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } case 830: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4146 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4143 { - yyVAL.alterOption = &LockOption{Type: DefaultType} + yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption} } case 831: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:4150 { - yyVAL.alterOption = &LockOption{Type: NoneType} + yyVAL.alterOption = &LockOption{Type: DefaultType} } case 832: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:4154 { - yyVAL.alterOption = &LockOption{Type: SharedType} + yyVAL.alterOption = &LockOption{Type: NoneType} } case 833: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:4158 { - yyVAL.alterOption = &LockOption{Type: ExclusiveType} + yyVAL.alterOption = &LockOption{Type: SharedType} } case 834: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4164 +//line sql.y:4162 { - yyVAL.alterOption = AlgorithmValue(yyDollar[3].str) + yyVAL.alterOption = &LockOption{Type: ExclusiveType} } case 835: yyDollar = yyS[yypt-3 : yypt+1] @@ -10213,16 +10243,16 @@ yydefault: yyVAL.alterOption = AlgorithmValue(yyDollar[3].str) } case 837: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4177 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:4176 { - yyVAL.str = "" + yyVAL.alterOption = AlgorithmValue(yyDollar[3].str) } case 838: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4181 { - yyVAL.str = string(yyDollar[3].str) + yyVAL.str = "" } case 839: yyDollar = yyS[yypt-3 : yypt+1] @@ -10237,22 +10267,22 @@ yydefault: yyVAL.str = string(yyDollar[3].str) } case 841: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4194 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:4193 { - yyVAL.str = "" + yyVAL.str = string(yyDollar[3].str) } case 842: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4198 { - yyVAL.str = yyDollar[3].str + yyVAL.str = "" } case 843: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4204 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:4202 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = yyDollar[3].str } case 844: yyDollar = yyS[yypt-1 : yypt+1] @@ -10261,368 +10291,380 @@ yydefault: yyVAL.str = string(yyDollar[1].str) } case 845: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4212 + { + yyVAL.str = string(yyDollar[1].str) + } + case 846: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4213 +//line sql.y:4217 { yyVAL.str = "" } - case 846: + case 847: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4217 +//line sql.y:4221 { yyVAL.str = yyDollar[2].str } - case 847: + case 848: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4222 +//line sql.y:4226 { yyVAL.str = "cascaded" } - case 848: + case 849: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4226 +//line sql.y:4230 { yyVAL.str = string(yyDollar[1].str) } - case 849: + case 850: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4230 +//line sql.y:4234 { yyVAL.str = string(yyDollar[1].str) } - case 850: + case 851: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4235 +//line sql.y:4239 { yyVAL.str = "" } - case 851: + case 852: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4239 +//line sql.y:4243 { yyVAL.str = yyDollar[3].str } - case 852: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4245 - { - yyVAL.str = string(yyDollar[1].str) - } case 853: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-1 : yypt+1] //line sql.y:4249 { yyVAL.str = string(yyDollar[1].str) } case 854: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:4253 { - yyVAL.str = "'" + string(yyDollar[1].str) + "'@" + string(yyDollar[2].str) + yyVAL.str = string(yyDollar[1].str) } case 855: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4257 { - yyVAL.str = string(yyDollar[1].str) + yyVAL.str = encodeSQLString(yyDollar[1].str) + "@" + string(yyDollar[2].str) } case 856: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4262 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4261 { - yyVAL.lock = NoLock + yyVAL.str = string(yyDollar[1].str) } case 857: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4266 { - yyVAL.lock = ForUpdateLock + yyVAL.lock = NoLock } case 858: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4270 { - yyVAL.lock = ShareModeLock + yyVAL.lock = ForUpdateLock } case 859: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4275 + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:4274 { - yyVAL.selectInto = nil + yyVAL.lock = ShareModeLock } case 860: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4279 { - yyVAL.selectInto = &SelectInto{Type: IntoOutfileS3, FileName: string(yyDollar[4].str), Charset: yyDollar[5].str, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} + yyVAL.selectInto = nil } case 861: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-9 : yypt+1] //line sql.y:4283 { - yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: string(yyDollar[3].str), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} + yyVAL.selectInto = &SelectInto{Type: IntoOutfileS3, FileName: encodeSQLString(yyDollar[4].str), Charset: yyDollar[5].str, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } case 862: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:4287 { - yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: string(yyDollar[3].str), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} + yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: encodeSQLString(yyDollar[3].str), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } case 863: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4292 + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:4291 { - yyVAL.str = "" + yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: encodeSQLString(yyDollar[3].str), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } case 864: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4296 { - yyVAL.str = " format csv" + yyDollar[3].str + yyVAL.str = "" } case 865: yyDollar = yyS[yypt-3 : yypt+1] //line sql.y:4300 { - yyVAL.str = " format text" + yyDollar[3].str + yyVAL.str = " format csv" + yyDollar[3].str } case 866: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4305 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:4304 { - yyVAL.str = "" + yyVAL.str = " format text" + yyDollar[3].str } case 867: - yyDollar = yyS[yypt-1 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4309 { - yyVAL.str = " header" + yyVAL.str = "" } case 868: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4314 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4313 { - yyVAL.str = "" + yyVAL.str = " header" } case 869: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4318 { - yyVAL.str = " manifest on" + yyVAL.str = "" } case 870: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4322 { - yyVAL.str = " manifest off" + yyVAL.str = " manifest on" } case 871: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4327 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:4326 { - yyVAL.str = "" + yyVAL.str = " manifest off" } case 872: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4331 { - yyVAL.str = " overwrite on" + yyVAL.str = "" } case 873: yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4335 { - yyVAL.str = " overwrite off" + yyVAL.str = " overwrite on" } case 874: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4341 +//line sql.y:4339 { - yyVAL.str = yyDollar[1].str + yyDollar[2].str + yyVAL.str = " overwrite off" } case 875: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4346 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:4345 { - yyVAL.str = "" + yyVAL.str = yyDollar[1].str + yyDollar[2].str } case 876: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-0 : yypt+1] //line sql.y:4350 { - yyVAL.str = " lines" + yyDollar[2].str + yyDollar[3].str + yyVAL.str = "" } case 877: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4355 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:4354 { - yyVAL.str = "" + yyVAL.str = " lines" + yyDollar[2].str } case 878: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4359 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4360 { - yyVAL.str = " starting by '" + string(yyDollar[3].str) + "'" + yyVAL.str = yyDollar[1].str } case 879: - yyDollar = yyS[yypt-0 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line sql.y:4364 { - yyVAL.str = "" + yyVAL.str = yyDollar[1].str + yyDollar[2].str } case 880: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4368 +//line sql.y:4370 { - yyVAL.str = " terminated by '" + string(yyDollar[3].str) + "'" + yyVAL.str = " starting by " + encodeSQLString(yyDollar[3].str) } case 881: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4373 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:4374 { - yyVAL.str = "" + yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } case 882: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4377 + yyDollar = yyS[yypt-0 : yypt+1] +//line sql.y:4379 { - yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str + yyDollar[3].str + yyDollar[4].str + yyVAL.str = "" } case 883: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4382 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:4383 { - yyVAL.str = "" + yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str } case 884: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4386 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:4389 { - yyVAL.str = " escaped by '" + string(yyDollar[3].str) + "'" + yyVAL.str = yyDollar[1].str } case 885: - yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4391 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:4393 { - yyVAL.str = "" + yyVAL.str = yyDollar[1].str + yyDollar[2].str } case 886: - yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4395 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:4399 { - yyVAL.str = yyDollar[1].str + " enclosed by '" + string(yyDollar[4].str) + "'" + yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } case 887: + yyDollar = yyS[yypt-4 : yypt+1] +//line sql.y:4403 + { + yyVAL.str = yyDollar[1].str + " enclosed by " + encodeSQLString(yyDollar[4].str) + } + case 888: + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:4407 + { + yyVAL.str = " escaped by " + encodeSQLString(yyDollar[3].str) + } + case 889: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4400 +//line sql.y:4412 { yyVAL.str = "" } - case 888: + case 890: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4404 +//line sql.y:4416 { yyVAL.str = " optionally" } - case 889: + case 891: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4417 +//line sql.y:4429 { yyVAL.ins = &Insert{Rows: yyDollar[2].values} } - case 890: + case 892: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4421 +//line sql.y:4433 { yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt} } - case 891: + case 893: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4425 +//line sql.y:4437 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values} } - case 892: + case 894: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4429 +//line sql.y:4441 { yyVAL.ins = &Insert{Rows: yyDollar[4].values} } - case 893: + case 895: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:4433 +//line sql.y:4445 { yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt} } - case 894: + case 896: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4439 +//line sql.y:4451 { yyVAL.columns = Columns{yyDollar[1].colIdent} } - case 895: + case 897: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4443 +//line sql.y:4455 { yyVAL.columns = Columns{yyDollar[3].colIdent} } - case 896: + case 898: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4447 +//line sql.y:4459 { yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent) } - case 897: + case 899: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4451 +//line sql.y:4463 { yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent) } - case 898: + case 900: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4456 +//line sql.y:4468 { yyVAL.updateExprs = nil } - case 899: + case 901: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4460 +//line sql.y:4472 { yyVAL.updateExprs = yyDollar[5].updateExprs } - case 900: + case 902: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4466 +//line sql.y:4478 { yyVAL.values = Values{yyDollar[1].valTuple} } - case 901: + case 903: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4470 +//line sql.y:4482 { yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple) } - case 902: + case 904: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4476 +//line sql.y:4488 { yyVAL.valTuple = yyDollar[1].valTuple } - case 903: + case 905: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4480 +//line sql.y:4492 { yyVAL.valTuple = ValTuple{} } - case 904: + case 906: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4486 +//line sql.y:4498 { yyVAL.valTuple = ValTuple(yyDollar[2].exprs) } - case 905: + case 907: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4492 +//line sql.y:4504 { if len(yyDollar[1].valTuple) == 1 { yyVAL.expr = yyDollar[1].valTuple[0] @@ -10630,265 +10672,265 @@ yydefault: yyVAL.expr = yyDollar[1].valTuple } } - case 906: + case 908: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4502 +//line sql.y:4514 { yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr} } - case 907: + case 909: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4506 +//line sql.y:4518 { yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr) } - case 908: + case 910: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4512 +//line sql.y:4524 { yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr} } - case 909: + case 911: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4518 +//line sql.y:4530 { yyVAL.setExprs = SetExprs{yyDollar[1].setExpr} } - case 910: + case 912: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4522 +//line sql.y:4534 { yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr) } - case 911: + case 913: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4528 +//line sql.y:4540 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral("on")} } - case 912: + case 914: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4532 +//line sql.y:4544 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral("off")} } - case 913: + case 915: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4536 +//line sql.y:4548 { yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].expr} } - case 914: + case 916: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4540 +//line sql.y:4552 { yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].str)), Scope: ImplicitScope, Expr: yyDollar[2].expr} } - case 915: + case 917: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4544 +//line sql.y:4556 { yyDollar[2].setExpr.Scope = yyDollar[1].scope yyVAL.setExpr = yyDollar[2].setExpr } - case 917: + case 919: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4552 +//line sql.y:4564 { yyVAL.str = "charset" } - case 920: + case 922: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4562 +//line sql.y:4574 { yyVAL.expr = NewStrLiteral(yyDollar[1].colIdent.String()) } - case 921: + case 923: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4566 +//line sql.y:4578 { yyVAL.expr = NewStrLiteral(yyDollar[1].str) } - case 922: + case 924: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4570 +//line sql.y:4582 { yyVAL.expr = &Default{} } - case 925: + case 927: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4579 +//line sql.y:4591 { yyVAL.boolean = false } - case 926: + case 928: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4581 +//line sql.y:4593 { yyVAL.boolean = true } - case 927: + case 929: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4584 +//line sql.y:4596 { yyVAL.boolean = false } - case 928: + case 930: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4586 +//line sql.y:4598 { yyVAL.boolean = true } - case 929: + case 931: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4589 +//line sql.y:4601 { yyVAL.boolean = false } - case 930: + case 932: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4591 +//line sql.y:4603 { yyVAL.boolean = true } - case 931: + case 933: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4594 +//line sql.y:4606 { yyVAL.ignore = false } - case 932: + case 934: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4596 +//line sql.y:4608 { yyVAL.ignore = true } - case 933: + case 935: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4599 +//line sql.y:4611 { yyVAL.empty = struct{}{} } - case 934: + case 936: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4601 +//line sql.y:4613 { yyVAL.empty = struct{}{} } - case 935: + case 937: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4603 +//line sql.y:4615 { yyVAL.empty = struct{}{} } - case 936: + case 938: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:4607 +//line sql.y:4619 { yyVAL.statement = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprs} } - case 937: + case 939: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4612 +//line sql.y:4624 { yyVAL.exprs = nil } - case 938: + case 940: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4616 +//line sql.y:4628 { yyVAL.exprs = yyDollar[1].exprs } - case 939: + case 941: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4621 +//line sql.y:4633 { yyVAL.indexOptions = nil } - case 940: + case 942: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4623 +//line sql.y:4635 { yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption} } - case 941: + case 943: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4627 +//line sql.y:4639 { yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].str), String: string(yyDollar[2].colIdent.String())} } - case 942: + case 944: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4633 +//line sql.y:4645 { yyVAL.colIdent = yyDollar[1].colIdent } - case 943: + case 945: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4637 +//line sql.y:4649 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].str)) } - case 945: + case 947: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4644 +//line sql.y:4656 { yyVAL.colIdent = NewColIdent(string(yyDollar[1].str)) } - case 946: + case 948: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4650 +//line sql.y:4662 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String())) } - case 947: + case 949: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4654 +//line sql.y:4666 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].str)) } - case 949: + case 951: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4661 +//line sql.y:4673 { yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].str)) } - case 1349: + case 1351: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5085 +//line sql.y:5097 { if incNesting(yylex) { yylex.Error("max nesting level reached") return 1 } } - case 1350: + case 1352: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5094 +//line sql.y:5106 { decNesting(yylex) } - case 1351: + case 1353: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5099 +//line sql.y:5111 { skipToEnd(yylex) } - case 1352: + case 1354: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5104 +//line sql.y:5116 { skipToEnd(yylex) } - case 1353: + case 1355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5108 +//line sql.y:5120 { skipToEnd(yylex) } - case 1354: + case 1356: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5112 +//line sql.y:5124 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index 6c742434398..cd62dedaf17 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -329,7 +329,7 @@ func skipToEnd(yylex interface{}) { %type into_option %type column_type_options %type header_opt export_options manifest_opt overwrite_opt format_opt optionally_opt -%type fields_opt lines_opt terminated_by_opt starting_by_opt enclosed_by_opt escaped_by_opt +%type fields_opts fields_opt_list fields_opt lines_opts lines_opt lines_opt_list %type lock_opt %type ins_column_list column_list column_list_opt %type opt_partition_clause partition_list @@ -928,7 +928,7 @@ character_set: } | default_optional charset_or_character_set equal_opt STRING { - $$ = CollateAndCharset{Type:CharacterSetType, Value:("'" + string($4) + "'"), IsDefault:$1} + $$ = CollateAndCharset{Type:CharacterSetType, Value:(encodeSQLString($4)), IsDefault:$1} } collate: @@ -938,7 +938,7 @@ collate: } | default_optional COLLATE equal_opt STRING { - $$ = CollateAndCharset{Type:CollateType, Value:("'" + string($4) + "'"), IsDefault:$1} + $$ = CollateAndCharset{Type:CollateType, Value:(encodeSQLString($4)), IsDefault:$1} } @@ -1276,11 +1276,11 @@ enum_values: STRING { $$ = make([]string, 0, 4) - $$ = append($$, "'" + string($1) + "'") + $$ = append($$, encodeSQLString($1)) } | enum_values ',' STRING { - $$ = append($1, "'" + string($3) + "'") + $$ = append($1, encodeSQLString($3)) } length_opt: @@ -1348,6 +1348,10 @@ charset_opt: { $$ = string($2.String()) } +| charset_or_character_set STRING + { + $$ = encodeSQLString($2) + } | charset_or_character_set BINARY { $$ = string($2) @@ -1363,7 +1367,7 @@ collate_opt: } | COLLATE STRING { - $$ = string($2) + $$ = encodeSQLString($2) } @@ -1809,7 +1813,7 @@ table_opt_value: } | STRING { - $$ = "'" + string($1) + "'" + $$ = encodeSQLString($1) } | INTEGRAL { @@ -2717,7 +2721,7 @@ wild_opt: } | STRING { - $$ = "'" + string($1) + "'" + $$ = encodeSQLString($1) } explain_statement: @@ -3951,7 +3955,7 @@ separator_opt: } | SEPARATOR STRING { - $$ = " separator '"+string($2)+"'" + $$ = " separator "+encodeSQLString($2) } when_expression_list: @@ -4251,7 +4255,7 @@ CURRENT_USER } | STRING AT_ID { - $$ = "'" + string($1) + "'@" + string($2) + $$ = encodeSQLString($1) + "@" + string($2) } | ID { @@ -4277,15 +4281,15 @@ into_option: } | INTO OUTFILE S3 STRING charset_opt format_opt export_options manifest_opt overwrite_opt { - $$ = &SelectInto{Type:IntoOutfileS3, FileName:string($4), Charset:$5, FormatOption:$6, ExportOption:$7, Manifest:$8, Overwrite:$9} + $$ = &SelectInto{Type:IntoOutfileS3, FileName:encodeSQLString($4), Charset:$5, FormatOption:$6, ExportOption:$7, Manifest:$8, Overwrite:$9} } | INTO DUMPFILE STRING { - $$ = &SelectInto{Type:IntoDumpfile, FileName:string($3), Charset:"", FormatOption:"", ExportOption:"", Manifest:"", Overwrite:""} + $$ = &SelectInto{Type:IntoDumpfile, FileName:encodeSQLString($3), Charset:"", FormatOption:"", ExportOption:"", Manifest:"", Overwrite:""} } | INTO OUTFILE STRING charset_opt export_options { - $$ = &SelectInto{Type:IntoOutfile, FileName:string($3), Charset:$4, FormatOption:"", ExportOption:$5, Manifest:"", Overwrite:""} + $$ = &SelectInto{Type:IntoOutfile, FileName:encodeSQLString($3), Charset:$4, FormatOption:"", ExportOption:$5, Manifest:"", Overwrite:""} } format_opt: @@ -4337,63 +4341,71 @@ overwrite_opt: } export_options: - fields_opt lines_opt + fields_opts lines_opts { $$ = $1 + $2 } -lines_opt: +lines_opts: { $$ = "" } -| LINES starting_by_opt terminated_by_opt +| LINES lines_opt_list { - $$ = " lines" + $2 + $3 + $$ = " lines" + $2 } -starting_by_opt: +lines_opt_list: + lines_opt { - $$ = "" + $$ = $1 } -| STARTING BY STRING +| lines_opt_list lines_opt { - $$ = " starting by '" + string($3) + "'" + $$ = $1 + $2 } -terminated_by_opt: +lines_opt: + STARTING BY STRING { - $$ = "" + $$ = " starting by " + encodeSQLString($3) } | TERMINATED BY STRING { - $$ = " terminated by '" + string($3) + "'" + $$ = " terminated by " + encodeSQLString($3) } -fields_opt: +fields_opts: { $$ = "" } -| columns_or_fields terminated_by_opt enclosed_by_opt escaped_by_opt +| columns_or_fields fields_opt_list { - $$ = " " + $1 + $2 + $3 + $4 + $$ = " " + $1 + $2 } -escaped_by_opt: +fields_opt_list: + fields_opt { - $$ = "" + $$ = $1 } -| ESCAPED BY STRING +| fields_opt_list fields_opt { - $$ = " escaped by '" + string($3) + "'" + $$ = $1 + $2 } -enclosed_by_opt: +fields_opt: + TERMINATED BY STRING { - $$ = "" + $$ = " terminated by " + encodeSQLString($3) } | optionally_opt ENCLOSED BY STRING { - $$ = $1 + " enclosed by '" + string($4) + "'" + $$ = $1 + " enclosed by " + encodeSQLString($4) + } +| ESCAPED BY STRING + { + $$ = " escaped by " + encodeSQLString($3) } optionally_opt: diff --git a/go/vt/vtgate/planbuilder/testdata/select_cases.txt b/go/vt/vtgate/planbuilder/testdata/select_cases.txt index 93f34a6ab9f..1fcee99d2ec 100644 --- a/go/vt/vtgate/planbuilder/testdata/select_cases.txt +++ b/go/vt/vtgate/planbuilder/testdata/select_cases.txt @@ -1601,10 +1601,10 @@ Gen4 plan same as above } # select from unsharded keyspace into outfile -"select * from main.unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'" +"select * from main.unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n'" { "QueryType": "SELECT", - "Original": "select * from main.unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'", + "Original": "select * from main.unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n'", "Instructions": { "OperatorType": "Route", "Variant": "SelectUnsharded", @@ -1613,16 +1613,16 @@ Gen4 plan same as above "Sharded": false }, "FieldQuery": "select * from unsharded where 1 != 1", - "Query": "select * from unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'", + "Query": "select * from unsharded into outfile 'x.txt' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n'", "Table": "unsharded" } } # select from unsharded keyspace into outfile s3 -"select * from main.unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off" +"select * from main.unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n' manifest on overwrite off" { "QueryType": "SELECT", - "Original": "select * from main.unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off", + "Original": "select * from main.unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n' manifest on overwrite off", "Instructions": { "OperatorType": "Route", "Variant": "SelectUnsharded", @@ -1631,7 +1631,7 @@ Gen4 plan same as above "Sharded": false }, "FieldQuery": "select * from unsharded where 1 != 1", - "Query": "select * from unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off", + "Query": "select * from unsharded into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n' manifest on overwrite off", "Table": "unsharded" } }