From 3c523a16c85b2b517a813dce558dc195eb4e05d4 Mon Sep 17 00:00:00 2001 From: MEPalma <64580864+MEPalma@users.noreply.github.com> Date: Mon, 27 Jan 2025 08:11:28 +0100 Subject: [PATCH] version token as soft keyword --- .../stepfunctions/asl/antlr/ASLParser.g4 | 1 + .../asl/antlr/runtime/ASLParser.py | 668 +++++++++--------- .../sns_publish_message_attributes.json5 | 5 + .../test_sns_task_service.snapshot.json | 40 +- .../test_sns_task_service.validation.json | 10 +- 5 files changed, 382 insertions(+), 342 deletions(-) diff --git a/localstack-core/localstack/services/stepfunctions/asl/antlr/ASLParser.g4 b/localstack-core/localstack/services/stepfunctions/asl/antlr/ASLParser.g4 index 9b941000d670b..f93a7ba351820 100644 --- a/localstack-core/localstack/services/stepfunctions/asl/antlr/ASLParser.g4 +++ b/localstack-core/localstack/services/stepfunctions/asl/antlr/ASLParser.g4 @@ -572,4 +572,5 @@ soft_string_keyword: | FULL | NONE | CATCH + | VERSION ; \ No newline at end of file diff --git a/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParser.py b/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParser.py index 9f8a3c6236c5d..d6dced3fcf907 100644 --- a/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParser.py +++ b/localstack-core/localstack/services/stepfunctions/asl/antlr/runtime/ASLParser.py @@ -116,333 +116,332 @@ def serializedATN(): 190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220, 222,224,226,228,230,0,10,1,0,132,133,1,0,7,8,1,0,16,23,1,0,81,82, 1,0,160,161,1,0,128,129,3,0,30,37,39,48,50,70,3,0,29,29,38,38,49, - 49,1,0,137,152,6,0,10,13,15,28,71,117,119,119,121,131,134,136,1225, - 0,232,1,0,0,0,2,235,1,0,0,0,4,252,1,0,0,0,6,254,1,0,0,0,8,258,1, - 0,0,0,10,262,1,0,0,0,12,266,1,0,0,0,14,308,1,0,0,0,16,310,1,0,0, - 0,18,323,1,0,0,0,20,327,1,0,0,0,22,338,1,0,0,0,24,342,1,0,0,0,26, - 346,1,0,0,0,28,350,1,0,0,0,30,356,1,0,0,0,32,360,1,0,0,0,34,366, - 1,0,0,0,36,372,1,0,0,0,38,376,1,0,0,0,40,389,1,0,0,0,42,400,1,0, - 0,0,44,411,1,0,0,0,46,422,1,0,0,0,48,430,1,0,0,0,50,432,1,0,0,0, - 52,445,1,0,0,0,54,447,1,0,0,0,56,451,1,0,0,0,58,466,1,0,0,0,60,477, - 1,0,0,0,62,488,1,0,0,0,64,503,1,0,0,0,66,512,1,0,0,0,68,527,1,0, - 0,0,70,532,1,0,0,0,72,539,1,0,0,0,74,541,1,0,0,0,76,558,1,0,0,0, - 78,560,1,0,0,0,80,575,1,0,0,0,82,584,1,0,0,0,84,589,1,0,0,0,86,604, - 1,0,0,0,88,612,1,0,0,0,90,620,1,0,0,0,92,622,1,0,0,0,94,639,1,0, - 0,0,96,641,1,0,0,0,98,648,1,0,0,0,100,663,1,0,0,0,102,671,1,0,0, - 0,104,673,1,0,0,0,106,677,1,0,0,0,108,679,1,0,0,0,110,713,1,0,0, - 0,112,721,1,0,0,0,114,727,1,0,0,0,116,729,1,0,0,0,118,745,1,0,0, - 0,120,763,1,0,0,0,122,765,1,0,0,0,124,778,1,0,0,0,126,795,1,0,0, - 0,128,797,1,0,0,0,130,812,1,0,0,0,132,814,1,0,0,0,134,818,1,0,0, - 0,136,820,1,0,0,0,138,824,1,0,0,0,140,826,1,0,0,0,142,843,1,0,0, - 0,144,845,1,0,0,0,146,849,1,0,0,0,148,866,1,0,0,0,150,868,1,0,0, - 0,152,885,1,0,0,0,154,887,1,0,0,0,156,891,1,0,0,0,158,895,1,0,0, - 0,160,917,1,0,0,0,162,928,1,0,0,0,164,939,1,0,0,0,166,941,1,0,0, - 0,168,945,1,0,0,0,170,960,1,0,0,0,172,962,1,0,0,0,174,977,1,0,0, - 0,176,995,1,0,0,0,178,997,1,0,0,0,180,1010,1,0,0,0,182,1014,1,0, - 0,0,184,1018,1,0,0,0,186,1022,1,0,0,0,188,1026,1,0,0,0,190,1030, - 1,0,0,0,192,1045,1,0,0,0,194,1062,1,0,0,0,196,1064,1,0,0,0,198,1066, - 1,0,0,0,200,1068,1,0,0,0,202,1072,1,0,0,0,204,1087,1,0,0,0,206,1089, - 1,0,0,0,208,1106,1,0,0,0,210,1117,1,0,0,0,212,1122,1,0,0,0,214,1126, - 1,0,0,0,216,1130,1,0,0,0,218,1132,1,0,0,0,220,1134,1,0,0,0,222,1136, - 1,0,0,0,224,1138,1,0,0,0,226,1140,1,0,0,0,228,1149,1,0,0,0,230,1151, - 1,0,0,0,232,233,3,2,1,0,233,234,5,0,0,1,234,1,1,0,0,0,235,236,5, - 5,0,0,236,241,3,4,2,0,237,238,5,1,0,0,238,240,3,4,2,0,239,237,1, - 0,0,0,240,243,1,0,0,0,241,239,1,0,0,0,241,242,1,0,0,0,242,244,1, - 0,0,0,243,241,1,0,0,0,244,245,5,6,0,0,245,3,1,0,0,0,246,253,3,8, - 4,0,247,253,3,10,5,0,248,253,3,12,6,0,249,253,3,6,3,0,250,253,3, - 16,8,0,251,253,3,60,30,0,252,246,1,0,0,0,252,247,1,0,0,0,252,248, - 1,0,0,0,252,249,1,0,0,0,252,250,1,0,0,0,252,251,1,0,0,0,253,5,1, - 0,0,0,254,255,5,12,0,0,255,256,5,2,0,0,256,257,3,228,114,0,257,7, - 1,0,0,0,258,259,5,10,0,0,259,260,5,2,0,0,260,261,3,228,114,0,261, - 9,1,0,0,0,262,263,5,14,0,0,263,264,5,2,0,0,264,265,3,228,114,0,265, - 11,1,0,0,0,266,267,5,131,0,0,267,268,5,2,0,0,268,269,7,0,0,0,269, - 13,1,0,0,0,270,309,3,8,4,0,271,309,3,12,6,0,272,309,3,22,11,0,273, - 309,3,28,14,0,274,309,3,26,13,0,275,309,3,24,12,0,276,309,3,30,15, - 0,277,309,3,32,16,0,278,309,3,34,17,0,279,309,3,36,18,0,280,309, - 3,38,19,0,281,309,3,108,54,0,282,309,3,40,20,0,283,309,3,42,21,0, - 284,309,3,44,22,0,285,309,3,46,23,0,286,309,3,48,24,0,287,309,3, - 50,25,0,288,309,3,124,62,0,289,309,3,140,70,0,290,309,3,144,72,0, - 291,309,3,146,73,0,292,309,3,52,26,0,293,309,3,60,30,0,294,309,3, - 62,31,0,295,309,3,122,61,0,296,309,3,54,27,0,297,309,3,172,86,0, - 298,309,3,190,95,0,299,309,3,104,52,0,300,309,3,162,81,0,301,309, - 3,164,82,0,302,309,3,166,83,0,303,309,3,168,84,0,304,309,3,74,37, - 0,305,309,3,90,45,0,306,309,3,92,46,0,307,309,3,56,28,0,308,270, - 1,0,0,0,308,271,1,0,0,0,308,272,1,0,0,0,308,273,1,0,0,0,308,274, - 1,0,0,0,308,275,1,0,0,0,308,276,1,0,0,0,308,277,1,0,0,0,308,278, - 1,0,0,0,308,279,1,0,0,0,308,280,1,0,0,0,308,281,1,0,0,0,308,282, - 1,0,0,0,308,283,1,0,0,0,308,284,1,0,0,0,308,285,1,0,0,0,308,286, - 1,0,0,0,308,287,1,0,0,0,308,288,1,0,0,0,308,289,1,0,0,0,308,290, - 1,0,0,0,308,291,1,0,0,0,308,292,1,0,0,0,308,293,1,0,0,0,308,294, - 1,0,0,0,308,295,1,0,0,0,308,296,1,0,0,0,308,297,1,0,0,0,308,298, - 1,0,0,0,308,299,1,0,0,0,308,300,1,0,0,0,308,301,1,0,0,0,308,302, - 1,0,0,0,308,303,1,0,0,0,308,304,1,0,0,0,308,305,1,0,0,0,308,306, - 1,0,0,0,308,307,1,0,0,0,309,15,1,0,0,0,310,311,5,11,0,0,311,312, - 5,2,0,0,312,313,5,5,0,0,313,318,3,18,9,0,314,315,5,1,0,0,315,317, - 3,18,9,0,316,314,1,0,0,0,317,320,1,0,0,0,318,316,1,0,0,0,318,319, - 1,0,0,0,319,321,1,0,0,0,320,318,1,0,0,0,321,322,5,6,0,0,322,17,1, - 0,0,0,323,324,3,228,114,0,324,325,5,2,0,0,325,326,3,20,10,0,326, - 19,1,0,0,0,327,328,5,5,0,0,328,333,3,14,7,0,329,330,5,1,0,0,330, - 332,3,14,7,0,331,329,1,0,0,0,332,335,1,0,0,0,333,331,1,0,0,0,333, - 334,1,0,0,0,334,336,1,0,0,0,335,333,1,0,0,0,336,337,5,6,0,0,337, - 21,1,0,0,0,338,339,5,15,0,0,339,340,5,2,0,0,340,341,3,106,53,0,341, - 23,1,0,0,0,342,343,5,115,0,0,343,344,5,2,0,0,344,345,3,228,114,0, - 345,25,1,0,0,0,346,347,5,90,0,0,347,348,5,2,0,0,348,349,3,228,114, - 0,349,27,1,0,0,0,350,351,5,91,0,0,351,354,5,2,0,0,352,355,5,9,0, - 0,353,355,3,212,106,0,354,352,1,0,0,0,354,353,1,0,0,0,355,29,1,0, - 0,0,356,357,5,96,0,0,357,358,5,2,0,0,358,359,3,210,105,0,359,31, - 1,0,0,0,360,361,5,95,0,0,361,364,5,2,0,0,362,365,5,9,0,0,363,365, - 3,218,109,0,364,362,1,0,0,0,364,363,1,0,0,0,365,33,1,0,0,0,366,367, - 5,92,0,0,367,370,5,2,0,0,368,371,5,9,0,0,369,371,3,212,106,0,370, - 368,1,0,0,0,370,369,1,0,0,0,371,35,1,0,0,0,372,373,5,116,0,0,373, - 374,5,2,0,0,374,375,7,1,0,0,375,37,1,0,0,0,376,377,5,27,0,0,377, - 378,5,2,0,0,378,379,3,228,114,0,379,39,1,0,0,0,380,381,5,119,0,0, - 381,384,5,2,0,0,382,385,3,226,113,0,383,385,3,228,114,0,384,382, - 1,0,0,0,384,383,1,0,0,0,385,390,1,0,0,0,386,387,5,120,0,0,387,388, - 5,2,0,0,388,390,3,214,107,0,389,380,1,0,0,0,389,386,1,0,0,0,390, - 41,1,0,0,0,391,392,5,117,0,0,392,395,5,2,0,0,393,396,3,226,113,0, - 394,396,3,228,114,0,395,393,1,0,0,0,395,394,1,0,0,0,396,401,1,0, - 0,0,397,398,5,118,0,0,398,399,5,2,0,0,399,401,3,214,107,0,400,391, - 1,0,0,0,400,397,1,0,0,0,401,43,1,0,0,0,402,403,5,72,0,0,403,404, - 5,2,0,0,404,412,3,226,113,0,405,406,5,72,0,0,406,407,5,2,0,0,407, - 412,5,160,0,0,408,409,5,71,0,0,409,410,5,2,0,0,410,412,3,212,106, - 0,411,402,1,0,0,0,411,405,1,0,0,0,411,408,1,0,0,0,412,45,1,0,0,0, - 413,414,5,74,0,0,414,417,5,2,0,0,415,418,3,226,113,0,416,418,3,228, - 114,0,417,415,1,0,0,0,417,416,1,0,0,0,418,423,1,0,0,0,419,420,5, - 73,0,0,420,421,5,2,0,0,421,423,3,212,106,0,422,413,1,0,0,0,422,419, - 1,0,0,0,423,47,1,0,0,0,424,425,5,93,0,0,425,426,5,2,0,0,426,431, - 3,100,50,0,427,428,5,93,0,0,428,429,5,2,0,0,429,431,3,226,113,0, - 430,424,1,0,0,0,430,427,1,0,0,0,431,49,1,0,0,0,432,433,5,94,0,0, - 433,434,5,2,0,0,434,435,3,212,106,0,435,51,1,0,0,0,436,437,5,89, - 0,0,437,438,5,2,0,0,438,446,3,226,113,0,439,440,5,89,0,0,440,441, - 5,2,0,0,441,446,5,160,0,0,442,443,5,88,0,0,443,444,5,2,0,0,444,446, - 3,212,106,0,445,436,1,0,0,0,445,439,1,0,0,0,445,442,1,0,0,0,446, - 53,1,0,0,0,447,448,5,97,0,0,448,449,5,2,0,0,449,450,3,64,32,0,450, - 55,1,0,0,0,451,452,5,98,0,0,452,453,5,2,0,0,453,454,5,5,0,0,454, - 455,3,58,29,0,455,456,5,6,0,0,456,57,1,0,0,0,457,458,5,99,0,0,458, - 461,5,2,0,0,459,462,3,226,113,0,460,462,3,228,114,0,461,459,1,0, - 0,0,461,460,1,0,0,0,462,467,1,0,0,0,463,464,5,100,0,0,464,465,5, - 2,0,0,465,467,3,214,107,0,466,457,1,0,0,0,466,463,1,0,0,0,467,59, - 1,0,0,0,468,469,5,75,0,0,469,470,5,2,0,0,470,478,3,226,113,0,471, - 472,5,75,0,0,472,473,5,2,0,0,473,478,5,160,0,0,474,475,5,76,0,0, - 475,476,5,2,0,0,476,478,3,212,106,0,477,468,1,0,0,0,477,471,1,0, - 0,0,477,474,1,0,0,0,478,61,1,0,0,0,479,480,5,77,0,0,480,481,5,2, - 0,0,481,489,3,226,113,0,482,483,5,77,0,0,483,484,5,2,0,0,484,489, - 5,160,0,0,485,486,5,78,0,0,486,487,5,2,0,0,487,489,3,212,106,0,488, - 479,1,0,0,0,488,482,1,0,0,0,488,485,1,0,0,0,489,63,1,0,0,0,490,491, - 5,5,0,0,491,496,3,66,33,0,492,493,5,1,0,0,493,495,3,66,33,0,494, - 492,1,0,0,0,495,498,1,0,0,0,496,494,1,0,0,0,496,497,1,0,0,0,497, - 499,1,0,0,0,498,496,1,0,0,0,499,500,5,6,0,0,500,504,1,0,0,0,501, - 502,5,5,0,0,502,504,5,6,0,0,503,490,1,0,0,0,503,501,1,0,0,0,504, - 65,1,0,0,0,505,506,5,153,0,0,506,507,5,2,0,0,507,513,3,214,107,0, - 508,509,3,228,114,0,509,510,5,2,0,0,510,511,3,70,35,0,511,513,1, - 0,0,0,512,505,1,0,0,0,512,508,1,0,0,0,513,67,1,0,0,0,514,515,5,3, - 0,0,515,520,3,70,35,0,516,517,5,1,0,0,517,519,3,70,35,0,518,516, - 1,0,0,0,519,522,1,0,0,0,520,518,1,0,0,0,520,521,1,0,0,0,521,523, - 1,0,0,0,522,520,1,0,0,0,523,524,5,4,0,0,524,528,1,0,0,0,525,526, - 5,3,0,0,526,528,5,4,0,0,527,514,1,0,0,0,527,525,1,0,0,0,528,69,1, - 0,0,0,529,533,3,68,34,0,530,533,3,64,32,0,531,533,3,72,36,0,532, - 529,1,0,0,0,532,530,1,0,0,0,532,531,1,0,0,0,533,71,1,0,0,0,534,540, - 5,161,0,0,535,540,5,160,0,0,536,540,7,1,0,0,537,540,5,9,0,0,538, - 540,3,228,114,0,539,534,1,0,0,0,539,535,1,0,0,0,539,536,1,0,0,0, - 539,537,1,0,0,0,539,538,1,0,0,0,540,73,1,0,0,0,541,542,5,134,0,0, - 542,543,5,2,0,0,543,544,3,76,38,0,544,75,1,0,0,0,545,546,5,5,0,0, - 546,559,5,6,0,0,547,548,5,5,0,0,548,553,3,78,39,0,549,550,5,1,0, - 0,550,552,3,78,39,0,551,549,1,0,0,0,552,555,1,0,0,0,553,551,1,0, - 0,0,553,554,1,0,0,0,554,556,1,0,0,0,555,553,1,0,0,0,556,557,5,6, - 0,0,557,559,1,0,0,0,558,545,1,0,0,0,558,547,1,0,0,0,559,77,1,0,0, - 0,560,561,3,82,41,0,561,79,1,0,0,0,562,563,5,5,0,0,563,576,5,6,0, - 0,564,565,5,5,0,0,565,570,3,82,41,0,566,567,5,1,0,0,567,569,3,82, - 41,0,568,566,1,0,0,0,569,572,1,0,0,0,570,568,1,0,0,0,570,571,1,0, - 0,0,571,573,1,0,0,0,572,570,1,0,0,0,573,574,5,6,0,0,574,576,1,0, - 0,0,575,562,1,0,0,0,575,564,1,0,0,0,576,81,1,0,0,0,577,578,5,153, - 0,0,578,579,5,2,0,0,579,585,3,214,107,0,580,581,3,228,114,0,581, - 582,5,2,0,0,582,583,3,84,42,0,583,585,1,0,0,0,584,577,1,0,0,0,584, - 580,1,0,0,0,585,83,1,0,0,0,586,590,3,80,40,0,587,590,3,86,43,0,588, - 590,3,88,44,0,589,586,1,0,0,0,589,587,1,0,0,0,589,588,1,0,0,0,590, - 85,1,0,0,0,591,592,5,3,0,0,592,605,5,4,0,0,593,594,5,3,0,0,594,599, - 3,84,42,0,595,596,5,1,0,0,596,598,3,84,42,0,597,595,1,0,0,0,598, - 601,1,0,0,0,599,597,1,0,0,0,599,600,1,0,0,0,600,602,1,0,0,0,601, - 599,1,0,0,0,602,603,5,4,0,0,603,605,1,0,0,0,604,591,1,0,0,0,604, - 593,1,0,0,0,605,87,1,0,0,0,606,613,5,161,0,0,607,613,5,160,0,0,608, - 613,7,1,0,0,609,613,5,9,0,0,610,613,3,226,113,0,611,613,3,228,114, - 0,612,606,1,0,0,0,612,607,1,0,0,0,612,608,1,0,0,0,612,609,1,0,0, - 0,612,610,1,0,0,0,612,611,1,0,0,0,613,89,1,0,0,0,614,615,5,136,0, - 0,615,616,5,2,0,0,616,621,3,94,47,0,617,618,5,136,0,0,618,619,5, - 2,0,0,619,621,3,226,113,0,620,614,1,0,0,0,620,617,1,0,0,0,621,91, - 1,0,0,0,622,623,5,135,0,0,623,624,5,2,0,0,624,625,3,98,49,0,625, - 93,1,0,0,0,626,627,5,5,0,0,627,640,5,6,0,0,628,629,5,5,0,0,629,634, - 3,96,48,0,630,631,5,1,0,0,631,633,3,96,48,0,632,630,1,0,0,0,633, - 636,1,0,0,0,634,632,1,0,0,0,634,635,1,0,0,0,635,637,1,0,0,0,636, - 634,1,0,0,0,637,638,5,6,0,0,638,640,1,0,0,0,639,626,1,0,0,0,639, - 628,1,0,0,0,640,95,1,0,0,0,641,642,3,228,114,0,642,643,5,2,0,0,643, - 644,3,98,49,0,644,97,1,0,0,0,645,649,3,94,47,0,646,649,3,100,50, - 0,647,649,3,102,51,0,648,645,1,0,0,0,648,646,1,0,0,0,648,647,1,0, - 0,0,649,99,1,0,0,0,650,651,5,3,0,0,651,664,5,4,0,0,652,653,5,3,0, - 0,653,658,3,98,49,0,654,655,5,1,0,0,655,657,3,98,49,0,656,654,1, - 0,0,0,657,660,1,0,0,0,658,656,1,0,0,0,658,659,1,0,0,0,659,661,1, - 0,0,0,660,658,1,0,0,0,661,662,5,4,0,0,662,664,1,0,0,0,663,650,1, - 0,0,0,663,652,1,0,0,0,664,101,1,0,0,0,665,672,5,161,0,0,666,672, - 5,160,0,0,667,672,7,1,0,0,668,672,5,9,0,0,669,672,3,226,113,0,670, - 672,3,228,114,0,671,665,1,0,0,0,671,666,1,0,0,0,671,667,1,0,0,0, - 671,668,1,0,0,0,671,669,1,0,0,0,671,670,1,0,0,0,672,103,1,0,0,0, - 673,674,5,101,0,0,674,675,5,2,0,0,675,676,3,64,32,0,676,105,1,0, - 0,0,677,678,7,2,0,0,678,107,1,0,0,0,679,680,5,24,0,0,680,681,5,2, - 0,0,681,682,5,3,0,0,682,687,3,110,55,0,683,684,5,1,0,0,684,686,3, - 110,55,0,685,683,1,0,0,0,686,689,1,0,0,0,687,685,1,0,0,0,687,688, - 1,0,0,0,688,690,1,0,0,0,689,687,1,0,0,0,690,691,5,4,0,0,691,109, - 1,0,0,0,692,693,5,5,0,0,693,696,3,112,56,0,694,695,5,1,0,0,695,697, - 3,112,56,0,696,694,1,0,0,0,697,698,1,0,0,0,698,696,1,0,0,0,698,699, - 1,0,0,0,699,700,1,0,0,0,700,701,5,6,0,0,701,714,1,0,0,0,702,703, - 5,5,0,0,703,708,3,114,57,0,704,705,5,1,0,0,705,707,3,114,57,0,706, - 704,1,0,0,0,707,710,1,0,0,0,708,706,1,0,0,0,708,709,1,0,0,0,709, - 711,1,0,0,0,710,708,1,0,0,0,711,712,5,6,0,0,712,714,1,0,0,0,713, - 692,1,0,0,0,713,702,1,0,0,0,714,111,1,0,0,0,715,722,3,118,59,0,716, - 722,3,120,60,0,717,722,3,24,12,0,718,722,3,74,37,0,719,722,3,92, - 46,0,720,722,3,8,4,0,721,715,1,0,0,0,721,716,1,0,0,0,721,717,1,0, - 0,0,721,718,1,0,0,0,721,719,1,0,0,0,721,720,1,0,0,0,722,113,1,0, - 0,0,723,728,3,116,58,0,724,728,3,24,12,0,725,728,3,74,37,0,726,728, - 3,8,4,0,727,723,1,0,0,0,727,724,1,0,0,0,727,725,1,0,0,0,727,726, - 1,0,0,0,728,115,1,0,0,0,729,730,3,198,99,0,730,743,5,2,0,0,731,744, - 3,110,55,0,732,733,5,3,0,0,733,738,3,110,55,0,734,735,5,1,0,0,735, - 737,3,110,55,0,736,734,1,0,0,0,737,740,1,0,0,0,738,736,1,0,0,0,738, - 739,1,0,0,0,739,741,1,0,0,0,740,738,1,0,0,0,741,742,5,4,0,0,742, - 744,1,0,0,0,743,731,1,0,0,0,743,732,1,0,0,0,744,117,1,0,0,0,745, - 746,5,26,0,0,746,747,5,2,0,0,747,748,3,212,106,0,748,119,1,0,0,0, - 749,750,5,25,0,0,750,751,5,2,0,0,751,764,7,1,0,0,752,753,5,25,0, - 0,753,754,5,2,0,0,754,764,3,226,113,0,755,756,3,196,98,0,756,757, - 5,2,0,0,757,758,3,222,111,0,758,764,1,0,0,0,759,760,3,196,98,0,760, - 761,5,2,0,0,761,762,3,210,105,0,762,764,1,0,0,0,763,749,1,0,0,0, - 763,752,1,0,0,0,763,755,1,0,0,0,763,759,1,0,0,0,764,121,1,0,0,0, - 765,766,5,28,0,0,766,767,5,2,0,0,767,768,5,3,0,0,768,773,3,2,1,0, - 769,770,5,1,0,0,770,772,3,2,1,0,771,769,1,0,0,0,772,775,1,0,0,0, - 773,771,1,0,0,0,773,774,1,0,0,0,774,776,1,0,0,0,775,773,1,0,0,0, - 776,777,5,4,0,0,777,123,1,0,0,0,778,779,5,85,0,0,779,780,5,2,0,0, - 780,781,5,5,0,0,781,786,3,126,63,0,782,783,5,1,0,0,783,785,3,126, - 63,0,784,782,1,0,0,0,785,788,1,0,0,0,786,784,1,0,0,0,786,787,1,0, - 0,0,787,789,1,0,0,0,788,786,1,0,0,0,789,790,5,6,0,0,790,125,1,0, - 0,0,791,796,3,128,64,0,792,796,3,6,3,0,793,796,3,16,8,0,794,796, - 3,8,4,0,795,791,1,0,0,0,795,792,1,0,0,0,795,793,1,0,0,0,795,794, - 1,0,0,0,796,127,1,0,0,0,797,798,5,79,0,0,798,799,5,2,0,0,799,800, - 5,5,0,0,800,805,3,130,65,0,801,802,5,1,0,0,802,804,3,130,65,0,803, - 801,1,0,0,0,804,807,1,0,0,0,805,803,1,0,0,0,805,806,1,0,0,0,806, - 808,1,0,0,0,807,805,1,0,0,0,808,809,5,6,0,0,809,129,1,0,0,0,810, - 813,3,132,66,0,811,813,3,136,68,0,812,810,1,0,0,0,812,811,1,0,0, - 0,813,131,1,0,0,0,814,815,5,80,0,0,815,816,5,2,0,0,816,817,3,134, - 67,0,817,133,1,0,0,0,818,819,7,3,0,0,819,135,1,0,0,0,820,821,5,83, - 0,0,821,822,5,2,0,0,822,823,3,138,69,0,823,137,1,0,0,0,824,825,5, - 84,0,0,825,139,1,0,0,0,826,827,5,86,0,0,827,828,5,2,0,0,828,829, - 5,5,0,0,829,834,3,142,71,0,830,831,5,1,0,0,831,833,3,142,71,0,832, - 830,1,0,0,0,833,836,1,0,0,0,834,832,1,0,0,0,834,835,1,0,0,0,835, - 837,1,0,0,0,836,834,1,0,0,0,837,838,5,6,0,0,838,141,1,0,0,0,839, - 844,3,6,3,0,840,844,3,16,8,0,841,844,3,8,4,0,842,844,3,128,64,0, - 843,839,1,0,0,0,843,840,1,0,0,0,843,841,1,0,0,0,843,842,1,0,0,0, - 844,143,1,0,0,0,845,846,5,87,0,0,846,847,5,2,0,0,847,848,3,64,32, - 0,848,145,1,0,0,0,849,850,5,102,0,0,850,851,5,2,0,0,851,852,5,5, - 0,0,852,857,3,148,74,0,853,854,5,1,0,0,854,856,3,148,74,0,855,853, - 1,0,0,0,856,859,1,0,0,0,857,855,1,0,0,0,857,858,1,0,0,0,858,860, - 1,0,0,0,859,857,1,0,0,0,860,861,5,6,0,0,861,147,1,0,0,0,862,867, - 3,26,13,0,863,867,3,150,75,0,864,867,3,54,27,0,865,867,3,90,45,0, - 866,862,1,0,0,0,866,863,1,0,0,0,866,864,1,0,0,0,866,865,1,0,0,0, - 867,149,1,0,0,0,868,869,5,103,0,0,869,870,5,2,0,0,870,871,5,5,0, - 0,871,876,3,152,76,0,872,873,5,1,0,0,873,875,3,152,76,0,874,872, - 1,0,0,0,875,878,1,0,0,0,876,874,1,0,0,0,876,877,1,0,0,0,877,879, - 1,0,0,0,878,876,1,0,0,0,879,880,5,6,0,0,880,151,1,0,0,0,881,886, - 3,154,77,0,882,886,3,156,78,0,883,886,3,158,79,0,884,886,3,160,80, - 0,885,881,1,0,0,0,885,882,1,0,0,0,885,883,1,0,0,0,885,884,1,0,0, - 0,886,153,1,0,0,0,887,888,5,104,0,0,888,889,5,2,0,0,889,890,3,228, - 114,0,890,155,1,0,0,0,891,892,5,105,0,0,892,893,5,2,0,0,893,894, - 3,228,114,0,894,157,1,0,0,0,895,896,5,106,0,0,896,897,5,2,0,0,897, - 898,5,3,0,0,898,903,3,228,114,0,899,900,5,1,0,0,900,902,3,228,114, - 0,901,899,1,0,0,0,902,905,1,0,0,0,903,901,1,0,0,0,903,904,1,0,0, - 0,904,906,1,0,0,0,905,903,1,0,0,0,906,907,5,4,0,0,907,159,1,0,0, - 0,908,909,5,107,0,0,909,910,5,2,0,0,910,918,3,226,113,0,911,912, - 5,107,0,0,912,913,5,2,0,0,913,918,5,160,0,0,914,915,5,108,0,0,915, - 916,5,2,0,0,916,918,3,212,106,0,917,908,1,0,0,0,917,911,1,0,0,0, - 917,914,1,0,0,0,918,161,1,0,0,0,919,920,5,109,0,0,920,921,5,2,0, - 0,921,929,3,226,113,0,922,923,5,109,0,0,923,924,5,2,0,0,924,929, - 5,160,0,0,925,926,5,110,0,0,926,927,5,2,0,0,927,929,3,212,106,0, - 928,919,1,0,0,0,928,922,1,0,0,0,928,925,1,0,0,0,929,163,1,0,0,0, - 930,931,5,111,0,0,931,932,5,2,0,0,932,940,3,226,113,0,933,934,5, - 111,0,0,934,935,5,2,0,0,935,940,5,161,0,0,936,937,5,112,0,0,937, - 938,5,2,0,0,938,940,3,212,106,0,939,930,1,0,0,0,939,933,1,0,0,0, - 939,936,1,0,0,0,940,165,1,0,0,0,941,942,5,113,0,0,942,943,5,2,0, - 0,943,944,3,228,114,0,944,167,1,0,0,0,945,946,5,114,0,0,946,947, - 5,2,0,0,947,948,5,5,0,0,948,953,3,170,85,0,949,950,5,1,0,0,950,952, - 3,170,85,0,951,949,1,0,0,0,952,955,1,0,0,0,953,951,1,0,0,0,953,954, - 1,0,0,0,954,956,1,0,0,0,955,953,1,0,0,0,956,957,5,6,0,0,957,169, - 1,0,0,0,958,961,3,26,13,0,959,961,3,54,27,0,960,958,1,0,0,0,960, - 959,1,0,0,0,961,171,1,0,0,0,962,963,5,121,0,0,963,964,5,2,0,0,964, - 973,5,3,0,0,965,970,3,174,87,0,966,967,5,1,0,0,967,969,3,174,87, - 0,968,966,1,0,0,0,969,972,1,0,0,0,970,968,1,0,0,0,970,971,1,0,0, - 0,971,974,1,0,0,0,972,970,1,0,0,0,973,965,1,0,0,0,973,974,1,0,0, - 0,974,975,1,0,0,0,975,976,5,4,0,0,976,173,1,0,0,0,977,978,5,5,0, - 0,978,983,3,176,88,0,979,980,5,1,0,0,980,982,3,176,88,0,981,979, - 1,0,0,0,982,985,1,0,0,0,983,981,1,0,0,0,983,984,1,0,0,0,984,986, - 1,0,0,0,985,983,1,0,0,0,986,987,5,6,0,0,987,175,1,0,0,0,988,996, - 3,178,89,0,989,996,3,180,90,0,990,996,3,182,91,0,991,996,3,184,92, - 0,992,996,3,186,93,0,993,996,3,188,94,0,994,996,3,8,4,0,995,988, - 1,0,0,0,995,989,1,0,0,0,995,990,1,0,0,0,995,991,1,0,0,0,995,992, - 1,0,0,0,995,993,1,0,0,0,995,994,1,0,0,0,996,177,1,0,0,0,997,998, - 5,122,0,0,998,999,5,2,0,0,999,1000,5,3,0,0,1000,1005,3,202,101,0, - 1001,1002,5,1,0,0,1002,1004,3,202,101,0,1003,1001,1,0,0,0,1004,1007, - 1,0,0,0,1005,1003,1,0,0,0,1005,1006,1,0,0,0,1006,1008,1,0,0,0,1007, - 1005,1,0,0,0,1008,1009,5,4,0,0,1009,179,1,0,0,0,1010,1011,5,123, - 0,0,1011,1012,5,2,0,0,1012,1013,5,160,0,0,1013,181,1,0,0,0,1014, - 1015,5,124,0,0,1015,1016,5,2,0,0,1016,1017,5,160,0,0,1017,183,1, - 0,0,0,1018,1019,5,125,0,0,1019,1020,5,2,0,0,1020,1021,7,4,0,0,1021, - 185,1,0,0,0,1022,1023,5,126,0,0,1023,1024,5,2,0,0,1024,1025,5,160, - 0,0,1025,187,1,0,0,0,1026,1027,5,127,0,0,1027,1028,5,2,0,0,1028, - 1029,7,5,0,0,1029,189,1,0,0,0,1030,1031,5,130,0,0,1031,1032,5,2, - 0,0,1032,1041,5,3,0,0,1033,1038,3,192,96,0,1034,1035,5,1,0,0,1035, - 1037,3,192,96,0,1036,1034,1,0,0,0,1037,1040,1,0,0,0,1038,1036,1, - 0,0,0,1038,1039,1,0,0,0,1039,1042,1,0,0,0,1040,1038,1,0,0,0,1041, - 1033,1,0,0,0,1041,1042,1,0,0,0,1042,1043,1,0,0,0,1043,1044,5,4,0, - 0,1044,191,1,0,0,0,1045,1046,5,5,0,0,1046,1051,3,194,97,0,1047,1048, - 5,1,0,0,1048,1050,3,194,97,0,1049,1047,1,0,0,0,1050,1053,1,0,0,0, - 1051,1049,1,0,0,0,1051,1052,1,0,0,0,1052,1054,1,0,0,0,1053,1051, - 1,0,0,0,1054,1055,5,6,0,0,1055,193,1,0,0,0,1056,1063,3,178,89,0, - 1057,1063,3,32,16,0,1058,1063,3,24,12,0,1059,1063,3,74,37,0,1060, - 1063,3,92,46,0,1061,1063,3,8,4,0,1062,1056,1,0,0,0,1062,1057,1,0, - 0,0,1062,1058,1,0,0,0,1062,1059,1,0,0,0,1062,1060,1,0,0,0,1062,1061, - 1,0,0,0,1063,195,1,0,0,0,1064,1065,7,6,0,0,1065,197,1,0,0,0,1066, - 1067,7,7,0,0,1067,199,1,0,0,0,1068,1069,7,8,0,0,1069,201,1,0,0,0, - 1070,1073,3,200,100,0,1071,1073,3,228,114,0,1072,1070,1,0,0,0,1072, - 1071,1,0,0,0,1073,203,1,0,0,0,1074,1075,5,5,0,0,1075,1080,3,206, - 103,0,1076,1077,5,1,0,0,1077,1079,3,206,103,0,1078,1076,1,0,0,0, - 1079,1082,1,0,0,0,1080,1078,1,0,0,0,1080,1081,1,0,0,0,1081,1083, - 1,0,0,0,1082,1080,1,0,0,0,1083,1084,5,6,0,0,1084,1088,1,0,0,0,1085, - 1086,5,5,0,0,1086,1088,5,6,0,0,1087,1074,1,0,0,0,1087,1085,1,0,0, - 0,1088,205,1,0,0,0,1089,1090,3,228,114,0,1090,1091,5,2,0,0,1091, - 1092,3,210,105,0,1092,207,1,0,0,0,1093,1094,5,3,0,0,1094,1099,3, - 210,105,0,1095,1096,5,1,0,0,1096,1098,3,210,105,0,1097,1095,1,0, - 0,0,1098,1101,1,0,0,0,1099,1097,1,0,0,0,1099,1100,1,0,0,0,1100,1102, - 1,0,0,0,1101,1099,1,0,0,0,1102,1103,5,4,0,0,1103,1107,1,0,0,0,1104, - 1105,5,3,0,0,1105,1107,5,4,0,0,1106,1093,1,0,0,0,1106,1104,1,0,0, - 0,1107,209,1,0,0,0,1108,1118,5,161,0,0,1109,1118,5,160,0,0,1110, - 1118,5,7,0,0,1111,1118,5,8,0,0,1112,1118,5,9,0,0,1113,1118,3,206, - 103,0,1114,1118,3,208,104,0,1115,1118,3,204,102,0,1116,1118,3,228, - 114,0,1117,1108,1,0,0,0,1117,1109,1,0,0,0,1117,1110,1,0,0,0,1117, - 1111,1,0,0,0,1117,1112,1,0,0,0,1117,1113,1,0,0,0,1117,1114,1,0,0, - 0,1117,1115,1,0,0,0,1117,1116,1,0,0,0,1118,211,1,0,0,0,1119,1123, - 3,218,109,0,1120,1123,3,220,110,0,1121,1123,3,222,111,0,1122,1119, - 1,0,0,0,1122,1120,1,0,0,0,1122,1121,1,0,0,0,1123,213,1,0,0,0,1124, - 1127,3,212,106,0,1125,1127,3,224,112,0,1126,1124,1,0,0,0,1126,1125, - 1,0,0,0,1127,215,1,0,0,0,1128,1131,3,214,107,0,1129,1131,3,226,113, - 0,1130,1128,1,0,0,0,1130,1129,1,0,0,0,1131,217,1,0,0,0,1132,1133, - 5,155,0,0,1133,219,1,0,0,0,1134,1135,5,154,0,0,1135,221,1,0,0,0, - 1136,1137,5,156,0,0,1137,223,1,0,0,0,1138,1139,5,157,0,0,1139,225, - 1,0,0,0,1140,1141,5,158,0,0,1141,227,1,0,0,0,1142,1150,5,159,0,0, - 1143,1150,5,153,0,0,1144,1150,3,230,115,0,1145,1150,3,196,98,0,1146, - 1150,3,198,99,0,1147,1150,3,200,100,0,1148,1150,3,216,108,0,1149, - 1142,1,0,0,0,1149,1143,1,0,0,0,1149,1144,1,0,0,0,1149,1145,1,0,0, - 0,1149,1146,1,0,0,0,1149,1147,1,0,0,0,1149,1148,1,0,0,0,1150,229, - 1,0,0,0,1151,1152,7,9,0,0,1152,231,1,0,0,0,89,241,252,308,318,333, - 354,364,370,384,389,395,400,411,417,422,430,445,461,466,477,488, - 496,503,512,520,527,532,539,553,558,570,575,584,589,599,604,612, - 620,634,639,648,658,663,671,687,698,708,713,721,727,738,743,763, - 773,786,795,805,812,834,843,857,866,876,885,903,917,928,939,953, - 960,970,973,983,995,1005,1038,1041,1051,1062,1072,1080,1087,1099, - 1106,1117,1122,1126,1130,1149 + 49,1,0,137,152,5,0,10,28,71,117,119,119,121,131,134,136,1225,0,232, + 1,0,0,0,2,235,1,0,0,0,4,252,1,0,0,0,6,254,1,0,0,0,8,258,1,0,0,0, + 10,262,1,0,0,0,12,266,1,0,0,0,14,308,1,0,0,0,16,310,1,0,0,0,18,323, + 1,0,0,0,20,327,1,0,0,0,22,338,1,0,0,0,24,342,1,0,0,0,26,346,1,0, + 0,0,28,350,1,0,0,0,30,356,1,0,0,0,32,360,1,0,0,0,34,366,1,0,0,0, + 36,372,1,0,0,0,38,376,1,0,0,0,40,389,1,0,0,0,42,400,1,0,0,0,44,411, + 1,0,0,0,46,422,1,0,0,0,48,430,1,0,0,0,50,432,1,0,0,0,52,445,1,0, + 0,0,54,447,1,0,0,0,56,451,1,0,0,0,58,466,1,0,0,0,60,477,1,0,0,0, + 62,488,1,0,0,0,64,503,1,0,0,0,66,512,1,0,0,0,68,527,1,0,0,0,70,532, + 1,0,0,0,72,539,1,0,0,0,74,541,1,0,0,0,76,558,1,0,0,0,78,560,1,0, + 0,0,80,575,1,0,0,0,82,584,1,0,0,0,84,589,1,0,0,0,86,604,1,0,0,0, + 88,612,1,0,0,0,90,620,1,0,0,0,92,622,1,0,0,0,94,639,1,0,0,0,96,641, + 1,0,0,0,98,648,1,0,0,0,100,663,1,0,0,0,102,671,1,0,0,0,104,673,1, + 0,0,0,106,677,1,0,0,0,108,679,1,0,0,0,110,713,1,0,0,0,112,721,1, + 0,0,0,114,727,1,0,0,0,116,729,1,0,0,0,118,745,1,0,0,0,120,763,1, + 0,0,0,122,765,1,0,0,0,124,778,1,0,0,0,126,795,1,0,0,0,128,797,1, + 0,0,0,130,812,1,0,0,0,132,814,1,0,0,0,134,818,1,0,0,0,136,820,1, + 0,0,0,138,824,1,0,0,0,140,826,1,0,0,0,142,843,1,0,0,0,144,845,1, + 0,0,0,146,849,1,0,0,0,148,866,1,0,0,0,150,868,1,0,0,0,152,885,1, + 0,0,0,154,887,1,0,0,0,156,891,1,0,0,0,158,895,1,0,0,0,160,917,1, + 0,0,0,162,928,1,0,0,0,164,939,1,0,0,0,166,941,1,0,0,0,168,945,1, + 0,0,0,170,960,1,0,0,0,172,962,1,0,0,0,174,977,1,0,0,0,176,995,1, + 0,0,0,178,997,1,0,0,0,180,1010,1,0,0,0,182,1014,1,0,0,0,184,1018, + 1,0,0,0,186,1022,1,0,0,0,188,1026,1,0,0,0,190,1030,1,0,0,0,192,1045, + 1,0,0,0,194,1062,1,0,0,0,196,1064,1,0,0,0,198,1066,1,0,0,0,200,1068, + 1,0,0,0,202,1072,1,0,0,0,204,1087,1,0,0,0,206,1089,1,0,0,0,208,1106, + 1,0,0,0,210,1117,1,0,0,0,212,1122,1,0,0,0,214,1126,1,0,0,0,216,1130, + 1,0,0,0,218,1132,1,0,0,0,220,1134,1,0,0,0,222,1136,1,0,0,0,224,1138, + 1,0,0,0,226,1140,1,0,0,0,228,1149,1,0,0,0,230,1151,1,0,0,0,232,233, + 3,2,1,0,233,234,5,0,0,1,234,1,1,0,0,0,235,236,5,5,0,0,236,241,3, + 4,2,0,237,238,5,1,0,0,238,240,3,4,2,0,239,237,1,0,0,0,240,243,1, + 0,0,0,241,239,1,0,0,0,241,242,1,0,0,0,242,244,1,0,0,0,243,241,1, + 0,0,0,244,245,5,6,0,0,245,3,1,0,0,0,246,253,3,8,4,0,247,253,3,10, + 5,0,248,253,3,12,6,0,249,253,3,6,3,0,250,253,3,16,8,0,251,253,3, + 60,30,0,252,246,1,0,0,0,252,247,1,0,0,0,252,248,1,0,0,0,252,249, + 1,0,0,0,252,250,1,0,0,0,252,251,1,0,0,0,253,5,1,0,0,0,254,255,5, + 12,0,0,255,256,5,2,0,0,256,257,3,228,114,0,257,7,1,0,0,0,258,259, + 5,10,0,0,259,260,5,2,0,0,260,261,3,228,114,0,261,9,1,0,0,0,262,263, + 5,14,0,0,263,264,5,2,0,0,264,265,3,228,114,0,265,11,1,0,0,0,266, + 267,5,131,0,0,267,268,5,2,0,0,268,269,7,0,0,0,269,13,1,0,0,0,270, + 309,3,8,4,0,271,309,3,12,6,0,272,309,3,22,11,0,273,309,3,28,14,0, + 274,309,3,26,13,0,275,309,3,24,12,0,276,309,3,30,15,0,277,309,3, + 32,16,0,278,309,3,34,17,0,279,309,3,36,18,0,280,309,3,38,19,0,281, + 309,3,108,54,0,282,309,3,40,20,0,283,309,3,42,21,0,284,309,3,44, + 22,0,285,309,3,46,23,0,286,309,3,48,24,0,287,309,3,50,25,0,288,309, + 3,124,62,0,289,309,3,140,70,0,290,309,3,144,72,0,291,309,3,146,73, + 0,292,309,3,52,26,0,293,309,3,60,30,0,294,309,3,62,31,0,295,309, + 3,122,61,0,296,309,3,54,27,0,297,309,3,172,86,0,298,309,3,190,95, + 0,299,309,3,104,52,0,300,309,3,162,81,0,301,309,3,164,82,0,302,309, + 3,166,83,0,303,309,3,168,84,0,304,309,3,74,37,0,305,309,3,90,45, + 0,306,309,3,92,46,0,307,309,3,56,28,0,308,270,1,0,0,0,308,271,1, + 0,0,0,308,272,1,0,0,0,308,273,1,0,0,0,308,274,1,0,0,0,308,275,1, + 0,0,0,308,276,1,0,0,0,308,277,1,0,0,0,308,278,1,0,0,0,308,279,1, + 0,0,0,308,280,1,0,0,0,308,281,1,0,0,0,308,282,1,0,0,0,308,283,1, + 0,0,0,308,284,1,0,0,0,308,285,1,0,0,0,308,286,1,0,0,0,308,287,1, + 0,0,0,308,288,1,0,0,0,308,289,1,0,0,0,308,290,1,0,0,0,308,291,1, + 0,0,0,308,292,1,0,0,0,308,293,1,0,0,0,308,294,1,0,0,0,308,295,1, + 0,0,0,308,296,1,0,0,0,308,297,1,0,0,0,308,298,1,0,0,0,308,299,1, + 0,0,0,308,300,1,0,0,0,308,301,1,0,0,0,308,302,1,0,0,0,308,303,1, + 0,0,0,308,304,1,0,0,0,308,305,1,0,0,0,308,306,1,0,0,0,308,307,1, + 0,0,0,309,15,1,0,0,0,310,311,5,11,0,0,311,312,5,2,0,0,312,313,5, + 5,0,0,313,318,3,18,9,0,314,315,5,1,0,0,315,317,3,18,9,0,316,314, + 1,0,0,0,317,320,1,0,0,0,318,316,1,0,0,0,318,319,1,0,0,0,319,321, + 1,0,0,0,320,318,1,0,0,0,321,322,5,6,0,0,322,17,1,0,0,0,323,324,3, + 228,114,0,324,325,5,2,0,0,325,326,3,20,10,0,326,19,1,0,0,0,327,328, + 5,5,0,0,328,333,3,14,7,0,329,330,5,1,0,0,330,332,3,14,7,0,331,329, + 1,0,0,0,332,335,1,0,0,0,333,331,1,0,0,0,333,334,1,0,0,0,334,336, + 1,0,0,0,335,333,1,0,0,0,336,337,5,6,0,0,337,21,1,0,0,0,338,339,5, + 15,0,0,339,340,5,2,0,0,340,341,3,106,53,0,341,23,1,0,0,0,342,343, + 5,115,0,0,343,344,5,2,0,0,344,345,3,228,114,0,345,25,1,0,0,0,346, + 347,5,90,0,0,347,348,5,2,0,0,348,349,3,228,114,0,349,27,1,0,0,0, + 350,351,5,91,0,0,351,354,5,2,0,0,352,355,5,9,0,0,353,355,3,212,106, + 0,354,352,1,0,0,0,354,353,1,0,0,0,355,29,1,0,0,0,356,357,5,96,0, + 0,357,358,5,2,0,0,358,359,3,210,105,0,359,31,1,0,0,0,360,361,5,95, + 0,0,361,364,5,2,0,0,362,365,5,9,0,0,363,365,3,218,109,0,364,362, + 1,0,0,0,364,363,1,0,0,0,365,33,1,0,0,0,366,367,5,92,0,0,367,370, + 5,2,0,0,368,371,5,9,0,0,369,371,3,212,106,0,370,368,1,0,0,0,370, + 369,1,0,0,0,371,35,1,0,0,0,372,373,5,116,0,0,373,374,5,2,0,0,374, + 375,7,1,0,0,375,37,1,0,0,0,376,377,5,27,0,0,377,378,5,2,0,0,378, + 379,3,228,114,0,379,39,1,0,0,0,380,381,5,119,0,0,381,384,5,2,0,0, + 382,385,3,226,113,0,383,385,3,228,114,0,384,382,1,0,0,0,384,383, + 1,0,0,0,385,390,1,0,0,0,386,387,5,120,0,0,387,388,5,2,0,0,388,390, + 3,214,107,0,389,380,1,0,0,0,389,386,1,0,0,0,390,41,1,0,0,0,391,392, + 5,117,0,0,392,395,5,2,0,0,393,396,3,226,113,0,394,396,3,228,114, + 0,395,393,1,0,0,0,395,394,1,0,0,0,396,401,1,0,0,0,397,398,5,118, + 0,0,398,399,5,2,0,0,399,401,3,214,107,0,400,391,1,0,0,0,400,397, + 1,0,0,0,401,43,1,0,0,0,402,403,5,72,0,0,403,404,5,2,0,0,404,412, + 3,226,113,0,405,406,5,72,0,0,406,407,5,2,0,0,407,412,5,160,0,0,408, + 409,5,71,0,0,409,410,5,2,0,0,410,412,3,212,106,0,411,402,1,0,0,0, + 411,405,1,0,0,0,411,408,1,0,0,0,412,45,1,0,0,0,413,414,5,74,0,0, + 414,417,5,2,0,0,415,418,3,226,113,0,416,418,3,228,114,0,417,415, + 1,0,0,0,417,416,1,0,0,0,418,423,1,0,0,0,419,420,5,73,0,0,420,421, + 5,2,0,0,421,423,3,212,106,0,422,413,1,0,0,0,422,419,1,0,0,0,423, + 47,1,0,0,0,424,425,5,93,0,0,425,426,5,2,0,0,426,431,3,100,50,0,427, + 428,5,93,0,0,428,429,5,2,0,0,429,431,3,226,113,0,430,424,1,0,0,0, + 430,427,1,0,0,0,431,49,1,0,0,0,432,433,5,94,0,0,433,434,5,2,0,0, + 434,435,3,212,106,0,435,51,1,0,0,0,436,437,5,89,0,0,437,438,5,2, + 0,0,438,446,3,226,113,0,439,440,5,89,0,0,440,441,5,2,0,0,441,446, + 5,160,0,0,442,443,5,88,0,0,443,444,5,2,0,0,444,446,3,212,106,0,445, + 436,1,0,0,0,445,439,1,0,0,0,445,442,1,0,0,0,446,53,1,0,0,0,447,448, + 5,97,0,0,448,449,5,2,0,0,449,450,3,64,32,0,450,55,1,0,0,0,451,452, + 5,98,0,0,452,453,5,2,0,0,453,454,5,5,0,0,454,455,3,58,29,0,455,456, + 5,6,0,0,456,57,1,0,0,0,457,458,5,99,0,0,458,461,5,2,0,0,459,462, + 3,226,113,0,460,462,3,228,114,0,461,459,1,0,0,0,461,460,1,0,0,0, + 462,467,1,0,0,0,463,464,5,100,0,0,464,465,5,2,0,0,465,467,3,214, + 107,0,466,457,1,0,0,0,466,463,1,0,0,0,467,59,1,0,0,0,468,469,5,75, + 0,0,469,470,5,2,0,0,470,478,3,226,113,0,471,472,5,75,0,0,472,473, + 5,2,0,0,473,478,5,160,0,0,474,475,5,76,0,0,475,476,5,2,0,0,476,478, + 3,212,106,0,477,468,1,0,0,0,477,471,1,0,0,0,477,474,1,0,0,0,478, + 61,1,0,0,0,479,480,5,77,0,0,480,481,5,2,0,0,481,489,3,226,113,0, + 482,483,5,77,0,0,483,484,5,2,0,0,484,489,5,160,0,0,485,486,5,78, + 0,0,486,487,5,2,0,0,487,489,3,212,106,0,488,479,1,0,0,0,488,482, + 1,0,0,0,488,485,1,0,0,0,489,63,1,0,0,0,490,491,5,5,0,0,491,496,3, + 66,33,0,492,493,5,1,0,0,493,495,3,66,33,0,494,492,1,0,0,0,495,498, + 1,0,0,0,496,494,1,0,0,0,496,497,1,0,0,0,497,499,1,0,0,0,498,496, + 1,0,0,0,499,500,5,6,0,0,500,504,1,0,0,0,501,502,5,5,0,0,502,504, + 5,6,0,0,503,490,1,0,0,0,503,501,1,0,0,0,504,65,1,0,0,0,505,506,5, + 153,0,0,506,507,5,2,0,0,507,513,3,214,107,0,508,509,3,228,114,0, + 509,510,5,2,0,0,510,511,3,70,35,0,511,513,1,0,0,0,512,505,1,0,0, + 0,512,508,1,0,0,0,513,67,1,0,0,0,514,515,5,3,0,0,515,520,3,70,35, + 0,516,517,5,1,0,0,517,519,3,70,35,0,518,516,1,0,0,0,519,522,1,0, + 0,0,520,518,1,0,0,0,520,521,1,0,0,0,521,523,1,0,0,0,522,520,1,0, + 0,0,523,524,5,4,0,0,524,528,1,0,0,0,525,526,5,3,0,0,526,528,5,4, + 0,0,527,514,1,0,0,0,527,525,1,0,0,0,528,69,1,0,0,0,529,533,3,68, + 34,0,530,533,3,64,32,0,531,533,3,72,36,0,532,529,1,0,0,0,532,530, + 1,0,0,0,532,531,1,0,0,0,533,71,1,0,0,0,534,540,5,161,0,0,535,540, + 5,160,0,0,536,540,7,1,0,0,537,540,5,9,0,0,538,540,3,228,114,0,539, + 534,1,0,0,0,539,535,1,0,0,0,539,536,1,0,0,0,539,537,1,0,0,0,539, + 538,1,0,0,0,540,73,1,0,0,0,541,542,5,134,0,0,542,543,5,2,0,0,543, + 544,3,76,38,0,544,75,1,0,0,0,545,546,5,5,0,0,546,559,5,6,0,0,547, + 548,5,5,0,0,548,553,3,78,39,0,549,550,5,1,0,0,550,552,3,78,39,0, + 551,549,1,0,0,0,552,555,1,0,0,0,553,551,1,0,0,0,553,554,1,0,0,0, + 554,556,1,0,0,0,555,553,1,0,0,0,556,557,5,6,0,0,557,559,1,0,0,0, + 558,545,1,0,0,0,558,547,1,0,0,0,559,77,1,0,0,0,560,561,3,82,41,0, + 561,79,1,0,0,0,562,563,5,5,0,0,563,576,5,6,0,0,564,565,5,5,0,0,565, + 570,3,82,41,0,566,567,5,1,0,0,567,569,3,82,41,0,568,566,1,0,0,0, + 569,572,1,0,0,0,570,568,1,0,0,0,570,571,1,0,0,0,571,573,1,0,0,0, + 572,570,1,0,0,0,573,574,5,6,0,0,574,576,1,0,0,0,575,562,1,0,0,0, + 575,564,1,0,0,0,576,81,1,0,0,0,577,578,5,153,0,0,578,579,5,2,0,0, + 579,585,3,214,107,0,580,581,3,228,114,0,581,582,5,2,0,0,582,583, + 3,84,42,0,583,585,1,0,0,0,584,577,1,0,0,0,584,580,1,0,0,0,585,83, + 1,0,0,0,586,590,3,80,40,0,587,590,3,86,43,0,588,590,3,88,44,0,589, + 586,1,0,0,0,589,587,1,0,0,0,589,588,1,0,0,0,590,85,1,0,0,0,591,592, + 5,3,0,0,592,605,5,4,0,0,593,594,5,3,0,0,594,599,3,84,42,0,595,596, + 5,1,0,0,596,598,3,84,42,0,597,595,1,0,0,0,598,601,1,0,0,0,599,597, + 1,0,0,0,599,600,1,0,0,0,600,602,1,0,0,0,601,599,1,0,0,0,602,603, + 5,4,0,0,603,605,1,0,0,0,604,591,1,0,0,0,604,593,1,0,0,0,605,87,1, + 0,0,0,606,613,5,161,0,0,607,613,5,160,0,0,608,613,7,1,0,0,609,613, + 5,9,0,0,610,613,3,226,113,0,611,613,3,228,114,0,612,606,1,0,0,0, + 612,607,1,0,0,0,612,608,1,0,0,0,612,609,1,0,0,0,612,610,1,0,0,0, + 612,611,1,0,0,0,613,89,1,0,0,0,614,615,5,136,0,0,615,616,5,2,0,0, + 616,621,3,94,47,0,617,618,5,136,0,0,618,619,5,2,0,0,619,621,3,226, + 113,0,620,614,1,0,0,0,620,617,1,0,0,0,621,91,1,0,0,0,622,623,5,135, + 0,0,623,624,5,2,0,0,624,625,3,98,49,0,625,93,1,0,0,0,626,627,5,5, + 0,0,627,640,5,6,0,0,628,629,5,5,0,0,629,634,3,96,48,0,630,631,5, + 1,0,0,631,633,3,96,48,0,632,630,1,0,0,0,633,636,1,0,0,0,634,632, + 1,0,0,0,634,635,1,0,0,0,635,637,1,0,0,0,636,634,1,0,0,0,637,638, + 5,6,0,0,638,640,1,0,0,0,639,626,1,0,0,0,639,628,1,0,0,0,640,95,1, + 0,0,0,641,642,3,228,114,0,642,643,5,2,0,0,643,644,3,98,49,0,644, + 97,1,0,0,0,645,649,3,94,47,0,646,649,3,100,50,0,647,649,3,102,51, + 0,648,645,1,0,0,0,648,646,1,0,0,0,648,647,1,0,0,0,649,99,1,0,0,0, + 650,651,5,3,0,0,651,664,5,4,0,0,652,653,5,3,0,0,653,658,3,98,49, + 0,654,655,5,1,0,0,655,657,3,98,49,0,656,654,1,0,0,0,657,660,1,0, + 0,0,658,656,1,0,0,0,658,659,1,0,0,0,659,661,1,0,0,0,660,658,1,0, + 0,0,661,662,5,4,0,0,662,664,1,0,0,0,663,650,1,0,0,0,663,652,1,0, + 0,0,664,101,1,0,0,0,665,672,5,161,0,0,666,672,5,160,0,0,667,672, + 7,1,0,0,668,672,5,9,0,0,669,672,3,226,113,0,670,672,3,228,114,0, + 671,665,1,0,0,0,671,666,1,0,0,0,671,667,1,0,0,0,671,668,1,0,0,0, + 671,669,1,0,0,0,671,670,1,0,0,0,672,103,1,0,0,0,673,674,5,101,0, + 0,674,675,5,2,0,0,675,676,3,64,32,0,676,105,1,0,0,0,677,678,7,2, + 0,0,678,107,1,0,0,0,679,680,5,24,0,0,680,681,5,2,0,0,681,682,5,3, + 0,0,682,687,3,110,55,0,683,684,5,1,0,0,684,686,3,110,55,0,685,683, + 1,0,0,0,686,689,1,0,0,0,687,685,1,0,0,0,687,688,1,0,0,0,688,690, + 1,0,0,0,689,687,1,0,0,0,690,691,5,4,0,0,691,109,1,0,0,0,692,693, + 5,5,0,0,693,696,3,112,56,0,694,695,5,1,0,0,695,697,3,112,56,0,696, + 694,1,0,0,0,697,698,1,0,0,0,698,696,1,0,0,0,698,699,1,0,0,0,699, + 700,1,0,0,0,700,701,5,6,0,0,701,714,1,0,0,0,702,703,5,5,0,0,703, + 708,3,114,57,0,704,705,5,1,0,0,705,707,3,114,57,0,706,704,1,0,0, + 0,707,710,1,0,0,0,708,706,1,0,0,0,708,709,1,0,0,0,709,711,1,0,0, + 0,710,708,1,0,0,0,711,712,5,6,0,0,712,714,1,0,0,0,713,692,1,0,0, + 0,713,702,1,0,0,0,714,111,1,0,0,0,715,722,3,118,59,0,716,722,3,120, + 60,0,717,722,3,24,12,0,718,722,3,74,37,0,719,722,3,92,46,0,720,722, + 3,8,4,0,721,715,1,0,0,0,721,716,1,0,0,0,721,717,1,0,0,0,721,718, + 1,0,0,0,721,719,1,0,0,0,721,720,1,0,0,0,722,113,1,0,0,0,723,728, + 3,116,58,0,724,728,3,24,12,0,725,728,3,74,37,0,726,728,3,8,4,0,727, + 723,1,0,0,0,727,724,1,0,0,0,727,725,1,0,0,0,727,726,1,0,0,0,728, + 115,1,0,0,0,729,730,3,198,99,0,730,743,5,2,0,0,731,744,3,110,55, + 0,732,733,5,3,0,0,733,738,3,110,55,0,734,735,5,1,0,0,735,737,3,110, + 55,0,736,734,1,0,0,0,737,740,1,0,0,0,738,736,1,0,0,0,738,739,1,0, + 0,0,739,741,1,0,0,0,740,738,1,0,0,0,741,742,5,4,0,0,742,744,1,0, + 0,0,743,731,1,0,0,0,743,732,1,0,0,0,744,117,1,0,0,0,745,746,5,26, + 0,0,746,747,5,2,0,0,747,748,3,212,106,0,748,119,1,0,0,0,749,750, + 5,25,0,0,750,751,5,2,0,0,751,764,7,1,0,0,752,753,5,25,0,0,753,754, + 5,2,0,0,754,764,3,226,113,0,755,756,3,196,98,0,756,757,5,2,0,0,757, + 758,3,222,111,0,758,764,1,0,0,0,759,760,3,196,98,0,760,761,5,2,0, + 0,761,762,3,210,105,0,762,764,1,0,0,0,763,749,1,0,0,0,763,752,1, + 0,0,0,763,755,1,0,0,0,763,759,1,0,0,0,764,121,1,0,0,0,765,766,5, + 28,0,0,766,767,5,2,0,0,767,768,5,3,0,0,768,773,3,2,1,0,769,770,5, + 1,0,0,770,772,3,2,1,0,771,769,1,0,0,0,772,775,1,0,0,0,773,771,1, + 0,0,0,773,774,1,0,0,0,774,776,1,0,0,0,775,773,1,0,0,0,776,777,5, + 4,0,0,777,123,1,0,0,0,778,779,5,85,0,0,779,780,5,2,0,0,780,781,5, + 5,0,0,781,786,3,126,63,0,782,783,5,1,0,0,783,785,3,126,63,0,784, + 782,1,0,0,0,785,788,1,0,0,0,786,784,1,0,0,0,786,787,1,0,0,0,787, + 789,1,0,0,0,788,786,1,0,0,0,789,790,5,6,0,0,790,125,1,0,0,0,791, + 796,3,128,64,0,792,796,3,6,3,0,793,796,3,16,8,0,794,796,3,8,4,0, + 795,791,1,0,0,0,795,792,1,0,0,0,795,793,1,0,0,0,795,794,1,0,0,0, + 796,127,1,0,0,0,797,798,5,79,0,0,798,799,5,2,0,0,799,800,5,5,0,0, + 800,805,3,130,65,0,801,802,5,1,0,0,802,804,3,130,65,0,803,801,1, + 0,0,0,804,807,1,0,0,0,805,803,1,0,0,0,805,806,1,0,0,0,806,808,1, + 0,0,0,807,805,1,0,0,0,808,809,5,6,0,0,809,129,1,0,0,0,810,813,3, + 132,66,0,811,813,3,136,68,0,812,810,1,0,0,0,812,811,1,0,0,0,813, + 131,1,0,0,0,814,815,5,80,0,0,815,816,5,2,0,0,816,817,3,134,67,0, + 817,133,1,0,0,0,818,819,7,3,0,0,819,135,1,0,0,0,820,821,5,83,0,0, + 821,822,5,2,0,0,822,823,3,138,69,0,823,137,1,0,0,0,824,825,5,84, + 0,0,825,139,1,0,0,0,826,827,5,86,0,0,827,828,5,2,0,0,828,829,5,5, + 0,0,829,834,3,142,71,0,830,831,5,1,0,0,831,833,3,142,71,0,832,830, + 1,0,0,0,833,836,1,0,0,0,834,832,1,0,0,0,834,835,1,0,0,0,835,837, + 1,0,0,0,836,834,1,0,0,0,837,838,5,6,0,0,838,141,1,0,0,0,839,844, + 3,6,3,0,840,844,3,16,8,0,841,844,3,8,4,0,842,844,3,128,64,0,843, + 839,1,0,0,0,843,840,1,0,0,0,843,841,1,0,0,0,843,842,1,0,0,0,844, + 143,1,0,0,0,845,846,5,87,0,0,846,847,5,2,0,0,847,848,3,64,32,0,848, + 145,1,0,0,0,849,850,5,102,0,0,850,851,5,2,0,0,851,852,5,5,0,0,852, + 857,3,148,74,0,853,854,5,1,0,0,854,856,3,148,74,0,855,853,1,0,0, + 0,856,859,1,0,0,0,857,855,1,0,0,0,857,858,1,0,0,0,858,860,1,0,0, + 0,859,857,1,0,0,0,860,861,5,6,0,0,861,147,1,0,0,0,862,867,3,26,13, + 0,863,867,3,150,75,0,864,867,3,54,27,0,865,867,3,90,45,0,866,862, + 1,0,0,0,866,863,1,0,0,0,866,864,1,0,0,0,866,865,1,0,0,0,867,149, + 1,0,0,0,868,869,5,103,0,0,869,870,5,2,0,0,870,871,5,5,0,0,871,876, + 3,152,76,0,872,873,5,1,0,0,873,875,3,152,76,0,874,872,1,0,0,0,875, + 878,1,0,0,0,876,874,1,0,0,0,876,877,1,0,0,0,877,879,1,0,0,0,878, + 876,1,0,0,0,879,880,5,6,0,0,880,151,1,0,0,0,881,886,3,154,77,0,882, + 886,3,156,78,0,883,886,3,158,79,0,884,886,3,160,80,0,885,881,1,0, + 0,0,885,882,1,0,0,0,885,883,1,0,0,0,885,884,1,0,0,0,886,153,1,0, + 0,0,887,888,5,104,0,0,888,889,5,2,0,0,889,890,3,228,114,0,890,155, + 1,0,0,0,891,892,5,105,0,0,892,893,5,2,0,0,893,894,3,228,114,0,894, + 157,1,0,0,0,895,896,5,106,0,0,896,897,5,2,0,0,897,898,5,3,0,0,898, + 903,3,228,114,0,899,900,5,1,0,0,900,902,3,228,114,0,901,899,1,0, + 0,0,902,905,1,0,0,0,903,901,1,0,0,0,903,904,1,0,0,0,904,906,1,0, + 0,0,905,903,1,0,0,0,906,907,5,4,0,0,907,159,1,0,0,0,908,909,5,107, + 0,0,909,910,5,2,0,0,910,918,3,226,113,0,911,912,5,107,0,0,912,913, + 5,2,0,0,913,918,5,160,0,0,914,915,5,108,0,0,915,916,5,2,0,0,916, + 918,3,212,106,0,917,908,1,0,0,0,917,911,1,0,0,0,917,914,1,0,0,0, + 918,161,1,0,0,0,919,920,5,109,0,0,920,921,5,2,0,0,921,929,3,226, + 113,0,922,923,5,109,0,0,923,924,5,2,0,0,924,929,5,160,0,0,925,926, + 5,110,0,0,926,927,5,2,0,0,927,929,3,212,106,0,928,919,1,0,0,0,928, + 922,1,0,0,0,928,925,1,0,0,0,929,163,1,0,0,0,930,931,5,111,0,0,931, + 932,5,2,0,0,932,940,3,226,113,0,933,934,5,111,0,0,934,935,5,2,0, + 0,935,940,5,161,0,0,936,937,5,112,0,0,937,938,5,2,0,0,938,940,3, + 212,106,0,939,930,1,0,0,0,939,933,1,0,0,0,939,936,1,0,0,0,940,165, + 1,0,0,0,941,942,5,113,0,0,942,943,5,2,0,0,943,944,3,228,114,0,944, + 167,1,0,0,0,945,946,5,114,0,0,946,947,5,2,0,0,947,948,5,5,0,0,948, + 953,3,170,85,0,949,950,5,1,0,0,950,952,3,170,85,0,951,949,1,0,0, + 0,952,955,1,0,0,0,953,951,1,0,0,0,953,954,1,0,0,0,954,956,1,0,0, + 0,955,953,1,0,0,0,956,957,5,6,0,0,957,169,1,0,0,0,958,961,3,26,13, + 0,959,961,3,54,27,0,960,958,1,0,0,0,960,959,1,0,0,0,961,171,1,0, + 0,0,962,963,5,121,0,0,963,964,5,2,0,0,964,973,5,3,0,0,965,970,3, + 174,87,0,966,967,5,1,0,0,967,969,3,174,87,0,968,966,1,0,0,0,969, + 972,1,0,0,0,970,968,1,0,0,0,970,971,1,0,0,0,971,974,1,0,0,0,972, + 970,1,0,0,0,973,965,1,0,0,0,973,974,1,0,0,0,974,975,1,0,0,0,975, + 976,5,4,0,0,976,173,1,0,0,0,977,978,5,5,0,0,978,983,3,176,88,0,979, + 980,5,1,0,0,980,982,3,176,88,0,981,979,1,0,0,0,982,985,1,0,0,0,983, + 981,1,0,0,0,983,984,1,0,0,0,984,986,1,0,0,0,985,983,1,0,0,0,986, + 987,5,6,0,0,987,175,1,0,0,0,988,996,3,178,89,0,989,996,3,180,90, + 0,990,996,3,182,91,0,991,996,3,184,92,0,992,996,3,186,93,0,993,996, + 3,188,94,0,994,996,3,8,4,0,995,988,1,0,0,0,995,989,1,0,0,0,995,990, + 1,0,0,0,995,991,1,0,0,0,995,992,1,0,0,0,995,993,1,0,0,0,995,994, + 1,0,0,0,996,177,1,0,0,0,997,998,5,122,0,0,998,999,5,2,0,0,999,1000, + 5,3,0,0,1000,1005,3,202,101,0,1001,1002,5,1,0,0,1002,1004,3,202, + 101,0,1003,1001,1,0,0,0,1004,1007,1,0,0,0,1005,1003,1,0,0,0,1005, + 1006,1,0,0,0,1006,1008,1,0,0,0,1007,1005,1,0,0,0,1008,1009,5,4,0, + 0,1009,179,1,0,0,0,1010,1011,5,123,0,0,1011,1012,5,2,0,0,1012,1013, + 5,160,0,0,1013,181,1,0,0,0,1014,1015,5,124,0,0,1015,1016,5,2,0,0, + 1016,1017,5,160,0,0,1017,183,1,0,0,0,1018,1019,5,125,0,0,1019,1020, + 5,2,0,0,1020,1021,7,4,0,0,1021,185,1,0,0,0,1022,1023,5,126,0,0,1023, + 1024,5,2,0,0,1024,1025,5,160,0,0,1025,187,1,0,0,0,1026,1027,5,127, + 0,0,1027,1028,5,2,0,0,1028,1029,7,5,0,0,1029,189,1,0,0,0,1030,1031, + 5,130,0,0,1031,1032,5,2,0,0,1032,1041,5,3,0,0,1033,1038,3,192,96, + 0,1034,1035,5,1,0,0,1035,1037,3,192,96,0,1036,1034,1,0,0,0,1037, + 1040,1,0,0,0,1038,1036,1,0,0,0,1038,1039,1,0,0,0,1039,1042,1,0,0, + 0,1040,1038,1,0,0,0,1041,1033,1,0,0,0,1041,1042,1,0,0,0,1042,1043, + 1,0,0,0,1043,1044,5,4,0,0,1044,191,1,0,0,0,1045,1046,5,5,0,0,1046, + 1051,3,194,97,0,1047,1048,5,1,0,0,1048,1050,3,194,97,0,1049,1047, + 1,0,0,0,1050,1053,1,0,0,0,1051,1049,1,0,0,0,1051,1052,1,0,0,0,1052, + 1054,1,0,0,0,1053,1051,1,0,0,0,1054,1055,5,6,0,0,1055,193,1,0,0, + 0,1056,1063,3,178,89,0,1057,1063,3,32,16,0,1058,1063,3,24,12,0,1059, + 1063,3,74,37,0,1060,1063,3,92,46,0,1061,1063,3,8,4,0,1062,1056,1, + 0,0,0,1062,1057,1,0,0,0,1062,1058,1,0,0,0,1062,1059,1,0,0,0,1062, + 1060,1,0,0,0,1062,1061,1,0,0,0,1063,195,1,0,0,0,1064,1065,7,6,0, + 0,1065,197,1,0,0,0,1066,1067,7,7,0,0,1067,199,1,0,0,0,1068,1069, + 7,8,0,0,1069,201,1,0,0,0,1070,1073,3,200,100,0,1071,1073,3,228,114, + 0,1072,1070,1,0,0,0,1072,1071,1,0,0,0,1073,203,1,0,0,0,1074,1075, + 5,5,0,0,1075,1080,3,206,103,0,1076,1077,5,1,0,0,1077,1079,3,206, + 103,0,1078,1076,1,0,0,0,1079,1082,1,0,0,0,1080,1078,1,0,0,0,1080, + 1081,1,0,0,0,1081,1083,1,0,0,0,1082,1080,1,0,0,0,1083,1084,5,6,0, + 0,1084,1088,1,0,0,0,1085,1086,5,5,0,0,1086,1088,5,6,0,0,1087,1074, + 1,0,0,0,1087,1085,1,0,0,0,1088,205,1,0,0,0,1089,1090,3,228,114,0, + 1090,1091,5,2,0,0,1091,1092,3,210,105,0,1092,207,1,0,0,0,1093,1094, + 5,3,0,0,1094,1099,3,210,105,0,1095,1096,5,1,0,0,1096,1098,3,210, + 105,0,1097,1095,1,0,0,0,1098,1101,1,0,0,0,1099,1097,1,0,0,0,1099, + 1100,1,0,0,0,1100,1102,1,0,0,0,1101,1099,1,0,0,0,1102,1103,5,4,0, + 0,1103,1107,1,0,0,0,1104,1105,5,3,0,0,1105,1107,5,4,0,0,1106,1093, + 1,0,0,0,1106,1104,1,0,0,0,1107,209,1,0,0,0,1108,1118,5,161,0,0,1109, + 1118,5,160,0,0,1110,1118,5,7,0,0,1111,1118,5,8,0,0,1112,1118,5,9, + 0,0,1113,1118,3,206,103,0,1114,1118,3,208,104,0,1115,1118,3,204, + 102,0,1116,1118,3,228,114,0,1117,1108,1,0,0,0,1117,1109,1,0,0,0, + 1117,1110,1,0,0,0,1117,1111,1,0,0,0,1117,1112,1,0,0,0,1117,1113, + 1,0,0,0,1117,1114,1,0,0,0,1117,1115,1,0,0,0,1117,1116,1,0,0,0,1118, + 211,1,0,0,0,1119,1123,3,218,109,0,1120,1123,3,220,110,0,1121,1123, + 3,222,111,0,1122,1119,1,0,0,0,1122,1120,1,0,0,0,1122,1121,1,0,0, + 0,1123,213,1,0,0,0,1124,1127,3,212,106,0,1125,1127,3,224,112,0,1126, + 1124,1,0,0,0,1126,1125,1,0,0,0,1127,215,1,0,0,0,1128,1131,3,214, + 107,0,1129,1131,3,226,113,0,1130,1128,1,0,0,0,1130,1129,1,0,0,0, + 1131,217,1,0,0,0,1132,1133,5,155,0,0,1133,219,1,0,0,0,1134,1135, + 5,154,0,0,1135,221,1,0,0,0,1136,1137,5,156,0,0,1137,223,1,0,0,0, + 1138,1139,5,157,0,0,1139,225,1,0,0,0,1140,1141,5,158,0,0,1141,227, + 1,0,0,0,1142,1150,5,159,0,0,1143,1150,5,153,0,0,1144,1150,3,230, + 115,0,1145,1150,3,196,98,0,1146,1150,3,198,99,0,1147,1150,3,200, + 100,0,1148,1150,3,216,108,0,1149,1142,1,0,0,0,1149,1143,1,0,0,0, + 1149,1144,1,0,0,0,1149,1145,1,0,0,0,1149,1146,1,0,0,0,1149,1147, + 1,0,0,0,1149,1148,1,0,0,0,1150,229,1,0,0,0,1151,1152,7,9,0,0,1152, + 231,1,0,0,0,89,241,252,308,318,333,354,364,370,384,389,395,400,411, + 417,422,430,445,461,466,477,488,496,503,512,520,527,532,539,553, + 558,570,575,584,589,599,604,612,620,634,639,648,658,663,671,687, + 698,708,713,721,727,738,743,763,773,786,795,805,812,834,843,857, + 866,876,885,903,917,928,939,953,960,970,973,983,995,1005,1038,1041, + 1051,1062,1072,1080,1087,1099,1106,1117,1122,1126,1130,1149 ] class ASLParser ( Parser ): @@ -4363,7 +4362,7 @@ def payload_value_decl(self): self.state = 530 self.payload_tmpl_decl() pass - elif token in [7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161]: + elif token in [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161]: self.enterOuterAlt(localctx, 3) self.state = 531 self.payload_value_lit() @@ -4559,7 +4558,7 @@ def payload_value_lit(self): self.state = 537 self.match(ASLParser.NULL) pass - elif token in [10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159]: + elif token in [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159]: localctx = ASLParser.Payload_value_strContext(self, localctx) self.enterOuterAlt(localctx, 5) self.state = 538 @@ -5047,7 +5046,7 @@ def assign_template_value(self): self.state = 587 self.assign_template_value_array() pass - elif token in [7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161]: + elif token in [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161]: self.enterOuterAlt(localctx, 3) self.state = 588 self.assign_template_value_terminal() @@ -5776,7 +5775,7 @@ def jsonata_template_value(self): self.state = 646 self.jsonata_template_value_array() pass - elif token in [7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161]: + elif token in [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161]: self.enterOuterAlt(localctx, 3) self.state = 647 self.jsonata_template_value_terminal() @@ -11383,7 +11382,7 @@ def string_literal(self): self.state = 1143 self.match(ASLParser.STRINGDOLLAR) pass - elif token in [10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136]: + elif token in [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136]: self.enterOuterAlt(localctx, 3) self.state = 1144 self.soft_string_keyword() @@ -11667,6 +11666,9 @@ def NONE(self): def CATCH(self): return self.getToken(ASLParser.CATCH, 0) + def VERSION(self): + return self.getToken(ASLParser.VERSION, 0) + def getRuleIndex(self): return ASLParser.RULE_soft_string_keyword @@ -11696,7 +11698,7 @@ def soft_string_keyword(self): self.enterOuterAlt(localctx, 1) self.state = 1151 _la = self._input.LA(1) - if not(((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & -2305843009213169681) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 8358592947469418495) != 0)): + if not(((((_la - 10)) & ~0x3f) == 0 and ((1 << (_la - 10)) & -2305843009213169665) != 0) or ((((_la - 74)) & ~0x3f) == 0 and ((1 << (_la - 74)) & 8358592947469418495) != 0)): self._errHandler.recoverInline(self) else: self._errHandler.reportMatch(self) diff --git a/tests/aws/services/stepfunctions/templates/services/statemachines/sns_publish_message_attributes.json5 b/tests/aws/services/stepfunctions/templates/services/statemachines/sns_publish_message_attributes.json5 index a24d17ad5c7ef..9cc4c0040de3e 100644 --- a/tests/aws/services/stepfunctions/templates/services/statemachines/sns_publish_message_attributes.json5 +++ b/tests/aws/services/stepfunctions/templates/services/statemachines/sns_publish_message_attributes.json5 @@ -16,6 +16,11 @@ "my_attribute_no_2": { "DataType": "String", "StringValue.$": "$.MessageAttributeValue2" + }, + // Test the parsing of soft-keywords as payload templates key bindings. + "Version": { + "DataType": "String", + "StringValue": "string value literal" } } }, diff --git a/tests/aws/services/stepfunctions/v2/services/test_sns_task_service.snapshot.json b/tests/aws/services/stepfunctions/v2/services/test_sns_task_service.snapshot.json index d78563de83c82..37813b499bd00 100644 --- a/tests/aws/services/stepfunctions/v2/services/test_sns_task_service.snapshot.json +++ b/tests/aws/services/stepfunctions/v2/services/test_sns_task_service.snapshot.json @@ -1457,7 +1457,7 @@ } }, "tests/aws/services/stepfunctions/v2/services/test_sns_task_service.py::TestTaskServiceSns::test_publish_message_attributes[HelloWorld]": { - "recorded-date": "01-02-2024, 20:47:52", + "recorded-date": "27-01-2025, 07:07:04", "recorded-content": { "get_execution_history": { "events": [ @@ -1510,6 +1510,10 @@ "my_attribute_no_2": { "DataType": "String", "StringValue": "World!" + }, + "Version": { + "DataType": "String", + "StringValue": "string value literal" } }, "TopicArn": "arn::sns::111111111111:", @@ -1679,6 +1683,10 @@ "SigningCertURL": "/SimpleNotificationService-", "UnsubscribeURL": "/?Action=Unsubscribe&SubscriptionArn=arn::sns::111111111111::", "MessageAttributes": { + "Version": { + "Type": "String", + "Value": "string value literal" + }, "my_attribute_no_2": { "Type": "String", "Value": "World!" @@ -1693,7 +1701,7 @@ } }, "tests/aws/services/stepfunctions/v2/services/test_sns_task_service.py::TestTaskServiceSns::test_publish_message_attributes[\"HelloWorld\"]": { - "recorded-date": "01-02-2024, 20:48:07", + "recorded-date": "27-01-2025, 07:07:20", "recorded-content": { "get_execution_history": { "events": [ @@ -1746,6 +1754,10 @@ "my_attribute_no_2": { "DataType": "String", "StringValue": "World!" + }, + "Version": { + "DataType": "String", + "StringValue": "string value literal" } }, "TopicArn": "arn::sns::111111111111:", @@ -1915,6 +1927,10 @@ "SigningCertURL": "/SimpleNotificationService-", "UnsubscribeURL": "/?Action=Unsubscribe&SubscriptionArn=arn::sns::111111111111::", "MessageAttributes": { + "Version": { + "Type": "String", + "Value": "string value literal" + }, "my_attribute_no_2": { "Type": "String", "Value": "World!" @@ -1929,7 +1945,7 @@ } }, "tests/aws/services/stepfunctions/v2/services/test_sns_task_service.py::TestTaskServiceSns::test_publish_message_attributes[{}]": { - "recorded-date": "01-02-2024, 20:48:22", + "recorded-date": "27-01-2025, 07:07:36", "recorded-content": { "get_execution_history": { "events": [ @@ -1982,6 +1998,10 @@ "my_attribute_no_2": { "DataType": "String", "StringValue": "World!" + }, + "Version": { + "DataType": "String", + "StringValue": "string value literal" } }, "TopicArn": "arn::sns::111111111111:", @@ -2151,6 +2171,10 @@ "SigningCertURL": "/SimpleNotificationService-", "UnsubscribeURL": "/?Action=Unsubscribe&SubscriptionArn=arn::sns::111111111111::", "MessageAttributes": { + "Version": { + "Type": "String", + "Value": "string value literal" + }, "my_attribute_no_2": { "Type": "String", "Value": "World!" @@ -2165,7 +2189,7 @@ } }, "tests/aws/services/stepfunctions/v2/services/test_sns_task_service.py::TestTaskServiceSns::test_publish_message_attributes[message_value3]": { - "recorded-date": "01-02-2024, 20:48:37", + "recorded-date": "27-01-2025, 07:07:54", "recorded-content": { "get_execution_history": { "events": [ @@ -2218,6 +2242,10 @@ "my_attribute_no_2": { "DataType": "String", "StringValue": "World!" + }, + "Version": { + "DataType": "String", + "StringValue": "string value literal" } }, "TopicArn": "arn::sns::111111111111:", @@ -2387,6 +2415,10 @@ "SigningCertURL": "/SimpleNotificationService-", "UnsubscribeURL": "/?Action=Unsubscribe&SubscriptionArn=arn::sns::111111111111::", "MessageAttributes": { + "Version": { + "Type": "String", + "Value": "string value literal" + }, "my_attribute_no_2": { "Type": "String", "Value": "World!" diff --git a/tests/aws/services/stepfunctions/v2/services/test_sns_task_service.validation.json b/tests/aws/services/stepfunctions/v2/services/test_sns_task_service.validation.json index 01f708be30036..a53bb3fba34a7 100644 --- a/tests/aws/services/stepfunctions/v2/services/test_sns_task_service.validation.json +++ b/tests/aws/services/stepfunctions/v2/services/test_sns_task_service.validation.json @@ -30,15 +30,15 @@ "last_validated_date": "2023-09-03T11:34:55+00:00" }, "tests/aws/services/stepfunctions/v2/services/test_sns_task_service.py::TestTaskServiceSns::test_publish_message_attributes[\"HelloWorld\"]": { - "last_validated_date": "2024-02-01T20:48:07+00:00" + "last_validated_date": "2025-01-27T07:07:20+00:00" }, "tests/aws/services/stepfunctions/v2/services/test_sns_task_service.py::TestTaskServiceSns::test_publish_message_attributes[HelloWorld]": { - "last_validated_date": "2024-02-01T20:47:52+00:00" + "last_validated_date": "2025-01-27T07:07:04+00:00" }, "tests/aws/services/stepfunctions/v2/services/test_sns_task_service.py::TestTaskServiceSns::test_publish_message_attributes[message_value3]": { - "last_validated_date": "2024-02-01T20:48:37+00:00" + "last_validated_date": "2025-01-27T07:07:54+00:00" }, "tests/aws/services/stepfunctions/v2/services/test_sns_task_service.py::TestTaskServiceSns::test_publish_message_attributes[{}]": { - "last_validated_date": "2024-02-01T20:48:22+00:00" + "last_validated_date": "2025-01-27T07:07:36+00:00" } -} \ No newline at end of file +}