diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileLexer.cs b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileLexer.cs index aef59d733b..545c561319 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileLexer.cs +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileLexer.cs @@ -122,7 +122,7 @@ static LUFileLexer() { } } private static int[] _serializedATN = { - 4,0,40,739,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7, + 4,0,40,737,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7, 3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11, 2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18, 2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25, @@ -145,42 +145,42 @@ static LUFileLexer() { 32,275,1,33,5,33,279,8,33,10,33,12,33,282,9,33,1,33,1,33,5,33,286,8,33, 10,33,12,33,289,9,33,1,33,1,33,1,33,1,33,4,33,295,8,33,11,33,12,33,296, 1,34,5,34,300,8,34,10,34,12,34,303,9,34,1,34,1,34,5,34,307,8,34,10,34, - 12,34,310,9,34,1,34,1,34,1,35,4,35,315,8,35,11,35,12,35,316,1,35,5,35, - 320,8,35,10,35,12,35,323,9,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36, - 1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,40,5,40, - 346,8,40,10,40,12,40,349,9,40,1,40,1,40,5,40,353,8,40,10,40,12,40,356, - 9,40,1,40,1,40,5,40,360,8,40,10,40,12,40,363,9,40,1,40,1,40,5,40,367,8, - 40,10,40,12,40,370,9,40,1,40,1,40,1,40,5,40,375,8,40,10,40,12,40,378,9, - 40,1,40,3,40,381,8,40,1,41,5,41,384,8,41,10,41,12,41,387,9,41,1,41,1,41, - 5,41,391,8,41,10,41,12,41,394,9,41,1,41,1,41,5,41,398,8,41,10,41,12,41, - 401,9,41,1,41,1,41,5,41,405,8,41,10,41,12,41,408,9,41,1,41,5,41,411,8, - 41,10,41,12,41,414,9,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1, - 42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,5,43,434,8,43,10,43,12,43,437, - 9,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,5,44,449,8,44,10, - 44,12,44,452,9,44,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1, - 45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,47,1,47,1,47,1,47,1, - 48,3,48,479,8,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,50,1,50,1,51,1,51, - 1,51,1,51,1,51,1,51,1,51,1,51,3,51,498,8,51,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,512,8,52,1,53,1,53,1,53,1,53,1,53, + 12,34,310,9,34,1,35,4,35,313,8,35,11,35,12,35,314,1,35,5,35,318,8,35,10, + 35,12,35,321,9,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,37,1,37,1, + 37,1,37,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,40,5,40,344,8,40,10, + 40,12,40,347,9,40,1,40,1,40,5,40,351,8,40,10,40,12,40,354,9,40,1,40,1, + 40,5,40,358,8,40,10,40,12,40,361,9,40,1,40,1,40,5,40,365,8,40,10,40,12, + 40,368,9,40,1,40,1,40,1,40,5,40,373,8,40,10,40,12,40,376,9,40,1,40,3,40, + 379,8,40,1,41,5,41,382,8,41,10,41,12,41,385,9,41,1,41,1,41,5,41,389,8, + 41,10,41,12,41,392,9,41,1,41,1,41,5,41,396,8,41,10,41,12,41,399,9,41,1, + 41,1,41,5,41,403,8,41,10,41,12,41,406,9,41,1,41,5,41,409,8,41,10,41,12, + 41,412,9,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42, + 1,42,1,42,1,43,1,43,1,43,1,43,5,43,432,8,43,10,43,12,43,435,9,43,1,43, + 1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,5,44,447,8,44,10,44,12,44, + 450,9,44,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1, + 45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,47,1,47,1,47,1,47,1,48,3,48,477, + 8,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,50,1,50,1,51,1,51,1,51,1,51, + 1,51,1,51,1,51,1,51,3,51,496,8,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1, + 52,1,52,1,52,1,52,1,52,3,52,510,8,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53, 1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53, 1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53, 1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53, 1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53, - 1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,583,8,53,1,54,1,54,5,54,587, - 8,54,10,54,12,54,590,9,54,1,54,1,54,1,55,1,55,5,55,596,8,55,10,55,12,55, - 599,9,55,1,55,1,55,1,56,1,56,5,56,605,8,56,10,56,12,56,608,9,56,1,57,4, - 57,611,8,57,11,57,12,57,612,1,58,1,58,4,58,617,8,58,11,58,12,58,618,1, - 58,1,58,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,61,3,61,632,8,61,1,61, - 1,61,1,61,1,61,1,61,1,62,1,62,1,62,3,62,642,8,62,1,62,1,62,1,62,5,62,647, - 8,62,10,62,12,62,650,9,62,1,63,1,63,1,64,1,64,1,64,1,64,1,65,3,65,659, - 8,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,3,66,668,8,66,1,67,1,67,1,67,1, - 67,5,67,674,8,67,10,67,12,67,677,9,67,1,67,5,67,680,8,67,10,67,12,67,683, - 9,67,1,67,1,67,1,68,4,68,688,8,68,11,68,12,68,689,1,69,1,69,1,69,1,69, - 1,70,3,70,697,8,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,5,71,706,8,71,10, - 71,12,71,709,9,71,1,71,1,71,1,72,1,72,5,72,715,8,72,10,72,12,72,718,9, - 72,1,73,4,73,721,8,73,11,73,12,73,722,1,74,1,74,1,75,3,75,728,8,75,1,75, - 1,75,1,75,1,75,1,75,1,76,4,76,736,8,76,11,76,12,76,737,7,354,368,376,392, - 435,450,689,0,77,6,0,8,0,10,0,12,0,14,0,16,0,18,0,20,0,22,0,24,0,26,0, + 1,53,1,53,1,53,1,53,1,53,1,53,3,53,581,8,53,1,54,1,54,5,54,585,8,54,10, + 54,12,54,588,9,54,1,54,1,54,1,55,1,55,5,55,594,8,55,10,55,12,55,597,9, + 55,1,55,1,55,1,56,1,56,5,56,603,8,56,10,56,12,56,606,9,56,1,57,4,57,609, + 8,57,11,57,12,57,610,1,58,1,58,4,58,615,8,58,11,58,12,58,616,1,58,1,58, + 1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,61,3,61,630,8,61,1,61,1,61,1, + 61,1,61,1,61,1,62,1,62,1,62,3,62,640,8,62,1,62,1,62,1,62,5,62,645,8,62, + 10,62,12,62,648,9,62,1,63,1,63,1,64,1,64,1,64,1,64,1,65,3,65,657,8,65, + 1,65,1,65,1,65,1,65,1,65,1,66,1,66,3,66,666,8,66,1,67,1,67,1,67,1,67,5, + 67,672,8,67,10,67,12,67,675,9,67,1,67,5,67,678,8,67,10,67,12,67,681,9, + 67,1,67,1,67,1,68,4,68,686,8,68,11,68,12,68,687,1,69,1,69,1,69,1,69,1, + 70,3,70,695,8,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,5,71,704,8,71,10,71, + 12,71,707,9,71,1,71,1,71,1,72,1,72,5,72,713,8,72,10,72,12,72,716,9,72, + 1,73,4,73,719,8,73,11,73,12,73,720,1,74,1,74,1,75,3,75,726,8,75,1,75,1, + 75,1,75,1,75,1,75,1,76,4,76,734,8,76,11,76,12,76,735,7,352,366,374,390, + 433,448,687,0,77,6,0,8,0,10,0,12,0,14,0,16,0,18,0,20,0,22,0,24,0,26,0, 28,0,30,0,32,0,34,0,36,0,38,0,40,0,42,0,44,0,46,0,48,0,50,0,52,0,54,0, 56,0,58,0,60,0,62,0,64,0,66,1,68,2,70,3,72,4,74,5,76,6,78,7,80,8,82,9, 84,10,86,11,88,12,90,13,92,14,94,15,96,16,98,17,100,0,102,0,104,18,106, @@ -198,7 +198,7 @@ static LUFileLexer() { 13,40,41,7,0,10,10,13,13,40,41,91,91,93,93,123,123,125,125,7,0,9,10,13, 13,32,32,34,34,39,39,44,44,59,59,2,0,34,34,39,39,6,0,9,10,13,13,34,34, 39,39,44,44,59,59,2,0,45,45,95,95,4,0,10,10,13,13,123,123,125,125,4,0, - 9,10,13,13,32,32,92,92,4,0,9,10,13,13,32,32,58,58,763,0,66,1,0,0,0,0,68, + 9,10,13,13,32,32,92,92,4,0,9,10,13,13,32,32,58,58,761,0,66,1,0,0,0,0,68, 1,0,0,0,0,70,1,0,0,0,0,72,1,0,0,0,0,74,1,0,0,0,0,76,1,0,0,0,0,78,1,0,0, 0,0,80,1,0,0,0,0,82,1,0,0,0,0,84,1,0,0,0,0,86,1,0,0,0,0,88,1,0,0,0,0,90, 1,0,0,0,0,92,1,0,0,0,0,94,1,0,0,0,0,96,1,0,0,0,0,98,1,0,0,0,1,100,1,0, @@ -215,16 +215,16 @@ static LUFileLexer() { 0,0,0,46,200,1,0,0,0,48,202,1,0,0,0,50,204,1,0,0,0,52,206,1,0,0,0,54,208, 1,0,0,0,56,210,1,0,0,0,58,212,1,0,0,0,60,214,1,0,0,0,62,216,1,0,0,0,64, 218,1,0,0,0,66,221,1,0,0,0,68,226,1,0,0,0,70,235,1,0,0,0,72,280,1,0,0, - 0,74,301,1,0,0,0,76,314,1,0,0,0,78,328,1,0,0,0,80,332,1,0,0,0,82,336,1, - 0,0,0,84,340,1,0,0,0,86,347,1,0,0,0,88,385,1,0,0,0,90,415,1,0,0,0,92,429, - 1,0,0,0,94,443,1,0,0,0,96,457,1,0,0,0,98,471,1,0,0,0,100,473,1,0,0,0,102, - 478,1,0,0,0,104,485,1,0,0,0,106,487,1,0,0,0,108,489,1,0,0,0,110,499,1, - 0,0,0,112,582,1,0,0,0,114,584,1,0,0,0,116,593,1,0,0,0,118,602,1,0,0,0, - 120,610,1,0,0,0,122,614,1,0,0,0,124,622,1,0,0,0,126,626,1,0,0,0,128,631, - 1,0,0,0,130,641,1,0,0,0,132,651,1,0,0,0,134,653,1,0,0,0,136,658,1,0,0, - 0,138,665,1,0,0,0,140,669,1,0,0,0,142,687,1,0,0,0,144,691,1,0,0,0,146, - 696,1,0,0,0,148,703,1,0,0,0,150,712,1,0,0,0,152,720,1,0,0,0,154,724,1, - 0,0,0,156,727,1,0,0,0,158,735,1,0,0,0,160,161,7,0,0,0,161,7,1,0,0,0,162, + 0,74,301,1,0,0,0,76,312,1,0,0,0,78,326,1,0,0,0,80,330,1,0,0,0,82,334,1, + 0,0,0,84,338,1,0,0,0,86,345,1,0,0,0,88,383,1,0,0,0,90,413,1,0,0,0,92,427, + 1,0,0,0,94,441,1,0,0,0,96,455,1,0,0,0,98,469,1,0,0,0,100,471,1,0,0,0,102, + 476,1,0,0,0,104,483,1,0,0,0,106,485,1,0,0,0,108,487,1,0,0,0,110,497,1, + 0,0,0,112,580,1,0,0,0,114,582,1,0,0,0,116,591,1,0,0,0,118,600,1,0,0,0, + 120,608,1,0,0,0,122,612,1,0,0,0,124,620,1,0,0,0,126,624,1,0,0,0,128,629, + 1,0,0,0,130,639,1,0,0,0,132,649,1,0,0,0,134,651,1,0,0,0,136,656,1,0,0, + 0,138,663,1,0,0,0,140,667,1,0,0,0,142,685,1,0,0,0,144,689,1,0,0,0,146, + 694,1,0,0,0,148,701,1,0,0,0,150,710,1,0,0,0,152,718,1,0,0,0,154,722,1, + 0,0,0,156,725,1,0,0,0,158,733,1,0,0,0,160,161,7,0,0,0,161,7,1,0,0,0,162, 163,7,1,0,0,163,9,1,0,0,0,164,165,7,2,0,0,165,11,1,0,0,0,166,167,7,3,0, 0,167,13,1,0,0,0,168,169,7,4,0,0,169,15,1,0,0,0,170,171,7,5,0,0,171,17, 1,0,0,0,172,173,7,6,0,0,173,19,1,0,0,0,174,175,7,7,0,0,175,21,1,0,0,0, @@ -261,123 +261,122 @@ static LUFileLexer() { 0,297,73,1,0,0,0,298,300,3,66,30,0,299,298,1,0,0,0,300,303,1,0,0,0,301, 299,1,0,0,0,301,302,1,0,0,0,302,304,1,0,0,0,303,301,1,0,0,0,304,308,5, 62,0,0,305,307,8,29,0,0,306,305,1,0,0,0,307,310,1,0,0,0,308,306,1,0,0, - 0,308,309,1,0,0,0,309,311,1,0,0,0,310,308,1,0,0,0,311,312,6,34,0,0,312, - 75,1,0,0,0,313,315,5,35,0,0,314,313,1,0,0,0,315,316,1,0,0,0,316,314,1, - 0,0,0,316,317,1,0,0,0,317,321,1,0,0,0,318,320,3,66,30,0,319,318,1,0,0, - 0,320,323,1,0,0,0,321,319,1,0,0,0,321,322,1,0,0,0,322,324,1,0,0,0,323, - 321,1,0,0,0,324,325,5,63,0,0,325,326,1,0,0,0,326,327,6,35,1,0,327,77,1, - 0,0,0,328,329,5,35,0,0,329,330,1,0,0,0,330,331,6,36,2,0,331,79,1,0,0,0, - 332,333,3,64,29,0,333,334,1,0,0,0,334,335,6,37,3,0,335,81,1,0,0,0,336, - 337,5,36,0,0,337,338,1,0,0,0,338,339,6,38,4,0,339,83,1,0,0,0,340,341,5, - 64,0,0,341,342,1,0,0,0,342,343,6,39,5,0,343,85,1,0,0,0,344,346,3,66,30, - 0,345,344,1,0,0,0,346,349,1,0,0,0,347,345,1,0,0,0,347,348,1,0,0,0,348, - 350,1,0,0,0,349,347,1,0,0,0,350,354,5,91,0,0,351,353,8,30,0,0,352,351, - 1,0,0,0,353,356,1,0,0,0,354,355,1,0,0,0,354,352,1,0,0,0,355,357,1,0,0, - 0,356,354,1,0,0,0,357,361,5,93,0,0,358,360,3,66,30,0,359,358,1,0,0,0,360, - 363,1,0,0,0,361,359,1,0,0,0,361,362,1,0,0,0,362,380,1,0,0,0,363,361,1, - 0,0,0,364,368,5,40,0,0,365,367,8,31,0,0,366,365,1,0,0,0,367,370,1,0,0, - 0,368,369,1,0,0,0,368,366,1,0,0,0,369,371,1,0,0,0,370,368,1,0,0,0,371, - 381,5,41,0,0,372,376,5,91,0,0,373,375,8,30,0,0,374,373,1,0,0,0,375,378, - 1,0,0,0,376,377,1,0,0,0,376,374,1,0,0,0,377,379,1,0,0,0,378,376,1,0,0, - 0,379,381,5,93,0,0,380,364,1,0,0,0,380,372,1,0,0,0,381,87,1,0,0,0,382, - 384,3,66,30,0,383,382,1,0,0,0,384,387,1,0,0,0,385,383,1,0,0,0,385,386, - 1,0,0,0,386,388,1,0,0,0,387,385,1,0,0,0,388,392,5,91,0,0,389,391,8,30, - 0,0,390,389,1,0,0,0,391,394,1,0,0,0,392,393,1,0,0,0,392,390,1,0,0,0,393, - 395,1,0,0,0,394,392,1,0,0,0,395,399,5,93,0,0,396,398,3,66,30,0,397,396, - 1,0,0,0,398,401,1,0,0,0,399,397,1,0,0,0,399,400,1,0,0,0,400,402,1,0,0, - 0,401,399,1,0,0,0,402,406,5,58,0,0,403,405,3,66,30,0,404,403,1,0,0,0,405, - 408,1,0,0,0,406,404,1,0,0,0,406,407,1,0,0,0,407,412,1,0,0,0,408,406,1, - 0,0,0,409,411,8,29,0,0,410,409,1,0,0,0,411,414,1,0,0,0,412,410,1,0,0,0, - 412,413,1,0,0,0,413,89,1,0,0,0,414,412,1,0,0,0,415,416,5,42,0,0,416,417, - 5,42,0,0,417,418,1,0,0,0,418,419,3,16,5,0,419,420,3,22,8,0,420,421,3,28, - 11,0,421,422,3,44,19,0,422,423,3,14,4,0,423,424,3,40,17,0,424,425,3,42, - 18,0,425,426,5,58,0,0,426,427,5,42,0,0,427,428,5,42,0,0,428,91,1,0,0,0, - 429,430,5,60,0,0,430,431,5,97,0,0,431,435,1,0,0,0,432,434,9,0,0,0,433, - 432,1,0,0,0,434,437,1,0,0,0,435,436,1,0,0,0,435,433,1,0,0,0,436,438,1, - 0,0,0,437,435,1,0,0,0,438,439,5,60,0,0,439,440,5,47,0,0,440,441,5,97,0, - 0,441,442,5,62,0,0,442,93,1,0,0,0,443,444,5,96,0,0,444,445,5,96,0,0,445, - 446,5,96,0,0,446,450,1,0,0,0,447,449,9,0,0,0,448,447,1,0,0,0,449,452,1, - 0,0,0,450,451,1,0,0,0,450,448,1,0,0,0,451,453,1,0,0,0,452,450,1,0,0,0, - 453,454,5,96,0,0,454,455,5,96,0,0,455,456,5,96,0,0,456,95,1,0,0,0,457, - 458,5,42,0,0,458,459,5,42,0,0,459,460,1,0,0,0,460,461,3,36,15,0,461,462, - 3,40,17,0,462,463,3,34,14,0,463,464,3,30,12,0,464,465,3,36,15,0,465,466, - 3,44,19,0,466,467,3,42,18,0,467,468,5,58,0,0,468,469,5,42,0,0,469,470, - 5,42,0,0,470,97,1,0,0,0,471,472,9,0,0,0,472,99,1,0,0,0,473,474,3,66,30, - 0,474,475,1,0,0,0,475,476,6,47,6,0,476,101,1,0,0,0,477,479,5,13,0,0,478, - 477,1,0,0,0,478,479,1,0,0,0,479,480,1,0,0,0,480,481,5,10,0,0,481,482,1, - 0,0,0,482,483,6,48,7,0,483,484,6,48,8,0,484,103,1,0,0,0,485,486,5,61,0, - 0,486,105,1,0,0,0,487,488,5,44,0,0,488,107,1,0,0,0,489,490,3,20,7,0,490, - 491,3,6,0,0,491,492,3,42,18,0,492,493,3,40,17,0,493,494,3,34,14,0,494, - 495,3,28,11,0,495,497,3,14,4,0,496,498,3,42,18,0,497,496,1,0,0,0,497,498, - 1,0,0,0,498,109,1,0,0,0,499,500,3,46,20,0,500,501,3,42,18,0,501,502,3, - 14,4,0,502,503,3,42,18,0,503,504,3,16,5,0,504,505,3,14,4,0,505,506,3,6, - 0,0,506,507,3,44,19,0,507,508,3,46,20,0,508,509,3,40,17,0,509,511,3,14, - 4,0,510,512,3,42,18,0,511,510,1,0,0,0,511,512,1,0,0,0,512,111,1,0,0,0, - 513,514,3,42,18,0,514,515,3,22,8,0,515,516,3,30,12,0,516,517,3,36,15,0, - 517,518,3,28,11,0,518,519,3,14,4,0,519,583,1,0,0,0,520,521,3,28,11,0,521, - 522,3,22,8,0,522,523,3,42,18,0,523,524,3,44,19,0,524,583,1,0,0,0,525,526, - 3,40,17,0,526,527,3,14,4,0,527,528,3,18,6,0,528,529,3,14,4,0,529,530,3, - 52,23,0,530,583,1,0,0,0,531,532,3,36,15,0,532,533,3,40,17,0,533,534,3, - 14,4,0,534,535,3,8,1,0,535,536,3,46,20,0,536,537,3,22,8,0,537,538,3,28, - 11,0,538,539,3,44,19,0,539,583,1,0,0,0,540,541,3,10,2,0,541,542,3,34,14, - 0,542,543,3,30,12,0,543,544,3,36,15,0,544,545,3,34,14,0,545,546,3,42,18, - 0,546,547,3,22,8,0,547,548,3,44,19,0,548,549,3,14,4,0,549,583,1,0,0,0, - 550,551,3,30,12,0,551,552,3,28,11,0,552,583,1,0,0,0,553,554,3,36,15,0, - 554,555,3,6,0,0,555,556,3,44,19,0,556,557,3,44,19,0,557,558,3,14,4,0,558, - 559,3,40,17,0,559,560,3,32,13,0,560,561,3,6,0,0,561,562,3,32,13,0,562, - 563,3,54,24,0,563,583,1,0,0,0,564,565,3,36,15,0,565,566,3,20,7,0,566,567, - 3,40,17,0,567,568,3,6,0,0,568,569,3,42,18,0,569,570,3,14,4,0,570,571,3, - 28,11,0,571,572,3,22,8,0,572,573,3,42,18,0,573,574,3,44,19,0,574,583,1, - 0,0,0,575,576,3,22,8,0,576,577,3,32,13,0,577,578,3,44,19,0,578,579,3,14, - 4,0,579,580,3,32,13,0,580,581,3,44,19,0,581,583,1,0,0,0,582,513,1,0,0, - 0,582,520,1,0,0,0,582,525,1,0,0,0,582,531,1,0,0,0,582,540,1,0,0,0,582, - 550,1,0,0,0,582,553,1,0,0,0,582,564,1,0,0,0,582,575,1,0,0,0,583,113,1, - 0,0,0,584,588,5,40,0,0,585,587,8,29,0,0,586,585,1,0,0,0,587,590,1,0,0, - 0,588,586,1,0,0,0,588,589,1,0,0,0,589,591,1,0,0,0,590,588,1,0,0,0,591, - 592,5,41,0,0,592,115,1,0,0,0,593,597,5,91,0,0,594,596,8,32,0,0,595,594, - 1,0,0,0,596,599,1,0,0,0,597,595,1,0,0,0,597,598,1,0,0,0,598,600,1,0,0, - 0,599,597,1,0,0,0,600,601,5,93,0,0,601,117,1,0,0,0,602,606,5,47,0,0,603, - 605,8,29,0,0,604,603,1,0,0,0,605,608,1,0,0,0,606,604,1,0,0,0,606,607,1, - 0,0,0,607,119,1,0,0,0,608,606,1,0,0,0,609,611,8,33,0,0,610,609,1,0,0,0, - 611,612,1,0,0,0,612,610,1,0,0,0,612,613,1,0,0,0,613,121,1,0,0,0,614,616, - 7,34,0,0,615,617,8,35,0,0,616,615,1,0,0,0,617,618,1,0,0,0,618,616,1,0, - 0,0,618,619,1,0,0,0,619,620,1,0,0,0,620,621,7,34,0,0,621,123,1,0,0,0,622, - 623,3,66,30,0,623,624,1,0,0,0,624,625,6,59,6,0,625,125,1,0,0,0,626,627, - 5,35,0,0,627,628,1,0,0,0,628,629,6,60,9,0,629,127,1,0,0,0,630,632,5,13, - 0,0,631,630,1,0,0,0,631,632,1,0,0,0,632,633,1,0,0,0,633,634,5,10,0,0,634, - 635,1,0,0,0,635,636,6,61,0,0,636,637,6,61,8,0,637,129,1,0,0,0,638,642, - 3,58,26,0,639,642,3,60,27,0,640,642,5,95,0,0,641,638,1,0,0,0,641,639,1, - 0,0,0,641,640,1,0,0,0,642,648,1,0,0,0,643,647,3,58,26,0,644,647,3,60,27, - 0,645,647,7,36,0,0,646,643,1,0,0,0,646,644,1,0,0,0,646,645,1,0,0,0,647, - 650,1,0,0,0,648,646,1,0,0,0,648,649,1,0,0,0,649,131,1,0,0,0,650,648,1, - 0,0,0,651,652,5,46,0,0,652,133,1,0,0,0,653,654,3,66,30,0,654,655,1,0,0, - 0,655,656,6,64,6,0,656,135,1,0,0,0,657,659,5,13,0,0,658,657,1,0,0,0,658, - 659,1,0,0,0,659,660,1,0,0,0,660,661,5,10,0,0,661,662,1,0,0,0,662,663,6, - 65,7,0,663,664,6,65,8,0,664,137,1,0,0,0,665,667,5,92,0,0,666,668,8,29, - 0,0,667,666,1,0,0,0,667,668,1,0,0,0,668,139,1,0,0,0,669,681,5,123,0,0, - 670,680,8,37,0,0,671,675,5,123,0,0,672,674,8,29,0,0,673,672,1,0,0,0,674, - 677,1,0,0,0,675,673,1,0,0,0,675,676,1,0,0,0,676,678,1,0,0,0,677,675,1, - 0,0,0,678,680,5,125,0,0,679,670,1,0,0,0,679,671,1,0,0,0,680,683,1,0,0, - 0,681,679,1,0,0,0,681,682,1,0,0,0,682,684,1,0,0,0,683,681,1,0,0,0,684, - 685,5,125,0,0,685,141,1,0,0,0,686,688,8,38,0,0,687,686,1,0,0,0,688,689, - 1,0,0,0,689,690,1,0,0,0,689,687,1,0,0,0,690,143,1,0,0,0,691,692,3,66,30, - 0,692,693,1,0,0,0,693,694,6,69,6,0,694,145,1,0,0,0,695,697,5,13,0,0,696, - 695,1,0,0,0,696,697,1,0,0,0,697,698,1,0,0,0,698,699,5,10,0,0,699,700,1, - 0,0,0,700,701,6,70,0,0,701,702,6,70,8,0,702,147,1,0,0,0,703,707,5,91,0, - 0,704,706,8,32,0,0,705,704,1,0,0,0,706,709,1,0,0,0,707,705,1,0,0,0,707, - 708,1,0,0,0,708,710,1,0,0,0,709,707,1,0,0,0,710,711,5,93,0,0,711,149,1, - 0,0,0,712,716,5,47,0,0,713,715,8,29,0,0,714,713,1,0,0,0,715,718,1,0,0, - 0,716,714,1,0,0,0,716,717,1,0,0,0,717,151,1,0,0,0,718,716,1,0,0,0,719, - 721,8,39,0,0,720,719,1,0,0,0,721,722,1,0,0,0,722,720,1,0,0,0,722,723,1, - 0,0,0,723,153,1,0,0,0,724,725,5,58,0,0,725,155,1,0,0,0,726,728,5,13,0, - 0,727,726,1,0,0,0,727,728,1,0,0,0,728,729,1,0,0,0,729,730,5,10,0,0,730, - 731,1,0,0,0,731,732,6,75,0,0,732,733,6,75,8,0,733,157,1,0,0,0,734,736, - 8,29,0,0,735,734,1,0,0,0,736,737,1,0,0,0,737,735,1,0,0,0,737,738,1,0,0, - 0,738,159,1,0,0,0,57,0,1,2,3,4,5,223,226,235,242,268,275,280,287,296,301, - 308,316,321,347,354,361,368,376,380,385,392,399,406,412,435,450,478,497, - 511,582,588,597,606,612,618,631,641,646,648,658,667,675,679,681,689,696, - 707,716,722,727,737,10,6,0,0,5,5,0,5,2,0,5,3,0,5,4,0,5,1,0,7,1,0,7,2,0, - 4,0,0,7,7,0 + 0,308,309,1,0,0,0,309,75,1,0,0,0,310,308,1,0,0,0,311,313,5,35,0,0,312, + 311,1,0,0,0,313,314,1,0,0,0,314,312,1,0,0,0,314,315,1,0,0,0,315,319,1, + 0,0,0,316,318,3,66,30,0,317,316,1,0,0,0,318,321,1,0,0,0,319,317,1,0,0, + 0,319,320,1,0,0,0,320,322,1,0,0,0,321,319,1,0,0,0,322,323,5,63,0,0,323, + 324,1,0,0,0,324,325,6,35,1,0,325,77,1,0,0,0,326,327,5,35,0,0,327,328,1, + 0,0,0,328,329,6,36,2,0,329,79,1,0,0,0,330,331,3,64,29,0,331,332,1,0,0, + 0,332,333,6,37,3,0,333,81,1,0,0,0,334,335,5,36,0,0,335,336,1,0,0,0,336, + 337,6,38,4,0,337,83,1,0,0,0,338,339,5,64,0,0,339,340,1,0,0,0,340,341,6, + 39,5,0,341,85,1,0,0,0,342,344,3,66,30,0,343,342,1,0,0,0,344,347,1,0,0, + 0,345,343,1,0,0,0,345,346,1,0,0,0,346,348,1,0,0,0,347,345,1,0,0,0,348, + 352,5,91,0,0,349,351,8,30,0,0,350,349,1,0,0,0,351,354,1,0,0,0,352,353, + 1,0,0,0,352,350,1,0,0,0,353,355,1,0,0,0,354,352,1,0,0,0,355,359,5,93,0, + 0,356,358,3,66,30,0,357,356,1,0,0,0,358,361,1,0,0,0,359,357,1,0,0,0,359, + 360,1,0,0,0,360,378,1,0,0,0,361,359,1,0,0,0,362,366,5,40,0,0,363,365,8, + 31,0,0,364,363,1,0,0,0,365,368,1,0,0,0,366,367,1,0,0,0,366,364,1,0,0,0, + 367,369,1,0,0,0,368,366,1,0,0,0,369,379,5,41,0,0,370,374,5,91,0,0,371, + 373,8,30,0,0,372,371,1,0,0,0,373,376,1,0,0,0,374,375,1,0,0,0,374,372,1, + 0,0,0,375,377,1,0,0,0,376,374,1,0,0,0,377,379,5,93,0,0,378,362,1,0,0,0, + 378,370,1,0,0,0,379,87,1,0,0,0,380,382,3,66,30,0,381,380,1,0,0,0,382,385, + 1,0,0,0,383,381,1,0,0,0,383,384,1,0,0,0,384,386,1,0,0,0,385,383,1,0,0, + 0,386,390,5,91,0,0,387,389,8,30,0,0,388,387,1,0,0,0,389,392,1,0,0,0,390, + 391,1,0,0,0,390,388,1,0,0,0,391,393,1,0,0,0,392,390,1,0,0,0,393,397,5, + 93,0,0,394,396,3,66,30,0,395,394,1,0,0,0,396,399,1,0,0,0,397,395,1,0,0, + 0,397,398,1,0,0,0,398,400,1,0,0,0,399,397,1,0,0,0,400,404,5,58,0,0,401, + 403,3,66,30,0,402,401,1,0,0,0,403,406,1,0,0,0,404,402,1,0,0,0,404,405, + 1,0,0,0,405,410,1,0,0,0,406,404,1,0,0,0,407,409,8,29,0,0,408,407,1,0,0, + 0,409,412,1,0,0,0,410,408,1,0,0,0,410,411,1,0,0,0,411,89,1,0,0,0,412,410, + 1,0,0,0,413,414,5,42,0,0,414,415,5,42,0,0,415,416,1,0,0,0,416,417,3,16, + 5,0,417,418,3,22,8,0,418,419,3,28,11,0,419,420,3,44,19,0,420,421,3,14, + 4,0,421,422,3,40,17,0,422,423,3,42,18,0,423,424,5,58,0,0,424,425,5,42, + 0,0,425,426,5,42,0,0,426,91,1,0,0,0,427,428,5,60,0,0,428,429,5,97,0,0, + 429,433,1,0,0,0,430,432,9,0,0,0,431,430,1,0,0,0,432,435,1,0,0,0,433,434, + 1,0,0,0,433,431,1,0,0,0,434,436,1,0,0,0,435,433,1,0,0,0,436,437,5,60,0, + 0,437,438,5,47,0,0,438,439,5,97,0,0,439,440,5,62,0,0,440,93,1,0,0,0,441, + 442,5,96,0,0,442,443,5,96,0,0,443,444,5,96,0,0,444,448,1,0,0,0,445,447, + 9,0,0,0,446,445,1,0,0,0,447,450,1,0,0,0,448,449,1,0,0,0,448,446,1,0,0, + 0,449,451,1,0,0,0,450,448,1,0,0,0,451,452,5,96,0,0,452,453,5,96,0,0,453, + 454,5,96,0,0,454,95,1,0,0,0,455,456,5,42,0,0,456,457,5,42,0,0,457,458, + 1,0,0,0,458,459,3,36,15,0,459,460,3,40,17,0,460,461,3,34,14,0,461,462, + 3,30,12,0,462,463,3,36,15,0,463,464,3,44,19,0,464,465,3,42,18,0,465,466, + 5,58,0,0,466,467,5,42,0,0,467,468,5,42,0,0,468,97,1,0,0,0,469,470,9,0, + 0,0,470,99,1,0,0,0,471,472,3,66,30,0,472,473,1,0,0,0,473,474,6,47,6,0, + 474,101,1,0,0,0,475,477,5,13,0,0,476,475,1,0,0,0,476,477,1,0,0,0,477,478, + 1,0,0,0,478,479,5,10,0,0,479,480,1,0,0,0,480,481,6,48,7,0,481,482,6,48, + 8,0,482,103,1,0,0,0,483,484,5,61,0,0,484,105,1,0,0,0,485,486,5,44,0,0, + 486,107,1,0,0,0,487,488,3,20,7,0,488,489,3,6,0,0,489,490,3,42,18,0,490, + 491,3,40,17,0,491,492,3,34,14,0,492,493,3,28,11,0,493,495,3,14,4,0,494, + 496,3,42,18,0,495,494,1,0,0,0,495,496,1,0,0,0,496,109,1,0,0,0,497,498, + 3,46,20,0,498,499,3,42,18,0,499,500,3,14,4,0,500,501,3,42,18,0,501,502, + 3,16,5,0,502,503,3,14,4,0,503,504,3,6,0,0,504,505,3,44,19,0,505,506,3, + 46,20,0,506,507,3,40,17,0,507,509,3,14,4,0,508,510,3,42,18,0,509,508,1, + 0,0,0,509,510,1,0,0,0,510,111,1,0,0,0,511,512,3,42,18,0,512,513,3,22,8, + 0,513,514,3,30,12,0,514,515,3,36,15,0,515,516,3,28,11,0,516,517,3,14,4, + 0,517,581,1,0,0,0,518,519,3,28,11,0,519,520,3,22,8,0,520,521,3,42,18,0, + 521,522,3,44,19,0,522,581,1,0,0,0,523,524,3,40,17,0,524,525,3,14,4,0,525, + 526,3,18,6,0,526,527,3,14,4,0,527,528,3,52,23,0,528,581,1,0,0,0,529,530, + 3,36,15,0,530,531,3,40,17,0,531,532,3,14,4,0,532,533,3,8,1,0,533,534,3, + 46,20,0,534,535,3,22,8,0,535,536,3,28,11,0,536,537,3,44,19,0,537,581,1, + 0,0,0,538,539,3,10,2,0,539,540,3,34,14,0,540,541,3,30,12,0,541,542,3,36, + 15,0,542,543,3,34,14,0,543,544,3,42,18,0,544,545,3,22,8,0,545,546,3,44, + 19,0,546,547,3,14,4,0,547,581,1,0,0,0,548,549,3,30,12,0,549,550,3,28,11, + 0,550,581,1,0,0,0,551,552,3,36,15,0,552,553,3,6,0,0,553,554,3,44,19,0, + 554,555,3,44,19,0,555,556,3,14,4,0,556,557,3,40,17,0,557,558,3,32,13,0, + 558,559,3,6,0,0,559,560,3,32,13,0,560,561,3,54,24,0,561,581,1,0,0,0,562, + 563,3,36,15,0,563,564,3,20,7,0,564,565,3,40,17,0,565,566,3,6,0,0,566,567, + 3,42,18,0,567,568,3,14,4,0,568,569,3,28,11,0,569,570,3,22,8,0,570,571, + 3,42,18,0,571,572,3,44,19,0,572,581,1,0,0,0,573,574,3,22,8,0,574,575,3, + 32,13,0,575,576,3,44,19,0,576,577,3,14,4,0,577,578,3,32,13,0,578,579,3, + 44,19,0,579,581,1,0,0,0,580,511,1,0,0,0,580,518,1,0,0,0,580,523,1,0,0, + 0,580,529,1,0,0,0,580,538,1,0,0,0,580,548,1,0,0,0,580,551,1,0,0,0,580, + 562,1,0,0,0,580,573,1,0,0,0,581,113,1,0,0,0,582,586,5,40,0,0,583,585,8, + 29,0,0,584,583,1,0,0,0,585,588,1,0,0,0,586,584,1,0,0,0,586,587,1,0,0,0, + 587,589,1,0,0,0,588,586,1,0,0,0,589,590,5,41,0,0,590,115,1,0,0,0,591,595, + 5,91,0,0,592,594,8,32,0,0,593,592,1,0,0,0,594,597,1,0,0,0,595,593,1,0, + 0,0,595,596,1,0,0,0,596,598,1,0,0,0,597,595,1,0,0,0,598,599,5,93,0,0,599, + 117,1,0,0,0,600,604,5,47,0,0,601,603,8,29,0,0,602,601,1,0,0,0,603,606, + 1,0,0,0,604,602,1,0,0,0,604,605,1,0,0,0,605,119,1,0,0,0,606,604,1,0,0, + 0,607,609,8,33,0,0,608,607,1,0,0,0,609,610,1,0,0,0,610,608,1,0,0,0,610, + 611,1,0,0,0,611,121,1,0,0,0,612,614,7,34,0,0,613,615,8,35,0,0,614,613, + 1,0,0,0,615,616,1,0,0,0,616,614,1,0,0,0,616,617,1,0,0,0,617,618,1,0,0, + 0,618,619,7,34,0,0,619,123,1,0,0,0,620,621,3,66,30,0,621,622,1,0,0,0,622, + 623,6,59,6,0,623,125,1,0,0,0,624,625,5,35,0,0,625,626,1,0,0,0,626,627, + 6,60,9,0,627,127,1,0,0,0,628,630,5,13,0,0,629,628,1,0,0,0,629,630,1,0, + 0,0,630,631,1,0,0,0,631,632,5,10,0,0,632,633,1,0,0,0,633,634,6,61,0,0, + 634,635,6,61,8,0,635,129,1,0,0,0,636,640,3,58,26,0,637,640,3,60,27,0,638, + 640,5,95,0,0,639,636,1,0,0,0,639,637,1,0,0,0,639,638,1,0,0,0,640,646,1, + 0,0,0,641,645,3,58,26,0,642,645,3,60,27,0,643,645,7,36,0,0,644,641,1,0, + 0,0,644,642,1,0,0,0,644,643,1,0,0,0,645,648,1,0,0,0,646,644,1,0,0,0,646, + 647,1,0,0,0,647,131,1,0,0,0,648,646,1,0,0,0,649,650,5,46,0,0,650,133,1, + 0,0,0,651,652,3,66,30,0,652,653,1,0,0,0,653,654,6,64,6,0,654,135,1,0,0, + 0,655,657,5,13,0,0,656,655,1,0,0,0,656,657,1,0,0,0,657,658,1,0,0,0,658, + 659,5,10,0,0,659,660,1,0,0,0,660,661,6,65,7,0,661,662,6,65,8,0,662,137, + 1,0,0,0,663,665,5,92,0,0,664,666,8,29,0,0,665,664,1,0,0,0,665,666,1,0, + 0,0,666,139,1,0,0,0,667,679,5,123,0,0,668,678,8,37,0,0,669,673,5,123,0, + 0,670,672,8,29,0,0,671,670,1,0,0,0,672,675,1,0,0,0,673,671,1,0,0,0,673, + 674,1,0,0,0,674,676,1,0,0,0,675,673,1,0,0,0,676,678,5,125,0,0,677,668, + 1,0,0,0,677,669,1,0,0,0,678,681,1,0,0,0,679,677,1,0,0,0,679,680,1,0,0, + 0,680,682,1,0,0,0,681,679,1,0,0,0,682,683,5,125,0,0,683,141,1,0,0,0,684, + 686,8,38,0,0,685,684,1,0,0,0,686,687,1,0,0,0,687,688,1,0,0,0,687,685,1, + 0,0,0,688,143,1,0,0,0,689,690,3,66,30,0,690,691,1,0,0,0,691,692,6,69,6, + 0,692,145,1,0,0,0,693,695,5,13,0,0,694,693,1,0,0,0,694,695,1,0,0,0,695, + 696,1,0,0,0,696,697,5,10,0,0,697,698,1,0,0,0,698,699,6,70,0,0,699,700, + 6,70,8,0,700,147,1,0,0,0,701,705,5,91,0,0,702,704,8,32,0,0,703,702,1,0, + 0,0,704,707,1,0,0,0,705,703,1,0,0,0,705,706,1,0,0,0,706,708,1,0,0,0,707, + 705,1,0,0,0,708,709,5,93,0,0,709,149,1,0,0,0,710,714,5,47,0,0,711,713, + 8,29,0,0,712,711,1,0,0,0,713,716,1,0,0,0,714,712,1,0,0,0,714,715,1,0,0, + 0,715,151,1,0,0,0,716,714,1,0,0,0,717,719,8,39,0,0,718,717,1,0,0,0,719, + 720,1,0,0,0,720,718,1,0,0,0,720,721,1,0,0,0,721,153,1,0,0,0,722,723,5, + 58,0,0,723,155,1,0,0,0,724,726,5,13,0,0,725,724,1,0,0,0,725,726,1,0,0, + 0,726,727,1,0,0,0,727,728,5,10,0,0,728,729,1,0,0,0,729,730,6,75,0,0,730, + 731,6,75,8,0,731,157,1,0,0,0,732,734,8,29,0,0,733,732,1,0,0,0,734,735, + 1,0,0,0,735,733,1,0,0,0,735,736,1,0,0,0,736,159,1,0,0,0,57,0,1,2,3,4,5, + 223,226,235,242,268,275,280,287,296,301,308,314,319,345,352,359,366,374, + 378,383,390,397,404,410,433,448,476,495,509,580,586,595,604,610,616,629, + 639,644,646,656,665,673,677,679,687,694,705,714,720,725,735,10,6,0,0,5, + 5,0,5,2,0,5,3,0,5,4,0,5,1,0,7,1,0,7,2,0,4,0,0,7,7,0 }; public static readonly ATN _ATN = diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileLexer.interp b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileLexer.interp index d87ad2bbe8..69f0f095f6 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileLexer.interp +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileLexer.interp @@ -176,4 +176,4 @@ ENTITY_MODE QNA_MODE atn: -[4, 0, 40, 739, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 4, 30, 222, 8, 30, 11, 30, 12, 30, 223, 1, 31, 3, 31, 227, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 5, 32, 234, 8, 32, 10, 32, 12, 32, 237, 9, 32, 1, 32, 1, 32, 5, 32, 241, 8, 32, 10, 32, 12, 32, 244, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 267, 8, 32, 10, 32, 12, 32, 270, 9, 32, 1, 32, 1, 32, 4, 32, 274, 8, 32, 11, 32, 12, 32, 275, 1, 33, 5, 33, 279, 8, 33, 10, 33, 12, 33, 282, 9, 33, 1, 33, 1, 33, 5, 33, 286, 8, 33, 10, 33, 12, 33, 289, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 4, 33, 295, 8, 33, 11, 33, 12, 33, 296, 1, 34, 5, 34, 300, 8, 34, 10, 34, 12, 34, 303, 9, 34, 1, 34, 1, 34, 5, 34, 307, 8, 34, 10, 34, 12, 34, 310, 9, 34, 1, 34, 1, 34, 1, 35, 4, 35, 315, 8, 35, 11, 35, 12, 35, 316, 1, 35, 5, 35, 320, 8, 35, 10, 35, 12, 35, 323, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 5, 40, 346, 8, 40, 10, 40, 12, 40, 349, 9, 40, 1, 40, 1, 40, 5, 40, 353, 8, 40, 10, 40, 12, 40, 356, 9, 40, 1, 40, 1, 40, 5, 40, 360, 8, 40, 10, 40, 12, 40, 363, 9, 40, 1, 40, 1, 40, 5, 40, 367, 8, 40, 10, 40, 12, 40, 370, 9, 40, 1, 40, 1, 40, 1, 40, 5, 40, 375, 8, 40, 10, 40, 12, 40, 378, 9, 40, 1, 40, 3, 40, 381, 8, 40, 1, 41, 5, 41, 384, 8, 41, 10, 41, 12, 41, 387, 9, 41, 1, 41, 1, 41, 5, 41, 391, 8, 41, 10, 41, 12, 41, 394, 9, 41, 1, 41, 1, 41, 5, 41, 398, 8, 41, 10, 41, 12, 41, 401, 9, 41, 1, 41, 1, 41, 5, 41, 405, 8, 41, 10, 41, 12, 41, 408, 9, 41, 1, 41, 5, 41, 411, 8, 41, 10, 41, 12, 41, 414, 9, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 434, 8, 43, 10, 43, 12, 43, 437, 9, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 449, 8, 44, 10, 44, 12, 44, 452, 9, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 3, 48, 479, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 498, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 512, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 583, 8, 53, 1, 54, 1, 54, 5, 54, 587, 8, 54, 10, 54, 12, 54, 590, 9, 54, 1, 54, 1, 54, 1, 55, 1, 55, 5, 55, 596, 8, 55, 10, 55, 12, 55, 599, 9, 55, 1, 55, 1, 55, 1, 56, 1, 56, 5, 56, 605, 8, 56, 10, 56, 12, 56, 608, 9, 56, 1, 57, 4, 57, 611, 8, 57, 11, 57, 12, 57, 612, 1, 58, 1, 58, 4, 58, 617, 8, 58, 11, 58, 12, 58, 618, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 3, 61, 632, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 3, 62, 642, 8, 62, 1, 62, 1, 62, 1, 62, 5, 62, 647, 8, 62, 10, 62, 12, 62, 650, 9, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 3, 65, 659, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 3, 66, 668, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 674, 8, 67, 10, 67, 12, 67, 677, 9, 67, 1, 67, 5, 67, 680, 8, 67, 10, 67, 12, 67, 683, 9, 67, 1, 67, 1, 67, 1, 68, 4, 68, 688, 8, 68, 11, 68, 12, 68, 689, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 3, 70, 697, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 5, 71, 706, 8, 71, 10, 71, 12, 71, 709, 9, 71, 1, 71, 1, 71, 1, 72, 1, 72, 5, 72, 715, 8, 72, 10, 72, 12, 72, 718, 9, 72, 1, 73, 4, 73, 721, 8, 73, 11, 73, 12, 73, 722, 1, 74, 1, 74, 1, 75, 3, 75, 728, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 4, 76, 736, 8, 76, 11, 76, 12, 76, 737, 7, 354, 368, 376, 392, 435, 450, 689, 0, 77, 6, 0, 8, 0, 10, 0, 12, 0, 14, 0, 16, 0, 18, 0, 20, 0, 22, 0, 24, 0, 26, 0, 28, 0, 30, 0, 32, 0, 34, 0, 36, 0, 38, 0, 40, 0, 42, 0, 44, 0, 46, 0, 48, 0, 50, 0, 52, 0, 54, 0, 56, 0, 58, 0, 60, 0, 62, 0, 64, 0, 66, 1, 68, 2, 70, 3, 72, 4, 74, 5, 76, 6, 78, 7, 80, 8, 82, 9, 84, 10, 86, 11, 88, 12, 90, 13, 92, 14, 94, 15, 96, 16, 98, 17, 100, 0, 102, 0, 104, 18, 106, 19, 108, 20, 110, 21, 112, 22, 114, 23, 116, 24, 118, 25, 120, 26, 122, 27, 124, 0, 126, 0, 128, 28, 130, 29, 132, 30, 134, 0, 136, 0, 138, 31, 140, 32, 142, 33, 144, 0, 146, 34, 148, 35, 150, 36, 152, 37, 154, 38, 156, 39, 158, 40, 6, 0, 1, 2, 3, 4, 5, 40, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 2, 0, 65, 90, 97, 122, 4, 0, 9, 9, 32, 32, 160, 160, 65279, 65279, 2, 0, 42, 43, 45, 45, 2, 0, 10, 10, 13, 13, 4, 0, 10, 10, 13, 13, 91, 91, 93, 93, 3, 0, 10, 10, 13, 13, 40, 41, 7, 0, 10, 10, 13, 13, 40, 41, 91, 91, 93, 93, 123, 123, 125, 125, 7, 0, 9, 10, 13, 13, 32, 32, 34, 34, 39, 39, 44, 44, 59, 59, 2, 0, 34, 34, 39, 39, 6, 0, 9, 10, 13, 13, 34, 34, 39, 39, 44, 44, 59, 59, 2, 0, 45, 45, 95, 95, 4, 0, 10, 10, 13, 13, 123, 123, 125, 125, 4, 0, 9, 10, 13, 13, 32, 32, 92, 92, 4, 0, 9, 10, 13, 13, 32, 32, 58, 58, 763, 0, 66, 1, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 70, 1, 0, 0, 0, 0, 72, 1, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 80, 1, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 86, 1, 0, 0, 0, 0, 88, 1, 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 92, 1, 0, 0, 0, 0, 94, 1, 0, 0, 0, 0, 96, 1, 0, 0, 0, 0, 98, 1, 0, 0, 0, 1, 100, 1, 0, 0, 0, 1, 102, 1, 0, 0, 0, 1, 104, 1, 0, 0, 0, 1, 106, 1, 0, 0, 0, 1, 108, 1, 0, 0, 0, 1, 110, 1, 0, 0, 0, 1, 112, 1, 0, 0, 0, 1, 114, 1, 0, 0, 0, 1, 116, 1, 0, 0, 0, 1, 118, 1, 0, 0, 0, 1, 120, 1, 0, 0, 0, 1, 122, 1, 0, 0, 0, 2, 124, 1, 0, 0, 0, 2, 126, 1, 0, 0, 0, 2, 128, 1, 0, 0, 0, 2, 130, 1, 0, 0, 0, 2, 132, 1, 0, 0, 0, 3, 134, 1, 0, 0, 0, 3, 136, 1, 0, 0, 0, 3, 138, 1, 0, 0, 0, 3, 140, 1, 0, 0, 0, 3, 142, 1, 0, 0, 0, 4, 144, 1, 0, 0, 0, 4, 146, 1, 0, 0, 0, 4, 148, 1, 0, 0, 0, 4, 150, 1, 0, 0, 0, 4, 152, 1, 0, 0, 0, 4, 154, 1, 0, 0, 0, 5, 156, 1, 0, 0, 0, 5, 158, 1, 0, 0, 0, 6, 160, 1, 0, 0, 0, 8, 162, 1, 0, 0, 0, 10, 164, 1, 0, 0, 0, 12, 166, 1, 0, 0, 0, 14, 168, 1, 0, 0, 0, 16, 170, 1, 0, 0, 0, 18, 172, 1, 0, 0, 0, 20, 174, 1, 0, 0, 0, 22, 176, 1, 0, 0, 0, 24, 178, 1, 0, 0, 0, 26, 180, 1, 0, 0, 0, 28, 182, 1, 0, 0, 0, 30, 184, 1, 0, 0, 0, 32, 186, 1, 0, 0, 0, 34, 188, 1, 0, 0, 0, 36, 190, 1, 0, 0, 0, 38, 192, 1, 0, 0, 0, 40, 194, 1, 0, 0, 0, 42, 196, 1, 0, 0, 0, 44, 198, 1, 0, 0, 0, 46, 200, 1, 0, 0, 0, 48, 202, 1, 0, 0, 0, 50, 204, 1, 0, 0, 0, 52, 206, 1, 0, 0, 0, 54, 208, 1, 0, 0, 0, 56, 210, 1, 0, 0, 0, 58, 212, 1, 0, 0, 0, 60, 214, 1, 0, 0, 0, 62, 216, 1, 0, 0, 0, 64, 218, 1, 0, 0, 0, 66, 221, 1, 0, 0, 0, 68, 226, 1, 0, 0, 0, 70, 235, 1, 0, 0, 0, 72, 280, 1, 0, 0, 0, 74, 301, 1, 0, 0, 0, 76, 314, 1, 0, 0, 0, 78, 328, 1, 0, 0, 0, 80, 332, 1, 0, 0, 0, 82, 336, 1, 0, 0, 0, 84, 340, 1, 0, 0, 0, 86, 347, 1, 0, 0, 0, 88, 385, 1, 0, 0, 0, 90, 415, 1, 0, 0, 0, 92, 429, 1, 0, 0, 0, 94, 443, 1, 0, 0, 0, 96, 457, 1, 0, 0, 0, 98, 471, 1, 0, 0, 0, 100, 473, 1, 0, 0, 0, 102, 478, 1, 0, 0, 0, 104, 485, 1, 0, 0, 0, 106, 487, 1, 0, 0, 0, 108, 489, 1, 0, 0, 0, 110, 499, 1, 0, 0, 0, 112, 582, 1, 0, 0, 0, 114, 584, 1, 0, 0, 0, 116, 593, 1, 0, 0, 0, 118, 602, 1, 0, 0, 0, 120, 610, 1, 0, 0, 0, 122, 614, 1, 0, 0, 0, 124, 622, 1, 0, 0, 0, 126, 626, 1, 0, 0, 0, 128, 631, 1, 0, 0, 0, 130, 641, 1, 0, 0, 0, 132, 651, 1, 0, 0, 0, 134, 653, 1, 0, 0, 0, 136, 658, 1, 0, 0, 0, 138, 665, 1, 0, 0, 0, 140, 669, 1, 0, 0, 0, 142, 687, 1, 0, 0, 0, 144, 691, 1, 0, 0, 0, 146, 696, 1, 0, 0, 0, 148, 703, 1, 0, 0, 0, 150, 712, 1, 0, 0, 0, 152, 720, 1, 0, 0, 0, 154, 724, 1, 0, 0, 0, 156, 727, 1, 0, 0, 0, 158, 735, 1, 0, 0, 0, 160, 161, 7, 0, 0, 0, 161, 7, 1, 0, 0, 0, 162, 163, 7, 1, 0, 0, 163, 9, 1, 0, 0, 0, 164, 165, 7, 2, 0, 0, 165, 11, 1, 0, 0, 0, 166, 167, 7, 3, 0, 0, 167, 13, 1, 0, 0, 0, 168, 169, 7, 4, 0, 0, 169, 15, 1, 0, 0, 0, 170, 171, 7, 5, 0, 0, 171, 17, 1, 0, 0, 0, 172, 173, 7, 6, 0, 0, 173, 19, 1, 0, 0, 0, 174, 175, 7, 7, 0, 0, 175, 21, 1, 0, 0, 0, 176, 177, 7, 8, 0, 0, 177, 23, 1, 0, 0, 0, 178, 179, 7, 9, 0, 0, 179, 25, 1, 0, 0, 0, 180, 181, 7, 10, 0, 0, 181, 27, 1, 0, 0, 0, 182, 183, 7, 11, 0, 0, 183, 29, 1, 0, 0, 0, 184, 185, 7, 12, 0, 0, 185, 31, 1, 0, 0, 0, 186, 187, 7, 13, 0, 0, 187, 33, 1, 0, 0, 0, 188, 189, 7, 14, 0, 0, 189, 35, 1, 0, 0, 0, 190, 191, 7, 15, 0, 0, 191, 37, 1, 0, 0, 0, 192, 193, 7, 16, 0, 0, 193, 39, 1, 0, 0, 0, 194, 195, 7, 17, 0, 0, 195, 41, 1, 0, 0, 0, 196, 197, 7, 18, 0, 0, 197, 43, 1, 0, 0, 0, 198, 199, 7, 19, 0, 0, 199, 45, 1, 0, 0, 0, 200, 201, 7, 20, 0, 0, 201, 47, 1, 0, 0, 0, 202, 203, 7, 21, 0, 0, 203, 49, 1, 0, 0, 0, 204, 205, 7, 22, 0, 0, 205, 51, 1, 0, 0, 0, 206, 207, 7, 23, 0, 0, 207, 53, 1, 0, 0, 0, 208, 209, 7, 24, 0, 0, 209, 55, 1, 0, 0, 0, 210, 211, 7, 25, 0, 0, 211, 57, 1, 0, 0, 0, 212, 213, 7, 26, 0, 0, 213, 59, 1, 0, 0, 0, 214, 215, 2, 48, 57, 0, 215, 61, 1, 0, 0, 0, 216, 217, 7, 27, 0, 0, 217, 63, 1, 0, 0, 0, 218, 219, 7, 28, 0, 0, 219, 65, 1, 0, 0, 0, 220, 222, 3, 62, 28, 0, 221, 220, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 67, 1, 0, 0, 0, 225, 227, 5, 13, 0, 0, 226, 225, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 229, 5, 10, 0, 0, 229, 230, 1, 0, 0, 0, 230, 231, 6, 31, 0, 0, 231, 69, 1, 0, 0, 0, 232, 234, 3, 66, 30, 0, 233, 232, 1, 0, 0, 0, 234, 237, 1, 0, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 238, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 238, 242, 5, 62, 0, 0, 239, 241, 3, 66, 30, 0, 240, 239, 1, 0, 0, 0, 241, 244, 1, 0, 0, 0, 242, 240, 1, 0, 0, 0, 242, 243, 1, 0, 0, 0, 243, 245, 1, 0, 0, 0, 244, 242, 1, 0, 0, 0, 245, 246, 5, 33, 0, 0, 246, 247, 5, 35, 0, 0, 247, 248, 5, 32, 0, 0, 248, 249, 5, 64, 0, 0, 249, 250, 5, 113, 0, 0, 250, 251, 5, 110, 0, 0, 251, 252, 5, 97, 0, 0, 252, 253, 5, 46, 0, 0, 253, 254, 5, 112, 0, 0, 254, 255, 5, 97, 0, 0, 255, 256, 5, 105, 0, 0, 256, 257, 5, 114, 0, 0, 257, 258, 5, 46, 0, 0, 258, 259, 5, 115, 0, 0, 259, 260, 5, 111, 0, 0, 260, 261, 5, 117, 0, 0, 261, 262, 5, 114, 0, 0, 262, 263, 5, 99, 0, 0, 263, 264, 5, 101, 0, 0, 264, 268, 1, 0, 0, 0, 265, 267, 3, 66, 30, 0, 266, 265, 1, 0, 0, 0, 267, 270, 1, 0, 0, 0, 268, 266, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 271, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 271, 273, 5, 61, 0, 0, 272, 274, 8, 29, 0, 0, 273, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 71, 1, 0, 0, 0, 277, 279, 3, 66, 30, 0, 278, 277, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 283, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 283, 287, 5, 62, 0, 0, 284, 286, 3, 66, 30, 0, 285, 284, 1, 0, 0, 0, 286, 289, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 290, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 291, 5, 33, 0, 0, 291, 292, 5, 35, 0, 0, 292, 294, 1, 0, 0, 0, 293, 295, 8, 29, 0, 0, 294, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 294, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 73, 1, 0, 0, 0, 298, 300, 3, 66, 30, 0, 299, 298, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 304, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 308, 5, 62, 0, 0, 305, 307, 8, 29, 0, 0, 306, 305, 1, 0, 0, 0, 307, 310, 1, 0, 0, 0, 308, 306, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 311, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 311, 312, 6, 34, 0, 0, 312, 75, 1, 0, 0, 0, 313, 315, 5, 35, 0, 0, 314, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 321, 1, 0, 0, 0, 318, 320, 3, 66, 30, 0, 319, 318, 1, 0, 0, 0, 320, 323, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 324, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 324, 325, 5, 63, 0, 0, 325, 326, 1, 0, 0, 0, 326, 327, 6, 35, 1, 0, 327, 77, 1, 0, 0, 0, 328, 329, 5, 35, 0, 0, 329, 330, 1, 0, 0, 0, 330, 331, 6, 36, 2, 0, 331, 79, 1, 0, 0, 0, 332, 333, 3, 64, 29, 0, 333, 334, 1, 0, 0, 0, 334, 335, 6, 37, 3, 0, 335, 81, 1, 0, 0, 0, 336, 337, 5, 36, 0, 0, 337, 338, 1, 0, 0, 0, 338, 339, 6, 38, 4, 0, 339, 83, 1, 0, 0, 0, 340, 341, 5, 64, 0, 0, 341, 342, 1, 0, 0, 0, 342, 343, 6, 39, 5, 0, 343, 85, 1, 0, 0, 0, 344, 346, 3, 66, 30, 0, 345, 344, 1, 0, 0, 0, 346, 349, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 350, 1, 0, 0, 0, 349, 347, 1, 0, 0, 0, 350, 354, 5, 91, 0, 0, 351, 353, 8, 30, 0, 0, 352, 351, 1, 0, 0, 0, 353, 356, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 354, 352, 1, 0, 0, 0, 355, 357, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 357, 361, 5, 93, 0, 0, 358, 360, 3, 66, 30, 0, 359, 358, 1, 0, 0, 0, 360, 363, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 380, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 364, 368, 5, 40, 0, 0, 365, 367, 8, 31, 0, 0, 366, 365, 1, 0, 0, 0, 367, 370, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 369, 371, 1, 0, 0, 0, 370, 368, 1, 0, 0, 0, 371, 381, 5, 41, 0, 0, 372, 376, 5, 91, 0, 0, 373, 375, 8, 30, 0, 0, 374, 373, 1, 0, 0, 0, 375, 378, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 377, 379, 1, 0, 0, 0, 378, 376, 1, 0, 0, 0, 379, 381, 5, 93, 0, 0, 380, 364, 1, 0, 0, 0, 380, 372, 1, 0, 0, 0, 381, 87, 1, 0, 0, 0, 382, 384, 3, 66, 30, 0, 383, 382, 1, 0, 0, 0, 384, 387, 1, 0, 0, 0, 385, 383, 1, 0, 0, 0, 385, 386, 1, 0, 0, 0, 386, 388, 1, 0, 0, 0, 387, 385, 1, 0, 0, 0, 388, 392, 5, 91, 0, 0, 389, 391, 8, 30, 0, 0, 390, 389, 1, 0, 0, 0, 391, 394, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 393, 395, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 395, 399, 5, 93, 0, 0, 396, 398, 3, 66, 30, 0, 397, 396, 1, 0, 0, 0, 398, 401, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 402, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 402, 406, 5, 58, 0, 0, 403, 405, 3, 66, 30, 0, 404, 403, 1, 0, 0, 0, 405, 408, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 412, 1, 0, 0, 0, 408, 406, 1, 0, 0, 0, 409, 411, 8, 29, 0, 0, 410, 409, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 89, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 415, 416, 5, 42, 0, 0, 416, 417, 5, 42, 0, 0, 417, 418, 1, 0, 0, 0, 418, 419, 3, 16, 5, 0, 419, 420, 3, 22, 8, 0, 420, 421, 3, 28, 11, 0, 421, 422, 3, 44, 19, 0, 422, 423, 3, 14, 4, 0, 423, 424, 3, 40, 17, 0, 424, 425, 3, 42, 18, 0, 425, 426, 5, 58, 0, 0, 426, 427, 5, 42, 0, 0, 427, 428, 5, 42, 0, 0, 428, 91, 1, 0, 0, 0, 429, 430, 5, 60, 0, 0, 430, 431, 5, 97, 0, 0, 431, 435, 1, 0, 0, 0, 432, 434, 9, 0, 0, 0, 433, 432, 1, 0, 0, 0, 434, 437, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 435, 433, 1, 0, 0, 0, 436, 438, 1, 0, 0, 0, 437, 435, 1, 0, 0, 0, 438, 439, 5, 60, 0, 0, 439, 440, 5, 47, 0, 0, 440, 441, 5, 97, 0, 0, 441, 442, 5, 62, 0, 0, 442, 93, 1, 0, 0, 0, 443, 444, 5, 96, 0, 0, 444, 445, 5, 96, 0, 0, 445, 446, 5, 96, 0, 0, 446, 450, 1, 0, 0, 0, 447, 449, 9, 0, 0, 0, 448, 447, 1, 0, 0, 0, 449, 452, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 450, 448, 1, 0, 0, 0, 451, 453, 1, 0, 0, 0, 452, 450, 1, 0, 0, 0, 453, 454, 5, 96, 0, 0, 454, 455, 5, 96, 0, 0, 455, 456, 5, 96, 0, 0, 456, 95, 1, 0, 0, 0, 457, 458, 5, 42, 0, 0, 458, 459, 5, 42, 0, 0, 459, 460, 1, 0, 0, 0, 460, 461, 3, 36, 15, 0, 461, 462, 3, 40, 17, 0, 462, 463, 3, 34, 14, 0, 463, 464, 3, 30, 12, 0, 464, 465, 3, 36, 15, 0, 465, 466, 3, 44, 19, 0, 466, 467, 3, 42, 18, 0, 467, 468, 5, 58, 0, 0, 468, 469, 5, 42, 0, 0, 469, 470, 5, 42, 0, 0, 470, 97, 1, 0, 0, 0, 471, 472, 9, 0, 0, 0, 472, 99, 1, 0, 0, 0, 473, 474, 3, 66, 30, 0, 474, 475, 1, 0, 0, 0, 475, 476, 6, 47, 6, 0, 476, 101, 1, 0, 0, 0, 477, 479, 5, 13, 0, 0, 478, 477, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 481, 5, 10, 0, 0, 481, 482, 1, 0, 0, 0, 482, 483, 6, 48, 7, 0, 483, 484, 6, 48, 8, 0, 484, 103, 1, 0, 0, 0, 485, 486, 5, 61, 0, 0, 486, 105, 1, 0, 0, 0, 487, 488, 5, 44, 0, 0, 488, 107, 1, 0, 0, 0, 489, 490, 3, 20, 7, 0, 490, 491, 3, 6, 0, 0, 491, 492, 3, 42, 18, 0, 492, 493, 3, 40, 17, 0, 493, 494, 3, 34, 14, 0, 494, 495, 3, 28, 11, 0, 495, 497, 3, 14, 4, 0, 496, 498, 3, 42, 18, 0, 497, 496, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 109, 1, 0, 0, 0, 499, 500, 3, 46, 20, 0, 500, 501, 3, 42, 18, 0, 501, 502, 3, 14, 4, 0, 502, 503, 3, 42, 18, 0, 503, 504, 3, 16, 5, 0, 504, 505, 3, 14, 4, 0, 505, 506, 3, 6, 0, 0, 506, 507, 3, 44, 19, 0, 507, 508, 3, 46, 20, 0, 508, 509, 3, 40, 17, 0, 509, 511, 3, 14, 4, 0, 510, 512, 3, 42, 18, 0, 511, 510, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 111, 1, 0, 0, 0, 513, 514, 3, 42, 18, 0, 514, 515, 3, 22, 8, 0, 515, 516, 3, 30, 12, 0, 516, 517, 3, 36, 15, 0, 517, 518, 3, 28, 11, 0, 518, 519, 3, 14, 4, 0, 519, 583, 1, 0, 0, 0, 520, 521, 3, 28, 11, 0, 521, 522, 3, 22, 8, 0, 522, 523, 3, 42, 18, 0, 523, 524, 3, 44, 19, 0, 524, 583, 1, 0, 0, 0, 525, 526, 3, 40, 17, 0, 526, 527, 3, 14, 4, 0, 527, 528, 3, 18, 6, 0, 528, 529, 3, 14, 4, 0, 529, 530, 3, 52, 23, 0, 530, 583, 1, 0, 0, 0, 531, 532, 3, 36, 15, 0, 532, 533, 3, 40, 17, 0, 533, 534, 3, 14, 4, 0, 534, 535, 3, 8, 1, 0, 535, 536, 3, 46, 20, 0, 536, 537, 3, 22, 8, 0, 537, 538, 3, 28, 11, 0, 538, 539, 3, 44, 19, 0, 539, 583, 1, 0, 0, 0, 540, 541, 3, 10, 2, 0, 541, 542, 3, 34, 14, 0, 542, 543, 3, 30, 12, 0, 543, 544, 3, 36, 15, 0, 544, 545, 3, 34, 14, 0, 545, 546, 3, 42, 18, 0, 546, 547, 3, 22, 8, 0, 547, 548, 3, 44, 19, 0, 548, 549, 3, 14, 4, 0, 549, 583, 1, 0, 0, 0, 550, 551, 3, 30, 12, 0, 551, 552, 3, 28, 11, 0, 552, 583, 1, 0, 0, 0, 553, 554, 3, 36, 15, 0, 554, 555, 3, 6, 0, 0, 555, 556, 3, 44, 19, 0, 556, 557, 3, 44, 19, 0, 557, 558, 3, 14, 4, 0, 558, 559, 3, 40, 17, 0, 559, 560, 3, 32, 13, 0, 560, 561, 3, 6, 0, 0, 561, 562, 3, 32, 13, 0, 562, 563, 3, 54, 24, 0, 563, 583, 1, 0, 0, 0, 564, 565, 3, 36, 15, 0, 565, 566, 3, 20, 7, 0, 566, 567, 3, 40, 17, 0, 567, 568, 3, 6, 0, 0, 568, 569, 3, 42, 18, 0, 569, 570, 3, 14, 4, 0, 570, 571, 3, 28, 11, 0, 571, 572, 3, 22, 8, 0, 572, 573, 3, 42, 18, 0, 573, 574, 3, 44, 19, 0, 574, 583, 1, 0, 0, 0, 575, 576, 3, 22, 8, 0, 576, 577, 3, 32, 13, 0, 577, 578, 3, 44, 19, 0, 578, 579, 3, 14, 4, 0, 579, 580, 3, 32, 13, 0, 580, 581, 3, 44, 19, 0, 581, 583, 1, 0, 0, 0, 582, 513, 1, 0, 0, 0, 582, 520, 1, 0, 0, 0, 582, 525, 1, 0, 0, 0, 582, 531, 1, 0, 0, 0, 582, 540, 1, 0, 0, 0, 582, 550, 1, 0, 0, 0, 582, 553, 1, 0, 0, 0, 582, 564, 1, 0, 0, 0, 582, 575, 1, 0, 0, 0, 583, 113, 1, 0, 0, 0, 584, 588, 5, 40, 0, 0, 585, 587, 8, 29, 0, 0, 586, 585, 1, 0, 0, 0, 587, 590, 1, 0, 0, 0, 588, 586, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 591, 1, 0, 0, 0, 590, 588, 1, 0, 0, 0, 591, 592, 5, 41, 0, 0, 592, 115, 1, 0, 0, 0, 593, 597, 5, 91, 0, 0, 594, 596, 8, 32, 0, 0, 595, 594, 1, 0, 0, 0, 596, 599, 1, 0, 0, 0, 597, 595, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 600, 1, 0, 0, 0, 599, 597, 1, 0, 0, 0, 600, 601, 5, 93, 0, 0, 601, 117, 1, 0, 0, 0, 602, 606, 5, 47, 0, 0, 603, 605, 8, 29, 0, 0, 604, 603, 1, 0, 0, 0, 605, 608, 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 119, 1, 0, 0, 0, 608, 606, 1, 0, 0, 0, 609, 611, 8, 33, 0, 0, 610, 609, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 612, 613, 1, 0, 0, 0, 613, 121, 1, 0, 0, 0, 614, 616, 7, 34, 0, 0, 615, 617, 8, 35, 0, 0, 616, 615, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 621, 7, 34, 0, 0, 621, 123, 1, 0, 0, 0, 622, 623, 3, 66, 30, 0, 623, 624, 1, 0, 0, 0, 624, 625, 6, 59, 6, 0, 625, 125, 1, 0, 0, 0, 626, 627, 5, 35, 0, 0, 627, 628, 1, 0, 0, 0, 628, 629, 6, 60, 9, 0, 629, 127, 1, 0, 0, 0, 630, 632, 5, 13, 0, 0, 631, 630, 1, 0, 0, 0, 631, 632, 1, 0, 0, 0, 632, 633, 1, 0, 0, 0, 633, 634, 5, 10, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 6, 61, 0, 0, 636, 637, 6, 61, 8, 0, 637, 129, 1, 0, 0, 0, 638, 642, 3, 58, 26, 0, 639, 642, 3, 60, 27, 0, 640, 642, 5, 95, 0, 0, 641, 638, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 641, 640, 1, 0, 0, 0, 642, 648, 1, 0, 0, 0, 643, 647, 3, 58, 26, 0, 644, 647, 3, 60, 27, 0, 645, 647, 7, 36, 0, 0, 646, 643, 1, 0, 0, 0, 646, 644, 1, 0, 0, 0, 646, 645, 1, 0, 0, 0, 647, 650, 1, 0, 0, 0, 648, 646, 1, 0, 0, 0, 648, 649, 1, 0, 0, 0, 649, 131, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 651, 652, 5, 46, 0, 0, 652, 133, 1, 0, 0, 0, 653, 654, 3, 66, 30, 0, 654, 655, 1, 0, 0, 0, 655, 656, 6, 64, 6, 0, 656, 135, 1, 0, 0, 0, 657, 659, 5, 13, 0, 0, 658, 657, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 5, 10, 0, 0, 661, 662, 1, 0, 0, 0, 662, 663, 6, 65, 7, 0, 663, 664, 6, 65, 8, 0, 664, 137, 1, 0, 0, 0, 665, 667, 5, 92, 0, 0, 666, 668, 8, 29, 0, 0, 667, 666, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 139, 1, 0, 0, 0, 669, 681, 5, 123, 0, 0, 670, 680, 8, 37, 0, 0, 671, 675, 5, 123, 0, 0, 672, 674, 8, 29, 0, 0, 673, 672, 1, 0, 0, 0, 674, 677, 1, 0, 0, 0, 675, 673, 1, 0, 0, 0, 675, 676, 1, 0, 0, 0, 676, 678, 1, 0, 0, 0, 677, 675, 1, 0, 0, 0, 678, 680, 5, 125, 0, 0, 679, 670, 1, 0, 0, 0, 679, 671, 1, 0, 0, 0, 680, 683, 1, 0, 0, 0, 681, 679, 1, 0, 0, 0, 681, 682, 1, 0, 0, 0, 682, 684, 1, 0, 0, 0, 683, 681, 1, 0, 0, 0, 684, 685, 5, 125, 0, 0, 685, 141, 1, 0, 0, 0, 686, 688, 8, 38, 0, 0, 687, 686, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 689, 687, 1, 0, 0, 0, 690, 143, 1, 0, 0, 0, 691, 692, 3, 66, 30, 0, 692, 693, 1, 0, 0, 0, 693, 694, 6, 69, 6, 0, 694, 145, 1, 0, 0, 0, 695, 697, 5, 13, 0, 0, 696, 695, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 698, 1, 0, 0, 0, 698, 699, 5, 10, 0, 0, 699, 700, 1, 0, 0, 0, 700, 701, 6, 70, 0, 0, 701, 702, 6, 70, 8, 0, 702, 147, 1, 0, 0, 0, 703, 707, 5, 91, 0, 0, 704, 706, 8, 32, 0, 0, 705, 704, 1, 0, 0, 0, 706, 709, 1, 0, 0, 0, 707, 705, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 710, 1, 0, 0, 0, 709, 707, 1, 0, 0, 0, 710, 711, 5, 93, 0, 0, 711, 149, 1, 0, 0, 0, 712, 716, 5, 47, 0, 0, 713, 715, 8, 29, 0, 0, 714, 713, 1, 0, 0, 0, 715, 718, 1, 0, 0, 0, 716, 714, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 151, 1, 0, 0, 0, 718, 716, 1, 0, 0, 0, 719, 721, 8, 39, 0, 0, 720, 719, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 720, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 153, 1, 0, 0, 0, 724, 725, 5, 58, 0, 0, 725, 155, 1, 0, 0, 0, 726, 728, 5, 13, 0, 0, 727, 726, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 729, 1, 0, 0, 0, 729, 730, 5, 10, 0, 0, 730, 731, 1, 0, 0, 0, 731, 732, 6, 75, 0, 0, 732, 733, 6, 75, 8, 0, 733, 157, 1, 0, 0, 0, 734, 736, 8, 29, 0, 0, 735, 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 735, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 738, 159, 1, 0, 0, 0, 57, 0, 1, 2, 3, 4, 5, 223, 226, 235, 242, 268, 275, 280, 287, 296, 301, 308, 316, 321, 347, 354, 361, 368, 376, 380, 385, 392, 399, 406, 412, 435, 450, 478, 497, 511, 582, 588, 597, 606, 612, 618, 631, 641, 646, 648, 658, 667, 675, 679, 681, 689, 696, 707, 716, 722, 727, 737, 10, 6, 0, 0, 5, 5, 0, 5, 2, 0, 5, 3, 0, 5, 4, 0, 5, 1, 0, 7, 1, 0, 7, 2, 0, 4, 0, 0, 7, 7, 0] \ No newline at end of file +[4, 0, 40, 737, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 4, 30, 222, 8, 30, 11, 30, 12, 30, 223, 1, 31, 3, 31, 227, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 5, 32, 234, 8, 32, 10, 32, 12, 32, 237, 9, 32, 1, 32, 1, 32, 5, 32, 241, 8, 32, 10, 32, 12, 32, 244, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 267, 8, 32, 10, 32, 12, 32, 270, 9, 32, 1, 32, 1, 32, 4, 32, 274, 8, 32, 11, 32, 12, 32, 275, 1, 33, 5, 33, 279, 8, 33, 10, 33, 12, 33, 282, 9, 33, 1, 33, 1, 33, 5, 33, 286, 8, 33, 10, 33, 12, 33, 289, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 4, 33, 295, 8, 33, 11, 33, 12, 33, 296, 1, 34, 5, 34, 300, 8, 34, 10, 34, 12, 34, 303, 9, 34, 1, 34, 1, 34, 5, 34, 307, 8, 34, 10, 34, 12, 34, 310, 9, 34, 1, 35, 4, 35, 313, 8, 35, 11, 35, 12, 35, 314, 1, 35, 5, 35, 318, 8, 35, 10, 35, 12, 35, 321, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 5, 40, 344, 8, 40, 10, 40, 12, 40, 347, 9, 40, 1, 40, 1, 40, 5, 40, 351, 8, 40, 10, 40, 12, 40, 354, 9, 40, 1, 40, 1, 40, 5, 40, 358, 8, 40, 10, 40, 12, 40, 361, 9, 40, 1, 40, 1, 40, 5, 40, 365, 8, 40, 10, 40, 12, 40, 368, 9, 40, 1, 40, 1, 40, 1, 40, 5, 40, 373, 8, 40, 10, 40, 12, 40, 376, 9, 40, 1, 40, 3, 40, 379, 8, 40, 1, 41, 5, 41, 382, 8, 41, 10, 41, 12, 41, 385, 9, 41, 1, 41, 1, 41, 5, 41, 389, 8, 41, 10, 41, 12, 41, 392, 9, 41, 1, 41, 1, 41, 5, 41, 396, 8, 41, 10, 41, 12, 41, 399, 9, 41, 1, 41, 1, 41, 5, 41, 403, 8, 41, 10, 41, 12, 41, 406, 9, 41, 1, 41, 5, 41, 409, 8, 41, 10, 41, 12, 41, 412, 9, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 432, 8, 43, 10, 43, 12, 43, 435, 9, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 447, 8, 44, 10, 44, 12, 44, 450, 9, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 3, 48, 477, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 496, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 510, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 581, 8, 53, 1, 54, 1, 54, 5, 54, 585, 8, 54, 10, 54, 12, 54, 588, 9, 54, 1, 54, 1, 54, 1, 55, 1, 55, 5, 55, 594, 8, 55, 10, 55, 12, 55, 597, 9, 55, 1, 55, 1, 55, 1, 56, 1, 56, 5, 56, 603, 8, 56, 10, 56, 12, 56, 606, 9, 56, 1, 57, 4, 57, 609, 8, 57, 11, 57, 12, 57, 610, 1, 58, 1, 58, 4, 58, 615, 8, 58, 11, 58, 12, 58, 616, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 3, 61, 630, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 3, 62, 640, 8, 62, 1, 62, 1, 62, 1, 62, 5, 62, 645, 8, 62, 10, 62, 12, 62, 648, 9, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 3, 65, 657, 8, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 3, 66, 666, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 672, 8, 67, 10, 67, 12, 67, 675, 9, 67, 1, 67, 5, 67, 678, 8, 67, 10, 67, 12, 67, 681, 9, 67, 1, 67, 1, 67, 1, 68, 4, 68, 686, 8, 68, 11, 68, 12, 68, 687, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 3, 70, 695, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 5, 71, 704, 8, 71, 10, 71, 12, 71, 707, 9, 71, 1, 71, 1, 71, 1, 72, 1, 72, 5, 72, 713, 8, 72, 10, 72, 12, 72, 716, 9, 72, 1, 73, 4, 73, 719, 8, 73, 11, 73, 12, 73, 720, 1, 74, 1, 74, 1, 75, 3, 75, 726, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 4, 76, 734, 8, 76, 11, 76, 12, 76, 735, 7, 352, 366, 374, 390, 433, 448, 687, 0, 77, 6, 0, 8, 0, 10, 0, 12, 0, 14, 0, 16, 0, 18, 0, 20, 0, 22, 0, 24, 0, 26, 0, 28, 0, 30, 0, 32, 0, 34, 0, 36, 0, 38, 0, 40, 0, 42, 0, 44, 0, 46, 0, 48, 0, 50, 0, 52, 0, 54, 0, 56, 0, 58, 0, 60, 0, 62, 0, 64, 0, 66, 1, 68, 2, 70, 3, 72, 4, 74, 5, 76, 6, 78, 7, 80, 8, 82, 9, 84, 10, 86, 11, 88, 12, 90, 13, 92, 14, 94, 15, 96, 16, 98, 17, 100, 0, 102, 0, 104, 18, 106, 19, 108, 20, 110, 21, 112, 22, 114, 23, 116, 24, 118, 25, 120, 26, 122, 27, 124, 0, 126, 0, 128, 28, 130, 29, 132, 30, 134, 0, 136, 0, 138, 31, 140, 32, 142, 33, 144, 0, 146, 34, 148, 35, 150, 36, 152, 37, 154, 38, 156, 39, 158, 40, 6, 0, 1, 2, 3, 4, 5, 40, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 2, 0, 65, 90, 97, 122, 4, 0, 9, 9, 32, 32, 160, 160, 65279, 65279, 2, 0, 42, 43, 45, 45, 2, 0, 10, 10, 13, 13, 4, 0, 10, 10, 13, 13, 91, 91, 93, 93, 3, 0, 10, 10, 13, 13, 40, 41, 7, 0, 10, 10, 13, 13, 40, 41, 91, 91, 93, 93, 123, 123, 125, 125, 7, 0, 9, 10, 13, 13, 32, 32, 34, 34, 39, 39, 44, 44, 59, 59, 2, 0, 34, 34, 39, 39, 6, 0, 9, 10, 13, 13, 34, 34, 39, 39, 44, 44, 59, 59, 2, 0, 45, 45, 95, 95, 4, 0, 10, 10, 13, 13, 123, 123, 125, 125, 4, 0, 9, 10, 13, 13, 32, 32, 92, 92, 4, 0, 9, 10, 13, 13, 32, 32, 58, 58, 761, 0, 66, 1, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 70, 1, 0, 0, 0, 0, 72, 1, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 76, 1, 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 80, 1, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 86, 1, 0, 0, 0, 0, 88, 1, 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 92, 1, 0, 0, 0, 0, 94, 1, 0, 0, 0, 0, 96, 1, 0, 0, 0, 0, 98, 1, 0, 0, 0, 1, 100, 1, 0, 0, 0, 1, 102, 1, 0, 0, 0, 1, 104, 1, 0, 0, 0, 1, 106, 1, 0, 0, 0, 1, 108, 1, 0, 0, 0, 1, 110, 1, 0, 0, 0, 1, 112, 1, 0, 0, 0, 1, 114, 1, 0, 0, 0, 1, 116, 1, 0, 0, 0, 1, 118, 1, 0, 0, 0, 1, 120, 1, 0, 0, 0, 1, 122, 1, 0, 0, 0, 2, 124, 1, 0, 0, 0, 2, 126, 1, 0, 0, 0, 2, 128, 1, 0, 0, 0, 2, 130, 1, 0, 0, 0, 2, 132, 1, 0, 0, 0, 3, 134, 1, 0, 0, 0, 3, 136, 1, 0, 0, 0, 3, 138, 1, 0, 0, 0, 3, 140, 1, 0, 0, 0, 3, 142, 1, 0, 0, 0, 4, 144, 1, 0, 0, 0, 4, 146, 1, 0, 0, 0, 4, 148, 1, 0, 0, 0, 4, 150, 1, 0, 0, 0, 4, 152, 1, 0, 0, 0, 4, 154, 1, 0, 0, 0, 5, 156, 1, 0, 0, 0, 5, 158, 1, 0, 0, 0, 6, 160, 1, 0, 0, 0, 8, 162, 1, 0, 0, 0, 10, 164, 1, 0, 0, 0, 12, 166, 1, 0, 0, 0, 14, 168, 1, 0, 0, 0, 16, 170, 1, 0, 0, 0, 18, 172, 1, 0, 0, 0, 20, 174, 1, 0, 0, 0, 22, 176, 1, 0, 0, 0, 24, 178, 1, 0, 0, 0, 26, 180, 1, 0, 0, 0, 28, 182, 1, 0, 0, 0, 30, 184, 1, 0, 0, 0, 32, 186, 1, 0, 0, 0, 34, 188, 1, 0, 0, 0, 36, 190, 1, 0, 0, 0, 38, 192, 1, 0, 0, 0, 40, 194, 1, 0, 0, 0, 42, 196, 1, 0, 0, 0, 44, 198, 1, 0, 0, 0, 46, 200, 1, 0, 0, 0, 48, 202, 1, 0, 0, 0, 50, 204, 1, 0, 0, 0, 52, 206, 1, 0, 0, 0, 54, 208, 1, 0, 0, 0, 56, 210, 1, 0, 0, 0, 58, 212, 1, 0, 0, 0, 60, 214, 1, 0, 0, 0, 62, 216, 1, 0, 0, 0, 64, 218, 1, 0, 0, 0, 66, 221, 1, 0, 0, 0, 68, 226, 1, 0, 0, 0, 70, 235, 1, 0, 0, 0, 72, 280, 1, 0, 0, 0, 74, 301, 1, 0, 0, 0, 76, 312, 1, 0, 0, 0, 78, 326, 1, 0, 0, 0, 80, 330, 1, 0, 0, 0, 82, 334, 1, 0, 0, 0, 84, 338, 1, 0, 0, 0, 86, 345, 1, 0, 0, 0, 88, 383, 1, 0, 0, 0, 90, 413, 1, 0, 0, 0, 92, 427, 1, 0, 0, 0, 94, 441, 1, 0, 0, 0, 96, 455, 1, 0, 0, 0, 98, 469, 1, 0, 0, 0, 100, 471, 1, 0, 0, 0, 102, 476, 1, 0, 0, 0, 104, 483, 1, 0, 0, 0, 106, 485, 1, 0, 0, 0, 108, 487, 1, 0, 0, 0, 110, 497, 1, 0, 0, 0, 112, 580, 1, 0, 0, 0, 114, 582, 1, 0, 0, 0, 116, 591, 1, 0, 0, 0, 118, 600, 1, 0, 0, 0, 120, 608, 1, 0, 0, 0, 122, 612, 1, 0, 0, 0, 124, 620, 1, 0, 0, 0, 126, 624, 1, 0, 0, 0, 128, 629, 1, 0, 0, 0, 130, 639, 1, 0, 0, 0, 132, 649, 1, 0, 0, 0, 134, 651, 1, 0, 0, 0, 136, 656, 1, 0, 0, 0, 138, 663, 1, 0, 0, 0, 140, 667, 1, 0, 0, 0, 142, 685, 1, 0, 0, 0, 144, 689, 1, 0, 0, 0, 146, 694, 1, 0, 0, 0, 148, 701, 1, 0, 0, 0, 150, 710, 1, 0, 0, 0, 152, 718, 1, 0, 0, 0, 154, 722, 1, 0, 0, 0, 156, 725, 1, 0, 0, 0, 158, 733, 1, 0, 0, 0, 160, 161, 7, 0, 0, 0, 161, 7, 1, 0, 0, 0, 162, 163, 7, 1, 0, 0, 163, 9, 1, 0, 0, 0, 164, 165, 7, 2, 0, 0, 165, 11, 1, 0, 0, 0, 166, 167, 7, 3, 0, 0, 167, 13, 1, 0, 0, 0, 168, 169, 7, 4, 0, 0, 169, 15, 1, 0, 0, 0, 170, 171, 7, 5, 0, 0, 171, 17, 1, 0, 0, 0, 172, 173, 7, 6, 0, 0, 173, 19, 1, 0, 0, 0, 174, 175, 7, 7, 0, 0, 175, 21, 1, 0, 0, 0, 176, 177, 7, 8, 0, 0, 177, 23, 1, 0, 0, 0, 178, 179, 7, 9, 0, 0, 179, 25, 1, 0, 0, 0, 180, 181, 7, 10, 0, 0, 181, 27, 1, 0, 0, 0, 182, 183, 7, 11, 0, 0, 183, 29, 1, 0, 0, 0, 184, 185, 7, 12, 0, 0, 185, 31, 1, 0, 0, 0, 186, 187, 7, 13, 0, 0, 187, 33, 1, 0, 0, 0, 188, 189, 7, 14, 0, 0, 189, 35, 1, 0, 0, 0, 190, 191, 7, 15, 0, 0, 191, 37, 1, 0, 0, 0, 192, 193, 7, 16, 0, 0, 193, 39, 1, 0, 0, 0, 194, 195, 7, 17, 0, 0, 195, 41, 1, 0, 0, 0, 196, 197, 7, 18, 0, 0, 197, 43, 1, 0, 0, 0, 198, 199, 7, 19, 0, 0, 199, 45, 1, 0, 0, 0, 200, 201, 7, 20, 0, 0, 201, 47, 1, 0, 0, 0, 202, 203, 7, 21, 0, 0, 203, 49, 1, 0, 0, 0, 204, 205, 7, 22, 0, 0, 205, 51, 1, 0, 0, 0, 206, 207, 7, 23, 0, 0, 207, 53, 1, 0, 0, 0, 208, 209, 7, 24, 0, 0, 209, 55, 1, 0, 0, 0, 210, 211, 7, 25, 0, 0, 211, 57, 1, 0, 0, 0, 212, 213, 7, 26, 0, 0, 213, 59, 1, 0, 0, 0, 214, 215, 2, 48, 57, 0, 215, 61, 1, 0, 0, 0, 216, 217, 7, 27, 0, 0, 217, 63, 1, 0, 0, 0, 218, 219, 7, 28, 0, 0, 219, 65, 1, 0, 0, 0, 220, 222, 3, 62, 28, 0, 221, 220, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 67, 1, 0, 0, 0, 225, 227, 5, 13, 0, 0, 226, 225, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 229, 5, 10, 0, 0, 229, 230, 1, 0, 0, 0, 230, 231, 6, 31, 0, 0, 231, 69, 1, 0, 0, 0, 232, 234, 3, 66, 30, 0, 233, 232, 1, 0, 0, 0, 234, 237, 1, 0, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 238, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 238, 242, 5, 62, 0, 0, 239, 241, 3, 66, 30, 0, 240, 239, 1, 0, 0, 0, 241, 244, 1, 0, 0, 0, 242, 240, 1, 0, 0, 0, 242, 243, 1, 0, 0, 0, 243, 245, 1, 0, 0, 0, 244, 242, 1, 0, 0, 0, 245, 246, 5, 33, 0, 0, 246, 247, 5, 35, 0, 0, 247, 248, 5, 32, 0, 0, 248, 249, 5, 64, 0, 0, 249, 250, 5, 113, 0, 0, 250, 251, 5, 110, 0, 0, 251, 252, 5, 97, 0, 0, 252, 253, 5, 46, 0, 0, 253, 254, 5, 112, 0, 0, 254, 255, 5, 97, 0, 0, 255, 256, 5, 105, 0, 0, 256, 257, 5, 114, 0, 0, 257, 258, 5, 46, 0, 0, 258, 259, 5, 115, 0, 0, 259, 260, 5, 111, 0, 0, 260, 261, 5, 117, 0, 0, 261, 262, 5, 114, 0, 0, 262, 263, 5, 99, 0, 0, 263, 264, 5, 101, 0, 0, 264, 268, 1, 0, 0, 0, 265, 267, 3, 66, 30, 0, 266, 265, 1, 0, 0, 0, 267, 270, 1, 0, 0, 0, 268, 266, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 271, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 271, 273, 5, 61, 0, 0, 272, 274, 8, 29, 0, 0, 273, 272, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 71, 1, 0, 0, 0, 277, 279, 3, 66, 30, 0, 278, 277, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 283, 1, 0, 0, 0, 282, 280, 1, 0, 0, 0, 283, 287, 5, 62, 0, 0, 284, 286, 3, 66, 30, 0, 285, 284, 1, 0, 0, 0, 286, 289, 1, 0, 0, 0, 287, 285, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 290, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 290, 291, 5, 33, 0, 0, 291, 292, 5, 35, 0, 0, 292, 294, 1, 0, 0, 0, 293, 295, 8, 29, 0, 0, 294, 293, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 294, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 73, 1, 0, 0, 0, 298, 300, 3, 66, 30, 0, 299, 298, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 304, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 308, 5, 62, 0, 0, 305, 307, 8, 29, 0, 0, 306, 305, 1, 0, 0, 0, 307, 310, 1, 0, 0, 0, 308, 306, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 75, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 311, 313, 5, 35, 0, 0, 312, 311, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 319, 1, 0, 0, 0, 316, 318, 3, 66, 30, 0, 317, 316, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 322, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 323, 5, 63, 0, 0, 323, 324, 1, 0, 0, 0, 324, 325, 6, 35, 1, 0, 325, 77, 1, 0, 0, 0, 326, 327, 5, 35, 0, 0, 327, 328, 1, 0, 0, 0, 328, 329, 6, 36, 2, 0, 329, 79, 1, 0, 0, 0, 330, 331, 3, 64, 29, 0, 331, 332, 1, 0, 0, 0, 332, 333, 6, 37, 3, 0, 333, 81, 1, 0, 0, 0, 334, 335, 5, 36, 0, 0, 335, 336, 1, 0, 0, 0, 336, 337, 6, 38, 4, 0, 337, 83, 1, 0, 0, 0, 338, 339, 5, 64, 0, 0, 339, 340, 1, 0, 0, 0, 340, 341, 6, 39, 5, 0, 341, 85, 1, 0, 0, 0, 342, 344, 3, 66, 30, 0, 343, 342, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 352, 5, 91, 0, 0, 349, 351, 8, 30, 0, 0, 350, 349, 1, 0, 0, 0, 351, 354, 1, 0, 0, 0, 352, 353, 1, 0, 0, 0, 352, 350, 1, 0, 0, 0, 353, 355, 1, 0, 0, 0, 354, 352, 1, 0, 0, 0, 355, 359, 5, 93, 0, 0, 356, 358, 3, 66, 30, 0, 357, 356, 1, 0, 0, 0, 358, 361, 1, 0, 0, 0, 359, 357, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 378, 1, 0, 0, 0, 361, 359, 1, 0, 0, 0, 362, 366, 5, 40, 0, 0, 363, 365, 8, 31, 0, 0, 364, 363, 1, 0, 0, 0, 365, 368, 1, 0, 0, 0, 366, 367, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 367, 369, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 369, 379, 5, 41, 0, 0, 370, 374, 5, 91, 0, 0, 371, 373, 8, 30, 0, 0, 372, 371, 1, 0, 0, 0, 373, 376, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 374, 1, 0, 0, 0, 377, 379, 5, 93, 0, 0, 378, 362, 1, 0, 0, 0, 378, 370, 1, 0, 0, 0, 379, 87, 1, 0, 0, 0, 380, 382, 3, 66, 30, 0, 381, 380, 1, 0, 0, 0, 382, 385, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 386, 1, 0, 0, 0, 385, 383, 1, 0, 0, 0, 386, 390, 5, 91, 0, 0, 387, 389, 8, 30, 0, 0, 388, 387, 1, 0, 0, 0, 389, 392, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 391, 393, 1, 0, 0, 0, 392, 390, 1, 0, 0, 0, 393, 397, 5, 93, 0, 0, 394, 396, 3, 66, 30, 0, 395, 394, 1, 0, 0, 0, 396, 399, 1, 0, 0, 0, 397, 395, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 400, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 400, 404, 5, 58, 0, 0, 401, 403, 3, 66, 30, 0, 402, 401, 1, 0, 0, 0, 403, 406, 1, 0, 0, 0, 404, 402, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 410, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 407, 409, 8, 29, 0, 0, 408, 407, 1, 0, 0, 0, 409, 412, 1, 0, 0, 0, 410, 408, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 89, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 413, 414, 5, 42, 0, 0, 414, 415, 5, 42, 0, 0, 415, 416, 1, 0, 0, 0, 416, 417, 3, 16, 5, 0, 417, 418, 3, 22, 8, 0, 418, 419, 3, 28, 11, 0, 419, 420, 3, 44, 19, 0, 420, 421, 3, 14, 4, 0, 421, 422, 3, 40, 17, 0, 422, 423, 3, 42, 18, 0, 423, 424, 5, 58, 0, 0, 424, 425, 5, 42, 0, 0, 425, 426, 5, 42, 0, 0, 426, 91, 1, 0, 0, 0, 427, 428, 5, 60, 0, 0, 428, 429, 5, 97, 0, 0, 429, 433, 1, 0, 0, 0, 430, 432, 9, 0, 0, 0, 431, 430, 1, 0, 0, 0, 432, 435, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 434, 436, 1, 0, 0, 0, 435, 433, 1, 0, 0, 0, 436, 437, 5, 60, 0, 0, 437, 438, 5, 47, 0, 0, 438, 439, 5, 97, 0, 0, 439, 440, 5, 62, 0, 0, 440, 93, 1, 0, 0, 0, 441, 442, 5, 96, 0, 0, 442, 443, 5, 96, 0, 0, 443, 444, 5, 96, 0, 0, 444, 448, 1, 0, 0, 0, 445, 447, 9, 0, 0, 0, 446, 445, 1, 0, 0, 0, 447, 450, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 451, 1, 0, 0, 0, 450, 448, 1, 0, 0, 0, 451, 452, 5, 96, 0, 0, 452, 453, 5, 96, 0, 0, 453, 454, 5, 96, 0, 0, 454, 95, 1, 0, 0, 0, 455, 456, 5, 42, 0, 0, 456, 457, 5, 42, 0, 0, 457, 458, 1, 0, 0, 0, 458, 459, 3, 36, 15, 0, 459, 460, 3, 40, 17, 0, 460, 461, 3, 34, 14, 0, 461, 462, 3, 30, 12, 0, 462, 463, 3, 36, 15, 0, 463, 464, 3, 44, 19, 0, 464, 465, 3, 42, 18, 0, 465, 466, 5, 58, 0, 0, 466, 467, 5, 42, 0, 0, 467, 468, 5, 42, 0, 0, 468, 97, 1, 0, 0, 0, 469, 470, 9, 0, 0, 0, 470, 99, 1, 0, 0, 0, 471, 472, 3, 66, 30, 0, 472, 473, 1, 0, 0, 0, 473, 474, 6, 47, 6, 0, 474, 101, 1, 0, 0, 0, 475, 477, 5, 13, 0, 0, 476, 475, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 478, 1, 0, 0, 0, 478, 479, 5, 10, 0, 0, 479, 480, 1, 0, 0, 0, 480, 481, 6, 48, 7, 0, 481, 482, 6, 48, 8, 0, 482, 103, 1, 0, 0, 0, 483, 484, 5, 61, 0, 0, 484, 105, 1, 0, 0, 0, 485, 486, 5, 44, 0, 0, 486, 107, 1, 0, 0, 0, 487, 488, 3, 20, 7, 0, 488, 489, 3, 6, 0, 0, 489, 490, 3, 42, 18, 0, 490, 491, 3, 40, 17, 0, 491, 492, 3, 34, 14, 0, 492, 493, 3, 28, 11, 0, 493, 495, 3, 14, 4, 0, 494, 496, 3, 42, 18, 0, 495, 494, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 109, 1, 0, 0, 0, 497, 498, 3, 46, 20, 0, 498, 499, 3, 42, 18, 0, 499, 500, 3, 14, 4, 0, 500, 501, 3, 42, 18, 0, 501, 502, 3, 16, 5, 0, 502, 503, 3, 14, 4, 0, 503, 504, 3, 6, 0, 0, 504, 505, 3, 44, 19, 0, 505, 506, 3, 46, 20, 0, 506, 507, 3, 40, 17, 0, 507, 509, 3, 14, 4, 0, 508, 510, 3, 42, 18, 0, 509, 508, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 111, 1, 0, 0, 0, 511, 512, 3, 42, 18, 0, 512, 513, 3, 22, 8, 0, 513, 514, 3, 30, 12, 0, 514, 515, 3, 36, 15, 0, 515, 516, 3, 28, 11, 0, 516, 517, 3, 14, 4, 0, 517, 581, 1, 0, 0, 0, 518, 519, 3, 28, 11, 0, 519, 520, 3, 22, 8, 0, 520, 521, 3, 42, 18, 0, 521, 522, 3, 44, 19, 0, 522, 581, 1, 0, 0, 0, 523, 524, 3, 40, 17, 0, 524, 525, 3, 14, 4, 0, 525, 526, 3, 18, 6, 0, 526, 527, 3, 14, 4, 0, 527, 528, 3, 52, 23, 0, 528, 581, 1, 0, 0, 0, 529, 530, 3, 36, 15, 0, 530, 531, 3, 40, 17, 0, 531, 532, 3, 14, 4, 0, 532, 533, 3, 8, 1, 0, 533, 534, 3, 46, 20, 0, 534, 535, 3, 22, 8, 0, 535, 536, 3, 28, 11, 0, 536, 537, 3, 44, 19, 0, 537, 581, 1, 0, 0, 0, 538, 539, 3, 10, 2, 0, 539, 540, 3, 34, 14, 0, 540, 541, 3, 30, 12, 0, 541, 542, 3, 36, 15, 0, 542, 543, 3, 34, 14, 0, 543, 544, 3, 42, 18, 0, 544, 545, 3, 22, 8, 0, 545, 546, 3, 44, 19, 0, 546, 547, 3, 14, 4, 0, 547, 581, 1, 0, 0, 0, 548, 549, 3, 30, 12, 0, 549, 550, 3, 28, 11, 0, 550, 581, 1, 0, 0, 0, 551, 552, 3, 36, 15, 0, 552, 553, 3, 6, 0, 0, 553, 554, 3, 44, 19, 0, 554, 555, 3, 44, 19, 0, 555, 556, 3, 14, 4, 0, 556, 557, 3, 40, 17, 0, 557, 558, 3, 32, 13, 0, 558, 559, 3, 6, 0, 0, 559, 560, 3, 32, 13, 0, 560, 561, 3, 54, 24, 0, 561, 581, 1, 0, 0, 0, 562, 563, 3, 36, 15, 0, 563, 564, 3, 20, 7, 0, 564, 565, 3, 40, 17, 0, 565, 566, 3, 6, 0, 0, 566, 567, 3, 42, 18, 0, 567, 568, 3, 14, 4, 0, 568, 569, 3, 28, 11, 0, 569, 570, 3, 22, 8, 0, 570, 571, 3, 42, 18, 0, 571, 572, 3, 44, 19, 0, 572, 581, 1, 0, 0, 0, 573, 574, 3, 22, 8, 0, 574, 575, 3, 32, 13, 0, 575, 576, 3, 44, 19, 0, 576, 577, 3, 14, 4, 0, 577, 578, 3, 32, 13, 0, 578, 579, 3, 44, 19, 0, 579, 581, 1, 0, 0, 0, 580, 511, 1, 0, 0, 0, 580, 518, 1, 0, 0, 0, 580, 523, 1, 0, 0, 0, 580, 529, 1, 0, 0, 0, 580, 538, 1, 0, 0, 0, 580, 548, 1, 0, 0, 0, 580, 551, 1, 0, 0, 0, 580, 562, 1, 0, 0, 0, 580, 573, 1, 0, 0, 0, 581, 113, 1, 0, 0, 0, 582, 586, 5, 40, 0, 0, 583, 585, 8, 29, 0, 0, 584, 583, 1, 0, 0, 0, 585, 588, 1, 0, 0, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 589, 1, 0, 0, 0, 588, 586, 1, 0, 0, 0, 589, 590, 5, 41, 0, 0, 590, 115, 1, 0, 0, 0, 591, 595, 5, 91, 0, 0, 592, 594, 8, 32, 0, 0, 593, 592, 1, 0, 0, 0, 594, 597, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 598, 1, 0, 0, 0, 597, 595, 1, 0, 0, 0, 598, 599, 5, 93, 0, 0, 599, 117, 1, 0, 0, 0, 600, 604, 5, 47, 0, 0, 601, 603, 8, 29, 0, 0, 602, 601, 1, 0, 0, 0, 603, 606, 1, 0, 0, 0, 604, 602, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 119, 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 607, 609, 8, 33, 0, 0, 608, 607, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 608, 1, 0, 0, 0, 610, 611, 1, 0, 0, 0, 611, 121, 1, 0, 0, 0, 612, 614, 7, 34, 0, 0, 613, 615, 8, 35, 0, 0, 614, 613, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 619, 7, 34, 0, 0, 619, 123, 1, 0, 0, 0, 620, 621, 3, 66, 30, 0, 621, 622, 1, 0, 0, 0, 622, 623, 6, 59, 6, 0, 623, 125, 1, 0, 0, 0, 624, 625, 5, 35, 0, 0, 625, 626, 1, 0, 0, 0, 626, 627, 6, 60, 9, 0, 627, 127, 1, 0, 0, 0, 628, 630, 5, 13, 0, 0, 629, 628, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 632, 5, 10, 0, 0, 632, 633, 1, 0, 0, 0, 633, 634, 6, 61, 0, 0, 634, 635, 6, 61, 8, 0, 635, 129, 1, 0, 0, 0, 636, 640, 3, 58, 26, 0, 637, 640, 3, 60, 27, 0, 638, 640, 5, 95, 0, 0, 639, 636, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 638, 1, 0, 0, 0, 640, 646, 1, 0, 0, 0, 641, 645, 3, 58, 26, 0, 642, 645, 3, 60, 27, 0, 643, 645, 7, 36, 0, 0, 644, 641, 1, 0, 0, 0, 644, 642, 1, 0, 0, 0, 644, 643, 1, 0, 0, 0, 645, 648, 1, 0, 0, 0, 646, 644, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 131, 1, 0, 0, 0, 648, 646, 1, 0, 0, 0, 649, 650, 5, 46, 0, 0, 650, 133, 1, 0, 0, 0, 651, 652, 3, 66, 30, 0, 652, 653, 1, 0, 0, 0, 653, 654, 6, 64, 6, 0, 654, 135, 1, 0, 0, 0, 655, 657, 5, 13, 0, 0, 656, 655, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 659, 5, 10, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 6, 65, 7, 0, 661, 662, 6, 65, 8, 0, 662, 137, 1, 0, 0, 0, 663, 665, 5, 92, 0, 0, 664, 666, 8, 29, 0, 0, 665, 664, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 139, 1, 0, 0, 0, 667, 679, 5, 123, 0, 0, 668, 678, 8, 37, 0, 0, 669, 673, 5, 123, 0, 0, 670, 672, 8, 29, 0, 0, 671, 670, 1, 0, 0, 0, 672, 675, 1, 0, 0, 0, 673, 671, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 676, 1, 0, 0, 0, 675, 673, 1, 0, 0, 0, 676, 678, 5, 125, 0, 0, 677, 668, 1, 0, 0, 0, 677, 669, 1, 0, 0, 0, 678, 681, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 682, 1, 0, 0, 0, 681, 679, 1, 0, 0, 0, 682, 683, 5, 125, 0, 0, 683, 141, 1, 0, 0, 0, 684, 686, 8, 38, 0, 0, 685, 684, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 688, 143, 1, 0, 0, 0, 689, 690, 3, 66, 30, 0, 690, 691, 1, 0, 0, 0, 691, 692, 6, 69, 6, 0, 692, 145, 1, 0, 0, 0, 693, 695, 5, 13, 0, 0, 694, 693, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 697, 5, 10, 0, 0, 697, 698, 1, 0, 0, 0, 698, 699, 6, 70, 0, 0, 699, 700, 6, 70, 8, 0, 700, 147, 1, 0, 0, 0, 701, 705, 5, 91, 0, 0, 702, 704, 8, 32, 0, 0, 703, 702, 1, 0, 0, 0, 704, 707, 1, 0, 0, 0, 705, 703, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 708, 1, 0, 0, 0, 707, 705, 1, 0, 0, 0, 708, 709, 5, 93, 0, 0, 709, 149, 1, 0, 0, 0, 710, 714, 5, 47, 0, 0, 711, 713, 8, 29, 0, 0, 712, 711, 1, 0, 0, 0, 713, 716, 1, 0, 0, 0, 714, 712, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 151, 1, 0, 0, 0, 716, 714, 1, 0, 0, 0, 717, 719, 8, 39, 0, 0, 718, 717, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 718, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 153, 1, 0, 0, 0, 722, 723, 5, 58, 0, 0, 723, 155, 1, 0, 0, 0, 724, 726, 5, 13, 0, 0, 725, 724, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 728, 5, 10, 0, 0, 728, 729, 1, 0, 0, 0, 729, 730, 6, 75, 0, 0, 730, 731, 6, 75, 8, 0, 731, 157, 1, 0, 0, 0, 732, 734, 8, 29, 0, 0, 733, 732, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 733, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, 159, 1, 0, 0, 0, 57, 0, 1, 2, 3, 4, 5, 223, 226, 235, 242, 268, 275, 280, 287, 296, 301, 308, 314, 319, 345, 352, 359, 366, 374, 378, 383, 390, 397, 404, 410, 433, 448, 476, 495, 509, 580, 586, 595, 604, 610, 616, 629, 639, 644, 646, 656, 665, 673, 677, 679, 687, 694, 705, 714, 720, 725, 735, 10, 6, 0, 0, 5, 5, 0, 5, 2, 0, 5, 3, 0, 5, 4, 0, 5, 1, 0, 7, 1, 0, 7, 2, 0, 4, 0, 0, 7, 7, 0] \ No newline at end of file diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.cs b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.cs index 05b9f41f87..2f1efd8dca 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.cs +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.cs @@ -45,27 +45,28 @@ public const int ESCAPE_CHARACTER=31, EXPRESSION=32, TEXT=33, NEWLINE_IN_ENTITY=34, COMPOSITE_ENTITY=35, REGEX_ENTITY=36, ENTITY_TEXT=37, COLON_MARK=38, NEWLINE_IN_QNA=39, QNA_TEXT=40; public const int - RULE_file = 0, RULE_paragraph = 1, RULE_newline = 2, RULE_errorString = 3, - RULE_nestedIntentSection = 4, RULE_nestedIntentNameLine = 5, RULE_nestedIntentName = 6, - RULE_nameIdentifier = 7, RULE_nestedIntentBodyDefinition = 8, RULE_subIntentDefinition = 9, - RULE_simpleIntentSection = 10, RULE_intentDefinition = 11, RULE_intentNameLine = 12, - RULE_intentName = 13, RULE_intentBody = 14, RULE_normalIntentBody = 15, - RULE_normalIntentString = 16, RULE_newEntitySection = 17, RULE_newEntityDefinition = 18, - RULE_newEntityListbody = 19, RULE_newEntityLine = 20, RULE_newCompositeDefinition = 21, - RULE_newRegexDefinition = 22, RULE_newEntityType = 23, RULE_newEntityRoles = 24, - RULE_newEntityUsesFeatures = 25, RULE_newEntityRoleOrFeatures = 26, RULE_newEntityName = 27, - RULE_newEntityNameWithWS = 28, RULE_entitySection = 29, RULE_entityDefinition = 30, - RULE_entityLine = 31, RULE_entityName = 32, RULE_entityType = 33, RULE_compositeEntityIdentifier = 34, - RULE_regexEntityIdentifier = 35, RULE_entityListBody = 36, RULE_normalItemString = 37, - RULE_importSection = 38, RULE_importDefinition = 39, RULE_referenceSection = 40, - RULE_referenceDefinition = 41, RULE_qnaSection = 42, RULE_qnaDefinition = 43, - RULE_qnaSourceInfo = 44, RULE_qnaIdMark = 45, RULE_qnaQuestion = 46, RULE_questionText = 47, - RULE_moreQuestionsBody = 48, RULE_moreQuestion = 49, RULE_errorQuestionString = 50, - RULE_qnaAnswerBody = 51, RULE_filterSection = 52, RULE_promptSection = 53, - RULE_filterLine = 54, RULE_errorFilterLine = 55, RULE_multiLineAnswer = 56, - RULE_modelInfoSection = 57, RULE_modelInfoDefinition = 58; + RULE_file = 0, RULE_paragraph = 1, RULE_newline = 2, RULE_commentDefinition = 3, + RULE_errorString = 4, RULE_nestedIntentSection = 5, RULE_nestedIntentNameLine = 6, + RULE_nestedIntentName = 7, RULE_nameIdentifier = 8, RULE_nestedIntentBodyDefinition = 9, + RULE_subIntentDefinition = 10, RULE_simpleIntentSection = 11, RULE_intentDefinition = 12, + RULE_intentNameLine = 13, RULE_intentName = 14, RULE_intentBody = 15, + RULE_normalIntentBody = 16, RULE_normalIntentString = 17, RULE_newEntitySection = 18, + RULE_newEntityDefinition = 19, RULE_newEntityListbody = 20, RULE_newEntityLine = 21, + RULE_newCompositeDefinition = 22, RULE_newRegexDefinition = 23, RULE_newEntityType = 24, + RULE_newEntityRoles = 25, RULE_newEntityUsesFeatures = 26, RULE_newEntityRoleOrFeatures = 27, + RULE_newEntityName = 28, RULE_newEntityNameWithWS = 29, RULE_entitySection = 30, + RULE_entityDefinition = 31, RULE_entityLine = 32, RULE_entityName = 33, + RULE_entityType = 34, RULE_compositeEntityIdentifier = 35, RULE_regexEntityIdentifier = 36, + RULE_entityListBody = 37, RULE_normalItemString = 38, RULE_importSection = 39, + RULE_importDefinition = 40, RULE_referenceSection = 41, RULE_referenceDefinition = 42, + RULE_qnaSection = 43, RULE_qnaDefinition = 44, RULE_qnaSourceInfo = 45, + RULE_qnaIdMark = 46, RULE_qnaQuestion = 47, RULE_questionText = 48, RULE_moreQuestionsBody = 49, + RULE_moreQuestion = 50, RULE_errorQuestionString = 51, RULE_qnaAnswerBody = 52, + RULE_filterSection = 53, RULE_promptSection = 54, RULE_filterLine = 55, + RULE_errorFilterLine = 56, RULE_multiLineAnswer = 57, RULE_modelInfoSection = 58, + RULE_modelInfoDefinition = 59; public static readonly string[] ruleNames = { - "file", "paragraph", "newline", "errorString", "nestedIntentSection", + "file", "paragraph", "newline", "commentDefinition", "errorString", "nestedIntentSection", "nestedIntentNameLine", "nestedIntentName", "nameIdentifier", "nestedIntentBodyDefinition", "subIntentDefinition", "simpleIntentSection", "intentDefinition", "intentNameLine", "intentName", "intentBody", "normalIntentBody", "normalIntentString", @@ -169,7 +170,7 @@ public FileContext file() { int _alt; EnterOuterAlt(_localctx, 1); { - State = 119; + State = 121; ErrorHandler.Sync(this); _alt = 1+1; do { @@ -177,7 +178,7 @@ public FileContext file() { case 1+1: { { - State = 118; + State = 120; paragraph(); } } @@ -185,11 +186,11 @@ public FileContext file() { default: throw new NoViableAltException(this); } - State = 121; + State = 123; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,0,Context); } while ( _alt!=1 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); - State = 123; + State = 125; Match(Eof); } } @@ -230,6 +231,9 @@ [System.Diagnostics.DebuggerNonUserCode] public QnaSectionContext qnaSection() { [System.Diagnostics.DebuggerNonUserCode] public ModelInfoSectionContext modelInfoSection() { return GetRuleContext(0); } + [System.Diagnostics.DebuggerNonUserCode] public CommentDefinitionContext commentDefinition() { + return GetRuleContext(0); + } public ParagraphContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -258,72 +262,79 @@ public ParagraphContext paragraph() { ParagraphContext _localctx = new ParagraphContext(Context, State); EnterRule(_localctx, 2, RULE_paragraph); try { - State = 134; + State = 137; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,1,Context) ) { case 1: EnterOuterAlt(_localctx, 1); { - State = 125; + State = 127; Match(NEWLINE); } break; case 2: EnterOuterAlt(_localctx, 2); { - State = 126; + State = 128; nestedIntentSection(); } break; case 3: EnterOuterAlt(_localctx, 3); { - State = 127; + State = 129; simpleIntentSection(); } break; case 4: EnterOuterAlt(_localctx, 4); { - State = 128; + State = 130; entitySection(); } break; case 5: EnterOuterAlt(_localctx, 5); { - State = 129; + State = 131; newEntitySection(); } break; case 6: EnterOuterAlt(_localctx, 6); { - State = 130; + State = 132; importSection(); } break; case 7: EnterOuterAlt(_localctx, 7); { - State = 131; + State = 133; referenceSection(); } break; case 8: EnterOuterAlt(_localctx, 8); { - State = 132; + State = 134; qnaSection(); } break; case 9: EnterOuterAlt(_localctx, 9); { - State = 133; + State = 135; modelInfoSection(); } break; + case 10: + EnterOuterAlt(_localctx, 10); + { + State = 136; + commentDefinition(); + } + break; } } catch (RecognitionException re) { @@ -375,21 +386,21 @@ public NewlineContext newline() { try { EnterOuterAlt(_localctx, 1); { - State = 139; + State = 142; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 136; + State = 139; Match(WS); } } - State = 141; + State = 144; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 142; + State = 145; _la = TokenStream.LA(1); if ( !(_la==Eof || _la==NEWLINE) ) { ErrorHandler.RecoverInline(this); @@ -411,6 +422,64 @@ public NewlineContext newline() { return _localctx; } + public partial class CommentDefinitionContext : ParserRuleContext { + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode COMMENT() { return GetToken(LUFileParser.COMMENT, 0); } + [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode NEWLINE() { return GetToken(LUFileParser.NEWLINE, 0); } + public CommentDefinitionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_commentDefinition; } } + [System.Diagnostics.DebuggerNonUserCode] + public override void EnterRule(IParseTreeListener listener) { + ILUFileParserListener typedListener = listener as ILUFileParserListener; + if (typedListener != null) typedListener.EnterCommentDefinition(this); + } + [System.Diagnostics.DebuggerNonUserCode] + public override void ExitRule(IParseTreeListener listener) { + ILUFileParserListener typedListener = listener as ILUFileParserListener; + if (typedListener != null) typedListener.ExitCommentDefinition(this); + } + [System.Diagnostics.DebuggerNonUserCode] + public override TResult Accept(IParseTreeVisitor visitor) { + ILUFileParserVisitor typedVisitor = visitor as ILUFileParserVisitor; + if (typedVisitor != null) return typedVisitor.VisitCommentDefinition(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CommentDefinitionContext commentDefinition() { + CommentDefinitionContext _localctx = new CommentDefinitionContext(Context, State); + EnterRule(_localctx, 6, RULE_commentDefinition); + try { + EnterOuterAlt(_localctx, 1); + { + State = 147; + Match(COMMENT); + State = 149; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,3,Context) ) { + case 1: + { + State = 148; + Match(NEWLINE); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + public partial class ErrorStringContext : ParserRuleContext { [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode[] WS() { return GetTokens(LUFileParser.WS); } [System.Diagnostics.DebuggerNonUserCode] public ITerminalNode WS(int i) { @@ -446,13 +515,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ErrorStringContext errorString() { ErrorStringContext _localctx = new ErrorStringContext(Context, State); - EnterRule(_localctx, 6, RULE_errorString); + EnterRule(_localctx, 8, RULE_errorString); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 145; + State = 152; ErrorHandler.Sync(this); _alt = 1; do { @@ -460,7 +529,7 @@ public ErrorStringContext errorString() { case 1: { { - State = 144; + State = 151; _la = TokenStream.LA(1); if ( !(_la==WS || _la==INVALID_TOKEN_DEFAULT_MODE) ) { ErrorHandler.RecoverInline(this); @@ -475,9 +544,9 @@ public ErrorStringContext errorString() { default: throw new NoViableAltException(this); } - State = 147; + State = 154; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,3,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,4,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -525,13 +594,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NestedIntentSectionContext nestedIntentSection() { NestedIntentSectionContext _localctx = new NestedIntentSectionContext(Context, State); - EnterRule(_localctx, 8, RULE_nestedIntentSection); + EnterRule(_localctx, 10, RULE_nestedIntentSection); try { EnterOuterAlt(_localctx, 1); { - State = 149; + State = 156; nestedIntentNameLine(); - State = 150; + State = 157; nestedIntentBodyDefinition(); } } @@ -581,42 +650,42 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NestedIntentNameLineContext nestedIntentNameLine() { NestedIntentNameLineContext _localctx = new NestedIntentNameLineContext(Context, State); - EnterRule(_localctx, 10, RULE_nestedIntentNameLine); + EnterRule(_localctx, 12, RULE_nestedIntentNameLine); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 155; + State = 162; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 152; + State = 159; Match(WS); } } - State = 157; + State = 164; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 158; + State = 165; Match(HASH); - State = 162; + State = 169; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 159; + State = 166; Match(WS); } } - State = 164; + State = 171; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 165; + State = 172; nestedIntentName(); } } @@ -668,31 +737,31 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NestedIntentNameContext nestedIntentName() { NestedIntentNameContext _localctx = new NestedIntentNameContext(Context, State); - EnterRule(_localctx, 12, RULE_nestedIntentName); + EnterRule(_localctx, 14, RULE_nestedIntentName); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 167; + State = 174; nameIdentifier(); - State = 172; + State = 179; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,7,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,8,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - State = 170; + State = 177; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case WS: { - State = 168; + State = 175; Match(WS); } break; case IDENTIFIER: { - State = 169; + State = 176; nameIdentifier(); } break; @@ -701,9 +770,9 @@ public NestedIntentNameContext nestedIntentName() { } } } - State = 174; + State = 181; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,7,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,8,Context); } } } @@ -753,26 +822,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NameIdentifierContext nameIdentifier() { NameIdentifierContext _localctx = new NameIdentifierContext(Context, State); - EnterRule(_localctx, 14, RULE_nameIdentifier); + EnterRule(_localctx, 16, RULE_nameIdentifier); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 175; + State = 182; Match(IDENTIFIER); - State = 180; + State = 187; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==DOT) { { { - State = 176; + State = 183; Match(DOT); - State = 177; + State = 184; Match(IDENTIFIER); } } - State = 182; + State = 189; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -822,12 +891,12 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NestedIntentBodyDefinitionContext nestedIntentBodyDefinition() { NestedIntentBodyDefinitionContext _localctx = new NestedIntentBodyDefinitionContext(Context, State); - EnterRule(_localctx, 16, RULE_nestedIntentBodyDefinition); + EnterRule(_localctx, 18, RULE_nestedIntentBodyDefinition); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 184; + State = 191; ErrorHandler.Sync(this); _alt = 1; do { @@ -835,7 +904,7 @@ public NestedIntentBodyDefinitionContext nestedIntentBodyDefinition() { case 1: { { - State = 183; + State = 190; subIntentDefinition(); } } @@ -843,9 +912,9 @@ public NestedIntentBodyDefinitionContext nestedIntentBodyDefinition() { default: throw new NoViableAltException(this); } - State = 186; + State = 193; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,9,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,10,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -895,28 +964,28 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public SubIntentDefinitionContext subIntentDefinition() { SubIntentDefinitionContext _localctx = new SubIntentDefinitionContext(Context, State); - EnterRule(_localctx, 18, RULE_subIntentDefinition); + EnterRule(_localctx, 20, RULE_subIntentDefinition); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 191; + State = 198; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 188; + State = 195; Match(WS); } } - State = 193; + State = 200; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 194; + State = 201; Match(HASH); - State = 195; + State = 202; simpleIntentSection(); } } @@ -961,11 +1030,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public SimpleIntentSectionContext simpleIntentSection() { SimpleIntentSectionContext _localctx = new SimpleIntentSectionContext(Context, State); - EnterRule(_localctx, 20, RULE_simpleIntentSection); + EnterRule(_localctx, 22, RULE_simpleIntentSection); try { EnterOuterAlt(_localctx, 1); { - State = 197; + State = 204; intentDefinition(); } } @@ -1013,18 +1082,18 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IntentDefinitionContext intentDefinition() { IntentDefinitionContext _localctx = new IntentDefinitionContext(Context, State); - EnterRule(_localctx, 22, RULE_intentDefinition); + EnterRule(_localctx, 24, RULE_intentDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 199; + State = 206; intentNameLine(); - State = 201; + State = 208; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,11,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,12,Context) ) { case 1: { - State = 200; + State = 207; intentBody(); } break; @@ -1080,52 +1149,52 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IntentNameLineContext intentNameLine() { IntentNameLineContext _localctx = new IntentNameLineContext(Context, State); - EnterRule(_localctx, 24, RULE_intentNameLine); + EnterRule(_localctx, 26, RULE_intentNameLine); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 206; + State = 213; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 203; + State = 210; Match(WS); } } - State = 208; + State = 215; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 209; + State = 216; Match(HASH); - State = 211; + State = 218; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==HASH) { { - State = 210; + State = 217; Match(HASH); } } - State = 216; + State = 223; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 213; + State = 220; Match(WS); } } - State = 218; + State = 225; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 219; + State = 226; intentName(); } } @@ -1177,31 +1246,31 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IntentNameContext intentName() { IntentNameContext _localctx = new IntentNameContext(Context, State); - EnterRule(_localctx, 26, RULE_intentName); + EnterRule(_localctx, 28, RULE_intentName); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 221; + State = 228; nameIdentifier(); - State = 226; + State = 233; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,16,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,17,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - State = 224; + State = 231; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case WS: { - State = 222; + State = 229; Match(WS); } break; case IDENTIFIER: { - State = 223; + State = 230; nameIdentifier(); } break; @@ -1210,9 +1279,9 @@ public IntentNameContext intentName() { } } } - State = 228; + State = 235; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,16,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,17,Context); } } } @@ -1261,28 +1330,28 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public IntentBodyContext intentBody() { IntentBodyContext _localctx = new IntentBodyContext(Context, State); - EnterRule(_localctx, 28, RULE_intentBody); + EnterRule(_localctx, 30, RULE_intentBody); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 232; + State = 239; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,17,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,18,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 229; + State = 236; Match(WS); } } } - State = 234; + State = 241; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,17,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,18,Context); } - State = 235; + State = 242; normalIntentBody(); } } @@ -1308,6 +1377,12 @@ [System.Diagnostics.DebuggerNonUserCode] public ErrorStringContext[] errorString [System.Diagnostics.DebuggerNonUserCode] public ErrorStringContext errorString(int i) { return GetRuleContext(i); } + [System.Diagnostics.DebuggerNonUserCode] public CommentDefinitionContext[] commentDefinition() { + return GetRuleContexts(); + } + [System.Diagnostics.DebuggerNonUserCode] public CommentDefinitionContext commentDefinition(int i) { + return GetRuleContext(i); + } [System.Diagnostics.DebuggerNonUserCode] public NormalIntentStringContext[] normalIntentString() { return GetRuleContexts(); } @@ -1346,62 +1421,68 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NormalIntentBodyContext normalIntentBody() { NormalIntentBodyContext _localctx = new NormalIntentBodyContext(Context, State); - EnterRule(_localctx, 30, RULE_normalIntentBody); + EnterRule(_localctx, 32, RULE_normalIntentBody); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 240; + State = 247; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,18,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,19,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 237; + State = 244; Match(WS); } } } - State = 242; + State = 249; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,18,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,19,Context); } - State = 247; + State = 255; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 247; + State = 255; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,19,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,20,Context) ) { case 1: { { - State = 243; + State = 250; normalIntentString(); - State = 244; + State = 251; newline(); } } break; case 2: { - State = 246; + State = 253; errorString(); } break; + case 3: + { + State = 254; + commentDefinition(); + } + break; } } break; default: throw new NoViableAltException(this); } - State = 249; + State = 257; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,20,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,21,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -1460,36 +1541,36 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NormalIntentStringContext normalIntentString() { NormalIntentStringContext _localctx = new NormalIntentStringContext(Context, State); - EnterRule(_localctx, 32, RULE_normalIntentString); + EnterRule(_localctx, 34, RULE_normalIntentString); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 254; + State = 262; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 251; + State = 259; Match(WS); } } - State = 256; + State = 264; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 257; + State = 265; Match(DASH); - State = 261; + State = 269; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,22,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,23,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 258; + State = 266; _la = TokenStream.LA(1); if ( !(((_la) & ~0x3f) == 0 && ((1L << _la) & 15032385538L) != 0) ) { ErrorHandler.RecoverInline(this); @@ -1501,9 +1582,9 @@ public NormalIntentStringContext normalIntentString() { } } } - State = 263; + State = 271; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,22,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,23,Context); } } } @@ -1548,11 +1629,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntitySectionContext newEntitySection() { NewEntitySectionContext _localctx = new NewEntitySectionContext(Context, State); - EnterRule(_localctx, 34, RULE_newEntitySection); + EnterRule(_localctx, 36, RULE_newEntitySection); try { EnterOuterAlt(_localctx, 1); { - State = 264; + State = 272; newEntityDefinition(); } } @@ -1600,18 +1681,18 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityDefinitionContext newEntityDefinition() { NewEntityDefinitionContext _localctx = new NewEntityDefinitionContext(Context, State); - EnterRule(_localctx, 36, RULE_newEntityDefinition); + EnterRule(_localctx, 38, RULE_newEntityDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 266; + State = 274; newEntityLine(); - State = 268; + State = 276; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,23,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,24,Context) ) { case 1: { - State = 267; + State = 275; newEntityListbody(); } break; @@ -1674,34 +1755,34 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityListbodyContext newEntityListbody() { NewEntityListbodyContext _localctx = new NewEntityListbodyContext(Context, State); - EnterRule(_localctx, 38, RULE_newEntityListbody); + EnterRule(_localctx, 40, RULE_newEntityListbody); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 274; + State = 282; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 274; + State = 282; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,24,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,25,Context) ) { case 1: { { - State = 270; + State = 278; normalItemString(); - State = 271; + State = 279; newline(); } } break; case 2: { - State = 273; + State = 281; errorString(); } break; @@ -1711,9 +1792,9 @@ public NewEntityListbodyContext newEntityListbody() { default: throw new NoViableAltException(this); } - State = 276; + State = 284; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,25,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,26,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -1785,192 +1866,192 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityLineContext newEntityLine() { NewEntityLineContext _localctx = new NewEntityLineContext(Context, State); - EnterRule(_localctx, 40, RULE_newEntityLine); + EnterRule(_localctx, 42, RULE_newEntityLine); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 281; + State = 289; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 278; + State = 286; Match(WS); } } - State = 283; + State = 291; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 284; + State = 292; Match(AT); - State = 288; + State = 296; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,27,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 285; + State = 293; Match(WS); } } } - State = 290; + State = 298; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,27,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); } - State = 292; + State = 300; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==NEW_ENTITY_TYPE_IDENTIFIER) { { - State = 291; + State = 299; newEntityType(); } } - State = 297; + State = 305; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,29,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,30,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 294; + State = 302; Match(WS); } } } - State = 299; + State = 307; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,29,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,30,Context); } - State = 302; + State = 310; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,30,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,31,Context) ) { case 1: { - State = 300; + State = 308; newEntityName(); } break; case 2: { - State = 301; + State = 309; newEntityNameWithWS(); } break; } - State = 307; + State = 315; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,31,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,32,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 304; + State = 312; Match(WS); } } } - State = 309; + State = 317; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,31,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,32,Context); } - State = 311; + State = 319; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,32,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,33,Context) ) { case 1: { - State = 310; + State = 318; newEntityRoles(); } break; } - State = 316; + State = 324; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,33,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,34,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 313; + State = 321; Match(WS); } } } - State = 318; + State = 326; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,33,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,34,Context); } - State = 320; + State = 328; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==HAS_FEATURES_LABEL) { { - State = 319; + State = 327; newEntityUsesFeatures(); } } - State = 325; + State = 333; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,35,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 322; + State = 330; Match(WS); } } } - State = 327; + State = 335; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,35,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); } - State = 329; + State = 337; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==EQUAL) { { - State = 328; + State = 336; Match(EQUAL); } } - State = 334; + State = 342; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,37,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,38,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 331; + State = 339; Match(WS); } } } - State = 336; + State = 344; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,37,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,38,Context); } - State = 339; + State = 347; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case NEW_COMPOSITE_ENTITY: { - State = 337; + State = 345; newCompositeDefinition(); } break; case NEW_REGEX_ENTITY: { - State = 338; + State = 346; newRegexDefinition(); } break; @@ -1981,7 +2062,7 @@ public NewEntityLineContext newEntityLine() { default: break; } - State = 341; + State = 349; newline(); } } @@ -2024,11 +2105,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewCompositeDefinitionContext newCompositeDefinition() { NewCompositeDefinitionContext _localctx = new NewCompositeDefinitionContext(Context, State); - EnterRule(_localctx, 42, RULE_newCompositeDefinition); + EnterRule(_localctx, 44, RULE_newCompositeDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 343; + State = 351; Match(NEW_COMPOSITE_ENTITY); } } @@ -2071,11 +2152,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewRegexDefinitionContext newRegexDefinition() { NewRegexDefinitionContext _localctx = new NewRegexDefinitionContext(Context, State); - EnterRule(_localctx, 44, RULE_newRegexDefinition); + EnterRule(_localctx, 46, RULE_newRegexDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 345; + State = 353; Match(NEW_REGEX_ENTITY); } } @@ -2118,11 +2199,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityTypeContext newEntityType() { NewEntityTypeContext _localctx = new NewEntityTypeContext(Context, State); - EnterRule(_localctx, 46, RULE_newEntityType); + EnterRule(_localctx, 48, RULE_newEntityType); try { EnterOuterAlt(_localctx, 1); { - State = 347; + State = 355; Match(NEW_ENTITY_TYPE_IDENTIFIER); } } @@ -2172,36 +2253,36 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityRolesContext newEntityRoles() { NewEntityRolesContext _localctx = new NewEntityRolesContext(Context, State); - EnterRule(_localctx, 48, RULE_newEntityRoles); + EnterRule(_localctx, 50, RULE_newEntityRoles); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 350; + State = 358; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==HAS_ROLES_LABEL) { { - State = 349; + State = 357; Match(HAS_ROLES_LABEL); } } - State = 355; + State = 363; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 352; + State = 360; Match(WS); } } - State = 357; + State = 365; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 358; + State = 366; newEntityRoleOrFeatures(); } } @@ -2251,28 +2332,28 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityUsesFeaturesContext newEntityUsesFeatures() { NewEntityUsesFeaturesContext _localctx = new NewEntityUsesFeaturesContext(Context, State); - EnterRule(_localctx, 50, RULE_newEntityUsesFeatures); + EnterRule(_localctx, 52, RULE_newEntityUsesFeatures); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 360; + State = 368; Match(HAS_FEATURES_LABEL); - State = 364; + State = 372; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 361; + State = 369; Match(WS); } } - State = 366; + State = 374; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 367; + State = 375; newEntityRoleOrFeatures(); } } @@ -2330,13 +2411,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityRoleOrFeaturesContext newEntityRoleOrFeatures() { NewEntityRoleOrFeaturesContext _localctx = new NewEntityRoleOrFeaturesContext(Context, State); - EnterRule(_localctx, 52, RULE_newEntityRoleOrFeatures); + EnterRule(_localctx, 54, RULE_newEntityRoleOrFeatures); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 369; + State = 377; _la = TokenStream.LA(1); if ( !(_la==NEW_ENTITY_IDENTIFIER || _la==NEW_ENTITY_IDENTIFIER_WITH_WS) ) { ErrorHandler.RecoverInline(this); @@ -2345,44 +2426,44 @@ public NewEntityRoleOrFeaturesContext newEntityRoleOrFeatures() { ErrorHandler.ReportMatch(this); Consume(); } - State = 386; + State = 394; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,44,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,45,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 373; + State = 381; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 370; + State = 378; Match(WS); } } - State = 375; + State = 383; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 376; + State = 384; Match(COMMA); - State = 380; + State = 388; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 377; + State = 385; Match(WS); } } - State = 382; + State = 390; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 383; + State = 391; _la = TokenStream.LA(1); if ( !(_la==NEW_ENTITY_IDENTIFIER || _la==NEW_ENTITY_IDENTIFIER_WITH_WS) ) { ErrorHandler.RecoverInline(this); @@ -2394,9 +2475,9 @@ public NewEntityRoleOrFeaturesContext newEntityRoleOrFeatures() { } } } - State = 388; + State = 396; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,44,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,45,Context); } } } @@ -2444,33 +2525,33 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityNameContext newEntityName() { NewEntityNameContext _localctx = new NewEntityNameContext(Context, State); - EnterRule(_localctx, 54, RULE_newEntityName); + EnterRule(_localctx, 56, RULE_newEntityName); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 389; - Match(NEW_ENTITY_IDENTIFIER); State = 397; + Match(NEW_ENTITY_IDENTIFIER); + State = 405; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,46,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,47,Context) ) { case 1: { - State = 393; + State = 401; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 390; + State = 398; Match(WS); } } - State = 395; + State = 403; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 396; + State = 404; Match(PHRASE_LIST_LABEL); } break; @@ -2521,33 +2602,33 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NewEntityNameWithWSContext newEntityNameWithWS() { NewEntityNameWithWSContext _localctx = new NewEntityNameWithWSContext(Context, State); - EnterRule(_localctx, 56, RULE_newEntityNameWithWS); + EnterRule(_localctx, 58, RULE_newEntityNameWithWS); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 399; - Match(NEW_ENTITY_IDENTIFIER_WITH_WS); State = 407; + Match(NEW_ENTITY_IDENTIFIER_WITH_WS); + State = 415; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,48,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,49,Context) ) { case 1: { - State = 403; + State = 411; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 400; + State = 408; Match(WS); } } - State = 405; + State = 413; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 406; + State = 414; Match(PHRASE_LIST_LABEL); } break; @@ -2595,11 +2676,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntitySectionContext entitySection() { EntitySectionContext _localctx = new EntitySectionContext(Context, State); - EnterRule(_localctx, 58, RULE_entitySection); + EnterRule(_localctx, 60, RULE_entitySection); try { EnterOuterAlt(_localctx, 1); { - State = 409; + State = 417; entityDefinition(); } } @@ -2647,18 +2728,18 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntityDefinitionContext entityDefinition() { EntityDefinitionContext _localctx = new EntityDefinitionContext(Context, State); - EnterRule(_localctx, 60, RULE_entityDefinition); + EnterRule(_localctx, 62, RULE_entityDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 411; + State = 419; entityLine(); - State = 413; + State = 421; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,49,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,50,Context) ) { case 1: { - State = 412; + State = 420; entityListBody(); } break; @@ -2715,53 +2796,53 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntityLineContext entityLine() { EntityLineContext _localctx = new EntityLineContext(Context, State); - EnterRule(_localctx, 62, RULE_entityLine); + EnterRule(_localctx, 64, RULE_entityLine); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 418; + State = 426; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 415; + State = 423; Match(WS); } } - State = 420; + State = 428; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 421; + State = 429; Match(DOLLAR); - State = 423; + State = 431; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,51,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,52,Context) ) { case 1: { - State = 422; + State = 430; entityName(); } break; } - State = 426; + State = 434; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,52,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,53,Context) ) { case 1: { - State = 425; + State = 433; Match(COLON_MARK); } break; } - State = 429; + State = 437; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,53,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,54,Context) ) { case 1: { - State = 428; + State = 436; entityType(); } break; @@ -2814,13 +2895,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntityNameContext entityName() { EntityNameContext _localctx = new EntityNameContext(Context, State); - EnterRule(_localctx, 64, RULE_entityName); + EnterRule(_localctx, 66, RULE_entityName); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 432; + State = 440; ErrorHandler.Sync(this); _alt = 1; do { @@ -2828,7 +2909,7 @@ public EntityNameContext entityName() { case 1: { { - State = 431; + State = 439; _la = TokenStream.LA(1); if ( !(_la==WS || _la==ENTITY_TEXT) ) { ErrorHandler.RecoverInline(this); @@ -2843,9 +2924,9 @@ public EntityNameContext entityName() { default: throw new NoViableAltException(this); } - State = 434; + State = 442; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,54,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,55,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -2911,48 +2992,48 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntityTypeContext entityType() { EntityTypeContext _localctx = new EntityTypeContext(Context, State); - EnterRule(_localctx, 66, RULE_entityType); + EnterRule(_localctx, 68, RULE_entityType); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 441; + State = 449; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 441; + State = 449; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case COMPOSITE_ENTITY: { - State = 436; + State = 444; compositeEntityIdentifier(); } break; case REGEX_ENTITY: { - State = 437; + State = 445; regexEntityIdentifier(); } break; case ENTITY_TEXT: { - State = 438; + State = 446; Match(ENTITY_TEXT); } break; case COLON_MARK: { - State = 439; + State = 447; Match(COLON_MARK); } break; case WS: { - State = 440; + State = 448; Match(WS); } break; @@ -2964,9 +3045,9 @@ public EntityTypeContext entityType() { default: throw new NoViableAltException(this); } - State = 443; + State = 451; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,56,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,57,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -3009,11 +3090,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public CompositeEntityIdentifierContext compositeEntityIdentifier() { CompositeEntityIdentifierContext _localctx = new CompositeEntityIdentifierContext(Context, State); - EnterRule(_localctx, 68, RULE_compositeEntityIdentifier); + EnterRule(_localctx, 70, RULE_compositeEntityIdentifier); try { EnterOuterAlt(_localctx, 1); { - State = 445; + State = 453; Match(COMPOSITE_ENTITY); } } @@ -3056,11 +3137,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public RegexEntityIdentifierContext regexEntityIdentifier() { RegexEntityIdentifierContext _localctx = new RegexEntityIdentifierContext(Context, State); - EnterRule(_localctx, 70, RULE_regexEntityIdentifier); + EnterRule(_localctx, 72, RULE_regexEntityIdentifier); try { EnterOuterAlt(_localctx, 1); { - State = 447; + State = 455; Match(REGEX_ENTITY); } } @@ -3120,34 +3201,34 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public EntityListBodyContext entityListBody() { EntityListBodyContext _localctx = new EntityListBodyContext(Context, State); - EnterRule(_localctx, 72, RULE_entityListBody); + EnterRule(_localctx, 74, RULE_entityListBody); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 453; + State = 461; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 453; + State = 461; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,57,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,58,Context) ) { case 1: { { - State = 449; + State = 457; normalItemString(); - State = 450; + State = 458; newline(); } } break; case 2: { - State = 452; + State = 460; errorString(); } break; @@ -3157,9 +3238,9 @@ public EntityListBodyContext entityListBody() { default: throw new NoViableAltException(this); } - State = 455; + State = 463; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,58,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,59,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -3218,36 +3299,36 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public NormalItemStringContext normalItemString() { NormalItemStringContext _localctx = new NormalItemStringContext(Context, State); - EnterRule(_localctx, 74, RULE_normalItemString); + EnterRule(_localctx, 76, RULE_normalItemString); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 460; + State = 468; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 457; + State = 465; Match(WS); } } - State = 462; + State = 470; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 463; + State = 471; Match(DASH); - State = 467; + State = 475; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,60,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,61,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 464; + State = 472; _la = TokenStream.LA(1); if ( !(((_la) & ~0x3f) == 0 && ((1L << _la) & 15032385538L) != 0) ) { ErrorHandler.RecoverInline(this); @@ -3259,9 +3340,9 @@ public NormalItemStringContext normalItemString() { } } } - State = 469; + State = 477; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,60,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,61,Context); } } } @@ -3306,11 +3387,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ImportSectionContext importSection() { ImportSectionContext _localctx = new ImportSectionContext(Context, State); - EnterRule(_localctx, 76, RULE_importSection); + EnterRule(_localctx, 78, RULE_importSection); try { EnterOuterAlt(_localctx, 1); { - State = 470; + State = 478; importDefinition(); } } @@ -3357,43 +3438,43 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ImportDefinitionContext importDefinition() { ImportDefinitionContext _localctx = new ImportDefinitionContext(Context, State); - EnterRule(_localctx, 78, RULE_importDefinition); + EnterRule(_localctx, 80, RULE_importDefinition); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 475; + State = 483; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 472; + State = 480; Match(WS); } } - State = 477; + State = 485; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 478; + State = 486; Match(IMPORT); - State = 482; + State = 490; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,62,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,63,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 479; + State = 487; Match(WS); } } } - State = 484; + State = 492; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,62,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,63,Context); } } } @@ -3438,11 +3519,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ReferenceSectionContext referenceSection() { ReferenceSectionContext _localctx = new ReferenceSectionContext(Context, State); - EnterRule(_localctx, 80, RULE_referenceSection); + EnterRule(_localctx, 82, RULE_referenceSection); try { EnterOuterAlt(_localctx, 1); { - State = 485; + State = 493; referenceDefinition(); } } @@ -3489,43 +3570,43 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ReferenceDefinitionContext referenceDefinition() { ReferenceDefinitionContext _localctx = new ReferenceDefinitionContext(Context, State); - EnterRule(_localctx, 82, RULE_referenceDefinition); + EnterRule(_localctx, 84, RULE_referenceDefinition); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 490; + State = 498; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 487; + State = 495; Match(WS); } } - State = 492; + State = 500; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 493; + State = 501; Match(REFERENCE); - State = 497; + State = 505; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,64,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,65,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 494; + State = 502; Match(WS); } } } - State = 499; + State = 507; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,64,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,65,Context); } } } @@ -3570,11 +3651,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaSectionContext qnaSection() { QnaSectionContext _localctx = new QnaSectionContext(Context, State); - EnterRule(_localctx, 84, RULE_qnaSection); + EnterRule(_localctx, 86, RULE_qnaSection); try { EnterOuterAlt(_localctx, 1); { - State = 500; + State = 508; qnaDefinition(); } } @@ -3634,42 +3715,42 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaDefinitionContext qnaDefinition() { QnaDefinitionContext _localctx = new QnaDefinitionContext(Context, State); - EnterRule(_localctx, 86, RULE_qnaDefinition); + EnterRule(_localctx, 88, RULE_qnaDefinition); try { EnterOuterAlt(_localctx, 1); { - State = 503; + State = 511; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,65,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,66,Context) ) { case 1: { - State = 502; + State = 510; qnaSourceInfo(); } break; } - State = 506; + State = 514; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,66,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,67,Context) ) { case 1: { - State = 505; + State = 513; qnaIdMark(); } break; } - State = 508; + State = 516; qnaQuestion(); - State = 509; + State = 517; moreQuestionsBody(); - State = 510; + State = 518; qnaAnswerBody(); - State = 512; + State = 520; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,67,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,68,Context) ) { case 1: { - State = 511; + State = 519; promptSection(); } break; @@ -3719,26 +3800,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaSourceInfoContext qnaSourceInfo() { QnaSourceInfoContext _localctx = new QnaSourceInfoContext(Context, State); - EnterRule(_localctx, 88, RULE_qnaSourceInfo); + EnterRule(_localctx, 90, RULE_qnaSourceInfo); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 517; + State = 525; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 514; + State = 522; Match(WS); } } - State = 519; + State = 527; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 520; + State = 528; Match(QNA_SOURCE_INFO); } } @@ -3785,26 +3866,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaIdMarkContext qnaIdMark() { QnaIdMarkContext _localctx = new QnaIdMarkContext(Context, State); - EnterRule(_localctx, 90, RULE_qnaIdMark); + EnterRule(_localctx, 92, RULE_qnaIdMark); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 525; + State = 533; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 522; + State = 530; Match(WS); } } - State = 527; + State = 535; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 528; + State = 536; Match(QNA_ID_MARK); } } @@ -3854,28 +3935,28 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaQuestionContext qnaQuestion() { QnaQuestionContext _localctx = new QnaQuestionContext(Context, State); - EnterRule(_localctx, 92, RULE_qnaQuestion); + EnterRule(_localctx, 94, RULE_qnaQuestion); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 533; + State = 541; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 530; + State = 538; Match(WS); } } - State = 535; + State = 543; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 536; + State = 544; Match(QNA); - State = 537; + State = 545; questionText(); } } @@ -3921,22 +4002,22 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QuestionTextContext questionText() { QuestionTextContext _localctx = new QuestionTextContext(Context, State); - EnterRule(_localctx, 94, RULE_questionText); + EnterRule(_localctx, 96, RULE_questionText); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 542; + State = 550; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==QNA_TEXT) { { { - State = 539; + State = 547; Match(QNA_TEXT); } } - State = 544; + State = 552; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -4002,42 +4083,42 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public MoreQuestionsBodyContext moreQuestionsBody() { MoreQuestionsBodyContext _localctx = new MoreQuestionsBodyContext(Context, State); - EnterRule(_localctx, 96, RULE_moreQuestionsBody); + EnterRule(_localctx, 98, RULE_moreQuestionsBody); try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 548; + State = 556; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,72,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,73,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 545; + State = 553; Match(WS); } } } - State = 550; + State = 558; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,72,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,73,Context); } - State = 557; + State = 565; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,74,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { - State = 555; + State = 563; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case DASH: { { - State = 551; + State = 559; moreQuestion(); - State = 552; + State = 560; newline(); } } @@ -4045,7 +4126,7 @@ public MoreQuestionsBodyContext moreQuestionsBody() { case WS: case INVALID_TOKEN_DEFAULT_MODE: { - State = 554; + State = 562; errorQuestionString(); } break; @@ -4054,9 +4135,9 @@ public MoreQuestionsBodyContext moreQuestionsBody() { } } } - State = 559; + State = 567; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,74,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); } } } @@ -4107,22 +4188,22 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public MoreQuestionContext moreQuestion() { MoreQuestionContext _localctx = new MoreQuestionContext(Context, State); - EnterRule(_localctx, 98, RULE_moreQuestion); + EnterRule(_localctx, 100, RULE_moreQuestion); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 560; + State = 568; Match(DASH); - State = 564; + State = 572; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,76,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 561; + State = 569; _la = TokenStream.LA(1); if ( !(_la==WS || _la==TEXT) ) { ErrorHandler.RecoverInline(this); @@ -4134,9 +4215,9 @@ public MoreQuestionContext moreQuestion() { } } } - State = 566; + State = 574; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,75,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,76,Context); } } } @@ -4186,13 +4267,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ErrorQuestionStringContext errorQuestionString() { ErrorQuestionStringContext _localctx = new ErrorQuestionStringContext(Context, State); - EnterRule(_localctx, 100, RULE_errorQuestionString); + EnterRule(_localctx, 102, RULE_errorQuestionString); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 568; + State = 576; ErrorHandler.Sync(this); _alt = 1; do { @@ -4200,7 +4281,7 @@ public ErrorQuestionStringContext errorQuestionString() { case 1: { { - State = 567; + State = 575; _la = TokenStream.LA(1); if ( !(_la==WS || _la==INVALID_TOKEN_DEFAULT_MODE) ) { ErrorHandler.RecoverInline(this); @@ -4215,9 +4296,9 @@ public ErrorQuestionStringContext errorQuestionString() { default: throw new NoViableAltException(this); } - State = 570; + State = 578; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,76,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,77,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -4265,27 +4346,27 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public QnaAnswerBodyContext qnaAnswerBody() { QnaAnswerBodyContext _localctx = new QnaAnswerBodyContext(Context, State); - EnterRule(_localctx, 102, RULE_qnaAnswerBody); + EnterRule(_localctx, 104, RULE_qnaAnswerBody); try { EnterOuterAlt(_localctx, 1); { - State = 580; + State = 588; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,79,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,80,Context) ) { case 1: { { - State = 573; + State = 581; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,77,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,78,Context) ) { case 1: { - State = 572; + State = 580; filterSection(); } break; } - State = 575; + State = 583; multiLineAnswer(); } } @@ -4293,14 +4374,14 @@ public QnaAnswerBodyContext qnaAnswerBody() { case 2: { { - State = 576; + State = 584; multiLineAnswer(); - State = 578; + State = 586; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,78,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,79,Context) ) { case 1: { - State = 577; + State = 585; filterSection(); } break; @@ -4366,47 +4447,47 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public FilterSectionContext filterSection() { FilterSectionContext _localctx = new FilterSectionContext(Context, State); - EnterRule(_localctx, 104, RULE_filterSection); + EnterRule(_localctx, 106, RULE_filterSection); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 585; + State = 593; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 582; + State = 590; Match(WS); } } - State = 587; + State = 595; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 588; + State = 596; Match(FILTER_MARK); - State = 591; + State = 599; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 591; + State = 599; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,81,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,82,Context) ) { case 1: { - State = 589; + State = 597; filterLine(); } break; case 2: { - State = 590; + State = 598; errorFilterLine(); } break; @@ -4416,9 +4497,9 @@ public FilterSectionContext filterSection() { default: throw new NoViableAltException(this); } - State = 593; + State = 601; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,82,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,83,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -4477,47 +4558,47 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public PromptSectionContext promptSection() { PromptSectionContext _localctx = new PromptSectionContext(Context, State); - EnterRule(_localctx, 106, RULE_promptSection); + EnterRule(_localctx, 108, RULE_promptSection); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 598; + State = 606; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 595; + State = 603; Match(WS); } } - State = 600; + State = 608; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 601; + State = 609; Match(PROMPT_MARK); - State = 604; + State = 612; ErrorHandler.Sync(this); _alt = 1; do { switch (_alt) { case 1: { - State = 604; + State = 612; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,84,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,85,Context) ) { case 1: { - State = 602; + State = 610; filterLine(); } break; case 2: { - State = 603; + State = 611; errorFilterLine(); } break; @@ -4527,9 +4608,9 @@ public PromptSectionContext promptSection() { default: throw new NoViableAltException(this); } - State = 606; + State = 614; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,85,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,86,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -4583,36 +4664,36 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public FilterLineContext filterLine() { FilterLineContext _localctx = new FilterLineContext(Context, State); - EnterRule(_localctx, 108, RULE_filterLine); + EnterRule(_localctx, 110, RULE_filterLine); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 611; + State = 619; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 608; + State = 616; Match(WS); } } - State = 613; + State = 621; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 614; + State = 622; Match(DASH); - State = 618; + State = 626; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,87,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,88,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - State = 615; + State = 623; _la = TokenStream.LA(1); if ( !(_la==WS || _la==TEXT) ) { ErrorHandler.RecoverInline(this); @@ -4624,11 +4705,11 @@ public FilterLineContext filterLine() { } } } - State = 620; + State = 628; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,87,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,88,Context); } - State = 621; + State = 629; newline(); } } @@ -4678,13 +4759,13 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ErrorFilterLineContext errorFilterLine() { ErrorFilterLineContext _localctx = new ErrorFilterLineContext(Context, State); - EnterRule(_localctx, 110, RULE_errorFilterLine); + EnterRule(_localctx, 112, RULE_errorFilterLine); int _la; try { int _alt; EnterOuterAlt(_localctx, 1); { - State = 624; + State = 632; ErrorHandler.Sync(this); _alt = 1; do { @@ -4692,7 +4773,7 @@ public ErrorFilterLineContext errorFilterLine() { case 1: { { - State = 623; + State = 631; _la = TokenStream.LA(1); if ( !(_la==WS || _la==INVALID_TOKEN_DEFAULT_MODE) ) { ErrorHandler.RecoverInline(this); @@ -4707,9 +4788,9 @@ public ErrorFilterLineContext errorFilterLine() { default: throw new NoViableAltException(this); } - State = 626; + State = 634; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,88,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,89,Context); } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); } } @@ -4756,26 +4837,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public MultiLineAnswerContext multiLineAnswer() { MultiLineAnswerContext _localctx = new MultiLineAnswerContext(Context, State); - EnterRule(_localctx, 112, RULE_multiLineAnswer); + EnterRule(_localctx, 114, RULE_multiLineAnswer); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 631; + State = 639; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 628; + State = 636; Match(WS); } } - State = 633; + State = 641; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 634; + State = 642; Match(MULTI_LINE_TEXT); } } @@ -4820,11 +4901,11 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ModelInfoSectionContext modelInfoSection() { ModelInfoSectionContext _localctx = new ModelInfoSectionContext(Context, State); - EnterRule(_localctx, 114, RULE_modelInfoSection); + EnterRule(_localctx, 116, RULE_modelInfoSection); try { EnterOuterAlt(_localctx, 1); { - State = 636; + State = 644; modelInfoDefinition(); } } @@ -4871,26 +4952,26 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public ModelInfoDefinitionContext modelInfoDefinition() { ModelInfoDefinitionContext _localctx = new ModelInfoDefinitionContext(Context, State); - EnterRule(_localctx, 116, RULE_modelInfoDefinition); + EnterRule(_localctx, 118, RULE_modelInfoDefinition); int _la; try { EnterOuterAlt(_localctx, 1); { - State = 641; + State = 649; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==WS) { { { - State = 638; + State = 646; Match(WS); } } - State = 643; + State = 651; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } - State = 644; + State = 652; Match(MODEL_INFO); } } @@ -4906,7 +4987,7 @@ public ModelInfoDefinitionContext modelInfoDefinition() { } private static int[] _serializedATN = { - 4,1,40,647,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7, + 4,1,40,655,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7, 7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14, 2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21, 2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28, @@ -4914,218 +4995,221 @@ public ModelInfoDefinitionContext modelInfoDefinition() { 2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42, 2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49, 2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56, - 2,57,7,57,2,58,7,58,1,0,4,0,120,8,0,11,0,12,0,121,1,0,1,0,1,1,1,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,3,1,135,8,1,1,2,5,2,138,8,2,10,2,12,2,141,9,2, - 1,2,1,2,1,3,4,3,146,8,3,11,3,12,3,147,1,4,1,4,1,4,1,5,5,5,154,8,5,10,5, - 12,5,157,9,5,1,5,1,5,5,5,161,8,5,10,5,12,5,164,9,5,1,5,1,5,1,6,1,6,1,6, - 5,6,171,8,6,10,6,12,6,174,9,6,1,7,1,7,1,7,5,7,179,8,7,10,7,12,7,182,9, - 7,1,8,4,8,185,8,8,11,8,12,8,186,1,9,5,9,190,8,9,10,9,12,9,193,9,9,1,9, - 1,9,1,9,1,10,1,10,1,11,1,11,3,11,202,8,11,1,12,5,12,205,8,12,10,12,12, - 12,208,9,12,1,12,1,12,3,12,212,8,12,1,12,5,12,215,8,12,10,12,12,12,218, - 9,12,1,12,1,12,1,13,1,13,1,13,5,13,225,8,13,10,13,12,13,228,9,13,1,14, - 5,14,231,8,14,10,14,12,14,234,9,14,1,14,1,14,1,15,5,15,239,8,15,10,15, - 12,15,242,9,15,1,15,1,15,1,15,1,15,4,15,248,8,15,11,15,12,15,249,1,16, - 5,16,253,8,16,10,16,12,16,256,9,16,1,16,1,16,5,16,260,8,16,10,16,12,16, - 263,9,16,1,17,1,17,1,18,1,18,3,18,269,8,18,1,19,1,19,1,19,1,19,4,19,275, - 8,19,11,19,12,19,276,1,20,5,20,280,8,20,10,20,12,20,283,9,20,1,20,1,20, - 5,20,287,8,20,10,20,12,20,290,9,20,1,20,3,20,293,8,20,1,20,5,20,296,8, - 20,10,20,12,20,299,9,20,1,20,1,20,3,20,303,8,20,1,20,5,20,306,8,20,10, - 20,12,20,309,9,20,1,20,3,20,312,8,20,1,20,5,20,315,8,20,10,20,12,20,318, - 9,20,1,20,3,20,321,8,20,1,20,5,20,324,8,20,10,20,12,20,327,9,20,1,20,3, - 20,330,8,20,1,20,5,20,333,8,20,10,20,12,20,336,9,20,1,20,1,20,3,20,340, - 8,20,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,24,3,24,351,8,24,1,24,5, - 24,354,8,24,10,24,12,24,357,9,24,1,24,1,24,1,25,1,25,5,25,363,8,25,10, - 25,12,25,366,9,25,1,25,1,25,1,26,1,26,5,26,372,8,26,10,26,12,26,375,9, - 26,1,26,1,26,5,26,379,8,26,10,26,12,26,382,9,26,1,26,5,26,385,8,26,10, - 26,12,26,388,9,26,1,27,1,27,5,27,392,8,27,10,27,12,27,395,9,27,1,27,3, - 27,398,8,27,1,28,1,28,5,28,402,8,28,10,28,12,28,405,9,28,1,28,3,28,408, - 8,28,1,29,1,29,1,30,1,30,3,30,414,8,30,1,31,5,31,417,8,31,10,31,12,31, - 420,9,31,1,31,1,31,3,31,424,8,31,1,31,3,31,427,8,31,1,31,3,31,430,8,31, - 1,32,4,32,433,8,32,11,32,12,32,434,1,33,1,33,1,33,1,33,1,33,4,33,442,8, - 33,11,33,12,33,443,1,34,1,34,1,35,1,35,1,36,1,36,1,36,1,36,4,36,454,8, - 36,11,36,12,36,455,1,37,5,37,459,8,37,10,37,12,37,462,9,37,1,37,1,37,5, - 37,466,8,37,10,37,12,37,469,9,37,1,38,1,38,1,39,5,39,474,8,39,10,39,12, - 39,477,9,39,1,39,1,39,5,39,481,8,39,10,39,12,39,484,9,39,1,40,1,40,1,41, - 5,41,489,8,41,10,41,12,41,492,9,41,1,41,1,41,5,41,496,8,41,10,41,12,41, - 499,9,41,1,42,1,42,1,43,3,43,504,8,43,1,43,3,43,507,8,43,1,43,1,43,1,43, - 1,43,3,43,513,8,43,1,44,5,44,516,8,44,10,44,12,44,519,9,44,1,44,1,44,1, - 45,5,45,524,8,45,10,45,12,45,527,9,45,1,45,1,45,1,46,5,46,532,8,46,10, - 46,12,46,535,9,46,1,46,1,46,1,46,1,47,5,47,541,8,47,10,47,12,47,544,9, - 47,1,48,5,48,547,8,48,10,48,12,48,550,9,48,1,48,1,48,1,48,1,48,5,48,556, - 8,48,10,48,12,48,559,9,48,1,49,1,49,5,49,563,8,49,10,49,12,49,566,9,49, - 1,50,4,50,569,8,50,11,50,12,50,570,1,51,3,51,574,8,51,1,51,1,51,1,51,3, - 51,579,8,51,3,51,581,8,51,1,52,5,52,584,8,52,10,52,12,52,587,9,52,1,52, - 1,52,1,52,4,52,592,8,52,11,52,12,52,593,1,53,5,53,597,8,53,10,53,12,53, - 600,9,53,1,53,1,53,1,53,4,53,605,8,53,11,53,12,53,606,1,54,5,54,610,8, - 54,10,54,12,54,613,9,54,1,54,1,54,5,54,617,8,54,10,54,12,54,620,9,54,1, - 54,1,54,1,55,4,55,625,8,55,11,55,12,55,626,1,56,5,56,630,8,56,10,56,12, - 56,633,9,56,1,56,1,56,1,57,1,57,1,58,5,58,640,8,58,10,58,12,58,643,9,58, - 1,58,1,58,1,58,1,121,0,59,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32, - 34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80, - 82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,0,6,1,1, - 2,2,2,0,1,1,17,17,2,0,1,1,31,33,1,0,26,27,2,0,1,1,37,37,2,0,1,1,33,33, - 690,0,119,1,0,0,0,2,134,1,0,0,0,4,139,1,0,0,0,6,145,1,0,0,0,8,149,1,0, - 0,0,10,155,1,0,0,0,12,167,1,0,0,0,14,175,1,0,0,0,16,184,1,0,0,0,18,191, - 1,0,0,0,20,197,1,0,0,0,22,199,1,0,0,0,24,206,1,0,0,0,26,221,1,0,0,0,28, - 232,1,0,0,0,30,240,1,0,0,0,32,254,1,0,0,0,34,264,1,0,0,0,36,266,1,0,0, - 0,38,274,1,0,0,0,40,281,1,0,0,0,42,343,1,0,0,0,44,345,1,0,0,0,46,347,1, - 0,0,0,48,350,1,0,0,0,50,360,1,0,0,0,52,369,1,0,0,0,54,389,1,0,0,0,56,399, - 1,0,0,0,58,409,1,0,0,0,60,411,1,0,0,0,62,418,1,0,0,0,64,432,1,0,0,0,66, - 441,1,0,0,0,68,445,1,0,0,0,70,447,1,0,0,0,72,453,1,0,0,0,74,460,1,0,0, - 0,76,470,1,0,0,0,78,475,1,0,0,0,80,485,1,0,0,0,82,490,1,0,0,0,84,500,1, - 0,0,0,86,503,1,0,0,0,88,517,1,0,0,0,90,525,1,0,0,0,92,533,1,0,0,0,94,542, - 1,0,0,0,96,548,1,0,0,0,98,560,1,0,0,0,100,568,1,0,0,0,102,580,1,0,0,0, - 104,585,1,0,0,0,106,598,1,0,0,0,108,611,1,0,0,0,110,624,1,0,0,0,112,631, - 1,0,0,0,114,636,1,0,0,0,116,641,1,0,0,0,118,120,3,2,1,0,119,118,1,0,0, - 0,120,121,1,0,0,0,121,122,1,0,0,0,121,119,1,0,0,0,122,123,1,0,0,0,123, - 124,5,0,0,1,124,1,1,0,0,0,125,135,5,2,0,0,126,135,3,8,4,0,127,135,3,20, - 10,0,128,135,3,58,29,0,129,135,3,34,17,0,130,135,3,76,38,0,131,135,3,80, - 40,0,132,135,3,84,42,0,133,135,3,114,57,0,134,125,1,0,0,0,134,126,1,0, - 0,0,134,127,1,0,0,0,134,128,1,0,0,0,134,129,1,0,0,0,134,130,1,0,0,0,134, - 131,1,0,0,0,134,132,1,0,0,0,134,133,1,0,0,0,135,3,1,0,0,0,136,138,5,1, - 0,0,137,136,1,0,0,0,138,141,1,0,0,0,139,137,1,0,0,0,139,140,1,0,0,0,140, - 142,1,0,0,0,141,139,1,0,0,0,142,143,7,0,0,0,143,5,1,0,0,0,144,146,7,1, - 0,0,145,144,1,0,0,0,146,147,1,0,0,0,147,145,1,0,0,0,147,148,1,0,0,0,148, - 7,1,0,0,0,149,150,3,10,5,0,150,151,3,16,8,0,151,9,1,0,0,0,152,154,5,1, - 0,0,153,152,1,0,0,0,154,157,1,0,0,0,155,153,1,0,0,0,155,156,1,0,0,0,156, - 158,1,0,0,0,157,155,1,0,0,0,158,162,5,7,0,0,159,161,5,1,0,0,160,159,1, - 0,0,0,161,164,1,0,0,0,162,160,1,0,0,0,162,163,1,0,0,0,163,165,1,0,0,0, - 164,162,1,0,0,0,165,166,3,12,6,0,166,11,1,0,0,0,167,172,3,14,7,0,168,171, - 5,1,0,0,169,171,3,14,7,0,170,168,1,0,0,0,170,169,1,0,0,0,171,174,1,0,0, - 0,172,170,1,0,0,0,172,173,1,0,0,0,173,13,1,0,0,0,174,172,1,0,0,0,175,180, - 5,29,0,0,176,177,5,30,0,0,177,179,5,29,0,0,178,176,1,0,0,0,179,182,1,0, - 0,0,180,178,1,0,0,0,180,181,1,0,0,0,181,15,1,0,0,0,182,180,1,0,0,0,183, - 185,3,18,9,0,184,183,1,0,0,0,185,186,1,0,0,0,186,184,1,0,0,0,186,187,1, - 0,0,0,187,17,1,0,0,0,188,190,5,1,0,0,189,188,1,0,0,0,190,193,1,0,0,0,191, - 189,1,0,0,0,191,192,1,0,0,0,192,194,1,0,0,0,193,191,1,0,0,0,194,195,5, - 7,0,0,195,196,3,20,10,0,196,19,1,0,0,0,197,198,3,22,11,0,198,21,1,0,0, - 0,199,201,3,24,12,0,200,202,3,28,14,0,201,200,1,0,0,0,201,202,1,0,0,0, - 202,23,1,0,0,0,203,205,5,1,0,0,204,203,1,0,0,0,205,208,1,0,0,0,206,204, - 1,0,0,0,206,207,1,0,0,0,207,209,1,0,0,0,208,206,1,0,0,0,209,211,5,7,0, - 0,210,212,5,7,0,0,211,210,1,0,0,0,211,212,1,0,0,0,212,216,1,0,0,0,213, - 215,5,1,0,0,214,213,1,0,0,0,215,218,1,0,0,0,216,214,1,0,0,0,216,217,1, - 0,0,0,217,219,1,0,0,0,218,216,1,0,0,0,219,220,3,26,13,0,220,25,1,0,0,0, - 221,226,3,14,7,0,222,225,5,1,0,0,223,225,3,14,7,0,224,222,1,0,0,0,224, - 223,1,0,0,0,225,228,1,0,0,0,226,224,1,0,0,0,226,227,1,0,0,0,227,27,1,0, - 0,0,228,226,1,0,0,0,229,231,5,1,0,0,230,229,1,0,0,0,231,234,1,0,0,0,232, - 230,1,0,0,0,232,233,1,0,0,0,233,235,1,0,0,0,234,232,1,0,0,0,235,236,3, - 30,15,0,236,29,1,0,0,0,237,239,5,1,0,0,238,237,1,0,0,0,239,242,1,0,0,0, - 240,238,1,0,0,0,240,241,1,0,0,0,241,247,1,0,0,0,242,240,1,0,0,0,243,244, - 3,32,16,0,244,245,3,4,2,0,245,248,1,0,0,0,246,248,3,6,3,0,247,243,1,0, - 0,0,247,246,1,0,0,0,248,249,1,0,0,0,249,247,1,0,0,0,249,250,1,0,0,0,250, - 31,1,0,0,0,251,253,5,1,0,0,252,251,1,0,0,0,253,256,1,0,0,0,254,252,1,0, - 0,0,254,255,1,0,0,0,255,257,1,0,0,0,256,254,1,0,0,0,257,261,5,8,0,0,258, - 260,7,2,0,0,259,258,1,0,0,0,260,263,1,0,0,0,261,259,1,0,0,0,261,262,1, - 0,0,0,262,33,1,0,0,0,263,261,1,0,0,0,264,265,3,36,18,0,265,35,1,0,0,0, - 266,268,3,40,20,0,267,269,3,38,19,0,268,267,1,0,0,0,268,269,1,0,0,0,269, - 37,1,0,0,0,270,271,3,74,37,0,271,272,3,4,2,0,272,275,1,0,0,0,273,275,3, - 6,3,0,274,270,1,0,0,0,274,273,1,0,0,0,275,276,1,0,0,0,276,274,1,0,0,0, - 276,277,1,0,0,0,277,39,1,0,0,0,278,280,5,1,0,0,279,278,1,0,0,0,280,283, - 1,0,0,0,281,279,1,0,0,0,281,282,1,0,0,0,282,284,1,0,0,0,283,281,1,0,0, - 0,284,288,5,10,0,0,285,287,5,1,0,0,286,285,1,0,0,0,287,290,1,0,0,0,288, - 286,1,0,0,0,288,289,1,0,0,0,289,292,1,0,0,0,290,288,1,0,0,0,291,293,3, - 46,23,0,292,291,1,0,0,0,292,293,1,0,0,0,293,297,1,0,0,0,294,296,5,1,0, - 0,295,294,1,0,0,0,296,299,1,0,0,0,297,295,1,0,0,0,297,298,1,0,0,0,298, - 302,1,0,0,0,299,297,1,0,0,0,300,303,3,54,27,0,301,303,3,56,28,0,302,300, - 1,0,0,0,302,301,1,0,0,0,302,303,1,0,0,0,303,307,1,0,0,0,304,306,5,1,0, - 0,305,304,1,0,0,0,306,309,1,0,0,0,307,305,1,0,0,0,307,308,1,0,0,0,308, - 311,1,0,0,0,309,307,1,0,0,0,310,312,3,48,24,0,311,310,1,0,0,0,311,312, - 1,0,0,0,312,316,1,0,0,0,313,315,5,1,0,0,314,313,1,0,0,0,315,318,1,0,0, - 0,316,314,1,0,0,0,316,317,1,0,0,0,317,320,1,0,0,0,318,316,1,0,0,0,319, - 321,3,50,25,0,320,319,1,0,0,0,320,321,1,0,0,0,321,325,1,0,0,0,322,324, - 5,1,0,0,323,322,1,0,0,0,324,327,1,0,0,0,325,323,1,0,0,0,325,326,1,0,0, - 0,326,329,1,0,0,0,327,325,1,0,0,0,328,330,5,18,0,0,329,328,1,0,0,0,329, - 330,1,0,0,0,330,334,1,0,0,0,331,333,5,1,0,0,332,331,1,0,0,0,333,336,1, - 0,0,0,334,332,1,0,0,0,334,335,1,0,0,0,335,339,1,0,0,0,336,334,1,0,0,0, - 337,340,3,42,21,0,338,340,3,44,22,0,339,337,1,0,0,0,339,338,1,0,0,0,339, - 340,1,0,0,0,340,341,1,0,0,0,341,342,3,4,2,0,342,41,1,0,0,0,343,344,5,24, - 0,0,344,43,1,0,0,0,345,346,5,25,0,0,346,45,1,0,0,0,347,348,5,22,0,0,348, - 47,1,0,0,0,349,351,5,20,0,0,350,349,1,0,0,0,350,351,1,0,0,0,351,355,1, - 0,0,0,352,354,5,1,0,0,353,352,1,0,0,0,354,357,1,0,0,0,355,353,1,0,0,0, - 355,356,1,0,0,0,356,358,1,0,0,0,357,355,1,0,0,0,358,359,3,52,26,0,359, - 49,1,0,0,0,360,364,5,21,0,0,361,363,5,1,0,0,362,361,1,0,0,0,363,366,1, - 0,0,0,364,362,1,0,0,0,364,365,1,0,0,0,365,367,1,0,0,0,366,364,1,0,0,0, - 367,368,3,52,26,0,368,51,1,0,0,0,369,386,7,3,0,0,370,372,5,1,0,0,371,370, - 1,0,0,0,372,375,1,0,0,0,373,371,1,0,0,0,373,374,1,0,0,0,374,376,1,0,0, - 0,375,373,1,0,0,0,376,380,5,19,0,0,377,379,5,1,0,0,378,377,1,0,0,0,379, - 382,1,0,0,0,380,378,1,0,0,0,380,381,1,0,0,0,381,383,1,0,0,0,382,380,1, - 0,0,0,383,385,7,3,0,0,384,373,1,0,0,0,385,388,1,0,0,0,386,384,1,0,0,0, - 386,387,1,0,0,0,387,53,1,0,0,0,388,386,1,0,0,0,389,397,5,26,0,0,390,392, - 5,1,0,0,391,390,1,0,0,0,392,395,1,0,0,0,393,391,1,0,0,0,393,394,1,0,0, - 0,394,396,1,0,0,0,395,393,1,0,0,0,396,398,5,23,0,0,397,393,1,0,0,0,397, - 398,1,0,0,0,398,55,1,0,0,0,399,407,5,27,0,0,400,402,5,1,0,0,401,400,1, - 0,0,0,402,405,1,0,0,0,403,401,1,0,0,0,403,404,1,0,0,0,404,406,1,0,0,0, - 405,403,1,0,0,0,406,408,5,23,0,0,407,403,1,0,0,0,407,408,1,0,0,0,408,57, - 1,0,0,0,409,410,3,60,30,0,410,59,1,0,0,0,411,413,3,62,31,0,412,414,3,72, - 36,0,413,412,1,0,0,0,413,414,1,0,0,0,414,61,1,0,0,0,415,417,5,1,0,0,416, - 415,1,0,0,0,417,420,1,0,0,0,418,416,1,0,0,0,418,419,1,0,0,0,419,421,1, - 0,0,0,420,418,1,0,0,0,421,423,5,9,0,0,422,424,3,64,32,0,423,422,1,0,0, - 0,423,424,1,0,0,0,424,426,1,0,0,0,425,427,5,38,0,0,426,425,1,0,0,0,426, - 427,1,0,0,0,427,429,1,0,0,0,428,430,3,66,33,0,429,428,1,0,0,0,429,430, - 1,0,0,0,430,63,1,0,0,0,431,433,7,4,0,0,432,431,1,0,0,0,433,434,1,0,0,0, - 434,432,1,0,0,0,434,435,1,0,0,0,435,65,1,0,0,0,436,442,3,68,34,0,437,442, - 3,70,35,0,438,442,5,37,0,0,439,442,5,38,0,0,440,442,5,1,0,0,441,436,1, - 0,0,0,441,437,1,0,0,0,441,438,1,0,0,0,441,439,1,0,0,0,441,440,1,0,0,0, - 442,443,1,0,0,0,443,441,1,0,0,0,443,444,1,0,0,0,444,67,1,0,0,0,445,446, - 5,35,0,0,446,69,1,0,0,0,447,448,5,36,0,0,448,71,1,0,0,0,449,450,3,74,37, - 0,450,451,3,4,2,0,451,454,1,0,0,0,452,454,3,6,3,0,453,449,1,0,0,0,453, - 452,1,0,0,0,454,455,1,0,0,0,455,453,1,0,0,0,455,456,1,0,0,0,456,73,1,0, - 0,0,457,459,5,1,0,0,458,457,1,0,0,0,459,462,1,0,0,0,460,458,1,0,0,0,460, - 461,1,0,0,0,461,463,1,0,0,0,462,460,1,0,0,0,463,467,5,8,0,0,464,466,7, - 2,0,0,465,464,1,0,0,0,466,469,1,0,0,0,467,465,1,0,0,0,467,468,1,0,0,0, - 468,75,1,0,0,0,469,467,1,0,0,0,470,471,3,78,39,0,471,77,1,0,0,0,472,474, - 5,1,0,0,473,472,1,0,0,0,474,477,1,0,0,0,475,473,1,0,0,0,475,476,1,0,0, - 0,476,478,1,0,0,0,477,475,1,0,0,0,478,482,5,11,0,0,479,481,5,1,0,0,480, - 479,1,0,0,0,481,484,1,0,0,0,482,480,1,0,0,0,482,483,1,0,0,0,483,79,1,0, - 0,0,484,482,1,0,0,0,485,486,3,82,41,0,486,81,1,0,0,0,487,489,5,1,0,0,488, - 487,1,0,0,0,489,492,1,0,0,0,490,488,1,0,0,0,490,491,1,0,0,0,491,493,1, - 0,0,0,492,490,1,0,0,0,493,497,5,12,0,0,494,496,5,1,0,0,495,494,1,0,0,0, - 496,499,1,0,0,0,497,495,1,0,0,0,497,498,1,0,0,0,498,83,1,0,0,0,499,497, - 1,0,0,0,500,501,3,86,43,0,501,85,1,0,0,0,502,504,3,88,44,0,503,502,1,0, - 0,0,503,504,1,0,0,0,504,506,1,0,0,0,505,507,3,90,45,0,506,505,1,0,0,0, - 506,507,1,0,0,0,507,508,1,0,0,0,508,509,3,92,46,0,509,510,3,96,48,0,510, - 512,3,102,51,0,511,513,3,106,53,0,512,511,1,0,0,0,512,513,1,0,0,0,513, - 87,1,0,0,0,514,516,5,1,0,0,515,514,1,0,0,0,516,519,1,0,0,0,517,515,1,0, - 0,0,517,518,1,0,0,0,518,520,1,0,0,0,519,517,1,0,0,0,520,521,5,3,0,0,521, - 89,1,0,0,0,522,524,5,1,0,0,523,522,1,0,0,0,524,527,1,0,0,0,525,523,1,0, - 0,0,525,526,1,0,0,0,526,528,1,0,0,0,527,525,1,0,0,0,528,529,5,14,0,0,529, - 91,1,0,0,0,530,532,5,1,0,0,531,530,1,0,0,0,532,535,1,0,0,0,533,531,1,0, - 0,0,533,534,1,0,0,0,534,536,1,0,0,0,535,533,1,0,0,0,536,537,5,6,0,0,537, - 538,3,94,47,0,538,93,1,0,0,0,539,541,5,40,0,0,540,539,1,0,0,0,541,544, - 1,0,0,0,542,540,1,0,0,0,542,543,1,0,0,0,543,95,1,0,0,0,544,542,1,0,0,0, - 545,547,5,1,0,0,546,545,1,0,0,0,547,550,1,0,0,0,548,546,1,0,0,0,548,549, - 1,0,0,0,549,557,1,0,0,0,550,548,1,0,0,0,551,552,3,98,49,0,552,553,3,4, - 2,0,553,556,1,0,0,0,554,556,3,100,50,0,555,551,1,0,0,0,555,554,1,0,0,0, - 556,559,1,0,0,0,557,555,1,0,0,0,557,558,1,0,0,0,558,97,1,0,0,0,559,557, - 1,0,0,0,560,564,5,8,0,0,561,563,7,5,0,0,562,561,1,0,0,0,563,566,1,0,0, - 0,564,562,1,0,0,0,564,565,1,0,0,0,565,99,1,0,0,0,566,564,1,0,0,0,567,569, - 7,1,0,0,568,567,1,0,0,0,569,570,1,0,0,0,570,568,1,0,0,0,570,571,1,0,0, - 0,571,101,1,0,0,0,572,574,3,104,52,0,573,572,1,0,0,0,573,574,1,0,0,0,574, - 575,1,0,0,0,575,581,3,112,56,0,576,578,3,112,56,0,577,579,3,104,52,0,578, - 577,1,0,0,0,578,579,1,0,0,0,579,581,1,0,0,0,580,573,1,0,0,0,580,576,1, - 0,0,0,581,103,1,0,0,0,582,584,5,1,0,0,583,582,1,0,0,0,584,587,1,0,0,0, - 585,583,1,0,0,0,585,586,1,0,0,0,586,588,1,0,0,0,587,585,1,0,0,0,588,591, - 5,13,0,0,589,592,3,108,54,0,590,592,3,110,55,0,591,589,1,0,0,0,591,590, - 1,0,0,0,592,593,1,0,0,0,593,591,1,0,0,0,593,594,1,0,0,0,594,105,1,0,0, - 0,595,597,5,1,0,0,596,595,1,0,0,0,597,600,1,0,0,0,598,596,1,0,0,0,598, - 599,1,0,0,0,599,601,1,0,0,0,600,598,1,0,0,0,601,604,5,16,0,0,602,605,3, - 108,54,0,603,605,3,110,55,0,604,602,1,0,0,0,604,603,1,0,0,0,605,606,1, - 0,0,0,606,604,1,0,0,0,606,607,1,0,0,0,607,107,1,0,0,0,608,610,5,1,0,0, - 609,608,1,0,0,0,610,613,1,0,0,0,611,609,1,0,0,0,611,612,1,0,0,0,612,614, - 1,0,0,0,613,611,1,0,0,0,614,618,5,8,0,0,615,617,7,5,0,0,616,615,1,0,0, - 0,617,620,1,0,0,0,618,616,1,0,0,0,618,619,1,0,0,0,619,621,1,0,0,0,620, - 618,1,0,0,0,621,622,3,4,2,0,622,109,1,0,0,0,623,625,7,1,0,0,624,623,1, - 0,0,0,625,626,1,0,0,0,626,624,1,0,0,0,626,627,1,0,0,0,627,111,1,0,0,0, - 628,630,5,1,0,0,629,628,1,0,0,0,630,633,1,0,0,0,631,629,1,0,0,0,631,632, - 1,0,0,0,632,634,1,0,0,0,633,631,1,0,0,0,634,635,5,15,0,0,635,113,1,0,0, - 0,636,637,3,116,58,0,637,115,1,0,0,0,638,640,5,1,0,0,639,638,1,0,0,0,640, - 643,1,0,0,0,641,639,1,0,0,0,641,642,1,0,0,0,642,644,1,0,0,0,643,641,1, - 0,0,0,644,645,5,4,0,0,645,117,1,0,0,0,91,121,134,139,147,155,162,170,172, - 180,186,191,201,206,211,216,224,226,232,240,247,249,254,261,268,274,276, - 281,288,292,297,302,307,311,316,320,325,329,334,339,350,355,364,373,380, - 386,393,397,403,407,413,418,423,426,429,434,441,443,453,455,460,467,475, - 482,490,497,503,506,512,517,525,533,542,548,555,557,564,570,573,578,580, - 585,591,593,598,604,606,611,618,626,631,641 + 2,57,7,57,2,58,7,58,2,59,7,59,1,0,4,0,122,8,0,11,0,12,0,123,1,0,1,0,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,138,8,1,1,2,5,2,141,8,2,10,2, + 12,2,144,9,2,1,2,1,2,1,3,1,3,3,3,150,8,3,1,4,4,4,153,8,4,11,4,12,4,154, + 1,5,1,5,1,5,1,6,5,6,161,8,6,10,6,12,6,164,9,6,1,6,1,6,5,6,168,8,6,10,6, + 12,6,171,9,6,1,6,1,6,1,7,1,7,1,7,5,7,178,8,7,10,7,12,7,181,9,7,1,8,1,8, + 1,8,5,8,186,8,8,10,8,12,8,189,9,8,1,9,4,9,192,8,9,11,9,12,9,193,1,10,5, + 10,197,8,10,10,10,12,10,200,9,10,1,10,1,10,1,10,1,11,1,11,1,12,1,12,3, + 12,209,8,12,1,13,5,13,212,8,13,10,13,12,13,215,9,13,1,13,1,13,3,13,219, + 8,13,1,13,5,13,222,8,13,10,13,12,13,225,9,13,1,13,1,13,1,14,1,14,1,14, + 5,14,232,8,14,10,14,12,14,235,9,14,1,15,5,15,238,8,15,10,15,12,15,241, + 9,15,1,15,1,15,1,16,5,16,246,8,16,10,16,12,16,249,9,16,1,16,1,16,1,16, + 1,16,1,16,4,16,256,8,16,11,16,12,16,257,1,17,5,17,261,8,17,10,17,12,17, + 264,9,17,1,17,1,17,5,17,268,8,17,10,17,12,17,271,9,17,1,18,1,18,1,19,1, + 19,3,19,277,8,19,1,20,1,20,1,20,1,20,4,20,283,8,20,11,20,12,20,284,1,21, + 5,21,288,8,21,10,21,12,21,291,9,21,1,21,1,21,5,21,295,8,21,10,21,12,21, + 298,9,21,1,21,3,21,301,8,21,1,21,5,21,304,8,21,10,21,12,21,307,9,21,1, + 21,1,21,3,21,311,8,21,1,21,5,21,314,8,21,10,21,12,21,317,9,21,1,21,3,21, + 320,8,21,1,21,5,21,323,8,21,10,21,12,21,326,9,21,1,21,3,21,329,8,21,1, + 21,5,21,332,8,21,10,21,12,21,335,9,21,1,21,3,21,338,8,21,1,21,5,21,341, + 8,21,10,21,12,21,344,9,21,1,21,1,21,3,21,348,8,21,1,21,1,21,1,22,1,22, + 1,23,1,23,1,24,1,24,1,25,3,25,359,8,25,1,25,5,25,362,8,25,10,25,12,25, + 365,9,25,1,25,1,25,1,26,1,26,5,26,371,8,26,10,26,12,26,374,9,26,1,26,1, + 26,1,27,1,27,5,27,380,8,27,10,27,12,27,383,9,27,1,27,1,27,5,27,387,8,27, + 10,27,12,27,390,9,27,1,27,5,27,393,8,27,10,27,12,27,396,9,27,1,28,1,28, + 5,28,400,8,28,10,28,12,28,403,9,28,1,28,3,28,406,8,28,1,29,1,29,5,29,410, + 8,29,10,29,12,29,413,9,29,1,29,3,29,416,8,29,1,30,1,30,1,31,1,31,3,31, + 422,8,31,1,32,5,32,425,8,32,10,32,12,32,428,9,32,1,32,1,32,3,32,432,8, + 32,1,32,3,32,435,8,32,1,32,3,32,438,8,32,1,33,4,33,441,8,33,11,33,12,33, + 442,1,34,1,34,1,34,1,34,1,34,4,34,450,8,34,11,34,12,34,451,1,35,1,35,1, + 36,1,36,1,37,1,37,1,37,1,37,4,37,462,8,37,11,37,12,37,463,1,38,5,38,467, + 8,38,10,38,12,38,470,9,38,1,38,1,38,5,38,474,8,38,10,38,12,38,477,9,38, + 1,39,1,39,1,40,5,40,482,8,40,10,40,12,40,485,9,40,1,40,1,40,5,40,489,8, + 40,10,40,12,40,492,9,40,1,41,1,41,1,42,5,42,497,8,42,10,42,12,42,500,9, + 42,1,42,1,42,5,42,504,8,42,10,42,12,42,507,9,42,1,43,1,43,1,44,3,44,512, + 8,44,1,44,3,44,515,8,44,1,44,1,44,1,44,1,44,3,44,521,8,44,1,45,5,45,524, + 8,45,10,45,12,45,527,9,45,1,45,1,45,1,46,5,46,532,8,46,10,46,12,46,535, + 9,46,1,46,1,46,1,47,5,47,540,8,47,10,47,12,47,543,9,47,1,47,1,47,1,47, + 1,48,5,48,549,8,48,10,48,12,48,552,9,48,1,49,5,49,555,8,49,10,49,12,49, + 558,9,49,1,49,1,49,1,49,1,49,5,49,564,8,49,10,49,12,49,567,9,49,1,50,1, + 50,5,50,571,8,50,10,50,12,50,574,9,50,1,51,4,51,577,8,51,11,51,12,51,578, + 1,52,3,52,582,8,52,1,52,1,52,1,52,3,52,587,8,52,3,52,589,8,52,1,53,5,53, + 592,8,53,10,53,12,53,595,9,53,1,53,1,53,1,53,4,53,600,8,53,11,53,12,53, + 601,1,54,5,54,605,8,54,10,54,12,54,608,9,54,1,54,1,54,1,54,4,54,613,8, + 54,11,54,12,54,614,1,55,5,55,618,8,55,10,55,12,55,621,9,55,1,55,1,55,5, + 55,625,8,55,10,55,12,55,628,9,55,1,55,1,55,1,56,4,56,633,8,56,11,56,12, + 56,634,1,57,5,57,638,8,57,10,57,12,57,641,9,57,1,57,1,57,1,58,1,58,1,59, + 5,59,648,8,59,10,59,12,59,651,9,59,1,59,1,59,1,59,1,123,0,60,0,2,4,6,8, + 10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56, + 58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102, + 104,106,108,110,112,114,116,118,0,6,1,1,2,2,2,0,1,1,17,17,2,0,1,1,31,33, + 1,0,26,27,2,0,1,1,37,37,2,0,1,1,33,33,700,0,121,1,0,0,0,2,137,1,0,0,0, + 4,142,1,0,0,0,6,147,1,0,0,0,8,152,1,0,0,0,10,156,1,0,0,0,12,162,1,0,0, + 0,14,174,1,0,0,0,16,182,1,0,0,0,18,191,1,0,0,0,20,198,1,0,0,0,22,204,1, + 0,0,0,24,206,1,0,0,0,26,213,1,0,0,0,28,228,1,0,0,0,30,239,1,0,0,0,32,247, + 1,0,0,0,34,262,1,0,0,0,36,272,1,0,0,0,38,274,1,0,0,0,40,282,1,0,0,0,42, + 289,1,0,0,0,44,351,1,0,0,0,46,353,1,0,0,0,48,355,1,0,0,0,50,358,1,0,0, + 0,52,368,1,0,0,0,54,377,1,0,0,0,56,397,1,0,0,0,58,407,1,0,0,0,60,417,1, + 0,0,0,62,419,1,0,0,0,64,426,1,0,0,0,66,440,1,0,0,0,68,449,1,0,0,0,70,453, + 1,0,0,0,72,455,1,0,0,0,74,461,1,0,0,0,76,468,1,0,0,0,78,478,1,0,0,0,80, + 483,1,0,0,0,82,493,1,0,0,0,84,498,1,0,0,0,86,508,1,0,0,0,88,511,1,0,0, + 0,90,525,1,0,0,0,92,533,1,0,0,0,94,541,1,0,0,0,96,550,1,0,0,0,98,556,1, + 0,0,0,100,568,1,0,0,0,102,576,1,0,0,0,104,588,1,0,0,0,106,593,1,0,0,0, + 108,606,1,0,0,0,110,619,1,0,0,0,112,632,1,0,0,0,114,639,1,0,0,0,116,644, + 1,0,0,0,118,649,1,0,0,0,120,122,3,2,1,0,121,120,1,0,0,0,122,123,1,0,0, + 0,123,124,1,0,0,0,123,121,1,0,0,0,124,125,1,0,0,0,125,126,5,0,0,1,126, + 1,1,0,0,0,127,138,5,2,0,0,128,138,3,10,5,0,129,138,3,22,11,0,130,138,3, + 60,30,0,131,138,3,36,18,0,132,138,3,78,39,0,133,138,3,82,41,0,134,138, + 3,86,43,0,135,138,3,116,58,0,136,138,3,6,3,0,137,127,1,0,0,0,137,128,1, + 0,0,0,137,129,1,0,0,0,137,130,1,0,0,0,137,131,1,0,0,0,137,132,1,0,0,0, + 137,133,1,0,0,0,137,134,1,0,0,0,137,135,1,0,0,0,137,136,1,0,0,0,138,3, + 1,0,0,0,139,141,5,1,0,0,140,139,1,0,0,0,141,144,1,0,0,0,142,140,1,0,0, + 0,142,143,1,0,0,0,143,145,1,0,0,0,144,142,1,0,0,0,145,146,7,0,0,0,146, + 5,1,0,0,0,147,149,5,5,0,0,148,150,5,2,0,0,149,148,1,0,0,0,149,150,1,0, + 0,0,150,7,1,0,0,0,151,153,7,1,0,0,152,151,1,0,0,0,153,154,1,0,0,0,154, + 152,1,0,0,0,154,155,1,0,0,0,155,9,1,0,0,0,156,157,3,12,6,0,157,158,3,18, + 9,0,158,11,1,0,0,0,159,161,5,1,0,0,160,159,1,0,0,0,161,164,1,0,0,0,162, + 160,1,0,0,0,162,163,1,0,0,0,163,165,1,0,0,0,164,162,1,0,0,0,165,169,5, + 7,0,0,166,168,5,1,0,0,167,166,1,0,0,0,168,171,1,0,0,0,169,167,1,0,0,0, + 169,170,1,0,0,0,170,172,1,0,0,0,171,169,1,0,0,0,172,173,3,14,7,0,173,13, + 1,0,0,0,174,179,3,16,8,0,175,178,5,1,0,0,176,178,3,16,8,0,177,175,1,0, + 0,0,177,176,1,0,0,0,178,181,1,0,0,0,179,177,1,0,0,0,179,180,1,0,0,0,180, + 15,1,0,0,0,181,179,1,0,0,0,182,187,5,29,0,0,183,184,5,30,0,0,184,186,5, + 29,0,0,185,183,1,0,0,0,186,189,1,0,0,0,187,185,1,0,0,0,187,188,1,0,0,0, + 188,17,1,0,0,0,189,187,1,0,0,0,190,192,3,20,10,0,191,190,1,0,0,0,192,193, + 1,0,0,0,193,191,1,0,0,0,193,194,1,0,0,0,194,19,1,0,0,0,195,197,5,1,0,0, + 196,195,1,0,0,0,197,200,1,0,0,0,198,196,1,0,0,0,198,199,1,0,0,0,199,201, + 1,0,0,0,200,198,1,0,0,0,201,202,5,7,0,0,202,203,3,22,11,0,203,21,1,0,0, + 0,204,205,3,24,12,0,205,23,1,0,0,0,206,208,3,26,13,0,207,209,3,30,15,0, + 208,207,1,0,0,0,208,209,1,0,0,0,209,25,1,0,0,0,210,212,5,1,0,0,211,210, + 1,0,0,0,212,215,1,0,0,0,213,211,1,0,0,0,213,214,1,0,0,0,214,216,1,0,0, + 0,215,213,1,0,0,0,216,218,5,7,0,0,217,219,5,7,0,0,218,217,1,0,0,0,218, + 219,1,0,0,0,219,223,1,0,0,0,220,222,5,1,0,0,221,220,1,0,0,0,222,225,1, + 0,0,0,223,221,1,0,0,0,223,224,1,0,0,0,224,226,1,0,0,0,225,223,1,0,0,0, + 226,227,3,28,14,0,227,27,1,0,0,0,228,233,3,16,8,0,229,232,5,1,0,0,230, + 232,3,16,8,0,231,229,1,0,0,0,231,230,1,0,0,0,232,235,1,0,0,0,233,231,1, + 0,0,0,233,234,1,0,0,0,234,29,1,0,0,0,235,233,1,0,0,0,236,238,5,1,0,0,237, + 236,1,0,0,0,238,241,1,0,0,0,239,237,1,0,0,0,239,240,1,0,0,0,240,242,1, + 0,0,0,241,239,1,0,0,0,242,243,3,32,16,0,243,31,1,0,0,0,244,246,5,1,0,0, + 245,244,1,0,0,0,246,249,1,0,0,0,247,245,1,0,0,0,247,248,1,0,0,0,248,255, + 1,0,0,0,249,247,1,0,0,0,250,251,3,34,17,0,251,252,3,4,2,0,252,256,1,0, + 0,0,253,256,3,8,4,0,254,256,3,6,3,0,255,250,1,0,0,0,255,253,1,0,0,0,255, + 254,1,0,0,0,256,257,1,0,0,0,257,255,1,0,0,0,257,258,1,0,0,0,258,33,1,0, + 0,0,259,261,5,1,0,0,260,259,1,0,0,0,261,264,1,0,0,0,262,260,1,0,0,0,262, + 263,1,0,0,0,263,265,1,0,0,0,264,262,1,0,0,0,265,269,5,8,0,0,266,268,7, + 2,0,0,267,266,1,0,0,0,268,271,1,0,0,0,269,267,1,0,0,0,269,270,1,0,0,0, + 270,35,1,0,0,0,271,269,1,0,0,0,272,273,3,38,19,0,273,37,1,0,0,0,274,276, + 3,42,21,0,275,277,3,40,20,0,276,275,1,0,0,0,276,277,1,0,0,0,277,39,1,0, + 0,0,278,279,3,76,38,0,279,280,3,4,2,0,280,283,1,0,0,0,281,283,3,8,4,0, + 282,278,1,0,0,0,282,281,1,0,0,0,283,284,1,0,0,0,284,282,1,0,0,0,284,285, + 1,0,0,0,285,41,1,0,0,0,286,288,5,1,0,0,287,286,1,0,0,0,288,291,1,0,0,0, + 289,287,1,0,0,0,289,290,1,0,0,0,290,292,1,0,0,0,291,289,1,0,0,0,292,296, + 5,10,0,0,293,295,5,1,0,0,294,293,1,0,0,0,295,298,1,0,0,0,296,294,1,0,0, + 0,296,297,1,0,0,0,297,300,1,0,0,0,298,296,1,0,0,0,299,301,3,48,24,0,300, + 299,1,0,0,0,300,301,1,0,0,0,301,305,1,0,0,0,302,304,5,1,0,0,303,302,1, + 0,0,0,304,307,1,0,0,0,305,303,1,0,0,0,305,306,1,0,0,0,306,310,1,0,0,0, + 307,305,1,0,0,0,308,311,3,56,28,0,309,311,3,58,29,0,310,308,1,0,0,0,310, + 309,1,0,0,0,310,311,1,0,0,0,311,315,1,0,0,0,312,314,5,1,0,0,313,312,1, + 0,0,0,314,317,1,0,0,0,315,313,1,0,0,0,315,316,1,0,0,0,316,319,1,0,0,0, + 317,315,1,0,0,0,318,320,3,50,25,0,319,318,1,0,0,0,319,320,1,0,0,0,320, + 324,1,0,0,0,321,323,5,1,0,0,322,321,1,0,0,0,323,326,1,0,0,0,324,322,1, + 0,0,0,324,325,1,0,0,0,325,328,1,0,0,0,326,324,1,0,0,0,327,329,3,52,26, + 0,328,327,1,0,0,0,328,329,1,0,0,0,329,333,1,0,0,0,330,332,5,1,0,0,331, + 330,1,0,0,0,332,335,1,0,0,0,333,331,1,0,0,0,333,334,1,0,0,0,334,337,1, + 0,0,0,335,333,1,0,0,0,336,338,5,18,0,0,337,336,1,0,0,0,337,338,1,0,0,0, + 338,342,1,0,0,0,339,341,5,1,0,0,340,339,1,0,0,0,341,344,1,0,0,0,342,340, + 1,0,0,0,342,343,1,0,0,0,343,347,1,0,0,0,344,342,1,0,0,0,345,348,3,44,22, + 0,346,348,3,46,23,0,347,345,1,0,0,0,347,346,1,0,0,0,347,348,1,0,0,0,348, + 349,1,0,0,0,349,350,3,4,2,0,350,43,1,0,0,0,351,352,5,24,0,0,352,45,1,0, + 0,0,353,354,5,25,0,0,354,47,1,0,0,0,355,356,5,22,0,0,356,49,1,0,0,0,357, + 359,5,20,0,0,358,357,1,0,0,0,358,359,1,0,0,0,359,363,1,0,0,0,360,362,5, + 1,0,0,361,360,1,0,0,0,362,365,1,0,0,0,363,361,1,0,0,0,363,364,1,0,0,0, + 364,366,1,0,0,0,365,363,1,0,0,0,366,367,3,54,27,0,367,51,1,0,0,0,368,372, + 5,21,0,0,369,371,5,1,0,0,370,369,1,0,0,0,371,374,1,0,0,0,372,370,1,0,0, + 0,372,373,1,0,0,0,373,375,1,0,0,0,374,372,1,0,0,0,375,376,3,54,27,0,376, + 53,1,0,0,0,377,394,7,3,0,0,378,380,5,1,0,0,379,378,1,0,0,0,380,383,1,0, + 0,0,381,379,1,0,0,0,381,382,1,0,0,0,382,384,1,0,0,0,383,381,1,0,0,0,384, + 388,5,19,0,0,385,387,5,1,0,0,386,385,1,0,0,0,387,390,1,0,0,0,388,386,1, + 0,0,0,388,389,1,0,0,0,389,391,1,0,0,0,390,388,1,0,0,0,391,393,7,3,0,0, + 392,381,1,0,0,0,393,396,1,0,0,0,394,392,1,0,0,0,394,395,1,0,0,0,395,55, + 1,0,0,0,396,394,1,0,0,0,397,405,5,26,0,0,398,400,5,1,0,0,399,398,1,0,0, + 0,400,403,1,0,0,0,401,399,1,0,0,0,401,402,1,0,0,0,402,404,1,0,0,0,403, + 401,1,0,0,0,404,406,5,23,0,0,405,401,1,0,0,0,405,406,1,0,0,0,406,57,1, + 0,0,0,407,415,5,27,0,0,408,410,5,1,0,0,409,408,1,0,0,0,410,413,1,0,0,0, + 411,409,1,0,0,0,411,412,1,0,0,0,412,414,1,0,0,0,413,411,1,0,0,0,414,416, + 5,23,0,0,415,411,1,0,0,0,415,416,1,0,0,0,416,59,1,0,0,0,417,418,3,62,31, + 0,418,61,1,0,0,0,419,421,3,64,32,0,420,422,3,74,37,0,421,420,1,0,0,0,421, + 422,1,0,0,0,422,63,1,0,0,0,423,425,5,1,0,0,424,423,1,0,0,0,425,428,1,0, + 0,0,426,424,1,0,0,0,426,427,1,0,0,0,427,429,1,0,0,0,428,426,1,0,0,0,429, + 431,5,9,0,0,430,432,3,66,33,0,431,430,1,0,0,0,431,432,1,0,0,0,432,434, + 1,0,0,0,433,435,5,38,0,0,434,433,1,0,0,0,434,435,1,0,0,0,435,437,1,0,0, + 0,436,438,3,68,34,0,437,436,1,0,0,0,437,438,1,0,0,0,438,65,1,0,0,0,439, + 441,7,4,0,0,440,439,1,0,0,0,441,442,1,0,0,0,442,440,1,0,0,0,442,443,1, + 0,0,0,443,67,1,0,0,0,444,450,3,70,35,0,445,450,3,72,36,0,446,450,5,37, + 0,0,447,450,5,38,0,0,448,450,5,1,0,0,449,444,1,0,0,0,449,445,1,0,0,0,449, + 446,1,0,0,0,449,447,1,0,0,0,449,448,1,0,0,0,450,451,1,0,0,0,451,449,1, + 0,0,0,451,452,1,0,0,0,452,69,1,0,0,0,453,454,5,35,0,0,454,71,1,0,0,0,455, + 456,5,36,0,0,456,73,1,0,0,0,457,458,3,76,38,0,458,459,3,4,2,0,459,462, + 1,0,0,0,460,462,3,8,4,0,461,457,1,0,0,0,461,460,1,0,0,0,462,463,1,0,0, + 0,463,461,1,0,0,0,463,464,1,0,0,0,464,75,1,0,0,0,465,467,5,1,0,0,466,465, + 1,0,0,0,467,470,1,0,0,0,468,466,1,0,0,0,468,469,1,0,0,0,469,471,1,0,0, + 0,470,468,1,0,0,0,471,475,5,8,0,0,472,474,7,2,0,0,473,472,1,0,0,0,474, + 477,1,0,0,0,475,473,1,0,0,0,475,476,1,0,0,0,476,77,1,0,0,0,477,475,1,0, + 0,0,478,479,3,80,40,0,479,79,1,0,0,0,480,482,5,1,0,0,481,480,1,0,0,0,482, + 485,1,0,0,0,483,481,1,0,0,0,483,484,1,0,0,0,484,486,1,0,0,0,485,483,1, + 0,0,0,486,490,5,11,0,0,487,489,5,1,0,0,488,487,1,0,0,0,489,492,1,0,0,0, + 490,488,1,0,0,0,490,491,1,0,0,0,491,81,1,0,0,0,492,490,1,0,0,0,493,494, + 3,84,42,0,494,83,1,0,0,0,495,497,5,1,0,0,496,495,1,0,0,0,497,500,1,0,0, + 0,498,496,1,0,0,0,498,499,1,0,0,0,499,501,1,0,0,0,500,498,1,0,0,0,501, + 505,5,12,0,0,502,504,5,1,0,0,503,502,1,0,0,0,504,507,1,0,0,0,505,503,1, + 0,0,0,505,506,1,0,0,0,506,85,1,0,0,0,507,505,1,0,0,0,508,509,3,88,44,0, + 509,87,1,0,0,0,510,512,3,90,45,0,511,510,1,0,0,0,511,512,1,0,0,0,512,514, + 1,0,0,0,513,515,3,92,46,0,514,513,1,0,0,0,514,515,1,0,0,0,515,516,1,0, + 0,0,516,517,3,94,47,0,517,518,3,98,49,0,518,520,3,104,52,0,519,521,3,108, + 54,0,520,519,1,0,0,0,520,521,1,0,0,0,521,89,1,0,0,0,522,524,5,1,0,0,523, + 522,1,0,0,0,524,527,1,0,0,0,525,523,1,0,0,0,525,526,1,0,0,0,526,528,1, + 0,0,0,527,525,1,0,0,0,528,529,5,3,0,0,529,91,1,0,0,0,530,532,5,1,0,0,531, + 530,1,0,0,0,532,535,1,0,0,0,533,531,1,0,0,0,533,534,1,0,0,0,534,536,1, + 0,0,0,535,533,1,0,0,0,536,537,5,14,0,0,537,93,1,0,0,0,538,540,5,1,0,0, + 539,538,1,0,0,0,540,543,1,0,0,0,541,539,1,0,0,0,541,542,1,0,0,0,542,544, + 1,0,0,0,543,541,1,0,0,0,544,545,5,6,0,0,545,546,3,96,48,0,546,95,1,0,0, + 0,547,549,5,40,0,0,548,547,1,0,0,0,549,552,1,0,0,0,550,548,1,0,0,0,550, + 551,1,0,0,0,551,97,1,0,0,0,552,550,1,0,0,0,553,555,5,1,0,0,554,553,1,0, + 0,0,555,558,1,0,0,0,556,554,1,0,0,0,556,557,1,0,0,0,557,565,1,0,0,0,558, + 556,1,0,0,0,559,560,3,100,50,0,560,561,3,4,2,0,561,564,1,0,0,0,562,564, + 3,102,51,0,563,559,1,0,0,0,563,562,1,0,0,0,564,567,1,0,0,0,565,563,1,0, + 0,0,565,566,1,0,0,0,566,99,1,0,0,0,567,565,1,0,0,0,568,572,5,8,0,0,569, + 571,7,5,0,0,570,569,1,0,0,0,571,574,1,0,0,0,572,570,1,0,0,0,572,573,1, + 0,0,0,573,101,1,0,0,0,574,572,1,0,0,0,575,577,7,1,0,0,576,575,1,0,0,0, + 577,578,1,0,0,0,578,576,1,0,0,0,578,579,1,0,0,0,579,103,1,0,0,0,580,582, + 3,106,53,0,581,580,1,0,0,0,581,582,1,0,0,0,582,583,1,0,0,0,583,589,3,114, + 57,0,584,586,3,114,57,0,585,587,3,106,53,0,586,585,1,0,0,0,586,587,1,0, + 0,0,587,589,1,0,0,0,588,581,1,0,0,0,588,584,1,0,0,0,589,105,1,0,0,0,590, + 592,5,1,0,0,591,590,1,0,0,0,592,595,1,0,0,0,593,591,1,0,0,0,593,594,1, + 0,0,0,594,596,1,0,0,0,595,593,1,0,0,0,596,599,5,13,0,0,597,600,3,110,55, + 0,598,600,3,112,56,0,599,597,1,0,0,0,599,598,1,0,0,0,600,601,1,0,0,0,601, + 599,1,0,0,0,601,602,1,0,0,0,602,107,1,0,0,0,603,605,5,1,0,0,604,603,1, + 0,0,0,605,608,1,0,0,0,606,604,1,0,0,0,606,607,1,0,0,0,607,609,1,0,0,0, + 608,606,1,0,0,0,609,612,5,16,0,0,610,613,3,110,55,0,611,613,3,112,56,0, + 612,610,1,0,0,0,612,611,1,0,0,0,613,614,1,0,0,0,614,612,1,0,0,0,614,615, + 1,0,0,0,615,109,1,0,0,0,616,618,5,1,0,0,617,616,1,0,0,0,618,621,1,0,0, + 0,619,617,1,0,0,0,619,620,1,0,0,0,620,622,1,0,0,0,621,619,1,0,0,0,622, + 626,5,8,0,0,623,625,7,5,0,0,624,623,1,0,0,0,625,628,1,0,0,0,626,624,1, + 0,0,0,626,627,1,0,0,0,627,629,1,0,0,0,628,626,1,0,0,0,629,630,3,4,2,0, + 630,111,1,0,0,0,631,633,7,1,0,0,632,631,1,0,0,0,633,634,1,0,0,0,634,632, + 1,0,0,0,634,635,1,0,0,0,635,113,1,0,0,0,636,638,5,1,0,0,637,636,1,0,0, + 0,638,641,1,0,0,0,639,637,1,0,0,0,639,640,1,0,0,0,640,642,1,0,0,0,641, + 639,1,0,0,0,642,643,5,15,0,0,643,115,1,0,0,0,644,645,3,118,59,0,645,117, + 1,0,0,0,646,648,5,1,0,0,647,646,1,0,0,0,648,651,1,0,0,0,649,647,1,0,0, + 0,649,650,1,0,0,0,650,652,1,0,0,0,651,649,1,0,0,0,652,653,5,4,0,0,653, + 119,1,0,0,0,92,123,137,142,149,154,162,169,177,179,187,193,198,208,213, + 218,223,231,233,239,247,255,257,262,269,276,282,284,289,296,300,305,310, + 315,319,324,328,333,337,342,347,358,363,372,381,388,394,401,405,411,415, + 421,426,431,434,437,442,449,451,461,463,468,475,483,490,498,505,511,514, + 520,525,533,541,550,556,563,565,572,578,581,586,588,593,599,601,606,612, + 614,619,626,634,639,649 }; public static readonly ATN _ATN = diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.interp b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.interp index 639b9a581a..3458f71511 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.interp +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParser.interp @@ -88,6 +88,7 @@ rule names: file paragraph newline +commentDefinition errorString nestedIntentSection nestedIntentNameLine @@ -147,4 +148,4 @@ modelInfoDefinition atn: -[4, 1, 40, 647, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 1, 0, 4, 0, 120, 8, 0, 11, 0, 12, 0, 121, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 135, 8, 1, 1, 2, 5, 2, 138, 8, 2, 10, 2, 12, 2, 141, 9, 2, 1, 2, 1, 2, 1, 3, 4, 3, 146, 8, 3, 11, 3, 12, 3, 147, 1, 4, 1, 4, 1, 4, 1, 5, 5, 5, 154, 8, 5, 10, 5, 12, 5, 157, 9, 5, 1, 5, 1, 5, 5, 5, 161, 8, 5, 10, 5, 12, 5, 164, 9, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 5, 6, 171, 8, 6, 10, 6, 12, 6, 174, 9, 6, 1, 7, 1, 7, 1, 7, 5, 7, 179, 8, 7, 10, 7, 12, 7, 182, 9, 7, 1, 8, 4, 8, 185, 8, 8, 11, 8, 12, 8, 186, 1, 9, 5, 9, 190, 8, 9, 10, 9, 12, 9, 193, 9, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 202, 8, 11, 1, 12, 5, 12, 205, 8, 12, 10, 12, 12, 12, 208, 9, 12, 1, 12, 1, 12, 3, 12, 212, 8, 12, 1, 12, 5, 12, 215, 8, 12, 10, 12, 12, 12, 218, 9, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 5, 13, 225, 8, 13, 10, 13, 12, 13, 228, 9, 13, 1, 14, 5, 14, 231, 8, 14, 10, 14, 12, 14, 234, 9, 14, 1, 14, 1, 14, 1, 15, 5, 15, 239, 8, 15, 10, 15, 12, 15, 242, 9, 15, 1, 15, 1, 15, 1, 15, 1, 15, 4, 15, 248, 8, 15, 11, 15, 12, 15, 249, 1, 16, 5, 16, 253, 8, 16, 10, 16, 12, 16, 256, 9, 16, 1, 16, 1, 16, 5, 16, 260, 8, 16, 10, 16, 12, 16, 263, 9, 16, 1, 17, 1, 17, 1, 18, 1, 18, 3, 18, 269, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 4, 19, 275, 8, 19, 11, 19, 12, 19, 276, 1, 20, 5, 20, 280, 8, 20, 10, 20, 12, 20, 283, 9, 20, 1, 20, 1, 20, 5, 20, 287, 8, 20, 10, 20, 12, 20, 290, 9, 20, 1, 20, 3, 20, 293, 8, 20, 1, 20, 5, 20, 296, 8, 20, 10, 20, 12, 20, 299, 9, 20, 1, 20, 1, 20, 3, 20, 303, 8, 20, 1, 20, 5, 20, 306, 8, 20, 10, 20, 12, 20, 309, 9, 20, 1, 20, 3, 20, 312, 8, 20, 1, 20, 5, 20, 315, 8, 20, 10, 20, 12, 20, 318, 9, 20, 1, 20, 3, 20, 321, 8, 20, 1, 20, 5, 20, 324, 8, 20, 10, 20, 12, 20, 327, 9, 20, 1, 20, 3, 20, 330, 8, 20, 1, 20, 5, 20, 333, 8, 20, 10, 20, 12, 20, 336, 9, 20, 1, 20, 1, 20, 3, 20, 340, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 3, 24, 351, 8, 24, 1, 24, 5, 24, 354, 8, 24, 10, 24, 12, 24, 357, 9, 24, 1, 24, 1, 24, 1, 25, 1, 25, 5, 25, 363, 8, 25, 10, 25, 12, 25, 366, 9, 25, 1, 25, 1, 25, 1, 26, 1, 26, 5, 26, 372, 8, 26, 10, 26, 12, 26, 375, 9, 26, 1, 26, 1, 26, 5, 26, 379, 8, 26, 10, 26, 12, 26, 382, 9, 26, 1, 26, 5, 26, 385, 8, 26, 10, 26, 12, 26, 388, 9, 26, 1, 27, 1, 27, 5, 27, 392, 8, 27, 10, 27, 12, 27, 395, 9, 27, 1, 27, 3, 27, 398, 8, 27, 1, 28, 1, 28, 5, 28, 402, 8, 28, 10, 28, 12, 28, 405, 9, 28, 1, 28, 3, 28, 408, 8, 28, 1, 29, 1, 29, 1, 30, 1, 30, 3, 30, 414, 8, 30, 1, 31, 5, 31, 417, 8, 31, 10, 31, 12, 31, 420, 9, 31, 1, 31, 1, 31, 3, 31, 424, 8, 31, 1, 31, 3, 31, 427, 8, 31, 1, 31, 3, 31, 430, 8, 31, 1, 32, 4, 32, 433, 8, 32, 11, 32, 12, 32, 434, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 4, 33, 442, 8, 33, 11, 33, 12, 33, 443, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 4, 36, 454, 8, 36, 11, 36, 12, 36, 455, 1, 37, 5, 37, 459, 8, 37, 10, 37, 12, 37, 462, 9, 37, 1, 37, 1, 37, 5, 37, 466, 8, 37, 10, 37, 12, 37, 469, 9, 37, 1, 38, 1, 38, 1, 39, 5, 39, 474, 8, 39, 10, 39, 12, 39, 477, 9, 39, 1, 39, 1, 39, 5, 39, 481, 8, 39, 10, 39, 12, 39, 484, 9, 39, 1, 40, 1, 40, 1, 41, 5, 41, 489, 8, 41, 10, 41, 12, 41, 492, 9, 41, 1, 41, 1, 41, 5, 41, 496, 8, 41, 10, 41, 12, 41, 499, 9, 41, 1, 42, 1, 42, 1, 43, 3, 43, 504, 8, 43, 1, 43, 3, 43, 507, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 513, 8, 43, 1, 44, 5, 44, 516, 8, 44, 10, 44, 12, 44, 519, 9, 44, 1, 44, 1, 44, 1, 45, 5, 45, 524, 8, 45, 10, 45, 12, 45, 527, 9, 45, 1, 45, 1, 45, 1, 46, 5, 46, 532, 8, 46, 10, 46, 12, 46, 535, 9, 46, 1, 46, 1, 46, 1, 46, 1, 47, 5, 47, 541, 8, 47, 10, 47, 12, 47, 544, 9, 47, 1, 48, 5, 48, 547, 8, 48, 10, 48, 12, 48, 550, 9, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 556, 8, 48, 10, 48, 12, 48, 559, 9, 48, 1, 49, 1, 49, 5, 49, 563, 8, 49, 10, 49, 12, 49, 566, 9, 49, 1, 50, 4, 50, 569, 8, 50, 11, 50, 12, 50, 570, 1, 51, 3, 51, 574, 8, 51, 1, 51, 1, 51, 1, 51, 3, 51, 579, 8, 51, 3, 51, 581, 8, 51, 1, 52, 5, 52, 584, 8, 52, 10, 52, 12, 52, 587, 9, 52, 1, 52, 1, 52, 1, 52, 4, 52, 592, 8, 52, 11, 52, 12, 52, 593, 1, 53, 5, 53, 597, 8, 53, 10, 53, 12, 53, 600, 9, 53, 1, 53, 1, 53, 1, 53, 4, 53, 605, 8, 53, 11, 53, 12, 53, 606, 1, 54, 5, 54, 610, 8, 54, 10, 54, 12, 54, 613, 9, 54, 1, 54, 1, 54, 5, 54, 617, 8, 54, 10, 54, 12, 54, 620, 9, 54, 1, 54, 1, 54, 1, 55, 4, 55, 625, 8, 55, 11, 55, 12, 55, 626, 1, 56, 5, 56, 630, 8, 56, 10, 56, 12, 56, 633, 9, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 5, 58, 640, 8, 58, 10, 58, 12, 58, 643, 9, 58, 1, 58, 1, 58, 1, 58, 1, 121, 0, 59, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 0, 6, 1, 1, 2, 2, 2, 0, 1, 1, 17, 17, 2, 0, 1, 1, 31, 33, 1, 0, 26, 27, 2, 0, 1, 1, 37, 37, 2, 0, 1, 1, 33, 33, 690, 0, 119, 1, 0, 0, 0, 2, 134, 1, 0, 0, 0, 4, 139, 1, 0, 0, 0, 6, 145, 1, 0, 0, 0, 8, 149, 1, 0, 0, 0, 10, 155, 1, 0, 0, 0, 12, 167, 1, 0, 0, 0, 14, 175, 1, 0, 0, 0, 16, 184, 1, 0, 0, 0, 18, 191, 1, 0, 0, 0, 20, 197, 1, 0, 0, 0, 22, 199, 1, 0, 0, 0, 24, 206, 1, 0, 0, 0, 26, 221, 1, 0, 0, 0, 28, 232, 1, 0, 0, 0, 30, 240, 1, 0, 0, 0, 32, 254, 1, 0, 0, 0, 34, 264, 1, 0, 0, 0, 36, 266, 1, 0, 0, 0, 38, 274, 1, 0, 0, 0, 40, 281, 1, 0, 0, 0, 42, 343, 1, 0, 0, 0, 44, 345, 1, 0, 0, 0, 46, 347, 1, 0, 0, 0, 48, 350, 1, 0, 0, 0, 50, 360, 1, 0, 0, 0, 52, 369, 1, 0, 0, 0, 54, 389, 1, 0, 0, 0, 56, 399, 1, 0, 0, 0, 58, 409, 1, 0, 0, 0, 60, 411, 1, 0, 0, 0, 62, 418, 1, 0, 0, 0, 64, 432, 1, 0, 0, 0, 66, 441, 1, 0, 0, 0, 68, 445, 1, 0, 0, 0, 70, 447, 1, 0, 0, 0, 72, 453, 1, 0, 0, 0, 74, 460, 1, 0, 0, 0, 76, 470, 1, 0, 0, 0, 78, 475, 1, 0, 0, 0, 80, 485, 1, 0, 0, 0, 82, 490, 1, 0, 0, 0, 84, 500, 1, 0, 0, 0, 86, 503, 1, 0, 0, 0, 88, 517, 1, 0, 0, 0, 90, 525, 1, 0, 0, 0, 92, 533, 1, 0, 0, 0, 94, 542, 1, 0, 0, 0, 96, 548, 1, 0, 0, 0, 98, 560, 1, 0, 0, 0, 100, 568, 1, 0, 0, 0, 102, 580, 1, 0, 0, 0, 104, 585, 1, 0, 0, 0, 106, 598, 1, 0, 0, 0, 108, 611, 1, 0, 0, 0, 110, 624, 1, 0, 0, 0, 112, 631, 1, 0, 0, 0, 114, 636, 1, 0, 0, 0, 116, 641, 1, 0, 0, 0, 118, 120, 3, 2, 1, 0, 119, 118, 1, 0, 0, 0, 120, 121, 1, 0, 0, 0, 121, 122, 1, 0, 0, 0, 121, 119, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 5, 0, 0, 1, 124, 1, 1, 0, 0, 0, 125, 135, 5, 2, 0, 0, 126, 135, 3, 8, 4, 0, 127, 135, 3, 20, 10, 0, 128, 135, 3, 58, 29, 0, 129, 135, 3, 34, 17, 0, 130, 135, 3, 76, 38, 0, 131, 135, 3, 80, 40, 0, 132, 135, 3, 84, 42, 0, 133, 135, 3, 114, 57, 0, 134, 125, 1, 0, 0, 0, 134, 126, 1, 0, 0, 0, 134, 127, 1, 0, 0, 0, 134, 128, 1, 0, 0, 0, 134, 129, 1, 0, 0, 0, 134, 130, 1, 0, 0, 0, 134, 131, 1, 0, 0, 0, 134, 132, 1, 0, 0, 0, 134, 133, 1, 0, 0, 0, 135, 3, 1, 0, 0, 0, 136, 138, 5, 1, 0, 0, 137, 136, 1, 0, 0, 0, 138, 141, 1, 0, 0, 0, 139, 137, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 140, 142, 1, 0, 0, 0, 141, 139, 1, 0, 0, 0, 142, 143, 7, 0, 0, 0, 143, 5, 1, 0, 0, 0, 144, 146, 7, 1, 0, 0, 145, 144, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 7, 1, 0, 0, 0, 149, 150, 3, 10, 5, 0, 150, 151, 3, 16, 8, 0, 151, 9, 1, 0, 0, 0, 152, 154, 5, 1, 0, 0, 153, 152, 1, 0, 0, 0, 154, 157, 1, 0, 0, 0, 155, 153, 1, 0, 0, 0, 155, 156, 1, 0, 0, 0, 156, 158, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 158, 162, 5, 7, 0, 0, 159, 161, 5, 1, 0, 0, 160, 159, 1, 0, 0, 0, 161, 164, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 165, 1, 0, 0, 0, 164, 162, 1, 0, 0, 0, 165, 166, 3, 12, 6, 0, 166, 11, 1, 0, 0, 0, 167, 172, 3, 14, 7, 0, 168, 171, 5, 1, 0, 0, 169, 171, 3, 14, 7, 0, 170, 168, 1, 0, 0, 0, 170, 169, 1, 0, 0, 0, 171, 174, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 13, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 175, 180, 5, 29, 0, 0, 176, 177, 5, 30, 0, 0, 177, 179, 5, 29, 0, 0, 178, 176, 1, 0, 0, 0, 179, 182, 1, 0, 0, 0, 180, 178, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 15, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 183, 185, 3, 18, 9, 0, 184, 183, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 184, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 17, 1, 0, 0, 0, 188, 190, 5, 1, 0, 0, 189, 188, 1, 0, 0, 0, 190, 193, 1, 0, 0, 0, 191, 189, 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 194, 1, 0, 0, 0, 193, 191, 1, 0, 0, 0, 194, 195, 5, 7, 0, 0, 195, 196, 3, 20, 10, 0, 196, 19, 1, 0, 0, 0, 197, 198, 3, 22, 11, 0, 198, 21, 1, 0, 0, 0, 199, 201, 3, 24, 12, 0, 200, 202, 3, 28, 14, 0, 201, 200, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 23, 1, 0, 0, 0, 203, 205, 5, 1, 0, 0, 204, 203, 1, 0, 0, 0, 205, 208, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 209, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 209, 211, 5, 7, 0, 0, 210, 212, 5, 7, 0, 0, 211, 210, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 216, 1, 0, 0, 0, 213, 215, 5, 1, 0, 0, 214, 213, 1, 0, 0, 0, 215, 218, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 219, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 219, 220, 3, 26, 13, 0, 220, 25, 1, 0, 0, 0, 221, 226, 3, 14, 7, 0, 222, 225, 5, 1, 0, 0, 223, 225, 3, 14, 7, 0, 224, 222, 1, 0, 0, 0, 224, 223, 1, 0, 0, 0, 225, 228, 1, 0, 0, 0, 226, 224, 1, 0, 0, 0, 226, 227, 1, 0, 0, 0, 227, 27, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 229, 231, 5, 1, 0, 0, 230, 229, 1, 0, 0, 0, 231, 234, 1, 0, 0, 0, 232, 230, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 235, 1, 0, 0, 0, 234, 232, 1, 0, 0, 0, 235, 236, 3, 30, 15, 0, 236, 29, 1, 0, 0, 0, 237, 239, 5, 1, 0, 0, 238, 237, 1, 0, 0, 0, 239, 242, 1, 0, 0, 0, 240, 238, 1, 0, 0, 0, 240, 241, 1, 0, 0, 0, 241, 247, 1, 0, 0, 0, 242, 240, 1, 0, 0, 0, 243, 244, 3, 32, 16, 0, 244, 245, 3, 4, 2, 0, 245, 248, 1, 0, 0, 0, 246, 248, 3, 6, 3, 0, 247, 243, 1, 0, 0, 0, 247, 246, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 31, 1, 0, 0, 0, 251, 253, 5, 1, 0, 0, 252, 251, 1, 0, 0, 0, 253, 256, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 254, 255, 1, 0, 0, 0, 255, 257, 1, 0, 0, 0, 256, 254, 1, 0, 0, 0, 257, 261, 5, 8, 0, 0, 258, 260, 7, 2, 0, 0, 259, 258, 1, 0, 0, 0, 260, 263, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 33, 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 264, 265, 3, 36, 18, 0, 265, 35, 1, 0, 0, 0, 266, 268, 3, 40, 20, 0, 267, 269, 3, 38, 19, 0, 268, 267, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 37, 1, 0, 0, 0, 270, 271, 3, 74, 37, 0, 271, 272, 3, 4, 2, 0, 272, 275, 1, 0, 0, 0, 273, 275, 3, 6, 3, 0, 274, 270, 1, 0, 0, 0, 274, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 274, 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 39, 1, 0, 0, 0, 278, 280, 5, 1, 0, 0, 279, 278, 1, 0, 0, 0, 280, 283, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, 284, 1, 0, 0, 0, 283, 281, 1, 0, 0, 0, 284, 288, 5, 10, 0, 0, 285, 287, 5, 1, 0, 0, 286, 285, 1, 0, 0, 0, 287, 290, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 292, 1, 0, 0, 0, 290, 288, 1, 0, 0, 0, 291, 293, 3, 46, 23, 0, 292, 291, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 297, 1, 0, 0, 0, 294, 296, 5, 1, 0, 0, 295, 294, 1, 0, 0, 0, 296, 299, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 302, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 300, 303, 3, 54, 27, 0, 301, 303, 3, 56, 28, 0, 302, 300, 1, 0, 0, 0, 302, 301, 1, 0, 0, 0, 302, 303, 1, 0, 0, 0, 303, 307, 1, 0, 0, 0, 304, 306, 5, 1, 0, 0, 305, 304, 1, 0, 0, 0, 306, 309, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 310, 312, 3, 48, 24, 0, 311, 310, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 316, 1, 0, 0, 0, 313, 315, 5, 1, 0, 0, 314, 313, 1, 0, 0, 0, 315, 318, 1, 0, 0, 0, 316, 314, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 320, 1, 0, 0, 0, 318, 316, 1, 0, 0, 0, 319, 321, 3, 50, 25, 0, 320, 319, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 325, 1, 0, 0, 0, 322, 324, 5, 1, 0, 0, 323, 322, 1, 0, 0, 0, 324, 327, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 329, 1, 0, 0, 0, 327, 325, 1, 0, 0, 0, 328, 330, 5, 18, 0, 0, 329, 328, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 334, 1, 0, 0, 0, 331, 333, 5, 1, 0, 0, 332, 331, 1, 0, 0, 0, 333, 336, 1, 0, 0, 0, 334, 332, 1, 0, 0, 0, 334, 335, 1, 0, 0, 0, 335, 339, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 337, 340, 3, 42, 21, 0, 338, 340, 3, 44, 22, 0, 339, 337, 1, 0, 0, 0, 339, 338, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 342, 3, 4, 2, 0, 342, 41, 1, 0, 0, 0, 343, 344, 5, 24, 0, 0, 344, 43, 1, 0, 0, 0, 345, 346, 5, 25, 0, 0, 346, 45, 1, 0, 0, 0, 347, 348, 5, 22, 0, 0, 348, 47, 1, 0, 0, 0, 349, 351, 5, 20, 0, 0, 350, 349, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 355, 1, 0, 0, 0, 352, 354, 5, 1, 0, 0, 353, 352, 1, 0, 0, 0, 354, 357, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 358, 1, 0, 0, 0, 357, 355, 1, 0, 0, 0, 358, 359, 3, 52, 26, 0, 359, 49, 1, 0, 0, 0, 360, 364, 5, 21, 0, 0, 361, 363, 5, 1, 0, 0, 362, 361, 1, 0, 0, 0, 363, 366, 1, 0, 0, 0, 364, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 1, 0, 0, 0, 366, 364, 1, 0, 0, 0, 367, 368, 3, 52, 26, 0, 368, 51, 1, 0, 0, 0, 369, 386, 7, 3, 0, 0, 370, 372, 5, 1, 0, 0, 371, 370, 1, 0, 0, 0, 372, 375, 1, 0, 0, 0, 373, 371, 1, 0, 0, 0, 373, 374, 1, 0, 0, 0, 374, 376, 1, 0, 0, 0, 375, 373, 1, 0, 0, 0, 376, 380, 5, 19, 0, 0, 377, 379, 5, 1, 0, 0, 378, 377, 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 383, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 383, 385, 7, 3, 0, 0, 384, 373, 1, 0, 0, 0, 385, 388, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 53, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 389, 397, 5, 26, 0, 0, 390, 392, 5, 1, 0, 0, 391, 390, 1, 0, 0, 0, 392, 395, 1, 0, 0, 0, 393, 391, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 396, 1, 0, 0, 0, 395, 393, 1, 0, 0, 0, 396, 398, 5, 23, 0, 0, 397, 393, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 55, 1, 0, 0, 0, 399, 407, 5, 27, 0, 0, 400, 402, 5, 1, 0, 0, 401, 400, 1, 0, 0, 0, 402, 405, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 406, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 406, 408, 5, 23, 0, 0, 407, 403, 1, 0, 0, 0, 407, 408, 1, 0, 0, 0, 408, 57, 1, 0, 0, 0, 409, 410, 3, 60, 30, 0, 410, 59, 1, 0, 0, 0, 411, 413, 3, 62, 31, 0, 412, 414, 3, 72, 36, 0, 413, 412, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 61, 1, 0, 0, 0, 415, 417, 5, 1, 0, 0, 416, 415, 1, 0, 0, 0, 417, 420, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 421, 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 421, 423, 5, 9, 0, 0, 422, 424, 3, 64, 32, 0, 423, 422, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 426, 1, 0, 0, 0, 425, 427, 5, 38, 0, 0, 426, 425, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 429, 1, 0, 0, 0, 428, 430, 3, 66, 33, 0, 429, 428, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 63, 1, 0, 0, 0, 431, 433, 7, 4, 0, 0, 432, 431, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 432, 1, 0, 0, 0, 434, 435, 1, 0, 0, 0, 435, 65, 1, 0, 0, 0, 436, 442, 3, 68, 34, 0, 437, 442, 3, 70, 35, 0, 438, 442, 5, 37, 0, 0, 439, 442, 5, 38, 0, 0, 440, 442, 5, 1, 0, 0, 441, 436, 1, 0, 0, 0, 441, 437, 1, 0, 0, 0, 441, 438, 1, 0, 0, 0, 441, 439, 1, 0, 0, 0, 441, 440, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, 441, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 67, 1, 0, 0, 0, 445, 446, 5, 35, 0, 0, 446, 69, 1, 0, 0, 0, 447, 448, 5, 36, 0, 0, 448, 71, 1, 0, 0, 0, 449, 450, 3, 74, 37, 0, 450, 451, 3, 4, 2, 0, 451, 454, 1, 0, 0, 0, 452, 454, 3, 6, 3, 0, 453, 449, 1, 0, 0, 0, 453, 452, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 73, 1, 0, 0, 0, 457, 459, 5, 1, 0, 0, 458, 457, 1, 0, 0, 0, 459, 462, 1, 0, 0, 0, 460, 458, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 463, 1, 0, 0, 0, 462, 460, 1, 0, 0, 0, 463, 467, 5, 8, 0, 0, 464, 466, 7, 2, 0, 0, 465, 464, 1, 0, 0, 0, 466, 469, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 75, 1, 0, 0, 0, 469, 467, 1, 0, 0, 0, 470, 471, 3, 78, 39, 0, 471, 77, 1, 0, 0, 0, 472, 474, 5, 1, 0, 0, 473, 472, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0, 475, 473, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 478, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 478, 482, 5, 11, 0, 0, 479, 481, 5, 1, 0, 0, 480, 479, 1, 0, 0, 0, 481, 484, 1, 0, 0, 0, 482, 480, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 79, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 485, 486, 3, 82, 41, 0, 486, 81, 1, 0, 0, 0, 487, 489, 5, 1, 0, 0, 488, 487, 1, 0, 0, 0, 489, 492, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 493, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 493, 497, 5, 12, 0, 0, 494, 496, 5, 1, 0, 0, 495, 494, 1, 0, 0, 0, 496, 499, 1, 0, 0, 0, 497, 495, 1, 0, 0, 0, 497, 498, 1, 0, 0, 0, 498, 83, 1, 0, 0, 0, 499, 497, 1, 0, 0, 0, 500, 501, 3, 86, 43, 0, 501, 85, 1, 0, 0, 0, 502, 504, 3, 88, 44, 0, 503, 502, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 506, 1, 0, 0, 0, 505, 507, 3, 90, 45, 0, 506, 505, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 509, 3, 92, 46, 0, 509, 510, 3, 96, 48, 0, 510, 512, 3, 102, 51, 0, 511, 513, 3, 106, 53, 0, 512, 511, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 87, 1, 0, 0, 0, 514, 516, 5, 1, 0, 0, 515, 514, 1, 0, 0, 0, 516, 519, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 520, 1, 0, 0, 0, 519, 517, 1, 0, 0, 0, 520, 521, 5, 3, 0, 0, 521, 89, 1, 0, 0, 0, 522, 524, 5, 1, 0, 0, 523, 522, 1, 0, 0, 0, 524, 527, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 528, 1, 0, 0, 0, 527, 525, 1, 0, 0, 0, 528, 529, 5, 14, 0, 0, 529, 91, 1, 0, 0, 0, 530, 532, 5, 1, 0, 0, 531, 530, 1, 0, 0, 0, 532, 535, 1, 0, 0, 0, 533, 531, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 536, 1, 0, 0, 0, 535, 533, 1, 0, 0, 0, 536, 537, 5, 6, 0, 0, 537, 538, 3, 94, 47, 0, 538, 93, 1, 0, 0, 0, 539, 541, 5, 40, 0, 0, 540, 539, 1, 0, 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 95, 1, 0, 0, 0, 544, 542, 1, 0, 0, 0, 545, 547, 5, 1, 0, 0, 546, 545, 1, 0, 0, 0, 547, 550, 1, 0, 0, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 557, 1, 0, 0, 0, 550, 548, 1, 0, 0, 0, 551, 552, 3, 98, 49, 0, 552, 553, 3, 4, 2, 0, 553, 556, 1, 0, 0, 0, 554, 556, 3, 100, 50, 0, 555, 551, 1, 0, 0, 0, 555, 554, 1, 0, 0, 0, 556, 559, 1, 0, 0, 0, 557, 555, 1, 0, 0, 0, 557, 558, 1, 0, 0, 0, 558, 97, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 560, 564, 5, 8, 0, 0, 561, 563, 7, 5, 0, 0, 562, 561, 1, 0, 0, 0, 563, 566, 1, 0, 0, 0, 564, 562, 1, 0, 0, 0, 564, 565, 1, 0, 0, 0, 565, 99, 1, 0, 0, 0, 566, 564, 1, 0, 0, 0, 567, 569, 7, 1, 0, 0, 568, 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 568, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 101, 1, 0, 0, 0, 572, 574, 3, 104, 52, 0, 573, 572, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 581, 3, 112, 56, 0, 576, 578, 3, 112, 56, 0, 577, 579, 3, 104, 52, 0, 578, 577, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 581, 1, 0, 0, 0, 580, 573, 1, 0, 0, 0, 580, 576, 1, 0, 0, 0, 581, 103, 1, 0, 0, 0, 582, 584, 5, 1, 0, 0, 583, 582, 1, 0, 0, 0, 584, 587, 1, 0, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 588, 1, 0, 0, 0, 587, 585, 1, 0, 0, 0, 588, 591, 5, 13, 0, 0, 589, 592, 3, 108, 54, 0, 590, 592, 3, 110, 55, 0, 591, 589, 1, 0, 0, 0, 591, 590, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 105, 1, 0, 0, 0, 595, 597, 5, 1, 0, 0, 596, 595, 1, 0, 0, 0, 597, 600, 1, 0, 0, 0, 598, 596, 1, 0, 0, 0, 598, 599, 1, 0, 0, 0, 599, 601, 1, 0, 0, 0, 600, 598, 1, 0, 0, 0, 601, 604, 5, 16, 0, 0, 602, 605, 3, 108, 54, 0, 603, 605, 3, 110, 55, 0, 604, 602, 1, 0, 0, 0, 604, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 107, 1, 0, 0, 0, 608, 610, 5, 1, 0, 0, 609, 608, 1, 0, 0, 0, 610, 613, 1, 0, 0, 0, 611, 609, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 614, 1, 0, 0, 0, 613, 611, 1, 0, 0, 0, 614, 618, 5, 8, 0, 0, 615, 617, 7, 5, 0, 0, 616, 615, 1, 0, 0, 0, 617, 620, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 621, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 621, 622, 3, 4, 2, 0, 622, 109, 1, 0, 0, 0, 623, 625, 7, 1, 0, 0, 624, 623, 1, 0, 0, 0, 625, 626, 1, 0, 0, 0, 626, 624, 1, 0, 0, 0, 626, 627, 1, 0, 0, 0, 627, 111, 1, 0, 0, 0, 628, 630, 5, 1, 0, 0, 629, 628, 1, 0, 0, 0, 630, 633, 1, 0, 0, 0, 631, 629, 1, 0, 0, 0, 631, 632, 1, 0, 0, 0, 632, 634, 1, 0, 0, 0, 633, 631, 1, 0, 0, 0, 634, 635, 5, 15, 0, 0, 635, 113, 1, 0, 0, 0, 636, 637, 3, 116, 58, 0, 637, 115, 1, 0, 0, 0, 638, 640, 5, 1, 0, 0, 639, 638, 1, 0, 0, 0, 640, 643, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 644, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 644, 645, 5, 4, 0, 0, 645, 117, 1, 0, 0, 0, 91, 121, 134, 139, 147, 155, 162, 170, 172, 180, 186, 191, 201, 206, 211, 216, 224, 226, 232, 240, 247, 249, 254, 261, 268, 274, 276, 281, 288, 292, 297, 302, 307, 311, 316, 320, 325, 329, 334, 339, 350, 355, 364, 373, 380, 386, 393, 397, 403, 407, 413, 418, 423, 426, 429, 434, 441, 443, 453, 455, 460, 467, 475, 482, 490, 497, 503, 506, 512, 517, 525, 533, 542, 548, 555, 557, 564, 570, 573, 578, 580, 585, 591, 593, 598, 604, 606, 611, 618, 626, 631, 641] \ No newline at end of file +[4, 1, 40, 655, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 1, 0, 4, 0, 122, 8, 0, 11, 0, 12, 0, 123, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 138, 8, 1, 1, 2, 5, 2, 141, 8, 2, 10, 2, 12, 2, 144, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 3, 3, 150, 8, 3, 1, 4, 4, 4, 153, 8, 4, 11, 4, 12, 4, 154, 1, 5, 1, 5, 1, 5, 1, 6, 5, 6, 161, 8, 6, 10, 6, 12, 6, 164, 9, 6, 1, 6, 1, 6, 5, 6, 168, 8, 6, 10, 6, 12, 6, 171, 9, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 5, 7, 178, 8, 7, 10, 7, 12, 7, 181, 9, 7, 1, 8, 1, 8, 1, 8, 5, 8, 186, 8, 8, 10, 8, 12, 8, 189, 9, 8, 1, 9, 4, 9, 192, 8, 9, 11, 9, 12, 9, 193, 1, 10, 5, 10, 197, 8, 10, 10, 10, 12, 10, 200, 9, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 3, 12, 209, 8, 12, 1, 13, 5, 13, 212, 8, 13, 10, 13, 12, 13, 215, 9, 13, 1, 13, 1, 13, 3, 13, 219, 8, 13, 1, 13, 5, 13, 222, 8, 13, 10, 13, 12, 13, 225, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 5, 14, 232, 8, 14, 10, 14, 12, 14, 235, 9, 14, 1, 15, 5, 15, 238, 8, 15, 10, 15, 12, 15, 241, 9, 15, 1, 15, 1, 15, 1, 16, 5, 16, 246, 8, 16, 10, 16, 12, 16, 249, 9, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 4, 16, 256, 8, 16, 11, 16, 12, 16, 257, 1, 17, 5, 17, 261, 8, 17, 10, 17, 12, 17, 264, 9, 17, 1, 17, 1, 17, 5, 17, 268, 8, 17, 10, 17, 12, 17, 271, 9, 17, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 277, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 4, 20, 283, 8, 20, 11, 20, 12, 20, 284, 1, 21, 5, 21, 288, 8, 21, 10, 21, 12, 21, 291, 9, 21, 1, 21, 1, 21, 5, 21, 295, 8, 21, 10, 21, 12, 21, 298, 9, 21, 1, 21, 3, 21, 301, 8, 21, 1, 21, 5, 21, 304, 8, 21, 10, 21, 12, 21, 307, 9, 21, 1, 21, 1, 21, 3, 21, 311, 8, 21, 1, 21, 5, 21, 314, 8, 21, 10, 21, 12, 21, 317, 9, 21, 1, 21, 3, 21, 320, 8, 21, 1, 21, 5, 21, 323, 8, 21, 10, 21, 12, 21, 326, 9, 21, 1, 21, 3, 21, 329, 8, 21, 1, 21, 5, 21, 332, 8, 21, 10, 21, 12, 21, 335, 9, 21, 1, 21, 3, 21, 338, 8, 21, 1, 21, 5, 21, 341, 8, 21, 10, 21, 12, 21, 344, 9, 21, 1, 21, 1, 21, 3, 21, 348, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 3, 25, 359, 8, 25, 1, 25, 5, 25, 362, 8, 25, 10, 25, 12, 25, 365, 9, 25, 1, 25, 1, 25, 1, 26, 1, 26, 5, 26, 371, 8, 26, 10, 26, 12, 26, 374, 9, 26, 1, 26, 1, 26, 1, 27, 1, 27, 5, 27, 380, 8, 27, 10, 27, 12, 27, 383, 9, 27, 1, 27, 1, 27, 5, 27, 387, 8, 27, 10, 27, 12, 27, 390, 9, 27, 1, 27, 5, 27, 393, 8, 27, 10, 27, 12, 27, 396, 9, 27, 1, 28, 1, 28, 5, 28, 400, 8, 28, 10, 28, 12, 28, 403, 9, 28, 1, 28, 3, 28, 406, 8, 28, 1, 29, 1, 29, 5, 29, 410, 8, 29, 10, 29, 12, 29, 413, 9, 29, 1, 29, 3, 29, 416, 8, 29, 1, 30, 1, 30, 1, 31, 1, 31, 3, 31, 422, 8, 31, 1, 32, 5, 32, 425, 8, 32, 10, 32, 12, 32, 428, 9, 32, 1, 32, 1, 32, 3, 32, 432, 8, 32, 1, 32, 3, 32, 435, 8, 32, 1, 32, 3, 32, 438, 8, 32, 1, 33, 4, 33, 441, 8, 33, 11, 33, 12, 33, 442, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 4, 34, 450, 8, 34, 11, 34, 12, 34, 451, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 4, 37, 462, 8, 37, 11, 37, 12, 37, 463, 1, 38, 5, 38, 467, 8, 38, 10, 38, 12, 38, 470, 9, 38, 1, 38, 1, 38, 5, 38, 474, 8, 38, 10, 38, 12, 38, 477, 9, 38, 1, 39, 1, 39, 1, 40, 5, 40, 482, 8, 40, 10, 40, 12, 40, 485, 9, 40, 1, 40, 1, 40, 5, 40, 489, 8, 40, 10, 40, 12, 40, 492, 9, 40, 1, 41, 1, 41, 1, 42, 5, 42, 497, 8, 42, 10, 42, 12, 42, 500, 9, 42, 1, 42, 1, 42, 5, 42, 504, 8, 42, 10, 42, 12, 42, 507, 9, 42, 1, 43, 1, 43, 1, 44, 3, 44, 512, 8, 44, 1, 44, 3, 44, 515, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 521, 8, 44, 1, 45, 5, 45, 524, 8, 45, 10, 45, 12, 45, 527, 9, 45, 1, 45, 1, 45, 1, 46, 5, 46, 532, 8, 46, 10, 46, 12, 46, 535, 9, 46, 1, 46, 1, 46, 1, 47, 5, 47, 540, 8, 47, 10, 47, 12, 47, 543, 9, 47, 1, 47, 1, 47, 1, 47, 1, 48, 5, 48, 549, 8, 48, 10, 48, 12, 48, 552, 9, 48, 1, 49, 5, 49, 555, 8, 49, 10, 49, 12, 49, 558, 9, 49, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 564, 8, 49, 10, 49, 12, 49, 567, 9, 49, 1, 50, 1, 50, 5, 50, 571, 8, 50, 10, 50, 12, 50, 574, 9, 50, 1, 51, 4, 51, 577, 8, 51, 11, 51, 12, 51, 578, 1, 52, 3, 52, 582, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 587, 8, 52, 3, 52, 589, 8, 52, 1, 53, 5, 53, 592, 8, 53, 10, 53, 12, 53, 595, 9, 53, 1, 53, 1, 53, 1, 53, 4, 53, 600, 8, 53, 11, 53, 12, 53, 601, 1, 54, 5, 54, 605, 8, 54, 10, 54, 12, 54, 608, 9, 54, 1, 54, 1, 54, 1, 54, 4, 54, 613, 8, 54, 11, 54, 12, 54, 614, 1, 55, 5, 55, 618, 8, 55, 10, 55, 12, 55, 621, 9, 55, 1, 55, 1, 55, 5, 55, 625, 8, 55, 10, 55, 12, 55, 628, 9, 55, 1, 55, 1, 55, 1, 56, 4, 56, 633, 8, 56, 11, 56, 12, 56, 634, 1, 57, 5, 57, 638, 8, 57, 10, 57, 12, 57, 641, 9, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 5, 59, 648, 8, 59, 10, 59, 12, 59, 651, 9, 59, 1, 59, 1, 59, 1, 59, 1, 123, 0, 60, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 0, 6, 1, 1, 2, 2, 2, 0, 1, 1, 17, 17, 2, 0, 1, 1, 31, 33, 1, 0, 26, 27, 2, 0, 1, 1, 37, 37, 2, 0, 1, 1, 33, 33, 700, 0, 121, 1, 0, 0, 0, 2, 137, 1, 0, 0, 0, 4, 142, 1, 0, 0, 0, 6, 147, 1, 0, 0, 0, 8, 152, 1, 0, 0, 0, 10, 156, 1, 0, 0, 0, 12, 162, 1, 0, 0, 0, 14, 174, 1, 0, 0, 0, 16, 182, 1, 0, 0, 0, 18, 191, 1, 0, 0, 0, 20, 198, 1, 0, 0, 0, 22, 204, 1, 0, 0, 0, 24, 206, 1, 0, 0, 0, 26, 213, 1, 0, 0, 0, 28, 228, 1, 0, 0, 0, 30, 239, 1, 0, 0, 0, 32, 247, 1, 0, 0, 0, 34, 262, 1, 0, 0, 0, 36, 272, 1, 0, 0, 0, 38, 274, 1, 0, 0, 0, 40, 282, 1, 0, 0, 0, 42, 289, 1, 0, 0, 0, 44, 351, 1, 0, 0, 0, 46, 353, 1, 0, 0, 0, 48, 355, 1, 0, 0, 0, 50, 358, 1, 0, 0, 0, 52, 368, 1, 0, 0, 0, 54, 377, 1, 0, 0, 0, 56, 397, 1, 0, 0, 0, 58, 407, 1, 0, 0, 0, 60, 417, 1, 0, 0, 0, 62, 419, 1, 0, 0, 0, 64, 426, 1, 0, 0, 0, 66, 440, 1, 0, 0, 0, 68, 449, 1, 0, 0, 0, 70, 453, 1, 0, 0, 0, 72, 455, 1, 0, 0, 0, 74, 461, 1, 0, 0, 0, 76, 468, 1, 0, 0, 0, 78, 478, 1, 0, 0, 0, 80, 483, 1, 0, 0, 0, 82, 493, 1, 0, 0, 0, 84, 498, 1, 0, 0, 0, 86, 508, 1, 0, 0, 0, 88, 511, 1, 0, 0, 0, 90, 525, 1, 0, 0, 0, 92, 533, 1, 0, 0, 0, 94, 541, 1, 0, 0, 0, 96, 550, 1, 0, 0, 0, 98, 556, 1, 0, 0, 0, 100, 568, 1, 0, 0, 0, 102, 576, 1, 0, 0, 0, 104, 588, 1, 0, 0, 0, 106, 593, 1, 0, 0, 0, 108, 606, 1, 0, 0, 0, 110, 619, 1, 0, 0, 0, 112, 632, 1, 0, 0, 0, 114, 639, 1, 0, 0, 0, 116, 644, 1, 0, 0, 0, 118, 649, 1, 0, 0, 0, 120, 122, 3, 2, 1, 0, 121, 120, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 1, 0, 0, 0, 123, 121, 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 126, 5, 0, 0, 1, 126, 1, 1, 0, 0, 0, 127, 138, 5, 2, 0, 0, 128, 138, 3, 10, 5, 0, 129, 138, 3, 22, 11, 0, 130, 138, 3, 60, 30, 0, 131, 138, 3, 36, 18, 0, 132, 138, 3, 78, 39, 0, 133, 138, 3, 82, 41, 0, 134, 138, 3, 86, 43, 0, 135, 138, 3, 116, 58, 0, 136, 138, 3, 6, 3, 0, 137, 127, 1, 0, 0, 0, 137, 128, 1, 0, 0, 0, 137, 129, 1, 0, 0, 0, 137, 130, 1, 0, 0, 0, 137, 131, 1, 0, 0, 0, 137, 132, 1, 0, 0, 0, 137, 133, 1, 0, 0, 0, 137, 134, 1, 0, 0, 0, 137, 135, 1, 0, 0, 0, 137, 136, 1, 0, 0, 0, 138, 3, 1, 0, 0, 0, 139, 141, 5, 1, 0, 0, 140, 139, 1, 0, 0, 0, 141, 144, 1, 0, 0, 0, 142, 140, 1, 0, 0, 0, 142, 143, 1, 0, 0, 0, 143, 145, 1, 0, 0, 0, 144, 142, 1, 0, 0, 0, 145, 146, 7, 0, 0, 0, 146, 5, 1, 0, 0, 0, 147, 149, 5, 5, 0, 0, 148, 150, 5, 2, 0, 0, 149, 148, 1, 0, 0, 0, 149, 150, 1, 0, 0, 0, 150, 7, 1, 0, 0, 0, 151, 153, 7, 1, 0, 0, 152, 151, 1, 0, 0, 0, 153, 154, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 154, 155, 1, 0, 0, 0, 155, 9, 1, 0, 0, 0, 156, 157, 3, 12, 6, 0, 157, 158, 3, 18, 9, 0, 158, 11, 1, 0, 0, 0, 159, 161, 5, 1, 0, 0, 160, 159, 1, 0, 0, 0, 161, 164, 1, 0, 0, 0, 162, 160, 1, 0, 0, 0, 162, 163, 1, 0, 0, 0, 163, 165, 1, 0, 0, 0, 164, 162, 1, 0, 0, 0, 165, 169, 5, 7, 0, 0, 166, 168, 5, 1, 0, 0, 167, 166, 1, 0, 0, 0, 168, 171, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 172, 1, 0, 0, 0, 171, 169, 1, 0, 0, 0, 172, 173, 3, 14, 7, 0, 173, 13, 1, 0, 0, 0, 174, 179, 3, 16, 8, 0, 175, 178, 5, 1, 0, 0, 176, 178, 3, 16, 8, 0, 177, 175, 1, 0, 0, 0, 177, 176, 1, 0, 0, 0, 178, 181, 1, 0, 0, 0, 179, 177, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 15, 1, 0, 0, 0, 181, 179, 1, 0, 0, 0, 182, 187, 5, 29, 0, 0, 183, 184, 5, 30, 0, 0, 184, 186, 5, 29, 0, 0, 185, 183, 1, 0, 0, 0, 186, 189, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 17, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 190, 192, 3, 20, 10, 0, 191, 190, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 191, 1, 0, 0, 0, 193, 194, 1, 0, 0, 0, 194, 19, 1, 0, 0, 0, 195, 197, 5, 1, 0, 0, 196, 195, 1, 0, 0, 0, 197, 200, 1, 0, 0, 0, 198, 196, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, 199, 201, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 201, 202, 5, 7, 0, 0, 202, 203, 3, 22, 11, 0, 203, 21, 1, 0, 0, 0, 204, 205, 3, 24, 12, 0, 205, 23, 1, 0, 0, 0, 206, 208, 3, 26, 13, 0, 207, 209, 3, 30, 15, 0, 208, 207, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 25, 1, 0, 0, 0, 210, 212, 5, 1, 0, 0, 211, 210, 1, 0, 0, 0, 212, 215, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 216, 1, 0, 0, 0, 215, 213, 1, 0, 0, 0, 216, 218, 5, 7, 0, 0, 217, 219, 5, 7, 0, 0, 218, 217, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 223, 1, 0, 0, 0, 220, 222, 5, 1, 0, 0, 221, 220, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 226, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 227, 3, 28, 14, 0, 227, 27, 1, 0, 0, 0, 228, 233, 3, 16, 8, 0, 229, 232, 5, 1, 0, 0, 230, 232, 3, 16, 8, 0, 231, 229, 1, 0, 0, 0, 231, 230, 1, 0, 0, 0, 232, 235, 1, 0, 0, 0, 233, 231, 1, 0, 0, 0, 233, 234, 1, 0, 0, 0, 234, 29, 1, 0, 0, 0, 235, 233, 1, 0, 0, 0, 236, 238, 5, 1, 0, 0, 237, 236, 1, 0, 0, 0, 238, 241, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 242, 1, 0, 0, 0, 241, 239, 1, 0, 0, 0, 242, 243, 3, 32, 16, 0, 243, 31, 1, 0, 0, 0, 244, 246, 5, 1, 0, 0, 245, 244, 1, 0, 0, 0, 246, 249, 1, 0, 0, 0, 247, 245, 1, 0, 0, 0, 247, 248, 1, 0, 0, 0, 248, 255, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 250, 251, 3, 34, 17, 0, 251, 252, 3, 4, 2, 0, 252, 256, 1, 0, 0, 0, 253, 256, 3, 8, 4, 0, 254, 256, 3, 6, 3, 0, 255, 250, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 255, 254, 1, 0, 0, 0, 256, 257, 1, 0, 0, 0, 257, 255, 1, 0, 0, 0, 257, 258, 1, 0, 0, 0, 258, 33, 1, 0, 0, 0, 259, 261, 5, 1, 0, 0, 260, 259, 1, 0, 0, 0, 261, 264, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 265, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 265, 269, 5, 8, 0, 0, 266, 268, 7, 2, 0, 0, 267, 266, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 35, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 272, 273, 3, 38, 19, 0, 273, 37, 1, 0, 0, 0, 274, 276, 3, 42, 21, 0, 275, 277, 3, 40, 20, 0, 276, 275, 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 39, 1, 0, 0, 0, 278, 279, 3, 76, 38, 0, 279, 280, 3, 4, 2, 0, 280, 283, 1, 0, 0, 0, 281, 283, 3, 8, 4, 0, 282, 278, 1, 0, 0, 0, 282, 281, 1, 0, 0, 0, 283, 284, 1, 0, 0, 0, 284, 282, 1, 0, 0, 0, 284, 285, 1, 0, 0, 0, 285, 41, 1, 0, 0, 0, 286, 288, 5, 1, 0, 0, 287, 286, 1, 0, 0, 0, 288, 291, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 292, 1, 0, 0, 0, 291, 289, 1, 0, 0, 0, 292, 296, 5, 10, 0, 0, 293, 295, 5, 1, 0, 0, 294, 293, 1, 0, 0, 0, 295, 298, 1, 0, 0, 0, 296, 294, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 300, 1, 0, 0, 0, 298, 296, 1, 0, 0, 0, 299, 301, 3, 48, 24, 0, 300, 299, 1, 0, 0, 0, 300, 301, 1, 0, 0, 0, 301, 305, 1, 0, 0, 0, 302, 304, 5, 1, 0, 0, 303, 302, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 310, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 311, 3, 56, 28, 0, 309, 311, 3, 58, 29, 0, 310, 308, 1, 0, 0, 0, 310, 309, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 315, 1, 0, 0, 0, 312, 314, 5, 1, 0, 0, 313, 312, 1, 0, 0, 0, 314, 317, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 320, 3, 50, 25, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 324, 1, 0, 0, 0, 321, 323, 5, 1, 0, 0, 322, 321, 1, 0, 0, 0, 323, 326, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 328, 1, 0, 0, 0, 326, 324, 1, 0, 0, 0, 327, 329, 3, 52, 26, 0, 328, 327, 1, 0, 0, 0, 328, 329, 1, 0, 0, 0, 329, 333, 1, 0, 0, 0, 330, 332, 5, 1, 0, 0, 331, 330, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 337, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 338, 5, 18, 0, 0, 337, 336, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 342, 1, 0, 0, 0, 339, 341, 5, 1, 0, 0, 340, 339, 1, 0, 0, 0, 341, 344, 1, 0, 0, 0, 342, 340, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 347, 1, 0, 0, 0, 344, 342, 1, 0, 0, 0, 345, 348, 3, 44, 22, 0, 346, 348, 3, 46, 23, 0, 347, 345, 1, 0, 0, 0, 347, 346, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 350, 3, 4, 2, 0, 350, 43, 1, 0, 0, 0, 351, 352, 5, 24, 0, 0, 352, 45, 1, 0, 0, 0, 353, 354, 5, 25, 0, 0, 354, 47, 1, 0, 0, 0, 355, 356, 5, 22, 0, 0, 356, 49, 1, 0, 0, 0, 357, 359, 5, 20, 0, 0, 358, 357, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 363, 1, 0, 0, 0, 360, 362, 5, 1, 0, 0, 361, 360, 1, 0, 0, 0, 362, 365, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 363, 1, 0, 0, 0, 366, 367, 3, 54, 27, 0, 367, 51, 1, 0, 0, 0, 368, 372, 5, 21, 0, 0, 369, 371, 5, 1, 0, 0, 370, 369, 1, 0, 0, 0, 371, 374, 1, 0, 0, 0, 372, 370, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 375, 1, 0, 0, 0, 374, 372, 1, 0, 0, 0, 375, 376, 3, 54, 27, 0, 376, 53, 1, 0, 0, 0, 377, 394, 7, 3, 0, 0, 378, 380, 5, 1, 0, 0, 379, 378, 1, 0, 0, 0, 380, 383, 1, 0, 0, 0, 381, 379, 1, 0, 0, 0, 381, 382, 1, 0, 0, 0, 382, 384, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 384, 388, 5, 19, 0, 0, 385, 387, 5, 1, 0, 0, 386, 385, 1, 0, 0, 0, 387, 390, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 391, 1, 0, 0, 0, 390, 388, 1, 0, 0, 0, 391, 393, 7, 3, 0, 0, 392, 381, 1, 0, 0, 0, 393, 396, 1, 0, 0, 0, 394, 392, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 55, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 397, 405, 5, 26, 0, 0, 398, 400, 5, 1, 0, 0, 399, 398, 1, 0, 0, 0, 400, 403, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 404, 1, 0, 0, 0, 403, 401, 1, 0, 0, 0, 404, 406, 5, 23, 0, 0, 405, 401, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 57, 1, 0, 0, 0, 407, 415, 5, 27, 0, 0, 408, 410, 5, 1, 0, 0, 409, 408, 1, 0, 0, 0, 410, 413, 1, 0, 0, 0, 411, 409, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 414, 1, 0, 0, 0, 413, 411, 1, 0, 0, 0, 414, 416, 5, 23, 0, 0, 415, 411, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 59, 1, 0, 0, 0, 417, 418, 3, 62, 31, 0, 418, 61, 1, 0, 0, 0, 419, 421, 3, 64, 32, 0, 420, 422, 3, 74, 37, 0, 421, 420, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 63, 1, 0, 0, 0, 423, 425, 5, 1, 0, 0, 424, 423, 1, 0, 0, 0, 425, 428, 1, 0, 0, 0, 426, 424, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 429, 1, 0, 0, 0, 428, 426, 1, 0, 0, 0, 429, 431, 5, 9, 0, 0, 430, 432, 3, 66, 33, 0, 431, 430, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 434, 1, 0, 0, 0, 433, 435, 5, 38, 0, 0, 434, 433, 1, 0, 0, 0, 434, 435, 1, 0, 0, 0, 435, 437, 1, 0, 0, 0, 436, 438, 3, 68, 34, 0, 437, 436, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 65, 1, 0, 0, 0, 439, 441, 7, 4, 0, 0, 440, 439, 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 440, 1, 0, 0, 0, 442, 443, 1, 0, 0, 0, 443, 67, 1, 0, 0, 0, 444, 450, 3, 70, 35, 0, 445, 450, 3, 72, 36, 0, 446, 450, 5, 37, 0, 0, 447, 450, 5, 38, 0, 0, 448, 450, 5, 1, 0, 0, 449, 444, 1, 0, 0, 0, 449, 445, 1, 0, 0, 0, 449, 446, 1, 0, 0, 0, 449, 447, 1, 0, 0, 0, 449, 448, 1, 0, 0, 0, 450, 451, 1, 0, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 69, 1, 0, 0, 0, 453, 454, 5, 35, 0, 0, 454, 71, 1, 0, 0, 0, 455, 456, 5, 36, 0, 0, 456, 73, 1, 0, 0, 0, 457, 458, 3, 76, 38, 0, 458, 459, 3, 4, 2, 0, 459, 462, 1, 0, 0, 0, 460, 462, 3, 8, 4, 0, 461, 457, 1, 0, 0, 0, 461, 460, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 461, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 75, 1, 0, 0, 0, 465, 467, 5, 1, 0, 0, 466, 465, 1, 0, 0, 0, 467, 470, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 471, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 471, 475, 5, 8, 0, 0, 472, 474, 7, 2, 0, 0, 473, 472, 1, 0, 0, 0, 474, 477, 1, 0, 0, 0, 475, 473, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 77, 1, 0, 0, 0, 477, 475, 1, 0, 0, 0, 478, 479, 3, 80, 40, 0, 479, 79, 1, 0, 0, 0, 480, 482, 5, 1, 0, 0, 481, 480, 1, 0, 0, 0, 482, 485, 1, 0, 0, 0, 483, 481, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 486, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 486, 490, 5, 11, 0, 0, 487, 489, 5, 1, 0, 0, 488, 487, 1, 0, 0, 0, 489, 492, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 81, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 493, 494, 3, 84, 42, 0, 494, 83, 1, 0, 0, 0, 495, 497, 5, 1, 0, 0, 496, 495, 1, 0, 0, 0, 497, 500, 1, 0, 0, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 501, 1, 0, 0, 0, 500, 498, 1, 0, 0, 0, 501, 505, 5, 12, 0, 0, 502, 504, 5, 1, 0, 0, 503, 502, 1, 0, 0, 0, 504, 507, 1, 0, 0, 0, 505, 503, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 85, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 508, 509, 3, 88, 44, 0, 509, 87, 1, 0, 0, 0, 510, 512, 3, 90, 45, 0, 511, 510, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 514, 1, 0, 0, 0, 513, 515, 3, 92, 46, 0, 514, 513, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 517, 3, 94, 47, 0, 517, 518, 3, 98, 49, 0, 518, 520, 3, 104, 52, 0, 519, 521, 3, 108, 54, 0, 520, 519, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 89, 1, 0, 0, 0, 522, 524, 5, 1, 0, 0, 523, 522, 1, 0, 0, 0, 524, 527, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 528, 1, 0, 0, 0, 527, 525, 1, 0, 0, 0, 528, 529, 5, 3, 0, 0, 529, 91, 1, 0, 0, 0, 530, 532, 5, 1, 0, 0, 531, 530, 1, 0, 0, 0, 532, 535, 1, 0, 0, 0, 533, 531, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 536, 1, 0, 0, 0, 535, 533, 1, 0, 0, 0, 536, 537, 5, 14, 0, 0, 537, 93, 1, 0, 0, 0, 538, 540, 5, 1, 0, 0, 539, 538, 1, 0, 0, 0, 540, 543, 1, 0, 0, 0, 541, 539, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 544, 1, 0, 0, 0, 543, 541, 1, 0, 0, 0, 544, 545, 5, 6, 0, 0, 545, 546, 3, 96, 48, 0, 546, 95, 1, 0, 0, 0, 547, 549, 5, 40, 0, 0, 548, 547, 1, 0, 0, 0, 549, 552, 1, 0, 0, 0, 550, 548, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 97, 1, 0, 0, 0, 552, 550, 1, 0, 0, 0, 553, 555, 5, 1, 0, 0, 554, 553, 1, 0, 0, 0, 555, 558, 1, 0, 0, 0, 556, 554, 1, 0, 0, 0, 556, 557, 1, 0, 0, 0, 557, 565, 1, 0, 0, 0, 558, 556, 1, 0, 0, 0, 559, 560, 3, 100, 50, 0, 560, 561, 3, 4, 2, 0, 561, 564, 1, 0, 0, 0, 562, 564, 3, 102, 51, 0, 563, 559, 1, 0, 0, 0, 563, 562, 1, 0, 0, 0, 564, 567, 1, 0, 0, 0, 565, 563, 1, 0, 0, 0, 565, 566, 1, 0, 0, 0, 566, 99, 1, 0, 0, 0, 567, 565, 1, 0, 0, 0, 568, 572, 5, 8, 0, 0, 569, 571, 7, 5, 0, 0, 570, 569, 1, 0, 0, 0, 571, 574, 1, 0, 0, 0, 572, 570, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 101, 1, 0, 0, 0, 574, 572, 1, 0, 0, 0, 575, 577, 7, 1, 0, 0, 576, 575, 1, 0, 0, 0, 577, 578, 1, 0, 0, 0, 578, 576, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 103, 1, 0, 0, 0, 580, 582, 3, 106, 53, 0, 581, 580, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 583, 1, 0, 0, 0, 583, 589, 3, 114, 57, 0, 584, 586, 3, 114, 57, 0, 585, 587, 3, 106, 53, 0, 586, 585, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 589, 1, 0, 0, 0, 588, 581, 1, 0, 0, 0, 588, 584, 1, 0, 0, 0, 589, 105, 1, 0, 0, 0, 590, 592, 5, 1, 0, 0, 591, 590, 1, 0, 0, 0, 592, 595, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 596, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 596, 599, 5, 13, 0, 0, 597, 600, 3, 110, 55, 0, 598, 600, 3, 112, 56, 0, 599, 597, 1, 0, 0, 0, 599, 598, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 107, 1, 0, 0, 0, 603, 605, 5, 1, 0, 0, 604, 603, 1, 0, 0, 0, 605, 608, 1, 0, 0, 0, 606, 604, 1, 0, 0, 0, 606, 607, 1, 0, 0, 0, 607, 609, 1, 0, 0, 0, 608, 606, 1, 0, 0, 0, 609, 612, 5, 16, 0, 0, 610, 613, 3, 110, 55, 0, 611, 613, 3, 112, 56, 0, 612, 610, 1, 0, 0, 0, 612, 611, 1, 0, 0, 0, 613, 614, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 109, 1, 0, 0, 0, 616, 618, 5, 1, 0, 0, 617, 616, 1, 0, 0, 0, 618, 621, 1, 0, 0, 0, 619, 617, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 622, 1, 0, 0, 0, 621, 619, 1, 0, 0, 0, 622, 626, 5, 8, 0, 0, 623, 625, 7, 5, 0, 0, 624, 623, 1, 0, 0, 0, 625, 628, 1, 0, 0, 0, 626, 624, 1, 0, 0, 0, 626, 627, 1, 0, 0, 0, 627, 629, 1, 0, 0, 0, 628, 626, 1, 0, 0, 0, 629, 630, 3, 4, 2, 0, 630, 111, 1, 0, 0, 0, 631, 633, 7, 1, 0, 0, 632, 631, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 632, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 113, 1, 0, 0, 0, 636, 638, 5, 1, 0, 0, 637, 636, 1, 0, 0, 0, 638, 641, 1, 0, 0, 0, 639, 637, 1, 0, 0, 0, 639, 640, 1, 0, 0, 0, 640, 642, 1, 0, 0, 0, 641, 639, 1, 0, 0, 0, 642, 643, 5, 15, 0, 0, 643, 115, 1, 0, 0, 0, 644, 645, 3, 118, 59, 0, 645, 117, 1, 0, 0, 0, 646, 648, 5, 1, 0, 0, 647, 646, 1, 0, 0, 0, 648, 651, 1, 0, 0, 0, 649, 647, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 652, 1, 0, 0, 0, 651, 649, 1, 0, 0, 0, 652, 653, 5, 4, 0, 0, 653, 119, 1, 0, 0, 0, 92, 123, 137, 142, 149, 154, 162, 169, 177, 179, 187, 193, 198, 208, 213, 218, 223, 231, 233, 239, 247, 255, 257, 262, 269, 276, 282, 284, 289, 296, 300, 305, 310, 315, 319, 324, 328, 333, 337, 342, 347, 358, 363, 372, 381, 388, 394, 401, 405, 411, 415, 421, 426, 431, 434, 437, 442, 449, 451, 461, 463, 468, 475, 483, 490, 498, 505, 511, 514, 520, 525, 533, 541, 550, 556, 563, 565, 572, 578, 581, 586, 588, 593, 599, 601, 606, 612, 614, 619, 626, 634, 639, 649] \ No newline at end of file diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseListener.cs b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseListener.cs index 3ef9f599bd..cfda46e9da 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseListener.cs +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseListener.cs @@ -72,6 +72,18 @@ public virtual void EnterNewline([NotNull] LUFileParser.NewlineContext context) /// The parse tree. public virtual void ExitNewline([NotNull] LUFileParser.NewlineContext context) { } /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context) { } + /// /// Enter a parse tree produced by . /// The default implementation does nothing. /// diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseVisitor.cs b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseVisitor.cs index 0a0afd5f70..4ed46140b1 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseVisitor.cs +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserBaseVisitor.cs @@ -65,6 +65,16 @@ public partial class LUFileParserBaseVisitor : AbstractParseTreeVisitor< /// The visitor result. public virtual Result VisitNewline([NotNull] LUFileParser.NewlineContext context) { return VisitChildren(context); } /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context) { return VisitChildren(context); } + /// /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserListener.cs b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserListener.cs index 91a6339330..eb1877bd78 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserListener.cs +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserListener.cs @@ -61,6 +61,16 @@ public interface ILUFileParserListener : IParseTreeListener { /// The parse tree. void ExitNewline([NotNull] LUFileParser.NewlineContext context); /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context); + /// /// Enter a parse tree produced by . /// /// The parse tree. diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserVisitor.cs b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserVisitor.cs index 04fb2c9fc4..c7eb84327c 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserVisitor.cs +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/Generated/LUFileParserVisitor.cs @@ -50,6 +50,12 @@ public interface ILUFileParserVisitor : IParseTreeVisitor { /// The visitor result. Result VisitNewline([NotNull] LUFileParser.NewlineContext context); /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitCommentDefinition([NotNull] LUFileParser.CommentDefinitionContext context); + /// /// Visit a parse tree produced by . /// /// The parse tree. diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileLexer.g4 b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileLexer.g4 index 94403d2951..0e61614022 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileLexer.g4 +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileLexer.g4 @@ -54,7 +54,7 @@ MODEL_INFO ; COMMENT - : WS* '>' ~('\r'|'\n')* -> skip + : WS* '>' ~('\r'|'\n')* ; QNA diff --git a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileParser.g4 b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileParser.g4 index c23e44e9db..e9876722f3 100644 --- a/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileParser.g4 +++ b/libraries/Parsers/Microsoft.Bot.Builder.Parsers.LU/LUFileParser.g4 @@ -16,6 +16,7 @@ paragraph | referenceSection | qnaSection | modelInfoSection + | commentDefinition ; // Treat EOF as newline to hanle file end gracefully @@ -25,6 +26,10 @@ newline : WS* (NEWLINE | EOF) ; +commentDefinition + : COMMENT NEWLINE? + ; + errorString : (WS|INVALID_TOKEN_DEFAULT_MODE)+ ; @@ -74,7 +79,7 @@ intentBody ; normalIntentBody - : WS* ((normalIntentString newline) | errorString)+ + : WS* ((normalIntentString newline) | errorString | commentDefinition)+ ; normalIntentString diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.json b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.json new file mode 100644 index 0000000000..e83475d3bb --- /dev/null +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.json @@ -0,0 +1,5 @@ +{ + "sections": [], + "content": "> This is a comment\n> This is another comment", + "errors": [] +} \ No newline at end of file diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.txt b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.txt new file mode 100644 index 0000000000..c6593bdb00 --- /dev/null +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/AllComments.txt @@ -0,0 +1,2 @@ +> This is a comment +> This is another comment \ No newline at end of file diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/LU_Sections_Unix.json b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/LU_Sections_Unix.json index e93dcb50d0..79c87b0fa4 100644 --- a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/LU_Sections_Unix.json +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/LU_Sections_Unix.json @@ -161,11 +161,11 @@ "errorMsgs": [ ], - "contextText": "- Please set {deviceTemperature = thermostat to 72}", + "contextText": " - Please set {deviceTemperature = thermostat to 72}", "range": { "Start": { "Line": 17, - "Character": 4 + "Character": 0 }, "End": { "Line": 17, diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/LU_Sections_Windows.json b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/LU_Sections_Windows.json index 32dd6b2ae5..f58d0dc4fa 100644 Binary files a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/LU_Sections_Windows.json and b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/LU_Sections_Windows.json differ diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU131.json b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU131.json index 4fb9dd3bd7..41bfee8909 100644 --- a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU131.json +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU131.json @@ -52,7 +52,7 @@ "Severity": "ERROR" }, { - "Message": "syntax error: extraneous input 'ml' expecting {, WS, NEWLINE, QNA_SOURCE_INFO, MODEL_INFO, QNA, HASH, '$', '@', IMPORT, REFERENCE, QNA_ID_MARK}", + "Message": "syntax error: extraneous input 'ml' expecting {, WS, NEWLINE, QNA_SOURCE_INFO, MODEL_INFO, COMMENT, QNA, HASH, '$', '@', IMPORT, REFERENCE, QNA_ID_MARK}", "Range": { "Start": { "Line": 2, diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU139.json b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU139.json index 49e5287375..ed8891d6e8 100644 --- a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU139.json +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU139.json @@ -52,7 +52,7 @@ "Severity": "ERROR" }, { - "Message": "syntax error: extraneous input 'regex' expecting {, WS, NEWLINE, QNA_SOURCE_INFO, MODEL_INFO, QNA, HASH, '$', '@', IMPORT, REFERENCE, QNA_ID_MARK}", + "Message": "syntax error: extraneous input 'regex' expecting {, WS, NEWLINE, QNA_SOURCE_INFO, MODEL_INFO, COMMENT, QNA, HASH, '$', '@', IMPORT, REFERENCE, QNA_ID_MARK}", "Range": { "Start": { "Line": 2, diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU153.json b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU153.json index 2480fe39d9..2f560c31e2 100644 --- a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU153.json +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU153.json @@ -37,7 +37,7 @@ "Severity": "ERROR" }, { - "Message": "syntax error: extraneous input 'abc' expecting {, WS, NEWLINE, QNA_SOURCE_INFO, MODEL_INFO, QNA, HASH, '$', '@', IMPORT, REFERENCE, QNA_ID_MARK}", + "Message": "syntax error: extraneous input 'abc' expecting {, WS, NEWLINE, QNA_SOURCE_INFO, MODEL_INFO, COMMENT, QNA, HASH, '$', '@', IMPORT, REFERENCE, QNA_ID_MARK}", "Range": { "Start": { "Line": 2, diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU278.json b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU278.json index 8e6602a698..ed876a60f6 100644 --- a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU278.json +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Fixtures/testLU278.json @@ -1 +1,463 @@ -{"Sections":[{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_getUserName","Body":"- call me {name:userName}\r\n- I'm {name:userName}\r\n- my name is {name:userName}\r\n","UtteranceAndEntitiesMap":[{"utterance":"call me {name:userName}","entities":[{"type":"patternAnyEntities","entity":"name","role":"userName"}],"errorMsgs":[],"contextText":"- call me {name:userName}","range":{"Start":{"Line":3,"Character":0},"End":{"Line":3,"Character":25}}},{"utterance":"I'm {name:userName}","entities":[{"type":"patternAnyEntities","entity":"name","role":"userName"}],"errorMsgs":[],"contextText":"- I'm {name:userName}","range":{"Start":{"Line":4,"Character":0},"End":{"Line":4,"Character":21}}},{"utterance":"my name is {name:userName}","entities":[{"type":"patternAnyEntities","entity":"name","role":"userName"}],"errorMsgs":[],"contextText":"- my name is {name:userName}","range":{"Start":{"Line":5,"Character":0},"End":{"Line":5,"Character":28}}}],"Entities":[],"Name":"getUserName","IntentNameLine":"# getUserName","Range":{"Start":{"Line":2,"Character":0},"End":{"Line":6,"Character":0}}},{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_getUserFirstName","Body":"> this is another role for the same 'name' entity\r\n- [[my] first name is] {name:userFirstName}\r\n","UtteranceAndEntitiesMap":[{"utterance":"[[my] first name is] {name:userFirstName}","entities":[{"type":"patternAnyEntities","entity":"name","role":"userFirstName"}],"errorMsgs":[],"contextText":"- [[my] first name is] {name:userFirstName}","range":{"Start":{"Line":9,"Character":0},"End":{"Line":9,"Character":43}}}],"Entities":[],"Name":"getUserFirstName","IntentNameLine":"# getUserFirstName","Range":{"Start":{"Line":7,"Character":0},"End":{"Line":10,"Character":0}}},{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_BookFlight","Body":"> roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below\r\n- book flight from {city:fromCity} to {city:toCity}\r\n- [can you] get me a flight from {city:fromCity} to {city:toCity}\r\n- get me a flight to {city:toCity}\r\n- I need to fly from {city:fromCity}\r\n\r\n$city:Seattle=\r\n- Seattle\r\n- Tacoma\r\n- SeaTac\r\n- SEA\r\n\r\n$city:Portland=\r\n- Portland\r\n- PDX\r\n","UtteranceAndEntitiesMap":[{"utterance":"book flight from {city:fromCity} to {city:toCity}","entities":[{"type":"patternAnyEntities","entity":"city","role":"fromCity"},{"type":"patternAnyEntities","entity":"city","role":"toCity"}],"errorMsgs":[],"contextText":"- book flight from {city:fromCity} to {city:toCity}","range":{"Start":{"Line":13,"Character":0},"End":{"Line":13,"Character":51}}},{"utterance":"[can you] get me a flight from {city:fromCity} to {city:toCity}","entities":[{"type":"patternAnyEntities","entity":"city","role":"fromCity"},{"type":"patternAnyEntities","entity":"city","role":"toCity"}],"errorMsgs":[],"contextText":"- [can you] get me a flight from {city:fromCity} to {city:toCity}","range":{"Start":{"Line":14,"Character":0},"End":{"Line":14,"Character":65}}},{"utterance":"get me a flight to {city:toCity}","entities":[{"type":"patternAnyEntities","entity":"city","role":"toCity"}],"errorMsgs":[],"contextText":"- get me a flight to {city:toCity}","range":{"Start":{"Line":15,"Character":0},"End":{"Line":15,"Character":34}}},{"utterance":"I need to fly from {city:fromCity}","entities":[{"type":"patternAnyEntities","entity":"city","role":"fromCity"}],"errorMsgs":[],"contextText":"- I need to fly from {city:fromCity}","range":{"Start":{"Line":16,"Character":0},"End":{"Line":16,"Character":36}}}],"Entities":[{"Errors":[],"SectionType":"entitySection","Id":"entitySection_city","Body":"","Name":"city","Type":"Seattle=","SynonymsOrPhraseList":["Seattle","Tacoma","SeaTac","SEA"],"Range":{"Start":{"Line":18,"Character":0},"End":{"Line":22,"Character":6}}},{"Errors":[],"SectionType":"entitySection","Id":"entitySection_city","Body":"","Name":"city","Type":"Portland=","SynonymsOrPhraseList":["Portland","PDX"],"Range":{"Start":{"Line":24,"Character":0},"End":{"Line":26,"Character":6}}}],"Name":"BookFlight","IntentNameLine":"# BookFlight","Range":{"Start":{"Line":11,"Character":0},"End":{"Line":27,"Character":0}}},{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_setAlarm","Body":"> prebuilt entitities can have roles as well.\r\n- create alarm for {datetimeV2:startTime}\r\n","UtteranceAndEntitiesMap":[{"utterance":"create alarm for {datetimeV2:startTime}","entities":[{"type":"patternAnyEntities","entity":"datetimeV2","role":"startTime"}],"errorMsgs":[],"contextText":"- create alarm for {datetimeV2:startTime}","range":{"Start":{"Line":30,"Character":0},"End":{"Line":30,"Character":41}}}],"Entities":[],"Name":"setAlarm","IntentNameLine":"# setAlarm","Range":{"Start":{"Line":28,"Character":0},"End":{"Line":31,"Character":0}}},{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_deleteAlarm","Body":"- remove the {datetimeV2:deleteTime} alarm\r\n\r\n> This is just defining datetimeV2 as a prebuilt entity type. If an explicit type is not specified, by default entities in patterns will be set to pattern.any entity type\r\n$PREBUILT:datetimeV2\r\n","UtteranceAndEntitiesMap":[{"utterance":"remove the {datetimeV2:deleteTime} alarm","entities":[{"type":"patternAnyEntities","entity":"datetimeV2","role":"deleteTime"}],"errorMsgs":[],"contextText":"- remove the {datetimeV2:deleteTime} alarm","range":{"Start":{"Line":33,"Character":0},"End":{"Line":33,"Character":42}}}],"Entities":[{"Errors":[],"SectionType":"entitySection","Id":"entitySection_PREBUILT","Body":"","Name":"PREBUILT","Type":"datetimeV2","SynonymsOrPhraseList":[],"Range":{"Start":{"Line":36,"Character":0},"End":{"Line":36,"Character":20}}}],"Name":"deleteAlarm","IntentNameLine":"# deleteAlarm","Range":{"Start":{"Line":32,"Character":0},"End":{"Line":37,"Character":0}}},{"Errors":[],"SectionType":"simpleIntentSection","Id":"simpleIntentSection_randomTestIntent","Body":"- test {entity:foo}\r\n\r\n$entity: simple\r\n\r\n","UtteranceAndEntitiesMap":[{"utterance":"test {entity:foo}","entities":[{"type":"patternAnyEntities","entity":"entity","role":"foo"}],"errorMsgs":[],"contextText":"- test {entity:foo}","range":{"Start":{"Line":39,"Character":0},"End":{"Line":39,"Character":19}}}],"Entities":[{"Errors":[],"SectionType":"entitySection","Id":"entitySection_entity","Body":"","Name":"entity","Type":"simple","SynonymsOrPhraseList":[],"Range":{"Start":{"Line":41,"Character":0},"End":{"Line":41,"Character":15}}}],"Name":"randomTestIntent","IntentNameLine":"# randomTestIntent","Range":{"Start":{"Line":38,"Character":0},"End":{"Line":43,"Character":0}}}],"Content":"> You can use roles in patterns using the entityName:role notation.\n# getUserName\n- call me {name:userName}\n- I'm {name:userName}\n- my name is {name:userName}\n\n# getUserFirstName\n> this is another role for the same 'name' entity\n- [[my] first name is] {name:userFirstName}\n\n# BookFlight\n> roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below\n- book flight from {city:fromCity} to {city:toCity}\n- [can you] get me a flight from {city:fromCity} to {city:toCity}\n- get me a flight to {city:toCity}\n- I need to fly from {city:fromCity}\n\n$city:Seattle=\n- Seattle\n- Tacoma\n- SeaTac\n- SEA\n\n$city:Portland=\n- Portland\n- PDX\n\n# setAlarm\n> prebuilt entitities can have roles as well.\n- create alarm for {datetimeV2:startTime}\n\n# deleteAlarm\n- remove the {datetimeV2:deleteTime} alarm\n\n> This is just defining datetimeV2 as a prebuilt entity type. If an explicit type is not specified, by default entities in patterns will be set to pattern.any entity type\n$PREBUILT:datetimeV2\n\n# randomTestIntent\n- test {entity:foo}\n\n$entity: simple\n\n","Errors":[]} \ No newline at end of file +{ + "Sections": [ + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_getUserName", + "Body": "- call me {name:userName}\r\n- I'm {name:userName}\r\n- my name is {name:userName}\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "call me {name:userName}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "name", + "role": "userName" + } + ], + "errorMsgs": [], + "contextText": "- call me {name:userName}", + "range": { + "Start": { + "Line": 3, + "Character": 0 + }, + "End": { + "Line": 3, + "Character": 25 + } + } + }, + { + "utterance": "I'm {name:userName}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "name", + "role": "userName" + } + ], + "errorMsgs": [], + "contextText": "- I'm {name:userName}", + "range": { + "Start": { + "Line": 4, + "Character": 0 + }, + "End": { + "Line": 4, + "Character": 21 + } + } + }, + { + "utterance": "my name is {name:userName}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "name", + "role": "userName" + } + ], + "errorMsgs": [], + "contextText": "- my name is {name:userName}", + "range": { + "Start": { + "Line": 5, + "Character": 0 + }, + "End": { + "Line": 5, + "Character": 28 + } + } + } + ], + "Entities": [], + "Name": "getUserName", + "IntentNameLine": "# getUserName", + "Range": { + "Start": { + "Line": 2, + "Character": 0 + }, + "End": { + "Line": 6, + "Character": 0 + } + } + }, + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_getUserFirstName", + "Body": "> this is another role for the same 'name' entity\r\n- [[my] first name is] {name:userFirstName}\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "[[my] first name is] {name:userFirstName}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "name", + "role": "userFirstName" + } + ], + "errorMsgs": [], + "contextText": "- [[my] first name is] {name:userFirstName}", + "range": { + "Start": { + "Line": 9, + "Character": 0 + }, + "End": { + "Line": 9, + "Character": 43 + } + } + } + ], + "Entities": [], + "Name": "getUserFirstName", + "IntentNameLine": "# getUserFirstName", + "Range": { + "Start": { + "Line": 7, + "Character": 0 + }, + "End": { + "Line": 10, + "Character": 0 + } + } + }, + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_BookFlight", + "Body": "> roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below\r\n- book flight from {city:fromCity} to {city:toCity}\r\n- [can you] get me a flight from {city:fromCity} to {city:toCity}\r\n- get me a flight to {city:toCity}\r\n- I need to fly from {city:fromCity}\r\n\r\n$city:Seattle=\r\n- Seattle\r\n- Tacoma\r\n- SeaTac\r\n- SEA\r\n\r\n$city:Portland=\r\n- Portland\r\n- PDX\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "book flight from {city:fromCity} to {city:toCity}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "city", + "role": "fromCity" + }, + { + "type": "patternAnyEntities", + "entity": "city", + "role": "toCity" + } + ], + "errorMsgs": [], + "contextText": "- book flight from {city:fromCity} to {city:toCity}", + "range": { + "Start": { + "Line": 13, + "Character": 0 + }, + "End": { + "Line": 13, + "Character": 51 + } + } + }, + { + "utterance": "[can you] get me a flight from {city:fromCity} to {city:toCity}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "city", + "role": "fromCity" + }, + { + "type": "patternAnyEntities", + "entity": "city", + "role": "toCity" + } + ], + "errorMsgs": [], + "contextText": "- [can you] get me a flight from {city:fromCity} to {city:toCity}", + "range": { + "Start": { + "Line": 14, + "Character": 0 + }, + "End": { + "Line": 14, + "Character": 65 + } + } + }, + { + "utterance": "get me a flight to {city:toCity}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "city", + "role": "toCity" + } + ], + "errorMsgs": [], + "contextText": "- get me a flight to {city:toCity}", + "range": { + "Start": { + "Line": 15, + "Character": 0 + }, + "End": { + "Line": 15, + "Character": 34 + } + } + }, + { + "utterance": "I need to fly from {city:fromCity}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "city", + "role": "fromCity" + } + ], + "errorMsgs": [], + "contextText": "- I need to fly from {city:fromCity}", + "range": { + "Start": { + "Line": 16, + "Character": 0 + }, + "End": { + "Line": 16, + "Character": 36 + } + } + } + ], + "Entities": [ + { + "Errors": [], + "SectionType": "entitySection", + "Id": "entitySection_city", + "Body": "", + "Name": "city", + "Type": "Seattle=", + "SynonymsOrPhraseList": [ "Seattle", "Tacoma", "SeaTac", "SEA" ], + "Range": { + "Start": { + "Line": 18, + "Character": 0 + }, + "End": { + "Line": 22, + "Character": 6 + } + } + }, + { + "Errors": [], + "SectionType": "entitySection", + "Id": "entitySection_city", + "Body": "", + "Name": "city", + "Type": "Portland=", + "SynonymsOrPhraseList": [ "Portland", "PDX" ], + "Range": { + "Start": { + "Line": 24, + "Character": 0 + }, + "End": { + "Line": 26, + "Character": 6 + } + } + } + ], + "Name": "BookFlight", + "IntentNameLine": "# BookFlight", + "Range": { + "Start": { + "Line": 11, + "Character": 0 + }, + "End": { + "Line": 27, + "Character": 0 + } + } + }, + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_setAlarm", + "Body": "> prebuilt entitities can have roles as well.\r\n- create alarm for {datetimeV2:startTime}\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "create alarm for {datetimeV2:startTime}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "datetimeV2", + "role": "startTime" + } + ], + "errorMsgs": [], + "contextText": "- create alarm for {datetimeV2:startTime}", + "range": { + "Start": { + "Line": 30, + "Character": 0 + }, + "End": { + "Line": 30, + "Character": 41 + } + } + } + ], + "Entities": [], + "Name": "setAlarm", + "IntentNameLine": "# setAlarm", + "Range": { + "Start": { + "Line": 28, + "Character": 0 + }, + "End": { + "Line": 31, + "Character": 0 + } + } + }, + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_deleteAlarm", + "Body": "- remove the {datetimeV2:deleteTime} alarm\r\n\r\n> This is just defining datetimeV2 as a prebuilt entity type. If an explicit type is not specified, by default entities in patterns will be set to pattern.any entity type\r\n$PREBUILT:datetimeV2\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "remove the {datetimeV2:deleteTime} alarm", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "datetimeV2", + "role": "deleteTime" + } + ], + "errorMsgs": [], + "contextText": "- remove the {datetimeV2:deleteTime} alarm", + "range": { + "Start": { + "Line": 33, + "Character": 0 + }, + "End": { + "Line": 33, + "Character": 42 + } + } + } + ], + "Entities": [ + { + "Errors": [], + "SectionType": "entitySection", + "Id": "entitySection_PREBUILT", + "Body": "", + "Name": "PREBUILT", + "Type": "datetimeV2", + "SynonymsOrPhraseList": [], + "Range": { + "Start": { + "Line": 36, + "Character": 0 + }, + "End": { + "Line": 36, + "Character": 20 + } + } + } + ], + "Name": "deleteAlarm", + "IntentNameLine": "# deleteAlarm", + "Range": { + "Start": { + "Line": 32, + "Character": 0 + }, + "End": { + "Line": 37, + "Character": 0 + } + } + }, + { + "Errors": [], + "SectionType": "simpleIntentSection", + "Id": "simpleIntentSection_randomTestIntent", + "Body": "- test {entity:foo}\r\n\r\n$entity: simple\r\n\r\n", + "UtteranceAndEntitiesMap": [ + { + "utterance": "test {entity:foo}", + "entities": [ + { + "type": "patternAnyEntities", + "entity": "entity", + "role": "foo" + } + ], + "errorMsgs": [], + "contextText": "- test {entity:foo}", + "range": { + "Start": { + "Line": 39, + "Character": 0 + }, + "End": { + "Line": 39, + "Character": 19 + } + } + } + ], + "Entities": [ + { + "Errors": [], + "SectionType": "entitySection", + "Id": "entitySection_entity", + "Body": "", + "Name": "entity", + "Type": "simple", + "SynonymsOrPhraseList": [], + "Range": { + "Start": { + "Line": 41, + "Character": 0 + }, + "End": { + "Line": 41, + "Character": 15 + } + } + } + ], + "Name": "randomTestIntent", + "IntentNameLine": "# randomTestIntent", + "Range": { + "Start": { + "Line": 38, + "Character": 0 + }, + "End": { + "Line": 43, + "Character": 0 + } + } + } + ], + "Content": "> You can use roles in patterns using the entityName:role notation.\n# getUserName\n- call me {name:userName}\n- I'm {name:userName}\n- my name is {name:userName}\n\n# getUserFirstName\n> this is another role for the same 'name' entity\n- [[my] first name is] {name:userFirstName}\n\n# BookFlight\n> roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below\n- book flight from {city:fromCity} to {city:toCity}\n- [can you] get me a flight from {city:fromCity} to {city:toCity}\n- get me a flight to {city:toCity}\n- I need to fly from {city:fromCity}\n\n$city:Seattle=\n- Seattle\n- Tacoma\n- SeaTac\n- SEA\n\n$city:Portland=\n- Portland\n- PDX\n\n# setAlarm\n> prebuilt entitities can have roles as well.\n- create alarm for {datetimeV2:startTime}\n\n# deleteAlarm\n- remove the {datetimeV2:deleteTime} alarm\n\n> This is just defining datetimeV2 as a prebuilt entity type. If an explicit type is not specified, by default entities in patterns will be set to pattern.any entity type\n$PREBUILT:datetimeV2\n\n# randomTestIntent\n- test {entity:foo}\n\n$entity: simple\n\n", + "Errors": [] +} \ No newline at end of file diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Microsoft.Bot.Builder.Parsers.LU.Tests.csproj b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Microsoft.Bot.Builder.Parsers.LU.Tests.csproj index b6e81e972b..c6bfe45d6e 100644 --- a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Microsoft.Bot.Builder.Parsers.LU.Tests.csproj +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Microsoft.Bot.Builder.Parsers.LU.Tests.csproj @@ -20,6 +20,12 @@ + + Always + + + Always + Always diff --git a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Parser/LuParserTests.cs b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Parser/LuParserTests.cs index 8ecbf00b96..ab77ce38e5 100644 --- a/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Parser/LuParserTests.cs +++ b/tests/Parsers/Microsoft.Bot.Builder.Parsers.LU.Tests/Parser/LuParserTests.cs @@ -18,6 +18,7 @@ public class LuParserTests [InlineData("LU_Sections")] [InlineData("SectionsLU")] [InlineData("ImportAllLu")] + [InlineData("AllComments")] public void ParseLuContent(string fileName) { // var luContent = "# Help"+ Environment.NewLine + "- help" + Environment.NewLine + "- I need help" + Environment.NewLine + "- please help";